<?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>113999</bug_id>
          
          <creation_ts>2013-04-04 23:13:50 -0700</creation_ts>
          <short_desc>Remove the top level gyp directory and Platform/chromium</short_desc>
          <delta_ts>2013-04-04 23:38:07 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>fishd</cc>
    
    <cc>jamesr</cc>
    
    <cc>jer.noble</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>869572</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-04-04 23:13:50 -0700</bug_when>
    <thetext>Remove the top level gyp directory and Platform/chromium</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>869573</commentid>
    <comment_count>1</comment_count>
      <attachid>196580</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-04-04 23:14:36 -0700</bug_when>
    <thetext>Created attachment 196580
cleanup</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>869576</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-04-04 23:19:31 -0700</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>869583</commentid>
    <comment_count>3</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-04-04 23:38:07 -0700</bug_when>
    <thetext>Committed r147712: &lt;http://trac.webkit.org/changeset/147712&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>196580</attachid>
            <date>2013-04-04 23:14:36 -0700</date>
            <delta_ts>2013-04-04 23:17:29 -0700</delta_ts>
            <desc>cleanup</desc>
            <filename>bug-113999-20130404231424.patch</filename>
            <type>text/plain</type>
            <size>556291</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDE0Nzcx
MCkKKysrIENoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDEzLTA0
LTA0ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFJlbW92ZSB0
aGUgdG9wIGxldmVsIGd5cCBkaXJlY3RvcnkgYW5kIFBsYXRmb3JtL2Nocm9taXVtCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTM5OTkKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNvdXJjZS9QbGF0Zm9y
bTogUmVtb3ZlZC4KKyAgICAgICAgKiBTb3VyY2UvZ3lwOiBSZW1vdmVkLgorCiAyMDEzLTA0LTA0
ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CiAKICAgICAgICAgTml4ZWQgdGhl
IGRlZnVuY3QgY2hyb21pdW0gZm9sZGVyIGZyb20gTWFudWFsVGVzdHMKSW5kZXg6IFNvdXJjZS9Q
bGF0Zm9ybS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1BsYXRmb3JtL0NoYW5nZUxv
ZwkocmV2aXNpb24gMTQ3NzEwKQorKysgU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE2OSBAQAorMjAxMy0wNC0wNCAgUnlvc3VrZSBOaXdhICA8cm5p
d2FAd2Via2l0Lm9yZz4KKworICAgICAgICBSZW1vdmUgdGhlIHRvcCBsZXZlbCBneXAgZGlyZWN0
b3J5IGFuZCBQbGF0Zm9ybS9jaHJvbWl1bQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTEzOTk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBQbGF0Zm9ybS5neXA6IFJlbW92ZWQuCisgICAgICAgICogUGxh
dGZvcm0uZ3lwLy5naXRpZ25vcmU6IFJlbW92ZWQuCisgICAgICAgICogUGxhdGZvcm0uZ3lwL1Bs
YXRmb3JtLmd5cDogUmVtb3ZlZC4KKyAgICAgICAgKiBQbGF0Zm9ybS5neXBpOiBSZW1vdmVkLgor
ICAgICAgICAqIGNocm9taXVtOiBSZW1vdmVkLgorICAgICAgICAqIGNocm9taXVtL3B1YmxpYzog
UmVtb3ZlZC4KKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvUGxhdGZvcm0uaDogUmVtb3ZlZC4K
KyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvV2ViQW5pbWF0aW9uLmg6IFJlbW92ZWQuCisgICAg
ICAgICogY2hyb21pdW0vcHVibGljL1dlYkFuaW1hdGlvbkN1cnZlLmg6IFJlbW92ZWQuCisgICAg
ICAgICogY2hyb21pdW0vcHVibGljL1dlYkFuaW1hdGlvbkRlbGVnYXRlLmg6IFJlbW92ZWQuCisg
ICAgICAgICogY2hyb21pdW0vcHVibGljL1dlYkF1ZGlvQnVzLmg6IFJlbW92ZWQuCisgICAgICAg
ICogY2hyb21pdW0vcHVibGljL1dlYkF1ZGlvRGVzdGluYXRpb25Db25zdW1lci5oOiBSZW1vdmVk
LgorICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJBdWRpb0RldmljZS5oOiBSZW1vdmVkLgor
ICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJCbG9iRGF0YS5oOiBSZW1vdmVkLgorICAgICAg
ICAqIGNocm9taXVtL3B1YmxpYy9XZWJCbG9iUmVnaXN0cnkuaDogUmVtb3ZlZC4KKyAgICAgICAg
KiBjaHJvbWl1bS9wdWJsaWMvV2ViQ1N0cmluZy5oOiBSZW1vdmVkLgorICAgICAgICAqIGNocm9t
aXVtL3B1YmxpYy9XZWJDYW52YXMuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBjaHJvbWl1bS9wdWJs
aWMvV2ViQ2xpcGJvYXJkLmg6IFJlbW92ZWQuCisgICAgICAgICogY2hyb21pdW0vcHVibGljL1dl
YkNvbG9yLmg6IFJlbW92ZWQuCisgICAgICAgICogY2hyb21pdW0vcHVibGljL1dlYkNvbW1vbi5o
OiBSZW1vdmVkLgorICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJDb21wb3NpdG9yT3V0cHV0
U3VyZmFjZS5oOiBSZW1vdmVkLgorICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJDb21wb3Np
dG9yU3VwcG9ydC5oOiBSZW1vdmVkLgorICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJDb250
ZW50TGF5ZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvV2ViQ29udGVu
dExheWVyQ2xpZW50Lmg6IFJlbW92ZWQuCisgICAgICAgICogY2hyb21pdW0vcHVibGljL1dlYkNv
b2tpZS5oOiBSZW1vdmVkLgorICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJDb29raWVKYXIu
aDogUmVtb3ZlZC4KKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvV2ViRGF0YS5oOiBSZW1vdmVk
LgorICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJEaXNjYXJkYWJsZU1lbW9yeS5oOiBSZW1v
dmVkLgorICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJEcmFnRGF0YS5oOiBSZW1vdmVkLgor
ICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJFeHRlcm5hbFRleHR1cmVMYXllci5oOiBSZW1v
dmVkLgorICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJFeHRlcm5hbFRleHR1cmVMYXllckNs
aWVudC5oOiBSZW1vdmVkLgorICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJGaWxlRXJyb3Iu
aDogUmVtb3ZlZC4KKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvV2ViRmlsZUluZm8uaDogUmVt
b3ZlZC4KKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvV2ViRmlsZVN5c3RlbS5oOiBSZW1vdmVk
LgorICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJGaWxlU3lzdGVtQ2FsbGJhY2tzLmg6IFJl
bW92ZWQuCisgICAgICAgICogY2hyb21pdW0vcHVibGljL1dlYkZpbGVTeXN0ZW1FbnRyeS5oOiBS
ZW1vdmVkLgorICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJGaWxlU3lzdGVtVHlwZS5oOiBS
ZW1vdmVkLgorICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJGaWxlVXRpbGl0aWVzLmg6IFJl
bW92ZWQuCisgICAgICAgICogY2hyb21pdW0vcHVibGljL1dlYkZpbHRlck9wZXJhdGlvbi5oOiBS
ZW1vdmVkLgorICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJGaWx0ZXJPcGVyYXRpb25zLmg6
IFJlbW92ZWQuCisgICAgICAgICogY2hyb21pdW0vcHVibGljL1dlYkZsaW5nQW5pbWF0b3IuaDog
UmVtb3ZlZC4KKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvV2ViRmxvYXRBbmltYXRpb25DdXJ2
ZS5oOiBSZW1vdmVkLgorICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJGbG9hdEtleWZyYW1l
Lmg6IFJlbW92ZWQuCisgICAgICAgICogY2hyb21pdW0vcHVibGljL1dlYkZsb2F0UG9pbnQuaDog
UmVtb3ZlZC4KKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvV2ViRmxvYXRRdWFkLmg6IFJlbW92
ZWQuCisgICAgICAgICogY2hyb21pdW0vcHVibGljL1dlYkZsb2F0UmVjdC5oOiBSZW1vdmVkLgor
ICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJGbG9hdFNpemUuaDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBjaHJvbWl1bS9wdWJsaWMvV2ViR2FtZXBhZC5oOiBSZW1vdmVkLgorICAgICAgICAqIGNo
cm9taXVtL3B1YmxpYy9XZWJHYW1lcGFkcy5oOiBSZW1vdmVkLgorICAgICAgICAqIGNocm9taXVt
L3B1YmxpYy9XZWJHZXN0dXJlQ3VydmUuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBjaHJvbWl1bS9w
dWJsaWMvV2ViR2VzdHVyZUN1cnZlVGFyZ2V0Lmg6IFJlbW92ZWQuCisgICAgICAgICogY2hyb21p
dW0vcHVibGljL1dlYkdyYXBoaWNzQ29udGV4dDNELmg6IFJlbW92ZWQuCisgICAgICAgICogY2hy
b21pdW0vcHVibGljL1dlYkdyYXBoaWNzTWVtb3J5QWxsb2NhdGlvbi5oOiBSZW1vdmVkLgorICAg
ICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJHcmFwaGljc01lbW9yeVN0YXRzLmg6IFJlbW92ZWQu
CisgICAgICAgICogY2hyb21pdW0vcHVibGljL1dlYkhUVFBCb2R5Lmg6IFJlbW92ZWQuCisgICAg
ICAgICogY2hyb21pdW0vcHVibGljL1dlYkhUVFBIZWFkZXJWaXNpdG9yLmg6IFJlbW92ZWQuCisg
ICAgICAgICogY2hyb21pdW0vcHVibGljL1dlYkhUVFBMb2FkSW5mby5oOiBSZW1vdmVkLgorICAg
ICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJIeXBoZW5hdG9yLmg6IFJlbW92ZWQuCisgICAgICAg
ICogY2hyb21pdW0vcHVibGljL1dlYkltYWdlLmg6IFJlbW92ZWQuCisgICAgICAgICogY2hyb21p
dW0vcHVibGljL1dlYkltYWdlTGF5ZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBjaHJvbWl1bS9w
dWJsaWMvV2ViSW5wdXRIYW5kbGVyLmg6IFJlbW92ZWQuCisgICAgICAgICogY2hyb21pdW0vcHVi
bGljL1dlYklucHV0SGFuZGxlckNsaWVudC5oOiBSZW1vdmVkLgorICAgICAgICAqIGNocm9taXVt
L3B1YmxpYy9XZWJMYXllci5oOiBSZW1vdmVkLgorICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9X
ZWJMYXllclBvc2l0aW9uQ29uc3RyYWludC5oOiBSZW1vdmVkLgorICAgICAgICAqIGNocm9taXVt
L3B1YmxpYy9XZWJMYXllclNjcm9sbENsaWVudC5oOiBSZW1vdmVkLgorICAgICAgICAqIGNocm9t
aXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3Lmg6IFJlbW92ZWQuCisgICAgICAgICogY2hyb21p
dW0vcHVibGljL1dlYkxvY2FsaXplZFN0cmluZy5oOiBSZW1vdmVkLgorICAgICAgICAqIGNocm9t
aXVtL3B1YmxpYy9XZWJNZWRpYUNvbnN0cmFpbnRzLmg6IFJlbW92ZWQuCisgICAgICAgICogY2hy
b21pdW0vcHVibGljL1dlYk1lZGlhU3RyZWFtLmg6IFJlbW92ZWQuCisgICAgICAgICogY2hyb21p
dW0vcHVibGljL1dlYk1lZGlhU3RyZWFtQ2VudGVyLmg6IFJlbW92ZWQuCisgICAgICAgICogY2hy
b21pdW0vcHVibGljL1dlYk1lZGlhU3RyZWFtQ2VudGVyQ2xpZW50Lmg6IFJlbW92ZWQuCisgICAg
ICAgICogY2hyb21pdW0vcHVibGljL1dlYk1lZGlhU3RyZWFtU291cmNlLmg6IFJlbW92ZWQuCisg
ICAgICAgICogY2hyb21pdW0vcHVibGljL1dlYk1lZGlhU3RyZWFtU291cmNlc1JlcXVlc3QuaDog
UmVtb3ZlZC4KKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvV2ViTWVkaWFTdHJlYW1UcmFjay5o
OiBSZW1vdmVkLgorICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJNZXNzYWdlUG9ydENoYW5u
ZWwuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvV2ViTWVzc2FnZVBvcnRD
aGFubmVsQ2xpZW50Lmg6IFJlbW92ZWQuCisgICAgICAgICogY2hyb21pdW0vcHVibGljL1dlYk1p
bWVSZWdpc3RyeS5oOiBSZW1vdmVkLgorICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJOb25D
b3B5YWJsZS5oOiBSZW1vdmVkLgorICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJQbHVnaW5M
aXN0QnVpbGRlci5oOiBSZW1vdmVkLgorICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJQb2lu
dC5oOiBSZW1vdmVkLgorICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJQcmVyZW5kZXIuaDog
UmVtb3ZlZC4KKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvV2ViUHJlcmVuZGVyaW5nU3VwcG9y
dC5oOiBSZW1vdmVkLgorICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJQcml2YXRlT3duUHRy
Lmg6IFJlbW92ZWQuCisgICAgICAgICogY2hyb21pdW0vcHVibGljL1dlYlByaXZhdGVQdHIuaDog
UmVtb3ZlZC4KKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvV2ViUlRDQ29uZmlndXJhdGlvbi5o
OiBSZW1vdmVkLgorICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJSVENEVE1GU2VuZGVySGFu
ZGxlci5oOiBSZW1vdmVkLgorICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJSVENEVE1GU2Vu
ZGVySGFuZGxlckNsaWVudC5oOiBSZW1vdmVkLgorICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9X
ZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBjaHJvbWl1bS9w
dWJsaWMvV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50Lmg6IFJlbW92ZWQuCisgICAgICAg
ICogY2hyb21pdW0vcHVibGljL1dlYlJUQ0lDRUNhbmRpZGF0ZS5oOiBSZW1vdmVkLgorICAgICAg
ICAqIGNocm9taXVtL3B1YmxpYy9XZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVy
Q2xpZW50Lmg6IFJlbW92ZWQuCisgICAgICAgICogY2hyb21pdW0vcHVibGljL1dlYlJUQ1Nlc3Np
b25EZXNjcmlwdGlvbi5oOiBSZW1vdmVkLgorICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJS
VENTZXNzaW9uRGVzY3JpcHRpb25SZXF1ZXN0Lmg6IFJlbW92ZWQuCisgICAgICAgICogY2hyb21p
dW0vcHVibGljL1dlYlJUQ1N0YXRzUmVxdWVzdC5oOiBSZW1vdmVkLgorICAgICAgICAqIGNocm9t
aXVtL3B1YmxpYy9XZWJSVENTdGF0c1Jlc3BvbnNlLmg6IFJlbW92ZWQuCisgICAgICAgICogY2hy
b21pdW0vcHVibGljL1dlYlJUQ1ZvaWRSZXF1ZXN0Lmg6IFJlbW92ZWQuCisgICAgICAgICogY2hy
b21pdW0vcHVibGljL1dlYlJlY3QuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBjaHJvbWl1bS9wdWJs
aWMvV2ViUmVmZXJyZXJQb2xpY3kuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBjaHJvbWl1bS9wdWJs
aWMvV2ViUmVuZGVyaW5nU3RhdHMuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBjaHJvbWl1bS9wdWJs
aWMvV2ViU2NyZWVuSW5mby5oOiBSZW1vdmVkLgorICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9X
ZWJTY3JvbGxiYXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvV2ViU2Ny
b2xsYmFyTGF5ZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvV2ViU2Ny
b2xsYmFyVGhlbWVHZW9tZXRyeS5oOiBSZW1vdmVkLgorICAgICAgICAqIGNocm9taXVtL3B1Ymxp
Yy9XZWJTY3JvbGxiYXJUaGVtZVBhaW50ZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBjaHJvbWl1
bS9wdWJsaWMvV2ViU2l6ZS5oOiBSZW1vdmVkLgorICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9X
ZWJTb2NrZXRTdHJlYW1FcnJvci5oOiBSZW1vdmVkLgorICAgICAgICAqIGNocm9taXVtL3B1Ymxp
Yy9XZWJTb2NrZXRTdHJlYW1IYW5kbGUuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBjaHJvbWl1bS9w
dWJsaWMvV2ViU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50Lmg6IFJlbW92ZWQuCisgICAgICAgICog
Y2hyb21pdW0vcHVibGljL1dlYlNvbGlkQ29sb3JMYXllci5oOiBSZW1vdmVkLgorICAgICAgICAq
IGNocm9taXVtL3B1YmxpYy9XZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuaDogUmVtb3ZlZC4K
KyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoU3ludGhlc2lzVm9pY2UuaDogUmVt
b3ZlZC4KKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoU3ludGhlc2l6ZXIuaDog
UmVtb3ZlZC4KKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoU3ludGhlc2l6ZXJD
bGllbnQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvV2ViU3RvcmFnZUFy
ZWEuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvV2ViU3RvcmFnZU5hbWVz
cGFjZS5oOiBSZW1vdmVkLgorICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJTdHJpbmcuaDog
UmVtb3ZlZC4KKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvV2ViVGhyZWFkLmg6IFJlbW92ZWQu
CisgICAgICAgICogY2hyb21pdW0vcHVibGljL1dlYlRocmVhZFNhZmVEYXRhLmg6IFJlbW92ZWQu
CisgICAgICAgICogY2hyb21pdW0vcHVibGljL1dlYlRyYW5zZm9ybUFuaW1hdGlvbkN1cnZlLmg6
IFJlbW92ZWQuCisgICAgICAgICogY2hyb21pdW0vcHVibGljL1dlYlRyYW5zZm9ybUtleWZyYW1l
Lmg6IFJlbW92ZWQuCisgICAgICAgICogY2hyb21pdW0vcHVibGljL1dlYlRyYW5zZm9ybU9wZXJh
dGlvbnMuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvV2ViVVJMLmg6IFJl
bW92ZWQuCisgICAgICAgICogY2hyb21pdW0vcHVibGljL1dlYlVSTEVycm9yLmg6IFJlbW92ZWQu
CisgICAgICAgICogY2hyb21pdW0vcHVibGljL1dlYlVSTExvYWRUaW1pbmcuaDogUmVtb3ZlZC4K
KyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvV2ViVVJMTG9hZGVyLmg6IFJlbW92ZWQuCisgICAg
ICAgICogY2hyb21pdW0vcHVibGljL1dlYlVSTExvYWRlckNsaWVudC5oOiBSZW1vdmVkLgorICAg
ICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJVUkxSZXF1ZXN0Lmg6IFJlbW92ZWQuCisgICAgICAg
ICogY2hyb21pdW0vcHVibGljL1dlYlVSTFJlc3BvbnNlLmg6IFJlbW92ZWQuCisgICAgICAgICog
Y2hyb21pdW0vcHVibGljL1dlYlVuaXRUZXN0U3VwcG9ydC5oOiBSZW1vdmVkLgorICAgICAgICAq
IGNocm9taXVtL3B1YmxpYy9XZWJWZWN0b3IuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBjaHJvbWl1
bS9wdWJsaWMvV2ViV29ya2VyUnVuTG9vcC5oOiBSZW1vdmVkLgorICAgICAgICAqIGNocm9taXVt
L3B1YmxpYy9hbmRyb2lkOiBSZW1vdmVkLgorICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9hbmRy
b2lkL1dlYlNhbmRib3hTdXBwb3J0Lmg6IFJlbW92ZWQuCisgICAgICAgICogY2hyb21pdW0vcHVi
bGljL2FuZHJvaWQvV2ViVGhlbWVFbmdpbmUuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBjaHJvbWl1
bS9wdWJsaWMvZGVmYXVsdDogUmVtb3ZlZC4KKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvZGVm
YXVsdC9XZWJUaGVtZUVuZ2luZS5oOiBSZW1vdmVkLgorICAgICAgICAqIGNocm9taXVtL3B1Ymxp
Yy9saW51eDogUmVtb3ZlZC4KKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvbGludXgvV2ViRm9u
dEZhbWlseS5oOiBSZW1vdmVkLgorICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9saW51eC9XZWJG
b250SW5mby5oOiBSZW1vdmVkLgorICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9saW51eC9XZWJG
b250UmVuZGVyU3R5bGUuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvbGlu
dXgvV2ViU2FuZGJveFN1cHBvcnQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBjaHJvbWl1bS9wdWJs
aWMvbWFjOiBSZW1vdmVkLgorICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9tYWMvV2ViU2FuZGJv
eFN1cHBvcnQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvbWFjL1dlYlRo
ZW1lRW5naW5lLmg6IFJlbW92ZWQuCisgICAgICAgICogY2hyb21pdW0vcHVibGljL3dpbjogUmVt
b3ZlZC4KKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvd2luL1dlYlNhbmRib3hTdXBwb3J0Lmg6
IFJlbW92ZWQuCisgICAgICAgICogY2hyb21pdW0vcHVibGljL3dpbi9XZWJUaGVtZUVuZ2luZS5o
OiBSZW1vdmVkLgorICAgICAgICAqIGNocm9taXVtL3NyYzogUmVtb3ZlZC4KKyAgICAgICAgKiBj
aHJvbWl1bS9zcmMvUGxhdGZvcm0uY3BwOiBSZW1vdmVkLgorICAgICAgICAqIGNocm9taXVtL3Ny
Yy9XZWJBY3RpdmVHZXN0dXJlQW5pbWF0aW9uLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBjaHJv
bWl1bS9zcmMvV2ViQWN0aXZlR2VzdHVyZUFuaW1hdGlvbi5oOiBSZW1vdmVkLgorICAgICAgICAq
IGNocm9taXVtL3NyYy9XZWJDU3RyaW5nLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBjaHJvbWl1
bS9zcmMvV2ViRmlsdGVyT3BlcmF0aW9uLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBjaHJvbWl1
bS9zcmMvV2ViRmlsdGVyT3BlcmF0aW9ucy5jcHA6IFJlbW92ZWQuCisgICAgICAgICogY2hyb21p
dW0vc3JjL1dlYkZsb2F0UXVhZC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogY2hyb21pdW0vc3Jj
L1dlYlByZXJlbmRlcmluZ1N1cHBvcnQuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIGNocm9taXVt
L3NyYy9XZWJTdHJpbmcuY3BwOiBSZW1vdmVkLgorCiAyMDEzLTA0LTAyICBEYW5hIEphbnNlbnMg
IDxkYW5ha2pAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gSW5pdGlhbGl6ZSBh
bGwgZmllbGRzIGluIFdlYkZpbHRlck9wZXJhdGlvbgpJbmRleDogU291cmNlL1BsYXRmb3JtL1Bs
YXRmb3JtLmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1BsYXRmb3JtL1BsYXRmb3JtLmd5cGkJ
KHJldmlzaW9uIDE0NzcxMCkKKysrIFNvdXJjZS9QbGF0Zm9ybS9QbGF0Zm9ybS5neXBpCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDE3NiArMCwwIEBACi0jCi0jIENvcHlyaWdodCAoQykgMjAxMSBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQotIyBtZXQ6Ci0jCi0jICAgICAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0j
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0j
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAot
IyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSMKLQotewotICAgICd2YXJpYWJsZXMnOiB7Ci0gICAgICAgICdwbGF0Zm9ybV9maWxlcyc6
IFsKLSAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvUGxhdGZvcm0uaCcsCi0gICAgICAgICAg
ICAnY2hyb21pdW0vcHVibGljL1dlYkFuaW1hdGlvbi5oJywKLSAgICAgICAgICAgICdjaHJvbWl1
bS9wdWJsaWMvV2ViQW5pbWF0aW9uQ3VydmUuaCcsCi0gICAgICAgICAgICAnY2hyb21pdW0vcHVi
bGljL1dlYkFuaW1hdGlvbkRlbGVnYXRlLmgnLAotICAgICAgICAgICAgJ2Nocm9taXVtL3B1Ymxp
Yy9XZWJBdWRpb0J1cy5oJywKLSAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViQXVkaW9E
ZXZpY2UuaCcsCi0gICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYkJsb2JEYXRhLmgnLAot
ICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJCbG9iUmVnaXN0cnkuaCcsCi0gICAgICAg
ICAgICAnY2hyb21pdW0vcHVibGljL1dlYkNTdHJpbmcuaCcsCi0gICAgICAgICAgICAnY2hyb21p
dW0vcHVibGljL1dlYkNhbnZhcy5oJywKLSAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2Vi
Q2xpcGJvYXJkLmgnLAotICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJDb2xvci5oJywK
LSAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViQ29tbW9uLmgnLAotICAgICAgICAgICAg
J2Nocm9taXVtL3B1YmxpYy9XZWJDb21wb3NpdG9yU3VwcG9ydC5oJywKLSAgICAgICAgICAgICdj
aHJvbWl1bS9wdWJsaWMvV2ViQ29tcG9zaXRvck91dHB1dFN1cmZhY2UuaCcsCi0gICAgICAgICAg
ICAnY2hyb21pdW0vcHVibGljL1dlYkNvbnRlbnRMYXllci5oJywKLSAgICAgICAgICAgICdjaHJv
bWl1bS9wdWJsaWMvV2ViQ29udGVudExheWVyQ2xpZW50LmgnLAotICAgICAgICAgICAgJ2Nocm9t
aXVtL3B1YmxpYy9XZWJDb29raWUuaCcsCi0gICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dl
YkNvb2tpZUphci5oJywKLSAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViRGF0YS5oJywK
LSAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViRGlzY2FyZGFibGVNZW1vcnkuaCcsCi0g
ICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYkRyYWdEYXRhLmgnLAotICAgICAgICAgICAg
J2Nocm9taXVtL3B1YmxpYy9XZWJFeHRlcm5hbFRleHR1cmVMYXllci5oJywKLSAgICAgICAgICAg
ICdjaHJvbWl1bS9wdWJsaWMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJDbGllbnQuaCcsCi0gICAg
ICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYkZpbGVFcnJvci5oJywKLSAgICAgICAgICAgICdj
aHJvbWl1bS9wdWJsaWMvV2ViRmlsZUluZm8uaCcsCi0gICAgICAgICAgICAnY2hyb21pdW0vcHVi
bGljL1dlYkZpbGVTeXN0ZW0uaCcsCi0gICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYkZp
bGVTeXN0ZW1DYWxsYmFja3MuaCcsCi0gICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYkZp
bGVTeXN0ZW1FbnRyeS5oJywKLSAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViRmlsZVN5
c3RlbVR5cGUuaCcsCi0gICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYkZpbGVVdGlsaXRp
ZXMuaCcsCi0gICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYkZpbHRlck9wZXJhdGlvbi5o
JywKLSAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViRmlsdGVyT3BlcmF0aW9ucy5oJywK
LSAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViRmxpbmdBbmltYXRvci5oJywKLSAgICAg
ICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViRmxvYXRBbmltYXRpb25DdXJ2ZS5oJywKLSAgICAg
ICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViRmxvYXRLZXlmcmFtZS5oJywKLSAgICAgICAgICAg
ICdjaHJvbWl1bS9wdWJsaWMvV2ViRmxvYXRQb2ludC5oJywKLSAgICAgICAgICAgICdjaHJvbWl1
bS9wdWJsaWMvV2ViRmxvYXRRdWFkLmgnLAotICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9X
ZWJGbG9hdFNpemUuaCcsCi0gICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYkZsb2F0UmVj
dC5oJywKLSAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViR2FtZXBhZC5oJywKLSAgICAg
ICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViR2FtZXBhZHMuaCcsCi0gICAgICAgICAgICAnY2hy
b21pdW0vcHVibGljL1dlYkdlc3R1cmVDdXJ2ZVRhcmdldC5oJywKLSAgICAgICAgICAgICdjaHJv
bWl1bS9wdWJsaWMvV2ViR2VzdHVyZUN1cnZlLmgnLAotICAgICAgICAgICAgJ2Nocm9taXVtL3B1
YmxpYy9XZWJHcmFwaGljc0NvbnRleHQzRC5oJywKLSAgICAgICAgICAgICdjaHJvbWl1bS9wdWJs
aWMvV2ViSFRUUEJvZHkuaCcsCi0gICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYkhUVFBI
ZWFkZXJWaXNpdG9yLmgnLAotICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJIVFRQTG9h
ZEluZm8uaCcsCi0gICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYkh5cGhlbmF0b3IuaCcs
Ci0gICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYkltYWdlLmgnLAotICAgICAgICAgICAg
J2Nocm9taXVtL3B1YmxpYy9XZWJJbWFnZUxheWVyLmgnLAotICAgICAgICAgICAgJ2Nocm9taXVt
L3B1YmxpYy9XZWJMYXllci5oJywKLSAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViTGF5
ZXJQb3NpdGlvbkNvbnN0cmFpbnQuaCcsCi0gICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dl
YkxheWVyU2Nyb2xsQ2xpZW50LmgnLAotICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJM
YXllclRyZWVWaWV3LmgnLAotICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJMb2NhbGl6
ZWRTdHJpbmcuaCcsCi0gICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYk1lZGlhQ29uc3Ry
YWludHMuaCcsCi0gICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYk1lZGlhU3RyZWFtQ2Vu
dGVyLmgnLAotICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJNZWRpYVN0cmVhbUNlbnRl
ckNsaWVudC5oJywKLSAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViTWVkaWFTdHJlYW0u
aCcsCi0gICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYk1lZGlhU3RyZWFtU291cmNlLmgn
LAotICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJNZWRpYVN0cmVhbVNvdXJjZXNSZXF1
ZXN0LmgnLAotICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJNZWRpYVN0cmVhbVRyYWNr
LmgnLAotICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJNZXNzYWdlUG9ydENoYW5uZWwu
aCcsCi0gICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYk1lc3NhZ2VQb3J0Q2hhbm5lbENs
aWVudC5oJywKLSAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViTWltZVJlZ2lzdHJ5Lmgn
LAotICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJOb25Db3B5YWJsZS5oJywKLSAgICAg
ICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViUGx1Z2luTGlzdEJ1aWxkZXIuaCcsCi0gICAgICAg
ICAgICAnY2hyb21pdW0vcHVibGljL1dlYlBvaW50LmgnLAotICAgICAgICAgICAgJ2Nocm9taXVt
L3B1YmxpYy9XZWJQcmVyZW5kZXIuaCcsCi0gICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dl
YlByZXJlbmRlcmluZ1N1cHBvcnQuaCcsCi0gICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dl
YlByaXZhdGVPd25QdHIuaCcsCi0gICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYlByaXZh
dGVQdHIuaCcsCi0gICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYlJUQ0NvbmZpZ3VyYXRp
b24uaCcsCi0gICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYlJUQ0RUTUZTZW5kZXJIYW5k
bGVyLmgnLAotICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJSVENEVE1GU2VuZGVySGFu
ZGxlckNsaWVudC5oJywKLSAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViUlRDRGF0YUNo
YW5uZWxIYW5kbGVyLmgnLAotICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJSVENEYXRh
Q2hhbm5lbEhhbmRsZXJDbGllbnQuaCcsCi0gICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dl
YlJUQ0lDRUNhbmRpZGF0ZS5oJywKLSAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViUlRD
UGVlckNvbm5lY3Rpb25IYW5kbGVyLmgnLAotICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9X
ZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQuaCcsCi0gICAgICAgICAgICAnY2hyb21p
dW0vcHVibGljL1dlYlJUQ1Nlc3Npb25EZXNjcmlwdGlvbi5oJywKLSAgICAgICAgICAgICdjaHJv
bWl1bS9wdWJsaWMvV2ViUlRDU2Vzc2lvbkRlc2NyaXB0aW9uUmVxdWVzdC5oJywKLSAgICAgICAg
ICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViUlRDU3RhdHNSZXF1ZXN0LmgnLAotICAgICAgICAgICAg
J2Nocm9taXVtL3B1YmxpYy9XZWJSVENTdGF0c1Jlc3BvbnNlLmgnLAotICAgICAgICAgICAgJ2No
cm9taXVtL3B1YmxpYy9XZWJSVENWb2lkUmVxdWVzdC5oJywKLSAgICAgICAgICAgICdjaHJvbWl1
bS9wdWJsaWMvV2ViUmVjdC5oJywKLSAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViUmVm
ZXJyZXJQb2xpY3kuaCcsCi0gICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYlJlbmRlcmlu
Z1N0YXRzLmgnLAotICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJTY3JlZW5JbmZvLmgn
LAotICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJTY3JvbGxiYXIuaCcsCi0gICAgICAg
ICAgICAnY2hyb21pdW0vcHVibGljL1dlYlNjcm9sbGJhckxheWVyLmgnLAotICAgICAgICAgICAg
J2Nocm9taXVtL3B1YmxpYy9XZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5LmgnLAotICAgICAgICAg
ICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJTY3JvbGxiYXJUaGVtZVBhaW50ZXIuaCcsCi0gICAgICAg
ICAgICAnY2hyb21pdW0vcHVibGljL1dlYlNpemUuaCcsCi0gICAgICAgICAgICAnY2hyb21pdW0v
cHVibGljL1dlYlNvY2tldFN0cmVhbUVycm9yLmgnLAotICAgICAgICAgICAgJ2Nocm9taXVtL3B1
YmxpYy9XZWJTb2NrZXRTdHJlYW1IYW5kbGUuaCcsCi0gICAgICAgICAgICAnY2hyb21pdW0vcHVi
bGljL1dlYlNvY2tldFN0cmVhbUhhbmRsZUNsaWVudC5oJywKLSAgICAgICAgICAgICdjaHJvbWl1
bS9wdWJsaWMvV2ViU29saWRDb2xvckxheWVyLmgnLAotICAgICAgICAgICAgJ2Nocm9taXVtL3B1
YmxpYy9XZWJTcGVlY2hTeW50aGVzaXplci5oJywKLSAgICAgICAgICAgICdjaHJvbWl1bS9wdWJs
aWMvV2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnQuaCcsCi0gICAgICAgICAgICAnY2hyb21pdW0v
cHVibGljL1dlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5oJywKLSAgICAgICAgICAgICdjaHJv
bWl1bS9wdWJsaWMvV2ViU3BlZWNoU3ludGhlc2lzVm9pY2UuaCcsCi0gICAgICAgICAgICAnY2hy
b21pdW0vcHVibGljL1dlYlN0b3JhZ2VBcmVhLmgnLAotICAgICAgICAgICAgJ2Nocm9taXVtL3B1
YmxpYy9XZWJTdG9yYWdlTmFtZXNwYWNlLmgnLAotICAgICAgICAgICAgJ2Nocm9taXVtL3B1Ymxp
Yy9XZWJTdHJpbmcuaCcsCi0gICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYlRocmVhZC5o
JywKLSAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViVGhyZWFkU2FmZURhdGEuaCcsCi0g
ICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYlRyYW5zZm9ybUFuaW1hdGlvbkN1cnZlLmgn
LAotICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJUcmFuc2Zvcm1LZXlmcmFtZS5oJywK
LSAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViVHJhbnNmb3JtT3BlcmF0aW9ucy5oJywK
LSAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViUHJlcmVuZGVyLmgnLAotICAgICAgICAg
ICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJVUkwuaCcsCi0gICAgICAgICAgICAnY2hyb21pdW0vcHVi
bGljL1dlYlVSTEVycm9yLmgnLAotICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJVUkxM
b2FkVGltaW5nLmgnLAotICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJVUkxMb2FkZXIu
aCcsCi0gICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYlVSTExvYWRlckNsaWVudC5oJywK
LSAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViVVJMUmVxdWVzdC5oJywKLSAgICAgICAg
ICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViVVJMUmVzcG9uc2UuaCcsCi0gICAgICAgICAgICAnY2hy
b21pdW0vcHVibGljL1dlYlZlY3Rvci5oJywKLSAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMv
V2ViV29ya2VyUnVuTG9vcC5oJywKLSAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvYW5kcm9p
ZC9XZWJTYW5kYm94U3VwcG9ydC5oJywKLSAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvYW5k
cm9pZC9XZWJUaGVtZUVuZ2luZS5oJywKLSAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvZGVm
YXVsdC9XZWJUaGVtZUVuZ2luZS5oJywKLSAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvbGlu
dXgvV2ViRm9udEluZm8uaCcsCi0gICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL2xpbnV4L1dl
YkZvbnRSZW5kZXJTdHlsZS5oJywKLSAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvbGludXgv
V2ViU2FuZGJveFN1cHBvcnQuaCcsCi0gICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL21hYy9X
ZWJTYW5kYm94U3VwcG9ydC5oJywKLSAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvbWFjL1dl
YlRoZW1lRW5naW5lLmgnLAotICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy93aW4vV2ViU2Fu
ZGJveFN1cHBvcnQuaCcsCi0gICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL3dpbi9XZWJUaGVt
ZUVuZ2luZS5oJywKLSAgICAgICAgICAgICdjaHJvbWl1bS9zcmMvUGxhdGZvcm0uY3BwJywKLSAg
ICAgICAgICAgICdjaHJvbWl1bS9zcmMvV2ViQWN0aXZlR2VzdHVyZUFuaW1hdGlvbi5jcHAnLAot
ICAgICAgICAgICAgJ2Nocm9taXVtL3NyYy9XZWJBY3RpdmVHZXN0dXJlQW5pbWF0aW9uLmgnLAot
ICAgICAgICAgICAgJ2Nocm9taXVtL3NyYy9XZWJDU3RyaW5nLmNwcCcsCi0gICAgICAgICAgICAn
Y2hyb21pdW0vc3JjL1dlYkZpbHRlck9wZXJhdGlvbi5jcHAnLAotICAgICAgICAgICAgJ2Nocm9t
aXVtL3NyYy9XZWJGaWx0ZXJPcGVyYXRpb25zLmNwcCcsCi0gICAgICAgICAgICAnY2hyb21pdW0v
c3JjL1dlYkZsb2F0UXVhZC5jcHAnLAotICAgICAgICAgICAgJ2Nocm9taXVtL3NyYy9XZWJQcmVy
ZW5kZXJpbmdTdXBwb3J0LmNwcCcsCi0gICAgICAgICAgICAnY2hyb21pdW0vc3JjL1dlYlN0cmlu
Zy5jcHAnLAotICAgICAgICBdCi0gICAgfQotfQpJbmRleDogU291cmNlL1BsYXRmb3JtL1BsYXRm
b3JtLmd5cC8uZ2l0aWdub3JlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9QbGF0Zm9ybS9QbGF0Zm9y
bS5neXAvLmdpdGlnbm9yZQkocmV2aXNpb24gMTQ3NzEwKQorKysgU291cmNlL1BsYXRmb3JtL1Bs
YXRmb3JtLmd5cC8uZ2l0aWdub3JlCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzAsMCBAQAotKi5N
YWtlZmlsZQotKi5tawotKi5zbG4KLSoudmNwcm9qKgotKi52Y3hwcm9qKgotKi54Y29kZXByb2oq
CkluZGV4OiBTb3VyY2UvUGxhdGZvcm0vUGxhdGZvcm0uZ3lwL1BsYXRmb3JtLmd5cAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvUGxhdGZvcm0vUGxhdGZvcm0uZ3lwL1BsYXRmb3JtLmd5cAkocmV2aXNp
b24gMTQ3NzEwKQorKysgU291cmNlL1BsYXRmb3JtL1BsYXRmb3JtLmd5cC9QbGF0Zm9ybS5neXAJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMTA1ICswLDAgQEAKLSMKLSMgQ29weXJpZ2h0IChDKSAyMDEx
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMg
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotIwotCi17Ci0gICAgJ2luY2x1ZGVzJzogWwotICAgICAgICAnLi4vLi4vV2ViS2l0
L2Nocm9taXVtL1dpblByZWNvbXBpbGUuZ3lwaScsCi0gICAgICAgICcuLi9QbGF0Zm9ybS5neXBp
JywKLSAgICBdLAotICAgICd0YXJnZXRzJzogWwotICAgICAgICB7Ci0gICAgICAgICAgICAndGFy
Z2V0X25hbWUnOiAnd2Via2l0X3BsYXRmb3JtJywKLSAgICAgICAgICAgICd0eXBlJzogJ3N0YXRp
Y19saWJyYXJ5JywKLSAgICAgICAgICAgICdkZXBlbmRlbmNpZXMnOiBbCi0gICAgICAgICAgICAg
ICAgJy4uLy4uL1dURi9XVEYuZ3lwL1dURi5neXA6d3RmJywKLSAgICAgICAgICAgICAgICAnPChE
RVBUSCkvc2tpYS9za2lhLmd5cDpza2lhJywKLSAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAn
aW5jbHVkZV9kaXJzJzogWwotICAgICAgICAgICAgICAgICcuLi9jaHJvbWl1bScsCi0gICAgICAg
ICAgICAgICAgJzwob3V0cHV0X2RpciknLAotICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICdk
ZWZpbmVzJzogWwotICAgICAgICAgICAgICAgICdXRUJLSVRfSU1QTEVNRU5UQVRJT049MScsCi0g
ICAgICAgICAgICBdLAotICAgICAgICAgICAgJ3NvdXJjZXMnOiBbCi0gICAgICAgICAgICAgICAg
JzxAKHBsYXRmb3JtX2ZpbGVzKScsCi0gICAgICAgICAgICBdLAotICAgICAgICAgICAgJ3Zhcmlh
Ymxlcyc6IHsKLSAgICAgICAgICAgICAgICAjIExpc3Qgb2YgaGVhZGVycyB0aGF0IGFyZSAjaW5j
bHVkZWQgaW4gUGxhdGZvcm0gQVBJIGhlYWRlcnMgdGhhdCBleGlzdCBpbnNpZGUKLSAgICAgICAg
ICAgICAgICAjIHRoZSBXZWJDb3JlIGRpcmVjdG9yeS4gVGhlc2UgYXJlIG9ubHkgaW5jbHVkZWQg
d2hlbiBXRUJLSVRfSU1QTEVNRU5UQVRJT049MS4KLSAgICAgICAgICAgICAgICAjIFNpbmNlIFBs
YXRmb3JtLyBjYW4ndCBhZGQgV2ViQ29yZS8qIHRvIHRoZSBpbmNsdWRlIHBhdGgsIHRoaXMgYnVp
bGQgc3RlcAotICAgICAgICAgICAgICAgICMgY29waWVzIHRoZXNlIGhlYWRlcnMgaW50byB0aGUg
c2hhcmVkIGludGVybWVkaWF0ZSBkaXJlY3RvcnkgYW5kIGFkZHMgdGhhdCB0byB0aGUgaW5jbHVk
ZSBwYXRoLgotICAgICAgICAgICAgICAgICMgVGhpcyBpcyB0ZW1wb3JhcnksIHRoZSBiZXR0ZXIg
c29sdXRpb24gaXMgdG8gbW92ZSB0aGVzZSBoZWFkZXJzIGludG8gdGhlIFBsYXRmb3JtCi0gICAg
ICAgICAgICAgICAgIyBkaXJlY3RvcnkgZm9yIGFsbCBwb3J0cyBhbmQganVzdCB1c2UgdGhlbSBh
cyBub3JtYWwuCi0gICAgICAgICAgICAgICAgJ3dlYmNvcmVfaGVhZGVycyc6IFsKLSAgICAgICAg
ICAgICAgICAgICAgJy4uLy4uL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRQb2ludC5o
JywKLSAgICAgICAgICAgICAgICAgICAgJy4uLy4uL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
RmxvYXRQb2ludDNELmgnLAotICAgICAgICAgICAgICAgICAgICAnLi4vLi4vV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9GbG9hdFF1YWQuaCcsCi0gICAgICAgICAgICAgICAgICAgICcuLi8uLi9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UmVjdC5oJywKLSAgICAgICAgICAgICAgICAg
ICAgJy4uLy4uL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRTaXplLmgnLAotICAgICAg
ICAgICAgICAgICAgICAnLi4vLi4vV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRQb2ludC5o
JywKLSAgICAgICAgICAgICAgICAgICAgJy4uLy4uL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW50UmVjdC5oJywKLSAgICAgICAgICAgICAgICAgICAgJy4uLy4uL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW50U2l6ZS5oJywKLSAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAg
ICdvdXRwdXRfZGlyJzogJzwoU0hBUkVEX0lOVEVSTUVESUFURV9ESVIpL3dlYmNvcmVfaGVhZGVy
cycKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnZGlyZWN0X2RlcGVuZGVudF9zZXR0aW5n
cyc6IHsKLSAgICAgICAgICAgICAgICAnaW5jbHVkZV9kaXJzJzogWwotICAgICAgICAgICAgICAg
ICAgICAnLi4vY2hyb21pdW0nLAotICAgICAgICAgICAgICAgICAgICAnPChvdXRwdXRfZGlyKScK
LSAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICdjb25kaXRp
b25zJzogWwotICAgICAgICAgICAgICAgIFsnaW5zaWRlX2Nocm9taXVtX2J1aWxkPT0xJywgewot
ICAgICAgICAgICAgICAgICAgICAnY29uZGl0aW9ucyc6IFsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIFsnY29tcG9uZW50PT0ic2hhcmVkX2xpYnJhcnkiJywgewotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICdkZWZpbmVzJzogWwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn
V0VCS0lUX0RMTCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgIH1dLAotICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAg
IH1dLAotICAgICAgICAgICAgICAgIFsnT1M9PSJ3aW4iJywgewotICAgICAgICAgICAgICAgICAg
ICAjIERpc2FibGUgYzQyNjcgd2FybmluZ3MgdW50aWwgd2UgZml4IHNpemVfdCB0byBpbnQgdHJ1
bmNhdGlvbnMuCi0gICAgICAgICAgICAgICAgICAgICdtc3ZzX2Rpc2FibGVkX3dhcm5pbmdzJzog
WzQyNjcsIF0sCi0gICAgICAgICAgICAgICAgfV0sCi0gICAgICAgICAgICBdLAotICAgICAgICAg
ICAgJ2NvcGllcyc6IFsKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICdk
ZXN0aW5hdGlvbic6ICc8KG91dHB1dF9kaXIpJywKLSAgICAgICAgICAgICAgICAgICAgJ2ZpbGVz
JzogWwotICAgICAgICAgICAgICAgICAgICAgICAgJzxAKHdlYmNvcmVfaGVhZGVycyknCi0gICAg
ICAgICAgICAgICAgICAgIF0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBdCi0gICAg
ICAgIH0KLSAgICBdCi19Ci0KSW5kZXg6IFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMv
UGxhdGZvcm0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGlj
L1BsYXRmb3JtLmgJKHJldmlzaW9uIDE0NzcxMCkKKysrIFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1
bS9wdWJsaWMvUGxhdGZvcm0uaAkod29ya2luZyBjb3B5KQpAQCAtMSw1MjAgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBk
aXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
Ci0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5k
ZWYgUGxhdGZvcm1faAotI2RlZmluZSBQbGF0Zm9ybV9oCi0KLSNpZmRlZiBXSU4zMgotI2luY2x1
ZGUgPHdpbmRvd3MuaD4KLSNlbmRpZgotCi0jaW5jbHVkZSAiV2ViQXVkaW9EZXZpY2UuaCIKLSNp
bmNsdWRlICJXZWJDb21tb24uaCIKLSNpbmNsdWRlICJXZWJEYXRhLmgiCi0jaW5jbHVkZSAiV2Vi
R2FtZXBhZHMuaCIKLSNpbmNsdWRlICJXZWJHcmFwaGljc0NvbnRleHQzRC5oIgotI2luY2x1ZGUg
IldlYkxvY2FsaXplZFN0cmluZy5oIgotI2luY2x1ZGUgIldlYlNwZWVjaFN5bnRoZXNpemVyLmgi
Ci0jaW5jbHVkZSAiV2ViU3RyaW5nLmgiCi0jaW5jbHVkZSAiV2ViVmVjdG9yLmgiCi0KLWNsYXNz
IEdyQ29udGV4dDsKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIFdlYkF1ZGlvQnVzOwot
Y2xhc3MgV2ViQmxvYlJlZ2lzdHJ5OwotY2xhc3MgV2ViQ2xpcGJvYXJkOwotY2xhc3MgV2ViQ29t
cG9zaXRvclN1cHBvcnQ7Ci1jbGFzcyBXZWJDb29raWVKYXI7Ci1jbGFzcyBXZWJEaXNjYXJkYWJs
ZU1lbW9yeTsKLWNsYXNzIFdlYkZpbGVTeXN0ZW07Ci1jbGFzcyBXZWJGaWxlVXRpbGl0aWVzOwot
Y2xhc3MgV2ViRmxpbmdBbmltYXRvcjsKLWNsYXNzIFdlYkdlc3R1cmVDdXJ2ZVRhcmdldDsKLWNs
YXNzIFdlYkdlc3R1cmVDdXJ2ZTsKLWNsYXNzIFdlYkh5cGhlbmF0b3I7Ci1jbGFzcyBXZWJNZWRp
YVN0cmVhbUNlbnRlcjsKLWNsYXNzIFdlYk1lZGlhU3RyZWFtQ2VudGVyQ2xpZW50OwotY2xhc3Mg
V2ViTWVzc2FnZVBvcnRDaGFubmVsOwotY2xhc3MgV2ViTWltZVJlZ2lzdHJ5OwotY2xhc3MgV2Vi
UGx1Z2luTGlzdEJ1aWxkZXI7Ci1jbGFzcyBXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI7Ci1j
bGFzcyBXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQ7Ci1jbGFzcyBXZWJTYW5kYm94
U3VwcG9ydDsKLWNsYXNzIFdlYlNvY2tldFN0cmVhbUhhbmRsZTsKLWNsYXNzIFdlYlNwZWVjaFN5
bnRoZXNpemVyOwotY2xhc3MgV2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnQ7Ci1jbGFzcyBXZWJT
dG9yYWdlTmFtZXNwYWNlOwotY2xhc3MgV2ViVW5pdFRlc3RTdXBwb3J0OwotY2xhc3MgV2ViVGhl
bWVFbmdpbmU7Ci1jbGFzcyBXZWJUaHJlYWQ7Ci1jbGFzcyBXZWJVUkw7Ci1jbGFzcyBXZWJVUkxM
b2FkZXI7Ci1jbGFzcyBXZWJXb3JrZXJSdW5Mb29wOwotc3RydWN0IFdlYkZsb2F0UG9pbnQ7Ci1z
dHJ1Y3QgV2ViTG9jYWxpemVkU3RyaW5nOwotc3RydWN0IFdlYlNpemU7Ci0KLWNsYXNzIFBsYXRm
b3JtIHsKLXB1YmxpYzoKLSAgICAvLyBIVE1MNSBEYXRhYmFzZSAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotI2lmZGVmIFdJTjMyCi0gICAg
dHlwZWRlZiBIQU5ETEUgRmlsZUhhbmRsZTsKLSNlbHNlCi0gICAgdHlwZWRlZiBpbnQgRmlsZUhh
bmRsZTsKLSNlbmRpZgotCi0gICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgdm9pZCBpbml0aWFsaXpl
KFBsYXRmb3JtKik7Ci0gICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgdm9pZCBzaHV0ZG93bigpOwot
ICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIFBsYXRmb3JtKiBjdXJyZW50KCk7Ci0KLSAgICAvLyBN
YXkgcmV0dXJuIG51bGwuCi0gICAgdmlydHVhbCBXZWJDb29raWVKYXIqIGNvb2tpZUphcigpIHsg
cmV0dXJuIDA7IH0KLQotICAgIC8vIE11c3QgcmV0dXJuIG5vbi1udWxsLgotICAgIHZpcnR1YWwg
V2ViQ2xpcGJvYXJkKiBjbGlwYm9hcmQoKSB7IHJldHVybiAwOyB9Ci0KLSAgICAvLyBNdXN0IHJl
dHVybiBub24tbnVsbC4KLSAgICB2aXJ0dWFsIFdlYkZpbGVVdGlsaXRpZXMqIGZpbGVVdGlsaXRp
ZXMoKSB7IHJldHVybiAwOyB9Ci0KLSAgICAvLyBNdXN0IHJldHVybiBub24tbnVsbC4KLSAgICB2
aXJ0dWFsIFdlYk1pbWVSZWdpc3RyeSogbWltZVJlZ2lzdHJ5KCkgeyByZXR1cm4gMDsgfQotCi0g
ICAgLy8gTWF5IHJldHVybiBudWxsIGlmIHNhbmRib3ggc3VwcG9ydCBpcyBub3QgbmVjZXNzYXJ5
Ci0gICAgdmlydHVhbCBXZWJTYW5kYm94U3VwcG9ydCogc2FuZGJveFN1cHBvcnQoKSB7IHJldHVy
biAwOyB9Ci0KLSAgICAvLyBNYXkgcmV0dXJuIG51bGwgb24gc29tZSBwbGF0Zm9ybXMuCi0gICAg
dmlydHVhbCBXZWJUaGVtZUVuZ2luZSogdGhlbWVFbmdpbmUoKSB7IHJldHVybiAwOyB9Ci0KLSAg
ICAvLyBNdXN0IHJldHVybiBub24tbnVsbC4KLSAgICB2aXJ0dWFsIFdlYkh5cGhlbmF0b3IqIGh5
cGhlbmF0b3IoKSB7IHJldHVybiAwOyB9Ci0KLSAgICAvLyBNYXkgcmV0dXJuIG51bGwuCi0gICAg
dmlydHVhbCBXZWJTcGVlY2hTeW50aGVzaXplciogY3JlYXRlU3BlZWNoU3ludGhlc2l6ZXIoV2Vi
U3BlZWNoU3ludGhlc2l6ZXJDbGllbnQqKSB7IHJldHVybiAwOyB9Ci0KLSAgICAvLyBBdWRpbyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQotCi0gICAgdmlydHVhbCBkb3VibGUgYXVkaW9IYXJkd2FyZVNhbXBsZVJhdGUoKSB7IHJl
dHVybiAwOyB9Ci0gICAgdmlydHVhbCBzaXplX3QgYXVkaW9IYXJkd2FyZUJ1ZmZlclNpemUoKSB7
IHJldHVybiAwOyB9Ci0gICAgdmlydHVhbCB1bnNpZ25lZCBhdWRpb0hhcmR3YXJlT3V0cHV0Q2hh
bm5lbHMoKSB7IHJldHVybiAwOyB9Ci0KLSAgICAvLyBDcmVhdGVzIGEgZGV2aWNlIGZvciBhdWRp
byBJL08uCi0gICAgLy8gUGFzcyBpbiAobnVtYmVyT2ZJbnB1dENoYW5uZWxzID4gMCkgaWYgbGl2
ZS9sb2NhbCBhdWRpbyBpbnB1dCBpcyBkZXNpcmVkLgotICAgIHZpcnR1YWwgV2ViQXVkaW9EZXZp
Y2UqIGNyZWF0ZUF1ZGlvRGV2aWNlKHNpemVfdCBidWZmZXJTaXplLCB1bnNpZ25lZCBudW1iZXJP
ZklucHV0Q2hhbm5lbHMsIHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIGRvdWJsZSBzYW1wbGVS
YXRlLCBXZWJBdWRpb0RldmljZTo6UmVuZGVyQ2FsbGJhY2sqLCBjb25zdCBXZWJTdHJpbmcmIGRl
dmljZUlkKSB7IHJldHVybiAwOyB9Ci0KLSAgICAvLyBGSVhNRTogcmVtb3ZlIGRlcHJlY2F0ZWQg
QVBJcyBvbmNlIGNocm9taXVtIHN3aXRjaGVzIG92ZXIgdG8gbmV3IG1ldGhvZC4KLSAgICB2aXJ0
dWFsIFdlYkF1ZGlvRGV2aWNlKiBjcmVhdGVBdWRpb0RldmljZShzaXplX3QgYnVmZmVyU2l6ZSwg
dW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscywgZG91YmxlIHNhbXBsZVJhdGUsIFdlYkF1ZGlvRGV2
aWNlOjpSZW5kZXJDYWxsYmFjayopIHsgcmV0dXJuIDA7IH0KLSAgICB2aXJ0dWFsIFdlYkF1ZGlv
RGV2aWNlKiBjcmVhdGVBdWRpb0RldmljZShzaXplX3QgYnVmZmVyU2l6ZSwgdW5zaWduZWQgbnVt
YmVyT2ZJbnB1dENoYW5uZWxzLCB1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzLCBkb3VibGUgc2Ft
cGxlUmF0ZSwgV2ViQXVkaW9EZXZpY2U6OlJlbmRlckNhbGxiYWNrKikgeyByZXR1cm4gMDsgfQot
Ci0KLSAgICAvLyBCbG9iIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotICAgIC8vIE11c3QgcmV0dXJuIG5vbi1udWxsLgot
ICAgIHZpcnR1YWwgV2ViQmxvYlJlZ2lzdHJ5KiBibG9iUmVnaXN0cnkoKSB7IHJldHVybiAwOyB9
Ci0KLQotICAgIC8vIERhdGFiYXNlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0gICAgLy8gT3BlbnMgYSBkYXRhYmFzZSBmaWxl
OyBkaXJIYW5kbGUgc2hvdWxkIGJlIDAgaWYgdGhlIGNhbGxlciBkb2VzIG5vdCBuZWVkCi0gICAg
Ly8gYSBoYW5kbGUgdG8gdGhlIGRpcmVjdG9yeSBjb250YWluaW5nIHRoaXMgZmlsZQotICAgIHZp
cnR1YWwgRmlsZUhhbmRsZSBkYXRhYmFzZU9wZW5GaWxlKGNvbnN0IFdlYlN0cmluZyYgdmZzRmls
ZU5hbWUsIGludCBkZXNpcmVkRmxhZ3MpIHsgcmV0dXJuIEZpbGVIYW5kbGUoKTsgfQotCi0gICAg
Ly8gRGVsZXRlcyBhIGRhdGFiYXNlIGZpbGUgYW5kIHJldHVybnMgdGhlIGVycm9yIGNvZGUKLSAg
ICB2aXJ0dWFsIGludCBkYXRhYmFzZURlbGV0ZUZpbGUoY29uc3QgV2ViU3RyaW5nJiB2ZnNGaWxl
TmFtZSwgYm9vbCBzeW5jRGlyKSB7IHJldHVybiAwOyB9Ci0KLSAgICAvLyBSZXR1cm5zIHRoZSBh
dHRyaWJ1dGVzIG9mIHRoZSBnaXZlbiBkYXRhYmFzZSBmaWxlCi0gICAgdmlydHVhbCBsb25nIGRh
dGFiYXNlR2V0RmlsZUF0dHJpYnV0ZXMoY29uc3QgV2ViU3RyaW5nJiB2ZnNGaWxlTmFtZSkgeyBy
ZXR1cm4gMDsgfQotCi0gICAgLy8gUmV0dXJucyB0aGUgc2l6ZSBvZiB0aGUgZ2l2ZW4gZGF0YWJh
c2UgZmlsZQotICAgIHZpcnR1YWwgbG9uZyBsb25nIGRhdGFiYXNlR2V0RmlsZVNpemUoY29uc3Qg
V2ViU3RyaW5nJiB2ZnNGaWxlTmFtZSkgeyByZXR1cm4gMDsgfQotCi0gICAgLy8gUmV0dXJucyB0
aGUgc3BhY2UgYXZhaWxhYmxlIGZvciB0aGUgZ2l2ZW4gb3JpZ2luCi0gICAgdmlydHVhbCBsb25n
IGxvbmcgZGF0YWJhc2VHZXRTcGFjZUF2YWlsYWJsZUZvck9yaWdpbihjb25zdCBXZWJLaXQ6Oldl
YlN0cmluZyYgb3JpZ2luSWRlbnRpZmllcikgeyByZXR1cm4gMDsgfQotCi0KLSAgICAvLyBET00g
U3RvcmFnZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQotCi0gICAgLy8gUmV0dXJuIGEgTG9jYWxTdG9yYWdlIG5hbWVzcGFjZSB0aGF0IGNvcnJlc3Bv
bmRzIHRvIHRoZSBmb2xsb3dpbmcgcGF0aC4KLSAgICB2aXJ0dWFsIFdlYlN0b3JhZ2VOYW1lc3Bh
Y2UqIGNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZShjb25zdCBXZWJTdHJpbmcmIHBhdGgsIHVu
c2lnbmVkIHF1b3RhKSB7IHJldHVybiAwOyB9Ci0KLQotICAgIC8vIEZpbGVTeXN0ZW0gLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0g
ICAgLy8gTXVzdCByZXR1cm4gbm9uLW51bGwuCi0gICAgdmlydHVhbCBXZWJGaWxlU3lzdGVtKiBm
aWxlU3lzdGVtKCkgeyByZXR1cm4gMDsgfQotCi0KLSAgICAvLyBHYW1lcGFkIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotICAg
IHZpcnR1YWwgdm9pZCBzYW1wbGVHYW1lcGFkcyhXZWJHYW1lcGFkcyYgaW50bykgeyBpbnRvLmxl
bmd0aCA9IDA7IH0KLQotCi0gICAgLy8gSGlzdG9yeSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSAgICAvLyBSZXR1cm5zIHRo
ZSBoYXNoIGZvciB0aGUgZ2l2ZW4gY2Fub25pY2FsaXplZCBVUkwgZm9yIHVzZSBpbiB2aXNpdGVk
Ci0gICAgLy8gbGluayBjb2xvcmluZy4KLSAgICB2aXJ0dWFsIHVuc2lnbmVkIGxvbmcgbG9uZyB2
aXNpdGVkTGlua0hhc2goCi0gICAgICAgIGNvbnN0IGNoYXIqIGNhbm9uaWNhbFVSTCwgc2l6ZV90
IGxlbmd0aCkgeyByZXR1cm4gMDsgfQotCi0gICAgLy8gUmV0dXJucyB3aGV0aGVyIHRoZSBnaXZl
biBsaW5rIGhhc2ggaXMgaW4gdGhlIHVzZXIncyBoaXN0b3J5LiBUaGUKLSAgICAvLyBoYXNoIG11
c3QgaGF2ZSBiZWVuIGdlbmVyYXRlZCBieSBjYWxsaW5nIFZpc2l0ZWRMaW5rSGFzaCgpLgotICAg
IHZpcnR1YWwgYm9vbCBpc0xpbmtWaXNpdGVkKHVuc2lnbmVkIGxvbmcgbG9uZyBsaW5rSGFzaCkg
eyByZXR1cm4gZmFsc2U7IH0KLQotCi0gICAgLy8gS2V5Z2VuIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSAgICAvLyBIYW5k
bGUgdGhlIDxrZXlnZW4+IHRhZyBmb3IgZ2VuZXJhdGluZyBjbGllbnQgY2VydGlmaWNhdGVzCi0g
ICAgLy8gUmV0dXJucyBhIGJhc2U2NCBlbmNvZGVkIHNpZ25lZCBjb3B5IG9mIGEgcHVibGljIGtl
eSBmcm9tIGEgbmV3bHkKLSAgICAvLyBnZW5lcmF0ZWQga2V5IHBhaXIgYW5kIHRoZSBzdXBwbGll
ZCBjaGFsbGVuZ2Ugc3RyaW5nLiBrZXlTaXplaW5kZXgKLSAgICAvLyBzcGVjaWZpZXMgdGhlIHN0
cmVuZ3RoIG9mIHRoZSBrZXkuCi0gICAgdmlydHVhbCBXZWJTdHJpbmcgc2lnbmVkUHVibGljS2V5
QW5kQ2hhbGxlbmdlU3RyaW5nKHVuc2lnbmVkIGtleVNpemVJbmRleCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViU3RyaW5n
JiBjaGFsbGVuZ2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFdlYlVSTCYgdXJsKSB7IHJldHVybiBXZWJTdHJpbmcoKTsgfQot
Ci0KLSAgICAvLyBNZW1vcnkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotICAgIC8vIFJldHVybnMgdGhlIGN1cnJlbnQgc3Bh
Y2UgYWxsb2NhdGVkIGZvciB0aGUgcGFnZWZpbGUsIGluIE1CLgotICAgIC8vIFRoYXQgaXMgY29t
bWl0dGVkIHNpemUgZm9yIFdpbmRvd3MgYW5kIHZpcnR1YWwgbWVtb3J5IHNpemUgZm9yIFBPU0lY
Ci0gICAgdmlydHVhbCBzaXplX3QgbWVtb3J5VXNhZ2VNQigpIHsgcmV0dXJuIDA7IH0KLQotICAg
IC8vIFNhbWUgYXMgYWJvdmUsIGJ1dCBhbHdheXMgcmV0dXJucyBhY3R1YWwgdmFsdWUsIHdpdGhv
dXQgYW55IGNhY2hlcy4KLSAgICB2aXJ0dWFsIHNpemVfdCBhY3R1YWxNZW1vcnlVc2FnZU1CKCkg
eyByZXR1cm4gMDsgfQotCi0gICAgLy8gSWYgbWVtb3J5IHVzYWdlIGlzIGJlbG93IHRoaXMgdGhy
ZXNob2xkLCBkbyBub3QgYm90aGVyIGZvcmNpbmcgR0MuCi0gICAgdmlydHVhbCBzaXplX3QgbG93
TWVtb3J5VXNhZ2VNQigpIHsgcmV0dXJuIDI1NjsgfQotCi0gICAgLy8gSWYgbWVtb3J5IHVzYWdl
IGlzIGFib3ZlIHRoaXMgdGhyZXNob2xkLCBmb3JjZSBHQyBtb3JlIGFnZ3Jlc3NpdmVseS4KLSAg
ICB2aXJ0dWFsIHNpemVfdCBoaWdoTWVtb3J5VXNhZ2VNQigpIHsgcmV0dXJuIDEwMjQ7IH0KLQot
ICAgIC8vIERlbHRhIG9mIG1lbW9yeSB1c2FnZSBncm93dGggKHZzLiBsYXN0IGFjdHVhbE1lbW9y
eVVzYWdlTUIoKSkgdG8gZm9yY2UgR0Mgd2hlbiBtZW1vcnkgdXNhZ2UgaXMgaGlnaC4KLSAgICB2
aXJ0dWFsIHNpemVfdCBoaWdoVXNhZ2VEZWx0YU1CKCkgeyByZXR1cm4gMTI4OyB9Ci0KLSAgICAv
LyBSZXR1cm5zIHByaXZhdGUgYW5kIHNoYXJlZCB1c2FnZSwgaW4gYnl0ZXMuIFByaXZhdGUgYnl0
ZXMgaXMgdGhlIGFtb3VudCBvZgotICAgIC8vIG1lbW9yeSBjdXJyZW50bHkgYWxsb2NhdGVkIHRv
IHRoaXMgcHJvY2VzcyB0aGF0IGNhbm5vdCBiZSBzaGFyZWQuIFJldHVybnMKLSAgICAvLyBmYWxz
ZSBvbiBwbGF0Zm9ybSBzcGVjaWZpYyBlcnJvciBjb25kaXRpb25zLgotICAgIHZpcnR1YWwgYm9v
bCBwcm9jZXNzTWVtb3J5U2l6ZXNJbkJ5dGVzKHNpemVfdCogcHJpdmF0ZUJ5dGVzLCBzaXplX3Qq
IHNoYXJlZEJ5dGVzKSB7IHJldHVybiBmYWxzZTsgfQotCi0gICAgLy8gQSBjYWxsYmFjayBpbnRl
cmZhY2UgZm9yIHJlcXVlc3RQcm9jZXNzTWVtb3J5U2l6ZXMKLSAgICBjbGFzcyBQcm9jZXNzTWVt
b3J5U2l6ZXNDYWxsYmFjayB7Ci0gICAgcHVibGljOgotICAgICAgICB2aXJ0dWFsIH5Qcm9jZXNz
TWVtb3J5U2l6ZXNDYWxsYmFjaygpIHsgfQotICAgICAgICB2aXJ0dWFsIHZvaWQgZGF0YVJlY2Vp
dmVkKHNpemVfdCBwcml2YXRlQnl0ZXMsIHNpemVfdCBzaGFyZWRCeXRlcykgPSAwOwotICAgIH07
Ci0KLSAgICAvLyBSZXF1ZXN0cyBwcml2YXRlIGFuZCBzaGFyZWQgdXNhZ2UsIGluIGJ5dGVzLiBQ
cml2YXRlIGJ5dGVzIGlzIHRoZSBhbW91bnQgb2YKLSAgICAvLyBtZW1vcnkgY3VycmVudGx5IGFs
bG9jYXRlZCB0byB0aGlzIHByb2Nlc3MgdGhhdCBjYW5ub3QgYmUgc2hhcmVkLgotICAgIC8vIFRo
ZSBjYWxsYmFjayBvd25lcnNoaXAgaXMgcGFzc2VkIHRvIHRoZSBjYWxsZWUuCi0gICAgdmlydHVh
bCB2b2lkIHJlcXVlc3RQcm9jZXNzTWVtb3J5U2l6ZXMoUHJvY2Vzc01lbW9yeVNpemVzQ2FsbGJh
Y2sqIHJlcXVlc3RDYWxsYmFjaykgeyB9Ci0KLSAgICAvLyBSZXBvcnRzIG51bWJlciBvZiBieXRl
cyB1c2VkIGJ5IG1lbW9yeSBhbGxvY2F0b3IgZm9yIGludGVybmFsIG5lZWRzLgotICAgIC8vIFJl
dHVybnMgdHJ1ZSBpZiB0aGUgc2l6ZSBoYXMgYmVlbiByZXBvcnRlZCwgb3IgZmFsc2Ugb3RoZXJ3
aXNlLgotICAgIHZpcnR1YWwgYm9vbCBtZW1vcnlBbGxvY2F0b3JXYXN0ZUluQnl0ZXMoc2l6ZV90
KikgeyByZXR1cm4gZmFsc2U7IH0KLQotICAgIC8vIEFsbG9jYXRlcyBkaXNjYXJkYWJsZSBtZW1v
cnkuIE1heSByZXR1cm4gMCwgZXZlbiBpZiB0aGUgcGxhdGZvcm0gc3VwcG9ydHMKLSAgICAvLyBk
aXNjYXJkYWJsZSBtZW1vcnkuIElmIG5vbnplcm8sIGhvd2V2ZXIsIHRoZW4gdGhlIFdlYkRpc2Nh
cmRhYmxlTW1lb3J5IGlzCi0gICAgLy8gcmV0dXJuZWQgaW4gYW4gbG9ja2VkIHN0YXRlLiBZb3Ug
bWF5IHVzZSBpdHMgdW5kZXJseWluZyBkYXRhKCkgbWVtYmVyCi0gICAgLy8gZGlyZWN0bHksIHRh
a2luZyBjYXJlIHRvIHVubG9jayBpdCB3aGVuIHlvdSBhcmUgcmVhZHkgdG8gbGV0IGl0IGJlY29t
ZQotICAgIC8vIGRpc2NhcmRhYmxlLgotICAgIHZpcnR1YWwgV2ViRGlzY2FyZGFibGVNZW1vcnkq
IGFsbG9jYXRlQW5kTG9ja0Rpc2NhcmRhYmxlTWVtb3J5KHNpemVfdCBieXRlcykgeyByZXR1cm4g
MDsgfQotCi0KLSAgICAvLyBNZXNzYWdlIFBvcnRzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotICAgIC8vIENyZWF0ZXMgYSBNZXNzYWdl
IFBvcnQgQ2hhbm5lbC4gVGhpcyBjYW4gYmUgY2FsbGVkIG9uIGFueSB0aHJlYWQuCi0gICAgLy8g
VGhlIHJldHVybmVkIG9iamVjdCBzaG91bGQgb25seSBiZSB1c2VkIG9uIHRoZSB0aHJlYWQgaXQg
d2FzIGNyZWF0ZWQgb24uCi0gICAgdmlydHVhbCBXZWJNZXNzYWdlUG9ydENoYW5uZWwqIGNyZWF0
ZU1lc3NhZ2VQb3J0Q2hhbm5lbCgpIHsgcmV0dXJuIDA7IH0KLQotCi0gICAgLy8gTmV0d29yayAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCi0KLSAgICAvLyBSZXR1cm5zIGEgbmV3IFdlYlVSTExvYWRlciBpbnN0YW5jZS4KLSAgICB2
aXJ0dWFsIFdlYlVSTExvYWRlciogY3JlYXRlVVJMTG9hZGVyKCkgeyByZXR1cm4gMDsgfQotCi0g
ICAgLy8gQSBzdWdnZXN0aW9uIHRvIHByZWZldGNoIElQIGluZm9ybWF0aW9uIGZvciB0aGUgZ2l2
ZW4gaG9zdG5hbWUuCi0gICAgdmlydHVhbCB2b2lkIHByZWZldGNoSG9zdE5hbWUoY29uc3QgV2Vi
U3RyaW5nJikgeyB9Ci0KLSAgICAvLyBSZXR1cm5zIGEgbmV3IFdlYlNvY2tldFN0cmVhbUhhbmRs
ZSBpbnN0YW5jZS4KLSAgICB2aXJ0dWFsIFdlYlNvY2tldFN0cmVhbUhhbmRsZSogY3JlYXRlU29j
a2V0U3RyZWFtSGFuZGxlKCkgeyByZXR1cm4gMDsgfQotCi0gICAgLy8gUmV0dXJucyB0aGUgVXNl
ci1BZ2VudCBzdHJpbmcgdGhhdCBzaG91bGQgYmUgdXNlZCBmb3IgdGhlIGdpdmVuIFVSTC4KLSAg
ICB2aXJ0dWFsIFdlYlN0cmluZyB1c2VyQWdlbnQoY29uc3QgV2ViVVJMJikgeyByZXR1cm4gV2Vi
U3RyaW5nKCk7IH0KLQotICAgIC8vIEEgc3VnZ2VzdGlvbiB0byBjYWNoZSB0aGlzIG1ldGFkYXRh
IGluIGFzc29jaWF0aW9uIHdpdGggdGhpcyBVUkwuCi0gICAgdmlydHVhbCB2b2lkIGNhY2hlTWV0
YWRhdGEoY29uc3QgV2ViVVJMJiwgZG91YmxlIHJlc3BvbnNlVGltZSwgY29uc3QgY2hhciogZGF0
YSwgc2l6ZV90IGRhdGFTaXplKSB7IH0KLQotCi0gICAgLy8gUGx1Z2lucyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSAgICAv
LyBJZiByZWZyZXNoIGlzIHRydWUsIHRoZW4gY2FjaGVkIGluZm9ybWF0aW9uIHNob3VsZCBub3Qg
YmUgdXNlZCB0bwotICAgIC8vIHNhdGlzZnkgdGhpcyBjYWxsLgotICAgIHZpcnR1YWwgdm9pZCBn
ZXRQbHVnaW5MaXN0KGJvb2wgcmVmcmVzaCwgV2ViUGx1Z2luTGlzdEJ1aWxkZXIqKSB7IH0KLQot
Ci0gICAgLy8gUmVzb3VyY2VzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSAgICAvLyBSZXR1cm5zIGEgbG9jYWxpemVkIHN0cmlu
ZyByZXNvdXJjZSAod2l0aCBzdWJzdGl0dXRpb24gcGFyYW1ldGVycykuCi0gICAgdmlydHVhbCBX
ZWJTdHJpbmcgcXVlcnlMb2NhbGl6ZWRTdHJpbmcoV2ViTG9jYWxpemVkU3RyaW5nOjpOYW1lKSB7
IHJldHVybiBXZWJTdHJpbmcoKTsgfQotICAgIHZpcnR1YWwgV2ViU3RyaW5nIHF1ZXJ5TG9jYWxp
emVkU3RyaW5nKFdlYkxvY2FsaXplZFN0cmluZzo6TmFtZSwgY29uc3QgV2ViU3RyaW5nJiBwYXJh
bWV0ZXIpIHsgcmV0dXJuIFdlYlN0cmluZygpOyB9Ci0gICAgdmlydHVhbCBXZWJTdHJpbmcgcXVl
cnlMb2NhbGl6ZWRTdHJpbmcoV2ViTG9jYWxpemVkU3RyaW5nOjpOYW1lLCBjb25zdCBXZWJTdHJp
bmcmIHBhcmFtZXRlcjEsIGNvbnN0IFdlYlN0cmluZyYgcGFyYW1ldGVyMikgeyByZXR1cm4gV2Vi
U3RyaW5nKCk7IH0KLQotCi0gICAgLy8gVGhyZWFkcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSAgICAvLyBDcmVhdGVzIGFuIGVtYmVk
ZGVyLWRlZmluZWQgdGhyZWFkLgotICAgIHZpcnR1YWwgV2ViVGhyZWFkKiBjcmVhdGVUaHJlYWQo
Y29uc3QgY2hhciogbmFtZSkgeyByZXR1cm4gMDsgfQotCi0gICAgLy8gUmV0dXJucyBhbiBpbnRl
cmZhY2UgdG8gdGhlIGN1cnJlbnQgdGhyZWFkLiBUaGlzIGlzIG93bmVkIGJ5IHRoZQotICAgIC8v
IGVtYmVkZGVyLgotICAgIHZpcnR1YWwgV2ViVGhyZWFkKiBjdXJyZW50VGhyZWFkKCkgeyByZXR1
cm4gMDsgfQotCi0KLSAgICAvLyBQcm9maWxpbmcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotICAgIHZpcnR1YWwgdm9pZCBkZWNy
ZW1lbnRTdGF0c0NvdW50ZXIoY29uc3QgY2hhciogbmFtZSkgeyB9Ci0gICAgdmlydHVhbCB2b2lk
IGluY3JlbWVudFN0YXRzQ291bnRlcihjb25zdCBjaGFyKiBuYW1lKSB7IH0KLQotCi0gICAgLy8g
UmVzb3VyY2VzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCi0KLSAgICAvLyBSZXR1cm5zIGEgYmxvYiBvZiBkYXRhIGNvcnJlc3BvbmRp
bmcgdG8gdGhlIG5hbWVkIHJlc291cmNlLgotICAgIHZpcnR1YWwgV2ViRGF0YSBsb2FkUmVzb3Vy
Y2UoY29uc3QgY2hhciogbmFtZSkgeyByZXR1cm4gV2ViRGF0YSgpOyB9Ci0KLSAgICAvLyBEZWNv
ZGVzIHRoZSBpbi1tZW1vcnkgYXVkaW8gZmlsZSBkYXRhIGFuZCByZXR1cm5zIHRoZSBsaW5lYXIg
UENNIGF1ZGlvIGRhdGEgaW4gdGhlIGRlc3RpbmF0aW9uQnVzLgotICAgIC8vIEEgc2FtcGxlLXJh
dGUgY29udmVyc2lvbiB0byBzYW1wbGVSYXRlIHdpbGwgb2NjdXIgaWYgdGhlIGZpbGUgZGF0YSBp
cyBhdCBhIGRpZmZlcmVudCBzYW1wbGUtcmF0ZS4KLSAgICAvLyBSZXR1cm5zIHRydWUgb24gc3Vj
Y2Vzcy4KLSAgICB2aXJ0dWFsIGJvb2wgbG9hZEF1ZGlvUmVzb3VyY2UoV2ViQXVkaW9CdXMqIGRl
c3RpbmF0aW9uQnVzLCBjb25zdCBjaGFyKiBhdWRpb0ZpbGVEYXRhLCBzaXplX3QgZGF0YVNpemUs
IGRvdWJsZSBzYW1wbGVSYXRlKSB7IHJldHVybiBmYWxzZTsgfQotCi0KLSAgICAvLyBTYW5kYm94
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQotCi0gICAgLy8gSW4gc29tZSBicm93c2VycywgYSAic2FuZGJveCIgcmVzdHJpY3RzIHdo
YXQgb3BlcmF0aW9ucyBhIHByb2dyYW0KLSAgICAvLyBpcyBhbGxvd2VkIHRvIHByZWZvcm0uIFN1
Y2ggb3BlcmF0aW9ucyBhcmUgdHlwaWNhbGx5IGFic3RyYWN0ZWQgb3V0Ci0gICAgLy8gdmlhIHRo
aXMgQVBJLCBidXQgc29tZXRpbWVzIChsaWtlIGluIEhUTUwgNSBkYXRhYmFzZSBvcGVuaW5nKSBX
ZWJLaXQKLSAgICAvLyBuZWVkcyB0byBiZWhhdmUgZGlmZmVyZW50bHkgYmFzZWQgb24gd2hldGhl
ciBpdCdzIHJlc3RyaWN0ZWQgb3Igbm90LgotICAgIC8vIEluIHRoZXNlIGNhc2VzIChhbmQgdGhl
c2UgY2FzZXMgb25seSkgeW91IGNhbiBjYWxsIHRoaXMgZnVuY3Rpb24uCi0gICAgLy8gSXQncyBP
SyBmb3IgdGhpcyB2YWx1ZSB0byBiZSBjb25zZXJ2aXRpdmUgKGkuZS4gdHJ1ZSBldmVuIGlmIHRo
ZQotICAgIC8vIHNhbmRib3ggaXNuJ3QgYWN0aXZlKS4KLSAgICB2aXJ0dWFsIGJvb2wgc2FuZGJv
eEVuYWJsZWQoKSB7IHJldHVybiBmYWxzZTsgfQotCi0KLSAgICAvLyBTY3JlZW4gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0g
ICAgLy8gU3VwcGxpZXMgdGhlIHN5c3RlbSBtb25pdG9yIGNvbG9yIHByb2ZpbGUuCi0gICAgdmly
dHVhbCB2b2lkIHNjcmVlbkNvbG9yUHJvZmlsZShXZWJWZWN0b3I8Y2hhcj4qIHByb2ZpbGUpIHsg
fQotCi0KLSAgICAvLyBTdWRkZW4gVGVybWluYXRpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotICAgIC8vIERpc2FibGUvRW5hYmxlIHN1ZGRl
biB0ZXJtaW5hdGlvbi4KLSAgICB2aXJ0dWFsIHZvaWQgc3VkZGVuVGVybWluYXRpb25DaGFuZ2Vk
KGJvb2wgZW5hYmxlZCkgeyB9Ci0KLQotICAgIC8vIFN5c3RlbSAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0gICAgLy8gUmV0
dXJucyBhIHZhbHVlIHN1Y2ggYXMgImVuLVVTIi4KLSAgICB2aXJ0dWFsIFdlYlN0cmluZyBkZWZh
dWx0TG9jYWxlKCkgeyByZXR1cm4gV2ViU3RyaW5nKCk7IH0KLQotICAgIC8vIFdhbGwgY2xvY2sg
dGltZSBpbiBzZWNvbmRzIHNpbmNlIHRoZSBlcG9jaC4KLSAgICB2aXJ0dWFsIGRvdWJsZSBjdXJy
ZW50VGltZSgpIHsgcmV0dXJuIDA7IH0KLQotICAgIC8vIE1vbm90b25pY2FsbHkgaW5jcmVhc2lu
ZyB0aW1lIGluIHNlY29uZHMgZnJvbSBhbiBhcmJpdHJhcnkgZml4ZWQgcG9pbnQgaW4gdGhlIHBh
c3QuCi0gICAgLy8gVGhpcyBmdW5jdGlvbiBpcyBleHBlY3RlZCB0byByZXR1cm4gYXQgbGVhc3Qg
bWlsbGlzZWNvbmQtcHJlY2lzaW9uIHZhbHVlcy4gRm9yIHRoaXMgcmVhc29uLAotICAgIC8vIGl0
IGlzIHJlY29tbWVuZGVkIHRoYXQgdGhlIGZpeGVkIHBvaW50IGJlIG5vIGZ1cnRoZXIgaW4gdGhl
IHBhc3QgdGhhbiB0aGUgZXBvY2guCi0gICAgdmlydHVhbCBkb3VibGUgbW9ub3RvbmljYWxseUlu
Y3JlYXNpbmdUaW1lKCkgeyByZXR1cm4gMDsgfQotCi0gICAgLy8gV2ViS2l0IGNsaWVudHMgbXVz
dCBpbXBsZW1lbnQgdGhpcyBmdW5jaW9uIGlmIHRoZXkgdXNlIGNyeXB0b2dyYXBoaWMgcmFuZG9t
bmVzcy4KLSAgICB2aXJ0dWFsIHZvaWQgY3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21WYWx1ZXModW5z
aWduZWQgY2hhciogYnVmZmVyLCBzaXplX3QgbGVuZ3RoKSA9IDA7Ci0KLSAgICAvLyBEZWxheWVk
IHdvcmsgaXMgZHJpdmVuIGJ5IGEgc2hhcmVkIHRpbWVyLgotICAgIHR5cGVkZWYgdm9pZCAoKlNo
YXJlZFRpbWVyRnVuY3Rpb24pKCk7Ci0gICAgdmlydHVhbCB2b2lkIHNldFNoYXJlZFRpbWVyRmly
ZWRGdW5jdGlvbihTaGFyZWRUaW1lckZ1bmN0aW9uIHRpbWVyRnVuY3Rpb24pIHsgfQotICAgIHZp
cnR1YWwgdm9pZCBzZXRTaGFyZWRUaW1lckZpcmVJbnRlcnZhbChkb3VibGUpIHsgfQotICAgIHZp
cnR1YWwgdm9pZCBzdG9wU2hhcmVkVGltZXIoKSB7IH0KLQotICAgIC8vIENhbGxhYmxlIGZyb20g
YSBiYWNrZ3JvdW5kIFdlYktpdCB0aHJlYWQuCi0gICAgdmlydHVhbCB2b2lkIGNhbGxPbk1haW5U
aHJlYWQodm9pZCAoKmZ1bmMpKHZvaWQqKSwgdm9pZCogY29udGV4dCkgeyB9Ci0KLSAgICAvLyBD
aGVja3MgdGhlIHBhcnRpdGlvbi92b2x1bWUgd2hlcmUgZmlsZU5hbWUgcmVzaWRlcy4KLSAgICB2
aXJ0dWFsIGxvbmcgbG9uZyBhdmFpbGFibGVEaXNrU3BhY2VJbkJ5dGVzKGNvbnN0IFdlYlN0cmlu
ZyYgZmlsZU5hbWUpIHsgcmV0dXJuIDA7IH0KLQotCi0gICAgLy8gVGVzdGluZyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSNk
ZWZpbmUgSEFWRV9XRUJVTklUVEVTVFNVUFBPUlQgMQotICAgIC8vIEdldCBhIHBvaW50ZXIgdG8g
dGVzdGluZyBzdXBwb3J0IGludGVyZmFjZXMuIFdpbGwgbm90IGJlIGF2YWlsYWJsZSBpbiBwcm9k
dWN0aW9uIGJ1aWxkcy4KLSAgICB2aXJ0dWFsIFdlYlVuaXRUZXN0U3VwcG9ydCogdW5pdFRlc3RT
dXBwb3J0KCkgeyByZXR1cm4gMDsgfQotCi0KLSAgICAvLyBUcmFjaW5nIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotICAgIC8v
IEdldCBhIHBvaW50ZXIgdG8gdGhlIGVuYWJsZWQgc3RhdGUgb2YgdGhlIGdpdmVuIHRyYWNlIGNh
dGVnb3J5LiBUaGUKLSAgICAvLyBlbWJlZGRlciBjYW4gZHluYW1pY2FsbHkgY2hhbmdlIHRoZSBl
bmFibGVkIHN0YXRlIGFzIHRyYWNlIGV2ZW50Ci0gICAgLy8gcmVjb3JkaW5nIGlzIHN0YXJ0ZWQg
YW5kIHN0b3BwZWQgYnkgdGhlIGFwcGxpY2F0aW9uLiBPbmx5IGxvbmctbGl2ZWQKLSAgICAvLyBs
aXRlcmFsIHN0cmluZ3Mgc2hvdWxkIGJlIGdpdmVuIGFzIHRoZSBjYXRlZ29yeSBuYW1lLiBUaGUg
aW1wbGVtZW50YXRpb24KLSAgICAvLyBleHBlY3RzIHRoZSByZXR1cm5lZCBwb2ludGVyIHRvIGJl
IGhlbGQgcGVybWFuZW50bHkgaW4gYSBsb2NhbCBzdGF0aWMuIElmCi0gICAgLy8gdGhlIHVuc2ln
bmVkIGNoYXIgaXMgbm9uLXplcm8sIHRyYWNpbmcgaXMgZW5hYmxlZC4gSWYgdHJhY2luZyBpcyBl
bmFibGVkLAotICAgIC8vIGFkZFRyYWNlRXZlbnQgaXMgZXhwZWN0ZWQgdG8gYmUgY2FsbGVkIGJ5
IHRoZSB0cmFjZSBldmVudCBtYWNyb3MuCi0gICAgdmlydHVhbCBjb25zdCB1bnNpZ25lZCBjaGFy
KiBnZXRUcmFjZUNhdGVnb3J5RW5hYmxlZEZsYWcoY29uc3QgY2hhciogY2F0ZWdvcnlOYW1lKSB7
IHJldHVybiAwOyB9Ci0KLSAgICB0eXBlZGVmIGxvbmcgaW50IFRyYWNlRXZlbnRBUElBdG9taWNX
b3JkOwotCi0gICAgLy8gR2V0IGEgcG9pbnRlciB0byBhIGdsb2JhbCBzdGF0ZSBvZiB0aGUgZ2l2
ZW4gdGhyZWFkLiBBbiBlbWJlZGRlciBpcwotICAgIC8vIGV4cGVjdGVkIHRvIHVwZGF0ZSB0aGUg
Z2xvYmFsIHN0YXRlIGFzIHRoZSBzdGF0ZSBvZiB0aGUgZW1iZWRkZXIgY2hhbmdlcy4KLSAgICAv
LyBBIHNhbXBsaW5nIHRocmVhZCBpbiB0aGUgQ2hyb21pdW0gc2lkZSByZWFkcyB0aGUgZ2xvYmFs
IHN0YXRlIHBlcmlvZGljYWxseQotICAgIC8vIGFuZCByZWZsZWN0cyB0aGUgc2FtcGxpbmcgcHJv
ZmlsZWQgcmVzdWx0cyBpbnRvIGFib3V0OnRyYWNpbmcuCi0gICAgdmlydHVhbCBUcmFjZUV2ZW50
QVBJQXRvbWljV29yZCogZ2V0VHJhY2VTYW1wbGluZ1N0YXRlKGNvbnN0IHVuc2lnbmVkIGJ1Y2tl
dE5hbWUpIHsgcmV0dXJuIDA7IH0KLQotICAgIC8vIEFkZCBhIHRyYWNlIGV2ZW50IHRvIHRoZSBw
bGF0Zm9ybSB0cmFjaW5nIHN5c3RlbS4gRGVwZW5kaW5nIG9uIHRoZSBhY3R1YWwKLSAgICAvLyBl
bmFibGVkIHN0YXRlLCB0aGlzIGV2ZW50IG1heSBiZSByZWNvcmRlZCBvciBkcm9wcGVkLiAKLSAg
ICAvLyAtIHBoYXNlIHNwZWNpZmllcyB0aGUgdHlwZSBvZiBldmVudDoKLSAgICAvLyAgIC0gQkVH
SU4gKCdCJyk6IE1hcmtzIHRoZSBiZWdpbm5pbmcgb2YgYSBzY29wZWQgZXZlbnQuCi0gICAgLy8g
ICAtIEVORCAoJ0UnKTogTWFya3MgdGhlIGVuZCBvZiBhIHNjb3BlZCBldmVudC4KLSAgICAvLyAg
IC0gSU5TVEFOVCAoJ0knKTogU3RhbmRhbG9uZSwgaW5zdGFudGFuZW91cyBldmVudC4KLSAgICAv
LyAgIC0gU1RBUlQgKCdTJyk6IE1hcmtzIHRoZSBiZWdpbm5pbmcgb2YgYW4gYXN5bmNocm9ub3Vz
IGV2ZW50ICh0aGUgZW5kCi0gICAgLy8gICAgIGV2ZW50IGNhbiBvY2N1ciBpbiBhIGRpZmZlcmVu
dCBzY29wZSBvciB0aHJlYWQpLiBUaGUgaWQgcGFyYW1ldGVyIGlzCi0gICAgLy8gICAgIHVzZWQg
dG8gbWF0Y2ggU1RBUlQvRklOSVNIIHBhaXJzLgotICAgIC8vICAgLSBGSU5JU0ggKCdGJyk6IE1h
cmtzIHRoZSBlbmQgb2YgYW4gYXN5bmNocm9ub3VzIGV2ZW50LgotICAgIC8vICAgLSBDT1VOVEVS
ICgnQycpOiBVc2VkIHRvIHRyYWNlIGludGVnZXIgcXVhbnRpdGllcyB0aGF0IGNoYW5nZSBvdmVy
Ci0gICAgLy8gICAgIHRpbWUuIFRoZSBhcmd1bWVudCB2YWx1ZXMgYXJlIGV4cGVjdGVkIHRvIGJl
IG9mIHR5cGUgaW50LgotICAgIC8vICAgLSBNRVRBREFUQSAoJ00nKTogUmVzZXJ2ZWQgZm9yIGlu
dGVybmFsIHVzZS4KLSAgICAvLyAtIGNhdGVnb3J5RW5hYmxlZCBpcyB0aGUgcG9pbnRlciByZXR1
cm5lZCBieSBnZXRUcmFjZUNhdGVnb3J5RW5hYmxlZEZsYWcuCi0gICAgLy8gLSBuYW1lIGlzIHRo
ZSBuYW1lIG9mIHRoZSBldmVudC4gQWxzbyB1c2VkIHRvIG1hdGNoIEJFR0lOL0VORCBhbmQKLSAg
ICAvLyAgIFNUQVJUL0ZJTklTSCBwYWlycy4KLSAgICAvLyAtIGlkIG9wdGlvbmFsbHkgYWxsb3dz
IGV2ZW50cyBvZiB0aGUgc2FtZSBuYW1lIHRvIGJlIGRpc3Rpbmd1aXNoZWQgZnJvbQotICAgIC8v
ICAgZWFjaCBvdGhlci4gRm9yIGV4YW1wbGUsIHRvIHRyYWNlIHRoZSBjb25zdXRydWN0aW9uIGFu
ZCBkZXN0cnVjdGlvbiBvZgotICAgIC8vICAgb2JqZWN0cywgc3BlY2lmeSB0aGUgcG9pbnRlciBh
cyB0aGUgaWQgcGFyYW1ldGVyLgotICAgIC8vIC0gbnVtQXJncyBzcGVjaWZpZXMgdGhlIG51bWJl
ciBvZiBlbGVtZW50cyBpbiBhcmdOYW1lcywgYXJnVHlwZXMsIGFuZAotICAgIC8vICAgYXJnVmFs
dWVzLgotICAgIC8vIC0gYXJnTmFtZXMgaXMgdGhlIGFycmF5IG9mIGFyZ3VtZW50IG5hbWVzLiBV
c2UgbG9uZy1saXZlZCBsaXRlcmFsIHN0cmluZ3MKLSAgICAvLyAgIG9yIHNwZWNpZnkgdGhlIENP
UFkgZmxhZy4KLSAgICAvLyAtIGFyZ1R5cGVzIGlzIHRoZSBhcnJheSBvZiBhcmd1bWVudCB0eXBl
czoKLSAgICAvLyAgIC0gQk9PTCAoMSk6IGJvb2wKLSAgICAvLyAgIC0gVUlOVCAoMik6IHVuc2ln
bmVkIGxvbmcgbG9uZwotICAgIC8vICAgLSBJTlQgKDMpOiBsb25nIGxvbmcKLSAgICAvLyAgIC0g
RE9VQkxFICg0KTogZG91YmxlCi0gICAgLy8gICAtIFBPSU5URVIgKDUpOiB2b2lkKgotICAgIC8v
ICAgLSBTVFJJTkcgKDYpOiBjaGFyKiAobG9uZy1saXZlZCBudWxsLXRlcm1pbmF0ZWQgY2hhciog
c3RyaW5nKQotICAgIC8vICAgLSBDT1BZX1NUUklORyAoNyk6IGNoYXIqICh0ZW1wb3JhcnkgbnVs
bC10ZXJtaW5hdGVkIGNoYXIqIHN0cmluZykKLSAgICAvLyAtIGFyZ1ZhbHVlcyBpcyB0aGUgYXJy
YXkgb2YgYXJndW1lbnQgdmFsdWVzLiBFYWNoIHZhbHVlIGlzIHRoZSB1bnNpZ25lZAotICAgIC8v
ICAgbG9uZyBsb25nIG1lbWJlciBvZiBhIHVuaW9uIG9mIGFsbCBzdXBwb3J0ZWQgdHlwZXMuCi0g
ICAgLy8gLSB0aHJlc2hvbGRCZWdpbklkIG9wdGlvbmFsbHkgc3BlY2lmaWVzIHRoZSB2YWx1ZSBy
ZXR1cm5lZCBieSBhIHByZXZpb3VzCi0gICAgLy8gICBjYWxsIHRvIGFkZFRyYWNlRXZlbnQgd2l0
aCBhIEJFR0lOIHBoYXNlLgotICAgIC8vIC0gdGhyZXNob2xkIGlzIHVzZWQgb24gYW4gRU5EIHBo
YXNlIGV2ZW50IGluIGNvbmp1bmN0aW9uIHdpdGggdGhlCi0gICAgLy8gICB0aHJlc2hvbGRCZWdp
bklkIG9mIGEgcHJpb3IgQkVHSU4gZXZlbnQuIFRoZSB0aHJlc2hvbGQgaXMgdGhlIG1pbmltdW0K
LSAgICAvLyAgIG51bWJlciBvZiBtaWNyb3NlY29uZHMgdGhhdCBtdXN0IGhhdmUgcGFzc2VkIHNp
bmNlIHRoZSBCRUdJTiBldmVudC4gSWYKLSAgICAvLyAgIGxlc3MgdGhhbiB0aHJlc2hvbGQgbWlj
cm9zZWNvbmRzIGhhcyBwYXNzZWQsIHRoZSBCRUdJTi9FTkQgcGFpciBpcwotICAgIC8vICAgZHJv
cHBlZC4KLSAgICAvLyAtIGZsYWdzIGNhbiBiZSAwIG9yIG9uZSBvciBtb3JlIG9mIHRoZSBmb2xs
b3dpbmcsIE9SZWQgdG9nZXRoZXI6Ci0gICAgLy8gICAtIENPUFkgKDB4MSk6IHRyZWF0IGFsbCBz
dHJpbmdzIChuYW1lLCBhcmdOYW1lcyBhbmQgYXJnVmFsdWVzIG9mIHR5cGUKLSAgICAvLyAgICAg
c3RyaW5nKSBhcyB0ZW1wb3Jhcnkgc28gdGhhdCB0aGV5IHdpbGwgYmUgY29waWVkIGJ5IGFkZFRy
YWNlRXZlbnQuCi0gICAgLy8gICAtIEhBU19JRCAoMHgyKTogdXNlIHRoZSBpZCBhcmd1bWVudCB0
byB1bmlxdWVseSBpZGVudGlmeSB0aGUgZXZlbnQgZm9yCi0gICAgLy8gICAgIG1hdGNoaW5nIHdp
dGggb3RoZXIgZXZlbnRzIG9mIHRoZSBzYW1lIG5hbWUuCi0gICAgLy8gICAtIE1BTkdMRV9JRCAo
MHg0KTogc3BlY2lmeSB0aGlzIGZsYWcgaWYgdGhlIGlkIHBhcmFtZXRlciBpcyB0aGUgdmFsdWUK
LSAgICAvLyAgICAgb2YgYSBwb2ludGVyLgotICAgIHZpcnR1YWwgdm9pZCBhZGRUcmFjZUV2ZW50
KAotICAgICAgICBjaGFyIHBoYXNlLAotICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyKiBjYXRl
Z29yeUVuYWJsZWRGbGFnLAotICAgICAgICBjb25zdCBjaGFyKiBuYW1lLAotICAgICAgICB1bnNp
Z25lZCBsb25nIGxvbmcgaWQsCi0gICAgICAgIGludCBudW1BcmdzLAotICAgICAgICBjb25zdCBj
aGFyKiogYXJnTmFtZXMsCi0gICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGFyZ1R5cGVzLAot
ICAgICAgICBjb25zdCB1bnNpZ25lZCBsb25nIGxvbmcqIGFyZ1ZhbHVlcywKLSAgICAgICAgdW5z
aWduZWQgY2hhciBmbGFncykgeyB9Ci0KLSAgICAvLyBDYWxsYmFja3MgZm9yIHJlcG9ydGluZyBo
aXN0b2dyYW0gZGF0YS4KLSAgICAvLyBDdXN0b21Db3VudHMgaGlzdG9ncmFtIGhhcyBleHBvbmVu
dGlhbCBidWNrZXQgc2l6ZXMsIHNvIHRoYXQgbWluPTEsIG1heD0xMDAwMDAwLCBidWNrZXRDb3Vu
dD01MCB3b3VsZCBkby4KLSAgICB2aXJ0dWFsIHZvaWQgaGlzdG9ncmFtQ3VzdG9tQ291bnRzKGNv
bnN0IGNoYXIqIG5hbWUsIGludCBzYW1wbGUsIGludCBtaW4sIGludCBtYXgsIGludCBidWNrZXRD
b3VudCkgeyB9Ci0gICAgLy8gRW51bWVyYXRpb24gaGlzdG9ncmFtIGJ1Y2tldHMgYXJlIGxpbmVh
ciwgYm91bmRhcnlWYWx1ZSBzaG91bGQgYmUgbGFyZ2VyIHRoYW4gYW55IHBvc3NpYmxlIHNhbXBs
ZSB2YWx1ZS4KLSAgICB2aXJ0dWFsIHZvaWQgaGlzdG9ncmFtRW51bWVyYXRpb24oY29uc3QgY2hh
ciogbmFtZSwgaW50IHNhbXBsZSwgaW50IGJvdW5kYXJ5VmFsdWUpIHsgfQotCi0KLSAgICAvLyBH
UFUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQotICAgIC8vCi0gICAgLy8gTWF5IHJldHVybiBudWxsIGlmIEdQVSBpcyBub3Qg
c3VwcG9ydGVkLgotICAgIC8vIFJldHVybnMgbmV3bHkgYWxsb2NhdGVkIGFuZCBpbml0aWFsaXpl
ZCBvZmZzY3JlZW4gV2ViR3JhcGhpY3NDb250ZXh0M0QgaW5zdGFuY2UuCi0gICAgdmlydHVhbCBX
ZWJHcmFwaGljc0NvbnRleHQzRCogY3JlYXRlT2Zmc2NyZWVuR3JhcGhpY3NDb250ZXh0M0QoY29u
c3QgV2ViR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMmKSB7IHJldHVybiAwOyB9Ci0KLSAg
ICAvLyBNYXkgcmV0dXJuIG51bGwgaWYgR1BVIGlzIG5vdCBzdXBwb3J0ZWQuCi0gICAgLy8gUmV0
dXJucyB0aGUgc2hhcmVkIFdlYkdyYXBoaWNzQ29udGV4dDNELiBUaGlzIGlzIGEgc2luZ2xldG9u
IG9iamVjdCBmb3IKLSAgICAvLyB0aGUgZW50aXJlIHByb2Nlc3MuIENhbGxpbmcgdGhpcyBmdW5j
dGlvbiBtYXkgZGVzdHJveSBib3RoIHRoZSBzaGFyZWQKLSAgICAvLyBvZmZzY3JlZW4gV2ViR3Jh
cGhpY3NDb250ZXh0M0QgYW5kIEdyQ29udGV4dCBwb2ludGVycyBsYXN0IHJldHVybmVkLCBzbwot
ICAgIC8vIGl0IHNob3VsZCBvbmx5IGJlIGNhbGxlZCBmcm9tIGEgc2luZ2xlIHNpdGUuIFRoZSBp
bXBsZW1lbnRvciBzaG91bGQKLSAgICAvLyBjcmVhdGUgYSBuZXcgY29udGV4dCBiZWZvcmUgZGVz
dHJveWluZyBpdHMgY3VycmVudCBjb250ZXh0LCBpZiByZXF1aXJlZCwKLSAgICAvLyB0byBlbnN1
cmUgdGhlIHNhbWUgcG9pbnRlciBjYW4gbm90IGJlIHJldHVybmVkIHR3aWNlIGluIGEgcm93IGZv
ciB0d28KLSAgICAvLyBkaWZmZXJlbnQgY29udGV4dHMuCi0gICAgdmlydHVhbCBXZWJHcmFwaGlj
c0NvbnRleHQzRCogc2hhcmVkT2Zmc2NyZWVuR3JhcGhpY3NDb250ZXh0M0QoKSB7IHJldHVybiAw
OyB9Ci0KLSAgICAvLyBNYXkgcmV0dXJuIG51bGwgaWYgR1BVIGlzIG5vdCBzdXBwb3J0ZWQuCi0g
ICAgLy8gUmV0dXJucyB0aGUgc2hhcmVkIEdyQ29udGV4dC4gVGhpcyBpcyBhIHNpbmdsZXRvbiBv
YmplY3QgZm9yIHRoZSBlbnRpcmUgcHJvY2Vzcy4KLSAgICB2aXJ0dWFsIEdyQ29udGV4dCogc2hh
cmVkT2Zmc2NyZWVuR3JDb250ZXh0KCkgeyByZXR1cm4gMDsgfQotCi0gICAgLy8gUmV0dXJucyB0
cnVlIGlmIHRoZSBwbGF0Zm9ybSBpcyBjYXBhYmxlIG9mIHByb2R1Y2luZyBhbiBvZmZzY3JlZW4g
Y29udGV4dCBzdWl0YWJsZSBmb3IgYWNjZWxlcmF0aW5nIDJkIGNhbnZhcy4KLSAgICAvLyBUaGlz
IHdpbGwgcmV0dXJuIGZhbHNlIGlmIHRoZSBwbGF0Zm9ybSBjYW5ub3QgcHJvbWlzZSB0aGF0IGNv
bnRleHRzIHdpbGwgYmUgcHJlc2VydmVkIGFjcm9zcyBvcGVyYXRpb25zIGxpa2UKLSAgICAvLyBs
b2NraW5nIHRoZSBzY3JlZW4gb3IgaWYgdGhlIHBsYXRmb3JtIGNhbm5vdCBwcm92aWRlIGEgY29u
dGV4dCB3aXRoIHN1aXRhYmxlIHBlcmZvcm1hbmNlIGNoYXJhY3RlcmlzdGljcy4KLSAgICAvLwot
ICAgIC8vIFRoaXMgdmFsdWUgbXVzdCBiZSBjaGVja2VkIGFnYWluIGFmdGVyIGEgY29udGV4dCBs
b3NzIGV2ZW50IGFzIHRoZSBwbGF0Zm9ybSdzIGNhcGFiaWxpdGllcyBtYXkgaGF2ZSBjaGFuZ2Vk
LgotICAgIHZpcnR1YWwgYm9vbCBjYW5BY2NlbGVyYXRlMmRDYW52YXMoKSB7IHJldHVybiBmYWxz
ZTsgfQotCi0gICAgdmlydHVhbCBib29sIGlzVGhyZWFkZWRDb21wb3NpdGluZ0VuYWJsZWQoKSB7
IHJldHVybiBmYWxzZTsgfQotCi0gICAgdmlydHVhbCBXZWJDb21wb3NpdG9yU3VwcG9ydCogY29t
cG9zaXRvclN1cHBvcnQoKSB7IHJldHVybiAwOyB9Ci0KLSAgICB2aXJ0dWFsIFdlYkZsaW5nQW5p
bWF0b3IqIGNyZWF0ZUZsaW5nQW5pbWF0b3IoKSB7IHJldHVybiAwOyB9Ci0KLSAgICAvLyBDcmVh
dGVzIGEgbmV3IGZsaW5nIGFuaW1hdGlvbiBjdXJ2ZSBpbnN0YW5jZSBmb3IgZGV2aWNlIHxkZXZp
Y2VTb3VyY2V8Ci0gICAgLy8gd2l0aCB8dmVsb2NpdHl8IGFuZCBhbHJlYWR5IHNjcm9sbGVkIHxj
dW11bGF0aXZlU2Nyb2xsfCBwaXhlbHMuCi0gICAgdmlydHVhbCBXZWJHZXN0dXJlQ3VydmUqIGNy
ZWF0ZUZsaW5nQW5pbWF0aW9uQ3VydmUoaW50IGRldmljZVNvdXJjZSwgY29uc3QgV2ViRmxvYXRQ
b2ludCYgdmVsb2NpdHksIGNvbnN0IFdlYlNpemUmIGN1bXVsYXRpdmVTY3JvbGwpIHsgcmV0dXJu
IDA7IH0KLQotICAgIC8vIFdlYlJUQyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSAgICAvLyBDcmVhdGVzIGFuIFdlYlJUQ1BlZXJD
b25uZWN0aW9uSGFuZGxlciBmb3IgUlRDUGVlckNvbm5lY3Rpb24uCi0gICAgLy8gTWF5IHJldHVy
biBudWxsIGlmIFdlYlJUQyBmdW5jdGlvbmFsaXR5IGlzIG5vdCBhdmFsaWFibGUgb3Igb3V0IG9m
IHJlc291cmNlcy4KLSAgICB2aXJ0dWFsIFdlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlciogY3Jl
YXRlUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyKFdlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNs
aWVudCopIHsgcmV0dXJuIDA7IH0KLQotICAgIC8vIE1heSByZXR1cm4gbnVsbCBpZiBXZWJSVEMg
ZnVuY3Rpb25hbGl0eSBpcyBub3QgYXZhbGlhYmxlIG9yIG91dCBvZiByZXNvdXJjZXMuCi0gICAg
dmlydHVhbCBXZWJNZWRpYVN0cmVhbUNlbnRlciogY3JlYXRlTWVkaWFTdHJlYW1DZW50ZXIoV2Vi
TWVkaWFTdHJlYW1DZW50ZXJDbGllbnQqKSB7IHJldHVybiAwOyB9Ci0KLQotICAgIC8vIFdlYldv
cmtlciAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCi0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnRXb3JrZXJSdW5Mb29wKGNvbnN0IFdl
YldvcmtlclJ1bkxvb3AmKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkU3RvcFdvcmtlclJ1bkxv
b3AoY29uc3QgV2ViV29ya2VyUnVuTG9vcCYpIHsgfQotCi1wcm90ZWN0ZWQ6Ci0gICAgdmlydHVh
bCB+UGxhdGZvcm0oKSB7IH0KLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYK
SW5kZXg6IFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViQW5pbWF0aW9uLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJBbmltYXRpb24u
aAkocmV2aXNpb24gMTQ3NzEwKQorKysgU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9X
ZWJBbmltYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMSw3OCArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
LSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TgotICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCi0gKiBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaWZuZGVmIFdlYkFuaW1hdGlvbl9oCi0jZGVmaW5lIFdlYkFuaW1hdGlvbl9oCi0KLSNp
bmNsdWRlICJXZWJDb21tb24uaCIKLSNpbmNsdWRlICJXZWJOb25Db3B5YWJsZS5oIgotI2luY2x1
ZGUgIldlYlByaXZhdGVPd25QdHIuaCIKLQotI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgotI2lu
Y2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0jZW5kaWYKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotY2xh
c3MgQ0NBY3RpdmVBbmltYXRpb247Ci19Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1jbGFzcyBX
ZWJBbmltYXRpb25DdXJ2ZTsKLQotLy8gQSBjb21wb3NpdG9yIGRyaXZlbiBhbmltYXRpb24uCi1j
bGFzcyBXZWJBbmltYXRpb24gewotcHVibGljOgotICAgIGVudW0gVGFyZ2V0UHJvcGVydHkgewot
ICAgICAgICBUYXJnZXRQcm9wZXJ0eVRyYW5zZm9ybSA9IDAsCi0gICAgICAgIFRhcmdldFByb3Bl
cnR5T3BhY2l0eQotICAgIH07Ci0KLSAgICB2aXJ0dWFsIH5XZWJBbmltYXRpb24oKSB7IH0KLQot
ICAgIC8vIEFuIGlkIGlzIGVmZmVjdGl2ZWx5IHRoZSBhbmltYXRpb24ncyBuYW1lLCBhbmQgaXQg
aXMgbm90IHVuaXF1ZS4KLSAgICB2aXJ0dWFsIGludCBpZCgpID0gMDsKLQotICAgIHZpcnR1YWwg
VGFyZ2V0UHJvcGVydHkgdGFyZ2V0UHJvcGVydHkoKSBjb25zdCA9IDA7Ci0KLSAgICAvLyBUaGlz
IGlzIHRoZSBudW1iZXIgb2YgdGltZXMgdGhhdCB0aGUgYW5pbWF0aW9uIHdpbGwgcGxheS4gSWYg
dGhpcwotICAgIC8vIHZhbHVlIGlzIHplcm8gdGhlIGFuaW1hdGlvbiB3aWxsIG5vdCBwbGF5LiBJ
ZiBpdCBpcyBuZWdhdGl2ZSwgdGhlbgotICAgIC8vIHRoZSBhbmltYXRpb24gd2lsbCBsb29wIGlu
ZGVmaW5pdGVseS4KLSAgICB2aXJ0dWFsIGludCBpdGVyYXRpb25zKCkgY29uc3QgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCBzZXRJdGVyYXRpb25zKGludCkgPSAwOwotCi0gICAgdmlydHVhbCBkb3Vi
bGUgc3RhcnRUaW1lKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzZXRTdGFydFRpbWUo
ZG91YmxlIG1vbm90b25pY1RpbWUpID0gMDsKLQotICAgIHZpcnR1YWwgZG91YmxlIHRpbWVPZmZz
ZXQoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNldFRpbWVPZmZzZXQoZG91YmxlIG1v
bm90b25pY1RpbWUpID0gMDsKLQotICAgIC8vIElmIGFsdGVybmF0ZXNEaXJlY3Rpb24gaXMgdHJ1
ZSwgb24gb2RkIG51bWJlcmVkIGl0ZXJhdGlvbnMgd2UgcmV2ZXJzZSB0aGUgY3VydmUuCi0gICAg
dmlydHVhbCBib29sIGFsdGVybmF0ZXNEaXJlY3Rpb24oKSBjb25zdCA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIHNldEFsdGVybmF0ZXNEaXJlY3Rpb24oYm9vbCkgPSAwOwotfTsKLQotfSAvLyBuYW1l
c3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBXZWJBbmltYXRpb25faApJbmRleDogU291cmNlL1Bs
YXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJBbmltYXRpb25DdXJ2ZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViQW5pbWF0aW9uQ3VydmUuaAkocmV2
aXNpb24gMTQ3NzEwKQorKysgU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJBbmlt
YXRpb25DdXJ2ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDU2ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAot
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
Ci0gKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKLSAqIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNpZm5kZWYgV2ViQW5pbWF0aW9uQ3VydmVfaAotI2RlZmluZSBXZWJBbmltYXRpb25DdXJ2
ZV9oCi0KLSNpbmNsdWRlICJXZWJDb21tb24uaCIKLQotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQot
Y2xhc3MgV2ViQW5pbWF0aW9uQ3VydmUgewotcHVibGljOgotICAgIHZpcnR1YWwgfldlYkFuaW1h
dGlvbkN1cnZlKCkgeyB9Ci0KLSAgICBlbnVtIFRpbWluZ0Z1bmN0aW9uVHlwZSB7Ci0gICAgICAg
IFRpbWluZ0Z1bmN0aW9uVHlwZUVhc2UsCi0gICAgICAgIFRpbWluZ0Z1bmN0aW9uVHlwZUVhc2VJ
biwKLSAgICAgICAgVGltaW5nRnVuY3Rpb25UeXBlRWFzZU91dCwKLSAgICAgICAgVGltaW5nRnVu
Y3Rpb25UeXBlRWFzZUluT3V0LAotICAgICAgICBUaW1pbmdGdW5jdGlvblR5cGVMaW5lYXIKLSAg
ICB9OwotCi0gICAgZW51bSBBbmltYXRpb25DdXJ2ZVR5cGUgewotICAgICAgICBBbmltYXRpb25D
dXJ2ZVR5cGVGbG9hdCwKLSAgICAgICAgQW5pbWF0aW9uQ3VydmVUeXBlVHJhbnNmb3JtLAotICAg
IH07Ci0KLSAgICB2aXJ0dWFsIEFuaW1hdGlvbkN1cnZlVHlwZSB0eXBlKCkgY29uc3QgPSAwOwot
fTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBXZWJBbmltYXRpb25DdXJ2
ZV9oCi0KSW5kZXg6IFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViQW5pbWF0aW9u
RGVsZWdhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGlj
L1dlYkFuaW1hdGlvbkRlbGVnYXRlLmgJKHJldmlzaW9uIDE0NzcxMCkKKysrIFNvdXJjZS9QbGF0
Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViQW5pbWF0aW9uRGVsZWdhdGUuaAkod29ya2luZyBjb3B5
KQpAQCAtMSwzOCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
IEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgotICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTCi0gKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdlYkFuaW1hdGlvbkRl
bGVnYXRlX2gKLSNkZWZpbmUgV2ViQW5pbWF0aW9uRGVsZWdhdGVfaAotCi1uYW1lc3BhY2UgV2Vi
S2l0IHsKLQotY2xhc3MgV2ViQW5pbWF0aW9uRGVsZWdhdGUgewotcHVibGljOgotICAgIHZpcnR1
YWwgdm9pZCBub3RpZnlBbmltYXRpb25TdGFydGVkKGRvdWJsZSB0aW1lKSA9IDA7Ci0gICAgdmly
dHVhbCB2b2lkIG5vdGlmeUFuaW1hdGlvbkZpbmlzaGVkKGRvdWJsZSB0aW1lKSA9IDA7Ci19Owot
Ci19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIFdlYkFuaW1hdGlvbkRlbGVnYXRl
X2gKSW5kZXg6IFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViQXVkaW9CdXMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkF1ZGlvQnVz
LmgJKHJldmlzaW9uIDE0NzcxMCkKKysrIFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMv
V2ViQXVkaW9CdXMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw3OSArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDEwLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0g
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04K
LSAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwotICogU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2lmbmRlZiBXZWJBdWRpb0J1c19oCi0jZGVmaW5lIFdlYkF1ZGlvQnVzX2gKLQotI2luY2x1
ZGUgIldlYkNvbW1vbi5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7IGNsYXNzIEF1ZGlvQnVzOyB9
Ci0KLSNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KLW5hbWVzcGFjZSBXVEYgeyB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4gY2xhc3MgUGFzc093blB0cjsgfQotI2VuZGlmCi0KLW5hbWVzcGFjZSBXZWJL
aXQgewotCi1jbGFzcyBXZWJBdWRpb0J1c1ByaXZhdGU7Ci0KLS8vIEEgY29udGFpbmVyIGZvciBt
dWx0aS1jaGFubmVsIGxpbmVhciBQQ00gYXVkaW8gZGF0YS4KLS8vCi0vLyBXQVJOSU5HOiBJdCBp
cyBub3Qgc2FmZSB0byBwYXNzIGEgV2ViQXVkaW9CdXMgYWNyb3NzIHRocmVhZHMhISEKLS8vCi1j
bGFzcyBXZWJBdWRpb0J1cyB7Ci1wdWJsaWM6Ci0gICAgV2ViQXVkaW9CdXMoKSA6IG1fcHJpdmF0
ZSgwKSB7IH0KLSAgICB+V2ViQXVkaW9CdXMoKSB7IHJlc2V0KCk7IH0KLSAgICAKLSAgICAvLyBp
bml0aWFsaXplKCkgYWxsb2NhdGVzIG1lbW9yeSBvZiB0aGUgZ2l2ZW4gbGVuZ3RoIGZvciB0aGUg
Z2l2ZW4gbnVtYmVyIG9mIGNoYW5uZWxzLgotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBpbml0aWFs
aXplKHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIHNpemVfdCBsZW5ndGgsIGRvdWJsZSBzYW1w
bGVSYXRlKTsKLQotICAgIC8vIHJlc2l6ZVNtYWxsZXIoKSBjYW4gb25seSBiZSBjYWxsZWQgYWZ0
ZXIgaW5pdGlhbGl6ZSgpIHdpdGggYSBuZXcgbGVuZ3RoIDw9IHRoZSBpbml0aWFsaXphdGlvbiBs
ZW5ndGguCi0gICAgLy8gVGhlIGRhdGEgc3RvcmVkIGluIHRoZSBidXMgd2lsbCByZW1haW4gdW5k
aXN0dXJiZWQuCi0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHJlc2l6ZVNtYWxsZXIoc2l6ZV90IG5l
d0xlbmd0aCk7Ci0KLSAgICAvLyByZXNldCgpIHJlbGVhc2VzIHRoZSBtZW1vcnkgYWxsb2NhdGVk
IGZyb20gaW5pdGlhbGl6ZSgpLgotICAgIFdFQktJVF9FWFBPUlQgdm9pZCByZXNldCgpOwotICAg
IAotICAgIFdFQktJVF9FWFBPUlQgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscygpIGNvbnN0Owot
ICAgIFdFQktJVF9FWFBPUlQgc2l6ZV90IGxlbmd0aCgpIGNvbnN0OwotICAgIFdFQktJVF9FWFBP
UlQgZG91YmxlIHNhbXBsZVJhdGUoKSBjb25zdDsKLSAgICAKLSAgICBXRUJLSVRfRVhQT1JUIGZs
b2F0KiBjaGFubmVsRGF0YSh1bnNpZ25lZCBjaGFubmVsSW5kZXgpOwotCi0jaWYgV0VCS0lUX0lN
UExFTUVOVEFUSU9OCi0gICAgV1RGOjpQYXNzT3duUHRyPFdlYkNvcmU6OkF1ZGlvQnVzPiByZWxl
YXNlKCk7ICAgIAotI2VuZGlmCi0KLXByaXZhdGU6Ci0gICAgLy8gRGlzYWxsb3cgY29weSBhbmQg
YXNzaWduLgotICAgIFdlYkF1ZGlvQnVzKGNvbnN0IFdlYkF1ZGlvQnVzJik7Ci0gICAgdm9pZCBv
cGVyYXRvcj0oY29uc3QgV2ViQXVkaW9CdXMmKTsKLQotICAgIFdlYkNvcmU6OkF1ZGlvQnVzKiBt
X3ByaXZhdGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIFdlYkF1
ZGlvQnVzX2gKSW5kZXg6IFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViQXVkaW9E
ZXN0aW5hdGlvbkNvbnN1bWVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1BsYXRmb3JtL2Nocm9t
aXVtL3B1YmxpYy9XZWJBdWRpb0Rlc3RpbmF0aW9uQ29uc3VtZXIuaAkocmV2aXNpb24gMTQ3NzEw
KQorKysgU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJBdWRpb0Rlc3RpbmF0aW9u
Q29uc3VtZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSw0NSArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAq
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgot
ICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCi0gKiBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaWZuZGVmIFdlYkF1ZGlvRGVzdGluYXRpb25Db25zdW1lcl9oCi0jZGVmaW5lIFdlYkF1ZGlv
RGVzdGluYXRpb25Db25zdW1lcl9oCi0KLSNpbmNsdWRlICJXZWJWZWN0b3IuaCIKLQotbmFtZXNw
YWNlIFdlYktpdCB7Ci0KLWNsYXNzIFdlYkF1ZGlvRGVzdGluYXRpb25Db25zdW1lciB7Ci1wdWJs
aWM6Ci0gICAgdmlydHVhbCB+V2ViQXVkaW9EZXN0aW5hdGlvbkNvbnN1bWVyKCkgeyB9Ci0KLSAg
ICB2aXJ0dWFsIHZvaWQgc2V0Rm9ybWF0KHNpemVfdCBudW1iZXJPZkNoYW5uZWxzLCBmbG9hdCBz
YW1wbGVSYXRlKSA9IDA7Ci0KLSAgICAvLyBUaGUgc2l6ZSBvZiB0aGUgdmVjdG9yIGlzIHRoZSBu
dW1iZXIgb2YgYXVkaW8gY2hhbm5lbHMsIGFuZCBudW1iZXJPZkZyYW1lcyBpcyB0aGUKLSAgICAv
LyBudW1iZXIgb2YgYXVkaW8gZnJhbWVzIGluIHRoZSAocG9zc2libHkgbXVsdGktY2hhbm5lbCkg
YnVmZmVyIGluIGEgcGxhbmFyIGZvcm1hdC4KLSAgICB2aXJ0dWFsIHZvaWQgY29uc3VtZUF1ZGlv
KGNvbnN0IFdlYlZlY3Rvcjxjb25zdCBmbG9hdCo+Jiwgc2l6ZV90IG51bWJlck9mRnJhbWVzKSA9
IDA7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIFdlYkF1ZGlvRGVz
dGluYXRpb25Db25zdW1lcl9oCkluZGV4OiBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGlj
L1dlYkF1ZGlvRGV2aWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1BsYXRmb3JtL2Nocm9taXVt
L3B1YmxpYy9XZWJBdWRpb0RldmljZS5oCShyZXZpc2lvbiAxNDc3MTApCisrKyBTb3VyY2UvUGxh
dGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkF1ZGlvRGV2aWNlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEsNTcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4gIE5laXRoZXIgdGhlIG5h
bWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAq
ICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0g
KiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpZm5kZWYgV2ViQXVkaW9EZXZpY2VfaAotI2RlZmluZSBXZWJBdWRp
b0RldmljZV9oCi0KLSNpbmNsdWRlICJXZWJWZWN0b3IuaCIKLQotbmFtZXNwYWNlIFdlYktpdCB7
Ci0KLS8vIEFic3RyYWN0IGludGVyZmFjZSB0byB0aGUgQ2hyb21pdW0gYXVkaW8gc3lzdGVtLgot
Ci1jbGFzcyBXZWJBdWRpb0RldmljZSB7Ci1wdWJsaWM6Ci0gICAgY2xhc3MgUmVuZGVyQ2FsbGJh
Y2sgewotICAgIHB1YmxpYzoKLSAgICAgICAgdmlydHVhbCB2b2lkIHJlbmRlcihjb25zdCBXZWJW
ZWN0b3I8ZmxvYXQqPiYgc291cmNlRGF0YSwgY29uc3QgV2ViVmVjdG9yPGZsb2F0Kj4mIGRlc3Rp
bmF0aW9uRGF0YSwgc2l6ZV90IG51bWJlck9mRnJhbWVzKSB7IH07Ci0KLSAgICBwcm90ZWN0ZWQ6
Ci0gICAgICAgIHZpcnR1YWwgflJlbmRlckNhbGxiYWNrKCkgeyB9Ci0gICAgfTsKLSAgCi0gICAg
dmlydHVhbCB+V2ViQXVkaW9EZXZpY2UoKSB7IH0KLQotICAgIHZpcnR1YWwgdm9pZCBzdGFydCgp
ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpID0gMDsKLSAgICB2aXJ0dWFsIGRvdWJsZSBz
YW1wbGVSYXRlKCkgPSAwOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAv
LyBXZWJBdWRpb0RldmljZV9oCkluZGV4OiBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGlj
L1dlYkJsb2JEYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1
YmxpYy9XZWJCbG9iRGF0YS5oCShyZXZpc2lvbiAxNDc3MTApCisrKyBTb3VyY2UvUGxhdGZvcm0v
Y2hyb21pdW0vcHVibGljL1dlYkJsb2JEYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsOTcgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoK
LSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAot
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNpZm5kZWYgV2ViQmxvYkRhdGFfaAotI2RlZmluZSBXZWJCbG9iRGF0YV9oCi0KLSNpbmNs
dWRlICJXZWJTdHJpbmcuaCIKLSNpbmNsdWRlICJXZWJUaHJlYWRTYWZlRGF0YS5oIgotI2luY2x1
ZGUgIldlYlVSTC5oIgotCi0jaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7IGNsYXNzIEJsb2JEYXRhOyB9Ci1uYW1lc3BhY2UgV1RGIHsgdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+IGNsYXNzIFBhc3NPd25QdHI7IH0KLSNlbmRpZgotCi1uYW1lc3BhY2UgV2ViS2l0IHsK
LQotY2xhc3MgV2ViQmxvYkRhdGFQcml2YXRlOwotCi1jbGFzcyBXZWJCbG9iRGF0YSB7Ci1wdWJs
aWM6Ci0gICAgc3RydWN0IEl0ZW0gewotICAgICAgICBlbnVtIHsgVHlwZURhdGEsIFR5cGVGaWxl
LCBUeXBlQmxvYiwgVHlwZVVSTCB9IHR5cGU7Ci0gICAgICAgIFdlYlRocmVhZFNhZmVEYXRhIGRh
dGE7Ci0gICAgICAgIFdlYlN0cmluZyBmaWxlUGF0aDsKLSAgICAgICAgV2ViVVJMIHVybDsgLy8g
Rm9yIFR5cGVCbG9iIG9yIFR5cGVVUkwuCi0gICAgICAgIGxvbmcgbG9uZyBvZmZzZXQ7Ci0gICAg
ICAgIGxvbmcgbG9uZyBsZW5ndGg7IC8vIC0xIG1lYW5zIGdvIHRvIHRoZSBlbmQgb2YgdGhlIGZp
bGUvYmxvYi4KLSAgICAgICAgZG91YmxlIGV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZTsgLy8gMC4w
IG1lYW5zIHRoYXQgdGhlIHRpbWUgaXMgbm90IHNldC4KLQotICAgICAgICAvLyBGSVhNRTogZGVw
cmVjYXRlIHRoaXMuCi0gICAgICAgIFdlYlVSTCBibG9iVVJMOwotICAgIH07Ci0KLSAgICB+V2Vi
QmxvYkRhdGEoKSB7IHJlc2V0KCk7IH0KLQotICAgIFdlYkJsb2JEYXRhKCkgOiBtX3ByaXZhdGUo
MCkgeyB9Ci0KLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgaW5pdGlhbGl6ZSgpOwotICAgIFdFQktJ
VF9FWFBPUlQgdm9pZCByZXNldCgpOwotCi0gICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVy
biAhbV9wcml2YXRlOyB9Ci0KLSAgICAvLyBSZXR1cm5zIHRoZSBudW1iZXIgb2YgaXRlbXMuCi0g
ICAgV0VCS0lUX0VYUE9SVCBzaXplX3QgaXRlbUNvdW50KCkgY29uc3Q7Ci0KLSAgICAvLyBSZXRy
aWV2ZXMgdGhlIHZhbHVlcyBvZiB0aGUgaXRlbSBhdCB0aGUgZ2l2ZW4gaW5kZXguIFJldHVybnMg
ZmFsc2UgaWYKLSAgICAvLyBpbmRleCBpcyBvdXQgb2YgYm91bmRzLgotICAgIFdFQktJVF9FWFBP
UlQgYm9vbCBpdGVtQXQoc2l6ZV90IGluZGV4LCBJdGVtJiByZXN1bHQpIGNvbnN0OwotCi0gICAg
V0VCS0lUX0VYUE9SVCBXZWJTdHJpbmcgY29udGVudFR5cGUoKSBjb25zdDsKLQotICAgIFdFQktJ
VF9FWFBPUlQgV2ViU3RyaW5nIGNvbnRlbnREaXNwb3NpdGlvbigpIGNvbnN0OwotCi0jaWYgV0VC
S0lUX0lNUExFTUVOVEFUSU9OCi0gICAgV2ViQmxvYkRhdGEoY29uc3QgV1RGOjpQYXNzT3duUHRy
PFdlYkNvcmU6OkJsb2JEYXRhPiYpOwotICAgIFdlYkJsb2JEYXRhJiBvcGVyYXRvcj0oY29uc3Qg
V1RGOjpQYXNzT3duUHRyPFdlYkNvcmU6OkJsb2JEYXRhPiYpOwotICAgIG9wZXJhdG9yIFdURjo6
UGFzc093blB0cjxXZWJDb3JlOjpCbG9iRGF0YT4oKTsKLSNlbmRpZgotCi1wcml2YXRlOgotI2lm
IFdFQktJVF9JTVBMRU1FTlRBVElPTgotICAgIHZvaWQgYXNzaWduKGNvbnN0IFdURjo6UGFzc093
blB0cjxXZWJDb3JlOjpCbG9iRGF0YT4mKTsKLSNlbmRpZgotICAgIFdlYkJsb2JEYXRhUHJpdmF0
ZSogbV9wcml2YXRlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBX
ZWJCbG9iRGF0YV9oCkluZGV4OiBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkJs
b2JSZWdpc3RyeS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJs
aWMvV2ViQmxvYlJlZ2lzdHJ5LmgJKHJldmlzaW9uIDE0NzcxMCkKKysrIFNvdXJjZS9QbGF0Zm9y
bS9jaHJvbWl1bS9wdWJsaWMvV2ViQmxvYlJlZ2lzdHJ5LmgJKHdvcmtpbmcgY29weSkKQEAgLTEs
NTggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0
OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
Ci0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpZm5kZWYgV2ViQmxvYlJlZ2lzdHJ5X2gKLSNkZWZpbmUgV2ViQmxvYlJlZ2lz
dHJ5X2gKLQotI2luY2x1ZGUgIldlYkNvbW1vbi5oIgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQot
Y2xhc3MgV2ViQmxvYkRhdGE7Ci1jbGFzcyBXZWJVUkw7Ci0KLWNsYXNzIFdlYkJsb2JSZWdpc3Ry
eSB7Ci1wdWJsaWM6Ci0gICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgV2ViQmxvYlJlZ2lzdHJ5KiBj
cmVhdGUoKTsKLQotICAgIHZpcnR1YWwgfldlYkJsb2JSZWdpc3RyeSgpIHsgfQotCi0gICAgLy8g
UmVnaXN0ZXJzIGEgYmxvYiBVUkwgcmVmZXJyaW5nIHRvIHRoZSBzcGVjaWZpZWQgYmxvYiBkYXRh
LgotICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3QgV2ViVVJMJiwgV2ViQmxv
YkRhdGEmKSA9IDA7Ci0gICAgCi0gICAgLy8gUmVnaXN0ZXJzIGEgYmxvYiBVUkwgcmVmZXJyaW5n
IHRvIHRoZSBibG9iIGRhdGEgaWRlbnRpZmllZCBieSB0aGUgc3BlY2lmaWVkIHNyY1VSTC4KLSAg
ICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFdlYlVSTCYsIGNvbnN0IFdlYlVS
TCYgc3JjVVJMKSA9IDA7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgdW5yZWdpc3RlckJsb2JVUkwoY29u
c3QgV2ViVVJMJikgPSAwOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAv
LyBXZWJCbG9iUmVnaXN0cnlfaApJbmRleDogU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1Ymxp
Yy9XZWJDU3RyaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1
YmxpYy9XZWJDU3RyaW5nLmgJKHJldmlzaW9uIDE0NzcxMCkKKysrIFNvdXJjZS9QbGF0Zm9ybS9j
aHJvbWl1bS9wdWJsaWMvV2ViQ1N0cmluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDEzMyArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgot
ICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0g
KiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2lmbmRlZiBXZWJDU3RyaW5nX2gKLSNkZWZpbmUgV2ViQ1N0cmluZ19oCi0KLSNpbmNsdWRl
ICJXZWJDb21tb24uaCIKLQotI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgotI2luY2x1ZGUgPHd0
Zi9Gb3J3YXJkLmg+Ci0jZWxzZQotI2luY2x1ZGUgPHN0cmluZz4KLSNlbmRpZgotCi1uYW1lc3Bh
Y2UgV1RGIHsKLWNsYXNzIENTdHJpbmc7Ci19Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1jbGFz
cyBXZWJDU3RyaW5nUHJpdmF0ZTsKLWNsYXNzIFdlYlN0cmluZzsKLQotLy8gQSBzaW5nbGUtYnl0
ZSBzdHJpbmcgY29udGFpbmVyIHdpdGggdW5zcGVjaWZpZWQgZW5jb2RpbmcuICBJdCBpcwotLy8g
aW5leHBlbnNpdmUgdG8gY29weSBhIFdlYkNTdHJpbmcgb2JqZWN0LgotLy8KLS8vIFdBUk5JTkc6
IEl0IGlzIG5vdCBzYWZlIHRvIHBhc3MgYSBXZWJDU3RyaW5nIGFjcm9zcyB0aHJlYWRzISEhCi0v
LwotY2xhc3MgV2ViQ1N0cmluZyB7Ci1wdWJsaWM6Ci0gICAgfldlYkNTdHJpbmcoKSB7IHJlc2V0
KCk7IH0KLQotICAgIFdlYkNTdHJpbmcoKSA6IG1fcHJpdmF0ZSgwKSB7IH0KLQotICAgIFdlYkNT
dHJpbmcoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbikgOiBtX3ByaXZhdGUoMCkKLSAgICB7
Ci0gICAgICAgIGFzc2lnbihkYXRhLCBsZW4pOwotICAgIH0KLQotICAgIFdlYkNTdHJpbmcoY29u
c3QgV2ViQ1N0cmluZyYgcykgOiBtX3ByaXZhdGUoMCkgeyBhc3NpZ24ocyk7IH0KLQotICAgIFdl
YkNTdHJpbmcmIG9wZXJhdG9yPShjb25zdCBXZWJDU3RyaW5nJiBzKQotICAgIHsKLSAgICAgICAg
YXNzaWduKHMpOwotICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotCi0gICAgLy8gUmV0dXJu
cyAwIGlmIGJvdGggc3RyaW5ncyBhcmUgZXF1YWxzLCBhIHZhbHVlIGdyZWF0ZXIgdGhhbiB6ZXJv
IGlmIHRoZQotICAgIC8vIGZpcnN0IGNoYXJhY3RlciB0aGF0IGRvZXMgbm90IG1hdGNoIGhhcyBh
IGdyZWF0ZXIgdmFsdWUgaW4gdGhpcyBzdHJpbmcKLSAgICAvLyB0aGFuIGluIHxvdGhlcnwsIG9y
IGEgdmFsdWUgbGVzcyB0aGFuIHplcm8gdG8gaW5kaWNhdGUgdGhlIG9wcG9zaXRlLgotICAgIFdF
QktJVF9FWFBPUlQgaW50IGNvbXBhcmUoY29uc3QgV2ViQ1N0cmluZyYgb3RoZXIpIGNvbnN0Owot
Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHJlc2V0KCk7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lk
IGFzc2lnbihjb25zdCBXZWJDU3RyaW5nJik7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIGFzc2ln
bihjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuKTsKLQotICAgIFdFQktJVF9FWFBPUlQgc2l6
ZV90IGxlbmd0aCgpIGNvbnN0OwotICAgIFdFQktJVF9FWFBPUlQgY29uc3QgY2hhciogZGF0YSgp
IGNvbnN0OwotCi0gICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIWxlbmd0aCgpOyB9
Ci0gICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiAhbV9wcml2YXRlOyB9Ci0KLSAgICBX
RUJLSVRfRVhQT1JUIFdlYlN0cmluZyB1dGYxNigpIGNvbnN0OwotCi0jaWYgV0VCS0lUX0lNUExF
TUVOVEFUSU9OCi0gICAgV2ViQ1N0cmluZyhjb25zdCBXVEY6OkNTdHJpbmcmKTsKLSAgICBXZWJD
U3RyaW5nJiBvcGVyYXRvcj0oY29uc3QgV1RGOjpDU3RyaW5nJik7Ci0gICAgb3BlcmF0b3IgV1RG
OjpDU3RyaW5nKCkgY29uc3Q7Ci0jZWxzZQotICAgIFdlYkNTdHJpbmcoY29uc3Qgc3RkOjpzdHJp
bmcmIHMpIDogbV9wcml2YXRlKDApCi0gICAgewotICAgICAgICBhc3NpZ24ocy5kYXRhKCksIHMu
bGVuZ3RoKCkpOwotICAgIH0KLQotICAgIFdlYkNTdHJpbmcmIG9wZXJhdG9yPShjb25zdCBzdGQ6
OnN0cmluZyYgcykKLSAgICB7Ci0gICAgICAgIGFzc2lnbihzLmRhdGEoKSwgcy5sZW5ndGgoKSk7
Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0KLSAgICBvcGVyYXRvciBzdGQ6OnN0cmlu
ZygpIGNvbnN0Ci0gICAgewotICAgICAgICBzaXplX3QgbGVuID0gbGVuZ3RoKCk7Ci0gICAgICAg
IHJldHVybiBsZW4gPyBzdGQ6OnN0cmluZyhkYXRhKCksIGxlbikgOiBzdGQ6OnN0cmluZygpOwot
ICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBVVEYxNlN0cmluZz4KLSAgICBzdGF0aWMgV2Vi
Q1N0cmluZyBmcm9tVVRGMTYoY29uc3QgVVRGMTZTdHJpbmcmIHMpCi0gICAgewotICAgICAgICBy
ZXR1cm4gZnJvbVVURjE2KHMuZGF0YSgpLCBzLmxlbmd0aCgpKTsKLSAgICB9Ci0jZW5kaWYKLQot
cHJpdmF0ZToKLSAgICB2b2lkIGFzc2lnbihXZWJDU3RyaW5nUHJpdmF0ZSopOwotICAgIFdlYkNT
dHJpbmdQcml2YXRlKiBtX3ByaXZhdGU7Ci19OwotCi1pbmxpbmUgYm9vbCBvcGVyYXRvcjwoY29u
c3QgV2ViQ1N0cmluZyYgYSwgY29uc3QgV2ViQ1N0cmluZyYgYikKLXsKLSAgICByZXR1cm4gYS5j
b21wYXJlKGIpIDwgMDsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZgpJbmRl
eDogU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJDYW52YXMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkNhbnZhcy5oCShyZXZpc2lv
biAxNDc3MTApCisrKyBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkNhbnZhcy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDQ0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwot
ICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAot
ICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdlYkNhbnZhc19oCi0jZGVm
aW5lIFdlYkNhbnZhc19oCi0KLSNpbmNsdWRlICJXZWJDb21tb24uaCIKLQotY2xhc3MgU2tDYW52
YXM7Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi10eXBlZGVmIFNrQ2FudmFzIFdlYkNhbnZhczsK
LQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZgpJbmRleDogU291cmNlL1BsYXRmb3Jt
L2Nocm9taXVtL3B1YmxpYy9XZWJDbGlwYm9hcmQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvUGxh
dGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkNsaXBib2FyZC5oCShyZXZpc2lvbiAxNDc3MTApCisr
KyBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkNsaXBib2FyZC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDEwMCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAq
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBXZWJDbGlwYm9hcmRfaAotI2RlZmluZSBX
ZWJDbGlwYm9hcmRfaAotCi0jaW5jbHVkZSAiV2ViQ29tbW9uLmgiCi0jaW5jbHVkZSAiV2ViRGF0
YS5oIgotI2luY2x1ZGUgIldlYkltYWdlLmgiCi0jaW5jbHVkZSAiV2ViU3RyaW5nLmgiCi0jaW5j
bHVkZSAiV2ViVVJMLmgiCi0jaW5jbHVkZSAiV2ViVmVjdG9yLmgiCi0KLW5hbWVzcGFjZSBXZWJL
aXQgewotCi1jbGFzcyBXZWJEcmFnRGF0YTsKLWNsYXNzIFdlYkltYWdlOwotY2xhc3MgV2ViVVJM
OwotCi1jbGFzcyBXZWJDbGlwYm9hcmQgewotcHVibGljOgotICAgIGVudW0gRm9ybWF0IHsKLSAg
ICAgICAgRm9ybWF0UGxhaW5UZXh0LAotICAgICAgICBGb3JtYXRIVE1MLAotICAgICAgICBGb3Jt
YXRCb29rbWFyaywKLSAgICAgICAgRm9ybWF0U21hcnRQYXN0ZQotICAgIH07Ci0KLSAgICBlbnVt
IEJ1ZmZlciB7Ci0gICAgICAgIEJ1ZmZlclN0YW5kYXJkLAotICAgICAgICAvLyBVc2VkIG9uIHBs
YXRmb3JtcyBsaWtlIHRoZSBYIFdpbmRvdyBTeXN0ZW0gdGhhdCB0cmVhdCBzZWxlY3Rpb24KLSAg
ICAgICAgLy8gYXMgYSB0eXBlIG9mIGNsaXBib2FyZC4KLSAgICAgICAgQnVmZmVyU2VsZWN0aW9u
LAotICAgIH07Ci0KLSAgICAvLyBSZXR1cm5zIGFuIGlkZW50aWZpZXIgd2hpY2ggY2FuIGJlIHVz
ZWQgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdGhlIGRhdGEKLSAgICAvLyBjb250YWluZWQgd2l0aGlu
IHRoZSBjbGlwYm9hcmQgaGFzIGNoYW5nZWQuCi0gICAgdmlydHVhbCB1aW50NjRfdCBzZXF1ZW5j
ZU51bWJlcihCdWZmZXIpIHsgcmV0dXJuIDA7IH0KLQotICAgIHZpcnR1YWwgYm9vbCBpc0Zvcm1h
dEF2YWlsYWJsZShGb3JtYXQsIEJ1ZmZlcikgeyByZXR1cm4gZmFsc2U7IH0KLQotICAgIHZpcnR1
YWwgV2ViVmVjdG9yPFdlYlN0cmluZz4gcmVhZEF2YWlsYWJsZVR5cGVzKAotICAgICAgICBCdWZm
ZXIsIGJvb2wqIGNvbnRhaW5zRmlsZW5hbWVzKSB7IHJldHVybiBXZWJWZWN0b3I8V2ViU3RyaW5n
PigpOyB9Ci0gICAgdmlydHVhbCBXZWJTdHJpbmcgcmVhZFBsYWluVGV4dChCdWZmZXIpIHsgcmV0
dXJuIFdlYlN0cmluZygpOyB9Ci0gICAgLy8gZnJhZ21lbnRTdGFydCBhbmQgZnJhZ21lbnRFbmQg
YXJlIGluZGV4ZXMgaW50byB0aGUgcmV0dXJuZWQgbWFya3VwIHRoYXQKLSAgICAvLyBpbmRpY2F0
ZSB0aGUgc3RhcnQgYW5kIGVuZCBvZiB0aGUgZnJhZ21lbnQgaWYgdGhlIHJldHVybmVkIG1hcmt1
cAotICAgIC8vIGNvbnRhaW5zIGFkZGl0aW9uYWwgY29udGV4dC4gSWYgdGhlcmUgaXMgbm8gYWRk
aXRpb25hbCBjb250ZXh0LAotICAgIC8vIGZyYWdtZW50U3RhcnQgd2lsbCBiZSB6ZXJvIGFuZCBm
cmFnbWVudEVuZCB3aWxsIGJlIHRoZSBzYW1lIGFzIHRoZSBsZW5ndGgKLSAgICAvLyBvZiB0aGUg
cmV0dXJuZWQgbWFya3VwLgotICAgIHZpcnR1YWwgV2ViU3RyaW5nIHJlYWRIVE1MKAotICAgICAg
ICBCdWZmZXIgYnVmZmVyLCBXZWJVUkwqIHBhZ2VVUkwsIHVuc2lnbmVkKiBmcmFnbWVudFN0YXJ0
LAotICAgICAgICB1bnNpZ25lZCogZnJhZ21lbnRFbmQpIHsgcmV0dXJuIFdlYlN0cmluZygpOyB9
Ci0gICAgdmlydHVhbCBXZWJEYXRhIHJlYWRJbWFnZShCdWZmZXIpIHsgcmV0dXJuIFdlYkRhdGEo
KTsgfQotICAgIHZpcnR1YWwgV2ViU3RyaW5nIHJlYWRDdXN0b21EYXRhKAotICAgICAgICBCdWZm
ZXIsIGNvbnN0IFdlYlN0cmluZyYgdHlwZSkgeyByZXR1cm4gV2ViU3RyaW5nKCk7IH0KLQotICAg
IHZpcnR1YWwgdm9pZCB3cml0ZVBsYWluVGV4dChjb25zdCBXZWJTdHJpbmcmKSB7IH0KLSAgICB2
aXJ0dWFsIHZvaWQgd3JpdGVIVE1MKAotICAgICAgICBjb25zdCBXZWJTdHJpbmcmIGh0bWxUZXh0
LCBjb25zdCBXZWJVUkwmLAotICAgICAgICBjb25zdCBXZWJTdHJpbmcmIHBsYWluVGV4dCwgYm9v
bCB3cml0ZVNtYXJ0UGFzdGUpIHsgfQotICAgIHZpcnR1YWwgdm9pZCB3cml0ZVVSTCgKLSAgICAg
ICAgY29uc3QgV2ViVVJMJiwgY29uc3QgV2ViU3RyaW5nJiB0aXRsZSkgeyB9Ci0gICAgdmlydHVh
bCB2b2lkIHdyaXRlSW1hZ2UoCi0gICAgICAgIGNvbnN0IFdlYkltYWdlJiwgY29uc3QgV2ViVVJM
JiwgY29uc3QgV2ViU3RyaW5nJiB0aXRsZSkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHdyaXRlRGF0
YU9iamVjdChjb25zdCBXZWJEcmFnRGF0YSYpIHsgfQotCi1wcm90ZWN0ZWQ6Ci0gICAgfldlYkNs
aXBib2FyZCgpIHsgfQotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZgpJbmRl
eDogU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJDb2xvci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViQ29sb3IuaAkocmV2aXNpb24g
MTQ3NzEwKQorKysgU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJDb2xvci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDQwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICog
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdlYkNvbG9yX2gKLSNkZWZpbmUg
V2ViQ29sb3JfaAotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotdHlwZWRlZiB1bnNpZ25lZCBXZWJD
b2xvcjsgIC8vIFJHQkEgcXVhZC4gRXF1aXZhbGVudCB0byBTa0NvbG9yLgotCi19IC8vIG5hbWVz
cGFjZSBXZWJLaXQKLQotI2VuZGlmCkluZGV4OiBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVi
bGljL1dlYkNvbW1vbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9w
dWJsaWMvV2ViQ29tbW9uLmgJKHJldmlzaW9uIDE0NzcxMCkKKysrIFNvdXJjZS9QbGF0Zm9ybS9j
aHJvbWl1bS9wdWJsaWMvV2ViQ29tbW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsOTkgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
Ci0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICog
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpZm5kZWYgV2ViQ29tbW9uX2gKLSNkZWZpbmUgV2ViQ29tbW9uX2gKLQotLy8gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KLS8vIERlZmF1bHQgY29uZmlndXJhdGlvbgotCi0jaWYgIWRlZmluZWQoV0VC
S0lUX0lNUExFTUVOVEFUSU9OKQotICAgICNkZWZpbmUgV0VCS0lUX0lNUExFTUVOVEFUSU9OIDAK
LSNlbmRpZgotCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gRXhwb3J0ZWQgc3ltYm9scyBu
ZWVkIHRvIGJlIGFubm90YXRlZCB3aXRoIFdFQktJVF9FWFBPUlQKLQotI2lmIGRlZmluZWQoV0VC
S0lUX0RMTCkKLSAgICAjaWYgZGVmaW5lZChXSU4zMikKLSAgICAgICAgI2lmIFdFQktJVF9JTVBM
RU1FTlRBVElPTgotICAgICAgICAgICAgI2RlZmluZSBXRUJLSVRfRVhQT1JUIF9fZGVjbHNwZWMo
ZGxsZXhwb3J0KQotICAgICAgICAjZWxzZQotICAgICAgICAgICAgI2RlZmluZSBXRUJLSVRfRVhQ
T1JUIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQotICAgICAgICAjZW5kaWYKLSAgICAjZWxzZQotICAg
ICAgICAjZGVmaW5lIFdFQktJVF9FWFBPUlQgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVm
YXVsdCIpKSkKLSAgICAjZW5kaWYKLSNlbHNlCi0gICAgI2RlZmluZSBXRUJLSVRfRVhQT1JUCi0j
ZW5kaWYKLQotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIEJhc2ljIHR5cGVzCi0KLSNpbmNs
dWRlIDxzdGRkZWYuaD4gLy8gRm9yIHNpemVfdAotCi0jaWYgZGVmaW5lZChXSU4zMikKLS8vIFZp
c3VhbCBTdHVkaW8gZG9lc24ndCBoYXZlIHN0ZGludC5oLgotdHlwZWRlZiBzaG9ydCBpbnQxNl90
OwotdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCB1aW50MTZfdDsKLXR5cGVkZWYgaW50IGludDMyX3Q7
Ci10eXBlZGVmIHVuc2lnbmVkIGludCB1aW50MzJfdDsKLSNlbmRpZgotCi1uYW1lc3BhY2UgV2Vi
S2l0IHsKLQotLy8gVVRGLTE2IGNoYXJhY3RlciB0eXBlCi0jaWYgZGVmaW5lZChXSU4zMikKLXR5
cGVkZWYgd2NoYXJfdCBXZWJVQ2hhcjsKLSNlbHNlCi10eXBlZGVmIHVuc2lnbmVkIHNob3J0IFdl
YlVDaGFyOwotI2VuZGlmCi0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBBc3NlcnRpb25z
Ci0KLVdFQktJVF9FWFBPUlQgdm9pZCBmYWlsZWRBc3NlcnRpb24oY29uc3QgY2hhciogZmlsZSwg
aW50IGxpbmUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uLCBjb25zdCBjaGFyKiBhc3NlcnRpb24pOwot
Ci19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotLy8gSWRlYWxseSwgb25seSB1c2UgaW5zaWRlIHRo
ZSBwdWJsaWMgZGlyZWN0b3J5IGJ1dCBvdXRzaWRlIG9mIFdFQktJVF9JTVBMRU1FTlRBVElPTiBi
bG9ja3MuICAoT3RoZXJ3aXNlIHVzZSBXVEYncyBBU1NFUlQuKQotI2lmIGRlZmluZWQoTkRFQlVH
KQotI2RlZmluZSBXRUJLSVRfQVNTRVJUKGFzc2VydGlvbikgKCh2b2lkKTApCi0jZWxzZQotI2Rl
ZmluZSBXRUJLSVRfQVNTRVJUKGFzc2VydGlvbikgZG8geyBcCi0gICAgaWYgKCEoYXNzZXJ0aW9u
KSkgXAotICAgICAgICBmYWlsZWRBc3NlcnRpb24oX19GSUxFX18sIF9fTElORV9fLCBfX0ZVTkNU
SU9OX18sICNhc3NlcnRpb24pOyBcCi19IHdoaWxlICgwKQotI2VuZGlmCi0KLSNkZWZpbmUgV0VC
S0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpIFdFQktJVF9BU1NFUlQoMCkKLQotI2VuZGlmCkluZGV4
OiBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkNvbXBvc2l0b3JPdXRwdXRTdXJm
YWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJD
b21wb3NpdG9yT3V0cHV0U3VyZmFjZS5oCShyZXZpc2lvbiAxNDc3MTApCisrKyBTb3VyY2UvUGxh
dGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkNvbXBvc2l0b3JPdXRwdXRTdXJmYWNlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTEsMzYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFT
IElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgV2ViQ29tcG9zaXRvck91
dHB1dFN1cmZhY2VfaAotI2RlZmluZSBXZWJDb21wb3NpdG9yT3V0cHV0U3VyZmFjZV9oCi0KLW5h
bWVzcGFjZSBXZWJLaXQgewotCi0vLyBBbiBlbXB0eSBiYXNlIGNsYXNzIGZvciBjYzo6T3V0cHV0
U3VyZmFjZSBpbiBjaHJvbWl1bS4KLWNsYXNzIFdlYkNvbXBvc2l0b3JPdXRwdXRTdXJmYWNlIHsg
fTsKLQotfQotCi0jZW5kaWYKSW5kZXg6IFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMv
V2ViQ29tcG9zaXRvclN1cHBvcnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvUGxhdGZvcm0vY2hy
b21pdW0vcHVibGljL1dlYkNvbXBvc2l0b3JTdXBwb3J0LmgJKHJldmlzaW9uIDE0NzcxMCkKKysr
IFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViQ29tcG9zaXRvclN1cHBvcnQuaAko
d29ya2luZyBjb3B5KQpAQCAtMSwxMDQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRP
UlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
Ci0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgV2ViQ29tcG9z
aXRvclN1cHBvcnRfaAotI2RlZmluZSBXZWJDb21wb3NpdG9yU3VwcG9ydF9oCi0KLSNpbmNsdWRl
ICJXZWJBbmltYXRpb24uaCIKLSNpbmNsdWRlICJXZWJDb21tb24uaCIKLSNpbmNsdWRlICJXZWJM
YXllclRyZWVWaWV3LmgiCi0jaW5jbHVkZSAiV2ViU2Nyb2xsYmFyVGhlbWVQYWludGVyLmgiCi0K
LW5hbWVzcGFjZSBXZWJLaXQgewotCi1jbGFzcyBXZWJBbmltYXRpb25DdXJ2ZTsKLWNsYXNzIFdl
YkNvbXBvc2l0b3JPdXRwdXRTdXJmYWNlOwotY2xhc3MgV2ViQ29udGVudExheWVyOwotY2xhc3Mg
V2ViQ29udGVudExheWVyQ2xpZW50OwotY2xhc3MgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXI7Ci1j
bGFzcyBXZWJFeHRlcm5hbFRleHR1cmVMYXllckNsaWVudDsKLWNsYXNzIFdlYkZsb2F0QW5pbWF0
aW9uQ3VydmU7Ci1jbGFzcyBXZWJHcmFwaGljc0NvbnRleHQzRDsKLWNsYXNzIFdlYkltYWdlTGF5
ZXI7Ci1jbGFzcyBXZWJMYXllcjsKLWNsYXNzIFdlYlNjcm9sbGJhcjsKLWNsYXNzIFdlYlNjcm9s
bGJhckxheWVyOwotY2xhc3MgV2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeTsKLWNsYXNzIFdlYlNv
bGlkQ29sb3JMYXllcjsKLWNsYXNzIFdlYlRocmVhZDsKLWNsYXNzIFdlYlRyYW5zZm9ybUFuaW1h
dGlvbkN1cnZlOwotY2xhc3MgV2ViVHJhbnNmb3JtT3BlcmF0aW9uczsKLQotY2xhc3MgV2ViQ29t
cG9zaXRvclN1cHBvcnQgewotcHVibGljOgotICAgIC8vIEluaXRpYWxpemVzIHRoZSBjb21wb3Np
dG9yLiBUaHJlYWRlZCBjb21wb3NpdGluZyBpcyBlbmFibGVkIGJ5IHBhc3NpbmcgaW4KLSAgICAv
LyBhIG5vbi1udWxsIFdlYlRocmVhZC4gTm8gY29tcG9zaXRvciBjbGFzc2VzIG9yIG1ldGhvZHMg
c2hvdWxkIGJlIHVzZWQKLSAgICAvLyBwcmlvciB0byBjYWxsaW5nIGluaXRpYWxpemUuCi0gICAg
dmlydHVhbCB2b2lkIGluaXRpYWxpemUoV2ViVGhyZWFkKikgeyB9Ci0KLSAgICAvLyBTaHV0cyBk
b3duIHRoZSBjb21wb3NpdG9yLiBUaGlzIG11c3QgYmUgY2FsbGVkIHdoZW4gYWxsIGNvbXBvc2l0
b3IgZGF0YQotICAgIC8vIHR5cGVzIGhhdmUgYmVlbiBkZWxldGVkLiBObyBjb21wb3NpdG9yIGNs
YXNzZXMgb3IgbWV0aG9kcyBzaG91bGQgYmUgdXNlZAotICAgIC8vIGFmdGVyIHNodXRkb3duLgot
ICAgIHZpcnR1YWwgdm9pZCBzaHV0ZG93bigpIHsgfQotCi0gICAgLy8gQ3JlYXRlcyBhbiBvdXRw
dXQgc3VyZmFjZSBmb3IgdGhlIGNvbXBvc2l0b3IgYmFja2VkIGJ5IGEgM2QgY29udGV4dC4KLSAg
ICB2aXJ0dWFsIFdlYkNvbXBvc2l0b3JPdXRwdXRTdXJmYWNlKiBjcmVhdGVPdXRwdXRTdXJmYWNl
Rm9yM0QoV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCopIHsgcmV0dXJuIDA7IH0KLQotICAg
IC8vIENyZWF0ZXMgYW4gb3V0cHV0IHN1cmZhY2UgZm9yIHRoZSBjb21wb3NpdG9yIGJhY2tlZCBi
eSBhIHNvZnR3YXJlIGRldmljZS4KLSAgICB2aXJ0dWFsIFdlYkNvbXBvc2l0b3JPdXRwdXRTdXJm
YWNlKiBjcmVhdGVPdXRwdXRTdXJmYWNlRm9yU29mdHdhcmUoKSB7IHJldHVybiAwOyB9Ci0KLSAg
ICAvLyBMYXllcnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQotCi0gICAgdmlydHVhbCBXZWJMYXllciogY3JlYXRlTGF5ZXIoKSB7IHJldHVy
biAwOyB9Ci0KLSAgICB2aXJ0dWFsIFdlYkNvbnRlbnRMYXllciogY3JlYXRlQ29udGVudExheWVy
KFdlYkNvbnRlbnRMYXllckNsaWVudCopIHsgcmV0dXJuIDA7IH0KLQotICAgIHZpcnR1YWwgV2Vi
RXh0ZXJuYWxUZXh0dXJlTGF5ZXIqIGNyZWF0ZUV4dGVybmFsVGV4dHVyZUxheWVyKFdlYkV4dGVy
bmFsVGV4dHVyZUxheWVyQ2xpZW50KiA9IDApIHsgcmV0dXJuIDA7IH0KLQotICAgIHZpcnR1YWwg
V2ViSW1hZ2VMYXllciogY3JlYXRlSW1hZ2VMYXllcigpIHsgcmV0dXJuIDA7IH0KLQotICAgIHZp
cnR1YWwgV2ViU29saWRDb2xvckxheWVyKiBjcmVhdGVTb2xpZENvbG9yTGF5ZXIoKSB7IHJldHVy
biAwOyB9Ci0KLSAgICB2aXJ0dWFsIFdlYlNjcm9sbGJhckxheWVyKiBjcmVhdGVTY3JvbGxiYXJM
YXllcihXZWJTY3JvbGxiYXIqLCBXZWJTY3JvbGxiYXJUaGVtZVBhaW50ZXIsIFdlYlNjcm9sbGJh
clRoZW1lR2VvbWV0cnkqKSB7IHJldHVybiAwOyB9Ci0KLQotICAgIC8vIEFuaW1hdGlvbiAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSAgICB2
aXJ0dWFsIFdlYkFuaW1hdGlvbiogY3JlYXRlQW5pbWF0aW9uKGNvbnN0IFdlYkFuaW1hdGlvbkN1
cnZlJiwgV2ViQW5pbWF0aW9uOjpUYXJnZXRQcm9wZXJ0eSwgaW50IGFuaW1hdGlvbklkID0gMCkg
eyByZXR1cm4gMDsgfQotCi0gICAgdmlydHVhbCBXZWJGbG9hdEFuaW1hdGlvbkN1cnZlKiBjcmVh
dGVGbG9hdEFuaW1hdGlvbkN1cnZlKCkgeyByZXR1cm4gMDsgfQotCi0gICAgdmlydHVhbCBXZWJU
cmFuc2Zvcm1BbmltYXRpb25DdXJ2ZSogY3JlYXRlVHJhbnNmb3JtQW5pbWF0aW9uQ3VydmUoKSB7
IHJldHVybiAwOyB9Ci0KLSAgICB2aXJ0dWFsIFdlYlRyYW5zZm9ybU9wZXJhdGlvbnMqIGNyZWF0
ZVRyYW5zZm9ybU9wZXJhdGlvbnMoKSB7IHJldHVybiAwOyB9Ci0KLQotcHJvdGVjdGVkOgotICAg
IHZpcnR1YWwgfldlYkNvbXBvc2l0b3JTdXBwb3J0KCkgeyB9Ci19OwotCi19Ci0KLSNlbmRpZiAv
LyBXZWJDb21wb3NpdG9yU3VwcG9ydF9oCkluZGV4OiBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0v
cHVibGljL1dlYkNvbnRlbnRMYXllci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9QbGF0Zm9ybS9j
aHJvbWl1bS9wdWJsaWMvV2ViQ29udGVudExheWVyLmgJKHJldmlzaW9uIDE0NzcxMCkKKysrIFNv
dXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViQ29udGVudExheWVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNjUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElT
IiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgV2ViQ29udGVudExheWVyX2gK
LSNkZWZpbmUgV2ViQ29udGVudExheWVyX2gKLQotI2luY2x1ZGUgIldlYkNvbW1vbi5oIgotI2lu
Y2x1ZGUgIldlYkxheWVyLmgiCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotY2xhc3MgV2ViQ29udGVu
dExheWVyQ2xpZW50OwotCi1jbGFzcyBXZWJDb250ZW50TGF5ZXIgewotcHVibGljOgotICAgIHZp
cnR1YWwgfldlYkNvbnRlbnRMYXllcigpIHsgfQotCi0gICAgLy8gVGhlIFdlYkNvbnRlbnRMYXll
ciBoYXMgb3duZXJzaGlwIG9mIHRoaXMgd3JhcHBlci4KLSAgICB2aXJ0dWFsIFdlYkxheWVyKiBs
YXllcigpID0gMDsKLQotICAgIC8vIFNldCB0byB0cnVlIGlmIHRoZSBiYWNrc2lkZSBvZiB0aGlz
IGxheWVyJ3MgY29udGVudHMgc2hvdWxkIGJlIHZpc2libGUgd2hlbiBjb21wb3NpdGVkLgotICAg
IC8vIERlZmF1bHRzIHRvIGZhbHNlLgotICAgIHZpcnR1YWwgdm9pZCBzZXREb3VibGVTaWRlZChi
b29sKSA9IDA7Ci0KLSAgICAvLyBBbGxvdyB0aGUgY29tcG9zaXRvciB0byBkZXRlcm1pbmUgdGhl
IHNjYWxlIGF0IHdoaWNoIHRoZSBsYXllciBzaG91bGQKLSAgICAvLyBiZSByYXN0ZXJpemVkIGJh
c2VkIG9uIHRoZSBsYXllcidzIGhpZXJhcmNoeSBhbmQgdHJhbnNmb3JtLiBUaGlzIGRlZmF1bHRz
Ci0gICAgLy8gdG8gZmFsc2UuCi0gICAgdmlydHVhbCB2b2lkIHNldEF1dG9tYXRpY2FsbHlDb21w
dXRlUmFzdGVyU2NhbGUoYm9vbCkgeyB9Ci0KLSAgICAvLyBTZXQgdG8gcmVuZGVyIHRleHQgaW4g
dGhpcyBsYXllciB3aXRoIExDRCBhbnRpYWxpYXNpbmcuIE9ubHkgc2V0IGlmIHlvdSBrbm93IHRo
YXQgdGhpcyBsYXllciB3aWxsIGJlCi0gICAgLy8gZHJhd24gaW4gYSB3YXkgd2hlcmUgdGhpcyBt
YWtlcyBzZW5zZSAtIGkuZS4gb3BhcXVlIGJhY2tncm91bmQsIG5vdCByb3RhdGVkIG9yIHNjYWxl
ZCwgZXRjLgotICAgIC8vIERlZmF1bHRzIHRvIGZhbHNlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRV
c2VMQ0RUZXh0KGJvb2wpID0gMDsKLQotICAgIC8vIFNldCB0byBkcmF3IGEgc3lzdGVtLWRlZmlu
ZWQgY2hlY2tlcmJvYXJkIGlmIHRoZSBjb21wb3NpdG9yIHdvdWxkIG90aGVyd2lzZSBkcmF3IGEg
dGlsZSBpbiB0aGlzIGxheWVyCi0gICAgLy8gYW5kIHRoZSBhY3R1YWwgY29udGVudHMgYXJlIHVu
YXZhaWxhYmxlLiBJZiBmYWxzZSwgdGhlIGNvbXBvc2l0b3Igd2lsbCBkcmF3IHRoZSBsYXllcidz
IGJhY2tncm91bmQgY29sb3IKLSAgICAvLyBmb3IgdGhlc2UgdGlsZXMuCi0gICAgLy8gRGVmYXVs
dHMgdG8gZmFsc2UuCi0gICAgdmlydHVhbCB2b2lkIHNldERyYXdDaGVja2VyYm9hcmRGb3JNaXNz
aW5nVGlsZXMoYm9vbCkgPSAwOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRp
ZiAvLyBXZWJDb250ZW50TGF5ZXJfaApJbmRleDogU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1
YmxpYy9XZWJDb250ZW50TGF5ZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvUGxhdGZv
cm0vY2hyb21pdW0vcHVibGljL1dlYkNvbnRlbnRMYXllckNsaWVudC5oCShyZXZpc2lvbiAxNDc3
MTApCisrKyBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkNvbnRlbnRMYXllckNs
aWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09O
VFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdl
YkNvbnRlbnRMYXllckNsaWVudF9oCi0jZGVmaW5lIFdlYkNvbnRlbnRMYXllckNsaWVudF9oCi0K
LSNpbmNsdWRlICJXZWJDYW52YXMuaCIKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci1zdHJ1Y3QgV2Vi
UmVjdDsKLXN0cnVjdCBXZWJGbG9hdFJlY3Q7Ci0KLWNsYXNzIFdlYkNvbnRlbnRMYXllckNsaWVu
dCB7Ci1wdWJsaWM6Ci0gICAgLy8gUGFpbnRzIHRoZSBjb250ZW50IGFyZWEgZm9yIHRoZSBsYXll
ciwgdHlwaWNhbGx5IGRpcnR5IHJlY3RzIHN1Ym1pdHRlZAotICAgIC8vIHRocm91Z2ggV2ViQ29u
dGVudExheWVyOjpzZXROZWVkc0Rpc3BsYXksIHN1Ym1pdHRpbmcgZHJhd2luZyBjb21tYW5kcwot
ICAgIC8vIHRocm91Z2ggdGhlIFdlYkNhbnZhcy4KLSAgICAvLyBUaGUgY2FudmFzIGlzIGFscmVh
ZHkgY2xpcHBlZCB0byB0aGUgfGNsaXB8IHJlY3QuCi0gICAgLy8gT3B0aW9uYWxseSwgdGhlIGlt
cGxlbWVudGF0aW9uIG1heSBzZXQgfG9wYXF1ZXwgdG8gYSByZWN0IGNvdmVyaW5nIHBpeGVscyB0
aGF0Ci0gICAgLy8gdGhlIGltcGxlbWVudGF0aW9uIGtub3dzIGFyZSBvcGFxdWUuIFRoaXMgaW5m
b3JtYXRpb24gY2FuIGJlIHVzZWQgZm9yIHZhcmlvdXMKLSAgICAvLyBvcHRpbWl6YXRpb25zLgot
ICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzKFdlYkNhbnZhcyosIGNvbnN0IFdlYlJlY3Qm
IGNsaXAsIGJvb2wgY2FuUGFpbnRMQ0RUZXh0LCBXZWJGbG9hdFJlY3QmIG9wYXF1ZSkgPSAwOwot
Ci1wcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB+V2ViQ29udGVudExheWVyQ2xpZW50KCkgeyB9Ci19
OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIFdlYkNvbnRlbnRMYXllckNs
aWVudF9oCkluZGV4OiBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkNvb2tpZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViQ29va2ll
LmgJKHJldmlzaW9uIDE0NzcxMCkKKysrIFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMv
V2ViQ29va2llLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNzUgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRp
b24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0g
KiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgV2ViQ29v
a2llX2gKLSNkZWZpbmUgV2ViQ29va2llX2gKLQotI2luY2x1ZGUgIldlYkNvbW1vbi5oIgotI2lu
Y2x1ZGUgIldlYlN0cmluZy5oIgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotLy8gQSBjb29raWUu
Ci0vLwotc3RydWN0IFdlYkNvb2tpZSB7Ci0gICAgV2ViQ29va2llKCkKLSAgICAgICAgOiBleHBp
cmVzKDApCi0gICAgICAgICwgaHR0cE9ubHkoZmFsc2UpCi0gICAgICAgICwgc2VjdXJlKGZhbHNl
KQotICAgICAgICAsIHNlc3Npb24oZmFsc2UpCi0gICAgewotICAgIH0KLQotICAgIFdlYkNvb2tp
ZShjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYlN0cmluZyYgdmFsdWUsIGNvbnN0IFdl
YlN0cmluZyYgZG9tYWluLAotICAgICAgICAgICAgICBjb25zdCBXZWJTdHJpbmcmIHBhdGgsIGRv
dWJsZSBleHBpcmVzLCBib29sIGh0dHBPbmx5LCBib29sIHNlY3VyZSwgYm9vbCBzZXNzaW9uKQot
ICAgICAgICA6IG5hbWUobmFtZSkKLSAgICAgICAgLCB2YWx1ZSh2YWx1ZSkKLSAgICAgICAgLCBk
b21haW4oZG9tYWluKQotICAgICAgICAsIHBhdGgocGF0aCkKLSAgICAgICAgLCBleHBpcmVzKGV4
cGlyZXMpCi0gICAgICAgICwgaHR0cE9ubHkoaHR0cE9ubHkpCi0gICAgICAgICwgc2VjdXJlKHNl
Y3VyZSkKLSAgICAgICAgLCBzZXNzaW9uKHNlc3Npb24pCi0gICAgewotICAgIH0KLQotICAgIFdl
YlN0cmluZyBuYW1lOwotICAgIFdlYlN0cmluZyB2YWx1ZTsKLSAgICBXZWJTdHJpbmcgZG9tYWlu
OwotICAgIFdlYlN0cmluZyBwYXRoOwotICAgIGRvdWJsZSBleHBpcmVzOwotICAgIGJvb2wgaHR0
cE9ubHk7Ci0gICAgYm9vbCBzZWN1cmU7Ci0gICAgYm9vbCBzZXNzaW9uOwotfTsKLQotfSAvLyBu
YW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZgpJbmRleDogU291cmNlL1BsYXRmb3JtL2Nocm9taXVt
L3B1YmxpYy9XZWJDb29raWVKYXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvUGxhdGZvcm0vY2hy
b21pdW0vcHVibGljL1dlYkNvb2tpZUphci5oCShyZXZpc2lvbiAxNDc3MTApCisrKyBTb3VyY2Uv
UGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkNvb2tpZUphci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDU2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAq
IG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAq
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0g
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaWZuZGVmIFdlYkNvb2tpZUphcl9oCi0jZGVmaW5lIFdlYkNvb2tpZUph
cl9oCi0KLSNpbmNsdWRlICJXZWJTdHJpbmcuaCIKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci1jbGFz
cyBXZWJVUkw7Ci1zdHJ1Y3QgV2ViQ29va2llOwotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNz
IFdlYlZlY3RvcjsKLQotY2xhc3MgV2ViQ29va2llSmFyIHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFs
IHZvaWQgc2V0Q29va2llKGNvbnN0IFdlYlVSTCYsIGNvbnN0IFdlYlVSTCYgZmlyc3RQYXJ0eUZv
ckNvb2tpZXMsIGNvbnN0IFdlYlN0cmluZyYgY29va2llKSB7IH0KLSAgICB2aXJ0dWFsIFdlYlN0
cmluZyBjb29raWVzKGNvbnN0IFdlYlVSTCYsIGNvbnN0IFdlYlVSTCYgZmlyc3RQYXJ0eUZvckNv
b2tpZXMpIHsgcmV0dXJuIFdlYlN0cmluZygpOyB9Ci0gICAgdmlydHVhbCBXZWJTdHJpbmcgY29v
a2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgV2ViVVJMJiwgY29uc3QgV2ViVVJMJiBm
aXJzdFBhcnR5Rm9yQ29va2llcykgeyByZXR1cm4gV2ViU3RyaW5nKCk7IH0KLSAgICB2aXJ0dWFs
IHZvaWQgcmF3Q29va2llcyhjb25zdCBXZWJVUkwmLCBjb25zdCBXZWJVUkwmIGZpcnN0UGFydHlG
b3JDb29raWVzLCBXZWJWZWN0b3I8V2ViQ29va2llPiYpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBk
ZWxldGVDb29raWUoY29uc3QgV2ViVVJMJiwgY29uc3QgV2ViU3RyaW5nJiBjb29raWVOYW1lKSB7
IH0KLSAgICB2aXJ0dWFsIGJvb2wgY29va2llc0VuYWJsZWQoY29uc3QgV2ViVVJMJiwgY29uc3Qg
V2ViVVJMJiBmaXJzdFBhcnR5Rm9yQ29va2llcykgeyByZXR1cm4gdHJ1ZTsgfQotCi1wcm90ZWN0
ZWQ6Ci0gICAgfldlYkNvb2tpZUphcigpIHsgfQotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0
Ci0KLSNlbmRpZgpJbmRleDogU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJEYXRh
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJEYXRh
LmgJKHJldmlzaW9uIDE0NzcxMCkKKysrIFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMv
V2ViRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDExMCArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlv
bi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAq
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBXZWJEYXRh
X2gKLSNkZWZpbmUgV2ViRGF0YV9oCi0KLSNpbmNsdWRlICJXZWJDb21tb24uaCIKLQotI2lmIFdF
QktJVF9JTVBMRU1FTlRBVElPTgotbmFtZXNwYWNlIFdlYkNvcmUgeyBjbGFzcyBTaGFyZWRCdWZm
ZXI7IH0KLW5hbWVzcGFjZSBXVEYgeyB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgUGFzc1Jl
ZlB0cjsgfQotI2VuZGlmCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1jbGFzcyBXZWJEYXRhUHJp
dmF0ZTsKLQotLy8gQSBjb250YWluZXIgZm9yIHJhdyBieXRlcy4gIEl0IGlzIGluZXhwZW5zaXZl
IHRvIGNvcHkgYSBXZWJEYXRhIG9iamVjdC4KLS8vCi0vLyBXQVJOSU5HOiBJdCBpcyBub3Qgc2Fm
ZSB0byBwYXNzIGEgV2ViRGF0YSBhY3Jvc3MgdGhyZWFkcyEhIQotLy8KLWNsYXNzIFdlYkRhdGEg
ewotcHVibGljOgotICAgIH5XZWJEYXRhKCkgeyByZXNldCgpOyB9Ci0KLSAgICBXZWJEYXRhKCkg
OiBtX3ByaXZhdGUoMCkgeyB9Ci0KLSAgICBXZWJEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVf
dCBzaXplKSA6IG1fcHJpdmF0ZSgwKQotICAgIHsKLSAgICAgICAgYXNzaWduKGRhdGEsIHNpemUp
OwotICAgIH0KLQotICAgIHRlbXBsYXRlIDxpbnQgTj4KLSAgICBXZWJEYXRhKGNvbnN0IGNoYXIg
KCZkYXRhKVtOXSkgOiBtX3ByaXZhdGUoMCkKLSAgICB7Ci0gICAgICAgIGFzc2lnbihkYXRhLCBO
IC0gMSk7Ci0gICAgfQotCi0gICAgV2ViRGF0YShjb25zdCBXZWJEYXRhJiBkKSA6IG1fcHJpdmF0
ZSgwKSB7IGFzc2lnbihkKTsgfQotCi0gICAgV2ViRGF0YSYgb3BlcmF0b3I9KGNvbnN0IFdlYkRh
dGEmIGQpCi0gICAgewotICAgICAgICBhc3NpZ24oZCk7Ci0gICAgICAgIHJldHVybiAqdGhpczsK
LSAgICB9Ci0KLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVzZXQoKTsKLSAgICBXRUJLSVRfRVhQ
T1JUIHZvaWQgYXNzaWduKGNvbnN0IFdlYkRhdGEmKTsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQg
YXNzaWduKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKTsKLQotICAgIFdFQktJVF9FWFBP
UlQgc2l6ZV90IHNpemUoKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JUIGNvbnN0IGNoYXIqIGRh
dGEoKSBjb25zdDsKLQotICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFzaXplKCk7
IH0KLSAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuICFtX3ByaXZhdGU7IH0KLQotI2lm
IFdFQktJVF9JTVBMRU1FTlRBVElPTgotICAgIFdlYkRhdGEoY29uc3QgV1RGOjpQYXNzUmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mKTsKLSAgICBXZWJEYXRhJiBvcGVyYXRvcj0oY29uc3Qg
V1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mKTsKLSAgICBvcGVyYXRvciBX
VEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPigpIGNvbnN0OwotI2Vsc2UKLSAg
ICB0ZW1wbGF0ZSA8Y2xhc3MgQz4KLSAgICBXZWJEYXRhKGNvbnN0IEMmIGMpIDogbV9wcml2YXRl
KDApCi0gICAgewotICAgICAgICBhc3NpZ24oYy5kYXRhKCksIGMuc2l6ZSgpKTsKLSAgICB9Ci0K
LSAgICB0ZW1wbGF0ZSA8Y2xhc3MgQz4KLSAgICBXZWJEYXRhJiBvcGVyYXRvcj0oY29uc3QgQyYg
YykKLSAgICB7Ci0gICAgICAgIGFzc2lnbihjLmRhdGEoKSwgYy5zaXplKCkpOwotICAgICAgICBy
ZXR1cm4gKnRoaXM7Ci0gICAgfQotI2VuZGlmCi0KLXByaXZhdGU6Ci0gICAgdm9pZCBhc3NpZ24o
V2ViRGF0YVByaXZhdGUqKTsKLSAgICBXZWJEYXRhUHJpdmF0ZSogbV9wcml2YXRlOwotfTsKLQot
fSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZgpJbmRleDogU291cmNlL1BsYXRmb3JtL2No
cm9taXVtL3B1YmxpYy9XZWJEaXNjYXJkYWJsZU1lbW9yeS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViRGlzY2FyZGFibGVNZW1vcnkuaAkocmV2aXNp
b24gMTQ3NzEwKQorKysgU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJEaXNjYXJk
YWJsZU1lbW9yeS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDc1ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJ
VFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMK
LSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZu
ZGVmIFdlYkRpc2NhcmRhYmxlTWVtb3J5X2gKLSNkZWZpbmUgV2ViRGlzY2FyZGFibGVNZW1vcnlf
aAotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotLy8gQSBtZW1vcnkgYWxsb2NhdGlvbiB0aGF0IGNh
biBiZSBhdXRvbWF0aWNhbGx5IGRpc2NhcmRlZCBieSB0aGUgb3BlcmF0aW5nCi0vLyBzeXN0ZW0g
dW5kZXIgbWVtb3J5IHByZXNzdXJlLgotLy8KLS8vIERpc2NhcmRhYmxlIHVzYWdlIGlzIHR5cGlj
YWxseToKLS8vICAgIFdlYkRpc2NhcmRhYmxlTWVtb3J5KiBtZW0gPSBhbGxvY2F0ZUFuZExvY2tl
ZERpc2NhcmRhYmxlTWVtb3J5KDEwMjQqMTAyNCk7Ci0vLyAgICB2b2lkKiBkYXRhID0gbWVtLT5k
YXRhKCk7Ci0vLyAgICBtZW1zZXQoZGF0YSwgMywgMTAyNCoxMDI0KTsKLS8vICAgIG1lbS0+dW5s
b2NrKCk7Ci0vLwotLy8gTGF0ZXIsIHdoZW4geW91IG5lZWQgaXQgYWdhaW46Ci0vLyAgICBpZiAo
IW1lbS0+bG9jaygpKSB7Ci0vLyAgICAgICAuLi4gaGFuZGxlIHRoZSBmYWN0IHRoYXQgdGhlIG1l
bW9yeSBpcyBnb25lLi4uCi0vLyAgICAgICBkZWxldGUgbWVtOyAvLyBNYWtlIHN1cmUgdG8gZGVz
dHJveSBpdC4gSXQgaXMgbmV2ZXIgZ29pbmcgdG8gY29tZSBiYWNrLgotLy8gICAgICAgcmV0dXJu
OwotLy8gICAgfQotLy8gICAgLi4uIHVzZSBtZW0tPmRhdGEoKSBhcyBtdWNoIGFzIHlvdSB3YW50
Ci0vLyAgICBtZW0tPnVubG9jaygpOwotLy8KLWNsYXNzIFdlYkRpc2NhcmRhYmxlTWVtb3J5IHsK
LXB1YmxpYzoKLSAgICAvLyBNdXN0IG5vdCBiZSBjYWxsZWQgd2hpbGUgbG9ja2VkLgotICAgIHZp
cnR1YWwgfldlYkRpc2NhcmRhYmxlTWVtb3J5KCkgeyB9Ci0KLSAgICAvLyBMb2NrcyB0aGUgbWVt
b3J5LCBwcmV2ZW50IGl0IGZyb20gYmVpbmcgZGlzY2FyZGVkLiBPbmNlIGxvY2tlZC4geW91IG1h
eQotICAgIC8vIG9idGFpbiBhIHBvaW50ZXIgdG8gdGhhdCBtZW1vcnkgdXNpbmcgdGhlIGRhdGEo
KSBtZXRob2QuCi0gICAgLy8KLSAgICAvLyBsb2NrKCkgbWF5IHJldHVybiBmYWxzZSwgaW5kaWNh
dGluZyB0aGF0IHRoZSB1bmRlcmx5aW5nIG1lbW9yeSB3YXMKLSAgICAvLyBkaXNjYXJkZWQgYW5k
IHRoYXQgdGhlIGxvY2sgZmFpbGVkLiBJbiB0aGlzIGNhc2UsIHRoZQotICAgIC8vIFdlYkRpc2Nh
cmRhYmxlTWVtb3J5IGlzIGVmZmVjdGl2ZWx5IGRlYWQuCi0gICAgLy8KLSAgICAvLyBOZXN0ZWQg
Y2FsbHMgdG8gbG9jayBhcmUgbm90IGFsbG93ZWQuCi0gICAgdmlydHVhbCBib29sIGxvY2soKSA9
IDA7Ci0KLSAgICAvLyBSZXR1cm5zIHRoZSBjdXJyZW50IHBvaW50ZXIgZm9yIHRoZSBkaXNjYXJk
YWJsZSBtZW1vcnkuIFRoaXMgY2FsbCBpcyBPTkxZCi0gICAgLy8gdmFsaWQgd2hlbiB0aGUgZGlz
Y2FyZGFibGUgbWVtb3J5IG9iamVjdCBpcyBsb2NrZWQuCi0gICAgdmlydHVhbCB2b2lkKiBkYXRh
KCkgPSAwOwotCi0gICAgLy8gVW5sb2NrIHRoZSBtZW1vcnkgc28gdGhhdCBpdCBjYW4gYmUgcHVy
Z2VkIGJ5IHRoZSBzeXN0ZW0uIE11c3QgYmUgY2FsbGVkCi0gICAgLy8gYWZ0ZXIgZXZlcnkgc3Vj
Y2Vzc2Z1bCBsb2NrIGNhbGwuCi0gICAgdmlydHVhbCB2b2lkIHVubG9jaygpID0gMDsKLX07Ci0K
LX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYKSW5kZXg6IFNvdXJjZS9QbGF0Zm9ybS9j
aHJvbWl1bS9wdWJsaWMvV2ViRHJhZ0RhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvUGxhdGZv
cm0vY2hyb21pdW0vcHVibGljL1dlYkRyYWdEYXRhLmgJKHJldmlzaW9uIDE0NzcxMCkKKysrIFNv
dXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViRHJhZ0RhdGEuaAkod29ya2luZyBjb3B5
KQpAQCAtMSwxMjMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0g
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgV2ViRHJhZ0RhdGFfaAotI2RlZmluZSBXZWJEcmFn
RGF0YV9oCi0KLSNpbmNsdWRlICJXZWJDb21tb24uaCIKLSNpbmNsdWRlICJXZWJEYXRhLmgiCi0j
aW5jbHVkZSAiV2ViU3RyaW5nLmgiCi0jaW5jbHVkZSAiV2ViVVJMLmgiCi0KLSNpZiBXRUJLSVRf
SU1QTEVNRU5UQVRJT04KLW5hbWVzcGFjZSBXZWJDb3JlIHsgY2xhc3MgQ2hyb21pdW1EYXRhT2Jq
ZWN0OyB9Ci1uYW1lc3BhY2UgV1RGIHsgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIFBhc3NS
ZWZQdHI7IH0KLSNlbmRpZgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotY2xhc3MgV2ViRHJhZ0Rh
dGFQcml2YXRlOwotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIFdlYlZlY3RvcjsKLQotLy8g
SG9sZHMgZGF0YSB0aGF0IG1heSBiZSBleGNoYW5nZWQgdGhyb3VnaCBhIGRyYWctbi1kcm9wIG9w
ZXJhdGlvbi4gSXQgaXMKLS8vIGluZXhwZW5zaXZlIHRvIGNvcHkgYSBXZWJEcmFnRGF0YSBvYmpl
Y3QuCi1jbGFzcyBXZWJEcmFnRGF0YSB7Ci1wdWJsaWM6Ci0gICAgc3RydWN0IEl0ZW0gewotICAg
ICAgICBlbnVtIFN0b3JhZ2VUeXBlIHsKLSAgICAgICAgICAgIC8vIFN0cmluZyBkYXRhIHdpdGgg
YW4gYXNzb2NpYXRlZCBNSU1FIHR5cGUuIERlcGVuZGluZyBvbiB0aGUgTUlNRSB0eXBlLCB0aGVy
ZSBtYXkgYmUKLSAgICAgICAgICAgIC8vIG9wdGlvbmFsIG1ldGFkYXRhIGF0dHJpYnV0ZXMgYXMg
d2VsbC4KLSAgICAgICAgICAgIFN0b3JhZ2VUeXBlU3RyaW5nLAotICAgICAgICAgICAgLy8gU3Rv
cmVzIHRoZSBuYW1lIG9mIG9uZSBmaWxlIGJlaW5nIGRyYWdnZWQgaW50byB0aGUgcmVuZGVyZXIu
Ci0gICAgICAgICAgICBTdG9yYWdlVHlwZUZpbGVuYW1lLAotICAgICAgICAgICAgLy8gQW4gaW1h
Z2UgYmVpbmcgZHJhZ2dlZCBvdXQgb2YgdGhlIHJlbmRlcmVyLiBDb250YWlucyBhIGJ1ZmZlciBo
b2xkaW5nIHRoZSBpbWFnZSBkYXRhCi0gICAgICAgICAgICAvLyBhcyB3ZWxsIGFzIHRoZSBzdWdn
ZXN0ZWQgbmFtZSBmb3Igc2F2aW5nIHRoZSBpbWFnZSB0by4KLSAgICAgICAgICAgIFN0b3JhZ2VU
eXBlQmluYXJ5RGF0YSwKLSAgICAgICAgfTsKLQotICAgICAgICBTdG9yYWdlVHlwZSBzdG9yYWdl
VHlwZTsKLQotICAgICAgICAvLyBPbmx5IHZhbGlkIHdoZW4gc3RvcmFnZVR5cGUgPT0gU3RvcmFn
ZVR5cGVTdHJpbmcuCi0gICAgICAgIFdlYlN0cmluZyBzdHJpbmdUeXBlOwotICAgICAgICBXZWJT
dHJpbmcgc3RyaW5nRGF0YTsKLQotICAgICAgICAvLyBPbmx5IHZhbGlkIHdoZW4gc3RvcmFnZVR5
cGUgPT0gU3RvcmFnZVR5cGVGaWxlbmFtZS4KLSAgICAgICAgV2ViU3RyaW5nIGZpbGVuYW1lRGF0
YTsKLSAgICAgICAgV2ViU3RyaW5nIGRpc3BsYXlOYW1lRGF0YTsKLQotICAgICAgICAvLyBPbmx5
IHZhbGlkIHdoZW4gc3RvcmFnZVR5cGUgPT0gU3RvcmFnZVR5cGVCaW5hcnlEYXRhLgotICAgICAg
ICBXZWJEYXRhIGJpbmFyeURhdGE7Ci0KLSAgICAgICAgLy8gVGl0bGUgYXNzb2NpYXRlZCB3aXRo
IGEgbGluayB3aGVuIHN0cmluZ1R5cGUgPT0gInRleHQvdXJpLWxpc3QiLgotICAgICAgICAvLyBG
aWxlbmFtZSB3aGVuIHN0b3JhZ2VUeXBlID09IFN0b3JhZ2VUeXBlQmluYXJ5RGF0YS4KLSAgICAg
ICAgV2ViU3RyaW5nIHRpdGxlOwotCi0gICAgICAgIC8vIE9ubHkgdmFsaWQgd2hlbiBzdHJpbmdU
eXBlID09ICJ0ZXh0L2h0bWwiLgotICAgICAgICBXZWJVUkwgYmFzZVVSTDsKLSAgICB9OwotCi0g
ICAgfldlYkRyYWdEYXRhKCkgeyByZXNldCgpOyB9Ci0KLSAgICBXZWJEcmFnRGF0YSgpIDogbV9w
cml2YXRlKDApIHsgfQotICAgIFdlYkRyYWdEYXRhKGNvbnN0IFdlYkRyYWdEYXRhJiBkKSA6IG1f
cHJpdmF0ZSgwKSB7IGFzc2lnbihkKTsgfQotICAgIFdlYkRyYWdEYXRhJiBvcGVyYXRvcj0oY29u
c3QgV2ViRHJhZ0RhdGEmIGQpCi0gICAgewotICAgICAgICBhc3NpZ24oZCk7Ci0gICAgICAgIHJl
dHVybiAqdGhpczsKLSAgICB9Ci0KLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgaW5pdGlhbGl6ZSgp
OwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCByZXNldCgpOwotICAgIFdFQktJVF9FWFBPUlQgdm9p
ZCBhc3NpZ24oY29uc3QgV2ViRHJhZ0RhdGEmKTsKLQotICAgIGJvb2wgaXNOdWxsKCkgY29uc3Qg
eyByZXR1cm4gIW1fcHJpdmF0ZTsgfQotCi0gICAgV0VCS0lUX0VYUE9SVCBXZWJWZWN0b3I8SXRl
bT4gaXRlbXMoKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0SXRlbXMoY29uc3Qg
V2ViVmVjdG9yPEl0ZW0+Jik7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIGFkZEl0ZW0oY29uc3Qg
SXRlbSYpOwotCi0gICAgV0VCS0lUX0VYUE9SVCBXZWJTdHJpbmcgZmlsZXN5c3RlbUlkKCkgY29u
c3Q7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldEZpbGVzeXN0ZW1JZChjb25zdCBXZWJTdHJp
bmcmKTsKLQotI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgotICAgIFdlYkRyYWdEYXRhKGNvbnN0
IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpDaHJvbWl1bURhdGFPYmplY3Q+Jik7Ci0gICAgV2Vi
RHJhZ0RhdGEmIG9wZXJhdG9yPShjb25zdCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6Q2hyb21p
dW1EYXRhT2JqZWN0PiYpOwotICAgIG9wZXJhdG9yIFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpD
aHJvbWl1bURhdGFPYmplY3Q+KCkgY29uc3Q7Ci0jZW5kaWYKLQotcHJpdmF0ZToKLSAgICB2b2lk
IGFzc2lnbihXZWJEcmFnRGF0YVByaXZhdGUqKTsKLSAgICB2b2lkIGVuc3VyZU11dGFibGUoKTsK
LSAgICBXZWJEcmFnRGF0YVByaXZhdGUqIG1fcHJpdmF0ZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNl
IFdlYktpdAotCi0jZW5kaWYKSW5kZXg6IFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMv
V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvUGxhdGZvcm0v
Y2hyb21pdW0vcHVibGljL1dlYkV4dGVybmFsVGV4dHVyZUxheWVyLmgJKHJldmlzaW9uIDE0Nzcx
MCkKKysrIFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViRXh0ZXJuYWxUZXh0dXJl
TGF5ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSw3NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENP
TlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBX
ZWJFeHRlcm5hbFRleHR1cmVMYXllcl9oCi0jZGVmaW5lIFdlYkV4dGVybmFsVGV4dHVyZUxheWVy
X2gKLQotI2luY2x1ZGUgIldlYkNvbW1vbi5oIgotI2luY2x1ZGUgIldlYkZsb2F0UmVjdC5oIgot
I2luY2x1ZGUgIldlYkxheWVyLmgiCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1jbGFzcyBXZWJF
eHRlcm5hbFRleHR1cmVMYXllckNsaWVudDsKLQotLy8gVGhpcyBjbGFzcyByZXByZXNlbnRzIGEg
bGF5ZXIgdGhhdCByZW5kZXJzIGEgdGV4dHVyZSB0aGF0IGlzIGdlbmVyYXRlZAotLy8gZXh0ZXJu
YWxseSAobm90IG1hbmFnZWQgYnkgdGhlIFdlYkxheWVyVHJlZVZpZXcpLgotLy8gVGhlIHRleHR1
cmUgd2lsbCBiZSB1c2VkIGJ5IHRoZSBXZWJMYXllclRyZWVWaWV3IGR1cmluZyBjb21wb3NpdGlu
ZyBwYXNzZXMuCi0vLyBXaGVuIGluIHNpbmdsZS10aHJlYWQgbW9kZSwgdGhpcyBtZWFucyBkdXJp
bmcgV2ViTGF5ZXJUcmVlVmlldzo6Y29tcG9zaXRlKCkuCi0vLyBXaGVuIHVzaW5nIHRoZSB0aHJl
YWRlZCBjb21wb3NpdG9yLCB0aGlzIGNhbiBtZWFuIGF0IGFuIGFyYml0cmFyeSB0aW1lIHVudGls
Ci0vLyB0aGUgV2ViTGF5ZXJUcmVlVmlldyBpcyBkZXN0cm95ZWQuCi1jbGFzcyBXZWJFeHRlcm5h
bFRleHR1cmVMYXllciB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+V2ViRXh0ZXJuYWxUZXh0dXJl
TGF5ZXIoKSB7IH0KLQotICAgIHZpcnR1YWwgV2ViTGF5ZXIqIGxheWVyKCkgPSAwOwotCi0gICAg
Ly8gU2V0cyB0aGUgdGV4dHVyZSBpZCB0aGF0IHJlcHJlc2VudHMgdGhlIGxheWVyLCBpbiB0aGUg
bmFtZXNwYWNlIG9mIHRoZQotICAgIC8vIGNvbXBvc2l0b3IgY29udGV4dC4KLSAgICB2aXJ0dWFs
IHZvaWQgc2V0VGV4dHVyZUlkKHVuc2lnbmVkKSA9IDA7Ci0KLSAgICAvLyBTZXRzIHdoZXRoZXIg
b3Igbm90IHRoZSB0ZXh0dXJlIHNob3VsZCBiZSBmbGlwcGVkIGluIHRoZSBZIGRpcmVjdGlvbiB3
aGVuCi0gICAgLy8gcmVuZGVyZWQuCi0gICAgdmlydHVhbCB2b2lkIHNldEZsaXBwZWQoYm9vbCkg
PSAwOwotCi0gICAgLy8gU2V0cyB0aGUgcmVjdCBpbiBVViBzcGFjZSBvZiB0aGUgdGV4dHVyZSB0
aGF0IGlzIG1hcHBlZCB0byB0aGUgbGF5ZXIKLSAgICAvLyBib3VuZHMuCi0gICAgdmlydHVhbCB2
b2lkIHNldFVWUmVjdChjb25zdCBXZWJGbG9hdFJlY3QmKSA9IDA7Ci0KLSAgICAvLyBTZXRzIHdo
ZXRoZXIgZXZlcnkgcGl4ZWwgaW4gdGhpcyBsYXllciBpcyBvcGFxdWUuIERlZmF1bHRzIHRvIGZh
bHNlLgotICAgIHZpcnR1YWwgdm9pZCBzZXRPcGFxdWUoYm9vbCkgPSAwOwotCi0gICAgLy8gU2V0
cyB3aGV0aGVyIHRoaXMgbGF5ZXIncyB0ZXh0dXJlIGhhcyBwcmVtdWx0aXBsaWVkIGFscGhhIG9y
IG5vdC4gRGVmYXVsdHMgdG8gdHJ1ZS4KLSAgICB2aXJ0dWFsIHZvaWQgc2V0UHJlbXVsdGlwbGll
ZEFscGhhKGJvb2wpID0gMDsKLQotICAgIC8vIEluZGljYXRlcyB0aGF0IHRoZSBtb3N0IHJlY2Vu
dGx5IHByb3ZpZGVkIHRleHR1cmUgSUQgaXMgYWJvdXQgdG8gYmUgbW9kaWZpZWQgZXh0ZXJuYWxs
eS4KLSAgICB2aXJ0dWFsIHZvaWQgd2lsbE1vZGlmeVRleHR1cmUoKSA9IDA7Ci0KLSAgICAvLyBT
ZXRzIHdoZXRoZXIgdGhpcyBjb250ZXh0IHNob3VsZCBiZSByYXRlIGxpbWl0ZWQgYnkgdGhlIGNv
bXBvc2l0b3IuIFJhdGUgbGltaXRpbmcgd29ya3MgYnkgYmxvY2tpbmcKLSAgICAvLyBpbnZhbGlk
YXRlKCkgYW5kIGludmFsaWRhdGVSZWN0KCkgY2FsbHMgaWYgdGhlIGNvbXBvc2l0b3IgaXMgdG9v
IG1hbnkgZnJhbWVzIGJlaGluZC4KLSAgICB2aXJ0dWFsIHZvaWQgc2V0UmF0ZUxpbWl0Q29udGV4
dChib29sKSA9IDA7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIFdl
YkV4dGVybmFsVGV4dHVyZUxheWVyX2gKSW5kZXg6IFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9w
dWJsaWMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkV4dGVybmFsVGV4dHVyZUxheWVyQ2xpZW50
LmgJKHJldmlzaW9uIDE0NzcxMCkKKysrIFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMv
V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1NSAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2lmbmRlZiBXZWJFeHRlcm5hbFRleHR1cmVMYXllckNsaWVudF9oCi0j
ZGVmaW5lIFdlYkV4dGVybmFsVGV4dHVyZUxheWVyQ2xpZW50X2gKLQotI2luY2x1ZGUgIldlYkNv
bW1vbi5oIgotI2luY2x1ZGUgIldlYlNpemUuaCIKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNs
YXNzIFdlYkdyYXBoaWNzQ29udGV4dDNEOwotCi1jbGFzcyBXZWJUZXh0dXJlVXBkYXRlciB7Ci1w
dWJsaWM6Ci0gICAgdmlydHVhbCB2b2lkIGFwcGVuZENvcHkodW5zaWduZWQgc291cmNlVGV4dHVy
ZSwgdW5zaWduZWQgZGVzdGluYXRpb25UZXh0dXJlLCBXZWJTaXplKSA9IDA7Ci0KLXByb3RlY3Rl
ZDoKLSAgICB2aXJ0dWFsIH5XZWJUZXh0dXJlVXBkYXRlcigpIHsgfQotfTsKLQotY2xhc3MgV2Vi
RXh0ZXJuYWxUZXh0dXJlTGF5ZXJDbGllbnQgewotcHVibGljOgotICAgIHZpcnR1YWwgdW5zaWdu
ZWQgcHJlcGFyZVRleHR1cmUoV2ViVGV4dHVyZVVwZGF0ZXImKSA9IDA7Ci0gICAgdmlydHVhbCBX
ZWJHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCgpID0gMDsKLQotcHJvdGVjdGVkOgotICAgIHZp
cnR1YWwgfldlYkV4dGVybmFsVGV4dHVyZUxheWVyQ2xpZW50KCkgeyB9Ci19OwotCi19IC8vIG5h
bWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIFdlYkV4dGVybmFsVGV4dHVyZUxheWVyQ2xpZW50
X2gKSW5kZXg6IFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViRmlsZUVycm9yLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJGaWxlRXJy
b3IuaAkocmV2aXNpb24gMTQ3NzEwKQorKysgU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1Ymxp
Yy9XZWJGaWxlRXJyb3IuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1MyArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3Ry
aWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLSNpZm5kZWYgICBX
ZWJGaWxlRXJyb3JfaAotI2RlZmluZSAgIFdlYkZpbGVFcnJvcl9oCi0KLW5hbWVzcGFjZSBXZWJL
aXQgewotCi0vLyBGaWxlLXJlbGF0ZWQgZXJyb3IgY29kZSBkZWZpbmVkIGluIEhUTUw1IEZpbGUg
QVBJLgotZW51bSBXZWJGaWxlRXJyb3IgewotICAgIFdlYkZpbGVFcnJvck5vdEZvdW5kID0gMSwK
LSAgICBXZWJGaWxlRXJyb3JTZWN1cml0eSA9IDIsCi0gICAgV2ViRmlsZUVycm9yQWJvcnQgPSAz
LAotICAgIFdlYkZpbGVFcnJvck5vdFJlYWRhYmxlID0gNCwKLSAgICBXZWJGaWxlRXJyb3JFbmNv
ZGluZyA9IDUsCi0gICAgV2ViRmlsZUVycm9yTm9Nb2RpZmljYXRpb25BbGxvd2VkID0gNiwKLSAg
ICBXZWJGaWxlRXJyb3JJbnZhbGlkU3RhdGUgPSA3LAotICAgIFdlYkZpbGVFcnJvclN5bnRheCA9
IDgsCi0gICAgV2ViRmlsZUVycm9ySW52YWxpZE1vZGlmaWNhdGlvbiA9IDksCi0gICAgV2ViRmls
ZUVycm9yUXVvdGFFeGNlZWRlZCA9IDEwLAotICAgIFdlYkZpbGVFcnJvclR5cGVNaXNtYXRjaCA9
IDExLAotICAgIFdlYkZpbGVFcnJvclBhdGhFeGlzdHMgPSAxMiwKLX07Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYktpdAotCi0jZW5kaWYKSW5kZXg6IFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJs
aWMvV2ViRmlsZUluZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0v
cHVibGljL1dlYkZpbGVJbmZvLmgJKHJldmlzaW9uIDE0NzcxMCkKKysrIFNvdXJjZS9QbGF0Zm9y
bS9jaHJvbWl1bS9wdWJsaWMvV2ViRmlsZUluZm8uaAkod29ya2luZyBjb3B5KQpAQCAtMSw2MiAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0g
KgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAq
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
Ci0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2lmbmRlZiBXZWJGaWxlSW5mb19oCi0jZGVmaW5lIFdlYkZpbGVJbmZvX2gKLQotI2lu
Y2x1ZGUgIldlYlN0cmluZy5oIgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotc3RydWN0IFdlYkZp
bGVJbmZvIHsKLSAgICAvLyBUaGUgbGFzdCBtb2RpZmljYXRpb24gdGltZSBvZiB0aGUgZmlsZSwg
aW4gc2Vjb25kcy4KLSAgICAvLyBUaGUgdmFsdWUgMC4wIG1lYW5zIHRoYXQgdGhlIHRpbWUgaXMg
bm90IHNldC4KLSAgICBkb3VibGUgbW9kaWZpY2F0aW9uVGltZTsKLQotICAgIC8vIFRoZSBsZW5n
dGggb2YgdGhlIGZpbGUgaW4gYnl0ZXMuCi0gICAgLy8gVGhlIHZhbHVlIC0xIG1lYW5zIHRoYXQg
dGhlIGxlbmd0aCBpcyBub3Qgc2V0LgotICAgIGxvbmcgbG9uZyBsZW5ndGg7Ci0KLSAgICBlbnVt
IFR5cGUgewotICAgICAgICBUeXBlVW5rbm93biA9IDAsCi0gICAgICAgIFR5cGVGaWxlLAotICAg
ICAgICBUeXBlRGlyZWN0b3J5Ci0gICAgfTsKLQotICAgIFR5cGUgdHlwZTsKLQotICAgIFdlYlN0
cmluZyBwbGF0Zm9ybVBhdGg7Ci0KLSAgICBXZWJGaWxlSW5mbygpIDogbW9kaWZpY2F0aW9uVGlt
ZSgwLjApLCBsZW5ndGgoLTEpLCB0eXBlKFR5cGVVbmtub3duKSB7IH0KLX07Ci0KLX0gLy8gbmFt
ZXNwYWNlIFdlYktpdAotCi0jZW5kaWYKSW5kZXg6IFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9w
dWJsaWMvV2ViRmlsZVN5c3RlbS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9QbGF0Zm9ybS9jaHJv
bWl1bS9wdWJsaWMvV2ViRmlsZVN5c3RlbS5oCShyZXZpc2lvbiAxNDc3MTApCisrKyBTb3VyY2Uv
UGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkZpbGVTeXN0ZW0uaAkod29ya2luZyBjb3B5KQpA
QCAtMSwxNDMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQot
ICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQot
ICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
LSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpZm5kZWYgV2ViRmlsZVN5c3RlbV9oCi0jZGVmaW5lIFdlYkZpbGVT
eXN0ZW1faAotCi0jaW5jbHVkZSAiV2ViQ29tbW9uLmgiCi0jaW5jbHVkZSAiV2ViRmlsZVN5c3Rl
bVR5cGUuaCIKLSNpbmNsdWRlICJXZWJVUkwuaCIKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLS8v
IEZJWE1FOiBNb3ZlIHRoZXNlIGNsYXNzZXMgaW50byBwbGF0Zm9ybS4KLWNsYXNzIFdlYkZpbGVT
eXN0ZW1DYWxsYmFja3M7Ci1jbGFzcyBXZWJGaWxlV3JpdGVyOwotY2xhc3MgV2ViRmlsZVdyaXRl
ckNsaWVudDsKLQotY2xhc3MgV2ViRmlsZVN5c3RlbSB7Ci1wdWJsaWM6Ci0gICAgZW51bSBUeXBl
IHsKLSAgICAgICAgVHlwZVRlbXBvcmFyeSwKLSAgICAgICAgVHlwZVBlcnNpc3RlbnQsCi0KLSAg
ICAgICAgLy8gSW5kaWNhdGVzIGFuIGlzb2xhdGVkIGZpbGVzeXN0ZW0gd2hpY2ggb25seSBleHBv
c2VzIGEgc2V0IG9mIGZpbGVzLgotICAgICAgICBUeXBlSXNvbGF0ZWQsCi0KLSAgICAgICAgLy8g
SW5kaWNhdGVzIGEgbm9uLXNhbmRib3hlZCBmaWxlc3lzdGVtLgotICAgICAgICBUeXBlRXh0ZXJu
YWwsCi0gICAgfTsKLQotICAgIC8vIE1vdmVzIGEgZmlsZSBvciBkaXJlY3RvcnkgYXQgfHNyY1Bh
dGh8IHRvIHxkZXN0UGF0aHwuCi0gICAgLy8gV2ViRmlsZVN5c3RlbUNhbGxiYWNrczo6ZGlkU3Vj
Y2VlZCgpIG11c3QgYmUgY2FsbGVkIHdoZW4gdGhlIG9wZXJhdGlvbiBpcyBjb21wbGV0ZWQgc3Vj
Y2Vzc2Z1bGx5LgotICAgIC8vIFdlYkZpbGVTeXN0ZW1DYWxsYmFja3M6OmRpZEZhaWwoKSBtdXN0
IGJlIGNhbGxlZCBvdGhlcndpc2UuCi0gICAgdmlydHVhbCB2b2lkIG1vdmUoY29uc3QgV2ViVVJM
JiBzcmNQYXRoLCBjb25zdCBXZWJVUkwmIGRlc3RQYXRoLCBXZWJGaWxlU3lzdGVtQ2FsbGJhY2tz
KikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KLQotICAgIC8vIENvcGllcyBhIGZp
bGUgb3IgZGlyZWN0b3J5IGF0IHxzcmNQYXRofCB0byB8ZGVzdFBhdGh8LgotICAgIC8vIFdlYkZp
bGVTeXN0ZW1DYWxsYmFja3M6OmRpZFN1Y2NlZWQoKSBtdXN0IGJlIGNhbGxlZCB3aGVuIHRoZSBv
cGVyYXRpb24gaXMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseS4KLSAgICAvLyBXZWJGaWxlU3lzdGVt
Q2FsbGJhY2tzOjpkaWRGYWlsKCkgbXVzdCBiZSBjYWxsZWQgb3RoZXJ3aXNlLgotICAgIHZpcnR1
YWwgdm9pZCBjb3B5KGNvbnN0IFdlYlVSTCYgc3JjUGF0aCwgY29uc3QgV2ViVVJMJiBkZXN0UGF0
aCwgV2ViRmlsZVN5c3RlbUNhbGxiYWNrcyopIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OyB9Ci0KLSAgICAvLyBEZWxldGVzIGEgZmlsZSBvciBkaXJlY3RvcnkgYXQgYSBnaXZlbiB8cGF0
aHwuCi0gICAgLy8gSXQgaXMgYW4gZXJyb3IgdG8gdHJ5IHRvIHJlbW92ZSBhIGRpcmVjdG9yeSB0
aGF0IGlzIG5vdCBlbXB0eS4KLSAgICAvLyBXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzOjpkaWRTdWNj
ZWVkKCkgbXVzdCBiZSBjYWxsZWQgd2hlbiB0aGUgb3BlcmF0aW9uIGlzIGNvbXBsZXRlZCBzdWNj
ZXNzZnVsbHkuCi0gICAgLy8gV2ViRmlsZVN5c3RlbUNhbGxiYWNrczo6ZGlkRmFpbCgpIG11c3Qg
YmUgY2FsbGVkIG90aGVyd2lzZS4KLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlKGNvbnN0IFdlYlVS
TCYgcGF0aCwgV2ViRmlsZVN5c3RlbUNhbGxiYWNrcyopIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOyB9Ci0KLSAgICAvLyBEZWxldGVzIGEgZmlsZSBvciBkaXJlY3RvcnkgcmVjdXJzaXZl
bHkgYXQgYSBnaXZlbiB8cGF0aHwuCi0gICAgLy8gV2ViRmlsZVN5c3RlbUNhbGxiYWNrczo6ZGlk
U3VjY2VlZCgpIG11c3QgYmUgY2FsbGVkIHdoZW4gdGhlIG9wZXJhdGlvbiBpcyBjb21wbGV0ZWQg
c3VjY2Vzc2Z1bGx5LgotICAgIC8vIFdlYkZpbGVTeXN0ZW1DYWxsYmFja3M6OmRpZEZhaWwoKSBt
dXN0IGJlIGNhbGxlZCBvdGhlcndpc2UuCi0gICAgdmlydHVhbCB2b2lkIHJlbW92ZVJlY3Vyc2l2
ZWx5KGNvbnN0IFdlYlVSTCYgcGF0aCwgV2ViRmlsZVN5c3RlbUNhbGxiYWNrcyopIHsgV0VCS0lU
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9Ci0KLSAgICAvLyBSZXRyaWV2ZXMgdGhlIG1ldGFkYXRh
IGluZm9ybWF0aW9uIG9mIHRoZSBmaWxlIG9yIGRpcmVjdG9yeSBhdCB0aGUgZ2l2ZW4gfHBhdGh8
LgotICAgIC8vIFRoaXMgbWF5IG5vdCBhbHdheXMgcmV0dXJuIHRoZSBsb2NhbCBwbGF0Zm9ybSBw
YXRoIGluIHJlbW90ZSBmaWxlc3lzdGVtIGNhc2VzLgotICAgIC8vIFdlYkZpbGVTeXN0ZW1DYWxs
YmFja3M6OmRpZFJlYWRNZXRhZGF0YSgpIG11c3QgYmUgY2FsbGVkIHdpdGggYSB2YWxpZCBtZXRh
ZGF0YSB3aGVuIHRoZSByZXRyaWV2YWwgaXMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseS4KLSAgICAv
LyBXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzOjpkaWRGYWlsKCkgbXVzdCBiZSBjYWxsZWQgb3RoZXJ3
aXNlLgotICAgIHZpcnR1YWwgdm9pZCByZWFkTWV0YWRhdGEoY29uc3QgV2ViVVJMJiBwYXRoLCBX
ZWJGaWxlU3lzdGVtQ2FsbGJhY2tzKikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0K
LQotICAgIC8vIENyZWF0ZXMgYSBmaWxlIGF0IGdpdmVuIHxwYXRofC4KLSAgICAvLyBJZiB0aGUg
fHBhdGh8IGRvZXNuJ3QgZXhpc3QsIGl0IGNyZWF0ZXMgYSBuZXcgZmlsZSBhdCB8cGF0aHwuCi0g
ICAgLy8gSWYgfGV4Y2x1c2l2ZXwgaXMgdHJ1ZSwgaXQgZmFpbHMgaWYgdGhlIHxwYXRofCBhbHJl
YWR5IGV4aXN0cy4KLSAgICAvLyBJZiB8ZXhjbHVzaXZlfCBpcyBmYWxzZSwgaXQgc3VjY2VlZHMg
aWYgdGhlIHxwYXRofCBhbHJlYWR5IGV4aXN0cyBvcgotICAgIC8vIGl0IGhhcyBzdWNjZXNzZnVs
bHkgY3JlYXRlZCBhIG5ldyBmaWxlIGF0IHxwYXRofC4KLSAgICAvLwotICAgIC8vIFdlYkZpbGVT
eXN0ZW1DYWxsYmFja3M6OmRpZFN1Y2NlZWQoKSBtdXN0IGJlIGNhbGxlZCB3aGVuIHRoZSBvcGVy
YXRpb24gaXMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseS4KLSAgICAvLyBXZWJGaWxlU3lzdGVtQ2Fs
bGJhY2tzOjpkaWRGYWlsKCkgbXVzdCBiZSBjYWxsZWQgb3RoZXJ3aXNlLgotICAgIHZpcnR1YWwg
dm9pZCBjcmVhdGVGaWxlKGNvbnN0IFdlYlVSTCYgcGF0aCwgYm9vbCBleGNsdXNpdmUsIFdlYkZp
bGVTeXN0ZW1DYWxsYmFja3MqKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQotCi0g
ICAgLy8gQ3JlYXRlcyBhIGRpcmVjdG9yeSBhdCBhIGdpdmVuIHxwYXRofC4KLSAgICAvLyBJZiB0
aGUgfHBhdGh8IGRvZXNuJ3QgZXhpc3QsIGl0IGNyZWF0ZXMgYSBuZXcgZGlyZWN0b3J5IGF0IHxw
YXRofC4KLSAgICAvLyBJZiB8ZXhjbHVzaXZlfCBpcyB0cnVlLCBpdCBmYWlscyBpZiB0aGUgfHBh
dGh8IGFscmVhZHkgZXhpc3RzLgotICAgIC8vIElmIHxleGNsdXNpdmV8IGlzIGZhbHNlLCBpdCBz
dWNjZWVkcyBpZiB0aGUgfHBhdGh8IGFscmVhZHkgZXhpc3RzIG9yIGl0IGhhcyBzdWNjZXNzZnVs
bHkgY3JlYXRlZCBhIG5ldyBkaXJlY3RvcnkgYXQgfHBhdGh8LgotICAgIC8vCi0gICAgLy8gV2Vi
RmlsZVN5c3RlbUNhbGxiYWNrczo6ZGlkU3VjY2VlZCgpIG11c3QgYmUgY2FsbGVkIHdoZW4KLSAg
ICAvLyB0aGUgb3BlcmF0aW9uIGlzIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkuCi0gICAgLy8gV2Vi
RmlsZVN5c3RlbUNhbGxiYWNrczo6ZGlkRmFpbCgpIG11c3QgYmUgY2FsbGVkIG90aGVyd2lzZS4K
LSAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlRGlyZWN0b3J5KGNvbnN0IFdlYlVSTCYgcGF0aCwgYm9v
bCBleGNsdXNpdmUsIFdlYkZpbGVTeXN0ZW1DYWxsYmFja3MqKSB7IFdFQktJVF9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsgfQotCi0gICAgLy8gQ2hlY2tzIGlmIGEgZmlsZSBleGlzdHMgYXQgYSBnaXZl
biB8cGF0aHwuCi0gICAgLy8gV2ViRmlsZVN5c3RlbUNhbGxiYWNrczo6ZGlkU3VjY2VlZCgpIG11
c3QgYmUgY2FsbGVkIHdoZW4gdGhlIG9wZXJhdGlvbiBpcyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5
LgotICAgIC8vIFdlYkZpbGVTeXN0ZW1DYWxsYmFja3M6OmRpZEZhaWwoKSBtdXN0IGJlIGNhbGxl
ZCBvdGhlcndpc2UuCi0gICAgdmlydHVhbCB2b2lkIGZpbGVFeGlzdHMoY29uc3QgV2ViVVJMJiBw
YXRoLCBXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzKikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVE
KCk7IH0KLQotICAgIC8vIENoZWNrcyBpZiBhIGRpcmVjdG9yeSBleGlzdHMgYXQgYSBnaXZlbiB8
cGF0aHwuCi0gICAgLy8gV2ViRmlsZVN5c3RlbUNhbGxiYWNrczo6ZGlkU3VjY2VlZCgpIG11c3Qg
YmUgY2FsbGVkIHdoZW4gdGhlIG9wZXJhdGlvbiBpcyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5Lgot
ICAgIC8vIFdlYkZpbGVTeXN0ZW1DYWxsYmFja3M6OmRpZEZhaWwoKSBtdXN0IGJlIGNhbGxlZCBv
dGhlcndpc2UuCi0gICAgdmlydHVhbCB2b2lkIGRpcmVjdG9yeUV4aXN0cyhjb25zdCBXZWJVUkwm
IHBhdGgsIFdlYkZpbGVTeXN0ZW1DYWxsYmFja3MqKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsgfQotCi0gICAgLy8gUmVhZHMgZGlyZWN0b3J5IGVudHJpZXMgb2YgYSBnaXZlbiBkaXJl
Y3RvcnkgYXQgfHBhdGh8LgotICAgIC8vIFdlYkZpbGVTeXN0ZW1DYWxsYmFja3M6OmRpZFJlYWRE
aXJlY3RvcnkoKSBtdXN0IGJlIGNhbGxlZCB3aGVuIHRoZSBvcGVyYXRpb24gaXMgY29tcGxldGVk
IHN1Y2Nlc3NmdWxseS4KLSAgICAvLyBXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzOjpkaWRGYWlsKCkg
bXVzdCBiZSBjYWxsZWQgb3RoZXJ3aXNlLgotICAgIHZpcnR1YWwgdm9pZCByZWFkRGlyZWN0b3J5
KGNvbnN0IFdlYlVSTCYgcGF0aCwgV2ViRmlsZVN5c3RlbUNhbGxiYWNrcyopIHsgV0VCS0lUX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOyB9Ci0KLSAgICAvLyBDcmVhdGVzIGEgV2ViRmlsZVdyaXRlciB0
aGF0IGNhbiBiZSB1c2VkIHRvIHdyaXRlIHRvIHRoZSBnaXZlbiBmaWxlLgotICAgIC8vIFRoaXMg
aXMgYSBmYXN0LCBzeW5jaHJvbm91cyBjYWxsLCBhbmQgc2hvdWxkIG5vdCBzdGF0IHRoZSBmaWxl
c3lzdGVtLgotICAgIHZpcnR1YWwgV2ViRmlsZVdyaXRlciogY3JlYXRlRmlsZVdyaXRlcihjb25z
dCBXZWJVUkwmIHBhdGgsIFdlYkZpbGVXcml0ZXJDbGllbnQqKSB7IFdFQktJVF9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsgcmV0dXJuIDA7IH0KLQotICAgIC8vIENyZWF0ZXMgYSBzbmFwc2hvdCBmaWxl
IGZvciBhIGdpdmVuIGZpbGUgc3BlY2lmaWVkIGJ5IHxwYXRofC4gSXQgcmV0dXJucyB0aGUgbWV0
YWRhdGEgb2YgdGhlIGNyZWF0ZWQgc25hcHNob3QgZmlsZS4KLSAgICAvLyBUaGUgcmV0dXJuZWQg
bWV0YWRhdGEgc2hvdWxkIGluY2x1ZGUgYSBsb2NhbCBwbGF0Zm9ybSBwYXRoIHRvIHRoZSBzbmFw
c2hvdCBpbWFnZS4KLSAgICAvLyBJbiBsb2NhbCBmaWxlc3lzdGVtIGNhc2VzIHRoZSBiYWNrZW5k
IG1heSBzaW1wbHkgcmV0dXJuIHRoZSBtZXRhZGF0YSBvZiB0aGUgZmlsZSBpdHNlbGYgKGFzIHdl
bGwgYXMgcmVhZE1ldGFkYXRhIGRvZXMpLCB3aGlsZSBpbgotICAgIC8vIHJlbW90ZSBmaWxlc3lz
dGVtIGNhc2UgdGhlIGJhY2tlbmQgbWF5IGRvd25sb2FkIHRoZSBmaWxlIGludG8gYSB0ZW1wb3Jh
cnkgc25hcHNob3QgZmlsZSBhbmQgcmV0dXJuIHRoZSBtZXRhZGF0YSBvZiB0aGUgdGVtcG9yYXJ5
IGZpbGUuCi0gICAgLy8gVGhlIHJldHVybmVkIG1ldGFkYXRhIGlzIHVzZWQgdG8gY3JlYXRlIGEg
RmlsZSBvYmplY3QgZm9yIHRoZSB8cGF0aHwuCi0gICAgLy8gVGhlIHNuYXBzaG90IGZpbGUgaXMg
c3VwcG9zZWQgdG8gYmUgZGVsZXRlZCB3aGVuIHRoZSBsYXN0IHJlZmVyZW5jZSB0byBhIFdlYkNv
cmU6OkZpbGUgcmVmZXJyaW5nIHRvIGl0J3MgcGF0aCBpcyBkcm9wcGVkLgotICAgIC8vIFdlYkZp
bGVTeXN0ZW1DYWxsYmFja3M6OmRpZENyZWF0ZVNuYXBzaG90RmlsZSgpIHdpdGggdGhlIG1ldGFk
YXRhIG9mIHRoZSBzbmFwc2hvdCBmaWxlIG11c3QgYmUgY2FsbGVkIHdoZW4gdGhlIG9wZXJhdGlv
biBpcyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5LgotICAgIC8vIFdlYkZpbGVTeXN0ZW1DYWxsYmFj
a3M6OmRpZEZhaWwoKSBtdXN0IGJlIGNhbGxlZCBvdGhlcndpc2UuCi0gICAgdmlydHVhbCB2b2lk
IGNyZWF0ZVNuYXBzaG90RmlsZUFuZFJlYWRNZXRhZGF0YShjb25zdCBXZWJVUkwmIHBhdGgsIFdl
YkZpbGVTeXN0ZW1DYWxsYmFja3MqKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQot
Ci0gICAgLy8gREVQUkVDQVRFRAotICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVTbmFwc2hvdEZpbGVB
bmRSZWFkTWV0YWRhdGEoY29uc3QgV2ViVVJMJiBibG9iVVJMLCBjb25zdCBXZWJVUkwmIHBhdGgs
IFdlYkZpbGVTeXN0ZW1DYWxsYmFja3MqKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsg
fQotCi1wcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB+V2ViRmlsZVN5c3RlbSgpIHsgfQotfTsKLQot
fSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZgpJbmRleDogU291cmNlL1BsYXRmb3JtL2No
cm9taXVtL3B1YmxpYy9XZWJGaWxlU3lzdGVtQ2FsbGJhY2tzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJGaWxlU3lzdGVtQ2FsbGJhY2tzLmgJKHJl
dmlzaW9uIDE0NzcxMCkKKysrIFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViRmls
ZVN5c3RlbUNhbGxiYWNrcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDc4ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlz
dHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwot
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVm
IFdlYkZpbGVTeXN0ZW1DYWxsYmFja3NfaAotI2RlZmluZSBXZWJGaWxlU3lzdGVtQ2FsbGJhY2tz
X2gKLQotI2luY2x1ZGUgIldlYkZpbGVFcnJvci5oIgotI2luY2x1ZGUgIldlYkZpbGVTeXN0ZW1F
bnRyeS5oIgotI2luY2x1ZGUgIldlYlZlY3Rvci5oIgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQot
Y2xhc3MgV2ViU3RyaW5nOwotY2xhc3MgV2ViVVJMOwotc3RydWN0IFdlYkZpbGVJbmZvOwotCi1j
bGFzcyBXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzIHsKLXB1YmxpYzoKLSAgICAvLyBDYWxsYmFjayBm
b3IgV2ViRmlsZVN5c3RlbSdzIHZhcmlvdXMgb3BlcmF0aW9ucyB0aGF0IGRvbid0IHJlcXVpcmUK
LSAgICAvLyByZXR1cm4gdmFsdWVzLgotICAgIHZpcnR1YWwgdm9pZCBkaWRTdWNjZWVkKCkgPSAw
OwotCi0gICAgLy8gQ2FsbGJhY2sgZm9yIFdlYkZpbGVTeXN0ZW06OnJlYWRNZXRhZGF0YS4gQ2Fs
bGVkIHdpdGggdGhlIGZpbGUgbWV0YWRhdGEKLSAgICAvLyBmb3IgdGhlIHJlcXVlc3RlZCBwYXRo
LgotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWFkTWV0YWRhdGEoY29uc3QgV2ViRmlsZUluZm8mKSA9
IDA7Ci0KLSAgICAvLyBDYWxsYmFjayBmb3IgV2ViRmlsZVN5c3RlbTo6Y3JlYXRlU25hcHNob3Qu
IFRoZSBtZXRhZGF0YSBhbHNvIGluY2x1ZGVzIHRoZQotICAgIC8vIHBsYXRmb3JtIGZpbGUgcGF0
aC4KLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlU25hcHNob3RGaWxlKGNvbnN0IFdlYkZpbGVJ
bmZvJikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KLQotICAgIC8vIENhbGxiYWNr
IGZvciBXZWJGaWxlU3lzdGVtOjpyZWFkRGlyZWN0b3J5LiBDYWxsZWQgd2l0aCBhIHZlY3RvciBv
ZgotICAgIC8vIGZpbGUgZW50cmllcyBpbiB0aGUgcmVxdWVzdGVkIGRpcmVjdG9yeS4gVGhpcyBj
YWxsYmFjayBtaWdodCBiZSBjYWxsZWQKLSAgICAvLyBtdWx0aXBsZSB0aW1lcyBpZiB0aGUgZGly
ZWN0b3J5IGhhcyBtYW55IGVudHJpZXMuIHxoYXNNb3JlfCBtdXN0IGJlCi0gICAgLy8gdHJ1ZSB3
aGVuIHRoZXJlIGFyZSBtb3JlIGVudHJpZXMuCi0gICAgdmlydHVhbCB2b2lkIGRpZFJlYWREaXJl
Y3RvcnkoY29uc3QgV2ViVmVjdG9yPFdlYkZpbGVTeXN0ZW1FbnRyeT4mLCBib29sIGhhc01vcmUp
ID0gMDsKLQotICAgIC8vIENhbGxiYWNrIGZvciBXZWJGcmFtZUNsaWVudDo6b3BlbkZpbGVTeXN0
ZW0uIENhbGxlZCB3aXRoIGEgbmFtZSBhbmQKLSAgICAvLyByb290IFVSTCBmb3IgdGhlIEZpbGVT
eXN0ZW0gd2hlbiB0aGUgcmVxdWVzdCBpcyBhY2NlcHRlZC4KLSAgICB2aXJ0dWFsIHZvaWQgZGlk
T3BlbkZpbGVTeXN0ZW0oY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJVUkwmIHJvb3RV
UkwpID0gMDsKLQotICAgIC8vIENhbGxlZCB3aXRoIGFuIGVycm9yIGNvZGUgd2hlbiBhIHJlcXVl
c3RlZCBvcGVyYXRpb24gaGFzbid0IGJlZW4KLSAgICAvLyBjb21wbGV0ZWQuCi0gICAgdmlydHVh
bCB2b2lkIGRpZEZhaWwoV2ViRmlsZUVycm9yKSA9IDA7Ci0KLXByb3RlY3RlZDoKLSAgICB2aXJ0
dWFsIH5XZWJGaWxlU3lzdGVtQ2FsbGJhY2tzKCkgeyB9Ci19OwotCi19IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKLQotI2VuZGlmCkluZGV4OiBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dl
YkZpbGVTeXN0ZW1FbnRyeS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1
bS9wdWJsaWMvV2ViRmlsZVN5c3RlbUVudHJ5LmgJKHJldmlzaW9uIDE0NzcxMCkKKysrIFNvdXJj
ZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViRmlsZVN5c3RlbUVudHJ5LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNTAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
Ci0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0g
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgV2ViRmlsZVN5c3RlbUVudHJ5X2gKLSNkZWZp
bmUgV2ViRmlsZVN5c3RlbUVudHJ5X2gKLQotI2luY2x1ZGUgIldlYlN0cmluZy5oIgotCi1uYW1l
c3BhY2UgV2ViS2l0IHsKLQotc3RydWN0IFdlYkZpbGVTeXN0ZW1FbnRyeSB7Ci0gICAgV2ViRmls
ZVN5c3RlbUVudHJ5KCkgOiBpc0RpcmVjdG9yeShmYWxzZSkgeyB9Ci0KLSAgICAvLyBUaGUgbmFt
ZSBvZiB0aGUgZW50cnkuCi0gICAgV2ViU3RyaW5nIG5hbWU7Ci0KLSAgICAvLyBUaGlzIGZsYWcg
aW5kaWNhdGVzIGlmIHRoZSBlbnRyeSBpcyBkaXJlY3Rvcnkgb3Igbm90LgotICAgIGJvb2wgaXNE
aXJlY3Rvcnk7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIFdlYkZp
bGVTeXN0ZW1FbnRyeV9oCkluZGV4OiBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dl
YkZpbGVTeXN0ZW1UeXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1BsYXRmb3JtL2Nocm9taXVt
L3B1YmxpYy9XZWJGaWxlU3lzdGVtVHlwZS5oCShyZXZpc2lvbiAxNDc3MTApCisrKyBTb3VyY2Uv
UGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkZpbGVTeXN0ZW1UeXBlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNDkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0g
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgV2ViRmlsZVN5c3RlbVR5cGVfaAotI2RlZmluZSBX
ZWJGaWxlU3lzdGVtVHlwZV9oCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1lbnVtIFdlYkZpbGVT
eXN0ZW1UeXBlIHsKLSAgICBXZWJGaWxlU3lzdGVtVHlwZVRlbXBvcmFyeSwKLSAgICBXZWJGaWxl
U3lzdGVtVHlwZVBlcnNpc3RlbnQsCi0KLSAgICAvLyBJbmRpY2F0ZXMgYW4gaXNvbGF0ZWQgZmls
ZXN5c3RlbSB3aGljaCBvbmx5IGV4cG9zZXMgYSBzZXQgb2YgZmlsZXMuCi0gICAgV2ViRmlsZVN5
c3RlbVR5cGVJc29sYXRlZCwKLQotICAgIC8vIEluZGljYXRlcyBhIG5vbi1zYW5kYm94ZWQgZmls
ZXN5c3RlbS4KLSAgICBXZWJGaWxlU3lzdGVtVHlwZUV4dGVybmFsLAotfTsKLQotfSAvLyBuYW1l
c3BhY2UgV2ViS2l0Ci0KLSNlbmRpZgpJbmRleDogU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1
YmxpYy9XZWJGaWxlVXRpbGl0aWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1BsYXRmb3JtL2No
cm9taXVtL3B1YmxpYy9XZWJGaWxlVXRpbGl0aWVzLmgJKHJldmlzaW9uIDE0NzcxMCkKKysrIFNv
dXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViRmlsZVV0aWxpdGllcy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDc3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICog
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdlYkZpbGVVdGlsaXRpZXNfaAotI2RlZmlu
ZSBXZWJGaWxlVXRpbGl0aWVzX2gKLQotI2luY2x1ZGUgIldlYkNvbW1vbi5oIgotI2luY2x1ZGUg
IldlYlN0cmluZy5oIgotI2luY2x1ZGUgIldlYlVSTC5oIgotCi0jaWZkZWYgV0lOMzIKLXR5cGVk
ZWYgdm9pZCAqSEFORExFOwotI2VuZGlmCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1zdHJ1Y3Qg
V2ViRmlsZUluZm87Ci0KLWNsYXNzIFdlYkZpbGVVdGlsaXRpZXMgewotcHVibGljOgotI2lmZGVm
IFdJTjMyCi0gICAgdHlwZWRlZiBIQU5ETEUgRmlsZUhhbmRsZTsKLSNlbHNlCi0gICAgdHlwZWRl
ZiBpbnQgRmlsZUhhbmRsZTsKLSNlbmRpZgotICAgIHZpcnR1YWwgYm9vbCBmaWxlRXhpc3RzKGNv
bnN0IFdlYlN0cmluZyYgcGF0aCkgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wg
ZGVsZXRlRmlsZShjb25zdCBXZWJTdHJpbmcmIHBhdGgpIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAg
dmlydHVhbCBib29sIGRlbGV0ZUVtcHR5RGlyZWN0b3J5KGNvbnN0IFdlYlN0cmluZyYgcGF0aCkg
eyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgZ2V0RmlsZUluZm8oY29uc3QgV2Vi
U3RyaW5nJiBwYXRoLCBXZWJGaWxlSW5mbyYgcmVzdWx0KSB7IHJldHVybiBmYWxzZTsgfQotICAg
IHZpcnR1YWwgV2ViU3RyaW5nIGRpcmVjdG9yeU5hbWUoY29uc3QgV2ViU3RyaW5nJiBwYXRoKSAg
eyByZXR1cm4gV2ViU3RyaW5nKCk7IH0KLSAgICB2aXJ0dWFsIFdlYlN0cmluZyBwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnQoY29uc3QgV2ViU3RyaW5nJiBwYXRoLCBjb25zdCBXZWJTdHJpbmcmIGNv
bXBvbmVudCkgIHsgcmV0dXJuIFdlYlN0cmluZygpOyB9Ci0gICAgdmlydHVhbCBib29sIG1ha2VB
bGxEaXJlY3Rvcmllcyhjb25zdCBXZWJTdHJpbmcmIHBhdGgpIHsgcmV0dXJuIGZhbHNlOyB9Ci0g
ICAgdmlydHVhbCBXZWJTdHJpbmcgZ2V0QWJzb2x1dGVQYXRoKGNvbnN0IFdlYlN0cmluZyYgcGF0
aCkgIHsgcmV0dXJuIFdlYlN0cmluZygpOyB9Ci0gICAgdmlydHVhbCBib29sIGlzRGlyZWN0b3J5
KGNvbnN0IFdlYlN0cmluZyYgcGF0aCkgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIFdl
YlVSTCBmaWxlUGF0aFRvVVJMKGNvbnN0IFdlYlN0cmluZyYgcGF0aCkgIHsgcmV0dXJuIFdlYlVS
TCgpOyB9Ci0gICAgdmlydHVhbCBGaWxlSGFuZGxlIG9wZW5GaWxlKGNvbnN0IFdlYlN0cmluZyYg
cGF0aCwgaW50IG1vZGUpICB7IHJldHVybiBGaWxlSGFuZGxlKCk7IH0KLSAgICAvLyBTaG91bGQg
c2V0IHRoZSBGaWxlSGFuZGxlIHRvIGEgaW52YWxpZCB2YWx1ZSBpZiB0aGUgZmlsZSBpcyBjbG9z
ZWQgc3VjY2Vzc2Z1bGx5LgotICAgIHZpcnR1YWwgdm9pZCBjbG9zZUZpbGUoRmlsZUhhbmRsZSYp
IHsgfQotICAgIHZpcnR1YWwgbG9uZyBsb25nIHNlZWtGaWxlKEZpbGVIYW5kbGUsIGxvbmcgbG9u
ZyBvZmZzZXQsIGludCBvcmlnaW4pIHsgcmV0dXJuIDA7IH0KLSAgICB2aXJ0dWFsIGJvb2wgdHJ1
bmNhdGVGaWxlKEZpbGVIYW5kbGUsIGxvbmcgbG9uZyBvZmZzZXQpIHsgcmV0dXJuIGZhbHNlOyB9
Ci0gICAgdmlydHVhbCBpbnQgcmVhZEZyb21GaWxlKEZpbGVIYW5kbGUsIGNoYXIqIGRhdGEsIGlu
dCBsZW5ndGgpIHsgcmV0dXJuIDA7IH0KLSAgICB2aXJ0dWFsIGludCB3cml0ZVRvRmlsZShGaWxl
SGFuZGxlLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKSB7IHJldHVybiAwOyB9Ci0KLXBy
b3RlY3RlZDoKLSAgICB+V2ViRmlsZVV0aWxpdGllcygpIHsgfQotfTsKLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0Ci0KLSNlbmRpZgpJbmRleDogU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1Ymxp
Yy9XZWJGaWx0ZXJPcGVyYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvUGxhdGZvcm0vY2hy
b21pdW0vcHVibGljL1dlYkZpbHRlck9wZXJhdGlvbi5oCShyZXZpc2lvbiAxNDc3MTApCisrKyBT
b3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkZpbHRlck9wZXJhdGlvbi5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDIwOCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAi
QVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBXZWJGaWx0ZXJPcGVy
YXRpb25faAotI2RlZmluZSBXZWJGaWx0ZXJPcGVyYXRpb25faAotCi0jaW5jbHVkZSAiU2tTY2Fs
YXIuaCIKLSNpbmNsdWRlICJXZWJDb21tb24uaCIKLSNpbmNsdWRlICJXZWJDb2xvci5oIgotI2lu
Y2x1ZGUgIldlYlBvaW50LmgiCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1jbGFzcyBXZWJGaWx0
ZXJPcGVyYXRpb24gewotcHVibGljOgotICAgIGVudW0gRmlsdGVyVHlwZSB7Ci0gICAgICAgIEZp
bHRlclR5cGVHcmF5c2NhbGUsCi0gICAgICAgIEZpbHRlclR5cGVTZXBpYSwKLSAgICAgICAgRmls
dGVyVHlwZVNhdHVyYXRlLAotICAgICAgICBGaWx0ZXJUeXBlSHVlUm90YXRlLAotICAgICAgICBG
aWx0ZXJUeXBlSW52ZXJ0LAotICAgICAgICBGaWx0ZXJUeXBlQnJpZ2h0bmVzcywKLSAgICAgICAg
RmlsdGVyVHlwZUNvbnRyYXN0LAotICAgICAgICBGaWx0ZXJUeXBlT3BhY2l0eSwKLSAgICAgICAg
RmlsdGVyVHlwZUJsdXIsCi0gICAgICAgIEZpbHRlclR5cGVEcm9wU2hhZG93LAotICAgICAgICBG
aWx0ZXJUeXBlQ29sb3JNYXRyaXgsCi0gICAgICAgIEZpbHRlclR5cGVab29tLAotICAgICAgICBG
aWx0ZXJUeXBlU2F0dXJhdGluZ0JyaWdodG5lc3MsIC8vIE5vdCB1c2VkIGluIENTUy9TVkcuCi0g
ICAgfTsKLQotICAgIEZpbHRlclR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQot
Ci0gICAgZmxvYXQgYW1vdW50KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIFdFQktJVF9BU1NFUlQo
bV90eXBlID09IEZpbHRlclR5cGVHcmF5c2NhbGUKLSAgICAgICAgICAgICAgICAgICB8fCBtX3R5
cGUgPT0gRmlsdGVyVHlwZVNlcGlhCi0gICAgICAgICAgICAgICAgICAgfHwgbV90eXBlID09IEZp
bHRlclR5cGVTYXR1cmF0ZQotICAgICAgICAgICAgICAgICAgIHx8IG1fdHlwZSA9PSBGaWx0ZXJU
eXBlSHVlUm90YXRlCi0gICAgICAgICAgICAgICAgICAgfHwgbV90eXBlID09IEZpbHRlclR5cGVJ
bnZlcnQKLSAgICAgICAgICAgICAgICAgICB8fCBtX3R5cGUgPT0gRmlsdGVyVHlwZUJyaWdodG5l
c3MKLSAgICAgICAgICAgICAgICAgICB8fCBtX3R5cGUgPT0gRmlsdGVyVHlwZUNvbnRyYXN0Ci0g
ICAgICAgICAgICAgICAgICAgfHwgbV90eXBlID09IEZpbHRlclR5cGVPcGFjaXR5Ci0gICAgICAg
ICAgICAgICAgICAgfHwgbV90eXBlID09IEZpbHRlclR5cGVCbHVyCi0gICAgICAgICAgICAgICAg
ICAgfHwgbV90eXBlID09IEZpbHRlclR5cGVEcm9wU2hhZG93Ci0gICAgICAgICAgICAgICAgICAg
fHwgbV90eXBlID09IEZpbHRlclR5cGVab29tCi0gICAgICAgICAgICAgICAgICAgfHwgbV90eXBl
ID09IEZpbHRlclR5cGVTYXR1cmF0aW5nQnJpZ2h0bmVzcyk7Ci0gICAgICAgIHJldHVybiBtX2Ft
b3VudDsKLSAgICB9Ci0gICAgV2ViUG9pbnQgZHJvcFNoYWRvd09mZnNldCgpIGNvbnN0Ci0gICAg
ewotICAgICAgICBXRUJLSVRfQVNTRVJUKG1fdHlwZSA9PSBGaWx0ZXJUeXBlRHJvcFNoYWRvdyk7
Ci0gICAgICAgIHJldHVybiBtX2Ryb3BTaGFkb3dPZmZzZXQ7Ci0gICAgfQotICAgIFdlYkNvbG9y
IGRyb3BTaGFkb3dDb2xvcigpIGNvbnN0Ci0gICAgewotICAgICAgICBXRUJLSVRfQVNTRVJUKG1f
dHlwZSA9PSBGaWx0ZXJUeXBlRHJvcFNoYWRvdyk7Ci0gICAgICAgIHJldHVybiBtX2Ryb3BTaGFk
b3dDb2xvcjsKLSAgICB9Ci0gICAgY29uc3QgU2tTY2FsYXIqIG1hdHJpeCgpIGNvbnN0Ci0gICAg
ewotICAgICAgICBXRUJLSVRfQVNTRVJUKG1fdHlwZSA9PSBGaWx0ZXJUeXBlQ29sb3JNYXRyaXgp
OwotICAgICAgICByZXR1cm4gbV9tYXRyaXg7Ci0gICAgfQotCi0gICAgaW50IHpvb21JbnNldCgp
IGNvbnN0Ci0gICAgewotICAgICAgICBXRUJLSVRfQVNTRVJUKG1fdHlwZSA9PSBGaWx0ZXJUeXBl
Wm9vbSk7Ci0gICAgICAgIHJldHVybiBtX3pvb21JbnNldDsKLSAgICB9Ci0KLSAgICBzdGF0aWMg
V2ViRmlsdGVyT3BlcmF0aW9uIGNyZWF0ZUdyYXlzY2FsZUZpbHRlcihmbG9hdCBhbW91bnQpIHsg
cmV0dXJuIFdlYkZpbHRlck9wZXJhdGlvbihGaWx0ZXJUeXBlR3JheXNjYWxlLCBhbW91bnQpOyB9
Ci0gICAgc3RhdGljIFdlYkZpbHRlck9wZXJhdGlvbiBjcmVhdGVTZXBpYUZpbHRlcihmbG9hdCBh
bW91bnQpIHsgcmV0dXJuIFdlYkZpbHRlck9wZXJhdGlvbihGaWx0ZXJUeXBlU2VwaWEsIGFtb3Vu
dCk7IH0KLSAgICBzdGF0aWMgV2ViRmlsdGVyT3BlcmF0aW9uIGNyZWF0ZVNhdHVyYXRlRmlsdGVy
KGZsb2F0IGFtb3VudCkgeyByZXR1cm4gV2ViRmlsdGVyT3BlcmF0aW9uKEZpbHRlclR5cGVTYXR1
cmF0ZSwgYW1vdW50KTsgfQotICAgIHN0YXRpYyBXZWJGaWx0ZXJPcGVyYXRpb24gY3JlYXRlSHVl
Um90YXRlRmlsdGVyKGZsb2F0IGFtb3VudCkgeyByZXR1cm4gV2ViRmlsdGVyT3BlcmF0aW9uKEZp
bHRlclR5cGVIdWVSb3RhdGUsIGFtb3VudCk7IH0KLSAgICBzdGF0aWMgV2ViRmlsdGVyT3BlcmF0
aW9uIGNyZWF0ZUludmVydEZpbHRlcihmbG9hdCBhbW91bnQpIHsgcmV0dXJuIFdlYkZpbHRlck9w
ZXJhdGlvbihGaWx0ZXJUeXBlSW52ZXJ0LCBhbW91bnQpOyB9Ci0gICAgc3RhdGljIFdlYkZpbHRl
ck9wZXJhdGlvbiBjcmVhdGVCcmlnaHRuZXNzRmlsdGVyKGZsb2F0IGFtb3VudCkgeyByZXR1cm4g
V2ViRmlsdGVyT3BlcmF0aW9uKEZpbHRlclR5cGVCcmlnaHRuZXNzLCBhbW91bnQpOyB9Ci0gICAg
c3RhdGljIFdlYkZpbHRlck9wZXJhdGlvbiBjcmVhdGVDb250cmFzdEZpbHRlcihmbG9hdCBhbW91
bnQpIHsgcmV0dXJuIFdlYkZpbHRlck9wZXJhdGlvbihGaWx0ZXJUeXBlQ29udHJhc3QsIGFtb3Vu
dCk7IH0KLSAgICBzdGF0aWMgV2ViRmlsdGVyT3BlcmF0aW9uIGNyZWF0ZU9wYWNpdHlGaWx0ZXIo
ZmxvYXQgYW1vdW50KSB7IHJldHVybiBXZWJGaWx0ZXJPcGVyYXRpb24oRmlsdGVyVHlwZU9wYWNp
dHksIGFtb3VudCk7IH0KLSAgICBzdGF0aWMgV2ViRmlsdGVyT3BlcmF0aW9uIGNyZWF0ZUJsdXJG
aWx0ZXIoZmxvYXQgYW1vdW50KSB7IHJldHVybiBXZWJGaWx0ZXJPcGVyYXRpb24oRmlsdGVyVHlw
ZUJsdXIsIGFtb3VudCk7IH0KLSAgICBzdGF0aWMgV2ViRmlsdGVyT3BlcmF0aW9uIGNyZWF0ZURy
b3BTaGFkb3dGaWx0ZXIoV2ViUG9pbnQgb2Zmc2V0LCBmbG9hdCBzdGREZXZpYXRpb24sIFdlYkNv
bG9yIGNvbG9yKSB7IHJldHVybiBXZWJGaWx0ZXJPcGVyYXRpb24oRmlsdGVyVHlwZURyb3BTaGFk
b3csIG9mZnNldCwgc3RkRGV2aWF0aW9uLCBjb2xvcik7IH0KLSAgICBzdGF0aWMgV2ViRmlsdGVy
T3BlcmF0aW9uIGNyZWF0ZUNvbG9yTWF0cml4RmlsdGVyKFNrU2NhbGFyIG1hdHJpeFsyMF0pIHsg
cmV0dXJuIFdlYkZpbHRlck9wZXJhdGlvbihGaWx0ZXJUeXBlQ29sb3JNYXRyaXgsIG1hdHJpeCk7
IH0KLSAgICBzdGF0aWMgV2ViRmlsdGVyT3BlcmF0aW9uIGNyZWF0ZVpvb21GaWx0ZXIoZmxvYXQg
YW1vdW50LCBpbnQgaW5zZXQpIHsgcmV0dXJuIFdlYkZpbHRlck9wZXJhdGlvbihGaWx0ZXJUeXBl
Wm9vbSwgYW1vdW50LCBpbnNldCk7IH0KLSAgICBzdGF0aWMgV2ViRmlsdGVyT3BlcmF0aW9uIGNy
ZWF0ZVNhdHVyYXRpbmdCcmlnaHRuZXNzRmlsdGVyKGZsb2F0IGFtb3VudCkgeyByZXR1cm4gV2Vi
RmlsdGVyT3BlcmF0aW9uKEZpbHRlclR5cGVTYXR1cmF0aW5nQnJpZ2h0bmVzcywgYW1vdW50KTsg
fQotCi0gICAgYm9vbCBlcXVhbHMoY29uc3QgV2ViRmlsdGVyT3BlcmF0aW9uJiBvdGhlcikgY29u
c3Q7Ci0KLSAgICAvLyBNZXRob2RzIGZvciByZXN0b3JpbmcgYSBXZWJGaWx0ZXJPcGVyYXRpb24u
Ci0gICAgc3RhdGljIFdlYkZpbHRlck9wZXJhdGlvbiBjcmVhdGVFbXB0eUZpbHRlcigpIHsgcmV0
dXJuIFdlYkZpbHRlck9wZXJhdGlvbihGaWx0ZXJUeXBlR3JheXNjYWxlLCAwLjApOyB9Ci0gICAg
dm9pZCBzZXRUeXBlKEZpbHRlclR5cGUgdHlwZSkgeyBtX3R5cGUgPSB0eXBlOyB9Ci0gICAgdm9p
ZCBzZXRBbW91bnQoZmxvYXQgYW1vdW50KQotICAgIHsKLSAgICAgICAgV0VCS0lUX0FTU0VSVCht
X3R5cGUgPT0gRmlsdGVyVHlwZUdyYXlzY2FsZQotICAgICAgICAgICAgICAgICAgIHx8IG1fdHlw
ZSA9PSBGaWx0ZXJUeXBlU2VwaWEKLSAgICAgICAgICAgICAgICAgICB8fCBtX3R5cGUgPT0gRmls
dGVyVHlwZVNhdHVyYXRlCi0gICAgICAgICAgICAgICAgICAgfHwgbV90eXBlID09IEZpbHRlclR5
cGVIdWVSb3RhdGUKLSAgICAgICAgICAgICAgICAgICB8fCBtX3R5cGUgPT0gRmlsdGVyVHlwZUlu
dmVydAotICAgICAgICAgICAgICAgICAgIHx8IG1fdHlwZSA9PSBGaWx0ZXJUeXBlQnJpZ2h0bmVz
cwotICAgICAgICAgICAgICAgICAgIHx8IG1fdHlwZSA9PSBGaWx0ZXJUeXBlQ29udHJhc3QKLSAg
ICAgICAgICAgICAgICAgICB8fCBtX3R5cGUgPT0gRmlsdGVyVHlwZU9wYWNpdHkKLSAgICAgICAg
ICAgICAgICAgICB8fCBtX3R5cGUgPT0gRmlsdGVyVHlwZUJsdXIKLSAgICAgICAgICAgICAgICAg
ICB8fCBtX3R5cGUgPT0gRmlsdGVyVHlwZURyb3BTaGFkb3cKLSAgICAgICAgICAgICAgICAgICB8
fCBtX3R5cGUgPT0gRmlsdGVyVHlwZVpvb20KLSAgICAgICAgICAgICAgICAgICB8fCBtX3R5cGUg
PT0gRmlsdGVyVHlwZVNhdHVyYXRpbmdCcmlnaHRuZXNzKTsKLSAgICAgICAgbV9hbW91bnQgPSBh
bW91bnQ7Ci0gICAgfQotICAgIHZvaWQgc2V0RHJvcFNoYWRvd09mZnNldChXZWJQb2ludCBvZmZz
ZXQpCi0gICAgewotICAgICAgICBXRUJLSVRfQVNTRVJUKG1fdHlwZSA9PSBGaWx0ZXJUeXBlRHJv
cFNoYWRvdyk7Ci0gICAgICAgIG1fZHJvcFNoYWRvd09mZnNldCA9IG9mZnNldDsKLSAgICB9Ci0g
ICAgdm9pZCBzZXREcm9wU2hhZG93Q29sb3IoV2ViQ29sb3IgY29sb3IpCi0gICAgewotICAgICAg
ICBXRUJLSVRfQVNTRVJUKG1fdHlwZSA9PSBGaWx0ZXJUeXBlRHJvcFNoYWRvdyk7Ci0gICAgICAg
IG1fZHJvcFNoYWRvd0NvbG9yID0gY29sb3I7Ci0gICAgfQotICAgIHZvaWQgc2V0TWF0cml4KGNv
bnN0IFNrU2NhbGFyIG1hdHJpeFsyMF0pCi0gICAgewotICAgICAgICBXRUJLSVRfQVNTRVJUKG1f
dHlwZSA9PSBGaWx0ZXJUeXBlQ29sb3JNYXRyaXgpOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgMjA7ICsraSkKLSAgICAgICAgICAgIG1fbWF0cml4W2ldID0gbWF0cml4W2ldOwot
ICAgIH0KLSAgICB2b2lkIHNldFpvb21JbnNldChpbnQgaW5zZXQpCi0gICAgewotICAgICAgICBX
RUJLSVRfQVNTRVJUKG1fdHlwZSA9PSBGaWx0ZXJUeXBlWm9vbSk7Ci0gICAgICAgIG1fem9vbUlu
c2V0ID0gaW5zZXQ7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEZpbHRlclR5cGUgbV90eXBlOwot
Ci0gICAgZmxvYXQgbV9hbW91bnQ7Ci0gICAgV2ViUG9pbnQgbV9kcm9wU2hhZG93T2Zmc2V0Owot
ICAgIFdlYkNvbG9yIG1fZHJvcFNoYWRvd0NvbG9yOwotICAgIFNrU2NhbGFyIG1fbWF0cml4WzIw
XTsKLSAgICBpbnQgbV96b29tSW5zZXQ7Ci0KLSAgICBXZWJGaWx0ZXJPcGVyYXRpb24oRmlsdGVy
VHlwZSB0eXBlLCBmbG9hdCBhbW91bnQpCi0gICAgICAgIDogbV90eXBlKHR5cGUpCi0gICAgICAg
ICwgbV9hbW91bnQoYW1vdW50KQotICAgICAgICAsIG1fZHJvcFNoYWRvd09mZnNldCgwLCAwKQot
ICAgICAgICAsIG1fZHJvcFNoYWRvd0NvbG9yKDApCi0gICAgICAgICwgbV96b29tSW5zZXQoMCkK
LSAgICB7Ci0gICAgICAgIFdFQktJVF9BU1NFUlQobV90eXBlICE9IEZpbHRlclR5cGVEcm9wU2hh
ZG93ICYmIG1fdHlwZSAhPSBGaWx0ZXJUeXBlQ29sb3JNYXRyaXgpOwotICAgICAgICBtZW1zZXQo
bV9tYXRyaXgsIDAsIHNpemVvZihtX21hdHJpeCkpOwotICAgIH0KLQotICAgIFdlYkZpbHRlck9w
ZXJhdGlvbihGaWx0ZXJUeXBlIHR5cGUsIFdlYlBvaW50IG9mZnNldCwgZmxvYXQgc3RkRGV2aWF0
aW9uLCBXZWJDb2xvciBjb2xvcikKLSAgICAgICAgOiBtX3R5cGUodHlwZSkKLSAgICAgICAgLCBt
X2Ftb3VudChzdGREZXZpYXRpb24pCi0gICAgICAgICwgbV9kcm9wU2hhZG93T2Zmc2V0KG9mZnNl
dCkKLSAgICAgICAgLCBtX2Ryb3BTaGFkb3dDb2xvcihjb2xvcikKLSAgICAgICAgLCBtX3pvb21J
bnNldCgwKQotICAgIHsKLSAgICAgICAgV0VCS0lUX0FTU0VSVChtX3R5cGUgPT0gRmlsdGVyVHlw
ZURyb3BTaGFkb3cpOwotICAgICAgICBtZW1zZXQobV9tYXRyaXgsIDAsIHNpemVvZihtX21hdHJp
eCkpOwotICAgIH0KLQotICAgIFdFQktJVF9FWFBPUlQgV2ViRmlsdGVyT3BlcmF0aW9uKEZpbHRl
clR5cGUsIFNrU2NhbGFyIG1hdHJpeFsyMF0pOwotCi0gICAgV2ViRmlsdGVyT3BlcmF0aW9uKEZp
bHRlclR5cGUgdHlwZSwgZmxvYXQgYW1vdW50LCBpbnQgaW5zZXQpCi0gICAgICAgIDogbV90eXBl
KHR5cGUpCi0gICAgICAgICwgbV9hbW91bnQoYW1vdW50KQotICAgICAgICAsIG1fZHJvcFNoYWRv
d09mZnNldCgwLCAwKQotICAgICAgICAsIG1fZHJvcFNoYWRvd0NvbG9yKDApCi0gICAgICAgICwg
bV96b29tSW5zZXQoaW5zZXQpCi0gICAgewotICAgICAgICBXRUJLSVRfQVNTRVJUKG1fdHlwZSA9
PSBGaWx0ZXJUeXBlWm9vbSk7Ci0gICAgICAgIG1lbXNldChtX21hdHJpeCwgMCwgc2l6ZW9mKG1f
bWF0cml4KSk7Ci0gICAgfQotfTsKLQotaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBXZWJG
aWx0ZXJPcGVyYXRpb24mIGEsIGNvbnN0IFdlYkZpbHRlck9wZXJhdGlvbiYgYikKLXsKLSAgICBy
ZXR1cm4gYS5lcXVhbHMoYik7Ci19Ci0KLWlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgV2Vi
RmlsdGVyT3BlcmF0aW9uJiBhLCBjb25zdCBXZWJGaWx0ZXJPcGVyYXRpb24mIGIpCi17Ci0gICAg
cmV0dXJuICEoYSA9PSBiKTsKLX0KLQotfQotCi0jZW5kaWYKSW5kZXg6IFNvdXJjZS9QbGF0Zm9y
bS9jaHJvbWl1bS9wdWJsaWMvV2ViRmlsdGVyT3BlcmF0aW9ucy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViRmlsdGVyT3BlcmF0aW9ucy5oCShyZXZp
c2lvbiAxNDc3MTApCisrKyBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkZpbHRl
ck9wZXJhdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw4OCArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQg
SVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAq
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
Ci0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lm
bmRlZiBXZWJGaWx0ZXJPcGVyYXRpb25zX2gKLSNkZWZpbmUgV2ViRmlsdGVyT3BlcmF0aW9uc19o
Ci0KLSNpbmNsdWRlICJXZWJDb21tb24uaCIKLSNpbmNsdWRlICJXZWJGaWx0ZXJPcGVyYXRpb24u
aCIKLSNpbmNsdWRlICJXZWJQcml2YXRlT3duUHRyLmgiCi0KLW5hbWVzcGFjZSBXZWJLaXQgewot
Ci1jbGFzcyBXZWJGaWx0ZXJPcGVyYXRpb25zUHJpdmF0ZTsKLQotLy8gQW4gb3JkZXJlZCBsaXN0
IG9mIGZpbHRlciBvcGVyYXRpb25zLgotY2xhc3MgV2ViRmlsdGVyT3BlcmF0aW9ucyB7Ci1wdWJs
aWM6Ci0gICAgV2ViRmlsdGVyT3BlcmF0aW9ucygpIHsgaW5pdGlhbGl6ZSgpOyB9Ci0gICAgV2Vi
RmlsdGVyT3BlcmF0aW9ucyhjb25zdCBXZWJGaWx0ZXJPcGVyYXRpb25zJiBvdGhlcikKLSAgICB7
Ci0gICAgICAgIGluaXRpYWxpemUoKTsKLSAgICAgICAgYXNzaWduKG90aGVyKTsKLSAgICB9Ci0g
ICAgV2ViRmlsdGVyT3BlcmF0aW9ucyYgb3BlcmF0b3I9KGNvbnN0IFdlYkZpbHRlck9wZXJhdGlv
bnMmIG90aGVyKQotICAgIHsKLSAgICAgICAgYXNzaWduKG90aGVyKTsKLSAgICAgICAgcmV0dXJu
ICp0aGlzOwotICAgIH0KLSAgICB+V2ViRmlsdGVyT3BlcmF0aW9ucygpIHsgZGVzdHJveSgpOyB9
Ci0KLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgYXNzaWduKGNvbnN0IFdlYkZpbHRlck9wZXJhdGlv
bnMmKTsKLSAgICBXRUJLSVRfRVhQT1JUIGJvb2wgZXF1YWxzKGNvbnN0IFdlYkZpbHRlck9wZXJh
dGlvbnMmKSBjb25zdDsKLQotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBhcHBlbmQoY29uc3QgV2Vi
RmlsdGVyT3BlcmF0aW9uJik7Ci0KLSAgICAvLyBSZW1vdmVzIGFsbCBmaWx0ZXIgb3BlcmF0aW9u
cy4KLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgY2xlYXIoKTsKLSAgICBXRUJLSVRfRVhQT1JUIGJv
b2wgaXNFbXB0eSgpIGNvbnN0OwotCi0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIGdldE91dHNldHMo
aW50JiB0b3AsIGludCYgcmlnaHQsIGludCYgYm90dG9tLCBpbnQmIGxlZnQpIGNvbnN0OwotICAg
IFdFQktJVF9FWFBPUlQgYm9vbCBoYXNGaWx0ZXJUaGF0TW92ZXNQaXhlbHMoKSBjb25zdDsKLSAg
ICBXRUJLSVRfRVhQT1JUIGJvb2wgaGFzRmlsdGVyVGhhdEFmZmVjdHNPcGFjaXR5KCkgY29uc3Q7
Ci0KLSAgICBXRUJLSVRfRVhQT1JUIHNpemVfdCBzaXplKCkgY29uc3Q7Ci0gICAgV0VCS0lUX0VY
UE9SVCBXZWJGaWx0ZXJPcGVyYXRpb24gYXQoc2l6ZV90KSBjb25zdDsKLQotcHJpdmF0ZToKLSAg
ICBXRUJLSVRfRVhQT1JUIHZvaWQgaW5pdGlhbGl6ZSgpOwotICAgIFdFQktJVF9FWFBPUlQgdm9p
ZCBkZXN0cm95KCk7Ci0KLSAgICBXZWJQcml2YXRlT3duUHRyPFdlYkZpbHRlck9wZXJhdGlvbnNQ
cml2YXRlPiBtX3ByaXZhdGU7Ci19OwotCi1pbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFdl
YkZpbHRlck9wZXJhdGlvbnMmIGEsIGNvbnN0IFdlYkZpbHRlck9wZXJhdGlvbnMmIGIpCi17Ci0g
ICAgcmV0dXJuIGEuZXF1YWxzKGIpOwotfQotCi1pbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0
IFdlYkZpbHRlck9wZXJhdGlvbnMmIGEsIGNvbnN0IFdlYkZpbHRlck9wZXJhdGlvbnMmIGIpCi17
Ci0gICAgcmV0dXJuICEoYSA9PSBiKTsKLX0KLQotfQotCi0jZW5kaWYKSW5kZXg6IFNvdXJjZS9Q
bGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViRmxpbmdBbmltYXRvci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViRmxpbmdBbmltYXRvci5oCShyZXZp
c2lvbiAxNDc3MTApCisrKyBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkZsaW5n
QW5pbWF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMSw0OCArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRT
IENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0g
KiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRl
ZiBXZWJGbGluZ0FuaW1hdG9yX2gKLSNkZWZpbmUgV2ViRmxpbmdBbmltYXRvcl9oCi0KLSNpbmNs
dWRlICJXZWJGbG9hdFBvaW50LmgiCi0jaW5jbHVkZSAiV2ViUG9pbnQuaCIKLSNpbmNsdWRlICJX
ZWJSZWN0LmgiCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1jbGFzcyBXZWJGbGluZ0FuaW1hdG9y
IHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIH5XZWJGbGluZ0FuaW1hdG9yKCkgeyB9Ci0KLSAgICB2
aXJ0dWFsIHZvaWQgc3RhcnRGbGluZyhjb25zdCBXZWJGbG9hdFBvaW50JiB2ZWxvY2l0eSwgY29u
c3QgV2ViUmVjdCYgcmFuZ2UpID0gMDsKLSAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIGFuaW1h
dGlvbiBpcyBub3QgeWV0IGZpbmlzaGVkLgotICAgIHZpcnR1YWwgYm9vbCB1cGRhdGVQb3NpdGlv
bigpID0gMDsKLSAgICB2aXJ0dWFsIFdlYlBvaW50IGdldEN1cnJlbnRQb3NpdGlvbigpID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsRmxpbmcoKSA9IDA7Ci19OwotCi19IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKLQotI2VuZGlmIC8vIFdlYkZsaW5nQW5pbWF0b3JfaApJbmRleDogU291cmNlL1Bs
YXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJGbG9hdEFuaW1hdGlvbkN1cnZlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJGbG9hdEFuaW1hdGlvbkN1
cnZlLmgJKHJldmlzaW9uIDE0NzcxMCkKKysrIFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJs
aWMvV2ViRmxvYXRBbmltYXRpb25DdXJ2ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUyICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQotICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
Ci0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OCi0gKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMKLSAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgV2ViRmxvYXRBbmltYXRpb25DdXJ2ZV9oCi0jZGVm
aW5lIFdlYkZsb2F0QW5pbWF0aW9uQ3VydmVfaAotCi0jaW5jbHVkZSAiV2ViQW5pbWF0aW9uQ3Vy
dmUuaCIKLQotI2luY2x1ZGUgIldlYkNvbW1vbi5oIgotI2luY2x1ZGUgIldlYkZsb2F0S2V5ZnJh
bWUuaCIKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLS8vIEEga2V5ZnJhbWVkIGZsb2F0IGFuaW1h
dGlvbiBjdXJ2ZS4KLWNsYXNzIFdlYkZsb2F0QW5pbWF0aW9uQ3VydmUgOiBwdWJsaWMgV2ViQW5p
bWF0aW9uQ3VydmUgewotcHVibGljOgotICAgIHZpcnR1YWwgfldlYkZsb2F0QW5pbWF0aW9uQ3Vy
dmUoKSB7IH0KLQotICAgIC8vIEFkZHMgdGhlIGtleWZyYW1lIHdpdGggdGhlIGRlZmF1bHQgdGlt
aW5nIGZ1bmN0aW9uIChlYXNlKS4KLSAgICB2aXJ0dWFsIHZvaWQgYWRkKGNvbnN0IFdlYkZsb2F0
S2V5ZnJhbWUmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGFkZChjb25zdCBXZWJGbG9hdEtleWZy
YW1lJiwgVGltaW5nRnVuY3Rpb25UeXBlKSA9IDA7Ci0gICAgLy8gQWRkcyB0aGUga2V5ZnJhbWUg
d2l0aCBhIGN1c3RvbSwgYmV6aWVyIHRpbWluZyBmdW5jdGlvbi4gTm90ZSwgaXQgaXMKLSAgICAv
LyBhc3N1bWVkIHRoYXQgeDAgPSB5MCA9IDAsIGFuZCB4MyA9IHkzID0gMS4KLSAgICB2aXJ0dWFs
IHZvaWQgYWRkKGNvbnN0IFdlYkZsb2F0S2V5ZnJhbWUmLCBkb3VibGUgeDEsIGRvdWJsZSB5MSwg
ZG91YmxlIHgyLCBkb3VibGUgeTIpID0gMDsKLQotICAgIHZpcnR1YWwgZmxvYXQgZ2V0VmFsdWUo
ZG91YmxlIHRpbWUpIGNvbnN0ID0gMDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0j
ZW5kaWYgLy8gV2ViRmxvYXRBbmltYXRpb25DdXJ2ZV9oCkluZGV4OiBTb3VyY2UvUGxhdGZvcm0v
Y2hyb21pdW0vcHVibGljL1dlYkZsb2F0S2V5ZnJhbWUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
UGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkZsb2F0S2V5ZnJhbWUuaAkocmV2aXNpb24gMTQ3
NzEwKQorKysgU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJGbG9hdEtleWZyYW1l
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNDMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0g
KiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KLSAqIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwotICogU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRl
ZiBXZWJGbG9hdEtleWZyYW1lX2gKLSNkZWZpbmUgV2ViRmxvYXRLZXlmcmFtZV9oCi0KLW5hbWVz
cGFjZSBXZWJLaXQgewotCi1zdHJ1Y3QgV2ViRmxvYXRLZXlmcmFtZSB7Ci0gICAgV2ViRmxvYXRL
ZXlmcmFtZShkb3VibGUgdGltZSwgZmxvYXQgdmFsdWUpCi0gICAgICAgIDogdGltZSh0aW1lKQot
ICAgICAgICAsIHZhbHVlKHZhbHVlKQotICAgIHsKLSAgICB9Ci0KLSAgICBkb3VibGUgdGltZTsK
LSAgICBmbG9hdCB2YWx1ZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYg
Ly8gV2ViRmxvYXRLZXlmcmFtZV9oCkluZGV4OiBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVi
bGljL1dlYkZsb2F0UG9pbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvUGxhdGZvcm0vY2hyb21p
dW0vcHVibGljL1dlYkZsb2F0UG9pbnQuaAkocmV2aXNpb24gMTQ3NzEwKQorKysgU291cmNlL1Bs
YXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJGbG9hdFBvaW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTEsMTEyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAq
IG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAq
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0g
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaWZuZGVmIFdlYkZsb2F0UG9pbnRfaAotI2RlZmluZSBXZWJGbG9hdFBv
aW50X2gKLQotI2luY2x1ZGUgIldlYkNvbW1vbi5oIgotCi0jaWYgV0VCS0lUX0lNUExFTUVOVEFU
SU9OCi0jaW5jbHVkZSAiRmxvYXRQb2ludC5oIgotI2Vsc2UKLSNpbmNsdWRlIDx1aS9nZngvcG9p
bnRfZi5oPgotI2VuZGlmCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1zdHJ1Y3QgV2ViRmxvYXRQ
b2ludCB7Ci0gICAgZmxvYXQgeDsKLSAgICBmbG9hdCB5OwotCi0gICAgV2ViRmxvYXRQb2ludCgp
Ci0gICAgICAgIDogeCgwLjBmKQotICAgICAgICAsIHkoMC4wZikKLSAgICB7Ci0gICAgfQotCi0g
ICAgV2ViRmxvYXRQb2ludChmbG9hdCB4LCBmbG9hdCB5KQotICAgICAgICA6IHgoeCkKLSAgICAg
ICAgLCB5KHkpCi0gICAgewotICAgIH0KLQotI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgotICAg
IFdlYkZsb2F0UG9pbnQoY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgcCkKLSAgICAgICAgOiB4
KHAueCgpKQotICAgICAgICAsIHkocC55KCkpCi0gICAgewotICAgIH0KLQotICAgIFdlYkZsb2F0
UG9pbnQmIG9wZXJhdG9yPShjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiBwKQotICAgIHsKLSAg
ICAgICAgeCA9IHAueCgpOwotICAgICAgICB5ID0gcC55KCk7Ci0gICAgICAgIHJldHVybiAqdGhp
czsKLSAgICB9Ci0KLSAgICBvcGVyYXRvciBXZWJDb3JlOjpGbG9hdFBvaW50KCkgY29uc3QKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBXZWJDb3JlOjpGbG9hdFBvaW50KHgsIHkpOwotICAgIH0KLSNl
bHNlCi0gICAgV2ViRmxvYXRQb2ludChjb25zdCBnZng6OlBvaW50RiYgcCkKLSAgICAgICAgOiB4
KHAueCgpKQotICAgICAgICAsIHkocC55KCkpCi0gICAgewotICAgIH0KLQotICAgIFdlYkZsb2F0
UG9pbnQmIG9wZXJhdG9yPShjb25zdCBnZng6OlBvaW50RiYgcCkKLSAgICB7Ci0gICAgICAgIHgg
PSBwLngoKTsKLSAgICAgICAgeSA9IHAueSgpOwotICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAg
fQotCi0gICAgb3BlcmF0b3IgZ2Z4OjpQb2ludEYoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0
dXJuIGdmeDo6UG9pbnRGKHgsIHkpOwotICAgIH0KLQotI2VuZGlmCi19OwotCi1pbmxpbmUgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IFdlYkZsb2F0UG9pbnQmIGEsIGNvbnN0IFdlYkZsb2F0UG9pbnQm
IGIpCi17Ci0gICAgcmV0dXJuIGEueCA9PSBiLnggJiYgYS55ID09IGIueTsKLX0KLQotaW5saW5l
IGJvb2wgb3BlcmF0b3IhPShjb25zdCBXZWJGbG9hdFBvaW50JiBhLCBjb25zdCBXZWJGbG9hdFBv
aW50JiBiKQotewotICAgIHJldHVybiAhKGEgPT0gYik7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdl
YktpdAotCi0jZW5kaWYKSW5kZXg6IFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2Vi
RmxvYXRRdWFkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1Ymxp
Yy9XZWJGbG9hdFF1YWQuaAkocmV2aXNpb24gMTQ3NzEwKQorKysgU291cmNlL1BsYXRmb3JtL2No
cm9taXVtL3B1YmxpYy9XZWJGbG9hdFF1YWQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw4MiArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgot
ICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0g
KiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2lmbmRlZiBXZWJGbG9hdFF1YWRfaAotI2RlZmluZSBXZWJGbG9hdFF1YWRfaAotCi0jaW5j
bHVkZSAiV2ViQ29tbW9uLmgiCi0jaW5jbHVkZSAiV2ViRmxvYXRQb2ludC5oIgotI2luY2x1ZGUg
IldlYlJlY3QuaCIKLQotI2luY2x1ZGUgPGFsZ29yaXRobT4KLSNpbmNsdWRlIDxjbWF0aD4KLQot
I2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgotI2luY2x1ZGUgIkZsb2F0UXVhZC5oIgotI2VuZGlm
Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1zdHJ1Y3QgV2ViRmxvYXRRdWFkIHsKLSAgICBXZWJG
bG9hdFBvaW50IHBbNF07Ci0KLSAgICBXZWJGbG9hdFF1YWQoKQotICAgIHsKLSAgICB9Ci0KLSAg
ICBXZWJGbG9hdFF1YWQoY29uc3QgV2ViRmxvYXRQb2ludCYgcDAsIGNvbnN0IFdlYkZsb2F0UG9p
bnQmIHAxLCBjb25zdCBXZWJGbG9hdFBvaW50JiBwMiwgY29uc3QgV2ViRmxvYXRQb2ludCYgcDMp
Ci0gICAgewotICAgICAgICBwWzBdID0gcDA7Ci0gICAgICAgIHBbMV0gPSBwMTsKLSAgICAgICAg
cFsyXSA9IHAyOwotICAgICAgICBwWzNdID0gcDM7Ci0gICAgfQotCi0gICAgV0VCS0lUX0VYUE9S
VCBXZWJSZWN0IGVuY2xvc2luZ1JlY3QoKSBjb25zdDsKLQotI2lmIFdFQktJVF9JTVBMRU1FTlRB
VElPTgotICAgIFdlYkZsb2F0UXVhZCYgb3BlcmF0b3I9KGNvbnN0IFdlYkNvcmU6OkZsb2F0UXVh
ZCYgcSkKLSAgICB7Ci0gICAgICAgIHBbMF0gPSBxLnAxKCk7Ci0gICAgICAgIHBbMV0gPSBxLnAy
KCk7Ci0gICAgICAgIHBbMl0gPSBxLnAzKCk7Ci0gICAgICAgIHBbM10gPSBxLnA0KCk7Ci0gICAg
ICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0gICAgV2ViRmxvYXRRdWFkKGNvbnN0IFdlYkNvcmU6
OkZsb2F0UXVhZCYgcSkKLSAgICB7Ci0gICAgICAgICp0aGlzID0gcTsKLSAgICB9Ci0jZW5kaWYK
LX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYKSW5kZXg6IFNvdXJjZS9QbGF0
Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViRmxvYXRSZWN0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJGbG9hdFJlY3QuaAkocmV2aXNpb24gMTQ3NzEw
KQorKysgU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJGbG9hdFJlY3QuaAkod29y
a2luZyBjb3B5KQpAQCAtMSwxMjggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
Ci0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgV2ViRmxvYXRSZWN0X2gKLSNkZWZp
bmUgV2ViRmxvYXRSZWN0X2gKLQotI2luY2x1ZGUgIldlYkNvbW1vbi5oIgotCi0jaWYgV0VCS0lU
X0lNUExFTUVOVEFUSU9OCi0jaW5jbHVkZSAiRmxvYXRSZWN0LmgiCi0jZWxzZQotI2luY2x1ZGUg
PGNtYXRoPgotI2luY2x1ZGUgPHVpL2dmeC9yZWN0X2YuaD4KLSNlbmRpZgotCi1uYW1lc3BhY2Ug
V2ViS2l0IHsKLQotc3RydWN0IFdlYkZsb2F0UmVjdCB7Ci0gICAgZmxvYXQgeDsKLSAgICBmbG9h
dCB5OwotICAgIGZsb2F0IHdpZHRoOwotICAgIGZsb2F0IGhlaWdodDsKLQotICAgIGJvb2wgaXNF
bXB0eSgpIGNvbnN0IHsgcmV0dXJuIHdpZHRoIDw9IDAgfHwgaGVpZ2h0IDw9IDA7IH0KLQotICAg
IFdlYkZsb2F0UmVjdCgpCi0gICAgICAgIDogeCgwKQotICAgICAgICAsIHkoMCkKLSAgICAgICAg
LCB3aWR0aCgwKQotICAgICAgICAsIGhlaWdodCgwKQotICAgIHsKLSAgICB9Ci0KLSAgICBXZWJG
bG9hdFJlY3QoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCkKLSAg
ICAgICAgOiB4KHgpCi0gICAgICAgICwgeSh5KQotICAgICAgICAsIHdpZHRoKHdpZHRoKQotICAg
ICAgICAsIGhlaWdodChoZWlnaHQpCi0gICAgewotICAgIH0KLQotI2lmIFdFQktJVF9JTVBMRU1F
TlRBVElPTgotICAgIFdlYkZsb2F0UmVjdChjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHIpCi0g
ICAgICAgIDogeChyLngoKSkKLSAgICAgICAgLCB5KHIueSgpKQotICAgICAgICAsIHdpZHRoKHIu
d2lkdGgoKSkKLSAgICAgICAgLCBoZWlnaHQoci5oZWlnaHQoKSkKLSAgICB7Ci0gICAgfQotCi0g
ICAgV2ViRmxvYXRSZWN0JiBvcGVyYXRvcj0oY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiByKQot
ICAgIHsKLSAgICAgICAgeCA9IHIueCgpOwotICAgICAgICB5ID0gci55KCk7Ci0gICAgICAgIHdp
ZHRoID0gci53aWR0aCgpOwotICAgICAgICBoZWlnaHQgPSByLmhlaWdodCgpOwotICAgICAgICBy
ZXR1cm4gKnRoaXM7Ci0gICAgfQotCi0gICAgb3BlcmF0b3IgV2ViQ29yZTo6RmxvYXRSZWN0KCkg
Y29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBXZWJDb3JlOjpGbG9hdFJlY3QoeCwgeSwgd2lk
dGgsIGhlaWdodCk7Ci0gICAgfQotI2Vsc2UKLSAgICBXZWJGbG9hdFJlY3QoY29uc3QgZ2Z4OjpS
ZWN0RiYgcikKLSAgICAgICAgOiB4KHIueCgpKQotICAgICAgICAsIHkoci55KCkpCi0gICAgICAg
ICwgd2lkdGgoci53aWR0aCgpKQotICAgICAgICAsIGhlaWdodChyLmhlaWdodCgpKQotICAgIHsK
LSAgICB9Ci0KLSAgICBXZWJGbG9hdFJlY3QmIG9wZXJhdG9yPShjb25zdCBnZng6OlJlY3RGJiBy
KQotICAgIHsKLSAgICAgICAgeCA9IHIueCgpOwotICAgICAgICB5ID0gci55KCk7Ci0gICAgICAg
IHdpZHRoID0gci53aWR0aCgpOwotICAgICAgICBoZWlnaHQgPSByLmhlaWdodCgpOwotICAgICAg
ICByZXR1cm4gKnRoaXM7Ci0gICAgfQotCi0gICAgb3BlcmF0b3IgZ2Z4OjpSZWN0RigpIGNvbnN0
Ci0gICAgewotICAgICAgICByZXR1cm4gZ2Z4OjpSZWN0Rih4LCB5LCBzdGQ6Om1heCgwLjBmLCB3
aWR0aCksIHN0ZDo6bWF4KDAuMGYsIGhlaWdodCkpOwotICAgIH0KLSNlbmRpZgotfTsKLQotaW5s
aW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBXZWJGbG9hdFJlY3QmIGEsIGNvbnN0IFdlYkZsb2F0
UmVjdCYgYikKLXsKLSAgICByZXR1cm4gYS54ID09IGIueCAmJiBhLnkgPT0gYi55ICYmIGEud2lk
dGggPT0gYi53aWR0aCAmJiBhLmhlaWdodCA9PSBiLmhlaWdodDsKLX0KLQotaW5saW5lIGJvb2wg
b3BlcmF0b3IhPShjb25zdCBXZWJGbG9hdFJlY3QmIGEsIGNvbnN0IFdlYkZsb2F0UmVjdCYgYikK
LXsKLSAgICByZXR1cm4gIShhID09IGIpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQot
I2VuZGlmCkluZGV4OiBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkZsb2F0U2l6
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViRmxv
YXRTaXplLmgJKHJldmlzaW9uIDE0NzcxMCkKKysrIFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9w
dWJsaWMvV2ViRmxvYXRTaXplLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsMTMzICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICog
ZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAq
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZu
ZGVmIFdlYkZsb2F0U2l6ZV9oCi0jZGVmaW5lIFdlYkZsb2F0U2l6ZV9oCi0KLSNpbmNsdWRlICJX
ZWJDb21tb24uaCIKLQotI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgotI2luY2x1ZGUgIkZsb2F0
U2l6ZS5oIgotI2Vsc2UKLSNpbmNsdWRlIDxjbWF0aD4KLSNpbmNsdWRlIDx1aS9nZngvc2l6ZV9m
Lmg+Ci0jaW5jbHVkZSA8dWkvZ2Z4L3ZlY3RvcjJkX2YuaD4KLSNlbmRpZgotCi1uYW1lc3BhY2Ug
V2ViS2l0IHsKLQotc3RydWN0IFdlYkZsb2F0U2l6ZSB7Ci0gICAgZmxvYXQgd2lkdGg7Ci0gICAg
ZmxvYXQgaGVpZ2h0OwotCi0gICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gd2lkdGgg
PD0gMCB8fCBoZWlnaHQgPD0gMDsgfQotCi0gICAgV2ViRmxvYXRTaXplKCkKLSAgICAgICAgOiB3
aWR0aCgwKQotICAgICAgICAsIGhlaWdodCgwKQotICAgIHsKLSAgICB9Ci0KLSAgICBXZWJGbG9h
dFNpemUoZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCkKLSAgICAgICAgOiB3aWR0aCh3aWR0aCkK
LSAgICAgICAgLCBoZWlnaHQoaGVpZ2h0KQotICAgIHsKLSAgICB9Ci0KLSNpZiBXRUJLSVRfSU1Q
TEVNRU5UQVRJT04KLSAgICBXZWJGbG9hdFNpemUoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBz
KQotICAgICAgICA6IHdpZHRoKHMud2lkdGgoKSkKLSAgICAgICAgLCBoZWlnaHQocy5oZWlnaHQo
KSkKLSAgICB7Ci0gICAgfQotCi0gICAgV2ViRmxvYXRTaXplJiBvcGVyYXRvcj0oY29uc3QgV2Vi
Q29yZTo6RmxvYXRTaXplJiBzKQotICAgIHsKLSAgICAgICAgd2lkdGggPSBzLndpZHRoKCk7Ci0g
ICAgICAgIGhlaWdodCA9IHMuaGVpZ2h0KCk7Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9
Ci0KLSAgICBvcGVyYXRvciBXZWJDb3JlOjpGbG9hdFNpemUoKSBjb25zdAotICAgIHsKLSAgICAg
ICAgcmV0dXJuIFdlYkNvcmU6OkZsb2F0U2l6ZSh3aWR0aCwgaGVpZ2h0KTsKLSAgICB9Ci0jZWxz
ZQotICAgIFdlYkZsb2F0U2l6ZShjb25zdCBnZng6OlNpemVGJiBzKQotICAgICAgICA6IHdpZHRo
KHMud2lkdGgoKSkKLSAgICAgICAgLCBoZWlnaHQocy5oZWlnaHQoKSkKLSAgICB7Ci0gICAgfQot
Ci0gICAgV2ViRmxvYXRTaXplKGNvbnN0IGdmeDo6VmVjdG9yMmRGJiB2KQotICAgICAgICA6IHdp
ZHRoKHYueCgpKQotICAgICAgICAsIGhlaWdodCh2LnkoKSkKLSAgICB7Ci0gICAgfQotCi0gICAg
V2ViRmxvYXRTaXplJiBvcGVyYXRvcj0oY29uc3QgZ2Z4OjpTaXplRiYgcykKLSAgICB7Ci0gICAg
ICAgIHdpZHRoID0gcy53aWR0aCgpOwotICAgICAgICBoZWlnaHQgPSBzLmhlaWdodCgpOwotICAg
ICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotCi0gICAgV2ViRmxvYXRTaXplJiBvcGVyYXRvcj0o
Y29uc3QgZ2Z4OjpWZWN0b3IyZEYmIHYpCi0gICAgewotICAgICAgICB3aWR0aCA9IHYueCgpOwot
ICAgICAgICBoZWlnaHQgPSB2LnkoKTsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQot
ICAgIG9wZXJhdG9yIGdmeDo6U2l6ZUYoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGdm
eDo6U2l6ZUYoc3RkOjptYXgoMC5mLCB3aWR0aCksIHN0ZDo6bWF4KDAuZiwgaGVpZ2h0KSk7Ci0g
ICAgfQotCi0gICAgb3BlcmF0b3IgZ2Z4OjpWZWN0b3IyZEYoKSBjb25zdAotICAgIHsKLSAgICAg
ICAgcmV0dXJuIGdmeDo6VmVjdG9yMmRGKHdpZHRoLCBoZWlnaHQpOwotICAgIH0KLSNlbmRpZgot
fTsKLQotaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBXZWJGbG9hdFNpemUmIGEsIGNvbnN0
IFdlYkZsb2F0U2l6ZSYgYikKLXsKLSAgICByZXR1cm4gYS53aWR0aCA9PSBiLndpZHRoICYmIGEu
aGVpZ2h0ID09IGIuaGVpZ2h0OwotfQotCi1pbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFdl
YkZsb2F0U2l6ZSYgYSwgY29uc3QgV2ViRmxvYXRTaXplJiBiKQotewotICAgIHJldHVybiAhKGEg
PT0gYik7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYKSW5kZXg6IFNvdXJj
ZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViR2FtZXBhZC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViR2FtZXBhZC5oCShyZXZpc2lvbiAxNDc3
MTApCisrKyBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkdhbWVwYWQuaAkod29y
a2luZyBjb3B5KQpAQCAtMSw4NiArMCwwIEBACi0vLyBDb3B5cmlnaHQgKEMpIDIwMTEsIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlIG1ldDoKLS8vCi0vLyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8gMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LS8vICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLS8vICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JyBBTkQKLS8vIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQotLy8gSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKLS8vIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFCi0vLyBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotLy8gREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLS8v
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSCi0vLyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKLS8vIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKLS8v
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSAotLy8gREFNQUdFLgotCi0jaWZuZGVmIFdlYkdhbWVwYWRfaAot
I2RlZmluZSBXZWJHYW1lcGFkX2gKLQotI2luY2x1ZGUgIldlYkNvbW1vbi5oIgotCi0jaWYgV0VC
S0lUX0lNUExFTUVOVEFUSU9OCi0jaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KLSNlbmRpZgot
Ci1uYW1lc3BhY2UgV2ViS2l0IHsKLQotI3ByYWdtYSBwYWNrKHB1c2gsIDEpCi0KLS8vIFRoaXMg
c3RydWN0dXJlIGlzIGludGVudGlvbmFsbHkgUE9EIGFuZCBmaXhlZCBzaXplIHNvIHRoYXQgaXQg
Y2FuIGJlIHNoYXJlZAotLy8gbWVtb3J5IGJldHdlZW4gaGFyZHdhcmUgcG9sbGluZyB0aHJlYWRz
IGFuZCB0aGUgcmVzdCBvZiB0aGUgYnJvd3Nlci4gU2VlCi0vLyBhbHNvIFdlYkdhbWVwYWRzLmgu
Ci1jbGFzcyBXZWJHYW1lcGFkIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGlk
TGVuZ3RoQ2FwID0gMTI4OwotICAgIHN0YXRpYyBjb25zdCBzaXplX3QgYXhlc0xlbmd0aENhcCA9
IDE2OwotICAgIHN0YXRpYyBjb25zdCBzaXplX3QgYnV0dG9uc0xlbmd0aENhcCA9IDMyOwotCi0g
ICAgV2ViR2FtZXBhZCgpCi0gICAgICAgIDogY29ubmVjdGVkKGZhbHNlKQotICAgICAgICAsIHRp
bWVzdGFtcCgwKQotICAgICAgICAsIGF4ZXNMZW5ndGgoMCkKLSAgICAgICAgLCBidXR0b25zTGVu
Z3RoKDApCi0gICAgewotICAgICAgICBpZFswXSA9IDA7Ci0gICAgfQotCi0gICAgLy8gSXMgdGhl
cmUgYSBnYW1lcGFkIGNvbm5lY3RlZCBhdCB0aGlzIGluZGV4PwotICAgIGJvb2wgY29ubmVjdGVk
OwotCi0gICAgLy8gRGV2aWNlIGlkZW50aWZpZXIgKGJhc2VkIG9uIG1hbnVmYWN0dXJlciwgbW9k
ZWwsIGV0Yy4pLgotICAgIFdlYlVDaGFyIGlkW2lkTGVuZ3RoQ2FwXTsKLQotICAgIC8vIE1vbm90
b25pY2FsbHkgaW5jcmVhc2luZyB2YWx1ZSByZWZlcnJpbmcgdG8gd2hlbiB0aGUgZGF0YSB3ZXJl
IGxhc3QKLSAgICAvLyB1cGRhdGVkLgotICAgIHVuc2lnbmVkIGxvbmcgbG9uZyB0aW1lc3RhbXA7
Ci0KLSAgICAvLyBOdW1iZXIgb2YgdmFsaWQgZW50cmllcyBpbiB0aGUgYXhlcyBhcnJheS4KLSAg
ICB1bnNpZ25lZCBheGVzTGVuZ3RoOwotCi0gICAgLy8gTm9ybWFsaXplZCB2YWx1ZXMgcmVwcmVz
ZW50aW5nIGF4ZXMsIGluIHRoZSByYW5nZSBbLTEuLjFdLgotICAgIGZsb2F0IGF4ZXNbYXhlc0xl
bmd0aENhcF07Ci0KLSAgICAvLyBOdW1iZXIgb2YgdmFsaWQgZW50cmllcyBpbiB0aGUgYnV0dG9u
cyBhcnJheS4KLSAgICB1bnNpZ25lZCBidXR0b25zTGVuZ3RoOwotCi0gICAgLy8gTm9ybWFsaXpl
ZCB2YWx1ZXMgcmVwcmVzZW50aW5nIGJ1dHRvbnMsIGluIHRoZSByYW5nZSBbMC4uMV0uCi0gICAg
ZmxvYXQgYnV0dG9uc1tidXR0b25zTGVuZ3RoQ2FwXTsKLX07Ci0KLSNpZiBXRUJLSVRfSU1QTEVN
RU5UQVRJT04KLUNPTVBJTEVfQVNTRVJUKHNpemVvZihXZWJHYW1lcGFkKSA9PSA0NjUsIFdlYkdh
bWVwYWRfaGFzX3dyb25nX3NpemUpOwotI2VuZGlmCi0KLSNwcmFnbWEgcGFjayhwb3ApCi0KLX0K
LQotI2VuZGlmIC8vIFdlYkdhbWVwYWRfaApJbmRleDogU291cmNlL1BsYXRmb3JtL2Nocm9taXVt
L3B1YmxpYy9XZWJHYW1lcGFkcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9QbGF0Zm9ybS9jaHJv
bWl1bS9wdWJsaWMvV2ViR2FtZXBhZHMuaAkocmV2aXNpb24gMTQ3NzEwKQorKysgU291cmNlL1Bs
YXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJHYW1lcGFkcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDYyICswLDAgQEAKLS8vIENvcHlyaWdodCAoQykgMjAxMSwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgotLy8K
LS8vIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0vLyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotLy8gICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAotLy8gQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCi0vLyBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQotLy8gQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKLS8vIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMCi0vLyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgotLy8gU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIKLS8vIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVAotLy8gTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQotLy8gT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNICi0vLyBEQU1BR0UuCi0KLSNpZm5kZWYgV2ViR2FtZXBhZHNfaAotI2RlZmluZSBXZWJHYW1l
cGFkc19oCi0KLSNpbmNsdWRlICJXZWJHYW1lcGFkLmgiCi0KLSNpZiBXRUJLSVRfSU1QTEVNRU5U
QVRJT04KLSNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgotI2VuZGlmCi0KLW5hbWVzcGFjZSBX
ZWJLaXQgewotCi0jcHJhZ21hIHBhY2socHVzaCwgMSkKLQotLy8gVGhpcyBzdHJ1Y3R1cmUgaXMg
aW50ZW50aW9uYWxseSBQT0QgYW5kIGZpeGVkIHNpemUgc28gdGhhdCBpdCBjYW4gYmUgc3RvcmVk
Ci0vLyBpbiBzaGFyZWQgbWVtb3J5IGJldHdlZW4gaGFyZHdhcmUgcG9sbGluZyB0aHJlYWRzIGFu
ZCB0aGUgcmVzdCBvZiB0aGUKLS8vIGJyb3dzZXIuCi1jbGFzcyBXZWJHYW1lcGFkcyB7Ci1wdWJs
aWM6Ci0gICAgV2ViR2FtZXBhZHMoKQotICAgICAgICA6IGxlbmd0aCgwKSB7IH0KLQotICAgIHN0
YXRpYyBjb25zdCBzaXplX3QgaXRlbXNMZW5ndGhDYXAgPSA0OwotCi0gICAgLy8gTnVtYmVyIG9m
IHZhbGlkIGVudHJpZXMgaW4gdGhlIGl0ZW1zIGFycmF5LgotICAgIHVuc2lnbmVkIGxlbmd0aDsK
LQotICAgIC8vIEdhbWVwYWQgZGF0YSBmb3IgTiBzZXBhcmF0ZSBnYW1lcGFkIGRldmljZXMuCi0g
ICAgV2ViR2FtZXBhZCBpdGVtc1tpdGVtc0xlbmd0aENhcF07Ci19OwotCi0jaWYgV0VCS0lUX0lN
UExFTUVOVEFUSU9OCi1DT01QSUxFX0FTU0VSVChzaXplb2YoV2ViR2FtZXBhZHMpID09IDE4NjQs
IFdlYkdhbWVwYWRzX2hhc193cm9uZ19zaXplKTsKLSNlbmRpZgotCi0jcHJhZ21hIHBhY2socG9w
KQotCi19Ci0KLSNlbmRpZiAvLyBXZWJHYW1lcGFkc19oCkluZGV4OiBTb3VyY2UvUGxhdGZvcm0v
Y2hyb21pdW0vcHVibGljL1dlYkdlc3R1cmVDdXJ2ZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9Q
bGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViR2VzdHVyZUN1cnZlLmgJKHJldmlzaW9uIDE0Nzcx
MCkKKysrIFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViR2VzdHVyZUN1cnZlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNDYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KLSAqIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwotICogU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBX
ZWJHZXN0dXJlQ3VydmVfaAotI2RlZmluZSBXZWJHZXN0dXJlQ3VydmVfaAotCi1uYW1lc3BhY2Ug
V2ViS2l0IHsKLQotY2xhc3MgV2ViR2VzdHVyZUN1cnZlVGFyZ2V0OwotCi0vLyBBYnN0cmFjdCBp
bnRlcmZhY2UgZm9yIGN1cnZlcyB1c2VkIGJ5IEFjdGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlv
bi4gQQotLy8gV2ViR2VzdHVyZUN1cnZlIGRlZmluZXMgdGhlIGFuaW1hdGlvbiBwYXJhbWV0ZXJz
IGFzIGEgZnVuY3Rpb24gb2YgdGltZQotLy8gKHplcm8tYmFzZWQpLCBhbmQgYXBwbGllcyB0aGUg
cGFyYW1ldGVycyBkaXJlY3RseSB0byB0aGUgdGFyZ2V0IG9mIHRoZQotLy8gYW5pbWF0aW9uLgot
Y2xhc3MgV2ViR2VzdHVyZUN1cnZlIHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIH5XZWJHZXN0dXJl
Q3VydmUoKSB7IH0KLQotICAgIC8vIFJldHVybnMgZmFsc2UgaWYgY3VydmUgaGFzIGZpbmlzaGVk
IGFuZCBjYW4gbm8gbG9uZ2VyIGJlIGFwcGxpZWQuCi0gICAgdmlydHVhbCBib29sIGFwcGx5KGRv
dWJsZSB0aW1lLCBXZWJHZXN0dXJlQ3VydmVUYXJnZXQqKSA9IDA7Ci19OwotCi19IC8vIG5hbWVz
cGFjZSBXZWJLaXQKLQotI2VuZGlmCkluZGV4OiBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVi
bGljL1dlYkdlc3R1cmVDdXJ2ZVRhcmdldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9QbGF0Zm9y
bS9jaHJvbWl1bS9wdWJsaWMvV2ViR2VzdHVyZUN1cnZlVGFyZ2V0LmgJKHJldmlzaW9uIDE0Nzcx
MCkKKysrIFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViR2VzdHVyZUN1cnZlVGFy
Z2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNDMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
Ci0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KLSAqIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwotICogU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lm
bmRlZiBXZWJHZXN0dXJlQ3VydmVUYXJnZXRfaAotI2RlZmluZSBXZWJHZXN0dXJlQ3VydmVUYXJn
ZXRfaAotCi0jaW5jbHVkZSAiV2ViRmxvYXRTaXplLmgiCi0jaW5jbHVkZSAiV2ViUG9pbnQuaCIK
LQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIFdlYkdlc3R1cmVDdXJ2ZVRhcmdldCB7Ci1w
dWJsaWM6Ci0gICAgdmlydHVhbCB2b2lkIHNjcm9sbEJ5KGNvbnN0IFdlYkZsb2F0U2l6ZSYgZGVs
dGEpID0gMDsKLQotcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgfldlYkdlc3R1cmVDdXJ2ZVRhcmdl
dCgpIHsgfQotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZgpJbmRleDogU291
cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJHcmFwaGljc0NvbnRleHQzRC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViR3JhcGhpY3NDb250
ZXh0M0QuaAkocmV2aXNpb24gMTQ3NzEwKQorKysgU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1
YmxpYy9XZWJHcmFwaGljc0NvbnRleHQzRC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQ5MCArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgot
ICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0g
KiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2lmbmRlZiBXZWJHcmFwaGljc0NvbnRleHQzRF9oCi0jZGVmaW5lIFdlYkdyYXBoaWNzQ29u
dGV4dDNEX2gKLQotI2luY2x1ZGUgIldlYkNvbW1vbi5oIgotI2luY2x1ZGUgIldlYkdyYXBoaWNz
TWVtb3J5QWxsb2NhdGlvbi5oIgotI2luY2x1ZGUgIldlYkdyYXBoaWNzTWVtb3J5U3RhdHMuaCIK
LSNpbmNsdWRlICJXZWJOb25Db3B5YWJsZS5oIgotI2luY2x1ZGUgIldlYlN0cmluZy5oIgotCi1z
dHJ1Y3QgR3JHTEludGVyZmFjZTsKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLS8vIFdHQzNEIHR5
cGVzIG1hdGNoIHRoZSBjb3JyZXNwb25kaW5nIEdMIHR5cGVzIGFzIGRlZmluZWQgaW4gT3BlbkdM
IEVTIDIuMAotLy8gaGVhZGVyIGZpbGUgZ2wyLmggZnJvbSBraHJvbm9zLm9yZy4KLXR5cGVkZWYg
Y2hhciBXR0MzRGNoYXI7Ci10eXBlZGVmIHVuc2lnbmVkIGludCBXR0MzRGVudW07Ci10eXBlZGVm
IHVuc2lnbmVkIGNoYXIgV0dDM0Rib29sZWFuOwotdHlwZWRlZiB1bnNpZ25lZCBpbnQgV0dDM0Ri
aXRmaWVsZDsKLXR5cGVkZWYgc2lnbmVkIGNoYXIgV0dDM0RieXRlOwotdHlwZWRlZiB1bnNpZ25l
ZCBjaGFyIFdHQzNEdWJ5dGU7Ci10eXBlZGVmIHNob3J0IFdHQzNEc2hvcnQ7Ci10eXBlZGVmIHVu
c2lnbmVkIHNob3J0IFdHQzNEdXNob3J0OwotdHlwZWRlZiBpbnQgV0dDM0RpbnQ7Ci10eXBlZGVm
IGludCBXR0MzRHNpemVpOwotdHlwZWRlZiB1bnNpZ25lZCBpbnQgV0dDM0R1aW50OwotdHlwZWRl
ZiBmbG9hdCBXR0MzRGZsb2F0OwotdHlwZWRlZiBmbG9hdCBXR0MzRGNsYW1wZjsKLXR5cGVkZWYg
c2lnbmVkIGxvbmcgaW50IFdHQzNEaW50cHRyOwotdHlwZWRlZiBzaWduZWQgbG9uZyBpbnQgV0dD
M0RzaXplaXB0cjsKLQotLy8gVHlwZWRlZiBmb3Igc2VydmVyLXNpZGUgb2JqZWN0cyBsaWtlIE9w
ZW5HTCB0ZXh0dXJlcyBhbmQgcHJvZ3JhbSBvYmplY3RzLgotdHlwZWRlZiBXR0MzRHVpbnQgV2Vi
R0xJZDsKLQotLy8gVGhpcyBpbnRlcmZhY2UgYWJzdHJhY3RzIHRoZSBvcGVyYXRpb25zIHBlcmZv
cm1lZCBieSB0aGUKLS8vIEdyYXBoaWNzQ29udGV4dDNEIGluIG9yZGVyIHRvIGltcGxlbWVudCBX
ZWJHTC4gTmVhcmx5IGFsbCBvZiB0aGUKLS8vIG1ldGhvZHMgZXhwb3NlZCBvbiB0aGlzIGludGVy
ZmFjZSBtYXAgZGlyZWN0bHkgdG8gZW50cnkgcG9pbnRzIGluCi0vLyB0aGUgT3BlbkdMIEVTIDIu
MCBBUEkuCi0vLwotLy8gQ3JlYXRpbmcgYSBXZWJHcmFwaGljc0NvbnRleHQgZG9lcyBub3QgbWFr
ZSBpdCBjdXJyZW50LCBvciBndWFyYW50ZWUKLS8vIHRoYXQgdGhlIGNvbnRleHQgaGFzIGJlZW4g
Y3JlYXRlZCBzdWNjZXNzZnVsbHkuIFVzZQotLy8gbWFrZUNvbnRleHRDdXJyZW50KCkgdG8gY29t
cGxldGUgaW5pdGlhbGl6YXRpb24gb2YgdGhlIGNvbnRleHQsIHRyZWF0aW5nCi0vLyBhIGZhbHNl
IHJldHVybiB2YWx1ZSBhcyBpbmRpY2F0aW9uIHRoYXQgdGhlIGNvbnRleHQgY291bGQgbm90IGJl
IGNyZWF0ZWQKLS8vIHN1Y2Nlc3NmdWxseS4KLWNsYXNzIFdlYkdyYXBoaWNzQ29udGV4dDNEIDog
cHVibGljIFdlYk5vbkNvcHlhYmxlIHsKLXB1YmxpYzoKLSAgICAvLyBSZXR1cm4gdmFsdWUgZnJv
bSBnZXRBY3RpdmVVbmlmb3JtIGFuZCBnZXRBY3RpdmVBdHRyaWIuCi0gICAgc3RydWN0IEFjdGl2
ZUluZm8gewotICAgICAgICBXZWJTdHJpbmcgbmFtZTsKLSAgICAgICAgV0dDM0RlbnVtIHR5cGU7
Ci0gICAgICAgIFdHQzNEaW50IHNpemU7Ci0gICAgfTsKLQotICAgIC8vIENvbnRleHQgY3JlYXRp
b24gYXR0cmlidXRlcy4KLSAgICBzdHJ1Y3QgQXR0cmlidXRlcyB7Ci0gICAgICAgIEF0dHJpYnV0
ZXMoKQotICAgICAgICAgICAgOiBhbHBoYSh0cnVlKQotICAgICAgICAgICAgLCBkZXB0aCh0cnVl
KQotICAgICAgICAgICAgLCBzdGVuY2lsKHRydWUpCi0gICAgICAgICAgICAsIGFudGlhbGlhcyh0
cnVlKQotICAgICAgICAgICAgLCBwcmVtdWx0aXBsaWVkQWxwaGEodHJ1ZSkKLSAgICAgICAgICAg
ICwgY2FuUmVjb3ZlckZyb21Db250ZXh0TG9zcyh0cnVlKQotICAgICAgICAgICAgLCBub0V4dGVu
c2lvbnMoZmFsc2UpCi0gICAgICAgICAgICAsIHNoYXJlUmVzb3VyY2VzKHRydWUpCi0gICAgICAg
ICAgICAsIHByZWZlckRpc2NyZXRlR1BVKGZhbHNlKQotICAgICAgICAgICAgLCBub0F1dG9tYXRp
Y0ZsdXNoZXMoZmFsc2UpCi0gICAgICAgIHsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgYWxw
aGE7Ci0gICAgICAgIGJvb2wgZGVwdGg7Ci0gICAgICAgIGJvb2wgc3RlbmNpbDsKLSAgICAgICAg
Ym9vbCBhbnRpYWxpYXM7Ci0gICAgICAgIGJvb2wgcHJlbXVsdGlwbGllZEFscGhhOwotICAgICAg
ICBib29sIGNhblJlY292ZXJGcm9tQ29udGV4dExvc3M7Ci0gICAgICAgIGJvb2wgbm9FeHRlbnNp
b25zOwotICAgICAgICBib29sIHNoYXJlUmVzb3VyY2VzOwotICAgICAgICBib29sIHByZWZlckRp
c2NyZXRlR1BVOwotICAgICAgICBib29sIG5vQXV0b21hdGljRmx1c2hlczsKLSAgICAgICAgLy8g
RklYTUU6IGlkZWFsbHkgdGhpcyB3b3VsZCBiZSBhIFdlYlVSTCwgYnV0IGl0IGlzIGN1cnJlbnRs
eSBub3QKLSAgICAgICAgLy8gcG9zc2libGUgdG8gcGFzcyBhIFdlYlVSTCBieSB2YWx1ZSBhY3Jv
c3MgdGhlIFdlYktpdCBBUEkgYm91bmRhcnkuCi0gICAgICAgIC8vIFNlZSBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAzNzkzI2MxMyAuCi0gICAgICAgIFdlYlN0cmlu
ZyB0b3BEb2N1bWVudFVSTDsKLSAgICB9OwotCi0gICAgY2xhc3MgV2ViR3JhcGhpY3NDb250ZXh0
TG9zdENhbGxiYWNrIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBvbkNvbnRl
eHRMb3N0KCkgPSAwOwotCi0gICAgcHJvdGVjdGVkOgotICAgICAgICB2aXJ0dWFsIH5XZWJHcmFw
aGljc0NvbnRleHRMb3N0Q2FsbGJhY2soKSB7IH0KLSAgICB9OwotCi0gICAgY2xhc3MgV2ViR3Jh
cGhpY3NFcnJvck1lc3NhZ2VDYWxsYmFjayB7Ci0gICAgcHVibGljOgotICAgICAgICB2aXJ0dWFs
IHZvaWQgb25FcnJvck1lc3NhZ2UoY29uc3QgV2ViU3RyaW5nJiwgV0dDM0RpbnQpID0gMDsKLQot
ICAgIHByb3RlY3RlZDoKLSAgICAgICAgdmlydHVhbCB+V2ViR3JhcGhpY3NFcnJvck1lc3NhZ2VD
YWxsYmFjaygpIHsgfQotICAgIH07Ci0KLSAgICBjbGFzcyBXZWJHcmFwaGljc1N3YXBCdWZmZXJz
Q29tcGxldGVDYWxsYmFja0NIUk9NSVVNIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIHZpcnR1YWwg
dm9pZCBvblN3YXBCdWZmZXJzQ29tcGxldGUoKSA9IDA7Ci0KLSAgICBwcm90ZWN0ZWQ6Ci0gICAg
ICAgIHZpcnR1YWwgfldlYkdyYXBoaWNzU3dhcEJ1ZmZlcnNDb21wbGV0ZUNhbGxiYWNrQ0hST01J
VU0oKSB7IH0KLSAgICB9OwotCi0gICAgY2xhc3MgV2ViR3JhcGhpY3NNZW1vcnlBbGxvY2F0aW9u
Q2hhbmdlZENhbGxiYWNrQ0hST01JVU0gewotICAgIHB1YmxpYzoKLSAgICAgICAgdmlydHVhbCB2
b2lkIG9uTWVtb3J5QWxsb2NhdGlvbkNoYW5nZWQoV2ViR3JhcGhpY3NNZW1vcnlBbGxvY2F0aW9u
KSA9IDA7Ci0KLSAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIHZpcnR1YWwgfldlYkdyYXBoaWNzTWVt
b3J5QWxsb2NhdGlvbkNoYW5nZWRDYWxsYmFja0NIUk9NSVVNKCkgeyB9Ci0gICAgfTsKLQotICAg
IC8vIFRoaXMgZGVzdHJ1Y3RvciBuZWVkcyB0byBiZSBwdWJsaWMgc28gdGhhdCB1c2luZyBjbGFz
c2VzIGNhbiBkZXN0cm95IGluc3RhbmNlcyBpZiBpbml0aWFsaXphdGlvbiBmYWlscy4KLSAgICB2
aXJ0dWFsIH5XZWJHcmFwaGljc0NvbnRleHQzRCgpIHsgfQotCi0gICAgLy8gTWFrZXMgdGhlIE9w
ZW5HTCBjb250ZXh0IGN1cnJlbnQgb24gdGhlIGN1cnJlbnQgdGhyZWFkLiBSZXR1cm5zIHRydWUg
b24KLSAgICAvLyBzdWNjZXNzLgotICAgIHZpcnR1YWwgYm9vbCBtYWtlQ29udGV4dEN1cnJlbnQo
KSA9IDA7Ci0KLSAgICAvLyBUaGUgc2l6ZSBvZiB0aGUgcmVnaW9uIGludG8gd2hpY2ggdGhpcyBX
ZWJHcmFwaGljc0NvbnRleHQzRCBpcyByZW5kZXJpbmcuCi0gICAgLy8gUmV0dXJucyB0aGUgbGFz
dCB2YWx1ZXMgcGFzc2VkIHRvIHJlc2hhcGUoKS4KLSAgICB2aXJ0dWFsIGludCB3aWR0aCgpID0g
MDsKLSAgICB2aXJ0dWFsIGludCBoZWlnaHQoKSA9IDA7Ci0KLSAgICAvLyBSZXNpemVzIHRoZSBy
ZWdpb24gaW50byB3aGljaCB0aGlzIFdlYkdyYXBoaWNzQ29udGV4dDNEIGlzIGRyYXdpbmcuCi0g
ICAgdmlydHVhbCB2b2lkIHJlc2hhcGUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KSA9IDA7Ci0KLSAg
ICAvLyBHTF9DSFJPTUlVTV9zZXRWaXNpYmlsaXR5IC0gQ2hhbmdlcyB0aGUgdmlzaWJpbGl0eSBv
ZiB0aGUgYmFja2J1ZmZlcgotICAgIHZpcnR1YWwgdm9pZCBzZXRWaXNpYmlsaXR5Q0hST01JVU0o
Ym9vbCB2aXNpYmxlKSA9IDA7Ci0KLSAgICAvLyBHTF9DSFJPTUlVTV9ncHVfbWVtb3J5X21hbmFn
ZXIgLSBzZXRzIGNhbGxiYWNrIHRvIG9ic2VydmUgY2hhbmdlcyB0byBtZW1vcnkgYWxsb2NhdGlv
biBsaW1pdHMuCi0gICAgdmlydHVhbCB2b2lkIHNldE1lbW9yeUFsbG9jYXRpb25DaGFuZ2VkQ2Fs
bGJhY2tDSFJPTUlVTShXZWJHcmFwaGljc01lbW9yeUFsbG9jYXRpb25DaGFuZ2VkQ2FsbGJhY2tD
SFJPTUlVTSogY2FsbGJhY2spIHsgfQotICAgIHZpcnR1YWwgdm9pZCBzZW5kTWFuYWdlZE1lbW9y
eVN0YXRzQ0hST01JVU0oY29uc3QgV2ViR3JhcGhpY3NNYW5hZ2VkTWVtb3J5U3RhdHMqIHN0YXRz
KSB7IH0KLQotICAgIC8vIEdMX0VYVF9kaXNjYXJkX2ZyYW1lYnVmZmVyIC0gbWFrZXMgc3BlY2lm
aWVkIGF0dGFjaG1lbnRzIG9mIGN1cnJlbnRseSBib3VuZCBmcmFtZWJ1ZmZlciB1bmRlZmluZWQu
Ci0gICAgdmlydHVhbCB2b2lkIGRpc2NhcmRGcmFtZWJ1ZmZlckVYVChXR0MzRGVudW0gdGFyZ2V0
LCBXR0MzRHNpemVpIG51bUF0dGFjaG1lbnRzLCBjb25zdCBXR0MzRGVudW0qIGF0dGFjaG1lbnRz
KSB7IH0KLQotICAgIC8vIEdMX0NIUk9NSVVNX2Rpc2NhcmRfYmFja2J1ZmZlciAtIGNvbnRyb2xz
IGFsbG9jYXRpb24vZGVhbGxvY2F0aW9uIG9mIHRoZSBiYWNrIGJ1ZmZlci4KLSAgICB2aXJ0dWFs
IHZvaWQgZGlzY2FyZEJhY2tidWZmZXJDSFJPTUlVTSgpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBl
bnN1cmVCYWNrYnVmZmVyQ0hST01JVU0oKSB7IH0KLQotICAgIC8vIFF1ZXJ5IHdoZXRoZXIgaXQg
aXMgYnVpbHQgb24gdG9wIG9mIGNvbXBsaWFudCBHTEVTMiBpbXBsZW1lbnRhdGlvbi4KLSAgICB2
aXJ0dWFsIGJvb2wgaXNHTEVTMkNvbXBsaWFudCgpID0gMDsKLQotICAgIHZpcnR1YWwgYm9vbCBz
ZXRQYXJlbnRDb250ZXh0KFdlYkdyYXBoaWNzQ29udGV4dDNEKiBwYXJlbnRDb250ZXh0KSB7IHJl
dHVybiBmYWxzZTsgfQotCi0gICAgdmlydHVhbCB1bnNpZ25lZCBpbnNlcnRTeW5jUG9pbnQoKSB7
IHJldHVybiAwOyB9Ci0gICAgdmlydHVhbCB2b2lkIHdhaXRTeW5jUG9pbnQodW5zaWduZWQpIHsg
fQotCi0gICAgLy8gSGVscGVyIGZvciBzb2Z0d2FyZSBjb21wb3NpdGluZyBwYXRoLiBSZWFkcyBi
YWNrIHRoZSBmcmFtZSBidWZmZXIgaW50bwotICAgIC8vIHRoZSBtZW1vcnkgcmVnaW9uIHBvaW50
ZWQgdG8gYnkgInBpeGVscyIgd2l0aCBzaXplICJidWZmZXJTaXplIi4gSXQgaXMKLSAgICAvLyBl
eHBlY3RlZCB0aGF0IHRoZSBzdG9yYWdlIGZvciAicGl4ZWxzIiBjb3ZlcnMgKDQgKiB3aWR0aCAq
IGhlaWdodCkgYnl0ZXMuCi0gICAgLy8gVGhlIFJHQkEgY2hhbm5lbHMgYXJlIHBhY2tlZCBpbnRv
ICJwaXhlbHMiIHVzaW5nIFNrQml0bWFwJ3MgYnl0ZQotICAgIC8vIG9yZGVyaW5nLiBSZXR1cm5z
IHRydWUgb24gc3VjY2Vzcy4KLSAgICB2aXJ0dWFsIGJvb2wgcmVhZEJhY2tGcmFtZWJ1ZmZlcih1
bnNpZ25lZCBjaGFyKiBwaXhlbHMsIHNpemVfdCBidWZmZXJTaXplLCBXZWJHTElkIGZyYW1lYnVm
ZmVyLCBpbnQgd2lkdGgsIGludCBoZWlnaHQpID0gMDsKLQotICAgIC8vIFJldHVybnMgdGhlIGlk
IG9mIHRoZSB0ZXh0dXJlIHdoaWNoIGlzIHVzZWQgZm9yIHN0b3JpbmcgdGhlIGNvbnRlbnRzIG9m
Ci0gICAgLy8gdGhlIGZyYW1lYnVmZmVyIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGNvbnRleHQuIFRo
aXMgdGV4dHVyZSBpcyBhY2Nlc3NpYmxlCi0gICAgLy8gYnkgdGhlIGdwdS1iYXNlZCBwYWdlIGNv
bXBvc2l0b3IuCi0gICAgdmlydHVhbCBXZWJHTElkIGdldFBsYXRmb3JtVGV4dHVyZUlkKCkgPSAw
OwotCi0gICAgLy8gQ29waWVzIHRoZSBjb250ZW50cyBvZiB0aGUgb2ZmLXNjcmVlbiByZW5kZXIg
dGFyZ2V0IHVzZWQgYnkgdGhlIFdlYkdMCi0gICAgLy8gY29udGV4dCB0byB0aGUgY29ycmVzcG9u
ZGluZyB0ZXh0dXJlIHVzZWQgYnkgdGhlIGNvbXBvc2l0b3IuCi0gICAgdmlydHVhbCB2b2lkIHBy
ZXBhcmVUZXh0dXJlKCkgPSAwOwotCi0gICAgLy8gR0xfQ0hST01JVU1fcG9zdF9zdWJfYnVmZmVy
IC0gQ29waWVzIHBhcnQgb2YgdGhlIGJhY2sgYnVmZmVyIHRvIHRoZSBmcm9udCBidWZmZXIuCi0g
ICAgdmlydHVhbCB2b2lkIHBvc3RTdWJCdWZmZXJDSFJPTUlVTShpbnQgeCwgaW50IHksIGludCB3
aWR0aCwgaW50IGhlaWdodCkgPSAwOwotCi0gICAgLy8gU3ludGhlc2l6ZXMgYW4gT3BlbkdMIGVy
cm9yIHdoaWNoIHdpbGwgYmUgcmV0dXJuZWQgZnJvbSBhCi0gICAgLy8gbGF0ZXIgY2FsbCB0byBn
ZXRFcnJvci4gVGhpcyBpcyB1c2VkIHRvIGVtdWxhdGUgT3BlbkdMIEVTCi0gICAgLy8gMi4wIGJl
aGF2aW9yIG9uIHRoZSBkZXNrdG9wIGFuZCB0byBlbmZvcmNlIGFkZGl0aW9uYWwgZXJyb3IKLSAg
ICAvLyBjaGVja2luZyBtYW5kYXRlZCBieSBXZWJHTC4KLSAgICAvLwotICAgIC8vIFBlciB0aGUg
YmVoYXZpb3Igb2YgZ2xHZXRFcnJvciwgdGhpcyBzdG9yZXMgYXQgbW9zdCBvbmUKLSAgICAvLyBp
bnN0YW5jZSBvZiBhbnkgZ2l2ZW4gZXJyb3IsIGFuZCByZXR1cm5zIHRoZW0gZnJvbSBjYWxscyB0
bwotICAgIC8vIGdldEVycm9yIGluIHRoZSBvcmRlciB0aGV5IHdlcmUgYWRkZWQuCi0gICAgdmly
dHVhbCB2b2lkIHN5bnRoZXNpemVHTEVycm9yKFdHQzNEZW51bSkgPSAwOwotCi0gICAgdmlydHVh
bCBib29sIGlzQ29udGV4dExvc3QoKSA9IDA7Ci0KLSAgICAvLyBHTF9DSFJPTUlVTV9tYXBfc3Vi
Ci0gICAgdmlydHVhbCB2b2lkKiBtYXBCdWZmZXJTdWJEYXRhQ0hST01JVU0oV0dDM0RlbnVtIHRh
cmdldCwgV0dDM0RpbnRwdHIgb2Zmc2V0LCBXR0MzRHNpemVpcHRyIHNpemUsIFdHQzNEZW51bSBh
Y2Nlc3MpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdW5tYXBCdWZmZXJTdWJEYXRhQ0hST01JVU0o
Y29uc3Qgdm9pZCopID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQqIG1hcFRleFN1YkltYWdlMkRDSFJP
TUlVTShXR0MzRGVudW0gdGFyZ2V0LCBXR0MzRGludCBsZXZlbCwgV0dDM0RpbnQgeG9mZnNldCwg
V0dDM0RpbnQgeW9mZnNldCwgV0dDM0RzaXplaSB3aWR0aCwgV0dDM0RzaXplaSBoZWlnaHQsIFdH
QzNEZW51bSBmb3JtYXQsIFdHQzNEZW51bSB0eXBlLCBXR0MzRGVudW0gYWNjZXNzKSA9IDA7Ci0g
ICAgdmlydHVhbCB2b2lkIHVubWFwVGV4U3ViSW1hZ2UyRENIUk9NSVVNKGNvbnN0IHZvaWQqKSA9
IDA7Ci0KLSAgICAvLyBHTF9DSFJPTUlVTV9yZXF1ZXN0X2V4dGVuc2lvbgotICAgIHZpcnR1YWwg
V2ViU3RyaW5nIGdldFJlcXVlc3RhYmxlRXh0ZW5zaW9uc0NIUk9NSVVNKCkgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCByZXF1ZXN0RXh0ZW5zaW9uQ0hST01JVU0oY29uc3QgY2hhciopID0gMDsKLQot
ICAgIC8vIEdMX0NIUk9NSVVNX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlCi0gICAgdmlydHVhbCB2
b2lkIGJsaXRGcmFtZWJ1ZmZlckNIUk9NSVVNKFdHQzNEaW50IHNyY1gwLCBXR0MzRGludCBzcmNZ
MCwgV0dDM0RpbnQgc3JjWDEsIFdHQzNEaW50IHNyY1kxLCBXR0MzRGludCBkc3RYMCwgV0dDM0Rp
bnQgZHN0WTAsIFdHQzNEaW50IGRzdFgxLCBXR0MzRGludCBkc3RZMSwgV0dDM0RiaXRmaWVsZCBt
YXNrLCBXR0MzRGVudW0gZmlsdGVyKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHJlbmRlcmJ1ZmZl
clN0b3JhZ2VNdWx0aXNhbXBsZUNIUk9NSVVNKFdHQzNEZW51bSB0YXJnZXQsIFdHQzNEc2l6ZWkg
c2FtcGxlcywgV0dDM0RlbnVtIGludGVybmFsZm9ybWF0LCBXR0MzRHNpemVpIHdpZHRoLCBXR0Mz
RHNpemVpIGhlaWdodCkgPSAwOwotCi0gICAgLy8gR0xfQ0hST01JVU1fc3dhcGJ1ZmZlcnNfY29t
cGxldGVfY2FsbGJhY2sKLSAgICB2aXJ0dWFsIHZvaWQgc2V0U3dhcEJ1ZmZlcnNDb21wbGV0ZUNh
bGxiYWNrQ0hST01JVU0oV2ViR3JhcGhpY3NTd2FwQnVmZmVyc0NvbXBsZXRlQ2FsbGJhY2tDSFJP
TUlVTSogY2FsbGJhY2spIHsgfQotCi0gICAgLy8gR0xfQ0hST01JVU1fcmF0ZV9saW1pdF9vZmZz
Y3JlZW5fY29udGV4dAotICAgIHZpcnR1YWwgdm9pZCByYXRlTGltaXRPZmZzY3JlZW5Db250ZXh0
Q0hST01JVU0oKSB7IH0KLQotICAgIC8vIEdMX0NIUk9NSVVNX3N0cmVhbV90ZXh0dXJlCi0gICAg
Ly8gUmV0dXJucyB0aGUgc3RyZWFtIGVuZCBwb2ludCBpZGVudGlmaWVyIGNyZWF0ZWQgZm9yIHRo
ZSBnaXZlbiB0ZXh0dXJlLgotICAgIHZpcnR1YWwgV2ViR0xJZCBjcmVhdGVTdHJlYW1UZXh0dXJl
Q0hST01JVU0oV2ViR0xJZCB0ZXh0dXJlKSB7IHJldHVybiAwOyB9Ci0gICAgLy8gRGVzdHJveXMg
dGhlIHN0cmVhbSBmb3IgdGhlIGdpdmVuIHRleHR1cmUuCi0gICAgdmlydHVhbCB2b2lkIGRlc3Ry
b3lTdHJlYW1UZXh0dXJlQ0hST01JVU0oV2ViR0xJZCB0ZXh0dXJlKSB7IH0KLQotICAgIC8vIEdM
X0NIUk9NSVVNX2xvc2VfY29udGV4dAotICAgIHZpcnR1YWwgdm9pZCBsb3NlQ29udGV4dENIUk9N
SVVNKFdHQzNEZW51bSBjdXJyZW50LCBXR0MzRGVudW0gb3RoZXIpIHsgfQotCi0gICAgLy8gVGhl
IGVudHJ5IHBvaW50cyBiZWxvdyBtYXAgZGlyZWN0bHkgdG8gdGhlIE9wZW5HTCBFUyAyLjAgQVBJ
LgotICAgIC8vIFNlZTogaHR0cDovL3d3dy5raHJvbm9zLm9yZy9yZWdpc3RyeS9nbGVzLwotICAg
IC8vIGFuZDogaHR0cDovL3d3dy5raHJvbm9zLm9yZy9vcGVuZ2xlcy9zZGsvZG9jcy9tYW4vCi0g
ICAgdmlydHVhbCB2b2lkIGFjdGl2ZVRleHR1cmUoV0dDM0RlbnVtIHRleHR1cmUpID0gMDsKLSAg
ICB2aXJ0dWFsIHZvaWQgYXR0YWNoU2hhZGVyKFdlYkdMSWQgcHJvZ3JhbSwgV2ViR0xJZCBzaGFk
ZXIpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgYmluZEF0dHJpYkxvY2F0aW9uKFdlYkdMSWQgcHJv
Z3JhbSwgV0dDM0R1aW50IGluZGV4LCBjb25zdCBXR0MzRGNoYXIqIG5hbWUpID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgYmluZEJ1ZmZlcihXR0MzRGVudW0gdGFyZ2V0LCBXZWJHTElkIGJ1ZmZlcikg
PSAwOwotICAgIHZpcnR1YWwgdm9pZCBiaW5kRnJhbWVidWZmZXIoV0dDM0RlbnVtIHRhcmdldCwg
V2ViR0xJZCBmcmFtZWJ1ZmZlcikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBiaW5kUmVuZGVyYnVm
ZmVyKFdHQzNEZW51bSB0YXJnZXQsIFdlYkdMSWQgcmVuZGVyYnVmZmVyKSA9IDA7Ci0gICAgdmly
dHVhbCB2b2lkIGJpbmRUZXh0dXJlKFdHQzNEZW51bSB0YXJnZXQsIFdlYkdMSWQgdGV4dHVyZSkg
PSAwOwotICAgIHZpcnR1YWwgdm9pZCBibGVuZENvbG9yKFdHQzNEY2xhbXBmIHJlZCwgV0dDM0Rj
bGFtcGYgZ3JlZW4sIFdHQzNEY2xhbXBmIGJsdWUsIFdHQzNEY2xhbXBmIGFscGhhKSA9IDA7Ci0g
ICAgdmlydHVhbCB2b2lkIGJsZW5kRXF1YXRpb24oV0dDM0RlbnVtIG1vZGUpID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgYmxlbmRFcXVhdGlvblNlcGFyYXRlKFdHQzNEZW51bSBtb2RlUkdCLCBXR0Mz
RGVudW0gbW9kZUFscGhhKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGJsZW5kRnVuYyhXR0MzRGVu
dW0gc2ZhY3RvciwgV0dDM0RlbnVtIGRmYWN0b3IpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgYmxl
bmRGdW5jU2VwYXJhdGUoV0dDM0RlbnVtIHNyY1JHQiwgV0dDM0RlbnVtIGRzdFJHQiwgV0dDM0Rl
bnVtIHNyY0FscGhhLCBXR0MzRGVudW0gZHN0QWxwaGEpID0gMDsKLQotICAgIHZpcnR1YWwgdm9p
ZCBidWZmZXJEYXRhKFdHQzNEZW51bSB0YXJnZXQsIFdHQzNEc2l6ZWlwdHIgc2l6ZSwgY29uc3Qg
dm9pZCogZGF0YSwgV0dDM0RlbnVtIHVzYWdlKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGJ1ZmZl
clN1YkRhdGEoV0dDM0RlbnVtIHRhcmdldCwgV0dDM0RpbnRwdHIgb2Zmc2V0LCBXR0MzRHNpemVp
cHRyIHNpemUsIGNvbnN0IHZvaWQqIGRhdGEpID0gMDsKLQotICAgIHZpcnR1YWwgV0dDM0RlbnVt
IGNoZWNrRnJhbWVidWZmZXJTdGF0dXMoV0dDM0RlbnVtIHRhcmdldCkgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCBjbGVhcihXR0MzRGJpdGZpZWxkIG1hc2spID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQg
Y2xlYXJDb2xvcihXR0MzRGNsYW1wZiByZWQsIFdHQzNEY2xhbXBmIGdyZWVuLCBXR0MzRGNsYW1w
ZiBibHVlLCBXR0MzRGNsYW1wZiBhbHBoYSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBjbGVhckRl
cHRoKFdHQzNEY2xhbXBmIGRlcHRoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGNsZWFyU3RlbmNp
bChXR0MzRGludCBzKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGNvbG9yTWFzayhXR0MzRGJvb2xl
YW4gcmVkLCBXR0MzRGJvb2xlYW4gZ3JlZW4sIFdHQzNEYm9vbGVhbiBibHVlLCBXR0MzRGJvb2xl
YW4gYWxwaGEpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgY29tcGlsZVNoYWRlcihXZWJHTElkIHNo
YWRlcikgPSAwOwotCi0gICAgdmlydHVhbCB2b2lkIGNvbXByZXNzZWRUZXhJbWFnZTJEKFdHQzNE
ZW51bSB0YXJnZXQsIFdHQzNEaW50IGxldmVsLCBXR0MzRGVudW0gaW50ZXJuYWxmb3JtYXQsIFdH
QzNEc2l6ZWkgd2lkdGgsIFdHQzNEc2l6ZWkgaGVpZ2h0LCBXR0MzRGludCBib3JkZXIsIFdHQzNE
c2l6ZWkgaW1hZ2VTaXplLCBjb25zdCB2b2lkKiBkYXRhKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lk
IGNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKFdHQzNEZW51bSB0YXJnZXQsIFdHQzNEaW50IGxldmVs
LCBXR0MzRGludCB4b2Zmc2V0LCBXR0MzRGludCB5b2Zmc2V0LCBXR0MzRHNpemVpIHdpZHRoLCBX
R0MzRHNpemVpIGhlaWdodCwgV0dDM0RlbnVtIGZvcm1hdCwgV0dDM0RzaXplaSBpbWFnZVNpemUs
IGNvbnN0IHZvaWQqIGRhdGEpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgY29weVRleEltYWdlMkQo
V0dDM0RlbnVtIHRhcmdldCwgV0dDM0RpbnQgbGV2ZWwsIFdHQzNEZW51bSBpbnRlcm5hbGZvcm1h
dCwgV0dDM0RpbnQgeCwgV0dDM0RpbnQgeSwgV0dDM0RzaXplaSB3aWR0aCwgV0dDM0RzaXplaSBo
ZWlnaHQsIFdHQzNEaW50IGJvcmRlcikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBjb3B5VGV4U3Vi
SW1hZ2UyRChXR0MzRGVudW0gdGFyZ2V0LCBXR0MzRGludCBsZXZlbCwgV0dDM0RpbnQgeG9mZnNl
dCwgV0dDM0RpbnQgeW9mZnNldCwgV0dDM0RpbnQgeCwgV0dDM0RpbnQgeSwgV0dDM0RzaXplaSB3
aWR0aCwgV0dDM0RzaXplaSBoZWlnaHQpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgY3VsbEZhY2Uo
V0dDM0RlbnVtIG1vZGUpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGVwdGhGdW5jKFdHQzNEZW51
bSBmdW5jKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRlcHRoTWFzayhXR0MzRGJvb2xlYW4gZmxh
ZykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkZXB0aFJhbmdlKFdHQzNEY2xhbXBmIHpOZWFyLCBX
R0MzRGNsYW1wZiB6RmFyKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRldGFjaFNoYWRlcihXZWJH
TElkIHByb2dyYW0sIFdlYkdMSWQgc2hhZGVyKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRpc2Fi
bGUoV0dDM0RlbnVtIGNhcCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlVmVydGV4QXR0
cmliQXJyYXkoV0dDM0R1aW50IGluZGV4KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRyYXdBcnJh
eXMoV0dDM0RlbnVtIG1vZGUsIFdHQzNEaW50IGZpcnN0LCBXR0MzRHNpemVpIGNvdW50KSA9IDA7
Ci0gICAgdmlydHVhbCB2b2lkIGRyYXdFbGVtZW50cyhXR0MzRGVudW0gbW9kZSwgV0dDM0RzaXpl
aSBjb3VudCwgV0dDM0RlbnVtIHR5cGUsIFdHQzNEaW50cHRyIG9mZnNldCkgPSAwOwotCi0gICAg
dmlydHVhbCB2b2lkIGVuYWJsZShXR0MzRGVudW0gY2FwKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lk
IGVuYWJsZVZlcnRleEF0dHJpYkFycmF5KFdHQzNEdWludCBpbmRleCkgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCBmaW5pc2goKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGZsdXNoKCkgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCBmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihXR0MzRGVudW0gdGFyZ2V0LCBX
R0MzRGVudW0gYXR0YWNobWVudCwgV0dDM0RlbnVtIHJlbmRlcmJ1ZmZlcnRhcmdldCwgV2ViR0xJ
ZCByZW5kZXJidWZmZXIpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZnJhbWVidWZmZXJUZXh0dXJl
MkQoV0dDM0RlbnVtIHRhcmdldCwgV0dDM0RlbnVtIGF0dGFjaG1lbnQsIFdHQzNEZW51bSB0ZXh0
YXJnZXQsIFdlYkdMSWQgdGV4dHVyZSwgV0dDM0RpbnQgbGV2ZWwpID0gMDsKLSAgICB2aXJ0dWFs
IHZvaWQgZnJvbnRGYWNlKFdHQzNEZW51bSBtb2RlKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdl
bmVyYXRlTWlwbWFwKFdHQzNEZW51bSB0YXJnZXQpID0gMDsKLQotICAgIHZpcnR1YWwgYm9vbCBn
ZXRBY3RpdmVBdHRyaWIoV2ViR0xJZCBwcm9ncmFtLCBXR0MzRHVpbnQgaW5kZXgsIEFjdGl2ZUlu
Zm8mKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIGdldEFjdGl2ZVVuaWZvcm0oV2ViR0xJZCBwcm9n
cmFtLCBXR0MzRHVpbnQgaW5kZXgsIEFjdGl2ZUluZm8mKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lk
IGdldEF0dGFjaGVkU2hhZGVycyhXZWJHTElkIHByb2dyYW0sIFdHQzNEc2l6ZWkgbWF4Q291bnQs
IFdHQzNEc2l6ZWkqIGNvdW50LCBXZWJHTElkKiBzaGFkZXJzKSA9IDA7Ci0gICAgdmlydHVhbCBX
R0MzRGludCBnZXRBdHRyaWJMb2NhdGlvbihXZWJHTElkIHByb2dyYW0sIGNvbnN0IFdHQzNEY2hh
ciogbmFtZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRCb29sZWFudihXR0MzRGVudW0gcG5h
bWUsIFdHQzNEYm9vbGVhbiogdmFsdWUpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0QnVmZmVy
UGFyYW1ldGVyaXYoV0dDM0RlbnVtIHRhcmdldCwgV0dDM0RlbnVtIHBuYW1lLCBXR0MzRGludCog
dmFsdWUpID0gMDsKLSAgICB2aXJ0dWFsIEF0dHJpYnV0ZXMgZ2V0Q29udGV4dEF0dHJpYnV0ZXMo
KSA9IDA7Ci0gICAgdmlydHVhbCBXR0MzRGVudW0gZ2V0RXJyb3IoKSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIGdldEZsb2F0dihXR0MzRGVudW0gcG5hbWUsIFdHQzNEZmxvYXQqIHZhbHVlKSA9IDA7
Ci0gICAgdmlydHVhbCB2b2lkIGdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2KFdH
QzNEZW51bSB0YXJnZXQsIFdHQzNEZW51bSBhdHRhY2htZW50LCBXR0MzRGVudW0gcG5hbWUsIFdH
QzNEaW50KiB2YWx1ZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRJbnRlZ2VydihXR0MzRGVu
dW0gcG5hbWUsIFdHQzNEaW50KiB2YWx1ZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRQcm9n
cmFtaXYoV2ViR0xJZCBwcm9ncmFtLCBXR0MzRGVudW0gcG5hbWUsIFdHQzNEaW50KiB2YWx1ZSkg
PSAwOwotICAgIHZpcnR1YWwgV2ViU3RyaW5nIGdldFByb2dyYW1JbmZvTG9nKFdlYkdMSWQgcHJv
Z3JhbSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdihX
R0MzRGVudW0gdGFyZ2V0LCBXR0MzRGVudW0gcG5hbWUsIFdHQzNEaW50KiB2YWx1ZSkgPSAwOwot
ICAgIHZpcnR1YWwgdm9pZCBnZXRTaGFkZXJpdihXZWJHTElkIHNoYWRlciwgV0dDM0RlbnVtIHBu
YW1lLCBXR0MzRGludCogdmFsdWUpID0gMDsKLSAgICB2aXJ0dWFsIFdlYlN0cmluZyBnZXRTaGFk
ZXJJbmZvTG9nKFdlYkdMSWQgc2hhZGVyKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFNoYWRl
clByZWNpc2lvbkZvcm1hdChXR0MzRGVudW0gc2hhZGVydHlwZSwgV0dDM0RlbnVtIHByZWNpc2lv
bnR5cGUsIFdHQzNEaW50KiByYW5nZSwgV0dDM0RpbnQqIHByZWNpc2lvbikgPSAwOwotICAgIHZp
cnR1YWwgV2ViU3RyaW5nIGdldFNoYWRlclNvdXJjZShXZWJHTElkIHNoYWRlcikgPSAwOwotICAg
IHZpcnR1YWwgV2ViU3RyaW5nIGdldFN0cmluZyhXR0MzRGVudW0gbmFtZSkgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBnZXRUZXhQYXJhbWV0ZXJmdihXR0MzRGVudW0gdGFyZ2V0LCBXR0MzRGVudW0g
cG5hbWUsIFdHQzNEZmxvYXQqIHZhbHVlKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFRleFBh
cmFtZXRlcml2KFdHQzNEZW51bSB0YXJnZXQsIFdHQzNEZW51bSBwbmFtZSwgV0dDM0RpbnQqIHZh
bHVlKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFVuaWZvcm1mdihXZWJHTElkIHByb2dyYW0s
IFdHQzNEaW50IGxvY2F0aW9uLCBXR0MzRGZsb2F0KiB2YWx1ZSkgPSAwOwotICAgIHZpcnR1YWwg
dm9pZCBnZXRVbmlmb3JtaXYoV2ViR0xJZCBwcm9ncmFtLCBXR0MzRGludCBsb2NhdGlvbiwgV0dD
M0RpbnQqIHZhbHVlKSA9IDA7Ci0gICAgdmlydHVhbCBXR0MzRGludCBnZXRVbmlmb3JtTG9jYXRp
b24oV2ViR0xJZCBwcm9ncmFtLCBjb25zdCBXR0MzRGNoYXIqIG5hbWUpID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgZ2V0VmVydGV4QXR0cmliZnYoV0dDM0R1aW50IGluZGV4LCBXR0MzRGVudW0gcG5h
bWUsIFdHQzNEZmxvYXQqIHZhbHVlKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFZlcnRleEF0
dHJpYml2KFdHQzNEdWludCBpbmRleCwgV0dDM0RlbnVtIHBuYW1lLCBXR0MzRGludCogdmFsdWUp
ID0gMDsKLSAgICB2aXJ0dWFsIFdHQzNEc2l6ZWlwdHIgZ2V0VmVydGV4QXR0cmliT2Zmc2V0KFdH
QzNEdWludCBpbmRleCwgV0dDM0RlbnVtIHBuYW1lKSA9IDA7Ci0KLSAgICB2aXJ0dWFsIHZvaWQg
aGludChXR0MzRGVudW0gdGFyZ2V0LCBXR0MzRGVudW0gbW9kZSkgPSAwOwotICAgIHZpcnR1YWwg
V0dDM0Rib29sZWFuIGlzQnVmZmVyKFdlYkdMSWQgYnVmZmVyKSA9IDA7Ci0gICAgdmlydHVhbCBX
R0MzRGJvb2xlYW4gaXNFbmFibGVkKFdHQzNEZW51bSBjYXApID0gMDsKLSAgICB2aXJ0dWFsIFdH
QzNEYm9vbGVhbiBpc0ZyYW1lYnVmZmVyKFdlYkdMSWQgZnJhbWVidWZmZXIpID0gMDsKLSAgICB2
aXJ0dWFsIFdHQzNEYm9vbGVhbiBpc1Byb2dyYW0oV2ViR0xJZCBwcm9ncmFtKSA9IDA7Ci0gICAg
dmlydHVhbCBXR0MzRGJvb2xlYW4gaXNSZW5kZXJidWZmZXIoV2ViR0xJZCByZW5kZXJidWZmZXIp
ID0gMDsKLSAgICB2aXJ0dWFsIFdHQzNEYm9vbGVhbiBpc1NoYWRlcihXZWJHTElkIHNoYWRlcikg
PSAwOwotICAgIHZpcnR1YWwgV0dDM0Rib29sZWFuIGlzVGV4dHVyZShXZWJHTElkIHRleHR1cmUp
ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgbGluZVdpZHRoKFdHQzNEZmxvYXQpID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgbGlua1Byb2dyYW0oV2ViR0xJZCBwcm9ncmFtKSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIHBpeGVsU3RvcmVpKFdHQzNEZW51bSBwbmFtZSwgV0dDM0RpbnQgcGFyYW0pID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgcG9seWdvbk9mZnNldChXR0MzRGZsb2F0IGZhY3RvciwgV0dDM0Rm
bG9hdCB1bml0cykgPSAwOwotCi0gICAgdmlydHVhbCB2b2lkIHJlYWRQaXhlbHMoV0dDM0RpbnQg
eCwgV0dDM0RpbnQgeSwgV0dDM0RzaXplaSB3aWR0aCwgV0dDM0RzaXplaSBoZWlnaHQsIFdHQzNE
ZW51bSBmb3JtYXQsIFdHQzNEZW51bSB0eXBlLCB2b2lkKiBwaXhlbHMpID0gMDsKLQotICAgIHZp
cnR1YWwgdm9pZCByZWxlYXNlU2hhZGVyQ29tcGlsZXIoKSA9IDA7Ci0KLSAgICB2aXJ0dWFsIHZv
aWQgcmVuZGVyYnVmZmVyU3RvcmFnZShXR0MzRGVudW0gdGFyZ2V0LCBXR0MzRGVudW0gaW50ZXJu
YWxmb3JtYXQsIFdHQzNEc2l6ZWkgd2lkdGgsIFdHQzNEc2l6ZWkgaGVpZ2h0KSA9IDA7Ci0gICAg
dmlydHVhbCB2b2lkIHNhbXBsZUNvdmVyYWdlKFdHQzNEY2xhbXBmIHZhbHVlLCBXR0MzRGJvb2xl
YW4gaW52ZXJ0KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNjaXNzb3IoV0dDM0RpbnQgeCwgV0dD
M0RpbnQgeSwgV0dDM0RzaXplaSB3aWR0aCwgV0dDM0RzaXplaSBoZWlnaHQpID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgc2hhZGVyU291cmNlKFdlYkdMSWQgc2hhZGVyLCBjb25zdCBXR0MzRGNoYXIq
IHN0cmluZykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzdGVuY2lsRnVuYyhXR0MzRGVudW0gZnVu
YywgV0dDM0RpbnQgcmVmLCBXR0MzRHVpbnQgbWFzaykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBz
dGVuY2lsRnVuY1NlcGFyYXRlKFdHQzNEZW51bSBmYWNlLCBXR0MzRGVudW0gZnVuYywgV0dDM0Rp
bnQgcmVmLCBXR0MzRHVpbnQgbWFzaykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzdGVuY2lsTWFz
ayhXR0MzRHVpbnQgbWFzaykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzdGVuY2lsTWFza1NlcGFy
YXRlKFdHQzNEZW51bSBmYWNlLCBXR0MzRHVpbnQgbWFzaykgPSAwOwotICAgIHZpcnR1YWwgdm9p
ZCBzdGVuY2lsT3AoV0dDM0RlbnVtIGZhaWwsIFdHQzNEZW51bSB6ZmFpbCwgV0dDM0RlbnVtIHpw
YXNzKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHN0ZW5jaWxPcFNlcGFyYXRlKFdHQzNEZW51bSBm
YWNlLCBXR0MzRGVudW0gZmFpbCwgV0dDM0RlbnVtIHpmYWlsLCBXR0MzRGVudW0genBhc3MpID0g
MDsKLQotICAgIHZpcnR1YWwgdm9pZCB0ZXhJbWFnZTJEKFdHQzNEZW51bSB0YXJnZXQsIFdHQzNE
aW50IGxldmVsLCBXR0MzRGVudW0gaW50ZXJuYWxmb3JtYXQsIFdHQzNEc2l6ZWkgd2lkdGgsIFdH
QzNEc2l6ZWkgaGVpZ2h0LCBXR0MzRGludCBib3JkZXIsIFdHQzNEZW51bSBmb3JtYXQsIFdHQzNE
ZW51bSB0eXBlLCBjb25zdCB2b2lkKiBwaXhlbHMpID0gMDsKLQotICAgIHZpcnR1YWwgdm9pZCB0
ZXhQYXJhbWV0ZXJmKFdHQzNEZW51bSB0YXJnZXQsIFdHQzNEZW51bSBwbmFtZSwgV0dDM0RmbG9h
dCBwYXJhbSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB0ZXhQYXJhbWV0ZXJpKFdHQzNEZW51bSB0
YXJnZXQsIFdHQzNEZW51bSBwbmFtZSwgV0dDM0RpbnQgcGFyYW0pID0gMDsKLQotICAgIHZpcnR1
YWwgdm9pZCB0ZXhTdWJJbWFnZTJEKFdHQzNEZW51bSB0YXJnZXQsIFdHQzNEaW50IGxldmVsLCBX
R0MzRGludCB4b2Zmc2V0LCBXR0MzRGludCB5b2Zmc2V0LCBXR0MzRHNpemVpIHdpZHRoLCBXR0Mz
RHNpemVpIGhlaWdodCwgV0dDM0RlbnVtIGZvcm1hdCwgV0dDM0RlbnVtIHR5cGUsIGNvbnN0IHZv
aWQqIHBpeGVscykgPSAwOwotCi0gICAgdmlydHVhbCB2b2lkIHVuaWZvcm0xZihXR0MzRGludCBs
b2NhdGlvbiwgV0dDM0RmbG9hdCB4KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHVuaWZvcm0xZnYo
V0dDM0RpbnQgbG9jYXRpb24sIFdHQzNEc2l6ZWkgY291bnQsIGNvbnN0IFdHQzNEZmxvYXQqIHYp
ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybTFpKFdHQzNEaW50IGxvY2F0aW9uLCBXR0Mz
RGludCB4KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHVuaWZvcm0xaXYoV0dDM0RpbnQgbG9jYXRp
b24sIFdHQzNEc2l6ZWkgY291bnQsIGNvbnN0IFdHQzNEaW50KiB2KSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIHVuaWZvcm0yZihXR0MzRGludCBsb2NhdGlvbiwgV0dDM0RmbG9hdCB4LCBXR0MzRGZs
b2F0IHkpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybTJmdihXR0MzRGludCBsb2NhdGlv
biwgV0dDM0RzaXplaSBjb3VudCwgY29uc3QgV0dDM0RmbG9hdCogdikgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCB1bmlmb3JtMmkoV0dDM0RpbnQgbG9jYXRpb24sIFdHQzNEaW50IHgsIFdHQzNEaW50
IHkpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybTJpdihXR0MzRGludCBsb2NhdGlvbiwg
V0dDM0RzaXplaSBjb3VudCwgY29uc3QgV0dDM0RpbnQqIHYpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgdW5pZm9ybTNmKFdHQzNEaW50IGxvY2F0aW9uLCBXR0MzRGZsb2F0IHgsIFdHQzNEZmxvYXQg
eSwgV0dDM0RmbG9hdCB6KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHVuaWZvcm0zZnYoV0dDM0Rp
bnQgbG9jYXRpb24sIFdHQzNEc2l6ZWkgY291bnQsIGNvbnN0IFdHQzNEZmxvYXQqIHYpID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybTNpKFdHQzNEaW50IGxvY2F0aW9uLCBXR0MzRGludCB4
LCBXR0MzRGludCB5LCBXR0MzRGludCB6KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHVuaWZvcm0z
aXYoV0dDM0RpbnQgbG9jYXRpb24sIFdHQzNEc2l6ZWkgY291bnQsIGNvbnN0IFdHQzNEaW50KiB2
KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHVuaWZvcm00ZihXR0MzRGludCBsb2NhdGlvbiwgV0dD
M0RmbG9hdCB4LCBXR0MzRGZsb2F0IHksIFdHQzNEZmxvYXQgeiwgV0dDM0RmbG9hdCB3KSA9IDA7
Ci0gICAgdmlydHVhbCB2b2lkIHVuaWZvcm00ZnYoV0dDM0RpbnQgbG9jYXRpb24sIFdHQzNEc2l6
ZWkgY291bnQsIGNvbnN0IFdHQzNEZmxvYXQqIHYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdW5p
Zm9ybTRpKFdHQzNEaW50IGxvY2F0aW9uLCBXR0MzRGludCB4LCBXR0MzRGludCB5LCBXR0MzRGlu
dCB6LCBXR0MzRGludCB3KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHVuaWZvcm00aXYoV0dDM0Rp
bnQgbG9jYXRpb24sIFdHQzNEc2l6ZWkgY291bnQsIGNvbnN0IFdHQzNEaW50KiB2KSA9IDA7Ci0g
ICAgdmlydHVhbCB2b2lkIHVuaWZvcm1NYXRyaXgyZnYoV0dDM0RpbnQgbG9jYXRpb24sIFdHQzNE
c2l6ZWkgY291bnQsIFdHQzNEYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IFdHQzNEZmxvYXQqIHZh
bHVlKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHVuaWZvcm1NYXRyaXgzZnYoV0dDM0RpbnQgbG9j
YXRpb24sIFdHQzNEc2l6ZWkgY291bnQsIFdHQzNEYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IFdH
QzNEZmxvYXQqIHZhbHVlKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHVuaWZvcm1NYXRyaXg0ZnYo
V0dDM0RpbnQgbG9jYXRpb24sIFdHQzNEc2l6ZWkgY291bnQsIFdHQzNEYm9vbGVhbiB0cmFuc3Bv
c2UsIGNvbnN0IFdHQzNEZmxvYXQqIHZhbHVlKSA9IDA7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgdXNl
UHJvZ3JhbShXZWJHTElkIHByb2dyYW0pID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdmFsaWRhdGVQ
cm9ncmFtKFdlYkdMSWQgcHJvZ3JhbSkgPSAwOwotCi0gICAgdmlydHVhbCB2b2lkIHZlcnRleEF0
dHJpYjFmKFdHQzNEdWludCBpbmRleCwgV0dDM0RmbG9hdCB4KSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIHZlcnRleEF0dHJpYjFmdihXR0MzRHVpbnQgaW5kZXgsIGNvbnN0IFdHQzNEZmxvYXQqIHZh
bHVlcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB2ZXJ0ZXhBdHRyaWIyZihXR0MzRHVpbnQgaW5k
ZXgsIFdHQzNEZmxvYXQgeCwgV0dDM0RmbG9hdCB5KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHZl
cnRleEF0dHJpYjJmdihXR0MzRHVpbnQgaW5kZXgsIGNvbnN0IFdHQzNEZmxvYXQqIHZhbHVlcykg
PSAwOwotICAgIHZpcnR1YWwgdm9pZCB2ZXJ0ZXhBdHRyaWIzZihXR0MzRHVpbnQgaW5kZXgsIFdH
QzNEZmxvYXQgeCwgV0dDM0RmbG9hdCB5LCBXR0MzRGZsb2F0IHopID0gMDsKLSAgICB2aXJ0dWFs
IHZvaWQgdmVydGV4QXR0cmliM2Z2KFdHQzNEdWludCBpbmRleCwgY29uc3QgV0dDM0RmbG9hdCog
dmFsdWVzKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHZlcnRleEF0dHJpYjRmKFdHQzNEdWludCBp
bmRleCwgV0dDM0RmbG9hdCB4LCBXR0MzRGZsb2F0IHksIFdHQzNEZmxvYXQgeiwgV0dDM0RmbG9h
dCB3KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHZlcnRleEF0dHJpYjRmdihXR0MzRHVpbnQgaW5k
ZXgsIGNvbnN0IFdHQzNEZmxvYXQqIHZhbHVlcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB2ZXJ0
ZXhBdHRyaWJQb2ludGVyKFdHQzNEdWludCBpbmRleCwgV0dDM0RpbnQgc2l6ZSwgV0dDM0RlbnVt
IHR5cGUsIFdHQzNEYm9vbGVhbiBub3JtYWxpemVkLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFdHQzNEc2l6ZWkgc3RyaWRlLCBXR0MzRGludHB0ciBvZmZzZXQpID0gMDsK
LQotICAgIHZpcnR1YWwgdm9pZCB2aWV3cG9ydChXR0MzRGludCB4LCBXR0MzRGludCB5LCBXR0Mz
RHNpemVpIHdpZHRoLCBXR0MzRHNpemVpIGhlaWdodCkgPSAwOwotCi0gICAgLy8gU3VwcG9ydCBm
b3IgYnVmZmVyIGNyZWF0aW9uIGFuZCBkZWxldGlvbi4KLSAgICB2aXJ0dWFsIFdlYkdMSWQgY3Jl
YXRlQnVmZmVyKCkgPSAwOwotICAgIHZpcnR1YWwgV2ViR0xJZCBjcmVhdGVGcmFtZWJ1ZmZlcigp
ID0gMDsKLSAgICB2aXJ0dWFsIFdlYkdMSWQgY3JlYXRlUHJvZ3JhbSgpID0gMDsKLSAgICB2aXJ0
dWFsIFdlYkdMSWQgY3JlYXRlUmVuZGVyYnVmZmVyKCkgPSAwOwotICAgIHZpcnR1YWwgV2ViR0xJ
ZCBjcmVhdGVTaGFkZXIoV0dDM0RlbnVtKSA9IDA7Ci0gICAgdmlydHVhbCBXZWJHTElkIGNyZWF0
ZVRleHR1cmUoKSA9IDA7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQnVmZmVyKFdlYkdMSWQp
ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlRnJhbWVidWZmZXIoV2ViR0xJZCkgPSAwOwot
ICAgIHZpcnR1YWwgdm9pZCBkZWxldGVQcm9ncmFtKFdlYkdMSWQpID0gMDsKLSAgICB2aXJ0dWFs
IHZvaWQgZGVsZXRlUmVuZGVyYnVmZmVyKFdlYkdMSWQpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQg
ZGVsZXRlU2hhZGVyKFdlYkdMSWQpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlVGV4dHVy
ZShXZWJHTElkKSA9IDA7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGV4dExvc3RDYWxsYmFj
ayhXZWJHcmFwaGljc0NvbnRleHRMb3N0Q2FsbGJhY2sqIGNhbGxiYWNrKSB7IH0KLSAgICB2aXJ0
dWFsIHZvaWQgc2V0RXJyb3JNZXNzYWdlQ2FsbGJhY2soV2ViR3JhcGhpY3NFcnJvck1lc3NhZ2VD
YWxsYmFjayogY2FsbGJhY2spIHsgfQotICAgIC8vIEdMX0FSQl9yb2J1c3RuZXNzCi0gICAgLy8K
LSAgICAvLyBUaGlzIGVudHJ5IHBvaW50IG11c3QgcHJvdmlkZSBzbGlnaHRseSBkaWZmZXJlbnQg
c2VtYW50aWNzIHRoYW4KLSAgICAvLyB0aGUgR0xfQVJCX3JvYnVzdG5lc3MgZXh0ZW5zaW9uOyBz
cGVjaWZpY2FsbHksIHRoZSBsb3N0IGNvbnRleHQKLSAgICAvLyBzdGF0ZSBpcyBzdGlja3ksIHJh
dGhlciB0aGFuIHJlcG9ydGVkIG9ubHkgb25jZS4KLSAgICB2aXJ0dWFsIFdHQzNEZW51bSBnZXRH
cmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkgeyByZXR1cm4gMDsgLyogR0xfTk9fRVJST1IgKi8gfQot
Ci0gICAgLy8gRklYTUU6IG1ha2UgdGhpcyBmdW5jdGlvbiBwdXJlIHZpcnR1YWwgb25jZSBpdCBp
cyBpbXBsZW1lbnRlZCBpbgotICAgIC8vIGJvdGggY29tbWFuZCBidWZmZXIgcG9ydCBhbmQgaW4t
cHJvY2VzcyBwb3J0LgotICAgIHZpcnR1YWwgV2ViU3RyaW5nIGdldFRyYW5zbGF0ZWRTaGFkZXJT
b3VyY2VBTkdMRShXZWJHTElkIHNoYWRlcikgeyByZXR1cm4gV2ViU3RyaW5nKCk7IH0KLQotICAg
IC8vIEdMX0NIUk9NSVVNX2lvc3VyZmFjZQotICAgIHZpcnR1YWwgdm9pZCB0ZXhJbWFnZUlPU3Vy
ZmFjZTJEQ0hST01JVU0oV0dDM0RlbnVtIHRhcmdldCwgV0dDM0RpbnQgd2lkdGgsIFdHQzNEaW50
IGhlaWdodCwgV0dDM0R1aW50IGlvU3VyZmFjZUlkLCBXR0MzRHVpbnQgcGxhbmUpIHsgfQotCi0g
ICAgLy8gR0xfRVhUX3RleHR1cmVfc3RvcmFnZQotICAgIHZpcnR1YWwgdm9pZCB0ZXhTdG9yYWdl
MkRFWFQoV0dDM0RlbnVtIHRhcmdldCwgV0dDM0RpbnQgbGV2ZWxzLCBXR0MzRHVpbnQgaW50ZXJu
YWxmb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXR0MzRGludCB3aWR0
aCwgV0dDM0RpbnQgaGVpZ2h0KSB7IH0KLQotICAgIC8vIEdMX0VYVF9vY2NsdXNpb25fcXVlcnkK
LSAgICB2aXJ0dWFsIFdlYkdMSWQgY3JlYXRlUXVlcnlFWFQoKSB7IHJldHVybiAwOyB9Ci0gICAg
dmlydHVhbCB2b2lkIGRlbGV0ZVF1ZXJ5RVhUKFdlYkdMSWQgcXVlcnkpIHsgfQotICAgIHZpcnR1
YWwgV0dDM0Rib29sZWFuIGlzUXVlcnlFWFQoV2ViR0xJZCBxdWVyeSkgeyByZXR1cm4gZmFsc2U7
IH0KLSAgICB2aXJ0dWFsIHZvaWQgYmVnaW5RdWVyeUVYVChXR0MzRGVudW0gdGFyZ2V0LCBXZWJH
TElkIHF1ZXJ5KSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZW5kUXVlcnlFWFQoV0dDM0RlbnVtIHRh
cmdldCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGdldFF1ZXJ5aXZFWFQoV0dDM0RlbnVtIHRhcmdl
dCwgV0dDM0RlbnVtIHBuYW1lLCBXR0MzRGludCogcGFyYW1zKSB7IH0KLSAgICB2aXJ0dWFsIHZv
aWQgZ2V0UXVlcnlPYmplY3R1aXZFWFQoV2ViR0xJZCBxdWVyeSwgV0dDM0RlbnVtIHBuYW1lLCBX
R0MzRHVpbnQqIHBhcmFtcykgeyB9Ci0KLSAgICAvLyBHTF9DSFJPTUlVTV9iaW5kX3VuaWZvcm1f
bG9jYXRpb24KLSAgICB2aXJ0dWFsIHZvaWQgYmluZFVuaWZvcm1Mb2NhdGlvbkNIUk9NSVVNKFdl
YkdMSWQgcHJvZ3JhbSwgV0dDM0RpbnQgbG9jYXRpb24sIGNvbnN0IFdHQzNEY2hhciogdW5pZm9y
bSkgeyB9Ci0KLSAgICAvLyBHTF9DSFJPTUlVTV9jb3B5X3RleHR1cmUKLSAgICB2aXJ0dWFsIHZv
aWQgY29weVRleHR1cmVDSFJPTUlVTShXR0MzRGVudW0gdGFyZ2V0LCBXR0MzRHVpbnQgc291cmNl
SWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV0dDM0R1aW50IGRlc3RJ
ZCwgV0dDM0RpbnQgbGV2ZWwsIFdHQzNEZW51bSBpbnRlcm5hbEZvcm1hdCkgeyB9Ci0KLSAgICAv
LyBHTF9DSFJPTUlVTV9zaGFsbG93X2ZsdXNoCi0gICAgdmlydHVhbCB2b2lkIHNoYWxsb3dGbHVz
aENIUk9NSVVNKCkgeyB9Ci0KLSAgICAvLyBHTF9DSFJPTUlVTV90ZXh0dXJlX21haWxib3gKLSAg
ICB2aXJ0dWFsIHZvaWQgZ2VuTWFpbGJveENIUk9NSVVNKFdHQzNEYnl0ZSogbWFpbGJveCkgeyB9
Ci0gICAgdmlydHVhbCB2b2lkIHByb2R1Y2VUZXh0dXJlQ0hST01JVU0oV0dDM0RlbnVtIHRhcmdl
dCwgY29uc3QgV0dDM0RieXRlKiBtYWlsYm94KSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgY29uc3Vt
ZVRleHR1cmVDSFJPTUlVTShXR0MzRGVudW0gdGFyZ2V0LCBjb25zdCBXR0MzRGJ5dGUqIG1haWxi
b3gpIHsgfQotCi0gICAgLy8gR0xfRVhUX2RlYnVnX21hcmtlcgotICAgIHZpcnR1YWwgdm9pZCBp
bnNlcnRFdmVudE1hcmtlckVYVChjb25zdCBXR0MzRGNoYXIqIG1hcmtlcikgeyB9Ci0gICAgdmly
dHVhbCB2b2lkIHB1c2hHcm91cE1hcmtlckVYVChjb25zdCBXR0MzRGNoYXIqIG1hcmtlcikgeyB9
Ci0gICAgdmlydHVhbCB2b2lkIHBvcEdyb3VwTWFya2VyRVhUKHZvaWQpIHsgfQotCi0gICAgLy8g
R0xfT0VTX3ZlcnRleF9hcnJheV9vYmplY3QKLSAgICB2aXJ0dWFsIFdlYkdMSWQgY3JlYXRlVmVy
dGV4QXJyYXlPRVMoKSB7IHJldHVybiAwOyB9Ci0gICAgdmlydHVhbCB2b2lkIGRlbGV0ZVZlcnRl
eEFycmF5T0VTKFdlYkdMSWQgYXJyYXkpIHsgfQotICAgIHZpcnR1YWwgV0dDM0Rib29sZWFuIGlz
VmVydGV4QXJyYXlPRVMoV2ViR0xJZCBhcnJheSkgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0
dWFsIHZvaWQgYmluZFZlcnRleEFycmF5T0VTKFdlYkdMSWQgYXJyYXkpIHsgfQotCi0gICAgLy8g
R0xfQ0hST01JVU1fdGV4dHVyZV9mcm9tX2ltYWdlCi0gICAgdmlydHVhbCB2b2lkIGJpbmRUZXhJ
bWFnZTJEQ0hST01JVU0oV0dDM0RlbnVtIHRhcmdldCwgV0dDM0RpbnQgaW1hZ2VJZCkgeyB9Ci0g
ICAgdmlydHVhbCB2b2lkIHJlbGVhc2VUZXhJbWFnZTJEQ0hST01JVU0oV0dDM0RlbnVtIHRhcmdl
dCwgV0dDM0RpbnQgaW1hZ2VJZCkgeyB9Ci0KLSAgICAvLyBHTF9DSFJPTUlVTV9waXhlbF90cmFu
c2Zlcl9idWZmZXJfb2JqZWN0Ci0gICAgdmlydHVhbCB2b2lkKiBtYXBCdWZmZXJDSFJPTUlVTShX
R0MzRGVudW0gdGFyZ2V0LCBXR0MzRGVudW0gYWNjZXNzKSB7IHJldHVybiAwOyB9Ci0gICAgdmly
dHVhbCBXR0MzRGJvb2xlYW4gdW5tYXBCdWZmZXJDSFJPTUlVTShXR0MzRGVudW0gdGFyZ2V0KSB7
IHJldHVybiBmYWxzZTsgfQotCi0gICAgLy8gR0xfQ0hST01JVU1fYXN5bmNfcGl4ZWxfdHJhbnNm
ZXJzCi0gICAgdmlydHVhbCB2b2lkIGFzeW5jVGV4SW1hZ2UyRENIUk9NSVVNKFdHQzNEZW51bSB0
YXJnZXQsIFdHQzNEaW50IGxldmVsLCBXR0MzRGVudW0gaW50ZXJuYWxmb3JtYXQsIFdHQzNEc2l6
ZWkgd2lkdGgsIFdHQzNEc2l6ZWkgaGVpZ2h0LCBXR0MzRGludCBib3JkZXIsIFdHQzNEZW51bSBm
b3JtYXQsIFdHQzNEZW51bSB0eXBlLCBjb25zdCB2b2lkKiBwaXhlbHMpIHsgfQotICAgIHZpcnR1
YWwgdm9pZCBhc3luY1RleFN1YkltYWdlMkRDSFJPTUlVTShXR0MzRGVudW0gdGFyZ2V0LCBXR0Mz
RGludCBsZXZlbCwgV0dDM0RpbnQgeG9mZnNldCwgV0dDM0RpbnQgeW9mZnNldCwgV0dDM0RzaXpl
aSB3aWR0aCwgV0dDM0RzaXplaSBoZWlnaHQsIFdHQzNEZW51bSBmb3JtYXQsIFdHQzNEZW51bSB0
eXBlLCBjb25zdCB2b2lkKiBwaXhlbHMpIHsgfQotICAgIHZpcnR1YWwgdm9pZCB3YWl0QXN5bmNU
ZXhJbWFnZTJEQ0hST01JVU0oV0dDM0RlbnVtKSB7IH0KLQotICAgIC8vIEdMX0VYVF9kcmF3X2J1
ZmZlcnMKLSAgICB2aXJ0dWFsIHZvaWQgZHJhd0J1ZmZlcnNFWFQoV0dDM0RzaXplaSBuLCBjb25z
dCBXR0MzRGVudW0qIGJ1ZnMpIHsgfQotCi0gICAgLy8gRklYTUU6IE1ha2UgaW1wbGVtZW50YXRp
b25zIG9mIHRoaXMgY2xhc3Mgb3ZlcnJpZGUgdGhpcyBtZXRob2QgaW5zdGVhZCBhbmQgdGhlbiBy
ZW1vdmUgb25DcmVhdGVHckdMSW50ZXJmYWNlKCkuCi0gICAgdmlydHVhbCBHckdMSW50ZXJmYWNl
KiBjcmVhdGVHckdMSW50ZXJmYWNlKCkgeyByZXR1cm4gb25DcmVhdGVHckdMSW50ZXJmYWNlKCk7
IH0KLQotcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgR3JHTEludGVyZmFjZSogb25DcmVhdGVHckdM
SW50ZXJmYWNlKCkgeyByZXR1cm4gMDsgfQotCi19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQK
LQotI2VuZGlmCkluZGV4OiBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkdyYXBo
aWNzTWVtb3J5QWxsb2NhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9QbGF0Zm9ybS9jaHJv
bWl1bS9wdWJsaWMvV2ViR3JhcGhpY3NNZW1vcnlBbGxvY2F0aW9uLmgJKHJldmlzaW9uIDE0Nzcx
MCkKKysrIFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViR3JhcGhpY3NNZW1vcnlB
bGxvY2F0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsOTAgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElU
UyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwot
ICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5k
ZWYgV2ViR3JhcGhpY3NNZW1vcnlBbGxvY2F0aW9uX2gKLSNkZWZpbmUgV2ViR3JhcGhpY3NNZW1v
cnlBbGxvY2F0aW9uX2gKLQotI2luY2x1ZGUgIldlYkNvbW1vbi5oIgotCi1uYW1lc3BhY2UgV2Vi
S2l0IHsKLQotc3RydWN0IFdlYkdyYXBoaWNzTWVtb3J5QWxsb2NhdGlvbiB7Ci0gICAgLy8gRGVw
cmVjYXRlZCBkYXRhLCB0byBiZSByZW1vdmVkIGZyb20gdGhpcyBzdHJ1Y3R1cmUuCi0gICAgdW5z
aWduZWQgZ3B1UmVzb3VyY2VTaXplSW5CeXRlczsKLSAgICBib29sIHN1Z2dlc3RIYXZlQmFja2J1
ZmZlcjsKLQotICAgIGVudW0gUHJpb3JpdHlDdXRvZmYgewotICAgICAgICAvLyBBbGxvdyBubyBh
bGxvY2F0aW9ucy4KLSAgICAgICAgUHJpb3JpdHlDdXRvZmZBbGxvd05vdGhpbmcsCi0gICAgICAg
IC8vIEFsbG93IG9ubHkgYWxsb2NhdGlvbnMgdGhhdCBhcmUgdmlzaWJsZS4KLSAgICAgICAgUHJp
b3JpdHlDdXRvZmZBbGxvd1Zpc2libGVPbmx5LAotICAgICAgICAvLyBBbGxvdyBvbmx5IGFsbG9j
YXRpb25zIHRoYXQgYXJlIGZldyBzY3JlZW5zIGF3YXkgZnJvbSBiZWluZyB2aXNpYmxlLgotICAg
ICAgICBQcmlvcml0eUN1dG9mZkFsbG93VmlzaWJsZUFuZE5lYXJieSwKLSAgICAgICAgLy8gQWxs
b3cgYWxsIGFsbG9jYXRpb25zLgotICAgICAgICBQcmlvcml0eUN1dG9mZkFsbG93RXZlcnl0aGlu
ZywKLSAgICB9OwotCi0gICAgLy8gTGltaXRzIHdoZW4gdGhpcyByZW5kZXJlciBpcyB2aXNpYmxl
LgotICAgIHNpemVfdCBieXRlc0xpbWl0V2hlblZpc2libGU7Ci0gICAgUHJpb3JpdHlDdXRvZmYg
cHJpb3JpdHlDdXRvZmZXaGVuVmlzaWJsZTsKLQotICAgIC8vIExpbWl0cyB3aGVuIHRoaXMgcmVu
ZGVyZXIgaXMgbm90IHZpc2libGUuCi0gICAgc2l6ZV90IGJ5dGVzTGltaXRXaGVuTm90VmlzaWJs
ZTsKLSAgICBQcmlvcml0eUN1dG9mZiBwcmlvcml0eUN1dG9mZldoZW5Ob3RWaXNpYmxlOwotICAg
IGJvb2wgaGF2ZUJhY2tidWZmZXJXaGVuTm90VmlzaWJsZTsKLQotICAgIC8vIElmIHRydWUsIGVu
Zm9yY2UgdGhpcyBwb2xpY3kganVzdCBvbmNlLCBidXQgZG8gbm90IGtlZXAKLSAgICAvLyBpdCBh
cyBhIHBlcm1hbmVudCBwb2xpY3kuCi0gICAgYm9vbCBlbmZvcmNlQnV0RG9Ob3RLZWVwQXNQb2xp
Y3k7Ci0KLSAgICBXZWJHcmFwaGljc01lbW9yeUFsbG9jYXRpb24oKQotICAgICAgICA6IGdwdVJl
c291cmNlU2l6ZUluQnl0ZXMoMCkKLSAgICAgICAgLCBzdWdnZXN0SGF2ZUJhY2tidWZmZXIoZmFs
c2UpCi0gICAgICAgICwgYnl0ZXNMaW1pdFdoZW5WaXNpYmxlKDApCi0gICAgICAgICwgcHJpb3Jp
dHlDdXRvZmZXaGVuVmlzaWJsZShQcmlvcml0eUN1dG9mZkFsbG93Tm90aGluZykKLSAgICAgICAg
LCBieXRlc0xpbWl0V2hlbk5vdFZpc2libGUoMCkKLSAgICAgICAgLCBwcmlvcml0eUN1dG9mZldo
ZW5Ob3RWaXNpYmxlKFByaW9yaXR5Q3V0b2ZmQWxsb3dOb3RoaW5nKQotICAgICAgICAsIGhhdmVC
YWNrYnVmZmVyV2hlbk5vdFZpc2libGUoZmFsc2UpCi0gICAgICAgICwgZW5mb3JjZUJ1dERvTm90
S2VlcEFzUG9saWN5KGZhbHNlKQotICAgIHsKLSAgICB9Ci0KLSAgICBXZWJHcmFwaGljc01lbW9y
eUFsbG9jYXRpb24odW5zaWduZWQgZ3B1UmVzb3VyY2VTaXplSW5CeXRlcywgYm9vbCBzdWdnZXN0
SGF2ZUJhY2tidWZmZXIpCi0gICAgICAgIDogZ3B1UmVzb3VyY2VTaXplSW5CeXRlcyhncHVSZXNv
dXJjZVNpemVJbkJ5dGVzKQotICAgICAgICAsIHN1Z2dlc3RIYXZlQmFja2J1ZmZlcihzdWdnZXN0
SGF2ZUJhY2tidWZmZXIpCi0gICAgICAgICwgYnl0ZXNMaW1pdFdoZW5WaXNpYmxlKDApCi0gICAg
ICAgICwgcHJpb3JpdHlDdXRvZmZXaGVuVmlzaWJsZShQcmlvcml0eUN1dG9mZkFsbG93Tm90aGlu
ZykKLSAgICAgICAgLCBieXRlc0xpbWl0V2hlbk5vdFZpc2libGUoMCkKLSAgICAgICAgLCBwcmlv
cml0eUN1dG9mZldoZW5Ob3RWaXNpYmxlKFByaW9yaXR5Q3V0b2ZmQWxsb3dOb3RoaW5nKQotICAg
ICAgICAsIGhhdmVCYWNrYnVmZmVyV2hlbk5vdFZpc2libGUoZmFsc2UpCi0gICAgICAgICwgZW5m
b3JjZUJ1dERvTm90S2VlcEFzUG9saWN5KGZhbHNlKQotICAgIHsKLSAgICB9Ci19OwotCi19IC8v
IG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmCi0KSW5kZXg6IFNvdXJjZS9QbGF0Zm9ybS9jaHJv
bWl1bS9wdWJsaWMvV2ViR3JhcGhpY3NNZW1vcnlTdGF0cy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViR3JhcGhpY3NNZW1vcnlTdGF0cy5oCShyZXZp
c2lvbiAxNDc3MTApCisrKyBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkdyYXBo
aWNzTWVtb3J5U3RhdHMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw2MCArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBB
TkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
LSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I2lmbmRlZiBXZWJHcmFwaGljc01lbW9yeVN0YXRzX2gKLSNkZWZpbmUgV2ViR3JhcGhpY3NNZW1v
cnlTdGF0c19oCi0KLSNpbmNsdWRlICJXZWJDb21tb24uaCIKLQotbmFtZXNwYWNlIFdlYktpdCB7
Ci0KLXN0cnVjdCBXZWJHcmFwaGljc01hbmFnZWRNZW1vcnlTdGF0cyB7Ci0gICAgLy8gQnl0ZXMg
cmVxdWlyZWQgZm9yIGFsbCB2aXNpYmxlIHRleHR1cmVzLgotICAgIHNpemVfdCBieXRlc1Zpc2li
bGU7Ci0KLSAgICAvLyBCeXRlcyByZXF1aXJlZCBmb3IgYWxsIHRleHR1cmVzIHZpc2libGUgb3Ig
YSBmZXcgc2NyZWVucyBhd2F5IGZyb20KLSAgICAvLyBiZWluZyB2aXNpYmxlLgotICAgIHNpemVf
dCBieXRlc1Zpc2libGVBbmROZWFyYnk7Ci0KLSAgICAvLyBUaGUgbnVtYmVyIG9mIGJ5dGVzIGN1
cnJlbnRseSBhbGxvY2F0ZWQuCi0gICAgc2l6ZV90IGJ5dGVzQWxsb2NhdGVkOwotCi0gICAgLy8g
V2hldGhlciBvciBub3QgYSBiYWNrYnVmZmVyIGlzIGN1cnJlbnRseSByZXF1ZXN0ZWQgKHRoZSBt
ZW1vcnkgdXNhZ2UKLSAgICAvLyBvZiB0aGUgYnVmZmVyIGlzIGtub3duIGJ5IHRoZSBHUFUgcHJv
Y2VzcykuCi0gICAgYm9vbCBiYWNrYnVmZmVyUmVxdWVzdGVkOwotCi0gICAgV2ViR3JhcGhpY3NN
YW5hZ2VkTWVtb3J5U3RhdHMoKSAKLSAgICAgICAgOiBieXRlc1Zpc2libGUoMCkKLSAgICAgICAg
LCBieXRlc1Zpc2libGVBbmROZWFyYnkoMCkKLSAgICAgICAgLCBieXRlc0FsbG9jYXRlZCgwKQot
ICAgICAgICAsIGJhY2tidWZmZXJSZXF1ZXN0ZWQoMCkKLSAgICB7Ci0gICAgfQotfTsKLQotfSAv
LyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZgotCkluZGV4OiBTb3VyY2UvUGxhdGZvcm0vY2hy
b21pdW0vcHVibGljL1dlYkhUVFBCb2R5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1BsYXRmb3Jt
L2Nocm9taXVtL3B1YmxpYy9XZWJIVFRQQm9keS5oCShyZXZpc2lvbiAxNDc3MTApCisrKyBTb3Vy
Y2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkhUVFBCb2R5LmgJKHdvcmtpbmcgY29weSkK
QEAgLTEsMTE4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
LSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
LSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
Ci0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdlYkhUVFBCb2R5X2gKLSNkZWZpbmUgV2ViSFRUUEJv
ZHlfaAotCi0jaW5jbHVkZSAiV2ViRGF0YS5oIgotI2luY2x1ZGUgIldlYk5vbkNvcHlhYmxlLmgi
Ci0jaW5jbHVkZSAiV2ViU3RyaW5nLmgiCi0jaW5jbHVkZSAiV2ViVVJMLmgiCi0KLSNpZiBXRUJL
SVRfSU1QTEVNRU5UQVRJT04KLW5hbWVzcGFjZSBXZWJDb3JlIHsgY2xhc3MgRm9ybURhdGE7IH0K
LW5hbWVzcGFjZSBXVEYgeyB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgUGFzc1JlZlB0cjsg
fQotI2VuZGlmCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1jbGFzcyBXZWJIVFRQQm9keVByaXZh
dGU7Ci0KLWNsYXNzIFdlYkhUVFBCb2R5IHsKLXB1YmxpYzoKLSAgICBzdHJ1Y3QgRWxlbWVudCB7
Ci0gICAgICAgIGVudW0gVHlwZSB7IFR5cGVEYXRhLCBUeXBlRmlsZSwgVHlwZUJsb2IsIFR5cGVV
UkwgfSB0eXBlOwotICAgICAgICBXZWJEYXRhIGRhdGE7Ci0gICAgICAgIFdlYlN0cmluZyBmaWxl
UGF0aDsKLSAgICAgICAgbG9uZyBsb25nIGZpbGVTdGFydDsKLSAgICAgICAgbG9uZyBsb25nIGZp
bGVMZW5ndGg7IC8vIC0xIG1lYW5zIHRvIHRoZSBlbmQgb2YgdGhlIGZpbGUuCi0gICAgICAgIGRv
dWJsZSBtb2RpZmljYXRpb25UaW1lOwotICAgICAgICBXZWJVUkwgdXJsOyAvLyBGb3IgVHlwZUJs
b2Igb3IgVHlwZVVSTC4KLQotICAgICAgICAvLyBGSVhNRTogZGVwcmVjYXRlIHRoaXMuCi0gICAg
ICAgIFdlYlVSTCBibG9iVVJMOwotICAgIH07Ci0KLSAgICB+V2ViSFRUUEJvZHkoKSB7IHJlc2V0
KCk7IH0KLQotICAgIFdlYkhUVFBCb2R5KCkgOiBtX3ByaXZhdGUoMCkgeyB9Ci0gICAgV2ViSFRU
UEJvZHkoY29uc3QgV2ViSFRUUEJvZHkmIGIpIDogbV9wcml2YXRlKDApIHsgYXNzaWduKGIpOyB9
Ci0gICAgV2ViSFRUUEJvZHkmIG9wZXJhdG9yPShjb25zdCBXZWJIVFRQQm9keSYgYikKLSAgICB7
Ci0gICAgICAgIGFzc2lnbihiKTsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotICAg
IFdFQktJVF9FWFBPUlQgdm9pZCBpbml0aWFsaXplKCk7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lk
IHJlc2V0KCk7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIGFzc2lnbihjb25zdCBXZWJIVFRQQm9k
eSYpOwotCi0gICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiAhbV9wcml2YXRlOyB9Ci0K
LSAgICAvLyBSZXR1cm5zIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgY29tcHJpc2luZyB0aGUgaHR0
cCBib2R5LgotICAgIFdFQktJVF9FWFBPUlQgc2l6ZV90IGVsZW1lbnRDb3VudCgpIGNvbnN0Owot
Ci0gICAgLy8gU2V0cyB0aGUgdmFsdWVzIG9mIHRoZSBlbGVtZW50IGF0IHRoZSBnaXZlbiBpbmRl
eC4gUmV0dXJucyBmYWxzZSBpZgotICAgIC8vIGluZGV4IGlzIG91dCBvZiBib3VuZHMuCi0gICAg
V0VCS0lUX0VYUE9SVCBib29sIGVsZW1lbnRBdChzaXplX3QgaW5kZXgsIEVsZW1lbnQmKSBjb25z
dDsKLQotICAgIC8vIEFwcGVuZCB0byB0aGUgbGlzdCBvZiBlbGVtZW50cy4KLSAgICBXRUJLSVRf
RVhQT1JUIHZvaWQgYXBwZW5kRGF0YShjb25zdCBXZWJEYXRhJik7Ci0gICAgV0VCS0lUX0VYUE9S
VCB2b2lkIGFwcGVuZEZpbGUoY29uc3QgV2ViU3RyaW5nJik7Ci0gICAgLy8gUGFzc2luZyAtMSB0
byBmaWxlTGVuZ3RoIG1lYW5zIHRvIHRoZSBlbmQgb2YgdGhlIGZpbGUuCi0gICAgV0VCS0lUX0VY
UE9SVCB2b2lkIGFwcGVuZEZpbGVSYW5nZShjb25zdCBXZWJTdHJpbmcmLCBsb25nIGxvbmcgZmls
ZVN0YXJ0LCBsb25nIGxvbmcgZmlsZUxlbmd0aCwgZG91YmxlIG1vZGlmaWNhdGlvblRpbWUpOwot
ICAgIFdFQktJVF9FWFBPUlQgdm9pZCBhcHBlbmRCbG9iKGNvbnN0IFdlYlVSTCYpOwotCi0gICAg
Ly8gQXBwZW5kIGEgcmVzb3VyY2Ugd2hpY2ggaXMgaWRlbnRpZmllZCBieSBVUkwuIEN1cnJlbnRs
eSB3ZSBvbmx5IHN1cHBvcnQgRmlsZVN5c3RlbSBVUkwuCi0gICAgV0VCS0lUX0VYUE9SVCB2b2lk
IGFwcGVuZFVSTFJhbmdlKGNvbnN0IFdlYlVSTCYsIGxvbmcgbG9uZyBzdGFydCwgbG9uZyBsb25n
IGxlbmd0aCwgZG91YmxlIG1vZGlmaWNhdGlvblRpbWUpOwotCi0gICAgLy8gSWRlbnRpZmllcyBh
IHBhcnRpY3VsYXIgZm9ybSBzdWJtaXNzaW9uIGluc3RhbmNlLiBBIHZhbHVlIG9mIDAgaXMKLSAg
ICAvLyB1c2VkIHRvIGluZGljYXRlIGFuIHVuc3BlY2lmaWVkIGlkZW50aWZpZXIuCi0gICAgV0VC
S0lUX0VYUE9SVCBsb25nIGxvbmcgaWRlbnRpZmllcigpIGNvbnN0OwotICAgIFdFQktJVF9FWFBP
UlQgdm9pZCBzZXRJZGVudGlmaWVyKGxvbmcgbG9uZyk7Ci0KLSAgICBXRUJLSVRfRVhQT1JUIGJv
b2wgY29udGFpbnNQYXNzd29yZERhdGEoKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQg
c2V0Q29udGFpbnNQYXNzd29yZERhdGEoYm9vbCk7Ci0KLSNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJ
T04KLSAgICBXZWJIVFRQQm9keShjb25zdCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6Rm9ybURh
dGE+Jik7Ci0gICAgV2ViSFRUUEJvZHkmIG9wZXJhdG9yPShjb25zdCBXVEY6OlBhc3NSZWZQdHI8
V2ViQ29yZTo6Rm9ybURhdGE+Jik7Ci0gICAgb3BlcmF0b3IgV1RGOjpQYXNzUmVmUHRyPFdlYkNv
cmU6OkZvcm1EYXRhPigpIGNvbnN0OwotI2VuZGlmCi0KLXByaXZhdGU6Ci0gICAgdm9pZCBhc3Np
Z24oV2ViSFRUUEJvZHlQcml2YXRlKik7Ci0gICAgdm9pZCBlbnN1cmVNdXRhYmxlKCk7Ci0gICAg
V2ViSFRUUEJvZHlQcml2YXRlKiBtX3ByaXZhdGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJL
aXQKLQotI2VuZGlmCkluZGV4OiBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkhU
VFBIZWFkZXJWaXNpdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1BsYXRmb3JtL2Nocm9taXVt
L3B1YmxpYy9XZWJIVFRQSGVhZGVyVmlzaXRvci5oCShyZXZpc2lvbiAxNDc3MTApCisrKyBTb3Vy
Y2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkhUVFBIZWFkZXJWaXNpdG9yLmgJKHdvcmtp
bmcgY29weSkKQEAgLTEsNDggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0g
KiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgV2ViSFRUUEhlYWRlclZpc2l0b3JfaAot
I2RlZmluZSBXZWJIVFRQSGVhZGVyVmlzaXRvcl9oCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1j
bGFzcyBXZWJTdHJpbmc7Ci0KLWNsYXNzIFdlYkhUVFBIZWFkZXJWaXNpdG9yIHsKLXB1YmxpYzoK
LSAgICB2aXJ0dWFsIHZvaWQgdmlzaXRIZWFkZXIoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25z
dCBXZWJTdHJpbmcmIHZhbHVlKSA9IDA7Ci0KLXByb3RlY3RlZDoKLSAgICB+V2ViSFRUUEhlYWRl
clZpc2l0b3IoKSB7IH0KLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYKSW5k
ZXg6IFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViSFRUUExvYWRJbmZvLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJIVFRQTG9hZElu
Zm8uaAkocmV2aXNpb24gMTQ3NzEwKQorKysgU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1Ymxp
Yy9XZWJIVFRQTG9hZEluZm8uaAkod29ya2luZyBjb3B5KQpAQCAtMSw4OCArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRp
c3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
LSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRl
ZiBXZWJIVFRQTG9hZEluZm9faAotI2RlZmluZSBXZWJIVFRQTG9hZEluZm9faAotCi0jaW5jbHVk
ZSAiV2ViQ29tbW9uLmgiCi0jaW5jbHVkZSAiV2ViUHJpdmF0ZVB0ci5oIgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci1zdHJ1Y3QgUmVzb3VyY2VMb2FkSW5mbzsKLX0KLQotbmFtZXNwYWNlIFdlYktp
dCB7Ci1jbGFzcyBXZWJTdHJpbmc7Ci0KLWNsYXNzIFdlYkhUVFBMb2FkSW5mbyB7Ci1wdWJsaWM6
Ci0gICAgV2ViSFRUUExvYWRJbmZvKCkgeyBpbml0aWFsaXplKCk7IH0KLSAgICB+V2ViSFRUUExv
YWRJbmZvKCkgeyByZXNldCgpOyB9Ci0gICAgV2ViSFRUUExvYWRJbmZvKGNvbnN0IFdlYkhUVFBM
b2FkSW5mbyYgcikgeyBhc3NpZ24ocik7IH0KLSAgICBXZWJIVFRQTG9hZEluZm8mIG9wZXJhdG9y
ID0oY29uc3QgV2ViSFRUUExvYWRJbmZvJiByKQotICAgIHsgCi0gICAgICAgIGFzc2lnbihyKTsK
LSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBp
bml0aWFsaXplKCk7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHJlc2V0KCk7Ci0gICAgV0VCS0lU
X0VYUE9SVCB2b2lkIGFzc2lnbihjb25zdCBXZWJIVFRQTG9hZEluZm8mIHIpOwotCi0gICAgV0VC
S0lUX0VYUE9SVCBpbnQgaHR0cFN0YXR1c0NvZGUoKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JU
IHZvaWQgc2V0SFRUUFN0YXR1c0NvZGUoaW50KTsKLQotICAgIFdFQktJVF9FWFBPUlQgV2ViU3Ry
aW5nIGh0dHBTdGF0dXNUZXh0KCkgY29uc3Q7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldEhU
VFBTdGF0dXNUZXh0KGNvbnN0IFdlYlN0cmluZyYpOwotCi0gICAgV0VCS0lUX0VYUE9SVCBsb25n
IGxvbmcgZW5jb2RlZERhdGFMZW5ndGgoKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQg
c2V0RW5jb2RlZERhdGFMZW5ndGgobG9uZyBsb25nKTsKLQotICAgIFdFQktJVF9FWFBPUlQgdm9p
ZCBhZGRSZXF1ZXN0SGVhZGVyKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViU3RyaW5n
JiB2YWx1ZSk7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIGFkZFJlc3BvbnNlSGVhZGVyKGNvbnN0
IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViU3RyaW5nJiB2YWx1ZSk7Ci0KLSAgICBXRUJLSVRf
RVhQT1JUIFdlYlN0cmluZyByZXF1ZXN0SGVhZGVyc1RleHQoKSBjb25zdDsKLSAgICBXRUJLSVRf
RVhQT1JUIHZvaWQgc2V0UmVxdWVzdEhlYWRlcnNUZXh0KGNvbnN0IFdlYlN0cmluZyYpOwotCi0g
ICAgV0VCS0lUX0VYUE9SVCBXZWJTdHJpbmcgcmVzcG9uc2VIZWFkZXJzVGV4dCgpIGNvbnN0Owot
ICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRSZXNwb25zZUhlYWRlcnNUZXh0KGNvbnN0IFdlYlN0
cmluZyYpOwotCi0jaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCi0gICAgV2ViSFRUUExvYWRJbmZv
KFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRJbmZvPik7Ci0gICAgb3BlcmF0
b3IgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OlJlc291cmNlTG9hZEluZm8+KCkgY29uc3Q7Ci0j
ZW5kaWYKLQotcHJpdmF0ZToKLSAgICBXZWJQcml2YXRlUHRyPFdlYkNvcmU6OlJlc291cmNlTG9h
ZEluZm8+IG1fcHJpdmF0ZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYK
SW5kZXg6IFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViSHlwaGVuYXRvci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViSHlwaGVuYXRv
ci5oCShyZXZpc2lvbiAxNDc3MTApCisrKyBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGlj
L1dlYkh5cGhlbmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1MyArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3Ry
aWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBX
ZWJIeXBoZW5hdG9yX2gKLSNkZWZpbmUgV2ViSHlwaGVuYXRvcl9oCi0KLSNpbmNsdWRlICJXZWJD
b21tb24uaCIKLSNpbmNsdWRlICJXZWJTdHJpbmcuaCIKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0K
LWNsYXNzIFdlYkh5cGhlbmF0b3IgewotcHVibGljOgotICAgIC8vIFJldHVybnMgd2hldGhlciB3
ZSBjYW4gc3VwcG9ydCBoeXBoZW5hdGlvbiBmb3IgdGhlIGdpdmVuIGxvY2FsZS4KLSAgICB2aXJ0
dWFsIGJvb2wgY2FuSHlwaGVuYXRlKGNvbnN0IFdlYlN0cmluZyYgbG9jYWxlKSB7IHJldHVybiBm
YWxzZTsgfQotCi0gICAgLy8gUmV0dXJucyB0aGUgbGFzdCBwb3NpdGlvbiB3aGVyZSB3ZSBjYW4g
YWRkIGEgaHlwaGVuIGJlZm9yZSB0aGUgZ2l2ZW4gcG9zaXRpb24uCi0gICAgdmlydHVhbCBzaXpl
X3QgY29tcHV0ZUxhc3RIeXBoZW5Mb2NhdGlvbihjb25zdCBXZWJVQ2hhciogY2hhcmFjdGVycywg
c2l6ZV90IGxlbmd0aCwgc2l6ZV90IGJlZm9yZUluZGV4LCBjb25zdCBXZWJTdHJpbmcmIGxvY2Fs
ZSkgeyByZXR1cm4gMDsgfQotCi1wcm90ZWN0ZWQ6Ci0gICAgfldlYkh5cGhlbmF0b3IoKSB7IH0K
LX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYKSW5kZXg6IFNvdXJjZS9QbGF0
Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViSW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvUGxh
dGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkltYWdlLmgJKHJldmlzaW9uIDE0NzcxMCkKKysrIFNv
dXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViSW1hZ2UuaAkod29ya2luZyBjb3B5KQpA
QCAtMSwxMDYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQot
ICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQot
ICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
LSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpZm5kZWYgV2ViSW1hZ2VfaAotI2RlZmluZSBXZWJJbWFnZV9oCi0K
LSNpbmNsdWRlICJXZWJDb21tb24uaCIKLSNpbmNsdWRlICJXZWJWZWN0b3IuaCIKLQotI2luY2x1
ZGUgPFNrQml0bWFwLmg+Ci0KLSNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsgY2xhc3MgSW1hZ2U7IH0KLW5hbWVzcGFjZSBXVEYgeyB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4gY2xhc3MgUGFzc1JlZlB0cjsgfQotI2VuZGlmCi0KLW5hbWVzcGFjZSBXZWJLaXQgewot
Ci1jbGFzcyBXZWJEYXRhOwotc3RydWN0IFdlYlNpemU7Ci0KLS8vIEEgY29udGFpbmVyIGZvciBh
biBBUkdCIGJpdG1hcC4KLWNsYXNzIFdlYkltYWdlIHsKLXB1YmxpYzoKLSAgICB+V2ViSW1hZ2Uo
KSB7IHJlc2V0KCk7IH0KLQotICAgIFdlYkltYWdlKCkgeyBpbml0KCk7IH0KLSAgICBXZWJJbWFn
ZShjb25zdCBXZWJJbWFnZSYgaW1hZ2UpCi0gICAgewotICAgICAgICBpbml0KCk7Ci0gICAgICAg
IGFzc2lnbihpbWFnZSk7Ci0gICAgfQotCi0gICAgV2ViSW1hZ2UmIG9wZXJhdG9yPShjb25zdCBX
ZWJJbWFnZSYgaW1hZ2UpCi0gICAgewotICAgICAgICBhc3NpZ24oaW1hZ2UpOwotICAgICAgICBy
ZXR1cm4gKnRoaXM7Ci0gICAgfQotCi0gICAgLy8gRGVjb2RlcyB0aGUgZ2l2ZW4gaW1hZ2UgZGF0
YS4gSWYgdGhlIGltYWdlIGhhcyBtdWx0aXBsZSBmcmFtZXMsCi0gICAgLy8gdGhlbiB0aGUgZnJh
bWUgd2hvc2Ugc2l6ZSBpcyBkZXNpcmVkU2l6ZSBpcyByZXR1cm5lZC4gT3RoZXJ3aXNlLAotICAg
IC8vIHRoZSBmaXJzdCBmcmFtZSBpcyByZXR1cm5lZC4KLSAgICBXRUJLSVRfRVhQT1JUIHN0YXRp
YyBXZWJJbWFnZSBmcm9tRGF0YShjb25zdCBXZWJEYXRhJiwgY29uc3QgV2ViU2l6ZSYgZGVzaXJl
ZFNpemUpOwotCi0gICAgLy8gUmV0dXJucyBhIGxpc3Qgb2YgYWxsIGZyYW1lcyBpbiB0aGUgaW1h
Z2UuIE9ubHkgdGhlIGZpcnN0IGZyYW1lIGF0IGVhY2ggcGl4ZWwKLSAgICAvLyBzaXplIHdpbGwg
YmUgcmV0dXJuZWQuCi0gICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgV2ViVmVjdG9yPFdlYkltYWdl
PiBmcmFtZXNGcm9tRGF0YShjb25zdCBXZWJEYXRhJik7Ci0KLSAgICBXRUJLSVRfRVhQT1JUIHZv
aWQgcmVzZXQoKTsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgYXNzaWduKGNvbnN0IFdlYkltYWdl
Jik7Ci0KLSAgICBXRUJLSVRfRVhQT1JUIGJvb2wgaXNOdWxsKCkgY29uc3Q7Ci0gICAgV0VCS0lU
X0VYUE9SVCBXZWJTaXplIHNpemUoKSBjb25zdDsKLQotI2lmIFdFQktJVF9JTVBMRU1FTlRBVElP
TgotICAgIFdlYkltYWdlKGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpJbWFnZT4mKTsK
LSAgICBXZWJJbWFnZSYgb3BlcmF0b3I9KGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpJ
bWFnZT4mKTsKLSNlbmRpZgotCi0gICAgV2ViSW1hZ2UoY29uc3QgU2tCaXRtYXAmIGJpdG1hcCkg
OiBtX2JpdG1hcChiaXRtYXApIHsgfQotCi0gICAgV2ViSW1hZ2UmIG9wZXJhdG9yPShjb25zdCBT
a0JpdG1hcCYgYml0bWFwKQotICAgIHsKLSAgICAgICAgbV9iaXRtYXAgPSBiaXRtYXA7Ci0gICAg
ICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0KLSAgICBTa0JpdG1hcCYgZ2V0U2tCaXRtYXAoKSB7
IHJldHVybiBtX2JpdG1hcDsgfQotICAgIGNvbnN0IFNrQml0bWFwJiBnZXRTa0JpdG1hcCgpIGNv
bnN0IHsgcmV0dXJuIG1fYml0bWFwOyB9Ci0KLXByaXZhdGU6Ci0gICAgdm9pZCBpbml0KCkgeyB9
Ci0gICAgU2tCaXRtYXAgbV9iaXRtYXA7Ci0KLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAot
Ci0jZW5kaWYKSW5kZXg6IFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViSW1hZ2VM
YXllci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2Vi
SW1hZ2VMYXllci5oCShyZXZpc2lvbiAxNDc3MTApCisrKyBTb3VyY2UvUGxhdGZvcm0vY2hyb21p
dW0vcHVibGljL1dlYkltYWdlTGF5ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSw0NSArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2lmbmRlZiBXZWJJbWFnZUxheWVyX2gKLSNkZWZpbmUgV2ViSW1hZ2VMYXllcl9o
Ci0KLSNpbmNsdWRlICJTa0JpdG1hcC5oIgotI2luY2x1ZGUgIldlYkNvbW1vbi5oIgotI2luY2x1
ZGUgIldlYkxheWVyLmgiCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1jbGFzcyBXZWJJbWFnZUxh
eWVyIHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIH5XZWJJbWFnZUxheWVyKCkgeyB9Ci0KLSAgICB2
aXJ0dWFsIFdlYkxheWVyKiBsYXllcigpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Qml0bWFw
KFNrQml0bWFwKSA9IDA7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8v
IFdlYkltYWdlTGF5ZXJfaApJbmRleDogU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9X
ZWJJbnB1dEhhbmRsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0v
cHVibGljL1dlYklucHV0SGFuZGxlci5oCShyZXZpc2lvbiAxNDc3MTApCisrKyBTb3VyY2UvUGxh
dGZvcm0vY2hyb21pdW0vcHVibGljL1dlYklucHV0SGFuZGxlci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDQxICswLDAgQEAKLS8qIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5Z
Ci0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0g
KiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04KLSAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUwotICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBXZWJJbnB1dEhhbmRsZXJfaAotI2Rl
ZmluZSBXZWJJbnB1dEhhbmRsZXJfaAotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLWNsYXNzIFdlYklu
cHV0SGFuZGxlckNsaWVudDsKLQotY2xhc3MgV2ViSW5wdXRIYW5kbGVyIHsKLXB1YmxpYzoKLSAg
ICB2aXJ0dWFsIH5XZWJJbnB1dEhhbmRsZXIoKSB7IH0KLQotICAgIHZpcnR1YWwgdm9pZCBiaW5k
VG9DbGllbnQoV2ViSW5wdXRIYW5kbGVyQ2xpZW50KikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBh
bmltYXRlKGRvdWJsZSBtb25vdG9uaWNUaW1lKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIG1haW5U
aHJlYWRIYXNTdG9wcGVkRmxpbmdpbmcoKSA9IDA7Ci19OwotCi19Ci0KLSNlbmRpZgpJbmRleDog
U291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJJbnB1dEhhbmRsZXJDbGllbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYklucHV0SGFu
ZGxlckNsaWVudC5oCShyZXZpc2lvbiAxNDc3MTApCisrKyBTb3VyY2UvUGxhdGZvcm0vY2hyb21p
dW0vcHVibGljL1dlYklucHV0SGFuZGxlckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDk2
ICswLDAgQEAKLS8qIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04KLSAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUwotICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBXZWJJbnB1dEhhbmRsZXJDbGllbnRfaAotI2Rl
ZmluZSBXZWJJbnB1dEhhbmRsZXJDbGllbnRfaAotCi0jaW5jbHVkZSAiV2ViQ29tbW9uLmgiCi0j
aW5jbHVkZSAiV2ViRmxvYXRTaXplLmgiCi0jaW5jbHVkZSAiV2ViUG9pbnQuaCIKLSNpbmNsdWRl
ICJXZWJTY3JvbGxiYXIuaCIKLSNpbmNsdWRlICJXZWJTaXplLmgiCi0KLW5hbWVzcGFjZSBXZWJL
aXQgewotCi1jbGFzcyBXZWJJbnB1dEhhbmRsZXJDbGllbnQgewotcHVibGljOgotICAgIGVudW0g
U2Nyb2xsU3RhdHVzIHsKLSAgICAgICAgU2Nyb2xsU3RhdHVzT25NYWluVGhyZWFkLAotICAgICAg
ICBTY3JvbGxTdGF0dXNTdGFydGVkLAotICAgICAgICBTY3JvbGxTdGF0dXNJZ25vcmVkCi0gICAg
fTsKLSAgICBlbnVtIFNjcm9sbElucHV0VHlwZSB7Ci0gICAgICAgIFNjcm9sbElucHV0VHlwZUdl
c3R1cmUsCi0gICAgICAgIFNjcm9sbElucHV0VHlwZVdoZWVsLAotICAgICAgICBTY3JvbGxJbnB1
dFR5cGVOb25CdWJibGluZ0dlc3R1cmUKLSAgICB9OwotCi0gICAgLy8gU2VsZWN0cyBhIGxheWVy
IHRvIGJlIHNjcm9sbGVkIGF0IGEgZ2l2ZW4gcG9pbnQgaW4gd2luZG93IGNvb3JkaW5hdGVzLgot
ICAgIC8vIFJldHVybnMgU2Nyb2xsU3RhcnRlZCBpZiB0aGUgbGF5ZXIgYXQgdGhlIGNvb3JkaW5h
dGVzIGNhbiBiZSBzY3JvbGxlZCwKLSAgICAvLyBTY3JvbGxPbk1haW5UaHJlYWQgaWYgdGhlIHNj
cm9sbCBldmVudCBzaG91bGQgaW5zdGVhZCBiZSBkZWxlZ2F0ZWQgdG8gdGhlCi0gICAgLy8gbWFp
biB0aHJlYWQsIG9yIFNjcm9sbElnbm9yZWQgaWYgdGhlcmUgaXMgbm90aGluZyB0byBiZSBzY3Jv
bGxlZCBhdCB0aGUKLSAgICAvLyBnaXZlbiBjb29yZGluYXRlcy4KLSAgICB2aXJ0dWFsIFNjcm9s
bFN0YXR1cyBzY3JvbGxCZWdpbihXZWJQb2ludCwgU2Nyb2xsSW5wdXRUeXBlKSA9IDA7Ci0KLSAg
ICAvLyBTY3JvbGwgdGhlIHNlbGVjdGVkIGxheWVyIHN0YXJ0aW5nIGF0IHRoZSBnaXZlbiB3aW5k
b3cgY29vcmRpbmF0ZS4gSWYKLSAgICAvLyB0aGVyZSBpcyBubyByb29tIHRvIG1vdmUgdGhlIGxh
eWVyIGluIHRoZSByZXF1ZXN0ZWQgZGlyZWN0aW9uLCBpdHMgZmlyc3QKLSAgICAvLyBhbmNlc3Rv
ciBsYXllciB0aGF0IGNhbiBiZSBzY3JvbGxlZCB3aWxsIGJlIG1vdmVkIGluc3RlYWQuIElmIHRo
ZXJlIGlzIG5vCi0gICAgLy8gc3VjaCBsYXllciB0byBiZSBtb3ZlZCwgdGhpcyByZXR1cm5zIGZh
bHNlLiBSZXR1cm5zIHRydWUgb3RoZXJ3aXNlLgotICAgIC8vIFNob3VsZCBvbmx5IGJlIGNhbGxl
ZCBpZiBzY3JvbGxCZWdpbigpIHJldHVybmVkIFNjcm9sbFN0YXJ0ZWQuCi0gICAgdmlydHVhbCBi
b29sIHNjcm9sbEJ5SWZQb3NzaWJsZShXZWJQb2ludCBvcmlnaW4sIFdlYkZsb2F0U2l6ZSBkZWx0
YSkgID0gMDsKLQotICAgIC8vIFNjcm9sbCB0aGUgc2VsZWN0ZWQgbGF5ZXIgdmVydGljYWxseSBi
eSBvbmUgbG9naWNhbCBwYWdlIGluIHRoZSBnaXZlbgotICAgIC8vIGRpcmVjdGlvbi4KLSAgICB2
aXJ0dWFsIGJvb2wgc2Nyb2xsVmVydGljYWxseUJ5UGFnZUlmUG9zc2libGUoV2ViUG9pbnQgb3Jp
Z2luLCBXZWJTY3JvbGxiYXI6OlNjcm9sbERpcmVjdGlvbikgPSAwOwotCi0gICAgLy8gU3RvcCBz
Y3JvbGxpbmcgdGhlIHNlbGVjdGVkIGxheWVyLiBTaG91bGQgb25seSBiZSBjYWxsZWQgaWYgc2Ny
b2xsQmVnaW4oKQotICAgIC8vIHJldHVybmVkIFNjcm9sbFN0YXJ0ZWQuCi0gICAgdmlydHVhbCB2
b2lkIHNjcm9sbEVuZCgpID0gMDsKLQotICAgIHZpcnR1YWwgdm9pZCBwaW5jaEdlc3R1cmVCZWdp
bigpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcGluY2hHZXN0dXJlVXBkYXRlKGZsb2F0IG1hZ25p
ZnlEZWx0YSwgV2ViUG9pbnQgYW5jaG9yKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHBpbmNoR2Vz
dHVyZUVuZCgpID0gMDsKLQotICAgIHZpcnR1YWwgdm9pZCBzdGFydFBhZ2VTY2FsZUFuaW1hdGlv
bihXZWJTaXplIHRhcmdldFBvc2l0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBib29sIGFuY2hvclBvaW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBmbG9hdCBwYWdlU2NhbGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGRvdWJsZSBzdGFydFRpbWUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRvdWJsZSBkdXJhdGlvbikgPSAwOwotCi0gICAgLy8gUmVxdWVz
dCBhbm90aGVyIGNhbGxiYWNrIHRvIFdlYklucHV0SGFuZGxlcjo6YW5pbWF0ZSgpLgotICAgIHZp
cnR1YWwgdm9pZCBzY2hlZHVsZUFuaW1hdGlvbigpID0gMDsKLQotICAgIC8vIFJldHVybnMgd2hl
dGhlciB0aGVyZSBhcmUgYW55IHRvdWNoIGV2ZW50IGhhbmRsZXJzIHJlZ2lzdGVyZWQgb24gdGhl
Ci0gICAgLy8gZ2l2ZW4gV2ViUG9pbnQuCi0gICAgdmlydHVhbCBib29sIGhhdmVUb3VjaEV2ZW50
SGFuZGxlcnNBdChXZWJQb2ludCkgPSAwOwotCi0gICAgLy8gSW5kaWNhdGUgdGhhdCB0aGUgZmlu
YWwgaW5wdXQgZXZlbnQgZm9yIHRoZSBjdXJyZW50IHZzeW5jIGludGVydmFsIHdhcyByZWNlaXZl
ZC4KLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUxhc3RJbnB1dEV2ZW50Rm9yVlN5bmMoKSB7
IH0KLQotcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgfldlYklucHV0SGFuZGxlckNsaWVudCgpIHsg
fQotfTsKLQotfQotCi0jZW5kaWYKSW5kZXg6IFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJs
aWMvV2ViTGF5ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVi
bGljL1dlYkxheWVyLmgJKHJldmlzaW9uIDE0NzcxMCkKKysrIFNvdXJjZS9QbGF0Zm9ybS9jaHJv
bWl1bS9wdWJsaWMvV2ViTGF5ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSwyMjQgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
Ci0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpZm5kZWYgV2ViTGF5ZXJfaAotI2RlZmluZSBXZWJMYXllcl9oCi0KLSNpbmNsdWRl
ICJXZWJBbmltYXRpb24uaCIKLSNpbmNsdWRlICJXZWJDb2xvci5oIgotI2luY2x1ZGUgIldlYkNv
bW1vbi5oIgotCi0vLyBSZW1vdmUgYWZ0ZXIgbWFraW5nIHNldFBvc2l0aW9uQ29uc3RyYWludCgp
IHB1cmUgdmlydHVhbC4KLSNpbmNsdWRlICJXZWJMYXllclBvc2l0aW9uQ29uc3RyYWludC5oIgot
Ci0jaW5jbHVkZSAiV2ViUG9pbnQuaCIKLSNpbmNsdWRlICJXZWJQcml2YXRlUHRyLmgiCi0jaW5j
bHVkZSAiV2ViUmVjdC5oIgotI2luY2x1ZGUgIldlYlN0cmluZy5oIgotI2luY2x1ZGUgIldlYlZl
Y3Rvci5oIgotCi1jbGFzcyBTa01hdHJpeDQ0OwotY2xhc3MgU2tJbWFnZUZpbHRlcjsKLQotbmFt
ZXNwYWNlIFdlYktpdCB7Ci1jbGFzcyBXZWJBbmltYXRpb25EZWxlZ2F0ZTsKLWNsYXNzIFdlYkZp
bHRlck9wZXJhdGlvbnM7Ci1jbGFzcyBXZWJMYXllclNjcm9sbENsaWVudDsKLXN0cnVjdCBXZWJG
bG9hdFBvaW50Owotc3RydWN0IFdlYkZsb2F0UmVjdDsKLXN0cnVjdCBXZWJMYXllclBvc2l0aW9u
Q29uc3RyYWludDsKLXN0cnVjdCBXZWJTaXplOwotCi1jbGFzcyBXZWJMYXllckltcGw7Ci0KLWNs
YXNzIFdlYkxheWVyIHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIH5XZWJMYXllcigpIHsgfQotCi0g
ICAgLy8gUmV0dXJucyBhIHBvc2l0aXZlIElEIHRoYXQgd2lsbCBiZSB1bmlxdWUgYWNyb3NzIGFs
bCBXZWJMYXllcnMgYWxsb2NhdGVkIGluIHRoaXMgcHJvY2Vzcy4KLSAgICB2aXJ0dWFsIGludCBp
ZCgpIGNvbnN0ID0gMDsKLQotICAgIC8vIFNldHMgYSByZWdpb24gb2YgdGhlIGxheWVyIGFzIGlu
dmFsaWQsIGkuZS4gbmVlZHMgdG8gdXBkYXRlIGl0cyBjb250ZW50LgotICAgIHZpcnR1YWwgdm9p
ZCBpbnZhbGlkYXRlUmVjdChjb25zdCBXZWJGbG9hdFJlY3QmKSA9IDA7Ci0KLSAgICAvLyBTZXRz
IHRoZSBlbnRpcmUgbGF5ZXIgYXMgaW52YWxpZCwgaS5lLiBuZWVkcyB0byB1cGRhdGUgaXRzIGNv
bnRlbnQuCi0gICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGUoKSA9IDA7Ci0KLSAgICAvLyBUaGVz
ZSBmdW5jdGlvbnMgZG8gbm90IHRha2Ugb3duZXJzaGlwIG9mIHRoZSBXZWJMYXllciogcGFyYW1l
dGVyLgotICAgIHZpcnR1YWwgdm9pZCBhZGRDaGlsZChXZWJMYXllciopID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgaW5zZXJ0Q2hpbGQoV2ViTGF5ZXIqLCBzaXplX3QgaW5kZXgpID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgcmVwbGFjZUNoaWxkKFdlYkxheWVyKiByZWZlcmVuY2UsIFdlYkxheWVyKiBu
ZXdMYXllcikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVGcm9tUGFyZW50KCkgPSAwOwot
ICAgIHZpcnR1YWwgdm9pZCByZW1vdmVBbGxDaGlsZHJlbigpID0gMDsKLQotICAgIHZpcnR1YWwg
dm9pZCBzZXRBbmNob3JQb2ludChjb25zdCBXZWJGbG9hdFBvaW50JikgPSAwOwotICAgIHZpcnR1
YWwgV2ViRmxvYXRQb2ludCBhbmNob3JQb2ludCgpIGNvbnN0ID0gMDsKLQotICAgIHZpcnR1YWwg
dm9pZCBzZXRBbmNob3JQb2ludFooZmxvYXQpID0gMDsKLSAgICB2aXJ0dWFsIGZsb2F0IGFuY2hv
clBvaW50WigpIGNvbnN0ID0gMDsKLQotICAgIHZpcnR1YWwgdm9pZCBzZXRCb3VuZHMoY29uc3Qg
V2ViU2l6ZSYpID0gMDsKLSAgICB2aXJ0dWFsIFdlYlNpemUgYm91bmRzKCkgY29uc3QgPSAwOwot
Ci0gICAgdmlydHVhbCB2b2lkIHNldE1hc2tzVG9Cb3VuZHMoYm9vbCkgPSAwOwotICAgIHZpcnR1
YWwgYm9vbCBtYXNrc1RvQm91bmRzKCkgY29uc3QgPSAwOwotCi0gICAgdmlydHVhbCB2b2lkIHNl
dE1hc2tMYXllcihXZWJMYXllciopID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0UmVwbGljYUxh
eWVyKFdlYkxheWVyKikgPSAwOwotCi0gICAgdmlydHVhbCB2b2lkIHNldE9wYWNpdHkoZmxvYXQp
ID0gMDsKLSAgICB2aXJ0dWFsIGZsb2F0IG9wYWNpdHkoKSBjb25zdCA9IDA7Ci0KLSAgICB2aXJ0
dWFsIHZvaWQgc2V0T3BhcXVlKGJvb2wpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgb3BhcXVlKCkg
Y29uc3QgPSAwOwotCi0gICAgdmlydHVhbCB2b2lkIHNldFBvc2l0aW9uKGNvbnN0IFdlYkZsb2F0
UG9pbnQmKSA9IDA7Ci0gICAgdmlydHVhbCBXZWJGbG9hdFBvaW50IHBvc2l0aW9uKCkgY29uc3Qg
PSAwOwotCi0gICAgdmlydHVhbCB2b2lkIHNldFN1YmxheWVyVHJhbnNmb3JtKGNvbnN0IFNrTWF0
cml4NDQmKSA9IDA7Ci0gICAgdmlydHVhbCBTa01hdHJpeDQ0IHN1YmxheWVyVHJhbnNmb3JtKCkg
Y29uc3QgPSAwOwotCi0gICAgdmlydHVhbCB2b2lkIHNldFRyYW5zZm9ybShjb25zdCBTa01hdHJp
eDQ0JikgPSAwOwotICAgIHZpcnR1YWwgU2tNYXRyaXg0NCB0cmFuc2Zvcm0oKSBjb25zdCA9IDA7
Ci0KLSAgICAvLyBTZXRzIHdoZXRoZXIgdGhlIGxheWVyIGRyYXdzIGl0cyBjb250ZW50IHdoZW4g
Y29tcG9zaXRpbmcuCi0gICAgdmlydHVhbCB2b2lkIHNldERyYXdzQ29udGVudChib29sKSA9IDA7
Ci0gICAgdmlydHVhbCBib29sIGRyYXdzQ29udGVudCgpIGNvbnN0ID0gMDsKLQotICAgIHZpcnR1
YWwgdm9pZCBzZXRQcmVzZXJ2ZXMzRChib29sKSA9IDA7Ci0KLSAgICAvLyBNYXJrIHRoYXQgdGhp
cyBsYXllciBzaG91bGQgdXNlIGl0cyBwYXJlbnQncyB0cmFuc2Zvcm0gYW5kIGRvdWJsZS1zaWRl
ZAotICAgIC8vIHByb3BlcnRpZXMgaW4gZGV0ZXJtaW5pbmcgdGhpcyBsYXllcidzIGJhY2tmYWNl
IHZpc2liaWxpdHkgaW5zdGVhZCBvZgotICAgIC8vIHVzaW5nIGl0cyBvd24gcHJvcGVydGllcy4g
SWYgdGhpcyBwcm9wZXJ0eSBpcyBzZXQsIHRoaXMgbGF5ZXIgbXVzdAotICAgIC8vIGhhdmUgYSBw
YXJlbnQsIGFuZCB0aGUgcGFyZW50IG1heSBub3QgaGF2ZSB0aGlzIHByb3BlcnR5IHNldC4KLSAg
ICAvLyBOb3RlOiBUaGlzIEFQSSBpcyB0byB3b3JrIGFyb3VuZCBpc3N1ZXMgd2l0aCB2aXNpYmls
aXR5IHRoZSBoYW5kbGluZyBvZgotICAgIC8vIFdlYktpdCBsYXllcnMgdGhhdCBoYXZlIGEgY29u
dGVudHMgbGF5ZXIgKGNhbnZhcywgcGx1Z2luLCBXZWJHTCwgdmlkZW8sCi0gICAgLy8gZXRjKS4K
LSAgICB2aXJ0dWFsIHZvaWQgc2V0VXNlUGFyZW50QmFja2ZhY2VWaXNpYmlsaXR5KGJvb2wpID0g
MDsKLQotICAgIHZpcnR1YWwgdm9pZCBzZXRCYWNrZ3JvdW5kQ29sb3IoV2ViQ29sb3IpID0gMDsK
LSAgICB2aXJ0dWFsIFdlYkNvbG9yIGJhY2tncm91bmRDb2xvcigpIGNvbnN0ID0gMDsKLQotICAg
IC8vIENsZWFyIHRoZSBmaWx0ZXJzIGluIHVzZSBieSBwYXNzaW5nIGluIGEgbmV3bHkgaW5zdGFu
dGlhdGVkCi0gICAgLy8gV2ViRmlsdGVyT3BlcmF0aW9ucyBvYmplY3QuCi0gICAgdmlydHVhbCB2
b2lkIHNldEZpbHRlcnMoY29uc3QgV2ViRmlsdGVyT3BlcmF0aW9ucyYpID0gMDsKLQotICAgIC8v
IFNldCB0aGUgcm9vdCBvZiB0aGUgaW1hZ2UgZmlsdGVyIGdyYXBoIGZvciB0aGlzIGxheWVyLiBU
aGUgCi0gICAgLy8gaW1wbGVtZW50YXRpb24gc2hvdWxkIGdyYWIgYSByZWYgb24gdGhlIHBhc3Nl
ZC1pbiBmaWx0ZXIgaW4gb3JkZXIKLSAgICAvLyB0byByZXRhaW4gb3duZXJzaGlwLiBUaGUgcGFz
c2VkLWluIGdyYXBoIHdpbGwgYmUgdW5yZWYnZWQgYnkgdGhlCi0gICAgLy8gY2FsbGVyIGFmdGVy
IHRoaXMgY2FsbC4KLSAgICB2aXJ0dWFsIHZvaWQgc2V0RmlsdGVyKFNrSW1hZ2VGaWx0ZXIqKSA9
IDA7Ci0KLSAgICAvLyBBcHBseSBmaWx0ZXJzIHRvIHBpeGVscyB0aGF0IHNob3cgdGhyb3VnaCB0
aGUgYmFja2dyb3VuZCBvZiB0aGlzIGxheWVyLgotICAgIC8vIE5vdGU6IFRoZXNlIGZpbHRlcnMg
YXJlIG9ubHkgcG9zc2libGUgb24gbGF5ZXJzIHRoYXQgYXJlIGRyYXduIGRpcmVjdGx5Ci0gICAg
Ly8gdG8gYSByb290IHJlbmRlciBzdXJmYWNlIHdpdGggYW4gb3BhcXVlIGJhY2tncm91bmQuIFRo
aXMgbWVhbnMgaWYgYW4KLSAgICAvLyBhbmNlc3RvciBvZiB0aGUgYmFja2dyb3VuZC1maWx0ZXJl
ZCBsYXllciBzZXRzIGNlcnRhaW4gcHJvcGVydGllcwotICAgIC8vIChvcGFjaXR5LCB0cmFuc2Zv
cm1zKSwgaXQgbWF5IGNvbmZsaWN0IGFuZCBoaWRlIHRoZSBiYWNrZ3JvdW5kIGZpbHRlcnMuCi0g
ICAgdmlydHVhbCB2b2lkIHNldEJhY2tncm91bmRGaWx0ZXJzKGNvbnN0IFdlYkZpbHRlck9wZXJh
dGlvbnMmKSA9IDA7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0RGVidWdOYW1lKFdlYlN0cmluZykg
PSAwOwotCi0gICAgLy8gQW4gYW5pbWF0aW9uIGRlbGVnYXRlIGlzIG5vdGlmaWVkIHdoZW4gYW5p
bWF0aW9ucyBhcmUgc3RhcnRlZCBhbmQKLSAgICAvLyBzdG9wcGVkLiBUaGUgV2ViTGF5ZXIgZG9l
cyBub3QgdGFrZSBvd25lcnNoaXAgb2YgdGhlIGRlbGVnYXRlLCBhbmQgaXQgaXMKLSAgICAvLyB0
aGUgcmVzcG9uc2liaWxpdHkgb2YgdGhlIGNsaWVudCB0byByZXNldCB0aGUgbGF5ZXIncyBkZWxl
Z2F0ZSBiZWZvcmUKLSAgICAvLyBkZWxldGluZyB0aGUgZGVsZWdhdGUuCi0gICAgdmlydHVhbCB2
b2lkIHNldEFuaW1hdGlvbkRlbGVnYXRlKFdlYkFuaW1hdGlvbkRlbGVnYXRlKikgPSAwOwotCi0g
ICAgLy8gUmV0dXJucyBmYWxzZSBpZiB0aGUgYW5pbWF0aW9uIGNhbm5vdCBiZSBhZGRlZC4KLSAg
ICB2aXJ0dWFsIGJvb2wgYWRkQW5pbWF0aW9uKFdlYkFuaW1hdGlvbiopID0gMDsKLQotICAgIC8v
IFJlbW92ZXMgYWxsIGFuaW1hdGlvbnMgd2l0aCB0aGUgZ2l2ZW4gaWQuCi0gICAgdmlydHVhbCB2
b2lkIHJlbW92ZUFuaW1hdGlvbihpbnQgYW5pbWF0aW9uSWQpID0gMDsKLQotICAgIC8vIFJlbW92
ZXMgYWxsIGFuaW1hdGlvbnMgd2l0aCB0aGUgZ2l2ZW4gaWQgdGFyZ2V0aW5nIHRoZSBnaXZlbiBw
cm9wZXJ0eS4KLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQW5pbWF0aW9uKGludCBhbmltYXRpb25J
ZCwgV2ViQW5pbWF0aW9uOjpUYXJnZXRQcm9wZXJ0eSkgPSAwOwotCi0gICAgLy8gUGF1c2VzIGFs
bCBhbmltYXRpb25zIHdpdGggdGhlIGdpdmVuIGlkLgotICAgIHZpcnR1YWwgdm9pZCBwYXVzZUFu
aW1hdGlvbihpbnQgYW5pbWF0aW9uSWQsIGRvdWJsZSB0aW1lT2Zmc2V0KSA9IDA7Ci0KLSAgICAv
LyBUaGUgZm9sbG93aW5nIGZ1bmN0aW9ucyBzdXNwZW5kIGFuZCByZXN1bWUgYWxsIGFuaW1hdGlv
bnMuIFRoZSBnaXZlbiB0aW1lCi0gICAgLy8gaXMgYXNzdW1lZCB0byB1c2UgdGhlIHNhbWUgdGlt
ZSBiYXNlIGFzIG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpLgotICAgIHZpcnR1YWwgdm9p
ZCBzdXNwZW5kQW5pbWF0aW9ucyhkb3VibGUgbW9ub3RvbmljVGltZSkgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCByZXN1bWVBbmltYXRpb25zKGRvdWJsZSBtb25vdG9uaWNUaW1lKSA9IDA7Ci0KLSAg
ICAvLyBSZXR1cm5zIHRydWUgaWYgdGhpcyBsYXllciBoYXMgYW55IGFjdGl2ZSBhbmltYXRpb25z
IC0gdXNlZnVsIGZvciB0ZXN0cy4KLSAgICB2aXJ0dWFsIGJvb2wgaGFzQWN0aXZlQW5pbWF0aW9u
KCkgPSAwOwotCi0gICAgLy8gVHJhbnNmZXJzIGFsbCBhbmltYXRpb25zIHJ1bm5pbmcgb24gdGhl
IGN1cnJlbnQgbGF5ZXIuCi0gICAgdmlydHVhbCB2b2lkIHRyYW5zZmVyQW5pbWF0aW9uc1RvKFdl
YkxheWVyKikgPSAwOwotCi0gICAgLy8gU2Nyb2xsaW5nCi0gICAgdmlydHVhbCB2b2lkIHNldFNj
cm9sbFBvc2l0aW9uKFdlYlBvaW50KSA9IDA7Ci0gICAgdmlydHVhbCBXZWJQb2ludCBzY3JvbGxQ
b3NpdGlvbigpIGNvbnN0ID0gMDsKLQotICAgIHZpcnR1YWwgdm9pZCBzZXRNYXhTY3JvbGxQb3Np
dGlvbihXZWJTaXplKSA9IDA7Ci0gICAgdmlydHVhbCBXZWJTaXplIG1heFNjcm9sbFBvc2l0aW9u
KCkgY29uc3QgPSAwOwotCi0gICAgdmlydHVhbCB2b2lkIHNldFNjcm9sbGFibGUoYm9vbCkgPSAw
OwotICAgIHZpcnR1YWwgYm9vbCBzY3JvbGxhYmxlKCkgY29uc3QgPSAwOwotCi0gICAgdmlydHVh
bCB2b2lkIHNldEhhdmVXaGVlbEV2ZW50SGFuZGxlcnMoYm9vbCkgPSAwOwotICAgIHZpcnR1YWwg
Ym9vbCBoYXZlV2hlZWxFdmVudEhhbmRsZXJzKCkgY29uc3QgPSAwOwotCi0gICAgdmlydHVhbCB2
b2lkIHNldFNob3VsZFNjcm9sbE9uTWFpblRocmVhZChib29sKSA9IDA7Ci0gICAgdmlydHVhbCBi
b29sIHNob3VsZFNjcm9sbE9uTWFpblRocmVhZCgpIGNvbnN0ID0gMDsKLQotICAgIHZpcnR1YWwg
dm9pZCBzZXROb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbihjb25zdCBXZWJWZWN0b3I8V2ViUmVjdD4m
KSA9IDA7Ci0gICAgdmlydHVhbCBXZWJWZWN0b3I8V2ViUmVjdD4gbm9uRmFzdFNjcm9sbGFibGVS
ZWdpb24oKSBjb25zdCA9IDA7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0VG91Y2hFdmVudEhhbmRs
ZXJSZWdpb24oY29uc3QgV2ViVmVjdG9yPFdlYlJlY3Q+JikgeyB9OwotICAgIHZpcnR1YWwgV2Vi
VmVjdG9yPFdlYlJlY3Q+IHRvdWNoRXZlbnRIYW5kbGVyUmVnaW9uKCkgY29uc3QgeyByZXR1cm4g
V2ViVmVjdG9yPFdlYlJlY3Q+KCk7fQotCi0gICAgdmlydHVhbCB2b2lkIHNldElzQ29udGFpbmVy
Rm9yRml4ZWRQb3NpdGlvbkxheWVycyhib29sKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIGlzQ29u
dGFpbmVyRm9yRml4ZWRQb3NpdGlvbkxheWVycygpIGNvbnN0ID0gMDsKLQotICAgIC8vIFRoaXMg
ZnVuY3Rpb24gc2V0cyBsYXllciBwb3NpdGlvbiBjb25zdHJhaW50LiBUaGUgY29uc3RyYWludCB3
aWxsIGJlIHVzZWQKLSAgICAvLyB0byBhZGp1c3QgbGF5ZXIgcG9zaXRpb24gZHVyaW5nIHRocmVh
ZGVkIHNjcm9sbGluZy4KLSAgICAvLyBGSVhNRTogTWFrZSBwdXJlIHZpcnR1YWwgYWZ0ZXIgaW1w
bGVtZW50YXRpb24gbGFuZHMuCi0gICAgdmlydHVhbCB2b2lkIHNldFBvc2l0aW9uQ29uc3RyYWlu
dChjb25zdCBXZWJMYXllclBvc2l0aW9uQ29uc3RyYWludCYgY29uc3RyYWludCkgeyBzZXRGaXhl
ZFRvQ29udGFpbmVyTGF5ZXIoY29uc3RyYWludC5pc0ZpeGVkUG9zaXRpb24pOyB9Ci0gICAgdmly
dHVhbCBXZWJMYXllclBvc2l0aW9uQ29uc3RyYWludCBwb3NpdGlvbkNvbnN0cmFpbnQoKSBjb25z
dCB7IHJldHVybiBXZWJMYXllclBvc2l0aW9uQ29uc3RyYWludCgpOyB9Ci0KLSAgICAvLyBUaGUg
c2Nyb2xsIGNsaWVudCBpcyBub3RpZmllZCB3aGVuIHRoZSBzY3JvbGwgcG9zaXRpb24gb2YgdGhl
IFdlYkxheWVyCi0gICAgLy8gY2hhbmdlcy4gT25seSBhIHNpbmdsZSBzY3JvbGwgY2xpZW50IGNh
biBiZSBzZXQgZm9yIGEgV2ViTGF5ZXIgYXQgYSB0aW1lLgotICAgIC8vIFRoZSBXZWJMYXllciBk
b2VzIG5vdCB0YWtlIG93bmVyc2hpcCBvZiB0aGUgc2Nyb2xsIGNsaWVudCwgYW5kIGl0IGlzIHRo
ZQotICAgIC8vIHJlc3BvbnNpYmlsaXR5IG9mIHRoZSBjbGllbnQgdG8gcmVzZXQgdGhlIGxheWVy
J3Mgc2Nyb2xsIGNsaWVudCBiZWZvcmUKLSAgICAvLyBkZWxldGluZyB0aGUgc2Nyb2xsIGNsaWVu
dC4KLSAgICB2aXJ0dWFsIHZvaWQgc2V0U2Nyb2xsQ2xpZW50KFdlYkxheWVyU2Nyb2xsQ2xpZW50
KikgPSAwOwotCi0gICAgLy8gRm9yY2VzIHRoaXMgbGF5ZXIgdG8gdXNlIGEgcmVuZGVyIHN1cmZh
Y2UuIFRoZXJlIGlzIG5vIGJlbmVmaXQgaW4gZG9pbmcKLSAgICAvLyBzbywgYnV0IHRoaXMgaXMg
dG8gZmFjaWxpdGF0ZSBiZW5jaG1hcmtzIGFuZCB0ZXN0cy4KLSAgICB2aXJ0dWFsIHZvaWQgc2V0
Rm9yY2VSZW5kZXJTdXJmYWNlKGJvb2wpID0gMDsKLQotICAgIC8vIFRydWUgaWYgdGhlIGxheWVy
IGlzIG5vdCBwYXJ0IG9mIGEgdHJlZSBhdHRhY2hlZCB0byBhIFdlYkxheWVyVHJlZVZpZXcuCi0g
ICAgdmlydHVhbCBib29sIGlzT3JwaGFuKCkgY29uc3QgPSAwOwotCi0gICAgLy8gREVQUkVDQVRF
RAotICAgIHZpcnR1YWwgdm9pZCBzZXRGaXhlZFRvQ29udGFpbmVyTGF5ZXIoYm9vbCkgeyB9Ci0g
ICAgdmlydHVhbCBib29sIGZpeGVkVG9Db250YWluZXJMYXllcigpIGNvbnN0IHsgcmV0dXJuIHBv
c2l0aW9uQ29uc3RyYWludCgpLmlzRml4ZWRQb3NpdGlvbjsgfQotfTsKLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBXZWJMYXllcl9oCkluZGV4OiBTb3VyY2UvUGxhdGZvcm0v
Y2hyb21pdW0vcHVibGljL1dlYkxheWVyUG9zaXRpb25Db25zdHJhaW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMYXllclBvc2l0aW9uQ29uc3Ry
YWludC5oCShyZXZpc2lvbiAxNDc3MTApCisrKyBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVi
bGljL1dlYkxheWVyUG9zaXRpb25Db25zdHJhaW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNTUg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0g
KiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpZm5kZWYgV2ViTGF5ZXJQb3NpdGlvbkNvbnN0cmFpbnRfaAotI2Rl
ZmluZSBXZWJMYXllclBvc2l0aW9uQ29uc3RyYWludF9oCi0KLW5hbWVzcGFjZSBXZWJLaXQgewot
Ci1zdHJ1Y3QgV2ViTGF5ZXJQb3NpdGlvbkNvbnN0cmFpbnQgewotICAgIGJvb2wgaXNGaXhlZFBv
c2l0aW9uICAgICA6IDE7Ci0gICAgYm9vbCBpc0ZpeGVkVG9SaWdodEVkZ2UgIDogMTsKLSAgICBi
b29sIGlzRml4ZWRUb0JvdHRvbUVkZ2UgOiAxOwotCi0gICAgV2ViTGF5ZXJQb3NpdGlvbkNvbnN0
cmFpbnQoKQotICAgICAgICA6IGlzRml4ZWRQb3NpdGlvbihmYWxzZSkKLSAgICAgICAgLCBpc0Zp
eGVkVG9SaWdodEVkZ2UoZmFsc2UpCi0gICAgICAgICwgaXNGaXhlZFRvQm90dG9tRWRnZShmYWxz
ZSkKLSAgICB7Ci0gICAgfQotCi0gICAgc3RhdGljIFdlYkxheWVyUG9zaXRpb25Db25zdHJhaW50
IGZpeGVkUG9zaXRpb24oYm9vbCBmaXhlZFRvUmlnaHRFZGdlLCBib29sIGZpeGVkVG9Cb3R0b21F
ZGdlKQotICAgIHsKLSAgICAgICAgV2ViTGF5ZXJQb3NpdGlvbkNvbnN0cmFpbnQgY29uc3RyYWlu
dDsKLSAgICAgICAgY29uc3RyYWludC5pc0ZpeGVkUG9zaXRpb24gPSB0cnVlOwotICAgICAgICBj
b25zdHJhaW50LmlzRml4ZWRUb1JpZ2h0RWRnZSA9IGZpeGVkVG9SaWdodEVkZ2U7Ci0gICAgICAg
IGNvbnN0cmFpbnQuaXNGaXhlZFRvQm90dG9tRWRnZSA9IGZpeGVkVG9Cb3R0b21FZGdlOwotICAg
ICAgICByZXR1cm4gY29uc3RyYWludDsKLSAgICB9Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJL
aXQKLQotI2VuZGlmIC8vIFdlYkxheWVyUG9zaXRpb25Db25zdHJhaW50X2gKSW5kZXg6IFNvdXJj
ZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXJTY3JvbGxDbGllbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkxheWVyU2Nyb2xsQ2xp
ZW50LmgJKHJldmlzaW9uIDE0NzcxMCkKKysrIFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJs
aWMvV2ViTGF5ZXJTY3JvbGxDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw0MCArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQot
ICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTgotICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
Ci0gKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdlYkxheWVyU2Nyb2xsQ2xpZW50X2gKLSNkZWZpbmUg
V2ViTGF5ZXJTY3JvbGxDbGllbnRfaAotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotLy8gQSBjbGll
bnQgdGhhdCBpcyBub3RpZmllZCBvZiBzY3JvbGxpbmcgb24gYSBXZWJMYXllci4KLWNsYXNzIFdl
YkxheWVyU2Nyb2xsQ2xpZW50IHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIHZvaWQgZGlkU2Nyb2xs
KCkgPSAwOwotcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgfldlYkxheWVyU2Nyb2xsQ2xpZW50KCkg
eyB9Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIFdlYkxheWVyU2Ny
b2xsQ2xpZW50X2gKSW5kZXg6IFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5
ZXJUcmVlVmlldy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJs
aWMvV2ViTGF5ZXJUcmVlVmlldy5oCShyZXZpc2lvbiAxNDc3MTApCisrKyBTb3VyY2UvUGxhdGZv
cm0vY2hyb21pdW0vcHVibGljL1dlYkxheWVyVHJlZVZpZXcuaAkod29ya2luZyBjb3B5KQpAQCAt
MSwxNDIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5Z
Ci0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
Ci0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgV2ViTGF5ZXJUcmVlVmlld19oCi0jZGVmaW5l
IFdlYkxheWVyVHJlZVZpZXdfaAotCi0jaW5jbHVkZSAiV2ViQ29sb3IuaCIKLSNpbmNsdWRlICJX
ZWJDb21tb24uaCIKLSNpbmNsdWRlICJXZWJGbG9hdFBvaW50LmgiCi0jaW5jbHVkZSAiV2ViTm9u
Q29weWFibGUuaCIKLSNpbmNsdWRlICJXZWJQcml2YXRlT3duUHRyLmgiCi0jaW5jbHVkZSAiV2Vi
U2l6ZS5oIgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLWNsYXNzIFdlYkdyYXBoaWNzQ29udGV4dDNE
OwotY2xhc3MgV2ViTGF5ZXI7Ci1zdHJ1Y3QgV2ViUG9pbnQ7Ci1zdHJ1Y3QgV2ViUmVjdDsKLXN0
cnVjdCBXZWJSZW5kZXJpbmdTdGF0czsKLQotY2xhc3MgV2ViTGF5ZXJUcmVlVmlldyB7Ci1wdWJs
aWM6Ci0gICAgdmlydHVhbCB+V2ViTGF5ZXJUcmVlVmlldygpIHsgfQotCi0gICAgLy8gSW5pdGlh
bGl6YXRpb24gYW5kIGxpZmVjeWNsZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQotCi0gICAgLy8gSW5kaWNhdGVzIHRoYXQgdGhlIGNvbXBvc2l0aW5nIHN1cmZhY2UgdXNl
ZCBieSB0aGlzIFdlYkxheWVyVHJlZVZpZXcgaXMgcmVhZHkgdG8gdXNlLgotICAgIC8vIEEgV2Vi
TGF5ZXJUcmVlVmlldyBtYXkgcmVxdWVzdCBhIGNvbnRleHQgZnJvbSBpdHMgY2xpZW50IGJlZm9y
ZSB0aGUgc3VyZmFjZSBpcyByZWFkeSwKLSAgICAvLyBidXQgaXQgd29uJ3QgYXR0ZW1wdCB0byB1
c2UgaXQuCi0gICAgdmlydHVhbCB2b2lkIHNldFN1cmZhY2VSZWFkeSgpID0gMDsKLQotICAgIC8v
IFNldHMgdGhlIHJvb3Qgb2YgdGhlIHRyZWUuIFRoZSByb290IGlzIHNldCBieSB3YXkgb2YgdGhl
IGNvbnN0cnVjdG9yLgotICAgIHZpcnR1YWwgdm9pZCBzZXRSb290TGF5ZXIoY29uc3QgV2ViTGF5
ZXImKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGNsZWFyUm9vdExheWVyKCkgPSAwOwotCi0KLSAg
ICAvLyBWaWV3IHByb3BlcnRpZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCi0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0Vmlld3BvcnRTaXplKGNvbnN0
IFdlYlNpemUmIGxheW91dFZpZXdwb3J0U2l6ZSwgY29uc3QgV2ViU2l6ZSYgZGV2aWNlVmlld3Bv
cnRTaXplKSA9IDA7Ci0gICAgLy8gR2l2ZXMgdGhlIHZpZXdwb3J0IHNpemUgaW4gbGF5ZXIgc3Bh
Y2UuCi0gICAgdmlydHVhbCBXZWJTaXplIGxheW91dFZpZXdwb3J0U2l6ZSgpIGNvbnN0ID0gMDsK
LSAgICAvLyBHaXZlcyB0aGUgdmlld3BvcnQgc2l6ZSBpbiBwaHlzaWNhbCBkZXZpY2UgcGl4ZWxz
IChtYXkgYmUgZGlmZmVyZW50Ci0gICAgLy8gZnJvbSB0aGUgYWJvdmUgaWYgdGhlcmUgZXhpc3Rz
IHBhZ2Ugc2NhbGUsIGRldmljZSBzY2FsZSBvciBmaXhlZCBsYXlvdXQKLSAgICAvLyBtb2RlKS4K
LSAgICB2aXJ0dWFsIFdlYlNpemUgZGV2aWNlVmlld3BvcnRTaXplKCkgY29uc3QgPSAwOwotCi0g
ICAgdmlydHVhbCB2b2lkIHNldERldmljZVNjYWxlRmFjdG9yKGZsb2F0KSA9IDA7Ci0gICAgdmly
dHVhbCBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcigpIGNvbnN0ID0gMDsKLQotICAgIC8vIFNldHMg
dGhlIGJhY2tncm91bmQgY29sb3IgZm9yIHRoZSB2aWV3cG9ydC4KLSAgICB2aXJ0dWFsIHZvaWQg
c2V0QmFja2dyb3VuZENvbG9yKFdlYkNvbG9yKSA9IDA7Ci0KLSAgICAvLyBTZXRzIHRoZSBiYWNr
Z3JvdW5kIHRyYW5zcGFyZW5jeSBmb3IgdGhlIHZpZXdwb3J0LiBUaGUgZGVmYXVsdCBpcyAnZmFs
c2UnLgotICAgIHZpcnR1YWwgdm9pZCBzZXRIYXNUcmFuc3BhcmVudEJhY2tncm91bmQoYm9vbCkg
PSAwOwotCi0gICAgLy8gU2V0cyB3aGV0aGVyIHRoaXMgdmlldyBpcyB2aXNpYmxlLiBJbiB0aHJl
YWRlZCBtb2RlLCBhIHZpZXcgdGhhdCBpcyBub3QgdmlzaWJsZSB3aWxsIG5vdAotICAgIC8vIGNv
bXBvc2l0ZSBvciB0cmlnZ2VyIHVwZGF0ZUFuaW1hdGlvbnMoKSBvciBsYXlvdXQoKSBjYWxscyB1
bnRpbCBpdCBiZWNvbWVzIHZpc2libGUuCi0gICAgdmlydHVhbCB2b2lkIHNldFZpc2libGUoYm9v
bCkgPSAwOwotCi0gICAgLy8gU2V0cyB0aGUgY3VycmVudCBwYWdlIHNjYWxlIGZhY3RvciBhbmQg
bWluaW11bSAvIG1heGltdW0gbGltaXRzLiBCb3RoIGxpbWl0cyBhcmUgaW5pdGlhbGx5IDEgKG5v
IHBhZ2Ugc2NhbGUgYWxsb3dlZCkuCi0gICAgdmlydHVhbCB2b2lkIHNldFBhZ2VTY2FsZUZhY3Rv
ckFuZExpbWl0cyhmbG9hdCBwYWdlU2NhbGVGYWN0b3IsIGZsb2F0IG1pbmltdW0sIGZsb2F0IG1h
eGltdW0pID0gMDsKLQotICAgIC8vIFN0YXJ0cyBhbiBhbmltYXRpb24gb2YgdGhlIHBhZ2Ugc2Nh
bGUgdG8gYSB0YXJnZXQgc2NhbGUgZmFjdG9yIGFuZCBzY3JvbGwgb2Zmc2V0LgotICAgIC8vIElm
IHVzZUFuY2hvciBpcyB0cnVlLCBkZXN0aW5hdGlvbiBpcyBhIHBvaW50IG9uIHRoZSBzY3JlZW4g
dGhhdCB3aWxsIHJlbWFpbiBmaXhlZCBmb3IgdGhlIGR1cmF0aW9uIG9mIHRoZSBhbmltYXRpb24u
Ci0gICAgLy8gSWYgdXNlQW5jaG9yIGlzIGZhbHNlLCBkZXN0aW5hdGlvbiBpcyB0aGUgZmluYWwg
dG9wLWxlZnQgc2Nyb2xsIHBvc2l0aW9uLgotICAgIHZpcnR1YWwgdm9pZCBzdGFydFBhZ2VTY2Fs
ZUFuaW1hdGlvbihjb25zdCBXZWJQb2ludCYgZGVzdGluYXRpb24sIGJvb2wgdXNlQW5jaG9yLCBm
bG9hdCBuZXdQYWdlU2NhbGUsIGRvdWJsZSBkdXJhdGlvblNlYykgPSAwOwotCi0KLSAgICAvLyBG
bG93IGNvbnRyb2wgYW5kIHNjaGVkdWxpbmcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCi0KLSAgICAvLyBJbmRpY2F0ZXMgdGhhdCBhbiBhbmltYXRpb24gbmVlZHMgdG8g
YmUgdXBkYXRlZC4KLSAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNBbmltYXRlKCkgPSAwOwotCi0g
ICAgLy8gSW5kaWNhdGVzIHRoYXQgdGhlIHZpZXcgbmVlZHMgdG8gYmUgcmVkcmF3bi4gVGhpcyBp
cyB0eXBpY2FsbHkgdXNlZCB3aGVuIHRoZSBmcm9udGJ1ZmZlciBpcyBkYW1hZ2VkLgotICAgIHZp
cnR1YWwgdm9pZCBzZXROZWVkc1JlZHJhdygpID0gMDsKLQotICAgIC8vIEluZGljYXRlcyB3aGV0
aGVyIGEgY29tbWl0IGlzIHBlbmRpbmcuCi0gICAgdmlydHVhbCBib29sIGNvbW1pdFJlcXVlc3Rl
ZCgpIGNvbnN0ID0gMDsKLQotICAgIC8vIFJlbGF5cyB0aGUgZW5kIG9mIGEgZmxpbmcgYW5pbWF0
aW9uLgotICAgIHZpcnR1YWwgdm9pZCBkaWRTdG9wRmxpbmdpbmcoKSB7IH0KLQotICAgIC8vIENv
bXBvc2l0ZXMgYW5kIGF0dGVtcHRzIHRvIHJlYWQgYmFjayB0aGUgcmVzdWx0IGludG8gdGhlIHBy
b3ZpZGVkCi0gICAgLy8gYnVmZmVyLiBJZiBpdCB3YXNuJ3QgcG9zc2libGUsIGUuZy4gZHVlIHRv
IGNvbnRleHQgbG9zdCwgd2lsbCByZXR1cm4KLSAgICAvLyBmYWxzZS4gUGl4ZWwgZm9ybWF0IGlz
IDMyYml0IChSR0JBKSwgYW5kIHRoZSBwcm92aWRlZCBidWZmZXIgbXVzdCBiZQotICAgIC8vIGxh
cmdlIGVub3VnaCBjb250YWluIHZpZXdwb3J0U2l6ZSgpLndpZHRoKCkgKiB2aWV3cG9ydFNpemUo
KS5oZWlnaHQoKQotICAgIC8vIHBpeGVscy4gVGhlIFdlYkxheWVyVHJlZVZpZXcgZG9lcyBub3Qg
YXNzdW1lIG93bmVyc2hpcCBvZiB0aGUgYnVmZmVyLgotICAgIC8vIFRoZSBidWZmZXIgaXMgbm90
IG1vZGlmaWVkIGlmIHRoZSBmYWxzZSBpcyByZXR1cm5lZC4KLSAgICB2aXJ0dWFsIGJvb2wgY29t
cG9zaXRlQW5kUmVhZGJhY2sodm9pZCAqcGl4ZWxzLCBjb25zdCBXZWJSZWN0JikgPSAwOwotCi0g
ICAgLy8gQmxvY2tzIHVudGlsIHRoZSBtb3N0IHJlY2VudGx5IGNvbXBvc2l0ZWQgZnJhbWUgaGFz
IGZpbmlzaGVkIHJlbmRlcmluZyBvbiB0aGUgR1BVLgotICAgIC8vIFRoaXMgY2FuIGhhdmUgYSBz
aWduaWZpY2FudCBwZXJmb3JtYW5jZSBpbXBhY3QgYW5kIHNob3VsZCBiZSB1c2VkIHdpdGggY2Fy
ZS4KLSAgICB2aXJ0dWFsIHZvaWQgZmluaXNoQWxsUmVuZGVyaW5nKCkgPSAwOwotCi0gICAgLy8g
UHJldmVudHMgdXBkYXRlcyB0byBsYXllciB0cmVlIGZyb20gYmVjb21pbmcgdmlzaWJsZS4KLSAg
ICB2aXJ0dWFsIHZvaWQgc2V0RGVmZXJDb21taXRzKGJvb2wgZGVmZXJDb21taXRzKSB7IH0KLQot
ICAgIC8vIFRha2UgcmVzcG9uc2libGl0eSBmb3IgdGhpcyBsYXllcidzIGFuaW1hdGlvbnMsIGV2
ZW4gaWYgdGhpcyBsYXllciBoYXNuJ3QgeWV0Ci0gICAgLy8gYmVlbiBhZGRlZCB0byB0aGUgdHJl
ZS4KLSAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJGb3JBbmltYXRpb25zKFdlYkxheWVyKiBsYXll
cikgeyB9Ci0KLQotICAgIC8vIERlYnVnZ2luZyAvIGRhbmdlcm91cyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotICAgIC8vIFRvZ2dsZXMgdGhlIEZQUyBj
b3VudGVyIGluIHRoZSBIVUQgbGF5ZXIKLSAgICB2aXJ0dWFsIHZvaWQgc2V0U2hvd0ZQU0NvdW50
ZXIoYm9vbCkgeyB9Ci0KLSAgICAvLyBUb2dnbGVzIHRoZSBwYWludCByZWN0cyBpbiB0aGUgSFVE
IGxheWVyCi0gICAgdmlydHVhbCB2b2lkIHNldFNob3dQYWludFJlY3RzKGJvb2wpIHsgfQotCi0g
ICAgLy8gVG9nZ2xlcyB0aGUgZGVidWcgYm9yZGVycyBvbiBsYXllcnMKLSAgICB2aXJ0dWFsIHZv
aWQgc2V0U2hvd0RlYnVnQm9yZGVycyhib29sKSB7IH0KLQotICAgIC8vIFRvZ2dsZXMgY29udGlu
dW91cyBwYWludGluZwotICAgIHZpcnR1YWwgdm9pZCBzZXRDb250aW51b3VzUGFpbnRpbmdFbmFi
bGVkKGJvb2wpIHsgfQotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBX
ZWJMYXllclRyZWVWaWV3X2gKSW5kZXg6IFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMv
V2ViTG9jYWxpemVkU3RyaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1BsYXRmb3JtL2Nocm9t
aXVtL3B1YmxpYy9XZWJMb2NhbGl6ZWRTdHJpbmcuaAkocmV2aXNpb24gMTQ3NzEwKQorKysgU291
cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMb2NhbGl6ZWRTdHJpbmcuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMSwxNTIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0g
KiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgV2ViTG9jYWxpemVkU3RyaW5nX2gKLSNk
ZWZpbmUgV2ViTG9jYWxpemVkU3RyaW5nX2gKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLXN0cnVj
dCBXZWJMb2NhbGl6ZWRTdHJpbmcgewotICAgIGVudW0gTmFtZSB7Ci0gICAgICAgIEFYQU1QTUZp
ZWxkVGV4dCwKLSAgICAgICAgQVhCdXR0b25BY3Rpb25WZXJiLAotICAgICAgICBBWENoZWNrZWRD
aGVja0JveEFjdGlvblZlcmIsCi0gICAgICAgIEFYRGF0ZVRpbWVGaWVsZEVtcHR5VmFsdWVUZXh0
LAotICAgICAgICBBWERheU9mTW9udGhGaWVsZFRleHQsCi0gICAgICAgIEFYSGVhZGluZ1RleHQs
Ci0gICAgICAgIEFYSG91ckZpZWxkVGV4dCwKLSAgICAgICAgQVhJbWFnZU1hcFRleHQsCi0gICAg
ICAgIEFYTGlua0FjdGlvblZlcmIsCi0gICAgICAgIEFYTGlua1RleHQsCi0gICAgICAgIEFYTGlz
dE1hcmtlclRleHQsCi0gICAgICAgIEFYTWVkaWFBdWRpb0VsZW1lbnQsCi0gICAgICAgIEFYTWVk
aWFBdWRpb0VsZW1lbnRIZWxwLAotICAgICAgICBBWE1lZGlhQ3VycmVudFRpbWVEaXNwbGF5LAot
ICAgICAgICBBWE1lZGlhQ3VycmVudFRpbWVEaXNwbGF5SGVscCwKLSAgICAgICAgQVhNZWRpYURl
ZmF1bHQsCi0gICAgICAgIEFYTWVkaWFFbnRlckZ1bGxzY3JlZW5CdXR0b24sCi0gICAgICAgIEFY
TWVkaWFFbnRlckZ1bGxzY3JlZW5CdXR0b25IZWxwLAotICAgICAgICBBWE1lZGlhRXhpdEZ1bGxz
Y3JlZW5CdXR0b24sCi0gICAgICAgIEFYTWVkaWFFeGl0RnVsbHNjcmVlbkJ1dHRvbkhlbHAsCi0g
ICAgICAgIEFYTWVkaWFIaWRlQ2xvc2VkQ2FwdGlvbnNCdXR0b24sCi0gICAgICAgIEFYTWVkaWFI
aWRlQ2xvc2VkQ2FwdGlvbnNCdXR0b25IZWxwLAotICAgICAgICBBWE1lZGlhTXV0ZUJ1dHRvbiwK
LSAgICAgICAgQVhNZWRpYU11dGVCdXR0b25IZWxwLAotICAgICAgICBBWE1lZGlhUGF1c2VCdXR0
b24sCi0gICAgICAgIEFYTWVkaWFQYXVzZUJ1dHRvbkhlbHAsCi0gICAgICAgIEFYTWVkaWFQbGF5
QnV0dG9uLAotICAgICAgICBBWE1lZGlhUGxheUJ1dHRvbkhlbHAsCi0gICAgICAgIEFYTWVkaWFS
ZXR1cm5Ub1JlYWxUaW1lLAotICAgICAgICBBWE1lZGlhUmV0dXJuVG9SZWFsVGltZUhlbHAsCi0g
ICAgICAgIEFYTWVkaWFSZXdpbmRCdXR0b24sCi0gICAgICAgIEFYTWVkaWFSZXdpbmRCdXR0b25I
ZWxwLAotICAgICAgICBBWE1lZGlhU2Vla0JhY2tCdXR0b24sCi0gICAgICAgIEFYTWVkaWFTZWVr
QmFja0J1dHRvbkhlbHAsCi0gICAgICAgIEFYTWVkaWFTZWVrRm9yd2FyZEJ1dHRvbiwKLSAgICAg
ICAgQVhNZWRpYVNlZWtGb3J3YXJkQnV0dG9uSGVscCwKLSAgICAgICAgQVhNZWRpYVNob3dDbG9z
ZWRDYXB0aW9uc0J1dHRvbiwKLSAgICAgICAgQVhNZWRpYVNob3dDbG9zZWRDYXB0aW9uc0J1dHRv
bkhlbHAsCi0gICAgICAgIEFYTWVkaWFTbGlkZXIsCi0gICAgICAgIEFYTWVkaWFTbGlkZXJIZWxw
LAotICAgICAgICBBWE1lZGlhU2xpZGVyVGh1bWIsCi0gICAgICAgIEFYTWVkaWFTbGlkZXJUaHVt
YkhlbHAsCi0gICAgICAgIEFYTWVkaWFTdGF0dXNEaXNwbGF5LAotICAgICAgICBBWE1lZGlhU3Rh
dHVzRGlzcGxheUhlbHAsCi0gICAgICAgIEFYTWVkaWFUaW1lUmVtYWluaW5nRGlzcGxheSwKLSAg
ICAgICAgQVhNZWRpYVRpbWVSZW1haW5pbmdEaXNwbGF5SGVscCwKLSAgICAgICAgQVhNZWRpYVVu
TXV0ZUJ1dHRvbiwKLSAgICAgICAgQVhNZWRpYVVuTXV0ZUJ1dHRvbkhlbHAsCi0gICAgICAgIEFY
TWVkaWFWaWRlb0VsZW1lbnQsCi0gICAgICAgIEFYTWVkaWFWaWRlb0VsZW1lbnRIZWxwLAotICAg
ICAgICBBWE1pbGxpc2Vjb25kRmllbGRUZXh0LAotICAgICAgICBBWE1pbnV0ZUZpZWxkVGV4dCwK
LSAgICAgICAgQVhNb250aEZpZWxkVGV4dCwKLSAgICAgICAgQVhSYWRpb0J1dHRvbkFjdGlvblZl
cmIsCi0gICAgICAgIEFYU2Vjb25kRmllbGRUZXh0LAotICAgICAgICBBWFRleHRGaWVsZEFjdGlv
blZlcmIsCi0gICAgICAgIEFYVW5jaGVja2VkQ2hlY2tCb3hBY3Rpb25WZXJiLAotICAgICAgICBB
WFdlYkFyZWFUZXh0LAotICAgICAgICBBWFdlZWtPZlllYXJGaWVsZFRleHQsCi0gICAgICAgIEFY
WWVhckZpZWxkVGV4dCwKLSAgICAgICAgQ2FsZW5kYXJDbGVhciwKLSAgICAgICAgQ2FsZW5kYXJU
b2RheSwKLSAgICAgICAgRGF0ZUZvcm1hdERheUluTW9udGhMYWJlbCwKLSAgICAgICAgRGF0ZUZv
cm1hdE1vbnRoTGFiZWwsCi0gICAgICAgIERhdGVGb3JtYXRZZWFyTGFiZWwsCi0gICAgICAgIERl
dGFpbHNMYWJlbCwKLSAgICAgICAgRmlsZUJ1dHRvbkNob29zZUZpbGVMYWJlbCwKLSAgICAgICAg
RmlsZUJ1dHRvbkNob29zZU11bHRpcGxlRmlsZXNMYWJlbCwKLSAgICAgICAgRmlsZUJ1dHRvbk5v
RmlsZVNlbGVjdGVkTGFiZWwsCi0gICAgICAgIElucHV0RWxlbWVudEFsdFRleHQsCi0gICAgICAg
IEtleWdlbk1lbnVIaWdoR3JhZGVLZXlTaXplLAotICAgICAgICBLZXlnZW5NZW51TWVkaXVtR3Jh
ZGVLZXlTaXplLAotICAgICAgICBNaXNzaW5nUGx1Z2luVGV4dCwKLSAgICAgICAgTXVsdGlwbGVG
aWxlVXBsb2FkVGV4dCwKLSAgICAgICAgT3RoZXJDb2xvckxhYmVsLAotICAgICAgICBPdGhlckRh
dGVMYWJlbCwKLSAgICAgICAgT3RoZXJNb250aExhYmVsLAotICAgICAgICBPdGhlclRpbWVMYWJl
bCwKLSAgICAgICAgT3RoZXJXZWVrTGFiZWwsCi0gICAgICAgIFBsYWNlaG9sZGVyRm9yRGF5T2ZN
b250aEZpZWxkLAotICAgICAgICBQbGFjZWhvbGRlckZvck1vbnRoRmllbGQsCi0gICAgICAgIFBs
YWNlaG9sZGVyRm9yWWVhckZpZWxkLAotICAgICAgICBSZXNldEJ1dHRvbkRlZmF1bHRMYWJlbCwK
LSAgICAgICAgU2VhcmNoYWJsZUluZGV4SW50cm9kdWN0aW9uLAotICAgICAgICBTZWFyY2hNZW51
Q2xlYXJSZWNlbnRTZWFyY2hlc1RleHQsCi0gICAgICAgIFNlYXJjaE1lbnVOb1JlY2VudFNlYXJj
aGVzVGV4dCwKLSAgICAgICAgU2VhcmNoTWVudVJlY2VudFNlYXJjaGVzVGV4dCwKLSAgICAgICAg
U3VibWl0QnV0dG9uRGVmYXVsdExhYmVsLAotICAgICAgICBUaGlzTW9udGhCdXR0b25MYWJlbCwK
LSAgICAgICAgVGhpc1dlZWtCdXR0b25MYWJlbCwKLSAgICAgICAgVmFsaWRhdGlvbkJhZElucHV0
Rm9yTnVtYmVyLAotICAgICAgICBWYWxpZGF0aW9uQmFkSW5wdXRGb3JEYXRlVGltZSwKLSAgICAg
ICAgVmFsaWRhdGlvblBhdHRlcm5NaXNtYXRjaCwKLSAgICAgICAgVmFsaWRhdGlvblJhbmdlT3Zl
cmZsb3csCi0gICAgICAgIFZhbGlkYXRpb25SYW5nZVVuZGVyZmxvdywKLSAgICAgICAgVmFsaWRh
dGlvblN0ZXBNaXNtYXRjaCwKLSAgICAgICAgVmFsaWRhdGlvblRvb0xvbmcsCi0gICAgICAgIFZh
bGlkYXRpb25UeXBlTWlzbWF0Y2gsCi0gICAgICAgIFZhbGlkYXRpb25UeXBlTWlzbWF0Y2hGb3JF
bWFpbCwKLSAgICAgICAgVmFsaWRhdGlvblR5cGVNaXNtYXRjaEZvck11bHRpcGxlRW1haWwsCi0g
ICAgICAgIFZhbGlkYXRpb25UeXBlTWlzbWF0Y2hGb3JVUkwsCi0gICAgICAgIFZhbGlkYXRpb25W
YWx1ZU1pc3NpbmcsCi0gICAgICAgIFZhbGlkYXRpb25WYWx1ZU1pc3NpbmdGb3JDaGVja2JveCwK
LSAgICAgICAgVmFsaWRhdGlvblZhbHVlTWlzc2luZ0ZvckZpbGUsCi0gICAgICAgIFZhbGlkYXRp
b25WYWx1ZU1pc3NpbmdGb3JNdWx0aXBsZUZpbGUsCi0gICAgICAgIFZhbGlkYXRpb25WYWx1ZU1p
c3NpbmdGb3JSYWRpbywKLSAgICAgICAgVmFsaWRhdGlvblZhbHVlTWlzc2luZ0ZvclNlbGVjdCwK
LSAgICAgICAgV2Vla0Zvcm1hdFRlbXBsYXRlLAotICAgICAgICBXZWVrTnVtYmVyTGFiZWwsCi0g
ICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYKSW5kZXg6IFNvdXJj
ZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTWVkaWFDb25zdHJhaW50cy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTWVkaWFDb25zdHJhaW50
cy5oCShyZXZpc2lvbiAxNDc3MTApCisrKyBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGlj
L1dlYk1lZGlhQ29uc3RyYWludHMuaAkod29ya2luZyBjb3B5KQpAQCAtMSwxMDAgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0g
KiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQot
ICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNp
Zm5kZWYgV2ViTWVkaWFDb25zdHJhaW50c19oCi0jZGVmaW5lIFdlYk1lZGlhQ29uc3RyYWludHNf
aAotCi0jaW5jbHVkZSAiV2ViQ29tbW9uLmgiCi0jaW5jbHVkZSAiV2ViTm9uQ29weWFibGUuaCIK
LSNpbmNsdWRlICJXZWJQcml2YXRlUHRyLmgiCi0jaW5jbHVkZSAiV2ViU3RyaW5nLmgiCi0jaW5j
bHVkZSAiV2ViVmVjdG9yLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLXN0cnVjdCBNZWRpYUNv
bnN0cmFpbnQ7Ci1jbGFzcyBNZWRpYUNvbnN0cmFpbnRzOwotfQotCi1uYW1lc3BhY2UgV2ViS2l0
IHsKLQotc3RydWN0IFdlYk1lZGlhQ29uc3RyYWludCB7Ci0gICAgV2ViTWVkaWFDb25zdHJhaW50
KCkKLSAgICB7Ci0gICAgfQotCi0gICAgV2ViTWVkaWFDb25zdHJhaW50KFdlYlN0cmluZyBuYW1l
LCBXZWJTdHJpbmcgdmFsdWUpCi0gICAgICAgIDogbV9uYW1lKG5hbWUpCi0gICAgICAgICwgbV92
YWx1ZSh2YWx1ZSkKLSAgICB7Ci0gICAgfQotCi0jaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCi0g
ICAgV2ViTWVkaWFDb25zdHJhaW50KGNvbnN0IFdlYkNvcmU6Ok1lZGlhQ29uc3RyYWludCYpOwot
I2VuZGlmCi0KLSAgICBXZWJTdHJpbmcgbV9uYW1lOwotICAgIFdlYlN0cmluZyBtX3ZhbHVlOwot
fTsKLQotY2xhc3MgV2ViTWVkaWFDb25zdHJhaW50cyB7Ci1wdWJsaWM6Ci0gICAgV2ViTWVkaWFD
b25zdHJhaW50cygpIHsgfQotICAgIFdlYk1lZGlhQ29uc3RyYWludHMoY29uc3QgV2ViTWVkaWFD
b25zdHJhaW50cyYgb3RoZXIpIHsgYXNzaWduKG90aGVyKTsgfQotICAgIH5XZWJNZWRpYUNvbnN0
cmFpbnRzKCkgeyByZXNldCgpOyB9Ci0KLSAgICBXZWJNZWRpYUNvbnN0cmFpbnRzJiBvcGVyYXRv
cj0oY29uc3QgV2ViTWVkaWFDb25zdHJhaW50cyYgb3RoZXIpCi0gICAgewotICAgICAgICBhc3Np
Z24ob3RoZXIpOwotICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotCi0gICAgV0VCS0lUX0VY
UE9SVCB2b2lkIGFzc2lnbihjb25zdCBXZWJNZWRpYUNvbnN0cmFpbnRzJik7Ci0KLSAgICBXRUJL
SVRfRVhQT1JUIHZvaWQgcmVzZXQoKTsKLSAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJu
IG1fcHJpdmF0ZS5pc051bGwoKTsgfQotCi0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIGdldE1hbmRh
dG9yeUNvbnN0cmFpbnRzKFdlYlZlY3RvcjxXZWJNZWRpYUNvbnN0cmFpbnQ+JikgY29uc3Q7Ci0g
ICAgV0VCS0lUX0VYUE9SVCB2b2lkIGdldE9wdGlvbmFsQ29uc3RyYWludHMoV2ViVmVjdG9yPFdl
Yk1lZGlhQ29uc3RyYWludD4mKSBjb25zdDsKLQotICAgIFdFQktJVF9FWFBPUlQgYm9vbCBnZXRN
YW5kYXRvcnlDb25zdHJhaW50VmFsdWUoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBXZWJTdHJpbmcm
IHZhbHVlKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JUIGJvb2wgZ2V0T3B0aW9uYWxDb25zdHJh
aW50VmFsdWUoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBXZWJTdHJpbmcmIHZhbHVlKSBjb25zdDsK
LQotI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgotICAgIFdlYk1lZGlhQ29uc3RyYWludHMoY29u
c3QgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6Ok1lZGlhQ29uc3RyYWludHM+Jik7Ci0gICAgV2Vi
TWVkaWFDb25zdHJhaW50cyhXZWJDb3JlOjpNZWRpYUNvbnN0cmFpbnRzKik7Ci0jZW5kaWYKLQot
cHJpdmF0ZToKLSAgICBXZWJQcml2YXRlUHRyPFdlYkNvcmU6Ok1lZGlhQ29uc3RyYWludHM+IG1f
cHJpdmF0ZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gV2ViTWVk
aWFDb25zdHJhaW50c19oCkluZGV4OiBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dl
Yk1lZGlhU3RyZWFtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1
YmxpYy9XZWJNZWRpYVN0cmVhbS5oCShyZXZpc2lvbiAxNDc3MTApCisrKyBTb3VyY2UvUGxhdGZv
cm0vY2hyb21pdW0vcHVibGljL1dlYk1lZGlhU3RyZWFtLmgJKHdvcmtpbmcgY29weSkKQEAgLTEs
MTA0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwot
ICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCi0gKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMKLSAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgV2ViTWVkaWFTdHJlYW1faAotI2Rl
ZmluZSBXZWJNZWRpYVN0cmVhbV9oCi0KLSNpbmNsdWRlICJXZWJDb21tb24uaCIKLSNpbmNsdWRl
ICJXZWJOb25Db3B5YWJsZS5oIgotI2luY2x1ZGUgIldlYlByaXZhdGVQdHIuaCIKLSNpbmNsdWRl
ICJXZWJWZWN0b3IuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgTWVkaWFTdHJlYW1E
ZXNjcmlwdG9yOwotfQotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotY2xhc3MgV2ViTWVkaWFTdHJl
YW1Tb3VyY2U7Ci1jbGFzcyBXZWJNZWRpYVN0cmVhbVRyYWNrOwotY2xhc3MgV2ViU3RyaW5nOwot
Ci1jbGFzcyBXZWJNZWRpYVN0cmVhbSB7Ci1wdWJsaWM6Ci0gICAgY2xhc3MgRXh0cmFEYXRhIHsK
LSAgICBwdWJsaWM6Ci0gICAgICAgIHZpcnR1YWwgfkV4dHJhRGF0YSgpIHsgfQotICAgIH07Ci0K
LSAgICBXZWJNZWRpYVN0cmVhbSgpIHsgfQotICAgIFdlYk1lZGlhU3RyZWFtKGNvbnN0IFdlYk1l
ZGlhU3RyZWFtJiBvdGhlcikgeyBhc3NpZ24ob3RoZXIpOyB9Ci0gICAgfldlYk1lZGlhU3RyZWFt
KCkgeyByZXNldCgpOyB9Ci0KLSAgICBXZWJNZWRpYVN0cmVhbSYgb3BlcmF0b3I9KGNvbnN0IFdl
Yk1lZGlhU3RyZWFtJiBvdGhlcikKLSAgICB7Ci0gICAgICAgIGFzc2lnbihvdGhlcik7Ci0gICAg
ICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0KLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgYXNzaWdu
KGNvbnN0IFdlYk1lZGlhU3RyZWFtJik7Ci0KLSAgICAvLyBERVBSRUNBVEVECi0gICAgV0VCS0lU
X0VYUE9SVCB2b2lkIGluaXRpYWxpemUoY29uc3QgV2ViU3RyaW5nJiBsYWJlbCwgY29uc3QgV2Vi
VmVjdG9yPFdlYk1lZGlhU3RyZWFtU291cmNlPiYgYXVkaW9Tb3VyY2VzLCBjb25zdCBXZWJWZWN0
b3I8V2ViTWVkaWFTdHJlYW1Tb3VyY2U+JiB2aWRlb1NvdXJjZXMpOwotCi0gICAgV0VCS0lUX0VY
UE9SVCB2b2lkIGluaXRpYWxpemUoY29uc3QgV2ViVmVjdG9yPFdlYk1lZGlhU3RyZWFtVHJhY2s+
JiBhdWRpb1RyYWNrcywgY29uc3QgV2ViVmVjdG9yPFdlYk1lZGlhU3RyZWFtVHJhY2s+JiB2aWRl
b1RyYWNrcyk7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIGluaXRpYWxpemUoY29uc3QgV2ViU3Ry
aW5nJiBsYWJlbCwgY29uc3QgV2ViVmVjdG9yPFdlYk1lZGlhU3RyZWFtVHJhY2s+JiBhdWRpb1Ry
YWNrcywgY29uc3QgV2ViVmVjdG9yPFdlYk1lZGlhU3RyZWFtVHJhY2s+JiB2aWRlb1RyYWNrcyk7
Ci0KLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVzZXQoKTsKLSAgICBib29sIGlzTnVsbCgpIGNv
bnN0IHsgcmV0dXJuIG1fcHJpdmF0ZS5pc051bGwoKTsgfQotCi0gICAgLy8gREVQUkVDQVRFRAot
ICAgIFdFQktJVF9FWFBPUlQgV2ViU3RyaW5nIGxhYmVsKCkgY29uc3Q7Ci0KLSAgICBXRUJLSVRf
RVhQT1JUIFdlYlN0cmluZyBpZCgpIGNvbnN0OwotCi0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIGF1
ZGlvVHJhY2tzKFdlYlZlY3RvcjxXZWJNZWRpYVN0cmVhbVRyYWNrPiYpIGNvbnN0OwotICAgIFdF
QktJVF9FWFBPUlQgdm9pZCB2aWRlb1RyYWNrcyhXZWJWZWN0b3I8V2ViTWVkaWFTdHJlYW1UcmFj
az4mKSBjb25zdDsKLQotICAgIC8vIERFUFJFQ0FURUQKLSAgICB2b2lkIGF1ZGlvU291cmNlcyhX
ZWJWZWN0b3I8V2ViTWVkaWFTdHJlYW1UcmFjaz4mIHRyYWNrcykgY29uc3QgeyBhdWRpb1RyYWNr
cyh0cmFja3MpOyB9Ci0gICAgdm9pZCB2aWRlb1NvdXJjZXMoV2ViVmVjdG9yPFdlYk1lZGlhU3Ry
ZWFtVHJhY2s+JiB0cmFja3MpIGNvbnN0IHsgdmlkZW9UcmFja3ModHJhY2tzKTsgfQotCi0gICAg
Ly8gRXh0cmEgZGF0YSBhc3NvY2lhdGVkIHdpdGggdGhpcyBXZWJNZWRpYVN0cmVhbS4KLSAgICAv
LyBJZiBub24tbnVsbCwgdGhlIGV4dHJhIGRhdGEgcG9pbnRlciB3aWxsIGJlIGRlbGV0ZWQgd2hl
biB0aGUgb2JqZWN0IGlzIGRlc3Ryb3llZC4KLSAgICAvLyBTZXR0aW5nIHRoZSBleHRyYSBkYXRh
IHBvaW50ZXIgd2lsbCBjYXVzZSBhbnkgZXhpc3Rpbmcgbm9uLW51bGwKLSAgICAvLyBleHRyYSBk
YXRhIHBvaW50ZXIgdG8gYmUgZGVsZXRlZC4KLSAgICBXRUJLSVRfRVhQT1JUIEV4dHJhRGF0YSog
ZXh0cmFEYXRhKCkgY29uc3Q7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldEV4dHJhRGF0YShF
eHRyYURhdGEqKTsKLQotI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgotICAgIFdlYk1lZGlhU3Ry
ZWFtKFdlYkNvcmU6Ok1lZGlhU3RyZWFtRGVzY3JpcHRvciopOwotICAgIFdlYk1lZGlhU3RyZWFt
KGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpNZWRpYVN0cmVhbURlc2NyaXB0b3I+Jik7
Ci0gICAgb3BlcmF0b3IgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6Ok1lZGlhU3RyZWFtRGVzY3Jp
cHRvcj4oKSBjb25zdDsKLSAgICBvcGVyYXRvciBXZWJDb3JlOjpNZWRpYVN0cmVhbURlc2NyaXB0
b3IqKCkgY29uc3Q7Ci0gICAgV2ViTWVkaWFTdHJlYW0mIG9wZXJhdG9yPShjb25zdCBXVEY6OlBh
c3NSZWZQdHI8V2ViQ29yZTo6TWVkaWFTdHJlYW1EZXNjcmlwdG9yPiYpOwotI2VuZGlmCi0KLXBy
aXZhdGU6Ci0gICAgV2ViUHJpdmF0ZVB0cjxXZWJDb3JlOjpNZWRpYVN0cmVhbURlc2NyaXB0b3I+
IG1fcHJpdmF0ZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gV2Vi
TWVkaWFTdHJlYW1faApJbmRleDogU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJN
ZWRpYVN0cmVhbUNlbnRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1
bS9wdWJsaWMvV2ViTWVkaWFTdHJlYW1DZW50ZXIuaAkocmV2aXNpb24gMTQ3NzEwKQorKysgU291
cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJNZWRpYVN0cmVhbUNlbnRlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDU3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQot
ICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdlYk1lZGlhU3RyZWFtQ2VudGVyX2gK
LSNkZWZpbmUgV2ViTWVkaWFTdHJlYW1DZW50ZXJfaAotCi0jaW5jbHVkZSAiV2ViU3RyaW5nLmgi
Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotY2xhc3MgV2ViTWVkaWFTdHJlYW07Ci1jbGFzcyBXZWJN
ZWRpYVN0cmVhbVNvdXJjZXNSZXF1ZXN0OwotY2xhc3MgV2ViTWVkaWFTdHJlYW1UcmFjazsKLQot
Y2xhc3MgV2ViTWVkaWFTdHJlYW1DZW50ZXIgewotcHVibGljOgotICAgIHZpcnR1YWwgfldlYk1l
ZGlhU3RyZWFtQ2VudGVyKCkgeyB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgcXVlcnlNZWRpYVN0cmVh
bVNvdXJjZXMoY29uc3QgV2ViTWVkaWFTdHJlYW1Tb3VyY2VzUmVxdWVzdCYpID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgZGlkRW5hYmxlTWVkaWFTdHJlYW1UcmFjayhjb25zdCBXZWJNZWRpYVN0cmVh
bSYsIGNvbnN0IFdlYk1lZGlhU3RyZWFtVHJhY2smKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRp
ZERpc2FibGVNZWRpYVN0cmVhbVRyYWNrKGNvbnN0IFdlYk1lZGlhU3RyZWFtJiwgY29uc3QgV2Vi
TWVkaWFTdHJlYW1UcmFjayYpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgZGlkQWRkTWVkaWFTdHJl
YW1UcmFjayhjb25zdCBXZWJNZWRpYVN0cmVhbSYsIGNvbnN0IFdlYk1lZGlhU3RyZWFtVHJhY2sm
KSB7IHJldHVybiBmYWxzZTsgfTsKLSAgICB2aXJ0dWFsIGJvb2wgZGlkUmVtb3ZlTWVkaWFTdHJl
YW1UcmFjayhjb25zdCBXZWJNZWRpYVN0cmVhbSYsIGNvbnN0IFdlYk1lZGlhU3RyZWFtVHJhY2sm
KSB7IHJldHVybiBmYWxzZTsgfTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkU3RvcExvY2FsTWVkaWFT
dHJlYW0oY29uc3QgV2ViTWVkaWFTdHJlYW0mKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRpZENy
ZWF0ZU1lZGlhU3RyZWFtKFdlYk1lZGlhU3RyZWFtJikgPSAwOwotfTsKLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBXZWJNZWRpYVN0cmVhbUNlbnRlcl9oCi0KSW5kZXg6IFNv
dXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTWVkaWFTdHJlYW1DZW50ZXJDbGllbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYk1lZGlh
U3RyZWFtQ2VudGVyQ2xpZW50LmgJKHJldmlzaW9uIDE0NzcxMCkKKysrIFNvdXJjZS9QbGF0Zm9y
bS9jaHJvbWl1bS9wdWJsaWMvV2ViTWVkaWFTdHJlYW1DZW50ZXJDbGllbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtMSw0OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
LSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBXZWJNZWRpYVN0cmVhbUNlbnRlckNsaWVudF9o
Ci0jZGVmaW5lIFdlYk1lZGlhU3RyZWFtQ2VudGVyQ2xpZW50X2gKLQotbmFtZXNwYWNlIFdlYktp
dCB7Ci1jbGFzcyBXZWJNZWRpYVN0cmVhbTsKLWNsYXNzIFdlYk1lZGlhU3RyZWFtVHJhY2s7Ci0K
LWNsYXNzIFdlYk1lZGlhU3RyZWFtQ2VudGVyQ2xpZW50IHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFs
IH5XZWJNZWRpYVN0cmVhbUNlbnRlckNsaWVudCgpIHsgfQotCi0gICAgdmlydHVhbCB2b2lkIHN0
b3BMb2NhbE1lZGlhU3RyZWFtKGNvbnN0IFdlYk1lZGlhU3RyZWFtJikgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCBhZGRNZWRpYVN0cmVhbVRyYWNrKGNvbnN0IFdlYk1lZGlhU3RyZWFtJiwgY29uc3Qg
V2ViTWVkaWFTdHJlYW1UcmFjayYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlTWVkaWFT
dHJlYW1UcmFjayhjb25zdCBXZWJNZWRpYVN0cmVhbSYsIGNvbnN0IFdlYk1lZGlhU3RyZWFtVHJh
Y2smKSA9IDA7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIFdlYk1l
ZGlhU3RyZWFtQ2VudGVyQ2xpZW50X2gKSW5kZXg6IFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9w
dWJsaWMvV2ViTWVkaWFTdHJlYW1Tb3VyY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvUGxhdGZv
cm0vY2hyb21pdW0vcHVibGljL1dlYk1lZGlhU3RyZWFtU291cmNlLmgJKHJldmlzaW9uIDE0Nzcx
MCkKKysrIFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTWVkaWFTdHJlYW1Tb3Vy
Y2UuaAkod29ya2luZyBjb3B5KQpAQCAtMSwxMTggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0g
KiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAot
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgV2ViTWVkaWFTdHJl
YW1Tb3VyY2VfaAotI2RlZmluZSBXZWJNZWRpYVN0cmVhbVNvdXJjZV9oCi0KLSNpbmNsdWRlICJX
ZWJDb21tb24uaCIKLSNpbmNsdWRlICJXZWJOb25Db3B5YWJsZS5oIgotI2luY2x1ZGUgIldlYlBy
aXZhdGVQdHIuaCIKLSNpbmNsdWRlICJXZWJWZWN0b3IuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotY2xhc3MgTWVkaWFTdHJlYW1Tb3VyY2U7Ci19Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotY2xh
c3MgV2ViQXVkaW9EZXN0aW5hdGlvbkNvbnN1bWVyOwotY2xhc3MgV2ViU3RyaW5nOwotCi1jbGFz
cyBXZWJNZWRpYVN0cmVhbVNvdXJjZSB7Ci1wdWJsaWM6Ci0gICAgY2xhc3MgRXh0cmFEYXRhIHsK
LSAgICBwdWJsaWM6Ci0gICAgICAgIHZpcnR1YWwgfkV4dHJhRGF0YSgpIHsgfQotICAgIH07Ci0K
LSAgICBlbnVtIFR5cGUgewotICAgICAgICBUeXBlQXVkaW8sCi0gICAgICAgIFR5cGVWaWRlbwot
ICAgIH07Ci0KLSAgICBlbnVtIFJlYWR5U3RhdGUgewotICAgICAgICBSZWFkeVN0YXRlTGl2ZSA9
IDAsCi0gICAgICAgIFJlYWR5U3RhdGVNdXRlZCA9IDEsCi0gICAgICAgIFJlYWR5U3RhdGVFbmRl
ZCA9IDIKLSAgICB9OwotCi0gICAgV2ViTWVkaWFTdHJlYW1Tb3VyY2UoKSB7IH0KLSAgICBXZWJN
ZWRpYVN0cmVhbVNvdXJjZShjb25zdCBXZWJNZWRpYVN0cmVhbVNvdXJjZSYgb3RoZXIpIHsgYXNz
aWduKG90aGVyKTsgfQotICAgIH5XZWJNZWRpYVN0cmVhbVNvdXJjZSgpIHsgcmVzZXQoKTsgfQot
Ci0gICAgV2ViTWVkaWFTdHJlYW1Tb3VyY2UmIG9wZXJhdG9yPShjb25zdCBXZWJNZWRpYVN0cmVh
bVNvdXJjZSYgb3RoZXIpCi0gICAgewotICAgICAgICBhc3NpZ24ob3RoZXIpOwotICAgICAgICBy
ZXR1cm4gKnRoaXM7Ci0gICAgfQotCi0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIGFzc2lnbihjb25z
dCBXZWJNZWRpYVN0cmVhbVNvdXJjZSYpOwotCi0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIGluaXRp
YWxpemUoY29uc3QgV2ViU3RyaW5nJiBpZCwgVHlwZSwgY29uc3QgV2ViU3RyaW5nJiBuYW1lKTsK
LSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVzZXQoKTsKLSAgICBib29sIGlzTnVsbCgpIGNvbnN0
IHsgcmV0dXJuIG1fcHJpdmF0ZS5pc051bGwoKTsgfQotCi0gICAgV0VCS0lUX0VYUE9SVCBXZWJT
dHJpbmcgaWQoKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JUIFR5cGUgdHlwZSgpIGNvbnN0Owot
ICAgIFdFQktJVF9FWFBPUlQgV2ViU3RyaW5nIG5hbWUoKSBjb25zdDsKLQotICAgIFdFQktJVF9F
WFBPUlQgdm9pZCBzZXRSZWFkeVN0YXRlKFJlYWR5U3RhdGUpOwotICAgIFdFQktJVF9FWFBPUlQg
UmVhZHlTdGF0ZSByZWFkeVN0YXRlKCkgY29uc3Q7Ci0KLSAgICAvLyBFeHRyYSBkYXRhIGFzc29j
aWF0ZWQgd2l0aCB0aGlzIG9iamVjdC4KLSAgICAvLyBJZiBub24tbnVsbCwgdGhlIGV4dHJhIGRh
dGEgcG9pbnRlciB3aWxsIGJlIGRlbGV0ZWQgd2hlbiB0aGUgb2JqZWN0IGlzIGRlc3Ryb3llZC4K
LSAgICAvLyBTZXR0aW5nIHRoZSBleHRyYSBkYXRhIHBvaW50ZXIgd2lsbCBjYXVzZSBhbnkgZXhp
c3Rpbmcgbm9uLW51bGwKLSAgICAvLyBleHRyYSBkYXRhIHBvaW50ZXIgdG8gYmUgZGVsZXRlZC4K
LSAgICBXRUJLSVRfRVhQT1JUIEV4dHJhRGF0YSogZXh0cmFEYXRhKCkgY29uc3Q7Ci0gICAgV0VC
S0lUX0VYUE9SVCB2b2lkIHNldEV4dHJhRGF0YShFeHRyYURhdGEqKTsKLQotICAgIFdFQktJVF9F
WFBPUlQgV2ViU3RyaW5nIGRldmljZUlkKCkgY29uc3Q7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lk
IHNldERldmljZUlkKGNvbnN0IFdlYlN0cmluZyYpOwotCi0gICAgLy8gT25seSB1c2VkIGlmIGlm
IHRoaXMgaXMgYSBXZWJBdWRpbyBzb3VyY2UuCi0gICAgLy8gVGhlIFdlYkF1ZGlvRGVzdGluYXRp
b25Db25zdW1lciBpcyBub3Qgb3duZWQsIGFuZCBoYXMgdG8gYmUgZGlzcG9zZWQgb2Ygc2VwYXJh
dGVseQotICAgIC8vIGFmdGVyIGNhbGxpbmcgcmVtb3ZlQXVkaW9Db25zdW1lci4KLSAgICBXRUJL
SVRfRVhQT1JUIGJvb2wgcmVxdWlyZXNBdWRpb0NvbnN1bWVyKCkgY29uc3Q7Ci0gICAgV0VCS0lU
X0VYUE9SVCB2b2lkIGFkZEF1ZGlvQ29uc3VtZXIoV2ViQXVkaW9EZXN0aW5hdGlvbkNvbnN1bWVy
Kik7Ci0gICAgV0VCS0lUX0VYUE9SVCBib29sIHJlbW92ZUF1ZGlvQ29uc3VtZXIoV2ViQXVkaW9E
ZXN0aW5hdGlvbkNvbnN1bWVyKik7Ci0KLSNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KLSAgICBX
ZWJNZWRpYVN0cmVhbVNvdXJjZShjb25zdCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6TWVkaWFT
dHJlYW1Tb3VyY2U+Jik7Ci0gICAgV2ViTWVkaWFTdHJlYW1Tb3VyY2UmIG9wZXJhdG9yPShXZWJD
b3JlOjpNZWRpYVN0cmVhbVNvdXJjZSopOwotICAgIG9wZXJhdG9yIFdURjo6UGFzc1JlZlB0cjxX
ZWJDb3JlOjpNZWRpYVN0cmVhbVNvdXJjZT4oKSBjb25zdDsKLSAgICBvcGVyYXRvciBXZWJDb3Jl
OjpNZWRpYVN0cmVhbVNvdXJjZSooKSBjb25zdDsKLSNlbmRpZgotCi1wcml2YXRlOgotICAgIFdl
YlByaXZhdGVQdHI8V2ViQ29yZTo6TWVkaWFTdHJlYW1Tb3VyY2U+IG1fcHJpdmF0ZTsKLX07Ci0K
LX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gV2ViTWVkaWFTdHJlYW1Tb3VyY2Vf
aApJbmRleDogU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJNZWRpYVN0cmVhbVNv
dXJjZXNSZXF1ZXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1
YmxpYy9XZWJNZWRpYVN0cmVhbVNvdXJjZXNSZXF1ZXN0LmgJKHJldmlzaW9uIDE0NzcxMCkKKysr
IFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTWVkaWFTdHJlYW1Tb3VyY2VzUmVx
dWVzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDY4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgot
ICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
LSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdlYk1lZGlhU3Ry
ZWFtU291cmNlc1JlcXVlc3RfaAotI2RlZmluZSBXZWJNZWRpYVN0cmVhbVNvdXJjZXNSZXF1ZXN0
X2gKLQotI2luY2x1ZGUgIldlYkNvbW1vbi5oIgotI2luY2x1ZGUgIldlYk1lZGlhU3RyZWFtU291
cmNlLmgiCi0jaW5jbHVkZSAiV2ViUHJpdmF0ZVB0ci5oIgotI2luY2x1ZGUgIldlYlZlY3Rvci5o
IgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBNZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNs
aWVudDsKLX0KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIFdlYk1lZGlhU3RyZWFtU291
cmNlc1JlcXVlc3QgewotcHVibGljOgotICAgIFdlYk1lZGlhU3RyZWFtU291cmNlc1JlcXVlc3Qo
KSB7IH0KLSAgICB+V2ViTWVkaWFTdHJlYW1Tb3VyY2VzUmVxdWVzdCgpIHsgcmVzZXQoKTsgfQot
Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHJlc2V0KCk7Ci0gICAgYm9vbCBpc051bGwoKSBjb25z
dCB7IHJldHVybiBtX3ByaXZhdGUuaXNOdWxsKCk7IH0KLQotICAgIFdFQktJVF9FWFBPUlQgYm9v
bCBhdWRpbygpIGNvbnN0OwotICAgIFdFQktJVF9FWFBPUlQgYm9vbCB2aWRlbygpIGNvbnN0Owot
Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIGRpZENvbXBsZXRlUXVlcnkoY29uc3QgV2ViVmVjdG9y
PFdlYk1lZGlhU3RyZWFtU291cmNlPiYgYXVkaW9Tb3VyY2VzLCBjb25zdCBXZWJWZWN0b3I8V2Vi
TWVkaWFTdHJlYW1Tb3VyY2U+JiB2aWRlb1NvdXJjZXMpIGNvbnN0OwotCi0jaWYgV0VCS0lUX0lN
UExFTUVOVEFUSU9OCi0gICAgV2ViTWVkaWFTdHJlYW1Tb3VyY2VzUmVxdWVzdChjb25zdCBXVEY6
OlBhc3NSZWZQdHI8V2ViQ29yZTo6TWVkaWFTdHJlYW1Tb3VyY2VzUXVlcnlDbGllbnQ+Jik7Ci0j
ZW5kaWYKLQotcHJpdmF0ZToKLSAgICBXZWJQcml2YXRlUHRyPFdlYkNvcmU6Ok1lZGlhU3RyZWFt
U291cmNlc1F1ZXJ5Q2xpZW50PiBtX3ByaXZhdGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJL
aXQKLQotI2VuZGlmIC8vIFdlYk1lZGlhU3RyZWFtU291cmNlc1JlcXVlc3RfaApJbmRleDogU291
cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJNZWRpYVN0cmVhbVRyYWNrLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJNZWRpYVN0cmVhbVRy
YWNrLmgJKHJldmlzaW9uIDE0NzcxMCkKKysrIFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJs
aWMvV2ViTWVkaWFTdHJlYW1UcmFjay5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDgwICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0g
KiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OCi0gKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMK
LSAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpZm5kZWYgV2ViTWVkaWFTdHJlYW1UcmFja19oCi0jZGVmaW5lIFdl
Yk1lZGlhU3RyZWFtVHJhY2tfaAotCi0jaW5jbHVkZSAiV2ViQ29tbW9uLmgiCi0jaW5jbHVkZSAi
V2ViTm9uQ29weWFibGUuaCIKLSNpbmNsdWRlICJXZWJQcml2YXRlUHRyLmgiCi0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLWNsYXNzIE1lZGlhU3RyZWFtQ29tcG9uZW50OwotfQotCi1uYW1lc3BhY2Ug
V2ViS2l0IHsKLWNsYXNzIFdlYk1lZGlhU3RyZWFtOwotY2xhc3MgV2ViTWVkaWFTdHJlYW1Tb3Vy
Y2U7Ci1jbGFzcyBXZWJTdHJpbmc7Ci0KLWNsYXNzIFdlYk1lZGlhU3RyZWFtVHJhY2sgewotcHVi
bGljOgotICAgIFdlYk1lZGlhU3RyZWFtVHJhY2soKSB7IH0KLSAgICBXZWJNZWRpYVN0cmVhbVRy
YWNrKGNvbnN0IFdlYk1lZGlhU3RyZWFtVHJhY2smIG90aGVyKSB7IGFzc2lnbihvdGhlcik7IH0K
LSAgICB+V2ViTWVkaWFTdHJlYW1UcmFjaygpIHsgcmVzZXQoKTsgfQotCi0gICAgV2ViTWVkaWFT
dHJlYW1UcmFjayYgb3BlcmF0b3I9KGNvbnN0IFdlYk1lZGlhU3RyZWFtVHJhY2smIG90aGVyKQot
ICAgIHsKLSAgICAgICAgYXNzaWduKG90aGVyKTsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAg
IH0KLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgYXNzaWduKGNvbnN0IFdlYk1lZGlhU3RyZWFtVHJh
Y2smKTsKLQotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBpbml0aWFsaXplKGNvbnN0IFdlYk1lZGlh
U3RyZWFtU291cmNlJik7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIGluaXRpYWxpemUoY29uc3Qg
V2ViU3RyaW5nJiBpZCwgY29uc3QgV2ViTWVkaWFTdHJlYW1Tb3VyY2UmKTsKLQotICAgIFdFQktJ
VF9FWFBPUlQgdm9pZCByZXNldCgpOwotICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4g
bV9wcml2YXRlLmlzTnVsbCgpOyB9Ci0KLSAgICBXRUJLSVRfRVhQT1JUIFdlYlN0cmluZyBpZCgp
IGNvbnN0OwotCi0gICAgV0VCS0lUX0VYUE9SVCBXZWJNZWRpYVN0cmVhbSBzdHJlYW0oKSBjb25z
dDsKLSAgICBXRUJLSVRfRVhQT1JUIFdlYk1lZGlhU3RyZWFtU291cmNlIHNvdXJjZSgpIGNvbnN0
OwotICAgIFdFQktJVF9FWFBPUlQgYm9vbCBpc0VuYWJsZWQoKSBjb25zdDsKLQotI2lmIFdFQktJ
VF9JTVBMRU1FTlRBVElPTgotICAgIFdlYk1lZGlhU3RyZWFtVHJhY2soUGFzc1JlZlB0cjxXZWJD
b3JlOjpNZWRpYVN0cmVhbUNvbXBvbmVudD4pOwotICAgIFdlYk1lZGlhU3RyZWFtVHJhY2soV2Vi
Q29yZTo6TWVkaWFTdHJlYW1Db21wb25lbnQqKTsKLSAgICBXZWJNZWRpYVN0cmVhbVRyYWNrJiBv
cGVyYXRvcj0oV2ViQ29yZTo6TWVkaWFTdHJlYW1Db21wb25lbnQqKTsKLSAgICBvcGVyYXRvciBX
VEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6TWVkaWFTdHJlYW1Db21wb25lbnQ+KCkgY29uc3Q7Ci0g
ICAgb3BlcmF0b3IgV2ViQ29yZTo6TWVkaWFTdHJlYW1Db21wb25lbnQqKCkgY29uc3Q7Ci0jZW5k
aWYKLQotcHJpdmF0ZToKLSAgICBXZWJQcml2YXRlUHRyPFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ29t
cG9uZW50PiBtX3ByaXZhdGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlm
IC8vIFdlYk1lZGlhU3RyZWFtVHJhY2tfaApJbmRleDogU291cmNlL1BsYXRmb3JtL2Nocm9taXVt
L3B1YmxpYy9XZWJNZXNzYWdlUG9ydENoYW5uZWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvUGxh
dGZvcm0vY2hyb21pdW0vcHVibGljL1dlYk1lc3NhZ2VQb3J0Q2hhbm5lbC5oCShyZXZpc2lvbiAx
NDc3MTApCisrKyBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYk1lc3NhZ2VQb3J0
Q2hhbm5lbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYyICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9u
LgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICog
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdlYk1lc3Nh
Z2VQb3J0Q2hhbm5lbF9oCi0jZGVmaW5lIFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbF9oCi0KLSNpbmNs
dWRlICJXZWJDb21tb24uaCIKLSNpbmNsdWRlICJXZWJWZWN0b3IuaCIKLQotbmFtZXNwYWNlIFdl
YktpdCB7Ci0KLWNsYXNzIFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbENsaWVudDsKLWNsYXNzIFdlYlN0
cmluZzsKLQotdHlwZWRlZiBXZWJWZWN0b3I8Y2xhc3MgV2ViTWVzc2FnZVBvcnRDaGFubmVsKj4g
V2ViTWVzc2FnZVBvcnRDaGFubmVsQXJyYXk7Ci0KLS8vIFByb3ZpZGVzIGFuIGludGVyZmFjZSB0
byBhIE1lc3NhZ2UgUG9ydCBDaGFubmVsIGltcGxlbWVudGF0aW9uLiBUaGUgb2JqZWN0IG93bnMg
aXRzZWxmIGFuZAotLy8gaXMgc2lnbmFsbGVkIHRoYXQgaXRzIG5vdCBuZWVkZWQgYW55bW9yZSB3
aXRoIHRoZSBkZXN0cm95KCkgY2FsbC4KLWNsYXNzIFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbCB7Ci1w
dWJsaWM6Ci0gICAgdmlydHVhbCB2b2lkIHNldENsaWVudChXZWJNZXNzYWdlUG9ydENoYW5uZWxD
bGllbnQqKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRlc3Ryb3koKSA9IDA7Ci0gICAgLy8gV2Vi
S2l0IHZlcnNpb25zIG9mIFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Q2hhbm5lbC4KLSAgICB2aXJ0dWFs
IHZvaWQgZW50YW5nbGUoV2ViTWVzc2FnZVBvcnRDaGFubmVsKikgPSAwOwotICAgIC8vIENhbGxl
ZSByZWNlaXZlcyBvd25lcnNoaXAgb2YgdGhlIHBhc3NlZCB2ZWN0b3IuCi0gICAgdmlydHVhbCB2
b2lkIHBvc3RNZXNzYWdlKGNvbnN0IFdlYlN0cmluZyYsIFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbEFy
cmF5KikgPSAwOwotICAgIHZpcnR1YWwgYm9vbCB0cnlHZXRNZXNzYWdlKFdlYlN0cmluZyosIFdl
Yk1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5JikgPSAwOwotCi1wcm90ZWN0ZWQ6Ci0gICAgfldlYk1l
c3NhZ2VQb3J0Q2hhbm5lbCgpIHsgfQotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNl
bmRpZgpJbmRleDogU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJNZXNzYWdlUG9y
dENoYW5uZWxDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0v
cHVibGljL1dlYk1lc3NhZ2VQb3J0Q2hhbm5lbENsaWVudC5oCShyZXZpc2lvbiAxNDc3MTApCisr
KyBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYk1lc3NhZ2VQb3J0Q2hhbm5lbENs
aWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgot
ICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
LSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdlYk1lc3NhZ2VQ
b3J0Q2hhbm5lbENsaWVudF9oCi0jZGVmaW5lIFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbENsaWVudF9o
Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi0vLyBQcm92aWRlcyBhbiBpbnRlcmZhY2UgZm9yIHVz
ZXJzIG9mIFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbCB0byBiZSBub3RpZmllZAotLy8gd2hlbiBtZXNz
YWdlcyBhcmUgYXZhaWxhYmxlLgotY2xhc3MgV2ViTWVzc2FnZVBvcnRDaGFubmVsQ2xpZW50IHsK
LXB1YmxpYzoKLSAgICAvLyBBbGVydHMgdGhhdCBuZXcgbWVzc2FnZXMgaGF2ZSBhcnJpdmVkLCB3
aGljaCBhcmUgcmV0cmlldmVkIGJ5IGNhbGxpbmcKLSAgICAvLyBXZWJNZXNzYWdlUG9ydENoYW5u
ZWw6OnRyeUdldE1lc3NhZ2UuIE5vdGUgdGhhdCB0aGlzIG1heSBiZSBjYWxsZWQKLSAgICAvLyBv
biBhbnkgdGhyZWFkLgotICAgIHZpcnR1YWwgdm9pZCBtZXNzYWdlQXZhaWxhYmxlKCkgPSAwOwot
Ci1wcm90ZWN0ZWQ6Ci0gICAgfldlYk1lc3NhZ2VQb3J0Q2hhbm5lbENsaWVudCgpIHsgfQotfTsK
LQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZgpJbmRleDogU291cmNlL1BsYXRmb3Jt
L2Nocm9taXVtL3B1YmxpYy9XZWJNaW1lUmVnaXN0cnkuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
UGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYk1pbWVSZWdpc3RyeS5oCShyZXZpc2lvbiAxNDc3
MTApCisrKyBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYk1pbWVSZWdpc3RyeS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDcwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwot
ICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAot
ICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdlYk1pbWVSZWdpc3RyeV9o
Ci0jZGVmaW5lIFdlYk1pbWVSZWdpc3RyeV9oCi0KLSNpbmNsdWRlICJXZWJDb21tb24uaCIKLQot
bmFtZXNwYWNlIFdlYktpdCB7Ci1jbGFzcyBXZWJTdHJpbmc7Ci0KLWNsYXNzIFdlYk1pbWVSZWdp
c3RyeSB7Ci1wdWJsaWM6Ci0gICAgZW51bSBTdXBwb3J0c1R5cGUgeyBJc05vdFN1cHBvcnRlZCwg
SXNTdXBwb3J0ZWQsIE1heUJlU3VwcG9ydGVkIH07Ci0KLSAgICB2aXJ0dWFsIFN1cHBvcnRzVHlw
ZSBzdXBwb3J0c01JTUVUeXBlKGNvbnN0IFdlYktpdDo6V2ViU3RyaW5nJiBtaW1lVHlwZSkgPSAw
OwotICAgIHZpcnR1YWwgU3VwcG9ydHNUeXBlIHN1cHBvcnRzSW1hZ2VNSU1FVHlwZShjb25zdCBX
ZWJLaXQ6OldlYlN0cmluZyYgbWltZVR5cGUpID0gMDsKLSAgICB2aXJ0dWFsIFN1cHBvcnRzVHlw
ZSBzdXBwb3J0c0phdmFTY3JpcHRNSU1FVHlwZShjb25zdCBXZWJLaXQ6OldlYlN0cmluZyYgbWlt
ZVR5cGUpID0gMDsKLSAgICAvLyBGSVhNRSg4Mjk4Myk6IFJlbW92ZSB0aGlzIG1ldGhvZCBhbmQg
bWFrZSB0aGUgbmV4dCBvbmUgcHVyZS12aXJ0dWFsIGFmdGVyIGNvbW1pdHRpbmcgdGhlIENocm9t
aXVtIGNvZGUuCi0gICAgdmlydHVhbCBTdXBwb3J0c1R5cGUgc3VwcG9ydHNNZWRpYU1JTUVUeXBl
KGNvbnN0IFdlYktpdDo6V2ViU3RyaW5nJiBtaW1lVHlwZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViS2l0OjpXZWJTdHJpbmcmIGNvZGVj
cykgPSAwOwotICAgIHZpcnR1YWwgU3VwcG9ydHNUeXBlIHN1cHBvcnRzTWVkaWFNSU1FVHlwZShj
b25zdCBXZWJLaXQ6OldlYlN0cmluZyYgbWltZVR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYktpdDo6V2ViU3RyaW5nJiBjb2RlY3Ms
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdl
YktpdDo6V2ViU3RyaW5nJiBrZXlTeXN0ZW0pIHsKLSAgICAgICAgcmV0dXJuIHN1cHBvcnRzTWVk
aWFNSU1FVHlwZShtaW1lVHlwZSwgY29kZWNzKTsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIGJvb2wg
c3VwcG9ydHNNZWRpYVNvdXJjZU1JTUVUeXBlKGNvbnN0IFdlYktpdDo6V2ViU3RyaW5nJiBtaW1l
VHlwZSwgY29uc3QgV2ViS2l0OjpXZWJTdHJpbmcmIGNvZGVjcykgPSAwOwotCi0gICAgdmlydHVh
bCBTdXBwb3J0c1R5cGUgc3VwcG9ydHNOb25JbWFnZU1JTUVUeXBlKGNvbnN0IFdlYktpdDo6V2Vi
U3RyaW5nJiBtaW1lVHlwZSkgPSAwOwotCi0gICAgdmlydHVhbCBXZWJLaXQ6OldlYlN0cmluZyBt
aW1lVHlwZUZvckV4dGVuc2lvbihjb25zdCBXZWJLaXQ6OldlYlN0cmluZyYgZmlsZUV4dGVuc2lv
bikgPSAwOwotICAgIHZpcnR1YWwgV2ViS2l0OjpXZWJTdHJpbmcgd2VsbEtub3duTWltZVR5cGVG
b3JFeHRlbnNpb24oY29uc3QgV2ViS2l0OjpXZWJTdHJpbmcmIGZpbGVFeHRlbnNpb24pID0gMDsK
LSAgICB2aXJ0dWFsIFdlYktpdDo6V2ViU3RyaW5nIG1pbWVUeXBlRnJvbUZpbGUoY29uc3QgV2Vi
S2l0OjpXZWJTdHJpbmcmIGZpbGVQYXRoKSA9IDA7Ci0gICAgdmlydHVhbCBXZWJLaXQ6OldlYlN0
cmluZyBwcmVmZXJyZWRFeHRlbnNpb25Gb3JNSU1FVHlwZShjb25zdCBXZWJLaXQ6OldlYlN0cmlu
ZyYgbWltZVR5cGUpID0gMDsKLQotcHJvdGVjdGVkOgotICAgIH5XZWJNaW1lUmVnaXN0cnkoKSB7
IH0KLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYKSW5kZXg6IFNvdXJjZS9Q
bGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTm9uQ29weWFibGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYk5vbkNvcHlhYmxlLmgJKHJldmlzaW9u
IDE0NzcxMCkKKysrIFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTm9uQ29weWFi
bGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw0OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAq
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0g
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBXZWJOb25Db3B5YWJs
ZV9oCi0jZGVmaW5lIFdlYk5vbkNvcHlhYmxlX2gKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLS8v
IEEgYmFzZSBjbGFzcyB0byBleHRlbmQgZnJvbSBpZiB5b3UgZG8gbm90IHN1cHBvcnQgY29weWlu
Zy4KLWNsYXNzIFdlYk5vbkNvcHlhYmxlIHsKLXByb3RlY3RlZDoKLSAgICBXZWJOb25Db3B5YWJs
ZSgpIHsgfQotICAgIH5XZWJOb25Db3B5YWJsZSgpIHsgfQotCi1wcml2YXRlOgotICAgIFdlYk5v
bkNvcHlhYmxlKGNvbnN0IFdlYk5vbkNvcHlhYmxlJik7Ci0gICAgV2ViTm9uQ29weWFibGUmIG9w
ZXJhdG9yPShjb25zdCBXZWJOb25Db3B5YWJsZSYpOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0Ci0KLSNlbmRpZgpJbmRleDogU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJQ
bHVnaW5MaXN0QnVpbGRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1
bS9wdWJsaWMvV2ViUGx1Z2luTGlzdEJ1aWxkZXIuaAkocmV2aXNpb24gMTQ3NzEwKQorKysgU291
cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJQbHVnaW5MaXN0QnVpbGRlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDU0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQot
ICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdlYlBsdWdpbkxpc3RCdWlsZGVyX2gK
LSNkZWZpbmUgV2ViUGx1Z2luTGlzdEJ1aWxkZXJfaAotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQot
Y2xhc3MgV2ViU3RyaW5nOwotCi0vLyBBbiBpbnRlcmZhY2UgZm9yIGJ1aWxkaW5nIGEgbGlzdCBv
ZiBrbm93biBwbHVnaW5zLgotY2xhc3MgV2ViUGx1Z2luTGlzdEJ1aWxkZXIgewotcHVibGljOgot
ICAgIHZpcnR1YWwgdm9pZCBhZGRQbHVnaW4oCi0gICAgICAgIGNvbnN0IFdlYlN0cmluZyYgbmFt
ZSwgY29uc3QgV2ViU3RyaW5nJiBkZXNjcmlwdGlvbiwKLSAgICAgICAgY29uc3QgV2ViU3RyaW5n
JiBmaWxlTmFtZSkgPSAwOwotCi0gICAgdmlydHVhbCB2b2lkIGFkZE1lZGlhVHlwZVRvTGFzdFBs
dWdpbigKLSAgICAgICAgY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJTdHJpbmcmIGRl
c2NyaXB0aW9uKSA9IDA7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgYWRkRmlsZUV4dGVuc2lvblRvTGFz
dE1lZGlhVHlwZSgKLSAgICAgICAgY29uc3QgV2ViU3RyaW5nJiBmaWxlRXh0ZW5zaW9uKSA9IDA7
Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmCkluZGV4OiBTb3VyY2UvUGxh
dGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlBvaW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Bs
YXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJQb2ludC5oCShyZXZpc2lvbiAxNDc3MTApCisrKyBT
b3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlBvaW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTEsMTExICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
LSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
LSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
Ci0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdlYlBvaW50X2gKLSNkZWZpbmUgV2ViUG9pbnRfaAot
Ci0jaW5jbHVkZSAiV2ViQ29tbW9uLmgiCi0KLSNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KLSNp
bmNsdWRlICJJbnRQb2ludC5oIgotI2Vsc2UKLSNpbmNsdWRlIDx1aS9nZngvcG9pbnQuaD4KLSNl
bmRpZgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotc3RydWN0IFdlYlBvaW50IHsKLSAgICBpbnQg
eDsKLSAgICBpbnQgeTsKLQotICAgIFdlYlBvaW50KCkKLSAgICAgICAgOiB4KDApCi0gICAgICAg
ICwgeSgwKQotICAgIHsKLSAgICB9Ci0KLSAgICBXZWJQb2ludChpbnQgeCwgaW50IHkpCi0gICAg
ICAgIDogeCh4KQotICAgICAgICAsIHkoeSkKLSAgICB7Ci0gICAgfQotCi0jaWYgV0VCS0lUX0lN
UExFTUVOVEFUSU9OCi0gICAgV2ViUG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHApCi0g
ICAgICAgIDogeChwLngoKSkKLSAgICAgICAgLCB5KHAueSgpKQotICAgIHsKLSAgICB9Ci0KLSAg
ICBXZWJQb2ludCYgb3BlcmF0b3I9KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwKQotICAgIHsK
LSAgICAgICAgeCA9IHAueCgpOwotICAgICAgICB5ID0gcC55KCk7Ci0gICAgICAgIHJldHVybiAq
dGhpczsKLSAgICB9Ci0KLSAgICBvcGVyYXRvciBXZWJDb3JlOjpJbnRQb2ludCgpIGNvbnN0Ci0g
ICAgewotICAgICAgICByZXR1cm4gV2ViQ29yZTo6SW50UG9pbnQoeCwgeSk7Ci0gICAgfQotI2Vs
c2UKLSAgICBXZWJQb2ludChjb25zdCBnZng6OlBvaW50JiBwKQotICAgICAgICA6IHgocC54KCkp
Ci0gICAgICAgICwgeShwLnkoKSkKLSAgICB7Ci0gICAgfQotCi0gICAgV2ViUG9pbnQmIG9wZXJh
dG9yPShjb25zdCBnZng6OlBvaW50JiBwKQotICAgIHsKLSAgICAgICAgeCA9IHAueCgpOwotICAg
ICAgICB5ID0gcC55KCk7Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0KLSAgICBvcGVy
YXRvciBnZng6OlBvaW50KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBnZng6OlBvaW50
KHgsIHkpOwotICAgIH0KLSNlbmRpZgotfTsKLQotaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBXZWJQb2ludCYgYSwgY29uc3QgV2ViUG9pbnQmIGIpCi17Ci0gICAgcmV0dXJuIGEueCA9PSBi
LnggJiYgYS55ID09IGIueTsKLX0KLQotaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBXZWJQ
b2ludCYgYSwgY29uc3QgV2ViUG9pbnQmIGIpCi17Ci0gICAgcmV0dXJuICEoYSA9PSBiKTsKLX0K
LQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZgpJbmRleDogU291cmNlL1BsYXRmb3Jt
L2Nocm9taXVtL3B1YmxpYy9XZWJQcmVyZW5kZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvUGxh
dGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlByZXJlbmRlci5oCShyZXZpc2lvbiAxNDc3MTApCisr
KyBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlByZXJlbmRlci5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDk0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICog
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdlYlByZXJlbmRlcl9oCi0jZGVmaW5lIFdl
YlByZXJlbmRlcl9oCi0KLSNpbmNsdWRlICJXZWJDb21tb24uaCIKLSNpbmNsdWRlICJXZWJQcml2
YXRlUHRyLmgiCi0jaW5jbHVkZSAiV2ViUmVmZXJyZXJQb2xpY3kuaCIKLSNpbmNsdWRlICJXZWJT
dHJpbmcuaCIKLSNpbmNsdWRlICJXZWJVUkwuaCIKLQotI2lmIFdFQktJVF9JTVBMRU1FTlRBVElP
TgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Ci0jZW5kaWYKLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotY2xhc3MgUHJlcmVuZGVyOwotfQotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotY2xhc3Mg
V2ViUHJlcmVuZGVyIHsKLXB1YmxpYzoKLSAgICBjbGFzcyBFeHRyYURhdGEgewotICAgIHB1Ymxp
YzoKLSAgICAgICAgdmlydHVhbCB+RXh0cmFEYXRhKCkgeyB9Ci0gICAgfTsKLQotICAgIH5XZWJQ
cmVyZW5kZXIoKSB7IHJlc2V0KCk7IH0KLSAgICBXZWJQcmVyZW5kZXIoKSB7IH0KLSAgICBXZWJQ
cmVyZW5kZXIoY29uc3QgV2ViUHJlcmVuZGVyJiBvdGhlcikgeyBhc3NpZ24ob3RoZXIpOyB9Ci0g
ICAgV2ViUHJlcmVuZGVyJiBvcGVyYXRvcj0oY29uc3QgV2ViUHJlcmVuZGVyJiBvdGhlcikKLSAg
ICB7Ci0gICAgICAgIGFzc2lnbihvdGhlcik7Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9
Ci0KLSNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KLSAgICBleHBsaWNpdCBXZWJQcmVyZW5kZXIo
UGFzc1JlZlB0cjxXZWJDb3JlOjpQcmVyZW5kZXI+KTsKLQotICAgIGNvbnN0IFdlYkNvcmU6OlBy
ZXJlbmRlciogdG9QcmVyZW5kZXIoKSBjb25zdDsKLSNlbmRpZgotCi0gICAgV0VCS0lUX0VYUE9S
VCB2b2lkIHJlc2V0KCk7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIGFzc2lnbihjb25zdCBXZWJQ
cmVyZW5kZXImKTsKLSAgICBXRUJLSVRfRVhQT1JUIGJvb2wgaXNOdWxsKCkgY29uc3Q7Ci0KLSAg
ICBXRUJLSVRfRVhQT1JUIFdlYlVSTCB1cmwoKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JUIFdl
YlN0cmluZyByZWZlcnJlcigpIGNvbnN0OwotICAgIFdFQktJVF9FWFBPUlQgV2ViUmVmZXJyZXJQ
b2xpY3kgcmVmZXJyZXJQb2xpY3koKSBjb25zdDsKLQotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBz
ZXRFeHRyYURhdGEoRXh0cmFEYXRhKik7Ci0gICAgV0VCS0lUX0VYUE9SVCBjb25zdCBFeHRyYURh
dGEqIGV4dHJhRGF0YSgpIGNvbnN0OwotCi0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIGRpZFN0YXJ0
UHJlcmVuZGVyKCk7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIGRpZFN0b3BQcmVyZW5kZXIoKTsK
LSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgZGlkU2VuZExvYWRGb3JQcmVyZW5kZXIoKTsKLSAgICBX
RUJLSVRfRVhQT1JUIHZvaWQgZGlkU2VuZERPTUNvbnRlbnRMb2FkZWRGb3JQcmVyZW5kZXIoKTsK
LQotcHJpdmF0ZToKLSAgICBXZWJQcml2YXRlUHRyPFdlYkNvcmU6OlByZXJlbmRlcj4gbV9wcml2
YXRlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBXZWJQcmVyZW5k
ZXJfaApJbmRleDogU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJQcmVyZW5kZXJp
bmdTdXBwb3J0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1Ymxp
Yy9XZWJQcmVyZW5kZXJpbmdTdXBwb3J0LmgJKHJldmlzaW9uIDE0NzcxMCkKKysrIFNvdXJjZS9Q
bGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViUHJlcmVuZGVyaW5nU3VwcG9ydC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDY3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICog
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdlYlByZXJlbmRlcmluZ1N1cHBvcnRfaAot
I2RlZmluZSBXZWJQcmVyZW5kZXJpbmdTdXBwb3J0X2gKLQotI2luY2x1ZGUgIldlYkNvbW1vbi5o
IgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotY2xhc3MgV2ViUHJlcmVuZGVyOwotCi1jbGFzcyBX
ZWJQcmVyZW5kZXJpbmdTdXBwb3J0IHsKLXB1YmxpYzoKLSAgICBXRUJLSVRfRVhQT1JUIHN0YXRp
YyB2b2lkIGluaXRpYWxpemUoV2ViUHJlcmVuZGVyaW5nU3VwcG9ydCopOwotICAgIFdFQktJVF9F
WFBPUlQgc3RhdGljIHZvaWQgc2h1dGRvd24oKTsKLSAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyBX
ZWJQcmVyZW5kZXJpbmdTdXBwb3J0KiBjdXJyZW50KCk7Ci0KLSAgICAvLyBBIHByZXJlbmRlciBs
aW5rIGVsZW1lbnQgaXMgYWRkZWQgd2hlbiBpdCBpcyBpbnNlcnRlZCBpbnRvIGEgZG9jdW1lbnQu
Ci0gICAgdmlydHVhbCB2b2lkIGFkZChjb25zdCBXZWJQcmVyZW5kZXImKSA9IDA7Ci0KLSAgICAv
LyBBIHByZXJlbmRlciBpcyBjYW5jZWxlZCB3aGVuIGl0IGlzIHJlbW92ZWQgZnJvbSBhIGRvY3Vt
ZW50LgotICAgIHZpcnR1YWwgdm9pZCBjYW5jZWwoY29uc3QgV2ViUHJlcmVuZGVyJikgPSAwOwot
Ci0gICAgLy8gQSBwcmVyZW5kZXIgaXMgYWJhbmRvbmVkIHdoZW4gaXQncyBuYXZpZ2F0ZWQgYXdh
eSBmcm9tIG9yIHN1c3BlbmRlZCBpbiB0aGUgcGFnZSBjYWNoZS4gVGhpcwotICAgIC8vIGlzIGEg
d2Vha2VyIHNpZ25hbCB0aGFuIGNhbmNlbCgpLCBzaW5jZSB0aGUgbGF1bmNoZXIgaGFzbid0IGlu
ZGljYXRlZCB0aGF0IHRoZSBwcmVyZW5kZXIgaXNuJ3QKLSAgICAvLyB3YW50ZWQsIGFuZCB3ZSBt
YXkgZW5kIHVwIHVzaW5nIGl0IGFmdGVyLCBmb3IgaW5zdGFuY2UsIGEgc2hvcnQgcmVkaXJlY3Qg
Y2hhaW4uCi0gICAgdmlydHVhbCB2b2lkIGFiYW5kb24oY29uc3QgV2ViUHJlcmVuZGVyJikgPSAw
OwotCi1wcm90ZWN0ZWQ6Ci0gICAgV2ViUHJlcmVuZGVyaW5nU3VwcG9ydCgpIHsgfQotICAgIHZp
cnR1YWwgfldlYlByZXJlbmRlcmluZ1N1cHBvcnQoKSB7IH0KLQotcHJpdmF0ZToKLSAgICBzdGF0
aWMgV2ViUHJlcmVuZGVyaW5nU3VwcG9ydCogc19wbGF0Zm9ybTsKLX07Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYktpdAotCi0jZW5kaWYgLy8gV2ViUHJlcmVuZGVyaW5nU3VwcG9ydF9oCkluZGV4OiBT
b3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlByaXZhdGVPd25QdHIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlByaXZhdGVPd25QdHIu
aAkocmV2aXNpb24gMTQ3NzEwKQorKysgU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9X
ZWJQcml2YXRlT3duUHRyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNzUgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
QU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
Ci0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpZm5kZWYgV2ViUHJpdmF0ZU93blB0cl9oCi0jZGVmaW5lIFdlYlByaXZhdGVPd25QdHJfaAot
Ci0jaW5jbHVkZSAiV2ViQ29tbW9uLmgiCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi0vLyBUaGlz
IGNsYXNzIGlzIGFuIGltcGxlbWVudGF0aW9uIGRldGFpbCBvZiB0aGUgV2ViS2l0IEFQSS4gIEl0
IGV4aXN0cwotLy8gdG8gaGVscCBzaW1wbGlmeSB0aGUgaW1wbGVtZW50YXRpb24gb2YgV2ViS2l0
IGludGVyZmFjZXMgdGhhdCBtZXJlbHkKLS8vIHdyYXAgYSBwb2ludGVyIHRvIGEgV2ViQ29yZSBj
bGFzcy4gSXQncyBzaW1pbGFyIHRvIFdlYlByaXZhdGVQdHIsIGJ1dCBpdAotLy8gd3JhcHMgYSBu
YWtlZCBwb2ludGVyIHJhdGhlciB0aGFuIGEgcmVmZXJlbmNlIGNvdW50ZWQuCi0vLyBOb3RlOiB5
b3UgbXVzdCBjYWxsIHJlc2V0KDApIG9uIHRoZSBpbXBsZW1lbnRhdGlvbiBzaWRlIGluIG9yZGVy
IHRvIGRlbGV0ZQotLy8gdGhlIFdlYkNvcmUgcG9pbnRlci4KLXRlbXBsYXRlIDx0eXBlbmFtZSBU
PgotY2xhc3MgV2ViUHJpdmF0ZU93blB0ciB7Ci1wdWJsaWM6Ci0gICAgV2ViUHJpdmF0ZU93blB0
cigpIDogbV9wdHIoMCkge30KLSAgICB+V2ViUHJpdmF0ZU93blB0cigpIHsgV0VCS0lUX0FTU0VS
VCghbV9wdHIpOyB9Ci0KLSNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KLSAgICBleHBsaWNpdCBX
ZWJQcml2YXRlT3duUHRyKFQqIHB0cikKLSAgICAgICAgOiBtX3B0cihwdHIpCi0gICAgewotICAg
IH0KLQotICAgIHZvaWQgcmVzZXQoVCogcHRyKQotICAgIHsKLSAgICAgICAgZGVsZXRlIG1fcHRy
OwotICAgICAgICBtX3B0ciA9IHB0cjsKLSAgICB9Ci0KLSAgICBUKiBnZXQoKSBjb25zdCB7IHJl
dHVybiBtX3B0cjsgfQotCi0gICAgVCogb3BlcmF0b3ItPigpIGNvbnN0Ci0gICAgewotICAgICAg
ICBXRUJLSVRfQVNTRVJUKG1fcHRyKTsKLSAgICAgICAgcmV0dXJuIG1fcHRyOwotICAgIH0KLSNl
bmRpZiAvLyBXRUJLSVRfSU1QTEVNRU5UQVRJT04KLQotcHJpdmF0ZToKLSAgICBUKiBtX3B0cjsK
LQotICAgIFdlYlByaXZhdGVPd25QdHIoY29uc3QgV2ViUHJpdmF0ZU93blB0ciYpOwotICAgIHZv
aWQgb3BlcmF0b3I9KGNvbnN0IFdlYlByaXZhdGVPd25QdHImKTsKLX07Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYktpdAotCi0jZW5kaWYKSW5kZXg6IFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJs
aWMvV2ViUHJpdmF0ZVB0ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1
bS9wdWJsaWMvV2ViUHJpdmF0ZVB0ci5oCShyZXZpc2lvbiAxNDc3MTApCisrKyBTb3VyY2UvUGxh
dGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlByaXZhdGVQdHIuaAkod29ya2luZyBjb3B5KQpAQCAt
MSwxMDcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICog
bWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICog
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAq
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNpZm5kZWYgV2ViUHJpdmF0ZVB0cl9oCi0jZGVmaW5lIFdlYlByaXZhdGVQ
dHJfaAotCi0jaW5jbHVkZSAiV2ViQ29tbW9uLmgiCi0KLSNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJ
T04KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotI2VuZGlmCi0KLW5hbWVzcGFjZSBXZWJL
aXQgewotCi0vLyBUaGlzIGNsYXNzIGlzIGFuIGltcGxlbWVudGF0aW9uIGRldGFpbCBvZiB0aGUg
V2ViS2l0IEFQSS4gIEl0IGV4aXN0cwotLy8gdG8gaGVscCBzaW1wbGlmeSB0aGUgaW1wbGVtZW50
YXRpb24gb2YgV2ViS2l0IGludGVyZmFjZXMgdGhhdCBtZXJlbHkKLS8vIHdyYXAgYSByZWZlcmVu
Y2UgY291bnRlZCBXZWJDb3JlIGNsYXNzLgotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1jbGFzcyBX
ZWJQcml2YXRlUHRyIHsKLXB1YmxpYzoKLSAgICBXZWJQcml2YXRlUHRyKCkgOiBtX3B0cigwKSB7
IH0KLSAgICB+V2ViUHJpdmF0ZVB0cigpIHsgV0VCS0lUX0FTU0VSVCghbV9wdHIpOyB9Ci0KLSAg
ICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuICFtX3B0cjsgfQotCi0jaWYgV0VCS0lUX0lN
UExFTUVOVEFUSU9OCi0gICAgV2ViUHJpdmF0ZVB0cihjb25zdCBQYXNzUmVmUHRyPFQ+JiBwcnAp
Ci0gICAgICAgIDogbV9wdHIocHJwLmxlYWtSZWYoKSkKLSAgICB7Ci0gICAgfQotCi0gICAgdm9p
ZCByZXNldCgpCi0gICAgewotICAgICAgICBhc3NpZ24oMCk7Ci0gICAgfQotCi0gICAgV2ViUHJp
dmF0ZVB0cjxUPiYgb3BlcmF0b3I9KGNvbnN0IFdlYlByaXZhdGVQdHI8VD4mIG90aGVyKQotICAg
IHsKLSAgICAgICAgVCogcCA9IG90aGVyLm1fcHRyOwotICAgICAgICBpZiAocCkKLSAgICAgICAg
ICAgIHAtPnJlZigpOwotICAgICAgICBhc3NpZ24ocCk7Ci0gICAgICAgIHJldHVybiAqdGhpczsK
LSAgICB9Ci0KLSAgICBXZWJQcml2YXRlUHRyPFQ+JiBvcGVyYXRvcj0oY29uc3QgUGFzc1JlZlB0
cjxUPiYgcHJwKQotICAgIHsKLSAgICAgICAgYXNzaWduKHBycC5sZWFrUmVmKCkpOwotICAgICAg
ICByZXR1cm4gKnRoaXM7Ci0gICAgfQotCi0gICAgVCogZ2V0KCkgY29uc3QKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBtX3B0cjsKLSAgICB9Ci0KLSAgICBUKiBvcGVyYXRvci0+KCkgY29uc3QKLSAg
ICB7Ci0gICAgICAgIEFTU0VSVChtX3B0cik7Ci0gICAgICAgIHJldHVybiBtX3B0cjsKLSAgICB9
Ci0jZW5kaWYKLQotcHJpdmF0ZToKLSNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KLSAgICB2b2lk
IGFzc2lnbihUKiBwKQotICAgIHsKLSAgICAgICAgLy8gcCBpcyBhbHJlYWR5IHJlZidkIGZvciB1
cyBieSB0aGUgY2FsbGVyCi0gICAgICAgIGlmIChtX3B0cikKLSAgICAgICAgICAgIG1fcHRyLT5k
ZXJlZigpOwotICAgICAgICBtX3B0ciA9IHA7Ci0gICAgfQotI2VuZGlmCi0KLSAgICBUKiBtX3B0
cjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYKSW5kZXg6IFNvdXJjZS9Q
bGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViUlRDQ29uZmlndXJhdGlvbi5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViUlRDQ29uZmlndXJhdGlvbi5o
CShyZXZpc2lvbiAxNDc3MTApCisrKyBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dl
YlJUQ0NvbmZpZ3VyYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMSwxMDYgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBk
aXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
Ci0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5k
ZWYgV2ViUlRDQ29uZmlndXJhdGlvbl9oCi0jZGVmaW5lIFdlYlJUQ0NvbmZpZ3VyYXRpb25faAot
Ci0jaW5jbHVkZSAiV2ViQ29tbW9uLmgiCi0jaW5jbHVkZSAiV2ViTm9uQ29weWFibGUuaCIKLSNp
bmNsdWRlICJXZWJQcml2YXRlUHRyLmgiCi0jaW5jbHVkZSAiV2ViVmVjdG9yLmgiCi0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLWNsYXNzIFJUQ0ljZVNlcnZlcjsKLWNsYXNzIFJUQ0NvbmZpZ3VyYXRp
b247Ci19Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotY2xhc3MgV2ViU3RyaW5nOwotY2xhc3MgV2Vi
VVJMOwotCi1jbGFzcyBXZWJSVENJQ0VTZXJ2ZXIgewotcHVibGljOgotICAgIFdlYlJUQ0lDRVNl
cnZlcigpIHsgfQotICAgIFdlYlJUQ0lDRVNlcnZlcihjb25zdCBXZWJSVENJQ0VTZXJ2ZXImIG90
aGVyKSB7IGFzc2lnbihvdGhlcik7IH0KLSAgICB+V2ViUlRDSUNFU2VydmVyKCkgeyByZXNldCgp
OyB9Ci0KLSAgICBXZWJSVENJQ0VTZXJ2ZXImIG9wZXJhdG9yPShjb25zdCBXZWJSVENJQ0VTZXJ2
ZXImIG90aGVyKQotICAgIHsKLSAgICAgICAgYXNzaWduKG90aGVyKTsKLSAgICAgICAgcmV0dXJu
ICp0aGlzOwotICAgIH0KLQotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBhc3NpZ24oY29uc3QgV2Vi
UlRDSUNFU2VydmVyJik7Ci0KLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVzZXQoKTsKLSAgICBi
b29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpdmF0ZS5pc051bGwoKTsgfQotCi0gICAg
V0VCS0lUX0VYUE9SVCBXZWJVUkwgdXJpKCkgY29uc3Q7Ci0gICAgV0VCS0lUX0VYUE9SVCBXZWJT
dHJpbmcgY3JlZGVudGlhbCgpIGNvbnN0OwotCi0jaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCi0g
ICAgV2ViUlRDSUNFU2VydmVyKGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpSVENJY2VT
ZXJ2ZXI+Jik7Ci0jZW5kaWYKLQotcHJpdmF0ZToKLSAgICBXZWJQcml2YXRlUHRyPFdlYkNvcmU6
OlJUQ0ljZVNlcnZlcj4gbV9wcml2YXRlOwotfTsKLQotY2xhc3MgV2ViUlRDQ29uZmlndXJhdGlv
biB7Ci1wdWJsaWM6Ci0gICAgV2ViUlRDQ29uZmlndXJhdGlvbigpIHsgfQotICAgIFdlYlJUQ0Nv
bmZpZ3VyYXRpb24oY29uc3QgV2ViUlRDQ29uZmlndXJhdGlvbiYgb3RoZXIpIHsgYXNzaWduKG90
aGVyKTsgfQotICAgIH5XZWJSVENDb25maWd1cmF0aW9uKCkgeyByZXNldCgpOyB9Ci0KLSAgICBX
ZWJSVENDb25maWd1cmF0aW9uJiBvcGVyYXRvcj0oY29uc3QgV2ViUlRDQ29uZmlndXJhdGlvbiYg
b3RoZXIpCi0gICAgewotICAgICAgICBhc3NpZ24ob3RoZXIpOwotICAgICAgICByZXR1cm4gKnRo
aXM7Ci0gICAgfQotCi0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIGFzc2lnbihjb25zdCBXZWJSVEND
b25maWd1cmF0aW9uJik7Ci0KLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVzZXQoKTsKLSAgICBi
b29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpdmF0ZS5pc051bGwoKTsgfQotCi0gICAg
V0VCS0lUX0VYUE9SVCBzaXplX3QgbnVtYmVyT2ZTZXJ2ZXJzKCkgY29uc3Q7Ci0gICAgV0VCS0lU
X0VYUE9SVCBXZWJSVENJQ0VTZXJ2ZXIgc2VydmVyKHNpemVfdCBpbmRleCkgY29uc3Q7Ci0KLSNp
ZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KLSAgICBXZWJSVENDb25maWd1cmF0aW9uKGNvbnN0IFdU
Rjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpSVENDb25maWd1cmF0aW9uPiYpOwotI2VuZGlmCi0KLXBy
aXZhdGU6Ci0gICAgV2ViUHJpdmF0ZVB0cjxXZWJDb3JlOjpSVENDb25maWd1cmF0aW9uPiBtX3By
aXZhdGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIFdlYlJUQ0Nv
bmZpZ3VyYXRpb25faApJbmRleDogU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJS
VENEVE1GU2VuZGVySGFuZGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9QbGF0Zm9ybS9jaHJv
bWl1bS9wdWJsaWMvV2ViUlRDRFRNRlNlbmRlckhhbmRsZXIuaAkocmV2aXNpb24gMTQ3NzEwKQor
KysgU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJSVENEVE1GU2VuZGVySGFuZGxl
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQ5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEdPT0dMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
Ci0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgR09PR0xFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdlYlJUQ0RUTUZTZW5kZXJIYW5k
bGVyX2gKLSNkZWZpbmUgV2ViUlRDRFRNRlNlbmRlckhhbmRsZXJfaAotCi0jaW5jbHVkZSAiV2Vi
Q29tbW9uLmgiCi0jaW5jbHVkZSAiV2ViU3RyaW5nLmgiCi0KLW5hbWVzcGFjZSBXZWJLaXQgewot
Y2xhc3MgV2ViUlRDRFRNRlNlbmRlckhhbmRsZXJDbGllbnQ7Ci0KLWNsYXNzIFdlYlJUQ0RUTUZT
ZW5kZXJIYW5kbGVyIHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIH5XZWJSVENEVE1GU2VuZGVySGFu
ZGxlcigpIHsgfQotCi0gICAgdmlydHVhbCB2b2lkIHNldENsaWVudChXZWJSVENEVE1GU2VuZGVy
SGFuZGxlckNsaWVudCopID0gMDsKLQotICAgIHZpcnR1YWwgV2ViU3RyaW5nIGN1cnJlbnRUb25l
QnVmZmVyKCkgPSAwOwotCi0gICAgdmlydHVhbCBib29sIGNhbkluc2VydERUTUYoKSA9IDA7Ci0g
ICAgdmlydHVhbCBib29sIGluc2VydERUTUYoY29uc3QgV2ViU3RyaW5nJiB0b25lcywgbG9uZyBk
dXJhdGlvbiwgbG9uZyBpbnRlclRvbmVHYXApID0gMDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdl
YktpdAotCi0jZW5kaWYgLy8gV2ViUlRDRFRNRlNlbmRlckhhbmRsZXJfaApJbmRleDogU291cmNl
L1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJSVENEVE1GU2VuZGVySGFuZGxlckNsaWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViUlRDRFRN
RlNlbmRlckhhbmRsZXJDbGllbnQuaAkocmV2aXNpb24gMTQ3NzEwKQorKysgU291cmNlL1BsYXRm
b3JtL2Nocm9taXVtL3B1YmxpYy9XZWJSVENEVE1GU2VuZGVySGFuZGxlckNsaWVudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDQyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEdPT0dMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgR09PR0xFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdlYlJUQ0RUTUZTZW5kZXJIYW5kbGVyQ2xpZW50
X2gKLSNkZWZpbmUgV2ViUlRDRFRNRlNlbmRlckhhbmRsZXJDbGllbnRfaAotCi0jaW5jbHVkZSAi
V2ViQ29tbW9uLmgiCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1jbGFzcyBXZWJSVENEVE1GU2Vu
ZGVySGFuZGxlckNsaWVudCB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+V2ViUlRDRFRNRlNlbmRl
ckhhbmRsZXJDbGllbnQoKSB7IH0KLQotICAgIHZpcnR1YWwgdm9pZCBkaWRQbGF5VG9uZShjb25z
dCBXZWJTdHJpbmcmIHRvbmUpIGNvbnN0ID0gMDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktp
dAotCi0jZW5kaWYgLy8gV2ViUlRDRFRNRlNlbmRlckhhbmRsZXJDbGllbnRfaApJbmRleDogU291
cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlJUQ0RhdGFD
aGFubmVsSGFuZGxlci5oCShyZXZpc2lvbiAxNDc3MTApCisrKyBTb3VyY2UvUGxhdGZvcm0vY2hy
b21pdW0vcHVibGljL1dlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5E
IEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCi0gKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMKLSAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgV2ViUlRDRGF0YUNoYW5uZWxI
YW5kbGVyX2gKLSNkZWZpbmUgV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyX2gKLQotI2luY2x1ZGUg
IldlYkNvbW1vbi5oIgotI2luY2x1ZGUgIldlYlByaXZhdGVQdHIuaCIKLSNpbmNsdWRlICJXZWJT
dHJpbmcuaCIKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci1jbGFzcyBXZWJSVENEYXRhQ2hhbm5lbEhh
bmRsZXJDbGllbnQ7Ci0KLWNsYXNzIFdlYlJUQ0RhdGFDaGFubmVsSGFuZGxlciB7Ci1wdWJsaWM6
Ci0gICAgdmlydHVhbCB+V2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyKCkgeyB9Ci0KLSAgICB2aXJ0
dWFsIHZvaWQgc2V0Q2xpZW50KFdlYlJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudCopID0gMDsK
LQotICAgIHZpcnR1YWwgV2ViU3RyaW5nIGxhYmVsKCkgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBp
c1JlbGlhYmxlKCkgPSAwOwotICAgIHZpcnR1YWwgdW5zaWduZWQgbG9uZyBidWZmZXJlZEFtb3Vu
dCgpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgc2VuZFN0cmluZ0RhdGEoY29uc3QgV2ViU3RyaW5n
JikgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBzZW5kUmF3RGF0YShjb25zdCBjaGFyKiwgc2l6ZV90
KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGNsb3NlKCkgPSAwOwotfTsKLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXJfaApJbmRleDog
U291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXJD
bGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dl
YlJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudC5oCShyZXZpc2lvbiAxNDc3MTApCisrKyBTb3Vy
Y2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwot
ICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCi0gKiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKLSAqIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5k
ZWYgV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50X2gKLSNkZWZpbmUgV2ViUlRDRGF0YUNo
YW5uZWxIYW5kbGVyQ2xpZW50X2gKLQotI2luY2x1ZGUgIldlYkNvbW1vbi5oIgotI2luY2x1ZGUg
IldlYlByaXZhdGVQdHIuaCIKLSNpbmNsdWRlICJXZWJTdHJpbmcuaCIKLQotbmFtZXNwYWNlIFdl
YktpdCB7Ci0KLWNsYXNzIFdlYlJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudCB7Ci1wdWJsaWM6
Ci0gICAgZW51bSBSZWFkeVN0YXRlIHsKLSAgICAgICAgUmVhZHlTdGF0ZUNvbm5lY3RpbmcgPSAw
LAotICAgICAgICBSZWFkeVN0YXRlT3BlbiA9IDEsCi0gICAgICAgIFJlYWR5U3RhdGVDbG9zaW5n
ID0gMiwKLSAgICAgICAgUmVhZHlTdGF0ZUNsb3NlZCA9IDMsCi0gICAgfTsKLQotICAgIHZpcnR1
YWwgfldlYlJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudCgpIHsgfQotCi0gICAgdmlydHVhbCB2
b2lkIGRpZENoYW5nZVJlYWR5U3RhdGUoUmVhZHlTdGF0ZSkgY29uc3QgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCBkaWRSZWNlaXZlU3RyaW5nRGF0YShjb25zdCBXZWJTdHJpbmcmKSBjb25zdCA9IDA7
Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSYXdEYXRhKGNvbnN0IGNoYXIqLCBzaXplX3Qp
IGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkRGV0ZWN0RXJyb3IoKSBjb25zdCA9IDA7
Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIFdlYlJUQ0RhdGFDaGFu
bmVsSGFuZGxlckNsaWVudF9oCkluZGV4OiBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGlj
L1dlYlJUQ0lDRUNhbmRpZGF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9QbGF0Zm9ybS9jaHJv
bWl1bS9wdWJsaWMvV2ViUlRDSUNFQ2FuZGlkYXRlLmgJKHJldmlzaW9uIDE0NzcxMCkKKysrIFNv
dXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViUlRDSUNFQ2FuZGlkYXRlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTEsODAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0g
KiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgV2ViUlRDSUNFQ2FuZGlkYXRlX2gKLSNk
ZWZpbmUgV2ViUlRDSUNFQ2FuZGlkYXRlX2gKLQotI2luY2x1ZGUgIldlYkNvbW1vbi5oIgotI2lu
Y2x1ZGUgIldlYlByaXZhdGVQdHIuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgUlRD
SWNlQ2FuZGlkYXRlRGVzY3JpcHRvcjsKLX0KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNz
IFdlYlN0cmluZzsKLQotY2xhc3MgV2ViUlRDSUNFQ2FuZGlkYXRlIHsKLXB1YmxpYzoKLSAgICBX
ZWJSVENJQ0VDYW5kaWRhdGUoKSB7IH0KLSAgICBXZWJSVENJQ0VDYW5kaWRhdGUoY29uc3QgV2Vi
UlRDSUNFQ2FuZGlkYXRlJiBvdGhlcikgeyBhc3NpZ24ob3RoZXIpOyB9Ci0gICAgfldlYlJUQ0lD
RUNhbmRpZGF0ZSgpIHsgcmVzZXQoKTsgfQotCi0gICAgV2ViUlRDSUNFQ2FuZGlkYXRlJiBvcGVy
YXRvcj0oY29uc3QgV2ViUlRDSUNFQ2FuZGlkYXRlJiBvdGhlcikKLSAgICB7Ci0gICAgICAgIGFz
c2lnbihvdGhlcik7Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0KLSAgICBXRUJLSVRf
RVhQT1JUIHZvaWQgYXNzaWduKGNvbnN0IFdlYlJUQ0lDRUNhbmRpZGF0ZSYpOwotCi0gICAgV0VC
S0lUX0VYUE9SVCB2b2lkIGluaXRpYWxpemUoY29uc3QgV2ViU3RyaW5nJiBjYW5kaWRhdGUsIGNv
bnN0IFdlYlN0cmluZyYgc2RwTWlkLCB1bnNpZ25lZCBzaG9ydCBzZHBNTGluZUluZGV4KTsKLSAg
ICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVzZXQoKTsKLSAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsg
cmV0dXJuIG1fcHJpdmF0ZS5pc051bGwoKTsgfQotCi0gICAgV0VCS0lUX0VYUE9SVCBXZWJTdHJp
bmcgY2FuZGlkYXRlKCkgY29uc3Q7Ci0gICAgV0VCS0lUX0VYUE9SVCBXZWJTdHJpbmcgc2RwTWlk
KCkgY29uc3Q7Ci0gICAgV0VCS0lUX0VYUE9SVCB1bnNpZ25lZCBzaG9ydCBzZHBNTGluZUluZGV4
KCkgY29uc3Q7Ci0KLSNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KLSAgICBXZWJSVENJQ0VDYW5k
aWRhdGUoV2ViQ29yZTo6UlRDSWNlQ2FuZGlkYXRlRGVzY3JpcHRvciopOwotICAgIFdlYlJUQ0lD
RUNhbmRpZGF0ZShXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6UlRDSWNlQ2FuZGlkYXRlRGVzY3Jp
cHRvcj4pOwotCi0gICAgb3BlcmF0b3IgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OlJUQ0ljZUNh
bmRpZGF0ZURlc2NyaXB0b3I+KCkgY29uc3Q7Ci0jZW5kaWYKLQotcHJpdmF0ZToKLSAgICBXZWJQ
cml2YXRlUHRyPFdlYkNvcmU6OlJUQ0ljZUNhbmRpZGF0ZURlc2NyaXB0b3I+IG1fcHJpdmF0ZTsK
LX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gV2ViUlRDSUNFQ2FuZGlk
YXRlX2gKSW5kZXg6IFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViUlRDUGVlckNv
bm5lY3Rpb25IYW5kbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1BsYXRmb3JtL2Nocm9taXVt
L3B1YmxpYy9XZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaAkocmV2aXNpb24gMTQ3NzEwKQor
KysgU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJSVENQZWVyQ29ubmVjdGlvbkhh
bmRsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSw3MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4K
LSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
Ci0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0g
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBXZWJSVENQZWVy
Q29ubmVjdGlvbkhhbmRsZXJfaAotI2RlZmluZSBXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJf
aAotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLWNsYXNzIFdlYk1lZGlhQ29uc3RyYWludHM7Ci1jbGFz
cyBXZWJNZWRpYVN0cmVhbTsKLWNsYXNzIFdlYk1lZGlhU3RyZWFtVHJhY2s7Ci1jbGFzcyBXZWJS
VENDb25maWd1cmF0aW9uOwotY2xhc3MgV2ViUlRDRFRNRlNlbmRlckhhbmRsZXI7Ci1jbGFzcyBX
ZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXI7Ci1jbGFzcyBXZWJSVENJQ0VDYW5kaWRhdGU7Ci1jbGFz
cyBXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQ7Ci1jbGFzcyBXZWJSVENTZXNzaW9u
RGVzY3JpcHRpb247Ci1jbGFzcyBXZWJSVENTZXNzaW9uRGVzY3JpcHRpb25SZXF1ZXN0OwotY2xh
c3MgV2ViUlRDU3RhdHNSZXF1ZXN0OwotY2xhc3MgV2ViUlRDVm9pZFJlcXVlc3Q7Ci1jbGFzcyBX
ZWJTdHJpbmc7Ci0KLWNsYXNzIFdlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlciB7Ci1wdWJsaWM6
Ci0gICAgdmlydHVhbCB+V2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyKCkgeyB9Ci0KLSAgICB2
aXJ0dWFsIGJvb2wgaW5pdGlhbGl6ZShjb25zdCBXZWJSVENDb25maWd1cmF0aW9uJiwgY29uc3Qg
V2ViTWVkaWFDb25zdHJhaW50cyYpID0gMDsKLQotICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVPZmZl
cihjb25zdCBXZWJSVENTZXNzaW9uRGVzY3JpcHRpb25SZXF1ZXN0JiwgY29uc3QgV2ViTWVkaWFD
b25zdHJhaW50cyYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlQW5zd2VyKGNvbnN0IFdl
YlJUQ1Nlc3Npb25EZXNjcmlwdGlvblJlcXVlc3QmLCBjb25zdCBXZWJNZWRpYUNvbnN0cmFpbnRz
JikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzZXRMb2NhbERlc2NyaXB0aW9uKGNvbnN0IFdlYlJU
Q1ZvaWRSZXF1ZXN0JiwgY29uc3QgV2ViUlRDU2Vzc2lvbkRlc2NyaXB0aW9uJikgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCBzZXRSZW1vdGVEZXNjcmlwdGlvbihjb25zdCBXZWJSVENWb2lkUmVxdWVz
dCYsIGNvbnN0IFdlYlJUQ1Nlc3Npb25EZXNjcmlwdGlvbiYpID0gMDsKLSAgICB2aXJ0dWFsIFdl
YlJUQ1Nlc3Npb25EZXNjcmlwdGlvbiBsb2NhbERlc2NyaXB0aW9uKCkgPSAwOwotICAgIHZpcnR1
YWwgV2ViUlRDU2Vzc2lvbkRlc2NyaXB0aW9uIHJlbW90ZURlc2NyaXB0aW9uKCkgPSAwOwotICAg
IHZpcnR1YWwgYm9vbCB1cGRhdGVJQ0UoY29uc3QgV2ViUlRDQ29uZmlndXJhdGlvbiYsIGNvbnN0
IFdlYk1lZGlhQ29uc3RyYWludHMmKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIGFkZElDRUNhbmRp
ZGF0ZShjb25zdCBXZWJSVENJQ0VDYW5kaWRhdGUmKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIGFk
ZFN0cmVhbShjb25zdCBXZWJNZWRpYVN0cmVhbSYsIGNvbnN0IFdlYk1lZGlhQ29uc3RyYWludHMm
KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92ZVN0cmVhbShjb25zdCBXZWJNZWRpYVN0cmVh
bSYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0U3RhdHMoY29uc3QgV2ViUlRDU3RhdHNSZXF1
ZXN0JikgPSAwOwotICAgIHZpcnR1YWwgV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyKiBjcmVhdGVE
YXRhQ2hhbm5lbChjb25zdCBXZWJTdHJpbmcmIGxhYmVsLCBib29sIHJlbGlhYmxlKSA9IDA7Ci0g
ICAgdmlydHVhbCBXZWJSVENEVE1GU2VuZGVySGFuZGxlciogY3JlYXRlRFRNRlNlbmRlcihjb25z
dCBXZWJNZWRpYVN0cmVhbVRyYWNrJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzdG9wKCkgPSAw
OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBXZWJSVENQZWVyQ29u
bmVjdGlvbkhhbmRsZXJfaApJbmRleDogU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9X
ZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
UGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVu
dC5oCShyZXZpc2lvbiAxNDc3MTApCisrKyBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGlj
L1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDgzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1l
dDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaWZuZGVmIFdlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudF9oCi0j
ZGVmaW5lIFdlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudF9oCi0KLW5hbWVzcGFjZSBX
ZWJLaXQgewotY2xhc3MgV2ViTWVkaWFTdHJlYW07Ci1jbGFzcyBXZWJSVENEYXRhQ2hhbm5lbEhh
bmRsZXI7Ci1jbGFzcyBXZWJSVENJQ0VDYW5kaWRhdGU7Ci0KLWNsYXNzIFdlYlJUQ1BlZXJDb25u
ZWN0aW9uSGFuZGxlckNsaWVudCB7Ci1wdWJsaWM6Ci0gICAgZW51bSBTaWduYWxpbmdTdGF0ZSB7
Ci0gICAgICAgIFNpZ25hbGluZ1N0YXRlU3RhYmxlID0gMSwKLSAgICAgICAgU2lnbmFsaW5nU3Rh
dGVIYXZlTG9jYWxPZmZlciA9IDIsCi0gICAgICAgIFNpZ25hbGluZ1N0YXRlSGF2ZVJlbW90ZU9m
ZmVyID0gMywKLSAgICAgICAgU2lnbmFsaW5nU3RhdGVIYXZlTG9jYWxQckFuc3dlciA9IDQsCi0g
ICAgICAgIFNpZ25hbGluZ1N0YXRlSGF2ZVJlbW90ZVByQW5zd2VyID0gNSwKLSAgICAgICAgU2ln
bmFsaW5nU3RhdGVDbG9zZWQgPSA2LAotICAgIH07Ci0KLSAgICBlbnVtIElDRUNvbm5lY3Rpb25T
dGF0ZSB7Ci0gICAgICAgIElDRUNvbm5lY3Rpb25TdGF0ZU5ldyA9IDEsCi0gICAgICAgIElDRUNv
bm5lY3Rpb25TdGF0ZUNoZWNraW5nID0gMiwKLSAgICAgICAgSUNFQ29ubmVjdGlvblN0YXRlQ29u
bmVjdGVkID0gMywKLSAgICAgICAgSUNFQ29ubmVjdGlvblN0YXRlQ29tcGxldGVkID0gNCwKLSAg
ICAgICAgSUNFQ29ubmVjdGlvblN0YXRlRmFpbGVkID0gNSwKLSAgICAgICAgSUNFQ29ubmVjdGlv
blN0YXRlRGlzY29ubmVjdGVkID0gNiwKLSAgICAgICAgSUNFQ29ubmVjdGlvblN0YXRlQ2xvc2Vk
ID0gNywKLQotICAgICAgICAvLyBERVBSRUNBVEVECi0gICAgICAgIElDRUNvbm5lY3Rpb25TdGF0
ZVN0YXJ0aW5nID0gMSwKLSAgICB9OwotCi0gICAgZW51bSBJQ0VHYXRoZXJpbmdTdGF0ZSB7Ci0g
ICAgICAgIElDRUdhdGhlcmluZ1N0YXRlTmV3ID0gMSwKLSAgICAgICAgSUNFR2F0aGVyaW5nU3Rh
dGVHYXRoZXJpbmcgPSAyLAotICAgICAgICBJQ0VHYXRoZXJpbmdTdGF0ZUNvbXBsZXRlID0gMwot
ICAgIH07Ci0KLSAgICB2aXJ0dWFsIH5XZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQo
KSB7IH0KLQotICAgIHZpcnR1YWwgdm9pZCBuZWdvdGlhdGlvbk5lZWRlZCgpID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgZGlkR2VuZXJhdGVJQ0VDYW5kaWRhdGUoY29uc3QgV2ViUlRDSUNFQ2FuZGlk
YXRlJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VTaWduYWxpbmdTdGF0ZShTaWdu
YWxpbmdTdGF0ZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VJQ0VHYXRoZXJpbmdT
dGF0ZShJQ0VHYXRoZXJpbmdTdGF0ZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VJ
Q0VDb25uZWN0aW9uU3RhdGUoSUNFQ29ubmVjdGlvblN0YXRlKSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIGRpZEFkZFJlbW90ZVN0cmVhbShjb25zdCBXZWJNZWRpYVN0cmVhbSYpID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgZGlkUmVtb3ZlUmVtb3RlU3RyZWFtKGNvbnN0IFdlYk1lZGlhU3RyZWFtJikg
PSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRBZGRSZW1vdGVEYXRhQ2hhbm5lbChXZWJSVENEYXRh
Q2hhbm5lbEhhbmRsZXIqKSA9IDA7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2Vu
ZGlmIC8vIFdlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudF9oCkluZGV4OiBTb3VyY2Uv
UGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlJUQ1Nlc3Npb25EZXNjcmlwdGlvbi5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViUlRDU2Vzc2lvbkRl
c2NyaXB0aW9uLmgJKHJldmlzaW9uIDE0NzcxMCkKKysrIFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1
bS9wdWJsaWMvV2ViUlRDU2Vzc2lvbkRlc2NyaXB0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTEs
OTIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0
OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
Ci0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpZm5kZWYgV2ViUlRDU2Vzc2lvbkRlc2NyaXB0aW9uX2gKLSNkZWZpbmUgV2Vi
UlRDU2Vzc2lvbkRlc2NyaXB0aW9uX2gKLQotI2luY2x1ZGUgIldlYkNvbW1vbi5oIgotI2luY2x1
ZGUgIldlYk5vbkNvcHlhYmxlLmgiCi0jaW5jbHVkZSAiV2ViUHJpdmF0ZVB0ci5oIgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBSVENTZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlwdG9yOwot
fQotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLWNsYXNzIFdlYlN0cmluZzsKLQotLy8gIEluIG9yZGVy
IHRvIGVzdGFibGlzaCB0aGUgbWVkaWEgcGxhbmUsIFBlZXJDb25uZWN0aW9uIG5lZWRzIHNwZWNp
ZmljCi0vLyAgcGFyYW1ldGVycyB0byBpbmRpY2F0ZSB3aGF0IHRvIHRyYW5zbWl0IHRvIHRoZSBy
ZW1vdGUgc2lkZSwgYXMgd2VsbAotLy8gIGFzIGhvdyB0byBoYW5kbGUgdGhlIG1lZGlhIHRoYXQg
aXMgcmVjZWl2ZWQuIFRoZXNlIHBhcmFtZXRlcnMgYXJlCi0vLyAgZGV0ZXJtaW5lZCBieSB0aGUg
ZXhjaGFuZ2Ugb2Ygc2Vzc2lvbiBkZXNjcmlwdGlvbnMgaW4gb2ZmZXJzIGFuZAotLy8gIGFuc3dl
cnMsIGFuZCB0aGVyZSBhcmUgY2VydGFpbiBkZXRhaWxzIHRvIHRoaXMgcHJvY2VzcyB0aGF0IG11
c3QgYmUKLS8vICBoYW5kbGVkIGluIHRoZSBKU0VQIEFQSXMuCi0vLwotLy8gIFdoZXRoZXIgYSBz
ZXNzaW9uIGRlc2NyaXB0aW9uIHdhcyBzZW50IG9yIHJlY2VpdmVkIGFmZmVjdHMgdGhlCi0vLyAg
bWVhbmluZyBvZiB0aGF0IGRlc2NyaXB0aW9uLiBGb3IgZXhhbXBsZSwgdGhlIGxpc3Qgb2YgY29k
ZWNzIHNlbnQgdG8KLS8vICBhIHJlbW90ZSBwYXJ0eSBpbmRpY2F0ZXMgd2hhdCB0aGUgbG9jYWwg
c2lkZSBpcyB3aWxsaW5nIHRvIGRlY29kZSwKLS8vICBhbmQgd2hhdCB0aGUgcmVtb3RlIHBhcnR5
IHNob3VsZCBzZW5kLgotCi1jbGFzcyBXZWJSVENTZXNzaW9uRGVzY3JpcHRpb24gewotcHVibGlj
OgotICAgIFdlYlJUQ1Nlc3Npb25EZXNjcmlwdGlvbigpIHsgfQotICAgIFdlYlJUQ1Nlc3Npb25E
ZXNjcmlwdGlvbihjb25zdCBXZWJSVENTZXNzaW9uRGVzY3JpcHRpb24mIG90aGVyKSB7IGFzc2ln
bihvdGhlcik7IH0KLSAgICB+V2ViUlRDU2Vzc2lvbkRlc2NyaXB0aW9uKCkgeyByZXNldCgpOyB9
Ci0KLSAgICBXZWJSVENTZXNzaW9uRGVzY3JpcHRpb24mIG9wZXJhdG9yPShjb25zdCBXZWJSVENT
ZXNzaW9uRGVzY3JpcHRpb24mIG90aGVyKQotICAgIHsKLSAgICAgICAgYXNzaWduKG90aGVyKTsK
LSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBh
c3NpZ24oY29uc3QgV2ViUlRDU2Vzc2lvbkRlc2NyaXB0aW9uJik7Ci0KLSAgICBXRUJLSVRfRVhQ
T1JUIHZvaWQgaW5pdGlhbGl6ZShjb25zdCBXZWJTdHJpbmcmIHR5cGUsIGNvbnN0IFdlYlN0cmlu
ZyYgc2RwKTsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVzZXQoKTsKLSAgICBib29sIGlzTnVs
bCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpdmF0ZS5pc051bGwoKTsgfQotCi0gICAgV0VCS0lUX0VY
UE9SVCBXZWJTdHJpbmcgdHlwZSgpIGNvbnN0OwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRU
eXBlKGNvbnN0IFdlYlN0cmluZyYpOwotICAgIFdFQktJVF9FWFBPUlQgV2ViU3RyaW5nIHNkcCgp
IGNvbnN0OwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRTRFAoY29uc3QgV2ViU3RyaW5nJik7
Ci0KLSNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KLSAgICBXZWJSVENTZXNzaW9uRGVzY3JpcHRp
b24oY29uc3QgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OlJUQ1Nlc3Npb25EZXNjcmlwdGlvbkRl
c2NyaXB0b3I+Jik7Ci0KLSAgICBvcGVyYXRvciBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6UlRD
U2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvcj4oKSBjb25zdDsKLSNlbmRpZgotCi1wcml2YXRl
OgotICAgIFdlYlByaXZhdGVQdHI8V2ViQ29yZTo6UlRDU2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3Jp
cHRvcj4gbV9wcml2YXRlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAv
LyBXZWJSVENTZXNzaW9uRGVzY3JpcHRpb25faApJbmRleDogU291cmNlL1BsYXRmb3JtL2Nocm9t
aXVtL3B1YmxpYy9XZWJSVENTZXNzaW9uRGVzY3JpcHRpb25SZXF1ZXN0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJSVENTZXNzaW9uRGVzY3JpcHRp
b25SZXF1ZXN0LmgJKHJldmlzaW9uIDE0NzcxMCkKKysrIFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1
bS9wdWJsaWMvV2ViUlRDU2Vzc2lvbkRlc2NyaXB0aW9uUmVxdWVzdC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDg4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
LSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
LSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
Ci0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdlYlJUQ1Nlc3Npb25EZXNjcmlwdGlvblJlcXVlc3Rf
aAotI2RlZmluZSBXZWJSVENTZXNzaW9uRGVzY3JpcHRpb25SZXF1ZXN0X2gKLQotI2luY2x1ZGUg
IldlYkNvbW1vbi5oIgotI2luY2x1ZGUgIldlYk5vbkNvcHlhYmxlLmgiCi0jaW5jbHVkZSAiV2Vi
UHJpdmF0ZVB0ci5oIgotI2luY2x1ZGUgIldlYlN0cmluZy5oIgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci1jbGFzcyBSVENTZXNzaW9uRGVzY3JpcHRpb25SZXF1ZXN0OwotfQotCi1uYW1lc3BhY2Ug
V2ViS2l0IHsKLWNsYXNzIFdlYlJUQ1Nlc3Npb25EZXNjcmlwdGlvbjsKLQotY2xhc3MgV2ViUlRD
U2Vzc2lvbkRlc2NyaXB0aW9uUmVxdWVzdCB7Ci1wdWJsaWM6Ci0gICAgY2xhc3MgRXh0cmFEYXRh
IHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIHZpcnR1YWwgfkV4dHJhRGF0YSgpIHsgfQotICAgIH07
Ci0KLSAgICBXZWJSVENTZXNzaW9uRGVzY3JpcHRpb25SZXF1ZXN0KCkgeyB9Ci0gICAgV2ViUlRD
U2Vzc2lvbkRlc2NyaXB0aW9uUmVxdWVzdChjb25zdCBXZWJSVENTZXNzaW9uRGVzY3JpcHRpb25S
ZXF1ZXN0JiBvdGhlcikgeyBhc3NpZ24ob3RoZXIpOyB9Ci0gICAgfldlYlJUQ1Nlc3Npb25EZXNj
cmlwdGlvblJlcXVlc3QoKSB7IHJlc2V0KCk7IH0KLQotICAgIFdlYlJUQ1Nlc3Npb25EZXNjcmlw
dGlvblJlcXVlc3QmIG9wZXJhdG9yPShjb25zdCBXZWJSVENTZXNzaW9uRGVzY3JpcHRpb25SZXF1
ZXN0JiBvdGhlcikKLSAgICB7Ci0gICAgICAgIGFzc2lnbihvdGhlcik7Ci0gICAgICAgIHJldHVy
biAqdGhpczsKLSAgICB9Ci0KLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgYXNzaWduKGNvbnN0IFdl
YlJUQ1Nlc3Npb25EZXNjcmlwdGlvblJlcXVlc3QmKTsKLQotICAgIFdFQktJVF9FWFBPUlQgdm9p
ZCByZXNldCgpOwotICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gbV9wcml2YXRlLmlz
TnVsbCgpOyB9Ci0KLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVxdWVzdFN1Y2NlZWRlZChjb25z
dCBXZWJSVENTZXNzaW9uRGVzY3JpcHRpb24mKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JUIHZv
aWQgcmVxdWVzdEZhaWxlZChjb25zdCBXZWJTdHJpbmcmIGVycm9yKSBjb25zdDsKLQotICAgIC8v
IEV4dHJhIGRhdGEgYXNzb2NpYXRlZCB3aXRoIHRoaXMgb2JqZWN0LgotICAgIC8vIElmIG5vbi1u
dWxsLCB0aGUgZXh0cmEgZGF0YSBwb2ludGVyIHdpbGwgYmUgZGVsZXRlZCB3aGVuIHRoZSBvYmpl
Y3QgaXMgZGVzdHJveWVkLgotICAgIC8vIFNldHRpbmcgdGhlIGV4dHJhIGRhdGEgcG9pbnRlciB3
aWxsIGNhdXNlIGFueSBleGlzdGluZyBub24tbnVsbAotICAgIC8vIGV4dHJhIGRhdGEgcG9pbnRl
ciB0byBiZSBkZWxldGVkLgotICAgIFdFQktJVF9FWFBPUlQgRXh0cmFEYXRhKiBleHRyYURhdGEo
KSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0RXh0cmFEYXRhKEV4dHJhRGF0YSop
OwotCi0jaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCi0gICAgV2ViUlRDU2Vzc2lvbkRlc2NyaXB0
aW9uUmVxdWVzdChjb25zdCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6UlRDU2Vzc2lvbkRlc2Ny
aXB0aW9uUmVxdWVzdD4mKTsKLSNlbmRpZgotCi1wcml2YXRlOgotICAgIFdlYlByaXZhdGVQdHI8
V2ViQ29yZTo6UlRDU2Vzc2lvbkRlc2NyaXB0aW9uUmVxdWVzdD4gbV9wcml2YXRlOwotfTsKLQot
fSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBXZWJSVENTZXNzaW9uRGVzY3JpcHRp
b25SZXF1ZXN0X2gKSW5kZXg6IFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViUlRD
U3RhdHNSZXF1ZXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1
YmxpYy9XZWJSVENTdGF0c1JlcXVlc3QuaAkocmV2aXNpb24gMTQ3NzEwKQorKysgU291cmNlL1Bs
YXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJSVENTdGF0c1JlcXVlc3QuaAkod29ya2luZyBjb3B5
KQpAQCAtMSwxMDkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0g
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgV2ViUlRDU3RhdHNSZXF1ZXN0X2gKLSNkZWZpbmUg
V2ViUlRDU3RhdHNSZXF1ZXN0X2gKLQotI2luY2x1ZGUgIldlYkNvbW1vbi5oIgotI2luY2x1ZGUg
IldlYlByaXZhdGVQdHIuaCIKLSNpbmNsdWRlICJXZWJTdHJpbmcuaCIKLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotY2xhc3MgUlRDU3RhdHNSZXF1ZXN0OwotfQotCi1uYW1lc3BhY2UgV2ViS2l0IHsK
LQotY2xhc3MgV2ViTWVkaWFTdHJlYW1UcmFjazsKLWNsYXNzIFdlYk1lZGlhU3RyZWFtOwotY2xh
c3MgV2ViUlRDU3RhdHNSZXNwb25zZTsKLQotLy8gVGhlIFdlYlJUQ1N0YXRzUmVxdWVzdCBjbGFz
cyByZXByZXNlbnRzIGEgSmF2YVNjcmlwdCBjYWxsIG9uCi0vLyBSVENQZWVyQ29ubmVjdGlvbi5n
ZXRTdGF0cygpLiBUaGUgdXNlciBvZiB0aGlzIEFQSSB3aWxsIHVzZQotLy8gdGhlIGNhbGxzIG9u
IHRoaXMgY2xhc3MgYW5kIFdlYlJUQ1N0YXRzUmVzcG9uc2UgdG8gZmlsbCBpbiB0aGUKLS8vIGRh
dGEgdGhhdCB3aWxsIGJlIHJldHVybmVkIHZpYSBhIGNhbGxiYWNrIHRvIHRoZSB1c2VyIGluIGFu
Ci0vLyBSVENTdGF0c1Jlc3BvbnNlIHN0cnVjdHVyZS4KLS8vCi0vLyBUaGUgdHlwaWNhbCB1c2Fn
ZSBwYXR0ZXJuIGlzOgotLy8gV2ViUlRDU3RhdHNSZXF1ZXN0IHJlcXVlc3QgPSA8ZnJvbSBzb21l
d2hlcmU+Ci0vLyBXZWJSVENTdGF0c1Jlc3BvbnNlIHJlc3BvbnNlID0gcmVxdWVzdC5jcmVhdGVS
ZXNwb25zZSgpOwotLy8KLS8vIEZvciBlYWNoIGl0ZW0gb24gd2hpY2ggc3RhdGlzdGljcyBhcmUg
Z29pbmcgdG8gYmUgcmVwb3J0ZWQ6Ci0vLyAgIHNpemVfdCByZXBvcnRJbmRleCA9IHJlc3BvbnNl
LmFkZFJlcG9ydCgpOwotLy8gICBBZGQgbG9jYWwgaW5mb3JtYXRpb246Ci0vLyAgIHNpemVfdCBl
bGVtZW50SW5kZXggPSByZXNwb25zZS5hZGRFbGVtZW50KHJlcG9ydEluZGV4LCB0cnVlLCBkYXRl
Tm93KCkpOwotLy8gICBGb3IgZWFjaCBzdGF0aXN0aWMgYmVpbmcgcmVwb3J0ZWQgb246Ci0vLyAg
ICAgcmVzcG9uc2UuYWRkU3RhdGlzdGljKHJlcG9ydEluZGV4LCB0cnVlLCBlbGVtZW50SW5kZXgs
Ci0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIG9mIHN0YXRpc3RpYyIsICJzdGF0
aXN0aWMgdmFsdWUiKTsgCi0vLyAgIFJlbW90ZSBpbmZvcm1hdGlvbiAodHlwaWNhbGx5IFJUQ1At
ZGVyaXZlZCkgaXMgYWRkZWQgaW4gdGhlIHNhbWUgd2F5LgotLy8gV2hlbiBmaW5pc2hlZCBhZGRp
bmcgaW5mb3JtYXRpb246Ci0vLyByZXF1ZXN0LnJlcXVlc3RTdWNjZWVkZWQocmVzcG9uc2UpOwot
Ci1jbGFzcyBXZWJSVENTdGF0c1JlcXVlc3QgewotcHVibGljOgotICAgIFdlYlJUQ1N0YXRzUmVx
dWVzdCgpIHsgfQotICAgIFdlYlJUQ1N0YXRzUmVxdWVzdChjb25zdCBXZWJSVENTdGF0c1JlcXVl
c3QmIG90aGVyKSB7IGFzc2lnbihvdGhlcik7IH0KLSAgICB+V2ViUlRDU3RhdHNSZXF1ZXN0KCkg
eyByZXNldCgpOyB9Ci0KLSAgICBXZWJSVENTdGF0c1JlcXVlc3QmIG9wZXJhdG9yPShjb25zdCBX
ZWJSVENTdGF0c1JlcXVlc3QmIG90aGVyKQotICAgIHsKLSAgICAgICAgYXNzaWduKG90aGVyKTsK
LSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBh
c3NpZ24oY29uc3QgV2ViUlRDU3RhdHNSZXF1ZXN0Jik7Ci0KLSAgICBXRUJLSVRfRVhQT1JUIHZv
aWQgcmVzZXQoKTsKLQotICAgIC8vIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0cnVlIGlmIGEgc2Vs
ZWN0b3IgYXJndW1lbnQgd2FzIGdpdmVuIHRvIGdldFN0YXRzLgotICAgIFdFQktJVF9FWFBPUlQg
Ym9vbCBoYXNTZWxlY3RvcigpIGNvbnN0OwotCi0gICAgLy8gVGhlIHN0cmVhbSgpIGFuZCBjb21w
b25lbnQoKSBhY2Nlc3NvcnMgZ2l2ZSB0aGUgdHdvIHBpZWNlcyBvZiBpbmZvcm1hdGlvbgotICAg
IC8vIHJlcXVpcmVkIHRvIGxvb2sgdXAgYSBNZWRpYVN0cmVhbVRyYWNrIGltcGxlbWVudGF0aW9u
LgotICAgIC8vIEl0IGlzIG9ubHkgdXNlZnVsIHRvIGNhbGwgdGhlbSB3aGVuIGhhc1NlbGVjdG9y
KCkgcmV0dXJucyB0cnVlLgotICAgIFdFQktJVF9FWFBPUlQgY29uc3QgV2ViTWVkaWFTdHJlYW0g
c3RyZWFtKCkgY29uc3Q7Ci0KLSAgICBXRUJLSVRfRVhQT1JUIGNvbnN0IFdlYk1lZGlhU3RyZWFt
VHJhY2sgY29tcG9uZW50KCkgY29uc3Q7Ci0KLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVxdWVz
dFN1Y2NlZWRlZChjb25zdCBXZWJSVENTdGF0c1Jlc3BvbnNlJikgY29uc3Q7Ci0KLSAgICBXRUJL
SVRfRVhQT1JUIFdlYlJUQ1N0YXRzUmVzcG9uc2UgY3JlYXRlUmVzcG9uc2UoKSBjb25zdDsKLQot
I2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgotICAgIFdlYlJUQ1N0YXRzUmVxdWVzdChjb25zdCBX
VEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6UlRDU3RhdHNSZXF1ZXN0PiYpOwotI2VuZGlmCi0KLXBy
aXZhdGU6Ci0gICAgV2ViUHJpdmF0ZVB0cjxXZWJDb3JlOjpSVENTdGF0c1JlcXVlc3Q+IG1fcHJp
dmF0ZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gV2ViUlRDU3Rh
dHNSZXF1ZXN0X2gKSW5kZXg6IFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViUlRD
U3RhdHNSZXNwb25zZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9w
dWJsaWMvV2ViUlRDU3RhdHNSZXNwb25zZS5oCShyZXZpc2lvbiAxNDc3MTApCisrKyBTb3VyY2Uv
UGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlJUQ1N0YXRzUmVzcG9uc2UuaAkod29ya2luZyBj
b3B5KQpAQCAtMSw2OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgotICogQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTCi0gKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdlYlJUQ1N0YXRz
UmVzcG9uc2VfaAotI2RlZmluZSBXZWJSVENTdGF0c1Jlc3BvbnNlX2gKLQotI2luY2x1ZGUgIldl
YkNvbW1vbi5oIgotI2luY2x1ZGUgIldlYlByaXZhdGVQdHIuaCIKLSNpbmNsdWRlICJXZWJTdHJp
bmcuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgUlRDU3RhdHNSZXNwb25zZUJhc2U7
Ci19Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1jbGFzcyBXZWJSVENTdGF0c1Jlc3BvbnNlIHsK
LXB1YmxpYzoKLSAgICBXZWJSVENTdGF0c1Jlc3BvbnNlKGNvbnN0IFdlYlJUQ1N0YXRzUmVzcG9u
c2UmIG90aGVyKSB7IGFzc2lnbihvdGhlcik7IH0KLSAgICBXZWJSVENTdGF0c1Jlc3BvbnNlKCkg
eyB9Ci0gICAgfldlYlJUQ1N0YXRzUmVzcG9uc2UoKSB7IHJlc2V0KCk7IH0KLQotICAgIFdlYlJU
Q1N0YXRzUmVzcG9uc2UmIG9wZXJhdG9yPShjb25zdCBXZWJSVENTdGF0c1Jlc3BvbnNlJiBvdGhl
cikKLSAgICB7Ci0gICAgICAgIGFzc2lnbihvdGhlcik7Ci0gICAgICAgIHJldHVybiAqdGhpczsK
LSAgICB9Ci0KLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgYXNzaWduKGNvbnN0IFdlYlJUQ1N0YXRz
UmVzcG9uc2UmKTsKLQotICAgIFdFQktJVF9FWFBPUlQgdm9pZCByZXNldCgpOwotCi0gICAgV0VC
S0lUX0VYUE9SVCBzaXplX3QgYWRkUmVwb3J0KFdlYlN0cmluZyBpZCwgV2ViU3RyaW5nIHR5cGUs
IGRvdWJsZSB0aW1lc3RhbXApOwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBhZGRTdGF0aXN0aWMo
c2l6ZV90IHJlcG9ydCwgV2ViU3RyaW5nIG5hbWUsIFdlYlN0cmluZyB2YWx1ZSk7Ci0KLSNpZiBX
RUJLSVRfSU1QTEVNRU5UQVRJT04KLSAgICBXZWJSVENTdGF0c1Jlc3BvbnNlKGNvbnN0IFdURjo6
UGFzc1JlZlB0cjxXZWJDb3JlOjpSVENTdGF0c1Jlc3BvbnNlQmFzZT4mKTsKLQotICAgIG9wZXJh
dG9yIFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpSVENTdGF0c1Jlc3BvbnNlQmFzZT4oKSBjb25z
dDsKLSNlbmRpZgotCi1wcml2YXRlOgotICAgIFdlYlByaXZhdGVQdHI8V2ViQ29yZTo6UlRDU3Rh
dHNSZXNwb25zZUJhc2U+IG1fcHJpdmF0ZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAot
Ci0jZW5kaWYgLy8gV2ViUlRDU3RhdHNSZXNwb25zZV9oCkluZGV4OiBTb3VyY2UvUGxhdGZvcm0v
Y2hyb21pdW0vcHVibGljL1dlYlJUQ1ZvaWRSZXF1ZXN0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJSVENWb2lkUmVxdWVzdC5oCShyZXZpc2lvbiAx
NDc3MTApCisrKyBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlJUQ1ZvaWRSZXF1
ZXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsODcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0g
KiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAot
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgV2ViUlRDVm9pZFJl
cXVlc3RfaAotI2RlZmluZSBXZWJSVENWb2lkUmVxdWVzdF9oCi0KLSNpbmNsdWRlICJXZWJDb21t
b24uaCIKLSNpbmNsdWRlICJXZWJOb25Db3B5YWJsZS5oIgotI2luY2x1ZGUgIldlYlByaXZhdGVQ
dHIuaCIKLSNpbmNsdWRlICJXZWJTdHJpbmcuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotY2xh
c3MgUlRDVm9pZFJlcXVlc3Q7Ci19Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1jbGFzcyBXZWJS
VENWb2lkUmVxdWVzdCB7Ci1wdWJsaWM6Ci0gICAgY2xhc3MgRXh0cmFEYXRhIHsKLSAgICBwdWJs
aWM6Ci0gICAgICAgIHZpcnR1YWwgfkV4dHJhRGF0YSgpIHsgfQotICAgIH07Ci0KLSAgICBXZWJS
VENWb2lkUmVxdWVzdCgpIHsgfQotICAgIFdlYlJUQ1ZvaWRSZXF1ZXN0KGNvbnN0IFdlYlJUQ1Zv
aWRSZXF1ZXN0JiBvdGhlcikgeyBhc3NpZ24ob3RoZXIpOyB9Ci0gICAgfldlYlJUQ1ZvaWRSZXF1
ZXN0KCkgeyByZXNldCgpOyB9Ci0KLSAgICBXZWJSVENWb2lkUmVxdWVzdCYgb3BlcmF0b3I9KGNv
bnN0IFdlYlJUQ1ZvaWRSZXF1ZXN0JiBvdGhlcikKLSAgICB7Ci0gICAgICAgIGFzc2lnbihvdGhl
cik7Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0KLSAgICBXRUJLSVRfRVhQT1JUIHZv
aWQgYXNzaWduKGNvbnN0IFdlYlJUQ1ZvaWRSZXF1ZXN0Jik7Ci0KLSAgICBXRUJLSVRfRVhQT1JU
IHZvaWQgcmVzZXQoKTsKLSAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpdmF0
ZS5pc051bGwoKTsgfQotCi0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHJlcXVlc3RTdWNjZWVkZWQo
KSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVxdWVzdEZhaWxlZChjb25zdCBXZWJT
dHJpbmcmIGVycm9yKSBjb25zdDsKLQotICAgIC8vIEV4dHJhIGRhdGEgYXNzb2NpYXRlZCB3aXRo
IHRoaXMgb2JqZWN0LgotICAgIC8vIElmIG5vbi1udWxsLCB0aGUgZXh0cmEgZGF0YSBwb2ludGVy
IHdpbGwgYmUgZGVsZXRlZCB3aGVuIHRoZSBvYmplY3QgaXMgZGVzdHJveWVkLgotICAgIC8vIFNl
dHRpbmcgdGhlIGV4dHJhIGRhdGEgcG9pbnRlciB3aWxsIGNhdXNlIGFueSBleGlzdGluZyBub24t
bnVsbAotICAgIC8vIGV4dHJhIGRhdGEgcG9pbnRlciB0byBiZSBkZWxldGVkLgotICAgIFdFQktJ
VF9FWFBPUlQgRXh0cmFEYXRhKiBleHRyYURhdGEoKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JU
IHZvaWQgc2V0RXh0cmFEYXRhKEV4dHJhRGF0YSopOwotCi0jaWYgV0VCS0lUX0lNUExFTUVOVEFU
SU9OCi0gICAgV2ViUlRDVm9pZFJlcXVlc3QoY29uc3QgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6
OlJUQ1ZvaWRSZXF1ZXN0PiYpOwotI2VuZGlmCi0KLXByaXZhdGU6Ci0gICAgV2ViUHJpdmF0ZVB0
cjxXZWJDb3JlOjpSVENWb2lkUmVxdWVzdD4gbV9wcml2YXRlOwotfTsKLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBXZWJSVENWb2lkUmVxdWVzdF9oCkluZGV4OiBTb3VyY2Uv
UGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlJlY3QuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
UGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlJlY3QuaAkocmV2aXNpb24gMTQ3NzEwKQorKysg
U291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJSZWN0LmgJKHdvcmtpbmcgY29weSkK
QEAgLTEsMTI4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
LSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
LSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
Ci0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdlYlJlY3RfaAotI2RlZmluZSBXZWJSZWN0X2gKLQot
I2luY2x1ZGUgIldlYkNvbW1vbi5oIgotCi0jaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCi0jaW5j
bHVkZSAiSW50UmVjdC5oIgotI2Vsc2UKLSNpbmNsdWRlIDxjbWF0aD4KLSNpbmNsdWRlIDx1aS9n
ZngvcmVjdC5oPgotI2VuZGlmCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1zdHJ1Y3QgV2ViUmVj
dCB7Ci0gICAgaW50IHg7Ci0gICAgaW50IHk7Ci0gICAgaW50IHdpZHRoOwotICAgIGludCBoZWln
aHQ7Ci0KLSAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiB3aWR0aCA8PSAwIHx8IGhl
aWdodCA8PSAwOyB9Ci0KLSAgICBXZWJSZWN0KCkKLSAgICAgICAgOiB4KDApCi0gICAgICAgICwg
eSgwKQotICAgICAgICAsIHdpZHRoKDApCi0gICAgICAgICwgaGVpZ2h0KDApCi0gICAgewotICAg
IH0KLQotICAgIFdlYlJlY3QoaW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCi0g
ICAgICAgIDogeCh4KQotICAgICAgICAsIHkoeSkKLSAgICAgICAgLCB3aWR0aCh3aWR0aCkKLSAg
ICAgICAgLCBoZWlnaHQoaGVpZ2h0KQotICAgIHsKLSAgICB9Ci0KLSNpZiBXRUJLSVRfSU1QTEVN
RU5UQVRJT04KLSAgICBXZWJSZWN0KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHIpCi0gICAgICAg
IDogeChyLngoKSkKLSAgICAgICAgLCB5KHIueSgpKQotICAgICAgICAsIHdpZHRoKHIud2lkdGgo
KSkKLSAgICAgICAgLCBoZWlnaHQoci5oZWlnaHQoKSkKLSAgICB7Ci0gICAgfQotCi0gICAgV2Vi
UmVjdCYgb3BlcmF0b3I9KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHIpCi0gICAgewotICAgICAg
ICB4ID0gci54KCk7Ci0gICAgICAgIHkgPSByLnkoKTsKLSAgICAgICAgd2lkdGggPSByLndpZHRo
KCk7Ci0gICAgICAgIGhlaWdodCA9IHIuaGVpZ2h0KCk7Ci0gICAgICAgIHJldHVybiAqdGhpczsK
LSAgICB9Ci0KLSAgICBvcGVyYXRvciBXZWJDb3JlOjpJbnRSZWN0KCkgY29uc3QKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBXZWJDb3JlOjpJbnRSZWN0KHgsIHksIHdpZHRoLCBoZWlnaHQpOwotICAg
IH0KLSNlbHNlCi0gICAgV2ViUmVjdChjb25zdCBnZng6OlJlY3QmIHIpCi0gICAgICAgIDogeChy
LngoKSkKLSAgICAgICAgLCB5KHIueSgpKQotICAgICAgICAsIHdpZHRoKHIud2lkdGgoKSkKLSAg
ICAgICAgLCBoZWlnaHQoci5oZWlnaHQoKSkKLSAgICB7Ci0gICAgfQotCi0gICAgV2ViUmVjdCYg
b3BlcmF0b3I9KGNvbnN0IGdmeDo6UmVjdCYgcikKLSAgICB7Ci0gICAgICAgIHggPSByLngoKTsK
LSAgICAgICAgeSA9IHIueSgpOwotICAgICAgICB3aWR0aCA9IHIud2lkdGgoKTsKLSAgICAgICAg
aGVpZ2h0ID0gci5oZWlnaHQoKTsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotICAg
IG9wZXJhdG9yIGdmeDo6UmVjdCgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gZ2Z4OjpS
ZWN0KHgsIHksIHN0ZDo6bWF4KDAsIHdpZHRoKSwgc3RkOjptYXgoMCwgaGVpZ2h0KSk7Ci0gICAg
fQotI2VuZGlmCi19OwotCi1pbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFdlYlJlY3QmIGEs
IGNvbnN0IFdlYlJlY3QmIGIpCi17Ci0gICAgcmV0dXJuIGEueCA9PSBiLnggJiYgYS55ID09IGIu
eSAmJiBhLndpZHRoID09IGIud2lkdGggJiYgYS5oZWlnaHQgPT0gYi5oZWlnaHQ7Ci19Ci0KLWlu
bGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgV2ViUmVjdCYgYSwgY29uc3QgV2ViUmVjdCYgYikK
LXsKLSAgICByZXR1cm4gIShhID09IGIpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQot
I2VuZGlmCkluZGV4OiBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlJlZmVycmVy
UG9saWN5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9X
ZWJSZWZlcnJlclBvbGljeS5oCShyZXZpc2lvbiAxNDc3MTApCisrKyBTb3VyY2UvUGxhdGZvcm0v
Y2hyb21pdW0vcHVibGljL1dlYlJlZmVycmVyUG9saWN5LmgJKHdvcmtpbmcgY29weSkKQEAgLTEs
NDUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0
OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
Ci0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpZm5kZWYgV2ViUmVmZXJyZXJQb2xpY3lfaAotI2RlZmluZSBXZWJSZWZlcnJl
clBvbGljeV9oCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1lbnVtIFdlYlJlZmVycmVyUG9saWN5
IHsKLSAgICBXZWJSZWZlcnJlclBvbGljeUFsd2F5cywKLSAgICBXZWJSZWZlcnJlclBvbGljeURl
ZmF1bHQsCi0gICAgV2ViUmVmZXJyZXJQb2xpY3lOZXZlciwKLSAgICBXZWJSZWZlcnJlclBvbGlj
eU9yaWdpbiwKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYKSW5kZXg6IFNv
dXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViUmVuZGVyaW5nU3RhdHMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlJlbmRlcmluZ1N0YXRz
LmgJKHJldmlzaW9uIDE0NzcxMCkKKysrIFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMv
V2ViUmVuZGVyaW5nU3RhdHMuaAkod29ya2luZyBjb3B5KQpAQCAtMSwzOSArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAq
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2lmbmRlZiBXZWJSZW5kZXJpbmdTdGF0c19oCi0jZGVmaW5lIFdlYlJlbmRlcmluZ1N0YXRz
X2gKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLXN0cnVjdCBXZWJSZW5kZXJpbmdTdGF0cyB7Ci0g
ICAgV2ViUmVuZGVyaW5nU3RhdHMoKQotICAgIHsKLSAgICB9Ci19OwotCi19IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKLQotI2VuZGlmIC8vIFdlYlJlbmRlcmluZ1N0YXRzX2gKSW5kZXg6IFNvdXJjZS9Q
bGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViU2NyZWVuSW5mby5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViU2NyZWVuSW5mby5oCShyZXZpc2lvbiAx
NDc3MTApCisrKyBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlNjcmVlbkluZm8u
aAkod29ya2luZyBjb3B5KQpAQCAtMSw3OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
LSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
LSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBXZWJTY3JlZW5JbmZvX2gK
LSNkZWZpbmUgV2ViU2NyZWVuSW5mb19oCi0KLSNpbmNsdWRlICJXZWJSZWN0LmgiCi0KLW5hbWVz
cGFjZSBXZWJLaXQgewotCi1zdHJ1Y3QgV2ViU2NyZWVuSW5mbyB7Ci0gICAgLy8gRGV2aWNlIHNj
YWxlIGZhY3Rvci4gU3BlY2lmaWVzIHRoZSByYXRpbyBiZXR3ZWVuIHBoeXNpY2FsIGFuZCBsb2dp
Y2FsCi0gICAgLy8gcGl4ZWxzLgotICAgIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yOwotCi0gICAg
Ly8gVGhlIHNjcmVlbiBkZXB0aCBpbiBiaXRzIHBlciBwaXhlbAotICAgIGludCBkZXB0aDsKLQot
ICAgIC8vIFRoZSBiaXRzIHBlciBjb2xvdXIgY29tcG9uZW50LiBUaGlzIGFzc3VtZXMgdGhhdCB0
aGUgY29sb3VycyBhcmUgYmFsYW5jZWQKLSAgICAvLyBlcXVhbGx5LgotICAgIGludCBkZXB0aFBl
ckNvbXBvbmVudDsKLQotICAgIC8vIFRoaXMgY2FuIGJlIHRydWUgZm9yIGJsYWNrIGFuZCB3aGl0
ZSBwcmludGVycwotICAgIGJvb2wgaXNNb25vY2hyb21lOwotCi0gICAgLy8gVGhpcyBpcyBzZXQg
ZnJvbSB0aGUgcmNNb25pdG9yIG1lbWJlciBvZiBNT05JVE9SSU5GT0VYLCB0byB3aGl0OgotICAg
IC8vICAgIkEgUkVDVCBzdHJ1Y3R1cmUgdGhhdCBzcGVjaWZpZXMgdGhlIGRpc3BsYXkgbW9uaXRv
ciByZWN0YW5nbGUsCi0gICAgLy8gICBleHByZXNzZWQgaW4gdmlydHVhbC1zY3JlZW4gY29vcmRp
bmF0ZXMuIE5vdGUgdGhhdCBpZiB0aGUgbW9uaXRvcgotICAgIC8vICAgaXMgbm90IHRoZSBwcmlt
YXJ5IGRpc3BsYXkgbW9uaXRvciwgc29tZSBvZiB0aGUgcmVjdGFuZ2xlJ3MKLSAgICAvLyAgIGNv
b3JkaW5hdGVzIG1heSBiZSBuZWdhdGl2ZSB2YWx1ZXMuIgotICAgIFdlYlJlY3QgcmVjdDsKLQot
ICAgIC8vIFRoaXMgaXMgc2V0IGZyb20gdGhlIHJjV29yayBtZW1iZXIgb2YgTU9OSVRPUklORk9F
WCwgdG8gd2hpdDoKLSAgICAvLyAgICJBIFJFQ1Qgc3RydWN0dXJlIHRoYXQgc3BlY2lmaWVzIHRo
ZSB3b3JrIGFyZWEgcmVjdGFuZ2xlIG9mIHRoZQotICAgIC8vICAgZGlzcGxheSBtb25pdG9yIHRo
YXQgY2FuIGJlIHVzZWQgYnkgYXBwbGljYXRpb25zLCBleHByZXNzZWQgaW4KLSAgICAvLyAgIHZp
cnR1YWwtc2NyZWVuIGNvb3JkaW5hdGVzLiBXaW5kb3dzIHVzZXMgdGhpcyByZWN0YW5nbGUgdG8K
LSAgICAvLyAgIG1heGltaXplIGFuIGFwcGxpY2F0aW9uIG9uIHRoZSBtb25pdG9yLiBUaGUgcmVz
dCBvZiB0aGUgYXJlYSBpbgotICAgIC8vICAgcmNNb25pdG9yIGNvbnRhaW5zIHN5c3RlbSB3aW5k
b3dzIHN1Y2ggYXMgdGhlIHRhc2sgYmFyIGFuZCBzaWRlCi0gICAgLy8gICBiYXJzLiBOb3RlIHRo
YXQgaWYgdGhlIG1vbml0b3IgaXMgbm90IHRoZSBwcmltYXJ5IGRpc3BsYXkgbW9uaXRvciwKLSAg
ICAvLyAgIHNvbWUgb2YgdGhlIHJlY3RhbmdsZSdzIGNvb3JkaW5hdGVzIG1heSBiZSBuZWdhdGl2
ZSB2YWx1ZXMiLgotICAgIFdlYlJlY3QgYXZhaWxhYmxlUmVjdDsKLQotICAgIFdlYlNjcmVlbklu
Zm8oKQotICAgICAgICA6IGRldmljZVNjYWxlRmFjdG9yKDEpCi0gICAgICAgICwgZGVwdGgoMCkK
LSAgICAgICAgLCBkZXB0aFBlckNvbXBvbmVudCgwKQotICAgICAgICAsIGlzTW9ub2Nocm9tZShm
YWxzZSkgeyB9Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmCkluZGV4OiBT
b3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlNjcm9sbGJhci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViU2Nyb2xsYmFyLmgJKHJldmlz
aW9uIDE0NzcxMCkKKysrIFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViU2Nyb2xs
YmFyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsMTE1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCi0gKiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKLSAqIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNp
Zm5kZWYgV2ViU2Nyb2xsYmFyX2gKLSNkZWZpbmUgV2ViU2Nyb2xsYmFyX2gKLQotI2luY2x1ZGUg
IldlYlBvaW50LmgiCi0jaW5jbHVkZSAiV2ViUmVjdC5oIgotI2luY2x1ZGUgIldlYlNpemUuaCIK
LSNpbmNsdWRlICJXZWJWZWN0b3IuaCIKLSNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KLSNpbmNs
dWRlIDx3dGYvUGFzc093blB0ci5oPgotI2VuZGlmCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLWNs
YXNzIFNjcm9sbGJhcjsKLX0KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLS8vIEEgY29uc3QgYWNj
ZXNzb3IgaW50ZXJmYWNlIGZvciBhIFdlYktpdCBzY3JvbGxiYXIKLWNsYXNzIFdlYlNjcm9sbGJh
ciB7Ci1wdWJsaWM6Ci0gICAgZW51bSBPcmllbnRhdGlvbiB7Ci0gICAgICAgIEhvcml6b250YWws
Ci0gICAgICAgIFZlcnRpY2FsCi0gICAgfTsKLQotICAgIGVudW0gU2Nyb2xsRGlyZWN0aW9uIHsK
LSAgICAgICAgU2Nyb2xsQmFja3dhcmQsCi0gICAgICAgIFNjcm9sbEZvcndhcmQKLSAgICB9Owot
Ci0gICAgZW51bSBTY3JvbGxHcmFudWxhcml0eSB7Ci0gICAgICAgIFNjcm9sbEJ5TGluZSwKLSAg
ICAgICAgU2Nyb2xsQnlQYWdlLAotICAgICAgICBTY3JvbGxCeURvY3VtZW50LAotICAgICAgICBT
Y3JvbGxCeVBpeGVsCi0gICAgfTsKLQotICAgIGVudW0gU2Nyb2xsYmFyQ29udHJvbFNpemUgewot
ICAgICAgICBSZWd1bGFyU2Nyb2xsYmFyLAotICAgICAgICBTbWFsbFNjcm9sbGJhcgotICAgIH07
Ci0KLSAgICBlbnVtIFNjcm9sbGJhclBhcnQgewotICAgICAgICBOb1BhcnQgPSAwLAotICAgICAg
ICBCYWNrQnV0dG9uU3RhcnRQYXJ0ID0gMSwKLSAgICAgICAgRm9yd2FyZEJ1dHRvblN0YXJ0UGFy
dCA9IDEgPDwgMSwKLSAgICAgICAgQmFja1RyYWNrUGFydCA9IDEgPDwgMiwKLSAgICAgICAgVGh1
bWJQYXJ0ID0gMSA8PCAzLAotICAgICAgICBGb3J3YXJkVHJhY2tQYXJ0ID0gMSA8PCA0LAotICAg
ICAgICBCYWNrQnV0dG9uRW5kUGFydCA9IDEgPDwgNSwKLSAgICAgICAgRm9yd2FyZEJ1dHRvbkVu
ZFBhcnQgPSAxIDw8IDYsCi0gICAgICAgIFNjcm9sbGJhckJHUGFydCA9IDEgPDwgNywKLSAgICAg
ICAgVHJhY2tCR1BhcnQgPSAxIDw8IDgsCi0gICAgICAgIEFsbFBhcnRzID0gMHhmZmZmZmZmZgot
ICAgIH07Ci0KLSAgICBlbnVtIFNjcm9sbGJhck92ZXJsYXlTdHlsZSB7Ci0gICAgICAgIFNjcm9s
bGJhck92ZXJsYXlTdHlsZURlZmF1bHQsCi0gICAgICAgIFNjcm9sbGJhck92ZXJsYXlTdHlsZURh
cmssCi0gICAgICAgIFNjcm9sbGJhck92ZXJsYXlTdHlsZUxpZ2h0Ci0gICAgfTsKLQotICAgIHZp
cnR1YWwgfldlYlNjcm9sbGJhcigpIHsgfQotCi0gICAgLy8gUmV0dXJuIHRydWUgaWYgdGhpcyBp
cyBhbiBvdmVybGF5IHNjcm9sbGJhci4KLSAgICB2aXJ0dWFsIGJvb2wgaXNPdmVybGF5KCkgY29u
c3QgPSAwOwotCi0gICAgLy8gR2V0cyB0aGUgY3VycmVudCB2YWx1ZSAoaS5lLiBwb3NpdGlvbiBp
bnNpZGUgdGhlIHJlZ2lvbikuCi0gICAgdmlydHVhbCBpbnQgdmFsdWUoKSBjb25zdCA9IDA7Ci0K
LSAgICB2aXJ0dWFsIFdlYlBvaW50IGxvY2F0aW9uKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwg
V2ViU2l6ZSBzaXplKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBlbmFibGVkKCkgY29u
c3QgPSAwOwotICAgIHZpcnR1YWwgaW50IG1heGltdW0oKSBjb25zdCA9IDA7Ci0gICAgdmlydHVh
bCBpbnQgdG90YWxTaXplKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBpc1Njcm9sbFZp
ZXdTY3JvbGxiYXIoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBib29sIGlzU2Nyb2xsYWJsZUFy
ZWFBY3RpdmUoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFRpY2ttYXJrcyhXZWJW
ZWN0b3I8V2ViUmVjdD4mIHRpY2ttYXJrcykgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgU2Nyb2xs
YmFyQ29udHJvbFNpemUgY29udHJvbFNpemUoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBTY3Jv
bGxiYXJQYXJ0IHByZXNzZWRQYXJ0KCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgU2Nyb2xsYmFy
UGFydCBob3ZlcmVkUGFydCgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIFNjcm9sbGJhck92ZXJs
YXlTdHlsZSBzY3JvbGxiYXJPdmVybGF5U3R5bGUoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBi
b29sIGlzQ3VzdG9tU2Nyb2xsYmFyKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgT3JpZW50YXRp
b24gb3JpZW50YXRpb24oKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBib29sIGlzQWxwaGFMb2Nr
ZWQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgdm9pZCBzZXRJc0FscGhh
TG9ja2VkKGJvb2wpIHsgfQotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZgpJ
bmRleDogU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJTY3JvbGxiYXJMYXllci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViU2Nyb2xs
YmFyTGF5ZXIuaAkocmV2aXNpb24gMTQ3NzEwKQorKysgU291cmNlL1BsYXRmb3JtL2Nocm9taXVt
L3B1YmxpYy9XZWJTY3JvbGxiYXJMYXllci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUwICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0g
KiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaWZuZGVmIFdlYlNjcm9sbGJhckxheWVyX2gKLSNkZWZpbmUgV2ViU2Nyb2xs
YmFyTGF5ZXJfaAotCi0jaW5jbHVkZSAiV2ViTGF5ZXIuaCIKLSNpbmNsdWRlICJXZWJTY3JvbGxi
YXJUaGVtZUdlb21ldHJ5LmgiCi0jaW5jbHVkZSAiV2ViU2Nyb2xsYmFyVGhlbWVQYWludGVyLmgi
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIFNjcm9sbGJhcjsKLX0KLQotbmFtZXNwYWNl
IFdlYktpdCB7Ci0KLWNsYXNzIFdlYlNjcm9sbGJhckxheWVyIHsKLXB1YmxpYzoKLSAgICB2aXJ0
dWFsIH5XZWJTY3JvbGxiYXJMYXllcigpIHsgfQotCi0gICAgdmlydHVhbCBXZWJMYXllciogbGF5
ZXIoKSA9IDA7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0U2Nyb2xsTGF5ZXIoV2ViTGF5ZXIqKSA9
IDA7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIFdlYlNjcm9sbGJh
ckxheWVyX2gKSW5kZXg6IFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViU2Nyb2xs
YmFyVGhlbWVHZW9tZXRyeS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1
bS9wdWJsaWMvV2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeS5oCShyZXZpc2lvbiAxNDc3MTApCisr
KyBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlNjcm9sbGJhclRoZW1lR2VvbWV0
cnkuaAkod29ya2luZyBjb3B5KQpAQCAtMSw2MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRS
SUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBXZWJT
Y3JvbGxiYXJUaGVtZUdlb21ldHJ5X2gKLSNkZWZpbmUgV2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRy
eV9oCi0KLSNpbmNsdWRlICJXZWJSZWN0LmgiCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1jbGFz
cyBXZWJTY3JvbGxiYXI7Ci0KLWNsYXNzIFdlYlNjcm9sbGJhclRoZW1lR2VvbWV0cnkgewotcHVi
bGljOgotICAgIHZpcnR1YWwgfldlYlNjcm9sbGJhclRoZW1lR2VvbWV0cnkoKSB7IH0KLQotICAg
IHZpcnR1YWwgV2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeSogY2xvbmUoKSBjb25zdCA9IDA7Ci0g
ICAgdmlydHVhbCBpbnQgdGh1bWJQb3NpdGlvbihXZWJTY3JvbGxiYXIqKSA9IDA7Ci0gICAgdmly
dHVhbCBpbnQgdGh1bWJMZW5ndGgoV2ViU2Nyb2xsYmFyKikgPSAwOwotICAgIHZpcnR1YWwgaW50
IHRyYWNrUG9zaXRpb24oV2ViU2Nyb2xsYmFyKikgPSAwOwotICAgIHZpcnR1YWwgaW50IHRyYWNr
TGVuZ3RoKFdlYlNjcm9sbGJhciopID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgaGFzQnV0dG9ucyhX
ZWJTY3JvbGxiYXIqKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIGhhc1RodW1iKFdlYlNjcm9sbGJh
ciopID0gMDsKLSAgICB2aXJ0dWFsIFdlYlJlY3QgdHJhY2tSZWN0KFdlYlNjcm9sbGJhciopID0g
MDsKLSAgICB2aXJ0dWFsIFdlYlJlY3QgdGh1bWJSZWN0KFdlYlNjcm9sbGJhciopID0gMDsKLSAg
ICB2aXJ0dWFsIGludCBtaW5pbXVtVGh1bWJMZW5ndGgoV2ViU2Nyb2xsYmFyKikgPSAwOwotICAg
IHZpcnR1YWwgaW50IHNjcm9sbGJhclRoaWNrbmVzcyhXZWJTY3JvbGxiYXIqKSA9IDA7Ci0gICAg
dmlydHVhbCBXZWJSZWN0IGJhY2tCdXR0b25TdGFydFJlY3QoV2ViU2Nyb2xsYmFyKikgPSAwOwot
ICAgIHZpcnR1YWwgV2ViUmVjdCBiYWNrQnV0dG9uRW5kUmVjdChXZWJTY3JvbGxiYXIqKSA9IDA7
Ci0gICAgdmlydHVhbCBXZWJSZWN0IGZvcndhcmRCdXR0b25TdGFydFJlY3QoV2ViU2Nyb2xsYmFy
KikgPSAwOwotICAgIHZpcnR1YWwgV2ViUmVjdCBmb3J3YXJkQnV0dG9uRW5kUmVjdChXZWJTY3Jv
bGxiYXIqKSA9IDA7Ci0gICAgdmlydHVhbCBXZWJSZWN0IGNvbnN0cmFpblRyYWNrUmVjdFRvVHJh
Y2tQaWVjZXMoV2ViU2Nyb2xsYmFyKiwgY29uc3QgV2ViUmVjdCYpID0gMDsKLSAgICB2aXJ0dWFs
IHZvaWQgc3BsaXRUcmFjayhXZWJTY3JvbGxiYXIqLCBjb25zdCBXZWJSZWN0JiB0cmFjaywgV2Vi
UmVjdCYgc3RhcnRUcmFjaywgV2ViUmVjdCYgdGh1bWIsIFdlYlJlY3QmIGVuZFRyYWNrKSA9IDA7
Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmCkluZGV4OiBTb3VyY2UvUGxh
dGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlNjcm9sbGJhclRoZW1lUGFpbnRlci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViU2Nyb2xsYmFyVGhlbWVQ
YWludGVyLmgJKHJldmlzaW9uIDE0NzcxMCkKKysrIFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9w
dWJsaWMvV2ViU2Nyb2xsYmFyVGhlbWVQYWludGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsODUg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0g
KiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpZm5kZWYgV2ViU2Nyb2xsYmFyVGhlbWVQYWludGVyX2gKLSNkZWZp
bmUgV2ViU2Nyb2xsYmFyVGhlbWVQYWludGVyX2gKLQotI2luY2x1ZGUgIldlYkNhbnZhcy5oIgot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTsKLWNs
YXNzIFNjcm9sbGJhcjsKLX07Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1jbGFzcyBXZWJTY3Jv
bGxiYXI7Ci1zdHJ1Y3QgV2ViUmVjdDsKLQotY2xhc3MgV2ViU2Nyb2xsYmFyVGhlbWVQYWludGVy
IHsKLXB1YmxpYzoKLSAgICBXZWJTY3JvbGxiYXJUaGVtZVBhaW50ZXIoKSA6IG1fdGhlbWUoMCkg
eyB9Ci0gICAgV2ViU2Nyb2xsYmFyVGhlbWVQYWludGVyKGNvbnN0IFdlYlNjcm9sbGJhclRoZW1l
UGFpbnRlciYgcGFpbnRlcikgeyBhc3NpZ24ocGFpbnRlcik7IH0KLSAgICB2aXJ0dWFsIH5XZWJT
Y3JvbGxiYXJUaGVtZVBhaW50ZXIoKSB7IH0KLSAgICBXZWJTY3JvbGxiYXJUaGVtZVBhaW50ZXIm
IG9wZXJhdG9yPShjb25zdCBXZWJTY3JvbGxiYXJUaGVtZVBhaW50ZXImIHBhaW50ZXIpCi0gICAg
ewotICAgICAgICBhc3NpZ24ocGFpbnRlcik7Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9
Ci0KLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgYXNzaWduKGNvbnN0IFdlYlNjcm9sbGJhclRoZW1l
UGFpbnRlciYpOwotCi0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHBhaW50U2Nyb2xsYmFyQmFja2dy
b3VuZChXZWJDYW52YXMqLCBjb25zdCBXZWJSZWN0Jik7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lk
IHBhaW50VHJhY2tCYWNrZ3JvdW5kKFdlYkNhbnZhcyosIGNvbnN0IFdlYlJlY3QmKTsKLSAgICBX
RUJLSVRfRVhQT1JUIHZvaWQgcGFpbnRCYWNrVHJhY2tQYXJ0KFdlYkNhbnZhcyosIGNvbnN0IFdl
YlJlY3QmKTsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcGFpbnRGb3J3YXJkVHJhY2tQYXJ0KFdl
YkNhbnZhcyosIGNvbnN0IFdlYlJlY3QmKTsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcGFpbnRC
YWNrQnV0dG9uU3RhcnQoV2ViQ2FudmFzKiwgY29uc3QgV2ViUmVjdCYpOwotICAgIFdFQktJVF9F
WFBPUlQgdm9pZCBwYWludEJhY2tCdXR0b25FbmQoV2ViQ2FudmFzKiwgY29uc3QgV2ViUmVjdCYp
OwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBwYWludEZvcndhcmRCdXR0b25TdGFydChXZWJDYW52
YXMqLCBjb25zdCBXZWJSZWN0Jik7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHBhaW50Rm9yd2Fy
ZEJ1dHRvbkVuZChXZWJDYW52YXMqLCBjb25zdCBXZWJSZWN0Jik7Ci0gICAgV0VCS0lUX0VYUE9S
VCB2b2lkIHBhaW50VGlja21hcmtzKFdlYkNhbnZhcyosIGNvbnN0IFdlYlJlY3QmKTsKLSAgICBX
RUJLSVRfRVhQT1JUIHZvaWQgcGFpbnRUaHVtYihXZWJDYW52YXMqLCBjb25zdCBXZWJSZWN0Jik7
Ci0KLSNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KLSAgICBXZWJTY3JvbGxiYXJUaGVtZVBhaW50
ZXIoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUqLCBXZWJDb3JlOjpTY3JvbGxiYXIq
KTsKLSNlbmRpZgotCi1wcml2YXRlOgotICAgIC8vIFRoZSB0aGVtZSBpcyBub3Qgb3duZWQgYnkg
dGhpcyBjbGFzcy4gSXQgaXMgYXNzdW1lZCB0aGF0IHRoZSB0aGVtZSBpcyBhCi0gICAgLy8gc3Rh
dGljIHBvaW50ZXIgYW5kIGl0cyBsaWZldGltZSBpcyBlc3NlbnRpYWxseSBpbmZpbml0ZS4gVGhl
IGZ1bmN0aW9ucwotICAgIC8vIGNhbGxlZCBmcm9tIHRoZSBwYWludGVyIG1heSBub3QgYmUgdGhy
ZWFkLXNhZmUsIHNvIGFsbCBjYWxscyBtdXN0IGJlIG1hZGUKLSAgICAvLyBmcm9tIHRoZSBzYW1l
IHRocmVhZCB0aGF0IGl0IGlzIGNyZWF0ZWQgb24uCi0gICAgV2ViQ29yZTo6U2Nyb2xsYmFyVGhl
bWVDb21wb3NpdGUqIG1fdGhlbWU7Ci0KLSAgICAvLyBJdCBpcyBhc3N1bWVkIHRoYXQgdGhlIGNv
bnN0cnVjdG9yIG9mIHRoaXMgcGFpbnQgb2JqZWN0IGlzIHJlc3BvbnNpYmxlCi0gICAgLy8gZm9y
IHRoZSBsaWZldGltZSBvZiB0aGlzIHNjcm9sbGJhci4gVGhlIHBhaW50ZXIgaGFzIHRvIHVzZSB0
aGUgcmVhbAotICAgIC8vIHNjcm9sbGJhciAoYW5kIG5vdCBhIFdlYlNjcm9sbGJhciB3cmFwcGVy
KSBkdWUgdG8gc3RhdGljX2Nhc3RzIGZvcgotICAgIC8vIFJlbmRlclNjcm9sbGJhciBhbmQgcG9p
bnRlci1iYXNlZCBIYXNoTWFwIGxvb2t1cHMgZm9yIExpb24gc2Nyb2xsYmFycy4KLSAgICBXZWJD
b3JlOjpTY3JvbGxiYXIqIG1fc2Nyb2xsYmFyOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0
Ci0KLSNlbmRpZgpJbmRleDogU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJTaXpl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJTaXpl
LmgJKHJldmlzaW9uIDE0NzcxMCkKKysrIFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMv
V2ViU2l6ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDEzMyArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlv
bi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAq
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBXZWJTaXpl
X2gKLSNkZWZpbmUgV2ViU2l6ZV9oCi0KLSNpbmNsdWRlICJXZWJDb21tb24uaCIKLQotI2lmIFdF
QktJVF9JTVBMRU1FTlRBVElPTgotI2luY2x1ZGUgIkludFNpemUuaCIKLSNlbHNlCi0jaW5jbHVk
ZSA8Y21hdGg+Ci0jaW5jbHVkZSA8dWkvZ2Z4L3NpemUuaD4KLSNpbmNsdWRlIDx1aS9nZngvdmVj
dG9yMmQuaD4KLSNlbmRpZgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotc3RydWN0IFdlYlNpemUg
ewotICAgIGludCB3aWR0aDsKLSAgICBpbnQgaGVpZ2h0OwotCi0gICAgYm9vbCBpc0VtcHR5KCkg
Y29uc3QgeyByZXR1cm4gd2lkdGggPD0gMCB8fCBoZWlnaHQgPD0gMDsgfQotCi0gICAgV2ViU2l6
ZSgpCi0gICAgICAgIDogd2lkdGgoMCkKLSAgICAgICAgLCBoZWlnaHQoMCkKLSAgICB7Ci0gICAg
fQotCi0gICAgV2ViU2l6ZShpbnQgd2lkdGgsIGludCBoZWlnaHQpCi0gICAgICAgIDogd2lkdGgo
d2lkdGgpCi0gICAgICAgICwgaGVpZ2h0KGhlaWdodCkKLSAgICB7Ci0gICAgfQotCi0jaWYgV0VC
S0lUX0lNUExFTUVOVEFUSU9OCi0gICAgV2ViU2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBz
KQotICAgICAgICA6IHdpZHRoKHMud2lkdGgoKSkKLSAgICAgICAgLCBoZWlnaHQocy5oZWlnaHQo
KSkKLSAgICB7Ci0gICAgfQotCi0gICAgV2ViU2l6ZSYgb3BlcmF0b3I9KGNvbnN0IFdlYkNvcmU6
OkludFNpemUmIHMpCi0gICAgewotICAgICAgICB3aWR0aCA9IHMud2lkdGgoKTsKLSAgICAgICAg
aGVpZ2h0ID0gcy5oZWlnaHQoKTsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotICAg
IG9wZXJhdG9yIFdlYkNvcmU6OkludFNpemUoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJu
IFdlYkNvcmU6OkludFNpemUod2lkdGgsIGhlaWdodCk7Ci0gICAgfQotI2Vsc2UKLSAgICBXZWJT
aXplKGNvbnN0IGdmeDo6U2l6ZSYgcykKLSAgICAgICAgOiB3aWR0aChzLndpZHRoKCkpCi0gICAg
ICAgICwgaGVpZ2h0KHMuaGVpZ2h0KCkpCi0gICAgewotICAgIH0KLQotICAgIFdlYlNpemUoY29u
c3QgZ2Z4OjpWZWN0b3IyZCYgdikKLSAgICAgICAgOiB3aWR0aCh2LngoKSkKLSAgICAgICAgLCBo
ZWlnaHQodi55KCkpCi0gICAgewotICAgIH0KLQotICAgIFdlYlNpemUmIG9wZXJhdG9yPShjb25z
dCBnZng6OlNpemUmIHMpCi0gICAgewotICAgICAgICB3aWR0aCA9IHMud2lkdGgoKTsKLSAgICAg
ICAgaGVpZ2h0ID0gcy5oZWlnaHQoKTsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQot
ICAgIFdlYlNpemUmIG9wZXJhdG9yPShjb25zdCBnZng6OlZlY3RvcjJkJiB2KQotICAgIHsKLSAg
ICAgICAgd2lkdGggPSB2LngoKTsKLSAgICAgICAgaGVpZ2h0ID0gdi55KCk7Ci0gICAgICAgIHJl
dHVybiAqdGhpczsKLSAgICB9Ci0KLSAgICBvcGVyYXRvciBnZng6OlNpemUoKSBjb25zdAotICAg
IHsKLSAgICAgICAgcmV0dXJuIGdmeDo6U2l6ZShzdGQ6Om1heCgwLCB3aWR0aCksIHN0ZDo6bWF4
KDAsIGhlaWdodCkpOwotICAgIH0KLQotICAgIG9wZXJhdG9yIGdmeDo6VmVjdG9yMmQoKSBjb25z
dAotICAgIHsKLSAgICAgICAgcmV0dXJuIGdmeDo6VmVjdG9yMmQod2lkdGgsIGhlaWdodCk7Ci0g
ICAgfQotI2VuZGlmCi19OwotCi1pbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFdlYlNpemUm
IGEsIGNvbnN0IFdlYlNpemUmIGIpCi17Ci0gICAgcmV0dXJuIGEud2lkdGggPT0gYi53aWR0aCAm
JiBhLmhlaWdodCA9PSBiLmhlaWdodDsKLX0KLQotaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25z
dCBXZWJTaXplJiBhLCBjb25zdCBXZWJTaXplJiBiKQotewotICAgIHJldHVybiAhKGEgPT0gYik7
Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYKSW5kZXg6IFNvdXJjZS9QbGF0
Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViU29ja2V0U3RyZWFtRXJyb3IuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlNvY2tldFN0cmVhbUVycm9yLmgJ
KHJldmlzaW9uIDE0NzcxMCkKKysrIFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2Vi
U29ja2V0U3RyZWFtRXJyb3IuaAkod29ya2luZyBjb3B5KQpAQCAtMSw0NSArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRp
c3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
LSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRl
ZiBXZWJTb2NrZXRTdHJlYW1FcnJvcl9oCi0jZGVmaW5lIFdlYlNvY2tldFN0cmVhbUVycm9yX2gK
LQotI2luY2x1ZGUgIldlYkNvbW1vbi5oIgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotY2xhc3Mg
V2ViU29ja2V0U3RyZWFtRXJyb3IgewotcHVibGljOgotICAgIC8vIEZJWE1FOiBEZWZpbmUgU29j
a2V0U3RyZWFtIEVycm9yIGNvZGVzIGFuZCBhY2Nlc3NvciBtZXRob2RzLgotfTsKLQotfSAvLyBu
YW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZgpJbmRleDogU291cmNlL1BsYXRmb3JtL2Nocm9taXVt
L3B1YmxpYy9XZWJTb2NrZXRTdHJlYW1IYW5kbGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvUGxh
dGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlNvY2tldFN0cmVhbUhhbmRsZS5oCShyZXZpc2lvbiAx
NDc3MTApCisrKyBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlNvY2tldFN0cmVh
bUhhbmRsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDU4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDksIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJp
YnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdl
YlNvY2tldFN0cmVhbUhhbmRsZV9oCi0jZGVmaW5lIFdlYlNvY2tldFN0cmVhbUhhbmRsZV9oCi0K
LSNpbmNsdWRlICJXZWJDb21tb24uaCIKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIFdl
YkRhdGE7Ci1jbGFzcyBXZWJTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQ7Ci1jbGFzcyBXZWJVUkw7
Ci0KLWNsYXNzIFdlYlNvY2tldFN0cmVhbUhhbmRsZSB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+
V2ViU29ja2V0U3RyZWFtSGFuZGxlKCkgeyB9Ci0KLSAgICAvLyBDb25uZWN0IG5ldyBzb2NrZXQg
c3RyZWFtIGFzeW5jaHJvbm91c2x5LgotICAgIHZpcnR1YWwgdm9pZCBjb25uZWN0KGNvbnN0IFdl
YlVSTCYsIFdlYlNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCopIHsgfQotCi0gICAgLy8gU2VuZCB3
ZWIgc29ja2V0IGZyYW1lIGRhdGEgb24gdGhlIHNvY2tldCBzdHJlYW0uCi0gICAgdmlydHVhbCBi
b29sIHNlbmQoY29uc3QgV2ViRGF0YSYpIHsgcmV0dXJuIGZhbHNlOyB9Ci0KLSAgICAvLyBDbG9z
ZSB0aGUgc29ja2V0IHN0cmVhbS4KLSAgICB2aXJ0dWFsIHZvaWQgY2xvc2UoKSB7IH0KLX07Ci0K
LX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYKSW5kZXg6IFNvdXJjZS9QbGF0Zm9ybS9j
aHJvbWl1bS9wdWJsaWMvV2ViU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJTb2NrZXRTdHJlYW1IYW5kbGVD
bGllbnQuaAkocmV2aXNpb24gMTQ3NzEwKQorKysgU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1
YmxpYy9XZWJTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw2
NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6
Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
LSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2lmbmRlZiBXZWJTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnRfaAotI2RlZmluZSBX
ZWJTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnRfaAotCi0jaW5jbHVkZSAiV2ViQ29tbW9uLmgiCi0K
LW5hbWVzcGFjZSBXZWJLaXQgewotCi1jbGFzcyBXZWJEYXRhOwotY2xhc3MgV2ViU29ja2V0U3Ry
ZWFtRXJyb3I7Ci1jbGFzcyBXZWJTb2NrZXRTdHJlYW1IYW5kbGU7Ci1jbGFzcyBXZWJVUkw7Ci0K
LWNsYXNzIFdlYlNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCB7Ci1wdWJsaWM6Ci0KLSAgICAvLyBD
YWxsZWQgd2hlbiBTb2NrZXQgU3RyZWFtIGlzIG9wZW5lZC4KLSAgICB2aXJ0dWFsIHZvaWQgZGlk
T3BlblN0cmVhbShXZWJTb2NrZXRTdHJlYW1IYW5kbGUqLCBpbnQgLyogbWF4UGVuZGluZ1NlbmRB
bGxvd2VkICovKSA9IDA7Ci0KLSAgICAvLyBDYWxsZWQgd2hlbiB8YW1vdW50U2VudHwgYnl0ZXMg
YXJlIHNlbnQuCi0gICAgdmlydHVhbCB2b2lkIGRpZFNlbmREYXRhKFdlYlNvY2tldFN0cmVhbUhh
bmRsZSosIGludCAvKiBhbW91bnRTZW50ICovKSA9IDA7Ci0KLSAgICAvLyBDYWxsZWQgd2hlbiBk
YXRhIGFyZSByZWNlaXZlZC4KLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoV2ViU29j
a2V0U3RyZWFtSGFuZGxlKiwgY29uc3QgV2ViRGF0YSYpID0gMDsKLQotICAgIC8vIENhbGxlZCB3
aGVuIFNvY2tldCBTdHJlYW0gaXMgY2xvc2VkLgotICAgIHZpcnR1YWwgdm9pZCBkaWRDbG9zZShX
ZWJTb2NrZXRTdHJlYW1IYW5kbGUqKSA9IDA7Ci0KLSAgICAvLyBDYWxsZWQgd2hlbiBTb2NrZXQg
U3RyZWFtIGhhcyBhbiBlcnJvci4KLSAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChXZWJTb2NrZXRT
dHJlYW1IYW5kbGUqLCBjb25zdCBXZWJTb2NrZXRTdHJlYW1FcnJvciYpID0gMDsKLQotICAgIC8v
IEZJWE1FOiBhdXRoIGNoYWxsZW5nZSBmb3IgcHJveHkKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdl
YktpdAotCi0jZW5kaWYKSW5kZXg6IFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2Vi
U29saWRDb2xvckxheWVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1BsYXRmb3JtL2Nocm9taXVt
L3B1YmxpYy9XZWJTb2xpZENvbG9yTGF5ZXIuaAkocmV2aXNpb24gMTQ3NzEwKQorKysgU291cmNl
L1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJTb2xpZENvbG9yTGF5ZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtMSw0NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMi
IEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBXZWJTb2xpZENvbG9yTGF5ZXJf
aAotI2RlZmluZSBXZWJTb2xpZENvbG9yTGF5ZXJfaAotCi0jaW5jbHVkZSAiV2ViQ29sb3IuaCIK
LSNpbmNsdWRlICJXZWJDb21tb24uaCIKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci1jbGFzcyBXZWJM
YXllcjsKLQotY2xhc3MgV2ViU29saWRDb2xvckxheWVyIHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFs
IH5XZWJTb2xpZENvbG9yTGF5ZXIoKSB7IH0KLQotICAgIHZpcnR1YWwgV2ViTGF5ZXIqIGxheWVy
KCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzZXRCYWNrZ3JvdW5kQ29sb3IoV2ViQ29sb3IpID0g
MDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gV2ViU29saWRDb2xv
ckxheWVyX2gKSW5kZXg6IFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNo
U3ludGhlc2lzVXR0ZXJhbmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1BsYXRmb3JtL2Nocm9t
aXVtL3B1YmxpYy9XZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuaAkocmV2aXNpb24gMTQ3NzEw
KQorKysgU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJTcGVlY2hTeW50aGVzaXNV
dHRlcmFuY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMSw3NyArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
YGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9S
Ci0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lm
bmRlZiBXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2VfaAotI2RlZmluZSBXZWJTcGVlY2hTeW50
aGVzaXNVdHRlcmFuY2VfaAotCi0jaW5jbHVkZSAiV2ViQ29tbW9uLmgiCi0jaW5jbHVkZSAiV2Vi
UHJpdmF0ZVB0ci5oIgotI2luY2x1ZGUgIldlYlN0cmluZy5oIgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7IGNsYXNzIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlOyB9Ci0KLW5hbWVzcGFj
ZSBXZWJLaXQgewotCi1jbGFzcyBXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UgewotcHVibGlj
OgotICAgIFdlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSgpIHsgfQotICAgIFdlYlNwZWVjaFN5
bnRoZXNpc1V0dGVyYW5jZShjb25zdCBXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UmIG90aGVy
KSB7IGFzc2lnbihvdGhlcik7IH0KLSAgICB+V2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKCkg
eyByZXNldCgpOyB9Ci0KLSAgICBXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UmIG9wZXJhdG9y
PShjb25zdCBXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UmIG90aGVyKQotICAgIHsKLSAgICAg
ICAgYXNzaWduKG90aGVyKTsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotICAgIFdF
QktJVF9FWFBPUlQgdm9pZCBhc3NpZ24oY29uc3QgV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNl
Jik7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHJlc2V0KCk7Ci0gICAgYm9vbCBpc051bGwoKSBj
b25zdCB7IHJldHVybiBtX3ByaXZhdGUuaXNOdWxsKCk7IH0KLQotICAgIFdFQktJVF9FWFBPUlQg
V2ViU3RyaW5nIHRleHQoKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JUIFdlYlN0cmluZyBsYW5n
KCkgY29uc3Q7Ci0gICAgV0VCS0lUX0VYUE9SVCBXZWJTdHJpbmcgdm9pY2UoKSBjb25zdDsKLQot
ICAgIC8vIEFzIGRlZmluZWQgaW46IGh0dHBzOi8vZHZjcy53My5vcmcvaGcvc3BlZWNoLWFwaS9y
YXctZmlsZS90aXAvc3BlZWNoYXBpLmh0bWwKLSAgICBXRUJLSVRfRVhQT1JUIGZsb2F0IHZvbHVt
ZSgpIGNvbnN0OyAvLyAwLi4uMSwgMSBpcyBkZWZhdWx0Ci0gICAgV0VCS0lUX0VYUE9SVCBmbG9h
dCByYXRlKCkgY29uc3Q7IC8vIDAuMS4uLjEwLCAxIGlzIGRlZmF1bHQKLSAgICBXRUJLSVRfRVhQ
T1JUIGZsb2F0IHBpdGNoKCkgY29uc3Q7IC8vIDAuLi4yLCAxIGlzIGRlZmF1bHQKLQotICAgIFdF
QktJVF9FWFBPUlQgZG91YmxlIHN0YXJ0VGltZSgpIGNvbnN0OyAvLyBJbiBzZWNvbmRzLgotCi0j
aWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCi0gICAgV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNl
KGNvbnN0IFBhc3NSZWZQdHI8V2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFu
Y2U+Jik7Ci0gICAgV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlJiBvcGVyYXRvcj0oV2ViQ29y
ZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UqKTsKLSAgICBvcGVyYXRvciBQYXNz
UmVmUHRyPFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPigpIGNvbnN0
OwotICAgIG9wZXJhdG9yIFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNl
KigpIGNvbnN0OwotI2VuZGlmCi0KLXByaXZhdGU6Ci0gICAgV2ViUHJpdmF0ZVB0cjxXZWJDb3Jl
OjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4gbV9wcml2YXRlOwotfTsKLQotfSAv
LyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFu
Y2VfaApJbmRleDogU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJTcGVlY2hTeW50
aGVzaXNWb2ljZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJs
aWMvV2ViU3BlZWNoU3ludGhlc2lzVm9pY2UuaAkocmV2aXNpb24gMTQ3NzEwKQorKysgU291cmNl
L1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJTcGVlY2hTeW50aGVzaXNWb2ljZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDcwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBgYEFTIElTJycgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIgT1IKLSAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdlYlNwZWVjaFN5
bnRoZXNpc1ZvaWNlX2gKLSNkZWZpbmUgV2ViU3BlZWNoU3ludGhlc2lzVm9pY2VfaAotCi0jaW5j
bHVkZSAiV2ViQ29tbW9uLmgiCi0jaW5jbHVkZSAiV2ViUHJpdmF0ZVB0ci5oIgotI2luY2x1ZGUg
IldlYlN0cmluZy5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBQbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpc1ZvaWNlOwotfQotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotY2xhc3MgV2ViU3Bl
ZWNoU3ludGhlc2lzVm9pY2UgewotcHVibGljOgotICAgIFdlYlNwZWVjaFN5bnRoZXNpc1ZvaWNl
KCkgeyB9Ci0gICAgV2ViU3BlZWNoU3ludGhlc2lzVm9pY2UoY29uc3QgV2ViU3BlZWNoU3ludGhl
c2lzVm9pY2UmIG90aGVyKSB7IGFzc2lnbihvdGhlcik7IH0KLSAgICB+V2ViU3BlZWNoU3ludGhl
c2lzVm9pY2UoKSB7IHJlc2V0KCk7IH0KLQotICAgIFdlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlJiBv
cGVyYXRvcj0oY29uc3QgV2ViU3BlZWNoU3ludGhlc2lzVm9pY2UmIG90aGVyKQotICAgIHsKLSAg
ICAgICAgYXNzaWduKG90aGVyKTsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotICAg
IFdFQktJVF9FWFBPUlQgdm9pZCBhc3NpZ24oY29uc3QgV2ViU3BlZWNoU3ludGhlc2lzVm9pY2Um
KTsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVzZXQoKTsKLQotICAgIFdFQktJVF9FWFBPUlQg
dm9pZCBzZXRWb2ljZVVSSShjb25zdCBXZWJTdHJpbmcmKTsKLSAgICBXRUJLSVRfRVhQT1JUIHZv
aWQgc2V0TmFtZShjb25zdCBXZWJTdHJpbmcmKTsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0
TGFuZ3VhZ2UoY29uc3QgV2ViU3RyaW5nJik7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldElz
TG9jYWxTZXJ2aWNlKGJvb2wpOwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRJc0RlZmF1bHQo
Ym9vbCk7Ci0KLSNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KLSAgICBvcGVyYXRvciBXVEY6OlBh
c3NSZWZQdHI8V2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZT4oKSBjb25zdDsK
LSNlbmRpZgotCi1wcml2YXRlOgotICAgIFdlYlByaXZhdGVQdHI8V2ViQ29yZTo6UGxhdGZvcm1T
cGVlY2hTeW50aGVzaXNWb2ljZT4gbV9wcml2YXRlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0Ci0KLSNlbmRpZiAvLyBXZWJTcGVlY2hTeW50aGVzaXNWb2ljZV9oCkluZGV4OiBTb3VyY2Uv
UGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlNwZWVjaFN5bnRoZXNpemVyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJTcGVlY2hTeW50aGVzaXpl
ci5oCShyZXZpc2lvbiAxNDc3MTApCisrKyBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGlj
L1dlYlNwZWVjaFN5bnRoZXNpemVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNTIgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
Ci0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpZm5kZWYgV2ViU3BlZWNoU3ludGhlc2l6ZXJfaAotI2RlZmluZSBXZWJTcGVlY2hT
eW50aGVzaXplcl9oCi0KLSNpbmNsdWRlICJXZWJDb21tb24uaCIKLQotbmFtZXNwYWNlIFdlYktp
dCB7Ci0KLWNsYXNzIFdlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50OwotY2xhc3MgV2ViU3BlZWNo
U3ludGhlc2lzVXR0ZXJhbmNlOwotCi1jbGFzcyBXZWJTcGVlY2hTeW50aGVzaXplciB7Ci1wdWJs
aWM6Ci0gICAgdmlydHVhbCB+V2ViU3BlZWNoU3ludGhlc2l6ZXIoKSB7IH0KLQotICAgIHZpcnR1
YWwgdm9pZCB1cGRhdGVWb2ljZUxpc3QoKSA9IDA7Ci0KLSAgICAvLyBPSyB0byBjYWxsIHdpdGgg
bW9yZSB0aGFuIG9uZSB1dHRlcmFuY2UsIHdpbGwgcXVldWUuCi0gICAgdmlydHVhbCB2b2lkIHNw
ZWFrKGNvbnN0IFdlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYpID0gMDsKLQotICAgIHZpcnR1
YWwgdm9pZCBwYXVzZSgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcmVzdW1lKCkgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCBjYW5jZWwoKSA9IDA7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQK
LQotI2VuZGlmIC8vIFdlYlNwZWVjaFN5bnRoZXNpemVyX2gKSW5kZXg6IFNvdXJjZS9QbGF0Zm9y
bS9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlNwZWVjaFN5bnRoZXNpemVy
Q2xpZW50LmgJKHJldmlzaW9uIDE0NzcxMCkKKysrIFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9w
dWJsaWMvV2ViU3BlZWNoU3ludGhlc2l6ZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1
MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkK
LSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAq
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBXZWJTcGVlY2hTeW50aGVzaXplckNsaWVudF9oCi0j
ZGVmaW5lIFdlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50X2gKLQotI2luY2x1ZGUgIldlYlNwZWVj
aFN5bnRoZXNpc1V0dGVyYW5jZS5oIgotI2luY2x1ZGUgIldlYlNwZWVjaFN5bnRoZXNpc1ZvaWNl
LmgiCi0jaW5jbHVkZSAiV2ViVmVjdG9yLmgiCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1jbGFz
cyBXZWJTcGVlY2hTeW50aGVzaXplckNsaWVudCB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+V2Vi
U3BlZWNoU3ludGhlc2l6ZXJDbGllbnQoKSB7IH0KLQotICAgIHZpcnR1YWwgdm9pZCBzZXRWb2lj
ZUxpc3QoY29uc3QgV2ViVmVjdG9yPFdlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlPiYpID0gMDsKLSAg
ICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnRTcGVha2luZyhjb25zdCBXZWJTcGVlY2hTeW50aGVzaXNV
dHRlcmFuY2UmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFBhdXNlU3BlYWtpbmcoY29uc3Qg
V2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRS
ZXN1bWVTcGVha2luZyhjb25zdCBXZWJTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UmKSA9IDA7Ci0g
ICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaFNwZWFraW5nKGNvbnN0IFdlYlNwZWVjaFN5bnRoZXNp
c1V0dGVyYW5jZSYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc3BlYWtpbmdFcnJvck9jY3VycmVk
KGNvbnN0IFdlYlNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgd29yZEJvdW5kYXJ5RXZlbnRPY2N1cnJlZChjb25zdCBXZWJTcGVlY2hTeW50aGVzaXNVdHRl
cmFuY2UmLCB1bnNpZ25lZCBjaGFySW5kZXgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2VudGVu
Y2VCb3VuZGFyeUV2ZW50T2NjdXJyZWQoY29uc3QgV2ViU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNl
JiwgdW5zaWduZWQgY2hhckluZGV4KSA9IDA7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQK
LQotI2VuZGlmIC8vIFdlYlNwZWVjaFN5bnRoZXNpemVyQ2xpZW50X2gKSW5kZXg6IFNvdXJjZS9Q
bGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViU3RvcmFnZUFyZWEuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlN0b3JhZ2VBcmVhLmgJKHJldmlzaW9u
IDE0NzcxMCkKKysrIFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViU3RvcmFnZUFy
ZWEuaAkod29ya2luZyBjb3B5KQpAQCAtMSw5OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAq
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0g
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBXZWJTdG9yYWdlQXJl
YV9oCi0jZGVmaW5lIFdlYlN0b3JhZ2VBcmVhX2gKLQotI2luY2x1ZGUgIldlYkNvbW1vbi5oIgot
I2luY2x1ZGUgIldlYlN0cmluZy5oIgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotY2xhc3MgV2Vi
VVJMOwotCi1jbGFzcyBXZWJTdG9yYWdlQXJlYSB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+V2Vi
U3RvcmFnZUFyZWEoKSB7IH0KLQotICAgIGVudW0gUmVzdWx0IHsKLSAgICAgICAgUmVzdWx0T0sg
PSAwLAotICAgICAgICBSZXN1bHRCbG9ja2VkQnlRdW90YQotICAgIH07Ci0KLSAgICAvLyBUaGUg
bnVtYmVyIG9mIGtleS92YWx1ZSBwYWlycyBpbiB0aGUgc3RvcmFnZSBhcmVhLgotICAgIHZpcnR1
YWwgdW5zaWduZWQgbGVuZ3RoKCkgPSAwOwotCi0gICAgLy8gR2V0IGEgdmFsdWUgZm9yIGEgc3Bl
Y2lmaWMga2V5LiBWYWxpZCBrZXkgaW5kaWNlcyBhcmUgMCB0aHJvdWdoIGxlbmd0aCgpIC0gMS4K
LSAgICAvLyBJbmRleGVzIG1heSBjaGFuZ2Ugb24gYW55IHNldC9yZW1vdmVJdGVtIGNhbGwuIFdp
bGwgcmV0dXJuIG51bGwgaWYgdGhlIGluZGV4Ci0gICAgLy8gcHJvdmlkZWQgaXMgb3V0IG9mIHJh
bmdlLgotICAgIHZpcnR1YWwgV2ViU3RyaW5nIGtleSh1bnNpZ25lZCBpbmRleCkgPSAwOwotCi0g
ICAgLy8gR2V0IHRoZSB2YWx1ZSB0aGF0IGNvcnJlc3BvbmRzIHRvIGEgc3BlY2lmaWMga2V5LiBU
aGlzIHJldHVybnMgbnVsbCBpZiB0aGVyZSBpcwotICAgIC8vIG5vIGVudHJ5IGZvciB0aGF0IGtl
eS4KLSAgICB2aXJ0dWFsIFdlYlN0cmluZyBnZXRJdGVtKGNvbnN0IFdlYlN0cmluZyYga2V5KSA9
IDA7Ci0KLSAgICAvLyBTZXQgdGhlIHZhbHVlIHRoYXQgY29ycmVzcG9uZHMgdG8gYSBzcGVjaWZp
YyBrZXkuIFJlc3VsdCB3aWxsIGVpdGhlciBiZSBSZXN1bHRPSwotICAgIC8vIG9yIHNvbWUgcGFy
dGljdWxhciBlcnJvci4gVGhlIHZhbHVlIGlzIE5PVCBzZXQgd2hlbiB0aGVyZSdzIGFuIGVycm9y
LiB8cGFnZVVybHwgaXMgdGhlCi0gICAgLy8gdXJsIHRoYXQgc2hvdWxkIGJlIHVzZWQgaWYgYSBz
dG9yYWdlIGV2ZW50IGZpcmVzLgotICAgIHZpcnR1YWwgdm9pZCBzZXRJdGVtKGNvbnN0IFdlYlN0
cmluZyYga2V5LCBjb25zdCBXZWJTdHJpbmcmIG5ld1ZhbHVlLCBjb25zdCBXZWJVUkwmIHBhZ2VV
cmwsIFJlc3VsdCYgcmVzdWx0KQotICAgIHsKLSAgICAgICAgV2ViU3RyaW5nIHVudXNlZDsKLSAg
ICAgICAgc2V0SXRlbShrZXksIG5ld1ZhbHVlLCBwYWdlVXJsLCByZXN1bHQsIHVudXNlZCk7Ci0g
ICAgfQotCi0KLSAgICAvLyBSZW1vdmUgdGhlIHZhbHVlIGFzc29jaWF0ZWQgd2l0aCBhIHBhcnRp
Y3VsYXIga2V5LiB8cGFnZVVybHwgaXMgdGhlIHVybCB0aGF0IHNob3VsZCBiZSB1c2VkCi0gICAg
Ly8gaWYgYSBzdG9yYWdlIGV2ZW50IGZpcmVzLgotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVJdGVt
KGNvbnN0IFdlYlN0cmluZyYga2V5LCBjb25zdCBXZWJVUkwmIHBhZ2VVcmwpCi0gICAgewotICAg
ICAgICBXZWJTdHJpbmcgdW51c2VkOwotICAgICAgICByZW1vdmVJdGVtKGtleSwgcGFnZVVybCwg
dW51c2VkKTsKLSAgICB9Ci0KLSAgICAvLyBDbGVhciBhbGwga2V5L3ZhbHVlIHBhaXJzLiB8cGFn
ZVVybHwgaXMgdGhlIHVybCB0aGF0IHNob3VsZCBiZSB1c2VkIGlmIGEgc3RvcmFnZSBldmVudCBm
aXJlcy4KLSAgICB2aXJ0dWFsIHZvaWQgY2xlYXIoY29uc3QgV2ViVVJMJiBwYWdlVXJsKQotICAg
IHsKLSAgICAgICAgYm9vbCB1bnVzZWQ7Ci0gICAgICAgIGNsZWFyKHBhZ2VVcmwsIHVudXNlZCk7
Ci0gICAgfQotCi0gICAgLy8gUmV0dXJucyBhbW91bnQgb2YgYnl0ZXMgb2NjdXBpZWQgYnkgdGhl
IHN0b3JhZ2UgY2FjaGUgaW4gcGh5c2ljYWwgbWVtb3J5LgotICAgIHZpcnR1YWwgc2l6ZV90IG1l
bW9yeUJ5dGVzVXNlZEJ5Q2FjaGUoKSBjb25zdCB7IHJldHVybiAwOyB9Ci0KLSAgICAvLyBERVBS
RUNBVEVEIC0gYmVpbmcgcmVwbGFjZWQgYnkgdGhlIGFzeW5jIHZhcmlhbnRzIGFib3ZlIHdoaWNo
IGRvIG5vdCByZXR1cm4gb2xkVmFsdWVzIG9yIGJsb2NrIHVudGlsIGNvbXBsZXRpb24uCi0gICAg
dmlydHVhbCB2b2lkIHNldEl0ZW0oY29uc3QgV2ViU3RyaW5nJiBrZXksIGNvbnN0IFdlYlN0cmlu
ZyYgbmV3VmFsdWUsIGNvbnN0IFdlYlVSTCYsIFJlc3VsdCYsIFdlYlN0cmluZyYgb2xkVmFsdWUp
IHsgfQotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVJdGVtKGNvbnN0IFdlYlN0cmluZyYga2V5LCBj
b25zdCBXZWJVUkwmIHBhZ2VVcmwsIFdlYlN0cmluZyYgb2xkVmFsdWUpICB7IH0KLSAgICB2aXJ0
dWFsIHZvaWQgY2xlYXIoY29uc3QgV2ViVVJMJiBwYWdlVXJsLCBib29sJiBzb21ldGhpbmdDbGVh
cmVkKSAgeyB9Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIFdlYlN0
b3JhZ2VBcmVhX2gKSW5kZXg6IFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViU3Rv
cmFnZU5hbWVzcGFjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9w
dWJsaWMvV2ViU3RvcmFnZU5hbWVzcGFjZS5oCShyZXZpc2lvbiAxNDc3MTApCisrKyBTb3VyY2Uv
UGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlN0b3JhZ2VOYW1lc3BhY2UuaAkod29ya2luZyBj
b3B5KQpAQCAtMSw2MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
LSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBXZWJTdG9yYWdlTmFtZXNwYWNlX2gKLSNkZWZp
bmUgV2ViU3RvcmFnZU5hbWVzcGFjZV9oCi0KLSNpbmNsdWRlICJXZWJDb21tb24uaCIKLQotbmFt
ZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIFdlYlN0b3JhZ2VBcmVhOwotY2xhc3MgV2ViU3RyaW5n
OwotCi0vLyBXZWJTdG9yYWdlTmFtZXNwYWNlIHJlcHJlc2VudHMgYSBjb2xsZWN0aW9uIG9mIFN0
b3JhZ2VBcmVhcy4gVHlwaWNhbGx5LCB5b3UnbGwgaGF2ZQotLy8gbXVsdGlwbGUgU3RvcmFnZU5h
bWVzcGFjZXMgdG8gcmVwcmVzZW50IHRoZSBTZXNzaW9uU3RvcmFnZSBmb3IgZWFjaCB0YWIgYW5k
IGEgc2luZ2xlCi0vLyBTdG9yYWdlTmFtZXNwYWNlIHRvIHJlcHJlc2VudCBMb2NhbFN0b3JhZ2Ug
Zm9yIHRoZSBlbnRpcmUgYnJvd3Nlci4KLWNsYXNzIFdlYlN0b3JhZ2VOYW1lc3BhY2UgewotcHVi
bGljOgotICAgIHZpcnR1YWwgfldlYlN0b3JhZ2VOYW1lc3BhY2UoKSB7IH0KLQotICAgIC8vIENy
ZWF0ZSBhIG5ldyBXZWJTdG9yYWdlQXJlYSBvYmplY3QuIFR3byBzdWJzZXF1ZW50IGNhbGxzIHdp
dGggdGhlIHNhbWUgb3JpZ2luCi0gICAgLy8gd2lsbCByZXR1cm4gdHdvIGRpZmZlcmVudCBXZWJT
dG9yYWdlQXJlYSBvYmplY3RzIHRoYXQgc2hhcmUgdGhlIHNhbWUgYmFja2luZyBzdG9yZS4KLSAg
ICAvLyBZb3Ugc2hvdWxkIGNhbGwgZGVsZXRlIG9uIHRoZSByZXR1cm5lZCBvYmplY3Qgd2hlbiB5
b3UncmUgZmluaXNoZWQuCi0gICAgdmlydHVhbCBXZWJTdG9yYWdlQXJlYSogY3JlYXRlU3RvcmFn
ZUFyZWEoY29uc3QgV2ViU3RyaW5nJiBvcmlnaW4pID0gMDsKLQotICAgIC8vIENvcHkgYSBTdG9y
YWdlTmFtZXNwYWNlLiBUaGlzIG9ubHkgbWFrZXMgc2Vuc2UgaW4gdGhlIGNhc2Ugb2YgU2Vzc2lv
blN0b3JhZ2UuCi0gICAgdmlydHVhbCBXZWJTdG9yYWdlTmFtZXNwYWNlKiBjb3B5KCkgPSAwOwot
Ci0gICAgLy8gUmV0dXJucyB0cnVlIG9mIHRoZSB0d28gaW5zdGFuY2VzIHJlcHJlc2VudCB0aGUg
c2FtZSBzdG9yYWdlIG5hbWVzcGFjZS4KLSAgICB2aXJ0dWFsIGJvb2wgaXNTYW1lTmFtZXNwYWNl
KGNvbnN0IFdlYlN0b3JhZ2VOYW1lc3BhY2UmKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotfTsK
LQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBXZWJTdG9yYWdlTmFtZXNwYWNl
X2gKSW5kZXg6IFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViU3RyaW5nLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJTdHJpbmcuaAko
cmV2aXNpb24gMTQ3NzEwKQorKysgU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJT
dHJpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtMSwxNzcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24u
Ci0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgV2ViU3RyaW5n
X2gKLSNkZWZpbmUgV2ViU3RyaW5nX2gKLQotI2luY2x1ZGUgIldlYkNvbW1vbi5oIgotCi0jaWYg
V0VCS0lUX0lNUExFTUVOVEFUSU9OCi0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNlbHNlCi0j
aW5jbHVkZSA8YmFzZS9udWxsYWJsZV9zdHJpbmcxNi5oPgotI2luY2x1ZGUgPGJhc2Uvc3RyaW5n
MTYuaD4KLSNlbmRpZgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotY2xhc3MgV2ViQ1N0cmluZzsK
LWNsYXNzIFdlYlN0cmluZ1ByaXZhdGU7Ci0KLS8vIEEgVVRGLTE2IHN0cmluZyBjb250YWluZXIu
ICBJdCBpcyBpbmV4cGVuc2l2ZSB0byBjb3B5IGEgV2ViU3RyaW5nCi0vLyBvYmplY3QuCi0vLwot
Ly8gV0FSTklORzogSXQgaXMgbm90IHNhZmUgdG8gcGFzcyBhIFdlYlN0cmluZyBhY3Jvc3MgdGhy
ZWFkcyEhIQotLy8KLWNsYXNzIFdlYlN0cmluZyB7Ci1wdWJsaWM6Ci0gICAgfldlYlN0cmluZygp
IHsgcmVzZXQoKTsgfQotCi0gICAgV2ViU3RyaW5nKCkgOiBtX3ByaXZhdGUoMCkgeyB9Ci0KLSAg
ICBXZWJTdHJpbmcoY29uc3QgV2ViVUNoYXIqIGRhdGEsIHNpemVfdCBsZW4pIDogbV9wcml2YXRl
KDApCi0gICAgewotICAgICAgICBhc3NpZ24oZGF0YSwgbGVuKTsKLSAgICB9Ci0KLSAgICBXZWJT
dHJpbmcoY29uc3QgV2ViU3RyaW5nJiBzKSA6IG1fcHJpdmF0ZSgwKSB7IGFzc2lnbihzKTsgfQot
Ci0gICAgV2ViU3RyaW5nJiBvcGVyYXRvcj0oY29uc3QgV2ViU3RyaW5nJiBzKQotICAgIHsKLSAg
ICAgICAgYXNzaWduKHMpOwotICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotCi0gICAgV0VC
S0lUX0VYUE9SVCB2b2lkIHJlc2V0KCk7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIGFzc2lnbihj
b25zdCBXZWJTdHJpbmcmKTsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgYXNzaWduKGNvbnN0IFdl
YlVDaGFyKiBkYXRhLCBzaXplX3QgbGVuKTsKLQotICAgIFdFQktJVF9FWFBPUlQgYm9vbCBlcXVh
bHMoY29uc3QgV2ViU3RyaW5nJiBzKSBjb25zdDsKLQotICAgIFdFQktJVF9FWFBPUlQgc2l6ZV90
IGxlbmd0aCgpIGNvbnN0OwotICAgIFdFQktJVF9FWFBPUlQgY29uc3QgV2ViVUNoYXIqIGRhdGEo
KSBjb25zdDsKLQotICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFsZW5ndGgoKTsg
fQotICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gIW1fcHJpdmF0ZTsgfQotCi0gICAg
V0VCS0lUX0VYUE9SVCBXZWJDU3RyaW5nIHV0ZjgoKSBjb25zdDsKLQotICAgIFdFQktJVF9FWFBP
UlQgc3RhdGljIFdlYlN0cmluZyBmcm9tVVRGOChjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVu
Z3RoKTsKLSAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyBXZWJTdHJpbmcgZnJvbVVURjgoY29uc3Qg
Y2hhciogZGF0YSk7Ci0KLSAgICB0ZW1wbGF0ZSA8aW50IE4+IFdlYlN0cmluZyhjb25zdCBjaGFy
ICgmZGF0YSlbTl0pCi0gICAgICAgIDogbV9wcml2YXRlKDApCi0gICAgewotICAgICAgICBhc3Np
Z24oZnJvbVVURjgoZGF0YSwgTiAtIDEpKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8aW50IE4+
IFdlYlN0cmluZyYgb3BlcmF0b3I9KGNvbnN0IGNoYXIgKCZkYXRhKVtOXSkKLSAgICB7Ci0gICAg
ICAgIGFzc2lnbihmcm9tVVRGOChkYXRhLCBOIC0gMSkpOwotICAgICAgICByZXR1cm4gKnRoaXM7
Ci0gICAgfQotCi0jaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCi0gICAgV2ViU3RyaW5nKGNvbnN0
IFdURjo6U3RyaW5nJik7Ci0gICAgV2ViU3RyaW5nJiBvcGVyYXRvcj0oY29uc3QgV1RGOjpTdHJp
bmcmKTsKLSAgICBvcGVyYXRvciBXVEY6OlN0cmluZygpIGNvbnN0OwotCi0gICAgV2ViU3RyaW5n
KGNvbnN0IFdURjo6QXRvbWljU3RyaW5nJik7Ci0gICAgV2ViU3RyaW5nJiBvcGVyYXRvcj0oY29u
c3QgV1RGOjpBdG9taWNTdHJpbmcmKTsKLSAgICBvcGVyYXRvciBXVEY6OkF0b21pY1N0cmluZygp
IGNvbnN0OwotI2Vsc2UKLQotICAgIFdlYlN0cmluZyhjb25zdCBzdHJpbmcxNiYgcykgOiBtX3By
aXZhdGUoMCkKLSAgICB7Ci0gICAgICAgIGFzc2lnbihzLmRhdGEoKSwgcy5sZW5ndGgoKSk7Ci0g
ICAgfQotCi0gICAgV2ViU3RyaW5nJiBvcGVyYXRvcj0oY29uc3Qgc3RyaW5nMTYmIHMpCi0gICAg
ewotICAgICAgICBhc3NpZ24ocy5kYXRhKCksIHMubGVuZ3RoKCkpOwotICAgICAgICByZXR1cm4g
KnRoaXM7Ci0gICAgfQotCi0gICAgb3BlcmF0b3Igc3RyaW5nMTYoKSBjb25zdAotICAgIHsKLSAg
ICAgICAgc2l6ZV90IGxlbiA9IGxlbmd0aCgpOwotICAgICAgICByZXR1cm4gbGVuID8gc3RyaW5n
MTYoZGF0YSgpLCBsZW4pIDogc3RyaW5nMTYoKTsKLSAgICB9Ci0KLSAgICBXZWJTdHJpbmcoY29u
c3QgTnVsbGFibGVTdHJpbmcxNiYgcykgOiBtX3ByaXZhdGUoMCkKLSAgICB7Ci0gICAgICAgIGlm
IChzLmlzX251bGwoKSkKLSAgICAgICAgICAgIHJlc2V0KCk7Ci0gICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIGFzc2lnbihzLnN0cmluZygpLmRhdGEoKSwgcy5zdHJpbmcoKS5sZW5ndGgoKSk7Ci0g
ICAgfQotCi0gICAgV2ViU3RyaW5nJiBvcGVyYXRvcj0oY29uc3QgTnVsbGFibGVTdHJpbmcxNiYg
cykKLSAgICB7Ci0gICAgICAgIGlmIChzLmlzX251bGwoKSkKLSAgICAgICAgICAgIHJlc2V0KCk7
Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGFzc2lnbihzLnN0cmluZygpLmRhdGEoKSwgcy5z
dHJpbmcoKS5sZW5ndGgoKSk7Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0KLSAgICBv
cGVyYXRvciBOdWxsYWJsZVN0cmluZzE2KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIGlmICghbV9w
cml2YXRlKQotICAgICAgICAgICAgcmV0dXJuIE51bGxhYmxlU3RyaW5nMTYoc3RyaW5nMTYoKSwg
dHJ1ZSk7Ci0gICAgICAgIHNpemVfdCBsZW4gPSBsZW5ndGgoKTsKLSAgICAgICAgcmV0dXJuIE51
bGxhYmxlU3RyaW5nMTYobGVuID8gc3RyaW5nMTYoZGF0YSgpLCBsZW4pIDogc3RyaW5nMTYoKSwg
ZmFsc2UpOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBVVEY4U3RyaW5nPgotICAgIHN0
YXRpYyBXZWJTdHJpbmcgZnJvbVVURjgoY29uc3QgVVRGOFN0cmluZyYgcykKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBmcm9tVVRGOChzLmRhdGEoKSwgcy5sZW5ndGgoKSk7Ci0gICAgfQotI2VuZGlm
Ci0KLXByaXZhdGU6Ci0gICAgdm9pZCBhc3NpZ24oV2ViU3RyaW5nUHJpdmF0ZSopOwotICAgIFdl
YlN0cmluZ1ByaXZhdGUqIG1fcHJpdmF0ZTsKLX07Ci0KLWlubGluZSBib29sIG9wZXJhdG9yPT0o
Y29uc3QgV2ViU3RyaW5nJiBhLCBjb25zdCBXZWJTdHJpbmcmIGIpCi17Ci0gICAgcmV0dXJuIGEu
ZXF1YWxzKGIpOwotfQotCi1pbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFdlYlN0cmluZyYg
YSwgY29uc3QgV2ViU3RyaW5nJiBiKQotewotICAgIHJldHVybiAhKGEgPT0gYik7Ci19Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYKSW5kZXg6IFNvdXJjZS9QbGF0Zm9ybS9jaHJv
bWl1bS9wdWJsaWMvV2ViVGhyZWFkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1BsYXRmb3JtL2No
cm9taXVtL3B1YmxpYy9XZWJUaHJlYWQuaAkocmV2aXNpb24gMTQ3NzEwKQorKysgU291cmNlL1Bs
YXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJUaHJlYWQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw3
MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkK
LSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAq
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLSNpZm5kZWYgV2ViVGhyZWFkX2gKLSNkZWZpbmUgV2ViVGhyZWFkX2gK
LQotI2luY2x1ZGUgIldlYkNvbW1vbi5oIgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotLy8gUHJv
dmlkZXMgYW4gaW50ZXJmYWNlIHRvIGFuIGVtYmVkZGVyLWRlZmluZWQgdGhyZWFkIGltcGxlbWVu
dGF0aW9uLgotLy8KLS8vIERlbGV0aW5nIHRoZSB0aHJlYWQgYmxvY2tzIHVudGlsIGFsbCBwZW5k
aW5nLCBub24tZGVsYXllZCB0YXNrcyBoYXZlIGJlZW4KLS8vIHJ1bi4KLWNsYXNzIFdlYlRocmVh
ZCB7Ci1wdWJsaWM6Ci0gICAgY2xhc3MgVGFzayB7Ci0gICAgcHVibGljOgotICAgICAgICB2aXJ0
dWFsIH5UYXNrKCkgeyB9Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBydW4oKSA9IDA7Ci0gICAgfTsK
LQotICAgIGNsYXNzIFRhc2tPYnNlcnZlciB7Ci0gICAgcHVibGljOgotICAgICAgICB2aXJ0dWFs
IH5UYXNrT2JzZXJ2ZXIoKSB7IH0KLSAgICAgICAgdmlydHVhbCB2b2lkIHdpbGxQcm9jZXNzVGFz
aygpID0gMDsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpZFByb2Nlc3NUYXNrKCkgPSAwOwotICAg
IH07Ci0KLSAgICB2aXJ0dWFsIHZvaWQgcG9zdFRhc2soVGFzayopID0gMDsKLSAgICB2aXJ0dWFs
IHZvaWQgcG9zdERlbGF5ZWRUYXNrKFRhc2sqLCBsb25nIGxvbmcgZGVsYXlNcykgPSAwOwotCi0g
ICAgdmlydHVhbCB2b2lkIGFkZFRhc2tPYnNlcnZlcihUYXNrT2JzZXJ2ZXIqKSB7IH0KLSAgICB2
aXJ0dWFsIHZvaWQgcmVtb3ZlVGFza09ic2VydmVyKFRhc2tPYnNlcnZlciopIHsgfQotCi0gICAg
Ly8gZW50ZXJSdW5Mb29wKCkgcHJvY2Vzc2VzIHRhc2tzIHBvc3RlZCB0byB0aGlzIFdlYlRocmVh
ZC4gVGhpcyBjYWxsIGRvZXMgbm90IHJldHVybiB1bnRpbCBzb21lIHRhc2sgY2FsbHMgZXhpdFJ1
bkxvb3AoKS4KLSAgICAvLyBXZWJUaHJlYWQgZG9lcyBub3Qgc3VwcG9ydCBuZXN0aW5nLCBtZWFu
aW5nIHRoYXQgb25jZSB0aGUgcnVuIGxvb3AgaXMgZW50ZXJlZCBmb3IgYSBnaXZlbiBXZWJUaHJl
YWQgaXQgaXMgbm90IHZhbGlkIHRvCi0gICAgLy8gY2FsbCBlbnRlclJ1bkxvb3AoKSBhZ2Fpbi4K
LSAgICB2aXJ0dWFsIHZvaWQgZW50ZXJSdW5Mb29wKCkgPSAwOwotCi0gICAgLy8gZXhpdFJ1bkxv
b3AoKSBydW5zIHRhc2tzIHVudGlsIHRoZXJlIGFyZSBubyB0YXNrcyBhdmFpbGFibGUgdG8gcnVu
LCB0aGVuIHJldHVybnMgY29udHJvbCB0byB0aGUgY2FsbGVyIG9mIGVudGVyUnVuTG9vcCgpLgot
ICAgIC8vIE11c3QgYmUgY2FsbGVkIHdoZW4gdGhlIFdlYlRocmVhZCBpcyBydW5uaW5nLgotICAg
IHZpcnR1YWwgdm9pZCBleGl0UnVuTG9vcCgpID0gMDsKLQotICAgIHZpcnR1YWwgfldlYlRocmVh
ZCgpIHsgfQotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZgpJbmRleDogU291
cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJUaHJlYWRTYWZlRGF0YS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViVGhyZWFkU2FmZURhdGEu
aAkocmV2aXNpb24gMTQ3NzEwKQorKysgU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9X
ZWJUaHJlYWRTYWZlRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDc3ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlz
dHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwot
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVm
IFdlYlRocmVhZFNhZmVEYXRhX2gKLSNkZWZpbmUgV2ViVGhyZWFkU2FmZURhdGFfaAotCi0jaW5j
bHVkZSAiV2ViQ29tbW9uLmgiCi0jaW5jbHVkZSAiV2ViUHJpdmF0ZVB0ci5oIgotCi0jaWYgIVdF
QktJVF9JTVBMRU1FTlRBVElPTgotI2luY2x1ZGUgPHN0cmluZz4KLSNlbmRpZgotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7IGNsYXNzIFJhd0RhdGE7IH0KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLS8v
IEEgY29udGFpbmVyIGZvciByYXcgYnl0ZXMuIEl0IGlzIGluZXhwZW5zaXZlIHRvIGNvcHkgYSBX
ZWJUaHJlYWRTYWZlRGF0YSBvYmplY3QuCi0vLyBJdCBpcyBzYWZlIHRvIHBhc3MgYSBXZWJUaHJl
YWRTYWZlRGF0YSBhY3Jvc3MgdGhyZWFkcyEhIQotY2xhc3MgV2ViVGhyZWFkU2FmZURhdGEgewot
cHVibGljOgotICAgIFdlYlRocmVhZFNhZmVEYXRhKCkgeyB9Ci0gICAgfldlYlRocmVhZFNhZmVE
YXRhKCkgeyByZXNldCgpOyB9Ci0KLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgYXNzaWduKGNvbnN0
IFdlYlRocmVhZFNhZmVEYXRhJik7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHJlc2V0KCk7Ci0K
LSAgICBXRUJLSVRfRVhQT1JUIHNpemVfdCBzaXplKCkgY29uc3Q7Ci0gICAgV0VCS0lUX0VYUE9S
VCBjb25zdCBjaGFyKiBkYXRhKCkgY29uc3Q7Ci0KLSAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7
IHJldHVybiAhc2l6ZSgpOyB9Ci0KLSNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KLSAgICBXZWJU
aHJlYWRTYWZlRGF0YShjb25zdCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6UmF3RGF0YT4mKTsK
LSAgICBXZWJUaHJlYWRTYWZlRGF0YSYgb3BlcmF0b3I9KGNvbnN0IFdURjo6UGFzc1JlZlB0cjxX
ZWJDb3JlOjpSYXdEYXRhPiYpOwotI2Vsc2UKLSAgICBvcGVyYXRvciBzdGQ6OnN0cmluZygpIGNv
bnN0Ci0gICAgewotICAgICAgICBzaXplX3QgbGVuID0gc2l6ZSgpOwotICAgICAgICByZXR1cm4g
bGVuID8gc3RkOjpzdHJpbmcoZGF0YSgpLCBsZW4pIDogc3RkOjpzdHJpbmcoKTsKLSAgICB9Ci0j
ZW5kaWYKLQotcHJpdmF0ZToKLSAgICBXZWJQcml2YXRlUHRyPFdlYkNvcmU6OlJhd0RhdGE+IG1f
cHJpdmF0ZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYKSW5kZXg6IFNv
dXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViVHJhbnNmb3JtQW5pbWF0aW9uQ3VydmUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlRyYW5z
Zm9ybUFuaW1hdGlvbkN1cnZlLmgJKHJldmlzaW9uIDE0NzcxMCkKKysrIFNvdXJjZS9QbGF0Zm9y
bS9jaHJvbWl1bS9wdWJsaWMvV2ViVHJhbnNmb3JtQW5pbWF0aW9uQ3VydmUuaAkod29ya2luZyBj
b3B5KQpAQCAtMSw1MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgotICogQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTCi0gKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdlYlRyYW5zZm9y
bUFuaW1hdGlvbkN1cnZlX2gKLSNkZWZpbmUgV2ViVHJhbnNmb3JtQW5pbWF0aW9uQ3VydmVfaAot
Ci0jaW5jbHVkZSAiV2ViQW5pbWF0aW9uQ3VydmUuaCIKLQotI2luY2x1ZGUgIldlYkNvbW1vbi5o
IgotI2luY2x1ZGUgIldlYlRyYW5zZm9ybUtleWZyYW1lLmgiCi0KLW5hbWVzcGFjZSBXZWJLaXQg
ewotCi0vLyBBIGtleWZyYW1lZCB0cmFuc2Zvcm0gYW5pbWF0aW9uIGN1cnZlLgotY2xhc3MgV2Vi
VHJhbnNmb3JtQW5pbWF0aW9uQ3VydmUgOiBwdWJsaWMgV2ViQW5pbWF0aW9uQ3VydmUgewotcHVi
bGljOgotICAgIHZpcnR1YWwgfldlYlRyYW5zZm9ybUFuaW1hdGlvbkN1cnZlKCkgeyB9Ci0KLSAg
ICAvLyBBZGRzIHRoZSBrZXlmcmFtZSB3aXRoIHRoZSBkZWZhdWx0IHRpbWluZyBmdW5jdGlvbiAo
ZWFzZSkuCi0gICAgdmlydHVhbCB2b2lkIGFkZChjb25zdCBXZWJUcmFuc2Zvcm1LZXlmcmFtZSYp
ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgYWRkKGNvbnN0IFdlYlRyYW5zZm9ybUtleWZyYW1lJiwg
VGltaW5nRnVuY3Rpb25UeXBlKSA9IDA7Ci0gICAgLy8gQWRkcyB0aGUga2V5ZnJhbWUgd2l0aCBh
IGN1c3RvbSwgYmV6aWVyIHRpbWluZyBmdW5jdGlvbi4gTm90ZSwgaXQgaXMKLSAgICAvLyBhc3N1
bWVkIHRoYXQgeDAgPSB5MCA9IDAsIGFuZCB4MyA9IHkzID0gMS4KLSAgICB2aXJ0dWFsIHZvaWQg
YWRkKGNvbnN0IFdlYlRyYW5zZm9ybUtleWZyYW1lJiwgZG91YmxlIHgxLCBkb3VibGUgeTEsIGRv
dWJsZSB4MiwgZG91YmxlIHkyKSA9IDA7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQot
I2VuZGlmIC8vIFdlYlRyYW5zZm9ybUFuaW1hdGlvbkN1cnZlX2gKSW5kZXg6IFNvdXJjZS9QbGF0
Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViVHJhbnNmb3JtS2V5ZnJhbWUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlRyYW5zZm9ybUtleWZyYW1lLmgJ
KHJldmlzaW9uIDE0NzcxMCkKKysrIFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2Vi
VHJhbnNmb3JtS2V5ZnJhbWUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1MSArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElN
UExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTgotICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCi0gKiBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaWZuZGVmIFdlYlRyYW5zZm9ybUtleWZyYW1lX2gKLSNkZWZpbmUgV2ViVHJh
bnNmb3JtS2V5ZnJhbWVfaAotCi0jaW5jbHVkZSAiV2ViUHJpdmF0ZU93blB0ci5oIgotI2luY2x1
ZGUgIldlYlRyYW5zZm9ybU9wZXJhdGlvbnMuaCIKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNs
YXNzIFdlYlRyYW5zZm9ybUtleWZyYW1lIHsKLXB1YmxpYzoKLSAgICAvLyBUYWtlcyBvd25lcnNo
aXAgb2YgdGhlIFdlYlRyYW5mb3JtT3BlcmF0aW9ucyBvYmplY3QuCi0gICAgV0VCS0lUX0VYUE9S
VCBXZWJUcmFuc2Zvcm1LZXlmcmFtZShkb3VibGUgdGltZSwgV2ViVHJhbnNmb3JtT3BlcmF0aW9u
cyogdmFsdWUpOwotCi0gICAgV0VCS0lUX0VYUE9SVCB+V2ViVHJhbnNmb3JtS2V5ZnJhbWUoKTsK
LQotICAgIFdFQktJVF9FWFBPUlQgZG91YmxlIHRpbWUoKSBjb25zdDsKLQotICAgIFdFQktJVF9F
WFBPUlQgY29uc3QgV2ViVHJhbnNmb3JtT3BlcmF0aW9ucyYgdmFsdWUoKSBjb25zdDsKLQotcHJp
dmF0ZToKLSAgICBkb3VibGUgbV90aW1lOwotICAgIFdlYlByaXZhdGVPd25QdHI8V2ViVHJhbnNm
b3JtT3BlcmF0aW9ucz4gbV92YWx1ZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0j
ZW5kaWYgLy8gV2ViVHJhbnNmb3JtS2V5ZnJhbWVfaApJbmRleDogU291cmNlL1BsYXRmb3JtL2No
cm9taXVtL3B1YmxpYy9XZWJUcmFuc2Zvcm1PcGVyYXRpb25zLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJUcmFuc2Zvcm1PcGVyYXRpb25zLmgJKHJl
dmlzaW9uIDE0NzcxMCkKKysrIFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViVHJh
bnNmb3JtT3BlcmF0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDU3ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OCi0gKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKLSAqIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpZm5kZWYgV2ViVHJhbnNmb3JtT3BlcmF0aW9uc19oCi0jZGVmaW5lIFdlYlRy
YW5zZm9ybU9wZXJhdGlvbnNfaAotCi1jbGFzcyBTa01hdHJpeDQ0OwotCi0jZGVmaW5lIFdFQl9U
UkFOU0ZPUk1fT1BFUkFUSU9OU19JU19WSVJUVUFMIDEKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0K
LWNsYXNzIFdlYlRyYW5zZm9ybU9wZXJhdGlvbnMgewotcHVibGljOgotICAgIHZpcnR1YWwgfldl
YlRyYW5zZm9ybU9wZXJhdGlvbnMoKSB7IH0KLQotICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGVz
ZSBvcGVyYXRpb25zIGNhbiBiZSBibGVuZGVkLiBJdCB3aWxsIG9ubHkgcmV0dXJuCi0gICAgLy8g
ZmFsc2UgaWYgd2UgbXVzdCByZXNvcnQgdG8gbWF0cml4IGludGVycG9sYXRpb24sIGFuZCBtYXRy
aXggaW50ZXJwb2xhdGlvbgotICAgIC8vIGZhaWxzICh0aGlzIGNhbiBoYXBwZW4gaWYgZWl0aGVy
IG1hdHJpeCBjYW5ub3QgYmUgZGVjb21wb3NlZCkuCi0gICAgdmlydHVhbCBib29sIGNhbkJsZW5k
V2l0aChjb25zdCBXZWJUcmFuc2Zvcm1PcGVyYXRpb25zJiBvdGhlcikgY29uc3QgPSAwOwotCi0g
ICAgdmlydHVhbCB2b2lkIGFwcGVuZFRyYW5zbGF0ZShkb3VibGUgeCwgZG91YmxlIHksIGRvdWJs
ZSB6KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGFwcGVuZFJvdGF0ZShkb3VibGUgeCwgZG91Ymxl
IHksIGRvdWJsZSB6LCBkb3VibGUgZGVncmVlcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBhcHBl
bmRTY2FsZShkb3VibGUgeCwgZG91YmxlIHksIGRvdWJsZSB6KSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIGFwcGVuZFNrZXcoZG91YmxlIHgsIGRvdWJsZSB5KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lk
IGFwcGVuZFBlcnNwZWN0aXZlKGRvdWJsZSBkZXB0aCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBh
cHBlbmRNYXRyaXgoY29uc3QgU2tNYXRyaXg0NCYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgYXBw
ZW5kSWRlbnRpdHkoKSA9IDA7Ci0KLSAgICB2aXJ0dWFsIGJvb2wgaXNJZGVudGl0eSgpIGNvbnN0
ID0gMDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gV2ViVHJhbnNm
b3JtT3BlcmF0aW9uc19oCi0KSW5kZXg6IFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMv
V2ViVVJMLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9X
ZWJVUkwuaAkocmV2aXNpb24gMTQ3NzEwKQorKysgU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1
YmxpYy9XZWJVUkwuaAkod29ya2luZyBjb3B5KQpAQCAtMSwxNTggKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmli
dXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
Ci0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgV2Vi
VVJMX2gKLSNkZWZpbmUgV2ViVVJMX2gKLQotI2luY2x1ZGUgIldlYkNTdHJpbmcuaCIKLSNpbmNs
dWRlIDxnb29nbGV1cmwvc3JjL3VybF9wYXJzZS5oPgotCi0jaWYgV0VCS0lUX0lNUExFTUVOVEFU
SU9OCi1uYW1lc3BhY2UgV2ViQ29yZSB7IGNsYXNzIEtVUkw7IH0KLSNlbHNlCi0jaW5jbHVkZSA8
Z29vZ2xldXJsL3NyYy9ndXJsLmg+Ci0jZW5kaWYKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNs
YXNzIFdlYlVSTCB7Ci1wdWJsaWM6Ci0gICAgfldlYlVSTCgpCi0gICAgewotICAgIH0KLQotICAg
IFdlYlVSTCgpIDogbV9pc1ZhbGlkKGZhbHNlKQotICAgIHsKLSAgICB9Ci0KLSAgICBXZWJVUkwo
Y29uc3QgV2ViQ1N0cmluZyYgc3BlYywgY29uc3QgdXJsX3BhcnNlOjpQYXJzZWQmIHBhcnNlZCwg
Ym9vbCBpc1ZhbGlkKQotICAgICAgICA6IG1fc3BlYyhzcGVjKQotICAgICAgICAsIG1fcGFyc2Vk
KHBhcnNlZCkKLSAgICAgICAgLCBtX2lzVmFsaWQoaXNWYWxpZCkKLSAgICB7Ci0gICAgfQotCi0g
ICAgV2ViVVJMKGNvbnN0IFdlYlVSTCYgcykKLSAgICAgICAgOiBtX3NwZWMocy5tX3NwZWMpCi0g
ICAgICAgICwgbV9wYXJzZWQocy5tX3BhcnNlZCkKLSAgICAgICAgLCBtX2lzVmFsaWQocy5tX2lz
VmFsaWQpCi0gICAgewotICAgIH0KLQotICAgIFdlYlVSTCYgb3BlcmF0b3I9KGNvbnN0IFdlYlVS
TCYgcykKLSAgICB7Ci0gICAgICAgIG1fc3BlYyA9IHMubV9zcGVjOwotICAgICAgICBtX3BhcnNl
ZCA9IHMubV9wYXJzZWQ7Ci0gICAgICAgIG1faXNWYWxpZCA9IHMubV9pc1ZhbGlkOwotICAgICAg
ICByZXR1cm4gKnRoaXM7Ci0gICAgfQotCi0gICAgdm9pZCBhc3NpZ24oY29uc3QgV2ViQ1N0cmlu
ZyYgc3BlYywgY29uc3QgdXJsX3BhcnNlOjpQYXJzZWQmIHBhcnNlZCwgYm9vbCBpc1ZhbGlkKQot
ICAgIHsKLSAgICAgICAgbV9zcGVjID0gc3BlYzsKLSAgICAgICAgbV9wYXJzZWQgPSBwYXJzZWQ7
Ci0gICAgICAgIG1faXNWYWxpZCA9IGlzVmFsaWQ7Ci0gICAgfQotCi0gICAgY29uc3QgV2ViQ1N0
cmluZyYgc3BlYygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9zcGVjOwotICAgIH0K
LQotICAgIGNvbnN0IHVybF9wYXJzZTo6UGFyc2VkJiBwYXJzZWQoKSBjb25zdAotICAgIHsKLSAg
ICAgICAgcmV0dXJuIG1fcGFyc2VkOwotICAgIH0KLQotICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0
Ci0gICAgewotICAgICAgICByZXR1cm4gbV9pc1ZhbGlkOwotICAgIH0KLQotICAgIGJvb2wgaXNF
bXB0eSgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9zcGVjLmlzRW1wdHkoKTsKLSAg
ICB9Ci0KLSAgICBib29sIGlzTnVsbCgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9z
cGVjLmlzRW1wdHkoKTsKLSAgICB9Ci0KLSNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KLSAgICBX
ZWJVUkwoY29uc3QgV2ViQ29yZTo6S1VSTCYpOwotICAgIFdlYlVSTCYgb3BlcmF0b3I9KGNvbnN0
IFdlYkNvcmU6OktVUkwmKTsKLSAgICBvcGVyYXRvciBXZWJDb3JlOjpLVVJMKCkgY29uc3Q7Ci0j
ZWxzZQotICAgIFdlYlVSTChjb25zdCBHVVJMJiBnKQotICAgICAgICA6IG1fc3BlYyhnLnBvc3Np
Ymx5X2ludmFsaWRfc3BlYygpKQotICAgICAgICAsIG1fcGFyc2VkKGcucGFyc2VkX2Zvcl9wb3Nz
aWJseV9pbnZhbGlkX3NwZWMoKSkKLSAgICAgICAgLCBtX2lzVmFsaWQoZy5pc192YWxpZCgpKQot
ICAgIHsKLSAgICB9Ci0KLSAgICBXZWJVUkwmIG9wZXJhdG9yPShjb25zdCBHVVJMJiBnKQotICAg
IHsKLSAgICAgICAgbV9zcGVjID0gZy5wb3NzaWJseV9pbnZhbGlkX3NwZWMoKTsKLSAgICAgICAg
bV9wYXJzZWQgPSBnLnBhcnNlZF9mb3JfcG9zc2libHlfaW52YWxpZF9zcGVjKCk7Ci0gICAgICAg
IG1faXNWYWxpZCA9IGcuaXNfdmFsaWQoKTsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0K
LQotICAgIG9wZXJhdG9yIEdVUkwoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGlzTnVs
bCgpID8gR1VSTCgpIDogR1VSTChtX3NwZWMuZGF0YSgpLCBtX3NwZWMubGVuZ3RoKCksIG1fcGFy
c2VkLCBtX2lzVmFsaWQpOwotICAgIH0KLSNlbmRpZgotCi1wcml2YXRlOgotICAgIFdlYkNTdHJp
bmcgbV9zcGVjOyAgLy8gVVRGLTggZW5jb2RlZAotICAgIHVybF9wYXJzZTo6UGFyc2VkIG1fcGFy
c2VkOwotICAgIGJvb2wgbV9pc1ZhbGlkOwotfTsKLQotaW5saW5lIGJvb2wgb3BlcmF0b3I8KGNv
bnN0IFdlYlVSTCYgYSwgY29uc3QgV2ViVVJMJiBiKQotewotICAgIHJldHVybiBhLnNwZWMoKSA8
IGIuc3BlYygpOwotfQotCi1pbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFdlYlVSTCYgYSwg
Y29uc3QgV2ViVVJMJiBiKQotewotICAgIHJldHVybiAhYS5zcGVjKCkuY29tcGFyZShiLnNwZWMo
KSk7Ci19Ci0KLWlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgV2ViVVJMJiBhLCBjb25zdCBX
ZWJVUkwmIGIpCi17Ci0gICAgcmV0dXJuICEoYSA9PSBiKTsKLX0KLQotfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0Ci0KLSNlbmRpZgpJbmRleDogU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9X
ZWJVUkxFcnJvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJs
aWMvV2ViVVJMRXJyb3IuaAkocmV2aXNpb24gMTQ3NzEwKQorKysgU291cmNlL1BsYXRmb3JtL2No
cm9taXVtL3B1YmxpYy9XZWJVUkxFcnJvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDc2ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0g
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAq
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaWZuZGVmIFdlYlVSTEVycm9yX2gKLSNkZWZpbmUgV2ViVVJMRXJyb3JfaAotCi0jaW5jbHVk
ZSAiV2ViU3RyaW5nLmgiCi0jaW5jbHVkZSAiV2ViVVJMLmgiCi0KLSNpZiBXRUJLSVRfSU1QTEVN
RU5UQVRJT04KLW5hbWVzcGFjZSBXZWJDb3JlIHsgY2xhc3MgUmVzb3VyY2VFcnJvcjsgfQotI2Vu
ZGlmCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1zdHJ1Y3QgV2ViVVJMRXJyb3IgewotICAgIC8v
IEEgbmFtZXNwYWNlIGZvciAicmVhc29uIiB0byBzdXBwb3J0IHZhcmlvdXMgbGF5ZXJzIGdlbmVy
YXRpbmcKLSAgICAvLyByZXNvdXJjZSBlcnJvcnMuIFdlYktpdCBkb2VzIG5vdCBjYXJlIGFib3V0
IHRoZSB2YWx1ZSBvZiB0aGlzCi0gICAgLy8gc3RyaW5nIGFzIGl0IHdpbGwganVzdCBiZSBwYXNz
ZWQgdmlhIGNhbGxiYWNrcyB0byB0aGUgY29uc3VtZXIuCi0gICAgV2ViU3RyaW5nIGRvbWFpbjsK
LQotICAgIC8vIEEgbnVtZXJpYyBlcnJvciBjb2RlIGRldGFpbGluZyB0aGUgcmVhc29uIGZvciB0
aGlzIGVycm9yLiBBIHZhbHVlCi0gICAgLy8gb2YgMCBtZWFucyBubyBlcnJvci4gV2ViS2l0IGRv
ZXMgbm90IGludGVycHJldCB0aGUgbWVhbmluZyBvZiBvdGhlcgotICAgIC8vIHZhbHVlcyBhbmQg
bm9ybWFsbHkganVzdCBmb3J3YXJkcyB0aGlzIGVycm9yIGluZm9ybWF0aW9uIGJhY2sgdG8gdGhl
Ci0gICAgLy8gZW1iZWRkZXIgKHNlZSBmb3IgZXhhbXBsZSBXZWJGcmFtZUNsaWVudCkuCi0gICAg
aW50IHJlYXNvbjsKLQotICAgIC8vIEEgZmxhZyBzaG93aW5nIHdoZXRoZXIgdGhpcyBlcnJvciBz
aG91bGQgYmUgdHJlYXRlZCBhcyBhIGNhbmNlbGxhdGlvbiwKLSAgICAvLyBlLmcuIHdlIGRvIG5v
dCBzaG93IGNvbnNvbGUgZXJyb3JzIGZvciBjYW5jZWxsYXRpb25zLgotICAgIGJvb2wgaXNDYW5j
ZWxsYXRpb247Ci0KLSAgICAvLyBUaGUgdXJsIHRoYXQgZmFpbGVkIHRvIGxvYWQuCi0gICAgV2Vi
VVJMIHVucmVhY2hhYmxlVVJMOwotCi0gICAgLy8gQSBkZXNjcmlwdGlvbiBmb3IgdGhlIGVycm9y
LgotICAgIFdlYlN0cmluZyBsb2NhbGl6ZWREZXNjcmlwdGlvbjsKLQotICAgIFdlYlVSTEVycm9y
KCkgOiByZWFzb24oMCksIGlzQ2FuY2VsbGF0aW9uKGZhbHNlKSB7IH0KLQotI2lmIFdFQktJVF9J
TVBMRU1FTlRBVElPTgotICAgIFdlYlVSTEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJy
b3ImKTsKLSAgICBXZWJVUkxFcnJvciYgb3BlcmF0b3I9KGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
RXJyb3ImKTsKLSAgICBvcGVyYXRvciBXZWJDb3JlOjpSZXNvdXJjZUVycm9yKCkgY29uc3Q7Ci0j
ZW5kaWYKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYKSW5kZXg6IFNvdXJj
ZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViVVJMTG9hZFRpbWluZy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViVVJMTG9hZFRpbWluZy5oCShy
ZXZpc2lvbiAxNDc3MTApCisrKyBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlVS
TExvYWRUaW1pbmcuaAkod29ya2luZyBjb3B5KQpAQCAtMSwxMDggKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmli
dXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
Ci0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgV2Vi
VVJMTG9hZFRpbWluZ19oCi0jZGVmaW5lIFdlYlVSTExvYWRUaW1pbmdfaAotCi0jaW5jbHVkZSAi
V2ViQ29tbW9uLmgiCi0jaW5jbHVkZSAiV2ViUHJpdmF0ZVB0ci5oIgotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7IGNsYXNzIFJlc291cmNlTG9hZFRpbWluZzsgfQotCi1uYW1lc3BhY2UgV2ViS2l0IHsK
LWNsYXNzIFdlYlN0cmluZzsKLQotY2xhc3MgV2ViVVJMTG9hZFRpbWluZyB7Ci1wdWJsaWM6Ci0g
ICAgfldlYlVSTExvYWRUaW1pbmcoKSB7IHJlc2V0KCk7IH0KLQotICAgIFdlYlVSTExvYWRUaW1p
bmcoKSB7IH0KLSAgICBXZWJVUkxMb2FkVGltaW5nKGNvbnN0IFdlYlVSTExvYWRUaW1pbmcmIGQp
IHsgYXNzaWduKGQpOyB9Ci0gICAgV2ViVVJMTG9hZFRpbWluZyYgb3BlcmF0b3I9KGNvbnN0IFdl
YlVSTExvYWRUaW1pbmcmIGQpCi0gICAgewotICAgICAgICBhc3NpZ24oZCk7Ci0gICAgICAgIHJl
dHVybiAqdGhpczsKLSAgICB9Ci0KLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgaW5pdGlhbGl6ZSgp
OwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCByZXNldCgpOwotICAgIFdFQktJVF9FWFBPUlQgdm9p
ZCBhc3NpZ24oY29uc3QgV2ViVVJMTG9hZFRpbWluZyYpOwotCi0gICAgYm9vbCBpc051bGwoKSBj
b25zdCB7IHJldHVybiBtX3ByaXZhdGUuaXNOdWxsKCk7IH0KLQotICAgIFdFQktJVF9FWFBPUlQg
ZG91YmxlIHJlcXVlc3RUaW1lKCkgY29uc3Q7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldFJl
cXVlc3RUaW1lKGRvdWJsZSk7Ci0KLSAgICBXRUJLSVRfRVhQT1JUIGludCBwcm94eVN0YXJ0KCkg
Y29uc3Q7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldFByb3h5U3RhcnQoaW50KTsKLQotICAg
IFdFQktJVF9FWFBPUlQgaW50IHByb3h5RW5kKCkgY29uc3Q7Ci0gICAgV0VCS0lUX0VYUE9SVCB2
b2lkIHNldFByb3h5RW5kKGludCk7Ci0KLSAgICBXRUJLSVRfRVhQT1JUIGludCBkbnNTdGFydCgp
IGNvbnN0OwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRETlNTdGFydChpbnQpOwotCi0gICAg
V0VCS0lUX0VYUE9SVCBpbnQgZG5zRW5kKCkgY29uc3Q7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lk
IHNldEROU0VuZChpbnQpOwotCi0gICAgV0VCS0lUX0VYUE9SVCBpbnQgY29ubmVjdFN0YXJ0KCkg
Y29uc3Q7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldENvbm5lY3RTdGFydChpbnQpOwotCi0g
ICAgV0VCS0lUX0VYUE9SVCBpbnQgY29ubmVjdEVuZCgpIGNvbnN0OwotICAgIFdFQktJVF9FWFBP
UlQgdm9pZCBzZXRDb25uZWN0RW5kKGludCk7Ci0KLSAgICBXRUJLSVRfRVhQT1JUIGludCBzZW5k
U3RhcnQoKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0U2VuZFN0YXJ0KGludCk7
Ci0KLSAgICBXRUJLSVRfRVhQT1JUIGludCBzZW5kRW5kKCkgY29uc3Q7Ci0gICAgV0VCS0lUX0VY
UE9SVCB2b2lkIHNldFNlbmRFbmQoaW50KTsKLQotICAgIFdFQktJVF9FWFBPUlQgaW50IHJlY2Vp
dmVIZWFkZXJzRW5kKCkgY29uc3Q7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldFJlY2VpdmVI
ZWFkZXJzRW5kKGludCk7Ci0KLSAgICBXRUJLSVRfRVhQT1JUIGludCBzc2xTdGFydCgpIGNvbnN0
OwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRTU0xTdGFydChpbnQpOwotCi0gICAgV0VCS0lU
X0VYUE9SVCBpbnQgc3NsRW5kKCkgY29uc3Q7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldFNT
TEVuZChpbnQpOwotCi0jaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCi0gICAgV2ViVVJMTG9hZFRp
bWluZyhjb25zdCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6UmVzb3VyY2VMb2FkVGltaW5nPiYp
OwotICAgIFdlYlVSTExvYWRUaW1pbmcmIG9wZXJhdG9yPShjb25zdCBXVEY6OlBhc3NSZWZQdHI8
V2ViQ29yZTo6UmVzb3VyY2VMb2FkVGltaW5nPiYpOwotICAgIG9wZXJhdG9yIFdURjo6UGFzc1Jl
ZlB0cjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRUaW1pbmc+KCkgY29uc3Q7Ci0jZW5kaWYKLQotcHJp
dmF0ZToKLSAgICBXZWJQcml2YXRlUHRyPFdlYkNvcmU6OlJlc291cmNlTG9hZFRpbWluZz4gbV9w
cml2YXRlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZgpJbmRleDogU291
cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJVUkxMb2FkZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlVSTExvYWRlci5oCShyZXZpc2lv
biAxNDc3MTApCisrKyBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlVSTExvYWRl
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDc2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDksIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9u
LgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICog
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdlYlVSTExv
YWRlcl9oCi0jZGVmaW5lIFdlYlVSTExvYWRlcl9oCi0KLSNpbmNsdWRlICJXZWJDb21tb24uaCIK
LSNpbmNsdWRlICJXZWJVUkxSZXF1ZXN0LmgiCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1jbGFz
cyBXZWJEYXRhOwotY2xhc3MgV2ViVVJMTG9hZGVyQ2xpZW50OwotY2xhc3MgV2ViVVJMUmVzcG9u
c2U7Ci1zdHJ1Y3QgV2ViVVJMRXJyb3I7Ci0KLWNsYXNzIFdlYlVSTExvYWRlciB7Ci1wdWJsaWM6
Ci0gICAgLy8gVGhlIFdlYlVSTExvYWRlciBtYXkgYmUgZGVsZXRlZCBpbiBhIGNhbGwgdG8gaXRz
IGNsaWVudC4KLSAgICB2aXJ0dWFsIH5XZWJVUkxMb2FkZXIoKSB7fQotCi0gICAgLy8gTG9hZCB0
aGUgcmVxdWVzdCBzeW5jaHJvbm91c2x5LCByZXR1cm5pbmcgcmVzdWx0cyBkaXJlY3RseSB0byB0
aGUKLSAgICAvLyBjYWxsZXIgdXBvbiBjb21wbGV0aW9uLiAgVGhlcmUgaXMgbm8gbWVjaGFuaXNt
IHRvIGludGVycnVwdCBhCi0gICAgLy8gc3luY2hyb25vdXMgbG9hZCEhCi0gICAgdmlydHVhbCB2
b2lkIGxvYWRTeW5jaHJvbm91c2x5KGNvbnN0IFdlYlVSTFJlcXVlc3QmLAotICAgICAgICBXZWJV
UkxSZXNwb25zZSYsIFdlYlVSTEVycm9yJiwgV2ViRGF0YSYgZGF0YSkgPSAwOwotCi0gICAgLy8g
TG9hZCB0aGUgcmVxdWVzdCBhc3luY2hyb25vdXNseSwgc2VuZGluZyBub3RpZmljYXRpb25zIHRv
IHRoZSBnaXZlbgotICAgIC8vIGNsaWVudC4gIFRoZSBjbGllbnQgd2lsbCByZWNlaXZlIG5vIGZ1
cnRoZXIgbm90aWZpY2F0aW9ucyBpZiB0aGUKLSAgICAvLyBsb2FkZXIgaXMgZGlzcG9zZWQgYmVm
b3JlIGl0IGNvbXBsZXRlcyBpdHMgd29yay4KLSAgICB2aXJ0dWFsIHZvaWQgbG9hZEFzeW5jaHJv
bm91c2x5KGNvbnN0IFdlYlVSTFJlcXVlc3QmLAotICAgICAgICBXZWJVUkxMb2FkZXJDbGllbnQq
KSA9IDA7Ci0KLSAgICAvLyBDYW5jZWxzIGFuIGFzeW5jaHJvbm91cyBsb2FkLiAgVGhpcyB3aWxs
IGFwcGVhciBhcyBhIGxvYWQgZXJyb3IgdG8KLSAgICAvLyB0aGUgY2xpZW50LgotICAgIHZpcnR1
YWwgdm9pZCBjYW5jZWwoKSA9IDA7Ci0KLSAgICAvLyBTdXNwZW5kcy9yZXN1bWVzIGFuIGFzeW5j
aHJvbm91cyBsb2FkLgotICAgIHZpcnR1YWwgdm9pZCBzZXREZWZlcnNMb2FkaW5nKGJvb2wpID0g
MDsKLQotICAgIC8vIE5vdGlmaWVzIHRoZSBsb2FkZXIgdGhhdCB0aGUgcHJpb3JpdHkgb2YgYSBX
ZWJVUkxSZXF1ZXN0IGhhcyBjaGFuZ2VkIGZyb20KLSAgICAvLyBpdHMgcHJldmlvdXMgdmFsdWUu
IEZvciBleGFtcGxlLCBhIHByZWxvYWQgcmVxdWVzdCBzdGFydHMgd2l0aCBsb3cKLSAgICAvLyBw
cmlvcml0eSwgYnV0IG1heSBpbmNyZWFzZSB3aGVuIHRoZSByZXNvdXJjZSBpcyBuZWVkZWQgZm9y
IHJlbmRlcmluZy4KLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlUHJpb3JpdHkoV2ViVVJMUmVx
dWVzdDo6UHJpb3JpdHkgbmV3UHJpb3JpdHkpIHsgfQotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0Ci0KLSNlbmRpZgpJbmRleDogU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJV
UkxMb2FkZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0v
cHVibGljL1dlYlVSTExvYWRlckNsaWVudC5oCShyZXZpc2lvbiAxNDc3MTApCisrKyBTb3VyY2Uv
UGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlVSTExvYWRlckNsaWVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDc4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgot
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdlYlVSTExvYWRlckNsaWVudF9oCi0jZGVmaW5l
IFdlYlVSTExvYWRlckNsaWVudF9oCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1jbGFzcyBXZWJV
UkxMb2FkZXI7Ci1jbGFzcyBXZWJVUkxSZXF1ZXN0OwotY2xhc3MgV2ViVVJMUmVzcG9uc2U7Ci1z
dHJ1Y3QgV2ViVVJMRXJyb3I7Ci0KLWNsYXNzIFdlYlVSTExvYWRlckNsaWVudCB7Ci1wdWJsaWM6
Ci0gICAgLy8gQ2FsbGVkIHdoZW4gZm9sbG93aW5nIGEgcmVkaXJlY3QuIHxuZXdSZXF1ZXN0fCBj
b250YWlucyB0aGUgcmVxdWVzdAotICAgIC8vIGdlbmVyYXRlZCBieSB0aGUgcmVkaXJlY3QuIFRo
ZSBjbGllbnQgbWF5IG1vZGlmeSB8bmV3UmVxdWVzdHwuCi0gICAgdmlydHVhbCB2b2lkIHdpbGxT
ZW5kUmVxdWVzdCgKLSAgICAgICAgV2ViVVJMTG9hZGVyKiwgV2ViVVJMUmVxdWVzdCYgbmV3UmVx
dWVzdCwgY29uc3QgV2ViVVJMUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpIHsgfQotCi0gICAg
Ly8gQ2FsbGVkIHRvIHJlcG9ydCB1cGxvYWQgcHJvZ3Jlc3MuIFRoZSBieXRlcyByZXBvcnRlZCBj
b3JyZXNwb25kIHRvCi0gICAgLy8gdGhlIEhUVFAgbWVzc2FnZSBib2R5LgotICAgIHZpcnR1YWwg
dm9pZCBkaWRTZW5kRGF0YSgKLSAgICAgICAgV2ViVVJMTG9hZGVyKiwgdW5zaWduZWQgbG9uZyBs
b25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkgeyB9
Ci0KLSAgICAvLyBDYWxsZWQgd2hlbiByZXNwb25zZSBoZWFkZXJzIGFyZSByZWNlaXZlZC4KLSAg
ICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYlVSTExvYWRlciosIGNvbnN0IFdl
YlVSTFJlc3BvbnNlJikgeyB9Ci0KLSAgICAvLyBDYWxsZWQgd2hlbiBhIGNodW5rIG9mIHJlc3Bv
bnNlIGRhdGEgaXMgZG93bmxvYWRlZC4gVGhpcyBpcyBvbmx5IGNhbGxlZAotICAgIC8vIGlmIFdl
YlVSTFJlcXVlc3QncyBkb3dubG9hZFRvRmlsZSBmbGFnIHdhcyBzZXQgdG8gdHJ1ZS4KLSAgICB2
aXJ0dWFsIHZvaWQgZGlkRG93bmxvYWREYXRhKFdlYlVSTExvYWRlciosIGludCBkYXRhTGVuZ3Ro
KSB7IH0KLQotICAgIC8vIENhbGxlZCB3aGVuIGEgY2h1bmsgb2YgcmVzcG9uc2UgZGF0YSBpcyBy
ZWNlaXZlZC4KLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoV2ViVVJMTG9hZGVyKiwg
Y29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkg
eyB9Ci0KLSAgICAvLyBDYWxsZWQgd2hlbiBhIGNodW5rIG9mIHJlbmRlcmVyLWdlbmVyYXRlZCBt
ZXRhZGF0YSBpcyByZWNlaXZlZCBmcm9tIHRoZSBjYWNoZS4KLSAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVjZWl2ZUNhY2hlZE1ldGFkYXRhKFdlYlVSTExvYWRlciosIGNvbnN0IGNoYXIqIGRhdGEsIGlu
dCBkYXRhTGVuZ3RoKSB7IH0KLQotICAgIC8vIENhbGxlZCB3aGVuIHRoZSBsb2FkIGNvbXBsZXRl
cyBzdWNjZXNzZnVsbHkuCi0gICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoV2ViVVJM
TG9hZGVyKiwgZG91YmxlIGZpbmlzaFRpbWUpIHsgfQotCi0gICAgLy8gQ2FsbGVkIHdoZW4gdGhl
IGxvYWQgY29tcGxldGVzIHdpdGggYW4gZXJyb3IuCi0gICAgdmlydHVhbCB2b2lkIGRpZEZhaWwo
V2ViVVJMTG9hZGVyKiwgY29uc3QgV2ViVVJMRXJyb3ImKSB7IH0KLQotcHJvdGVjdGVkOgotICAg
IHZpcnR1YWwgfldlYlVSTExvYWRlckNsaWVudCgpIHsgfQotfTsKLQotfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0Ci0KLSNlbmRpZgpJbmRleDogU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9X
ZWJVUkxSZXF1ZXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1
YmxpYy9XZWJVUkxSZXF1ZXN0LmgJKHJldmlzaW9uIDE0NzcxMCkKKysrIFNvdXJjZS9QbGF0Zm9y
bS9jaHJvbWl1bS9wdWJsaWMvV2ViVVJMUmVxdWVzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDIw
OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6
Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
LSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2lmbmRlZiBXZWJVUkxSZXF1ZXN0X2gKLSNkZWZpbmUgV2ViVVJMUmVxdWVzdF9o
Ci0KLSNpbmNsdWRlICJXZWJDb21tb24uaCIKLSNpbmNsdWRlICJXZWJIVFRQQm9keS5oIgotCi0j
aWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCi1uYW1lc3BhY2UgV2ViQ29yZSB7IGNsYXNzIFJlc291
cmNlUmVxdWVzdDsgfQotI2VuZGlmCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1jbGFzcyBXZWJD
U3RyaW5nOwotY2xhc3MgV2ViSFRUUEJvZHk7Ci1jbGFzcyBXZWJIVFRQSGVhZGVyVmlzaXRvcjsK
LWNsYXNzIFdlYlN0cmluZzsKLWNsYXNzIFdlYlVSTDsKLWNsYXNzIFdlYlVSTFJlcXVlc3RQcml2
YXRlOwotCi1jbGFzcyBXZWJVUkxSZXF1ZXN0IHsKLXB1YmxpYzoKLSAgICBlbnVtIENhY2hlUG9s
aWN5IHsKLSAgICAgICAgVXNlUHJvdG9jb2xDYWNoZVBvbGljeSwgLy8gbm9ybWFsIGxvYWQKLSAg
ICAgICAgUmVsb2FkSWdub3JpbmdDYWNoZURhdGEsIC8vIHJlbG9hZAotICAgICAgICBSZXR1cm5D
YWNoZURhdGFFbHNlTG9hZCwgLy8gYmFjay9mb3J3YXJkIG9yIGVuY29kaW5nIGNoYW5nZSAtIGFs
bG93IHN0YWxlIGRhdGEKLSAgICAgICAgUmV0dXJuQ2FjaGVEYXRhRG9udExvYWQsIC8vIHJlc3Vs
dHMgb2YgYSBwb3N0IC0gYWxsb3cgc3RhbGUgZGF0YSBhbmQgb25seSB1c2UgY2FjaGUKLSAgICB9
OwotCi0gICAgZW51bSBQcmlvcml0eSB7Ci0gICAgICAgIFByaW9yaXR5VW5yZXNvbHZlZCA9IC0x
LAotICAgICAgICBQcmlvcml0eVZlcnlMb3csCi0gICAgICAgIFByaW9yaXR5TG93LAotICAgICAg
ICBQcmlvcml0eU1lZGl1bSwKLSAgICAgICAgUHJpb3JpdHlIaWdoLAotICAgICAgICBQcmlvcml0
eVZlcnlIaWdoLAotICAgIH07Ci0KLSAgICBlbnVtIFRhcmdldFR5cGUgewotICAgICAgICBUYXJn
ZXRJc01haW5GcmFtZSA9IDAsCi0gICAgICAgIFRhcmdldElzU3ViZnJhbWUgPSAxLAotICAgICAg
ICBUYXJnZXRJc1N1YnJlc291cmNlID0gMiwKLSAgICAgICAgVGFyZ2V0SXNTdHlsZVNoZWV0ID0g
MywKLSAgICAgICAgVGFyZ2V0SXNTY3JpcHQgPSA0LAotICAgICAgICBUYXJnZXRJc0ZvbnRSZXNv
dXJjZSA9IDUsCi0gICAgICAgIFRhcmdldElzSW1hZ2UgPSA2LAotICAgICAgICBUYXJnZXRJc09i
amVjdCA9IDcsCi0gICAgICAgIFRhcmdldElzTWVkaWEgPSA4LAotICAgICAgICBUYXJnZXRJc1dv
cmtlciA9IDksCi0gICAgICAgIFRhcmdldElzU2hhcmVkV29ya2VyID0gMTAsCi0gICAgICAgIFRh
cmdldElzUHJlZmV0Y2ggPSAxMSwKLSAgICAgICAgVGFyZ2V0SXNGYXZpY29uID0gMTIsCi0gICAg
ICAgIFRhcmdldElzWEhSID0gMTMsCi0gICAgICAgIFRhcmdldElzVGV4dFRyYWNrID0gMTQsCi0g
ICAgICAgIFRhcmdldElzVW5zcGVjaWZpZWQgPSAxNSwKLSAgICB9OwotCi0gICAgY2xhc3MgRXh0
cmFEYXRhIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIHZpcnR1YWwgfkV4dHJhRGF0YSgpIHsgfQot
ICAgIH07Ci0KLSAgICB+V2ViVVJMUmVxdWVzdCgpIHsgcmVzZXQoKTsgfQotCi0gICAgV2ViVVJM
UmVxdWVzdCgpIDogbV9wcml2YXRlKDApIHsgfQotICAgIFdlYlVSTFJlcXVlc3QoY29uc3QgV2Vi
VVJMUmVxdWVzdCYgcikgOiBtX3ByaXZhdGUoMCkgeyBhc3NpZ24ocik7IH0KLSAgICBXZWJVUkxS
ZXF1ZXN0JiBvcGVyYXRvcj0oY29uc3QgV2ViVVJMUmVxdWVzdCYgcikKLSAgICB7Ci0gICAgICAg
IGFzc2lnbihyKTsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotICAgIGV4cGxpY2l0
IFdlYlVSTFJlcXVlc3QoY29uc3QgV2ViVVJMJiB1cmwpIDogbV9wcml2YXRlKDApCi0gICAgewot
ICAgICAgICBpbml0aWFsaXplKCk7Ci0gICAgICAgIHNldFVSTCh1cmwpOwotICAgIH0KLQotICAg
IFdFQktJVF9FWFBPUlQgdm9pZCBpbml0aWFsaXplKCk7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lk
IHJlc2V0KCk7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIGFzc2lnbihjb25zdCBXZWJVUkxSZXF1
ZXN0Jik7Ci0KLSAgICBXRUJLSVRfRVhQT1JUIGJvb2wgaXNOdWxsKCkgY29uc3Q7Ci0KLSAgICBX
RUJLSVRfRVhQT1JUIFdlYlVSTCB1cmwoKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQg
c2V0VVJMKGNvbnN0IFdlYlVSTCYpOwotCi0gICAgLy8gVXNlZCB0byBpbXBsZW1lbnQgdGhpcmQt
cGFydHkgY29va2llIGJsb2NraW5nLgotICAgIFdFQktJVF9FWFBPUlQgV2ViVVJMIGZpcnN0UGFy
dHlGb3JDb29raWVzKCkgY29uc3Q7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldEZpcnN0UGFy
dHlGb3JDb29raWVzKGNvbnN0IFdlYlVSTCYpOwotCi0gICAgV0VCS0lUX0VYUE9SVCBib29sIGFs
bG93Q29va2llcygpIGNvbnN0OwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRBbGxvd0Nvb2tp
ZXMoYm9vbCk7Ci0KLSAgICAvLyBDb250cm9scyB3aGV0aGVyIHVzZXIgbmFtZSwgcGFzc3dvcmQs
IGFuZCBjb29raWVzIG1heSBiZSBzZW50IHdpdGggdGhlCi0gICAgLy8gcmVxdWVzdC4gKElmIGZh
bHNlLCB0aGlzIG92ZXJyaWRlcyBhbGxvd0Nvb2tpZXMuKQotICAgIFdFQktJVF9FWFBPUlQgYm9v
bCBhbGxvd1N0b3JlZENyZWRlbnRpYWxzKCkgY29uc3Q7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lk
IHNldEFsbG93U3RvcmVkQ3JlZGVudGlhbHMoYm9vbCk7Ci0KLSAgICBXRUJLSVRfRVhQT1JUIENh
Y2hlUG9saWN5IGNhY2hlUG9saWN5KCkgY29uc3Q7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNl
dENhY2hlUG9saWN5KENhY2hlUG9saWN5KTsKLQotICAgIFdFQktJVF9FWFBPUlQgV2ViU3RyaW5n
IGh0dHBNZXRob2QoKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0SFRUUE1ldGhv
ZChjb25zdCBXZWJTdHJpbmcmKTsKLQotICAgIFdFQktJVF9FWFBPUlQgV2ViU3RyaW5nIGh0dHBI
ZWFkZXJGaWVsZChjb25zdCBXZWJTdHJpbmcmIG5hbWUpIGNvbnN0OwotICAgIFdFQktJVF9FWFBP
UlQgdm9pZCBzZXRIVFRQSGVhZGVyRmllbGQoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBX
ZWJTdHJpbmcmIHZhbHVlKTsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgYWRkSFRUUEhlYWRlckZp
ZWxkKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViU3RyaW5nJiB2YWx1ZSk7Ci0gICAg
V0VCS0lUX0VYUE9SVCB2b2lkIGNsZWFySFRUUEhlYWRlckZpZWxkKGNvbnN0IFdlYlN0cmluZyYg
bmFtZSk7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHZpc2l0SFRUUEhlYWRlckZpZWxkcyhXZWJI
VFRQSGVhZGVyVmlzaXRvciopIGNvbnN0OwotCi0gICAgV0VCS0lUX0VYUE9SVCBXZWJIVFRQQm9k
eSBodHRwQm9keSgpIGNvbnN0OwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRIVFRQQm9keShj
b25zdCBXZWJIVFRQQm9keSYpOwotCi0gICAgLy8gQ29udHJvbHMgd2hldGhlciB1cGxvYWQgcHJv
Z3Jlc3MgZXZlbnRzIGFyZSBnZW5lcmF0ZWQgd2hlbiBhIHJlcXVlc3QKLSAgICAvLyBoYXMgYSBi
b2R5LgotICAgIFdFQktJVF9FWFBPUlQgYm9vbCByZXBvcnRVcGxvYWRQcm9ncmVzcygpIGNvbnN0
OwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRSZXBvcnRVcGxvYWRQcm9ncmVzcyhib29sKTsK
LQotICAgIC8vIENvbnRyb2xzIHdoZXRoZXIgbG9hZCB0aW1pbmcgaW5mbyBpcyBjb2xsZWN0ZWQg
Zm9yIHRoZSByZXF1ZXN0LgotICAgIFdFQktJVF9FWFBPUlQgYm9vbCByZXBvcnRMb2FkVGltaW5n
KCkgY29uc3Q7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldFJlcG9ydExvYWRUaW1pbmcoYm9v
bCk7Ci0KLSAgICAvLyBDb250cm9scyB3aGV0aGVyIGFjdHVhbCBoZWFkZXJzIHNlbnQgYW5kIHJl
Y2VpdmVkIGZvciByZXF1ZXN0IGFyZQotICAgIC8vIGNvbGxlY3RlZCBhbmQgcmVwb3J0ZWQuCi0g
ICAgV0VCS0lUX0VYUE9SVCBib29sIHJlcG9ydFJhd0hlYWRlcnMoKSBjb25zdDsKLSAgICBXRUJL
SVRfRVhQT1JUIHZvaWQgc2V0UmVwb3J0UmF3SGVhZGVycyhib29sKTsKLQotICAgIFdFQktJVF9F
WFBPUlQgVGFyZ2V0VHlwZSB0YXJnZXRUeXBlKCkgY29uc3Q7Ci0gICAgV0VCS0lUX0VYUE9SVCB2
b2lkIHNldFRhcmdldFR5cGUoVGFyZ2V0VHlwZSk7Ci0KLSAgICAvLyBUcnVlIGlmIHRoZSByZXF1
ZXN0IHdhcyB1c2VyIGluaXRpYXRlZC4KLSAgICBXRUJLSVRfRVhQT1JUIGJvb2wgaGFzVXNlckdl
c3R1cmUoKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0SGFzVXNlckdlc3R1cmUo
Ym9vbCk7Ci0KLSAgICAvLyBBIGNvbnN1bWVyIGNvbnRyb2xsZWQgdmFsdWUgaW50ZW5kZWQgdG8g
YmUgdXNlZCB0byBpZGVudGlmeSB0aGUKLSAgICAvLyByZXF1ZXN0b3IuCi0gICAgV0VCS0lUX0VY
UE9SVCBpbnQgcmVxdWVzdG9ySUQoKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0
UmVxdWVzdG9ySUQoaW50KTsKLQotICAgIC8vIEEgY29uc3VtZXIgY29udHJvbGxlZCB2YWx1ZSBp
bnRlbmRlZCB0byBiZSB1c2VkIHRvIGlkZW50aWZ5IHRoZQotICAgIC8vIHByb2Nlc3Mgb2YgdGhl
IHJlcXVlc3Rvci4KLSAgICBXRUJLSVRfRVhQT1JUIGludCByZXF1ZXN0b3JQcm9jZXNzSUQoKSBj
b25zdDsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0UmVxdWVzdG9yUHJvY2Vzc0lEKGludCk7
Ci0KLSAgICAvLyBBbGxvd3MgdGhlIHJlcXVlc3QgdG8gYmUgbWF0Y2hlZCB1cCB3aXRoIGl0cyBh
cHAgY2FjaGUgaG9zdC4KLSAgICBXRUJLSVRfRVhQT1JUIGludCBhcHBDYWNoZUhvc3RJRCgpIGNv
bnN0OwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRBcHBDYWNoZUhvc3RJRChpbnQpOwotCi0g
ICAgLy8gSWYgdHJ1ZSwgdGhlIHJlc3BvbnNlIGJvZHkgd2lsbCBiZSBkb3dubG9hZGVkIHRvIGEg
ZmlsZSBtYW5hZ2VkIGJ5IHRoZQotICAgIC8vIFdlYlVSTExvYWRlci4gU2VlIFdlYlVSTFJlc3Bv
bnNlOjpkb3dubG9hZGVkRmlsZVBhdGguCi0gICAgV0VCS0lUX0VYUE9SVCBib29sIGRvd25sb2Fk
VG9GaWxlKCkgY29uc3Q7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldERvd25sb2FkVG9GaWxl
KGJvb2wpOwotCi0gICAgLy8gRXh0cmEgZGF0YSBhc3NvY2lhdGVkIHdpdGggdGhlIHVuZGVybHlp
bmcgcmVzb3VyY2UgcmVxdWVzdC4gUmVzb3VyY2UKLSAgICAvLyByZXF1ZXN0cyBjYW4gYmUgY29w
aWVkLiBJZiBub24tbnVsbCwgZWFjaCBjb3B5IG9mIGEgcmVzb3VyY2UgcmVxdWVzdHMKLSAgICAv
LyBob2xkcyBhIHBvaW50ZXIgdG8gdGhlIGV4dHJhIGRhdGEsIGFuZCB0aGUgZXh0cmEgZGF0YSBw
b2ludGVyIHdpbGwgYmUKLSAgICAvLyBkZWxldGVkIHdoZW4gdGhlIGxhc3QgcmVzb3VyY2UgcmVx
dWVzdCBpcyBkZXN0cm95ZWQuIFNldHRpbmcgdGhlIGV4dHJhCi0gICAgLy8gZGF0YSBwb2ludGVy
IHdpbGwgY2F1c2UgdGhlIHVuZGVybHlpbmcgcmVzb3VyY2UgcmVxdWVzdCB0byBiZQotICAgIC8v
IGRpc3NvY2lhdGVkIGZyb20gYW55IGV4aXN0aW5nIG5vbi1udWxsIGV4dHJhIGRhdGEgcG9pbnRl
ci4KLSAgICBXRUJLSVRfRVhQT1JUIEV4dHJhRGF0YSogZXh0cmFEYXRhKCkgY29uc3Q7Ci0gICAg
V0VCS0lUX0VYUE9SVCB2b2lkIHNldEV4dHJhRGF0YShFeHRyYURhdGEqKTsKLQotICAgIFdFQktJ
VF9FWFBPUlQgUHJpb3JpdHkgcHJpb3JpdHkoKSBjb25zdDsKLQotI2lmIFdFQktJVF9JTVBMRU1F
TlRBVElPTgotICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgdG9NdXRhYmxlUmVzb3VyY2VS
ZXF1ZXN0KCk7Ci0gICAgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiB0b1Jlc291cmNl
UmVxdWVzdCgpIGNvbnN0OwotI2VuZGlmCi0KLXByb3RlY3RlZDoKLSAgICB2b2lkIGFzc2lnbihX
ZWJVUkxSZXF1ZXN0UHJpdmF0ZSopOwotCi1wcml2YXRlOgotICAgIFdlYlVSTFJlcXVlc3RQcml2
YXRlKiBtX3ByaXZhdGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmCklu
ZGV4OiBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlVSTFJlc3BvbnNlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJVUkxSZXNwb25z
ZS5oCShyZXZpc2lvbiAxNDc3MTApCisrKyBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGlj
L1dlYlVSTFJlc3BvbnNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsMjA1ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlz
dHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwot
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVm
IFdlYlVSTFJlc3BvbnNlX2gKLSNkZWZpbmUgV2ViVVJMUmVzcG9uc2VfaAotCi0jaW5jbHVkZSAi
V2ViQ29tbW9uLmgiCi0jaW5jbHVkZSAiV2ViUHJpdmF0ZU93blB0ci5oIgotCi0jaWYgV0VCS0lU
X0lNUExFTUVOVEFUSU9OCi1uYW1lc3BhY2UgV2ViQ29yZSB7IGNsYXNzIFJlc291cmNlUmVzcG9u
c2U7IH0KLSNlbmRpZgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotY2xhc3MgV2ViQ1N0cmluZzsK
LWNsYXNzIFdlYkhUVFBIZWFkZXJWaXNpdG9yOwotY2xhc3MgV2ViSFRUUExvYWRJbmZvOwotY2xh
c3MgV2ViU3RyaW5nOwotY2xhc3MgV2ViVVJMOwotY2xhc3MgV2ViVVJMTG9hZFRpbWluZzsKLWNs
YXNzIFdlYlVSTFJlc3BvbnNlUHJpdmF0ZTsKLQotY2xhc3MgV2ViVVJMUmVzcG9uc2UgewotcHVi
bGljOgotICAgIGVudW0gSFRUUFZlcnNpb24geyBVbmtub3duLCBIVFRQXzBfOSwgSFRUUF8xXzAs
IEhUVFBfMV8xIH07Ci0KLSAgICBjbGFzcyBFeHRyYURhdGEgewotICAgIHB1YmxpYzoKLSAgICAg
ICAgdmlydHVhbCB+RXh0cmFEYXRhKCkgeyB9Ci0gICAgfTsKLQotICAgIH5XZWJVUkxSZXNwb25z
ZSgpIHsgcmVzZXQoKTsgfQotCi0gICAgV2ViVVJMUmVzcG9uc2UoKSA6IG1fcHJpdmF0ZSgwKSB7
IH0KLSAgICBXZWJVUkxSZXNwb25zZShjb25zdCBXZWJVUkxSZXNwb25zZSYgcikgOiBtX3ByaXZh
dGUoMCkgeyBhc3NpZ24ocik7IH0KLSAgICBXZWJVUkxSZXNwb25zZSYgb3BlcmF0b3I9KGNvbnN0
IFdlYlVSTFJlc3BvbnNlJiByKQotICAgIHsKLSAgICAgICAgYXNzaWduKHIpOwotICAgICAgICBy
ZXR1cm4gKnRoaXM7Ci0gICAgfQotCi0gICAgZXhwbGljaXQgV2ViVVJMUmVzcG9uc2UoY29uc3Qg
V2ViVVJMJiB1cmwpIDogbV9wcml2YXRlKDApCi0gICAgewotICAgICAgICBpbml0aWFsaXplKCk7
Ci0gICAgICAgIHNldFVSTCh1cmwpOwotICAgIH0KLQotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBp
bml0aWFsaXplKCk7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHJlc2V0KCk7Ci0gICAgV0VCS0lU
X0VYUE9SVCB2b2lkIGFzc2lnbihjb25zdCBXZWJVUkxSZXNwb25zZSYpOwotCi0gICAgV0VCS0lU
X0VYUE9SVCBib29sIGlzTnVsbCgpIGNvbnN0OwotCi0gICAgV0VCS0lUX0VYUE9SVCBXZWJVUkwg
dXJsKCkgY29uc3Q7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldFVSTChjb25zdCBXZWJVUkwm
KTsKLQotICAgIFdFQktJVF9FWFBPUlQgdW5zaWduZWQgY29ubmVjdGlvbklEKCkgY29uc3Q7Ci0g
ICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldENvbm5lY3Rpb25JRCh1bnNpZ25lZCk7Ci0KLSAgICBX
RUJLSVRfRVhQT1JUIGJvb2wgY29ubmVjdGlvblJldXNlZCgpIGNvbnN0OwotICAgIFdFQktJVF9F
WFBPUlQgdm9pZCBzZXRDb25uZWN0aW9uUmV1c2VkKGJvb2wpOwotCi0gICAgV0VCS0lUX0VYUE9S
VCBXZWJVUkxMb2FkVGltaW5nIGxvYWRUaW1pbmcoKTsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQg
c2V0TG9hZFRpbWluZyhjb25zdCBXZWJVUkxMb2FkVGltaW5nJik7Ci0KLSAgICBXRUJLSVRfRVhQ
T1JUIFdlYkhUVFBMb2FkSW5mbyBodHRwTG9hZEluZm8oKTsKLSAgICBXRUJLSVRfRVhQT1JUIHZv
aWQgc2V0SFRUUExvYWRJbmZvKGNvbnN0IFdlYkhUVFBMb2FkSW5mbyYpOwotCi0gICAgV0VCS0lU
X0VYUE9SVCBkb3VibGUgcmVzcG9uc2VUaW1lKCkgY29uc3Q7Ci0gICAgV0VCS0lUX0VYUE9SVCB2
b2lkIHNldFJlc3BvbnNlVGltZShkb3VibGUpOwotCi0gICAgV0VCS0lUX0VYUE9SVCBXZWJTdHJp
bmcgbWltZVR5cGUoKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0TUlNRVR5cGUo
Y29uc3QgV2ViU3RyaW5nJik7Ci0KLSAgICBXRUJLSVRfRVhQT1JUIGxvbmcgbG9uZyBleHBlY3Rl
ZENvbnRlbnRMZW5ndGgoKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0RXhwZWN0
ZWRDb250ZW50TGVuZ3RoKGxvbmcgbG9uZyk7Ci0KLSAgICBXRUJLSVRfRVhQT1JUIFdlYlN0cmlu
ZyB0ZXh0RW5jb2RpbmdOYW1lKCkgY29uc3Q7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldFRl
eHRFbmNvZGluZ05hbWUoY29uc3QgV2ViU3RyaW5nJik7Ci0KLSAgICBXRUJLSVRfRVhQT1JUIFdl
YlN0cmluZyBzdWdnZXN0ZWRGaWxlTmFtZSgpIGNvbnN0OwotICAgIFdFQktJVF9FWFBPUlQgdm9p
ZCBzZXRTdWdnZXN0ZWRGaWxlTmFtZShjb25zdCBXZWJTdHJpbmcmKTsKLQotICAgIFdFQktJVF9F
WFBPUlQgSFRUUFZlcnNpb24gaHR0cFZlcnNpb24oKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JU
IHZvaWQgc2V0SFRUUFZlcnNpb24oSFRUUFZlcnNpb24pOwotCi0gICAgV0VCS0lUX0VYUE9SVCBp
bnQgaHR0cFN0YXR1c0NvZGUoKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0SFRU
UFN0YXR1c0NvZGUoaW50KTsKLQotICAgIFdFQktJVF9FWFBPUlQgV2ViU3RyaW5nIGh0dHBTdGF0
dXNUZXh0KCkgY29uc3Q7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldEhUVFBTdGF0dXNUZXh0
KGNvbnN0IFdlYlN0cmluZyYpOwotCi0gICAgV0VCS0lUX0VYUE9SVCBXZWJTdHJpbmcgaHR0cEhl
YWRlckZpZWxkKGNvbnN0IFdlYlN0cmluZyYgbmFtZSkgY29uc3Q7Ci0gICAgV0VCS0lUX0VYUE9S
VCB2b2lkIHNldEhUVFBIZWFkZXJGaWVsZChjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdl
YlN0cmluZyYgdmFsdWUpOwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBhZGRIVFRQSGVhZGVyRmll
bGQoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJTdHJpbmcmIHZhbHVlKTsKLSAgICBX
RUJLSVRfRVhQT1JUIHZvaWQgY2xlYXJIVFRQSGVhZGVyRmllbGQoY29uc3QgV2ViU3RyaW5nJiBu
YW1lKTsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgdmlzaXRIVFRQSGVhZGVyRmllbGRzKFdlYkhU
VFBIZWFkZXJWaXNpdG9yKikgY29uc3Q7Ci0KLSAgICBXRUJLSVRfRVhQT1JUIGRvdWJsZSBsYXN0
TW9kaWZpZWREYXRlKCkgY29uc3Q7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldExhc3RNb2Rp
ZmllZERhdGUoZG91YmxlKTsKLQotICAgIFdFQktJVF9FWFBPUlQgbG9uZyBsb25nIGFwcENhY2hl
SUQoKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0QXBwQ2FjaGVJRChsb25nIGxv
bmcpOwotCi0gICAgV0VCS0lUX0VYUE9SVCBXZWJVUkwgYXBwQ2FjaGVNYW5pZmVzdFVSTCgpIGNv
bnN0OwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRBcHBDYWNoZU1hbmlmZXN0VVJMKGNvbnN0
IFdlYlVSTCYpOwotCi0gICAgLy8gQSBjb25zdW1lciBjb250cm9sbGVkIHZhbHVlIGludGVuZGVk
IHRvIGJlIHVzZWQgdG8gcmVjb3JkIG9wYXF1ZQotICAgIC8vIHNlY3VyaXR5IGluZm8gcmVsYXRl
ZCB0byB0aGlzIHJlcXVlc3QuCi0gICAgV0VCS0lUX0VYUE9SVCBXZWJDU3RyaW5nIHNlY3VyaXR5
SW5mbygpIGNvbnN0OwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRTZWN1cml0eUluZm8oY29u
c3QgV2ViQ1N0cmluZyYpOwotCi0jaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCi0gICAgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYgdG9NdXRhYmxlUmVzb3VyY2VSZXNwb25zZSgpOwotICAgIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHRvUmVzb3VyY2VSZXNwb25zZSgpIGNvbnN0
OwotI2VuZGlmCi0KLSAgICAvLyBGbGFnIHdoZXRoZXIgdGhpcyByZXF1ZXN0IHdhcyBzZXJ2ZWQg
ZnJvbSB0aGUgZGlzayBjYWNoZSBlbnRyeS4KLSAgICBXRUJLSVRfRVhQT1JUIGJvb2wgd2FzQ2Fj
aGVkKCkgY29uc3Q7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldFdhc0NhY2hlZChib29sKTsK
LQotICAgIC8vIEZsYWcgd2hldGhlciB0aGlzIHJlcXVlc3Qgd2FzIGxvYWRlZCB2aWEgdGhlIFNQ
RFkgcHJvdG9jb2wgb3Igbm90LgotICAgIC8vIFNQRFkgaXMgYW4gZXhwZXJpbWVudGFsIHdlYiBw
cm90b2NvbCwgc2VlIGh0dHA6Ly9kZXYuY2hyb21pdW0ub3JnL3NwZHkKLSAgICBXRUJLSVRfRVhQ
T1JUIGJvb2wgd2FzRmV0Y2hlZFZpYVNQRFkoKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JUIHZv
aWQgc2V0V2FzRmV0Y2hlZFZpYVNQRFkoYm9vbCk7Ci0KLSAgICAvLyBGbGFnIHdoZXRoZXIgdGhp
cyByZXF1ZXN0IHdhcyBsb2FkZWQgYWZ0ZXIgdGhlIFRMUy9OZXh0LVByb3RvY29sLU5lZ290aWF0
aW9uIHdhcyB1c2VkLgotICAgIC8vIFRoaXMgaXMgcmVsYXRlZCB0byBTUERZLgotICAgIFdFQktJ
VF9FWFBPUlQgYm9vbCB3YXNOcG5OZWdvdGlhdGVkKCkgY29uc3Q7Ci0gICAgV0VCS0lUX0VYUE9S
VCB2b2lkIHNldFdhc05wbk5lZ290aWF0ZWQoYm9vbCk7Ci0KLSAgICAvLyBGbGFnIHdoZXRoZXIg
dGhpcyByZXF1ZXN0IHdhcyBtYWRlIHdoZW4gIkFsdGVybmF0ZS1Qcm90b2NvbDogeHh4IgotICAg
IC8vIGlzIHByZXNlbnQgaW4gc2VydmVyJ3MgcmVzcG9uc2UuCi0gICAgV0VCS0lUX0VYUE9SVCBi
b29sIHdhc0FsdGVybmF0ZVByb3RvY29sQXZhaWxhYmxlKCkgY29uc3Q7Ci0gICAgV0VCS0lUX0VY
UE9SVCB2b2lkIHNldFdhc0FsdGVybmF0ZVByb3RvY29sQXZhaWxhYmxlKGJvb2wpOwotCi0gICAg
Ly8gRmxhZyB3aGV0aGVyIHRoaXMgcmVxdWVzdCB3YXMgbG9hZGVkIHZpYSBhbiBleHBsaWNpdCBw
cm94eSAoSFRUUCwgU09DS1MsIGV0YykuCi0gICAgV0VCS0lUX0VYUE9SVCBib29sIHdhc0ZldGNo
ZWRWaWFQcm94eSgpIGNvbnN0OwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRXYXNGZXRjaGVk
VmlhUHJveHkoYm9vbCk7Ci0KLSAgICAvLyBGbGFnIHdoZXRoZXIgdGhpcyByZXF1ZXN0IGlzIHBh
cnQgb2YgYSBtdWx0aXBhcnQgcmVzcG9uc2UuCi0gICAgV0VCS0lUX0VYUE9SVCBib29sIGlzTXVs
dGlwYXJ0UGF5bG9hZCgpIGNvbnN0OwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRJc011bHRp
cGFydFBheWxvYWQoYm9vbCk7Ci0KLSAgICAvLyBUaGlzIGluZGljYXRlcyB0aGUgbG9jYXRpb24g
b2YgYSBkb3dubG9hZGVkIHJlc3BvbnNlIGlmIHRoZQotICAgIC8vIFdlYlVSTFJlcXVlc3QgaGFk
IHRoZSBkb3dubG9hZFRvRmlsZSBmbGFnIHNldCB0byB0cnVlLiBUaGlzIGZpbGUgcGF0aAotICAg
IC8vIHJlbWFpbnMgdmFsaWQgZm9yIHRoZSBsaWZldGltZSBvZiB0aGUgV2ViVVJMTG9hZGVyIHVz
ZWQgdG8gY3JlYXRlIGl0LgotICAgIFdFQktJVF9FWFBPUlQgV2ViU3RyaW5nIGRvd25sb2FkRmls
ZVBhdGgoKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0RG93bmxvYWRGaWxlUGF0
aChjb25zdCBXZWJTdHJpbmcmKTsKLQotICAgIC8vIFJlbW90ZSBJUCBhZGRyZXNzIG9mIHRoZSBz
b2NrZXQgd2hpY2ggZmV0Y2hlZCB0aGlzIHJlc291cmNlLgotICAgIFdFQktJVF9FWFBPUlQgV2Vi
U3RyaW5nIHJlbW90ZUlQQWRkcmVzcygpIGNvbnN0OwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBz
ZXRSZW1vdGVJUEFkZHJlc3MoY29uc3QgV2ViU3RyaW5nJik7Ci0KLSAgICAvLyBSZW1vdGUgcG9y
dCBudW1iZXIgb2YgdGhlIHNvY2tldCB3aGljaCBmZXRjaGVkIHRoaXMgcmVzb3VyY2UuCi0gICAg
V0VCS0lUX0VYUE9SVCB1bnNpZ25lZCBzaG9ydCByZW1vdGVQb3J0KCkgY29uc3Q7Ci0gICAgV0VC
S0lUX0VYUE9SVCB2b2lkIHNldFJlbW90ZVBvcnQodW5zaWduZWQgc2hvcnQpOwotCi0gICAgLy8g
RXh0cmEgZGF0YSBhc3NvY2lhdGVkIHdpdGggdGhlIHVuZGVybHlpbmcgcmVzb3VyY2UgcmVzcG9u
c2UuIFJlc291cmNlCi0gICAgLy8gcmVzcG9uc2VzIGNhbiBiZSBjb3BpZWQuIElmIG5vbi1udWxs
LCBlYWNoIGNvcHkgb2YgYSByZXNvdXJjZSByZXNwb25zZQotICAgIC8vIGhvbGRzIGEgcG9pbnRl
ciB0byB0aGUgZXh0cmEgZGF0YSwgYW5kIHRoZSBleHRyYSBkYXRhIHBvaW50ZXIgd2lsbCBiZQot
ICAgIC8vIGRlbGV0ZWQgd2hlbiB0aGUgbGFzdCByZXNvdXJjZSByZXNwb25zZSBpcyBkZXN0cm95
ZWQuIFNldHRpbmcgdGhlIGV4dHJhCi0gICAgLy8gZGF0YSBwb2ludGVyIHdpbGwgY2F1c2UgdGhl
IHVuZGVybHlpbmcgcmVzb3VyY2UgcmVzcG9uc2UgdG8gYmUKLSAgICAvLyBkaXNzb2NpYXRlZCBm
cm9tIGFueSBleGlzdGluZyBub24tbnVsbCBleHRyYSBkYXRhIHBvaW50ZXIuCi0gICAgV0VCS0lU
X0VYUE9SVCBFeHRyYURhdGEqIGV4dHJhRGF0YSgpIGNvbnN0OwotICAgIFdFQktJVF9FWFBPUlQg
dm9pZCBzZXRFeHRyYURhdGEoRXh0cmFEYXRhKik7Ci0KLXByb3RlY3RlZDoKLSAgICB2b2lkIGFz
c2lnbihXZWJVUkxSZXNwb25zZVByaXZhdGUqKTsKLQotcHJpdmF0ZToKLSAgICBXZWJVUkxSZXNw
b25zZVByaXZhdGUqIG1fcHJpdmF0ZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0j
ZW5kaWYKSW5kZXg6IFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViVW5pdFRlc3RT
dXBwb3J0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9X
ZWJVbml0VGVzdFN1cHBvcnQuaAkocmV2aXNpb24gMTQ3NzEwKQorKysgU291cmNlL1BsYXRmb3Jt
L2Nocm9taXVtL3B1YmxpYy9XZWJVbml0VGVzdFN1cHBvcnQuaAkod29ya2luZyBjb3B5KQpAQCAt
MSw3MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkK
LSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YK
LSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBXZWJVbml0VGVzdFN1cHBvcnRfaAotI2RlZmlu
ZSBXZWJVbml0VGVzdFN1cHBvcnRfaAotCi0jaW5jbHVkZSAiV2ViQ29tbW9uLmgiCi0jaW5jbHVk
ZSAiV2ViU3RyaW5nLmgiCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1jbGFzcyBXZWJMYXllclRy
ZWVWaWV3OwotY2xhc3MgV2ViVVJMOwotY2xhc3MgV2ViVVJMUmVzcG9uc2U7Ci1zdHJ1Y3QgV2Vi
VVJMRXJyb3I7Ci0KLWNsYXNzIFdlYlVuaXRUZXN0U3VwcG9ydCB7Ci1wdWJsaWM6Ci0gICAgdmly
dHVhbCB2b2lkIHJlZ2lzdGVyTW9ja2VkVVJMKGNvbnN0IFdlYlVSTCYsIGNvbnN0IFdlYlVSTFJl
c3BvbnNlJiwgY29uc3QgV2ViU3RyaW5nJiBmaWxlUGF0aCkgeyB9Ci0KLSAgICAvLyBSZWdpc3Rl
cnMgdGhlIGVycm9yIHRvIGJlIHJldHVybmVkIHdoZW4gfHVybHwgaXMgcmVxdWVzdGVkLgotICAg
IHZpcnR1YWwgdm9pZCByZWdpc3Rlck1vY2tlZEVycm9yVVJMKGNvbnN0IFdlYlVSTCYsIGNvbnN0
IFdlYlVSTFJlc3BvbnNlJiwgY29uc3QgV2ViVVJMRXJyb3ImKSB7IH0KLQotICAgIC8vIFVucmVn
aXN0ZXJzIFVSTHMgc28gdGhleSBhcmUgbm8gbG9uZ2VyIG1vY2tlZC4KLSAgICB2aXJ0dWFsIHZv
aWQgdW5yZWdpc3Rlck1vY2tlZFVSTChjb25zdCBXZWJVUkwmKSB7IH0KLSAgICB2aXJ0dWFsIHZv
aWQgdW5yZWdpc3RlckFsbE1vY2tlZFVSTHMoKSB7IH0KLQotICAgIC8vIENhdXNlcyBhbGwgcGVu
ZGluZyBhc3luY2hyb25vdXMgcmVxdWVzdHMgdG8gYmUgc2VydmVkLiBXaGVuIHRoaXMgbWV0aG9k
Ci0gICAgLy8gcmV0dXJucyBhbGwgdGhlIHBlbmRpbmcgcmVxdWVzdHMgaGF2ZSBiZWVuIHByb2Nl
c3NlZC4KLSAgICB2aXJ0dWFsIHZvaWQgc2VydmVBc3luY2hyb25vdXNNb2NrZWRSZXF1ZXN0cygp
IHsgfQotCi0gICAgLy8gUmV0dXJucyB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhlIFdlYktpdCBj
b2RlLgotICAgIHZpcnR1YWwgV2ViU3RyaW5nIHdlYktpdFJvb3REaXIoKSB7IHJldHVybiBXZWJT
dHJpbmcoKTsgfQotCi0gICAgLy8gQ29uc3RydWN0cyBhIFdlYkxheWVyVHJlZVZpZXcgc2V0IHVw
IHdpdGggcmVhc29uYWJsZSBkZWZhdWx0cyBmb3IKLSAgICAvLyB0ZXN0aW5nLgotCi0gICAgdmly
dHVhbCBXZWJMYXllclRyZWVWaWV3KiBjcmVhdGVMYXllclRyZWVWaWV3Rm9yVGVzdGluZygpIHsg
cmV0dXJuIDA7IH0KLQotICAgIC8vIERFUFJFQ0FURUQsIHVzZSB0aGUgdmVyc2lvbiBhYm92ZS4K
LSNkZWZpbmUgSEFWRV9DUkVBVEVMQVlFUlRSRUVWSUVXRk9SVEVTVElORyAxCi0gICAgZW51bSBU
ZXN0Vmlld1R5cGUgewotICAgICAgICBUZXN0Vmlld1R5cGVVbml0VGVzdCwKLSAgICAgICAgVGVz
dFZpZXdUeXBlTGF5b3V0VGVzdAotICAgIH07Ci0gICAgdmlydHVhbCBXZWJMYXllclRyZWVWaWV3
KiBjcmVhdGVMYXllclRyZWVWaWV3Rm9yVGVzdGluZyhUZXN0Vmlld1R5cGUpIHsgcmV0dXJuIDA7
IH0KLX07Ci0KLX0KLQotI2VuZGlmIC8vIFdlYlVuaXRUZXN0U3VwcG9ydF9oCkluZGV4OiBTb3Vy
Y2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlZlY3Rvci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViVmVjdG9yLmgJKHJldmlzaW9uIDE0Nzcx
MCkKKysrIFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViVmVjdG9yLmgJKHdvcmtp
bmcgY29weSkKQEAgLTEsMTg2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQot
ICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdlYlZlY3Rvcl9oCi0jZGVmaW5lIFdl
YlZlY3Rvcl9oCi0KLSNpbmNsdWRlICJXZWJDb21tb24uaCIKLQotI2luY2x1ZGUgPGFsZ29yaXRo
bT4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLS8vIEEgc2ltcGxlIHZlY3RvciBjbGFzcy4KLS8v
Ci0vLyBTYW1wbGUgdXNhZ2U6Ci0vLwotLy8gICB2b2lkIEZvbyhXZWJWZWN0b3I8aW50PiYgcmVz
dWx0KQotLy8gICB7Ci0vLyAgICAgICBXZWJWZWN0b3I8aW50PiBkYXRhKDEwKTsKLS8vICAgICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZGF0YS5zaXplKCk7ICsraSkKLS8vICAgICAgICAgICBk
YXRhW2ldID0gLi4uCi0vLyAgICAgICByZXN1bHQuc3dhcChkYXRhKTsKLS8vICAgfQotLy8KLS8v
IEl0IGlzIGFsc28gcG9zc2libGUgdG8gYXNzaWduIGZyb20gb3RoZXIgdHlwZXMgb2YgcmFuZG9t
IGFjY2VzcwotLy8gY29udGFpbmVyczoKLS8vCi0vLyAgIHZvaWQgRm9vKGNvbnN0IHN0ZDo6dmVj
dG9yPHN0ZDo6c3RyaW5nPiYgaW5wdXQpCi0vLyAgIHsKLS8vICAgICAgIFdlYlZlY3RvcjxXZWJD
U3RyaW5nPiBjc3RyaW5ncyA9IGlucHV0OwotLy8gICAgICAgLi4uCi0vLyAgIH0KLS8vCi10ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4KLWNsYXNzIFdlYlZlY3RvciB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRl
ZiBUIFZhbHVlVHlwZTsKLQotICAgIH5XZWJWZWN0b3IoKQotICAgIHsKLSAgICAgICAgZGVzdHJv
eSgpOwotICAgIH0KLQotICAgIGV4cGxpY2l0IFdlYlZlY3RvcihzaXplX3Qgc2l6ZSA9IDApCi0g
ICAgewotICAgICAgICBpbml0aWFsaXplKHNpemUpOwotICAgIH0KLQotICAgIFdlYlZlY3Rvcihj
b25zdCBXZWJWZWN0b3I8VD4mIG90aGVyKQotICAgIHsKLSAgICAgICAgaW5pdGlhbGl6ZUZyb20o
b3RoZXIubV9wdHIsIG90aGVyLm1fc2l6ZSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPHR5cGVu
YW1lIEM+Ci0gICAgV2ViVmVjdG9yKGNvbnN0IEMmIG90aGVyKQotICAgIHsKLSAgICAgICAgaW5p
dGlhbGl6ZUZyb20ob3RoZXIuc2l6ZSgpID8gJm90aGVyWzBdIDogMCwgb3RoZXIuc2l6ZSgpKTsK
LSAgICB9Ci0KLSAgICBXZWJWZWN0b3ImIG9wZXJhdG9yPShjb25zdCBXZWJWZWN0b3ImIG90aGVy
KQotICAgIHsKLSAgICAgICAgaWYgKHRoaXMgIT0gJm90aGVyKQotICAgICAgICAgICAgYXNzaWdu
KG90aGVyKTsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDx0
eXBlbmFtZSBDPgotICAgIFdlYlZlY3RvcjxUPiYgb3BlcmF0b3I9KGNvbnN0IEMmIG90aGVyKQot
ICAgIHsKLSAgICAgICAgaWYgKHRoaXMgIT0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBXZWJWZWN0
b3I8VD4qPigmb3RoZXIpKQotICAgICAgICAgICAgYXNzaWduKG90aGVyKTsKLSAgICAgICAgcmV0
dXJuICp0aGlzOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDPgotICAgIHZvaWQg
YXNzaWduKGNvbnN0IEMmIG90aGVyKQotICAgIHsKLSAgICAgICAgYXNzaWduKG90aGVyLnNpemUo
KSA/ICZvdGhlclswXSA6IDAsIG90aGVyLnNpemUoKSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUg
PHR5cGVuYW1lIFU+Ci0gICAgdm9pZCBhc3NpZ24oY29uc3QgVSogdmFsdWVzLCBzaXplX3Qgc2l6
ZSkKLSAgICB7Ci0gICAgICAgIGRlc3Ryb3koKTsKLSAgICAgICAgaW5pdGlhbGl6ZUZyb20odmFs
dWVzLCBzaXplKTsKLSAgICB9Ci0KLSAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
c2l6ZTsgfQotICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFtX3NpemU7IH0KLQot
ICAgIFQmIG9wZXJhdG9yW10oc2l6ZV90IGkpCi0gICAgewotICAgICAgICBXRUJLSVRfQVNTRVJU
KGkgPCBtX3NpemUpOwotICAgICAgICByZXR1cm4gbV9wdHJbaV07Ci0gICAgfQotICAgIGNvbnN0
IFQmIG9wZXJhdG9yW10oc2l6ZV90IGkpIGNvbnN0Ci0gICAgewotICAgICAgICBXRUJLSVRfQVNT
RVJUKGkgPCBtX3NpemUpOwotICAgICAgICByZXR1cm4gbV9wdHJbaV07Ci0gICAgfQotICAgIAot
ICAgIGJvb2wgY29udGFpbnMoY29uc3QgVCYgdmFsdWUpIGNvbnN0Ci0gICAgewotICAgICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IG1fc2l6ZTsgaSsrKSB7Ci0gICAgICAgICAgICBpZiAobV9w
dHJbaV0gPT0gdmFsdWUpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0K
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIFQqIGRhdGEoKSB7IHJldHVybiBt
X3B0cjsgfQotICAgIGNvbnN0IFQqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX3B0cjsgfQotCi0g
ICAgdm9pZCBzd2FwKFdlYlZlY3RvcjxUPiYgb3RoZXIpCi0gICAgewotICAgICAgICBzdGQ6OnN3
YXAobV9wdHIsIG90aGVyLm1fcHRyKTsKLSAgICAgICAgc3RkOjpzd2FwKG1fc2l6ZSwgb3RoZXIu
bV9zaXplKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgdm9pZCBpbml0aWFsaXplKHNpemVfdCBz
aXplKQotICAgIHsKLSAgICAgICAgbV9zaXplID0gc2l6ZTsKLSAgICAgICAgaWYgKCFtX3NpemUp
Ci0gICAgICAgICAgICBtX3B0ciA9IDA7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgbV9w
dHIgPSBzdGF0aWNfY2FzdDxUKj4oOjpvcGVyYXRvciBuZXcoc2l6ZW9mKFQpICogbV9zaXplKSk7
Ci0gICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fc2l6ZTsgKytpKQotICAgICAg
ICAgICAgICAgIG5ldyAoJm1fcHRyW2ldKSBUKCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVT4KLSAgICB2b2lkIGluaXRpYWxpemVGcm9tKGNvbnN0IFUqIHZh
bHVlcywgc2l6ZV90IHNpemUpCi0gICAgewotICAgICAgICBtX3NpemUgPSBzaXplOwotICAgICAg
ICBpZiAoIW1fc2l6ZSkKLSAgICAgICAgICAgIG1fcHRyID0gMDsKLSAgICAgICAgZWxzZSB7Ci0g
ICAgICAgICAgICBtX3B0ciA9IHN0YXRpY19jYXN0PFQqPig6Om9wZXJhdG9yIG5ldyhzaXplb2Yo
VCkgKiBtX3NpemUpKTsKLSAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9zaXpl
OyArK2kpCi0gICAgICAgICAgICAgICAgbmV3ICgmbV9wdHJbaV0pIFQodmFsdWVzW2ldKTsKLSAg
ICAgICAgfQotICAgIH0KLQotICAgIHZvaWQgZGVzdHJveSgpCi0gICAgewotICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IG1fc2l6ZTsgKytpKQotICAgICAgICAgICAgbV9wdHJbaV0uflQo
KTsKLSAgICAgICAgOjpvcGVyYXRvciBkZWxldGUobV9wdHIpOwotICAgIH0KLQotICAgIFQqIG1f
cHRyOwotICAgIHNpemVfdCBtX3NpemU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQot
I2VuZGlmCkluZGV4OiBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYldvcmtlclJ1
bkxvb3AuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dl
YldvcmtlclJ1bkxvb3AuaAkocmV2aXNpb24gMTQ3NzEwKQorKysgU291cmNlL1BsYXRmb3JtL2No
cm9taXVtL3B1YmxpYy9XZWJXb3JrZXJSdW5Mb29wLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNjcg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQotICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
Ci0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OCi0gKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMKLSAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgV2ViV29ya2VyUnVuTG9vcF9oCi0jZGVmaW5lIFdl
YldvcmtlclJ1bkxvb3BfaAotCi0jaW5jbHVkZSAiV2ViQ29tbW9uLmgiCi0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLWNsYXNzIFdvcmtlclJ1bkxvb3A7Ci19Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewot
Ci1jbGFzcyBXZWJXb3JrZXJSdW5Mb29wIHsKLXB1YmxpYzoKLSAgICBjbGFzcyBUYXNrIHsKLSAg
ICBwdWJsaWM6Ci0gICAgICAgIHZpcnR1YWwgflRhc2soKSB7IH0KLSAgICAgICAgdmlydHVhbCB2
b2lkIFJ1bigpID0gMDsKLSAgICB9OwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBwb3N0VGFzayhU
YXNrKik7Ci0gICAgV0VCS0lUX0VYUE9SVCBib29sIGVxdWFscyhjb25zdCBXZWJXb3JrZXJSdW5M
b29wJikgY29uc3Q7Ci0gICAgV0VCS0lUX0VYUE9SVCBib29sIGxlc3NUaGFuKGNvbnN0IFdlYldv
cmtlclJ1bkxvb3AmKSBjb25zdDsKLQotI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgotICAgIFdl
YldvcmtlclJ1bkxvb3AoV2ViQ29yZTo6V29ya2VyUnVuTG9vcCopOwotI2VuZGlmCi0KLXByaXZh
dGU6Ci0gICAgV2ViQ29yZTo6V29ya2VyUnVuTG9vcCogbV93b3JrZXJSdW5Mb29wOwotfTsKLQot
aW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBXZWJXb3JrZXJSdW5Mb29wJiBhLCBjb25zdCBX
ZWJXb3JrZXJSdW5Mb29wJiBiKQotewotICAgIHJldHVybiBhLmVxdWFscyhiKTsKLX0KLQotaW5s
aW5lIGJvb2wgb3BlcmF0b3I8KGNvbnN0IFdlYldvcmtlclJ1bkxvb3AmIGEsIGNvbnN0IFdlYldv
cmtlclJ1bkxvb3AmIGIpCi17Ci0gICAgcmV0dXJuIGEubGVzc1RoYW4oYik7Ci19Ci0KLX0KLQot
I2VuZGlmCkluZGV4OiBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL2FuZHJvaWQvV2Vi
U2FuZGJveFN1cHBvcnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0v
cHVibGljL2FuZHJvaWQvV2ViU2FuZGJveFN1cHBvcnQuaAkocmV2aXNpb24gMTQ3NzEwKQorKysg
U291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9hbmRyb2lkL1dlYlNhbmRib3hTdXBwb3J0
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNDMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
Ci0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICog
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
Ci0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgV2ViU2FuZGJveFN1cHBv
cnRfaAotI2RlZmluZSBXZWJTYW5kYm94U3VwcG9ydF9oCi0KLW5hbWVzcGFjZSBXZWJLaXQgewot
Ci0vLyBFbXB0eSBjbGFzcywgYXMgd2UgbmVlZCBpdCB0byBjb21waWxlLgotY2xhc3MgV2ViU2Fu
ZGJveFN1cHBvcnQgewotcHVibGljOgotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNl
bmRpZgpJbmRleDogU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9hbmRyb2lkL1dlYlRo
ZW1lRW5naW5lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1Ymxp
Yy9hbmRyb2lkL1dlYlRoZW1lRW5naW5lLmgJKHJldmlzaW9uIDE0NzcxMCkKKysrIFNvdXJjZS9Q
bGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvYW5kcm9pZC9XZWJUaGVtZUVuZ2luZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDE1MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAq
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBXZWJUaGVtZUVuZ2luZV9oCi0jZGVmaW5l
IFdlYlRoZW1lRW5naW5lX2gKLQotI2luY2x1ZGUgIi4uL1dlYkNhbnZhcy5oIgotI2luY2x1ZGUg
Ii4uL1dlYkNvbG9yLmgiCi0jaW5jbHVkZSAiLi4vV2ViU2l6ZS5oIgotCi1uYW1lc3BhY2UgV2Vi
S2l0IHsKLQotc3RydWN0IFdlYlJlY3Q7Ci0KLWNsYXNzIFdlYlRoZW1lRW5naW5lIHsKLXB1Ymxp
YzoKLSAgICAvLyBUaGUgVUkgcGFydCB3aGljaCBpcyBiZWluZyBhY2Nlc3NlZC4KLSAgICBlbnVt
IFBhcnQgewotICAgICAgICAvLyBTY3JvbGxiYXJUaGVtZSBwYXJ0cwotICAgICAgICBQYXJ0U2Ny
b2xsYmFyRG93bkFycm93LAotICAgICAgICBQYXJ0U2Nyb2xsYmFyTGVmdEFycm93LAotICAgICAg
ICBQYXJ0U2Nyb2xsYmFyUmlnaHRBcnJvdywKLSAgICAgICAgUGFydFNjcm9sbGJhclVwQXJyb3cs
Ci0gICAgICAgIFBhcnRTY3JvbGxiYXJIb3Jpem9udGFsVGh1bWIsCi0gICAgICAgIFBhcnRTY3Jv
bGxiYXJWZXJ0aWNhbFRodW1iLAotICAgICAgICBQYXJ0U2Nyb2xsYmFySG9yaXpvbnRhbFRyYWNr
LAotICAgICAgICBQYXJ0U2Nyb2xsYmFyVmVydGljYWxUcmFjaywKLQotICAgICAgICAvLyBSZW5k
ZXJUaGVtZSBwYXJ0cwotICAgICAgICBQYXJ0Q2hlY2tib3gsCi0gICAgICAgIFBhcnRSYWRpbywK
LSAgICAgICAgUGFydEJ1dHRvbiwKLSAgICAgICAgUGFydFRleHRGaWVsZCwKLSAgICAgICAgUGFy
dE1lbnVMaXN0LAotICAgICAgICBQYXJ0U2xpZGVyVHJhY2ssCi0gICAgICAgIFBhcnRTbGlkZXJU
aHVtYiwKLSAgICAgICAgUGFydElubmVyU3BpbkJ1dHRvbiwKLSAgICAgICAgUGFydFByb2dyZXNz
QmFyCi0gICAgfTsKLQotICAgIC8vIFRoZSBjdXJyZW50IHN0YXRlIG9mIHRoZSBhc3NvY2lhdGVk
IFBhcnQuCi0gICAgZW51bSBTdGF0ZSB7Ci0gICAgICAgIFN0YXRlRGlzYWJsZWQsCi0gICAgICAg
IFN0YXRlSG92ZXIsCi0gICAgICAgIFN0YXRlTm9ybWFsLAotICAgICAgICBTdGF0ZVByZXNzZWQs
Ci0gICAgfTsKLQotICAgIC8vIEV4dHJhIHBhcmFtZXRlcnMgZm9yIGRyYXdpbmcgdGhlIFBhcnRT
Y3JvbGxiYXJIb3Jpem9udGFsVHJhY2sgYW5kCi0gICAgLy8gUGFydFNjcm9sbGJhclZlcnRpY2Fs
VHJhY2suCi0gICAgc3RydWN0IFNjcm9sbGJhclRyYWNrRXh0cmFQYXJhbXMgewotICAgICAgICAv
LyBUaGUgYm91bmRzIG9mIHRoZSBlbnRpcmUgdHJhY2ssIGFzIG9wcG9zZWQgdG8gdGhlIHBhcnQg
YmVpbmcgcGFpbnRlZC4KLSAgICAgICAgaW50IHRyYWNrWDsKLSAgICAgICAgaW50IHRyYWNrWTsK
LSAgICAgICAgaW50IHRyYWNrV2lkdGg7Ci0gICAgICAgIGludCB0cmFja0hlaWdodDsKLSAgICB9
OwotCi0gICAgLy8gRXh0cmEgcGFyYW1ldGVycyBmb3IgUGFydENoZWNrYm94LCBQYXJ0UHVzaEJ1
dHRvbiBhbmQgUGFydFJhZGlvLgotICAgIHN0cnVjdCBCdXR0b25FeHRyYVBhcmFtcyB7Ci0gICAg
ICAgIGJvb2wgY2hlY2tlZDsKLSAgICAgICAgYm9vbCBpbmRldGVybWluYXRlOyAvLyBXaGV0aGVy
IHRoZSBidXR0b24gc3RhdGUgaXMgaW5kZXRlcm1pbmF0ZS4KLSAgICAgICAgYm9vbCBpc0RlZmF1
bHQ7IC8vIFdoZXRoZXIgdGhlIGJ1dHRvbiBpcyBkZWZhdWx0IGJ1dHRvbi4KLSAgICAgICAgYm9v
bCBoYXNCb3JkZXI7Ci0gICAgICAgIFdlYkNvbG9yIGJhY2tncm91bmRDb2xvcjsKLSAgICB9Owot
Ci0gICAgLy8gRXh0cmEgcGFyYW1ldGVycyBmb3IgUGFydFRleHRGaWVsZAotICAgIHN0cnVjdCBU
ZXh0RmllbGRFeHRyYVBhcmFtcyB7Ci0gICAgICAgIGJvb2wgaXNUZXh0QXJlYTsKLSAgICAgICAg
Ym9vbCBpc0xpc3Rib3g7Ci0gICAgICAgIFdlYkNvbG9yIGJhY2tncm91bmRDb2xvcjsKLSAgICB9
OwotCi0gICAgLy8gRXh0cmEgcGFyYW1ldGVycyBmb3IgUGFydE1lbnVMaXN0Ci0gICAgc3RydWN0
IE1lbnVMaXN0RXh0cmFQYXJhbXMgewotICAgICAgICBib29sIGhhc0JvcmRlcjsKLSAgICAgICAg
Ym9vbCBoYXNCb3JkZXJSYWRpdXM7Ci0gICAgICAgIGludCBhcnJvd1g7Ci0gICAgICAgIGludCBh
cnJvd1k7Ci0gICAgICAgIFdlYkNvbG9yIGJhY2tncm91bmRDb2xvcjsKLSAgICB9OwotCi0gICAg
Ly8gRXh0cmEgcGFyYW1ldGVycyBmb3IgUGFydFNsaWRlclRyYWNrIGFuZCBQYXJ0U2xpZGVyVGh1
bWIKLSAgICBzdHJ1Y3QgU2xpZGVyRXh0cmFQYXJhbXMgewotICAgICAgICBib29sIHZlcnRpY2Fs
OwotICAgICAgICBib29sIGluRHJhZzsKLSAgICB9OwotCi0gICAgLy8gRXh0cmEgcGFyYW1ldGVy
cyBmb3IgUGFydElubmVyU3BpbkJ1dHRvbgotICAgIHN0cnVjdCBJbm5lclNwaW5CdXR0b25FeHRy
YVBhcmFtcyB7Ci0gICAgICAgIGJvb2wgc3BpblVwOwotICAgICAgICBib29sIHJlYWRPbmx5Owot
ICAgIH07Ci0KLSAgICAvLyBFeHRyYSBwYXJhbWV0ZXJzIGZvciBQYXJ0UHJvZ3Jlc3NCYXIKLSAg
ICBzdHJ1Y3QgUHJvZ3Jlc3NCYXJFeHRyYVBhcmFtcyB7Ci0gICAgICAgIGJvb2wgZGV0ZXJtaW5h
dGU7Ci0gICAgICAgIGludCB2YWx1ZVJlY3RYOwotICAgICAgICBpbnQgdmFsdWVSZWN0WTsKLSAg
ICAgICAgaW50IHZhbHVlUmVjdFdpZHRoOwotICAgICAgICBpbnQgdmFsdWVSZWN0SGVpZ2h0Owot
ICAgIH07Ci0KLSAgICB1bmlvbiBFeHRyYVBhcmFtcyB7Ci0gICAgICAgIFNjcm9sbGJhclRyYWNr
RXh0cmFQYXJhbXMgc2Nyb2xsYmFyVHJhY2s7Ci0gICAgICAgIEJ1dHRvbkV4dHJhUGFyYW1zIGJ1
dHRvbjsKLSAgICAgICAgVGV4dEZpZWxkRXh0cmFQYXJhbXMgdGV4dEZpZWxkOwotICAgICAgICBN
ZW51TGlzdEV4dHJhUGFyYW1zIG1lbnVMaXN0OwotICAgICAgICBTbGlkZXJFeHRyYVBhcmFtcyBz
bGlkZXI7Ci0gICAgICAgIElubmVyU3BpbkJ1dHRvbkV4dHJhUGFyYW1zIGlubmVyU3BpbjsKLSAg
ICAgICAgUHJvZ3Jlc3NCYXJFeHRyYVBhcmFtcyBwcm9ncmVzc0JhcjsKLSAgICB9OwotCi0gICAg
Ly8gR2V0cyB0aGUgc2l6ZSBvZiB0aGUgZ2l2ZW4gdGhlbWUgcGFydC4gRm9yIHZhcmlhYmxlIHNp
emVkIGl0ZW1zCi0gICAgLy8gbGlrZSB2ZXJ0aWNhbCBzY3JvbGxiYXIgdGh1bWJzLCB0aGUgd2lk
dGggd2lsbCBiZSB0aGUgcmVxdWlyZWQgd2lkdGggb2YKLSAgICAvLyB0aGUgdHJhY2sgd2hpbGUg
dGhlIGhlaWdodCB3aWxsIGJlIHRoZSBtaW5pbXVtIGhlaWdodC4KLSAgICB2aXJ0dWFsIFdlYlNp
emUgZ2V0U2l6ZShQYXJ0KSB7IHJldHVybiBXZWJTaXplKCk7IH0KLSAgICAvLyBQYWludCB0aGUg
Z2l2ZW4gdGhlIGdpdmVuIHRoZW1lIHBhcnQuCi0gICAgdmlydHVhbCB2b2lkIHBhaW50KFdlYkNh
bnZhcyosIFBhcnQsIFN0YXRlLCBjb25zdCBXZWJSZWN0JiwgY29uc3QgRXh0cmFQYXJhbXMqKSB7
IH0KLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYKSW5kZXg6IFNvdXJjZS9Q
bGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvZGVmYXVsdC9XZWJUaGVtZUVuZ2luZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvZGVmYXVsdC9XZWJUaGVtZUVu
Z2luZS5oCShyZXZpc2lvbiAxNDc3MTApCisrKyBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVi
bGljL2RlZmF1bHQvV2ViVGhlbWVFbmdpbmUuaAkod29ya2luZyBjb3B5KQpAQCAtMSwxNTIgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoK
LSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAot
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNpZm5kZWYgV2ViVGhlbWVFbmdpbmVfaAotI2RlZmluZSBXZWJUaGVtZUVuZ2luZV9oCi0K
LSNpbmNsdWRlICIuLi9XZWJDYW52YXMuaCIKLSNpbmNsdWRlICIuLi9XZWJDb2xvci5oIgotI2lu
Y2x1ZGUgIi4uL1dlYlNpemUuaCIKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLXN0cnVjdCBXZWJS
ZWN0OwotCi1jbGFzcyBXZWJUaGVtZUVuZ2luZSB7Ci1wdWJsaWM6Ci0gICAgLy8gVGhlIFVJIHBh
cnQgd2hpY2ggaXMgYmVpbmcgYWNjZXNzZWQuCi0gICAgZW51bSBQYXJ0IHsKLSAgICAgICAgLy8g
U2Nyb2xsYmFyVGhlbWUgcGFydHMKLSAgICAgICAgUGFydFNjcm9sbGJhckRvd25BcnJvdywKLSAg
ICAgICAgUGFydFNjcm9sbGJhckxlZnRBcnJvdywKLSAgICAgICAgUGFydFNjcm9sbGJhclJpZ2h0
QXJyb3csCi0gICAgICAgIFBhcnRTY3JvbGxiYXJVcEFycm93LAotICAgICAgICBQYXJ0U2Nyb2xs
YmFySG9yaXpvbnRhbFRodW1iLAotICAgICAgICBQYXJ0U2Nyb2xsYmFyVmVydGljYWxUaHVtYiwK
LSAgICAgICAgUGFydFNjcm9sbGJhckhvcml6b250YWxUcmFjaywKLSAgICAgICAgUGFydFNjcm9s
bGJhclZlcnRpY2FsVHJhY2ssCi0KLSAgICAgICAgLy8gUmVuZGVyVGhlbWUgcGFydHMKLSAgICAg
ICAgUGFydENoZWNrYm94LAotICAgICAgICBQYXJ0UmFkaW8sCi0gICAgICAgIFBhcnRCdXR0b24s
Ci0gICAgICAgIFBhcnRUZXh0RmllbGQsCi0gICAgICAgIFBhcnRNZW51TGlzdCwKLSAgICAgICAg
UGFydFNsaWRlclRyYWNrLAotICAgICAgICBQYXJ0U2xpZGVyVGh1bWIsCi0gICAgICAgIFBhcnRJ
bm5lclNwaW5CdXR0b24sCi0gICAgICAgIFBhcnRQcm9ncmVzc0JhcgotICAgIH07Ci0KLSAgICAv
LyBUaGUgY3VycmVudCBzdGF0ZSBvZiB0aGUgYXNzb2NpYXRlZCBQYXJ0LgotICAgIGVudW0gU3Rh
dGUgewotICAgICAgICBTdGF0ZURpc2FibGVkLAotICAgICAgICBTdGF0ZUhvdmVyLAotICAgICAg
ICBTdGF0ZU5vcm1hbCwKLSAgICAgICAgU3RhdGVQcmVzc2VkLAotICAgIH07Ci0KLSAgICAvLyBF
eHRyYSBwYXJhbWV0ZXJzIGZvciBkcmF3aW5nIHRoZSBQYXJ0U2Nyb2xsYmFySG9yaXpvbnRhbFRy
YWNrIGFuZAotICAgIC8vIFBhcnRTY3JvbGxiYXJWZXJ0aWNhbFRyYWNrLgotICAgIHN0cnVjdCBT
Y3JvbGxiYXJUcmFja0V4dHJhUGFyYW1zIHsKLSAgICAgICAgLy8gVGhlIGJvdW5kcyBvZiB0aGUg
ZW50aXJlIHRyYWNrLCBhcyBvcHBvc2VkIHRvIHRoZSBwYXJ0IGJlaW5nIHBhaW50ZWQuCi0gICAg
ICAgIGludCB0cmFja1g7Ci0gICAgICAgIGludCB0cmFja1k7Ci0gICAgICAgIGludCB0cmFja1dp
ZHRoOwotICAgICAgICBpbnQgdHJhY2tIZWlnaHQ7Ci0gICAgfTsKLQotICAgIC8vIEV4dHJhIHBh
cmFtZXRlcnMgZm9yIFBhcnRDaGVja2JveCwgUGFydFB1c2hCdXR0b24gYW5kIFBhcnRSYWRpby4K
LSAgICBzdHJ1Y3QgQnV0dG9uRXh0cmFQYXJhbXMgewotICAgICAgICBib29sIGNoZWNrZWQ7Ci0g
ICAgICAgIGJvb2wgaW5kZXRlcm1pbmF0ZTsgLy8gV2hldGhlciB0aGUgYnV0dG9uIHN0YXRlIGlz
IGluZGV0ZXJtaW5hdGUuCi0gICAgICAgIGJvb2wgaXNEZWZhdWx0OyAvLyBXaGV0aGVyIHRoZSBi
dXR0b24gaXMgZGVmYXVsdCBidXR0b24uCi0gICAgICAgIGJvb2wgaGFzQm9yZGVyOwotICAgICAg
ICBXZWJDb2xvciBiYWNrZ3JvdW5kQ29sb3I7Ci0gICAgfTsKLQotICAgIC8vIEV4dHJhIHBhcmFt
ZXRlcnMgZm9yIFBhcnRUZXh0RmllbGQKLSAgICBzdHJ1Y3QgVGV4dEZpZWxkRXh0cmFQYXJhbXMg
ewotICAgICAgICBib29sIGlzVGV4dEFyZWE7Ci0gICAgICAgIGJvb2wgaXNMaXN0Ym94OwotICAg
ICAgICBXZWJDb2xvciBiYWNrZ3JvdW5kQ29sb3I7Ci0gICAgfTsKLQotICAgIC8vIEV4dHJhIHBh
cmFtZXRlcnMgZm9yIFBhcnRNZW51TGlzdAotICAgIHN0cnVjdCBNZW51TGlzdEV4dHJhUGFyYW1z
IHsKLSAgICAgICAgYm9vbCBoYXNCb3JkZXI7Ci0gICAgICAgIGJvb2wgaGFzQm9yZGVyUmFkaXVz
OwotICAgICAgICBpbnQgYXJyb3dYOwotICAgICAgICBpbnQgYXJyb3dZOwotICAgICAgICBXZWJD
b2xvciBiYWNrZ3JvdW5kQ29sb3I7Ci0gICAgfTsKLQotICAgIC8vIEV4dHJhIHBhcmFtZXRlcnMg
Zm9yIFBhcnRTbGlkZXJUcmFjayBhbmQgUGFydFNsaWRlclRodW1iCi0gICAgc3RydWN0IFNsaWRl
ckV4dHJhUGFyYW1zIHsKLSAgICAgICAgYm9vbCB2ZXJ0aWNhbDsKLSAgICAgICAgYm9vbCBpbkRy
YWc7Ci0gICAgfTsKLQotICAgIC8vIEV4dHJhIHBhcmFtZXRlcnMgZm9yIFBhcnRJbm5lclNwaW5C
dXR0b24KLSAgICBzdHJ1Y3QgSW5uZXJTcGluQnV0dG9uRXh0cmFQYXJhbXMgewotICAgICAgICBi
b29sIHNwaW5VcDsKLSAgICAgICAgYm9vbCByZWFkT25seTsKLSAgICB9OwotCi0gICAgLy8gRXh0
cmEgcGFyYW1ldGVycyBmb3IgUGFydFByb2dyZXNzQmFyCi0gICAgc3RydWN0IFByb2dyZXNzQmFy
RXh0cmFQYXJhbXMgewotICAgICAgICBib29sIGRldGVybWluYXRlOwotICAgICAgICBpbnQgdmFs
dWVSZWN0WDsKLSAgICAgICAgaW50IHZhbHVlUmVjdFk7Ci0gICAgICAgIGludCB2YWx1ZVJlY3RX
aWR0aDsKLSAgICAgICAgaW50IHZhbHVlUmVjdEhlaWdodDsKLSAgICB9OwotCi0gICAgdW5pb24g
RXh0cmFQYXJhbXMgewotICAgICAgICBTY3JvbGxiYXJUcmFja0V4dHJhUGFyYW1zIHNjcm9sbGJh
clRyYWNrOwotICAgICAgICBCdXR0b25FeHRyYVBhcmFtcyBidXR0b247Ci0gICAgICAgIFRleHRG
aWVsZEV4dHJhUGFyYW1zIHRleHRGaWVsZDsKLSAgICAgICAgTWVudUxpc3RFeHRyYVBhcmFtcyBt
ZW51TGlzdDsKLSAgICAgICAgU2xpZGVyRXh0cmFQYXJhbXMgc2xpZGVyOwotICAgICAgICBJbm5l
clNwaW5CdXR0b25FeHRyYVBhcmFtcyBpbm5lclNwaW47Ci0gICAgICAgIFByb2dyZXNzQmFyRXh0
cmFQYXJhbXMgcHJvZ3Jlc3NCYXI7Ci0gICAgfTsKLQotICAgIC8vIEdldHMgdGhlIHNpemUgb2Yg
dGhlIGdpdmVuIHRoZW1lIHBhcnQuIEZvciB2YXJpYWJsZSBzaXplZCBpdGVtcwotICAgIC8vIGxp
a2UgdmVydGljYWwgc2Nyb2xsYmFyIHRodW1icywgdGhlIHdpZHRoIHdpbGwgYmUgdGhlIHJlcXVp
cmVkIHdpZHRoIG9mCi0gICAgLy8gdGhlIHRyYWNrIHdoaWxlIHRoZSBoZWlnaHQgd2lsbCBiZSB0
aGUgbWluaW11bSBoZWlnaHQuCi0gICAgdmlydHVhbCBXZWJTaXplIGdldFNpemUoUGFydCkgeyBy
ZXR1cm4gV2ViU2l6ZSgpOyB9Ci0gICAgLy8gUGFpbnQgdGhlIGdpdmVuIHRoZSBnaXZlbiB0aGVt
ZSBwYXJ0LgotICAgIHZpcnR1YWwgdm9pZCBwYWludChXZWJDYW52YXMqLCBQYXJ0LCBTdGF0ZSwg
Y29uc3QgV2ViUmVjdCYsIGNvbnN0IEV4dHJhUGFyYW1zKikgeyB9Ci19OwotCi19IC8vIG5hbWVz
cGFjZSBXZWJLaXQKLQotI2VuZGlmCkluZGV4OiBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVi
bGljL2xpbnV4L1dlYkZvbnRGYW1pbHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvUGxhdGZvcm0v
Y2hyb21pdW0vcHVibGljL2xpbnV4L1dlYkZvbnRGYW1pbHkuaAkocmV2aXNpb24gMTQ3NzEwKQor
KysgU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9saW51eC9XZWJGb250RmFtaWx5LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNDcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0g
KiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0g
KiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgV2ViRm9udEZhbWlseV9oCi0j
ZGVmaW5lIFdlYkZvbnRGYW1pbHlfaAotCi0jaW5jbHVkZSAiLi4vV2ViQ1N0cmluZy5oIgotI2lu
Y2x1ZGUgIi4uL1dlYkNvbW1vbi5oIgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotc3RydWN0IFdl
YkZvbnRGYW1pbHkgewotICAgIFdlYkNTdHJpbmcgbmFtZTsKLSAgICBib29sIGlzQm9sZDsKLSAg
ICBib29sIGlzSXRhbGljOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAv
LyBXZWJGb250RmFtaWx5X2gKSW5kZXg6IFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMv
bGludXgvV2ViRm9udEluZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvUGxhdGZvcm0vY2hyb21p
dW0vcHVibGljL2xpbnV4L1dlYkZvbnRJbmZvLmgJKHJldmlzaW9uIDE0NzcxMCkKKysrIFNvdXJj
ZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvbGludXgvV2ViRm9udEluZm8uaAkod29ya2luZyBj
b3B5KQpAQCAtMSw3OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
LSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBXZWJGb250SW5mb19oCi0jZGVmaW5lIFdlYkZv
bnRJbmZvX2gKLQotI2luY2x1ZGUgIi4uL1dlYkNTdHJpbmcuaCIKLSNpbmNsdWRlICJXZWJGb250
RmFtaWx5LmgiCi0jaW5jbHVkZSAiV2ViRm9udFJlbmRlclN0eWxlLmgiCi0KLSNpbmNsdWRlIDxz
dHJpbmcuaD4KLSNpbmNsdWRlIDx1bmlzdGQuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNs
YXNzIFdlYkZvbnRJbmZvIHsKLXB1YmxpYzoKLSAgICAvLyBTZXQgYSBnbG9iYWwgcHJlZmVyZW5j
ZSBkZXNjcmliaW5nIHdoZXRoZXIgcmVuZGVyU3R5bGVGb3JTdHJpa2UoKSBzaG91bGQKLSAgICAv
LyBlbmFibGUgc3VicGl4ZWwgcG9zaXRpb25pbmcgb3Igbm90LiBGb250Q29uZmlnIGRvZXNuJ3Qg
Y3VycmVudGx5IHByb3ZpZGUKLSAgICAvLyBhIHBhcmFtZXRlciBmb3IgY29udHJvbGxpbmcgdGhp
cy4KLSAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyB2b2lkIHNldFN1YnBpeGVsUG9zaXRpb25pbmco
Ym9vbCk7Ci0KLSAgICAvLyBSZXR1cm4gYSBmb250IGZhbWlseSB3aGljaCBwcm92aWRlcyBnbHlw
aHMgZm9yIHRoZSBVbmljb2RlIGNvZGUgcG9pbnRzCi0gICAgLy8gc3BlY2lmaWVkIGJ5IHx1dGYx
NnwKLSAgICAvLyAgIGNoYXJhY3RlcnM6IGEgbmF0aXZlLWVuZGlhbiBVVEYxNiBzdHJpbmcKLSAg
ICAvLyAgIG51bUNoYXJhY3RlcnM6IHRoZSBudW1iZXIgb2YgMTYtYml0IHdvcmRzIGluIHx1dGYx
NnwKLSAgICAvLyAgIHByZWZlcnJlZExvY2FsZTogcHJlZmVycmVkIGxvY2FsZSBpZGVudGlmaWVy
IGZvciB0aGUgfGNoYXJhY3RlcnN8Ci0gICAgLy8gICAgICAgICAgICAgICAgICAgIChlLmcuICJl
biIsICJqYSIsICJ6aC1DTiIpCi0gICAgLy8KLSAgICAvLyBSZXR1cm5zOiB0aGUgZm9udCBmYW1p
bHkgb3IgYW4gZW1wdHkgc3RyaW5nIGlmIHRoZSByZXF1ZXN0IGNvdWxkIG5vdCBiZQotICAgIC8v
IHNhdGlzZmllZC4KLSAgICAvLyBSZXR1cm5zOiB0aGUgZm9udCBmYW1pbHkgaW5zdGFuY2UuIFRo
ZSBpbnN0YW5jZSBoYXMgYW4gZW1wdHkgZm9udCBuYW1lIGlmIHRoZSByZXF1ZXN0IGNvdWxkIG5v
dCBiZSBzYXRpc2ZpZWQuCi0gICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgdm9pZCBmYW1pbHlGb3JD
aGFycyhjb25zdCBXZWJVQ2hhciogY2hhcmFjdGVycywgc2l6ZV90IG51bUNoYXJhY3RlcnMsIGNv
bnN0IGNoYXIqIHByZWZlcnJlZExvY2FsZSwgV2ViRm9udEZhbWlseSopOwotCi0gICAgLy8gRmls
bCBvdXQgdGhlIGdpdmVuIFdlYkZvbnRSZW5kZXJTdHlsZSB3aXRoIHRoZSB1c2VyJ3MgcHJlZmVy
ZW5jZXMgZm9yCi0gICAgLy8gcmVuZGVyaW5nIHRoZSBnaXZlbiBmb250IGF0IHRoZSBnaXZlbiBz
aXplIChpbiBwaXhlbHMpLgotICAgIC8vICAgZmFtaWx5OiBpLmUuICJUaW1lcyBOZXcgUm9tYW4i
Ci0gICAgLy8gICBzaXplQW5kU3R5bGU6Ci0gICAgLy8gICAgICAzMzIyMjIyMjIyMjIxMTExMTEx
MTExCi0gICAgLy8gICAgICAxMDk4NzY1NDMyMTA5ODc2NTQzMjEwOTg3NjU0MzIxMAotICAgIC8v
ICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0gICAgLy8gICAgIHwuLi4u
Li4uLi4uLi4uLlNpemUuLi4uLi4uLi4uLi5JQnwKLSAgICAvLyAgICAgKy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tKwotICAgIC8vICAgICBJOiBpdGFsaWMgZmxhZwotICAgIC8vICAg
ICBCOiBib2xkIGZsYWcKLSAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyB2b2lkIHJlbmRlclN0eWxl
Rm9yU3RyaWtlKGNvbnN0IGNoYXIqIGZhbWlseSwgaW50IHNpemVBbmRTdHlsZSwgV2ViRm9udFJl
bmRlclN0eWxlKiByZXN1bHQpOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRp
ZgpJbmRleDogU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9saW51eC9XZWJGb250UmVu
ZGVyU3R5bGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGlj
L2xpbnV4L1dlYkZvbnRSZW5kZXJTdHlsZS5oCShyZXZpc2lvbiAxNDc3MTApCisrKyBTb3VyY2Uv
UGxhdGZvcm0vY2hyb21pdW0vcHVibGljL2xpbnV4L1dlYkZvbnRSZW5kZXJTdHlsZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDYzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQot
ICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdlYkZvbnRSZW5kZXJTdHlsZV9oCi0j
ZGVmaW5lIFdlYkZvbnRSZW5kZXJTdHlsZV9oCi0KLSNpbmNsdWRlICIuLi9XZWJDb21tb24uaCIK
LQotbmFtZXNwYWNlIFdlYkNvcmUgeyBzdHJ1Y3QgRm9udFJlbmRlclN0eWxlOyB9Ci0KLW5hbWVz
cGFjZSBXZWJLaXQgewotCi1zdHJ1Y3QgV0VCS0lUX0VYUE9SVCBXZWJGb250UmVuZGVyU3R5bGUg
ewotICAgIC8vIEVhY2ggb2YgdGhlIHVzZSogbWVtYmVycyBiZWxvdyBjYW4gdGFrZSBvbmUgb2Yg
dGhyZWUgdmFsdWVzOgotICAgIC8vICAgMDogb2ZmCi0gICAgLy8gICAxOiBvbgotICAgIC8vICAg
Mjogbm8gcHJlZmVyZW5jZSBleHByZXNzZWQKLSAgICBjaGFyIHVzZUJpdG1hcHM7IC8vIHVzZSBl
bWJlZGRlZCBiaXRtYXAgc3RyaWtlIGlmIHBvc3NpYmxlCi0gICAgY2hhciB1c2VBdXRvSGludDsg
Ly8gdXNlICdhdXRvJyBoaW50aW5nIChGcmVlVHlwZSBzcGVjaWZpYykKLSAgICBjaGFyIHVzZUhp
bnRpbmc7IC8vIGhpbnQgZ2x5cGhzIHRvIHRoZSBwaXhlbCBncmlkCi0gICAgY2hhciBoaW50U3R5
bGU7IC8vIGxldmVsIG9mIGhpbnRpbmcsIDAuLjMKLSAgICBjaGFyIHVzZUFudGlBbGlhczsgLy8g
YW50aWFsaWFzIGdseXBoIHNoYXBlcwotICAgIGNoYXIgdXNlU3VicGl4ZWxSZW5kZXJpbmc7IC8v
IHVzZSBzdWJwaXhlbCByZW5kZXJpbmcgKHBhcnRpYWxseS1maWxsZWQgcGl4ZWxzKQotICAgIGNo
YXIgdXNlU3VicGl4ZWxQb3NpdGlvbmluZzsgLy8gdXNlIHN1YnBpeGVsIHBvc2l0aW9uaW5nIChm
cmFjdGlvbmFsIFggcG9zaXRpb25zIGZvciBnbHlwaHMpCi0KLSNpZiBXRUJLSVRfSU1QTEVNRU5U
QVRJT04KLSAgICAvLyBUcmFuc2xhdGVzIHRoZSBtZW1iZXJzIG9mIHRoaXMgc3RydWN0IHRvIGEg
Rm9udFJlbmRlclN0eWxlCi0gICAgdm9pZCB0b0ZvbnRSZW5kZXJTdHlsZShXZWJDb3JlOjpGb250
UmVuZGVyU3R5bGUqKTsKLSNlbmRpZgotCi0gICAgdm9pZCBzZXREZWZhdWx0cygpOwotfTsKLQot
fSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBXZWJGb250UmVuZGVyU3R5bGVfaApJ
bmRleDogU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9saW51eC9XZWJTYW5kYm94U3Vw
cG9ydC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvbGlu
dXgvV2ViU2FuZGJveFN1cHBvcnQuaAkocmV2aXNpb24gMTQ3NzEwKQorKysgU291cmNlL1BsYXRm
b3JtL2Nocm9taXVtL3B1YmxpYy9saW51eC9XZWJTYW5kYm94U3VwcG9ydC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDY1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgot
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdlYlNhbmRib3hTdXBwb3J0X2gKLSNkZWZpbmUg
V2ViU2FuZGJveFN1cHBvcnRfaAotCi0jaW5jbHVkZSAiLi4vV2ViQ29tbW9uLmgiCi0jaW5jbHVk
ZSAiLi4vV2ViU3RyaW5nLmgiCi0jaW5jbHVkZSAiV2ViRm9udEZhbWlseS5oIgotCi1uYW1lc3Bh
Y2UgV2ViS2l0IHsKLQotc3RydWN0IFdlYkZvbnRSZW5kZXJTdHlsZTsKLQotLy8gUHV0IG1ldGhv
ZHMgaGVyZSB0aGF0IGFyZSByZXF1aXJlZCBkdWUgdG8gc2FuZGJveCByZXN0cmljdGlvbnMuCi1j
bGFzcyBXZWJTYW5kYm94U3VwcG9ydCB7Ci1wdWJsaWM6Ci0gICAgLy8gRm9udHMgLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0K
LSAgICAvLyBHZXQgYSBmb250IGZhbWlseSB3aGljaCBjb250YWlucyBnbHlwaHMgZm9yIHRoZSBn
aXZlbiBVbmljb2RlCi0gICAgLy8gY29kZS1wb2ludHMuCi0gICAgLy8gICBjaGFyYWN0ZXJzOiBh
IFVURi0xNiBlbmNvZGVkIHN0cmluZwotICAgIC8vICAgbnVtQ2hhcmFjdGVyczogdGhlIG51bWJl
ciBvZiAxNi1iaXQgd29yZHMgaW4gfGNoYXJhY3RlcnN8Ci0gICAgLy8gICBwcmVmZXJyZWRMb2Nh
bGU6IHByZWZlcnJlZCBsb2NhbGUgaWRlbnRpZmllciBmb3IgdGhlIHxjaGFyYWN0ZXJzfAotICAg
IC8vICAgICAgICAgICAgICAgICAgICAoZS5nLiAiZW4iLCAiamEiLCAiemgtQ04iKQotICAgIC8v
Ci0gICAgLy8gUmV0dXJucyBhIHN0cmluZyB3aXRoIHRoZSBmb250IGZhbWlseSBvbiBhbiBlbXB0
eSBzdHJpbmcgaWYgdGhlCi0gICAgLy8gcmVxdWVzdCBjYW5ub3QgYmUgc2F0aXNmaWVkLgotICAg
IC8vIFJldHVybnMgYSBXZWJGb250RmFtaWx5IGluc3RhbmNlIHdpdGggdGhlIGZvbnQgbmFtZS4g
VGhlIGluc3RhbmNlIGhhcyBlbXB0eSBmb250IG5hbWUgaWYgdGhlIHJlcXVlc3QgY2Fubm90IGJl
IHNhdGlzZmllZC4KLSAgICAvLyBGSVhNRTogTWFrZSB0aGlzIHRvIGJlIGEgcHVyZSB2aXJ0dWFs
IGZ1bmN0aW9uIGFmdGVyIHRyYW5zaXRpb24uCi0gICAgdmlydHVhbCB2b2lkIGdldEZvbnRGYW1p
bHlGb3JDaGFyYWN0ZXJzKGNvbnN0IFdlYlVDaGFyKiBjaGFyYWN0ZXJzLCBzaXplX3QgbnVtQ2hh
cmFjdGVycywgY29uc3QgY2hhciogcHJlZmVycmVkTG9jYWxlLCBXZWJGb250RmFtaWx5KikgPSAw
OwotCi0gICAgdmlydHVhbCB2b2lkIGdldFJlbmRlclN0eWxlRm9yU3RyaWtlKGNvbnN0IGNoYXIq
IGZhbWlseSwgaW50IHNpemVBbmRTdHlsZSwgV2ViRm9udFJlbmRlclN0eWxlKikgPSAwOwotfTsK
LQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZgpJbmRleDogU291cmNlL1BsYXRmb3Jt
L2Nocm9taXVtL3B1YmxpYy9tYWMvV2ViU2FuZGJveFN1cHBvcnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL21hYy9XZWJTYW5kYm94U3VwcG9ydC5oCShy
ZXZpc2lvbiAxNDc3MTApCisrKyBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL21hYy9X
ZWJTYW5kYm94U3VwcG9ydC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYxICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlz
dHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwot
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVm
IFdlYlNhbmRib3hTdXBwb3J0X2gKLSNkZWZpbmUgV2ViU2FuZGJveFN1cHBvcnRfaAotCi10eXBl
ZGVmIHN0cnVjdCBDR0ZvbnQqIENHRm9udFJlZjsKLQotI2lmZGVmIF9fT0JKQ19fCi1AY2xhc3Mg
TlNGb250OwotI2Vsc2UKLWNsYXNzIE5TRm9udDsKLSNlbmRpZgotCi1uYW1lc3BhY2UgV2ViS2l0
IHsKLQotLy8gUHV0IG1ldGhvZHMgaGVyZSB0aGF0IGFyZSByZXF1aXJlZCBkdWUgdG8gc2FuZGJv
eCByZXN0cmljdGlvbnMuCi1jbGFzcyBXZWJTYW5kYm94U3VwcG9ydCB7Ci1wdWJsaWM6Ci0gICAg
Ly8gR2l2ZW4gYW4gaW5wdXQgZm9udCAtIHxzcmNGb250fCBbd2hpY2ggY2FuJ3QgYmUgbG9hZGVk
IGR1ZSB0byBzYW5kYm94Ci0gICAgLy8gcmVzdHJpY3Rpb25zXS4gUmV0dXJuIGEgZm9udCBiZWxv
bmdpbmcgdG8gYW4gZXF1aXZhbGVudCBmb250IGZpbGUKLSAgICAvLyB0aGF0IGNhbiBiZSB1c2Vk
IHRvIGFjY2VzcyB0aGUgZm9udCBhbmQgYSB1bmlxdWUgaWRlbnRpZmllciBjb3JyZXNwb25kaW5n
Ci0gICAgLy8gdG8gdGhlIG9uLWRpc2sgZm9udCBmaWxlLgotICAgIC8vCi0gICAgLy8gSWYgdGhp
cyBmdW5jdGlvbiBzdWNjZWVkcywgdGhlIGNhbGxlciBhc3N1bWVzIG93bmVyc2hpcCBvZiB0aGUg
fG91dHwKLSAgICAvLyBwYXJhbWV0ZXIgYW5kIG11c3QgY2FsbCBDR0ZvbnRSZWxlYXNlKCkgdG8g
dW5sb2FkIGl0IHdoZW4gZG9uZS4KLSAgICAvLwotICAgIC8vIFJldHVybnM6IHRydWUgb24gc3Vj
Y2VzcywgZmFsc2Ugb24gZXJyb3IuCi0gICAgdmlydHVhbCBib29sIGxvYWRGb250KE5TRm9udCog
c3JjRm9udCwgQ0dGb250UmVmKiBvdXQsIHVpbnQzMl90KiBmb250SUQpID0gMDsKLX07Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYKSW5kZXg6IFNvdXJjZS9QbGF0Zm9ybS9jaHJv
bWl1bS9wdWJsaWMvbWFjL1dlYlRoZW1lRW5naW5lLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Bs
YXRmb3JtL2Nocm9taXVtL3B1YmxpYy9tYWMvV2ViVGhlbWVFbmdpbmUuaAkocmV2aXNpb24gMTQ3
NzEwKQorKysgU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9tYWMvV2ViVGhlbWVFbmdp
bmUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw3OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAq
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0g
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBXZWJUaGVtZUVuZ2lu
ZV9oCi0jZGVmaW5lIFdlYlRoZW1lRW5naW5lX2gKLQotI2luY2x1ZGUgIi4uL1dlYkNhbnZhcy5o
IgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotc3RydWN0IFdlYlJlY3Q7Ci0KLWNsYXNzIFdlYlRo
ZW1lRW5naW5lIHsKLXB1YmxpYzoKLSAgICBlbnVtIFN0YXRlIHsKLSAgICAgICAgU3RhdGVEaXNh
YmxlZCwKLSAgICAgICAgU3RhdGVJbmFjdGl2ZSwKLSAgICAgICAgU3RhdGVBY3RpdmUsCi0gICAg
ICAgIFN0YXRlUHJlc3NlZCwKLSAgICB9OwotCi0gICAgZW51bSBTaXplIHsKLSAgICAgICAgU2l6
ZVJlZ3VsYXIsCi0gICAgICAgIFNpemVTbWFsbCwKLSAgICB9OwotCi0gICAgZW51bSBTY3JvbGxi
YXJPcmllbnRhdGlvbiB7Ci0gICAgICAgIFNjcm9sbGJhck9yaWVudGF0aW9uSG9yaXpvbnRhbCwK
LSAgICAgICAgU2Nyb2xsYmFyT3JpZW50YXRpb25WZXJ0aWNhbCwKLSAgICB9OwotCi0gICAgZW51
bSBTY3JvbGxiYXJQYXJlbnQgewotICAgICAgICBTY3JvbGxiYXJQYXJlbnRTY3JvbGxWaWV3LAot
ICAgICAgICBTY3JvbGxiYXJQYXJlbnRSZW5kZXJMYXllciwKLSAgICB9OwotCi0gICAgc3RydWN0
IFNjcm9sbGJhckluZm8gewotICAgICAgICBTY3JvbGxiYXJPcmllbnRhdGlvbiBvcmllbnRhdGlv
bjsKLSAgICAgICAgU2Nyb2xsYmFyUGFyZW50IHBhcmVudDsKLSAgICAgICAgaW50IG1heFZhbHVl
OwotICAgICAgICBpbnQgY3VycmVudFZhbHVlOwotICAgICAgICBpbnQgdmlzaWJsZVNpemU7Ci0g
ICAgICAgIGludCB0b3RhbFNpemU7Ci0gICAgfTsKLQotICAgIHZpcnR1YWwgdm9pZCBwYWludFNj
cm9sbGJhclRodW1iKFdlYkNhbnZhcyosIFN0YXRlLCBTaXplLCBjb25zdCBXZWJSZWN0JiwgY29u
c3QgU2Nyb2xsYmFySW5mbyYpIHsgfQotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNl
bmRpZgpJbmRleDogU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy93aW4vV2ViU2FuZGJv
eFN1cHBvcnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGlj
L3dpbi9XZWJTYW5kYm94U3VwcG9ydC5oCShyZXZpc2lvbiAxNDc3MTApCisrKyBTb3VyY2UvUGxh
dGZvcm0vY2hyb21pdW0vcHVibGljL3dpbi9XZWJTYW5kYm94U3VwcG9ydC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgot
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdlYlNhbmRib3hTdXBwb3J0X2gKLSNkZWZpbmUg
V2ViU2FuZGJveFN1cHBvcnRfaAotCi10eXBlZGVmIHN0cnVjdCBIRk9OVF9fKiBIRk9OVDsKLQot
bmFtZXNwYWNlIFdlYktpdCB7Ci0KLS8vIFB1dCBtZXRob2RzIGhlcmUgdGhhdCBhcmUgcmVxdWly
ZWQgZHVlIHRvIHNhbmRib3ggcmVzdHJpY3Rpb25zLgotY2xhc3MgV2ViU2FuZGJveFN1cHBvcnQg
ewotcHVibGljOgotICAgIC8vIFNvbWV0aW1lcyBhIFdpbjMyIEFQSSBjYWxsIHdpbGwgZmFpbCBi
ZWNhdXNlIGEgZm9udCBpcyBub3QgbG9hZGVkLAotICAgIC8vIGFuZCBkdWUgdG8gc2FuZGJveCBy
ZXN0cmljdGlvbnMsIHRoZSBjdXJyZW50IHByb2Nlc3MgbWF5IGJlIHVuYWJsZQotICAgIC8vIHRv
IGFjY2VzcyB0aGUgZmlsZXN5c3RlbSB0byBsb2FkIHRoZSBmb250LiBTbywgdGhpcyBjYWxsIHNl
cnZlcyBhcwotICAgIC8vIGEgZmFpbG92ZXIgdG8gYXNrIHRoZSBlbWJlZGRlciB0byB0cnkgc29t
ZSBvdGhlciB3YXkgdG8gbG9hZCB0aGUKLSAgICAvLyBmb250ICh1c3VhbGx5IGJ5IGRlbGVnYXRp
bmcgdG8gYW4gZW1wb3dlcmVkIHByb2Nlc3MgdG8gaGF2ZSBpdCBsb2FkCi0gICAgLy8gdGhlIGZv
bnQpLiBSZXR1cm5zIHRydWUgaWYgdGhlIGZvbnQgd2FzIHN1Y2Nlc3NmdWxseSBsb2FkZWQuCi0g
ICAgdmlydHVhbCBib29sIGVuc3VyZUZvbnRMb2FkZWQoSEZPTlQpID0gMDsKLX07Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYKSW5kZXg6IFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1
bS9wdWJsaWMvd2luL1dlYlRoZW1lRW5naW5lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1BsYXRm
b3JtL2Nocm9taXVtL3B1YmxpYy93aW4vV2ViVGhlbWVFbmdpbmUuaAkocmV2aXNpb24gMTQ3NzEw
KQorKysgU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy93aW4vV2ViVGhlbWVFbmdpbmUu
aAkod29ya2luZyBjb3B5KQpAQCAtMSw5MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
LSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
LSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBXZWJUaGVtZUVuZ2luZV9o
Ci0jZGVmaW5lIFdlYlRoZW1lRW5naW5lX2gKLQotI2luY2x1ZGUgIi4uL1dlYkNhbnZhcy5oIgot
I2luY2x1ZGUgIi4uL1dlYkNvbG9yLmgiCi0jaW5jbHVkZSAiLi4vV2ViU2l6ZS5oIgotCi1uYW1l
c3BhY2UgV2ViS2l0IHsKLQotc3RydWN0IFdlYlJlY3Q7Ci1zdHJ1Y3QgV2ViU2l6ZTsKLQotY2xh
c3MgV2ViVGhlbWVFbmdpbmUgewotcHVibGljOgotLy8gVGhlIHBhcnQgYW5kIHN0YXRlIHBhcmFt
ZXRlcnMgY29ycmVzcG9uZCB0byB2YWx1ZXMgZGVmaW5lZCBieSB0aGUKLS8vIFdpbmRvd3MgVGhl
bWUgQVBJIChzZWUKLS8vIGh0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS9i
Yjc3MzE4NyhWUy44NSkuYXNweCApLgotLy8gVGhlIGNsYXNzaWNTdGF0ZSBwYXJhbWV0ZXIgY29y
cmVzcG9uZHMgdG8gdGhlIHVTdGF0ZQotLy8gcGFyYW1ldGVyIG9mIHRoZSBXaW5kb3dzIERyYXdG
cmFtZUNvbnRyb2woKSBmdW5jdGlvbi4KLS8vIFNlZSB0aGUgZGVmaW5pdGlvbnMgaW4gPHZzc3R5
bGUuaD4gYW5kIDx3aW51c2VyLmg+LgotICAgIHZpcnR1YWwgdm9pZCBwYWludEJ1dHRvbigKLSAg
ICAgICAgV2ViQ2FudmFzKiwgaW50IHBhcnQsIGludCBzdGF0ZSwgaW50IGNsYXNzaWNTdGF0ZSwK
LSAgICAgICAgY29uc3QgV2ViUmVjdCYpID0gMDsKLQotICAgIHZpcnR1YWwgdm9pZCBwYWludE1l
bnVMaXN0KAotICAgICAgICBXZWJDYW52YXMqLCBpbnQgcGFydCwgaW50IHN0YXRlLCBpbnQgY2xh
c3NpY1N0YXRlLAotICAgICAgICBjb25zdCBXZWJSZWN0JikgPSAwOwotCi0gICAgdmlydHVhbCB2
b2lkIHBhaW50U2Nyb2xsYmFyQXJyb3coCi0gICAgICAgIFdlYkNhbnZhcyosIGludCBzdGF0ZSwg
aW50IGNsYXNzaWNTdGF0ZSwKLSAgICAgICAgY29uc3QgV2ViUmVjdCYpID0gMDsKLQotICAgIHZp
cnR1YWwgdm9pZCBwYWludFNjcm9sbGJhclRodW1iKAotICAgICAgICBXZWJDYW52YXMqLCBpbnQg
cGFydCwgaW50IHN0YXRlLCBpbnQgY2xhc3NpY1N0YXRlLAotICAgICAgICBjb25zdCBXZWJSZWN0
JikgPSAwOwotCi0gICAgdmlydHVhbCB2b2lkIHBhaW50U2Nyb2xsYmFyVHJhY2soCi0gICAgICAg
IFdlYkNhbnZhcyosIGludCBwYXJ0LCBpbnQgc3RhdGUsIGludCBjbGFzc2ljU3RhdGUsCi0gICAg
ICAgIGNvbnN0IFdlYlJlY3QmLCBjb25zdCBXZWJSZWN0JiBhbGlnblJlY3QpID0gMDsKLQotICAg
IHZpcnR1YWwgdm9pZCBwYWludFNwaW5CdXR0b24oCi0gICAgICAgIFdlYkNhbnZhcyosIGludCBw
YXJ0LCBpbnQgc3RhdGUsIGludCBjbGFzc2ljU3RhdGUsCi0gICAgICAgIGNvbnN0IFdlYlJlY3Qm
KSB7IH0KLQotICAgIHZpcnR1YWwgdm9pZCBwYWludFRleHRGaWVsZCgKLSAgICAgICAgV2ViQ2Fu
dmFzKiwgaW50IHBhcnQsIGludCBzdGF0ZSwgaW50IGNsYXNzaWNTdGF0ZSwKLSAgICAgICAgY29u
c3QgV2ViUmVjdCYsIFdlYkNvbG9yLCBib29sIGZpbGxDb250ZW50QXJlYSwgYm9vbCBkcmF3RWRn
ZXMpID0gMDsKLQotICAgIHZpcnR1YWwgdm9pZCBwYWludFRyYWNrYmFyKAotICAgICAgICBXZWJD
YW52YXMqLCBpbnQgcGFydCwgaW50IHN0YXRlLCBpbnQgY2xhc3NpY1N0YXRlLAotICAgICAgICBj
b25zdCBXZWJSZWN0JikgPSAwOwotCi0gICAgdmlydHVhbCB2b2lkIHBhaW50UHJvZ3Jlc3NCYXIo
Ci0gICAgICAgIFdlYkNhbnZhcyosIGNvbnN0IFdlYlJlY3QmIGJhclJlY3QsIGNvbnN0IFdlYlJl
Y3QmIHZhbHVlUmVjdCwKLSAgICAgICAgYm9vbCBkZXRlcm1pbmF0ZSwgZG91YmxlIGFuaW1hdGVk
U2Vjb25kcykgeyB9Ci0KLSAgICB2aXJ0dWFsIFdlYlNpemUgZ2V0U2l6ZShpbnQgcGFydCkgPSAw
OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZgpJbmRleDogU291cmNlL1Bs
YXRmb3JtL2Nocm9taXVtL3NyYy9QbGF0Zm9ybS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Bs
YXRmb3JtL2Nocm9taXVtL3NyYy9QbGF0Zm9ybS5jcHAJKHJldmlzaW9uIDE0NzcxMCkKKysrIFNv
dXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9zcmMvUGxhdGZvcm0uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAq
IG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAq
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0g
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSA8cHVibGljL1BsYXRm
b3JtLmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1zdGF0aWMgUGxhdGZvcm0qIHNfcGxhdGZv
cm0gPSAwOwotCi12b2lkIFBsYXRmb3JtOjppbml0aWFsaXplKFBsYXRmb3JtKiBwbGF0Zm9ybSkK
LXsKLSAgICBzX3BsYXRmb3JtID0gcGxhdGZvcm07Ci19Ci0KLXZvaWQgUGxhdGZvcm06OnNodXRk
b3duKCkKLXsKLSAgICBzX3BsYXRmb3JtID0gMDsKLX0KLQotUGxhdGZvcm0qIFBsYXRmb3JtOjpj
dXJyZW50KCkKLXsKLSAgICByZXR1cm4gc19wbGF0Zm9ybTsKLX0KLQotfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CkluZGV4OiBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vc3JjL1dlYkFjdGl2ZUdlc3R1
cmVBbmltYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9z
cmMvV2ViQWN0aXZlR2VzdHVyZUFuaW1hdGlvbi5jcHAJKHJldmlzaW9uIDE0NzcxMCkKKysrIFNv
dXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9zcmMvV2ViQWN0aXZlR2VzdHVyZUFuaW1hdGlvbi5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNjcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRP
UlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
Ci0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcu
aCIKLSNpbmNsdWRlICJXZWJBY3RpdmVHZXN0dXJlQW5pbWF0aW9uLmgiCi0KLSNpbmNsdWRlIDxw
dWJsaWMvV2ViR2VzdHVyZUN1cnZlLmg+Ci0jaW5jbHVkZSA8cHVibGljL1dlYkdlc3R1cmVDdXJ2
ZVRhcmdldC5oPgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotUGFzc093blB0cjxXZWJBY3RpdmVH
ZXN0dXJlQW5pbWF0aW9uPiBXZWJBY3RpdmVHZXN0dXJlQW5pbWF0aW9uOjpjcmVhdGVBdEFuaW1h
dGlvblN0YXJ0KFBhc3NPd25QdHI8V2ViR2VzdHVyZUN1cnZlPiBjdXJ2ZSwgV2ViR2VzdHVyZUN1
cnZlVGFyZ2V0KiB0YXJnZXQpCi17Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBXZWJBY3RpdmVH
ZXN0dXJlQW5pbWF0aW9uKGN1cnZlLCB0YXJnZXQsIDAsIHRydWUpKTsKLX0KLQotUGFzc093blB0
cjxXZWJBY3RpdmVHZXN0dXJlQW5pbWF0aW9uPiBXZWJBY3RpdmVHZXN0dXJlQW5pbWF0aW9uOjpj
cmVhdGVXaXRoVGltZU9mZnNldChQYXNzT3duUHRyPFdlYkdlc3R1cmVDdXJ2ZT4gY3VydmUsIFdl
Ykdlc3R1cmVDdXJ2ZVRhcmdldCogdGFyZ2V0LCBkb3VibGUgc3RhcnRUaW1lKQotewotICAgIHJl
dHVybiBhZG9wdFB0cihuZXcgV2ViQWN0aXZlR2VzdHVyZUFuaW1hdGlvbihjdXJ2ZSwgdGFyZ2V0
LCBzdGFydFRpbWUsIGZhbHNlKSk7Ci19Ci0KLVdlYkFjdGl2ZUdlc3R1cmVBbmltYXRpb246On5X
ZWJBY3RpdmVHZXN0dXJlQW5pbWF0aW9uKCkKLXsKLX0KLQotV2ViQWN0aXZlR2VzdHVyZUFuaW1h
dGlvbjo6V2ViQWN0aXZlR2VzdHVyZUFuaW1hdGlvbihQYXNzT3duUHRyPFdlYkdlc3R1cmVDdXJ2
ZT4gY3VydmUsIFdlYkdlc3R1cmVDdXJ2ZVRhcmdldCogdGFyZ2V0LCBkb3VibGUgc3RhcnRUaW1l
LCBib29sIHdhaXRpbmdGb3JGaXJzdFRpY2spCi0gICAgOiBtX3N0YXJ0VGltZShzdGFydFRpbWUp
Ci0gICAgLCBtX3dhaXRpbmdGb3JGaXJzdFRpY2sod2FpdGluZ0ZvckZpcnN0VGljaykKLSAgICAs
IG1fY3VydmUoY3VydmUpCi0gICAgLCBtX3RhcmdldCh0YXJnZXQpCi17Ci19Ci0KLWJvb2wgV2Vi
QWN0aXZlR2VzdHVyZUFuaW1hdGlvbjo6YW5pbWF0ZShkb3VibGUgdGltZSkKLXsKLSAgICBpZiAo
bV93YWl0aW5nRm9yRmlyc3RUaWNrKSB7Ci0gICAgICAgIG1fc3RhcnRUaW1lID0gdGltZTsKLSAg
ICAgICAgbV93YWl0aW5nRm9yRmlyc3RUaWNrID0gZmFsc2U7Ci0gICAgfQotICAgIC8vIEFsbCBX
ZWJHZXN0dXJlQ3VydmVzIGFzc3VtZSB6ZXJvLWJhc2VkIHRpbWUsIHNvIHdlIHN1YnRyYWN0Ci0g
ICAgLy8gdGhlIGFuaW1hdGlvbiBzdGFydCB0aW1lIGJlZm9yZSBwYXNzaW5nIHRvIHRoZSBjdXJ2
ZS4KLSAgICByZXR1cm4gbV9jdXJ2ZS0+YXBwbHkodGltZSAtIG1fc3RhcnRUaW1lLCBtX3Rhcmdl
dCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1BsYXRmb3JtL2No
cm9taXVtL3NyYy9XZWJBY3RpdmVHZXN0dXJlQW5pbWF0aW9uLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1BsYXRmb3JtL2Nocm9taXVtL3NyYy9XZWJBY3RpdmVHZXN0dXJlQW5pbWF0aW9uLmgJKHJl
dmlzaW9uIDE0NzcxMCkKKysrIFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9zcmMvV2ViQWN0aXZl
R2VzdHVyZUFuaW1hdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYzICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICog
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaWZuZGVmIFdlYkFjdGl2ZUdlc3R1cmVBbmltYXRpb25faAotI2RlZmluZSBXZWJBY3RpdmVH
ZXN0dXJlQW5pbWF0aW9uX2gKLQotI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgotI2luY2x1
ZGUgPHd0Zi9Pd25QdHIuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgotCi1uYW1lc3Bh
Y2UgV2ViS2l0IHsKLQotY2xhc3MgV2ViR2VzdHVyZUN1cnZlOwotY2xhc3MgV2ViR2VzdHVyZUN1
cnZlVGFyZ2V0OwotCi0vLyBJbXBsZW1lbnRzIGEgZ2VzdHVyZSBhbmltYXRpb24gKGZsaW5nIHNj
cm9sbCwgZXRjLikgdXNpbmcgYSBjdXJ2ZSB3aXRoIGEgZ2VuZXJpYyBpbnRlcmZhY2UKLS8vIHRv
IGRlZmluZSB0aGUgYW5pbWF0aW9uIHBhcmFtZXRlcnMgYXMgYSBmdW5jdGlvbiBvZiB0aW1lLCBh
bmQgYXBwbGllcyB0aGUgYW5pbWF0aW9uCi0vLyB0byBhIHRhcmdldCwgYWdhaW4gdmlhIGEgZ2Vu
ZXJpYyBpbnRlcmZhY2UuIEl0IGlzIGFzc3VtZWQgdGhhdCBhbmltYXRlKCkgaXMgY2FsbGVkCi0v
LyBvbiBhIG1vcmUtb3ItbGVzcyByZWd1bGFyIGJhc2lzIGJ5IHRoZSBvd25lci4KLWNsYXNzIFdl
YkFjdGl2ZUdlc3R1cmVBbmltYXRpb24gewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdlYkFj
dGl2ZUdlc3R1cmVBbmltYXRpb24pOwotcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPFdl
YkFjdGl2ZUdlc3R1cmVBbmltYXRpb24+IGNyZWF0ZUF0QW5pbWF0aW9uU3RhcnQoUGFzc093blB0
cjxXZWJHZXN0dXJlQ3VydmU+LCBXZWJHZXN0dXJlQ3VydmVUYXJnZXQqKTsKLSAgICBzdGF0aWMg
UGFzc093blB0cjxXZWJBY3RpdmVHZXN0dXJlQW5pbWF0aW9uPiBjcmVhdGVXaXRoVGltZU9mZnNl
dChQYXNzT3duUHRyPFdlYkdlc3R1cmVDdXJ2ZT4sIFdlYkdlc3R1cmVDdXJ2ZVRhcmdldCosIGRv
dWJsZSBzdGFydFRpbWUpOwotICAgIH5XZWJBY3RpdmVHZXN0dXJlQW5pbWF0aW9uKCk7Ci0KLSAg
ICBib29sIGFuaW1hdGUoZG91YmxlIHRpbWUpOwotCi1wcml2YXRlOgotICAgIC8vIEFzc3VtZXMg
YSB2YWxpZCBXZWJHZXN0dXJlQ3VydmVUYXJnZXQgdGhhdCBvdXRsaXZlcyB0aGUgYW5pbWF0aW9u
LgotICAgIFdlYkFjdGl2ZUdlc3R1cmVBbmltYXRpb24oUGFzc093blB0cjxXZWJHZXN0dXJlQ3Vy
dmU+LCBXZWJHZXN0dXJlQ3VydmVUYXJnZXQqLCBkb3VibGUgc3RhcnRUaW1lLCBib29sIHdhaXRp
bmdGb3JGaXJzdFRpY2spOwotCi0gICAgZG91YmxlIG1fc3RhcnRUaW1lOwotICAgIGJvb2wgbV93
YWl0aW5nRm9yRmlyc3RUaWNrOwotICAgIE93blB0cjxXZWJHZXN0dXJlQ3VydmU+IG1fY3VydmU7
Ci0gICAgV2ViR2VzdHVyZUN1cnZlVGFyZ2V0KiBtX3RhcmdldDsKLX07Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYktpdAotCi0jZW5kaWYKSW5kZXg6IFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9zcmMv
V2ViQ1N0cmluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3Ny
Yy9XZWJDU3RyaW5nLmNwcAkocmV2aXNpb24gMTQ3NzEwKQorKysgU291cmNlL1BsYXRmb3JtL2No
cm9taXVtL3NyYy9XZWJDU3RyaW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSwxMjQgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQot
ICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
LSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSA8cHVibGljL1dlYkNTdHJpbmcuaD4KLQotI2lu
Y2x1ZGUgPHB1YmxpYy9XZWJTdHJpbmcuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+
Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1jbGFzcyBXZWJDU3RyaW5nUHJpdmF0ZSA6IHB1Ymxp
YyBXVEY6OkNTdHJpbmdCdWZmZXIgewotfTsKLQotaW50IFdlYkNTdHJpbmc6OmNvbXBhcmUoY29u
c3QgV2ViQ1N0cmluZyYgb3RoZXIpIGNvbnN0Ci17Ci0gICAgLy8gQSBudWxsIHN0cmluZyBpcyBh
bHdheXMgbGVzcyB0aGFuIGEgbm9uIG51bGwgb25lLgotICAgIGlmIChpc051bGwoKSAhPSBvdGhl
ci5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIGlzTnVsbCgpID8gLTEgOiAxOwotCi0gICAgaWYg
KGlzTnVsbCgpKQotICAgICAgICByZXR1cm4gMDsgLy8gQm90aCBXZWJTdHJpbmdzIGFyZSBudWxs
LgotCi0gICAgcmV0dXJuIHN0cmNtcChtX3ByaXZhdGUtPmRhdGEoKSwgb3RoZXIubV9wcml2YXRl
LT5kYXRhKCkpOwotfQotCi12b2lkIFdlYkNTdHJpbmc6OnJlc2V0KCkKLXsKLSAgICBpZiAobV9w
cml2YXRlKSB7Ci0gICAgICAgIG1fcHJpdmF0ZS0+ZGVyZWYoKTsKLSAgICAgICAgbV9wcml2YXRl
ID0gMDsKLSAgICB9Ci19Ci0KLXZvaWQgV2ViQ1N0cmluZzo6YXNzaWduKGNvbnN0IFdlYkNTdHJp
bmcmIG90aGVyKQotewotICAgIGFzc2lnbihjb25zdF9jYXN0PFdlYkNTdHJpbmdQcml2YXRlKj4o
b3RoZXIubV9wcml2YXRlKSk7Ci19Ci0KLXZvaWQgV2ViQ1N0cmluZzo6YXNzaWduKGNvbnN0IGNo
YXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpCi17Ci0gICAgY2hhciogbmV3RGF0YTsKLSAgICBSZWZQ
dHI8V1RGOjpDU3RyaW5nQnVmZmVyPiBidWZmZXIgPQotICAgICAgICBXVEY6OkNTdHJpbmc6Om5l
d1VuaW5pdGlhbGl6ZWQobGVuZ3RoLCBuZXdEYXRhKS5idWZmZXIoKTsKLSAgICBtZW1jcHkobmV3
RGF0YSwgZGF0YSwgbGVuZ3RoKTsKLSAgICBhc3NpZ24oc3RhdGljX2Nhc3Q8V2ViQ1N0cmluZ1By
aXZhdGUqPihidWZmZXIuZ2V0KCkpKTsKLX0KLQotc2l6ZV90IFdlYkNTdHJpbmc6Omxlbmd0aCgp
IGNvbnN0Ci17Ci0gICAgaWYgKCFtX3ByaXZhdGUpCi0gICAgICAgIHJldHVybiAwOwotICAgIHJl
dHVybiBjb25zdF9jYXN0PFdlYkNTdHJpbmdQcml2YXRlKj4obV9wcml2YXRlKS0+bGVuZ3RoKCk7
Ci19Ci0KLWNvbnN0IGNoYXIqIFdlYkNTdHJpbmc6OmRhdGEoKSBjb25zdAotewotICAgIGlmICgh
bV9wcml2YXRlKQotICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gY29uc3RfY2FzdDxXZWJD
U3RyaW5nUHJpdmF0ZSo+KG1fcHJpdmF0ZSktPmRhdGEoKTsKLX0KLQotV2ViU3RyaW5nIFdlYkNT
dHJpbmc6OnV0ZjE2KCkgY29uc3QKLXsKLSAgICByZXR1cm4gV2ViU3RyaW5nOjpmcm9tVVRGOChk
YXRhKCksIGxlbmd0aCgpKTsKLX0KLQotV2ViQ1N0cmluZzo6V2ViQ1N0cmluZyhjb25zdCBXVEY6
OkNTdHJpbmcmIHMpCi0gICAgOiBtX3ByaXZhdGUoc3RhdGljX2Nhc3Q8V2ViQ1N0cmluZ1ByaXZh
dGUqPihzLmJ1ZmZlcigpKSkKLXsKLSAgICBpZiAobV9wcml2YXRlKQotICAgICAgICBtX3ByaXZh
dGUtPnJlZigpOwotfQotCi1XZWJDU3RyaW5nJiBXZWJDU3RyaW5nOjpvcGVyYXRvcj0oY29uc3Qg
V1RGOjpDU3RyaW5nJiBzKQotewotICAgIGFzc2lnbihzdGF0aWNfY2FzdDxXZWJDU3RyaW5nUHJp
dmF0ZSo+KHMuYnVmZmVyKCkpKTsKLSAgICByZXR1cm4gKnRoaXM7Ci19Ci0KLVdlYkNTdHJpbmc6
Om9wZXJhdG9yIFdURjo6Q1N0cmluZygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fcHJpdmF0ZTsK
LX0KLQotdm9pZCBXZWJDU3RyaW5nOjphc3NpZ24oV2ViQ1N0cmluZ1ByaXZhdGUqIHApCi17Ci0g
ICAgLy8gVGFrZSBjYXJlIHRvIGhhbmRsZSB0aGUgY2FzZSB3aGVyZSBtX3ByaXZhdGUgPT0gcAot
ICAgIGlmIChwKQotICAgICAgICBwLT5yZWYoKTsKLSAgICBpZiAobV9wcml2YXRlKQotICAgICAg
ICBtX3ByaXZhdGUtPmRlcmVmKCk7Ci0gICAgbV9wcml2YXRlID0gcDsKLX0KLQotfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vc3JjL1dlYkZpbHRl
ck9wZXJhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3Ny
Yy9XZWJGaWx0ZXJPcGVyYXRpb24uY3BwCShyZXZpc2lvbiAxNDc3MTApCisrKyBTb3VyY2UvUGxh
dGZvcm0vY2hyb21pdW0vc3JjL1dlYkZpbHRlck9wZXJhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEsNTggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQg
QU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICog
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlIDxw
dWJsaWMvV2ViRmlsdGVyT3BlcmF0aW9uLmg+Ci0KLSNpbmNsdWRlIDxzdHJpbmcuaD4KLQotbmFt
ZXNwYWNlIFdlYktpdCB7Ci0KLWJvb2wgV2ViRmlsdGVyT3BlcmF0aW9uOjplcXVhbHMoY29uc3Qg
V2ViRmlsdGVyT3BlcmF0aW9uJiBvdGhlcikgY29uc3QKLXsKLSAgICBpZiAobV90eXBlICE9IG90
aGVyLm1fdHlwZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChtX3R5cGUgPT0gRmls
dGVyVHlwZUNvbG9yTWF0cml4KQotICAgICAgICByZXR1cm4gIW1lbWNtcChtX21hdHJpeCwgb3Ro
ZXIubV9tYXRyaXgsIHNpemVvZihtX21hdHJpeCkpOwotICAgIGlmIChtX3R5cGUgPT0gRmlsdGVy
VHlwZURyb3BTaGFkb3cpIHsKLSAgICAgICAgcmV0dXJuIG1fYW1vdW50ID09IG90aGVyLm1fYW1v
dW50Ci0gICAgICAgICAgICAmJiBtX2Ryb3BTaGFkb3dPZmZzZXQgPT0gb3RoZXIubV9kcm9wU2hh
ZG93T2Zmc2V0Ci0gICAgICAgICAgICAmJiBtX2Ryb3BTaGFkb3dDb2xvciA9PSBvdGhlci5tX2Ry
b3BTaGFkb3dDb2xvcjsKLSAgICB9IGVsc2UKLSAgICAgICAgcmV0dXJuIG1fYW1vdW50ID09IG90
aGVyLm1fYW1vdW50OwotfQotCi1XZWJGaWx0ZXJPcGVyYXRpb246OldlYkZpbHRlck9wZXJhdGlv
bihGaWx0ZXJUeXBlIHR5cGUsIFNrU2NhbGFyIG1hdHJpeFsyMF0pCi0gICAgOiBtX3R5cGUodHlw
ZSkKLSAgICAsIG1fYW1vdW50KDApCi0gICAgLCBtX2Ryb3BTaGFkb3dPZmZzZXQoMCwgMCkKLSAg
ICAsIG1fZHJvcFNoYWRvd0NvbG9yKDApCi0gICAgLCBtX3pvb21JbnNldCgwKQotewotICAgIFdF
QktJVF9BU1NFUlQobV90eXBlID09IEZpbHRlclR5cGVDb2xvck1hdHJpeCk7Ci0gICAgbWVtY3B5
KG1fbWF0cml4LCBtYXRyaXgsIHNpemVvZihtX21hdHJpeCkpOwotfQotCi19IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9zcmMvV2ViRmlsdGVyT3Bl
cmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3NyYy9X
ZWJGaWx0ZXJPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMTQ3NzEwKQorKysgU291cmNlL1BsYXRm
b3JtL2Nocm9taXVtL3NyYy9XZWJGaWx0ZXJPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMSwxNjMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQg
QU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICog
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2luY2x1ZGUg
PGNtYXRoPgotI2luY2x1ZGUgPHB1YmxpYy9XZWJGaWx0ZXJPcGVyYXRpb24uaD4KLSNpbmNsdWRl
IDxwdWJsaWMvV2ViRmlsdGVyT3BlcmF0aW9ucy5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
LQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIFdlYkZpbHRlck9wZXJhdGlvbnNQcml2YXRl
IHsKLXB1YmxpYzoKLSAgICBWZWN0b3I8V2ViRmlsdGVyT3BlcmF0aW9uPiBvcGVyYXRpb25zOwot
fTsKLQotCi12b2lkIFdlYkZpbHRlck9wZXJhdGlvbnM6OmluaXRpYWxpemUoKQotewotICAgIG1f
cHJpdmF0ZS5yZXNldChuZXcgV2ViRmlsdGVyT3BlcmF0aW9uc1ByaXZhdGUpOwotfQotCi12b2lk
IFdlYkZpbHRlck9wZXJhdGlvbnM6OmRlc3Ryb3koKQotewotICAgIG1fcHJpdmF0ZS5yZXNldCgw
KTsKLX0KLQotdm9pZCBXZWJGaWx0ZXJPcGVyYXRpb25zOjphc3NpZ24oY29uc3QgV2ViRmlsdGVy
T3BlcmF0aW9ucyYgb3RoZXIpCi17Ci0gICAgbV9wcml2YXRlLT5vcGVyYXRpb25zID0gb3RoZXIu
bV9wcml2YXRlLT5vcGVyYXRpb25zOwotfQotCi1ib29sIFdlYkZpbHRlck9wZXJhdGlvbnM6OmVx
dWFscyhjb25zdCBXZWJGaWx0ZXJPcGVyYXRpb25zJiBvdGhlcikgY29uc3QKLXsKLSAgICBpZiAo
b3RoZXIuc2l6ZSgpICE9IHNpemUoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbV9wcml2YXRlLT5vcGVyYXRpb25zLnNpemUoKTsgKytpKSB7Ci0g
ICAgICAgIGlmIChvdGhlci5hdChpKSAhPSBhdChpKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXZvaWQgV2ViRmlsdGVyT3BlcmF0aW9u
czo6YXBwZW5kKGNvbnN0IFdlYkZpbHRlck9wZXJhdGlvbiYgZmlsdGVyKQotewotICAgIG1fcHJp
dmF0ZS0+b3BlcmF0aW9ucy5hcHBlbmQoZmlsdGVyKTsKLX0KLQotdm9pZCBXZWJGaWx0ZXJPcGVy
YXRpb25zOjpjbGVhcigpCi17Ci0gICAgbV9wcml2YXRlLT5vcGVyYXRpb25zLmNsZWFyKCk7Ci19
Ci0KLWJvb2wgV2ViRmlsdGVyT3BlcmF0aW9uczo6aXNFbXB0eSgpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIG1fcHJpdmF0ZS0+b3BlcmF0aW9ucy5pc0VtcHR5KCk7Ci19Ci0KLXN0YXRpYyBpbnQgc3By
ZWFkRm9yU3RkRGV2aWF0aW9uKGZsb2F0IHN0ZERldmlhdGlvbikKLXsKLSAgICAvLyBodHRwczov
L2R2Y3MudzMub3JnL2hnL0ZYVEYvcmF3LWZpbGUvdGlwL2ZpbHRlcnMvaW5kZXguaHRtbCNmZUdh
dXNzaWFuQmx1ckVsZW1lbnQgcHJvdmlkZXMgdGhpcyBhcHByb3hpbWF0aW9uIGZvcgotICAgIC8v
IGV2YWx1YXRpbmcgYSBnYXVzc2lhbiBibHVyIGJ5IGEgdHJpcGxlIGJveCBmaWx0ZXIuCi0gICAg
ZmxvYXQgZCA9IGZsb29yZihzdGREZXZpYXRpb24gKiAzICogc3FydCg4LmYgKiBhdGFuKDEuZikp
IC8gNCArIDAuNSk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oY2VpbGYoZCAqIDMgLyAy
KSk7Ci19Ci0KLXZvaWQgV2ViRmlsdGVyT3BlcmF0aW9uczo6Z2V0T3V0c2V0cyhpbnQmIHRvcCwg
aW50JiByaWdodCwgaW50JiBib3R0b20sIGludCYgbGVmdCkgY29uc3QKLXsKLSAgICB0b3AgPSBy
aWdodCA9IGJvdHRvbSA9IGxlZnQgPSAwOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9w
cml2YXRlLT5vcGVyYXRpb25zLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGNvbnN0IFdlYkZpbHRl
ck9wZXJhdGlvbiBvcCA9IG1fcHJpdmF0ZS0+b3BlcmF0aW9uc1tpXTsKLSAgICAgICAgaWYgKG9w
LnR5cGUoKSA9PSBXZWJGaWx0ZXJPcGVyYXRpb246OkZpbHRlclR5cGVCbHVyIHx8IG9wLnR5cGUo
KSA9PSBXZWJGaWx0ZXJPcGVyYXRpb246OkZpbHRlclR5cGVEcm9wU2hhZG93KSB7Ci0gICAgICAg
ICAgICBpbnQgc3ByZWFkID0gc3ByZWFkRm9yU3RkRGV2aWF0aW9uKG9wLmFtb3VudCgpKTsKLSAg
ICAgICAgICAgIGlmIChvcC50eXBlKCkgPT0gV2ViRmlsdGVyT3BlcmF0aW9uOjpGaWx0ZXJUeXBl
Qmx1cikgewotICAgICAgICAgICAgICAgIHRvcCArPSBzcHJlYWQ7Ci0gICAgICAgICAgICAgICAg
cmlnaHQgKz0gc3ByZWFkOwotICAgICAgICAgICAgICAgIGJvdHRvbSArPSBzcHJlYWQ7Ci0gICAg
ICAgICAgICAgICAgbGVmdCArPSBzcHJlYWQ7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgICAgIHRvcCArPSBzcHJlYWQgLSBvcC5kcm9wU2hhZG93T2Zmc2V0KCkueTsKLSAgICAg
ICAgICAgICAgICByaWdodCArPSBzcHJlYWQgKyBvcC5kcm9wU2hhZG93T2Zmc2V0KCkueDsKLSAg
ICAgICAgICAgICAgICBib3R0b20gKz0gc3ByZWFkICsgb3AuZHJvcFNoYWRvd09mZnNldCgpLnk7
Ci0gICAgICAgICAgICAgICAgbGVmdCArPSBzcHJlYWQgLSBvcC5kcm9wU2hhZG93T2Zmc2V0KCku
eDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLX0KLQotYm9vbCBXZWJGaWx0ZXJP
cGVyYXRpb25zOjpoYXNGaWx0ZXJUaGF0TW92ZXNQaXhlbHMoKSBjb25zdAotewotICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbV9wcml2YXRlLT5vcGVyYXRpb25zLnNpemUoKTsgKytpKSB7Ci0g
ICAgICAgIGNvbnN0IFdlYkZpbHRlck9wZXJhdGlvbiBvcCA9IG1fcHJpdmF0ZS0+b3BlcmF0aW9u
c1tpXTsKLSAgICAgICAgc3dpdGNoIChvcC50eXBlKCkpIHsKLSAgICAgICAgY2FzZSBXZWJGaWx0
ZXJPcGVyYXRpb246OkZpbHRlclR5cGVCbHVyOgotICAgICAgICBjYXNlIFdlYkZpbHRlck9wZXJh
dGlvbjo6RmlsdGVyVHlwZURyb3BTaGFkb3c6Ci0gICAgICAgIGNhc2UgV2ViRmlsdGVyT3BlcmF0
aW9uOjpGaWx0ZXJUeXBlWm9vbToKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICBk
ZWZhdWx0OgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJu
IGZhbHNlOwotfQotCi1ib29sIFdlYkZpbHRlck9wZXJhdGlvbnM6Omhhc0ZpbHRlclRoYXRBZmZl
Y3RzT3BhY2l0eSgpIGNvbnN0Ci17Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3ByaXZh
dGUtPm9wZXJhdGlvbnMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgY29uc3QgV2ViRmlsdGVyT3Bl
cmF0aW9uIG9wID0gbV9wcml2YXRlLT5vcGVyYXRpb25zW2ldOwotICAgICAgICBzd2l0Y2ggKG9w
LnR5cGUoKSkgewotICAgICAgICBjYXNlIFdlYkZpbHRlck9wZXJhdGlvbjo6RmlsdGVyVHlwZU9w
YWNpdHk6Ci0gICAgICAgIGNhc2UgV2ViRmlsdGVyT3BlcmF0aW9uOjpGaWx0ZXJUeXBlQmx1cjoK
LSAgICAgICAgY2FzZSBXZWJGaWx0ZXJPcGVyYXRpb246OkZpbHRlclR5cGVEcm9wU2hhZG93Ogot
ICAgICAgICBjYXNlIFdlYkZpbHRlck9wZXJhdGlvbjo6RmlsdGVyVHlwZVpvb206Ci0gICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgY2FzZSBXZWJGaWx0ZXJPcGVyYXRpb246OkZpbHRl
clR5cGVDb2xvck1hdHJpeDogewotICAgICAgICAgICAgY29uc3QgU2tTY2FsYXIqIG1hdHJpeCA9
IG9wLm1hdHJpeCgpOwotICAgICAgICAgICAgcmV0dXJuIG1hdHJpeFsxNV0KLSAgICAgICAgICAg
ICAgICB8fCBtYXRyaXhbMTZdCi0gICAgICAgICAgICAgICAgfHwgbWF0cml4WzE3XQotICAgICAg
ICAgICAgICAgIHx8IG1hdHJpeFsxOF0gIT0gMQotICAgICAgICAgICAgICAgIHx8IG1hdHJpeFsx
OV07Ci0gICAgICAgIH0KLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICB9Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotc2l6ZV90IFdlYkZpbHRlck9w
ZXJhdGlvbnM6OnNpemUoKSBjb25zdAotewotICAgIHJldHVybiBtX3ByaXZhdGUtPm9wZXJhdGlv
bnMuc2l6ZSgpOwotfQotCi1XZWJGaWx0ZXJPcGVyYXRpb24gV2ViRmlsdGVyT3BlcmF0aW9uczo6
YXQoc2l6ZV90IGkpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fcHJpdmF0ZS0+b3BlcmF0aW9ucy5h
dChpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvUGxhdGZvcm0v
Y2hyb21pdW0vc3JjL1dlYkZsb2F0UXVhZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1BsYXRm
b3JtL2Nocm9taXVtL3NyYy9XZWJGbG9hdFF1YWQuY3BwCShyZXZpc2lvbiAxNDc3MTApCisrKyBT
b3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vc3JjL1dlYkZsb2F0UXVhZC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNTEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0g
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlIDxwdWJsaWMv
V2ViRmxvYXRRdWFkLmg+Ci0KLSNpbmNsdWRlIDxhbGdvcml0aG0+Ci0jaW5jbHVkZSA8bWF0aC5o
PgotCi11c2luZyBuYW1lc3BhY2Ugc3RkOwotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotV2ViUmVj
dCBXZWJGbG9hdFF1YWQ6OmVuY2xvc2luZ1JlY3QoKSBjb25zdAotewotICAgIGludCBsZWZ0ID0g
c3RhdGljX2Nhc3Q8aW50PihmbG9vcmYobWluKG1pbihtaW4ocFswXS54LCBwWzFdLngpLCBwWzJd
LngpLCBwWzNdLngpKSk7Ci0gICAgaW50IHRvcCA9IHN0YXRpY19jYXN0PGludD4oZmxvb3JmKG1p
bihtaW4obWluKHBbMF0ueSwgcFsxXS55KSwgcFsyXS55KSwgcFszXS55KSkpOwotICAgIGludCBy
aWdodCA9IHN0YXRpY19jYXN0PGludD4oY2VpbGYobWF4KG1heChtYXgocFswXS54LCBwWzFdLngp
LCBwWzJdLngpLCBwWzNdLngpKSk7Ci0gICAgaW50IGJvdHRvbSA9IHN0YXRpY19jYXN0PGludD4o
Y2VpbGYobWF4KG1heChtYXgocFswXS55LCBwWzFdLnkpLCBwWzJdLnkpLCBwWzNdLnkpKSk7Ci0K
LSAgICByZXR1cm4gV2ViUmVjdChsZWZ0LCB0b3AsIHJpZ2h0IC0gbGVmdCwgYm90dG9tIC0gdG9w
KTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvUGxhdGZvcm0vY2hy
b21pdW0vc3JjL1dlYlByZXJlbmRlcmluZ1N1cHBvcnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9QbGF0Zm9ybS9jaHJvbWl1bS9zcmMvV2ViUHJlcmVuZGVyaW5nU3VwcG9ydC5jcHAJKHJldmlz
aW9uIDE0NzcxMCkKKysrIFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9zcmMvV2ViUHJlcmVuZGVy
aW5nU3VwcG9ydC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNTIgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmli
dXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
Ci0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlIDxw
dWJsaWMvV2ViUHJlcmVuZGVyaW5nU3VwcG9ydC5oPgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQot
V2ViUHJlcmVuZGVyaW5nU3VwcG9ydCogV2ViUHJlcmVuZGVyaW5nU3VwcG9ydDo6c19wbGF0Zm9y
bSA9IDA7Ci0KLXZvaWQgV2ViUHJlcmVuZGVyaW5nU3VwcG9ydDo6aW5pdGlhbGl6ZShXZWJQcmVy
ZW5kZXJpbmdTdXBwb3J0KiBwbGF0Zm9ybSkKLXsKLSAgICBzX3BsYXRmb3JtID0gcGxhdGZvcm07
Ci19Ci0KLXZvaWQgV2ViUHJlcmVuZGVyaW5nU3VwcG9ydDo6c2h1dGRvd24oKQotewotICAgIHNf
cGxhdGZvcm0gPSAwOwotfQotCi1XZWJQcmVyZW5kZXJpbmdTdXBwb3J0KiBXZWJQcmVyZW5kZXJp
bmdTdXBwb3J0OjpjdXJyZW50KCkKLXsKLSAgICByZXR1cm4gc19wbGF0Zm9ybTsKLX0KLQotfQpJ
bmRleDogU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3NyYy9XZWJTdHJpbmcuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9zcmMvV2ViU3RyaW5nLmNwcAkocmV2aXNp
b24gMTQ3NzEwKQorKysgU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3NyYy9XZWJTdHJpbmcuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDEzOCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
LSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
LSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2lu
Y2x1ZGUgPHB1YmxpYy9XZWJTdHJpbmcuaD4KLQotI2luY2x1ZGUgPHB1YmxpYy9XZWJDU3RyaW5n
Lmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+Ci0jaW5jbHVkZSA8d3RmL3Rl
eHQvQ1N0cmluZy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3Bh
Y2UgV2ViS2l0IHsKLQotY2xhc3MgV2ViU3RyaW5nUHJpdmF0ZSA6IHB1YmxpYyBXVEY6OlN0cmlu
Z0ltcGwgewotfTsKLQotdm9pZCBXZWJTdHJpbmc6OnJlc2V0KCkKLXsKLSAgICBpZiAobV9wcml2
YXRlKSB7Ci0gICAgICAgIG1fcHJpdmF0ZS0+ZGVyZWYoKTsKLSAgICAgICAgbV9wcml2YXRlID0g
MDsKLSAgICB9Ci19Ci0KLXZvaWQgV2ViU3RyaW5nOjphc3NpZ24oY29uc3QgV2ViU3RyaW5nJiBv
dGhlcikKLXsKLSAgICBhc3NpZ24oY29uc3RfY2FzdDxXZWJTdHJpbmdQcml2YXRlKj4ob3RoZXIu
bV9wcml2YXRlKSk7Ci19Ci0KLXZvaWQgV2ViU3RyaW5nOjphc3NpZ24oY29uc3QgV2ViVUNoYXIq
IGRhdGEsIHNpemVfdCBsZW5ndGgpCi17Ci0gICAgYXNzaWduKHN0YXRpY19jYXN0PFdlYlN0cmlu
Z1ByaXZhdGUqPigKLSAgICAgICAgV1RGOjpTdHJpbmdJbXBsOjpjcmVhdGUoZGF0YSwgbGVuZ3Ro
KS5nZXQoKSkpOwotfQotCi1zaXplX3QgV2ViU3RyaW5nOjpsZW5ndGgoKSBjb25zdAotewotICAg
IHJldHVybiBtX3ByaXZhdGUgPyBjb25zdF9jYXN0PFdlYlN0cmluZ1ByaXZhdGUqPihtX3ByaXZh
dGUpLT5sZW5ndGgoKSA6IDA7Ci19Ci0KLWNvbnN0IFdlYlVDaGFyKiBXZWJTdHJpbmc6OmRhdGEo
KSBjb25zdAotewotICAgIHJldHVybiBtX3ByaXZhdGUgPyBjb25zdF9jYXN0PFdlYlN0cmluZ1By
aXZhdGUqPihtX3ByaXZhdGUpLT5jaGFyYWN0ZXJzKCkgOiAwOwotfQotCi1XZWJDU3RyaW5nIFdl
YlN0cmluZzo6dXRmOCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFdURjo6U3RyaW5nKG1fcHJpdmF0
ZSkudXRmOCgpOwotfQotCi1XZWJTdHJpbmcgV2ViU3RyaW5nOjpmcm9tVVRGOChjb25zdCBjaGFy
KiBkYXRhLCBzaXplX3QgbGVuZ3RoKQotewotICAgIHJldHVybiBXVEY6OlN0cmluZzo6ZnJvbVVU
RjgoZGF0YSwgbGVuZ3RoKTsKLX0KLQotV2ViU3RyaW5nIFdlYlN0cmluZzo6ZnJvbVVURjgoY29u
c3QgY2hhciogZGF0YSkKLXsKLSAgICByZXR1cm4gV1RGOjpTdHJpbmc6OmZyb21VVEY4KGRhdGEp
OwotfQotCi1ib29sIFdlYlN0cmluZzo6ZXF1YWxzKGNvbnN0IFdlYlN0cmluZyYgcykgY29uc3QK
LXsKLSAgICByZXR1cm4gZXF1YWwobV9wcml2YXRlLCBzLm1fcHJpdmF0ZSk7Ci19Ci0KLVdlYlN0
cmluZzo6V2ViU3RyaW5nKGNvbnN0IFdURjo6U3RyaW5nJiBzKQotICAgIDogbV9wcml2YXRlKHN0
YXRpY19jYXN0PFdlYlN0cmluZ1ByaXZhdGUqPihzLmltcGwoKSkpCi17Ci0gICAgaWYgKG1fcHJp
dmF0ZSkKLSAgICAgICAgbV9wcml2YXRlLT5yZWYoKTsKLX0KLQotV2ViU3RyaW5nJiBXZWJTdHJp
bmc6Om9wZXJhdG9yPShjb25zdCBXVEY6OlN0cmluZyYgcykKLXsKLSAgICBhc3NpZ24oc3RhdGlj
X2Nhc3Q8V2ViU3RyaW5nUHJpdmF0ZSo+KHMuaW1wbCgpKSk7Ci0gICAgcmV0dXJuICp0aGlzOwot
fQotCi1XZWJTdHJpbmc6Om9wZXJhdG9yIFdURjo6U3RyaW5nKCkgY29uc3QKLXsKLSAgICByZXR1
cm4gbV9wcml2YXRlOwotfQotCi1XZWJTdHJpbmc6OldlYlN0cmluZyhjb25zdCBXVEY6OkF0b21p
Y1N0cmluZyYgcykKLSAgICA6IG1fcHJpdmF0ZSgwKQotewotICAgIGFzc2lnbihzLnN0cmluZygp
KTsKLX0KLQotV2ViU3RyaW5nJiBXZWJTdHJpbmc6Om9wZXJhdG9yPShjb25zdCBXVEY6OkF0b21p
Y1N0cmluZyYgcykKLXsKLSAgICBhc3NpZ24ocy5zdHJpbmcoKSk7Ci0gICAgcmV0dXJuICp0aGlz
OwotfQotCi1XZWJTdHJpbmc6Om9wZXJhdG9yIFdURjo6QXRvbWljU3RyaW5nKCkgY29uc3QKLXsK
LSAgICByZXR1cm4gV1RGOjpBdG9taWNTdHJpbmcoc3RhdGljX2Nhc3Q8V1RGOjpTdHJpbmdJbXBs
ICo+KG1fcHJpdmF0ZSkpOwotfQotCi12b2lkIFdlYlN0cmluZzo6YXNzaWduKFdlYlN0cmluZ1By
aXZhdGUqIHApCi17Ci0gICAgLy8gVGFrZSBjYXJlIHRvIGhhbmRsZSB0aGUgY2FzZSB3aGVyZSBt
X3ByaXZhdGUgPT0gcAotICAgIGlmIChwKQotICAgICAgICBwLT5yZWYoKTsKLSAgICBpZiAobV9w
cml2YXRlKQotICAgICAgICBtX3ByaXZhdGUtPmRlcmVmKCk7Ci0gICAgbV9wcml2YXRlID0gcDsK
LX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cg==
</data>
<flag name="review"
          id="218669"
          type_id="1"
          status="+"
          setter="benjamin"
    />
          </attachment>
      

    </bug>

</bugzilla>