<?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>205605</bug_id>
          
          <creation_ts>2019-12-27 05:44:56 -0800</creation_ts>
          <short_desc>[GTK][WPE] Add API to set purpose and hints of active editable element to input methods</short_desc>
          <delta_ts>2020-01-07 02:48:54 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKitGTK</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>Gtk</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>34285</blocked>
    
    <blocked>205716</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>annulen</cc>
    
    <cc>benjamin</cc>
    
    <cc>berto</cc>
    
    <cc>bugs-noreply</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dbates</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>japhet</cc>
    
    <cc>jbedard</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mifenton</cc>
    
    <cc>rniwa</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1601597</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-12-27 05:44:56 -0800</bug_when>
    <thetext>Add input-purpose and input-hints properties to WebKitInputMethodContext</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1601599</commentid>
    <comment_count>1</comment_count>
      <attachid>386438</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-12-27 06:06:21 -0800</bug_when>
    <thetext>Created attachment 386438
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1601600</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-12-27 06:07:32 -0800</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1601604</commentid>
    <comment_count>3</comment_count>
      <attachid>386440</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-12-27 06:37:24 -0800</bug_when>
    <thetext>Created attachment 386440
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1601605</commentid>
    <comment_count>4</comment_count>
      <attachid>386441</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-12-27 06:39:48 -0800</bug_when>
    <thetext>Created attachment 386441
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1601607</commentid>
    <comment_count>5</comment_count>
      <attachid>386443</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-12-27 07:22:31 -0800</bug_when>
    <thetext>Created attachment 386443
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1603510</commentid>
    <comment_count>6</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-01-07 02:48:54 -0800</bug_when>
    <thetext>Committed r254121: &lt;https://trac.webkit.org/changeset/254121&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>386438</attachid>
            <date>2019-12-27 06:06:21 -0800</date>
            <delta_ts>2019-12-27 06:37:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-ime-content-type.diff</filename>
            <type>text/plain</type>
            <size>85597</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCBkOTEzZTE4MDM1My4uNjhl
YTdiMGQ4OGMgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNiBAQAorMjAxOS0xMi0yNyAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxp
YS5jb20+CisKKyAgICAgICAgW0dUS11bV1BFXSBBZGQgQVBJIHRvIHNldCBwdXJwb3NlIGFuZCBo
aW50cyBvZiBhY3RpdmUgZWRpdGFibGUgZWxlbWVudCB0byBpbnB1dCBtZXRob2RzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDU2MDUKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgRU5BQkxFX0FVVE9D
QVBJVEFMSVpFIGJ1aWxkIGZsYWcuIEl0J3MgcHJpdmF0ZSBhbmQgZGlzYWJsZWQgYnkgZGVmYXVs
dCwgZW5hYmxlZCBpbiBHVEsgYW5kIFdQRSBwb3J0cy4KKworICAgICAgICAqIFNvdXJjZS9jbWFr
ZS9PcHRpb25zR1RLLmNtYWtlOgorICAgICAgICAqIFNvdXJjZS9jbWFrZS9PcHRpb25zV1BFLmNt
YWtlOgorICAgICAgICAqIFNvdXJjZS9jbWFrZS9XZWJLaXRGZWF0dXJlcy5jbWFrZToKKwogMjAx
OS0xMi0xOCAgRGllZ28gUGlubyBHYXJjaWEgIDxkcGlub0BpZ2FsaWEuY29tPgogCiAgICAgICAg
IFtHVEtdW1dQRV0gUmVuZGVyaXphdGlvbiBvZiBDb25pYyBncmFkaWVudHMKZGlmZiAtLWdpdCBh
L1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nIGIvUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cK
aW5kZXggMmNlYWZlZDZkY2UuLmFlZTI5NjcwNmYzIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRl
c3RzL0NoYW5nZUxvZworKysgYi9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE0IEBACisyMDE5LTEyLTI3ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlh
LmNvbT4KKworICAgICAgICBbR1RLXVtXUEVdIEFkZCBBUEkgdG8gc2V0IHB1cnBvc2UgYW5kIGhp
bnRzIG9mIGFjdGl2ZSBlZGl0YWJsZSBlbGVtZW50IHRvIGlucHV0IG1ldGhvZHMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTYwNQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNwbGl0IEVOQUJMRV9JT1Nf
QVVUT0NPUlJFQ1RfQU5EX0FVVE9DQVBJVEFMSVpFIGFuZCByZW1vdmUgdGhlIElPUyBwcmVmaXgu
CisKKyAgICAgICAgKiBTdGl0Y2hNYXJrZXIvd3RmL0ZlYXR1cmVEZWZpbmVzLmg6CisKIDIwMTkt
MTItMTYgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBT
dHlsZUJlbmNoIHN1YnRlc3QgZm9yIGR5bmFtaWMgbWVkaWEgcXVlcnkgcGVyZm9ybWFuY2UKZGlm
ZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3RpdGNoTWFya2VyL3d0Zi9GZWF0dXJlRGVmaW5l
cy5oIGIvUGVyZm9ybWFuY2VUZXN0cy9TdGl0Y2hNYXJrZXIvd3RmL0ZlYXR1cmVEZWZpbmVzLmgK
aW5kZXggYWQ0YjkxZWU4MjQuLjkyMDk5OTdmZWQyIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRl
c3RzL1N0aXRjaE1hcmtlci93dGYvRmVhdHVyZURlZmluZXMuaAorKysgYi9QZXJmb3JtYW5jZVRl
c3RzL1N0aXRjaE1hcmtlci93dGYvRmVhdHVyZURlZmluZXMuaApAQCAtODYsOCArODYsMTIgQEAK
ICNkZWZpbmUgRU5BQkxFX0xFVFRFUlBSRVNTIDEKICNlbmRpZgogCi0jaWYgIWRlZmluZWQoRU5B
QkxFX0lPU19BVVRPQ09SUkVDVF9BTkRfQVVUT0NBUElUQUxJWkUpCi0jZGVmaW5lIEVOQUJMRV9J
T1NfQVVUT0NPUlJFQ1RfQU5EX0FVVE9DQVBJVEFMSVpFIDEKKyNpZiAhZGVmaW5lZChFTkFCTEVf
QVVUT0NPUlJFQ1QpCisjZGVmaW5lIEVOQUJMRV9BVVRPQ09SUkVDVCAxCisjZW5kaWYKKworI2lm
ICFkZWZpbmVkKEVOQUJMRV9BVVRPQ0FQSVRBTElaRSkKKyNkZWZpbmUgRU5BQkxFX0FVVE9DQVBJ
VEFMSVpFIDEKICNlbmRpZgogCiAjaWYgIWRlZmluZWQoRU5BQkxFX0lPU19HRVNUVVJFX0VWRU5U
UykgJiYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggNGJmZGYwNWU4NDIuLjJkMmUyNWJj
NGVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE5LTEyLTI3ICBDYXJsb3MgR2FyY2lhIENhbXBv
cyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXVtXUEVdIEFkZCBBUEkgdG8g
c2V0IHB1cnBvc2UgYW5kIGhpbnRzIG9mIGFjdGl2ZSBlZGl0YWJsZSBlbGVtZW50IHRvIGlucHV0
IG1ldGhvZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIwNTYwNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFNwbGl0IEVOQUJMRV9JT1NfQVVUT0NPUlJFQ1RfQU5EX0FVVE9DQVBJVEFMSVpFIGFuZCByZW1v
dmUgdGhlIElPUyBwcmVmaXguCisKKyAgICAgICAgKiB3dGYvRmVhdHVyZURlZmluZXMuaDoKKwog
MjAxOS0xMi0yNCAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbTWVkaWEgaW4gR1BVIHByb2Nlc3NdIEVuYWJsZSBtZWRpYSBwbGF5ZXIgcHJveHkgbG9n
Z2luZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRmVhdHVyZURlZmluZXMuaCBiL1NvdXJj
ZS9XVEYvd3RmL0ZlYXR1cmVEZWZpbmVzLmgKaW5kZXggNjgyYTFlODk1YTIuLmIyN2ZkYTQ1MzU1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9GZWF0dXJlRGVmaW5lcy5oCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL0ZlYXR1cmVEZWZpbmVzLmgKQEAgLTEwNyw4ICsxMDcsMTIgQEAKICNkZWZpbmUg
RU5BQkxFX0xFVFRFUlBSRVNTIDEKICNlbmRpZgogCi0jaWYgIWRlZmluZWQoRU5BQkxFX0lPU19B
VVRPQ09SUkVDVF9BTkRfQVVUT0NBUElUQUxJWkUpCi0jZGVmaW5lIEVOQUJMRV9JT1NfQVVUT0NP
UlJFQ1RfQU5EX0FVVE9DQVBJVEFMSVpFIDEKKyNpZiAhZGVmaW5lZChFTkFCTEVfQVVUT0NPUlJF
Q1QpCisjZGVmaW5lIEVOQUJMRV9BVVRPQ09SUkVDVCAxCisjZW5kaWYKKworI2lmICFkZWZpbmVk
KEVOQUJMRV9BVVRPQ0FQSVRBTElaRSkKKyNkZWZpbmUgRU5BQkxFX0FVVE9DQVBJVEFMSVpFIDEK
ICNlbmRpZgogCiAjaWYgIWRlZmluZWQoRU5BQkxFX0lPU19HRVNUVVJFX0VWRU5UUykgJiYgVVNF
KEFQUExFX0lOVEVSTkFMX1NESykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBlNjczOGM2M2U4OC4uNzVmNjY3NzZm
ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAxOS0xMi0yNyAgQ2FybG9zIEdhcmNp
YSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS11bV1BFXSBBZGQg
QVBJIHRvIHNldCBwdXJwb3NlIGFuZCBoaW50cyBvZiBhY3RpdmUgZWRpdGFibGUgZWxlbWVudCB0
byBpbnB1dCBtZXRob2RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDU2MDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBVc2UgRU5BQkxFKEFVVE9DQVBJVEFMSVpFKSBhbmQgRU5BQkxFKEFVVE9DT1JSRUNU
KSBpbnN0ZWFkIG9mIEVOQUJMRShJT1NfQVVUT0NPUlJFQ1RfQU5EX0FVVE9DQVBJVEFMSVpFKS4K
KworICAgICAgICAqIFNvdXJjZXMudHh0OiBBZGQgQXV0b2NhcGl0YWxpemUuY3BwIHRvIHRoZSBi
dWlsZC4KKyAgICAgICAgKiBodG1sL0F1dG9jYXBpdGFsaXplLmNwcDogQWRkIEVOQUJMRShBVVRP
Q0FQSVRBTElaRSkgZ3VhcmRzLgorICAgICAgICAqIGh0bWwvQXV0b2NhcGl0YWxpemUuaDogRGl0
dG8uCisgICAgICAgICogaHRtbC9IVE1MRWxlbWVudC5jcHA6CisgICAgICAgICogaHRtbC9IVE1M
RWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTEVsZW1lbnQuaWRsOgorICAgICAgICAqIGh0
bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHA6CisgICAgICAgICogaHRtbC9IVE1MRm9ybUNv
bnRyb2xFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwOgorICAg
ICAgICAqIGh0bWwvSFRNTEZvcm1FbGVtZW50Lmg6CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xp
ZW50cy5jcHA6IFVwZGF0ZSB0byBuZXcgQVBJIG9mIEVkaXRvckNsaWVudDo6c2V0SW5wdXRNZXRo
b2RTdGF0ZQorICAgICAgICAqIHBhZ2UvRWRpdG9yQ2xpZW50Lmg6IFRoZSBmb2N1c2VkIGVsZW1l
bnQgb3IgbnVsbHB0ciBpcyBub3cgcmVjZWl2ZWQgYnkgc2V0SW5wdXRNZXRob2RTdGF0ZSgpIGlu
c3RlYWQgb2YgZW5hYmxlZC9kaXNhYmxlZCBib29sZWFuLgorICAgICAgICAqIHBhZ2UvRm9jdXND
b250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvY3VzQ29udHJvbGxlcjo6c2V0Rm9j
dXNlZEVsZW1lbnQpOiBQYXNzIHRoZSBmb2N1c2VkIGVsZW1lbnQgb3IgbnVsbHB0ciB0byBzZXRJ
bnB1dE1ldGhvZFN0YXRlKCkuCisKIDIwMTktMTItMjUgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFw
cGxlLmNvbT4KIAogICAgICAgICBSdW4gd2l0aCBvZmZzZXQgZnJvbSB0aGUgY29udGVudCBib3gn
cyBsb2dpY2FsIGxlZnQgcGFpbnQgaXRzIHRhYiBzdG9wIGF0IHdyb25nIHBvc2l0aW9uLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzLnR4dAppbmRleCBjOTY4MTg5YzhhOC4uM2QxY2M4MmE4ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBA
IC0xMDk0LDYgKzEwOTQsNyBAQCBoaXN0b3J5L0NhY2hlZEZyYW1lLmNwcAogaGlzdG9yeS9DYWNo
ZWRQYWdlLmNwcAogaGlzdG9yeS9IaXN0b3J5SXRlbS5jcHAKIAoraHRtbC9BdXRvY2FwaXRhbGl6
ZS5jcHAKIGh0bWwvQXV0b2ZpbGwuY3BwCiBodG1sL0Jhc2VCdXR0b25JbnB1dFR5cGUuY3BwCiBo
dG1sL0Jhc2VDaGVja2FibGVJbnB1dFR5cGUuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0F1dG9jYXBpdGFsaXplLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQXV0b2NhcGl0
YWxpemUuY3BwCmluZGV4IDIxOGYzZGIyZjYxLi4zYTBmOTExOTliNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9BdXRvY2FwaXRhbGl6ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9BdXRvY2FwaXRhbGl6ZS5jcHAKQEAgLTI2LDYgKzI2LDggQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJBdXRvY2FwaXRhbGl6ZS5oIgogCisjaWYgRU5BQkxFKEFVVE9DQVBJ
VEFMSVpFKQorCiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKQEAgLTc3LDMgKzc5LDUgQEAgY29uc3QgQXRvbVN0cmluZyYgc3RyaW5nRm9yQXV0
b2NhcGl0YWxpemVUeXBlKEF1dG9jYXBpdGFsaXplVHlwZSB0eXBlKQogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoQVVUT0NBUElUQUxJWkUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0F1dG9jYXBpdGFsaXplLmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0F1dG9jYXBpdGFsaXplLmgKaW5kZXggOTE1MWJjMWEyZjAuLjFjMDUyZmVkYjkwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0F1dG9jYXBpdGFsaXplLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9BdXRvY2FwaXRhbGl6ZS5oCkBAIC0yNSw2ICsyNSw4IEBACiAKICNw
cmFnbWEgb25jZQogCisjaWYgRU5BQkxFKEFVVE9DQVBJVEFMSVpFKQorCiAjaW5jbHVkZSAiQXV0
b2NhcGl0YWxpemVUeXBlcy5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21TdHJpbmcuaD4KIApA
QCAtMzQsMyArMzYsNSBAQCBBdXRvY2FwaXRhbGl6ZVR5cGUgYXV0b2NhcGl0YWxpemVUeXBlRm9y
QXR0cmlidXRlVmFsdWUoY29uc3QgQXRvbVN0cmluZyYpOwogY29uc3QgQXRvbVN0cmluZyYgc3Ry
aW5nRm9yQXV0b2NhcGl0YWxpemVUeXBlKEF1dG9jYXBpdGFsaXplVHlwZSk7CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShBVVRPQ0FQSVRBTElaRSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKaW5kZXggN2FiMWZmNWRlMjcuLjBhMGNiMDk4MTdhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcApAQCAtMTA2OSw3ICsxMDY5LDcgQEAgYm9v
bCBIVE1MRWxlbWVudDo6aXNBY3R1YWxseURpc2FibGVkKCkgY29uc3QKICAgICByZXR1cm4gY2Fu
QmVBY3R1YWxseURpc2FibGVkKCkgJiYgaXNEaXNhYmxlZEZvcm1Db250cm9sKCk7CiB9CiAKLSNp
ZiBFTkFCTEUoSU9TX0FVVE9DT1JSRUNUX0FORF9BVVRPQ0FQSVRBTElaRSkKKyNpZiBFTkFCTEUo
QVVUT0NBUElUQUxJWkUpCiAKIGNvbnN0IEF0b21TdHJpbmcmIEhUTUxFbGVtZW50OjphdXRvY2Fw
aXRhbGl6ZSgpIGNvbnN0CiB7CkBAIC0xMDg2LDYgKzEwODYsMTAgQEAgdm9pZCBIVE1MRWxlbWVu
dDo6c2V0QXV0b2NhcGl0YWxpemUoY29uc3QgQXRvbVN0cmluZyYgdmFsdWUpCiAgICAgc2V0QXR0
cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihhdXRvY2FwaXRhbGl6ZUF0dHIsIHZhbHVlKTsK
IH0KIAorI2VuZGlmCisKKyNpZiBFTkFCTEUoQVVUT0NPUlJFQ1QpCisKIGJvb2wgSFRNTEVsZW1l
bnQ6OnNob3VsZEF1dG9jb3JyZWN0KCkgY29uc3QKIHsKICAgICBhdXRvJiBhdXRvY29ycmVjdFZh
bHVlID0gYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OmF1dG9jb3Jy
ZWN0QXR0cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmgKaW5kZXggZDJjZjY5NTRjNDkuLmYx
MDIwYmJhMTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5oCkBAIC0yMiw3ICsyMiw3IEBA
CiAKICNwcmFnbWEgb25jZQogCi0jaWYgRU5BQkxFKElPU19BVVRPQ09SUkVDVF9BTkRfQVVUT0NB
UElUQUxJWkUpCisjaWYgRU5BQkxFKEFVVE9DQVBJVEFMSVpFKQogI2luY2x1ZGUgIkF1dG9jYXBp
dGFsaXplLmgiCiAjZW5kaWYKIApAQCAtMTAyLDExICsxMDIsMTMgQEAgcHVibGljOgogICAgIGJv
b2wgY2FuQmVBY3R1YWxseURpc2FibGVkKCkgY29uc3Q7CiAgICAgYm9vbCBpc0FjdHVhbGx5RGlz
YWJsZWQoKSBjb25zdDsKIAotI2lmIEVOQUJMRShJT1NfQVVUT0NPUlJFQ1RfQU5EX0FVVE9DQVBJ
VEFMSVpFKQorI2lmIEVOQUJMRShBVVRPQ0FQSVRBTElaRSkKICAgICBXRUJDT1JFX0VYUE9SVCB2
aXJ0dWFsIEF1dG9jYXBpdGFsaXplVHlwZSBhdXRvY2FwaXRhbGl6ZVR5cGUoKSBjb25zdDsKICAg
ICBXRUJDT1JFX0VYUE9SVCBjb25zdCBBdG9tU3RyaW5nJiBhdXRvY2FwaXRhbGl6ZSgpIGNvbnN0
OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0QXV0b2NhcGl0YWxpemUoY29uc3QgQXRvbVN0
cmluZyYgdmFsdWUpOworI2VuZGlmCiAKKyNpZiBFTkFCTEUoQVVUT0NPUlJFQ1QpCiAgICAgYm9v
bCBhdXRvY29ycmVjdCgpIGNvbnN0IHsgcmV0dXJuIHNob3VsZEF1dG9jb3JyZWN0KCk7IH0KICAg
ICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIGJvb2wgc2hvdWxkQXV0b2NvcnJlY3QoKSBjb25zdDsK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEF1dG9jb3JyZWN0KGJvb2wpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxFbGVtZW50LmlkbAppbmRleCBhMWY4NDNkZjdhNy4uNjI5MmNmYTlhNzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaWRsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaWRsCkBAIC01OCw4ICs1OCw4IEBACiAgICAgW0NFUmVh
Y3Rpb25zXSBhdHRyaWJ1dGUgW1RyZWF0TnVsbEFzPUVtcHR5U3RyaW5nXSBET01TdHJpbmcgb3V0
ZXJUZXh0OwogCiAgICAgLy8gaU9TIGF1dG9jb3JyZWN0IC8gYXV0b2NhcGl0YWxpemF0aW9uIGV4
dGVuc2lvbnMuCi0gICAgW0NvbmRpdGlvbmFsPUlPU19BVVRPQ09SUkVDVF9BTkRfQVVUT0NBUElU
QUxJWkUsIENFUmVhY3Rpb25zXSBhdHRyaWJ1dGUgYm9vbGVhbiBhdXRvY29ycmVjdDsKLSAgICBb
Q29uZGl0aW9uYWw9SU9TX0FVVE9DT1JSRUNUX0FORF9BVVRPQ0FQSVRBTElaRSwgQ0VSZWFjdGlv
bnNdIGF0dHJpYnV0ZSBbVHJlYXROdWxsQXM9RW1wdHlTdHJpbmddIERPTVN0cmluZyBhdXRvY2Fw
aXRhbGl6ZTsKKyAgICBbQ29uZGl0aW9uYWw9QVVUT0NPUlJFQ1QsIENFUmVhY3Rpb25zXSBhdHRy
aWJ1dGUgYm9vbGVhbiBhdXRvY29ycmVjdDsKKyAgICBbQ29uZGl0aW9uYWw9QVVUT0NBUElUQUxJ
WkUsIENFUmVhY3Rpb25zXSBhdHRyaWJ1dGUgW1RyZWF0TnVsbEFzPUVtcHR5U3RyaW5nXSBET01T
dHJpbmcgYXV0b2NhcGl0YWxpemU7CiAKICAgICAvLyBGSVhNRTogV2UgYXJlIHRoZSBvbmx5IGJy
b3dzZXIgdG8gc3VwcG9ydCB0aGlzIG5vdyB0aGF0IEJsaW5rIGRyb3BwZWQgaXQgKGh0dHA6Ly9j
cmJ1Zy5jb20vNjg4OTQzKS4KICAgICBbQ0VSZWFjdGlvbnMsIFJlZmxlY3RdIGF0dHJpYnV0ZSBE
T01TdHJpbmcgd2Via2l0ZHJvcHpvbmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9y
bUNvbnRyb2xFbGVtZW50LmNwcAppbmRleCBlMGMyZTBmMDEzOS4uZDYxMWJjMWIyMjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcApAQCAtNjE1
LDcgKzYxNSw3IEBAIHZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6ZGlzcGF0Y2hCbHVyRXZl
bnQoUmVmUHRyPEVsZW1lbnQ+JiYgbmV3Rm9jdXNlZEVsZW1lCiAgICAgaGlkZVZpc2libGVWYWxp
ZGF0aW9uTWVzc2FnZSgpOwogfQogCi0jaWYgRU5BQkxFKElPU19BVVRPQ09SUkVDVF9BTkRfQVVU
T0NBUElUQUxJWkUpCisjaWYgRU5BQkxFKEFVVE9DT1JSRUNUKQogCiAvLyBGSVhNRTogV2Ugc2hv
dWxkIGxvb2sgdG8gc2hhcmUgdGhpcyBjb2RlIHdpdGggY2xhc3MgSFRNTEZvcm1FbGVtZW50IGlu
c3RlYWQgb2YgZHVwbGljYXRpbmcgdGhlIGxvZ2ljLgogCkBAIC02MjksNiArNjI5LDEwIEBAIGJv
b2wgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6c2hvdWxkQXV0b2NvcnJlY3QoKSBjb25zdAogICAg
IHJldHVybiB0cnVlOwogfQogCisjZW5kaWYKKworI2lmIEVOQUJMRShBVVRPQ0FQSVRBTElaRSkK
KwogQXV0b2NhcGl0YWxpemVUeXBlIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmF1dG9jYXBpdGFs
aXplVHlwZSgpIGNvbnN0CiB7CiAgICAgQXV0b2NhcGl0YWxpemVUeXBlIHR5cGUgPSBIVE1MRWxl
bWVudDo6YXV0b2NhcGl0YWxpemVUeXBlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZv
cm1Db250cm9sRWxlbWVudC5oCmluZGV4IGNmYzk3OGVkN2E4Li42MTM0MGJmYTczYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmgKQEAgLTI3LDcgKzI3
LDcgQEAKICNpbmNsdWRlICJGb3JtQXNzb2NpYXRlZEVsZW1lbnQuaCIKICNpbmNsdWRlICJMYWJl
bGFibGVFbGVtZW50LmgiCiAKLSNpZiBFTkFCTEUoSU9TX0FVVE9DT1JSRUNUX0FORF9BVVRPQ0FQ
SVRBTElaRSkKKyNpZiBFTkFCTEUoQVVUT0NBUElUQUxJWkUpCiAjaW5jbHVkZSAiQXV0b2NhcGl0
YWxpemUuaCIKICNlbmRpZgogCkBAIC05MSw4ICs5MSwxMSBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCBib29sIGlzQWN0aXZhdGVkU3VibWl0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2
aXJ0dWFsIHZvaWQgc2V0QWN0aXZhdGVkU3VibWl0KGJvb2wpIHsgfQogCi0jaWYgRU5BQkxFKElP
U19BVVRPQ09SUkVDVF9BTkRfQVVUT0NBUElUQUxJWkUpCisjaWYgRU5BQkxFKEFVVE9DT1JSRUNU
KQogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2hvdWxkQXV0b2NvcnJlY3QoKSBjb25zdCBmaW5h
bDsKKyNlbmRpZgorCisjaWYgRU5BQkxFKEFVVE9DQVBJVEFMSVpFKQogICAgIFdFQkNPUkVfRVhQ
T1JUIEF1dG9jYXBpdGFsaXplVHlwZSBhdXRvY2FwaXRhbGl6ZVR5cGUoKSBjb25zdCBmaW5hbDsK
ICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKaW5kZXggMTVh
ZDU3ZjkxYmIuLmU3ZTQxNGM4N2RjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxGb3JtRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1l
bnQuY3BwCkBAIC00MDYsNyArNDA2LDcgQEAgdm9pZCBIVE1MRm9ybUVsZW1lbnQ6OnJlc2V0QXNz
b2NpYXRlZEZvcm1Db250cm9sRWxlbWVudHMoKQogICAgICAgICBhc3NvY2lhdGVkRm9ybUNvbnRy
b2xFbGVtZW50LT5yZXNldCgpOwogfQogCi0jaWYgRU5BQkxFKElPU19BVVRPQ09SUkVDVF9BTkRf
QVVUT0NBUElUQUxJWkUpCisjaWYgRU5BQkxFKEFVVE9DT1JSRUNUKQogCiAvLyBGSVhNRTogV2Ug
c2hvdWxkIGxvb2sgdG8gc2hhcmUgdGhpcyBjb2RlIHdpdGggY2xhc3MgSFRNTEZvcm1Db250cm9s
RWxlbWVudCBpbnN0ZWFkIG9mIGR1cGxpY2F0aW5nIHRoZSBsb2dpYy4KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEZvcm1FbGVtZW50LmgKaW5kZXggYjIxNzFkNzE5NTEuLjQ3ZTM5ZmQ1NzdmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmgKQEAgLTMxLDEwICszMSw2IEBACiAjaW5j
bHVkZSA8d3RmL0lzb01hbGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrSGFzaFNldC5oPgogCi0j
aWYgRU5BQkxFKElPU19BVVRPQ09SUkVDVF9BTkRfQVVUT0NBUElUQUxJWkUpCi0jaW5jbHVkZSAi
QXV0b2NhcGl0YWxpemUuaCIKLSNlbmRpZgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IEV2ZW50OwpAQCAtNjcsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBzZXRBdXRvY29tcGxldGUoY29uc3QgQXRvbVN0cmluZyYpOwogICAgIFdFQkNPUkVfRVhQT1JU
IGNvbnN0IEF0b21TdHJpbmcmIGF1dG9jb21wbGV0ZSgpIGNvbnN0OwogCi0jaWYgRU5BQkxFKElP
U19BVVRPQ09SUkVDVF9BTkRfQVVUT0NBUElUQUxJWkUpCisjaWYgRU5BQkxFKEFVVE9DT1JSRUNU
KQogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2hvdWxkQXV0b2NvcnJlY3QoKSBjb25zdCBmaW5h
bDsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGll
bnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCmluZGV4IDBl
YjVhMTIwYWY4Li44NGU0ZTE4YzNmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0VtcHR5Q2xpZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50
cy5jcHAKQEAgLTI5OSw3ICsyOTksNyBAQCBwcml2YXRlOgogICAgIGJvb2wgc3BlbGxpbmdVSUlz
U2hvd2luZygpIGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICB2b2lkIHdpbGxTZXRJbnB1
dE1ldGhvZFN0YXRlKCkgZmluYWwgeyB9Ci0gICAgdm9pZCBzZXRJbnB1dE1ldGhvZFN0YXRlKGJv
b2wpIGZpbmFsIHsgfQorICAgIHZvaWQgc2V0SW5wdXRNZXRob2RTdGF0ZShFbGVtZW50KikgZmlu
YWwgeyB9CiAKICAgICBib29sIGNhblNob3dGb250UGFuZWwoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBmYWxzZTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaAppbmRleCBjYTdiNjg2Y2Y5
NC4uOTM2NzMwZjk2ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaApAQCAtMTc5LDcg
KzE3OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2hvd1NwZWxsaW5nVUkoYm9vbCBz
aG93KSA9IDA7CiAgICAgdmlydHVhbCBib29sIHNwZWxsaW5nVUlJc1Nob3dpbmcoKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIHdpbGxTZXRJbnB1dE1ldGhvZFN0YXRlKCkgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCBzZXRJbnB1dE1ldGhvZFN0YXRlKGJvb2wgZW5hYmxlZCkgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBzZXRJbnB1dE1ldGhvZFN0YXRlKEVsZW1lbnQqKSA9IDA7CiAKICAgICAvLyBTdXBw
b3J0IGZvciBnbG9iYWwgc2VsZWN0aW9ucywgdXNlZCBvbiBwbGF0Zm9ybXMgbGlrZSB0aGUgWCBX
aW5kb3cgU3lzdGVtIHRoYXQgdHJlYXQKICAgICAvLyBzZWxlY3Rpb24gYXMgYSB0eXBlIG9mIGNs
aXBib2FyZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcAppbmRleCBlNTk0
MGRkMmE4Yi4uZTc5Zjc4NWFiM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRm9j
dXNDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxl
ci5jcHAKQEAgLTgzNSwxNCArODM1LDE0IEBAIGJvb2wgRm9jdXNDb250cm9sbGVyOjpzZXRGb2N1
c2VkRWxlbWVudChFbGVtZW50KiBlbGVtZW50LCBGcmFtZSYgbmV3Rm9jdXNlZEZyYW1lCiAgICAg
aWYgKCFlbGVtZW50KSB7CiAgICAgICAgIGlmIChvbGREb2N1bWVudCkKICAgICAgICAgICAgIG9s
ZERvY3VtZW50LT5zZXRGb2N1c2VkRWxlbWVudChudWxscHRyKTsKLSAgICAgICAgbV9wYWdlLmVk
aXRvckNsaWVudCgpLnNldElucHV0TWV0aG9kU3RhdGUoZmFsc2UpOworICAgICAgICBtX3BhZ2Uu
ZWRpdG9yQ2xpZW50KCkuc2V0SW5wdXRNZXRob2RTdGF0ZShudWxscHRyKTsKICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgfQogCiAgICAgUmVmPERvY3VtZW50PiBuZXdEb2N1bWVudChlbGVtZW50
LT5kb2N1bWVudCgpKTsKIAogICAgIGlmIChuZXdEb2N1bWVudC0+Zm9jdXNlZEVsZW1lbnQoKSA9
PSBlbGVtZW50KSB7Ci0gICAgICAgIG1fcGFnZS5lZGl0b3JDbGllbnQoKS5zZXRJbnB1dE1ldGhv
ZFN0YXRlKGVsZW1lbnQtPnNob3VsZFVzZUlucHV0TWV0aG9kKCkpOworICAgICAgICBtX3BhZ2Uu
ZWRpdG9yQ2xpZW50KCkuc2V0SW5wdXRNZXRob2RTdGF0ZShlbGVtZW50KTsKICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgfQogICAgIApAQCAtODYyLDcgKzg2Miw3IEBAIGJvb2wgRm9jdXNDb250
cm9sbGVyOjpzZXRGb2N1c2VkRWxlbWVudChFbGVtZW50KiBlbGVtZW50LCBGcmFtZSYgbmV3Rm9j
dXNlZEZyYW1lCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChuZXdEb2N1bWVudC0+
Zm9jdXNlZEVsZW1lbnQoKSA9PSBlbGVtZW50KQotICAgICAgICBtX3BhZ2UuZWRpdG9yQ2xpZW50
KCkuc2V0SW5wdXRNZXRob2RTdGF0ZShlbGVtZW50LT5zaG91bGRVc2VJbnB1dE1ldGhvZCgpKTsK
KyAgICAgICAgbV9wYWdlLmVkaXRvckNsaWVudCgpLnNldElucHV0TWV0aG9kU3RhdGUoZWxlbWVu
dCk7CiAKICAgICBtX2ZvY3VzU2V0VGltZSA9IE1vbm90b25pY1RpbWU6Om5vdygpOwogICAgIG1f
Zm9jdXNSZXBhaW50VGltZXIuc3RvcCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA2ZjYxNmM3OGFkMy4uYWZmODRm
MWE0OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODMgQEAKKzIwMTktMTItMjcgIENhcmxvcyBHYXJj
aWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdW1dQRV0gQWRk
IEFQSSB0byBzZXQgcHVycG9zZSBhbmQgaGludHMgb2YgYWN0aXZlIGVkaXRhYmxlIGVsZW1lbnQg
dG8gaW5wdXQgbWV0aG9kcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjA1NjA1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWRkIGlucHV0LXB1cnBvc2UgYW5kIGlucHV0LWhpbnRzIHByb3BlcnRpZXMgdG8g
V2ViS2l0SW5wdXRNZXRob2RDb250ZXh0LiBUaGUgbWVzc2FnZSBTZXRJbnB1dE1ldGhvZFN0YXRl
IG5vdworICAgICAgICByZWNlaXZlcyBhbiBvcHRpb25hbCBJbnB1dE1ldGhvZFN0YXRlIHN0cnVj
dCB3aXRoIGluZm9ybWF0aW9uIGFib3V0IHRoZSBwdXJwb3NlIGFuZCBoaW50cyBvZiB0aGUgYWN0
aXZlIGVkaXRhYmxlCisgICAgICAgIGVsZW1lbnQuCisKKyAgICAgICAgKiBTaGFyZWQvZ2xpYi9J
bnB1dE1ldGhvZFN0YXRlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OklucHV0TWV0aG9k
U3RhdGU6OnNldFB1cnBvc2VPckhpbnRGb3JJbnB1dE1vZGUpOgorICAgICAgICAoV2ViS2l0Ojpp
bnB1dEVsZW1lbnRIYXNEaWdpdHNQYXR0ZXJuKToKKyAgICAgICAgKFdlYktpdDo6SW5wdXRNZXRo
b2RTdGF0ZTo6c2V0UHVycG9zZUZvcklucHV0RWxlbWVudCk6CisgICAgICAgIChXZWJLaXQ6Oklu
cHV0TWV0aG9kU3RhdGU6OmFkZEhpbnRzRm9yQXV0b2NhcGl0YWxpemVUeXBlKToKKyAgICAgICAg
KFdlYktpdDo6SW5wdXRNZXRob2RTdGF0ZTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktp
dDo6SW5wdXRNZXRob2RTdGF0ZTo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvZ2xpYi9JbnB1
dE1ldGhvZFN0YXRlLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpvcGVyYXRvcj09KToKKyAg
ICAgICAgKiBTb3VyY2VzR1RLLnR4dDoKKyAgICAgICAgKiBTb3VyY2VzV1BFLnR4dDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvSW5wdXRNZXRob2RGaWx0ZXIuY3BwOgorICAgICAgICAo
V2ViS2l0OjpJbnB1dE1ldGhvZEZpbHRlcjo6c2V0Q29udGV4dCk6IFVzZSBpc0VuYWJsZWQoKSBp
bnN0ZWFkIG9mIG1fZW5hYmxlZC4KKyAgICAgICAgKFdlYktpdDo6SW5wdXRNZXRob2RGaWx0ZXI6
OnNldFN0YXRlKTogTm93IHJlY2VpdmVzIGFuIG9wdGlvbmFsIElucHV0TWV0aG9kU3RhdGUgc3Ry
dWN0LgorICAgICAgICAoV2ViS2l0OjpJbnB1dE1ldGhvZEZpbHRlcjo6ZmlsdGVyS2V5RXZlbnQp
OiBVc2UgaXNFbmFibGVkKCkgaW5zdGVhZCBvZiBtX2VuYWJsZWQuCisgICAgICAgIChXZWJLaXQ6
OklucHV0TWV0aG9kRmlsdGVyOjppc1ZpZXdGb2N1c2VkIGNvbnN0KTogRGl0dG8uCisgICAgICAg
IChXZWJLaXQ6OnRvV2ViS2l0UHVycG9zZSk6IEhlbHBlciB0byBjb252ZXJ0IElucHV0TWV0aG9k
U3RhdGU6OlB1cnBvc2UgdG8gV2ViS2l0SW5wdXRQdXJwb3NlLgorICAgICAgICAoV2ViS2l0Ojp0
b1dlYktpdEhpbnRzKTogSGVscGVyIHRvIGNvbnZlcnQgSW5wdXRNZXRob2RTdGF0ZTo6SGludCB0
byBXZWJLaXRJbnB1dEhpbnRzLgorICAgICAgICAoV2ViS2l0OjpJbnB1dE1ldGhvZEZpbHRlcjo6
bm90aWZ5Rm9jdXNlZEluKTogU2V0IHRoZSBwdXJwb3NlIGFuZCBoaW50cyB0byB0aGUgY29udGV4
dC4KKyAgICAgICAgKFdlYktpdDo6SW5wdXRNZXRob2RGaWx0ZXI6Om5vdGlmeUZvY3VzZWRPdXQp
OiBVc2UgaXNFbmFibGVkKCkgaW5zdGVhZCBvZiBtX2VuYWJsZWQuCisgICAgICAgIChXZWJLaXQ6
OklucHV0TWV0aG9kRmlsdGVyOjpub3RpZnlDdXJzb3JSZWN0KTogRGl0dG8uCisgICAgICAgIChX
ZWJLaXQ6OklucHV0TWV0aG9kRmlsdGVyOjpwcmVlZGl0U3RhcnRlZCk6IERpdHRvLgorICAgICAg
ICAoV2ViS2l0OjpJbnB1dE1ldGhvZEZpbHRlcjo6cHJlZWRpdENoYW5nZWQpOiBEaXR0by4KKyAg
ICAgICAgKFdlYktpdDo6SW5wdXRNZXRob2RGaWx0ZXI6OnByZWVkaXRGaW5pc2hlZCk6IERpdHRv
LgorICAgICAgICAoV2ViS2l0OjpJbnB1dE1ldGhvZEZpbHRlcjo6Y29tbWl0dGVkKTogRGl0dG8u
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL0lucHV0TWV0aG9kRmlsdGVyLmg6CisgICAg
ICAgIChXZWJLaXQ6OklucHV0TWV0aG9kRmlsdGVyOjppc0VuYWJsZWQgY29uc3QpOiBSZXR1cm4g
dHJ1ZSBpZiB3ZSBoYXZlIGEgc3RhdGUuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdElucHV0TWV0aG9kQ29udGV4dC5jcHA6CisgICAgICAgICh3ZWJraXRJbnB1dE1ldGhvZENv
bnRleHRTZXRQcm9wZXJ0eSk6IFByb3BlcnRpZXMgc2V0dGVyLgorICAgICAgICAod2Via2l0SW5w
dXRNZXRob2RDb250ZXh0R2V0UHJvcGVydHkpOiBQcm9wZXJ0aWVzIGdldHRlci4KKyAgICAgICAg
KHdlYmtpdF9pbnB1dF9tZXRob2RfY29udGV4dF9jbGFzc19pbml0KTogQWRkIGltcGxlbWVudGF0
aW9uIGZvciBwcm9wZXJ0aWVzIGdldHRlciBhbmQgc2V0dGVyLgorICAgICAgICAod2Via2l0X2lu
cHV0X21ldGhvZF9jb250ZXh0X2dldF9pbnB1dF9wdXJwb3NlKToKKyAgICAgICAgKHdlYmtpdF9p
bnB1dF9tZXRob2RfY29udGV4dF9zZXRfaW5wdXRfcHVycG9zZSk6CisgICAgICAgICh3ZWJraXRf
aW5wdXRfbWV0aG9kX2NvbnRleHRfZ2V0X2lucHV0X2hpbnRzKToKKyAgICAgICAgKHdlYmtpdF9p
bnB1dF9tZXRob2RfY29udGV4dF9zZXRfaW5wdXRfaGludHMpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdElucHV0TWV0aG9kQ29udGV4dC5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdElucHV0TWV0aG9kQ29udGV4dEltcGxHdGsuY3BwOgorICAgICAgICAo
dG9HdGtJbnB1dFB1cnBvc2UpOiBIZWxwZXIgdG8gY29udmVydCBXZWJLaXRJbnB1dFB1cnBvc2Ug
dG8gR3RrSW5wdXRQdXJwb3NlLgorICAgICAgICAodG9HdGtJbnB1dEhpbnRzKTogSGVscGVyIHRv
IGNvbnZlcnQgV2ViS2l0SW5wdXRIaW50cyB0byBHdGtJbnB1dEhpbnRzLgorICAgICAgICAoaW5w
dXRQdXJwb3NlQ2hhbmdlZENhbGxiYWNrKTogU2V0IHRoZSBwdXJwb3NlIG9uIEd0a0lNQ29udGV4
dC4KKyAgICAgICAgKGlucHV0SGludHNDaGFuZ2VkQ2FsbGJhY2spOiBTZXQgdGhlIGhpbnRzIG9u
IEd0a0lNQ29udGV4dC4KKyAgICAgICAgKHdlYmtpdElucHV0TWV0aG9kQ29udGV4dEltcGxHdGtD
b25zdHJ1Y3RlZCk6IENvbm5lY3QgdG8gbm90aWZ5IHNpZ25hbCBmb3IgaW5wdXQtcHVycG9zZSBh
bmQgaW5wdXQtaGludHMKKyAgICAgICAgcHJvcGVydGllcyBvZiB0aGUgY29udGV4dC4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHA6CisgICAgICAgICh3
ZWJraXRXZWJWaWV3QmFzZVNldElucHV0TWV0aG9kU3RhdGUpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0OgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvd3BlL1BhZ2VDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGFn
ZUNsaWVudEltcGw6OnNldElucHV0TWV0aG9kU3RhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvd3BlL1BhZ2VDbGllbnRJbXBsLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS93cGUvV1BF
Vmlldy5jcHA6CisgICAgICAgIChXS1dQRTo6Vmlldzo6c2V0SW5wdXRNZXRob2RTdGF0ZSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS93cGUvV1BFVmlldy5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvd3BlL1dlYktpdElucHV0TWV0aG9kQ29udGV4dC5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvd3BlL2RvY3Mvd3BlLTEuMC1zZWN0aW9ucy50eHQ6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2Fn
ZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9XZWJQYWdlUHJveHlHdGsuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldElucHV0TWV0aG9kU3RhdGUpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy93cGUvV2ViUGFnZVByb3h5V1BFLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpzZXRJbnB1dE1ldGhvZFN0YXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YkVkaXRvckNsaWVudDo6c2V0SW5wdXRNZXRob2RTdGF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9nbGliL1dl
YlBhZ2VHTGliLmNwcDoKKyAgICAgICAgKFdlYktpdDo6aW5wdXRNZXRob2RTYXRlRm9yRWxlbWVu
dCk6IEJ1aWxkIGFuIElucHV0TWV0aG9kU3RhdGUgZm9yIHRoZSBnaXZlbiBlbGVtZW50LgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRJbnB1dE1ldGhvZFN0YXRlKToKKwogMjAxOS0xMi0y
NiAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAg
W0dUS11bV1BFXSBSZW1vdmUgZHVwbGljYXRlZCBjb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9nbGliL0lucHV0TWV0aG9kU3RhdGUuY3BwIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvZ2xpYi9JbnB1dE1ldGhvZFN0YXRlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMC4uNmExOTk2MmUxNTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9nbGliL0lucHV0TWV0aG9kU3RhdGUuY3BwCkBAIC0wLDAgKzEsMTIyIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE5IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJJbnB1dE1ldGhvZFN0YXRlLmgiCisKKyNpbmNsdWRlICJBcmd1
bWVudENvZGVycy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvSFRNTElucHV0RWxlbWVudC5oPgorCitu
YW1lc3BhY2UgV2ViS2l0IHsKKwordm9pZCBJbnB1dE1ldGhvZFN0YXRlOjpzZXRQdXJwb3NlT3JI
aW50Rm9ySW5wdXRNb2RlKFdlYkNvcmU6OklucHV0TW9kZSBpbnB1dE1vZGUpCit7CisgICAgc3dp
dGNoIChpbnB1dE1vZGUpIHsKKyAgICBjYXNlIFdlYkNvcmU6OklucHV0TW9kZTo6Tm9uZToKKyAg
ICAgICAgaGludHMuYWRkKElucHV0TWV0aG9kU3RhdGU6OkhpbnQ6OkluaGliaXRPblNjcmVlbktl
eWJvYXJkKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXZWJDb3JlOjpJbnB1dE1vZGU6OlVu
c3BlY2lmaWVkOgorICAgIGNhc2UgV2ViQ29yZTo6SW5wdXRNb2RlOjpUZXh0OgorICAgICAgICBw
dXJwb3NlID0gUHVycG9zZTo6RnJlZUZvcm07CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV2Vi
Q29yZTo6SW5wdXRNb2RlOjpUZWxlcGhvbmU6CisgICAgICAgIHB1cnBvc2UgPSBQdXJwb3NlOjpQ
aG9uZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXZWJDb3JlOjpJbnB1dE1vZGU6OlVybDoK
KyAgICAgICAgcHVycG9zZSA9IFB1cnBvc2U6OlVybDsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBXZWJDb3JlOjpJbnB1dE1vZGU6OkVtYWlsOgorICAgICAgICBwdXJwb3NlID0gUHVycG9zZTo6
RW1haWw7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV2ViQ29yZTo6SW5wdXRNb2RlOjpOdW1l
cmljOgorICAgICAgICBwdXJwb3NlID0gUHVycG9zZTo6RGlnaXRzOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIFdlYkNvcmU6OklucHV0TW9kZTo6RGVjaW1hbDoKKyAgICAgICAgcHVycG9zZSA9
IFB1cnBvc2U6Ok51bWJlcjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXZWJDb3JlOjpJbnB1
dE1vZGU6OlNlYXJjaDoKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCitzdGF0aWMgYm9vbCBp
bnB1dEVsZW1lbnRIYXNEaWdpdHNQYXR0ZXJuKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQmIGVs
ZW1lbnQpCit7CisgICAgY29uc3QgYXV0byYgcGF0dGVybiA9IGVsZW1lbnQuYXR0cmlidXRlV2l0
aG91dFN5bmNocm9uaXphdGlvbihXZWJDb3JlOjpIVE1MTmFtZXM6OnBhdHRlcm5BdHRyKTsKKyAg
ICByZXR1cm4gcGF0dGVybiA9PSAiXFxkKiIgfHwgcGF0dGVybiA9PSAiWzAtOV0qIjsKK30KKwor
dm9pZCBJbnB1dE1ldGhvZFN0YXRlOjpzZXRQdXJwb3NlRm9ySW5wdXRFbGVtZW50KFdlYkNvcmU6
OkhUTUxJbnB1dEVsZW1lbnQmIGVsZW1lbnQpCit7CisgICAgaWYgKGVsZW1lbnQuaXNQYXNzd29y
ZEZpZWxkKCkpCisgICAgICAgIHB1cnBvc2UgPSBQdXJwb3NlOjpQYXNzd29yZDsKKyAgICBlbHNl
IGlmIChlbGVtZW50LmlzRW1haWxGaWVsZCgpKQorICAgICAgICBwdXJwb3NlID0gUHVycG9zZTo6
RW1haWw7CisgICAgZWxzZSBpZiAoZWxlbWVudC5pc1RlbGVwaG9uZUZpZWxkKCkpCisgICAgICAg
IHB1cnBvc2UgPSBQdXJwb3NlOjpQaG9uZTsKKyAgICBlbHNlIGlmIChlbGVtZW50LmlzTnVtYmVy
RmllbGQoKSkKKyAgICAgICAgcHVycG9zZSA9IGlucHV0RWxlbWVudEhhc0RpZ2l0c1BhdHRlcm4o
ZWxlbWVudCkgPyBQdXJwb3NlOjpEaWdpdHMgOiBQdXJwb3NlOjpOdW1iZXI7CisgICAgZWxzZSBp
ZiAoZWxlbWVudC5pc1VSTEZpZWxkKCkpCisgICAgICAgIHB1cnBvc2UgPSBQdXJwb3NlOjpVcmw7
CisgICAgZWxzZSBpZiAoZWxlbWVudC5pc1RleHQoKSAmJiBpbnB1dEVsZW1lbnRIYXNEaWdpdHNQ
YXR0ZXJuKGVsZW1lbnQpKQorICAgICAgICBwdXJwb3NlID0gUHVycG9zZTo6RGlnaXRzOworfQor
Cit2b2lkIElucHV0TWV0aG9kU3RhdGU6OmFkZEhpbnRzRm9yQXV0b2NhcGl0YWxpemVUeXBlKEF1
dG9jYXBpdGFsaXplVHlwZSBhdXRvY2FwaXRhbGl6ZVR5cGUpCit7CisgICAgc3dpdGNoIChhdXRv
Y2FwaXRhbGl6ZVR5cGUpIHsKKyAgICBjYXNlIEF1dG9jYXBpdGFsaXplVHlwZURlZmF1bHQ6Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgQXV0b2NhcGl0YWxpemVUeXBlTm9uZToKKyAgICAgICAg
aGludHMuYWRkKElucHV0TWV0aG9kU3RhdGU6OkhpbnQ6Okxvd2VyY2FzZSk7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgQXV0b2NhcGl0YWxpemVUeXBlV29yZHM6CisgICAgICAgIGhpbnRzLmFk
ZChJbnB1dE1ldGhvZFN0YXRlOjpIaW50OjpVcHBlcmNhc2VXb3Jkcyk7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgQXV0b2NhcGl0YWxpemVUeXBlU2VudGVuY2VzOgorICAgICAgICBoaW50cy5h
ZGQoSW5wdXRNZXRob2RTdGF0ZTo6SGludDo6VXBwZXJjYXNlU2VudGVuY2VzKTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBBdXRvY2FwaXRhbGl6ZVR5cGVBbGxDaGFyYWN0ZXJzOgorICAgICAg
ICBoaW50cy5hZGQoSW5wdXRNZXRob2RTdGF0ZTo6SGludDo6VXBwZXJjYXNlQ2hhcnMpOworICAg
ICAgICBicmVhazsKKyAgICB9Cit9CisKK3ZvaWQgSW5wdXRNZXRob2RTdGF0ZTo6ZW5jb2RlKElQ
Qzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyLmVuY29kZUVudW0ocHVy
cG9zZSk7CisgICAgZW5jb2RlciA8PCBoaW50czsKK30KKworT3B0aW9uYWw8SW5wdXRNZXRob2RT
dGF0ZT4gSW5wdXRNZXRob2RTdGF0ZTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKK3sK
KyAgICBJbnB1dE1ldGhvZFN0YXRlIHN0YXRlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGVFbnVt
KHN0YXRlLnB1cnBvc2UpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUoc3RhdGUuaGludHMpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgIHJldHVybiBzdGF0ZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9nbGliL0lucHV0TWV0aG9kU3RhdGUuaCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL2dsaWIvSW5wdXRNZXRob2RTdGF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5kZmJmMDU0MDZkYgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL2dsaWIvSW5wdXRNZXRob2RTdGF0ZS5oCkBAIC0wLDAgKzEsODEg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpbmNsdWRlIDxXZWJDb3JlL0F1dG9jYXBpdGFsaXplVHlwZXMuaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL0lucHV0TW9kZS5oPgorI2luY2x1ZGUgPHd0Zi9PcHRpb25TZXQuaD4K
KyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KKworbmFtZXNwYWNlIElQQyB7CitjbGFzcyBEZWNv
ZGVyOworY2xhc3MgRW5jb2RlcjsKK30KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgSFRN
TElucHV0RWxlbWVudDsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0cnVjdCBJbnB1dE1l
dGhvZFN0YXRlIHsKKyAgICBlbnVtIGNsYXNzIFB1cnBvc2UgeworICAgICAgICBGcmVlRm9ybSwK
KyAgICAgICAgRGlnaXRzLAorICAgICAgICBOdW1iZXIsCisgICAgICAgIFBob25lLAorICAgICAg
ICBVcmwsCisgICAgICAgIEVtYWlsLAorICAgICAgICBQYXNzd29yZAorICAgIH07CisKKyAgICBl
bnVtIGNsYXNzIEhpbnQgeworICAgICAgICBOb25lID0gMCwKKyAgICAgICAgU3BlbGxjaGVjayA9
IDEgPDwgMCwKKyAgICAgICAgTG93ZXJjYXNlID0gMSA8PCAxLAorICAgICAgICBVcHBlcmNhc2VD
aGFycyA9IDEgPDwgMiwKKyAgICAgICAgVXBwZXJjYXNlV29yZHMgPSAxIDw8IDMsCisgICAgICAg
IFVwcGVyY2FzZVNlbnRlbmNlcyA9IDEgPDwgNCwKKyAgICAgICAgSW5oaWJpdE9uU2NyZWVuS2V5
Ym9hcmQgPSAxIDw8IDUKKyAgICB9OworCisgICAgdm9pZCBzZXRQdXJwb3NlT3JIaW50Rm9ySW5w
dXRNb2RlKFdlYkNvcmU6OklucHV0TW9kZSk7CisgICAgdm9pZCBzZXRQdXJwb3NlRm9ySW5wdXRF
bGVtZW50KFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQmKTsKKyAgICB2b2lkIGFkZEhpbnRzRm9y
QXV0b2NhcGl0YWxpemVUeXBlKEF1dG9jYXBpdGFsaXplVHlwZSk7CisKKyAgICB2b2lkIGVuY29k
ZShJUEM6OkVuY29kZXImKSBjb25zdDsKKyAgICBzdGF0aWMgT3B0aW9uYWw8SW5wdXRNZXRob2RT
dGF0ZT4gZGVjb2RlKElQQzo6RGVjb2RlciYpOworCisgICAgUHVycG9zZSBwdXJwb3NlIHsgUHVy
cG9zZTo6RnJlZUZvcm0gfTsKKyAgICBPcHRpb25TZXQ8SGludD4gaGludHM7Cit9OworCitpbmxp
bmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IElucHV0TWV0aG9kU3RhdGUmIGEsIGNvbnN0IElucHV0
TWV0aG9kU3RhdGUmIGIpCit7CisgICAgcmV0dXJuIGEucHVycG9zZSA9PSBiLnB1cnBvc2UgJiYg
YS5oaW50cyA9PSBiLmhpbnRzOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0dUSy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNH
VEsudHh0CmluZGV4IDQwMzhhZDdiYWVjLi44ZmIxODA1NjI3OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9Tb3VyY2VzR1RLLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNHVEsudHh0
CkBAIC04Myw2ICs4Myw3IEBAIFNoYXJlZC9QbHVnaW5zL3VuaXgvUGx1Z2luU2VhcmNoUGF0aC5j
cHAKIFNoYXJlZC9jYWlyby9TaGFyZWFibGVCaXRtYXBDYWlyby5jcHAKIAogU2hhcmVkL2dsaWIv
QXJndW1lbnRDb2RlcnNHTGliLmNwcAorU2hhcmVkL2dsaWIvSW5wdXRNZXRob2RTdGF0ZS5jcHAK
IFNoYXJlZC9nbGliL1Byb2Nlc3NFeGVjdXRhYmxlUGF0aEdMaWIuY3BwCiBTaGFyZWQvZ2xpYi9V
c2VyTWVzc2FnZS5jcHAKIFNoYXJlZC9nbGliL1dlYkNvbnRleHRNZW51SXRlbUdsaWIuY3BwCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNXUEUudHh0IGIvU291cmNlL1dlYktpdC9T
b3VyY2VzV1BFLnR4dAppbmRleCBmNzg4ZDg0ZDg2OS4uMGM5ZGZlMTE5ZmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU291cmNlc1dQRS50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2Vz
V1BFLnR4dApAQCAtODEsNiArODEsNyBAQCBTaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS91bml4L05l
dHNjYXBlUGx1Z2luTW9kdWxlVW5peC5jcHAKIFNoYXJlZC9jYWlyby9TaGFyZWFibGVCaXRtYXBD
YWlyby5jcHAKIAogU2hhcmVkL2dsaWIvQXJndW1lbnRDb2RlcnNHTGliLmNwcAorU2hhcmVkL2ds
aWIvSW5wdXRNZXRob2RTdGF0ZS5jcHAKIFNoYXJlZC9nbGliL1Byb2Nlc3NFeGVjdXRhYmxlUGF0
aEdMaWIuY3BwCiBTaGFyZWQvZ2xpYi9Vc2VyTWVzc2FnZS5jcHAKIFNoYXJlZC9nbGliL1dlYkNv
bnRleHRNZW51SXRlbUdsaWIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ2xpYi9JbnB1dE1ldGhvZEZpbHRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ2xpYi9JbnB1dE1ldGhvZEZpbHRlci5jcHAKaW5kZXggNzY5ZjQxZGZhNjguLjU5ZjQx
M2EyMDM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JbnB1
dE1ldGhvZEZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
SW5wdXRNZXRob2RGaWx0ZXIuY3BwCkBAIC03MSwyMyArNzEsMjMgQEAgdm9pZCBJbnB1dE1ldGhv
ZEZpbHRlcjo6c2V0Q29udGV4dChXZWJLaXRJbnB1dE1ldGhvZENvbnRleHQqIGNvbnRleHQpCiAg
ICAgZ19zaWduYWxfY29ubmVjdF9zd2FwcGVkKG1fY29udGV4dC5nZXQoKSwgInByZWVkaXQtZmlu
aXNoZWQiLCBHX0NBTExCQUNLKHByZWVkaXRGaW5pc2hlZENhbGxiYWNrKSwgdGhpcyk7CiAgICAg
Z19zaWduYWxfY29ubmVjdF9zd2FwcGVkKG1fY29udGV4dC5nZXQoKSwgImNvbW1pdHRlZCIsIEdf
Q0FMTEJBQ0soY29tbWl0dGVkQ2FsbGJhY2spLCB0aGlzKTsKIAotICAgIGlmIChtX2VuYWJsZWQg
JiYgaXNWaWV3Rm9jdXNlZCgpKQorICAgIGlmIChpc0VuYWJsZWQoKSAmJiBpc1ZpZXdGb2N1c2Vk
KCkpCiAgICAgICAgIG5vdGlmeUZvY3VzZWRJbigpOwogfQogCi12b2lkIElucHV0TWV0aG9kRmls
dGVyOjpzZXRFbmFibGVkKGJvb2wgZW5hYmxlZCkKK3ZvaWQgSW5wdXRNZXRob2RGaWx0ZXI6OnNl
dFN0YXRlKE9wdGlvbmFsPElucHV0TWV0aG9kU3RhdGU+JiYgc3RhdGUpCiB7Ci0gICAgaWYgKCFl
bmFibGVkKQorICAgIGlmICghc3RhdGUpCiAgICAgICAgIG5vdGlmeUZvY3VzZWRPdXQoKTsKIAot
ICAgIG1fZW5hYmxlZCA9IGVuYWJsZWQ7Ci0gICAgaWYgKG1fZW5hYmxlZCAmJiBpc1ZpZXdGb2N1
c2VkKCkpCisgICAgbV9zdGF0ZSA9IFdURk1vdmUoc3RhdGUpOworICAgIGlmIChpc0VuYWJsZWQo
KSAmJiBpc1ZpZXdGb2N1c2VkKCkpCiAgICAgICAgIG5vdGlmeUZvY3VzZWRJbigpOwogfQogCiBJ
bnB1dE1ldGhvZEZpbHRlcjo6RmlsdGVyUmVzdWx0IElucHV0TWV0aG9kRmlsdGVyOjpmaWx0ZXJL
ZXlFdmVudChQbGF0Zm9ybUV2ZW50S2V5KiBrZXlFdmVudCkKIHsKLSAgICBpZiAoIW1fZW5hYmxl
ZCB8fCAhbV9jb250ZXh0KQorICAgIGlmICghaXNFbmFibGVkKCkgfHwgIW1fY29udGV4dCkKICAg
ICAgICAgcmV0dXJuIHsgfTsKIAogICAgIFNldEZvclNjb3BlPGJvb2w+IGZpbHRlcmluZ0NvbnRl
eHRJc0FjaXZlKG1fZmlsdGVyaW5nQ29udGV4dC5pc0FjdGl2ZSwgdHJ1ZSk7CkBAIC0xMTAsNyAr
MTEwLDcgQEAgSW5wdXRNZXRob2RGaWx0ZXI6OkZpbHRlclJlc3VsdCBJbnB1dE1ldGhvZEZpbHRl
cjo6ZmlsdGVyS2V5RXZlbnQoUGxhdGZvcm1FdmVudEsKIAogYm9vbCBJbnB1dE1ldGhvZEZpbHRl
cjo6aXNWaWV3Rm9jdXNlZCgpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX2VuYWJsZWQgfHwgIW1fY29u
dGV4dCkKKyAgICBpZiAoIWlzRW5hYmxlZCgpIHx8ICFtX2NvbnRleHQpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAogI2lmIEVOQUJMRShERVZFTE9QRVJfTU9ERSkgJiYgUExBVEZPUk0oWDExKQpA
QCAtMTI3LDE3ICsxMjcsNjAgQEAgYm9vbCBJbnB1dE1ldGhvZEZpbHRlcjo6aXNWaWV3Rm9jdXNl
ZCgpIGNvbnN0CiAgICAgcmV0dXJuIHdlYmtpdFdlYlZpZXdHZXRQYWdlKHdlYlZpZXcpLmlzVmll
d0ZvY3VzZWQoKTsKIH0KIAorc3RhdGljIFdlYktpdElucHV0UHVycG9zZSB0b1dlYktpdFB1cnBv
c2UoSW5wdXRNZXRob2RTdGF0ZTo6UHVycG9zZSBwdXJwb3NlKQoreworICAgIHN3aXRjaCAocHVy
cG9zZSkgeworICAgIGNhc2UgSW5wdXRNZXRob2RTdGF0ZTo6UHVycG9zZTo6RnJlZUZvcm06Cisg
ICAgICAgIHJldHVybiBXRUJLSVRfSU5QVVRfUFVSUE9TRV9GUkVFX0ZPUk07CisgICAgY2FzZSBJ
bnB1dE1ldGhvZFN0YXRlOjpQdXJwb3NlOjpEaWdpdHM6CisgICAgICAgIHJldHVybiBXRUJLSVRf
SU5QVVRfUFVSUE9TRV9ESUdJVFM7CisgICAgY2FzZSBJbnB1dE1ldGhvZFN0YXRlOjpQdXJwb3Nl
OjpOdW1iZXI6CisgICAgICAgIHJldHVybiBXRUJLSVRfSU5QVVRfUFVSUE9TRV9OVU1CRVI7Cisg
ICAgY2FzZSBJbnB1dE1ldGhvZFN0YXRlOjpQdXJwb3NlOjpQaG9uZToKKyAgICAgICAgcmV0dXJu
IFdFQktJVF9JTlBVVF9QVVJQT1NFX1BIT05FOworICAgIGNhc2UgSW5wdXRNZXRob2RTdGF0ZTo6
UHVycG9zZTo6VXJsOgorICAgICAgICByZXR1cm4gV0VCS0lUX0lOUFVUX1BVUlBPU0VfVVJMOwor
ICAgIGNhc2UgSW5wdXRNZXRob2RTdGF0ZTo6UHVycG9zZTo6RW1haWw6CisgICAgICAgIHJldHVy
biBXRUJLSVRfSU5QVVRfUFVSUE9TRV9FTUFJTDsKKyAgICBjYXNlIElucHV0TWV0aG9kU3RhdGU6
OlB1cnBvc2U6OlBhc3N3b3JkOgorICAgICAgICByZXR1cm4gV0VCS0lUX0lOUFVUX1BVUlBPU0Vf
UEFTU1dPUkQ7CisgICAgfQorCisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30K
Kworc3RhdGljIFdlYktpdElucHV0SGludHMgdG9XZWJLaXRIaW50cyhjb25zdCBPcHRpb25TZXQ8
SW5wdXRNZXRob2RTdGF0ZTo6SGludD4mIGhpbnRzKQoreworICAgIHVuc2lnbmVkIHdrSGludHMg
PSAwOworICAgIGlmIChoaW50cy5jb250YWlucyhJbnB1dE1ldGhvZFN0YXRlOjpIaW50OjpTcGVs
bGNoZWNrKSkKKyAgICAgICAgd2tIaW50cyB8PSBXRUJLSVRfSU5QVVRfSElOVF9TUEVMTENIRUNL
OworICAgIGlmIChoaW50cy5jb250YWlucyhJbnB1dE1ldGhvZFN0YXRlOjpIaW50OjpMb3dlcmNh
c2UpKQorICAgICAgICB3a0hpbnRzIHw9IFdFQktJVF9JTlBVVF9ISU5UX0xPV0VSQ0FTRTsKKyAg
ICBpZiAoaGludHMuY29udGFpbnMoSW5wdXRNZXRob2RTdGF0ZTo6SGludDo6VXBwZXJjYXNlQ2hh
cnMpKQorICAgICAgICB3a0hpbnRzIHw9IFdFQktJVF9JTlBVVF9ISU5UX1VQUEVSQ0FTRV9DSEFS
UzsKKyAgICBpZiAoaGludHMuY29udGFpbnMoSW5wdXRNZXRob2RTdGF0ZTo6SGludDo6VXBwZXJj
YXNlV29yZHMpKQorICAgICAgICB3a0hpbnRzIHw9IFdFQktJVF9JTlBVVF9ISU5UX1VQUEVSQ0FT
RV9XT1JEUzsKKyAgICBpZiAoaGludHMuY29udGFpbnMoSW5wdXRNZXRob2RTdGF0ZTo6SGludDo6
VXBwZXJjYXNlU2VudGVuY2VzKSkKKyAgICAgICAgd2tIaW50cyB8PSBXRUJLSVRfSU5QVVRfSElO
VF9VUFBFUkNBU0VfU0VOVEVOQ0VTOworICAgIGlmIChoaW50cy5jb250YWlucyhJbnB1dE1ldGhv
ZFN0YXRlOjpIaW50OjpJbmhpYml0T25TY3JlZW5LZXlib2FyZCkpCisgICAgICAgIHdrSGludHMg
fD0gV0VCS0lUX0lOUFVUX0hJTlRfSU5ISUJJVF9PU0s7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0
PFdlYktpdElucHV0SGludHM+KHdrSGludHMpOworfQogdm9pZCBJbnB1dE1ldGhvZEZpbHRlcjo6
bm90aWZ5Rm9jdXNlZEluKCkKIHsKLSAgICBpZiAoIW1fZW5hYmxlZCB8fCAhbV9jb250ZXh0KQor
ICAgIGlmICghaXNFbmFibGVkKCkgfHwgIW1fY29udGV4dCkKICAgICAgICAgcmV0dXJuOwogCisg
ICAgZ19vYmplY3RfZnJlZXplX25vdGlmeShHX09CSkVDVChtX2NvbnRleHQuZ2V0KCkpKTsKKyAg
ICB3ZWJraXRfaW5wdXRfbWV0aG9kX2NvbnRleHRfc2V0X2lucHV0X3B1cnBvc2UobV9jb250ZXh0
LmdldCgpLCB0b1dlYktpdFB1cnBvc2UobV9zdGF0ZS0+cHVycG9zZSkpOworICAgIHdlYmtpdF9p
bnB1dF9tZXRob2RfY29udGV4dF9zZXRfaW5wdXRfaGludHMobV9jb250ZXh0LmdldCgpLCB0b1dl
YktpdEhpbnRzKG1fc3RhdGUtPmhpbnRzKSk7CisgICAgZ19vYmplY3RfdGhhd19ub3RpZnkoR19P
QkpFQ1QobV9jb250ZXh0LmdldCgpKSk7CiAgICAgd2Via2l0X2lucHV0X21ldGhvZF9jb250ZXh0
X25vdGlmeV9mb2N1c19pbihtX2NvbnRleHQuZ2V0KCkpOwogfQogCiB2b2lkIElucHV0TWV0aG9k
RmlsdGVyOjpub3RpZnlGb2N1c2VkT3V0KCkKIHsKLSAgICBpZiAoIW1fZW5hYmxlZCB8fCAhbV9j
b250ZXh0KQorICAgIGlmICghaXNFbmFibGVkKCkgfHwgIW1fY29udGV4dCkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgY2FuY2VsQ29tcG9zaXRpb24oKTsKQEAgLTE0Niw3ICsxODksNyBAQCB2b2lk
IElucHV0TWV0aG9kRmlsdGVyOjpub3RpZnlGb2N1c2VkT3V0KCkKIAogdm9pZCBJbnB1dE1ldGhv
ZEZpbHRlcjo6bm90aWZ5Q3Vyc29yUmVjdChjb25zdCBJbnRSZWN0JiBjdXJzb3JSZWN0KQogewot
ICAgIGlmICghbV9lbmFibGVkIHx8ICFtX2NvbnRleHQpCisgICAgaWYgKCFpc0VuYWJsZWQoKSB8
fCAhbV9jb250ZXh0KQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBEb24ndCBtb3ZlIHRoZSB3
aW5kb3cgdW5sZXNzIHRoZSBjdXJzb3IgYWN0dWFsbHkgbW92ZXMgbW9yZSB0aGFuIDEwCkBAIC0x
NjMsNyArMjA2LDcgQEAgdm9pZCBJbnB1dE1ldGhvZEZpbHRlcjo6bm90aWZ5Q3Vyc29yUmVjdChj
b25zdCBJbnRSZWN0JiBjdXJzb3JSZWN0KQogCiB2b2lkIElucHV0TWV0aG9kRmlsdGVyOjpwcmVl
ZGl0U3RhcnRlZCgpCiB7Ci0gICAgaWYgKCFtX2VuYWJsZWQpCisgICAgaWYgKCFpc0VuYWJsZWQo
KSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1fZmlsdGVyaW5nQ29udGV4dC5pc0FjdGl2
ZSkKQEAgLTE3NCw3ICsyMTcsNyBAQCB2b2lkIElucHV0TWV0aG9kRmlsdGVyOjpwcmVlZGl0U3Rh
cnRlZCgpCiAKIHZvaWQgSW5wdXRNZXRob2RGaWx0ZXI6OnByZWVkaXRDaGFuZ2VkKCkKIHsKLSAg
ICBpZiAoIW1fZW5hYmxlZCkKKyAgICBpZiAoIWlzRW5hYmxlZCgpKQogICAgICAgICByZXR1cm47
CiAKICAgICBpZiAobV9maWx0ZXJpbmdDb250ZXh0LmlzQWN0aXZlKQpAQCAtMjA4LDcgKzI1MSw3
IEBAIHZvaWQgSW5wdXRNZXRob2RGaWx0ZXI6OnByZWVkaXRDaGFuZ2VkKCkKIAogdm9pZCBJbnB1
dE1ldGhvZEZpbHRlcjo6cHJlZWRpdEZpbmlzaGVkKCkKIHsKLSAgICBpZiAoIW1fZW5hYmxlZCkK
KyAgICBpZiAoIWlzRW5hYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV9maWx0
ZXJpbmdDb250ZXh0LmlzQWN0aXZlKQpAQCAtMjI3LDcgKzI3MCw3IEBAIHZvaWQgSW5wdXRNZXRo
b2RGaWx0ZXI6OnByZWVkaXRGaW5pc2hlZCgpCiAKIHZvaWQgSW5wdXRNZXRob2RGaWx0ZXI6OmNv
bW1pdHRlZChjb25zdCBjaGFyKiBjb21wb3NpdGlvblN0cmluZykKIHsKLSAgICBpZiAoIW1fZW5h
YmxlZCkKKyAgICBpZiAoIWlzRW5hYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBtX2Nv
bXBvc2l0aW9uUmVzdWx0ID0gU3RyaW5nOjpmcm9tVVRGOChjb21wb3NpdGlvblN0cmluZyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JbnB1dE1ldGhvZEZp
bHRlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSW5wdXRNZXRob2RGaWx0
ZXIuaAppbmRleCBkNzIzZjM1YzcwMC4uMTIzMTAzOGE2ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0lucHV0TWV0aG9kRmlsdGVyLmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSW5wdXRNZXRob2RGaWx0ZXIuaApAQCAtMTksNiAr
MTksNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIklucHV0TWV0aG9kU3RhdGUuaCIK
ICNpbmNsdWRlIDxXZWJDb3JlL0NvbXBvc2l0aW9uVW5kZXJsaW5lLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9JbnRQb2ludC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgpAQCAtNDksNyAr
NTAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRDb250ZXh0KFdlYktpdElucHV0TWV0aG9kQ29u
dGV4dCopOwogICAgIFdlYktpdElucHV0TWV0aG9kQ29udGV4dCogY29udGV4dCgpIGNvbnN0IHsg
cmV0dXJuIG1fY29udGV4dC5nZXQoKTsgfQogCi0gICAgdm9pZCBzZXRFbmFibGVkKGJvb2wpOwor
ICAgIHZvaWQgc2V0U3RhdGUoT3B0aW9uYWw8SW5wdXRNZXRob2RTdGF0ZT4mJik7CiAKICNpZiBQ
TEFURk9STShHVEspCiAgICAgdXNpbmcgUGxhdGZvcm1FdmVudEtleSA9IEdka0V2ZW50S2V5OwpA
QCAtODAsMTIgKzgxLDEzIEBAIHByaXZhdGU6CiAgICAgdm9pZCBwcmVlZGl0RmluaXNoZWQoKTsK
ICAgICB2b2lkIGNvbW1pdHRlZChjb25zdCBjaGFyKik7CiAKKyAgICBib29sIGlzRW5hYmxlZCgp
IGNvbnN0IHsgcmV0dXJuICEhbV9zdGF0ZTsgfQogICAgIGJvb2wgaXNWaWV3Rm9jdXNlZCgpIGNv
bnN0OwogCiAgICAgV2ViQ29yZTo6SW50UmVjdCBwbGF0Zm9ybVRyYW5zZm9ybUN1cnNvclJlY3RU
b1ZpZXdDb29yZGluYXRlcyhjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7CiAgICAgYm9vbCBwbGF0
Zm9ybUV2ZW50S2V5SXNLZXlQcmVzcyhQbGF0Zm9ybUV2ZW50S2V5KikgY29uc3Q7CiAKLSAgICBi
b29sIG1fZW5hYmxlZCB7IGZhbHNlIH07CisgICAgT3B0aW9uYWw8SW5wdXRNZXRob2RTdGF0ZT4g
bV9zdGF0ZTsKICAgICBHUmVmUHRyPFdlYktpdElucHV0TWV0aG9kQ29udGV4dD4gbV9jb250ZXh0
OwogCiAgICAgc3RydWN0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9nbGliL1dlYktpdElucHV0TWV0aG9kQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXRJbnB1dE1ldGhvZENvbnRleHQuY3BwCmluZGV4IGNhZjc3MjFm
OTg1Li4xN2NjM2M5NDY2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0SW5wdXRNZXRob2RDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRJbnB1dE1ldGhvZENvbnRleHQuY3BwCkBAIC0yMCw4ICsy
MCwxMCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYktpdElucHV0TWV0aG9k
Q29udGV4dC5oIgogCisjaW5jbHVkZSAiV2ViS2l0RW51bVR5cGVzLmgiCiAjaW5jbHVkZSAiV2Vi
S2l0SW5wdXRNZXRob2RDb250ZXh0UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFdlYlZpZXcu
aCIKKyNpbmNsdWRlIDxnbGliL2dpMThuLWxpYi5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL1dURkdU
eXBlLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtNDQsNiArNDYsMTMgQEAgdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAgKiBTaW5jZTogMi4yOAogICovCiAKK2VudW0geworICAg
IFBST1BfMCwKKworICAgIFBST1BfSU5QVVRfUFVSUE9TRSwKKyAgICBQUk9QX0lOUFVUX0hJTlRT
Cit9OworCiBlbnVtIHsKICAgICBQUkVFRElUX1NUQVJURUQsCiAgICAgUFJFRURJVF9DSEFOR0VE
LApAQCAtMTE2LDYgKzEyNSw4IEBAIHZvaWQgd2Via2l0X2lucHV0X21ldGhvZF91bmRlcmxpbmVf
ZnJlZShXZWJLaXRJbnB1dE1ldGhvZFVuZGVybGluZSogdW5kZXJsaW5lKQogCiBzdHJ1Y3QgX1dl
YktpdElucHV0TWV0aG9kQ29udGV4dFByaXZhdGUgewogICAgIFdlYktpdFdlYlZpZXcqIHdlYlZp
ZXc7CisgICAgV2ViS2l0SW5wdXRQdXJwb3NlIHB1cnBvc2U7CisgICAgV2ViS2l0SW5wdXRIaW50
cyBoaW50czsKIH07CiAKIHN0YXRpYyBndWludCBzaWduYWxzW0xBU1RfU0lHTkFMXSA9IHsgMCwg
fTsKQEAgLTE1Myw4ICsxNjQsODAgQEAgV0VCS0lUX0RFRklORV9BQlNUUkFDVF9UWVBFKFdlYktp
dElucHV0TWV0aG9kQ29udGV4dCwgd2Via2l0X2lucHV0X21ldGhvZF9jb250ZXgKICAqIFNpbmNl
OiAyLjI4CiAgKi8KIAorc3RhdGljIHZvaWQgd2Via2l0SW5wdXRNZXRob2RDb250ZXh0U2V0UHJv
cGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wSWQsIGNvbnN0IEdWYWx1ZSogdmFsdWUs
IEdQYXJhbVNwZWMqIHBhcmFtU3BlYykKK3sKKyAgICBXZWJLaXRJbnB1dE1ldGhvZENvbnRleHQq
IGNvbnRleHQgPSBXRUJLSVRfSU5QVVRfTUVUSE9EX0NPTlRFWFQob2JqZWN0KTsKKworICAgIHN3
aXRjaCAocHJvcElkKSB7CisgICAgY2FzZSBQUk9QX0lOUFVUX1BVUlBPU0U6CisgICAgICAgIHdl
YmtpdF9pbnB1dF9tZXRob2RfY29udGV4dF9zZXRfaW5wdXRfcHVycG9zZShjb250ZXh0LCBzdGF0
aWNfY2FzdDxXZWJLaXRJbnB1dFB1cnBvc2U+KGdfdmFsdWVfZ2V0X2VudW0odmFsdWUpKSk7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9JTlBVVF9ISU5UUzoKKyAgICAgICAgd2Via2l0
X2lucHV0X21ldGhvZF9jb250ZXh0X3NldF9pbnB1dF9oaW50cyhjb250ZXh0LCBzdGF0aWNfY2Fz
dDxXZWJLaXRJbnB1dEhpbnRzPihnX3ZhbHVlX2dldF9mbGFncyh2YWx1ZSkpKTsKKyAgICAgICAg
YnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BF
UlRZX0lEKG9iamVjdCwgcHJvcElkLCBwYXJhbVNwZWMpOworICAgIH0KK30KKworc3RhdGljIHZv
aWQgd2Via2l0SW5wdXRNZXRob2RDb250ZXh0R2V0UHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBn
dWludCBwcm9wSWQsIEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBhcmFtU3BlYykKK3sKKyAg
ICBXZWJLaXRJbnB1dE1ldGhvZENvbnRleHQqIGNvbnRleHQgPSBXRUJLSVRfSU5QVVRfTUVUSE9E
X0NPTlRFWFQob2JqZWN0KTsKKworICAgIHN3aXRjaCAocHJvcElkKSB7CisgICAgY2FzZSBQUk9Q
X0lOUFVUX1BVUlBPU0U6CisgICAgICAgIGdfdmFsdWVfc2V0X2VudW0odmFsdWUsIHdlYmtpdF9p
bnB1dF9tZXRob2RfY29udGV4dF9nZXRfaW5wdXRfcHVycG9zZShjb250ZXh0KSk7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgUFJPUF9JTlBVVF9ISU5UUzoKKyAgICAgICAgZ192YWx1ZV9zZXRf
ZmxhZ3ModmFsdWUsIHdlYmtpdF9pbnB1dF9tZXRob2RfY29udGV4dF9nZXRfaW5wdXRfaGludHMo
Y29udGV4dCkpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBHX09CSkVD
VF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9wSWQsIHBhcmFtU3BlYyk7Cisg
ICAgfQorfQorCiBzdGF0aWMgdm9pZCB3ZWJraXRfaW5wdXRfbWV0aG9kX2NvbnRleHRfY2xhc3Nf
aW5pdChXZWJLaXRJbnB1dE1ldGhvZENvbnRleHRDbGFzcyoga2xhc3MpCiB7CisgICAgR09iamVj
dENsYXNzKiBnT2JqZWN0Q2xhc3MgPSBHX09CSkVDVF9DTEFTUyhrbGFzcyk7CisgICAgZ09iamVj
dENsYXNzLT5zZXRfcHJvcGVydHkgPSB3ZWJraXRJbnB1dE1ldGhvZENvbnRleHRTZXRQcm9wZXJ0
eTsKKyAgICBnT2JqZWN0Q2xhc3MtPmdldF9wcm9wZXJ0eSA9IHdlYmtpdElucHV0TWV0aG9kQ29u
dGV4dEdldFByb3BlcnR5OworCisgICAgLyoqCisgICAgICogV2ViS2l0SW5wdXRNZXRob2RDb250
ZXh0OjppbnB1dC1wdXJwb3NlOgorICAgICAqCisgICAgICogVGhlICNXZWJLaXRJbnB1dFB1cnBv
c2Ugb2YgdGhlIGlucHV0IGFzc29jaWF0ZWQgd2l0aCB0aGlzIGNvbnRleHQuCisgICAgICoKKyAg
ICAgKiBTaW5jZTogMi4yOAorICAgICAqLworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJv
cGVydHkoCisgICAgICAgIGdPYmplY3RDbGFzcywKKyAgICAgICAgUFJPUF9JTlBVVF9QVVJQT1NF
LAorICAgICAgICBnX3BhcmFtX3NwZWNfZW51bSgKKyAgICAgICAgICAgICJpbnB1dC1wdXJwb3Nl
IiwKKyAgICAgICAgICAgIF8oIklucHV0IFB1cnBvc2UiKSwKKyAgICAgICAgICAgIF8oIlRoZSBw
dXJwb3NlIG9mIHRoZSBpbnB1dCBhc3NvY2lhdGVkIiksCisgICAgICAgICAgICBXRUJLSVRfVFlQ
RV9JTlBVVF9QVVJQT1NFLAorICAgICAgICAgICAgV0VCS0lUX0lOUFVUX1BVUlBPU0VfRlJFRV9G
T1JNLAorICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURXUklURSkpOworCisgICAgLyoqCisg
ICAgICogV2ViS2l0SW5wdXRNZXRob2RDb250ZXh0OjppbnB1dC1oaW50czoKKyAgICAgKgorICAg
ICAqIFRoZSAjV2ViS2l0SW5wdXRIaW50cyBvZiB0aGUgaW5wdXQgYXNzb2NpYXRlZCB3aXRoIHRo
aXMgY29udGV4dC4KKyAgICAgKgorICAgICAqIFNpbmNlOiAyLjI4CisgICAgICovCisgICAgZ19v
YmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKKyAgICAgICAgZ09iamVjdENsYXNzLAorICAg
ICAgICBQUk9QX0lOUFVUX0hJTlRTLAorICAgICAgICBnX3BhcmFtX3NwZWNfZmxhZ3MoCisgICAg
ICAgICAgICAiaW5wdXQtaGludHMiLAorICAgICAgICAgICAgXygiSW5wdXQgSGludHMiKSwKKyAg
ICAgICAgICAgIF8oIlRoZSBoaW50cyBvZiB0aGUgaW5wdXQgYXNzb2NpYXRlZCIpLAorICAgICAg
ICAgICAgV0VCS0lUX1RZUEVfSU5QVVRfSElOVFMsCisgICAgICAgICAgICBXRUJLSVRfSU5QVVRf
SElOVF9OT05FLAorICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURXUklURSkpOworCiAgICAg
LyoqCiAgICAgICogV2ViS2l0SW5wdXRNZXRob2RDb250ZXh0OjpwcmVlZGl0LXN0YXJ0ZWQKICAg
ICAgKiBAY29udGV4dDogdGhlICNXZWJLaXRJbnB1dE1ldGhvZENvbnRleHQgb24gd2hpY2ggdGhl
IHNpZ25hbCBpcyBlbWl0dGVkCkBAIC0zNTksMyArNDQyLDc3IEBAIHZvaWQgd2Via2l0X2lucHV0
X21ldGhvZF9jb250ZXh0X3Jlc2V0KFdlYktpdElucHV0TWV0aG9kQ29udGV4dCogY29udGV4dCkK
ICAgICBpZiAoaW1DbGFzcy0+cmVzZXQpCiAgICAgICAgIGltQ2xhc3MtPnJlc2V0KGNvbnRleHQp
OwogfQorCisvKioKKyAqIHdlYmtpdF9pbnB1dF9tZXRob2RfY29udGV4dF9nZXRfaW5wdXRfcHVy
cG9zZToKKyAqIEBjb250ZXh0OiBhICNXZWJLaXRJbnB1dE1ldGhvZENvbnRleHQKKyAqCisgKiBH
ZXQgdGhlIHZhbHVlIG9mIHRoZSAjV2ViS2l0SW5wdXRNZXRob2RDb250ZXh0OmlucHV0LXB1cnBv
c2UgcHJvcGVydHkuCisgKgorICogUmV0dXJuczogdGhlICNXZWJLaXRJbnB1dFB1cnBvc2Ugb2Yg
dGhlIGlucHV0IGFzc29jaWF0ZWQgd2l0aCBAY29udGV4dAorICoKKyAqIFNpbmNlOiAyLjI4Cisg
Ki8KK1dlYktpdElucHV0UHVycG9zZSB3ZWJraXRfaW5wdXRfbWV0aG9kX2NvbnRleHRfZ2V0X2lu
cHV0X3B1cnBvc2UoV2ViS2l0SW5wdXRNZXRob2RDb250ZXh0KiBjb250ZXh0KQoreworICAgIGdf
cmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19JTlBVVF9NRVRIT0RfQ09OVEVYVChjb250ZXh0
KSwgV0VCS0lUX0lOUFVUX1BVUlBPU0VfRlJFRV9GT1JNKTsKKworICAgIHJldHVybiBjb250ZXh0
LT5wcml2LT5wdXJwb3NlOworfQorCisvKioKKyAqIHdlYmtpdF9pbnB1dF9tZXRob2RfY29udGV4
dF9zZXRfaW5wdXRfcHVycG9zZToKKyAqIEBjb250ZXh0OiBhICNXZWJLaXRJbnB1dE1ldGhvZENv
bnRleHQKKyAqIEBwdXJwb3NlOiBhICNXZWJLaXRJbnB1dFB1cnBvc2UKKyAqCisgKiBTZXQgdGhl
IHZhbHVlIG9mIHRoZSAjV2ViS2l0SW5wdXRNZXRob2RDb250ZXh0OmlucHV0LXB1cnBvc2UgcHJv
cGVydHkuCisgKgorICogU2luY2U6IDIuMjgKKyAqLwordm9pZCB3ZWJraXRfaW5wdXRfbWV0aG9k
X2NvbnRleHRfc2V0X2lucHV0X3B1cnBvc2UoV2ViS2l0SW5wdXRNZXRob2RDb250ZXh0KiBjb250
ZXh0LCBXZWJLaXRJbnB1dFB1cnBvc2UgcHVycG9zZSkKK3sKKyAgICBnX3JldHVybl9pZl9mYWls
KFdFQktJVF9JU19JTlBVVF9NRVRIT0RfQ09OVEVYVChjb250ZXh0KSk7CisKKyAgICBpZiAoY29u
dGV4dC0+cHJpdi0+cHVycG9zZSA9PSBwdXJwb3NlKQorICAgICAgICByZXR1cm47CisKKyAgICBj
b250ZXh0LT5wcml2LT5wdXJwb3NlID0gcHVycG9zZTsKKyAgICBnX29iamVjdF9ub3RpZnkoR19P
QkpFQ1QoY29udGV4dCksICJpbnB1dC1wdXJwb3NlIik7Cit9CisKKy8qKgorICogd2Via2l0X2lu
cHV0X21ldGhvZF9jb250ZXh0X2dldF9pbnB1dF9oaW50czoKKyAqIEBjb250ZXh0OiBhICNXZWJL
aXRJbnB1dE1ldGhvZENvbnRleHQKKyAqCisgKiBHZXQgdGhlIHZhbHVlIG9mIHRoZSAjV2ViS2l0
SW5wdXRNZXRob2RDb250ZXh0OmlucHV0LWhpbnRzIHByb3BlcnR5LgorICoKKyAqIFJldHVybnM6
IHRoZSAjV2ViS2l0SW5wdXRIaW50cyBvZiB0aGUgaW5wdXQgYXNzb2NpYXRlZCB3aXRoIEBjb250
ZXh0CisgKgorICogU2luY2U6IDIuMjgKKyAqLworV2ViS2l0SW5wdXRIaW50cyB3ZWJraXRfaW5w
dXRfbWV0aG9kX2NvbnRleHRfZ2V0X2lucHV0X2hpbnRzKFdlYktpdElucHV0TWV0aG9kQ29udGV4
dCogY29udGV4dCkKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfSU5QVVRf
TUVUSE9EX0NPTlRFWFQoY29udGV4dCksIFdFQktJVF9JTlBVVF9ISU5UX05PTkUpOworCisgICAg
cmV0dXJuIGNvbnRleHQtPnByaXYtPmhpbnRzOworfQorCisvKgorICogd2Via2l0X2lucHV0X21l
dGhvZF9jb250ZXh0X3NldF9pbnB1dF9oaW50czoKKyAqIEBjb250ZXh0OiBhICNXZWJLaXRJbnB1
dE1ldGhvZENvbnRleHQKKyAqIEBoaW50czogYSAjV2ViS2l0SW5wdXRIaW50cworICoKKyAqIFNl
dCB0aGUgdmFsdWUgb2YgdGhlICNXZWJLaXRJbnB1dE1ldGhvZENvbnRleHQ6aW5wdXQtaGludHMg
cHJvcGVydHkuCisgKgorICogU2luY2U6IDIuMjgKKyAqLwordm9pZCB3ZWJraXRfaW5wdXRfbWV0
aG9kX2NvbnRleHRfc2V0X2lucHV0X2hpbnRzKFdlYktpdElucHV0TWV0aG9kQ29udGV4dCogY29u
dGV4dCwgV2ViS2l0SW5wdXRIaW50cyBoaW50cykKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdF
QktJVF9JU19JTlBVVF9NRVRIT0RfQ09OVEVYVChjb250ZXh0KSk7CisKKyAgICBpZiAoY29udGV4
dC0+cHJpdi0+aGludHMgPT0gaGludHMpCisgICAgICAgIHJldHVybjsKKworICAgIGNvbnRleHQt
PnByaXYtPmhpbnRzID0gaGludHM7CisgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKGNvbnRl
eHQpLCAiaW5wdXQtaGludHMiKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0SW5wdXRNZXRob2RDb250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdElucHV0TWV0aG9kQ29udGV4dC5oCmluZGV4IGI2OWYzMTAx
MTMxLi5jZjIxMWFmZWUyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRJbnB1dE1ldGhvZENvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdElucHV0TWV0aG9kQ29udGV4dC5oCkBAIC0zOSw2ICszOSw1NCBA
QCBHX0JFR0lOX0RFQ0xTCiAKICNkZWZpbmUgV0VCS0lUX1RZUEVfSU5QVVRfTUVUSE9EX1VOREVS
TElORSAgICAgICAgICAod2Via2l0X2lucHV0X21ldGhvZF91bmRlcmxpbmVfZ2V0X3R5cGUoKSkK
IAorLyoqCisgKiBXZWJLaXRJbnB1dFB1cnBvc2U6CisgKiBAV0VCS0lUX0lOUFVUX1BVUlBPU0Vf
RlJFRV9GT1JNOiBFZGl0YWJsZSBlbGVtZW50IGV4cGVjdHMgYW55IGNoYXJhY3RlcnMKKyAqIEBX
RUJLSVRfSU5QVVRfUFVSUE9TRV9ESUdJVFM6IEVkaXRhYmxlIGVsZW1lbnQgZXhwZWN0cyBkaWdp
dHMKKyAqIEBXRUJLSVRfSU5QVVRfUFVSUE9TRV9OVU1CRVI6IEVkaXRhYmxlIGVsZW1lbnQgZXhw
ZWN0cyBhIG51bWJlcgorICogQFdFQktJVF9JTlBVVF9QVVJQT1NFX1BIT05FOiBFZGl0YWJsZSBl
bGVtZW50IGV4cGVjdHMgYSB0ZWxlcGhvbmUKKyAqIEBXRUJLSVRfSU5QVVRfUFVSUE9TRV9VUkw6
IEVkaXRhYmxlIGVsZW1lbnQgZXhwZWN0cyBhIFVSTAorICogQFdFQktJVF9JTlBVVF9QVVJQT1NF
X0VNQUlMOiBFZGl0YWJsZSBlbGVtZW50IGV4cGVjdHMgYW4gZW1haWwKKyAqIEBXRUJLSVRfSU5Q
VVRfUFVSUE9TRV9QQVNTV09SRDogRWRpdGFibGUgZWxlbWVudCBleHBlY3RzIGEgcGFzc3dvcmQK
KyAqCisgKiBFbnVtIHZhbHVlcyB1c2VkIHRvIGRlc2NyaWJlIHRoZSBwcmltYXJ5IHB1cnBvc2Ug
b2YgdGhlIGFjdGl2ZSBlZGl0YWJsZSBlbGVtZW50LgorICoKKyAqIFNpbmNlOiAyLjI4CisgKi8K
K3R5cGVkZWYgZW51bSB7CisgICAgV0VCS0lUX0lOUFVUX1BVUlBPU0VfRlJFRV9GT1JNLAorICAg
IFdFQktJVF9JTlBVVF9QVVJQT1NFX0RJR0lUUywKKyAgICBXRUJLSVRfSU5QVVRfUFVSUE9TRV9O
VU1CRVIsCisgICAgV0VCS0lUX0lOUFVUX1BVUlBPU0VfUEhPTkUsCisgICAgV0VCS0lUX0lOUFVU
X1BVUlBPU0VfVVJMLAorICAgIFdFQktJVF9JTlBVVF9QVVJQT1NFX0VNQUlMLAorICAgIFdFQktJ
VF9JTlBVVF9QVVJQT1NFX1BBU1NXT1JECit9IFdlYktpdElucHV0UHVycG9zZTsKKworLyoqCisg
KiBXZWJLaXRJbnB1dEhpbnRzOgorICogQFdFQktJVF9JTlBVVF9ISU5UX05PTkU6IE5vIHNwZWNp
YWwgYmVoYXZpb3Igc3VnZ2VzdGVkCisgKiBAV0VCS0lUX0lOUFVUX0hJTlRfU1BFTExDSEVDSzog
U3VnZ2VzdCBzcGVsbCBjaGVja2luZworICogQFdFQktJVF9JTlBVVF9ISU5UX0xPV0VSQ0FTRTog
U3VnZ2VzdCB0byBub3QgYXV0b2NhcGl0bGl6ZQorICogQFdFQktJVF9JTlBVVF9ISU5UX1VQUEVS
Q0FTRV9DSEFSUzogU3VnZ2VzdCB0byBjYXBpdGFsaXplIGFsbCB0ZXh0CisgKiBAV0VCS0lUX0lO
UFVUX0hJTlRfVVBQRVJDQVNFX1dPUkRTOiBTdWdnZXN0IHRvIGNhcGl0YWxpemUgdGhlIGZpcnN0
IGNoYXJhY3RlciBvZiBlYWNoIHdvcmQKKyAqIEBXRUJLSVRfSU5QVVRfSElOVF9VUFBFUkNBU0Vf
U0VOVEVOQ0VTOiBTdWdnZXN0IHRvIGNhcGl0YWxpemUgdGhlIGZpcnN0IHdvcmQgb2YgZWFjaCBz
ZW50ZW5jZQorICogQFdFQktJVF9JTlBVVF9ISU5UX0lOSElCSVRfT1NLOiBTdWdnZXN0IHRvIG5v
dCBzaG93IGFuIG9uc2NyZWVuIGtleWJvYXJkCisgKgorICogRW51bSB2YWx1ZXMgdXNlZCB0byBk
ZXNjcmliZSBoaW50cyB0aGF0IG1pZ2h0IGJlIHRha2VuIGludG8gYWNjb3VudCBieSBpbnB1dCBt
ZXRob2RzLgorICoKKyAqIFNpbmNlOiAyLjI4CisgKi8KK3R5cGVkZWYgZW51bSB7CisgICAgV0VC
S0lUX0lOUFVUX0hJTlRfTk9ORSAgICAgICAgICAgICAgICA9IDAsCisgICAgV0VCS0lUX0lOUFVU
X0hJTlRfU1BFTExDSEVDSyAgICAgICAgICA9IDEgPDwgMCwKKyAgICBXRUJLSVRfSU5QVVRfSElO
VF9MT1dFUkNBU0UgICAgICAgICAgID0gMSA8PCAxLAorICAgIFdFQktJVF9JTlBVVF9ISU5UX1VQ
UEVSQ0FTRV9DSEFSUyAgICAgPSAxIDw8IDIsCisgICAgV0VCS0lUX0lOUFVUX0hJTlRfVVBQRVJD
QVNFX1dPUkRTICAgICA9IDEgPDwgMywKKyAgICBXRUJLSVRfSU5QVVRfSElOVF9VUFBFUkNBU0Vf
U0VOVEVOQ0VTID0gMSA8PCA0LAorICAgIFdFQktJVF9JTlBVVF9ISU5UX0lOSElCSVRfT1NLICAg
ICAgICAgPSAxIDw8IDUKK30gV2ViS2l0SW5wdXRIaW50czsKKwogdHlwZWRlZiBzdHJ1Y3QgX1dl
YktpdElucHV0TWV0aG9kQ29udGV4dCAgICAgICAgV2ViS2l0SW5wdXRNZXRob2RDb250ZXh0Owog
dHlwZWRlZiBzdHJ1Y3QgX1dlYktpdElucHV0TWV0aG9kQ29udGV4dENsYXNzICAgV2ViS2l0SW5w
dXRNZXRob2RDb250ZXh0Q2xhc3M7CiB0eXBlZGVmIHN0cnVjdCBfV2ViS2l0SW5wdXRNZXRob2RD
b250ZXh0UHJpdmF0ZSBXZWJLaXRJbnB1dE1ldGhvZENvbnRleHRQcml2YXRlOwpAQCAtMTQwLDYg
KzE4OCwyMCBAQCBXRUJLSVRfQVBJIHZvaWQKIHdlYmtpdF9pbnB1dF9tZXRob2RfdW5kZXJsaW5l
X3NldF9jb2xvciAgICAgICAgKFdlYktpdElucHV0TWV0aG9kVW5kZXJsaW5lICp1bmRlcmxpbmUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBH
ZGtSR0JBICAgICAgICAgICAgICAqcmdiYSk7CiAKK1dFQktJVF9BUEkgV2ViS2l0SW5wdXRQdXJw
b3NlCit3ZWJraXRfaW5wdXRfbWV0aG9kX2NvbnRleHRfZ2V0X2lucHV0X3B1cnBvc2UgIChXZWJL
aXRJbnB1dE1ldGhvZENvbnRleHQgICAqY29udGV4dCk7CisKK1dFQktJVF9BUEkgdm9pZAord2Vi
a2l0X2lucHV0X21ldGhvZF9jb250ZXh0X3NldF9pbnB1dF9wdXJwb3NlICAoV2ViS2l0SW5wdXRN
ZXRob2RDb250ZXh0ICAgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBXZWJLaXRJbnB1dFB1cnBvc2UgICAgICAgICAgcHVycG9zZSk7CisK
K1dFQktJVF9BUEkgV2ViS2l0SW5wdXRIaW50cword2Via2l0X2lucHV0X21ldGhvZF9jb250ZXh0
X2dldF9pbnB1dF9oaW50cyAgICAoV2ViS2l0SW5wdXRNZXRob2RDb250ZXh0ICAgKmNvbnRleHQp
OworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9pbnB1dF9tZXRob2RfY29udGV4dF9zZXRfaW5w
dXRfaGludHMgICAgKFdlYktpdElucHV0TWV0aG9kQ29udGV4dCAgICpjb250ZXh0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0SW5wdXRIaW50
cyAgICAgICAgICAgIGhpbnRzKTsKKwogCiBHX0VORF9ERUNMUwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdElucHV0TWV0aG9kQ29udGV4dEltcGxH
dGsuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRJbnB1dE1ldGhv
ZENvbnRleHRJbXBsR3RrLmNwcAppbmRleCA5NDUzODYwMTQ3Yy4uMTkxZjk4ZDdhOGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0SW5wdXRNZXRob2RD
b250ZXh0SW1wbEd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRJbnB1dE1ldGhvZENvbnRleHRJbXBsR3RrLmNwcApAQCAtMzEsNiArMzEsNTYgQEAgc3Ry
dWN0IF9XZWJLaXRJbnB1dE1ldGhvZENvbnRleHRJbXBsR3RrUHJpdmF0ZSB7CiAKIFdFQktJVF9E
RUZJTkVfVFlQRShXZWJLaXRJbnB1dE1ldGhvZENvbnRleHRJbXBsR3RrLCB3ZWJraXRfaW5wdXRf
bWV0aG9kX2NvbnRleHRfaW1wbF9ndGssIFdFQktJVF9UWVBFX0lOUFVUX01FVEhPRF9DT05URVhU
KQogCitzdGF0aWMgR3RrSW5wdXRQdXJwb3NlIHRvR3RrSW5wdXRQdXJwb3NlKFdlYktpdElucHV0
UHVycG9zZSBwdXJwb3NlKQoreworICAgIHN3aXRjaCAocHVycG9zZSkgeworICAgIGNhc2UgV0VC
S0lUX0lOUFVUX1BVUlBPU0VfRlJFRV9GT1JNOgorICAgICAgICByZXR1cm4gR1RLX0lOUFVUX1BV
UlBPU0VfRlJFRV9GT1JNOworICAgIGNhc2UgV0VCS0lUX0lOUFVUX1BVUlBPU0VfRElHSVRTOgor
ICAgICAgICByZXR1cm4gR1RLX0lOUFVUX1BVUlBPU0VfRElHSVRTOworICAgIGNhc2UgV0VCS0lU
X0lOUFVUX1BVUlBPU0VfTlVNQkVSOgorICAgICAgICByZXR1cm4gR1RLX0lOUFVUX1BVUlBPU0Vf
TlVNQkVSOworICAgIGNhc2UgV0VCS0lUX0lOUFVUX1BVUlBPU0VfUEhPTkU6CisgICAgICAgIHJl
dHVybiBHVEtfSU5QVVRfUFVSUE9TRV9QSE9ORTsKKyAgICBjYXNlIFdFQktJVF9JTlBVVF9QVVJQ
T1NFX1VSTDoKKyAgICAgICAgcmV0dXJuIEdUS19JTlBVVF9QVVJQT1NFX1VSTDsKKyAgICBjYXNl
IFdFQktJVF9JTlBVVF9QVVJQT1NFX0VNQUlMOgorICAgICAgICByZXR1cm4gR1RLX0lOUFVUX1BV
UlBPU0VfRU1BSUw7CisgICAgY2FzZSBXRUJLSVRfSU5QVVRfUFVSUE9TRV9QQVNTV09SRDoKKyAg
ICAgICAgcmV0dXJuIEdUS19JTlBVVF9QVVJQT1NFX1BBU1NXT1JEOworICAgIH0KKworICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK3N0YXRpYyBHdGtJbnB1dEhpbnRzIHRv
R3RrSW5wdXRIaW50cyhXZWJLaXRJbnB1dEhpbnRzIGhpbnRzKQoreworICAgIHVuc2lnbmVkIGd0
a0hpbnRzID0gMDsKKyAgICBpZiAoaGludHMgJiBXRUJLSVRfSU5QVVRfSElOVF9TUEVMTENIRUNL
KQorICAgICAgICBndGtIaW50cyB8PSBHVEtfSU5QVVRfSElOVF9TUEVMTENIRUNLOworICAgIGlm
IChoaW50cyAmIFdFQktJVF9JTlBVVF9ISU5UX0xPV0VSQ0FTRSkKKyAgICAgICAgZ3RrSGludHMg
fD0gR1RLX0lOUFVUX0hJTlRfTE9XRVJDQVNFOworICAgIGlmIChoaW50cyAmIFdFQktJVF9JTlBV
VF9ISU5UX1VQUEVSQ0FTRV9DSEFSUykKKyAgICAgICAgZ3RrSGludHMgfD0gR1RLX0lOUFVUX0hJ
TlRfVVBQRVJDQVNFX0NIQVJTOworICAgIGlmIChoaW50cyAmIFdFQktJVF9JTlBVVF9ISU5UX1VQ
UEVSQ0FTRV9XT1JEUykKKyAgICAgICAgZ3RrSGludHMgfD0gR1RLX0lOUFVUX0hJTlRfVVBQRVJD
QVNFX1dPUkRTOworICAgIGlmIChoaW50cyAmIFdFQktJVF9JTlBVVF9ISU5UX1VQUEVSQ0FTRV9T
RU5URU5DRVMpCisgICAgICAgIGd0a0hpbnRzIHw9IEdUS19JTlBVVF9ISU5UX1VQUEVSQ0FTRV9T
RU5URU5DRVM7CisgICAgaWYgKGhpbnRzICYgV0VCS0lUX0lOUFVUX0hJTlRfSU5ISUJJVF9PU0sp
CisgICAgICAgIGd0a0hpbnRzIHw9IEdUS19JTlBVVF9ISU5UX0lOSElCSVRfT1NLOworICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxHdGtJbnB1dEhpbnRzPihndGtIaW50cyk7Cit9CisKK3N0YXRpYyB2
b2lkIGlucHV0UHVycG9zZUNoYW5nZWRDYWxsYmFjayhXZWJLaXRJbnB1dE1ldGhvZENvbnRleHRJ
bXBsR3RrKiBjb250ZXh0KQoreworICAgIGdfb2JqZWN0X3NldChjb250ZXh0LT5wcml2LT5jb250
ZXh0LmdldCgpLCAiaW5wdXQtcHVycG9zZSIsIHRvR3RrSW5wdXRQdXJwb3NlKHdlYmtpdF9pbnB1
dF9tZXRob2RfY29udGV4dF9nZXRfaW5wdXRfcHVycG9zZShXRUJLSVRfSU5QVVRfTUVUSE9EX0NP
TlRFWFQoY29udGV4dCkpKSwgbnVsbHB0cik7Cit9CisKK3N0YXRpYyB2b2lkIGlucHV0SGludHND
aGFuZ2VkQ2FsbGJhY2soV2ViS2l0SW5wdXRNZXRob2RDb250ZXh0SW1wbEd0ayogY29udGV4dCkK
K3sKKyAgICBnX29iamVjdF9zZXQoY29udGV4dC0+cHJpdi0+Y29udGV4dC5nZXQoKSwgImlucHV0
LWhpbnRzIiwgdG9HdGtJbnB1dEhpbnRzKHdlYmtpdF9pbnB1dF9tZXRob2RfY29udGV4dF9nZXRf
aW5wdXRfaGludHMoV0VCS0lUX0lOUFVUX01FVEhPRF9DT05URVhUKGNvbnRleHQpKSksIG51bGxw
dHIpOworfQorCiBzdGF0aWMgdm9pZCBjb250ZXh0UHJlZWRpdFN0YXJ0Q2FsbGJhY2soV2ViS2l0
SW5wdXRNZXRob2RDb250ZXh0SW1wbEd0ayogY29udGV4dCkKIHsKICAgICBnX3NpZ25hbF9lbWl0
X2J5X25hbWUoY29udGV4dCwgInByZWVkaXQtc3RhcnRlZCIsIG51bGxwdHIpOwpAQCAtNTUsNiAr
MTA1LDkgQEAgc3RhdGljIHZvaWQgd2Via2l0SW5wdXRNZXRob2RDb250ZXh0SW1wbEd0a0NvbnN0
cnVjdGVkKEdPYmplY3QqIG9iamVjdCkKIHsKICAgICBHX09CSkVDVF9DTEFTUyh3ZWJraXRfaW5w
dXRfbWV0aG9kX2NvbnRleHRfaW1wbF9ndGtfcGFyZW50X2NsYXNzKS0+Y29uc3RydWN0ZWQob2Jq
ZWN0KTsKIAorICAgIGdfc2lnbmFsX2Nvbm5lY3Rfc3dhcHBlZChvYmplY3QsICJub3RpZnk6Omlu
cHV0LXB1cnBvc2UiLCBHX0NBTExCQUNLKGlucHV0UHVycG9zZUNoYW5nZWRDYWxsYmFjayksIG9i
amVjdCk7CisgICAgZ19zaWduYWxfY29ubmVjdF9zd2FwcGVkKG9iamVjdCwgIm5vdGlmeTo6aW5w
dXQtaGludHMiLCBHX0NBTExCQUNLKGlucHV0SGludHNDaGFuZ2VkQ2FsbGJhY2spLCBvYmplY3Qp
OworCiAgICAgYXV0byogcHJpdiA9IFdFQktJVF9JTlBVVF9NRVRIT0RfQ09OVEVYVF9JTVBMX0dU
SyhvYmplY3QpLT5wcml2OwogICAgIHByaXYtPmNvbnRleHQgPSBhZG9wdEdSZWYoZ3RrX2ltX211
bHRpY29udGV4dF9uZXcoKSk7CiAgICAgZ19zaWduYWxfY29ubmVjdF9vYmplY3QocHJpdi0+Y29u
dGV4dC5nZXQoKSwgInByZWVkaXQtc3RhcnQiLCBHX0NBTExCQUNLKGNvbnRleHRQcmVlZGl0U3Rh
cnRDYWxsYmFjayksIG9iamVjdCwgR19DT05ORUNUX1NXQVBQRUQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcAppbmRleCA5
NDRkYjJlMjYzMS4uMGYxNDdlZDliZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCkBAIC0xNjY2LDkgKzE2NjYsOSBA
QCBib29sIHdlYmtpdFdlYlZpZXdCYXNlSXNJbldpbmRvdyhXZWJLaXRXZWJWaWV3QmFzZSogd2Vi
Vmlld0Jhc2UpCiAgICAgcmV0dXJuIHdlYlZpZXdCYXNlLT5wcml2LT5hY3Rpdml0eVN0YXRlLmNv
bnRhaW5zKEFjdGl2aXR5U3RhdGU6OklzSW5XaW5kb3cpOwogfQogCi12b2lkIHdlYmtpdFdlYlZp
ZXdCYXNlU2V0SW5wdXRNZXRob2RTdGF0ZShXZWJLaXRXZWJWaWV3QmFzZSogd2Via2l0V2ViVmll
d0Jhc2UsIGJvb2wgZW5hYmxlZCkKK3ZvaWQgd2Via2l0V2ViVmlld0Jhc2VTZXRJbnB1dE1ldGhv
ZFN0YXRlKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJraXRXZWJWaWV3QmFzZSwgT3B0aW9uYWw8SW5w
dXRNZXRob2RTdGF0ZT4mJiBzdGF0ZSkKIHsKLSAgICB3ZWJraXRXZWJWaWV3QmFzZS0+cHJpdi0+
aW5wdXRNZXRob2RGaWx0ZXIuc2V0RW5hYmxlZChlbmFibGVkKTsKKyAgICB3ZWJraXRXZWJWaWV3
QmFzZS0+cHJpdi0+aW5wdXRNZXRob2RGaWx0ZXIuc2V0U3RhdGUoV1RGTW92ZShzdGF0ZSkpOwog
fQogCiB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlVXBkYXRlVGV4dElucHV0U3RhdGUoV2ViS2l0V2Vi
Vmlld0Jhc2UqIHdlYmtpdFdlYlZpZXdCYXNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlLmgKaW5kZXggZDY1
YTYzYzFkZGEuLjFkZmUxODE2ZTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlLmgKQEAgLTMwLDYgKzMw
LDcgQEAKICNpbmNsdWRlICJBUElQYWdlQ29uZmlndXJhdGlvbi5oIgogI2luY2x1ZGUgIkRyYWdB
bmREcm9wSGFuZGxlci5oIgogI2luY2x1ZGUgIkdlc3R1cmVDb250cm9sbGVyLmgiCisjaW5jbHVk
ZSAiSW5wdXRNZXRob2RTdGF0ZS5oIgogI2luY2x1ZGUgIlNhbWVEb2N1bWVudE5hdmlnYXRpb25U
eXBlLmgiCiAjaW5jbHVkZSAiVmlld0dlc3R1cmVDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiVmll
d1NuYXBzaG90U3RvcmUuaCIKQEAgLTU1LDcgKzU2LDcgQEAgdm9pZCB3ZWJraXRXZWJWaWV3QmFz
ZVNldEluc3BlY3RvclZpZXdTaXplKFdlYktpdFdlYlZpZXdCYXNlKiwgdW5zaWduZWQgc2l6ZSk7
CiB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlU2V0QWN0aXZlQ29udGV4dE1lbnVQcm94eShXZWJLaXRX
ZWJWaWV3QmFzZSosIFdlYktpdDo6V2ViQ29udGV4dE1lbnVQcm94eUd0ayopOwogV2ViS2l0OjpX
ZWJDb250ZXh0TWVudVByb3h5R3RrKiB3ZWJraXRXZWJWaWV3QmFzZUdldEFjdGl2ZUNvbnRleHRN
ZW51UHJveHkoV2ViS2l0V2ViVmlld0Jhc2UqKTsKIEdka0V2ZW50KiB3ZWJraXRXZWJWaWV3QmFz
ZVRha2VDb250ZXh0TWVudUV2ZW50KFdlYktpdFdlYlZpZXdCYXNlKik7Ci12b2lkIHdlYmtpdFdl
YlZpZXdCYXNlU2V0SW5wdXRNZXRob2RTdGF0ZShXZWJLaXRXZWJWaWV3QmFzZSosIGJvb2wgZW5h
YmxlZCk7Cit2b2lkIHdlYmtpdFdlYlZpZXdCYXNlU2V0SW5wdXRNZXRob2RTdGF0ZShXZWJLaXRX
ZWJWaWV3QmFzZSosIE9wdGlvbmFsPFdlYktpdDo6SW5wdXRNZXRob2RTdGF0ZT4mJik7CiB2b2lk
IHdlYmtpdFdlYlZpZXdCYXNlVXBkYXRlVGV4dElucHV0U3RhdGUoV2ViS2l0V2ViVmlld0Jhc2Uq
KTsKIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VTZXRDb250ZW50c1NpemUoV2ViS2l0V2ViVmlld0Jh
c2UqLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAtc2VjdGlv
bnMudHh0CmluZGV4IGYxNDcxYjU1MWI5Li41MjA2OTgwOGJkZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4
dAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00
LjAtc2VjdGlvbnMudHh0CkBAIC0xNTYwLDYgKzE1NjAsOCBAQCBXRUJLSVRfVFlQRV9HRU9MT0NB
VElPTl9QT1NJVElPTgogPFNFQ1RJT04+CiA8RklMRT5XZWJLaXRJbnB1dE1ldGhvZENvbnRleHQ8
L0ZJTEU+CiBXZWJLaXRJbnB1dE1ldGhvZENvbnRleHQKK1dlYktpdElucHV0UHVycG9zZQorV2Vi
S2l0SW5wdXRIaW50cwogd2Via2l0X2lucHV0X21ldGhvZF9jb250ZXh0X3NldF9lbmFibGVfcHJl
ZWRpdAogd2Via2l0X2lucHV0X21ldGhvZF9jb250ZXh0X2dldF9wcmVlZGl0CiB3ZWJraXRfaW5w
dXRfbWV0aG9kX2NvbnRleHRfZmlsdGVyX2tleV9ldmVudApAQCAtMTU2Nyw2ICsxNTY5LDEwIEBA
IHdlYmtpdF9pbnB1dF9tZXRob2RfY29udGV4dF9ub3RpZnlfZm9jdXNfaW4KIHdlYmtpdF9pbnB1
dF9tZXRob2RfY29udGV4dF9ub3RpZnlfZm9jdXNfb3V0CiB3ZWJraXRfaW5wdXRfbWV0aG9kX2Nv
bnRleHRfbm90aWZ5X2N1cnNvcl9hcmVhCiB3ZWJraXRfaW5wdXRfbWV0aG9kX2NvbnRleHRfcmVz
ZXQKK3dlYmtpdF9pbnB1dF9tZXRob2RfY29udGV4dF9nZXRfaW5wdXRfcHVycG9zZQord2Via2l0
X2lucHV0X21ldGhvZF9jb250ZXh0X3NldF9pbnB1dF9wdXJwb3NlCit3ZWJraXRfaW5wdXRfbWV0
aG9kX2NvbnRleHRfZ2V0X2lucHV0X2hpbnRzCit3ZWJraXRfaW5wdXRfbWV0aG9kX2NvbnRleHRf
c2V0X2lucHV0X2hpbnRzCiAKIDxTVUJTRUNUSU9OIFVuZGVybGluZT4KIFdlYktpdElucHV0TWV0
aG9kVW5kZXJsaW5lCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3Bl
L1BhZ2VDbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvUGFn
ZUNsaWVudEltcGwuY3BwCmluZGV4IGRhNGE5NTI1N2VmLi41OTJkNzMzNDk5OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9QYWdlQ2xpZW50SW1wbC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9QYWdlQ2xpZW50SW1wbC5jcHAKQEAg
LTQzMCw5ICs0MzAsOSBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpzZW5kTWVzc2FnZVRvV2ViVmll
dyhVc2VyTWVzc2FnZSYmIG1lc3NhZ2UsIENvbXBsZXRpb25IYW5kbAogICAgIG1fdmlldy5kaWRS
ZWNlaXZlVXNlck1lc3NhZ2UoV1RGTW92ZShtZXNzYWdlKSwgV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpOwogfQogCi12b2lkIFBhZ2VDbGllbnRJbXBsOjpzZXRJbnB1dE1ldGhvZFN0YXRlKGJv
b2wgZW5hYmxlZCkKK3ZvaWQgUGFnZUNsaWVudEltcGw6OnNldElucHV0TWV0aG9kU3RhdGUoT3B0
aW9uYWw8SW5wdXRNZXRob2RTdGF0ZT4mJiBzdGF0ZSkKIHsKLSAgICBtX3ZpZXcuc2V0SW5wdXRN
ZXRob2RTdGF0ZShlbmFibGVkKTsKKyAgICBtX3ZpZXcuc2V0SW5wdXRNZXRob2RTdGF0ZShXVEZN
b3ZlKHN0YXRlKSk7CiB9CiAKIHZvaWQgUGFnZUNsaWVudEltcGw6OnNlbGVjdGlvbkRpZENoYW5n
ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1BhZ2VDbGll
bnRJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1BhZ2VDbGllbnRJbXBs
LmgKaW5kZXggN2RjZDhhMTliZmQuLmEyZjg4ZjgwOGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1BhZ2VDbGllbnRJbXBsLmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL3dwZS9QYWdlQ2xpZW50SW1wbC5oCkBAIC00Miw2ICs0Miw3IEBAIGVu
dW0gY2xhc3MgRE9NUGFzdGVBY2Nlc3NSZXNwb25zZSA6IHVpbnQ4X3Q7CiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAogY2xhc3MgU2Nyb2xsR2VzdHVyZUNvbnRyb2xsZXI7CitzdHJ1Y3QgSW5wdXRNZXRo
b2RTdGF0ZTsKIHN0cnVjdCBVc2VyTWVzc2FnZTsKIAogZW51bSBjbGFzcyBVbmRvT3JSZWRvIDog
Ym9vbDsKQEAgLTYyLDcgKzYzLDcgQEAgcHVibGljOgogI2VuZGlmCiAKICAgICB2b2lkIHNlbmRN
ZXNzYWdlVG9XZWJWaWV3KFVzZXJNZXNzYWdlJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVXNl
ck1lc3NhZ2UmJik+JiYpOwotICAgIHZvaWQgc2V0SW5wdXRNZXRob2RTdGF0ZShib29sIGVuYWJs
ZWQpOworICAgIHZvaWQgc2V0SW5wdXRNZXRob2RTdGF0ZShPcHRpb25hbDxJbnB1dE1ldGhvZFN0
YXRlPiYmKTsKIAogcHJpdmF0ZToKICAgICAvLyBQYWdlQ2xpZW50CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dQRVZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL3dwZS9XUEVWaWV3LmNwcAppbmRleCBlZjY1YjdhOWI2ZC4uMjc1YmIwYmE5
NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV1BFVmlldy5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XUEVWaWV3LmNwcApAQCAt
MjMxLDkgKzIzMSw5IEBAIFdlYktpdElucHV0TWV0aG9kQ29udGV4dCogVmlldzo6aW5wdXRNZXRo
b2RDb250ZXh0KCkgY29uc3QKICAgICByZXR1cm4gbV9pbnB1dE1ldGhvZEZpbHRlci5jb250ZXh0
KCk7CiB9CiAKLXZvaWQgVmlldzo6c2V0SW5wdXRNZXRob2RTdGF0ZShib29sIGVuYWJsZWQpCit2
b2lkIFZpZXc6OnNldElucHV0TWV0aG9kU3RhdGUoT3B0aW9uYWw8SW5wdXRNZXRob2RTdGF0ZT4m
JiBzdGF0ZSkKIHsKLSAgICBtX2lucHV0TWV0aG9kRmlsdGVyLnNldEVuYWJsZWQoZW5hYmxlZCk7
CisgICAgbV9pbnB1dE1ldGhvZEZpbHRlci5zZXRTdGF0ZShXVEZNb3ZlKHN0YXRlKSk7CiB9CiAK
IHZvaWQgVmlldzo6c2VsZWN0aW9uRGlkQ2hhbmdlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS93cGUvV1BFVmlldy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL3dwZS9XUEVWaWV3LmgKaW5kZXggYWE4NzA3MmVjMWMuLmYyM2RmYzI3YTdjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dQRVZpZXcuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dQRVZpZXcuaApAQCAtODEsNyArODEsNyBAQCBw
dWJsaWM6CiAKICAgICB2b2lkIHNldElucHV0TWV0aG9kQ29udGV4dChXZWJLaXRJbnB1dE1ldGhv
ZENvbnRleHQqKTsKICAgICBXZWJLaXRJbnB1dE1ldGhvZENvbnRleHQqIGlucHV0TWV0aG9kQ29u
dGV4dCgpIGNvbnN0OwotICAgIHZvaWQgc2V0SW5wdXRNZXRob2RTdGF0ZShib29sKTsKKyAgICB2
b2lkIHNldElucHV0TWV0aG9kU3RhdGUoT3B0aW9uYWw8V2ViS2l0OjpJbnB1dE1ldGhvZFN0YXRl
PiYmKTsKICAgICB2b2lkIHN5bnRoZXNpemVDb21wb3NpdGlvbktleVByZXNzKGNvbnN0IFN0cmlu
ZyYsIE9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpDb21wb3NpdGlvblVuZGVybGluZT4+JiYsIE9w
dGlvbmFsPFdlYktpdDo6RWRpdGluZ1JhbmdlPiYmKTsKIAogICAgIHZvaWQgc2VsZWN0aW9uRGlk
Q2hhbmdlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dl
YktpdElucHV0TWV0aG9kQ29udGV4dC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dw
ZS9XZWJLaXRJbnB1dE1ldGhvZENvbnRleHQuaAppbmRleCA0NjRlMzUyMTZmZi4uODI4NTU5NDg1
ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0SW5w
dXRNZXRob2RDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9X
ZWJLaXRJbnB1dE1ldGhvZENvbnRleHQuaApAQCAtNDAsNiArNDAsNTQgQEAgR19CRUdJTl9ERUNM
UwogCiAjZGVmaW5lIFdFQktJVF9UWVBFX0lOUFVUX01FVEhPRF9VTkRFUkxJTkUgICAgICAgICAg
KHdlYmtpdF9pbnB1dF9tZXRob2RfdW5kZXJsaW5lX2dldF90eXBlKCkpCiAKKy8qKgorICogV2Vi
S2l0SW5wdXRQdXJwb3NlOgorICogQFdFQktJVF9JTlBVVF9QVVJQT1NFX0ZSRUVfRk9STTogRWRp
dGFibGUgZWxlbWVudCBleHBlY3RzIGFueSBjaGFyYWN0ZXJzCisgKiBAV0VCS0lUX0lOUFVUX1BV
UlBPU0VfRElHSVRTOiBFZGl0YWJsZSBlbGVtZW50IGV4cGVjdHMgZGlnaXRzCisgKiBAV0VCS0lU
X0lOUFVUX1BVUlBPU0VfTlVNQkVSOiBFZGl0YWJsZSBlbGVtZW50IGV4cGVjdHMgYSBudW1iZXIK
KyAqIEBXRUJLSVRfSU5QVVRfUFVSUE9TRV9QSE9ORTogRWRpdGFibGUgZWxlbWVudCBleHBlY3Rz
IGEgdGVsZXBob25lCisgKiBAV0VCS0lUX0lOUFVUX1BVUlBPU0VfVVJMOiBFZGl0YWJsZSBlbGVt
ZW50IGV4cGVjdHMgYSBVUkwKKyAqIEBXRUJLSVRfSU5QVVRfUFVSUE9TRV9FTUFJTDogRWRpdGFi
bGUgZWxlbWVudCBleHBlY3RzIGFuIGVtYWlsCisgKiBAV0VCS0lUX0lOUFVUX1BVUlBPU0VfUEFT
U1dPUkQ6IEVkaXRhYmxlIGVsZW1lbnQgZXhwZWN0cyBhIHBhc3N3b3JkCisgKgorICogRW51bSB2
YWx1ZXMgdXNlZCB0byBkZXNjcmliZSB0aGUgcHJpbWFyeSBwdXJwb3NlIG9mIHRoZSBhY3RpdmUg
ZWRpdGFibGUgZWxlbWVudC4KKyAqCisgKiBTaW5jZTogMi4yOAorICovCit0eXBlZGVmIGVudW0g
eworICAgIFdFQktJVF9JTlBVVF9QVVJQT1NFX0ZSRUVfRk9STSwKKyAgICBXRUJLSVRfSU5QVVRf
UFVSUE9TRV9ESUdJVFMsCisgICAgV0VCS0lUX0lOUFVUX1BVUlBPU0VfTlVNQkVSLAorICAgIFdF
QktJVF9JTlBVVF9QVVJQT1NFX1BIT05FLAorICAgIFdFQktJVF9JTlBVVF9QVVJQT1NFX1VSTCwK
KyAgICBXRUJLSVRfSU5QVVRfUFVSUE9TRV9FTUFJTCwKKyAgICBXRUJLSVRfSU5QVVRfUFVSUE9T
RV9QQVNTV09SRAorfSBXZWJLaXRJbnB1dFB1cnBvc2U7CisKKy8qKgorICogV2ViS2l0SW5wdXRI
aW50czoKKyAqIEBXRUJLSVRfSU5QVVRfSElOVF9OT05FOiBObyBzcGVjaWFsIGJlaGF2aW9yIHN1
Z2dlc3RlZAorICogQFdFQktJVF9JTlBVVF9ISU5UX1NQRUxMQ0hFQ0s6IFN1Z2dlc3Qgc3BlbGwg
Y2hlY2tpbmcKKyAqIEBXRUJLSVRfSU5QVVRfSElOVF9MT1dFUkNBU0U6IFN1Z2dlc3QgdG8gbm90
IGF1dG9jYXBpdGxpemUKKyAqIEBXRUJLSVRfSU5QVVRfSElOVF9VUFBFUkNBU0VfQ0hBUlM6IFN1
Z2dlc3QgdG8gY2FwaXRhbGl6ZSBhbGwgdGV4dAorICogQFdFQktJVF9JTlBVVF9ISU5UX1VQUEVS
Q0FTRV9XT1JEUzogU3VnZ2VzdCB0byBjYXBpdGFsaXplIHRoZSBmaXJzdCBjaGFyYWN0ZXIgb2Yg
ZWFjaCB3b3JkCisgKiBAV0VCS0lUX0lOUFVUX0hJTlRfVVBQRVJDQVNFX1NFTlRFTkNFUzogU3Vn
Z2VzdCB0byBjYXBpdGFsaXplIHRoZSBmaXJzdCB3b3JkIG9mIGVhY2ggc2VudGVuY2UKKyAqIEBX
RUJLSVRfSU5QVVRfSElOVF9JTkhJQklUX09TSzogU3VnZ2VzdCB0byBub3Qgc2hvdyBhbiBvbnNj
cmVlbiBrZXlib2FyZAorICoKKyAqIEVudW0gdmFsdWVzIHVzZWQgdG8gZGVzY3JpYmUgaGludHMg
dGhhdCBtaWdodCBiZSB0YWtlbiBpbnRvIGFjY291bnQgYnkgaW5wdXQgbWV0aG9kcy4KKyAqCisg
KiBTaW5jZTogMi4yOAorICovCit0eXBlZGVmIGVudW0geworICAgIFdFQktJVF9JTlBVVF9ISU5U
X05PTkUgICAgICAgICAgICAgICAgPSAwLAorICAgIFdFQktJVF9JTlBVVF9ISU5UX1NQRUxMQ0hF
Q0sgICAgICAgICAgPSAxIDw8IDAsCisgICAgV0VCS0lUX0lOUFVUX0hJTlRfTE9XRVJDQVNFICAg
ICAgICAgICA9IDEgPDwgMSwKKyAgICBXRUJLSVRfSU5QVVRfSElOVF9VUFBFUkNBU0VfQ0hBUlMg
ICAgID0gMSA8PCAyLAorICAgIFdFQktJVF9JTlBVVF9ISU5UX1VQUEVSQ0FTRV9XT1JEUyAgICAg
PSAxIDw8IDMsCisgICAgV0VCS0lUX0lOUFVUX0hJTlRfVVBQRVJDQVNFX1NFTlRFTkNFUyA9IDEg
PDwgNCwKKyAgICBXRUJLSVRfSU5QVVRfSElOVF9JTkhJQklUX09TSyAgICAgICAgID0gMSA8PCA1
Cit9IFdlYktpdElucHV0SGludHM7CisKIHR5cGVkZWYgc3RydWN0IF9XZWJLaXRJbnB1dE1ldGhv
ZENvbnRleHQgICAgICAgIFdlYktpdElucHV0TWV0aG9kQ29udGV4dDsKIHR5cGVkZWYgc3RydWN0
IF9XZWJLaXRJbnB1dE1ldGhvZENvbnRleHRDbGFzcyAgIFdlYktpdElucHV0TWV0aG9kQ29udGV4
dENsYXNzOwogdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdElucHV0TWV0aG9kQ29udGV4dFByaXZhdGUg
V2ViS2l0SW5wdXRNZXRob2RDb250ZXh0UHJpdmF0ZTsKQEAgLTE0MSw2ICsxODksMjAgQEAgV0VC
S0lUX0FQSSB2b2lkCiB3ZWJraXRfaW5wdXRfbWV0aG9kX3VuZGVybGluZV9zZXRfY29sb3IgICAg
ICAgIChXZWJLaXRJbnB1dE1ldGhvZFVuZGVybGluZSAgICAgICp1bmRlcmxpbmUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRDb2xvciAgICAg
ICAgICAgICAgICAgICAgICpjb2xvcik7CiAKK1dFQktJVF9BUEkgV2ViS2l0SW5wdXRQdXJwb3Nl
Cit3ZWJraXRfaW5wdXRfbWV0aG9kX2NvbnRleHRfZ2V0X2lucHV0X3B1cnBvc2UgIChXZWJLaXRJ
bnB1dE1ldGhvZENvbnRleHQgICAgICAgICpjb250ZXh0KTsKKworV0VCS0lUX0FQSSB2b2lkCit3
ZWJraXRfaW5wdXRfbWV0aG9kX2NvbnRleHRfc2V0X2lucHV0X3B1cnBvc2UgIChXZWJLaXRJbnB1
dE1ldGhvZENvbnRleHQgICAgICAgICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0SW5wdXRQdXJwb3NlICAgICAgICAgICAgICAg
cHVycG9zZSk7CisKK1dFQktJVF9BUEkgV2ViS2l0SW5wdXRIaW50cword2Via2l0X2lucHV0X21l
dGhvZF9jb250ZXh0X2dldF9pbnB1dF9oaW50cyAgICAoV2ViS2l0SW5wdXRNZXRob2RDb250ZXh0
ICAgICAgICAqY29udGV4dCk7CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X2lucHV0X21ldGhv
ZF9jb250ZXh0X3NldF9pbnB1dF9oaW50cyAgICAoV2ViS2l0SW5wdXRNZXRob2RDb250ZXh0ICAg
ICAgICAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFdlYktpdElucHV0SGludHMgICAgICAgICAgICAgICAgIGhpbnRzKTsKKwogCiBHX0VO
RF9ERUNMUwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL2Rv
Y3Mvd3BlLTEuMC1zZWN0aW9ucy50eHQgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3Bl
L2RvY3Mvd3BlLTEuMC1zZWN0aW9ucy50eHQKaW5kZXggZjBiMGE3NTkyMWMuLmRmNGY4NDZiNDU5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL2RvY3Mvd3BlLTEu
MC1zZWN0aW9ucy50eHQKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9kb2Nz
L3dwZS0xLjAtc2VjdGlvbnMudHh0CkBAIC0xNDQ1LDYgKzE0NDUsOCBAQCBXRUJLSVRfVFlQRV9H
RU9MT0NBVElPTl9QT1NJVElPTgogPFNFQ1RJT04+CiA8RklMRT5XZWJLaXRJbnB1dE1ldGhvZENv
bnRleHQ8L0ZJTEU+CiBXZWJLaXRJbnB1dE1ldGhvZENvbnRleHQKK1dlYktpdElucHV0UHVycG9z
ZQorV2ViS2l0SW5wdXRIaW50cwogd2Via2l0X2lucHV0X21ldGhvZF9jb250ZXh0X3NldF9lbmFi
bGVfcHJlZWRpdAogd2Via2l0X2lucHV0X21ldGhvZF9jb250ZXh0X2dldF9wcmVlZGl0CiB3ZWJr
aXRfaW5wdXRfbWV0aG9kX2NvbnRleHRfZmlsdGVyX2tleV9ldmVudApAQCAtMTQ1Miw2ICsxNDU0
LDEwIEBAIHdlYmtpdF9pbnB1dF9tZXRob2RfY29udGV4dF9ub3RpZnlfZm9jdXNfaW4KIHdlYmtp
dF9pbnB1dF9tZXRob2RfY29udGV4dF9ub3RpZnlfZm9jdXNfb3V0CiB3ZWJraXRfaW5wdXRfbWV0
aG9kX2NvbnRleHRfbm90aWZ5X2N1cnNvcl9hcmVhCiB3ZWJraXRfaW5wdXRfbWV0aG9kX2NvbnRl
eHRfcmVzZXQKK3dlYmtpdF9pbnB1dF9tZXRob2RfY29udGV4dF9nZXRfaW5wdXRfcHVycG9zZQor
d2Via2l0X2lucHV0X21ldGhvZF9jb250ZXh0X3NldF9pbnB1dF9wdXJwb3NlCit3ZWJraXRfaW5w
dXRfbWV0aG9kX2NvbnRleHRfZ2V0X2lucHV0X2hpbnRzCit3ZWJraXRfaW5wdXRfbWV0aG9kX2Nv
bnRleHRfc2V0X2lucHV0X2hpbnRzCiAKIDxTVUJTRUNUSU9OIFVuZGVybGluZT4KIFdlYktpdElu
cHV0TWV0aG9kVW5kZXJsaW5lCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmlu
ZGV4IGFjYjcwZjU2N2QzLi44ZGNjNWQwZmMwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmgKQEAgLTMxMSw2ICszMTEsNyBAQCBzdHJ1Y3QgRWRpdG9yU3RhdGU7CiBzdHJ1
Y3QgRm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbjsKIHN0cnVjdCBGb250SW5mbzsKIHN0cnVjdCBG
cmFtZUluZm9EYXRhOworc3RydWN0IElucHV0TWV0aG9kU3RhdGU7CiBzdHJ1Y3QgSW5zZXJ0VGV4
dE9wdGlvbnM7CiBzdHJ1Y3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb247CiBzdHJ1
Y3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3Q7CkBAIC03OTAsNyArNzkxLDcgQEAgcHVi
bGljOgogI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV1BFKQogICAgIHZvaWQgY2FuY2Vs
Q29tcG9zaXRpb24oY29uc3QgU3RyaW5nJiBjb21wb3NpdGlvblN0cmluZyk7CiAKLSAgICB2b2lk
IHNldElucHV0TWV0aG9kU3RhdGUoYm9vbCBlbmFibGVkKTsKKyAgICB2b2lkIHNldElucHV0TWV0
aG9kU3RhdGUoT3B0aW9uYWw8SW5wdXRNZXRob2RTdGF0ZT4mJik7CiAjZW5kaWYKIAogI2lmIFBM
QVRGT1JNKEdUSykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5t
ZXNzYWdlcy5pbgppbmRleCAwMjVmYjJjMWM5OS4uOTU0Zjk3NGEzMDggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KQEAgLTIxOSw3ICsy
MTksNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogI2VuZGlmCiAKICNpZiBQTEFURk9S
TShHVEspIHx8IFBMQVRGT1JNKFdQRSkKLSAgICBTZXRJbnB1dE1ldGhvZFN0YXRlKGJvb2wgZW5h
YmxlZCk7CisgICAgU2V0SW5wdXRNZXRob2RTdGF0ZShPcHRpb25hbDxXZWJLaXQ6OklucHV0TWV0
aG9kU3RhdGU+IHN0YXRlKTsKICNlbmRpZgogCiAgICAgIyBCYWNrRm9yd2FyZCBtZXNzYWdlcwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYlBhZ2VQcm94eUd0ay5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViUGFnZVByb3h5R3RrLmNwcAppbmRl
eCA1NDBlM2JjNjg0Ni4uOGVlODZmYTFiZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2d0ay9XZWJQYWdlUHJveHlHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2d0ay9XZWJQYWdlUHJveHlHdGsuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCiAKKyNpbmNsdWRlICJJbnB1dE1l
dGhvZFN0YXRlLmgiCiAjaW5jbHVkZSAiUGFnZUNsaWVudEltcGwuaCIKICNpbmNsdWRlICJXZWJL
aXRVc2VyTWVzc2FnZS5oIgogI2luY2x1ZGUgIldlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZS5oIgpA
QCAtMTQ4LDkgKzE0OSw5IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp3aW5kb3dlZFBsdWdpblZpc2li
aWxpdHlEaWRDaGFuZ2UoYm9vbCBpc1Zpc2libGUsIHVpbnQ2NF90IHdpCiB9CiAjZW5kaWYgLy8g
UExBVEZPUk0oWDExKQogCi12b2lkIFdlYlBhZ2VQcm94eTo6c2V0SW5wdXRNZXRob2RTdGF0ZShi
b29sIGVuYWJsZWQpCit2b2lkIFdlYlBhZ2VQcm94eTo6c2V0SW5wdXRNZXRob2RTdGF0ZShPcHRp
b25hbDxJbnB1dE1ldGhvZFN0YXRlPiYmIHN0YXRlKQogewotICAgIHdlYmtpdFdlYlZpZXdCYXNl
U2V0SW5wdXRNZXRob2RTdGF0ZShXRUJLSVRfV0VCX1ZJRVdfQkFTRSh2aWV3V2lkZ2V0KCkpLCBl
bmFibGVkKTsKKyAgICB3ZWJraXRXZWJWaWV3QmFzZVNldElucHV0TWV0aG9kU3RhdGUoV0VCS0lU
X1dFQl9WSUVXX0JBU0Uodmlld1dpZGdldCgpKSwgV1RGTW92ZShzdGF0ZSkpOwogfQogCiB2b2lk
IFdlYlBhZ2VQcm94eTo6Z2V0Q2VudGVyRm9yWm9vbUdlc3R1cmUoY29uc3QgV2ViQ29yZTo6SW50
UG9pbnQmIGNlbnRlckluVmlld0Nvb3JkaW5hdGVzLCBXZWJDb3JlOjpJbnRQb2ludCYgY2VudGVy
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd3BlL1dlYlBhZ2VQcm94eVdQ
RS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93cGUvV2ViUGFnZVByb3h5V1BFLmNwcApp
bmRleCA3MThmMjEyZDE0Mi4uOGY2NDBkYmQ4MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL3dwZS9XZWJQYWdlUHJveHlXUEUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL3dwZS9XZWJQYWdlUHJveHlXUEUuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVk
ZSAiV2ViUGFnZVByb3h5LmgiCiAKICNpbmNsdWRlICJFZGl0b3JTdGF0ZS5oIgorI2luY2x1ZGUg
IklucHV0TWV0aG9kU3RhdGUuaCIKICNpbmNsdWRlICJQYWdlQ2xpZW50SW1wbC5oIgogI2luY2x1
ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVk
Lmg+CkBAIC05NSw5ICs5Niw5IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZW5kTWVzc2FnZVRvV2Vi
VmlldyhVc2VyTWVzc2FnZSYmIG1lc3NhZ2UpCiAgICAgc2VuZE1lc3NhZ2VUb1dlYlZpZXdXaXRo
UmVwbHkoV1RGTW92ZShtZXNzYWdlKSwgW10oVXNlck1lc3NhZ2UmJikgeyB9KTsKIH0KIAotdm9p
ZCBXZWJQYWdlUHJveHk6OnNldElucHV0TWV0aG9kU3RhdGUoYm9vbCBlbmFibGVkKQordm9pZCBX
ZWJQYWdlUHJveHk6OnNldElucHV0TWV0aG9kU3RhdGUoT3B0aW9uYWw8SW5wdXRNZXRob2RTdGF0
ZT4mJiBzdGF0ZSkKIHsKLSAgICBzdGF0aWNfY2FzdDxQYWdlQ2xpZW50SW1wbCY+KHBhZ2VDbGll
bnQoKSkuc2V0SW5wdXRNZXRob2RTdGF0ZShlbmFibGVkKTsKKyAgICBzdGF0aWNfY2FzdDxQYWdl
Q2xpZW50SW1wbCY+KHBhZ2VDbGllbnQoKSkuc2V0SW5wdXRNZXRob2RTdGF0ZShXVEZNb3ZlKHN0
YXRlKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcApp
bmRleCBkYTgzZTk4MWY5Mi4uN2U1N2FlZDk1NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCkBA
IC02MDQsMTMgKzYwNCwxMyBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6d2lsbFNldElucHV0TWV0
aG9kU3RhdGUoKQogewogfQogCi12b2lkIFdlYkVkaXRvckNsaWVudDo6c2V0SW5wdXRNZXRob2RT
dGF0ZShib29sIGVuYWJsZWQpCit2b2lkIFdlYkVkaXRvckNsaWVudDo6c2V0SW5wdXRNZXRob2RT
dGF0ZShFbGVtZW50KiBlbGVtZW50KQogewogI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0o
V1BFKQotICAgIG1fcGFnZS0+c2V0SW5wdXRNZXRob2RTdGF0ZShlbmFibGVkKTsKKyAgICBtX3Bh
Z2UtPnNldElucHV0TWV0aG9kU3RhdGUoZWxlbWVudCk7CiAjZWxzZQogICAgIG5vdEltcGxlbWVu
dGVkKCk7Ci0gICAgVU5VU0VEX1BBUkFNKGVuYWJsZWQpOworICAgIFVOVVNFRF9QQVJBTShlbGVt
ZW50KTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKaW5kZXggYTcyZWUyYTZiZGQuLjcy
ODFmYjQxNjE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCkBAIC0xNjcsNyArMTY3LDcgQEAgcHJpdmF0
ZToKICAgICBib29sIHNwZWxsaW5nVUlJc1Nob3dpbmcoKSBmaW5hbDsKICAgICB2b2lkIGdldEd1
ZXNzZXNGb3JXb3JkKGNvbnN0IFN0cmluZyYgd29yZCwgY29uc3QgU3RyaW5nJiBjb250ZXh0LCBj
b25zdCBXZWJDb3JlOjpWaXNpYmxlU2VsZWN0aW9uJiBjdXJyZW50U2VsZWN0aW9uLCBWZWN0b3I8
U3RyaW5nPiYgZ3Vlc3NlcykgZmluYWw7CiAgICAgdm9pZCB3aWxsU2V0SW5wdXRNZXRob2RTdGF0
ZSgpIGZpbmFsOwotICAgIHZvaWQgc2V0SW5wdXRNZXRob2RTdGF0ZShib29sIGVuYWJsZWQpIGZp
bmFsOworICAgIHZvaWQgc2V0SW5wdXRNZXRob2RTdGF0ZShXZWJDb3JlOjpFbGVtZW50KikgZmlu
YWw7CiAgICAgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhXZWJDb3JlOjpUZXh0Q2hlY2tp
bmdSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6VmlzaWJsZVNlbGVjdGlvbiYgY3VycmVudFNlbGVj
dGlvbikgZmluYWw7CiAKICNpZiBQTEFURk9STShHVEspCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggNzhlYTAyZWY1ZjIuLjkzZjFiMDYzNzgyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0xMDAsNiArMTAw
LDEwIEBAIHR5cGVkZWYgc3RydWN0IF9BdGtPYmplY3QgQXRrT2JqZWN0OwogI2luY2x1ZGUgIldl
YlByaW50T3BlcmF0aW9uR3RrLmgiCiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKEdUSykgfHwgUExB
VEZPUk0oV1BFKQorI2luY2x1ZGUgIklucHV0TWV0aG9kU3RhdGUuaCIKKyNlbmRpZgorCiAjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICNpbmNsdWRlICJHZXN0dXJlVHlwZXMuaCIKICNpbmNsdWRl
IDxXZWJDb3JlL0ludFBvaW50SGFzaC5oPgpAQCAtMTA4Niw3ICsxMDkwLDcgQEAgcHVibGljOgog
ICAgIHZvaWQgcG9zdE1lc3NhZ2VJZ25vcmluZ0Z1bGx5U3luY2hyb25vdXNNb2RlKGNvbnN0IFN0
cmluZyYgbWVzc2FnZU5hbWUsIEFQSTo6T2JqZWN0KiBtZXNzYWdlQm9keSk7CiAKICNpZiBQTEFU
Rk9STShHVEspIHx8IFBMQVRGT1JNKFdQRSkKLSAgICB2b2lkIHNldElucHV0TWV0aG9kU3RhdGUo
Ym9vbCk7CisgICAgdm9pZCBzZXRJbnB1dE1ldGhvZFN0YXRlKFdlYkNvcmU6OkVsZW1lbnQqKTsK
ICNlbmRpZgogCiAgICAgdm9pZCBpbWFnZU9yTWVkaWFEb2N1bWVudFNpemVDaGFuZ2VkKGNvbnN0
IFdlYkNvcmU6OkludFNpemUmKTsKQEAgLTE5NTksNyArMTk2Myw3IEBAIHByaXZhdGU6CiAgICAg
bXV0YWJsZSBFZGl0b3JTdGF0ZUlzQ29udGVudEVkaXRhYmxlIG1fbGFzdEVkaXRvclN0YXRlV2Fz
Q29udGVudEVkaXRhYmxlIHsgRWRpdG9yU3RhdGVJc0NvbnRlbnRFZGl0YWJsZTo6VW5zZXQgfTsK
IAogI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV1BFKQotICAgIGJvb2wgbV9pbnB1dE1l
dGhvZEVuYWJsZWQgeyBmYWxzZSB9OworICAgIE9wdGlvbmFsPElucHV0TWV0aG9kU3RhdGU+IG1f
aW5wdXRNZXRob2RTdGF0ZTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoR1NU
UkVBTUVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvZ2xp
Yi9XZWJQYWdlR0xpYi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9nbGli
L1dlYlBhZ2VHTGliLmNwcAppbmRleCA2ZDM5ODBhYWMyMy4uNWQ4MmM3ZGEyNWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2dsaWIvV2ViUGFnZUdMaWIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2dsaWIvV2ViUGFnZUdMaWIu
Y3BwCkBAIC0yNiwxNCArMjYsMTggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJX
ZWJQYWdlLmgiCiAKKyNpbmNsdWRlICJJbnB1dE1ldGhvZFN0YXRlLmgiCiAjaW5jbHVkZSAiVXNl
ck1lc3NhZ2UuaCIKICNpbmNsdWRlICJXZWJLaXRFeHRlbnNpb25NYW5hZ2VyLmgiCiAjaW5jbHVk
ZSAiV2ViS2l0VXNlck1lc3NhZ2UuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJFeHRlbnNpb24uaCIK
ICNpbmNsdWRlICJXZWJLaXRXZWJQYWdlUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94
eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9IVE1MSW5wdXRFbGVtZW50Lmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9IVE1MVGV4dEFyZWFFbGVtZW50Lmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIHZvaWQgV2ViUGFnZTo6c2VuZE1lc3NhZ2VU
b1dlYkV4dGVuc2lvbldpdGhSZXBseShVc2VyTWVzc2FnZSYmIG1lc3NhZ2UsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoVXNlck1lc3NhZ2UmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CkBAIC01
NywxMyArNjEsMzYgQEAgdm9pZCBXZWJQYWdlOjpzZW5kTWVzc2FnZVRvV2ViRXh0ZW5zaW9uKFVz
ZXJNZXNzYWdlJiYgbWVzc2FnZSkKICAgICBzZW5kTWVzc2FnZVRvV2ViRXh0ZW5zaW9uV2l0aFJl
cGx5KFdURk1vdmUobWVzc2FnZSksIFtdKFVzZXJNZXNzYWdlJiYpIHsgfSk7CiB9CiAKLXZvaWQg
V2ViUGFnZTo6c2V0SW5wdXRNZXRob2RTdGF0ZShib29sIGVuYWJsZWQpCitzdGF0aWMgT3B0aW9u
YWw8SW5wdXRNZXRob2RTdGF0ZT4gaW5wdXRNZXRob2RTYXRlRm9yRWxlbWVudChFbGVtZW50KiBl
bGVtZW50KQogewotICAgIGlmIChtX2lucHV0TWV0aG9kRW5hYmxlZCA9PSBlbmFibGVkKQorICAg
IGlmICghZWxlbWVudCB8fCAhZWxlbWVudC0+c2hvdWxkVXNlSW5wdXRNZXRob2QoKSkKKyAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIElucHV0TWV0aG9kU3RhdGUgc3RhdGU7Cisg
ICAgaWYgKGlzPEhUTUxJbnB1dEVsZW1lbnQ+KCplbGVtZW50KSkgeworICAgICAgICBhdXRvJiBp
bnB1dEVsZW1lbnQgPSBkb3duY2FzdDxIVE1MSW5wdXRFbGVtZW50PigqZWxlbWVudCk7CisgICAg
ICAgIHN0YXRlLnNldFB1cnBvc2VGb3JJbnB1dEVsZW1lbnQoaW5wdXRFbGVtZW50KTsKKyAgICAg
ICAgc3RhdGUuYWRkSGludHNGb3JBdXRvY2FwaXRhbGl6ZVR5cGUoaW5wdXRFbGVtZW50LmF1dG9j
YXBpdGFsaXplVHlwZSgpKTsKKyAgICB9IGVsc2UgaWYgKGlzPEhUTUxUZXh0QXJlYUVsZW1lbnQ+
KCplbGVtZW50KSB8fCAoZWxlbWVudC0+aGFzRWRpdGFibGVTdHlsZSgpICYmIGlzPEhUTUxFbGVt
ZW50PigqZWxlbWVudCkpKSB7CisgICAgICAgIGF1dG8mIGh0bWxFbGVtZW50ID0gZG93bmNhc3Q8
SFRNTEVsZW1lbnQ+KCplbGVtZW50KTsKKyAgICAgICAgc3RhdGUuc2V0UHVycG9zZU9ySGludEZv
cklucHV0TW9kZShodG1sRWxlbWVudC5jYW5vbmljYWxJbnB1dE1vZGUoKSk7CisgICAgICAgIHN0
YXRlLmFkZEhpbnRzRm9yQXV0b2NhcGl0YWxpemVUeXBlKGh0bWxFbGVtZW50LmF1dG9jYXBpdGFs
aXplVHlwZSgpKTsKKyAgICB9CisKKyAgICBpZiAoZWxlbWVudC0+aXNTcGVsbENoZWNraW5nRW5h
YmxlZCgpKQorICAgICAgICBzdGF0ZS5oaW50cy5hZGQoSW5wdXRNZXRob2RTdGF0ZTo6SGludDo6
U3BlbGxjaGVjayk7CisKKyAgICByZXR1cm4gc3RhdGU7Cit9CisKK3ZvaWQgV2ViUGFnZTo6c2V0
SW5wdXRNZXRob2RTdGF0ZShFbGVtZW50KiBlbGVtZW50KQoreworICAgIGF1dG8gc3RhdGUgPSBp
bnB1dE1ldGhvZFNhdGVGb3JFbGVtZW50KGVsZW1lbnQpOworICAgIGlmIChtX2lucHV0TWV0aG9k
U3RhdGUgPT0gc3RhdGUpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1faW5wdXRNZXRob2RFbmFi
bGVkID0gZW5hYmxlZDsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNldElucHV0
TWV0aG9kU3RhdGUoZW5hYmxlZCkpOworICAgIG1faW5wdXRNZXRob2RTdGF0ZSA9IHN0YXRlOwor
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2V0SW5wdXRNZXRob2RTdGF0ZShzdGF0
ZSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxv
ZwppbmRleCBiODI5NDRjMTJmNy4uYTM0ZGI4MWJhY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxOS0xMi0yNyAgQ2FybG9zIEdhcmNpYSBDYW1wb3Mg
IDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS11bV1BFXSBBZGQgQVBJIHRvIHNl
dCBwdXJwb3NlIGFuZCBoaW50cyBvZiBhY3RpdmUgZWRpdGFibGUgZWxlbWVudCB0byBpbnB1dCBt
ZXRob2RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MDU2MDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IERPTS9ET01IVE1MRWxlbWVudC5tbTogVXNlIEVOQUJMRShBVVRPQ09SUkVDVCkgYW5kIEVOQUJM
RShBVVRPQ0FQSVRBTElaRSkuCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50Lmg6IFVwZGF0ZSB0b20gdGhlIG5ldyBBUEkgdG8gV2ViRWRpdG9yQ2xpZW50OjpzZXRJbnB1
dE1ldGhvZFN0YXRlLgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5t
bToKKyAgICAgICAgKFdlYkVkaXRvckNsaWVudDo6c2V0SW5wdXRNZXRob2RTdGF0ZSk6IERpdHRv
LgorCiAyMDE5LTEyLTIwICBCcmlhbiBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgogCiAgICAgICAg
IFdlYiBJbnNwZWN0b3I6IGNvbnZlcnQgc29tZSBJbnNwZWN0b3JGcm9udGVuZEhvc3QgbWV0aG9k
cyB0byBnZXR0ZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
SFRNTEVsZW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEVsZW1l
bnQubW0KaW5kZXggZDAzMDgyZjU3NDQuLjc3ZWVmMDUwMDE0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEVsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxFbGVtZW50Lm1tCkBAIC0yNTYsNyArMjU2LDcgQEAKICAg
ICBJTVBMLT5jbGljaygpOwogfQogCi0jaWYgRU5BQkxFKElPU19BVVRPQ09SUkVDVF9BTkRfQVVU
T0NBUElUQUxJWkUpCisjaWYgRU5BQkxFKEFVVE9DT1JSRUNUKQogCiAtIChCT09MKWF1dG9jb3Jy
ZWN0CiB7CkBAIC0yNzAsNiArMjcwLDEwIEBACiAgICAgSU1QTC0+c2V0QXV0b2NvcnJlY3QobmV3
QXV0b2NvcnJlY3QpOwogfQogCisjZW5kaWYKKworI2lmIEVOQUJMRShBVVRPQ0FQSVRBTElaRSkK
KwogLSAoTlNTdHJpbmcgKilhdXRvY2FwaXRhbGl6ZQogewogICAgIFdlYkNvcmU6OkpTTWFpblRo
cmVhZE51bGxTdGF0ZSBzdGF0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKaW5kZXggMTM4ZmZiODYxZDUuLmM2
NThiMTkyYzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJFZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaApAQCAtMTY2LDcgKzE2Niw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBnZXRHdWVzc2VzRm9yV29yZChjb25zdCBTdHJpbmcmIHdvcmQsIGNvbnN0IFN0
cmluZyYgY29udGV4dCwgY29uc3QgV2ViQ29yZTo6VmlzaWJsZVNlbGVjdGlvbiYgY3VycmVudFNl
bGVjdGlvbiwgVmVjdG9yPFN0cmluZz4mIGd1ZXNzZXMpIGZpbmFsOwogCiAgICAgdm9pZCB3aWxs
U2V0SW5wdXRNZXRob2RTdGF0ZSgpIGZpbmFsOwotICAgIHZvaWQgc2V0SW5wdXRNZXRob2RTdGF0
ZShib29sIGVuYWJsZWQpIGZpbmFsOworICAgIHZvaWQgc2V0SW5wdXRNZXRob2RTdGF0ZShXZWJD
b3JlOjpFbGVtZW50KikgZmluYWw7CiAgICAgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhX
ZWJDb3JlOjpUZXh0Q2hlY2tpbmdSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6VmlzaWJsZVNlbGVj
dGlvbiYgY3VycmVudFNlbGVjdGlvbikgZmluYWw7CiAKICNpZiBQTEFURk9STShNQUMpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JD
bGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQubW0KaW5kZXggMTNjOGRlZjVlMWEuLjMzYjY4OWQ3YjI3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0K
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50Lm1tCkBAIC0xMDk4LDcgKzEwOTgsNyBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6d2lsbFNl
dElucHV0TWV0aG9kU3RhdGUoKQogewogfQogCi12b2lkIFdlYkVkaXRvckNsaWVudDo6c2V0SW5w
dXRNZXRob2RTdGF0ZShib29sKQordm9pZCBXZWJFZGl0b3JDbGllbnQ6OnNldElucHV0TWV0aG9k
U3RhdGUoV2ViQ29yZTo6RWxlbWVudCopCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxv
ZwppbmRleCA0MmI3NTc2YzFhNi4uOTQ0N2Y1MzdlMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxOS0xMi0yNyAgQ2FybG9zIEdhcmNpYSBDYW1wb3Mg
IDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS11bV1BFXSBBZGQgQVBJIHRvIHNl
dCBwdXJwb3NlIGFuZCBoaW50cyBvZiBhY3RpdmUgZWRpdGFibGUgZWxlbWVudCB0byBpbnB1dCBt
ZXRob2RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MDU2MDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBV
cGRhdGUgdG8gdGhlIG5ldyBBUEkgb2YgV2ViRWRpdG9yQ2xpZW50OjpzZXRJbnB1dE1ldGhvZFN0
YXRlLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcDoKKyAg
ICAgICAgKFdlYkVkaXRvckNsaWVudDo6c2V0SW5wdXRNZXRob2RTdGF0ZSk6CisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisKIDIwMTktMTItMjEgIEJyaWFuIEJ1
cmcgIDxiYnVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogYWRkIEluc3Bl
Y3RlZFRhcmdldFR5cGVzIGRpYWdub3N0aWMgZXZlbnQgYW5kIHJlbGF0ZWQgaG9va3MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQuY3BwCmluZGV4IDhmOWEyOWQ3NzliLi44ZGYxYzcyMWJiNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JD
bGllbnQuY3BwCkBAIC04ODcsNyArODg3LDcgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OndpbGxT
ZXRJbnB1dE1ldGhvZFN0YXRlKCkKIHsKIH0KIAotdm9pZCBXZWJFZGl0b3JDbGllbnQ6OnNldElu
cHV0TWV0aG9kU3RhdGUoYm9vbCBlbmFibGVkKQordm9pZCBXZWJFZGl0b3JDbGllbnQ6OnNldElu
cHV0TWV0aG9kU3RhdGUoV2ViQ29yZTo6RWxlbWVudCogZWxlbWVudCkKIHsKLSAgICBtX3dlYlZp
ZXctPnNldElucHV0TWV0aG9kU3RhdGUoZW5hYmxlZCk7CisgICAgbV93ZWJWaWV3LT5zZXRJbnB1
dE1ldGhvZFN0YXRlKGVsZW1lbnQgJiYgZWxlbWVudC0+c2hvdWxkVXNlSW5wdXRNZXRob2QoKSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYkVkaXRvckNsaWVudC5oCmluZGV4IDU3ZWNmNzcyZDUxLi43N2Y2NDM2ZTdiNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50LmgKQEAgLTExMyw3ICsxMTMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZ2V0R3Vl
c3Nlc0ZvcldvcmQoY29uc3QgV1RGOjpTdHJpbmcmIHdvcmQsIGNvbnN0IFdURjo6U3RyaW5nJiBj
b250ZXh0LCBjb25zdCBXZWJDb3JlOjpWaXNpYmxlU2VsZWN0aW9uJiBjdXJyZW50U2VsZWN0aW9u
LCBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4mIGd1ZXNzZXMpIGZpbmFsOwogCiAgICAgdm9pZCB3
aWxsU2V0SW5wdXRNZXRob2RTdGF0ZSgpIGZpbmFsOwotICAgIHZvaWQgc2V0SW5wdXRNZXRob2RT
dGF0ZShib29sKSBmaW5hbDsKKyAgICB2b2lkIHNldElucHV0TWV0aG9kU3RhdGUoV2ViQ29yZTo6
RWxlbWVudCopIGZpbmFsOwogICAgIHZvaWQgcmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoV2ViQ29y
ZTo6VGV4dENoZWNraW5nUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlZpc2libGVTZWxlY3Rpb24m
KSBmaW5hbCB7IH0KICAgICBib29sIHBlcmZvcm1Ud29TdGVwRHJvcChXZWJDb3JlOjpEb2N1bWVu
dEZyYWdtZW50JiwgV2ViQ29yZTo6UmFuZ2UmLCBib29sKSBmaW5hbCB7IHJldHVybiBmYWxzZTsg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZSBiL1NvdXJjZS9j
bWFrZS9PcHRpb25zR1RLLmNtYWtlCmluZGV4IGE5MWZjMmQwNTA3Li44ZmNhZWI1YTNhMyAxMDA2
NDQKLS0tIGEvU291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2UKKysrIGIvU291cmNlL2NtYWtl
L09wdGlvbnNHVEsuY21ha2UKQEAgLTE1MCw2ICsxNTAsNyBAQCBXRUJLSVRfT1BUSU9OX0RFRkFV
TFRfUE9SVF9WQUxVRShFTkFCTEVfV0VCRFJJVkVSIFBVQkxJQyBPTikKICMgUHJpdmF0ZSBvcHRp
b25zIHNoYXJlZCB3aXRoIG90aGVyIFdlYktpdCBwb3J0cy4gQWRkIG9wdGlvbnMgaGVyZSB3aGVu
CiAjIHdlIG5lZWQgYSB2YWx1ZSBkaWZmZXJlbnQgZnJvbSB0aGUgZGVmYXVsdCBkZWZpbmVkIGlu
IFdlYktpdEZlYXR1cmVzLmNtYWtlLgogIyBDaGFuZ2luZyB0aGVzZSBvcHRpb25zIGlzIGNvbXBs
ZXRlbHkgdW5zdXBwb3J0ZWQuCitXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFC
TEVfQVVUT0NBUElUQUxJWkUgUFJJVkFURSBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JU
X1ZBTFVFKEVOQUJMRV9DT05URU5UX0VYVEVOU0lPTlMgUFJJVkFURSBPTikKIFdFQktJVF9PUFRJ
T05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9EQVJLX01PREVfQ1NTIFBSSVZBVEUgT04pCiBX
RUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfREFUQUxJU1RfRUxFTUVOVCBQ
UklWQVRFIE9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL09wdGlvbnNXUEUuY21ha2UgYi9T
b3VyY2UvY21ha2UvT3B0aW9uc1dQRS5jbWFrZQppbmRleCBkMzQ5YzJjMzdjMC4uOGZhZjg4ODhj
N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9PcHRpb25zV1BFLmNtYWtlCisrKyBiL1NvdXJj
ZS9jbWFrZS9PcHRpb25zV1BFLmNtYWtlCkBAIC00OCw2ICs0OCw3IEBAIFdFQktJVF9PUFRJT05f
REVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9YU0xUIFBVQkxJQyBPTikKICMgd2UgbmVlZCBhIHZh
bHVlIGRpZmZlcmVudCBmcm9tIHRoZSBkZWZhdWx0IGRlZmluZWQgaW4gV2ViS2l0RmVhdHVyZXMu
Y21ha2UuCiAjIENoYW5naW5nIHRoZXNlIG9wdGlvbnMgaXMgY29tcGxldGVseSB1bnN1cHBvcnRl
ZC4KIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9BU1lOQ19TQ1JPTExJ
TkcgUFJJVkFURSBPTikKK1dFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9B
VVRPQ0FQSVRBTElaRSBQUklWQVRFIE9OKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFM
VUUoRU5BQkxFX0NPTlRFTlRfRVhURU5TSU9OUyBQUklWQVRFIE9OKQogV0VCS0lUX09QVElPTl9E
RUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX01FRElBX1NUUkVBTSBQUklWQVRFICR7RU5BQkxFX0VY
UEVSSU1FTlRBTF9GRUFUVVJFU30pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShF
TkFCTEVfTUhUTUwgUFJJVkFURSBPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9XZWJLaXRG
ZWF0dXJlcy5jbWFrZSBiL1NvdXJjZS9jbWFrZS9XZWJLaXRGZWF0dXJlcy5jbWFrZQppbmRleCAz
MWNiNTgyZjQwMy4uOGIyZTI1Mzg4ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9XZWJLaXRG
ZWF0dXJlcy5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2UvV2ViS2l0RmVhdHVyZXMuY21ha2UKQEAg
LTk5LDYgKzk5LDcgQEAgbWFjcm8oV0VCS0lUX09QVElPTl9CRUdJTikKICAgICBXRUJLSVRfT1BU
SU9OX0RFRklORShFTkFCTEVfQVBQTElDQVRJT05fTUFOSUZFU1QgIlRvZ2dsZSBBcHBsaWNhdGlv
biBNYW5pZmVzdCBzdXBwb3J0IiBQUklWQVRFIE9GRikKICAgICBXRUJLSVRfT1BUSU9OX0RFRklO
RShFTkFCTEVfQVNZTkNfU0NST0xMSU5HICJFbmFibGUgYXN5bmNocm9ub3VzIHNjcm9sbGluZyIg
UFJJVkFURSBPRkYpCiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX0FUVEFDSE1FTlRf
RUxFTUVOVCAiVG9nZ2xlIEF0dGFjaG1lbnQgRWxlbWVudCBzdXBwb3J0IiBQUklWQVRFIE9GRikK
KyAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfQVVUT0NBUElUQUxJWkUgIlRvZ2dsZSBh
dXRvY2FwaXRhbGl6ZSBzdXBwb3J0IiBQUklWQVRFIE9GRikKICAgICBXRUJLSVRfT1BUSU9OX0RF
RklORShFTkFCTEVfQVZGX0NBUFRJT05TICJUb2dnbGUgQVZGb3VuZGF0aW9uIGNhcHRpb24gc3Vw
cG9ydCIgUFJJVkFURSBPRkYpCiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX0JVQkJM
RVdSQVBfU0FOREJPWCAiVG9nZ2xlIEJ1YmJsZXdyYXAgc2FuZGJveGluZyBzdXBwb3J0IiBQUklW
QVRFIE9GRikKICAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfQ0FDSEVfUEFSVElUSU9O
SU5HICJUb2dnbGUgY2FjaGUgcGFydGl0aW9uaW5nIHN1cHBvcnQiIFBSSVZBVEUgT0ZGKQpkaWZm
IC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDI4OGQ0YjA1
YmFkLi4wZjgwN2RkNDRjYiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE5LTEyLTI3ICBDYXJsb3MgR2FyY2lhIENh
bXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXVtXUEVdIEFkZCBBUEkg
dG8gc2V0IHB1cnBvc2UgYW5kIGhpbnRzIG9mIGFjdGl2ZSBlZGl0YWJsZSBlbGVtZW50IHRvIGlu
cHV0IG1ldGhvZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIwNTYwNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEFkZCBuZXcgdGVzdCBjYXNlIHRvIGNoZWNrIHRoZSBwdXJwb3NlIGFuZCBoaW50cyBBUEku
CisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdElucHV0TWV0
aG9kQ29udGV4dC5jcHA6CisgICAgICAgICh0ZXN0V2ViS2l0SW5wdXRNZXRob2RDb250ZXh0Q29u
dGVudFR5cGUpOgorICAgICAgICAoYmVmb3JlQWxsKToKKwogMjAxOS0xMi0yNSAgRGVhbiBKYWNr
c29uICA8ZGlub0BhcHBsZS5jb20+CiAKICAgICAgICAgV0tUUi9EUlQgYWx3YXlzIHRyaWdnZXIg
dGhlIERpc2NyZXRlIEdQVSBvbiBkdWFsIEdQVSBzeXN0ZW1zCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdElucHV0TWV0aG9kQ29udGV4dC5jcHAg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdElucHV0TWV0aG9kQ29u
dGV4dC5jcHAKaW5kZXggNTk2MWZhYzIzN2EuLjUwODY2NzEyYzY4IDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdElucHV0TWV0aG9kQ29udGV4dC5j
cHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RJbnB1dE1l
dGhvZENvbnRleHQuY3BwCkBAIC0zMzgsNiArMzM4LDI2IEBAIHB1YmxpYzoKICAgICAgICAgZ19h
c3NlcnRfdHJ1ZShtX2NvbnRleHQtPmVuYWJsZWQpOwogICAgIH0KIAorICAgIHZvaWQgdW5mb2N1
c0VkaXRhYmxlQW5kV2FpdFVudGlsSW5wdXRNZXRob2REaXNhYmxlZCgpCisgICAgeworICAgICAg
ICBnX2Fzc2VydF90cnVlKG1fY29udGV4dC0+ZW5hYmxlZCk7CisgICAgICAgIHJ1bkphdmFTY3Jp
cHRBbmRXYWl0VW50aWxGaW5pc2hlZCgiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2VkaXRhYmxl
JykuYmx1cigpIiwgbnVsbHB0cik7CisgICAgICAgIGlmICghbV9jb250ZXh0LT5lbmFibGVkKQor
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGdfaWRsZV9hZGQoW10oZ3BvaW50ZXIgdXNl
ckRhdGEpIC0+IGdib29sZWFuIHsKKyAgICAgICAgICAgIGF1dG8qIHRlc3QgPSBzdGF0aWNfY2Fz
dDxJbnB1dE1ldGhvZFRlc3QqPih1c2VyRGF0YSk7CisgICAgICAgICAgICBpZiAoIXRlc3QtPm1f
Y29udGV4dC0+ZW5hYmxlZCkgeworICAgICAgICAgICAgICAgIHRlc3QtPnF1aXRNYWluTG9vcCgp
OworICAgICAgICAgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgcmV0dXJuIFRSVUU7CisgICAgICAgIH0sIHRoaXMpOworICAgICAgICBnX21haW5fbG9v
cF9ydW4obV9tYWluTG9vcCk7CisgICAgICAgIGdfYXNzZXJ0X2ZhbHNlKG1fY29udGV4dC0+ZW5h
YmxlZCk7CisgICAgfQorCiAgICAgdm9pZCByZXNldEVkaXRhYmxlKCkKICAgICB7CiAgICAgICAg
IHJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZCgiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ2VkaXRhYmxlJykudmFsdWUgPSAnJyIsIG51bGxwdHIpOwpAQCAtMzczLDYgKzM5MywxNiBA
QCBwdWJsaWM6CiAgICAgICAgIG1fZXZlbnRzRXhwZWN0ZWQgPSAwOwogICAgIH0KIAorICAgIFdl
YktpdElucHV0UHVycG9zZSBwdXJwb3NlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiB3
ZWJraXRfaW5wdXRfbWV0aG9kX2NvbnRleHRfZ2V0X2lucHV0X3B1cnBvc2UoV0VCS0lUX0lOUFVU
X01FVEhPRF9DT05URVhUKG1fY29udGV4dC5nZXQoKSkpOworICAgIH0KKworICAgIFdlYktpdElu
cHV0SGludHMgaGludHMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIHdlYmtpdF9pbnB1
dF9tZXRob2RfY29udGV4dF9nZXRfaW5wdXRfaGludHMoV0VCS0lUX0lOUFVUX01FVEhPRF9DT05U
RVhUKG1fY29udGV4dC5nZXQoKSkpOworICAgIH0KKwogICAgIEdSZWZQdHI8V2ViS2l0SW5wdXRN
ZXRob2RDb250ZXh0TW9jaz4gbV9jb250ZXh0OwogICAgIFZlY3RvcjxFdmVudD4gbV9ldmVudHM7
CiAgICAgdW5zaWduZWQgbV9ldmVudHNFeHBlY3RlZCB7IDAgfTsKQEAgLTY5Miw2ICs3MjIsMTU5
IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJLaXRJbnB1dE1ldGhvZENvbnRleHRSZXNldChJbnB1dE1l
dGhvZFRlc3QqIHRlc3QsIGdjb25zdHBvaW50CiAgICAgdGVzdC0+cmVzZXRFZGl0YWJsZSgpOwog
fQogCitzdGF0aWMgdm9pZCB0ZXN0V2ViS2l0SW5wdXRNZXRob2RDb250ZXh0Q29udGVudFR5cGUo
SW5wdXRNZXRob2RUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQoreworICAgIHRlc3QtPmxvYWRI
dG1sKCI8aW5wdXQgaWQ9J2VkaXRhYmxlJyBzcGVsbGNoZWNrPSdmYWxzZSc+PC9pbnB1dD4iLCBu
dWxscHRyKTsKKyAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKKyAgICB0ZXN0LT5m
b2N1c0VkaXRhYmxlQW5kV2FpdFVudGlsSW5wdXRNZXRob2RFbmFibGVkKCk7CisgICAgZ19hc3Nl
cnRfY21wdWludCh0ZXN0LT5wdXJwb3NlKCksID09LCBXRUJLSVRfSU5QVVRfUFVSUE9TRV9GUkVF
X0ZPUk0pOworICAgIGdfYXNzZXJ0X2NtcHVpbnQodGVzdC0+aGludHMoKSwgPT0sIFdFQktJVF9J
TlBVVF9ISU5UX05PTkUpOworICAgIHRlc3QtPnVuZm9jdXNFZGl0YWJsZUFuZFdhaXRVbnRpbElu
cHV0TWV0aG9kRGlzYWJsZWQoKTsKKworICAgIHRlc3QtPmxvYWRIdG1sKCI8aW5wdXQgaWQ9J2Vk
aXRhYmxlJyB0eXBlPSdudW1iZXInIHNwZWxsY2hlY2s9J2ZhbHNlJz4iLCBudWxscHRyKTsKKyAg
ICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKKyAgICB0ZXN0LT5mb2N1c0VkaXRhYmxl
QW5kV2FpdFVudGlsSW5wdXRNZXRob2RFbmFibGVkKCk7CisgICAgZ19hc3NlcnRfY21wdWludCh0
ZXN0LT5wdXJwb3NlKCksID09LCBXRUJLSVRfSU5QVVRfUFVSUE9TRV9OVU1CRVIpOworICAgIGdf
YXNzZXJ0X2NtcHVpbnQodGVzdC0+aGludHMoKSwgPT0sIFdFQktJVF9JTlBVVF9ISU5UX05PTkUp
OworICAgIHRlc3QtPnVuZm9jdXNFZGl0YWJsZUFuZFdhaXRVbnRpbElucHV0TWV0aG9kRGlzYWJs
ZWQoKTsKKworICAgIHRlc3QtPmxvYWRIdG1sKCI8aW5wdXQgaWQ9J2VkaXRhYmxlJyB0eXBlPSdu
dW1iZXInIHNwZWxsY2hlY2s9J2ZhbHNlJyBwYXR0ZXJuPSdbMC05XSonPiIsIG51bGxwdHIpOwor
ICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOworICAgIHRlc3QtPmZvY3VzRWRpdGFi
bGVBbmRXYWl0VW50aWxJbnB1dE1ldGhvZEVuYWJsZWQoKTsKKyAgICBnX2Fzc2VydF9jbXB1aW50
KHRlc3QtPnB1cnBvc2UoKSwgPT0sIFdFQktJVF9JTlBVVF9QVVJQT1NFX0RJR0lUUyk7CisgICAg
Z19hc3NlcnRfY21wdWludCh0ZXN0LT5oaW50cygpLCA9PSwgV0VCS0lUX0lOUFVUX0hJTlRfTk9O
RSk7CisgICAgdGVzdC0+dW5mb2N1c0VkaXRhYmxlQW5kV2FpdFVudGlsSW5wdXRNZXRob2REaXNh
YmxlZCgpOworCisgICAgdGVzdC0+bG9hZEh0bWwoIjxpbnB1dCBpZD0nZWRpdGFibGUnIHR5cGU9
J3RleHQnIHNwZWxsY2hlY2s9J2ZhbHNlJyBwYXR0ZXJuPSdcXGQqJz4iLCBudWxscHRyKTsKKyAg
ICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKKyAgICB0ZXN0LT5mb2N1c0VkaXRhYmxl
QW5kV2FpdFVudGlsSW5wdXRNZXRob2RFbmFibGVkKCk7CisgICAgZ19hc3NlcnRfY21wdWludCh0
ZXN0LT5wdXJwb3NlKCksID09LCBXRUJLSVRfSU5QVVRfUFVSUE9TRV9ESUdJVFMpOworICAgIGdf
YXNzZXJ0X2NtcHVpbnQodGVzdC0+aGludHMoKSwgPT0sIFdFQktJVF9JTlBVVF9ISU5UX05PTkUp
OworICAgIHRlc3QtPnVuZm9jdXNFZGl0YWJsZUFuZFdhaXRVbnRpbElucHV0TWV0aG9kRGlzYWJs
ZWQoKTsKKworICAgIHRlc3QtPmxvYWRIdG1sKCI8aW5wdXQgaWQ9J2VkaXRhYmxlJyB0eXBlPSd0
ZWwnIHNwZWxsY2hlY2s9J2ZhbHNlJz4iLCBudWxscHRyKTsKKyAgICB0ZXN0LT53YWl0VW50aWxM
b2FkRmluaXNoZWQoKTsKKyAgICB0ZXN0LT5mb2N1c0VkaXRhYmxlQW5kV2FpdFVudGlsSW5wdXRN
ZXRob2RFbmFibGVkKCk7CisgICAgZ19hc3NlcnRfY21wdWludCh0ZXN0LT5wdXJwb3NlKCksID09
LCBXRUJLSVRfSU5QVVRfUFVSUE9TRV9QSE9ORSk7CisgICAgZ19hc3NlcnRfY21wdWludCh0ZXN0
LT5oaW50cygpLCA9PSwgV0VCS0lUX0lOUFVUX0hJTlRfTk9ORSk7CisgICAgdGVzdC0+dW5mb2N1
c0VkaXRhYmxlQW5kV2FpdFVudGlsSW5wdXRNZXRob2REaXNhYmxlZCgpOworCisgICAgdGVzdC0+
bG9hZEh0bWwoIjxpbnB1dCBpZD0nZWRpdGFibGUnIHR5cGU9J3VybCcgc3BlbGxjaGVjaz0nZmFs
c2UnPiIsIG51bGxwdHIpOworICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOworICAg
IHRlc3QtPmZvY3VzRWRpdGFibGVBbmRXYWl0VW50aWxJbnB1dE1ldGhvZEVuYWJsZWQoKTsKKyAg
ICBnX2Fzc2VydF9jbXB1aW50KHRlc3QtPnB1cnBvc2UoKSwgPT0sIFdFQktJVF9JTlBVVF9QVVJQ
T1NFX1VSTCk7CisgICAgZ19hc3NlcnRfY21wdWludCh0ZXN0LT5oaW50cygpLCA9PSwgV0VCS0lU
X0lOUFVUX0hJTlRfTk9ORSk7CisgICAgdGVzdC0+dW5mb2N1c0VkaXRhYmxlQW5kV2FpdFVudGls
SW5wdXRNZXRob2REaXNhYmxlZCgpOworCisgICAgdGVzdC0+bG9hZEh0bWwoIjxpbnB1dCBpZD0n
ZWRpdGFibGUnIHR5cGU9J2VtYWlsJyBzcGVsbGNoZWNrPSdmYWxzZSc+IiwgbnVsbHB0cik7Cisg
ICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CisgICAgdGVzdC0+Zm9jdXNFZGl0YWJs
ZUFuZFdhaXRVbnRpbElucHV0TWV0aG9kRW5hYmxlZCgpOworICAgIGdfYXNzZXJ0X2NtcHVpbnQo
dGVzdC0+cHVycG9zZSgpLCA9PSwgV0VCS0lUX0lOUFVUX1BVUlBPU0VfRU1BSUwpOworICAgIGdf
YXNzZXJ0X2NtcHVpbnQodGVzdC0+aGludHMoKSwgPT0sIFdFQktJVF9JTlBVVF9ISU5UX05PTkUp
OworICAgIHRlc3QtPnVuZm9jdXNFZGl0YWJsZUFuZFdhaXRVbnRpbElucHV0TWV0aG9kRGlzYWJs
ZWQoKTsKKworI2lmIDAKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGVuYWJsZSBpbnB1dCBtZXRo
b2RzIGluIHBhc3N3b3JkIGZpZWxkcyB0b28uCisgICAgdGVzdC0+bG9hZEh0bWwoIjxpbnB1dCBp
ZD0nZWRpdGFibGUnIHR5cGU9J3Bhc3N3b3JkJz4iLCBudWxscHRyKTsKKyAgICB0ZXN0LT53YWl0
VW50aWxMb2FkRmluaXNoZWQoKTsKKyAgICB0ZXN0LT5mb2N1c0VkaXRhYmxlQW5kV2FpdFVudGls
SW5wdXRNZXRob2RFbmFibGVkKCk7CisgICAgZ19hc3NlcnRfY21wdWludCh0ZXN0LT5wdXJwb3Nl
KCksID09LCBXRUJLSVRfSU5QVVRfUFVSUE9TRV9QQVNTV09SRCk7CisgICAgZ19hc3NlcnRfY21w
dWludCh0ZXN0LT5oaW50cygpLCA9PSwgV0VCS0lUX0lOUFVUX0hJTlRfTk9ORSk7CisgICAgdGVz
dC0+dW5mb2N1c0VkaXRhYmxlQW5kV2FpdFVudGlsSW5wdXRNZXRob2REaXNhYmxlZCgpOworI2Vu
ZGlmCisKKyAgICB0ZXN0LT5sb2FkSHRtbCgiPGRpdiBjb250ZW50ZWRpdGFibGUgaWQ9J2VkaXRh
YmxlJyBpbnB1dG1vZGU9J3RleHQnIHNwZWxsY2hlY2s9J2ZhbHNlJz48L2Rpdj4iLCBudWxscHRy
KTsKKyAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKKyAgICB0ZXN0LT5mb2N1c0Vk
aXRhYmxlQW5kV2FpdFVudGlsSW5wdXRNZXRob2RFbmFibGVkKCk7CisgICAgZ19hc3NlcnRfY21w
dWludCh0ZXN0LT5wdXJwb3NlKCksID09LCBXRUJLSVRfSU5QVVRfUFVSUE9TRV9GUkVFX0ZPUk0p
OworICAgIGdfYXNzZXJ0X2NtcHVpbnQodGVzdC0+aGludHMoKSwgPT0sIFdFQktJVF9JTlBVVF9I
SU5UX05PTkUpOworICAgIHRlc3QtPnVuZm9jdXNFZGl0YWJsZUFuZFdhaXRVbnRpbElucHV0TWV0
aG9kRGlzYWJsZWQoKTsKKworICAgIHRlc3QtPmxvYWRIdG1sKCI8ZGl2IGNvbnRlbnRlZGl0YWJs
ZSBpZD0nZWRpdGFibGUnIGlucHV0bW9kZT0nZGVjaW1hbCcgc3BlbGxjaGVjaz0nZmFsc2UnPjwv
ZGl2PiIsIG51bGxwdHIpOworICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOworICAg
IHRlc3QtPmZvY3VzRWRpdGFibGVBbmRXYWl0VW50aWxJbnB1dE1ldGhvZEVuYWJsZWQoKTsKKyAg
ICBnX2Fzc2VydF9jbXB1aW50KHRlc3QtPnB1cnBvc2UoKSwgPT0sIFdFQktJVF9JTlBVVF9QVVJQ
T1NFX05VTUJFUik7CisgICAgZ19hc3NlcnRfY21wdWludCh0ZXN0LT5oaW50cygpLCA9PSwgV0VC
S0lUX0lOUFVUX0hJTlRfTk9ORSk7CisgICAgdGVzdC0+dW5mb2N1c0VkaXRhYmxlQW5kV2FpdFVu
dGlsSW5wdXRNZXRob2REaXNhYmxlZCgpOworCisgICAgdGVzdC0+bG9hZEh0bWwoIjxkaXYgY29u
dGVudGVkaXRhYmxlIGlkPSdlZGl0YWJsZScgaW5wdXRtb2RlPSdudW1lcmljJyBzcGVsbGNoZWNr
PSdmYWxzZSc+PC9kaXY+IiwgbnVsbHB0cik7CisgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlz
aGVkKCk7CisgICAgdGVzdC0+Zm9jdXNFZGl0YWJsZUFuZFdhaXRVbnRpbElucHV0TWV0aG9kRW5h
YmxlZCgpOworICAgIGdfYXNzZXJ0X2NtcHVpbnQodGVzdC0+cHVycG9zZSgpLCA9PSwgV0VCS0lU
X0lOUFVUX1BVUlBPU0VfRElHSVRTKTsKKyAgICBnX2Fzc2VydF9jbXB1aW50KHRlc3QtPmhpbnRz
KCksID09LCBXRUJLSVRfSU5QVVRfSElOVF9OT05FKTsKKyAgICB0ZXN0LT51bmZvY3VzRWRpdGFi
bGVBbmRXYWl0VW50aWxJbnB1dE1ldGhvZERpc2FibGVkKCk7CisKKyAgICB0ZXN0LT5sb2FkSHRt
bCgiPGRpdiBjb250ZW50ZWRpdGFibGUgaWQ9J2VkaXRhYmxlJyBpbnB1dG1vZGU9J3RlbCcgc3Bl
bGxjaGVjaz0nZmFsc2UnPjwvZGl2PiIsIG51bGxwdHIpOworICAgIHRlc3QtPndhaXRVbnRpbExv
YWRGaW5pc2hlZCgpOworICAgIHRlc3QtPmZvY3VzRWRpdGFibGVBbmRXYWl0VW50aWxJbnB1dE1l
dGhvZEVuYWJsZWQoKTsKKyAgICBnX2Fzc2VydF9jbXB1aW50KHRlc3QtPnB1cnBvc2UoKSwgPT0s
IFdFQktJVF9JTlBVVF9QVVJQT1NFX1BIT05FKTsKKyAgICBnX2Fzc2VydF9jbXB1aW50KHRlc3Qt
PmhpbnRzKCksID09LCBXRUJLSVRfSU5QVVRfSElOVF9OT05FKTsKKyAgICB0ZXN0LT51bmZvY3Vz
RWRpdGFibGVBbmRXYWl0VW50aWxJbnB1dE1ldGhvZERpc2FibGVkKCk7CisKKyAgICB0ZXN0LT5s
b2FkSHRtbCgiPGRpdiBjb250ZW50ZWRpdGFibGUgaWQ9J2VkaXRhYmxlJyBpbnB1dG1vZGU9J2Vt
YWlsJyBzcGVsbGNoZWNrPSdmYWxzZSc+PC9kaXY+IiwgbnVsbHB0cik7CisgICAgdGVzdC0+d2Fp
dFVudGlsTG9hZEZpbmlzaGVkKCk7CisgICAgdGVzdC0+Zm9jdXNFZGl0YWJsZUFuZFdhaXRVbnRp
bElucHV0TWV0aG9kRW5hYmxlZCgpOworICAgIGdfYXNzZXJ0X2NtcHVpbnQodGVzdC0+cHVycG9z
ZSgpLCA9PSwgV0VCS0lUX0lOUFVUX1BVUlBPU0VfRU1BSUwpOworICAgIGdfYXNzZXJ0X2NtcHVp
bnQodGVzdC0+aGludHMoKSwgPT0sIFdFQktJVF9JTlBVVF9ISU5UX05PTkUpOworICAgIHRlc3Qt
PnVuZm9jdXNFZGl0YWJsZUFuZFdhaXRVbnRpbElucHV0TWV0aG9kRGlzYWJsZWQoKTsKKworICAg
IHRlc3QtPmxvYWRIdG1sKCI8ZGl2IGNvbnRlbnRlZGl0YWJsZSBpZD0nZWRpdGFibGUnIGlucHV0
bW9kZT0ndXJsJyBzcGVsbGNoZWNrPSdmYWxzZSc+PC9kaXY+IiwgbnVsbHB0cik7CisgICAgdGVz
dC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CisgICAgdGVzdC0+Zm9jdXNFZGl0YWJsZUFuZFdh
aXRVbnRpbElucHV0TWV0aG9kRW5hYmxlZCgpOworICAgIGdfYXNzZXJ0X2NtcHVpbnQodGVzdC0+
cHVycG9zZSgpLCA9PSwgV0VCS0lUX0lOUFVUX1BVUlBPU0VfVVJMKTsKKyAgICBnX2Fzc2VydF9j
bXB1aW50KHRlc3QtPmhpbnRzKCksID09LCBXRUJLSVRfSU5QVVRfSElOVF9OT05FKTsKKyAgICB0
ZXN0LT51bmZvY3VzRWRpdGFibGVBbmRXYWl0VW50aWxJbnB1dE1ldGhvZERpc2FibGVkKCk7CisK
KyAgICB0ZXN0LT5sb2FkSHRtbCgiPGRpdiBjb250ZW50ZWRpdGFibGUgaWQ9J2VkaXRhYmxlJyBp
bnB1dG1vZGU9J3NlYXJjaCcgc3BlbGxjaGVjaz0nZmFsc2UnPjwvZGl2PiIsIG51bGxwdHIpOwor
ICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOworICAgIHRlc3QtPmZvY3VzRWRpdGFi
bGVBbmRXYWl0VW50aWxJbnB1dE1ldGhvZEVuYWJsZWQoKTsKKyAgICBnX2Fzc2VydF9jbXB1aW50
KHRlc3QtPnB1cnBvc2UoKSwgPT0sIFdFQktJVF9JTlBVVF9QVVJQT1NFX0ZSRUVfRk9STSk7Cisg
ICAgZ19hc3NlcnRfY21wdWludCh0ZXN0LT5oaW50cygpLCA9PSwgV0VCS0lUX0lOUFVUX0hJTlRf
Tk9ORSk7CisgICAgdGVzdC0+dW5mb2N1c0VkaXRhYmxlQW5kV2FpdFVudGlsSW5wdXRNZXRob2RE
aXNhYmxlZCgpOworCisgICAgdGVzdC0+bG9hZEh0bWwoIjxkaXYgY29udGVudGVkaXRhYmxlIGlk
PSdlZGl0YWJsZScgaW5wdXRtb2RlPSdub25lJyBzcGVsbGNoZWNrPSdmYWxzZSc+PC9kaXY+Iiwg
bnVsbHB0cik7CisgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CisgICAgdGVzdC0+
Zm9jdXNFZGl0YWJsZUFuZFdhaXRVbnRpbElucHV0TWV0aG9kRW5hYmxlZCgpOworICAgIGdfYXNz
ZXJ0X2NtcHVpbnQodGVzdC0+cHVycG9zZSgpLCA9PSwgV0VCS0lUX0lOUFVUX1BVUlBPU0VfRlJF
RV9GT1JNKTsKKyAgICBnX2Fzc2VydF9jbXB1aW50KHRlc3QtPmhpbnRzKCksID09LCBXRUJLSVRf
SU5QVVRfSElOVF9JTkhJQklUX09TSyk7CisgICAgdGVzdC0+dW5mb2N1c0VkaXRhYmxlQW5kV2Fp
dFVudGlsSW5wdXRNZXRob2REaXNhYmxlZCgpOworCisgICAgdGVzdC0+bG9hZEh0bWwoIjx0ZXh0
YXJlYSBpZD0nZWRpdGFibGUnPjwvdGV4dGFyZWE+IiwgbnVsbHB0cik7CisgICAgdGVzdC0+d2Fp
dFVudGlsTG9hZEZpbmlzaGVkKCk7CisgICAgdGVzdC0+Zm9jdXNFZGl0YWJsZUFuZFdhaXRVbnRp
bElucHV0TWV0aG9kRW5hYmxlZCgpOworICAgIGdfYXNzZXJ0X2NtcHVpbnQodGVzdC0+cHVycG9z
ZSgpLCA9PSwgV0VCS0lUX0lOUFVUX1BVUlBPU0VfRlJFRV9GT1JNKTsKKyAgICBnX2Fzc2VydF9j
bXB1aW50KHRlc3QtPmhpbnRzKCksID09LCBXRUJLSVRfSU5QVVRfSElOVF9TUEVMTENIRUNLKTsK
KyAgICB0ZXN0LT51bmZvY3VzRWRpdGFibGVBbmRXYWl0VW50aWxJbnB1dE1ldGhvZERpc2FibGVk
KCk7CisKKyAgICB0ZXN0LT5sb2FkSHRtbCgiPHRleHRhcmVhIGlkPSdlZGl0YWJsZScgYXV0b2Nh
cGl0YWxpemU9J25vbmUnPjwvdGV4dGFyZWE+IiwgbnVsbHB0cik7CisgICAgdGVzdC0+d2FpdFVu
dGlsTG9hZEZpbmlzaGVkKCk7CisgICAgdGVzdC0+Zm9jdXNFZGl0YWJsZUFuZFdhaXRVbnRpbElu
cHV0TWV0aG9kRW5hYmxlZCgpOworICAgIGdfYXNzZXJ0X2NtcHVpbnQodGVzdC0+cHVycG9zZSgp
LCA9PSwgV0VCS0lUX0lOUFVUX1BVUlBPU0VfRlJFRV9GT1JNKTsKKyAgICBnX2Fzc2VydF9jbXB1
aW50KHRlc3QtPmhpbnRzKCksID09LCBXRUJLSVRfSU5QVVRfSElOVF9TUEVMTENIRUNLIHwgV0VC
S0lUX0lOUFVUX0hJTlRfTE9XRVJDQVNFKTsKKyAgICB0ZXN0LT51bmZvY3VzRWRpdGFibGVBbmRX
YWl0VW50aWxJbnB1dE1ldGhvZERpc2FibGVkKCk7CisKKyAgICB0ZXN0LT5sb2FkSHRtbCgiPHRl
eHRhcmVhIGlkPSdlZGl0YWJsZScgYXV0b2NhcGl0YWxpemU9J3NlbnRlbmNlcyc+PC90ZXh0YXJl
YT4iLCBudWxscHRyKTsKKyAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKKyAgICB0
ZXN0LT5mb2N1c0VkaXRhYmxlQW5kV2FpdFVudGlsSW5wdXRNZXRob2RFbmFibGVkKCk7CisgICAg
Z19hc3NlcnRfY21wdWludCh0ZXN0LT5wdXJwb3NlKCksID09LCBXRUJLSVRfSU5QVVRfUFVSUE9T
RV9GUkVFX0ZPUk0pOworICAgIGdfYXNzZXJ0X2NtcHVpbnQodGVzdC0+aGludHMoKSwgPT0sIFdF
QktJVF9JTlBVVF9ISU5UX1NQRUxMQ0hFQ0sgfCBXRUJLSVRfSU5QVVRfSElOVF9VUFBFUkNBU0Vf
U0VOVEVOQ0VTKTsKKyAgICB0ZXN0LT51bmZvY3VzRWRpdGFibGVBbmRXYWl0VW50aWxJbnB1dE1l
dGhvZERpc2FibGVkKCk7CisKKyAgICB0ZXN0LT5sb2FkSHRtbCgiPHRleHRhcmVhIGlkPSdlZGl0
YWJsZScgYXV0b2NhcGl0YWxpemU9J3dvcmRzJz48L3RleHRhcmVhPiIsIG51bGxwdHIpOworICAg
IHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOworICAgIHRlc3QtPmZvY3VzRWRpdGFibGVB
bmRXYWl0VW50aWxJbnB1dE1ldGhvZEVuYWJsZWQoKTsKKyAgICBnX2Fzc2VydF9jbXB1aW50KHRl
c3QtPnB1cnBvc2UoKSwgPT0sIFdFQktJVF9JTlBVVF9QVVJQT1NFX0ZSRUVfRk9STSk7CisgICAg
Z19hc3NlcnRfY21wdWludCh0ZXN0LT5oaW50cygpLCA9PSwgV0VCS0lUX0lOUFVUX0hJTlRfU1BF
TExDSEVDSyB8IFdFQktJVF9JTlBVVF9ISU5UX1VQUEVSQ0FTRV9XT1JEUyk7CisgICAgdGVzdC0+
dW5mb2N1c0VkaXRhYmxlQW5kV2FpdFVudGlsSW5wdXRNZXRob2REaXNhYmxlZCgpOworCisgICAg
dGVzdC0+bG9hZEh0bWwoIjx0ZXh0YXJlYSBpZD0nZWRpdGFibGUnIGF1dG9jYXBpdGFsaXplPSdj
aGFyYWN0ZXJzJz48L3RleHRhcmVhPiIsIG51bGxwdHIpOworICAgIHRlc3QtPndhaXRVbnRpbExv
YWRGaW5pc2hlZCgpOworICAgIHRlc3QtPmZvY3VzRWRpdGFibGVBbmRXYWl0VW50aWxJbnB1dE1l
dGhvZEVuYWJsZWQoKTsKKyAgICBnX2Fzc2VydF9jbXB1aW50KHRlc3QtPnB1cnBvc2UoKSwgPT0s
IFdFQktJVF9JTlBVVF9QVVJQT1NFX0ZSRUVfRk9STSk7CisgICAgZ19hc3NlcnRfY21wdWludCh0
ZXN0LT5oaW50cygpLCA9PSwgV0VCS0lUX0lOUFVUX0hJTlRfU1BFTExDSEVDSyB8IFdFQktJVF9J
TlBVVF9ISU5UX1VQUEVSQ0FTRV9DSEFSUyk7CisgICAgdGVzdC0+dW5mb2N1c0VkaXRhYmxlQW5k
V2FpdFVudGlsSW5wdXRNZXRob2REaXNhYmxlZCgpOworfQorCiB2b2lkIGJlZm9yZUFsbCgpCiB7
CiAgICAgSW5wdXRNZXRob2RUZXN0OjphZGQoIldlYktpdElucHV0TWV0aG9kQ29udGV4dCIsICJz
aW1wbGUiLCB0ZXN0V2ViS2l0SW5wdXRNZXRob2RDb250ZXh0U2ltcGxlKTsKQEAgLTY5OSw2ICs4
ODIsNyBAQCB2b2lkIGJlZm9yZUFsbCgpCiAgICAgSW5wdXRNZXRob2RUZXN0OjphZGQoIldlYktp
dElucHV0TWV0aG9kQ29udGV4dCIsICJpbnZhbGlkLXNlcXVlbmNlIiwgdGVzdFdlYktpdElucHV0
TWV0aG9kQ29udGV4dEludmFsaWRTZXF1ZW5jZSk7CiAgICAgSW5wdXRNZXRob2RUZXN0OjphZGQo
IldlYktpdElucHV0TWV0aG9kQ29udGV4dCIsICJjYW5jZWwtc2VxdWVuY2UiLCB0ZXN0V2ViS2l0
SW5wdXRNZXRob2RDb250ZXh0Q2FuY2VsU2VxdWVuY2UpOwogICAgIElucHV0TWV0aG9kVGVzdDo6
YWRkKCJXZWJLaXRJbnB1dE1ldGhvZENvbnRleHQiLCAicmVzZXQiLCB0ZXN0V2ViS2l0SW5wdXRN
ZXRob2RDb250ZXh0UmVzZXQpOworICAgIElucHV0TWV0aG9kVGVzdDo6YWRkKCJXZWJLaXRJbnB1
dE1ldGhvZENvbnRleHQiLCAiY29udGVudC10eXBlIiwgdGVzdFdlYktpdElucHV0TWV0aG9kQ29u
dGV4dENvbnRlbnRUeXBlKTsKIH0KIAogdm9pZCBhZnRlckFsbCgpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>386440</attachid>
            <date>2019-12-27 06:37:24 -0800</date>
            <delta_ts>2019-12-27 06:39:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-ime-content-type.diff</filename>
            <type>text/plain</type>
            <size>86207</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCBkOTEzZTE4MDM1My4uNjhl
YTdiMGQ4OGMgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNiBAQAorMjAxOS0xMi0yNyAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxp
YS5jb20+CisKKyAgICAgICAgW0dUS11bV1BFXSBBZGQgQVBJIHRvIHNldCBwdXJwb3NlIGFuZCBo
aW50cyBvZiBhY3RpdmUgZWRpdGFibGUgZWxlbWVudCB0byBpbnB1dCBtZXRob2RzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDU2MDUKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgRU5BQkxFX0FVVE9D
QVBJVEFMSVpFIGJ1aWxkIGZsYWcuIEl0J3MgcHJpdmF0ZSBhbmQgZGlzYWJsZWQgYnkgZGVmYXVs
dCwgZW5hYmxlZCBpbiBHVEsgYW5kIFdQRSBwb3J0cy4KKworICAgICAgICAqIFNvdXJjZS9jbWFr
ZS9PcHRpb25zR1RLLmNtYWtlOgorICAgICAgICAqIFNvdXJjZS9jbWFrZS9PcHRpb25zV1BFLmNt
YWtlOgorICAgICAgICAqIFNvdXJjZS9jbWFrZS9XZWJLaXRGZWF0dXJlcy5jbWFrZToKKwogMjAx
OS0xMi0xOCAgRGllZ28gUGlubyBHYXJjaWEgIDxkcGlub0BpZ2FsaWEuY29tPgogCiAgICAgICAg
IFtHVEtdW1dQRV0gUmVuZGVyaXphdGlvbiBvZiBDb25pYyBncmFkaWVudHMKZGlmZiAtLWdpdCBh
L1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nIGIvUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cK
aW5kZXggMmNlYWZlZDZkY2UuLmFlZTI5NjcwNmYzIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRl
c3RzL0NoYW5nZUxvZworKysgYi9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE0IEBACisyMDE5LTEyLTI3ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlh
LmNvbT4KKworICAgICAgICBbR1RLXVtXUEVdIEFkZCBBUEkgdG8gc2V0IHB1cnBvc2UgYW5kIGhp
bnRzIG9mIGFjdGl2ZSBlZGl0YWJsZSBlbGVtZW50IHRvIGlucHV0IG1ldGhvZHMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTYwNQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNwbGl0IEVOQUJMRV9JT1Nf
QVVUT0NPUlJFQ1RfQU5EX0FVVE9DQVBJVEFMSVpFIGFuZCByZW1vdmUgdGhlIElPUyBwcmVmaXgu
CisKKyAgICAgICAgKiBTdGl0Y2hNYXJrZXIvd3RmL0ZlYXR1cmVEZWZpbmVzLmg6CisKIDIwMTkt
MTItMTYgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBT
dHlsZUJlbmNoIHN1YnRlc3QgZm9yIGR5bmFtaWMgbWVkaWEgcXVlcnkgcGVyZm9ybWFuY2UKZGlm
ZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3RpdGNoTWFya2VyL3d0Zi9GZWF0dXJlRGVmaW5l
cy5oIGIvUGVyZm9ybWFuY2VUZXN0cy9TdGl0Y2hNYXJrZXIvd3RmL0ZlYXR1cmVEZWZpbmVzLmgK
aW5kZXggYWQ0YjkxZWU4MjQuLjkyMDk5OTdmZWQyIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRl
c3RzL1N0aXRjaE1hcmtlci93dGYvRmVhdHVyZURlZmluZXMuaAorKysgYi9QZXJmb3JtYW5jZVRl
c3RzL1N0aXRjaE1hcmtlci93dGYvRmVhdHVyZURlZmluZXMuaApAQCAtODYsOCArODYsMTIgQEAK
ICNkZWZpbmUgRU5BQkxFX0xFVFRFUlBSRVNTIDEKICNlbmRpZgogCi0jaWYgIWRlZmluZWQoRU5B
QkxFX0lPU19BVVRPQ09SUkVDVF9BTkRfQVVUT0NBUElUQUxJWkUpCi0jZGVmaW5lIEVOQUJMRV9J
T1NfQVVUT0NPUlJFQ1RfQU5EX0FVVE9DQVBJVEFMSVpFIDEKKyNpZiAhZGVmaW5lZChFTkFCTEVf
QVVUT0NPUlJFQ1QpCisjZGVmaW5lIEVOQUJMRV9BVVRPQ09SUkVDVCAxCisjZW5kaWYKKworI2lm
ICFkZWZpbmVkKEVOQUJMRV9BVVRPQ0FQSVRBTElaRSkKKyNkZWZpbmUgRU5BQkxFX0FVVE9DQVBJ
VEFMSVpFIDEKICNlbmRpZgogCiAjaWYgIWRlZmluZWQoRU5BQkxFX0lPU19HRVNUVVJFX0VWRU5U
UykgJiYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggNGJmZGYwNWU4NDIuLjJkMmUyNWJj
NGVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE5LTEyLTI3ICBDYXJsb3MgR2FyY2lhIENhbXBv
cyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXVtXUEVdIEFkZCBBUEkgdG8g
c2V0IHB1cnBvc2UgYW5kIGhpbnRzIG9mIGFjdGl2ZSBlZGl0YWJsZSBlbGVtZW50IHRvIGlucHV0
IG1ldGhvZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIwNTYwNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFNwbGl0IEVOQUJMRV9JT1NfQVVUT0NPUlJFQ1RfQU5EX0FVVE9DQVBJVEFMSVpFIGFuZCByZW1v
dmUgdGhlIElPUyBwcmVmaXguCisKKyAgICAgICAgKiB3dGYvRmVhdHVyZURlZmluZXMuaDoKKwog
MjAxOS0xMi0yNCAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbTWVkaWEgaW4gR1BVIHByb2Nlc3NdIEVuYWJsZSBtZWRpYSBwbGF5ZXIgcHJveHkgbG9n
Z2luZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRmVhdHVyZURlZmluZXMuaCBiL1NvdXJj
ZS9XVEYvd3RmL0ZlYXR1cmVEZWZpbmVzLmgKaW5kZXggNjgyYTFlODk1YTIuLmIyN2ZkYTQ1MzU1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9GZWF0dXJlRGVmaW5lcy5oCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL0ZlYXR1cmVEZWZpbmVzLmgKQEAgLTEwNyw4ICsxMDcsMTIgQEAKICNkZWZpbmUg
RU5BQkxFX0xFVFRFUlBSRVNTIDEKICNlbmRpZgogCi0jaWYgIWRlZmluZWQoRU5BQkxFX0lPU19B
VVRPQ09SUkVDVF9BTkRfQVVUT0NBUElUQUxJWkUpCi0jZGVmaW5lIEVOQUJMRV9JT1NfQVVUT0NP
UlJFQ1RfQU5EX0FVVE9DQVBJVEFMSVpFIDEKKyNpZiAhZGVmaW5lZChFTkFCTEVfQVVUT0NPUlJF
Q1QpCisjZGVmaW5lIEVOQUJMRV9BVVRPQ09SUkVDVCAxCisjZW5kaWYKKworI2lmICFkZWZpbmVk
KEVOQUJMRV9BVVRPQ0FQSVRBTElaRSkKKyNkZWZpbmUgRU5BQkxFX0FVVE9DQVBJVEFMSVpFIDEK
ICNlbmRpZgogCiAjaWYgIWRlZmluZWQoRU5BQkxFX0lPU19HRVNUVVJFX0VWRU5UUykgJiYgVVNF
KEFQUExFX0lOVEVSTkFMX1NESykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBlNjczOGM2M2U4OC4uNzVmNjY3NzZm
ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAxOS0xMi0yNyAgQ2FybG9zIEdhcmNp
YSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS11bV1BFXSBBZGQg
QVBJIHRvIHNldCBwdXJwb3NlIGFuZCBoaW50cyBvZiBhY3RpdmUgZWRpdGFibGUgZWxlbWVudCB0
byBpbnB1dCBtZXRob2RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDU2MDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBVc2UgRU5BQkxFKEFVVE9DQVBJVEFMSVpFKSBhbmQgRU5BQkxFKEFVVE9DT1JSRUNU
KSBpbnN0ZWFkIG9mIEVOQUJMRShJT1NfQVVUT0NPUlJFQ1RfQU5EX0FVVE9DQVBJVEFMSVpFKS4K
KworICAgICAgICAqIFNvdXJjZXMudHh0OiBBZGQgQXV0b2NhcGl0YWxpemUuY3BwIHRvIHRoZSBi
dWlsZC4KKyAgICAgICAgKiBodG1sL0F1dG9jYXBpdGFsaXplLmNwcDogQWRkIEVOQUJMRShBVVRP
Q0FQSVRBTElaRSkgZ3VhcmRzLgorICAgICAgICAqIGh0bWwvQXV0b2NhcGl0YWxpemUuaDogRGl0
dG8uCisgICAgICAgICogaHRtbC9IVE1MRWxlbWVudC5jcHA6CisgICAgICAgICogaHRtbC9IVE1M
RWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTEVsZW1lbnQuaWRsOgorICAgICAgICAqIGh0
bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHA6CisgICAgICAgICogaHRtbC9IVE1MRm9ybUNv
bnRyb2xFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwOgorICAg
ICAgICAqIGh0bWwvSFRNTEZvcm1FbGVtZW50Lmg6CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xp
ZW50cy5jcHA6IFVwZGF0ZSB0byBuZXcgQVBJIG9mIEVkaXRvckNsaWVudDo6c2V0SW5wdXRNZXRo
b2RTdGF0ZQorICAgICAgICAqIHBhZ2UvRWRpdG9yQ2xpZW50Lmg6IFRoZSBmb2N1c2VkIGVsZW1l
bnQgb3IgbnVsbHB0ciBpcyBub3cgcmVjZWl2ZWQgYnkgc2V0SW5wdXRNZXRob2RTdGF0ZSgpIGlu
c3RlYWQgb2YgZW5hYmxlZC9kaXNhYmxlZCBib29sZWFuLgorICAgICAgICAqIHBhZ2UvRm9jdXND
b250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvY3VzQ29udHJvbGxlcjo6c2V0Rm9j
dXNlZEVsZW1lbnQpOiBQYXNzIHRoZSBmb2N1c2VkIGVsZW1lbnQgb3IgbnVsbHB0ciB0byBzZXRJ
bnB1dE1ldGhvZFN0YXRlKCkuCisKIDIwMTktMTItMjUgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFw
cGxlLmNvbT4KIAogICAgICAgICBSdW4gd2l0aCBvZmZzZXQgZnJvbSB0aGUgY29udGVudCBib3gn
cyBsb2dpY2FsIGxlZnQgcGFpbnQgaXRzIHRhYiBzdG9wIGF0IHdyb25nIHBvc2l0aW9uLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzLnR4dAppbmRleCBjOTY4MTg5YzhhOC4uM2QxY2M4MmE4ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBA
IC0xMDk0LDYgKzEwOTQsNyBAQCBoaXN0b3J5L0NhY2hlZEZyYW1lLmNwcAogaGlzdG9yeS9DYWNo
ZWRQYWdlLmNwcAogaGlzdG9yeS9IaXN0b3J5SXRlbS5jcHAKIAoraHRtbC9BdXRvY2FwaXRhbGl6
ZS5jcHAKIGh0bWwvQXV0b2ZpbGwuY3BwCiBodG1sL0Jhc2VCdXR0b25JbnB1dFR5cGUuY3BwCiBo
dG1sL0Jhc2VDaGVja2FibGVJbnB1dFR5cGUuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0F1dG9jYXBpdGFsaXplLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQXV0b2NhcGl0
YWxpemUuY3BwCmluZGV4IDIxOGYzZGIyZjYxLi4zYTBmOTExOTliNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9BdXRvY2FwaXRhbGl6ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9BdXRvY2FwaXRhbGl6ZS5jcHAKQEAgLTI2LDYgKzI2LDggQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJBdXRvY2FwaXRhbGl6ZS5oIgogCisjaWYgRU5BQkxFKEFVVE9DQVBJ
VEFMSVpFKQorCiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKQEAgLTc3LDMgKzc5LDUgQEAgY29uc3QgQXRvbVN0cmluZyYgc3RyaW5nRm9yQXV0
b2NhcGl0YWxpemVUeXBlKEF1dG9jYXBpdGFsaXplVHlwZSB0eXBlKQogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoQVVUT0NBUElUQUxJWkUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0F1dG9jYXBpdGFsaXplLmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0F1dG9jYXBpdGFsaXplLmgKaW5kZXggOTE1MWJjMWEyZjAuLjFjMDUyZmVkYjkwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0F1dG9jYXBpdGFsaXplLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9BdXRvY2FwaXRhbGl6ZS5oCkBAIC0yNSw2ICsyNSw4IEBACiAKICNw
cmFnbWEgb25jZQogCisjaWYgRU5BQkxFKEFVVE9DQVBJVEFMSVpFKQorCiAjaW5jbHVkZSAiQXV0
b2NhcGl0YWxpemVUeXBlcy5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21TdHJpbmcuaD4KIApA
QCAtMzQsMyArMzYsNSBAQCBBdXRvY2FwaXRhbGl6ZVR5cGUgYXV0b2NhcGl0YWxpemVUeXBlRm9y
QXR0cmlidXRlVmFsdWUoY29uc3QgQXRvbVN0cmluZyYpOwogY29uc3QgQXRvbVN0cmluZyYgc3Ry
aW5nRm9yQXV0b2NhcGl0YWxpemVUeXBlKEF1dG9jYXBpdGFsaXplVHlwZSk7CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShBVVRPQ0FQSVRBTElaRSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKaW5kZXggN2FiMWZmNWRlMjcuLjBhMGNiMDk4MTdhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcApAQCAtMTA2OSw3ICsxMDY5LDcgQEAgYm9v
bCBIVE1MRWxlbWVudDo6aXNBY3R1YWxseURpc2FibGVkKCkgY29uc3QKICAgICByZXR1cm4gY2Fu
QmVBY3R1YWxseURpc2FibGVkKCkgJiYgaXNEaXNhYmxlZEZvcm1Db250cm9sKCk7CiB9CiAKLSNp
ZiBFTkFCTEUoSU9TX0FVVE9DT1JSRUNUX0FORF9BVVRPQ0FQSVRBTElaRSkKKyNpZiBFTkFCTEUo
QVVUT0NBUElUQUxJWkUpCiAKIGNvbnN0IEF0b21TdHJpbmcmIEhUTUxFbGVtZW50OjphdXRvY2Fw
aXRhbGl6ZSgpIGNvbnN0CiB7CkBAIC0xMDg2LDYgKzEwODYsMTAgQEAgdm9pZCBIVE1MRWxlbWVu
dDo6c2V0QXV0b2NhcGl0YWxpemUoY29uc3QgQXRvbVN0cmluZyYgdmFsdWUpCiAgICAgc2V0QXR0
cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihhdXRvY2FwaXRhbGl6ZUF0dHIsIHZhbHVlKTsK
IH0KIAorI2VuZGlmCisKKyNpZiBFTkFCTEUoQVVUT0NPUlJFQ1QpCisKIGJvb2wgSFRNTEVsZW1l
bnQ6OnNob3VsZEF1dG9jb3JyZWN0KCkgY29uc3QKIHsKICAgICBhdXRvJiBhdXRvY29ycmVjdFZh
bHVlID0gYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OmF1dG9jb3Jy
ZWN0QXR0cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmgKaW5kZXggZDJjZjY5NTRjNDkuLmYx
MDIwYmJhMTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5oCkBAIC0yMiw3ICsyMiw3IEBA
CiAKICNwcmFnbWEgb25jZQogCi0jaWYgRU5BQkxFKElPU19BVVRPQ09SUkVDVF9BTkRfQVVUT0NB
UElUQUxJWkUpCisjaWYgRU5BQkxFKEFVVE9DQVBJVEFMSVpFKQogI2luY2x1ZGUgIkF1dG9jYXBp
dGFsaXplLmgiCiAjZW5kaWYKIApAQCAtMTAyLDExICsxMDIsMTMgQEAgcHVibGljOgogICAgIGJv
b2wgY2FuQmVBY3R1YWxseURpc2FibGVkKCkgY29uc3Q7CiAgICAgYm9vbCBpc0FjdHVhbGx5RGlz
YWJsZWQoKSBjb25zdDsKIAotI2lmIEVOQUJMRShJT1NfQVVUT0NPUlJFQ1RfQU5EX0FVVE9DQVBJ
VEFMSVpFKQorI2lmIEVOQUJMRShBVVRPQ0FQSVRBTElaRSkKICAgICBXRUJDT1JFX0VYUE9SVCB2
aXJ0dWFsIEF1dG9jYXBpdGFsaXplVHlwZSBhdXRvY2FwaXRhbGl6ZVR5cGUoKSBjb25zdDsKICAg
ICBXRUJDT1JFX0VYUE9SVCBjb25zdCBBdG9tU3RyaW5nJiBhdXRvY2FwaXRhbGl6ZSgpIGNvbnN0
OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0QXV0b2NhcGl0YWxpemUoY29uc3QgQXRvbVN0
cmluZyYgdmFsdWUpOworI2VuZGlmCiAKKyNpZiBFTkFCTEUoQVVUT0NPUlJFQ1QpCiAgICAgYm9v
bCBhdXRvY29ycmVjdCgpIGNvbnN0IHsgcmV0dXJuIHNob3VsZEF1dG9jb3JyZWN0KCk7IH0KICAg
ICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIGJvb2wgc2hvdWxkQXV0b2NvcnJlY3QoKSBjb25zdDsK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEF1dG9jb3JyZWN0KGJvb2wpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxFbGVtZW50LmlkbAppbmRleCBhMWY4NDNkZjdhNy4uNjI5MmNmYTlhNzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaWRsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaWRsCkBAIC01OCw4ICs1OCw4IEBACiAgICAgW0NFUmVh
Y3Rpb25zXSBhdHRyaWJ1dGUgW1RyZWF0TnVsbEFzPUVtcHR5U3RyaW5nXSBET01TdHJpbmcgb3V0
ZXJUZXh0OwogCiAgICAgLy8gaU9TIGF1dG9jb3JyZWN0IC8gYXV0b2NhcGl0YWxpemF0aW9uIGV4
dGVuc2lvbnMuCi0gICAgW0NvbmRpdGlvbmFsPUlPU19BVVRPQ09SUkVDVF9BTkRfQVVUT0NBUElU
QUxJWkUsIENFUmVhY3Rpb25zXSBhdHRyaWJ1dGUgYm9vbGVhbiBhdXRvY29ycmVjdDsKLSAgICBb
Q29uZGl0aW9uYWw9SU9TX0FVVE9DT1JSRUNUX0FORF9BVVRPQ0FQSVRBTElaRSwgQ0VSZWFjdGlv
bnNdIGF0dHJpYnV0ZSBbVHJlYXROdWxsQXM9RW1wdHlTdHJpbmddIERPTVN0cmluZyBhdXRvY2Fw
aXRhbGl6ZTsKKyAgICBbQ29uZGl0aW9uYWw9QVVUT0NPUlJFQ1QsIENFUmVhY3Rpb25zXSBhdHRy
aWJ1dGUgYm9vbGVhbiBhdXRvY29ycmVjdDsKKyAgICBbQ29uZGl0aW9uYWw9QVVUT0NBUElUQUxJ
WkUsIENFUmVhY3Rpb25zXSBhdHRyaWJ1dGUgW1RyZWF0TnVsbEFzPUVtcHR5U3RyaW5nXSBET01T
dHJpbmcgYXV0b2NhcGl0YWxpemU7CiAKICAgICAvLyBGSVhNRTogV2UgYXJlIHRoZSBvbmx5IGJy
b3dzZXIgdG8gc3VwcG9ydCB0aGlzIG5vdyB0aGF0IEJsaW5rIGRyb3BwZWQgaXQgKGh0dHA6Ly9j
cmJ1Zy5jb20vNjg4OTQzKS4KICAgICBbQ0VSZWFjdGlvbnMsIFJlZmxlY3RdIGF0dHJpYnV0ZSBE
T01TdHJpbmcgd2Via2l0ZHJvcHpvbmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9y
bUNvbnRyb2xFbGVtZW50LmNwcAppbmRleCBlMGMyZTBmMDEzOS4uZDYxMWJjMWIyMjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcApAQCAtNjE1
LDcgKzYxNSw3IEBAIHZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6ZGlzcGF0Y2hCbHVyRXZl
bnQoUmVmUHRyPEVsZW1lbnQ+JiYgbmV3Rm9jdXNlZEVsZW1lCiAgICAgaGlkZVZpc2libGVWYWxp
ZGF0aW9uTWVzc2FnZSgpOwogfQogCi0jaWYgRU5BQkxFKElPU19BVVRPQ09SUkVDVF9BTkRfQVVU
T0NBUElUQUxJWkUpCisjaWYgRU5BQkxFKEFVVE9DT1JSRUNUKQogCiAvLyBGSVhNRTogV2Ugc2hv
dWxkIGxvb2sgdG8gc2hhcmUgdGhpcyBjb2RlIHdpdGggY2xhc3MgSFRNTEZvcm1FbGVtZW50IGlu
c3RlYWQgb2YgZHVwbGljYXRpbmcgdGhlIGxvZ2ljLgogCkBAIC02MjksNiArNjI5LDEwIEBAIGJv
b2wgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6c2hvdWxkQXV0b2NvcnJlY3QoKSBjb25zdAogICAg
IHJldHVybiB0cnVlOwogfQogCisjZW5kaWYKKworI2lmIEVOQUJMRShBVVRPQ0FQSVRBTElaRSkK
KwogQXV0b2NhcGl0YWxpemVUeXBlIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmF1dG9jYXBpdGFs
aXplVHlwZSgpIGNvbnN0CiB7CiAgICAgQXV0b2NhcGl0YWxpemVUeXBlIHR5cGUgPSBIVE1MRWxl
bWVudDo6YXV0b2NhcGl0YWxpemVUeXBlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZv
cm1Db250cm9sRWxlbWVudC5oCmluZGV4IGNmYzk3OGVkN2E4Li42MTM0MGJmYTczYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmgKQEAgLTI3LDcgKzI3
LDcgQEAKICNpbmNsdWRlICJGb3JtQXNzb2NpYXRlZEVsZW1lbnQuaCIKICNpbmNsdWRlICJMYWJl
bGFibGVFbGVtZW50LmgiCiAKLSNpZiBFTkFCTEUoSU9TX0FVVE9DT1JSRUNUX0FORF9BVVRPQ0FQ
SVRBTElaRSkKKyNpZiBFTkFCTEUoQVVUT0NBUElUQUxJWkUpCiAjaW5jbHVkZSAiQXV0b2NhcGl0
YWxpemUuaCIKICNlbmRpZgogCkBAIC05MSw4ICs5MSwxMSBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCBib29sIGlzQWN0aXZhdGVkU3VibWl0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2
aXJ0dWFsIHZvaWQgc2V0QWN0aXZhdGVkU3VibWl0KGJvb2wpIHsgfQogCi0jaWYgRU5BQkxFKElP
U19BVVRPQ09SUkVDVF9BTkRfQVVUT0NBUElUQUxJWkUpCisjaWYgRU5BQkxFKEFVVE9DT1JSRUNU
KQogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2hvdWxkQXV0b2NvcnJlY3QoKSBjb25zdCBmaW5h
bDsKKyNlbmRpZgorCisjaWYgRU5BQkxFKEFVVE9DQVBJVEFMSVpFKQogICAgIFdFQkNPUkVfRVhQ
T1JUIEF1dG9jYXBpdGFsaXplVHlwZSBhdXRvY2FwaXRhbGl6ZVR5cGUoKSBjb25zdCBmaW5hbDsK
ICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKaW5kZXggMTVh
ZDU3ZjkxYmIuLmU3ZTQxNGM4N2RjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxGb3JtRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1l
bnQuY3BwCkBAIC00MDYsNyArNDA2LDcgQEAgdm9pZCBIVE1MRm9ybUVsZW1lbnQ6OnJlc2V0QXNz
b2NpYXRlZEZvcm1Db250cm9sRWxlbWVudHMoKQogICAgICAgICBhc3NvY2lhdGVkRm9ybUNvbnRy
b2xFbGVtZW50LT5yZXNldCgpOwogfQogCi0jaWYgRU5BQkxFKElPU19BVVRPQ09SUkVDVF9BTkRf
QVVUT0NBUElUQUxJWkUpCisjaWYgRU5BQkxFKEFVVE9DT1JSRUNUKQogCiAvLyBGSVhNRTogV2Ug
c2hvdWxkIGxvb2sgdG8gc2hhcmUgdGhpcyBjb2RlIHdpdGggY2xhc3MgSFRNTEZvcm1Db250cm9s
RWxlbWVudCBpbnN0ZWFkIG9mIGR1cGxpY2F0aW5nIHRoZSBsb2dpYy4KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEZvcm1FbGVtZW50LmgKaW5kZXggYjIxNzFkNzE5NTEuLjQ3ZTM5ZmQ1NzdmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmgKQEAgLTMxLDEwICszMSw2IEBACiAjaW5j
bHVkZSA8d3RmL0lzb01hbGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrSGFzaFNldC5oPgogCi0j
aWYgRU5BQkxFKElPU19BVVRPQ09SUkVDVF9BTkRfQVVUT0NBUElUQUxJWkUpCi0jaW5jbHVkZSAi
QXV0b2NhcGl0YWxpemUuaCIKLSNlbmRpZgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IEV2ZW50OwpAQCAtNjcsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBzZXRBdXRvY29tcGxldGUoY29uc3QgQXRvbVN0cmluZyYpOwogICAgIFdFQkNPUkVfRVhQT1JU
IGNvbnN0IEF0b21TdHJpbmcmIGF1dG9jb21wbGV0ZSgpIGNvbnN0OwogCi0jaWYgRU5BQkxFKElP
U19BVVRPQ09SUkVDVF9BTkRfQVVUT0NBUElUQUxJWkUpCisjaWYgRU5BQkxFKEFVVE9DT1JSRUNU
KQogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2hvdWxkQXV0b2NvcnJlY3QoKSBjb25zdCBmaW5h
bDsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGll
bnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCmluZGV4IDBl
YjVhMTIwYWY4Li44NGU0ZTE4YzNmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0VtcHR5Q2xpZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50
cy5jcHAKQEAgLTI5OSw3ICsyOTksNyBAQCBwcml2YXRlOgogICAgIGJvb2wgc3BlbGxpbmdVSUlz
U2hvd2luZygpIGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICB2b2lkIHdpbGxTZXRJbnB1
dE1ldGhvZFN0YXRlKCkgZmluYWwgeyB9Ci0gICAgdm9pZCBzZXRJbnB1dE1ldGhvZFN0YXRlKGJv
b2wpIGZpbmFsIHsgfQorICAgIHZvaWQgc2V0SW5wdXRNZXRob2RTdGF0ZShFbGVtZW50KikgZmlu
YWwgeyB9CiAKICAgICBib29sIGNhblNob3dGb250UGFuZWwoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBmYWxzZTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaAppbmRleCBjYTdiNjg2Y2Y5
NC4uOTM2NzMwZjk2ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaApAQCAtMTc5LDcg
KzE3OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2hvd1NwZWxsaW5nVUkoYm9vbCBz
aG93KSA9IDA7CiAgICAgdmlydHVhbCBib29sIHNwZWxsaW5nVUlJc1Nob3dpbmcoKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIHdpbGxTZXRJbnB1dE1ldGhvZFN0YXRlKCkgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCBzZXRJbnB1dE1ldGhvZFN0YXRlKGJvb2wgZW5hYmxlZCkgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBzZXRJbnB1dE1ldGhvZFN0YXRlKEVsZW1lbnQqKSA9IDA7CiAKICAgICAvLyBTdXBw
b3J0IGZvciBnbG9iYWwgc2VsZWN0aW9ucywgdXNlZCBvbiBwbGF0Zm9ybXMgbGlrZSB0aGUgWCBX
aW5kb3cgU3lzdGVtIHRoYXQgdHJlYXQKICAgICAvLyBzZWxlY3Rpb24gYXMgYSB0eXBlIG9mIGNs
aXBib2FyZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcAppbmRleCBlNTk0
MGRkMmE4Yi4uZTc5Zjc4NWFiM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRm9j
dXNDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxl
ci5jcHAKQEAgLTgzNSwxNCArODM1LDE0IEBAIGJvb2wgRm9jdXNDb250cm9sbGVyOjpzZXRGb2N1
c2VkRWxlbWVudChFbGVtZW50KiBlbGVtZW50LCBGcmFtZSYgbmV3Rm9jdXNlZEZyYW1lCiAgICAg
aWYgKCFlbGVtZW50KSB7CiAgICAgICAgIGlmIChvbGREb2N1bWVudCkKICAgICAgICAgICAgIG9s
ZERvY3VtZW50LT5zZXRGb2N1c2VkRWxlbWVudChudWxscHRyKTsKLSAgICAgICAgbV9wYWdlLmVk
aXRvckNsaWVudCgpLnNldElucHV0TWV0aG9kU3RhdGUoZmFsc2UpOworICAgICAgICBtX3BhZ2Uu
ZWRpdG9yQ2xpZW50KCkuc2V0SW5wdXRNZXRob2RTdGF0ZShudWxscHRyKTsKICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgfQogCiAgICAgUmVmPERvY3VtZW50PiBuZXdEb2N1bWVudChlbGVtZW50
LT5kb2N1bWVudCgpKTsKIAogICAgIGlmIChuZXdEb2N1bWVudC0+Zm9jdXNlZEVsZW1lbnQoKSA9
PSBlbGVtZW50KSB7Ci0gICAgICAgIG1fcGFnZS5lZGl0b3JDbGllbnQoKS5zZXRJbnB1dE1ldGhv
ZFN0YXRlKGVsZW1lbnQtPnNob3VsZFVzZUlucHV0TWV0aG9kKCkpOworICAgICAgICBtX3BhZ2Uu
ZWRpdG9yQ2xpZW50KCkuc2V0SW5wdXRNZXRob2RTdGF0ZShlbGVtZW50KTsKICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgfQogICAgIApAQCAtODYyLDcgKzg2Miw3IEBAIGJvb2wgRm9jdXNDb250
cm9sbGVyOjpzZXRGb2N1c2VkRWxlbWVudChFbGVtZW50KiBlbGVtZW50LCBGcmFtZSYgbmV3Rm9j
dXNlZEZyYW1lCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChuZXdEb2N1bWVudC0+
Zm9jdXNlZEVsZW1lbnQoKSA9PSBlbGVtZW50KQotICAgICAgICBtX3BhZ2UuZWRpdG9yQ2xpZW50
KCkuc2V0SW5wdXRNZXRob2RTdGF0ZShlbGVtZW50LT5zaG91bGRVc2VJbnB1dE1ldGhvZCgpKTsK
KyAgICAgICAgbV9wYWdlLmVkaXRvckNsaWVudCgpLnNldElucHV0TWV0aG9kU3RhdGUoZWxlbWVu
dCk7CiAKICAgICBtX2ZvY3VzU2V0VGltZSA9IE1vbm90b25pY1RpbWU6Om5vdygpOwogICAgIG1f
Zm9jdXNSZXBhaW50VGltZXIuc3RvcCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA2ZjYxNmM3OGFkMy4uYjNmOGM0
ODkyMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODQgQEAKKzIwMTktMTItMjcgIENhcmxvcyBHYXJj
aWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdW1dQRV0gQWRk
IEFQSSB0byBzZXQgcHVycG9zZSBhbmQgaGludHMgb2YgYWN0aXZlIGVkaXRhYmxlIGVsZW1lbnQg
dG8gaW5wdXQgbWV0aG9kcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjA1NjA1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWRkIGlucHV0LXB1cnBvc2UgYW5kIGlucHV0LWhpbnRzIHByb3BlcnRpZXMgdG8g
V2ViS2l0SW5wdXRNZXRob2RDb250ZXh0LiBUaGUgbWVzc2FnZSBTZXRJbnB1dE1ldGhvZFN0YXRl
IG5vdworICAgICAgICByZWNlaXZlcyBhbiBvcHRpb25hbCBJbnB1dE1ldGhvZFN0YXRlIHN0cnVj
dCB3aXRoIGluZm9ybWF0aW9uIGFib3V0IHRoZSBwdXJwb3NlIGFuZCBoaW50cyBvZiB0aGUgYWN0
aXZlIGVkaXRhYmxlCisgICAgICAgIGVsZW1lbnQuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtp
dC9tZXNzYWdlcy5weTogT25seSBpbmNsdWRlIElucHV0TWV0aG9kU3RhdGUuaCBmb3IgR1RLIGFu
ZCBXUEUuCisgICAgICAgICogU2hhcmVkL2dsaWIvSW5wdXRNZXRob2RTdGF0ZS5jcHA6IEFkZGVk
LgorICAgICAgICAoV2ViS2l0OjpJbnB1dE1ldGhvZFN0YXRlOjpzZXRQdXJwb3NlT3JIaW50Rm9y
SW5wdXRNb2RlKToKKyAgICAgICAgKFdlYktpdDo6aW5wdXRFbGVtZW50SGFzRGlnaXRzUGF0dGVy
bik6CisgICAgICAgIChXZWJLaXQ6OklucHV0TWV0aG9kU3RhdGU6OnNldFB1cnBvc2VGb3JJbnB1
dEVsZW1lbnQpOgorICAgICAgICAoV2ViS2l0OjpJbnB1dE1ldGhvZFN0YXRlOjphZGRIaW50c0Zv
ckF1dG9jYXBpdGFsaXplVHlwZSk6CisgICAgICAgIChXZWJLaXQ6OklucHV0TWV0aG9kU3RhdGU6
OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OklucHV0TWV0aG9kU3RhdGU6OmRlY29k
ZSk6CisgICAgICAgICogU2hhcmVkL2dsaWIvSW5wdXRNZXRob2RTdGF0ZS5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYktpdDo6b3BlcmF0b3I9PSk6CisgICAgICAgICogU291cmNlc0dUSy50eHQ6Cisg
ICAgICAgICogU291cmNlc1dQRS50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL0lu
cHV0TWV0aG9kRmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5wdXRNZXRob2RGaWx0ZXI6
OnNldENvbnRleHQpOiBVc2UgaXNFbmFibGVkKCkgaW5zdGVhZCBvZiBtX2VuYWJsZWQuCisgICAg
ICAgIChXZWJLaXQ6OklucHV0TWV0aG9kRmlsdGVyOjpzZXRTdGF0ZSk6IE5vdyByZWNlaXZlcyBh
biBvcHRpb25hbCBJbnB1dE1ldGhvZFN0YXRlIHN0cnVjdC4KKyAgICAgICAgKFdlYktpdDo6SW5w
dXRNZXRob2RGaWx0ZXI6OmZpbHRlcktleUV2ZW50KTogVXNlIGlzRW5hYmxlZCgpIGluc3RlYWQg
b2YgbV9lbmFibGVkLgorICAgICAgICAoV2ViS2l0OjpJbnB1dE1ldGhvZEZpbHRlcjo6aXNWaWV3
Rm9jdXNlZCBjb25zdCk6IERpdHRvLgorICAgICAgICAoV2ViS2l0Ojp0b1dlYktpdFB1cnBvc2Up
OiBIZWxwZXIgdG8gY29udmVydCBJbnB1dE1ldGhvZFN0YXRlOjpQdXJwb3NlIHRvIFdlYktpdElu
cHV0UHVycG9zZS4KKyAgICAgICAgKFdlYktpdDo6dG9XZWJLaXRIaW50cyk6IEhlbHBlciB0byBj
b252ZXJ0IElucHV0TWV0aG9kU3RhdGU6OkhpbnQgdG8gV2ViS2l0SW5wdXRIaW50cy4KKyAgICAg
ICAgKFdlYktpdDo6SW5wdXRNZXRob2RGaWx0ZXI6Om5vdGlmeUZvY3VzZWRJbik6IFNldCB0aGUg
cHVycG9zZSBhbmQgaGludHMgdG8gdGhlIGNvbnRleHQuCisgICAgICAgIChXZWJLaXQ6OklucHV0
TWV0aG9kRmlsdGVyOjpub3RpZnlGb2N1c2VkT3V0KTogVXNlIGlzRW5hYmxlZCgpIGluc3RlYWQg
b2YgbV9lbmFibGVkLgorICAgICAgICAoV2ViS2l0OjpJbnB1dE1ldGhvZEZpbHRlcjo6bm90aWZ5
Q3Vyc29yUmVjdCk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpJbnB1dE1ldGhvZEZpbHRlcjo6
cHJlZWRpdFN0YXJ0ZWQpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6SW5wdXRNZXRob2RGaWx0
ZXI6OnByZWVkaXRDaGFuZ2VkKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OklucHV0TWV0aG9k
RmlsdGVyOjpwcmVlZGl0RmluaXNoZWQpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6SW5wdXRN
ZXRob2RGaWx0ZXI6OmNvbW1pdHRlZCk6IERpdHRvLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Z2xpYi9JbnB1dE1ldGhvZEZpbHRlci5oOgorICAgICAgICAoV2ViS2l0OjpJbnB1dE1ldGhvZEZp
bHRlcjo6aXNFbmFibGVkIGNvbnN0KTogUmV0dXJuIHRydWUgaWYgd2UgaGF2ZSBhIHN0YXRlLgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRJbnB1dE1ldGhvZENvbnRleHQuY3Bw
OgorICAgICAgICAod2Via2l0SW5wdXRNZXRob2RDb250ZXh0U2V0UHJvcGVydHkpOiBQcm9wZXJ0
aWVzIHNldHRlci4KKyAgICAgICAgKHdlYmtpdElucHV0TWV0aG9kQ29udGV4dEdldFByb3BlcnR5
KTogUHJvcGVydGllcyBnZXR0ZXIuCisgICAgICAgICh3ZWJraXRfaW5wdXRfbWV0aG9kX2NvbnRl
eHRfY2xhc3NfaW5pdCk6IEFkZCBpbXBsZW1lbnRhdGlvbiBmb3IgcHJvcGVydGllcyBnZXR0ZXIg
YW5kIHNldHRlci4KKyAgICAgICAgKHdlYmtpdF9pbnB1dF9tZXRob2RfY29udGV4dF9nZXRfaW5w
dXRfcHVycG9zZSk6CisgICAgICAgICh3ZWJraXRfaW5wdXRfbWV0aG9kX2NvbnRleHRfc2V0X2lu
cHV0X3B1cnBvc2UpOgorICAgICAgICAod2Via2l0X2lucHV0X21ldGhvZF9jb250ZXh0X2dldF9p
bnB1dF9oaW50cyk6CisgICAgICAgICh3ZWJraXRfaW5wdXRfbWV0aG9kX2NvbnRleHRfc2V0X2lu
cHV0X2hpbnRzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRJbnB1dE1ldGhv
ZENvbnRleHQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRJbnB1dE1ldGhv
ZENvbnRleHRJbXBsR3RrLmNwcDoKKyAgICAgICAgKHRvR3RrSW5wdXRQdXJwb3NlKTogSGVscGVy
IHRvIGNvbnZlcnQgV2ViS2l0SW5wdXRQdXJwb3NlIHRvIEd0a0lucHV0UHVycG9zZS4KKyAgICAg
ICAgKHRvR3RrSW5wdXRIaW50cyk6IEhlbHBlciB0byBjb252ZXJ0IFdlYktpdElucHV0SGludHMg
dG8gR3RrSW5wdXRIaW50cy4KKyAgICAgICAgKGlucHV0UHVycG9zZUNoYW5nZWRDYWxsYmFjayk6
IFNldCB0aGUgcHVycG9zZSBvbiBHdGtJTUNvbnRleHQuCisgICAgICAgIChpbnB1dEhpbnRzQ2hh
bmdlZENhbGxiYWNrKTogU2V0IHRoZSBoaW50cyBvbiBHdGtJTUNvbnRleHQuCisgICAgICAgICh3
ZWJraXRJbnB1dE1ldGhvZENvbnRleHRJbXBsR3RrQ29uc3RydWN0ZWQpOiBDb25uZWN0IHRvIG5v
dGlmeSBzaWduYWwgZm9yIGlucHV0LXB1cnBvc2UgYW5kIGlucHV0LWhpbnRzCisgICAgICAgIHBy
b3BlcnRpZXMgb2YgdGhlIGNvbnRleHQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0V2ViVmlld0Jhc2UuY3BwOgorICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VTZXRJbnB1dE1l
dGhvZFN0YXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFz
ZVByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGst
NC4wLXNlY3Rpb25zLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3dwZS9QYWdlQ2xpZW50
SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpzZXRJbnB1dE1ldGhv
ZFN0YXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3dwZS9QYWdlQ2xpZW50SW1wbC5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvd3BlL1dQRVZpZXcuY3BwOgorICAgICAgICAoV0tXUEU6
OlZpZXc6OnNldElucHV0TWV0aG9kU3RhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvd3Bl
L1dQRVZpZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRJbnB1dE1ldGhv
ZENvbnRleHQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3dwZS9kb2NzL3dwZS0xLjAtc2Vj
dGlvbnMudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vz
cy9ndGsvV2ViUGFnZVByb3h5R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpzZXRJbnB1dE1ldGhvZFN0YXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3Mvd3BlL1dlYlBhZ2VQ
cm94eVdQRS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0SW5wdXRNZXRo
b2RTdGF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JD
bGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJFZGl0b3JDbGllbnQ6OnNldElucHV0TWV0
aG9kU3RhdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvZ2xpYi9XZWJQYWdlR0xpYi5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OmlucHV0TWV0aG9kU2F0ZUZvckVsZW1lbnQpOiBCdWlsZCBhbiBJbnB1dE1ldGhvZFN0
YXRlIGZvciB0aGUgZ2l2ZW4gZWxlbWVudC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0
SW5wdXRNZXRob2RTdGF0ZSk6CisKIDIwMTktMTItMjYgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8
Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdW1dQRV0gUmVtb3ZlIGR1cGxpY2F0
ZWQgY29kZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdl
cy5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKaW5kZXggZjJl
OWVkN2FiNTQuLjQxMTM0N2ExZmNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMv
d2Via2l0L21lc3NhZ2VzLnB5CisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVz
c2FnZXMucHkKQEAgLTIzMSw2ICsyMzEsNyBAQCBkZWYgdHlwZXNfdGhhdF9jYW5ub3RfYmVfZm9y
d2FyZF9kZWNsYXJlZCgpOgogCiBkZWYgY29uZGl0aW9uc19mb3JfaGVhZGVyKGhlYWRlcik6CiAg
ICAgY29uZGl0aW9ucyA9IHsKKyAgICAgICAgJyJJbnB1dE1ldGhvZFN0YXRlLmgiJzogWyJQTEFU
Rk9STShHVEspIiwgIlBMQVRGT1JNKFdQRSkiIF0sCiAgICAgICAgICciTGF5ZXJIb3N0aW5nQ29u
dGV4dC5oIic6IFsiUExBVEZPUk0oQ09DT0EpIiwgXSwKICAgICB9CiAgICAgaWYgbm90IGhlYWRl
ciBpbiBjb25kaXRpb25zOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvZ2xpYi9J
bnB1dE1ldGhvZFN0YXRlLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2dsaWIvSW5wdXRNZXRo
b2RTdGF0ZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjZhMTk5
NjJlMTU3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvZ2xpYi9JbnB1
dE1ldGhvZFN0YXRlLmNwcApAQCAtMCwwICsxLDEyMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxOSBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiSW5wdXRNZXRob2RTdGF0ZS5oIgorCisjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKKyNp
bmNsdWRlIDxXZWJDb3JlL0hUTUxJbnB1dEVsZW1lbnQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK3ZvaWQgSW5wdXRNZXRob2RTdGF0ZTo6c2V0UHVycG9zZU9ySGludEZvcklucHV0TW9kZShX
ZWJDb3JlOjpJbnB1dE1vZGUgaW5wdXRNb2RlKQoreworICAgIHN3aXRjaCAoaW5wdXRNb2RlKSB7
CisgICAgY2FzZSBXZWJDb3JlOjpJbnB1dE1vZGU6Ok5vbmU6CisgICAgICAgIGhpbnRzLmFkZChJ
bnB1dE1ldGhvZFN0YXRlOjpIaW50OjpJbmhpYml0T25TY3JlZW5LZXlib2FyZCk7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgV2ViQ29yZTo6SW5wdXRNb2RlOjpVbnNwZWNpZmllZDoKKyAgICBj
YXNlIFdlYkNvcmU6OklucHV0TW9kZTo6VGV4dDoKKyAgICAgICAgcHVycG9zZSA9IFB1cnBvc2U6
OkZyZWVGb3JtOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFdlYkNvcmU6OklucHV0TW9kZTo6
VGVsZXBob25lOgorICAgICAgICBwdXJwb3NlID0gUHVycG9zZTo6UGhvbmU7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgV2ViQ29yZTo6SW5wdXRNb2RlOjpVcmw6CisgICAgICAgIHB1cnBvc2Ug
PSBQdXJwb3NlOjpVcmw7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV2ViQ29yZTo6SW5wdXRN
b2RlOjpFbWFpbDoKKyAgICAgICAgcHVycG9zZSA9IFB1cnBvc2U6OkVtYWlsOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIFdlYkNvcmU6OklucHV0TW9kZTo6TnVtZXJpYzoKKyAgICAgICAgcHVy
cG9zZSA9IFB1cnBvc2U6OkRpZ2l0czsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXZWJDb3Jl
OjpJbnB1dE1vZGU6OkRlY2ltYWw6CisgICAgICAgIHB1cnBvc2UgPSBQdXJwb3NlOjpOdW1iZXI7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV2ViQ29yZTo6SW5wdXRNb2RlOjpTZWFyY2g6Cisg
ICAgICAgIGJyZWFrOworICAgIH0KK30KKworc3RhdGljIGJvb2wgaW5wdXRFbGVtZW50SGFzRGln
aXRzUGF0dGVybihXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50JiBlbGVtZW50KQoreworICAgIGNv
bnN0IGF1dG8mIHBhdHRlcm4gPSBlbGVtZW50LmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRp
b24oV2ViQ29yZTo6SFRNTE5hbWVzOjpwYXR0ZXJuQXR0cik7CisgICAgcmV0dXJuIHBhdHRlcm4g
PT0gIlxcZCoiIHx8IHBhdHRlcm4gPT0gIlswLTldKiI7Cit9CisKK3ZvaWQgSW5wdXRNZXRob2RT
dGF0ZTo6c2V0UHVycG9zZUZvcklucHV0RWxlbWVudChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50
JiBlbGVtZW50KQoreworICAgIGlmIChlbGVtZW50LmlzUGFzc3dvcmRGaWVsZCgpKQorICAgICAg
ICBwdXJwb3NlID0gUHVycG9zZTo6UGFzc3dvcmQ7CisgICAgZWxzZSBpZiAoZWxlbWVudC5pc0Vt
YWlsRmllbGQoKSkKKyAgICAgICAgcHVycG9zZSA9IFB1cnBvc2U6OkVtYWlsOworICAgIGVsc2Ug
aWYgKGVsZW1lbnQuaXNUZWxlcGhvbmVGaWVsZCgpKQorICAgICAgICBwdXJwb3NlID0gUHVycG9z
ZTo6UGhvbmU7CisgICAgZWxzZSBpZiAoZWxlbWVudC5pc051bWJlckZpZWxkKCkpCisgICAgICAg
IHB1cnBvc2UgPSBpbnB1dEVsZW1lbnRIYXNEaWdpdHNQYXR0ZXJuKGVsZW1lbnQpID8gUHVycG9z
ZTo6RGlnaXRzIDogUHVycG9zZTo6TnVtYmVyOworICAgIGVsc2UgaWYgKGVsZW1lbnQuaXNVUkxG
aWVsZCgpKQorICAgICAgICBwdXJwb3NlID0gUHVycG9zZTo6VXJsOworICAgIGVsc2UgaWYgKGVs
ZW1lbnQuaXNUZXh0KCkgJiYgaW5wdXRFbGVtZW50SGFzRGlnaXRzUGF0dGVybihlbGVtZW50KSkK
KyAgICAgICAgcHVycG9zZSA9IFB1cnBvc2U6OkRpZ2l0czsKK30KKwordm9pZCBJbnB1dE1ldGhv
ZFN0YXRlOjphZGRIaW50c0ZvckF1dG9jYXBpdGFsaXplVHlwZShBdXRvY2FwaXRhbGl6ZVR5cGUg
YXV0b2NhcGl0YWxpemVUeXBlKQoreworICAgIHN3aXRjaCAoYXV0b2NhcGl0YWxpemVUeXBlKSB7
CisgICAgY2FzZSBBdXRvY2FwaXRhbGl6ZVR5cGVEZWZhdWx0OgorICAgICAgICBicmVhazsKKyAg
ICBjYXNlIEF1dG9jYXBpdGFsaXplVHlwZU5vbmU6CisgICAgICAgIGhpbnRzLmFkZChJbnB1dE1l
dGhvZFN0YXRlOjpIaW50OjpMb3dlcmNhc2UpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEF1
dG9jYXBpdGFsaXplVHlwZVdvcmRzOgorICAgICAgICBoaW50cy5hZGQoSW5wdXRNZXRob2RTdGF0
ZTo6SGludDo6VXBwZXJjYXNlV29yZHMpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEF1dG9j
YXBpdGFsaXplVHlwZVNlbnRlbmNlczoKKyAgICAgICAgaGludHMuYWRkKElucHV0TWV0aG9kU3Rh
dGU6OkhpbnQ6OlVwcGVyY2FzZVNlbnRlbmNlcyk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
QXV0b2NhcGl0YWxpemVUeXBlQWxsQ2hhcmFjdGVyczoKKyAgICAgICAgaGludHMuYWRkKElucHV0
TWV0aG9kU3RhdGU6OkhpbnQ6OlVwcGVyY2FzZUNoYXJzKTsKKyAgICAgICAgYnJlYWs7CisgICAg
fQorfQorCit2b2lkIElucHV0TWV0aG9kU3RhdGU6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29k
ZXIpIGNvbnN0Cit7CisgICAgZW5jb2Rlci5lbmNvZGVFbnVtKHB1cnBvc2UpOworICAgIGVuY29k
ZXIgPDwgaGludHM7Cit9CisKK09wdGlvbmFsPElucHV0TWV0aG9kU3RhdGU+IElucHV0TWV0aG9k
U3RhdGU6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCit7CisgICAgSW5wdXRNZXRob2RT
dGF0ZSBzdGF0ZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlRW51bShzdGF0ZS5wdXJwb3NlKSkK
KyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0
YXRlLmhpbnRzKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gc3Rh
dGU7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvZ2xpYi9JbnB1dE1ldGhvZFN0YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9n
bGliL0lucHV0TWV0aG9kU3RhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMC4uZGZiZjA1NDA2ZGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9nbGliL0lucHV0TWV0aG9kU3RhdGUuaApAQCAtMCwwICsxLDgxIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE5IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5j
bHVkZSA8V2ViQ29yZS9BdXRvY2FwaXRhbGl6ZVR5cGVzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9J
bnB1dE1vZGUuaD4KKyNpbmNsdWRlIDx3dGYvT3B0aW9uU2V0Lmg+CisjaW5jbHVkZSA8d3RmL09w
dGlvbmFsLmg+CisKK25hbWVzcGFjZSBJUEMgeworY2xhc3MgRGVjb2RlcjsKK2NsYXNzIEVuY29k
ZXI7Cit9CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIEhUTUxJbnB1dEVsZW1lbnQ7Cit9
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdHJ1Y3QgSW5wdXRNZXRob2RTdGF0ZSB7CisgICAg
ZW51bSBjbGFzcyBQdXJwb3NlIHsKKyAgICAgICAgRnJlZUZvcm0sCisgICAgICAgIERpZ2l0cywK
KyAgICAgICAgTnVtYmVyLAorICAgICAgICBQaG9uZSwKKyAgICAgICAgVXJsLAorICAgICAgICBF
bWFpbCwKKyAgICAgICAgUGFzc3dvcmQKKyAgICB9OworCisgICAgZW51bSBjbGFzcyBIaW50IHsK
KyAgICAgICAgTm9uZSA9IDAsCisgICAgICAgIFNwZWxsY2hlY2sgPSAxIDw8IDAsCisgICAgICAg
IExvd2VyY2FzZSA9IDEgPDwgMSwKKyAgICAgICAgVXBwZXJjYXNlQ2hhcnMgPSAxIDw8IDIsCisg
ICAgICAgIFVwcGVyY2FzZVdvcmRzID0gMSA8PCAzLAorICAgICAgICBVcHBlcmNhc2VTZW50ZW5j
ZXMgPSAxIDw8IDQsCisgICAgICAgIEluaGliaXRPblNjcmVlbktleWJvYXJkID0gMSA8PCA1Cisg
ICAgfTsKKworICAgIHZvaWQgc2V0UHVycG9zZU9ySGludEZvcklucHV0TW9kZShXZWJDb3JlOjpJ
bnB1dE1vZGUpOworICAgIHZvaWQgc2V0UHVycG9zZUZvcklucHV0RWxlbWVudChXZWJDb3JlOjpI
VE1MSW5wdXRFbGVtZW50Jik7CisgICAgdm9pZCBhZGRIaW50c0ZvckF1dG9jYXBpdGFsaXplVHlw
ZShBdXRvY2FwaXRhbGl6ZVR5cGUpOworCisgICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVyJikg
Y29uc3Q7CisgICAgc3RhdGljIE9wdGlvbmFsPElucHV0TWV0aG9kU3RhdGU+IGRlY29kZShJUEM6
OkRlY29kZXImKTsKKworICAgIFB1cnBvc2UgcHVycG9zZSB7IFB1cnBvc2U6OkZyZWVGb3JtIH07
CisgICAgT3B0aW9uU2V0PEhpbnQ+IGhpbnRzOworfTsKKworaW5saW5lIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBJbnB1dE1ldGhvZFN0YXRlJiBhLCBjb25zdCBJbnB1dE1ldGhvZFN0YXRlJiBiKQor
eworICAgIHJldHVybiBhLnB1cnBvc2UgPT0gYi5wdXJwb3NlICYmIGEuaGludHMgPT0gYi5oaW50
czsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NvdXJjZXNHVEsudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzR1RLLnR4dAppbmRleCA0MDM4
YWQ3YmFlYy4uOGZiMTgwNTYyNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0dU
Sy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzR1RLLnR4dApAQCAtODMsNiArODMsNyBA
QCBTaGFyZWQvUGx1Z2lucy91bml4L1BsdWdpblNlYXJjaFBhdGguY3BwCiBTaGFyZWQvY2Fpcm8v
U2hhcmVhYmxlQml0bWFwQ2Fpcm8uY3BwCiAKIFNoYXJlZC9nbGliL0FyZ3VtZW50Q29kZXJzR0xp
Yi5jcHAKK1NoYXJlZC9nbGliL0lucHV0TWV0aG9kU3RhdGUuY3BwCiBTaGFyZWQvZ2xpYi9Qcm9j
ZXNzRXhlY3V0YWJsZVBhdGhHTGliLmNwcAogU2hhcmVkL2dsaWIvVXNlck1lc3NhZ2UuY3BwCiBT
aGFyZWQvZ2xpYi9XZWJDb250ZXh0TWVudUl0ZW1HbGliLmNwcApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9Tb3VyY2VzV1BFLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlc1dQRS50eHQKaW5k
ZXggZjc4OGQ4NGQ4NjkuLjBjOWRmZTExOWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Nv
dXJjZXNXUEUudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc1dQRS50eHQKQEAgLTgxLDYg
KzgxLDcgQEAgU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvdW5peC9OZXRzY2FwZVBsdWdpbk1vZHVs
ZVVuaXguY3BwCiBTaGFyZWQvY2Fpcm8vU2hhcmVhYmxlQml0bWFwQ2Fpcm8uY3BwCiAKIFNoYXJl
ZC9nbGliL0FyZ3VtZW50Q29kZXJzR0xpYi5jcHAKK1NoYXJlZC9nbGliL0lucHV0TWV0aG9kU3Rh
dGUuY3BwCiBTaGFyZWQvZ2xpYi9Qcm9jZXNzRXhlY3V0YWJsZVBhdGhHTGliLmNwcAogU2hhcmVk
L2dsaWIvVXNlck1lc3NhZ2UuY3BwCiBTaGFyZWQvZ2xpYi9XZWJDb250ZXh0TWVudUl0ZW1HbGli
LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSW5wdXRN
ZXRob2RGaWx0ZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSW5wdXRN
ZXRob2RGaWx0ZXIuY3BwCmluZGV4IDc2OWY0MWRmYTY4Li41OWY0MTNhMjAzNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSW5wdXRNZXRob2RGaWx0ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0lucHV0TWV0aG9kRmlsdGVy
LmNwcApAQCAtNzEsMjMgKzcxLDIzIEBAIHZvaWQgSW5wdXRNZXRob2RGaWx0ZXI6OnNldENvbnRl
eHQoV2ViS2l0SW5wdXRNZXRob2RDb250ZXh0KiBjb250ZXh0KQogICAgIGdfc2lnbmFsX2Nvbm5l
Y3Rfc3dhcHBlZChtX2NvbnRleHQuZ2V0KCksICJwcmVlZGl0LWZpbmlzaGVkIiwgR19DQUxMQkFD
SyhwcmVlZGl0RmluaXNoZWRDYWxsYmFjayksIHRoaXMpOwogICAgIGdfc2lnbmFsX2Nvbm5lY3Rf
c3dhcHBlZChtX2NvbnRleHQuZ2V0KCksICJjb21taXR0ZWQiLCBHX0NBTExCQUNLKGNvbW1pdHRl
ZENhbGxiYWNrKSwgdGhpcyk7CiAKLSAgICBpZiAobV9lbmFibGVkICYmIGlzVmlld0ZvY3VzZWQo
KSkKKyAgICBpZiAoaXNFbmFibGVkKCkgJiYgaXNWaWV3Rm9jdXNlZCgpKQogICAgICAgICBub3Rp
ZnlGb2N1c2VkSW4oKTsKIH0KIAotdm9pZCBJbnB1dE1ldGhvZEZpbHRlcjo6c2V0RW5hYmxlZChi
b29sIGVuYWJsZWQpCit2b2lkIElucHV0TWV0aG9kRmlsdGVyOjpzZXRTdGF0ZShPcHRpb25hbDxJ
bnB1dE1ldGhvZFN0YXRlPiYmIHN0YXRlKQogewotICAgIGlmICghZW5hYmxlZCkKKyAgICBpZiAo
IXN0YXRlKQogICAgICAgICBub3RpZnlGb2N1c2VkT3V0KCk7CiAKLSAgICBtX2VuYWJsZWQgPSBl
bmFibGVkOwotICAgIGlmIChtX2VuYWJsZWQgJiYgaXNWaWV3Rm9jdXNlZCgpKQorICAgIG1fc3Rh
dGUgPSBXVEZNb3ZlKHN0YXRlKTsKKyAgICBpZiAoaXNFbmFibGVkKCkgJiYgaXNWaWV3Rm9jdXNl
ZCgpKQogICAgICAgICBub3RpZnlGb2N1c2VkSW4oKTsKIH0KIAogSW5wdXRNZXRob2RGaWx0ZXI6
OkZpbHRlclJlc3VsdCBJbnB1dE1ldGhvZEZpbHRlcjo6ZmlsdGVyS2V5RXZlbnQoUGxhdGZvcm1F
dmVudEtleSoga2V5RXZlbnQpCiB7Ci0gICAgaWYgKCFtX2VuYWJsZWQgfHwgIW1fY29udGV4dCkK
KyAgICBpZiAoIWlzRW5hYmxlZCgpIHx8ICFtX2NvbnRleHQpCiAgICAgICAgIHJldHVybiB7IH07
CiAKICAgICBTZXRGb3JTY29wZTxib29sPiBmaWx0ZXJpbmdDb250ZXh0SXNBY2l2ZShtX2ZpbHRl
cmluZ0NvbnRleHQuaXNBY3RpdmUsIHRydWUpOwpAQCAtMTEwLDcgKzExMCw3IEBAIElucHV0TWV0
aG9kRmlsdGVyOjpGaWx0ZXJSZXN1bHQgSW5wdXRNZXRob2RGaWx0ZXI6OmZpbHRlcktleUV2ZW50
KFBsYXRmb3JtRXZlbnRLCiAKIGJvb2wgSW5wdXRNZXRob2RGaWx0ZXI6OmlzVmlld0ZvY3VzZWQo
KSBjb25zdAogewotICAgIGlmICghbV9lbmFibGVkIHx8ICFtX2NvbnRleHQpCisgICAgaWYgKCFp
c0VuYWJsZWQoKSB8fCAhbV9jb250ZXh0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICNpZiBF
TkFCTEUoREVWRUxPUEVSX01PREUpICYmIFBMQVRGT1JNKFgxMSkKQEAgLTEyNywxNyArMTI3LDYw
IEBAIGJvb2wgSW5wdXRNZXRob2RGaWx0ZXI6OmlzVmlld0ZvY3VzZWQoKSBjb25zdAogICAgIHJl
dHVybiB3ZWJraXRXZWJWaWV3R2V0UGFnZSh3ZWJWaWV3KS5pc1ZpZXdGb2N1c2VkKCk7CiB9CiAK
K3N0YXRpYyBXZWJLaXRJbnB1dFB1cnBvc2UgdG9XZWJLaXRQdXJwb3NlKElucHV0TWV0aG9kU3Rh
dGU6OlB1cnBvc2UgcHVycG9zZSkKK3sKKyAgICBzd2l0Y2ggKHB1cnBvc2UpIHsKKyAgICBjYXNl
IElucHV0TWV0aG9kU3RhdGU6OlB1cnBvc2U6OkZyZWVGb3JtOgorICAgICAgICByZXR1cm4gV0VC
S0lUX0lOUFVUX1BVUlBPU0VfRlJFRV9GT1JNOworICAgIGNhc2UgSW5wdXRNZXRob2RTdGF0ZTo6
UHVycG9zZTo6RGlnaXRzOgorICAgICAgICByZXR1cm4gV0VCS0lUX0lOUFVUX1BVUlBPU0VfRElH
SVRTOworICAgIGNhc2UgSW5wdXRNZXRob2RTdGF0ZTo6UHVycG9zZTo6TnVtYmVyOgorICAgICAg
ICByZXR1cm4gV0VCS0lUX0lOUFVUX1BVUlBPU0VfTlVNQkVSOworICAgIGNhc2UgSW5wdXRNZXRo
b2RTdGF0ZTo6UHVycG9zZTo6UGhvbmU6CisgICAgICAgIHJldHVybiBXRUJLSVRfSU5QVVRfUFVS
UE9TRV9QSE9ORTsKKyAgICBjYXNlIElucHV0TWV0aG9kU3RhdGU6OlB1cnBvc2U6OlVybDoKKyAg
ICAgICAgcmV0dXJuIFdFQktJVF9JTlBVVF9QVVJQT1NFX1VSTDsKKyAgICBjYXNlIElucHV0TWV0
aG9kU3RhdGU6OlB1cnBvc2U6OkVtYWlsOgorICAgICAgICByZXR1cm4gV0VCS0lUX0lOUFVUX1BV
UlBPU0VfRU1BSUw7CisgICAgY2FzZSBJbnB1dE1ldGhvZFN0YXRlOjpQdXJwb3NlOjpQYXNzd29y
ZDoKKyAgICAgICAgcmV0dXJuIFdFQktJVF9JTlBVVF9QVVJQT1NFX1BBU1NXT1JEOworICAgIH0K
KworICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK3N0YXRpYyBXZWJLaXRJ
bnB1dEhpbnRzIHRvV2ViS2l0SGludHMoY29uc3QgT3B0aW9uU2V0PElucHV0TWV0aG9kU3RhdGU6
OkhpbnQ+JiBoaW50cykKK3sKKyAgICB1bnNpZ25lZCB3a0hpbnRzID0gMDsKKyAgICBpZiAoaGlu
dHMuY29udGFpbnMoSW5wdXRNZXRob2RTdGF0ZTo6SGludDo6U3BlbGxjaGVjaykpCisgICAgICAg
IHdrSGludHMgfD0gV0VCS0lUX0lOUFVUX0hJTlRfU1BFTExDSEVDSzsKKyAgICBpZiAoaGludHMu
Y29udGFpbnMoSW5wdXRNZXRob2RTdGF0ZTo6SGludDo6TG93ZXJjYXNlKSkKKyAgICAgICAgd2tI
aW50cyB8PSBXRUJLSVRfSU5QVVRfSElOVF9MT1dFUkNBU0U7CisgICAgaWYgKGhpbnRzLmNvbnRh
aW5zKElucHV0TWV0aG9kU3RhdGU6OkhpbnQ6OlVwcGVyY2FzZUNoYXJzKSkKKyAgICAgICAgd2tI
aW50cyB8PSBXRUJLSVRfSU5QVVRfSElOVF9VUFBFUkNBU0VfQ0hBUlM7CisgICAgaWYgKGhpbnRz
LmNvbnRhaW5zKElucHV0TWV0aG9kU3RhdGU6OkhpbnQ6OlVwcGVyY2FzZVdvcmRzKSkKKyAgICAg
ICAgd2tIaW50cyB8PSBXRUJLSVRfSU5QVVRfSElOVF9VUFBFUkNBU0VfV09SRFM7CisgICAgaWYg
KGhpbnRzLmNvbnRhaW5zKElucHV0TWV0aG9kU3RhdGU6OkhpbnQ6OlVwcGVyY2FzZVNlbnRlbmNl
cykpCisgICAgICAgIHdrSGludHMgfD0gV0VCS0lUX0lOUFVUX0hJTlRfVVBQRVJDQVNFX1NFTlRF
TkNFUzsKKyAgICBpZiAoaGludHMuY29udGFpbnMoSW5wdXRNZXRob2RTdGF0ZTo6SGludDo6SW5o
aWJpdE9uU2NyZWVuS2V5Ym9hcmQpKQorICAgICAgICB3a0hpbnRzIHw9IFdFQktJVF9JTlBVVF9I
SU5UX0lOSElCSVRfT1NLOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJLaXRJbnB1dEhpbnRz
Pih3a0hpbnRzKTsKK30KIHZvaWQgSW5wdXRNZXRob2RGaWx0ZXI6Om5vdGlmeUZvY3VzZWRJbigp
CiB7Ci0gICAgaWYgKCFtX2VuYWJsZWQgfHwgIW1fY29udGV4dCkKKyAgICBpZiAoIWlzRW5hYmxl
ZCgpIHx8ICFtX2NvbnRleHQpCiAgICAgICAgIHJldHVybjsKIAorICAgIGdfb2JqZWN0X2ZyZWV6
ZV9ub3RpZnkoR19PQkpFQ1QobV9jb250ZXh0LmdldCgpKSk7CisgICAgd2Via2l0X2lucHV0X21l
dGhvZF9jb250ZXh0X3NldF9pbnB1dF9wdXJwb3NlKG1fY29udGV4dC5nZXQoKSwgdG9XZWJLaXRQ
dXJwb3NlKG1fc3RhdGUtPnB1cnBvc2UpKTsKKyAgICB3ZWJraXRfaW5wdXRfbWV0aG9kX2NvbnRl
eHRfc2V0X2lucHV0X2hpbnRzKG1fY29udGV4dC5nZXQoKSwgdG9XZWJLaXRIaW50cyhtX3N0YXRl
LT5oaW50cykpOworICAgIGdfb2JqZWN0X3RoYXdfbm90aWZ5KEdfT0JKRUNUKG1fY29udGV4dC5n
ZXQoKSkpOwogICAgIHdlYmtpdF9pbnB1dF9tZXRob2RfY29udGV4dF9ub3RpZnlfZm9jdXNfaW4o
bV9jb250ZXh0LmdldCgpKTsKIH0KIAogdm9pZCBJbnB1dE1ldGhvZEZpbHRlcjo6bm90aWZ5Rm9j
dXNlZE91dCgpCiB7Ci0gICAgaWYgKCFtX2VuYWJsZWQgfHwgIW1fY29udGV4dCkKKyAgICBpZiAo
IWlzRW5hYmxlZCgpIHx8ICFtX2NvbnRleHQpCiAgICAgICAgIHJldHVybjsKIAogICAgIGNhbmNl
bENvbXBvc2l0aW9uKCk7CkBAIC0xNDYsNyArMTg5LDcgQEAgdm9pZCBJbnB1dE1ldGhvZEZpbHRl
cjo6bm90aWZ5Rm9jdXNlZE91dCgpCiAKIHZvaWQgSW5wdXRNZXRob2RGaWx0ZXI6Om5vdGlmeUN1
cnNvclJlY3QoY29uc3QgSW50UmVjdCYgY3Vyc29yUmVjdCkKIHsKLSAgICBpZiAoIW1fZW5hYmxl
ZCB8fCAhbV9jb250ZXh0KQorICAgIGlmICghaXNFbmFibGVkKCkgfHwgIW1fY29udGV4dCkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgLy8gRG9uJ3QgbW92ZSB0aGUgd2luZG93IHVubGVzcyB0aGUg
Y3Vyc29yIGFjdHVhbGx5IG1vdmVzIG1vcmUgdGhhbiAxMApAQCAtMTYzLDcgKzIwNiw3IEBAIHZv
aWQgSW5wdXRNZXRob2RGaWx0ZXI6Om5vdGlmeUN1cnNvclJlY3QoY29uc3QgSW50UmVjdCYgY3Vy
c29yUmVjdCkKIAogdm9pZCBJbnB1dE1ldGhvZEZpbHRlcjo6cHJlZWRpdFN0YXJ0ZWQoKQogewot
ICAgIGlmICghbV9lbmFibGVkKQorICAgIGlmICghaXNFbmFibGVkKCkpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIGlmIChtX2ZpbHRlcmluZ0NvbnRleHQuaXNBY3RpdmUpCkBAIC0xNzQsNyArMjE3
LDcgQEAgdm9pZCBJbnB1dE1ldGhvZEZpbHRlcjo6cHJlZWRpdFN0YXJ0ZWQoKQogCiB2b2lkIElu
cHV0TWV0aG9kRmlsdGVyOjpwcmVlZGl0Q2hhbmdlZCgpCiB7Ci0gICAgaWYgKCFtX2VuYWJsZWQp
CisgICAgaWYgKCFpc0VuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1fZmls
dGVyaW5nQ29udGV4dC5pc0FjdGl2ZSkKQEAgLTIwOCw3ICsyNTEsNyBAQCB2b2lkIElucHV0TWV0
aG9kRmlsdGVyOjpwcmVlZGl0Q2hhbmdlZCgpCiAKIHZvaWQgSW5wdXRNZXRob2RGaWx0ZXI6OnBy
ZWVkaXRGaW5pc2hlZCgpCiB7Ci0gICAgaWYgKCFtX2VuYWJsZWQpCisgICAgaWYgKCFpc0VuYWJs
ZWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1fZmlsdGVyaW5nQ29udGV4dC5pc0Fj
dGl2ZSkKQEAgLTIyNyw3ICsyNzAsNyBAQCB2b2lkIElucHV0TWV0aG9kRmlsdGVyOjpwcmVlZGl0
RmluaXNoZWQoKQogCiB2b2lkIElucHV0TWV0aG9kRmlsdGVyOjpjb21taXR0ZWQoY29uc3QgY2hh
ciogY29tcG9zaXRpb25TdHJpbmcpCiB7Ci0gICAgaWYgKCFtX2VuYWJsZWQpCisgICAgaWYgKCFp
c0VuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9jb21wb3NpdGlvblJlc3VsdCA9
IFN0cmluZzo6ZnJvbVVURjgoY29tcG9zaXRpb25TdHJpbmcpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSW5wdXRNZXRob2RGaWx0ZXIuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0lucHV0TWV0aG9kRmlsdGVyLmgKaW5kZXggZDcyM2Yz
NWM3MDAuLjEyMzEwMzhhNmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ2xpYi9JbnB1dE1ldGhvZEZpbHRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9nbGliL0lucHV0TWV0aG9kRmlsdGVyLmgKQEAgLTE5LDYgKzE5LDcgQEAKIAogI3ByYWdt
YSBvbmNlCiAKKyNpbmNsdWRlICJJbnB1dE1ldGhvZFN0YXRlLmgiCiAjaW5jbHVkZSA8V2ViQ29y
ZS9Db21wb3NpdGlvblVuZGVybGluZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW50UG9pbnQuaD4K
ICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KQEAgLTQ5LDcgKzUwLDcgQEAgcHVibGljOgog
ICAgIHZvaWQgc2V0Q29udGV4dChXZWJLaXRJbnB1dE1ldGhvZENvbnRleHQqKTsKICAgICBXZWJL
aXRJbnB1dE1ldGhvZENvbnRleHQqIGNvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2NvbnRleHQu
Z2V0KCk7IH0KIAotICAgIHZvaWQgc2V0RW5hYmxlZChib29sKTsKKyAgICB2b2lkIHNldFN0YXRl
KE9wdGlvbmFsPElucHV0TWV0aG9kU3RhdGU+JiYpOwogCiAjaWYgUExBVEZPUk0oR1RLKQogICAg
IHVzaW5nIFBsYXRmb3JtRXZlbnRLZXkgPSBHZGtFdmVudEtleTsKQEAgLTgwLDEyICs4MSwxMyBA
QCBwcml2YXRlOgogICAgIHZvaWQgcHJlZWRpdEZpbmlzaGVkKCk7CiAgICAgdm9pZCBjb21taXR0
ZWQoY29uc3QgY2hhciopOwogCisgICAgYm9vbCBpc0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiAh
IW1fc3RhdGU7IH0KICAgICBib29sIGlzVmlld0ZvY3VzZWQoKSBjb25zdDsKIAogICAgIFdlYkNv
cmU6OkludFJlY3QgcGxhdGZvcm1UcmFuc2Zvcm1DdXJzb3JSZWN0VG9WaWV3Q29vcmRpbmF0ZXMo
Y29uc3QgV2ViQ29yZTo6SW50UmVjdCYpOwogICAgIGJvb2wgcGxhdGZvcm1FdmVudEtleUlzS2V5
UHJlc3MoUGxhdGZvcm1FdmVudEtleSopIGNvbnN0OwogCi0gICAgYm9vbCBtX2VuYWJsZWQgeyBm
YWxzZSB9OworICAgIE9wdGlvbmFsPElucHV0TWV0aG9kU3RhdGU+IG1fc3RhdGU7CiAgICAgR1Jl
ZlB0cjxXZWJLaXRJbnB1dE1ldGhvZENvbnRleHQ+IG1fY29udGV4dDsKIAogICAgIHN0cnVjdCB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRJbnB1
dE1ldGhvZENvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0SW5wdXRNZXRob2RDb250ZXh0LmNwcAppbmRleCBjYWY3NzIxZjk4NS4uMTdjYzNjOTQ2NmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdElucHV0
TWV0aG9kQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0SW5wdXRNZXRob2RDb250ZXh0LmNwcApAQCAtMjAsOCArMjAsMTAgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJLaXRJbnB1dE1ldGhvZENvbnRleHQuaCIKIAorI2lu
Y2x1ZGUgIldlYktpdEVudW1UeXBlcy5oIgogI2luY2x1ZGUgIldlYktpdElucHV0TWV0aG9kQ29u
dGV4dFByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJWaWV3LmgiCisjaW5jbHVkZSA8Z2xp
Yi9naTE4bi1saWIuaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9XVEZHVHlwZS5oPgogCiB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKQEAgLTQ0LDYgKzQ2LDEzIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogICogU2luY2U6IDIuMjgKICAqLwogCitlbnVtIHsKKyAgICBQUk9QXzAsCisKKyAgICBQ
Uk9QX0lOUFVUX1BVUlBPU0UsCisgICAgUFJPUF9JTlBVVF9ISU5UUworfTsKKwogZW51bSB7CiAg
ICAgUFJFRURJVF9TVEFSVEVELAogICAgIFBSRUVESVRfQ0hBTkdFRCwKQEAgLTExNiw2ICsxMjUs
OCBAQCB2b2lkIHdlYmtpdF9pbnB1dF9tZXRob2RfdW5kZXJsaW5lX2ZyZWUoV2ViS2l0SW5wdXRN
ZXRob2RVbmRlcmxpbmUqIHVuZGVybGluZSkKIAogc3RydWN0IF9XZWJLaXRJbnB1dE1ldGhvZENv
bnRleHRQcml2YXRlIHsKICAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3OworICAgIFdlYktpdElu
cHV0UHVycG9zZSBwdXJwb3NlOworICAgIFdlYktpdElucHV0SGludHMgaGludHM7CiB9OwogCiBz
dGF0aWMgZ3VpbnQgc2lnbmFsc1tMQVNUX1NJR05BTF0gPSB7IDAsIH07CkBAIC0xNTMsOCArMTY0
LDgwIEBAIFdFQktJVF9ERUZJTkVfQUJTVFJBQ1RfVFlQRShXZWJLaXRJbnB1dE1ldGhvZENvbnRl
eHQsIHdlYmtpdF9pbnB1dF9tZXRob2RfY29udGV4CiAgKiBTaW5jZTogMi4yOAogICovCiAKK3N0
YXRpYyB2b2lkIHdlYmtpdElucHV0TWV0aG9kQ29udGV4dFNldFByb3BlcnR5KEdPYmplY3QqIG9i
amVjdCwgZ3VpbnQgcHJvcElkLCBjb25zdCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwYXJh
bVNwZWMpCit7CisgICAgV2ViS2l0SW5wdXRNZXRob2RDb250ZXh0KiBjb250ZXh0ID0gV0VCS0lU
X0lOUFVUX01FVEhPRF9DT05URVhUKG9iamVjdCk7CisKKyAgICBzd2l0Y2ggKHByb3BJZCkgewor
ICAgIGNhc2UgUFJPUF9JTlBVVF9QVVJQT1NFOgorICAgICAgICB3ZWJraXRfaW5wdXRfbWV0aG9k
X2NvbnRleHRfc2V0X2lucHV0X3B1cnBvc2UoY29udGV4dCwgc3RhdGljX2Nhc3Q8V2ViS2l0SW5w
dXRQdXJwb3NlPihnX3ZhbHVlX2dldF9lbnVtKHZhbHVlKSkpOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIFBST1BfSU5QVVRfSElOVFM6CisgICAgICAgIHdlYmtpdF9pbnB1dF9tZXRob2RfY29u
dGV4dF9zZXRfaW5wdXRfaGludHMoY29udGV4dCwgc3RhdGljX2Nhc3Q8V2ViS2l0SW5wdXRIaW50
cz4oZ192YWx1ZV9nZXRfZmxhZ3ModmFsdWUpKSk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1
bHQ6CisgICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHBy
b3BJZCwgcGFyYW1TcGVjKTsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdElucHV0TWV0
aG9kQ29udGV4dEdldFByb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcElkLCBHVmFs
dWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwYXJhbVNwZWMpCit7CisgICAgV2ViS2l0SW5wdXRNZXRo
b2RDb250ZXh0KiBjb250ZXh0ID0gV0VCS0lUX0lOUFVUX01FVEhPRF9DT05URVhUKG9iamVjdCk7
CisKKyAgICBzd2l0Y2ggKHByb3BJZCkgeworICAgIGNhc2UgUFJPUF9JTlBVVF9QVVJQT1NFOgor
ICAgICAgICBnX3ZhbHVlX3NldF9lbnVtKHZhbHVlLCB3ZWJraXRfaW5wdXRfbWV0aG9kX2NvbnRl
eHRfZ2V0X2lucHV0X3B1cnBvc2UoY29udGV4dCkpOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IFBST1BfSU5QVVRfSElOVFM6CisgICAgICAgIGdfdmFsdWVfc2V0X2ZsYWdzKHZhbHVlLCB3ZWJr
aXRfaW5wdXRfbWV0aG9kX2NvbnRleHRfZ2V0X2lucHV0X2hpbnRzKGNvbnRleHQpKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BS
T1BFUlRZX0lEKG9iamVjdCwgcHJvcElkLCBwYXJhbVNwZWMpOworICAgIH0KK30KKwogc3RhdGlj
IHZvaWQgd2Via2l0X2lucHV0X21ldGhvZF9jb250ZXh0X2NsYXNzX2luaXQoV2ViS2l0SW5wdXRN
ZXRob2RDb250ZXh0Q2xhc3MqIGtsYXNzKQogeworICAgIEdPYmplY3RDbGFzcyogZ09iamVjdENs
YXNzID0gR19PQkpFQ1RfQ0xBU1Moa2xhc3MpOworICAgIGdPYmplY3RDbGFzcy0+c2V0X3Byb3Bl
cnR5ID0gd2Via2l0SW5wdXRNZXRob2RDb250ZXh0U2V0UHJvcGVydHk7CisgICAgZ09iamVjdENs
YXNzLT5nZXRfcHJvcGVydHkgPSB3ZWJraXRJbnB1dE1ldGhvZENvbnRleHRHZXRQcm9wZXJ0eTsK
KworICAgIC8qKgorICAgICAqIFdlYktpdElucHV0TWV0aG9kQ29udGV4dDo6aW5wdXQtcHVycG9z
ZToKKyAgICAgKgorICAgICAqIFRoZSAjV2ViS2l0SW5wdXRQdXJwb3NlIG9mIHRoZSBpbnB1dCBh
c3NvY2lhdGVkIHdpdGggdGhpcyBjb250ZXh0LgorICAgICAqCisgICAgICogU2luY2U6IDIuMjgK
KyAgICAgKi8KKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KAorICAgICAgICBn
T2JqZWN0Q2xhc3MsCisgICAgICAgIFBST1BfSU5QVVRfUFVSUE9TRSwKKyAgICAgICAgZ19wYXJh
bV9zcGVjX2VudW0oCisgICAgICAgICAgICAiaW5wdXQtcHVycG9zZSIsCisgICAgICAgICAgICBf
KCJJbnB1dCBQdXJwb3NlIiksCisgICAgICAgICAgICBfKCJUaGUgcHVycG9zZSBvZiB0aGUgaW5w
dXQgYXNzb2NpYXRlZCIpLAorICAgICAgICAgICAgV0VCS0lUX1RZUEVfSU5QVVRfUFVSUE9TRSwK
KyAgICAgICAgICAgIFdFQktJVF9JTlBVVF9QVVJQT1NFX0ZSRUVfRk9STSwKKyAgICAgICAgICAg
IFdFQktJVF9QQVJBTV9SRUFEV1JJVEUpKTsKKworICAgIC8qKgorICAgICAqIFdlYktpdElucHV0
TWV0aG9kQ29udGV4dDo6aW5wdXQtaGludHM6CisgICAgICoKKyAgICAgKiBUaGUgI1dlYktpdElu
cHV0SGludHMgb2YgdGhlIGlucHV0IGFzc29jaWF0ZWQgd2l0aCB0aGlzIGNvbnRleHQuCisgICAg
ICoKKyAgICAgKiBTaW5jZTogMi4yOAorICAgICAqLworICAgIGdfb2JqZWN0X2NsYXNzX2luc3Rh
bGxfcHJvcGVydHkoCisgICAgICAgIGdPYmplY3RDbGFzcywKKyAgICAgICAgUFJPUF9JTlBVVF9I
SU5UUywKKyAgICAgICAgZ19wYXJhbV9zcGVjX2ZsYWdzKAorICAgICAgICAgICAgImlucHV0LWhp
bnRzIiwKKyAgICAgICAgICAgIF8oIklucHV0IEhpbnRzIiksCisgICAgICAgICAgICBfKCJUaGUg
aGludHMgb2YgdGhlIGlucHV0IGFzc29jaWF0ZWQiKSwKKyAgICAgICAgICAgIFdFQktJVF9UWVBF
X0lOUFVUX0hJTlRTLAorICAgICAgICAgICAgV0VCS0lUX0lOUFVUX0hJTlRfTk9ORSwKKyAgICAg
ICAgICAgIFdFQktJVF9QQVJBTV9SRUFEV1JJVEUpKTsKKwogICAgIC8qKgogICAgICAqIFdlYktp
dElucHV0TWV0aG9kQ29udGV4dDo6cHJlZWRpdC1zdGFydGVkCiAgICAgICogQGNvbnRleHQ6IHRo
ZSAjV2ViS2l0SW5wdXRNZXRob2RDb250ZXh0IG9uIHdoaWNoIHRoZSBzaWduYWwgaXMgZW1pdHRl
ZApAQCAtMzU5LDMgKzQ0Miw3NyBAQCB2b2lkIHdlYmtpdF9pbnB1dF9tZXRob2RfY29udGV4dF9y
ZXNldChXZWJLaXRJbnB1dE1ldGhvZENvbnRleHQqIGNvbnRleHQpCiAgICAgaWYgKGltQ2xhc3Mt
PnJlc2V0KQogICAgICAgICBpbUNsYXNzLT5yZXNldChjb250ZXh0KTsKIH0KKworLyoqCisgKiB3
ZWJraXRfaW5wdXRfbWV0aG9kX2NvbnRleHRfZ2V0X2lucHV0X3B1cnBvc2U6CisgKiBAY29udGV4
dDogYSAjV2ViS2l0SW5wdXRNZXRob2RDb250ZXh0CisgKgorICogR2V0IHRoZSB2YWx1ZSBvZiB0
aGUgI1dlYktpdElucHV0TWV0aG9kQ29udGV4dDppbnB1dC1wdXJwb3NlIHByb3BlcnR5LgorICoK
KyAqIFJldHVybnM6IHRoZSAjV2ViS2l0SW5wdXRQdXJwb3NlIG9mIHRoZSBpbnB1dCBhc3NvY2lh
dGVkIHdpdGggQGNvbnRleHQKKyAqCisgKiBTaW5jZTogMi4yOAorICovCitXZWJLaXRJbnB1dFB1
cnBvc2Ugd2Via2l0X2lucHV0X21ldGhvZF9jb250ZXh0X2dldF9pbnB1dF9wdXJwb3NlKFdlYktp
dElucHV0TWV0aG9kQ29udGV4dCogY29udGV4dCkKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFp
bChXRUJLSVRfSVNfSU5QVVRfTUVUSE9EX0NPTlRFWFQoY29udGV4dCksIFdFQktJVF9JTlBVVF9Q
VVJQT1NFX0ZSRUVfRk9STSk7CisKKyAgICByZXR1cm4gY29udGV4dC0+cHJpdi0+cHVycG9zZTsK
K30KKworLyoqCisgKiB3ZWJraXRfaW5wdXRfbWV0aG9kX2NvbnRleHRfc2V0X2lucHV0X3B1cnBv
c2U6CisgKiBAY29udGV4dDogYSAjV2ViS2l0SW5wdXRNZXRob2RDb250ZXh0CisgKiBAcHVycG9z
ZTogYSAjV2ViS2l0SW5wdXRQdXJwb3NlCisgKgorICogU2V0IHRoZSB2YWx1ZSBvZiB0aGUgI1dl
YktpdElucHV0TWV0aG9kQ29udGV4dDppbnB1dC1wdXJwb3NlIHByb3BlcnR5LgorICoKKyAqIFNp
bmNlOiAyLjI4CisgKi8KK3ZvaWQgd2Via2l0X2lucHV0X21ldGhvZF9jb250ZXh0X3NldF9pbnB1
dF9wdXJwb3NlKFdlYktpdElucHV0TWV0aG9kQ29udGV4dCogY29udGV4dCwgV2ViS2l0SW5wdXRQ
dXJwb3NlIHB1cnBvc2UpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfSU5QVVRf
TUVUSE9EX0NPTlRFWFQoY29udGV4dCkpOworCisgICAgaWYgKGNvbnRleHQtPnByaXYtPnB1cnBv
c2UgPT0gcHVycG9zZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgY29udGV4dC0+cHJpdi0+cHVy
cG9zZSA9IHB1cnBvc2U7CisgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKGNvbnRleHQpLCAi
aW5wdXQtcHVycG9zZSIpOworfQorCisvKioKKyAqIHdlYmtpdF9pbnB1dF9tZXRob2RfY29udGV4
dF9nZXRfaW5wdXRfaGludHM6CisgKiBAY29udGV4dDogYSAjV2ViS2l0SW5wdXRNZXRob2RDb250
ZXh0CisgKgorICogR2V0IHRoZSB2YWx1ZSBvZiB0aGUgI1dlYktpdElucHV0TWV0aG9kQ29udGV4
dDppbnB1dC1oaW50cyBwcm9wZXJ0eS4KKyAqCisgKiBSZXR1cm5zOiB0aGUgI1dlYktpdElucHV0
SGludHMgb2YgdGhlIGlucHV0IGFzc29jaWF0ZWQgd2l0aCBAY29udGV4dAorICoKKyAqIFNpbmNl
OiAyLjI4CisgKi8KK1dlYktpdElucHV0SGludHMgd2Via2l0X2lucHV0X21ldGhvZF9jb250ZXh0
X2dldF9pbnB1dF9oaW50cyhXZWJLaXRJbnB1dE1ldGhvZENvbnRleHQqIGNvbnRleHQpCit7Cisg
ICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX0lOUFVUX01FVEhPRF9DT05URVhUKGNv
bnRleHQpLCBXRUJLSVRfSU5QVVRfSElOVF9OT05FKTsKKworICAgIHJldHVybiBjb250ZXh0LT5w
cml2LT5oaW50czsKK30KKworLyoKKyAqIHdlYmtpdF9pbnB1dF9tZXRob2RfY29udGV4dF9zZXRf
aW5wdXRfaGludHM6CisgKiBAY29udGV4dDogYSAjV2ViS2l0SW5wdXRNZXRob2RDb250ZXh0Cisg
KiBAaGludHM6IGEgI1dlYktpdElucHV0SGludHMKKyAqCisgKiBTZXQgdGhlIHZhbHVlIG9mIHRo
ZSAjV2ViS2l0SW5wdXRNZXRob2RDb250ZXh0OmlucHV0LWhpbnRzIHByb3BlcnR5LgorICoKKyAq
IFNpbmNlOiAyLjI4CisgKi8KK3ZvaWQgd2Via2l0X2lucHV0X21ldGhvZF9jb250ZXh0X3NldF9p
bnB1dF9oaW50cyhXZWJLaXRJbnB1dE1ldGhvZENvbnRleHQqIGNvbnRleHQsIFdlYktpdElucHV0
SGludHMgaGludHMpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfSU5QVVRfTUVU
SE9EX0NPTlRFWFQoY29udGV4dCkpOworCisgICAgaWYgKGNvbnRleHQtPnByaXYtPmhpbnRzID09
IGhpbnRzKQorICAgICAgICByZXR1cm47CisKKyAgICBjb250ZXh0LT5wcml2LT5oaW50cyA9IGhp
bnRzOworICAgIGdfb2JqZWN0X25vdGlmeShHX09CSkVDVChjb250ZXh0KSwgImlucHV0LWhpbnRz
Iik7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dElucHV0TWV0aG9kQ29udGV4dC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRJbnB1dE1ldGhvZENvbnRleHQuaAppbmRleCBiNjlmMzEwMTEzMS4uY2YyMTFhZmVlMmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0SW5wdXRN
ZXRob2RDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRJbnB1dE1ldGhvZENvbnRleHQuaApAQCAtMzksNiArMzksNTQgQEAgR19CRUdJTl9ERUNMUwog
CiAjZGVmaW5lIFdFQktJVF9UWVBFX0lOUFVUX01FVEhPRF9VTkRFUkxJTkUgICAgICAgICAgKHdl
YmtpdF9pbnB1dF9tZXRob2RfdW5kZXJsaW5lX2dldF90eXBlKCkpCiAKKy8qKgorICogV2ViS2l0
SW5wdXRQdXJwb3NlOgorICogQFdFQktJVF9JTlBVVF9QVVJQT1NFX0ZSRUVfRk9STTogRWRpdGFi
bGUgZWxlbWVudCBleHBlY3RzIGFueSBjaGFyYWN0ZXJzCisgKiBAV0VCS0lUX0lOUFVUX1BVUlBP
U0VfRElHSVRTOiBFZGl0YWJsZSBlbGVtZW50IGV4cGVjdHMgZGlnaXRzCisgKiBAV0VCS0lUX0lO
UFVUX1BVUlBPU0VfTlVNQkVSOiBFZGl0YWJsZSBlbGVtZW50IGV4cGVjdHMgYSBudW1iZXIKKyAq
IEBXRUJLSVRfSU5QVVRfUFVSUE9TRV9QSE9ORTogRWRpdGFibGUgZWxlbWVudCBleHBlY3RzIGEg
dGVsZXBob25lCisgKiBAV0VCS0lUX0lOUFVUX1BVUlBPU0VfVVJMOiBFZGl0YWJsZSBlbGVtZW50
IGV4cGVjdHMgYSBVUkwKKyAqIEBXRUJLSVRfSU5QVVRfUFVSUE9TRV9FTUFJTDogRWRpdGFibGUg
ZWxlbWVudCBleHBlY3RzIGFuIGVtYWlsCisgKiBAV0VCS0lUX0lOUFVUX1BVUlBPU0VfUEFTU1dP
UkQ6IEVkaXRhYmxlIGVsZW1lbnQgZXhwZWN0cyBhIHBhc3N3b3JkCisgKgorICogRW51bSB2YWx1
ZXMgdXNlZCB0byBkZXNjcmliZSB0aGUgcHJpbWFyeSBwdXJwb3NlIG9mIHRoZSBhY3RpdmUgZWRp
dGFibGUgZWxlbWVudC4KKyAqCisgKiBTaW5jZTogMi4yOAorICovCit0eXBlZGVmIGVudW0gewor
ICAgIFdFQktJVF9JTlBVVF9QVVJQT1NFX0ZSRUVfRk9STSwKKyAgICBXRUJLSVRfSU5QVVRfUFVS
UE9TRV9ESUdJVFMsCisgICAgV0VCS0lUX0lOUFVUX1BVUlBPU0VfTlVNQkVSLAorICAgIFdFQktJ
VF9JTlBVVF9QVVJQT1NFX1BIT05FLAorICAgIFdFQktJVF9JTlBVVF9QVVJQT1NFX1VSTCwKKyAg
ICBXRUJLSVRfSU5QVVRfUFVSUE9TRV9FTUFJTCwKKyAgICBXRUJLSVRfSU5QVVRfUFVSUE9TRV9Q
QVNTV09SRAorfSBXZWJLaXRJbnB1dFB1cnBvc2U7CisKKy8qKgorICogV2ViS2l0SW5wdXRIaW50
czoKKyAqIEBXRUJLSVRfSU5QVVRfSElOVF9OT05FOiBObyBzcGVjaWFsIGJlaGF2aW9yIHN1Z2dl
c3RlZAorICogQFdFQktJVF9JTlBVVF9ISU5UX1NQRUxMQ0hFQ0s6IFN1Z2dlc3Qgc3BlbGwgY2hl
Y2tpbmcKKyAqIEBXRUJLSVRfSU5QVVRfSElOVF9MT1dFUkNBU0U6IFN1Z2dlc3QgdG8gbm90IGF1
dG9jYXBpdGxpemUKKyAqIEBXRUJLSVRfSU5QVVRfSElOVF9VUFBFUkNBU0VfQ0hBUlM6IFN1Z2dl
c3QgdG8gY2FwaXRhbGl6ZSBhbGwgdGV4dAorICogQFdFQktJVF9JTlBVVF9ISU5UX1VQUEVSQ0FT
RV9XT1JEUzogU3VnZ2VzdCB0byBjYXBpdGFsaXplIHRoZSBmaXJzdCBjaGFyYWN0ZXIgb2YgZWFj
aCB3b3JkCisgKiBAV0VCS0lUX0lOUFVUX0hJTlRfVVBQRVJDQVNFX1NFTlRFTkNFUzogU3VnZ2Vz
dCB0byBjYXBpdGFsaXplIHRoZSBmaXJzdCB3b3JkIG9mIGVhY2ggc2VudGVuY2UKKyAqIEBXRUJL
SVRfSU5QVVRfSElOVF9JTkhJQklUX09TSzogU3VnZ2VzdCB0byBub3Qgc2hvdyBhbiBvbnNjcmVl
biBrZXlib2FyZAorICoKKyAqIEVudW0gdmFsdWVzIHVzZWQgdG8gZGVzY3JpYmUgaGludHMgdGhh
dCBtaWdodCBiZSB0YWtlbiBpbnRvIGFjY291bnQgYnkgaW5wdXQgbWV0aG9kcy4KKyAqCisgKiBT
aW5jZTogMi4yOAorICovCit0eXBlZGVmIGVudW0geworICAgIFdFQktJVF9JTlBVVF9ISU5UX05P
TkUgICAgICAgICAgICAgICAgPSAwLAorICAgIFdFQktJVF9JTlBVVF9ISU5UX1NQRUxMQ0hFQ0sg
ICAgICAgICAgPSAxIDw8IDAsCisgICAgV0VCS0lUX0lOUFVUX0hJTlRfTE9XRVJDQVNFICAgICAg
ICAgICA9IDEgPDwgMSwKKyAgICBXRUJLSVRfSU5QVVRfSElOVF9VUFBFUkNBU0VfQ0hBUlMgICAg
ID0gMSA8PCAyLAorICAgIFdFQktJVF9JTlBVVF9ISU5UX1VQUEVSQ0FTRV9XT1JEUyAgICAgPSAx
IDw8IDMsCisgICAgV0VCS0lUX0lOUFVUX0hJTlRfVVBQRVJDQVNFX1NFTlRFTkNFUyA9IDEgPDwg
NCwKKyAgICBXRUJLSVRfSU5QVVRfSElOVF9JTkhJQklUX09TSyAgICAgICAgID0gMSA8PCA1Cit9
IFdlYktpdElucHV0SGludHM7CisKIHR5cGVkZWYgc3RydWN0IF9XZWJLaXRJbnB1dE1ldGhvZENv
bnRleHQgICAgICAgIFdlYktpdElucHV0TWV0aG9kQ29udGV4dDsKIHR5cGVkZWYgc3RydWN0IF9X
ZWJLaXRJbnB1dE1ldGhvZENvbnRleHRDbGFzcyAgIFdlYktpdElucHV0TWV0aG9kQ29udGV4dENs
YXNzOwogdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdElucHV0TWV0aG9kQ29udGV4dFByaXZhdGUgV2Vi
S2l0SW5wdXRNZXRob2RDb250ZXh0UHJpdmF0ZTsKQEAgLTE0MCw2ICsxODgsMjAgQEAgV0VCS0lU
X0FQSSB2b2lkCiB3ZWJraXRfaW5wdXRfbWV0aG9kX3VuZGVybGluZV9zZXRfY29sb3IgICAgICAg
IChXZWJLaXRJbnB1dE1ldGhvZFVuZGVybGluZSAqdW5kZXJsaW5lLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR2RrUkdCQSAgICAgICAgICAg
ICAgKnJnYmEpOwogCitXRUJLSVRfQVBJIFdlYktpdElucHV0UHVycG9zZQord2Via2l0X2lucHV0
X21ldGhvZF9jb250ZXh0X2dldF9pbnB1dF9wdXJwb3NlICAoV2ViS2l0SW5wdXRNZXRob2RDb250
ZXh0ICAgKmNvbnRleHQpOworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9pbnB1dF9tZXRob2Rf
Y29udGV4dF9zZXRfaW5wdXRfcHVycG9zZSAgKFdlYktpdElucHV0TWV0aG9kQ29udGV4dCAgICpj
b250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
V2ViS2l0SW5wdXRQdXJwb3NlICAgICAgICAgIHB1cnBvc2UpOworCitXRUJLSVRfQVBJIFdlYktp
dElucHV0SGludHMKK3dlYmtpdF9pbnB1dF9tZXRob2RfY29udGV4dF9nZXRfaW5wdXRfaGludHMg
ICAgKFdlYktpdElucHV0TWV0aG9kQ29udGV4dCAgICpjb250ZXh0KTsKKworV0VCS0lUX0FQSSB2
b2lkCit3ZWJraXRfaW5wdXRfbWV0aG9kX2NvbnRleHRfc2V0X2lucHV0X2hpbnRzICAgIChXZWJL
aXRJbnB1dE1ldGhvZENvbnRleHQgICAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdElucHV0SGludHMgICAgICAgICAgICBoaW50
cyk7CisKIAogR19FTkRfREVDTFMKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRJbnB1dE1ldGhvZENvbnRleHRJbXBsR3RrLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0SW5wdXRNZXRob2RDb250ZXh0SW1wbEd0ay5j
cHAKaW5kZXggOTQ1Mzg2MDE0N2MuLjE5MWY5OGQ3YThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdElucHV0TWV0aG9kQ29udGV4dEltcGxHdGsuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0SW5wdXRNZXRob2RD
b250ZXh0SW1wbEd0ay5jcHAKQEAgLTMxLDYgKzMxLDU2IEBAIHN0cnVjdCBfV2ViS2l0SW5wdXRN
ZXRob2RDb250ZXh0SW1wbEd0a1ByaXZhdGUgewogCiBXRUJLSVRfREVGSU5FX1RZUEUoV2ViS2l0
SW5wdXRNZXRob2RDb250ZXh0SW1wbEd0aywgd2Via2l0X2lucHV0X21ldGhvZF9jb250ZXh0X2lt
cGxfZ3RrLCBXRUJLSVRfVFlQRV9JTlBVVF9NRVRIT0RfQ09OVEVYVCkKIAorc3RhdGljIEd0a0lu
cHV0UHVycG9zZSB0b0d0a0lucHV0UHVycG9zZShXZWJLaXRJbnB1dFB1cnBvc2UgcHVycG9zZSkK
K3sKKyAgICBzd2l0Y2ggKHB1cnBvc2UpIHsKKyAgICBjYXNlIFdFQktJVF9JTlBVVF9QVVJQT1NF
X0ZSRUVfRk9STToKKyAgICAgICAgcmV0dXJuIEdUS19JTlBVVF9QVVJQT1NFX0ZSRUVfRk9STTsK
KyAgICBjYXNlIFdFQktJVF9JTlBVVF9QVVJQT1NFX0RJR0lUUzoKKyAgICAgICAgcmV0dXJuIEdU
S19JTlBVVF9QVVJQT1NFX0RJR0lUUzsKKyAgICBjYXNlIFdFQktJVF9JTlBVVF9QVVJQT1NFX05V
TUJFUjoKKyAgICAgICAgcmV0dXJuIEdUS19JTlBVVF9QVVJQT1NFX05VTUJFUjsKKyAgICBjYXNl
IFdFQktJVF9JTlBVVF9QVVJQT1NFX1BIT05FOgorICAgICAgICByZXR1cm4gR1RLX0lOUFVUX1BV
UlBPU0VfUEhPTkU7CisgICAgY2FzZSBXRUJLSVRfSU5QVVRfUFVSUE9TRV9VUkw6CisgICAgICAg
IHJldHVybiBHVEtfSU5QVVRfUFVSUE9TRV9VUkw7CisgICAgY2FzZSBXRUJLSVRfSU5QVVRfUFVS
UE9TRV9FTUFJTDoKKyAgICAgICAgcmV0dXJuIEdUS19JTlBVVF9QVVJQT1NFX0VNQUlMOworICAg
IGNhc2UgV0VCS0lUX0lOUFVUX1BVUlBPU0VfUEFTU1dPUkQ6CisgICAgICAgIHJldHVybiBHVEtf
SU5QVVRfUFVSUE9TRV9QQVNTV09SRDsKKyAgICB9CisKKyAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworfQorCitzdGF0aWMgR3RrSW5wdXRIaW50cyB0b0d0a0lucHV0SGludHMoV2Vi
S2l0SW5wdXRIaW50cyBoaW50cykKK3sKKyAgICB1bnNpZ25lZCBndGtIaW50cyA9IDA7CisgICAg
aWYgKGhpbnRzICYgV0VCS0lUX0lOUFVUX0hJTlRfU1BFTExDSEVDSykKKyAgICAgICAgZ3RrSGlu
dHMgfD0gR1RLX0lOUFVUX0hJTlRfU1BFTExDSEVDSzsKKyAgICBpZiAoaGludHMgJiBXRUJLSVRf
SU5QVVRfSElOVF9MT1dFUkNBU0UpCisgICAgICAgIGd0a0hpbnRzIHw9IEdUS19JTlBVVF9ISU5U
X0xPV0VSQ0FTRTsKKyAgICBpZiAoaGludHMgJiBXRUJLSVRfSU5QVVRfSElOVF9VUFBFUkNBU0Vf
Q0hBUlMpCisgICAgICAgIGd0a0hpbnRzIHw9IEdUS19JTlBVVF9ISU5UX1VQUEVSQ0FTRV9DSEFS
UzsKKyAgICBpZiAoaGludHMgJiBXRUJLSVRfSU5QVVRfSElOVF9VUFBFUkNBU0VfV09SRFMpCisg
ICAgICAgIGd0a0hpbnRzIHw9IEdUS19JTlBVVF9ISU5UX1VQUEVSQ0FTRV9XT1JEUzsKKyAgICBp
ZiAoaGludHMgJiBXRUJLSVRfSU5QVVRfSElOVF9VUFBFUkNBU0VfU0VOVEVOQ0VTKQorICAgICAg
ICBndGtIaW50cyB8PSBHVEtfSU5QVVRfSElOVF9VUFBFUkNBU0VfU0VOVEVOQ0VTOworICAgIGlm
IChoaW50cyAmIFdFQktJVF9JTlBVVF9ISU5UX0lOSElCSVRfT1NLKQorICAgICAgICBndGtIaW50
cyB8PSBHVEtfSU5QVVRfSElOVF9JTkhJQklUX09TSzsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
R3RrSW5wdXRIaW50cz4oZ3RrSGludHMpOworfQorCitzdGF0aWMgdm9pZCBpbnB1dFB1cnBvc2VD
aGFuZ2VkQ2FsbGJhY2soV2ViS2l0SW5wdXRNZXRob2RDb250ZXh0SW1wbEd0ayogY29udGV4dCkK
K3sKKyAgICBnX29iamVjdF9zZXQoY29udGV4dC0+cHJpdi0+Y29udGV4dC5nZXQoKSwgImlucHV0
LXB1cnBvc2UiLCB0b0d0a0lucHV0UHVycG9zZSh3ZWJraXRfaW5wdXRfbWV0aG9kX2NvbnRleHRf
Z2V0X2lucHV0X3B1cnBvc2UoV0VCS0lUX0lOUFVUX01FVEhPRF9DT05URVhUKGNvbnRleHQpKSks
IG51bGxwdHIpOworfQorCitzdGF0aWMgdm9pZCBpbnB1dEhpbnRzQ2hhbmdlZENhbGxiYWNrKFdl
YktpdElucHV0TWV0aG9kQ29udGV4dEltcGxHdGsqIGNvbnRleHQpCit7CisgICAgZ19vYmplY3Rf
c2V0KGNvbnRleHQtPnByaXYtPmNvbnRleHQuZ2V0KCksICJpbnB1dC1oaW50cyIsIHRvR3RrSW5w
dXRIaW50cyh3ZWJraXRfaW5wdXRfbWV0aG9kX2NvbnRleHRfZ2V0X2lucHV0X2hpbnRzKFdFQktJ
VF9JTlBVVF9NRVRIT0RfQ09OVEVYVChjb250ZXh0KSkpLCBudWxscHRyKTsKK30KKwogc3RhdGlj
IHZvaWQgY29udGV4dFByZWVkaXRTdGFydENhbGxiYWNrKFdlYktpdElucHV0TWV0aG9kQ29udGV4
dEltcGxHdGsqIGNvbnRleHQpCiB7CiAgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKGNvbnRleHQs
ICJwcmVlZGl0LXN0YXJ0ZWQiLCBudWxscHRyKTsKQEAgLTU1LDYgKzEwNSw5IEBAIHN0YXRpYyB2
b2lkIHdlYmtpdElucHV0TWV0aG9kQ29udGV4dEltcGxHdGtDb25zdHJ1Y3RlZChHT2JqZWN0KiBv
YmplY3QpCiB7CiAgICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0X2lucHV0X21ldGhvZF9jb250ZXh0
X2ltcGxfZ3RrX3BhcmVudF9jbGFzcyktPmNvbnN0cnVjdGVkKG9iamVjdCk7CiAKKyAgICBnX3Np
Z25hbF9jb25uZWN0X3N3YXBwZWQob2JqZWN0LCAibm90aWZ5OjppbnB1dC1wdXJwb3NlIiwgR19D
QUxMQkFDSyhpbnB1dFB1cnBvc2VDaGFuZ2VkQ2FsbGJhY2spLCBvYmplY3QpOworICAgIGdfc2ln
bmFsX2Nvbm5lY3Rfc3dhcHBlZChvYmplY3QsICJub3RpZnk6OmlucHV0LWhpbnRzIiwgR19DQUxM
QkFDSyhpbnB1dEhpbnRzQ2hhbmdlZENhbGxiYWNrKSwgb2JqZWN0KTsKKwogICAgIGF1dG8qIHBy
aXYgPSBXRUJLSVRfSU5QVVRfTUVUSE9EX0NPTlRFWFRfSU1QTF9HVEsob2JqZWN0KS0+cHJpdjsK
ICAgICBwcml2LT5jb250ZXh0ID0gYWRvcHRHUmVmKGd0a19pbV9tdWx0aWNvbnRleHRfbmV3KCkp
OwogICAgIGdfc2lnbmFsX2Nvbm5lY3Rfb2JqZWN0KHByaXYtPmNvbnRleHQuZ2V0KCksICJwcmVl
ZGl0LXN0YXJ0IiwgR19DQUxMQkFDSyhjb250ZXh0UHJlZWRpdFN0YXJ0Q2FsbGJhY2spLCBvYmpl
Y3QsIEdfQ09OTkVDVF9TV0FQUEVEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKaW5kZXggOTQ0ZGIyZTI2MzEuLjBmMTQ3
ZWQ5YmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFdlYlZpZXdCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFdlYlZpZXdCYXNlLmNwcApAQCAtMTY2Niw5ICsxNjY2LDkgQEAgYm9vbCB3ZWJraXRXZWJW
aWV3QmFzZUlzSW5XaW5kb3coV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNlKQogICAgIHJl
dHVybiB3ZWJWaWV3QmFzZS0+cHJpdi0+YWN0aXZpdHlTdGF0ZS5jb250YWlucyhBY3Rpdml0eVN0
YXRlOjpJc0luV2luZG93KTsKIH0KIAotdm9pZCB3ZWJraXRXZWJWaWV3QmFzZVNldElucHV0TWV0
aG9kU3RhdGUoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYmtpdFdlYlZpZXdCYXNlLCBib29sIGVuYWJs
ZWQpCit2b2lkIHdlYmtpdFdlYlZpZXdCYXNlU2V0SW5wdXRNZXRob2RTdGF0ZShXZWJLaXRXZWJW
aWV3QmFzZSogd2Via2l0V2ViVmlld0Jhc2UsIE9wdGlvbmFsPElucHV0TWV0aG9kU3RhdGU+JiYg
c3RhdGUpCiB7Ci0gICAgd2Via2l0V2ViVmlld0Jhc2UtPnByaXYtPmlucHV0TWV0aG9kRmlsdGVy
LnNldEVuYWJsZWQoZW5hYmxlZCk7CisgICAgd2Via2l0V2ViVmlld0Jhc2UtPnByaXYtPmlucHV0
TWV0aG9kRmlsdGVyLnNldFN0YXRlKFdURk1vdmUoc3RhdGUpKTsKIH0KIAogdm9pZCB3ZWJraXRX
ZWJWaWV3QmFzZVVwZGF0ZVRleHRJbnB1dFN0YXRlKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJraXRX
ZWJWaWV3QmFzZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZS5oCmluZGV4IGQ2NWE2M2MxZGRhLi4xZGZlMTgx
NmUyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRX
ZWJWaWV3QmFzZVByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZS5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAi
QVBJUGFnZUNvbmZpZ3VyYXRpb24uaCIKICNpbmNsdWRlICJEcmFnQW5kRHJvcEhhbmRsZXIuaCIK
ICNpbmNsdWRlICJHZXN0dXJlQ29udHJvbGxlci5oIgorI2luY2x1ZGUgIklucHV0TWV0aG9kU3Rh
dGUuaCIKICNpbmNsdWRlICJTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZS5oIgogI2luY2x1ZGUg
IlZpZXdHZXN0dXJlQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIlZpZXdTbmFwc2hvdFN0b3JlLmgi
CkBAIC01NSw3ICs1Niw3IEBAIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VTZXRJbnNwZWN0b3JWaWV3
U2l6ZShXZWJLaXRXZWJWaWV3QmFzZSosIHVuc2lnbmVkIHNpemUpOwogdm9pZCB3ZWJraXRXZWJW
aWV3QmFzZVNldEFjdGl2ZUNvbnRleHRNZW51UHJveHkoV2ViS2l0V2ViVmlld0Jhc2UqLCBXZWJL
aXQ6OldlYkNvbnRleHRNZW51UHJveHlHdGsqKTsKIFdlYktpdDo6V2ViQ29udGV4dE1lbnVQcm94
eUd0ayogd2Via2l0V2ViVmlld0Jhc2VHZXRBY3RpdmVDb250ZXh0TWVudVByb3h5KFdlYktpdFdl
YlZpZXdCYXNlKik7CiBHZGtFdmVudCogd2Via2l0V2ViVmlld0Jhc2VUYWtlQ29udGV4dE1lbnVF
dmVudChXZWJLaXRXZWJWaWV3QmFzZSopOwotdm9pZCB3ZWJraXRXZWJWaWV3QmFzZVNldElucHV0
TWV0aG9kU3RhdGUoV2ViS2l0V2ViVmlld0Jhc2UqLCBib29sIGVuYWJsZWQpOwordm9pZCB3ZWJr
aXRXZWJWaWV3QmFzZVNldElucHV0TWV0aG9kU3RhdGUoV2ViS2l0V2ViVmlld0Jhc2UqLCBPcHRp
b25hbDxXZWJLaXQ6OklucHV0TWV0aG9kU3RhdGU+JiYpOwogdm9pZCB3ZWJraXRXZWJWaWV3QmFz
ZVVwZGF0ZVRleHRJbnB1dFN0YXRlKFdlYktpdFdlYlZpZXdCYXNlKik7CiB2b2lkIHdlYmtpdFdl
YlZpZXdCYXNlU2V0Q29udGVudHNTaXplKFdlYktpdFdlYlZpZXdCYXNlKiwgY29uc3QgV2ViQ29y
ZTo6SW50U2l6ZSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0IGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dAppbmRleCBmMTQ3
MWI1NTFiOS4uNTIwNjk4MDhiZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dApA
QCAtMTU2MCw2ICsxNTYwLDggQEAgV0VCS0lUX1RZUEVfR0VPTE9DQVRJT05fUE9TSVRJT04KIDxT
RUNUSU9OPgogPEZJTEU+V2ViS2l0SW5wdXRNZXRob2RDb250ZXh0PC9GSUxFPgogV2ViS2l0SW5w
dXRNZXRob2RDb250ZXh0CitXZWJLaXRJbnB1dFB1cnBvc2UKK1dlYktpdElucHV0SGludHMKIHdl
YmtpdF9pbnB1dF9tZXRob2RfY29udGV4dF9zZXRfZW5hYmxlX3ByZWVkaXQKIHdlYmtpdF9pbnB1
dF9tZXRob2RfY29udGV4dF9nZXRfcHJlZWRpdAogd2Via2l0X2lucHV0X21ldGhvZF9jb250ZXh0
X2ZpbHRlcl9rZXlfZXZlbnQKQEAgLTE1NjcsNiArMTU2OSwxMCBAQCB3ZWJraXRfaW5wdXRfbWV0
aG9kX2NvbnRleHRfbm90aWZ5X2ZvY3VzX2luCiB3ZWJraXRfaW5wdXRfbWV0aG9kX2NvbnRleHRf
bm90aWZ5X2ZvY3VzX291dAogd2Via2l0X2lucHV0X21ldGhvZF9jb250ZXh0X25vdGlmeV9jdXJz
b3JfYXJlYQogd2Via2l0X2lucHV0X21ldGhvZF9jb250ZXh0X3Jlc2V0Cit3ZWJraXRfaW5wdXRf
bWV0aG9kX2NvbnRleHRfZ2V0X2lucHV0X3B1cnBvc2UKK3dlYmtpdF9pbnB1dF9tZXRob2RfY29u
dGV4dF9zZXRfaW5wdXRfcHVycG9zZQord2Via2l0X2lucHV0X21ldGhvZF9jb250ZXh0X2dldF9p
bnB1dF9oaW50cword2Via2l0X2lucHV0X21ldGhvZF9jb250ZXh0X3NldF9pbnB1dF9oaW50cwog
CiA8U1VCU0VDVElPTiBVbmRlcmxpbmU+CiBXZWJLaXRJbnB1dE1ldGhvZFVuZGVybGluZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9QYWdlQ2xpZW50SW1wbC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1BhZ2VDbGllbnRJbXBsLmNwcApp
bmRleCBkYTRhOTUyNTdlZi4uNTkyZDczMzQ5OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS93cGUvUGFnZUNsaWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS93cGUvUGFnZUNsaWVudEltcGwuY3BwCkBAIC00MzAsOSArNDMwLDkgQEAg
dm9pZCBQYWdlQ2xpZW50SW1wbDo6c2VuZE1lc3NhZ2VUb1dlYlZpZXcoVXNlck1lc3NhZ2UmJiBt
ZXNzYWdlLCBDb21wbGV0aW9uSGFuZGwKICAgICBtX3ZpZXcuZGlkUmVjZWl2ZVVzZXJNZXNzYWdl
KFdURk1vdmUobWVzc2FnZSksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9p
ZCBQYWdlQ2xpZW50SW1wbDo6c2V0SW5wdXRNZXRob2RTdGF0ZShib29sIGVuYWJsZWQpCit2b2lk
IFBhZ2VDbGllbnRJbXBsOjpzZXRJbnB1dE1ldGhvZFN0YXRlKE9wdGlvbmFsPElucHV0TWV0aG9k
U3RhdGU+JiYgc3RhdGUpCiB7Ci0gICAgbV92aWV3LnNldElucHV0TWV0aG9kU3RhdGUoZW5hYmxl
ZCk7CisgICAgbV92aWV3LnNldElucHV0TWV0aG9kU3RhdGUoV1RGTW92ZShzdGF0ZSkpOwogfQog
CiB2b2lkIFBhZ2VDbGllbnRJbXBsOjpzZWxlY3Rpb25EaWRDaGFuZ2UoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9QYWdlQ2xpZW50SW1wbC5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9QYWdlQ2xpZW50SW1wbC5oCmluZGV4IDdkY2Q4YTE5
YmZkLi5hMmY4OGY4MDhjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L3dwZS9QYWdlQ2xpZW50SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93
cGUvUGFnZUNsaWVudEltcGwuaApAQCAtNDIsNiArNDIsNyBAQCBlbnVtIGNsYXNzIERPTVBhc3Rl
QWNjZXNzUmVzcG9uc2UgOiB1aW50OF90OwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFNj
cm9sbEdlc3R1cmVDb250cm9sbGVyOworc3RydWN0IElucHV0TWV0aG9kU3RhdGU7CiBzdHJ1Y3Qg
VXNlck1lc3NhZ2U7CiAKIGVudW0gY2xhc3MgVW5kb09yUmVkbyA6IGJvb2w7CkBAIC02Miw3ICs2
Myw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgdm9pZCBzZW5kTWVzc2FnZVRvV2ViVmlldyhV
c2VyTWVzc2FnZSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFVzZXJNZXNzYWdlJiYpPiYmKTsK
LSAgICB2b2lkIHNldElucHV0TWV0aG9kU3RhdGUoYm9vbCBlbmFibGVkKTsKKyAgICB2b2lkIHNl
dElucHV0TWV0aG9kU3RhdGUoT3B0aW9uYWw8SW5wdXRNZXRob2RTdGF0ZT4mJik7CiAKIHByaXZh
dGU6CiAgICAgLy8gUGFnZUNsaWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL3dwZS9XUEVWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUv
V1BFVmlldy5jcHAKaW5kZXggZWY2NWI3YTliNmQuLjI3NWJiMGJhOTVlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dQRVZpZXcuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV1BFVmlldy5jcHAKQEAgLTIzMSw5ICsyMzEsOSBAQCBX
ZWJLaXRJbnB1dE1ldGhvZENvbnRleHQqIFZpZXc6OmlucHV0TWV0aG9kQ29udGV4dCgpIGNvbnN0
CiAgICAgcmV0dXJuIG1faW5wdXRNZXRob2RGaWx0ZXIuY29udGV4dCgpOwogfQogCi12b2lkIFZp
ZXc6OnNldElucHV0TWV0aG9kU3RhdGUoYm9vbCBlbmFibGVkKQordm9pZCBWaWV3OjpzZXRJbnB1
dE1ldGhvZFN0YXRlKE9wdGlvbmFsPElucHV0TWV0aG9kU3RhdGU+JiYgc3RhdGUpCiB7Ci0gICAg
bV9pbnB1dE1ldGhvZEZpbHRlci5zZXRFbmFibGVkKGVuYWJsZWQpOworICAgIG1faW5wdXRNZXRo
b2RGaWx0ZXIuc2V0U3RhdGUoV1RGTW92ZShzdGF0ZSkpOwogfQogCiB2b2lkIFZpZXc6OnNlbGVj
dGlvbkRpZENoYW5nZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
d3BlL1dQRVZpZXcuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV1BFVmlldy5o
CmluZGV4IGFhODcwNzJlYzFjLi5mMjNkZmMyN2E3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL3dwZS9XUEVWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL3dwZS9XUEVWaWV3LmgKQEAgLTgxLDcgKzgxLDcgQEAgcHVibGljOgogCiAgICAgdm9p
ZCBzZXRJbnB1dE1ldGhvZENvbnRleHQoV2ViS2l0SW5wdXRNZXRob2RDb250ZXh0Kik7CiAgICAg
V2ViS2l0SW5wdXRNZXRob2RDb250ZXh0KiBpbnB1dE1ldGhvZENvbnRleHQoKSBjb25zdDsKLSAg
ICB2b2lkIHNldElucHV0TWV0aG9kU3RhdGUoYm9vbCk7CisgICAgdm9pZCBzZXRJbnB1dE1ldGhv
ZFN0YXRlKE9wdGlvbmFsPFdlYktpdDo6SW5wdXRNZXRob2RTdGF0ZT4mJik7CiAgICAgdm9pZCBz
eW50aGVzaXplQ29tcG9zaXRpb25LZXlQcmVzcyhjb25zdCBTdHJpbmcmLCBPcHRpb25hbDxWZWN0
b3I8V2ViQ29yZTo6Q29tcG9zaXRpb25VbmRlcmxpbmU+PiYmLCBPcHRpb25hbDxXZWJLaXQ6OkVk
aXRpbmdSYW5nZT4mJik7CiAKICAgICB2b2lkIHNlbGVjdGlvbkRpZENoYW5nZSgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRJbnB1dE1ldGhvZENv
bnRleHQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0SW5wdXRNZXRo
b2RDb250ZXh0LmgKaW5kZXggNDY0ZTM1MjE2ZmYuLjgyODU1OTQ4NWQ4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdElucHV0TWV0aG9kQ29udGV4dC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0SW5wdXRNZXRob2RD
b250ZXh0LmgKQEAgLTQwLDYgKzQwLDU0IEBAIEdfQkVHSU5fREVDTFMKIAogI2RlZmluZSBXRUJL
SVRfVFlQRV9JTlBVVF9NRVRIT0RfVU5ERVJMSU5FICAgICAgICAgICh3ZWJraXRfaW5wdXRfbWV0
aG9kX3VuZGVybGluZV9nZXRfdHlwZSgpKQogCisvKioKKyAqIFdlYktpdElucHV0UHVycG9zZToK
KyAqIEBXRUJLSVRfSU5QVVRfUFVSUE9TRV9GUkVFX0ZPUk06IEVkaXRhYmxlIGVsZW1lbnQgZXhw
ZWN0cyBhbnkgY2hhcmFjdGVycworICogQFdFQktJVF9JTlBVVF9QVVJQT1NFX0RJR0lUUzogRWRp
dGFibGUgZWxlbWVudCBleHBlY3RzIGRpZ2l0cworICogQFdFQktJVF9JTlBVVF9QVVJQT1NFX05V
TUJFUjogRWRpdGFibGUgZWxlbWVudCBleHBlY3RzIGEgbnVtYmVyCisgKiBAV0VCS0lUX0lOUFVU
X1BVUlBPU0VfUEhPTkU6IEVkaXRhYmxlIGVsZW1lbnQgZXhwZWN0cyBhIHRlbGVwaG9uZQorICog
QFdFQktJVF9JTlBVVF9QVVJQT1NFX1VSTDogRWRpdGFibGUgZWxlbWVudCBleHBlY3RzIGEgVVJM
CisgKiBAV0VCS0lUX0lOUFVUX1BVUlBPU0VfRU1BSUw6IEVkaXRhYmxlIGVsZW1lbnQgZXhwZWN0
cyBhbiBlbWFpbAorICogQFdFQktJVF9JTlBVVF9QVVJQT1NFX1BBU1NXT1JEOiBFZGl0YWJsZSBl
bGVtZW50IGV4cGVjdHMgYSBwYXNzd29yZAorICoKKyAqIEVudW0gdmFsdWVzIHVzZWQgdG8gZGVz
Y3JpYmUgdGhlIHByaW1hcnkgcHVycG9zZSBvZiB0aGUgYWN0aXZlIGVkaXRhYmxlIGVsZW1lbnQu
CisgKgorICogU2luY2U6IDIuMjgKKyAqLwordHlwZWRlZiBlbnVtIHsKKyAgICBXRUJLSVRfSU5Q
VVRfUFVSUE9TRV9GUkVFX0ZPUk0sCisgICAgV0VCS0lUX0lOUFVUX1BVUlBPU0VfRElHSVRTLAor
ICAgIFdFQktJVF9JTlBVVF9QVVJQT1NFX05VTUJFUiwKKyAgICBXRUJLSVRfSU5QVVRfUFVSUE9T
RV9QSE9ORSwKKyAgICBXRUJLSVRfSU5QVVRfUFVSUE9TRV9VUkwsCisgICAgV0VCS0lUX0lOUFVU
X1BVUlBPU0VfRU1BSUwsCisgICAgV0VCS0lUX0lOUFVUX1BVUlBPU0VfUEFTU1dPUkQKK30gV2Vi
S2l0SW5wdXRQdXJwb3NlOworCisvKioKKyAqIFdlYktpdElucHV0SGludHM6CisgKiBAV0VCS0lU
X0lOUFVUX0hJTlRfTk9ORTogTm8gc3BlY2lhbCBiZWhhdmlvciBzdWdnZXN0ZWQKKyAqIEBXRUJL
SVRfSU5QVVRfSElOVF9TUEVMTENIRUNLOiBTdWdnZXN0IHNwZWxsIGNoZWNraW5nCisgKiBAV0VC
S0lUX0lOUFVUX0hJTlRfTE9XRVJDQVNFOiBTdWdnZXN0IHRvIG5vdCBhdXRvY2FwaXRsaXplCisg
KiBAV0VCS0lUX0lOUFVUX0hJTlRfVVBQRVJDQVNFX0NIQVJTOiBTdWdnZXN0IHRvIGNhcGl0YWxp
emUgYWxsIHRleHQKKyAqIEBXRUJLSVRfSU5QVVRfSElOVF9VUFBFUkNBU0VfV09SRFM6IFN1Z2dl
c3QgdG8gY2FwaXRhbGl6ZSB0aGUgZmlyc3QgY2hhcmFjdGVyIG9mIGVhY2ggd29yZAorICogQFdF
QktJVF9JTlBVVF9ISU5UX1VQUEVSQ0FTRV9TRU5URU5DRVM6IFN1Z2dlc3QgdG8gY2FwaXRhbGl6
ZSB0aGUgZmlyc3Qgd29yZCBvZiBlYWNoIHNlbnRlbmNlCisgKiBAV0VCS0lUX0lOUFVUX0hJTlRf
SU5ISUJJVF9PU0s6IFN1Z2dlc3QgdG8gbm90IHNob3cgYW4gb25zY3JlZW4ga2V5Ym9hcmQKKyAq
CisgKiBFbnVtIHZhbHVlcyB1c2VkIHRvIGRlc2NyaWJlIGhpbnRzIHRoYXQgbWlnaHQgYmUgdGFr
ZW4gaW50byBhY2NvdW50IGJ5IGlucHV0IG1ldGhvZHMuCisgKgorICogU2luY2U6IDIuMjgKKyAq
LwordHlwZWRlZiBlbnVtIHsKKyAgICBXRUJLSVRfSU5QVVRfSElOVF9OT05FICAgICAgICAgICAg
ICAgID0gMCwKKyAgICBXRUJLSVRfSU5QVVRfSElOVF9TUEVMTENIRUNLICAgICAgICAgID0gMSA8
PCAwLAorICAgIFdFQktJVF9JTlBVVF9ISU5UX0xPV0VSQ0FTRSAgICAgICAgICAgPSAxIDw8IDEs
CisgICAgV0VCS0lUX0lOUFVUX0hJTlRfVVBQRVJDQVNFX0NIQVJTICAgICA9IDEgPDwgMiwKKyAg
ICBXRUJLSVRfSU5QVVRfSElOVF9VUFBFUkNBU0VfV09SRFMgICAgID0gMSA8PCAzLAorICAgIFdF
QktJVF9JTlBVVF9ISU5UX1VQUEVSQ0FTRV9TRU5URU5DRVMgPSAxIDw8IDQsCisgICAgV0VCS0lU
X0lOUFVUX0hJTlRfSU5ISUJJVF9PU0sgICAgICAgICA9IDEgPDwgNQorfSBXZWJLaXRJbnB1dEhp
bnRzOworCiB0eXBlZGVmIHN0cnVjdCBfV2ViS2l0SW5wdXRNZXRob2RDb250ZXh0ICAgICAgICBX
ZWJLaXRJbnB1dE1ldGhvZENvbnRleHQ7CiB0eXBlZGVmIHN0cnVjdCBfV2ViS2l0SW5wdXRNZXRo
b2RDb250ZXh0Q2xhc3MgICBXZWJLaXRJbnB1dE1ldGhvZENvbnRleHRDbGFzczsKIHR5cGVkZWYg
c3RydWN0IF9XZWJLaXRJbnB1dE1ldGhvZENvbnRleHRQcml2YXRlIFdlYktpdElucHV0TWV0aG9k
Q29udGV4dFByaXZhdGU7CkBAIC0xNDEsNiArMTg5LDIwIEBAIFdFQktJVF9BUEkgdm9pZAogd2Vi
a2l0X2lucHV0X21ldGhvZF91bmRlcmxpbmVfc2V0X2NvbG9yICAgICAgICAoV2ViS2l0SW5wdXRN
ZXRob2RVbmRlcmxpbmUgICAgICAqdW5kZXJsaW5lLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0Q29sb3IgICAgICAgICAgICAgICAgICAgICAq
Y29sb3IpOwogCitXRUJLSVRfQVBJIFdlYktpdElucHV0UHVycG9zZQord2Via2l0X2lucHV0X21l
dGhvZF9jb250ZXh0X2dldF9pbnB1dF9wdXJwb3NlICAoV2ViS2l0SW5wdXRNZXRob2RDb250ZXh0
ICAgICAgICAqY29udGV4dCk7CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X2lucHV0X21ldGhv
ZF9jb250ZXh0X3NldF9pbnB1dF9wdXJwb3NlICAoV2ViS2l0SW5wdXRNZXRob2RDb250ZXh0ICAg
ICAgICAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFdlYktpdElucHV0UHVycG9zZSAgICAgICAgICAgICAgIHB1cnBvc2UpOworCitXRUJL
SVRfQVBJIFdlYktpdElucHV0SGludHMKK3dlYmtpdF9pbnB1dF9tZXRob2RfY29udGV4dF9nZXRf
aW5wdXRfaGludHMgICAgKFdlYktpdElucHV0TWV0aG9kQ29udGV4dCAgICAgICAgKmNvbnRleHQp
OworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9pbnB1dF9tZXRob2RfY29udGV4dF9zZXRfaW5w
dXRfaGludHMgICAgKFdlYktpdElucHV0TWV0aG9kQ29udGV4dCAgICAgICAgKmNvbnRleHQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRJbnB1
dEhpbnRzICAgICAgICAgICAgICAgICBoaW50cyk7CisKIAogR19FTkRfREVDTFMKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9kb2NzL3dwZS0xLjAtc2VjdGlv
bnMudHh0IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9kb2NzL3dwZS0xLjAtc2Vj
dGlvbnMudHh0CmluZGV4IGYwYjBhNzU5MjFjLi5kZjRmODQ2YjQ1OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9kb2NzL3dwZS0xLjAtc2VjdGlvbnMudHh0Cisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvZG9jcy93cGUtMS4wLXNlY3Rpb25z
LnR4dApAQCAtMTQ0NSw2ICsxNDQ1LDggQEAgV0VCS0lUX1RZUEVfR0VPTE9DQVRJT05fUE9TSVRJ
T04KIDxTRUNUSU9OPgogPEZJTEU+V2ViS2l0SW5wdXRNZXRob2RDb250ZXh0PC9GSUxFPgogV2Vi
S2l0SW5wdXRNZXRob2RDb250ZXh0CitXZWJLaXRJbnB1dFB1cnBvc2UKK1dlYktpdElucHV0SGlu
dHMKIHdlYmtpdF9pbnB1dF9tZXRob2RfY29udGV4dF9zZXRfZW5hYmxlX3ByZWVkaXQKIHdlYmtp
dF9pbnB1dF9tZXRob2RfY29udGV4dF9nZXRfcHJlZWRpdAogd2Via2l0X2lucHV0X21ldGhvZF9j
b250ZXh0X2ZpbHRlcl9rZXlfZXZlbnQKQEAgLTE0NTIsNiArMTQ1NCwxMCBAQCB3ZWJraXRfaW5w
dXRfbWV0aG9kX2NvbnRleHRfbm90aWZ5X2ZvY3VzX2luCiB3ZWJraXRfaW5wdXRfbWV0aG9kX2Nv
bnRleHRfbm90aWZ5X2ZvY3VzX291dAogd2Via2l0X2lucHV0X21ldGhvZF9jb250ZXh0X25vdGlm
eV9jdXJzb3JfYXJlYQogd2Via2l0X2lucHV0X21ldGhvZF9jb250ZXh0X3Jlc2V0Cit3ZWJraXRf
aW5wdXRfbWV0aG9kX2NvbnRleHRfZ2V0X2lucHV0X3B1cnBvc2UKK3dlYmtpdF9pbnB1dF9tZXRo
b2RfY29udGV4dF9zZXRfaW5wdXRfcHVycG9zZQord2Via2l0X2lucHV0X21ldGhvZF9jb250ZXh0
X2dldF9pbnB1dF9oaW50cword2Via2l0X2lucHV0X21ldGhvZF9jb250ZXh0X3NldF9pbnB1dF9o
aW50cwogCiA8U1VCU0VDVElPTiBVbmRlcmxpbmU+CiBXZWJLaXRJbnB1dE1ldGhvZFVuZGVybGlu
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCBhY2I3MGY1NjdkMy4u
OGRjYzVkMGZjMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0z
MTEsNiArMzExLDcgQEAgc3RydWN0IEVkaXRvclN0YXRlOwogc3RydWN0IEZvY3VzZWRFbGVtZW50
SW5mb3JtYXRpb247CiBzdHJ1Y3QgRm9udEluZm87CiBzdHJ1Y3QgRnJhbWVJbmZvRGF0YTsKK3N0
cnVjdCBJbnB1dE1ldGhvZFN0YXRlOwogc3RydWN0IEluc2VydFRleHRPcHRpb25zOwogc3RydWN0
IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uOwogc3RydWN0IEludGVyYWN0aW9uSW5m
b3JtYXRpb25SZXF1ZXN0OwpAQCAtNzkwLDcgKzc5MSw3IEBAIHB1YmxpYzoKICNpZiBQTEFURk9S
TShHVEspIHx8IFBMQVRGT1JNKFdQRSkKICAgICB2b2lkIGNhbmNlbENvbXBvc2l0aW9uKGNvbnN0
IFN0cmluZyYgY29tcG9zaXRpb25TdHJpbmcpOwogCi0gICAgdm9pZCBzZXRJbnB1dE1ldGhvZFN0
YXRlKGJvb2wgZW5hYmxlZCk7CisgICAgdm9pZCBzZXRJbnB1dE1ldGhvZFN0YXRlKE9wdGlvbmFs
PElucHV0TWV0aG9kU3RhdGU+JiYpOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShHVEspCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KaW5kZXgg
MDI1ZmIyYzFjOTkuLjk1NGY5NzRhMzA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0yMTksNyArMjE5LDcgQEAgbWVzc2FnZXMg
LT4gV2ViUGFnZVByb3h5IHsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9S
TShXUEUpCi0gICAgU2V0SW5wdXRNZXRob2RTdGF0ZShib29sIGVuYWJsZWQpOworICAgIFNldElu
cHV0TWV0aG9kU3RhdGUoT3B0aW9uYWw8V2ViS2l0OjpJbnB1dE1ldGhvZFN0YXRlPiBzdGF0ZSk7
CiAjZW5kaWYKIAogICAgICMgQmFja0ZvcndhcmQgbWVzc2FnZXMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJQYWdlUHJveHlHdGsuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvZ3RrL1dlYlBhZ2VQcm94eUd0ay5jcHAKaW5kZXggNTQwZTNiYzY4NDYuLjhl
ZTg2ZmExYmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViUGFn
ZVByb3h5R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViUGFnZVBy
b3h5R3RrLmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIldlYlBhZ2VQcm94eS5oIgogCisjaW5jbHVkZSAiSW5wdXRNZXRob2RTdGF0ZS5oIgogI2lu
Y2x1ZGUgIlBhZ2VDbGllbnRJbXBsLmgiCiAjaW5jbHVkZSAiV2ViS2l0VXNlck1lc3NhZ2UuaCIK
ICNpbmNsdWRlICJXZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUuaCIKQEAgLTE0OCw5ICsxNDksOSBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6d2luZG93ZWRQbHVnaW5WaXNpYmlsaXR5RGlkQ2hhbmdlKGJv
b2wgaXNWaXNpYmxlLCB1aW50NjRfdCB3aQogfQogI2VuZGlmIC8vIFBMQVRGT1JNKFgxMSkKIAot
dm9pZCBXZWJQYWdlUHJveHk6OnNldElucHV0TWV0aG9kU3RhdGUoYm9vbCBlbmFibGVkKQordm9p
ZCBXZWJQYWdlUHJveHk6OnNldElucHV0TWV0aG9kU3RhdGUoT3B0aW9uYWw8SW5wdXRNZXRob2RT
dGF0ZT4mJiBzdGF0ZSkKIHsKLSAgICB3ZWJraXRXZWJWaWV3QmFzZVNldElucHV0TWV0aG9kU3Rh
dGUoV0VCS0lUX1dFQl9WSUVXX0JBU0Uodmlld1dpZGdldCgpKSwgZW5hYmxlZCk7CisgICAgd2Vi
a2l0V2ViVmlld0Jhc2VTZXRJbnB1dE1ldGhvZFN0YXRlKFdFQktJVF9XRUJfVklFV19CQVNFKHZp
ZXdXaWRnZXQoKSksIFdURk1vdmUoc3RhdGUpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6Omdl
dENlbnRlckZvclpvb21HZXN0dXJlKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBjZW50ZXJJblZp
ZXdDb29yZGluYXRlcywgV2ViQ29yZTo6SW50UG9pbnQmIGNlbnRlcikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dwZS9XZWJQYWdlUHJveHlXUEUuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3Mvd3BlL1dlYlBhZ2VQcm94eVdQRS5jcHAKaW5kZXggNzE4ZjIxMmQxNDIu
LjhmNjQwZGJkODI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93cGUvV2Vi
UGFnZVByb3h5V1BFLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93cGUvV2ViUGFn
ZVByb3h5V1BFLmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5o
IgogCiAjaW5jbHVkZSAiRWRpdG9yU3RhdGUuaCIKKyNpbmNsdWRlICJJbnB1dE1ldGhvZFN0YXRl
LmgiCiAjaW5jbHVkZSAiUGFnZUNsaWVudEltcGwuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YVN0
b3JlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgpAQCAtOTUsOSArOTYs
OSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2VuZE1lc3NhZ2VUb1dlYlZpZXcoVXNlck1lc3NhZ2Um
JiBtZXNzYWdlKQogICAgIHNlbmRNZXNzYWdlVG9XZWJWaWV3V2l0aFJlcGx5KFdURk1vdmUobWVz
c2FnZSksIFtdKFVzZXJNZXNzYWdlJiYpIHsgfSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojpz
ZXRJbnB1dE1ldGhvZFN0YXRlKGJvb2wgZW5hYmxlZCkKK3ZvaWQgV2ViUGFnZVByb3h5OjpzZXRJ
bnB1dE1ldGhvZFN0YXRlKE9wdGlvbmFsPElucHV0TWV0aG9kU3RhdGU+JiYgc3RhdGUpCiB7Ci0g
ICAgc3RhdGljX2Nhc3Q8UGFnZUNsaWVudEltcGwmPihwYWdlQ2xpZW50KCkpLnNldElucHV0TWV0
aG9kU3RhdGUoZW5hYmxlZCk7CisgICAgc3RhdGljX2Nhc3Q8UGFnZUNsaWVudEltcGwmPihwYWdl
Q2xpZW50KCkpLnNldElucHV0TWV0aG9kU3RhdGUoV1RGTW92ZShzdGF0ZSkpOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKaW5kZXggZGE4M2U5ODFmOTIu
LjdlNTdhZWQ5NTUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcApAQCAtNjA0LDEzICs2MDQsMTMg
QEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OndpbGxTZXRJbnB1dE1ldGhvZFN0YXRlKCkKIHsKIH0K
IAotdm9pZCBXZWJFZGl0b3JDbGllbnQ6OnNldElucHV0TWV0aG9kU3RhdGUoYm9vbCBlbmFibGVk
KQordm9pZCBXZWJFZGl0b3JDbGllbnQ6OnNldElucHV0TWV0aG9kU3RhdGUoRWxlbWVudCogZWxl
bWVudCkKIHsKICNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFdQRSkKLSAgICBtX3BhZ2Ut
PnNldElucHV0TWV0aG9kU3RhdGUoZW5hYmxlZCk7CisgICAgbV9wYWdlLT5zZXRJbnB1dE1ldGhv
ZFN0YXRlKGVsZW1lbnQpOwogI2Vsc2UKICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIFVOVVNF
RF9QQVJBTShlbmFibGVkKTsKKyAgICBVTlVTRURfUEFSQU0oZWxlbWVudCk7CiAjZW5kaWYKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkVkaXRvckNsaWVudC5oCmluZGV4IGE3MmVlMmE2YmRkLi43MjgxZmI0MTYxNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJF
ZGl0b3JDbGllbnQuaApAQCAtMTY3LDcgKzE2Nyw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBzcGVs
bGluZ1VJSXNTaG93aW5nKCkgZmluYWw7CiAgICAgdm9pZCBnZXRHdWVzc2VzRm9yV29yZChjb25z
dCBTdHJpbmcmIHdvcmQsIGNvbnN0IFN0cmluZyYgY29udGV4dCwgY29uc3QgV2ViQ29yZTo6Vmlz
aWJsZVNlbGVjdGlvbiYgY3VycmVudFNlbGVjdGlvbiwgVmVjdG9yPFN0cmluZz4mIGd1ZXNzZXMp
IGZpbmFsOwogICAgIHZvaWQgd2lsbFNldElucHV0TWV0aG9kU3RhdGUoKSBmaW5hbDsKLSAgICB2
b2lkIHNldElucHV0TWV0aG9kU3RhdGUoYm9vbCBlbmFibGVkKSBmaW5hbDsKKyAgICB2b2lkIHNl
dElucHV0TWV0aG9kU3RhdGUoV2ViQ29yZTo6RWxlbWVudCopIGZpbmFsOwogICAgIHZvaWQgcmVx
dWVzdENoZWNraW5nT2ZTdHJpbmcoV2ViQ29yZTo6VGV4dENoZWNraW5nUmVxdWVzdCYsIGNvbnN0
IFdlYkNvcmU6OlZpc2libGVTZWxlY3Rpb24mIGN1cnJlbnRTZWxlY3Rpb24pIGZpbmFsOwogCiAj
aWYgUExBVEZPUk0oR1RLKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oCmluZGV4IDc4ZWEwMmVmNWYyLi45M2YxYjA2Mzc4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMTAwLDYgKzEwMCwxMCBAQCB0eXBlZGVmIHN0
cnVjdCBfQXRrT2JqZWN0IEF0a09iamVjdDsKICNpbmNsdWRlICJXZWJQcmludE9wZXJhdGlvbkd0
ay5oIgogI2VuZGlmCiAKKyNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFdQRSkKKyNpbmNs
dWRlICJJbnB1dE1ldGhvZFN0YXRlLmgiCisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAjaW5jbHVkZSAiR2VzdHVyZVR5cGVzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRQb2lu
dEhhc2guaD4KQEAgLTEwODYsNyArMTA5MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHBvc3RNZXNz
YWdlSWdub3JpbmdGdWxseVN5bmNocm9ub3VzTW9kZShjb25zdCBTdHJpbmcmIG1lc3NhZ2VOYW1l
LCBBUEk6Ok9iamVjdCogbWVzc2FnZUJvZHkpOwogCiAjaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFU
Rk9STShXUEUpCi0gICAgdm9pZCBzZXRJbnB1dE1ldGhvZFN0YXRlKGJvb2wpOworICAgIHZvaWQg
c2V0SW5wdXRNZXRob2RTdGF0ZShXZWJDb3JlOjpFbGVtZW50Kik7CiAjZW5kaWYKIAogICAgIHZv
aWQgaW1hZ2VPck1lZGlhRG9jdW1lbnRTaXplQ2hhbmdlZChjb25zdCBXZWJDb3JlOjpJbnRTaXpl
Jik7CkBAIC0xOTU5LDcgKzE5NjMsNyBAQCBwcml2YXRlOgogICAgIG11dGFibGUgRWRpdG9yU3Rh
dGVJc0NvbnRlbnRFZGl0YWJsZSBtX2xhc3RFZGl0b3JTdGF0ZVdhc0NvbnRlbnRFZGl0YWJsZSB7
IEVkaXRvclN0YXRlSXNDb250ZW50RWRpdGFibGU6OlVuc2V0IH07CiAKICNpZiBQTEFURk9STShH
VEspIHx8IFBMQVRGT1JNKFdQRSkKLSAgICBib29sIG1faW5wdXRNZXRob2RFbmFibGVkIHsgZmFs
c2UgfTsKKyAgICBPcHRpb25hbDxJbnB1dE1ldGhvZFN0YXRlPiBtX2lucHV0TWV0aG9kU3RhdGU7
CiAjZW5kaWYKIAogI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2dsaWIvV2ViUGFnZUdMaWIuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvZ2xpYi9XZWJQYWdlR0xpYi5jcHAK
aW5kZXggNmQzOTgwYWFjMjMuLjVkODJjN2RhMjVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9nbGliL1dlYlBhZ2VHTGliLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9nbGliL1dlYlBhZ2VHTGliLmNwcApAQCAtMjYsMTQgKzI2
LDE4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViUGFnZS5oIgogCisjaW5j
bHVkZSAiSW5wdXRNZXRob2RTdGF0ZS5oIgogI2luY2x1ZGUgIlVzZXJNZXNzYWdlLmgiCiAjaW5j
bHVkZSAiV2ViS2l0RXh0ZW5zaW9uTWFuYWdlci5oIgogI2luY2x1ZGUgIldlYktpdFVzZXJNZXNz
YWdlLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViRXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSAiV2ViS2l0
V2ViUGFnZVByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHlNZXNzYWdlcy5oIgorI2lu
Y2x1ZGUgPFdlYkNvcmUvSFRNTElucHV0RWxlbWVudC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvSFRN
TFRleHRBcmVhRWxlbWVudC5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKK3VzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogCiB2b2lkIFdlYlBhZ2U6OnNlbmRNZXNzYWdlVG9XZWJFeHRlbnNpb25XaXRo
UmVwbHkoVXNlck1lc3NhZ2UmJiBtZXNzYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFVzZXJN
ZXNzYWdlJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewpAQCAtNTcsMTMgKzYxLDM2IEBAIHZv
aWQgV2ViUGFnZTo6c2VuZE1lc3NhZ2VUb1dlYkV4dGVuc2lvbihVc2VyTWVzc2FnZSYmIG1lc3Nh
Z2UpCiAgICAgc2VuZE1lc3NhZ2VUb1dlYkV4dGVuc2lvbldpdGhSZXBseShXVEZNb3ZlKG1lc3Nh
Z2UpLCBbXShVc2VyTWVzc2FnZSYmKSB7IH0pOwogfQogCi12b2lkIFdlYlBhZ2U6OnNldElucHV0
TWV0aG9kU3RhdGUoYm9vbCBlbmFibGVkKQorc3RhdGljIE9wdGlvbmFsPElucHV0TWV0aG9kU3Rh
dGU+IGlucHV0TWV0aG9kU2F0ZUZvckVsZW1lbnQoRWxlbWVudCogZWxlbWVudCkKIHsKLSAgICBp
ZiAobV9pbnB1dE1ldGhvZEVuYWJsZWQgPT0gZW5hYmxlZCkKKyAgICBpZiAoIWVsZW1lbnQgfHwg
IWVsZW1lbnQtPnNob3VsZFVzZUlucHV0TWV0aG9kKCkpCisgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisKKyAgICBJbnB1dE1ldGhvZFN0YXRlIHN0YXRlOworICAgIGlmIChpczxIVE1MSW5w
dXRFbGVtZW50PigqZWxlbWVudCkpIHsKKyAgICAgICAgYXV0byYgaW5wdXRFbGVtZW50ID0gZG93
bmNhc3Q8SFRNTElucHV0RWxlbWVudD4oKmVsZW1lbnQpOworICAgICAgICBzdGF0ZS5zZXRQdXJw
b3NlRm9ySW5wdXRFbGVtZW50KGlucHV0RWxlbWVudCk7CisgICAgICAgIHN0YXRlLmFkZEhpbnRz
Rm9yQXV0b2NhcGl0YWxpemVUeXBlKGlucHV0RWxlbWVudC5hdXRvY2FwaXRhbGl6ZVR5cGUoKSk7
CisgICAgfSBlbHNlIGlmIChpczxIVE1MVGV4dEFyZWFFbGVtZW50PigqZWxlbWVudCkgfHwgKGVs
ZW1lbnQtPmhhc0VkaXRhYmxlU3R5bGUoKSAmJiBpczxIVE1MRWxlbWVudD4oKmVsZW1lbnQpKSkg
eworICAgICAgICBhdXRvJiBodG1sRWxlbWVudCA9IGRvd25jYXN0PEhUTUxFbGVtZW50PigqZWxl
bWVudCk7CisgICAgICAgIHN0YXRlLnNldFB1cnBvc2VPckhpbnRGb3JJbnB1dE1vZGUoaHRtbEVs
ZW1lbnQuY2Fub25pY2FsSW5wdXRNb2RlKCkpOworICAgICAgICBzdGF0ZS5hZGRIaW50c0ZvckF1
dG9jYXBpdGFsaXplVHlwZShodG1sRWxlbWVudC5hdXRvY2FwaXRhbGl6ZVR5cGUoKSk7CisgICAg
fQorCisgICAgaWYgKGVsZW1lbnQtPmlzU3BlbGxDaGVja2luZ0VuYWJsZWQoKSkKKyAgICAgICAg
c3RhdGUuaGludHMuYWRkKElucHV0TWV0aG9kU3RhdGU6OkhpbnQ6OlNwZWxsY2hlY2spOworCisg
ICAgcmV0dXJuIHN0YXRlOworfQorCit2b2lkIFdlYlBhZ2U6OnNldElucHV0TWV0aG9kU3RhdGUo
RWxlbWVudCogZWxlbWVudCkKK3sKKyAgICBhdXRvIHN0YXRlID0gaW5wdXRNZXRob2RTYXRlRm9y
RWxlbWVudChlbGVtZW50KTsKKyAgICBpZiAobV9pbnB1dE1ldGhvZFN0YXRlID09IHN0YXRlKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBtX2lucHV0TWV0aG9kRW5hYmxlZCA9IGVuYWJsZWQ7Ci0g
ICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTZXRJbnB1dE1ldGhvZFN0YXRlKGVuYWJs
ZWQpKTsKKyAgICBtX2lucHV0TWV0aG9kU3RhdGUgPSBzdGF0ZTsKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OlNldElucHV0TWV0aG9kU3RhdGUoc3RhdGUpKTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggYjgyOTQ0YzEy
ZjcuLmEzNGRiODFiYWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTUgQEAKKzIwMTktMTItMjcgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEu
Y29tPgorCisgICAgICAgIFtHVEtdW1dQRV0gQWRkIEFQSSB0byBzZXQgcHVycG9zZSBhbmQgaGlu
dHMgb2YgYWN0aXZlIGVkaXRhYmxlIGVsZW1lbnQgdG8gaW5wdXQgbWV0aG9kcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1NjA1CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBET00vRE9NSFRNTEVsZW1l
bnQubW06IFVzZSBFTkFCTEUoQVVUT0NPUlJFQ1QpIGFuZCBFTkFCTEUoQVVUT0NBUElUQUxJWkUp
LgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOiBVcGRhdGUgdG9t
IHRoZSBuZXcgQVBJIHRvIFdlYkVkaXRvckNsaWVudDo6c2V0SW5wdXRNZXRob2RTdGF0ZS4KKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW06CisgICAgICAgIChXZWJF
ZGl0b3JDbGllbnQ6OnNldElucHV0TWV0aG9kU3RhdGUpOiBEaXR0by4KKwogMjAxOS0xMi0yMCAg
QnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBj
b252ZXJ0IHNvbWUgSW5zcGVjdG9yRnJvbnRlbmRIb3N0IG1ldGhvZHMgdG8gZ2V0dGVycwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxFbGVtZW50Lm1tIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxFbGVtZW50Lm1tCmluZGV4IGQwMzA4
MmY1NzQ0Li43N2VlZjA1MDAxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
RE9NL0RPTUhUTUxFbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9E
T01IVE1MRWxlbWVudC5tbQpAQCAtMjU2LDcgKzI1Niw3IEBACiAgICAgSU1QTC0+Y2xpY2soKTsK
IH0KIAotI2lmIEVOQUJMRShJT1NfQVVUT0NPUlJFQ1RfQU5EX0FVVE9DQVBJVEFMSVpFKQorI2lm
IEVOQUJMRShBVVRPQ09SUkVDVCkKIAogLSAoQk9PTClhdXRvY29ycmVjdAogewpAQCAtMjcwLDYg
KzI3MCwxMCBAQAogICAgIElNUEwtPnNldEF1dG9jb3JyZWN0KG5ld0F1dG9jb3JyZWN0KTsKIH0K
IAorI2VuZGlmCisKKyNpZiBFTkFCTEUoQVVUT0NBUElUQUxJWkUpCisKIC0gKE5TU3RyaW5nICop
YXV0b2NhcGl0YWxpemUKIHsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3Rh
dGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkVkaXRvckNsaWVudC5oCmluZGV4IDEzOGZmYjg2MWQ1Li5jNjU4YjE5MmM2NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50LmgKQEAgLTE2Niw3ICsxNjYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZ2V0R3Vl
c3Nlc0ZvcldvcmQoY29uc3QgU3RyaW5nJiB3b3JkLCBjb25zdCBTdHJpbmcmIGNvbnRleHQsIGNv
bnN0IFdlYkNvcmU6OlZpc2libGVTZWxlY3Rpb24mIGN1cnJlbnRTZWxlY3Rpb24sIFZlY3RvcjxT
dHJpbmc+JiBndWVzc2VzKSBmaW5hbDsKIAogICAgIHZvaWQgd2lsbFNldElucHV0TWV0aG9kU3Rh
dGUoKSBmaW5hbDsKLSAgICB2b2lkIHNldElucHV0TWV0aG9kU3RhdGUoYm9vbCBlbmFibGVkKSBm
aW5hbDsKKyAgICB2b2lkIHNldElucHV0TWV0aG9kU3RhdGUoV2ViQ29yZTo6RWxlbWVudCopIGZp
bmFsOwogICAgIHZvaWQgcmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoV2ViQ29yZTo6VGV4dENoZWNr
aW5nUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlZpc2libGVTZWxlY3Rpb24mIGN1cnJlbnRTZWxl
Y3Rpb24pIGZpbmFsOwogCiAjaWYgUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCmluZGV4
IDEzYzhkZWY1ZTFhLi4zM2I2ODlkN2IyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQpAQCAtMTA5OCw3
ICsxMDk4LDcgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OndpbGxTZXRJbnB1dE1ldGhvZFN0YXRl
KCkKIHsKIH0KIAotdm9pZCBXZWJFZGl0b3JDbGllbnQ6OnNldElucHV0TWV0aG9kU3RhdGUoYm9v
bCkKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50OjpzZXRJbnB1dE1ldGhvZFN0YXRlKFdlYkNvcmU6OkVs
ZW1lbnQqKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKaW5kZXggNDJiNzU3NmMx
YTYuLjk0NDdmNTM3ZTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTYgQEAKKzIwMTktMTItMjcgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEu
Y29tPgorCisgICAgICAgIFtHVEtdW1dQRV0gQWRkIEFQSSB0byBzZXQgcHVycG9zZSBhbmQgaGlu
dHMgb2YgYWN0aXZlIGVkaXRhYmxlIGVsZW1lbnQgdG8gaW5wdXQgbWV0aG9kcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1NjA1CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIHRvIHRoZSBuZXcg
QVBJIG9mIFdlYkVkaXRvckNsaWVudDo6c2V0SW5wdXRNZXRob2RTdGF0ZS4KKworICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHA6CisgICAgICAgIChXZWJFZGl0b3JD
bGllbnQ6OnNldElucHV0TWV0aG9kU3RhdGUpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dl
YkVkaXRvckNsaWVudC5oOgorCiAyMDE5LTEyLTIxICBCcmlhbiBCdXJnICA8YmJ1cmdAYXBwbGUu
Y29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IGFkZCBJbnNwZWN0ZWRUYXJnZXRUeXBlcyBk
aWFnbm9zdGljIGV2ZW50IGFuZCByZWxhdGVkIGhvb2tzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAppbmRl
eCA4ZjlhMjlkNzc5Yi4uOGRmMWM3MjFiYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcApAQCAtODg3
LDcgKzg4Nyw3IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50Ojp3aWxsU2V0SW5wdXRNZXRob2RTdGF0
ZSgpCiB7CiB9CiAKLXZvaWQgV2ViRWRpdG9yQ2xpZW50OjpzZXRJbnB1dE1ldGhvZFN0YXRlKGJv
b2wgZW5hYmxlZCkKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50OjpzZXRJbnB1dE1ldGhvZFN0YXRlKFdl
YkNvcmU6OkVsZW1lbnQqIGVsZW1lbnQpCiB7Ci0gICAgbV93ZWJWaWV3LT5zZXRJbnB1dE1ldGhv
ZFN0YXRlKGVuYWJsZWQpOworICAgIG1fd2ViVmlldy0+c2V0SW5wdXRNZXRob2RTdGF0ZShlbGVt
ZW50ICYmIGVsZW1lbnQtPnNob3VsZFVzZUlucHV0TWV0aG9kKCkpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQu
aAppbmRleCA1N2VjZjc3MmQ1MS4uNzdmNjQzNmU3YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCkBAIC0x
MTMsNyArMTEzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGdldEd1ZXNzZXNGb3JXb3JkKGNvbnN0
IFdURjo6U3RyaW5nJiB3b3JkLCBjb25zdCBXVEY6OlN0cmluZyYgY29udGV4dCwgY29uc3QgV2Vi
Q29yZTo6VmlzaWJsZVNlbGVjdGlvbiYgY3VycmVudFNlbGVjdGlvbiwgV1RGOjpWZWN0b3I8V1RG
OjpTdHJpbmc+JiBndWVzc2VzKSBmaW5hbDsKIAogICAgIHZvaWQgd2lsbFNldElucHV0TWV0aG9k
U3RhdGUoKSBmaW5hbDsKLSAgICB2b2lkIHNldElucHV0TWV0aG9kU3RhdGUoYm9vbCkgZmluYWw7
CisgICAgdm9pZCBzZXRJbnB1dE1ldGhvZFN0YXRlKFdlYkNvcmU6OkVsZW1lbnQqKSBmaW5hbDsK
ICAgICB2b2lkIHJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFdlYkNvcmU6OlRleHRDaGVja2luZ1Jl
cXVlc3QmLCBjb25zdCBXZWJDb3JlOjpWaXNpYmxlU2VsZWN0aW9uJikgZmluYWwgeyB9CiAgICAg
Ym9vbCBwZXJmb3JtVHdvU3RlcERyb3AoV2ViQ29yZTo6RG9jdW1lbnRGcmFnbWVudCYsIFdlYkNv
cmU6OlJhbmdlJiwgYm9vbCkgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2UgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5j
bWFrZQppbmRleCBhOTFmYzJkMDUwNy4uOGZjYWViNWEzYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9j
bWFrZS9PcHRpb25zR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtl
CkBAIC0xNTAsNiArMTUwLDcgQEAgV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5B
QkxFX1dFQkRSSVZFUiBQVUJMSUMgT04pCiAjIFByaXZhdGUgb3B0aW9ucyBzaGFyZWQgd2l0aCBv
dGhlciBXZWJLaXQgcG9ydHMuIEFkZCBvcHRpb25zIGhlcmUgd2hlbgogIyB3ZSBuZWVkIGEgdmFs
dWUgZGlmZmVyZW50IGZyb20gdGhlIGRlZmF1bHQgZGVmaW5lZCBpbiBXZWJLaXRGZWF0dXJlcy5j
bWFrZS4KICMgQ2hhbmdpbmcgdGhlc2Ugb3B0aW9ucyBpcyBjb21wbGV0ZWx5IHVuc3VwcG9ydGVk
LgorV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0FVVE9DQVBJVEFMSVpF
IFBSSVZBVEUgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfQ09O
VEVOVF9FWFRFTlNJT05TIFBSSVZBVEUgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9W
QUxVRShFTkFCTEVfREFSS19NT0RFX0NTUyBQUklWQVRFIE9OKQogV0VCS0lUX09QVElPTl9ERUZB
VUxUX1BPUlRfVkFMVUUoRU5BQkxFX0RBVEFMSVNUX0VMRU1FTlQgUFJJVkFURSBPTikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9jbWFrZS9PcHRpb25zV1BFLmNtYWtlIGIvU291cmNlL2NtYWtlL09wdGlv
bnNXUEUuY21ha2UKaW5kZXggZDM0OWMyYzM3YzAuLjhmYWY4ODg4YzdlIDEwMDY0NAotLS0gYS9T
b3VyY2UvY21ha2UvT3B0aW9uc1dQRS5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc1dQ
RS5jbWFrZQpAQCAtNDgsNiArNDgsNyBAQCBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxV
RShFTkFCTEVfWFNMVCBQVUJMSUMgT04pCiAjIHdlIG5lZWQgYSB2YWx1ZSBkaWZmZXJlbnQgZnJv
bSB0aGUgZGVmYXVsdCBkZWZpbmVkIGluIFdlYktpdEZlYXR1cmVzLmNtYWtlLgogIyBDaGFuZ2lu
ZyB0aGVzZSBvcHRpb25zIGlzIGNvbXBsZXRlbHkgdW5zdXBwb3J0ZWQuCiBXRUJLSVRfT1BUSU9O
X0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfQVNZTkNfU0NST0xMSU5HIFBSSVZBVEUgT04pCitX
RUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfQVVUT0NBUElUQUxJWkUgUFJJ
VkFURSBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9DT05URU5U
X0VYVEVOU0lPTlMgUFJJVkFURSBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVF
KEVOQUJMRV9NRURJQV9TVFJFQU0gUFJJVkFURSAke0VOQUJMRV9FWFBFUklNRU5UQUxfRkVBVFVS
RVN9KQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX01IVE1MIFBSSVZB
VEUgT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvV2ViS2l0RmVhdHVyZXMuY21ha2UgYi9T
b3VyY2UvY21ha2UvV2ViS2l0RmVhdHVyZXMuY21ha2UKaW5kZXggMzFjYjU4MmY0MDMuLjhiMmUy
NTM4OGRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvV2ViS2l0RmVhdHVyZXMuY21ha2UKKysr
IGIvU291cmNlL2NtYWtlL1dlYktpdEZlYXR1cmVzLmNtYWtlCkBAIC05OSw2ICs5OSw3IEBAIG1h
Y3JvKFdFQktJVF9PUFRJT05fQkVHSU4pCiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxF
X0FQUExJQ0FUSU9OX01BTklGRVNUICJUb2dnbGUgQXBwbGljYXRpb24gTWFuaWZlc3Qgc3VwcG9y
dCIgUFJJVkFURSBPRkYpCiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX0FTWU5DX1ND
Uk9MTElORyAiRW5hYmxlIGFzeW5jaHJvbm91cyBzY3JvbGxpbmciIFBSSVZBVEUgT0ZGKQogICAg
IFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9BVFRBQ0hNRU5UX0VMRU1FTlQgIlRvZ2dsZSBB
dHRhY2htZW50IEVsZW1lbnQgc3VwcG9ydCIgUFJJVkFURSBPRkYpCisgICAgV0VCS0lUX09QVElP
Tl9ERUZJTkUoRU5BQkxFX0FVVE9DQVBJVEFMSVpFICJUb2dnbGUgYXV0b2NhcGl0YWxpemUgc3Vw
cG9ydCIgUFJJVkFURSBPRkYpCiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX0FWRl9D
QVBUSU9OUyAiVG9nZ2xlIEFWRm91bmRhdGlvbiBjYXB0aW9uIHN1cHBvcnQiIFBSSVZBVEUgT0ZG
KQogICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9CVUJCTEVXUkFQX1NBTkRCT1ggIlRv
Z2dsZSBCdWJibGV3cmFwIHNhbmRib3hpbmcgc3VwcG9ydCIgUFJJVkFURSBPRkYpCiAgICAgV0VC
S0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX0NBQ0hFX1BBUlRJVElPTklORyAiVG9nZ2xlIGNhY2hl
IHBhcnRpdGlvbmluZyBzdXBwb3J0IiBQUklWQVRFIE9GRikKZGlmZiAtLWdpdCBhL1Rvb2xzL0No
YW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAyODhkNGIwNWJhZC4uMGY4MDdkZDQ0Y2Ig
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNiBAQAorMjAxOS0xMi0yNyAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGln
YWxpYS5jb20+CisKKyAgICAgICAgW0dUS11bV1BFXSBBZGQgQVBJIHRvIHNldCBwdXJwb3NlIGFu
ZCBoaW50cyBvZiBhY3RpdmUgZWRpdGFibGUgZWxlbWVudCB0byBpbnB1dCBtZXRob2RzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDU2MDUKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgbmV3IHRlc3Qg
Y2FzZSB0byBjaGVjayB0aGUgcHVycG9zZSBhbmQgaGludHMgQVBJLgorCisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RJbnB1dE1ldGhvZENvbnRleHQuY3BwOgor
ICAgICAgICAodGVzdFdlYktpdElucHV0TWV0aG9kQ29udGV4dENvbnRlbnRUeXBlKToKKyAgICAg
ICAgKGJlZm9yZUFsbCk6CisKIDIwMTktMTItMjUgIERlYW4gSmFja3NvbiAgPGRpbm9AYXBwbGUu
Y29tPgogCiAgICAgICAgIFdLVFIvRFJUIGFsd2F5cyB0cmlnZ2VyIHRoZSBEaXNjcmV0ZSBHUFUg
b24gZHVhbCBHUFUgc3lzdGVtcwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRHTGliL1Rlc3RJbnB1dE1ldGhvZENvbnRleHQuY3BwIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RJbnB1dE1ldGhvZENvbnRleHQuY3BwCmluZGV4IDU5
NjFmYWMyMzdhLi41MDg2NjcxMmM2OCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRHTGliL1Rlc3RJbnB1dE1ldGhvZENvbnRleHQuY3BwCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0SW5wdXRNZXRob2RDb250ZXh0LmNwcApA
QCAtMzM4LDYgKzMzOCwyNiBAQCBwdWJsaWM6CiAgICAgICAgIGdfYXNzZXJ0X3RydWUobV9jb250
ZXh0LT5lbmFibGVkKTsKICAgICB9CiAKKyAgICB2b2lkIHVuZm9jdXNFZGl0YWJsZUFuZFdhaXRV
bnRpbElucHV0TWV0aG9kRGlzYWJsZWQoKQorICAgIHsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZSht
X2NvbnRleHQtPmVuYWJsZWQpOworICAgICAgICBydW5KYXZhU2NyaXB0QW5kV2FpdFVudGlsRmlu
aXNoZWQoImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdlZGl0YWJsZScpLmJsdXIoKSIsIG51bGxw
dHIpOworICAgICAgICBpZiAoIW1fY29udGV4dC0+ZW5hYmxlZCkKKyAgICAgICAgICAgIHJldHVy
bjsKKworICAgICAgICBnX2lkbGVfYWRkKFtdKGdwb2ludGVyIHVzZXJEYXRhKSAtPiBnYm9vbGVh
biB7CisgICAgICAgICAgICBhdXRvKiB0ZXN0ID0gc3RhdGljX2Nhc3Q8SW5wdXRNZXRob2RUZXN0
Kj4odXNlckRhdGEpOworICAgICAgICAgICAgaWYgKCF0ZXN0LT5tX2NvbnRleHQtPmVuYWJsZWQp
IHsKKyAgICAgICAgICAgICAgICB0ZXN0LT5xdWl0TWFpbkxvb3AoKTsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gRkFMU0U7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBUUlVF
OworICAgICAgICB9LCB0aGlzKTsKKyAgICAgICAgZ19tYWluX2xvb3BfcnVuKG1fbWFpbkxvb3Ap
OworICAgICAgICBnX2Fzc2VydF9mYWxzZShtX2NvbnRleHQtPmVuYWJsZWQpOworICAgIH0KKwog
ICAgIHZvaWQgcmVzZXRFZGl0YWJsZSgpCiAgICAgewogICAgICAgICBydW5KYXZhU2NyaXB0QW5k
V2FpdFVudGlsRmluaXNoZWQoImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdlZGl0YWJsZScpLnZh
bHVlID0gJyciLCBudWxscHRyKTsKQEAgLTM3Myw2ICszOTMsMTYgQEAgcHVibGljOgogICAgICAg
ICBtX2V2ZW50c0V4cGVjdGVkID0gMDsKICAgICB9CiAKKyAgICBXZWJLaXRJbnB1dFB1cnBvc2Ug
cHVycG9zZSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gd2Via2l0X2lucHV0X21ldGhv
ZF9jb250ZXh0X2dldF9pbnB1dF9wdXJwb3NlKFdFQktJVF9JTlBVVF9NRVRIT0RfQ09OVEVYVCht
X2NvbnRleHQuZ2V0KCkpKTsKKyAgICB9CisKKyAgICBXZWJLaXRJbnB1dEhpbnRzIGhpbnRzKCkg
Y29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiB3ZWJraXRfaW5wdXRfbWV0aG9kX2NvbnRleHRf
Z2V0X2lucHV0X2hpbnRzKFdFQktJVF9JTlBVVF9NRVRIT0RfQ09OVEVYVChtX2NvbnRleHQuZ2V0
KCkpKTsKKyAgICB9CisKICAgICBHUmVmUHRyPFdlYktpdElucHV0TWV0aG9kQ29udGV4dE1vY2s+
IG1fY29udGV4dDsKICAgICBWZWN0b3I8RXZlbnQ+IG1fZXZlbnRzOwogICAgIHVuc2lnbmVkIG1f
ZXZlbnRzRXhwZWN0ZWQgeyAwIH07CkBAIC02OTIsNiArNzIyLDE1OSBAQCBzdGF0aWMgdm9pZCB0
ZXN0V2ViS2l0SW5wdXRNZXRob2RDb250ZXh0UmVzZXQoSW5wdXRNZXRob2RUZXN0KiB0ZXN0LCBn
Y29uc3Rwb2ludAogICAgIHRlc3QtPnJlc2V0RWRpdGFibGUoKTsKIH0KIAorc3RhdGljIHZvaWQg
dGVzdFdlYktpdElucHV0TWV0aG9kQ29udGV4dENvbnRlbnRUeXBlKElucHV0TWV0aG9kVGVzdCog
dGVzdCwgZ2NvbnN0cG9pbnRlcikKK3sKKyAgICB0ZXN0LT5sb2FkSHRtbCgiPGlucHV0IGlkPSdl
ZGl0YWJsZScgc3BlbGxjaGVjaz0nZmFsc2UnPjwvaW5wdXQ+IiwgbnVsbHB0cik7CisgICAgdGVz
dC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CisgICAgdGVzdC0+Zm9jdXNFZGl0YWJsZUFuZFdh
aXRVbnRpbElucHV0TWV0aG9kRW5hYmxlZCgpOworICAgIGdfYXNzZXJ0X2NtcHVpbnQodGVzdC0+
cHVycG9zZSgpLCA9PSwgV0VCS0lUX0lOUFVUX1BVUlBPU0VfRlJFRV9GT1JNKTsKKyAgICBnX2Fz
c2VydF9jbXB1aW50KHRlc3QtPmhpbnRzKCksID09LCBXRUJLSVRfSU5QVVRfSElOVF9OT05FKTsK
KyAgICB0ZXN0LT51bmZvY3VzRWRpdGFibGVBbmRXYWl0VW50aWxJbnB1dE1ldGhvZERpc2FibGVk
KCk7CisKKyAgICB0ZXN0LT5sb2FkSHRtbCgiPGlucHV0IGlkPSdlZGl0YWJsZScgdHlwZT0nbnVt
YmVyJyBzcGVsbGNoZWNrPSdmYWxzZSc+IiwgbnVsbHB0cik7CisgICAgdGVzdC0+d2FpdFVudGls
TG9hZEZpbmlzaGVkKCk7CisgICAgdGVzdC0+Zm9jdXNFZGl0YWJsZUFuZFdhaXRVbnRpbElucHV0
TWV0aG9kRW5hYmxlZCgpOworICAgIGdfYXNzZXJ0X2NtcHVpbnQodGVzdC0+cHVycG9zZSgpLCA9
PSwgV0VCS0lUX0lOUFVUX1BVUlBPU0VfTlVNQkVSKTsKKyAgICBnX2Fzc2VydF9jbXB1aW50KHRl
c3QtPmhpbnRzKCksID09LCBXRUJLSVRfSU5QVVRfSElOVF9OT05FKTsKKyAgICB0ZXN0LT51bmZv
Y3VzRWRpdGFibGVBbmRXYWl0VW50aWxJbnB1dE1ldGhvZERpc2FibGVkKCk7CisKKyAgICB0ZXN0
LT5sb2FkSHRtbCgiPGlucHV0IGlkPSdlZGl0YWJsZScgdHlwZT0nbnVtYmVyJyBzcGVsbGNoZWNr
PSdmYWxzZScgcGF0dGVybj0nWzAtOV0qJz4iLCBudWxscHRyKTsKKyAgICB0ZXN0LT53YWl0VW50
aWxMb2FkRmluaXNoZWQoKTsKKyAgICB0ZXN0LT5mb2N1c0VkaXRhYmxlQW5kV2FpdFVudGlsSW5w
dXRNZXRob2RFbmFibGVkKCk7CisgICAgZ19hc3NlcnRfY21wdWludCh0ZXN0LT5wdXJwb3NlKCks
ID09LCBXRUJLSVRfSU5QVVRfUFVSUE9TRV9ESUdJVFMpOworICAgIGdfYXNzZXJ0X2NtcHVpbnQo
dGVzdC0+aGludHMoKSwgPT0sIFdFQktJVF9JTlBVVF9ISU5UX05PTkUpOworICAgIHRlc3QtPnVu
Zm9jdXNFZGl0YWJsZUFuZFdhaXRVbnRpbElucHV0TWV0aG9kRGlzYWJsZWQoKTsKKworICAgIHRl
c3QtPmxvYWRIdG1sKCI8aW5wdXQgaWQ9J2VkaXRhYmxlJyB0eXBlPSd0ZXh0JyBzcGVsbGNoZWNr
PSdmYWxzZScgcGF0dGVybj0nXFxkKic+IiwgbnVsbHB0cik7CisgICAgdGVzdC0+d2FpdFVudGls
TG9hZEZpbmlzaGVkKCk7CisgICAgdGVzdC0+Zm9jdXNFZGl0YWJsZUFuZFdhaXRVbnRpbElucHV0
TWV0aG9kRW5hYmxlZCgpOworICAgIGdfYXNzZXJ0X2NtcHVpbnQodGVzdC0+cHVycG9zZSgpLCA9
PSwgV0VCS0lUX0lOUFVUX1BVUlBPU0VfRElHSVRTKTsKKyAgICBnX2Fzc2VydF9jbXB1aW50KHRl
c3QtPmhpbnRzKCksID09LCBXRUJLSVRfSU5QVVRfSElOVF9OT05FKTsKKyAgICB0ZXN0LT51bmZv
Y3VzRWRpdGFibGVBbmRXYWl0VW50aWxJbnB1dE1ldGhvZERpc2FibGVkKCk7CisKKyAgICB0ZXN0
LT5sb2FkSHRtbCgiPGlucHV0IGlkPSdlZGl0YWJsZScgdHlwZT0ndGVsJyBzcGVsbGNoZWNrPSdm
YWxzZSc+IiwgbnVsbHB0cik7CisgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7Cisg
ICAgdGVzdC0+Zm9jdXNFZGl0YWJsZUFuZFdhaXRVbnRpbElucHV0TWV0aG9kRW5hYmxlZCgpOwor
ICAgIGdfYXNzZXJ0X2NtcHVpbnQodGVzdC0+cHVycG9zZSgpLCA9PSwgV0VCS0lUX0lOUFVUX1BV
UlBPU0VfUEhPTkUpOworICAgIGdfYXNzZXJ0X2NtcHVpbnQodGVzdC0+aGludHMoKSwgPT0sIFdF
QktJVF9JTlBVVF9ISU5UX05PTkUpOworICAgIHRlc3QtPnVuZm9jdXNFZGl0YWJsZUFuZFdhaXRV
bnRpbElucHV0TWV0aG9kRGlzYWJsZWQoKTsKKworICAgIHRlc3QtPmxvYWRIdG1sKCI8aW5wdXQg
aWQ9J2VkaXRhYmxlJyB0eXBlPSd1cmwnIHNwZWxsY2hlY2s9J2ZhbHNlJz4iLCBudWxscHRyKTsK
KyAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKKyAgICB0ZXN0LT5mb2N1c0VkaXRh
YmxlQW5kV2FpdFVudGlsSW5wdXRNZXRob2RFbmFibGVkKCk7CisgICAgZ19hc3NlcnRfY21wdWlu
dCh0ZXN0LT5wdXJwb3NlKCksID09LCBXRUJLSVRfSU5QVVRfUFVSUE9TRV9VUkwpOworICAgIGdf
YXNzZXJ0X2NtcHVpbnQodGVzdC0+aGludHMoKSwgPT0sIFdFQktJVF9JTlBVVF9ISU5UX05PTkUp
OworICAgIHRlc3QtPnVuZm9jdXNFZGl0YWJsZUFuZFdhaXRVbnRpbElucHV0TWV0aG9kRGlzYWJs
ZWQoKTsKKworICAgIHRlc3QtPmxvYWRIdG1sKCI8aW5wdXQgaWQ9J2VkaXRhYmxlJyB0eXBlPSdl
bWFpbCcgc3BlbGxjaGVjaz0nZmFsc2UnPiIsIG51bGxwdHIpOworICAgIHRlc3QtPndhaXRVbnRp
bExvYWRGaW5pc2hlZCgpOworICAgIHRlc3QtPmZvY3VzRWRpdGFibGVBbmRXYWl0VW50aWxJbnB1
dE1ldGhvZEVuYWJsZWQoKTsKKyAgICBnX2Fzc2VydF9jbXB1aW50KHRlc3QtPnB1cnBvc2UoKSwg
PT0sIFdFQktJVF9JTlBVVF9QVVJQT1NFX0VNQUlMKTsKKyAgICBnX2Fzc2VydF9jbXB1aW50KHRl
c3QtPmhpbnRzKCksID09LCBXRUJLSVRfSU5QVVRfSElOVF9OT05FKTsKKyAgICB0ZXN0LT51bmZv
Y3VzRWRpdGFibGVBbmRXYWl0VW50aWxJbnB1dE1ldGhvZERpc2FibGVkKCk7CisKKyNpZiAwCisg
ICAgLy8gRklYTUU6IFdlIHNob3VsZCBlbmFibGUgaW5wdXQgbWV0aG9kcyBpbiBwYXNzd29yZCBm
aWVsZHMgdG9vLgorICAgIHRlc3QtPmxvYWRIdG1sKCI8aW5wdXQgaWQ9J2VkaXRhYmxlJyB0eXBl
PSdwYXNzd29yZCc+IiwgbnVsbHB0cik7CisgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVk
KCk7CisgICAgdGVzdC0+Zm9jdXNFZGl0YWJsZUFuZFdhaXRVbnRpbElucHV0TWV0aG9kRW5hYmxl
ZCgpOworICAgIGdfYXNzZXJ0X2NtcHVpbnQodGVzdC0+cHVycG9zZSgpLCA9PSwgV0VCS0lUX0lO
UFVUX1BVUlBPU0VfUEFTU1dPUkQpOworICAgIGdfYXNzZXJ0X2NtcHVpbnQodGVzdC0+aGludHMo
KSwgPT0sIFdFQktJVF9JTlBVVF9ISU5UX05PTkUpOworICAgIHRlc3QtPnVuZm9jdXNFZGl0YWJs
ZUFuZFdhaXRVbnRpbElucHV0TWV0aG9kRGlzYWJsZWQoKTsKKyNlbmRpZgorCisgICAgdGVzdC0+
bG9hZEh0bWwoIjxkaXYgY29udGVudGVkaXRhYmxlIGlkPSdlZGl0YWJsZScgaW5wdXRtb2RlPSd0
ZXh0JyBzcGVsbGNoZWNrPSdmYWxzZSc+PC9kaXY+IiwgbnVsbHB0cik7CisgICAgdGVzdC0+d2Fp
dFVudGlsTG9hZEZpbmlzaGVkKCk7CisgICAgdGVzdC0+Zm9jdXNFZGl0YWJsZUFuZFdhaXRVbnRp
bElucHV0TWV0aG9kRW5hYmxlZCgpOworICAgIGdfYXNzZXJ0X2NtcHVpbnQodGVzdC0+cHVycG9z
ZSgpLCA9PSwgV0VCS0lUX0lOUFVUX1BVUlBPU0VfRlJFRV9GT1JNKTsKKyAgICBnX2Fzc2VydF9j
bXB1aW50KHRlc3QtPmhpbnRzKCksID09LCBXRUJLSVRfSU5QVVRfSElOVF9OT05FKTsKKyAgICB0
ZXN0LT51bmZvY3VzRWRpdGFibGVBbmRXYWl0VW50aWxJbnB1dE1ldGhvZERpc2FibGVkKCk7CisK
KyAgICB0ZXN0LT5sb2FkSHRtbCgiPGRpdiBjb250ZW50ZWRpdGFibGUgaWQ9J2VkaXRhYmxlJyBp
bnB1dG1vZGU9J2RlY2ltYWwnIHNwZWxsY2hlY2s9J2ZhbHNlJz48L2Rpdj4iLCBudWxscHRyKTsK
KyAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKKyAgICB0ZXN0LT5mb2N1c0VkaXRh
YmxlQW5kV2FpdFVudGlsSW5wdXRNZXRob2RFbmFibGVkKCk7CisgICAgZ19hc3NlcnRfY21wdWlu
dCh0ZXN0LT5wdXJwb3NlKCksID09LCBXRUJLSVRfSU5QVVRfUFVSUE9TRV9OVU1CRVIpOworICAg
IGdfYXNzZXJ0X2NtcHVpbnQodGVzdC0+aGludHMoKSwgPT0sIFdFQktJVF9JTlBVVF9ISU5UX05P
TkUpOworICAgIHRlc3QtPnVuZm9jdXNFZGl0YWJsZUFuZFdhaXRVbnRpbElucHV0TWV0aG9kRGlz
YWJsZWQoKTsKKworICAgIHRlc3QtPmxvYWRIdG1sKCI8ZGl2IGNvbnRlbnRlZGl0YWJsZSBpZD0n
ZWRpdGFibGUnIGlucHV0bW9kZT0nbnVtZXJpYycgc3BlbGxjaGVjaz0nZmFsc2UnPjwvZGl2PiIs
IG51bGxwdHIpOworICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOworICAgIHRlc3Qt
PmZvY3VzRWRpdGFibGVBbmRXYWl0VW50aWxJbnB1dE1ldGhvZEVuYWJsZWQoKTsKKyAgICBnX2Fz
c2VydF9jbXB1aW50KHRlc3QtPnB1cnBvc2UoKSwgPT0sIFdFQktJVF9JTlBVVF9QVVJQT1NFX0RJ
R0lUUyk7CisgICAgZ19hc3NlcnRfY21wdWludCh0ZXN0LT5oaW50cygpLCA9PSwgV0VCS0lUX0lO
UFVUX0hJTlRfTk9ORSk7CisgICAgdGVzdC0+dW5mb2N1c0VkaXRhYmxlQW5kV2FpdFVudGlsSW5w
dXRNZXRob2REaXNhYmxlZCgpOworCisgICAgdGVzdC0+bG9hZEh0bWwoIjxkaXYgY29udGVudGVk
aXRhYmxlIGlkPSdlZGl0YWJsZScgaW5wdXRtb2RlPSd0ZWwnIHNwZWxsY2hlY2s9J2ZhbHNlJz48
L2Rpdj4iLCBudWxscHRyKTsKKyAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKKyAg
ICB0ZXN0LT5mb2N1c0VkaXRhYmxlQW5kV2FpdFVudGlsSW5wdXRNZXRob2RFbmFibGVkKCk7Cisg
ICAgZ19hc3NlcnRfY21wdWludCh0ZXN0LT5wdXJwb3NlKCksID09LCBXRUJLSVRfSU5QVVRfUFVS
UE9TRV9QSE9ORSk7CisgICAgZ19hc3NlcnRfY21wdWludCh0ZXN0LT5oaW50cygpLCA9PSwgV0VC
S0lUX0lOUFVUX0hJTlRfTk9ORSk7CisgICAgdGVzdC0+dW5mb2N1c0VkaXRhYmxlQW5kV2FpdFVu
dGlsSW5wdXRNZXRob2REaXNhYmxlZCgpOworCisgICAgdGVzdC0+bG9hZEh0bWwoIjxkaXYgY29u
dGVudGVkaXRhYmxlIGlkPSdlZGl0YWJsZScgaW5wdXRtb2RlPSdlbWFpbCcgc3BlbGxjaGVjaz0n
ZmFsc2UnPjwvZGl2PiIsIG51bGxwdHIpOworICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hl
ZCgpOworICAgIHRlc3QtPmZvY3VzRWRpdGFibGVBbmRXYWl0VW50aWxJbnB1dE1ldGhvZEVuYWJs
ZWQoKTsKKyAgICBnX2Fzc2VydF9jbXB1aW50KHRlc3QtPnB1cnBvc2UoKSwgPT0sIFdFQktJVF9J
TlBVVF9QVVJQT1NFX0VNQUlMKTsKKyAgICBnX2Fzc2VydF9jbXB1aW50KHRlc3QtPmhpbnRzKCks
ID09LCBXRUJLSVRfSU5QVVRfSElOVF9OT05FKTsKKyAgICB0ZXN0LT51bmZvY3VzRWRpdGFibGVB
bmRXYWl0VW50aWxJbnB1dE1ldGhvZERpc2FibGVkKCk7CisKKyAgICB0ZXN0LT5sb2FkSHRtbCgi
PGRpdiBjb250ZW50ZWRpdGFibGUgaWQ9J2VkaXRhYmxlJyBpbnB1dG1vZGU9J3VybCcgc3BlbGxj
aGVjaz0nZmFsc2UnPjwvZGl2PiIsIG51bGxwdHIpOworICAgIHRlc3QtPndhaXRVbnRpbExvYWRG
aW5pc2hlZCgpOworICAgIHRlc3QtPmZvY3VzRWRpdGFibGVBbmRXYWl0VW50aWxJbnB1dE1ldGhv
ZEVuYWJsZWQoKTsKKyAgICBnX2Fzc2VydF9jbXB1aW50KHRlc3QtPnB1cnBvc2UoKSwgPT0sIFdF
QktJVF9JTlBVVF9QVVJQT1NFX1VSTCk7CisgICAgZ19hc3NlcnRfY21wdWludCh0ZXN0LT5oaW50
cygpLCA9PSwgV0VCS0lUX0lOUFVUX0hJTlRfTk9ORSk7CisgICAgdGVzdC0+dW5mb2N1c0VkaXRh
YmxlQW5kV2FpdFVudGlsSW5wdXRNZXRob2REaXNhYmxlZCgpOworCisgICAgdGVzdC0+bG9hZEh0
bWwoIjxkaXYgY29udGVudGVkaXRhYmxlIGlkPSdlZGl0YWJsZScgaW5wdXRtb2RlPSdzZWFyY2gn
IHNwZWxsY2hlY2s9J2ZhbHNlJz48L2Rpdj4iLCBudWxscHRyKTsKKyAgICB0ZXN0LT53YWl0VW50
aWxMb2FkRmluaXNoZWQoKTsKKyAgICB0ZXN0LT5mb2N1c0VkaXRhYmxlQW5kV2FpdFVudGlsSW5w
dXRNZXRob2RFbmFibGVkKCk7CisgICAgZ19hc3NlcnRfY21wdWludCh0ZXN0LT5wdXJwb3NlKCks
ID09LCBXRUJLSVRfSU5QVVRfUFVSUE9TRV9GUkVFX0ZPUk0pOworICAgIGdfYXNzZXJ0X2NtcHVp
bnQodGVzdC0+aGludHMoKSwgPT0sIFdFQktJVF9JTlBVVF9ISU5UX05PTkUpOworICAgIHRlc3Qt
PnVuZm9jdXNFZGl0YWJsZUFuZFdhaXRVbnRpbElucHV0TWV0aG9kRGlzYWJsZWQoKTsKKworICAg
IHRlc3QtPmxvYWRIdG1sKCI8ZGl2IGNvbnRlbnRlZGl0YWJsZSBpZD0nZWRpdGFibGUnIGlucHV0
bW9kZT0nbm9uZScgc3BlbGxjaGVjaz0nZmFsc2UnPjwvZGl2PiIsIG51bGxwdHIpOworICAgIHRl
c3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOworICAgIHRlc3QtPmZvY3VzRWRpdGFibGVBbmRX
YWl0VW50aWxJbnB1dE1ldGhvZEVuYWJsZWQoKTsKKyAgICBnX2Fzc2VydF9jbXB1aW50KHRlc3Qt
PnB1cnBvc2UoKSwgPT0sIFdFQktJVF9JTlBVVF9QVVJQT1NFX0ZSRUVfRk9STSk7CisgICAgZ19h
c3NlcnRfY21wdWludCh0ZXN0LT5oaW50cygpLCA9PSwgV0VCS0lUX0lOUFVUX0hJTlRfSU5ISUJJ
VF9PU0spOworICAgIHRlc3QtPnVuZm9jdXNFZGl0YWJsZUFuZFdhaXRVbnRpbElucHV0TWV0aG9k
RGlzYWJsZWQoKTsKKworICAgIHRlc3QtPmxvYWRIdG1sKCI8dGV4dGFyZWEgaWQ9J2VkaXRhYmxl
Jz48L3RleHRhcmVhPiIsIG51bGxwdHIpOworICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hl
ZCgpOworICAgIHRlc3QtPmZvY3VzRWRpdGFibGVBbmRXYWl0VW50aWxJbnB1dE1ldGhvZEVuYWJs
ZWQoKTsKKyAgICBnX2Fzc2VydF9jbXB1aW50KHRlc3QtPnB1cnBvc2UoKSwgPT0sIFdFQktJVF9J
TlBVVF9QVVJQT1NFX0ZSRUVfRk9STSk7CisgICAgZ19hc3NlcnRfY21wdWludCh0ZXN0LT5oaW50
cygpLCA9PSwgV0VCS0lUX0lOUFVUX0hJTlRfU1BFTExDSEVDSyk7CisgICAgdGVzdC0+dW5mb2N1
c0VkaXRhYmxlQW5kV2FpdFVudGlsSW5wdXRNZXRob2REaXNhYmxlZCgpOworCisgICAgdGVzdC0+
bG9hZEh0bWwoIjx0ZXh0YXJlYSBpZD0nZWRpdGFibGUnIGF1dG9jYXBpdGFsaXplPSdub25lJz48
L3RleHRhcmVhPiIsIG51bGxwdHIpOworICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgp
OworICAgIHRlc3QtPmZvY3VzRWRpdGFibGVBbmRXYWl0VW50aWxJbnB1dE1ldGhvZEVuYWJsZWQo
KTsKKyAgICBnX2Fzc2VydF9jbXB1aW50KHRlc3QtPnB1cnBvc2UoKSwgPT0sIFdFQktJVF9JTlBV
VF9QVVJQT1NFX0ZSRUVfRk9STSk7CisgICAgZ19hc3NlcnRfY21wdWludCh0ZXN0LT5oaW50cygp
LCA9PSwgV0VCS0lUX0lOUFVUX0hJTlRfU1BFTExDSEVDSyB8IFdFQktJVF9JTlBVVF9ISU5UX0xP
V0VSQ0FTRSk7CisgICAgdGVzdC0+dW5mb2N1c0VkaXRhYmxlQW5kV2FpdFVudGlsSW5wdXRNZXRo
b2REaXNhYmxlZCgpOworCisgICAgdGVzdC0+bG9hZEh0bWwoIjx0ZXh0YXJlYSBpZD0nZWRpdGFi
bGUnIGF1dG9jYXBpdGFsaXplPSdzZW50ZW5jZXMnPjwvdGV4dGFyZWE+IiwgbnVsbHB0cik7Cisg
ICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CisgICAgdGVzdC0+Zm9jdXNFZGl0YWJs
ZUFuZFdhaXRVbnRpbElucHV0TWV0aG9kRW5hYmxlZCgpOworICAgIGdfYXNzZXJ0X2NtcHVpbnQo
dGVzdC0+cHVycG9zZSgpLCA9PSwgV0VCS0lUX0lOUFVUX1BVUlBPU0VfRlJFRV9GT1JNKTsKKyAg
ICBnX2Fzc2VydF9jbXB1aW50KHRlc3QtPmhpbnRzKCksID09LCBXRUJLSVRfSU5QVVRfSElOVF9T
UEVMTENIRUNLIHwgV0VCS0lUX0lOUFVUX0hJTlRfVVBQRVJDQVNFX1NFTlRFTkNFUyk7CisgICAg
dGVzdC0+dW5mb2N1c0VkaXRhYmxlQW5kV2FpdFVudGlsSW5wdXRNZXRob2REaXNhYmxlZCgpOwor
CisgICAgdGVzdC0+bG9hZEh0bWwoIjx0ZXh0YXJlYSBpZD0nZWRpdGFibGUnIGF1dG9jYXBpdGFs
aXplPSd3b3Jkcyc+PC90ZXh0YXJlYT4iLCBudWxscHRyKTsKKyAgICB0ZXN0LT53YWl0VW50aWxM
b2FkRmluaXNoZWQoKTsKKyAgICB0ZXN0LT5mb2N1c0VkaXRhYmxlQW5kV2FpdFVudGlsSW5wdXRN
ZXRob2RFbmFibGVkKCk7CisgICAgZ19hc3NlcnRfY21wdWludCh0ZXN0LT5wdXJwb3NlKCksID09
LCBXRUJLSVRfSU5QVVRfUFVSUE9TRV9GUkVFX0ZPUk0pOworICAgIGdfYXNzZXJ0X2NtcHVpbnQo
dGVzdC0+aGludHMoKSwgPT0sIFdFQktJVF9JTlBVVF9ISU5UX1NQRUxMQ0hFQ0sgfCBXRUJLSVRf
SU5QVVRfSElOVF9VUFBFUkNBU0VfV09SRFMpOworICAgIHRlc3QtPnVuZm9jdXNFZGl0YWJsZUFu
ZFdhaXRVbnRpbElucHV0TWV0aG9kRGlzYWJsZWQoKTsKKworICAgIHRlc3QtPmxvYWRIdG1sKCI8
dGV4dGFyZWEgaWQ9J2VkaXRhYmxlJyBhdXRvY2FwaXRhbGl6ZT0nY2hhcmFjdGVycyc+PC90ZXh0
YXJlYT4iLCBudWxscHRyKTsKKyAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKKyAg
ICB0ZXN0LT5mb2N1c0VkaXRhYmxlQW5kV2FpdFVudGlsSW5wdXRNZXRob2RFbmFibGVkKCk7Cisg
ICAgZ19hc3NlcnRfY21wdWludCh0ZXN0LT5wdXJwb3NlKCksID09LCBXRUJLSVRfSU5QVVRfUFVS
UE9TRV9GUkVFX0ZPUk0pOworICAgIGdfYXNzZXJ0X2NtcHVpbnQodGVzdC0+aGludHMoKSwgPT0s
IFdFQktJVF9JTlBVVF9ISU5UX1NQRUxMQ0hFQ0sgfCBXRUJLSVRfSU5QVVRfSElOVF9VUFBFUkNB
U0VfQ0hBUlMpOworICAgIHRlc3QtPnVuZm9jdXNFZGl0YWJsZUFuZFdhaXRVbnRpbElucHV0TWV0
aG9kRGlzYWJsZWQoKTsKK30KKwogdm9pZCBiZWZvcmVBbGwoKQogewogICAgIElucHV0TWV0aG9k
VGVzdDo6YWRkKCJXZWJLaXRJbnB1dE1ldGhvZENvbnRleHQiLCAic2ltcGxlIiwgdGVzdFdlYktp
dElucHV0TWV0aG9kQ29udGV4dFNpbXBsZSk7CkBAIC02OTksNiArODgyLDcgQEAgdm9pZCBiZWZv
cmVBbGwoKQogICAgIElucHV0TWV0aG9kVGVzdDo6YWRkKCJXZWJLaXRJbnB1dE1ldGhvZENvbnRl
eHQiLCAiaW52YWxpZC1zZXF1ZW5jZSIsIHRlc3RXZWJLaXRJbnB1dE1ldGhvZENvbnRleHRJbnZh
bGlkU2VxdWVuY2UpOwogICAgIElucHV0TWV0aG9kVGVzdDo6YWRkKCJXZWJLaXRJbnB1dE1ldGhv
ZENvbnRleHQiLCAiY2FuY2VsLXNlcXVlbmNlIiwgdGVzdFdlYktpdElucHV0TWV0aG9kQ29udGV4
dENhbmNlbFNlcXVlbmNlKTsKICAgICBJbnB1dE1ldGhvZFRlc3Q6OmFkZCgiV2ViS2l0SW5wdXRN
ZXRob2RDb250ZXh0IiwgInJlc2V0IiwgdGVzdFdlYktpdElucHV0TWV0aG9kQ29udGV4dFJlc2V0
KTsKKyAgICBJbnB1dE1ldGhvZFRlc3Q6OmFkZCgiV2ViS2l0SW5wdXRNZXRob2RDb250ZXh0Iiwg
ImNvbnRlbnQtdHlwZSIsIHRlc3RXZWJLaXRJbnB1dE1ldGhvZENvbnRleHRDb250ZW50VHlwZSk7
CiB9CiAKIHZvaWQgYWZ0ZXJBbGwoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>386441</attachid>
            <date>2019-12-27 06:39:48 -0800</date>
            <delta_ts>2019-12-27 07:22:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-ime-content-type.diff</filename>
            <type>text/plain</type>
            <size>86206</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCBkOTEzZTE4MDM1My4uNjhl
YTdiMGQ4OGMgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNiBAQAorMjAxOS0xMi0yNyAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxp
YS5jb20+CisKKyAgICAgICAgW0dUS11bV1BFXSBBZGQgQVBJIHRvIHNldCBwdXJwb3NlIGFuZCBo
aW50cyBvZiBhY3RpdmUgZWRpdGFibGUgZWxlbWVudCB0byBpbnB1dCBtZXRob2RzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDU2MDUKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgRU5BQkxFX0FVVE9D
QVBJVEFMSVpFIGJ1aWxkIGZsYWcuIEl0J3MgcHJpdmF0ZSBhbmQgZGlzYWJsZWQgYnkgZGVmYXVs
dCwgZW5hYmxlZCBpbiBHVEsgYW5kIFdQRSBwb3J0cy4KKworICAgICAgICAqIFNvdXJjZS9jbWFr
ZS9PcHRpb25zR1RLLmNtYWtlOgorICAgICAgICAqIFNvdXJjZS9jbWFrZS9PcHRpb25zV1BFLmNt
YWtlOgorICAgICAgICAqIFNvdXJjZS9jbWFrZS9XZWJLaXRGZWF0dXJlcy5jbWFrZToKKwogMjAx
OS0xMi0xOCAgRGllZ28gUGlubyBHYXJjaWEgIDxkcGlub0BpZ2FsaWEuY29tPgogCiAgICAgICAg
IFtHVEtdW1dQRV0gUmVuZGVyaXphdGlvbiBvZiBDb25pYyBncmFkaWVudHMKZGlmZiAtLWdpdCBh
L1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nIGIvUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cK
aW5kZXggMmNlYWZlZDZkY2UuLmFlZTI5NjcwNmYzIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRl
c3RzL0NoYW5nZUxvZworKysgYi9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE0IEBACisyMDE5LTEyLTI3ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlh
LmNvbT4KKworICAgICAgICBbR1RLXVtXUEVdIEFkZCBBUEkgdG8gc2V0IHB1cnBvc2UgYW5kIGhp
bnRzIG9mIGFjdGl2ZSBlZGl0YWJsZSBlbGVtZW50IHRvIGlucHV0IG1ldGhvZHMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTYwNQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNwbGl0IEVOQUJMRV9JT1Nf
QVVUT0NPUlJFQ1RfQU5EX0FVVE9DQVBJVEFMSVpFIGFuZCByZW1vdmUgdGhlIElPUyBwcmVmaXgu
CisKKyAgICAgICAgKiBTdGl0Y2hNYXJrZXIvd3RmL0ZlYXR1cmVEZWZpbmVzLmg6CisKIDIwMTkt
MTItMTYgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBT
dHlsZUJlbmNoIHN1YnRlc3QgZm9yIGR5bmFtaWMgbWVkaWEgcXVlcnkgcGVyZm9ybWFuY2UKZGlm
ZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3RpdGNoTWFya2VyL3d0Zi9GZWF0dXJlRGVmaW5l
cy5oIGIvUGVyZm9ybWFuY2VUZXN0cy9TdGl0Y2hNYXJrZXIvd3RmL0ZlYXR1cmVEZWZpbmVzLmgK
aW5kZXggYWQ0YjkxZWU4MjQuLjkyMDk5OTdmZWQyIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRl
c3RzL1N0aXRjaE1hcmtlci93dGYvRmVhdHVyZURlZmluZXMuaAorKysgYi9QZXJmb3JtYW5jZVRl
c3RzL1N0aXRjaE1hcmtlci93dGYvRmVhdHVyZURlZmluZXMuaApAQCAtODYsOCArODYsMTIgQEAK
ICNkZWZpbmUgRU5BQkxFX0xFVFRFUlBSRVNTIDEKICNlbmRpZgogCi0jaWYgIWRlZmluZWQoRU5B
QkxFX0lPU19BVVRPQ09SUkVDVF9BTkRfQVVUT0NBUElUQUxJWkUpCi0jZGVmaW5lIEVOQUJMRV9J
T1NfQVVUT0NPUlJFQ1RfQU5EX0FVVE9DQVBJVEFMSVpFIDEKKyNpZiAhZGVmaW5lZChFTkFCTEVf
QVVUT0NPUlJFQ1QpCisjZGVmaW5lIEVOQUJMRV9BVVRPQ09SUkVDVCAxCisjZW5kaWYKKworI2lm
ICFkZWZpbmVkKEVOQUJMRV9BVVRPQ0FQSVRBTElaRSkKKyNkZWZpbmUgRU5BQkxFX0FVVE9DQVBJ
VEFMSVpFIDEKICNlbmRpZgogCiAjaWYgIWRlZmluZWQoRU5BQkxFX0lPU19HRVNUVVJFX0VWRU5U
UykgJiYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggNGJmZGYwNWU4NDIuLjJkMmUyNWJj
NGVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE5LTEyLTI3ICBDYXJsb3MgR2FyY2lhIENhbXBv
cyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXVtXUEVdIEFkZCBBUEkgdG8g
c2V0IHB1cnBvc2UgYW5kIGhpbnRzIG9mIGFjdGl2ZSBlZGl0YWJsZSBlbGVtZW50IHRvIGlucHV0
IG1ldGhvZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIwNTYwNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFNwbGl0IEVOQUJMRV9JT1NfQVVUT0NPUlJFQ1RfQU5EX0FVVE9DQVBJVEFMSVpFIGFuZCByZW1v
dmUgdGhlIElPUyBwcmVmaXguCisKKyAgICAgICAgKiB3dGYvRmVhdHVyZURlZmluZXMuaDoKKwog
MjAxOS0xMi0yNCAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbTWVkaWEgaW4gR1BVIHByb2Nlc3NdIEVuYWJsZSBtZWRpYSBwbGF5ZXIgcHJveHkgbG9n
Z2luZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRmVhdHVyZURlZmluZXMuaCBiL1NvdXJj
ZS9XVEYvd3RmL0ZlYXR1cmVEZWZpbmVzLmgKaW5kZXggNjgyYTFlODk1YTIuLmIyN2ZkYTQ1MzU1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9GZWF0dXJlRGVmaW5lcy5oCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL0ZlYXR1cmVEZWZpbmVzLmgKQEAgLTEwNyw4ICsxMDcsMTIgQEAKICNkZWZpbmUg
RU5BQkxFX0xFVFRFUlBSRVNTIDEKICNlbmRpZgogCi0jaWYgIWRlZmluZWQoRU5BQkxFX0lPU19B
VVRPQ09SUkVDVF9BTkRfQVVUT0NBUElUQUxJWkUpCi0jZGVmaW5lIEVOQUJMRV9JT1NfQVVUT0NP
UlJFQ1RfQU5EX0FVVE9DQVBJVEFMSVpFIDEKKyNpZiAhZGVmaW5lZChFTkFCTEVfQVVUT0NPUlJF
Q1QpCisjZGVmaW5lIEVOQUJMRV9BVVRPQ09SUkVDVCAxCisjZW5kaWYKKworI2lmICFkZWZpbmVk
KEVOQUJMRV9BVVRPQ0FQSVRBTElaRSkKKyNkZWZpbmUgRU5BQkxFX0FVVE9DQVBJVEFMSVpFIDEK
ICNlbmRpZgogCiAjaWYgIWRlZmluZWQoRU5BQkxFX0lPU19HRVNUVVJFX0VWRU5UUykgJiYgVVNF
KEFQUExFX0lOVEVSTkFMX1NESykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBlNjczOGM2M2U4OC4uNzVmNjY3NzZm
ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAxOS0xMi0yNyAgQ2FybG9zIEdhcmNp
YSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS11bV1BFXSBBZGQg
QVBJIHRvIHNldCBwdXJwb3NlIGFuZCBoaW50cyBvZiBhY3RpdmUgZWRpdGFibGUgZWxlbWVudCB0
byBpbnB1dCBtZXRob2RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDU2MDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBVc2UgRU5BQkxFKEFVVE9DQVBJVEFMSVpFKSBhbmQgRU5BQkxFKEFVVE9DT1JSRUNU
KSBpbnN0ZWFkIG9mIEVOQUJMRShJT1NfQVVUT0NPUlJFQ1RfQU5EX0FVVE9DQVBJVEFMSVpFKS4K
KworICAgICAgICAqIFNvdXJjZXMudHh0OiBBZGQgQXV0b2NhcGl0YWxpemUuY3BwIHRvIHRoZSBi
dWlsZC4KKyAgICAgICAgKiBodG1sL0F1dG9jYXBpdGFsaXplLmNwcDogQWRkIEVOQUJMRShBVVRP
Q0FQSVRBTElaRSkgZ3VhcmRzLgorICAgICAgICAqIGh0bWwvQXV0b2NhcGl0YWxpemUuaDogRGl0
dG8uCisgICAgICAgICogaHRtbC9IVE1MRWxlbWVudC5jcHA6CisgICAgICAgICogaHRtbC9IVE1M
RWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTEVsZW1lbnQuaWRsOgorICAgICAgICAqIGh0
bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHA6CisgICAgICAgICogaHRtbC9IVE1MRm9ybUNv
bnRyb2xFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwOgorICAg
ICAgICAqIGh0bWwvSFRNTEZvcm1FbGVtZW50Lmg6CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xp
ZW50cy5jcHA6IFVwZGF0ZSB0byBuZXcgQVBJIG9mIEVkaXRvckNsaWVudDo6c2V0SW5wdXRNZXRo
b2RTdGF0ZQorICAgICAgICAqIHBhZ2UvRWRpdG9yQ2xpZW50Lmg6IFRoZSBmb2N1c2VkIGVsZW1l
bnQgb3IgbnVsbHB0ciBpcyBub3cgcmVjZWl2ZWQgYnkgc2V0SW5wdXRNZXRob2RTdGF0ZSgpIGlu
c3RlYWQgb2YgZW5hYmxlZC9kaXNhYmxlZCBib29sZWFuLgorICAgICAgICAqIHBhZ2UvRm9jdXND
b250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvY3VzQ29udHJvbGxlcjo6c2V0Rm9j
dXNlZEVsZW1lbnQpOiBQYXNzIHRoZSBmb2N1c2VkIGVsZW1lbnQgb3IgbnVsbHB0ciB0byBzZXRJ
bnB1dE1ldGhvZFN0YXRlKCkuCisKIDIwMTktMTItMjUgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFw
cGxlLmNvbT4KIAogICAgICAgICBSdW4gd2l0aCBvZmZzZXQgZnJvbSB0aGUgY29udGVudCBib3gn
cyBsb2dpY2FsIGxlZnQgcGFpbnQgaXRzIHRhYiBzdG9wIGF0IHdyb25nIHBvc2l0aW9uLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzLnR4dAppbmRleCBjOTY4MTg5YzhhOC4uM2QxY2M4MmE4ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBA
IC0xMDk0LDYgKzEwOTQsNyBAQCBoaXN0b3J5L0NhY2hlZEZyYW1lLmNwcAogaGlzdG9yeS9DYWNo
ZWRQYWdlLmNwcAogaGlzdG9yeS9IaXN0b3J5SXRlbS5jcHAKIAoraHRtbC9BdXRvY2FwaXRhbGl6
ZS5jcHAKIGh0bWwvQXV0b2ZpbGwuY3BwCiBodG1sL0Jhc2VCdXR0b25JbnB1dFR5cGUuY3BwCiBo
dG1sL0Jhc2VDaGVja2FibGVJbnB1dFR5cGUuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0F1dG9jYXBpdGFsaXplLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQXV0b2NhcGl0
YWxpemUuY3BwCmluZGV4IDIxOGYzZGIyZjYxLi4zYTBmOTExOTliNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9BdXRvY2FwaXRhbGl6ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9BdXRvY2FwaXRhbGl6ZS5jcHAKQEAgLTI2LDYgKzI2LDggQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJBdXRvY2FwaXRhbGl6ZS5oIgogCisjaWYgRU5BQkxFKEFVVE9DQVBJ
VEFMSVpFKQorCiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKQEAgLTc3LDMgKzc5LDUgQEAgY29uc3QgQXRvbVN0cmluZyYgc3RyaW5nRm9yQXV0
b2NhcGl0YWxpemVUeXBlKEF1dG9jYXBpdGFsaXplVHlwZSB0eXBlKQogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoQVVUT0NBUElUQUxJWkUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0F1dG9jYXBpdGFsaXplLmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0F1dG9jYXBpdGFsaXplLmgKaW5kZXggOTE1MWJjMWEyZjAuLjFjMDUyZmVkYjkwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0F1dG9jYXBpdGFsaXplLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9BdXRvY2FwaXRhbGl6ZS5oCkBAIC0yNSw2ICsyNSw4IEBACiAKICNw
cmFnbWEgb25jZQogCisjaWYgRU5BQkxFKEFVVE9DQVBJVEFMSVpFKQorCiAjaW5jbHVkZSAiQXV0
b2NhcGl0YWxpemVUeXBlcy5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21TdHJpbmcuaD4KIApA
QCAtMzQsMyArMzYsNSBAQCBBdXRvY2FwaXRhbGl6ZVR5cGUgYXV0b2NhcGl0YWxpemVUeXBlRm9y
QXR0cmlidXRlVmFsdWUoY29uc3QgQXRvbVN0cmluZyYpOwogY29uc3QgQXRvbVN0cmluZyYgc3Ry
aW5nRm9yQXV0b2NhcGl0YWxpemVUeXBlKEF1dG9jYXBpdGFsaXplVHlwZSk7CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShBVVRPQ0FQSVRBTElaRSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKaW5kZXggN2FiMWZmNWRlMjcuLjBhMGNiMDk4MTdhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcApAQCAtMTA2OSw3ICsxMDY5LDcgQEAgYm9v
bCBIVE1MRWxlbWVudDo6aXNBY3R1YWxseURpc2FibGVkKCkgY29uc3QKICAgICByZXR1cm4gY2Fu
QmVBY3R1YWxseURpc2FibGVkKCkgJiYgaXNEaXNhYmxlZEZvcm1Db250cm9sKCk7CiB9CiAKLSNp
ZiBFTkFCTEUoSU9TX0FVVE9DT1JSRUNUX0FORF9BVVRPQ0FQSVRBTElaRSkKKyNpZiBFTkFCTEUo
QVVUT0NBUElUQUxJWkUpCiAKIGNvbnN0IEF0b21TdHJpbmcmIEhUTUxFbGVtZW50OjphdXRvY2Fw
aXRhbGl6ZSgpIGNvbnN0CiB7CkBAIC0xMDg2LDYgKzEwODYsMTAgQEAgdm9pZCBIVE1MRWxlbWVu
dDo6c2V0QXV0b2NhcGl0YWxpemUoY29uc3QgQXRvbVN0cmluZyYgdmFsdWUpCiAgICAgc2V0QXR0
cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihhdXRvY2FwaXRhbGl6ZUF0dHIsIHZhbHVlKTsK
IH0KIAorI2VuZGlmCisKKyNpZiBFTkFCTEUoQVVUT0NPUlJFQ1QpCisKIGJvb2wgSFRNTEVsZW1l
bnQ6OnNob3VsZEF1dG9jb3JyZWN0KCkgY29uc3QKIHsKICAgICBhdXRvJiBhdXRvY29ycmVjdFZh
bHVlID0gYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OmF1dG9jb3Jy
ZWN0QXR0cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmgKaW5kZXggZDJjZjY5NTRjNDkuLmYx
MDIwYmJhMTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5oCkBAIC0yMiw3ICsyMiw3IEBA
CiAKICNwcmFnbWEgb25jZQogCi0jaWYgRU5BQkxFKElPU19BVVRPQ09SUkVDVF9BTkRfQVVUT0NB
UElUQUxJWkUpCisjaWYgRU5BQkxFKEFVVE9DQVBJVEFMSVpFKQogI2luY2x1ZGUgIkF1dG9jYXBp
dGFsaXplLmgiCiAjZW5kaWYKIApAQCAtMTAyLDExICsxMDIsMTMgQEAgcHVibGljOgogICAgIGJv
b2wgY2FuQmVBY3R1YWxseURpc2FibGVkKCkgY29uc3Q7CiAgICAgYm9vbCBpc0FjdHVhbGx5RGlz
YWJsZWQoKSBjb25zdDsKIAotI2lmIEVOQUJMRShJT1NfQVVUT0NPUlJFQ1RfQU5EX0FVVE9DQVBJ
VEFMSVpFKQorI2lmIEVOQUJMRShBVVRPQ0FQSVRBTElaRSkKICAgICBXRUJDT1JFX0VYUE9SVCB2
aXJ0dWFsIEF1dG9jYXBpdGFsaXplVHlwZSBhdXRvY2FwaXRhbGl6ZVR5cGUoKSBjb25zdDsKICAg
ICBXRUJDT1JFX0VYUE9SVCBjb25zdCBBdG9tU3RyaW5nJiBhdXRvY2FwaXRhbGl6ZSgpIGNvbnN0
OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0QXV0b2NhcGl0YWxpemUoY29uc3QgQXRvbVN0
cmluZyYgdmFsdWUpOworI2VuZGlmCiAKKyNpZiBFTkFCTEUoQVVUT0NPUlJFQ1QpCiAgICAgYm9v
bCBhdXRvY29ycmVjdCgpIGNvbnN0IHsgcmV0dXJuIHNob3VsZEF1dG9jb3JyZWN0KCk7IH0KICAg
ICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIGJvb2wgc2hvdWxkQXV0b2NvcnJlY3QoKSBjb25zdDsK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEF1dG9jb3JyZWN0KGJvb2wpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxFbGVtZW50LmlkbAppbmRleCBhMWY4NDNkZjdhNy4uNjI5MmNmYTlhNzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaWRsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaWRsCkBAIC01OCw4ICs1OCw4IEBACiAgICAgW0NFUmVh
Y3Rpb25zXSBhdHRyaWJ1dGUgW1RyZWF0TnVsbEFzPUVtcHR5U3RyaW5nXSBET01TdHJpbmcgb3V0
ZXJUZXh0OwogCiAgICAgLy8gaU9TIGF1dG9jb3JyZWN0IC8gYXV0b2NhcGl0YWxpemF0aW9uIGV4
dGVuc2lvbnMuCi0gICAgW0NvbmRpdGlvbmFsPUlPU19BVVRPQ09SUkVDVF9BTkRfQVVUT0NBUElU
QUxJWkUsIENFUmVhY3Rpb25zXSBhdHRyaWJ1dGUgYm9vbGVhbiBhdXRvY29ycmVjdDsKLSAgICBb
Q29uZGl0aW9uYWw9SU9TX0FVVE9DT1JSRUNUX0FORF9BVVRPQ0FQSVRBTElaRSwgQ0VSZWFjdGlv
bnNdIGF0dHJpYnV0ZSBbVHJlYXROdWxsQXM9RW1wdHlTdHJpbmddIERPTVN0cmluZyBhdXRvY2Fw
aXRhbGl6ZTsKKyAgICBbQ29uZGl0aW9uYWw9QVVUT0NPUlJFQ1QsIENFUmVhY3Rpb25zXSBhdHRy
aWJ1dGUgYm9vbGVhbiBhdXRvY29ycmVjdDsKKyAgICBbQ29uZGl0aW9uYWw9QVVUT0NBUElUQUxJ
WkUsIENFUmVhY3Rpb25zXSBhdHRyaWJ1dGUgW1RyZWF0TnVsbEFzPUVtcHR5U3RyaW5nXSBET01T
dHJpbmcgYXV0b2NhcGl0YWxpemU7CiAKICAgICAvLyBGSVhNRTogV2UgYXJlIHRoZSBvbmx5IGJy
b3dzZXIgdG8gc3VwcG9ydCB0aGlzIG5vdyB0aGF0IEJsaW5rIGRyb3BwZWQgaXQgKGh0dHA6Ly9j
cmJ1Zy5jb20vNjg4OTQzKS4KICAgICBbQ0VSZWFjdGlvbnMsIFJlZmxlY3RdIGF0dHJpYnV0ZSBE
T01TdHJpbmcgd2Via2l0ZHJvcHpvbmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9y
bUNvbnRyb2xFbGVtZW50LmNwcAppbmRleCBlMGMyZTBmMDEzOS4uZDYxMWJjMWIyMjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcApAQCAtNjE1
LDcgKzYxNSw3IEBAIHZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6ZGlzcGF0Y2hCbHVyRXZl
bnQoUmVmUHRyPEVsZW1lbnQ+JiYgbmV3Rm9jdXNlZEVsZW1lCiAgICAgaGlkZVZpc2libGVWYWxp
ZGF0aW9uTWVzc2FnZSgpOwogfQogCi0jaWYgRU5BQkxFKElPU19BVVRPQ09SUkVDVF9BTkRfQVVU
T0NBUElUQUxJWkUpCisjaWYgRU5BQkxFKEFVVE9DT1JSRUNUKQogCiAvLyBGSVhNRTogV2Ugc2hv
dWxkIGxvb2sgdG8gc2hhcmUgdGhpcyBjb2RlIHdpdGggY2xhc3MgSFRNTEZvcm1FbGVtZW50IGlu
c3RlYWQgb2YgZHVwbGljYXRpbmcgdGhlIGxvZ2ljLgogCkBAIC02MjksNiArNjI5LDEwIEBAIGJv
b2wgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6c2hvdWxkQXV0b2NvcnJlY3QoKSBjb25zdAogICAg
IHJldHVybiB0cnVlOwogfQogCisjZW5kaWYKKworI2lmIEVOQUJMRShBVVRPQ0FQSVRBTElaRSkK
KwogQXV0b2NhcGl0YWxpemVUeXBlIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmF1dG9jYXBpdGFs
aXplVHlwZSgpIGNvbnN0CiB7CiAgICAgQXV0b2NhcGl0YWxpemVUeXBlIHR5cGUgPSBIVE1MRWxl
bWVudDo6YXV0b2NhcGl0YWxpemVUeXBlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZv
cm1Db250cm9sRWxlbWVudC5oCmluZGV4IGNmYzk3OGVkN2E4Li42MTM0MGJmYTczYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmgKQEAgLTI3LDcgKzI3
LDcgQEAKICNpbmNsdWRlICJGb3JtQXNzb2NpYXRlZEVsZW1lbnQuaCIKICNpbmNsdWRlICJMYWJl
bGFibGVFbGVtZW50LmgiCiAKLSNpZiBFTkFCTEUoSU9TX0FVVE9DT1JSRUNUX0FORF9BVVRPQ0FQ
SVRBTElaRSkKKyNpZiBFTkFCTEUoQVVUT0NBUElUQUxJWkUpCiAjaW5jbHVkZSAiQXV0b2NhcGl0
YWxpemUuaCIKICNlbmRpZgogCkBAIC05MSw4ICs5MSwxMSBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCBib29sIGlzQWN0aXZhdGVkU3VibWl0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2
aXJ0dWFsIHZvaWQgc2V0QWN0aXZhdGVkU3VibWl0KGJvb2wpIHsgfQogCi0jaWYgRU5BQkxFKElP
U19BVVRPQ09SUkVDVF9BTkRfQVVUT0NBUElUQUxJWkUpCisjaWYgRU5BQkxFKEFVVE9DT1JSRUNU
KQogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2hvdWxkQXV0b2NvcnJlY3QoKSBjb25zdCBmaW5h
bDsKKyNlbmRpZgorCisjaWYgRU5BQkxFKEFVVE9DQVBJVEFMSVpFKQogICAgIFdFQkNPUkVfRVhQ
T1JUIEF1dG9jYXBpdGFsaXplVHlwZSBhdXRvY2FwaXRhbGl6ZVR5cGUoKSBjb25zdCBmaW5hbDsK
ICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKaW5kZXggMTVh
ZDU3ZjkxYmIuLmU3ZTQxNGM4N2RjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxGb3JtRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1l
bnQuY3BwCkBAIC00MDYsNyArNDA2LDcgQEAgdm9pZCBIVE1MRm9ybUVsZW1lbnQ6OnJlc2V0QXNz
b2NpYXRlZEZvcm1Db250cm9sRWxlbWVudHMoKQogICAgICAgICBhc3NvY2lhdGVkRm9ybUNvbnRy
b2xFbGVtZW50LT5yZXNldCgpOwogfQogCi0jaWYgRU5BQkxFKElPU19BVVRPQ09SUkVDVF9BTkRf
QVVUT0NBUElUQUxJWkUpCisjaWYgRU5BQkxFKEFVVE9DT1JSRUNUKQogCiAvLyBGSVhNRTogV2Ug
c2hvdWxkIGxvb2sgdG8gc2hhcmUgdGhpcyBjb2RlIHdpdGggY2xhc3MgSFRNTEZvcm1Db250cm9s
RWxlbWVudCBpbnN0ZWFkIG9mIGR1cGxpY2F0aW5nIHRoZSBsb2dpYy4KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEZvcm1FbGVtZW50LmgKaW5kZXggYjIxNzFkNzE5NTEuLjQ3ZTM5ZmQ1NzdmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmgKQEAgLTMxLDEwICszMSw2IEBACiAjaW5j
bHVkZSA8d3RmL0lzb01hbGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrSGFzaFNldC5oPgogCi0j
aWYgRU5BQkxFKElPU19BVVRPQ09SUkVDVF9BTkRfQVVUT0NBUElUQUxJWkUpCi0jaW5jbHVkZSAi
QXV0b2NhcGl0YWxpemUuaCIKLSNlbmRpZgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IEV2ZW50OwpAQCAtNjcsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBzZXRBdXRvY29tcGxldGUoY29uc3QgQXRvbVN0cmluZyYpOwogICAgIFdFQkNPUkVfRVhQT1JU
IGNvbnN0IEF0b21TdHJpbmcmIGF1dG9jb21wbGV0ZSgpIGNvbnN0OwogCi0jaWYgRU5BQkxFKElP
U19BVVRPQ09SUkVDVF9BTkRfQVVUT0NBUElUQUxJWkUpCisjaWYgRU5BQkxFKEFVVE9DT1JSRUNU
KQogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2hvdWxkQXV0b2NvcnJlY3QoKSBjb25zdCBmaW5h
bDsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGll
bnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCmluZGV4IDBl
YjVhMTIwYWY4Li44NGU0ZTE4YzNmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0VtcHR5Q2xpZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50
cy5jcHAKQEAgLTI5OSw3ICsyOTksNyBAQCBwcml2YXRlOgogICAgIGJvb2wgc3BlbGxpbmdVSUlz
U2hvd2luZygpIGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICB2b2lkIHdpbGxTZXRJbnB1
dE1ldGhvZFN0YXRlKCkgZmluYWwgeyB9Ci0gICAgdm9pZCBzZXRJbnB1dE1ldGhvZFN0YXRlKGJv
b2wpIGZpbmFsIHsgfQorICAgIHZvaWQgc2V0SW5wdXRNZXRob2RTdGF0ZShFbGVtZW50KikgZmlu
YWwgeyB9CiAKICAgICBib29sIGNhblNob3dGb250UGFuZWwoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBmYWxzZTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaAppbmRleCBjYTdiNjg2Y2Y5
NC4uOTM2NzMwZjk2ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaApAQCAtMTc5LDcg
KzE3OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2hvd1NwZWxsaW5nVUkoYm9vbCBz
aG93KSA9IDA7CiAgICAgdmlydHVhbCBib29sIHNwZWxsaW5nVUlJc1Nob3dpbmcoKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIHdpbGxTZXRJbnB1dE1ldGhvZFN0YXRlKCkgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCBzZXRJbnB1dE1ldGhvZFN0YXRlKGJvb2wgZW5hYmxlZCkgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBzZXRJbnB1dE1ldGhvZFN0YXRlKEVsZW1lbnQqKSA9IDA7CiAKICAgICAvLyBTdXBw
b3J0IGZvciBnbG9iYWwgc2VsZWN0aW9ucywgdXNlZCBvbiBwbGF0Zm9ybXMgbGlrZSB0aGUgWCBX
aW5kb3cgU3lzdGVtIHRoYXQgdHJlYXQKICAgICAvLyBzZWxlY3Rpb24gYXMgYSB0eXBlIG9mIGNs
aXBib2FyZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcAppbmRleCBlNTk0
MGRkMmE4Yi4uZTc5Zjc4NWFiM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRm9j
dXNDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxl
ci5jcHAKQEAgLTgzNSwxNCArODM1LDE0IEBAIGJvb2wgRm9jdXNDb250cm9sbGVyOjpzZXRGb2N1
c2VkRWxlbWVudChFbGVtZW50KiBlbGVtZW50LCBGcmFtZSYgbmV3Rm9jdXNlZEZyYW1lCiAgICAg
aWYgKCFlbGVtZW50KSB7CiAgICAgICAgIGlmIChvbGREb2N1bWVudCkKICAgICAgICAgICAgIG9s
ZERvY3VtZW50LT5zZXRGb2N1c2VkRWxlbWVudChudWxscHRyKTsKLSAgICAgICAgbV9wYWdlLmVk
aXRvckNsaWVudCgpLnNldElucHV0TWV0aG9kU3RhdGUoZmFsc2UpOworICAgICAgICBtX3BhZ2Uu
ZWRpdG9yQ2xpZW50KCkuc2V0SW5wdXRNZXRob2RTdGF0ZShudWxscHRyKTsKICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgfQogCiAgICAgUmVmPERvY3VtZW50PiBuZXdEb2N1bWVudChlbGVtZW50
LT5kb2N1bWVudCgpKTsKIAogICAgIGlmIChuZXdEb2N1bWVudC0+Zm9jdXNlZEVsZW1lbnQoKSA9
PSBlbGVtZW50KSB7Ci0gICAgICAgIG1fcGFnZS5lZGl0b3JDbGllbnQoKS5zZXRJbnB1dE1ldGhv
ZFN0YXRlKGVsZW1lbnQtPnNob3VsZFVzZUlucHV0TWV0aG9kKCkpOworICAgICAgICBtX3BhZ2Uu
ZWRpdG9yQ2xpZW50KCkuc2V0SW5wdXRNZXRob2RTdGF0ZShlbGVtZW50KTsKICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgfQogICAgIApAQCAtODYyLDcgKzg2Miw3IEBAIGJvb2wgRm9jdXNDb250
cm9sbGVyOjpzZXRGb2N1c2VkRWxlbWVudChFbGVtZW50KiBlbGVtZW50LCBGcmFtZSYgbmV3Rm9j
dXNlZEZyYW1lCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChuZXdEb2N1bWVudC0+
Zm9jdXNlZEVsZW1lbnQoKSA9PSBlbGVtZW50KQotICAgICAgICBtX3BhZ2UuZWRpdG9yQ2xpZW50
KCkuc2V0SW5wdXRNZXRob2RTdGF0ZShlbGVtZW50LT5zaG91bGRVc2VJbnB1dE1ldGhvZCgpKTsK
KyAgICAgICAgbV9wYWdlLmVkaXRvckNsaWVudCgpLnNldElucHV0TWV0aG9kU3RhdGUoZWxlbWVu
dCk7CiAKICAgICBtX2ZvY3VzU2V0VGltZSA9IE1vbm90b25pY1RpbWU6Om5vdygpOwogICAgIG1f
Zm9jdXNSZXBhaW50VGltZXIuc3RvcCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA2ZjYxNmM3OGFkMy4uYjNmOGM0
ODkyMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODQgQEAKKzIwMTktMTItMjcgIENhcmxvcyBHYXJj
aWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdW1dQRV0gQWRk
IEFQSSB0byBzZXQgcHVycG9zZSBhbmQgaGludHMgb2YgYWN0aXZlIGVkaXRhYmxlIGVsZW1lbnQg
dG8gaW5wdXQgbWV0aG9kcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjA1NjA1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWRkIGlucHV0LXB1cnBvc2UgYW5kIGlucHV0LWhpbnRzIHByb3BlcnRpZXMgdG8g
V2ViS2l0SW5wdXRNZXRob2RDb250ZXh0LiBUaGUgbWVzc2FnZSBTZXRJbnB1dE1ldGhvZFN0YXRl
IG5vdworICAgICAgICByZWNlaXZlcyBhbiBvcHRpb25hbCBJbnB1dE1ldGhvZFN0YXRlIHN0cnVj
dCB3aXRoIGluZm9ybWF0aW9uIGFib3V0IHRoZSBwdXJwb3NlIGFuZCBoaW50cyBvZiB0aGUgYWN0
aXZlIGVkaXRhYmxlCisgICAgICAgIGVsZW1lbnQuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtp
dC9tZXNzYWdlcy5weTogT25seSBpbmNsdWRlIElucHV0TWV0aG9kU3RhdGUuaCBmb3IgR1RLIGFu
ZCBXUEUuCisgICAgICAgICogU2hhcmVkL2dsaWIvSW5wdXRNZXRob2RTdGF0ZS5jcHA6IEFkZGVk
LgorICAgICAgICAoV2ViS2l0OjpJbnB1dE1ldGhvZFN0YXRlOjpzZXRQdXJwb3NlT3JIaW50Rm9y
SW5wdXRNb2RlKToKKyAgICAgICAgKFdlYktpdDo6aW5wdXRFbGVtZW50SGFzRGlnaXRzUGF0dGVy
bik6CisgICAgICAgIChXZWJLaXQ6OklucHV0TWV0aG9kU3RhdGU6OnNldFB1cnBvc2VGb3JJbnB1
dEVsZW1lbnQpOgorICAgICAgICAoV2ViS2l0OjpJbnB1dE1ldGhvZFN0YXRlOjphZGRIaW50c0Zv
ckF1dG9jYXBpdGFsaXplVHlwZSk6CisgICAgICAgIChXZWJLaXQ6OklucHV0TWV0aG9kU3RhdGU6
OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OklucHV0TWV0aG9kU3RhdGU6OmRlY29k
ZSk6CisgICAgICAgICogU2hhcmVkL2dsaWIvSW5wdXRNZXRob2RTdGF0ZS5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYktpdDo6b3BlcmF0b3I9PSk6CisgICAgICAgICogU291cmNlc0dUSy50eHQ6Cisg
ICAgICAgICogU291cmNlc1dQRS50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL0lu
cHV0TWV0aG9kRmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5wdXRNZXRob2RGaWx0ZXI6
OnNldENvbnRleHQpOiBVc2UgaXNFbmFibGVkKCkgaW5zdGVhZCBvZiBtX2VuYWJsZWQuCisgICAg
ICAgIChXZWJLaXQ6OklucHV0TWV0aG9kRmlsdGVyOjpzZXRTdGF0ZSk6IE5vdyByZWNlaXZlcyBh
biBvcHRpb25hbCBJbnB1dE1ldGhvZFN0YXRlIHN0cnVjdC4KKyAgICAgICAgKFdlYktpdDo6SW5w
dXRNZXRob2RGaWx0ZXI6OmZpbHRlcktleUV2ZW50KTogVXNlIGlzRW5hYmxlZCgpIGluc3RlYWQg
b2YgbV9lbmFibGVkLgorICAgICAgICAoV2ViS2l0OjpJbnB1dE1ldGhvZEZpbHRlcjo6aXNWaWV3
Rm9jdXNlZCBjb25zdCk6IERpdHRvLgorICAgICAgICAoV2ViS2l0Ojp0b1dlYktpdFB1cnBvc2Up
OiBIZWxwZXIgdG8gY29udmVydCBJbnB1dE1ldGhvZFN0YXRlOjpQdXJwb3NlIHRvIFdlYktpdElu
cHV0UHVycG9zZS4KKyAgICAgICAgKFdlYktpdDo6dG9XZWJLaXRIaW50cyk6IEhlbHBlciB0byBj
b252ZXJ0IElucHV0TWV0aG9kU3RhdGU6OkhpbnQgdG8gV2ViS2l0SW5wdXRIaW50cy4KKyAgICAg
ICAgKFdlYktpdDo6SW5wdXRNZXRob2RGaWx0ZXI6Om5vdGlmeUZvY3VzZWRJbik6IFNldCB0aGUg
cHVycG9zZSBhbmQgaGludHMgdG8gdGhlIGNvbnRleHQuCisgICAgICAgIChXZWJLaXQ6OklucHV0
TWV0aG9kRmlsdGVyOjpub3RpZnlGb2N1c2VkT3V0KTogVXNlIGlzRW5hYmxlZCgpIGluc3RlYWQg
b2YgbV9lbmFibGVkLgorICAgICAgICAoV2ViS2l0OjpJbnB1dE1ldGhvZEZpbHRlcjo6bm90aWZ5
Q3Vyc29yUmVjdCk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpJbnB1dE1ldGhvZEZpbHRlcjo6
cHJlZWRpdFN0YXJ0ZWQpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6SW5wdXRNZXRob2RGaWx0
ZXI6OnByZWVkaXRDaGFuZ2VkKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OklucHV0TWV0aG9k
RmlsdGVyOjpwcmVlZGl0RmluaXNoZWQpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6SW5wdXRN
ZXRob2RGaWx0ZXI6OmNvbW1pdHRlZCk6IERpdHRvLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Z2xpYi9JbnB1dE1ldGhvZEZpbHRlci5oOgorICAgICAgICAoV2ViS2l0OjpJbnB1dE1ldGhvZEZp
bHRlcjo6aXNFbmFibGVkIGNvbnN0KTogUmV0dXJuIHRydWUgaWYgd2UgaGF2ZSBhIHN0YXRlLgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRJbnB1dE1ldGhvZENvbnRleHQuY3Bw
OgorICAgICAgICAod2Via2l0SW5wdXRNZXRob2RDb250ZXh0U2V0UHJvcGVydHkpOiBQcm9wZXJ0
aWVzIHNldHRlci4KKyAgICAgICAgKHdlYmtpdElucHV0TWV0aG9kQ29udGV4dEdldFByb3BlcnR5
KTogUHJvcGVydGllcyBnZXR0ZXIuCisgICAgICAgICh3ZWJraXRfaW5wdXRfbWV0aG9kX2NvbnRl
eHRfY2xhc3NfaW5pdCk6IEFkZCBpbXBsZW1lbnRhdGlvbiBmb3IgcHJvcGVydGllcyBnZXR0ZXIg
YW5kIHNldHRlci4KKyAgICAgICAgKHdlYmtpdF9pbnB1dF9tZXRob2RfY29udGV4dF9nZXRfaW5w
dXRfcHVycG9zZSk6CisgICAgICAgICh3ZWJraXRfaW5wdXRfbWV0aG9kX2NvbnRleHRfc2V0X2lu
cHV0X3B1cnBvc2UpOgorICAgICAgICAod2Via2l0X2lucHV0X21ldGhvZF9jb250ZXh0X2dldF9p
bnB1dF9oaW50cyk6CisgICAgICAgICh3ZWJraXRfaW5wdXRfbWV0aG9kX2NvbnRleHRfc2V0X2lu
cHV0X2hpbnRzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRJbnB1dE1ldGhv
ZENvbnRleHQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRJbnB1dE1ldGhv
ZENvbnRleHRJbXBsR3RrLmNwcDoKKyAgICAgICAgKHRvR3RrSW5wdXRQdXJwb3NlKTogSGVscGVy
IHRvIGNvbnZlcnQgV2ViS2l0SW5wdXRQdXJwb3NlIHRvIEd0a0lucHV0UHVycG9zZS4KKyAgICAg
ICAgKHRvR3RrSW5wdXRIaW50cyk6IEhlbHBlciB0byBjb252ZXJ0IFdlYktpdElucHV0SGludHMg
dG8gR3RrSW5wdXRIaW50cy4KKyAgICAgICAgKGlucHV0UHVycG9zZUNoYW5nZWRDYWxsYmFjayk6
IFNldCB0aGUgcHVycG9zZSBvbiBHdGtJTUNvbnRleHQuCisgICAgICAgIChpbnB1dEhpbnRzQ2hh
bmdlZENhbGxiYWNrKTogU2V0IHRoZSBoaW50cyBvbiBHdGtJTUNvbnRleHQuCisgICAgICAgICh3
ZWJraXRJbnB1dE1ldGhvZENvbnRleHRJbXBsR3RrQ29uc3RydWN0ZWQpOiBDb25uZWN0IHRvIG5v
dGlmeSBzaWduYWwgZm9yIGlucHV0LXB1cnBvc2UgYW5kIGlucHV0LWhpbnRzCisgICAgICAgIHBy
b3BlcnRpZXMgb2YgdGhlIGNvbnRleHQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0V2ViVmlld0Jhc2UuY3BwOgorICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VTZXRJbnB1dE1l
dGhvZFN0YXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFz
ZVByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGst
NC4wLXNlY3Rpb25zLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3dwZS9QYWdlQ2xpZW50
SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpzZXRJbnB1dE1ldGhv
ZFN0YXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3dwZS9QYWdlQ2xpZW50SW1wbC5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvd3BlL1dQRVZpZXcuY3BwOgorICAgICAgICAoV0tXUEU6
OlZpZXc6OnNldElucHV0TWV0aG9kU3RhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvd3Bl
L1dQRVZpZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRJbnB1dE1ldGhv
ZENvbnRleHQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3dwZS9kb2NzL3dwZS0xLjAtc2Vj
dGlvbnMudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vz
cy9ndGsvV2ViUGFnZVByb3h5R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpzZXRJbnB1dE1ldGhvZFN0YXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3Mvd3BlL1dlYlBhZ2VQ
cm94eVdQRS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0SW5wdXRNZXRo
b2RTdGF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JD
bGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJFZGl0b3JDbGllbnQ6OnNldElucHV0TWV0
aG9kU3RhdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvZ2xpYi9XZWJQYWdlR0xpYi5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OmlucHV0TWV0aG9kU2F0ZUZvckVsZW1lbnQpOiBCdWlsZCBhbiBJbnB1dE1ldGhvZFN0
YXRlIGZvciB0aGUgZ2l2ZW4gZWxlbWVudC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0
SW5wdXRNZXRob2RTdGF0ZSk6CisKIDIwMTktMTItMjYgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8
Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdW1dQRV0gUmVtb3ZlIGR1cGxpY2F0
ZWQgY29kZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdl
cy5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKaW5kZXggZjJl
OWVkN2FiNTQuLjQ3NWU5NGUzNmUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMv
d2Via2l0L21lc3NhZ2VzLnB5CisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVz
c2FnZXMucHkKQEAgLTIzMSw2ICsyMzEsNyBAQCBkZWYgdHlwZXNfdGhhdF9jYW5ub3RfYmVfZm9y
d2FyZF9kZWNsYXJlZCgpOgogCiBkZWYgY29uZGl0aW9uc19mb3JfaGVhZGVyKGhlYWRlcik6CiAg
ICAgY29uZGl0aW9ucyA9IHsKKyAgICAgICAgJyJJbnB1dE1ldGhvZFN0YXRlLmgiJzogWyJQTEFU
Rk9STShHVEspIiwgIlBMQVRGT1JNKFdQRSkiXSwKICAgICAgICAgJyJMYXllckhvc3RpbmdDb250
ZXh0LmgiJzogWyJQTEFURk9STShDT0NPQSkiLCBdLAogICAgIH0KICAgICBpZiBub3QgaGVhZGVy
IGluIGNvbmRpdGlvbnM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9nbGliL0lu
cHV0TWV0aG9kU3RhdGUuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvZ2xpYi9JbnB1dE1ldGhv
ZFN0YXRlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNmExOTk2
MmUxNTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9nbGliL0lucHV0
TWV0aG9kU3RhdGUuY3BwCkBAIC0wLDAgKzEsMTIyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE5IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJJbnB1dE1ldGhvZFN0YXRlLmgiCisKKyNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgorI2lu
Y2x1ZGUgPFdlYkNvcmUvSFRNTElucHV0RWxlbWVudC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsK
Kwordm9pZCBJbnB1dE1ldGhvZFN0YXRlOjpzZXRQdXJwb3NlT3JIaW50Rm9ySW5wdXRNb2RlKFdl
YkNvcmU6OklucHV0TW9kZSBpbnB1dE1vZGUpCit7CisgICAgc3dpdGNoIChpbnB1dE1vZGUpIHsK
KyAgICBjYXNlIFdlYkNvcmU6OklucHV0TW9kZTo6Tm9uZToKKyAgICAgICAgaGludHMuYWRkKElu
cHV0TWV0aG9kU3RhdGU6OkhpbnQ6OkluaGliaXRPblNjcmVlbktleWJvYXJkKTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBXZWJDb3JlOjpJbnB1dE1vZGU6OlVuc3BlY2lmaWVkOgorICAgIGNh
c2UgV2ViQ29yZTo6SW5wdXRNb2RlOjpUZXh0OgorICAgICAgICBwdXJwb3NlID0gUHVycG9zZTo6
RnJlZUZvcm07CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV2ViQ29yZTo6SW5wdXRNb2RlOjpU
ZWxlcGhvbmU6CisgICAgICAgIHB1cnBvc2UgPSBQdXJwb3NlOjpQaG9uZTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBXZWJDb3JlOjpJbnB1dE1vZGU6OlVybDoKKyAgICAgICAgcHVycG9zZSA9
IFB1cnBvc2U6OlVybDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXZWJDb3JlOjpJbnB1dE1v
ZGU6OkVtYWlsOgorICAgICAgICBwdXJwb3NlID0gUHVycG9zZTo6RW1haWw7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgV2ViQ29yZTo6SW5wdXRNb2RlOjpOdW1lcmljOgorICAgICAgICBwdXJw
b3NlID0gUHVycG9zZTo6RGlnaXRzOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFdlYkNvcmU6
OklucHV0TW9kZTo6RGVjaW1hbDoKKyAgICAgICAgcHVycG9zZSA9IFB1cnBvc2U6Ok51bWJlcjsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXZWJDb3JlOjpJbnB1dE1vZGU6OlNlYXJjaDoKKyAg
ICAgICAgYnJlYWs7CisgICAgfQorfQorCitzdGF0aWMgYm9vbCBpbnB1dEVsZW1lbnRIYXNEaWdp
dHNQYXR0ZXJuKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQmIGVsZW1lbnQpCit7CisgICAgY29u
c3QgYXV0byYgcGF0dGVybiA9IGVsZW1lbnQuYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlv
bihXZWJDb3JlOjpIVE1MTmFtZXM6OnBhdHRlcm5BdHRyKTsKKyAgICByZXR1cm4gcGF0dGVybiA9
PSAiXFxkKiIgfHwgcGF0dGVybiA9PSAiWzAtOV0qIjsKK30KKwordm9pZCBJbnB1dE1ldGhvZFN0
YXRlOjpzZXRQdXJwb3NlRm9ySW5wdXRFbGVtZW50KFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQm
IGVsZW1lbnQpCit7CisgICAgaWYgKGVsZW1lbnQuaXNQYXNzd29yZEZpZWxkKCkpCisgICAgICAg
IHB1cnBvc2UgPSBQdXJwb3NlOjpQYXNzd29yZDsKKyAgICBlbHNlIGlmIChlbGVtZW50LmlzRW1h
aWxGaWVsZCgpKQorICAgICAgICBwdXJwb3NlID0gUHVycG9zZTo6RW1haWw7CisgICAgZWxzZSBp
ZiAoZWxlbWVudC5pc1RlbGVwaG9uZUZpZWxkKCkpCisgICAgICAgIHB1cnBvc2UgPSBQdXJwb3Nl
OjpQaG9uZTsKKyAgICBlbHNlIGlmIChlbGVtZW50LmlzTnVtYmVyRmllbGQoKSkKKyAgICAgICAg
cHVycG9zZSA9IGlucHV0RWxlbWVudEhhc0RpZ2l0c1BhdHRlcm4oZWxlbWVudCkgPyBQdXJwb3Nl
OjpEaWdpdHMgOiBQdXJwb3NlOjpOdW1iZXI7CisgICAgZWxzZSBpZiAoZWxlbWVudC5pc1VSTEZp
ZWxkKCkpCisgICAgICAgIHB1cnBvc2UgPSBQdXJwb3NlOjpVcmw7CisgICAgZWxzZSBpZiAoZWxl
bWVudC5pc1RleHQoKSAmJiBpbnB1dEVsZW1lbnRIYXNEaWdpdHNQYXR0ZXJuKGVsZW1lbnQpKQor
ICAgICAgICBwdXJwb3NlID0gUHVycG9zZTo6RGlnaXRzOworfQorCit2b2lkIElucHV0TWV0aG9k
U3RhdGU6OmFkZEhpbnRzRm9yQXV0b2NhcGl0YWxpemVUeXBlKEF1dG9jYXBpdGFsaXplVHlwZSBh
dXRvY2FwaXRhbGl6ZVR5cGUpCit7CisgICAgc3dpdGNoIChhdXRvY2FwaXRhbGl6ZVR5cGUpIHsK
KyAgICBjYXNlIEF1dG9jYXBpdGFsaXplVHlwZURlZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgQXV0b2NhcGl0YWxpemVUeXBlTm9uZToKKyAgICAgICAgaGludHMuYWRkKElucHV0TWV0
aG9kU3RhdGU6OkhpbnQ6Okxvd2VyY2FzZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQXV0
b2NhcGl0YWxpemVUeXBlV29yZHM6CisgICAgICAgIGhpbnRzLmFkZChJbnB1dE1ldGhvZFN0YXRl
OjpIaW50OjpVcHBlcmNhc2VXb3Jkcyk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQXV0b2Nh
cGl0YWxpemVUeXBlU2VudGVuY2VzOgorICAgICAgICBoaW50cy5hZGQoSW5wdXRNZXRob2RTdGF0
ZTo6SGludDo6VXBwZXJjYXNlU2VudGVuY2VzKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBB
dXRvY2FwaXRhbGl6ZVR5cGVBbGxDaGFyYWN0ZXJzOgorICAgICAgICBoaW50cy5hZGQoSW5wdXRN
ZXRob2RTdGF0ZTo6SGludDo6VXBwZXJjYXNlQ2hhcnMpOworICAgICAgICBicmVhazsKKyAgICB9
Cit9CisKK3ZvaWQgSW5wdXRNZXRob2RTdGF0ZTo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2Rl
cikgY29uc3QKK3sKKyAgICBlbmNvZGVyLmVuY29kZUVudW0ocHVycG9zZSk7CisgICAgZW5jb2Rl
ciA8PCBoaW50czsKK30KKworT3B0aW9uYWw8SW5wdXRNZXRob2RTdGF0ZT4gSW5wdXRNZXRob2RT
dGF0ZTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBJbnB1dE1ldGhvZFN0
YXRlIHN0YXRlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGVFbnVtKHN0YXRlLnB1cnBvc2UpKQor
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3Rh
dGUuaGludHMpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBzdGF0
ZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9nbGliL0lucHV0TWV0aG9kU3RhdGUuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2ds
aWIvSW5wdXRNZXRob2RTdGF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwLi5kZmJmMDU0MDZkYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L2dsaWIvSW5wdXRNZXRob2RTdGF0ZS5oCkBAIC0wLDAgKzEsODEgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTkgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlIDxXZWJDb3JlL0F1dG9jYXBpdGFsaXplVHlwZXMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0lu
cHV0TW9kZS5oPgorI2luY2x1ZGUgPHd0Zi9PcHRpb25TZXQuaD4KKyNpbmNsdWRlIDx3dGYvT3B0
aW9uYWwuaD4KKworbmFtZXNwYWNlIElQQyB7CitjbGFzcyBEZWNvZGVyOworY2xhc3MgRW5jb2Rl
cjsKK30KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgSFRNTElucHV0RWxlbWVudDsKK30K
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0cnVjdCBJbnB1dE1ldGhvZFN0YXRlIHsKKyAgICBl
bnVtIGNsYXNzIFB1cnBvc2UgeworICAgICAgICBGcmVlRm9ybSwKKyAgICAgICAgRGlnaXRzLAor
ICAgICAgICBOdW1iZXIsCisgICAgICAgIFBob25lLAorICAgICAgICBVcmwsCisgICAgICAgIEVt
YWlsLAorICAgICAgICBQYXNzd29yZAorICAgIH07CisKKyAgICBlbnVtIGNsYXNzIEhpbnQgewor
ICAgICAgICBOb25lID0gMCwKKyAgICAgICAgU3BlbGxjaGVjayA9IDEgPDwgMCwKKyAgICAgICAg
TG93ZXJjYXNlID0gMSA8PCAxLAorICAgICAgICBVcHBlcmNhc2VDaGFycyA9IDEgPDwgMiwKKyAg
ICAgICAgVXBwZXJjYXNlV29yZHMgPSAxIDw8IDMsCisgICAgICAgIFVwcGVyY2FzZVNlbnRlbmNl
cyA9IDEgPDwgNCwKKyAgICAgICAgSW5oaWJpdE9uU2NyZWVuS2V5Ym9hcmQgPSAxIDw8IDUKKyAg
ICB9OworCisgICAgdm9pZCBzZXRQdXJwb3NlT3JIaW50Rm9ySW5wdXRNb2RlKFdlYkNvcmU6Oklu
cHV0TW9kZSk7CisgICAgdm9pZCBzZXRQdXJwb3NlRm9ySW5wdXRFbGVtZW50KFdlYkNvcmU6OkhU
TUxJbnB1dEVsZW1lbnQmKTsKKyAgICB2b2lkIGFkZEhpbnRzRm9yQXV0b2NhcGl0YWxpemVUeXBl
KEF1dG9jYXBpdGFsaXplVHlwZSk7CisKKyAgICB2b2lkIGVuY29kZShJUEM6OkVuY29kZXImKSBj
b25zdDsKKyAgICBzdGF0aWMgT3B0aW9uYWw8SW5wdXRNZXRob2RTdGF0ZT4gZGVjb2RlKElQQzo6
RGVjb2RlciYpOworCisgICAgUHVycG9zZSBwdXJwb3NlIHsgUHVycG9zZTo6RnJlZUZvcm0gfTsK
KyAgICBPcHRpb25TZXQ8SGludD4gaGludHM7Cit9OworCitpbmxpbmUgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IElucHV0TWV0aG9kU3RhdGUmIGEsIGNvbnN0IElucHV0TWV0aG9kU3RhdGUmIGIpCit7
CisgICAgcmV0dXJuIGEucHVycG9zZSA9PSBiLnB1cnBvc2UgJiYgYS5oaW50cyA9PSBiLmhpbnRz
OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U291cmNlc0dUSy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNHVEsudHh0CmluZGV4IDQwMzhh
ZDdiYWVjLi44ZmIxODA1NjI3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzR1RL
LnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNHVEsudHh0CkBAIC04Myw2ICs4Myw3IEBA
IFNoYXJlZC9QbHVnaW5zL3VuaXgvUGx1Z2luU2VhcmNoUGF0aC5jcHAKIFNoYXJlZC9jYWlyby9T
aGFyZWFibGVCaXRtYXBDYWlyby5jcHAKIAogU2hhcmVkL2dsaWIvQXJndW1lbnRDb2RlcnNHTGli
LmNwcAorU2hhcmVkL2dsaWIvSW5wdXRNZXRob2RTdGF0ZS5jcHAKIFNoYXJlZC9nbGliL1Byb2Nl
c3NFeGVjdXRhYmxlUGF0aEdMaWIuY3BwCiBTaGFyZWQvZ2xpYi9Vc2VyTWVzc2FnZS5jcHAKIFNo
YXJlZC9nbGliL1dlYkNvbnRleHRNZW51SXRlbUdsaWIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NvdXJjZXNXUEUudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzV1BFLnR4dAppbmRl
eCBmNzg4ZDg0ZDg2OS4uMGM5ZGZlMTE5ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291
cmNlc1dQRS50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzV1BFLnR4dApAQCAtODEsNiAr
ODEsNyBAQCBTaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS91bml4L05ldHNjYXBlUGx1Z2luTW9kdWxl
VW5peC5jcHAKIFNoYXJlZC9jYWlyby9TaGFyZWFibGVCaXRtYXBDYWlyby5jcHAKIAogU2hhcmVk
L2dsaWIvQXJndW1lbnRDb2RlcnNHTGliLmNwcAorU2hhcmVkL2dsaWIvSW5wdXRNZXRob2RTdGF0
ZS5jcHAKIFNoYXJlZC9nbGliL1Byb2Nlc3NFeGVjdXRhYmxlUGF0aEdMaWIuY3BwCiBTaGFyZWQv
Z2xpYi9Vc2VyTWVzc2FnZS5jcHAKIFNoYXJlZC9nbGliL1dlYkNvbnRleHRNZW51SXRlbUdsaWIu
Y3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JbnB1dE1l
dGhvZEZpbHRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JbnB1dE1l
dGhvZEZpbHRlci5jcHAKaW5kZXggNzY5ZjQxZGZhNjguLjU5ZjQxM2EyMDM0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JbnB1dE1ldGhvZEZpbHRlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSW5wdXRNZXRob2RGaWx0ZXIu
Y3BwCkBAIC03MSwyMyArNzEsMjMgQEAgdm9pZCBJbnB1dE1ldGhvZEZpbHRlcjo6c2V0Q29udGV4
dChXZWJLaXRJbnB1dE1ldGhvZENvbnRleHQqIGNvbnRleHQpCiAgICAgZ19zaWduYWxfY29ubmVj
dF9zd2FwcGVkKG1fY29udGV4dC5nZXQoKSwgInByZWVkaXQtZmluaXNoZWQiLCBHX0NBTExCQUNL
KHByZWVkaXRGaW5pc2hlZENhbGxiYWNrKSwgdGhpcyk7CiAgICAgZ19zaWduYWxfY29ubmVjdF9z
d2FwcGVkKG1fY29udGV4dC5nZXQoKSwgImNvbW1pdHRlZCIsIEdfQ0FMTEJBQ0soY29tbWl0dGVk
Q2FsbGJhY2spLCB0aGlzKTsKIAotICAgIGlmIChtX2VuYWJsZWQgJiYgaXNWaWV3Rm9jdXNlZCgp
KQorICAgIGlmIChpc0VuYWJsZWQoKSAmJiBpc1ZpZXdGb2N1c2VkKCkpCiAgICAgICAgIG5vdGlm
eUZvY3VzZWRJbigpOwogfQogCi12b2lkIElucHV0TWV0aG9kRmlsdGVyOjpzZXRFbmFibGVkKGJv
b2wgZW5hYmxlZCkKK3ZvaWQgSW5wdXRNZXRob2RGaWx0ZXI6OnNldFN0YXRlKE9wdGlvbmFsPElu
cHV0TWV0aG9kU3RhdGU+JiYgc3RhdGUpCiB7Ci0gICAgaWYgKCFlbmFibGVkKQorICAgIGlmICgh
c3RhdGUpCiAgICAgICAgIG5vdGlmeUZvY3VzZWRPdXQoKTsKIAotICAgIG1fZW5hYmxlZCA9IGVu
YWJsZWQ7Ci0gICAgaWYgKG1fZW5hYmxlZCAmJiBpc1ZpZXdGb2N1c2VkKCkpCisgICAgbV9zdGF0
ZSA9IFdURk1vdmUoc3RhdGUpOworICAgIGlmIChpc0VuYWJsZWQoKSAmJiBpc1ZpZXdGb2N1c2Vk
KCkpCiAgICAgICAgIG5vdGlmeUZvY3VzZWRJbigpOwogfQogCiBJbnB1dE1ldGhvZEZpbHRlcjo6
RmlsdGVyUmVzdWx0IElucHV0TWV0aG9kRmlsdGVyOjpmaWx0ZXJLZXlFdmVudChQbGF0Zm9ybUV2
ZW50S2V5KiBrZXlFdmVudCkKIHsKLSAgICBpZiAoIW1fZW5hYmxlZCB8fCAhbV9jb250ZXh0KQor
ICAgIGlmICghaXNFbmFibGVkKCkgfHwgIW1fY29udGV4dCkKICAgICAgICAgcmV0dXJuIHsgfTsK
IAogICAgIFNldEZvclNjb3BlPGJvb2w+IGZpbHRlcmluZ0NvbnRleHRJc0FjaXZlKG1fZmlsdGVy
aW5nQ29udGV4dC5pc0FjdGl2ZSwgdHJ1ZSk7CkBAIC0xMTAsNyArMTEwLDcgQEAgSW5wdXRNZXRo
b2RGaWx0ZXI6OkZpbHRlclJlc3VsdCBJbnB1dE1ldGhvZEZpbHRlcjo6ZmlsdGVyS2V5RXZlbnQo
UGxhdGZvcm1FdmVudEsKIAogYm9vbCBJbnB1dE1ldGhvZEZpbHRlcjo6aXNWaWV3Rm9jdXNlZCgp
IGNvbnN0CiB7Ci0gICAgaWYgKCFtX2VuYWJsZWQgfHwgIW1fY29udGV4dCkKKyAgICBpZiAoIWlz
RW5hYmxlZCgpIHx8ICFtX2NvbnRleHQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogI2lmIEVO
QUJMRShERVZFTE9QRVJfTU9ERSkgJiYgUExBVEZPUk0oWDExKQpAQCAtMTI3LDE3ICsxMjcsNjAg
QEAgYm9vbCBJbnB1dE1ldGhvZEZpbHRlcjo6aXNWaWV3Rm9jdXNlZCgpIGNvbnN0CiAgICAgcmV0
dXJuIHdlYmtpdFdlYlZpZXdHZXRQYWdlKHdlYlZpZXcpLmlzVmlld0ZvY3VzZWQoKTsKIH0KIAor
c3RhdGljIFdlYktpdElucHV0UHVycG9zZSB0b1dlYktpdFB1cnBvc2UoSW5wdXRNZXRob2RTdGF0
ZTo6UHVycG9zZSBwdXJwb3NlKQoreworICAgIHN3aXRjaCAocHVycG9zZSkgeworICAgIGNhc2Ug
SW5wdXRNZXRob2RTdGF0ZTo6UHVycG9zZTo6RnJlZUZvcm06CisgICAgICAgIHJldHVybiBXRUJL
SVRfSU5QVVRfUFVSUE9TRV9GUkVFX0ZPUk07CisgICAgY2FzZSBJbnB1dE1ldGhvZFN0YXRlOjpQ
dXJwb3NlOjpEaWdpdHM6CisgICAgICAgIHJldHVybiBXRUJLSVRfSU5QVVRfUFVSUE9TRV9ESUdJ
VFM7CisgICAgY2FzZSBJbnB1dE1ldGhvZFN0YXRlOjpQdXJwb3NlOjpOdW1iZXI6CisgICAgICAg
IHJldHVybiBXRUJLSVRfSU5QVVRfUFVSUE9TRV9OVU1CRVI7CisgICAgY2FzZSBJbnB1dE1ldGhv
ZFN0YXRlOjpQdXJwb3NlOjpQaG9uZToKKyAgICAgICAgcmV0dXJuIFdFQktJVF9JTlBVVF9QVVJQ
T1NFX1BIT05FOworICAgIGNhc2UgSW5wdXRNZXRob2RTdGF0ZTo6UHVycG9zZTo6VXJsOgorICAg
ICAgICByZXR1cm4gV0VCS0lUX0lOUFVUX1BVUlBPU0VfVVJMOworICAgIGNhc2UgSW5wdXRNZXRo
b2RTdGF0ZTo6UHVycG9zZTo6RW1haWw6CisgICAgICAgIHJldHVybiBXRUJLSVRfSU5QVVRfUFVS
UE9TRV9FTUFJTDsKKyAgICBjYXNlIElucHV0TWV0aG9kU3RhdGU6OlB1cnBvc2U6OlBhc3N3b3Jk
OgorICAgICAgICByZXR1cm4gV0VCS0lUX0lOUFVUX1BVUlBPU0VfUEFTU1dPUkQ7CisgICAgfQor
CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKworc3RhdGljIFdlYktpdElu
cHV0SGludHMgdG9XZWJLaXRIaW50cyhjb25zdCBPcHRpb25TZXQ8SW5wdXRNZXRob2RTdGF0ZTo6
SGludD4mIGhpbnRzKQoreworICAgIHVuc2lnbmVkIHdrSGludHMgPSAwOworICAgIGlmIChoaW50
cy5jb250YWlucyhJbnB1dE1ldGhvZFN0YXRlOjpIaW50OjpTcGVsbGNoZWNrKSkKKyAgICAgICAg
d2tIaW50cyB8PSBXRUJLSVRfSU5QVVRfSElOVF9TUEVMTENIRUNLOworICAgIGlmIChoaW50cy5j
b250YWlucyhJbnB1dE1ldGhvZFN0YXRlOjpIaW50OjpMb3dlcmNhc2UpKQorICAgICAgICB3a0hp
bnRzIHw9IFdFQktJVF9JTlBVVF9ISU5UX0xPV0VSQ0FTRTsKKyAgICBpZiAoaGludHMuY29udGFp
bnMoSW5wdXRNZXRob2RTdGF0ZTo6SGludDo6VXBwZXJjYXNlQ2hhcnMpKQorICAgICAgICB3a0hp
bnRzIHw9IFdFQktJVF9JTlBVVF9ISU5UX1VQUEVSQ0FTRV9DSEFSUzsKKyAgICBpZiAoaGludHMu
Y29udGFpbnMoSW5wdXRNZXRob2RTdGF0ZTo6SGludDo6VXBwZXJjYXNlV29yZHMpKQorICAgICAg
ICB3a0hpbnRzIHw9IFdFQktJVF9JTlBVVF9ISU5UX1VQUEVSQ0FTRV9XT1JEUzsKKyAgICBpZiAo
aGludHMuY29udGFpbnMoSW5wdXRNZXRob2RTdGF0ZTo6SGludDo6VXBwZXJjYXNlU2VudGVuY2Vz
KSkKKyAgICAgICAgd2tIaW50cyB8PSBXRUJLSVRfSU5QVVRfSElOVF9VUFBFUkNBU0VfU0VOVEVO
Q0VTOworICAgIGlmIChoaW50cy5jb250YWlucyhJbnB1dE1ldGhvZFN0YXRlOjpIaW50OjpJbmhp
Yml0T25TY3JlZW5LZXlib2FyZCkpCisgICAgICAgIHdrSGludHMgfD0gV0VCS0lUX0lOUFVUX0hJ
TlRfSU5ISUJJVF9PU0s7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFdlYktpdElucHV0SGludHM+
KHdrSGludHMpOworfQogdm9pZCBJbnB1dE1ldGhvZEZpbHRlcjo6bm90aWZ5Rm9jdXNlZEluKCkK
IHsKLSAgICBpZiAoIW1fZW5hYmxlZCB8fCAhbV9jb250ZXh0KQorICAgIGlmICghaXNFbmFibGVk
KCkgfHwgIW1fY29udGV4dCkKICAgICAgICAgcmV0dXJuOwogCisgICAgZ19vYmplY3RfZnJlZXpl
X25vdGlmeShHX09CSkVDVChtX2NvbnRleHQuZ2V0KCkpKTsKKyAgICB3ZWJraXRfaW5wdXRfbWV0
aG9kX2NvbnRleHRfc2V0X2lucHV0X3B1cnBvc2UobV9jb250ZXh0LmdldCgpLCB0b1dlYktpdFB1
cnBvc2UobV9zdGF0ZS0+cHVycG9zZSkpOworICAgIHdlYmtpdF9pbnB1dF9tZXRob2RfY29udGV4
dF9zZXRfaW5wdXRfaGludHMobV9jb250ZXh0LmdldCgpLCB0b1dlYktpdEhpbnRzKG1fc3RhdGUt
PmhpbnRzKSk7CisgICAgZ19vYmplY3RfdGhhd19ub3RpZnkoR19PQkpFQ1QobV9jb250ZXh0Lmdl
dCgpKSk7CiAgICAgd2Via2l0X2lucHV0X21ldGhvZF9jb250ZXh0X25vdGlmeV9mb2N1c19pbiht
X2NvbnRleHQuZ2V0KCkpOwogfQogCiB2b2lkIElucHV0TWV0aG9kRmlsdGVyOjpub3RpZnlGb2N1
c2VkT3V0KCkKIHsKLSAgICBpZiAoIW1fZW5hYmxlZCB8fCAhbV9jb250ZXh0KQorICAgIGlmICgh
aXNFbmFibGVkKCkgfHwgIW1fY29udGV4dCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgY2FuY2Vs
Q29tcG9zaXRpb24oKTsKQEAgLTE0Niw3ICsxODksNyBAQCB2b2lkIElucHV0TWV0aG9kRmlsdGVy
Ojpub3RpZnlGb2N1c2VkT3V0KCkKIAogdm9pZCBJbnB1dE1ldGhvZEZpbHRlcjo6bm90aWZ5Q3Vy
c29yUmVjdChjb25zdCBJbnRSZWN0JiBjdXJzb3JSZWN0KQogewotICAgIGlmICghbV9lbmFibGVk
IHx8ICFtX2NvbnRleHQpCisgICAgaWYgKCFpc0VuYWJsZWQoKSB8fCAhbV9jb250ZXh0KQogICAg
ICAgICByZXR1cm47CiAKICAgICAvLyBEb24ndCBtb3ZlIHRoZSB3aW5kb3cgdW5sZXNzIHRoZSBj
dXJzb3IgYWN0dWFsbHkgbW92ZXMgbW9yZSB0aGFuIDEwCkBAIC0xNjMsNyArMjA2LDcgQEAgdm9p
ZCBJbnB1dE1ldGhvZEZpbHRlcjo6bm90aWZ5Q3Vyc29yUmVjdChjb25zdCBJbnRSZWN0JiBjdXJz
b3JSZWN0KQogCiB2b2lkIElucHV0TWV0aG9kRmlsdGVyOjpwcmVlZGl0U3RhcnRlZCgpCiB7Ci0g
ICAgaWYgKCFtX2VuYWJsZWQpCisgICAgaWYgKCFpc0VuYWJsZWQoKSkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgaWYgKG1fZmlsdGVyaW5nQ29udGV4dC5pc0FjdGl2ZSkKQEAgLTE3NCw3ICsyMTcs
NyBAQCB2b2lkIElucHV0TWV0aG9kRmlsdGVyOjpwcmVlZGl0U3RhcnRlZCgpCiAKIHZvaWQgSW5w
dXRNZXRob2RGaWx0ZXI6OnByZWVkaXRDaGFuZ2VkKCkKIHsKLSAgICBpZiAoIW1fZW5hYmxlZCkK
KyAgICBpZiAoIWlzRW5hYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV9maWx0
ZXJpbmdDb250ZXh0LmlzQWN0aXZlKQpAQCAtMjA4LDcgKzI1MSw3IEBAIHZvaWQgSW5wdXRNZXRo
b2RGaWx0ZXI6OnByZWVkaXRDaGFuZ2VkKCkKIAogdm9pZCBJbnB1dE1ldGhvZEZpbHRlcjo6cHJl
ZWRpdEZpbmlzaGVkKCkKIHsKLSAgICBpZiAoIW1fZW5hYmxlZCkKKyAgICBpZiAoIWlzRW5hYmxl
ZCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV9maWx0ZXJpbmdDb250ZXh0LmlzQWN0
aXZlKQpAQCAtMjI3LDcgKzI3MCw3IEBAIHZvaWQgSW5wdXRNZXRob2RGaWx0ZXI6OnByZWVkaXRG
aW5pc2hlZCgpCiAKIHZvaWQgSW5wdXRNZXRob2RGaWx0ZXI6OmNvbW1pdHRlZChjb25zdCBjaGFy
KiBjb21wb3NpdGlvblN0cmluZykKIHsKLSAgICBpZiAoIW1fZW5hYmxlZCkKKyAgICBpZiAoIWlz
RW5hYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBtX2NvbXBvc2l0aW9uUmVzdWx0ID0g
U3RyaW5nOjpmcm9tVVRGOChjb21wb3NpdGlvblN0cmluZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JbnB1dE1ldGhvZEZpbHRlci5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSW5wdXRNZXRob2RGaWx0ZXIuaAppbmRleCBkNzIzZjM1
YzcwMC4uMTIzMTAzOGE2ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9nbGliL0lucHV0TWV0aG9kRmlsdGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2dsaWIvSW5wdXRNZXRob2RGaWx0ZXIuaApAQCAtMTksNiArMTksNyBAQAogCiAjcHJhZ21h
IG9uY2UKIAorI2luY2x1ZGUgIklucHV0TWV0aG9kU3RhdGUuaCIKICNpbmNsdWRlIDxXZWJDb3Jl
L0NvbXBvc2l0aW9uVW5kZXJsaW5lLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRQb2ludC5oPgog
I2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgpAQCAtNDksNyArNTAsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzZXRDb250ZXh0KFdlYktpdElucHV0TWV0aG9kQ29udGV4dCopOwogICAgIFdlYktp
dElucHV0TWV0aG9kQ29udGV4dCogY29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dC5n
ZXQoKTsgfQogCi0gICAgdm9pZCBzZXRFbmFibGVkKGJvb2wpOworICAgIHZvaWQgc2V0U3RhdGUo
T3B0aW9uYWw8SW5wdXRNZXRob2RTdGF0ZT4mJik7CiAKICNpZiBQTEFURk9STShHVEspCiAgICAg
dXNpbmcgUGxhdGZvcm1FdmVudEtleSA9IEdka0V2ZW50S2V5OwpAQCAtODAsMTIgKzgxLDEzIEBA
IHByaXZhdGU6CiAgICAgdm9pZCBwcmVlZGl0RmluaXNoZWQoKTsKICAgICB2b2lkIGNvbW1pdHRl
ZChjb25zdCBjaGFyKik7CiAKKyAgICBib29sIGlzRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuICEh
bV9zdGF0ZTsgfQogICAgIGJvb2wgaXNWaWV3Rm9jdXNlZCgpIGNvbnN0OwogCiAgICAgV2ViQ29y
ZTo6SW50UmVjdCBwbGF0Zm9ybVRyYW5zZm9ybUN1cnNvclJlY3RUb1ZpZXdDb29yZGluYXRlcyhj
b25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7CiAgICAgYm9vbCBwbGF0Zm9ybUV2ZW50S2V5SXNLZXlQ
cmVzcyhQbGF0Zm9ybUV2ZW50S2V5KikgY29uc3Q7CiAKLSAgICBib29sIG1fZW5hYmxlZCB7IGZh
bHNlIH07CisgICAgT3B0aW9uYWw8SW5wdXRNZXRob2RTdGF0ZT4gbV9zdGF0ZTsKICAgICBHUmVm
UHRyPFdlYktpdElucHV0TWV0aG9kQ29udGV4dD4gbV9jb250ZXh0OwogCiAgICAgc3RydWN0IHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdElucHV0
TWV0aG9kQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRJbnB1dE1ldGhvZENvbnRleHQuY3BwCmluZGV4IGNhZjc3MjFmOTg1Li4xN2NjM2M5NDY2YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0SW5wdXRN
ZXRob2RDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9X
ZWJLaXRJbnB1dE1ldGhvZENvbnRleHQuY3BwCkBAIC0yMCw4ICsyMCwxMCBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYktpdElucHV0TWV0aG9kQ29udGV4dC5oIgogCisjaW5j
bHVkZSAiV2ViS2l0RW51bVR5cGVzLmgiCiAjaW5jbHVkZSAiV2ViS2l0SW5wdXRNZXRob2RDb250
ZXh0UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFdlYlZpZXcuaCIKKyNpbmNsdWRlIDxnbGli
L2dpMThuLWxpYi5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL1dURkdUeXBlLmg+CiAKIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwpAQCAtNDQsNiArNDYsMTMgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CiAgKiBTaW5jZTogMi4yOAogICovCiAKK2VudW0geworICAgIFBST1BfMCwKKworICAgIFBS
T1BfSU5QVVRfUFVSUE9TRSwKKyAgICBQUk9QX0lOUFVUX0hJTlRTCit9OworCiBlbnVtIHsKICAg
ICBQUkVFRElUX1NUQVJURUQsCiAgICAgUFJFRURJVF9DSEFOR0VELApAQCAtMTE2LDYgKzEyNSw4
IEBAIHZvaWQgd2Via2l0X2lucHV0X21ldGhvZF91bmRlcmxpbmVfZnJlZShXZWJLaXRJbnB1dE1l
dGhvZFVuZGVybGluZSogdW5kZXJsaW5lKQogCiBzdHJ1Y3QgX1dlYktpdElucHV0TWV0aG9kQ29u
dGV4dFByaXZhdGUgewogICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXc7CisgICAgV2ViS2l0SW5w
dXRQdXJwb3NlIHB1cnBvc2U7CisgICAgV2ViS2l0SW5wdXRIaW50cyBoaW50czsKIH07CiAKIHN0
YXRpYyBndWludCBzaWduYWxzW0xBU1RfU0lHTkFMXSA9IHsgMCwgfTsKQEAgLTE1Myw4ICsxNjQs
ODAgQEAgV0VCS0lUX0RFRklORV9BQlNUUkFDVF9UWVBFKFdlYktpdElucHV0TWV0aG9kQ29udGV4
dCwgd2Via2l0X2lucHV0X21ldGhvZF9jb250ZXgKICAqIFNpbmNlOiAyLjI4CiAgKi8KIAorc3Rh
dGljIHZvaWQgd2Via2l0SW5wdXRNZXRob2RDb250ZXh0U2V0UHJvcGVydHkoR09iamVjdCogb2Jq
ZWN0LCBndWludCBwcm9wSWQsIGNvbnN0IEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBhcmFt
U3BlYykKK3sKKyAgICBXZWJLaXRJbnB1dE1ldGhvZENvbnRleHQqIGNvbnRleHQgPSBXRUJLSVRf
SU5QVVRfTUVUSE9EX0NPTlRFWFQob2JqZWN0KTsKKworICAgIHN3aXRjaCAocHJvcElkKSB7Cisg
ICAgY2FzZSBQUk9QX0lOUFVUX1BVUlBPU0U6CisgICAgICAgIHdlYmtpdF9pbnB1dF9tZXRob2Rf
Y29udGV4dF9zZXRfaW5wdXRfcHVycG9zZShjb250ZXh0LCBzdGF0aWNfY2FzdDxXZWJLaXRJbnB1
dFB1cnBvc2U+KGdfdmFsdWVfZ2V0X2VudW0odmFsdWUpKSk7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgUFJPUF9JTlBVVF9ISU5UUzoKKyAgICAgICAgd2Via2l0X2lucHV0X21ldGhvZF9jb250
ZXh0X3NldF9pbnB1dF9oaW50cyhjb250ZXh0LCBzdGF0aWNfY2FzdDxXZWJLaXRJbnB1dEhpbnRz
PihnX3ZhbHVlX2dldF9mbGFncyh2YWx1ZSkpKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVs
dDoKKyAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJv
cElkLCBwYXJhbVNwZWMpOworICAgIH0KK30KKworc3RhdGljIHZvaWQgd2Via2l0SW5wdXRNZXRo
b2RDb250ZXh0R2V0UHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wSWQsIEdWYWx1
ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBhcmFtU3BlYykKK3sKKyAgICBXZWJLaXRJbnB1dE1ldGhv
ZENvbnRleHQqIGNvbnRleHQgPSBXRUJLSVRfSU5QVVRfTUVUSE9EX0NPTlRFWFQob2JqZWN0KTsK
KworICAgIHN3aXRjaCAocHJvcElkKSB7CisgICAgY2FzZSBQUk9QX0lOUFVUX1BVUlBPU0U6Cisg
ICAgICAgIGdfdmFsdWVfc2V0X2VudW0odmFsdWUsIHdlYmtpdF9pbnB1dF9tZXRob2RfY29udGV4
dF9nZXRfaW5wdXRfcHVycG9zZShjb250ZXh0KSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
UFJPUF9JTlBVVF9ISU5UUzoKKyAgICAgICAgZ192YWx1ZV9zZXRfZmxhZ3ModmFsdWUsIHdlYmtp
dF9pbnB1dF9tZXRob2RfY29udGV4dF9nZXRfaW5wdXRfaGludHMoY29udGV4dCkpOworICAgICAg
ICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJP
UEVSVFlfSUQob2JqZWN0LCBwcm9wSWQsIHBhcmFtU3BlYyk7CisgICAgfQorfQorCiBzdGF0aWMg
dm9pZCB3ZWJraXRfaW5wdXRfbWV0aG9kX2NvbnRleHRfY2xhc3NfaW5pdChXZWJLaXRJbnB1dE1l
dGhvZENvbnRleHRDbGFzcyoga2xhc3MpCiB7CisgICAgR09iamVjdENsYXNzKiBnT2JqZWN0Q2xh
c3MgPSBHX09CSkVDVF9DTEFTUyhrbGFzcyk7CisgICAgZ09iamVjdENsYXNzLT5zZXRfcHJvcGVy
dHkgPSB3ZWJraXRJbnB1dE1ldGhvZENvbnRleHRTZXRQcm9wZXJ0eTsKKyAgICBnT2JqZWN0Q2xh
c3MtPmdldF9wcm9wZXJ0eSA9IHdlYmtpdElucHV0TWV0aG9kQ29udGV4dEdldFByb3BlcnR5Owor
CisgICAgLyoqCisgICAgICogV2ViS2l0SW5wdXRNZXRob2RDb250ZXh0OjppbnB1dC1wdXJwb3Nl
OgorICAgICAqCisgICAgICogVGhlICNXZWJLaXRJbnB1dFB1cnBvc2Ugb2YgdGhlIGlucHV0IGFz
c29jaWF0ZWQgd2l0aCB0aGlzIGNvbnRleHQuCisgICAgICoKKyAgICAgKiBTaW5jZTogMi4yOAor
ICAgICAqLworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCisgICAgICAgIGdP
YmplY3RDbGFzcywKKyAgICAgICAgUFJPUF9JTlBVVF9QVVJQT1NFLAorICAgICAgICBnX3BhcmFt
X3NwZWNfZW51bSgKKyAgICAgICAgICAgICJpbnB1dC1wdXJwb3NlIiwKKyAgICAgICAgICAgIF8o
IklucHV0IFB1cnBvc2UiKSwKKyAgICAgICAgICAgIF8oIlRoZSBwdXJwb3NlIG9mIHRoZSBpbnB1
dCBhc3NvY2lhdGVkIiksCisgICAgICAgICAgICBXRUJLSVRfVFlQRV9JTlBVVF9QVVJQT1NFLAor
ICAgICAgICAgICAgV0VCS0lUX0lOUFVUX1BVUlBPU0VfRlJFRV9GT1JNLAorICAgICAgICAgICAg
V0VCS0lUX1BBUkFNX1JFQURXUklURSkpOworCisgICAgLyoqCisgICAgICogV2ViS2l0SW5wdXRN
ZXRob2RDb250ZXh0OjppbnB1dC1oaW50czoKKyAgICAgKgorICAgICAqIFRoZSAjV2ViS2l0SW5w
dXRIaW50cyBvZiB0aGUgaW5wdXQgYXNzb2NpYXRlZCB3aXRoIHRoaXMgY29udGV4dC4KKyAgICAg
KgorICAgICAqIFNpbmNlOiAyLjI4CisgICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFs
bF9wcm9wZXJ0eSgKKyAgICAgICAgZ09iamVjdENsYXNzLAorICAgICAgICBQUk9QX0lOUFVUX0hJ
TlRTLAorICAgICAgICBnX3BhcmFtX3NwZWNfZmxhZ3MoCisgICAgICAgICAgICAiaW5wdXQtaGlu
dHMiLAorICAgICAgICAgICAgXygiSW5wdXQgSGludHMiKSwKKyAgICAgICAgICAgIF8oIlRoZSBo
aW50cyBvZiB0aGUgaW5wdXQgYXNzb2NpYXRlZCIpLAorICAgICAgICAgICAgV0VCS0lUX1RZUEVf
SU5QVVRfSElOVFMsCisgICAgICAgICAgICBXRUJLSVRfSU5QVVRfSElOVF9OT05FLAorICAgICAg
ICAgICAgV0VCS0lUX1BBUkFNX1JFQURXUklURSkpOworCiAgICAgLyoqCiAgICAgICogV2ViS2l0
SW5wdXRNZXRob2RDb250ZXh0OjpwcmVlZGl0LXN0YXJ0ZWQKICAgICAgKiBAY29udGV4dDogdGhl
ICNXZWJLaXRJbnB1dE1ldGhvZENvbnRleHQgb24gd2hpY2ggdGhlIHNpZ25hbCBpcyBlbWl0dGVk
CkBAIC0zNTksMyArNDQyLDc3IEBAIHZvaWQgd2Via2l0X2lucHV0X21ldGhvZF9jb250ZXh0X3Jl
c2V0KFdlYktpdElucHV0TWV0aG9kQ29udGV4dCogY29udGV4dCkKICAgICBpZiAoaW1DbGFzcy0+
cmVzZXQpCiAgICAgICAgIGltQ2xhc3MtPnJlc2V0KGNvbnRleHQpOwogfQorCisvKioKKyAqIHdl
YmtpdF9pbnB1dF9tZXRob2RfY29udGV4dF9nZXRfaW5wdXRfcHVycG9zZToKKyAqIEBjb250ZXh0
OiBhICNXZWJLaXRJbnB1dE1ldGhvZENvbnRleHQKKyAqCisgKiBHZXQgdGhlIHZhbHVlIG9mIHRo
ZSAjV2ViS2l0SW5wdXRNZXRob2RDb250ZXh0OmlucHV0LXB1cnBvc2UgcHJvcGVydHkuCisgKgor
ICogUmV0dXJuczogdGhlICNXZWJLaXRJbnB1dFB1cnBvc2Ugb2YgdGhlIGlucHV0IGFzc29jaWF0
ZWQgd2l0aCBAY29udGV4dAorICoKKyAqIFNpbmNlOiAyLjI4CisgKi8KK1dlYktpdElucHV0UHVy
cG9zZSB3ZWJraXRfaW5wdXRfbWV0aG9kX2NvbnRleHRfZ2V0X2lucHV0X3B1cnBvc2UoV2ViS2l0
SW5wdXRNZXRob2RDb250ZXh0KiBjb250ZXh0KQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWls
KFdFQktJVF9JU19JTlBVVF9NRVRIT0RfQ09OVEVYVChjb250ZXh0KSwgV0VCS0lUX0lOUFVUX1BV
UlBPU0VfRlJFRV9GT1JNKTsKKworICAgIHJldHVybiBjb250ZXh0LT5wcml2LT5wdXJwb3NlOwor
fQorCisvKioKKyAqIHdlYmtpdF9pbnB1dF9tZXRob2RfY29udGV4dF9zZXRfaW5wdXRfcHVycG9z
ZToKKyAqIEBjb250ZXh0OiBhICNXZWJLaXRJbnB1dE1ldGhvZENvbnRleHQKKyAqIEBwdXJwb3Nl
OiBhICNXZWJLaXRJbnB1dFB1cnBvc2UKKyAqCisgKiBTZXQgdGhlIHZhbHVlIG9mIHRoZSAjV2Vi
S2l0SW5wdXRNZXRob2RDb250ZXh0OmlucHV0LXB1cnBvc2UgcHJvcGVydHkuCisgKgorICogU2lu
Y2U6IDIuMjgKKyAqLwordm9pZCB3ZWJraXRfaW5wdXRfbWV0aG9kX2NvbnRleHRfc2V0X2lucHV0
X3B1cnBvc2UoV2ViS2l0SW5wdXRNZXRob2RDb250ZXh0KiBjb250ZXh0LCBXZWJLaXRJbnB1dFB1
cnBvc2UgcHVycG9zZSkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19JTlBVVF9N
RVRIT0RfQ09OVEVYVChjb250ZXh0KSk7CisKKyAgICBpZiAoY29udGV4dC0+cHJpdi0+cHVycG9z
ZSA9PSBwdXJwb3NlKQorICAgICAgICByZXR1cm47CisKKyAgICBjb250ZXh0LT5wcml2LT5wdXJw
b3NlID0gcHVycG9zZTsKKyAgICBnX29iamVjdF9ub3RpZnkoR19PQkpFQ1QoY29udGV4dCksICJp
bnB1dC1wdXJwb3NlIik7Cit9CisKKy8qKgorICogd2Via2l0X2lucHV0X21ldGhvZF9jb250ZXh0
X2dldF9pbnB1dF9oaW50czoKKyAqIEBjb250ZXh0OiBhICNXZWJLaXRJbnB1dE1ldGhvZENvbnRl
eHQKKyAqCisgKiBHZXQgdGhlIHZhbHVlIG9mIHRoZSAjV2ViS2l0SW5wdXRNZXRob2RDb250ZXh0
OmlucHV0LWhpbnRzIHByb3BlcnR5LgorICoKKyAqIFJldHVybnM6IHRoZSAjV2ViS2l0SW5wdXRI
aW50cyBvZiB0aGUgaW5wdXQgYXNzb2NpYXRlZCB3aXRoIEBjb250ZXh0CisgKgorICogU2luY2U6
IDIuMjgKKyAqLworV2ViS2l0SW5wdXRIaW50cyB3ZWJraXRfaW5wdXRfbWV0aG9kX2NvbnRleHRf
Z2V0X2lucHV0X2hpbnRzKFdlYktpdElucHV0TWV0aG9kQ29udGV4dCogY29udGV4dCkKK3sKKyAg
ICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfSU5QVVRfTUVUSE9EX0NPTlRFWFQoY29u
dGV4dCksIFdFQktJVF9JTlBVVF9ISU5UX05PTkUpOworCisgICAgcmV0dXJuIGNvbnRleHQtPnBy
aXYtPmhpbnRzOworfQorCisvKgorICogd2Via2l0X2lucHV0X21ldGhvZF9jb250ZXh0X3NldF9p
bnB1dF9oaW50czoKKyAqIEBjb250ZXh0OiBhICNXZWJLaXRJbnB1dE1ldGhvZENvbnRleHQKKyAq
IEBoaW50czogYSAjV2ViS2l0SW5wdXRIaW50cworICoKKyAqIFNldCB0aGUgdmFsdWUgb2YgdGhl
ICNXZWJLaXRJbnB1dE1ldGhvZENvbnRleHQ6aW5wdXQtaGludHMgcHJvcGVydHkuCisgKgorICog
U2luY2U6IDIuMjgKKyAqLwordm9pZCB3ZWJraXRfaW5wdXRfbWV0aG9kX2NvbnRleHRfc2V0X2lu
cHV0X2hpbnRzKFdlYktpdElucHV0TWV0aG9kQ29udGV4dCogY29udGV4dCwgV2ViS2l0SW5wdXRI
aW50cyBoaW50cykKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19JTlBVVF9NRVRI
T0RfQ09OVEVYVChjb250ZXh0KSk7CisKKyAgICBpZiAoY29udGV4dC0+cHJpdi0+aGludHMgPT0g
aGludHMpCisgICAgICAgIHJldHVybjsKKworICAgIGNvbnRleHQtPnByaXYtPmhpbnRzID0gaGlu
dHM7CisgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKGNvbnRleHQpLCAiaW5wdXQtaGludHMi
KTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
SW5wdXRNZXRob2RDb250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdElucHV0TWV0aG9kQ29udGV4dC5oCmluZGV4IGI2OWYzMTAxMTMxLi5jZjIxMWFmZWUyYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRJbnB1dE1l
dGhvZENvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dElucHV0TWV0aG9kQ29udGV4dC5oCkBAIC0zOSw2ICszOSw1NCBAQCBHX0JFR0lOX0RFQ0xTCiAK
ICNkZWZpbmUgV0VCS0lUX1RZUEVfSU5QVVRfTUVUSE9EX1VOREVSTElORSAgICAgICAgICAod2Vi
a2l0X2lucHV0X21ldGhvZF91bmRlcmxpbmVfZ2V0X3R5cGUoKSkKIAorLyoqCisgKiBXZWJLaXRJ
bnB1dFB1cnBvc2U6CisgKiBAV0VCS0lUX0lOUFVUX1BVUlBPU0VfRlJFRV9GT1JNOiBFZGl0YWJs
ZSBlbGVtZW50IGV4cGVjdHMgYW55IGNoYXJhY3RlcnMKKyAqIEBXRUJLSVRfSU5QVVRfUFVSUE9T
RV9ESUdJVFM6IEVkaXRhYmxlIGVsZW1lbnQgZXhwZWN0cyBkaWdpdHMKKyAqIEBXRUJLSVRfSU5Q
VVRfUFVSUE9TRV9OVU1CRVI6IEVkaXRhYmxlIGVsZW1lbnQgZXhwZWN0cyBhIG51bWJlcgorICog
QFdFQktJVF9JTlBVVF9QVVJQT1NFX1BIT05FOiBFZGl0YWJsZSBlbGVtZW50IGV4cGVjdHMgYSB0
ZWxlcGhvbmUKKyAqIEBXRUJLSVRfSU5QVVRfUFVSUE9TRV9VUkw6IEVkaXRhYmxlIGVsZW1lbnQg
ZXhwZWN0cyBhIFVSTAorICogQFdFQktJVF9JTlBVVF9QVVJQT1NFX0VNQUlMOiBFZGl0YWJsZSBl
bGVtZW50IGV4cGVjdHMgYW4gZW1haWwKKyAqIEBXRUJLSVRfSU5QVVRfUFVSUE9TRV9QQVNTV09S
RDogRWRpdGFibGUgZWxlbWVudCBleHBlY3RzIGEgcGFzc3dvcmQKKyAqCisgKiBFbnVtIHZhbHVl
cyB1c2VkIHRvIGRlc2NyaWJlIHRoZSBwcmltYXJ5IHB1cnBvc2Ugb2YgdGhlIGFjdGl2ZSBlZGl0
YWJsZSBlbGVtZW50LgorICoKKyAqIFNpbmNlOiAyLjI4CisgKi8KK3R5cGVkZWYgZW51bSB7Cisg
ICAgV0VCS0lUX0lOUFVUX1BVUlBPU0VfRlJFRV9GT1JNLAorICAgIFdFQktJVF9JTlBVVF9QVVJQ
T1NFX0RJR0lUUywKKyAgICBXRUJLSVRfSU5QVVRfUFVSUE9TRV9OVU1CRVIsCisgICAgV0VCS0lU
X0lOUFVUX1BVUlBPU0VfUEhPTkUsCisgICAgV0VCS0lUX0lOUFVUX1BVUlBPU0VfVVJMLAorICAg
IFdFQktJVF9JTlBVVF9QVVJQT1NFX0VNQUlMLAorICAgIFdFQktJVF9JTlBVVF9QVVJQT1NFX1BB
U1NXT1JECit9IFdlYktpdElucHV0UHVycG9zZTsKKworLyoqCisgKiBXZWJLaXRJbnB1dEhpbnRz
OgorICogQFdFQktJVF9JTlBVVF9ISU5UX05PTkU6IE5vIHNwZWNpYWwgYmVoYXZpb3Igc3VnZ2Vz
dGVkCisgKiBAV0VCS0lUX0lOUFVUX0hJTlRfU1BFTExDSEVDSzogU3VnZ2VzdCBzcGVsbCBjaGVj
a2luZworICogQFdFQktJVF9JTlBVVF9ISU5UX0xPV0VSQ0FTRTogU3VnZ2VzdCB0byBub3QgYXV0
b2NhcGl0bGl6ZQorICogQFdFQktJVF9JTlBVVF9ISU5UX1VQUEVSQ0FTRV9DSEFSUzogU3VnZ2Vz
dCB0byBjYXBpdGFsaXplIGFsbCB0ZXh0CisgKiBAV0VCS0lUX0lOUFVUX0hJTlRfVVBQRVJDQVNF
X1dPUkRTOiBTdWdnZXN0IHRvIGNhcGl0YWxpemUgdGhlIGZpcnN0IGNoYXJhY3RlciBvZiBlYWNo
IHdvcmQKKyAqIEBXRUJLSVRfSU5QVVRfSElOVF9VUFBFUkNBU0VfU0VOVEVOQ0VTOiBTdWdnZXN0
IHRvIGNhcGl0YWxpemUgdGhlIGZpcnN0IHdvcmQgb2YgZWFjaCBzZW50ZW5jZQorICogQFdFQktJ
VF9JTlBVVF9ISU5UX0lOSElCSVRfT1NLOiBTdWdnZXN0IHRvIG5vdCBzaG93IGFuIG9uc2NyZWVu
IGtleWJvYXJkCisgKgorICogRW51bSB2YWx1ZXMgdXNlZCB0byBkZXNjcmliZSBoaW50cyB0aGF0
IG1pZ2h0IGJlIHRha2VuIGludG8gYWNjb3VudCBieSBpbnB1dCBtZXRob2RzLgorICoKKyAqIFNp
bmNlOiAyLjI4CisgKi8KK3R5cGVkZWYgZW51bSB7CisgICAgV0VCS0lUX0lOUFVUX0hJTlRfTk9O
RSAgICAgICAgICAgICAgICA9IDAsCisgICAgV0VCS0lUX0lOUFVUX0hJTlRfU1BFTExDSEVDSyAg
ICAgICAgICA9IDEgPDwgMCwKKyAgICBXRUJLSVRfSU5QVVRfSElOVF9MT1dFUkNBU0UgICAgICAg
ICAgID0gMSA8PCAxLAorICAgIFdFQktJVF9JTlBVVF9ISU5UX1VQUEVSQ0FTRV9DSEFSUyAgICAg
PSAxIDw8IDIsCisgICAgV0VCS0lUX0lOUFVUX0hJTlRfVVBQRVJDQVNFX1dPUkRTICAgICA9IDEg
PDwgMywKKyAgICBXRUJLSVRfSU5QVVRfSElOVF9VUFBFUkNBU0VfU0VOVEVOQ0VTID0gMSA8PCA0
LAorICAgIFdFQktJVF9JTlBVVF9ISU5UX0lOSElCSVRfT1NLICAgICAgICAgPSAxIDw8IDUKK30g
V2ViS2l0SW5wdXRIaW50czsKKwogdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdElucHV0TWV0aG9kQ29u
dGV4dCAgICAgICAgV2ViS2l0SW5wdXRNZXRob2RDb250ZXh0OwogdHlwZWRlZiBzdHJ1Y3QgX1dl
YktpdElucHV0TWV0aG9kQ29udGV4dENsYXNzICAgV2ViS2l0SW5wdXRNZXRob2RDb250ZXh0Q2xh
c3M7CiB0eXBlZGVmIHN0cnVjdCBfV2ViS2l0SW5wdXRNZXRob2RDb250ZXh0UHJpdmF0ZSBXZWJL
aXRJbnB1dE1ldGhvZENvbnRleHRQcml2YXRlOwpAQCAtMTQwLDYgKzE4OCwyMCBAQCBXRUJLSVRf
QVBJIHZvaWQKIHdlYmtpdF9pbnB1dF9tZXRob2RfdW5kZXJsaW5lX3NldF9jb2xvciAgICAgICAg
KFdlYktpdElucHV0TWV0aG9kVW5kZXJsaW5lICp1bmRlcmxpbmUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHZGtSR0JBICAgICAgICAgICAg
ICAqcmdiYSk7CiAKK1dFQktJVF9BUEkgV2ViS2l0SW5wdXRQdXJwb3NlCit3ZWJraXRfaW5wdXRf
bWV0aG9kX2NvbnRleHRfZ2V0X2lucHV0X3B1cnBvc2UgIChXZWJLaXRJbnB1dE1ldGhvZENvbnRl
eHQgICAqY29udGV4dCk7CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X2lucHV0X21ldGhvZF9j
b250ZXh0X3NldF9pbnB1dF9wdXJwb3NlICAoV2ViS2l0SW5wdXRNZXRob2RDb250ZXh0ICAgKmNv
bnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBX
ZWJLaXRJbnB1dFB1cnBvc2UgICAgICAgICAgcHVycG9zZSk7CisKK1dFQktJVF9BUEkgV2ViS2l0
SW5wdXRIaW50cword2Via2l0X2lucHV0X21ldGhvZF9jb250ZXh0X2dldF9pbnB1dF9oaW50cyAg
ICAoV2ViS2l0SW5wdXRNZXRob2RDb250ZXh0ICAgKmNvbnRleHQpOworCitXRUJLSVRfQVBJIHZv
aWQKK3dlYmtpdF9pbnB1dF9tZXRob2RfY29udGV4dF9zZXRfaW5wdXRfaGludHMgICAgKFdlYktp
dElucHV0TWV0aG9kQ29udGV4dCAgICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0SW5wdXRIaW50cyAgICAgICAgICAgIGhpbnRz
KTsKKwogCiBHX0VORF9ERUNMUwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdElucHV0TWV0aG9kQ29udGV4dEltcGxHdGsuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRJbnB1dE1ldGhvZENvbnRleHRJbXBsR3RrLmNw
cAppbmRleCA5NDUzODYwMTQ3Yy4uMTkxZjk4ZDdhOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0SW5wdXRNZXRob2RDb250ZXh0SW1wbEd0ay5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRJbnB1dE1ldGhvZENv
bnRleHRJbXBsR3RrLmNwcApAQCAtMzEsNiArMzEsNTYgQEAgc3RydWN0IF9XZWJLaXRJbnB1dE1l
dGhvZENvbnRleHRJbXBsR3RrUHJpdmF0ZSB7CiAKIFdFQktJVF9ERUZJTkVfVFlQRShXZWJLaXRJ
bnB1dE1ldGhvZENvbnRleHRJbXBsR3RrLCB3ZWJraXRfaW5wdXRfbWV0aG9kX2NvbnRleHRfaW1w
bF9ndGssIFdFQktJVF9UWVBFX0lOUFVUX01FVEhPRF9DT05URVhUKQogCitzdGF0aWMgR3RrSW5w
dXRQdXJwb3NlIHRvR3RrSW5wdXRQdXJwb3NlKFdlYktpdElucHV0UHVycG9zZSBwdXJwb3NlKQor
eworICAgIHN3aXRjaCAocHVycG9zZSkgeworICAgIGNhc2UgV0VCS0lUX0lOUFVUX1BVUlBPU0Vf
RlJFRV9GT1JNOgorICAgICAgICByZXR1cm4gR1RLX0lOUFVUX1BVUlBPU0VfRlJFRV9GT1JNOwor
ICAgIGNhc2UgV0VCS0lUX0lOUFVUX1BVUlBPU0VfRElHSVRTOgorICAgICAgICByZXR1cm4gR1RL
X0lOUFVUX1BVUlBPU0VfRElHSVRTOworICAgIGNhc2UgV0VCS0lUX0lOUFVUX1BVUlBPU0VfTlVN
QkVSOgorICAgICAgICByZXR1cm4gR1RLX0lOUFVUX1BVUlBPU0VfTlVNQkVSOworICAgIGNhc2Ug
V0VCS0lUX0lOUFVUX1BVUlBPU0VfUEhPTkU6CisgICAgICAgIHJldHVybiBHVEtfSU5QVVRfUFVS
UE9TRV9QSE9ORTsKKyAgICBjYXNlIFdFQktJVF9JTlBVVF9QVVJQT1NFX1VSTDoKKyAgICAgICAg
cmV0dXJuIEdUS19JTlBVVF9QVVJQT1NFX1VSTDsKKyAgICBjYXNlIFdFQktJVF9JTlBVVF9QVVJQ
T1NFX0VNQUlMOgorICAgICAgICByZXR1cm4gR1RLX0lOUFVUX1BVUlBPU0VfRU1BSUw7CisgICAg
Y2FzZSBXRUJLSVRfSU5QVVRfUFVSUE9TRV9QQVNTV09SRDoKKyAgICAgICAgcmV0dXJuIEdUS19J
TlBVVF9QVVJQT1NFX1BBU1NXT1JEOworICAgIH0KKworICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7Cit9CisKK3N0YXRpYyBHdGtJbnB1dEhpbnRzIHRvR3RrSW5wdXRIaW50cyhXZWJL
aXRJbnB1dEhpbnRzIGhpbnRzKQoreworICAgIHVuc2lnbmVkIGd0a0hpbnRzID0gMDsKKyAgICBp
ZiAoaGludHMgJiBXRUJLSVRfSU5QVVRfSElOVF9TUEVMTENIRUNLKQorICAgICAgICBndGtIaW50
cyB8PSBHVEtfSU5QVVRfSElOVF9TUEVMTENIRUNLOworICAgIGlmIChoaW50cyAmIFdFQktJVF9J
TlBVVF9ISU5UX0xPV0VSQ0FTRSkKKyAgICAgICAgZ3RrSGludHMgfD0gR1RLX0lOUFVUX0hJTlRf
TE9XRVJDQVNFOworICAgIGlmIChoaW50cyAmIFdFQktJVF9JTlBVVF9ISU5UX1VQUEVSQ0FTRV9D
SEFSUykKKyAgICAgICAgZ3RrSGludHMgfD0gR1RLX0lOUFVUX0hJTlRfVVBQRVJDQVNFX0NIQVJT
OworICAgIGlmIChoaW50cyAmIFdFQktJVF9JTlBVVF9ISU5UX1VQUEVSQ0FTRV9XT1JEUykKKyAg
ICAgICAgZ3RrSGludHMgfD0gR1RLX0lOUFVUX0hJTlRfVVBQRVJDQVNFX1dPUkRTOworICAgIGlm
IChoaW50cyAmIFdFQktJVF9JTlBVVF9ISU5UX1VQUEVSQ0FTRV9TRU5URU5DRVMpCisgICAgICAg
IGd0a0hpbnRzIHw9IEdUS19JTlBVVF9ISU5UX1VQUEVSQ0FTRV9TRU5URU5DRVM7CisgICAgaWYg
KGhpbnRzICYgV0VCS0lUX0lOUFVUX0hJTlRfSU5ISUJJVF9PU0spCisgICAgICAgIGd0a0hpbnRz
IHw9IEdUS19JTlBVVF9ISU5UX0lOSElCSVRfT1NLOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxH
dGtJbnB1dEhpbnRzPihndGtIaW50cyk7Cit9CisKK3N0YXRpYyB2b2lkIGlucHV0UHVycG9zZUNo
YW5nZWRDYWxsYmFjayhXZWJLaXRJbnB1dE1ldGhvZENvbnRleHRJbXBsR3RrKiBjb250ZXh0KQor
eworICAgIGdfb2JqZWN0X3NldChjb250ZXh0LT5wcml2LT5jb250ZXh0LmdldCgpLCAiaW5wdXQt
cHVycG9zZSIsIHRvR3RrSW5wdXRQdXJwb3NlKHdlYmtpdF9pbnB1dF9tZXRob2RfY29udGV4dF9n
ZXRfaW5wdXRfcHVycG9zZShXRUJLSVRfSU5QVVRfTUVUSE9EX0NPTlRFWFQoY29udGV4dCkpKSwg
bnVsbHB0cik7Cit9CisKK3N0YXRpYyB2b2lkIGlucHV0SGludHNDaGFuZ2VkQ2FsbGJhY2soV2Vi
S2l0SW5wdXRNZXRob2RDb250ZXh0SW1wbEd0ayogY29udGV4dCkKK3sKKyAgICBnX29iamVjdF9z
ZXQoY29udGV4dC0+cHJpdi0+Y29udGV4dC5nZXQoKSwgImlucHV0LWhpbnRzIiwgdG9HdGtJbnB1
dEhpbnRzKHdlYmtpdF9pbnB1dF9tZXRob2RfY29udGV4dF9nZXRfaW5wdXRfaGludHMoV0VCS0lU
X0lOUFVUX01FVEhPRF9DT05URVhUKGNvbnRleHQpKSksIG51bGxwdHIpOworfQorCiBzdGF0aWMg
dm9pZCBjb250ZXh0UHJlZWRpdFN0YXJ0Q2FsbGJhY2soV2ViS2l0SW5wdXRNZXRob2RDb250ZXh0
SW1wbEd0ayogY29udGV4dCkKIHsKICAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUoY29udGV4dCwg
InByZWVkaXQtc3RhcnRlZCIsIG51bGxwdHIpOwpAQCAtNTUsNiArMTA1LDkgQEAgc3RhdGljIHZv
aWQgd2Via2l0SW5wdXRNZXRob2RDb250ZXh0SW1wbEd0a0NvbnN0cnVjdGVkKEdPYmplY3QqIG9i
amVjdCkKIHsKICAgICBHX09CSkVDVF9DTEFTUyh3ZWJraXRfaW5wdXRfbWV0aG9kX2NvbnRleHRf
aW1wbF9ndGtfcGFyZW50X2NsYXNzKS0+Y29uc3RydWN0ZWQob2JqZWN0KTsKIAorICAgIGdfc2ln
bmFsX2Nvbm5lY3Rfc3dhcHBlZChvYmplY3QsICJub3RpZnk6OmlucHV0LXB1cnBvc2UiLCBHX0NB
TExCQUNLKGlucHV0UHVycG9zZUNoYW5nZWRDYWxsYmFjayksIG9iamVjdCk7CisgICAgZ19zaWdu
YWxfY29ubmVjdF9zd2FwcGVkKG9iamVjdCwgIm5vdGlmeTo6aW5wdXQtaGludHMiLCBHX0NBTExC
QUNLKGlucHV0SGludHNDaGFuZ2VkQ2FsbGJhY2spLCBvYmplY3QpOworCiAgICAgYXV0byogcHJp
diA9IFdFQktJVF9JTlBVVF9NRVRIT0RfQ09OVEVYVF9JTVBMX0dUSyhvYmplY3QpLT5wcml2Owog
ICAgIHByaXYtPmNvbnRleHQgPSBhZG9wdEdSZWYoZ3RrX2ltX211bHRpY29udGV4dF9uZXcoKSk7
CiAgICAgZ19zaWduYWxfY29ubmVjdF9vYmplY3QocHJpdi0+Y29udGV4dC5nZXQoKSwgInByZWVk
aXQtc3RhcnQiLCBHX0NBTExCQUNLKGNvbnRleHRQcmVlZGl0U3RhcnRDYWxsYmFjayksIG9iamVj
dCwgR19DT05ORUNUX1NXQVBQRUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcAppbmRleCA5NDRkYjJlMjYzMS4uMGYxNDdl
ZDliZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
V2ViVmlld0Jhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0V2ViVmlld0Jhc2UuY3BwCkBAIC0xNjY2LDkgKzE2NjYsOSBAQCBib29sIHdlYmtpdFdlYlZp
ZXdCYXNlSXNJbldpbmRvdyhXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlld0Jhc2UpCiAgICAgcmV0
dXJuIHdlYlZpZXdCYXNlLT5wcml2LT5hY3Rpdml0eVN0YXRlLmNvbnRhaW5zKEFjdGl2aXR5U3Rh
dGU6OklzSW5XaW5kb3cpOwogfQogCi12b2lkIHdlYmtpdFdlYlZpZXdCYXNlU2V0SW5wdXRNZXRo
b2RTdGF0ZShXZWJLaXRXZWJWaWV3QmFzZSogd2Via2l0V2ViVmlld0Jhc2UsIGJvb2wgZW5hYmxl
ZCkKK3ZvaWQgd2Via2l0V2ViVmlld0Jhc2VTZXRJbnB1dE1ldGhvZFN0YXRlKFdlYktpdFdlYlZp
ZXdCYXNlKiB3ZWJraXRXZWJWaWV3QmFzZSwgT3B0aW9uYWw8SW5wdXRNZXRob2RTdGF0ZT4mJiBz
dGF0ZSkKIHsKLSAgICB3ZWJraXRXZWJWaWV3QmFzZS0+cHJpdi0+aW5wdXRNZXRob2RGaWx0ZXIu
c2V0RW5hYmxlZChlbmFibGVkKTsKKyAgICB3ZWJraXRXZWJWaWV3QmFzZS0+cHJpdi0+aW5wdXRN
ZXRob2RGaWx0ZXIuc2V0U3RhdGUoV1RGTW92ZShzdGF0ZSkpOwogfQogCiB2b2lkIHdlYmtpdFdl
YlZpZXdCYXNlVXBkYXRlVGV4dElucHV0U3RhdGUoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYmtpdFdl
YlZpZXdCYXNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlLmgKaW5kZXggZDY1YTYzYzFkZGEuLjFkZmUxODE2
ZTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdl
YlZpZXdCYXNlUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJB
UElQYWdlQ29uZmlndXJhdGlvbi5oIgogI2luY2x1ZGUgIkRyYWdBbmREcm9wSGFuZGxlci5oIgog
I2luY2x1ZGUgIkdlc3R1cmVDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiSW5wdXRNZXRob2RTdGF0
ZS5oIgogI2luY2x1ZGUgIlNhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlLmgiCiAjaW5jbHVkZSAi
Vmlld0dlc3R1cmVDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiVmlld1NuYXBzaG90U3RvcmUuaCIK
QEAgLTU1LDcgKzU2LDcgQEAgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZVNldEluc3BlY3RvclZpZXdT
aXplKFdlYktpdFdlYlZpZXdCYXNlKiwgdW5zaWduZWQgc2l6ZSk7CiB2b2lkIHdlYmtpdFdlYlZp
ZXdCYXNlU2V0QWN0aXZlQ29udGV4dE1lbnVQcm94eShXZWJLaXRXZWJWaWV3QmFzZSosIFdlYktp
dDo6V2ViQ29udGV4dE1lbnVQcm94eUd0ayopOwogV2ViS2l0OjpXZWJDb250ZXh0TWVudVByb3h5
R3RrKiB3ZWJraXRXZWJWaWV3QmFzZUdldEFjdGl2ZUNvbnRleHRNZW51UHJveHkoV2ViS2l0V2Vi
Vmlld0Jhc2UqKTsKIEdka0V2ZW50KiB3ZWJraXRXZWJWaWV3QmFzZVRha2VDb250ZXh0TWVudUV2
ZW50KFdlYktpdFdlYlZpZXdCYXNlKik7Ci12b2lkIHdlYmtpdFdlYlZpZXdCYXNlU2V0SW5wdXRN
ZXRob2RTdGF0ZShXZWJLaXRXZWJWaWV3QmFzZSosIGJvb2wgZW5hYmxlZCk7Cit2b2lkIHdlYmtp
dFdlYlZpZXdCYXNlU2V0SW5wdXRNZXRob2RTdGF0ZShXZWJLaXRXZWJWaWV3QmFzZSosIE9wdGlv
bmFsPFdlYktpdDo6SW5wdXRNZXRob2RTdGF0ZT4mJik7CiB2b2lkIHdlYmtpdFdlYlZpZXdCYXNl
VXBkYXRlVGV4dElucHV0U3RhdGUoV2ViS2l0V2ViVmlld0Jhc2UqKTsKIHZvaWQgd2Via2l0V2Vi
Vmlld0Jhc2VTZXRDb250ZW50c1NpemUoV2ViS2l0V2ViVmlld0Jhc2UqLCBjb25zdCBXZWJDb3Jl
OjpJbnRTaXplJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
dGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0CmluZGV4IGYxNDcx
YjU1MWI5Li41MjA2OTgwOGJkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0CkBA
IC0xNTYwLDYgKzE1NjAsOCBAQCBXRUJLSVRfVFlQRV9HRU9MT0NBVElPTl9QT1NJVElPTgogPFNF
Q1RJT04+CiA8RklMRT5XZWJLaXRJbnB1dE1ldGhvZENvbnRleHQ8L0ZJTEU+CiBXZWJLaXRJbnB1
dE1ldGhvZENvbnRleHQKK1dlYktpdElucHV0UHVycG9zZQorV2ViS2l0SW5wdXRIaW50cwogd2Vi
a2l0X2lucHV0X21ldGhvZF9jb250ZXh0X3NldF9lbmFibGVfcHJlZWRpdAogd2Via2l0X2lucHV0
X21ldGhvZF9jb250ZXh0X2dldF9wcmVlZGl0CiB3ZWJraXRfaW5wdXRfbWV0aG9kX2NvbnRleHRf
ZmlsdGVyX2tleV9ldmVudApAQCAtMTU2Nyw2ICsxNTY5LDEwIEBAIHdlYmtpdF9pbnB1dF9tZXRo
b2RfY29udGV4dF9ub3RpZnlfZm9jdXNfaW4KIHdlYmtpdF9pbnB1dF9tZXRob2RfY29udGV4dF9u
b3RpZnlfZm9jdXNfb3V0CiB3ZWJraXRfaW5wdXRfbWV0aG9kX2NvbnRleHRfbm90aWZ5X2N1cnNv
cl9hcmVhCiB3ZWJraXRfaW5wdXRfbWV0aG9kX2NvbnRleHRfcmVzZXQKK3dlYmtpdF9pbnB1dF9t
ZXRob2RfY29udGV4dF9nZXRfaW5wdXRfcHVycG9zZQord2Via2l0X2lucHV0X21ldGhvZF9jb250
ZXh0X3NldF9pbnB1dF9wdXJwb3NlCit3ZWJraXRfaW5wdXRfbWV0aG9kX2NvbnRleHRfZ2V0X2lu
cHV0X2hpbnRzCit3ZWJraXRfaW5wdXRfbWV0aG9kX2NvbnRleHRfc2V0X2lucHV0X2hpbnRzCiAK
IDxTVUJTRUNUSU9OIFVuZGVybGluZT4KIFdlYktpdElucHV0TWV0aG9kVW5kZXJsaW5lCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1BhZ2VDbGllbnRJbXBsLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvUGFnZUNsaWVudEltcGwuY3BwCmlu
ZGV4IGRhNGE5NTI1N2VmLi41OTJkNzMzNDk5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL3dwZS9QYWdlQ2xpZW50SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL3dwZS9QYWdlQ2xpZW50SW1wbC5jcHAKQEAgLTQzMCw5ICs0MzAsOSBAQCB2
b2lkIFBhZ2VDbGllbnRJbXBsOjpzZW5kTWVzc2FnZVRvV2ViVmlldyhVc2VyTWVzc2FnZSYmIG1l
c3NhZ2UsIENvbXBsZXRpb25IYW5kbAogICAgIG1fdmlldy5kaWRSZWNlaXZlVXNlck1lc3NhZ2Uo
V1RGTW92ZShtZXNzYWdlKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lk
IFBhZ2VDbGllbnRJbXBsOjpzZXRJbnB1dE1ldGhvZFN0YXRlKGJvb2wgZW5hYmxlZCkKK3ZvaWQg
UGFnZUNsaWVudEltcGw6OnNldElucHV0TWV0aG9kU3RhdGUoT3B0aW9uYWw8SW5wdXRNZXRob2RT
dGF0ZT4mJiBzdGF0ZSkKIHsKLSAgICBtX3ZpZXcuc2V0SW5wdXRNZXRob2RTdGF0ZShlbmFibGVk
KTsKKyAgICBtX3ZpZXcuc2V0SW5wdXRNZXRob2RTdGF0ZShXVEZNb3ZlKHN0YXRlKSk7CiB9CiAK
IHZvaWQgUGFnZUNsaWVudEltcGw6OnNlbGVjdGlvbkRpZENoYW5nZSgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1BhZ2VDbGllbnRJbXBsLmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1BhZ2VDbGllbnRJbXBsLmgKaW5kZXggN2RjZDhhMTli
ZmQuLmEyZjg4ZjgwOGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
d3BlL1BhZ2VDbGllbnRJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dw
ZS9QYWdlQ2xpZW50SW1wbC5oCkBAIC00Miw2ICs0Miw3IEBAIGVudW0gY2xhc3MgRE9NUGFzdGVB
Y2Nlc3NSZXNwb25zZSA6IHVpbnQ4X3Q7CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgU2Ny
b2xsR2VzdHVyZUNvbnRyb2xsZXI7CitzdHJ1Y3QgSW5wdXRNZXRob2RTdGF0ZTsKIHN0cnVjdCBV
c2VyTWVzc2FnZTsKIAogZW51bSBjbGFzcyBVbmRvT3JSZWRvIDogYm9vbDsKQEAgLTYyLDcgKzYz
LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICAgICB2b2lkIHNlbmRNZXNzYWdlVG9XZWJWaWV3KFVz
ZXJNZXNzYWdlJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVXNlck1lc3NhZ2UmJik+JiYpOwot
ICAgIHZvaWQgc2V0SW5wdXRNZXRob2RTdGF0ZShib29sIGVuYWJsZWQpOworICAgIHZvaWQgc2V0
SW5wdXRNZXRob2RTdGF0ZShPcHRpb25hbDxJbnB1dE1ldGhvZFN0YXRlPiYmKTsKIAogcHJpdmF0
ZToKICAgICAvLyBQYWdlQ2xpZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvd3BlL1dQRVZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9X
UEVWaWV3LmNwcAppbmRleCBlZjY1YjdhOWI2ZC4uMjc1YmIwYmE5NWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV1BFVmlldy5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XUEVWaWV3LmNwcApAQCAtMjMxLDkgKzIzMSw5IEBAIFdl
YktpdElucHV0TWV0aG9kQ29udGV4dCogVmlldzo6aW5wdXRNZXRob2RDb250ZXh0KCkgY29uc3QK
ICAgICByZXR1cm4gbV9pbnB1dE1ldGhvZEZpbHRlci5jb250ZXh0KCk7CiB9CiAKLXZvaWQgVmll
dzo6c2V0SW5wdXRNZXRob2RTdGF0ZShib29sIGVuYWJsZWQpCit2b2lkIFZpZXc6OnNldElucHV0
TWV0aG9kU3RhdGUoT3B0aW9uYWw8SW5wdXRNZXRob2RTdGF0ZT4mJiBzdGF0ZSkKIHsKLSAgICBt
X2lucHV0TWV0aG9kRmlsdGVyLnNldEVuYWJsZWQoZW5hYmxlZCk7CisgICAgbV9pbnB1dE1ldGhv
ZEZpbHRlci5zZXRTdGF0ZShXVEZNb3ZlKHN0YXRlKSk7CiB9CiAKIHZvaWQgVmlldzo6c2VsZWN0
aW9uRGlkQ2hhbmdlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93
cGUvV1BFVmlldy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XUEVWaWV3LmgK
aW5kZXggYWE4NzA3MmVjMWMuLmYyM2RmYzI3YTdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvd3BlL1dQRVZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvd3BlL1dQRVZpZXcuaApAQCAtODEsNyArODEsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lk
IHNldElucHV0TWV0aG9kQ29udGV4dChXZWJLaXRJbnB1dE1ldGhvZENvbnRleHQqKTsKICAgICBX
ZWJLaXRJbnB1dE1ldGhvZENvbnRleHQqIGlucHV0TWV0aG9kQ29udGV4dCgpIGNvbnN0OwotICAg
IHZvaWQgc2V0SW5wdXRNZXRob2RTdGF0ZShib29sKTsKKyAgICB2b2lkIHNldElucHV0TWV0aG9k
U3RhdGUoT3B0aW9uYWw8V2ViS2l0OjpJbnB1dE1ldGhvZFN0YXRlPiYmKTsKICAgICB2b2lkIHN5
bnRoZXNpemVDb21wb3NpdGlvbktleVByZXNzKGNvbnN0IFN0cmluZyYsIE9wdGlvbmFsPFZlY3Rv
cjxXZWJDb3JlOjpDb21wb3NpdGlvblVuZGVybGluZT4+JiYsIE9wdGlvbmFsPFdlYktpdDo6RWRp
dGluZ1JhbmdlPiYmKTsKIAogICAgIHZvaWQgc2VsZWN0aW9uRGlkQ2hhbmdlKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdElucHV0TWV0aG9kQ29u
dGV4dC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRJbnB1dE1ldGhv
ZENvbnRleHQuaAppbmRleCA0NjRlMzUyMTZmZi4uODI4NTU5NDg1ZDggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0SW5wdXRNZXRob2RDb250ZXh0LmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRJbnB1dE1ldGhvZENv
bnRleHQuaApAQCAtNDAsNiArNDAsNTQgQEAgR19CRUdJTl9ERUNMUwogCiAjZGVmaW5lIFdFQktJ
VF9UWVBFX0lOUFVUX01FVEhPRF9VTkRFUkxJTkUgICAgICAgICAgKHdlYmtpdF9pbnB1dF9tZXRo
b2RfdW5kZXJsaW5lX2dldF90eXBlKCkpCiAKKy8qKgorICogV2ViS2l0SW5wdXRQdXJwb3NlOgor
ICogQFdFQktJVF9JTlBVVF9QVVJQT1NFX0ZSRUVfRk9STTogRWRpdGFibGUgZWxlbWVudCBleHBl
Y3RzIGFueSBjaGFyYWN0ZXJzCisgKiBAV0VCS0lUX0lOUFVUX1BVUlBPU0VfRElHSVRTOiBFZGl0
YWJsZSBlbGVtZW50IGV4cGVjdHMgZGlnaXRzCisgKiBAV0VCS0lUX0lOUFVUX1BVUlBPU0VfTlVN
QkVSOiBFZGl0YWJsZSBlbGVtZW50IGV4cGVjdHMgYSBudW1iZXIKKyAqIEBXRUJLSVRfSU5QVVRf
UFVSUE9TRV9QSE9ORTogRWRpdGFibGUgZWxlbWVudCBleHBlY3RzIGEgdGVsZXBob25lCisgKiBA
V0VCS0lUX0lOUFVUX1BVUlBPU0VfVVJMOiBFZGl0YWJsZSBlbGVtZW50IGV4cGVjdHMgYSBVUkwK
KyAqIEBXRUJLSVRfSU5QVVRfUFVSUE9TRV9FTUFJTDogRWRpdGFibGUgZWxlbWVudCBleHBlY3Rz
IGFuIGVtYWlsCisgKiBAV0VCS0lUX0lOUFVUX1BVUlBPU0VfUEFTU1dPUkQ6IEVkaXRhYmxlIGVs
ZW1lbnQgZXhwZWN0cyBhIHBhc3N3b3JkCisgKgorICogRW51bSB2YWx1ZXMgdXNlZCB0byBkZXNj
cmliZSB0aGUgcHJpbWFyeSBwdXJwb3NlIG9mIHRoZSBhY3RpdmUgZWRpdGFibGUgZWxlbWVudC4K
KyAqCisgKiBTaW5jZTogMi4yOAorICovCit0eXBlZGVmIGVudW0geworICAgIFdFQktJVF9JTlBV
VF9QVVJQT1NFX0ZSRUVfRk9STSwKKyAgICBXRUJLSVRfSU5QVVRfUFVSUE9TRV9ESUdJVFMsCisg
ICAgV0VCS0lUX0lOUFVUX1BVUlBPU0VfTlVNQkVSLAorICAgIFdFQktJVF9JTlBVVF9QVVJQT1NF
X1BIT05FLAorICAgIFdFQktJVF9JTlBVVF9QVVJQT1NFX1VSTCwKKyAgICBXRUJLSVRfSU5QVVRf
UFVSUE9TRV9FTUFJTCwKKyAgICBXRUJLSVRfSU5QVVRfUFVSUE9TRV9QQVNTV09SRAorfSBXZWJL
aXRJbnB1dFB1cnBvc2U7CisKKy8qKgorICogV2ViS2l0SW5wdXRIaW50czoKKyAqIEBXRUJLSVRf
SU5QVVRfSElOVF9OT05FOiBObyBzcGVjaWFsIGJlaGF2aW9yIHN1Z2dlc3RlZAorICogQFdFQktJ
VF9JTlBVVF9ISU5UX1NQRUxMQ0hFQ0s6IFN1Z2dlc3Qgc3BlbGwgY2hlY2tpbmcKKyAqIEBXRUJL
SVRfSU5QVVRfSElOVF9MT1dFUkNBU0U6IFN1Z2dlc3QgdG8gbm90IGF1dG9jYXBpdGxpemUKKyAq
IEBXRUJLSVRfSU5QVVRfSElOVF9VUFBFUkNBU0VfQ0hBUlM6IFN1Z2dlc3QgdG8gY2FwaXRhbGl6
ZSBhbGwgdGV4dAorICogQFdFQktJVF9JTlBVVF9ISU5UX1VQUEVSQ0FTRV9XT1JEUzogU3VnZ2Vz
dCB0byBjYXBpdGFsaXplIHRoZSBmaXJzdCBjaGFyYWN0ZXIgb2YgZWFjaCB3b3JkCisgKiBAV0VC
S0lUX0lOUFVUX0hJTlRfVVBQRVJDQVNFX1NFTlRFTkNFUzogU3VnZ2VzdCB0byBjYXBpdGFsaXpl
IHRoZSBmaXJzdCB3b3JkIG9mIGVhY2ggc2VudGVuY2UKKyAqIEBXRUJLSVRfSU5QVVRfSElOVF9J
TkhJQklUX09TSzogU3VnZ2VzdCB0byBub3Qgc2hvdyBhbiBvbnNjcmVlbiBrZXlib2FyZAorICoK
KyAqIEVudW0gdmFsdWVzIHVzZWQgdG8gZGVzY3JpYmUgaGludHMgdGhhdCBtaWdodCBiZSB0YWtl
biBpbnRvIGFjY291bnQgYnkgaW5wdXQgbWV0aG9kcy4KKyAqCisgKiBTaW5jZTogMi4yOAorICov
Cit0eXBlZGVmIGVudW0geworICAgIFdFQktJVF9JTlBVVF9ISU5UX05PTkUgICAgICAgICAgICAg
ICAgPSAwLAorICAgIFdFQktJVF9JTlBVVF9ISU5UX1NQRUxMQ0hFQ0sgICAgICAgICAgPSAxIDw8
IDAsCisgICAgV0VCS0lUX0lOUFVUX0hJTlRfTE9XRVJDQVNFICAgICAgICAgICA9IDEgPDwgMSwK
KyAgICBXRUJLSVRfSU5QVVRfSElOVF9VUFBFUkNBU0VfQ0hBUlMgICAgID0gMSA8PCAyLAorICAg
IFdFQktJVF9JTlBVVF9ISU5UX1VQUEVSQ0FTRV9XT1JEUyAgICAgPSAxIDw8IDMsCisgICAgV0VC
S0lUX0lOUFVUX0hJTlRfVVBQRVJDQVNFX1NFTlRFTkNFUyA9IDEgPDwgNCwKKyAgICBXRUJLSVRf
SU5QVVRfSElOVF9JTkhJQklUX09TSyAgICAgICAgID0gMSA8PCA1Cit9IFdlYktpdElucHV0SGlu
dHM7CisKIHR5cGVkZWYgc3RydWN0IF9XZWJLaXRJbnB1dE1ldGhvZENvbnRleHQgICAgICAgIFdl
YktpdElucHV0TWV0aG9kQ29udGV4dDsKIHR5cGVkZWYgc3RydWN0IF9XZWJLaXRJbnB1dE1ldGhv
ZENvbnRleHRDbGFzcyAgIFdlYktpdElucHV0TWV0aG9kQ29udGV4dENsYXNzOwogdHlwZWRlZiBz
dHJ1Y3QgX1dlYktpdElucHV0TWV0aG9kQ29udGV4dFByaXZhdGUgV2ViS2l0SW5wdXRNZXRob2RD
b250ZXh0UHJpdmF0ZTsKQEAgLTE0MSw2ICsxODksMjAgQEAgV0VCS0lUX0FQSSB2b2lkCiB3ZWJr
aXRfaW5wdXRfbWV0aG9kX3VuZGVybGluZV9zZXRfY29sb3IgICAgICAgIChXZWJLaXRJbnB1dE1l
dGhvZFVuZGVybGluZSAgICAgICp1bmRlcmxpbmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRDb2xvciAgICAgICAgICAgICAgICAgICAgICpj
b2xvcik7CiAKK1dFQktJVF9BUEkgV2ViS2l0SW5wdXRQdXJwb3NlCit3ZWJraXRfaW5wdXRfbWV0
aG9kX2NvbnRleHRfZ2V0X2lucHV0X3B1cnBvc2UgIChXZWJLaXRJbnB1dE1ldGhvZENvbnRleHQg
ICAgICAgICpjb250ZXh0KTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfaW5wdXRfbWV0aG9k
X2NvbnRleHRfc2V0X2lucHV0X3B1cnBvc2UgIChXZWJLaXRJbnB1dE1ldGhvZENvbnRleHQgICAg
ICAgICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgV2ViS2l0SW5wdXRQdXJwb3NlICAgICAgICAgICAgICAgcHVycG9zZSk7CisKK1dFQktJ
VF9BUEkgV2ViS2l0SW5wdXRIaW50cword2Via2l0X2lucHV0X21ldGhvZF9jb250ZXh0X2dldF9p
bnB1dF9oaW50cyAgICAoV2ViS2l0SW5wdXRNZXRob2RDb250ZXh0ICAgICAgICAqY29udGV4dCk7
CisKK1dFQktJVF9BUEkgdm9pZAord2Via2l0X2lucHV0X21ldGhvZF9jb250ZXh0X3NldF9pbnB1
dF9oaW50cyAgICAoV2ViS2l0SW5wdXRNZXRob2RDb250ZXh0ICAgICAgICAqY29udGV4dCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdElucHV0
SGludHMgICAgICAgICAgICAgICAgIGhpbnRzKTsKKwogCiBHX0VORF9ERUNMUwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL2RvY3Mvd3BlLTEuMC1zZWN0aW9u
cy50eHQgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL2RvY3Mvd3BlLTEuMC1zZWN0
aW9ucy50eHQKaW5kZXggZjBiMGE3NTkyMWMuLmRmNGY4NDZiNDU5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL2RvY3Mvd3BlLTEuMC1zZWN0aW9ucy50eHQKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9kb2NzL3dwZS0xLjAtc2VjdGlvbnMu
dHh0CkBAIC0xNDQ1LDYgKzE0NDUsOCBAQCBXRUJLSVRfVFlQRV9HRU9MT0NBVElPTl9QT1NJVElP
TgogPFNFQ1RJT04+CiA8RklMRT5XZWJLaXRJbnB1dE1ldGhvZENvbnRleHQ8L0ZJTEU+CiBXZWJL
aXRJbnB1dE1ldGhvZENvbnRleHQKK1dlYktpdElucHV0UHVycG9zZQorV2ViS2l0SW5wdXRIaW50
cwogd2Via2l0X2lucHV0X21ldGhvZF9jb250ZXh0X3NldF9lbmFibGVfcHJlZWRpdAogd2Via2l0
X2lucHV0X21ldGhvZF9jb250ZXh0X2dldF9wcmVlZGl0CiB3ZWJraXRfaW5wdXRfbWV0aG9kX2Nv
bnRleHRfZmlsdGVyX2tleV9ldmVudApAQCAtMTQ1Miw2ICsxNDU0LDEwIEBAIHdlYmtpdF9pbnB1
dF9tZXRob2RfY29udGV4dF9ub3RpZnlfZm9jdXNfaW4KIHdlYmtpdF9pbnB1dF9tZXRob2RfY29u
dGV4dF9ub3RpZnlfZm9jdXNfb3V0CiB3ZWJraXRfaW5wdXRfbWV0aG9kX2NvbnRleHRfbm90aWZ5
X2N1cnNvcl9hcmVhCiB3ZWJraXRfaW5wdXRfbWV0aG9kX2NvbnRleHRfcmVzZXQKK3dlYmtpdF9p
bnB1dF9tZXRob2RfY29udGV4dF9nZXRfaW5wdXRfcHVycG9zZQord2Via2l0X2lucHV0X21ldGhv
ZF9jb250ZXh0X3NldF9pbnB1dF9wdXJwb3NlCit3ZWJraXRfaW5wdXRfbWV0aG9kX2NvbnRleHRf
Z2V0X2lucHV0X2hpbnRzCit3ZWJraXRfaW5wdXRfbWV0aG9kX2NvbnRleHRfc2V0X2lucHV0X2hp
bnRzCiAKIDxTVUJTRUNUSU9OIFVuZGVybGluZT4KIFdlYktpdElucHV0TWV0aG9kVW5kZXJsaW5l
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGFjYjcwZjU2N2QzLi44
ZGNjNWQwZmMwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTMx
MSw2ICszMTEsNyBAQCBzdHJ1Y3QgRWRpdG9yU3RhdGU7CiBzdHJ1Y3QgRm9jdXNlZEVsZW1lbnRJ
bmZvcm1hdGlvbjsKIHN0cnVjdCBGb250SW5mbzsKIHN0cnVjdCBGcmFtZUluZm9EYXRhOworc3Ry
dWN0IElucHV0TWV0aG9kU3RhdGU7CiBzdHJ1Y3QgSW5zZXJ0VGV4dE9wdGlvbnM7CiBzdHJ1Y3Qg
SW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb247CiBzdHJ1Y3QgSW50ZXJhY3Rpb25JbmZv
cm1hdGlvblJlcXVlc3Q7CkBAIC03OTAsNyArNzkxLDcgQEAgcHVibGljOgogI2lmIFBMQVRGT1JN
KEdUSykgfHwgUExBVEZPUk0oV1BFKQogICAgIHZvaWQgY2FuY2VsQ29tcG9zaXRpb24oY29uc3Qg
U3RyaW5nJiBjb21wb3NpdGlvblN0cmluZyk7CiAKLSAgICB2b2lkIHNldElucHV0TWV0aG9kU3Rh
dGUoYm9vbCBlbmFibGVkKTsKKyAgICB2b2lkIHNldElucHV0TWV0aG9kU3RhdGUoT3B0aW9uYWw8
SW5wdXRNZXRob2RTdGF0ZT4mJik7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKEdUSykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbiBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCAw
MjVmYjJjMWM5OS4uOTU0Zjk3NGEzMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KQEAgLTIxOSw3ICsyMTksNyBAQCBtZXNzYWdlcyAt
PiBXZWJQYWdlUHJveHkgewogI2VuZGlmCiAKICNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JN
KFdQRSkKLSAgICBTZXRJbnB1dE1ldGhvZFN0YXRlKGJvb2wgZW5hYmxlZCk7CisgICAgU2V0SW5w
dXRNZXRob2RTdGF0ZShPcHRpb25hbDxXZWJLaXQ6OklucHV0TWV0aG9kU3RhdGU+IHN0YXRlKTsK
ICNlbmRpZgogCiAgICAgIyBCYWNrRm9yd2FyZCBtZXNzYWdlcwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYlBhZ2VQcm94eUd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9ndGsvV2ViUGFnZVByb3h5R3RrLmNwcAppbmRleCA1NDBlM2JjNjg0Ni4uOGVl
ODZmYTFiZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJQYWdl
UHJveHlHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJQYWdlUHJv
eHlHdGsuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiV2ViUGFnZVByb3h5LmgiCiAKKyNpbmNsdWRlICJJbnB1dE1ldGhvZFN0YXRlLmgiCiAjaW5j
bHVkZSAiUGFnZUNsaWVudEltcGwuaCIKICNpbmNsdWRlICJXZWJLaXRVc2VyTWVzc2FnZS5oIgog
I2luY2x1ZGUgIldlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZS5oIgpAQCAtMTQ4LDkgKzE0OSw5IEBA
IHZvaWQgV2ViUGFnZVByb3h5Ojp3aW5kb3dlZFBsdWdpblZpc2liaWxpdHlEaWRDaGFuZ2UoYm9v
bCBpc1Zpc2libGUsIHVpbnQ2NF90IHdpCiB9CiAjZW5kaWYgLy8gUExBVEZPUk0oWDExKQogCi12
b2lkIFdlYlBhZ2VQcm94eTo6c2V0SW5wdXRNZXRob2RTdGF0ZShib29sIGVuYWJsZWQpCit2b2lk
IFdlYlBhZ2VQcm94eTo6c2V0SW5wdXRNZXRob2RTdGF0ZShPcHRpb25hbDxJbnB1dE1ldGhvZFN0
YXRlPiYmIHN0YXRlKQogewotICAgIHdlYmtpdFdlYlZpZXdCYXNlU2V0SW5wdXRNZXRob2RTdGF0
ZShXRUJLSVRfV0VCX1ZJRVdfQkFTRSh2aWV3V2lkZ2V0KCkpLCBlbmFibGVkKTsKKyAgICB3ZWJr
aXRXZWJWaWV3QmFzZVNldElucHV0TWV0aG9kU3RhdGUoV0VCS0lUX1dFQl9WSUVXX0JBU0Uodmll
d1dpZGdldCgpKSwgV1RGTW92ZShzdGF0ZSkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0
Q2VudGVyRm9yWm9vbUdlc3R1cmUoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGNlbnRlckluVmll
d0Nvb3JkaW5hdGVzLCBXZWJDb3JlOjpJbnRQb2ludCYgY2VudGVyKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3Mvd3BlL1dlYlBhZ2VQcm94eVdQRS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy93cGUvV2ViUGFnZVByb3h5V1BFLmNwcAppbmRleCA3MThmMjEyZDE0Mi4u
OGY2NDBkYmQ4MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dwZS9XZWJQ
YWdlUHJveHlXUEUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dwZS9XZWJQYWdl
UHJveHlXUEUuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5Lmgi
CiAKICNpbmNsdWRlICJFZGl0b3JTdGF0ZS5oIgorI2luY2x1ZGUgIklucHV0TWV0aG9kU3RhdGUu
aCIKICNpbmNsdWRlICJQYWdlQ2xpZW50SW1wbC5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhU3Rv
cmUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CkBAIC05NSw5ICs5Niw5
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZW5kTWVzc2FnZVRvV2ViVmlldyhVc2VyTWVzc2FnZSYm
IG1lc3NhZ2UpCiAgICAgc2VuZE1lc3NhZ2VUb1dlYlZpZXdXaXRoUmVwbHkoV1RGTW92ZShtZXNz
YWdlKSwgW10oVXNlck1lc3NhZ2UmJikgeyB9KTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnNl
dElucHV0TWV0aG9kU3RhdGUoYm9vbCBlbmFibGVkKQordm9pZCBXZWJQYWdlUHJveHk6OnNldElu
cHV0TWV0aG9kU3RhdGUoT3B0aW9uYWw8SW5wdXRNZXRob2RTdGF0ZT4mJiBzdGF0ZSkKIHsKLSAg
ICBzdGF0aWNfY2FzdDxQYWdlQ2xpZW50SW1wbCY+KHBhZ2VDbGllbnQoKSkuc2V0SW5wdXRNZXRo
b2RTdGF0ZShlbmFibGVkKTsKKyAgICBzdGF0aWNfY2FzdDxQYWdlQ2xpZW50SW1wbCY+KHBhZ2VD
bGllbnQoKSkuc2V0SW5wdXRNZXRob2RTdGF0ZShXVEZNb3ZlKHN0YXRlKSk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAppbmRleCBkYTgzZTk4MWY5Mi4u
N2U1N2FlZDk1NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCkBAIC02MDQsMTMgKzYwNCwxMyBA
QCB2b2lkIFdlYkVkaXRvckNsaWVudDo6d2lsbFNldElucHV0TWV0aG9kU3RhdGUoKQogewogfQog
Ci12b2lkIFdlYkVkaXRvckNsaWVudDo6c2V0SW5wdXRNZXRob2RTdGF0ZShib29sIGVuYWJsZWQp
Cit2b2lkIFdlYkVkaXRvckNsaWVudDo6c2V0SW5wdXRNZXRob2RTdGF0ZShFbGVtZW50KiBlbGVt
ZW50KQogewogI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV1BFKQotICAgIG1fcGFnZS0+
c2V0SW5wdXRNZXRob2RTdGF0ZShlbmFibGVkKTsKKyAgICBtX3BhZ2UtPnNldElucHV0TWV0aG9k
U3RhdGUoZWxlbWVudCk7CiAjZWxzZQogICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgVU5VU0VE
X1BBUkFNKGVuYWJsZWQpOworICAgIFVOVVNFRF9QQVJBTShlbGVtZW50KTsKICNlbmRpZgogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRWRpdG9yQ2xpZW50LmgKaW5kZXggYTcyZWUyYTZiZGQuLjcyODFmYjQxNjE0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5oCkBAIC0xNjcsNyArMTY3LDcgQEAgcHJpdmF0ZToKICAgICBib29sIHNwZWxs
aW5nVUlJc1Nob3dpbmcoKSBmaW5hbDsKICAgICB2b2lkIGdldEd1ZXNzZXNGb3JXb3JkKGNvbnN0
IFN0cmluZyYgd29yZCwgY29uc3QgU3RyaW5nJiBjb250ZXh0LCBjb25zdCBXZWJDb3JlOjpWaXNp
YmxlU2VsZWN0aW9uJiBjdXJyZW50U2VsZWN0aW9uLCBWZWN0b3I8U3RyaW5nPiYgZ3Vlc3Nlcykg
ZmluYWw7CiAgICAgdm9pZCB3aWxsU2V0SW5wdXRNZXRob2RTdGF0ZSgpIGZpbmFsOwotICAgIHZv
aWQgc2V0SW5wdXRNZXRob2RTdGF0ZShib29sIGVuYWJsZWQpIGZpbmFsOworICAgIHZvaWQgc2V0
SW5wdXRNZXRob2RTdGF0ZShXZWJDb3JlOjpFbGVtZW50KikgZmluYWw7CiAgICAgdm9pZCByZXF1
ZXN0Q2hlY2tpbmdPZlN0cmluZyhXZWJDb3JlOjpUZXh0Q2hlY2tpbmdSZXF1ZXN0JiwgY29uc3Qg
V2ViQ29yZTo6VmlzaWJsZVNlbGVjdGlvbiYgY3VycmVudFNlbGVjdGlvbikgZmluYWw7CiAKICNp
ZiBQTEFURk9STShHVEspCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmgKaW5kZXggNzhlYTAyZWY1ZjIuLjkzZjFiMDYzNzgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0xMDAsNiArMTAwLDEwIEBAIHR5cGVkZWYgc3Ry
dWN0IF9BdGtPYmplY3QgQXRrT2JqZWN0OwogI2luY2x1ZGUgIldlYlByaW50T3BlcmF0aW9uR3Rr
LmgiCiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV1BFKQorI2luY2x1
ZGUgIklucHV0TWV0aG9kU3RhdGUuaCIKKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICNpbmNsdWRlICJHZXN0dXJlVHlwZXMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0ludFBvaW50
SGFzaC5oPgpAQCAtMTA4Niw3ICsxMDkwLDcgQEAgcHVibGljOgogICAgIHZvaWQgcG9zdE1lc3Nh
Z2VJZ25vcmluZ0Z1bGx5U3luY2hyb25vdXNNb2RlKGNvbnN0IFN0cmluZyYgbWVzc2FnZU5hbWUs
IEFQSTo6T2JqZWN0KiBtZXNzYWdlQm9keSk7CiAKICNpZiBQTEFURk9STShHVEspIHx8IFBMQVRG
T1JNKFdQRSkKLSAgICB2b2lkIHNldElucHV0TWV0aG9kU3RhdGUoYm9vbCk7CisgICAgdm9pZCBz
ZXRJbnB1dE1ldGhvZFN0YXRlKFdlYkNvcmU6OkVsZW1lbnQqKTsKICNlbmRpZgogCiAgICAgdm9p
ZCBpbWFnZU9yTWVkaWFEb2N1bWVudFNpemVDaGFuZ2VkKGNvbnN0IFdlYkNvcmU6OkludFNpemUm
KTsKQEAgLTE5NTksNyArMTk2Myw3IEBAIHByaXZhdGU6CiAgICAgbXV0YWJsZSBFZGl0b3JTdGF0
ZUlzQ29udGVudEVkaXRhYmxlIG1fbGFzdEVkaXRvclN0YXRlV2FzQ29udGVudEVkaXRhYmxlIHsg
RWRpdG9yU3RhdGVJc0NvbnRlbnRFZGl0YWJsZTo6VW5zZXQgfTsKIAogI2lmIFBMQVRGT1JNKEdU
SykgfHwgUExBVEZPUk0oV1BFKQotICAgIGJvb2wgbV9pbnB1dE1ldGhvZEVuYWJsZWQgeyBmYWxz
ZSB9OworICAgIE9wdGlvbmFsPElucHV0TWV0aG9kU3RhdGU+IG1faW5wdXRNZXRob2RTdGF0ZTsK
ICNlbmRpZgogCiAjaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvZ2xpYi9XZWJQYWdlR0xpYi5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9nbGliL1dlYlBhZ2VHTGliLmNwcApp
bmRleCA2ZDM5ODBhYWMyMy4uNWQ4MmM3ZGEyNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL2dsaWIvV2ViUGFnZUdMaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2dsaWIvV2ViUGFnZUdMaWIuY3BwCkBAIC0yNiwxNCArMjYs
MTggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJQYWdlLmgiCiAKKyNpbmNs
dWRlICJJbnB1dE1ldGhvZFN0YXRlLmgiCiAjaW5jbHVkZSAiVXNlck1lc3NhZ2UuaCIKICNpbmNs
dWRlICJXZWJLaXRFeHRlbnNpb25NYW5hZ2VyLmgiCiAjaW5jbHVkZSAiV2ViS2l0VXNlck1lc3Nh
Z2UuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJFeHRlbnNpb24uaCIKICNpbmNsdWRlICJXZWJLaXRX
ZWJQYWdlUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCisjaW5j
bHVkZSA8V2ViQ29yZS9IVE1MSW5wdXRFbGVtZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9IVE1M
VGV4dEFyZWFFbGVtZW50Lmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewordXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiAKIHZvaWQgV2ViUGFnZTo6c2VuZE1lc3NhZ2VUb1dlYkV4dGVuc2lvbldpdGhS
ZXBseShVc2VyTWVzc2FnZSYmIG1lc3NhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVXNlck1l
c3NhZ2UmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CkBAIC01NywxMyArNjEsMzYgQEAgdm9p
ZCBXZWJQYWdlOjpzZW5kTWVzc2FnZVRvV2ViRXh0ZW5zaW9uKFVzZXJNZXNzYWdlJiYgbWVzc2Fn
ZSkKICAgICBzZW5kTWVzc2FnZVRvV2ViRXh0ZW5zaW9uV2l0aFJlcGx5KFdURk1vdmUobWVzc2Fn
ZSksIFtdKFVzZXJNZXNzYWdlJiYpIHsgfSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6c2V0SW5wdXRN
ZXRob2RTdGF0ZShib29sIGVuYWJsZWQpCitzdGF0aWMgT3B0aW9uYWw8SW5wdXRNZXRob2RTdGF0
ZT4gaW5wdXRNZXRob2RTYXRlRm9yRWxlbWVudChFbGVtZW50KiBlbGVtZW50KQogewotICAgIGlm
IChtX2lucHV0TWV0aG9kRW5hYmxlZCA9PSBlbmFibGVkKQorICAgIGlmICghZWxlbWVudCB8fCAh
ZWxlbWVudC0+c2hvdWxkVXNlSW5wdXRNZXRob2QoKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKworICAgIElucHV0TWV0aG9kU3RhdGUgc3RhdGU7CisgICAgaWYgKGlzPEhUTUxJbnB1
dEVsZW1lbnQ+KCplbGVtZW50KSkgeworICAgICAgICBhdXRvJiBpbnB1dEVsZW1lbnQgPSBkb3du
Y2FzdDxIVE1MSW5wdXRFbGVtZW50PigqZWxlbWVudCk7CisgICAgICAgIHN0YXRlLnNldFB1cnBv
c2VGb3JJbnB1dEVsZW1lbnQoaW5wdXRFbGVtZW50KTsKKyAgICAgICAgc3RhdGUuYWRkSGludHNG
b3JBdXRvY2FwaXRhbGl6ZVR5cGUoaW5wdXRFbGVtZW50LmF1dG9jYXBpdGFsaXplVHlwZSgpKTsK
KyAgICB9IGVsc2UgaWYgKGlzPEhUTUxUZXh0QXJlYUVsZW1lbnQ+KCplbGVtZW50KSB8fCAoZWxl
bWVudC0+aGFzRWRpdGFibGVTdHlsZSgpICYmIGlzPEhUTUxFbGVtZW50PigqZWxlbWVudCkpKSB7
CisgICAgICAgIGF1dG8mIGh0bWxFbGVtZW50ID0gZG93bmNhc3Q8SFRNTEVsZW1lbnQ+KCplbGVt
ZW50KTsKKyAgICAgICAgc3RhdGUuc2V0UHVycG9zZU9ySGludEZvcklucHV0TW9kZShodG1sRWxl
bWVudC5jYW5vbmljYWxJbnB1dE1vZGUoKSk7CisgICAgICAgIHN0YXRlLmFkZEhpbnRzRm9yQXV0
b2NhcGl0YWxpemVUeXBlKGh0bWxFbGVtZW50LmF1dG9jYXBpdGFsaXplVHlwZSgpKTsKKyAgICB9
CisKKyAgICBpZiAoZWxlbWVudC0+aXNTcGVsbENoZWNraW5nRW5hYmxlZCgpKQorICAgICAgICBz
dGF0ZS5oaW50cy5hZGQoSW5wdXRNZXRob2RTdGF0ZTo6SGludDo6U3BlbGxjaGVjayk7CisKKyAg
ICByZXR1cm4gc3RhdGU7Cit9CisKK3ZvaWQgV2ViUGFnZTo6c2V0SW5wdXRNZXRob2RTdGF0ZShF
bGVtZW50KiBlbGVtZW50KQoreworICAgIGF1dG8gc3RhdGUgPSBpbnB1dE1ldGhvZFNhdGVGb3JF
bGVtZW50KGVsZW1lbnQpOworICAgIGlmIChtX2lucHV0TWV0aG9kU3RhdGUgPT0gc3RhdGUpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIG1faW5wdXRNZXRob2RFbmFibGVkID0gZW5hYmxlZDsKLSAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNldElucHV0TWV0aG9kU3RhdGUoZW5hYmxl
ZCkpOworICAgIG1faW5wdXRNZXRob2RTdGF0ZSA9IHN0YXRlOworICAgIHNlbmQoTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6U2V0SW5wdXRNZXRob2RTdGF0ZShzdGF0ZSkpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCBiODI5NDRjMTJm
Ny4uYTM0ZGI4MWJhY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NSBAQAorMjAxOS0xMi0yNyAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5j
b20+CisKKyAgICAgICAgW0dUS11bV1BFXSBBZGQgQVBJIHRvIHNldCBwdXJwb3NlIGFuZCBoaW50
cyBvZiBhY3RpdmUgZWRpdGFibGUgZWxlbWVudCB0byBpbnB1dCBtZXRob2RzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDU2MDUKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIERPTS9ET01IVE1MRWxlbWVu
dC5tbTogVXNlIEVOQUJMRShBVVRPQ09SUkVDVCkgYW5kIEVOQUJMRShBVVRPQ0FQSVRBTElaRSku
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6IFVwZGF0ZSB0b20g
dGhlIG5ldyBBUEkgdG8gV2ViRWRpdG9yQ2xpZW50OjpzZXRJbnB1dE1ldGhvZFN0YXRlLgorICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbToKKyAgICAgICAgKFdlYkVk
aXRvckNsaWVudDo6c2V0SW5wdXRNZXRob2RTdGF0ZSk6IERpdHRvLgorCiAyMDE5LTEyLTIwICBC
cmlhbiBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IGNv
bnZlcnQgc29tZSBJbnNwZWN0b3JGcm9udGVuZEhvc3QgbWV0aG9kcyB0byBnZXR0ZXJzCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEVsZW1lbnQubW0gYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEVsZW1lbnQubW0KaW5kZXggZDAzMDgy
ZjU3NDQuLjc3ZWVmMDUwMDE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9E
T00vRE9NSFRNTEVsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TUhUTUxFbGVtZW50Lm1tCkBAIC0yNTYsNyArMjU2LDcgQEAKICAgICBJTVBMLT5jbGljaygpOwog
fQogCi0jaWYgRU5BQkxFKElPU19BVVRPQ09SUkVDVF9BTkRfQVVUT0NBUElUQUxJWkUpCisjaWYg
RU5BQkxFKEFVVE9DT1JSRUNUKQogCiAtIChCT09MKWF1dG9jb3JyZWN0CiB7CkBAIC0yNzAsNiAr
MjcwLDEwIEBACiAgICAgSU1QTC0+c2V0QXV0b2NvcnJlY3QobmV3QXV0b2NvcnJlY3QpOwogfQog
CisjZW5kaWYKKworI2lmIEVOQUJMRShBVVRPQ0FQSVRBTElaRSkKKwogLSAoTlNTdHJpbmcgKilh
dXRvY2FwaXRhbGl6ZQogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViRWRpdG9yQ2xpZW50LmgKaW5kZXggMTM4ZmZiODYxZDUuLmM2NThiMTkyYzY0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQuaApAQCAtMTY2LDcgKzE2Niw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBnZXRHdWVz
c2VzRm9yV29yZChjb25zdCBTdHJpbmcmIHdvcmQsIGNvbnN0IFN0cmluZyYgY29udGV4dCwgY29u
c3QgV2ViQ29yZTo6VmlzaWJsZVNlbGVjdGlvbiYgY3VycmVudFNlbGVjdGlvbiwgVmVjdG9yPFN0
cmluZz4mIGd1ZXNzZXMpIGZpbmFsOwogCiAgICAgdm9pZCB3aWxsU2V0SW5wdXRNZXRob2RTdGF0
ZSgpIGZpbmFsOwotICAgIHZvaWQgc2V0SW5wdXRNZXRob2RTdGF0ZShib29sIGVuYWJsZWQpIGZp
bmFsOworICAgIHZvaWQgc2V0SW5wdXRNZXRob2RTdGF0ZShXZWJDb3JlOjpFbGVtZW50KikgZmlu
YWw7CiAgICAgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhXZWJDb3JlOjpUZXh0Q2hlY2tp
bmdSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6VmlzaWJsZVNlbGVjdGlvbiYgY3VycmVudFNlbGVj
dGlvbikgZmluYWw7CiAKICNpZiBQTEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0gYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0KaW5kZXgg
MTNjOGRlZjVlMWEuLjMzYjY4OWQ3YjI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCkBAIC0xMDk4LDcg
KzEwOTgsNyBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6d2lsbFNldElucHV0TWV0aG9kU3RhdGUo
KQogewogfQogCi12b2lkIFdlYkVkaXRvckNsaWVudDo6c2V0SW5wdXRNZXRob2RTdGF0ZShib29s
KQordm9pZCBXZWJFZGl0b3JDbGllbnQ6OnNldElucHV0TWV0aG9kU3RhdGUoV2ViQ29yZTo6RWxl
bWVudCopCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwppbmRleCA0MmI3NTc2YzFh
Ni4uOTQ0N2Y1MzdlMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NiBAQAorMjAxOS0xMi0yNyAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5j
b20+CisKKyAgICAgICAgW0dUS11bV1BFXSBBZGQgQVBJIHRvIHNldCBwdXJwb3NlIGFuZCBoaW50
cyBvZiBhY3RpdmUgZWRpdGFibGUgZWxlbWVudCB0byBpbnB1dCBtZXRob2RzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDU2MDUKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgdG8gdGhlIG5ldyBB
UEkgb2YgV2ViRWRpdG9yQ2xpZW50OjpzZXRJbnB1dE1ldGhvZFN0YXRlLgorCisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkVkaXRvckNs
aWVudDo6c2V0SW5wdXRNZXRob2RTdGF0ZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2Vi
RWRpdG9yQ2xpZW50Lmg6CisKIDIwMTktMTItMjEgIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5j
b20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogYWRkIEluc3BlY3RlZFRhcmdldFR5cGVzIGRp
YWdub3N0aWMgZXZlbnQgYW5kIHJlbGF0ZWQgaG9va3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCmluZGV4
IDhmOWEyOWQ3NzliLi44ZGYxYzcyMWJiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCkBAIC04ODcs
NyArODg3LDcgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OndpbGxTZXRJbnB1dE1ldGhvZFN0YXRl
KCkKIHsKIH0KIAotdm9pZCBXZWJFZGl0b3JDbGllbnQ6OnNldElucHV0TWV0aG9kU3RhdGUoYm9v
bCBlbmFibGVkKQordm9pZCBXZWJFZGl0b3JDbGllbnQ6OnNldElucHV0TWV0aG9kU3RhdGUoV2Vi
Q29yZTo6RWxlbWVudCogZWxlbWVudCkKIHsKLSAgICBtX3dlYlZpZXctPnNldElucHV0TWV0aG9k
U3RhdGUoZW5hYmxlZCk7CisgICAgbV93ZWJWaWV3LT5zZXRJbnB1dE1ldGhvZFN0YXRlKGVsZW1l
bnQgJiYgZWxlbWVudC0+c2hvdWxkVXNlSW5wdXRNZXRob2QoKSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5o
CmluZGV4IDU3ZWNmNzcyZDUxLi43N2Y2NDM2ZTdiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKQEAgLTEx
Myw3ICsxMTMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZ2V0R3Vlc3Nlc0ZvcldvcmQoY29uc3Qg
V1RGOjpTdHJpbmcmIHdvcmQsIGNvbnN0IFdURjo6U3RyaW5nJiBjb250ZXh0LCBjb25zdCBXZWJD
b3JlOjpWaXNpYmxlU2VsZWN0aW9uJiBjdXJyZW50U2VsZWN0aW9uLCBXVEY6OlZlY3RvcjxXVEY6
OlN0cmluZz4mIGd1ZXNzZXMpIGZpbmFsOwogCiAgICAgdm9pZCB3aWxsU2V0SW5wdXRNZXRob2RT
dGF0ZSgpIGZpbmFsOwotICAgIHZvaWQgc2V0SW5wdXRNZXRob2RTdGF0ZShib29sKSBmaW5hbDsK
KyAgICB2b2lkIHNldElucHV0TWV0aG9kU3RhdGUoV2ViQ29yZTo6RWxlbWVudCopIGZpbmFsOwog
ICAgIHZvaWQgcmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoV2ViQ29yZTo6VGV4dENoZWNraW5nUmVx
dWVzdCYsIGNvbnN0IFdlYkNvcmU6OlZpc2libGVTZWxlY3Rpb24mKSBmaW5hbCB7IH0KICAgICBi
b29sIHBlcmZvcm1Ud29TdGVwRHJvcChXZWJDb3JlOjpEb2N1bWVudEZyYWdtZW50JiwgV2ViQ29y
ZTo6UmFuZ2UmLCBib29sKSBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZSBiL1NvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNt
YWtlCmluZGV4IGE5MWZjMmQwNTA3Li44ZmNhZWI1YTNhMyAxMDA2NDQKLS0tIGEvU291cmNlL2Nt
YWtlL09wdGlvbnNHVEsuY21ha2UKKysrIGIvU291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2UK
QEAgLTE1MCw2ICsxNTAsNyBAQCBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFC
TEVfV0VCRFJJVkVSIFBVQkxJQyBPTikKICMgUHJpdmF0ZSBvcHRpb25zIHNoYXJlZCB3aXRoIG90
aGVyIFdlYktpdCBwb3J0cy4gQWRkIG9wdGlvbnMgaGVyZSB3aGVuCiAjIHdlIG5lZWQgYSB2YWx1
ZSBkaWZmZXJlbnQgZnJvbSB0aGUgZGVmYXVsdCBkZWZpbmVkIGluIFdlYktpdEZlYXR1cmVzLmNt
YWtlLgogIyBDaGFuZ2luZyB0aGVzZSBvcHRpb25zIGlzIGNvbXBsZXRlbHkgdW5zdXBwb3J0ZWQu
CitXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfQVVUT0NBUElUQUxJWkUg
UFJJVkFURSBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9DT05U
RU5UX0VYVEVOU0lPTlMgUFJJVkFURSBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZB
TFVFKEVOQUJMRV9EQVJLX01PREVfQ1NTIFBSSVZBVEUgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFV
TFRfUE9SVF9WQUxVRShFTkFCTEVfREFUQUxJU1RfRUxFTUVOVCBQUklWQVRFIE9OKQpkaWZmIC0t
Z2l0IGEvU291cmNlL2NtYWtlL09wdGlvbnNXUEUuY21ha2UgYi9Tb3VyY2UvY21ha2UvT3B0aW9u
c1dQRS5jbWFrZQppbmRleCBkMzQ5YzJjMzdjMC4uOGZhZjg4ODhjN2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9jbWFrZS9PcHRpb25zV1BFLmNtYWtlCisrKyBiL1NvdXJjZS9jbWFrZS9PcHRpb25zV1BF
LmNtYWtlCkBAIC00OCw2ICs0OCw3IEBAIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVF
KEVOQUJMRV9YU0xUIFBVQkxJQyBPTikKICMgd2UgbmVlZCBhIHZhbHVlIGRpZmZlcmVudCBmcm9t
IHRoZSBkZWZhdWx0IGRlZmluZWQgaW4gV2ViS2l0RmVhdHVyZXMuY21ha2UuCiAjIENoYW5naW5n
IHRoZXNlIG9wdGlvbnMgaXMgY29tcGxldGVseSB1bnN1cHBvcnRlZC4KIFdFQktJVF9PUFRJT05f
REVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9BU1lOQ19TQ1JPTExJTkcgUFJJVkFURSBPTikKK1dF
QktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9BVVRPQ0FQSVRBTElaRSBQUklW
QVRFIE9OKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0NPTlRFTlRf
RVhURU5TSU9OUyBQUklWQVRFIE9OKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUo
RU5BQkxFX01FRElBX1NUUkVBTSBQUklWQVRFICR7RU5BQkxFX0VYUEVSSU1FTlRBTF9GRUFUVVJF
U30pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfTUhUTUwgUFJJVkFU
RSBPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9XZWJLaXRGZWF0dXJlcy5jbWFrZSBiL1Nv
dXJjZS9jbWFrZS9XZWJLaXRGZWF0dXJlcy5jbWFrZQppbmRleCAzMWNiNTgyZjQwMy4uOGIyZTI1
Mzg4ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9XZWJLaXRGZWF0dXJlcy5jbWFrZQorKysg
Yi9Tb3VyY2UvY21ha2UvV2ViS2l0RmVhdHVyZXMuY21ha2UKQEAgLTk5LDYgKzk5LDcgQEAgbWFj
cm8oV0VCS0lUX09QVElPTl9CRUdJTikKICAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVf
QVBQTElDQVRJT05fTUFOSUZFU1QgIlRvZ2dsZSBBcHBsaWNhdGlvbiBNYW5pZmVzdCBzdXBwb3J0
IiBQUklWQVRFIE9GRikKICAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfQVNZTkNfU0NS
T0xMSU5HICJFbmFibGUgYXN5bmNocm9ub3VzIHNjcm9sbGluZyIgUFJJVkFURSBPRkYpCiAgICAg
V0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX0FUVEFDSE1FTlRfRUxFTUVOVCAiVG9nZ2xlIEF0
dGFjaG1lbnQgRWxlbWVudCBzdXBwb3J0IiBQUklWQVRFIE9GRikKKyAgICBXRUJLSVRfT1BUSU9O
X0RFRklORShFTkFCTEVfQVVUT0NBUElUQUxJWkUgIlRvZ2dsZSBhdXRvY2FwaXRhbGl6ZSBzdXBw
b3J0IiBQUklWQVRFIE9GRikKICAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfQVZGX0NB
UFRJT05TICJUb2dnbGUgQVZGb3VuZGF0aW9uIGNhcHRpb24gc3VwcG9ydCIgUFJJVkFURSBPRkYp
CiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX0JVQkJMRVdSQVBfU0FOREJPWCAiVG9n
Z2xlIEJ1YmJsZXdyYXAgc2FuZGJveGluZyBzdXBwb3J0IiBQUklWQVRFIE9GRikKICAgICBXRUJL
SVRfT1BUSU9OX0RFRklORShFTkFCTEVfQ0FDSEVfUEFSVElUSU9OSU5HICJUb2dnbGUgY2FjaGUg
cGFydGl0aW9uaW5nIHN1cHBvcnQiIFBSSVZBVEUgT0ZGKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hh
bmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDI4OGQ0YjA1YmFkLi4wZjgwN2RkNDRjYiAx
MDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE2IEBACisyMDE5LTEyLTI3ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdh
bGlhLmNvbT4KKworICAgICAgICBbR1RLXVtXUEVdIEFkZCBBUEkgdG8gc2V0IHB1cnBvc2UgYW5k
IGhpbnRzIG9mIGFjdGl2ZSBlZGl0YWJsZSBlbGVtZW50IHRvIGlucHV0IG1ldGhvZHMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTYwNQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBuZXcgdGVzdCBj
YXNlIHRvIGNoZWNrIHRoZSBwdXJwb3NlIGFuZCBoaW50cyBBUEkuCisKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdElucHV0TWV0aG9kQ29udGV4dC5jcHA6Cisg
ICAgICAgICh0ZXN0V2ViS2l0SW5wdXRNZXRob2RDb250ZXh0Q29udGVudFR5cGUpOgorICAgICAg
ICAoYmVmb3JlQWxsKToKKwogMjAxOS0xMi0yNSAgRGVhbiBKYWNrc29uICA8ZGlub0BhcHBsZS5j
b20+CiAKICAgICAgICAgV0tUUi9EUlQgYWx3YXlzIHRyaWdnZXIgdGhlIERpc2NyZXRlIEdQVSBv
biBkdWFsIEdQVSBzeXN0ZW1zCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdEdMaWIvVGVzdElucHV0TWV0aG9kQ29udGV4dC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdElucHV0TWV0aG9kQ29udGV4dC5jcHAKaW5kZXggNTk2
MWZhYzIzN2EuLjUwODY2NzEyYzY4IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdEdMaWIvVGVzdElucHV0TWV0aG9kQ29udGV4dC5jcHAKKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RJbnB1dE1ldGhvZENvbnRleHQuY3BwCkBA
IC0zMzgsNiArMzM4LDI2IEBAIHB1YmxpYzoKICAgICAgICAgZ19hc3NlcnRfdHJ1ZShtX2NvbnRl
eHQtPmVuYWJsZWQpOwogICAgIH0KIAorICAgIHZvaWQgdW5mb2N1c0VkaXRhYmxlQW5kV2FpdFVu
dGlsSW5wdXRNZXRob2REaXNhYmxlZCgpCisgICAgeworICAgICAgICBnX2Fzc2VydF90cnVlKG1f
Y29udGV4dC0+ZW5hYmxlZCk7CisgICAgICAgIHJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxGaW5p
c2hlZCgiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2VkaXRhYmxlJykuYmx1cigpIiwgbnVsbHB0
cik7CisgICAgICAgIGlmICghbV9jb250ZXh0LT5lbmFibGVkKQorICAgICAgICAgICAgcmV0dXJu
OworCisgICAgICAgIGdfaWRsZV9hZGQoW10oZ3BvaW50ZXIgdXNlckRhdGEpIC0+IGdib29sZWFu
IHsKKyAgICAgICAgICAgIGF1dG8qIHRlc3QgPSBzdGF0aWNfY2FzdDxJbnB1dE1ldGhvZFRlc3Qq
Pih1c2VyRGF0YSk7CisgICAgICAgICAgICBpZiAoIXRlc3QtPm1fY29udGV4dC0+ZW5hYmxlZCkg
eworICAgICAgICAgICAgICAgIHRlc3QtPnF1aXRNYWluTG9vcCgpOworICAgICAgICAgICAgICAg
IHJldHVybiBGQUxTRTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIFRSVUU7
CisgICAgICAgIH0sIHRoaXMpOworICAgICAgICBnX21haW5fbG9vcF9ydW4obV9tYWluTG9vcCk7
CisgICAgICAgIGdfYXNzZXJ0X2ZhbHNlKG1fY29udGV4dC0+ZW5hYmxlZCk7CisgICAgfQorCiAg
ICAgdm9pZCByZXNldEVkaXRhYmxlKCkKICAgICB7CiAgICAgICAgIHJ1bkphdmFTY3JpcHRBbmRX
YWl0VW50aWxGaW5pc2hlZCgiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2VkaXRhYmxlJykudmFs
dWUgPSAnJyIsIG51bGxwdHIpOwpAQCAtMzczLDYgKzM5MywxNiBAQCBwdWJsaWM6CiAgICAgICAg
IG1fZXZlbnRzRXhwZWN0ZWQgPSAwOwogICAgIH0KIAorICAgIFdlYktpdElucHV0UHVycG9zZSBw
dXJwb3NlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiB3ZWJraXRfaW5wdXRfbWV0aG9k
X2NvbnRleHRfZ2V0X2lucHV0X3B1cnBvc2UoV0VCS0lUX0lOUFVUX01FVEhPRF9DT05URVhUKG1f
Y29udGV4dC5nZXQoKSkpOworICAgIH0KKworICAgIFdlYktpdElucHV0SGludHMgaGludHMoKSBj
b25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIHdlYmtpdF9pbnB1dF9tZXRob2RfY29udGV4dF9n
ZXRfaW5wdXRfaGludHMoV0VCS0lUX0lOUFVUX01FVEhPRF9DT05URVhUKG1fY29udGV4dC5nZXQo
KSkpOworICAgIH0KKwogICAgIEdSZWZQdHI8V2ViS2l0SW5wdXRNZXRob2RDb250ZXh0TW9jaz4g
bV9jb250ZXh0OwogICAgIFZlY3RvcjxFdmVudD4gbV9ldmVudHM7CiAgICAgdW5zaWduZWQgbV9l
dmVudHNFeHBlY3RlZCB7IDAgfTsKQEAgLTY5Miw2ICs3MjIsMTU5IEBAIHN0YXRpYyB2b2lkIHRl
c3RXZWJLaXRJbnB1dE1ldGhvZENvbnRleHRSZXNldChJbnB1dE1ldGhvZFRlc3QqIHRlc3QsIGdj
b25zdHBvaW50CiAgICAgdGVzdC0+cmVzZXRFZGl0YWJsZSgpOwogfQogCitzdGF0aWMgdm9pZCB0
ZXN0V2ViS2l0SW5wdXRNZXRob2RDb250ZXh0Q29udGVudFR5cGUoSW5wdXRNZXRob2RUZXN0KiB0
ZXN0LCBnY29uc3Rwb2ludGVyKQoreworICAgIHRlc3QtPmxvYWRIdG1sKCI8aW5wdXQgaWQ9J2Vk
aXRhYmxlJyBzcGVsbGNoZWNrPSdmYWxzZSc+PC9pbnB1dD4iLCBudWxscHRyKTsKKyAgICB0ZXN0
LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKKyAgICB0ZXN0LT5mb2N1c0VkaXRhYmxlQW5kV2Fp
dFVudGlsSW5wdXRNZXRob2RFbmFibGVkKCk7CisgICAgZ19hc3NlcnRfY21wdWludCh0ZXN0LT5w
dXJwb3NlKCksID09LCBXRUJLSVRfSU5QVVRfUFVSUE9TRV9GUkVFX0ZPUk0pOworICAgIGdfYXNz
ZXJ0X2NtcHVpbnQodGVzdC0+aGludHMoKSwgPT0sIFdFQktJVF9JTlBVVF9ISU5UX05PTkUpOwor
ICAgIHRlc3QtPnVuZm9jdXNFZGl0YWJsZUFuZFdhaXRVbnRpbElucHV0TWV0aG9kRGlzYWJsZWQo
KTsKKworICAgIHRlc3QtPmxvYWRIdG1sKCI8aW5wdXQgaWQ9J2VkaXRhYmxlJyB0eXBlPSdudW1i
ZXInIHNwZWxsY2hlY2s9J2ZhbHNlJz4iLCBudWxscHRyKTsKKyAgICB0ZXN0LT53YWl0VW50aWxM
b2FkRmluaXNoZWQoKTsKKyAgICB0ZXN0LT5mb2N1c0VkaXRhYmxlQW5kV2FpdFVudGlsSW5wdXRN
ZXRob2RFbmFibGVkKCk7CisgICAgZ19hc3NlcnRfY21wdWludCh0ZXN0LT5wdXJwb3NlKCksID09
LCBXRUJLSVRfSU5QVVRfUFVSUE9TRV9OVU1CRVIpOworICAgIGdfYXNzZXJ0X2NtcHVpbnQodGVz
dC0+aGludHMoKSwgPT0sIFdFQktJVF9JTlBVVF9ISU5UX05PTkUpOworICAgIHRlc3QtPnVuZm9j
dXNFZGl0YWJsZUFuZFdhaXRVbnRpbElucHV0TWV0aG9kRGlzYWJsZWQoKTsKKworICAgIHRlc3Qt
PmxvYWRIdG1sKCI8aW5wdXQgaWQ9J2VkaXRhYmxlJyB0eXBlPSdudW1iZXInIHNwZWxsY2hlY2s9
J2ZhbHNlJyBwYXR0ZXJuPSdbMC05XSonPiIsIG51bGxwdHIpOworICAgIHRlc3QtPndhaXRVbnRp
bExvYWRGaW5pc2hlZCgpOworICAgIHRlc3QtPmZvY3VzRWRpdGFibGVBbmRXYWl0VW50aWxJbnB1
dE1ldGhvZEVuYWJsZWQoKTsKKyAgICBnX2Fzc2VydF9jbXB1aW50KHRlc3QtPnB1cnBvc2UoKSwg
PT0sIFdFQktJVF9JTlBVVF9QVVJQT1NFX0RJR0lUUyk7CisgICAgZ19hc3NlcnRfY21wdWludCh0
ZXN0LT5oaW50cygpLCA9PSwgV0VCS0lUX0lOUFVUX0hJTlRfTk9ORSk7CisgICAgdGVzdC0+dW5m
b2N1c0VkaXRhYmxlQW5kV2FpdFVudGlsSW5wdXRNZXRob2REaXNhYmxlZCgpOworCisgICAgdGVz
dC0+bG9hZEh0bWwoIjxpbnB1dCBpZD0nZWRpdGFibGUnIHR5cGU9J3RleHQnIHNwZWxsY2hlY2s9
J2ZhbHNlJyBwYXR0ZXJuPSdcXGQqJz4iLCBudWxscHRyKTsKKyAgICB0ZXN0LT53YWl0VW50aWxM
b2FkRmluaXNoZWQoKTsKKyAgICB0ZXN0LT5mb2N1c0VkaXRhYmxlQW5kV2FpdFVudGlsSW5wdXRN
ZXRob2RFbmFibGVkKCk7CisgICAgZ19hc3NlcnRfY21wdWludCh0ZXN0LT5wdXJwb3NlKCksID09
LCBXRUJLSVRfSU5QVVRfUFVSUE9TRV9ESUdJVFMpOworICAgIGdfYXNzZXJ0X2NtcHVpbnQodGVz
dC0+aGludHMoKSwgPT0sIFdFQktJVF9JTlBVVF9ISU5UX05PTkUpOworICAgIHRlc3QtPnVuZm9j
dXNFZGl0YWJsZUFuZFdhaXRVbnRpbElucHV0TWV0aG9kRGlzYWJsZWQoKTsKKworICAgIHRlc3Qt
PmxvYWRIdG1sKCI8aW5wdXQgaWQ9J2VkaXRhYmxlJyB0eXBlPSd0ZWwnIHNwZWxsY2hlY2s9J2Zh
bHNlJz4iLCBudWxscHRyKTsKKyAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKKyAg
ICB0ZXN0LT5mb2N1c0VkaXRhYmxlQW5kV2FpdFVudGlsSW5wdXRNZXRob2RFbmFibGVkKCk7Cisg
ICAgZ19hc3NlcnRfY21wdWludCh0ZXN0LT5wdXJwb3NlKCksID09LCBXRUJLSVRfSU5QVVRfUFVS
UE9TRV9QSE9ORSk7CisgICAgZ19hc3NlcnRfY21wdWludCh0ZXN0LT5oaW50cygpLCA9PSwgV0VC
S0lUX0lOUFVUX0hJTlRfTk9ORSk7CisgICAgdGVzdC0+dW5mb2N1c0VkaXRhYmxlQW5kV2FpdFVu
dGlsSW5wdXRNZXRob2REaXNhYmxlZCgpOworCisgICAgdGVzdC0+bG9hZEh0bWwoIjxpbnB1dCBp
ZD0nZWRpdGFibGUnIHR5cGU9J3VybCcgc3BlbGxjaGVjaz0nZmFsc2UnPiIsIG51bGxwdHIpOwor
ICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOworICAgIHRlc3QtPmZvY3VzRWRpdGFi
bGVBbmRXYWl0VW50aWxJbnB1dE1ldGhvZEVuYWJsZWQoKTsKKyAgICBnX2Fzc2VydF9jbXB1aW50
KHRlc3QtPnB1cnBvc2UoKSwgPT0sIFdFQktJVF9JTlBVVF9QVVJQT1NFX1VSTCk7CisgICAgZ19h
c3NlcnRfY21wdWludCh0ZXN0LT5oaW50cygpLCA9PSwgV0VCS0lUX0lOUFVUX0hJTlRfTk9ORSk7
CisgICAgdGVzdC0+dW5mb2N1c0VkaXRhYmxlQW5kV2FpdFVudGlsSW5wdXRNZXRob2REaXNhYmxl
ZCgpOworCisgICAgdGVzdC0+bG9hZEh0bWwoIjxpbnB1dCBpZD0nZWRpdGFibGUnIHR5cGU9J2Vt
YWlsJyBzcGVsbGNoZWNrPSdmYWxzZSc+IiwgbnVsbHB0cik7CisgICAgdGVzdC0+d2FpdFVudGls
TG9hZEZpbmlzaGVkKCk7CisgICAgdGVzdC0+Zm9jdXNFZGl0YWJsZUFuZFdhaXRVbnRpbElucHV0
TWV0aG9kRW5hYmxlZCgpOworICAgIGdfYXNzZXJ0X2NtcHVpbnQodGVzdC0+cHVycG9zZSgpLCA9
PSwgV0VCS0lUX0lOUFVUX1BVUlBPU0VfRU1BSUwpOworICAgIGdfYXNzZXJ0X2NtcHVpbnQodGVz
dC0+aGludHMoKSwgPT0sIFdFQktJVF9JTlBVVF9ISU5UX05PTkUpOworICAgIHRlc3QtPnVuZm9j
dXNFZGl0YWJsZUFuZFdhaXRVbnRpbElucHV0TWV0aG9kRGlzYWJsZWQoKTsKKworI2lmIDAKKyAg
ICAvLyBGSVhNRTogV2Ugc2hvdWxkIGVuYWJsZSBpbnB1dCBtZXRob2RzIGluIHBhc3N3b3JkIGZp
ZWxkcyB0b28uCisgICAgdGVzdC0+bG9hZEh0bWwoIjxpbnB1dCBpZD0nZWRpdGFibGUnIHR5cGU9
J3Bhc3N3b3JkJz4iLCBudWxscHRyKTsKKyAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQo
KTsKKyAgICB0ZXN0LT5mb2N1c0VkaXRhYmxlQW5kV2FpdFVudGlsSW5wdXRNZXRob2RFbmFibGVk
KCk7CisgICAgZ19hc3NlcnRfY21wdWludCh0ZXN0LT5wdXJwb3NlKCksID09LCBXRUJLSVRfSU5Q
VVRfUFVSUE9TRV9QQVNTV09SRCk7CisgICAgZ19hc3NlcnRfY21wdWludCh0ZXN0LT5oaW50cygp
LCA9PSwgV0VCS0lUX0lOUFVUX0hJTlRfTk9ORSk7CisgICAgdGVzdC0+dW5mb2N1c0VkaXRhYmxl
QW5kV2FpdFVudGlsSW5wdXRNZXRob2REaXNhYmxlZCgpOworI2VuZGlmCisKKyAgICB0ZXN0LT5s
b2FkSHRtbCgiPGRpdiBjb250ZW50ZWRpdGFibGUgaWQ9J2VkaXRhYmxlJyBpbnB1dG1vZGU9J3Rl
eHQnIHNwZWxsY2hlY2s9J2ZhbHNlJz48L2Rpdj4iLCBudWxscHRyKTsKKyAgICB0ZXN0LT53YWl0
VW50aWxMb2FkRmluaXNoZWQoKTsKKyAgICB0ZXN0LT5mb2N1c0VkaXRhYmxlQW5kV2FpdFVudGls
SW5wdXRNZXRob2RFbmFibGVkKCk7CisgICAgZ19hc3NlcnRfY21wdWludCh0ZXN0LT5wdXJwb3Nl
KCksID09LCBXRUJLSVRfSU5QVVRfUFVSUE9TRV9GUkVFX0ZPUk0pOworICAgIGdfYXNzZXJ0X2Nt
cHVpbnQodGVzdC0+aGludHMoKSwgPT0sIFdFQktJVF9JTlBVVF9ISU5UX05PTkUpOworICAgIHRl
c3QtPnVuZm9jdXNFZGl0YWJsZUFuZFdhaXRVbnRpbElucHV0TWV0aG9kRGlzYWJsZWQoKTsKKwor
ICAgIHRlc3QtPmxvYWRIdG1sKCI8ZGl2IGNvbnRlbnRlZGl0YWJsZSBpZD0nZWRpdGFibGUnIGlu
cHV0bW9kZT0nZGVjaW1hbCcgc3BlbGxjaGVjaz0nZmFsc2UnPjwvZGl2PiIsIG51bGxwdHIpOwor
ICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOworICAgIHRlc3QtPmZvY3VzRWRpdGFi
bGVBbmRXYWl0VW50aWxJbnB1dE1ldGhvZEVuYWJsZWQoKTsKKyAgICBnX2Fzc2VydF9jbXB1aW50
KHRlc3QtPnB1cnBvc2UoKSwgPT0sIFdFQktJVF9JTlBVVF9QVVJQT1NFX05VTUJFUik7CisgICAg
Z19hc3NlcnRfY21wdWludCh0ZXN0LT5oaW50cygpLCA9PSwgV0VCS0lUX0lOUFVUX0hJTlRfTk9O
RSk7CisgICAgdGVzdC0+dW5mb2N1c0VkaXRhYmxlQW5kV2FpdFVudGlsSW5wdXRNZXRob2REaXNh
YmxlZCgpOworCisgICAgdGVzdC0+bG9hZEh0bWwoIjxkaXYgY29udGVudGVkaXRhYmxlIGlkPSdl
ZGl0YWJsZScgaW5wdXRtb2RlPSdudW1lcmljJyBzcGVsbGNoZWNrPSdmYWxzZSc+PC9kaXY+Iiwg
bnVsbHB0cik7CisgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CisgICAgdGVzdC0+
Zm9jdXNFZGl0YWJsZUFuZFdhaXRVbnRpbElucHV0TWV0aG9kRW5hYmxlZCgpOworICAgIGdfYXNz
ZXJ0X2NtcHVpbnQodGVzdC0+cHVycG9zZSgpLCA9PSwgV0VCS0lUX0lOUFVUX1BVUlBPU0VfRElH
SVRTKTsKKyAgICBnX2Fzc2VydF9jbXB1aW50KHRlc3QtPmhpbnRzKCksID09LCBXRUJLSVRfSU5Q
VVRfSElOVF9OT05FKTsKKyAgICB0ZXN0LT51bmZvY3VzRWRpdGFibGVBbmRXYWl0VW50aWxJbnB1
dE1ldGhvZERpc2FibGVkKCk7CisKKyAgICB0ZXN0LT5sb2FkSHRtbCgiPGRpdiBjb250ZW50ZWRp
dGFibGUgaWQ9J2VkaXRhYmxlJyBpbnB1dG1vZGU9J3RlbCcgc3BlbGxjaGVjaz0nZmFsc2UnPjwv
ZGl2PiIsIG51bGxwdHIpOworICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOworICAg
IHRlc3QtPmZvY3VzRWRpdGFibGVBbmRXYWl0VW50aWxJbnB1dE1ldGhvZEVuYWJsZWQoKTsKKyAg
ICBnX2Fzc2VydF9jbXB1aW50KHRlc3QtPnB1cnBvc2UoKSwgPT0sIFdFQktJVF9JTlBVVF9QVVJQ
T1NFX1BIT05FKTsKKyAgICBnX2Fzc2VydF9jbXB1aW50KHRlc3QtPmhpbnRzKCksID09LCBXRUJL
SVRfSU5QVVRfSElOVF9OT05FKTsKKyAgICB0ZXN0LT51bmZvY3VzRWRpdGFibGVBbmRXYWl0VW50
aWxJbnB1dE1ldGhvZERpc2FibGVkKCk7CisKKyAgICB0ZXN0LT5sb2FkSHRtbCgiPGRpdiBjb250
ZW50ZWRpdGFibGUgaWQ9J2VkaXRhYmxlJyBpbnB1dG1vZGU9J2VtYWlsJyBzcGVsbGNoZWNrPSdm
YWxzZSc+PC9kaXY+IiwgbnVsbHB0cik7CisgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVk
KCk7CisgICAgdGVzdC0+Zm9jdXNFZGl0YWJsZUFuZFdhaXRVbnRpbElucHV0TWV0aG9kRW5hYmxl
ZCgpOworICAgIGdfYXNzZXJ0X2NtcHVpbnQodGVzdC0+cHVycG9zZSgpLCA9PSwgV0VCS0lUX0lO
UFVUX1BVUlBPU0VfRU1BSUwpOworICAgIGdfYXNzZXJ0X2NtcHVpbnQodGVzdC0+aGludHMoKSwg
PT0sIFdFQktJVF9JTlBVVF9ISU5UX05PTkUpOworICAgIHRlc3QtPnVuZm9jdXNFZGl0YWJsZUFu
ZFdhaXRVbnRpbElucHV0TWV0aG9kRGlzYWJsZWQoKTsKKworICAgIHRlc3QtPmxvYWRIdG1sKCI8
ZGl2IGNvbnRlbnRlZGl0YWJsZSBpZD0nZWRpdGFibGUnIGlucHV0bW9kZT0ndXJsJyBzcGVsbGNo
ZWNrPSdmYWxzZSc+PC9kaXY+IiwgbnVsbHB0cik7CisgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZp
bmlzaGVkKCk7CisgICAgdGVzdC0+Zm9jdXNFZGl0YWJsZUFuZFdhaXRVbnRpbElucHV0TWV0aG9k
RW5hYmxlZCgpOworICAgIGdfYXNzZXJ0X2NtcHVpbnQodGVzdC0+cHVycG9zZSgpLCA9PSwgV0VC
S0lUX0lOUFVUX1BVUlBPU0VfVVJMKTsKKyAgICBnX2Fzc2VydF9jbXB1aW50KHRlc3QtPmhpbnRz
KCksID09LCBXRUJLSVRfSU5QVVRfSElOVF9OT05FKTsKKyAgICB0ZXN0LT51bmZvY3VzRWRpdGFi
bGVBbmRXYWl0VW50aWxJbnB1dE1ldGhvZERpc2FibGVkKCk7CisKKyAgICB0ZXN0LT5sb2FkSHRt
bCgiPGRpdiBjb250ZW50ZWRpdGFibGUgaWQ9J2VkaXRhYmxlJyBpbnB1dG1vZGU9J3NlYXJjaCcg
c3BlbGxjaGVjaz0nZmFsc2UnPjwvZGl2PiIsIG51bGxwdHIpOworICAgIHRlc3QtPndhaXRVbnRp
bExvYWRGaW5pc2hlZCgpOworICAgIHRlc3QtPmZvY3VzRWRpdGFibGVBbmRXYWl0VW50aWxJbnB1
dE1ldGhvZEVuYWJsZWQoKTsKKyAgICBnX2Fzc2VydF9jbXB1aW50KHRlc3QtPnB1cnBvc2UoKSwg
PT0sIFdFQktJVF9JTlBVVF9QVVJQT1NFX0ZSRUVfRk9STSk7CisgICAgZ19hc3NlcnRfY21wdWlu
dCh0ZXN0LT5oaW50cygpLCA9PSwgV0VCS0lUX0lOUFVUX0hJTlRfTk9ORSk7CisgICAgdGVzdC0+
dW5mb2N1c0VkaXRhYmxlQW5kV2FpdFVudGlsSW5wdXRNZXRob2REaXNhYmxlZCgpOworCisgICAg
dGVzdC0+bG9hZEh0bWwoIjxkaXYgY29udGVudGVkaXRhYmxlIGlkPSdlZGl0YWJsZScgaW5wdXRt
b2RlPSdub25lJyBzcGVsbGNoZWNrPSdmYWxzZSc+PC9kaXY+IiwgbnVsbHB0cik7CisgICAgdGVz
dC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CisgICAgdGVzdC0+Zm9jdXNFZGl0YWJsZUFuZFdh
aXRVbnRpbElucHV0TWV0aG9kRW5hYmxlZCgpOworICAgIGdfYXNzZXJ0X2NtcHVpbnQodGVzdC0+
cHVycG9zZSgpLCA9PSwgV0VCS0lUX0lOUFVUX1BVUlBPU0VfRlJFRV9GT1JNKTsKKyAgICBnX2Fz
c2VydF9jbXB1aW50KHRlc3QtPmhpbnRzKCksID09LCBXRUJLSVRfSU5QVVRfSElOVF9JTkhJQklU
X09TSyk7CisgICAgdGVzdC0+dW5mb2N1c0VkaXRhYmxlQW5kV2FpdFVudGlsSW5wdXRNZXRob2RE
aXNhYmxlZCgpOworCisgICAgdGVzdC0+bG9hZEh0bWwoIjx0ZXh0YXJlYSBpZD0nZWRpdGFibGUn
PjwvdGV4dGFyZWE+IiwgbnVsbHB0cik7CisgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVk
KCk7CisgICAgdGVzdC0+Zm9jdXNFZGl0YWJsZUFuZFdhaXRVbnRpbElucHV0TWV0aG9kRW5hYmxl
ZCgpOworICAgIGdfYXNzZXJ0X2NtcHVpbnQodGVzdC0+cHVycG9zZSgpLCA9PSwgV0VCS0lUX0lO
UFVUX1BVUlBPU0VfRlJFRV9GT1JNKTsKKyAgICBnX2Fzc2VydF9jbXB1aW50KHRlc3QtPmhpbnRz
KCksID09LCBXRUJLSVRfSU5QVVRfSElOVF9TUEVMTENIRUNLKTsKKyAgICB0ZXN0LT51bmZvY3Vz
RWRpdGFibGVBbmRXYWl0VW50aWxJbnB1dE1ldGhvZERpc2FibGVkKCk7CisKKyAgICB0ZXN0LT5s
b2FkSHRtbCgiPHRleHRhcmVhIGlkPSdlZGl0YWJsZScgYXV0b2NhcGl0YWxpemU9J25vbmUnPjwv
dGV4dGFyZWE+IiwgbnVsbHB0cik7CisgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7
CisgICAgdGVzdC0+Zm9jdXNFZGl0YWJsZUFuZFdhaXRVbnRpbElucHV0TWV0aG9kRW5hYmxlZCgp
OworICAgIGdfYXNzZXJ0X2NtcHVpbnQodGVzdC0+cHVycG9zZSgpLCA9PSwgV0VCS0lUX0lOUFVU
X1BVUlBPU0VfRlJFRV9GT1JNKTsKKyAgICBnX2Fzc2VydF9jbXB1aW50KHRlc3QtPmhpbnRzKCks
ID09LCBXRUJLSVRfSU5QVVRfSElOVF9TUEVMTENIRUNLIHwgV0VCS0lUX0lOUFVUX0hJTlRfTE9X
RVJDQVNFKTsKKyAgICB0ZXN0LT51bmZvY3VzRWRpdGFibGVBbmRXYWl0VW50aWxJbnB1dE1ldGhv
ZERpc2FibGVkKCk7CisKKyAgICB0ZXN0LT5sb2FkSHRtbCgiPHRleHRhcmVhIGlkPSdlZGl0YWJs
ZScgYXV0b2NhcGl0YWxpemU9J3NlbnRlbmNlcyc+PC90ZXh0YXJlYT4iLCBudWxscHRyKTsKKyAg
ICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKKyAgICB0ZXN0LT5mb2N1c0VkaXRhYmxl
QW5kV2FpdFVudGlsSW5wdXRNZXRob2RFbmFibGVkKCk7CisgICAgZ19hc3NlcnRfY21wdWludCh0
ZXN0LT5wdXJwb3NlKCksID09LCBXRUJLSVRfSU5QVVRfUFVSUE9TRV9GUkVFX0ZPUk0pOworICAg
IGdfYXNzZXJ0X2NtcHVpbnQodGVzdC0+aGludHMoKSwgPT0sIFdFQktJVF9JTlBVVF9ISU5UX1NQ
RUxMQ0hFQ0sgfCBXRUJLSVRfSU5QVVRfSElOVF9VUFBFUkNBU0VfU0VOVEVOQ0VTKTsKKyAgICB0
ZXN0LT51bmZvY3VzRWRpdGFibGVBbmRXYWl0VW50aWxJbnB1dE1ldGhvZERpc2FibGVkKCk7CisK
KyAgICB0ZXN0LT5sb2FkSHRtbCgiPHRleHRhcmVhIGlkPSdlZGl0YWJsZScgYXV0b2NhcGl0YWxp
emU9J3dvcmRzJz48L3RleHRhcmVhPiIsIG51bGxwdHIpOworICAgIHRlc3QtPndhaXRVbnRpbExv
YWRGaW5pc2hlZCgpOworICAgIHRlc3QtPmZvY3VzRWRpdGFibGVBbmRXYWl0VW50aWxJbnB1dE1l
dGhvZEVuYWJsZWQoKTsKKyAgICBnX2Fzc2VydF9jbXB1aW50KHRlc3QtPnB1cnBvc2UoKSwgPT0s
IFdFQktJVF9JTlBVVF9QVVJQT1NFX0ZSRUVfRk9STSk7CisgICAgZ19hc3NlcnRfY21wdWludCh0
ZXN0LT5oaW50cygpLCA9PSwgV0VCS0lUX0lOUFVUX0hJTlRfU1BFTExDSEVDSyB8IFdFQktJVF9J
TlBVVF9ISU5UX1VQUEVSQ0FTRV9XT1JEUyk7CisgICAgdGVzdC0+dW5mb2N1c0VkaXRhYmxlQW5k
V2FpdFVudGlsSW5wdXRNZXRob2REaXNhYmxlZCgpOworCisgICAgdGVzdC0+bG9hZEh0bWwoIjx0
ZXh0YXJlYSBpZD0nZWRpdGFibGUnIGF1dG9jYXBpdGFsaXplPSdjaGFyYWN0ZXJzJz48L3RleHRh
cmVhPiIsIG51bGxwdHIpOworICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOworICAg
IHRlc3QtPmZvY3VzRWRpdGFibGVBbmRXYWl0VW50aWxJbnB1dE1ldGhvZEVuYWJsZWQoKTsKKyAg
ICBnX2Fzc2VydF9jbXB1aW50KHRlc3QtPnB1cnBvc2UoKSwgPT0sIFdFQktJVF9JTlBVVF9QVVJQ
T1NFX0ZSRUVfRk9STSk7CisgICAgZ19hc3NlcnRfY21wdWludCh0ZXN0LT5oaW50cygpLCA9PSwg
V0VCS0lUX0lOUFVUX0hJTlRfU1BFTExDSEVDSyB8IFdFQktJVF9JTlBVVF9ISU5UX1VQUEVSQ0FT
RV9DSEFSUyk7CisgICAgdGVzdC0+dW5mb2N1c0VkaXRhYmxlQW5kV2FpdFVudGlsSW5wdXRNZXRo
b2REaXNhYmxlZCgpOworfQorCiB2b2lkIGJlZm9yZUFsbCgpCiB7CiAgICAgSW5wdXRNZXRob2RU
ZXN0OjphZGQoIldlYktpdElucHV0TWV0aG9kQ29udGV4dCIsICJzaW1wbGUiLCB0ZXN0V2ViS2l0
SW5wdXRNZXRob2RDb250ZXh0U2ltcGxlKTsKQEAgLTY5OSw2ICs4ODIsNyBAQCB2b2lkIGJlZm9y
ZUFsbCgpCiAgICAgSW5wdXRNZXRob2RUZXN0OjphZGQoIldlYktpdElucHV0TWV0aG9kQ29udGV4
dCIsICJpbnZhbGlkLXNlcXVlbmNlIiwgdGVzdFdlYktpdElucHV0TWV0aG9kQ29udGV4dEludmFs
aWRTZXF1ZW5jZSk7CiAgICAgSW5wdXRNZXRob2RUZXN0OjphZGQoIldlYktpdElucHV0TWV0aG9k
Q29udGV4dCIsICJjYW5jZWwtc2VxdWVuY2UiLCB0ZXN0V2ViS2l0SW5wdXRNZXRob2RDb250ZXh0
Q2FuY2VsU2VxdWVuY2UpOwogICAgIElucHV0TWV0aG9kVGVzdDo6YWRkKCJXZWJLaXRJbnB1dE1l
dGhvZENvbnRleHQiLCAicmVzZXQiLCB0ZXN0V2ViS2l0SW5wdXRNZXRob2RDb250ZXh0UmVzZXQp
OworICAgIElucHV0TWV0aG9kVGVzdDo6YWRkKCJXZWJLaXRJbnB1dE1ldGhvZENvbnRleHQiLCAi
Y29udGVudC10eXBlIiwgdGVzdFdlYktpdElucHV0TWV0aG9kQ29udGV4dENvbnRlbnRUeXBlKTsK
IH0KIAogdm9pZCBhZnRlckFsbCgpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>386443</attachid>
            <date>2019-12-27 07:22:31 -0800</date>
            <delta_ts>2020-01-07 02:28:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-ime-content-type.diff</filename>
            <type>text/plain</type>
            <size>88263</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCBkOTEzZTE4MDM1My4uNjhl
YTdiMGQ4OGMgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNiBAQAorMjAxOS0xMi0yNyAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxp
YS5jb20+CisKKyAgICAgICAgW0dUS11bV1BFXSBBZGQgQVBJIHRvIHNldCBwdXJwb3NlIGFuZCBo
aW50cyBvZiBhY3RpdmUgZWRpdGFibGUgZWxlbWVudCB0byBpbnB1dCBtZXRob2RzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDU2MDUKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgRU5BQkxFX0FVVE9D
QVBJVEFMSVpFIGJ1aWxkIGZsYWcuIEl0J3MgcHJpdmF0ZSBhbmQgZGlzYWJsZWQgYnkgZGVmYXVs
dCwgZW5hYmxlZCBpbiBHVEsgYW5kIFdQRSBwb3J0cy4KKworICAgICAgICAqIFNvdXJjZS9jbWFr
ZS9PcHRpb25zR1RLLmNtYWtlOgorICAgICAgICAqIFNvdXJjZS9jbWFrZS9PcHRpb25zV1BFLmNt
YWtlOgorICAgICAgICAqIFNvdXJjZS9jbWFrZS9XZWJLaXRGZWF0dXJlcy5jbWFrZToKKwogMjAx
OS0xMi0xOCAgRGllZ28gUGlubyBHYXJjaWEgIDxkcGlub0BpZ2FsaWEuY29tPgogCiAgICAgICAg
IFtHVEtdW1dQRV0gUmVuZGVyaXphdGlvbiBvZiBDb25pYyBncmFkaWVudHMKZGlmZiAtLWdpdCBh
L1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nIGIvUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cK
aW5kZXggMmNlYWZlZDZkY2UuLmFlZTI5NjcwNmYzIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRl
c3RzL0NoYW5nZUxvZworKysgYi9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE0IEBACisyMDE5LTEyLTI3ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlh
LmNvbT4KKworICAgICAgICBbR1RLXVtXUEVdIEFkZCBBUEkgdG8gc2V0IHB1cnBvc2UgYW5kIGhp
bnRzIG9mIGFjdGl2ZSBlZGl0YWJsZSBlbGVtZW50IHRvIGlucHV0IG1ldGhvZHMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTYwNQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNwbGl0IEVOQUJMRV9JT1Nf
QVVUT0NPUlJFQ1RfQU5EX0FVVE9DQVBJVEFMSVpFIGFuZCByZW1vdmUgdGhlIElPUyBwcmVmaXgu
CisKKyAgICAgICAgKiBTdGl0Y2hNYXJrZXIvd3RmL0ZlYXR1cmVEZWZpbmVzLmg6CisKIDIwMTkt
MTItMTYgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBT
dHlsZUJlbmNoIHN1YnRlc3QgZm9yIGR5bmFtaWMgbWVkaWEgcXVlcnkgcGVyZm9ybWFuY2UKZGlm
ZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3RpdGNoTWFya2VyL3d0Zi9GZWF0dXJlRGVmaW5l
cy5oIGIvUGVyZm9ybWFuY2VUZXN0cy9TdGl0Y2hNYXJrZXIvd3RmL0ZlYXR1cmVEZWZpbmVzLmgK
aW5kZXggYWQ0YjkxZWU4MjQuLjkyMDk5OTdmZWQyIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRl
c3RzL1N0aXRjaE1hcmtlci93dGYvRmVhdHVyZURlZmluZXMuaAorKysgYi9QZXJmb3JtYW5jZVRl
c3RzL1N0aXRjaE1hcmtlci93dGYvRmVhdHVyZURlZmluZXMuaApAQCAtODYsOCArODYsMTIgQEAK
ICNkZWZpbmUgRU5BQkxFX0xFVFRFUlBSRVNTIDEKICNlbmRpZgogCi0jaWYgIWRlZmluZWQoRU5B
QkxFX0lPU19BVVRPQ09SUkVDVF9BTkRfQVVUT0NBUElUQUxJWkUpCi0jZGVmaW5lIEVOQUJMRV9J
T1NfQVVUT0NPUlJFQ1RfQU5EX0FVVE9DQVBJVEFMSVpFIDEKKyNpZiAhZGVmaW5lZChFTkFCTEVf
QVVUT0NPUlJFQ1QpCisjZGVmaW5lIEVOQUJMRV9BVVRPQ09SUkVDVCAxCisjZW5kaWYKKworI2lm
ICFkZWZpbmVkKEVOQUJMRV9BVVRPQ0FQSVRBTElaRSkKKyNkZWZpbmUgRU5BQkxFX0FVVE9DQVBJ
VEFMSVpFIDEKICNlbmRpZgogCiAjaWYgIWRlZmluZWQoRU5BQkxFX0lPU19HRVNUVVJFX0VWRU5U
UykgJiYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggNGJmZGYwNWU4NDIuLjJkMmUyNWJj
NGVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE5LTEyLTI3ICBDYXJsb3MgR2FyY2lhIENhbXBv
cyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXVtXUEVdIEFkZCBBUEkgdG8g
c2V0IHB1cnBvc2UgYW5kIGhpbnRzIG9mIGFjdGl2ZSBlZGl0YWJsZSBlbGVtZW50IHRvIGlucHV0
IG1ldGhvZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIwNTYwNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFNwbGl0IEVOQUJMRV9JT1NfQVVUT0NPUlJFQ1RfQU5EX0FVVE9DQVBJVEFMSVpFIGFuZCByZW1v
dmUgdGhlIElPUyBwcmVmaXguCisKKyAgICAgICAgKiB3dGYvRmVhdHVyZURlZmluZXMuaDoKKwog
MjAxOS0xMi0yNCAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbTWVkaWEgaW4gR1BVIHByb2Nlc3NdIEVuYWJsZSBtZWRpYSBwbGF5ZXIgcHJveHkgbG9n
Z2luZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRmVhdHVyZURlZmluZXMuaCBiL1NvdXJj
ZS9XVEYvd3RmL0ZlYXR1cmVEZWZpbmVzLmgKaW5kZXggNjgyYTFlODk1YTIuLmIyN2ZkYTQ1MzU1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9GZWF0dXJlRGVmaW5lcy5oCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL0ZlYXR1cmVEZWZpbmVzLmgKQEAgLTEwNyw4ICsxMDcsMTIgQEAKICNkZWZpbmUg
RU5BQkxFX0xFVFRFUlBSRVNTIDEKICNlbmRpZgogCi0jaWYgIWRlZmluZWQoRU5BQkxFX0lPU19B
VVRPQ09SUkVDVF9BTkRfQVVUT0NBUElUQUxJWkUpCi0jZGVmaW5lIEVOQUJMRV9JT1NfQVVUT0NP
UlJFQ1RfQU5EX0FVVE9DQVBJVEFMSVpFIDEKKyNpZiAhZGVmaW5lZChFTkFCTEVfQVVUT0NPUlJF
Q1QpCisjZGVmaW5lIEVOQUJMRV9BVVRPQ09SUkVDVCAxCisjZW5kaWYKKworI2lmICFkZWZpbmVk
KEVOQUJMRV9BVVRPQ0FQSVRBTElaRSkKKyNkZWZpbmUgRU5BQkxFX0FVVE9DQVBJVEFMSVpFIDEK
ICNlbmRpZgogCiAjaWYgIWRlZmluZWQoRU5BQkxFX0lPU19HRVNUVVJFX0VWRU5UUykgJiYgVVNF
KEFQUExFX0lOVEVSTkFMX1NESykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBlNjczOGM2M2U4OC4uNzVmNjY3NzZm
ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAxOS0xMi0yNyAgQ2FybG9zIEdhcmNp
YSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS11bV1BFXSBBZGQg
QVBJIHRvIHNldCBwdXJwb3NlIGFuZCBoaW50cyBvZiBhY3RpdmUgZWRpdGFibGUgZWxlbWVudCB0
byBpbnB1dCBtZXRob2RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDU2MDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBVc2UgRU5BQkxFKEFVVE9DQVBJVEFMSVpFKSBhbmQgRU5BQkxFKEFVVE9DT1JSRUNU
KSBpbnN0ZWFkIG9mIEVOQUJMRShJT1NfQVVUT0NPUlJFQ1RfQU5EX0FVVE9DQVBJVEFMSVpFKS4K
KworICAgICAgICAqIFNvdXJjZXMudHh0OiBBZGQgQXV0b2NhcGl0YWxpemUuY3BwIHRvIHRoZSBi
dWlsZC4KKyAgICAgICAgKiBodG1sL0F1dG9jYXBpdGFsaXplLmNwcDogQWRkIEVOQUJMRShBVVRP
Q0FQSVRBTElaRSkgZ3VhcmRzLgorICAgICAgICAqIGh0bWwvQXV0b2NhcGl0YWxpemUuaDogRGl0
dG8uCisgICAgICAgICogaHRtbC9IVE1MRWxlbWVudC5jcHA6CisgICAgICAgICogaHRtbC9IVE1M
RWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTEVsZW1lbnQuaWRsOgorICAgICAgICAqIGh0
bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHA6CisgICAgICAgICogaHRtbC9IVE1MRm9ybUNv
bnRyb2xFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwOgorICAg
ICAgICAqIGh0bWwvSFRNTEZvcm1FbGVtZW50Lmg6CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xp
ZW50cy5jcHA6IFVwZGF0ZSB0byBuZXcgQVBJIG9mIEVkaXRvckNsaWVudDo6c2V0SW5wdXRNZXRo
b2RTdGF0ZQorICAgICAgICAqIHBhZ2UvRWRpdG9yQ2xpZW50Lmg6IFRoZSBmb2N1c2VkIGVsZW1l
bnQgb3IgbnVsbHB0ciBpcyBub3cgcmVjZWl2ZWQgYnkgc2V0SW5wdXRNZXRob2RTdGF0ZSgpIGlu
c3RlYWQgb2YgZW5hYmxlZC9kaXNhYmxlZCBib29sZWFuLgorICAgICAgICAqIHBhZ2UvRm9jdXND
b250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvY3VzQ29udHJvbGxlcjo6c2V0Rm9j
dXNlZEVsZW1lbnQpOiBQYXNzIHRoZSBmb2N1c2VkIGVsZW1lbnQgb3IgbnVsbHB0ciB0byBzZXRJ
bnB1dE1ldGhvZFN0YXRlKCkuCisKIDIwMTktMTItMjUgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFw
cGxlLmNvbT4KIAogICAgICAgICBSdW4gd2l0aCBvZmZzZXQgZnJvbSB0aGUgY29udGVudCBib3gn
cyBsb2dpY2FsIGxlZnQgcGFpbnQgaXRzIHRhYiBzdG9wIGF0IHdyb25nIHBvc2l0aW9uLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzLnR4dAppbmRleCBjOTY4MTg5YzhhOC4uM2QxY2M4MmE4ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBA
IC0xMDk0LDYgKzEwOTQsNyBAQCBoaXN0b3J5L0NhY2hlZEZyYW1lLmNwcAogaGlzdG9yeS9DYWNo
ZWRQYWdlLmNwcAogaGlzdG9yeS9IaXN0b3J5SXRlbS5jcHAKIAoraHRtbC9BdXRvY2FwaXRhbGl6
ZS5jcHAKIGh0bWwvQXV0b2ZpbGwuY3BwCiBodG1sL0Jhc2VCdXR0b25JbnB1dFR5cGUuY3BwCiBo
dG1sL0Jhc2VDaGVja2FibGVJbnB1dFR5cGUuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggODg5NTRlOTkwNmYuLmVjMTdiNjg0
ZGRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC0zMTYyLDcgKzMxNjIsNiBAQAogCQlBNUNFOUYzRjFFNEM0MTc0MDAxQkJFN0Mg
LyogUmVzb3VyY2VUaW1pbmcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE1Q0U5RjNDMUU0QkM1ODYwMDFCQkU3QyAvKiBSZXNvdXJjZVRpbWluZy5oICov
OyB9OwogCQlBNURFQkRBNDE2RkI5MDg3MDA4MzZGRTAgLyogV2ViS2l0UGxheWJhY2tUYXJnZXRB
dmFpbGFiaWxpdHlFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTVERUJEQTAxNkZCOTA4NzAwODM2RkUwIC8qIFdlYktpdFBsYXliYWNrVGFyZ2V0
QXZhaWxhYmlsaXR5RXZlbnQuaCAqLzsgfTsKIAkJQTVGMzZEM0IxOEY3NTg3MjAwNTRDMDI0IC8q
IFBhZ2VTY3JpcHREZWJ1Z1NlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTVGMzZEMzkxOEY3NTg3MjAwNTRDMDI0IC8qIFBhZ2VTY3JpcHREZWJ1
Z1NlcnZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
Ci0JCUE1RjZFMTZCMTMyRUQ0NkUwMDhFREFFMyAvKiBBdXRvY2FwaXRhbGl6ZS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUY2RTE2QzEzMkVENDZF
MDA4RURBRTMgLyogQXV0b2NhcGl0YWxpemUuY3BwICovOyB9OwogCQlBNjE0OEE3OTEyRTQxRTNC
MDA0NEE3ODQgLyogSlNIVE1MS2V5Z2VuRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTYxNDhBNzcxMkU0MUUzQjAwNDRBNzg0IC8qIEpTSFRN
TEtleWdlbkVsZW1lbnQuaCAqLzsgfTsKIAkJQTZEMTY5NjQxMzQ2QjRDMTAwMEVCNzcwIC8qIFNo
YWRvd1Jvb3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE2RDE2OTYzMTM0NkI0QzEwMDBFQjc3MCAvKiBTaGFkb3dSb290LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTZENUE5OUMxNjI5RDcwMDAwMjk3
MzMwIC8qIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGUuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTZENUE5OUExNjI5RDZGRjAwMjk3
MzMwIC8qIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGUuY3BwICovOyB9OwpAQCAt
MzM1NDAsNyArMzM1MzksNiBAQAogCQkJCUJFODhFMERCMTcxNUQyQTIwMDY1OEQ5OCAvKiBBdWRp
b1RyYWNrTGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDREUzQTg1NzE3RjYwMjA0MDBDNUJF
MjAgLyogQXVkaW9UcmFja1ByaXZhdGVBVkZPYmpDLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0Q1
NEE3NjIxODBGOUY3MDAwQjA3NkM5IC8qIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZP
YmpDLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUE1RjZFMTZCMTMyRUQ0NkUwMDhFREFFMyAvKiBB
dXRvY2FwaXRhbGl6ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzE5NDI3RjFEMDg4RjIxMDAy
QUE1MUQgLyogQVZBc3NldE1JTUVUeXBlQ2FjaGUubW0gaW4gU291cmNlcyAqLywKIAkJCQlDREVD
QTg5QTFFREY0NDdEMDBEQ0IwOEIgLyogQVZBc3NldFRyYWNrVXRpbGl0aWVzLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQ0RDNjc1MjIxRUFFQTlCNzAwNzI3Qzg0IC8qIEFWQXVkaW9TZXNzaW9uQ2Fw
dHVyZURldmljZU1hbmFnZXIubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvQXV0b2NhcGl0YWxpemUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9BdXRv
Y2FwaXRhbGl6ZS5jcHAKaW5kZXggMjE4ZjNkYjJmNjEuLjNhMGY5MTE5OWI2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0F1dG9jYXBpdGFsaXplLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0F1dG9jYXBpdGFsaXplLmNwcApAQCAtMjYsNiArMjYsOCBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIkF1dG9jYXBpdGFsaXplLmgiCiAKKyNpZiBFTkFCTEUoQVVU
T0NBUElUQUxJWkUpCisKICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpAQCAtNzcsMyArNzksNSBAQCBjb25zdCBBdG9tU3RyaW5nJiBzdHJpbmdG
b3JBdXRvY2FwaXRhbGl6ZVR5cGUoQXV0b2NhcGl0YWxpemVUeXBlIHR5cGUpCiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShBVVRPQ0FQSVRBTElaRSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQXV0b2NhcGl0YWxpemUuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvQXV0b2NhcGl0YWxpemUuaAppbmRleCA5MTUxYmMxYTJmMC4uMWMwNTJmZWRi
OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQXV0b2NhcGl0YWxpemUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0F1dG9jYXBpdGFsaXplLmgKQEAgLTI1LDYgKzI1LDggQEAK
IAogI3ByYWdtYSBvbmNlCiAKKyNpZiBFTkFCTEUoQVVUT0NBUElUQUxJWkUpCisKICNpbmNsdWRl
ICJBdXRvY2FwaXRhbGl6ZVR5cGVzLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbVN0cmluZy5o
PgogCkBAIC0zNCwzICszNiw1IEBAIEF1dG9jYXBpdGFsaXplVHlwZSBhdXRvY2FwaXRhbGl6ZVR5
cGVGb3JBdHRyaWJ1dGVWYWx1ZShjb25zdCBBdG9tU3RyaW5nJik7CiBjb25zdCBBdG9tU3RyaW5n
JiBzdHJpbmdGb3JBdXRvY2FwaXRhbGl6ZVR5cGUoQXV0b2NhcGl0YWxpemVUeXBlKTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKEFVVE9DQVBJVEFMSVpFKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAppbmRleCA3YWIxZmY1ZGUyNy4uMGEwY2IwOTgx
N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCkBAIC0xMDY5LDcgKzEwNjksNyBA
QCBib29sIEhUTUxFbGVtZW50Ojppc0FjdHVhbGx5RGlzYWJsZWQoKSBjb25zdAogICAgIHJldHVy
biBjYW5CZUFjdHVhbGx5RGlzYWJsZWQoKSAmJiBpc0Rpc2FibGVkRm9ybUNvbnRyb2woKTsKIH0K
IAotI2lmIEVOQUJMRShJT1NfQVVUT0NPUlJFQ1RfQU5EX0FVVE9DQVBJVEFMSVpFKQorI2lmIEVO
QUJMRShBVVRPQ0FQSVRBTElaRSkKIAogY29uc3QgQXRvbVN0cmluZyYgSFRNTEVsZW1lbnQ6OmF1
dG9jYXBpdGFsaXplKCkgY29uc3QKIHsKQEAgLTEwODYsNiArMTA4NiwxMCBAQCB2b2lkIEhUTUxF
bGVtZW50OjpzZXRBdXRvY2FwaXRhbGl6ZShjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSkKICAgICBz
ZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGF1dG9jYXBpdGFsaXplQXR0ciwgdmFs
dWUpOwogfQogCisjZW5kaWYKKworI2lmIEVOQUJMRShBVVRPQ09SUkVDVCkKKwogYm9vbCBIVE1M
RWxlbWVudDo6c2hvdWxkQXV0b2NvcnJlY3QoKSBjb25zdAogewogICAgIGF1dG8mIGF1dG9jb3Jy
ZWN0VmFsdWUgPSBhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6YXV0
b2NvcnJlY3RBdHRyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaAppbmRleCBkMmNmNjk1NGM0
OS4uZjEwMjBiYmExN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmgKQEAgLTIyLDcgKzIy
LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpZiBFTkFCTEUoSU9TX0FVVE9DT1JSRUNUX0FORF9B
VVRPQ0FQSVRBTElaRSkKKyNpZiBFTkFCTEUoQVVUT0NBUElUQUxJWkUpCiAjaW5jbHVkZSAiQXV0
b2NhcGl0YWxpemUuaCIKICNlbmRpZgogCkBAIC0xMDIsMTEgKzEwMiwxMyBAQCBwdWJsaWM6CiAg
ICAgYm9vbCBjYW5CZUFjdHVhbGx5RGlzYWJsZWQoKSBjb25zdDsKICAgICBib29sIGlzQWN0dWFs
bHlEaXNhYmxlZCgpIGNvbnN0OwogCi0jaWYgRU5BQkxFKElPU19BVVRPQ09SUkVDVF9BTkRfQVVU
T0NBUElUQUxJWkUpCisjaWYgRU5BQkxFKEFVVE9DQVBJVEFMSVpFKQogICAgIFdFQkNPUkVfRVhQ
T1JUIHZpcnR1YWwgQXV0b2NhcGl0YWxpemVUeXBlIGF1dG9jYXBpdGFsaXplVHlwZSgpIGNvbnN0
OwogICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IEF0b21TdHJpbmcmIGF1dG9jYXBpdGFsaXplKCkg
Y29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRBdXRvY2FwaXRhbGl6ZShjb25zdCBB
dG9tU3RyaW5nJiB2YWx1ZSk7CisjZW5kaWYKIAorI2lmIEVOQUJMRShBVVRPQ09SUkVDVCkKICAg
ICBib29sIGF1dG9jb3JyZWN0KCkgY29uc3QgeyByZXR1cm4gc2hvdWxkQXV0b2NvcnJlY3QoKTsg
fQogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgYm9vbCBzaG91bGRBdXRvY29ycmVjdCgpIGNv
bnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0QXV0b2NvcnJlY3QoYm9vbCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmlkbCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEVsZW1lbnQuaWRsCmluZGV4IGExZjg0M2RmN2E3Li42MjkyY2ZhOWE3OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5pZGwKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5pZGwKQEAgLTU4LDggKzU4LDggQEAKICAgICBb
Q0VSZWFjdGlvbnNdIGF0dHJpYnV0ZSBbVHJlYXROdWxsQXM9RW1wdHlTdHJpbmddIERPTVN0cmlu
ZyBvdXRlclRleHQ7CiAKICAgICAvLyBpT1MgYXV0b2NvcnJlY3QgLyBhdXRvY2FwaXRhbGl6YXRp
b24gZXh0ZW5zaW9ucy4KLSAgICBbQ29uZGl0aW9uYWw9SU9TX0FVVE9DT1JSRUNUX0FORF9BVVRP
Q0FQSVRBTElaRSwgQ0VSZWFjdGlvbnNdIGF0dHJpYnV0ZSBib29sZWFuIGF1dG9jb3JyZWN0Owot
ICAgIFtDb25kaXRpb25hbD1JT1NfQVVUT0NPUlJFQ1RfQU5EX0FVVE9DQVBJVEFMSVpFLCBDRVJl
YWN0aW9uc10gYXR0cmlidXRlIFtUcmVhdE51bGxBcz1FbXB0eVN0cmluZ10gRE9NU3RyaW5nIGF1
dG9jYXBpdGFsaXplOworICAgIFtDb25kaXRpb25hbD1BVVRPQ09SUkVDVCwgQ0VSZWFjdGlvbnNd
IGF0dHJpYnV0ZSBib29sZWFuIGF1dG9jb3JyZWN0OworICAgIFtDb25kaXRpb25hbD1BVVRPQ0FQ
SVRBTElaRSwgQ0VSZWFjdGlvbnNdIGF0dHJpYnV0ZSBbVHJlYXROdWxsQXM9RW1wdHlTdHJpbmdd
IERPTVN0cmluZyBhdXRvY2FwaXRhbGl6ZTsKIAogICAgIC8vIEZJWE1FOiBXZSBhcmUgdGhlIG9u
bHkgYnJvd3NlciB0byBzdXBwb3J0IHRoaXMgbm93IHRoYXQgQmxpbmsgZHJvcHBlZCBpdCAoaHR0
cDovL2NyYnVnLmNvbS82ODg5NDMpLgogICAgIFtDRVJlYWN0aW9ucywgUmVmbGVjdF0gYXR0cmli
dXRlIERPTVN0cmluZyB3ZWJraXRkcm9wem9uZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCmluZGV4IGUwYzJlMGYwMTM5Li5kNjExYmMxYjIyNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCkBA
IC02MTUsNyArNjE1LDcgQEAgdm9pZCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpkaXNwYXRjaEJs
dXJFdmVudChSZWZQdHI8RWxlbWVudD4mJiBuZXdGb2N1c2VkRWxlbWUKICAgICBoaWRlVmlzaWJs
ZVZhbGlkYXRpb25NZXNzYWdlKCk7CiB9CiAKLSNpZiBFTkFCTEUoSU9TX0FVVE9DT1JSRUNUX0FO
RF9BVVRPQ0FQSVRBTElaRSkKKyNpZiBFTkFCTEUoQVVUT0NPUlJFQ1QpCiAKIC8vIEZJWE1FOiBX
ZSBzaG91bGQgbG9vayB0byBzaGFyZSB0aGlzIGNvZGUgd2l0aCBjbGFzcyBIVE1MRm9ybUVsZW1l
bnQgaW5zdGVhZCBvZiBkdXBsaWNhdGluZyB0aGUgbG9naWMuCiAKQEAgLTYyOSw2ICs2MjksMTAg
QEAgYm9vbCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpzaG91bGRBdXRvY29ycmVjdCgpIGNvbnN0
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKKyNlbmRpZgorCisjaWYgRU5BQkxFKEFVVE9DQVBJVEFM
SVpFKQorCiBBdXRvY2FwaXRhbGl6ZVR5cGUgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6YXV0b2Nh
cGl0YWxpemVUeXBlKCkgY29uc3QKIHsKICAgICBBdXRvY2FwaXRhbGl6ZVR5cGUgdHlwZSA9IEhU
TUxFbGVtZW50OjphdXRvY2FwaXRhbGl6ZVR5cGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRm9ybUNvbnRyb2xFbGVtZW50LmgKaW5kZXggY2ZjOTc4ZWQ3YTguLjYxMzQwYmZhNzNhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaApAQCAtMjcs
NyArMjcsNyBAQAogI2luY2x1ZGUgIkZvcm1Bc3NvY2lhdGVkRWxlbWVudC5oIgogI2luY2x1ZGUg
IkxhYmVsYWJsZUVsZW1lbnQuaCIKIAotI2lmIEVOQUJMRShJT1NfQVVUT0NPUlJFQ1RfQU5EX0FV
VE9DQVBJVEFMSVpFKQorI2lmIEVOQUJMRShBVVRPQ0FQSVRBTElaRSkKICNpbmNsdWRlICJBdXRv
Y2FwaXRhbGl6ZS5oIgogI2VuZGlmCiAKQEAgLTkxLDggKzkxLDExIEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIGJvb2wgaXNBY3RpdmF0ZWRTdWJtaXQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQog
ICAgIHZpcnR1YWwgdm9pZCBzZXRBY3RpdmF0ZWRTdWJtaXQoYm9vbCkgeyB9CiAKLSNpZiBFTkFC
TEUoSU9TX0FVVE9DT1JSRUNUX0FORF9BVVRPQ0FQSVRBTElaRSkKKyNpZiBFTkFCTEUoQVVUT0NP
UlJFQ1QpCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzaG91bGRBdXRvY29ycmVjdCgpIGNvbnN0
IGZpbmFsOworI2VuZGlmCisKKyNpZiBFTkFCTEUoQVVUT0NBUElUQUxJWkUpCiAgICAgV0VCQ09S
RV9FWFBPUlQgQXV0b2NhcGl0YWxpemVUeXBlIGF1dG9jYXBpdGFsaXplVHlwZSgpIGNvbnN0IGZp
bmFsOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1F
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcAppbmRl
eCAxNWFkNTdmOTFiYi4uZTdlNDE0Yzg3ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEZvcm1FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3Jt
RWxlbWVudC5jcHAKQEAgLTQwNiw3ICs0MDYsNyBAQCB2b2lkIEhUTUxGb3JtRWxlbWVudDo6cmVz
ZXRBc3NvY2lhdGVkRm9ybUNvbnRyb2xFbGVtZW50cygpCiAgICAgICAgIGFzc29jaWF0ZWRGb3Jt
Q29udHJvbEVsZW1lbnQtPnJlc2V0KCk7CiB9CiAKLSNpZiBFTkFCTEUoSU9TX0FVVE9DT1JSRUNU
X0FORF9BVVRPQ0FQSVRBTElaRSkKKyNpZiBFTkFCTEUoQVVUT0NPUlJFQ1QpCiAKIC8vIEZJWE1F
OiBXZSBzaG91bGQgbG9vayB0byBzaGFyZSB0aGlzIGNvZGUgd2l0aCBjbGFzcyBIVE1MRm9ybUNv
bnRyb2xFbGVtZW50IGluc3RlYWQgb2YgZHVwbGljYXRpbmcgdGhlIGxvZ2ljLgogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuaAppbmRleCBiMjE3MWQ3MTk1MS4uNDdlMzlmZDU3N2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuaApAQCAtMzEsMTAgKzMxLDYgQEAK
ICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtIYXNoU2V0Lmg+
CiAKLSNpZiBFTkFCTEUoSU9TX0FVVE9DT1JSRUNUX0FORF9BVVRPQ0FQSVRBTElaRSkKLSNpbmNs
dWRlICJBdXRvY2FwaXRhbGl6ZS5oIgotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgRXZlbnQ7CkBAIC02Nyw3ICs2Myw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHNldEF1dG9jb21wbGV0ZShjb25zdCBBdG9tU3RyaW5nJik7CiAgICAgV0VCQ09SRV9F
WFBPUlQgY29uc3QgQXRvbVN0cmluZyYgYXV0b2NvbXBsZXRlKCkgY29uc3Q7CiAKLSNpZiBFTkFC
TEUoSU9TX0FVVE9DT1JSRUNUX0FORF9BVVRPQ0FQSVRBTElaRSkKKyNpZiBFTkFCTEUoQVVUT0NP
UlJFQ1QpCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzaG91bGRBdXRvY29ycmVjdCgpIGNvbnN0
IGZpbmFsOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0
eUNsaWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKaW5k
ZXggMGViNWExMjBhZjguLjg0ZTRlMThjM2Y2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRW1wdHlDbGllbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlD
bGllbnRzLmNwcApAQCAtMjk5LDcgKzI5OSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBzcGVsbGlu
Z1VJSXNTaG93aW5nKCkgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIHZvaWQgd2lsbFNl
dElucHV0TWV0aG9kU3RhdGUoKSBmaW5hbCB7IH0KLSAgICB2b2lkIHNldElucHV0TWV0aG9kU3Rh
dGUoYm9vbCkgZmluYWwgeyB9CisgICAgdm9pZCBzZXRJbnB1dE1ldGhvZFN0YXRlKEVsZW1lbnQq
KSBmaW5hbCB7IH0KIAogICAgIGJvb2wgY2FuU2hvd0ZvbnRQYW5lbCgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIGZhbHNlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9y
Q2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oCmluZGV4IGNhN2I2
ODZjZjk0Li45MzY3MzBmOTZmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0
b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oCkBAIC0x
NzksNyArMTc5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzaG93U3BlbGxpbmdVSShi
b29sIHNob3cpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgc3BlbGxpbmdVSUlzU2hvd2luZygpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFNldElucHV0TWV0aG9kU3RhdGUoKSA9IDA7Ci0gICAg
dmlydHVhbCB2b2lkIHNldElucHV0TWV0aG9kU3RhdGUoYm9vbCBlbmFibGVkKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIHNldElucHV0TWV0aG9kU3RhdGUoRWxlbWVudCopID0gMDsKIAogICAgIC8v
IFN1cHBvcnQgZm9yIGdsb2JhbCBzZWxlY3Rpb25zLCB1c2VkIG9uIHBsYXRmb3JtcyBsaWtlIHRo
ZSBYIFdpbmRvdyBTeXN0ZW0gdGhhdCB0cmVhdAogICAgIC8vIHNlbGVjdGlvbiBhcyBhIHR5cGUg
b2YgY2xpcGJvYXJkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRy
b2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCmluZGV4
IGU1OTQwZGQyYThiLi5lNzlmNzg1YWIzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250
cm9sbGVyLmNwcApAQCAtODM1LDE0ICs4MzUsMTQgQEAgYm9vbCBGb2N1c0NvbnRyb2xsZXI6OnNl
dEZvY3VzZWRFbGVtZW50KEVsZW1lbnQqIGVsZW1lbnQsIEZyYW1lJiBuZXdGb2N1c2VkRnJhbWUK
ICAgICBpZiAoIWVsZW1lbnQpIHsKICAgICAgICAgaWYgKG9sZERvY3VtZW50KQogICAgICAgICAg
ICAgb2xkRG9jdW1lbnQtPnNldEZvY3VzZWRFbGVtZW50KG51bGxwdHIpOwotICAgICAgICBtX3Bh
Z2UuZWRpdG9yQ2xpZW50KCkuc2V0SW5wdXRNZXRob2RTdGF0ZShmYWxzZSk7CisgICAgICAgIG1f
cGFnZS5lZGl0b3JDbGllbnQoKS5zZXRJbnB1dE1ldGhvZFN0YXRlKG51bGxwdHIpOwogICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKICAgICBSZWY8RG9jdW1lbnQ+IG5ld0RvY3VtZW50KGVs
ZW1lbnQtPmRvY3VtZW50KCkpOwogCiAgICAgaWYgKG5ld0RvY3VtZW50LT5mb2N1c2VkRWxlbWVu
dCgpID09IGVsZW1lbnQpIHsKLSAgICAgICAgbV9wYWdlLmVkaXRvckNsaWVudCgpLnNldElucHV0
TWV0aG9kU3RhdGUoZWxlbWVudC0+c2hvdWxkVXNlSW5wdXRNZXRob2QoKSk7CisgICAgICAgIG1f
cGFnZS5lZGl0b3JDbGllbnQoKS5zZXRJbnB1dE1ldGhvZFN0YXRlKGVsZW1lbnQpOwogICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgCkBAIC04NjIsNyArODYyLDcgQEAgYm9vbCBGb2N1
c0NvbnRyb2xsZXI6OnNldEZvY3VzZWRFbGVtZW50KEVsZW1lbnQqIGVsZW1lbnQsIEZyYW1lJiBu
ZXdGb2N1c2VkRnJhbWUKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKG5ld0RvY3Vt
ZW50LT5mb2N1c2VkRWxlbWVudCgpID09IGVsZW1lbnQpCi0gICAgICAgIG1fcGFnZS5lZGl0b3JD
bGllbnQoKS5zZXRJbnB1dE1ldGhvZFN0YXRlKGVsZW1lbnQtPnNob3VsZFVzZUlucHV0TWV0aG9k
KCkpOworICAgICAgICBtX3BhZ2UuZWRpdG9yQ2xpZW50KCkuc2V0SW5wdXRNZXRob2RTdGF0ZShl
bGVtZW50KTsKIAogICAgIG1fZm9jdXNTZXRUaW1lID0gTW9ub3RvbmljVGltZTo6bm93KCk7CiAg
ICAgbV9mb2N1c1JlcGFpbnRUaW1lci5zdG9wKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDZmNjE2Yzc4YWQzLi5i
M2Y4YzQ4OTIzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw4NCBAQAorMjAxOS0xMi0yNyAgQ2FybG9z
IEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS11bV1BF
XSBBZGQgQVBJIHRvIHNldCBwdXJwb3NlIGFuZCBoaW50cyBvZiBhY3RpdmUgZWRpdGFibGUgZWxl
bWVudCB0byBpbnB1dCBtZXRob2RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMDU2MDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGQgaW5wdXQtcHVycG9zZSBhbmQgaW5wdXQtaGludHMgcHJvcGVydGll
cyB0byBXZWJLaXRJbnB1dE1ldGhvZENvbnRleHQuIFRoZSBtZXNzYWdlIFNldElucHV0TWV0aG9k
U3RhdGUgbm93CisgICAgICAgIHJlY2VpdmVzIGFuIG9wdGlvbmFsIElucHV0TWV0aG9kU3RhdGUg
c3RydWN0IHdpdGggaW5mb3JtYXRpb24gYWJvdXQgdGhlIHB1cnBvc2UgYW5kIGhpbnRzIG9mIHRo
ZSBhY3RpdmUgZWRpdGFibGUKKyAgICAgICAgZWxlbWVudC4KKworICAgICAgICAqIFNjcmlwdHMv
d2Via2l0L21lc3NhZ2VzLnB5OiBPbmx5IGluY2x1ZGUgSW5wdXRNZXRob2RTdGF0ZS5oIGZvciBH
VEsgYW5kIFdQRS4KKyAgICAgICAgKiBTaGFyZWQvZ2xpYi9JbnB1dE1ldGhvZFN0YXRlLmNwcDog
QWRkZWQuCisgICAgICAgIChXZWJLaXQ6OklucHV0TWV0aG9kU3RhdGU6OnNldFB1cnBvc2VPckhp
bnRGb3JJbnB1dE1vZGUpOgorICAgICAgICAoV2ViS2l0OjppbnB1dEVsZW1lbnRIYXNEaWdpdHNQ
YXR0ZXJuKToKKyAgICAgICAgKFdlYktpdDo6SW5wdXRNZXRob2RTdGF0ZTo6c2V0UHVycG9zZUZv
cklucHV0RWxlbWVudCk6CisgICAgICAgIChXZWJLaXQ6OklucHV0TWV0aG9kU3RhdGU6OmFkZEhp
bnRzRm9yQXV0b2NhcGl0YWxpemVUeXBlKToKKyAgICAgICAgKFdlYktpdDo6SW5wdXRNZXRob2RT
dGF0ZTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6SW5wdXRNZXRob2RTdGF0ZTo6
ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvZ2xpYi9JbnB1dE1ldGhvZFN0YXRlLmg6IEFkZGVk
LgorICAgICAgICAoV2ViS2l0OjpvcGVyYXRvcj09KToKKyAgICAgICAgKiBTb3VyY2VzR1RLLnR4
dDoKKyAgICAgICAgKiBTb3VyY2VzV1BFLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2ds
aWIvSW5wdXRNZXRob2RGaWx0ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbnB1dE1ldGhvZEZp
bHRlcjo6c2V0Q29udGV4dCk6IFVzZSBpc0VuYWJsZWQoKSBpbnN0ZWFkIG9mIG1fZW5hYmxlZC4K
KyAgICAgICAgKFdlYktpdDo6SW5wdXRNZXRob2RGaWx0ZXI6OnNldFN0YXRlKTogTm93IHJlY2Vp
dmVzIGFuIG9wdGlvbmFsIElucHV0TWV0aG9kU3RhdGUgc3RydWN0LgorICAgICAgICAoV2ViS2l0
OjpJbnB1dE1ldGhvZEZpbHRlcjo6ZmlsdGVyS2V5RXZlbnQpOiBVc2UgaXNFbmFibGVkKCkgaW5z
dGVhZCBvZiBtX2VuYWJsZWQuCisgICAgICAgIChXZWJLaXQ6OklucHV0TWV0aG9kRmlsdGVyOjpp
c1ZpZXdGb2N1c2VkIGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OnRvV2ViS2l0UHVy
cG9zZSk6IEhlbHBlciB0byBjb252ZXJ0IElucHV0TWV0aG9kU3RhdGU6OlB1cnBvc2UgdG8gV2Vi
S2l0SW5wdXRQdXJwb3NlLgorICAgICAgICAoV2ViS2l0Ojp0b1dlYktpdEhpbnRzKTogSGVscGVy
IHRvIGNvbnZlcnQgSW5wdXRNZXRob2RTdGF0ZTo6SGludCB0byBXZWJLaXRJbnB1dEhpbnRzLgor
ICAgICAgICAoV2ViS2l0OjpJbnB1dE1ldGhvZEZpbHRlcjo6bm90aWZ5Rm9jdXNlZEluKTogU2V0
IHRoZSBwdXJwb3NlIGFuZCBoaW50cyB0byB0aGUgY29udGV4dC4KKyAgICAgICAgKFdlYktpdDo6
SW5wdXRNZXRob2RGaWx0ZXI6Om5vdGlmeUZvY3VzZWRPdXQpOiBVc2UgaXNFbmFibGVkKCkgaW5z
dGVhZCBvZiBtX2VuYWJsZWQuCisgICAgICAgIChXZWJLaXQ6OklucHV0TWV0aG9kRmlsdGVyOjpu
b3RpZnlDdXJzb3JSZWN0KTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OklucHV0TWV0aG9kRmls
dGVyOjpwcmVlZGl0U3RhcnRlZCk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpJbnB1dE1ldGhv
ZEZpbHRlcjo6cHJlZWRpdENoYW5nZWQpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6SW5wdXRN
ZXRob2RGaWx0ZXI6OnByZWVkaXRGaW5pc2hlZCk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpJ
bnB1dE1ldGhvZEZpbHRlcjo6Y29tbWl0dGVkKTogRGl0dG8uCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9nbGliL0lucHV0TWV0aG9kRmlsdGVyLmg6CisgICAgICAgIChXZWJLaXQ6OklucHV0TWV0
aG9kRmlsdGVyOjppc0VuYWJsZWQgY29uc3QpOiBSZXR1cm4gdHJ1ZSBpZiB3ZSBoYXZlIGEgc3Rh
dGUuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdElucHV0TWV0aG9kQ29udGV4
dC5jcHA6CisgICAgICAgICh3ZWJraXRJbnB1dE1ldGhvZENvbnRleHRTZXRQcm9wZXJ0eSk6IFBy
b3BlcnRpZXMgc2V0dGVyLgorICAgICAgICAod2Via2l0SW5wdXRNZXRob2RDb250ZXh0R2V0UHJv
cGVydHkpOiBQcm9wZXJ0aWVzIGdldHRlci4KKyAgICAgICAgKHdlYmtpdF9pbnB1dF9tZXRob2Rf
Y29udGV4dF9jbGFzc19pbml0KTogQWRkIGltcGxlbWVudGF0aW9uIGZvciBwcm9wZXJ0aWVzIGdl
dHRlciBhbmQgc2V0dGVyLgorICAgICAgICAod2Via2l0X2lucHV0X21ldGhvZF9jb250ZXh0X2dl
dF9pbnB1dF9wdXJwb3NlKToKKyAgICAgICAgKHdlYmtpdF9pbnB1dF9tZXRob2RfY29udGV4dF9z
ZXRfaW5wdXRfcHVycG9zZSk6CisgICAgICAgICh3ZWJraXRfaW5wdXRfbWV0aG9kX2NvbnRleHRf
Z2V0X2lucHV0X2hpbnRzKToKKyAgICAgICAgKHdlYmtpdF9pbnB1dF9tZXRob2RfY29udGV4dF9z
ZXRfaW5wdXRfaGludHMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdElucHV0
TWV0aG9kQ29udGV4dC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdElucHV0
TWV0aG9kQ29udGV4dEltcGxHdGsuY3BwOgorICAgICAgICAodG9HdGtJbnB1dFB1cnBvc2UpOiBI
ZWxwZXIgdG8gY29udmVydCBXZWJLaXRJbnB1dFB1cnBvc2UgdG8gR3RrSW5wdXRQdXJwb3NlLgor
ICAgICAgICAodG9HdGtJbnB1dEhpbnRzKTogSGVscGVyIHRvIGNvbnZlcnQgV2ViS2l0SW5wdXRI
aW50cyB0byBHdGtJbnB1dEhpbnRzLgorICAgICAgICAoaW5wdXRQdXJwb3NlQ2hhbmdlZENhbGxi
YWNrKTogU2V0IHRoZSBwdXJwb3NlIG9uIEd0a0lNQ29udGV4dC4KKyAgICAgICAgKGlucHV0SGlu
dHNDaGFuZ2VkQ2FsbGJhY2spOiBTZXQgdGhlIGhpbnRzIG9uIEd0a0lNQ29udGV4dC4KKyAgICAg
ICAgKHdlYmtpdElucHV0TWV0aG9kQ29udGV4dEltcGxHdGtDb25zdHJ1Y3RlZCk6IENvbm5lY3Qg
dG8gbm90aWZ5IHNpZ25hbCBmb3IgaW5wdXQtcHVycG9zZSBhbmQgaW5wdXQtaGludHMKKyAgICAg
ICAgcHJvcGVydGllcyBvZiB0aGUgY29udGV4dC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHA6CisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZVNldElu
cHV0TWV0aG9kU3RhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZp
ZXdCYXNlUHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0
Mmd0ay00LjAtc2VjdGlvbnMudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvd3BlL1BhZ2VD
bGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OnNldElucHV0
TWV0aG9kU3RhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvd3BlL1BhZ2VDbGllbnRJbXBs
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS93cGUvV1BFVmlldy5jcHA6CisgICAgICAgIChX
S1dQRTo6Vmlldzo6c2V0SW5wdXRNZXRob2RTdGF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS93cGUvV1BFVmlldy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdElucHV0
TWV0aG9kQ29udGV4dC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvd3BlL2RvY3Mvd3BlLTEu
MC1zZWN0aW9ucy50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQ
cm9jZXNzL2d0ay9XZWJQYWdlUHJveHlHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OnNldElucHV0TWV0aG9kU3RhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy93cGUvV2Vi
UGFnZVByb3h5V1BFLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRJbnB1
dE1ldGhvZFN0YXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkVkaXRvckNsaWVudDo6c2V0SW5w
dXRNZXRob2RTdGF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJF
ZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9nbGliL1dlYlBhZ2VHTGliLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6aW5wdXRNZXRob2RTYXRlRm9yRWxlbWVudCk6IEJ1aWxkIGFuIElucHV0TWV0
aG9kU3RhdGUgZm9yIHRoZSBnaXZlbiBlbGVtZW50LgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
OjpzZXRJbnB1dE1ldGhvZFN0YXRlKToKKwogMjAxOS0xMi0yNiAgQ2FybG9zIEdhcmNpYSBDYW1w
b3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS11bV1BFXSBSZW1vdmUgZHVw
bGljYXRlZCBjb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21l
c3NhZ2VzLnB5IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQppbmRl
eCBmMmU5ZWQ3YWI1NC4uNDc1ZTk0ZTM2ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2Ny
aXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtp
dC9tZXNzYWdlcy5weQpAQCAtMjMxLDYgKzIzMSw3IEBAIGRlZiB0eXBlc190aGF0X2Nhbm5vdF9i
ZV9mb3J3YXJkX2RlY2xhcmVkKCk6CiAKIGRlZiBjb25kaXRpb25zX2Zvcl9oZWFkZXIoaGVhZGVy
KToKICAgICBjb25kaXRpb25zID0geworICAgICAgICAnIklucHV0TWV0aG9kU3RhdGUuaCInOiBb
IlBMQVRGT1JNKEdUSykiLCAiUExBVEZPUk0oV1BFKSJdLAogICAgICAgICAnIkxheWVySG9zdGlu
Z0NvbnRleHQuaCInOiBbIlBMQVRGT1JNKENPQ09BKSIsIF0sCiAgICAgfQogICAgIGlmIG5vdCBo
ZWFkZXIgaW4gY29uZGl0aW9uczoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2ds
aWIvSW5wdXRNZXRob2RTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9nbGliL0lucHV0
TWV0aG9kU3RhdGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi42
YTE5OTYyZTE1NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2dsaWIv
SW5wdXRNZXRob2RTdGF0ZS5jcHAKQEAgLTAsMCArMSwxMjIgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTkgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIklucHV0TWV0aG9kU3RhdGUuaCIKKworI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgi
CisjaW5jbHVkZSA8V2ViQ29yZS9IVE1MSW5wdXRFbGVtZW50Lmg+CisKK25hbWVzcGFjZSBXZWJL
aXQgeworCit2b2lkIElucHV0TWV0aG9kU3RhdGU6OnNldFB1cnBvc2VPckhpbnRGb3JJbnB1dE1v
ZGUoV2ViQ29yZTo6SW5wdXRNb2RlIGlucHV0TW9kZSkKK3sKKyAgICBzd2l0Y2ggKGlucHV0TW9k
ZSkgeworICAgIGNhc2UgV2ViQ29yZTo6SW5wdXRNb2RlOjpOb25lOgorICAgICAgICBoaW50cy5h
ZGQoSW5wdXRNZXRob2RTdGF0ZTo6SGludDo6SW5oaWJpdE9uU2NyZWVuS2V5Ym9hcmQpOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIFdlYkNvcmU6OklucHV0TW9kZTo6VW5zcGVjaWZpZWQ6Cisg
ICAgY2FzZSBXZWJDb3JlOjpJbnB1dE1vZGU6OlRleHQ6CisgICAgICAgIHB1cnBvc2UgPSBQdXJw
b3NlOjpGcmVlRm9ybTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXZWJDb3JlOjpJbnB1dE1v
ZGU6OlRlbGVwaG9uZToKKyAgICAgICAgcHVycG9zZSA9IFB1cnBvc2U6OlBob25lOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIFdlYkNvcmU6OklucHV0TW9kZTo6VXJsOgorICAgICAgICBwdXJw
b3NlID0gUHVycG9zZTo6VXJsOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFdlYkNvcmU6Oklu
cHV0TW9kZTo6RW1haWw6CisgICAgICAgIHB1cnBvc2UgPSBQdXJwb3NlOjpFbWFpbDsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBXZWJDb3JlOjpJbnB1dE1vZGU6Ok51bWVyaWM6CisgICAgICAg
IHB1cnBvc2UgPSBQdXJwb3NlOjpEaWdpdHM7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV2Vi
Q29yZTo6SW5wdXRNb2RlOjpEZWNpbWFsOgorICAgICAgICBwdXJwb3NlID0gUHVycG9zZTo6TnVt
YmVyOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFdlYkNvcmU6OklucHV0TW9kZTo6U2VhcmNo
OgorICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3N0YXRpYyBib29sIGlucHV0RWxlbWVudEhh
c0RpZ2l0c1BhdHRlcm4oV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudCYgZWxlbWVudCkKK3sKKyAg
ICBjb25zdCBhdXRvJiBwYXR0ZXJuID0gZWxlbWVudC5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25p
emF0aW9uKFdlYkNvcmU6OkhUTUxOYW1lczo6cGF0dGVybkF0dHIpOworICAgIHJldHVybiBwYXR0
ZXJuID09ICJcXGQqIiB8fCBwYXR0ZXJuID09ICJbMC05XSoiOworfQorCit2b2lkIElucHV0TWV0
aG9kU3RhdGU6OnNldFB1cnBvc2VGb3JJbnB1dEVsZW1lbnQoV2ViQ29yZTo6SFRNTElucHV0RWxl
bWVudCYgZWxlbWVudCkKK3sKKyAgICBpZiAoZWxlbWVudC5pc1Bhc3N3b3JkRmllbGQoKSkKKyAg
ICAgICAgcHVycG9zZSA9IFB1cnBvc2U6OlBhc3N3b3JkOworICAgIGVsc2UgaWYgKGVsZW1lbnQu
aXNFbWFpbEZpZWxkKCkpCisgICAgICAgIHB1cnBvc2UgPSBQdXJwb3NlOjpFbWFpbDsKKyAgICBl
bHNlIGlmIChlbGVtZW50LmlzVGVsZXBob25lRmllbGQoKSkKKyAgICAgICAgcHVycG9zZSA9IFB1
cnBvc2U6OlBob25lOworICAgIGVsc2UgaWYgKGVsZW1lbnQuaXNOdW1iZXJGaWVsZCgpKQorICAg
ICAgICBwdXJwb3NlID0gaW5wdXRFbGVtZW50SGFzRGlnaXRzUGF0dGVybihlbGVtZW50KSA/IFB1
cnBvc2U6OkRpZ2l0cyA6IFB1cnBvc2U6Ok51bWJlcjsKKyAgICBlbHNlIGlmIChlbGVtZW50Lmlz
VVJMRmllbGQoKSkKKyAgICAgICAgcHVycG9zZSA9IFB1cnBvc2U6OlVybDsKKyAgICBlbHNlIGlm
IChlbGVtZW50LmlzVGV4dCgpICYmIGlucHV0RWxlbWVudEhhc0RpZ2l0c1BhdHRlcm4oZWxlbWVu
dCkpCisgICAgICAgIHB1cnBvc2UgPSBQdXJwb3NlOjpEaWdpdHM7Cit9CisKK3ZvaWQgSW5wdXRN
ZXRob2RTdGF0ZTo6YWRkSGludHNGb3JBdXRvY2FwaXRhbGl6ZVR5cGUoQXV0b2NhcGl0YWxpemVU
eXBlIGF1dG9jYXBpdGFsaXplVHlwZSkKK3sKKyAgICBzd2l0Y2ggKGF1dG9jYXBpdGFsaXplVHlw
ZSkgeworICAgIGNhc2UgQXV0b2NhcGl0YWxpemVUeXBlRGVmYXVsdDoKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBBdXRvY2FwaXRhbGl6ZVR5cGVOb25lOgorICAgICAgICBoaW50cy5hZGQoSW5w
dXRNZXRob2RTdGF0ZTo6SGludDo6TG93ZXJjYXNlKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBBdXRvY2FwaXRhbGl6ZVR5cGVXb3JkczoKKyAgICAgICAgaGludHMuYWRkKElucHV0TWV0aG9k
U3RhdGU6OkhpbnQ6OlVwcGVyY2FzZVdvcmRzKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBB
dXRvY2FwaXRhbGl6ZVR5cGVTZW50ZW5jZXM6CisgICAgICAgIGhpbnRzLmFkZChJbnB1dE1ldGhv
ZFN0YXRlOjpIaW50OjpVcHBlcmNhc2VTZW50ZW5jZXMpOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIEF1dG9jYXBpdGFsaXplVHlwZUFsbENoYXJhY3RlcnM6CisgICAgICAgIGhpbnRzLmFkZChJ
bnB1dE1ldGhvZFN0YXRlOjpIaW50OjpVcHBlcmNhc2VDaGFycyk7CisgICAgICAgIGJyZWFrOwor
ICAgIH0KK30KKwordm9pZCBJbnB1dE1ldGhvZFN0YXRlOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBl
bmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIuZW5jb2RlRW51bShwdXJwb3NlKTsKKyAgICBl
bmNvZGVyIDw8IGhpbnRzOworfQorCitPcHRpb25hbDxJbnB1dE1ldGhvZFN0YXRlPiBJbnB1dE1l
dGhvZFN0YXRlOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIElucHV0TWV0
aG9kU3RhdGUgc3RhdGU7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZUVudW0oc3RhdGUucHVycG9z
ZSkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShzdGF0ZS5oaW50cykpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJu
IHN0YXRlOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL2dsaWIvSW5wdXRNZXRob2RTdGF0ZS5oIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvZ2xpYi9JbnB1dE1ldGhvZFN0YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAuLmRmYmYwNTQwNmRiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvZ2xpYi9JbnB1dE1ldGhvZFN0YXRlLmgKQEAgLTAsMCArMSw4MSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxOSBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2luY2x1ZGUgPFdlYkNvcmUvQXV0b2NhcGl0YWxpemVUeXBlcy5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvSW5wdXRNb2RlLmg+CisjaW5jbHVkZSA8d3RmL09wdGlvblNldC5oPgorI2luY2x1ZGUgPHd0
Zi9PcHRpb25hbC5oPgorCituYW1lc3BhY2UgSVBDIHsKK2NsYXNzIERlY29kZXI7CitjbGFzcyBF
bmNvZGVyOworfQorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBIVE1MSW5wdXRFbGVtZW50
OworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RydWN0IElucHV0TWV0aG9kU3RhdGUgewor
ICAgIGVudW0gY2xhc3MgUHVycG9zZSB7CisgICAgICAgIEZyZWVGb3JtLAorICAgICAgICBEaWdp
dHMsCisgICAgICAgIE51bWJlciwKKyAgICAgICAgUGhvbmUsCisgICAgICAgIFVybCwKKyAgICAg
ICAgRW1haWwsCisgICAgICAgIFBhc3N3b3JkCisgICAgfTsKKworICAgIGVudW0gY2xhc3MgSGlu
dCB7CisgICAgICAgIE5vbmUgPSAwLAorICAgICAgICBTcGVsbGNoZWNrID0gMSA8PCAwLAorICAg
ICAgICBMb3dlcmNhc2UgPSAxIDw8IDEsCisgICAgICAgIFVwcGVyY2FzZUNoYXJzID0gMSA8PCAy
LAorICAgICAgICBVcHBlcmNhc2VXb3JkcyA9IDEgPDwgMywKKyAgICAgICAgVXBwZXJjYXNlU2Vu
dGVuY2VzID0gMSA8PCA0LAorICAgICAgICBJbmhpYml0T25TY3JlZW5LZXlib2FyZCA9IDEgPDwg
NQorICAgIH07CisKKyAgICB2b2lkIHNldFB1cnBvc2VPckhpbnRGb3JJbnB1dE1vZGUoV2ViQ29y
ZTo6SW5wdXRNb2RlKTsKKyAgICB2b2lkIHNldFB1cnBvc2VGb3JJbnB1dEVsZW1lbnQoV2ViQ29y
ZTo6SFRNTElucHV0RWxlbWVudCYpOworICAgIHZvaWQgYWRkSGludHNGb3JBdXRvY2FwaXRhbGl6
ZVR5cGUoQXV0b2NhcGl0YWxpemVUeXBlKTsKKworICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2Rl
ciYpIGNvbnN0OworICAgIHN0YXRpYyBPcHRpb25hbDxJbnB1dE1ldGhvZFN0YXRlPiBkZWNvZGUo
SVBDOjpEZWNvZGVyJik7CisKKyAgICBQdXJwb3NlIHB1cnBvc2UgeyBQdXJwb3NlOjpGcmVlRm9y
bSB9OworICAgIE9wdGlvblNldDxIaW50PiBoaW50czsKK307CisKK2lubGluZSBib29sIG9wZXJh
dG9yPT0oY29uc3QgSW5wdXRNZXRob2RTdGF0ZSYgYSwgY29uc3QgSW5wdXRNZXRob2RTdGF0ZSYg
YikKK3sKKyAgICByZXR1cm4gYS5wdXJwb3NlID09IGIucHVycG9zZSAmJiBhLmhpbnRzID09IGIu
aGludHM7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9Tb3VyY2VzR1RLLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0dUSy50eHQKaW5kZXgg
NDAzOGFkN2JhZWMuLjhmYjE4MDU2Mjc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJj
ZXNHVEsudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0dUSy50eHQKQEAgLTgzLDYgKzgz
LDcgQEAgU2hhcmVkL1BsdWdpbnMvdW5peC9QbHVnaW5TZWFyY2hQYXRoLmNwcAogU2hhcmVkL2Nh
aXJvL1NoYXJlYWJsZUJpdG1hcENhaXJvLmNwcAogCiBTaGFyZWQvZ2xpYi9Bcmd1bWVudENvZGVy
c0dMaWIuY3BwCitTaGFyZWQvZ2xpYi9JbnB1dE1ldGhvZFN0YXRlLmNwcAogU2hhcmVkL2dsaWIv
UHJvY2Vzc0V4ZWN1dGFibGVQYXRoR0xpYi5jcHAKIFNoYXJlZC9nbGliL1VzZXJNZXNzYWdlLmNw
cAogU2hhcmVkL2dsaWIvV2ViQ29udGV4dE1lbnVJdGVtR2xpYi5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU291cmNlc1dQRS50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNXUEUudHh0
CmluZGV4IGY3ODhkODRkODY5Li4wYzlkZmUxMTlmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9Tb3VyY2VzV1BFLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNXUEUudHh0CkBAIC04
MSw2ICs4MSw3IEBAIFNoYXJlZC9QbHVnaW5zL05ldHNjYXBlL3VuaXgvTmV0c2NhcGVQbHVnaW5N
b2R1bGVVbml4LmNwcAogU2hhcmVkL2NhaXJvL1NoYXJlYWJsZUJpdG1hcENhaXJvLmNwcAogCiBT
aGFyZWQvZ2xpYi9Bcmd1bWVudENvZGVyc0dMaWIuY3BwCitTaGFyZWQvZ2xpYi9JbnB1dE1ldGhv
ZFN0YXRlLmNwcAogU2hhcmVkL2dsaWIvUHJvY2Vzc0V4ZWN1dGFibGVQYXRoR0xpYi5jcHAKIFNo
YXJlZC9nbGliL1VzZXJNZXNzYWdlLmNwcAogU2hhcmVkL2dsaWIvV2ViQ29udGV4dE1lbnVJdGVt
R2xpYi5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0lu
cHV0TWV0aG9kRmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0lu
cHV0TWV0aG9kRmlsdGVyLmNwcAppbmRleCA3NjlmNDFkZmE2OC4uNTlmNDEzYTIwMzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0lucHV0TWV0aG9kRmlsdGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JbnB1dE1ldGhvZEZp
bHRlci5jcHAKQEAgLTcxLDIzICs3MSwyMyBAQCB2b2lkIElucHV0TWV0aG9kRmlsdGVyOjpzZXRD
b250ZXh0KFdlYktpdElucHV0TWV0aG9kQ29udGV4dCogY29udGV4dCkKICAgICBnX3NpZ25hbF9j
b25uZWN0X3N3YXBwZWQobV9jb250ZXh0LmdldCgpLCAicHJlZWRpdC1maW5pc2hlZCIsIEdfQ0FM
TEJBQ0socHJlZWRpdEZpbmlzaGVkQ2FsbGJhY2spLCB0aGlzKTsKICAgICBnX3NpZ25hbF9jb25u
ZWN0X3N3YXBwZWQobV9jb250ZXh0LmdldCgpLCAiY29tbWl0dGVkIiwgR19DQUxMQkFDSyhjb21t
aXR0ZWRDYWxsYmFjayksIHRoaXMpOwogCi0gICAgaWYgKG1fZW5hYmxlZCAmJiBpc1ZpZXdGb2N1
c2VkKCkpCisgICAgaWYgKGlzRW5hYmxlZCgpICYmIGlzVmlld0ZvY3VzZWQoKSkKICAgICAgICAg
bm90aWZ5Rm9jdXNlZEluKCk7CiB9CiAKLXZvaWQgSW5wdXRNZXRob2RGaWx0ZXI6OnNldEVuYWJs
ZWQoYm9vbCBlbmFibGVkKQordm9pZCBJbnB1dE1ldGhvZEZpbHRlcjo6c2V0U3RhdGUoT3B0aW9u
YWw8SW5wdXRNZXRob2RTdGF0ZT4mJiBzdGF0ZSkKIHsKLSAgICBpZiAoIWVuYWJsZWQpCisgICAg
aWYgKCFzdGF0ZSkKICAgICAgICAgbm90aWZ5Rm9jdXNlZE91dCgpOwogCi0gICAgbV9lbmFibGVk
ID0gZW5hYmxlZDsKLSAgICBpZiAobV9lbmFibGVkICYmIGlzVmlld0ZvY3VzZWQoKSkKKyAgICBt
X3N0YXRlID0gV1RGTW92ZShzdGF0ZSk7CisgICAgaWYgKGlzRW5hYmxlZCgpICYmIGlzVmlld0Zv
Y3VzZWQoKSkKICAgICAgICAgbm90aWZ5Rm9jdXNlZEluKCk7CiB9CiAKIElucHV0TWV0aG9kRmls
dGVyOjpGaWx0ZXJSZXN1bHQgSW5wdXRNZXRob2RGaWx0ZXI6OmZpbHRlcktleUV2ZW50KFBsYXRm
b3JtRXZlbnRLZXkqIGtleUV2ZW50KQogewotICAgIGlmICghbV9lbmFibGVkIHx8ICFtX2NvbnRl
eHQpCisgICAgaWYgKCFpc0VuYWJsZWQoKSB8fCAhbV9jb250ZXh0KQogICAgICAgICByZXR1cm4g
eyB9OwogCiAgICAgU2V0Rm9yU2NvcGU8Ym9vbD4gZmlsdGVyaW5nQ29udGV4dElzQWNpdmUobV9m
aWx0ZXJpbmdDb250ZXh0LmlzQWN0aXZlLCB0cnVlKTsKQEAgLTExMCw3ICsxMTAsNyBAQCBJbnB1
dE1ldGhvZEZpbHRlcjo6RmlsdGVyUmVzdWx0IElucHV0TWV0aG9kRmlsdGVyOjpmaWx0ZXJLZXlF
dmVudChQbGF0Zm9ybUV2ZW50SwogCiBib29sIElucHV0TWV0aG9kRmlsdGVyOjppc1ZpZXdGb2N1
c2VkKCkgY29uc3QKIHsKLSAgICBpZiAoIW1fZW5hYmxlZCB8fCAhbV9jb250ZXh0KQorICAgIGlm
ICghaXNFbmFibGVkKCkgfHwgIW1fY29udGV4dCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAj
aWYgRU5BQkxFKERFVkVMT1BFUl9NT0RFKSAmJiBQTEFURk9STShYMTEpCkBAIC0xMjcsMTcgKzEy
Nyw2MCBAQCBib29sIElucHV0TWV0aG9kRmlsdGVyOjppc1ZpZXdGb2N1c2VkKCkgY29uc3QKICAg
ICByZXR1cm4gd2Via2l0V2ViVmlld0dldFBhZ2Uod2ViVmlldykuaXNWaWV3Rm9jdXNlZCgpOwog
fQogCitzdGF0aWMgV2ViS2l0SW5wdXRQdXJwb3NlIHRvV2ViS2l0UHVycG9zZShJbnB1dE1ldGhv
ZFN0YXRlOjpQdXJwb3NlIHB1cnBvc2UpCit7CisgICAgc3dpdGNoIChwdXJwb3NlKSB7CisgICAg
Y2FzZSBJbnB1dE1ldGhvZFN0YXRlOjpQdXJwb3NlOjpGcmVlRm9ybToKKyAgICAgICAgcmV0dXJu
IFdFQktJVF9JTlBVVF9QVVJQT1NFX0ZSRUVfRk9STTsKKyAgICBjYXNlIElucHV0TWV0aG9kU3Rh
dGU6OlB1cnBvc2U6OkRpZ2l0czoKKyAgICAgICAgcmV0dXJuIFdFQktJVF9JTlBVVF9QVVJQT1NF
X0RJR0lUUzsKKyAgICBjYXNlIElucHV0TWV0aG9kU3RhdGU6OlB1cnBvc2U6Ok51bWJlcjoKKyAg
ICAgICAgcmV0dXJuIFdFQktJVF9JTlBVVF9QVVJQT1NFX05VTUJFUjsKKyAgICBjYXNlIElucHV0
TWV0aG9kU3RhdGU6OlB1cnBvc2U6OlBob25lOgorICAgICAgICByZXR1cm4gV0VCS0lUX0lOUFVU
X1BVUlBPU0VfUEhPTkU7CisgICAgY2FzZSBJbnB1dE1ldGhvZFN0YXRlOjpQdXJwb3NlOjpVcmw6
CisgICAgICAgIHJldHVybiBXRUJLSVRfSU5QVVRfUFVSUE9TRV9VUkw7CisgICAgY2FzZSBJbnB1
dE1ldGhvZFN0YXRlOjpQdXJwb3NlOjpFbWFpbDoKKyAgICAgICAgcmV0dXJuIFdFQktJVF9JTlBV
VF9QVVJQT1NFX0VNQUlMOworICAgIGNhc2UgSW5wdXRNZXRob2RTdGF0ZTo6UHVycG9zZTo6UGFz
c3dvcmQ6CisgICAgICAgIHJldHVybiBXRUJLSVRfSU5QVVRfUFVSUE9TRV9QQVNTV09SRDsKKyAg
ICB9CisKKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCitzdGF0aWMgV2Vi
S2l0SW5wdXRIaW50cyB0b1dlYktpdEhpbnRzKGNvbnN0IE9wdGlvblNldDxJbnB1dE1ldGhvZFN0
YXRlOjpIaW50PiYgaGludHMpCit7CisgICAgdW5zaWduZWQgd2tIaW50cyA9IDA7CisgICAgaWYg
KGhpbnRzLmNvbnRhaW5zKElucHV0TWV0aG9kU3RhdGU6OkhpbnQ6OlNwZWxsY2hlY2spKQorICAg
ICAgICB3a0hpbnRzIHw9IFdFQktJVF9JTlBVVF9ISU5UX1NQRUxMQ0hFQ0s7CisgICAgaWYgKGhp
bnRzLmNvbnRhaW5zKElucHV0TWV0aG9kU3RhdGU6OkhpbnQ6Okxvd2VyY2FzZSkpCisgICAgICAg
IHdrSGludHMgfD0gV0VCS0lUX0lOUFVUX0hJTlRfTE9XRVJDQVNFOworICAgIGlmIChoaW50cy5j
b250YWlucyhJbnB1dE1ldGhvZFN0YXRlOjpIaW50OjpVcHBlcmNhc2VDaGFycykpCisgICAgICAg
IHdrSGludHMgfD0gV0VCS0lUX0lOUFVUX0hJTlRfVVBQRVJDQVNFX0NIQVJTOworICAgIGlmICho
aW50cy5jb250YWlucyhJbnB1dE1ldGhvZFN0YXRlOjpIaW50OjpVcHBlcmNhc2VXb3JkcykpCisg
ICAgICAgIHdrSGludHMgfD0gV0VCS0lUX0lOUFVUX0hJTlRfVVBQRVJDQVNFX1dPUkRTOworICAg
IGlmIChoaW50cy5jb250YWlucyhJbnB1dE1ldGhvZFN0YXRlOjpIaW50OjpVcHBlcmNhc2VTZW50
ZW5jZXMpKQorICAgICAgICB3a0hpbnRzIHw9IFdFQktJVF9JTlBVVF9ISU5UX1VQUEVSQ0FTRV9T
RU5URU5DRVM7CisgICAgaWYgKGhpbnRzLmNvbnRhaW5zKElucHV0TWV0aG9kU3RhdGU6OkhpbnQ6
OkluaGliaXRPblNjcmVlbktleWJvYXJkKSkKKyAgICAgICAgd2tIaW50cyB8PSBXRUJLSVRfSU5Q
VVRfSElOVF9JTkhJQklUX09TSzsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViS2l0SW5wdXRI
aW50cz4od2tIaW50cyk7Cit9CiB2b2lkIElucHV0TWV0aG9kRmlsdGVyOjpub3RpZnlGb2N1c2Vk
SW4oKQogewotICAgIGlmICghbV9lbmFibGVkIHx8ICFtX2NvbnRleHQpCisgICAgaWYgKCFpc0Vu
YWJsZWQoKSB8fCAhbV9jb250ZXh0KQogICAgICAgICByZXR1cm47CiAKKyAgICBnX29iamVjdF9m
cmVlemVfbm90aWZ5KEdfT0JKRUNUKG1fY29udGV4dC5nZXQoKSkpOworICAgIHdlYmtpdF9pbnB1
dF9tZXRob2RfY29udGV4dF9zZXRfaW5wdXRfcHVycG9zZShtX2NvbnRleHQuZ2V0KCksIHRvV2Vi
S2l0UHVycG9zZShtX3N0YXRlLT5wdXJwb3NlKSk7CisgICAgd2Via2l0X2lucHV0X21ldGhvZF9j
b250ZXh0X3NldF9pbnB1dF9oaW50cyhtX2NvbnRleHQuZ2V0KCksIHRvV2ViS2l0SGludHMobV9z
dGF0ZS0+aGludHMpKTsKKyAgICBnX29iamVjdF90aGF3X25vdGlmeShHX09CSkVDVChtX2NvbnRl
eHQuZ2V0KCkpKTsKICAgICB3ZWJraXRfaW5wdXRfbWV0aG9kX2NvbnRleHRfbm90aWZ5X2ZvY3Vz
X2luKG1fY29udGV4dC5nZXQoKSk7CiB9CiAKIHZvaWQgSW5wdXRNZXRob2RGaWx0ZXI6Om5vdGlm
eUZvY3VzZWRPdXQoKQogewotICAgIGlmICghbV9lbmFibGVkIHx8ICFtX2NvbnRleHQpCisgICAg
aWYgKCFpc0VuYWJsZWQoKSB8fCAhbV9jb250ZXh0KQogICAgICAgICByZXR1cm47CiAKICAgICBj
YW5jZWxDb21wb3NpdGlvbigpOwpAQCAtMTQ2LDcgKzE4OSw3IEBAIHZvaWQgSW5wdXRNZXRob2RG
aWx0ZXI6Om5vdGlmeUZvY3VzZWRPdXQoKQogCiB2b2lkIElucHV0TWV0aG9kRmlsdGVyOjpub3Rp
ZnlDdXJzb3JSZWN0KGNvbnN0IEludFJlY3QmIGN1cnNvclJlY3QpCiB7Ci0gICAgaWYgKCFtX2Vu
YWJsZWQgfHwgIW1fY29udGV4dCkKKyAgICBpZiAoIWlzRW5hYmxlZCgpIHx8ICFtX2NvbnRleHQp
CiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIERvbid0IG1vdmUgdGhlIHdpbmRvdyB1bmxlc3Mg
dGhlIGN1cnNvciBhY3R1YWxseSBtb3ZlcyBtb3JlIHRoYW4gMTAKQEAgLTE2Myw3ICsyMDYsNyBA
QCB2b2lkIElucHV0TWV0aG9kRmlsdGVyOjpub3RpZnlDdXJzb3JSZWN0KGNvbnN0IEludFJlY3Qm
IGN1cnNvclJlY3QpCiAKIHZvaWQgSW5wdXRNZXRob2RGaWx0ZXI6OnByZWVkaXRTdGFydGVkKCkK
IHsKLSAgICBpZiAoIW1fZW5hYmxlZCkKKyAgICBpZiAoIWlzRW5hYmxlZCgpKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBpZiAobV9maWx0ZXJpbmdDb250ZXh0LmlzQWN0aXZlKQpAQCAtMTc0LDcg
KzIxNyw3IEBAIHZvaWQgSW5wdXRNZXRob2RGaWx0ZXI6OnByZWVkaXRTdGFydGVkKCkKIAogdm9p
ZCBJbnB1dE1ldGhvZEZpbHRlcjo6cHJlZWRpdENoYW5nZWQoKQogewotICAgIGlmICghbV9lbmFi
bGVkKQorICAgIGlmICghaXNFbmFibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICht
X2ZpbHRlcmluZ0NvbnRleHQuaXNBY3RpdmUpCkBAIC0yMDgsNyArMjUxLDcgQEAgdm9pZCBJbnB1
dE1ldGhvZEZpbHRlcjo6cHJlZWRpdENoYW5nZWQoKQogCiB2b2lkIElucHV0TWV0aG9kRmlsdGVy
OjpwcmVlZGl0RmluaXNoZWQoKQogewotICAgIGlmICghbV9lbmFibGVkKQorICAgIGlmICghaXNF
bmFibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtX2ZpbHRlcmluZ0NvbnRleHQu
aXNBY3RpdmUpCkBAIC0yMjcsNyArMjcwLDcgQEAgdm9pZCBJbnB1dE1ldGhvZEZpbHRlcjo6cHJl
ZWRpdEZpbmlzaGVkKCkKIAogdm9pZCBJbnB1dE1ldGhvZEZpbHRlcjo6Y29tbWl0dGVkKGNvbnN0
IGNoYXIqIGNvbXBvc2l0aW9uU3RyaW5nKQogewotICAgIGlmICghbV9lbmFibGVkKQorICAgIGlm
ICghaXNFbmFibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fY29tcG9zaXRpb25SZXN1
bHQgPSBTdHJpbmc6OmZyb21VVEY4KGNvbXBvc2l0aW9uU3RyaW5nKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0lucHV0TWV0aG9kRmlsdGVyLmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JbnB1dE1ldGhvZEZpbHRlci5oCmluZGV4IGQ3
MjNmMzVjNzAwLi4xMjMxMDM4YTZlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2dsaWIvSW5wdXRNZXRob2RGaWx0ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ2xpYi9JbnB1dE1ldGhvZEZpbHRlci5oCkBAIC0xOSw2ICsxOSw3IEBACiAKICNw
cmFnbWEgb25jZQogCisjaW5jbHVkZSAiSW5wdXRNZXRob2RTdGF0ZS5oIgogI2luY2x1ZGUgPFdl
YkNvcmUvQ29tcG9zaXRpb25VbmRlcmxpbmUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ludFBvaW50
Lmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CkBAIC00OSw3ICs1MCw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNldENvbnRleHQoV2ViS2l0SW5wdXRNZXRob2RDb250ZXh0Kik7CiAgICAg
V2ViS2l0SW5wdXRNZXRob2RDb250ZXh0KiBjb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9jb250
ZXh0LmdldCgpOyB9CiAKLSAgICB2b2lkIHNldEVuYWJsZWQoYm9vbCk7CisgICAgdm9pZCBzZXRT
dGF0ZShPcHRpb25hbDxJbnB1dE1ldGhvZFN0YXRlPiYmKTsKIAogI2lmIFBMQVRGT1JNKEdUSykK
ICAgICB1c2luZyBQbGF0Zm9ybUV2ZW50S2V5ID0gR2RrRXZlbnRLZXk7CkBAIC04MCwxMiArODEs
MTMgQEAgcHJpdmF0ZToKICAgICB2b2lkIHByZWVkaXRGaW5pc2hlZCgpOwogICAgIHZvaWQgY29t
bWl0dGVkKGNvbnN0IGNoYXIqKTsKIAorICAgIGJvb2wgaXNFbmFibGVkKCkgY29uc3QgeyByZXR1
cm4gISFtX3N0YXRlOyB9CiAgICAgYm9vbCBpc1ZpZXdGb2N1c2VkKCkgY29uc3Q7CiAKICAgICBX
ZWJDb3JlOjpJbnRSZWN0IHBsYXRmb3JtVHJhbnNmb3JtQ3Vyc29yUmVjdFRvVmlld0Nvb3JkaW5h
dGVzKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKTsKICAgICBib29sIHBsYXRmb3JtRXZlbnRLZXlJ
c0tleVByZXNzKFBsYXRmb3JtRXZlbnRLZXkqKSBjb25zdDsKIAotICAgIGJvb2wgbV9lbmFibGVk
IHsgZmFsc2UgfTsKKyAgICBPcHRpb25hbDxJbnB1dE1ldGhvZFN0YXRlPiBtX3N0YXRlOwogICAg
IEdSZWZQdHI8V2ViS2l0SW5wdXRNZXRob2RDb250ZXh0PiBtX2NvbnRleHQ7CiAKICAgICBzdHJ1
Y3QgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
SW5wdXRNZXRob2RDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdElucHV0TWV0aG9kQ29udGV4dC5jcHAKaW5kZXggY2FmNzcyMWY5ODUuLjE3Y2MzYzk0
NjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRJ
bnB1dE1ldGhvZENvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdElucHV0TWV0aG9kQ29udGV4dC5jcHAKQEAgLTIwLDggKzIwLDEwIEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViS2l0SW5wdXRNZXRob2RDb250ZXh0LmgiCiAK
KyNpbmNsdWRlICJXZWJLaXRFbnVtVHlwZXMuaCIKICNpbmNsdWRlICJXZWJLaXRJbnB1dE1ldGhv
ZENvbnRleHRQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViVmlldy5oIgorI2luY2x1ZGUg
PGdsaWIvZ2kxOG4tbGliLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvV1RGR1R5cGUuaD4KIAogdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC00NCw2ICs0NiwxMyBAQCB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKICAqIFNpbmNlOiAyLjI4CiAgKi8KIAorZW51bSB7CisgICAgUFJPUF8wLAorCisg
ICAgUFJPUF9JTlBVVF9QVVJQT1NFLAorICAgIFBST1BfSU5QVVRfSElOVFMKK307CisKIGVudW0g
ewogICAgIFBSRUVESVRfU1RBUlRFRCwKICAgICBQUkVFRElUX0NIQU5HRUQsCkBAIC0xMTYsNiAr
MTI1LDggQEAgdm9pZCB3ZWJraXRfaW5wdXRfbWV0aG9kX3VuZGVybGluZV9mcmVlKFdlYktpdElu
cHV0TWV0aG9kVW5kZXJsaW5lKiB1bmRlcmxpbmUpCiAKIHN0cnVjdCBfV2ViS2l0SW5wdXRNZXRo
b2RDb250ZXh0UHJpdmF0ZSB7CiAgICAgV2ViS2l0V2ViVmlldyogd2ViVmlldzsKKyAgICBXZWJL
aXRJbnB1dFB1cnBvc2UgcHVycG9zZTsKKyAgICBXZWJLaXRJbnB1dEhpbnRzIGhpbnRzOwogfTsK
IAogc3RhdGljIGd1aW50IHNpZ25hbHNbTEFTVF9TSUdOQUxdID0geyAwLCB9OwpAQCAtMTUzLDgg
KzE2NCw4MCBAQCBXRUJLSVRfREVGSU5FX0FCU1RSQUNUX1RZUEUoV2ViS2l0SW5wdXRNZXRob2RD
b250ZXh0LCB3ZWJraXRfaW5wdXRfbWV0aG9kX2NvbnRleAogICogU2luY2U6IDIuMjgKICAqLwog
CitzdGF0aWMgdm9pZCB3ZWJraXRJbnB1dE1ldGhvZENvbnRleHRTZXRQcm9wZXJ0eShHT2JqZWN0
KiBvYmplY3QsIGd1aW50IHByb3BJZCwgY29uc3QgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyog
cGFyYW1TcGVjKQoreworICAgIFdlYktpdElucHV0TWV0aG9kQ29udGV4dCogY29udGV4dCA9IFdF
QktJVF9JTlBVVF9NRVRIT0RfQ09OVEVYVChvYmplY3QpOworCisgICAgc3dpdGNoIChwcm9wSWQp
IHsKKyAgICBjYXNlIFBST1BfSU5QVVRfUFVSUE9TRToKKyAgICAgICAgd2Via2l0X2lucHV0X21l
dGhvZF9jb250ZXh0X3NldF9pbnB1dF9wdXJwb3NlKGNvbnRleHQsIHN0YXRpY19jYXN0PFdlYktp
dElucHV0UHVycG9zZT4oZ192YWx1ZV9nZXRfZW51bSh2YWx1ZSkpKTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBQUk9QX0lOUFVUX0hJTlRTOgorICAgICAgICB3ZWJraXRfaW5wdXRfbWV0aG9k
X2NvbnRleHRfc2V0X2lucHV0X2hpbnRzKGNvbnRleHQsIHN0YXRpY19jYXN0PFdlYktpdElucHV0
SGludHM+KGdfdmFsdWVfZ2V0X2ZsYWdzKHZhbHVlKSkpOworICAgICAgICBicmVhazsKKyAgICBk
ZWZhdWx0OgorICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0
LCBwcm9wSWQsIHBhcmFtU3BlYyk7CisgICAgfQorfQorCitzdGF0aWMgdm9pZCB3ZWJraXRJbnB1
dE1ldGhvZENvbnRleHRHZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJZCwg
R1ZhbHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyogcGFyYW1TcGVjKQoreworICAgIFdlYktpdElucHV0
TWV0aG9kQ29udGV4dCogY29udGV4dCA9IFdFQktJVF9JTlBVVF9NRVRIT0RfQ09OVEVYVChvYmpl
Y3QpOworCisgICAgc3dpdGNoIChwcm9wSWQpIHsKKyAgICBjYXNlIFBST1BfSU5QVVRfUFVSUE9T
RToKKyAgICAgICAgZ192YWx1ZV9zZXRfZW51bSh2YWx1ZSwgd2Via2l0X2lucHV0X21ldGhvZF9j
b250ZXh0X2dldF9pbnB1dF9wdXJwb3NlKGNvbnRleHQpKTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBQUk9QX0lOUFVUX0hJTlRTOgorICAgICAgICBnX3ZhbHVlX3NldF9mbGFncyh2YWx1ZSwg
d2Via2l0X2lucHV0X21ldGhvZF9jb250ZXh0X2dldF9pbnB1dF9oaW50cyhjb250ZXh0KSk7Cisg
ICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJ
RF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BJZCwgcGFyYW1TcGVjKTsKKyAgICB9Cit9CisKIHN0
YXRpYyB2b2lkIHdlYmtpdF9pbnB1dF9tZXRob2RfY29udGV4dF9jbGFzc19pbml0KFdlYktpdElu
cHV0TWV0aG9kQ29udGV4dENsYXNzKiBrbGFzcykKIHsKKyAgICBHT2JqZWN0Q2xhc3MqIGdPYmpl
Y3RDbGFzcyA9IEdfT0JKRUNUX0NMQVNTKGtsYXNzKTsKKyAgICBnT2JqZWN0Q2xhc3MtPnNldF9w
cm9wZXJ0eSA9IHdlYmtpdElucHV0TWV0aG9kQ29udGV4dFNldFByb3BlcnR5OworICAgIGdPYmpl
Y3RDbGFzcy0+Z2V0X3Byb3BlcnR5ID0gd2Via2l0SW5wdXRNZXRob2RDb250ZXh0R2V0UHJvcGVy
dHk7CisKKyAgICAvKioKKyAgICAgKiBXZWJLaXRJbnB1dE1ldGhvZENvbnRleHQ6OmlucHV0LXB1
cnBvc2U6CisgICAgICoKKyAgICAgKiBUaGUgI1dlYktpdElucHV0UHVycG9zZSBvZiB0aGUgaW5w
dXQgYXNzb2NpYXRlZCB3aXRoIHRoaXMgY29udGV4dC4KKyAgICAgKgorICAgICAqIFNpbmNlOiAy
LjI4CisgICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKKyAgICAg
ICAgZ09iamVjdENsYXNzLAorICAgICAgICBQUk9QX0lOUFVUX1BVUlBPU0UsCisgICAgICAgIGdf
cGFyYW1fc3BlY19lbnVtKAorICAgICAgICAgICAgImlucHV0LXB1cnBvc2UiLAorICAgICAgICAg
ICAgXygiSW5wdXQgUHVycG9zZSIpLAorICAgICAgICAgICAgXygiVGhlIHB1cnBvc2Ugb2YgdGhl
IGlucHV0IGFzc29jaWF0ZWQiKSwKKyAgICAgICAgICAgIFdFQktJVF9UWVBFX0lOUFVUX1BVUlBP
U0UsCisgICAgICAgICAgICBXRUJLSVRfSU5QVVRfUFVSUE9TRV9GUkVFX0ZPUk0sCisgICAgICAg
ICAgICBXRUJLSVRfUEFSQU1fUkVBRFdSSVRFKSk7CisKKyAgICAvKioKKyAgICAgKiBXZWJLaXRJ
bnB1dE1ldGhvZENvbnRleHQ6OmlucHV0LWhpbnRzOgorICAgICAqCisgICAgICogVGhlICNXZWJL
aXRJbnB1dEhpbnRzIG9mIHRoZSBpbnB1dCBhc3NvY2lhdGVkIHdpdGggdGhpcyBjb250ZXh0Lgor
ICAgICAqCisgICAgICogU2luY2U6IDIuMjgKKyAgICAgKi8KKyAgICBnX29iamVjdF9jbGFzc19p
bnN0YWxsX3Byb3BlcnR5KAorICAgICAgICBnT2JqZWN0Q2xhc3MsCisgICAgICAgIFBST1BfSU5Q
VVRfSElOVFMsCisgICAgICAgIGdfcGFyYW1fc3BlY19mbGFncygKKyAgICAgICAgICAgICJpbnB1
dC1oaW50cyIsCisgICAgICAgICAgICBfKCJJbnB1dCBIaW50cyIpLAorICAgICAgICAgICAgXygi
VGhlIGhpbnRzIG9mIHRoZSBpbnB1dCBhc3NvY2lhdGVkIiksCisgICAgICAgICAgICBXRUJLSVRf
VFlQRV9JTlBVVF9ISU5UUywKKyAgICAgICAgICAgIFdFQktJVF9JTlBVVF9ISU5UX05PTkUsCisg
ICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVBRFdSSVRFKSk7CisKICAgICAvKioKICAgICAgKiBX
ZWJLaXRJbnB1dE1ldGhvZENvbnRleHQ6OnByZWVkaXQtc3RhcnRlZAogICAgICAqIEBjb250ZXh0
OiB0aGUgI1dlYktpdElucHV0TWV0aG9kQ29udGV4dCBvbiB3aGljaCB0aGUgc2lnbmFsIGlzIGVt
aXR0ZWQKQEAgLTM1OSwzICs0NDIsNzcgQEAgdm9pZCB3ZWJraXRfaW5wdXRfbWV0aG9kX2NvbnRl
eHRfcmVzZXQoV2ViS2l0SW5wdXRNZXRob2RDb250ZXh0KiBjb250ZXh0KQogICAgIGlmIChpbUNs
YXNzLT5yZXNldCkKICAgICAgICAgaW1DbGFzcy0+cmVzZXQoY29udGV4dCk7CiB9CisKKy8qKgor
ICogd2Via2l0X2lucHV0X21ldGhvZF9jb250ZXh0X2dldF9pbnB1dF9wdXJwb3NlOgorICogQGNv
bnRleHQ6IGEgI1dlYktpdElucHV0TWV0aG9kQ29udGV4dAorICoKKyAqIEdldCB0aGUgdmFsdWUg
b2YgdGhlICNXZWJLaXRJbnB1dE1ldGhvZENvbnRleHQ6aW5wdXQtcHVycG9zZSBwcm9wZXJ0eS4K
KyAqCisgKiBSZXR1cm5zOiB0aGUgI1dlYktpdElucHV0UHVycG9zZSBvZiB0aGUgaW5wdXQgYXNz
b2NpYXRlZCB3aXRoIEBjb250ZXh0CisgKgorICogU2luY2U6IDIuMjgKKyAqLworV2ViS2l0SW5w
dXRQdXJwb3NlIHdlYmtpdF9pbnB1dF9tZXRob2RfY29udGV4dF9nZXRfaW5wdXRfcHVycG9zZShX
ZWJLaXRJbnB1dE1ldGhvZENvbnRleHQqIGNvbnRleHQpCit7CisgICAgZ19yZXR1cm5fdmFsX2lm
X2ZhaWwoV0VCS0lUX0lTX0lOUFVUX01FVEhPRF9DT05URVhUKGNvbnRleHQpLCBXRUJLSVRfSU5Q
VVRfUFVSUE9TRV9GUkVFX0ZPUk0pOworCisgICAgcmV0dXJuIGNvbnRleHQtPnByaXYtPnB1cnBv
c2U7Cit9CisKKy8qKgorICogd2Via2l0X2lucHV0X21ldGhvZF9jb250ZXh0X3NldF9pbnB1dF9w
dXJwb3NlOgorICogQGNvbnRleHQ6IGEgI1dlYktpdElucHV0TWV0aG9kQ29udGV4dAorICogQHB1
cnBvc2U6IGEgI1dlYktpdElucHV0UHVycG9zZQorICoKKyAqIFNldCB0aGUgdmFsdWUgb2YgdGhl
ICNXZWJLaXRJbnB1dE1ldGhvZENvbnRleHQ6aW5wdXQtcHVycG9zZSBwcm9wZXJ0eS4KKyAqCisg
KiBTaW5jZTogMi4yOAorICovCit2b2lkIHdlYmtpdF9pbnB1dF9tZXRob2RfY29udGV4dF9zZXRf
aW5wdXRfcHVycG9zZShXZWJLaXRJbnB1dE1ldGhvZENvbnRleHQqIGNvbnRleHQsIFdlYktpdElu
cHV0UHVycG9zZSBwdXJwb3NlKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX0lO
UFVUX01FVEhPRF9DT05URVhUKGNvbnRleHQpKTsKKworICAgIGlmIChjb250ZXh0LT5wcml2LT5w
dXJwb3NlID09IHB1cnBvc2UpCisgICAgICAgIHJldHVybjsKKworICAgIGNvbnRleHQtPnByaXYt
PnB1cnBvc2UgPSBwdXJwb3NlOworICAgIGdfb2JqZWN0X25vdGlmeShHX09CSkVDVChjb250ZXh0
KSwgImlucHV0LXB1cnBvc2UiKTsKK30KKworLyoqCisgKiB3ZWJraXRfaW5wdXRfbWV0aG9kX2Nv
bnRleHRfZ2V0X2lucHV0X2hpbnRzOgorICogQGNvbnRleHQ6IGEgI1dlYktpdElucHV0TWV0aG9k
Q29udGV4dAorICoKKyAqIEdldCB0aGUgdmFsdWUgb2YgdGhlICNXZWJLaXRJbnB1dE1ldGhvZENv
bnRleHQ6aW5wdXQtaGludHMgcHJvcGVydHkuCisgKgorICogUmV0dXJuczogdGhlICNXZWJLaXRJ
bnB1dEhpbnRzIG9mIHRoZSBpbnB1dCBhc3NvY2lhdGVkIHdpdGggQGNvbnRleHQKKyAqCisgKiBT
aW5jZTogMi4yOAorICovCitXZWJLaXRJbnB1dEhpbnRzIHdlYmtpdF9pbnB1dF9tZXRob2RfY29u
dGV4dF9nZXRfaW5wdXRfaGludHMoV2ViS2l0SW5wdXRNZXRob2RDb250ZXh0KiBjb250ZXh0KQor
eworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19JTlBVVF9NRVRIT0RfQ09OVEVY
VChjb250ZXh0KSwgV0VCS0lUX0lOUFVUX0hJTlRfTk9ORSk7CisKKyAgICByZXR1cm4gY29udGV4
dC0+cHJpdi0+aGludHM7Cit9CisKKy8qCisgKiB3ZWJraXRfaW5wdXRfbWV0aG9kX2NvbnRleHRf
c2V0X2lucHV0X2hpbnRzOgorICogQGNvbnRleHQ6IGEgI1dlYktpdElucHV0TWV0aG9kQ29udGV4
dAorICogQGhpbnRzOiBhICNXZWJLaXRJbnB1dEhpbnRzCisgKgorICogU2V0IHRoZSB2YWx1ZSBv
ZiB0aGUgI1dlYktpdElucHV0TWV0aG9kQ29udGV4dDppbnB1dC1oaW50cyBwcm9wZXJ0eS4KKyAq
CisgKiBTaW5jZTogMi4yOAorICovCit2b2lkIHdlYmtpdF9pbnB1dF9tZXRob2RfY29udGV4dF9z
ZXRfaW5wdXRfaGludHMoV2ViS2l0SW5wdXRNZXRob2RDb250ZXh0KiBjb250ZXh0LCBXZWJLaXRJ
bnB1dEhpbnRzIGhpbnRzKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX0lOUFVU
X01FVEhPRF9DT05URVhUKGNvbnRleHQpKTsKKworICAgIGlmIChjb250ZXh0LT5wcml2LT5oaW50
cyA9PSBoaW50cykKKyAgICAgICAgcmV0dXJuOworCisgICAgY29udGV4dC0+cHJpdi0+aGludHMg
PSBoaW50czsKKyAgICBnX29iamVjdF9ub3RpZnkoR19PQkpFQ1QoY29udGV4dCksICJpbnB1dC1o
aW50cyIpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRJbnB1dE1ldGhvZENvbnRleHQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0SW5wdXRNZXRob2RDb250ZXh0LmgKaW5kZXggYjY5ZjMxMDExMzEuLmNmMjExYWZl
ZTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdElu
cHV0TWV0aG9kQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0SW5wdXRNZXRob2RDb250ZXh0LmgKQEAgLTM5LDYgKzM5LDU0IEBAIEdfQkVHSU5fREVD
TFMKIAogI2RlZmluZSBXRUJLSVRfVFlQRV9JTlBVVF9NRVRIT0RfVU5ERVJMSU5FICAgICAgICAg
ICh3ZWJraXRfaW5wdXRfbWV0aG9kX3VuZGVybGluZV9nZXRfdHlwZSgpKQogCisvKioKKyAqIFdl
YktpdElucHV0UHVycG9zZToKKyAqIEBXRUJLSVRfSU5QVVRfUFVSUE9TRV9GUkVFX0ZPUk06IEVk
aXRhYmxlIGVsZW1lbnQgZXhwZWN0cyBhbnkgY2hhcmFjdGVycworICogQFdFQktJVF9JTlBVVF9Q
VVJQT1NFX0RJR0lUUzogRWRpdGFibGUgZWxlbWVudCBleHBlY3RzIGRpZ2l0cworICogQFdFQktJ
VF9JTlBVVF9QVVJQT1NFX05VTUJFUjogRWRpdGFibGUgZWxlbWVudCBleHBlY3RzIGEgbnVtYmVy
CisgKiBAV0VCS0lUX0lOUFVUX1BVUlBPU0VfUEhPTkU6IEVkaXRhYmxlIGVsZW1lbnQgZXhwZWN0
cyBhIHRlbGVwaG9uZQorICogQFdFQktJVF9JTlBVVF9QVVJQT1NFX1VSTDogRWRpdGFibGUgZWxl
bWVudCBleHBlY3RzIGEgVVJMCisgKiBAV0VCS0lUX0lOUFVUX1BVUlBPU0VfRU1BSUw6IEVkaXRh
YmxlIGVsZW1lbnQgZXhwZWN0cyBhbiBlbWFpbAorICogQFdFQktJVF9JTlBVVF9QVVJQT1NFX1BB
U1NXT1JEOiBFZGl0YWJsZSBlbGVtZW50IGV4cGVjdHMgYSBwYXNzd29yZAorICoKKyAqIEVudW0g
dmFsdWVzIHVzZWQgdG8gZGVzY3JpYmUgdGhlIHByaW1hcnkgcHVycG9zZSBvZiB0aGUgYWN0aXZl
IGVkaXRhYmxlIGVsZW1lbnQuCisgKgorICogU2luY2U6IDIuMjgKKyAqLwordHlwZWRlZiBlbnVt
IHsKKyAgICBXRUJLSVRfSU5QVVRfUFVSUE9TRV9GUkVFX0ZPUk0sCisgICAgV0VCS0lUX0lOUFVU
X1BVUlBPU0VfRElHSVRTLAorICAgIFdFQktJVF9JTlBVVF9QVVJQT1NFX05VTUJFUiwKKyAgICBX
RUJLSVRfSU5QVVRfUFVSUE9TRV9QSE9ORSwKKyAgICBXRUJLSVRfSU5QVVRfUFVSUE9TRV9VUkws
CisgICAgV0VCS0lUX0lOUFVUX1BVUlBPU0VfRU1BSUwsCisgICAgV0VCS0lUX0lOUFVUX1BVUlBP
U0VfUEFTU1dPUkQKK30gV2ViS2l0SW5wdXRQdXJwb3NlOworCisvKioKKyAqIFdlYktpdElucHV0
SGludHM6CisgKiBAV0VCS0lUX0lOUFVUX0hJTlRfTk9ORTogTm8gc3BlY2lhbCBiZWhhdmlvciBz
dWdnZXN0ZWQKKyAqIEBXRUJLSVRfSU5QVVRfSElOVF9TUEVMTENIRUNLOiBTdWdnZXN0IHNwZWxs
IGNoZWNraW5nCisgKiBAV0VCS0lUX0lOUFVUX0hJTlRfTE9XRVJDQVNFOiBTdWdnZXN0IHRvIG5v
dCBhdXRvY2FwaXRsaXplCisgKiBAV0VCS0lUX0lOUFVUX0hJTlRfVVBQRVJDQVNFX0NIQVJTOiBT
dWdnZXN0IHRvIGNhcGl0YWxpemUgYWxsIHRleHQKKyAqIEBXRUJLSVRfSU5QVVRfSElOVF9VUFBF
UkNBU0VfV09SRFM6IFN1Z2dlc3QgdG8gY2FwaXRhbGl6ZSB0aGUgZmlyc3QgY2hhcmFjdGVyIG9m
IGVhY2ggd29yZAorICogQFdFQktJVF9JTlBVVF9ISU5UX1VQUEVSQ0FTRV9TRU5URU5DRVM6IFN1
Z2dlc3QgdG8gY2FwaXRhbGl6ZSB0aGUgZmlyc3Qgd29yZCBvZiBlYWNoIHNlbnRlbmNlCisgKiBA
V0VCS0lUX0lOUFVUX0hJTlRfSU5ISUJJVF9PU0s6IFN1Z2dlc3QgdG8gbm90IHNob3cgYW4gb25z
Y3JlZW4ga2V5Ym9hcmQKKyAqCisgKiBFbnVtIHZhbHVlcyB1c2VkIHRvIGRlc2NyaWJlIGhpbnRz
IHRoYXQgbWlnaHQgYmUgdGFrZW4gaW50byBhY2NvdW50IGJ5IGlucHV0IG1ldGhvZHMuCisgKgor
ICogU2luY2U6IDIuMjgKKyAqLwordHlwZWRlZiBlbnVtIHsKKyAgICBXRUJLSVRfSU5QVVRfSElO
VF9OT05FICAgICAgICAgICAgICAgID0gMCwKKyAgICBXRUJLSVRfSU5QVVRfSElOVF9TUEVMTENI
RUNLICAgICAgICAgID0gMSA8PCAwLAorICAgIFdFQktJVF9JTlBVVF9ISU5UX0xPV0VSQ0FTRSAg
ICAgICAgICAgPSAxIDw8IDEsCisgICAgV0VCS0lUX0lOUFVUX0hJTlRfVVBQRVJDQVNFX0NIQVJT
ICAgICA9IDEgPDwgMiwKKyAgICBXRUJLSVRfSU5QVVRfSElOVF9VUFBFUkNBU0VfV09SRFMgICAg
ID0gMSA8PCAzLAorICAgIFdFQktJVF9JTlBVVF9ISU5UX1VQUEVSQ0FTRV9TRU5URU5DRVMgPSAx
IDw8IDQsCisgICAgV0VCS0lUX0lOUFVUX0hJTlRfSU5ISUJJVF9PU0sgICAgICAgICA9IDEgPDwg
NQorfSBXZWJLaXRJbnB1dEhpbnRzOworCiB0eXBlZGVmIHN0cnVjdCBfV2ViS2l0SW5wdXRNZXRo
b2RDb250ZXh0ICAgICAgICBXZWJLaXRJbnB1dE1ldGhvZENvbnRleHQ7CiB0eXBlZGVmIHN0cnVj
dCBfV2ViS2l0SW5wdXRNZXRob2RDb250ZXh0Q2xhc3MgICBXZWJLaXRJbnB1dE1ldGhvZENvbnRl
eHRDbGFzczsKIHR5cGVkZWYgc3RydWN0IF9XZWJLaXRJbnB1dE1ldGhvZENvbnRleHRQcml2YXRl
IFdlYktpdElucHV0TWV0aG9kQ29udGV4dFByaXZhdGU7CkBAIC0xNDAsNiArMTg4LDIwIEBAIFdF
QktJVF9BUEkgdm9pZAogd2Via2l0X2lucHV0X21ldGhvZF91bmRlcmxpbmVfc2V0X2NvbG9yICAg
ICAgICAoV2ViS2l0SW5wdXRNZXRob2RVbmRlcmxpbmUgKnVuZGVybGluZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdka1JHQkEgICAgICAg
ICAgICAgICpyZ2JhKTsKIAorV0VCS0lUX0FQSSBXZWJLaXRJbnB1dFB1cnBvc2UKK3dlYmtpdF9p
bnB1dF9tZXRob2RfY29udGV4dF9nZXRfaW5wdXRfcHVycG9zZSAgKFdlYktpdElucHV0TWV0aG9k
Q29udGV4dCAgICpjb250ZXh0KTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfaW5wdXRfbWV0
aG9kX2NvbnRleHRfc2V0X2lucHV0X3B1cnBvc2UgIChXZWJLaXRJbnB1dE1ldGhvZENvbnRleHQg
ICAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFdlYktpdElucHV0UHVycG9zZSAgICAgICAgICBwdXJwb3NlKTsKKworV0VCS0lUX0FQSSBX
ZWJLaXRJbnB1dEhpbnRzCit3ZWJraXRfaW5wdXRfbWV0aG9kX2NvbnRleHRfZ2V0X2lucHV0X2hp
bnRzICAgIChXZWJLaXRJbnB1dE1ldGhvZENvbnRleHQgICAqY29udGV4dCk7CisKK1dFQktJVF9B
UEkgdm9pZAord2Via2l0X2lucHV0X21ldGhvZF9jb250ZXh0X3NldF9pbnB1dF9oaW50cyAgICAo
V2ViS2l0SW5wdXRNZXRob2RDb250ZXh0ICAgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRJbnB1dEhpbnRzICAgICAgICAgICAg
aGludHMpOworCiAKIEdfRU5EX0RFQ0xTCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0SW5wdXRNZXRob2RDb250ZXh0SW1wbEd0ay5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdElucHV0TWV0aG9kQ29udGV4dEltcGxH
dGsuY3BwCmluZGV4IDk0NTM4NjAxNDdjLi4xOTFmOThkN2E4ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRJbnB1dE1ldGhvZENvbnRleHRJbXBsR3Rr
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdElucHV0TWV0
aG9kQ29udGV4dEltcGxHdGsuY3BwCkBAIC0zMSw2ICszMSw1NiBAQCBzdHJ1Y3QgX1dlYktpdElu
cHV0TWV0aG9kQ29udGV4dEltcGxHdGtQcml2YXRlIHsKIAogV0VCS0lUX0RFRklORV9UWVBFKFdl
YktpdElucHV0TWV0aG9kQ29udGV4dEltcGxHdGssIHdlYmtpdF9pbnB1dF9tZXRob2RfY29udGV4
dF9pbXBsX2d0aywgV0VCS0lUX1RZUEVfSU5QVVRfTUVUSE9EX0NPTlRFWFQpCiAKK3N0YXRpYyBH
dGtJbnB1dFB1cnBvc2UgdG9HdGtJbnB1dFB1cnBvc2UoV2ViS2l0SW5wdXRQdXJwb3NlIHB1cnBv
c2UpCit7CisgICAgc3dpdGNoIChwdXJwb3NlKSB7CisgICAgY2FzZSBXRUJLSVRfSU5QVVRfUFVS
UE9TRV9GUkVFX0ZPUk06CisgICAgICAgIHJldHVybiBHVEtfSU5QVVRfUFVSUE9TRV9GUkVFX0ZP
Uk07CisgICAgY2FzZSBXRUJLSVRfSU5QVVRfUFVSUE9TRV9ESUdJVFM6CisgICAgICAgIHJldHVy
biBHVEtfSU5QVVRfUFVSUE9TRV9ESUdJVFM7CisgICAgY2FzZSBXRUJLSVRfSU5QVVRfUFVSUE9T
RV9OVU1CRVI6CisgICAgICAgIHJldHVybiBHVEtfSU5QVVRfUFVSUE9TRV9OVU1CRVI7CisgICAg
Y2FzZSBXRUJLSVRfSU5QVVRfUFVSUE9TRV9QSE9ORToKKyAgICAgICAgcmV0dXJuIEdUS19JTlBV
VF9QVVJQT1NFX1BIT05FOworICAgIGNhc2UgV0VCS0lUX0lOUFVUX1BVUlBPU0VfVVJMOgorICAg
ICAgICByZXR1cm4gR1RLX0lOUFVUX1BVUlBPU0VfVVJMOworICAgIGNhc2UgV0VCS0lUX0lOUFVU
X1BVUlBPU0VfRU1BSUw6CisgICAgICAgIHJldHVybiBHVEtfSU5QVVRfUFVSUE9TRV9FTUFJTDsK
KyAgICBjYXNlIFdFQktJVF9JTlBVVF9QVVJQT1NFX1BBU1NXT1JEOgorICAgICAgICByZXR1cm4g
R1RLX0lOUFVUX1BVUlBPU0VfUEFTU1dPUkQ7CisgICAgfQorCisgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKK30KKworc3RhdGljIEd0a0lucHV0SGludHMgdG9HdGtJbnB1dEhpbnRz
KFdlYktpdElucHV0SGludHMgaGludHMpCit7CisgICAgdW5zaWduZWQgZ3RrSGludHMgPSAwOwor
ICAgIGlmIChoaW50cyAmIFdFQktJVF9JTlBVVF9ISU5UX1NQRUxMQ0hFQ0spCisgICAgICAgIGd0
a0hpbnRzIHw9IEdUS19JTlBVVF9ISU5UX1NQRUxMQ0hFQ0s7CisgICAgaWYgKGhpbnRzICYgV0VC
S0lUX0lOUFVUX0hJTlRfTE9XRVJDQVNFKQorICAgICAgICBndGtIaW50cyB8PSBHVEtfSU5QVVRf
SElOVF9MT1dFUkNBU0U7CisgICAgaWYgKGhpbnRzICYgV0VCS0lUX0lOUFVUX0hJTlRfVVBQRVJD
QVNFX0NIQVJTKQorICAgICAgICBndGtIaW50cyB8PSBHVEtfSU5QVVRfSElOVF9VUFBFUkNBU0Vf
Q0hBUlM7CisgICAgaWYgKGhpbnRzICYgV0VCS0lUX0lOUFVUX0hJTlRfVVBQRVJDQVNFX1dPUkRT
KQorICAgICAgICBndGtIaW50cyB8PSBHVEtfSU5QVVRfSElOVF9VUFBFUkNBU0VfV09SRFM7Cisg
ICAgaWYgKGhpbnRzICYgV0VCS0lUX0lOUFVUX0hJTlRfVVBQRVJDQVNFX1NFTlRFTkNFUykKKyAg
ICAgICAgZ3RrSGludHMgfD0gR1RLX0lOUFVUX0hJTlRfVVBQRVJDQVNFX1NFTlRFTkNFUzsKKyAg
ICBpZiAoaGludHMgJiBXRUJLSVRfSU5QVVRfSElOVF9JTkhJQklUX09TSykKKyAgICAgICAgZ3Rr
SGludHMgfD0gR1RLX0lOUFVUX0hJTlRfSU5ISUJJVF9PU0s7CisgICAgcmV0dXJuIHN0YXRpY19j
YXN0PEd0a0lucHV0SGludHM+KGd0a0hpbnRzKTsKK30KKworc3RhdGljIHZvaWQgaW5wdXRQdXJw
b3NlQ2hhbmdlZENhbGxiYWNrKFdlYktpdElucHV0TWV0aG9kQ29udGV4dEltcGxHdGsqIGNvbnRl
eHQpCit7CisgICAgZ19vYmplY3Rfc2V0KGNvbnRleHQtPnByaXYtPmNvbnRleHQuZ2V0KCksICJp
bnB1dC1wdXJwb3NlIiwgdG9HdGtJbnB1dFB1cnBvc2Uod2Via2l0X2lucHV0X21ldGhvZF9jb250
ZXh0X2dldF9pbnB1dF9wdXJwb3NlKFdFQktJVF9JTlBVVF9NRVRIT0RfQ09OVEVYVChjb250ZXh0
KSkpLCBudWxscHRyKTsKK30KKworc3RhdGljIHZvaWQgaW5wdXRIaW50c0NoYW5nZWRDYWxsYmFj
ayhXZWJLaXRJbnB1dE1ldGhvZENvbnRleHRJbXBsR3RrKiBjb250ZXh0KQoreworICAgIGdfb2Jq
ZWN0X3NldChjb250ZXh0LT5wcml2LT5jb250ZXh0LmdldCgpLCAiaW5wdXQtaGludHMiLCB0b0d0
a0lucHV0SGludHMod2Via2l0X2lucHV0X21ldGhvZF9jb250ZXh0X2dldF9pbnB1dF9oaW50cyhX
RUJLSVRfSU5QVVRfTUVUSE9EX0NPTlRFWFQoY29udGV4dCkpKSwgbnVsbHB0cik7Cit9CisKIHN0
YXRpYyB2b2lkIGNvbnRleHRQcmVlZGl0U3RhcnRDYWxsYmFjayhXZWJLaXRJbnB1dE1ldGhvZENv
bnRleHRJbXBsR3RrKiBjb250ZXh0KQogewogICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZShjb250
ZXh0LCAicHJlZWRpdC1zdGFydGVkIiwgbnVsbHB0cik7CkBAIC01NSw2ICsxMDUsOSBAQCBzdGF0
aWMgdm9pZCB3ZWJraXRJbnB1dE1ldGhvZENvbnRleHRJbXBsR3RrQ29uc3RydWN0ZWQoR09iamVj
dCogb2JqZWN0KQogewogICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF9pbnB1dF9tZXRob2RfY29u
dGV4dF9pbXBsX2d0a19wYXJlbnRfY2xhc3MpLT5jb25zdHJ1Y3RlZChvYmplY3QpOwogCisgICAg
Z19zaWduYWxfY29ubmVjdF9zd2FwcGVkKG9iamVjdCwgIm5vdGlmeTo6aW5wdXQtcHVycG9zZSIs
IEdfQ0FMTEJBQ0soaW5wdXRQdXJwb3NlQ2hhbmdlZENhbGxiYWNrKSwgb2JqZWN0KTsKKyAgICBn
X3NpZ25hbF9jb25uZWN0X3N3YXBwZWQob2JqZWN0LCAibm90aWZ5OjppbnB1dC1oaW50cyIsIEdf
Q0FMTEJBQ0soaW5wdXRIaW50c0NoYW5nZWRDYWxsYmFjayksIG9iamVjdCk7CisKICAgICBhdXRv
KiBwcml2ID0gV0VCS0lUX0lOUFVUX01FVEhPRF9DT05URVhUX0lNUExfR1RLKG9iamVjdCktPnBy
aXY7CiAgICAgcHJpdi0+Y29udGV4dCA9IGFkb3B0R1JlZihndGtfaW1fbXVsdGljb250ZXh0X25l
dygpKTsKICAgICBnX3NpZ25hbF9jb25uZWN0X29iamVjdChwcml2LT5jb250ZXh0LmdldCgpLCAi
cHJlZWRpdC1zdGFydCIsIEdfQ0FMTEJBQ0soY29udGV4dFByZWVkaXRTdGFydENhbGxiYWNrKSwg
b2JqZWN0LCBHX0NPTk5FQ1RfU1dBUFBFRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCmluZGV4IDk0NGRiMmUyNjMxLi4w
ZjE0N2VkOWJlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXZWJWaWV3QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKQEAgLTE2NjYsOSArMTY2Niw5IEBAIGJvb2wgd2Via2l0
V2ViVmlld0Jhc2VJc0luV2luZG93KFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3QmFzZSkKICAg
ICByZXR1cm4gd2ViVmlld0Jhc2UtPnByaXYtPmFjdGl2aXR5U3RhdGUuY29udGFpbnMoQWN0aXZp
dHlTdGF0ZTo6SXNJbldpbmRvdyk7CiB9CiAKLXZvaWQgd2Via2l0V2ViVmlld0Jhc2VTZXRJbnB1
dE1ldGhvZFN0YXRlKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJraXRXZWJWaWV3QmFzZSwgYm9vbCBl
bmFibGVkKQordm9pZCB3ZWJraXRXZWJWaWV3QmFzZVNldElucHV0TWV0aG9kU3RhdGUoV2ViS2l0
V2ViVmlld0Jhc2UqIHdlYmtpdFdlYlZpZXdCYXNlLCBPcHRpb25hbDxJbnB1dE1ldGhvZFN0YXRl
PiYmIHN0YXRlKQogewotICAgIHdlYmtpdFdlYlZpZXdCYXNlLT5wcml2LT5pbnB1dE1ldGhvZEZp
bHRlci5zZXRFbmFibGVkKGVuYWJsZWQpOworICAgIHdlYmtpdFdlYlZpZXdCYXNlLT5wcml2LT5p
bnB1dE1ldGhvZEZpbHRlci5zZXRTdGF0ZShXVEZNb3ZlKHN0YXRlKSk7CiB9CiAKIHZvaWQgd2Vi
a2l0V2ViVmlld0Jhc2VVcGRhdGVUZXh0SW5wdXRTdGF0ZShXZWJLaXRXZWJWaWV3QmFzZSogd2Vi
a2l0V2ViVmlld0Jhc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUuaAppbmRleCBkNjVhNjNjMWRkYS4uMWRm
ZTE4MTZlMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0V2ViVmlld0Jhc2VQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUuaApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1
ZGUgIkFQSVBhZ2VDb25maWd1cmF0aW9uLmgiCiAjaW5jbHVkZSAiRHJhZ0FuZERyb3BIYW5kbGVy
LmgiCiAjaW5jbHVkZSAiR2VzdHVyZUNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJJbnB1dE1ldGhv
ZFN0YXRlLmgiCiAjaW5jbHVkZSAiU2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGUuaCIKICNpbmNs
dWRlICJWaWV3R2VzdHVyZUNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJWaWV3U25hcHNob3RTdG9y
ZS5oIgpAQCAtNTUsNyArNTYsNyBAQCB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlU2V0SW5zcGVjdG9y
Vmlld1NpemUoV2ViS2l0V2ViVmlld0Jhc2UqLCB1bnNpZ25lZCBzaXplKTsKIHZvaWQgd2Via2l0
V2ViVmlld0Jhc2VTZXRBY3RpdmVDb250ZXh0TWVudVByb3h5KFdlYktpdFdlYlZpZXdCYXNlKiwg
V2ViS2l0OjpXZWJDb250ZXh0TWVudVByb3h5R3RrKik7CiBXZWJLaXQ6OldlYkNvbnRleHRNZW51
UHJveHlHdGsqIHdlYmtpdFdlYlZpZXdCYXNlR2V0QWN0aXZlQ29udGV4dE1lbnVQcm94eShXZWJL
aXRXZWJWaWV3QmFzZSopOwogR2RrRXZlbnQqIHdlYmtpdFdlYlZpZXdCYXNlVGFrZUNvbnRleHRN
ZW51RXZlbnQoV2ViS2l0V2ViVmlld0Jhc2UqKTsKLXZvaWQgd2Via2l0V2ViVmlld0Jhc2VTZXRJ
bnB1dE1ldGhvZFN0YXRlKFdlYktpdFdlYlZpZXdCYXNlKiwgYm9vbCBlbmFibGVkKTsKK3ZvaWQg
d2Via2l0V2ViVmlld0Jhc2VTZXRJbnB1dE1ldGhvZFN0YXRlKFdlYktpdFdlYlZpZXdCYXNlKiwg
T3B0aW9uYWw8V2ViS2l0OjpJbnB1dE1ldGhvZFN0YXRlPiYmKTsKIHZvaWQgd2Via2l0V2ViVmll
d0Jhc2VVcGRhdGVUZXh0SW5wdXRTdGF0ZShXZWJLaXRXZWJWaWV3QmFzZSopOwogdm9pZCB3ZWJr
aXRXZWJWaWV3QmFzZVNldENvbnRlbnRzU2l6ZShXZWJLaXRXZWJWaWV3QmFzZSosIGNvbnN0IFdl
YkNvcmU6OkludFNpemUmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2d0ay9kb2NzL3dlYmtpdDJndGstNC4wLXNlY3Rpb25zLnR4dCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50eHQKaW5kZXgg
ZjE0NzFiNTUxYjkuLjUyMDY5ODA4YmRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay00LjAtc2VjdGlvbnMudHh0CisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLTQuMC1zZWN0aW9ucy50
eHQKQEAgLTE1NjAsNiArMTU2MCw4IEBAIFdFQktJVF9UWVBFX0dFT0xPQ0FUSU9OX1BPU0lUSU9O
CiA8U0VDVElPTj4KIDxGSUxFPldlYktpdElucHV0TWV0aG9kQ29udGV4dDwvRklMRT4KIFdlYktp
dElucHV0TWV0aG9kQ29udGV4dAorV2ViS2l0SW5wdXRQdXJwb3NlCitXZWJLaXRJbnB1dEhpbnRz
CiB3ZWJraXRfaW5wdXRfbWV0aG9kX2NvbnRleHRfc2V0X2VuYWJsZV9wcmVlZGl0CiB3ZWJraXRf
aW5wdXRfbWV0aG9kX2NvbnRleHRfZ2V0X3ByZWVkaXQKIHdlYmtpdF9pbnB1dF9tZXRob2RfY29u
dGV4dF9maWx0ZXJfa2V5X2V2ZW50CkBAIC0xNTY3LDYgKzE1NjksMTAgQEAgd2Via2l0X2lucHV0
X21ldGhvZF9jb250ZXh0X25vdGlmeV9mb2N1c19pbgogd2Via2l0X2lucHV0X21ldGhvZF9jb250
ZXh0X25vdGlmeV9mb2N1c19vdXQKIHdlYmtpdF9pbnB1dF9tZXRob2RfY29udGV4dF9ub3RpZnlf
Y3Vyc29yX2FyZWEKIHdlYmtpdF9pbnB1dF9tZXRob2RfY29udGV4dF9yZXNldAord2Via2l0X2lu
cHV0X21ldGhvZF9jb250ZXh0X2dldF9pbnB1dF9wdXJwb3NlCit3ZWJraXRfaW5wdXRfbWV0aG9k
X2NvbnRleHRfc2V0X2lucHV0X3B1cnBvc2UKK3dlYmtpdF9pbnB1dF9tZXRob2RfY29udGV4dF9n
ZXRfaW5wdXRfaGludHMKK3dlYmtpdF9pbnB1dF9tZXRob2RfY29udGV4dF9zZXRfaW5wdXRfaGlu
dHMKIAogPFNVQlNFQ1RJT04gVW5kZXJsaW5lPgogV2ViS2l0SW5wdXRNZXRob2RVbmRlcmxpbmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvUGFnZUNsaWVudElt
cGwuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9QYWdlQ2xpZW50SW1wbC5j
cHAKaW5kZXggZGE0YTk1MjU3ZWYuLjU5MmQ3MzM0OTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1BhZ2VDbGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1BhZ2VDbGllbnRJbXBsLmNwcApAQCAtNDMwLDkgKzQzMCw5
IEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OnNlbmRNZXNzYWdlVG9XZWJWaWV3KFVzZXJNZXNzYWdl
JiYgbWVzc2FnZSwgQ29tcGxldGlvbkhhbmRsCiAgICAgbV92aWV3LmRpZFJlY2VpdmVVc2VyTWVz
c2FnZShXVEZNb3ZlKG1lc3NhZ2UpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAK
LXZvaWQgUGFnZUNsaWVudEltcGw6OnNldElucHV0TWV0aG9kU3RhdGUoYm9vbCBlbmFibGVkKQor
dm9pZCBQYWdlQ2xpZW50SW1wbDo6c2V0SW5wdXRNZXRob2RTdGF0ZShPcHRpb25hbDxJbnB1dE1l
dGhvZFN0YXRlPiYmIHN0YXRlKQogewotICAgIG1fdmlldy5zZXRJbnB1dE1ldGhvZFN0YXRlKGVu
YWJsZWQpOworICAgIG1fdmlldy5zZXRJbnB1dE1ldGhvZFN0YXRlKFdURk1vdmUoc3RhdGUpKTsK
IH0KIAogdm9pZCBQYWdlQ2xpZW50SW1wbDo6c2VsZWN0aW9uRGlkQ2hhbmdlKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvUGFnZUNsaWVudEltcGwuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvUGFnZUNsaWVudEltcGwuaAppbmRleCA3ZGNk
OGExOWJmZC4uYTJmODhmODA4Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS93cGUvUGFnZUNsaWVudEltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvd3BlL1BhZ2VDbGllbnRJbXBsLmgKQEAgLTQyLDYgKzQyLDcgQEAgZW51bSBjbGFzcyBET01Q
YXN0ZUFjY2Vzc1Jlc3BvbnNlIDogdWludDhfdDsKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFz
cyBTY3JvbGxHZXN0dXJlQ29udHJvbGxlcjsKK3N0cnVjdCBJbnB1dE1ldGhvZFN0YXRlOwogc3Ry
dWN0IFVzZXJNZXNzYWdlOwogCiBlbnVtIGNsYXNzIFVuZG9PclJlZG8gOiBib29sOwpAQCAtNjIs
NyArNjMsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIHZvaWQgc2VuZE1lc3NhZ2VUb1dlYlZp
ZXcoVXNlck1lc3NhZ2UmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChVc2VyTWVzc2FnZSYmKT4m
Jik7Ci0gICAgdm9pZCBzZXRJbnB1dE1ldGhvZFN0YXRlKGJvb2wgZW5hYmxlZCk7CisgICAgdm9p
ZCBzZXRJbnB1dE1ldGhvZFN0YXRlKE9wdGlvbmFsPElucHV0TWV0aG9kU3RhdGU+JiYpOwogCiBw
cml2YXRlOgogICAgIC8vIFBhZ2VDbGllbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS93cGUvV1BFVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
d3BlL1dQRVZpZXcuY3BwCmluZGV4IGVmNjViN2E5YjZkLi4yNzViYjBiYTk1ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XUEVWaWV3LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dQRVZpZXcuY3BwCkBAIC0yMzEsOSArMjMxLDkg
QEAgV2ViS2l0SW5wdXRNZXRob2RDb250ZXh0KiBWaWV3OjppbnB1dE1ldGhvZENvbnRleHQoKSBj
b25zdAogICAgIHJldHVybiBtX2lucHV0TWV0aG9kRmlsdGVyLmNvbnRleHQoKTsKIH0KIAotdm9p
ZCBWaWV3OjpzZXRJbnB1dE1ldGhvZFN0YXRlKGJvb2wgZW5hYmxlZCkKK3ZvaWQgVmlldzo6c2V0
SW5wdXRNZXRob2RTdGF0ZShPcHRpb25hbDxJbnB1dE1ldGhvZFN0YXRlPiYmIHN0YXRlKQogewot
ICAgIG1faW5wdXRNZXRob2RGaWx0ZXIuc2V0RW5hYmxlZChlbmFibGVkKTsKKyAgICBtX2lucHV0
TWV0aG9kRmlsdGVyLnNldFN0YXRlKFdURk1vdmUoc3RhdGUpKTsKIH0KIAogdm9pZCBWaWV3Ojpz
ZWxlY3Rpb25EaWRDaGFuZ2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL3dwZS9XUEVWaWV3LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dQRVZp
ZXcuaAppbmRleCBhYTg3MDcyZWMxYy4uZjIzZGZjMjdhN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV1BFVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS93cGUvV1BFVmlldy5oCkBAIC04MSw3ICs4MSw3IEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgc2V0SW5wdXRNZXRob2RDb250ZXh0KFdlYktpdElucHV0TWV0aG9kQ29udGV4dCopOwog
ICAgIFdlYktpdElucHV0TWV0aG9kQ29udGV4dCogaW5wdXRNZXRob2RDb250ZXh0KCkgY29uc3Q7
Ci0gICAgdm9pZCBzZXRJbnB1dE1ldGhvZFN0YXRlKGJvb2wpOworICAgIHZvaWQgc2V0SW5wdXRN
ZXRob2RTdGF0ZShPcHRpb25hbDxXZWJLaXQ6OklucHV0TWV0aG9kU3RhdGU+JiYpOwogICAgIHZv
aWQgc3ludGhlc2l6ZUNvbXBvc2l0aW9uS2V5UHJlc3MoY29uc3QgU3RyaW5nJiwgT3B0aW9uYWw8
VmVjdG9yPFdlYkNvcmU6OkNvbXBvc2l0aW9uVW5kZXJsaW5lPj4mJiwgT3B0aW9uYWw8V2ViS2l0
OjpFZGl0aW5nUmFuZ2U+JiYpOwogCiAgICAgdm9pZCBzZWxlY3Rpb25EaWRDaGFuZ2UoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0SW5wdXRNZXRo
b2RDb250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdElucHV0
TWV0aG9kQ29udGV4dC5oCmluZGV4IDQ2NGUzNTIxNmZmLi44Mjg1NTk0ODVkOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRJbnB1dE1ldGhvZENvbnRl
eHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdElucHV0TWV0
aG9kQ29udGV4dC5oCkBAIC00MCw2ICs0MCw1NCBAQCBHX0JFR0lOX0RFQ0xTCiAKICNkZWZpbmUg
V0VCS0lUX1RZUEVfSU5QVVRfTUVUSE9EX1VOREVSTElORSAgICAgICAgICAod2Via2l0X2lucHV0
X21ldGhvZF91bmRlcmxpbmVfZ2V0X3R5cGUoKSkKIAorLyoqCisgKiBXZWJLaXRJbnB1dFB1cnBv
c2U6CisgKiBAV0VCS0lUX0lOUFVUX1BVUlBPU0VfRlJFRV9GT1JNOiBFZGl0YWJsZSBlbGVtZW50
IGV4cGVjdHMgYW55IGNoYXJhY3RlcnMKKyAqIEBXRUJLSVRfSU5QVVRfUFVSUE9TRV9ESUdJVFM6
IEVkaXRhYmxlIGVsZW1lbnQgZXhwZWN0cyBkaWdpdHMKKyAqIEBXRUJLSVRfSU5QVVRfUFVSUE9T
RV9OVU1CRVI6IEVkaXRhYmxlIGVsZW1lbnQgZXhwZWN0cyBhIG51bWJlcgorICogQFdFQktJVF9J
TlBVVF9QVVJQT1NFX1BIT05FOiBFZGl0YWJsZSBlbGVtZW50IGV4cGVjdHMgYSB0ZWxlcGhvbmUK
KyAqIEBXRUJLSVRfSU5QVVRfUFVSUE9TRV9VUkw6IEVkaXRhYmxlIGVsZW1lbnQgZXhwZWN0cyBh
IFVSTAorICogQFdFQktJVF9JTlBVVF9QVVJQT1NFX0VNQUlMOiBFZGl0YWJsZSBlbGVtZW50IGV4
cGVjdHMgYW4gZW1haWwKKyAqIEBXRUJLSVRfSU5QVVRfUFVSUE9TRV9QQVNTV09SRDogRWRpdGFi
bGUgZWxlbWVudCBleHBlY3RzIGEgcGFzc3dvcmQKKyAqCisgKiBFbnVtIHZhbHVlcyB1c2VkIHRv
IGRlc2NyaWJlIHRoZSBwcmltYXJ5IHB1cnBvc2Ugb2YgdGhlIGFjdGl2ZSBlZGl0YWJsZSBlbGVt
ZW50LgorICoKKyAqIFNpbmNlOiAyLjI4CisgKi8KK3R5cGVkZWYgZW51bSB7CisgICAgV0VCS0lU
X0lOUFVUX1BVUlBPU0VfRlJFRV9GT1JNLAorICAgIFdFQktJVF9JTlBVVF9QVVJQT1NFX0RJR0lU
UywKKyAgICBXRUJLSVRfSU5QVVRfUFVSUE9TRV9OVU1CRVIsCisgICAgV0VCS0lUX0lOUFVUX1BV
UlBPU0VfUEhPTkUsCisgICAgV0VCS0lUX0lOUFVUX1BVUlBPU0VfVVJMLAorICAgIFdFQktJVF9J
TlBVVF9QVVJQT1NFX0VNQUlMLAorICAgIFdFQktJVF9JTlBVVF9QVVJQT1NFX1BBU1NXT1JECit9
IFdlYktpdElucHV0UHVycG9zZTsKKworLyoqCisgKiBXZWJLaXRJbnB1dEhpbnRzOgorICogQFdF
QktJVF9JTlBVVF9ISU5UX05PTkU6IE5vIHNwZWNpYWwgYmVoYXZpb3Igc3VnZ2VzdGVkCisgKiBA
V0VCS0lUX0lOUFVUX0hJTlRfU1BFTExDSEVDSzogU3VnZ2VzdCBzcGVsbCBjaGVja2luZworICog
QFdFQktJVF9JTlBVVF9ISU5UX0xPV0VSQ0FTRTogU3VnZ2VzdCB0byBub3QgYXV0b2NhcGl0bGl6
ZQorICogQFdFQktJVF9JTlBVVF9ISU5UX1VQUEVSQ0FTRV9DSEFSUzogU3VnZ2VzdCB0byBjYXBp
dGFsaXplIGFsbCB0ZXh0CisgKiBAV0VCS0lUX0lOUFVUX0hJTlRfVVBQRVJDQVNFX1dPUkRTOiBT
dWdnZXN0IHRvIGNhcGl0YWxpemUgdGhlIGZpcnN0IGNoYXJhY3RlciBvZiBlYWNoIHdvcmQKKyAq
IEBXRUJLSVRfSU5QVVRfSElOVF9VUFBFUkNBU0VfU0VOVEVOQ0VTOiBTdWdnZXN0IHRvIGNhcGl0
YWxpemUgdGhlIGZpcnN0IHdvcmQgb2YgZWFjaCBzZW50ZW5jZQorICogQFdFQktJVF9JTlBVVF9I
SU5UX0lOSElCSVRfT1NLOiBTdWdnZXN0IHRvIG5vdCBzaG93IGFuIG9uc2NyZWVuIGtleWJvYXJk
CisgKgorICogRW51bSB2YWx1ZXMgdXNlZCB0byBkZXNjcmliZSBoaW50cyB0aGF0IG1pZ2h0IGJl
IHRha2VuIGludG8gYWNjb3VudCBieSBpbnB1dCBtZXRob2RzLgorICoKKyAqIFNpbmNlOiAyLjI4
CisgKi8KK3R5cGVkZWYgZW51bSB7CisgICAgV0VCS0lUX0lOUFVUX0hJTlRfTk9ORSAgICAgICAg
ICAgICAgICA9IDAsCisgICAgV0VCS0lUX0lOUFVUX0hJTlRfU1BFTExDSEVDSyAgICAgICAgICA9
IDEgPDwgMCwKKyAgICBXRUJLSVRfSU5QVVRfSElOVF9MT1dFUkNBU0UgICAgICAgICAgID0gMSA8
PCAxLAorICAgIFdFQktJVF9JTlBVVF9ISU5UX1VQUEVSQ0FTRV9DSEFSUyAgICAgPSAxIDw8IDIs
CisgICAgV0VCS0lUX0lOUFVUX0hJTlRfVVBQRVJDQVNFX1dPUkRTICAgICA9IDEgPDwgMywKKyAg
ICBXRUJLSVRfSU5QVVRfSElOVF9VUFBFUkNBU0VfU0VOVEVOQ0VTID0gMSA8PCA0LAorICAgIFdF
QktJVF9JTlBVVF9ISU5UX0lOSElCSVRfT1NLICAgICAgICAgPSAxIDw8IDUKK30gV2ViS2l0SW5w
dXRIaW50czsKKwogdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdElucHV0TWV0aG9kQ29udGV4dCAgICAg
ICAgV2ViS2l0SW5wdXRNZXRob2RDb250ZXh0OwogdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdElucHV0
TWV0aG9kQ29udGV4dENsYXNzICAgV2ViS2l0SW5wdXRNZXRob2RDb250ZXh0Q2xhc3M7CiB0eXBl
ZGVmIHN0cnVjdCBfV2ViS2l0SW5wdXRNZXRob2RDb250ZXh0UHJpdmF0ZSBXZWJLaXRJbnB1dE1l
dGhvZENvbnRleHRQcml2YXRlOwpAQCAtMTQxLDYgKzE4OSwyMCBAQCBXRUJLSVRfQVBJIHZvaWQK
IHdlYmtpdF9pbnB1dF9tZXRob2RfdW5kZXJsaW5lX3NldF9jb2xvciAgICAgICAgKFdlYktpdElu
cHV0TWV0aG9kVW5kZXJsaW5lICAgICAgKnVuZGVybGluZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdENvbG9yICAgICAgICAgICAgICAgICAg
ICAgKmNvbG9yKTsKIAorV0VCS0lUX0FQSSBXZWJLaXRJbnB1dFB1cnBvc2UKK3dlYmtpdF9pbnB1
dF9tZXRob2RfY29udGV4dF9nZXRfaW5wdXRfcHVycG9zZSAgKFdlYktpdElucHV0TWV0aG9kQ29u
dGV4dCAgICAgICAgKmNvbnRleHQpOworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9pbnB1dF9t
ZXRob2RfY29udGV4dF9zZXRfaW5wdXRfcHVycG9zZSAgKFdlYktpdElucHV0TWV0aG9kQ29udGV4
dCAgICAgICAgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBXZWJLaXRJbnB1dFB1cnBvc2UgICAgICAgICAgICAgICBwdXJwb3NlKTsKKwor
V0VCS0lUX0FQSSBXZWJLaXRJbnB1dEhpbnRzCit3ZWJraXRfaW5wdXRfbWV0aG9kX2NvbnRleHRf
Z2V0X2lucHV0X2hpbnRzICAgIChXZWJLaXRJbnB1dE1ldGhvZENvbnRleHQgICAgICAgICpjb250
ZXh0KTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfaW5wdXRfbWV0aG9kX2NvbnRleHRfc2V0
X2lucHV0X2hpbnRzICAgIChXZWJLaXRJbnB1dE1ldGhvZENvbnRleHQgICAgICAgICpjb250ZXh0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0
SW5wdXRIaW50cyAgICAgICAgICAgICAgICAgaGludHMpOworCiAKIEdfRU5EX0RFQ0xTCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvZG9jcy93cGUtMS4wLXNl
Y3Rpb25zLnR4dCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvZG9jcy93cGUtMS4w
LXNlY3Rpb25zLnR4dAppbmRleCBmMGIwYTc1OTIxYy4uZGY0Zjg0NmI0NTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvZG9jcy93cGUtMS4wLXNlY3Rpb25zLnR4
dAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL2RvY3Mvd3BlLTEuMC1zZWN0
aW9ucy50eHQKQEAgLTE0NDUsNiArMTQ0NSw4IEBAIFdFQktJVF9UWVBFX0dFT0xPQ0FUSU9OX1BP
U0lUSU9OCiA8U0VDVElPTj4KIDxGSUxFPldlYktpdElucHV0TWV0aG9kQ29udGV4dDwvRklMRT4K
IFdlYktpdElucHV0TWV0aG9kQ29udGV4dAorV2ViS2l0SW5wdXRQdXJwb3NlCitXZWJLaXRJbnB1
dEhpbnRzCiB3ZWJraXRfaW5wdXRfbWV0aG9kX2NvbnRleHRfc2V0X2VuYWJsZV9wcmVlZGl0CiB3
ZWJraXRfaW5wdXRfbWV0aG9kX2NvbnRleHRfZ2V0X3ByZWVkaXQKIHdlYmtpdF9pbnB1dF9tZXRo
b2RfY29udGV4dF9maWx0ZXJfa2V5X2V2ZW50CkBAIC0xNDUyLDYgKzE0NTQsMTAgQEAgd2Via2l0
X2lucHV0X21ldGhvZF9jb250ZXh0X25vdGlmeV9mb2N1c19pbgogd2Via2l0X2lucHV0X21ldGhv
ZF9jb250ZXh0X25vdGlmeV9mb2N1c19vdXQKIHdlYmtpdF9pbnB1dF9tZXRob2RfY29udGV4dF9u
b3RpZnlfY3Vyc29yX2FyZWEKIHdlYmtpdF9pbnB1dF9tZXRob2RfY29udGV4dF9yZXNldAord2Vi
a2l0X2lucHV0X21ldGhvZF9jb250ZXh0X2dldF9pbnB1dF9wdXJwb3NlCit3ZWJraXRfaW5wdXRf
bWV0aG9kX2NvbnRleHRfc2V0X2lucHV0X3B1cnBvc2UKK3dlYmtpdF9pbnB1dF9tZXRob2RfY29u
dGV4dF9nZXRfaW5wdXRfaGludHMKK3dlYmtpdF9pbnB1dF9tZXRob2RfY29udGV4dF9zZXRfaW5w
dXRfaGludHMKIAogPFNVQlNFQ1RJT04gVW5kZXJsaW5lPgogV2ViS2l0SW5wdXRNZXRob2RVbmRl
cmxpbmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggYWNiNzBmNTY3
ZDMuLjhkY2M1ZDBmYzA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApA
QCAtMzExLDYgKzMxMSw3IEBAIHN0cnVjdCBFZGl0b3JTdGF0ZTsKIHN0cnVjdCBGb2N1c2VkRWxl
bWVudEluZm9ybWF0aW9uOwogc3RydWN0IEZvbnRJbmZvOwogc3RydWN0IEZyYW1lSW5mb0RhdGE7
CitzdHJ1Y3QgSW5wdXRNZXRob2RTdGF0ZTsKIHN0cnVjdCBJbnNlcnRUZXh0T3B0aW9uczsKIHN0
cnVjdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbjsKIHN0cnVjdCBJbnRlcmFjdGlv
bkluZm9ybWF0aW9uUmVxdWVzdDsKQEAgLTc5MCw3ICs3OTEsNyBAQCBwdWJsaWM6CiAjaWYgUExB
VEZPUk0oR1RLKSB8fCBQTEFURk9STShXUEUpCiAgICAgdm9pZCBjYW5jZWxDb21wb3NpdGlvbihj
b25zdCBTdHJpbmcmIGNvbXBvc2l0aW9uU3RyaW5nKTsKIAotICAgIHZvaWQgc2V0SW5wdXRNZXRo
b2RTdGF0ZShib29sIGVuYWJsZWQpOworICAgIHZvaWQgc2V0SW5wdXRNZXRob2RTdGF0ZShPcHRp
b25hbDxJbnB1dE1ldGhvZFN0YXRlPiYmKTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oR1RLKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2Vz
LmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCmlu
ZGV4IDAyNWZiMmMxYzk5Li45NTRmOTc0YTMwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgpAQCAtMjE5LDcgKzIxOSw3IEBAIG1lc3Nh
Z2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKEdUSykgfHwgUExB
VEZPUk0oV1BFKQotICAgIFNldElucHV0TWV0aG9kU3RhdGUoYm9vbCBlbmFibGVkKTsKKyAgICBT
ZXRJbnB1dE1ldGhvZFN0YXRlKE9wdGlvbmFsPFdlYktpdDo6SW5wdXRNZXRob2RTdGF0ZT4gc3Rh
dGUpOwogI2VuZGlmCiAKICAgICAjIEJhY2tGb3J3YXJkIG1lc3NhZ2VzCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViUGFnZVByb3h5R3RrLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJQYWdlUHJveHlHdGsuY3BwCmluZGV4IDU0MGUzYmM2ODQ2
Li44ZWU4NmZhMWJlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dl
YlBhZ2VQcm94eUd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYlBh
Z2VQcm94eUd0ay5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJXZWJQYWdlUHJveHkuaCIKIAorI2luY2x1ZGUgIklucHV0TWV0aG9kU3RhdGUuaCIK
ICNpbmNsdWRlICJQYWdlQ2xpZW50SW1wbC5oIgogI2luY2x1ZGUgIldlYktpdFVzZXJNZXNzYWdl
LmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlLmgiCkBAIC0xNDgsOSArMTQ5
LDkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OndpbmRvd2VkUGx1Z2luVmlzaWJpbGl0eURpZENoYW5n
ZShib29sIGlzVmlzaWJsZSwgdWludDY0X3Qgd2kKIH0KICNlbmRpZiAvLyBQTEFURk9STShYMTEp
CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpzZXRJbnB1dE1ldGhvZFN0YXRlKGJvb2wgZW5hYmxlZCkK
K3ZvaWQgV2ViUGFnZVByb3h5OjpzZXRJbnB1dE1ldGhvZFN0YXRlKE9wdGlvbmFsPElucHV0TWV0
aG9kU3RhdGU+JiYgc3RhdGUpCiB7Ci0gICAgd2Via2l0V2ViVmlld0Jhc2VTZXRJbnB1dE1ldGhv
ZFN0YXRlKFdFQktJVF9XRUJfVklFV19CQVNFKHZpZXdXaWRnZXQoKSksIGVuYWJsZWQpOworICAg
IHdlYmtpdFdlYlZpZXdCYXNlU2V0SW5wdXRNZXRob2RTdGF0ZShXRUJLSVRfV0VCX1ZJRVdfQkFT
RSh2aWV3V2lkZ2V0KCkpLCBXVEZNb3ZlKHN0YXRlKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5
OjpnZXRDZW50ZXJGb3Jab29tR2VzdHVyZShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgY2VudGVy
SW5WaWV3Q29vcmRpbmF0ZXMsIFdlYkNvcmU6OkludFBvaW50JiBjZW50ZXIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93cGUvV2ViUGFnZVByb3h5V1BFLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL3dwZS9XZWJQYWdlUHJveHlXUEUuY3BwCmluZGV4IDcxOGYyMTJk
MTQyLi44ZjY0MGRiZDgyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd3Bl
L1dlYlBhZ2VQcm94eVdQRS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd3BlL1dl
YlBhZ2VQcm94eVdQRS5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJXZWJQYWdlUHJv
eHkuaCIKIAogI2luY2x1ZGUgIkVkaXRvclN0YXRlLmgiCisjaW5jbHVkZSAiSW5wdXRNZXRob2RT
dGF0ZS5oIgogI2luY2x1ZGUgIlBhZ2VDbGllbnRJbXBsLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURh
dGFTdG9yZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KQEAgLTk1LDkg
Kzk2LDkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNlbmRNZXNzYWdlVG9XZWJWaWV3KFVzZXJNZXNz
YWdlJiYgbWVzc2FnZSkKICAgICBzZW5kTWVzc2FnZVRvV2ViVmlld1dpdGhSZXBseShXVEZNb3Zl
KG1lc3NhZ2UpLCBbXShVc2VyTWVzc2FnZSYmKSB7IH0pOwogfQogCi12b2lkIFdlYlBhZ2VQcm94
eTo6c2V0SW5wdXRNZXRob2RTdGF0ZShib29sIGVuYWJsZWQpCit2b2lkIFdlYlBhZ2VQcm94eTo6
c2V0SW5wdXRNZXRob2RTdGF0ZShPcHRpb25hbDxJbnB1dE1ldGhvZFN0YXRlPiYmIHN0YXRlKQog
ewotICAgIHN0YXRpY19jYXN0PFBhZ2VDbGllbnRJbXBsJj4ocGFnZUNsaWVudCgpKS5zZXRJbnB1
dE1ldGhvZFN0YXRlKGVuYWJsZWQpOworICAgIHN0YXRpY19jYXN0PFBhZ2VDbGllbnRJbXBsJj4o
cGFnZUNsaWVudCgpKS5zZXRJbnB1dE1ldGhvZFN0YXRlKFdURk1vdmUoc3RhdGUpKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCmluZGV4IGRhODNlOTgx
ZjkyLi43ZTU3YWVkOTU1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKQEAgLTYwNCwxMyArNjA0
LDEzIEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50Ojp3aWxsU2V0SW5wdXRNZXRob2RTdGF0ZSgpCiB7
CiB9CiAKLXZvaWQgV2ViRWRpdG9yQ2xpZW50OjpzZXRJbnB1dE1ldGhvZFN0YXRlKGJvb2wgZW5h
YmxlZCkKK3ZvaWQgV2ViRWRpdG9yQ2xpZW50OjpzZXRJbnB1dE1ldGhvZFN0YXRlKEVsZW1lbnQq
IGVsZW1lbnQpCiB7CiAjaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXUEUpCi0gICAgbV9w
YWdlLT5zZXRJbnB1dE1ldGhvZFN0YXRlKGVuYWJsZWQpOworICAgIG1fcGFnZS0+c2V0SW5wdXRN
ZXRob2RTdGF0ZShlbGVtZW50KTsKICNlbHNlCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICBV
TlVTRURfUEFSQU0oZW5hYmxlZCk7CisgICAgVU5VU0VEX1BBUkFNKGVsZW1lbnQpOwogI2VuZGlm
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJFZGl0b3JDbGllbnQuaAppbmRleCBhNzJlZTJhNmJkZC4uNzI4MWZiNDE2MTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRWRpdG9yQ2xpZW50LmgKQEAgLTE2Nyw3ICsxNjcsNyBAQCBwcml2YXRlOgogICAgIGJvb2wg
c3BlbGxpbmdVSUlzU2hvd2luZygpIGZpbmFsOwogICAgIHZvaWQgZ2V0R3Vlc3Nlc0ZvcldvcmQo
Y29uc3QgU3RyaW5nJiB3b3JkLCBjb25zdCBTdHJpbmcmIGNvbnRleHQsIGNvbnN0IFdlYkNvcmU6
OlZpc2libGVTZWxlY3Rpb24mIGN1cnJlbnRTZWxlY3Rpb24sIFZlY3RvcjxTdHJpbmc+JiBndWVz
c2VzKSBmaW5hbDsKICAgICB2b2lkIHdpbGxTZXRJbnB1dE1ldGhvZFN0YXRlKCkgZmluYWw7Ci0g
ICAgdm9pZCBzZXRJbnB1dE1ldGhvZFN0YXRlKGJvb2wgZW5hYmxlZCkgZmluYWw7CisgICAgdm9p
ZCBzZXRJbnB1dE1ldGhvZFN0YXRlKFdlYkNvcmU6OkVsZW1lbnQqKSBmaW5hbDsKICAgICB2b2lk
IHJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFdlYkNvcmU6OlRleHRDaGVja2luZ1JlcXVlc3QmLCBj
b25zdCBXZWJDb3JlOjpWaXNpYmxlU2VsZWN0aW9uJiBjdXJyZW50U2VsZWN0aW9uKSBmaW5hbDsK
IAogI2lmIFBMQVRGT1JNKEdUSykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaAppbmRleCA3OGVhMDJlZjVmMi4uOTNmMWIwNjM3ODIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTEwMCw2ICsxMDAsMTAgQEAgdHlwZWRl
ZiBzdHJ1Y3QgX0F0a09iamVjdCBBdGtPYmplY3Q7CiAjaW5jbHVkZSAiV2ViUHJpbnRPcGVyYXRp
b25HdGsuaCIKICNlbmRpZgogCisjaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXUEUpCisj
aW5jbHVkZSAiSW5wdXRNZXRob2RTdGF0ZS5oIgorI2VuZGlmCisKICNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQogI2luY2x1ZGUgIkdlc3R1cmVUeXBlcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvSW50
UG9pbnRIYXNoLmg+CkBAIC0xMDg2LDcgKzEwOTAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBwb3N0
TWVzc2FnZUlnbm9yaW5nRnVsbHlTeW5jaHJvbm91c01vZGUoY29uc3QgU3RyaW5nJiBtZXNzYWdl
TmFtZSwgQVBJOjpPYmplY3QqIG1lc3NhZ2VCb2R5KTsKIAogI2lmIFBMQVRGT1JNKEdUSykgfHwg
UExBVEZPUk0oV1BFKQotICAgIHZvaWQgc2V0SW5wdXRNZXRob2RTdGF0ZShib29sKTsKKyAgICB2
b2lkIHNldElucHV0TWV0aG9kU3RhdGUoV2ViQ29yZTo6RWxlbWVudCopOwogI2VuZGlmCiAKICAg
ICB2b2lkIGltYWdlT3JNZWRpYURvY3VtZW50U2l6ZUNoYW5nZWQoY29uc3QgV2ViQ29yZTo6SW50
U2l6ZSYpOwpAQCAtMTk1OSw3ICsxOTYzLDcgQEAgcHJpdmF0ZToKICAgICBtdXRhYmxlIEVkaXRv
clN0YXRlSXNDb250ZW50RWRpdGFibGUgbV9sYXN0RWRpdG9yU3RhdGVXYXNDb250ZW50RWRpdGFi
bGUgeyBFZGl0b3JTdGF0ZUlzQ29udGVudEVkaXRhYmxlOjpVbnNldCB9OwogCiAjaWYgUExBVEZP
Uk0oR1RLKSB8fCBQTEFURk9STShXUEUpCi0gICAgYm9vbCBtX2lucHV0TWV0aG9kRW5hYmxlZCB7
IGZhbHNlIH07CisgICAgT3B0aW9uYWw8SW5wdXRNZXRob2RTdGF0ZT4gbV9pbnB1dE1ldGhvZFN0
YXRlOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9nbGliL1dlYlBhZ2VHTGli
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2dsaWIvV2ViUGFnZUdMaWIu
Y3BwCmluZGV4IDZkMzk4MGFhYzIzLi41ZDgyYzdkYTI1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvZ2xpYi9XZWJQYWdlR0xpYi5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvZ2xpYi9XZWJQYWdlR0xpYi5jcHAKQEAgLTI2LDE0
ICsyNiwxOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYlBhZ2UuaCIKIAor
I2luY2x1ZGUgIklucHV0TWV0aG9kU3RhdGUuaCIKICNpbmNsdWRlICJVc2VyTWVzc2FnZS5oIgog
I2luY2x1ZGUgIldlYktpdEV4dGVuc2lvbk1hbmFnZXIuaCIKICNpbmNsdWRlICJXZWJLaXRVc2Vy
TWVzc2FnZS5oIgogI2luY2x1ZGUgIldlYktpdFdlYkV4dGVuc2lvbi5oIgogI2luY2x1ZGUgIldl
YktpdFdlYlBhZ2VQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5TWVzc2FnZXMuaCIK
KyNpbmNsdWRlIDxXZWJDb3JlL0hUTUxJbnB1dEVsZW1lbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L0hUTUxUZXh0QXJlYUVsZW1lbnQuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7Cit1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKIAogdm9pZCBXZWJQYWdlOjpzZW5kTWVzc2FnZVRvV2ViRXh0ZW5zaW9u
V2l0aFJlcGx5KFVzZXJNZXNzYWdlJiYgbWVzc2FnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChV
c2VyTWVzc2FnZSYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKQEAgLTU3LDEzICs2MSwzNiBA
QCB2b2lkIFdlYlBhZ2U6OnNlbmRNZXNzYWdlVG9XZWJFeHRlbnNpb24oVXNlck1lc3NhZ2UmJiBt
ZXNzYWdlKQogICAgIHNlbmRNZXNzYWdlVG9XZWJFeHRlbnNpb25XaXRoUmVwbHkoV1RGTW92ZSht
ZXNzYWdlKSwgW10oVXNlck1lc3NhZ2UmJikgeyB9KTsKIH0KIAotdm9pZCBXZWJQYWdlOjpzZXRJ
bnB1dE1ldGhvZFN0YXRlKGJvb2wgZW5hYmxlZCkKK3N0YXRpYyBPcHRpb25hbDxJbnB1dE1ldGhv
ZFN0YXRlPiBpbnB1dE1ldGhvZFNhdGVGb3JFbGVtZW50KEVsZW1lbnQqIGVsZW1lbnQpCiB7Ci0g
ICAgaWYgKG1faW5wdXRNZXRob2RFbmFibGVkID09IGVuYWJsZWQpCisgICAgaWYgKCFlbGVtZW50
IHx8ICFlbGVtZW50LT5zaG91bGRVc2VJbnB1dE1ldGhvZCgpKQorICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworCisgICAgSW5wdXRNZXRob2RTdGF0ZSBzdGF0ZTsKKyAgICBpZiAoaXM8SFRN
TElucHV0RWxlbWVudD4oKmVsZW1lbnQpKSB7CisgICAgICAgIGF1dG8mIGlucHV0RWxlbWVudCA9
IGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KCplbGVtZW50KTsKKyAgICAgICAgc3RhdGUuc2V0
UHVycG9zZUZvcklucHV0RWxlbWVudChpbnB1dEVsZW1lbnQpOworICAgICAgICBzdGF0ZS5hZGRI
aW50c0ZvckF1dG9jYXBpdGFsaXplVHlwZShpbnB1dEVsZW1lbnQuYXV0b2NhcGl0YWxpemVUeXBl
KCkpOworICAgIH0gZWxzZSBpZiAoaXM8SFRNTFRleHRBcmVhRWxlbWVudD4oKmVsZW1lbnQpIHx8
IChlbGVtZW50LT5oYXNFZGl0YWJsZVN0eWxlKCkgJiYgaXM8SFRNTEVsZW1lbnQ+KCplbGVtZW50
KSkpIHsKKyAgICAgICAgYXV0byYgaHRtbEVsZW1lbnQgPSBkb3duY2FzdDxIVE1MRWxlbWVudD4o
KmVsZW1lbnQpOworICAgICAgICBzdGF0ZS5zZXRQdXJwb3NlT3JIaW50Rm9ySW5wdXRNb2RlKGh0
bWxFbGVtZW50LmNhbm9uaWNhbElucHV0TW9kZSgpKTsKKyAgICAgICAgc3RhdGUuYWRkSGludHNG
b3JBdXRvY2FwaXRhbGl6ZVR5cGUoaHRtbEVsZW1lbnQuYXV0b2NhcGl0YWxpemVUeXBlKCkpOwor
ICAgIH0KKworICAgIGlmIChlbGVtZW50LT5pc1NwZWxsQ2hlY2tpbmdFbmFibGVkKCkpCisgICAg
ICAgIHN0YXRlLmhpbnRzLmFkZChJbnB1dE1ldGhvZFN0YXRlOjpIaW50OjpTcGVsbGNoZWNrKTsK
KworICAgIHJldHVybiBzdGF0ZTsKK30KKwordm9pZCBXZWJQYWdlOjpzZXRJbnB1dE1ldGhvZFN0
YXRlKEVsZW1lbnQqIGVsZW1lbnQpCit7CisgICAgYXV0byBzdGF0ZSA9IGlucHV0TWV0aG9kU2F0
ZUZvckVsZW1lbnQoZWxlbWVudCk7CisgICAgaWYgKG1faW5wdXRNZXRob2RTdGF0ZSA9PSBzdGF0
ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9pbnB1dE1ldGhvZEVuYWJsZWQgPSBlbmFibGVk
OwotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2V0SW5wdXRNZXRob2RTdGF0ZShl
bmFibGVkKSk7CisgICAgbV9pbnB1dE1ldGhvZFN0YXRlID0gc3RhdGU7CisgICAgc2VuZChNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpTZXRJbnB1dE1ldGhvZFN0YXRlKHN0YXRlKSk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IGI4Mjk0
NGMxMmY3Li5hMzRkYjgxYmFjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE1IEBACisyMDE5LTEyLTI3ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdh
bGlhLmNvbT4KKworICAgICAgICBbR1RLXVtXUEVdIEFkZCBBUEkgdG8gc2V0IHB1cnBvc2UgYW5k
IGhpbnRzIG9mIGFjdGl2ZSBlZGl0YWJsZSBlbGVtZW50IHRvIGlucHV0IG1ldGhvZHMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTYwNQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRE9NL0RPTUhUTUxF
bGVtZW50Lm1tOiBVc2UgRU5BQkxFKEFVVE9DT1JSRUNUKSBhbmQgRU5BQkxFKEFVVE9DQVBJVEFM
SVpFKS4KKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaDogVXBkYXRl
IHRvbSB0aGUgbmV3IEFQSSB0byBXZWJFZGl0b3JDbGllbnQ6OnNldElucHV0TWV0aG9kU3RhdGUu
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tOgorICAgICAgICAo
V2ViRWRpdG9yQ2xpZW50OjpzZXRJbnB1dE1ldGhvZFN0YXRlKTogRGl0dG8uCisKIDIwMTktMTIt
MjAgIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3Rv
cjogY29udmVydCBzb21lIEluc3BlY3RvckZyb250ZW5kSG9zdCBtZXRob2RzIHRvIGdldHRlcnMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MRWxlbWVudC5t
bSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MRWxlbWVudC5tbQppbmRleCBk
MDMwODJmNTc0NC4uNzdlZWYwNTAwMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET01IVE1MRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9E
T00vRE9NSFRNTEVsZW1lbnQubW0KQEAgLTI1Niw3ICsyNTYsNyBAQAogICAgIElNUEwtPmNsaWNr
KCk7CiB9CiAKLSNpZiBFTkFCTEUoSU9TX0FVVE9DT1JSRUNUX0FORF9BVVRPQ0FQSVRBTElaRSkK
KyNpZiBFTkFCTEUoQVVUT0NPUlJFQ1QpCiAKIC0gKEJPT0wpYXV0b2NvcnJlY3QKIHsKQEAgLTI3
MCw2ICsyNzAsMTAgQEAKICAgICBJTVBMLT5zZXRBdXRvY29ycmVjdChuZXdBdXRvY29ycmVjdCk7
CiB9CiAKKyNlbmRpZgorCisjaWYgRU5BQkxFKEFVVE9DQVBJVEFMSVpFKQorCiAtIChOU1N0cmlu
ZyAqKWF1dG9jYXBpdGFsaXplCiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRl
IHN0YXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJFZGl0b3JDbGllbnQuaAppbmRleCAxMzhmZmI4NjFkNS4uYzY1OGIxOTJjNjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkVkaXRvckNsaWVudC5oCkBAIC0xNjYsNyArMTY2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGdl
dEd1ZXNzZXNGb3JXb3JkKGNvbnN0IFN0cmluZyYgd29yZCwgY29uc3QgU3RyaW5nJiBjb250ZXh0
LCBjb25zdCBXZWJDb3JlOjpWaXNpYmxlU2VsZWN0aW9uJiBjdXJyZW50U2VsZWN0aW9uLCBWZWN0
b3I8U3RyaW5nPiYgZ3Vlc3NlcykgZmluYWw7CiAKICAgICB2b2lkIHdpbGxTZXRJbnB1dE1ldGhv
ZFN0YXRlKCkgZmluYWw7Ci0gICAgdm9pZCBzZXRJbnB1dE1ldGhvZFN0YXRlKGJvb2wgZW5hYmxl
ZCkgZmluYWw7CisgICAgdm9pZCBzZXRJbnB1dE1ldGhvZFN0YXRlKFdlYkNvcmU6OkVsZW1lbnQq
KSBmaW5hbDsKICAgICB2b2lkIHJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFdlYkNvcmU6OlRleHRD
aGVja2luZ1JlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpWaXNpYmxlU2VsZWN0aW9uJiBjdXJyZW50
U2VsZWN0aW9uKSBmaW5hbDsKIAogI2lmIFBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbSBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQpp
bmRleCAxM2M4ZGVmNWUxYS4uMzNiNjg5ZDdiMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0KQEAgLTEw
OTgsNyArMTA5OCw3IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50Ojp3aWxsU2V0SW5wdXRNZXRob2RT
dGF0ZSgpCiB7CiB9CiAKLXZvaWQgV2ViRWRpdG9yQ2xpZW50OjpzZXRJbnB1dE1ldGhvZFN0YXRl
KGJvb2wpCit2b2lkIFdlYkVkaXRvckNsaWVudDo6c2V0SW5wdXRNZXRob2RTdGF0ZShXZWJDb3Jl
OjpFbGVtZW50KikKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4IDQyYjc1
NzZjMWE2Li45NDQ3ZjUzN2UxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE2IEBACisyMDE5LTEyLTI3ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdh
bGlhLmNvbT4KKworICAgICAgICBbR1RLXVtXUEVdIEFkZCBBUEkgdG8gc2V0IHB1cnBvc2UgYW5k
IGhpbnRzIG9mIGFjdGl2ZSBlZGl0YWJsZSBlbGVtZW50IHRvIGlucHV0IG1ldGhvZHMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTYwNQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSB0byB0aGUg
bmV3IEFQSSBvZiBXZWJFZGl0b3JDbGllbnQ6OnNldElucHV0TWV0aG9kU3RhdGUuCisKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViRWRp
dG9yQ2xpZW50OjpzZXRJbnB1dE1ldGhvZFN0YXRlKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9XZWJFZGl0b3JDbGllbnQuaDoKKwogMjAxOS0xMi0yMSAgQnJpYW4gQnVyZyAgPGJidXJnQGFw
cGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBhZGQgSW5zcGVjdGVkVGFyZ2V0VHlw
ZXMgZGlhZ25vc3RpYyBldmVudCBhbmQgcmVsYXRlZCBob29rcwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcCBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAK
aW5kZXggOGY5YTI5ZDc3OWIuLjhkZjFjNzIxYmI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKQEAg
LTg4Nyw3ICs4ODcsNyBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6d2lsbFNldElucHV0TWV0aG9k
U3RhdGUoKQogewogfQogCi12b2lkIFdlYkVkaXRvckNsaWVudDo6c2V0SW5wdXRNZXRob2RTdGF0
ZShib29sIGVuYWJsZWQpCit2b2lkIFdlYkVkaXRvckNsaWVudDo6c2V0SW5wdXRNZXRob2RTdGF0
ZShXZWJDb3JlOjpFbGVtZW50KiBlbGVtZW50KQogewotICAgIG1fd2ViVmlldy0+c2V0SW5wdXRN
ZXRob2RTdGF0ZShlbmFibGVkKTsKKyAgICBtX3dlYlZpZXctPnNldElucHV0TWV0aG9kU3RhdGUo
ZWxlbWVudCAmJiBlbGVtZW50LT5zaG91bGRVc2VJbnB1dE1ldGhvZCgpKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVu
dC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50LmgKaW5kZXggNTdlY2Y3NzJkNTEuLjc3ZjY0MzZlN2I1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaApA
QCAtMTEzLDcgKzExMyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBnZXRHdWVzc2VzRm9yV29yZChj
b25zdCBXVEY6OlN0cmluZyYgd29yZCwgY29uc3QgV1RGOjpTdHJpbmcmIGNvbnRleHQsIGNvbnN0
IFdlYkNvcmU6OlZpc2libGVTZWxlY3Rpb24mIGN1cnJlbnRTZWxlY3Rpb24sIFdURjo6VmVjdG9y
PFdURjo6U3RyaW5nPiYgZ3Vlc3NlcykgZmluYWw7CiAKICAgICB2b2lkIHdpbGxTZXRJbnB1dE1l
dGhvZFN0YXRlKCkgZmluYWw7Ci0gICAgdm9pZCBzZXRJbnB1dE1ldGhvZFN0YXRlKGJvb2wpIGZp
bmFsOworICAgIHZvaWQgc2V0SW5wdXRNZXRob2RTdGF0ZShXZWJDb3JlOjpFbGVtZW50KikgZmlu
YWw7CiAgICAgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhXZWJDb3JlOjpUZXh0Q2hlY2tp
bmdSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6VmlzaWJsZVNlbGVjdGlvbiYpIGZpbmFsIHsgfQog
ICAgIGJvb2wgcGVyZm9ybVR3b1N0ZXBEcm9wKFdlYkNvcmU6OkRvY3VtZW50RnJhZ21lbnQmLCBX
ZWJDb3JlOjpSYW5nZSYsIGJvb2wpIGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlIGIvU291cmNlL2NtYWtlL09wdGlvbnNH
VEsuY21ha2UKaW5kZXggYTkxZmMyZDA1MDcuLjhmY2FlYjVhM2EzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5j
bWFrZQpAQCAtMTUwLDYgKzE1MCw3IEBAIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVF
KEVOQUJMRV9XRUJEUklWRVIgUFVCTElDIE9OKQogIyBQcml2YXRlIG9wdGlvbnMgc2hhcmVkIHdp
dGggb3RoZXIgV2ViS2l0IHBvcnRzLiBBZGQgb3B0aW9ucyBoZXJlIHdoZW4KICMgd2UgbmVlZCBh
IHZhbHVlIGRpZmZlcmVudCBmcm9tIHRoZSBkZWZhdWx0IGRlZmluZWQgaW4gV2ViS2l0RmVhdHVy
ZXMuY21ha2UuCiAjIENoYW5naW5nIHRoZXNlIG9wdGlvbnMgaXMgY29tcGxldGVseSB1bnN1cHBv
cnRlZC4KK1dFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9BVVRPQ0FQSVRB
TElaRSBQUklWQVRFIE9OKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxF
X0NPTlRFTlRfRVhURU5TSU9OUyBQUklWQVRFIE9OKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BP
UlRfVkFMVUUoRU5BQkxFX0RBUktfTU9ERV9DU1MgUFJJVkFURSBPTikKIFdFQktJVF9PUFRJT05f
REVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9EQVRBTElTVF9FTEVNRU5UIFBSSVZBVEUgT04pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvT3B0aW9uc1dQRS5jbWFrZSBiL1NvdXJjZS9jbWFrZS9P
cHRpb25zV1BFLmNtYWtlCmluZGV4IGQzNDljMmMzN2MwLi44ZmFmODg4OGM3ZSAxMDA2NDQKLS0t
IGEvU291cmNlL2NtYWtlL09wdGlvbnNXUEUuY21ha2UKKysrIGIvU291cmNlL2NtYWtlL09wdGlv
bnNXUEUuY21ha2UKQEAgLTQ4LDYgKzQ4LDcgQEAgV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRf
VkFMVUUoRU5BQkxFX1hTTFQgUFVCTElDIE9OKQogIyB3ZSBuZWVkIGEgdmFsdWUgZGlmZmVyZW50
IGZyb20gdGhlIGRlZmF1bHQgZGVmaW5lZCBpbiBXZWJLaXRGZWF0dXJlcy5jbWFrZS4KICMgQ2hh
bmdpbmcgdGhlc2Ugb3B0aW9ucyBpcyBjb21wbGV0ZWx5IHVuc3VwcG9ydGVkLgogV0VCS0lUX09Q
VElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0FTWU5DX1NDUk9MTElORyBQUklWQVRFIE9O
KQorV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0FVVE9DQVBJVEFMSVpF
IFBSSVZBVEUgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfQ09O
VEVOVF9FWFRFTlNJT05TIFBSSVZBVEUgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9W
QUxVRShFTkFCTEVfTUVESUFfU1RSRUFNIFBSSVZBVEUgJHtFTkFCTEVfRVhQRVJJTUVOVEFMX0ZF
QVRVUkVTfSkKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9NSFRNTCBQ
UklWQVRFIE9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL1dlYktpdEZlYXR1cmVzLmNtYWtl
IGIvU291cmNlL2NtYWtlL1dlYktpdEZlYXR1cmVzLmNtYWtlCmluZGV4IDMxY2I1ODJmNDAzLi44
YjJlMjUzODhkZSAxMDA2NDQKLS0tIGEvU291cmNlL2NtYWtlL1dlYktpdEZlYXR1cmVzLmNtYWtl
CisrKyBiL1NvdXJjZS9jbWFrZS9XZWJLaXRGZWF0dXJlcy5jbWFrZQpAQCAtOTksNiArOTksNyBA
QCBtYWNybyhXRUJLSVRfT1BUSU9OX0JFR0lOKQogICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVO
QUJMRV9BUFBMSUNBVElPTl9NQU5JRkVTVCAiVG9nZ2xlIEFwcGxpY2F0aW9uIE1hbmlmZXN0IHN1
cHBvcnQiIFBSSVZBVEUgT0ZGKQogICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9BU1lO
Q19TQ1JPTExJTkcgIkVuYWJsZSBhc3luY2hyb25vdXMgc2Nyb2xsaW5nIiBQUklWQVRFIE9GRikK
ICAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfQVRUQUNITUVOVF9FTEVNRU5UICJUb2dn
bGUgQXR0YWNobWVudCBFbGVtZW50IHN1cHBvcnQiIFBSSVZBVEUgT0ZGKQorICAgIFdFQktJVF9P
UFRJT05fREVGSU5FKEVOQUJMRV9BVVRPQ0FQSVRBTElaRSAiVG9nZ2xlIGF1dG9jYXBpdGFsaXpl
IHN1cHBvcnQiIFBSSVZBVEUgT0ZGKQogICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9B
VkZfQ0FQVElPTlMgIlRvZ2dsZSBBVkZvdW5kYXRpb24gY2FwdGlvbiBzdXBwb3J0IiBQUklWQVRF
IE9GRikKICAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfQlVCQkxFV1JBUF9TQU5EQk9Y
ICJUb2dnbGUgQnViYmxld3JhcCBzYW5kYm94aW5nIHN1cHBvcnQiIFBSSVZBVEUgT0ZGKQogICAg
IFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9DQUNIRV9QQVJUSVRJT05JTkcgIlRvZ2dsZSBj
YWNoZSBwYXJ0aXRpb25pbmcgc3VwcG9ydCIgUFJJVkFURSBPRkYpCmRpZmYgLS1naXQgYS9Ub29s
cy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMjg4ZDRiMDViYWQuLjBmODA3ZGQ0
NGNiIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTYgQEAKKzIwMTktMTItMjcgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNp
YUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdW1dQRV0gQWRkIEFQSSB0byBzZXQgcHVycG9z
ZSBhbmQgaGludHMgb2YgYWN0aXZlIGVkaXRhYmxlIGVsZW1lbnQgdG8gaW5wdXQgbWV0aG9kcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1NjA1CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIG5ldyB0
ZXN0IGNhc2UgdG8gY2hlY2sgdGhlIHB1cnBvc2UgYW5kIGhpbnRzIEFQSS4KKworICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0SW5wdXRNZXRob2RDb250ZXh0LmNw
cDoKKyAgICAgICAgKHRlc3RXZWJLaXRJbnB1dE1ldGhvZENvbnRleHRDb250ZW50VHlwZSk6Cisg
ICAgICAgIChiZWZvcmVBbGwpOgorCiAyMDE5LTEyLTI1ICBEZWFuIEphY2tzb24gIDxkaW5vQGFw
cGxlLmNvbT4KIAogICAgICAgICBXS1RSL0RSVCBhbHdheXMgdHJpZ2dlciB0aGUgRGlzY3JldGUg
R1BVIG9uIGR1YWwgR1BVIHN5c3RlbXMKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0R0xpYi9UZXN0SW5wdXRNZXRob2RDb250ZXh0LmNwcCBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0SW5wdXRNZXRob2RDb250ZXh0LmNwcAppbmRl
eCA1OTYxZmFjMjM3YS4uNTA4NjY3MTJjNjggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0SW5wdXRNZXRob2RDb250ZXh0LmNwcAorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdElucHV0TWV0aG9kQ29udGV4dC5j
cHAKQEAgLTMzOCw2ICszMzgsMjYgQEAgcHVibGljOgogICAgICAgICBnX2Fzc2VydF90cnVlKG1f
Y29udGV4dC0+ZW5hYmxlZCk7CiAgICAgfQogCisgICAgdm9pZCB1bmZvY3VzRWRpdGFibGVBbmRX
YWl0VW50aWxJbnB1dE1ldGhvZERpc2FibGVkKCkKKyAgICB7CisgICAgICAgIGdfYXNzZXJ0X3Ry
dWUobV9jb250ZXh0LT5lbmFibGVkKTsKKyAgICAgICAgcnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRp
bEZpbmlzaGVkKCJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZWRpdGFibGUnKS5ibHVyKCkiLCBu
dWxscHRyKTsKKyAgICAgICAgaWYgKCFtX2NvbnRleHQtPmVuYWJsZWQpCisgICAgICAgICAgICBy
ZXR1cm47CisKKyAgICAgICAgZ19pZGxlX2FkZChbXShncG9pbnRlciB1c2VyRGF0YSkgLT4gZ2Jv
b2xlYW4geworICAgICAgICAgICAgYXV0byogdGVzdCA9IHN0YXRpY19jYXN0PElucHV0TWV0aG9k
VGVzdCo+KHVzZXJEYXRhKTsKKyAgICAgICAgICAgIGlmICghdGVzdC0+bV9jb250ZXh0LT5lbmFi
bGVkKSB7CisgICAgICAgICAgICAgICAgdGVzdC0+cXVpdE1haW5Mb29wKCk7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIEZBTFNFOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4g
VFJVRTsKKyAgICAgICAgfSwgdGhpcyk7CisgICAgICAgIGdfbWFpbl9sb29wX3J1bihtX21haW5M
b29wKTsKKyAgICAgICAgZ19hc3NlcnRfZmFsc2UobV9jb250ZXh0LT5lbmFibGVkKTsKKyAgICB9
CisKICAgICB2b2lkIHJlc2V0RWRpdGFibGUoKQogICAgIHsKICAgICAgICAgcnVuSmF2YVNjcmlw
dEFuZFdhaXRVbnRpbEZpbmlzaGVkKCJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZWRpdGFibGUn
KS52YWx1ZSA9ICcnIiwgbnVsbHB0cik7CkBAIC0zNzMsNiArMzkzLDE2IEBAIHB1YmxpYzoKICAg
ICAgICAgbV9ldmVudHNFeHBlY3RlZCA9IDA7CiAgICAgfQogCisgICAgV2ViS2l0SW5wdXRQdXJw
b3NlIHB1cnBvc2UoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIHdlYmtpdF9pbnB1dF9t
ZXRob2RfY29udGV4dF9nZXRfaW5wdXRfcHVycG9zZShXRUJLSVRfSU5QVVRfTUVUSE9EX0NPTlRF
WFQobV9jb250ZXh0LmdldCgpKSk7CisgICAgfQorCisgICAgV2ViS2l0SW5wdXRIaW50cyBoaW50
cygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gd2Via2l0X2lucHV0X21ldGhvZF9jb250
ZXh0X2dldF9pbnB1dF9oaW50cyhXRUJLSVRfSU5QVVRfTUVUSE9EX0NPTlRFWFQobV9jb250ZXh0
LmdldCgpKSk7CisgICAgfQorCiAgICAgR1JlZlB0cjxXZWJLaXRJbnB1dE1ldGhvZENvbnRleHRN
b2NrPiBtX2NvbnRleHQ7CiAgICAgVmVjdG9yPEV2ZW50PiBtX2V2ZW50czsKICAgICB1bnNpZ25l
ZCBtX2V2ZW50c0V4cGVjdGVkIHsgMCB9OwpAQCAtNjkyLDYgKzcyMiwxNTkgQEAgc3RhdGljIHZv
aWQgdGVzdFdlYktpdElucHV0TWV0aG9kQ29udGV4dFJlc2V0KElucHV0TWV0aG9kVGVzdCogdGVz
dCwgZ2NvbnN0cG9pbnQKICAgICB0ZXN0LT5yZXNldEVkaXRhYmxlKCk7CiB9CiAKK3N0YXRpYyB2
b2lkIHRlc3RXZWJLaXRJbnB1dE1ldGhvZENvbnRleHRDb250ZW50VHlwZShJbnB1dE1ldGhvZFRl
c3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCit7CisgICAgdGVzdC0+bG9hZEh0bWwoIjxpbnB1dCBp
ZD0nZWRpdGFibGUnIHNwZWxsY2hlY2s9J2ZhbHNlJz48L2lucHV0PiIsIG51bGxwdHIpOworICAg
IHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOworICAgIHRlc3QtPmZvY3VzRWRpdGFibGVB
bmRXYWl0VW50aWxJbnB1dE1ldGhvZEVuYWJsZWQoKTsKKyAgICBnX2Fzc2VydF9jbXB1aW50KHRl
c3QtPnB1cnBvc2UoKSwgPT0sIFdFQktJVF9JTlBVVF9QVVJQT1NFX0ZSRUVfRk9STSk7CisgICAg
Z19hc3NlcnRfY21wdWludCh0ZXN0LT5oaW50cygpLCA9PSwgV0VCS0lUX0lOUFVUX0hJTlRfTk9O
RSk7CisgICAgdGVzdC0+dW5mb2N1c0VkaXRhYmxlQW5kV2FpdFVudGlsSW5wdXRNZXRob2REaXNh
YmxlZCgpOworCisgICAgdGVzdC0+bG9hZEh0bWwoIjxpbnB1dCBpZD0nZWRpdGFibGUnIHR5cGU9
J251bWJlcicgc3BlbGxjaGVjaz0nZmFsc2UnPiIsIG51bGxwdHIpOworICAgIHRlc3QtPndhaXRV
bnRpbExvYWRGaW5pc2hlZCgpOworICAgIHRlc3QtPmZvY3VzRWRpdGFibGVBbmRXYWl0VW50aWxJ
bnB1dE1ldGhvZEVuYWJsZWQoKTsKKyAgICBnX2Fzc2VydF9jbXB1aW50KHRlc3QtPnB1cnBvc2Uo
KSwgPT0sIFdFQktJVF9JTlBVVF9QVVJQT1NFX05VTUJFUik7CisgICAgZ19hc3NlcnRfY21wdWlu
dCh0ZXN0LT5oaW50cygpLCA9PSwgV0VCS0lUX0lOUFVUX0hJTlRfTk9ORSk7CisgICAgdGVzdC0+
dW5mb2N1c0VkaXRhYmxlQW5kV2FpdFVudGlsSW5wdXRNZXRob2REaXNhYmxlZCgpOworCisgICAg
dGVzdC0+bG9hZEh0bWwoIjxpbnB1dCBpZD0nZWRpdGFibGUnIHR5cGU9J251bWJlcicgc3BlbGxj
aGVjaz0nZmFsc2UnIHBhdHRlcm49J1swLTldKic+IiwgbnVsbHB0cik7CisgICAgdGVzdC0+d2Fp
dFVudGlsTG9hZEZpbmlzaGVkKCk7CisgICAgdGVzdC0+Zm9jdXNFZGl0YWJsZUFuZFdhaXRVbnRp
bElucHV0TWV0aG9kRW5hYmxlZCgpOworICAgIGdfYXNzZXJ0X2NtcHVpbnQodGVzdC0+cHVycG9z
ZSgpLCA9PSwgV0VCS0lUX0lOUFVUX1BVUlBPU0VfRElHSVRTKTsKKyAgICBnX2Fzc2VydF9jbXB1
aW50KHRlc3QtPmhpbnRzKCksID09LCBXRUJLSVRfSU5QVVRfSElOVF9OT05FKTsKKyAgICB0ZXN0
LT51bmZvY3VzRWRpdGFibGVBbmRXYWl0VW50aWxJbnB1dE1ldGhvZERpc2FibGVkKCk7CisKKyAg
ICB0ZXN0LT5sb2FkSHRtbCgiPGlucHV0IGlkPSdlZGl0YWJsZScgdHlwZT0ndGV4dCcgc3BlbGxj
aGVjaz0nZmFsc2UnIHBhdHRlcm49J1xcZConPiIsIG51bGxwdHIpOworICAgIHRlc3QtPndhaXRV
bnRpbExvYWRGaW5pc2hlZCgpOworICAgIHRlc3QtPmZvY3VzRWRpdGFibGVBbmRXYWl0VW50aWxJ
bnB1dE1ldGhvZEVuYWJsZWQoKTsKKyAgICBnX2Fzc2VydF9jbXB1aW50KHRlc3QtPnB1cnBvc2Uo
KSwgPT0sIFdFQktJVF9JTlBVVF9QVVJQT1NFX0RJR0lUUyk7CisgICAgZ19hc3NlcnRfY21wdWlu
dCh0ZXN0LT5oaW50cygpLCA9PSwgV0VCS0lUX0lOUFVUX0hJTlRfTk9ORSk7CisgICAgdGVzdC0+
dW5mb2N1c0VkaXRhYmxlQW5kV2FpdFVudGlsSW5wdXRNZXRob2REaXNhYmxlZCgpOworCisgICAg
dGVzdC0+bG9hZEh0bWwoIjxpbnB1dCBpZD0nZWRpdGFibGUnIHR5cGU9J3RlbCcgc3BlbGxjaGVj
az0nZmFsc2UnPiIsIG51bGxwdHIpOworICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgp
OworICAgIHRlc3QtPmZvY3VzRWRpdGFibGVBbmRXYWl0VW50aWxJbnB1dE1ldGhvZEVuYWJsZWQo
KTsKKyAgICBnX2Fzc2VydF9jbXB1aW50KHRlc3QtPnB1cnBvc2UoKSwgPT0sIFdFQktJVF9JTlBV
VF9QVVJQT1NFX1BIT05FKTsKKyAgICBnX2Fzc2VydF9jbXB1aW50KHRlc3QtPmhpbnRzKCksID09
LCBXRUJLSVRfSU5QVVRfSElOVF9OT05FKTsKKyAgICB0ZXN0LT51bmZvY3VzRWRpdGFibGVBbmRX
YWl0VW50aWxJbnB1dE1ldGhvZERpc2FibGVkKCk7CisKKyAgICB0ZXN0LT5sb2FkSHRtbCgiPGlu
cHV0IGlkPSdlZGl0YWJsZScgdHlwZT0ndXJsJyBzcGVsbGNoZWNrPSdmYWxzZSc+IiwgbnVsbHB0
cik7CisgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CisgICAgdGVzdC0+Zm9jdXNF
ZGl0YWJsZUFuZFdhaXRVbnRpbElucHV0TWV0aG9kRW5hYmxlZCgpOworICAgIGdfYXNzZXJ0X2Nt
cHVpbnQodGVzdC0+cHVycG9zZSgpLCA9PSwgV0VCS0lUX0lOUFVUX1BVUlBPU0VfVVJMKTsKKyAg
ICBnX2Fzc2VydF9jbXB1aW50KHRlc3QtPmhpbnRzKCksID09LCBXRUJLSVRfSU5QVVRfSElOVF9O
T05FKTsKKyAgICB0ZXN0LT51bmZvY3VzRWRpdGFibGVBbmRXYWl0VW50aWxJbnB1dE1ldGhvZERp
c2FibGVkKCk7CisKKyAgICB0ZXN0LT5sb2FkSHRtbCgiPGlucHV0IGlkPSdlZGl0YWJsZScgdHlw
ZT0nZW1haWwnIHNwZWxsY2hlY2s9J2ZhbHNlJz4iLCBudWxscHRyKTsKKyAgICB0ZXN0LT53YWl0
VW50aWxMb2FkRmluaXNoZWQoKTsKKyAgICB0ZXN0LT5mb2N1c0VkaXRhYmxlQW5kV2FpdFVudGls
SW5wdXRNZXRob2RFbmFibGVkKCk7CisgICAgZ19hc3NlcnRfY21wdWludCh0ZXN0LT5wdXJwb3Nl
KCksID09LCBXRUJLSVRfSU5QVVRfUFVSUE9TRV9FTUFJTCk7CisgICAgZ19hc3NlcnRfY21wdWlu
dCh0ZXN0LT5oaW50cygpLCA9PSwgV0VCS0lUX0lOUFVUX0hJTlRfTk9ORSk7CisgICAgdGVzdC0+
dW5mb2N1c0VkaXRhYmxlQW5kV2FpdFVudGlsSW5wdXRNZXRob2REaXNhYmxlZCgpOworCisjaWYg
MAorICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgZW5hYmxlIGlucHV0IG1ldGhvZHMgaW4gcGFzc3dv
cmQgZmllbGRzIHRvby4KKyAgICB0ZXN0LT5sb2FkSHRtbCgiPGlucHV0IGlkPSdlZGl0YWJsZScg
dHlwZT0ncGFzc3dvcmQnPiIsIG51bGxwdHIpOworICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5p
c2hlZCgpOworICAgIHRlc3QtPmZvY3VzRWRpdGFibGVBbmRXYWl0VW50aWxJbnB1dE1ldGhvZEVu
YWJsZWQoKTsKKyAgICBnX2Fzc2VydF9jbXB1aW50KHRlc3QtPnB1cnBvc2UoKSwgPT0sIFdFQktJ
VF9JTlBVVF9QVVJQT1NFX1BBU1NXT1JEKTsKKyAgICBnX2Fzc2VydF9jbXB1aW50KHRlc3QtPmhp
bnRzKCksID09LCBXRUJLSVRfSU5QVVRfSElOVF9OT05FKTsKKyAgICB0ZXN0LT51bmZvY3VzRWRp
dGFibGVBbmRXYWl0VW50aWxJbnB1dE1ldGhvZERpc2FibGVkKCk7CisjZW5kaWYKKworICAgIHRl
c3QtPmxvYWRIdG1sKCI8ZGl2IGNvbnRlbnRlZGl0YWJsZSBpZD0nZWRpdGFibGUnIGlucHV0bW9k
ZT0ndGV4dCcgc3BlbGxjaGVjaz0nZmFsc2UnPjwvZGl2PiIsIG51bGxwdHIpOworICAgIHRlc3Qt
PndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOworICAgIHRlc3QtPmZvY3VzRWRpdGFibGVBbmRXYWl0
VW50aWxJbnB1dE1ldGhvZEVuYWJsZWQoKTsKKyAgICBnX2Fzc2VydF9jbXB1aW50KHRlc3QtPnB1
cnBvc2UoKSwgPT0sIFdFQktJVF9JTlBVVF9QVVJQT1NFX0ZSRUVfRk9STSk7CisgICAgZ19hc3Nl
cnRfY21wdWludCh0ZXN0LT5oaW50cygpLCA9PSwgV0VCS0lUX0lOUFVUX0hJTlRfTk9ORSk7Cisg
ICAgdGVzdC0+dW5mb2N1c0VkaXRhYmxlQW5kV2FpdFVudGlsSW5wdXRNZXRob2REaXNhYmxlZCgp
OworCisgICAgdGVzdC0+bG9hZEh0bWwoIjxkaXYgY29udGVudGVkaXRhYmxlIGlkPSdlZGl0YWJs
ZScgaW5wdXRtb2RlPSdkZWNpbWFsJyBzcGVsbGNoZWNrPSdmYWxzZSc+PC9kaXY+IiwgbnVsbHB0
cik7CisgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CisgICAgdGVzdC0+Zm9jdXNF
ZGl0YWJsZUFuZFdhaXRVbnRpbElucHV0TWV0aG9kRW5hYmxlZCgpOworICAgIGdfYXNzZXJ0X2Nt
cHVpbnQodGVzdC0+cHVycG9zZSgpLCA9PSwgV0VCS0lUX0lOUFVUX1BVUlBPU0VfTlVNQkVSKTsK
KyAgICBnX2Fzc2VydF9jbXB1aW50KHRlc3QtPmhpbnRzKCksID09LCBXRUJLSVRfSU5QVVRfSElO
VF9OT05FKTsKKyAgICB0ZXN0LT51bmZvY3VzRWRpdGFibGVBbmRXYWl0VW50aWxJbnB1dE1ldGhv
ZERpc2FibGVkKCk7CisKKyAgICB0ZXN0LT5sb2FkSHRtbCgiPGRpdiBjb250ZW50ZWRpdGFibGUg
aWQ9J2VkaXRhYmxlJyBpbnB1dG1vZGU9J251bWVyaWMnIHNwZWxsY2hlY2s9J2ZhbHNlJz48L2Rp
dj4iLCBudWxscHRyKTsKKyAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKKyAgICB0
ZXN0LT5mb2N1c0VkaXRhYmxlQW5kV2FpdFVudGlsSW5wdXRNZXRob2RFbmFibGVkKCk7CisgICAg
Z19hc3NlcnRfY21wdWludCh0ZXN0LT5wdXJwb3NlKCksID09LCBXRUJLSVRfSU5QVVRfUFVSUE9T
RV9ESUdJVFMpOworICAgIGdfYXNzZXJ0X2NtcHVpbnQodGVzdC0+aGludHMoKSwgPT0sIFdFQktJ
VF9JTlBVVF9ISU5UX05PTkUpOworICAgIHRlc3QtPnVuZm9jdXNFZGl0YWJsZUFuZFdhaXRVbnRp
bElucHV0TWV0aG9kRGlzYWJsZWQoKTsKKworICAgIHRlc3QtPmxvYWRIdG1sKCI8ZGl2IGNvbnRl
bnRlZGl0YWJsZSBpZD0nZWRpdGFibGUnIGlucHV0bW9kZT0ndGVsJyBzcGVsbGNoZWNrPSdmYWxz
ZSc+PC9kaXY+IiwgbnVsbHB0cik7CisgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7
CisgICAgdGVzdC0+Zm9jdXNFZGl0YWJsZUFuZFdhaXRVbnRpbElucHV0TWV0aG9kRW5hYmxlZCgp
OworICAgIGdfYXNzZXJ0X2NtcHVpbnQodGVzdC0+cHVycG9zZSgpLCA9PSwgV0VCS0lUX0lOUFVU
X1BVUlBPU0VfUEhPTkUpOworICAgIGdfYXNzZXJ0X2NtcHVpbnQodGVzdC0+aGludHMoKSwgPT0s
IFdFQktJVF9JTlBVVF9ISU5UX05PTkUpOworICAgIHRlc3QtPnVuZm9jdXNFZGl0YWJsZUFuZFdh
aXRVbnRpbElucHV0TWV0aG9kRGlzYWJsZWQoKTsKKworICAgIHRlc3QtPmxvYWRIdG1sKCI8ZGl2
IGNvbnRlbnRlZGl0YWJsZSBpZD0nZWRpdGFibGUnIGlucHV0bW9kZT0nZW1haWwnIHNwZWxsY2hl
Y2s9J2ZhbHNlJz48L2Rpdj4iLCBudWxscHRyKTsKKyAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmlu
aXNoZWQoKTsKKyAgICB0ZXN0LT5mb2N1c0VkaXRhYmxlQW5kV2FpdFVudGlsSW5wdXRNZXRob2RF
bmFibGVkKCk7CisgICAgZ19hc3NlcnRfY21wdWludCh0ZXN0LT5wdXJwb3NlKCksID09LCBXRUJL
SVRfSU5QVVRfUFVSUE9TRV9FTUFJTCk7CisgICAgZ19hc3NlcnRfY21wdWludCh0ZXN0LT5oaW50
cygpLCA9PSwgV0VCS0lUX0lOUFVUX0hJTlRfTk9ORSk7CisgICAgdGVzdC0+dW5mb2N1c0VkaXRh
YmxlQW5kV2FpdFVudGlsSW5wdXRNZXRob2REaXNhYmxlZCgpOworCisgICAgdGVzdC0+bG9hZEh0
bWwoIjxkaXYgY29udGVudGVkaXRhYmxlIGlkPSdlZGl0YWJsZScgaW5wdXRtb2RlPSd1cmwnIHNw
ZWxsY2hlY2s9J2ZhbHNlJz48L2Rpdj4iLCBudWxscHRyKTsKKyAgICB0ZXN0LT53YWl0VW50aWxM
b2FkRmluaXNoZWQoKTsKKyAgICB0ZXN0LT5mb2N1c0VkaXRhYmxlQW5kV2FpdFVudGlsSW5wdXRN
ZXRob2RFbmFibGVkKCk7CisgICAgZ19hc3NlcnRfY21wdWludCh0ZXN0LT5wdXJwb3NlKCksID09
LCBXRUJLSVRfSU5QVVRfUFVSUE9TRV9VUkwpOworICAgIGdfYXNzZXJ0X2NtcHVpbnQodGVzdC0+
aGludHMoKSwgPT0sIFdFQktJVF9JTlBVVF9ISU5UX05PTkUpOworICAgIHRlc3QtPnVuZm9jdXNF
ZGl0YWJsZUFuZFdhaXRVbnRpbElucHV0TWV0aG9kRGlzYWJsZWQoKTsKKworICAgIHRlc3QtPmxv
YWRIdG1sKCI8ZGl2IGNvbnRlbnRlZGl0YWJsZSBpZD0nZWRpdGFibGUnIGlucHV0bW9kZT0nc2Vh
cmNoJyBzcGVsbGNoZWNrPSdmYWxzZSc+PC9kaXY+IiwgbnVsbHB0cik7CisgICAgdGVzdC0+d2Fp
dFVudGlsTG9hZEZpbmlzaGVkKCk7CisgICAgdGVzdC0+Zm9jdXNFZGl0YWJsZUFuZFdhaXRVbnRp
bElucHV0TWV0aG9kRW5hYmxlZCgpOworICAgIGdfYXNzZXJ0X2NtcHVpbnQodGVzdC0+cHVycG9z
ZSgpLCA9PSwgV0VCS0lUX0lOUFVUX1BVUlBPU0VfRlJFRV9GT1JNKTsKKyAgICBnX2Fzc2VydF9j
bXB1aW50KHRlc3QtPmhpbnRzKCksID09LCBXRUJLSVRfSU5QVVRfSElOVF9OT05FKTsKKyAgICB0
ZXN0LT51bmZvY3VzRWRpdGFibGVBbmRXYWl0VW50aWxJbnB1dE1ldGhvZERpc2FibGVkKCk7CisK
KyAgICB0ZXN0LT5sb2FkSHRtbCgiPGRpdiBjb250ZW50ZWRpdGFibGUgaWQ9J2VkaXRhYmxlJyBp
bnB1dG1vZGU9J25vbmUnIHNwZWxsY2hlY2s9J2ZhbHNlJz48L2Rpdj4iLCBudWxscHRyKTsKKyAg
ICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKKyAgICB0ZXN0LT5mb2N1c0VkaXRhYmxl
QW5kV2FpdFVudGlsSW5wdXRNZXRob2RFbmFibGVkKCk7CisgICAgZ19hc3NlcnRfY21wdWludCh0
ZXN0LT5wdXJwb3NlKCksID09LCBXRUJLSVRfSU5QVVRfUFVSUE9TRV9GUkVFX0ZPUk0pOworICAg
IGdfYXNzZXJ0X2NtcHVpbnQodGVzdC0+aGludHMoKSwgPT0sIFdFQktJVF9JTlBVVF9ISU5UX0lO
SElCSVRfT1NLKTsKKyAgICB0ZXN0LT51bmZvY3VzRWRpdGFibGVBbmRXYWl0VW50aWxJbnB1dE1l
dGhvZERpc2FibGVkKCk7CisKKyAgICB0ZXN0LT5sb2FkSHRtbCgiPHRleHRhcmVhIGlkPSdlZGl0
YWJsZSc+PC90ZXh0YXJlYT4iLCBudWxscHRyKTsKKyAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmlu
aXNoZWQoKTsKKyAgICB0ZXN0LT5mb2N1c0VkaXRhYmxlQW5kV2FpdFVudGlsSW5wdXRNZXRob2RF
bmFibGVkKCk7CisgICAgZ19hc3NlcnRfY21wdWludCh0ZXN0LT5wdXJwb3NlKCksID09LCBXRUJL
SVRfSU5QVVRfUFVSUE9TRV9GUkVFX0ZPUk0pOworICAgIGdfYXNzZXJ0X2NtcHVpbnQodGVzdC0+
aGludHMoKSwgPT0sIFdFQktJVF9JTlBVVF9ISU5UX1NQRUxMQ0hFQ0spOworICAgIHRlc3QtPnVu
Zm9jdXNFZGl0YWJsZUFuZFdhaXRVbnRpbElucHV0TWV0aG9kRGlzYWJsZWQoKTsKKworICAgIHRl
c3QtPmxvYWRIdG1sKCI8dGV4dGFyZWEgaWQ9J2VkaXRhYmxlJyBhdXRvY2FwaXRhbGl6ZT0nbm9u
ZSc+PC90ZXh0YXJlYT4iLCBudWxscHRyKTsKKyAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNo
ZWQoKTsKKyAgICB0ZXN0LT5mb2N1c0VkaXRhYmxlQW5kV2FpdFVudGlsSW5wdXRNZXRob2RFbmFi
bGVkKCk7CisgICAgZ19hc3NlcnRfY21wdWludCh0ZXN0LT5wdXJwb3NlKCksID09LCBXRUJLSVRf
SU5QVVRfUFVSUE9TRV9GUkVFX0ZPUk0pOworICAgIGdfYXNzZXJ0X2NtcHVpbnQodGVzdC0+aGlu
dHMoKSwgPT0sIFdFQktJVF9JTlBVVF9ISU5UX1NQRUxMQ0hFQ0sgfCBXRUJLSVRfSU5QVVRfSElO
VF9MT1dFUkNBU0UpOworICAgIHRlc3QtPnVuZm9jdXNFZGl0YWJsZUFuZFdhaXRVbnRpbElucHV0
TWV0aG9kRGlzYWJsZWQoKTsKKworICAgIHRlc3QtPmxvYWRIdG1sKCI8dGV4dGFyZWEgaWQ9J2Vk
aXRhYmxlJyBhdXRvY2FwaXRhbGl6ZT0nc2VudGVuY2VzJz48L3RleHRhcmVhPiIsIG51bGxwdHIp
OworICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOworICAgIHRlc3QtPmZvY3VzRWRp
dGFibGVBbmRXYWl0VW50aWxJbnB1dE1ldGhvZEVuYWJsZWQoKTsKKyAgICBnX2Fzc2VydF9jbXB1
aW50KHRlc3QtPnB1cnBvc2UoKSwgPT0sIFdFQktJVF9JTlBVVF9QVVJQT1NFX0ZSRUVfRk9STSk7
CisgICAgZ19hc3NlcnRfY21wdWludCh0ZXN0LT5oaW50cygpLCA9PSwgV0VCS0lUX0lOUFVUX0hJ
TlRfU1BFTExDSEVDSyB8IFdFQktJVF9JTlBVVF9ISU5UX1VQUEVSQ0FTRV9TRU5URU5DRVMpOwor
ICAgIHRlc3QtPnVuZm9jdXNFZGl0YWJsZUFuZFdhaXRVbnRpbElucHV0TWV0aG9kRGlzYWJsZWQo
KTsKKworICAgIHRlc3QtPmxvYWRIdG1sKCI8dGV4dGFyZWEgaWQ9J2VkaXRhYmxlJyBhdXRvY2Fw
aXRhbGl6ZT0nd29yZHMnPjwvdGV4dGFyZWE+IiwgbnVsbHB0cik7CisgICAgdGVzdC0+d2FpdFVu
dGlsTG9hZEZpbmlzaGVkKCk7CisgICAgdGVzdC0+Zm9jdXNFZGl0YWJsZUFuZFdhaXRVbnRpbElu
cHV0TWV0aG9kRW5hYmxlZCgpOworICAgIGdfYXNzZXJ0X2NtcHVpbnQodGVzdC0+cHVycG9zZSgp
LCA9PSwgV0VCS0lUX0lOUFVUX1BVUlBPU0VfRlJFRV9GT1JNKTsKKyAgICBnX2Fzc2VydF9jbXB1
aW50KHRlc3QtPmhpbnRzKCksID09LCBXRUJLSVRfSU5QVVRfSElOVF9TUEVMTENIRUNLIHwgV0VC
S0lUX0lOUFVUX0hJTlRfVVBQRVJDQVNFX1dPUkRTKTsKKyAgICB0ZXN0LT51bmZvY3VzRWRpdGFi
bGVBbmRXYWl0VW50aWxJbnB1dE1ldGhvZERpc2FibGVkKCk7CisKKyAgICB0ZXN0LT5sb2FkSHRt
bCgiPHRleHRhcmVhIGlkPSdlZGl0YWJsZScgYXV0b2NhcGl0YWxpemU9J2NoYXJhY3RlcnMnPjwv
dGV4dGFyZWE+IiwgbnVsbHB0cik7CisgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7
CisgICAgdGVzdC0+Zm9jdXNFZGl0YWJsZUFuZFdhaXRVbnRpbElucHV0TWV0aG9kRW5hYmxlZCgp
OworICAgIGdfYXNzZXJ0X2NtcHVpbnQodGVzdC0+cHVycG9zZSgpLCA9PSwgV0VCS0lUX0lOUFVU
X1BVUlBPU0VfRlJFRV9GT1JNKTsKKyAgICBnX2Fzc2VydF9jbXB1aW50KHRlc3QtPmhpbnRzKCks
ID09LCBXRUJLSVRfSU5QVVRfSElOVF9TUEVMTENIRUNLIHwgV0VCS0lUX0lOUFVUX0hJTlRfVVBQ
RVJDQVNFX0NIQVJTKTsKKyAgICB0ZXN0LT51bmZvY3VzRWRpdGFibGVBbmRXYWl0VW50aWxJbnB1
dE1ldGhvZERpc2FibGVkKCk7Cit9CisKIHZvaWQgYmVmb3JlQWxsKCkKIHsKICAgICBJbnB1dE1l
dGhvZFRlc3Q6OmFkZCgiV2ViS2l0SW5wdXRNZXRob2RDb250ZXh0IiwgInNpbXBsZSIsIHRlc3RX
ZWJLaXRJbnB1dE1ldGhvZENvbnRleHRTaW1wbGUpOwpAQCAtNjk5LDYgKzg4Miw3IEBAIHZvaWQg
YmVmb3JlQWxsKCkKICAgICBJbnB1dE1ldGhvZFRlc3Q6OmFkZCgiV2ViS2l0SW5wdXRNZXRob2RD
b250ZXh0IiwgImludmFsaWQtc2VxdWVuY2UiLCB0ZXN0V2ViS2l0SW5wdXRNZXRob2RDb250ZXh0
SW52YWxpZFNlcXVlbmNlKTsKICAgICBJbnB1dE1ldGhvZFRlc3Q6OmFkZCgiV2ViS2l0SW5wdXRN
ZXRob2RDb250ZXh0IiwgImNhbmNlbC1zZXF1ZW5jZSIsIHRlc3RXZWJLaXRJbnB1dE1ldGhvZENv
bnRleHRDYW5jZWxTZXF1ZW5jZSk7CiAgICAgSW5wdXRNZXRob2RUZXN0OjphZGQoIldlYktpdElu
cHV0TWV0aG9kQ29udGV4dCIsICJyZXNldCIsIHRlc3RXZWJLaXRJbnB1dE1ldGhvZENvbnRleHRS
ZXNldCk7CisgICAgSW5wdXRNZXRob2RUZXN0OjphZGQoIldlYktpdElucHV0TWV0aG9kQ29udGV4
dCIsICJjb250ZW50LXR5cGUiLCB0ZXN0V2ViS2l0SW5wdXRNZXRob2RDb250ZXh0Q29udGVudFR5
cGUpOwogfQogCiB2b2lkIGFmdGVyQWxsKCkK
</data>
<flag name="review"
          id="402247"
          type_id="1"
          status="+"
          setter="zan"
    />
          </attachment>
      

    </bug>

</bugzilla>