<?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>155121</bug_id>
          
          <creation_ts>2016-03-07 10:40:15 -0800</creation_ts>
          <short_desc>Web Inspector: rename generated *EnumConversionHelpers.h to *TypeConversions.h</short_desc>
          <delta_ts>2016-03-07 13:22:37 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>155103</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Blaze Burg">bburg</reporter>
          <assigned_to name="Blaze Burg">bburg</assigned_to>
          <cc>bburg</cc>
    
    <cc>commit-queue</cc>
    
    <cc>graouts</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mattbaker</cc>
    
    <cc>msaboff</cc>
    
    <cc>nvasilyev</cc>
    
    <cc>saam</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1171654</commentid>
    <comment_count>0</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2016-03-07 10:40:15 -0800</bug_when>
    <thetext>In 155103, we&apos;ll add a *TypeConversions.mm file, so change the enum type conversions to match this naming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171659</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2016-03-07 10:41:38 -0800</bug_when>
    <thetext>&lt;rdar://problem/25010391&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171663</commentid>
    <comment_count>2</comment_count>
      <attachid>273195</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2016-03-07 10:44:52 -0800</bug_when>
    <thetext>Created attachment 273195
Proposed Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171664</commentid>
    <comment_count>3</comment_count>
      <attachid>273195</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2016-03-07 10:46:08 -0800</bug_when>
    <thetext>Comment on attachment 273195
Proposed Fix

Needs to coordinate with internal change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171665</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-03-07 10:47:17 -0800</bug_when>
    <thetext>This patch modifies the inspector protocol generator. Please ensure that you have rebaselined any generator test results (i.e., by running `Tools/Scripts/run-inspector-generator-tests --reset-results`)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171666</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-03-07 10:47:25 -0800</bug_when>
    <thetext>Attachment 273195 did not pass style-queue:


ERROR: Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_frontend_dispatcher_implementation.py:52:  [ObjCFrontendDispatcherImplementationGenerator.generate_output] Instance of &apos;ObjCFrontendDispatcherImplementationGenerator&apos; has no &apos;protocol_name&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_protocol_type_conversions_header.py:58:  whitespace before &apos;]&apos;  [pep8/E202] [5]
ERROR: Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_protocol_type_conversions_header.py:51:  [ObjCProtocolTypeConversionsHeaderGenerator.output_filename] Instance of &apos;ObjCProtocolTypeConversionsHeaderGenerator&apos; has no &apos;protocol_name&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_protocol_type_conversions_header.py:54:  [ObjCProtocolTypeConversionsHeaderGenerator.domains_to_generate] Instance of &apos;ObjCProtocolTypeConversionsHeaderGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_protocol_type_conversions_header.py:67:  [ObjCProtocolTypeConversionsHeaderGenerator.generate_output] Instance of &apos;ObjCProtocolTypeConversionsHeaderGenerator&apos; has no &apos;generate_license&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_protocol_type_conversions_header.py:109:  [ObjCProtocolTypeConversionsHeaderGenerator._generate_anonymous_enum_conversion_for_declaration] Instance of &apos;ObjCProtocolTypeConversionsHeaderGenerator&apos; has no &apos;objc_enum_name_for_anonymous_enum_declaration&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_protocol_type_conversions_header.py:117:  [ObjCProtocolTypeConversionsHeaderGenerator._generate_anonymous_enum_conversion_for_member] Instance of &apos;ObjCProtocolTypeConversionsHeaderGenerator&apos; has no &apos;objc_enum_name_for_anonymous_enum_member&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_protocol_type_conversions_header.py:125:  [ObjCProtocolTypeConversionsHeaderGenerator._generate_anonymous_enum_conversion_for_parameter] Instance of &apos;ObjCProtocolTypeConversionsHeaderGenerator&apos; has no &apos;objc_enum_name_for_anonymous_enum_parameter&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_protocol_types_implementation.py:58:  [ObjCProtocolTypesImplementationGenerator.generate_output] Instance of &apos;ObjCProtocolTypesImplementationGenerator&apos; has no &apos;protocol_name&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_backend_dispatcher_implementation.py:55:  [ObjCConfigurationImplementationGenerator.generate_output] Instance of &apos;ObjCConfigurationImplementationGenerator&apos; has no &apos;protocol_name&apos; member  [pylint/E1101] [5]
Total errors found: 10 in 22 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171716</commentid>
    <comment_count>6</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2016-03-07 13:22:37 -0800</bug_when>
    <thetext>Committed r197701: &lt;http://trac.webkit.org/changeset/197701&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273195</attachid>
            <date>2016-03-07 10:44:52 -0800</date>
            <delta_ts>2016-03-07 10:54:14 -0800</delta_ts>
            <desc>Proposed Fix</desc>
            <filename>bug-155121-20160307104438.patch</filename>
            <type>text/plain</type>
            <size>158645</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk3NjgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
YjA0ZjY4YTkxZTU0YTk2MGFmNWFmMTk2N2EzZDI2N2Q1YjJhMWU5Li5iZTZkMmEyNjc5OGY4YmJk
Nzk5ZTI4YmJmOTMxOTk1YWUwNmVjM2JhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MiBAQAorMjAxNi0wMy0wNyAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKwor
ICAgICAgICBXZWIgSW5zcGVjdG9yOiByZW5hbWUgZ2VuZXJhdGVkICpFbnVtQ29udmVyc2lvbkhl
bHBlcnMuaCB0byAqVHlwZUNvbnZlcnNpb25zLmgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTEyMQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjUw
MTAzOTE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
U3BsaXQgb3V0IHRoaXMgcmVuYW1pbmcgZnJvbSB0aGUgd29yayB0byBnZW5lcmF0ZSBmYWN0b3J5
IG1ldGhvZCBzdHVicyBmb3IgdHlwZXMuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL2NvZGVn
ZW4vX19pbml0X18ucHk6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5l
cmF0ZV9vYmpjX2JhY2tlbmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5weToKKyAgICAgICAg
KE9iakNDb25maWd1cmF0aW9uSW1wbGVtZW50YXRpb25HZW5lcmF0b3IuZ2VuZXJhdGVfb3V0cHV0
KToKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX29iamNfZnJv
bnRlbmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5weToKKyAgICAgICAgKE9iakNGcm9udGVu
ZERpc3BhdGNoZXJJbXBsZW1lbnRhdGlvbkdlbmVyYXRvci5nZW5lcmF0ZV9vdXRwdXQpOgorICAg
ICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfb2JqY19wcm90b2NvbF90
eXBlX2NvbnZlcnNpb25zX2hlYWRlci5weTogUmVuYW1lZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX29iamNfY29udmVyc2lvbl9o
ZWxwZXJzLnB5LgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVf
b2JqY19wcm90b2NvbF90eXBlc19pbXBsZW1lbnRhdGlvbi5weToKKyAgICAgICAgKE9iakNQcm90
b2NvbFR5cGVzSW1wbGVtZW50YXRpb25HZW5lcmF0b3IuZ2VuZXJhdGVfb3V0cHV0KToKKyAgICAg
ICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL29iamNfZ2VuZXJhdG9yX3RlbXBsYXRlcy5w
eToKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy9nZW5lcmF0ZS1pbnNwZWN0b3ItcHJvdG9j
b2wtYmluZGluZ3MucHk6CisgICAgICAgIChnZW5lcmF0ZV9mcm9tX3NwZWNpZmljYXRpb24pOgor
CisgICAgICAgIFJlYmFzZWxpbmUgdGVzdHMgYWZ0ZXIgY2hhbmdpbmcgZ2VuZXJhdG9yIG9yZGVy
LgorCisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvY29tbWFuZHMt
d2l0aC1hc3luYy1hdHRyaWJ1dGUuanNvbi1yZXN1bHQ6CisgICAgICAgICogaW5zcGVjdG9yL3Nj
cmlwdHMvdGVzdHMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1vcHRpb25hbC1jYWxsLXJldHVybi1w
YXJhbWV0ZXJzLmpzb24tcmVzdWx0OgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL3Rlc3Rz
L2V4cGVjdGVkL2RvbWFpbnMtd2l0aC12YXJ5aW5nLWNvbW1hbmQtc2l6ZXMuanNvbi1yZXN1bHQ6
CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZW51bS12YWx1ZXMu
anNvbi1yZXN1bHQ6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQv
ZXZlbnRzLXdpdGgtb3B0aW9uYWwtcGFyYW1ldGVycy5qc29uLXJlc3VsdDoKKyAgICAgICAgKiBp
bnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9nZW5lcmF0ZS1kb21haW5zLXdpdGgtZmVh
dHVyZS1ndWFyZHMuanNvbi1yZXN1bHQ6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVz
dHMvZXhwZWN0ZWQvc2FtZS10eXBlLWlkLWRpZmZlcmVudC1kb21haW4uanNvbi1yZXN1bHQ6Cisg
ICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvc2hhZG93ZWQtb3B0aW9u
YWwtdHlwZS1zZXR0ZXJzLmpzb24tcmVzdWx0OgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRz
L3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tYWxpYXNlZC1wcmltaXRpdmUtdHlwZS5q
c29uLXJlc3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90
eXBlLWRlY2xhcmF0aW9uLWFycmF5LXR5cGUuanNvbi1yZXN1bHQ6CisgICAgICAgICogaW5zcGVj
dG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1lbnVtLXR5cGUuanNv
bi1yZXN1bHQ6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlw
ZS1kZWNsYXJhdGlvbi1vYmplY3QtdHlwZS5qc29uLXJlc3VsdDoKKyAgICAgICAgKiBpbnNwZWN0
b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLXJlcXVpcmluZy1ydW50aW1lLWNhc3RzLmpz
b24tcmVzdWx0OgorCiAyMDE2LTAzLTA2ICBCcmlhbiBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgog
CiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IEl0IHNob3VsZCBiZSBwb3NzaWJsZSB0byBpbml0aWFs
aXplIGdlbmVyYXRlZCBPYmpDIHByb3RvY29sIHR5cGVzIGZyb20gYW4gTlNEaWN0aW9uYXJ5IHBh
eWxvYWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYzdmZGY3ZDJlMDRhMmRjYTAx
MDAzMDU4YWE1YzhmYjM3YjlhNDEzMC4uMTkyYjQyNDRhMzMxNzM0Y2FmY2Y4YjVlMTU0MzFlZWI1
ZTI1NmE4OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE2MzUsNyArMTYzNSw3
IEBACiAJCUE1RUE3MTA0MTlGNkRFNzIwMDk4RjVFQyAvKiBnZW5lcmF0ZV9vYmpjX2JhY2tlbmRf
ZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5weSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEE1RUE3MEYwMTlGNkRFNUEwMDk4RjVFQyAvKiBnZW5lcmF0ZV9v
YmpjX2JhY2tlbmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5weSAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBNUVBNzEwNTE5RjZERTc0MDA5OEY1
RUMgLyogZ2VuZXJhdGVfb2JqY19jb25maWd1cmF0aW9uX2hlYWRlci5weSBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1RUE3MEYxMTlGNkRFNUEwMDk4RjVF
QyAvKiBnZW5lcmF0ZV9vYmpjX2NvbmZpZ3VyYXRpb25faGVhZGVyLnB5ICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE1RUE3MTA2MTlGNkRFNzYwMDk4
RjVFQyAvKiBnZW5lcmF0ZV9vYmpjX2NvbmZpZ3VyYXRpb25faW1wbGVtZW50YXRpb24ucHkgaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUVBNzBGMjE5RjZE
RTVBMDA5OEY1RUMgLyogZ2VuZXJhdGVfb2JqY19jb25maWd1cmF0aW9uX2ltcGxlbWVudGF0aW9u
LnB5ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCUE1
RUE3MTA3MTlGNkRFNzgwMDk4RjVFQyAvKiBnZW5lcmF0ZV9vYmpjX2NvbnZlcnNpb25faGVscGVy
cy5weSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1RUE3
MEYzMTlGNkRFNUEwMDk4RjVFQyAvKiBnZW5lcmF0ZV9vYmpjX2NvbnZlcnNpb25faGVscGVycy5w
eSAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlBNUVB
NzEwNzE5RjZERTc4MDA5OEY1RUMgLyogZ2VuZXJhdGVfb2JqY19wcm90b2NvbF90eXBlX2NvbnZl
cnNpb25zX2hlYWRlci5weSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE1RUE3MEYzMTlGNkRFNUEwMDk4RjVFQyAvKiBnZW5lcmF0ZV9vYmpjX3Byb3RvY29s
X3R5cGVfY29udmVyc2lvbnNfaGVhZGVyLnB5ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCUE1RUE3MTA4MTlGNkRFN0EwMDk4RjVFQyAvKiBnZW5lcmF0
ZV9vYmpjX2Zyb250ZW5kX2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRpb24ucHkgaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUVBNzBGNDE5RjZERTVBMDA5OEY1
RUMgLyogZ2VuZXJhdGVfb2JqY19mcm9udGVuZF9kaXNwYXRjaGVyX2ltcGxlbWVudGF0aW9uLnB5
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE1RUE3
MTA5MTlGNkRFN0MwMDk4RjVFQyAvKiBnZW5lcmF0ZV9vYmpjX2hlYWRlci5weSBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1RUE3MEY1MTlGNkRFNUEwMDk4
RjVFQyAvKiBnZW5lcmF0ZV9vYmpjX2hlYWRlci5weSAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBNUVBNzEwQTE5RjZERTdFMDA5OEY1RUMgLyogZ2Vu
ZXJhdGVfb2JqY19pbnRlcm5hbF9oZWFkZXIucHkgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBNUVBNzBGNjE5RjZERTVBMDA5OEY1RUMgLyogZ2VuZXJhdGVf
b2JqY19pbnRlcm5hbF9oZWFkZXIucHkgKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKQEAgLTM4MzYsNyArMzgzNiw3IEBACiAJCUE1RUE3MEYwMTlGNkRFNUEw
MDk4RjVFQyAvKiBnZW5lcmF0ZV9vYmpjX2JhY2tlbmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlv
bi5weSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsgcGF0aCA9IGdlbmVyYXRlX29iamNf
YmFja2VuZF9kaXNwYXRjaGVyX2ltcGxlbWVudGF0aW9uLnB5OyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlBNUVBNzBGMTE5RjZERTVBMDA5OEY1RUMgLyogZ2VuZXJhdGVfb2JqY19jb25m
aWd1cmF0aW9uX2hlYWRlci5weSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsgcGF0aCA9
IGdlbmVyYXRlX29iamNfY29uZmlndXJhdGlvbl9oZWFkZXIucHk7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUE1RUE3MEYyMTlGNkRFNUEwMDk4RjVFQyAvKiBnZW5lcmF0ZV9vYmpjX2Nv
bmZpZ3VyYXRpb25faW1wbGVtZW50YXRpb24ucHkgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5weXRo
b247IHBhdGggPSBnZW5lcmF0ZV9vYmpjX2NvbmZpZ3VyYXRpb25faW1wbGVtZW50YXRpb24ucHk7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE1RUE3MEYzMTlGNkRFNUEwMDk4RjVFQyAv
KiBnZW5lcmF0ZV9vYmpjX2NvbnZlcnNpb25faGVscGVycy5weSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2Ny
aXB0LnB5dGhvbjsgcGF0aCA9IGdlbmVyYXRlX29iamNfY29udmVyc2lvbl9oZWxwZXJzLnB5OyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNUVBNzBGMzE5RjZERTVBMDA5OEY1RUMgLyog
Z2VuZXJhdGVfb2JqY19wcm90b2NvbF90eXBlX2NvbnZlcnNpb25zX2hlYWRlci5weSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsgcGF0aCA9IGdlbmVyYXRlX29iamNfcHJvdG9jb2xfdHlw
ZV9jb252ZXJzaW9uc19oZWFkZXIucHk7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1
RUE3MEY0MTlGNkRFNUEwMDk4RjVFQyAvKiBnZW5lcmF0ZV9vYmpjX2Zyb250ZW5kX2Rpc3BhdGNo
ZXJfaW1wbGVtZW50YXRpb24ucHkgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5weXRob247IHBhdGgg
PSBnZW5lcmF0ZV9vYmpjX2Zyb250ZW5kX2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRpb24ucHk7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1RUE3MEY1MTlGNkRFNUEwMDk4RjVFQyAvKiBn
ZW5lcmF0ZV9vYmpjX2hlYWRlci5weSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsgcGF0
aCA9IGdlbmVyYXRlX29iamNfaGVhZGVyLnB5OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlBNUVBNzBGNjE5RjZERTVBMDA5OEY1RUMgLyogZ2VuZXJhdGVfb2JqY19pbnRlcm5hbF9oZWFk
ZXIucHkgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5weXRob247IHBhdGggPSBnZW5lcmF0ZV9vYmpj
X2ludGVybmFsX2hlYWRlci5weTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY4NDks
MTAgKzY4NDksMTAgQEAKIAkJCQlBNUVBNzBGMDE5RjZERTVBMDA5OEY1RUMgLyogZ2VuZXJhdGVf
b2JqY19iYWNrZW5kX2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRpb24ucHkgKi8sCiAJCQkJQTVFQTcw
RjExOUY2REU1QTAwOThGNUVDIC8qIGdlbmVyYXRlX29iamNfY29uZmlndXJhdGlvbl9oZWFkZXIu
cHkgKi8sCiAJCQkJQTVFQTcwRjIxOUY2REU1QTAwOThGNUVDIC8qIGdlbmVyYXRlX29iamNfY29u
ZmlndXJhdGlvbl9pbXBsZW1lbnRhdGlvbi5weSAqLywKLQkJCQlBNUVBNzBGMzE5RjZERTVBMDA5
OEY1RUMgLyogZ2VuZXJhdGVfb2JqY19jb252ZXJzaW9uX2hlbHBlcnMucHkgKi8sCiAJCQkJQTVF
QTcwRjQxOUY2REU1QTAwOThGNUVDIC8qIGdlbmVyYXRlX29iamNfZnJvbnRlbmRfZGlzcGF0Y2hl
cl9pbXBsZW1lbnRhdGlvbi5weSAqLywKIAkJCQlBNUVBNzBGNTE5RjZERTVBMDA5OEY1RUMgLyog
Z2VuZXJhdGVfb2JqY19oZWFkZXIucHkgKi8sCiAJCQkJQTVFQTcwRjYxOUY2REU1QTAwOThGNUVD
IC8qIGdlbmVyYXRlX29iamNfaW50ZXJuYWxfaGVhZGVyLnB5ICovLAorCQkJCUE1RUE3MEYzMTlG
NkRFNUEwMDk4RjVFQyAvKiBnZW5lcmF0ZV9vYmpjX3Byb3RvY29sX3R5cGVfY29udmVyc2lvbnNf
aGVhZGVyLnB5ICovLAogCQkJCUM0RjRCNkQ3MUEwNUM3NkYwMDVDQUI3NiAvKiBnZW5lcmF0ZV9v
YmpjX3Byb3RvY29sX3R5cGVzX2ltcGxlbWVudGF0aW9uLnB5ICovLAogCQkJCUM0NzAzQ0NCMTky
ODQ0Q0MwMDEzRkJFQSAvKiBnZW5lcmF0b3IucHkgKi8sCiAJCQkJQzQ3MDNDQ0ExOTI4NDRDQzAw
MTNGQkVBIC8qIGdlbmVyYXRvcl90ZW1wbGF0ZXMucHkgKi8sCkBAIC03NDI3LDcgKzc0MjcsNyBA
QAogCQkJCTBGNjRFQUYzMUM0RUNEMDYwMDYyMUU5QiAvKiBBaXJBcmdJbmxpbmVzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBNUVBNzEwNTE5RjZERTc0MDA5OEY1RUMgLyogZ2VuZXJhdGVfb2JqY19j
b25maWd1cmF0aW9uX2hlYWRlci5weSBpbiBIZWFkZXJzICovLAogCQkJCUE1RUE3MTA2MTlGNkRF
NzYwMDk4RjVFQyAvKiBnZW5lcmF0ZV9vYmpjX2NvbmZpZ3VyYXRpb25faW1wbGVtZW50YXRpb24u
cHkgaW4gSGVhZGVycyAqLywKLQkJCQlBNUVBNzEwNzE5RjZERTc4MDA5OEY1RUMgLyogZ2VuZXJh
dGVfb2JqY19jb252ZXJzaW9uX2hlbHBlcnMucHkgaW4gSGVhZGVycyAqLywKKwkJCQlBNUVBNzEw
NzE5RjZERTc4MDA5OEY1RUMgLyogZ2VuZXJhdGVfb2JqY19wcm90b2NvbF90eXBlX2NvbnZlcnNp
b25zX2hlYWRlci5weSBpbiBIZWFkZXJzICovLAogCQkJCTBGMzM4REY2MUJFOTNENTUwMDEzQzg4
RiAvKiBCM0NvbnN0cmFpbmVkVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1RUE3MTA4MTlG
NkRFN0EwMDk4RjVFQyAvKiBnZW5lcmF0ZV9vYmpjX2Zyb250ZW5kX2Rpc3BhdGNoZXJfaW1wbGVt
ZW50YXRpb24ucHkgaW4gSGVhZGVycyAqLywKIAkJCQlBNUVBNzEwOTE5RjZERTdDMDA5OEY1RUMg
LyogZ2VuZXJhdGVfb2JqY19oZWFkZXIucHkgaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL19faW5pdF9fLnB5
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vX19pbml0
X18ucHkKaW5kZXggNjA3N2ZhOTdhOTdmOGMyMTdjYjBhYjYzNzBhODU2NGY2YTQ5YzY3YS4uNTFh
NDc2Y2RiMjMzMDIzZWVlNThhOTdiOGQ4NGFjNzIzNmNkMTliNSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vX19pbml0X18ucHkKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vX19pbml0
X18ucHkKQEAgLTE3LDggKzE3LDggQEAgZnJvbSBnZW5lcmF0ZV9vYmpjX2JhY2tlbmRfZGlzcGF0
Y2hlcl9oZWFkZXIgaW1wb3J0ICoKIGZyb20gZ2VuZXJhdGVfb2JqY19iYWNrZW5kX2Rpc3BhdGNo
ZXJfaW1wbGVtZW50YXRpb24gaW1wb3J0ICoKIGZyb20gZ2VuZXJhdGVfb2JqY19jb25maWd1cmF0
aW9uX2hlYWRlciBpbXBvcnQgKgogZnJvbSBnZW5lcmF0ZV9vYmpjX2NvbmZpZ3VyYXRpb25faW1w
bGVtZW50YXRpb24gaW1wb3J0ICoKLWZyb20gZ2VuZXJhdGVfb2JqY19jb252ZXJzaW9uX2hlbHBl
cnMgaW1wb3J0ICoKIGZyb20gZ2VuZXJhdGVfb2JqY19mcm9udGVuZF9kaXNwYXRjaGVyX2ltcGxl
bWVudGF0aW9uIGltcG9ydCAqCiBmcm9tIGdlbmVyYXRlX29iamNfaGVhZGVyIGltcG9ydCAqCiBm
cm9tIGdlbmVyYXRlX29iamNfaW50ZXJuYWxfaGVhZGVyIGltcG9ydCAqCiBmcm9tIGdlbmVyYXRl
X29iamNfcHJvdG9jb2xfdHlwZXNfaW1wbGVtZW50YXRpb24gaW1wb3J0ICoKK2Zyb20gZ2VuZXJh
dGVfb2JqY19wcm90b2NvbF90eXBlX2NvbnZlcnNpb25zX2hlYWRlciBpbXBvcnQgKgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2Vu
ZXJhdGVfb2JqY19iYWNrZW5kX2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRpb24ucHkgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9vYmpjX2Jh
Y2tlbmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5weQppbmRleCAyMWZlM2E1NzMwMTM3NTU2
NDM2NDM0NTYxZWE4ZWYwYjU3NmFkYzM4Li45ZDVmMDM5MWU1YTVlMmVhYmQyOTE1ZjFlMDZmMGIw
ZTExZTVkOWMwIDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Nj
cmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9vYmpjX2JhY2tlbmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRh
dGlvbi5weQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29k
ZWdlbi9nZW5lcmF0ZV9vYmpjX2JhY2tlbmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5weQpA
QCAtNTIsNyArNTIsNyBAQCBjbGFzcyBPYmpDQ29uZmlndXJhdGlvbkltcGxlbWVudGF0aW9uR2Vu
ZXJhdG9yKE9iakNHZW5lcmF0b3IpOgogICAgIGRlZiBnZW5lcmF0ZV9vdXRwdXQoc2VsZik6CiAg
ICAgICAgIHNlY29uZGFyeV9oZWFkZXJzID0gWwogICAgICAgICAgICAgJyIlc0ludGVybmFsLmgi
JyAlIHNlbGYucHJvdG9jb2xfbmFtZSgpLAotICAgICAgICAgICAgJyIlc0VudW1Db252ZXJzaW9u
SGVscGVycy5oIicgJSBzZWxmLnByb3RvY29sX25hbWUoKSwKKyAgICAgICAgICAgICciJXNUeXBl
Q29udmVyc2lvbnMuaCInICUgc2VsZi5wcm90b2NvbF9uYW1lKCksCiAgICAgICAgICAgICAnPEph
dmFTY3JpcHRDb3JlL0luc3BlY3RvclZhbHVlcy5oPicsCiAgICAgICAgIF0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJh
dGVfb2JqY19jb252ZXJzaW9uX2hlbHBlcnMucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9vYmpjX2NvbnZlcnNpb25faGVscGVycy5w
eQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMTNmMDA4NGFmNWQxYmFjZTgyNjExOTQw
NmExZDBkOTAyNTIxODY2OC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9n
ZW5lcmF0ZV9vYmpjX2NvbnZlcnNpb25faGVscGVycy5weQorKysgL2Rldi9udWxsCkBAIC0xLDE1
NSArMCwwIEBACi0jIS91c3IvYmluL2VudiBweXRob24KLSMKLSMgQ29weXJpZ2h0IChjKSAyMDE0
LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMgQ29weXJpZ2h0IChjKSAy
MDE0IFVuaXZlcnNpdHkgb2YgV2FzaGluZ3Rvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMg
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIyAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0jIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0jICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMg
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJwotIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotIyBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotIyBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKLSMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSMgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
IyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLQotaW1wb3J0IGxvZ2dpbmcKLWlt
cG9ydCBzdHJpbmcKLWZyb20gc3RyaW5nIGltcG9ydCBUZW1wbGF0ZQotCi1mcm9tIGdlbmVyYXRv
ciBpbXBvcnQgR2VuZXJhdG9yCi1mcm9tIG1vZGVscyBpbXBvcnQgRW51bVR5cGUKLWZyb20gb2Jq
Y19nZW5lcmF0b3IgaW1wb3J0IE9iakNHZW5lcmF0b3IKLWZyb20gb2JqY19nZW5lcmF0b3JfdGVt
cGxhdGVzIGltcG9ydCBPYmpDR2VuZXJhdG9yVGVtcGxhdGVzIGFzIE9iakNUZW1wbGF0ZXMKLQot
bG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoJ2dsb2JhbCcpCi0KLQotZGVmIGFkZF9uZXdsaW5lKGxp
bmVzKToKLSAgICBpZiBsaW5lcyBhbmQgbGluZXNbLTFdID09ICcnOgotICAgICAgICByZXR1cm4K
LSAgICBsaW5lcy5hcHBlbmQoJycpCi0KLQotY2xhc3MgT2JqQ0NvbnZlcnNpb25IZWxwZXJzR2Vu
ZXJhdG9yKE9iakNHZW5lcmF0b3IpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtb2RlbCwgaW5w
dXRfZmlsZXBhdGgpOgotICAgICAgICBPYmpDR2VuZXJhdG9yLl9faW5pdF9fKHNlbGYsIG1vZGVs
LCBpbnB1dF9maWxlcGF0aCkKLQotICAgIGRlZiBvdXRwdXRfZmlsZW5hbWUoc2VsZik6Ci0gICAg
ICAgIHJldHVybiAnJXNFbnVtQ29udmVyc2lvbkhlbHBlcnMuaCcgJSBzZWxmLnByb3RvY29sX25h
bWUoKQotCi0gICAgZGVmIGRvbWFpbnNfdG9fZ2VuZXJhdGUoc2VsZik6Ci0gICAgICAgIHJldHVy
biBmaWx0ZXIoT2JqQ0dlbmVyYXRvci5zaG91bGRfZ2VuZXJhdGVfZG9tYWluX3R5cGVzX2ZpbHRl
cihzZWxmLm1vZGVsKCkpLCBHZW5lcmF0b3IuZG9tYWluc190b19nZW5lcmF0ZShzZWxmKSkKLQot
ICAgIGRlZiBnZW5lcmF0ZV9vdXRwdXQoc2VsZik6Ci0gICAgICAgIGhlYWRlcnMgPSBbCi0gICAg
ICAgICAgICAnIiVzQXJyYXlDb252ZXJzaW9uSGVscGVycy5oIicgJSBPYmpDR2VuZXJhdG9yLk9C
SkNfU1RBVElDX1BSRUZJWAotICAgICAgICBdCi0KLSAgICAgICAgaGVhZGVyX2FyZ3MgPSB7Ci0g
ICAgICAgICAgICAnaW5jbHVkZXMnOiAnXG4nLmpvaW4oWycjaW1wb3J0ICcgKyBoZWFkZXIgZm9y
IGhlYWRlciBpbiBoZWFkZXJzXSksCi0gICAgICAgIH0KLQotICAgICAgICBkb21haW5zID0gc2Vs
Zi5kb21haW5zX3RvX2dlbmVyYXRlKCkKLSAgICAgICAgc2VjdGlvbnMgPSBbXQotICAgICAgICBz
ZWN0aW9ucy5hcHBlbmQoc2VsZi5nZW5lcmF0ZV9saWNlbnNlKCkpCi0gICAgICAgIHNlY3Rpb25z
LmFwcGVuZChUZW1wbGF0ZShPYmpDVGVtcGxhdGVzLkNvbnZlcnNpb25IZWxwZXJzUHJlbHVkZSku
c3Vic3RpdHV0ZShOb25lLCAqKmhlYWRlcl9hcmdzKSkKLSAgICAgICAgc2VjdGlvbnMuYXBwZW5k
KFRlbXBsYXRlKE9iakNUZW1wbGF0ZXMuQ29udmVyc2lvbkhlbHBlcnNTdGFuZGFyZCkuc3Vic3Rp
dHV0ZShOb25lKSkKLSAgICAgICAgc2VjdGlvbnMuZXh0ZW5kKG1hcChzZWxmLl9nZW5lcmF0ZV9l
bnVtX2NvbnZlcnNpb25fZnVuY3Rpb25zLCBkb21haW5zKSkKLSAgICAgICAgc2VjdGlvbnMuYXBw
ZW5kKFRlbXBsYXRlKE9iakNUZW1wbGF0ZXMuQ29udmVyc2lvbkhlbHBlcnNQb3N0bHVkZSkuc3Vi
c3RpdHV0ZShOb25lLCAqKmhlYWRlcl9hcmdzKSkKLSAgICAgICAgcmV0dXJuICdcblxuJy5qb2lu
KHNlY3Rpb25zKQotCi0gICAgZGVmIF9nZW5lcmF0ZV9lbnVtX2NvbnZlcnNpb25fZnVuY3Rpb25z
KHNlbGYsIGRvbWFpbik6Ci0gICAgICAgIGxpbmVzID0gW10KLQotICAgICAgICAjIFR5cGUgZW51
bXMgYW5kIG1lbWJlciBlbnVtcy4KLSAgICAgICAgZm9yIGRlY2xhcmF0aW9uIGluIGRvbWFpbi50
eXBlX2RlY2xhcmF0aW9uczoKLSAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZGVjbGFyYXRpb24u
dHlwZSwgRW51bVR5cGUpOgotICAgICAgICAgICAgICAgIGFkZF9uZXdsaW5lKGxpbmVzKQotICAg
ICAgICAgICAgICAgIGxpbmVzLmFwcGVuZChzZWxmLl9nZW5lcmF0ZV9hbm9ueW1vdXNfZW51bV9j
b252ZXJzaW9uX2Zvcl9kZWNsYXJhdGlvbihkb21haW4sIGRlY2xhcmF0aW9uKSkKLSAgICAgICAg
ICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgZm9yIG1lbWJlciBpbiBkZWNsYXJhdGlvbi50eXBl
X21lbWJlcnM6Ci0gICAgICAgICAgICAgICAgICAgIGlmIChpc2luc3RhbmNlKG1lbWJlci50eXBl
LCBFbnVtVHlwZSkgYW5kIG1lbWJlci50eXBlLmlzX2Fub255bW91cyk6Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBhZGRfbmV3bGluZShsaW5lcykKLSAgICAgICAgICAgICAgICAgICAgICAgIGxp
bmVzLmFwcGVuZChzZWxmLl9nZW5lcmF0ZV9hbm9ueW1vdXNfZW51bV9jb252ZXJzaW9uX2Zvcl9t
ZW1iZXIoZG9tYWluLCBkZWNsYXJhdGlvbiwgbWVtYmVyKSkKLQotICAgICAgICAjIEFub255bW91
cyBjb21tYW5kIGVudW1zLgotICAgICAgICBmb3IgY29tbWFuZCBpbiBkb21haW4uY29tbWFuZHM6
Ci0gICAgICAgICAgICBmb3IgcGFyYW1ldGVyIGluIGNvbW1hbmQuY2FsbF9wYXJhbWV0ZXJzOgot
ICAgICAgICAgICAgICAgIGlmIChpc2luc3RhbmNlKHBhcmFtZXRlci50eXBlLCBFbnVtVHlwZSkg
YW5kIHBhcmFtZXRlci50eXBlLmlzX2Fub255bW91cyk6Ci0gICAgICAgICAgICAgICAgICAgIGFk
ZF9uZXdsaW5lKGxpbmVzKQotICAgICAgICAgICAgICAgICAgICBsaW5lcy5hcHBlbmQoc2VsZi5f
Z2VuZXJhdGVfYW5vbnltb3VzX2VudW1fY29udmVyc2lvbl9mb3JfcGFyYW1ldGVyKGRvbWFpbiwg
Y29tbWFuZC5jb21tYW5kX25hbWUsIHBhcmFtZXRlcikpCi0gICAgICAgICAgICBmb3IgcGFyYW1l
dGVyIGluIGNvbW1hbmQucmV0dXJuX3BhcmFtZXRlcnM6Ci0gICAgICAgICAgICAgICAgaWYgKGlz
aW5zdGFuY2UocGFyYW1ldGVyLnR5cGUsIEVudW1UeXBlKSBhbmQgcGFyYW1ldGVyLnR5cGUuaXNf
YW5vbnltb3VzKToKLSAgICAgICAgICAgICAgICAgICAgYWRkX25ld2xpbmUobGluZXMpCi0gICAg
ICAgICAgICAgICAgICAgIGxpbmVzLmFwcGVuZChzZWxmLl9nZW5lcmF0ZV9hbm9ueW1vdXNfZW51
bV9jb252ZXJzaW9uX2Zvcl9wYXJhbWV0ZXIoZG9tYWluLCBjb21tYW5kLmNvbW1hbmRfbmFtZSwg
cGFyYW1ldGVyKSkKLQotICAgICAgICAjIEFub255bW91cyBldmVudCBlbnVtcy4KLSAgICAgICAg
Zm9yIGV2ZW50IGluIGRvbWFpbi5ldmVudHM6Ci0gICAgICAgICAgICBmb3IgcGFyYW1ldGVyIGlu
IGV2ZW50LmV2ZW50X3BhcmFtZXRlcnM6Ci0gICAgICAgICAgICAgICAgaWYgKGlzaW5zdGFuY2Uo
cGFyYW1ldGVyLnR5cGUsIEVudW1UeXBlKSBhbmQgcGFyYW1ldGVyLnR5cGUuaXNfYW5vbnltb3Vz
KToKLSAgICAgICAgICAgICAgICAgICAgYWRkX25ld2xpbmUobGluZXMpCi0gICAgICAgICAgICAg
ICAgICAgIGxpbmVzLmFwcGVuZChzZWxmLl9nZW5lcmF0ZV9hbm9ueW1vdXNfZW51bV9jb252ZXJz
aW9uX2Zvcl9wYXJhbWV0ZXIoZG9tYWluLCBldmVudC5ldmVudF9uYW1lLCBwYXJhbWV0ZXIpKQot
Ci0gICAgICAgIHJldHVybiAnXG4nLmpvaW4obGluZXMpCi0KLSAgICBkZWYgX2dlbmVyYXRlX2Fu
b255bW91c19lbnVtX2NvbnZlcnNpb25fZm9yX2RlY2xhcmF0aW9uKHNlbGYsIGRvbWFpbiwgZGVj
bGFyYXRpb24pOgotICAgICAgICBvYmpjX2VudW1fbmFtZSA9IHNlbGYub2JqY19lbnVtX25hbWVf
Zm9yX2Fub255bW91c19lbnVtX2RlY2xhcmF0aW9uKGRlY2xhcmF0aW9uKQotICAgICAgICBlbnVt
X3ZhbHVlcyA9IGRlY2xhcmF0aW9uLnR5cGUuZW51bV92YWx1ZXMoKQotICAgICAgICBsaW5lcyA9
IFtdCi0gICAgICAgIGxpbmVzLmFwcGVuZChzZWxmLl9nZW5lcmF0ZV9lbnVtX29iamNfdG9fcHJv
dG9jb2xfc3RyaW5nKG9iamNfZW51bV9uYW1lLCBlbnVtX3ZhbHVlcykpCi0gICAgICAgIGxpbmVz
LmFwcGVuZChzZWxmLl9nZW5lcmF0ZV9lbnVtX2Zyb21fcHJvdG9jb2xfc3RyaW5nKG9iamNfZW51
bV9uYW1lLCBlbnVtX3ZhbHVlcykpCi0gICAgICAgIHJldHVybiAnXG5cbicuam9pbihsaW5lcykK
LQotICAgIGRlZiBfZ2VuZXJhdGVfYW5vbnltb3VzX2VudW1fY29udmVyc2lvbl9mb3JfbWVtYmVy
KHNlbGYsIGRvbWFpbiwgZGVjbGFyYXRpb24sIG1lbWJlcik6Ci0gICAgICAgIG9iamNfZW51bV9u
YW1lID0gc2VsZi5vYmpjX2VudW1fbmFtZV9mb3JfYW5vbnltb3VzX2VudW1fbWVtYmVyKGRlY2xh
cmF0aW9uLCBtZW1iZXIpCi0gICAgICAgIGVudW1fdmFsdWVzID0gbWVtYmVyLnR5cGUuZW51bV92
YWx1ZXMoKQotICAgICAgICBsaW5lcyA9IFtdCi0gICAgICAgIGxpbmVzLmFwcGVuZChzZWxmLl9n
ZW5lcmF0ZV9lbnVtX29iamNfdG9fcHJvdG9jb2xfc3RyaW5nKG9iamNfZW51bV9uYW1lLCBlbnVt
X3ZhbHVlcykpCi0gICAgICAgIGxpbmVzLmFwcGVuZChzZWxmLl9nZW5lcmF0ZV9lbnVtX2Zyb21f
cHJvdG9jb2xfc3RyaW5nKG9iamNfZW51bV9uYW1lLCBlbnVtX3ZhbHVlcykpCi0gICAgICAgIHJl
dHVybiAnXG5cbicuam9pbihsaW5lcykKLQotICAgIGRlZiBfZ2VuZXJhdGVfYW5vbnltb3VzX2Vu
dW1fY29udmVyc2lvbl9mb3JfcGFyYW1ldGVyKHNlbGYsIGRvbWFpbiwgZXZlbnRfb3JfY29tbWFu
ZF9uYW1lLCBwYXJhbWV0ZXIpOgotICAgICAgICBvYmpjX2VudW1fbmFtZSA9IHNlbGYub2JqY19l
bnVtX25hbWVfZm9yX2Fub255bW91c19lbnVtX3BhcmFtZXRlcihkb21haW4sIGV2ZW50X29yX2Nv
bW1hbmRfbmFtZSwgcGFyYW1ldGVyKQotICAgICAgICBlbnVtX3ZhbHVlcyA9IHBhcmFtZXRlci50
eXBlLmVudW1fdmFsdWVzKCkKLSAgICAgICAgbGluZXMgPSBbXQotICAgICAgICBsaW5lcy5hcHBl
bmQoc2VsZi5fZ2VuZXJhdGVfZW51bV9vYmpjX3RvX3Byb3RvY29sX3N0cmluZyhvYmpjX2VudW1f
bmFtZSwgZW51bV92YWx1ZXMpKQotICAgICAgICBsaW5lcy5hcHBlbmQoc2VsZi5fZ2VuZXJhdGVf
ZW51bV9mcm9tX3Byb3RvY29sX3N0cmluZyhvYmpjX2VudW1fbmFtZSwgZW51bV92YWx1ZXMpKQot
ICAgICAgICByZXR1cm4gJ1xuXG4nLmpvaW4obGluZXMpCi0KLSAgICBkZWYgX2dlbmVyYXRlX2Vu
dW1fb2JqY190b19wcm90b2NvbF9zdHJpbmcoc2VsZiwgb2JqY19lbnVtX25hbWUsIGVudW1fdmFs
dWVzKToKLSAgICAgICAgbGluZXMgPSBbXQotICAgICAgICBsaW5lcy5hcHBlbmQoJ2lubGluZSBT
dHJpbmcgdG9Qcm90b2NvbFN0cmluZyglcyB2YWx1ZSknICUgb2JqY19lbnVtX25hbWUpCi0gICAg
ICAgIGxpbmVzLmFwcGVuZCgneycpCi0gICAgICAgIGxpbmVzLmFwcGVuZCgnICAgIHN3aXRjaCh2
YWx1ZSkgeycpCi0gICAgICAgIGZvciBlbnVtX3ZhbHVlIGluIGVudW1fdmFsdWVzOgotICAgICAg
ICAgICAgbGluZXMuYXBwZW5kKCcgICAgY2FzZSAlcyVzOicgJSAob2JqY19lbnVtX25hbWUsIEdl
bmVyYXRvci5zdHlsaXplZF9uYW1lX2Zvcl9lbnVtX3ZhbHVlKGVudW1fdmFsdWUpKSkKLSAgICAg
ICAgICAgIGxpbmVzLmFwcGVuZCgnICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCIlcyIpOycg
JSBlbnVtX3ZhbHVlKQotICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICB9JykKLSAgICAgICAgbGlu
ZXMuYXBwZW5kKCd9JykKLSAgICAgICAgcmV0dXJuICdcbicuam9pbihsaW5lcykKLQotICAgIGRl
ZiBfZ2VuZXJhdGVfZW51bV9mcm9tX3Byb3RvY29sX3N0cmluZyhzZWxmLCBvYmpjX2VudW1fbmFt
ZSwgZW51bV92YWx1ZXMpOgotICAgICAgICBsaW5lcyA9IFtdCi0gICAgICAgIGxpbmVzLmFwcGVu
ZCgndGVtcGxhdGU8PicpCi0gICAgICAgIGxpbmVzLmFwcGVuZCgnaW5saW5lICVzIGZyb21Qcm90
b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKScgJSBvYmpjX2VudW1fbmFtZSkKLSAgICAg
ICAgbGluZXMuYXBwZW5kKCd7JykKLSAgICAgICAgZm9yIGVudW1fdmFsdWUgaW4gZW51bV92YWx1
ZXM6Ci0gICAgICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICBpZiAodmFsdWUgPT0gIiVzIiknICUg
ZW51bV92YWx1ZSkKLSAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgICAgICByZXR1cm4gJXMl
czsnICUgKG9iamNfZW51bV9uYW1lLCBHZW5lcmF0b3Iuc3R5bGl6ZWRfbmFtZV9mb3JfZW51bV92
YWx1ZShlbnVtX3ZhbHVlKSkpCi0gICAgICAgIGxpbmVzLmFwcGVuZCgnICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOycpCi0gICAgICAgIGxpbmVzLmFwcGVuZCgnICAgIHJldHVybiAlcyVzOycgJSAo
b2JqY19lbnVtX25hbWUsIEdlbmVyYXRvci5zdHlsaXplZF9uYW1lX2Zvcl9lbnVtX3ZhbHVlKGVu
dW1fdmFsdWVzWzBdKSkpCi0gICAgICAgIGxpbmVzLmFwcGVuZCgnfScpCi0gICAgICAgIHJldHVy
biAnXG4nLmpvaW4obGluZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9vYmpjX2Zyb250ZW5kX2Rpc3BhdGNoZXJf
aW1wbGVtZW50YXRpb24ucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Njcmlw
dHMvY29kZWdlbi9nZW5lcmF0ZV9vYmpjX2Zyb250ZW5kX2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRp
b24ucHkKaW5kZXggZWRkZGNmNzI1NmEyMTg0M2RmOTNhYzBkOWI4MTU1ZGZlNjk0MWQ2Yi4uMTQw
N2E2MGFiNjg3MDI1NzI4MWU4MGE1YzAxZjZkZjIyZWQzZWI1YSAxMDA3NTUKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfb2JqY19m
cm9udGVuZF9kaXNwYXRjaGVyX2ltcGxlbWVudGF0aW9uLnB5CisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX29iamNfZnJvbnRlbmRf
ZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5weQpAQCAtNDksNyArNDksNyBAQCBjbGFzcyBPYmpD
RnJvbnRlbmREaXNwYXRjaGVySW1wbGVtZW50YXRpb25HZW5lcmF0b3IoT2JqQ0dlbmVyYXRvcik6
CiAKICAgICBkZWYgZ2VuZXJhdGVfb3V0cHV0KHNlbGYpOgogICAgICAgICBzZWNvbmRhcnlfaGVh
ZGVycyA9IFsKLSAgICAgICAgICAgICciJXNFbnVtQ29udmVyc2lvbkhlbHBlcnMuaCInICUgc2Vs
Zi5wcm90b2NvbF9uYW1lKCksCisgICAgICAgICAgICAnIiVzVHlwZUNvbnZlcnNpb25zLmgiJyAl
IHNlbGYucHJvdG9jb2xfbmFtZSgpLAogICAgICAgICAgICAgJzxKYXZhU2NyaXB0Q29yZS9JbnNw
ZWN0b3JWYWx1ZXMuaD4nLAogICAgICAgICBdCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX29iamNfcHJvdG9jb2xf
dHlwZV9jb252ZXJzaW9uc19oZWFkZXIucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9vYmpjX3Byb3RvY29sX3R5cGVfY29udmVyc2lv
bnNfaGVhZGVyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY1ZGY2ODAxYmMwNTVkNzhiOWMzMDFmNmQ4ZWJlZGEz
ZTM0YTg5MDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9vYmpjX3Byb3RvY29sX3R5cGVfY29udmVyc2lv
bnNfaGVhZGVyLnB5CkBAIC0wLDAgKzEsMTU1IEBACisjIS91c3IvYmluL2VudiBweXRob24KKyMK
KyMgQ29weXJpZ2h0IChjKSAyMDE0LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyMgQ29weXJpZ2h0IChjKSAyMDE0IFVuaXZlcnNpdHkgb2YgV2FzaGluZ3Rvbi4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0Ogor
IyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisK
KworaW1wb3J0IGxvZ2dpbmcKK2ltcG9ydCBzdHJpbmcKK2Zyb20gc3RyaW5nIGltcG9ydCBUZW1w
bGF0ZQorCitmcm9tIGdlbmVyYXRvciBpbXBvcnQgR2VuZXJhdG9yCitmcm9tIG1vZGVscyBpbXBv
cnQgRW51bVR5cGUKK2Zyb20gb2JqY19nZW5lcmF0b3IgaW1wb3J0IE9iakNHZW5lcmF0b3IKK2Zy
b20gb2JqY19nZW5lcmF0b3JfdGVtcGxhdGVzIGltcG9ydCBPYmpDR2VuZXJhdG9yVGVtcGxhdGVz
IGFzIE9iakNUZW1wbGF0ZXMKKworbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoJ2dsb2JhbCcpCisK
KworZGVmIGFkZF9uZXdsaW5lKGxpbmVzKToKKyAgICBpZiBsaW5lcyBhbmQgbGluZXNbLTFdID09
ICcnOgorICAgICAgICByZXR1cm4KKyAgICBsaW5lcy5hcHBlbmQoJycpCisKKworY2xhc3MgT2Jq
Q1Byb3RvY29sVHlwZUNvbnZlcnNpb25zSGVhZGVyR2VuZXJhdG9yKE9iakNHZW5lcmF0b3IpOgor
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtb2RlbCwgaW5wdXRfZmlsZXBhdGgpOgorICAgICAgICBP
YmpDR2VuZXJhdG9yLl9faW5pdF9fKHNlbGYsIG1vZGVsLCBpbnB1dF9maWxlcGF0aCkKKworICAg
IGRlZiBvdXRwdXRfZmlsZW5hbWUoc2VsZik6CisgICAgICAgIHJldHVybiAnJXNUeXBlQ29udmVy
c2lvbnMuaCcgJSBzZWxmLnByb3RvY29sX25hbWUoKQorCisgICAgZGVmIGRvbWFpbnNfdG9fZ2Vu
ZXJhdGUoc2VsZik6CisgICAgICAgIHJldHVybiBmaWx0ZXIoT2JqQ0dlbmVyYXRvci5zaG91bGRf
Z2VuZXJhdGVfZG9tYWluX3R5cGVzX2ZpbHRlcihzZWxmLm1vZGVsKCkpLCBHZW5lcmF0b3IuZG9t
YWluc190b19nZW5lcmF0ZShzZWxmKSkKKworICAgIGRlZiBnZW5lcmF0ZV9vdXRwdXQoc2VsZik6
CisgICAgICAgIGhlYWRlcnMgPSBbCisgICAgICAgICAgICAnIiVzQXJyYXlDb252ZXJzaW9ucy5o
IicgJSBPYmpDR2VuZXJhdG9yLk9CSkNfU1RBVElDX1BSRUZJWAorICAgICAgICBdCisKKyAgICAg
ICAgaGVhZGVyX2FyZ3MgPSB7CisgICAgICAgICAgICAnaW5jbHVkZXMnOiAnXG4nLmpvaW4oWycj
aW1wb3J0ICcgKyBoZWFkZXIgZm9yIGhlYWRlciBpbiBoZWFkZXJzXSksCisgICAgICAgIH0KKwor
ICAgICAgICBkb21haW5zID0gc2VsZi5kb21haW5zX3RvX2dlbmVyYXRlKCkKKyAgICAgICAgc2Vj
dGlvbnMgPSBbXQorICAgICAgICBzZWN0aW9ucy5hcHBlbmQoc2VsZi5nZW5lcmF0ZV9saWNlbnNl
KCkpCisgICAgICAgIHNlY3Rpb25zLmFwcGVuZChUZW1wbGF0ZShPYmpDVGVtcGxhdGVzLlR5cGVD
b252ZXJzaW9uc0hlYWRlclByZWx1ZGUpLnN1YnN0aXR1dGUoTm9uZSwgKipoZWFkZXJfYXJncykp
CisgICAgICAgIHNlY3Rpb25zLmFwcGVuZChUZW1wbGF0ZShPYmpDVGVtcGxhdGVzLlR5cGVDb252
ZXJzaW9uc0hlYWRlclN0YW5kYXJkKS5zdWJzdGl0dXRlKE5vbmUpKQorICAgICAgICBzZWN0aW9u
cy5leHRlbmQobWFwKHNlbGYuX2dlbmVyYXRlX2VudW1fY29udmVyc2lvbl9mdW5jdGlvbnMsIGRv
bWFpbnMpKQorICAgICAgICBzZWN0aW9ucy5hcHBlbmQoVGVtcGxhdGUoT2JqQ1RlbXBsYXRlcy5U
eXBlQ29udmVyc2lvbnNIZWFkZXJQb3N0bHVkZSkuc3Vic3RpdHV0ZShOb25lLCAqKmhlYWRlcl9h
cmdzKSkKKyAgICAgICAgcmV0dXJuICdcblxuJy5qb2luKHNlY3Rpb25zKQorCisgICAgZGVmIF9n
ZW5lcmF0ZV9lbnVtX2NvbnZlcnNpb25fZnVuY3Rpb25zKHNlbGYsIGRvbWFpbik6CisgICAgICAg
IGxpbmVzID0gW10KKworICAgICAgICAjIFR5cGUgZW51bXMgYW5kIG1lbWJlciBlbnVtcy4KKyAg
ICAgICAgZm9yIGRlY2xhcmF0aW9uIGluIGRvbWFpbi50eXBlX2RlY2xhcmF0aW9uczoKKyAgICAg
ICAgICAgIGlmIGlzaW5zdGFuY2UoZGVjbGFyYXRpb24udHlwZSwgRW51bVR5cGUpOgorICAgICAg
ICAgICAgICAgIGFkZF9uZXdsaW5lKGxpbmVzKQorICAgICAgICAgICAgICAgIGxpbmVzLmFwcGVu
ZChzZWxmLl9nZW5lcmF0ZV9hbm9ueW1vdXNfZW51bV9jb252ZXJzaW9uX2Zvcl9kZWNsYXJhdGlv
bihkb21haW4sIGRlY2xhcmF0aW9uKSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAg
ICAgZm9yIG1lbWJlciBpbiBkZWNsYXJhdGlvbi50eXBlX21lbWJlcnM6CisgICAgICAgICAgICAg
ICAgICAgIGlmIChpc2luc3RhbmNlKG1lbWJlci50eXBlLCBFbnVtVHlwZSkgYW5kIG1lbWJlci50
eXBlLmlzX2Fub255bW91cyk6CisgICAgICAgICAgICAgICAgICAgICAgICBhZGRfbmV3bGluZShs
aW5lcykKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVzLmFwcGVuZChzZWxmLl9nZW5lcmF0
ZV9hbm9ueW1vdXNfZW51bV9jb252ZXJzaW9uX2Zvcl9tZW1iZXIoZG9tYWluLCBkZWNsYXJhdGlv
biwgbWVtYmVyKSkKKworICAgICAgICAjIEFub255bW91cyBjb21tYW5kIGVudW1zLgorICAgICAg
ICBmb3IgY29tbWFuZCBpbiBkb21haW4uY29tbWFuZHM6CisgICAgICAgICAgICBmb3IgcGFyYW1l
dGVyIGluIGNvbW1hbmQuY2FsbF9wYXJhbWV0ZXJzOgorICAgICAgICAgICAgICAgIGlmIChpc2lu
c3RhbmNlKHBhcmFtZXRlci50eXBlLCBFbnVtVHlwZSkgYW5kIHBhcmFtZXRlci50eXBlLmlzX2Fu
b255bW91cyk6CisgICAgICAgICAgICAgICAgICAgIGFkZF9uZXdsaW5lKGxpbmVzKQorICAgICAg
ICAgICAgICAgICAgICBsaW5lcy5hcHBlbmQoc2VsZi5fZ2VuZXJhdGVfYW5vbnltb3VzX2VudW1f
Y29udmVyc2lvbl9mb3JfcGFyYW1ldGVyKGRvbWFpbiwgY29tbWFuZC5jb21tYW5kX25hbWUsIHBh
cmFtZXRlcikpCisgICAgICAgICAgICBmb3IgcGFyYW1ldGVyIGluIGNvbW1hbmQucmV0dXJuX3Bh
cmFtZXRlcnM6CisgICAgICAgICAgICAgICAgaWYgKGlzaW5zdGFuY2UocGFyYW1ldGVyLnR5cGUs
IEVudW1UeXBlKSBhbmQgcGFyYW1ldGVyLnR5cGUuaXNfYW5vbnltb3VzKToKKyAgICAgICAgICAg
ICAgICAgICAgYWRkX25ld2xpbmUobGluZXMpCisgICAgICAgICAgICAgICAgICAgIGxpbmVzLmFw
cGVuZChzZWxmLl9nZW5lcmF0ZV9hbm9ueW1vdXNfZW51bV9jb252ZXJzaW9uX2Zvcl9wYXJhbWV0
ZXIoZG9tYWluLCBjb21tYW5kLmNvbW1hbmRfbmFtZSwgcGFyYW1ldGVyKSkKKworICAgICAgICAj
IEFub255bW91cyBldmVudCBlbnVtcy4KKyAgICAgICAgZm9yIGV2ZW50IGluIGRvbWFpbi5ldmVu
dHM6CisgICAgICAgICAgICBmb3IgcGFyYW1ldGVyIGluIGV2ZW50LmV2ZW50X3BhcmFtZXRlcnM6
CisgICAgICAgICAgICAgICAgaWYgKGlzaW5zdGFuY2UocGFyYW1ldGVyLnR5cGUsIEVudW1UeXBl
KSBhbmQgcGFyYW1ldGVyLnR5cGUuaXNfYW5vbnltb3VzKToKKyAgICAgICAgICAgICAgICAgICAg
YWRkX25ld2xpbmUobGluZXMpCisgICAgICAgICAgICAgICAgICAgIGxpbmVzLmFwcGVuZChzZWxm
Ll9nZW5lcmF0ZV9hbm9ueW1vdXNfZW51bV9jb252ZXJzaW9uX2Zvcl9wYXJhbWV0ZXIoZG9tYWlu
LCBldmVudC5ldmVudF9uYW1lLCBwYXJhbWV0ZXIpKQorCisgICAgICAgIHJldHVybiAnXG4nLmpv
aW4obGluZXMpCisKKyAgICBkZWYgX2dlbmVyYXRlX2Fub255bW91c19lbnVtX2NvbnZlcnNpb25f
Zm9yX2RlY2xhcmF0aW9uKHNlbGYsIGRvbWFpbiwgZGVjbGFyYXRpb24pOgorICAgICAgICBvYmpj
X2VudW1fbmFtZSA9IHNlbGYub2JqY19lbnVtX25hbWVfZm9yX2Fub255bW91c19lbnVtX2RlY2xh
cmF0aW9uKGRlY2xhcmF0aW9uKQorICAgICAgICBlbnVtX3ZhbHVlcyA9IGRlY2xhcmF0aW9uLnR5
cGUuZW51bV92YWx1ZXMoKQorICAgICAgICBsaW5lcyA9IFtdCisgICAgICAgIGxpbmVzLmFwcGVu
ZChzZWxmLl9nZW5lcmF0ZV9lbnVtX29iamNfdG9fcHJvdG9jb2xfc3RyaW5nKG9iamNfZW51bV9u
YW1lLCBlbnVtX3ZhbHVlcykpCisgICAgICAgIGxpbmVzLmFwcGVuZChzZWxmLl9nZW5lcmF0ZV9l
bnVtX2Zyb21fcHJvdG9jb2xfc3RyaW5nKG9iamNfZW51bV9uYW1lLCBlbnVtX3ZhbHVlcykpCisg
ICAgICAgIHJldHVybiAnXG5cbicuam9pbihsaW5lcykKKworICAgIGRlZiBfZ2VuZXJhdGVfYW5v
bnltb3VzX2VudW1fY29udmVyc2lvbl9mb3JfbWVtYmVyKHNlbGYsIGRvbWFpbiwgZGVjbGFyYXRp
b24sIG1lbWJlcik6CisgICAgICAgIG9iamNfZW51bV9uYW1lID0gc2VsZi5vYmpjX2VudW1fbmFt
ZV9mb3JfYW5vbnltb3VzX2VudW1fbWVtYmVyKGRlY2xhcmF0aW9uLCBtZW1iZXIpCisgICAgICAg
IGVudW1fdmFsdWVzID0gbWVtYmVyLnR5cGUuZW51bV92YWx1ZXMoKQorICAgICAgICBsaW5lcyA9
IFtdCisgICAgICAgIGxpbmVzLmFwcGVuZChzZWxmLl9nZW5lcmF0ZV9lbnVtX29iamNfdG9fcHJv
dG9jb2xfc3RyaW5nKG9iamNfZW51bV9uYW1lLCBlbnVtX3ZhbHVlcykpCisgICAgICAgIGxpbmVz
LmFwcGVuZChzZWxmLl9nZW5lcmF0ZV9lbnVtX2Zyb21fcHJvdG9jb2xfc3RyaW5nKG9iamNfZW51
bV9uYW1lLCBlbnVtX3ZhbHVlcykpCisgICAgICAgIHJldHVybiAnXG5cbicuam9pbihsaW5lcykK
KworICAgIGRlZiBfZ2VuZXJhdGVfYW5vbnltb3VzX2VudW1fY29udmVyc2lvbl9mb3JfcGFyYW1l
dGVyKHNlbGYsIGRvbWFpbiwgZXZlbnRfb3JfY29tbWFuZF9uYW1lLCBwYXJhbWV0ZXIpOgorICAg
ICAgICBvYmpjX2VudW1fbmFtZSA9IHNlbGYub2JqY19lbnVtX25hbWVfZm9yX2Fub255bW91c19l
bnVtX3BhcmFtZXRlcihkb21haW4sIGV2ZW50X29yX2NvbW1hbmRfbmFtZSwgcGFyYW1ldGVyKQor
ICAgICAgICBlbnVtX3ZhbHVlcyA9IHBhcmFtZXRlci50eXBlLmVudW1fdmFsdWVzKCkKKyAgICAg
ICAgbGluZXMgPSBbXQorICAgICAgICBsaW5lcy5hcHBlbmQoc2VsZi5fZ2VuZXJhdGVfZW51bV9v
YmpjX3RvX3Byb3RvY29sX3N0cmluZyhvYmpjX2VudW1fbmFtZSwgZW51bV92YWx1ZXMpKQorICAg
ICAgICBsaW5lcy5hcHBlbmQoc2VsZi5fZ2VuZXJhdGVfZW51bV9mcm9tX3Byb3RvY29sX3N0cmlu
ZyhvYmpjX2VudW1fbmFtZSwgZW51bV92YWx1ZXMpKQorICAgICAgICByZXR1cm4gJ1xuXG4nLmpv
aW4obGluZXMpCisKKyAgICBkZWYgX2dlbmVyYXRlX2VudW1fb2JqY190b19wcm90b2NvbF9zdHJp
bmcoc2VsZiwgb2JqY19lbnVtX25hbWUsIGVudW1fdmFsdWVzKToKKyAgICAgICAgbGluZXMgPSBb
XQorICAgICAgICBsaW5lcy5hcHBlbmQoJ2lubGluZSBTdHJpbmcgdG9Qcm90b2NvbFN0cmluZygl
cyB2YWx1ZSknICUgb2JqY19lbnVtX25hbWUpCisgICAgICAgIGxpbmVzLmFwcGVuZCgneycpCisg
ICAgICAgIGxpbmVzLmFwcGVuZCgnICAgIHN3aXRjaCh2YWx1ZSkgeycpCisgICAgICAgIGZvciBl
bnVtX3ZhbHVlIGluIGVudW1fdmFsdWVzOgorICAgICAgICAgICAgbGluZXMuYXBwZW5kKCcgICAg
Y2FzZSAlcyVzOicgJSAob2JqY19lbnVtX25hbWUsIEdlbmVyYXRvci5zdHlsaXplZF9uYW1lX2Zv
cl9lbnVtX3ZhbHVlKGVudW1fdmFsdWUpKSkKKyAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgnICAg
ICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCIlcyIpOycgJSBlbnVtX3ZhbHVlKQorICAgICAgICBs
aW5lcy5hcHBlbmQoJyAgICB9JykKKyAgICAgICAgbGluZXMuYXBwZW5kKCd9JykKKyAgICAgICAg
cmV0dXJuICdcbicuam9pbihsaW5lcykKKworICAgIGRlZiBfZ2VuZXJhdGVfZW51bV9mcm9tX3By
b3RvY29sX3N0cmluZyhzZWxmLCBvYmpjX2VudW1fbmFtZSwgZW51bV92YWx1ZXMpOgorICAgICAg
ICBsaW5lcyA9IFtdCisgICAgICAgIGxpbmVzLmFwcGVuZCgndGVtcGxhdGU8PicpCisgICAgICAg
IGxpbmVzLmFwcGVuZCgnaW5saW5lICVzIGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcm
IHZhbHVlKScgJSBvYmpjX2VudW1fbmFtZSkKKyAgICAgICAgbGluZXMuYXBwZW5kKCd7JykKKyAg
ICAgICAgZm9yIGVudW1fdmFsdWUgaW4gZW51bV92YWx1ZXM6CisgICAgICAgICAgICBsaW5lcy5h
cHBlbmQoJyAgICBpZiAodmFsdWUgPT0gIiVzIiknICUgZW51bV92YWx1ZSkKKyAgICAgICAgICAg
IGxpbmVzLmFwcGVuZCgnICAgICAgICByZXR1cm4gJXMlczsnICUgKG9iamNfZW51bV9uYW1lLCBH
ZW5lcmF0b3Iuc3R5bGl6ZWRfbmFtZV9mb3JfZW51bV92YWx1ZShlbnVtX3ZhbHVlKSkpCisgICAg
ICAgIGxpbmVzLmFwcGVuZCgnICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOycpCisgICAgICAgIGxp
bmVzLmFwcGVuZCgnICAgIHJldHVybiAlcyVzOycgJSAob2JqY19lbnVtX25hbWUsIEdlbmVyYXRv
ci5zdHlsaXplZF9uYW1lX2Zvcl9lbnVtX3ZhbHVlKGVudW1fdmFsdWVzWzBdKSkpCisgICAgICAg
IGxpbmVzLmFwcGVuZCgnfScpCisgICAgICAgIHJldHVybiAnXG4nLmpvaW4obGluZXMpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9n
ZW5lcmF0ZV9vYmpjX3Byb3RvY29sX3R5cGVzX2ltcGxlbWVudGF0aW9uLnB5IGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfb2JqY19wcm90
b2NvbF90eXBlc19pbXBsZW1lbnRhdGlvbi5weQppbmRleCBlYWE1NTA2NTY5NDA4ZmM5Y2U5MTM5
NDdkYTBiMzdhMmIxM2RiYmRlLi5iOGE0NWUyNDdhYjFhNWEyZjUwZmE0MzcxZjY0Njk5MDk5ZWYw
NDU1IDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMv
Y29kZWdlbi9nZW5lcmF0ZV9vYmpjX3Byb3RvY29sX3R5cGVzX2ltcGxlbWVudGF0aW9uLnB5Cisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVy
YXRlX29iamNfcHJvdG9jb2xfdHlwZXNfaW1wbGVtZW50YXRpb24ucHkKQEAgLTU1LDcgKzU1LDcg
QEAgY2xhc3MgT2JqQ1Byb3RvY29sVHlwZXNJbXBsZW1lbnRhdGlvbkdlbmVyYXRvcihPYmpDR2Vu
ZXJhdG9yKToKIAogICAgIGRlZiBnZW5lcmF0ZV9vdXRwdXQoc2VsZik6CiAgICAgICAgIHNlY29u
ZGFyeV9oZWFkZXJzID0gWwotICAgICAgICAgICAgJyIlc0VudW1Db252ZXJzaW9uSGVscGVycy5o
IicgJSBzZWxmLnByb3RvY29sX25hbWUoKSwKKyAgICAgICAgICAgICciJXNUeXBlQ29udmVyc2lv
bnMuaCInICUgc2VsZi5wcm90b2NvbF9uYW1lKCksCiAgICAgICAgICAgICBHZW5lcmF0b3Iuc3Ry
aW5nX2Zvcl9maWxlX2luY2x1ZGUoJyVzSlNPTk9iamVjdFByaXZhdGUuaCcgJSBPYmpDR2VuZXJh
dG9yLk9CSkNfU1RBVElDX1BSRUZJWCwgRnJhbWV3b3Jrcy5XZWJJbnNwZWN0b3IsIHNlbGYubW9k
ZWwoKS5mcmFtZXdvcmspLAogICAgICAgICAgICAgJzxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JW
YWx1ZXMuaD4nLAogICAgICAgICAgICAgJzx3dGYvQXNzZXJ0aW9ucy5oPicsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9vYmpjX2dl
bmVyYXRvcl90ZW1wbGF0ZXMucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Nj
cmlwdHMvY29kZWdlbi9vYmpjX2dlbmVyYXRvcl90ZW1wbGF0ZXMucHkKaW5kZXggZjhkMjFjMDYw
Y2E1NmNkYmZhNTVlMjA4OTI2YzA1MmQ5MTc3NjcyMS4uODBmNWNiYzM0MTdjYWJkYjEzNmRiOTll
YjM5M2M1ZDhiOWM0YjUxNCAxMDA3NTUKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9zY3JpcHRzL2NvZGVnZW4vb2JqY19nZW5lcmF0b3JfdGVtcGxhdGVzLnB5CisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL29iamNfZ2VuZXJh
dG9yX3RlbXBsYXRlcy5weQpAQCAtMzgsMTIgKzM4LDEyIEBAICR7aW5jbHVkZXN9CiAgICAgSGVh
ZGVyUG9zdGx1ZGUgPSAoCiAgICAgIiIiIiIiKQogCi0gICAgQ29udmVyc2lvbkhlbHBlcnNQcmVs
dWRlID0gKAorICAgIFR5cGVDb252ZXJzaW9uc0hlYWRlclByZWx1ZGUgPSAoCiAgICAgIiIiJHtp
bmNsdWRlc30KIAogbmFtZXNwYWNlIEluc3BlY3RvciB7IiIiKQogCi0gICAgQ29udmVyc2lvbkhl
bHBlcnNQb3N0bHVkZSA9ICgKKyAgICBUeXBlQ29udmVyc2lvbnNIZWFkZXJQb3N0bHVkZSA9ICgK
ICAgICAiIiJ9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKICIiIikKIApAQCAtNTMsNyArNTMsNyBA
QCBuYW1lc3BhY2UgSW5zcGVjdG9yIHsiIiIpCiAgICAgR2VuZXJpY0hlYWRlclBvc3RsdWRlID0g
KAogICAgICIiIiIiIikKIAotICAgIENvbnZlcnNpb25IZWxwZXJzU3RhbmRhcmQgPSAoCisgICAg
VHlwZUNvbnZlcnNpb25zSGVhZGVyU3RhbmRhcmQgPSAoCiAgICAgIiIidGVtcGxhdGU8dHlwZW5h
bWUgT2JqQ0VudW1UeXBlPgogT2JqQ0VudW1UeXBlIGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBT
dHJpbmcmIHZhbHVlKTsiIiIpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3Ivc2NyaXB0cy9nZW5lcmF0ZS1pbnNwZWN0b3ItcHJvdG9jb2wtYmluZGluZ3MucHkg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvZ2VuZXJhdGUtaW5zcGVj
dG9yLXByb3RvY29sLWJpbmRpbmdzLnB5CmluZGV4IGU4ZDQyNGQxMmRiMjAxYzAwMjhlNDUyZDEx
YzI2ZmQ5OTE1Zjk0N2EuLjM1YTNiNmFlZmQ5ZDhmNTRjZjdlMTllOWRiOTc4Y2NlOTVmMWI2Mzkg
MTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9nZW5l
cmF0ZS1pbnNwZWN0b3ItcHJvdG9jb2wtYmluZGluZ3MucHkKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2dlbmVyYXRlLWluc3BlY3Rvci1wcm90b2NvbC1iaW5k
aW5ncy5weQpAQCAtNjgsMTAgKzY4LDEwIEBAIGV4Y2VwdCBJbXBvcnRFcnJvciwgZToKICAgICBm
cm9tIGdlbmVyYXRlX29iamNfYmFja2VuZF9kaXNwYXRjaGVyX2ltcGxlbWVudGF0aW9uIGltcG9y
dCAqCiAgICAgZnJvbSBnZW5lcmF0ZV9vYmpjX2NvbmZpZ3VyYXRpb25faGVhZGVyIGltcG9ydCAq
CiAgICAgZnJvbSBnZW5lcmF0ZV9vYmpjX2NvbmZpZ3VyYXRpb25faW1wbGVtZW50YXRpb24gaW1w
b3J0ICoKLSAgICBmcm9tIGdlbmVyYXRlX29iamNfY29udmVyc2lvbl9oZWxwZXJzIGltcG9ydCAq
CiAgICAgZnJvbSBnZW5lcmF0ZV9vYmpjX2Zyb250ZW5kX2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRp
b24gaW1wb3J0ICoKICAgICBmcm9tIGdlbmVyYXRlX29iamNfaGVhZGVyIGltcG9ydCAqCiAgICAg
ZnJvbSBnZW5lcmF0ZV9vYmpjX2ludGVybmFsX2hlYWRlciBpbXBvcnQgKgorICAgIGZyb20gZ2Vu
ZXJhdGVfb2JqY19wcm90b2NvbF90eXBlX2NvbnZlcnNpb25zX2hlYWRlciBpbXBvcnQgKgogICAg
IGZyb20gZ2VuZXJhdGVfb2JqY19wcm90b2NvbF90eXBlc19pbXBsZW1lbnRhdGlvbiBpbXBvcnQg
KgogCiAKQEAgLTE0NSwxMCArMTQ1LDEwIEBAIGRlZiBnZW5lcmF0ZV9mcm9tX3NwZWNpZmljYXRp
b24ocHJpbWFyeV9zcGVjaWZpY2F0aW9uX2ZpbGVwYXRoPU5vbmUsCiAgICAgICAgIGdlbmVyYXRv
cnMuYXBwZW5kKE9iakNCYWNrZW5kRGlzcGF0Y2hlckltcGxlbWVudGF0aW9uR2VuZXJhdG9yKHBy
b3RvY29sLCBwcmltYXJ5X3NwZWNpZmljYXRpb25fZmlsZXBhdGgpKQogICAgICAgICBnZW5lcmF0
b3JzLmFwcGVuZChPYmpDQ29uZmlndXJhdGlvbkhlYWRlckdlbmVyYXRvcihwcm90b2NvbCwgcHJp
bWFyeV9zcGVjaWZpY2F0aW9uX2ZpbGVwYXRoKSkKICAgICAgICAgZ2VuZXJhdG9ycy5hcHBlbmQo
T2JqQ0NvbmZpZ3VyYXRpb25JbXBsZW1lbnRhdGlvbkdlbmVyYXRvcihwcm90b2NvbCwgcHJpbWFy
eV9zcGVjaWZpY2F0aW9uX2ZpbGVwYXRoKSkKLSAgICAgICAgZ2VuZXJhdG9ycy5hcHBlbmQoT2Jq
Q0NvbnZlcnNpb25IZWxwZXJzR2VuZXJhdG9yKHByb3RvY29sLCBwcmltYXJ5X3NwZWNpZmljYXRp
b25fZmlsZXBhdGgpKQogICAgICAgICBnZW5lcmF0b3JzLmFwcGVuZChPYmpDRnJvbnRlbmREaXNw
YXRjaGVySW1wbGVtZW50YXRpb25HZW5lcmF0b3IocHJvdG9jb2wsIHByaW1hcnlfc3BlY2lmaWNh
dGlvbl9maWxlcGF0aCkpCiAgICAgICAgIGdlbmVyYXRvcnMuYXBwZW5kKE9iakNIZWFkZXJHZW5l
cmF0b3IocHJvdG9jb2wsIHByaW1hcnlfc3BlY2lmaWNhdGlvbl9maWxlcGF0aCkpCiAgICAgICAg
IGdlbmVyYXRvcnMuYXBwZW5kKE9iakNJbnRlcm5hbEhlYWRlckdlbmVyYXRvcihwcm90b2NvbCwg
cHJpbWFyeV9zcGVjaWZpY2F0aW9uX2ZpbGVwYXRoKSkKKyAgICAgICAgZ2VuZXJhdG9ycy5hcHBl
bmQoT2JqQ1Byb3RvY29sVHlwZUNvbnZlcnNpb25zSGVhZGVyR2VuZXJhdG9yKHByb3RvY29sLCBw
cmltYXJ5X3NwZWNpZmljYXRpb25fZmlsZXBhdGgpKQogICAgICAgICBnZW5lcmF0b3JzLmFwcGVu
ZChPYmpDUHJvdG9jb2xUeXBlc0ltcGxlbWVudGF0aW9uR2VuZXJhdG9yKHByb3RvY29sLCBwcmlt
YXJ5X3NwZWNpZmljYXRpb25fZmlsZXBhdGgpKQogCiAgICAgZWxpZiBwcm90b2NvbC5mcmFtZXdv
cmsgaXMgRnJhbWV3b3Jrcy5KYXZhU2NyaXB0Q29yZToKQEAgLTE2OCw5ICsxNjgsOCBAQCBkZWYg
Z2VuZXJhdGVfZnJvbV9zcGVjaWZpY2F0aW9uKHByaW1hcnlfc3BlY2lmaWNhdGlvbl9maWxlcGF0
aD1Ob25lLAogICAgICAgICBnZW5lcmF0b3JzLmFwcGVuZChDcHBQcm90b2NvbFR5cGVzSW1wbGVt
ZW50YXRpb25HZW5lcmF0b3IocHJvdG9jb2wsIHByaW1hcnlfc3BlY2lmaWNhdGlvbl9maWxlcGF0
aCkpCiAKICAgICBlbGlmIHByb3RvY29sLmZyYW1ld29yayBpcyBGcmFtZXdvcmtzLldlYktpdCBh
bmQgZ2VuZXJhdGVfZnJvbnRlbmQ6Ci0gICAgICAgICMgRklYTUUgPHJkYXI6Ly9wcm9ibGVtLzIz
NDY2OTI1PjogVGhpcyBsaXN0IG9mIGdlbmVyYXRvcnMgZm9yIHRoZSBmcm9udGVuZCBpcyBhIHBs
YWNlaG9sZGVyLgotICAgICAgICBnZW5lcmF0b3JzLmFwcGVuZChPYmpDQ29udmVyc2lvbkhlbHBl
cnNHZW5lcmF0b3IocHJvdG9jb2wsIHByaW1hcnlfc3BlY2lmaWNhdGlvbl9maWxlcGF0aCkpCiAg
ICAgICAgIGdlbmVyYXRvcnMuYXBwZW5kKE9iakNIZWFkZXJHZW5lcmF0b3IocHJvdG9jb2wsIHBy
aW1hcnlfc3BlY2lmaWNhdGlvbl9maWxlcGF0aCkpCisgICAgICAgIGdlbmVyYXRvcnMuYXBwZW5k
KE9iakNQcm90b2NvbFR5cGVDb252ZXJzaW9uc0hlYWRlckdlbmVyYXRvcihwcm90b2NvbCwgcHJp
bWFyeV9zcGVjaWZpY2F0aW9uX2ZpbGVwYXRoKSkKICAgICAgICAgZ2VuZXJhdG9ycy5hcHBlbmQo
T2JqQ1Byb3RvY29sVHlwZXNJbXBsZW1lbnRhdGlvbkdlbmVyYXRvcihwcm90b2NvbCwgcHJpbWFy
eV9zcGVjaWZpY2F0aW9uX2ZpbGVwYXRoKSkKIAogICAgIGVsaWYgcHJvdG9jb2wuZnJhbWV3b3Jr
IGlzIEZyYW1ld29ya3MuV2ViSW5zcGVjdG9yOgpAQCAtMTc4LDEwICsxNzcsMTAgQEAgZGVmIGdl
bmVyYXRlX2Zyb21fc3BlY2lmaWNhdGlvbihwcmltYXJ5X3NwZWNpZmljYXRpb25fZmlsZXBhdGg9
Tm9uZSwKICAgICAgICAgZ2VuZXJhdG9ycy5hcHBlbmQoT2JqQ0JhY2tlbmREaXNwYXRjaGVySW1w
bGVtZW50YXRpb25HZW5lcmF0b3IocHJvdG9jb2wsIHByaW1hcnlfc3BlY2lmaWNhdGlvbl9maWxl
cGF0aCkpCiAgICAgICAgIGdlbmVyYXRvcnMuYXBwZW5kKE9iakNDb25maWd1cmF0aW9uSGVhZGVy
R2VuZXJhdG9yKHByb3RvY29sLCBwcmltYXJ5X3NwZWNpZmljYXRpb25fZmlsZXBhdGgpKQogICAg
ICAgICBnZW5lcmF0b3JzLmFwcGVuZChPYmpDQ29uZmlndXJhdGlvbkltcGxlbWVudGF0aW9uR2Vu
ZXJhdG9yKHByb3RvY29sLCBwcmltYXJ5X3NwZWNpZmljYXRpb25fZmlsZXBhdGgpKQotICAgICAg
ICBnZW5lcmF0b3JzLmFwcGVuZChPYmpDQ29udmVyc2lvbkhlbHBlcnNHZW5lcmF0b3IocHJvdG9j
b2wsIHByaW1hcnlfc3BlY2lmaWNhdGlvbl9maWxlcGF0aCkpCiAgICAgICAgIGdlbmVyYXRvcnMu
YXBwZW5kKE9iakNGcm9udGVuZERpc3BhdGNoZXJJbXBsZW1lbnRhdGlvbkdlbmVyYXRvcihwcm90
b2NvbCwgcHJpbWFyeV9zcGVjaWZpY2F0aW9uX2ZpbGVwYXRoKSkKICAgICAgICAgZ2VuZXJhdG9y
cy5hcHBlbmQoT2JqQ0hlYWRlckdlbmVyYXRvcihwcm90b2NvbCwgcHJpbWFyeV9zcGVjaWZpY2F0
aW9uX2ZpbGVwYXRoKSkKICAgICAgICAgZ2VuZXJhdG9ycy5hcHBlbmQoT2JqQ0ludGVybmFsSGVh
ZGVyR2VuZXJhdG9yKHByb3RvY29sLCBwcmltYXJ5X3NwZWNpZmljYXRpb25fZmlsZXBhdGgpKQor
ICAgICAgICBnZW5lcmF0b3JzLmFwcGVuZChPYmpDUHJvdG9jb2xUeXBlQ29udmVyc2lvbnNIZWFk
ZXJHZW5lcmF0b3IocHJvdG9jb2wsIHByaW1hcnlfc3BlY2lmaWNhdGlvbl9maWxlcGF0aCkpCiAg
ICAgICAgIGdlbmVyYXRvcnMuYXBwZW5kKE9iakNQcm90b2NvbFR5cGVzSW1wbGVtZW50YXRpb25H
ZW5lcmF0b3IocHJvdG9jb2wsIHByaW1hcnlfc3BlY2lmaWNhdGlvbl9maWxlcGF0aCkpCiAKICAg
ICBzaW5nbGVfb3V0cHV0X2ZpbGVfY29udGVudHMgPSBbXQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2NvbW1hbmRzLXdp
dGgtYXN5bmMtYXR0cmlidXRlLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtYXN5bmMtYXR0cmli
dXRlLmpzb24tcmVzdWx0CmluZGV4IDM2ZWQ0ODkzNGJhNWI2ODhmYzczMTM4NDc0NmI2NzVmMmU3
ZWU4MzIuLmIzYzc5ZWI5NjRlZTIzYTZhNjhlN2E3YzYwYjc4ZTI0OTc5OWUyNTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3Rl
ZC9jb21tYW5kcy13aXRoLWFzeW5jLWF0dHJpYnV0ZS5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvY29tbWFuZHMt
d2l0aC1hc3luYy1hdHRyaWJ1dGUuanNvbi1yZXN1bHQKQEAgLTEwMTksNyArMTAxOSw3IEBAIF9f
YXR0cmlidXRlX18oKHZpc2liaWxpdHkgKCJkZWZhdWx0IikpKQogI2ltcG9ydCAiVGVzdFByb3Rv
Y29sQmFja2VuZERpc3BhdGNoZXJzLmgiCiAKICNpbmNsdWRlICJUZXN0UHJvdG9jb2xJbnRlcm5h
bC5oIgotI2luY2x1ZGUgIlRlc3RQcm90b2NvbEVudW1Db252ZXJzaW9uSGVscGVycy5oIgorI2lu
Y2x1ZGUgIlRlc3RQcm90b2NvbFR5cGVDb252ZXJzaW9ucy5oIgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0luc3BlY3RvclZhbHVlcy5oPgogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKQEAgLTEx
ODUsNyArMTE4NSwxODcgQEAgdm9pZCBPYmpDSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0
Y2hlcjo6ZXhlY3V0ZVNRTEFzeW5jKGxvbmcgcmVxdWVzdElkLCBpbnQKIAogIyMjIEVuZCBGaWxl
OiBUZXN0UHJvdG9jb2xCYWNrZW5kRGlzcGF0Y2hlcnMubW0KIAotIyMjIEJlZ2luIEZpbGU6IFRl
c3RQcm90b2NvbEVudW1Db252ZXJzaW9uSGVscGVycy5oCisjIyMgQmVnaW4gRmlsZTogVGVzdFBy
b3RvY29sRXZlbnREaXNwYXRjaGVycy5tbQorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNCBV
bml2ZXJzaXR5IG9mIFdhc2hpbmd0b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
Ky8vIERPIE5PVCBFRElUIFRISVMgRklMRS4gSXQgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQg
ZnJvbSBjb21tYW5kcy13aXRoLWFzeW5jLWF0dHJpYnV0ZS5qc29uCisvLyBieSB0aGUgc2NyaXB0
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvZ2VuZXJhdGUtaW5zcGVj
dG9yLXByb3RvY29sLWJpbmRpbmdzLnB5CisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAi
VGVzdFByb3RvY29sSW50ZXJuYWwuaCIKKworI2ltcG9ydCAiVGVzdFByb3RvY29sVHlwZUNvbnZl
cnNpb25zLmgiCisjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JWYWx1ZXMuaD4KKwor
dXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKKworCisKKworIyMjIEVuZCBGaWxlOiBUZXN0UHJv
dG9jb2xFdmVudERpc3BhdGNoZXJzLm1tCisKKyMjIyBCZWdpbiBGaWxlOiBUZXN0UHJvdG9jb2wu
aAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNCBVbml2ZXJzaXR5IG9mIFdhc2hpbmd0b24u
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8vIERPIE5PVCBFRElUIFRISVMgRklM
RS4gSXQgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSBjb21tYW5kcy13aXRoLWFzeW5j
LWF0dHJpYnV0ZS5qc29uCisvLyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3NjcmlwdHMvZ2VuZXJhdGUtaW5zcGVjdG9yLXByb3RvY29sLWJpbmRpbmdzLnB5
CisKKyNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgorCisjaW1wb3J0IDxXZWJJbnNw
ZWN0b3IvUldJUHJvdG9jb2xKU09OT2JqZWN0Lmg+CisKKworQGNsYXNzIFRlc3RQcm90b2NvbERh
dGFiYXNlRXJyb3I7CisKKwordHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgVGVzdFByb3RvY29s
RGF0YWJhc2VQcmltYXJ5Q29sb3JzKSB7CisgICAgVGVzdFByb3RvY29sRGF0YWJhc2VQcmltYXJ5
Q29sb3JzUmVkLAorICAgIFRlc3RQcm90b2NvbERhdGFiYXNlUHJpbWFyeUNvbG9yc0dyZWVuLAor
ICAgIFRlc3RQcm90b2NvbERhdGFiYXNlUHJpbWFyeUNvbG9yc0JsdWUsCit9OworCit0eXBlZGVm
IE5TX0VOVU0oTlNJbnRlZ2VyLCBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVTUUxTeW5jT3B0
aW9uYWxSZXR1cm5WYWx1ZXNQcmludENvbG9yKSB7CisgICAgVGVzdFByb3RvY29sRGF0YWJhc2VF
eGVjdXRlU1FMU3luY09wdGlvbmFsUmV0dXJuVmFsdWVzUHJpbnRDb2xvckN5YW4sCisgICAgVGVz
dFByb3RvY29sRGF0YWJhc2VFeGVjdXRlU1FMU3luY09wdGlvbmFsUmV0dXJuVmFsdWVzUHJpbnRD
b2xvck1hZ2VudGEsCisgICAgVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlU1FMU3luY09wdGlv
bmFsUmV0dXJuVmFsdWVzUHJpbnRDb2xvclllbGxvdywKKyAgICBUZXN0UHJvdG9jb2xEYXRhYmFz
ZUV4ZWN1dGVTUUxTeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXNQcmludENvbG9yQmxhY2ssCit9Owor
Cit0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVT
UUxBc3luY09wdGlvbmFsUmV0dXJuVmFsdWVzUHJpbnRDb2xvcikgeworICAgIFRlc3RQcm90b2Nv
bERhdGFiYXNlRXhlY3V0ZVNRTEFzeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXNQcmludENvbG9yQ3lh
biwKKyAgICBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVTUUxBc3luY09wdGlvbmFsUmV0dXJu
VmFsdWVzUHJpbnRDb2xvck1hZ2VudGEsCisgICAgVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRl
U1FMQXN5bmNPcHRpb25hbFJldHVyblZhbHVlc1ByaW50Q29sb3JZZWxsb3csCisgICAgVGVzdFBy
b3RvY29sRGF0YWJhc2VFeGVjdXRlU1FMQXN5bmNPcHRpb25hbFJldHVyblZhbHVlc1ByaW50Q29s
b3JCbGFjaywKK307CisKK3R5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIFRlc3RQcm90b2NvbERh
dGFiYXNlRXhlY3V0ZVNRTFN5bmNQcmludENvbG9yKSB7CisgICAgVGVzdFByb3RvY29sRGF0YWJh
c2VFeGVjdXRlU1FMU3luY1ByaW50Q29sb3JDeWFuLAorICAgIFRlc3RQcm90b2NvbERhdGFiYXNl
RXhlY3V0ZVNRTFN5bmNQcmludENvbG9yTWFnZW50YSwKKyAgICBUZXN0UHJvdG9jb2xEYXRhYmFz
ZUV4ZWN1dGVTUUxTeW5jUHJpbnRDb2xvclllbGxvdywKKyAgICBUZXN0UHJvdG9jb2xEYXRhYmFz
ZUV4ZWN1dGVTUUxTeW5jUHJpbnRDb2xvckJsYWNrLAorfTsKKwordHlwZWRlZiBOU19FTlVNKE5T
SW50ZWdlciwgVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlU1FMQXN5bmNQcmludENvbG9yKSB7
CisgICAgVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlU1FMQXN5bmNQcmludENvbG9yQ3lhbiwK
KyAgICBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVTUUxBc3luY1ByaW50Q29sb3JNYWdlbnRh
LAorICAgIFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZVNRTEFzeW5jUHJpbnRDb2xvclllbGxv
dywKKyAgICBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVTUUxBc3luY1ByaW50Q29sb3JCbGFj
aywKK307CisKKworX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSAoImRlZmF1bHQiKSkpCitAaW50
ZXJmYWNlIFRlc3RQcm90b2NvbERhdGFiYXNlRXJyb3IgOiBSV0lQcm90b2NvbEpTT05PYmplY3QK
Ky0gKGluc3RhbmNldHlwZSlpbml0V2l0aFBheWxvYWQ6KE5TRGljdGlvbmFyeTxOU1N0cmluZyAq
LCBpZD4gKilwYXlsb2FkOworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoTWVzc2FnZTooTlNTdHJp
bmcgKiltZXNzYWdlIGNvZGU6KGludCljb2RlOworLyogcmVxdWlyZWQgKi8gQHByb3BlcnR5IChu
b25hdG9taWMsIGNvcHkpIE5TU3RyaW5nICptZXNzYWdlOworLyogcmVxdWlyZWQgKi8gQHByb3Bl
cnR5IChub25hdG9taWMsIGFzc2lnbikgaW50IGNvZGU7CitAZW5kCisKK0Bwcm90b2NvbCBUZXN0
UHJvdG9jb2xEYXRhYmFzZURvbWFpbkhhbmRsZXIgPE5TT2JqZWN0PgorQHJlcXVpcmVkCistICh2
b2lkKWV4ZWN1dGVTUUxTeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXNXaXRoRXJyb3JDYWxsYmFjazoo
dm9pZCheKShOU1N0cmluZyAqZXJyb3IpKWVycm9yQ2FsbGJhY2sgc3VjY2Vzc0NhbGxiYWNrOih2
b2lkKF4pKE5TQXJyYXkvKjxOU1N0cmluZz4qLyAqKmNvbHVtbk5hbWVzLCBOU1N0cmluZyAqKm5v
dGVzLCBkb3VibGUgKnRpbWVzdGFtcCwgUldJUHJvdG9jb2xKU09OT2JqZWN0ICoqdmFsdWVzLCBS
V0lQcm90b2NvbEpTT05PYmplY3QgKipwYXlsb2FkLCBpbnQgKmRhdGFiYXNlSWQsIFRlc3RQcm90
b2NvbERhdGFiYXNlRXJyb3IgKipzcWxFcnJvciwgVGVzdFByb3RvY29sRGF0YWJhc2VQcmltYXJ5
Q29sb3JzICpzY3JlZW5Db2xvciwgTlNBcnJheS8qPE5TU3RyaW5nPiovICoqYWx0ZXJuYXRlQ29s
b3JzLCBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVTUUxTeW5jT3B0aW9uYWxSZXR1cm5WYWx1
ZXNQcmludENvbG9yICpwcmludENvbG9yKSlzdWNjZXNzQ2FsbGJhY2sgZGF0YWJhc2VJZDooaW50
KWRhdGFiYXNlSWQgcXVlcnk6KE5TU3RyaW5nICopcXVlcnk7CistICh2b2lkKWV4ZWN1dGVTUUxB
c3luY09wdGlvbmFsUmV0dXJuVmFsdWVzV2l0aEVycm9yQ2FsbGJhY2s6KHZvaWQoXikoTlNTdHJp
bmcgKmVycm9yKSllcnJvckNhbGxiYWNrIHN1Y2Nlc3NDYWxsYmFjazoodm9pZCheKShOU0FycmF5
Lyo8TlNTdHJpbmc+Ki8gKipjb2x1bW5OYW1lcywgTlNTdHJpbmcgKipub3RlcywgZG91YmxlICp0
aW1lc3RhbXAsIFJXSVByb3RvY29sSlNPTk9iamVjdCAqKnZhbHVlcywgUldJUHJvdG9jb2xKU09O
T2JqZWN0ICoqcGF5bG9hZCwgaW50ICpkYXRhYmFzZUlkLCBUZXN0UHJvdG9jb2xEYXRhYmFzZUVy
cm9yICoqc3FsRXJyb3IsIFRlc3RQcm90b2NvbERhdGFiYXNlUHJpbWFyeUNvbG9ycyAqc2NyZWVu
Q29sb3IsIE5TQXJyYXkvKjxOU1N0cmluZz4qLyAqKmFsdGVybmF0ZUNvbG9ycywgVGVzdFByb3Rv
Y29sRGF0YWJhc2VFeGVjdXRlU1FMQXN5bmNPcHRpb25hbFJldHVyblZhbHVlc1ByaW50Q29sb3Ig
KnByaW50Q29sb3IpKXN1Y2Nlc3NDYWxsYmFjayBkYXRhYmFzZUlkOihpbnQpZGF0YWJhc2VJZCBx
dWVyeTooTlNTdHJpbmcgKilxdWVyeTsKKy0gKHZvaWQpZXhlY3V0ZVNRTFN5bmNXaXRoRXJyb3JD
YWxsYmFjazoodm9pZCheKShOU1N0cmluZyAqZXJyb3IpKWVycm9yQ2FsbGJhY2sgc3VjY2Vzc0Nh
bGxiYWNrOih2b2lkKF4pKE5TQXJyYXkvKjxOU1N0cmluZz4qLyAqY29sdW1uTmFtZXMsIE5TU3Ry
aW5nICpub3RlcywgZG91YmxlIHRpbWVzdGFtcCwgUldJUHJvdG9jb2xKU09OT2JqZWN0ICp2YWx1
ZXMsIFJXSVByb3RvY29sSlNPTk9iamVjdCAqcGF5bG9hZCwgaW50IGRhdGFiYXNlSWQsIFRlc3RQ
cm90b2NvbERhdGFiYXNlRXJyb3IgKnNxbEVycm9yLCBOU0FycmF5Lyo8TlNTdHJpbmc+Ki8gKmFs
dGVybmF0ZUNvbG9ycywgVGVzdFByb3RvY29sRGF0YWJhc2VQcmltYXJ5Q29sb3JzIHNjcmVlbkNv
bG9yLCBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVTUUxTeW5jUHJpbnRDb2xvciBwcmludENv
bG9yKSlzdWNjZXNzQ2FsbGJhY2sgZGF0YWJhc2VJZDooaW50KWRhdGFiYXNlSWQgcXVlcnk6KE5T
U3RyaW5nICopcXVlcnk7CistICh2b2lkKWV4ZWN1dGVTUUxBc3luY1dpdGhFcnJvckNhbGxiYWNr
Oih2b2lkKF4pKE5TU3RyaW5nICplcnJvcikpZXJyb3JDYWxsYmFjayBzdWNjZXNzQ2FsbGJhY2s6
KHZvaWQoXikoTlNBcnJheS8qPE5TU3RyaW5nPiovICpjb2x1bW5OYW1lcywgTlNTdHJpbmcgKm5v
dGVzLCBkb3VibGUgdGltZXN0YW1wLCBSV0lQcm90b2NvbEpTT05PYmplY3QgKnZhbHVlcywgUldJ
UHJvdG9jb2xKU09OT2JqZWN0ICpwYXlsb2FkLCBpbnQgZGF0YWJhc2VJZCwgVGVzdFByb3RvY29s
RGF0YWJhc2VFcnJvciAqc3FsRXJyb3IsIFRlc3RQcm90b2NvbERhdGFiYXNlUHJpbWFyeUNvbG9y
cyBzY3JlZW5Db2xvciwgTlNBcnJheS8qPE5TU3RyaW5nPiovICphbHRlcm5hdGVDb2xvcnMsIFRl
c3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZVNRTEFzeW5jUHJpbnRDb2xvciBwcmludENvbG9yKSlz
dWNjZXNzQ2FsbGJhY2sgZGF0YWJhc2VJZDooaW50KWRhdGFiYXNlSWQgcXVlcnk6KE5TU3RyaW5n
ICopcXVlcnk7CitAZW5kCisKKworCisKKyMjIyBFbmQgRmlsZTogVGVzdFByb3RvY29sLmgKKwor
IyMjIEJlZ2luIEZpbGU6IFRlc3RQcm90b2NvbEludGVybmFsLmgKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTQgVW5pdmVyc2l0eSBvZiBXYXNoaW5ndG9uLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisvLyBETyBOT1QgRURJVCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2Fs
bHkgZ2VuZXJhdGVkIGZyb20gY29tbWFuZHMtd2l0aC1hc3luYy1hdHRyaWJ1dGUuanNvbgorLy8g
YnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2dl
bmVyYXRlLWluc3BlY3Rvci1wcm90b2NvbC1iaW5kaW5ncy5weQorCisjaW1wb3J0ICJUZXN0UHJv
dG9jb2wuaCIKKyNpbXBvcnQgIlRlc3RQcm90b2NvbEpTT05PYmplY3RQcml2YXRlLmgiCisjaW1w
b3J0IDxKYXZhU2NyaXB0Q29yZS9BdWdtZW50YWJsZUluc3BlY3RvckNvbnRyb2xsZXIuaD4KKyNp
bXBvcnQgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvclZhbHVlcy5oPgorCisKKworCisjIyMgRW5k
IEZpbGU6IFRlc3RQcm90b2NvbEludGVybmFsLmgKKworIyMjIEJlZ2luIEZpbGU6IFRlc3RQcm90
b2NvbFR5cGVDb252ZXJzaW9ucy5oCiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpAQCAtMTIxNiw3ICsxMzk2LDcgQEAgdm9pZCBP
YmpDSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6ZXhlY3V0ZVNRTEFzeW5jKGxv
bmcgcmVxdWVzdElkLCBpbnQKIC8vIERPIE5PVCBFRElUIFRISVMgRklMRS4gSXQgaXMgYXV0b21h
dGljYWxseSBnZW5lcmF0ZWQgZnJvbSBjb21tYW5kcy13aXRoLWFzeW5jLWF0dHJpYnV0ZS5qc29u
CiAvLyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Njcmlw
dHMvZ2VuZXJhdGUtaW5zcGVjdG9yLXByb3RvY29sLWJpbmRpbmdzLnB5CiAKLSNpbXBvcnQgIlJX
SVByb3RvY29sQXJyYXlDb252ZXJzaW9uSGVscGVycy5oIgorI2ltcG9ydCAiUldJUHJvdG9jb2xB
cnJheUNvbnZlcnNpb25zLmgiCiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCkBAIC0xMzY3LDE4
NyArMTU0Nyw3IEBAIGlubGluZSBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVTUUxBc3luY1By
aW50Q29sb3IgZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0CiAKIH0gLy8gbmFtZXNwYWNlIElu
c3BlY3RvcgogCi0jIyMgRW5kIEZpbGU6IFRlc3RQcm90b2NvbEVudW1Db252ZXJzaW9uSGVscGVy
cy5oCi0KLSMjIyBCZWdpbiBGaWxlOiBUZXN0UHJvdG9jb2xFdmVudERpc3BhdGNoZXJzLm1tCi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICogQ29weXJpZ2h0IChDKSAyMDE0IFVuaXZlcnNpdHkgb2YgV2FzaGluZ3Rvbi4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotLy8gRE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJ
dCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIGNvbW1hbmRzLXdpdGgtYXN5bmMtYXR0
cmlidXRlLmpzb24KLS8vIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3Ivc2NyaXB0cy9nZW5lcmF0ZS1pbnNwZWN0b3ItcHJvdG9jb2wtYmluZGluZ3MucHkKLQot
I2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJUZXN0UHJvdG9jb2xJbnRlcm5hbC5oIgotCi0j
aW1wb3J0ICJUZXN0UHJvdG9jb2xFbnVtQ29udmVyc2lvbkhlbHBlcnMuaCIKLSNpbXBvcnQgPEph
dmFTY3JpcHRDb3JlL0luc3BlY3RvclZhbHVlcy5oPgotCi11c2luZyBuYW1lc3BhY2UgSW5zcGVj
dG9yOwotCi0KLQotCi0jIyMgRW5kIEZpbGU6IFRlc3RQcm90b2NvbEV2ZW50RGlzcGF0Y2hlcnMu
bW0KLQotIyMjIEJlZ2luIEZpbGU6IFRlc3RQcm90b2NvbC5oCi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0
IChDKSAyMDE0IFVuaXZlcnNpdHkgb2YgV2FzaGluZ3Rvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotLy8gRE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5
IGdlbmVyYXRlZCBmcm9tIGNvbW1hbmRzLXdpdGgtYXN5bmMtYXR0cmlidXRlLmpzb24KLS8vIGJ5
IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9nZW5l
cmF0ZS1pbnNwZWN0b3ItcHJvdG9jb2wtYmluZGluZ3MucHkKLQotI2ltcG9ydCA8Rm91bmRhdGlv
bi9Gb3VuZGF0aW9uLmg+Ci0KLSNpbXBvcnQgPFdlYkluc3BlY3Rvci9SV0lQcm90b2NvbEpTT05P
YmplY3QuaD4KLQotCi1AY2xhc3MgVGVzdFByb3RvY29sRGF0YWJhc2VFcnJvcjsKLQotCi10eXBl
ZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBUZXN0UHJvdG9jb2xEYXRhYmFzZVByaW1hcnlDb2xvcnMp
IHsKLSAgICBUZXN0UHJvdG9jb2xEYXRhYmFzZVByaW1hcnlDb2xvcnNSZWQsCi0gICAgVGVzdFBy
b3RvY29sRGF0YWJhc2VQcmltYXJ5Q29sb3JzR3JlZW4sCi0gICAgVGVzdFByb3RvY29sRGF0YWJh
c2VQcmltYXJ5Q29sb3JzQmx1ZSwKLX07Ci0KLXR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIFRl
c3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZVNRTFN5bmNPcHRpb25hbFJldHVyblZhbHVlc1ByaW50
Q29sb3IpIHsKLSAgICBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVTUUxTeW5jT3B0aW9uYWxS
ZXR1cm5WYWx1ZXNQcmludENvbG9yQ3lhbiwKLSAgICBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1
dGVTUUxTeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXNQcmludENvbG9yTWFnZW50YSwKLSAgICBUZXN0
UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVTUUxTeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXNQcmludENv
bG9yWWVsbG93LAotICAgIFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZVNRTFN5bmNPcHRpb25h
bFJldHVyblZhbHVlc1ByaW50Q29sb3JCbGFjaywKLX07Ci0KLXR5cGVkZWYgTlNfRU5VTShOU0lu
dGVnZXIsIFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZVNRTEFzeW5jT3B0aW9uYWxSZXR1cm5W
YWx1ZXNQcmludENvbG9yKSB7Ci0gICAgVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlU1FMQXN5
bmNPcHRpb25hbFJldHVyblZhbHVlc1ByaW50Q29sb3JDeWFuLAotICAgIFRlc3RQcm90b2NvbERh
dGFiYXNlRXhlY3V0ZVNRTEFzeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXNQcmludENvbG9yTWFnZW50
YSwKLSAgICBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVTUUxBc3luY09wdGlvbmFsUmV0dXJu
VmFsdWVzUHJpbnRDb2xvclllbGxvdywKLSAgICBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVT
UUxBc3luY09wdGlvbmFsUmV0dXJuVmFsdWVzUHJpbnRDb2xvckJsYWNrLAotfTsKLQotdHlwZWRl
ZiBOU19FTlVNKE5TSW50ZWdlciwgVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlU1FMU3luY1By
aW50Q29sb3IpIHsKLSAgICBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVTUUxTeW5jUHJpbnRD
b2xvckN5YW4sCi0gICAgVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlU1FMU3luY1ByaW50Q29s
b3JNYWdlbnRhLAotICAgIFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZVNRTFN5bmNQcmludENv
bG9yWWVsbG93LAotICAgIFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZVNRTFN5bmNQcmludENv
bG9yQmxhY2ssCi19OwotCi10eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBUZXN0UHJvdG9jb2xE
YXRhYmFzZUV4ZWN1dGVTUUxBc3luY1ByaW50Q29sb3IpIHsKLSAgICBUZXN0UHJvdG9jb2xEYXRh
YmFzZUV4ZWN1dGVTUUxBc3luY1ByaW50Q29sb3JDeWFuLAotICAgIFRlc3RQcm90b2NvbERhdGFi
YXNlRXhlY3V0ZVNRTEFzeW5jUHJpbnRDb2xvck1hZ2VudGEsCi0gICAgVGVzdFByb3RvY29sRGF0
YWJhc2VFeGVjdXRlU1FMQXN5bmNQcmludENvbG9yWWVsbG93LAotICAgIFRlc3RQcm90b2NvbERh
dGFiYXNlRXhlY3V0ZVNRTEFzeW5jUHJpbnRDb2xvckJsYWNrLAotfTsKLQotCi1fX2F0dHJpYnV0
ZV9fKCh2aXNpYmlsaXR5ICgiZGVmYXVsdCIpKSkKLUBpbnRlcmZhY2UgVGVzdFByb3RvY29sRGF0
YWJhc2VFcnJvciA6IFJXSVByb3RvY29sSlNPTk9iamVjdAotLSAoaW5zdGFuY2V0eXBlKWluaXRX
aXRoUGF5bG9hZDooTlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIGlkPiAqKXBheWxvYWQ7Ci0tIChp
bnN0YW5jZXR5cGUpaW5pdFdpdGhNZXNzYWdlOihOU1N0cmluZyAqKW1lc3NhZ2UgY29kZTooaW50
KWNvZGU7Ci0vKiByZXF1aXJlZCAqLyBAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgTlNTdHJp
bmcgKm1lc3NhZ2U7Ci0vKiByZXF1aXJlZCAqLyBAcHJvcGVydHkgKG5vbmF0b21pYywgYXNzaWdu
KSBpbnQgY29kZTsKLUBlbmQKLQotQHByb3RvY29sIFRlc3RQcm90b2NvbERhdGFiYXNlRG9tYWlu
SGFuZGxlciA8TlNPYmplY3Q+Ci1AcmVxdWlyZWQKLS0gKHZvaWQpZXhlY3V0ZVNRTFN5bmNPcHRp
b25hbFJldHVyblZhbHVlc1dpdGhFcnJvckNhbGxiYWNrOih2b2lkKF4pKE5TU3RyaW5nICplcnJv
cikpZXJyb3JDYWxsYmFjayBzdWNjZXNzQ2FsbGJhY2s6KHZvaWQoXikoTlNBcnJheS8qPE5TU3Ry
aW5nPiovICoqY29sdW1uTmFtZXMsIE5TU3RyaW5nICoqbm90ZXMsIGRvdWJsZSAqdGltZXN0YW1w
LCBSV0lQcm90b2NvbEpTT05PYmplY3QgKip2YWx1ZXMsIFJXSVByb3RvY29sSlNPTk9iamVjdCAq
KnBheWxvYWQsIGludCAqZGF0YWJhc2VJZCwgVGVzdFByb3RvY29sRGF0YWJhc2VFcnJvciAqKnNx
bEVycm9yLCBUZXN0UHJvdG9jb2xEYXRhYmFzZVByaW1hcnlDb2xvcnMgKnNjcmVlbkNvbG9yLCBO
U0FycmF5Lyo8TlNTdHJpbmc+Ki8gKiphbHRlcm5hdGVDb2xvcnMsIFRlc3RQcm90b2NvbERhdGFi
YXNlRXhlY3V0ZVNRTFN5bmNPcHRpb25hbFJldHVyblZhbHVlc1ByaW50Q29sb3IgKnByaW50Q29s
b3IpKXN1Y2Nlc3NDYWxsYmFjayBkYXRhYmFzZUlkOihpbnQpZGF0YWJhc2VJZCBxdWVyeTooTlNT
dHJpbmcgKilxdWVyeTsKLS0gKHZvaWQpZXhlY3V0ZVNRTEFzeW5jT3B0aW9uYWxSZXR1cm5WYWx1
ZXNXaXRoRXJyb3JDYWxsYmFjazoodm9pZCheKShOU1N0cmluZyAqZXJyb3IpKWVycm9yQ2FsbGJh
Y2sgc3VjY2Vzc0NhbGxiYWNrOih2b2lkKF4pKE5TQXJyYXkvKjxOU1N0cmluZz4qLyAqKmNvbHVt
bk5hbWVzLCBOU1N0cmluZyAqKm5vdGVzLCBkb3VibGUgKnRpbWVzdGFtcCwgUldJUHJvdG9jb2xK
U09OT2JqZWN0ICoqdmFsdWVzLCBSV0lQcm90b2NvbEpTT05PYmplY3QgKipwYXlsb2FkLCBpbnQg
KmRhdGFiYXNlSWQsIFRlc3RQcm90b2NvbERhdGFiYXNlRXJyb3IgKipzcWxFcnJvciwgVGVzdFBy
b3RvY29sRGF0YWJhc2VQcmltYXJ5Q29sb3JzICpzY3JlZW5Db2xvciwgTlNBcnJheS8qPE5TU3Ry
aW5nPiovICoqYWx0ZXJuYXRlQ29sb3JzLCBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVTUUxB
c3luY09wdGlvbmFsUmV0dXJuVmFsdWVzUHJpbnRDb2xvciAqcHJpbnRDb2xvcikpc3VjY2Vzc0Nh
bGxiYWNrIGRhdGFiYXNlSWQ6KGludClkYXRhYmFzZUlkIHF1ZXJ5OihOU1N0cmluZyAqKXF1ZXJ5
OwotLSAodm9pZClleGVjdXRlU1FMU3luY1dpdGhFcnJvckNhbGxiYWNrOih2b2lkKF4pKE5TU3Ry
aW5nICplcnJvcikpZXJyb3JDYWxsYmFjayBzdWNjZXNzQ2FsbGJhY2s6KHZvaWQoXikoTlNBcnJh
eS8qPE5TU3RyaW5nPiovICpjb2x1bW5OYW1lcywgTlNTdHJpbmcgKm5vdGVzLCBkb3VibGUgdGlt
ZXN0YW1wLCBSV0lQcm90b2NvbEpTT05PYmplY3QgKnZhbHVlcywgUldJUHJvdG9jb2xKU09OT2Jq
ZWN0ICpwYXlsb2FkLCBpbnQgZGF0YWJhc2VJZCwgVGVzdFByb3RvY29sRGF0YWJhc2VFcnJvciAq
c3FsRXJyb3IsIE5TQXJyYXkvKjxOU1N0cmluZz4qLyAqYWx0ZXJuYXRlQ29sb3JzLCBUZXN0UHJv
dG9jb2xEYXRhYmFzZVByaW1hcnlDb2xvcnMgc2NyZWVuQ29sb3IsIFRlc3RQcm90b2NvbERhdGFi
YXNlRXhlY3V0ZVNRTFN5bmNQcmludENvbG9yIHByaW50Q29sb3IpKXN1Y2Nlc3NDYWxsYmFjayBk
YXRhYmFzZUlkOihpbnQpZGF0YWJhc2VJZCBxdWVyeTooTlNTdHJpbmcgKilxdWVyeTsKLS0gKHZv
aWQpZXhlY3V0ZVNRTEFzeW5jV2l0aEVycm9yQ2FsbGJhY2s6KHZvaWQoXikoTlNTdHJpbmcgKmVy
cm9yKSllcnJvckNhbGxiYWNrIHN1Y2Nlc3NDYWxsYmFjazoodm9pZCheKShOU0FycmF5Lyo8TlNT
dHJpbmc+Ki8gKmNvbHVtbk5hbWVzLCBOU1N0cmluZyAqbm90ZXMsIGRvdWJsZSB0aW1lc3RhbXAs
IFJXSVByb3RvY29sSlNPTk9iamVjdCAqdmFsdWVzLCBSV0lQcm90b2NvbEpTT05PYmplY3QgKnBh
eWxvYWQsIGludCBkYXRhYmFzZUlkLCBUZXN0UHJvdG9jb2xEYXRhYmFzZUVycm9yICpzcWxFcnJv
ciwgVGVzdFByb3RvY29sRGF0YWJhc2VQcmltYXJ5Q29sb3JzIHNjcmVlbkNvbG9yLCBOU0FycmF5
Lyo8TlNTdHJpbmc+Ki8gKmFsdGVybmF0ZUNvbG9ycywgVGVzdFByb3RvY29sRGF0YWJhc2VFeGVj
dXRlU1FMQXN5bmNQcmludENvbG9yIHByaW50Q29sb3IpKXN1Y2Nlc3NDYWxsYmFjayBkYXRhYmFz
ZUlkOihpbnQpZGF0YWJhc2VJZCBxdWVyeTooTlNTdHJpbmcgKilxdWVyeTsKLUBlbmQKLQotCi0K
LQotIyMjIEVuZCBGaWxlOiBUZXN0UHJvdG9jb2wuaAotCi0jIyMgQmVnaW4gRmlsZTogVGVzdFBy
b3RvY29sSW50ZXJuYWwuaAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxNCBVbml2ZXJzaXR5
IG9mIFdhc2hpbmd0b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLS8vIERPIE5P
VCBFRElUIFRISVMgRklMRS4gSXQgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSBjb21t
YW5kcy13aXRoLWFzeW5jLWF0dHJpYnV0ZS5qc29uCi0vLyBieSB0aGUgc2NyaXB0OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvZ2VuZXJhdGUtaW5zcGVjdG9yLXByb3Rv
Y29sLWJpbmRpbmdzLnB5Ci0KLSNpbXBvcnQgIlRlc3RQcm90b2NvbC5oIgotI2ltcG9ydCAiVGVz
dFByb3RvY29sSlNPTk9iamVjdFByaXZhdGUuaCIKLSNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0F1
Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlci5oPgotI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUv
SW5zcGVjdG9yVmFsdWVzLmg+Ci0KLQotCi0KLSMjIyBFbmQgRmlsZTogVGVzdFByb3RvY29sSW50
ZXJuYWwuaAorIyMjIEVuZCBGaWxlOiBUZXN0UHJvdG9jb2xUeXBlQ29udmVyc2lvbnMuaAogCiAj
IyMgQmVnaW4gRmlsZTogVGVzdFByb3RvY29sVHlwZXMubW0KIC8qCkBAIC0xNTgzLDcgKzE1ODMs
NyBAQCBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5ICgiZGVmYXVsdCIpKSkKICNpbXBvcnQgImNv
bmZpZy5oIgogI2ltcG9ydCAiVGVzdFByb3RvY29sSW50ZXJuYWwuaCIKIAotI2ltcG9ydCAiVGVz
dFByb3RvY29sRW51bUNvbnZlcnNpb25IZWxwZXJzLmgiCisjaW1wb3J0ICJUZXN0UHJvdG9jb2xU
eXBlQ29udmVyc2lvbnMuaCIKICNpbXBvcnQgPFdlYkluc3BlY3Rvci9SV0lQcm90b2NvbEpTT05P
YmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JWYWx1ZXMu
aD4KICNpbXBvcnQgPHd0Zi9Bc3NlcnRpb25zLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1v
cHRpb25hbC1jYWxsLXJldHVybi1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgt
b3B0aW9uYWwtY2FsbC1yZXR1cm4tcGFyYW1ldGVycy5qc29uLXJlc3VsdAppbmRleCBmN2UzMGI5
ZDA3ZjU2ZjYyOTMxMWRmZjBhNzI2ZDZiMzAwMGVmYmU4Li44MDhjODdmM2NiY2Q4MWZkOGNlY2Ni
MDVlZTczZWUwZWVmNzE2OGM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1vcHRpb25hbC1jYWxs
LXJldHVybi1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9jb21tYW5kcy13aXRoLW9wdGlvbmFs
LWNhbGwtcmV0dXJuLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQKQEAgLTkxOCw3ICs5MTgsNyBAQCBf
X2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5ICgiZGVmYXVsdCIpKSkKICNpbXBvcnQgIlRlc3RQcm90
b2NvbEJhY2tlbmREaXNwYXRjaGVycy5oIgogCiAjaW5jbHVkZSAiVGVzdFByb3RvY29sSW50ZXJu
YWwuaCIKLSNpbmNsdWRlICJUZXN0UHJvdG9jb2xFbnVtQ29udmVyc2lvbkhlbHBlcnMuaCIKKyNp
bmNsdWRlICJUZXN0UHJvdG9jb2xUeXBlQ29udmVyc2lvbnMuaCIKICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9JbnNwZWN0b3JWYWx1ZXMuaD4KIAogbmFtZXNwYWNlIEluc3BlY3RvciB7CkBAIC0x
MDQyLDcgKzEwNDIsMTg1IEBAIHZvaWQgT2JqQ0luc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3Bh
dGNoZXI6OmV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVycyhsb25nIHJlCiAKICMjIyBFbmQgRmls
ZTogVGVzdFByb3RvY29sQmFja2VuZERpc3BhdGNoZXJzLm1tCiAKLSMjIyBCZWdpbiBGaWxlOiBU
ZXN0UHJvdG9jb2xFbnVtQ29udmVyc2lvbkhlbHBlcnMuaAorIyMjIEJlZ2luIEZpbGU6IFRlc3RQ
cm90b2NvbEV2ZW50RGlzcGF0Y2hlcnMubW0KKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAx
NCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQg
VW5pdmVyc2l0eSBvZiBXYXNoaW5ndG9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisvLyBETyBOT1QgRURJVCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVk
IGZyb20gY29tbWFuZHMtd2l0aC1vcHRpb25hbC1jYWxsLXJldHVybi1wYXJhbWV0ZXJzLmpzb24K
Ky8vIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0
cy9nZW5lcmF0ZS1pbnNwZWN0b3ItcHJvdG9jb2wtYmluZGluZ3MucHkKKworI2ltcG9ydCAiY29u
ZmlnLmgiCisjaW1wb3J0ICJUZXN0UHJvdG9jb2xJbnRlcm5hbC5oIgorCisjaW1wb3J0ICJUZXN0
UHJvdG9jb2xUeXBlQ29udmVyc2lvbnMuaCIKKyNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0luc3Bl
Y3RvclZhbHVlcy5oPgorCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworCisKKworCisjIyMg
RW5kIEZpbGU6IFRlc3RQcm90b2NvbEV2ZW50RGlzcGF0Y2hlcnMubW0KKworIyMjIEJlZ2luIEZp
bGU6IFRlc3RQcm90b2NvbC5oCisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0IFVuaXZlcnNp
dHkgb2YgV2FzaGluZ3Rvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLy8gRE8g
Tk9UIEVESVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIGNv
bW1hbmRzLXdpdGgtb3B0aW9uYWwtY2FsbC1yZXR1cm4tcGFyYW1ldGVycy5qc29uCisvLyBieSB0
aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvZ2VuZXJh
dGUtaW5zcGVjdG9yLXByb3RvY29sLWJpbmRpbmdzLnB5CisKKyNpbXBvcnQgPEZvdW5kYXRpb24v
Rm91bmRhdGlvbi5oPgorCisjaW1wb3J0IDxXZWJJbnNwZWN0b3IvUldJUHJvdG9jb2xKU09OT2Jq
ZWN0Lmg+CisKKworQGNsYXNzIFRlc3RQcm90b2NvbERhdGFiYXNlRXJyb3I7CisKKwordHlwZWRl
ZiBOU19FTlVNKE5TSW50ZWdlciwgVGVzdFByb3RvY29sRGF0YWJhc2VQcmltYXJ5Q29sb3JzKSB7
CisgICAgVGVzdFByb3RvY29sRGF0YWJhc2VQcmltYXJ5Q29sb3JzUmVkLAorICAgIFRlc3RQcm90
b2NvbERhdGFiYXNlUHJpbWFyeUNvbG9yc0dyZWVuLAorICAgIFRlc3RQcm90b2NvbERhdGFiYXNl
UHJpbWFyeUNvbG9yc0JsdWUsCit9OworCit0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBUZXN0
UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRlcnNQcmludENvbG9yKSB7
CisgICAgVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlQWxsT3B0aW9uYWxQYXJhbWV0ZXJzUHJp
bnRDb2xvckN5YW4sCisgICAgVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlQWxsT3B0aW9uYWxQ
YXJhbWV0ZXJzUHJpbnRDb2xvck1hZ2VudGEsCisgICAgVGVzdFByb3RvY29sRGF0YWJhc2VFeGVj
dXRlQWxsT3B0aW9uYWxQYXJhbWV0ZXJzUHJpbnRDb2xvclllbGxvdywKKyAgICBUZXN0UHJvdG9j
b2xEYXRhYmFzZUV4ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRlcnNQcmludENvbG9yQmxhY2ssCit9
OworCit0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1
dGVBbGxPcHRpb25hbFBhcmFtZXRlcnNQcmludENvbG9yKSB7CisgICAgVGVzdFByb3RvY29sRGF0
YWJhc2VFeGVjdXRlQWxsT3B0aW9uYWxQYXJhbWV0ZXJzUHJpbnRDb2xvckN5YW4sCisgICAgVGVz
dFByb3RvY29sRGF0YWJhc2VFeGVjdXRlQWxsT3B0aW9uYWxQYXJhbWV0ZXJzUHJpbnRDb2xvck1h
Z2VudGEsCisgICAgVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlQWxsT3B0aW9uYWxQYXJhbWV0
ZXJzUHJpbnRDb2xvclllbGxvdywKKyAgICBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVBbGxP
cHRpb25hbFBhcmFtZXRlcnNQcmludENvbG9yQmxhY2ssCit9OworCit0eXBlZGVmIE5TX0VOVU0o
TlNJbnRlZ2VyLCBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVy
c1ByaW50Q29sb3IpIHsKKyAgICBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVOb09wdGlvbmFs
UGFyYW1ldGVyc1ByaW50Q29sb3JDeWFuLAorICAgIFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0
ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzUHJpbnRDb2xvck1hZ2VudGEsCisgICAgVGVzdFByb3RvY29s
RGF0YWJhc2VFeGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnNQcmludENvbG9yWWVsbG93LAorICAg
IFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzUHJpbnRDb2xv
ckJsYWNrLAorfTsKKwordHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgVGVzdFByb3RvY29sRGF0
YWJhc2VFeGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnNQcmludENvbG9yKSB7CisgICAgVGVzdFBy
b3RvY29sRGF0YWJhc2VFeGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnNQcmludENvbG9yQ3lhbiwK
KyAgICBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVyc1ByaW50
Q29sb3JNYWdlbnRhLAorICAgIFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZU5vT3B0aW9uYWxQ
YXJhbWV0ZXJzUHJpbnRDb2xvclllbGxvdywKKyAgICBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1
dGVOb09wdGlvbmFsUGFyYW1ldGVyc1ByaW50Q29sb3JCbGFjaywKK307CisKKworX19hdHRyaWJ1
dGVfXygodmlzaWJpbGl0eSAoImRlZmF1bHQiKSkpCitAaW50ZXJmYWNlIFRlc3RQcm90b2NvbERh
dGFiYXNlRXJyb3IgOiBSV0lQcm90b2NvbEpTT05PYmplY3QKKy0gKGluc3RhbmNldHlwZSlpbml0
V2l0aFBheWxvYWQ6KE5TRGljdGlvbmFyeTxOU1N0cmluZyAqLCBpZD4gKilwYXlsb2FkOworLSAo
aW5zdGFuY2V0eXBlKWluaXRXaXRoTWVzc2FnZTooTlNTdHJpbmcgKiltZXNzYWdlIGNvZGU6KGlu
dCljb2RlOworLyogcmVxdWlyZWQgKi8gQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIE5TU3Ry
aW5nICptZXNzYWdlOworLyogcmVxdWlyZWQgKi8gQHByb3BlcnR5IChub25hdG9taWMsIGFzc2ln
bikgaW50IGNvZGU7CitAZW5kCisKK0Bwcm90b2NvbCBUZXN0UHJvdG9jb2xEYXRhYmFzZURvbWFp
bkhhbmRsZXIgPE5TT2JqZWN0PgorQHJlcXVpcmVkCistICh2b2lkKWV4ZWN1dGVBbGxPcHRpb25h
bFBhcmFtZXRlcnNXaXRoRXJyb3JDYWxsYmFjazoodm9pZCheKShOU1N0cmluZyAqZXJyb3IpKWVy
cm9yQ2FsbGJhY2sgc3VjY2Vzc0NhbGxiYWNrOih2b2lkKF4pKE5TQXJyYXkvKjxOU1N0cmluZz4q
LyAqKmNvbHVtbk5hbWVzLCBOU1N0cmluZyAqKm5vdGVzLCBkb3VibGUgKnRpbWVzdGFtcCwgUldJ
UHJvdG9jb2xKU09OT2JqZWN0ICoqdmFsdWVzLCBSV0lQcm90b2NvbEpTT05PYmplY3QgKipwYXls
b2FkLCBpbnQgKmRhdGFiYXNlSWQsIFRlc3RQcm90b2NvbERhdGFiYXNlRXJyb3IgKipzcWxFcnJv
ciwgVGVzdFByb3RvY29sRGF0YWJhc2VQcmltYXJ5Q29sb3JzICpzY3JlZW5Db2xvciwgTlNBcnJh
eS8qPE5TU3RyaW5nPiovICoqYWx0ZXJuYXRlQ29sb3JzLCBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4
ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRlcnNQcmludENvbG9yICpwcmludENvbG9yKSlzdWNjZXNz
Q2FsbGJhY2sgY29sdW1uTmFtZXM6KE5TQXJyYXkvKjxOU1N0cmluZz4qLyAqKiljb2x1bW5OYW1l
cyBub3RlczooTlNTdHJpbmcgKiopbm90ZXMgdGltZXN0YW1wOihkb3VibGUgKil0aW1lc3RhbXAg
dmFsdWVzOihSV0lQcm90b2NvbEpTT05PYmplY3QgKiopdmFsdWVzIHBheWxvYWQ6KFJXSVByb3Rv
Y29sSlNPTk9iamVjdCAqKilwYXlsb2FkIGRhdGFiYXNlSWQ6KGludCAqKWRhdGFiYXNlSWQgc3Fs
RXJyb3I6KFRlc3RQcm90b2NvbERhdGFiYXNlRXJyb3IgKiopc3FsRXJyb3Igc2NyZWVuQ29sb3I6
KFRlc3RQcm90b2NvbERhdGFiYXNlUHJpbWFyeUNvbG9ycyAqKXNjcmVlbkNvbG9yIGFsdGVybmF0
ZUNvbG9yczooTlNBcnJheS8qPE5TU3RyaW5nPiovICoqKWFsdGVybmF0ZUNvbG9ycyBwcmludENv
bG9yOihUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRlcnNQcmlu
dENvbG9yICopcHJpbnRDb2xvcjsKKy0gKHZvaWQpZXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJz
V2l0aEVycm9yQ2FsbGJhY2s6KHZvaWQoXikoTlNTdHJpbmcgKmVycm9yKSllcnJvckNhbGxiYWNr
IHN1Y2Nlc3NDYWxsYmFjazoodm9pZCheKShOU0FycmF5Lyo8TlNTdHJpbmc+Ki8gKmNvbHVtbk5h
bWVzLCBOU1N0cmluZyAqbm90ZXMsIGRvdWJsZSB0aW1lc3RhbXAsIFJXSVByb3RvY29sSlNPTk9i
amVjdCAqdmFsdWVzLCBSV0lQcm90b2NvbEpTT05PYmplY3QgKnBheWxvYWQsIGludCBkYXRhYmFz
ZUlkLCBUZXN0UHJvdG9jb2xEYXRhYmFzZUVycm9yICpzcWxFcnJvciwgVGVzdFByb3RvY29sRGF0
YWJhc2VQcmltYXJ5Q29sb3JzIHNjcmVlbkNvbG9yLCBOU0FycmF5Lyo8TlNTdHJpbmc+Ki8gKmFs
dGVybmF0ZUNvbG9ycywgVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlTm9PcHRpb25hbFBhcmFt
ZXRlcnNQcmludENvbG9yIHByaW50Q29sb3IpKXN1Y2Nlc3NDYWxsYmFjayBjb2x1bW5OYW1lczoo
TlNBcnJheS8qPE5TU3RyaW5nPiovICopY29sdW1uTmFtZXMgbm90ZXM6KE5TU3RyaW5nICopbm90
ZXMgdGltZXN0YW1wOihkb3VibGUpdGltZXN0YW1wIHZhbHVlczooUldJUHJvdG9jb2xKU09OT2Jq
ZWN0ICopdmFsdWVzIHBheWxvYWQ6KFJXSVByb3RvY29sSlNPTk9iamVjdCAqKXBheWxvYWQgZGF0
YWJhc2VJZDooaW50KWRhdGFiYXNlSWQgc3FsRXJyb3I6KFRlc3RQcm90b2NvbERhdGFiYXNlRXJy
b3IgKilzcWxFcnJvciBzY3JlZW5Db2xvcjooVGVzdFByb3RvY29sRGF0YWJhc2VQcmltYXJ5Q29s
b3JzKXNjcmVlbkNvbG9yIGFsdGVybmF0ZUNvbG9yczooTlNBcnJheS8qPE5TU3RyaW5nPiovICop
YWx0ZXJuYXRlQ29sb3JzIHByaW50Q29sb3I6KFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZU5v
T3B0aW9uYWxQYXJhbWV0ZXJzUHJpbnRDb2xvcilwcmludENvbG9yOworQGVuZAorCisKKworCisj
IyMgRW5kIEZpbGU6IFRlc3RQcm90b2NvbC5oCisKKyMjIyBCZWdpbiBGaWxlOiBUZXN0UHJvdG9j
b2xJbnRlcm5hbC5oCisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0IFVuaXZlcnNpdHkgb2Yg
V2FzaGluZ3Rvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLy8gRE8gTk9UIEVE
SVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIGNvbW1hbmRz
LXdpdGgtb3B0aW9uYWwtY2FsbC1yZXR1cm4tcGFyYW1ldGVycy5qc29uCisvLyBieSB0aGUgc2Ny
aXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvZ2VuZXJhdGUtaW5z
cGVjdG9yLXByb3RvY29sLWJpbmRpbmdzLnB5CisKKyNpbXBvcnQgIlRlc3RQcm90b2NvbC5oIgor
I2ltcG9ydCAiVGVzdFByb3RvY29sSlNPTk9iamVjdFByaXZhdGUuaCIKKyNpbXBvcnQgPEphdmFT
Y3JpcHRDb3JlL0F1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlci5oPgorI2ltcG9ydCA8SmF2
YVNjcmlwdENvcmUvSW5zcGVjdG9yVmFsdWVzLmg+CisKKworCisKKyMjIyBFbmQgRmlsZTogVGVz
dFByb3RvY29sSW50ZXJuYWwuaAorCisjIyMgQmVnaW4gRmlsZTogVGVzdFByb3RvY29sVHlwZUNv
bnZlcnNpb25zLmgKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCkBAIC0xMDczLDcgKzEyNTEsNyBAQCB2b2lkIE9iakNJbnNwZWN0
b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyOjpleGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnMo
bG9uZyByZQogLy8gRE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdl
bmVyYXRlZCBmcm9tIGNvbW1hbmRzLXdpdGgtb3B0aW9uYWwtY2FsbC1yZXR1cm4tcGFyYW1ldGVy
cy5qc29uCiAvLyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3NjcmlwdHMvZ2VuZXJhdGUtaW5zcGVjdG9yLXByb3RvY29sLWJpbmRpbmdzLnB5CiAKLSNpbXBv
cnQgIlJXSVByb3RvY29sQXJyYXlDb252ZXJzaW9uSGVscGVycy5oIgorI2ltcG9ydCAiUldJUHJv
dG9jb2xBcnJheUNvbnZlcnNpb25zLmgiCiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCkBAIC0x
MjI0LDE4NSArMTQwMiw3IEBAIGlubGluZSBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVOb09w
dGlvbmFsUGFyYW1ldGVyc1ByaW50Q29sb3IgZnJvbVByb3RvY29sU3RyCiAKIH0gLy8gbmFtZXNw
YWNlIEluc3BlY3RvcgogCi0jIyMgRW5kIEZpbGU6IFRlc3RQcm90b2NvbEVudW1Db252ZXJzaW9u
SGVscGVycy5oCi0KLSMjIyBCZWdpbiBGaWxlOiBUZXN0UHJvdG9jb2xFdmVudERpc3BhdGNoZXJz
Lm1tCi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDE0IFVuaXZlcnNpdHkgb2YgV2FzaGluZ3Rv
bi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotLy8gRE8gTk9UIEVESVQgVEhJUyBG
SUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIGNvbW1hbmRzLXdpdGgtb3B0
aW9uYWwtY2FsbC1yZXR1cm4tcGFyYW1ldGVycy5qc29uCi0vLyBieSB0aGUgc2NyaXB0OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvZ2VuZXJhdGUtaW5zcGVjdG9yLXBy
b3RvY29sLWJpbmRpbmdzLnB5Ci0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiVGVzdFBy
b3RvY29sSW50ZXJuYWwuaCIKLQotI2ltcG9ydCAiVGVzdFByb3RvY29sRW51bUNvbnZlcnNpb25I
ZWxwZXJzLmgiCi0jaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JWYWx1ZXMuaD4KLQot
dXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKLQotCi0KLQotIyMjIEVuZCBGaWxlOiBUZXN0UHJv
dG9jb2xFdmVudERpc3BhdGNoZXJzLm1tCi0KLSMjIyBCZWdpbiBGaWxlOiBUZXN0UHJvdG9jb2wu
aAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxNCBVbml2ZXJzaXR5IG9mIFdhc2hpbmd0b24u
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLS8vIERPIE5PVCBFRElUIFRISVMgRklM
RS4gSXQgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSBjb21tYW5kcy13aXRoLW9wdGlv
bmFsLWNhbGwtcmV0dXJuLXBhcmFtZXRlcnMuanNvbgotLy8gYnkgdGhlIHNjcmlwdDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2dlbmVyYXRlLWluc3BlY3Rvci1wcm90
b2NvbC1iaW5kaW5ncy5weQotCi0jaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KLQot
I2ltcG9ydCA8V2ViSW5zcGVjdG9yL1JXSVByb3RvY29sSlNPTk9iamVjdC5oPgotCi0KLUBjbGFz
cyBUZXN0UHJvdG9jb2xEYXRhYmFzZUVycm9yOwotCi0KLXR5cGVkZWYgTlNfRU5VTShOU0ludGVn
ZXIsIFRlc3RQcm90b2NvbERhdGFiYXNlUHJpbWFyeUNvbG9ycykgewotICAgIFRlc3RQcm90b2Nv
bERhdGFiYXNlUHJpbWFyeUNvbG9yc1JlZCwKLSAgICBUZXN0UHJvdG9jb2xEYXRhYmFzZVByaW1h
cnlDb2xvcnNHcmVlbiwKLSAgICBUZXN0UHJvdG9jb2xEYXRhYmFzZVByaW1hcnlDb2xvcnNCbHVl
LAotfTsKLQotdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgVGVzdFByb3RvY29sRGF0YWJhc2VF
eGVjdXRlQWxsT3B0aW9uYWxQYXJhbWV0ZXJzUHJpbnRDb2xvcikgewotICAgIFRlc3RQcm90b2Nv
bERhdGFiYXNlRXhlY3V0ZUFsbE9wdGlvbmFsUGFyYW1ldGVyc1ByaW50Q29sb3JDeWFuLAotICAg
IFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZUFsbE9wdGlvbmFsUGFyYW1ldGVyc1ByaW50Q29s
b3JNYWdlbnRhLAotICAgIFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZUFsbE9wdGlvbmFsUGFy
YW1ldGVyc1ByaW50Q29sb3JZZWxsb3csCi0gICAgVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRl
QWxsT3B0aW9uYWxQYXJhbWV0ZXJzUHJpbnRDb2xvckJsYWNrLAotfTsKLQotdHlwZWRlZiBOU19F
TlVNKE5TSW50ZWdlciwgVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlQWxsT3B0aW9uYWxQYXJh
bWV0ZXJzUHJpbnRDb2xvcikgewotICAgIFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZUFsbE9w
dGlvbmFsUGFyYW1ldGVyc1ByaW50Q29sb3JDeWFuLAotICAgIFRlc3RQcm90b2NvbERhdGFiYXNl
RXhlY3V0ZUFsbE9wdGlvbmFsUGFyYW1ldGVyc1ByaW50Q29sb3JNYWdlbnRhLAotICAgIFRlc3RQ
cm90b2NvbERhdGFiYXNlRXhlY3V0ZUFsbE9wdGlvbmFsUGFyYW1ldGVyc1ByaW50Q29sb3JZZWxs
b3csCi0gICAgVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlQWxsT3B0aW9uYWxQYXJhbWV0ZXJz
UHJpbnRDb2xvckJsYWNrLAotfTsKLQotdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgVGVzdFBy
b3RvY29sRGF0YWJhc2VFeGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnNQcmludENvbG9yKSB7Ci0g
ICAgVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnNQcmludENv
bG9yQ3lhbiwKLSAgICBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVOb09wdGlvbmFsUGFyYW1l
dGVyc1ByaW50Q29sb3JNYWdlbnRhLAotICAgIFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZU5v
T3B0aW9uYWxQYXJhbWV0ZXJzUHJpbnRDb2xvclllbGxvdywKLSAgICBUZXN0UHJvdG9jb2xEYXRh
YmFzZUV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVyc1ByaW50Q29sb3JCbGFjaywKLX07Ci0KLXR5
cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZU5vT3B0
aW9uYWxQYXJhbWV0ZXJzUHJpbnRDb2xvcikgewotICAgIFRlc3RQcm90b2NvbERhdGFiYXNlRXhl
Y3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzUHJpbnRDb2xvckN5YW4sCi0gICAgVGVzdFByb3RvY29s
RGF0YWJhc2VFeGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnNQcmludENvbG9yTWFnZW50YSwKLSAg
ICBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVyc1ByaW50Q29s
b3JZZWxsb3csCi0gICAgVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlTm9PcHRpb25hbFBhcmFt
ZXRlcnNQcmludENvbG9yQmxhY2ssCi19OwotCi0KLV9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkg
KCJkZWZhdWx0IikpKQotQGludGVyZmFjZSBUZXN0UHJvdG9jb2xEYXRhYmFzZUVycm9yIDogUldJ
UHJvdG9jb2xKU09OT2JqZWN0Ci0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhQYXlsb2FkOihOU0Rp
Y3Rpb25hcnk8TlNTdHJpbmcgKiwgaWQ+ICopcGF5bG9hZDsKLS0gKGluc3RhbmNldHlwZSlpbml0
V2l0aE1lc3NhZ2U6KE5TU3RyaW5nICopbWVzc2FnZSBjb2RlOihpbnQpY29kZTsKLS8qIHJlcXVp
cmVkICovIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSBOU1N0cmluZyAqbWVzc2FnZTsKLS8q
IHJlcXVpcmVkICovIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBhc3NpZ24pIGludCBjb2RlOwotQGVu
ZAotCi1AcHJvdG9jb2wgVGVzdFByb3RvY29sRGF0YWJhc2VEb21haW5IYW5kbGVyIDxOU09iamVj
dD4KLUByZXF1aXJlZAotLSAodm9pZClleGVjdXRlQWxsT3B0aW9uYWxQYXJhbWV0ZXJzV2l0aEVy
cm9yQ2FsbGJhY2s6KHZvaWQoXikoTlNTdHJpbmcgKmVycm9yKSllcnJvckNhbGxiYWNrIHN1Y2Nl
c3NDYWxsYmFjazoodm9pZCheKShOU0FycmF5Lyo8TlNTdHJpbmc+Ki8gKipjb2x1bW5OYW1lcywg
TlNTdHJpbmcgKipub3RlcywgZG91YmxlICp0aW1lc3RhbXAsIFJXSVByb3RvY29sSlNPTk9iamVj
dCAqKnZhbHVlcywgUldJUHJvdG9jb2xKU09OT2JqZWN0ICoqcGF5bG9hZCwgaW50ICpkYXRhYmFz
ZUlkLCBUZXN0UHJvdG9jb2xEYXRhYmFzZUVycm9yICoqc3FsRXJyb3IsIFRlc3RQcm90b2NvbERh
dGFiYXNlUHJpbWFyeUNvbG9ycyAqc2NyZWVuQ29sb3IsIE5TQXJyYXkvKjxOU1N0cmluZz4qLyAq
KmFsdGVybmF0ZUNvbG9ycywgVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlQWxsT3B0aW9uYWxQ
YXJhbWV0ZXJzUHJpbnRDb2xvciAqcHJpbnRDb2xvcikpc3VjY2Vzc0NhbGxiYWNrIGNvbHVtbk5h
bWVzOihOU0FycmF5Lyo8TlNTdHJpbmc+Ki8gKiopY29sdW1uTmFtZXMgbm90ZXM6KE5TU3RyaW5n
ICoqKW5vdGVzIHRpbWVzdGFtcDooZG91YmxlICopdGltZXN0YW1wIHZhbHVlczooUldJUHJvdG9j
b2xKU09OT2JqZWN0ICoqKXZhbHVlcyBwYXlsb2FkOihSV0lQcm90b2NvbEpTT05PYmplY3QgKiop
cGF5bG9hZCBkYXRhYmFzZUlkOihpbnQgKilkYXRhYmFzZUlkIHNxbEVycm9yOihUZXN0UHJvdG9j
b2xEYXRhYmFzZUVycm9yICoqKXNxbEVycm9yIHNjcmVlbkNvbG9yOihUZXN0UHJvdG9jb2xEYXRh
YmFzZVByaW1hcnlDb2xvcnMgKilzY3JlZW5Db2xvciBhbHRlcm5hdGVDb2xvcnM6KE5TQXJyYXkv
KjxOU1N0cmluZz4qLyAqKilhbHRlcm5hdGVDb2xvcnMgcHJpbnRDb2xvcjooVGVzdFByb3RvY29s
RGF0YWJhc2VFeGVjdXRlQWxsT3B0aW9uYWxQYXJhbWV0ZXJzUHJpbnRDb2xvciAqKXByaW50Q29s
b3I7Ci0tICh2b2lkKWV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVyc1dpdGhFcnJvckNhbGxiYWNr
Oih2b2lkKF4pKE5TU3RyaW5nICplcnJvcikpZXJyb3JDYWxsYmFjayBzdWNjZXNzQ2FsbGJhY2s6
KHZvaWQoXikoTlNBcnJheS8qPE5TU3RyaW5nPiovICpjb2x1bW5OYW1lcywgTlNTdHJpbmcgKm5v
dGVzLCBkb3VibGUgdGltZXN0YW1wLCBSV0lQcm90b2NvbEpTT05PYmplY3QgKnZhbHVlcywgUldJ
UHJvdG9jb2xKU09OT2JqZWN0ICpwYXlsb2FkLCBpbnQgZGF0YWJhc2VJZCwgVGVzdFByb3RvY29s
RGF0YWJhc2VFcnJvciAqc3FsRXJyb3IsIFRlc3RQcm90b2NvbERhdGFiYXNlUHJpbWFyeUNvbG9y
cyBzY3JlZW5Db2xvciwgTlNBcnJheS8qPE5TU3RyaW5nPiovICphbHRlcm5hdGVDb2xvcnMsIFRl
c3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzUHJpbnRDb2xvciBw
cmludENvbG9yKSlzdWNjZXNzQ2FsbGJhY2sgY29sdW1uTmFtZXM6KE5TQXJyYXkvKjxOU1N0cmlu
Zz4qLyAqKWNvbHVtbk5hbWVzIG5vdGVzOihOU1N0cmluZyAqKW5vdGVzIHRpbWVzdGFtcDooZG91
YmxlKXRpbWVzdGFtcCB2YWx1ZXM6KFJXSVByb3RvY29sSlNPTk9iamVjdCAqKXZhbHVlcyBwYXls
b2FkOihSV0lQcm90b2NvbEpTT05PYmplY3QgKilwYXlsb2FkIGRhdGFiYXNlSWQ6KGludClkYXRh
YmFzZUlkIHNxbEVycm9yOihUZXN0UHJvdG9jb2xEYXRhYmFzZUVycm9yICopc3FsRXJyb3Igc2Ny
ZWVuQ29sb3I6KFRlc3RQcm90b2NvbERhdGFiYXNlUHJpbWFyeUNvbG9ycylzY3JlZW5Db2xvciBh
bHRlcm5hdGVDb2xvcnM6KE5TQXJyYXkvKjxOU1N0cmluZz4qLyAqKWFsdGVybmF0ZUNvbG9ycyBw
cmludENvbG9yOihUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVy
c1ByaW50Q29sb3IpcHJpbnRDb2xvcjsKLUBlbmQKLQotCi0KLQotIyMjIEVuZCBGaWxlOiBUZXN0
UHJvdG9jb2wuaAotCi0jIyMgQmVnaW4gRmlsZTogVGVzdFByb3RvY29sSW50ZXJuYWwuaAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqIENvcHlyaWdodCAoQykgMjAxNCBVbml2ZXJzaXR5IG9mIFdhc2hpbmd0b24uIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLS8vIERPIE5PVCBFRElUIFRISVMgRklMRS4gSXQg
aXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSBjb21tYW5kcy13aXRoLW9wdGlvbmFsLWNh
bGwtcmV0dXJuLXBhcmFtZXRlcnMuanNvbgotLy8gYnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2dlbmVyYXRlLWluc3BlY3Rvci1wcm90b2NvbC1i
aW5kaW5ncy5weQotCi0jaW1wb3J0ICJUZXN0UHJvdG9jb2wuaCIKLSNpbXBvcnQgIlRlc3RQcm90
b2NvbEpTT05PYmplY3RQcml2YXRlLmgiCi0jaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9BdWdtZW50
YWJsZUluc3BlY3RvckNvbnRyb2xsZXIuaD4KLSNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0luc3Bl
Y3RvclZhbHVlcy5oPgotCi0KLQotCi0jIyMgRW5kIEZpbGU6IFRlc3RQcm90b2NvbEludGVybmFs
LmgKKyMjIyBFbmQgRmlsZTogVGVzdFByb3RvY29sVHlwZUNvbnZlcnNpb25zLmgKIAogIyMjIEJl
Z2luIEZpbGU6IFRlc3RQcm90b2NvbFR5cGVzLm1tCiAvKgpAQCAtMTQzOCw3ICsxNDM4LDcgQEAg
X19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSAoImRlZmF1bHQiKSkpCiAjaW1wb3J0ICJjb25maWcu
aCIKICNpbXBvcnQgIlRlc3RQcm90b2NvbEludGVybmFsLmgiCiAKLSNpbXBvcnQgIlRlc3RQcm90
b2NvbEVudW1Db252ZXJzaW9uSGVscGVycy5oIgorI2ltcG9ydCAiVGVzdFByb3RvY29sVHlwZUNv
bnZlcnNpb25zLmgiCiAjaW1wb3J0IDxXZWJJbnNwZWN0b3IvUldJUHJvdG9jb2xKU09OT2JqZWN0
UHJpdmF0ZS5oPgogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yVmFsdWVzLmg+CiAj
aW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2RvbWFpbnMtd2l0aC12YXJ5aW5n
LWNvbW1hbmQtc2l6ZXMuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZG9tYWlucy13aXRoLXZhcnlpbmctY29tbWFuZC1z
aXplcy5qc29uLXJlc3VsdAppbmRleCBiMWExZTExOWY3NDEwYzgxNmM2YmZhNTliOGZkMWJhODlj
ZGQ1ZDBjLi5kNDEwYmY4MmM3MTE0ZmU4MmE1NmI2NDYxOTY0OTg3OWJmZjJiMmNjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0
ZWQvZG9tYWlucy13aXRoLXZhcnlpbmctY29tbWFuZC1zaXplcy5qc29uLXJlc3VsdAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZG9t
YWlucy13aXRoLXZhcnlpbmctY29tbWFuZC1zaXplcy5qc29uLXJlc3VsdApAQCAtOTc1LDcgKzk3
NSw3IEBAIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkgKCJkZWZhdWx0IikpKQogI2ltcG9ydCAi
VGVzdFByb3RvY29sQmFja2VuZERpc3BhdGNoZXJzLmgiCiAKICNpbmNsdWRlICJUZXN0UHJvdG9j
b2xJbnRlcm5hbC5oIgotI2luY2x1ZGUgIlRlc3RQcm90b2NvbEVudW1Db252ZXJzaW9uSGVscGVy
cy5oIgorI2luY2x1ZGUgIlRlc3RQcm90b2NvbFR5cGVDb252ZXJzaW9ucy5oIgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0luc3BlY3RvclZhbHVlcy5oPgogCiBuYW1lc3BhY2UgSW5zcGVjdG9y
IHsKQEAgLTExMDAsNyArMTEwMCw3IEBAIHZvaWQgT2JqQ0luc3BlY3Rvck5ldHdvcmszQmFja2Vu
ZERpc3BhdGNoZXI6OmxvYWRSZXNvdXJjZTcobG9uZyByZXF1ZXN0SWQpCiAKICMjIyBFbmQgRmls
ZTogVGVzdFByb3RvY29sQmFja2VuZERpc3BhdGNoZXJzLm1tCiAKLSMjIyBCZWdpbiBGaWxlOiBU
ZXN0UHJvdG9jb2xFbnVtQ29udmVyc2lvbkhlbHBlcnMuaAorIyMjIEJlZ2luIEZpbGU6IFRlc3RQ
cm90b2NvbEV2ZW50RGlzcGF0Y2hlcnMubW0KIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMywgMjAx
NCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCkBAIC0xMTMxLDEyICsxMTMxLDEzIEBA
IHZvaWQgT2JqQ0luc3BlY3Rvck5ldHdvcmszQmFja2VuZERpc3BhdGNoZXI6OmxvYWRSZXNvdXJj
ZTcobG9uZyByZXF1ZXN0SWQpCiAvLyBETyBOT1QgRURJVCBUSElTIEZJTEUuIEl0IGlzIGF1dG9t
YXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gZG9tYWlucy13aXRoLXZhcnlpbmctY29tbWFuZC1zaXpl
cy5qc29uCiAvLyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3NjcmlwdHMvZ2VuZXJhdGUtaW5zcGVjdG9yLXByb3RvY29sLWJpbmRpbmdzLnB5CiAKLSNpbXBv
cnQgIlJXSVByb3RvY29sQXJyYXlDb252ZXJzaW9uSGVscGVycy5oIgorI2ltcG9ydCAiY29uZmln
LmgiCisjaW1wb3J0ICJUZXN0UHJvdG9jb2xJbnRlcm5hbC5oIgogCi1uYW1lc3BhY2UgSW5zcGVj
dG9yIHsKKyNpbXBvcnQgIlRlc3RQcm90b2NvbFR5cGVDb252ZXJzaW9ucy5oIgorI2ltcG9ydCA8
SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yVmFsdWVzLmg+CiAKLXRlbXBsYXRlPHR5cGVuYW1lIE9i
akNFbnVtVHlwZT4KLU9iakNFbnVtVHlwZSBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5n
JiB2YWx1ZSk7Cit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiAKIApAQCAtMTE0NCwxMSAr
MTE0NSwxMCBAQCBPYmpDRW51bVR5cGUgZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYg
dmFsdWUpOwogCiAKIAotfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCiAKLSMjIyBFbmQgRmlsZTog
VGVzdFByb3RvY29sRW51bUNvbnZlcnNpb25IZWxwZXJzLmgKKyMjIyBFbmQgRmlsZTogVGVzdFBy
b3RvY29sRXZlbnREaXNwYXRjaGVycy5tbQogCi0jIyMgQmVnaW4gRmlsZTogVGVzdFByb3RvY29s
RXZlbnREaXNwYXRjaGVycy5tbQorIyMjIEJlZ2luIEZpbGU6IFRlc3RQcm90b2NvbC5oCiAvKgog
ICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgpAQCAtMTE3OSwyNCArMTE3OSwzOSBAQCBPYmpDRW51bVR5cGUgZnJvbVByb3RvY29sU3RyaW5n
KGNvbnN0IFN0cmluZyYgdmFsdWUpOwogLy8gRE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJdCBpcyBh
dXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIGRvbWFpbnMtd2l0aC12YXJ5aW5nLWNvbW1hbmQt
c2l6ZXMuanNvbgogLy8gYnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9zY3JpcHRzL2dlbmVyYXRlLWluc3BlY3Rvci1wcm90b2NvbC1iaW5kaW5ncy5weQogCi0j
aW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIlRlc3RQcm90b2NvbEludGVybmFsLmgiCisjaW1w
b3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KKworI2ltcG9ydCA8V2ViSW5zcGVjdG9yL1JX
SVByb3RvY29sSlNPTk9iamVjdC5oPgorCisKKwogCi0jaW1wb3J0ICJUZXN0UHJvdG9jb2xFbnVt
Q29udmVyc2lvbkhlbHBlcnMuaCIKLSNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvclZh
bHVlcy5oPgogCi11c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiAKIAorQHByb3RvY29sIFRl
c3RQcm90b2NvbE5ldHdvcmsxRG9tYWluSGFuZGxlciA8TlNPYmplY3Q+CitAcmVxdWlyZWQKKy0g
KHZvaWQpbG9hZFJlc291cmNlMVdpdGhFcnJvckNhbGxiYWNrOih2b2lkKF4pKE5TU3RyaW5nICpl
cnJvcikpZXJyb3JDYWxsYmFjayBzdWNjZXNzQ2FsbGJhY2s6KHZvaWQoXikoKSlzdWNjZXNzQ2Fs
bGJhY2s7CitAZW5kCiAKK0Bwcm90b2NvbCBUZXN0UHJvdG9jb2xOZXR3b3JrM0RvbWFpbkhhbmRs
ZXIgPE5TT2JqZWN0PgorQHJlcXVpcmVkCistICh2b2lkKWxvYWRSZXNvdXJjZTFXaXRoRXJyb3JD
YWxsYmFjazoodm9pZCheKShOU1N0cmluZyAqZXJyb3IpKWVycm9yQ2FsbGJhY2sgc3VjY2Vzc0Nh
bGxiYWNrOih2b2lkKF4pKCkpc3VjY2Vzc0NhbGxiYWNrOworLSAodm9pZClsb2FkUmVzb3VyY2Uy
V2l0aEVycm9yQ2FsbGJhY2s6KHZvaWQoXikoTlNTdHJpbmcgKmVycm9yKSllcnJvckNhbGxiYWNr
IHN1Y2Nlc3NDYWxsYmFjazoodm9pZCheKSgpKXN1Y2Nlc3NDYWxsYmFjazsKKy0gKHZvaWQpbG9h
ZFJlc291cmNlM1dpdGhFcnJvckNhbGxiYWNrOih2b2lkKF4pKE5TU3RyaW5nICplcnJvcikpZXJy
b3JDYWxsYmFjayBzdWNjZXNzQ2FsbGJhY2s6KHZvaWQoXikoKSlzdWNjZXNzQ2FsbGJhY2s7Cist
ICh2b2lkKWxvYWRSZXNvdXJjZTRXaXRoRXJyb3JDYWxsYmFjazoodm9pZCheKShOU1N0cmluZyAq
ZXJyb3IpKWVycm9yQ2FsbGJhY2sgc3VjY2Vzc0NhbGxiYWNrOih2b2lkKF4pKCkpc3VjY2Vzc0Nh
bGxiYWNrOworLSAodm9pZClsb2FkUmVzb3VyY2U1V2l0aEVycm9yQ2FsbGJhY2s6KHZvaWQoXiko
TlNTdHJpbmcgKmVycm9yKSllcnJvckNhbGxiYWNrIHN1Y2Nlc3NDYWxsYmFjazoodm9pZCheKSgp
KXN1Y2Nlc3NDYWxsYmFjazsKKy0gKHZvaWQpbG9hZFJlc291cmNlNldpdGhFcnJvckNhbGxiYWNr
Oih2b2lkKF4pKE5TU3RyaW5nICplcnJvcikpZXJyb3JDYWxsYmFjayBzdWNjZXNzQ2FsbGJhY2s6
KHZvaWQoXikoKSlzdWNjZXNzQ2FsbGJhY2s7CistICh2b2lkKWxvYWRSZXNvdXJjZTdXaXRoRXJy
b3JDYWxsYmFjazoodm9pZCheKShOU1N0cmluZyAqZXJyb3IpKWVycm9yQ2FsbGJhY2sgc3VjY2Vz
c0NhbGxiYWNrOih2b2lkKF4pKCkpc3VjY2Vzc0NhbGxiYWNrOworQGVuZAogCiAKIAogCi0jIyMg
RW5kIEZpbGU6IFRlc3RQcm90b2NvbEV2ZW50RGlzcGF0Y2hlcnMubW0KKyMjIyBFbmQgRmlsZTog
VGVzdFByb3RvY29sLmgKIAotIyMjIEJlZ2luIEZpbGU6IFRlc3RQcm90b2NvbC5oCisjIyMgQmVn
aW4gRmlsZTogVGVzdFByb3RvY29sSW50ZXJuYWwuaAogLyoKICAqIENvcHlyaWdodCAoQykgMjAx
MyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEz
LCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KQEAgLTEyMjcsMzkgKzEyNDIs
MTcgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIC8vIERPIE5PVCBFRElUIFRISVMgRklM
RS4gSXQgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSBkb21haW5zLXdpdGgtdmFyeWlu
Zy1jb21tYW5kLXNpemVzLmpzb24KIC8vIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9nZW5lcmF0ZS1pbnNwZWN0b3ItcHJvdG9jb2wtYmluZGlu
Z3MucHkKIAotI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+Ci0KLSNpbXBvcnQgPFdl
Ykluc3BlY3Rvci9SV0lQcm90b2NvbEpTT05PYmplY3QuaD4KLQotCi0KLQotCi0KLQotCi1AcHJv
dG9jb2wgVGVzdFByb3RvY29sTmV0d29yazFEb21haW5IYW5kbGVyIDxOU09iamVjdD4KLUByZXF1
aXJlZAotLSAodm9pZClsb2FkUmVzb3VyY2UxV2l0aEVycm9yQ2FsbGJhY2s6KHZvaWQoXikoTlNT
dHJpbmcgKmVycm9yKSllcnJvckNhbGxiYWNrIHN1Y2Nlc3NDYWxsYmFjazoodm9pZCheKSgpKXN1
Y2Nlc3NDYWxsYmFjazsKLUBlbmQKLQotQHByb3RvY29sIFRlc3RQcm90b2NvbE5ldHdvcmszRG9t
YWluSGFuZGxlciA8TlNPYmplY3Q+Ci1AcmVxdWlyZWQKLS0gKHZvaWQpbG9hZFJlc291cmNlMVdp
dGhFcnJvckNhbGxiYWNrOih2b2lkKF4pKE5TU3RyaW5nICplcnJvcikpZXJyb3JDYWxsYmFjayBz
dWNjZXNzQ2FsbGJhY2s6KHZvaWQoXikoKSlzdWNjZXNzQ2FsbGJhY2s7Ci0tICh2b2lkKWxvYWRS
ZXNvdXJjZTJXaXRoRXJyb3JDYWxsYmFjazoodm9pZCheKShOU1N0cmluZyAqZXJyb3IpKWVycm9y
Q2FsbGJhY2sgc3VjY2Vzc0NhbGxiYWNrOih2b2lkKF4pKCkpc3VjY2Vzc0NhbGxiYWNrOwotLSAo
dm9pZClsb2FkUmVzb3VyY2UzV2l0aEVycm9yQ2FsbGJhY2s6KHZvaWQoXikoTlNTdHJpbmcgKmVy
cm9yKSllcnJvckNhbGxiYWNrIHN1Y2Nlc3NDYWxsYmFjazoodm9pZCheKSgpKXN1Y2Nlc3NDYWxs
YmFjazsKLS0gKHZvaWQpbG9hZFJlc291cmNlNFdpdGhFcnJvckNhbGxiYWNrOih2b2lkKF4pKE5T
U3RyaW5nICplcnJvcikpZXJyb3JDYWxsYmFjayBzdWNjZXNzQ2FsbGJhY2s6KHZvaWQoXikoKSlz
dWNjZXNzQ2FsbGJhY2s7Ci0tICh2b2lkKWxvYWRSZXNvdXJjZTVXaXRoRXJyb3JDYWxsYmFjazoo
dm9pZCheKShOU1N0cmluZyAqZXJyb3IpKWVycm9yQ2FsbGJhY2sgc3VjY2Vzc0NhbGxiYWNrOih2
b2lkKF4pKCkpc3VjY2Vzc0NhbGxiYWNrOwotLSAodm9pZClsb2FkUmVzb3VyY2U2V2l0aEVycm9y
Q2FsbGJhY2s6KHZvaWQoXikoTlNTdHJpbmcgKmVycm9yKSllcnJvckNhbGxiYWNrIHN1Y2Nlc3ND
YWxsYmFjazoodm9pZCheKSgpKXN1Y2Nlc3NDYWxsYmFjazsKLS0gKHZvaWQpbG9hZFJlc291cmNl
N1dpdGhFcnJvckNhbGxiYWNrOih2b2lkKF4pKE5TU3RyaW5nICplcnJvcikpZXJyb3JDYWxsYmFj
ayBzdWNjZXNzQ2FsbGJhY2s6KHZvaWQoXikoKSlzdWNjZXNzQ2FsbGJhY2s7Ci1AZW5kCisjaW1w
b3J0ICJUZXN0UHJvdG9jb2wuaCIKKyNpbXBvcnQgIlRlc3RQcm90b2NvbEpTT05PYmplY3RQcml2
YXRlLmgiCisjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9BdWdtZW50YWJsZUluc3BlY3RvckNvbnRy
b2xsZXIuaD4KKyNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvclZhbHVlcy5oPgogCiAK
IAogCi0jIyMgRW5kIEZpbGU6IFRlc3RQcm90b2NvbC5oCisjIyMgRW5kIEZpbGU6IFRlc3RQcm90
b2NvbEludGVybmFsLmgKIAotIyMjIEJlZ2luIEZpbGU6IFRlc3RQcm90b2NvbEludGVybmFsLmgK
KyMjIyBCZWdpbiBGaWxlOiBUZXN0UHJvdG9jb2xUeXBlQ29udmVyc2lvbnMuaAogLyoKICAqIENv
cHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29w
eXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KQEAg
LTEyOTAsMTUgKzEyODMsMjIgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIC8vIERPIE5P
VCBFRElUIFRISVMgRklMRS4gSXQgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSBkb21h
aW5zLXdpdGgtdmFyeWluZy1jb21tYW5kLXNpemVzLmpzb24KIC8vIGJ5IHRoZSBzY3JpcHQ6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9nZW5lcmF0ZS1pbnNwZWN0b3It
cHJvdG9jb2wtYmluZGluZ3MucHkKIAotI2ltcG9ydCAiVGVzdFByb3RvY29sLmgiCi0jaW1wb3J0
ICJUZXN0UHJvdG9jb2xKU09OT2JqZWN0UHJpdmF0ZS5oIgotI2ltcG9ydCA8SmF2YVNjcmlwdENv
cmUvQXVnbWVudGFibGVJbnNwZWN0b3JDb250cm9sbGVyLmg+Ci0jaW1wb3J0IDxKYXZhU2NyaXB0
Q29yZS9JbnNwZWN0b3JWYWx1ZXMuaD4KKyNpbXBvcnQgIlJXSVByb3RvY29sQXJyYXlDb252ZXJz
aW9ucy5oIgogCituYW1lc3BhY2UgSW5zcGVjdG9yIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgT2Jq
Q0VudW1UeXBlPgorT2JqQ0VudW1UeXBlIGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcm
IHZhbHVlKTsKIAogCiAKLSMjIyBFbmQgRmlsZTogVGVzdFByb3RvY29sSW50ZXJuYWwuaAorCisK
KworCit9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKKworIyMjIEVuZCBGaWxlOiBUZXN0UHJvdG9j
b2xUeXBlQ29udmVyc2lvbnMuaAogCiAjIyMgQmVnaW4gRmlsZTogVGVzdFByb3RvY29sVHlwZXMu
bW0KIC8qCkBAIC0xMzM0LDcgKzEzMzQsNyBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwog
I2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJUZXN0UHJvdG9jb2xJbnRlcm5hbC5oIgogCi0j
aW1wb3J0ICJUZXN0UHJvdG9jb2xFbnVtQ29udmVyc2lvbkhlbHBlcnMuaCIKKyNpbXBvcnQgIlRl
c3RQcm90b2NvbFR5cGVDb252ZXJzaW9ucy5oIgogI2ltcG9ydCA8V2ViSW5zcGVjdG9yL1JXSVBy
b3RvY29sSlNPTk9iamVjdFByaXZhdGUuaD4KICNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0luc3Bl
Y3RvclZhbHVlcy5oPgogI2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9lbnVt
LXZhbHVlcy5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2Ny
aXB0cy90ZXN0cy9leHBlY3RlZC9lbnVtLXZhbHVlcy5qc29uLXJlc3VsdAppbmRleCA1NDllMGEz
N2Q4Mzk0NWRiNDM4NWEwNjQzZDhkYTA0NDBkMTJmMWVlLi5hNjZmN2UzYjI0NjIwM2E2ZDVlNTIx
NmVhYzRjOGU0NWFiYzVhZmRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZW51bS12YWx1ZXMuanNvbi1yZXN1bHQKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVk
L2VudW0tdmFsdWVzLmpzb24tcmVzdWx0CkBAIC03NzQsNyArNzc0LDcgQEAgX19hdHRyaWJ1dGVf
XygodmlzaWJpbGl0eSAoImRlZmF1bHQiKSkpCiAjaW1wb3J0ICJUZXN0UHJvdG9jb2xCYWNrZW5k
RGlzcGF0Y2hlcnMuaCIKIAogI2luY2x1ZGUgIlRlc3RQcm90b2NvbEludGVybmFsLmgiCi0jaW5j
bHVkZSAiVGVzdFByb3RvY29sRW51bUNvbnZlcnNpb25IZWxwZXJzLmgiCisjaW5jbHVkZSAiVGVz
dFByb3RvY29sVHlwZUNvbnZlcnNpb25zLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5z
cGVjdG9yVmFsdWVzLmg+CiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewpAQCAtODA0LDEzNCArODA0
LDYgQEAgdm9pZCBPYmpDSW5zcGVjdG9yQ29tbWFuZERvbWFpbkJhY2tlbmREaXNwYXRjaGVyOjpj
b21tYW5kV2l0aEVudW1SZXR1cm5WYWx1ZShsb24KIAogIyMjIEVuZCBGaWxlOiBUZXN0UHJvdG9j
b2xCYWNrZW5kRGlzcGF0Y2hlcnMubW0KIAotIyMjIEJlZ2luIEZpbGU6IFRlc3RQcm90b2NvbEVu
dW1Db252ZXJzaW9uSGVscGVycy5oCi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDE0IFVuaXZl
cnNpdHkgb2YgV2FzaGluZ3Rvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotLy8g
RE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9t
IGVudW0tdmFsdWVzLmpzb24KLS8vIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3Ivc2NyaXB0cy9nZW5lcmF0ZS1pbnNwZWN0b3ItcHJvdG9jb2wtYmluZGluZ3Mu
cHkKLQotI2ltcG9ydCAiUldJUHJvdG9jb2xBcnJheUNvbnZlcnNpb25IZWxwZXJzLmgiCi0KLW5h
bWVzcGFjZSBJbnNwZWN0b3IgewotCi10ZW1wbGF0ZTx0eXBlbmFtZSBPYmpDRW51bVR5cGU+Ci1P
YmpDRW51bVR5cGUgZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpOwotCi0K
LWlubGluZSBTdHJpbmcgdG9Qcm90b2NvbFN0cmluZyhUZXN0UHJvdG9jb2xUeXBlRG9tYWluRW51
bSB2YWx1ZSkKLXsKLSAgICBzd2l0Y2godmFsdWUpIHsKLSAgICBjYXNlIFRlc3RQcm90b2NvbFR5
cGVEb21haW5FbnVtU2hhcmVkOgotICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJzaGFyZWQi
KTsKLSAgICBjYXNlIFRlc3RQcm90b2NvbFR5cGVEb21haW5FbnVtUmVkOgotICAgICAgICByZXR1
cm4gQVNDSUlMaXRlcmFsKCJyZWQiKTsKLSAgICBjYXNlIFRlc3RQcm90b2NvbFR5cGVEb21haW5F
bnVtR3JlZW46Ci0gICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoImdyZWVuIik7Ci0gICAgY2Fz
ZSBUZXN0UHJvdG9jb2xUeXBlRG9tYWluRW51bUJsdWU6Ci0gICAgICAgIHJldHVybiBBU0NJSUxp
dGVyYWwoImJsdWUiKTsKLSAgICB9Ci19Ci0KLXRlbXBsYXRlPD4KLWlubGluZSBUZXN0UHJvdG9j
b2xUeXBlRG9tYWluRW51bSBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkK
LXsKLSAgICBpZiAodmFsdWUgPT0gInNoYXJlZCIpCi0gICAgICAgIHJldHVybiBUZXN0UHJvdG9j
b2xUeXBlRG9tYWluRW51bVNoYXJlZDsKLSAgICBpZiAodmFsdWUgPT0gInJlZCIpCi0gICAgICAg
IHJldHVybiBUZXN0UHJvdG9jb2xUeXBlRG9tYWluRW51bVJlZDsKLSAgICBpZiAodmFsdWUgPT0g
ImdyZWVuIikKLSAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbFR5cGVEb21haW5FbnVtR3JlZW47
Ci0gICAgaWYgKHZhbHVlID09ICJibHVlIikKLSAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbFR5
cGVEb21haW5FbnVtQmx1ZTsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4g
VGVzdFByb3RvY29sVHlwZURvbWFpbkVudW1TaGFyZWQ7Ci19Ci0KLQotaW5saW5lIFN0cmluZyB0
b1Byb3RvY29sU3RyaW5nKFRlc3RQcm90b2NvbENvbW1hbmREb21haW5Db21tYW5kV2l0aEVudW1S
ZXR1cm5WYWx1ZVJldHVyblZhbHVlIHZhbHVlKQotewotICAgIHN3aXRjaCh2YWx1ZSkgewotICAg
IGNhc2UgVGVzdFByb3RvY29sQ29tbWFuZERvbWFpbkNvbW1hbmRXaXRoRW51bVJldHVyblZhbHVl
UmV0dXJuVmFsdWVTaGFyZWQ6Ci0gICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoInNoYXJlZCIp
OwotICAgIGNhc2UgVGVzdFByb3RvY29sQ29tbWFuZERvbWFpbkNvbW1hbmRXaXRoRW51bVJldHVy
blZhbHVlUmV0dXJuVmFsdWVDeWFuOgotICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJjeWFu
Iik7Ci0gICAgY2FzZSBUZXN0UHJvdG9jb2xDb21tYW5kRG9tYWluQ29tbWFuZFdpdGhFbnVtUmV0
dXJuVmFsdWVSZXR1cm5WYWx1ZU1hZ2VudGE6Ci0gICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwo
Im1hZ2VudGEiKTsKLSAgICBjYXNlIFRlc3RQcm90b2NvbENvbW1hbmREb21haW5Db21tYW5kV2l0
aEVudW1SZXR1cm5WYWx1ZVJldHVyblZhbHVlWWVsbG93OgotICAgICAgICByZXR1cm4gQVNDSUlM
aXRlcmFsKCJ5ZWxsb3ciKTsKLSAgICB9Ci19Ci0KLXRlbXBsYXRlPD4KLWlubGluZSBUZXN0UHJv
dG9jb2xDb21tYW5kRG9tYWluQ29tbWFuZFdpdGhFbnVtUmV0dXJuVmFsdWVSZXR1cm5WYWx1ZSBm
cm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKLXsKLSAgICBpZiAodmFsdWUg
PT0gInNoYXJlZCIpCi0gICAgICAgIHJldHVybiBUZXN0UHJvdG9jb2xDb21tYW5kRG9tYWluQ29t
bWFuZFdpdGhFbnVtUmV0dXJuVmFsdWVSZXR1cm5WYWx1ZVNoYXJlZDsKLSAgICBpZiAodmFsdWUg
PT0gImN5YW4iKQotICAgICAgICByZXR1cm4gVGVzdFByb3RvY29sQ29tbWFuZERvbWFpbkNvbW1h
bmRXaXRoRW51bVJldHVyblZhbHVlUmV0dXJuVmFsdWVDeWFuOwotICAgIGlmICh2YWx1ZSA9PSAi
bWFnZW50YSIpCi0gICAgICAgIHJldHVybiBUZXN0UHJvdG9jb2xDb21tYW5kRG9tYWluQ29tbWFu
ZFdpdGhFbnVtUmV0dXJuVmFsdWVSZXR1cm5WYWx1ZU1hZ2VudGE7Ci0gICAgaWYgKHZhbHVlID09
ICJ5ZWxsb3ciKQotICAgICAgICByZXR1cm4gVGVzdFByb3RvY29sQ29tbWFuZERvbWFpbkNvbW1h
bmRXaXRoRW51bVJldHVyblZhbHVlUmV0dXJuVmFsdWVZZWxsb3c7Ci0gICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci0gICAgcmV0dXJuIFRlc3RQcm90b2NvbENvbW1hbmREb21haW5Db21tYW5kV2l0
aEVudW1SZXR1cm5WYWx1ZVJldHVyblZhbHVlU2hhcmVkOwotfQotCi0KLWlubGluZSBTdHJpbmcg
dG9Qcm90b2NvbFN0cmluZyhUZXN0UHJvdG9jb2xFdmVudERvbWFpbkV2ZW50V2l0aEVudW1QYXJh
bWV0ZXJQYXJhbWV0ZXIgdmFsdWUpCi17Ci0gICAgc3dpdGNoKHZhbHVlKSB7Ci0gICAgY2FzZSBU
ZXN0UHJvdG9jb2xFdmVudERvbWFpbkV2ZW50V2l0aEVudW1QYXJhbWV0ZXJQYXJhbWV0ZXJTaGFy
ZWQ6Ci0gICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoInNoYXJlZCIpOwotICAgIGNhc2UgVGVz
dFByb3RvY29sRXZlbnREb21haW5FdmVudFdpdGhFbnVtUGFyYW1ldGVyUGFyYW1ldGVyQmxhY2s6
Ci0gICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoImJsYWNrIik7Ci0gICAgY2FzZSBUZXN0UHJv
dG9jb2xFdmVudERvbWFpbkV2ZW50V2l0aEVudW1QYXJhbWV0ZXJQYXJhbWV0ZXJXaGl0ZToKLSAg
ICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgid2hpdGUiKTsKLSAgICB9Ci19Ci0KLXRlbXBsYXRl
PD4KLWlubGluZSBUZXN0UHJvdG9jb2xFdmVudERvbWFpbkV2ZW50V2l0aEVudW1QYXJhbWV0ZXJQ
YXJhbWV0ZXIgZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCi17Ci0gICAg
aWYgKHZhbHVlID09ICJzaGFyZWQiKQotICAgICAgICByZXR1cm4gVGVzdFByb3RvY29sRXZlbnRE
b21haW5FdmVudFdpdGhFbnVtUGFyYW1ldGVyUGFyYW1ldGVyU2hhcmVkOwotICAgIGlmICh2YWx1
ZSA9PSAiYmxhY2siKQotICAgICAgICByZXR1cm4gVGVzdFByb3RvY29sRXZlbnREb21haW5FdmVu
dFdpdGhFbnVtUGFyYW1ldGVyUGFyYW1ldGVyQmxhY2s7Ci0gICAgaWYgKHZhbHVlID09ICJ3aGl0
ZSIpCi0gICAgICAgIHJldHVybiBUZXN0UHJvdG9jb2xFdmVudERvbWFpbkV2ZW50V2l0aEVudW1Q
YXJhbWV0ZXJQYXJhbWV0ZXJXaGl0ZTsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICBy
ZXR1cm4gVGVzdFByb3RvY29sRXZlbnREb21haW5FdmVudFdpdGhFbnVtUGFyYW1ldGVyUGFyYW1l
dGVyU2hhcmVkOwotfQotCi19IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKLQotIyMjIEVuZCBGaWxl
OiBUZXN0UHJvdG9jb2xFbnVtQ29udmVyc2lvbkhlbHBlcnMuaAotCiAjIyMgQmVnaW4gRmlsZTog
VGVzdFByb3RvY29sRXZlbnREaXNwYXRjaGVycy5tbQogLyoKICAqIENvcHlyaWdodCAoQykgMjAx
MyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpAQCAtOTY2LDcgKzgzOCw3IEBAIGlu
bGluZSBUZXN0UHJvdG9jb2xFdmVudERvbWFpbkV2ZW50V2l0aEVudW1QYXJhbWV0ZXJQYXJhbWV0
ZXIgZnJvbVByb3RvY29sU3RyaW5nCiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIlRlc3RQ
cm90b2NvbEludGVybmFsLmgiCiAKLSNpbXBvcnQgIlRlc3RQcm90b2NvbEVudW1Db252ZXJzaW9u
SGVscGVycy5oIgorI2ltcG9ydCAiVGVzdFByb3RvY29sVHlwZUNvbnZlcnNpb25zLmgiCiAjaW1w
b3J0IDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JWYWx1ZXMuaD4KIAogdXNpbmcgbmFtZXNwYWNl
IEluc3BlY3RvcjsKQEAgLTExMjQsNiArOTk2LDEzNCBAQCBfX2F0dHJpYnV0ZV9fKCh2aXNpYmls
aXR5ICgiZGVmYXVsdCIpKSkKIAogIyMjIEVuZCBGaWxlOiBUZXN0UHJvdG9jb2xJbnRlcm5hbC5o
CiAKKyMjIyBCZWdpbiBGaWxlOiBUZXN0UHJvdG9jb2xUeXBlQ29udmVyc2lvbnMuaAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxNCBVbml2ZXJzaXR5IG9mIFdhc2hpbmd0b24uIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8vIERPIE5PVCBFRElUIFRISVMgRklMRS4gSXQgaXMg
YXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSBlbnVtLXZhbHVlcy5qc29uCisvLyBieSB0aGUg
c2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvZ2VuZXJhdGUt
aW5zcGVjdG9yLXByb3RvY29sLWJpbmRpbmdzLnB5CisKKyNpbXBvcnQgIlJXSVByb3RvY29sQXJy
YXlDb252ZXJzaW9ucy5oIgorCituYW1lc3BhY2UgSW5zcGVjdG9yIHsKKwordGVtcGxhdGU8dHlw
ZW5hbWUgT2JqQ0VudW1UeXBlPgorT2JqQ0VudW1UeXBlIGZyb21Qcm90b2NvbFN0cmluZyhjb25z
dCBTdHJpbmcmIHZhbHVlKTsKKworCitpbmxpbmUgU3RyaW5nIHRvUHJvdG9jb2xTdHJpbmcoVGVz
dFByb3RvY29sVHlwZURvbWFpbkVudW0gdmFsdWUpCit7CisgICAgc3dpdGNoKHZhbHVlKSB7Cisg
ICAgY2FzZSBUZXN0UHJvdG9jb2xUeXBlRG9tYWluRW51bVNoYXJlZDoKKyAgICAgICAgcmV0dXJu
IEFTQ0lJTGl0ZXJhbCgic2hhcmVkIik7CisgICAgY2FzZSBUZXN0UHJvdG9jb2xUeXBlRG9tYWlu
RW51bVJlZDoKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgicmVkIik7CisgICAgY2FzZSBU
ZXN0UHJvdG9jb2xUeXBlRG9tYWluRW51bUdyZWVuOgorICAgICAgICByZXR1cm4gQVNDSUlMaXRl
cmFsKCJncmVlbiIpOworICAgIGNhc2UgVGVzdFByb3RvY29sVHlwZURvbWFpbkVudW1CbHVlOgor
ICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJibHVlIik7CisgICAgfQorfQorCit0ZW1wbGF0
ZTw+CitpbmxpbmUgVGVzdFByb3RvY29sVHlwZURvbWFpbkVudW0gZnJvbVByb3RvY29sU3RyaW5n
KGNvbnN0IFN0cmluZyYgdmFsdWUpCit7CisgICAgaWYgKHZhbHVlID09ICJzaGFyZWQiKQorICAg
ICAgICByZXR1cm4gVGVzdFByb3RvY29sVHlwZURvbWFpbkVudW1TaGFyZWQ7CisgICAgaWYgKHZh
bHVlID09ICJyZWQiKQorICAgICAgICByZXR1cm4gVGVzdFByb3RvY29sVHlwZURvbWFpbkVudW1S
ZWQ7CisgICAgaWYgKHZhbHVlID09ICJncmVlbiIpCisgICAgICAgIHJldHVybiBUZXN0UHJvdG9j
b2xUeXBlRG9tYWluRW51bUdyZWVuOworICAgIGlmICh2YWx1ZSA9PSAiYmx1ZSIpCisgICAgICAg
IHJldHVybiBUZXN0UHJvdG9jb2xUeXBlRG9tYWluRW51bUJsdWU7CisgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgcmV0dXJuIFRlc3RQcm90b2NvbFR5cGVEb21haW5FbnVtU2hhcmVkOwor
fQorCisKK2lubGluZSBTdHJpbmcgdG9Qcm90b2NvbFN0cmluZyhUZXN0UHJvdG9jb2xDb21tYW5k
RG9tYWluQ29tbWFuZFdpdGhFbnVtUmV0dXJuVmFsdWVSZXR1cm5WYWx1ZSB2YWx1ZSkKK3sKKyAg
ICBzd2l0Y2godmFsdWUpIHsKKyAgICBjYXNlIFRlc3RQcm90b2NvbENvbW1hbmREb21haW5Db21t
YW5kV2l0aEVudW1SZXR1cm5WYWx1ZVJldHVyblZhbHVlU2hhcmVkOgorICAgICAgICByZXR1cm4g
QVNDSUlMaXRlcmFsKCJzaGFyZWQiKTsKKyAgICBjYXNlIFRlc3RQcm90b2NvbENvbW1hbmREb21h
aW5Db21tYW5kV2l0aEVudW1SZXR1cm5WYWx1ZVJldHVyblZhbHVlQ3lhbjoKKyAgICAgICAgcmV0
dXJuIEFTQ0lJTGl0ZXJhbCgiY3lhbiIpOworICAgIGNhc2UgVGVzdFByb3RvY29sQ29tbWFuZERv
bWFpbkNvbW1hbmRXaXRoRW51bVJldHVyblZhbHVlUmV0dXJuVmFsdWVNYWdlbnRhOgorICAgICAg
ICByZXR1cm4gQVNDSUlMaXRlcmFsKCJtYWdlbnRhIik7CisgICAgY2FzZSBUZXN0UHJvdG9jb2xD
b21tYW5kRG9tYWluQ29tbWFuZFdpdGhFbnVtUmV0dXJuVmFsdWVSZXR1cm5WYWx1ZVllbGxvdzoK
KyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgieWVsbG93Iik7CisgICAgfQorfQorCit0ZW1w
bGF0ZTw+CitpbmxpbmUgVGVzdFByb3RvY29sQ29tbWFuZERvbWFpbkNvbW1hbmRXaXRoRW51bVJl
dHVyblZhbHVlUmV0dXJuVmFsdWUgZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFs
dWUpCit7CisgICAgaWYgKHZhbHVlID09ICJzaGFyZWQiKQorICAgICAgICByZXR1cm4gVGVzdFBy
b3RvY29sQ29tbWFuZERvbWFpbkNvbW1hbmRXaXRoRW51bVJldHVyblZhbHVlUmV0dXJuVmFsdWVT
aGFyZWQ7CisgICAgaWYgKHZhbHVlID09ICJjeWFuIikKKyAgICAgICAgcmV0dXJuIFRlc3RQcm90
b2NvbENvbW1hbmREb21haW5Db21tYW5kV2l0aEVudW1SZXR1cm5WYWx1ZVJldHVyblZhbHVlQ3lh
bjsKKyAgICBpZiAodmFsdWUgPT0gIm1hZ2VudGEiKQorICAgICAgICByZXR1cm4gVGVzdFByb3Rv
Y29sQ29tbWFuZERvbWFpbkNvbW1hbmRXaXRoRW51bVJldHVyblZhbHVlUmV0dXJuVmFsdWVNYWdl
bnRhOworICAgIGlmICh2YWx1ZSA9PSAieWVsbG93IikKKyAgICAgICAgcmV0dXJuIFRlc3RQcm90
b2NvbENvbW1hbmREb21haW5Db21tYW5kV2l0aEVudW1SZXR1cm5WYWx1ZVJldHVyblZhbHVlWWVs
bG93OworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBUZXN0UHJvdG9jb2xD
b21tYW5kRG9tYWluQ29tbWFuZFdpdGhFbnVtUmV0dXJuVmFsdWVSZXR1cm5WYWx1ZVNoYXJlZDsK
K30KKworCitpbmxpbmUgU3RyaW5nIHRvUHJvdG9jb2xTdHJpbmcoVGVzdFByb3RvY29sRXZlbnRE
b21haW5FdmVudFdpdGhFbnVtUGFyYW1ldGVyUGFyYW1ldGVyIHZhbHVlKQoreworICAgIHN3aXRj
aCh2YWx1ZSkgeworICAgIGNhc2UgVGVzdFByb3RvY29sRXZlbnREb21haW5FdmVudFdpdGhFbnVt
UGFyYW1ldGVyUGFyYW1ldGVyU2hhcmVkOgorICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJz
aGFyZWQiKTsKKyAgICBjYXNlIFRlc3RQcm90b2NvbEV2ZW50RG9tYWluRXZlbnRXaXRoRW51bVBh
cmFtZXRlclBhcmFtZXRlckJsYWNrOgorICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJibGFj
ayIpOworICAgIGNhc2UgVGVzdFByb3RvY29sRXZlbnREb21haW5FdmVudFdpdGhFbnVtUGFyYW1l
dGVyUGFyYW1ldGVyV2hpdGU6CisgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIndoaXRlIik7
CisgICAgfQorfQorCit0ZW1wbGF0ZTw+CitpbmxpbmUgVGVzdFByb3RvY29sRXZlbnREb21haW5F
dmVudFdpdGhFbnVtUGFyYW1ldGVyUGFyYW1ldGVyIGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBT
dHJpbmcmIHZhbHVlKQoreworICAgIGlmICh2YWx1ZSA9PSAic2hhcmVkIikKKyAgICAgICAgcmV0
dXJuIFRlc3RQcm90b2NvbEV2ZW50RG9tYWluRXZlbnRXaXRoRW51bVBhcmFtZXRlclBhcmFtZXRl
clNoYXJlZDsKKyAgICBpZiAodmFsdWUgPT0gImJsYWNrIikKKyAgICAgICAgcmV0dXJuIFRlc3RQ
cm90b2NvbEV2ZW50RG9tYWluRXZlbnRXaXRoRW51bVBhcmFtZXRlclBhcmFtZXRlckJsYWNrOwor
ICAgIGlmICh2YWx1ZSA9PSAid2hpdGUiKQorICAgICAgICByZXR1cm4gVGVzdFByb3RvY29sRXZl
bnREb21haW5FdmVudFdpdGhFbnVtUGFyYW1ldGVyUGFyYW1ldGVyV2hpdGU7CisgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIFRlc3RQcm90b2NvbEV2ZW50RG9tYWluRXZlbnRX
aXRoRW51bVBhcmFtZXRlclBhcmFtZXRlclNoYXJlZDsKK30KKworfSAvLyBuYW1lc3BhY2UgSW5z
cGVjdG9yCisKKyMjIyBFbmQgRmlsZTogVGVzdFByb3RvY29sVHlwZUNvbnZlcnNpb25zLmgKKwog
IyMjIEJlZ2luIEZpbGU6IFRlc3RQcm90b2NvbFR5cGVzLm1tCiAvKgogICogQ29weXJpZ2h0IChD
KSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCkBAIC0xMTU4LDcgKzExNTgs
NyBAQCBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5ICgiZGVmYXVsdCIpKSkKICNpbXBvcnQgImNv
bmZpZy5oIgogI2ltcG9ydCAiVGVzdFByb3RvY29sSW50ZXJuYWwuaCIKIAotI2ltcG9ydCAiVGVz
dFByb3RvY29sRW51bUNvbnZlcnNpb25IZWxwZXJzLmgiCisjaW1wb3J0ICJUZXN0UHJvdG9jb2xU
eXBlQ29udmVyc2lvbnMuaCIKICNpbXBvcnQgPFdlYkluc3BlY3Rvci9SV0lQcm90b2NvbEpTT05P
YmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JWYWx1ZXMu
aD4KICNpbXBvcnQgPHd0Zi9Bc3NlcnRpb25zLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZXZlbnRzLXdpdGgtb3B0
aW9uYWwtcGFyYW1ldGVycy5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9ldmVudHMtd2l0aC1vcHRpb25hbC1wYXJhbWV0
ZXJzLmpzb24tcmVzdWx0CmluZGV4IDk3NzBkY2Y3MTc1YjFlZWU2OGU4YmRkMjNkNzcwZWU4NWUy
ZjU1NDguLjk1NDE4MzlhODhlNGRmZTkxMjE3ODMzYjVhOWE1MGVkMWZhM2M2YTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3Rl
ZC9ldmVudHMtd2l0aC1vcHRpb25hbC1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0CisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9ldmVudHMt
d2l0aC1vcHRpb25hbC1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0CkBAIC03MzgsNyArNzM4LDcgQEAg
X19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSAoImRlZmF1bHQiKSkpCiAjaW1wb3J0ICJUZXN0UHJv
dG9jb2xCYWNrZW5kRGlzcGF0Y2hlcnMuaCIKIAogI2luY2x1ZGUgIlRlc3RQcm90b2NvbEludGVy
bmFsLmgiCi0jaW5jbHVkZSAiVGVzdFByb3RvY29sRW51bUNvbnZlcnNpb25IZWxwZXJzLmgiCisj
aW5jbHVkZSAiVGVzdFByb3RvY29sVHlwZUNvbnZlcnNpb25zLmgiCiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvSW5zcGVjdG9yVmFsdWVzLmg+CiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewpAQCAt
NzQ5LDUwICs3NDksNiBAQCBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogIyMjIEVuZCBGaWxlOiBU
ZXN0UHJvdG9jb2xCYWNrZW5kRGlzcGF0Y2hlcnMubW0KIAotIyMjIEJlZ2luIEZpbGU6IFRlc3RQ
cm90b2NvbEVudW1Db252ZXJzaW9uSGVscGVycy5oCi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEz
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMs
IDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAy
MDE0IFVuaXZlcnNpdHkgb2YgV2FzaGluZ3Rvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
LSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
Ci0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotLy8gRE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVy
YXRlZCBmcm9tIGV2ZW50cy13aXRoLW9wdGlvbmFsLXBhcmFtZXRlcnMuanNvbgotLy8gYnkgdGhl
IHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2dlbmVyYXRl
LWluc3BlY3Rvci1wcm90b2NvbC1iaW5kaW5ncy5weQotCi0jaW1wb3J0ICJSV0lQcm90b2NvbEFy
cmF5Q29udmVyc2lvbkhlbHBlcnMuaCIKLQotbmFtZXNwYWNlIEluc3BlY3RvciB7Ci0KLXRlbXBs
YXRlPHR5cGVuYW1lIE9iakNFbnVtVHlwZT4KLU9iakNFbnVtVHlwZSBmcm9tUHJvdG9jb2xTdHJp
bmcoY29uc3QgU3RyaW5nJiB2YWx1ZSk7Ci0KLQotCi19IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IK
LQotIyMjIEVuZCBGaWxlOiBUZXN0UHJvdG9jb2xFbnVtQ29udmVyc2lvbkhlbHBlcnMuaAotCiAj
IyMgQmVnaW4gRmlsZTogVGVzdFByb3RvY29sRXZlbnREaXNwYXRjaGVycy5tbQogLyoKICAqIENv
cHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpAQCAtODI3
LDcgKzc4Myw3IEBAIE9iakNFbnVtVHlwZSBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5n
JiB2YWx1ZSk7CiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIlRlc3RQcm90b2NvbEludGVy
bmFsLmgiCiAKLSNpbXBvcnQgIlRlc3RQcm90b2NvbEVudW1Db252ZXJzaW9uSGVscGVycy5oIgor
I2ltcG9ydCAiVGVzdFByb3RvY29sVHlwZUNvbnZlcnNpb25zLmgiCiAjaW1wb3J0IDxKYXZhU2Ny
aXB0Q29yZS9JbnNwZWN0b3JWYWx1ZXMuaD4KIAogdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsK
QEAgLTEwMjIsNiArOTc4LDUwIEBAIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkgKCJkZWZhdWx0
IikpKQogCiAjIyMgRW5kIEZpbGU6IFRlc3RQcm90b2NvbEludGVybmFsLmgKIAorIyMjIEJlZ2lu
IEZpbGU6IFRlc3RQcm90b2NvbFR5cGVDb252ZXJzaW9ucy5oCisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDE0IFVuaXZlcnNpdHkgb2YgV2FzaGluZ3Rvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworLy8gRE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5
IGdlbmVyYXRlZCBmcm9tIGV2ZW50cy13aXRoLW9wdGlvbmFsLXBhcmFtZXRlcnMuanNvbgorLy8g
YnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2dl
bmVyYXRlLWluc3BlY3Rvci1wcm90b2NvbC1iaW5kaW5ncy5weQorCisjaW1wb3J0ICJSV0lQcm90
b2NvbEFycmF5Q29udmVyc2lvbnMuaCIKKworbmFtZXNwYWNlIEluc3BlY3RvciB7CisKK3RlbXBs
YXRlPHR5cGVuYW1lIE9iakNFbnVtVHlwZT4KK09iakNFbnVtVHlwZSBmcm9tUHJvdG9jb2xTdHJp
bmcoY29uc3QgU3RyaW5nJiB2YWx1ZSk7CisKKworCit9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IK
KworIyMjIEVuZCBGaWxlOiBUZXN0UHJvdG9jb2xUeXBlQ29udmVyc2lvbnMuaAorCiAjIyMgQmVn
aW4gRmlsZTogVGVzdFByb3RvY29sVHlwZXMubW0KIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KQEAgLTEwNTYsNyArMTA1Niw3IEBAIF9f
YXR0cmlidXRlX18oKHZpc2liaWxpdHkgKCJkZWZhdWx0IikpKQogI2ltcG9ydCAiY29uZmlnLmgi
CiAjaW1wb3J0ICJUZXN0UHJvdG9jb2xJbnRlcm5hbC5oIgogCi0jaW1wb3J0ICJUZXN0UHJvdG9j
b2xFbnVtQ29udmVyc2lvbkhlbHBlcnMuaCIKKyNpbXBvcnQgIlRlc3RQcm90b2NvbFR5cGVDb252
ZXJzaW9ucy5oIgogI2ltcG9ydCA8V2ViSW5zcGVjdG9yL1JXSVByb3RvY29sSlNPTk9iamVjdFBy
aXZhdGUuaD4KICNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvclZhbHVlcy5oPgogI2lt
cG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9nZW5lcmF0ZS1kb21haW5zLXdpdGgt
ZmVhdHVyZS1ndWFyZHMuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZ2VuZXJhdGUtZG9tYWlucy13aXRoLWZlYXR1cmUt
Z3VhcmRzLmpzb24tcmVzdWx0CmluZGV4IGMwNGY4OGQyYTQ0Njk0Y2EyZDJlNmQ4MzdiMmE2ZWYw
ZDljN2U1NzUuLjk4YzQ3ZmIwYjRjNzUwNDk0NmNjMjg1ZTVjZDliM2I5MDYyMjNlZDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBl
Y3RlZC9nZW5lcmF0ZS1kb21haW5zLXdpdGgtZmVhdHVyZS1ndWFyZHMuanNvbi1yZXN1bHQKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVk
L2dlbmVyYXRlLWRvbWFpbnMtd2l0aC1mZWF0dXJlLWd1YXJkcy5qc29uLXJlc3VsdApAQCAtODIw
LDcgKzgyMCw3IEBAIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkgKCJkZWZhdWx0IikpKQogI2lt
cG9ydCAiVGVzdFByb3RvY29sQmFja2VuZERpc3BhdGNoZXJzLmgiCiAKICNpbmNsdWRlICJUZXN0
UHJvdG9jb2xJbnRlcm5hbC5oIgotI2luY2x1ZGUgIlRlc3RQcm90b2NvbEVudW1Db252ZXJzaW9u
SGVscGVycy5oIgorI2luY2x1ZGUgIlRlc3RQcm90b2NvbFR5cGVDb252ZXJzaW9ucy5oIgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvclZhbHVlcy5oPgogCiBuYW1lc3BhY2UgSW5z
cGVjdG9yIHsKQEAgLTg1MCw1NCArODUwLDYgQEAgdm9pZCBPYmpDSW5zcGVjdG9yTmV0d29yazFC
YWNrZW5kRGlzcGF0Y2hlcjo6bG9hZFJlc291cmNlKGxvbmcgcmVxdWVzdElkKQogCiAjIyMgRW5k
IEZpbGU6IFRlc3RQcm90b2NvbEJhY2tlbmREaXNwYXRjaGVycy5tbQogCi0jIyMgQmVnaW4gRmls
ZTogVGVzdFByb3RvY29sRW51bUNvbnZlcnNpb25IZWxwZXJzLmgKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAo
QykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTQgVW5pdmVyc2l0eSBvZiBXYXNoaW5ndG9uLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0vLyBETyBOT1QgRURJVCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2Fs
bHkgZ2VuZXJhdGVkIGZyb20gZ2VuZXJhdGUtZG9tYWlucy13aXRoLWZlYXR1cmUtZ3VhcmRzLmpz
b24KLS8vIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2Ny
aXB0cy9nZW5lcmF0ZS1pbnNwZWN0b3ItcHJvdG9jb2wtYmluZGluZ3MucHkKLQotI2ltcG9ydCAi
UldJUHJvdG9jb2xBcnJheUNvbnZlcnNpb25IZWxwZXJzLmgiCi0KLW5hbWVzcGFjZSBJbnNwZWN0
b3IgewotCi10ZW1wbGF0ZTx0eXBlbmFtZSBPYmpDRW51bVR5cGU+Ci1PYmpDRW51bVR5cGUgZnJv
bVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpOwotCi0KLQotCi0KLQotCi19IC8v
IG5hbWVzcGFjZSBJbnNwZWN0b3IKLQotIyMjIEVuZCBGaWxlOiBUZXN0UHJvdG9jb2xFbnVtQ29u
dmVyc2lvbkhlbHBlcnMuaAotCiAjIyMgQmVnaW4gRmlsZTogVGVzdFByb3RvY29sRXZlbnREaXNw
YXRjaGVycy5tbQogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgpAQCAtOTMyLDcgKzg4NCw3IEBAIE9iakNFbnVtVHlwZSBmcm9tUHJvdG9j
b2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSk7CiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBv
cnQgIlRlc3RQcm90b2NvbEludGVybmFsLmgiCiAKLSNpbXBvcnQgIlRlc3RQcm90b2NvbEVudW1D
b252ZXJzaW9uSGVscGVycy5oIgorI2ltcG9ydCAiVGVzdFByb3RvY29sVHlwZUNvbnZlcnNpb25z
LmgiCiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JWYWx1ZXMuaD4KIAogdXNpbmcg
bmFtZXNwYWNlIEluc3BlY3RvcjsKQEAgLTEwNzUsNiArMTAyNyw1NCBAQCBfX2F0dHJpYnV0ZV9f
KCh2aXNpYmlsaXR5ICgiZGVmYXVsdCIpKSkKIAogIyMjIEVuZCBGaWxlOiBUZXN0UHJvdG9jb2xJ
bnRlcm5hbC5oCiAKKyMjIyBCZWdpbiBGaWxlOiBUZXN0UHJvdG9jb2xUeXBlQ29udmVyc2lvbnMu
aAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNCBVbml2ZXJzaXR5IG9mIFdhc2hpbmd0b24u
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8vIERPIE5PVCBFRElUIFRISVMgRklM
RS4gSXQgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSBnZW5lcmF0ZS1kb21haW5zLXdp
dGgtZmVhdHVyZS1ndWFyZHMuanNvbgorLy8gYnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2dlbmVyYXRlLWluc3BlY3Rvci1wcm90b2NvbC1iaW5k
aW5ncy5weQorCisjaW1wb3J0ICJSV0lQcm90b2NvbEFycmF5Q29udmVyc2lvbnMuaCIKKworbmFt
ZXNwYWNlIEluc3BlY3RvciB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIE9iakNFbnVtVHlwZT4KK09i
akNFbnVtVHlwZSBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSk7CisKKwor
CisKKworCisKK30gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgorCisjIyMgRW5kIEZpbGU6IFRlc3RQ
cm90b2NvbFR5cGVDb252ZXJzaW9ucy5oCisKICMjIyBCZWdpbiBGaWxlOiBUZXN0UHJvdG9jb2xU
eXBlcy5tbQogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgpAQCAtMTEwOSw3ICsxMTA5LDcgQEAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0
eSAoImRlZmF1bHQiKSkpCiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIlRlc3RQcm90b2Nv
bEludGVybmFsLmgiCiAKLSNpbXBvcnQgIlRlc3RQcm90b2NvbEVudW1Db252ZXJzaW9uSGVscGVy
cy5oIgorI2ltcG9ydCAiVGVzdFByb3RvY29sVHlwZUNvbnZlcnNpb25zLmgiCiAjaW1wb3J0IDxX
ZWJJbnNwZWN0b3IvUldJUHJvdG9jb2xKU09OT2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8SmF2
YVNjcmlwdENvcmUvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5o
PgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rl
c3RzL2V4cGVjdGVkL3NhbWUtdHlwZS1pZC1kaWZmZXJlbnQtZG9tYWluLmpzb24tcmVzdWx0IGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3Nh
bWUtdHlwZS1pZC1kaWZmZXJlbnQtZG9tYWluLmpzb24tcmVzdWx0CmluZGV4IDE5Mzg5ZGMwYWQ2
NDljY2Q2ZDVmNjBkYTUwMDk4MzViODVmODRjMWEuLjQzYzdiYzk1NzFkM2ZmNjdiMDlkNjQxNDZl
NjM2M2NlYjBjN2JkMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9zYW1lLXR5cGUtaWQtZGlmZmVyZW50LWRvbWFpbi5q
c29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMv
dGVzdHMvZXhwZWN0ZWQvc2FtZS10eXBlLWlkLWRpZmZlcmVudC1kb21haW4uanNvbi1yZXN1bHQK
QEAgLTU5OCw3ICs1OTgsNyBAQCBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5ICgiZGVmYXVsdCIp
KSkKICNpbXBvcnQgIlRlc3RQcm90b2NvbEJhY2tlbmREaXNwYXRjaGVycy5oIgogCiAjaW5jbHVk
ZSAiVGVzdFByb3RvY29sSW50ZXJuYWwuaCIKLSNpbmNsdWRlICJUZXN0UHJvdG9jb2xFbnVtQ29u
dmVyc2lvbkhlbHBlcnMuaCIKKyNpbmNsdWRlICJUZXN0UHJvdG9jb2xUeXBlQ29udmVyc2lvbnMu
aCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JWYWx1ZXMuaD4KIAogbmFtZXNw
YWNlIEluc3BlY3RvciB7CkBAIC02MTEsNyArNjExLDcgQEAgbmFtZXNwYWNlIEluc3BlY3RvciB7
CiAKICMjIyBFbmQgRmlsZTogVGVzdFByb3RvY29sQmFja2VuZERpc3BhdGNoZXJzLm1tCiAKLSMj
IyBCZWdpbiBGaWxlOiBUZXN0UHJvdG9jb2xFbnVtQ29udmVyc2lvbkhlbHBlcnMuaAorIyMjIEJl
Z2luIEZpbGU6IFRlc3RQcm90b2NvbEV2ZW50RGlzcGF0Y2hlcnMubW0KIC8qCiAgKiBDb3B5cmln
aHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdo
dCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCkBAIC02NDIs
MjIgKzY0MiwyMiBAQCBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIC8vIERPIE5PVCBFRElUIFRISVMg
RklMRS4gSXQgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSBzYW1lLXR5cGUtaWQtZGlm
ZmVyZW50LWRvbWFpbi5qc29uCiAvLyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3NjcmlwdHMvZ2VuZXJhdGUtaW5zcGVjdG9yLXByb3RvY29sLWJpbmRpbmdz
LnB5CiAKLSNpbXBvcnQgIlJXSVByb3RvY29sQXJyYXlDb252ZXJzaW9uSGVscGVycy5oIgorI2lt
cG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJUZXN0UHJvdG9jb2xJbnRlcm5hbC5oIgogCi1uYW1l
c3BhY2UgSW5zcGVjdG9yIHsKKyNpbXBvcnQgIlRlc3RQcm90b2NvbFR5cGVDb252ZXJzaW9ucy5o
IgorI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yVmFsdWVzLmg+CiAKLXRlbXBsYXRl
PHR5cGVuYW1lIE9iakNFbnVtVHlwZT4KLU9iakNFbnVtVHlwZSBmcm9tUHJvdG9jb2xTdHJpbmco
Y29uc3QgU3RyaW5nJiB2YWx1ZSk7Cit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiAKIAog
CiAKLX0gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgogCi0jIyMgRW5kIEZpbGU6IFRlc3RQcm90b2Nv
bEVudW1Db252ZXJzaW9uSGVscGVycy5oCisjIyMgRW5kIEZpbGU6IFRlc3RQcm90b2NvbEV2ZW50
RGlzcGF0Y2hlcnMubW0KIAotIyMjIEJlZ2luIEZpbGU6IFRlc3RQcm90b2NvbEV2ZW50RGlzcGF0
Y2hlcnMubW0KKyMjIyBCZWdpbiBGaWxlOiBUZXN0UHJvdG9jb2wuaAogLyoKICAqIENvcHlyaWdo
dCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0
IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KQEAgLTY4OCwy
MiArNjg4LDI1IEBAIE9iakNFbnVtVHlwZSBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5n
JiB2YWx1ZSk7CiAvLyBETyBOT1QgRURJVCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkg
Z2VuZXJhdGVkIGZyb20gc2FtZS10eXBlLWlkLWRpZmZlcmVudC1kb21haW4uanNvbgogLy8gYnkg
dGhlIHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2dlbmVy
YXRlLWluc3BlY3Rvci1wcm90b2NvbC1iaW5kaW5ncy5weQogCi0jaW1wb3J0ICJjb25maWcuaCIK
LSNpbXBvcnQgIlRlc3RQcm90b2NvbEludGVybmFsLmgiCisjaW1wb3J0IDxGb3VuZGF0aW9uL0Zv
dW5kYXRpb24uaD4KIAotI2ltcG9ydCAiVGVzdFByb3RvY29sRW51bUNvbnZlcnNpb25IZWxwZXJz
LmgiCi0jaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JWYWx1ZXMuaD4KKyNpbXBvcnQg
PFdlYkluc3BlY3Rvci9SV0lQcm90b2NvbEpTT05PYmplY3QuaD4KIAotdXNpbmcgbmFtZXNwYWNl
IEluc3BlY3RvcjsKIAogCiAKIAogCiAKLSMjIyBFbmQgRmlsZTogVGVzdFByb3RvY29sRXZlbnRE
aXNwYXRjaGVycy5tbQogCi0jIyMgQmVnaW4gRmlsZTogVGVzdFByb3RvY29sLmgKKworCisKKwor
CisjIyMgRW5kIEZpbGU6IFRlc3RQcm90b2NvbC5oCisKKyMjIyBCZWdpbiBGaWxlOiBUZXN0UHJv
dG9jb2xJbnRlcm5hbC5oCiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgpAQCAtNzM0LDI1ICs3MzcsMTcgQEAgdXNpbmcgbmFtZXNw
YWNlIEluc3BlY3RvcjsKIC8vIERPIE5PVCBFRElUIFRISVMgRklMRS4gSXQgaXMgYXV0b21hdGlj
YWxseSBnZW5lcmF0ZWQgZnJvbSBzYW1lLXR5cGUtaWQtZGlmZmVyZW50LWRvbWFpbi5qc29uCiAv
LyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMv
Z2VuZXJhdGUtaW5zcGVjdG9yLXByb3RvY29sLWJpbmRpbmdzLnB5CiAKLSNpbXBvcnQgPEZvdW5k
YXRpb24vRm91bmRhdGlvbi5oPgotCi0jaW1wb3J0IDxXZWJJbnNwZWN0b3IvUldJUHJvdG9jb2xK
U09OT2JqZWN0Lmg+Ci0KLQotCi0KLQotCi0KLQotCisjaW1wb3J0ICJUZXN0UHJvdG9jb2wuaCIK
KyNpbXBvcnQgIlRlc3RQcm90b2NvbEpTT05PYmplY3RQcml2YXRlLmgiCisjaW1wb3J0IDxKYXZh
U2NyaXB0Q29yZS9BdWdtZW50YWJsZUluc3BlY3RvckNvbnRyb2xsZXIuaD4KKyNpbXBvcnQgPEph
dmFTY3JpcHRDb3JlL0luc3BlY3RvclZhbHVlcy5oPgogCiAKIAogCi0jIyMgRW5kIEZpbGU6IFRl
c3RQcm90b2NvbC5oCisjIyMgRW5kIEZpbGU6IFRlc3RQcm90b2NvbEludGVybmFsLmgKIAotIyMj
IEJlZ2luIEZpbGU6IFRlc3RQcm90b2NvbEludGVybmFsLmgKKyMjIyBCZWdpbiBGaWxlOiBUZXN0
UHJvdG9jb2xUeXBlQ29udmVyc2lvbnMuaAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMyBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KQEAgLTc4MywxNSArNzc4LDIwIEBAIHVz
aW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAvLyBETyBOT1QgRURJVCBUSElTIEZJTEUuIEl0IGlz
IGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gc2FtZS10eXBlLWlkLWRpZmZlcmVudC1kb21h
aW4uanNvbgogLy8gYnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9zY3JpcHRzL2dlbmVyYXRlLWluc3BlY3Rvci1wcm90b2NvbC1iaW5kaW5ncy5weQogCi0jaW1w
b3J0ICJUZXN0UHJvdG9jb2wuaCIKLSNpbXBvcnQgIlRlc3RQcm90b2NvbEpTT05PYmplY3RQcml2
YXRlLmgiCi0jaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9BdWdtZW50YWJsZUluc3BlY3RvckNvbnRy
b2xsZXIuaD4KLSNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvclZhbHVlcy5oPgorI2lt
cG9ydCAiUldJUHJvdG9jb2xBcnJheUNvbnZlcnNpb25zLmgiCiAKK25hbWVzcGFjZSBJbnNwZWN0
b3IgewogCit0ZW1wbGF0ZTx0eXBlbmFtZSBPYmpDRW51bVR5cGU+CitPYmpDRW51bVR5cGUgZnJv
bVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpOwogCiAKLSMjIyBFbmQgRmlsZTog
VGVzdFByb3RvY29sSW50ZXJuYWwuaAorCisKKworfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCisK
KyMjIyBFbmQgRmlsZTogVGVzdFByb3RvY29sVHlwZUNvbnZlcnNpb25zLmgKIAogIyMjIEJlZ2lu
IEZpbGU6IFRlc3RQcm90b2NvbFR5cGVzLm1tCiAvKgpAQCAtODI3LDcgKzgyNyw3IEBAIHVzaW5n
IG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIlRlc3RQ
cm90b2NvbEludGVybmFsLmgiCiAKLSNpbXBvcnQgIlRlc3RQcm90b2NvbEVudW1Db252ZXJzaW9u
SGVscGVycy5oIgorI2ltcG9ydCAiVGVzdFByb3RvY29sVHlwZUNvbnZlcnNpb25zLmgiCiAjaW1w
b3J0IDxXZWJJbnNwZWN0b3IvUldJUHJvdG9jb2xKU09OT2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9y
dCA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW1wb3J0IDx3dGYvQXNzZXJ0
aW9ucy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3Jp
cHRzL3Rlc3RzL2V4cGVjdGVkL3NoYWRvd2VkLW9wdGlvbmFsLXR5cGUtc2V0dGVycy5qc29uLXJl
c3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBl
Y3RlZC9zaGFkb3dlZC1vcHRpb25hbC10eXBlLXNldHRlcnMuanNvbi1yZXN1bHQKaW5kZXggNzRj
NzdjMmFmM2FlNDA0OTdiZTVlYzAwNmY4YzgyMjk2MWViZjkwNC4uZmYzYTE2NDdiMjM4MzcxOTkx
YmQ5OThhNzY3ZTVkMWY2MWM5N2E5ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3NoYWRvd2VkLW9wdGlvbmFsLXR5cGUt
c2V0dGVycy5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvc2hhZG93ZWQtb3B0aW9uYWwtdHlwZS1zZXR0ZXJzLmpz
b24tcmVzdWx0CkBAIC02NjksNyArNjY5LDcgQEAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSAo
ImRlZmF1bHQiKSkpCiAjaW1wb3J0ICJUZXN0UHJvdG9jb2xCYWNrZW5kRGlzcGF0Y2hlcnMuaCIK
IAogI2luY2x1ZGUgIlRlc3RQcm90b2NvbEludGVybmFsLmgiCi0jaW5jbHVkZSAiVGVzdFByb3Rv
Y29sRW51bUNvbnZlcnNpb25IZWxwZXJzLmgiCisjaW5jbHVkZSAiVGVzdFByb3RvY29sVHlwZUNv
bnZlcnNpb25zLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yVmFsdWVzLmg+
CiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewpAQCAtNjgwLDc0ICs2ODAsNiBAQCBuYW1lc3BhY2Ug
SW5zcGVjdG9yIHsKIAogIyMjIEVuZCBGaWxlOiBUZXN0UHJvdG9jb2xCYWNrZW5kRGlzcGF0Y2hl
cnMubW0KIAotIyMjIEJlZ2luIEZpbGU6IFRlc3RQcm90b2NvbEVudW1Db252ZXJzaW9uSGVscGVy
cy5oCi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDE0IFVuaXZlcnNpdHkgb2YgV2FzaGluZ3Rv
bi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotLy8gRE8gTk9UIEVESVQgVEhJUyBG
SUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIHNoYWRvd2VkLW9wdGlvbmFs
LXR5cGUtc2V0dGVycy5qc29uCi0vLyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3NjcmlwdHMvZ2VuZXJhdGUtaW5zcGVjdG9yLXByb3RvY29sLWJpbmRpbmdz
LnB5Ci0KLSNpbXBvcnQgIlJXSVByb3RvY29sQXJyYXlDb252ZXJzaW9uSGVscGVycy5oIgotCi1u
YW1lc3BhY2UgSW5zcGVjdG9yIHsKLQotdGVtcGxhdGU8dHlwZW5hbWUgT2JqQ0VudW1UeXBlPgot
T2JqQ0VudW1UeXBlIGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKTsKLQot
Ci1pbmxpbmUgU3RyaW5nIHRvUHJvdG9jb2xTdHJpbmcoVGVzdFByb3RvY29sUnVudGltZUtleVBh
dGhUeXBlIHZhbHVlKQotewotICAgIHN3aXRjaCh2YWx1ZSkgewotICAgIGNhc2UgVGVzdFByb3Rv
Y29sUnVudGltZUtleVBhdGhUeXBlTnVsbDoKLSAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgi
bnVsbCIpOwotICAgIGNhc2UgVGVzdFByb3RvY29sUnVudGltZUtleVBhdGhUeXBlU3RyaW5nOgot
ICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJzdHJpbmciKTsKLSAgICBjYXNlIFRlc3RQcm90
b2NvbFJ1bnRpbWVLZXlQYXRoVHlwZUFycmF5OgotICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFs
KCJhcnJheSIpOwotICAgIH0KLX0KLQotdGVtcGxhdGU8PgotaW5saW5lIFRlc3RQcm90b2NvbFJ1
bnRpbWVLZXlQYXRoVHlwZSBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkK
LXsKLSAgICBpZiAodmFsdWUgPT0gIm51bGwiKQotICAgICAgICByZXR1cm4gVGVzdFByb3RvY29s
UnVudGltZUtleVBhdGhUeXBlTnVsbDsKLSAgICBpZiAodmFsdWUgPT0gInN0cmluZyIpCi0gICAg
ICAgIHJldHVybiBUZXN0UHJvdG9jb2xSdW50aW1lS2V5UGF0aFR5cGVTdHJpbmc7Ci0gICAgaWYg
KHZhbHVlID09ICJhcnJheSIpCi0gICAgICAgIHJldHVybiBUZXN0UHJvdG9jb2xSdW50aW1lS2V5
UGF0aFR5cGVBcnJheTsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gVGVz
dFByb3RvY29sUnVudGltZUtleVBhdGhUeXBlTnVsbDsKLX0KLQotfSAvLyBuYW1lc3BhY2UgSW5z
cGVjdG9yCi0KLSMjIyBFbmQgRmlsZTogVGVzdFByb3RvY29sRW51bUNvbnZlcnNpb25IZWxwZXJz
LmgKLQogIyMjIEJlZ2luIEZpbGU6IFRlc3RQcm90b2NvbEV2ZW50RGlzcGF0Y2hlcnMubW0KIC8q
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
QEAgLTc4Miw3ICs3MTQsNyBAQCBpbmxpbmUgVGVzdFByb3RvY29sUnVudGltZUtleVBhdGhUeXBl
IGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQogI2ltcG9ydCAiY29uZmln
LmgiCiAjaW1wb3J0ICJUZXN0UHJvdG9jb2xJbnRlcm5hbC5oIgogCi0jaW1wb3J0ICJUZXN0UHJv
dG9jb2xFbnVtQ29udmVyc2lvbkhlbHBlcnMuaCIKKyNpbXBvcnQgIlRlc3RQcm90b2NvbFR5cGVD
b252ZXJzaW9ucy5oIgogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yVmFsdWVzLmg+
CiAKIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CkBAIC04OTUsNiArODI3LDc0IEBAIF9fYXR0
cmlidXRlX18oKHZpc2liaWxpdHkgKCJkZWZhdWx0IikpKQogCiAjIyMgRW5kIEZpbGU6IFRlc3RQ
cm90b2NvbEludGVybmFsLmgKIAorIyMjIEJlZ2luIEZpbGU6IFRlc3RQcm90b2NvbFR5cGVDb252
ZXJzaW9ucy5oCisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0IFVuaXZlcnNpdHkgb2YgV2Fz
aGluZ3Rvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLy8gRE8gTk9UIEVESVQg
VEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIHNoYWRvd2VkLW9w
dGlvbmFsLXR5cGUtc2V0dGVycy5qc29uCisvLyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvZ2VuZXJhdGUtaW5zcGVjdG9yLXByb3RvY29sLWJp
bmRpbmdzLnB5CisKKyNpbXBvcnQgIlJXSVByb3RvY29sQXJyYXlDb252ZXJzaW9ucy5oIgorCitu
YW1lc3BhY2UgSW5zcGVjdG9yIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgT2JqQ0VudW1UeXBlPgor
T2JqQ0VudW1UeXBlIGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKTsKKwor
CitpbmxpbmUgU3RyaW5nIHRvUHJvdG9jb2xTdHJpbmcoVGVzdFByb3RvY29sUnVudGltZUtleVBh
dGhUeXBlIHZhbHVlKQoreworICAgIHN3aXRjaCh2YWx1ZSkgeworICAgIGNhc2UgVGVzdFByb3Rv
Y29sUnVudGltZUtleVBhdGhUeXBlTnVsbDoKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgi
bnVsbCIpOworICAgIGNhc2UgVGVzdFByb3RvY29sUnVudGltZUtleVBhdGhUeXBlU3RyaW5nOgor
ICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJzdHJpbmciKTsKKyAgICBjYXNlIFRlc3RQcm90
b2NvbFJ1bnRpbWVLZXlQYXRoVHlwZUFycmF5OgorICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFs
KCJhcnJheSIpOworICAgIH0KK30KKwordGVtcGxhdGU8PgoraW5saW5lIFRlc3RQcm90b2NvbFJ1
bnRpbWVLZXlQYXRoVHlwZSBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkK
K3sKKyAgICBpZiAodmFsdWUgPT0gIm51bGwiKQorICAgICAgICByZXR1cm4gVGVzdFByb3RvY29s
UnVudGltZUtleVBhdGhUeXBlTnVsbDsKKyAgICBpZiAodmFsdWUgPT0gInN0cmluZyIpCisgICAg
ICAgIHJldHVybiBUZXN0UHJvdG9jb2xSdW50aW1lS2V5UGF0aFR5cGVTdHJpbmc7CisgICAgaWYg
KHZhbHVlID09ICJhcnJheSIpCisgICAgICAgIHJldHVybiBUZXN0UHJvdG9jb2xSdW50aW1lS2V5
UGF0aFR5cGVBcnJheTsKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gVGVz
dFByb3RvY29sUnVudGltZUtleVBhdGhUeXBlTnVsbDsKK30KKworfSAvLyBuYW1lc3BhY2UgSW5z
cGVjdG9yCisKKyMjIyBFbmQgRmlsZTogVGVzdFByb3RvY29sVHlwZUNvbnZlcnNpb25zLmgKKwog
IyMjIEJlZ2luIEZpbGU6IFRlc3RQcm90b2NvbFR5cGVzLm1tCiAvKgogICogQ29weXJpZ2h0IChD
KSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCkBAIC05MjksNyArOTI5LDcg
QEAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSAoImRlZmF1bHQiKSkpCiAjaW1wb3J0ICJjb25m
aWcuaCIKICNpbXBvcnQgIlRlc3RQcm90b2NvbEludGVybmFsLmgiCiAKLSNpbXBvcnQgIlRlc3RQ
cm90b2NvbEVudW1Db252ZXJzaW9uSGVscGVycy5oIgorI2ltcG9ydCAiVGVzdFByb3RvY29sVHlw
ZUNvbnZlcnNpb25zLmgiCiAjaW1wb3J0IDxXZWJJbnNwZWN0b3IvUldJUHJvdG9jb2xKU09OT2Jq
ZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yVmFsdWVzLmg+
CiAjaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24t
YWxpYXNlZC1wcmltaXRpdmUtdHlwZS5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLWFsaWFz
ZWQtcHJpbWl0aXZlLXR5cGUuanNvbi1yZXN1bHQKaW5kZXggNjcwM2ZhOGI3MjBhZWEwNzFiZjQ1
MTQyMzY0NDY5Y2ZlYjQ4Y2M4My4uMTkwN2ZlMGZjYjZmZGRmNjQ0ZjA0OTY0OTM4OTM2NzM5YWZk
ZTUyYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRz
L3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tYWxpYXNlZC1wcmltaXRpdmUtdHlwZS5q
c29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMv
dGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1hbGlhc2VkLXByaW1pdGl2ZS10eXBlLmpz
b24tcmVzdWx0CkBAIC01OTEsNyArNTkxLDcgQEAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSAo
ImRlZmF1bHQiKSkpCiAjaW1wb3J0ICJUZXN0UHJvdG9jb2xCYWNrZW5kRGlzcGF0Y2hlcnMuaCIK
IAogI2luY2x1ZGUgIlRlc3RQcm90b2NvbEludGVybmFsLmgiCi0jaW5jbHVkZSAiVGVzdFByb3Rv
Y29sRW51bUNvbnZlcnNpb25IZWxwZXJzLmgiCisjaW5jbHVkZSAiVGVzdFByb3RvY29sVHlwZUNv
bnZlcnNpb25zLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yVmFsdWVzLmg+
CiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewpAQCAtNjAyLDcgKzYwMiw3IEBAIG5hbWVzcGFjZSBJ
bnNwZWN0b3IgewogCiAjIyMgRW5kIEZpbGU6IFRlc3RQcm90b2NvbEJhY2tlbmREaXNwYXRjaGVy
cy5tbQogCi0jIyMgQmVnaW4gRmlsZTogVGVzdFByb3RvY29sRW51bUNvbnZlcnNpb25IZWxwZXJz
LmgKKyMjIyBCZWdpbiBGaWxlOiBUZXN0UHJvdG9jb2xFdmVudERpc3BhdGNoZXJzLm1tCiAvKgog
ICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgpAQCAtNjMzLDIwICs2MzMsMjAgQEAgbmFtZXNwYWNlIEluc3BlY3RvciB7CiAvLyBETyBOT1Qg
RURJVCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gdHlwZS1k
ZWNsYXJhdGlvbi1hbGlhc2VkLXByaW1pdGl2ZS10eXBlLmpzb24KIC8vIGJ5IHRoZSBzY3JpcHQ6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9nZW5lcmF0ZS1pbnNwZWN0
b3ItcHJvdG9jb2wtYmluZGluZ3MucHkKIAotI2ltcG9ydCAiUldJUHJvdG9jb2xBcnJheUNvbnZl
cnNpb25IZWxwZXJzLmgiCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlRlc3RQcm90b2Nv
bEludGVybmFsLmgiCiAKLW5hbWVzcGFjZSBJbnNwZWN0b3IgeworI2ltcG9ydCAiVGVzdFByb3Rv
Y29sVHlwZUNvbnZlcnNpb25zLmgiCisjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JW
YWx1ZXMuaD4KIAotdGVtcGxhdGU8dHlwZW5hbWUgT2JqQ0VudW1UeXBlPgotT2JqQ0VudW1UeXBl
IGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKTsKK3VzaW5nIG5hbWVzcGFj
ZSBJbnNwZWN0b3I7CiAKIAogCi19IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKIAotIyMjIEVuZCBG
aWxlOiBUZXN0UHJvdG9jb2xFbnVtQ29udmVyc2lvbkhlbHBlcnMuaAorIyMjIEVuZCBGaWxlOiBU
ZXN0UHJvdG9jb2xFdmVudERpc3BhdGNoZXJzLm1tCiAKLSMjIyBCZWdpbiBGaWxlOiBUZXN0UHJv
dG9jb2xFdmVudERpc3BhdGNoZXJzLm1tCisjIyMgQmVnaW4gRmlsZTogVGVzdFByb3RvY29sLmgK
IC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCkBAIC02NzcsMjAgKzY3NywyNSBAQCBPYmpDRW51bVR5cGUgZnJvbVByb3RvY29sU3Ry
aW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpOwogLy8gRE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJdCBp
cyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIHR5cGUtZGVjbGFyYXRpb24tYWxpYXNlZC1w
cmltaXRpdmUtdHlwZS5qc29uCiAvLyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3NjcmlwdHMvZ2VuZXJhdGUtaW5zcGVjdG9yLXByb3RvY29sLWJpbmRpbmdz
LnB5CiAKLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiVGVzdFByb3RvY29sSW50ZXJuYWwu
aCIKKyNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgogCi0jaW1wb3J0ICJUZXN0UHJv
dG9jb2xFbnVtQ29udmVyc2lvbkhlbHBlcnMuaCIKLSNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0lu
c3BlY3RvclZhbHVlcy5oPgorI2ltcG9ydCA8V2ViSW5zcGVjdG9yL1JXSVByb3RvY29sSlNPTk9i
amVjdC5oPgogCi11c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiAKIAogCi0jIyMgRW5kIEZp
bGU6IFRlc3RQcm90b2NvbEV2ZW50RGlzcGF0Y2hlcnMubW0KIAotIyMjIEJlZ2luIEZpbGU6IFRl
c3RQcm90b2NvbC5oCisKKworCisKKworCisKKyMjIyBFbmQgRmlsZTogVGVzdFByb3RvY29sLmgK
KworIyMjIEJlZ2luIEZpbGU6IFRlc3RQcm90b2NvbEludGVybmFsLmgKIC8qCiAgKiBDb3B5cmln
aHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdo
dCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCkBAIC03MjEs
MjUgKzcyNiwxNyBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogLy8gRE8gTk9UIEVESVQg
VEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIHR5cGUtZGVjbGFy
YXRpb24tYWxpYXNlZC1wcmltaXRpdmUtdHlwZS5qc29uCiAvLyBieSB0aGUgc2NyaXB0OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvZ2VuZXJhdGUtaW5zcGVjdG9yLXBy
b3RvY29sLWJpbmRpbmdzLnB5CiAKLSNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgot
Ci0jaW1wb3J0IDxXZWJJbnNwZWN0b3IvUldJUHJvdG9jb2xKU09OT2JqZWN0Lmg+Ci0KLQotCi0K
LQotCi0KLQotCisjaW1wb3J0ICJUZXN0UHJvdG9jb2wuaCIKKyNpbXBvcnQgIlRlc3RQcm90b2Nv
bEpTT05PYmplY3RQcml2YXRlLmgiCisjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9BdWdtZW50YWJs
ZUluc3BlY3RvckNvbnRyb2xsZXIuaD4KKyNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0luc3BlY3Rv
clZhbHVlcy5oPgogCiAKIAogCi0jIyMgRW5kIEZpbGU6IFRlc3RQcm90b2NvbC5oCisjIyMgRW5k
IEZpbGU6IFRlc3RQcm90b2NvbEludGVybmFsLmgKIAotIyMjIEJlZ2luIEZpbGU6IFRlc3RQcm90
b2NvbEludGVybmFsLmgKKyMjIyBCZWdpbiBGaWxlOiBUZXN0UHJvdG9jb2xUeXBlQ29udmVyc2lv
bnMuaAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KQEAgLTc3MCwxNSArNzY3LDE4IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0
b3I7CiAvLyBETyBOT1QgRURJVCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJh
dGVkIGZyb20gdHlwZS1kZWNsYXJhdGlvbi1hbGlhc2VkLXByaW1pdGl2ZS10eXBlLmpzb24KIC8v
IGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9n
ZW5lcmF0ZS1pbnNwZWN0b3ItcHJvdG9jb2wtYmluZGluZ3MucHkKIAotI2ltcG9ydCAiVGVzdFBy
b3RvY29sLmgiCi0jaW1wb3J0ICJUZXN0UHJvdG9jb2xKU09OT2JqZWN0UHJpdmF0ZS5oIgotI2lt
cG9ydCA8SmF2YVNjcmlwdENvcmUvQXVnbWVudGFibGVJbnNwZWN0b3JDb250cm9sbGVyLmg+Ci0j
aW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JWYWx1ZXMuaD4KKyNpbXBvcnQgIlJXSVBy
b3RvY29sQXJyYXlDb252ZXJzaW9ucy5oIgogCituYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAordGVt
cGxhdGU8dHlwZW5hbWUgT2JqQ0VudW1UeXBlPgorT2JqQ0VudW1UeXBlIGZyb21Qcm90b2NvbFN0
cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKTsKIAogCi0jIyMgRW5kIEZpbGU6IFRlc3RQcm90b2Nv
bEludGVybmFsLmgKKworfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCisKKyMjIyBFbmQgRmlsZTog
VGVzdFByb3RvY29sVHlwZUNvbnZlcnNpb25zLmgKIAogIyMjIEJlZ2luIEZpbGU6IFRlc3RQcm90
b2NvbFR5cGVzLm1tCiAvKgpAQCAtODE0LDcgKzgxNCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNw
ZWN0b3I7CiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIlRlc3RQcm90b2NvbEludGVybmFs
LmgiCiAKLSNpbXBvcnQgIlRlc3RQcm90b2NvbEVudW1Db252ZXJzaW9uSGVscGVycy5oIgorI2lt
cG9ydCAiVGVzdFByb3RvY29sVHlwZUNvbnZlcnNpb25zLmgiCiAjaW1wb3J0IDxXZWJJbnNwZWN0
b3IvUldJUHJvdG9jb2xKU09OT2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9ydCA8SmF2YVNjcmlwdENv
cmUvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVj
dGVkL3R5cGUtZGVjbGFyYXRpb24tYXJyYXktdHlwZS5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLWRlY2xhcmF0
aW9uLWFycmF5LXR5cGUuanNvbi1yZXN1bHQKaW5kZXggZjg4MTQ2ODE2YzQxMzdiOGQ4NDExZTc0
ZTY5ZmZmODNjOTlhMDRmMS4uYjAxNjk2ZDZkNjM1ZDhkNWFlZTcyZGVmZTUxMTNjOGMzOGVkMjE1
OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rl
c3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tYXJyYXktdHlwZS5qc29uLXJlc3VsdAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQv
dHlwZS1kZWNsYXJhdGlvbi1hcnJheS10eXBlLmpzb24tcmVzdWx0CkBAIC02MjEsNyArNjIxLDcg
QEAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSAoImRlZmF1bHQiKSkpCiAjaW1wb3J0ICJUZXN0
UHJvdG9jb2xCYWNrZW5kRGlzcGF0Y2hlcnMuaCIKIAogI2luY2x1ZGUgIlRlc3RQcm90b2NvbElu
dGVybmFsLmgiCi0jaW5jbHVkZSAiVGVzdFByb3RvY29sRW51bUNvbnZlcnNpb25IZWxwZXJzLmgi
CisjaW5jbHVkZSAiVGVzdFByb3RvY29sVHlwZUNvbnZlcnNpb25zLmgiCiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvSW5zcGVjdG9yVmFsdWVzLmg+CiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewpA
QCAtNjM0LDcgKzYzNCw3IEBAIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiAjIyMgRW5kIEZpbGU6
IFRlc3RQcm90b2NvbEJhY2tlbmREaXNwYXRjaGVycy5tbQogCi0jIyMgQmVnaW4gRmlsZTogVGVz
dFByb3RvY29sRW51bUNvbnZlcnNpb25IZWxwZXJzLmgKKyMjIyBCZWdpbiBGaWxlOiBUZXN0UHJv
dG9jb2xFdmVudERpc3BhdGNoZXJzLm1tCiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpAQCAtNjY1LDQ2ICs2NjUsMjIgQEAgbmFt
ZXNwYWNlIEluc3BlY3RvciB7CiAvLyBETyBOT1QgRURJVCBUSElTIEZJTEUuIEl0IGlzIGF1dG9t
YXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gdHlwZS1kZWNsYXJhdGlvbi1hcnJheS10eXBlLmpzb24K
IC8vIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0
cy9nZW5lcmF0ZS1pbnNwZWN0b3ItcHJvdG9jb2wtYmluZGluZ3MucHkKIAotI2ltcG9ydCAiUldJ
UHJvdG9jb2xBcnJheUNvbnZlcnNpb25IZWxwZXJzLmgiCisjaW1wb3J0ICJjb25maWcuaCIKKyNp
bXBvcnQgIlRlc3RQcm90b2NvbEludGVybmFsLmgiCiAKLW5hbWVzcGFjZSBJbnNwZWN0b3Igewor
I2ltcG9ydCAiVGVzdFByb3RvY29sVHlwZUNvbnZlcnNpb25zLmgiCisjaW1wb3J0IDxKYXZhU2Ny
aXB0Q29yZS9JbnNwZWN0b3JWYWx1ZXMuaD4KIAotdGVtcGxhdGU8dHlwZW5hbWUgT2JqQ0VudW1U
eXBlPgotT2JqQ0VudW1UeXBlIGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVl
KTsKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIAotaW5saW5lIFN0cmluZyB0b1Byb3Rv
Y29sU3RyaW5nKFRlc3RQcm90b2NvbERlYnVnZ2VyUmVhc29uIHZhbHVlKQotewotICAgIHN3aXRj
aCh2YWx1ZSkgewotICAgIGNhc2UgVGVzdFByb3RvY29sRGVidWdnZXJSZWFzb25EaWVkOgotICAg
ICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJEaWVkIik7Ci0gICAgY2FzZSBUZXN0UHJvdG9jb2xE
ZWJ1Z2dlclJlYXNvbkZhaW50ZWQ6Ci0gICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIkZhaW50
ZWQiKTsKLSAgICBjYXNlIFRlc3RQcm90b2NvbERlYnVnZ2VyUmVhc29uSHVuZ3J5OgotICAgICAg
ICByZXR1cm4gQVNDSUlMaXRlcmFsKCJIdW5ncnkiKTsKLSAgICB9Ci19Ci0KLXRlbXBsYXRlPD4K
LWlubGluZSBUZXN0UHJvdG9jb2xEZWJ1Z2dlclJlYXNvbiBmcm9tUHJvdG9jb2xTdHJpbmcoY29u
c3QgU3RyaW5nJiB2YWx1ZSkKLXsKLSAgICBpZiAodmFsdWUgPT0gIkRpZWQiKQotICAgICAgICBy
ZXR1cm4gVGVzdFByb3RvY29sRGVidWdnZXJSZWFzb25EaWVkOwotICAgIGlmICh2YWx1ZSA9PSAi
RmFpbnRlZCIpCi0gICAgICAgIHJldHVybiBUZXN0UHJvdG9jb2xEZWJ1Z2dlclJlYXNvbkZhaW50
ZWQ7Ci0gICAgaWYgKHZhbHVlID09ICJIdW5ncnkiKQotICAgICAgICByZXR1cm4gVGVzdFByb3Rv
Y29sRGVidWdnZXJSZWFzb25IdW5ncnk7Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAg
cmV0dXJuIFRlc3RQcm90b2NvbERlYnVnZ2VyUmVhc29uRGllZDsKLX0KIAogCiAKLX0gLy8gbmFt
ZXNwYWNlIEluc3BlY3RvcgogCi0jIyMgRW5kIEZpbGU6IFRlc3RQcm90b2NvbEVudW1Db252ZXJz
aW9uSGVscGVycy5oCisjIyMgRW5kIEZpbGU6IFRlc3RQcm90b2NvbEV2ZW50RGlzcGF0Y2hlcnMu
bW0KIAotIyMjIEJlZ2luIEZpbGU6IFRlc3RQcm90b2NvbEV2ZW50RGlzcGF0Y2hlcnMubW0KKyMj
IyBCZWdpbiBGaWxlOiBUZXN0UHJvdG9jb2wuaAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMyBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEzLCAy
MDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KQEAgLTczNSwyMiArNzExLDMwIEBA
IGlubGluZSBUZXN0UHJvdG9jb2xEZWJ1Z2dlclJlYXNvbiBmcm9tUHJvdG9jb2xTdHJpbmcoY29u
c3QgU3RyaW5nJiB2YWx1ZSkKIC8vIERPIE5PVCBFRElUIFRISVMgRklMRS4gSXQgaXMgYXV0b21h
dGljYWxseSBnZW5lcmF0ZWQgZnJvbSB0eXBlLWRlY2xhcmF0aW9uLWFycmF5LXR5cGUuanNvbgog
Ly8gYnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRz
L2dlbmVyYXRlLWluc3BlY3Rvci1wcm90b2NvbC1iaW5kaW5ncy5weQogCi0jaW1wb3J0ICJjb25m
aWcuaCIKLSNpbXBvcnQgIlRlc3RQcm90b2NvbEludGVybmFsLmgiCisjaW1wb3J0IDxGb3VuZGF0
aW9uL0ZvdW5kYXRpb24uaD4KIAotI2ltcG9ydCAiVGVzdFByb3RvY29sRW51bUNvbnZlcnNpb25I
ZWxwZXJzLmgiCi0jaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JWYWx1ZXMuaD4KKyNp
bXBvcnQgPFdlYkluc3BlY3Rvci9SV0lQcm90b2NvbEpTT05PYmplY3QuaD4KIAotdXNpbmcgbmFt
ZXNwYWNlIEluc3BlY3RvcjsKIAogCiAKIAordHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgVGVz
dFByb3RvY29sRGVidWdnZXJSZWFzb24pIHsKKyAgICBUZXN0UHJvdG9jb2xEZWJ1Z2dlclJlYXNv
bkRpZWQsCisgICAgVGVzdFByb3RvY29sRGVidWdnZXJSZWFzb25GYWludGVkLAorICAgIFRlc3RQ
cm90b2NvbERlYnVnZ2VyUmVhc29uSHVuZ3J5LAorfTsKIAogCi0jIyMgRW5kIEZpbGU6IFRlc3RQ
cm90b2NvbEV2ZW50RGlzcGF0Y2hlcnMubW0KIAotIyMjIEJlZ2luIEZpbGU6IFRlc3RQcm90b2Nv
bC5oCisKKworCisKKworIyMjIEVuZCBGaWxlOiBUZXN0UHJvdG9jb2wuaAorCisjIyMgQmVnaW4g
RmlsZTogVGVzdFByb3RvY29sSW50ZXJuYWwuaAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMyBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEzLCAy
MDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KQEAgLTc4MSwzMCArNzY1LDE3IEBA
IHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAvLyBETyBOT1QgRURJVCBUSElTIEZJTEUuIEl0
IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gdHlwZS1kZWNsYXJhdGlvbi1hcnJheS10
eXBlLmpzb24KIC8vIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3Ivc2NyaXB0cy9nZW5lcmF0ZS1pbnNwZWN0b3ItcHJvdG9jb2wtYmluZGluZ3MucHkKIAotI2lt
cG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+Ci0KLSNpbXBvcnQgPFdlYkluc3BlY3Rvci9S
V0lQcm90b2NvbEpTT05PYmplY3QuaD4KLQotCi0KLQotCi10eXBlZGVmIE5TX0VOVU0oTlNJbnRl
Z2VyLCBUZXN0UHJvdG9jb2xEZWJ1Z2dlclJlYXNvbikgewotICAgIFRlc3RQcm90b2NvbERlYnVn
Z2VyUmVhc29uRGllZCwKLSAgICBUZXN0UHJvdG9jb2xEZWJ1Z2dlclJlYXNvbkZhaW50ZWQsCi0g
ICAgVGVzdFByb3RvY29sRGVidWdnZXJSZWFzb25IdW5ncnksCi19OwotCi0KLQotCisjaW1wb3J0
ICJUZXN0UHJvdG9jb2wuaCIKKyNpbXBvcnQgIlRlc3RQcm90b2NvbEpTT05PYmplY3RQcml2YXRl
LmgiCisjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9BdWdtZW50YWJsZUluc3BlY3RvckNvbnRyb2xs
ZXIuaD4KKyNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvclZhbHVlcy5oPgogCiAKIAog
Ci0jIyMgRW5kIEZpbGU6IFRlc3RQcm90b2NvbC5oCisjIyMgRW5kIEZpbGU6IFRlc3RQcm90b2Nv
bEludGVybmFsLmgKIAotIyMjIEJlZ2luIEZpbGU6IFRlc3RQcm90b2NvbEludGVybmFsLmgKKyMj
IyBCZWdpbiBGaWxlOiBUZXN0UHJvdG9jb2xUeXBlQ29udmVyc2lvbnMuaAogLyoKICAqIENvcHly
aWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJp
Z2h0IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KQEAgLTgz
NSwxNSArODA2LDQ0IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIFRlc3RQcm90b2NvbERl
YnVnZ2VyUmVhc29uKSB7CiAvLyBETyBOT1QgRURJVCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRp
Y2FsbHkgZ2VuZXJhdGVkIGZyb20gdHlwZS1kZWNsYXJhdGlvbi1hcnJheS10eXBlLmpzb24KIC8v
IGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9n
ZW5lcmF0ZS1pbnNwZWN0b3ItcHJvdG9jb2wtYmluZGluZ3MucHkKIAotI2ltcG9ydCAiVGVzdFBy
b3RvY29sLmgiCi0jaW1wb3J0ICJUZXN0UHJvdG9jb2xKU09OT2JqZWN0UHJpdmF0ZS5oIgotI2lt
cG9ydCA8SmF2YVNjcmlwdENvcmUvQXVnbWVudGFibGVJbnNwZWN0b3JDb250cm9sbGVyLmg+Ci0j
aW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JWYWx1ZXMuaD4KKyNpbXBvcnQgIlJXSVBy
b3RvY29sQXJyYXlDb252ZXJzaW9ucy5oIgogCituYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAordGVt
cGxhdGU8dHlwZW5hbWUgT2JqQ0VudW1UeXBlPgorT2JqQ0VudW1UeXBlIGZyb21Qcm90b2NvbFN0
cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKTsKIAogCi0jIyMgRW5kIEZpbGU6IFRlc3RQcm90b2Nv
bEludGVybmFsLmgKK2lubGluZSBTdHJpbmcgdG9Qcm90b2NvbFN0cmluZyhUZXN0UHJvdG9jb2xE
ZWJ1Z2dlclJlYXNvbiB2YWx1ZSkKK3sKKyAgICBzd2l0Y2godmFsdWUpIHsKKyAgICBjYXNlIFRl
c3RQcm90b2NvbERlYnVnZ2VyUmVhc29uRGllZDoKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJh
bCgiRGllZCIpOworICAgIGNhc2UgVGVzdFByb3RvY29sRGVidWdnZXJSZWFzb25GYWludGVkOgor
ICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJGYWludGVkIik7CisgICAgY2FzZSBUZXN0UHJv
dG9jb2xEZWJ1Z2dlclJlYXNvbkh1bmdyeToKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgi
SHVuZ3J5Iik7CisgICAgfQorfQorCit0ZW1wbGF0ZTw+CitpbmxpbmUgVGVzdFByb3RvY29sRGVi
dWdnZXJSZWFzb24gZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCit7Cisg
ICAgaWYgKHZhbHVlID09ICJEaWVkIikKKyAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbERlYnVn
Z2VyUmVhc29uRGllZDsKKyAgICBpZiAodmFsdWUgPT0gIkZhaW50ZWQiKQorICAgICAgICByZXR1
cm4gVGVzdFByb3RvY29sRGVidWdnZXJSZWFzb25GYWludGVkOworICAgIGlmICh2YWx1ZSA9PSAi
SHVuZ3J5IikKKyAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbERlYnVnZ2VyUmVhc29uSHVuZ3J5
OworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBUZXN0UHJvdG9jb2xEZWJ1
Z2dlclJlYXNvbkRpZWQ7Cit9CisKKworCit9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKKworIyMj
IEVuZCBGaWxlOiBUZXN0UHJvdG9jb2xUeXBlQ29udmVyc2lvbnMuaAogCiAjIyMgQmVnaW4gRmls
ZTogVGVzdFByb3RvY29sVHlwZXMubW0KIC8qCkBAIC04NzksNyArODc5LDcgQEAgdHlwZWRlZiBO
U19FTlVNKE5TSW50ZWdlciwgVGVzdFByb3RvY29sRGVidWdnZXJSZWFzb24pIHsKICNpbXBvcnQg
ImNvbmZpZy5oIgogI2ltcG9ydCAiVGVzdFByb3RvY29sSW50ZXJuYWwuaCIKIAotI2ltcG9ydCAi
VGVzdFByb3RvY29sRW51bUNvbnZlcnNpb25IZWxwZXJzLmgiCisjaW1wb3J0ICJUZXN0UHJvdG9j
b2xUeXBlQ29udmVyc2lvbnMuaCIKICNpbXBvcnQgPFdlYkluc3BlY3Rvci9SV0lQcm90b2NvbEpT
T05PYmplY3RQcml2YXRlLmg+CiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JWYWx1
ZXMuaD4KICNpbXBvcnQgPHd0Zi9Bc3NlcnRpb25zLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJh
dGlvbi1lbnVtLXR5cGUuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1lbnVtLXR5cGUuanNv
bi1yZXN1bHQKaW5kZXggNzRmZTA2YjZiOWNhNmVmY2MzNTJmMjlhZWQ2MjNmNDA0YmJlZWZlYS4u
MzhjMWViYjYxYmQ0OGZkMGI1MTk5ZTRkNWVhNDk4OWEyNGEzZmFmOSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUt
ZGVjbGFyYXRpb24tZW51bS10eXBlLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLWVu
dW0tdHlwZS5qc29uLXJlc3VsdApAQCAtNjIwLDcgKzYyMCw3IEBAIF9fYXR0cmlidXRlX18oKHZp
c2liaWxpdHkgKCJkZWZhdWx0IikpKQogI2ltcG9ydCAiVGVzdFByb3RvY29sQmFja2VuZERpc3Bh
dGNoZXJzLmgiCiAKICNpbmNsdWRlICJUZXN0UHJvdG9jb2xJbnRlcm5hbC5oIgotI2luY2x1ZGUg
IlRlc3RQcm90b2NvbEVudW1Db252ZXJzaW9uSGVscGVycy5oIgorI2luY2x1ZGUgIlRlc3RQcm90
b2NvbFR5cGVDb252ZXJzaW9ucy5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3Rv
clZhbHVlcy5oPgogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKQEAgLTYzMSwxMDcgKzYzMSw2IEBA
IG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiAjIyMgRW5kIEZpbGU6IFRlc3RQcm90b2NvbEJhY2tl
bmREaXNwYXRjaGVycy5tbQogCi0jIyMgQmVnaW4gRmlsZTogVGVzdFByb3RvY29sRW51bUNvbnZl
cnNpb25IZWxwZXJzLmgKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgVW5pdmVyc2l0eSBv
ZiBXYXNoaW5ndG9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0vLyBETyBOT1Qg
RURJVCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gdHlwZS1k
ZWNsYXJhdGlvbi1lbnVtLXR5cGUuanNvbgotLy8gYnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2dlbmVyYXRlLWluc3BlY3Rvci1wcm90b2NvbC1i
aW5kaW5ncy5weQotCi0jaW1wb3J0ICJSV0lQcm90b2NvbEFycmF5Q29udmVyc2lvbkhlbHBlcnMu
aCIKLQotbmFtZXNwYWNlIEluc3BlY3RvciB7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIE9iakNFbnVt
VHlwZT4KLU9iakNFbnVtVHlwZSBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1
ZSk7Ci0KLQotaW5saW5lIFN0cmluZyB0b1Byb3RvY29sU3RyaW5nKFRlc3RQcm90b2NvbFJ1bnRp
bWVGYXJtQW5pbWFscyB2YWx1ZSkKLXsKLSAgICBzd2l0Y2godmFsdWUpIHsKLSAgICBjYXNlIFRl
c3RQcm90b2NvbFJ1bnRpbWVGYXJtQW5pbWFsc1BpZ3M6Ci0gICAgICAgIHJldHVybiBBU0NJSUxp
dGVyYWwoIlBpZ3MiKTsKLSAgICBjYXNlIFRlc3RQcm90b2NvbFJ1bnRpbWVGYXJtQW5pbWFsc0Nv
d3M6Ci0gICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIkNvd3MiKTsKLSAgICBjYXNlIFRlc3RQ
cm90b2NvbFJ1bnRpbWVGYXJtQW5pbWFsc0NhdHM6Ci0gICAgICAgIHJldHVybiBBU0NJSUxpdGVy
YWwoIkNhdHMiKTsKLSAgICBjYXNlIFRlc3RQcm90b2NvbFJ1bnRpbWVGYXJtQW5pbWFsc0hlbnM6
Ci0gICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIkhlbnMiKTsKLSAgICB9Ci19Ci0KLXRlbXBs
YXRlPD4KLWlubGluZSBUZXN0UHJvdG9jb2xSdW50aW1lRmFybUFuaW1hbHMgZnJvbVByb3RvY29s
U3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCi17Ci0gICAgaWYgKHZhbHVlID09ICJQaWdzIikK
LSAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbFJ1bnRpbWVGYXJtQW5pbWFsc1BpZ3M7Ci0gICAg
aWYgKHZhbHVlID09ICJDb3dzIikKLSAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbFJ1bnRpbWVG
YXJtQW5pbWFsc0Nvd3M7Ci0gICAgaWYgKHZhbHVlID09ICJDYXRzIikKLSAgICAgICAgcmV0dXJu
IFRlc3RQcm90b2NvbFJ1bnRpbWVGYXJtQW5pbWFsc0NhdHM7Ci0gICAgaWYgKHZhbHVlID09ICJI
ZW5zIikKLSAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbFJ1bnRpbWVGYXJtQW5pbWFsc0hlbnM7
Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIFRlc3RQcm90b2NvbFJ1bnRp
bWVGYXJtQW5pbWFsc1BpZ3M7Ci19Ci0KLWlubGluZSBTdHJpbmcgdG9Qcm90b2NvbFN0cmluZyhU
ZXN0UHJvdG9jb2xSdW50aW1lVHdvTGVnZ2VkQW5pbWFscyB2YWx1ZSkKLXsKLSAgICBzd2l0Y2go
dmFsdWUpIHsKLSAgICBjYXNlIFRlc3RQcm90b2NvbFJ1bnRpbWVUd29MZWdnZWRBbmltYWxzRHVj
a3M6Ci0gICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIkR1Y2tzIik7Ci0gICAgY2FzZSBUZXN0
UHJvdG9jb2xSdW50aW1lVHdvTGVnZ2VkQW5pbWFsc0hlbnM6Ci0gICAgICAgIHJldHVybiBBU0NJ
SUxpdGVyYWwoIkhlbnMiKTsKLSAgICBjYXNlIFRlc3RQcm90b2NvbFJ1bnRpbWVUd29MZWdnZWRB
bmltYWxzQ3Jvd3M6Ci0gICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIkNyb3dzIik7Ci0gICAg
Y2FzZSBUZXN0UHJvdG9jb2xSdW50aW1lVHdvTGVnZ2VkQW5pbWFsc0ZsYW1pbmdvczoKLSAgICAg
ICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiRmxhbWluZ29zIik7Ci0gICAgfQotfQotCi10ZW1wbGF0
ZTw+Ci1pbmxpbmUgVGVzdFByb3RvY29sUnVudGltZVR3b0xlZ2dlZEFuaW1hbHMgZnJvbVByb3Rv
Y29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCi17Ci0gICAgaWYgKHZhbHVlID09ICJEdWNr
cyIpCi0gICAgICAgIHJldHVybiBUZXN0UHJvdG9jb2xSdW50aW1lVHdvTGVnZ2VkQW5pbWFsc0R1
Y2tzOwotICAgIGlmICh2YWx1ZSA9PSAiSGVucyIpCi0gICAgICAgIHJldHVybiBUZXN0UHJvdG9j
b2xSdW50aW1lVHdvTGVnZ2VkQW5pbWFsc0hlbnM7Ci0gICAgaWYgKHZhbHVlID09ICJDcm93cyIp
Ci0gICAgICAgIHJldHVybiBUZXN0UHJvdG9jb2xSdW50aW1lVHdvTGVnZ2VkQW5pbWFsc0Nyb3dz
OwotICAgIGlmICh2YWx1ZSA9PSAiRmxhbWluZ29zIikKLSAgICAgICAgcmV0dXJuIFRlc3RQcm90
b2NvbFJ1bnRpbWVUd29MZWdnZWRBbmltYWxzRmxhbWluZ29zOwotICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotICAgIHJldHVybiBUZXN0UHJvdG9jb2xSdW50aW1lVHdvTGVnZ2VkQW5pbWFsc0R1
Y2tzOwotfQotCi19IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKLQotIyMjIEVuZCBGaWxlOiBUZXN0
UHJvdG9jb2xFbnVtQ29udmVyc2lvbkhlbHBlcnMuaAotCiAjIyMgQmVnaW4gRmlsZTogVGVzdFBy
b3RvY29sRXZlbnREaXNwYXRjaGVycy5tbQogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMyBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpAQCAtNzY2LDcgKzY2NSw3IEBAIGlubGluZSBU
ZXN0UHJvdG9jb2xSdW50aW1lVHdvTGVnZ2VkQW5pbWFscyBmcm9tUHJvdG9jb2xTdHJpbmcoY29u
c3QgU3RyaW5nJiB2YWx1CiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIlRlc3RQcm90b2Nv
bEludGVybmFsLmgiCiAKLSNpbXBvcnQgIlRlc3RQcm90b2NvbEVudW1Db252ZXJzaW9uSGVscGVy
cy5oIgorI2ltcG9ydCAiVGVzdFByb3RvY29sVHlwZUNvbnZlcnNpb25zLmgiCiAjaW1wb3J0IDxK
YXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JWYWx1ZXMuaD4KIAogdXNpbmcgbmFtZXNwYWNlIEluc3Bl
Y3RvcjsKQEAgLTg3OSw2ICs3NzgsMTA3IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIFRl
c3RQcm90b2NvbFJ1bnRpbWVUd29MZWdnZWRBbmltYWxzKSB7CiAKICMjIyBFbmQgRmlsZTogVGVz
dFByb3RvY29sSW50ZXJuYWwuaAogCisjIyMgQmVnaW4gRmlsZTogVGVzdFByb3RvY29sVHlwZUNv
bnZlcnNpb25zLmgKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgVW5pdmVyc2l0eSBvZiBX
YXNoaW5ndG9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvLyBETyBOT1QgRURJ
VCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gdHlwZS1kZWNs
YXJhdGlvbi1lbnVtLXR5cGUuanNvbgorLy8gYnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2dlbmVyYXRlLWluc3BlY3Rvci1wcm90b2NvbC1iaW5k
aW5ncy5weQorCisjaW1wb3J0ICJSV0lQcm90b2NvbEFycmF5Q29udmVyc2lvbnMuaCIKKworbmFt
ZXNwYWNlIEluc3BlY3RvciB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIE9iakNFbnVtVHlwZT4KK09i
akNFbnVtVHlwZSBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSk7CisKKwor
aW5saW5lIFN0cmluZyB0b1Byb3RvY29sU3RyaW5nKFRlc3RQcm90b2NvbFJ1bnRpbWVGYXJtQW5p
bWFscyB2YWx1ZSkKK3sKKyAgICBzd2l0Y2godmFsdWUpIHsKKyAgICBjYXNlIFRlc3RQcm90b2Nv
bFJ1bnRpbWVGYXJtQW5pbWFsc1BpZ3M6CisgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIlBp
Z3MiKTsKKyAgICBjYXNlIFRlc3RQcm90b2NvbFJ1bnRpbWVGYXJtQW5pbWFsc0Nvd3M6CisgICAg
ICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIkNvd3MiKTsKKyAgICBjYXNlIFRlc3RQcm90b2NvbFJ1
bnRpbWVGYXJtQW5pbWFsc0NhdHM6CisgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIkNhdHMi
KTsKKyAgICBjYXNlIFRlc3RQcm90b2NvbFJ1bnRpbWVGYXJtQW5pbWFsc0hlbnM6CisgICAgICAg
IHJldHVybiBBU0NJSUxpdGVyYWwoIkhlbnMiKTsKKyAgICB9Cit9CisKK3RlbXBsYXRlPD4KK2lu
bGluZSBUZXN0UHJvdG9jb2xSdW50aW1lRmFybUFuaW1hbHMgZnJvbVByb3RvY29sU3RyaW5nKGNv
bnN0IFN0cmluZyYgdmFsdWUpCit7CisgICAgaWYgKHZhbHVlID09ICJQaWdzIikKKyAgICAgICAg
cmV0dXJuIFRlc3RQcm90b2NvbFJ1bnRpbWVGYXJtQW5pbWFsc1BpZ3M7CisgICAgaWYgKHZhbHVl
ID09ICJDb3dzIikKKyAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbFJ1bnRpbWVGYXJtQW5pbWFs
c0Nvd3M7CisgICAgaWYgKHZhbHVlID09ICJDYXRzIikKKyAgICAgICAgcmV0dXJuIFRlc3RQcm90
b2NvbFJ1bnRpbWVGYXJtQW5pbWFsc0NhdHM7CisgICAgaWYgKHZhbHVlID09ICJIZW5zIikKKyAg
ICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbFJ1bnRpbWVGYXJtQW5pbWFsc0hlbnM7CisgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIFRlc3RQcm90b2NvbFJ1bnRpbWVGYXJtQW5p
bWFsc1BpZ3M7Cit9CisKK2lubGluZSBTdHJpbmcgdG9Qcm90b2NvbFN0cmluZyhUZXN0UHJvdG9j
b2xSdW50aW1lVHdvTGVnZ2VkQW5pbWFscyB2YWx1ZSkKK3sKKyAgICBzd2l0Y2godmFsdWUpIHsK
KyAgICBjYXNlIFRlc3RQcm90b2NvbFJ1bnRpbWVUd29MZWdnZWRBbmltYWxzRHVja3M6CisgICAg
ICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIkR1Y2tzIik7CisgICAgY2FzZSBUZXN0UHJvdG9jb2xS
dW50aW1lVHdvTGVnZ2VkQW5pbWFsc0hlbnM6CisgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwo
IkhlbnMiKTsKKyAgICBjYXNlIFRlc3RQcm90b2NvbFJ1bnRpbWVUd29MZWdnZWRBbmltYWxzQ3Jv
d3M6CisgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIkNyb3dzIik7CisgICAgY2FzZSBUZXN0
UHJvdG9jb2xSdW50aW1lVHdvTGVnZ2VkQW5pbWFsc0ZsYW1pbmdvczoKKyAgICAgICAgcmV0dXJu
IEFTQ0lJTGl0ZXJhbCgiRmxhbWluZ29zIik7CisgICAgfQorfQorCit0ZW1wbGF0ZTw+Citpbmxp
bmUgVGVzdFByb3RvY29sUnVudGltZVR3b0xlZ2dlZEFuaW1hbHMgZnJvbVByb3RvY29sU3RyaW5n
KGNvbnN0IFN0cmluZyYgdmFsdWUpCit7CisgICAgaWYgKHZhbHVlID09ICJEdWNrcyIpCisgICAg
ICAgIHJldHVybiBUZXN0UHJvdG9jb2xSdW50aW1lVHdvTGVnZ2VkQW5pbWFsc0R1Y2tzOworICAg
IGlmICh2YWx1ZSA9PSAiSGVucyIpCisgICAgICAgIHJldHVybiBUZXN0UHJvdG9jb2xSdW50aW1l
VHdvTGVnZ2VkQW5pbWFsc0hlbnM7CisgICAgaWYgKHZhbHVlID09ICJDcm93cyIpCisgICAgICAg
IHJldHVybiBUZXN0UHJvdG9jb2xSdW50aW1lVHdvTGVnZ2VkQW5pbWFsc0Nyb3dzOworICAgIGlm
ICh2YWx1ZSA9PSAiRmxhbWluZ29zIikKKyAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbFJ1bnRp
bWVUd29MZWdnZWRBbmltYWxzRmxhbWluZ29zOworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgIHJldHVybiBUZXN0UHJvdG9jb2xSdW50aW1lVHdvTGVnZ2VkQW5pbWFsc0R1Y2tzOworfQor
Cit9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKKworIyMjIEVuZCBGaWxlOiBUZXN0UHJvdG9jb2xU
eXBlQ29udmVyc2lvbnMuaAorCiAjIyMgQmVnaW4gRmlsZTogVGVzdFByb3RvY29sVHlwZXMubW0K
IC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KQEAgLTkxMyw3ICs5MTMsNyBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBUZXN0UHJv
dG9jb2xSdW50aW1lVHdvTGVnZ2VkQW5pbWFscykgewogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1w
b3J0ICJUZXN0UHJvdG9jb2xJbnRlcm5hbC5oIgogCi0jaW1wb3J0ICJUZXN0UHJvdG9jb2xFbnVt
Q29udmVyc2lvbkhlbHBlcnMuaCIKKyNpbXBvcnQgIlRlc3RQcm90b2NvbFR5cGVDb252ZXJzaW9u
cy5oIgogI2ltcG9ydCA8V2ViSW5zcGVjdG9yL1JXSVByb3RvY29sSlNPTk9iamVjdFByaXZhdGUu
aD4KICNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvclZhbHVlcy5oPgogI2ltcG9ydCA8
d3RmL0Fzc2VydGlvbnMuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLW9iamVjdC10eXBl
Lmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rl
c3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tb2JqZWN0LXR5cGUuanNvbi1yZXN1bHQKaW5k
ZXggMmNjNzkxYTY0MDMwN2VkODVmYWJhMWQwNWUzZmM5OWNkNjAzNDMxZS4uZGE2YWZjYjlmZjdi
OGJlMzM0ZWE2YjhkZTUzNGM0YTkwNDM2MTAxMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24t
b2JqZWN0LXR5cGUuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tb2JqZWN0LXR5cGUu
anNvbi1yZXN1bHQKQEAgLTEwNTgsNyArMTA1OCw3IEBAIF9fYXR0cmlidXRlX18oKHZpc2liaWxp
dHkgKCJkZWZhdWx0IikpKQogI2ltcG9ydCAiVGVzdFByb3RvY29sQmFja2VuZERpc3BhdGNoZXJz
LmgiCiAKICNpbmNsdWRlICJUZXN0UHJvdG9jb2xJbnRlcm5hbC5oIgotI2luY2x1ZGUgIlRlc3RQ
cm90b2NvbEVudW1Db252ZXJzaW9uSGVscGVycy5oIgorI2luY2x1ZGUgIlRlc3RQcm90b2NvbFR5
cGVDb252ZXJzaW9ucy5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvclZhbHVl
cy5oPgogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKQEAgLTEwNzEsNTIgKzEwNzEsNiBAQCBuYW1l
c3BhY2UgSW5zcGVjdG9yIHsKIAogIyMjIEVuZCBGaWxlOiBUZXN0UHJvdG9jb2xCYWNrZW5kRGlz
cGF0Y2hlcnMubW0KIAotIyMjIEJlZ2luIEZpbGU6IFRlc3RQcm90b2NvbEVudW1Db252ZXJzaW9u
SGVscGVycy5oCi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDE0IFVuaXZlcnNpdHkgb2YgV2Fz
aGluZ3Rvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwot
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0g
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotLy8gRE8gTk9UIEVESVQg
VEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIHR5cGUtZGVjbGFy
YXRpb24tb2JqZWN0LXR5cGUuanNvbgotLy8gYnkgdGhlIHNjcmlwdDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2dlbmVyYXRlLWluc3BlY3Rvci1wcm90b2NvbC1iaW5k
aW5ncy5weQotCi0jaW1wb3J0ICJSV0lQcm90b2NvbEFycmF5Q29udmVyc2lvbkhlbHBlcnMuaCIK
LQotbmFtZXNwYWNlIEluc3BlY3RvciB7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIE9iakNFbnVtVHlw
ZT4KLU9iakNFbnVtVHlwZSBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSk7
Ci0KLQotCi0KLQotfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCi0KLSMjIyBFbmQgRmlsZTogVGVz
dFByb3RvY29sRW51bUNvbnZlcnNpb25IZWxwZXJzLmgKLQogIyMjIEJlZ2luIEZpbGU6IFRlc3RQ
cm90b2NvbEV2ZW50RGlzcGF0Y2hlcnMubW0KIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KQEAgLTExNTEsNyArMTEwNSw3IEBAIE9iakNF
bnVtVHlwZSBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSk7CiAjaW1wb3J0
ICJjb25maWcuaCIKICNpbXBvcnQgIlRlc3RQcm90b2NvbEludGVybmFsLmgiCiAKLSNpbXBvcnQg
IlRlc3RQcm90b2NvbEVudW1Db252ZXJzaW9uSGVscGVycy5oIgorI2ltcG9ydCAiVGVzdFByb3Rv
Y29sVHlwZUNvbnZlcnNpb25zLmgiCiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JW
YWx1ZXMuaD4KIAogdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKQEAgLTEzMTgsNiArMTI3Miw1
MiBAQCBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5ICgiZGVmYXVsdCIpKSkKIAogIyMjIEVuZCBG
aWxlOiBUZXN0UHJvdG9jb2xJbnRlcm5hbC5oCiAKKyMjIyBCZWdpbiBGaWxlOiBUZXN0UHJvdG9j
b2xUeXBlQ29udmVyc2lvbnMuaAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNCBVbml2ZXJz
aXR5IG9mIFdhc2hpbmd0b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8vIERP
IE5PVCBFRElUIFRISVMgRklMRS4gSXQgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSB0
eXBlLWRlY2xhcmF0aW9uLW9iamVjdC10eXBlLmpzb24KKy8vIGJ5IHRoZSBzY3JpcHQ6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9nZW5lcmF0ZS1pbnNwZWN0b3ItcHJv
dG9jb2wtYmluZGluZ3MucHkKKworI2ltcG9ydCAiUldJUHJvdG9jb2xBcnJheUNvbnZlcnNpb25z
LmgiCisKK25hbWVzcGFjZSBJbnNwZWN0b3IgeworCit0ZW1wbGF0ZTx0eXBlbmFtZSBPYmpDRW51
bVR5cGU+CitPYmpDRW51bVR5cGUgZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFs
dWUpOworCisKKworCisKK30gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgorCisjIyMgRW5kIEZpbGU6
IFRlc3RQcm90b2NvbFR5cGVDb252ZXJzaW9ucy5oCisKICMjIyBCZWdpbiBGaWxlOiBUZXN0UHJv
dG9jb2xUeXBlcy5tbQogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgpAQCAtMTM1Miw3ICsxMzUyLDcgQEAgX19hdHRyaWJ1dGVfXygodmlz
aWJpbGl0eSAoImRlZmF1bHQiKSkpCiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIlRlc3RQ
cm90b2NvbEludGVybmFsLmgiCiAKLSNpbXBvcnQgIlRlc3RQcm90b2NvbEVudW1Db252ZXJzaW9u
SGVscGVycy5oIgorI2ltcG9ydCAiVGVzdFByb3RvY29sVHlwZUNvbnZlcnNpb25zLmgiCiAjaW1w
b3J0IDxXZWJJbnNwZWN0b3IvUldJUHJvdG9jb2xKU09OT2JqZWN0UHJpdmF0ZS5oPgogI2ltcG9y
dCA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW1wb3J0IDx3dGYvQXNzZXJ0
aW9ucy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3Jp
cHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtcmVxdWlyaW5nLXJ1bnRpbWUtY2FzdHMuanNvbi1yZXN1
bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0
ZWQvdHlwZS1yZXF1aXJpbmctcnVudGltZS1jYXN0cy5qc29uLXJlc3VsdAppbmRleCA2ODVjY2Qz
OTExOTcyZDM1N2RiZDE0YzA5Y2E3YWZiODNhYmExODhlLi5lM2M2OWViNzQwZTVlNTgxN2M2NjZk
YzQ3ZDIwOTFmNzZlMmI3Y2Y3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1yZXF1aXJpbmctcnVudGltZS1jYXN0
cy5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Njcmlw
dHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1yZXF1aXJpbmctcnVudGltZS1jYXN0cy5qc29uLXJlc3Vs
dApAQCAtOTQ3LDcgKzk0Nyw3IEBAIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkgKCJkZWZhdWx0
IikpKQogI2ltcG9ydCAiVGVzdFByb3RvY29sQmFja2VuZERpc3BhdGNoZXJzLmgiCiAKICNpbmNs
dWRlICJUZXN0UHJvdG9jb2xJbnRlcm5hbC5oIgotI2luY2x1ZGUgIlRlc3RQcm90b2NvbEVudW1D
b252ZXJzaW9uSGVscGVycy5oIgorI2luY2x1ZGUgIlRlc3RQcm90b2NvbFR5cGVDb252ZXJzaW9u
cy5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvclZhbHVlcy5oPgogCiBuYW1l
c3BhY2UgSW5zcGVjdG9yIHsKQEAgLTk1OCwxMDcgKzk1OCw2IEBAIG5hbWVzcGFjZSBJbnNwZWN0
b3IgewogCiAjIyMgRW5kIEZpbGU6IFRlc3RQcm90b2NvbEJhY2tlbmREaXNwYXRjaGVycy5tbQog
Ci0jIyMgQmVnaW4gRmlsZTogVGVzdFByb3RvY29sRW51bUNvbnZlcnNpb25IZWxwZXJzLmgKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgVW5pdmVyc2l0eSBvZiBXYXNoaW5ndG9uLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0vLyBETyBOT1QgRURJVCBUSElTIEZJTEUuIEl0
IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gdHlwZS1yZXF1aXJpbmctcnVudGltZS1j
YXN0cy5qc29uCi0vLyBieSB0aGUgc2NyaXB0OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3NjcmlwdHMvZ2VuZXJhdGUtaW5zcGVjdG9yLXByb3RvY29sLWJpbmRpbmdzLnB5Ci0KLSNp
bXBvcnQgIlJXSVByb3RvY29sQXJyYXlDb252ZXJzaW9uSGVscGVycy5oIgotCi1uYW1lc3BhY2Ug
SW5zcGVjdG9yIHsKLQotdGVtcGxhdGU8dHlwZW5hbWUgT2JqQ0VudW1UeXBlPgotT2JqQ0VudW1U
eXBlIGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKTsKLQotCi1pbmxpbmUg
U3RyaW5nIHRvUHJvdG9jb2xTdHJpbmcoVGVzdFByb3RvY29sVGVzdFVuY2FzdGVkQW5pbWFscyB2
YWx1ZSkKLXsKLSAgICBzd2l0Y2godmFsdWUpIHsKLSAgICBjYXNlIFRlc3RQcm90b2NvbFRlc3RV
bmNhc3RlZEFuaW1hbHNQaWdzOgotICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJQaWdzIik7
Ci0gICAgY2FzZSBUZXN0UHJvdG9jb2xUZXN0VW5jYXN0ZWRBbmltYWxzQ293czoKLSAgICAgICAg
cmV0dXJuIEFTQ0lJTGl0ZXJhbCgiQ293cyIpOwotICAgIGNhc2UgVGVzdFByb3RvY29sVGVzdFVu
Y2FzdGVkQW5pbWFsc0NhdHM6Ci0gICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIkNhdHMiKTsK
LSAgICBjYXNlIFRlc3RQcm90b2NvbFRlc3RVbmNhc3RlZEFuaW1hbHNIZW5zOgotICAgICAgICBy
ZXR1cm4gQVNDSUlMaXRlcmFsKCJIZW5zIik7Ci0gICAgfQotfQotCi10ZW1wbGF0ZTw+Ci1pbmxp
bmUgVGVzdFByb3RvY29sVGVzdFVuY2FzdGVkQW5pbWFscyBmcm9tUHJvdG9jb2xTdHJpbmcoY29u
c3QgU3RyaW5nJiB2YWx1ZSkKLXsKLSAgICBpZiAodmFsdWUgPT0gIlBpZ3MiKQotICAgICAgICBy
ZXR1cm4gVGVzdFByb3RvY29sVGVzdFVuY2FzdGVkQW5pbWFsc1BpZ3M7Ci0gICAgaWYgKHZhbHVl
ID09ICJDb3dzIikKLSAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbFRlc3RVbmNhc3RlZEFuaW1h
bHNDb3dzOwotICAgIGlmICh2YWx1ZSA9PSAiQ2F0cyIpCi0gICAgICAgIHJldHVybiBUZXN0UHJv
dG9jb2xUZXN0VW5jYXN0ZWRBbmltYWxzQ2F0czsKLSAgICBpZiAodmFsdWUgPT0gIkhlbnMiKQot
ICAgICAgICByZXR1cm4gVGVzdFByb3RvY29sVGVzdFVuY2FzdGVkQW5pbWFsc0hlbnM7Ci0gICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIFRlc3RQcm90b2NvbFRlc3RVbmNhc3Rl
ZEFuaW1hbHNQaWdzOwotfQotCi1pbmxpbmUgU3RyaW5nIHRvUHJvdG9jb2xTdHJpbmcoVGVzdFBy
b3RvY29sVGVzdENhc3RlZEFuaW1hbHMgdmFsdWUpCi17Ci0gICAgc3dpdGNoKHZhbHVlKSB7Ci0g
ICAgY2FzZSBUZXN0UHJvdG9jb2xUZXN0Q2FzdGVkQW5pbWFsc0R1Y2tzOgotICAgICAgICByZXR1
cm4gQVNDSUlMaXRlcmFsKCJEdWNrcyIpOwotICAgIGNhc2UgVGVzdFByb3RvY29sVGVzdENhc3Rl
ZEFuaW1hbHNIZW5zOgotICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsKCJIZW5zIik7Ci0gICAg
Y2FzZSBUZXN0UHJvdG9jb2xUZXN0Q2FzdGVkQW5pbWFsc0Nyb3dzOgotICAgICAgICByZXR1cm4g
QVNDSUlMaXRlcmFsKCJDcm93cyIpOwotICAgIGNhc2UgVGVzdFByb3RvY29sVGVzdENhc3RlZEFu
aW1hbHNGbGFtaW5nb3M6Ci0gICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIkZsYW1pbmdvcyIp
OwotICAgIH0KLX0KLQotdGVtcGxhdGU8PgotaW5saW5lIFRlc3RQcm90b2NvbFRlc3RDYXN0ZWRB
bmltYWxzIGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQotewotICAgIGlm
ICh2YWx1ZSA9PSAiRHVja3MiKQotICAgICAgICByZXR1cm4gVGVzdFByb3RvY29sVGVzdENhc3Rl
ZEFuaW1hbHNEdWNrczsKLSAgICBpZiAodmFsdWUgPT0gIkhlbnMiKQotICAgICAgICByZXR1cm4g
VGVzdFByb3RvY29sVGVzdENhc3RlZEFuaW1hbHNIZW5zOwotICAgIGlmICh2YWx1ZSA9PSAiQ3Jv
d3MiKQotICAgICAgICByZXR1cm4gVGVzdFByb3RvY29sVGVzdENhc3RlZEFuaW1hbHNDcm93czsK
LSAgICBpZiAodmFsdWUgPT0gIkZsYW1pbmdvcyIpCi0gICAgICAgIHJldHVybiBUZXN0UHJvdG9j
b2xUZXN0Q2FzdGVkQW5pbWFsc0ZsYW1pbmdvczsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LSAgICByZXR1cm4gVGVzdFByb3RvY29sVGVzdENhc3RlZEFuaW1hbHNEdWNrczsKLX0KLQotfSAv
LyBuYW1lc3BhY2UgSW5zcGVjdG9yCi0KLSMjIyBFbmQgRmlsZTogVGVzdFByb3RvY29sRW51bUNv
bnZlcnNpb25IZWxwZXJzLmgKLQogIyMjIEJlZ2luIEZpbGU6IFRlc3RQcm90b2NvbEV2ZW50RGlz
cGF0Y2hlcnMubW0KIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KQEAgLTEwOTMsNyArOTkyLDcgQEAgaW5saW5lIFRlc3RQcm90b2NvbFRl
c3RDYXN0ZWRBbmltYWxzIGZyb21Qcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQog
I2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJUZXN0UHJvdG9jb2xJbnRlcm5hbC5oIgogCi0j
aW1wb3J0ICJUZXN0UHJvdG9jb2xFbnVtQ29udmVyc2lvbkhlbHBlcnMuaCIKKyNpbXBvcnQgIlRl
c3RQcm90b2NvbFR5cGVDb252ZXJzaW9ucy5oIgogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSW5z
cGVjdG9yVmFsdWVzLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CkBAIC0xMjMwLDYg
KzExMjksMTA3IEBAIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkgKCJkZWZhdWx0IikpKQogCiAj
IyMgRW5kIEZpbGU6IFRlc3RQcm90b2NvbEludGVybmFsLmgKIAorIyMjIEJlZ2luIEZpbGU6IFRl
c3RQcm90b2NvbFR5cGVDb252ZXJzaW9ucy5oCisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIw
MTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0
IFVuaXZlcnNpdHkgb2YgV2FzaGluZ3Rvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworLy8gRE8gTk9UIEVESVQgVEhJUyBGSUxFLiBJdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRl
ZCBmcm9tIHR5cGUtcmVxdWlyaW5nLXJ1bnRpbWUtY2FzdHMuanNvbgorLy8gYnkgdGhlIHNjcmlw
dDogU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2dlbmVyYXRlLWluc3Bl
Y3Rvci1wcm90b2NvbC1iaW5kaW5ncy5weQorCisjaW1wb3J0ICJSV0lQcm90b2NvbEFycmF5Q29u
dmVyc2lvbnMuaCIKKworbmFtZXNwYWNlIEluc3BlY3RvciB7CisKK3RlbXBsYXRlPHR5cGVuYW1l
IE9iakNFbnVtVHlwZT4KK09iakNFbnVtVHlwZSBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3QgU3Ry
aW5nJiB2YWx1ZSk7CisKKworaW5saW5lIFN0cmluZyB0b1Byb3RvY29sU3RyaW5nKFRlc3RQcm90
b2NvbFRlc3RVbmNhc3RlZEFuaW1hbHMgdmFsdWUpCit7CisgICAgc3dpdGNoKHZhbHVlKSB7Cisg
ICAgY2FzZSBUZXN0UHJvdG9jb2xUZXN0VW5jYXN0ZWRBbmltYWxzUGlnczoKKyAgICAgICAgcmV0
dXJuIEFTQ0lJTGl0ZXJhbCgiUGlncyIpOworICAgIGNhc2UgVGVzdFByb3RvY29sVGVzdFVuY2Fz
dGVkQW5pbWFsc0Nvd3M6CisgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIkNvd3MiKTsKKyAg
ICBjYXNlIFRlc3RQcm90b2NvbFRlc3RVbmNhc3RlZEFuaW1hbHNDYXRzOgorICAgICAgICByZXR1
cm4gQVNDSUlMaXRlcmFsKCJDYXRzIik7CisgICAgY2FzZSBUZXN0UHJvdG9jb2xUZXN0VW5jYXN0
ZWRBbmltYWxzSGVuczoKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiSGVucyIpOworICAg
IH0KK30KKwordGVtcGxhdGU8PgoraW5saW5lIFRlc3RQcm90b2NvbFRlc3RVbmNhc3RlZEFuaW1h
bHMgZnJvbVByb3RvY29sU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCit7CisgICAgaWYgKHZh
bHVlID09ICJQaWdzIikKKyAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbFRlc3RVbmNhc3RlZEFu
aW1hbHNQaWdzOworICAgIGlmICh2YWx1ZSA9PSAiQ293cyIpCisgICAgICAgIHJldHVybiBUZXN0
UHJvdG9jb2xUZXN0VW5jYXN0ZWRBbmltYWxzQ293czsKKyAgICBpZiAodmFsdWUgPT0gIkNhdHMi
KQorICAgICAgICByZXR1cm4gVGVzdFByb3RvY29sVGVzdFVuY2FzdGVkQW5pbWFsc0NhdHM7Cisg
ICAgaWYgKHZhbHVlID09ICJIZW5zIikKKyAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbFRlc3RV
bmNhc3RlZEFuaW1hbHNIZW5zOworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVy
biBUZXN0UHJvdG9jb2xUZXN0VW5jYXN0ZWRBbmltYWxzUGlnczsKK30KKworaW5saW5lIFN0cmlu
ZyB0b1Byb3RvY29sU3RyaW5nKFRlc3RQcm90b2NvbFRlc3RDYXN0ZWRBbmltYWxzIHZhbHVlKQor
eworICAgIHN3aXRjaCh2YWx1ZSkgeworICAgIGNhc2UgVGVzdFByb3RvY29sVGVzdENhc3RlZEFu
aW1hbHNEdWNrczoKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiRHVja3MiKTsKKyAgICBj
YXNlIFRlc3RQcm90b2NvbFRlc3RDYXN0ZWRBbmltYWxzSGVuczoKKyAgICAgICAgcmV0dXJuIEFT
Q0lJTGl0ZXJhbCgiSGVucyIpOworICAgIGNhc2UgVGVzdFByb3RvY29sVGVzdENhc3RlZEFuaW1h
bHNDcm93czoKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiQ3Jvd3MiKTsKKyAgICBjYXNl
IFRlc3RQcm90b2NvbFRlc3RDYXN0ZWRBbmltYWxzRmxhbWluZ29zOgorICAgICAgICByZXR1cm4g
QVNDSUlMaXRlcmFsKCJGbGFtaW5nb3MiKTsKKyAgICB9Cit9CisKK3RlbXBsYXRlPD4KK2lubGlu
ZSBUZXN0UHJvdG9jb2xUZXN0Q2FzdGVkQW5pbWFscyBmcm9tUHJvdG9jb2xTdHJpbmcoY29uc3Qg
U3RyaW5nJiB2YWx1ZSkKK3sKKyAgICBpZiAodmFsdWUgPT0gIkR1Y2tzIikKKyAgICAgICAgcmV0
dXJuIFRlc3RQcm90b2NvbFRlc3RDYXN0ZWRBbmltYWxzRHVja3M7CisgICAgaWYgKHZhbHVlID09
ICJIZW5zIikKKyAgICAgICAgcmV0dXJuIFRlc3RQcm90b2NvbFRlc3RDYXN0ZWRBbmltYWxzSGVu
czsKKyAgICBpZiAodmFsdWUgPT0gIkNyb3dzIikKKyAgICAgICAgcmV0dXJuIFRlc3RQcm90b2Nv
bFRlc3RDYXN0ZWRBbmltYWxzQ3Jvd3M7CisgICAgaWYgKHZhbHVlID09ICJGbGFtaW5nb3MiKQor
ICAgICAgICByZXR1cm4gVGVzdFByb3RvY29sVGVzdENhc3RlZEFuaW1hbHNGbGFtaW5nb3M7Cisg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIFRlc3RQcm90b2NvbFRlc3RDYXN0
ZWRBbmltYWxzRHVja3M7Cit9CisKK30gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgorCisjIyMgRW5k
IEZpbGU6IFRlc3RQcm90b2NvbFR5cGVDb252ZXJzaW9ucy5oCisKICMjIyBCZWdpbiBGaWxlOiBU
ZXN0UHJvdG9jb2xUeXBlcy5tbQogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgpAQCAtMTI2NCw3ICsxMjY0LDcgQEAgX19hdHRyaWJ1dGVf
XygodmlzaWJpbGl0eSAoImRlZmF1bHQiKSkpCiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQg
IlRlc3RQcm90b2NvbEludGVybmFsLmgiCiAKLSNpbXBvcnQgIlRlc3RQcm90b2NvbEVudW1Db252
ZXJzaW9uSGVscGVycy5oIgorI2ltcG9ydCAiVGVzdFByb3RvY29sVHlwZUNvbnZlcnNpb25zLmgi
CiAjaW1wb3J0IDxXZWJJbnNwZWN0b3IvUldJUHJvdG9jb2xKU09OT2JqZWN0UHJpdmF0ZS5oPgog
I2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW1wb3J0IDx3dGYv
QXNzZXJ0aW9ucy5oPgo=
</data>
<flag name="review"
          id="297793"
          type_id="1"
          status="+"
          setter="timothy"
    />
    <flag name="commit-queue"
          id="297794"
          type_id="3"
          status="-"
          setter="bburg"
    />
          </attachment>
      

    </bug>

</bugzilla>