<?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>222093</bug_id>
          
          <creation_ts>2021-02-18 00:34:22 -0800</creation_ts>
          <short_desc>[SOUP] Add support for libsoup3</short_desc>
          <delta_ts>2021-02-22 03:07:51 -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>220508</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>annulen</cc>
    
    <cc>aperez</cc>
    
    <cc>benjamin</cc>
    
    <cc>berto</cc>
    
    <cc>bugs-noreply</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>pgriffis</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1730765</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2021-02-18 00:34:22 -0800</bug_when>
    <thetext>Add initial support for libsoup3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1730770</commentid>
    <comment_count>1</comment_count>
      <attachid>420803</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2021-02-18 00:39:54 -0800</bug_when>
    <thetext>Created attachment 420803
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1731578</commentid>
    <comment_count>2</comment_count>
      <attachid>420803</attachid>
    <who name="Patrick Griffis">pgriffis</who>
    <bug_when>2021-02-19 14:01:51 -0800</bug_when>
    <thetext>Comment on attachment 420803
Patch

Everything looks good here, pretty straightforward.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732078</commentid>
    <comment_count>3</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2021-02-22 03:07:51 -0800</bug_when>
    <thetext>Committed r273236 (234422@main): &lt;https://commits.webkit.org/234422@main&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420803</attachid>
            <date>2021-02-18 00:39:54 -0800</date>
            <delta_ts>2021-02-22 02:54:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>wk-soup3.diff</filename>
            <type>text/plain</type>
            <size>169748</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCBmZmIzMmRiNzhkMGQuLjE4
MTc1NDFiYzk3MiAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE0IEBACisyMDIxLTAyLTE4ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdh
bGlhLmNvbT4KKworICAgICAgICBbU09VUF0gQWRkIHN1cHBvcnQgZm9yIGxpYnNvdXAzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjIwOTMKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNvdXJjZS9jbWFr
ZS9GaW5kTGliU291cC5jbWFrZToKKyAgICAgICAgKiBTb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5j
bWFrZToKKyAgICAgICAgKiBTb3VyY2UvY21ha2UvT3B0aW9uc1dQRS5jbWFrZToKKwogMjAyMS0w
Mi0xNiAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBM
b2NhbCBtYWNDYXRhbHlzdCBidWlsZHMgc2hvdWxkIG5vdCBidWlsZCBXZWJJbnNwZWN0b3JVSQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpp
bmRleCBlMTgyMTdhMzQ2NzEuLmU3M2JkYzUzNWQ1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAy
MS0wMi0xOCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAg
ICAgICAgW1NPVVBdIEFkZCBzdXBwb3J0IGZvciBsaWJzb3VwMworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyMDkzCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvUGxhdGZvcm0uaDoKKyAgICAgICAg
KiB3dGYvVVJMLmg6CisgICAgICAgICogd3RmL2dsaWIvR1JlZlB0ci5jcHA6CisgICAgICAgIChX
VEY6OnJlZkdQdHIpOgorICAgICAgICAoV1RGOjpkZXJlZkdQdHIpOgorICAgICAgICAqIHd0Zi9n
bGliL0dSZWZQdHIuaDoKKyAgICAgICAgKiB3dGYvZ2xpYi9VUkxHTGliLmNwcDoKKyAgICAgICAg
KFdURjo6VVJMOjpVUkwpOgorICAgICAgICAoV1RGOjpVUkw6OmNyZWF0ZUdVcmkgY29uc3QpOgor
CiAyMDIxLTAyLTE2ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KIAogICAgICAgICBB
ZGQgQ1NTIHByb3BlcnR5IHRvIGVuYWJsZSBzZXBhcmF0ZWQgYml0IG9uIEdyYXBoaWNzTGF5ZXIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmggYi9Tb3VyY2UvV1RGL3d0Zi9Q
bGF0Zm9ybS5oCmluZGV4IDAyMTllZDkzOGM4OS4uNDFhZGQwYzUzNDhiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgK
QEAgLTk2LDcgKzk2LDExIEBACiAjZW5kaWYKIAogI2lmIFVTRShTT1VQKQorI2lmIFVTRShTT1VQ
MikKICNkZWZpbmUgU09VUF9WRVJTSU9OX01JTl9SRVFVSVJFRCBTT1VQX1ZFUlNJT05fMl81NAor
I2Vsc2UKKyNkZWZpbmUgU09VUF9WRVJTSU9OX01JTl9SRVFVSVJFRCBTT1VQX1ZFUlNJT05fMl85
MAorI2VuZGlmCiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvVVJMLmggYi9Tb3VyY2UvV1RGL3d0Zi9VUkwuaAppbmRleCBlMDVlYjQ1ZDI3
ZmQuLjFhYjE4ODY0ZTdlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVVJMLmgKKysrIGIv
U291cmNlL1dURi93dGYvVVJMLmgKQEAgLTI5LDYgKzI5LDEwIEBACiAjaW5jbHVkZSA8d3RmL1Jl
dGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCisjaWYgVVNFKEdM
SUIpICYmIEhBVkUoR1VSSSkKKyNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CisjZW5kaWYK
KwogI2lmIFVTRShDRikKIHR5cGVkZWYgY29uc3Qgc3RydWN0IF9fQ0ZVUkwqIENGVVJMUmVmOwog
I2VuZGlmCkBAIC0xODEsNiArMTg1LDExIEBAIHB1YmxpYzoKICAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgb3BlcmF0b3IgTlNVUkwgKigpIGNvbnN0OwogI2VuZGlmCiAKKyNpZiBVU0UoR0xJQikgJiYg
SEFWRShHVVJJKQorICAgIFVSTChHVXJpKik7CisgICAgR1JlZlB0cjxHVXJpPiBjcmVhdGVHVXJp
KCkgY29uc3Q7CisjZW5kaWYKKwogI2lmbmRlZiBOREVCVUcKICAgICB2b2lkIHByaW50KCkgY29u
c3Q7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2dsaWIvR1JlZlB0ci5jcHAg
Yi9Tb3VyY2UvV1RGL3d0Zi9nbGliL0dSZWZQdHIuY3BwCmluZGV4IDJmYTlkYmMyN2EyOS4uYTBl
NTJkZjVmNzVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9nbGliL0dSZWZQdHIuY3BwCisr
KyBiL1NvdXJjZS9XVEYvd3RmL2dsaWIvR1JlZlB0ci5jcHAKQEAgLTE5NSw2ICsxOTUsMjEgQEAg
dGVtcGxhdGUgPD4gdm9pZCBkZXJlZkdQdHIoR0RhdGVUaW1lKiBwdHIpCiAgICAgICAgIGdfZGF0
ZV90aW1lX3VucmVmKHB0cik7CiB9CiAKKyNpZiBIQVZFKEdVUkkpCit0ZW1wbGF0ZSA8PiBHVXJp
KiByZWZHUHRyKEdVcmkqIHB0cikKK3sKKyAgICBpZiAocHRyKQorICAgICAgICBnX3VyaV9yZWYo
cHRyKTsKKyAgICByZXR1cm4gcHRyOworfQorCit0ZW1wbGF0ZSA8PiB2b2lkIGRlcmVmR1B0cihH
VXJpKiBwdHIpCit7CisgICAgaWYgKHB0cikKKyAgICAgICAgZ191cmlfdW5yZWYocHRyKTsKK30K
KyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAogI2VuZGlmIC8vIFVTRShHTElCKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvZ2xpYi9HUmVmUHRyLmggYi9Tb3VyY2UvV1RGL3d0Zi9n
bGliL0dSZWZQdHIuaAppbmRleCBkMTY0MmI3NDk0YzQuLmZkMmY2MDVhYzQxNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvZ2xpYi9HUmVmUHRyLmgKKysrIGIvU291cmNlL1dURi93dGYvZ2xp
Yi9HUmVmUHRyLmgKQEAgLTIwLDggKzIwLDcgQEAKICAqCiAgKi8KIAotI2lmbmRlZiBXVEZfR1Jl
ZlB0cl9oCi0jZGVmaW5lIFdURl9HUmVmUHRyX2gKKyNwcmFnbWEgb25jZQogCiAjaWYgVVNFKEdM
SUIpCiAKQEAgLTI0NCw2ICsyNDMsMTEgQEAgdGVtcGxhdGUgPD4gV1RGX0VYUE9SVF9QUklWQVRF
IHZvaWQgZGVyZWZHUHRyKEdNYXBwZWRGaWxlKik7CiB0ZW1wbGF0ZSA8PiBXVEZfRVhQT1JUX1BS
SVZBVEUgR0RhdGVUaW1lKiByZWZHUHRyKEdEYXRlVGltZSogcHRyKTsKIHRlbXBsYXRlIDw+IFdU
Rl9FWFBPUlRfUFJJVkFURSB2b2lkIGRlcmVmR1B0cihHRGF0ZVRpbWUqIHB0cik7CiAKKyNpZiBI
QVZFKEdVUkkpCit0ZW1wbGF0ZSA8PiBXVEZfRVhQT1JUX1BSSVZBVEUgR1VyaSogcmVmR1B0cihH
VXJpKik7Cit0ZW1wbGF0ZSA8PiBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBkZXJlZkdQdHIoR1Vy
aSopOworI2VuZGlmCisKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUgVCogcmVmR1B0cihU
KiBwdHIpCiB7CiAgICAgaWYgKHB0cikKQEAgLTI4MSw1ICsyODUsMyBAQCB1c2luZyBXVEY6OkdS
ZWZQdHI7CiB1c2luZyBXVEY6OmFkb3B0R1JlZjsKIAogI2VuZGlmIC8vIFVTRShHTElCKQotCi0j
ZW5kaWYgLy8gV1RGX0dSZWZQdHJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvZ2xpYi9V
UkxHTGliLmNwcCBiL1NvdXJjZS9XVEYvd3RmL2dsaWIvVVJMR0xpYi5jcHAKaW5kZXggZjhhYWFi
ODhjNmEwLi5mNjdmZTc4MGYzMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2dsaWIvVVJM
R0xpYi5jcHAKKysrIGIvU291cmNlL1dURi93dGYvZ2xpYi9VUkxHTGliLmNwcApAQCAtMjksMTAg
KzI5LDM2IEBACiAjaWYgVVNFKEdMSUIpCiAKICNpbmNsdWRlIDxnbGliLmg+CisjaW5jbHVkZSA8
d3RmL1VSTFBhcnNlci5oPgorI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXVEYgewogCisjaWYgSEFWRShH
VVJJKQorVVJMOjpVUkwoR1VyaSogdXJpKQoreworICAgIGlmICghdXJpKSB7CisgICAgICAgIGlu
dmFsaWRhdGUoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEdVbmlxdWVQdHI8Y2hh
cj4gdXJpU3RyaW5nKGdfdXJpX3RvX3N0cmluZyh1cmkpKTsKKyAgICBVUkxQYXJzZXIgcGFyc2Vy
KFN0cmluZzo6ZnJvbVVURjgodXJpU3RyaW5nLmdldCgpKSk7CisgICAgKnRoaXMgPSBwYXJzZXIu
cmVzdWx0KCk7Cit9CisKK0dSZWZQdHI8R1VyaT4gVVJMOjpjcmVhdGVHVXJpKCkgY29uc3QKK3sK
KyAgICBpZiAoaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJu
IGFkb3B0R1JlZihnX3VyaV9wYXJzZShtX3N0cmluZy51dGY4KCkuZGF0YSgpLAorICAgICAgICBz
dGF0aWNfY2FzdDxHVXJpRmxhZ3M+KEdfVVJJX0ZMQUdTX0hBU19QQVNTV09SRCB8IEdfVVJJX0ZM
QUdTX0VOQ09ERURfUEFUSCB8IEdfVVJJX0ZMQUdTX0VOQ09ERURfUVVFUlkgfCBHX1VSSV9GTEFH
U19FTkNPREVEX0ZSQUdNRU5UIHwgR19VUklfRkxBR1NfU0NIRU1FX05PUk1BTElaRSB8IEdfVVJJ
X0ZMQUdTX1BBUlNFX1JFTEFYRUQpLAorICAgICAgICBudWxscHRyKSk7Cit9CisjZW5kaWYKKwog
Ym9vbCBVUkw6Omhvc3RJc0lQQWRkcmVzcyhTdHJpbmdWaWV3IGhvc3QpCiB7CiAgICAgcmV0dXJu
ICFob3N0LmlzRW1wdHkoKSAmJiBnX2hvc3RuYW1lX2lzX2lwX2FkZHJlc3MoaG9zdC51dGY4KCku
ZGF0YSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwppbmRleCBhYWYxYWVmZjBlYTUuLmQxODQ5NTQxODE5YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDcwIEBACisyMDIxLTAyLTE4ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAg
PGNnYXJjaWFAaWdhbGlhLmNvbT4KKworICAgICAgICBbU09VUF0gQWRkIHN1cHBvcnQgZm9yIGxp
YnNvdXAzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MjIwOTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IHBsYXRmb3JtL1NvdXAuY21ha2U6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL0F1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3Vw
L0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU291cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OnBsYXRmb3JtQ29tcGFyZSk6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL0Nvb2tpZVNvdXAuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q29va2llOjpDb29raWUpOgorICAgICAgICAoV2ViQ29yZTo6Q29va2llOjp0b1NvdXBD
b29raWUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9HVW5pcXVlUHRy
U291cC5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNl
c3Npb25Tb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNjaGVtZUZyb21Qcm90ZWN0aW9uU3Bh
Y2VTZXJ2ZXJUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OmF1dGhUeXBlRnJvbVByb3RlY3Rpb25T
cGFjZUF1dGhlbnRpY2F0aW9uU2NoZW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6c2V0Q29va2llc0Zyb21ET00gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRDb29raWVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok5l
dHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVsZXRlQ29va2llIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0SG9zdG5hbWVzV2l0aENvb2tpZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpnZXRDb29raWVzKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6aGFzQ29va2llcyBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmdldFJhd0Nvb2tpZXMgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6Y29va2llc0ZvclNlc3Npb24pOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUVycm9yU291cC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZXNvdXJjZUVycm9yOjp0cmFuc3BvcnRFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yOjpodHRwRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VFcnJv
cjo6YXV0aGVudGljYXRpb25FcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUVycm9y
Ojp0bHNFcnJvcik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVx
dWVzdC5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3RT
b3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdDo6Y3JlYXRlU291cE1l
c3NhZ2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Ojp1cGRhdGVT
b3VwTWVzc2FnZUJvZHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
OjpjcmVhdGVTb3VwVVJJIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAv
UmVzb3VyY2VSZXNwb25zZVNvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZTo6UmVzb3VyY2VSZXNwb25zZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3Vw
L1NvdXBOZXR3b3JrU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTb3VwTmV0d29ya1Nl
c3Npb246OlNvdXBOZXR3b3JrU2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpTb3VwTmV0d29y
a1Nlc3Npb246OnNldHVwTG9nZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXBOZXR3b3JrU2Vz
c2lvbjo6Y2xlYXJIU1RTQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6U291cE5ldHdvcmtTZXNz
aW9uOjpzZXRQcm94eVNldHRpbmdzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAv
U291cFZlcnNpb25pbmcuaDogQWRkZWQuCisgICAgICAgIChzb3VwX21lc3NhZ2VfZ2V0X21ldGhv
ZCk6CisgICAgICAgIChzb3VwX3NlcnZlcl9tZXNzYWdlX2dldF9tZXRob2QpOgorICAgICAgICAo
c291cF9tZXNzYWdlX2dldF9zdGF0dXMpOgorICAgICAgICAoc291cF9zZXJ2ZXJfbWVzc2FnZV9z
ZXRfc3RhdHVzKToKKyAgICAgICAgKHNvdXBfbWVzc2FnZV9nZXRfcmVhc29uX3BocmFzZSk6Cisg
ICAgICAgIChzb3VwX21lc3NhZ2VfZ2V0X3JlcXVlc3RfaGVhZGVycyk6CisgICAgICAgIChzb3Vw
X3NlcnZlcl9tZXNzYWdlX2dldF9yZXF1ZXN0X2hlYWRlcnMpOgorICAgICAgICAoc291cF9tZXNz
YWdlX2dldF9yZXNwb25zZV9oZWFkZXJzKToKKyAgICAgICAgKHNvdXBfc2VydmVyX21lc3NhZ2Vf
Z2V0X3Jlc3BvbnNlX2hlYWRlcnMpOgorICAgICAgICAoc291cF9zZXJ2ZXJfbWVzc2FnZV9nZXRf
cmVzcG9uc2VfYm9keSk6CisgICAgICAgIChzb3VwX3NlcnZlcl9tZXNzYWdlX3NldF9yZXNwb25z
ZSk6CisgICAgICAgIChzb3VwX3NlcnZlcl9tZXNzYWdlX2dldF91cmkpOgorICAgICAgICAoc291
cF9tZXNzYWdlX2dldF90bHNfY2VydGlmaWNhdGUpOgorICAgICAgICAoc291cF9tZXNzYWdlX2dl
dF90bHNfY2VydGlmaWNhdGVfZXJyb3JzKToKKyAgICAgICAgKHNvdXBfc2Vzc2lvbl9zZW5kX2Fz
eW5jKToKKyAgICAgICAgKHNvdXBfc2Vzc2lvbl93ZWJzb2NrZXRfY29ubmVjdF9hc3luYyk6Cisg
ICAgICAgIChzb3VwX2F1dGhfY2FuY2VsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3Nv
dXAvVVJMU291cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzb3VwVVJJVG9VUkwpOgorICAgICAg
ICAoV2ViQ29yZTo6dXJsVG9Tb3VwVVJJKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3Nv
dXAvVVJMU291cC5oOgorCiAyMDIxLTAyLTE2ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJj
aWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBOdWxscHRyIGNyYXNoIGluIERvY3VtZW50Ojpjb250
ZXh0RG9jdW1lbnQoKSBpbnNpZGUgRm9udEZhY2VTZXQ6OkZvbnRGYWNlU2V0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Tb3VwLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU291cC5jbWFrZQppbmRleCAwMDE1ODEzYzkxYzIuLjUwMDMwMWU4M2UxYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU291cC5jbWFrZQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9Tb3VwLmNtYWtlCkBAIC0xNiw2ICsxNiw3IEBAIGxpc3QoQVBQRU5EIFdl
YkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIHBsYXRmb3JtL25ldHdvcmsvc291
cC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmgKICAgICBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291
cE5ldHdvcmtQcm94eVNldHRpbmdzLmgKICAgICBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5l
dHdvcmtTZXNzaW9uLmgKKyAgICBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cFZlcnNpb25pbmcu
aAogICAgIHBsYXRmb3JtL25ldHdvcmsvc291cC9VUkxTb3VwLmgKICkKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0F1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UuaAppbmRleCA4Njk5MDE5MGU3MDUuLjhlZDA1OGNiYzdlNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0F1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0F1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlLmgKQEAgLTQ0LDkgKzQ0LDExIEBAIHB1YmxpYzoKICAgICB7CiAg
ICAgfQogCi0gICAgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoU291cE1lc3NhZ2UqLCBTb3VwQXV0
aCosIGJvb2wgcmV0cnlpbmcsIEF1dGhlbnRpY2F0aW9uQ2xpZW50KiA9IG51bGxwdHIpOwotICAg
IEF1dGhlbnRpY2F0aW9uQ2xpZW50KiBhdXRoZW50aWNhdGlvbkNsaWVudCgpIGNvbnN0IHsgcmV0
dXJuIG1fYXV0aGVudGljYXRpb25DbGllbnQuZ2V0KCk7IH0KKyAgICBBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZShTb3VwTWVzc2FnZSosIFNvdXBBdXRoKiwgYm9vbCByZXRyeWluZyk7CisgICAgQXV0
aGVudGljYXRpb25DbGllbnQqIGF1dGhlbnRpY2F0aW9uQ2xpZW50KCkgY29uc3QgeyByZXR1cm4g
bnVsbHB0cjsgfQorI2lmIFVTRShTT1VQMikKICAgICBTb3VwTWVzc2FnZSogc291cE1lc3NhZ2Uo
KSBjb25zdCB7IHJldHVybiBtX3NvdXBNZXNzYWdlLmdldCgpOyB9CisjZW5kaWYKICAgICBTb3Vw
QXV0aCogc291cEF1dGgoKSBjb25zdCB7IHJldHVybiBtX3NvdXBBdXRoLmdldCgpOyB9CiAgICAg
dm9pZCBzZXRQcm9wb3NlZENyZWRlbnRpYWwoY29uc3QgQ3JlZGVudGlhbCYgY3JlZGVudGlhbCkg
eyBtX3Byb3Bvc2VkQ3JlZGVudGlhbCA9IGNyZWRlbnRpYWw7IH0KIApAQCAtNTQsOSArNTYsMTAg
QEAgcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNl
OwogICAgIHN0YXRpYyBib29sIHBsYXRmb3JtQ29tcGFyZShjb25zdCBBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSYsIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJik7CiAKKyNpZiBVU0UoU09V
UDIpCiAgICAgR1JlZlB0cjxTb3VwTWVzc2FnZT4gbV9zb3VwTWVzc2FnZTsKKyNlbmRpZgogICAg
IEdSZWZQdHI8U291cEF1dGg+IG1fc291cEF1dGg7Ci0gICAgUmVmUHRyPEF1dGhlbnRpY2F0aW9u
Q2xpZW50PiBtX2F1dGhlbnRpY2F0aW9uQ2xpZW50OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0F1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL3NvdXAvQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTb3VwLmNwcAppbmRleCA0ODk2ZmYw
YmRiNTkuLmI3MTZkYjIzYzVmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9zb3VwL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU291cC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU291
cC5jcHAKQEAgLTY2LDIxICs2NiwyOSBAQCBzdGF0aWMgUHJvdGVjdGlvblNwYWNlIHByb3RlY3Rp
b25TcGFjZUZyb21Tb3VwQXV0aEFuZFVSTChTb3VwQXV0aCogc291cEF1dGgsIGNvbgogICAgICAg
ICBTdHJpbmc6OmZyb21VVEY4KHNvdXBfYXV0aF9nZXRfcmVhbG0oc291cEF1dGgpKSwgc2NoZW1l
KTsKIH0KIAotQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
KFNvdXBNZXNzYWdlKiBzb3VwTWVzc2FnZSwgU291cEF1dGgqIHNvdXBBdXRoLCBib29sIHJldHJ5
aW5nLCBBdXRoZW50aWNhdGlvbkNsaWVudCogY2xpZW50KQorQXV0aGVudGljYXRpb25DaGFsbGVu
Z2U6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFNvdXBNZXNzYWdlKiBzb3VwTWVzc2FnZSwgU291
cEF1dGgqIHNvdXBBdXRoLCBib29sIHJldHJ5aW5nKQogICAgIDogQXV0aGVudGljYXRpb25DaGFs
bGVuZ2VCYXNlKHByb3RlY3Rpb25TcGFjZUZyb21Tb3VwQXV0aEFuZFVSTChzb3VwQXV0aCwgc291
cFVSSVRvVVJMKHNvdXBfbWVzc2FnZV9nZXRfdXJpKHNvdXBNZXNzYWdlKSkpCiAgICAgICAgICwg
Q3JlZGVudGlhbCgpIC8vIHByb3Bvc2VkQ3JlZGVudGlhbHMKICAgICAgICAgLCByZXRyeWluZyA/
IDEgOiAwIC8vIHByZXZpb3VzRmFpbHVyZUNvdW50CiAgICAgICAgICwgc291cE1lc3NhZ2UgLy8g
ZmFpbHVyZVJlc3BvbnNlCiAgICAgICAgICwgUmVzb3VyY2VFcnJvcjo6YXV0aGVudGljYXRpb25F
cnJvcihzb3VwTWVzc2FnZSkpCisjaWYgVVNFKFNPVVAyKQogICAgICwgbV9zb3VwTWVzc2FnZShz
b3VwTWVzc2FnZSkKKyNlbmRpZgogICAgICwgbV9zb3VwQXV0aChzb3VwQXV0aCkKLSAgICAsIG1f
YXV0aGVudGljYXRpb25DbGllbnQoY2xpZW50KQogewogfQogCiBib29sIEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlOjpwbGF0Zm9ybUNvbXBhcmUoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2Um
IGEsIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBiKQogewotICAgIHJldHVybiBhLnNv
dXBNZXNzYWdlKCkgPT0gYi5zb3VwTWVzc2FnZSgpICYmIGEuc291cEF1dGgoKSA9PSBiLnNvdXBB
dXRoKCk7CisgICAgaWYgKGEuc291cEF1dGgoKSAhPSBiLnNvdXBBdXRoKCkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworI2lmIFVTRShTT1VQMikKKyAgICByZXR1cm4gYS5zb3VwTWVzc2FnZSgp
ID09IGIuc291cE1lc3NhZ2UoKTsKKyNlbmRpZgorCisgICAgcmV0dXJuIHRydWU7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvc291cC9Db29raWVTb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvc291cC9Db29raWVTb3VwLmNwcAppbmRleCA1YTFiMTI5ZGMyN2MuLjc5N2Y0Y2IwY2Fh
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0Nvb2tp
ZVNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Db29r
aWVTb3VwLmNwcApAQCAtNjUsMTQgKzY1LDE4IEBAIHN0YXRpYyBTb3VwU2FtZVNpdGVQb2xpY3kg
c291cFNhbWVTaXRlUG9saWN5KENvb2tpZTo6U2FtZVNpdGVQb2xpY3kgcG9saWN5KQogI2VuZGlm
CiAKIENvb2tpZTo6Q29va2llKFNvdXBDb29raWUqIGNvb2tpZSkKLSAgICA6IG5hbWUoU3RyaW5n
Ojpmcm9tVVRGOChjb29raWUtPm5hbWUpKQotICAgICwgdmFsdWUoU3RyaW5nOjpmcm9tVVRGOChj
b29raWUtPnZhbHVlKSkKLSAgICAsIGRvbWFpbihTdHJpbmc6OmZyb21VVEY4KGNvb2tpZS0+ZG9t
YWluKSkKLSAgICAsIHBhdGgoU3RyaW5nOjpmcm9tVVRGOChjb29raWUtPnBhdGgpKQotICAgICwg
ZXhwaXJlcyhjb29raWUtPmV4cGlyZXMgPyBtYWtlT3B0aW9uYWwoc3RhdGljX2Nhc3Q8ZG91Ymxl
Pihzb3VwX2RhdGVfdG9fdGltZV90KGNvb2tpZS0+ZXhwaXJlcykpICogMTAwMCkgOiBXVEY6Om51
bGxvcHQpCi0gICAgLCBodHRwT25seShjb29raWUtPmh0dHBfb25seSkKLSAgICAsIHNlY3VyZShj
b29raWUtPnNlY3VyZSkKLSAgICAsIHNlc3Npb24oIWNvb2tpZS0+ZXhwaXJlcykKKyAgICA6IG5h
bWUoU3RyaW5nOjpmcm9tVVRGOChzb3VwX2Nvb2tpZV9nZXRfbmFtZShjb29raWUpKSkKKyAgICAs
IHZhbHVlKFN0cmluZzo6ZnJvbVVURjgoc291cF9jb29raWVfZ2V0X3ZhbHVlKGNvb2tpZSkpKQor
ICAgICwgZG9tYWluKFN0cmluZzo6ZnJvbVVURjgoc291cF9jb29raWVfZ2V0X2RvbWFpbihjb29r
aWUpKSkKKyAgICAsIHBhdGgoU3RyaW5nOjpmcm9tVVRGOChzb3VwX2Nvb2tpZV9nZXRfcGF0aChj
b29raWUpKSkKKyNpZiBVU0UoU09VUDIpCisgICAgLCBleHBpcmVzKHNvdXBfY29va2llX2dldF9l
eHBpcmVzKGNvb2tpZSkgPyBtYWtlT3B0aW9uYWwoc3RhdGljX2Nhc3Q8ZG91YmxlPihzb3VwX2Rh
dGVfdG9fdGltZV90KHNvdXBfY29va2llX2dldF9leHBpcmVzKGNvb2tpZSkpKSAqIDEwMDApIDog
V1RGOjpudWxsb3B0KQorI2Vsc2UKKyAgICAsIGV4cGlyZXMoc291cF9jb29raWVfZ2V0X2V4cGly
ZXMoY29va2llKSA/IG1ha2VPcHRpb25hbChzdGF0aWNfY2FzdDxkb3VibGU+KGdfZGF0ZV90aW1l
X3RvX3VuaXgoc291cF9jb29raWVfZ2V0X2V4cGlyZXMoY29va2llKSkpICogMTAwMCkgOiBXVEY6
Om51bGxvcHQpCisjZW5kaWYKKyAgICAsIGh0dHBPbmx5KHNvdXBfY29va2llX2dldF9odHRwX29u
bHkoY29va2llKSkKKyAgICAsIHNlY3VyZShzb3VwX2Nvb2tpZV9nZXRfc2VjdXJlKGNvb2tpZSkp
CisgICAgLCBzZXNzaW9uKCFzb3VwX2Nvb2tpZV9nZXRfZXhwaXJlcyhjb29raWUpKQogCiB7CiAj
aWYgU09VUF9DSEVDS19WRVJTSU9OKDIsIDY5LCA5MCkKQEAgLTgwLDYgKzg0LDcgQEAgQ29va2ll
OjpDb29raWUoU291cENvb2tpZSogY29va2llKQogI2VuZGlmCiB9CiAKKyNpZiBVU0UoU09VUDIp
CiBzdGF0aWMgU291cERhdGUqIG1zVG9Tb3VwRGF0ZShkb3VibGUgbXMpCiB7CiAgICAgaW50IHll
YXIgPSBtc1RvWWVhcihtcyk7CkBAIC05MCw2ICs5NSw3IEBAIHN0YXRpYyBTb3VwRGF0ZSogbXNU
b1NvdXBEYXRlKGRvdWJsZSBtcykKICAgICAvLyBhIHZhbHVlIGluIHRoZSBbMSwxMl0gcmFuZ2Us
IG1lYW5pbmcgd2UgaGF2ZSB0byBtYW51YWxseSBhZGp1c3QgdGhlIG1vbnRoIHZhbHVlLgogICAg
IHJldHVybiBzb3VwX2RhdGVfbmV3KHllYXIsIG1vbnRoRnJvbURheUluWWVhcihkYXlPZlllYXIs
IGxlYXBZZWFyKSArIDEsIGRheUluTW9udGhGcm9tRGF5SW5ZZWFyKGRheU9mWWVhciwgbGVhcFll
YXIpLCBtc1RvSG91cnMobXMpLCBtc1RvTWludXRlcyhtcyksIHN0YXRpY19jYXN0PGludD4obXMg
LyAxMDAwKSAlIDYwKTsKIH0KKyNlbmRpZgogCiBTb3VwQ29va2llKiBDb29raWU6OnRvU291cENv
b2tpZSgpIGNvbnN0CiB7CkBAIC0xMDYsOSArMTEyLDE0IEBAIFNvdXBDb29raWUqIENvb2tpZTo6
dG9Tb3VwQ29va2llKCkgY29uc3QKICNlbmRpZgogCiAgICAgaWYgKCFzZXNzaW9uICYmIGV4cGly
ZXMpIHsKKyNpZiBVU0UoU09VUDIpCiAgICAgICAgIFNvdXBEYXRlKiBkYXRlID0gbXNUb1NvdXBE
YXRlKCpleHBpcmVzKTsKICAgICAgICAgc291cF9jb29raWVfc2V0X2V4cGlyZXMoc291cENvb2tp
ZSwgZGF0ZSk7CiAgICAgICAgIHNvdXBfZGF0ZV9mcmVlKGRhdGUpOworI2Vsc2UKKyAgICAgICAg
R1JlZlB0cjxHRGF0ZVRpbWU+IGRhdGUgPSBhZG9wdEdSZWYoZ19kYXRlX3RpbWVfbmV3X2Zyb21f
dW5peF91dGMoKmV4cGlyZXMpKTsKKyAgICAgICAgc291cF9jb29raWVfc2V0X2V4cGlyZXMoc291
cENvb2tpZSwgZGF0ZS5nZXQoKSk7CisjZW5kaWYKICAgICB9CiAKICAgICByZXR1cm4gc291cENv
b2tpZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9H
VW5pcXVlUHRyU291cC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0dV
bmlxdWVQdHJTb3VwLmgKaW5kZXggYWZiZTg0NzEyMWJlLi40YTY3NGM5NTUzY2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9HVW5pcXVlUHRyU291cC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9HVW5pcXVlUHRyU291
cC5oCkBAIC0yOCwxMiArMjgsMTQgQEAKIAogbmFtZXNwYWNlIFdURiB7CiAKLVdURl9ERUZJTkVf
R1BUUl9ERUxFVEVSKFNvdXBVUkksIHNvdXBfdXJpX2ZyZWUpCiBXVEZfREVGSU5FX0dQVFJfREVM
RVRFUihTb3VwQ29va2llLCBzb3VwX2Nvb2tpZV9mcmVlKQogV1RGX0RFRklORV9HUFRSX0RFTEVU
RVIoU291cE1lc3NhZ2VIZWFkZXJzLCBzb3VwX21lc3NhZ2VfaGVhZGVyc19mcmVlKQogI2lmIFNP
VVBfQ0hFQ0tfVkVSU0lPTigyLCA2NywgMSkKIFdURl9ERUZJTkVfR1BUUl9ERUxFVEVSKFNvdXBI
U1RTUG9saWN5LCBzb3VwX2hzdHNfcG9saWN5X2ZyZWUpCiAjZW5kaWYKKyNpZiBVU0UoU09VUDIp
CitXVEZfREVGSU5FX0dQVFJfREVMRVRFUihTb3VwVVJJLCBzb3VwX3VyaV9mcmVlKQorI2VuZGlm
CiAKIH0gLy8gbmFtZXNwYWNlIFdURgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU291cC5j
cHAKaW5kZXggOTdkZDc5ZThhMTU1Li5lMGU4ODJhMzhiYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uU291cC5jcHAKQEAgLTkzLDIwICs5MywxOSBAQCBzdGF0aWMgY29uc3QgY2hhciog
c2NoZW1lRnJvbVByb3RlY3Rpb25TcGFjZVNlcnZlclR5cGUoUHJvdGVjdGlvblNwYWNlU2VydmVy
VHlwZQogICAgIHN3aXRjaCAoc2VydmVyVHlwZSkgewogICAgIGNhc2UgUHJvdGVjdGlvblNwYWNl
U2VydmVySFRUUDoKICAgICBjYXNlIFByb3RlY3Rpb25TcGFjZVByb3h5SFRUUDoKLSAgICAgICAg
cmV0dXJuIFNPVVBfVVJJX1NDSEVNRV9IVFRQOworICAgICAgICByZXR1cm4gImh0dHAiOwogICAg
IGNhc2UgUHJvdGVjdGlvblNwYWNlU2VydmVySFRUUFM6CiAgICAgY2FzZSBQcm90ZWN0aW9uU3Bh
Y2VQcm94eUhUVFBTOgotICAgICAgICByZXR1cm4gU09VUF9VUklfU0NIRU1FX0hUVFBTOworICAg
ICAgICByZXR1cm4gImh0dHBzIjsKICAgICBjYXNlIFByb3RlY3Rpb25TcGFjZVNlcnZlckZUUDoK
ICAgICBjYXNlIFByb3RlY3Rpb25TcGFjZVByb3h5RlRQOgotICAgICAgICByZXR1cm4gU09VUF9V
UklfU0NIRU1FX0ZUUDsKKyAgICAgICAgcmV0dXJuICJmdHAiOwogICAgIGNhc2UgUHJvdGVjdGlv
blNwYWNlU2VydmVyRlRQUzoKICAgICBjYXNlIFByb3RlY3Rpb25TcGFjZVByb3h5U09DS1M6CiAg
ICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJl
dHVybiBTT1VQX1VSSV9TQ0hFTUVfSFRUUDsKKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogfQogCiBzdGF0aWMgY29uc3QgY2hhciogYXV0aFR5cGVGcm9tUHJvdGVjdGlvblNwYWNl
QXV0aGVudGljYXRpb25TY2hlbWUoUHJvdGVjdGlvblNwYWNlQXV0aGVudGljYXRpb25TY2hlbWUg
c2NoZW1lKQpAQCAtMTMyLDggKzEzMSw3IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBhdXRoVHlwZUZy
b21Qcm90ZWN0aW9uU3BhY2VBdXRoZW50aWNhdGlvblNjaGVtZShQcm90ZWN0aW9uU3BhCiAgICAg
ICAgIHJldHVybiAidW5rbm93biI7CiAgICAgfQogCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci0gICAgcmV0dXJuICJ1bmtub3duIjsKKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogfQogCiBzdHJ1Y3QgU2VjcmV0U2VydmljZVNlYXJjaERhdGEgewpAQCAtMzMxLDExICszMjks
MTIgQEAgdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0
IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVMKICAgICBVTlVTRURfUEFSQU0ocGFnZUlEKTsK
ICAgICBVTlVTRURfUEFSQU0oc2hvdWxkQXNrSVRQKTsKICNlbmRpZgotICAgIEdVbmlxdWVQdHI8
U291cFVSST4gb3JpZ2luID0gdXJsVG9Tb3VwVVJJKHVybCk7CisKKyAgICBhdXRvIG9yaWdpbiA9
IHVybFRvU291cFVSSSh1cmwpOwogICAgIGlmICghb3JpZ2luKQogICAgICAgICByZXR1cm47CiAK
LSAgICBHVW5pcXVlUHRyPFNvdXBVUkk+IGZpcnN0UGFydHlVUkkgPSB1cmxUb1NvdXBVUkkoZmly
c3RQYXJ0eSk7CisgICAgYXV0byBmaXJzdFBhcnR5VVJJID0gdXJsVG9Tb3VwVVJJKGZpcnN0UGFy
dHkpOwogICAgIGlmICghZmlyc3RQYXJ0eVVSSSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0zNjUs
NyArMzY0LDExIEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRDb29raWVzRnJvbURP
TShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTCiAgICAgICAgIC8vIENhcCBsaWZl
dGltZSBvZiBwZXJzaXN0ZW50LCBjbGllbnQtc2lkZSBjb29raWVzIHRvIGEgd2Vlay4KICAgICAg
ICAgaWYgKGNhcHBlZExpZmV0aW1lKSB7CiAgICAgICAgICAgICBpZiAoYXV0byogZXhwaXJlc0Rh
dGUgPSBzb3VwX2Nvb2tpZV9nZXRfZXhwaXJlcyhjb29raWUuZ2V0KCkpKSB7CisjaWYgVVNFKFNP
VVAyKQogICAgICAgICAgICAgICAgIGF1dG8gdGltZUludGVydmFsU2luY2VOb3cgPSBTZWNvbmRz
KHN0YXRpY19jYXN0PGRvdWJsZT4oc291cF9kYXRlX3RvX3RpbWVfdChleHBpcmVzRGF0ZSkpKSAt
IFdhbGxUaW1lOjpub3coKS5zZWNvbmRzU2luY2VFcG9jaCgpOworI2Vsc2UKKyAgICAgICAgICAg
ICAgICBhdXRvIHRpbWVJbnRlcnZhbFNpbmNlTm93ID0gU2Vjb25kcyhzdGF0aWNfY2FzdDxkb3Vi
bGU+KGdfZGF0ZV90aW1lX3RvX3VuaXgoZXhwaXJlc0RhdGUpKSkgLSBXYWxsVGltZTo6bm93KCku
c2Vjb25kc1NpbmNlRXBvY2goKTsKKyNlbmRpZgogICAgICAgICAgICAgICAgIGlmICh0aW1lSW50
ZXJ2YWxTaW5jZU5vdyA+IGNhcHBlZExpZmV0aW1lLnZhbHVlKCkpCiAgICAgICAgICAgICAgICAg
ICAgIHNvdXBfY29va2llX3NldF9tYXhfYWdlKGNvb2tpZS5nZXQoKSwgY2FwcGVkTGlmZXRpbWUt
PnNlY29uZHNBczxpbnQ+KCkpOwogICAgICAgICAgICAgfQpAQCAtMzg2LDggKzM4OSw4IEBAIHZv
aWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRDb29raWVzKGNvbnN0IFZlY3RvcjxDb29raWU+
JiBjb29raWVzLCBjb25zdCBVUkwmCiB7CiAgICAgZm9yIChhdXRvIGNvb2tpZSA6IGNvb2tpZXMp
IHsKICNpZiBTT1VQX0NIRUNLX1ZFUlNJT04oMiwgNjcsIDEpCi0gICAgICAgIEdVbmlxdWVQdHI8
U291cFVSST4gb3JpZ2luID0gdXJsVG9Tb3VwVVJJKHVybCk7Ci0gICAgICAgIEdVbmlxdWVQdHI8
U291cFVSST4gZmlyc3RQYXJ0eVVSSSA9IHVybFRvU291cFVSSShmaXJzdFBhcnR5KTsKKyAgICAg
ICAgYXV0byBvcmlnaW4gPSB1cmxUb1NvdXBVUkkodXJsKTsKKyAgICAgICAgYXV0byBmaXJzdFBh
cnR5VVJJID0gdXJsVG9Tb3VwVVJJKGZpcnN0UGFydHkpOwogCiAgICAgICAgIHNvdXBfY29va2ll
X2phcl9hZGRfY29va2llX2Z1bGwoY29va2llU3RvcmFnZSgpLCBjb29raWUudG9Tb3VwQ29va2ll
KCksIG9yaWdpbi5nZXQoKSwgZmlyc3RQYXJ0eVVSSS5nZXQoKSk7CiAjZWxzZQpAQCAtNDExLDcg
KzQxNCw3IEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWxldGVDb29raWUoY29uc3Qg
Q29va2llJiBjb29raWUpCiAKIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWxldGVDb29r
aWUoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbmFtZSkgY29uc3QKIHsKLSAgICBHVW5p
cXVlUHRyPFNvdXBVUkk+IHVyaSA9IHVybFRvU291cFVSSSh1cmwpOworICAgIGF1dG8gdXJpID0g
dXJsVG9Tb3VwVVJJKHVybCk7CiAgICAgaWYgKCF1cmkpCiAgICAgICAgIHJldHVybjsKIApAQCAt
NDI0LDcgKzQyNyw3IEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWxldGVDb29raWUo
Y29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbmFtZSkgY29uCiAgICAgYm9vbCB3YXNEZWxl
dGVkID0gZmFsc2U7CiAgICAgZm9yIChHU0xpc3QqIGl0ZXIgPSBjb29raWVzLmdldCgpOyBpdGVy
OyBpdGVyID0gZ19zbGlzdF9uZXh0KGl0ZXIpKSB7CiAgICAgICAgIFNvdXBDb29raWUqIGNvb2tp
ZSA9IHN0YXRpY19jYXN0PFNvdXBDb29raWUqPihpdGVyLT5kYXRhKTsKLSAgICAgICAgaWYgKCF3
YXNEZWxldGVkICYmIGNvb2tpZU5hbWUgPT0gY29va2llLT5uYW1lKSB7CisgICAgICAgIGlmICgh
d2FzRGVsZXRlZCAmJiBjb29raWVOYW1lID09IHNvdXBfY29va2llX2dldF9uYW1lKGNvb2tpZSkp
IHsKICAgICAgICAgICAgIHNvdXBfY29va2llX2phcl9kZWxldGVfY29va2llKGphciwgY29va2ll
KTsKICAgICAgICAgICAgIHdhc0RlbGV0ZWQgPSB0cnVlOwogICAgICAgICB9CkBAIC00ODAsOCAr
NDgzLDggQEAgdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmdldEhvc3RuYW1lc1dpdGhDb29r
aWVzKEhhc2hTZXQ8U3RyaW5nPiYgaG9zdG5hbWVzKQogICAgIEdVbmlxdWVQdHI8R1NMaXN0PiBj
b29raWVzKHNvdXBfY29va2llX2phcl9hbGxfY29va2llcyhjb29raWVTdG9yYWdlKCkpKTsKICAg
ICBmb3IgKEdTTGlzdCogaXRlbSA9IGNvb2tpZXMuZ2V0KCk7IGl0ZW07IGl0ZW0gPSBnX3NsaXN0
X25leHQoaXRlbSkpIHsKICAgICAgICAgU291cENvb2tpZSogY29va2llID0gc3RhdGljX2Nhc3Q8
U291cENvb2tpZSo+KGl0ZW0tPmRhdGEpOwotICAgICAgICBpZiAoY29va2llLT5kb21haW4pCi0g
ICAgICAgICAgICBob3N0bmFtZXMuYWRkKFN0cmluZzo6ZnJvbVVURjgoY29va2llLT5kb21haW4p
KTsKKyAgICAgICAgaWYgKGNvbnN0IGNoYXIqIGRvbWFpbiA9IHNvdXBfY29va2llX2dldF9kb21h
aW4oY29va2llKSkKKyAgICAgICAgICAgIGhvc3RuYW1lcy5hZGQoU3RyaW5nOjpmcm9tVVRGOChk
b21haW4pKTsKICAgICAgICAgc291cF9jb29raWVfZnJlZShjb29raWUpOwogICAgIH0KIH0KQEAg
LTUwMCw3ICs1MDMsNyBAQCBWZWN0b3I8Q29va2llPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246Omdl
dEFsbENvb2tpZXMoKQogVmVjdG9yPENvb2tpZT4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpnZXRD
b29raWVzKGNvbnN0IFVSTCYgdXJsKQogewogICAgIFZlY3RvcjxDb29raWU+IGNvb2tpZXM7Ci0g
ICAgR1VuaXF1ZVB0cjxTb3VwVVJJPiB1cmkgPSB1cmxUb1NvdXBVUkkodXJsKTsKKyAgICBhdXRv
IHVyaSA9IHVybFRvU291cFVSSSh1cmwpOwogICAgIGlmICghdXJpKQogICAgICAgICByZXR1cm4g
Y29va2llczsKIApAQCAtNTE4LDcgKzUyMSw3IEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
OjpoYXNDb29raWVzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4sIENvbXBsZXRpCiAg
ICAgR1VuaXF1ZVB0cjxHU0xpc3Q+IGNvb2tpZXMoc291cF9jb29raWVfamFyX2FsbF9jb29raWVz
KGNvb2tpZVN0b3JhZ2UoKSkpOwogICAgIGZvciAoYXV0byogaXRlbSA9IGNvb2tpZXMuZ2V0KCk7
IGl0ZW07IGl0ZW0gPSBnX3NsaXN0X25leHQoaXRlbSkpIHsKICAgICAgICAgR1VuaXF1ZVB0cjxT
b3VwQ29va2llPiBjb29raWUoc3RhdGljX2Nhc3Q8U291cENvb2tpZSo+KGl0ZW0tPmRhdGEpKTsK
LSAgICAgICAgaWYgKFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tSG9zdChj
b29raWUtPmRvbWFpbikgPT0gZG9tYWluKSB7CisgICAgICAgIGlmIChSZWdpc3RyYWJsZURvbWFp
bjo6dW5jaGVja2VkQ3JlYXRlRnJvbUhvc3Qoc291cF9jb29raWVfZ2V0X2RvbWFpbihjb29raWUu
Z2V0KCkpKSA9PSBkb21haW4pIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHRydWUp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC01MzksMTYgKzU0MiwxNiBAQCBi
b29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0UmF3Q29va2llcyhjb25zdCBVUkwmIGZpcnN0
UGFydHksIGNvbnN0IFNhbWVTaXRlSQogICAgIFVOVVNFRF9QQVJBTShzaG91bGRBc2tJVFApOwog
I2VuZGlmCiAKLSAgICBHVW5pcXVlUHRyPFNvdXBVUkk+IHVyaSA9IHVybFRvU291cFVSSSh1cmwp
OworICAgIGF1dG8gdXJpID0gdXJsVG9Tb3VwVVJJKHVybCk7CiAgICAgaWYgKCF1cmkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAogI2lmIFNPVVBfQ0hFQ0tfVkVSU0lPTigyLCA2OSwgOTApCi0g
ICAgR1VuaXF1ZVB0cjxTb3VwVVJJPiBmaXJzdFBhcnR5VVJJID0gdXJsVG9Tb3VwVVJJKHNhbWVT
aXRlSW5mby5pc1NhbWVTaXRlID8gdXJsIDogZmlyc3RQYXJ0eSk7CisgICAgYXV0byBmaXJzdFBh
cnR5VVJJID0gdXJsVG9Tb3VwVVJJKHNhbWVTaXRlSW5mby5pc1NhbWVTaXRlID8gdXJsIDogZmly
c3RQYXJ0eSk7CiAgICAgaWYgKCFmaXJzdFBhcnR5VVJJKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICBHVW5pcXVlUHRyPFNvdXBVUkk+IGNvb2tpZVVSSSA9IHNhbWVTaXRlSW5mby5pc1Nh
bWVTaXRlID8gdXJsVG9Tb3VwVVJJKHVybCkgOiBudWxscHRyOworICAgIGF1dG8gY29va2llVVJJ
ID0gc2FtZVNpdGVJbmZvLmlzU2FtZVNpdGUgPyB1cmxUb1NvdXBVUkkodXJsKSA6IG51bGxwdHI7
CiAgICAgR1VuaXF1ZVB0cjxHU0xpc3Q+IGNvb2tpZXMoc291cF9jb29raWVfamFyX2dldF9jb29r
aWVfbGlzdF93aXRoX3NhbWVfc2l0ZV9pbmZvKGNvb2tpZVN0b3JhZ2UoKSwgdXJpLmdldCgpLCBm
aXJzdFBhcnR5VVJJLmdldCgpLCBjb29raWVVUkkuZ2V0KCksIFRSVUUsIHNhbWVTaXRlSW5mby5p
c1NhZmVIVFRQTWV0aG9kLCBzYW1lU2l0ZUluZm8uaXNUb3BTaXRlKSk7CiAjZWxzZQogICAgIEdV
bmlxdWVQdHI8R1NMaXN0PiBjb29raWVzKHNvdXBfY29va2llX2phcl9nZXRfY29va2llX2xpc3Qo
Y29va2llU3RvcmFnZSgpLCB1cmkuZ2V0KCksIFRSVUUpKTsKQEAgLTU3OSwxNiArNTgyLDE2IEBA
IHN0YXRpYyBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVzRm9yU2Vzc2lvbihjb25zdCBO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlCiAgICAgVU5VU0VEX1BBUkFNKHNob3VsZEFza0lUUCk7
CiAjZW5kaWYKIAotICAgIEdVbmlxdWVQdHI8U291cFVSST4gdXJpID0gdXJsVG9Tb3VwVVJJKHVy
bCk7CisgICAgYXV0byB1cmkgPSB1cmxUb1NvdXBVUkkodXJsKTsKICAgICBpZiAoIXVyaSkKICAg
ICAgICAgcmV0dXJuIHsgeyB9LCBmYWxzZSB9OwogCiAjaWYgU09VUF9DSEVDS19WRVJTSU9OKDIs
IDY5LCA5MCkKLSAgICBHVW5pcXVlUHRyPFNvdXBVUkk+IGZpcnN0UGFydHlVUkkgPSB1cmxUb1Nv
dXBVUkkoZmlyc3RQYXJ0eSk7CisgICAgYXV0byBmaXJzdFBhcnR5VVJJID0gdXJsVG9Tb3VwVVJJ
KGZpcnN0UGFydHkpOwogICAgIGlmICghZmlyc3RQYXJ0eVVSSSkKICAgICAgICAgcmV0dXJuIHsg
eyB9LCBmYWxzZSB9OwogCi0gICAgR1VuaXF1ZVB0cjxTb3VwVVJJPiBjb29raWVVUkkgPSBzYW1l
U2l0ZUluZm8uaXNTYW1lU2l0ZSA/IHVybFRvU291cFVSSSh1cmwpIDogbnVsbHB0cjsKKyAgICBh
dXRvIGNvb2tpZVVSSSA9IHNhbWVTaXRlSW5mby5pc1NhbWVTaXRlID8gdXJsVG9Tb3VwVVJJKHVy
bCkgOiBudWxscHRyOwogICAgIEdTTGlzdCogY29va2llcyA9IHNvdXBfY29va2llX2phcl9nZXRf
Y29va2llX2xpc3Rfd2l0aF9zYW1lX3NpdGVfaW5mbyhzZXNzaW9uLmNvb2tpZVN0b3JhZ2UoKSwg
dXJpLmdldCgpLCBmaXJzdFBhcnR5VVJJLmdldCgpLCBjb29raWVVUkkuZ2V0KCksIGZvckhUVFBI
ZWFkZXIsIHNhbWVTaXRlSW5mby5pc1NhZmVIVFRQTWV0aG9kLCBzYW1lU2l0ZUluZm8uaXNUb3BT
aXRlKTsKICNlbHNlCiAgICAgR1NMaXN0KiBjb29raWVzID0gc291cF9jb29raWVfamFyX2dldF9j
b29raWVfbGlzdChzZXNzaW9uLmNvb2tpZVN0b3JhZ2UoKSwgdXJpLmdldCgpLCBmb3JIVFRQSGVh
ZGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9S
ZXNvdXJjZUVycm9yU291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3Nv
dXAvUmVzb3VyY2VFcnJvclNvdXAuY3BwCmluZGV4IDE2ZDEyMzBmYjQxMC4uMmNlOGEwM2ZkZjAy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3Vy
Y2VFcnJvclNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291
cC9SZXNvdXJjZUVycm9yU291cC5jcHAKQEAgLTM2LDMwICszNiwzNyBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLXN0YXRpYyBVUkwgZmFpbGluZ1VSSShTb3VwVVJJKiBzb3VwVVJJKQotewot
ICAgIEFTU0VSVChzb3VwVVJJKTsKLSAgICByZXR1cm4gc291cFVSSVRvVVJMKHNvdXBVUkkpOwot
fQorI2lmIFVTRShTT1VQMikKKyNkZWZpbmUgU09VUF9IVFRQX0VSUk9SX0RPTUFJTiBTT1VQX0hU
VFBfRVJST1IKKyNlbHNlCisjZGVmaW5lIFNPVVBfSFRUUF9FUlJPUl9ET01BSU4gU09VUF9TRVNT
SU9OX0VSUk9SCisjZW5kaWYKIAogUmVzb3VyY2VFcnJvciBSZXNvdXJjZUVycm9yOjp0cmFuc3Bv
cnRFcnJvcihjb25zdCBVUkwmIGZhaWxpbmdVUkwsIGludCBzdGF0dXNDb2RlLCBjb25zdCBTdHJp
bmcmIHJlYXNvblBocmFzZSkKIHsKLSAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihnX3F1YXJrX3Rv
X3N0cmluZyhTT1VQX0hUVFBfRVJST1IpLCBzdGF0dXNDb2RlLCBmYWlsaW5nVVJMLCByZWFzb25Q
aHJhc2UpOworICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGdfcXVhcmtfdG9fc3RyaW5nKFNPVVBf
SFRUUF9FUlJPUl9ET01BSU4pLCBzdGF0dXNDb2RlLCBmYWlsaW5nVVJMLCByZWFzb25QaHJhc2Up
OwogfQogCiBSZXNvdXJjZUVycm9yIFJlc291cmNlRXJyb3I6Omh0dHBFcnJvcihTb3VwTWVzc2Fn
ZSogbWVzc2FnZSwgR0Vycm9yKiBlcnJvcikKIHsKICAgICBBU1NFUlQobWVzc2FnZSk7CisjaWYg
VVNFKFNPVVAyKQogICAgIGlmIChTT1VQX1NUQVRVU19JU19UUkFOU1BPUlRfRVJST1IobWVzc2Fn
ZS0+c3RhdHVzX2NvZGUpKQotICAgICAgICByZXR1cm4gdHJhbnNwb3J0RXJyb3IoZmFpbGluZ1VS
SShzb3VwX21lc3NhZ2VfZ2V0X3VyaShtZXNzYWdlKSksIG1lc3NhZ2UtPnN0YXR1c19jb2RlLCBT
dHJpbmc6OmZyb21VVEY4KG1lc3NhZ2UtPnJlYXNvbl9waHJhc2UpKTsKLSAgICByZXR1cm4gZ2Vu
ZXJpY0dFcnJvcihmYWlsaW5nVVJJKHNvdXBfbWVzc2FnZV9nZXRfdXJpKG1lc3NhZ2UpKSwgZXJy
b3IpOworICAgICAgICByZXR1cm4gdHJhbnNwb3J0RXJyb3Ioc291cFVSSVRvVVJMKHNvdXBfbWVz
c2FnZV9nZXRfdXJpKG1lc3NhZ2UpKSwgbWVzc2FnZS0+c3RhdHVzX2NvZGUsIFN0cmluZzo6ZnJv
bVVURjgobWVzc2FnZS0+cmVhc29uX3BocmFzZSkpOworI2VuZGlmCisgICAgcmV0dXJuIGdlbmVy
aWNHRXJyb3Ioc291cFVSSVRvVVJMKHNvdXBfbWVzc2FnZV9nZXRfdXJpKG1lc3NhZ2UpKSwgZXJy
b3IpOwogfQogCiBSZXNvdXJjZUVycm9yIFJlc291cmNlRXJyb3I6OmF1dGhlbnRpY2F0aW9uRXJy
b3IoU291cE1lc3NhZ2UqIG1lc3NhZ2UpCiB7CiAgICAgQVNTRVJUKG1lc3NhZ2UpOwotICAgIHJl
dHVybiBSZXNvdXJjZUVycm9yKGdfcXVhcmtfdG9fc3RyaW5nKFNPVVBfSFRUUF9FUlJPUiksIG1l
c3NhZ2UtPnN0YXR1c19jb2RlLAotICAgICAgICBmYWlsaW5nVVJJKHNvdXBfbWVzc2FnZV9nZXRf
dXJpKG1lc3NhZ2UpKSwgU3RyaW5nOjpmcm9tVVRGOChtZXNzYWdlLT5yZWFzb25fcGhyYXNlKSk7
CisjaWYgVVNFKFNPVVAyKQorICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGdfcXVhcmtfdG9fc3Ry
aW5nKFNPVVBfSFRUUF9FUlJPUl9ET01BSU4pLCBtZXNzYWdlLT5zdGF0dXNfY29kZSwKKyAgICAg
ICAgc291cFVSSVRvVVJMKHNvdXBfbWVzc2FnZV9nZXRfdXJpKG1lc3NhZ2UpKSwgU3RyaW5nOjpm
cm9tVVRGOChtZXNzYWdlLT5yZWFzb25fcGhyYXNlKSk7CisjZWxzZQorICAgIHJldHVybiBSZXNv
dXJjZUVycm9yKGdfcXVhcmtfdG9fc3RyaW5nKFNPVVBfU0VTU0lPTl9FUlJPUiksIHNvdXBfbWVz
c2FnZV9nZXRfc3RhdHVzKG1lc3NhZ2UpLAorICAgICAgICBzb3VwX21lc3NhZ2VfZ2V0X3VyaSht
ZXNzYWdlKSwgU3RyaW5nOjpmcm9tVVRGOChzb3VwX21lc3NhZ2VfZ2V0X3JlYXNvbl9waHJhc2Uo
bWVzc2FnZSkpKTsKKyNlbmRpZgogfQogCiBSZXNvdXJjZUVycm9yIFJlc291cmNlRXJyb3I6Omdl
bmVyaWNHRXJyb3IoY29uc3QgVVJMJiBmYWlsaW5nVVJMLCBHRXJyb3IqIGVycm9yKQpAQCAtNjks
NyArNzYsNyBAQCBSZXNvdXJjZUVycm9yIFJlc291cmNlRXJyb3I6OmdlbmVyaWNHRXJyb3IoY29u
c3QgVVJMJiBmYWlsaW5nVVJMLCBHRXJyb3IqIGVycm9yKQogCiBSZXNvdXJjZUVycm9yIFJlc291
cmNlRXJyb3I6OnRsc0Vycm9yKGNvbnN0IFVSTCYgZmFpbGluZ1VSTCwgdW5zaWduZWQgdGxzRXJy
b3JzLCBHVGxzQ2VydGlmaWNhdGUqIGNlcnRpZmljYXRlKQogewotICAgIFJlc291cmNlRXJyb3Ig
cmVzb3VyY2VFcnJvcihnX3F1YXJrX3RvX3N0cmluZyhTT1VQX0hUVFBfRVJST1IpLCBTT1VQX1NU
QVRVU19TU0xfRkFJTEVELCBmYWlsaW5nVVJMLCB1bmFjY2VwdGFibGVUTFNDZXJ0aWZpY2F0ZSgp
KTsKKyAgICBSZXNvdXJjZUVycm9yIHJlc291cmNlRXJyb3IoZ19xdWFya190b19zdHJpbmcoR19U
TFNfRVJST1IpLCBHX1RMU19FUlJPUl9CQURfQ0VSVElGSUNBVEUsIGZhaWxpbmdVUkwsIHVuYWNj
ZXB0YWJsZVRMU0NlcnRpZmljYXRlKCkpOwogICAgIHJlc291cmNlRXJyb3Iuc2V0VExTRXJyb3Jz
KHRsc0Vycm9ycyk7CiAgICAgcmVzb3VyY2VFcnJvci5zZXRDZXJ0aWZpY2F0ZShjZXJ0aWZpY2F0
ZSk7CiAgICAgcmV0dXJuIHJlc291cmNlRXJyb3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1ZXN0LmgKaW5kZXggNjk4NzE1ZTUz
MGNkLi5iOThhNzRjMDE1NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1ZXN0LmgKQEAgLTY1LDYgKzY1LDcgQEAgcHVibGlj
OgogICAgIGJvb2wgYWNjZXB0RW5jb2RpbmcoKSBjb25zdCB7IHJldHVybiBtX2FjY2VwdEVuY29k
aW5nOyB9CiAgICAgdm9pZCBzZXRBY2NlcHRFbmNvZGluZyhib29sIGFjY2VwdEVuY29kaW5nKSB7
IG1fYWNjZXB0RW5jb2RpbmcgPSBhY2NlcHRFbmNvZGluZzsgfQogCisgICAgdm9pZCB1cGRhdGVT
b3VwTWVzc2FnZUJvZHkoU291cE1lc3NhZ2UqLCBCbG9iUmVnaXN0cnlJbXBsJikgY29uc3Q7CiAg
ICAgdm9pZCB1cGRhdGVTb3VwTWVzc2FnZUhlYWRlcnMoU291cE1lc3NhZ2VIZWFkZXJzKikgY29u
c3Q7CiAgICAgdm9pZCB1cGRhdGVGcm9tU291cE1lc3NhZ2VIZWFkZXJzKFNvdXBNZXNzYWdlSGVh
ZGVycyopOwogCkBAIC03NCwxMCArNzUsMTIgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBmcmll
bmQgY2xhc3MgUmVzb3VyY2VSZXF1ZXN0QmFzZTsKIAorI2lmIFVTRShTT1VQMikKICAgICBHVW5p
cXVlUHRyPFNvdXBVUkk+IGNyZWF0ZVNvdXBVUkkoKSBjb25zdDsKKyNlbHNlCisgICAgR1JlZlB0
cjxHVXJpPiBjcmVhdGVTb3VwVVJJKCkgY29uc3Q7CisjZW5kaWYKIAotICAgIHZvaWQgdXBkYXRl
U291cE1lc3NhZ2VNZW1iZXJzKFNvdXBNZXNzYWdlKikgY29uc3Q7Ci0gICAgdm9pZCB1cGRhdGVT
b3VwTWVzc2FnZUJvZHkoU291cE1lc3NhZ2UqLCBCbG9iUmVnaXN0cnlJbXBsJikgY29uc3Q7CiAg
ICAgdm9pZCBkb1VwZGF0ZVBsYXRmb3JtUmVxdWVzdCgpIHsgfQogICAgIHZvaWQgZG9VcGRhdGVS
ZXNvdXJjZVJlcXVlc3QoKSB7IH0KICAgICB2b2lkIGRvVXBkYXRlUGxhdGZvcm1IVFRQQm9keSgp
IHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jl
c291cmNlUmVxdWVzdFNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9z
b3VwL1Jlc291cmNlUmVxdWVzdFNvdXAuY3BwCmluZGV4IGZkODU0OThlNjQ3Mi4uM2IyMGU4NTZh
OGUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVz
b3VyY2VSZXF1ZXN0U291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL1Jlc291cmNlUmVxdWVzdFNvdXAuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVk
ZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIlJlZ2lzdHJhYmxlRG9tYWluLmgiCiAj
aW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCisjaW5jbHVkZSAiU291cFZlcnNpb25pbmcuaCIKICNp
bmNsdWRlICJVUkxTb3VwLmgiCiAjaW5jbHVkZSAiV2ViS2l0Rm9ybURhdGFJbnB1dFN0cmVhbS5o
IgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KQEAgLTY0LDExICs2NSwxMiBAQCBHUmVm
UHRyPFNvdXBNZXNzYWdlPiBSZXNvdXJjZVJlcXVlc3Q6OmNyZWF0ZVNvdXBNZXNzYWdlKEJsb2JS
ZWdpc3RyeUltcGwmIGJsb2JSZQogCiAgICAgc291cF9tZXNzYWdlX3NldF9wcmlvcml0eShzb3Vw
TWVzc2FnZS5nZXQoKSwgdG9Tb3VwTWVzc2FnZVByaW9yaXR5KHByaW9yaXR5KCkpKTsKIAotICAg
IHVwZGF0ZVNvdXBNZXNzYWdlSGVhZGVycyhzb3VwTWVzc2FnZS0+cmVxdWVzdF9oZWFkZXJzKTsK
KyAgICB1cGRhdGVTb3VwTWVzc2FnZUhlYWRlcnMoc291cF9tZXNzYWdlX2dldF9yZXF1ZXN0X2hl
YWRlcnMoc291cE1lc3NhZ2UuZ2V0KCkpKTsKIAotICAgIGF1dG8gZmlyc3RQYXJ0eSA9IHVybFRv
U291cFVSSShmaXJzdFBhcnR5Rm9yQ29va2llcygpKTsKLSAgICBpZiAoZmlyc3RQYXJ0eSkKLSAg
ICAgICAgc291cF9tZXNzYWdlX3NldF9maXJzdF9wYXJ0eShzb3VwTWVzc2FnZS5nZXQoKSwgZmly
c3RQYXJ0eS5nZXQoKSk7CisgICAgaWYgKGZpcnN0UGFydHlGb3JDb29raWVzKCkucHJvdG9jb2xJ
c0luSFRUUEZhbWlseSgpKSB7CisgICAgICAgIGlmIChhdXRvIGZpcnN0UGFydHkgPSB1cmxUb1Nv
dXBVUkkoZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSkpCisgICAgICAgICAgICBzb3VwX21lc3NhZ2Vf
c2V0X2ZpcnN0X3BhcnR5KHNvdXBNZXNzYWdlLmdldCgpLCBmaXJzdFBhcnR5LmdldCgpKTsKKyAg
ICB9CiAKICNpZiBTT1VQX0NIRUNLX1ZFUlNJT04oMiwgNjksIDkwKQogICAgIGlmICghaXNTYW1l
U2l0ZVVuc3BlY2lmaWVkKCkpIHsKQEAgLTEwMCw3ICsxMDIsMTIgQEAgdm9pZCBSZXNvdXJjZVJl
cXVlc3Q6OnVwZGF0ZVNvdXBNZXNzYWdlQm9keShTb3VwTWVzc2FnZSogc291cE1lc3NhZ2UsIEJs
b2JSZWdpc3QKICAgICBhdXRvJiBlbGVtZW50cyA9IGZvcm1EYXRhLT5lbGVtZW50cygpOwogICAg
IGlmIChlbGVtZW50cy5zaXplKCkgPT0gMSAmJiAhZm9ybURhdGEtPmFsd2F5c1N0cmVhbSgpKSB7
CiAgICAgICAgIGlmIChhdXRvKiB2ZWN0b3IgPSBXVEY6OmdldF9pZjxWZWN0b3I8Y2hhcj4+KGVs
ZW1lbnRzWzBdLmRhdGEpKSB7CisjaWYgVVNFKFNPVVAyKQogICAgICAgICAgICAgc291cF9tZXNz
YWdlX2JvZHlfYXBwZW5kKHNvdXBNZXNzYWdlLT5yZXF1ZXN0X2JvZHksIFNPVVBfTUVNT1JZX1RF
TVBPUkFSWSwgdmVjdG9yLT5kYXRhKCksIHZlY3Rvci0+c2l6ZSgpKTsKKyNlbHNlCisgICAgICAg
ICAgICBHUmVmUHRyPEdCeXRlcz4gYnl0ZXMgPSBhZG9wdEdSZWYoZ19ieXRlc19uZXdfc3RhdGlj
KHZlY3Rvci0+ZGF0YSgpLCB2ZWN0b3ItPnNpemUoKSkpOworICAgICAgICAgICAgc291cF9tZXNz
YWdlX3NldF9yZXF1ZXN0X2JvZHlfZnJvbV9ieXRlcyhzb3VwTWVzc2FnZSwgbnVsbHB0ciwgYnl0
ZXMuZ2V0KCkpOworI2VuZGlmCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9
CkBAIC0xMTgsNiArMTI1LDcgQEAgdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OnVwZGF0ZVNvdXBNZXNz
YWdlQm9keShTb3VwTWVzc2FnZSogc291cE1lc3NhZ2UsIEJsb2JSZWdpc3QKICAgICAgICAgcmV0
dXJuOwogCiAgICAgR1JlZlB0cjxHSW5wdXRTdHJlYW0+IHN0cmVhbSA9IHdlYmtpdEZvcm1EYXRh
SW5wdXRTdHJlYW1OZXcoV1RGTW92ZShyZXNvbHZlZEZvcm1EYXRhKSk7CisjaWYgVVNFKFNPVVAy
KQogICAgIGlmIChHQnl0ZXMqIGRhdGEgPSB3ZWJraXRGb3JtRGF0YUlucHV0U3RyZWFtUmVhZEFs
bChXRUJLSVRfRk9STV9EQVRBX0lOUFVUX1NUUkVBTShzdHJlYW0uZ2V0KCkpKSkgewogICAgICAg
ICBzb3VwX21lc3NhZ2VfYm9keV9zZXRfYWNjdW11bGF0ZShzb3VwTWVzc2FnZS0+cmVxdWVzdF9i
b2R5LCBGQUxTRSk7CiAgICAgICAgIGF1dG8qIHNvdXBCdWZmZXIgPSBzb3VwX2J1ZmZlcl9uZXdf
d2l0aF9vd25lcihnX2J5dGVzX2dldF9kYXRhKGRhdGEsIG51bGxwdHIpLApAQCAtMTI1LDYgKzEz
Myw5IEBAIHZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojp1cGRhdGVTb3VwTWVzc2FnZUJvZHkoU291cE1l
c3NhZ2UqIHNvdXBNZXNzYWdlLCBCbG9iUmVnaXN0CiAgICAgICAgIHNvdXBfbWVzc2FnZV9ib2R5
X2FwcGVuZF9idWZmZXIoc291cE1lc3NhZ2UtPnJlcXVlc3RfYm9keSwgc291cEJ1ZmZlcik7CiAg
ICAgICAgIHNvdXBfYnVmZmVyX2ZyZWUoc291cEJ1ZmZlcik7CiAgICAgfQorI2Vsc2UKKyAgICBz
b3VwX21lc3NhZ2Vfc2V0X3JlcXVlc3RfYm9keShzb3VwTWVzc2FnZSwgbnVsbHB0ciwgc3RyZWFt
LmdldCgpLCBsZW5ndGgpOworI2VuZGlmCiAKICAgICBBU1NFUlQobGVuZ3RoID09IHN0YXRpY19j
YXN0PHVpbnQ2NF90Pihzb3VwTWVzc2FnZS0+cmVxdWVzdF9ib2R5LT5sZW5ndGgpKTsKIH0KQEAg
LTE1OCw2ICsxNjksNyBAQCB1bnNpZ25lZCBpbml0aWFsaXplTWF4aW11bUhUVFBDb25uZWN0aW9u
Q291bnRQZXJIb3N0KCkKICAgICByZXR1cm4gMTAwMDA7CiB9CiAKKyNpZiBVU0UoU09VUDIpCiBH
VW5pcXVlUHRyPFNvdXBVUkk+IFJlc291cmNlUmVxdWVzdDo6Y3JlYXRlU291cFVSSSgpIGNvbnN0
CiB7CiAgICAgLy8gV2ViS2l0IGRvZXMgbm90IHN1cHBvcnQgZnJhZ21lbnQgaWRlbnRpZmllcnMg
aW4gZGF0YSBVUkxzLCBidXQgc291cCBkb2VzLgpAQCAtMTg1LDcgKzE5NywxMyBAQCBHVW5pcXVl
UHRyPFNvdXBVUkk+IFJlc291cmNlUmVxdWVzdDo6Y3JlYXRlU291cFVSSSgpIGNvbnN0CiAKICAg
ICByZXR1cm4gc291cFVSSTsKIH0KLQorI2Vsc2UKK0dSZWZQdHI8R1VyaT4gUmVzb3VyY2VSZXF1
ZXN0OjpjcmVhdGVTb3VwVVJJKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV91cmwuY3JlYXRlR1Vy
aSgpOwogfQotCiAjZW5kaWYKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8g
VVNFKFNPVVApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3Nv
dXAvUmVzb3VyY2VSZXNwb25zZVNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9zb3VwL1Jlc291cmNlUmVzcG9uc2VTb3VwLmNwcAppbmRleCBiNzQzMjI3ODY1ZTYuLmRh
NmRjNDA1ZGRlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9z
b3VwL1Jlc291cmNlUmVzcG9uc2VTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXNwb25zZVNvdXAuY3BwCkBAIC0yNyw2ICsyNyw3IEBA
CiAjaW5jbHVkZSAiSFRUUEhlYWRlck5hbWVzLmgiCiAjaW5jbHVkZSAiSFRUUFBhcnNlcnMuaCIK
ICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCisjaW5jbHVkZSAiU291cFZlcnNpb25pbmcu
aCIKICNpbmNsdWRlICJVUkxTb3VwLmgiCiAjaW5jbHVkZSA8dW5pY29kZS91c2V0Lmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgpAQCAtNDYsMTcgKzQ3LDE4IEBAIFJlc291cmNlUmVz
cG9uc2U6OlJlc291cmNlUmVzcG9uc2UoU291cE1lc3NhZ2UqIHNvdXBNZXNzYWdlLCBjb25zdCBD
U3RyaW5nJiBzbmlmCiAgICAgICAgIG1faHR0cFZlcnNpb24gPSBBdG9tU3RyaW5nKCJIVFRQLzEu
MSIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgfQotICAgIG1faHR0cFN0YXR1c0NvZGUgPSBzb3VwTWVzc2FnZS0+c3RhdHVzX2NvZGU7Ci0g
ICAgc2V0SFRUUFN0YXR1c1RleHQoc291cE1lc3NhZ2UtPnJlYXNvbl9waHJhc2UpOwogCi0gICAg
R1Rsc0NlcnRpZmljYXRlKiBjZXJ0aWZpY2F0ZSA9IDA7Ci0gICAgc291cF9tZXNzYWdlX2dldF9o
dHRwc19zdGF0dXMoc291cE1lc3NhZ2UsICZjZXJ0aWZpY2F0ZSwgJm1fdGxzRXJyb3JzKTsKLSAg
ICBtX2NlcnRpZmljYXRlID0gY2VydGlmaWNhdGU7CisgICAgbV9odHRwU3RhdHVzQ29kZSA9IHNv
dXBfbWVzc2FnZV9nZXRfc3RhdHVzKHNvdXBNZXNzYWdlKTsKKyAgICBzZXRIVFRQU3RhdHVzVGV4
dChzb3VwX21lc3NhZ2VfZ2V0X3JlYXNvbl9waHJhc2Uoc291cE1lc3NhZ2UpKTsKIAotICAgIHVw
ZGF0ZUZyb21Tb3VwTWVzc2FnZUhlYWRlcnMoc291cE1lc3NhZ2UtPnJlc3BvbnNlX2hlYWRlcnMp
OworICAgIG1fY2VydGlmaWNhdGUgPSBzb3VwX21lc3NhZ2VfZ2V0X3Rsc19jZXJ0aWZpY2F0ZShz
b3VwTWVzc2FnZSk7CisgICAgbV90bHNFcnJvcnMgPSBzb3VwX21lc3NhZ2VfZ2V0X3Rsc19jZXJ0
aWZpY2F0ZV9lcnJvcnMoc291cE1lc3NhZ2UpOworCisgICAgYXV0byogcmVzcG9uc2VIZWFkZXJz
ID0gc291cF9tZXNzYWdlX2dldF9yZXNwb25zZV9oZWFkZXJzKHNvdXBNZXNzYWdlKTsKKyAgICB1
cGRhdGVGcm9tU291cE1lc3NhZ2VIZWFkZXJzKHJlc3BvbnNlSGVhZGVycyk7CiAKICAgICBTdHJp
bmcgY29udGVudFR5cGU7Ci0gICAgY29uc3QgY2hhciogb2ZmaWNpYWxUeXBlID0gc291cF9tZXNz
YWdlX2hlYWRlcnNfZ2V0X29uZShzb3VwTWVzc2FnZS0+cmVzcG9uc2VfaGVhZGVycywgIkNvbnRl
bnQtVHlwZSIpOworICAgIGNvbnN0IGNoYXIqIG9mZmljaWFsVHlwZSA9IHNvdXBfbWVzc2FnZV9o
ZWFkZXJzX2dldF9vbmUocmVzcG9uc2VIZWFkZXJzLCAiQ29udGVudC1UeXBlIik7CiAgICAgaWYg
KCFzbmlmZmVkQ29udGVudFR5cGUuaXNOdWxsKCkgJiYgbV9odHRwU3RhdHVzQ29kZSAhPSBTT1VQ
X1NUQVRVU19OT1RfTU9ESUZJRUQgJiYgc25pZmZlZENvbnRlbnRUeXBlICE9IG9mZmljaWFsVHlw
ZSkKICAgICAgICAgY29udGVudFR5cGUgPSBzbmlmZmVkQ29udGVudFR5cGUuZGF0YSgpOwogICAg
IGVsc2UKQEAgLTY2LDcgKzY4LDcgQEAgUmVzb3VyY2VSZXNwb25zZTo6UmVzb3VyY2VSZXNwb25z
ZShTb3VwTWVzc2FnZSogc291cE1lc3NhZ2UsIGNvbnN0IENTdHJpbmcmIHNuaWYKICAgICAgICAg
c2V0TWltZVR5cGUoTUlNRVR5cGVSZWdpc3RyeTo6bWltZVR5cGVGb3JQYXRoKG1fdXJsLnBhdGgo
KS50b1N0cmluZygpKSk7CiAgICAgc2V0VGV4dEVuY29kaW5nTmFtZShleHRyYWN0Q2hhcnNldEZy
b21NZWRpYVR5cGUoY29udGVudFR5cGUpKTsKIAotICAgIHNldEV4cGVjdGVkQ29udGVudExlbmd0
aChzb3VwX21lc3NhZ2VfaGVhZGVyc19nZXRfY29udGVudF9sZW5ndGgoc291cE1lc3NhZ2UtPnJl
c3BvbnNlX2hlYWRlcnMpKTsKKyAgICBzZXRFeHBlY3RlZENvbnRlbnRMZW5ndGgoc291cF9tZXNz
YWdlX2hlYWRlcnNfZ2V0X2NvbnRlbnRfbGVuZ3RoKHJlc3BvbnNlSGVhZGVycykpOwogfQogCiB2
b2lkIFJlc291cmNlUmVzcG9uc2U6OnVwZGF0ZVNvdXBNZXNzYWdlSGVhZGVycyhTb3VwTWVzc2Fn
ZUhlYWRlcnMqIHNvdXBIZWFkZXJzKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmNwcAppbmRleCA1
OWQxMWRjZDgzNWMuLjZkYTdiNDAzNjgwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5jcHAKQEAgLTEx
MiwyOCArMTEyLDI2IEBAIFNvdXBOZXR3b3JrU2Vzc2lvbjo6U291cE5ldHdvcmtTZXNzaW9uKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKICAgICBzdGF0aWMgY29uc3QgaW50IG1heENvbm5lY3Rp
b25zUGVySG9zdCA9IDY7CiAKICAgICBnX29iamVjdF9zZXQobV9zb3VwU2Vzc2lvbi5nZXQoKSwK
LSAgICAgICAgU09VUF9TRVNTSU9OX01BWF9DT05OUywgbWF4Q29ubmVjdGlvbnMsCi0gICAgICAg
IFNPVVBfU0VTU0lPTl9NQVhfQ09OTlNfUEVSX0hPU1QsIG1heENvbm5lY3Rpb25zUGVySG9zdCwK
LSAgICAgICAgU09VUF9TRVNTSU9OX1RJTUVPVVQsIDAsCi0gICAgICAgIFNPVVBfU0VTU0lPTl9J
RExFX1RJTUVPVVQsIDAsCi0gICAgICAgIFNPVVBfU0VTU0lPTl9BRERfRkVBVFVSRV9CWV9UWVBF
LCBTT1VQX1RZUEVfQ09OVEVOVF9TTklGRkVSLAotICAgICAgICBTT1VQX1NFU1NJT05fQUREX0ZF
QVRVUkVfQllfVFlQRSwgU09VUF9UWVBFX0FVVEhfTlRMTSwKKyAgICAgICAgIm1heC1jb25ucyIs
IG1heENvbm5lY3Rpb25zLAorICAgICAgICAibWF4LWNvbm5zLXBlci1ob3N0IiwgbWF4Q29ubmVj
dGlvbnNQZXJIb3N0LAorICAgICAgICAidGltZW91dCIsIDAsCisgICAgICAgICJpZGxlLXRpbWVv
dXQiLCAwLAorICAgICAgICBudWxscHRyKTsKKworICAgIHNvdXBfc2Vzc2lvbl9hZGRfZmVhdHVy
ZV9ieV90eXBlKG1fc291cFNlc3Npb24uZ2V0KCksIFNPVVBfVFlQRV9DT05URU5UX1NOSUZGRVIp
OworICAgIHNvdXBfc2Vzc2lvbl9hZGRfZmVhdHVyZV9ieV90eXBlKG1fc291cFNlc3Npb24uZ2V0
KCksIFNPVVBfVFlQRV9BVVRIX05UTE0pOwogI2lmIFNPVVBfQ0hFQ0tfVkVSU0lPTigyLCA2Nywg
MSkKLSAgICAgICAgU09VUF9TRVNTSU9OX0FERF9GRUFUVVJFX0JZX1RZUEUsIFNPVVBfVFlQRV9I
U1RTX0VORk9SQ0VSLAorICAgIHNvdXBfc2Vzc2lvbl9hZGRfZmVhdHVyZV9ieV90eXBlKG1fc291
cFNlc3Npb24uZ2V0KCksIFNPVVBfVFlQRV9IU1RTX0VORk9SQ0VSKTsKICNlbmRpZgogI2lmIFNP
VVBfQ0hFQ0tfVkVSU0lPTigyLCA2NywgOTApCi0gICAgICAgIFNPVVBfU0VTU0lPTl9BRERfRkVB
VFVSRV9CWV9UWVBFLCBTT1VQX1RZUEVfV0VCU09DS0VUX0VYVEVOU0lPTl9NQU5BR0VSLAorICAg
IHNvdXBfc2Vzc2lvbl9hZGRfZmVhdHVyZV9ieV90eXBlKG1fc291cFNlc3Npb24uZ2V0KCksIFNP
VVBfVFlQRV9XRUJTT0NLRVRfRVhURU5TSU9OX01BTkFHRVIpOwogI2VuZGlmCi0gICAgICAgIG51
bGxwdHIpOwogCiAgICAgaWYgKCFpbml0aWFsQWNjZXB0TGFuZ3VhZ2VzKCkuaXNOdWxsKCkpCiAg
ICAgICAgIHNldEFjY2VwdExhbmd1YWdlcyhpbml0aWFsQWNjZXB0TGFuZ3VhZ2VzKCkpOwogCi0g
ICAgaWYgKHNvdXBfYXV0aF9uZWdvdGlhdGVfc3VwcG9ydGVkKCkgJiYgIW1fc2Vzc2lvbklELmlz
RXBoZW1lcmFsKCkpIHsKLSAgICAgICAgZ19vYmplY3Rfc2V0KG1fc291cFNlc3Npb24uZ2V0KCks
Ci0gICAgICAgICAgICBTT1VQX1NFU1NJT05fQUREX0ZFQVRVUkVfQllfVFlQRSwgU09VUF9UWVBF
X0FVVEhfTkVHT1RJQVRFLAotICAgICAgICAgICAgbnVsbHB0cik7Ci0gICAgfQorICAgIGlmIChz
b3VwX2F1dGhfbmVnb3RpYXRlX3N1cHBvcnRlZCgpICYmICFtX3Nlc3Npb25JRC5pc0VwaGVtZXJh
bCgpKQorICAgICAgICBzb3VwX3Nlc3Npb25fYWRkX2ZlYXR1cmVfYnlfdHlwZShtX3NvdXBTZXNz
aW9uLmdldCgpLCBTT1VQX1RZUEVfQVVUSF9ORUdPVElBVEUpOwogCiAgICAgc2V0dXBMb2dnZXIo
KTsKIH0KQEAgLTE0Niw3ICsxNDQsMTEgQEAgdm9pZCBTb3VwTmV0d29ya1Nlc3Npb246OnNldHVw
TG9nZ2VyKCkKICAgICBpZiAoTG9nTmV0d29yay5zdGF0ZSAhPSBXVEZMb2dDaGFubmVsU3RhdGU6
Ok9uIHx8IHNvdXBfc2Vzc2lvbl9nZXRfZmVhdHVyZShtX3NvdXBTZXNzaW9uLmdldCgpLCBTT1VQ
X1RZUEVfTE9HR0VSKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgR1JlZlB0cjxTb3VwTG9nZ2Vy
PiBsb2dnZXIgPSBhZG9wdEdSZWYoc291cF9sb2dnZXJfbmV3KFNPVVBfTE9HR0VSX0xPR19CT0RZ
LCAtMSkpOworI2lmIFVTRShTT1VQMikKKyAgICBHUmVmUHRyPFNvdXBMb2dnZXI+IGxvZ2dlciA9
IGFkb3B0R1JlZihzb3VwX2xvZ2dlcl9uZXcoU09VUF9MT0dHRVJfTE9HX0hFQURFUlMsIC0xKSk7
CisjZWxzZQorICAgIEdSZWZQdHI8U291cExvZ2dlcj4gbG9nZ2VyID0gYWRvcHRHUmVmKHNvdXBf
bG9nZ2VyX25ldyhTT1VQX0xPR0dFUl9MT0dfSEVBREVSUykpOworI2VuZGlmCiAgICAgc291cF9z
ZXNzaW9uX2FkZF9mZWF0dXJlKG1fc291cFNlc3Npb24uZ2V0KCksIFNPVVBfU0VTU0lPTl9GRUFU
VVJFKGxvZ2dlci5nZXQoKSkpOwogICAgIHNvdXBfbG9nZ2VyX3NldF9wcmludGVyKGxvZ2dlci5n
ZXQoKSwgc291cExvZ1ByaW50ZXIsIG51bGxwdHIsIG51bGxwdHIpOwogI2VuZGlmCkBAIC0yMjUs
OSArMjI3LDEzIEBAIHZvaWQgU291cE5ldHdvcmtTZXNzaW9uOjpjbGVhckhTVFNDYWNoZShXYWxs
VGltZSBtb2RpZmllZFNpbmNlKQogICAgIEdVbmlxdWVQdHI8R0xpc3Q+IHBvbGljaWVzKHNvdXBf
aHN0c19lbmZvcmNlcl9nZXRfcG9saWNpZXMoZW5mb3JjZXIsIEZBTFNFKSk7CiAgICAgZm9yIChH
TGlzdCogaXRlciA9IHBvbGljaWVzLmdldCgpOyBpdGVyICE9IG51bGxwdHI7IGl0ZXIgPSBpdGVy
LT5uZXh0KSB7CiAgICAgICAgIEdVbmlxdWVQdHI8U291cEhTVFNQb2xpY3k+IHBvbGljeShzdGF0
aWNfY2FzdDxTb3VwSFNUU1BvbGljeSo+KGl0ZXItPmRhdGEpKTsKKyNpZiBVU0UoU09VUDIpCiAg
ICAgICAgIGF1dG8gbW9kaWZpZWQgPSBzb3VwX2RhdGVfdG9fdGltZV90KHBvbGljeS5nZXQoKS0+
ZXhwaXJlcykgLSBwb2xpY3kuZ2V0KCktPm1heF9hZ2U7CisjZWxzZQorICAgICAgICBhdXRvIG1v
ZGlmaWVkID0gZ19kYXRlX3RpbWVfdG9fdW5peChzb3VwX2hzdHNfcG9saWN5X2dldF9leHBpcmVz
KHBvbGljeS5nZXQoKSkpIC0gc291cF9oc3RzX3BvbGljeV9nZXRfbWF4X2FnZShwb2xpY3kuZ2V0
KCkpOworI2VuZGlmCiAgICAgICAgIGlmIChtb2RpZmllZCA+PSBtb2RpZmllZFNpbmNlLnNlY29u
ZHNTaW5jZUVwb2NoKCkuc2Vjb25kcygpKSB7Ci0gICAgICAgICAgICBHVW5pcXVlUHRyPFNvdXBI
U1RTUG9saWN5PiBuZXdQb2xpY3koc291cF9oc3RzX3BvbGljeV9uZXcocG9saWN5LmdldCgpLT5k
b21haW4sIFNPVVBfSFNUU19QT0xJQ1lfTUFYX0FHRV9QQVNULCBGQUxTRSkpOworICAgICAgICAg
ICAgR1VuaXF1ZVB0cjxTb3VwSFNUU1BvbGljeT4gbmV3UG9saWN5KHNvdXBfaHN0c19wb2xpY3lf
bmV3KHNvdXBfaHN0c19wb2xpY3lfZ2V0X2RvbWFpbihwb2xpY3kuZ2V0KCkpLCBTT1VQX0hTVFNf
UE9MSUNZX01BWF9BR0VfUEFTVCwgRkFMU0UpKTsKICAgICAgICAgICAgIHNvdXBfaHN0c19lbmZv
cmNlcl9zZXRfcG9saWN5KGVuZm9yY2VyLCBuZXdQb2xpY3kuZ2V0KCkpOwogICAgICAgICB9CiAg
ICAgfQpAQCAtMjc2LDcgKzI4Miw3IEBAIHZvaWQgU291cE5ldHdvcmtTZXNzaW9uOjpzZXRQcm94
eVNldHRpbmdzKFNvdXBOZXR3b3JrUHJveHlTZXR0aW5ncyYmIHNldHRpbmdzKQogICAgIHN3aXRj
aCAobV9wcm94eVNldHRpbmdzLm1vZGUpIHsKICAgICBjYXNlIFNvdXBOZXR3b3JrUHJveHlTZXR0
aW5nczo6TW9kZTo6RGVmYXVsdDogewogICAgICAgICBHUmVmUHRyPEdQcm94eVJlc29sdmVyPiBj
dXJyZW50UmVzb2x2ZXI7Ci0gICAgICAgIGdfb2JqZWN0X2dldChtX3NvdXBTZXNzaW9uLmdldCgp
LCBTT1VQX1NFU1NJT05fUFJPWFlfUkVTT0xWRVIsICZjdXJyZW50UmVzb2x2ZXIub3V0UHRyKCks
IG51bGxwdHIpOworICAgICAgICBnX29iamVjdF9nZXQobV9zb3VwU2Vzc2lvbi5nZXQoKSwgInBy
b3h5LXJlc29sdmVyIiwgJmN1cnJlbnRSZXNvbHZlci5vdXRQdHIoKSwgbnVsbHB0cik7CiAgICAg
ICAgIEdQcm94eVJlc29sdmVyKiBkZWZhdWx0UmVzb2x2ZXIgPSBnX3Byb3h5X3Jlc29sdmVyX2dl
dF9kZWZhdWx0KCk7CiAgICAgICAgIGlmIChjdXJyZW50UmVzb2x2ZXIuZ2V0KCkgPT0gZGVmYXVs
dFJlc29sdmVyKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjk3LDcgKzMwMyw3IEBAIHZvaWQg
U291cE5ldHdvcmtTZXNzaW9uOjpzZXRQcm94eVNldHRpbmdzKFNvdXBOZXR3b3JrUHJveHlTZXR0
aW5ncyYmIHNldHRpbmdzKQogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBnX29iamVjdF9z
ZXQobV9zb3VwU2Vzc2lvbi5nZXQoKSwgU09VUF9TRVNTSU9OX1BST1hZX1JFU09MVkVSLCByZXNv
bHZlci5nZXQoKSwgbnVsbHB0cik7CisgICAgZ19vYmplY3Rfc2V0KG1fc291cFNlc3Npb24uZ2V0
KCksICJwcm94eS1yZXNvbHZlciIsIHJlc29sdmVyLmdldCgpLCBudWxscHRyKTsKICAgICBzb3Vw
X3Nlc3Npb25fYWJvcnQobV9zb3VwU2Vzc2lvbi5nZXQoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwVmVyc2lvbmluZy5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBWZXJzaW9uaW5nLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5lZTA3MWVkOWRiY2UKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cFZlcnNp
b25pbmcuaApAQCAtMCwwICsxLDE0MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBJZ2Fs
aWEgUy5MLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUg
TGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBU
aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxv
bmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwg
d3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5r
bGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPGxpYnNvdXAvc291cC5oPgorCisjaWYg
VVNFKFNPVVAyKQorCitzdGF0aWMgaW5saW5lIGNvbnN0IGNoYXIqCitzb3VwX21lc3NhZ2VfZ2V0
X21ldGhvZChTb3VwTWVzc2FnZSogbWVzc2FnZSkKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFp
bChTT1VQX0lTX01FU1NBR0UobWVzc2FnZSksIG51bGxwdHIpOworICAgIHJldHVybiBtZXNzYWdl
LT5tZXRob2Q7Cit9CisKK3N0YXRpYyBpbmxpbmUgY29uc3QgY2hhcioKK3NvdXBfc2VydmVyX21l
c3NhZ2VfZ2V0X21ldGhvZChTb3VwTWVzc2FnZSogbWVzc2FnZSkKK3sKKyAgICByZXR1cm4gc291
cF9tZXNzYWdlX2dldF9tZXRob2QobWVzc2FnZSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgU291cFN0
YXR1cworc291cF9tZXNzYWdlX2dldF9zdGF0dXMoU291cE1lc3NhZ2UqIG1lc3NhZ2UpCit7Cisg
ICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoU09VUF9JU19NRVNTQUdFKG1lc3NhZ2UpLCBTT1VQX1NU
QVRVU19OT05FKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U291cFN0YXR1cz4obWVzc2FnZS0+
c3RhdHVzX2NvZGUpOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQKK3NvdXBfc2VydmVyX21lc3Nh
Z2Vfc2V0X3N0YXR1cyhTb3VwTWVzc2FnZSogbWVzc2FnZSwgdW5zaWduZWQgc3RhdHVzQ29kZSwg
Y29uc3QgY2hhciogcmVhc29uUGhyYXNlKQoreworICAgIGlmIChyZWFzb25QaHJhc2UpCisgICAg
ICAgIHNvdXBfbWVzc2FnZV9zZXRfc3RhdHVzX2Z1bGwobWVzc2FnZSwgc3RhdHVzQ29kZSwgcmVh
c29uUGhyYXNlKTsKKyAgICBlbHNlCisgICAgICAgIHNvdXBfbWVzc2FnZV9zZXRfc3RhdHVzKG1l
c3NhZ2UsIHN0YXR1c0NvZGUpOworfQorCitzdGF0aWMgaW5saW5lIGNvbnN0IGNoYXIqCitzb3Vw
X21lc3NhZ2VfZ2V0X3JlYXNvbl9waHJhc2UoU291cE1lc3NhZ2UqIG1lc3NhZ2UpCit7CisgICAg
Z19yZXR1cm5fdmFsX2lmX2ZhaWwoU09VUF9JU19NRVNTQUdFKG1lc3NhZ2UpLCBudWxscHRyKTsK
KyAgICByZXR1cm4gbWVzc2FnZS0+cmVhc29uX3BocmFzZTsKK30KKworc3RhdGljIGlubGluZSBT
b3VwTWVzc2FnZUhlYWRlcnMqCitzb3VwX21lc3NhZ2VfZ2V0X3JlcXVlc3RfaGVhZGVycyhTb3Vw
TWVzc2FnZSogbWVzc2FnZSkKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChTT1VQX0lTX01F
U1NBR0UobWVzc2FnZSksIG51bGxwdHIpOworICAgIHJldHVybiBtZXNzYWdlLT5yZXF1ZXN0X2hl
YWRlcnM7Cit9CisKK3N0YXRpYyBpbmxpbmUgU291cE1lc3NhZ2VIZWFkZXJzKgorc291cF9zZXJ2
ZXJfbWVzc2FnZV9nZXRfcmVxdWVzdF9oZWFkZXJzKFNvdXBNZXNzYWdlKiBtZXNzYWdlKQorewor
ICAgIHJldHVybiBzb3VwX21lc3NhZ2VfZ2V0X3JlcXVlc3RfaGVhZGVycyhtZXNzYWdlKTsKK30K
Kworc3RhdGljIGlubGluZSBTb3VwTWVzc2FnZUhlYWRlcnMqCitzb3VwX21lc3NhZ2VfZ2V0X3Jl
c3BvbnNlX2hlYWRlcnMoU291cE1lc3NhZ2UqIG1lc3NhZ2UpCit7CisgICAgZ19yZXR1cm5fdmFs
X2lmX2ZhaWwoU09VUF9JU19NRVNTQUdFKG1lc3NhZ2UpLCBudWxscHRyKTsKKyAgICByZXR1cm4g
bWVzc2FnZS0+cmVzcG9uc2VfaGVhZGVyczsKK30KKworc3RhdGljIGlubGluZSBTb3VwTWVzc2Fn
ZUhlYWRlcnMqCitzb3VwX3NlcnZlcl9tZXNzYWdlX2dldF9yZXNwb25zZV9oZWFkZXJzKFNvdXBN
ZXNzYWdlKiBtZXNzYWdlKQoreworICAgIHJldHVybiBzb3VwX21lc3NhZ2VfZ2V0X3Jlc3BvbnNl
X2hlYWRlcnMobWVzc2FnZSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgU291cE1lc3NhZ2VCb2R5Kgor
c291cF9zZXJ2ZXJfbWVzc2FnZV9nZXRfcmVzcG9uc2VfYm9keShTb3VwTWVzc2FnZSogbWVzc2Fn
ZSkKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChTT1VQX0lTX01FU1NBR0UobWVzc2FnZSks
IG51bGxwdHIpOworICAgIHJldHVybiBtZXNzYWdlLT5yZXNwb25zZV9ib2R5OworfQorCitzdGF0
aWMgaW5saW5lIHZvaWQKK3NvdXBfc2VydmVyX21lc3NhZ2Vfc2V0X3Jlc3BvbnNlKFNvdXBNZXNz
YWdlKiBtZXNzYWdlLCBjb25zdCBjaGFyKiBjb250ZW50VHlwZSwgU291cE1lbW9yeVVzZSBtZW1v
cnlVc2UsIGNvbnN0IGNoYXIqIHJlc3BvbnNlQm9keSwgZ3NpemUgbGVuZ3RoKQoreworICAgIHJl
dHVybiBzb3VwX21lc3NhZ2Vfc2V0X3Jlc3BvbnNlKG1lc3NhZ2UsIGNvbnRlbnRUeXBlLCBtZW1v
cnlVc2UsIHJlc3BvbnNlQm9keSwgbGVuZ3RoKTsKK30KKworc3RhdGljIGlubGluZSBTb3VwVVJJ
Kgorc291cF9zZXJ2ZXJfbWVzc2FnZV9nZXRfdXJpKFNvdXBNZXNzYWdlKiBtZXNzYWdlKQorewor
ICAgIHJldHVybiBzb3VwX21lc3NhZ2VfZ2V0X3VyaShtZXNzYWdlKTsKK30KKworc3RhdGljIGlu
bGluZSBHVGxzQ2VydGlmaWNhdGUqCitzb3VwX21lc3NhZ2VfZ2V0X3Rsc19jZXJ0aWZpY2F0ZShT
b3VwTWVzc2FnZSogbWVzc2FnZSkKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChTT1VQX0lT
X01FU1NBR0UobWVzc2FnZSksIG51bGxwdHIpOworICAgIEdUbHNDZXJ0aWZpY2F0ZSogY2VydGlm
aWNhdGUgPSBudWxscHRyOworICAgIHNvdXBfbWVzc2FnZV9nZXRfaHR0cHNfc3RhdHVzKG1lc3Nh
Z2UsICZjZXJ0aWZpY2F0ZSwgbnVsbHB0cik7CisgICAgcmV0dXJuIGNlcnRpZmljYXRlOworfQor
CitzdGF0aWMgaW5saW5lIEdUbHNDZXJ0aWZpY2F0ZUZsYWdzCitzb3VwX21lc3NhZ2VfZ2V0X3Rs
c19jZXJ0aWZpY2F0ZV9lcnJvcnMoU291cE1lc3NhZ2UqIG1lc3NhZ2UpCit7CisgICAgZ19yZXR1
cm5fdmFsX2lmX2ZhaWwoU09VUF9JU19NRVNTQUdFKG1lc3NhZ2UpLCBzdGF0aWNfY2FzdDxHVGxz
Q2VydGlmaWNhdGVGbGFncz4oMCkpOworICAgIEdUbHNDZXJ0aWZpY2F0ZUZsYWdzIGZsYWdzID0g
c3RhdGljX2Nhc3Q8R1Rsc0NlcnRpZmljYXRlRmxhZ3M+KDApOworICAgIHNvdXBfbWVzc2FnZV9n
ZXRfaHR0cHNfc3RhdHVzKG1lc3NhZ2UsIG51bGxwdHIsICZmbGFncyk7CisgICAgcmV0dXJuIGZs
YWdzOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQKK3NvdXBfc2Vzc2lvbl9zZW5kX2FzeW5jKFNv
dXBTZXNzaW9uKiBzZXNzaW9uLCBTb3VwTWVzc2FnZSogbWVzc2FnZSwgaW50LCBHQ2FuY2VsbGFi
bGUqIGNhbmNlbGxhYmxlLCBHQXN5bmNSZWFkeUNhbGxiYWNrIGNhbGxiYWNrLCBncG9pbnRlciB1
c2VyRGF0YSkKK3sKKyAgICBzb3VwX3Nlc3Npb25fc2VuZF9hc3luYyhzZXNzaW9uLCBtZXNzYWdl
LCBjYW5jZWxsYWJsZSwgY2FsbGJhY2ssIHVzZXJEYXRhKTsKK30KKworc3RhdGljIGlubGluZSB2
b2lkCitzb3VwX3Nlc3Npb25fd2Vic29ja2V0X2Nvbm5lY3RfYXN5bmMoU291cFNlc3Npb24qIHNl
c3Npb24sIFNvdXBNZXNzYWdlKiBtZXNzYWdlLCBjb25zdCBjaGFyKiBvcmlnaW4sIGNoYXIqKiBw
cm90b2NvbHMsIGludCwgR0NhbmNlbGxhYmxlKiBjYW5jZWxsYWJsZSwgR0FzeW5jUmVhZHlDYWxs
YmFjayBjYWxsYmFjaywgZ3BvaW50ZXIgdXNlckRhdGEpCit7CisgICAgc291cF9zZXNzaW9uX3dl
YnNvY2tldF9jb25uZWN0X2FzeW5jKHNlc3Npb24sIG1lc3NhZ2UsIG9yaWdpbiwgcHJvdG9jb2xz
LCBjYW5jZWxsYWJsZSwgY2FsbGJhY2ssIHVzZXJEYXRhKTsKK30KKworc3RhdGljIGlubGluZSB2
b2lkCitzb3VwX2F1dGhfY2FuY2VsKFNvdXBBdXRoKikKK3sKK30KKyNlbmRpZiAvLyBVU0UoU09V
UDIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvVVJM
U291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvVVJMU291cC5j
cHAKaW5kZXggZTg1YmY0MDFmMzAxLi5kNGU1Zjg4ZjJiNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9VUkxTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvVVJMU291cC5jcHAKQEAgLTMwLDYgKzMwLDcgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCisjaWYgVVNFKFNPVVAyKQogVVJMIHNvdXBVUklUb1VS
TChTb3VwVVJJKiBzb3VwVVJJKQogewogICAgIGlmICghc291cFVSSSkKQEAgLTU4LDQgKzU5LDE3
IEBAIEdVbmlxdWVQdHI8U291cFVSST4gdXJsVG9Tb3VwVVJJKGNvbnN0IFVSTCYgdXJsKQogICAg
IHJldHVybiBHVW5pcXVlUHRyPFNvdXBVUkk+KHNvdXBfdXJpX25ldyh1cmwuc3RyaW5nKCkudXRm
OCgpLmRhdGEoKSkpOwogfQogCisjZWxzZSAvLyAhVVNFKFNPVVAyKQorCitVUkwgc291cFVSSVRv
VVJMKEdVcmkqIHVyaSkKK3sKKyAgICByZXR1cm4gdXJpOworfQorCitHUmVmUHRyPEdVcmk+IHVy
bFRvU291cFVSSShjb25zdCBVUkwmIHVybCkKK3sKKyAgICByZXR1cm4gdXJsLmNyZWF0ZUdVcmko
KTsKK30KKyNlbmRpZiAvLyBVU0UoU09VUDIpCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9VUkxTb3VwLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvVVJMU291cC5oCmluZGV4IGMx
ZjQ1MWU4NjlkOS4uM2RlNTQ1MTVjZWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3NvdXAvVVJMU291cC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvc291cC9VUkxTb3VwLmgKQEAgLTI2LDEyICsyNiwxOCBAQAogI3ByYWdtYSBvbmNl
CiAKICNpbmNsdWRlICJHVW5pcXVlUHRyU291cC5oIgorI2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQ
dHIuaD4KIAogbmFtZXNwYWNlIFdURiB7CiBjbGFzcyBVUkw7CiB9CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKKyNpZiBVU0UoU09VUDIpCiBXVEY6OlVSTCBzb3VwVVJJVG9VUkwoU291cFVSSSopOwog
R1VuaXF1ZVB0cjxTb3VwVVJJPiB1cmxUb1NvdXBVUkkoY29uc3QgV1RGOjpVUkwmKTsKKyNlbHNl
CitXVEY6OlVSTCBzb3VwVVJJVG9VUkwoR1VyaSopOworR1JlZlB0cjxHVXJpPiB1cmxUb1NvdXBV
UkkoY29uc3QgV1RGOjpVUkwmKTsKKyNlbmRpZgogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkRyaXZlci9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViRHJpdmVyL0No
YW5nZUxvZwppbmRleCBjYWY0ZDBiZjIwYTUuLjA0MDAzY2U1MzcyMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkRyaXZlci9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkRyaXZlci9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxMyBAQAorMjAyMS0wMi0xOCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2Fy
Y2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW1NPVVBdIEFkZCBzdXBwb3J0IGZvciBsaWJzb3Vw
MworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyMDkz
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzb3Vw
L0hUVFBTZXJ2ZXJTb3VwLmNwcDoKKyAgICAgICAgKFdlYkRyaXZlcjo6SFRUUFNlcnZlcjo6bGlz
dGVuKToKKwogMjAyMC0xMi0xMSAgRG9uIE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnkuY29t
PgogCiAgICAgICAgIFtDTWFrZV0gRGV0ZXJtaW5lIGNvcnJlY3QgdmlzaWJpbGl0eSBmb3IgbGlu
a2VkIGZyYW1ld29ya3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvc291cC9IVFRQU2Vy
dmVyU291cC5jcHAgYi9Tb3VyY2UvV2ViRHJpdmVyL3NvdXAvSFRUUFNlcnZlclNvdXAuY3BwCmlu
ZGV4IGJhN2FlYWZkNDM2NC4uZDk1NWI1NzdlMzI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViRHJp
dmVyL3NvdXAvSFRUUFNlcnZlclNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJEcml2ZXIvc291cC9I
VFRQU2VydmVyU291cC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDE3IElnYWxpYSBTLkwuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcsIDIwMjEgSWdhbGlhIFMuTC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTIsMTMgKzUyLDE0IEBAIHN0YXRp
YyBib29sIHNvdXBTZXJ2ZXJMaXN0ZW4oU291cFNlcnZlciogc2VydmVyLCBjb25zdCBPcHRpb25h
bDxTdHJpbmc+JiBob3N0LCB1CiAKIGJvb2wgSFRUUFNlcnZlcjo6bGlzdGVuKGNvbnN0IE9wdGlv
bmFsPFN0cmluZz4mIGhvc3QsIHVuc2lnbmVkIHBvcnQpCiB7Ci0gICAgbV9zb3VwU2VydmVyID0g
YWRvcHRHUmVmKHNvdXBfc2VydmVyX25ldyhTT1VQX1NFUlZFUl9TRVJWRVJfSEVBREVSLCAiV2Vi
S2l0V2ViRHJpdmVyIiwgbnVsbHB0cikpOworICAgIG1fc291cFNlcnZlciA9IGFkb3B0R1JlZihz
b3VwX3NlcnZlcl9uZXcoInNlcnZlci1oZWFkZXIiLCAiV2ViS2l0V2ViRHJpdmVyIiwgbnVsbHB0
cikpOwogICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKICAgICBpZiAoIXNvdXBTZXJ2
ZXJMaXN0ZW4obV9zb3VwU2VydmVyLmdldCgpLCBob3N0LCBwb3J0LCAmZXJyb3Iub3V0UHRyKCkp
KSB7CiAgICAgICAgIFdURkxvZ0Fsd2F5cygiRmFpbGVkIHRvIHN0YXJ0IEhUVFAgc2VydmVyIGF0
IHBvcnQgJXU6ICVzIiwgcG9ydCwgZXJyb3ItPm1lc3NhZ2UpOwogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogCisjaWYgVVNFKFNPVVAyKQogICAgIHNvdXBfc2VydmVyX2FkZF9oYW5kbGVy
KG1fc291cFNlcnZlci5nZXQoKSwgbnVsbHB0ciwgW10oU291cFNlcnZlciogc2VydmVyLCBTb3Vw
TWVzc2FnZSogbWVzc2FnZSwgY29uc3QgY2hhciogcGF0aCwgR0hhc2hUYWJsZSosIFNvdXBDbGll
bnRDb250ZXh0KiwgZ3BvaW50ZXIgdXNlckRhdGEpIHsKICAgICAgICAgYXV0byogaHR0cFNlcnZl
ciA9IHN0YXRpY19jYXN0PEhUVFBTZXJ2ZXIqPih1c2VyRGF0YSk7CiAgICAgICAgIEdSZWZQdHI8
U291cE1lc3NhZ2U+IHByb3RlY3RlZE1lc3NhZ2UgPSBtZXNzYWdlOwpAQCAtNzYsNiArNzcsMjgg
QEAgYm9vbCBIVFRQU2VydmVyOjpsaXN0ZW4oY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgaG9zdCwg
dW5zaWduZWQgcG9ydCkKICAgICAgICAgICAgICAgICBzb3VwX3NlcnZlcl91bnBhdXNlX21lc3Nh
Z2Uoc2VydmVyLCBtZXNzYWdlLmdldCgpKTsKICAgICAgICAgfSk7CiAgICAgfSwgdGhpcywgbnVs
bHB0cik7CisjZWxzZQorICAgIHNvdXBfc2VydmVyX2FkZF9oYW5kbGVyKG1fc291cFNlcnZlci5n
ZXQoKSwgbnVsbHB0ciwgW10oU291cFNlcnZlciogc2VydmVyLCBTb3VwU2VydmVyTWVzc2FnZSog
bWVzc2FnZSwgY29uc3QgY2hhciogcGF0aCwgR0hhc2hUYWJsZSosIGdwb2ludGVyIHVzZXJEYXRh
KSB7CisgICAgICAgIGF1dG8mIGh0dHBTZXJ2ZXIgPSAqc3RhdGljX2Nhc3Q8SFRUUFNlcnZlcio+
KHVzZXJEYXRhKTsKKyAgICAgICAgR1JlZlB0cjxTb3VwU2VydmVyTWVzc2FnZT4gcHJvdGVjdGVk
TWVzc2FnZSA9IG1lc3NhZ2U7CisgICAgICAgIHNvdXBfc2VydmVyX3BhdXNlX21lc3NhZ2Uoc2Vy
dmVyLCBtZXNzYWdlKTsKKyAgICAgICAgYXV0byogcmVxdWVzdEJvZHkgPSBzb3VwX3NlcnZlcl9t
ZXNzYWdlX2dldF9yZXF1ZXN0X2JvZHkobWVzc2FnZSk7CisgICAgICAgIGh0dHBTZXJ2ZXIubV9y
ZXF1ZXN0SGFuZGxlci5oYW5kbGVSZXF1ZXN0KHsgU3RyaW5nOjpmcm9tVVRGOChzb3VwX3NlcnZl
cl9tZXNzYWdlX2dldF9tZXRob2QobWVzc2FnZSkpLCBTdHJpbmc6OmZyb21VVEY4KHBhdGgpLCBy
ZXF1ZXN0Qm9keS0+ZGF0YSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihyZXF1ZXN0Qm9keS0+bGVuZ3Ro
KSB9LAorICAgICAgICAgICAgW3NlcnZlciwgbWVzc2FnZSA9IFdURk1vdmUocHJvdGVjdGVkTWVz
c2FnZSldKEhUVFBSZXF1ZXN0SGFuZGxlcjo6UmVzcG9uc2UmJiByZXNwb25zZSkgeworICAgICAg
ICAgICAgICAgIHNvdXBfc2VydmVyX21lc3NhZ2Vfc2V0X3N0YXR1cyhtZXNzYWdlLmdldCgpLCBy
ZXNwb25zZS5zdGF0dXNDb2RlLCBudWxscHRyKTsKKyAgICAgICAgICAgICAgICBpZiAoIXJlc3Bv
bnNlLmRhdGEuaXNOdWxsKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gwqc2LjMgUHJvY2Vz
c2luZyBNb2RlbC4KKyAgICAgICAgICAgICAgICAgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlv
L3dlYmRyaXZlci93ZWJkcml2ZXItc3BlYy5odG1sI2Rmbi1zZW5kLWEtcmVzcG9uc2UKKyAgICAg
ICAgICAgICAgICAgICAgYXV0byogcmVzcG9uc2VIZWFkZXJzID0gc291cF9zZXJ2ZXJfbWVzc2Fn
ZV9nZXRfcmVzcG9uc2VfaGVhZGVycyhtZXNzYWdlLmdldCgpKTsKKyAgICAgICAgICAgICAgICAg
ICAgc291cF9tZXNzYWdlX2hlYWRlcnNfYXBwZW5kKHJlc3BvbnNlSGVhZGVycywgIkNvbnRlbnQt
VHlwZSIsIHJlc3BvbnNlLmNvbnRlbnRUeXBlLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAg
ICAgICAgICBzb3VwX21lc3NhZ2VfaGVhZGVyc19hcHBlbmQocmVzcG9uc2VIZWFkZXJzLCAiQ2Fj
aGUtQ29udHJvbCIsICJuby1jYWNoZSIpOworICAgICAgICAgICAgICAgICAgICBhdXRvKiByZXNw
b25zZUJvZHkgPSBzb3VwX3NlcnZlcl9tZXNzYWdlX2dldF9yZXNwb25zZV9ib2R5KG1lc3NhZ2Uu
Z2V0KCkpOworICAgICAgICAgICAgICAgICAgICBzb3VwX21lc3NhZ2VfYm9keV9hcHBlbmQocmVz
cG9uc2VCb2R5LCBTT1VQX01FTU9SWV9DT1BZLCByZXNwb25zZS5kYXRhLmRhdGEoKSwgcmVzcG9u
c2UuZGF0YS5sZW5ndGgoKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHNv
dXBfc2VydmVyX3VucGF1c2VfbWVzc2FnZShzZXJ2ZXIsIG1lc3NhZ2UuZ2V0KCkpOworICAgICAg
ICB9KTsKKyAgICB9LCB0aGlzLCBudWxscHRyKTsKKyNlbmRpZgogCiAgICAgcmV0dXJuIHRydWU7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCmluZGV4IDE5ZDZlNTg0Zjc3Zi4uZWU0YzQ0OWI2ODQ1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAt
MSwzICsxLDM2IEBACisyMDIxLTAyLTE4ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFA
aWdhbGlhLmNvbT4KKworICAgICAgICBbU09VUF0gQWRkIHN1cHBvcnQgZm9yIGxpYnNvdXAzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjIwOTMKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtEYXRhVGFza1NvdXA6OmNyZWF0ZVJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrRGF0YVRhc2tTb3VwOjpjbGVhclJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
RGF0YVRhc2tTb3VwOjpyZXN1bWUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tT
b3VwOjpjYW5jZWwpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tTb3VwOjp0bHND
b25uZWN0aW9uQWNjZXB0Q2VydGlmaWNhdGVDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtEYXRhVGFza1NvdXA6OmFjY2VwdENlcnRpZmljYXRlQ2FsbGJhY2spOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tTb3VwOjphY2NlcHRDZXJ0aWZpY2F0ZSk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza1NvdXA6OmF1dGhlbnRpY2F0ZUNhbGxiYWNrKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrU291cDo6YXV0aGVudGljYXRlKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrU291cDo6Y29udGludWVBdXRoZW50aWNhdGUpOgor
ICAgICAgICAoV2ViS2l0OjpzaG91bGRSZWRpcmVjdEFzR0VUKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0RhdGFUYXNrU291cDo6Y29udGludWVIVFRQUmVkaXJlY3Rpb24pOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tTb3VwOjpkaWRHZXRIZWFkZXJzKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya0RhdGFUYXNrU291cDo6d3JvdGVCb2R5RGF0YUNhbGxiYWNrKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrU291cDo6ZGlkV3JpdGVCb2R5RGF0YSk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza1NvdXA6Om5ldHdvcmtFdmVudCk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza1NvdXA6OmhzdHNFbmZvcmNlZCk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza1NvdXA6OmRpZFJlc3RhcnQpOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5oOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL3NvdXAvTmV0d29ya1Nlc3Npb25Tb3VwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Nlc3Npb25Tb3VwOjpjcmVhdGVXZWJTb2NrZXRUYXNrKToKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9zb3VwL1dlYlNvY2tldFRhc2tTb3VwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6aXND
b25uZWN0aW9uRXJyb3IpOgorICAgICAgICAoV2ViS2l0OjpXZWJTb2NrZXRUYXNrOjpXZWJTb2Nr
ZXRUYXNrKToKKwogMjAyMS0wMi0xNyAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGln
YWxpYS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTihyMjcyNjM2KSBbR1RLXSBDcmFzaCBhbmQg
ZmFpbHVyZXMgaW4gQVBJIHRlc3QgL1dlYktpdDJHdGsvVGVzdFJlc291cmNlcwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAu
Y3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1Nv
dXAuY3BwCmluZGV4IDViYTJiMWFmOTM2Mi4uNDM1OTgwZWI4ZWZmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAu
Y3BwCkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1Nob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9Tb3VwTmV0d29ya1Nlc3Npb24uaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL1NvdXBWZXJzaW9uaW5nLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0RW5jb2RpbmcuaD4K
ICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL1J1bkxvb3BT
b3VyY2VQcmlvcml0eS5oPgpAQCAtMTU3LDIzICsxNTgsMzYgQEAgdm9pZCBOZXR3b3JrRGF0YVRh
c2tTb3VwOjpjcmVhdGVSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFdhc0Jsb2Nr
aW5nQ28KICNpZiBTT1VQX0NIRUNLX1ZFUlNJT04oMiwgNjcsIDEpCiAgICAgaWYgKChtX2N1cnJl
bnRSZXF1ZXN0LnVybCgpLnByb3RvY29sSXMoImh0dHBzIikgJiYgIXNob3VsZEFsbG93SFNUU1Bv
bGljeVNldHRpbmcoKSkgfHwgKG1fY3VycmVudFJlcXVlc3QudXJsKCkucHJvdG9jb2xJcygiaHR0
cCIpICYmICFzaG91bGRBbGxvd0hTVFNQcm90b2NvbFVwZ3JhZGUoKSkpCiAgICAgICAgIHNvdXBf
bWVzc2FnZV9kaXNhYmxlX2ZlYXR1cmUobV9zb3VwTWVzc2FnZS5nZXQoKSwgU09VUF9UWVBFX0hT
VFNfRU5GT1JDRVIpOwotICAgIGVsc2UKKyAgICBlbHNlIHsKKyNpZiBVU0UoU09VUDIpCiAgICAg
ICAgIGdfc2lnbmFsX2Nvbm5lY3Qoc291cF9zZXNzaW9uX2dldF9mZWF0dXJlKHN0YXRpY19jYXN0
PE5ldHdvcmtTZXNzaW9uU291cCY+KCptX3Nlc3Npb24pLnNvdXBTZXNzaW9uKCksIFNPVVBfVFlQ
RV9IU1RTX0VORk9SQ0VSKSwgImhzdHMtZW5mb3JjZWQiLCBHX0NBTExCQUNLKGhzdHNFbmZvcmNl
ZCksIHRoaXMpOworI2Vsc2UKKyAgICAgICAgZ19zaWduYWxfY29ubmVjdChtX3NvdXBNZXNzYWdl
LmdldCgpLCAiaHN0cy1lbmZvcmNlZCIsIEdfQ0FMTEJBQ0soaHN0c0VuZm9yY2VkKSwgdGhpcyk7
CisjZW5kaWYKKyAgICB9CiAjZW5kaWYKIAogICAgIC8vIE1ha2Ugc3VyZSB3ZSBoYXZlIGFuIEFj
Y2VwdCBoZWFkZXIgZm9yIHN1YnJlc291cmNlczsgc29tZSBzaXRlcyB3YW50IHRoaXMgdG8gc2Vy
dmUgc29tZSBvZiB0aGVpciBzdWJyZXNvdXJjZXMuCi0gICAgaWYgKCFzb3VwX21lc3NhZ2VfaGVh
ZGVyc19nZXRfb25lKG1fc291cE1lc3NhZ2UtPnJlcXVlc3RfaGVhZGVycywgIkFjY2VwdCIpKQot
ICAgICAgICBzb3VwX21lc3NhZ2VfaGVhZGVyc19hcHBlbmQobV9zb3VwTWVzc2FnZS0+cmVxdWVz
dF9oZWFkZXJzLCAiQWNjZXB0IiwgIiovKiIpOworICAgIGF1dG8qIHJlcXVlc3RIZWFkZXJzID0g
c291cF9tZXNzYWdlX2dldF9yZXF1ZXN0X2hlYWRlcnMobV9zb3VwTWVzc2FnZS5nZXQoKSk7Cisg
ICAgaWYgKCFzb3VwX21lc3NhZ2VfaGVhZGVyc19nZXRfb25lKHJlcXVlc3RIZWFkZXJzLCAiQWNj
ZXB0IikpCisgICAgICAgIHNvdXBfbWVzc2FnZV9oZWFkZXJzX2FwcGVuZChyZXF1ZXN0SGVhZGVy
cywgIkFjY2VwdCIsICIqLyoiKTsKIAorI2lmIFVTRShTT1VQMikKICAgICAvLyBJbiB0aGUgY2Fz
ZSBvZiBYSFIgLnNlbmQoKSBhbmQgLnNlbmQoIiIpIGV4cGxpY2l0bHkgdGVsbCBsaWJzb3VwIHRv
IHNlbmQgYSB6ZXJvIGNvbnRlbnQtbGVuZ2h0IGhlYWRlcgogICAgIC8vIGZvciBjb25zaXN0ZW5j
eSB3aXRoIG90aGVyIFVBIGltcGxlbWVudGF0aW9ucyBsaWtlIEZpcmVmb3guIEl0J3MgZG9uZSBp
biB0aGUgYmFja2VuZCBoZXJlIGluc3RlYWQgb2YKICAgICAvLyBpbiBYSFIgY29kZSBzaW5jZSBp
biBYSFIgQ09SUyBjaGVja2luZyBwcmV2ZW50cyB1cyBmcm9tIHRoaXMga2luZCBvZiBsYXRlIGhl
YWRlciBtYW5pcHVsYXRpb24uCiAgICAgaWYgKChtX3NvdXBNZXNzYWdlLT5tZXRob2QgPT0gU09V
UF9NRVRIT0RfUE9TVCB8fCBtX3NvdXBNZXNzYWdlLT5tZXRob2QgPT0gU09VUF9NRVRIT0RfUFVU
KSAmJiAhbV9zb3VwTWVzc2FnZS0+cmVxdWVzdF9ib2R5LT5sZW5ndGgpCiAgICAgICAgIHNvdXBf
bWVzc2FnZV9oZWFkZXJzX3NldF9jb250ZW50X2xlbmd0aChtX3NvdXBNZXNzYWdlLT5yZXF1ZXN0
X2hlYWRlcnMsIDApOworI2VuZGlmCiAKICAgICBnX3NpZ25hbF9jb25uZWN0KG1fc291cE1lc3Nh
Z2UuZ2V0KCksICJnb3QtaGVhZGVycyIsIEdfQ0FMTEJBQ0soZ290SGVhZGVyc0NhbGxiYWNrKSwg
dGhpcyk7CiAgICAgZ19zaWduYWxfY29ubmVjdChtX3NvdXBNZXNzYWdlLmdldCgpLCAid3JvdGUt
Ym9keS1kYXRhIiwgR19DQUxMQkFDSyh3cm90ZUJvZHlEYXRhQ2FsbGJhY2spLCB0aGlzKTsKKyNp
ZiBVU0UoU09VUDIpCiAgICAgZ19zaWduYWxfY29ubmVjdChzdGF0aWNfY2FzdDxOZXR3b3JrU2Vz
c2lvblNvdXAmPigqbV9zZXNzaW9uKS5zb3VwU2Vzc2lvbigpLCAiYXV0aGVudGljYXRlIiwgIEdf
Q0FMTEJBQ0soYXV0aGVudGljYXRlQ2FsbGJhY2spLCB0aGlzKTsKKyNlbHNlCisgICAgZ19zaWdu
YWxfY29ubmVjdChtX3NvdXBNZXNzYWdlLmdldCgpLCAiYXV0aGVudGljYXRlIiwgR19DQUxMQkFD
SyhhdXRoZW50aWNhdGVDYWxsYmFjayksIHRoaXMpOworICAgIGdfc2lnbmFsX2Nvbm5lY3QobV9z
b3VwTWVzc2FnZS5nZXQoKSwgImFjY2VwdC1jZXJ0aWZpY2F0ZSIsIEdfQ0FMTEJBQ0soYWNjZXB0
Q2VydGlmaWNhdGVDYWxsYmFjayksIHRoaXMpOworI2VuZGlmCiAgICAgZ19zaWduYWxfY29ubmVj
dChtX3NvdXBNZXNzYWdlLmdldCgpLCAibmV0d29yay1ldmVudCIsIEdfQ0FMTEJBQ0sobmV0d29y
a0V2ZW50Q2FsbGJhY2spLCB0aGlzKTsKICAgICBnX3NpZ25hbF9jb25uZWN0KG1fc291cE1lc3Nh
Z2UuZ2V0KCksICJyZXN0YXJ0ZWQiLCBHX0NBTExCQUNLKHJlc3RhcnRlZENhbGxiYWNrKSwgdGhp
cyk7CiAgICAgZ19zaWduYWxfY29ubmVjdChtX3NvdXBNZXNzYWdlLmdldCgpLCAic3RhcnRpbmci
LCBHX0NBTExCQUNLKHN0YXJ0aW5nQ2FsbGJhY2spLCB0aGlzKTsKQEAgLTIwMSwxNCArMjE1LDE4
IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6Y2xlYXJSZXF1ZXN0KCkKICAgICBtX2lzQmxv
Y2tpbmdDb29raWVzID0gZmFsc2U7CiAgICAgaWYgKG1fc291cE1lc3NhZ2UpIHsKICAgICAgICAg
Z19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9tYXRjaGVkKG1fc291cE1lc3NhZ2UuZ2V0KCks
IEdfU0lHTkFMX01BVENIX0RBVEEsIDAsIDAsIG51bGxwdHIsIG51bGxwdHIsIHRoaXMpOworI2lm
IFVTRShTT1VQMikKICAgICAgICAgaWYgKG1fc2Vzc2lvbikKICAgICAgICAgICAgIHNvdXBfc2Vz
c2lvbl9jYW5jZWxfbWVzc2FnZShzdGF0aWNfY2FzdDxOZXR3b3JrU2Vzc2lvblNvdXAmPigqbV9z
ZXNzaW9uKS5zb3VwU2Vzc2lvbigpLCBtX3NvdXBNZXNzYWdlLmdldCgpLCBTT1VQX1NUQVRVU19D
QU5DRUxMRUQpOworI2VuZGlmCiAgICAgICAgIG1fc291cE1lc3NhZ2UgPSBudWxscHRyOwogICAg
IH0KICAgICBpZiAobV9zZXNzaW9uKSB7CisjaWYgVVNFKFNPVVAyKQogICAgICAgICBnX3NpZ25h
bF9oYW5kbGVyc19kaXNjb25uZWN0X21hdGNoZWQoc3RhdGljX2Nhc3Q8TmV0d29ya1Nlc3Npb25T
b3VwJj4oKm1fc2Vzc2lvbikuc291cFNlc3Npb24oKSwgR19TSUdOQUxfTUFUQ0hfREFUQSwgMCwg
MCwgbnVsbHB0ciwgbnVsbHB0ciwgdGhpcyk7CiAjaWYgU09VUF9DSEVDS19WRVJTSU9OKDIsIDY3
LCAxKQogICAgICAgICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X2J5X2RhdGEoc291cF9z
ZXNzaW9uX2dldF9mZWF0dXJlKHN0YXRpY19jYXN0PE5ldHdvcmtTZXNzaW9uU291cCY+KCptX3Nl
c3Npb24pLnNvdXBTZXNzaW9uKCksIFNPVVBfVFlQRV9IU1RTX0VORk9SQ0VSKSwgdGhpcyk7Cisj
ZW5kaWYKICNlbmRpZgogICAgIH0KIH0KQEAgLTIyOSw3ICsyNDcsNyBAQCB2b2lkIE5ldHdvcmtE
YXRhVGFza1NvdXA6OnJlc3VtZSgpCiAgICAgICAgIC8vIFdlIG5lZWQgdG8gcHJvdGVjdCBjYW5j
ZWxsYWJsZSBoZXJlLCBiZWNhdXNlIHNvdXBfc2Vzc2lvbl9zZW5kX2FzeW5jIHVzZXMgaXQgYWZ0
ZXIgZW1pdHRpbmcgU291cFNlc3Npb246OnJlcXVlc3QtcXVldWVkLCBhbmQgd2UKICAgICAgICAg
Ly8gbWlnaHQgY2FuY2VsIHRoZSBvcGVyYXRpb24gaW4gYSBmZWF0dXJlIGNhbGxiYWNrIGVtaXR0
ZWQgb24gcmVxdWVzdC1xdWV1ZWQsIGZvciBleGFtcGxlIGhzdHMtZW5mb3JjZWQuCiAgICAgICAg
IEdSZWZQdHI8R0NhbmNlbGxhYmxlPiBwcm90ZWN0Q2FuY2VsbGFibGUobV9jYW5jZWxsYWJsZSk7
Ci0gICAgICAgIHNvdXBfc2Vzc2lvbl9zZW5kX2FzeW5jKHN0YXRpY19jYXN0PE5ldHdvcmtTZXNz
aW9uU291cCY+KCptX3Nlc3Npb24pLnNvdXBTZXNzaW9uKCksIG1fc291cE1lc3NhZ2UuZ2V0KCks
IG1fY2FuY2VsbGFibGUuZ2V0KCksCisgICAgICAgIHNvdXBfc2Vzc2lvbl9zZW5kX2FzeW5jKHN0
YXRpY19jYXN0PE5ldHdvcmtTZXNzaW9uU291cCY+KCptX3Nlc3Npb24pLnNvdXBTZXNzaW9uKCks
IG1fc291cE1lc3NhZ2UuZ2V0KCksIFJ1bkxvb3BTb3VyY2VQcmlvcml0eTo6QXN5bmNJT05ldHdv
cmssIG1fY2FuY2VsbGFibGUuZ2V0KCksCiAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PEdB
c3luY1JlYWR5Q2FsbGJhY2s+KHNlbmRSZXF1ZXN0Q2FsbGJhY2spLCBuZXcgU2VuZFJlcXVlc3RE
YXRhKHsgbV9zb3VwTWVzc2FnZSwgV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSB9KSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CkBAIC0yODYsOCArMzA0LDEwIEBAIHZvaWQgTmV0d29ya0RhdGFUYXNr
U291cDo6Y2FuY2VsKCkKIAogICAgIG1fc3RhdGUgPSBTdGF0ZTo6Q2FuY2VsaW5nOwogCisjaWYg
VVNFKFNPVVAyKQogICAgIGlmIChtX3NvdXBNZXNzYWdlKQogICAgICAgICBzb3VwX3Nlc3Npb25f
Y2FuY2VsX21lc3NhZ2Uoc3RhdGljX2Nhc3Q8TmV0d29ya1Nlc3Npb25Tb3VwJj4oKm1fc2Vzc2lv
bikuc291cFNlc3Npb24oKSwgbV9zb3VwTWVzc2FnZS5nZXQoKSwgU09VUF9TVEFUVVNfQ0FOQ0VM
TEVEKTsKKyNlbmRpZgogCiAgICAgZ19jYW5jZWxsYWJsZV9jYW5jZWwobV9jYW5jZWxsYWJsZS5n
ZXQoKSk7CiAKQEAgLTQ0MCw2ICs0NjAsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6OmRp
c3BhdGNoRGlkQ29tcGxldGVXaXRoRXJyb3IoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJybwogICAg
IG1fY2xpZW50LT5kaWRDb21wbGV0ZVdpdGhFcnJvcihlcnJvciwgbV9uZXR3b3JrTG9hZE1ldHJp
Y3MpOwogfQogCisjaWYgVVNFKFNPVVAyKQogZ2Jvb2xlYW4gTmV0d29ya0RhdGFUYXNrU291cDo6
dGxzQ29ubmVjdGlvbkFjY2VwdENlcnRpZmljYXRlQ2FsbGJhY2soR1Rsc0Nvbm5lY3Rpb24qIGNv
bm5lY3Rpb24sIEdUbHNDZXJ0aWZpY2F0ZSogY2VydGlmaWNhdGUsIEdUbHNDZXJ0aWZpY2F0ZUZs
YWdzIGVycm9ycywgTmV0d29ya0RhdGFUYXNrU291cCogdGFzaykKIHsKICAgICBpZiAodGFzay0+
c3RhdGUoKSA9PSBTdGF0ZTo6Q2FuY2VsaW5nIHx8IHRhc2stPnN0YXRlKCkgPT0gU3RhdGU6OkNv
bXBsZXRlZCB8fCAhdGFzay0+bV9jbGllbnQpIHsKQEAgLTQ1MSwxMCArNDcyLDIxIEBAIGdib29s
ZWFuIE5ldHdvcmtEYXRhVGFza1NvdXA6OnRsc0Nvbm5lY3Rpb25BY2NlcHRDZXJ0aWZpY2F0ZUNh
bGxiYWNrKEdUbHNDb25uZWN0CiAgICAgaWYgKGNvbm5lY3Rpb25NZXNzYWdlICE9IHRhc2stPm1f
c291cE1lc3NhZ2UuZ2V0KCkpCiAgICAgICAgIHJldHVybiBGQUxTRTsKIAotICAgIHJldHVybiB0
YXNrLT50bHNDb25uZWN0aW9uQWNjZXB0Q2VydGlmaWNhdGUoY2VydGlmaWNhdGUsIGVycm9ycyk7
CisgICAgcmV0dXJuIHRhc2stPmFjY2VwdENlcnRpZmljYXRlKGNlcnRpZmljYXRlLCBlcnJvcnMp
OwogfQorI2Vsc2UKK2dib29sZWFuIE5ldHdvcmtEYXRhVGFza1NvdXA6OmFjY2VwdENlcnRpZmlj
YXRlQ2FsbGJhY2soU291cE1lc3NhZ2UqIG1lc3NhZ2UsIEdUbHNDZXJ0aWZpY2F0ZSogY2VydGlm
aWNhdGUsIEdUbHNDZXJ0aWZpY2F0ZUZsYWdzIGVycm9ycywgTmV0d29ya0RhdGFUYXNrU291cCog
dGFzaykKK3sKKyAgICBpZiAodGFzay0+c3RhdGUoKSA9PSBTdGF0ZTo6Q2FuY2VsaW5nIHx8IHRh
c2stPnN0YXRlKCkgPT0gU3RhdGU6OkNvbXBsZXRlZCB8fCAhdGFzay0+bV9jbGllbnQpCisgICAg
ICAgIHJldHVybiBGQUxTRTsKKworICAgIEFTU0VSVCh0YXNrLT5tX3NvdXBNZXNzYWdlLmdldCgp
ID09IHNvdXBNZXNzYWdlKTsKKworICAgIHJldHVybiB0YXNrLT5hY2NlcHRDZXJ0aWZpY2F0ZShj
ZXJ0aWZpY2F0ZSwgZXJyb3JzKTsKK30KKyNlbmRpZgogCi1ib29sIE5ldHdvcmtEYXRhVGFza1Nv
dXA6OnRsc0Nvbm5lY3Rpb25BY2NlcHRDZXJ0aWZpY2F0ZShHVGxzQ2VydGlmaWNhdGUqIGNlcnRp
ZmljYXRlLCBHVGxzQ2VydGlmaWNhdGVGbGFncyB0bHNFcnJvcnMpCitib29sIE5ldHdvcmtEYXRh
VGFza1NvdXA6OmFjY2VwdENlcnRpZmljYXRlKEdUbHNDZXJ0aWZpY2F0ZSogY2VydGlmaWNhdGUs
IEdUbHNDZXJ0aWZpY2F0ZUZsYWdzIHRsc0Vycm9ycykKIHsKICAgICBBU1NFUlQobV9zb3VwTWVz
c2FnZSk7CiAgICAgVVJMIHVybCA9IHNvdXBVUklUb1VSTChzb3VwX21lc3NhZ2VfZ2V0X3VyaSht
X3NvdXBNZXNzYWdlLmdldCgpKSk7CkBAIC01MTUsNiArNTQ3LDcgQEAgdm9pZCBOZXR3b3JrRGF0
YVRhc2tTb3VwOjphcHBseUF1dGhlbnRpY2F0aW9uVG9SZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCkKICAgICBtX3Bhc3N3b3JkID0gU3RyaW5nKCk7CiB9CiAKKyNpZiBVU0UoU09VUDIp
CiB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6OmF1dGhlbnRpY2F0ZUNhbGxiYWNrKFNvdXBTZXNz
aW9uKiBzZXNzaW9uLCBTb3VwTWVzc2FnZSogc291cE1lc3NhZ2UsIFNvdXBBdXRoKiBzb3VwQXV0
aCwgZ2Jvb2xlYW4gcmV0cnlpbmcsIE5ldHdvcmtEYXRhVGFza1NvdXAqIHRhc2spCiB7CiAgICAg
QVNTRVJUKHNlc3Npb24gPT0gc3RhdGljX2Nhc3Q8TmV0d29ya1Nlc3Npb25Tb3VwJj4oKnRhc2st
Pm1fc2Vzc2lvbikuc291cFNlc3Npb24oKSk7CkBAIC01MzMsNiArNTY2LDE5IEBAIHZvaWQgTmV0
d29ya0RhdGFUYXNrU291cDo6YXV0aGVudGljYXRlQ2FsbGJhY2soU291cFNlc3Npb24qIHNlc3Np
b24sIFNvdXBNZXNzYWdlCiAKICAgICB0YXNrLT5hdXRoZW50aWNhdGUoQXV0aGVudGljYXRpb25D
aGFsbGVuZ2Uoc291cE1lc3NhZ2UsIHNvdXBBdXRoLCByZXRyeWluZykpOwogfQorI2Vsc2UKK2di
b29sZWFuIE5ldHdvcmtEYXRhVGFza1NvdXA6OmF1dGhlbnRpY2F0ZUNhbGxiYWNrKFNvdXBNZXNz
YWdlKiBzb3VwTWVzc2FnZSwgU291cEF1dGgqIHNvdXBBdXRoLCBnYm9vbGVhbiByZXRyeWluZywg
TmV0d29ya0RhdGFUYXNrU291cCogdGFzaykKK3sKKyAgICBpZiAodGFzay0+c3RhdGUoKSA9PSBT
dGF0ZTo6Q2FuY2VsaW5nIHx8IHRhc2stPnN0YXRlKCkgPT0gU3RhdGU6OkNvbXBsZXRlZCB8fCAh
dGFzay0+bV9jbGllbnQpIHsKKyAgICAgICAgdGFzay0+Y2xlYXJSZXF1ZXN0KCk7CisgICAgICAg
IHJldHVybiBGQUxTRTsKKyAgICB9CisgICAgQVNTRVJUKHRhc2stPm1fc291cE1lc3NhZ2UuZ2V0
KCkgPT0gc291cE1lc3NhZ2UpOworCisgICAgdGFzay0+YXV0aGVudGljYXRlKEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlKHNvdXBNZXNzYWdlLCBzb3VwQXV0aCwgcmV0cnlpbmcpKTsKKyAgICByZXR1
cm4gVFJVRTsKK30KKyNlbmRpZgogCiBzdGF0aWMgaW5saW5lIGJvb2wgaXNBdXRoZW50aWNhdGlv
bkZhaWx1cmVTdGF0dXNDb2RlKGludCBodHRwU3RhdHVzQ29kZSkKIHsKQEAgLTU2NSw3ICs2MTEs
OSBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6OmF1dGhlbnRpY2F0ZShBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSYmIGNoYWxsZW5nZSkKICAgICAgICAgfQogICAgIH0KIAorI2lmIFVTRShTT1VQ
MikKICAgICBzb3VwX3Nlc3Npb25fcGF1c2VfbWVzc2FnZShzdGF0aWNfY2FzdDxOZXR3b3JrU2Vz
c2lvblNvdXAmPigqbV9zZXNzaW9uKS5zb3VwU2Vzc2lvbigpLCBjaGFsbGVuZ2Uuc291cE1lc3Nh
Z2UoKSk7CisjZW5kaWYKIAogICAgIC8vIFdlIGNvdWxkIGFsc28gZG8gdGhpcyBiZWZvcmUgd2Ug
ZXZlbiBzdGFydCB0aGUgcmVxdWVzdCwgYnV0IHRoYXQgd291bGQgYmUgYXQgdGhlIGV4cGVuc2UK
ICAgICAvLyBvZiBhbGwgcmVxdWVzdCBsYXRlbmN5LCB2ZXJzdXMgYSBvbmUtdGltZSBsYXRlbmN5
IGZvciB0aGUgc21hbGwgc3Vic2V0IG9mIHJlcXVlc3RzIHRoYXQKQEAgLTYxNyw5ICs2NjUsMTIg
QEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjpjb250aW51ZUF1dGhlbnRpY2F0ZShBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSYmIGNoYWxsZW4KICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAg
c291cF9hdXRoX2F1dGhlbnRpY2F0ZShjaGFsbGVuZ2Uuc291cEF1dGgoKSwgY3JlZGVudGlhbC51
c2VyKCkudXRmOCgpLmRhdGEoKSwgY3JlZGVudGlhbC5wYXNzd29yZCgpLnV0ZjgoKS5kYXRhKCkp
OwotICAgICAgICB9CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgc291cF9hdXRoX2NhbmNl
bChjaGFsbGVuZ2Uuc291cEF1dGgoKSk7CiAKKyNpZiBVU0UoU09VUDIpCiAgICAgICAgIHNvdXBf
c2Vzc2lvbl91bnBhdXNlX21lc3NhZ2Uoc3RhdGljX2Nhc3Q8TmV0d29ya1Nlc3Npb25Tb3VwJj4o
Km1fc2Vzc2lvbikuc291cFNlc3Npb24oKSwgY2hhbGxlbmdlLnNvdXBNZXNzYWdlKCkpOworI2Vu
ZGlmCiAgICAgfSk7CiB9CiAKQEAgLTY1OCwyMCArNzA5LDIzIEBAIHZvaWQgTmV0d29ya0RhdGFU
YXNrU291cDo6ZGlkRmluaXNoU2tpcElucHV0U3RyZWFtRm9yUmVkaXJlY3Rpb24oKQogCiBzdGF0
aWMgYm9vbCBzaG91bGRSZWRpcmVjdEFzR0VUKFNvdXBNZXNzYWdlKiBtZXNzYWdlLCBib29sIGNy
b3NzT3JpZ2luKQogewotICAgIGlmIChtZXNzYWdlLT5tZXRob2QgPT0gU09VUF9NRVRIT0RfR0VU
IHx8IG1lc3NhZ2UtPm1ldGhvZCA9PSBTT1VQX01FVEhPRF9IRUFEKQorICAgIGF1dG8gbWV0aG9k
ID0gc291cF9tZXNzYWdlX2dldF9tZXRob2QobWVzc2FnZSk7CisgICAgaWYgKG1ldGhvZCA9PSBT
T1VQX01FVEhPRF9HRVQgfHwgbWV0aG9kID09IFNPVVBfTUVUSE9EX0hFQUQpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgIHN3aXRjaCAobWVzc2FnZS0+c3RhdHVzX2NvZGUpIHsKKyAgICBz
d2l0Y2ggKHNvdXBfbWVzc2FnZV9nZXRfc3RhdHVzKG1lc3NhZ2UpKSB7CiAgICAgY2FzZSBTT1VQ
X1NUQVRVU19TRUVfT1RIRVI6CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGNhc2UgU09VUF9T
VEFUVVNfRk9VTkQ6CiAgICAgY2FzZSBTT1VQX1NUQVRVU19NT1ZFRF9QRVJNQU5FTlRMWToKLSAg
ICAgICAgaWYgKG1lc3NhZ2UtPm1ldGhvZCA9PSBTT1VQX01FVEhPRF9QT1NUKQorICAgICAgICBp
ZiAobWV0aG9kID09IFNPVVBfTUVUSE9EX1BPU1QpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CiAgICAgfQogCi0g
ICAgaWYgKGNyb3NzT3JpZ2luICYmIG1lc3NhZ2UtPm1ldGhvZCA9PSBTT1VQX01FVEhPRF9ERUxF
VEUpCisgICAgaWYgKGNyb3NzT3JpZ2luICYmIG1ldGhvZCA9PSBTT1VQX01FVEhPRF9ERUxFVEUp
CiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNzAzLDcgKzc1
NywxMSBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6OmNvbnRpbnVlSFRUUFJlZGlyZWN0aW9u
KCkKIAogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBtYXhSZWRpcmVjdHMgPSAyMDsKICAgICBp
ZiAobV9yZWRpcmVjdENvdW50KysgPiBtYXhSZWRpcmVjdHMpIHsKKyNpZiBVU0UoU09VUDIpCiAg
ICAgICAgIGRpZEZhaWwoUmVzb3VyY2VFcnJvcjo6dHJhbnNwb3J0RXJyb3IobV9jdXJyZW50UmVx
dWVzdC51cmwoKSwgU09VUF9TVEFUVVNfVE9PX01BTllfUkVESVJFQ1RTLCAiVG9vIG1hbnkgcmVk
aXJlY3RzIikpOworI2Vsc2UKKyAgICAgICAgZGlkRmFpbChSZXNvdXJjZUVycm9yKGdfcXVhcmtf
dG9fc3RyaW5nKFNPVVBfU0VTU0lPTl9FUlJPUiksIFNPVVBfU0VTU0lPTl9FUlJPUl9UT09fTUFO
WV9SRURJUkVDVFMsIG1fY3VycmVudFJlcXVlc3QudXJsKCksIFN0cmluZzo6ZnJvbVVURjgoIlRv
byBtYW55IHJlZGlyZWN0cyIpKSk7CisjZW5kaWYKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApA
QCAtNzI0LDcgKzc4Miw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6Y29udGludWVIVFRQ
UmVkaXJlY3Rpb24oKQogICAgIGJvb2wgaXNDcm9zc09yaWdpbiA9ICFwcm90b2NvbEhvc3RBbmRQ
b3J0QXJlRXF1YWwobV9jdXJyZW50UmVxdWVzdC51cmwoKSwgcmVxdWVzdC51cmwoKSk7CiAgICAg
aWYgKCFlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShyZXF1ZXN0Lmh0dHBNZXRob2QoKSwg
ImdldCIpKSB7CiAgICAgICAgIC8vIENoYW5nZSBuZXdSZXF1ZXN0IG1ldGhvZCB0byBHRVQgaWYg
Y2hhbmdlIHdhcyBtYWRlIGR1cmluZyBhIHByZXZpb3VzIHJlZGlyZWN0aW9uIG9yIGlmIGN1cnJl
bnQgcmVkaXJlY3Rpb24gc2F5cyBzby4KLSAgICAgICAgaWYgKG1fc291cE1lc3NhZ2UtPm1ldGhv
ZCA9PSBTT1VQX01FVEhPRF9HRVQgfHwgIXJlcXVlc3QudXJsKCkucHJvdG9jb2xJc0luSFRUUEZh
bWlseSgpIHx8IHNob3VsZFJlZGlyZWN0QXNHRVQobV9zb3VwTWVzc2FnZS5nZXQoKSwgaXNDcm9z
c09yaWdpbikpIHsKKyAgICAgICAgaWYgKHNvdXBfbWVzc2FnZV9nZXRfbWV0aG9kKG1fc291cE1l
c3NhZ2UuZ2V0KCkpID09IFNPVVBfTUVUSE9EX0dFVCB8fCAhcmVxdWVzdC51cmwoKS5wcm90b2Nv
bElzSW5IVFRQRmFtaWx5KCkgfHwgc2hvdWxkUmVkaXJlY3RBc0dFVChtX3NvdXBNZXNzYWdlLmdl
dCgpLCBpc0Nyb3NzT3JpZ2luKSkgewogICAgICAgICAgICAgcmVxdWVzdC5zZXRIVFRQTWV0aG9k
KCJHRVQiKTsKICAgICAgICAgICAgIHJlcXVlc3Quc2V0SFRUUEJvZHkobnVsbHB0cik7CiAgICAg
ICAgICAgICByZXF1ZXN0LmNsZWFySFRUUENvbnRlbnRUeXBlKCk7CkBAIC05MjUsNyArOTgzLDgg
QEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjpkaWRHZXRIZWFkZXJzKCkKICAgICAvLyBzaW5j
ZSB3ZSBhcmUgd2FpdGluZyB1bnRpbCB3ZSBrbm93IHRoYXQgdGhpcyBhdXRoZW50aWNhdGlvbiBz
dWNjZWVkZWQgYmVmb3JlIGFjdHVhbGx5IHN0b3JpbmcuCiAgICAgLy8gVGhpcyBpcyBiZWNhdXNl
IHdlIHdhbnQgdG8gYXZvaWQgaGl0dGluZyB0aGUgZGlzayB0d2ljZSAob25jZSB0byBhZGQgYW5k
IG9uY2UgdG8gcmVtb3ZlKSBmb3IKICAgICAvLyBpbmNvcnJlY3QgY3JlZGVudGlhbHMgb3IgcG9s
bHV0aW5nIHRoZSBrZXljaGFpbiB3aXRoIGludmFsaWQgY3JlZGVudGlhbHMuCi0gICAgaWYgKCFp
c0F1dGhlbnRpY2F0aW9uRmFpbHVyZVN0YXR1c0NvZGUobV9zb3VwTWVzc2FnZS0+c3RhdHVzX2Nv
ZGUpICYmIG1fc291cE1lc3NhZ2UtPnN0YXR1c19jb2RlIDwgNTAwICYmIHBlcnNpc3RlbnRDcmVk
ZW50aWFsU3RvcmFnZUVuYWJsZWQoKSkgeworICAgIGF1dG8gc3RhdHVzQ29kZSA9IHNvdXBfbWVz
c2FnZV9nZXRfc3RhdHVzKG1fc291cE1lc3NhZ2UuZ2V0KCkpOworICAgIGlmICghaXNBdXRoZW50
aWNhdGlvbkZhaWx1cmVTdGF0dXNDb2RlKHN0YXR1c0NvZGUpICYmIHN0YXR1c0NvZGUgPCA1MDAg
JiYgcGVyc2lzdGVudENyZWRlbnRpYWxTdG9yYWdlRW5hYmxlZCgpKSB7CiAgICAgICAgIG1fc2Vz
c2lvbi0+bmV0d29ya1N0b3JhZ2VTZXNzaW9uKCktPnNhdmVDcmVkZW50aWFsVG9QZXJzaXN0ZW50
U3RvcmFnZShtX3Byb3RlY3Rpb25TcGFjZUZvclBlcnNpc3RlbnRTdG9yYWdlLCBtX2NyZWRlbnRp
YWxGb3JQZXJzaXN0ZW50U3RvcmFnZSk7CiAgICAgICAgIG1fcHJvdGVjdGlvblNwYWNlRm9yUGVy
c2lzdGVudFN0b3JhZ2UgPSBQcm90ZWN0aW9uU3BhY2UoKTsKICAgICAgICAgbV9jcmVkZW50aWFs
Rm9yUGVyc2lzdGVudFN0b3JhZ2UgPSBDcmVkZW50aWFsKCk7CkBAIC05MzcsNyArOTk2LDcgQEAg
dm9pZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjpkaWRHZXRIZWFkZXJzKCkKICAgICBpZiAoc2hvdWxk
Q2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzKCkpIHsKICAgICAgICAgSFRUUEhlYWRlck1h
cCByZXF1ZXN0SGVhZGVyczsKICAgICAgICAgU291cE1lc3NhZ2VIZWFkZXJzSXRlciBoZWFkZXJz
SXRlcjsKLSAgICAgICAgc291cF9tZXNzYWdlX2hlYWRlcnNfaXRlcl9pbml0KCZoZWFkZXJzSXRl
ciwgbV9zb3VwTWVzc2FnZS0+cmVxdWVzdF9oZWFkZXJzKTsKKyAgICAgICAgc291cF9tZXNzYWdl
X2hlYWRlcnNfaXRlcl9pbml0KCZoZWFkZXJzSXRlciwgc291cF9tZXNzYWdlX2dldF9yZXF1ZXN0
X2hlYWRlcnMobV9zb3VwTWVzc2FnZS5nZXQoKSkpOwogICAgICAgICBjb25zdCBjaGFyKiBoZWFk
ZXJOYW1lOwogICAgICAgICBjb25zdCBjaGFyKiBoZWFkZXJWYWx1ZTsKICAgICAgICAgd2hpbGUg
KHNvdXBfbWVzc2FnZV9oZWFkZXJzX2l0ZXJfbmV4dCgmaGVhZGVyc0l0ZXIsICZoZWFkZXJOYW1l
LCAmaGVhZGVyVmFsdWUpKQpAQCAtOTQ2LDIxICsxMDA1LDMzIEBAIHZvaWQgTmV0d29ya0RhdGFU
YXNrU291cDo6ZGlkR2V0SGVhZGVycygpCiAgICAgfQogfQogCisjaWYgVVNFKFNPVVAyKQogdm9p
ZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjp3cm90ZUJvZHlEYXRhQ2FsbGJhY2soU291cE1lc3NhZ2Uq
IHNvdXBNZXNzYWdlLCBTb3VwQnVmZmVyKiBidWZmZXIsIE5ldHdvcmtEYXRhVGFza1NvdXAqIHRh
c2spCisjZWxzZQordm9pZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjp3cm90ZUJvZHlEYXRhQ2FsbGJh
Y2soU291cE1lc3NhZ2UqIHNvdXBNZXNzYWdlLCB1bnNpZ25lZCBsZW5ndGgsIE5ldHdvcmtEYXRh
VGFza1NvdXAqIHRhc2spCisjZW5kaWYKIHsKICAgICBpZiAodGFzay0+c3RhdGUoKSA9PSBTdGF0
ZTo6Q2FuY2VsaW5nIHx8IHRhc2stPnN0YXRlKCkgPT0gU3RhdGU6OkNvbXBsZXRlZCB8fCAhdGFz
ay0+bV9jbGllbnQpIHsKICAgICAgICAgdGFzay0+Y2xlYXJSZXF1ZXN0KCk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAgICAgQVNTRVJUKHRhc2stPm1fc291cE1lc3NhZ2UuZ2V0KCkgPT0gc291
cE1lc3NhZ2UpOworI2lmIFVTRShTT1VQMikKICAgICB0YXNrLT5kaWRXcml0ZUJvZHlEYXRhKGJ1
ZmZlci0+bGVuZ3RoKTsKKyNlbHNlCisgICAgdGFzay0+ZGlkV3JpdGVCb2R5RGF0YShsZW5ndGgp
OworI2VuZGlmCiB9CiAKIHZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6ZGlkV3JpdGVCb2R5RGF0
YSh1aW50NjRfdCBieXRlc1NlbnQpCiB7CiAgICAgUmVmUHRyPE5ldHdvcmtEYXRhVGFza1NvdXA+
IHByb3RlY3RlZFRoaXModGhpcyk7CiAgICAgbV9ib2R5RGF0YVRvdGFsQnl0ZXNTZW50ICs9IGJ5
dGVzU2VudDsKKyNpZiBVU0UoU09VUDIpCiAgICAgbV9jbGllbnQtPmRpZFNlbmREYXRhKG1fYm9k
eURhdGFUb3RhbEJ5dGVzU2VudCwgbV9zb3VwTWVzc2FnZS0+cmVxdWVzdF9ib2R5LT5sZW5ndGgp
OworI2Vsc2UKKyAgICBtX2NsaWVudC0+ZGlkU2VuZERhdGEobV9ib2R5RGF0YVRvdGFsQnl0ZXNT
ZW50LCBzb3VwX21lc3NhZ2VfaGVhZGVyc19nZXRfY29udGVudF9sZW5ndGgoc291cF9tZXNzYWdl
X2dldF9yZXF1ZXN0X2hlYWRlcnMobV9zb3VwTWVzc2FnZS5nZXQoKSkpKTsKKyNlbmRpZgogfQog
CiB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6OmRvd25sb2FkKCkKQEAgLTExMzYsOSArMTIwNywx
MSBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6Om5ldHdvcmtFdmVudChHU29ja2V0Q2xpZW50
RXZlbnQgZXZlbnQsIEdJT1N0cmVhbSogc3RyZQogICAgICAgICBicmVhazsKICAgICBjYXNlIEdf
U09DS0VUX0NMSUVOVF9UTFNfSEFORFNIQUtJTkc6CiAgICAgICAgIG1fbmV0d29ya0xvYWRNZXRy
aWNzLnNlY3VyZUNvbm5lY3Rpb25TdGFydCA9IGRlbHRhVGltZTsKKyNpZiBVU0UoU09VUDIpCiAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKEdfSVNfVExTX0NPTk5FQ1RJT04oc3RyZWFtKSk7CiAgICAg
ICAgIGdfb2JqZWN0X3NldF9kYXRhKEdfT0JKRUNUKHN0cmVhbSksICJ3ay1zb3VwLW1lc3NhZ2Ui
LCBtX3NvdXBNZXNzYWdlLmdldCgpKTsKICAgICAgICAgZ19zaWduYWxfY29ubmVjdChzdHJlYW0s
ICJhY2NlcHQtY2VydGlmaWNhdGUiLCBHX0NBTExCQUNLKHRsc0Nvbm5lY3Rpb25BY2NlcHRDZXJ0
aWZpY2F0ZUNhbGxiYWNrKSwgdGhpcyk7CisjZW5kaWYKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBHX1NPQ0tFVF9DTElFTlRfVExTX0hBTkRTSEFLRUQ6CiAgICAgICAgIGJyZWFrOwpAQCAtMTE4
NSw3ICsxMjU4LDExIEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6cHJvdG9jb2xVcGdyYWRl
ZFZpYUhTVFMoU291cE1lc3NhZ2UqIHNvdXBNZXNzYWdlKQogICAgIGNvbnRpbnVlSFRUUFJlZGly
ZWN0aW9uKCk7CiB9CiAKKyNpZiBVU0UoU09VUDIpCiB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6
OmhzdHNFbmZvcmNlZChTb3VwSFNUU0VuZm9yY2VyKiwgU291cE1lc3NhZ2UqIHNvdXBNZXNzYWdl
LCBOZXR3b3JrRGF0YVRhc2tTb3VwKiB0YXNrKQorI2Vsc2UKK3ZvaWQgTmV0d29ya0RhdGFUYXNr
U291cDo6aHN0c0VuZm9yY2VkKFNvdXBNZXNzYWdlKiBzb3VwTWVzc2FnZSwgTmV0d29ya0RhdGFU
YXNrU291cCogdGFzaykKKyNlbmRpZgogewogICAgIGlmICh0YXNrLT5zdGF0ZSgpID09IFN0YXRl
OjpDYW5jZWxpbmcgfHwgdGFzay0+c3RhdGUoKSA9PSBTdGF0ZTo6Q29tcGxldGVkIHx8ICF0YXNr
LT5tX2NsaWVudCkgewogICAgICAgICB0YXNrLT5jbGVhclJlcXVlc3QoKTsKQEAgLTEyMTgsNiAr
MTI5NSw5IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6ZGlkUmVzdGFydCgpCiB7CiAgICAg
bV9zdGFydFRpbWUgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKICAgICBtX25ldHdvcmtMb2FkTWV0
cmljcyA9IHsgfTsKKyNpZiAhVVNFKFNPVVAyKQorICAgIG1fY3VycmVudFJlcXVlc3QudXBkYXRl
U291cE1lc3NhZ2VCb2R5KG1fc291cE1lc3NhZ2UuZ2V0KCksIG1fc2Vzc2lvbi0+YmxvYlJlZ2lz
dHJ5KCkpOworI2VuZGlmCiB9CiAKIHZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6ZmlsZVF1ZXJ5
SW5mb0NhbGxiYWNrKEdGaWxlKiBmaWxlLCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgTmV0d29ya0Rh
dGFUYXNrU291cCogdGFzaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5oCmluZGV4IDE2ZTAxNDgwNGEzNC4uNWFjNmRk
Mzk1YjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0
d29ya0RhdGFUYXNrU291cC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291
cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmgKQEAgLTc2LDE1ICs3NiwyMyBAQCBwcml2YXRlOgogICAg
IHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9uc2UoKTsKICAgICB2b2lkIGRpc3BhdGNoRGlk
Q29tcGxldGVXaXRoRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwogCisjaWYg
VVNFKFNPVVAyKQogICAgIHN0YXRpYyBnYm9vbGVhbiB0bHNDb25uZWN0aW9uQWNjZXB0Q2VydGlm
aWNhdGVDYWxsYmFjayhHVGxzQ29ubmVjdGlvbiosIEdUbHNDZXJ0aWZpY2F0ZSosIEdUbHNDZXJ0
aWZpY2F0ZUZsYWdzLCBOZXR3b3JrRGF0YVRhc2tTb3VwKik7Ci0gICAgYm9vbCB0bHNDb25uZWN0
aW9uQWNjZXB0Q2VydGlmaWNhdGUoR1Rsc0NlcnRpZmljYXRlKiwgR1Rsc0NlcnRpZmljYXRlRmxh
Z3MpOworI2Vsc2UKKyAgICBzdGF0aWMgZ2Jvb2xlYW4gYWNjZXB0Q2VydGlmaWNhdGVDYWxsYmFj
ayhTb3VwTWVzc2FnZSosIEdUbHNDZXJ0aWZpY2F0ZSosIEdUbHNDZXJ0aWZpY2F0ZUZsYWdzLCBO
ZXR3b3JrRGF0YVRhc2tTb3VwKik7CisjZW5kaWYKKyAgICBib29sIGFjY2VwdENlcnRpZmljYXRl
KEdUbHNDZXJ0aWZpY2F0ZSosIEdUbHNDZXJ0aWZpY2F0ZUZsYWdzKTsKIAogICAgIHN0YXRpYyB2
b2lkIGRpZFNuaWZmQ29udGVudENhbGxiYWNrKFNvdXBNZXNzYWdlKiwgY29uc3QgY2hhciogY29u
dGVudFR5cGUsIEdIYXNoVGFibGUqIHBhcmFtZXRlcnMsIE5ldHdvcmtEYXRhVGFza1NvdXAqKTsK
ICAgICB2b2lkIGRpZFNuaWZmQ29udGVudChDU3RyaW5nJiYpOwogCiAgICAgYm9vbCBwZXJzaXN0
ZW50Q3JlZGVudGlhbFN0b3JhZ2VFbmFibGVkKCkgY29uc3Q7CiAgICAgdm9pZCBhcHBseUF1dGhl
bnRpY2F0aW9uVG9SZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOworI2lmIFVTRShT
T1VQMikKICAgICBzdGF0aWMgdm9pZCBhdXRoZW50aWNhdGVDYWxsYmFjayhTb3VwU2Vzc2lvbios
IFNvdXBNZXNzYWdlKiwgU291cEF1dGgqLCBnYm9vbGVhbiByZXRyeWluZywgTmV0d29ya0RhdGFU
YXNrU291cCopOworI2Vsc2UKKyAgICBzdGF0aWMgZ2Jvb2xlYW4gYXV0aGVudGljYXRlQ2FsbGJh
Y2soU291cE1lc3NhZ2UqLCBTb3VwQXV0aCosIGdib29sZWFuIHJldHJ5aW5nLCBOZXR3b3JrRGF0
YVRhc2tTb3VwKik7CisjZW5kaWYKICAgICB2b2lkIGF1dGhlbnRpY2F0ZShXZWJDb3JlOjpBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSYmKTsKICAgICB2b2lkIGNvbnRpbnVlQXV0aGVudGljYXRlKFdl
YkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYpOwogCkBAIC0xMDcsNyArMTE1LDExIEBA
IHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgZ290SGVhZGVyc0NhbGxiYWNrKFNvdXBNZXNzYWdl
KiwgTmV0d29ya0RhdGFUYXNrU291cCopOwogICAgIHZvaWQgZGlkR2V0SGVhZGVycygpOwogCisj
aWYgVVNFKFNPVVAyKQogICAgIHN0YXRpYyB2b2lkIHdyb3RlQm9keURhdGFDYWxsYmFjayhTb3Vw
TWVzc2FnZSosIFNvdXBCdWZmZXIqLCBOZXR3b3JrRGF0YVRhc2tTb3VwKik7CisjZWxzZQorICAg
IHN0YXRpYyB2b2lkIHdyb3RlQm9keURhdGFDYWxsYmFjayhTb3VwTWVzc2FnZSosIHVuc2lnbmVk
LCBOZXR3b3JrRGF0YVRhc2tTb3VwKik7CisjZW5kaWYKICAgICB2b2lkIGRpZFdyaXRlQm9keURh
dGEodWludDY0X3QgYnl0ZXNTZW50KTsKIAogICAgIHZvaWQgZG93bmxvYWQoKTsKQEAgLTEzMSw3
ICsxNDMsMTEgQEAgcHJpdmF0ZToKICAgICBib29sIHNob3VsZEFsbG93SFNUU1BvbGljeVNldHRp
bmcoKSBjb25zdDsKICAgICBib29sIHNob3VsZEFsbG93SFNUU1Byb3RvY29sVXBncmFkZSgpIGNv
bnN0OwogICAgIHZvaWQgcHJvdG9jb2xVcGdyYWRlZFZpYUhTVFMoU291cE1lc3NhZ2UqKTsKKyNp
ZiBVU0UoU09VUDIpCiAgICAgc3RhdGljIHZvaWQgaHN0c0VuZm9yY2VkKFNvdXBIU1RTRW5mb3Jj
ZXIqLCBTb3VwTWVzc2FnZSosIE5ldHdvcmtEYXRhVGFza1NvdXAqKTsKKyNlbHNlCisgICAgc3Rh
dGljIHZvaWQgaHN0c0VuZm9yY2VkKFNvdXBNZXNzYWdlKiwgTmV0d29ya0RhdGFUYXNrU291cCop
OworI2VuZGlmCiAjZW5kaWYKICAgICB2b2lkIGRpZFN0YXJ0UmVxdWVzdCgpOwogICAgIHN0YXRp
YyB2b2lkIHJlc3RhcnRlZENhbGxiYWNrKFNvdXBNZXNzYWdlKiwgTmV0d29ya0RhdGFUYXNrU291
cCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdv
cmtTZXNzaW9uU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0
d29ya1Nlc3Npb25Tb3VwLmNwcAppbmRleCAwNTlhMWRkMTFjMDcuLjZlOTczZjUxOGMxNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtTZXNzaW9u
U291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtT
ZXNzaW9uU291cC5jcHAKQEAgLTEwMyw2ICsxMDMsNyBAQCB2b2lkIE5ldHdvcmtTZXNzaW9uU291
cDo6Y2xlYXJDcmVkZW50aWFscygpCiAjZW5kaWYKIH0KIAorI2lmIFVTRShTT1VQMikKIHN0YXRp
YyBnYm9vbGVhbiB3ZWJTb2NrZXRBY2NlcHRDZXJ0aWZpY2F0ZUNhbGxiYWNrKEdUbHNDb25uZWN0
aW9uKiBjb25uZWN0aW9uLCBHVGxzQ2VydGlmaWNhdGUqIGNlcnRpZmljYXRlLCBHVGxzQ2VydGlm
aWNhdGVGbGFncyBlcnJvcnMsIE5ldHdvcmtTZXNzaW9uU291cCogc2Vzc2lvbikKIHsKICAgICBp
ZiAoRGVwcmVjYXRlZEdsb2JhbFNldHRpbmdzOjphbGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZSgpKQpA
QCAtMTIwLDYgKzEyMSw3IEBAIHN0YXRpYyB2b2lkIHdlYlNvY2tldE1lc3NhZ2VOZXR3b3JrRXZl
bnRDYWxsYmFjayhTb3VwTWVzc2FnZSogc291cE1lc3NhZ2UsIEdTb2NrCiAgICAgZ19vYmplY3Rf
c2V0X2RhdGEoR19PQkpFQ1QoY29ubmVjdGlvbiksICJ3ay1zb3VwLW1lc3NhZ2UiLCBzb3VwTWVz
c2FnZSk7CiAgICAgZ19zaWduYWxfY29ubmVjdChjb25uZWN0aW9uLCAiYWNjZXB0LWNlcnRpZmlj
YXRlIiwgR19DQUxMQkFDSyh3ZWJTb2NrZXRBY2NlcHRDZXJ0aWZpY2F0ZUNhbGxiYWNrKSwgc2Vz
c2lvbik7CiB9CisjZW5kaWYKIAogc3RkOjp1bmlxdWVfcHRyPFdlYlNvY2tldFRhc2s+IE5ldHdv
cmtTZXNzaW9uU291cDo6Y3JlYXRlV2ViU29ja2V0VGFzayhOZXR3b3JrU29ja2V0Q2hhbm5lbCYg
Y2hhbm5lbCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdHJpbmcmIHBy
b3RvY29sKQogewpAQCAtMTI3LDggKzEyOSwxOCBAQCBzdGQ6OnVuaXF1ZV9wdHI8V2ViU29ja2V0
VGFzaz4gTmV0d29ya1Nlc3Npb25Tb3VwOjpjcmVhdGVXZWJTb2NrZXRUYXNrKE5ldHdvcmtTbwog
ICAgIGlmICghc291cE1lc3NhZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgaWYg
KHJlcXVlc3QudXJsKCkucHJvdG9jb2xJcygid3NzIikpCisgICAgaWYgKHJlcXVlc3QudXJsKCku
cHJvdG9jb2xJcygid3NzIikpIHsKKyNpZiBVU0UoU09VUDIpCiAgICAgICAgIGdfc2lnbmFsX2Nv
bm5lY3Qoc291cE1lc3NhZ2UuZ2V0KCksICJuZXR3b3JrLWV2ZW50IiwgR19DQUxMQkFDSyh3ZWJT
b2NrZXRNZXNzYWdlTmV0d29ya0V2ZW50Q2FsbGJhY2spLCB0aGlzKTsKKyNlbHNlCisgICAgICAg
IGdfc2lnbmFsX2Nvbm5lY3Qoc291cE1lc3NhZ2UuZ2V0KCksICJhY2NlcHQtY2VydGlmaWNhdGUi
LCBHX0NBTExCQUNLKCtbXShTb3VwTWVzc2FnZSogbWVzc2FnZSwgR1Rsc0NlcnRpZmljYXRlKiBj
ZXJ0aWZpY2F0ZSwgR1Rsc0NlcnRpZmljYXRlRmxhZ3MgZXJyb3JzLCAgTmV0d29ya1Nlc3Npb25T
b3VwKiBzZXNzaW9uKSAtPiBnYm9vbGVhbiB7CisgICAgICAgICAgICBpZiAoRGVwcmVjYXRlZEds
b2JhbFNldHRpbmdzOjphbGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZSgpKQorICAgICAgICAgICAgICAg
IHJldHVybiBUUlVFOworCisgICAgICAgICAgICByZXR1cm4gIXNlc3Npb24tPnNvdXBOZXR3b3Jr
U2Vzc2lvbigpLmNoZWNrVExTRXJyb3JzKHNvdXBfbWVzc2FnZV9nZXRfdXJpKG1lc3NhZ2UpLCBj
ZXJ0aWZpY2F0ZSwgZXJyb3JzKTsKKyAgICAgICAgfSksIHRoaXMpOworI2VuZGlmCisgICAgfQog
ICAgIHJldHVybiBtYWtlVW5pcXVlPFdlYlNvY2tldFRhc2s+KGNoYW5uZWwsIHJlcXVlc3QsIHNv
dXBTZXNzaW9uKCksIHNvdXBNZXNzYWdlLmdldCgpLCBwcm90b2NvbCk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9XZWJTb2NrZXRUYXNrU291cC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2ViU29ja2V0VGFza1NvdXAu
Y3BwCmluZGV4IGIzMzFhMjkwNmU4MS4uMWFjYWUwMDAwYzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2ViU29ja2V0VGFza1NvdXAuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9XZWJTb2NrZXRUYXNrU291cC5jcHAKQEAg
LTMxLDEzICszMSwyOCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvSFRUUFBhcnNlcnMuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3Vy
Y2VSZXNwb25zZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU291cFZlcnNpb25pbmcuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1dlYlNvY2tldENoYW5uZWwuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5o
PgogI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4KKyNpbmNsdWRlIDx3dGYvZ2xpYi9S
dW5Mb29wU291cmNlUHJpb3JpdHkuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVy
Lmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitzdGF0aWMgaW5saW5lIGJvb2wgaXNDb25uZWN0
aW9uRXJyb3IoR0Vycm9yKiBlcnJvciwgU291cE1lc3NhZ2UqIG1lc3NhZ2UpCit7CisjaWYgVVNF
KFNPVVAyKQorICAgIHJldHVybiBnX2Vycm9yX21hdGNoZXMoZXJyb3IsIFNPVVBfV0VCU09DS0VU
X0VSUk9SLCBTT1VQX1dFQlNPQ0tFVF9FUlJPUl9OT1RfV0VCU09DS0VUKQorICAgICAgICAmJiBt
ZXNzYWdlCisgICAgICAgICYmIChtZXNzYWdlLT5zdGF0dXNfY29kZSA9PSBTT1VQX1NUQVRVU19D
QU5UX0NPTk5FQ1QgfHwgbWVzc2FnZS0+c3RhdHVzX2NvZGUgPT0gU09VUF9TVEFUVVNfQ0FOVF9D
T05ORUNUX1BST1hZKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKG1lc3NhZ2UpOworICAgIC8v
IElmIG5vdCBhIFNPVVBfV0VCU09DS0VUX0VSUk9SX05PVF9XRUJTT0NLRVQsIHRoZW4gaXQncyBh
IGNvbm5lY3Rpb24gZXJyb3IuCisgICAgcmV0dXJuIGVycm9yICYmICFnX2Vycm9yX21hdGNoZXMo
ZXJyb3IsIFNPVVBfV0VCU09DS0VUX0VSUk9SLCBTT1VQX1dFQlNPQ0tFVF9FUlJPUl9OT1RfV0VC
U09DS0VUKTsKKyNlbmRpZgorfQorCiBXZWJTb2NrZXRUYXNrOjpXZWJTb2NrZXRUYXNrKE5ldHdv
cmtTb2NrZXRDaGFubmVsJiBjaGFubmVsLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIFNvdXBTZXNzaW9uKiBzZXNzaW9uLCBTb3VwTWVzc2FnZSogbXNnLCBjb25zdCBT
dHJpbmcmIHByb3RvY29sKQogICAgIDogbV9jaGFubmVsKGNoYW5uZWwpCiAgICAgLCBtX3JlcXVl
c3QocmVxdWVzdCkKQEAgLTU0LDIyICs2OSwyMSBAQCBXZWJTb2NrZXRUYXNrOjpXZWJTb2NrZXRU
YXNrKE5ldHdvcmtTb2NrZXRDaGFubmVsJiBjaGFubmVsLCBjb25zdCBXZWJDb3JlOjpSZXNvdQog
ICAgICAgICAgICAgcHJvdG9jb2xzLmdldCgpW2krK10gPSBnX3N0cmR1cChXZWJDb3JlOjpzdHJp
cExlYWRpbmdBbmRUcmFpbGluZ0hUVFBTcGFjZXMoc3VicHJvdG9jb2wpLnV0ZjgoKS5kYXRhKCkp
OwogICAgIH0KIAorI2lmIFVTRShTT1VQMikKICAgICAvLyBFbnN1cmUgYSBuZXcgY29ubmVjdGlv
biBpcyB1c2VkIGZvciBXZWJTb2NrZXRzLgogICAgIC8vIEZJWE1FOiB0aGlzIGlzIGRvbmUgYnkg
bGlic291cCBzaW5jZSAyLjY5LjEgYW5kIDIuNjguNCwgc28gaXQgY2FuIGJlIHJlbW92ZWQgd2hl
biBidW1waW5nIHRoZSBsaWJzb3VwIHJlcXVpcmVtZW50LgogICAgIC8vIFNlZSBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAzNDA0CiAgICAgc291cF9tZXNzYWdlX3Nl
dF9mbGFncyhtc2csIHN0YXRpY19jYXN0PFNvdXBNZXNzYWdlRmxhZ3M+KHNvdXBfbWVzc2FnZV9n
ZXRfZmxhZ3MobXNnKSB8IFNPVVBfTUVTU0FHRV9ORVdfQ09OTkVDVElPTikpOworI2VuZGlmCiAK
LSAgICBzb3VwX3Nlc3Npb25fd2Vic29ja2V0X2Nvbm5lY3RfYXN5bmMoc2Vzc2lvbiwgbXNnLCBu
dWxscHRyLCBwcm90b2NvbHMuZ2V0KCksIG1fY2FuY2VsbGFibGUuZ2V0KCksCisgICAgc291cF9z
ZXNzaW9uX3dlYnNvY2tldF9jb25uZWN0X2FzeW5jKHNlc3Npb24sIG1zZywgbnVsbHB0ciwgcHJv
dG9jb2xzLmdldCgpLCBSdW5Mb29wU291cmNlUHJpb3JpdHk6OkFzeW5jSU9OZXR3b3JrLCBtX2Nh
bmNlbGxhYmxlLmdldCgpLAogICAgICAgICBbXSAoR09iamVjdCogc2Vzc2lvbiwgR0FzeW5jUmVz
dWx0KiByZXN1bHQsIGdwb2ludGVyIHVzZXJEYXRhKSB7CiAgICAgICAgICAgICBHVW5pcXVlT3V0
UHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgICAgICAgICBHUmVmUHRyPFNvdXBXZWJzb2NrZXRDb25u
ZWN0aW9uPiBjb25uZWN0aW9uID0gYWRvcHRHUmVmKHNvdXBfc2Vzc2lvbl93ZWJzb2NrZXRfY29u
bmVjdF9maW5pc2goU09VUF9TRVNTSU9OKHNlc3Npb24pLCByZXN1bHQsICZlcnJvci5vdXRQdHIo
KSkpOwogICAgICAgICAgICAgaWYgKGdfZXJyb3JfbWF0Y2hlcyhlcnJvci5nZXQoKSwgR19JT19F
UlJPUiwgR19JT19FUlJPUl9DQU5DRUxMRUQpKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgICAgIGF1dG8qIHRhc2sgPSBzdGF0aWNfY2FzdDxXZWJTb2NrZXRUYXNrKj4odXNlckRh
dGEpOwotICAgICAgICAgICAgaWYgKGdfZXJyb3JfbWF0Y2hlcyhlcnJvci5nZXQoKSwgU09VUF9X
RUJTT0NLRVRfRVJST1IsIFNPVVBfV0VCU09DS0VUX0VSUk9SX05PVF9XRUJTT0NLRVQpCi0gICAg
ICAgICAgICAgICAgJiYgdGFzay0+bV9oYW5kc2hha2VNZXNzYWdlCi0gICAgICAgICAgICAgICAg
JiYgKHRhc2stPm1faGFuZHNoYWtlTWVzc2FnZS0+c3RhdHVzX2NvZGUgPT0gU09VUF9TVEFUVVNf
Q0FOVF9DT05ORUNUCi0gICAgICAgICAgICAgICAgICAgIHx8IHRhc2stPm1faGFuZHNoYWtlTWVz
c2FnZS0+c3RhdHVzX2NvZGUgPT0gU09VUF9TVEFUVVNfQ0FOVF9DT05ORUNUX1BST1hZKSkgewor
ICAgICAgICAgICAgaWYgKGlzQ29ubmVjdGlvbkVycm9yKGVycm9yLmdldCgpLCB0YXNrLT5tX2hh
bmRzaGFrZU1lc3NhZ2UuZ2V0KCkpKSB7CiAgICAgICAgICAgICAgICAgdGFzay0+bV9kZWxheUVy
cm9yTWVzc2FnZSA9IFN0cmluZzo6ZnJvbVVURjgoZXJyb3ItPm1lc3NhZ2UpOwogICAgICAgICAg
ICAgICAgIHRhc2stPm1fZGVsYXlGYWlsVGltZXIuc3RhcnRPbmVTaG90KE5ldHdvcmtQcm9jZXNz
OjpyYW5kb21DbG9zZWRQb3J0RGVsYXkoKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAt
ODEsNyArOTUsNyBAQCBXZWJTb2NrZXRUYXNrOjpXZWJTb2NrZXRUYXNrKE5ldHdvcmtTb2NrZXRD
aGFubmVsJiBjaGFubmVsLCBjb25zdCBXZWJDb3JlOjpSZXNvdQogICAgICAgICB9LCB0aGlzKTsK
IAogICAgIGdfc2lnbmFsX2Nvbm5lY3QobXNnLCAic3RhcnRpbmciLCBHX0NBTExCQUNLKCtbXShT
b3VwTWVzc2FnZSogbXNnLCBXZWJTb2NrZXRUYXNrKiB0YXNrKSB7Ci0gICAgICAgIHRhc2stPm1f
cmVxdWVzdC51cGRhdGVGcm9tU291cE1lc3NhZ2VIZWFkZXJzKG1zZy0+cmVxdWVzdF9oZWFkZXJz
KTsKKyAgICAgICAgdGFzay0+bV9yZXF1ZXN0LnVwZGF0ZUZyb21Tb3VwTWVzc2FnZUhlYWRlcnMo
c291cF9tZXNzYWdlX2dldF9yZXF1ZXN0X2hlYWRlcnMobXNnKSk7CiAgICAgICAgIHRhc2stPm1f
Y2hhbm5lbC5kaWRTZW5kSGFuZHNoYWtlUmVxdWVzdChXVEZNb3ZlKHRhc2stPm1fcmVxdWVzdCkp
OwogICAgIH0pLCB0aGlzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9GaW5kTGliU291
cC5jbWFrZSBiL1NvdXJjZS9jbWFrZS9GaW5kTGliU291cC5jbWFrZQppbmRleCBjOWI1YjQzYWIz
NDcuLjZjMTQ5YTM3Nzc4ZiAxMDA2NDQKLS0tIGEvU291cmNlL2NtYWtlL0ZpbmRMaWJTb3VwLmNt
YWtlCisrKyBiL1NvdXJjZS9jbWFrZS9GaW5kTGliU291cC5jbWFrZQpAQCAtMjgsMjEgKzI4LDMx
IEBACiAjIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYKICMgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAKK2lmIChOT1QgREVGSU5FRCBMaWJTb3VwX0ZJTkRfVkVSU0lPTikKKyAgICBt
ZXNzYWdlKEZBVEFMX0VSUk9SICJObyBMaWJTb3VwIHZlcnNpb24gc3BlY2lmaWVkIikKK2VuZGlm
ICgpCisKK2lmIChMaWJTb3VwX0ZJTkRfVkVSU0lPTiBWRVJTSU9OX0xFU1MgMi45MSkKKyAgICBz
ZXQoTElCU09VUF9BUElfVkVSU0lPTiAiMi40IikKK2Vsc2UgKCkKKyAgICBzZXQoTElCU09VUF9B
UElfVkVSU0lPTiAiMy4wIikKK2VuZGlmICgpCisKICMgTGliU291cCBkb2VzIG5vdCBwcm92aWRl
IGFuIGVhc3kgd2F5IHRvIHJldHJpZXZlIGl0cyB2ZXJzaW9uIG90aGVyIHRoYW4gaXRzCiAjIC5w
YyBmaWxlLCBzbyB3ZSBuZWVkIHRvIHJlbHkgb24gUENfTElCU09VUF9WRVJTSU9OIGFuZCBSRVFV
SVJFIHRoZSAucGMgZmlsZQogIyB0byBiZSBmb3VuZC4KIGZpbmRfcGFja2FnZShQa2dDb25maWcg
UVVJRVQpCi1wa2dfY2hlY2tfbW9kdWxlcyhQQ19MSUJTT1VQIFJFUVVJUkVEIFFVSUVUIGxpYnNv
dXAtMi40KQorcGtnX2NoZWNrX21vZHVsZXMoUENfTElCU09VUCBSRVFVSVJFRCBRVUlFVCAibGli
c291cC0ke0xJQlNPVVBfQVBJX1ZFUlNJT059IikKIAogZmluZF9wYXRoKExJQlNPVVBfSU5DTFVE
RV9ESVJTCiAgICAgTkFNRVMgbGlic291cC9zb3VwLmgKICAgICBISU5UUyAke1BDX0xJQlNPVVBf
SU5DTFVERURJUn0KICAgICAgICAgICAke1BDX0xJQlNPVVBfSU5DTFVERV9ESVJTfQotICAgIFBB
VEhfU1VGRklYRVMgbGlic291cC0yLjQKKyAgICBQQVRIX1NVRkZJWEVTICJsaWJzb3VwLSR7TElC
U09VUF9BUElfVkVSU0lPTn0iCiApCiAKIGZpbmRfbGlicmFyeShMSUJTT1VQX0xJQlJBUklFUwot
ICAgIE5BTUVTIHNvdXAtMi40CisgICAgTkFNRVMgInNvdXAtJHtMSUJTT1VQX0FQSV9WRVJTSU9O
fSIKICAgICBISU5UUyAke1BDX0xJQlNPVVBfTElCRElSfQogICAgICAgICAgICR7UENfTElCU09V
UF9MSUJSQVJZX0RJUlN9CiApCmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5j
bWFrZSBiL1NvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlCmluZGV4IGJmNDY0YjA2MGNkZS4u
ZWEyOWEyYjI2ODQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZQor
KysgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZQpAQCAtNDIsNyArNDIsNiBAQCBmaW5k
X3BhY2thZ2UoR1RLICR7R1RLX01JTklNVU1fVkVSU0lPTn0gUkVRVUlSRUQgT1BUSU9OQUxfQ09N
UE9ORU5UUyB1bml4LXByaW50KQogZmluZF9wYWNrYWdlKEhhcmZCdXp6IDAuOS4xOCBSRVFVSVJF
RCBDT01QT05FTlRTIElDVSkKIGZpbmRfcGFja2FnZShJQ1UgNjAuMiBSRVFVSVJFRCBDT01QT05F
TlRTIGRhdGEgaTE4biB1YykKIGZpbmRfcGFja2FnZShKUEVHIFJFUVVJUkVEKQotZmluZF9wYWNr
YWdlKExpYlNvdXAgMi41NC4wIFJFUVVJUkVEKQogZmluZF9wYWNrYWdlKExpYlhtbDIgMi44LjAg
UkVRVUlSRUQpCiBmaW5kX3BhY2thZ2UoUE5HIFJFUVVJUkVEKQogZmluZF9wYWNrYWdlKFNRTGl0
ZTMgUkVRVUlSRUQpCkBAIC05OCw2ICs5Nyw3IEBAIFdFQktJVF9PUFRJT05fREVGSU5FKFVTRV9M
SUJIWVBIRU4gIldoZXRoZXIgdG8gZW5hYmxlIHRoZSBkZWZhdWx0IGF1dG9tYXRpYyBoeXBoCiBX
RUJLSVRfT1BUSU9OX0RFRklORShVU0VfTElCU0VDUkVUICJXaGV0aGVyIHRvIGVuYWJsZSB0aGUg
cGVyc2lzdGVudCBjcmVkZW50aWFsIHN0b3JhZ2UgdXNpbmcgbGlic2VjcmV0LiIgUFVCTElDIE9O
KQogV0VCS0lUX09QVElPTl9ERUZJTkUoVVNFX09QRU5HTF9PUl9FUyAiV2hldGhlciB0byB1c2Ug
T3BlbkdMIG9yIEVTLiIgUFVCTElDICR7VVNFX09QRU5HTF9PUl9FU19ERUZBVUxUfSkKIFdFQktJ
VF9PUFRJT05fREVGSU5FKFVTRV9PUEVOSlBFRyAiV2hldGhlciB0byBlbmFibGUgc3VwcG9ydCBm
b3IgSlBFRzIwMDAgaW1hZ2VzLiIgUFVCTElDIE9OKQorV0VCS0lUX09QVElPTl9ERUZJTkUoVVNF
X1NPVVAyICJXaGV0aGVyIHRvIGVuYWJsZSB1c2FnZSBvZiBTb3VwIDIgaW5zdGVhZCBvZiBTb3Vw
IDMuIiBQVUJMSUMgT04pCiBXRUJLSVRfT1BUSU9OX0RFRklORShVU0VfV09GRjIgIldoZXRoZXIg
dG8gZW5hYmxlIHN1cHBvcnQgZm9yIFdPRkYyIFdlYiBGb250cy4iIFBVQkxJQyBPTikKIFdFQktJ
VF9PUFRJT05fREVGSU5FKFVTRV9XUEVfUkVOREVSRVIgIldoZXRoZXIgdG8gZW5hYmxlIFdQRSBy
ZW5kZXJpbmciIFBVQkxJQyBPTikKIFdFQktJVF9PUFRJT05fREVGSU5FKFVTRV9TWVNURU1EICJX
aGV0aGVyIHRvIGVuYWJsZSBqb3VybmFsZCBsb2dnaW5nIiBQVUJMSUMgT04pCkBAIC0xOTcsNiAr
MTk3LDEzIEBAIGluY2x1ZGUoR1N0cmVhbWVyRGVwZW5kZW5jaWVzKQogIyB0aGlzIHBvaW50LCBh
bmQgZG8gbm90IGF0dGVtcHQgdG8gY2hhbmdlIGFueSBvcHRpb24gYWZ0ZXIgdGhpcyBwb2ludC4K
IFdFQktJVF9PUFRJT05fRU5EKCkKIAoraWYgKFVTRV9TT1VQMikKKyAgICBzZXQoU09VUF9NSU5J
TVVNX1ZFUlNJT04gMi41NC4wKQorZWxzZSAoKQorICAgIHNldChTT1VQX01JTklNVU1fVkVSU0lP
TiAyLjkxLjApCitlbmRpZiAoKQorZmluZF9wYWNrYWdlKExpYlNvdXAgJHtTT1VQX01JTklNVU1f
VkVSU0lPTn0gUkVRVUlSRUQpCisKIFNFVF9BTkRfRVhQT1NFX1RPX0JVSUxEKFdURl9QTEFURk9S
TV9RVUFSVFogJHtFTkFCTEVfUVVBUlRaX1RBUkdFVH0pCiBTRVRfQU5EX0VYUE9TRV9UT19CVUlM
RChXVEZfUExBVEZPUk1fWDExICR7RU5BQkxFX1gxMV9UQVJHRVR9KQogU0VUX0FORF9FWFBPU0Vf
VE9fQlVJTEQoV1RGX1BMQVRGT1JNX1dBWUxBTkQgJHtFTkFCTEVfV0FZTEFORF9UQVJHRVR9KQpA
QCAtMjE3LDYgKzIyNCwxMSBAQCBhZGRfZGVmaW5pdGlvbnMoLURTVk5fUkVWSVNJT049IiR7U1ZO
X1JFVklTSU9OfSIpCiAKIFNFVF9BTkRfRVhQT1NFX1RPX0JVSUxEKEhBVkVfR1RLX1VOSVhfUFJJ
TlRJTkcgJHtHVEtfVU5JWF9QUklOVF9GT1VORH0pCiAKKyMgR1VyaSBpcyBhdmFpbGFibGUgaW4g
R0xpYiBzaW5jZSB2ZXJzaW9uIDIuNjYsIGJ1dCB3ZSBvbmx5IHdhbnQgdG8gdXNlIGl0IGlmIHZl
cnNpb24gaXMgPj0gMi42Ny4xLgoraWYgKFBDX0dMSUJfVkVSU0lPTiBWRVJTSU9OX0dSRUFURVIg
IjIuNjcuMSIgT1IgUENfR0xJQl9WRVJTSU9OIFNUUkVRVUFMICIyLjY3LjEiKQorICAgIFNFVF9B
TkRfRVhQT1NFX1RPX0JVSUxEKEhBVkVfR1VSSSAxKQorZW5kaWYgKCkKKwogaWYgKFVTRV9XUEVf
UkVOREVSRVIpCiAgICAgZmluZF9wYWNrYWdlKFdQRSAxLjMuMCkKICAgICBpZiAoTk9UIFdQRV9G
T1VORCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9PcHRpb25zV1BFLmNtYWtlIGIvU291cmNl
L2NtYWtlL09wdGlvbnNXUEUuY21ha2UKaW5kZXggMjA4MGNhOGIxNGIyLi4wZGYyMjk2MjRkM2Ug
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9PcHRpb25zV1BFLmNtYWtlCisrKyBiL1NvdXJjZS9j
bWFrZS9PcHRpb25zV1BFLmNtYWtlCkBAIC0yNiw3ICsyNiw2IEBAIGZpbmRfcGFja2FnZShJQ1Ug
NjAuMiBSRVFVSVJFRCBDT01QT05FTlRTIGRhdGEgaTE4biB1YykKIGZpbmRfcGFja2FnZShKUEVH
IFJFUVVJUkVEKQogZmluZF9wYWNrYWdlKExpYkVwb3h5IDEuNC4wIFJFUVVJUkVEKQogZmluZF9w
YWNrYWdlKExpYkdjcnlwdCAxLjYuMCBSRVFVSVJFRCkKLWZpbmRfcGFja2FnZShMaWJTb3VwIDIu
NTQuMCBSRVFVSVJFRCkKIGZpbmRfcGFja2FnZShMaWJYbWwyIDIuOC4wIFJFUVVJUkVEKQogZmlu
ZF9wYWNrYWdlKFBORyBSRVFVSVJFRCkKIGZpbmRfcGFja2FnZShTUUxpdGUzIFJFUVVJUkVEKQpA
QCAtODcsNiArODYsNyBAQCBXRUJLSVRfT1BUSU9OX0RFRklORShVU0VfT1BFTkpQRUcgIldoZXRo
ZXIgdG8gZW5hYmxlIHN1cHBvcnQgZm9yIEpQRUcyMDAwIGltYWdlcwogV0VCS0lUX09QVElPTl9E
RUZJTkUoVVNFX1dPRkYyICJXaGV0aGVyIHRvIGVuYWJsZSBzdXBwb3J0IGZvciBXT0ZGMiBXZWIg
Rm9udHMuIiBQVUJMSUMgT04pCiBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfV1BFX1FUX0FQ
SSAiV2hldGhlciB0byBlbmFibGUgc3VwcG9ydCBmb3IgdGhlIFF0NS9RTUwgcGx1Z2luIiBQVUJM
SUMgJHtFTkFCTEVfREVWRUxPUEVSX01PREV9KQogV0VCS0lUX09QVElPTl9ERUZJTkUoVVNFX1NZ
U1RFTUQgIldoZXRoZXIgdG8gZW5hYmxlIGpvdXJuYWxkIGxvZ2dpbmciIFBVQkxJQyBPTikKK1dF
QktJVF9PUFRJT05fREVGSU5FKFVTRV9TT1VQMiAiV2hldGhlciB0byBlbmFibGUgdXNhZ2Ugb2Yg
U291cCAyIGluc3RlYWQgb2YgU291cCAzLiIgUFVCTElDIE9OKQogCiAjIFByaXZhdGUgb3B0aW9u
cyBzcGVjaWZpYyB0byB0aGUgV1BFIHBvcnQuCiBXRUJLSVRfT1BUSU9OX0RFRklORShVU0VfR1NU
UkVBTUVSX0hPTEVQVU5DSCAiV2hldGhlciB0byBlbmFibGUgR1N0cmVhbWVyIGhvbGVwdW5jaCIg
UFJJVkFURSBPRkYpCkBAIC0xMjYsNiArMTI2LDEzIEBAIGluY2x1ZGUoR1N0cmVhbWVyRGVwZW5k
ZW5jaWVzKQogCiBXRUJLSVRfT1BUSU9OX0VORCgpCiAKK2lmIChVU0VfU09VUDIpCisgICAgc2V0
KFNPVVBfTUlOSU1VTV9WRVJTSU9OIDIuNTQuMCkKK2Vsc2UgKCkKKyAgICBzZXQoU09VUF9NSU5J
TVVNX1ZFUlNJT04gMi45MS4wKQorZW5kaWYgKCkKK2ZpbmRfcGFja2FnZShMaWJTb3VwICR7U09V
UF9NSU5JTVVNX1ZFUlNJT059IFJFUVVJUkVEKQorCiBpZiAoRU5BQkxFX0FDQ0VTU0lCSUxJVFkp
CiAgICAgZmluZF9wYWNrYWdlKEFUSyAyLjE2LjApCiAgICAgaWYgKE5PVCBBVEtfRk9VTkQpCkBA
IC0yMzcsNiArMjQ0LDExIEBAIFNFVF9BTkRfRVhQT1NFX1RPX0JVSUxEKFVTRV9USUxFRF9CQUNL
SU5HX1NUT1JFIFRSVUUpCiBTRVRfQU5EX0VYUE9TRV9UT19CVUlMRChVU0VfQ09PUkRJTkFURURf
R1JBUEhJQ1MgVFJVRSkKIFNFVF9BTkRfRVhQT1NFX1RPX0JVSUxEKFVTRV9OSUNPU0lBIFRSVUUp
CiAKKyMgR1VyaSBpcyBhdmFpbGFibGUgaW4gR0xpYiBzaW5jZSB2ZXJzaW9uIDIuNjYsIGJ1dCB3
ZSBvbmx5IHdhbnQgdG8gdXNlIGl0IGlmIHZlcnNpb24gaXMgPj0gMi42Ny4xLgoraWYgKFBDX0dM
SUJfVkVSU0lPTiBWRVJTSU9OX0dSRUFURVIgIjIuNjcuMSIgT1IgUENfR0xJQl9WRVJTSU9OIFNU
UkVRVUFMICIyLjY3LjEiKQorICAgIFNFVF9BTkRfRVhQT1NFX1RPX0JVSUxEKEhBVkVfR1VSSSAx
KQorZW5kaWYgKCkKKwogIyBPdmVycmlkZSB0aGUgY2FjaGVkIHZhcmlhYmxlLCBndGstZG9jIGRv
ZXMgbm90IHJlYWxseSB3b3JrIHdoZW4gY3Jvc3MtYnVpbGRpbmcgb3IgYnVpbGRpbmcgb24gTWFj
LgogaWYgKENNQUtFX0NST1NTQ09NUElMSU5HIE9SIEFQUExFKQogICAgIHNldChFTkFCTEVfR1RL
RE9DIE9GRikKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwpp
bmRleCA4MTc5MjZmNjBlNTUuLjk3MzFjOTYzYWY2ZiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdl
TG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDIxLTAyLTE4ICBD
YXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KKworICAgICAgICBbU09V
UF0gQWRkIHN1cHBvcnQgZm9yIGxpYnNvdXAzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMjIwOTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIE1pbmlCcm93c2VyL2d0ay9Ccm93c2VyVGFiLmM6CisgICAg
ICAgICh0bHNFcnJvcnNEaWFsb2dSZXNwb25zZSk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9Q
bGF0Zm9ybUdUSy5jbWFrZToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdM
aWIvVGVzdEF1dGhlbnRpY2F0aW9uLmNwcDoKKyAgICAgICAgKFR1bm5lbDo6VHVubmVsKToKKyAg
ICAgICAgKFR1bm5lbDo6Y29ubmVjdCk6CisgICAgICAgIChzZXJ2ZXJDYWxsYmFjayk6CisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RCYWNrRm9yd2FyZExpc3Qu
Y3BwOgorICAgICAgICAoc2VydmVyQ2FsbGJhY2spOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0R0xpYi9UZXN0Q29va2llTWFuYWdlci5jcHA6CisgICAgICAgICh0ZXN0Q29v
a2llTWFuYWdlckFkZENvb2tpZSk6CisgICAgICAgICh0ZXN0Q29va2llTWFuYWdlckdldENvb2tp
ZXMpOgorICAgICAgICAodGVzdENvb2tpZU1hbmFnZXJEZWxldGVDb29raWUpOgorICAgICAgICAo
c2VydmVyQ2FsbGJhY2spOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xp
Yi9UZXN0RG93bmxvYWRzLmNwcDoKKyAgICAgICAgKGFkZENvbnRlbnREaXNwb3NpdGlvbkhUVFBI
ZWFkZXJUb1Jlc3BvbnNlKToKKyAgICAgICAgKHdyaXRlTmV4dENodW5rKToKKyAgICAgICAgKHNl
cnZlckNhbGxiYWNrKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIv
VGVzdExvYWRlckNsaWVudC5jcHA6CisgICAgICAgICh0ZXN0TG9hZGluZ0Vycm9yKToKKyAgICAg
ICAgKHRlc3RXZWJWaWV3SXNMb2FkaW5nKToKKyAgICAgICAgKHNlcnZlckNhbGxiYWNrKToKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFJlc291cmNlcy5jcHA6
CisgICAgICAgIChhZGRDYWNoZUhUVFBIZWFkZXJzVG9SZXNwb25zZSk6CisgICAgICAgIChzZXJ2
ZXJDYWxsYmFjayk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rl
c3RTU0wuY3BwOgorICAgICAgICAoV2ViU29ja2V0VGVzdDo6c2VydmVyV2ViU29ja2V0Q2FsbGJh
Y2spOgorICAgICAgICAoaHR0cHNTZXJ2ZXJDYWxsYmFjayk6CisgICAgICAgIChodHRwU2VydmVy
Q2FsbGJhY2spOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0
V2ViS2l0RmF2aWNvbkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKHNlcnZlckNhbGxiYWNrKToKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdFBvbGljeUNs
aWVudC5jcHA6CisgICAgICAgIChzZXJ2ZXJDYWxsYmFjayk6CisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRTZXR0aW5ncy5jcHA6CisgICAgICAgIChz
ZXJ2ZXJDYWxsYmFjayk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGli
L1Rlc3RXZWJLaXRVc2VyQ29udGVudE1hbmFnZXIuY3BwOgorICAgICAgICAoc2VydmVyQ2FsbGJh
Y2spOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0
V2ViQ29udGV4dC5jcHA6CisgICAgICAgIChzZXJ2ZXJDYWxsYmFjayk6CisgICAgICAgIChQcm94
eVRlc3Q6OndlYlNvY2tldFByb3h5U2VydmVyQ2FsbGJhY2spOgorICAgICAgICAod2ViU29ja2V0
U2VydmVyQ2FsbGJhY2spOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xp
Yi9UZXN0V2ViS2l0V2ViVmlldy5jcHA6CisgICAgICAgIChzZXJ2ZXJDYWxsYmFjayk6CisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJzaXRlRGF0YS5jcHA6
CisgICAgICAgIChzZXJ2ZXJDYWxsYmFjayk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRHdGsvVGVzdENvbnRleHRNZW51LmNwcDoKKyAgICAgICAgKHdyaXRlTmV4dENodW5r
KToKKyAgICAgICAgKHNlcnZlckNhbGxiYWNrKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2ds
aWIvV2ViS2l0R0xpYi9XZWJLaXRUZXN0U2VydmVyLmNwcDoKKyAgICAgICAgKFdlYktpdFRlc3RT
ZXJ2ZXI6OnJ1bik6CisgICAgICAgIChXZWJLaXRUZXN0U2VydmVyOjphZGRXZWJTb2NrZXRIYW5k
bGVyKToKKwogMjAyMS0wMi0xNyAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxp
YS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTihyMjcyNjM2KSBbR1RLXSBDcmFzaCBhbmQgZmFp
bHVyZXMgaW4gQVBJIHRlc3QgL1dlYktpdDJHdGsvVGVzdFJlc291cmNlcwpkaWZmIC0tZ2l0IGEv
VG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJUYWIuYyBiL1Rvb2xzL01pbmlCcm93c2VyL2d0
ay9Ccm93c2VyVGFiLmMKaW5kZXggOTkzNTg3OTM2MzNlLi4zYjJmNWRlY2RiMjYgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2VyVGFiLmMKKysrIGIvVG9vbHMvTWluaUJy
b3dzZXIvZ3RrL0Jyb3dzZXJUYWIuYwpAQCAtMjE5LDkgKzIxOSwxNSBAQCBzdGF0aWMgdm9pZCB0
bHNFcnJvcnNEaWFsb2dSZXNwb25zZShHdGtXaWRnZXQgKmRpYWxvZywgZ2ludCByZXNwb25zZSwg
QnJvd3NlclRhYgogICAgIGlmIChyZXNwb25zZSA9PSBHVEtfUkVTUE9OU0VfWUVTKSB7CiAgICAg
ICAgIGNvbnN0IGNoYXIgKmZhaWxpbmdVUkkgPSAoY29uc3QgY2hhciAqKWdfb2JqZWN0X2dldF9k
YXRhKEdfT0JKRUNUKGRpYWxvZyksICJmYWlsaW5nVVJJIik7CiAgICAgICAgIEdUbHNDZXJ0aWZp
Y2F0ZSAqY2VydGlmaWNhdGUgPSAoR1Rsc0NlcnRpZmljYXRlICopZ19vYmplY3RfZ2V0X2RhdGEo
R19PQkpFQ1QoZGlhbG9nKSwgImNlcnRpZmljYXRlIik7CisjaWYgU09VUF9DSEVDS19WRVJTSU9O
KDIsIDkxLCAwKQorICAgICAgICBHVXJpICp1cmkgPSBnX3VyaV9wYXJzZShmYWlsaW5nVVJJLCBT
T1VQX0hUVFBfVVJJX0ZMQUdTLCBOVUxMKTsKKyAgICAgICAgd2Via2l0X3dlYl9jb250ZXh0X2Fs
bG93X3Rsc19jZXJ0aWZpY2F0ZV9mb3JfaG9zdCh3ZWJraXRfd2ViX3ZpZXdfZ2V0X2NvbnRleHQo
dGFiLT53ZWJWaWV3KSwgY2VydGlmaWNhdGUsIGdfdXJpX2dldF9ob3N0KHVyaSkpOworICAgICAg
ICBnX3VyaV91bnJlZih1cmkpOworI2Vsc2UKICAgICAgICAgU291cFVSSSAqdXJpID0gc291cF91
cmlfbmV3KGZhaWxpbmdVUkkpOwogICAgICAgICB3ZWJraXRfd2ViX2NvbnRleHRfYWxsb3dfdGxz
X2NlcnRpZmljYXRlX2Zvcl9ob3N0KHdlYmtpdF93ZWJfdmlld19nZXRfY29udGV4dCh0YWItPndl
YlZpZXcpLCBjZXJ0aWZpY2F0ZSwgdXJpLT5ob3N0KTsKICAgICAgICAgc291cF91cmlfZnJlZSh1
cmkpOworI2VuZGlmCiAgICAgICAgIHdlYmtpdF93ZWJfdmlld19sb2FkX3VyaSh0YWItPndlYlZp
ZXcsIGZhaWxpbmdVUkkpOwogICAgIH0KICNpZiBHVEtfQ0hFQ0tfVkVSU0lPTigzLCA5OCwgNSkK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1HVEsuY21ha2UgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4IGYzNDA2N2M1MjFjOC4uZWQz
MmM3NGUzODI3IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtR1RLLmNt
YWtlCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1HVEsuY21ha2UKQEAgLTEyNiwz
ICsxMjYsOCBAQCBzZXQoVGVzdEpTQ19ERUZJTklUSU9OUwogCiBXRUJLSVRfRVhFQ1VUQUJMRV9E
RUNMQVJFKFRlc3RKU0MpCiBXRUJLSVRfVEVTVChUZXN0SlNDKQorCisjIFRlc3RKYXZhU2NyaXB0
Q29yZQorbGlzdChBUFBFTkQgVGVzdEphdmFTY3JpcHRDb3JlX1NZU1RFTV9JTkNMVURFX0RJUkVD
VE9SSUVTCisgICAgJHtHTElCX0lOQ0xVREVfRElSU30KKykKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0QXV0aGVudGljYXRpb24uY3BwIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RBdXRoZW50aWNhdGlvbi5jcHAK
aW5kZXggMzgwZTAyYjcyZjUwLi5lOGYzMzZhN2I1YTQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0QXV0aGVudGljYXRpb24uY3BwCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0QXV0aGVudGljYXRpb24uY3Bw
CkBAIC0yMCw2ICsyMCw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTG9hZFRy
YWNraW5nVGVzdC5oIgogI2luY2x1ZGUgIldlYktpdFRlc3RTZXJ2ZXIuaCIKKyNpbmNsdWRlIDxX
ZWJDb3JlL1NvdXBWZXJzaW9uaW5nLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgog
CiBzdGF0aWMgV2ViS2l0VGVzdFNlcnZlcioga1NlcnZlcjsKQEAgLTMzNiw3ICszMzcsMTEgQEAg
c3RhdGljIHZvaWQgdGVzdFdlYlZpZXdBdXRoZW50aWNhdGlvbkVtcHR5UmVhbG0oQXV0aGVudGlj
YXRpb25UZXN0KiB0ZXN0LCBnY29uc3QKIGNsYXNzIFR1bm5lbCB7CiAgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CisjaWYgVVNFKFNPVVAyKQogICAgIFR1bm5lbChTb3VwU2Vy
dmVyKiBzZXJ2ZXIsIFNvdXBNZXNzYWdlKiBtZXNzYWdlKQorI2Vsc2UKKyAgICBUdW5uZWwoU291
cFNlcnZlciogc2VydmVyLCBTb3VwU2VydmVyTWVzc2FnZSogbWVzc2FnZSkKKyNlbmRpZgogICAg
ICAgICA6IG1fc2VydmVyKHNlcnZlcikKICAgICAgICAgLCBtX21lc3NhZ2UobWVzc2FnZSkKICAg
ICB7CkBAIC0zNTIsOCArMzU3LDE1IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIG1fY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKTsKICAgICAgICAgR1JlZlB0
cjxHU29ja2V0Q2xpZW50PiBjbGllbnQgPSBhZG9wdEdSZWYoZ19zb2NrZXRfY2xpZW50X25ldygp
KTsKLSAgICAgICAgYXV0byogdXJpID0gc291cF9tZXNzYWdlX2dldF91cmkobV9tZXNzYWdlLmdl
dCgpKTsKLSAgICAgICAgZ19zb2NrZXRfY2xpZW50X2Nvbm5lY3RfdG9faG9zdF9hc3luYyhjbGll
bnQuZ2V0KCksIHVyaS0+aG9zdCwgdXJpLT5wb3J0LCBudWxscHRyLCBbXShHT2JqZWN0KiBzb3Vy
Y2UsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBncG9pbnRlciB1c2VyRGF0YSkgeworICAgICAgICBh
dXRvKiB1cmkgPSBzb3VwX3NlcnZlcl9tZXNzYWdlX2dldF91cmkobV9tZXNzYWdlLmdldCgpKTsK
KyNpZiBVU0UoU09VUDIpCisgICAgICAgIGNvbnN0IGNoYXIqIGhvc3QgPSB1cmktPmhvc3Q7Cisg
ICAgICAgIGludCBwb3J0ID0gdXJpLT5wb3J0OworI2Vsc2UKKyAgICAgICAgY29uc3QgY2hhciog
aG9zdCA9IGdfdXJpX2dldF9ob3N0KHVyaSk7CisgICAgICAgIGludCBwb3J0ID0gc3RkOjptYXg8
aW50PihnX3VyaV9nZXRfcG9ydCh1cmkpLCAwKTsKKyNlbmRpZgorICAgICAgICBnX3NvY2tldF9j
bGllbnRfY29ubmVjdF90b19ob3N0X2FzeW5jKGNsaWVudC5nZXQoKSwgaG9zdCwgcG9ydCwgbnVs
bHB0ciwgW10oR09iamVjdCogc291cmNlLCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgZ3BvaW50ZXIg
dXNlckRhdGEpIHsKICAgICAgICAgICAgIGF1dG8qIHR1bm5lbCA9IHN0YXRpY19jYXN0PFR1bm5l
bCo+KHVzZXJEYXRhKTsKICAgICAgICAgICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsK
ICAgICAgICAgICAgIEdSZWZQdHI8R1NvY2tldENvbm5lY3Rpb24+IGNvbm5lY3Rpb24gPSBhZG9w
dEdSZWYoZ19zb2NrZXRfY2xpZW50X2Nvbm5lY3RfdG9faG9zdF9maW5pc2goR19TT0NLRVRfQ0xJ
RU5UKHNvdXJjZSksIHJlc3VsdCwgJmVycm9yLm91dFB0cigpKSk7CkBAIC0zNjgsNjYgKzM4MCw4
MSBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgR1JlZlB0cjxTb3VwU2VydmVyPiBtX3NlcnZlcjsK
KyNpZiBVU0UoU09VUDIpCiAgICAgR1JlZlB0cjxTb3VwTWVzc2FnZT4gbV9tZXNzYWdlOworI2Vs
c2UKKyAgICBHUmVmUHRyPFNvdXBTZXJ2ZXJNZXNzYWdlPiBtX21lc3NhZ2U7CisjZW5kaWYKICAg
ICBGdW5jdGlvbjx2b2lkIChjb25zdCBjaGFyKik+IG1fY29tcGxldGlvbkhhbmRsZXI7CiB9Owog
CiB1bnNpZ25lZCBnUHJveHlTZXJ2ZXJQb3J0OwogCi1zdGF0aWMgdm9pZCBzZXJ2ZXJDYWxsYmFj
ayhTb3VwU2VydmVyKiBzZXJ2ZXIsIFNvdXBNZXNzYWdlKiBtZXNzYWdlLCBjb25zdCBjaGFyKiBw
YXRoLCBHSGFzaFRhYmxlKiwgU291cENsaWVudENvbnRleHQqIGNvbnRleHQsIHZvaWQqKQorI2lm
IFVTRShTT1VQMikKK3N0YXRpYyB2b2lkIHNlcnZlckNhbGxiYWNrKFNvdXBTZXJ2ZXIqIHNlcnZl
ciwgU291cE1lc3NhZ2UqIG1lc3NhZ2UsIGNvbnN0IGNoYXIqIHBhdGgsIEdIYXNoVGFibGUqLCBT
b3VwQ2xpZW50Q29udGV4dCogY29udGV4dCwgZ3BvaW50ZXIpCisjZWxzZQorc3RhdGljIHZvaWQg
c2VydmVyQ2FsbGJhY2soU291cFNlcnZlciogc2VydmVyLCBTb3VwU2VydmVyTWVzc2FnZSogbWVz
c2FnZSwgY29uc3QgY2hhciogcGF0aCwgR0hhc2hUYWJsZSosIGdwb2ludGVyKQorI2VuZGlmCiB7
Ci0gICAgdW5zaWduZWQgcG9ydCA9IGdfaW5ldF9zb2NrZXRfYWRkcmVzc19nZXRfcG9ydChHX0lO
RVRfU09DS0VUX0FERFJFU1MoKHNvdXBfY2xpZW50X2NvbnRleHRfZ2V0X2xvY2FsX2FkZHJlc3Mo
Y29udGV4dCkpKSk7Ci0gICAgaWYgKG1lc3NhZ2UtPm1ldGhvZCA9PSBTT1VQX01FVEhPRF9DT05O
RUNUKSB7CisjaWYgVVNFKFNPVVAyKQorICAgIHVuc2lnbmVkIHBvcnQgPSBnX2luZXRfc29ja2V0
X2FkZHJlc3NfZ2V0X3BvcnQoR19JTkVUX1NPQ0tFVF9BRERSRVNTKHNvdXBfY2xpZW50X2NvbnRl
eHRfZ2V0X2xvY2FsX2FkZHJlc3MoY29udGV4dCkpKTsKKyNlbHNlCisgICAgdW5zaWduZWQgcG9y
dCA9IGdfaW5ldF9zb2NrZXRfYWRkcmVzc19nZXRfcG9ydChHX0lORVRfU09DS0VUX0FERFJFU1Mo
c291cF9zZXJ2ZXJfbWVzc2FnZV9nZXRfbG9jYWxfYWRkcmVzcyhtZXNzYWdlKSkpOworI2VuZGlm
CisKKyAgICBpZiAoc291cF9zZXJ2ZXJfbWVzc2FnZV9nZXRfbWV0aG9kKG1lc3NhZ2UpID09IFNP
VVBfTUVUSE9EX0NPTk5FQ1QpIHsKICAgICAgICAgZ19hc3NlcnRfY21wdWludChwb3J0LCA9PSwg
Z1Byb3h5U2VydmVyUG9ydCk7CiAgICAgICAgIGF1dG8gdHVubmVsID0gbWFrZVVuaXF1ZTxUdW5u
ZWw+KHNlcnZlciwgbWVzc2FnZSk7CiAgICAgICAgIGF1dG8qIHR1bm5lbFB0ciA9IHR1bm5lbC5n
ZXQoKTsKICAgICAgICAgdHVubmVsUHRyLT5jb25uZWN0KFt0dW5uZWwgPSBXVEZNb3ZlKHR1bm5l
bCldKGNvbnN0IGNoYXIqIGVycm9yTWVzc2FnZSkgewogICAgICAgICAgICAgaWYgKGVycm9yTWVz
c2FnZSkgewotICAgICAgICAgICAgICAgIHNvdXBfbWVzc2FnZV9zZXRfc3RhdHVzKHR1bm5lbC0+
bV9tZXNzYWdlLmdldCgpLCBTT1VQX1NUQVRVU19CQURfR0FURVdBWSk7Ci0gICAgICAgICAgICAg
ICAgc291cF9tZXNzYWdlX3NldF9yZXNwb25zZSh0dW5uZWwtPm1fbWVzc2FnZS5nZXQoKSwgInRl
eHQvcGxhaW4iLCBTT1VQX01FTU9SWV9DT1BZLCBlcnJvck1lc3NhZ2UsIHN0cmxlbihlcnJvck1l
c3NhZ2UpKTsKKyAgICAgICAgICAgICAgICBzb3VwX3NlcnZlcl9tZXNzYWdlX3NldF9zdGF0dXMo
dHVubmVsLT5tX21lc3NhZ2UuZ2V0KCksIFNPVVBfU1RBVFVTX0JBRF9HQVRFV0FZLCBudWxscHRy
KTsKKyAgICAgICAgICAgICAgICBzb3VwX3NlcnZlcl9tZXNzYWdlX3NldF9yZXNwb25zZSh0dW5u
ZWwtPm1fbWVzc2FnZS5nZXQoKSwgInRleHQvcGxhaW4iLCBTT1VQX01FTU9SWV9DT1BZLCBlcnJv
ck1lc3NhZ2UsIHN0cmxlbihlcnJvck1lc3NhZ2UpKTsKICAgICAgICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICAgICAgc291cF9tZXNzYWdlX2hlYWRlcnNfYXBwZW5kKHR1bm5lbC0+bV9tZXNz
YWdlLT5yZXNwb25zZV9oZWFkZXJzLCAiUHJveHktQXV0aGVudGljYXRlIiwgIkJhc2ljIHJlYWxt
PVwiUHJveHkgcmVhbG1cIiIpOwotICAgICAgICAgICAgICAgIHNvdXBfbWVzc2FnZV9zZXRfc3Rh
dHVzKHR1bm5lbC0+bV9tZXNzYWdlLmdldCgpLCBTT1VQX1NUQVRVU19QUk9YWV9BVVRIRU5USUNB
VElPTl9SRVFVSVJFRCk7CisgICAgICAgICAgICAgICAgc291cF9tZXNzYWdlX2hlYWRlcnNfYXBw
ZW5kKHNvdXBfc2VydmVyX21lc3NhZ2VfZ2V0X3Jlc3BvbnNlX2hlYWRlcnModHVubmVsLT5tX21l
c3NhZ2UuZ2V0KCkpLCAiUHJveHktQXV0aGVudGljYXRlIiwgIkJhc2ljIHJlYWxtPVwiUHJveHkg
cmVhbG1cIiIpOworICAgICAgICAgICAgICAgIHNvdXBfc2VydmVyX21lc3NhZ2Vfc2V0X3N0YXR1
cyh0dW5uZWwtPm1fbWVzc2FnZS5nZXQoKSwgU09VUF9TVEFUVVNfUFJPWFlfQVVUSEVOVElDQVRJ
T05fUkVRVUlSRUQsIG51bGxwdHIpOwogICAgICAgICAgICAgfQogICAgICAgICB9KTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChtZXNzYWdlLT5tZXRob2QgIT0gU09VUF9NRVRI
T0RfR0VUKSB7Ci0gICAgICAgIHNvdXBfbWVzc2FnZV9zZXRfc3RhdHVzKG1lc3NhZ2UsIFNPVVBf
U1RBVFVTX05PVF9JTVBMRU1FTlRFRCk7CisgICAgaWYgKHNvdXBfc2VydmVyX21lc3NhZ2VfZ2V0
X21ldGhvZChtZXNzYWdlKSAhPSBTT1VQX01FVEhPRF9HRVQpIHsKKyAgICAgICAgc291cF9zZXJ2
ZXJfbWVzc2FnZV9zZXRfc3RhdHVzKG1lc3NhZ2UsIFNPVVBfU1RBVFVTX05PVF9JTVBMRU1FTlRF
RCwgbnVsbHB0cik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBhdXRvKiByZXNwb25z
ZUJvZHkgPSBzb3VwX3NlcnZlcl9tZXNzYWdlX2dldF9yZXNwb25zZV9ib2R5KG1lc3NhZ2UpOwor
CiAgICAgaWYgKGdfc3RyX2hhc19zdWZmaXgocGF0aCwgIi9hdXRoLXRlc3QuaHRtbCIpIHx8IGdf
c3RyX2hhc19zdWZmaXgocGF0aCwgIi9lbXB0eS1yZWFsbS5odG1sIikpIHsKICAgICAgICAgYm9v
bCBpc1Byb3h5ID0gZ19zdHJfaGFzX3ByZWZpeChwYXRoLCAiL3Byb3h5Iik7CiAgICAgICAgIGlm
IChpc1Byb3h5KQogICAgICAgICAgICAgZ19hc3NlcnRfY21wdWludChwb3J0LCA9PSwgZ1Byb3h5
U2VydmVyUG9ydCk7CiAKLSAgICAgICAgY29uc3QgY2hhciogYXV0aG9yaXphdGlvbiA9IHNvdXBf
bWVzc2FnZV9oZWFkZXJzX2dldF9vbmUobWVzc2FnZS0+cmVxdWVzdF9oZWFkZXJzLCAiQXV0aG9y
aXphdGlvbiIpOworICAgICAgICBjb25zdCBjaGFyKiBhdXRob3JpemF0aW9uID0gc291cF9tZXNz
YWdlX2hlYWRlcnNfZ2V0X29uZShzb3VwX3NlcnZlcl9tZXNzYWdlX2dldF9yZXF1ZXN0X2hlYWRl
cnMobWVzc2FnZSksICJBdXRob3JpemF0aW9uIik7CiAgICAgICAgIC8vIFJlcXVpcmUgYXV0aGVu
dGljYXRpb24uCiAgICAgICAgIGlmICghZ19zdHJjbXAwKGF1dGhvcml6YXRpb24sIGF1dGhFeHBl
Y3RlZEF1dGhvcml6YXRpb24pKSB7CiAgICAgICAgICAgICAvLyBTdWNjZXNzZnVsIGF1dGhlbnRp
Y2F0aW9uLgotICAgICAgICAgICAgc291cF9tZXNzYWdlX3NldF9zdGF0dXMobWVzc2FnZSwgU09V
UF9TVEFUVVNfT0spOwotICAgICAgICAgICAgc291cF9tZXNzYWdlX2JvZHlfYXBwZW5kKG1lc3Nh
Z2UtPnJlc3BvbnNlX2JvZHksIFNPVVBfTUVNT1JZX1NUQVRJQywgYXV0aFN1Y2Nlc3NIVE1MU3Ry
aW5nLCBzdHJsZW4oYXV0aFN1Y2Nlc3NIVE1MU3RyaW5nKSk7CisgICAgICAgICAgICBzb3VwX3Nl
cnZlcl9tZXNzYWdlX3NldF9zdGF0dXMobWVzc2FnZSwgU09VUF9TVEFUVVNfT0ssIG51bGxwdHIp
OworICAgICAgICAgICAgc291cF9tZXNzYWdlX2JvZHlfYXBwZW5kKHJlc3BvbnNlQm9keSwgU09V
UF9NRU1PUllfU1RBVElDLCBhdXRoU3VjY2Vzc0hUTUxTdHJpbmcsIHN0cmxlbihhdXRoU3VjY2Vz
c0hUTUxTdHJpbmcpKTsKICAgICAgICAgICAgIEF1dGhlbnRpY2F0aW9uVGVzdDo6YXV0aGVudGlj
YXRpb25SZXRyaWVzID0gMDsKICAgICAgICAgfSBlbHNlIGlmICgrK0F1dGhlbnRpY2F0aW9uVGVz
dDo6YXV0aGVudGljYXRpb25SZXRyaWVzIDwgMykgewogICAgICAgICAgICAgLy8gTm8gb3IgaW52
YWxpZCBhdXRob3JpemF0aW9uIGhlYWRlciBwcm92aWRlZCBieSB0aGUgY2xpZW50LCByZXF1ZXN0
IGF1dGhlbnRpY2F0aW9uIHR3aWNlIHRoZW4gZmFpbC4KLSAgICAgICAgICAgIHNvdXBfbWVzc2Fn
ZV9zZXRfc3RhdHVzKG1lc3NhZ2UsIGlzUHJveHkgPyBTT1VQX1NUQVRVU19QUk9YWV9BVVRIRU5U
SUNBVElPTl9SRVFVSVJFRCA6IFNPVVBfU1RBVFVTX1VOQVVUSE9SSVpFRCk7CisgICAgICAgICAg
ICBzb3VwX3NlcnZlcl9tZXNzYWdlX3NldF9zdGF0dXMobWVzc2FnZSwgaXNQcm94eSA/IFNPVVBf
U1RBVFVTX1BST1hZX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEIDogU09VUF9TVEFUVVNfVU5BVVRI
T1JJWkVELCBudWxscHRyKTsKICAgICAgICAgICAgIGlmICghc3RyY21wKHBhdGgsICIvZW1wdHkt
cmVhbG0uaHRtbCIpKQotICAgICAgICAgICAgICAgIHNvdXBfbWVzc2FnZV9oZWFkZXJzX2FwcGVu
ZChtZXNzYWdlLT5yZXNwb25zZV9oZWFkZXJzLCAiV1dXLUF1dGhlbnRpY2F0ZSIsICJCYXNpYyIp
OworICAgICAgICAgICAgICAgIHNvdXBfbWVzc2FnZV9oZWFkZXJzX2FwcGVuZChzb3VwX3NlcnZl
cl9tZXNzYWdlX2dldF9yZXNwb25zZV9oZWFkZXJzKG1lc3NhZ2UpLCAiV1dXLUF1dGhlbnRpY2F0
ZSIsICJCYXNpYyIpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHNvdXBfbWVz
c2FnZV9oZWFkZXJzX2FwcGVuZChtZXNzYWdlLT5yZXNwb25zZV9oZWFkZXJzLCBpc1Byb3h5ID8g
IlByb3h5LUF1dGhlbnRpY2F0ZSIgOiAiV1dXLUF1dGhlbnRpY2F0ZSIsIGlzUHJveHkgPyAiQmFz
aWMgcmVhbG09XCJQcm94eSByZWFsbVwiIiA6ICJCYXNpYyByZWFsbT1cIm15IHJlYWxtXCIiKTsK
KyAgICAgICAgICAgICAgICBzb3VwX21lc3NhZ2VfaGVhZGVyc19hcHBlbmQoc291cF9zZXJ2ZXJf
bWVzc2FnZV9nZXRfcmVzcG9uc2VfaGVhZGVycyhtZXNzYWdlKSwgaXNQcm94eSA/ICJQcm94eS1B
dXRoZW50aWNhdGUiIDogIldXVy1BdXRoZW50aWNhdGUiLCBpc1Byb3h5ID8gIkJhc2ljIHJlYWxt
PVwiUHJveHkgcmVhbG1cIiIgOiAiQmFzaWMgcmVhbG09XCJteSByZWFsbVwiIik7CiAgICAgICAg
ICAgICAvLyBJbmNsdWRlIGEgZmFpbHVyZSBtZXNzYWdlIGluIGNhc2UgdGhlIHVzZXIgYXR0ZW1w
dHMgdG8gcHJvY2VlZCB3aXRob3V0IGF1dGhlbnRpY2F0aW9uLgotICAgICAgICAgICAgc291cF9t
ZXNzYWdlX2JvZHlfYXBwZW5kKG1lc3NhZ2UtPnJlc3BvbnNlX2JvZHksIFNPVVBfTUVNT1JZX1NU
QVRJQywgYXV0aEZhaWx1cmVIVE1MU3RyaW5nLCBzdHJsZW4oYXV0aEZhaWx1cmVIVE1MU3RyaW5n
KSk7CisgICAgICAgICAgICBzb3VwX21lc3NhZ2VfYm9keV9hcHBlbmQocmVzcG9uc2VCb2R5LCBT
T1VQX01FTU9SWV9TVEFUSUMsIGF1dGhGYWlsdXJlSFRNTFN0cmluZywgc3RybGVuKGF1dGhGYWls
dXJlSFRNTFN0cmluZykpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgLy8gQXV0aGVu
dGljYXRpb24gbm90IHN1Y2Nlc3NmdWwsIGRpc3BsYXkgYSAiNDAxIEF1dGhvcml6YXRpb24gUmVx
dWlyZWQiIHBhZ2UuCi0gICAgICAgICAgICBzb3VwX21lc3NhZ2Vfc2V0X3N0YXR1cyhtZXNzYWdl
LCBpc1Byb3h5ID8gU09VUF9TVEFUVVNfUFJPWFlfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQgOiBT
T1VQX1NUQVRVU19VTkFVVEhPUklaRUQpOwotICAgICAgICAgICAgc291cF9tZXNzYWdlX2JvZHlf
YXBwZW5kKG1lc3NhZ2UtPnJlc3BvbnNlX2JvZHksIFNPVVBfTUVNT1JZX1NUQVRJQywgYXV0aEZh
aWx1cmVIVE1MU3RyaW5nLCBzdHJsZW4oYXV0aEZhaWx1cmVIVE1MU3RyaW5nKSk7CisgICAgICAg
ICAgICBzb3VwX3NlcnZlcl9tZXNzYWdlX3NldF9zdGF0dXMobWVzc2FnZSwgaXNQcm94eSA/IFNP
VVBfU1RBVFVTX1BST1hZX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEIDogU09VUF9TVEFUVVNfVU5B
VVRIT1JJWkVELCBudWxscHRyKTsKKyAgICAgICAgICAgIHNvdXBfbWVzc2FnZV9ib2R5X2FwcGVu
ZChyZXNwb25zZUJvZHksIFNPVVBfTUVNT1JZX1NUQVRJQywgYXV0aEZhaWx1cmVIVE1MU3RyaW5n
LCBzdHJsZW4oYXV0aEZhaWx1cmVIVE1MU3RyaW5nKSk7CiAgICAgICAgIH0KICAgICB9IGVsc2UK
LSAgICAgICAgc291cF9tZXNzYWdlX3NldF9zdGF0dXMobWVzc2FnZSwgU09VUF9TVEFUVVNfTk9U
X0ZPVU5EKTsKKyAgICAgICAgc291cF9zZXJ2ZXJfbWVzc2FnZV9zZXRfc3RhdHVzKG1lc3NhZ2Us
IFNPVVBfU1RBVFVTX05PVF9GT1VORCwgbnVsbHB0cik7CiAKLSAgICBzb3VwX21lc3NhZ2VfYm9k
eV9jb21wbGV0ZShtZXNzYWdlLT5yZXNwb25zZV9ib2R5KTsKKyAgICBzb3VwX21lc3NhZ2VfYm9k
eV9jb21wbGV0ZShyZXNwb25zZUJvZHkpOwogfQogCiBjbGFzcyBQcm94eUF1dGhlbnRpY2F0aW9u
VGVzdCA6IHB1YmxpYyBBdXRoZW50aWNhdGlvblRlc3QgewpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RCYWNrRm9yd2FyZExpc3QuY3BwIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RCYWNrRm9yd2FyZExpc3QuY3Bw
CmluZGV4IDU2YWM0YTA5OTYzYi4uNDBlNjJhMjc1N2ViIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdEJhY2tGb3J3YXJkTGlzdC5jcHAKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RCYWNrRm9yd2FyZExpc3Qu
Y3BwCkBAIC0yMSw2ICsyMSw3IEBACiAKICNpbmNsdWRlICJXZWJLaXRUZXN0U2VydmVyLmgiCiAj
aW5jbHVkZSAiV2ViVmlld1Rlc3QuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1NvdXBWZXJzaW9uaW5n
Lmg+CiAjaW5jbHVkZSA8bGlic291cC9zb3VwLmg+CiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAKQEAg
LTI5LDI0ICszMCwyOCBAQCBzdGF0aWMgY29uc3QgaW50IGtCYWNrRm9yd2FyZExpc3RMaW1pdCA9
IDEwMDsKIAogc3RhdGljIFdlYktpdFRlc3RTZXJ2ZXIqIGtTZXJ2ZXI7CiAKLXN0YXRpYyB2b2lk
IHNlcnZlckNhbGxiYWNrKFNvdXBTZXJ2ZXIqIHNlcnZlciwgU291cE1lc3NhZ2UqIG1zZywgY29u
c3QgY2hhciogcGF0aCwgR0hhc2hUYWJsZSogcXVlcnksIFNvdXBDbGllbnRDb250ZXh0KiBjb250
ZXh0LCBncG9pbnRlciBkYXRhKQorI2lmIFVTRShTT1VQMikKK3N0YXRpYyB2b2lkIHNlcnZlckNh
bGxiYWNrKFNvdXBTZXJ2ZXIqIHNlcnZlciwgU291cE1lc3NhZ2UqIG1zZywgY29uc3QgY2hhciog
cGF0aCwgR0hhc2hUYWJsZSosIFNvdXBDbGllbnRDb250ZXh0KiwgZ3BvaW50ZXIpCisjZWxzZQor
c3RhdGljIHZvaWQgc2VydmVyQ2FsbGJhY2soU291cFNlcnZlciogc2VydmVyLCBTb3VwU2VydmVy
TWVzc2FnZSogbXNnLCBjb25zdCBjaGFyKiBwYXRoLCBHSGFzaFRhYmxlKiwgZ3BvaW50ZXIpCisj
ZW5kaWYKIHsKLSAgICBpZiAobXNnLT5tZXRob2QgIT0gU09VUF9NRVRIT0RfR0VUKSB7Ci0gICAg
ICAgIHNvdXBfbWVzc2FnZV9zZXRfc3RhdHVzKG1zZywgU09VUF9TVEFUVVNfTk9UX0lNUExFTUVO
VEVEKTsKKyAgICBpZiAoc291cF9zZXJ2ZXJfbWVzc2FnZV9nZXRfbWV0aG9kKG1zZykgIT0gU09V
UF9NRVRIT0RfR0VUKSB7CisgICAgICAgIHNvdXBfc2VydmVyX21lc3NhZ2Vfc2V0X3N0YXR1cyht
c2csIFNPVVBfU1RBVFVTX05PVF9JTVBMRU1FTlRFRCwgbnVsbHB0cik7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKICAgICBpZiAoZ19zdHJfaGFzX3N1ZmZpeChwYXRoLCAiZmF2aWNvbi5pY28i
KSkgewotICAgICAgICBzb3VwX21lc3NhZ2Vfc2V0X3N0YXR1cyhtc2csIFNPVVBfU1RBVFVTX05P
VF9GT1VORCk7CisgICAgICAgIHNvdXBfc2VydmVyX21lc3NhZ2Vfc2V0X3N0YXR1cyhtc2csIFNP
VVBfU1RBVFVTX05PVF9GT1VORCwgbnVsbHB0cik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBzb3VwX21lc3NhZ2Vfc2V0X3N0YXR1cyhtc2csIFNPVVBfU1RBVFVTX09LKTsKKyAgICBz
b3VwX3NlcnZlcl9tZXNzYWdlX3NldF9zdGF0dXMobXNnLCBTT1VQX1NUQVRVU19PSywgbnVsbHB0
cik7CiAKICAgICBjaGFyKiBib2R5ID0gZ19zdHJkdXBfcHJpbnRmKCI8aHRtbD48dGl0bGU+JXM8
L3RpdGxlPjxib2R5PiVzPC9ib2R5PjwvaHRtbD4iLCBwYXRoICsgMSwgcGF0aCArIDEpOwotICAg
IHNvdXBfbWVzc2FnZV9ib2R5X2FwcGVuZChtc2ctPnJlc3BvbnNlX2JvZHksIFNPVVBfTUVNT1JZ
X1RBS0UsIGJvZHksIHN0cmxlbihib2R5KSk7Ci0KLSAgICBzb3VwX21lc3NhZ2VfYm9keV9jb21w
bGV0ZShtc2ctPnJlc3BvbnNlX2JvZHkpOworICAgIGF1dG8qIHJlc3BvbnNlQm9keSA9IHNvdXBf
c2VydmVyX21lc3NhZ2VfZ2V0X3Jlc3BvbnNlX2JvZHkobXNnKTsKKyAgICBzb3VwX21lc3NhZ2Vf
Ym9keV9hcHBlbmQocmVzcG9uc2VCb2R5LCBTT1VQX01FTU9SWV9UQUtFLCBib2R5LCBzdHJsZW4o
Ym9keSkpOworICAgIHNvdXBfbWVzc2FnZV9ib2R5X2NvbXBsZXRlKHJlc3BvbnNlQm9keSk7CiB9
CiAKIGNsYXNzIEJhY2tGb3J3YXJkTGlzdFRlc3Q6IHB1YmxpYyBXZWJWaWV3VGVzdCB7CmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdENvb2tpZU1h
bmFnZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RDb29r
aWVNYW5hZ2VyLmNwcAppbmRleCA0YTk1MTAxMDBhZjguLmQ4OGU4NzQxZjdmNyAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RDb29raWVNYW5hZ2Vy
LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdENvb2tp
ZU1hbmFnZXIuY3BwCkBAIC0yMyw2ICsyMyw3IEBACiAjaW5jbHVkZSAiV2ViS2l0VGVzdFNlcnZl
ci5oIgogI2luY2x1ZGUgIldlYlZpZXdUZXN0LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9HVW5pcXVl
UHRyU291cC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU291cFZlcnNpb25pbmcuaD4KICNpbmNsdWRl
IDxnbGliL2dzdGRpby5oPgogCiBzdGF0aWMgV2ViS2l0VGVzdFNlcnZlcioga1NlcnZlcjsKQEAg
LTMwNiw3ICszMDcsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0Q29va2llTWFuYWdlckFkZENvb2tpZShD
b29raWVNYW5hZ2VyVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICBnX2Fzc2VydF9jbXBp
bnQoZ19zdHJ2X2xlbmd0aCh0ZXN0LT5nZXREb21haW5zKCkpLCA9PSwgMSk7CiAKICAgICAvLyBD
aGVjayB0aGUgY29va2llcyB0aGF0IGhhdmUgYmVlbiBhZGRlZCBmb3IgdGhlIGRvbWFpbi4KLSAg
ICBHVW5pcXVlUHRyPGNoYXI+IHVyaShnX3N0cmR1cF9wcmludGYoIiVzOi8vJXMiLCBTT1VQX1VS
SV9TQ0hFTUVfSFRUUCwga0ZpcnN0UGFydHlEb21haW4pKTsKKyAgICBHVW5pcXVlUHRyPGNoYXI+
IHVyaShnX3N0cmR1cF9wcmludGYoImh0dHA6Ly8lcyIsIGtGaXJzdFBhcnR5RG9tYWluKSk7CiAg
ICAgR0xpc3QqIGZvdW5kQ29va2llcyA9IHRlc3QtPmdldENvb2tpZXModXJpLmdldCgpKTsKICAg
ICBnX2Fzc2VydF9jbXBpbnQoZ19saXN0X2xlbmd0aChmb3VuZENvb2tpZXMpLCA9PSwgMSk7CiAK
QEAgLTMzNyw3ICszMzgsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0Q29va2llTWFuYWdlckFkZENvb2tp
ZShDb29raWVNYW5hZ2VyVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICBnX2Fzc2VydF9j
bXBpbnQoZ19zdHJ2X2xlbmd0aCh0ZXN0LT5nZXREb21haW5zKCkpLCA9PSwgMSk7CiAKICAgICAv
LyBSZXRyaWV2ZSB0aGUgbGlzdCBvZiBjb29raWVzIGZvciB0aGUgc2FtZSBkb21haW4gYW5kIHBh
dGggYWdhaW4gbm93IGFuZCBjaGVjay4KLSAgICB1cmkucmVzZXQoZ19zdHJkdXBfcHJpbnRmKCIl
czovLyVzJXMiLCBTT1VQX1VSSV9TQ0hFTUVfSFRUUCwga0ZpcnN0UGFydHlEb21haW4sIGtDb29r
aWVQYXRoTmV3KSk7CisgICAgdXJpLnJlc2V0KGdfc3RyZHVwX3ByaW50ZigiaHR0cDovLyVzJXMi
LCBrRmlyc3RQYXJ0eURvbWFpbiwga0Nvb2tpZVBhdGhOZXcpKTsKICAgICBmb3VuZENvb2tpZXMg
PSB0ZXN0LT5nZXRDb29raWVzKHVyaS5nZXQoKSk7CiAKICAgICAvLyBXZSBoYXZlIG5vdyB0d28g
Y29va2llcyB0aGF0IHdvdWxkIGFwcGx5IHRvIHRoZSBwYXNzZWQgVVJMLCBvbmUgaXMgdGhlIGNv
b2tpZSBpbml0aWFsbHkKQEAgLTM0OSw3ICszNTAsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0Q29va2ll
TWFuYWdlckFkZENvb2tpZShDb29raWVNYW5hZ2VyVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikK
ICAgICB0ZXN0LT5hZGRDb29raWUodGhpcmRDb29raWUuZ2V0KCkpOwogCiAgICAgLy8gT25seSBv
bmUgY29va2llIG5vdywgc2luY2UgdGhlIGRvbWFpbiBpcyBkaWZmZXJlbnQuCi0gICAgdXJpLnJl
c2V0KGdfc3RyZHVwX3ByaW50ZigiJXM6Ly8lcyVzIiwgU09VUF9VUklfU0NIRU1FX0hUVFAsIGtU
aGlyZFBhcnR5RG9tYWluLCBrQ29va2llUGF0aE5ldykpOworICAgIHVyaS5yZXNldChnX3N0cmR1
cF9wcmludGYoImh0dHA6Ly8lcyVzIiwga1RoaXJkUGFydHlEb21haW4sIGtDb29raWVQYXRoTmV3
KSk7CiAgICAgZm91bmRDb29raWVzID0gdGVzdC0+Z2V0Q29va2llcyh1cmkuZ2V0KCkpOwogICAg
IGdfYXNzZXJ0X2NtcGludChnX2xpc3RfbGVuZ3RoKGZvdW5kQ29va2llcyksID09LCAxKTsKICAg
ICBnX2Fzc2VydF9jbXBpbnQoZ19zdHJ2X2xlbmd0aCh0ZXN0LT5nZXREb21haW5zKCkpLCA9PSwg
Mik7CkBAIC0zNzQsNyArMzc1LDcgQEAgc3RhdGljIHZvaWQgdGVzdENvb2tpZU1hbmFnZXJHZXRD
b29raWVzKENvb2tpZU1hbmFnZXJUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIGdfYXNz
ZXJ0X2NtcGludChnX3N0cnZfbGVuZ3RoKHRlc3QtPmdldERvbWFpbnMoKSksID09LCAyKTsKIAog
ICAgIC8vIFJldHJpZXZlIHRoZSBmaXJzdCBjb29raWUgdXNpbmcgYSBIVFRQIHNjaGVtZS4KLSAg
ICBHVW5pcXVlUHRyPGNoYXI+IHVyaShnX3N0cmR1cF9wcmludGYoIiVzOi8vJXMiLCBTT1VQX1VS
SV9TQ0hFTUVfSFRUUCwga0ZpcnN0UGFydHlEb21haW4pKTsKKyAgICBHVW5pcXVlUHRyPGNoYXI+
IHVyaShnX3N0cmR1cF9wcmludGYoImh0dHA6Ly8lcyIsIGtGaXJzdFBhcnR5RG9tYWluKSk7CiAg
ICAgR0xpc3QqIGZvdW5kQ29va2llcyA9IHRlc3QtPmdldENvb2tpZXModXJpLmdldCgpKTsKICAg
ICBnX2Fzc2VydF9jbXBpbnQoZ19saXN0X2xlbmd0aChmb3VuZENvb2tpZXMpLCA9PSwgMSk7CiAK
QEAgLTM4NSw3ICszODYsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0Q29va2llTWFuYWdlckdldENvb2tp
ZXMoQ29va2llTWFuYWdlclRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgZ19hc3NlcnRf
Y21wc3RyKHNvdXBfY29va2llX2dldF92YWx1ZShmb3VuZENvb2tpZSksID09LCBrQ29va2llVmFs
dWUpOwogCiAgICAgLy8gUmV0cmlldmUgdGhlIHNlY29uZCBjb29raWUgdXNpbmcgYSBIVFRQUyBz
Y2hlbWUuCi0gICAgdXJpLnJlc2V0KGdfc3RyZHVwX3ByaW50ZigiJXM6Ly8lcyIsIFNPVVBfVVJJ
X1NDSEVNRV9IVFRQUywga1RoaXJkUGFydHlEb21haW4pKTsKKyAgICB1cmkucmVzZXQoZ19zdHJk
dXBfcHJpbnRmKCJodHRwczovLyVzIiwga1RoaXJkUGFydHlEb21haW4pKTsKICAgICBmb3VuZENv
b2tpZXMgPSB0ZXN0LT5nZXRDb29raWVzKHVyaS5nZXQoKSk7CiAgICAgZ19hc3NlcnRfY21waW50
KGdfbGlzdF9sZW5ndGgoZm91bmRDb29raWVzKSwgPT0sIDEpOwogCkBAIC00MDEsNyArNDAyLDcg
QEAgc3RhdGljIHZvaWQgdGVzdENvb2tpZU1hbmFnZXJHZXRDb29raWVzKENvb2tpZU1hbmFnZXJU
ZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogCiAgICAgLy8gV2Ugc2hvdWxkIGdldCB0d28gY29v
a2llcyB0aGF0IHdvdWxkIGFwcGx5IHRvIHRoZSBzYW1lIFVSTCBwYXNzZWQsIHNpbmNlCiAgICAg
Ly8gaHR0cDovLzEyNy4wLjAuMS9uZXcgaXMgYSBzdWJzZXQgb2YgdGhlIGh0dHA6Ly8xMjcuMC4w
LjEvIFVSTC4KLSAgICB1cmkucmVzZXQoZ19zdHJkdXBfcHJpbnRmKCIlczovLyVzJXMiLCBTT1VQ
X1VSSV9TQ0hFTUVfSFRUUCwga0ZpcnN0UGFydHlEb21haW4sIGtDb29raWVQYXRoTmV3KSk7Cisg
ICAgdXJpLnJlc2V0KGdfc3RyZHVwX3ByaW50ZigiaHR0cDovLyVzJXMiLCBrRmlyc3RQYXJ0eURv
bWFpbiwga0Nvb2tpZVBhdGhOZXcpKTsKICAgICBmb3VuZENvb2tpZXMgPSB0ZXN0LT5nZXRDb29r
aWVzKHVyaS5nZXQoKSk7CiAgICAgZ19hc3NlcnRfY21waW50KGdfbGlzdF9sZW5ndGgoZm91bmRD
b29raWVzKSwgPT0sIDIpOwogCkBAIC00NDUsNyArNDQ2LDcgQEAgc3RhdGljIHZvaWQgdGVzdENv
b2tpZU1hbmFnZXJHZXRDb29raWVzKENvb2tpZU1hbmFnZXJUZXN0KiB0ZXN0LCBnY29uc3Rwb2lu
dGVyKQogICAgIH0KIAogICAgIC8vIFdlIHNob3VsZCBnZXQgMSBjb29raWUgb25seSBpZiB3ZSBz
cGVjaWZ5IGh0dHA6Ly8xMjcuMC4wLjEvLCB0aG91Z2guCi0gICAgdXJpLnJlc2V0KGdfc3RyZHVw
X3ByaW50ZigiJXM6Ly8lcyIsIFNPVVBfVVJJX1NDSEVNRV9IVFRQLCBrRmlyc3RQYXJ0eURvbWFp
bikpOworICAgIHVyaS5yZXNldChnX3N0cmR1cF9wcmludGYoImh0dHA6Ly8lcyIsIGtGaXJzdFBh
cnR5RG9tYWluKSk7CiAgICAgZm91bmRDb29raWVzID0gdGVzdC0+Z2V0Q29va2llcyh1cmkuZ2V0
KCkpOwogICAgIGdfYXNzZXJ0X2NtcGludChnX2xpc3RfbGVuZ3RoKGZvdW5kQ29va2llcyksID09
LCAxKTsKIApAQCAtNDU5LDcgKzQ2MCw3IEBAIHN0YXRpYyB2b2lkIHRlc3RDb29raWVNYW5hZ2Vy
R2V0Q29va2llcyhDb29raWVNYW5hZ2VyVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICB0
ZXN0LT5kZWxldGVBbGxDb29raWVzKCk7CiAgICAgZ19hc3NlcnRfY21waW50KGdfc3Rydl9sZW5n
dGgodGVzdC0+Z2V0RG9tYWlucygpKSwgPT0sIDApOwogCi0gICAgdXJpLnJlc2V0KGdfc3RyZHVw
X3ByaW50ZigiJXM6Ly8lcyIsIFNPVVBfVVJJX1NDSEVNRV9IVFRQLCBrRmlyc3RQYXJ0eURvbWFp
bikpOworICAgIHVyaS5yZXNldChnX3N0cmR1cF9wcmludGYoImh0dHA6Ly8lcyIsIGtGaXJzdFBh
cnR5RG9tYWluKSk7CiAgICAgZm91bmRDb29raWVzID0gdGVzdC0+Z2V0Q29va2llcyh1cmkuZ2V0
KCkpOwogICAgIGdfYXNzZXJ0X251bGwoZm91bmRDb29raWVzKTsKIH0KQEAgLTQ3NCw3ICs0NzUs
NyBAQCBzdGF0aWMgdm9pZCB0ZXN0Q29va2llTWFuYWdlckRlbGV0ZUNvb2tpZShDb29raWVNYW5h
Z2VyVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcgogICAgIGdfYXNzZXJ0X2NtcGludChnX3N0cnZf
bGVuZ3RoKHRlc3QtPmdldERvbWFpbnMoKSksID09LCAyKTsKIAogICAgIC8vIERlbGV0ZSB0aGUg
Y29va2llIGZvciB0aGUgZmlyc3QgcGFydHkgZG9tYWluLgotICAgIEdVbmlxdWVQdHI8Y2hhcj4g
dXJpKGdfc3RyZHVwX3ByaW50ZigiJXM6Ly8lcyIsIFNPVVBfVVJJX1NDSEVNRV9IVFRQLCBrRmly
c3RQYXJ0eURvbWFpbikpOworICAgIEdVbmlxdWVQdHI8Y2hhcj4gdXJpKGdfc3RyZHVwX3ByaW50
ZigiaHR0cDovLyVzIiwga0ZpcnN0UGFydHlEb21haW4pKTsKICAgICBHTGlzdCogZm91bmRDb29r
aWVzID0gdGVzdC0+Z2V0Q29va2llcyh1cmkuZ2V0KCkpOwogICAgIGdfYXNzZXJ0X2NtcGludChn
X2xpc3RfbGVuZ3RoKGZvdW5kQ29va2llcyksID09LCAxKTsKIApAQCAtNDk4LDcgKzQ5OSw3IEBA
IHN0YXRpYyB2b2lkIHRlc3RDb29raWVNYW5hZ2VyRGVsZXRlQ29va2llKENvb2tpZU1hbmFnZXJU
ZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyCiAgICAgZ19hc3NlcnRfY21waW50KGdfc3Rydl9sZW5n
dGgodGVzdC0+Z2V0RG9tYWlucygpKSwgPT0sIDEpOwogCiAgICAgLy8gRGVsZXRlIHRoZSBjb29r
aWUgZm9yIHRoZSB0aGlyZCBwYXJ0eSBkb21haW4uCi0gICAgdXJpLnJlc2V0KGdfc3RyZHVwX3By
aW50ZigiJXM6Ly8lcyIsIFNPVVBfVVJJX1NDSEVNRV9IVFRQLCBrVGhpcmRQYXJ0eURvbWFpbikp
OworICAgIHVyaS5yZXNldChnX3N0cmR1cF9wcmludGYoImh0dHA6Ly8lcyIsIGtUaGlyZFBhcnR5
RG9tYWluKSk7CiAgICAgZm91bmRDb29raWVzID0gdGVzdC0+Z2V0Q29va2llcyh1cmkuZ2V0KCkp
OwogICAgIGdfYXNzZXJ0X2NtcGludChnX2xpc3RfbGVuZ3RoKGZvdW5kQ29va2llcyksID09LCAx
KTsKIApAQCAtNzA1LDI4ICs3MDYsMzIgQEAgc3RhdGljIHZvaWQgdGVzdENvb2tpZU1hbmFnZXJF
cGhlbWVyYWwoQ29va2llTWFuYWdlclRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgZ19t
YWluX2xvb3BfcnVuKHRlc3QtPm1fbWFpbkxvb3ApOwogfQogCisjaWYgVVNFKFNPVVAyKQogc3Rh
dGljIHZvaWQgc2VydmVyQ2FsbGJhY2soU291cFNlcnZlciogc2VydmVyLCBTb3VwTWVzc2FnZSog
bWVzc2FnZSwgY29uc3QgY2hhciogcGF0aCwgR0hhc2hUYWJsZSosIFNvdXBDbGllbnRDb250ZXh0
KiwgZ3BvaW50ZXIpCisjZWxzZQorc3RhdGljIHZvaWQgc2VydmVyQ2FsbGJhY2soU291cFNlcnZl
ciogc2VydmVyLCBTb3VwU2VydmVyTWVzc2FnZSogbWVzc2FnZSwgY29uc3QgY2hhciogcGF0aCwg
R0hhc2hUYWJsZSosIGdwb2ludGVyKQorI2VuZGlmCiB7Ci0gICAgaWYgKG1lc3NhZ2UtPm1ldGhv
ZCAhPSBTT1VQX01FVEhPRF9HRVQpIHsKLSAgICAgICAgc291cF9tZXNzYWdlX3NldF9zdGF0dXMo
bWVzc2FnZSwgU09VUF9TVEFUVVNfTk9UX0lNUExFTUVOVEVEKTsKKyAgICBpZiAoc291cF9zZXJ2
ZXJfbWVzc2FnZV9nZXRfbWV0aG9kKG1lc3NhZ2UpICE9IFNPVVBfTUVUSE9EX0dFVCkgeworICAg
ICAgICBzb3VwX3NlcnZlcl9tZXNzYWdlX3NldF9zdGF0dXMobWVzc2FnZSwgU09VUF9TVEFUVVNf
Tk9UX0lNUExFTUVOVEVELCBudWxscHRyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IHNvdXBfbWVzc2FnZV9zZXRfc3RhdHVzKG1lc3NhZ2UsIFNPVVBfU1RBVFVTX09LKTsKKyAgICBz
b3VwX3NlcnZlcl9tZXNzYWdlX3NldF9zdGF0dXMobWVzc2FnZSwgU09VUF9TVEFUVVNfT0ssIG51
bGxwdHIpOwogICAgIGdjaGFyKiBoZWFkZXJfc3RyID0gZ19zdHJkdXBfcHJpbnRmKCIlcz0lczsg
TWF4LUFnZT02MCIsIGtDb29raWVOYW1lLCBrQ29va2llVmFsdWUpOwogCiAgICAgaWYgKGdfc3Ry
X2VxdWFsKHBhdGgsICIvaW5kZXguaHRtbCIpKSB7CiAgICAgICAgIGNoYXIqIGluZGV4SHRtbCA9
IGdfc3RyZHVwX3ByaW50ZihrSW5kZXhIdG1sRm9ybWF0LCBrU2VydmVyLT5wb3J0KCkpOwotICAg
ICAgICBzb3VwX21lc3NhZ2VfaGVhZGVyc19yZXBsYWNlKG1lc3NhZ2UtPnJlc3BvbnNlX2hlYWRl
cnMsICJTZXQtQ29va2llIiwgaGVhZGVyX3N0cik7Ci0gICAgICAgIHNvdXBfbWVzc2FnZV9ib2R5
X2FwcGVuZChtZXNzYWdlLT5yZXNwb25zZV9ib2R5LCBTT1VQX01FTU9SWV9UQUtFLCBpbmRleEh0
bWwsIHN0cmxlbihpbmRleEh0bWwpKTsKKyAgICAgICAgc291cF9tZXNzYWdlX2hlYWRlcnNfcmVw
bGFjZShzb3VwX3NlcnZlcl9tZXNzYWdlX2dldF9yZXNwb25zZV9oZWFkZXJzKG1lc3NhZ2UpLCAi
U2V0LUNvb2tpZSIsIGhlYWRlcl9zdHIpOworICAgICAgICBzb3VwX21lc3NhZ2VfYm9keV9hcHBl
bmQoc291cF9zZXJ2ZXJfbWVzc2FnZV9nZXRfcmVzcG9uc2VfYm9keShtZXNzYWdlKSwgU09VUF9N
RU1PUllfVEFLRSwgaW5kZXhIdG1sLCBzdHJsZW4oaW5kZXhIdG1sKSk7CiAgICAgfSBlbHNlIGlm
IChnX3N0cl9lcXVhbChwYXRoLCAiL2ltYWdlLnBuZyIpKQotICAgICAgICBzb3VwX21lc3NhZ2Vf
aGVhZGVyc19yZXBsYWNlKG1lc3NhZ2UtPnJlc3BvbnNlX2hlYWRlcnMsICJTZXQtQ29va2llIiwg
aGVhZGVyX3N0cik7CisgICAgICAgIHNvdXBfbWVzc2FnZV9oZWFkZXJzX3JlcGxhY2Uoc291cF9z
ZXJ2ZXJfbWVzc2FnZV9nZXRfcmVzcG9uc2VfaGVhZGVycyhtZXNzYWdlKSwgIlNldC1Db29raWUi
LCBoZWFkZXJfc3RyKTsKICAgICBlbHNlIGlmIChnX3N0cl9lcXVhbChwYXRoLCAiL25vLWNvb2tp
ZXMuaHRtbCIpKSB7CiAgICAgICAgIHN0YXRpYyBjb25zdCBjaGFyKiBpbmRleEh0bWwgPSAiPGh0
bWw+PGJvZHk+PHA+Tm8gY29va2llczwvcD48L2JvZHk+PC9odG1sPiI7Ci0gICAgICAgIHNvdXBf
bWVzc2FnZV9ib2R5X2FwcGVuZChtZXNzYWdlLT5yZXNwb25zZV9ib2R5LCBTT1VQX01FTU9SWV9T
VEFUSUMsIGluZGV4SHRtbCwgc3RybGVuKGluZGV4SHRtbCkpOworICAgICAgICBzb3VwX21lc3Nh
Z2VfYm9keV9hcHBlbmQoc291cF9zZXJ2ZXJfbWVzc2FnZV9nZXRfcmVzcG9uc2VfYm9keShtZXNz
YWdlKSwgU09VUF9NRU1PUllfU1RBVElDLCBpbmRleEh0bWwsIHN0cmxlbihpbmRleEh0bWwpKTsK
ICAgICB9IGVsc2UKLSAgICAgICAgc291cF9tZXNzYWdlX3NldF9zdGF0dXMobWVzc2FnZSwgU09V
UF9TVEFUVVNfTk9UX0ZPVU5EKTsKLSAgICBzb3VwX21lc3NhZ2VfYm9keV9jb21wbGV0ZShtZXNz
YWdlLT5yZXNwb25zZV9ib2R5KTsKKyAgICAgICAgc291cF9zZXJ2ZXJfbWVzc2FnZV9zZXRfc3Rh
dHVzKG1lc3NhZ2UsIFNPVVBfU1RBVFVTX05PVF9GT1VORCwgbnVsbHB0cik7CisgICAgc291cF9t
ZXNzYWdlX2JvZHlfY29tcGxldGUoc291cF9zZXJ2ZXJfbWVzc2FnZV9nZXRfcmVzcG9uc2VfYm9k
eShtZXNzYWdlKSk7CiB9CiAKIHZvaWQgYmVmb3JlQWxsKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0RG93bmxvYWRzLmNwcCBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0RG93bmxvYWRzLmNwcAppbmRleCBkMzQ1
MzQ5OTE4ZGUuLmM3NDU2NzcyYjlmMyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRHTGliL1Rlc3REb3dubG9hZHMuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0RG93bmxvYWRzLmNwcApAQCAtMjEsNiArMjEsNyBAQAog
CiAjaW5jbHVkZSAiV2ViS2l0VGVzdFNlcnZlci5oIgogI2luY2x1ZGUgIldlYlZpZXdUZXN0Lmgi
CisjaW5jbHVkZSA8V2ViQ29yZS9Tb3VwVmVyc2lvbmluZy5oPgogI2luY2x1ZGUgPGdsaWIvZ3N0
ZGlvLmg+CiAjaW5jbHVkZSA8bGlic291cC9zb3VwLmg+CiAjaW5jbHVkZSA8c3RyaW5nLmg+CkBA
IC0zODEsMTMgKzM4MiwyMSBAQCBzdGF0aWMgV2ViS2l0VGVzdFNlcnZlcioga1NlcnZlcjsKIHN0
YXRpYyBjb25zdCBjaGFyKiBrU2VydmVyU3VnZ2VzdGVkRmlsZW5hbWUgPSAid2Via2l0LWRvd25s
b2FkZWQtZmlsZSI7CiBzdGF0aWMgSGFzaE1hcDxDU3RyaW5nLCBDU3RyaW5nPiBzX3VzZXJBZ2Vu
dE1hcDsKIAorI2lmIFVTRShTT1VQMikKIHN0YXRpYyB2b2lkIGFkZENvbnRlbnREaXNwb3NpdGlv
bkhUVFBIZWFkZXJUb1Jlc3BvbnNlKFNvdXBNZXNzYWdlKiBtZXNzYWdlKQorI2Vsc2UKK3N0YXRp
YyB2b2lkIGFkZENvbnRlbnREaXNwb3NpdGlvbkhUVFBIZWFkZXJUb1Jlc3BvbnNlKFNvdXBTZXJ2
ZXJNZXNzYWdlKiBtZXNzYWdlKQorI2VuZGlmCiB7CiAgICAgR1VuaXF1ZVB0cjxjaGFyPiBjb250
ZW50RGlzcG9zaXRpb24oZ19zdHJkdXBfcHJpbnRmKCJhdHRhY2htZW50OyBmaWxlbmFtZT0lcyIs
IGtTZXJ2ZXJTdWdnZXN0ZWRGaWxlbmFtZSkpOwotICAgIHNvdXBfbWVzc2FnZV9oZWFkZXJzX2Fw
cGVuZChtZXNzYWdlLT5yZXNwb25zZV9oZWFkZXJzLCAiQ29udGVudC1EaXNwb3NpdGlvbiIsIGNv
bnRlbnREaXNwb3NpdGlvbi5nZXQoKSk7CisgICAgc291cF9tZXNzYWdlX2hlYWRlcnNfYXBwZW5k
KHNvdXBfc2VydmVyX21lc3NhZ2VfZ2V0X3Jlc3BvbnNlX2hlYWRlcnMobWVzc2FnZSksICJDb250
ZW50LURpc3Bvc2l0aW9uIiwgY29udGVudERpc3Bvc2l0aW9uLmdldCgpKTsKIH0KIAorI2lmIFVT
RShTT1VQMikKIHN0YXRpYyB2b2lkIHdyaXRlTmV4dENodW5rKFNvdXBNZXNzYWdlKiBtZXNzYWdl
KQorI2Vsc2UKK3N0YXRpYyB2b2lkIHdyaXRlTmV4dENodW5rKFNvdXBTZXJ2ZXJNZXNzYWdlKiBt
ZXNzYWdlKQorI2VuZGlmCiB7CiAgICAgLyogV2UgbmVlZCBhIGJpZyBlbm91Z2ggY2h1bmsgZm9y
IHRoZSBzbmlmZmVyIHRvIG5vdCBibG9jayB0aGUgbG9hZCAqLwogICAgIHN0YXRpYyBjb25zdCBj
aGFyKiBjaHVuayA9ICJUZXN0aW5nIVRlc3RpbmchVGVzdGluZyFUZXN0aW5nIVRlc3RpbmchVGVz
dGluZyFUZXN0aW5nISIKQEAgLTM5NywyNCArNDA2LDMwIEBAIHN0YXRpYyB2b2lkIHdyaXRlTmV4
dENodW5rKFNvdXBNZXNzYWdlKiBtZXNzYWdlKQogICAgICAgICAiVGVzdGluZyFUZXN0aW5nIVRl
c3RpbmchVGVzdGluZyFUZXN0aW5nIVRlc3RpbmchVGVzdGluZyFUZXN0aW5nIVRlc3RpbmchVGVz
dGluZyFUZXN0aW5nIVRlc3RpbmchIgogICAgICAgICAiVGVzdGluZyFUZXN0aW5nIVRlc3Rpbmch
VGVzdGluZyFUZXN0aW5nIVRlc3RpbmchVGVzdGluZyFUZXN0aW5nIVRlc3RpbmchVGVzdGluZyFU
ZXN0aW5nIVRlc3RpbmchIgogICAgICAgICAiVGVzdGluZyFUZXN0aW5nIVRlc3RpbmchVGVzdGlu
ZyFUZXN0aW5nIVRlc3RpbmchVGVzdGluZyFUZXN0aW5nIVRlc3RpbmchVGVzdGluZyFUZXN0aW5n
IVRlc3RpbmchIjsKLSAgICBzb3VwX21lc3NhZ2VfYm9keV9hcHBlbmQobWVzc2FnZS0+cmVzcG9u
c2VfYm9keSwgU09VUF9NRU1PUllfU1RBVElDLCBjaHVuaywgc3RybGVuKGNodW5rKSk7CisgICAg
c291cF9tZXNzYWdlX2JvZHlfYXBwZW5kKHNvdXBfc2VydmVyX21lc3NhZ2VfZ2V0X3Jlc3BvbnNl
X2JvZHkobWVzc2FnZSksIFNPVVBfTUVNT1JZX1NUQVRJQywgY2h1bmssIHN0cmxlbihjaHVuaykp
OwogfQogCisjaWYgVVNFKFNPVVAyKQogc3RhdGljIHZvaWQgc2VydmVyQ2FsbGJhY2soU291cFNl
cnZlciogc2VydmVyLCBTb3VwTWVzc2FnZSogbWVzc2FnZSwgY29uc3QgY2hhciogcGF0aCwgR0hh
c2hUYWJsZSosIFNvdXBDbGllbnRDb250ZXh0KiwgZ3BvaW50ZXIpCisjZWxzZQorc3RhdGljIHZv
aWQgc2VydmVyQ2FsbGJhY2soU291cFNlcnZlciogc2VydmVyLCBTb3VwU2VydmVyTWVzc2FnZSog
bWVzc2FnZSwgY29uc3QgY2hhciogcGF0aCwgR0hhc2hUYWJsZSosIGdwb2ludGVyKQorI2VuZGlm
CiB7Ci0gICAgaWYgKG1lc3NhZ2UtPm1ldGhvZCAhPSBTT1VQX01FVEhPRF9HRVQpIHsKLSAgICAg
ICAgc291cF9tZXNzYWdlX3NldF9zdGF0dXMobWVzc2FnZSwgU09VUF9TVEFUVVNfTk9UX0lNUExF
TUVOVEVEKTsKKyAgICBpZiAoc291cF9zZXJ2ZXJfbWVzc2FnZV9nZXRfbWV0aG9kKG1lc3NhZ2Up
ICE9IFNPVVBfTUVUSE9EX0dFVCkgeworICAgICAgICBzb3VwX3NlcnZlcl9tZXNzYWdlX3NldF9z
dGF0dXMobWVzc2FnZSwgU09VUF9TVEFUVVNfTk9UX0lNUExFTUVOVEVELCBudWxscHRyKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHNvdXBfbWVzc2FnZV9zZXRfc3RhdHVzKG1lc3Nh
Z2UsIFNPVVBfU1RBVFVTX09LKTsKKyAgICBhdXRvKiByZXNwb25zZUhlYWRlcnMgPSBzb3VwX3Nl
cnZlcl9tZXNzYWdlX2dldF9yZXNwb25zZV9oZWFkZXJzKG1lc3NhZ2UpOworICAgIGF1dG8qIHJl
c3BvbnNlQm9keSA9IHNvdXBfc2VydmVyX21lc3NhZ2VfZ2V0X3Jlc3BvbnNlX2JvZHkobWVzc2Fn
ZSk7CisgICAgc291cF9zZXJ2ZXJfbWVzc2FnZV9zZXRfc3RhdHVzKG1lc3NhZ2UsIFNPVVBfU1RB
VFVTX09LLCBudWxscHRyKTsKIAogICAgIGlmIChnX3N0cl9oYXNfcHJlZml4KHBhdGgsICIvdWEt
IikpCi0gICAgICAgIHNfdXNlckFnZW50TWFwLmFkZChwYXRoLCBzb3VwX21lc3NhZ2VfaGVhZGVy
c19nZXRfb25lKG1lc3NhZ2UtPnJlcXVlc3RfaGVhZGVycywgIlVzZXItQWdlbnQiKSk7CisgICAg
ICAgIHNfdXNlckFnZW50TWFwLmFkZChwYXRoLCBzb3VwX21lc3NhZ2VfaGVhZGVyc19nZXRfb25l
KHNvdXBfc2VydmVyX21lc3NhZ2VfZ2V0X3JlcXVlc3RfaGVhZGVycyhtZXNzYWdlKSwgIlVzZXIt
QWdlbnQiKSk7CiAKICAgICBpZiAoZ19zdHJfZXF1YWwocGF0aCwgIi9jYW5jZWwtYWZ0ZXItZGVz
dGluYXRpb24iKSkgewogICAgICAgICAvLyBVc2UgYW4gaW5maW5pdGUgbWVzc2FnZSB0byBtYWtl
IHN1cmUgaXQncyBjYW5jZWxsZWQgYmVmb3JlIGl0IGZpbmlzaGVzLgotICAgICAgICBzb3VwX21l
c3NhZ2VfaGVhZGVyc19zZXRfZW5jb2RpbmcobWVzc2FnZS0+cmVzcG9uc2VfaGVhZGVycywgU09V
UF9FTkNPRElOR19DSFVOS0VEKTsKKyAgICAgICAgc291cF9tZXNzYWdlX2hlYWRlcnNfc2V0X2Vu
Y29kaW5nKHJlc3BvbnNlSGVhZGVycywgU09VUF9FTkNPRElOR19DSFVOS0VEKTsKICAgICAgICAg
YWRkQ29udGVudERpc3Bvc2l0aW9uSFRUUEhlYWRlclRvUmVzcG9uc2UobWVzc2FnZSk7CiAgICAg
ICAgIGdfc2lnbmFsX2Nvbm5lY3QobWVzc2FnZSwgIndyb3RlX2hlYWRlcnMiLCBHX0NBTExCQUNL
KHdyaXRlTmV4dENodW5rKSwgbnVsbHB0cik7CiAgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QobWVz
c2FnZSwgIndyb3RlX2NodW5rIiwgR19DQUxMQkFDSyh3cml0ZU5leHRDaHVuayksIG51bGxwdHIp
OwpAQCAtNDIyLDggKzQzNyw4IEBAIHN0YXRpYyB2b2lkIHNlcnZlckNhbGxiYWNrKFNvdXBTZXJ2
ZXIqIHNlcnZlciwgU291cE1lc3NhZ2UqIG1lc3NhZ2UsIGNvbnN0IGNoYXIqCiAgICAgfQogCiAg
ICAgaWYgKGdfc3RyX2VxdWFsKHBhdGgsICIvdWEtdGVzdC1yZWRpcmVjdCIpKSB7Ci0gICAgICAg
IHNvdXBfbWVzc2FnZV9zZXRfc3RhdHVzKG1lc3NhZ2UsIFNPVVBfU1RBVFVTX01PVkVEX1BFUk1B
TkVOVExZKTsKLSAgICAgICAgc291cF9tZXNzYWdlX2hlYWRlcnNfYXBwZW5kKG1lc3NhZ2UtPnJl
c3BvbnNlX2hlYWRlcnMsICJMb2NhdGlvbiIsICIvdWEtdGVzdCIpOworICAgICAgICBzb3VwX3Nl
cnZlcl9tZXNzYWdlX3NldF9zdGF0dXMobWVzc2FnZSwgU09VUF9TVEFUVVNfTU9WRURfUEVSTUFO
RU5UTFksIG51bGxwdHIpOworICAgICAgICBzb3VwX21lc3NhZ2VfaGVhZGVyc19hcHBlbmQocmVz
cG9uc2VIZWFkZXJzLCAiTG9jYXRpb24iLCAiL3VhLXRlc3QiKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIApAQCAtNDM0LDE1ICs0NDksMTQgQEAgc3RhdGljIHZvaWQgc2VydmVyQ2FsbGJhY2so
U291cFNlcnZlciogc2VydmVyLCBTb3VwTWVzc2FnZSogbWVzc2FnZSwgY29uc3QgY2hhcioKICAg
ICBjaGFyKiBjb250ZW50czsKICAgICBnc2l6ZSBjb250ZW50c0xlbmd0aDsKICAgICBpZiAoIWdf
ZmlsZV9nZXRfY29udGVudHMoZmlsZVBhdGguZ2V0KCksICZjb250ZW50cywgJmNvbnRlbnRzTGVu
Z3RoLCAwKSkgewotICAgICAgICBzb3VwX21lc3NhZ2Vfc2V0X3N0YXR1cyhtZXNzYWdlLCBTT1VQ
X1NUQVRVU19OT1RfRk9VTkQpOwotICAgICAgICBzb3VwX21lc3NhZ2VfYm9keV9jb21wbGV0ZSht
ZXNzYWdlLT5yZXNwb25zZV9ib2R5KTsKKyAgICAgICAgc291cF9zZXJ2ZXJfbWVzc2FnZV9zZXRf
c3RhdHVzKG1lc3NhZ2UsIFNPVVBfU1RBVFVTX05PVF9GT1VORCwgbnVsbHB0cik7CisgICAgICAg
IHNvdXBfbWVzc2FnZV9ib2R5X2NvbXBsZXRlKHJlc3BvbnNlQm9keSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKICAgICBhZGRDb250ZW50RGlzcG9zaXRpb25IVFRQSGVhZGVyVG9SZXNwb25z
ZShtZXNzYWdlKTsKLSAgICBzb3VwX21lc3NhZ2VfYm9keV9hcHBlbmQobWVzc2FnZS0+cmVzcG9u
c2VfYm9keSwgU09VUF9NRU1PUllfVEFLRSwgY29udGVudHMsIGNvbnRlbnRzTGVuZ3RoKTsKLQot
ICAgIHNvdXBfbWVzc2FnZV9ib2R5X2NvbXBsZXRlKG1lc3NhZ2UtPnJlc3BvbnNlX2JvZHkpOwor
ICAgIHNvdXBfbWVzc2FnZV9ib2R5X2FwcGVuZChyZXNwb25zZUJvZHksIFNPVVBfTUVNT1JZX1RB
S0UsIGNvbnRlbnRzLCBjb250ZW50c0xlbmd0aCk7CisgICAgc291cF9tZXNzYWdlX2JvZHlfY29t
cGxldGUocmVzcG9uc2VCb2R5KTsKIH0KIAogc3RhdGljIHZvaWQgdGVzdERvd25sb2FkUmVtb3Rl
RmlsZShEb3dubG9hZFRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdExvYWRlckNsaWVudC5jcHAgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdExvYWRlckNsaWVudC5jcHAK
aW5kZXggNmE1Y2E2NjM1MDI4Li40YzgwMGZlMjBjOWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0TG9hZGVyQ2xpZW50LmNwcAorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdExvYWRlckNsaWVudC5jcHAKQEAg
LTI0LDYgKzI0LDcgQEAKICNpbmNsdWRlICJMb2FkVHJhY2tpbmdUZXN0LmgiCiAjaW5jbHVkZSAi
V2ViS2l0VGVzdFNlcnZlci5oIgogI2luY2x1ZGUgIldlYlZpZXdUZXN0LmgiCisjaW5jbHVkZSA8
V2ViQ29yZS9Tb3VwVmVyc2lvbmluZy5oPgogI2luY2x1ZGUgPGxpYnNvdXAvc291cC5oPgogI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CkBAIC00
OCw3ICs0OSw3IEBAIHN0YXRpYyB2b2lkIHRlc3RMb2FkaW5nU3RhdHVzKExvYWRUcmFja2luZ1Rl
c3QqIHRlc3QsIGdjb25zdHBvaW50ZXIgZGF0YSkKIAogc3RhdGljIHZvaWQgdGVzdExvYWRpbmdF
cnJvcihMb2FkVHJhY2tpbmdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogewotICAgIHRlc3Qt
PmxvYWRVUkkoa1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgiL2Vycm9yIikuZGF0YSgpKTsKKyAgICB0
ZXN0LT5sb2FkVVJJKCJodHRwOi8vMTI3LjAuMC4xOjEyMzQvZXJyb3IiKTsKICAgICB0ZXN0LT53
YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKIAogICAgIFZlY3RvcjxMb2FkVHJhY2tpbmdUZXN0OjpM
b2FkRXZlbnRzPiYgZXZlbnRzID0gdGVzdC0+bV9sb2FkRXZlbnRzOwpAQCAtNDg5LDcgKzQ5MCw3
IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3SXNMb2FkaW5nKFZpZXdJc0xvYWRpbmdUZXN0KiB0
ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOwog
ICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF93ZWJfdmlld19pc19sb2FkaW5nKHRlc3QtPm1fd2Vi
VmlldykpOwogCi0gICAgdGVzdC0+bG9hZFVSSShrU2VydmVyLT5nZXRVUklGb3JQYXRoKCIvZXJy
b3IiKS5kYXRhKCkpOworICAgIHRlc3QtPmxvYWRVUkkoImh0dHA6Ly8xMjcuMC4wLjE6MTIzNC9l
cnJvciIpOwogICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOwogICAgIGdfYXNzZXJ0
X2ZhbHNlKHdlYmtpdF93ZWJfdmlld19pc19sb2FkaW5nKHRlc3QtPm1fd2ViVmlldykpOwogCkBA
IC03MzcsNyArNzM4LDExIEBAIHN0YXRpYyB2b2lkIHRlc3RVc2VyQWdlbnQoV2ViVmlld1Rlc3Qq
IHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgc191c2VyQWdlbnRNYXAuY2xlYXIoKTsKIH0KIAor
I2lmIFVTRShTT1VQMikKIHN0YXRpYyB2b2lkIHNlcnZlckNhbGxiYWNrKFNvdXBTZXJ2ZXIqIHNl
cnZlciwgU291cE1lc3NhZ2UqIG1lc3NhZ2UsIGNvbnN0IGNoYXIqIHBhdGgsIEdIYXNoVGFibGUq
LCBTb3VwQ2xpZW50Q29udGV4dCosIGdwb2ludGVyKQorI2Vsc2UKK3N0YXRpYyB2b2lkIHNlcnZl
ckNhbGxiYWNrKFNvdXBTZXJ2ZXIqIHNlcnZlciwgU291cFNlcnZlck1lc3NhZ2UqIG1lc3NhZ2Us
IGNvbnN0IGNoYXIqIHBhdGgsIEdIYXNoVGFibGUqLCBncG9pbnRlcikKKyNlbmRpZgogewogICAg
IHN0YXRpYyBjb25zdCBjaGFyKiByZXNwb25zZVN0cmluZyA9ICI8aHRtbD48Ym9keT5UZXN0aW5n
IVRlc3RpbmchVGVzdGluZyFUZXN0aW5nIVRlc3RpbmchVGVzdGluZyFUZXN0aW5nISIKICAgICAg
ICAgIlRlc3RpbmchVGVzdGluZyFUZXN0aW5nIVRlc3RpbmchVGVzdGluZyFUZXN0aW5nIVRlc3Rp
bmchVGVzdGluZyFUZXN0aW5nIVRlc3RpbmchVGVzdGluZyFUZXN0aW5nISIKQEAgLTc0OCw0OCAr
NzUzLDUwIEBAIHN0YXRpYyB2b2lkIHNlcnZlckNhbGxiYWNrKFNvdXBTZXJ2ZXIqIHNlcnZlciwg
U291cE1lc3NhZ2UqIG1lc3NhZ2UsIGNvbnN0IGNoYXIqCiAgICAgICAgICJUZXN0aW5nIVRlc3Rp
bmchVGVzdGluZyFUZXN0aW5nIVRlc3RpbmchVGVzdGluZyFUZXN0aW5nIVRlc3RpbmchVGVzdGlu
ZyFUZXN0aW5nIVRlc3RpbmchVGVzdGluZyEiCiAgICAgICAgICJUZXN0aW5nIVRlc3RpbmchVGVz
dGluZyFUZXN0aW5nIVRlc3RpbmchVGVzdGluZyFUZXN0aW5nIVRlc3RpbmchVGVzdGluZyFUZXN0
aW5nIVRlc3RpbmchVGVzdGluZyE8L2JvZHk+PC9odG1sPiI7CiAKLSAgICBpZiAobWVzc2FnZS0+
bWV0aG9kICE9IFNPVVBfTUVUSE9EX0dFVCkgewotICAgICAgICBzb3VwX21lc3NhZ2Vfc2V0X3N0
YXR1cyhtZXNzYWdlLCBTT1VQX1NUQVRVU19OT1RfSU1QTEVNRU5URUQpOworICAgIGlmIChzb3Vw
X3NlcnZlcl9tZXNzYWdlX2dldF9tZXRob2QobWVzc2FnZSkgIT0gU09VUF9NRVRIT0RfR0VUKSB7
CisgICAgICAgIHNvdXBfc2VydmVyX21lc3NhZ2Vfc2V0X3N0YXR1cyhtZXNzYWdlLCBTT1VQX1NU
QVRVU19OT1RfSU1QTEVNRU5URUQsIG51bGxwdHIpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgc291cF9tZXNzYWdlX3NldF9zdGF0dXMobWVzc2FnZSwgU09VUF9TVEFUVVNfT0spOwor
ICAgIHNvdXBfc2VydmVyX21lc3NhZ2Vfc2V0X3N0YXR1cyhtZXNzYWdlLCBTT1VQX1NUQVRVU19P
SywgbnVsbHB0cik7CisKKyAgICBhdXRvKiByZXF1ZXN0SGVhZGVycyA9IHNvdXBfc2VydmVyX21l
c3NhZ2VfZ2V0X3JlcXVlc3RfaGVhZGVycyhtZXNzYWdlKTsKKyAgICBhdXRvKiByZXNwb25zZUhl
YWRlcnMgPSBzb3VwX3NlcnZlcl9tZXNzYWdlX2dldF9yZXNwb25zZV9oZWFkZXJzKG1lc3NhZ2Up
OworICAgIGF1dG8qIHJlc3BvbnNlQm9keSA9IHNvdXBfc2VydmVyX21lc3NhZ2VfZ2V0X3Jlc3Bv
bnNlX2JvZHkobWVzc2FnZSk7CiAKICAgICBpZiAoZ19zdHJfaGFzX3ByZWZpeChwYXRoLCAiL3Vh
LSIpKQotICAgICAgICBzX3VzZXJBZ2VudE1hcC5hZGQocGF0aCwgc291cF9tZXNzYWdlX2hlYWRl
cnNfZ2V0X29uZShtZXNzYWdlLT5yZXF1ZXN0X2hlYWRlcnMsICJVc2VyLUFnZW50IikpOworICAg
ICAgICBzX3VzZXJBZ2VudE1hcC5hZGQocGF0aCwgc291cF9tZXNzYWdlX2hlYWRlcnNfZ2V0X29u
ZShyZXF1ZXN0SGVhZGVycywgIlVzZXItQWdlbnQiKSk7CiAKICAgICBpZiAoZ19zdHJfaGFzX3By
ZWZpeChwYXRoLCAiL25vcm1hbCIpIHx8IGdfc3RyX2hhc19wcmVmaXgocGF0aCwgIi9odHRwLWdl
dC1tZXRob2QiKSkKLSAgICAgICAgc291cF9tZXNzYWdlX2JvZHlfYXBwZW5kKG1lc3NhZ2UtPnJl
c3BvbnNlX2JvZHksIFNPVVBfTUVNT1JZX1NUQVRJQywgcmVzcG9uc2VTdHJpbmcsIHN0cmxlbihy
ZXNwb25zZVN0cmluZykpOwotICAgIGVsc2UgaWYgKGdfc3RyX2VxdWFsKHBhdGgsICIvZXJyb3Ii
KSkKLSAgICAgICAgc291cF9tZXNzYWdlX3NldF9zdGF0dXMobWVzc2FnZSwgU09VUF9TVEFUVVNf
Q0FOVF9DT05ORUNUKTsKKyAgICAgICAgc291cF9tZXNzYWdlX2JvZHlfYXBwZW5kKHJlc3BvbnNl
Qm9keSwgU09VUF9NRU1PUllfU1RBVElDLCByZXNwb25zZVN0cmluZywgc3RybGVuKHJlc3BvbnNl
U3RyaW5nKSk7CiAgICAgZWxzZSBpZiAoZ19zdHJfZXF1YWwocGF0aCwgIi9yZWRpcmVjdCIpKSB7
Ci0gICAgICAgIHNvdXBfbWVzc2FnZV9zZXRfc3RhdHVzKG1lc3NhZ2UsIFNPVVBfU1RBVFVTX01P
VkVEX1BFUk1BTkVOVExZKTsKLSAgICAgICAgc291cF9tZXNzYWdlX2hlYWRlcnNfYXBwZW5kKG1l
c3NhZ2UtPnJlc3BvbnNlX2hlYWRlcnMsICJMb2NhdGlvbiIsICIvbm9ybWFsIik7CisgICAgICAg
IHNvdXBfc2VydmVyX21lc3NhZ2Vfc2V0X3N0YXR1cyhtZXNzYWdlLCBTT1VQX1NUQVRVU19NT1ZF
RF9QRVJNQU5FTlRMWSwgbnVsbHB0cik7CisgICAgICAgIHNvdXBfbWVzc2FnZV9oZWFkZXJzX2Fw
cGVuZChyZXNwb25zZUhlYWRlcnMsICJMb2NhdGlvbiIsICIvbm9ybWFsIik7CiAgICAgfSBlbHNl
IGlmIChnX3N0cl9lcXVhbChwYXRoLCAiL3JlZGlyZWN0LXRvLWNoYW5nZS1yZXF1ZXN0IikpIHsK
LSAgICAgICAgc291cF9tZXNzYWdlX3NldF9zdGF0dXMobWVzc2FnZSwgU09VUF9TVEFUVVNfTU9W
RURfUEVSTUFORU5UTFkpOwotICAgICAgICBzb3VwX21lc3NhZ2VfaGVhZGVyc19hcHBlbmQobWVz
c2FnZS0+cmVzcG9uc2VfaGVhZGVycywgIkxvY2F0aW9uIiwgIi9ub3JtYWwtY2hhbmdlLXJlcXVl
c3QiKTsKKyAgICAgICAgc291cF9zZXJ2ZXJfbWVzc2FnZV9zZXRfc3RhdHVzKG1lc3NhZ2UsIFNP
VVBfU1RBVFVTX01PVkVEX1BFUk1BTkVOVExZLCBudWxscHRyKTsKKyAgICAgICAgc291cF9tZXNz
YWdlX2hlYWRlcnNfYXBwZW5kKHJlc3BvbnNlSGVhZGVycywgIkxvY2F0aW9uIiwgIi9ub3JtYWwt
Y2hhbmdlLXJlcXVlc3QiKTsKICAgICB9IGVsc2UgaWYgKGdfc3RyX2hhc19wcmVmaXgocGF0aCwg
Ii9yZWRpcmVjdC1qcy8iKSkgewogICAgICAgICBzdGF0aWMgY29uc3QgY2hhciogcmVkaXJlY3RK
U0Zvcm1hdCA9ICI8aHRtbD48Ym9keT48c2NyaXB0PmxvY2F0aW9uID0gJyVzJzs8L3NjcmlwdD48
L2JvZHk+PC9odG1sPiI7CiAgICAgICAgIGNoYXIqIHJlZGlyZWN0SlMgPSBnX3N0cmR1cF9wcmlu
dGYocmVkaXJlY3RKU0Zvcm1hdCwgZ19zdHJyc3RyKHBhdGgsICIvIikpOwotICAgICAgICBzb3Vw
X21lc3NhZ2VfYm9keV9hcHBlbmQobWVzc2FnZS0+cmVzcG9uc2VfYm9keSwgU09VUF9NRU1PUllf
VEFLRSwgcmVkaXJlY3RKUywgc3RybGVuKHJlZGlyZWN0SlMpKTsKKyAgICAgICAgc291cF9tZXNz
YWdlX2JvZHlfYXBwZW5kKHJlc3BvbnNlQm9keSwgU09VUF9NRU1PUllfVEFLRSwgcmVkaXJlY3RK
Uywgc3RybGVuKHJlZGlyZWN0SlMpKTsKICAgICB9IGVsc2UgaWYgKGdfc3RyX2VxdWFsKHBhdGgs
ICIvY2FuY2VsbGVkIikpIHsKLSAgICAgICAgc291cF9tZXNzYWdlX2hlYWRlcnNfc2V0X2VuY29k
aW5nKG1lc3NhZ2UtPnJlc3BvbnNlX2hlYWRlcnMsIFNPVVBfRU5DT0RJTkdfQ0hVTktFRCk7Ci0g
ICAgICAgIHNvdXBfbWVzc2FnZV9ib2R5X2FwcGVuZChtZXNzYWdlLT5yZXNwb25zZV9ib2R5LCBT
T1VQX01FTU9SWV9TVEFUSUMsIHJlc3BvbnNlU3RyaW5nLCBzdHJsZW4ocmVzcG9uc2VTdHJpbmcp
KTsKKyAgICAgICAgc291cF9tZXNzYWdlX2hlYWRlcnNfc2V0X2VuY29kaW5nKHJlc3BvbnNlSGVh
ZGVycywgU09VUF9FTkNPRElOR19DSFVOS0VEKTsKKyAgICAgICAgc291cF9tZXNzYWdlX2JvZHlf
YXBwZW5kKHJlc3BvbnNlQm9keSwgU09VUF9NRU1PUllfU1RBVElDLCByZXNwb25zZVN0cmluZywg
c3RybGVuKHJlc3BvbnNlU3RyaW5nKSk7CiAgICAgICAgIHNvdXBfc2VydmVyX3VucGF1c2VfbWVz
c2FnZShzZXJ2ZXIsIG1lc3NhZ2UpOwogICAgICAgICByZXR1cm47CiAgICAgfSBlbHNlIGlmIChn
X3N0cl9lcXVhbChwYXRoLCAiL2RvLW5vdC10cmFjay1oZWFkZXIiKSB8fCBnX3N0cl9lcXVhbChw
YXRoLCAiL2FkZC1kby1ub3QtdHJhY2staGVhZGVyIikpIHsKLSAgICAgICAgY29uc3QgY2hhciog
ZG9Ob3RUcmFjayA9IHNvdXBfbWVzc2FnZV9oZWFkZXJzX2dldF9vbmUobWVzc2FnZS0+cmVxdWVz
dF9oZWFkZXJzLCAiRE5UIik7CisgICAgICAgIGNvbnN0IGNoYXIqIGRvTm90VHJhY2sgPSBzb3Vw
X21lc3NhZ2VfaGVhZGVyc19nZXRfb25lKHJlcXVlc3RIZWFkZXJzLCAiRE5UIik7CiAgICAgICAg
IGlmIChkb05vdFRyYWNrKQotICAgICAgICAgICAgc291cF9tZXNzYWdlX2JvZHlfYXBwZW5kKG1l
c3NhZ2UtPnJlc3BvbnNlX2JvZHksIFNPVVBfTUVNT1JZX0NPUFksIGRvTm90VHJhY2ssIHN0cmxl
bihkb05vdFRyYWNrKSk7CisgICAgICAgICAgICBzb3VwX21lc3NhZ2VfYm9keV9hcHBlbmQocmVz
cG9uc2VCb2R5LCBTT1VQX01FTU9SWV9DT1BZLCBkb05vdFRyYWNrLCBzdHJsZW4oZG9Ob3RUcmFj
aykpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBzb3VwX21lc3NhZ2VfYm9keV9hcHBlbmQo
bWVzc2FnZS0+cmVzcG9uc2VfYm9keSwgU09VUF9NRU1PUllfU1RBVElDLCBrRE5USGVhZGVyTm90
UHJlc2VudCwgc3RybGVuKGtETlRIZWFkZXJOb3RQcmVzZW50KSk7Ci0gICAgICAgIHNvdXBfbWVz
c2FnZV9zZXRfc3RhdHVzKG1lc3NhZ2UsIFNPVVBfU1RBVFVTX09LKTsKKyAgICAgICAgICAgIHNv
dXBfbWVzc2FnZV9ib2R5X2FwcGVuZChyZXNwb25zZUJvZHksIFNPVVBfTUVNT1JZX1NUQVRJQywg
a0ROVEhlYWRlck5vdFByZXNlbnQsIHN0cmxlbihrRE5USGVhZGVyTm90UHJlc2VudCkpOworICAg
ICAgICBzb3VwX3NlcnZlcl9tZXNzYWdlX3NldF9zdGF0dXMobWVzc2FnZSwgU09VUF9TVEFUVVNf
T0ssIG51bGxwdHIpOwogICAgIH0gZWxzZSBpZiAoZ19zdHJfZXF1YWwocGF0aCwgIi9oZWFkZXJz
IikpIHsKLSAgICAgICAgc291cF9tZXNzYWdlX2hlYWRlcnNfYXBwZW5kKG1lc3NhZ2UtPnJlc3Bv
bnNlX2hlYWRlcnMsICJGb28iLCAiYmFyIik7Ci0gICAgICAgIHNvdXBfbWVzc2FnZV9ib2R5X2Fw
cGVuZChtZXNzYWdlLT5yZXNwb25zZV9ib2R5LCBTT1VQX01FTU9SWV9TVEFUSUMsIHJlc3BvbnNl
U3RyaW5nLCBzdHJsZW4ocmVzcG9uc2VTdHJpbmcpKTsKKyAgICAgICAgc291cF9tZXNzYWdlX2hl
YWRlcnNfYXBwZW5kKHJlc3BvbnNlSGVhZGVycywgIkZvbyIsICJiYXIiKTsKKyAgICAgICAgc291
cF9tZXNzYWdlX2JvZHlfYXBwZW5kKHJlc3BvbnNlQm9keSwgU09VUF9NRU1PUllfU1RBVElDLCBy
ZXNwb25zZVN0cmluZywgc3RybGVuKHJlc3BvbnNlU3RyaW5nKSk7CiAgICAgfSBlbHNlIGlmIChn
X3N0cl9lcXVhbChwYXRoLCAiL3JlZGlyZWN0LXRvLWRhdGEiKSkgewotICAgICAgICBzb3VwX21l
c3NhZ2Vfc2V0X3N0YXR1cyhtZXNzYWdlLCBTT1VQX1NUQVRVU19NT1ZFRF9QRVJNQU5FTlRMWSk7
Ci0gICAgICAgIHNvdXBfbWVzc2FnZV9oZWFkZXJzX2FwcGVuZChtZXNzYWdlLT5yZXNwb25zZV9o
ZWFkZXJzLCAiTG9jYXRpb24iLCAiZGF0YTp0ZXh0L3BsYWluO2NoYXJzZXQ9dXRmLTgsZGF0YS11
cmkiKTsKKyAgICAgICAgc291cF9zZXJ2ZXJfbWVzc2FnZV9zZXRfc3RhdHVzKG1lc3NhZ2UsIFNP
VVBfU1RBVFVTX01PVkVEX1BFUk1BTkVOVExZLCBudWxscHRyKTsKKyAgICAgICAgc291cF9tZXNz
YWdlX2hlYWRlcnNfYXBwZW5kKHJlc3BvbnNlSGVhZGVycywgIkxvY2F0aW9uIiwgImRhdGE6dGV4
dC9wbGFpbjtjaGFyc2V0PXV0Zi04LGRhdGEtdXJpIik7CiAgICAgfSBlbHNlIGlmIChnX3N0cl9l
cXVhbChwYXRoLCAiL3VuZmluaXNoZWQtc3VicmVzb3VyY2UtbG9hZCIpKSB7CiAgICAgICAgIHN0
YXRpYyBjb25zdCBjaGFyKiB1bmZpbmlzaGVkU3VicmVzb3VyY2VMb2FkUmVzcG9uc2VTdHJpbmcg
PSAiPGh0bWw+PGJvZHk+IgogICAgICAgICAgICAgIjxpbWcgc3JjPVwiL3N0YWxsXCIvPiIKQEAg
LTgwMCwzMiArODA3LDMyIEBAIHN0YXRpYyB2b2lkIHNlcnZlckNhbGxiYWNrKFNvdXBTZXJ2ZXIq
IHNlcnZlciwgU291cE1lc3NhZ2UqIG1lc3NhZ2UsIGNvbnN0IGNoYXIqCiAgICAgICAgICAgICAi
ICBzZXRJbnRlcnZhbChydW4oKSwgNTApOyIKICAgICAgICAgICAgICI8L3NjcmlwdD4iCiAgICAg
ICAgICAgICAiPC9ib2R5PjwvaHRtbD4iOwotICAgICAgICBzb3VwX21lc3NhZ2VfYm9keV9hcHBl
bmQobWVzc2FnZS0+cmVzcG9uc2VfYm9keSwgU09VUF9NRU1PUllfU1RBVElDLCB1bmZpbmlzaGVk
U3VicmVzb3VyY2VMb2FkUmVzcG9uc2VTdHJpbmcsIHN0cmxlbih1bmZpbmlzaGVkU3VicmVzb3Vy
Y2VMb2FkUmVzcG9uc2VTdHJpbmcpKTsKKyAgICAgICAgc291cF9tZXNzYWdlX2JvZHlfYXBwZW5k
KHJlc3BvbnNlQm9keSwgU09VUF9NRU1PUllfU1RBVElDLCB1bmZpbmlzaGVkU3VicmVzb3VyY2VM
b2FkUmVzcG9uc2VTdHJpbmcsIHN0cmxlbih1bmZpbmlzaGVkU3VicmVzb3VyY2VMb2FkUmVzcG9u
c2VTdHJpbmcpKTsKICAgICB9IGVsc2UgaWYgKGdfc3RyX2VxdWFsKHBhdGgsICIvdWEtbWFpbiIp
KQotICAgICAgICBzb3VwX21lc3NhZ2VfYm9keV9hcHBlbmQobWVzc2FnZS0+cmVzcG9uc2VfYm9k
eSwgU09VUF9NRU1PUllfU1RBVElDLCByZXNwb25zZVN0cmluZywgc3RybGVuKHJlc3BvbnNlU3Ry
aW5nKSk7CisgICAgICAgIHNvdXBfbWVzc2FnZV9ib2R5X2FwcGVuZChyZXNwb25zZUJvZHksIFNP
VVBfTUVNT1JZX1NUQVRJQywgcmVzcG9uc2VTdHJpbmcsIHN0cmxlbihyZXNwb25zZVN0cmluZykp
OwogICAgIGVsc2UgaWYgKGdfc3RyX2VxdWFsKHBhdGgsICIvdWEtbWFpbi1yZWRpcmVjdCIpKSB7
Ci0gICAgICAgIHNvdXBfbWVzc2FnZV9oZWFkZXJzX2FwcGVuZChtZXNzYWdlLT5yZXNwb25zZV9o
ZWFkZXJzLCAiTG9jYXRpb24iLCAiL3VhLW1haW4iKTsKLSAgICAgICAgc291cF9tZXNzYWdlX3Nl
dF9zdGF0dXMobWVzc2FnZSwgU09VUF9TVEFUVVNfTU9WRURfUEVSTUFORU5UTFkpOworICAgICAg
ICBzb3VwX21lc3NhZ2VfaGVhZGVyc19hcHBlbmQocmVzcG9uc2VIZWFkZXJzLCAiTG9jYXRpb24i
LCAiL3VhLW1haW4iKTsKKyAgICAgICAgc291cF9zZXJ2ZXJfbWVzc2FnZV9zZXRfc3RhdHVzKG1l
c3NhZ2UsIFNPVVBfU1RBVFVTX01PVkVEX1BFUk1BTkVOVExZLCBudWxscHRyKTsKICAgICB9IGVs
c2UgaWYgKGdfc3RyX2VxdWFsKHBhdGgsICIvdWEtc3R5bGUuY3NzIikpIHsKICAgICAgICAgc3Rh
dGljIGNvbnN0IGNoYXIqIHN0eWxlID0gImJvZHkgeyBtYXJnaW46IDBweDsgcGFkZGluZzogMHB4
OyB9IjsKLSAgICAgICAgc291cF9tZXNzYWdlX2JvZHlfYXBwZW5kKG1lc3NhZ2UtPnJlc3BvbnNl
X2JvZHksIFNPVVBfTUVNT1JZX1NUQVRJQywgc3R5bGUsIHN0cmxlbihzdHlsZSkpOworICAgICAg
ICBzb3VwX21lc3NhZ2VfYm9keV9hcHBlbmQocmVzcG9uc2VCb2R5LCBTT1VQX01FTU9SWV9TVEFU
SUMsIHN0eWxlLCBzdHJsZW4oc3R5bGUpKTsKICAgICB9IGVsc2UgaWYgKGdfc3RyX2VxdWFsKHBh
dGgsICIvdWEtcmVkaXJlY3RlZC1zdHlsZS5jc3MiKSkgewotICAgICAgICBzb3VwX21lc3NhZ2Vf
aGVhZGVyc19hcHBlbmQobWVzc2FnZS0+cmVzcG9uc2VfaGVhZGVycywgIkxvY2F0aW9uIiwgIi91
YS1zdHlsZS5jc3MiKTsKLSAgICAgICAgc291cF9tZXNzYWdlX3NldF9zdGF0dXMobWVzc2FnZSwg
U09VUF9TVEFUVVNfTU9WRURfUEVSTUFORU5UTFkpOworICAgICAgICBzb3VwX21lc3NhZ2VfaGVh
ZGVyc19hcHBlbmQocmVzcG9uc2VIZWFkZXJzLCAiTG9jYXRpb24iLCAiL3VhLXN0eWxlLmNzcyIp
OworICAgICAgICBzb3VwX3NlcnZlcl9tZXNzYWdlX3NldF9zdGF0dXMobWVzc2FnZSwgU09VUF9T
VEFUVVNfTU9WRURfUEVSTUFORU5UTFksIG51bGxwdHIpOwogICAgIH0gZWxzZSBpZiAoZ19zdHJf
ZXF1YWwocGF0aCwgIi91YS1jc3MiKSkgewogICAgICAgICBzdGF0aWMgY29uc3QgY2hhciogY3Nz
SHRtbCA9ICI8aHRtbD48aGVhZD48bGluayByZWw9J3N0eWxlc2hlZXQnIGhyZWY9Jy91YS1zdHls
ZS5jc3MnIHR5cGU9J3RleHQvY3NzJz48L2hlYWQ+PGJvZHk+PC9odG1sPiI7Ci0gICAgICAgIHNv
dXBfbWVzc2FnZV9ib2R5X2FwcGVuZChtZXNzYWdlLT5yZXNwb25zZV9ib2R5LCBTT1VQX01FTU9S
WV9TVEFUSUMsIGNzc0h0bWwsIHN0cmxlbihjc3NIdG1sKSk7CisgICAgICAgIHNvdXBfbWVzc2Fn
ZV9ib2R5X2FwcGVuZChyZXNwb25zZUJvZHksIFNPVVBfTUVNT1JZX1NUQVRJQywgY3NzSHRtbCwg
c3RybGVuKGNzc0h0bWwpKTsKICAgICB9IGVsc2UgaWYgKGdfc3RyX2VxdWFsKHBhdGgsICIvdWEt
cmVkaXJlY3RlZC1jc3MiKSkgewogICAgICAgICBzdGF0aWMgY29uc3QgY2hhciogcmVkaXJlY3Rl
ZENTU0h0bWwgPSAiPGh0bWw+PGhlYWQ+PGxpbmsgcmVsPSdzdHlsZXNoZWV0JyBocmVmPScvdWEt
cmVkaXJlY3RlZC1zdHlsZS5jc3MnIHR5cGU9J3RleHQvY3NzJz48L2hlYWQ+PGJvZHk+PC9odG1s
PiI7Ci0gICAgICAgIHNvdXBfbWVzc2FnZV9ib2R5X2FwcGVuZChtZXNzYWdlLT5yZXNwb25zZV9i
b2R5LCBTT1VQX01FTU9SWV9TVEFUSUMsIHJlZGlyZWN0ZWRDU1NIdG1sLCBzdHJsZW4ocmVkaXJl
Y3RlZENTU0h0bWwpKTsKKyAgICAgICAgc291cF9tZXNzYWdlX2JvZHlfYXBwZW5kKHJlc3BvbnNl
Qm9keSwgU09VUF9NRU1PUllfU1RBVElDLCByZWRpcmVjdGVkQ1NTSHRtbCwgc3RybGVuKHJlZGly
ZWN0ZWRDU1NIdG1sKSk7CiAgICAgfSBlbHNlIGlmIChnX3N0cl9lcXVhbChwYXRoLCAiL3N0YWxs
IikpIHsKICAgICAgICAgLy8gVGhpcyByZXF1ZXN0IGlzIG5ldmVyIHVucGF1c2VkIGFuZCBzdGFs
bHMgZm9yZXZlci4KICAgICAgICAgc291cF9zZXJ2ZXJfcGF1c2VfbWVzc2FnZShzZXJ2ZXIsIG1l
c3NhZ2UpOwogICAgICAgICByZXR1cm47CiAgICAgfSBlbHNlCi0gICAgICAgIHNvdXBfbWVzc2Fn
ZV9zZXRfc3RhdHVzKG1lc3NhZ2UsIFNPVVBfU1RBVFVTX05PVF9GT1VORCk7CisgICAgICAgIHNv
dXBfc2VydmVyX21lc3NhZ2Vfc2V0X3N0YXR1cyhtZXNzYWdlLCBTT1VQX1NUQVRVU19OT1RfRk9V
TkQsIG51bGxwdHIpOwogCi0gICAgc291cF9tZXNzYWdlX2JvZHlfY29tcGxldGUobWVzc2FnZS0+
cmVzcG9uc2VfYm9keSk7CisgICAgc291cF9tZXNzYWdlX2JvZHlfY29tcGxldGUocmVzcG9uc2VC
b2R5KTsKIH0KIAogdm9pZCBiZWZvcmVBbGwoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RSZXNvdXJjZXMuY3BwIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RSZXNvdXJjZXMuY3BwCmluZGV4IDg0MTMxYzg1NGRm
Yy4uNTE1Y2QyMWRhZTcxIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdEdMaWIvVGVzdFJlc291cmNlcy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRHTGliL1Rlc3RSZXNvdXJjZXMuY3BwCkBAIC0yMSw2ICsyMSw3IEBACiAKICNpbmNs
dWRlICJXZWJLaXRUZXN0U2VydmVyLmgiCiAjaW5jbHVkZSAiV2ViVmlld1Rlc3QuaCIKKyNpbmNs
dWRlIDxXZWJDb3JlL1NvdXBWZXJzaW9uaW5nLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgog
I2luY2x1ZGUgPHd0Zi9nbGliL0dNdXRleExvY2tlci5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dS
ZWZQdHIuaD4KQEAgLTc4Niw2ICs3ODcsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld1N5bmNS
ZXF1ZXN0T25NYXhDb25ucyhTeW5jUmVxdWVzdE9uTWF4Q29ubnNUZXN0KiB0ZXN0LCBnYwogICAg
ICAgICBnX3NvdXJjZV9yZW1vdmUoY29udGV4dC51bmxvY2tTZXJ2ZXJTb3VyY2VJRCk7CiB9CiAK
KyNpZiBVU0UoU09VUDIpCiBzdGF0aWMgdm9pZCBhZGRDYWNoZUhUVFBIZWFkZXJzVG9SZXNwb25z
ZShTb3VwTWVzc2FnZSogbWVzc2FnZSkKIHsKICAgICAvLyBUaGUgYWN0dWFsIGRhdGUgZG9lc24n
dCByZWFsbHkgbWF0dGVyLgpAQCAtNzk5LDg3ICs4MDEsMTA2IEBAIHN0YXRpYyB2b2lkIGFkZENh
Y2hlSFRUUEhlYWRlcnNUb1Jlc3BvbnNlKFNvdXBNZXNzYWdlKiBtZXNzYWdlKQogICAgIHNvdXBf
bWVzc2FnZV9oZWFkZXJzX2FwcGVuZChtZXNzYWdlLT5yZXNwb25zZV9oZWFkZXJzLCAiRXhwaXJl
cyIsIGRhdGUuZ2V0KCkpOwogICAgIHNvdXBfZGF0ZV9mcmVlKHNvdXBEYXRlKTsKIH0KKyNlbHNl
CitzdGF0aWMgdm9pZCBhZGRDYWNoZUhUVFBIZWFkZXJzVG9SZXNwb25zZShTb3VwU2VydmVyTWVz
c2FnZSogbWVzc2FnZSkKK3sKKyAgICAvLyBUaGUgYWN0dWFsIGRhdGUgZG9lc24ndCByZWFsbHkg
bWF0dGVyLgorICAgIEdSZWZQdHI8R0RhdGVUaW1lPiBkYXRlVGltZSA9IGFkb3B0R1JlZihnX2Rh
dGVfdGltZV9uZXdfbm93X2xvY2FsKCkpOworICAgIEdVbmlxdWVQdHI8Y2hhcj4gZGF0ZShzb3Vw
X2RhdGVfdGltZV90b19zdHJpbmcoZGF0ZVRpbWUuZ2V0KCksIFNPVVBfREFURV9IVFRQKSk7Cisg
ICAgYXV0byogcmVzcG9uc2VIZWFkZXJzID0gc291cF9zZXJ2ZXJfbWVzc2FnZV9nZXRfcmVzcG9u
c2VfaGVhZGVycyhtZXNzYWdlKTsKKyAgICBzb3VwX21lc3NhZ2VfaGVhZGVyc19hcHBlbmQocmVz
cG9uc2VIZWFkZXJzLCAiTGFzdC1Nb2RpZmllZCIsIGRhdGUuZ2V0KCkpOworICAgIHNvdXBfbWVz
c2FnZV9oZWFkZXJzX2FwcGVuZChyZXNwb25zZUhlYWRlcnMsICJDYWNoZS1jb250cm9sIiwgInB1
YmxpYywgbWF4LWFnZT0zMTUzNjAwMCIpOworICAgIGRhdGVUaW1lID0gYWRvcHRHUmVmKGdfZGF0
ZV90aW1lX2FkZF9zZWNvbmRzKGRhdGVUaW1lLmdldCgpLCAzNjAwKSk7CisgICAgZGF0ZS5yZXNl
dChzb3VwX2RhdGVfdGltZV90b19zdHJpbmcoZGF0ZVRpbWUuZ2V0KCksIFNPVVBfREFURV9IVFRQ
KSk7CisgICAgc291cF9tZXNzYWdlX2hlYWRlcnNfYXBwZW5kKHJlc3BvbnNlSGVhZGVycywgIkV4
cGlyZXMiLCBkYXRlLmdldCgpKTsKK30KKyNlbmRpZgogCisjaWYgVVNFKFNPVVAyKQogc3RhdGlj
IHZvaWQgc2VydmVyQ2FsbGJhY2soU291cFNlcnZlciogc2VydmVyLCBTb3VwTWVzc2FnZSogbWVz
c2FnZSwgY29uc3QgY2hhciogcGF0aCwgR0hhc2hUYWJsZSosIFNvdXBDbGllbnRDb250ZXh0Kiwg
Z3BvaW50ZXIpCisjZWxzZQorc3RhdGljIHZvaWQgc2VydmVyQ2FsbGJhY2soU291cFNlcnZlciog
c2VydmVyLCBTb3VwU2VydmVyTWVzc2FnZSogbWVzc2FnZSwgY29uc3QgY2hhciogcGF0aCwgR0hh
c2hUYWJsZSosIGdwb2ludGVyKQorI2VuZGlmCiB7Ci0gICAgaWYgKG1lc3NhZ2UtPm1ldGhvZCAh
PSBTT1VQX01FVEhPRF9HRVQpIHsKLSAgICAgICAgc291cF9tZXNzYWdlX3NldF9zdGF0dXMobWVz
c2FnZSwgU09VUF9TVEFUVVNfTk9UX0lNUExFTUVOVEVEKTsKKyAgICBpZiAoc291cF9zZXJ2ZXJf
bWVzc2FnZV9nZXRfbWV0aG9kKG1lc3NhZ2UpICE9IFNPVVBfTUVUSE9EX0dFVCkgeworICAgICAg
ICBzb3VwX3NlcnZlcl9tZXNzYWdlX3NldF9zdGF0dXMobWVzc2FnZSwgU09VUF9TVEFUVVNfTk9U
X0lNUExFTUVOVEVELCBudWxscHRyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHNv
dXBfbWVzc2FnZV9zZXRfc3RhdHVzKG1lc3NhZ2UsIFNPVVBfU1RBVFVTX09LKTsKKyAgICBhdXRv
KiByZXNwb25zZUJvZHkgPSBzb3VwX3NlcnZlcl9tZXNzYWdlX2dldF9yZXNwb25zZV9ib2R5KG1l
c3NhZ2UpOworICAgIHNvdXBfc2VydmVyX21lc3NhZ2Vfc2V0X3N0YXR1cyhtZXNzYWdlLCBTT1VQ
X1NUQVRVU19PSywgbnVsbHB0cik7CiAKLSAgICBpZiAoc291cF9tZXNzYWdlX2hlYWRlcnNfZ2V0
X29uZShtZXNzYWdlLT5yZXF1ZXN0X2hlYWRlcnMsICJJZi1Nb2RpZmllZC1TaW5jZSIpKSB7Ci0g
ICAgICAgIHNvdXBfbWVzc2FnZV9zZXRfc3RhdHVzKG1lc3NhZ2UsIFNPVVBfU1RBVFVTX05PVF9N
T0RJRklFRCk7Ci0gICAgICAgIHNvdXBfbWVzc2FnZV9ib2R5X2NvbXBsZXRlKG1lc3NhZ2UtPnJl
c3BvbnNlX2JvZHkpOworICAgIGlmIChzb3VwX21lc3NhZ2VfaGVhZGVyc19nZXRfb25lKHNvdXBf
c2VydmVyX21lc3NhZ2VfZ2V0X3JlcXVlc3RfaGVhZGVycyhtZXNzYWdlKSwgIklmLU1vZGlmaWVk
LVNpbmNlIikpIHsKKyAgICAgICAgc291cF9zZXJ2ZXJfbWVzc2FnZV9zZXRfc3RhdHVzKG1lc3Nh
Z2UsIFNPVVBfU1RBVFVTX05PVF9NT0RJRklFRCwgbnVsbHB0cik7CisgICAgICAgIHNvdXBfbWVz
c2FnZV9ib2R5X2NvbXBsZXRlKHJlc3BvbnNlQm9keSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKKyAgICBhdXRvKiByZXNwb25zZUhlYWRlcnMgPSBzb3VwX3NlcnZlcl9tZXNzYWdlX2dldF9y
ZXNwb25zZV9oZWFkZXJzKG1lc3NhZ2UpOworCiAgICAgaWYgKGdfc3RyX2VxdWFsKHBhdGgsICIv
IikpIHsKLSAgICAgICAgc291cF9tZXNzYWdlX2JvZHlfYXBwZW5kKG1lc3NhZ2UtPnJlc3BvbnNl
X2JvZHksIFNPVVBfTUVNT1JZX1NUQVRJQywga0luZGV4SHRtbCwgc3RybGVuKGtJbmRleEh0bWwp
KTsKKyAgICAgICAgc291cF9tZXNzYWdlX2JvZHlfYXBwZW5kKHJlc3BvbnNlQm9keSwgU09VUF9N
RU1PUllfU1RBVElDLCBrSW5kZXhIdG1sLCBzdHJsZW4oa0luZGV4SHRtbCkpOwogICAgIH0gZWxz
ZSBpZiAoZ19zdHJfZXF1YWwocGF0aCwgIi9qYXZhc2NyaXB0Lmh0bWwiKSkgewogICAgICAgICBz
dGF0aWMgY29uc3QgY2hhciogamF2YXNjcmlwdEh0bWwgPSAiPGh0bWw+PGhlYWQ+PHNjcmlwdCBs
YW5ndWFnZT0namF2YXNjcmlwdCcgc3JjPScvamF2YXNjcmlwdC5qcyc+PC9zY3JpcHQ+PC9oZWFk
Pjxib2R5PjwvYm9keT48L2h0bWw+IjsKLSAgICAgICAgc291cF9tZXNzYWdlX2JvZHlfYXBwZW5k
KG1lc3NhZ2UtPnJlc3BvbnNlX2JvZHksIFNPVVBfTUVNT1JZX1NUQVRJQywgamF2YXNjcmlwdEh0
bWwsIHN0cmxlbihqYXZhc2NyaXB0SHRtbCkpOworICAgICAgICBzb3VwX21lc3NhZ2VfYm9keV9h
cHBlbmQocmVzcG9uc2VCb2R5LCBTT1VQX01FTU9SWV9TVEFUSUMsIGphdmFzY3JpcHRIdG1sLCBz
dHJsZW4oamF2YXNjcmlwdEh0bWwpKTsKICAgICB9IGVsc2UgaWYgKGdfc3RyX2VxdWFsKHBhdGgs
ICIvaW1hZ2UuaHRtbCIpKSB7CiAgICAgICAgIHN0YXRpYyBjb25zdCBjaGFyKiBpbWFnZUhUTUwg
PSAiPGh0bWw+PGJvZHk+PGltZyBzcmM9Jy9ibGFuay5pY28nPjwvaW1nPjwvYm9keT48L2h0bWw+
IjsKLSAgICAgICAgc291cF9tZXNzYWdlX2JvZHlfYXBwZW5kKG1lc3NhZ2UtPnJlc3BvbnNlX2Jv
ZHksIFNPVVBfTUVNT1JZX1NUQVRJQywgaW1hZ2VIVE1MLCBzdHJsZW4oaW1hZ2VIVE1MKSk7Cisg
ICAgICAgIHNvdXBfbWVzc2FnZV9ib2R5X2FwcGVuZChyZXNwb25zZUJvZHksIFNPVVBfTUVNT1JZ
X1NUQVRJQywgaW1hZ2VIVE1MLCBzdHJsZW4oaW1hZ2VIVE1MKSk7CiAgICAgfSBlbHNlIGlmIChn
X3N0cl9lcXVhbChwYXRoLCAiL3JlZGlyZWN0ZWQtY3NzLmh0bWwiKSkgewogICAgICAgICBzdGF0
aWMgY29uc3QgY2hhciogcmVkaXJlY3RlZENTU0h0bWwgPSAiPGh0bWw+PGhlYWQ+PGxpbmsgcmVs
PSdzdHlsZXNoZWV0JyBocmVmPScvcmVkaXJlY3RlZC5jc3MnIHR5cGU9J3RleHQvY3NzJz48L2hl
YWQ+PGJvZHk+PC9odG1sPiI7Ci0gICAgICAgIHNvdXBfbWVzc2FnZV9ib2R5X2FwcGVuZChtZXNz
YWdlLT5yZXNwb25zZV9ib2R5LCBTT1VQX01FTU9SWV9TVEFUSUMsIHJlZGlyZWN0ZWRDU1NIdG1s
LCBzdHJsZW4ocmVkaXJlY3RlZENTU0h0bWwpKTsKKyAgICAgICAgc291cF9tZXNzYWdlX2JvZHlf
YXBwZW5kKHJlc3BvbnNlQm9keSwgU09VUF9NRU1PUllfU1RBVElDLCByZWRpcmVjdGVkQ1NTSHRt
bCwgc3RybGVuKHJlZGlyZWN0ZWRDU1NIdG1sKSk7CiAgICAgfSBlbHNlIGlmIChnX3N0cl9lcXVh
bChwYXRoLCAiL2ludmFsaWQtY3NzLmh0bWwiKSkgewotICAgICAgICBzdGF0aWMgY29uc3QgY2hh
ciogaW52YWxpZENTU0h0bWwgPSAiPGh0bWw+PGhlYWQ+PGxpbmsgcmVsPSdzdHlsZXNoZWV0JyBo
cmVmPScvaW52YWxpZC5jc3MnIHR5cGU9J3RleHQvY3NzJz48L2hlYWQ+PGJvZHk+PC9odG1sPiI7
Ci0gICAgICAgIHNvdXBfbWVzc2FnZV9ib2R5X2FwcGVuZChtZXNzYWdlLT5yZXNwb25zZV9ib2R5
LCBTT1VQX01FTU9SWV9TVEFUSUMsIGludmFsaWRDU1NIdG1sLCBzdHJsZW4oaW52YWxpZENTU0h0
bWwpKTsKKyAgICAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGludmFsaWRDU1NIdG1sID0gIjxodG1s
PjxoZWFkPjxsaW5rIHJlbD0nc3R5bGVzaGVldCcgaHJlZj0naHR0cDovLzEyNy4wLjAuMToxMjM0
L2ludmFsaWQuY3NzJyB0eXBlPSd0ZXh0L2Nzcyc+PC9oZWFkPjxib2R5PjwvaHRtbD4iOworICAg
ICAgICBzb3VwX21lc3NhZ2VfYm9keV9hcHBlbmQocmVzcG9uc2VCb2R5LCBTT1VQX01FTU9SWV9T
VEFUSUMsIGludmFsaWRDU1NIdG1sLCBzdHJsZW4oaW52YWxpZENTU0h0bWwpKTsKICAgICB9IGVs
c2UgaWYgKGdfc3RyX2VxdWFsKHBhdGgsICIvc2ltcGxlLXN0eWxlLWNzcy5odG1sIikpIHsKICAg
ICAgICAgc3RhdGljIGNvbnN0IGNoYXIqIHNpbXBsZVN0eWxlQ1NTSHRtbCA9ICI8aHRtbD48aGVh
ZD48bGluayByZWw9J3N0eWxlc2hlZXQnIGhyZWY9Jy9zaW1wbGUtc3R5bGUuY3NzJyB0eXBlPSd0
ZXh0L2Nzcyc+PC9oZWFkPjxib2R5PjwvaHRtbD4iOwotICAgICAgICBzb3VwX21lc3NhZ2VfYm9k
eV9hcHBlbmQobWVzc2FnZS0+cmVzcG9uc2VfYm9keSwgU09VUF9NRU1PUllfU1RBVElDLCBzaW1w
bGVTdHlsZUNTU0h0bWwsIHN0cmxlbihzaW1wbGVTdHlsZUNTU0h0bWwpKTsKKyAgICAgICAgc291
cF9tZXNzYWdlX2JvZHlfYXBwZW5kKHJlc3BvbnNlQm9keSwgU09VUF9NRU1PUllfU1RBVElDLCBz
aW1wbGVTdHlsZUNTU0h0bWwsIHN0cmxlbihzaW1wbGVTdHlsZUNTU0h0bWwpKTsKICAgICB9IGVs
c2UgaWYgKGdfc3RyX2VxdWFsKHBhdGgsICIvc3R5bGUuY3NzIikpIHsKLSAgICAgICAgc291cF9t
ZXNzYWdlX2JvZHlfYXBwZW5kKG1lc3NhZ2UtPnJlc3BvbnNlX2JvZHksIFNPVVBfTUVNT1JZX1NU
QVRJQywga1N0eWxlQ1NTLCBzdHJsZW4oa1N0eWxlQ1NTKSk7CisgICAgICAgIHNvdXBfbWVzc2Fn
ZV9ib2R5X2FwcGVuZChyZXNwb25zZUJvZHksIFNPVVBfTUVNT1JZX1NUQVRJQywga1N0eWxlQ1NT
LCBzdHJsZW4oa1N0eWxlQ1NTKSk7CiAgICAgICAgIGFkZENhY2hlSFRUUEhlYWRlcnNUb1Jlc3Bv
bnNlKG1lc3NhZ2UpOwotICAgICAgICBzb3VwX21lc3NhZ2VfaGVhZGVyc19hcHBlbmQobWVzc2Fn
ZS0+cmVzcG9uc2VfaGVhZGVycywgIkNvbnRlbnQtVHlwZSIsICJ0ZXh0L2NzcyIpOworICAgICAg
ICBzb3VwX21lc3NhZ2VfaGVhZGVyc19hcHBlbmQocmVzcG9uc2VIZWFkZXJzLCAiQ29udGVudC1U
eXBlIiwgInRleHQvY3NzIik7CiAgICAgfSBlbHNlIGlmIChnX3N0cl9lcXVhbChwYXRoLCAiL2ph
dmFzY3JpcHQuanMiKSB8fCBnX3N0cl9lcXVhbChwYXRoLCAiL2phdmFzY3JpcHQtYWZ0ZXItcmVk
aXJlY3Rpb24uanMiKSkgewotICAgICAgICBzb3VwX21lc3NhZ2VfYm9keV9hcHBlbmQobWVzc2Fn
ZS0+cmVzcG9uc2VfYm9keSwgU09VUF9NRU1PUllfU1RBVElDLCBrSmF2YXNjcmlwdCwgc3RybGVu
KGtKYXZhc2NyaXB0KSk7Ci0gICAgICAgIHNvdXBfbWVzc2FnZV9oZWFkZXJzX2FwcGVuZChtZXNz
YWdlLT5yZXNwb25zZV9oZWFkZXJzLCAiQ29udGVudC1UeXBlIiwgInRleHQvamF2YXNjcmlwdCIp
OwotICAgICAgICBzb3VwX21lc3NhZ2VfaGVhZGVyc19hcHBlbmQobWVzc2FnZS0+cmVzcG9uc2Vf
aGVhZGVycywgIkNvbnRlbnQtRGlzcG9zaXRpb24iLCAiYXR0YWNobWVudDsgZmlsZW5hbWU9SmF2
YVNjcmlwdC5qcyIpOworICAgICAgICBzb3VwX21lc3NhZ2VfYm9keV9hcHBlbmQocmVzcG9uc2VC
b2R5LCBTT1VQX01FTU9SWV9TVEFUSUMsIGtKYXZhc2NyaXB0LCBzdHJsZW4oa0phdmFzY3JpcHQp
KTsKKyAgICAgICAgc291cF9tZXNzYWdlX2hlYWRlcnNfYXBwZW5kKHJlc3BvbnNlSGVhZGVycywg
IkNvbnRlbnQtVHlwZSIsICJ0ZXh0L2phdmFzY3JpcHQiKTsKKyAgICAgICAgc291cF9tZXNzYWdl
X2hlYWRlcnNfYXBwZW5kKHJlc3BvbnNlSGVhZGVycywgIkNvbnRlbnQtRGlzcG9zaXRpb24iLCAi
YXR0YWNobWVudDsgZmlsZW5hbWU9SmF2YVNjcmlwdC5qcyIpOwogICAgIH0gZWxzZSBpZiAoZ19z
dHJfZXF1YWwocGF0aCwgIi9yZWxhdGl2ZS1qYXZhc2NyaXB0Lmh0bWwiKSkgewogICAgICAgICBz
dGF0aWMgY29uc3QgY2hhciogamF2YXNjcmlwdFJlbGF0aXZlSFRNTCA9ICI8aHRtbD48aGVhZD48
c2NyaXB0IGxhbmd1YWdlPSdqYXZhc2NyaXB0JyBzcmM9J3JlbW92ZS10aGlzL2phdmFzY3JpcHQu
anMnPjwvc2NyaXB0PjwvaGVhZD48Ym9keT48L2JvZHk+PC9odG1sPiI7Ci0gICAgICAgIHNvdXBf
bWVzc2FnZV9ib2R5X2FwcGVuZChtZXNzYWdlLT5yZXNwb25zZV9ib2R5LCBTT1VQX01FTU9SWV9T
VEFUSUMsIGphdmFzY3JpcHRSZWxhdGl2ZUhUTUwsIHN0cmxlbihqYXZhc2NyaXB0UmVsYXRpdmVI
VE1MKSk7CisgICAgICAgIHNvdXBfbWVzc2FnZV9ib2R5X2FwcGVuZChyZXNwb25zZUJvZHksIFNP
VVBfTUVNT1JZX1NUQVRJQywgamF2YXNjcmlwdFJlbGF0aXZlSFRNTCwgc3RybGVuKGphdmFzY3Jp
cHRSZWxhdGl2ZUhUTUwpKTsKICAgICB9IGVsc2UgaWYgKGdfc3RyX2VxdWFsKHBhdGgsICIvcmVz
b3VyY2UtdG8tY2FuY2VsLmh0bWwiKSkgewogICAgICAgICBzdGF0aWMgY29uc3QgY2hhciogcmVz
b3VyY2VUb0NhbmNlbEhUTUwgPSAiPGh0bWw+PGhlYWQ+PHNjcmlwdCBsYW5ndWFnZT0namF2YXNj
cmlwdCcgc3JjPSdjYW5jZWwtdGhpcy5qcyc+PC9zY3JpcHQ+PC9oZWFkPjxib2R5PjwvYm9keT48
L2h0bWw+IjsKLSAgICAgICAgc291cF9tZXNzYWdlX2JvZHlfYXBwZW5kKG1lc3NhZ2UtPnJlc3Bv
bnNlX2JvZHksIFNPVVBfTUVNT1JZX1NUQVRJQywgcmVzb3VyY2VUb0NhbmNlbEhUTUwsIHN0cmxl
bihyZXNvdXJjZVRvQ2FuY2VsSFRNTCkpOworICAgICAgICBzb3VwX21lc3NhZ2VfYm9keV9hcHBl
bmQocmVzcG9uc2VCb2R5LCBTT1VQX01FTU9SWV9TVEFUSUMsIHJlc291cmNlVG9DYW5jZWxIVE1M
LCBzdHJsZW4ocmVzb3VyY2VUb0NhbmNlbEhUTUwpKTsKICAgICB9IGVsc2UgaWYgKGdfc3RyX2Vx
dWFsKHBhdGgsICIvcmVkaXJlY3RlZC1qYXZhc2NyaXB0Lmh0bWwiKSkgewogICAgICAgICBzdGF0
aWMgY29uc3QgY2hhciogamF2YXNjcmlwdFJlbGF0aXZlSFRNTCA9ICI8aHRtbD48aGVhZD48c2Ny
aXB0IGxhbmd1YWdlPSdqYXZhc2NyaXB0JyBzcmM9Jy9yZWRpcmVjdGVkLmpzJz48L3NjcmlwdD48
L2hlYWQ+PGJvZHk+PC9ib2R5PjwvaHRtbD4iOwotICAgICAgICBzb3VwX21lc3NhZ2VfYm9keV9h
cHBlbmQobWVzc2FnZS0+cmVzcG9uc2VfYm9keSwgU09VUF9NRU1PUllfU1RBVElDLCBqYXZhc2Ny
aXB0UmVsYXRpdmVIVE1MLCBzdHJsZW4oamF2YXNjcmlwdFJlbGF0aXZlSFRNTCkpOworICAgICAg
ICBzb3VwX21lc3NhZ2VfYm9keV9hcHBlbmQocmVzcG9uc2VCb2R5LCBTT1VQX01FTU9SWV9TVEFU
SUMsIGphdmFzY3JpcHRSZWxhdGl2ZUhUTUwsIHN0cmxlbihqYXZhc2NyaXB0UmVsYXRpdmVIVE1M
KSk7CiAgICAgfSBlbHNlIGlmIChnX3N0cl9lcXVhbChwYXRoLCAiL3JlZGlyZWN0ZWQtdG8tY2Fu
Y2VsLmh0bWwiKSkgewogICAgICAgICBzdGF0aWMgY29uc3QgY2hhciogamF2YXNjcmlwdFJlbGF0
aXZlSFRNTCA9ICI8aHRtbD48aGVhZD48c2NyaXB0IGxhbmd1YWdlPSdqYXZhc2NyaXB0JyBzcmM9
Jy9yZWRpcmVjdGVkLXRvLWNhbmNlbC5qcyc+PC9zY3JpcHQ+PC9oZWFkPjxib2R5PjwvYm9keT48
L2h0bWw+IjsKLSAgICAgICAgc291cF9tZXNzYWdlX2JvZHlfYXBwZW5kKG1lc3NhZ2UtPnJlc3Bv
bnNlX2JvZHksIFNPVVBfTUVNT1JZX1NUQVRJQywgamF2YXNjcmlwdFJlbGF0aXZlSFRNTCwgc3Ry
bGVuKGphdmFzY3JpcHRSZWxhdGl2ZUhUTUwpKTsKKyAgICAgICAgc291cF9tZXNzYWdlX2JvZHlf
YXBwZW5kKHJlc3BvbnNlQm9keSwgU09VUF9NRU1PUllfU1RBVElDLCBqYXZhc2NyaXB0UmVsYXRp
dmVIVE1MLCBzdHJsZW4oamF2YXNjcmlwdFJlbGF0aXZlSFRNTCkpOwogICAgIH0gZWxzZSBpZiAo
Z19zdHJfZXF1YWwocGF0aCwgIi9ibGFuay5pY28iKSkgewogICAgICAgICBHVW5pcXVlUHRyPGNo
YXI+IGZpbGVQYXRoKGdfYnVpbGRfZmlsZW5hbWUoVGVzdDo6Z2V0UmVzb3VyY2VzRGlyKCkuZGF0
YSgpLCBwYXRoLCBudWxscHRyKSk7CiAgICAgICAgIGNoYXIqIGNvbnRlbnRzOwogICAgICAgICBn
c2l6ZSBjb250ZW50c0xlbmd0aDsKICAgICAgICAgZ19maWxlX2dldF9jb250ZW50cyhmaWxlUGF0
aC5nZXQoKSwgJmNvbnRlbnRzLCAmY29udGVudHNMZW5ndGgsIDApOwotICAgICAgICBzb3VwX21l
c3NhZ2VfYm9keV9hcHBlbmQobWVzc2FnZS0+cmVzcG9uc2VfYm9keSwgU09VUF9NRU1PUllfVEFL
RSwgY29udGVudHMsIGNvbnRlbnRzTGVuZ3RoKTsKKyAgICAgICAgc291cF9tZXNzYWdlX2JvZHlf
YXBwZW5kKHJlc3BvbnNlQm9keSwgU09VUF9NRU1PUllfVEFLRSwgY29udGVudHMsIGNvbnRlbnRz
TGVuZ3RoKTsKICAgICAgICAgYWRkQ2FjaGVIVFRQSGVhZGVyc1RvUmVzcG9uc2UobWVzc2FnZSk7
Ci0gICAgICAgIHNvdXBfbWVzc2FnZV9oZWFkZXJzX2FwcGVuZChtZXNzYWdlLT5yZXNwb25zZV9o
ZWFkZXJzLCAiQ29udGVudC1UeXBlIiwgImltYWdlL3ZuZC5taWNyb3NvZnQuaWNvbiIpOworICAg
ICAgICBzb3VwX21lc3NhZ2VfaGVhZGVyc19hcHBlbmQocmVzcG9uc2VIZWFkZXJzLCAiQ29udGVu
dC1UeXBlIiwgImltYWdlL3ZuZC5taWNyb3NvZnQuaWNvbiIpOwogICAgIH0gZWxzZSBpZiAoZ19z
dHJfZXF1YWwocGF0aCwgIi9zaW1wbGUtc3R5bGUuY3NzIikpIHsKICAgICAgICAgc3RhdGljIGNv
bnN0IGNoYXIqIHNpbXBsZUNTUyA9CiAgICAgICAgICAgICAiYm9keSB7IgogICAgICAgICAgICAg
IiAgICBtYXJnaW46IDBweDsiCiAgICAgICAgICAgICAiICAgIHBhZGRpbmc6IDBweDsiCiAgICAg
ICAgICAgICAifSI7Ci0gICAgICAgIHNvdXBfbWVzc2FnZV9ib2R5X2FwcGVuZChtZXNzYWdlLT5y
ZXNwb25zZV9ib2R5LCBTT1VQX01FTU9SWV9TVEFUSUMsIHNpbXBsZUNTUywgc3RybGVuKHNpbXBs
ZUNTUykpOwotICAgICAgICBzb3VwX21lc3NhZ2VfaGVhZGVyc19hcHBlbmQobWVzc2FnZS0+cmVz
cG9uc2VfaGVhZGVycywgIkNvbnRlbnQtVHlwZSIsICJ0ZXh0L2NzcyIpOworICAgICAgICBzb3Vw
X21lc3NhZ2VfYm9keV9hcHBlbmQocmVzcG9uc2VCb2R5LCBTT1VQX01FTU9SWV9TVEFUSUMsIHNp
bXBsZUNTUywgc3RybGVuKHNpbXBsZUNTUykpOworICAgICAgICBzb3VwX21lc3NhZ2VfaGVhZGVy
c19hcHBlbmQocmVzcG9uc2VIZWFkZXJzLCAiQ29udGVudC1UeXBlIiwgInRleHQvY3NzIik7CiAg
ICAgfSBlbHNlIGlmIChnX3N0cl9lcXVhbChwYXRoLCAiL3JlZGlyZWN0ZWQuY3NzIikpIHsKLSAg
ICAgICAgc291cF9tZXNzYWdlX3NldF9zdGF0dXMobWVzc2FnZSwgU09VUF9TVEFUVVNfTU9WRURf
UEVSTUFORU5UTFkpOwotICAgICAgICBzb3VwX21lc3NhZ2VfaGVhZGVyc19hcHBlbmQobWVzc2Fn
ZS0+cmVzcG9uc2VfaGVhZGVycywgIkxvY2F0aW9uIiwgIi9zaW1wbGUtc3R5bGUuY3NzIik7Cisg
ICAgICAgIHNvdXBfc2VydmVyX21lc3NhZ2Vfc2V0X3N0YXR1cyhtZXNzYWdlLCBTT1VQX1NUQVRV
U19NT1ZFRF9QRVJNQU5FTlRMWSwgbnVsbHB0cik7CisgICAgICAgIHNvdXBfbWVzc2FnZV9oZWFk
ZXJzX2FwcGVuZChyZXNwb25zZUhlYWRlcnMsICJMb2NhdGlvbiIsICIvc2ltcGxlLXN0eWxlLmNz
cyIpOwogICAgIH0gZWxzZSBpZiAoZ19zdHJfZXF1YWwocGF0aCwgIi9yZWRpcmVjdGVkLmpzIikp
IHsKLSAgICAgICAgc291cF9tZXNzYWdlX3NldF9zdGF0dXMobWVzc2FnZSwgU09VUF9TVEFUVVNf
TU9WRURfUEVSTUFORU5UTFkpOwotICAgICAgICBzb3VwX21lc3NhZ2VfaGVhZGVyc19hcHBlbmQo
bWVzc2FnZS0+cmVzcG9uc2VfaGVhZGVycywgIkxvY2F0aW9uIiwgIi9yZW1vdmUtdGhpcy9qYXZh
c2NyaXB0LWFmdGVyLXJlZGlyZWN0aW9uLmpzIik7CisgICAgICAgIHNvdXBfc2VydmVyX21lc3Nh
Z2Vfc2V0X3N0YXR1cyhtZXNzYWdlLCBTT1VQX1NUQVRVU19NT1ZFRF9QRVJNQU5FTlRMWSwgbnVs
bHB0cik7CisgICAgICAgIHNvdXBfbWVzc2FnZV9oZWFkZXJzX2FwcGVuZChyZXNwb25zZUhlYWRl
cnMsICJMb2NhdGlvbiIsICIvcmVtb3ZlLXRoaXMvamF2YXNjcmlwdC1hZnRlci1yZWRpcmVjdGlv
bi5qcyIpOwogICAgIH0gZWxzZSBpZiAoZ19zdHJfZXF1YWwocGF0aCwgIi9yZWRpcmVjdGVkLXRv
LWNhbmNlbC5qcyIpKSB7Ci0gICAgICAgIHNvdXBfbWVzc2FnZV9zZXRfc3RhdHVzKG1lc3NhZ2Us
IFNPVVBfU1RBVFVTX01PVkVEX1BFUk1BTkVOVExZKTsKLSAgICAgICAgc291cF9tZXNzYWdlX2hl
YWRlcnNfYXBwZW5kKG1lc3NhZ2UtPnJlc3BvbnNlX2hlYWRlcnMsICJMb2NhdGlvbiIsICIvY2Fu
Y2VsLXRoaXMuanMiKTsKLSAgICB9IGVsc2UgaWYgKGdfc3RyX2VxdWFsKHBhdGgsICIvaW52YWxp
ZC5jc3MiKSkKLSAgICAgICAgc291cF9tZXNzYWdlX3NldF9zdGF0dXMobWVzc2FnZSwgU09VUF9T
VEFUVVNfQ0FOVF9DT05ORUNUKTsKLSAgICBlbHNlIGlmIChnX3N0cl9oYXNfcHJlZml4KHBhdGgs
ICIvc3luYy1yZXF1ZXN0LW9uLW1heC1jb25ucy0iKSkgeworICAgICAgICBzb3VwX3NlcnZlcl9t
ZXNzYWdlX3NldF9zdGF0dXMobWVzc2FnZSwgU09VUF9TVEFUVVNfTU9WRURfUEVSTUFORU5UTFks
IG51bGxwdHIpOworICAgICAgICBzb3VwX21lc3NhZ2VfaGVhZGVyc19hcHBlbmQocmVzcG9uc2VI
ZWFkZXJzLCAiTG9jYXRpb24iLCAiL2NhbmNlbC10aGlzLmpzIik7CisgICAgfSBlbHNlIGlmIChn
X3N0cl9oYXNfcHJlZml4KHBhdGgsICIvc3luYy1yZXF1ZXN0LW9uLW1heC1jb25ucy0iKSkgewog
ICAgICAgICBjaGFyKiBjb250ZW50czsKICAgICAgICAgZ3NpemUgY29udGVudHNMZW5ndGg7CiAg
ICAgICAgIGlmIChnX3N0cl9lcXVhbChwYXRoLCAiL3N5bmMtcmVxdWVzdC1vbi1tYXgtY29ubnMt
MCIpKSB7CkBAIC04OTksMTAgKzkyMCwxMCBAQCBzdGF0aWMgdm9pZCBzZXJ2ZXJDYWxsYmFjayhT
b3VwU2VydmVyKiBzZXJ2ZXIsIFNvdXBNZXNzYWdlKiBtZXNzYWdlLCBjb25zdCBjaGFyKgogICAg
ICAgICAgICAgR1VuaXF1ZVB0cjxjaGFyPiBmaWxlUGF0aChnX2J1aWxkX2ZpbGVuYW1lKFRlc3Q6
OmdldFJlc291cmNlc0RpcigpLmRhdGEoKSwgImJsYW5rLmljbyIsIG51bGxwdHIpKTsKICAgICAg
ICAgICAgIGdfZmlsZV9nZXRfY29udGVudHMoZmlsZVBhdGguZ2V0KCksICZjb250ZW50cywgJmNv
bnRlbnRzTGVuZ3RoLCAwKTsKICAgICAgICAgfQotICAgICAgICBzb3VwX21lc3NhZ2VfYm9keV9h
cHBlbmQobWVzc2FnZS0+cmVzcG9uc2VfYm9keSwgU09VUF9NRU1PUllfVEFLRSwgY29udGVudHMs
IGNvbnRlbnRzTGVuZ3RoKTsKKyAgICAgICAgc291cF9tZXNzYWdlX2JvZHlfYXBwZW5kKHJlc3Bv
bnNlQm9keSwgU09VUF9NRU1PUllfVEFLRSwgY29udGVudHMsIGNvbnRlbnRzTGVuZ3RoKTsKICAg
ICB9IGVsc2UKLSAgICAgICAgc291cF9tZXNzYWdlX3NldF9zdGF0dXMobWVzc2FnZSwgU09VUF9T
VEFUVVNfTk9UX0ZPVU5EKTsKLSAgICBzb3VwX21lc3NhZ2VfYm9keV9jb21wbGV0ZShtZXNzYWdl
LT5yZXNwb25zZV9ib2R5KTsKKyAgICAgICAgc291cF9zZXJ2ZXJfbWVzc2FnZV9zZXRfc3RhdHVz
KG1lc3NhZ2UsIFNPVVBfU1RBVFVTX05PVF9GT1VORCwgbnVsbHB0cik7CisgICAgc291cF9tZXNz
YWdlX2JvZHlfY29tcGxldGUocmVzcG9uc2VCb2R5KTsKIH0KIAogdm9pZCBiZWZvcmVBbGwoKQpk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RTU0wu
Y3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RTU0wuY3BwCmlu
ZGV4IGYzMjM5ZTI2NjFlMi4uNzM0YWMzYmM3ZGFiIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFNTTC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RTU0wuY3BwCkBAIC0yMSw2ICsyMSw3IEBACiAKICNp
bmNsdWRlICJMb2FkVHJhY2tpbmdUZXN0LmgiCiAjaW5jbHVkZSAiV2ViS2l0VGVzdFNlcnZlci5o
IgorI2luY2x1ZGUgPFdlYkNvcmUvU291cFZlcnNpb25pbmcuaD4KIAogc3RhdGljIFdlYktpdFRl
c3RTZXJ2ZXIqIGtIdHRwc1NlcnZlcjsKIHN0YXRpYyBXZWJLaXRUZXN0U2VydmVyKiBrSHR0cFNl
cnZlcjsKQEAgLTQxLDcgKzQyLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHByb3Zp
c2lvbmFsTG9hZEZhaWxlZChjb25zdCBnY2hhciogZmFpbGluZ1VSSSwgR0Vycm9yKiBlcnJvcikK
ICAgICB7Ci0gICAgICAgIGdfYXNzZXJ0X2Vycm9yKGVycm9yLCBTT1VQX0hUVFBfRVJST1IsIFNP
VVBfU1RBVFVTX1NTTF9GQUlMRUQpOworICAgICAgICBnX2Fzc2VydF9lcnJvcihlcnJvciwgR19U
TFNfRVJST1IsIEdfVExTX0VSUk9SX0JBRF9DRVJUSUZJQ0FURSk7CiAgICAgICAgIExvYWRUcmFj
a2luZ1Rlc3Q6OnByb3Zpc2lvbmFsTG9hZEZhaWxlZChmYWlsaW5nVVJJLCBlcnJvcik7CiAgICAg
fQogCkBAIC0zODAsNyArMzgxLDExIEBAIHB1YmxpYzoKICAgICAgICAgIiAgICBzb2NrZXQucmVt
b3ZlRXZlbnRMaXN0ZW5lcignb3BlbicsIG9uT3Blbik7IgogICAgICAgICAifSI7CiAKKyNpZiBV
U0UoU09VUDIpCiAgICAgc3RhdGljIHZvaWQgc2VydmVyV2ViU29ja2V0Q2FsbGJhY2soU291cFNl
cnZlciosIFNvdXBXZWJzb2NrZXRDb25uZWN0aW9uKiwgY29uc3QgY2hhciosIFNvdXBDbGllbnRD
b250ZXh0KiwgZ3BvaW50ZXIgdXNlckRhdGEpCisjZWxzZQorICAgIHN0YXRpYyB2b2lkIHNlcnZl
cldlYlNvY2tldENhbGxiYWNrKFNvdXBTZXJ2ZXIqLCBTb3VwU2VydmVyTWVzc2FnZSosIGNvbnN0
IGNoYXIqLCBTb3VwV2Vic29ja2V0Q29ubmVjdGlvbiosIGdwb2ludGVyIHVzZXJEYXRhKQorI2Vu
ZGlmCiAgICAgewogICAgICAgICBzdGF0aWNfY2FzdDxXZWJTb2NrZXRUZXN0Kj4odXNlckRhdGEp
LT5tX2V2ZW50cyB8PSBXZWJTb2NrZXRUZXN0OjpFdmVudEZsYWdzOjpEaWRTZXJ2ZXJDb21wbGV0
ZUhhbmRzaGFrZTsKICAgICB9CkBAIC00NzIsNzUgKzQ3Nyw4NyBAQCBzdGF0aWMgdm9pZCB0ZXN0
VExTRXJyb3JzRXBoZW1lcmFsKEVwaGVtZXJhbFNTTFRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIp
CiAgICAgZ19hc3NlcnRfZmFsc2UodGVzdC0+bV9sb2FkRXZlbnRzLmNvbnRhaW5zKExvYWRUcmFj
a2luZ1Rlc3Q6OkxvYWRDb21taXR0ZWQpKTsKIH0KIAorI2lmIFVTRShTT1VQMikKIHN0YXRpYyB2
b2lkIGh0dHBzU2VydmVyQ2FsbGJhY2soU291cFNlcnZlciogc2VydmVyLCBTb3VwTWVzc2FnZSog
bWVzc2FnZSwgY29uc3QgY2hhciogcGF0aCwgR0hhc2hUYWJsZSosIFNvdXBDbGllbnRDb250ZXh0
KiwgZ3BvaW50ZXIpCisjZWxzZQorc3RhdGljIHZvaWQgaHR0cHNTZXJ2ZXJDYWxsYmFjayhTb3Vw
U2VydmVyKiBzZXJ2ZXIsIFNvdXBTZXJ2ZXJNZXNzYWdlKiBtZXNzYWdlLCBjb25zdCBjaGFyKiBw
YXRoLCBHSGFzaFRhYmxlKiwgZ3BvaW50ZXIpCisjZW5kaWYKIHsKLSAgICBpZiAobWVzc2FnZS0+
bWV0aG9kICE9IFNPVVBfTUVUSE9EX0dFVCkgewotICAgICAgICBzb3VwX21lc3NhZ2Vfc2V0X3N0
YXR1cyhtZXNzYWdlLCBTT1VQX1NUQVRVU19OT1RfSU1QTEVNRU5URUQpOworICAgIGlmIChzb3Vw
X3NlcnZlcl9tZXNzYWdlX2dldF9tZXRob2QobWVzc2FnZSkgIT0gU09VUF9NRVRIT0RfR0VUKSB7
CisgICAgICAgIHNvdXBfc2VydmVyX21lc3NhZ2Vfc2V0X3N0YXR1cyhtZXNzYWdlLCBTT1VQX1NU
QVRVU19OT1RfSU1QTEVNRU5URUQsIG51bGxwdHIpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CiAgICAgZ19hc3NlcnRfZmFsc2UoYXNzZXJ0SWZTU0xSZXF1ZXN0UHJvY2Vzc2VkKTsKIAorICAg
IGF1dG8qIHJlc3BvbnNlQm9keSA9IHNvdXBfc2VydmVyX21lc3NhZ2VfZ2V0X3Jlc3BvbnNlX2Jv
ZHkobWVzc2FnZSk7CisKICAgICBpZiAoZ19zdHJfZXF1YWwocGF0aCwgIi8iKSkgewotICAgICAg
ICBzb3VwX21lc3NhZ2Vfc2V0X3N0YXR1cyhtZXNzYWdlLCBTT1VQX1NUQVRVU19PSyk7Ci0gICAg
ICAgIHNvdXBfbWVzc2FnZV9ib2R5X2FwcGVuZChtZXNzYWdlLT5yZXNwb25zZV9ib2R5LCBTT1VQ
X01FTU9SWV9TVEFUSUMsIGluZGV4SFRNTCwgc3RybGVuKGluZGV4SFRNTCkpOwotICAgICAgICBz
b3VwX21lc3NhZ2VfYm9keV9jb21wbGV0ZShtZXNzYWdlLT5yZXNwb25zZV9ib2R5KTsKKyAgICAg
ICAgc291cF9zZXJ2ZXJfbWVzc2FnZV9zZXRfc3RhdHVzKG1lc3NhZ2UsIFNPVVBfU1RBVFVTX09L
LCBudWxscHRyKTsKKyAgICAgICAgc291cF9tZXNzYWdlX2JvZHlfYXBwZW5kKHJlc3BvbnNlQm9k
eSwgU09VUF9NRU1PUllfU1RBVElDLCBpbmRleEhUTUwsIHN0cmxlbihpbmRleEhUTUwpKTsKKyAg
ICAgICAgc291cF9tZXNzYWdlX2JvZHlfY29tcGxldGUocmVzcG9uc2VCb2R5KTsKICAgICB9IGVs
c2UgaWYgKGdfc3RyX2VxdWFsKHBhdGgsICIvaW5zZWN1cmUtY29udGVudC8iKSkgewogICAgICAg
ICBHVW5pcXVlUHRyPGNoYXI+IHJlc3BvbnNlSFRNTChnX3N0cmR1cF9wcmludGYoaW5zZWN1cmVD
b250ZW50SFRNTCwga0h0dHBTZXJ2ZXItPmdldFVSSUZvclBhdGgoIi90ZXN0LXNjcmlwdCIpLmRh
dGEoKSwga0h0dHBTZXJ2ZXItPmdldFVSSUZvclBhdGgoIi90ZXN0LWltYWdlIikuZGF0YSgpKSk7
Ci0gICAgICAgIHNvdXBfbWVzc2FnZV9ib2R5X2FwcGVuZChtZXNzYWdlLT5yZXNwb25zZV9ib2R5
LCBTT1VQX01FTU9SWV9DT1BZLCByZXNwb25zZUhUTUwuZ2V0KCksIHN0cmxlbihyZXNwb25zZUhU
TUwuZ2V0KCkpKTsKLSAgICAgICAgc291cF9tZXNzYWdlX3NldF9zdGF0dXMobWVzc2FnZSwgU09V
UF9TVEFUVVNfT0spOwotICAgICAgICBzb3VwX21lc3NhZ2VfYm9keV9jb21wbGV0ZShtZXNzYWdl
LT5yZXNwb25zZV9ib2R5KTsKKyAgICAgICAgc291cF9tZXNzYWdlX2JvZHlfYXBwZW5kKHJlc3Bv
bnNlQm9keSwgU09VUF9NRU1PUllfQ09QWSwgcmVzcG9uc2VIVE1MLmdldCgpLCBzdHJsZW4ocmVz
cG9uc2VIVE1MLmdldCgpKSk7CisgICAgICAgIHNvdXBfbWVzc2FnZV9ib2R5X2NvbXBsZXRlKHJl
c3BvbnNlQm9keSk7CisgICAgICAgIHNvdXBfc2VydmVyX21lc3NhZ2Vfc2V0X3N0YXR1cyhtZXNz
YWdlLCBTT1VQX1NUQVRVU19PSywgbnVsbHB0cik7CiAgICAgfSBlbHNlIGlmIChnX3N0cl9lcXVh
bChwYXRoLCAiL3Rlc3QtdGxzLyIpKSB7Ci0gICAgICAgIHNvdXBfbWVzc2FnZV9zZXRfc3RhdHVz
KG1lc3NhZ2UsIFNPVVBfU1RBVFVTX09LKTsKLSAgICAgICAgc291cF9tZXNzYWdlX2JvZHlfYXBw
ZW5kKG1lc3NhZ2UtPnJlc3BvbnNlX2JvZHksIFNPVVBfTUVNT1JZX1NUQVRJQywgVExTU3VjY2Vz
c0hUTUxTdHJpbmcsIHN0cmxlbihUTFNTdWNjZXNzSFRNTFN0cmluZykpOwotICAgICAgICBzb3Vw
X21lc3NhZ2VfYm9keV9jb21wbGV0ZShtZXNzYWdlLT5yZXNwb25zZV9ib2R5KTsKKyAgICAgICAg
c291cF9zZXJ2ZXJfbWVzc2FnZV9zZXRfc3RhdHVzKG1lc3NhZ2UsIFNPVVBfU1RBVFVTX09LLCBu
dWxscHRyKTsKKyAgICAgICAgc291cF9tZXNzYWdlX2JvZHlfYXBwZW5kKHJlc3BvbnNlQm9keSwg
U09VUF9NRU1PUllfU1RBVElDLCBUTFNTdWNjZXNzSFRNTFN0cmluZywgc3RybGVuKFRMU1N1Y2Nl
c3NIVE1MU3RyaW5nKSk7CisgICAgICAgIHNvdXBfbWVzc2FnZV9ib2R5X2NvbXBsZXRlKHJlc3Bv
bnNlQm9keSk7CiAgICAgfSBlbHNlIGlmIChnX3N0cl9lcXVhbChwYXRoLCAiL3JlZGlyZWN0Iikp
IHsKLSAgICAgICAgc291cF9tZXNzYWdlX3NldF9zdGF0dXMobWVzc2FnZSwgU09VUF9TVEFUVVNf
TU9WRURfUEVSTUFORU5UTFkpOwotICAgICAgICBzb3VwX21lc3NhZ2VfaGVhZGVyc19hcHBlbmQo
bWVzc2FnZS0+cmVzcG9uc2VfaGVhZGVycywgIkxvY2F0aW9uIiwga0h0dHBTZXJ2ZXItPmdldFVS
SUZvclBhdGgoIi90ZXN0LWltYWdlIikuZGF0YSgpKTsKKyAgICAgICAgc291cF9zZXJ2ZXJfbWVz
c2FnZV9zZXRfc3RhdHVzKG1lc3NhZ2UsIFNPVVBfU1RBVFVTX01PVkVEX1BFUk1BTkVOVExZLCBu
dWxscHRyKTsKKyAgICAgICAgc291cF9tZXNzYWdlX2hlYWRlcnNfYXBwZW5kKHNvdXBfc2VydmVy
X21lc3NhZ2VfZ2V0X3Jlc3BvbnNlX2hlYWRlcnMobWVzc2FnZSksICJMb2NhdGlvbiIsIGtIdHRw
U2VydmVyLT5nZXRVUklGb3JQYXRoKCIvdGVzdC1pbWFnZSIpLmRhdGEoKSk7CiAgICAgfSBlbHNl
IGlmIChnX3N0cl9lcXVhbChwYXRoLCAiL2F1dGgiKSkgewotICAgICAgICBzb3VwX21lc3NhZ2Vf
c2V0X3N0YXR1cyhtZXNzYWdlLCBTT1VQX1NUQVRVU19VTkFVVEhPUklaRUQpOwotICAgICAgICBz
b3VwX21lc3NhZ2VfaGVhZGVyc19hcHBlbmQobWVzc2FnZS0+cmVzcG9uc2VfaGVhZGVycywgIldX
Vy1BdXRoZW50aWNhdGUiLCAiQmFzaWMgcmVhbG09XCJIVFRQUyBhdXRoXCIiKTsKKyAgICAgICAg
c291cF9zZXJ2ZXJfbWVzc2FnZV9zZXRfc3RhdHVzKG1lc3NhZ2UsIFNPVVBfU1RBVFVTX1VOQVVU
SE9SSVpFRCwgbnVsbHB0cik7CisgICAgICAgIHNvdXBfbWVzc2FnZV9oZWFkZXJzX2FwcGVuZChz
b3VwX3NlcnZlcl9tZXNzYWdlX2dldF9yZXNwb25zZV9oZWFkZXJzKG1lc3NhZ2UpLCAiV1dXLUF1
dGhlbnRpY2F0ZSIsICJCYXNpYyByZWFsbT1cIkhUVFBTIGF1dGhcIiIpOwogICAgIH0gZWxzZSBp
ZiAoZ19zdHJfZXF1YWwocGF0aCwgIi9zdHlsZS5jc3MiKSkgewotICAgICAgICBzb3VwX21lc3Nh
Z2Vfc2V0X3N0YXR1cyhtZXNzYWdlLCBTT1VQX1NUQVRVU19PSyk7CisgICAgICAgIHNvdXBfc2Vy
dmVyX21lc3NhZ2Vfc2V0X3N0YXR1cyhtZXNzYWdlLCBTT1VQX1NUQVRVU19PSywgbnVsbHB0cik7
CiAgICAgICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzdHlsZUNTUyA9ICJib2R5IHsgY29sb3I6IGJs
YWNrOyB9IjsKLSAgICAgICAgc291cF9tZXNzYWdlX2JvZHlfYXBwZW5kKG1lc3NhZ2UtPnJlc3Bv
bnNlX2JvZHksIFNPVVBfTUVNT1JZX1NUQVRJQywgc3R5bGVDU1MsIHN0cmxlbihzdHlsZUNTUykp
OworICAgICAgICBzb3VwX21lc3NhZ2VfYm9keV9hcHBlbmQocmVzcG9uc2VCb2R5LCBTT1VQX01F
TU9SWV9TVEFUSUMsIHN0eWxlQ1NTLCBzdHJsZW4oc3R5bGVDU1MpKTsKICAgICB9IGVsc2UKLSAg
ICAgICAgc291cF9tZXNzYWdlX3NldF9zdGF0dXMobWVzc2FnZSwgU09VUF9TVEFUVVNfTk9UX0ZP
VU5EKTsKKyAgICAgICAgc291cF9zZXJ2ZXJfbWVzc2FnZV9zZXRfc3RhdHVzKG1lc3NhZ2UsIFNP
VVBfU1RBVFVTX05PVF9GT1VORCwgbnVsbHB0cik7CiB9CiAKKyNpZiBVU0UoU09VUDIpCiBzdGF0
aWMgdm9pZCBodHRwU2VydmVyQ2FsbGJhY2soU291cFNlcnZlciogc2VydmVyLCBTb3VwTWVzc2Fn
ZSogbWVzc2FnZSwgY29uc3QgY2hhciogcGF0aCwgR0hhc2hUYWJsZSosIFNvdXBDbGllbnRDb250
ZXh0KiwgZ3BvaW50ZXIpCisjZWxzZQorc3RhdGljIHZvaWQgaHR0cFNlcnZlckNhbGxiYWNrKFNv
dXBTZXJ2ZXIqIHNlcnZlciwgU291cFNlcnZlck1lc3NhZ2UqIG1lc3NhZ2UsIGNvbnN0IGNoYXIq
IHBhdGgsIEdIYXNoVGFibGUqLCBncG9pbnRlcikKKyNlbmRpZgogewotICAgIGlmIChtZXNzYWdl
LT5tZXRob2QgIT0gU09VUF9NRVRIT0RfR0VUKSB7Ci0gICAgICAgIHNvdXBfbWVzc2FnZV9zZXRf
c3RhdHVzKG1lc3NhZ2UsIFNPVVBfU1RBVFVTX05PVF9JTVBMRU1FTlRFRCk7CisgICAgaWYgKHNv
dXBfc2VydmVyX21lc3NhZ2VfZ2V0X21ldGhvZChtZXNzYWdlKSAhPSBTT1VQX01FVEhPRF9HRVQp
IHsKKyAgICAgICAgc291cF9zZXJ2ZXJfbWVzc2FnZV9zZXRfc3RhdHVzKG1lc3NhZ2UsIFNPVVBf
U1RBVFVTX05PVF9JTVBMRU1FTlRFRCwgbnVsbHB0cik7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKKyAgICBhdXRvKiByZXNwb25zZUJvZHkgPSBzb3VwX3NlcnZlcl9tZXNzYWdlX2dldF9yZXNw
b25zZV9ib2R5KG1lc3NhZ2UpOworCiAgICAgaWYgKGdfc3RyX2VxdWFsKHBhdGgsICIvdGVzdC1z
Y3JpcHQiKSkgewogICAgICAgICBHVW5pcXVlUHRyPGNoYXI+IHBhdGhUb0ZpbGUoZ19idWlsZF9m
aWxlbmFtZShUZXN0OjpnZXRSZXNvdXJjZXNEaXIoKS5kYXRhKCksICJsaW5rLXRpdGxlLmpzIiwg
bnVsbHB0cikpOwogICAgICAgICBjaGFyKiBjb250ZW50czsKICAgICAgICAgZ3NpemUgbGVuZ3Ro
OwogICAgICAgICBnX2ZpbGVfZ2V0X2NvbnRlbnRzKHBhdGhUb0ZpbGUuZ2V0KCksICZjb250ZW50
cywgJmxlbmd0aCwgMCk7CiAKLSAgICAgICAgc291cF9tZXNzYWdlX2JvZHlfYXBwZW5kKG1lc3Nh
Z2UtPnJlc3BvbnNlX2JvZHksIFNPVVBfTUVNT1JZX1RBS0UsIGNvbnRlbnRzLCBsZW5ndGgpOwot
ICAgICAgICBzb3VwX21lc3NhZ2Vfc2V0X3N0YXR1cyhtZXNzYWdlLCBTT1VQX1NUQVRVU19PSyk7
Ci0gICAgICAgIHNvdXBfbWVzc2FnZV9ib2R5X2NvbXBsZXRlKG1lc3NhZ2UtPnJlc3BvbnNlX2Jv
ZHkpOworICAgICAgICBzb3VwX21lc3NhZ2VfYm9keV9hcHBlbmQocmVzcG9uc2VCb2R5LCBTT1VQ
X01FTU9SWV9UQUtFLCBjb250ZW50cywgbGVuZ3RoKTsKKyAgICAgICAgc291cF9tZXNzYWdlX2Jv
ZHlfY29tcGxldGUocmVzcG9uc2VCb2R5KTsKKyAgICAgICAgc291cF9zZXJ2ZXJfbWVzc2FnZV9z
ZXRfc3RhdHVzKG1lc3NhZ2UsIFNPVVBfU1RBVFVTX09LLCBudWxscHRyKTsKICAgICB9IGVsc2Ug
aWYgKGdfc3RyX2VxdWFsKHBhdGgsICIvdGVzdC1pbWFnZSIpKSB7CiAgICAgICAgIEdVbmlxdWVQ
dHI8Y2hhcj4gcGF0aFRvRmlsZShnX2J1aWxkX2ZpbGVuYW1lKFRlc3Q6OmdldFJlc291cmNlc0Rp
cigpLmRhdGEoKSwgImJsYW5rLmljbyIsIG51bGxwdHIpKTsKICAgICAgICAgY2hhciogY29udGVu
dHM7CiAgICAgICAgIGdzaXplIGxlbmd0aDsKICAgICAgICAgZ19maWxlX2dldF9jb250ZW50cyhw
YXRoVG9GaWxlLmdldCgpLCAmY29udGVudHMsICZsZW5ndGgsIDApOwogCi0gICAgICAgIHNvdXBf
bWVzc2FnZV9ib2R5X2FwcGVuZChtZXNzYWdlLT5yZXNwb25zZV9ib2R5LCBTT1VQX01FTU9SWV9U
QUtFLCBjb250ZW50cywgbGVuZ3RoKTsKLSAgICAgICAgc291cF9tZXNzYWdlX3NldF9zdGF0dXMo
bWVzc2FnZSwgU09VUF9TVEFUVVNfT0spOwotICAgICAgICBzb3VwX21lc3NhZ2VfYm9keV9jb21w
bGV0ZShtZXNzYWdlLT5yZXNwb25zZV9ib2R5KTsKKyAgICAgICAgc291cF9tZXNzYWdlX2JvZHlf
YXBwZW5kKHJlc3BvbnNlQm9keSwgU09VUF9NRU1PUllfVEFLRSwgY29udGVudHMsIGxlbmd0aCk7
CisgICAgICAgIHNvdXBfbWVzc2FnZV9ib2R5X2NvbXBsZXRlKHJlc3BvbnNlQm9keSk7CisgICAg
ICAgIHNvdXBfc2VydmVyX21lc3NhZ2Vfc2V0X3N0YXR1cyhtZXNzYWdlLCBTT1VQX1NUQVRVU19P
SywgbnVsbHB0cik7CiAgICAgfSBlbHNlIGlmIChnX3N0cl9lcXVhbChwYXRoLCAiLyIpKSB7Ci0g
ICAgICAgIHNvdXBfbWVzc2FnZV9zZXRfc3RhdHVzKG1lc3NhZ2UsIFNPVVBfU1RBVFVTX09LKTsK
KyAgICAgICAgc291cF9zZXJ2ZXJfbWVzc2FnZV9zZXRfc3RhdHVzKG1lc3NhZ2UsIFNPVVBfU1RB
VFVTX09LLCBudWxscHRyKTsKICAgICAgICAgY2hhciogcmVzcG9uc2VIVE1MID0gZ19zdHJkdXBf
cHJpbnRmKCI8aHRtbD48aGVhZD48bGluayByZWw9J3N0eWxlc2hlZXQnIGhyZWY9JyVzJyB0eXBl
PSd0ZXh0L2Nzcyc+PC9oZWFkPjxib2R5PlNTTCBzdWJyZXNvdXJjZSB0ZXN0PC9ib2R5PjwvaHRt
bD4iLAogICAgICAgICAgICAga0h0dHBzU2VydmVyLT5nZXRVUklGb3JQYXRoKCIvc3R5bGUuY3Nz
IikuZGF0YSgpKTsKLSAgICAgICAgc291cF9tZXNzYWdlX2JvZHlfYXBwZW5kKG1lc3NhZ2UtPnJl
c3BvbnNlX2JvZHksIFNPVVBfTUVNT1JZX1RBS0UsIHJlc3BvbnNlSFRNTCwgc3RybGVuKHJlc3Bv
bnNlSFRNTCkpOwotICAgICAgICBzb3VwX21lc3NhZ2VfYm9keV9jb21wbGV0ZShtZXNzYWdlLT5y
ZXNwb25zZV9ib2R5KTsKKyAgICAgICAgc291cF9tZXNzYWdlX2JvZHlfYXBwZW5kKHJlc3BvbnNl
Qm9keSwgU09VUF9NRU1PUllfVEFLRSwgcmVzcG9uc2VIVE1MLCBzdHJsZW4ocmVzcG9uc2VIVE1M
KSk7CisgICAgICAgIHNvdXBfbWVzc2FnZV9ib2R5X2NvbXBsZXRlKHJlc3BvbnNlQm9keSk7CiAg
ICAgfSBlbHNlCi0gICAgICAgIHNvdXBfbWVzc2FnZV9zZXRfc3RhdHVzKG1lc3NhZ2UsIFNPVVBf
U1RBVFVTX05PVF9GT1VORCk7CisgICAgICAgIHNvdXBfc2VydmVyX21lc3NhZ2Vfc2V0X3N0YXR1
cyhtZXNzYWdlLCBTT1VQX1NUQVRVU19OT1RfRk9VTkQsIG51bGxwdHIpOwogfQogCiB2b2lkIGJl
Zm9yZUFsbCgpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdM
aWIvVGVzdFdlYktpdEZhdmljb25EYXRhYmFzZS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdEZhdmljb25EYXRhYmFzZS5jcHAKaW5kZXggOTJiNjVk
MDExMDQyLi43YmJiNGUwY2NiMGIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0RmF2aWNvbkRhdGFiYXNlLmNwcAorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdEZhdmljb25EYXRhYmFzZS5j
cHAKQEAgLTIzLDYgKzIzLDcgQEAKIAogI2luY2x1ZGUgIldlYktpdFRlc3RTZXJ2ZXIuaCIKICNp
bmNsdWRlICJXZWJWaWV3VGVzdC5oIgorI2luY2x1ZGUgPFdlYkNvcmUvU291cFZlcnNpb25pbmcu
aD4KICNpbmNsdWRlIDxnbGliL2dzdGRpby5oPgogI2luY2x1ZGUgPGxpYnNvdXAvc291cC5oPgog
I2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4KQEAgLTE0NCwxNyArMTQ1LDIyIEBAIHB1
YmxpYzoKICAgICBib29sIG1fd2FpdGluZ0ZvckZhdmljb25VUkkgeyBmYWxzZSB9OwogfTsKIAot
c3RhdGljIHZvaWQKLXNlcnZlckNhbGxiYWNrKFNvdXBTZXJ2ZXIqIHNlcnZlciwgU291cE1lc3Nh
Z2UqIG1lc3NhZ2UsIGNvbnN0IGNoYXIqIHBhdGgsIEdIYXNoVGFibGUqIHF1ZXJ5LCBTb3VwQ2xp
ZW50Q29udGV4dCogY29udGV4dCwgdm9pZCogZGF0YSkKKyNpZiBVU0UoU09VUDIpCitzdGF0aWMg
dm9pZCBzZXJ2ZXJDYWxsYmFjayhTb3VwU2VydmVyKiwgU291cE1lc3NhZ2UqIG1lc3NhZ2UsIGNv
bnN0IGNoYXIqIHBhdGgsIEdIYXNoVGFibGUqLCBTb3VwQ2xpZW50Q29udGV4dCosIGdwb2ludGVy
KQorI2Vsc2UKK3N0YXRpYyB2b2lkIHNlcnZlckNhbGxiYWNrKFNvdXBTZXJ2ZXIqLCBTb3VwU2Vy
dmVyTWVzc2FnZSogbWVzc2FnZSwgY29uc3QgY2hhciogcGF0aCwgR0hhc2hUYWJsZSogcXVlcnks
IGdwb2ludGVyKQorI2VuZGlmCiB7Ci0gICAgaWYgKG1lc3NhZ2UtPm1ldGhvZCAhPSBTT1VQX01F
VEhPRF9HRVQpIHsKLSAgICAgICAgc291cF9tZXNzYWdlX3NldF9zdGF0dXMobWVzc2FnZSwgU09V
UF9TVEFUVVNfTk9UX0lNUExFTUVOVEVEKTsKKyAgICBpZiAoc291cF9zZXJ2ZXJfbWVzc2FnZV9n
ZXRfbWV0aG9kKG1lc3NhZ2UpICE9IFNPVVBfTUVUSE9EX0dFVCkgeworICAgICAgICBzb3VwX3Nl
cnZlcl9tZXNzYWdlX3NldF9zdGF0dXMobWVzc2FnZSwgU09VUF9TVEFUVVNfTk9UX0lNUExFTUVO
VEVELCBudWxscHRyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIGF1dG8qIHJlc3Bv
bnNlQm9keSA9IHNvdXBfc2VydmVyX21lc3NhZ2VfZ2V0X3Jlc3BvbnNlX2JvZHkobWVzc2FnZSk7
CisKICAgICBpZiAoZ19zdHJfZXF1YWwocGF0aCwgIi9mYXZpY29uLmljbyIpKSB7Ci0gICAgICAg
IHNvdXBfbWVzc2FnZV9zZXRfc3RhdHVzKG1lc3NhZ2UsIFNPVVBfU1RBVFVTX05PVF9GT1VORCk7
Ci0gICAgICAgIHNvdXBfbWVzc2FnZV9ib2R5X2NvbXBsZXRlKG1lc3NhZ2UtPnJlc3BvbnNlX2Jv
ZHkpOworICAgICAgICBzb3VwX3NlcnZlcl9tZXNzYWdlX3NldF9zdGF0dXMobWVzc2FnZSwgU09V
UF9TVEFUVVNfTk9UX0ZPVU5ELCBudWxscHRyKTsKKyAgICAgICAgc291cF9tZXNzYWdlX2JvZHlf
Y29tcGxldGUocmVzcG9uc2VCb2R5KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTYz
LDE3ICsxNjksMTcgQEAgc2VydmVyQ2FsbGJhY2soU291cFNlcnZlciogc2VydmVyLCBTb3VwTWVz
c2FnZSogbWVzc2FnZSwgY29uc3QgY2hhciogcGF0aCwgR0hhc2gKICAgICBpZiAoZ19zdHJfZXF1
YWwocGF0aCwgIi9pY29uL2Zhdmljb24uaWNvIikpIHsKICAgICAgICAgR1VuaXF1ZVB0cjxjaGFy
PiBwYXRoVG9GYXZpY29uKGdfYnVpbGRfZmlsZW5hbWUoVGVzdDo6Z2V0UmVzb3VyY2VzRGlyKCku
ZGF0YSgpLCAiYmxhbmsuaWNvIiwgbnVsbHB0cikpOwogICAgICAgICBnX2ZpbGVfZ2V0X2NvbnRl
bnRzKHBhdGhUb0Zhdmljb24uZ2V0KCksICZjb250ZW50cywgJmxlbmd0aCwgMCk7Ci0gICAgICAg
IHNvdXBfbWVzc2FnZV9ib2R5X2FwcGVuZChtZXNzYWdlLT5yZXNwb25zZV9ib2R5LCBTT1VQX01F
TU9SWV9UQUtFLCBjb250ZW50cywgbGVuZ3RoKTsKKyAgICAgICAgc291cF9tZXNzYWdlX2JvZHlf
YXBwZW5kKHJlc3BvbnNlQm9keSwgU09VUF9NRU1PUllfVEFLRSwgY29udGVudHMsIGxlbmd0aCk7
CiAgICAgfSBlbHNlIGlmIChnX3N0cl9lcXVhbChwYXRoLCAiL25vZmF2aWNvbiIpKSB7CiAgICAg
ICAgIHN0YXRpYyBjb25zdCBjaGFyKiBub0Zhdmljb25IVE1MID0gIjxodG1sPjxoZWFkPjxib2R5
PnRlc3Q8L2JvZHk+PC9odG1sPiI7Ci0gICAgICAgIHNvdXBfbWVzc2FnZV9ib2R5X2FwcGVuZCht
ZXNzYWdlLT5yZXNwb25zZV9ib2R5LCBTT1VQX01FTU9SWV9TVEFUSUMsIG5vRmF2aWNvbkhUTUws
IHN0cmxlbihub0Zhdmljb25IVE1MKSk7CisgICAgICAgIHNvdXBfbWVzc2FnZV9ib2R5X2FwcGVu
ZChyZXNwb25zZUJvZHksIFNPVVBfTUVNT1JZX1NUQVRJQywgbm9GYXZpY29uSFRNTCwgc3RybGVu
KG5vRmF2aWNvbkhUTUwpKTsKICAgICB9IGVsc2UgewogICAgICAgICBzdGF0aWMgY29uc3QgY2hh
ciogY29udGVudHNIVE1MID0gIjxodG1sPjxoZWFkPjxsaW5rIHJlbD0naWNvbicgaHJlZj0nL2lj
b24vZmF2aWNvbi5pY28nIHR5cGU9J2ltYWdlL3gtaWNvOyBjaGFyc2V0PWJpbmFyeSc+PC9oZWFk
Pjxib2R5PnRlc3Q8L2JvZHk+PC9odG1sPiI7Ci0gICAgICAgIHNvdXBfbWVzc2FnZV9ib2R5X2Fw
cGVuZChtZXNzYWdlLT5yZXNwb25zZV9ib2R5LCBTT1VQX01FTU9SWV9TVEFUSUMsIGNvbnRlbnRz
SFRNTCwgc3RybGVuKGNvbnRlbnRzSFRNTCkpOworICAgICAgICBzb3VwX21lc3NhZ2VfYm9keV9h
cHBlbmQocmVzcG9uc2VCb2R5LCBTT1VQX01FTU9SWV9TVEFUSUMsIGNvbnRlbnRzSFRNTCwgc3Ry
bGVuKGNvbnRlbnRzSFRNTCkpOwogICAgIH0KIAotICAgIHNvdXBfbWVzc2FnZV9zZXRfc3RhdHVz
KG1lc3NhZ2UsIFNPVVBfU1RBVFVTX09LKTsKLSAgICBzb3VwX21lc3NhZ2VfYm9keV9jb21wbGV0
ZShtZXNzYWdlLT5yZXNwb25zZV9ib2R5KTsKKyAgICBzb3VwX3NlcnZlcl9tZXNzYWdlX3NldF9z
dGF0dXMobWVzc2FnZSwgU09VUF9TVEFUVVNfT0ssIG51bGxwdHIpOworICAgIHNvdXBfbWVzc2Fn
ZV9ib2R5X2NvbXBsZXRlKHJlc3BvbnNlQm9keSk7CiB9CiAKIHN0YXRpYyB2b2lkIHRlc3RGYXZp
Y29uRGF0YWJhc2VJbml0aWFsaXphdGlvbihGYXZpY29uRGF0YWJhc2VUZXN0KiB0ZXN0LCBnY29u
c3Rwb2ludGVyKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRH
TGliL1Rlc3RXZWJLaXRQb2xpY3lDbGllbnQuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRQb2xpY3lDbGllbnQuY3BwCmluZGV4IDBkZjYyZGFkNjI1
Mi4uODA0YTRmMjEyZTRlIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdEdMaWIvVGVzdFdlYktpdFBvbGljeUNsaWVudC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRQb2xpY3lDbGllbnQuY3BwCkBAIC0yMiw2
ICsyMiw3IEBACiAjaW5jbHVkZSAiTG9hZFRyYWNraW5nVGVzdC5oIgogI2luY2x1ZGUgIldlYktp
dFRlc3RTZXJ2ZXIuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJzaXRlUG9saWNpZXMuaCIKKyNpbmNs
dWRlIDxXZWJDb3JlL1NvdXBWZXJzaW9uaW5nLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0
ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIApAQCAtMjkwLDIzICsyOTEsMjgg
QEAgc3RhdGljIHZvaWQgdGVzdE5ld1dpbmRvd1BvbGljeShQb2xpY3lDbGllbnRUZXN0KiB0ZXN0
LCBnY29uc3Rwb2ludGVyKQogICAgIGdfYXNzZXJ0X2ZhbHNlKGRhdGEudHJpZWRUb09wZW5XaW5k
b3cpOwogfQogCisjaWYgVVNFKFNPVVAyKQogc3RhdGljIHZvaWQgc2VydmVyQ2FsbGJhY2soU291
cFNlcnZlciogc2VydmVyLCBTb3VwTWVzc2FnZSogbWVzc2FnZSwgY29uc3QgY2hhciogcGF0aCwg
R0hhc2hUYWJsZSosIFNvdXBDbGllbnRDb250ZXh0KiwgZ3BvaW50ZXIpCisjZWxzZQorc3RhdGlj
IHZvaWQgc2VydmVyQ2FsbGJhY2soU291cFNlcnZlciogc2VydmVyLCBTb3VwU2VydmVyTWVzc2Fn
ZSogbWVzc2FnZSwgY29uc3QgY2hhciogcGF0aCwgR0hhc2hUYWJsZSosIGdwb2ludGVyKQorI2Vu
ZGlmCiB7Ci0gICAgaWYgKG1lc3NhZ2UtPm1ldGhvZCAhPSBTT1VQX01FVEhPRF9HRVQpIHsKLSAg
ICAgICAgc291cF9tZXNzYWdlX3NldF9zdGF0dXMobWVzc2FnZSwgU09VUF9TVEFUVVNfTk9UX0lN
UExFTUVOVEVEKTsKKyAgICBpZiAoc291cF9zZXJ2ZXJfbWVzc2FnZV9nZXRfbWV0aG9kKG1lc3Nh
Z2UpICE9IFNPVVBfTUVUSE9EX0dFVCkgeworICAgICAgICBzb3VwX3NlcnZlcl9tZXNzYWdlX3Nl
dF9zdGF0dXMobWVzc2FnZSwgU09VUF9TVEFUVVNfTk9UX0lNUExFTUVOVEVELCBudWxscHRyKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmIChnX3N0cl9lcXVhbChwYXRoLCAiLyIp
KSB7CiAgICAgICAgIHN0YXRpYyBjb25zdCBjaGFyKiByZXNwb25zZVN0cmluZyA9ICI8aHRtbD48
Ym9keT5UZXN0aW5nITwvYm9keT48L2h0bWw+IjsKLSAgICAgICAgc291cF9tZXNzYWdlX3NldF9z
dGF0dXMobWVzc2FnZSwgU09VUF9TVEFUVVNfT0spOwotICAgICAgICBzb3VwX21lc3NhZ2VfYm9k
eV9hcHBlbmQobWVzc2FnZS0+cmVzcG9uc2VfYm9keSwgU09VUF9NRU1PUllfU1RBVElDLCByZXNw
b25zZVN0cmluZywgc3RybGVuKHJlc3BvbnNlU3RyaW5nKSk7Ci0gICAgICAgIHNvdXBfbWVzc2Fn
ZV9ib2R5X2NvbXBsZXRlKG1lc3NhZ2UtPnJlc3BvbnNlX2JvZHkpOworICAgICAgICBzb3VwX3Nl
cnZlcl9tZXNzYWdlX3NldF9zdGF0dXMobWVzc2FnZSwgU09VUF9TVEFUVVNfT0ssIG51bGxwdHIp
OworICAgICAgICBhdXRvKiByZXNwb25zZUJvZHkgPSBzb3VwX3NlcnZlcl9tZXNzYWdlX2dldF9y
ZXNwb25zZV9ib2R5KG1lc3NhZ2UpOworICAgICAgICBzb3VwX21lc3NhZ2VfYm9keV9hcHBlbmQo
cmVzcG9uc2VCb2R5LCBTT1VQX01FTU9SWV9TVEFUSUMsIHJlc3BvbnNlU3RyaW5nLCBzdHJsZW4o
cmVzcG9uc2VTdHJpbmcpKTsKKyAgICAgICAgc291cF9tZXNzYWdlX2JvZHlfY29tcGxldGUocmVz
cG9uc2VCb2R5KTsKICAgICB9IGVsc2UgaWYgKGdfc3RyX2VxdWFsKHBhdGgsICIvcmVkaXJlY3Qi
KSkgewotICAgICAgICBzb3VwX21lc3NhZ2Vfc2V0X3N0YXR1cyhtZXNzYWdlLCBTT1VQX1NUQVRV
U19NT1ZFRF9QRVJNQU5FTlRMWSk7Ci0gICAgICAgIHNvdXBfbWVzc2FnZV9oZWFkZXJzX2FwcGVu
ZChtZXNzYWdlLT5yZXNwb25zZV9oZWFkZXJzLCAiTG9jYXRpb24iLCAiLyIpOworICAgICAgICBz
b3VwX3NlcnZlcl9tZXNzYWdlX3NldF9zdGF0dXMobWVzc2FnZSwgU09VUF9TVEFUVVNfTU9WRURf
UEVSTUFORU5UTFksIG51bGxwdHIpOworICAgICAgICBzb3VwX21lc3NhZ2VfaGVhZGVyc19hcHBl
bmQoc291cF9zZXJ2ZXJfbWVzc2FnZV9nZXRfcmVzcG9uc2VfaGVhZGVycyhtZXNzYWdlKSwgIkxv
Y2F0aW9uIiwgIi8iKTsKICAgICB9IGVsc2UKLSAgICAgICAgc291cF9tZXNzYWdlX3NldF9zdGF0
dXMobWVzc2FnZSwgU09VUF9TVEFUVVNfTk9UX0ZPVU5EKTsKKyAgICAgICAgc291cF9zZXJ2ZXJf
bWVzc2FnZV9zZXRfc3RhdHVzKG1lc3NhZ2UsIFNPVVBfU1RBVFVTX05PVF9GT1VORCwgbnVsbHB0
cik7CiB9CiAKIHN0YXRpYyB2b2lkIHRlc3RBdXRvcGxheVBvbGljeShQb2xpY3lDbGllbnRUZXN0
KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRTZXR0aW5ncy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdFNldHRpbmdzLmNwcAppbmRleCA4MTU2MTJk
YzgwNjkuLjljOTYxNzIzZWRmNyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRTZXR0aW5ncy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRTZXR0aW5ncy5jcHAKQEAgLTMzLDYgKzMz
LDcgQEAKICNpbmNsdWRlICJUZXN0TWFpbi5oIgogI2luY2x1ZGUgIldlYktpdFRlc3RTZXJ2ZXIu
aCIKICNpbmNsdWRlICJXZWJWaWV3VGVzdC5oIgorI2luY2x1ZGUgPFdlYkNvcmUvU291cFZlcnNp
b25pbmcuaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CiAKIHN0YXRpYyBXZWJLaXRU
ZXN0U2VydmVyKiBnU2VydmVyOwpAQCAtNDYyLDIwICs0NjMsMjUgQEAgc3RhdGljIHZvaWQgdGVz
dFdlYktpdFNldHRpbmdzSmF2YVNjcmlwdE1hcmt1cChXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0
cG9pbnRlcikKICAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9qYXZhc2NyaXB0X21hcmt1
cCh3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NldHRpbmdzKHRlc3QtPm1fd2ViVmlldyksIFRSVUUpOwog
fQogCisjaWYgVVNFKFNPVVAyKQogc3RhdGljIHZvaWQgc2VydmVyQ2FsbGJhY2soU291cFNlcnZl
ciogc2VydmVyLCBTb3VwTWVzc2FnZSogbWVzc2FnZSwgY29uc3QgY2hhciogcGF0aCwgR0hhc2hU
YWJsZSosIFNvdXBDbGllbnRDb250ZXh0KiwgZ3BvaW50ZXIpCisjZWxzZQorc3RhdGljIHZvaWQg
c2VydmVyQ2FsbGJhY2soU291cFNlcnZlciogc2VydmVyLCBTb3VwU2VydmVyTWVzc2FnZSogbWVz
c2FnZSwgY29uc3QgY2hhciogcGF0aCwgR0hhc2hUYWJsZSosIGdwb2ludGVyKQorI2VuZGlmCiB7
Ci0gICAgaWYgKG1lc3NhZ2UtPm1ldGhvZCAhPSBTT1VQX01FVEhPRF9HRVQpIHsKLSAgICAgICAg
c291cF9tZXNzYWdlX3NldF9zdGF0dXMobWVzc2FnZSwgU09VUF9TVEFUVVNfTk9UX0lNUExFTUVO
VEVEKTsKKyAgICBpZiAoc291cF9zZXJ2ZXJfbWVzc2FnZV9nZXRfbWV0aG9kKG1lc3NhZ2UpICE9
IFNPVVBfTUVUSE9EX0dFVCkgeworICAgICAgICBzb3VwX3NlcnZlcl9tZXNzYWdlX3NldF9zdGF0
dXMobWVzc2FnZSwgU09VUF9TVEFUVVNfTk9UX0lNUExFTUVOVEVELCBudWxscHRyKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmIChnX3N0cl9lcXVhbChwYXRoLCAiLyIpKSB7Ci0g
ICAgICAgIGNvbnN0IGNoYXIqIHVzZXJBZ2VudCA9IHNvdXBfbWVzc2FnZV9oZWFkZXJzX2dldF9v
bmUobWVzc2FnZS0+cmVxdWVzdF9oZWFkZXJzLCAiVXNlci1BZ2VudCIpOwotICAgICAgICBzb3Vw
X21lc3NhZ2Vfc2V0X3N0YXR1cyhtZXNzYWdlLCBTT1VQX1NUQVRVU19PSyk7Ci0gICAgICAgIHNv
dXBfbWVzc2FnZV9ib2R5X2FwcGVuZChtZXNzYWdlLT5yZXNwb25zZV9ib2R5LCBTT1VQX01FTU9S
WV9DT1BZLCB1c2VyQWdlbnQsIHN0cmxlbih1c2VyQWdlbnQpKTsKLSAgICAgICAgc291cF9tZXNz
YWdlX2JvZHlfY29tcGxldGUobWVzc2FnZS0+cmVzcG9uc2VfYm9keSk7CisgICAgICAgIGNvbnN0
IGNoYXIqIHVzZXJBZ2VudCA9IHNvdXBfbWVzc2FnZV9oZWFkZXJzX2dldF9vbmUoc291cF9zZXJ2
ZXJfbWVzc2FnZV9nZXRfcmVxdWVzdF9oZWFkZXJzKG1lc3NhZ2UpLCAiVXNlci1BZ2VudCIpOwor
ICAgICAgICBhdXRvKiByZXNwb25zZUJvZHkgPSBzb3VwX3NlcnZlcl9tZXNzYWdlX2dldF9yZXNw
b25zZV9ib2R5KG1lc3NhZ2UpOworICAgICAgICBzb3VwX21lc3NhZ2VfYm9keV9hcHBlbmQocmVz
cG9uc2VCb2R5LCBTT1VQX01FTU9SWV9DT1BZLCB1c2VyQWdlbnQsIHN0cmxlbih1c2VyQWdlbnQp
KTsKKyAgICAgICAgc291cF9tZXNzYWdlX2JvZHlfY29tcGxldGUocmVzcG9uc2VCb2R5KTsKKyAg
ICAgICAgc291cF9zZXJ2ZXJfbWVzc2FnZV9zZXRfc3RhdHVzKG1lc3NhZ2UsIFNPVVBfU1RBVFVT
X09LLCBudWxscHRyKTsKICAgICB9IGVsc2UKLSAgICAgICAgc291cF9tZXNzYWdlX3NldF9zdGF0
dXMobWVzc2FnZSwgU09VUF9TVEFUVVNfTk9UX0ZPVU5EKTsKKyAgICAgICAgc291cF9zZXJ2ZXJf
bWVzc2FnZV9zZXRfc3RhdHVzKG1lc3NhZ2UsIFNPVVBfU1RBVFVTX05PVF9GT1VORCwgbnVsbHB0
cik7CiB9CiAKIHZvaWQgYmVmb3JlQWxsKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyLmNwcCBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0VXNlckNvbnRlbnRN
YW5hZ2VyLmNwcAppbmRleCAzZGZkMzJiYjFmMTYuLmUwNGM4MzhjODdjMiAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRVc2VyQ29udGVu
dE1hbmFnZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9U
ZXN0V2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyLmNwcApAQCAtMjEsNiArMjEsNyBAQAogCiAjaW5j
bHVkZSAiV2ViS2l0VGVzdFNlcnZlci5oIgogI2luY2x1ZGUgIldlYlZpZXdUZXN0LmgiCisjaW5j
bHVkZSA8V2ViQ29yZS9Tb3VwVmVyc2lvbmluZy5oPgogI2luY2x1ZGUgPGNzdGRhcmc+CiAjaW5j
bHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIu
aD4KQEAgLTUyMSwxNCArNTIyLDE5IEBAIHN0YXRpYyB2b2lkIHRlc3RVc2VyQ29udGVudE1hbmFn
ZXJDb250ZW50RmlsdGVyKFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyCiAgICAgd2Vi
a2l0X3VzZXJfY29udGVudF9maWx0ZXJfdW5yZWYoZmlsdGVyKTsKIH0KIAorI2lmIFVTRShTT1VQ
MikKIHN0YXRpYyB2b2lkIHNlcnZlckNhbGxiYWNrKFNvdXBTZXJ2ZXIqIHNlcnZlciwgU291cE1l
c3NhZ2UqIG1lc3NhZ2UsIGNvbnN0IGNoYXIqIHBhdGgsIEdIYXNoVGFibGUqLCBTb3VwQ2xpZW50
Q29udGV4dCosIGdwb2ludGVyKQorI2Vsc2UKK3N0YXRpYyB2b2lkIHNlcnZlckNhbGxiYWNrKFNv
dXBTZXJ2ZXIqIHNlcnZlciwgU291cFNlcnZlck1lc3NhZ2UqIG1lc3NhZ2UsIGNvbnN0IGNoYXIq
IHBhdGgsIEdIYXNoVGFibGUqLCBncG9pbnRlcikKKyNlbmRpZgogewotICAgIHNvdXBfbWVzc2Fn
ZV9zZXRfc3RhdHVzKG1lc3NhZ2UsIFNPVVBfU1RBVFVTX09LKTsKKyAgICBzb3VwX3NlcnZlcl9t
ZXNzYWdlX3NldF9zdGF0dXMobWVzc2FnZSwgU09VUF9TVEFUVVNfT0ssIG51bGxwdHIpOworICAg
IGF1dG8qIHJlc3BvbnNlQm9keSA9IHNvdXBfc2VydmVyX21lc3NhZ2VfZ2V0X3Jlc3BvbnNlX2Jv
ZHkobWVzc2FnZSk7CiAgICAgaWYgKCFnX3N0cmNtcDAocGF0aCwgIi9leHRyYS5jc3MiKSkKLSAg
ICAgICAgc291cF9tZXNzYWdlX2JvZHlfYXBwZW5kKG1lc3NhZ2UtPnJlc3BvbnNlX2JvZHksIFNP
VVBfTUVNT1JZX1NUQVRJQywga1Rlc3RDU1MsIHN0cmxlbihrVGVzdENTUykpOworICAgICAgICBz
b3VwX21lc3NhZ2VfYm9keV9hcHBlbmQocmVzcG9uc2VCb2R5LCBTT1VQX01FTU9SWV9TVEFUSUMs
IGtUZXN0Q1NTLCBzdHJsZW4oa1Rlc3RDU1MpKTsKICAgICBlbHNlCi0gICAgICAgIHNvdXBfbWVz
c2FnZV9ib2R5X2FwcGVuZChtZXNzYWdlLT5yZXNwb25zZV9ib2R5LCBTT1VQX01FTU9SWV9TVEFU
SUMsIGtUZXN0SFRNTCwgc3RybGVuKGtUZXN0SFRNTCkpOwotICAgIHNvdXBfbWVzc2FnZV9ib2R5
X2NvbXBsZXRlKG1lc3NhZ2UtPnJlc3BvbnNlX2JvZHkpOworICAgICAgICBzb3VwX21lc3NhZ2Vf
Ym9keV9hcHBlbmQocmVzcG9uc2VCb2R5LCBTT1VQX01FTU9SWV9TVEFUSUMsIGtUZXN0SFRNTCwg
c3RybGVuKGtUZXN0SFRNTCkpOworICAgIHNvdXBfbWVzc2FnZV9ib2R5X2NvbXBsZXRlKHJlc3Bv
bnNlQm9keSk7CiB9CiAKIHZvaWQgYmVmb3JlQWxsKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0V2ViQ29udGV4dC5jcHAgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdFdlYkNvbnRleHQuY3Bw
CmluZGV4IDNiNDU1MmI0ZjgwMi4uZjhiODE3MmM3MGQyIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdFdlYkNvbnRleHQuY3BwCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0V2ViQ29udGV4
dC5jcHAKQEAgLTIxLDYgKzIxLDcgQEAKIAogI2luY2x1ZGUgIkxvYWRUcmFja2luZ1Rlc3QuaCIK
ICNpbmNsdWRlICJXZWJLaXRUZXN0U2VydmVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Tb3VwVmVy
c2lvbmluZy5oPgogI2luY2x1ZGUgPGxpbWl0cy5oPgogI2luY2x1ZGUgPHN0ZGxpYi5oPgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC0zODYsMzAgKzM4Nyw0MCBAQCBzdGF0aWMgdm9pZCB0
ZXN0V2ViQ29udGV4dExhbmd1YWdlcyhXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikK
ICAgICBnX2Fzc2VydF9lcnJvcihlcnJvci5nZXQoKSwgV0VCS0lUX0pBVkFTQ1JJUFRfRVJST1Is
IFdFQktJVF9KQVZBU0NSSVBUX0VSUk9SX1NDUklQVF9GQUlMRUQpOwogfQogCisjaWYgVVNFKFNP
VVAyKQogc3RhdGljIHZvaWQgc2VydmVyQ2FsbGJhY2soU291cFNlcnZlciogc2VydmVyLCBTb3Vw
TWVzc2FnZSogbWVzc2FnZSwgY29uc3QgY2hhciogcGF0aCwgR0hhc2hUYWJsZSosIFNvdXBDbGll
bnRDb250ZXh0KiBjb250ZXh0LCBncG9pbnRlcikKKyNlbHNlCitzdGF0aWMgdm9pZCBzZXJ2ZXJD
YWxsYmFjayhTb3VwU2VydmVyKiBzZXJ2ZXIsIFNvdXBTZXJ2ZXJNZXNzYWdlKiBtZXNzYWdlLCBj
b25zdCBjaGFyKiBwYXRoLCBHSGFzaFRhYmxlKiwgZ3BvaW50ZXIpCisjZW5kaWYKIHsKLSAgICBp
ZiAobWVzc2FnZS0+bWV0aG9kICE9IFNPVVBfTUVUSE9EX0dFVCkgewotICAgICAgICBzb3VwX21l
c3NhZ2Vfc2V0X3N0YXR1cyhtZXNzYWdlLCBTT1VQX1NUQVRVU19OT1RfSU1QTEVNRU5URUQpOwor
ICAgIGlmIChzb3VwX3NlcnZlcl9tZXNzYWdlX2dldF9tZXRob2QobWVzc2FnZSkgIT0gU09VUF9N
RVRIT0RfR0VUKSB7CisgICAgICAgIHNvdXBfc2VydmVyX21lc3NhZ2Vfc2V0X3N0YXR1cyhtZXNz
YWdlLCBTT1VQX1NUQVRVU19OT1RfSU1QTEVNRU5URUQsIG51bGxwdHIpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCisgICAgYXV0byogcmVzcG9uc2VCb2R5ID0gc291cF9zZXJ2ZXJfbWVzc2Fn
ZV9nZXRfcmVzcG9uc2VfYm9keShtZXNzYWdlKTsKKwogICAgIGlmIChnX3N0cl9lcXVhbChwYXRo
LCAiLyIpKSB7Ci0gICAgICAgIGNvbnN0IGNoYXIqIGFjY2VwdExhbmd1YWdlID0gc291cF9tZXNz
YWdlX2hlYWRlcnNfZ2V0X29uZShtZXNzYWdlLT5yZXF1ZXN0X2hlYWRlcnMsICJBY2NlcHQtTGFu
Z3VhZ2UiKTsKLSAgICAgICAgc291cF9tZXNzYWdlX3NldF9zdGF0dXMobWVzc2FnZSwgU09VUF9T
VEFUVVNfT0spOwotICAgICAgICBzb3VwX21lc3NhZ2VfYm9keV9hcHBlbmQobWVzc2FnZS0+cmVz
cG9uc2VfYm9keSwgU09VUF9NRU1PUllfQ09QWSwgYWNjZXB0TGFuZ3VhZ2UsIHN0cmxlbihhY2Nl
cHRMYW5ndWFnZSkpOwotICAgICAgICBzb3VwX21lc3NhZ2VfYm9keV9jb21wbGV0ZShtZXNzYWdl
LT5yZXNwb25zZV9ib2R5KTsKKyAgICAgICAgY29uc3QgY2hhciogYWNjZXB0TGFuZ3VhZ2UgPSBz
b3VwX21lc3NhZ2VfaGVhZGVyc19nZXRfb25lKHNvdXBfc2VydmVyX21lc3NhZ2VfZ2V0X3JlcXVl
c3RfaGVhZGVycyhtZXNzYWdlKSwgIkFjY2VwdC1MYW5ndWFnZSIpOworICAgICAgICBzb3VwX3Nl
cnZlcl9tZXNzYWdlX3NldF9zdGF0dXMobWVzc2FnZSwgU09VUF9TVEFUVVNfT0ssIG51bGxwdHIp
OworICAgICAgICBzb3VwX21lc3NhZ2VfYm9keV9hcHBlbmQocmVzcG9uc2VCb2R5LCBTT1VQX01F
TU9SWV9DT1BZLCBhY2NlcHRMYW5ndWFnZSwgc3RybGVuKGFjY2VwdExhbmd1YWdlKSk7CisgICAg
ICAgIHNvdXBfbWVzc2FnZV9ib2R5X2NvbXBsZXRlKHJlc3BvbnNlQm9keSk7CiAgICAgfSBlbHNl
IGlmIChnX3N0cl9lcXVhbChwYXRoLCAiL2VtcHR5IikpIHsKICAgICAgICAgY29uc3QgY2hhciog
ZW1wdHlIVE1MID0gIjxodG1sPjxib2R5PjwvYm9keT48L2h0bWw+IjsKLSAgICAgICAgc291cF9t
ZXNzYWdlX2JvZHlfYXBwZW5kKG1lc3NhZ2UtPnJlc3BvbnNlX2JvZHksIFNPVVBfTUVNT1JZX1NU
QVRJQywgZW1wdHlIVE1MLCBzdHJsZW4oZW1wdHlIVE1MKSk7Ci0gICAgICAgIHNvdXBfbWVzc2Fn
ZV9ib2R5X2NvbXBsZXRlKG1lc3NhZ2UtPnJlc3BvbnNlX2JvZHkpOwotICAgICAgICBzb3VwX21l
c3NhZ2Vfc2V0X3N0YXR1cyhtZXNzYWdlLCBTT1VQX1NUQVRVU19PSyk7CisgICAgICAgIHNvdXBf
bWVzc2FnZV9ib2R5X2FwcGVuZChyZXNwb25zZUJvZHksIFNPVVBfTUVNT1JZX1NUQVRJQywgZW1w
dHlIVE1MLCBzdHJsZW4oZW1wdHlIVE1MKSk7CisgICAgICAgIHNvdXBfbWVzc2FnZV9ib2R5X2Nv
bXBsZXRlKHJlc3BvbnNlQm9keSk7CisgICAgICAgIHNvdXBfc2VydmVyX21lc3NhZ2Vfc2V0X3N0
YXR1cyhtZXNzYWdlLCBTT1VQX1NUQVRVU19PSywgbnVsbHB0cik7CiAgICAgfSBlbHNlIGlmIChn
X3N0cl9lcXVhbChwYXRoLCAiL2VjaG9Qb3J0IikpIHsKLSAgICAgICAgY2hhciogcG9ydCA9IGdf
c3RyZHVwX3ByaW50ZigiJXUiLCBnX2luZXRfc29ja2V0X2FkZHJlc3NfZ2V0X3BvcnQoR19JTkVU
X1NPQ0tFVF9BRERSRVNTKChzb3VwX2NsaWVudF9jb250ZXh0X2dldF9sb2NhbF9hZGRyZXNzKGNv
bnRleHQpKSkpKTsKLSAgICAgICAgc291cF9tZXNzYWdlX2JvZHlfYXBwZW5kKG1lc3NhZ2UtPnJl
c3BvbnNlX2JvZHksIFNPVVBfTUVNT1JZX1RBS0UsIHBvcnQsIHN0cmxlbihwb3J0KSk7Ci0gICAg
ICAgIHNvdXBfbWVzc2FnZV9ib2R5X2NvbXBsZXRlKG1lc3NhZ2UtPnJlc3BvbnNlX2JvZHkpOwot
ICAgICAgICBzb3VwX21lc3NhZ2Vfc2V0X3N0YXR1cyhtZXNzYWdlLCBTT1VQX1NUQVRVU19PSyk7
CisjaWYgVVNFKFNPVVAyKQorICAgICAgICBjaGFyKiBwb3J0ID0gZ19zdHJkdXBfcHJpbnRmKCIl
dSIsIGdfaW5ldF9zb2NrZXRfYWRkcmVzc19nZXRfcG9ydChHX0lORVRfU09DS0VUX0FERFJFU1Mo
c291cF9jbGllbnRfY29udGV4dF9nZXRfbG9jYWxfYWRkcmVzcyhjb250ZXh0KSkpKTsKKyNlbHNl
CisgICAgICAgIGNoYXIqIHBvcnQgPSBnX3N0cmR1cF9wcmludGYoIiV1IiwgZ19pbmV0X3NvY2tl
dF9hZGRyZXNzX2dldF9wb3J0KEdfSU5FVF9TT0NLRVRfQUREUkVTUyhzb3VwX3NlcnZlcl9tZXNz
YWdlX2dldF9sb2NhbF9hZGRyZXNzKG1lc3NhZ2UpKSkpOworI2VuZGlmCisgICAgICAgIHNvdXBf
bWVzc2FnZV9ib2R5X2FwcGVuZChyZXNwb25zZUJvZHksIFNPVVBfTUVNT1JZX1RBS0UsIHBvcnQs
IHN0cmxlbihwb3J0KSk7CisgICAgICAgIHNvdXBfbWVzc2FnZV9ib2R5X2NvbXBsZXRlKHJlc3Bv
bnNlQm9keSk7CisgICAgICAgIHNvdXBfc2VydmVyX21lc3NhZ2Vfc2V0X3N0YXR1cyhtZXNzYWdl
LCBTT1VQX1NUQVRVU19PSywgbnVsbHB0cik7CiAgICAgfSBlbHNlCi0gICAgICAgIHNvdXBfbWVz
c2FnZV9zZXRfc3RhdHVzKG1lc3NhZ2UsIFNPVVBfU1RBVFVTX05PVF9GT1VORCk7CisgICAgICAg
IHNvdXBfc2VydmVyX21lc3NhZ2Vfc2V0X3N0YXR1cyhtZXNzYWdlLCBTT1VQX1NUQVRVU19OT1Rf
Rk9VTkQsIG51bGxwdHIpOwogfQogCiBjbGFzcyBTZWN1cml0eVBvbGljeVRlc3Q6IHB1YmxpYyBU
ZXN0IHsKQEAgLTU3OSw3ICs1OTAsMTEgQEAgcHVibGljOgogICAgICAgICBQcm94eQogICAgIH07
CiAKKyNpZiBVU0UoU09VUDIpCiAgICAgc3RhdGljIHZvaWQgd2ViU29ja2V0UHJveHlTZXJ2ZXJD
YWxsYmFjayhTb3VwU2VydmVyKiwgU291cFdlYnNvY2tldENvbm5lY3Rpb24qLCBjb25zdCBjaGFy
KiBwYXRoLCBTb3VwQ2xpZW50Q29udGV4dCosIGdwb2ludGVyIHVzZXJEYXRhKQorI2Vsc2UKKyAg
ICBzdGF0aWMgdm9pZCB3ZWJTb2NrZXRQcm94eVNlcnZlckNhbGxiYWNrKFNvdXBTZXJ2ZXIqLCBT
b3VwU2VydmVyTWVzc2FnZSosIGNvbnN0IGNoYXIqIHBhdGgsIFNvdXBXZWJzb2NrZXRDb25uZWN0
aW9uKiwgZ3BvaW50ZXIgdXNlckRhdGEpCisjZW5kaWYKICAgICB7CiAgICAgICAgIHN0YXRpY19j
YXN0PFByb3h5VGVzdCo+KHVzZXJEYXRhKS0+d2ViU29ja2V0Q29ubmVjdGVkKFByb3h5VGVzdDo6
V2ViU29ja2V0U2VydmVyVHlwZTo6UHJveHkpOwogICAgIH0KQEAgLTY0MCw3ICs2NTUsMTEgQEAg
cHVibGljOgogfTsKIAogI2lmIFNPVVBfQ0hFQ0tfVkVSU0lPTigyLCA2MSwgOTApCisjaWYgVVNF
KFNPVVAyKQogc3RhdGljIHZvaWQgd2ViU29ja2V0U2VydmVyQ2FsbGJhY2soU291cFNlcnZlcios
IFNvdXBXZWJzb2NrZXRDb25uZWN0aW9uKiwgY29uc3QgY2hhciosIFNvdXBDbGllbnRDb250ZXh0
KiwgZ3BvaW50ZXIgdXNlckRhdGEpCisjZWxzZQorc3RhdGljIHZvaWQgd2ViU29ja2V0U2VydmVy
Q2FsbGJhY2soU291cFNlcnZlciosIFNvdXBTZXJ2ZXJNZXNzYWdlKiwgY29uc3QgY2hhciosIFNv
dXBXZWJzb2NrZXRDb25uZWN0aW9uKiwgZ3BvaW50ZXIgdXNlckRhdGEpCisjZW5kaWYKIHsKICAg
ICBzdGF0aWNfY2FzdDxQcm94eVRlc3QqPih1c2VyRGF0YSktPndlYlNvY2tldENvbm5lY3RlZChQ
cm94eVRlc3Q6OldlYlNvY2tldFNlcnZlclR5cGU6Ok5vUHJveHkpOwogfQpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRXZWJWaWV3LmNw
cCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0V2ViVmll
dy5jcHAKaW5kZXggNWMyMmIyMWNjOWM0Li5mMzkwNGM1NTgxMzkgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0V2ViVmlldy5jcHAKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRXZWJWaWV3
LmNwcApAQCAtMjEsNiArMjEsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldl
YktpdFRlc3RTZXJ2ZXIuaCIKICNpbmNsdWRlICJXZWJWaWV3VGVzdC5oIgorI2luY2x1ZGUgPFdl
YkNvcmUvU291cFZlcnNpb25pbmcuaD4KICNpbmNsdWRlIDxnbGliL2dzdGRpby5oPgogI2luY2x1
ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KIApAQCAtMTQ4MSwxOCArMTQ4MiwyMiBAQCBzdGF0aWMg
dm9pZCB0ZXN0V2ViVmlld0V4dGVybmFsQXVkaW9SZW5kZXJpbmcoQXVkaW9SZW5kZXJpbmdXZWJW
aWV3VGVzdCogdGVzdCwgZwogfQogI2VuZGlmCiAKKyNpZiBVU0UoU09VUDIpCiBzdGF0aWMgdm9p
ZCBzZXJ2ZXJDYWxsYmFjayhTb3VwU2VydmVyKiBzZXJ2ZXIsIFNvdXBNZXNzYWdlKiBtZXNzYWdl
LCBjb25zdCBjaGFyKiBwYXRoLCBHSGFzaFRhYmxlKiwgU291cENsaWVudENvbnRleHQqLCBncG9p
bnRlcikKKyNlbHNlCitzdGF0aWMgdm9pZCBzZXJ2ZXJDYWxsYmFjayhTb3VwU2VydmVyKiBzZXJ2
ZXIsIFNvdXBTZXJ2ZXJNZXNzYWdlKiBtZXNzYWdlLCBjb25zdCBjaGFyKiBwYXRoLCBHSGFzaFRh
YmxlKiwgZ3BvaW50ZXIpCisjZW5kaWYKIHsKLSAgICBpZiAobWVzc2FnZS0+bWV0aG9kICE9IFNP
VVBfTUVUSE9EX0dFVCkgewotICAgICAgICBzb3VwX21lc3NhZ2Vfc2V0X3N0YXR1cyhtZXNzYWdl
LCBTT1VQX1NUQVRVU19OT1RfSU1QTEVNRU5URUQpOworICAgIGlmIChzb3VwX3NlcnZlcl9tZXNz
YWdlX2dldF9tZXRob2QobWVzc2FnZSkgIT0gU09VUF9NRVRIT0RfR0VUKSB7CisgICAgICAgIHNv
dXBfc2VydmVyX21lc3NhZ2Vfc2V0X3N0YXR1cyhtZXNzYWdlLCBTT1VQX1NUQVRVU19OT1RfSU1Q
TEVNRU5URUQsIG51bGxwdHIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKGdf
c3RyX2VxdWFsKHBhdGgsICIvIikpIHsKLSAgICAgICAgc291cF9tZXNzYWdlX3NldF9zdGF0dXMo
bWVzc2FnZSwgU09VUF9TVEFUVVNfT0spOwotICAgICAgICBzb3VwX21lc3NhZ2VfYm9keV9jb21w
bGV0ZShtZXNzYWdlLT5yZXNwb25zZV9ib2R5KTsKKyAgICAgICAgc291cF9zZXJ2ZXJfbWVzc2Fn
ZV9zZXRfc3RhdHVzKG1lc3NhZ2UsIFNPVVBfU1RBVFVTX09LLCBudWxscHRyKTsKKyAgICAgICAg
c291cF9tZXNzYWdlX2JvZHlfY29tcGxldGUoc291cF9zZXJ2ZXJfbWVzc2FnZV9nZXRfcmVzcG9u
c2VfYm9keShtZXNzYWdlKSk7CiAgICAgfSBlbHNlCi0gICAgICAgIHNvdXBfbWVzc2FnZV9zZXRf
c3RhdHVzKG1lc3NhZ2UsIFNPVVBfU1RBVFVTX05PVF9GT1VORCk7CisgICAgICAgIHNvdXBfc2Vy
dmVyX21lc3NhZ2Vfc2V0X3N0YXR1cyhtZXNzYWdlLCBTT1VQX1NUQVRVU19OT1RfRk9VTkQsIG51
bGxwdHIpOwogfQogCiB2b2lkIGJlZm9yZUFsbCgpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYnNpdGVEYXRhLmNwcCBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2Vic2l0ZURhdGEuY3BwCmluZGV4IGZhMjYz
NmEyMmVlYS4uNGYzN2RiNzM0YmIwIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdEdMaWIvVGVzdFdlYnNpdGVEYXRhLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYnNpdGVEYXRhLmNwcApAQCAtMTksNzcgKzE5LDg1
IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKIAotI2luY2x1ZGUgPFdlYkNvcmUvR1VuaXF1ZVB0
clNvdXAuaD4KICNpbmNsdWRlICJXZWJLaXRUZXN0U2VydmVyLmgiCiAjaW5jbHVkZSAiV2ViVmll
d1Rlc3QuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0dVbmlxdWVQdHJTb3VwLmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9Tb3VwVmVyc2lvbmluZy5oPgogI2luY2x1ZGUgPGdsaWIvZ3N0ZGlvLmg+CiAKIHN0
YXRpYyBXZWJLaXRUZXN0U2VydmVyKiBrU2VydmVyOwogCisjaWYgVVNFKFNPVVAyKQogc3RhdGlj
IHZvaWQgc2VydmVyQ2FsbGJhY2soU291cFNlcnZlciogc2VydmVyLCBTb3VwTWVzc2FnZSogbWVz
c2FnZSwgY29uc3QgY2hhciogcGF0aCwgR0hhc2hUYWJsZSosIFNvdXBDbGllbnRDb250ZXh0Kiwg
Z3BvaW50ZXIpCisjZWxzZQorc3RhdGljIHZvaWQgc2VydmVyQ2FsbGJhY2soU291cFNlcnZlciog
c2VydmVyLCBTb3VwU2VydmVyTWVzc2FnZSogbWVzc2FnZSwgY29uc3QgY2hhciogcGF0aCwgR0hh
c2hUYWJsZSosIGdwb2ludGVyKQorI2VuZGlmCiB7Ci0gICAgaWYgKG1lc3NhZ2UtPm1ldGhvZCAh
PSBTT1VQX01FVEhPRF9HRVQpIHsKLSAgICAgICAgc291cF9tZXNzYWdlX3NldF9zdGF0dXMobWVz
c2FnZSwgU09VUF9TVEFUVVNfTk9UX0lNUExFTUVOVEVEKTsKKyAgICBpZiAoc291cF9zZXJ2ZXJf
bWVzc2FnZV9nZXRfbWV0aG9kKG1lc3NhZ2UpICE9IFNPVVBfTUVUSE9EX0dFVCkgeworICAgICAg
ICBzb3VwX3NlcnZlcl9tZXNzYWdlX3NldF9zdGF0dXMobWVzc2FnZSwgU09VUF9TVEFUVVNfTk9U
X0lNUExFTUVOVEVELCBudWxscHRyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIGF1
dG8qIHJlc3BvbnNlQm9keSA9IHNvdXBfc2VydmVyX21lc3NhZ2VfZ2V0X3Jlc3BvbnNlX2JvZHko
bWVzc2FnZSk7CisKICAgICBpZiAoZ19zdHJfZXF1YWwocGF0aCwgIi8iKSkgewogICAgICAgICBj
b25zdCBjaGFyKiBodG1sID0gIjxodG1sPjxib2R5PjwvYm9keT48L2h0bWw+IjsKLSAgICAgICAg
c291cF9tZXNzYWdlX2JvZHlfYXBwZW5kKG1lc3NhZ2UtPnJlc3BvbnNlX2JvZHksIFNPVVBfTUVN
T1JZX1NUQVRJQywgaHRtbCwgc3RybGVuKGh0bWwpKTsKLSAgICAgICAgc291cF9tZXNzYWdlX2Jv
ZHlfY29tcGxldGUobWVzc2FnZS0+cmVzcG9uc2VfYm9keSk7Ci0gICAgICAgIHNvdXBfbWVzc2Fn
ZV9zZXRfc3RhdHVzKG1lc3NhZ2UsIFNPVVBfU1RBVFVTX09LKTsKKyAgICAgICAgc291cF9tZXNz
YWdlX2JvZHlfYXBwZW5kKHJlc3BvbnNlQm9keSwgU09VUF9NRU1PUllfU1RBVElDLCBodG1sLCBz
dHJsZW4oaHRtbCkpOworICAgICAgICBzb3VwX21lc3NhZ2VfYm9keV9jb21wbGV0ZShyZXNwb25z
ZUJvZHkpOworICAgICAgICBzb3VwX3NlcnZlcl9tZXNzYWdlX3NldF9zdGF0dXMobWVzc2FnZSwg
U09VUF9TVEFUVVNfT0ssIG51bGxwdHIpOwogICAgIH0gZWxzZSBpZiAoZ19zdHJfZXF1YWwocGF0
aCwgIi9lbXB0eSIpKSB7CisgICAgICAgIGF1dG8qIHJlc3BvbnNlSGVhZGVycyA9IHNvdXBfc2Vy
dmVyX21lc3NhZ2VfZ2V0X3Jlc3BvbnNlX2hlYWRlcnMobWVzc2FnZSk7CisgICAgICAgIHNvdXBf
bWVzc2FnZV9oZWFkZXJzX3JlcGxhY2UocmVzcG9uc2VIZWFkZXJzLCAiU2V0LUNvb2tpZSIsICJm
b289YmFyOyBNYXgtQWdlPTYwIik7CisgICAgICAgIHNvdXBfbWVzc2FnZV9oZWFkZXJzX3JlcGxh
Y2UocmVzcG9uc2VIZWFkZXJzLCAiU3RyaWN0LVRyYW5zcG9ydC1TZWN1cml0eSIsICJtYXgtYWdl
PTM2MDAiKTsKICAgICAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGVtcHR5SFRNTCA9ICI8aHRtbD48
Ym9keT48L2JvZHk+PC9odG1sPiI7Ci0gICAgICAgIHNvdXBfbWVzc2FnZV9oZWFkZXJzX3JlcGxh
Y2UobWVzc2FnZS0+cmVzcG9uc2VfaGVhZGVycywgIlNldC1Db29raWUiLCAiZm9vPWJhcjsgTWF4
LUFnZT02MCIpOwotICAgICAgICBzb3VwX21lc3NhZ2VfaGVhZGVyc19yZXBsYWNlKG1lc3NhZ2Ut
PnJlc3BvbnNlX2hlYWRlcnMsICJTdHJpY3QtVHJhbnNwb3J0LVNlY3VyaXR5IiwgIm1heC1hZ2U9
MzYwMCIpOwotICAgICAgICBzb3VwX21lc3NhZ2VfYm9keV9hcHBlbmQobWVzc2FnZS0+cmVzcG9u
c2VfYm9keSwgU09VUF9NRU1PUllfU1RBVElDLCBlbXB0eUhUTUwsIHN0cmxlbihlbXB0eUhUTUwp
KTsKLSAgICAgICAgc291cF9tZXNzYWdlX2JvZHlfY29tcGxldGUobWVzc2FnZS0+cmVzcG9uc2Vf
Ym9keSk7Ci0gICAgICAgIHNvdXBfbWVzc2FnZV9zZXRfc3RhdHVzKG1lc3NhZ2UsIFNPVVBfU1RB
VFVTX09LKTsKKyAgICAgICAgc291cF9tZXNzYWdlX2JvZHlfYXBwZW5kKHJlc3BvbnNlQm9keSwg
U09VUF9NRU1PUllfU1RBVElDLCBlbXB0eUhUTUwsIHN0cmxlbihlbXB0eUhUTUwpKTsKKyAgICAg
ICAgc291cF9tZXNzYWdlX2JvZHlfY29tcGxldGUocmVzcG9uc2VCb2R5KTsKKyAgICAgICAgc291
cF9zZXJ2ZXJfbWVzc2FnZV9zZXRfc3RhdHVzKG1lc3NhZ2UsIFNPVVBfU1RBVFVTX09LLCBudWxs
cHRyKTsKICAgICB9IGVsc2UgaWYgKGdfc3RyX2VxdWFsKHBhdGgsICIvYXBwY2FjaGUiKSkgewog
ICAgICAgICBzdGF0aWMgY29uc3QgY2hhciogYXBwY2FjaGVIVE1MID0gIjxodG1sIG1hbmlmZXN0
PWFwcGNhY2hlLm1hbmlmZXN0Pjxib2R5PjwvYm9keT48L2h0bWw+IjsKLSAgICAgICAgc291cF9t
ZXNzYWdlX2JvZHlfYXBwZW5kKG1lc3NhZ2UtPnJlc3BvbnNlX2JvZHksIFNPVVBfTUVNT1JZX1NU
QVRJQywgYXBwY2FjaGVIVE1MLCBzdHJsZW4oYXBwY2FjaGVIVE1MKSk7Ci0gICAgICAgIHNvdXBf
bWVzc2FnZV9ib2R5X2NvbXBsZXRlKG1lc3NhZ2UtPnJlc3BvbnNlX2JvZHkpOwotICAgICAgICBz
b3VwX21lc3NhZ2Vfc2V0X3N0YXR1cyhtZXNzYWdlLCBTT1VQX1NUQVRVU19PSyk7CisgICAgICAg
IHNvdXBfbWVzc2FnZV9ib2R5X2FwcGVuZChyZXNwb25zZUJvZHksIFNPVVBfTUVNT1JZX1NUQVRJ
QywgYXBwY2FjaGVIVE1MLCBzdHJsZW4oYXBwY2FjaGVIVE1MKSk7CisgICAgICAgIHNvdXBfbWVz
c2FnZV9ib2R5X2NvbXBsZXRlKHJlc3BvbnNlQm9keSk7CisgICAgICAgIHNvdXBfc2VydmVyX21l
c3NhZ2Vfc2V0X3N0YXR1cyhtZXNzYWdlLCBTT1VQX1NUQVRVU19PSywgbnVsbHB0cik7CiAgICAg
fSBlbHNlIGlmIChnX3N0cl9lcXVhbChwYXRoLCAiL2FwcGNhY2hlLm1hbmlmZXN0IikpIHsKICAg
ICAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGFwcGNhY2hlTWFuaWZlc3QgPSAiQ0FDSEUgTUFOSUZF
U1RcbkNBQ0hFOlxuYXBwY2FjaGUvZm9vLnR4dFxuIjsKLSAgICAgICAgc291cF9tZXNzYWdlX2Jv
ZHlfYXBwZW5kKG1lc3NhZ2UtPnJlc3BvbnNlX2JvZHksIFNPVVBfTUVNT1JZX1NUQVRJQywgYXBw
Y2FjaGVNYW5pZmVzdCwgc3RybGVuKGFwcGNhY2hlTWFuaWZlc3QpKTsKLSAgICAgICAgc291cF9t
ZXNzYWdlX2JvZHlfY29tcGxldGUobWVzc2FnZS0+cmVzcG9uc2VfYm9keSk7Ci0gICAgICAgIHNv
dXBfbWVzc2FnZV9zZXRfc3RhdHVzKG1lc3NhZ2UsIFNPVVBfU1RBVFVTX09LKTsKKyAgICAgICAg
c291cF9tZXNzYWdlX2JvZHlfYXBwZW5kKHJlc3BvbnNlQm9keSwgU09VUF9NRU1PUllfU1RBVElD
LCBhcHBjYWNoZU1hbmlmZXN0LCBzdHJsZW4oYXBwY2FjaGVNYW5pZmVzdCkpOworICAgICAgICBz
b3VwX21lc3NhZ2VfYm9keV9jb21wbGV0ZShyZXNwb25zZUJvZHkpOworICAgICAgICBzb3VwX3Nl
cnZlcl9tZXNzYWdlX3NldF9zdGF0dXMobWVzc2FnZSwgU09VUF9TVEFUVVNfT0ssIG51bGxwdHIp
OwogICAgIH0gZWxzZSBpZiAoZ19zdHJfZXF1YWwocGF0aCwgIi9hcHBjYWNoZS9mb28udHh0Iikp
IHsKLSAgICAgICAgc291cF9tZXNzYWdlX2JvZHlfYXBwZW5kKG1lc3NhZ2UtPnJlc3BvbnNlX2Jv
ZHksIFNPVVBfTUVNT1JZX1NUQVRJQywgImZvbyIsIDMpOwotICAgICAgICBzb3VwX21lc3NhZ2Vf
Ym9keV9jb21wbGV0ZShtZXNzYWdlLT5yZXNwb25zZV9ib2R5KTsKLSAgICAgICAgc291cF9tZXNz
YWdlX3NldF9zdGF0dXMobWVzc2FnZSwgU09VUF9TVEFUVVNfT0spOworICAgICAgICBzb3VwX21l
c3NhZ2VfYm9keV9hcHBlbmQocmVzcG9uc2VCb2R5LCBTT1VQX01FTU9SWV9TVEFUSUMsICJmb28i
LCAzKTsKKyAgICAgICAgc291cF9tZXNzYWdlX2JvZHlfY29tcGxldGUocmVzcG9uc2VCb2R5KTsK
KyAgICAgICAgc291cF9zZXJ2ZXJfbWVzc2FnZV9zZXRfc3RhdHVzKG1lc3NhZ2UsIFNPVVBfU1RB
VFVTX09LLCBudWxscHRyKTsKICAgICB9IGVsc2UgaWYgKGdfc3RyX2VxdWFsKHBhdGgsICIvc2Vz
c2lvbnN0b3JhZ2UiKSkgewogICAgICAgICBzdGF0aWMgY29uc3QgY2hhciogc2Vzc2lvblN0b3Jh
Z2VIVE1MID0gIjxodG1sPjxib2R5IG9ubG9hZD1cInNlc3Npb25TdG9yYWdlLmZvbyA9ICdiYXIn
O1wiPjwvYm9keT48L2h0bWw+IjsKLSAgICAgICAgc291cF9tZXNzYWdlX2JvZHlfYXBwZW5kKG1l
c3NhZ2UtPnJlc3BvbnNlX2JvZHksIFNPVVBfTUVNT1JZX1NUQVRJQywgc2Vzc2lvblN0b3JhZ2VI
VE1MLCBzdHJsZW4oc2Vzc2lvblN0b3JhZ2VIVE1MKSk7Ci0gICAgICAgIHNvdXBfbWVzc2FnZV9i
b2R5X2NvbXBsZXRlKG1lc3NhZ2UtPnJlc3BvbnNlX2JvZHkpOwotICAgICAgICBzb3VwX21lc3Nh
Z2Vfc2V0X3N0YXR1cyhtZXNzYWdlLCBTT1VQX1NUQVRVU19PSyk7CisgICAgICAgIHNvdXBfbWVz
c2FnZV9ib2R5X2FwcGVuZChyZXNwb25zZUJvZHksIFNPVVBfTUVNT1JZX1NUQVRJQywgc2Vzc2lv
blN0b3JhZ2VIVE1MLCBzdHJsZW4oc2Vzc2lvblN0b3JhZ2VIVE1MKSk7CisgICAgICAgIHNvdXBf
bWVzc2FnZV9ib2R5X2NvbXBsZXRlKHJlc3BvbnNlQm9keSk7CisgICAgICAgIHNvdXBfc2VydmVy
X21lc3NhZ2Vfc2V0X3N0YXR1cyhtZXNzYWdlLCBTT1VQX1NUQVRVU19PSywgbnVsbHB0cik7CiAg
ICAgfSBlbHNlIGlmIChnX3N0cl9lcXVhbChwYXRoLCAiL2xvY2Fsc3RvcmFnZSIpKSB7CiAgICAg
ICAgIHN0YXRpYyBjb25zdCBjaGFyKiBsb2NhbFN0b3JhZ2VIVE1MID0gIjxodG1sPjxib2R5IG9u
bG9hZD1cImxvY2FsU3RvcmFnZS5mb28gPSAnYmFyJztcIj48L2JvZHk+PC9odG1sPiI7Ci0gICAg
ICAgIHNvdXBfbWVzc2FnZV9ib2R5X2FwcGVuZChtZXNzYWdlLT5yZXNwb25zZV9ib2R5LCBTT1VQ
X01FTU9SWV9TVEFUSUMsIGxvY2FsU3RvcmFnZUhUTUwsIHN0cmxlbihsb2NhbFN0b3JhZ2VIVE1M
KSk7Ci0gICAgICAgIHNvdXBfbWVzc2FnZV9ib2R5X2NvbXBsZXRlKG1lc3NhZ2UtPnJlc3BvbnNl
X2JvZHkpOwotICAgICAgICBzb3VwX21lc3NhZ2Vfc2V0X3N0YXR1cyhtZXNzYWdlLCBTT1VQX1NU
QVRVU19PSyk7CisgICAgICAgIHNvdXBfbWVzc2FnZV9ib2R5X2FwcGVuZChyZXNwb25zZUJvZHks
IFNPVVBfTUVNT1JZX1NUQVRJQywgbG9jYWxTdG9yYWdlSFRNTCwgc3RybGVuKGxvY2FsU3RvcmFn
ZUhUTUwpKTsKKyAgICAgICAgc291cF9tZXNzYWdlX2JvZHlfY29tcGxldGUocmVzcG9uc2VCb2R5
KTsKKyAgICAgICAgc291cF9zZXJ2ZXJfbWVzc2FnZV9zZXRfc3RhdHVzKG1lc3NhZ2UsIFNPVVBf
U1RBVFVTX09LLCBudWxscHRyKTsKICAgICB9IGVsc2UgaWYgKGdfc3RyX2VxdWFsKHBhdGgsICIv
ZW51bWVyYXRlZGV2aWNlcyIpKSB7CiAgICAgICAgIHN0YXRpYyBjb25zdCBjaGFyKiBlbnVtZXJh
dGVEZXZpY2VzSFRNTCA9ICI8aHRtbD48Ym9keSBvbmxvYWQ9XCJuYXZpZ2F0b3IubWVkaWFEZXZp
Y2VzLmVudW1lcmF0ZURldmljZXMoKS50aGVuKGZ1bmN0aW9uKGRldmljZXMpIHsgZG9jdW1lbnQu
dGl0bGUgPSAnRmluaXNoZWQnOyB9KVwiPjwvYm9keT48L2h0bWw+IjsKLSAgICAgICAgc291cF9t
ZXNzYWdlX2JvZHlfYXBwZW5kKG1lc3NhZ2UtPnJlc3BvbnNlX2JvZHksIFNPVVBfTUVNT1JZX1NU
QVRJQywgZW51bWVyYXRlRGV2aWNlc0hUTUwsIHN0cmxlbihlbnVtZXJhdGVEZXZpY2VzSFRNTCkp
OwotICAgICAgICBzb3VwX21lc3NhZ2VfYm9keV9jb21wbGV0ZShtZXNzYWdlLT5yZXNwb25zZV9i
b2R5KTsKLSAgICAgICAgc291cF9tZXNzYWdlX3NldF9zdGF0dXMobWVzc2FnZSwgU09VUF9TVEFU
VVNfT0spOworICAgICAgICBzb3VwX21lc3NhZ2VfYm9keV9hcHBlbmQocmVzcG9uc2VCb2R5LCBT
T1VQX01FTU9SWV9TVEFUSUMsIGVudW1lcmF0ZURldmljZXNIVE1MLCBzdHJsZW4oZW51bWVyYXRl
RGV2aWNlc0hUTUwpKTsKKyAgICAgICAgc291cF9tZXNzYWdlX2JvZHlfY29tcGxldGUocmVzcG9u
c2VCb2R5KTsKKyAgICAgICAgc291cF9zZXJ2ZXJfbWVzc2FnZV9zZXRfc3RhdHVzKG1lc3NhZ2Us
IFNPVVBfU1RBVFVTX09LLCBudWxscHRyKTsKICAgICB9IGVsc2UgaWYgKGdfc3RyX2VxdWFsKHBh
dGgsICIvc2VydmljZS9yZWdpc3Rlci5odG1sIikpIHsKICAgICAgICAgc3RhdGljIGNvbnN0IGNo
YXIqIHN3UmVnaXN0ZXJIVE1MID0gIjxodG1sPjxib2R5PjxzY3JpcHQgc3JjPVwiL3NlcnZpY2Uv
cmVnaXN0ZXIuanNcIj48L3NjcmlwdD48L2JvZHk+PC9odG1sPiI7Ci0gICAgICAgIHNvdXBfbWVz
c2FnZV9ib2R5X2FwcGVuZChtZXNzYWdlLT5yZXNwb25zZV9ib2R5LCBTT1VQX01FTU9SWV9TVEFU
SUMsIHN3UmVnaXN0ZXJIVE1MLCBzdHJsZW4oc3dSZWdpc3RlckhUTUwpKTsKLSAgICAgICAgc291
cF9tZXNzYWdlX2JvZHlfY29tcGxldGUobWVzc2FnZS0+cmVzcG9uc2VfYm9keSk7Ci0gICAgICAg
IHNvdXBfbWVzc2FnZV9zZXRfc3RhdHVzKG1lc3NhZ2UsIFNPVVBfU1RBVFVTX09LKTsKKyAgICAg
ICAgc291cF9tZXNzYWdlX2JvZHlfYXBwZW5kKHJlc3BvbnNlQm9keSwgU09VUF9NRU1PUllfU1RB
VElDLCBzd1JlZ2lzdGVySFRNTCwgc3RybGVuKHN3UmVnaXN0ZXJIVE1MKSk7CisgICAgICAgIHNv
dXBfbWVzc2FnZV9ib2R5X2NvbXBsZXRlKHJlc3BvbnNlQm9keSk7CisgICAgICAgIHNvdXBfc2Vy
dmVyX21lc3NhZ2Vfc2V0X3N0YXR1cyhtZXNzYWdlLCBTT1VQX1NUQVRVU19PSywgbnVsbHB0cik7
CiAgICAgfSBlbHNlIGlmIChnX3N0cl9lcXVhbChwYXRoLCAiL3NlcnZpY2UvcmVnaXN0ZXIuanMi
KSkgewogICAgICAgICBzdGF0aWMgY29uc3QgY2hhciogc3dSZWdpc3RlckpTID0KICAgICAgICAg
ICAgICJhc3luYyBmdW5jdGlvbiB0ZXN0KCkgeyBhd2FpdCBuYXZpZ2F0b3Iuc2VydmljZVdvcmtl
ci5yZWdpc3RlcihcIi9zZXJ2aWNlL2VtcHR5LXdvcmtlci5qc1wiKTsgfSB0ZXN0KCk7IjsKLSAg
ICAgICAgc291cF9tZXNzYWdlX2JvZHlfYXBwZW5kKG1lc3NhZ2UtPnJlc3BvbnNlX2JvZHksIFNP
VVBfTUVNT1JZX1NUQVRJQywgc3dSZWdpc3RlckpTLCBzdHJsZW4oc3dSZWdpc3RlckpTKSk7Ci0g
ICAgICAgIHNvdXBfbWVzc2FnZV9ib2R5X2NvbXBsZXRlKG1lc3NhZ2UtPnJlc3BvbnNlX2JvZHkp
OwotICAgICAgICBzb3VwX21lc3NhZ2Vfc2V0X3N0YXR1cyhtZXNzYWdlLCBTT1VQX1NUQVRVU19P
Syk7CisgICAgICAgIHNvdXBfbWVzc2FnZV9ib2R5X2FwcGVuZChyZXNwb25zZUJvZHksIFNPVVBf
TUVNT1JZX1NUQVRJQywgc3dSZWdpc3RlckpTLCBzdHJsZW4oc3dSZWdpc3RlckpTKSk7CisgICAg
ICAgIHNvdXBfbWVzc2FnZV9ib2R5X2NvbXBsZXRlKHJlc3BvbnNlQm9keSk7CisgICAgICAgIHNv
dXBfc2VydmVyX21lc3NhZ2Vfc2V0X3N0YXR1cyhtZXNzYWdlLCBTT1VQX1NUQVRVU19PSywgbnVs
bHB0cik7CiAgICAgfSBlbHNlIGlmIChnX3N0cl9lcXVhbChwYXRoLCAiL3NlcnZpY2UvZW1wdHkt
d29ya2VyLmpzIikpIHsKLSAgICAgICAgc291cF9tZXNzYWdlX2JvZHlfY29tcGxldGUobWVzc2Fn
ZS0+cmVzcG9uc2VfYm9keSk7Ci0gICAgICAgIHNvdXBfbWVzc2FnZV9zZXRfc3RhdHVzKG1lc3Nh
Z2UsIFNPVVBfU1RBVFVTX09LKTsKKyAgICAgICAgc291cF9tZXNzYWdlX2JvZHlfY29tcGxldGUo
cmVzcG9uc2VCb2R5KTsKKyAgICAgICAgc291cF9zZXJ2ZXJfbWVzc2FnZV9zZXRfc3RhdHVzKG1l
c3NhZ2UsIFNPVVBfU1RBVFVTX09LLCBudWxscHRyKTsKICAgICB9IGVsc2UKLSAgICAgICAgc291
cF9tZXNzYWdlX3NldF9zdGF0dXMobWVzc2FnZSwgU09VUF9TVEFUVVNfTk9UX0ZPVU5EKTsKKyAg
ICAgICAgc291cF9zZXJ2ZXJfbWVzc2FnZV9zZXRfc3RhdHVzKG1lc3NhZ2UsIFNPVVBfU1RBVFVT
X05PVF9GT1VORCwgbnVsbHB0cik7CiB9CiAKIGNsYXNzIFdlYnNpdGVEYXRhVGVzdCA6IHB1Ymxp
YyBXZWJWaWV3VGVzdCB7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdEd0ay9UZXN0Q29udGV4dE1lbnUuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRHdGsvVGVzdENvbnRleHRNZW51LmNwcAppbmRleCA1MTViYzAwZDZmNzIuLjViYTkyYTRh
ZDE4ZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvVGVz
dENvbnRleHRNZW51LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0
ay9UZXN0Q29udGV4dE1lbnUuY3BwCkBAIC0yMSw2ICsyMSw3IEBACiAKICNpbmNsdWRlICJXZWJL
aXRUZXN0U2VydmVyLmgiCiAjaW5jbHVkZSAiV2ViVmlld1Rlc3QuaCIKKyNpbmNsdWRlIDxXZWJD
b3JlL1NvdXBWZXJzaW9uaW5nLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUg
PHd0Zi9nbGliL0dSZWZQdHIuaD4KIApAQCAtMTA4MSwyOSArMTA4MiwzOCBAQCBzdGF0aWMgdm9p
ZCB0ZXN0Q29udGV4dE1lbnVXZWJFeHRlbnNpb25Ob2RlKENvbnRleHRNZW51V2ViRXh0ZW5zaW9u
Tm9kZVRlc3QqIHRlcwogICAgIGdfYXNzZXJ0X2NtcHN0cih0ZXN0LT5tX25vZGUucGFyZW50TmFt
ZS5kYXRhKCksID09LCAiQSIpOwogfQogCisjaWYgVVNFKFNPVVAyKQogc3RhdGljIHZvaWQgd3Jp
dGVOZXh0Q2h1bmsoU291cE1lc3NhZ2UqIG1lc3NhZ2UpCisjZWxzZQorc3RhdGljIHZvaWQgd3Jp
dGVOZXh0Q2h1bmsoU291cFNlcnZlck1lc3NhZ2UqIG1lc3NhZ2UpCisjZW5kaWYKIHsKKyAgICBh
dXRvKiByZXNwb25zZUJvZHkgPSBzb3VwX3NlcnZlcl9tZXNzYWdlX2dldF9yZXNwb25zZV9ib2R5
KG1lc3NhZ2UpOwogICAgIEdVbmlxdWVQdHI8Y2hhcj4gZmlsZVBhdGgoZ19idWlsZF9maWxlbmFt
ZShUZXN0OjpnZXRSZXNvdXJjZXNEaXIoKS5kYXRhKCksICJzaWxlbmNlLndlYm0iLCBudWxscHRy
KSk7CiAgICAgY2hhciogY29udGVudHM7CiAgICAgZ3NpemUgY29udGVudHNMZW5ndGg7CiAgICAg
aWYgKCFnX2ZpbGVfZ2V0X2NvbnRlbnRzKGZpbGVQYXRoLmdldCgpLCAmY29udGVudHMsICZjb250
ZW50c0xlbmd0aCwgbnVsbHB0cikpIHsKLSAgICAgICAgc291cF9tZXNzYWdlX3NldF9zdGF0dXMo
bWVzc2FnZSwgU09VUF9TVEFUVVNfTk9UX0ZPVU5EKTsKLSAgICAgICAgc291cF9tZXNzYWdlX2Jv
ZHlfY29tcGxldGUobWVzc2FnZS0+cmVzcG9uc2VfYm9keSk7CisgICAgICAgIHNvdXBfc2VydmVy
X21lc3NhZ2Vfc2V0X3N0YXR1cyhtZXNzYWdlLCBTT1VQX1NUQVRVU19OT1RfRk9VTkQsIG51bGxw
dHIpOworICAgICAgICBzb3VwX21lc3NhZ2VfYm9keV9jb21wbGV0ZShyZXNwb25zZUJvZHkpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgc291cF9tZXNzYWdlX2JvZHlfYXBwZW5kKG1l
c3NhZ2UtPnJlc3BvbnNlX2JvZHksIFNPVVBfTUVNT1JZX1RBS0UsIGNvbnRlbnRzLCBjb250ZW50
c0xlbmd0aCk7Ci0gICAgc291cF9tZXNzYWdlX2JvZHlfY29tcGxldGUobWVzc2FnZS0+cmVzcG9u
c2VfYm9keSk7CisgICAgc291cF9tZXNzYWdlX2JvZHlfYXBwZW5kKHJlc3BvbnNlQm9keSwgU09V
UF9NRU1PUllfVEFLRSwgY29udGVudHMsIGNvbnRlbnRzTGVuZ3RoKTsKKyAgICBzb3VwX21lc3Nh
Z2VfYm9keV9jb21wbGV0ZShyZXNwb25zZUJvZHkpOwogfQogCisjaWYgVVNFKFNPVVAyKQogc3Rh
dGljIHZvaWQgc2VydmVyQ2FsbGJhY2soU291cFNlcnZlciogc2VydmVyLCBTb3VwTWVzc2FnZSog
bWVzc2FnZSwgY29uc3QgY2hhciogcGF0aCwgR0hhc2hUYWJsZSosIFNvdXBDbGllbnRDb250ZXh0
KiwgZ3BvaW50ZXIpCisjZWxzZQorc3RhdGljIHZvaWQgc2VydmVyQ2FsbGJhY2soU291cFNlcnZl
ciogc2VydmVyLCBTb3VwU2VydmVyTWVzc2FnZSogbWVzc2FnZSwgY29uc3QgY2hhciogcGF0aCwg
R0hhc2hUYWJsZSosIGdwb2ludGVyKQorI2VuZGlmCiB7Ci0gICAgaWYgKG1lc3NhZ2UtPm1ldGhv
ZCAhPSBTT1VQX01FVEhPRF9HRVQpIHsKLSAgICAgICAgc291cF9tZXNzYWdlX3NldF9zdGF0dXMo
bWVzc2FnZSwgU09VUF9TVEFUVVNfTk9UX0lNUExFTUVOVEVEKTsKKyAgICBpZiAoc291cF9zZXJ2
ZXJfbWVzc2FnZV9nZXRfbWV0aG9kKG1lc3NhZ2UpICE9IFNPVVBfTUVUSE9EX0dFVCkgeworICAg
ICAgICBzb3VwX3NlcnZlcl9tZXNzYWdlX3NldF9zdGF0dXMobWVzc2FnZSwgU09VUF9TVEFUVVNf
Tk9UX0lNUExFTUVOVEVELCBudWxscHRyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IHNvdXBfbWVzc2FnZV9zZXRfc3RhdHVzKG1lc3NhZ2UsIFNPVVBfU1RBVFVTX09LKTsKKyAgICBz
b3VwX3NlcnZlcl9tZXNzYWdlX3NldF9zdGF0dXMobWVzc2FnZSwgU09VUF9TVEFUVVNfT0ssIG51
bGxwdHIpOwogCiAgICAgaWYgKGdfc3RyX2VxdWFsKHBhdGgsICIvbGl2ZS1zdHJlYW0iKSkgewog
ICAgICAgICBzdGF0aWMgY29uc3QgY2hhciogaHRtbCA9CkBAIC0xMTEyLDE1ICsxMTIyLDE1IEBA
IHN0YXRpYyB2b2lkIHNlcnZlckNhbGxiYWNrKFNvdXBTZXJ2ZXIqIHNlcnZlciwgU291cE1lc3Nh
Z2UqIG1lc3NhZ2UsIGNvbnN0IGNoYXIqCiAgICAgICAgICAgICAiICA8c291cmNlIHNyYz0nL2xp
dmUtc3RyZWFtLndlYm0nIHR5cGU9J3ZpZGVvL3dlYm0nIC8+IgogICAgICAgICAgICAgIiA8L3Zp
ZGVvPiIKICAgICAgICAgICAgICI8L2JvZHk+PC9odG1sPiI7Ci0gICAgICAgIHNvdXBfbWVzc2Fn
ZV9ib2R5X2FwcGVuZChtZXNzYWdlLT5yZXNwb25zZV9ib2R5LCBTT1VQX01FTU9SWV9TVEFUSUMs
IGh0bWwsIHN0cmxlbihodG1sKSk7CisgICAgICAgIHNvdXBfbWVzc2FnZV9ib2R5X2FwcGVuZChz
b3VwX3NlcnZlcl9tZXNzYWdlX2dldF9yZXNwb25zZV9ib2R5KG1lc3NhZ2UpLCBTT1VQX01FTU9S
WV9TVEFUSUMsIGh0bWwsIHN0cmxlbihodG1sKSk7CiAgICAgfSBlbHNlIGlmIChnX3N0cl9lcXVh
bChwYXRoLCAiL2xpdmUtc3RyZWFtLndlYm0iKSkgewotICAgICAgICBzb3VwX21lc3NhZ2VfaGVh
ZGVyc19zZXRfZW5jb2RpbmcobWVzc2FnZS0+cmVzcG9uc2VfaGVhZGVycywgU09VUF9FTkNPRElO
R19DSFVOS0VEKTsKLSAgICAgICAgZ19zaWduYWxfY29ubmVjdChtZXNzYWdlLCAid3JvdGVfaGVh
ZGVycyIsIEdfQ0FMTEJBQ0sod3JpdGVOZXh0Q2h1bmspLCBudWxscHRyKTsKLSAgICAgICAgZ19z
aWduYWxfY29ubmVjdChtZXNzYWdlLCAid3JvdGVfY2h1bmsiLCBHX0NBTExCQUNLKHdyaXRlTmV4
dENodW5rKSwgbnVsbHB0cik7CisgICAgICAgIHNvdXBfbWVzc2FnZV9oZWFkZXJzX3NldF9lbmNv
ZGluZyhzb3VwX3NlcnZlcl9tZXNzYWdlX2dldF9yZXNwb25zZV9oZWFkZXJzKG1lc3NhZ2UpLCBT
T1VQX0VOQ09ESU5HX0NIVU5LRUQpOworICAgICAgICBnX3NpZ25hbF9jb25uZWN0KG1lc3NhZ2Us
ICJ3cm90ZS1oZWFkZXJzIiwgR19DQUxMQkFDSyh3cml0ZU5leHRDaHVuayksIG51bGxwdHIpOwor
ICAgICAgICBnX3NpZ25hbF9jb25uZWN0KG1lc3NhZ2UsICJ3cm90ZS1jaHVuayIsIEdfQ0FMTEJB
Q0sod3JpdGVOZXh0Q2h1bmspLCBudWxscHRyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIHNvdXBfbWVzc2FnZV9ib2R5X2NvbXBsZXRlKG1lc3NhZ2UtPnJlc3BvbnNlX2JvZHkpOwor
ICAgIHNvdXBfbWVzc2FnZV9ib2R5X2NvbXBsZXRlKHNvdXBfc2VydmVyX21lc3NhZ2VfZ2V0X3Jl
c3BvbnNlX2JvZHkobWVzc2FnZSkpOwogfQogCiBzdGF0aWMgdm9pZCB0ZXN0Q29udGV4dE1lbnVM
aXZlU3RyZWFtKENvbnRleHRNZW51RGVmYXVsdFRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJLaXRUZXN0
U2VydmVyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYktpdFRl
c3RTZXJ2ZXIuY3BwCmluZGV4IGNiODM3ZTMyNmM4My4uZGRmMjlkMzIxY2UxIDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJLaXRUZXN0U2VydmVyLmNw
cAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJLaXRUZXN0U2Vy
dmVyLmNwcApAQCAtNTMsMjQgKzUzLDI5IEBAIHZvaWQgV2ViS2l0VGVzdFNlcnZlcjo6cnVuKFNv
dXBTZXJ2ZXJDYWxsYmFjayBzZXJ2ZXJDYWxsYmFjaykKICAgICBpZiAobV9xdWV1ZSkgewogICAg
ICAgICBCaW5hcnlTZW1hcGhvcmUgc2VtYXBob3JlOwogICAgICAgICBtX3F1ZXVlLT5kaXNwYXRj
aChbJl0gewotICAgICAgICAgICAgZ19hc3NlcnRfdHJ1ZShzb3VwX3NlcnZlcl9saXN0ZW5fbG9j
YWwobV9zb3VwU2VydmVyLmdldCgpLCBTT1VQX0FERFJFU1NfQU5ZX1BPUlQsIHN0YXRpY19jYXN0
PFNvdXBTZXJ2ZXJMaXN0ZW5PcHRpb25zPihvcHRpb25zKSwgbnVsbHB0cikpOworICAgICAgICAg
ICAgZ19hc3NlcnRfdHJ1ZShzb3VwX3NlcnZlcl9saXN0ZW5fbG9jYWwobV9zb3VwU2VydmVyLmdl
dCgpLCAwLCBzdGF0aWNfY2FzdDxTb3VwU2VydmVyTGlzdGVuT3B0aW9ucz4ob3B0aW9ucyksIG51
bGxwdHIpKTsKICAgICAgICAgICAgIHNlbWFwaG9yZS5zaWduYWwoKTsKICAgICAgICAgfSk7CiAg
ICAgICAgIHNlbWFwaG9yZS53YWl0KCk7CiAgICAgfSBlbHNlCi0gICAgICAgIGdfYXNzZXJ0X3Ry
dWUoc291cF9zZXJ2ZXJfbGlzdGVuX2xvY2FsKG1fc291cFNlcnZlci5nZXQoKSwgU09VUF9BRERS
RVNTX0FOWV9QT1JULCBzdGF0aWNfY2FzdDxTb3VwU2VydmVyTGlzdGVuT3B0aW9ucz4ob3B0aW9u
cyksIG51bGxwdHIpKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZShzb3VwX3NlcnZlcl9saXN0ZW5f
bG9jYWwobV9zb3VwU2VydmVyLmdldCgpLCAwLCBzdGF0aWNfY2FzdDxTb3VwU2VydmVyTGlzdGVu
T3B0aW9ucz4ob3B0aW9ucyksIG51bGxwdHIpKTsKIAogICAgIEdTTGlzdCogdXJpcyA9IHNvdXBf
c2VydmVyX2dldF91cmlzKG1fc291cFNlcnZlci5nZXQoKSk7CiAgICAgZ19hc3NlcnRfbm9ubnVs
bCh1cmlzKTsKKyNpZiBVU0UoU09VUDIpCiAgICAgR1VuaXF1ZVB0cjxnY2hhcj4gdXJsU3RyaW5n
KHNvdXBfdXJpX3RvX3N0cmluZyhzdGF0aWNfY2FzdDxTb3VwVVJJKj4odXJpcy0+ZGF0YSksIEZB
TFNFKSk7CiAgICAgbV9iYXNlVVJMID0gVVJMKHsgfSwgU3RyaW5nOjpmcm9tVVRGOCh1cmxTdHJp
bmcuZ2V0KCkpKTsKICAgICBnX3NsaXN0X2ZyZWVfZnVsbCh1cmlzLCByZWludGVycHJldF9jYXN0
PEdEZXN0cm95Tm90aWZ5Pihzb3VwX3VyaV9mcmVlKSk7CisjZWxzZQorICAgIG1fYmFzZVVSTCA9
IHN0YXRpY19jYXN0PEdVcmkqPih1cmlzLT5kYXRhKTsKKyAgICBnX3NsaXN0X2ZyZWVfZnVsbCh1
cmlzLCByZWludGVycHJldF9jYXN0PEdEZXN0cm95Tm90aWZ5PihnX3VyaV91bnJlZikpOworI2Vu
ZGlmCiB9CiAKIHZvaWQgV2ViS2l0VGVzdFNlcnZlcjo6YWRkV2ViU29ja2V0SGFuZGxlcihTb3Vw
U2VydmVyV2Vic29ja2V0Q2FsbGJhY2sgY2FsbGJhY2ssIGdwb2ludGVyIHVzZXJEYXRhKQogewog
ICAgIG1fYmFzZVdlYlNvY2tldFVSTCA9IFVSTChtX2Jhc2VVUkwsICIvd2Vic29ja2V0LyIpOwot
ICAgIG1fYmFzZVdlYlNvY2tldFVSTC5zZXRQcm90b2NvbChtX2Jhc2VXZWJTb2NrZXRVUkwucHJv
dG9jb2xJcygiaHR0cCIpID8gU09VUF9VUklfU0NIRU1FX1dTIDogU09VUF9VUklfU0NIRU1FX1dT
Uyk7CisgICAgbV9iYXNlV2ViU29ja2V0VVJMLnNldFByb3RvY29sKG1fYmFzZVdlYlNvY2tldFVS
TC5wcm90b2NvbElzKCJodHRwIikgPyAid3MiIDogIndzcyIpOwogCiAgICAgaWYgKG1fcXVldWUp
IHsKICAgICAgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIGNhbGxiYWNrLCB1c2VyRGF0YV0g
ewo=
</data>
<flag name="review"
          id="439963"
          type_id="1"
          status="+"
          setter="aperez"
    />
          </attachment>
      

    </bug>

</bugzilla>