<?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>213316</bug_id>
          
          <creation_ts>2020-06-17 14:18:08 -0700</creation_ts>
          <short_desc>[WebIDL] Adopt LegacyFactoryFunction extended attribute in lieu of NamedConstructor</short_desc>
          <delta_ts>2020-09-04 17:20:20 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>calvaris</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>darin</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jer.noble</cc>
    
    <cc>joepeck</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mifenton</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1663674</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-06-17 14:18:08 -0700</bug_when>
    <thetext>[WebIDL] Adopt LegacyFactoryFunction extended attribute in lieu of NamedConstructor</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1663678</commentid>
    <comment_count>1</comment_count>
      <attachid>402154</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-06-17 14:38:25 -0700</bug_when>
    <thetext>Created attachment 402154
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1663715</commentid>
    <comment_count>2</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-06-17 17:14:15 -0700</bug_when>
    <thetext>Ugh, it&apos;s the awful getInterfaceExtendedAttributesFromIDL thing. I almost want to just redo all that not be horrible, but I probably should just keep hacking at it for this change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1685727</commentid>
    <comment_count>3</comment_count>
      <attachid>407988</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-09-04 10:08:59 -0700</bug_when>
    <thetext>Created attachment 407988
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1685730</commentid>
    <comment_count>4</comment_count>
      <attachid>407991</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-09-04 10:14:17 -0700</bug_when>
    <thetext>Created attachment 407991
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1685735</commentid>
    <comment_count>5</comment_count>
      <attachid>407992</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-09-04 10:17:33 -0700</bug_when>
    <thetext>Created attachment 407992
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1685750</commentid>
    <comment_count>6</comment_count>
      <attachid>407995</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-09-04 10:30:00 -0700</bug_when>
    <thetext>Created attachment 407995
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1685758</commentid>
    <comment_count>7</comment_count>
      <attachid>407998</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-09-04 10:53:43 -0700</bug_when>
    <thetext>Created attachment 407998
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1685946</commentid>
    <comment_count>8</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-09-04 17:19:48 -0700</bug_when>
    <thetext>Committed r266649: &lt;https://trac.webkit.org/changeset/266649&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 407998.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1685949</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-09-04 17:20:20 -0700</bug_when>
    <thetext>&lt;rdar://problem/68373451&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>402154</attachid>
            <date>2020-06-17 14:38:25 -0700</date>
            <delta_ts>2020-06-17 14:55:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213316-20200617143824.patch</filename>
            <type>text/plain</type>
            <size>52373</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2MzE4MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg2IEBACisyMDIwLTA2LTE3ICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViSURMXSBBZG9wdCBMZWdhY3lG
YWN0b3J5RnVuY3Rpb24gZXh0ZW5kZWQgYXR0cmlidXRlIGluIGxpZXUgb2YgTmFtZWRDb25zdHJ1
Y3RvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEz
MzE2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVw
bGFjZWQgdGhlIE5hbWVkQ29uc3RydWN0b3IgZXh0ZW5kZWQgYXR0cmlidXRlIHdpdGggc3BlYydk
IExlZ2FjeUZhY3RvcnlGdW5jdGlvbgorICAgICAgICBodHRwczovL2hleWNhbS5naXRodWIuaW8v
d2ViaWRsLyNMZWdhY3lGYWN0b3J5RnVuY3Rpb24KKworICAgICAgICBBcyBhbiBzbGlnaHQgZGl2
ZXJnZW5jZSBmcm9tIHRoZSBzcGVjLCB3ZSBhbGxvdyBMZWdhY3lGYWN0b3J5RnVuY3Rpb24ncyB0
byBoYXZlCisgICAgICAgIGV4dGVuZGVkIGF0dHJpYnV0ZXMgb2YgdGhlaXIgb3duLCBzbyB0aGF0
IHdlIGNhbiBhbm5vdGF0ZSB0aGUgb3BlcmF0aW9uIHdpdGgKKyAgICAgICAgc3RhbmRhcmQgYXR0
cmlidXRlcy4gRm9yIGluc3RhbmNlLCBIVE1MQXVkaW9FbGVtZW50IG5lZWRzIHRoZSBEb2N1bWVu
dCB0byBiZQorICAgICAgICBwYXNzZWQgdG8gdGhlIG9wZXJhdGlvbiwgc28gaXQgdXNlcyBbQ2Fs
bFdpdGg9RG9jdW1lbnRdOgorICAgICAgICAKKyAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAg
ICAuLi4KKyAgICAgICAgICAgICAgICBMZWdhY3lGYWN0b3J5RnVuY3Rpb249W0NhbGxXaXRoPURv
Y3VtZW50XSBBdWRpbyhvcHRpb25hbCBbQXRvbVN0cmluZ10gRE9NU3RyaW5nIHNyYykKKyAgICAg
ICAgICAgIF0KKworICAgICAgICBUaGlzIGFsbG93cyB1cyB0byByZW1vdmUgdGhlIGV4dGVuZGVk
IGF0dHJpYnV0ZXMgQ29uc3RydWN0b3JDYWxsV2l0aCBhbmQgQ29uc3RydWN0b3JNYXlUaHJvd0V4
Y2VwdGlvbi4KKworICAgICAgICBXZSBjdXJyZW50bHkgb25seSBhbGxvdyBhIHNpbmdsZSBMZWdh
Y3lGYWN0b3J5RnVuY3Rpb24gb24gYW4gaW50ZXJmYWNlLCBhbmQgZG8gbm90IGFsbG93CisgICAg
ICAgIGEgTGVnYWN5RmFjdG9yeUZ1bmN0aW9uIGFuZCBhIG5vcm1hbCBjb25zdHJ1Y3RvcigpIHRv
IGJlIHNwZWNpZmllZCwgYnV0IHRoaXMgaXMgbGFyZ2VseQorICAgICAgICBhbiBhcmJpdHJhcnkg
Y29uc3RyYWludCB0byBrZWVwIHRoZSBjaGFuZ2Ugc21hbGwgYW5kIGNhbiBiZSBsaWZ0ZWQgd2hl
biBuZWVkZWQuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01Db25zdHJ1Y3RvcldpdGhEb2N1bWVudC5jcHA6
IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3MvanMvSlNET01Db25zdHJ1Y3RvcldpdGhEb2N1
bWVudC5oOiBSZW1vdmVkLgorICAgICAgICBKU0RPTUNvbnN0cnVjdG9yV2l0aERvY3VtZW50IGlz
IG5vdCB1c2VkIGJ5IGFueXRoaW5nIGFueW1vcmUuCisgCisgICAgICAgICogYmluZGluZ3MvanMv
SlNET01MZWdhY3lGYWN0b3J5RnVuY3Rpb24uaDogQWRkZWQuCisgICAgICAgICogYmluZGluZ3Mv
anMvSlNET01OYW1lZENvbnN0cnVjdG9yLmg6IFJlbW92ZWQuCisgICAgICAgIFJlbmFtZWQgSlNE
T01OYW1lZENvbnN0cnVjdG9yIHRvIEpTRE9NTGVnYWN5RmFjdG9yeUZ1bmN0aW9uIGFuZCBtYWRl
IGl0IAorICAgICAgICBpbmhlcml0IGZyb20gSlNET01Db25zdHJ1Y3RvckJhc2UgZGlyZWN0bHkg
aW4gb3JkZXIgdG8gd29yayB3aXRoIFdvcmtlcnMKKyAgICAgICAgaWYgbmVlZGVkIGluIHRoZSBm
dXR1cmUuCisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToK
KyAgICAgICAgKEdlbmVyYXRlSGVhZGVyKToKKyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50YXRp
b24pOgorICAgICAgICAoR2VuZXJhdGVBdHRyaWJ1dGVHZXR0ZXJCb2R5RGVmaW5pdGlvbik6Cisg
ICAgICAgIChHZW5lcmF0ZUF0dHJpYnV0ZVNldHRlckJvZHlEZWZpbml0aW9uKToKKyAgICAgICAg
KEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrKToKKyAgICAgICAgKEdldENvbnN0cnVjdG9yVGVtcGxh
dGVDbGFzc05hbWUpOgorICAgICAgICAoR2VuZXJhdGVDb25zdHJ1Y3RvckRlY2xhcmF0aW9uKToK
KyAgICAgICAgKEdlbmVyYXRlQ29uc3RydWN0b3JEZWZpbml0aW9ucyk6CisgICAgICAgIChHZW5l
cmF0ZUNvbnN0cnVjdG9yRGVmaW5pdGlvbik6CisgICAgICAgIChHZW5lcmF0ZUNvbnN0cnVjdG9y
SGVscGVyTWV0aG9kcyk6CisgICAgICAgIFVwZGF0ZSB1c2UgTGVnYWN5RmFjdG9yeUZ1bmN0aW9u
IHJhdGhlciB0aGFuIE5hbWVkQ29uc3RydWN0b3IuIFJlbW92ZSBzcGVjaWFsIGNhc2VzCisgICAg
ICAgIGZvciBDb25zdHJ1Y3Rvck1heVRocm93RXhjZXB0aW9uIGFuZCBDb25zdHJ1Y3RvckNhbGxX
aXRoLgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLmpzb246Cisg
ICAgICAgIFJlbW92ZSBOYW1lZENvbnN0cnVjdG9yLCBDb25zdHJ1Y3Rvck1heVRocm93RXhjZXB0
aW9uIGFuZCBDb25zdHJ1Y3RvckNhbGxXaXRoIAorICAgICAgICBhbmQgYWRkIExlZ2FjeUZhY3Rv
cnlGdW5jdGlvbi4KKworICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvSURMUGFyc2VyLnBtOgor
ICAgICAgICAocGFyc2VFeHRlbmRlZEF0dHJpYnV0ZVJlc3QyKToKKyAgICAgICAgKHBhcnNlRXh0
ZW5kZWRBdHRyaWJ1dGVSZXN0Myk6CisgICAgICAgIChwYXJzZUV4dGVuZGVkQXR0cmlidXRlTmFt
ZWRBcmdMaXN0KToKKyAgICAgICAgKGFwcGx5RXh0ZW5kZWRBdHRyaWJ1dGVMaXN0KToKKyAgICAg
ICAgU3VwcG9ydCBwYXJzaW5nIHRoZSBleHRlbmRlZCBzeW50YXggbmVlZGVkIHRvIGZvciBhIExl
Z2FjeUZhY3RvcnlGdW5jdGlvbiB3aXRoCisgICAgICAgIGV4dGVuZGVkIGF0dHJpYnV0ZXMgb2Yg
aXRzIG93bi4KKworICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvcHJlcHJvY2Vzcy1pZGxzLnBs
OgorICAgICAgICAoR2VuZXJhdGVDb25zdHJ1Y3RvckF0dHJpYnV0ZXMpOgorICAgICAgICBVcGRh
dGUgYXdmdWwgY3J1dGNoIHRvIGV4dHJhY3QgTGVnYWN5RmFjdG9yeUZ1bmN0aW9ucyBmcm9tIGlu
dGVyZmFjZSBmaWxlcyBmb3IgZ2xvYmFsCisgICAgICAgIG9iamVjdCBleHBvc3VyZS4KKworICAg
ICAgICAoZ2V0SW50ZXJmYWNlRXh0ZW5kZWRBdHRyaWJ1dGVzRnJvbUlETCk6CisgICAgICAgIFVw
ZGF0ZSBldmVuIG1vcmUgYXdmdWwgY3J1dGNoIHRvICJwYXJzZSIgRXh0ZW5kZWRBdHRyaWJ1dGVz
IHVzaW5nIHJlZ3VyYWwgZXhwcmVzc2lvbnMuCisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVz
dEdsb2JhbE9iamVjdEF1ZGlvQ29uc3RydWN0b3JHZXR0ZXIpOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5oOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0TmFtZWRDb25zdHJ1Y3Rvci5pZGw6CisgICAg
ICAgIFVwZGF0ZSB0ZXN0cyBmb3IgbmV3IG5hbWVzLgorCisgICAgICAgICogaHRtbC9IVE1MQXVk
aW9FbGVtZW50LmlkbDoKKyAgICAgICAgKiBodG1sL0hUTUxJbWFnZUVsZW1lbnQuaWRsOgorICAg
ICAgICAqIGh0bWwvSFRNTE9wdGlvbkVsZW1lbnQuaWRsOgorICAgICAgICBBZG9wdCBMZWdhY3lG
YWN0b3J5RnVuY3Rpb24uCisKIDIwMjAtMDYtMTYgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgcXVpa3IuY29tOiB1bmFibGUgdG8gc2VsZWN0IGl0ZW0gZnJv
bSBkcm9wZG93bgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjYzMTc2KQorKysgU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC05ODkzLDcg
Kzk4OTMsNiBAQAogCQk3QzBDRUYyOTFFNEE1NEQzMDA4REVCODAgLyogSlNET01Db25zdHJ1Y3Rv
cldpdGhEb2N1bWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0RPTUNv
bnN0cnVjdG9yV2l0aERvY3VtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdD
MENFRjJBMUU0QTU1NkMwMDhERUI4MCAvKiBKU0RPTUJ1aWx0aW5Db25zdHJ1Y3RvckJhc2UuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNET01CdWlsdGluQ29uc3RydWN0b3JC
YXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDMENFRjJCMUU0QTU1QzMwMDhE
RUI4MCAvKiBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3QzBDRUYyQzFFNEE1NjREMDA4REVCODAgLyog
SlNET01OYW1lZENvbnN0cnVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEpTRE9NTmFtZWRDb25zdHJ1Y3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
QzBDRUYyRDFFNEE1NkM1MDA4REVCODAgLyogSlNET01CdWlsdGluQ29uc3RydWN0b3IuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNET01CdWlsdGluQ29uc3RydWN0b3IuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MwQ0VGMkUxRTRBNTgzMjAwOERFQjgwIC8q
IEpTRE9NQnVpbHRpbkNvbnN0cnVjdG9yQmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU0RPTUJ1aWx0aW5Db25zdHJ1Y3RvckJhc2UuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3QzBDRUYyRjFFNEE1OEFEMDA4REVCODAgLyogSlNET01Db25z
dHJ1Y3RvckJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNE
T01Db25zdHJ1Y3RvckJhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTAx
MTQsNiArMTAxMTMsNyBAQAogCQk3QzhGMjI0MzFERDNCM0I5MDBFOTJEQTMgLyogU1ZHQW5nbGVW
YWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdBbmdsZVZhbHVlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDOEYyMjQ1MUREM0QxQzUwMEU5MkRBMyAv
KiBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gU1ZHUHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M4RjIyNDYxREQzRDFDNTAwRTkyREEzIC8qIFNWR1ByZXNl
cnZlQXNwZWN0UmF0aW9WYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
VkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJN0M5MUI0MzkyNDlBQTM0RDAwOUQyQjhGIC8qIEpTRE9NTGVnYWN5RmFjdG9yeUZ1bmN0aW9u
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRE9NTGVnYWN5RmFjdG9yeUZ1
bmN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDOTNGMzQ3MUFBNkJBNUUw
MEE5OEJBQiAvKiBDb21waWxlZENvbnRlbnRFeHRlbnNpb24uY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gQ29tcGlsZWRDb250ZW50RXh0ZW5zaW9uLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M5M0YzNDgxQUE2QkE1RTAwQTk4QkFCIC8qIENvbXBp
bGVkQ29udGVudEV4dGVuc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBD
b21waWxlZENvbnRlbnRFeHRlbnNpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
N0M5M0YzNEIxQUE2QkYwNzAwQTk4QkFCIC8qIENvbnRlbnRFeHRlbnNpb25Db21waWxlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb250ZW50RXh0ZW5zaW9uQ29t
cGlsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjYzMjYsNyArMjYzMjYs
NyBAQAogCQkJCTdDMENFRjJCMUU0QTU1QzMwMDhERUI4MCAvKiBKU0RPTUNvbnN0cnVjdG9yTm90
Q29uc3RydWN0YWJsZS5oICovLAogCQkJCTdDMENFRjMwMUU0QTU4RjEwMDhERUI4MCAvKiBKU0RP
TUNvbnN0cnVjdG9yV2l0aERvY3VtZW50LmNwcCAqLywKIAkJCQk3QzBDRUYyOTFFNEE1NEQzMDA4
REVCODAgLyogSlNET01Db25zdHJ1Y3RvcldpdGhEb2N1bWVudC5oICovLAotCQkJCTdDMENFRjJD
MUU0QTU2NEQwMDhERUI4MCAvKiBKU0RPTU5hbWVkQ29uc3RydWN0b3IuaCAqLywKKwkJCQk3Qzkx
QjQzOTI0OUFBMzREMDA5RDJCOEYgLyogSlNET01MZWdhY3lGYWN0b3J5RnVuY3Rpb24uaCAqLywK
IAkJCSk7CiAJCQluYW1lID0gQ29uc3RydWN0b3JzOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29uc3RydWN0b3JXaXRo
RG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NQ29uc3RydWN0b3JXaXRoRG9jdW1lbnQuY3BwCShyZXZpc2lvbiAyNjMxNzYpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnN0cnVjdG9yV2l0aERvY3VtZW50LmNwcAko
bm9uZXhpc3RlbnQpCkBAIC0xLDMxICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IChDKSAxOTk5
LTIwMDEgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKLSAqICBDb3B5cmlnaHQgKEMpIDIw
MDQtMjAxMSwgMjAxMywgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiAg
Q29weXJpZ2h0IChDKSAyMDA3IFNhbXVlbCBXZWluaWcgPHNhbUB3ZWJraXQub3JnPgotICogIENv
cHlyaWdodCAoQykgMjAxMyBNaWNoYWVsIFBydWV0dCA8bWljaGFlbEA2OGsub3JnPgotICoKLSAq
ICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCi0gKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBH
ZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5
IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAg
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuICBTZWUgdGhlIEdOVQotICogIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCi0gKgotICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFsb25nIHdpdGgg
dGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0gKiAgRm91
bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBN
QSAgMDIxMTAtMTMwMSAgVVNBCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUg
IkpTRE9NQ29uc3RydWN0b3JXaXRoRG9jdW1lbnQuaCIKLQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci11c2luZyBuYW1lc3BhY2UgSlNDOwotCi1TVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNU
UlVDVElCTEUoSlNET01Db25zdHJ1Y3RvcldpdGhEb2N1bWVudCk7Ci0KLX0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29uc3RydWN0
b3JXaXRoRG9jdW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTUNvbnN0cnVjdG9yV2l0aERvY3VtZW50LmgJKHJldmlzaW9uIDI2MzE3NikKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29uc3RydWN0b3JXaXRoRG9jdW1lbnQuaAko
bm9uZXhpc3RlbnQpCkBAIC0xLDUxICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IChDKSAyMDE1
LCAyMDE2IENhbm9uIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqICBDb3B5cmlnaHQgKEMp
IDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqICBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiAg
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1Ymxp
YwotICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgotICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQotICogIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCi0gKgotICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
ZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0gKiAgRm91bmRhdGlvbiwgSW5j
LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMw
MSAgVVNBCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJEb2N1bWVudC5oIgotI2lu
Y2x1ZGUgIkpTRE9NQ29uc3RydWN0b3JCYXNlLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
Ly8gQ29uc3RydWN0b3JzIHVzaW5nIHRoaXMgYmFzZSBjbGFzcyBkZXBlbmQgb24gYmVpbmcgaW4g
YSBEb2N1bWVudCBhbmQKLS8vIGNhbiBuZXZlciBiZSB1c2VkIGZyb20gYSBXb3JrZXJHbG9iYWxT
Y29wZS4KLWNsYXNzIEpTRE9NQ29uc3RydWN0b3JXaXRoRG9jdW1lbnQgOiBwdWJsaWMgSlNET01D
b25zdHJ1Y3RvckJhc2UgewotcHVibGljOgotICAgIHVzaW5nIEJhc2UgPSBKU0RPTUNvbnN0cnVj
dG9yQmFzZTsKLQotICAgIERvY3VtZW50KiBkb2N1bWVudCgpIGNvbnN0Ci0gICAgewotICAgICAg
ICByZXR1cm4gZG93bmNhc3Q8RG9jdW1lbnQ+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7Ci0g
ICAgfQotCi1wcm90ZWN0ZWQ6Ci0gICAgSlNET01Db25zdHJ1Y3RvcldpdGhEb2N1bWVudChKU0M6
OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQot
ICAgICAgICA6IEpTRE9NQ29uc3RydWN0b3JCYXNlKHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KQot
ICAgIHsKLSAgICB9Ci0KLSAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTRE9NR2xvYmFsT2JqZWN0
JiBnbG9iYWxPYmplY3QpCi0gICAgewotICAgICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbihnbG9i
YWxPYmplY3Qudm0oKSk7Ci0gICAgICAgIEFTU0VSVChnbG9iYWxPYmplY3Quc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpLT5pc0RvY3VtZW50KCkpOwotICAgIH0KLX07Ci0KLX0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NTGVnYWN5RmFj
dG9yeUZ1bmN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01MZWdhY3lGYWN0b3J5RnVuY3Rpb24uaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTUxlZ2FjeUZhY3RvcnlGdW5jdGlvbi5oCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsODAgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDE1LCAyMDE2IENh
bm9uIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMTYgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExp
Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl
cgorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQor
ICogIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgor
ICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2Vu
ZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3Qs
IHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh
bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJKU0RPTUNvbnN0cnVjdG9yQmFzZS5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIEpTQ2xhc3M+IGNsYXNz
IEpTRE9NTGVnYWN5RmFjdG9yeUZ1bmN0aW9uIGZpbmFsIDogcHVibGljIEpTRE9NQ29uc3RydWN0
b3JCYXNlIHsKK3B1YmxpYzoKKyAgICB1c2luZyBCYXNlID0gSlNET01Db25zdHJ1Y3RvckJhc2U7
CisKKyAgICBzdGF0aWMgSlNET01MZWdhY3lGYWN0b3J5RnVuY3Rpb24qIGNyZWF0ZShKU0M6OlZN
JiwgSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCYpOworICAgIHN0YXRpYyBKU0M6
OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0
JiwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSk7CisKKyAgICBERUNMQVJFX0lORk87CisKKyAgICAv
LyBNdXN0IGJlIGRlZmluZWQgZm9yIGVhY2ggc3BlY2lhbGl6YXRpb24gY2xhc3MuCisgICAgc3Rh
dGljIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYsIGNvbnN0IEpT
RE9NR2xvYmFsT2JqZWN0Jik7CisKK3ByaXZhdGU6CisgICAgSlNET01MZWdhY3lGYWN0b3J5RnVu
Y3Rpb24oSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2Jh
bE9iamVjdCkKKyAgICAgICAgOiBCYXNlKHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KQorICAgIHsg
CisgICAgfQorCisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJiwgSlNET01HbG9iYWxP
YmplY3QmKTsKKyAgICBzdGF0aWMgSlNDOjpDYWxsRGF0YSBnZXRDb25zdHJ1Y3REYXRhKEpTQzo6
SlNDZWxsKik7CisKKyAgICAvLyBVc3VhbGx5IGRlZmluZWQgZm9yIGVhY2ggc3BlY2lhbGl6YXRp
b24gY2xhc3MuCisgICAgdm9pZCBpbml0aWFsaXplUHJvcGVydGllcyhKU0M6OlZNJiwgSlNET01H
bG9iYWxPYmplY3QmKSB7IH0KKyAgICAvLyBNdXN0IGJlIGRlZmluZWQgZm9yIGVhY2ggc3BlY2lh
bGl6YXRpb24gY2xhc3MuCisgICAgc3RhdGljIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBjb25zdHJ1Y3QoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7Cit9
OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBKU0NsYXNzPiBpbmxpbmUgSlNET01MZWdhY3lGYWN0b3J5
RnVuY3Rpb248SlNDbGFzcz4qIEpTRE9NTGVnYWN5RmFjdG9yeUZ1bmN0aW9uPEpTQ2xhc3M+Ojpj
cmVhdGUoSlNDOjpWTSYgdm0sIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFs
T2JqZWN0JiBnbG9iYWxPYmplY3QpCit7CisgICAgSlNET01MZWdhY3lGYWN0b3J5RnVuY3Rpb24q
IGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU0RPTUxlZ2Fj
eUZhY3RvcnlGdW5jdGlvbj4odm0uaGVhcCkpIEpTRE9NTGVnYWN5RmFjdG9yeUZ1bmN0aW9uKHN0
cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KTsKKyAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24o
dm0sIGdsb2JhbE9iamVjdCk7CisgICAgcmV0dXJuIGNvbnN0cnVjdG9yOworfQorCit0ZW1wbGF0
ZTx0eXBlbmFtZSBKU0NsYXNzPiBpbmxpbmUgSlNDOjpTdHJ1Y3R1cmUqIEpTRE9NTGVnYWN5RmFj
dG9yeUZ1bmN0aW9uPEpTQ2xhc3M+OjpjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6
SlNHbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKK3sK
KyAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgJmdsb2JhbE9iamVjdCwgcHJv
dG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBp
bmZvKCkpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBKU0NsYXNzPiBpbmxpbmUgdm9pZCBKU0RP
TUxlZ2FjeUZhY3RvcnlGdW5jdGlvbjxKU0NsYXNzPjo6ZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYg
dm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit7CisgICAgQmFzZTo6ZmluaXNo
Q3JlYXRpb24oZ2xvYmFsT2JqZWN0KTsKKyAgICBBU1NFUlQoaW5oZXJpdHModm0sIGluZm8oKSkp
OworICAgIGluaXRpYWxpemVQcm9wZXJ0aWVzKHZtLCBnbG9iYWxPYmplY3QpOworfQorCit0ZW1w
bGF0ZTx0eXBlbmFtZSBKU0NsYXNzPiBpbmxpbmUgSlNDOjpDYWxsRGF0YSBKU0RPTUxlZ2FjeUZh
Y3RvcnlGdW5jdGlvbjxKU0NsYXNzPjo6Z2V0Q29uc3RydWN0RGF0YShKU0M6OkpTQ2VsbCopCit7
CisgICAgSlNDOjpDYWxsRGF0YSBjb25zdHJ1Y3REYXRhOworICAgIGNvbnN0cnVjdERhdGEudHlw
ZSA9IEpTQzo6Q2FsbERhdGE6OlR5cGU6Ok5hdGl2ZTsKKyAgICBjb25zdHJ1Y3REYXRhLm5hdGl2
ZS5mdW5jdGlvbiA9IGNvbnN0cnVjdDsKKyAgICByZXR1cm4gY29uc3RydWN0RGF0YTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01OYW1lZENvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01OYW1lZENvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDI2MzE3NikKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NTmFtZWRDb25zdHJ1Y3Rvci5oCShub25leGlz
dGVudCkKQEAgLTEsODEgKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgKEMpIDIwMTUsIDIwMTYg
Q2Fub24gSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogIENvcHlyaWdodCAoQykgMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0gKiAg
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCi0gKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqICBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
Ci0gKiAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAq
Ci0gKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBH
ZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5v
dCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSAqICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EK
LSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIkpTRE9NQ29uc3RydWN0b3JXaXRoRG9j
dW1lbnQuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0vLyBGSU1YRTogV2h5IGNhbid0IG5h
bWVkIGNvbnN0cnVjdG9ycyBiZSB1c2VkIHdpdGggd29ya2Vycz8KLXRlbXBsYXRlPHR5cGVuYW1l
IEpTQ2xhc3M+IGNsYXNzIEpTRE9NTmFtZWRDb25zdHJ1Y3RvciBmaW5hbCA6IHB1YmxpYyBKU0RP
TUNvbnN0cnVjdG9yV2l0aERvY3VtZW50IHsKLXB1YmxpYzoKLSAgICB1c2luZyBCYXNlID0gSlNE
T01Db25zdHJ1Y3RvcldpdGhEb2N1bWVudDsKLQotICAgIHN0YXRpYyBKU0RPTU5hbWVkQ29uc3Ry
dWN0b3IqIGNyZWF0ZShKU0M6OlZNJiwgSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVj
dCYpOwotICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0m
LCBKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSk7Ci0KLSAgICBE
RUNMQVJFX0lORk87Ci0KLSAgICAvLyBNdXN0IGJlIGRlZmluZWQgZm9yIGVhY2ggc3BlY2lhbGl6
YXRpb24gY2xhc3MuCi0gICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGVGb3JTdHJ1Y3R1
cmUoSlNDOjpWTSYsIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Jik7Ci0KLXByaXZhdGU6Ci0gICAg
SlNET01OYW1lZENvbnN0cnVjdG9yKEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xv
YmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCi0gICAgICAgIDogQmFzZShzdHJ1Y3R1cmUsIGdsb2Jh
bE9iamVjdCkKLSAgICB7IAotICAgIH0KLQotICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpW
TSYsIEpTRE9NR2xvYmFsT2JqZWN0Jik7Ci0gICAgc3RhdGljIEpTQzo6Q2FsbERhdGEgZ2V0Q29u
c3RydWN0RGF0YShKU0M6OkpTQ2VsbCopOwotCi0gICAgLy8gVXN1YWxseSBkZWZpbmVkIGZvciBl
YWNoIHNwZWNpYWxpemF0aW9uIGNsYXNzLgotICAgIHZvaWQgaW5pdGlhbGl6ZVByb3BlcnRpZXMo
SlNDOjpWTSYsIEpTRE9NR2xvYmFsT2JqZWN0JikgeyB9Ci0gICAgLy8gTXVzdCBiZSBkZWZpbmVk
IGZvciBlYWNoIHNwZWNpYWxpemF0aW9uIGNsYXNzLgotICAgIHN0YXRpYyBKU0M6OkVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6
OkNhbGxGcmFtZSopOwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgSlNDbGFzcz4gaW5saW5lIEpT
RE9NTmFtZWRDb25zdHJ1Y3RvcjxKU0NsYXNzPiogSlNET01OYW1lZENvbnN0cnVjdG9yPEpTQ2xh
c3M+OjpjcmVhdGUoSlNDOjpWTSYgdm0sIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9N
R2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCi17Ci0gICAgSlNET01OYW1lZENvbnN0cnVjdG9y
KiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNET01OYW1l
ZENvbnN0cnVjdG9yPih2bS5oZWFwKSkgSlNET01OYW1lZENvbnN0cnVjdG9yKHN0cnVjdHVyZSwg
Z2xvYmFsT2JqZWN0KTsKLSAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24odm0sIGdsb2Jh
bE9iamVjdCk7Ci0gICAgcmV0dXJuIGNvbnN0cnVjdG9yOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFt
ZSBKU0NsYXNzPiBpbmxpbmUgSlNDOjpTdHJ1Y3R1cmUqIEpTRE9NTmFtZWRDb25zdHJ1Y3RvcjxK
U0NsYXNzPjo6Y3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0
JiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCi17Ci0gICAgcmV0dXJuIEpT
Qzo6U3RydWN0dXJlOjpjcmVhdGUodm0sICZnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpU
eXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKLX0KLQot
dGVtcGxhdGU8dHlwZW5hbWUgSlNDbGFzcz4gaW5saW5lIHZvaWQgSlNET01OYW1lZENvbnN0cnVj
dG9yPEpTQ2xhc3M+OjpmaW5pc2hDcmVhdGlvbihKU0M6OlZNJiB2bSwgSlNET01HbG9iYWxPYmpl
Y3QmIGdsb2JhbE9iamVjdCkKLXsKLSAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbihnbG9iYWxPYmpl
Y3QpOwotICAgIEFTU0VSVChpbmhlcml0cyh2bSwgaW5mbygpKSk7Ci0gICAgaW5pdGlhbGl6ZVBy
b3BlcnRpZXModm0sIGdsb2JhbE9iamVjdCk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEpTQ2xh
c3M+IGlubGluZSBKU0M6OkNhbGxEYXRhIEpTRE9NTmFtZWRDb25zdHJ1Y3RvcjxKU0NsYXNzPjo6
Z2V0Q29uc3RydWN0RGF0YShKU0M6OkpTQ2VsbCopCi17Ci0gICAgSlNDOjpDYWxsRGF0YSBjb25z
dHJ1Y3REYXRhOwotICAgIGNvbnN0cnVjdERhdGEudHlwZSA9IEpTQzo6Q2FsbERhdGE6OlR5cGU6
Ok5hdGl2ZTsKLSAgICBjb25zdHJ1Y3REYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNvbnN0cnVjdDsK
LSAgICByZXR1cm4gY29uc3RydWN0RGF0YTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9ySlMucG0JKHJldmlzaW9uIDI2MzE3NikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCSh3b3JraW5nIGNvcHkpCkBAIC0yNzY1LDcgKzI3NjUs
NyBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKICAgICAjIENvbnN0cnVjdG9yIG9iamVjdCBnZXR0ZXIK
ICAgICB1bmxlc3MgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e05vSW50ZXJmYWNl
T2JqZWN0fSkgewogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyBKU0M6
OkpTVmFsdWUgZ2V0Q29uc3RydWN0b3IoSlNDOjpWTSYsIGNvbnN0IEpTQzo6SlNHbG9iYWxPYmpl
Y3QqKTtcbiIpOwotICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyBKU0M6
OkpTVmFsdWUgZ2V0TmFtZWRDb25zdHJ1Y3RvcihKU0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVj
dCopO1xuIikgaWYgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57TmFtZWRDb25zdHJ1
Y3Rvcn07CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIEpTQzo6SlNW
YWx1ZSBnZXRMZWdhY3lGYWN0b3J5RnVuY3Rpb24oSlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxPYmpl
Y3QqKTtcbiIpIGlmICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0xlZ2FjeUZhY3Rv
cnlGdW5jdGlvbn07CiAgICAgfQogCiAgICAgIyBTZXJpYWxpemVyIGZ1bmN0aW9uLgpAQCAtNDI0
NSw4ICs0MjQ1LDggQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgbXkgJHBy
b3RvQ2xhc3NOYW1lID0gIiR7Y2xhc3NOYW1lfVByb3RvdHlwZSI7CiAgICAgICAgIEdlbmVyYXRl
Q29uc3RydWN0b3JEZWZpbml0aW9ucyhcQGltcGxDb250ZW50LCAkY2xhc3NOYW1lLCAkcHJvdG9D
bGFzc05hbWUsICR2aXNpYmxlSW50ZXJmYWNlTmFtZSwgJGludGVyZmFjZSk7CiAKLSAgICAgICAg
bXkgJG5hbWVkQ29uc3RydWN0b3IgPSAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntO
YW1lZENvbnN0cnVjdG9yfTsKLSAgICAgICAgR2VuZXJhdGVDb25zdHJ1Y3RvckRlZmluaXRpb25z
KFxAaW1wbENvbnRlbnQsICRjbGFzc05hbWUsICRwcm90b0NsYXNzTmFtZSwgJG5hbWVkQ29uc3Ry
dWN0b3IsICRpbnRlcmZhY2UsICJHZW5lcmF0aW5nTmFtZWRDb25zdHJ1Y3RvciIpIGlmICRuYW1l
ZENvbnN0cnVjdG9yOworICAgICAgICBteSAkbGVnYWN5RmFjdG9yeUZ1bmN0aW9uID0gJGludGVy
ZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57TGVnYWN5RmFjdG9yeUZ1bmN0aW9ufTsKKyAgICAg
ICAgR2VuZXJhdGVDb25zdHJ1Y3RvckRlZmluaXRpb25zKFxAaW1wbENvbnRlbnQsICRjbGFzc05h
bWUsICRwcm90b0NsYXNzTmFtZSwgJGxlZ2FjeUZhY3RvcnlGdW5jdGlvbi0+bmFtZSwgJGludGVy
ZmFjZSwgIkdlbmVyYXRpbmdMZWdhY3lGYWN0b3J5RnVuY3Rpb24iKSBpZiAkbGVnYWN5RmFjdG9y
eUZ1bmN0aW9uOwogICAgIH0KIAogICAgICMgLSBBZGQgZnVuY3Rpb25zIGFuZCBjb25zdGFudHMg
dG8gYSBoYXNodGFibGUgZGVmaW5pdGlvbgpAQCAtNDUzOCwxMCArNDUzOCwxMCBAQCBzdWIgR2Vu
ZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1
cm4gZ2V0RE9NQ29uc3RydWN0b3I8JHtjbGFzc05hbWV9Q29uc3RydWN0b3I+KHZtLCAqanNDYXN0
PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7XG4iKTsKICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOwogCi0gICAgICAgIGlmICgkaW50ZXJmYWNlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPntOYW1lZENvbnN0cnVjdG9yfSkgewotICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICJKU1ZhbHVlICR7Y2xhc3NOYW1lfTo6Z2V0TmFtZWRDb25zdHJ1Y3Rv
cihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpXG4iKTsKKyAgICAgICAgaWYg
KCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0xlZ2FjeUZhY3RvcnlGdW5jdGlvbn0p
IHsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiSlNWYWx1ZSAke2NsYXNzTmFtZX06
OmdldExlZ2FjeUZhY3RvcnlGdW5jdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QpXG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7Ci0gICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8
JHtjbGFzc05hbWV9TmFtZWRDb25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8SlNET01HbG9iYWxPYmpl
Y3QqPihnbG9iYWxPYmplY3QpKTtcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPCR7Y2xhc3NOYW1lfUxlZ2FjeUZhY3RvcnlG
dW5jdGlvbj4odm0sICpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTtc
biIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOwogICAgICAgICB9
CiAgICAgfQpAQCAtNDk5NSwxNSArNDk5NSwxNyBAQCBzdWIgR2VuZXJhdGVBdHRyaWJ1dGVHZXR0
ZXJCb2R5RGVmaW5pdGlvCiAgICAgfSBlbHNpZiAoJGNvZGVHZW5lcmF0b3ItPklzQ29uc3RydWN0
b3JUeXBlKCRhdHRyaWJ1dGUtPnR5cGUpKSB7CiAgICAgICAgIG15ICRjb25zdHJ1Y3RvclR5cGUg
PSAkYXR0cmlidXRlLT50eXBlLT5uYW1lOwogICAgICAgICAkY29uc3RydWN0b3JUeXBlID1+IHMv
Q29uc3RydWN0b3IkLy87CisgICAgICAgIAorICAgICAgICBteSAkbGVnYWN5RmFjdG9yeUZ1bmN0
aW9uID0gKCRjb25zdHJ1Y3RvclR5cGUgPX4gL0xlZ2FjeUZhY3RvcnlGdW5jdGlvbiQvKSA/ICJM
ZWdhY3lGYWN0b3J5RnVuY3Rpb24iIDogIiI7CisgICAgICAgICRsZWdhY3lGYWN0b3J5RnVuY3Rp
b24gPX4gcy9MZWdhY3lGYWN0b3J5RnVuY3Rpb24kLy87CisKICAgICAgICAgIyBXaGVuIENvbnN0
cnVjdG9yIGF0dHJpYnV0ZSBpcyB1c2VkIGJ5IERPTVdpbmRvdy5pZGwsIGl0J3MgY29ycmVjdCB0
byBwYXNzIHRoaXNPYmplY3QgYXMgdGhlIGdsb2JhbCBvYmplY3QKICAgICAgICAgIyBXaGVuIEpT
RE9NV3JhcHBlcnMgaGF2ZSBhIGJhY2stcG9pbnRlciB0byB0aGUgZ2xvYmFsT2JqZWN0IHdlIGNh
biBwYXNzIHRoaXNPYmplY3QtPmdsb2JhbE9iamVjdCgpCiAgICAgICAgIGlmICgkaW50ZXJmYWNl
LT50eXBlLT5uYW1lIGVxICJET01XaW5kb3ciKSB7Ci0gICAgICAgICAgICBteSAkbmFtZWQgPSAo
JGNvbnN0cnVjdG9yVHlwZSA9fiAvTmFtZWQkLykgPyAiTmFtZWQiIDogIiI7Ci0gICAgICAgICAg
ICAkY29uc3RydWN0b3JUeXBlID1+IHMvTmFtZWQkLy87Ci0gICAgICAgICAgICBwdXNoKEAkb3V0
cHV0QXJyYXksICIgICAgcmV0dXJuIEpTIiAuICRjb25zdHJ1Y3RvclR5cGUgLiAiOjpnZXQke25h
bWVkfUNvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCAmdGhpc09i
amVjdCk7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICByZXR1cm4g
SlMiIC4gJGNvbnN0cnVjdG9yVHlwZSAuICI6OmdldCR7bGVnYWN5RmFjdG9yeUZ1bmN0aW9ufUNv
bnN0cnVjdG9yKEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCAmdGhpc09iamVjdCk7
XG4iKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJK
UyIgLiAkY29uc3RydWN0b3JUeXBlIC4gIi5oIiwgJGNvbmRpdGlvbmFsKTsKLSAgICAgICAgICAg
IHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICByZXR1cm4gSlMiIC4gJGNvbnN0cnVjdG9yVHlwZSAu
ICI6OmdldENvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCB0aGlz
T2JqZWN0Lmdsb2JhbE9iamVjdCgpKTtcbiIpOworICAgICAgICAgICAgcHVzaChAJG91dHB1dEFy
cmF5LCAiICAgIHJldHVybiBKUyIgLiAkY29uc3RydWN0b3JUeXBlIC4gIjo6Z2V0JHtsZWdhY3lG
YWN0b3J5RnVuY3Rpb259Q29uc3RydWN0b3IoSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCksIHRoaXNPYmplY3QuZ2xvYmFsT2JqZWN0KCkpO1xuIik7CiAgICAgICAgIH0KICAgICB9IGVs
c2UgewogICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q2FjaGVk
QXR0cmlidXRlfSkgewpAQCAtNTE0MCwxMCArNTE0MiwxMCBAQCBzdWIgR2VuZXJhdGVBdHRyaWJ1
dGVTZXR0ZXJCb2R5RGVmaW5pdGlvCiAgICAgfSBlbHNpZiAoJGNvZGVHZW5lcmF0b3ItPklzQ29u
c3RydWN0b3JUeXBlKCRhdHRyaWJ1dGUtPnR5cGUpKSB7CiAgICAgICAgIG15ICRjb25zdHJ1Y3Rv
clR5cGUgPSAkYXR0cmlidXRlLT50eXBlLT5uYW1lOwogICAgICAgICAkY29uc3RydWN0b3JUeXBl
ID1+IHMvQ29uc3RydWN0b3IkLy87Ci0gICAgICAgICMgJGNvbnN0cnVjdG9yVHlwZSB+PSAvQ29u
c3RydWN0b3IkLyBpbmRpY2F0ZXMgdGhhdCBpdCBpcyBOYW1lZENvbnN0cnVjdG9yLgotICAgICAg
ICAjIFdlIGRvIG5vdCBnZW5lcmF0ZSB0aGUgaGVhZGVyIGZpbGUgZm9yIE5hbWVkQ29uc3RydWN0
b3Igb2YgY2xhc3MgWFhYWCwKLSAgICAgICAgIyBzaW5jZSB3ZSBnZW5lcmF0ZSB0aGUgTmFtZWRD
b25zdHJ1Y3RvciBkZWNsYXJhdGlvbiBpbnRvIHRoZSBoZWFkZXIgZmlsZSBvZiBjbGFzcyBYWFhY
LgotICAgICAgICBpZiAoJGNvbnN0cnVjdG9yVHlwZSBuZSAiYW55IiBhbmQgJGNvbnN0cnVjdG9y
VHlwZSAhfiAvTmFtZWQkLykgeworICAgICAgICAjICRjb25zdHJ1Y3RvclR5cGUgfj0gL0NvbnN0
cnVjdG9yJC8gaW5kaWNhdGVzIHRoYXQgaXQgaXMgTGVnYWN5RmFjdG9yeUZ1bmN0aW9uLgorICAg
ICAgICAjIFdlIGRvIG5vdCBnZW5lcmF0ZSB0aGUgaGVhZGVyIGZpbGUgZm9yIExlZ2FjeUZhY3Rv
cnlGdW5jdGlvbiBvZiBjbGFzcyBYWFhYLAorICAgICAgICAjIHNpbmNlIHdlIGdlbmVyYXRlIHRo
ZSBMZWdhY3lGYWN0b3J5RnVuY3Rpb24gZGVjbGFyYXRpb24gaW50byB0aGUgaGVhZGVyIGZpbGUg
b2YgY2xhc3MgWFhYWC4KKyAgICAgICAgaWYgKCRjb25zdHJ1Y3RvclR5cGUgbmUgImFueSIgYW5k
ICRjb25zdHJ1Y3RvclR5cGUgIX4gL0xlZ2FjeUZhY3RvcnlGdW5jdGlvbiQvKSB7CiAgICAgICAg
ICAgICBBZGRUb0ltcGxJbmNsdWRlcygiSlMiIC4gJGNvbnN0cnVjdG9yVHlwZSAuICIuaCIsICRj
b25kaXRpb25hbCk7CiAgICAgICAgIH0KICAgICAgICAgbXkgJGlkID0gJGF0dHJpYnV0ZS0+bmFt
ZTsKQEAgLTU4NzcsMjUgKzU4NzksMjAgQEAgc3ViIEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrCiAg
ICAgbXkgJHZpc2libGVJbnRlcmZhY2VOYW1lID0gJGNvZGVHZW5lcmF0b3ItPkdldFZpc2libGVJ
bnRlcmZhY2VOYW1lKCRpbnRlcmZhY2UpOwogICAgIG15ICRudW1Bcmd1bWVudHMgPSBAeyRvcGVy
YXRpb24tPmFyZ3VtZW50c307CiAgICAgbXkgJGNvbmRpdGlvbmFsID0gJG9wZXJhdGlvbi0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57Q29uZGl0aW9uYWx9OwotICAgIG15ICRpc0NvbnN0cnVjdG9yID0g
JG9wZXJhdGlvbi0+aXNDb25zdHJ1Y3RvcjsKIAogICAgIG15ICRmdW5jdGlvbk5hbWUgPSBHZXRG
dWxseVF1YWxpZmllZEltcGxlbWVudGF0aW9uQ2FsbE5hbWUoJGludGVyZmFjZSwgJG9wZXJhdGlv
biwgJGZ1bmN0aW9uSW1wbGVtZW50YXRpb25OYW1lLCAiaW1wbCIsICRjb25kaXRpb25hbCk7CiAg
ICAgCiAgICAgbXkgQGFyZ3VtZW50cyA9ICgpOwogICAgIEFkZEFkZGl0aW9uYWxBcmd1bWVudHNG
b3JJbXBsZW1lbnRhdGlvbkNhbGwoXEBhcmd1bWVudHMsICRpbnRlcmZhY2UsICRvcGVyYXRpb24s
ICJpbXBsIiwgIipsZXhpY2FsR2xvYmFsT2JqZWN0IiwgIipjYWxsRnJhbWUiLCAiKmNhc3RlZFRo
aXMiKTsKICAgICAKLSAgICBteSAkY2FsbFdpdGggPSAkb3BlcmF0aW9uLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPntDYWxsV2l0aH07CiAgICAgbXkgJHF1b3RlZEZ1bmN0aW9uTmFtZTsKLSAgICBpZiAo
ISRpc0NvbnN0cnVjdG9yKSB7CisgICAgaWYgKCEkb3BlcmF0aW9uLT5pc0NvbnN0cnVjdG9yKSB7
CiAgICAgICAgIG15ICRuYW1lID0gJG9wZXJhdGlvbi0+bmFtZTsKICAgICAgICAgJHF1b3RlZEZ1
bmN0aW9uTmFtZSA9ICJcIiRuYW1lXCIiOwotICAgICAgICBwdXNoKEBhcmd1bWVudHMsIEdlbmVy
YXRlQ2FsbFdpdGhVc2luZ1BvaW50ZXJzKCRjYWxsV2l0aCwgXEAkb3V0cHV0QXJyYXksICJKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSkiLCAiKmNhc3RlZFRoaXMiKSk7CisgICAgICAgIHB1
c2goQGFyZ3VtZW50cywgR2VuZXJhdGVDYWxsV2l0aFVzaW5nUG9pbnRlcnMoJG9wZXJhdGlvbi0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q2FsbFdpdGh9LCBcQCRvdXRwdXRBcnJheSwgIkpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKSIsICIqY2FzdGVkVGhpcyIpKTsKICAgICB9IGVsc2Ugewog
ICAgICAgICAkcXVvdGVkRnVuY3Rpb25OYW1lID0gIm51bGxwdHIiOwotICAgICAgICB1bmxlc3Mg
KCRjYWxsV2l0aCkgewotICAgICAgICAgICAgJGNhbGxXaXRoID0gJG9wZXJhdGlvbi0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57Q29uc3RydWN0b3JDYWxsV2l0aH07Ci0gICAgICAgIH0KLSAgICAgICAg
cHVzaChAYXJndW1lbnRzLCBHZW5lcmF0ZUNvbnN0cnVjdG9yQ2FsbFdpdGhVc2luZ1BvaW50ZXJz
KCRjYWxsV2l0aCwgXEAkb3V0cHV0QXJyYXksICR2aXNpYmxlSW50ZXJmYWNlTmFtZSwgIipjYXN0
ZWRUaGlzIikpOworICAgICAgICBwdXNoKEBhcmd1bWVudHMsIEdlbmVyYXRlQ29uc3RydWN0b3JD
YWxsV2l0aFVzaW5nUG9pbnRlcnMoJG9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q2Fs
bFdpdGh9LCBcQCRvdXRwdXRBcnJheSwgJHZpc2libGVJbnRlcmZhY2VOYW1lLCAiKmNhc3RlZFRo
aXMiKSk7CiAgICAgfQogCiAgICAgbXkgJGFyZ3VtZW50SW5kZXggPSAwOwpAQCAtNzM3Niw3ICs3
MzczLDcgQEAgc3ViIEdldENvbnN0cnVjdG9yVGVtcGxhdGVDbGFzc05hbWUKIHsKICAgICBteSAk
aW50ZXJmYWNlID0gc2hpZnQ7CiAgICAgcmV0dXJuICJKU0RPTUJ1aWx0aW5Db25zdHJ1Y3RvciIg
aWYgSGFzSlNCdWlsdGluQ29uc3RydWN0b3IoJGludGVyZmFjZSk7Ci0gICAgcmV0dXJuICJKU0RP
TUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZSIgaWYgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57TmFtZWRDb25zdHJ1Y3Rvcn07CisgICAgcmV0dXJuICJKU0RPTUNvbnN0cnVjdG9y
Tm90Q29uc3RydWN0YWJsZSIgaWYgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57TGVn
YWN5RmFjdG9yeUZ1bmN0aW9ufTsKICAgICByZXR1cm4gIkpTRE9NQ29uc3RydWN0b3JOb3RDb25z
dHJ1Y3RhYmxlIiB1bmxlc3MgSXNDb25zdHJ1Y3RhYmxlKCRpbnRlcmZhY2UpOwogICAgIHJldHVy
biAiSlNET01Db25zdHJ1Y3RvciI7CiB9CkBAIC03MzkwLDIyICs3Mzg3LDIyIEBAIHN1YiBHZW5l
cmF0ZUNvbnN0cnVjdG9yRGVjbGFyYXRpb24KICAgICBteSAkdGVtcGxhdGVDbGFzc05hbWUgPSBH
ZXRDb25zdHJ1Y3RvclRlbXBsYXRlQ2xhc3NOYW1lKCRpbnRlcmZhY2UpOwogCiAgICAgQWRkVG9J
bXBsSW5jbHVkZXMoIiR7dGVtcGxhdGVDbGFzc05hbWV9LmgiKTsKLSAgICBBZGRUb0ltcGxJbmNs
dWRlcygiSlNET01OYW1lZENvbnN0cnVjdG9yLmgiKSBpZiAkaW50ZXJmYWNlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPntOYW1lZENvbnN0cnVjdG9yfTsKKyAgICBBZGRUb0ltcGxJbmNsdWRlcygiSlNE
T01MZWdhY3lGYWN0b3J5RnVuY3Rpb24uaCIpIGlmICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmli
dXRlcy0+e0xlZ2FjeUZhY3RvcnlGdW5jdGlvbn07CiAKICAgICBwdXNoKEAkb3V0cHV0QXJyYXks
ICJ1c2luZyAkY29uc3RydWN0b3JDbGFzc05hbWUgPSAkdGVtcGxhdGVDbGFzc05hbWU8JGNsYXNz
TmFtZT47XG4iKTsKLSAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ1c2luZyBKUyR7aW50ZXJmYWNl
TmFtZX1OYW1lZENvbnN0cnVjdG9yID0gSlNET01OYW1lZENvbnN0cnVjdG9yPCRjbGFzc05hbWU+
O1xuIikgaWYgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57TmFtZWRDb25zdHJ1Y3Rv
cn07CisgICAgcHVzaChAJG91dHB1dEFycmF5LCAidXNpbmcgSlMke2ludGVyZmFjZU5hbWV9TGVn
YWN5RmFjdG9yeUZ1bmN0aW9uID0gSlNET01MZWdhY3lGYWN0b3J5RnVuY3Rpb248JGNsYXNzTmFt
ZT47XG4iKSBpZiAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntMZWdhY3lGYWN0b3J5
RnVuY3Rpb259OwogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIlxuIik7CiB9CiAKIHN1YiBHZW5l
cmF0ZUNvbnN0cnVjdG9yRGVmaW5pdGlvbnMKIHsKLSAgICBteSAoJG91dHB1dEFycmF5LCAkY2xh
c3NOYW1lLCAkcHJvdG9DbGFzc05hbWUsICR2aXNpYmxlSW50ZXJmYWNlTmFtZSwgJGludGVyZmFj
ZSwgJGdlbmVyYXRpbmdOYW1lZENvbnN0cnVjdG9yKSA9IEBfOworICAgIG15ICgkb3V0cHV0QXJy
YXksICRjbGFzc05hbWUsICRwcm90b0NsYXNzTmFtZSwgJHZpc2libGVJbnRlcmZhY2VOYW1lLCAk
aW50ZXJmYWNlLCAkZ2VuZXJhdGluZ0xlZ2FjeUZhY3RvcnlGdW5jdGlvbikgPSBAXzsKIAogICAg
IGlmIChJc0NvbnN0cnVjdGFibGUoJGludGVyZmFjZSkpIHsKICAgICAgICAgbXkgQGNvbnN0cnVj
dG9ycyA9IEB7JGludGVyZmFjZS0+Y29uc3RydWN0b3JzfTsKICAgICAgICAgaWYgKEBjb25zdHJ1
Y3RvcnMgPiAxKSB7CiAgICAgICAgICAgICBmb3JlYWNoIG15ICRjb25zdHJ1Y3RvciAoQGNvbnN0
cnVjdG9ycykgewotICAgICAgICAgICAgICAgIEdlbmVyYXRlQ29uc3RydWN0b3JEZWZpbml0aW9u
KCRvdXRwdXRBcnJheSwgJGNsYXNzTmFtZSwgJHByb3RvQ2xhc3NOYW1lLCAkdmlzaWJsZUludGVy
ZmFjZU5hbWUsICRpbnRlcmZhY2UsICRnZW5lcmF0aW5nTmFtZWRDb25zdHJ1Y3RvciwgJGNvbnN0
cnVjdG9yKTsKKyAgICAgICAgICAgICAgICBHZW5lcmF0ZUNvbnN0cnVjdG9yRGVmaW5pdGlvbigk
b3V0cHV0QXJyYXksICRjbGFzc05hbWUsICRwcm90b0NsYXNzTmFtZSwgJHZpc2libGVJbnRlcmZh
Y2VOYW1lLCAkaW50ZXJmYWNlLCAkZ2VuZXJhdGluZ0xlZ2FjeUZhY3RvcnlGdW5jdGlvbiwgJGNv
bnN0cnVjdG9yKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgbXkgJG92ZXJsb2FkRnVu
Y3Rpb25QcmVmaXggPSAiY29uc3RydWN0JHtjbGFzc05hbWV9IjsKQEAgLTc0MjAsMjMgKzc0MTcs
MjMgQEAgc3ViIEdlbmVyYXRlQ29uc3RydWN0b3JEZWZpbml0aW9ucwogCiAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7CiAgICAgICAgIH0gZWxzaWYgKEBjb25zdHJ1Y3Rv
cnMgPT0gMSkgewotICAgICAgICAgICAgR2VuZXJhdGVDb25zdHJ1Y3RvckRlZmluaXRpb24oJG91
dHB1dEFycmF5LCAkY2xhc3NOYW1lLCAkcHJvdG9DbGFzc05hbWUsICR2aXNpYmxlSW50ZXJmYWNl
TmFtZSwgJGludGVyZmFjZSwgJGdlbmVyYXRpbmdOYW1lZENvbnN0cnVjdG9yLCAkY29uc3RydWN0
b3JzWzBdKTsKKyAgICAgICAgICAgIEdlbmVyYXRlQ29uc3RydWN0b3JEZWZpbml0aW9uKCRvdXRw
dXRBcnJheSwgJGNsYXNzTmFtZSwgJHByb3RvQ2xhc3NOYW1lLCAkdmlzaWJsZUludGVyZmFjZU5h
bWUsICRpbnRlcmZhY2UsICRnZW5lcmF0aW5nTGVnYWN5RmFjdG9yeUZ1bmN0aW9uLCAkY29uc3Ry
dWN0b3JzWzBdKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIEdlbmVyYXRlQ29uc3Ry
dWN0b3JEZWZpbml0aW9uKCRvdXRwdXRBcnJheSwgJGNsYXNzTmFtZSwgJHByb3RvQ2xhc3NOYW1l
LCAkdmlzaWJsZUludGVyZmFjZU5hbWUsICRpbnRlcmZhY2UsICRnZW5lcmF0aW5nTmFtZWRDb25z
dHJ1Y3Rvcik7CisgICAgICAgICAgICBHZW5lcmF0ZUNvbnN0cnVjdG9yRGVmaW5pdGlvbigkb3V0
cHV0QXJyYXksICRjbGFzc05hbWUsICRwcm90b0NsYXNzTmFtZSwgJHZpc2libGVJbnRlcmZhY2VO
YW1lLCAkaW50ZXJmYWNlLCAkZ2VuZXJhdGluZ0xlZ2FjeUZhY3RvcnlGdW5jdGlvbik7CiAgICAg
ICAgIH0KICAgICB9CiAKLSAgICBHZW5lcmF0ZUNvbnN0cnVjdG9ySGVscGVyTWV0aG9kcygkb3V0
cHV0QXJyYXksICRjbGFzc05hbWUsICRwcm90b0NsYXNzTmFtZSwgJHZpc2libGVJbnRlcmZhY2VO
YW1lLCAkaW50ZXJmYWNlLCAkZ2VuZXJhdGluZ05hbWVkQ29uc3RydWN0b3IpOworICAgIEdlbmVy
YXRlQ29uc3RydWN0b3JIZWxwZXJNZXRob2RzKCRvdXRwdXRBcnJheSwgJGNsYXNzTmFtZSwgJHBy
b3RvQ2xhc3NOYW1lLCAkdmlzaWJsZUludGVyZmFjZU5hbWUsICRpbnRlcmZhY2UsICRnZW5lcmF0
aW5nTGVnYWN5RmFjdG9yeUZ1bmN0aW9uKTsKIH0KIAogc3ViIEdlbmVyYXRlQ29uc3RydWN0b3JE
ZWZpbml0aW9uCiB7Ci0gICAgbXkgKCRvdXRwdXRBcnJheSwgJGNsYXNzTmFtZSwgJHByb3RvQ2xh
c3NOYW1lLCAkdmlzaWJsZUludGVyZmFjZU5hbWUsICRpbnRlcmZhY2UsICRnZW5lcmF0aW5nTmFt
ZWRDb25zdHJ1Y3RvciwgJG9wZXJhdGlvbikgPSBAXzsKKyAgICBteSAoJG91dHB1dEFycmF5LCAk
Y2xhc3NOYW1lLCAkcHJvdG9DbGFzc05hbWUsICR2aXNpYmxlSW50ZXJmYWNlTmFtZSwgJGludGVy
ZmFjZSwgJGdlbmVyYXRpbmdMZWdhY3lGYWN0b3J5RnVuY3Rpb24sICRvcGVyYXRpb24pID0gQF87
CiAKICAgICByZXR1cm4gaWYgSGFzSlNCdWlsdGluQ29uc3RydWN0b3IoJGludGVyZmFjZSk7CiAK
ICAgICBteSAkaW50ZXJmYWNlTmFtZSA9ICRpbnRlcmZhY2UtPnR5cGUtPm5hbWU7Ci0gICAgbXkg
JGNvbnN0cnVjdG9yQ2xhc3NOYW1lID0gJGdlbmVyYXRpbmdOYW1lZENvbnN0cnVjdG9yID8gIiR7
Y2xhc3NOYW1lfU5hbWVkQ29uc3RydWN0b3IiIDogIiR7Y2xhc3NOYW1lfUNvbnN0cnVjdG9yIjsK
KyAgICBteSAkY29uc3RydWN0b3JDbGFzc05hbWUgPSAkZ2VuZXJhdGluZ0xlZ2FjeUZhY3RvcnlG
dW5jdGlvbiA/ICIke2NsYXNzTmFtZX1MZWdhY3lGYWN0b3J5RnVuY3Rpb24iIDogIiR7Y2xhc3NO
YW1lfUNvbnN0cnVjdG9yIjsKIAogICAgIGlmIChJc0NvbnN0cnVjdGFibGUoJGludGVyZmFjZSkp
IHsKICAgICAgICAgaWYgKEhhc0N1c3RvbUNvbnN0cnVjdG9yKCRpbnRlcmZhY2UpKSB7CkBAIC03
NDQ1LDcgKzc0NDIsNyBAQCBzdWIgR2VuZXJhdGVDb25zdHJ1Y3RvckRlZmluaXRpb24KICAgICAg
ICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBBU1NFUlQoY2FsbEZyYW1lKTtcbiIpOwog
ICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHJldHVybiBjb25zdHJ1Y3Qke2Ns
YXNzTmFtZX0obGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSk7XG4iKTsKICAgICAgICAg
ICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIn1cblxuIik7Ci0gICAgICAgICB9IGVsc2lmICghSGFz
Q3VzdG9tQ29uc3RydWN0b3IoJGludGVyZmFjZSkgJiYgKCEkaW50ZXJmYWNlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPntOYW1lZENvbnN0cnVjdG9yfSB8fCAkZ2VuZXJhdGluZ05hbWVkQ29uc3RydWN0
b3IpKSB7CisgICAgICAgICB9IGVsc2lmICghSGFzQ3VzdG9tQ29uc3RydWN0b3IoJGludGVyZmFj
ZSkgJiYgKCEkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntMZWdhY3lGYWN0b3J5RnVu
Y3Rpb259IHx8ICRnZW5lcmF0aW5nTGVnYWN5RmFjdG9yeUZ1bmN0aW9uKSkgewogICAgICAgICAg
ICAgbXkgJGlzT3ZlcmxvYWRlZCA9ICRvcGVyYXRpb24tPntvdmVybG9hZHN9ICYmIEB7JG9wZXJh
dGlvbi0+e292ZXJsb2Fkc319ID4gMTsKICAgICAgICAgICAgIGlmICgkaXNPdmVybG9hZGVkKSB7
CiAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAic3RhdGljIGlubGluZSBFbmNv
ZGVkSlNWYWx1ZSBjb25zdHJ1Y3Qke2NsYXNzTmFtZX0kb3BlcmF0aW9uLT57b3ZlcmxvYWRJbmRl
eH0oSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKVxuIik7CkBAIC03NDY5LDEyICs3NDY2LDExIEBAIHN1YiBHZW5lcmF0ZUNvbnN0cnVjdG9y
RGVmaW5pdGlvbgogCiAgICAgICAgICAgICBHZW5lcmF0ZUFyZ3VtZW50c0NvdW50Q2hlY2soJG91
dHB1dEFycmF5LCAkb3BlcmF0aW9uLCAkaW50ZXJmYWNlLCAiICAgICIpOwogCi0gICAgICAgICAg
ICBteSAkZnVuY3Rpb25JbXBsZW1lbnRhdGlvbk5hbWUgPSAkZ2VuZXJhdGluZ05hbWVkQ29uc3Ry
dWN0b3IgPyAiY3JlYXRlRm9ySlNDb25zdHJ1Y3RvciIgOiAiY3JlYXRlIjsKKyAgICAgICAgICAg
IG15ICRmdW5jdGlvbkltcGxlbWVudGF0aW9uTmFtZSA9ICRnZW5lcmF0aW5nTGVnYWN5RmFjdG9y
eUZ1bmN0aW9uID8gImNyZWF0ZUZvckpTQ29uc3RydWN0b3IiIDogImNyZWF0ZSI7CiAgICAgICAg
ICAgICBteSAkZnVuY3Rpb25TdHJpbmcgPSBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjaygkb3V0cHV0
QXJyYXksICRvcGVyYXRpb24sICRpbnRlcmZhY2UsICRmdW5jdGlvbkltcGxlbWVudGF0aW9uTmFt
ZSwgIiAgICAiKTsKIAogICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGF1dG8g
b2JqZWN0ID0gJHtmdW5jdGlvblN0cmluZ307XG4iKTsKLSAgICAgICAgICAgIHB1c2goQCRvdXRw
dXRBcnJheSwgIiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1Zh
bHVlKCkpO1xuIikgaWYgJGNvZGVHZW5lcmF0b3ItPkV4dGVuZGVkQXR0cmlidXRlQ29udGFpbnMo
JGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q2FsbFdpdGh9LCAiRXhlY1N0YXRlIik7
Ci0gICAgICAgICAgICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q29uc3Ry
dWN0b3JNYXlUaHJvd0V4Y2VwdGlvbn0gfHwgJG9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57TWF5VGhyb3dFeGNlcHRpb259KSB7CisgICAgICAgICAgICBpZiAoJG9wZXJhdGlvbi0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57TWF5VGhyb3dFeGNlcHRpb259KSB7CiAgICAgICAgICAgICAgICAg
cHVzaChAJG91dHB1dEFycmF5LCAiICAgIHN0YXRpY19hc3NlcnQoSXNFeGNlcHRpb25PcjxkZWNs
dHlwZShvYmplY3QpPjo6dmFsdWUpO1xuIik7CiAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1
dEFycmF5LCAiICAgIHN0YXRpY19hc3NlcnQoZGVjbHR5cGUob2JqZWN0KTo6UmV0dXJuVHlwZTo6
aXNSZWYpO1xuIik7CiAgICAgICAgICAgICB9IGVsc2UgewpAQCAtNzQ4OSwxMiArNzQ4NSwxMiBA
QCBzdWIgR2VuZXJhdGVDb25zdHJ1Y3RvckRlZmluaXRpb24KICAgICAgICAgICAgIG15IEBjb25z
dHJ1Y3Rpb25Db252ZXJzaW9uQXJndW1lbnRzID0gKCk7CiAgICAgICAgICAgICBwdXNoKEBjb25z
dHJ1Y3Rpb25Db252ZXJzaW9uQXJndW1lbnRzLCAiKmxleGljYWxHbG9iYWxPYmplY3QiKTsKICAg
ICAgICAgICAgIHB1c2goQGNvbnN0cnVjdGlvbkNvbnZlcnNpb25Bcmd1bWVudHMsICIqY2FzdGVk
VGhpcy0+Z2xvYmFsT2JqZWN0KCkiKTsKLSAgICAgICAgICAgIHB1c2goQGNvbnN0cnVjdGlvbkNv
bnZlcnNpb25Bcmd1bWVudHMsICJ0aHJvd1Njb3BlIikgaWYgJGludGVyZmFjZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57Q29uc3RydWN0b3JNYXlUaHJvd0V4Y2VwdGlvbn0gfHwgJG9wZXJhdGlvbi0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57TWF5VGhyb3dFeGNlcHRpb259OworICAgICAgICAgICAgcHVz
aChAY29uc3RydWN0aW9uQ29udmVyc2lvbkFyZ3VtZW50cywgInRocm93U2NvcGUiKSBpZiAkb3Bl
cmF0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntNYXlUaHJvd0V4Y2VwdGlvbn07CiAgICAgICAg
ICAgICBwdXNoKEBjb25zdHJ1Y3Rpb25Db252ZXJzaW9uQXJndW1lbnRzLCAiV1RGTW92ZShvYmpl
Y3QpIik7CiAKICAgICAgICAgICAgICMgRklYTUU6IHRvSlNOZXdseUNyZWF0ZWQgc2hvdWxkIHJl
dHVybiBKU09iamVjdCogaW5zdGVhZCBvZiBKU1ZhbHVlLgogICAgICAgICAgICAgcHVzaChAJG91
dHB1dEFycmF5LCAiICAgIGF1dG8ganNWYWx1ZSA9IHRvSlNOZXdseUNyZWF0ZWQ8JHtJRExUeXBl
fT4oIiAuIGpvaW4oIiwgIiwgQGNvbnN0cnVjdGlvbkNvbnZlcnNpb25Bcmd1bWVudHMpIC4gIik7
XG4iKTsKLSAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIHsgfSk7XG4iKSBpZiAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPntDb25zdHJ1Y3Rvck1heVRocm93RXhjZXB0aW9ufSB8fCAkb3BlcmF0aW9uLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPntNYXlUaHJvd0V4Y2VwdGlvbn07CisgICAgICAgICAgICBwdXNoKEAk
b3V0cHV0QXJyYXksICIgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pO1xu
IikgaWYgJG9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57TWF5VGhyb3dFeGNlcHRpb259
OwogICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHNldFN1YmNsYXNzU3RydWN0
dXJlSWZOZWVkZWQ8JHtpbXBsVHlwZX0+KGxleGljYWxHbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwg
YXNPYmplY3QoanNWYWx1ZSkpO1xuIik7CiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXks
ICIgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pO1xuIik7CiAgICAgICAg
ICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Zh
bHVlKTtcbiIpOwpAQCAtNzU2NSw5ICs3NTYxLDkgQEAgc3ViIEdldFJ1bnRpbWVFbmFibGVkU3Rh
dGljUHJvcGVydGllcwogCiBzdWIgR2VuZXJhdGVDb25zdHJ1Y3RvckhlbHBlck1ldGhvZHMKIHsK
LSAgICBteSAoJG91dHB1dEFycmF5LCAkY2xhc3NOYW1lLCAkcHJvdG9DbGFzc05hbWUsICR2aXNp
YmxlSW50ZXJmYWNlTmFtZSwgJGludGVyZmFjZSwgJGdlbmVyYXRpbmdOYW1lZENvbnN0cnVjdG9y
KSA9IEBfOworICAgIG15ICgkb3V0cHV0QXJyYXksICRjbGFzc05hbWUsICRwcm90b0NsYXNzTmFt
ZSwgJHZpc2libGVJbnRlcmZhY2VOYW1lLCAkaW50ZXJmYWNlLCAkZ2VuZXJhdGluZ0xlZ2FjeUZh
Y3RvcnlGdW5jdGlvbikgPSBAXzsKIAotICAgIG15ICRjb25zdHJ1Y3RvckNsYXNzTmFtZSA9ICRn
ZW5lcmF0aW5nTmFtZWRDb25zdHJ1Y3RvciA/ICIke2NsYXNzTmFtZX1OYW1lZENvbnN0cnVjdG9y
IiA6ICIke2NsYXNzTmFtZX1Db25zdHJ1Y3RvciI7CisgICAgbXkgJGNvbnN0cnVjdG9yQ2xhc3NO
YW1lID0gJGdlbmVyYXRpbmdMZWdhY3lGYWN0b3J5RnVuY3Rpb24gPyAiJHtjbGFzc05hbWV9TGVn
YWN5RmFjdG9yeUZ1bmN0aW9uIiA6ICIke2NsYXNzTmFtZX1Db25zdHJ1Y3RvciI7CiAgICAgbXkg
JGxlYXN0Q29uc3RydWN0b3JMZW5ndGggPSAwOwogICAgIGlmIChAeyRpbnRlcmZhY2UtPmNvbnN0
cnVjdG9yc30gPiAwKSB7CiAgICAgICAgICRsZWFzdENvbnN0cnVjdG9yTGVuZ3RoID0gMjU1OwpA
QCAtNzU4Niw3ICs3NTgyLDcgQEAgc3ViIEdlbmVyYXRlQ29uc3RydWN0b3JIZWxwZXJNZXRob2Rz
CiAKICAgICBhc3NlcnQoIkFuIGludGVyZmFjZSBjYW5ub3QgaW5oZXJpdCBmcm9tIGFub3RoZXIg
aW50ZXJmYWNlIHRoYXQgaXMgbWFya2VkIGFzIFtOb0ludGVyZmFjZU9iamVjdF0iKSBpZiAkaW50
ZXJmYWNlLT5wYXJlbnRUeXBlICYmICRjb2RlR2VuZXJhdG9yLT5HZXRJbnRlcmZhY2VFeHRlbmRl
ZEF0dHJpYnV0ZXNGcm9tTmFtZSgkaW50ZXJmYWNlLT5wYXJlbnRUeXBlLT5uYW1lKS0+e05vSW50
ZXJmYWNlT2JqZWN0fTsKIAotICAgIGlmICghJGdlbmVyYXRpbmdOYW1lZENvbnN0cnVjdG9yIGFu
ZCAkaW50ZXJmYWNlLT5wYXJlbnRUeXBlKSB7CisgICAgaWYgKCEkZ2VuZXJhdGluZ0xlZ2FjeUZh
Y3RvcnlGdW5jdGlvbiBhbmQgJGludGVyZmFjZS0+cGFyZW50VHlwZSkgewogICAgICAgICBteSAk
cGFyZW50Q2xhc3NOYW1lID0gIkpTIiAuICRpbnRlcmZhY2UtPnBhcmVudFR5cGUtPm5hbWU7CiAg
ICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICByZXR1cm4gJHtwYXJlbnRDbGFzc05hbWV9
OjpnZXRDb25zdHJ1Y3Rvcih2bSwgJmdsb2JhbE9iamVjdCk7XG4iKTsKICAgICB9IGVsc2UgewpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLmpzb24K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1
dGVzLmpzb24JKHJldmlzaW9uIDI2MzE3NikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvSURMQXR0cmlidXRlcy5qc29uCSh3b3JraW5nIGNvcHkpCkBAIC03OCwxNyArNzgsMTAg
QEAKICAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJp
ZGwvI0NvbnN0cnVjdG9yIgogICAgICAgICAgICAgfQogICAgICAgICB9LAotICAgICAgICAiQ29u
c3RydWN0b3JDYWxsV2l0aCI6IHsKLSAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImlu
dGVyZmFjZSJdLAotICAgICAgICAgICAgInZhbHVlcyI6IFsiRG9jdW1lbnQiLCAiRXhlY1N0YXRl
IiwgIlJ1bnRpbWVGbGFncyIsICJTY3JpcHRFeGVjdXRpb25Db250ZXh0Il0KLSAgICAgICAgfSwK
ICAgICAgICAgIkNvbnN0cnVjdG9yRW5hYmxlZEJ5U2V0dGluZyI6IHsKICAgICAgICAgICAgICJj
b250ZXh0c0FsbG93ZWQiOiBbImF0dHJpYnV0ZSIsICJpbnRlcmZhY2UiXSwKICAgICAgICAgICAg
ICJ2YWx1ZXMiOiBbIioiXQogICAgICAgICB9LAotICAgICAgICAiQ29uc3RydWN0b3JNYXlUaHJv
d0V4Y2VwdGlvbiI6IHsKLSAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImludGVyZmFj
ZSJdCi0gICAgICAgIH0sCiAgICAgICAgICJDb250ZXh0QWxsb3dzTWVkaWFEZXZpY2VzIjogewog
ICAgICAgICAgICAgImNvbnRleHRzQWxsb3dlZCI6IFsiYXR0cmlidXRlIl0KICAgICAgICAgfSwK
QEAgLTI5MSw2ICsyODQsMTMgQEAKICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAidW5zdXBw
b3J0ZWQiOiB0cnVlCiAgICAgICAgIH0sCisgICAgICAgICJMZWdhY3lGYWN0b3J5RnVuY3Rpb24i
OiB7CisgICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJpbnRlcmZhY2UiXSwKKyAgICAg
ICAgICAgICJ2YWx1ZXMiOiBbIioiXSwKKyAgICAgICAgICAgICJzdGFuZGFyZCI6IHsKKyAgICAg
ICAgICAgICAgICAidXJsIjogImh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI0xlZ2Fj
eUZhY3RvcnlGdW5jdGlvbiIKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwKICAgICAgICAgIkxl
Z2FjeVVuZW51bWVyYWJsZU5hbWVkUHJvcGVydGllcyI6IHsKICAgICAgICAgICAgICJjb250ZXh0
c0FsbG93ZWQiOiBbImludGVyZmFjZSJdLAogICAgICAgICAgICAgInN0YW5kYXJkIjogewpAQCAt
MzIzLDEzICszMjMsNiBAQAogICAgICAgICAiTWF5VGhyb3dFeGNlcHRpb24iOiB7CiAgICAgICAg
ICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJhdHRyaWJ1dGUiLCAib3BlcmF0aW9uIl0KICAgICAg
ICAgfSwKLSAgICAgICAgIk5hbWVkQ29uc3RydWN0b3IiOiB7Ci0gICAgICAgICAgICAiY29udGV4
dHNBbGxvd2VkIjogWyJpbnRlcmZhY2UiXSwKLSAgICAgICAgICAgICJ2YWx1ZXMiOiBbIioiXSwK
LSAgICAgICAgICAgICJzdGFuZGFyZCI6IHsKLSAgICAgICAgICAgICAgICAidXJsIjogImh0dHBz
Oi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI05hbWVkQ29uc3RydWN0b3IiCi0gICAgICAgICAg
ICB9Ci0gICAgICAgIH0sCiAgICAgICAgICJOZXdJbXB1cmVQcm9wZXJ0eUZpcmVzV2F0Y2hwb2lu
dHMiOiB7CiAgICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJpbnRlcmZhY2UiXQogICAg
ICAgICB9LApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIu
cG0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJz
ZXIucG0JKHJldmlzaW9uIDI2MzE3NikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvSURMUGFyc2VyLnBtCSh3b3JraW5nIGNvcHkpCkBAIC04OSw2ICs4OSw3IEBAIHN0cnVjdCgg
SURMT3BlcmF0aW9uID0+IHsKICAgICB0eXBlID0+ICdJRExUeXBlJywgIyBSZXR1cm4gdHlwZQog
ICAgIGFyZ3VtZW50cyA9PiAnQCcsICMgTGlzdCBvZiAnSURMQXJndW1lbnQnCiAgICAgaXNDb25z
dHJ1Y3RvciA9PiAnJCcsCisgICAgaXNMZWdhY3lGYWN0b3J5RnVuY3Rpb24gPT4gJyQnLAogICAg
IGlzU3RhdGljID0+ICckJywKICAgICBpc0l0ZXJhYmxlID0+ICckJywKICAgICBpc1NlcmlhbGl6
ZXIgPT4gJyQnLApAQCAtMjQ1Nyw2ICsyNDU4LDExIEBAIHN1YiBwYXJzZUV4dGVuZGVkQXR0cmli
dXRlUmVzdDIKICAgICAgICAgJHNlbGYtPmFzc2VydFRva2VuVmFsdWUoJHNlbGYtPmdldFRva2Vu
KCksICIpIiwgX19MSU5FX18pOwogICAgICAgICByZXR1cm4gXEBhcmd1bWVudHM7CiAgICAgfQor
ICAgIGlmICgkbmV4dC0+dmFsdWUoKSBlcSAiWyIpIHsKKyAgICAgICAgbXkgJGV4dGVuZGVkQXR0
cmlidXRlTGlzdCA9ICRzZWxmLT5wYXJzZUV4dGVuZGVkQXR0cmlidXRlTGlzdCgpOworICAgICAg
ICBteSAkbmFtZSA9ICRzZWxmLT5wYXJzZU5hbWUoKTsKKyAgICAgICAgcmV0dXJuICRzZWxmLT5w
YXJzZUV4dGVuZGVkQXR0cmlidXRlTmFtZWRBcmdMaXN0KCRuYW1lLCAkZXh0ZW5kZWRBdHRyaWJ1
dGVMaXN0KTsKKyAgICB9CiAgICAgaWYgKCRuZXh0LT50eXBlKCkgPT0gSWRlbnRpZmllclRva2Vu
KSB7CiAgICAgICAgIG15ICRuYW1lID0gJHNlbGYtPnBhcnNlTmFtZSgpOwogICAgICAgICByZXR1
cm4gJHNlbGYtPnBhcnNlRXh0ZW5kZWRBdHRyaWJ1dGVSZXN0MygkbmFtZSk7CkBAIC0yNDg1LDEx
ICsyNDkxLDcgQEAgc3ViIHBhcnNlRXh0ZW5kZWRBdHRyaWJ1dGVSZXN0MwogICAgICAgICByZXR1
cm4gJG5hbWUgLiAifCIgLiAkcmlnaHRWYWx1ZTsKICAgICB9CiAgICAgaWYgKCRuZXh0LT52YWx1
ZSgpIGVxICIoIikgewotICAgICAgICBteSAkYXR0ciA9IHt9OwotICAgICAgICAkc2VsZi0+YXNz
ZXJ0VG9rZW5WYWx1ZSgkc2VsZi0+Z2V0VG9rZW4oKSwgIigiLCBfX0xJTkVfXyk7Ci0gICAgICAg
ICRhdHRyLT57JG5hbWV9ID0gJHNlbGYtPnBhcnNlQXJndW1lbnRMaXN0KCk7Ci0gICAgICAgICRz
ZWxmLT5hc3NlcnRUb2tlblZhbHVlKCRzZWxmLT5nZXRUb2tlbigpLCAiKSIsIF9fTElORV9fKTsK
LSAgICAgICAgcmV0dXJuICRhdHRyOworICAgICAgICByZXR1cm4gJHNlbGYtPnBhcnNlRXh0ZW5k
ZWRBdHRyaWJ1dGVOYW1lZEFyZ0xpc3QoJG5hbWUpOwogICAgIH0KICAgICBpZiAoJG5leHQtPnR5
cGUoKSA9PSBJZGVudGlmaWVyVG9rZW4gfHwgJG5leHQtPnZhbHVlKCkgPX4gLyRuZXh0RXh0ZW5k
ZWRBdHRyaWJ1dGVSZXN0M18xLykgewogICAgICAgICAkc2VsZi0+cGFyc2VOYW1lTm9Db21tYSgp
OwpAQCAtMjQ5OCw2ICsyNTAwLDMyIEBAIHN1YiBwYXJzZUV4dGVuZGVkQXR0cmlidXRlUmVzdDMK
ICAgICAkc2VsZi0+YXNzZXJ0VW5leHBlY3RlZFRva2VuKCRuZXh0LT52YWx1ZSgpKTsKIH0KIAor
c3ViIHBhcnNlRXh0ZW5kZWRBdHRyaWJ1dGVOYW1lZEFyZ0xpc3QKK3sKKyAgICBteSAkc2VsZiA9
IHNoaWZ0OworICAgIG15ICRuYW1lID0gc2hpZnQ7CisgICAgbXkgJGV4dGVuZGVkQXR0cmlidXRl
TGlzdCA9IHNoaWZ0OworCisgICAgbXkgJG5leHQgPSAkc2VsZi0+bmV4dFRva2VuKCk7CisgICAg
aWYgKCRuZXh0LT52YWx1ZSgpIGVxICIoIikgeworICAgICAgICBteSAkb3BlcmF0aW9uID0gSURM
T3BlcmF0aW9uLT5uZXcoKTsKKworICAgICAgICAkb3BlcmF0aW9uLT5uYW1lKGlkZW50aWZpZXJS
ZW1vdmVOdWxsYWJsZVByZWZpeCgkbmFtZSkpOworCisgICAgICAgICRzZWxmLT5hc3NlcnRUb2tl
blZhbHVlKCRzZWxmLT5nZXRUb2tlbigpLCAiKCIsICRuYW1lLCBfX0xJTkVfXyk7CisKKyAgICAg
ICAgcHVzaChAeyRvcGVyYXRpb24tPmFyZ3VtZW50c30sIEB7JHNlbGYtPnBhcnNlQXJndW1lbnRM
aXN0KCl9KTsKKworICAgICAgICAkc2VsZi0+YXNzZXJ0VG9rZW5WYWx1ZSgkc2VsZi0+Z2V0VG9r
ZW4oKSwgIikiLCBfX0xJTkVfXyk7CisKKyAgICAgICAgJHNlbGYtPmFzc2VydEV4dGVuZGVkQXR0
cmlidXRlc1ZhbGlkRm9yQ29udGV4dCgkZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0LCAib3BlcmF0aW9u
Iik7CisgICAgICAgICRvcGVyYXRpb24tPmV4dGVuZGVkQXR0cmlidXRlcygkZXh0ZW5kZWRBdHRy
aWJ1dGVMaXN0KTsKKworICAgICAgICByZXR1cm4gJG9wZXJhdGlvbjsKKyAgICB9CisgICAgJHNl
bGYtPmFzc2VydFVuZXhwZWN0ZWRUb2tlbigkbmV4dC0+dmFsdWUoKSk7Cit9CisKIHN1YiBwYXJz
ZUFyZ3VtZW50TmFtZUtleXdvcmQKIHsKICAgICBteSAkc2VsZiA9IHNoaWZ0OwpAQCAtMzA1Nywx
NyArMzA4NSwxMSBAQCBzdWIgYXBwbHlFeHRlbmRlZEF0dHJpYnV0ZUxpc3QKICAgICBteSAkaW50
ZXJmYWNlID0gc2hpZnQ7CiAgICAgbXkgJGV4dGVuZGVkQXR0cmlidXRlTGlzdCA9IHNoaWZ0Owog
Ci0gICAgaWYgKGRlZmluZWQgJGV4dGVuZGVkQXR0cmlidXRlTGlzdC0+eyJOYW1lZENvbnN0cnVj
dG9yIn0pIHsKLSAgICAgICAgbXkgJG5ld0RhdGFOb2RlID0gSURMT3BlcmF0aW9uLT5uZXcoKTsK
LSAgICAgICAgJG5ld0RhdGFOb2RlLT5pc0NvbnN0cnVjdG9yKDEpOwotICAgICAgICAkbmV3RGF0
YU5vZGUtPm5hbWUoIk5hbWVkQ29uc3RydWN0b3IiKTsKLSAgICAgICAgJG5ld0RhdGFOb2RlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMoJGV4dGVuZGVkQXR0cmlidXRlTGlzdCk7Ci0gICAgICAgIG15ICVh
dHRyaWJ1dGVzID0gJXskZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0LT57Ik5hbWVkQ29uc3RydWN0b3Ii
fX07Ci0gICAgICAgIG15IEBhdHRyaWJ1dGVLZXlzID0ga2V5cyAoJWF0dHJpYnV0ZXMpOwotICAg
ICAgICBteSAkY29uc3RydWN0b3JOYW1lID0gJGF0dHJpYnV0ZUtleXNbMF07Ci0gICAgICAgIHB1
c2goQHskbmV3RGF0YU5vZGUtPmFyZ3VtZW50c30sIEB7JGF0dHJpYnV0ZXN7JGNvbnN0cnVjdG9y
TmFtZX19KTsKLSAgICAgICAgJGV4dGVuZGVkQXR0cmlidXRlTGlzdC0+eyJOYW1lZENvbnN0cnVj
dG9yIn0gPSAkY29uc3RydWN0b3JOYW1lOwotICAgICAgICBwdXNoKEB7JGludGVyZmFjZS0+Y29u
c3RydWN0b3JzfSwgJG5ld0RhdGFOb2RlKTsKKyAgICBpZiAoZGVmaW5lZCAkZXh0ZW5kZWRBdHRy
aWJ1dGVMaXN0LT57IkxlZ2FjeUZhY3RvcnlGdW5jdGlvbiJ9KSB7CisgICAgICAgIG15ICRsZWdh
Y3lGYWN0b3J5RnVuY3Rpb25PcGVyYXRpb24gPSAkZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0LT57Ikxl
Z2FjeUZhY3RvcnlGdW5jdGlvbiJ9OworICAgICAgICAkbGVnYWN5RmFjdG9yeUZ1bmN0aW9uT3Bl
cmF0aW9uLT5pc0NvbnN0cnVjdG9yKDEpOworICAgICAgICAkbGVnYWN5RmFjdG9yeUZ1bmN0aW9u
T3BlcmF0aW9uLT5pc0xlZ2FjeUZhY3RvcnlGdW5jdGlvbigxKTsKKyAgICAgICAgcHVzaChAeyRp
bnRlcmZhY2UtPmNvbnN0cnVjdG9yc30sICRsZWdhY3lGYWN0b3J5RnVuY3Rpb25PcGVyYXRpb24p
OwogICAgIH0KICAgICAKICAgICAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMoJGV4dGVu
ZGVkQXR0cmlidXRlTGlzdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3ByZXByb2Nlc3MtaWRscy5wbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3ByZXByb2Nlc3MtaWRscy5wbAkocmV2aXNpb24gMjYzMTc2KQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9wcmVwcm9jZXNzLWlkbHMucGwJKHdvcmtpbmcgY29w
eSkKQEAgLTMxNCwxNCArMzE0LDE1IEBAIHN1YiBHZW5lcmF0ZUNvbnN0cnVjdG9yQXR0cmlidXRl
cwogICAgICRpbnRlcmZhY2VOYW1lID0gJGV4dGVuZGVkQXR0cmlidXRlcy0+eyJJbnRlcmZhY2VO
YW1lIn0gaWYgJGV4dGVuZGVkQXR0cmlidXRlcy0+eyJJbnRlcmZhY2VOYW1lIn07CiAgICAgJGNv
ZGUgLj0gImF0dHJpYnV0ZSAiIC4gJG9yaWdpbmFsSW50ZXJmYWNlTmFtZSAuICJDb25zdHJ1Y3Rv
ciAkaW50ZXJmYWNlTmFtZTtcbiI7CiAKLSAgICAjIEluIGFkZGl0aW9uIHRvIHRoZSByZWd1bGFy
IHByb3BlcnR5LCBmb3IgZXZlcnkgW05hbWVkQ29uc3RydWN0b3JdIGV4dGVuZGVkIGF0dHJpYnV0
ZSBvbiBhbiBpbnRlcmZhY2UsCisgICAgIyBJbiBhZGRpdGlvbiB0byB0aGUgcmVndWxhciBwcm9w
ZXJ0eSwgZm9yIGV2ZXJ5IFtMZWdhY3lGYWN0b3J5RnVuY3Rpb25dIGV4dGVuZGVkIGF0dHJpYnV0
ZSBvbiBhbiBpbnRlcmZhY2UsCiAgICAgIyBhIGNvcnJlc3BvbmRpbmcgcHJvcGVydHkgTVVTVCBl
eGlzdCBvbiB0aGUgRUNNQVNjcmlwdCBnbG9iYWwgb2JqZWN0LgotICAgIGlmICgkZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57Ik5hbWVkQ29uc3RydWN0b3IifSkgewotICAgICAgICBteSAkY29uc3RydWN0
b3JOYW1lID0gJGV4dGVuZGVkQXR0cmlidXRlcy0+eyJOYW1lZENvbnN0cnVjdG9yIn07CisgICAg
aWYgKCRleHRlbmRlZEF0dHJpYnV0ZXMtPnsiTGVnYWN5RmFjdG9yeUZ1bmN0aW9uIn0pIHsKKyAg
ICAgICAgbXkgJGNvbnN0cnVjdG9yTmFtZSA9ICRleHRlbmRlZEF0dHJpYnV0ZXMtPnsiTGVnYWN5
RmFjdG9yeUZ1bmN0aW9uIn07CisgICAgICAgICRjb25zdHJ1Y3Rvck5hbWUgPX4gcy9cWy4qXF0v
L2c7ICMgRXh0cmFjdCBmdW5jdGlvbiBuYW1lLgogICAgICAgICAkY29uc3RydWN0b3JOYW1lID1+
IHMvXCguKi8vZzsgIyBFeHRyYWN0IGZ1bmN0aW9uIG5hbWUuCiAgICAgICAgICRjb2RlIC49ICIg
ICAgIjsKICAgICAgICAgJGNvZGUgLj0gIlsiIC4gam9pbignLCAnLCBAZXh0ZW5kZWRBdHRyaWJ1
dGVzTGlzdCkgLiAiXSAiIGlmIEBleHRlbmRlZEF0dHJpYnV0ZXNMaXN0OwotICAgICAgICAkY29k
ZSAuPSAiYXR0cmlidXRlICIgLiAkb3JpZ2luYWxJbnRlcmZhY2VOYW1lIC4gIk5hbWVkQ29uc3Ry
dWN0b3IgJGNvbnN0cnVjdG9yTmFtZTtcbiI7CisgICAgICAgICRjb2RlIC49ICJhdHRyaWJ1dGUg
IiAuICRvcmlnaW5hbEludGVyZmFjZU5hbWUgLiAiTGVnYWN5RmFjdG9yeUZ1bmN0aW9uQ29uc3Ry
dWN0b3IgJGNvbnN0cnVjdG9yTmFtZTtcbiI7CiAgICAgfQogICAgIAogICAgIG15ICR3aW5kb3dB
bGlhc2VzQ29kZTsKQEAgLTQxOSw5ICs0MjAsOSBAQCBzdWIgZ2V0SW50ZXJmYWNlRXh0ZW5kZWRB
dHRyaWJ1dGVzRnJvbUlECiAgICAgJGZpbGVDb250ZW50cyA9fiBzLyg/Oig/Oig/OlwvXC8pKD86
W15cbl0qKSg/OlxuKSl8KD86KD86XC9cKikoPzooPzpbXlwqXSt8XCooPyFcLykpKikoPzpcKlwv
KSkpLy9nOwogCiAgICAgaWYgKCRmaWxlQ29udGVudHMgPX4gL1xbKC4qKVxdXHMrKGNhbGxiYWNr
IGludGVyZmFjZXxpbnRlcmZhY2V8ZXhjZXB0aW9uKVxzKyhcdyspL2dzKSB7Ci0gICAgICAgIG15
IEBwYXJ0cyA9IHNwbGl0KG0vLCg/IVteKCldKlwpKS8sICQxKTsKKyAgICAgICAgbXkgQHBhcnRz
ID0gc3BsaXQobS8sKD8hW15cW1xdXSpcXSkoPyFbXigpXSpcKSkvLCAkMSk7CiAgICAgICAgIGZv
cmVhY2ggbXkgJHBhcnQgKEBwYXJ0cykgewotICAgICAgICAgICAgbXkgQGtleVZhbHVlID0gc3Bs
aXQoJz0nLCAkcGFydCk7CisgICAgICAgICAgICBteSBAa2V5VmFsdWUgPSBzcGxpdCgnPScsICRw
YXJ0LCAyKTsKICAgICAgICAgICAgIG15ICRrZXkgPSB0cmltKCRrZXlWYWx1ZVswXSk7CiAgICAg
ICAgICAgICBuZXh0IHVubGVzcyBsZW5ndGgoJGtleSk7CiAgICAgICAgICAgICBteSAkdmFsdWUg
PSAiVkFMVUVfSVNfTUlTU0lORyI7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVGVzdE5hbWVkQ29uc3RydWN0b3IuaWRsCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0TmFtZWRDb25zdHJ1Y3Rvci5pZGwJKHJl
dmlzaW9uIDI2MzE3NikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9U
ZXN0TmFtZWRDb25zdHJ1Y3Rvci5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTMwLDggKzMwLDYgQEAK
IC8vIGNoYW5nZXMgaW4gaXRzIG91cHV0LgogWwogICAgIEFjdGl2ZURPTU9iamVjdCwKLSAgICBO
YW1lZENvbnN0cnVjdG9yPUF1ZGlvKERPTVN0cmluZyBzdHIxLCBvcHRpb25hbCBET01TdHJpbmcg
c3RyMiA9ICJkZWZhdWx0U3RyaW5nIiwgb3B0aW9uYWwgRE9NU3RyaW5nIHN0cjMpLAotICAgIENv
bnN0cnVjdG9yQ2FsbFdpdGg9RG9jdW1lbnQsCi0gICAgQ29uc3RydWN0b3JNYXlUaHJvd0V4Y2Vw
dGlvbgorICAgIExlZ2FjeUZhY3RvcnlGdW5jdGlvbj1bQ2FsbFdpdGg9RG9jdW1lbnQsIE1heVRo
cm93RXhjZXB0aW9uXSBBdWRpbyhET01TdHJpbmcgc3RyMSwgb3B0aW9uYWwgRE9NU3RyaW5nIHN0
cjIgPSAiZGVmYXVsdFN0cmluZyIsIG9wdGlvbmFsIERPTVN0cmluZyBzdHIzKQogXSBpbnRlcmZh
Y2UgVGVzdE5hbWVkQ29uc3RydWN0b3IgewogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmpl
Y3QuY3BwCShyZXZpc2lvbiAyNjMxNzYpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTgs
NyArNTgsNyBAQAogI2luY2x1ZGUgIkpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5n
RXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAiSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElk
ZW50aWZpZXIuaCIKICNpbmNsdWRlICJKU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmgiCi0jaW5jbHVk
ZSAiSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvck5hbWVkLmgiCisjaW5jbHVkZSAiSlNUZXN0TmFtZWRD
b25zdHJ1Y3RvckxlZ2FjeUZhY3RvcnlGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTVGVzdE5hbWVk
RGVsZXRlck5vSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIkpTVGVzdE5hbWVkRGVsZXRlclRocm93
aW5nRXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAiSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZp
ZXIuaCIKQEAgLTE2MjMsNyArMTYyMyw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RH
bG9iYWxPYmplY3QKIHsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVU5VU0VE
X1BBUkFNKGxleGljYWxHbG9iYWxPYmplY3QpOwotICAgIHJldHVybiBKU1Rlc3ROYW1lZENvbnN0
cnVjdG9yTmFtZWQ6OmdldENvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpLCB0aGlzT2JqZWN0Lmdsb2JhbE9iamVjdCgpKTsKKyAgICByZXR1cm4gSlNUZXN0TmFtZWRD
b25zdHJ1Y3RvckxlZ2FjeUZhY3RvcnlGdW5jdGlvbjo6Z2V0Q29uc3RydWN0b3IoSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIHRoaXNPYmplY3QuZ2xvYmFsT2JqZWN0KCkpOwogfQog
CiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RBdWRpb0NvbnN0cnVjdG9yKEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IFByb3BlcnR5TmFtZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAJ
KHJldmlzaW9uIDI2MzE3NikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNyAr
MjksNyBAQAogI2luY2x1ZGUgIkpTRE9NQ29udmVydEludGVyZmFjZS5oIgogI2luY2x1ZGUgIkpT
RE9NQ29udmVydFN0cmluZ3MuaCIKICNpbmNsdWRlICJKU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmgi
Ci0jaW5jbHVkZSAiSlNET01OYW1lZENvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiSlNET01MZWdh
Y3lGYWN0b3J5RnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2lu
Y2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJXZWJDb3JlSlNDbGll
bnREYXRhLmgiCkBAIC04NCw3ICs4NCw3IEBAIHByaXZhdGU6CiBTVEFUSUNfQVNTRVJUX0lTT19T
VUJTUEFDRV9TSEFSQUJMRShKU1Rlc3ROYW1lZENvbnN0cnVjdG9yUHJvdG90eXBlLCBKU1Rlc3RO
YW1lZENvbnN0cnVjdG9yUHJvdG90eXBlOjpCYXNlKTsKIAogdXNpbmcgSlNUZXN0TmFtZWRDb25z
dHJ1Y3RvckNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNU
ZXN0TmFtZWRDb25zdHJ1Y3Rvcj47Ci11c2luZyBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yTmFtZWRD
b25zdHJ1Y3RvciA9IEpTRE9NTmFtZWRDb25zdHJ1Y3RvcjxKU1Rlc3ROYW1lZENvbnN0cnVjdG9y
PjsKK3VzaW5nIEpTVGVzdE5hbWVkQ29uc3RydWN0b3JMZWdhY3lGYWN0b3J5RnVuY3Rpb24gPSBK
U0RPTUxlZ2FjeUZhY3RvcnlGdW5jdGlvbjxKU1Rlc3ROYW1lZENvbnN0cnVjdG9yPjsKIAogdGVt
cGxhdGU8PiBKU1ZhbHVlIEpTVGVzdE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1Y3Rvcjo6cHJvdG90
eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xv
YmFsT2JqZWN0KQogewpAQCAtMTAxLDExICsxMDEsMTEgQEAgdGVtcGxhdGU8PiB2b2lkIEpTVGVz
dE5hbWVkQ29uc3RydWN0b3JDbwogCiB0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RO
YW1lZENvbnN0cnVjdG9yQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3ROYW1lZENvbnN0cnVj
dG9yIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJM
RShKU1Rlc3ROYW1lZENvbnN0cnVjdG9yQ29uc3RydWN0b3IpIH07CiAKLXRlbXBsYXRlPD4gRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yTmFtZWRDb25z
dHJ1Y3Rvcjo6Y29uc3RydWN0KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkKK3RlbXBsYXRlPD4gRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yTGVnYWN5RmFjdG9yeUZ1bmN0aW9uOjpjb25zdHJ1
Y3QoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKQogewogICAgIFZNJiB2bSA9IGxleGljYWxHbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0byogY2FzdGVk
VGhpcyA9IGpzQ2FzdDxKU1Rlc3ROYW1lZENvbnN0cnVjdG9yTmFtZWRDb25zdHJ1Y3Rvcio+KGNh
bGxGcmFtZS0+anNDYWxsZWUoKSk7CisgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rl
c3ROYW1lZENvbnN0cnVjdG9yTGVnYWN5RmFjdG9yeUZ1bmN0aW9uKj4oY2FsbEZyYW1lLT5qc0Nh
bGxlZSgpKTsKICAgICBBU1NFUlQoY2FzdGVkVGhpcyk7CiAgICAgaWYgKFVOTElLRUxZKGNhbGxG
cmFtZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Io
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRz
RXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCkpOwpAQCAtMTMzLDIwICsxMzMsMjAgQEAgdGVtcGxh
dGU8PiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIAogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNWYWx1ZSk7CiB9CiAKLXRlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3ROYW1lZENvbnN0
cnVjdG9yTmFtZWRDb25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZt
LCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQordGVtcGxhdGU8PiBKU1Zh
bHVlIEpTVGVzdE5hbWVkQ29uc3RydWN0b3JMZWdhY3lGYWN0b3J5RnVuY3Rpb246OnByb3RvdHlw
ZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2Jh
bE9iamVjdCkKIHsKICAgICBVTlVTRURfUEFSQU0odm0pOwogICAgIHJldHVybiBnbG9iYWxPYmpl
Y3QuZnVuY3Rpb25Qcm90b3R5cGUoKTsKIH0KIAotdGVtcGxhdGU8PiB2b2lkIEpTVGVzdE5hbWVk
Q29uc3RydWN0b3JOYW1lZENvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0s
IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0
TmFtZWRDb25zdHJ1Y3RvckxlZ2FjeUZhY3RvcnlGdW5jdGlvbjo6aW5pdGlhbGl6ZVByb3BlcnRp
ZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAgIHB1dERp
cmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3ROYW1lZENvbnN0cnVj
dG9yOjpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5
TmFtZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIkF1ZGlvIl9zKSwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51
bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVy
KDEpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtKTsKIH0KIAotdGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0
TmFtZWRDb25zdHJ1Y3Rvck5hbWVkQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkF1ZGlvIiwgJkJh
c2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RO
YW1lZENvbnN0cnVjdG9yTmFtZWRDb25zdHJ1Y3RvcikgfTsKK3RlbXBsYXRlPD4gY29uc3QgQ2xh
c3NJbmZvIEpTVGVzdE5hbWVkQ29uc3RydWN0b3JMZWdhY3lGYWN0b3J5RnVuY3Rpb246OnNfaW5m
byA9IHsgIkF1ZGlvIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01F
VEhPRF9UQUJMRShKU1Rlc3ROYW1lZENvbnN0cnVjdG9yTGVnYWN5RmFjdG9yeUZ1bmN0aW9uKSB9
OwogCiAvKiBIYXNoIHRhYmxlIGZvciBwcm90b3R5cGUgKi8KIApAQCAtMTk1LDkgKzE5NSw5IEBA
IEpTVmFsdWUgSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3QKICAgICByZXR1cm4gZ2V0
RE9NQ29uc3RydWN0b3I8SlNUZXN0TmFtZWRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yPih2bSwgKmpz
Q2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOwogfQogCi1KU1Zh
bHVlIEpTVGVzdE5hbWVkQ29uc3RydWN0b3I6OmdldE5hbWVkQ29uc3RydWN0b3IoVk0mIHZtLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorSlNWYWx1ZSBKU1Rlc3ROYW1lZENvbnN0cnVj
dG9yOjpnZXRMZWdhY3lGYWN0b3J5RnVuY3Rpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0KQogewotICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3ROYW1lZENv
bnN0cnVjdG9yTmFtZWRDb25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3Qq
PihnbG9iYWxPYmplY3QpKTsKKyAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0TmFt
ZWRDb25zdHJ1Y3RvckxlZ2FjeUZhY3RvcnlGdW5jdGlvbj4odm0sICpqc0Nhc3Q8SlNET01HbG9i
YWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKIH0KIAogdm9pZCBKU1Rlc3ROYW1lZENvbnN0cnVj
dG9yOjpkZXN0cm95KEpTQzo6SlNDZWxsKiBjZWxsKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRD
b25zdHJ1Y3Rvci5oCShyZXZpc2lvbiAyNjMxNzYpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkp
CkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBzdGF0aWMgSlNDOjpKU1Zh
bHVlIGdldENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7
Ci0gICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXROYW1lZENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBK
U0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRMZWdhY3lG
YWN0b3J5RnVuY3Rpb24oSlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSwgSlNDOjpTdWJzcGFjZUFjY2VzcyBtb2RlPiBzdGF0aWMgSlNDOjpJc29T
dWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAgICAgewogICAgICAgICBpZiBjb25z
dGV4cHIgKG1vZGUgPT0gSlNDOjpTdWJzcGFjZUFjY2Vzczo6Q29uY3VycmVudGx5KQpJbmRleDog
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXVkaW9FbGVtZW50LmlkbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdWRpb0VsZW1lbnQuaWRsCShyZXZpc2lvbiAyNjMxNzYp
CisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdWRpb0VsZW1lbnQuaWRsCSh3b3JraW5nIGNv
cHkpCkBAIC0yNSw3ICsyNSw2IEBACiAKIFsKICAgICBDb25kaXRpb25hbD1WSURFTywKLSAgICBD
b25zdHJ1Y3RvckNhbGxXaXRoPURvY3VtZW50LAotICAgIE5hbWVkQ29uc3RydWN0b3I9QXVkaW8o
b3B0aW9uYWwgW0F0b21TdHJpbmddIERPTVN0cmluZyBzcmMpCisgICAgTGVnYWN5RmFjdG9yeUZ1
bmN0aW9uPVtDYWxsV2l0aD1Eb2N1bWVudF0gQXVkaW8ob3B0aW9uYWwgW0F0b21TdHJpbmddIERP
TVN0cmluZyBzcmMpCiBdIGludGVyZmFjZSBIVE1MQXVkaW9FbGVtZW50IDogSFRNTE1lZGlhRWxl
bWVudCB7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50Lmlk
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaWRs
CShyZXZpc2lvbiAyNjMxNzYpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1l
bnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yMSw4ICsyMSw3IEBACiBbCiAgICAgRXhwb3J0TWFj
cm89V0VCQ09SRV9FWFBPUlQsCiAgICAgSlNHZW5lcmF0ZVRvTmF0aXZlT2JqZWN0LAotICAgIENv
bnN0cnVjdG9yQ2FsbFdpdGg9RG9jdW1lbnQsCi0gICAgTmFtZWRDb25zdHJ1Y3Rvcj1JbWFnZShv
cHRpb25hbCB1bnNpZ25lZCBsb25nIHdpZHRoLCBvcHRpb25hbCB1bnNpZ25lZCBsb25nIGhlaWdo
dCkKKyAgICBMZWdhY3lGYWN0b3J5RnVuY3Rpb249W0NhbGxXaXRoPURvY3VtZW50XSBJbWFnZShv
cHRpb25hbCB1bnNpZ25lZCBsb25nIHdpZHRoLCBvcHRpb25hbCB1bnNpZ25lZCBsb25nIGhlaWdo
dCkKIF0gaW50ZXJmYWNlIEhUTUxJbWFnZUVsZW1lbnQgOiBIVE1MRWxlbWVudCB7CiAgICAgW0NF
UmVhY3Rpb25zPU5vdE5lZWRlZCwgUmVmbGVjdF0gYXR0cmlidXRlIERPTVN0cmluZyBuYW1lOwog
ICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQsIFJlZmxlY3RdIGF0dHJpYnV0ZSBET01TdHJpbmcg
YWxpZ247CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmlkbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmlkbAko
cmV2aXNpb24gMjYzMTc2KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVu
dC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTIwLDkgKzIwLDcgQEAKIAogWwogICAgIEpTR2VuZXJh
dGVUb05hdGl2ZU9iamVjdCwKLSAgICBDb25zdHJ1Y3Rvck1heVRocm93RXhjZXB0aW9uLAotICAg
IENvbnN0cnVjdG9yQ2FsbFdpdGg9RG9jdW1lbnQsCi0gICAgTmFtZWRDb25zdHJ1Y3Rvcj1PcHRp
b24ob3B0aW9uYWwgRE9NU3RyaW5nIHRleHQgPSAiIiwgb3B0aW9uYWwgRE9NU3RyaW5nIHZhbHVl
LCBvcHRpb25hbCBib29sZWFuIGRlZmF1bHRTZWxlY3RlZCA9IGZhbHNlLCBvcHRpb25hbCBib29s
ZWFuIHNlbGVjdGVkID0gZmFsc2UpLAorICAgIExlZ2FjeUZhY3RvcnlGdW5jdGlvbj1bQ2FsbFdp
dGg9RG9jdW1lbnQsIE1heVRocm93RXhjZXB0aW9uXSBPcHRpb24ob3B0aW9uYWwgRE9NU3RyaW5n
IHRleHQgPSAiIiwgb3B0aW9uYWwgRE9NU3RyaW5nIHZhbHVlLCBvcHRpb25hbCBib29sZWFuIGRl
ZmF1bHRTZWxlY3RlZCA9IGZhbHNlLCBvcHRpb25hbCBib29sZWFuIHNlbGVjdGVkID0gZmFsc2Up
LAogXSBpbnRlcmZhY2UgSFRNTE9wdGlvbkVsZW1lbnQgOiBIVE1MRWxlbWVudCB7CiAgICAgW0NF
UmVhY3Rpb25zPU5vdE5lZWRlZCwgUmVmbGVjdF0gYXR0cmlidXRlIGJvb2xlYW4gZGlzYWJsZWQ7
CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEhUTUxGb3JtRWxlbWVudCBmb3JtOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407988</attachid>
            <date>2020-09-04 10:08:59 -0700</date>
            <delta_ts>2020-09-04 10:14:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213316-20200904100858.patch</filename>
            <type>text/plain</type>
            <size>136710</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2NjYxNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYyIEBACisyMDIwLTA5LTA0ICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViSURMXSBBZG9wdCBMZWdhY3lG
YWN0b3J5RnVuY3Rpb24gZXh0ZW5kZWQgYXR0cmlidXRlIGluIGxpZXUgb2YgTmFtZWRDb25zdHJ1
Y3RvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEz
MzE2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVu
YW1lIHRoZSBmb2xsb3dpbmcgdGhlIGV4dGVuZGVkIGF0dHJpYnV0ZXMgdG8gbW9yZSBjbG9zZWx5
IGFsaWduIHdpdGggV2ViSURMOgorICAgICAgICAgICAgTmFtZWRDb25zdHJ1Y3RvciAtPiBMZWdh
Y3lGYWN0b3J5RnVuY3Rpb24KKyAgICAgICAgICAgIENvbnN0cnVjdG9yQ2FsbFdpdGggLT4gTGVn
YWN5RmFjdG9yeUZ1bmN0aW9uQ2FsbFdpdGgKKyAgICAgICAgICAgIENvbnN0cnVjdG9yRW5hYmxl
ZEJ5U2V0dGluZyAtPiBMZWdhY3lGYWN0b3J5RnVuY3Rpb25FbmFibGVkQnlTZXR0aW5nCisgICAg
ICAgICAgICBDb25zdHJ1Y3Rvck1heVRocm93RXhjZXB0aW9uIC0+IExlZ2FjeUZhY3RvcnlGdW5j
dGlvbk1heVRocm93RXhjZXB0aW9uCisKKyAgICAgICAgTm90ZSwgQ29uc3RydWN0b3JDYWxsV2l0
aCwgQ29uc3RydWN0b3JFbmFibGVkQnlTZXR0aW5nIGFuZCBDb25zdHJ1Y3Rvck1heVRocm93RXhj
ZXB0aW9uCisgICAgICAgIHdlcmUgb25seSB1c2VkIHdpdGggTmFtZWRDb25zdHJ1Y3RvcnMgcHJl
dmlvdXNseSBhcyBub3JtYWwgY29uc3RydWN0b3JzIGRvbid0IHJlcXVpcmUKKyAgICAgICAgaW50
ZXJmYWNlIGxldmVsIGV4dGVuZGVkIGF0dHJpYnV0ZXMgZm9yIHRoZXNlIGFzIHRoZSBleHRlbmRl
ZCBhdHRyaWJ1dGUgY2FuIGJlIGRpcmVjdGx5CisgICAgICAgIG9uIHRoZSBjb25zdHJ1Y3RvciBp
dHNlbGYuIElkZWFsbHksIHdlIHdvdWxkIGRvIHRoZSBzYW1lIHdpdGggTGVnYWN5RmFjdG9yeUZ1
bmN0aW9uIGJ5CisgICAgICAgIGFsbG93aW5nIGV4dGVuZGVkIGF0dHJpYnV0ZXMgb24gdGhlIG9w
ZXJhdG9yIGl0c2VsZiBsaWtlOgorICAgICAgICAKKyAgICAgICAgWworICAgICAgICAgICAgLi4u
CisgICAgICAgICAgICBMZWdhY3lGYWN0b3J5RnVuY3Rpb249W0NhbGxXaXRoPURvY3VtZW50XSBB
dWRpbyhvcHRpb25hbCBbQXRvbVN0cmluZ10gRE9NU3RyaW5nIHNyYykKKyAgICAgICAgXQorCisg
ICAgICAgIGJ1dCB0aGlzIHJlcXVpcmVzIGNoYW5nZXMgdG8gdGhlIElETFBhcnNlciAod2hpY2gg
YXJlIHN0cmFpZ2h0Zm9yd2FyZCkgYW5kIGNyZWF0ZXMgYSBsb3Qgb2YKKyAgICAgICAgYWRkaXRp
b25hbCBjb21wbGV4aXR5IGluc2lkZSB0aGUgdmVyeSBoYWNreSBwcmVwcm9jZXNzLWlkbHMucGwg
cmVwcm9kdWNpbmcgdGhvc2UgcGFyc2VyIGNoYW5nZXMuCisgICAgICAgIEkgd2lsbCBsZWF2ZSB0
aGF0IGFkZGl0aW9uYWwgY2xlYW51cCBmb3IgYSBzdWJzZXF1ZW50IGNoYW5nZS4gCisKKyAgICAg
ICAgKiBodG1sL0hUTUxBdWRpb0VsZW1lbnQuaWRsOgorICAgICAgICAqIGh0bWwvSFRNTEltYWdl
RWxlbWVudC5pZGw6CisgICAgICAgICogaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5pZGw6CisgICAg
ICAgICogaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuaWRsOgorICAgICAgICBVcGRhdGUgdG8gdXNl
IG5ldyBuYW1lcy4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NTGVnYWN5RmFjdG9yeUZ1
bmN0aW9uLmg6IENvcGllZCBmcm9tIGJpbmRpbmdzL2pzL0pTRE9NTmFtZWRDb25zdHJ1Y3Rvci5o
LgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NTmFtZWRDb25zdHJ1Y3Rvci5oOiBSZW1vdmVk
LgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
VXBkYXRlIGZvciByZW5hbWUgb2YgSlNET01OYW1lZENvbnN0cnVjdG9yLmggdG8gSlNET01MZWdh
Y3lGYWN0b3J5RnVuY3Rpb24uaAorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9ySlMucG06CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIucG06Cisg
ICAgICAgIChhcHBseUV4dGVuZGVkQXR0cmlidXRlTGlzdCk6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy9wcmVwcm9jZXNzLWlkbHMucGw6CisgICAgICAgIChHZW5lcmF0ZUNvbnN0cnVjdG9y
QXR0cmlidXRlcyk6CisgICAgICAgIFVwZGF0ZSBJREwgcHJvY2Vzc2luZyB0byBoYW5kbGUgbmV3
IG5hbWVzLgorICAgICAgICAKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0
ZXMuanNvbjoKKyAgICAgICAgVXBkYXRlIGV4dGVuZGVkIGF0dHJpYnV0ZSBkZWZpbml0aW9ucyBm
b3IgbmV3IG5hbWVzLiBSZW1vdmVkIHVudXNlZCBDb25zdHJ1Y3RvciBleHRlbmRlZCBhdHRyaWJ1
dGUuCisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2Jq
ZWN0LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TGVnYWN5
RmFjdG9yeUZ1bmN0aW9uLmNwcDogQ29waWVkIGZyb20gYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24uaDogQ29waWVkIGZyb20gYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuaC4KKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHA6IFJlbW92
ZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3Ry
dWN0b3IuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvU3VwcGxl
bWVudGFsRGVwZW5kZW5jaWVzLmRlcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbi5pZGw6IENvcGllZCBmcm9tIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9UZXN0TmFtZWRDb25zdHJ1Y3Rvci5pZGwuCisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Rlc3ROYW1lZENvbnN0cnVjdG9yLmlkbDogUmVtb3ZlZC4KKyAgICAgICAgVXBk
YXRlIHRlc3RzIGZvciBuZXcgbmFtZXMuCisKIDIwMjAtMDktMDQgIFlvdWVubiBGYWJsZXQgIDx5
b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEJpbmRpbmcgZ2VuZXJhdG9yIGlzIG5vdCBhbHdh
eXMgY29tcHV0aW5nIHRoZSByaWdodCBpbnRlcmZhY2UgYXR0cmlidXRlcwpJbmRleDogU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNp
b24gMjY2NTU5KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMDA0Myw3ICsxMDA0Myw3IEBACiAJCTdDMENFRjI5
MUU0QTU0RDMwMDhERUI4MCAvKiBKU0RPTUNvbnN0cnVjdG9yV2l0aERvY3VtZW50LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRE9NQ29uc3RydWN0b3JXaXRoRG9jdW1lbnQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MwQ0VGMkExRTRBNTU2QzAwOERFQjgw
IC8qIEpTRE9NQnVpbHRpbkNvbnN0cnVjdG9yQmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKU0RPTUJ1aWx0aW5Db25zdHJ1Y3RvckJhc2UuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJN0MwQ0VGMkIxRTRBNTVDMzAwOERFQjgwIC8qIEpTRE9NQ29uc3RydWN0
b3JOb3RDb25zdHJ1Y3RhYmxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpT
RE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCTdDMENFRjJDMUU0QTU2NEQwMDhERUI4MCAvKiBKU0RPTU5hbWVkQ29uc3RydWN0b3Iu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNET01OYW1lZENvbnN0cnVjdG9y
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDMENFRjJDMUU0QTU2NEQwMDhERUI4
MCAvKiBKU0RPTUxlZ2FjeUZhY3RvcnlGdW5jdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKU0RPTUxlZ2FjeUZhY3RvcnlGdW5jdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3QzBDRUYyRDFFNEE1NkM1MDA4REVCODAgLyogSlNET01CdWlsdGluQ29u
c3RydWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNET01CdWlsdGlu
Q29uc3RydWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MwQ0VGMkUxRTRB
NTgzMjAwOERFQjgwIC8qIEpTRE9NQnVpbHRpbkNvbnN0cnVjdG9yQmFzZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0RPTUJ1aWx0aW5Db25zdHJ1Y3RvckJhc2Uu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzBDRUYyRjFFNEE1OEFEMDA4REVC
ODAgLyogSlNET01Db25zdHJ1Y3RvckJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNET01Db25zdHJ1Y3RvckJhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMjY3NDQsNyArMjY3NDQsNyBAQAogCQkJCTdDMENFRjJCMUU0QTU1QzMwMDhE
RUI4MCAvKiBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZS5oICovLAogCQkJCTdDMENF
RjMwMUU0QTU4RjEwMDhERUI4MCAvKiBKU0RPTUNvbnN0cnVjdG9yV2l0aERvY3VtZW50LmNwcCAq
LywKIAkJCQk3QzBDRUYyOTFFNEE1NEQzMDA4REVCODAgLyogSlNET01Db25zdHJ1Y3RvcldpdGhE
b2N1bWVudC5oICovLAotCQkJCTdDMENFRjJDMUU0QTU2NEQwMDhERUI4MCAvKiBKU0RPTU5hbWVk
Q29uc3RydWN0b3IuaCAqLywKKwkJCQk3QzBDRUYyQzFFNEE1NjREMDA4REVCODAgLyogSlNET01M
ZWdhY3lGYWN0b3J5RnVuY3Rpb24uaCAqLywKIAkJCSk7CiAJCQluYW1lID0gQ29uc3RydWN0b3Jz
OwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NTGVnYWN5RmFjdG9yeUZ1bmN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01MZWdhY3lGYWN0b3J5RnVuY3Rpb24uaAkobm9uZXhp
c3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUxlZ2FjeUZhY3RvcnlG
dW5jdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsODEgQEAKKy8qCisgKiAgQ29weXJp
Z2h0IChDKSAyMDE1LCAyMDE2IENhbm9uIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBD
b3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
ICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBH
ZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5
IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAg
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuICBTZWUgdGhlIEdOVQorICogIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFsb25nIHdpdGgg
dGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiAgRm91
bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBN
QSAgMDIxMTAtMTMwMSAgVVNBCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJKU0RP
TUNvbnN0cnVjdG9yV2l0aERvY3VtZW50LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworLy8g
RklNWEU6IFdoeSBjYW4ndCBMZWdhY3lGYWN0b3J5RnVuY3Rpb25zIGJlIHVzZWQgd2l0aCB3b3Jr
ZXJzPwordGVtcGxhdGU8dHlwZW5hbWUgSlNDbGFzcz4gY2xhc3MgSlNET01MZWdhY3lGYWN0b3J5
RnVuY3Rpb24gZmluYWwgOiBwdWJsaWMgSlNET01Db25zdHJ1Y3RvcldpdGhEb2N1bWVudCB7Citw
dWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IEpTRE9NQ29uc3RydWN0b3JXaXRoRG9jdW1lbnQ7CisK
KyAgICBzdGF0aWMgSlNET01MZWdhY3lGYWN0b3J5RnVuY3Rpb24qIGNyZWF0ZShKU0M6OlZNJiwg
SlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCYpOworICAgIHN0YXRpYyBKU0M6OlN0
cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0Jiwg
SlNDOjpKU1ZhbHVlIHByb3RvdHlwZSk7CisKKyAgICBERUNMQVJFX0lORk87CisKKyAgICAvLyBN
dXN0IGJlIGRlZmluZWQgZm9yIGVhY2ggc3BlY2lhbGl6YXRpb24gY2xhc3MuCisgICAgc3RhdGlj
IEpTQzo6SlNWYWx1ZSBwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYsIGNvbnN0IEpTRE9N
R2xvYmFsT2JqZWN0Jik7CisKK3ByaXZhdGU6CisgICAgSlNET01MZWdhY3lGYWN0b3J5RnVuY3Rp
b24oSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9i
amVjdCkKKyAgICAgICAgOiBCYXNlKHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KQorICAgIHsgCisg
ICAgfQorCisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJiwgSlNET01HbG9iYWxPYmpl
Y3QmKTsKKyAgICBzdGF0aWMgSlNDOjpDYWxsRGF0YSBnZXRDb25zdHJ1Y3REYXRhKEpTQzo6SlND
ZWxsKik7CisKKyAgICAvLyBVc3VhbGx5IGRlZmluZWQgZm9yIGVhY2ggc3BlY2lhbGl6YXRpb24g
Y2xhc3MuCisgICAgdm9pZCBpbml0aWFsaXplUHJvcGVydGllcyhKU0M6OlZNJiwgSlNET01HbG9i
YWxPYmplY3QmKSB7IH0KKyAgICAvLyBNdXN0IGJlIGRlZmluZWQgZm9yIGVhY2ggc3BlY2lhbGl6
YXRpb24gY2xhc3MuCisgICAgc3RhdGljIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBjb25zdHJ1Y3QoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7Cit9Owor
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBKU0NsYXNzPiBpbmxpbmUgSlNET01MZWdhY3lGYWN0b3J5RnVu
Y3Rpb248SlNDbGFzcz4qIEpTRE9NTGVnYWN5RmFjdG9yeUZ1bmN0aW9uPEpTQ2xhc3M+OjpjcmVh
dGUoSlNDOjpWTSYgdm0sIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2Jq
ZWN0JiBnbG9iYWxPYmplY3QpCit7CisgICAgSlNET01MZWdhY3lGYWN0b3J5RnVuY3Rpb24qIGNv
bnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU0RPTUxlZ2FjeUZh
Y3RvcnlGdW5jdGlvbj4odm0uaGVhcCkpIEpTRE9NTGVnYWN5RmFjdG9yeUZ1bmN0aW9uKHN0cnVj
dHVyZSwgZ2xvYmFsT2JqZWN0KTsKKyAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24odm0s
IGdsb2JhbE9iamVjdCk7CisgICAgcmV0dXJuIGNvbnN0cnVjdG9yOworfQorCit0ZW1wbGF0ZTx0
eXBlbmFtZSBKU0NsYXNzPiBpbmxpbmUgSlNDOjpTdHJ1Y3R1cmUqIEpTRE9NTGVnYWN5RmFjdG9y
eUZ1bmN0aW9uPEpTQ2xhc3M+OjpjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNH
bG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKK3sKKyAg
ICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgJmdsb2JhbE9iamVjdCwgcHJvdG90
eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZv
KCkpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBKU0NsYXNzPiBpbmxpbmUgdm9pZCBKU0RPTUxl
Z2FjeUZhY3RvcnlGdW5jdGlvbjxKU0NsYXNzPjo6ZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYgdm0s
IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit7CisgICAgQmFzZTo6ZmluaXNoQ3Jl
YXRpb24oZ2xvYmFsT2JqZWN0KTsKKyAgICBBU1NFUlQoaW5oZXJpdHModm0sIGluZm8oKSkpOwor
ICAgIGluaXRpYWxpemVQcm9wZXJ0aWVzKHZtLCBnbG9iYWxPYmplY3QpOworfQorCit0ZW1wbGF0
ZTx0eXBlbmFtZSBKU0NsYXNzPiBpbmxpbmUgSlNDOjpDYWxsRGF0YSBKU0RPTUxlZ2FjeUZhY3Rv
cnlGdW5jdGlvbjxKU0NsYXNzPjo6Z2V0Q29uc3RydWN0RGF0YShKU0M6OkpTQ2VsbCopCit7Cisg
ICAgSlNDOjpDYWxsRGF0YSBjb25zdHJ1Y3REYXRhOworICAgIGNvbnN0cnVjdERhdGEudHlwZSA9
IEpTQzo6Q2FsbERhdGE6OlR5cGU6Ok5hdGl2ZTsKKyAgICBjb25zdHJ1Y3REYXRhLm5hdGl2ZS5m
dW5jdGlvbiA9IGNvbnN0cnVjdDsKKyAgICByZXR1cm4gY29uc3RydWN0RGF0YTsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01OYW1lZENvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01OYW1lZENvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDI2NjU1OSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NTmFtZWRDb25zdHJ1Y3Rvci5oCShub25leGlzdGVu
dCkKQEAgLTEsODEgKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgKEMpIDIwMTUsIDIwMTYgQ2Fu
b24gSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogIENvcHlyaWdodCAoQykgMjAxNiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0gKiAgTGlj
ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy
Ci0gKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs
YXRlciB2ZXJzaW9uLgotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0g
KiAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0g
KiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5l
cmFsIFB1YmxpYwotICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwg
d3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSAqICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu
a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKLSAq
LwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIkpTRE9NQ29uc3RydWN0b3JXaXRoRG9jdW1l
bnQuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0vLyBGSU1YRTogV2h5IGNhbid0IG5hbWVk
IGNvbnN0cnVjdG9ycyBiZSB1c2VkIHdpdGggd29ya2Vycz8KLXRlbXBsYXRlPHR5cGVuYW1lIEpT
Q2xhc3M+IGNsYXNzIEpTRE9NTmFtZWRDb25zdHJ1Y3RvciBmaW5hbCA6IHB1YmxpYyBKU0RPTUNv
bnN0cnVjdG9yV2l0aERvY3VtZW50IHsKLXB1YmxpYzoKLSAgICB1c2luZyBCYXNlID0gSlNET01D
b25zdHJ1Y3RvcldpdGhEb2N1bWVudDsKLQotICAgIHN0YXRpYyBKU0RPTU5hbWVkQ29uc3RydWN0
b3IqIGNyZWF0ZShKU0M6OlZNJiwgSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCYp
OwotICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mLCBK
U0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSk7Ci0KLSAgICBERUNM
QVJFX0lORk87Ci0KLSAgICAvLyBNdXN0IGJlIGRlZmluZWQgZm9yIGVhY2ggc3BlY2lhbGl6YXRp
b24gY2xhc3MuCi0gICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGVGb3JTdHJ1Y3R1cmUo
SlNDOjpWTSYsIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Jik7Ci0KLXByaXZhdGU6Ci0gICAgSlNE
T01OYW1lZENvbnN0cnVjdG9yKEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFs
T2JqZWN0JiBnbG9iYWxPYmplY3QpCi0gICAgICAgIDogQmFzZShzdHJ1Y3R1cmUsIGdsb2JhbE9i
amVjdCkKLSAgICB7IAotICAgIH0KLQotICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYs
IEpTRE9NR2xvYmFsT2JqZWN0Jik7Ci0gICAgc3RhdGljIEpTQzo6Q2FsbERhdGEgZ2V0Q29uc3Ry
dWN0RGF0YShKU0M6OkpTQ2VsbCopOwotCi0gICAgLy8gVXN1YWxseSBkZWZpbmVkIGZvciBlYWNo
IHNwZWNpYWxpemF0aW9uIGNsYXNzLgotICAgIHZvaWQgaW5pdGlhbGl6ZVByb3BlcnRpZXMoSlND
OjpWTSYsIEpTRE9NR2xvYmFsT2JqZWN0JikgeyB9Ci0gICAgLy8gTXVzdCBiZSBkZWZpbmVkIGZv
ciBlYWNoIHNwZWNpYWxpemF0aW9uIGNsYXNzLgotICAgIHN0YXRpYyBKU0M6OkVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNh
bGxGcmFtZSopOwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgSlNDbGFzcz4gaW5saW5lIEpTRE9N
TmFtZWRDb25zdHJ1Y3RvcjxKU0NsYXNzPiogSlNET01OYW1lZENvbnN0cnVjdG9yPEpTQ2xhc3M+
OjpjcmVhdGUoSlNDOjpWTSYgdm0sIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xv
YmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCi17Ci0gICAgSlNET01OYW1lZENvbnN0cnVjdG9yKiBj
b25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNET01OYW1lZENv
bnN0cnVjdG9yPih2bS5oZWFwKSkgSlNET01OYW1lZENvbnN0cnVjdG9yKHN0cnVjdHVyZSwgZ2xv
YmFsT2JqZWN0KTsKLSAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24odm0sIGdsb2JhbE9i
amVjdCk7Ci0gICAgcmV0dXJuIGNvbnN0cnVjdG9yOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBK
U0NsYXNzPiBpbmxpbmUgSlNDOjpTdHJ1Y3R1cmUqIEpTRE9NTmFtZWRDb25zdHJ1Y3RvcjxKU0Ns
YXNzPjo6Y3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0JiBn
bG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCi17Ci0gICAgcmV0dXJuIEpTQzo6
U3RydWN0dXJlOjpjcmVhdGUodm0sICZnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBl
SW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKLX0KLQotdGVt
cGxhdGU8dHlwZW5hbWUgSlNDbGFzcz4gaW5saW5lIHZvaWQgSlNET01OYW1lZENvbnN0cnVjdG9y
PEpTQ2xhc3M+OjpmaW5pc2hDcmVhdGlvbihKU0M6OlZNJiB2bSwgSlNET01HbG9iYWxPYmplY3Qm
IGdsb2JhbE9iamVjdCkKLXsKLSAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbihnbG9iYWxPYmplY3Qp
OwotICAgIEFTU0VSVChpbmhlcml0cyh2bSwgaW5mbygpKSk7Ci0gICAgaW5pdGlhbGl6ZVByb3Bl
cnRpZXModm0sIGdsb2JhbE9iamVjdCk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEpTQ2xhc3M+
IGlubGluZSBKU0M6OkNhbGxEYXRhIEpTRE9NTmFtZWRDb25zdHJ1Y3RvcjxKU0NsYXNzPjo6Z2V0
Q29uc3RydWN0RGF0YShKU0M6OkpTQ2VsbCopCi17Ci0gICAgSlNDOjpDYWxsRGF0YSBjb25zdHJ1
Y3REYXRhOwotICAgIGNvbnN0cnVjdERhdGEudHlwZSA9IEpTQzo6Q2FsbERhdGE6OlR5cGU6Ok5h
dGl2ZTsKLSAgICBjb25zdHJ1Y3REYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNvbnN0cnVjdDsKLSAg
ICByZXR1cm4gY29uc3RydWN0RGF0YTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
SlMucG0JKHJldmlzaW9uIDI2NjU1OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvckpTLnBtCSh3b3JraW5nIGNvcHkpCkBAIC0yNzc4LDcgKzI3NzgsNyBA
QCBzdWIgR2VuZXJhdGVIZWFkZXIKICAgICAjIENvbnN0cnVjdG9yIG9iamVjdCBnZXR0ZXIKICAg
ICB1bmxlc3MgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e05vSW50ZXJmYWNlT2Jq
ZWN0fSkgewogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyBKU0M6OkpT
VmFsdWUgZ2V0Q29uc3RydWN0b3IoSlNDOjpWTSYsIGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3Qq
KTtcbiIpOwotICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyBKU0M6OkpT
VmFsdWUgZ2V0TmFtZWRDb25zdHJ1Y3RvcihKU0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCop
O1xuIikgaWYgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57TmFtZWRDb25zdHJ1Y3Rv
cn07CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIEpTQzo6SlNWYWx1
ZSBnZXRMZWdhY3lGYWN0b3J5RnVuY3Rpb24oSlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3Qq
KTtcbiIpIGlmICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0xlZ2FjeUZhY3RvcnlG
dW5jdGlvbn07CiAgICAgfQogCiAgICAgIyBTZXJpYWxpemVyIGZ1bmN0aW9uLgpAQCAtMzg2Mywx
MCArMzg2MywxMCBAQCBzdWIgR2VuZXJhdGVSdW50aW1lRW5hYmxlQ29uZGl0aW9uYWxTdHJpCiAg
ICAgICAgIHB1c2goQGNvbmp1bmN0cywgICIke25hbWV9OjplbmFibGVkRm9yQ29udGV4dCgiIC4g
JGNvbnRleHRSZWYgLiAiKSIpOwogICAgIH0KIAotICAgIGlmICgkY29udGV4dC0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57Q29uc3RydWN0b3JFbmFibGVkQnlTZXR0aW5nfSkgewotICAgICAgICBhc3Nl
cnQoIk11c3Qgc3BlY2lmeSB2YWx1ZSBmb3IgQ29uc3RydWN0b3JFbmFibGVkQnlTZXR0aW5nLiIp
IGlmICRjb250ZXh0LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDb25zdHJ1Y3RvckVuYWJsZWRCeVNl
dHRpbmd9IGVxICJWQUxVRV9JU19NSVNTSU5HIjsKKyAgICBpZiAoJGNvbnRleHQtPmV4dGVuZGVk
QXR0cmlidXRlcy0+e0xlZ2FjeUZhY3RvcnlGdW5jdGlvbkVuYWJsZWRCeVNldHRpbmd9KSB7Cisg
ICAgICAgIGFzc2VydCgiTXVzdCBzcGVjaWZ5IHZhbHVlIGZvciBMZWdhY3lGYWN0b3J5RnVuY3Rp
b25FbmFibGVkQnlTZXR0aW5nLiIpIGlmICRjb250ZXh0LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntM
ZWdhY3lGYWN0b3J5RnVuY3Rpb25FbmFibGVkQnlTZXR0aW5nfSBlcSAiVkFMVUVfSVNfTUlTU0lO
RyI7CiAKLSAgICAgICAgbXkgQHNldHRpbmdzID0gc3BsaXQoLyYvLCAkY29udGV4dC0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57Q29uc3RydWN0b3JFbmFibGVkQnlTZXR0aW5nfSk7CisgICAgICAgIG15
IEBzZXR0aW5ncyA9IHNwbGl0KC8mLywgJGNvbnRleHQtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0xl
Z2FjeUZhY3RvcnlGdW5jdGlvbkVuYWJsZWRCeVNldHRpbmd9KTsKICAgICAgICAgZm9yZWFjaCBt
eSAkc2V0dGluZyAoQHNldHRpbmdzKSB7CiAgICAgICAgICAgICBwdXNoKEBjb25qdW5jdHMsICJk
b3duY2FzdDxEb2N1bWVudD4oanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oIiAuICRnbG9iYWxP
YmplY3RQdHIgLiAiKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKS0+c2V0dGluZ3MoKS4iIC4g
VG9NZXRob2ROYW1lKCRzZXR0aW5nKSAuICJFbmFibGVkKCkiKTsKICAgICAgICAgfQpAQCAtNDI1
Nyw4ICs0MjU3LDggQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgbXkgJHBy
b3RvQ2xhc3NOYW1lID0gIiR7Y2xhc3NOYW1lfVByb3RvdHlwZSI7CiAgICAgICAgIEdlbmVyYXRl
Q29uc3RydWN0b3JEZWZpbml0aW9ucyhcQGltcGxDb250ZW50LCAkY2xhc3NOYW1lLCAkcHJvdG9D
bGFzc05hbWUsICR2aXNpYmxlSW50ZXJmYWNlTmFtZSwgJGludGVyZmFjZSk7CiAKLSAgICAgICAg
bXkgJG5hbWVkQ29uc3RydWN0b3IgPSAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntO
YW1lZENvbnN0cnVjdG9yfTsKLSAgICAgICAgR2VuZXJhdGVDb25zdHJ1Y3RvckRlZmluaXRpb25z
KFxAaW1wbENvbnRlbnQsICRjbGFzc05hbWUsICRwcm90b0NsYXNzTmFtZSwgJG5hbWVkQ29uc3Ry
dWN0b3IsICRpbnRlcmZhY2UsICJHZW5lcmF0aW5nTmFtZWRDb25zdHJ1Y3RvciIpIGlmICRuYW1l
ZENvbnN0cnVjdG9yOworICAgICAgICBteSAkbGVnYWN5RmFjdG9yeUZ1bmN0aW9uID0gJGludGVy
ZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57TGVnYWN5RmFjdG9yeUZ1bmN0aW9ufTsKKyAgICAg
ICAgR2VuZXJhdGVDb25zdHJ1Y3RvckRlZmluaXRpb25zKFxAaW1wbENvbnRlbnQsICRjbGFzc05h
bWUsICRwcm90b0NsYXNzTmFtZSwgJGxlZ2FjeUZhY3RvcnlGdW5jdGlvbiwgJGludGVyZmFjZSwg
IkdlbmVyYXRpbmdMZWdhY3lGYWN0b3J5RnVuY3Rpb24iKSBpZiAkbGVnYWN5RmFjdG9yeUZ1bmN0
aW9uOwogICAgIH0KIAogICAgICMgLSBBZGQgZnVuY3Rpb25zIGFuZCBjb25zdGFudHMgdG8gYSBo
YXNodGFibGUgZGVmaW5pdGlvbgpAQCAtNDU1MCwxMCArNDU1MCwxMCBAQCBzdWIgR2VuZXJhdGVJ
bXBsZW1lbnRhdGlvbgogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gZ2V0
RE9NQ29uc3RydWN0b3I8JHtjbGFzc05hbWV9Q29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0
IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7XG4iKTsKICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICJ9XG5cbiIpOwogCi0gICAgICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPntOYW1lZENvbnN0cnVjdG9yfSkgewotICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICJKU1ZhbHVlICR7Y2xhc3NOYW1lfTo6Z2V0TmFtZWRDb25zdHJ1Y3RvcihWTSYg
dm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpXG4iKTsKKyAgICAgICAgaWYgKCRpbnRl
cmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0xlZ2FjeUZhY3RvcnlGdW5jdGlvbn0pIHsKKyAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiSlNWYWx1ZSAke2NsYXNzTmFtZX06OmdldExl
Z2FjeUZhY3RvcnlGdW5jdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qp
XG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7Ci0gICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8JHtjbGFz
c05hbWV9TmFtZWRDb25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihn
bG9iYWxPYmplY3QpKTtcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
cmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPCR7Y2xhc3NOYW1lfUxlZ2FjeUZhY3RvcnlGdW5jdGlv
bj4odm0sICpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTtcbiIpOwog
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOwogICAgICAgICB9CiAgICAg
fQpAQCAtNTAyNSwxNSArNTAyNSwxNyBAQCBzdWIgR2VuZXJhdGVBdHRyaWJ1dGVHZXR0ZXJCb2R5
RGVmaW5pdGlvCiAgICAgfSBlbHNpZiAoJGlzQ29uc3RydWN0b3IpIHsKICAgICAgICAgbXkgJGNv
bnN0cnVjdG9yVHlwZSA9ICRhdHRyaWJ1dGUtPnR5cGUtPm5hbWU7CiAgICAgICAgICRjb25zdHJ1
Y3RvclR5cGUgPX4gcy9Db25zdHJ1Y3RvciQvLzsKKworICAgICAgICBteSAkbGVnYWN5RmFjdG9y
eUZ1bmN0aW9uID0gKCRjb25zdHJ1Y3RvclR5cGUgPX4gL0xlZ2FjeUZhY3RvcnlGdW5jdGlvbiQv
KSA/ICJMZWdhY3lGYWN0b3J5RnVuY3Rpb24iIDogIiI7CisgICAgICAgICRsZWdhY3lGYWN0b3J5
RnVuY3Rpb24gPX4gcy9MZWdhY3lGYWN0b3J5RnVuY3Rpb24kLy87CisKICAgICAgICAgIyBXaGVu
IENvbnN0cnVjdG9yIGF0dHJpYnV0ZSBpcyB1c2VkIGJ5IERPTVdpbmRvdy5pZGwsIGl0J3MgY29y
cmVjdCB0byBwYXNzIHRoaXNPYmplY3QgYXMgdGhlIGdsb2JhbCBvYmplY3QKICAgICAgICAgIyBX
aGVuIEpTRE9NV3JhcHBlcnMgaGF2ZSBhIGJhY2stcG9pbnRlciB0byB0aGUgZ2xvYmFsT2JqZWN0
IHdlIGNhbiBwYXNzIHRoaXNPYmplY3QtPmdsb2JhbE9iamVjdCgpCiAgICAgICAgIGlmICgkaW50
ZXJmYWNlLT50eXBlLT5uYW1lIGVxICJET01XaW5kb3ciKSB7Ci0gICAgICAgICAgICBteSAkbmFt
ZWQgPSAoJGNvbnN0cnVjdG9yVHlwZSA9fiAvTmFtZWQkLykgPyAiTmFtZWQiIDogIiI7Ci0gICAg
ICAgICAgICAkY29uc3RydWN0b3JUeXBlID1+IHMvTmFtZWQkLy87Ci0gICAgICAgICAgICBwdXNo
KEAkb3V0cHV0QXJyYXksICIgICAgcmV0dXJuIEpTIiAuICRjb25zdHJ1Y3RvclR5cGUgLiAiOjpn
ZXQke25hbWVkfUNvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCAm
dGhpc09iamVjdCk7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBy
ZXR1cm4gSlMiIC4gJGNvbnN0cnVjdG9yVHlwZSAuICI6OmdldCR7bGVnYWN5RmFjdG9yeUZ1bmN0
aW9ufUNvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCAmdGhpc09i
amVjdCk7XG4iKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1
ZGVzKCJKUyIgLiAkY29uc3RydWN0b3JUeXBlIC4gIi5oIiwgJGNvbmRpdGlvbmFsKTsKLSAgICAg
ICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICByZXR1cm4gSlMiIC4gJGNvbnN0cnVjdG9y
VHlwZSAuICI6OmdldENvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3Qp
LCB0aGlzT2JqZWN0Lmdsb2JhbE9iamVjdCgpKTtcbiIpOworICAgICAgICAgICAgcHVzaChAJG91
dHB1dEFycmF5LCAiICAgIHJldHVybiBKUyIgLiAkY29uc3RydWN0b3JUeXBlIC4gIjo6Z2V0JHts
ZWdhY3lGYWN0b3J5RnVuY3Rpb259Q29uc3RydWN0b3IoSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCksIHRoaXNPYmplY3QuZ2xvYmFsT2JqZWN0KCkpO1xuIik7CiAgICAgICAgIH0KICAg
ICB9IGVsc2UgewogICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
Q2FjaGVkQXR0cmlidXRlfSkgewpAQCAtNTE4MiwxMCArNTE4NCwxMCBAQCBzdWIgR2VuZXJhdGVB
dHRyaWJ1dGVTZXR0ZXJCb2R5RGVmaW5pdGlvCiAgICAgfSBlbHNpZiAoJGlzQ29uc3RydWN0b3Ip
IHsKICAgICAgICAgbXkgJGNvbnN0cnVjdG9yVHlwZSA9ICRhdHRyaWJ1dGUtPnR5cGUtPm5hbWU7
CiAgICAgICAgICRjb25zdHJ1Y3RvclR5cGUgPX4gcy9Db25zdHJ1Y3RvciQvLzsKLSAgICAgICAg
IyAkY29uc3RydWN0b3JUeXBlIH49IC9Db25zdHJ1Y3RvciQvIGluZGljYXRlcyB0aGF0IGl0IGlz
IE5hbWVkQ29uc3RydWN0b3IuCi0gICAgICAgICMgV2UgZG8gbm90IGdlbmVyYXRlIHRoZSBoZWFk
ZXIgZmlsZSBmb3IgTmFtZWRDb25zdHJ1Y3RvciBvZiBjbGFzcyBYWFhYLAotICAgICAgICAjIHNp
bmNlIHdlIGdlbmVyYXRlIHRoZSBOYW1lZENvbnN0cnVjdG9yIGRlY2xhcmF0aW9uIGludG8gdGhl
IGhlYWRlciBmaWxlIG9mIGNsYXNzIFhYWFguCi0gICAgICAgIGlmICgkY29uc3RydWN0b3JUeXBl
IG5lICJhbnkiIGFuZCAkY29uc3RydWN0b3JUeXBlICF+IC9OYW1lZCQvKSB7CisgICAgICAgICMg
JGNvbnN0cnVjdG9yVHlwZSB+PSAvTGVnYWN5RmFjdG9yeUZ1bmN0aW9uJC8gaW5kaWNhdGVzIHRo
YXQgaXQgaXMgTGVnYWN5RmFjdG9yeUZ1bmN0aW9uLgorICAgICAgICAjIFdlIGRvIG5vdCBnZW5l
cmF0ZSB0aGUgaGVhZGVyIGZpbGUgZm9yIExlZ2FjeUZhY3RvcnlGdW5jdGlvbiBvZiBjbGFzcyBY
WFhYLAorICAgICAgICAjIHNpbmNlIHdlIGdlbmVyYXRlIHRoZSBMZWdhY3lGYWN0b3J5RnVuY3Rp
b24gZGVjbGFyYXRpb24gaW50byB0aGUgaGVhZGVyIGZpbGUgb2YgY2xhc3MgWFhYWC4KKyAgICAg
ICAgaWYgKCRjb25zdHJ1Y3RvclR5cGUgbmUgImFueSIgYW5kICRjb25zdHJ1Y3RvclR5cGUgIX4g
L0xlZ2FjeUZhY3RvcnlGdW5jdGlvbiQvKSB7CiAgICAgICAgICAgICBBZGRUb0ltcGxJbmNsdWRl
cygiSlMiIC4gJGNvbnN0cnVjdG9yVHlwZSAuICIuaCIsICRjb25kaXRpb25hbCk7CiAgICAgICAg
IH0KICAgICAgICAgbXkgJGlkID0gJGF0dHJpYnV0ZS0+bmFtZTsKQEAgLTU5MzMsNyArNTkzNSw3
IEBAIHN1YiBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjawogICAgIH0gZWxzZSB7CiAgICAgICAgICRx
dW90ZWRGdW5jdGlvbk5hbWUgPSAibnVsbHB0ciI7CiAgICAgICAgIHVubGVzcyAoJGNhbGxXaXRo
KSB7Ci0gICAgICAgICAgICAkY2FsbFdpdGggPSAkb3BlcmF0aW9uLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPntDb25zdHJ1Y3RvckNhbGxXaXRofTsKKyAgICAgICAgICAgICRjYWxsV2l0aCA9ICRvcGVy
YXRpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e0xlZ2FjeUZhY3RvcnlGdW5jdGlvbkNhbGxXaXRo
fTsKICAgICAgICAgfQogICAgICAgICBwdXNoKEBhcmd1bWVudHMsIEdlbmVyYXRlQ29uc3RydWN0
b3JDYWxsV2l0aFVzaW5nUG9pbnRlcnMoJGNhbGxXaXRoLCBcQCRvdXRwdXRBcnJheSwgJHZpc2li
bGVJbnRlcmZhY2VOYW1lLCAiKmNhc3RlZFRoaXMiKSk7CiAgICAgfQpAQCAtNzQxNCw3ICs3NDE2
LDcgQEAgc3ViIEdldENvbnN0cnVjdG9yVGVtcGxhdGVDbGFzc05hbWUKIHsKICAgICBteSAkaW50
ZXJmYWNlID0gc2hpZnQ7CiAgICAgcmV0dXJuICJKU0RPTUJ1aWx0aW5Db25zdHJ1Y3RvciIgaWYg
SGFzSlNCdWlsdGluQ29uc3RydWN0b3IoJGludGVyZmFjZSk7Ci0gICAgcmV0dXJuICJKU0RPTUNv
bnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZSIgaWYgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57TmFtZWRDb25zdHJ1Y3Rvcn07CisgICAgcmV0dXJuICJKU0RPTUNvbnN0cnVjdG9yTm90
Q29uc3RydWN0YWJsZSIgaWYgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57TGVnYWN5
RmFjdG9yeUZ1bmN0aW9ufTsKICAgICByZXR1cm4gIkpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1
Y3RhYmxlIiB1bmxlc3MgSXNDb25zdHJ1Y3RhYmxlKCRpbnRlcmZhY2UpOwogICAgIHJldHVybiAi
SlNET01Db25zdHJ1Y3RvciI7CiB9CkBAIC03NDI4LDIyICs3NDMwLDIyIEBAIHN1YiBHZW5lcmF0
ZUNvbnN0cnVjdG9yRGVjbGFyYXRpb24KICAgICBteSAkdGVtcGxhdGVDbGFzc05hbWUgPSBHZXRD
b25zdHJ1Y3RvclRlbXBsYXRlQ2xhc3NOYW1lKCRpbnRlcmZhY2UpOwogCiAgICAgQWRkVG9JbXBs
SW5jbHVkZXMoIiR7dGVtcGxhdGVDbGFzc05hbWV9LmgiKTsKLSAgICBBZGRUb0ltcGxJbmNsdWRl
cygiSlNET01OYW1lZENvbnN0cnVjdG9yLmgiKSBpZiAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPntOYW1lZENvbnN0cnVjdG9yfTsKKyAgICBBZGRUb0ltcGxJbmNsdWRlcygiSlNET01M
ZWdhY3lGYWN0b3J5RnVuY3Rpb24uaCIpIGlmICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRl
cy0+e0xlZ2FjeUZhY3RvcnlGdW5jdGlvbn07CiAKICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ1
c2luZyAkY29uc3RydWN0b3JDbGFzc05hbWUgPSAkdGVtcGxhdGVDbGFzc05hbWU8JGNsYXNzTmFt
ZT47XG4iKTsKLSAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ1c2luZyBKUyR7aW50ZXJmYWNlTmFt
ZX1OYW1lZENvbnN0cnVjdG9yID0gSlNET01OYW1lZENvbnN0cnVjdG9yPCRjbGFzc05hbWU+O1xu
IikgaWYgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57TmFtZWRDb25zdHJ1Y3Rvcn07
CisgICAgcHVzaChAJG91dHB1dEFycmF5LCAidXNpbmcgSlMke2ludGVyZmFjZU5hbWV9TGVnYWN5
RmFjdG9yeUZ1bmN0aW9uID0gSlNET01MZWdhY3lGYWN0b3J5RnVuY3Rpb248JGNsYXNzTmFtZT47
XG4iKSBpZiAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntMZWdhY3lGYWN0b3J5RnVu
Y3Rpb259OwogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIlxuIik7CiB9CiAKIHN1YiBHZW5lcmF0
ZUNvbnN0cnVjdG9yRGVmaW5pdGlvbnMKIHsKLSAgICBteSAoJG91dHB1dEFycmF5LCAkY2xhc3NO
YW1lLCAkcHJvdG9DbGFzc05hbWUsICR2aXNpYmxlSW50ZXJmYWNlTmFtZSwgJGludGVyZmFjZSwg
JGdlbmVyYXRpbmdOYW1lZENvbnN0cnVjdG9yKSA9IEBfOworICAgIG15ICgkb3V0cHV0QXJyYXks
ICRjbGFzc05hbWUsICRwcm90b0NsYXNzTmFtZSwgJHZpc2libGVJbnRlcmZhY2VOYW1lLCAkaW50
ZXJmYWNlLCAkZ2VuZXJhdGluZ0xlZ2FjeUZhY3RvcnlGdW5jdGlvbikgPSBAXzsKIAogICAgIGlm
IChJc0NvbnN0cnVjdGFibGUoJGludGVyZmFjZSkpIHsKICAgICAgICAgbXkgQGNvbnN0cnVjdG9y
cyA9IEB7JGludGVyZmFjZS0+Y29uc3RydWN0b3JzfTsKICAgICAgICAgaWYgKEBjb25zdHJ1Y3Rv
cnMgPiAxKSB7CiAgICAgICAgICAgICBmb3JlYWNoIG15ICRjb25zdHJ1Y3RvciAoQGNvbnN0cnVj
dG9ycykgewotICAgICAgICAgICAgICAgIEdlbmVyYXRlQ29uc3RydWN0b3JEZWZpbml0aW9uKCRv
dXRwdXRBcnJheSwgJGNsYXNzTmFtZSwgJHByb3RvQ2xhc3NOYW1lLCAkdmlzaWJsZUludGVyZmFj
ZU5hbWUsICRpbnRlcmZhY2UsICRnZW5lcmF0aW5nTmFtZWRDb25zdHJ1Y3RvciwgJGNvbnN0cnVj
dG9yKTsKKyAgICAgICAgICAgICAgICBHZW5lcmF0ZUNvbnN0cnVjdG9yRGVmaW5pdGlvbigkb3V0
cHV0QXJyYXksICRjbGFzc05hbWUsICRwcm90b0NsYXNzTmFtZSwgJHZpc2libGVJbnRlcmZhY2VO
YW1lLCAkaW50ZXJmYWNlLCAkZ2VuZXJhdGluZ0xlZ2FjeUZhY3RvcnlGdW5jdGlvbiwgJGNvbnN0
cnVjdG9yKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgbXkgJG92ZXJsb2FkRnVuY3Rp
b25QcmVmaXggPSAiY29uc3RydWN0JHtjbGFzc05hbWV9IjsKQEAgLTc0NTgsMjMgKzc0NjAsMjMg
QEAgc3ViIEdlbmVyYXRlQ29uc3RydWN0b3JEZWZpbml0aW9ucwogCiAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIn1cblxuIik7CiAgICAgICAgIH0gZWxzaWYgKEBjb25zdHJ1Y3RvcnMg
PT0gMSkgewotICAgICAgICAgICAgR2VuZXJhdGVDb25zdHJ1Y3RvckRlZmluaXRpb24oJG91dHB1
dEFycmF5LCAkY2xhc3NOYW1lLCAkcHJvdG9DbGFzc05hbWUsICR2aXNpYmxlSW50ZXJmYWNlTmFt
ZSwgJGludGVyZmFjZSwgJGdlbmVyYXRpbmdOYW1lZENvbnN0cnVjdG9yLCAkY29uc3RydWN0b3Jz
WzBdKTsKKyAgICAgICAgICAgIEdlbmVyYXRlQ29uc3RydWN0b3JEZWZpbml0aW9uKCRvdXRwdXRB
cnJheSwgJGNsYXNzTmFtZSwgJHByb3RvQ2xhc3NOYW1lLCAkdmlzaWJsZUludGVyZmFjZU5hbWUs
ICRpbnRlcmZhY2UsICRnZW5lcmF0aW5nTGVnYWN5RmFjdG9yeUZ1bmN0aW9uLCAkY29uc3RydWN0
b3JzWzBdKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIEdlbmVyYXRlQ29uc3RydWN0
b3JEZWZpbml0aW9uKCRvdXRwdXRBcnJheSwgJGNsYXNzTmFtZSwgJHByb3RvQ2xhc3NOYW1lLCAk
dmlzaWJsZUludGVyZmFjZU5hbWUsICRpbnRlcmZhY2UsICRnZW5lcmF0aW5nTmFtZWRDb25zdHJ1
Y3Rvcik7CisgICAgICAgICAgICBHZW5lcmF0ZUNvbnN0cnVjdG9yRGVmaW5pdGlvbigkb3V0cHV0
QXJyYXksICRjbGFzc05hbWUsICRwcm90b0NsYXNzTmFtZSwgJHZpc2libGVJbnRlcmZhY2VOYW1l
LCAkaW50ZXJmYWNlLCAkZ2VuZXJhdGluZ0xlZ2FjeUZhY3RvcnlGdW5jdGlvbik7CiAgICAgICAg
IH0KICAgICB9CiAKLSAgICBHZW5lcmF0ZUNvbnN0cnVjdG9ySGVscGVyTWV0aG9kcygkb3V0cHV0
QXJyYXksICRjbGFzc05hbWUsICRwcm90b0NsYXNzTmFtZSwgJHZpc2libGVJbnRlcmZhY2VOYW1l
LCAkaW50ZXJmYWNlLCAkZ2VuZXJhdGluZ05hbWVkQ29uc3RydWN0b3IpOworICAgIEdlbmVyYXRl
Q29uc3RydWN0b3JIZWxwZXJNZXRob2RzKCRvdXRwdXRBcnJheSwgJGNsYXNzTmFtZSwgJHByb3Rv
Q2xhc3NOYW1lLCAkdmlzaWJsZUludGVyZmFjZU5hbWUsICRpbnRlcmZhY2UsICRnZW5lcmF0aW5n
TGVnYWN5RmFjdG9yeUZ1bmN0aW9uKTsKIH0KIAogc3ViIEdlbmVyYXRlQ29uc3RydWN0b3JEZWZp
bml0aW9uCiB7Ci0gICAgbXkgKCRvdXRwdXRBcnJheSwgJGNsYXNzTmFtZSwgJHByb3RvQ2xhc3NO
YW1lLCAkdmlzaWJsZUludGVyZmFjZU5hbWUsICRpbnRlcmZhY2UsICRnZW5lcmF0aW5nTmFtZWRD
b25zdHJ1Y3RvciwgJG9wZXJhdGlvbikgPSBAXzsKKyAgICBteSAoJG91dHB1dEFycmF5LCAkY2xh
c3NOYW1lLCAkcHJvdG9DbGFzc05hbWUsICR2aXNpYmxlSW50ZXJmYWNlTmFtZSwgJGludGVyZmFj
ZSwgJGdlbmVyYXRpbmdMZWdhY3lGYWN0b3J5RnVuY3Rpb24sICRvcGVyYXRpb24pID0gQF87CiAK
ICAgICByZXR1cm4gaWYgSGFzSlNCdWlsdGluQ29uc3RydWN0b3IoJGludGVyZmFjZSk7CiAKICAg
ICBteSAkaW50ZXJmYWNlTmFtZSA9ICRpbnRlcmZhY2UtPnR5cGUtPm5hbWU7Ci0gICAgbXkgJGNv
bnN0cnVjdG9yQ2xhc3NOYW1lID0gJGdlbmVyYXRpbmdOYW1lZENvbnN0cnVjdG9yID8gIiR7Y2xh
c3NOYW1lfU5hbWVkQ29uc3RydWN0b3IiIDogIiR7Y2xhc3NOYW1lfUNvbnN0cnVjdG9yIjsKKyAg
ICBteSAkY29uc3RydWN0b3JDbGFzc05hbWUgPSAkZ2VuZXJhdGluZ0xlZ2FjeUZhY3RvcnlGdW5j
dGlvbiA/ICIke2NsYXNzTmFtZX1MZWdhY3lGYWN0b3J5RnVuY3Rpb24iIDogIiR7Y2xhc3NOYW1l
fUNvbnN0cnVjdG9yIjsKIAogICAgIGlmIChJc0NvbnN0cnVjdGFibGUoJGludGVyZmFjZSkpIHsK
ICAgICAgICAgaWYgKEhhc0N1c3RvbUNvbnN0cnVjdG9yKCRpbnRlcmZhY2UpKSB7CkBAIC03NDgz
LDcgKzc0ODUsNyBAQCBzdWIgR2VuZXJhdGVDb25zdHJ1Y3RvckRlZmluaXRpb24KICAgICAgICAg
ICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBBU1NFUlQoY2FsbEZyYW1lKTtcbiIpOwogICAg
ICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHJldHVybiBjb25zdHJ1Y3Qke2NsYXNz
TmFtZX0obGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSk7XG4iKTsKICAgICAgICAgICAg
IHB1c2goQCRvdXRwdXRBcnJheSwgIn1cblxuIik7Ci0gICAgICAgICB9IGVsc2lmICghSGFzQ3Vz
dG9tQ29uc3RydWN0b3IoJGludGVyZmFjZSkgJiYgKCEkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPntOYW1lZENvbnN0cnVjdG9yfSB8fCAkZ2VuZXJhdGluZ05hbWVkQ29uc3RydWN0b3Ip
KSB7CisgICAgICAgICB9IGVsc2lmICghSGFzQ3VzdG9tQ29uc3RydWN0b3IoJGludGVyZmFjZSkg
JiYgKCEkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntMZWdhY3lGYWN0b3J5RnVuY3Rp
b259IHx8ICRnZW5lcmF0aW5nTGVnYWN5RmFjdG9yeUZ1bmN0aW9uKSkgewogICAgICAgICAgICAg
bXkgJGlzT3ZlcmxvYWRlZCA9ICRvcGVyYXRpb24tPntvdmVybG9hZHN9ICYmIEB7JG9wZXJhdGlv
bi0+e292ZXJsb2Fkc319ID4gMTsKICAgICAgICAgICAgIGlmICgkaXNPdmVybG9hZGVkKSB7CiAg
ICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAic3RhdGljIGlubGluZSBFbmNvZGVk
SlNWYWx1ZSBjb25zdHJ1Y3Qke2NsYXNzTmFtZX0kb3BlcmF0aW9uLT57b3ZlcmxvYWRJbmRleH0o
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KVxuIik7CkBAIC03NTA3LDEyICs3NTA5LDEyIEBAIHN1YiBHZW5lcmF0ZUNvbnN0cnVjdG9yRGVm
aW5pdGlvbgogCiAgICAgICAgICAgICBHZW5lcmF0ZUFyZ3VtZW50c0NvdW50Q2hlY2soJG91dHB1
dEFycmF5LCAkb3BlcmF0aW9uLCAkaW50ZXJmYWNlLCAiICAgICIpOwogCi0gICAgICAgICAgICBt
eSAkZnVuY3Rpb25JbXBsZW1lbnRhdGlvbk5hbWUgPSAkZ2VuZXJhdGluZ05hbWVkQ29uc3RydWN0
b3IgPyAiY3JlYXRlRm9ySlNDb25zdHJ1Y3RvciIgOiAiY3JlYXRlIjsKKyAgICAgICAgICAgIG15
ICRmdW5jdGlvbkltcGxlbWVudGF0aW9uTmFtZSA9ICRnZW5lcmF0aW5nTGVnYWN5RmFjdG9yeUZ1
bmN0aW9uID8gImNyZWF0ZUZvckpTQ29uc3RydWN0b3IiIDogImNyZWF0ZSI7CiAgICAgICAgICAg
ICBteSAkZnVuY3Rpb25TdHJpbmcgPSBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjaygkb3V0cHV0QXJy
YXksICRvcGVyYXRpb24sICRpbnRlcmZhY2UsICRmdW5jdGlvbkltcGxlbWVudGF0aW9uTmFtZSwg
IiAgICAiKTsKIAogICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGF1dG8gb2Jq
ZWN0ID0gJHtmdW5jdGlvblN0cmluZ307XG4iKTsKICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRB
cnJheSwgIiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVl
KCkpO1xuIikgaWYgJGNvZGVHZW5lcmF0b3ItPkV4dGVuZGVkQXR0cmlidXRlQ29udGFpbnMoJGlu
dGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q2FsbFdpdGh9LCAiRXhlY1N0YXRlIik7Ci0g
ICAgICAgICAgICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q29uc3RydWN0
b3JNYXlUaHJvd0V4Y2VwdGlvbn0gfHwgJG9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
TWF5VGhyb3dFeGNlcHRpb259KSB7CisgICAgICAgICAgICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57TGVnYWN5RmFjdG9yeUZ1bmN0aW9uTWF5VGhyb3dFeGNlcHRpb259IHx8
ICRvcGVyYXRpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e01heVRocm93RXhjZXB0aW9ufSkgewog
ICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBzdGF0aWNfYXNzZXJ0KElz
RXhjZXB0aW9uT3I8ZGVjbHR5cGUob2JqZWN0KT46OnZhbHVlKTtcbiIpOwogICAgICAgICAgICAg
ICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBzdGF0aWNfYXNzZXJ0KGRlY2x0eXBlKG9iamVj
dCk6OlJldHVyblR5cGU6OmlzUmVmKTtcbiIpOwogICAgICAgICAgICAgfSBlbHNlIHsKQEAgLTc1
MjcsMTIgKzc1MjksMTIgQEAgc3ViIEdlbmVyYXRlQ29uc3RydWN0b3JEZWZpbml0aW9uCiAgICAg
ICAgICAgICBteSBAY29uc3RydWN0aW9uQ29udmVyc2lvbkFyZ3VtZW50cyA9ICgpOwogICAgICAg
ICAgICAgcHVzaChAY29uc3RydWN0aW9uQ29udmVyc2lvbkFyZ3VtZW50cywgIipsZXhpY2FsR2xv
YmFsT2JqZWN0Iik7CiAgICAgICAgICAgICBwdXNoKEBjb25zdHJ1Y3Rpb25Db252ZXJzaW9uQXJn
dW1lbnRzLCAiKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpIik7Ci0gICAgICAgICAgICBwdXNo
KEBjb25zdHJ1Y3Rpb25Db252ZXJzaW9uQXJndW1lbnRzLCAidGhyb3dTY29wZSIpIGlmICRpbnRl
cmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NvbnN0cnVjdG9yTWF5VGhyb3dFeGNlcHRpb259
IHx8ICRvcGVyYXRpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e01heVRocm93RXhjZXB0aW9ufTsK
KyAgICAgICAgICAgIHB1c2goQGNvbnN0cnVjdGlvbkNvbnZlcnNpb25Bcmd1bWVudHMsICJ0aHJv
d1Njb3BlIikgaWYgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57TGVnYWN5RmFjdG9y
eUZ1bmN0aW9uTWF5VGhyb3dFeGNlcHRpb259IHx8ICRvcGVyYXRpb24tPmV4dGVuZGVkQXR0cmli
dXRlcy0+e01heVRocm93RXhjZXB0aW9ufTsKICAgICAgICAgICAgIHB1c2goQGNvbnN0cnVjdGlv
bkNvbnZlcnNpb25Bcmd1bWVudHMsICJXVEZNb3ZlKG9iamVjdCkiKTsKIAogICAgICAgICAgICAg
IyBGSVhNRTogdG9KU05ld2x5Q3JlYXRlZCBzaG91bGQgcmV0dXJuIEpTT2JqZWN0KiBpbnN0ZWFk
IG9mIEpTVmFsdWUuCiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgYXV0byBq
c1ZhbHVlID0gdG9KU05ld2x5Q3JlYXRlZDwke0lETFR5cGV9PigiIC4gam9pbigiLCAiLCBAY29u
c3RydWN0aW9uQ29udmVyc2lvbkFyZ3VtZW50cykgLiAiKTtcbiIpOwotICAgICAgICAgICAgcHVz
aChAJG91dHB1dEFycmF5LCAiICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9
KTtcbiIpIGlmICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NvbnN0cnVjdG9yTWF5
VGhyb3dFeGNlcHRpb259IHx8ICRvcGVyYXRpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e01heVRo
cm93RXhjZXB0aW9ufTsKKyAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7XG4iKSBpZiAkaW50ZXJmYWNlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPntMZWdhY3lGYWN0b3J5RnVuY3Rpb25NYXlUaHJvd0V4Y2VwdGlvbn0g
fHwgJG9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57TWF5VGhyb3dFeGNlcHRpb259Owog
ICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHNldFN1YmNsYXNzU3RydWN0dXJl
SWZOZWVkZWQ8JHtpbXBsVHlwZX0+KGxleGljYWxHbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgYXNP
YmplY3QoanNWYWx1ZSkpO1xuIik7CiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pO1xuIik7CiAgICAgICAgICAg
ICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1ZhbHVl
KTtcbiIpOwpAQCAtNzYwMyw5ICs3NjA1LDkgQEAgc3ViIEdldFJ1bnRpbWVFbmFibGVkU3RhdGlj
UHJvcGVydGllcwogCiBzdWIgR2VuZXJhdGVDb25zdHJ1Y3RvckhlbHBlck1ldGhvZHMKIHsKLSAg
ICBteSAoJG91dHB1dEFycmF5LCAkY2xhc3NOYW1lLCAkcHJvdG9DbGFzc05hbWUsICR2aXNpYmxl
SW50ZXJmYWNlTmFtZSwgJGludGVyZmFjZSwgJGdlbmVyYXRpbmdOYW1lZENvbnN0cnVjdG9yKSA9
IEBfOworICAgIG15ICgkb3V0cHV0QXJyYXksICRjbGFzc05hbWUsICRwcm90b0NsYXNzTmFtZSwg
JHZpc2libGVJbnRlcmZhY2VOYW1lLCAkaW50ZXJmYWNlLCAkZ2VuZXJhdGluZ0xlZ2FjeUZhY3Rv
cnlGdW5jdGlvbikgPSBAXzsKIAotICAgIG15ICRjb25zdHJ1Y3RvckNsYXNzTmFtZSA9ICRnZW5l
cmF0aW5nTmFtZWRDb25zdHJ1Y3RvciA/ICIke2NsYXNzTmFtZX1OYW1lZENvbnN0cnVjdG9yIiA6
ICIke2NsYXNzTmFtZX1Db25zdHJ1Y3RvciI7CisgICAgbXkgJGNvbnN0cnVjdG9yQ2xhc3NOYW1l
ID0gJGdlbmVyYXRpbmdMZWdhY3lGYWN0b3J5RnVuY3Rpb24gPyAiJHtjbGFzc05hbWV9TGVnYWN5
RmFjdG9yeUZ1bmN0aW9uIiA6ICIke2NsYXNzTmFtZX1Db25zdHJ1Y3RvciI7CiAgICAgbXkgJGxl
YXN0Q29uc3RydWN0b3JMZW5ndGggPSAwOwogICAgIGlmIChAeyRpbnRlcmZhY2UtPmNvbnN0cnVj
dG9yc30gPiAwKSB7CiAgICAgICAgICRsZWFzdENvbnN0cnVjdG9yTGVuZ3RoID0gMjU1OwpAQCAt
NzYyNCw3ICs3NjI2LDcgQEAgc3ViIEdlbmVyYXRlQ29uc3RydWN0b3JIZWxwZXJNZXRob2RzCiAK
ICAgICBhc3NlcnQoIkFuIGludGVyZmFjZSBjYW5ub3QgaW5oZXJpdCBmcm9tIGFub3RoZXIgaW50
ZXJmYWNlIHRoYXQgaXMgbWFya2VkIGFzIFtOb0ludGVyZmFjZU9iamVjdF0iKSBpZiAkaW50ZXJm
YWNlLT5wYXJlbnRUeXBlICYmICRjb2RlR2VuZXJhdG9yLT5HZXRJbnRlcmZhY2VFeHRlbmRlZEF0
dHJpYnV0ZXNGcm9tTmFtZSgkaW50ZXJmYWNlLT5wYXJlbnRUeXBlLT5uYW1lKS0+e05vSW50ZXJm
YWNlT2JqZWN0fTsKIAotICAgIGlmICghJGdlbmVyYXRpbmdOYW1lZENvbnN0cnVjdG9yIGFuZCAk
aW50ZXJmYWNlLT5wYXJlbnRUeXBlKSB7CisgICAgaWYgKCEkZ2VuZXJhdGluZ0xlZ2FjeUZhY3Rv
cnlGdW5jdGlvbiBhbmQgJGludGVyZmFjZS0+cGFyZW50VHlwZSkgewogICAgICAgICBteSAkcGFy
ZW50Q2xhc3NOYW1lID0gIkpTIiAuICRpbnRlcmZhY2UtPnBhcmVudFR5cGUtPm5hbWU7CiAgICAg
ICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICByZXR1cm4gJHtwYXJlbnRDbGFzc05hbWV9Ojpn
ZXRDb25zdHJ1Y3Rvcih2bSwgJmdsb2JhbE9iamVjdCk7XG4iKTsKICAgICB9IGVsc2UgewpAQCAt
NzY1Miw3ICs3NjU0LDcgQEAgc3ViIEdlbmVyYXRlQ29uc3RydWN0b3JIZWxwZXJNZXRob2RzCiAg
ICAgYXNzZXJ0KCJqc05vbnRyaXZpYWxTdHJpbmcoKSByZXF1aXJlcyBzdHJpbmdzIHR3byBvciBt
b3JlIGNoYXJhY3RlcnMgbG9uZyIpIGlmIGxlbmd0aCgkdmlzaWJsZUludGVyZmFjZU5hbWUpIDwg
MjsKICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIFwiJHZpc2libGVJbnRlcmZhY2VO
YW1lXCJfcyksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0pO1xuIik7CiAKLSAgICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57Q29uc3RydWN0b3JFbmFibGVkQnlTZXR0aW5nfSkgeworICAgIGlmICgk
aW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntMZWdhY3lGYWN0b3J5RnVuY3Rpb25FbmFi
bGVkQnlTZXR0aW5nfSkgewogICAgICAgICBteSAkcnVudGltZUVuYWJsZUNvbmRpdGlvbmFsU3Ry
aW5nID0gR2VuZXJhdGVSdW50aW1lRW5hYmxlQ29uZGl0aW9uYWxTdHJpbmcoJGludGVyZmFjZSwg
JGludGVyZmFjZSwgIiZnbG9iYWxPYmplY3QiKTsKICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5
LCAiICAgIGludCBjb25zdHJ1Y3Rvckxlbmd0aCA9ICR7bGVhc3RDb25zdHJ1Y3Rvckxlbmd0aH07
XG4iKTsKICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGlmICghJHtydW50aW1lRW5h
YmxlQ29uZGl0aW9uYWxTdHJpbmd9KVxuIik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMuanNvbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMuanNvbgkocmV2aXNpb24gMjY2NTU5KQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLmpzb24JKHdv
cmtpbmcgY29weSkKQEAgLTcyLDI1ICs3Miw2IEBACiAgICAgICAgICAgICAiY29udGV4dHNBbGxv
d2VkIjogWyJpbnRlcmZhY2UiXSwKICAgICAgICAgICAgICJ2YWx1ZXMiOiBbIioiXQogICAgICAg
ICB9LAotICAgICAgICAiQ29uc3RydWN0b3IiOiB7Ci0gICAgICAgICAgICAiY29udGV4dHNBbGxv
d2VkIjogWyJpbnRlcmZhY2UiXSwKLSAgICAgICAgICAgICJzdGFuZGFyZCI6IHsKLSAgICAgICAg
ICAgICAgICAidXJsIjogImh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI0NvbnN0cnVj
dG9yIgotICAgICAgICAgICAgfQotICAgICAgICB9LAotICAgICAgICAiQ29uc3RydWN0b3JDYWxs
V2l0aCI6IHsKLSAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImludGVyZmFjZSJdLAot
ICAgICAgICAgICAgInZhbHVlcyI6IFsiRG9jdW1lbnQiLCAiRXhlY1N0YXRlIiwgIlJ1bnRpbWVG
bGFncyIsICJTY3JpcHRFeGVjdXRpb25Db250ZXh0Il0sCi0gICAgICAgICAgICAic3VwcG9ydHND
b25qdW5jdGlvbiI6IHRydWUKLSAgICAgICAgfSwKLSAgICAgICAgIkNvbnN0cnVjdG9yRW5hYmxl
ZEJ5U2V0dGluZyI6IHsKLSAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImF0dHJpYnV0
ZSIsICJpbnRlcmZhY2UiXSwKLSAgICAgICAgICAgICJ2YWx1ZXMiOiBbIioiXSwKLSAgICAgICAg
ICAgICJzdXBwb3J0c0Nvbmp1bmN0aW9uIjogdHJ1ZQotICAgICAgICB9LAotICAgICAgICAiQ29u
c3RydWN0b3JNYXlUaHJvd0V4Y2VwdGlvbiI6IHsKLSAgICAgICAgICAgICJjb250ZXh0c0FsbG93
ZWQiOiBbImludGVyZmFjZSJdCi0gICAgICAgIH0sCiAgICAgICAgICJDb250ZXh0QWxsb3dzTWVk
aWFEZXZpY2VzIjogewogICAgICAgICAgICAgImNvbnRleHRzQWxsb3dlZCI6IFsiYXR0cmlidXRl
Il0KICAgICAgICAgfSwKQEAgLTI5Nyw2ICsyNzgsMjYgQEAKICAgICAgICAgICAgIH0sCiAgICAg
ICAgICAgICAidW5zdXBwb3J0ZWQiOiB0cnVlCiAgICAgICAgIH0sCisgICAgICAgICJMZWdhY3lG
YWN0b3J5RnVuY3Rpb24iOiB7CisgICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJpbnRl
cmZhY2UiXSwKKyAgICAgICAgICAgICJ2YWx1ZXMiOiBbIioiXSwKKyAgICAgICAgICAgICJzdGFu
ZGFyZCI6IHsKKyAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5p
by93ZWJpZGwvI0xlZ2FjeUZhY3RvcnlGdW5jdGlvbiIKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fSwKKyAgICAgICAgIkxlZ2FjeUZhY3RvcnlGdW5jdGlvbkNhbGxXaXRoIjogeworICAgICAgICAg
ICAgImNvbnRleHRzQWxsb3dlZCI6IFsiaW50ZXJmYWNlIl0sCisgICAgICAgICAgICAidmFsdWVz
IjogWyJEb2N1bWVudCIsICJFeGVjU3RhdGUiLCAiUnVudGltZUZsYWdzIiwgIlNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQiXSwKKyAgICAgICAgICAgICJzdXBwb3J0c0Nvbmp1bmN0aW9uIjogdHJ1ZQor
ICAgICAgICB9LAorICAgICAgICAiTGVnYWN5RmFjdG9yeUZ1bmN0aW9uRW5hYmxlZEJ5U2V0dGlu
ZyI6IHsKKyAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImF0dHJpYnV0ZSIsICJpbnRl
cmZhY2UiXSwKKyAgICAgICAgICAgICJ2YWx1ZXMiOiBbIioiXSwKKyAgICAgICAgICAgICJzdXBw
b3J0c0Nvbmp1bmN0aW9uIjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAiTGVnYWN5RmFjdG9y
eUZ1bmN0aW9uTWF5VGhyb3dFeGNlcHRpb24iOiB7CisgICAgICAgICAgICAiY29udGV4dHNBbGxv
d2VkIjogWyJpbnRlcmZhY2UiXQorICAgICAgICB9LAogICAgICAgICAiTGVnYWN5VW5lbnVtZXJh
YmxlTmFtZWRQcm9wZXJ0aWVzIjogewogICAgICAgICAgICAgImNvbnRleHRzQWxsb3dlZCI6IFsi
aW50ZXJmYWNlIl0sCiAgICAgICAgICAgICAic3RhbmRhcmQiOiB7CkBAIC0zMjksMTMgKzMzMCw2
IEBACiAgICAgICAgICJNYXlUaHJvd0V4Y2VwdGlvbiI6IHsKICAgICAgICAgICAgICJjb250ZXh0
c0FsbG93ZWQiOiBbImF0dHJpYnV0ZSIsICJvcGVyYXRpb24iXQogICAgICAgICB9LAotICAgICAg
ICAiTmFtZWRDb25zdHJ1Y3RvciI6IHsKLSAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBb
ImludGVyZmFjZSJdLAotICAgICAgICAgICAgInZhbHVlcyI6IFsiKiJdLAotICAgICAgICAgICAg
InN0YW5kYXJkIjogewotICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9oZXljYW0uZ2l0
aHViLmlvL3dlYmlkbC8jTmFtZWRDb25zdHJ1Y3RvciIKLSAgICAgICAgICAgIH0KLSAgICAgICAg
fSwKICAgICAgICAgIk5ld0ltcHVyZVByb3BlcnR5RmlyZXNXYXRjaHBvaW50cyI6IHsKICAgICAg
ICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImludGVyZmFjZSJdCiAgICAgICAgIH0sCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETFBhcnNlci5wbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETFBhcnNlci5wbQkocmV2aXNp
b24gMjY2NTU5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIu
cG0JKHdvcmtpbmcgY29weSkKQEAgLTMzODcsMTYgKzMzODcsMTYgQEAgc3ViIGFwcGx5RXh0ZW5k
ZWRBdHRyaWJ1dGVMaXN0CiAgICAgbXkgJGludGVyZmFjZSA9IHNoaWZ0OwogICAgIG15ICRleHRl
bmRlZEF0dHJpYnV0ZUxpc3QgPSBzaGlmdDsKIAotICAgIGlmIChkZWZpbmVkICRleHRlbmRlZEF0
dHJpYnV0ZUxpc3QtPnsiTmFtZWRDb25zdHJ1Y3RvciJ9KSB7CisgICAgaWYgKGRlZmluZWQgJGV4
dGVuZGVkQXR0cmlidXRlTGlzdC0+eyJMZWdhY3lGYWN0b3J5RnVuY3Rpb24ifSkgewogICAgICAg
ICBteSAkbmV3RGF0YU5vZGUgPSBJRExPcGVyYXRpb24tPm5ldygpOwogICAgICAgICAkbmV3RGF0
YU5vZGUtPmlzQ29uc3RydWN0b3IoMSk7Ci0gICAgICAgICRuZXdEYXRhTm9kZS0+bmFtZSgiTmFt
ZWRDb25zdHJ1Y3RvciIpOworICAgICAgICAkbmV3RGF0YU5vZGUtPm5hbWUoIkxlZ2FjeUZhY3Rv
cnlGdW5jdGlvbiIpOwogICAgICAgICAkbmV3RGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcygk
ZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0KTsKLSAgICAgICAgbXkgJWF0dHJpYnV0ZXMgPSAleyRleHRl
bmRlZEF0dHJpYnV0ZUxpc3QtPnsiTmFtZWRDb25zdHJ1Y3RvciJ9fTsKKyAgICAgICAgbXkgJWF0
dHJpYnV0ZXMgPSAleyRleHRlbmRlZEF0dHJpYnV0ZUxpc3QtPnsiTGVnYWN5RmFjdG9yeUZ1bmN0
aW9uIn19OwogICAgICAgICBteSBAYXR0cmlidXRlS2V5cyA9IGtleXMgKCVhdHRyaWJ1dGVzKTsK
ICAgICAgICAgbXkgJGNvbnN0cnVjdG9yTmFtZSA9ICRhdHRyaWJ1dGVLZXlzWzBdOwogICAgICAg
ICBwdXNoKEB7JG5ld0RhdGFOb2RlLT5hcmd1bWVudHN9LCBAeyRhdHRyaWJ1dGVzeyRjb25zdHJ1
Y3Rvck5hbWV9fSk7Ci0gICAgICAgICRleHRlbmRlZEF0dHJpYnV0ZUxpc3QtPnsiTmFtZWRDb25z
dHJ1Y3RvciJ9ID0gJGNvbnN0cnVjdG9yTmFtZTsKKyAgICAgICAgJGV4dGVuZGVkQXR0cmlidXRl
TGlzdC0+eyJMZWdhY3lGYWN0b3J5RnVuY3Rpb24ifSA9ICRjb25zdHJ1Y3Rvck5hbWU7CiAgICAg
ICAgIHB1c2goQHskaW50ZXJmYWNlLT5jb25zdHJ1Y3RvcnN9LCAkbmV3RGF0YU5vZGUpOwogICAg
IH0KICAgICAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvcHJlcHJvY2Vz
cy1pZGxzLnBsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
cHJlcHJvY2Vzcy1pZGxzLnBsCShyZXZpc2lvbiAyNjY1NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3ByZXByb2Nlc3MtaWRscy5wbAkod29ya2luZyBjb3B5KQpAQCAtMzEx
LDcgKzMxMSw3IEBAIHN1YiBHZW5lcmF0ZUNvbnN0cnVjdG9yQXR0cmlidXRlcwogICAgICAgbmV4
dCB1bmxlc3MgKCRhdHRyaWJ1dGVOYW1lIGVxICJDb25kaXRpb25hbCIgfHwgJGF0dHJpYnV0ZU5h
bWUgZXEgIkVuYWJsZWRBdFJ1bnRpbWUiIHx8ICRhdHRyaWJ1dGVOYW1lIGVxICJFbmFibGVkRm9y
V29ybGQiCiAgICAgICAgIHx8ICRhdHRyaWJ1dGVOYW1lIGVxICJFbmFibGVkQnlTZXR0aW5nIiB8
fCAkYXR0cmlidXRlTmFtZSBlcSAiU2VjdXJlQ29udGV4dCIgfHwgJGF0dHJpYnV0ZU5hbWUgZXEg
IlByaXZhdGVJZGVudGlmaWVyIgogICAgICAgICB8fCAkYXR0cmlidXRlTmFtZSBlcSAiUHVibGlj
SWRlbnRpZmllciIgfHwgJGF0dHJpYnV0ZU5hbWUgZXEgIkRpc2FibGVkQnlRdWlyayIgfHwgJGF0
dHJpYnV0ZU5hbWUgZXEgIkVuYWJsZWRCeVF1aXJrIgotICAgICAgICB8fCAkYXR0cmlidXRlTmFt
ZSBlcSAiRW5hYmxlZEZvckNvbnRleHQiIHx8ICRhdHRyaWJ1dGVOYW1lIGVxICJDdXN0b21FbmFi
bGVkIikgfHwgJGF0dHJpYnV0ZU5hbWUgZXEgIkNvbnN0cnVjdG9yRW5hYmxlZEJ5U2V0dGluZyI7
CisgICAgICAgIHx8ICRhdHRyaWJ1dGVOYW1lIGVxICJFbmFibGVkRm9yQ29udGV4dCIgfHwgJGF0
dHJpYnV0ZU5hbWUgZXEgIkN1c3RvbUVuYWJsZWQiKSB8fCAkYXR0cmlidXRlTmFtZSBlcSAiTGVn
YWN5RmFjdG9yeUZ1bmN0aW9uRW5hYmxlZEJ5U2V0dGluZyI7CiAgICAgICBteSAkZXh0ZW5kZWRB
dHRyaWJ1dGUgPSAkYXR0cmlidXRlTmFtZTsKICAgICAgICRleHRlbmRlZEF0dHJpYnV0ZSAuPSAi
PSIgLiAkZXh0ZW5kZWRBdHRyaWJ1dGVzLT57JGF0dHJpYnV0ZU5hbWV9IHVubGVzcyAkZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57JGF0dHJpYnV0ZU5hbWV9IGVxICJWQUxVRV9JU19NSVNTSU5HIjsKICAg
ICAgIHB1c2goQGV4dGVuZGVkQXR0cmlidXRlc0xpc3QsICRleHRlbmRlZEF0dHJpYnV0ZSk7CkBA
IC0zMjIsMTQgKzMyMiwxNCBAQCBzdWIgR2VuZXJhdGVDb25zdHJ1Y3RvckF0dHJpYnV0ZXMKICAg
ICAkaW50ZXJmYWNlTmFtZSA9ICRleHRlbmRlZEF0dHJpYnV0ZXMtPnsiSW50ZXJmYWNlTmFtZSJ9
IGlmICRleHRlbmRlZEF0dHJpYnV0ZXMtPnsiSW50ZXJmYWNlTmFtZSJ9OwogICAgICRjb2RlIC49
ICJhdHRyaWJ1dGUgIiAuICRvcmlnaW5hbEludGVyZmFjZU5hbWUgLiAiQ29uc3RydWN0b3IgJGlu
dGVyZmFjZU5hbWU7XG4iOwogCi0gICAgIyBJbiBhZGRpdGlvbiB0byB0aGUgcmVndWxhciBwcm9w
ZXJ0eSwgZm9yIGV2ZXJ5IFtOYW1lZENvbnN0cnVjdG9yXSBleHRlbmRlZCBhdHRyaWJ1dGUgb24g
YW4gaW50ZXJmYWNlLAorICAgICMgSW4gYWRkaXRpb24gdG8gdGhlIHJlZ3VsYXIgcHJvcGVydHks
IGZvciBldmVyeSBbTGVnYWN5RmFjdG9yeUZ1bmN0aW9uXSBleHRlbmRlZCBhdHRyaWJ1dGUgb24g
YW4gaW50ZXJmYWNlLAogICAgICMgYSBjb3JyZXNwb25kaW5nIHByb3BlcnR5IE1VU1QgZXhpc3Qg
b24gdGhlIEVDTUFTY3JpcHQgZ2xvYmFsIG9iamVjdC4KLSAgICBpZiAoJGV4dGVuZGVkQXR0cmli
dXRlcy0+eyJOYW1lZENvbnN0cnVjdG9yIn0pIHsKLSAgICAgICAgbXkgJGNvbnN0cnVjdG9yTmFt
ZSA9ICRleHRlbmRlZEF0dHJpYnV0ZXMtPnsiTmFtZWRDb25zdHJ1Y3RvciJ9OworICAgIGlmICgk
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkxlZ2FjeUZhY3RvcnlGdW5jdGlvbiJ9KSB7CisgICAgICAg
IG15ICRjb25zdHJ1Y3Rvck5hbWUgPSAkZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkxlZ2FjeUZhY3Rv
cnlGdW5jdGlvbiJ9OwogICAgICAgICAkY29uc3RydWN0b3JOYW1lID1+IHMvXCguKi8vZzsgIyBF
eHRyYWN0IGZ1bmN0aW9uIG5hbWUuCiAgICAgICAgICRjb2RlIC49ICIgICAgIjsKICAgICAgICAg
JGNvZGUgLj0gIlsiIC4gam9pbignLCAnLCBAZXh0ZW5kZWRBdHRyaWJ1dGVzTGlzdCkgLiAiXSAi
IGlmIEBleHRlbmRlZEF0dHJpYnV0ZXNMaXN0OwotICAgICAgICAkY29kZSAuPSAiYXR0cmlidXRl
ICIgLiAkb3JpZ2luYWxJbnRlcmZhY2VOYW1lIC4gIk5hbWVkQ29uc3RydWN0b3IgJGNvbnN0cnVj
dG9yTmFtZTtcbiI7CisgICAgICAgICRjb2RlIC49ICJhdHRyaWJ1dGUgIiAuICRvcmlnaW5hbElu
dGVyZmFjZU5hbWUgLiAiTGVnYWN5RmFjdG9yeUZ1bmN0aW9uQ29uc3RydWN0b3IgJGNvbnN0cnVj
dG9yTmFtZTtcbiI7CiAgICAgfQogICAgIAogICAgIG15ICR3aW5kb3dBbGlhc2VzQ29kZTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9TdXBwbGVtZW50YWxEZXBl
bmRlbmNpZXMuZGVwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9TdXBwbGVtZW50YWxEZXBlbmRlbmNpZXMuZGVwCShyZXZpc2lvbiAyNjY1NTkpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvU3VwcGxlbWVudGFsRGVwZW5k
ZW5jaWVzLmRlcAkod29ya2luZyBjb3B5KQpAQCAtOTEsNiArOTEsOSBAQCBXZWJET01UZXN0SXRl
cmFibGUuaDogCiBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5oOiAKIERPTVRlc3RKU0J1aWx0
aW5Db25zdHJ1Y3Rvci5oOiAKIFdlYkRPTVRlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5oOiAKK0pT
VGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbi5oOiAKK0RPTVRlc3RMZWdhY3lGYWN0b3J5RnVuY3Rp
b24uaDogCitXZWJET01UZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uLmg6IAogSlNUZXN0TWFwTGlr
ZS5oOiAKIERPTVRlc3RNYXBMaWtlLmg6IAogV2ViRE9NVGVzdE1hcExpa2UuaDogCkBAIC0xMDMs
OSArMTA2LDYgQEAgV2ViRE9NVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRQogSlNU
ZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuaDogCiBET01UZXN0TmFtZWRB
bmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuaDogCiBXZWJET01UZXN0TmFtZWRBbmRJbmRl
eGVkU2V0dGVyV2l0aElkZW50aWZpZXIuaDogCi1KU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmg6IAot
RE9NVGVzdE5hbWVkQ29uc3RydWN0b3IuaDogCi1XZWJET01UZXN0TmFtZWRDb25zdHJ1Y3Rvci5o
OiAKIEpTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllci5oOiAKIERPTVRlc3ROYW1lZERlbGV0
ZXJOb0lkZW50aWZpZXIuaDogCiBXZWJET01UZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyLmg6
IApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RMZWdhY3lG
YWN0b3J5RnVuY3Rpb24uaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9UZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uLmlkbAkocmV2aXNpb24gMjY2
NTU5KQkoZnJvbSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE5hbWVk
Q29uc3RydWN0b3IuaWRsOjI2NjU1OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9UZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uLmlkbAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDM3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtc3RyQXJnLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBp
dHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFc3RyQXJnLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworLy8gVGhpcyBJREwgZmlsZSBpcyBmb3IgdGVzdGluZyB0aGUgYmluZGlu
Z3MgY29kZSBnZW5lcmF0b3IgYW5kIGZvciB0cmFja2luZworLy8gY2hhbmdlcyBpbiBpdHMgb3Vw
dXQuCitbCisgICAgQWN0aXZlRE9NT2JqZWN0LAorICAgIE5hbWVkQ29uc3RydWN0b3I9QXVkaW8o
RE9NU3RyaW5nIHN0cjEsIG9wdGlvbmFsIERPTVN0cmluZyBzdHIyID0gImRlZmF1bHRTdHJpbmci
LCBvcHRpb25hbCBET01TdHJpbmcgc3RyMyksCisgICAgQ29uc3RydWN0b3JDYWxsV2l0aD1Eb2N1
bWVudCwKKyAgICBDb25zdHJ1Y3Rvck1heVRocm93RXhjZXB0aW9uCitdIGludGVyZmFjZSBUZXN0
TmFtZWRDb25zdHJ1Y3RvciB7Cit9OwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24uaWRsCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0TGVnYWN5RmFjdG9yeUZ1bmN0
aW9uLmlkbAkocmV2aXNpb24gMjY2NTU5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24uaWRsCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zdHJBcmcsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0z
MCw4ICszMSw4IEBACiAvLyBjaGFuZ2VzIGluIGl0cyBvdXB1dC4KIFsKICAgICBBY3RpdmVET01P
YmplY3QsCi0gICAgTmFtZWRDb25zdHJ1Y3Rvcj1BdWRpbyhET01TdHJpbmcgc3RyMSwgb3B0aW9u
YWwgRE9NU3RyaW5nIHN0cjIgPSAiZGVmYXVsdFN0cmluZyIsIG9wdGlvbmFsIERPTVN0cmluZyBz
dHIzKSwKLSAgICBDb25zdHJ1Y3RvckNhbGxXaXRoPURvY3VtZW50LAotICAgIENvbnN0cnVjdG9y
TWF5VGhyb3dFeGNlcHRpb24KLV0gaW50ZXJmYWNlIFRlc3ROYW1lZENvbnN0cnVjdG9yIHsKKyAg
ICBMZWdhY3lGYWN0b3J5RnVuY3Rpb249QXVkaW8oRE9NU3RyaW5nIHN0cjEsIG9wdGlvbmFsIERP
TVN0cmluZyBzdHIyID0gImRlZmF1bHRTdHJpbmciLCBvcHRpb25hbCBET01TdHJpbmcgc3RyMyks
CisgICAgTGVnYWN5RmFjdG9yeUZ1bmN0aW9uQ2FsbFdpdGg9RG9jdW1lbnQsCisgICAgTGVnYWN5
RmFjdG9yeUZ1bmN0aW9uTWF5VGhyb3dFeGNlcHRpb24KK10gaW50ZXJmYWNlIFRlc3RMZWdhY3lG
YWN0b3J5RnVuY3Rpb24gewogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9UZXN0TmFtZWRDb25zdHJ1Y3Rvci5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3ROYW1lZENvbnN0cnVjdG9yLmlkbAkocmV2
aXNpb24gMjY2NTU5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rl
c3ROYW1lZENvbnN0cnVjdG9yLmlkbAkobm9uZXhpc3RlbnQpCkBAIC0xLDM3ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
dHJBcmcsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUg
SW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAg
ICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRT
IENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVzdHJBcmcsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAot
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0v
LyBUaGlzIElETCBmaWxlIGlzIGZvciB0ZXN0aW5nIHRoZSBiaW5kaW5ncyBjb2RlIGdlbmVyYXRv
ciBhbmQgZm9yIHRyYWNraW5nCi0vLyBjaGFuZ2VzIGluIGl0cyBvdXB1dC4KLVsKLSAgICBBY3Rp
dmVET01PYmplY3QsCi0gICAgTmFtZWRDb25zdHJ1Y3Rvcj1BdWRpbyhET01TdHJpbmcgc3RyMSwg
b3B0aW9uYWwgRE9NU3RyaW5nIHN0cjIgPSAiZGVmYXVsdFN0cmluZyIsIG9wdGlvbmFsIERPTVN0
cmluZyBzdHIzKSwKLSAgICBDb25zdHJ1Y3RvckNhbGxXaXRoPURvY3VtZW50LAotICAgIENvbnN0
cnVjdG9yTWF5VGhyb3dFeGNlcHRpb24KLV0gaW50ZXJmYWNlIFRlc3ROYW1lZENvbnN0cnVjdG9y
IHsKLX07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0R2xvYmFsT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0LmNwcAkocmV2aXNpb24gMjY2NTU5
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdsb2Jh
bE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzLDEyICs1MywxMiBAQAogI2luY2x1ZGUg
IkpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlLmgiCiAjaW5jbHVkZSAiSlNUZXN0SXRl
cmFibGUuaCIKICNpbmNsdWRlICJKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5oIgorI2luY2x1
ZGUgIkpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTVGVzdExlZ2Fj
eUZhY3RvcnlGdW5jdGlvbkxlZ2FjeUZhY3RvcnlGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTVGVz
dE1hcExpa2UuaCIKICNpbmNsdWRlICJKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50
aWZpZXIuaCIKICNpbmNsdWRlICJKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4
Y2VwdGlvbi5oIgogI2luY2x1ZGUgIkpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVu
dGlmaWVyLmgiCi0jaW5jbHVkZSAiSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5oIgotI2luY2x1ZGUg
IkpTVGVzdE5hbWVkQ29uc3RydWN0b3JOYW1lZC5oIgogI2luY2x1ZGUgIkpTVGVzdE5hbWVkRGVs
ZXRlck5vSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIkpTVGVzdE5hbWVkRGVsZXRlclRocm93aW5n
RXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAiSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIu
aCIKQEAgLTIxMCw2ICsyMTAsMTAgQEAgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RHbG9iYWxP
YmplY3RUZQogYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0SXRlcmFibGVDb25zdHJ1Y3Rv
cihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVk
SlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdFRlc3RKU0J1
aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVu
Y29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CiBib29sIHNldEpTVGVzdEdsb2JhbE9i
amVjdFRlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmpl
Y3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK0pTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0VGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbkNv
bnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6
OlByb3BlcnR5TmFtZSk7Citib29sIHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RMZWdhY3lGYWN0
b3J5RnVuY3Rpb25Db25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVk
SlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CitKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dEdsb2JhbE9iamVjdEF1ZGlvQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6
RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKK2Jvb2wgc2V0SlNUZXN0R2xvYmFs
T2JqZWN0QXVkaW9Db25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVk
SlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dEdsb2JhbE9iamVjdFRlc3RNYXBMaWtlQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCos
IEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKIGJvb2wgc2V0SlNUZXN0
R2xvYmFsT2JqZWN0VGVzdE1hcExpa2VDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0Kiwg
SlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50
aWZpZXJDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1
ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwpAQCAtMjE4LDEwICsyMjIsNiBAQCBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdFRlCiBib29sIHNldEpTVGVzdEdsb2JhbE9iamVjdFRl
c3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbkNvbnN0cnVjdG9yKEpTQzo6
SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVl
KTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkQW5kSW5k
ZXhlZFNldHRlcldpdGhJZGVudGlmaWVyQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCos
IEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKIGJvb2wgc2V0SlNUZXN0
R2xvYmFsT2JqZWN0VGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyQ29uc3Ry
dWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5j
b2RlZEpTVmFsdWUpOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RUZXN0
TmFtZWRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVu
Y29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci1ib29sIHNldEpTVGVzdEdsb2JhbE9i
amVjdFRlc3ROYW1lZENvbnN0cnVjdG9yQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCos
IEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwotSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RBdWRpb0NvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxP
YmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci1ib29sIHNl
dEpTVGVzdEdsb2JhbE9iamVjdEF1ZGlvQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCos
IEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyQ29u
c3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6
UHJvcGVydHlOYW1lKTsKIGJvb2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkRGVsZXRl
ck5vSWRlbnRpZmllckNvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29k
ZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uQ29uc3RydWN0
b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVy
dHlOYW1lKTsKQEAgLTMwNSwxMiArMzA1LDEyIEBAIHVzaW5nIEpTVGVzdEdsb2JhbE9iamVjdENv
bnN0cnVjdG9yID0gSlMKIAogLyogSGFzaCB0YWJsZSAqLwogCi1zdGF0aWMgY29uc3Qgc3RydWN0
IENvbXBhY3RIYXNoSW5kZXggSlNUZXN0R2xvYmFsT2JqZWN0VGFibGVJbmRleFsyNjddID0gewor
c3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTVGVzdEdsb2JhbE9iamVjdFRh
YmxlSW5kZXhbMjY4XSA9IHsKICAgICB7IC0xLCAtMSB9LAogICAgIHsgMzYsIC0xIH0sCiAgICAg
eyAtMSwgLTEgfSwKICAgICB7IDAsIC0xIH0sCi0gICAgeyA0LCAyNjMgfSwKKyAgICB7IDQsIDI2
NCB9LAogICAgIHsgNDAsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LApA
QCAtMzQ4LDcgKzM0OCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBK
U1QKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyA2NiwgLTEgfSwKLSAg
ICB7IDksIDI1OCB9LAorICAgIHsgOSwgMjU5IH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0x
LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCkBAIC0zNTcsNyArMzU3LDcgQEAgc3RhdGljIGNvbnN0
IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTVAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwg
LTEgfSwKICAgICB7IDM0LCAtMSB9LAotICAgIHsgMTYsIDI2NCB9LAorICAgIHsgMTYsIDI1NiB9
LAogICAgIHsgNiwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCkBAIC0z
NzYsNyArMzc2LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTVAog
ICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsg
MTgsIDI2NSB9LAorICAgIHsgMTgsIDI2NiB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwg
LTEgfSwKICAgICB7IC0xLCAtMSB9LApAQCAtMzk4LDcgKzM5OCw3IEBAIHN0YXRpYyBjb25zdCBz
dHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1QKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0x
IH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDIwLCAyNTYgfSwKKyAgICB7IDIwLCAyNTcgfSwK
ICAgICB7IC0xLCAtMSB9LAogICAgIHsgNTgsIC0xIH0sCiAgICAgeyAxNSwgLTEgfSwKQEAgLTQz
Nyw3ICs0MzcsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNUCiAg
ICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyAy
NywgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEg
fSwKICAgICB7IDM4LCAtMSB9LApAQCAtNDY4LDggKzQ2OCw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1
Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1QKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0s
CiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDI4LCAtMSB9LAotICAgIHsgMjUsIDI2MiB9LAorICAg
IHsgMjQsIC0xIH0sCisgICAgeyAyNywgMjYzIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0x
LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCkBAIC00NzksNyArNDc5LDcgQEAgc3RhdGljIGNvbnN0
IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTVAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwg
LTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgMTIsIDI1NyB9LAorICAgIHsgMTIsIDI1OCB9
LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyA1OSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LApAQCAt
NDkwLDcgKzQ5MCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1QK
ICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7
IDI5LCAyNjYgfSwKKyAgICB7IDI5LCAyNjcgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgMTMs
IC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKQEAgLTUzNSw4ICs1MzUsOCBAQCBzdGF0aWMgY29uc3Qg
c3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNUCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAt
MSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyA0NCwgMjYxIH0sCi0gICAgeyA3LCAyNjAgfSwK
KyAgICB7IDQ0LCAyNjIgfSwKKyAgICB7IDcsIDI2MSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAg
eyA2MCwgLTEgfSwKICAgICB7IC0xLCAtMSB9LApAQCAtNTUwLDcgKzU1MCw3IEBAIHN0YXRpYyBj
b25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1QKICAgICB7IDIyLCAtMSB9LAogICAgIHsg
LTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDI0LCAtMSB9LAorICAgIHsgMjYsIC0x
IH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgNDEsIC0xIH0sCkBA
IC01NjIsOCArNTYyLDkgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpT
VAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAg
IHsgMjMsIDI1OSB9LAotICAgIHsgMjYsIC0xIH0sCisgICAgeyAyMywgMjY1IH0sCisgICAgeyAy
NSwgMjYwIH0sCisgICAgeyAyOCwgLTEgfSwKICAgICB7IDM1LCAtMSB9LAogICAgIHsgMzcsIC0x
IH0sCiAgICAgeyAzOSwgLTEgfSwKQEAgLTYxMywxMiArNjE0LDEyIEBAIHN0YXRpYyBjb25zdCBI
YXNoVGFibGVWYWx1ZSBKU1Rlc3RHbG9iYWwKICAgICB7ICJUZXN0SW50ZXJmYWNlTGVhZGluZ1Vu
ZGVyc2NvcmUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlT
bG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdFRlc3RJbnRlcmZhY2VMZWFkaW5n
VW5kZXJzY29yZUNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0
eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdEludGVyZmFjZUxl
YWRpbmdVbmRlcnNjb3JlQ29uc3RydWN0b3IpIH0gfSwKICAgICB7ICJUZXN0SXRlcmFibGUiLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBO
b0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1
ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdFRlc3RJdGVyYWJsZUNvbnN0cnVjdG9yKSwgKGludHB0
cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0
R2xvYmFsT2JqZWN0VGVzdEl0ZXJhYmxlQ29uc3RydWN0b3IpIH0gfSwKICAgICB7ICJUZXN0SlNC
dWlsdGluQ29uc3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdFRlc3RKU0J1aWx0
aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9w
ZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdEpTQnVpbHRp
bkNvbnN0cnVjdG9yQ29uc3RydWN0b3IpIH0gfSwKKyAgICB7ICJUZXN0TGVnYWN5RmFjdG9yeUZ1
bmN0aW9uIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xv
dDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0
aW9uQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6
UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0
aW9uQ29uc3RydWN0b3IpIH0gfSwKKyAgICB7ICJBdWRpbyIsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFs
T2JqZWN0QXVkaW9Db25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVy
dHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdEdsb2JhbE9iamVjdEF1ZGlvQ29uc3RydWN0
b3IpIH0gfSwKICAgICB7ICJUZXN0TWFwTGlrZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0
VGVzdE1hcExpa2VDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVy
dHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RNYXBMaWtlQ29u
c3RydWN0b3IpIH0gfSwKICAgICB7ICJUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlm
aWVyIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6
R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVy
Tm9JZGVudGlmaWVyQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3Bl
cnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRBbmRJ
bmRleGVkU2V0dGVyTm9JZGVudGlmaWVyQ29uc3RydWN0b3IpIH0gfSwKICAgICB7ICJUZXN0TmFt
ZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24iLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50
cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2Jh
bE9iamVjdFRlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbkNvbnN0cnVj
dG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVu
Yz4oc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5n
RXhjZXB0aW9uQ29uc3RydWN0b3IpIH0gfSwKICAgICB7ICJUZXN0TmFtZWRBbmRJbmRleGVkU2V0
dGVyV2l0aElkZW50aWZpZXIiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZEFu
ZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllckNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0
aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0R2xvYmFsT2Jq
ZWN0VGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyQ29uc3RydWN0b3IpIH0g
fSwKLSAgICB7ICJUZXN0TmFtZWRDb25zdHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2Jq
ZWN0VGVzdE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nh
c3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdEdsb2JhbE9iamVjdFRl
c3ROYW1lZENvbnN0cnVjdG9yQ29uc3RydWN0b3IpIH0gfSwKLSAgICB7ICJBdWRpbyIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVu
Yz4oanNUZXN0R2xvYmFsT2JqZWN0QXVkaW9Db25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGlj
X2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdEdsb2JhbE9iamVj
dEF1ZGlvQ29uc3RydWN0b3IpIH0gfSwKICAgICB7ICJUZXN0TmFtZWREZWxldGVyTm9JZGVudGlm
aWVyIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6
R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWREZWxldGVyTm9JZGVudGlm
aWVyQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6
UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWREZWxldGVyTm9JZGVu
dGlmaWVyQ29uc3RydWN0b3IpIH0gfSwKICAgICB7ICJUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdF
eGNlcHRpb24iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlT
bG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZERlbGV0ZXJUaHJv
d2luZ0V4Y2VwdGlvbkNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9w
ZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkRGVs
ZXRlclRocm93aW5nRXhjZXB0aW9uQ29uc3RydWN0b3IpIH0gfSwKICAgICB7ICJUZXN0TmFtZWRE
ZWxldGVyV2l0aElkZW50aWZpZXIiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1l
ZERlbGV0ZXJXaXRoSWRlbnRpZmllckNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2Fz
dDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVz
dE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyQ29uc3RydWN0b3IpIH0gfSwKQEAgLTE0NDgsNiAr
MTQ0OSw1MiBAQCBib29sIHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RKU0J1aWx0aW5DCiAgICAg
cmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RHbG9iYWxPYmplY3Q+OjpzZXQ8c2V0SlNUZXN0R2xv
YmFsT2JqZWN0VGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29uc3RydWN0b3JTZXR0ZXI+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIlRlc3RKU0J1aWx0aW5D
b25zdHJ1Y3RvciIpOwogfQogCitzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0R2xvYmFsT2Jq
ZWN0VGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbkNvbnN0cnVjdG9yR2V0dGVyKEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RHbG9iYWxPYmplY3QmIHRoaXNPYmplY3Qp
Cit7CisgICAgVU5VU0VEX1BBUkFNKGxleGljYWxHbG9iYWxPYmplY3QpOworICAgIHJldHVybiBK
U1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb246OmdldENvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0oJmxl
eGljYWxHbG9iYWxPYmplY3QpLCB0aGlzT2JqZWN0Lmdsb2JhbE9iamVjdCgpKTsKK30KKworRW5j
b2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0VGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbkNv
bnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKK3sKKyAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTVGVzdEdsb2JhbE9iamVjdD46OmdldDxqc1Rlc3RHbG9iYWxPYmplY3RUZXN0TGVnYWN5RmFj
dG9yeUZ1bmN0aW9uQ29uc3RydWN0b3JHZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsICJUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uIik7Cit9CisKK3N0YXRpYyBpbmxpbmUg
Ym9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uQ29uc3Ry
dWN0b3JTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdEds
b2JhbE9iamVjdCYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBhdXRvJiB2bSA9
IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOworICAgIC8vIFNoYWRvd2luZyBhIGJ1
aWx0LWluIGNvbnN0cnVjdG9yLgorICAgIHJldHVybiB0aGlzT2JqZWN0LnB1dERpcmVjdCh2bSwg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+
KCJUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uIiksIHN0cmxlbigiVGVzdExlZ2FjeUZhY3RvcnlG
dW5jdGlvbiIpKSwgdmFsdWUpOworfQorCitib29sIHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RM
ZWdhY3lGYWN0b3J5RnVuY3Rpb25Db25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpCit7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RHbG9iYWxPYmplY3Q+
OjpzZXQ8c2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbkNvbnN0
cnVjdG9yU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFs
dWUsICJUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uIik7Cit9CisKK3N0YXRpYyBpbmxpbmUgSlNW
YWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RBdWRpb0NvbnN0cnVjdG9yR2V0dGVyKEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RHbG9iYWxPYmplY3QmIHRoaXNPYmplY3Qp
Cit7CisgICAgVU5VU0VEX1BBUkFNKGxleGljYWxHbG9iYWxPYmplY3QpOworICAgIHJldHVybiBK
U1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb25MZWdhY3lGYWN0b3J5RnVuY3Rpb246OmdldENvbnN0
cnVjdG9yKEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCB0aGlzT2JqZWN0Lmdsb2Jh
bE9iamVjdCgpKTsKK30KKworRW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0QXVkaW9D
b25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCit7CisgICAgcmV0dXJuIElETEF0dHJpYnV0
ZTxKU1Rlc3RHbG9iYWxPYmplY3Q+OjpnZXQ8anNUZXN0R2xvYmFsT2JqZWN0QXVkaW9Db25zdHJ1
Y3RvckdldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIkF1ZGlvIik7Cit9
CisKK3N0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RBdWRpb0NvbnN0cnVj
dG9yU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RHbG9i
YWxPYmplY3QmIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCit7CisgICAgYXV0byYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICAvLyBTaGFkb3dpbmcgYSBidWls
dC1pbiBjb25zdHJ1Y3Rvci4KKyAgICByZXR1cm4gdGhpc09iamVjdC5wdXREaXJlY3Qodm0sIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigi
QXVkaW8iKSwgc3RybGVuKCJBdWRpbyIpKSwgdmFsdWUpOworfQorCitib29sIHNldEpTVGVzdEds
b2JhbE9iamVjdEF1ZGlvQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlKQoreworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0R2xvYmFsT2JqZWN0Pjo6c2V0
PHNldEpTVGVzdEdsb2JhbE9iamVjdEF1ZGlvQ29uc3RydWN0b3JTZXR0ZXI+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIkF1ZGlvIik7Cit9CisKIHN0YXRp
YyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RUZXN0TWFwTGlrZUNvbnN0cnVjdG9y
R2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RHbG9iYWxP
YmplY3QmIHRoaXNPYmplY3QpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGxleGljYWxHbG9iYWxPYmpl
Y3QpOwpAQCAtMTU0MCw1MiArMTU4Nyw2IEBAIGJvb2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVz
dE5hbWVkQW5kSW4KICAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdEdsb2JhbE9iamVjdD46
OnNldDxzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElk
ZW50aWZpZXJDb25zdHJ1Y3RvclNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1
ZSwgZW5jb2RlZFZhbHVlLCAiVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVy
Iik7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFt
ZWRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU1Rlc3RHbG9iYWxPYmplY3QmIHRoaXNPYmplY3QpCi17Ci0gICAgVU5VU0VE
X1BBUkFNKGxleGljYWxHbG9iYWxPYmplY3QpOwotICAgIHJldHVybiBKU1Rlc3ROYW1lZENvbnN0
cnVjdG9yOjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwg
dGhpc09iamVjdC5nbG9iYWxPYmplY3QoKSk7Ci19Ci0KLUVuY29kZWRKU1ZhbHVlIGpzVGVzdEds
b2JhbE9iamVjdFRlc3ROYW1lZENvbnN0cnVjdG9yQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lKQotewotICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0R2xvYmFsT2JqZWN0Pjo6Z2V0
PGpzVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZENvbnN0cnVjdG9yQ29uc3RydWN0b3JHZXR0ZXI+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJUZXN0TmFtZWRDb25zdHJ1Y3RvciIp
OwotfQotCi1zdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVk
Q29uc3RydWN0b3JDb25zdHJ1Y3RvclNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNUZXN0R2xvYmFsT2JqZWN0JiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQot
ewotICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAg
Ly8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IuCi0gICAgcmV0dXJuIHRoaXNPYmpl
Y3QucHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9j
YXN0PGNvbnN0IExDaGFyKj4oIlRlc3ROYW1lZENvbnN0cnVjdG9yIiksIHN0cmxlbigiVGVzdE5h
bWVkQ29uc3RydWN0b3IiKSksIHZhbHVlKTsKLX0KLQotYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmpl
Y3RUZXN0TmFtZWRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSkKLXsKLSAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdEdsb2JhbE9iamVj
dD46OnNldDxzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRDb25zdHJ1Y3RvckNvbnN0cnVj
dG9yU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUs
ICJUZXN0TmFtZWRDb25zdHJ1Y3RvciIpOwotfQotCi1zdGF0aWMgaW5saW5lIEpTVmFsdWUganNU
ZXN0R2xvYmFsT2JqZWN0QXVkaW9Db25zdHJ1Y3RvckdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0R2xvYmFsT2JqZWN0JiB0aGlzT2JqZWN0KQotewotICAg
IFVOVVNFRF9QQVJBTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICByZXR1cm4gSlNUZXN0TmFt
ZWRDb25zdHJ1Y3Rvck5hbWVkOjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKCZsZXhpY2FsR2xv
YmFsT2JqZWN0KSwgdGhpc09iamVjdC5nbG9iYWxPYmplY3QoKSk7Ci19Ci0KLUVuY29kZWRKU1Zh
bHVlIGpzVGVzdEdsb2JhbE9iamVjdEF1ZGlvQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1l
KQotewotICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0R2xvYmFsT2JqZWN0Pjo6Z2V0PGpz
VGVzdEdsb2JhbE9iamVjdEF1ZGlvQ29uc3RydWN0b3JHZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aGlzVmFsdWUsICJBdWRpbyIpOwotfQotCi1zdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNU
ZXN0R2xvYmFsT2JqZWN0QXVkaW9Db25zdHJ1Y3RvclNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0R2xvYmFsT2JqZWN0JiB0aGlzT2JqZWN0LCBKU1ZhbHVl
IHZhbHVlKQotewotICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7Ci0gICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IuCi0gICAgcmV0dXJu
IHRoaXNPYmplY3QucHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWlu
dGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oIkF1ZGlvIiksIHN0cmxlbigiQXVkaW8iKSksIHZh
bHVlKTsKLX0KLQotYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RBdWRpb0NvbnN0cnVjdG9yKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKLXsKLSAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTVGVzdEdsb2JhbE9iamVjdD46OnNldDxzZXRKU1Rlc3RHbG9iYWxPYmplY3RBdWRpb0Nv
bnN0cnVjdG9yU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVk
VmFsdWUsICJBdWRpbyIpOwotfQotCiBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0R2xvYmFs
T2JqZWN0VGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllckNvbnN0cnVjdG9yR2V0dGVyKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RHbG9iYWxPYmplY3QmIHRoaXNP
YmplY3QpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGxleGljYWxHbG9iYWxPYmplY3QpOwpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdExlZ2FjeUZhY3Rv
cnlGdW5jdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbi5jcHAJKHJldmlzaW9uIDI2
NjU1OSkJKGZyb20gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5hbWVkQ29uc3RydWN0b3IuY3BwOjI2NjU1OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMzI4IEBACisvKgorICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRo
ZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KKyAgICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2Vu
ZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQorCisgICAgVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQg
eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRp
c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
KyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmgiCisKKyNp
bmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKKyNpbmNsdWRlICJET01Jc29TdWJzcGFjZXMuaCIK
KyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgorI2luY2x1
ZGUgIkpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlLmgiCisjaW5jbHVkZSAiSlNET01D
b252ZXJ0SW50ZXJmYWNlLmgiCisjaW5jbHVkZSAiSlNET01Db252ZXJ0U3RyaW5ncy5oIgorI2lu
Y2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKKyNpbmNsdWRlICJKU0RPTU5hbWVkQ29u
c3RydWN0b3IuaCIKKyNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgorI2luY2x1ZGUgIlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgi
CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KKyNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9IZWFwQW5hbHl6ZXIuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9KU0NJbmxpbmVzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNEZXN0cnVjdGlibGVP
YmplY3RIZWFwQ2VsbFR5cGUuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdWJzcGFjZUlu
bGluZXMuaD4KKyNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CisjaW5jbHVkZSA8d3RmL1BvaW50ZXJQ
cmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CisKKworbmFtZXNwYWNlIFdlYkNv
cmUgewordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworLy8gQXR0cmlidXRlcworCitKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFs
T2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOworYm9vbCBz
ZXRKU1Rlc3ROYW1lZENvbnN0cnVjdG9yQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCos
IEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworCitjbGFzcyBKU1Rl
c3ROYW1lZENvbnN0cnVjdG9yUHJvdG90eXBlIGZpbmFsIDogcHVibGljIEpTQzo6SlNOb25GaW5h
bE9iamVjdCB7CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IEpTQzo6SlNOb25GaW5hbE9iamVj
dDsKKyAgICBzdGF0aWMgSlNUZXN0TmFtZWRDb25zdHJ1Y3RvclByb3RvdHlwZSogY3JlYXRlKEpT
Qzo6Vk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVy
ZSogc3RydWN0dXJlKQorICAgIHsKKyAgICAgICAgSlNUZXN0TmFtZWRDb25zdHJ1Y3RvclByb3Rv
dHlwZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3ROYW1lZENv
bnN0cnVjdG9yUHJvdG90eXBlPih2bS5oZWFwKSkgSlNUZXN0TmFtZWRDb25zdHJ1Y3RvclByb3Rv
dHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOworICAgICAgICBwdHItPmZpbmlzaENy
ZWF0aW9uKHZtKTsKKyAgICAgICAgcmV0dXJuIHB0cjsKKyAgICB9CisKKyAgICBERUNMQVJFX0lO
Rk87CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIEpTQzo6U3Vic3BhY2VBY2Nlc3M+
CisgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQor
ICAgIHsKKyAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0
TmFtZWRDb25zdHJ1Y3RvclByb3RvdHlwZSwgQmFzZSk7CisgICAgICAgIHJldHVybiAmdm0ucGxh
aW5PYmplY3RTcGFjZTsKKyAgICB9CisgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVT
dHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBKU0M6OlN0cnVj
dHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhK
U0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9CisKK3ByaXZh
dGU6CisgICAgSlNUZXN0TmFtZWRDb25zdHJ1Y3RvclByb3RvdHlwZShKU0M6OlZNJiB2bSwgSlND
OjpKU0dsb2JhbE9iamVjdCosIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgICAgIDog
SlNDOjpKU05vbkZpbmFsT2JqZWN0KHZtLCBzdHJ1Y3R1cmUpCisgICAgeworICAgIH0KKworICAg
IHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYpOworfTsKK1NUQVRJQ19BU1NFUlRfSVNPX1NV
QlNQQUNFX1NIQVJBQkxFKEpTVGVzdE5hbWVkQ29uc3RydWN0b3JQcm90b3R5cGUsIEpTVGVzdE5h
bWVkQ29uc3RydWN0b3JQcm90b3R5cGU6OkJhc2UpOworCit1c2luZyBKU1Rlc3ROYW1lZENvbnN0
cnVjdG9yQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1Rl
c3ROYW1lZENvbnN0cnVjdG9yPjsKK3VzaW5nIEpTVGVzdE5hbWVkQ29uc3RydWN0b3JOYW1lZENv
bnN0cnVjdG9yID0gSlNET01OYW1lZENvbnN0cnVjdG9yPEpTVGVzdE5hbWVkQ29uc3RydWN0b3I+
OworCit0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0TmFtZWRDb25zdHJ1Y3RvckNvbnN0cnVjdG9y
Ojpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2Jq
ZWN0JiBnbG9iYWxPYmplY3QpCit7CisgICAgVU5VU0VEX1BBUkFNKHZtKTsKKyAgICByZXR1cm4g
Z2xvYmFsT2JqZWN0LmZ1bmN0aW9uUHJvdG90eXBlKCk7Cit9CisKK3RlbXBsYXRlPD4gdm9pZCBK
U1Rlc3ROYW1lZENvbnN0cnVjdG9yQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZN
JiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3sKKyAgICBwdXREaXJlY3Qo
dm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6
cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250
RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSk7CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0TmFtZWRDb25zdHJ1Y3RvciJfcyks
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0pOworICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3Ro
LCBqc051bWJlcigxKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7Cit9CisKK3RlbXBsYXRlPD4gY29uc3QgQ2xhc3NJ
bmZvIEpTVGVzdE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdE5h
bWVkQ29uc3RydWN0b3IiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVf
TUVUSE9EX1RBQkxFKEpTVGVzdE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1Y3RvcikgfTsKKwordGVt
cGxhdGU8PiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTVGVzdE5hbWVkQ29uc3RydWN0
b3JOYW1lZENvbnN0cnVjdG9yOjpjb25zdHJ1Y3QoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIFZNJiB2bSA9IGxleGljYWxH
bG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3ROYW1lZENvbnN0
cnVjdG9yTmFtZWRDb25zdHJ1Y3Rvcio+KGNhbGxGcmFtZS0+anNDYWxsZWUoKSk7CisgICAgQVNT
RVJUKGNhc3RlZFRoaXMpOworICAgIGlmIChVTkxJS0VMWShjYWxsRnJhbWUtPmFyZ3VtZW50Q291
bnQoKSA8IDEpKQorICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGxleGljYWxHbG9i
YWxPYmplY3QpKTsKKyAgICBhdXRvKiBjb250ZXh0ID0gY2FzdGVkVGhpcy0+c2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpOworICAgIGlmIChVTkxJS0VMWSghY29udGV4dCkpCisgICAgICAgIHJldHVy
biB0aHJvd0NvbnN0cnVjdG9yU2NyaXB0RXhlY3V0aW9uQ29udGV4dFVuYXZhaWxhYmxlRXJyb3Io
KmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsICJUZXN0TmFtZWRDb25zdHJ1Y3RvciIp
OworICAgIEFTU0VSVChjb250ZXh0LT5pc0RvY3VtZW50KCkpOworICAgIGF1dG8mIGRvY3VtZW50
ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KCpjb250ZXh0KTsKKyAgICBFbnN1cmVTdGlsbEFsaXZlU2Nv
cGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKKyAgICBhdXRv
IHN0cjEgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3Vt
ZW50MC52YWx1ZSgpKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29k
ZWRKU1ZhbHVlKCkpOworICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDEgPSBjYWxs
RnJhbWUtPmFyZ3VtZW50KDEpOworICAgIGF1dG8gc3RyMiA9IGFyZ3VtZW50MS52YWx1ZSgpLmlz
VW5kZWZpbmVkKCkgPyAiZGVmYXVsdFN0cmluZyJfcyA6IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQxLnZhbHVlKCkpOworICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisgICAgRW5zdXJlU3RpbGxB
bGl2ZVNjb3BlIGFyZ3VtZW50MiA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMik7CisgICAgYXV0byBz
dHIzID0gYXJndW1lbnQyLnZhbHVlKCkuaXNVbmRlZmluZWQoKSA/IFN0cmluZygpIDogY29udmVy
dDxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDIudmFsdWUoKSk7
CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
KyAgICBhdXRvIG9iamVjdCA9IFRlc3ROYW1lZENvbnN0cnVjdG9yOjpjcmVhdGVGb3JKU0NvbnN0
cnVjdG9yKGRvY3VtZW50LCBXVEZNb3ZlKHN0cjEpLCBXVEZNb3ZlKHN0cjIpLCBXVEZNb3ZlKHN0
cjMpKTsKKyAgICBzdGF0aWNfYXNzZXJ0KElzRXhjZXB0aW9uT3I8ZGVjbHR5cGUob2JqZWN0KT46
OnZhbHVlKTsKKyAgICBzdGF0aWNfYXNzZXJ0KGRlY2x0eXBlKG9iamVjdCk6OlJldHVyblR5cGU6
OmlzUmVmKTsKKyAgICBhdXRvIGpzVmFsdWUgPSB0b0pTTmV3bHlDcmVhdGVkPElETEludGVyZmFj
ZTxUZXN0TmFtZWRDb25zdHJ1Y3Rvcj4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FzdGVkVGhp
cy0+Z2xvYmFsT2JqZWN0KCksIHRocm93U2NvcGUsIFdURk1vdmUob2JqZWN0KSk7CisgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOworICAgIHNldFN1YmNsYXNzU3RydWN0
dXJlSWZOZWVkZWQ8VGVzdE5hbWVkQ29uc3RydWN0b3I+KGxleGljYWxHbG9iYWxPYmplY3QsIGNh
bGxGcmFtZSwgYXNPYmplY3QoanNWYWx1ZSkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgeyB9KTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVmFsdWUpOworfQor
Cit0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvck5hbWVkQ29uc3RydWN0
b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxP
YmplY3QmIGdsb2JhbE9iamVjdCkKK3sKKyAgICBVTlVTRURfUEFSQU0odm0pOworICAgIHJldHVy
biBnbG9iYWxPYmplY3QuZnVuY3Rpb25Qcm90b3R5cGUoKTsKK30KKwordGVtcGxhdGU8PiB2b2lk
IEpTVGVzdE5hbWVkQ29uc3RydWN0b3JOYW1lZENvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVy
dGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit7CisgICAgcHV0
RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdE5hbWVkQ29uc3Ry
dWN0b3I6OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOworICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+bmFtZSwganNOb250cml2aWFsU3RyaW5nKHZtLCAiQXVkaW8iX3MpLCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtKTsKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1i
ZXIoMSksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pOworfQorCit0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rl
c3ROYW1lZENvbnN0cnVjdG9yTmFtZWRDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiQXVkaW8iLCAm
QmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVz
dE5hbWVkQ29uc3RydWN0b3JOYW1lZENvbnN0cnVjdG9yKSB9OworCisvKiBIYXNoIHRhYmxlIGZv
ciBwcm90b3R5cGUgKi8KKworc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdE5hbWVk
Q29uc3RydWN0b3JQcm90b3R5cGVUYWJsZVZhbHVlc1tdID0KK3sKKyAgICB7ICJjb25zdHJ1Y3Rv
ciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51
bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6Okdl
dFZhbHVlRnVuYz4oanNUZXN0TmFtZWRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yKSwgKGludHB0cl90
KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0TmFt
ZWRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yKSB9IH0sCit9OworCitjb25zdCBDbGFzc0luZm8gSlNU
ZXN0TmFtZWRDb25zdHJ1Y3RvclByb3RvdHlwZTo6c19pbmZvID0geyAiVGVzdE5hbWVkQ29uc3Ry
dWN0b3IiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RB
QkxFKEpTVGVzdE5hbWVkQ29uc3RydWN0b3JQcm90b3R5cGUpIH07CisKK3ZvaWQgSlNUZXN0TmFt
ZWRDb25zdHJ1Y3RvclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQoreworICAgIEJh
c2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICByZWlmeVN0YXRpY1Byb3BlcnRpZXModm0sIEpT
VGVzdE5hbWVkQ29uc3RydWN0b3I6OmluZm8oKSwgSlNUZXN0TmFtZWRDb25zdHJ1Y3RvclByb3Rv
dHlwZVRhYmxlVmFsdWVzLCAqdGhpcyk7CisgICAgSlNDX1RPX1NUUklOR19UQUdfV0lUSE9VVF9U
UkFOU0lUSU9OKCk7Cit9CisKK2NvbnN0IENsYXNzSW5mbyBKU1Rlc3ROYW1lZENvbnN0cnVjdG9y
OjpzX2luZm8gPSB7ICJUZXN0TmFtZWRDb25zdHJ1Y3RvciIsICZCYXNlOjpzX2luZm8sIG51bGxw
dHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvcikg
fTsKKworSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6SlNUZXN0TmFtZWRDb25zdHJ1Y3RvcihTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgUmVmPFRl
c3ROYW1lZENvbnN0cnVjdG9yPiYmIGltcGwpCisgICAgOiBKU0RPTVdyYXBwZXI8VGVzdE5hbWVk
Q29uc3RydWN0b3I+KHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKQorewor
fQorCit2b2lkIEpTVGVzdE5hbWVkQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkK
K3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgQVNTRVJUKGluaGVyaXRzKHZt
LCBpbmZvKCkpKTsKKworICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mPEFjdGl2ZURP
TU9iamVjdCwgVGVzdE5hbWVkQ29uc3RydWN0b3I+Ojp2YWx1ZSwgIkludGVyZmFjZSBpcyBtYXJr
ZWQgYXMgW0FjdGl2ZURPTU9iamVjdF0gYnV0IGltcGxlbWVudGF0aW9uIGNsYXNzIGRvZXMgbm90
IHN1YmNsYXNzIEFjdGl2ZURPTU9iamVjdC4iKTsKKworfQorCitKU09iamVjdCogSlNUZXN0TmFt
ZWRDb25zdHJ1Y3Rvcjo6Y3JlYXRlUHJvdG90eXBlKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3Qm
IGdsb2JhbE9iamVjdCkKK3sKKyAgICByZXR1cm4gSlNUZXN0TmFtZWRDb25zdHJ1Y3RvclByb3Rv
dHlwZTo6Y3JlYXRlKHZtLCAmZ2xvYmFsT2JqZWN0LCBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yUHJv
dG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sICZnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC5v
YmplY3RQcm90b3R5cGUoKSkpOworfQorCitKU09iamVjdCogSlNUZXN0TmFtZWRDb25zdHJ1Y3Rv
cjo6cHJvdG90eXBlKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3sK
KyAgICByZXR1cm4gZ2V0RE9NUHJvdG90eXBlPEpTVGVzdE5hbWVkQ29uc3RydWN0b3I+KHZtLCBn
bG9iYWxPYmplY3QpOworfQorCitKU1ZhbHVlIEpTVGVzdE5hbWVkQ29uc3RydWN0b3I6OmdldENv
bnN0cnVjdG9yKFZNJiB2bSwgY29uc3QgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sK
KyAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0TmFtZWRDb25zdHJ1Y3RvckNvbnN0
cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVj
dCkpOworfQorCitKU1ZhbHVlIEpTVGVzdE5hbWVkQ29uc3RydWN0b3I6OmdldE5hbWVkQ29uc3Ry
dWN0b3IoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIHJldHVy
biBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3ROYW1lZENvbnN0cnVjdG9yTmFtZWRDb25zdHJ1Y3Rv
cj4odm0sICpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKK30KKwor
dm9pZCBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yOjpkZXN0cm95KEpTQzo6SlNDZWxsKiBjZWxsKQor
eworICAgIEpTVGVzdE5hbWVkQ29uc3RydWN0b3IqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxK
U1Rlc3ROYW1lZENvbnN0cnVjdG9yKj4oY2VsbCk7CisgICAgdGhpc09iamVjdC0+SlNUZXN0TmFt
ZWRDb25zdHJ1Y3Rvcjo6fkpTVGVzdE5hbWVkQ29uc3RydWN0b3IoKTsKK30KKworRW5jb2RlZEpT
VmFsdWUganNUZXN0TmFtZWRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFt
ZSkKK3sKKyAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOworICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIGF1dG8qIHBy
b3RvdHlwZSA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0TmFtZWRDb25zdHJ1Y3RvclByb3RvdHlwZSo+
KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgaWYgKFVOTElLRUxZKCFwcm90
b3R5cGUpKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aHJvd1Njb3BlKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdE5hbWVk
Q29uc3RydWN0b3I6OmdldENvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVj
dCksIHByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCkpKTsKK30KKworYm9vbCBzZXRKU1Rlc3ROYW1l
ZENvbnN0cnVjdG9yQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
KQoreworICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgYXV0byogcHJv
dG90eXBlID0ganNEeW5hbWljQ2FzdDxKU1Rlc3ROYW1lZENvbnN0cnVjdG9yUHJvdG90eXBlKj4o
dm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBpZiAoVU5MSUtFTFkoIXByb3Rv
dHlwZSkpIHsKKyAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAvLyBTaGFkb3dp
bmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgorICAgIHJldHVybiBwcm90b3R5cGUtPnB1dERpcmVj
dCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkVmFsdWUpKTsKK30KKworSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0TmFtZWRDb25zdHJ1Y3Rv
cjo6c3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKQoreworICAgIGF1dG8mIGNsaWVudERhdGEg
PSAqc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsKKyAgICBhdXRv
JiBzcGFjZXMgPSBjbGllbnREYXRhLnN1YnNwYWNlcygpOworICAgIGlmIChhdXRvKiBzcGFjZSA9
IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkQ29uc3RydWN0b3IuZ2V0KCkpCisgICAgICAg
IHJldHVybiBzcGFjZTsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6
SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVkQ29uc3RydWN0b3I+IHx8ICFKU1Rlc3RO
YW1lZENvbnN0cnVjdG9yOjpuZWVkc0Rlc3RydWN0aW9uKTsKKyAgICBpZiBjb25zdGV4cHIgKHN0
ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVkQ29u
c3RydWN0b3I+KQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZENvbnN0cnVj
dG9yID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwg
dm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3ROYW1lZENvbnN0
cnVjdG9yKTsKKyAgICBlbHNlCisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVk
Q29uc3RydWN0b3IgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2
bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3ROYW1lZENvbnN0cnVjdG9y
KTsKKyAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkQ29uc3Ry
dWN0b3IuZ2V0KCk7CitJR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQor
SUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCisgICAgaWYgKCZK
U1Rlc3ROYW1lZENvbnN0cnVjdG9yOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzICE9ICZKU0M6OkpT
Q2VsbDo6dmlzaXRPdXRwdXRDb25zdHJhaW50cykKKyAgICAgICAgY2xpZW50RGF0YS5vdXRwdXRD
b25zdHJhaW50U3BhY2VzKCkuYXBwZW5kKHNwYWNlKTsKK0lHTk9SRV9XQVJOSU5HU19FTkQKK0lH
Tk9SRV9XQVJOSU5HU19FTkQKKyAgICByZXR1cm4gc3BhY2U7Cit9CisKK3ZvaWQgSlNUZXN0TmFt
ZWRDb25zdHJ1Y3Rvcjo6YW5hbHl6ZUhlYXAoSlNDZWxsKiBjZWxsLCBIZWFwQW5hbHl6ZXImIGFu
YWx5emVyKQoreworICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0TmFtZWRDb25z
dHJ1Y3Rvcio+KGNlbGwpOworICAgIGFuYWx5emVyLnNldFdyYXBwZWRPYmplY3RGb3JDZWxsKGNl
bGwsICZ0aGlzT2JqZWN0LT53cmFwcGVkKCkpOworICAgIGlmICh0aGlzT2JqZWN0LT5zY3JpcHRF
eGVjdXRpb25Db250ZXh0KCkpCisgICAgICAgIGFuYWx5emVyLnNldExhYmVsRm9yQ2VsbChjZWxs
LCAidXJsICIgKyB0aGlzT2JqZWN0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnVybCgpLnN0
cmluZygpKTsKKyAgICBCYXNlOjphbmFseXplSGVhcChjZWxsLCBhbmFseXplcik7Cit9CisKK2Jv
b2wgSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvck93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290
cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCosIFNsb3RWaXNpdG9yJiB2
aXNpdG9yLCBjb25zdCBjaGFyKiogcmVhc29uKQoreworICAgIGF1dG8qIGpzVGVzdE5hbWVkQ29u
c3RydWN0b3IgPSBqc0Nhc3Q8SlNUZXN0TmFtZWRDb25zdHJ1Y3Rvcio+KGhhbmRsZS5zbG90KCkt
PmFzQ2VsbCgpKTsKKyAgICBhdXRvJiB3cmFwcGVkID0ganNUZXN0TmFtZWRDb25zdHJ1Y3Rvci0+
d3JhcHBlZCgpOworICAgIGlmICghd3JhcHBlZC5pc0NvbnRleHRTdG9wcGVkKCkgJiYgd3JhcHBl
ZC5oYXNQZW5kaW5nQWN0aXZpdHkoKSkgeworICAgICAgICBpZiAoVU5MSUtFTFkocmVhc29uKSkK
KyAgICAgICAgICAgICpyZWFzb24gPSAiQWN0aXZlRE9NT2JqZWN0IHdpdGggcGVuZGluZyBhY3Rp
dml0eSI7CisgICAgICAgIHJldHVybiB0cnVlOworICAgICB9CisgICAgVU5VU0VEX1BBUkFNKHZp
c2l0b3IpOworICAgIFVOVVNFRF9QQVJBTShyZWFzb24pOworICAgIHJldHVybiBmYWxzZTsKK30K
Kwordm9pZCBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yT3duZXI6OmZpbmFsaXplKEpTQzo6SGFuZGxl
PEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiBjb250ZXh0KQoreworICAgIGF1dG8qIGpzVGVz
dE5hbWVkQ29uc3RydWN0b3IgPSBzdGF0aWNfY2FzdDxKU1Rlc3ROYW1lZENvbnN0cnVjdG9yKj4o
aGFuZGxlLnNsb3QoKS0+YXNDZWxsKCkpOworICAgIGF1dG8mIHdvcmxkID0gKnN0YXRpY19jYXN0
PERPTVdyYXBwZXJXb3JsZCo+KGNvbnRleHQpOworICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxkLCAm
anNUZXN0TmFtZWRDb25zdHJ1Y3Rvci0+d3JhcHBlZCgpLCBqc1Rlc3ROYW1lZENvbnN0cnVjdG9y
KTsKK30KKworI2lmIEVOQUJMRShCSU5ESU5HX0lOVEVHUklUWSkKKyNpZiBQTEFURk9STShXSU4p
CisjcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDQ4MykKK2V4dGVybiAiQyIgeyBleHRlcm4gdm9p
ZCAoKmNvbnN0IF9faWRlbnRpZmllcigiPz9fN1Rlc3ROYW1lZENvbnN0cnVjdG9yQFdlYkNvcmVA
QDZCQCIpW10pKCk7IH0KKyNlbHNlCitleHRlcm4gIkMiIHsgZXh0ZXJuIHZvaWQqIF9aVFZON1dl
YkNvcmUyMFRlc3ROYW1lZENvbnN0cnVjdG9yRVtdOyB9CisjZW5kaWYKKyNlbmRpZgorCitKU0M6
OkpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNET01HbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3ROYW1lZENvbnN0cnVjdG9yPiYmIGltcGwp
Cit7CisKKyNpZiBFTkFCTEUoQklORElOR19JTlRFR1JJVFkpCisgICAgY29uc3Qgdm9pZCogYWN0
dWFsVlRhYmxlUG9pbnRlciA9IGdldFZUYWJsZVBvaW50ZXIoaW1wbC5wdHIoKSk7CisjaWYgUExB
VEZPUk0oV0lOKQorICAgIHZvaWQqIGV4cGVjdGVkVlRhYmxlUG9pbnRlciA9IF9faWRlbnRpZmll
cigiPz9fN1Rlc3ROYW1lZENvbnN0cnVjdG9yQFdlYkNvcmVAQDZCQCIpOworI2Vsc2UKKyAgICB2
b2lkKiBleHBlY3RlZFZUYWJsZVBvaW50ZXIgPSAmX1pUVk43V2ViQ29yZTIwVGVzdE5hbWVkQ29u
c3RydWN0b3JFWzJdOworI2VuZGlmCisKKyAgICAvLyBJZiB0aGlzIGZhaWxzIFRlc3ROYW1lZENv
bnN0cnVjdG9yIGRvZXMgbm90IGhhdmUgYSB2dGFibGUsIHNvIHlvdSBuZWVkIHRvIGFkZCB0aGUK
KyAgICAvLyBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlIGF0dHJpYnV0ZSB0byB0aGUgaW50ZXJm
YWNlIGRlZmluaXRpb24KKyAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfcG9seW1vcnBoaWM8VGVz
dE5hbWVkQ29uc3RydWN0b3I+Ojp2YWx1ZSwgIlRlc3ROYW1lZENvbnN0cnVjdG9yIGlzIG5vdCBw
b2x5bW9ycGhpYyIpOworCisgICAgLy8gSWYgeW91IGhpdCB0aGlzIGFzc2VydGlvbiB5b3UgZWl0
aGVyIGhhdmUgYSB1c2UgYWZ0ZXIgZnJlZSBidWcsIG9yCisgICAgLy8gVGVzdE5hbWVkQ29uc3Ry
dWN0b3IgaGFzIHN1YmNsYXNzZXMuIElmIFRlc3ROYW1lZENvbnN0cnVjdG9yIGhhcyBzdWJjbGFz
c2VzIHRoYXQgZ2V0IHBhc3NlZAorICAgIC8vIHRvIHRvSlMoKSB3ZSBjdXJyZW50bHkgcmVxdWly
ZSBUZXN0TmFtZWRDb25zdHJ1Y3RvciB5b3UgdG8gb3B0IG91dCBvZiBiaW5kaW5nIGhhcmRlbmlu
ZworICAgIC8vIGJ5IGFkZGluZyB0aGUgU2tpcFZUYWJsZVZhbGlkYXRpb24gYXR0cmlidXRlIHRv
IHRoZSBpbnRlcmZhY2UgSURMIGRlZmluaXRpb24KKyAgICBSRUxFQVNFX0FTU0VSVChhY3R1YWxW
VGFibGVQb2ludGVyID09IGV4cGVjdGVkVlRhYmxlUG9pbnRlcik7CisjZW5kaWYKKyAgICByZXR1
cm4gY3JlYXRlV3JhcHBlcjxUZXN0TmFtZWRDb25zdHJ1Y3Rvcj4oZ2xvYmFsT2JqZWN0LCBXVEZN
b3ZlKGltcGwpKTsKK30KKworSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVz
dE5hbWVkQ29uc3RydWN0b3ImIGltcGwpCit7CisgICAgcmV0dXJuIHdyYXAobGV4aWNhbEdsb2Jh
bE9iamVjdCwgZ2xvYmFsT2JqZWN0LCBpbXBsKTsKK30KKworVGVzdE5hbWVkQ29uc3RydWN0b3Iq
IEpTVGVzdE5hbWVkQ29uc3RydWN0b3I6OnRvV3JhcHBlZChKU0M6OlZNJiB2bSwgSlNDOjpKU1Zh
bHVlIHZhbHVlKQoreworICAgIGlmIChhdXRvKiB3cmFwcGVyID0ganNEeW5hbWljQ2FzdDxKU1Rl
c3ROYW1lZENvbnN0cnVjdG9yKj4odm0sIHZhbHVlKSkKKyAgICAgICAgcmV0dXJuICZ3cmFwcGVy
LT53cmFwcGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK30KClByb3BlcnR5IGNoYW5n
ZXMgb246IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RMZWdh
Y3lGYWN0b3J5RnVuY3Rpb24uY3BwCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wtc3R5bGUKIyMg
LTAsMCArMSAjIworTEYKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdExlZ2FjeUZhY3RvcnlG
dW5jdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbi5jcHAJKHJldmlzaW9uIDI2NjU1
OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RMZWdh
Y3lGYWN0b3J5RnVuY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOSw3ICsxOSw3IEBACiAq
LwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiSlNUZXN0TmFtZWRDb25zdHJ1Y3Rv
ci5oIgorI2luY2x1ZGUgIkpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbi5oIgogCiAjaW5jbHVk
ZSAiQWN0aXZlRE9NT2JqZWN0LmgiCiAjaW5jbHVkZSAiRE9NSXNvU3Vic3BhY2VzLmgiCkBAIC0y
OSw3ICsyOSw3IEBACiAjaW5jbHVkZSAiSlNET01Db252ZXJ0SW50ZXJmYWNlLmgiCiAjaW5jbHVk
ZSAiSlNET01Db252ZXJ0U3RyaW5ncy5oIgogI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxp
bmcuaCIKLSNpbmNsdWRlICJKU0RPTU5hbWVkQ29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJKU0RP
TUxlZ2FjeUZhY3RvcnlGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgi
CiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIldlYkNvcmVK
U0NsaWVudERhdGEuaCIKQEAgLTQ4LDE1ICs0OCwxNSBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwog
CiAvLyBBdHRyaWJ1dGVzCiAKLUpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0TmFtZWRDb25zdHJ1
Y3RvckNvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVl
LCBKU0M6OlByb3BlcnR5TmFtZSk7Ci1ib29sIHNldEpTVGVzdE5hbWVkQ29uc3RydWN0b3JDb25z
dHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpF
bmNvZGVkSlNWYWx1ZSk7CitKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdExlZ2FjeUZhY3RvcnlG
dW5jdGlvbkNvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1Zh
bHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Citib29sIHNldEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5j
dGlvbkNvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVl
LCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIAotY2xhc3MgSlNUZXN0TmFtZWRDb25zdHJ1Y3RvclBy
b3RvdHlwZSBmaW5hbCA6IHB1YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3QgeworY2xhc3MgSlNU
ZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uUHJvdG90eXBlIGZpbmFsIDogcHVibGljIEpTQzo6SlNO
b25GaW5hbE9iamVjdCB7CiBwdWJsaWM6CiAgICAgdXNpbmcgQmFzZSA9IEpTQzo6SlNOb25GaW5h
bE9iamVjdDsKLSAgICBzdGF0aWMgSlNUZXN0TmFtZWRDb25zdHJ1Y3RvclByb3RvdHlwZSogY3Jl
YXRlKEpTQzo6Vk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0
cnVjdHVyZSogc3RydWN0dXJlKQorICAgIHN0YXRpYyBKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rp
b25Qcm90b3R5cGUqIGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7Ci0gICAgICAgIEpTVGVz
dE5hbWVkQ29uc3RydWN0b3JQcm90b3R5cGUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxv
Y2F0ZUNlbGw8SlNUZXN0TmFtZWRDb25zdHJ1Y3RvclByb3RvdHlwZT4odm0uaGVhcCkpIEpTVGVz
dE5hbWVkQ29uc3RydWN0b3JQcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsK
KyAgICAgICAgSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uUHJvdG90eXBlKiBwdHIgPSBuZXcg
KE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvblBy
b3RvdHlwZT4odm0uaGVhcCkpIEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvblByb3RvdHlwZSh2
bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOwogICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9u
KHZtKTsKICAgICAgICAgcmV0dXJuIHB0cjsKICAgICB9CkBAIC02NSw3ICs2NSw3IEBAIHB1Ymxp
YzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgSlNDOjpTdWJzcGFjZUFjY2Vzcz4K
ICAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCiAg
ICAgewotICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RO
YW1lZENvbnN0cnVjdG9yUHJvdG90eXBlLCBCYXNlKTsKKyAgICAgICAgU1RBVElDX0FTU0VSVF9J
U09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uUHJvdG90eXBl
LCBCYXNlKTsKICAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOwogICAgIH0KICAg
ICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlND
OjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQpA
QCAtNzQsNDQgKzc0LDQ0IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgSlNUZXN0
TmFtZWRDb25zdHJ1Y3RvclByb3RvdHlwZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVj
dCosIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgSlNUZXN0TGVnYWN5RmFjdG9yeUZ1
bmN0aW9uUHJvdG90eXBlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICAgICAgOiBKU0M6OkpTTm9uRmluYWxPYmplY3Qodm0s
IHN0cnVjdHVyZSkKICAgICB7CiAgICAgfQogCiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6
OlZNJik7CiB9OwotU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0TmFt
ZWRDb25zdHJ1Y3RvclByb3RvdHlwZSwgSlNUZXN0TmFtZWRDb25zdHJ1Y3RvclByb3RvdHlwZTo6
QmFzZSk7CitTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RMZWdhY3lG
YWN0b3J5RnVuY3Rpb25Qcm90b3R5cGUsIEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvblByb3Rv
dHlwZTo6QmFzZSk7CiAKLXVzaW5nIEpTVGVzdE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1Y3RvciA9
IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpTVGVzdE5hbWVkQ29uc3RydWN0b3I+
OwotdXNpbmcgSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvck5hbWVkQ29uc3RydWN0b3IgPSBKU0RPTU5h
bWVkQ29uc3RydWN0b3I8SlNUZXN0TmFtZWRDb25zdHJ1Y3Rvcj47Cit1c2luZyBKU1Rlc3RMZWdh
Y3lGYWN0b3J5RnVuY3Rpb25Db25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1
Y3RhYmxlPEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbj47Cit1c2luZyBKU1Rlc3RMZWdhY3lG
YWN0b3J5RnVuY3Rpb25MZWdhY3lGYWN0b3J5RnVuY3Rpb24gPSBKU0RPTUxlZ2FjeUZhY3RvcnlG
dW5jdGlvbjxKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24+OwogCi10ZW1wbGF0ZTw+IEpTVmFs
dWUgSlNUZXN0TmFtZWRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1
cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit0
ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uQ29uc3RydWN0b3I6
OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmpl
Y3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICBVTlVTRURfUEFSQU0odm0pOwogICAgIHJldHVybiBn
bG9iYWxPYmplY3QuZnVuY3Rpb25Qcm90b3R5cGUoKTsKIH0KIAotdGVtcGxhdGU8PiB2b2lkIEpT
VGVzdE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0m
IHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQordGVtcGxhdGU8PiB2b2lkIEpT
VGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbkNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGll
cyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7Ci0gICAgcHV0RGly
ZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdE5hbWVkQ29uc3RydWN0
b3I6OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwotICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlO
YW1lcy0+bmFtZSwganNOb250cml2aWFsU3RyaW5nKHZtLCAiVGVzdE5hbWVkQ29uc3RydWN0b3Ii
X3MpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtKTsKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnBy
b3RvdHlwZSwgSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uOjpwcm90b3R5cGUodm0sIGdsb2Jh
bE9iamVjdCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
KTsKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzTm9udHJpdmlh
bFN0cmluZyh2bSwgIlRlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24iX3MpLCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsK
ICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMSks
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0pOwogfQogCi10ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3ROYW1l
ZENvbnN0cnVjdG9yQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3ROYW1lZENvbnN0cnVjdG9y
IiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShK
U1Rlc3ROYW1lZENvbnN0cnVjdG9yQ29uc3RydWN0b3IpIH07Cit0ZW1wbGF0ZTw+IGNvbnN0IENs
YXNzSW5mbyBKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb25Db25zdHJ1Y3Rvcjo6c19pbmZvID0g
eyAiVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51
bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uQ29u
c3RydWN0b3IpIH07CiAKLXRlbXBsYXRlPD4gRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBK
U1Rlc3ROYW1lZENvbnN0cnVjdG9yTmFtZWRDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0KEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3RlbXBs
YXRlPD4gRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1Rlc3RMZWdhY3lGYWN0b3J5RnVu
Y3Rpb25MZWdhY3lGYWN0b3J5RnVuY3Rpb246OmNvbnN0cnVjdChKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgVk0mIHZtID0g
bGV4aWNhbEdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKLSAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE5h
bWVkQ29uc3RydWN0b3JOYW1lZENvbnN0cnVjdG9yKj4oY2FsbEZyYW1lLT5qc0NhbGxlZSgpKTsK
KyAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlv
bkxlZ2FjeUZhY3RvcnlGdW5jdGlvbio+KGNhbGxGcmFtZS0+anNDYWxsZWUoKSk7CiAgICAgQVNT
RVJUKGNhc3RlZFRoaXMpOwogICAgIGlmIChVTkxJS0VMWShjYWxsRnJhbWUtPmFyZ3VtZW50Q291
bnQoKSA8IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGxleGljYWxHbG9i
YWxPYmplY3QpKTsKICAgICBhdXRvKiBjb250ZXh0ID0gY2FzdGVkVGhpcy0+c2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpOwogICAgIGlmIChVTkxJS0VMWSghY29udGV4dCkpCi0gICAgICAgIHJldHVy
biB0aHJvd0NvbnN0cnVjdG9yU2NyaXB0RXhlY3V0aW9uQ29udGV4dFVuYXZhaWxhYmxlRXJyb3Io
KmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsICJUZXN0TmFtZWRDb25zdHJ1Y3RvciIp
OworICAgICAgICByZXR1cm4gdGhyb3dDb25zdHJ1Y3RvclNjcmlwdEV4ZWN1dGlvbkNvbnRleHRV
bmF2YWlsYWJsZUVycm9yKCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCAiVGVzdExl
Z2FjeUZhY3RvcnlGdW5jdGlvbiIpOwogICAgIEFTU0VSVChjb250ZXh0LT5pc0RvY3VtZW50KCkp
OwogICAgIGF1dG8mIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KCpjb250ZXh0KTsKICAg
ICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT51bmNoZWNrZWRB
cmd1bWVudCgwKTsKQEAgLTEyMywxMDQgKzEyMywxMDQgQEAgdGVtcGxhdGU8PiBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIAogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDIg
PSBjYWxsRnJhbWUtPmFyZ3VtZW50KDIpOwogICAgIGF1dG8gc3RyMyA9IGFyZ3VtZW50Mi52YWx1
ZSgpLmlzVW5kZWZpbmVkKCkgPyBTdHJpbmcoKSA6IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQyLnZhbHVlKCkpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgYXV0byBvYmplY3QgPSBU
ZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6Y3JlYXRlRm9ySlNDb25zdHJ1Y3Rvcihkb2N1bWVudCwgV1RG
TW92ZShzdHIxKSwgV1RGTW92ZShzdHIyKSwgV1RGTW92ZShzdHIzKSk7CisgICAgYXV0byBvYmpl
Y3QgPSBUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uOjpjcmVhdGVGb3JKU0NvbnN0cnVjdG9yKGRv
Y3VtZW50LCBXVEZNb3ZlKHN0cjEpLCBXVEZNb3ZlKHN0cjIpLCBXVEZNb3ZlKHN0cjMpKTsKICAg
ICBzdGF0aWNfYXNzZXJ0KElzRXhjZXB0aW9uT3I8ZGVjbHR5cGUob2JqZWN0KT46OnZhbHVlKTsK
ICAgICBzdGF0aWNfYXNzZXJ0KGRlY2x0eXBlKG9iamVjdCk6OlJldHVyblR5cGU6OmlzUmVmKTsK
LSAgICBhdXRvIGpzVmFsdWUgPSB0b0pTTmV3bHlDcmVhdGVkPElETEludGVyZmFjZTxUZXN0TmFt
ZWRDb25zdHJ1Y3Rvcj4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FzdGVkVGhpcy0+Z2xvYmFs
T2JqZWN0KCksIHRocm93U2NvcGUsIFdURk1vdmUob2JqZWN0KSk7CisgICAgYXV0byBqc1ZhbHVl
ID0gdG9KU05ld2x5Q3JlYXRlZDxJRExJbnRlcmZhY2U8VGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlv
bj4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIHRo
cm93U2NvcGUsIFdURk1vdmUob2JqZWN0KSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCB7IH0pOwotICAgIHNldFN1YmNsYXNzU3RydWN0dXJlSWZOZWVkZWQ8VGVzdE5hbWVk
Q29uc3RydWN0b3I+KGxleGljYWxHbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgYXNPYmplY3QoanNW
YWx1ZSkpOworICAgIHNldFN1YmNsYXNzU3RydWN0dXJlSWZOZWVkZWQ8VGVzdExlZ2FjeUZhY3Rv
cnlGdW5jdGlvbj4obGV4aWNhbEdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCBhc09iamVjdChqc1Zh
bHVlKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNWYWx1ZSk7CiB9CiAKLXRlbXBsYXRlPD4gSlNWYWx1ZSBK
U1Rlc3ROYW1lZENvbnN0cnVjdG9yTmFtZWRDb25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0
dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQor
dGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbkxlZ2FjeUZhY3Rv
cnlGdW5jdGlvbjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RP
TUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAgIFVOVVNFRF9QQVJBTSh2bSk7CiAg
ICAgcmV0dXJuIGdsb2JhbE9iamVjdC5mdW5jdGlvblByb3RvdHlwZSgpOwogfQogCi10ZW1wbGF0
ZTw+IHZvaWQgSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvck5hbWVkQ29uc3RydWN0b3I6OmluaXRpYWxp
emVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3Rl
bXBsYXRlPD4gdm9pZCBKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb25MZWdhY3lGYWN0b3J5RnVu
Y3Rpb246OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGds
b2JhbE9iamVjdCkKIHsKLSAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3Rv
dHlwZSwgSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3Qp
LCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CisgICAg
cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdExlZ2FjeUZh
Y3RvcnlGdW5jdGlvbjo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkg
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJBdWRpbyJfcyks
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3Ro
LCBqc051bWJlcigxKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiB9CiAKLXRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJ
bmZvIEpTVGVzdE5hbWVkQ29uc3RydWN0b3JOYW1lZENvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJB
dWRpbyIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFC
TEUoSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvck5hbWVkQ29uc3RydWN0b3IpIH07Cit0ZW1wbGF0ZTw+
IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb25MZWdhY3lGYWN0b3J5
RnVuY3Rpb246OnNfaW5mbyA9IHsgIkF1ZGlvIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVs
bHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb25MZWdh
Y3lGYWN0b3J5RnVuY3Rpb24pIH07CiAKIC8qIEhhc2ggdGFibGUgZm9yIHByb3RvdHlwZSAqLwog
Ci1zdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0TmFtZWRDb25zdHJ1Y3RvclByb3Rv
dHlwZVRhYmxlVmFsdWVzW10gPQorc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdExl
Z2FjeUZhY3RvcnlGdW5jdGlvblByb3RvdHlwZVRhYmxlVmFsdWVzW10gPQogewotICAgIHsgImNv
bnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3ROYW1lZENvbnN0cnVjdG9yQ29uc3RydWN0b3IpLCAo
aW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRK
U1Rlc3ROYW1lZENvbnN0cnVjdG9yQ29uc3RydWN0b3IpIH0gfSwKKyAgICB7ICJjb25zdHJ1Y3Rv
ciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51
bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6Okdl
dFZhbHVlRnVuYz4oanNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uQ29uc3RydWN0b3IpLCAoaW50
cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rl
c3RMZWdhY3lGYWN0b3J5RnVuY3Rpb25Db25zdHJ1Y3RvcikgfSB9LAogfTsKIAotY29uc3QgQ2xh
c3NJbmZvIEpTVGVzdE5hbWVkQ29uc3RydWN0b3JQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlc3RO
YW1lZENvbnN0cnVjdG9yIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRF
X01FVEhPRF9UQUJMRShKU1Rlc3ROYW1lZENvbnN0cnVjdG9yUHJvdG90eXBlKSB9OworY29uc3Qg
Q2xhc3NJbmZvIEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvblByb3RvdHlwZTo6c19pbmZvID0g
eyAiVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51
bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uUHJv
dG90eXBlKSB9OwogCi12b2lkIEpTVGVzdE5hbWVkQ29uc3RydWN0b3JQcm90b3R5cGU6OmZpbmlz
aENyZWF0aW9uKFZNJiB2bSkKK3ZvaWQgSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uUHJvdG90
eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24o
dm0pOwotICAgIHJlaWZ5U3RhdGljUHJvcGVydGllcyh2bSwgSlNUZXN0TmFtZWRDb25zdHJ1Y3Rv
cjo6aW5mbygpLCBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yUHJvdG90eXBlVGFibGVWYWx1ZXMsICp0
aGlzKTsKKyAgICByZWlmeVN0YXRpY1Byb3BlcnRpZXModm0sIEpTVGVzdExlZ2FjeUZhY3RvcnlG
dW5jdGlvbjo6aW5mbygpLCBKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb25Qcm90b3R5cGVUYWJs
ZVZhbHVlcywgKnRoaXMpOwogICAgIEpTQ19UT19TVFJJTkdfVEFHX1dJVEhPVVRfVFJBTlNJVElP
TigpOwogfQogCi1jb25zdCBDbGFzc0luZm8gSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6c19pbmZv
ID0geyAiVGVzdE5hbWVkQ29uc3RydWN0b3IiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxs
cHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE5hbWVkQ29uc3RydWN0b3IpIH07Citjb25z
dCBDbGFzc0luZm8gSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uOjpzX2luZm8gPSB7ICJUZXN0
TGVnYWN5RmFjdG9yeUZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwg
Q1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24pIH07CiAKLUpT
VGVzdE5hbWVkQ29uc3RydWN0b3I6OkpTVGVzdE5hbWVkQ29uc3RydWN0b3IoU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0TmFtZWRD
b25zdHJ1Y3Rvcj4mJiBpbXBsKQotICAgIDogSlNET01XcmFwcGVyPFRlc3ROYW1lZENvbnN0cnVj
dG9yPihzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSkKK0pTVGVzdExlZ2Fj
eUZhY3RvcnlGdW5jdGlvbjo6SlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uKFN0cnVjdHVyZSog
c3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdExlZ2Fj
eUZhY3RvcnlGdW5jdGlvbj4mJiBpbXBsKQorICAgIDogSlNET01XcmFwcGVyPFRlc3RMZWdhY3lG
YWN0b3J5RnVuY3Rpb24+KHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKQog
ewogfQogCi12b2lkIEpTVGVzdE5hbWVkQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2
bSkKK3ZvaWQgSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uOjpmaW5pc2hDcmVhdGlvbihWTSYg
dm0pCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIEFTU0VSVChpbmhlcml0
cyh2bSwgaW5mbygpKSk7CiAKLSAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZjxBY3Rp
dmVET01PYmplY3QsIFRlc3ROYW1lZENvbnN0cnVjdG9yPjo6dmFsdWUsICJJbnRlcmZhY2UgaXMg
bWFya2VkIGFzIFtBY3RpdmVET01PYmplY3RdIGJ1dCBpbXBsZW1lbnRhdGlvbiBjbGFzcyBkb2Vz
IG5vdCBzdWJjbGFzcyBBY3RpdmVET01PYmplY3QuIik7CisgICAgc3RhdGljX2Fzc2VydChzdGQ6
OmlzX2Jhc2Vfb2Y8QWN0aXZlRE9NT2JqZWN0LCBUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uPjo6
dmFsdWUsICJJbnRlcmZhY2UgaXMgbWFya2VkIGFzIFtBY3RpdmVET01PYmplY3RdIGJ1dCBpbXBs
ZW1lbnRhdGlvbiBjbGFzcyBkb2VzIG5vdCBzdWJjbGFzcyBBY3RpdmVET01PYmplY3QuIik7CiAK
IH0KIAotSlNPYmplY3QqIEpTVGVzdE5hbWVkQ29uc3RydWN0b3I6OmNyZWF0ZVByb3RvdHlwZShW
TSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCitKU09iamVjdCogSlNUZXN0
TGVnYWN5RmFjdG9yeUZ1bmN0aW9uOjpjcmVhdGVQcm90b3R5cGUoVk0mIHZtLCBKU0RPTUdsb2Jh
bE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewotICAgIHJldHVybiBKU1Rlc3ROYW1lZENvbnN0cnVj
dG9yUHJvdG90eXBlOjpjcmVhdGUodm0sICZnbG9iYWxPYmplY3QsIEpTVGVzdE5hbWVkQ29uc3Ry
dWN0b3JQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgJmdsb2JhbE9iamVjdCwgZ2xvYmFs
T2JqZWN0Lm9iamVjdFByb3RvdHlwZSgpKSk7CisgICAgcmV0dXJuIEpTVGVzdExlZ2FjeUZhY3Rv
cnlGdW5jdGlvblByb3RvdHlwZTo6Y3JlYXRlKHZtLCAmZ2xvYmFsT2JqZWN0LCBKU1Rlc3RMZWdh
Y3lGYWN0b3J5RnVuY3Rpb25Qcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgJmdsb2JhbE9i
amVjdCwgZ2xvYmFsT2JqZWN0Lm9iamVjdFByb3RvdHlwZSgpKSk7CiB9CiAKLUpTT2JqZWN0KiBK
U1Rlc3ROYW1lZENvbnN0cnVjdG9yOjpwcm90b3R5cGUoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVj
dCYgZ2xvYmFsT2JqZWN0KQorSlNPYmplY3QqIEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbjo6
cHJvdG90eXBlKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKLSAg
ICByZXR1cm4gZ2V0RE9NUHJvdG90eXBlPEpTVGVzdE5hbWVkQ29uc3RydWN0b3I+KHZtLCBnbG9i
YWxPYmplY3QpOworICAgIHJldHVybiBnZXRET01Qcm90b3R5cGU8SlNUZXN0TGVnYWN5RmFjdG9y
eUZ1bmN0aW9uPih2bSwgZ2xvYmFsT2JqZWN0KTsKIH0KIAotSlNWYWx1ZSBKU1Rlc3ROYW1lZENv
bnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3RvcihWTSYgdm0sIGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QpCitKU1ZhbHVlIEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbjo6Z2V0Q29u
c3RydWN0b3IoVk0mIHZtLCBjb25zdCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewot
ICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3ROYW1lZENvbnN0cnVjdG9yQ29uc3Ry
dWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0
KSk7CisgICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5j
dGlvbkNvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGds
b2JhbE9iamVjdCkpOwogfQogCi1KU1ZhbHVlIEpTVGVzdE5hbWVkQ29uc3RydWN0b3I6OmdldE5h
bWVkQ29uc3RydWN0b3IoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorSlNW
YWx1ZSBKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb246OmdldExlZ2FjeUZhY3RvcnlGdW5jdGlv
bihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7Ci0gICAgcmV0dXJuIGdl
dERPTUNvbnN0cnVjdG9yPEpTVGVzdE5hbWVkQ29uc3RydWN0b3JOYW1lZENvbnN0cnVjdG9yPih2
bSwgKmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOworICAgIHJldHVy
biBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb25MZWdhY3lGYWN0
b3J5RnVuY3Rpb24+KHZtLCAqanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0
KSk7CiB9CiAKLXZvaWQgSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6ZGVzdHJveShKU0M6OkpTQ2Vs
bCogY2VsbCkKK3ZvaWQgSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uOjpkZXN0cm95KEpTQzo6
SlNDZWxsKiBjZWxsKQogewotICAgIEpTVGVzdE5hbWVkQ29uc3RydWN0b3IqIHRoaXNPYmplY3Qg
PSBzdGF0aWNfY2FzdDxKU1Rlc3ROYW1lZENvbnN0cnVjdG9yKj4oY2VsbCk7Ci0gICAgdGhpc09i
amVjdC0+SlNUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6fkpTVGVzdE5hbWVkQ29uc3RydWN0b3IoKTsK
KyAgICBKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24qIHRoaXNPYmplY3QgPSBzdGF0aWNfY2Fz
dDxKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24qPihjZWxsKTsKKyAgICB0aGlzT2JqZWN0LT5K
U1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb246On5KU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24o
KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUganNUZXN0TmFtZWRDb25zdHJ1Y3RvckNvbnN0cnVjdG9y
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIFByb3BlcnR5TmFtZSkKK0VuY29kZWRKU1ZhbHVlIGpzVGVzdExlZ2FjeUZhY3RvcnlG
dW5jdGlvbkNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBWTSYgdm0gPSBK
U0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIGF1dG8qIHByb3RvdHlwZSA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0TmFtZWRDb25zdHJ1Y3RvclByb3RvdHlwZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUo
dGhpc1ZhbHVlKSk7CisgICAgYXV0byogcHJvdG90eXBlID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RM
ZWdhY3lGYWN0b3J5RnVuY3Rpb25Qcm90b3R5cGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghcHJvdG90eXBlKSkKICAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSk7Ci0gICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3ROYW1lZENvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3Rv
cihKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpLCBwcm90b3R5cGUtPmdsb2JhbE9iamVj
dCgpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RMZWdhY3lGYWN0b3J5RnVu
Y3Rpb246OmdldENvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCksIHBy
b3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCkpKTsKIH0KIAotYm9vbCBzZXRKU1Rlc3ROYW1lZENvbnN0
cnVjdG9yQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorYm9v
bCBzZXRKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb25Db25zdHJ1Y3RvcihKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7CiAgICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKLSAgICBhdXRvKiBwcm90b3R5cGUgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE5hbWVkQ29u
c3RydWN0b3JQcm90b3R5cGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAg
IGF1dG8qIHByb3RvdHlwZSA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0
aW9uUHJvdG90eXBlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAo
VU5MSUtFTFkoIXByb3RvdHlwZSkpIHsKICAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjI5
LDQwICsyMjksNDAgQEAgYm9vbCBzZXRKU1Rlc3ROYW1lZENvbnN0cnVjdG9yQ29uc3RydWN0bwog
ICAgIHJldHVybiBwcm90b3R5cGUtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29u
c3RydWN0b3IsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpKTsKIH0KIAotSlNDOjpJc29T
dWJzcGFjZSogSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6c3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0m
IHZtKQorSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uOjpzdWJz
cGFjZUZvckltcGwoSlNDOjpWTSYgdm0pCiB7CiAgICAgYXV0byYgY2xpZW50RGF0YSA9ICpzdGF0
aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpOwogICAgIGF1dG8mIHNwYWNl
cyA9IGNsaWVudERhdGEuc3Vic3BhY2VzKCk7Ci0gICAgaWYgKGF1dG8qIHNwYWNlID0gc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRDb25zdHJ1Y3Rvci5nZXQoKSkKKyAgICBpZiAoYXV0byog
c3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24uZ2V0
KCkpCiAgICAgICAgIHJldHVybiBzcGFjZTsKLSAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFz
ZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVkQ29uc3RydWN0b3I+
IHx8ICFKU1Rlc3ROYW1lZENvbnN0cnVjdG9yOjpuZWVkc0Rlc3RydWN0aW9uKTsKLSAgICBpZiBj
b25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpT
VGVzdE5hbWVkQ29uc3RydWN0b3I+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RO
YW1lZENvbnN0cnVjdG9yID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lO
SVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rl
c3ROYW1lZENvbnN0cnVjdG9yKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92
PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbj4g
fHwgIUpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbjo6bmVlZHNEZXN0cnVjdGlvbik7CisgICAg
aWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0
LCBKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24+KQorICAgICAgICBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJ
U09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5
cGUuZ2V0KCksIEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbik7CiAgICAgZWxzZQotICAgICAg
ICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZENvbnN0cnVjdG9yID0gbWFrZVVuaXF1ZTxJ
c29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlw
ZS5nZXQoKSwgSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvcik7Ci0gICAgYXV0byogc3BhY2UgPSBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZENvbnN0cnVjdG9yLmdldCgpOworICAgICAgICBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24gPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBl
LmdldCgpLCBKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24pOworICAgIGF1dG8qIHNwYWNlID0g
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uLmdldCgpOwogSUdO
T1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKIElHTk9SRV9XQVJOSU5HU19C
RUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQotICAgIGlmICgmSlNUZXN0TmFtZWRDb25zdHJ1
Y3Rvcjo6dmlzaXRPdXRwdXRDb25zdHJhaW50cyAhPSAmSlNDOjpKU0NlbGw6OnZpc2l0T3V0cHV0
Q29uc3RyYWludHMpCisgICAgaWYgKCZKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb246OnZpc2l0
T3V0cHV0Q29uc3RyYWludHMgIT0gJkpTQzo6SlNDZWxsOjp2aXNpdE91dHB1dENvbnN0cmFpbnRz
KQogICAgICAgICBjbGllbnREYXRhLm91dHB1dENvbnN0cmFpbnRTcGFjZXMoKS5hcHBlbmQoc3Bh
Y2UpOwogSUdOT1JFX1dBUk5JTkdTX0VORAogSUdOT1JFX1dBUk5JTkdTX0VORAogICAgIHJldHVy
biBzcGFjZTsKIH0KIAotdm9pZCBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yOjphbmFseXplSGVhcChK
U0NlbGwqIGNlbGwsIEhlYXBBbmFseXplciYgYW5hbHl6ZXIpCit2b2lkIEpTVGVzdExlZ2FjeUZh
Y3RvcnlGdW5jdGlvbjo6YW5hbHl6ZUhlYXAoSlNDZWxsKiBjZWxsLCBIZWFwQW5hbHl6ZXImIGFu
YWx5emVyKQogewotICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0TmFtZWRDb25z
dHJ1Y3Rvcio+KGNlbGwpOworICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0TGVn
YWN5RmFjdG9yeUZ1bmN0aW9uKj4oY2VsbCk7CiAgICAgYW5hbHl6ZXIuc2V0V3JhcHBlZE9iamVj
dEZvckNlbGwoY2VsbCwgJnRoaXNPYmplY3QtPndyYXBwZWQoKSk7CiAgICAgaWYgKHRoaXNPYmpl
Y3QtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKICAgICAgICAgYW5hbHl6ZXIuc2V0TGFiZWxG
b3JDZWxsKGNlbGwsICJ1cmwgIiArIHRoaXNPYmplY3QtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KS0+dXJsKCkuc3RyaW5nKCkpOwogICAgIEJhc2U6OmFuYWx5emVIZWFwKGNlbGwsIGFuYWx5emVy
KTsKIH0KIAotYm9vbCBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yT3duZXI6OmlzUmVhY2hhYmxlRnJv
bU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiwgU2xv
dFZpc2l0b3ImIHZpc2l0b3IsIGNvbnN0IGNoYXIqKiByZWFzb24pCitib29sIEpTVGVzdExlZ2Fj
eUZhY3RvcnlGdW5jdGlvbk93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6Okhh
bmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCosIFNsb3RWaXNpdG9yJiB2aXNpdG9yLCBj
b25zdCBjaGFyKiogcmVhc29uKQogewotICAgIGF1dG8qIGpzVGVzdE5hbWVkQ29uc3RydWN0b3Ig
PSBqc0Nhc3Q8SlNUZXN0TmFtZWRDb25zdHJ1Y3Rvcio+KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgp
KTsKLSAgICBhdXRvJiB3cmFwcGVkID0ganNUZXN0TmFtZWRDb25zdHJ1Y3Rvci0+d3JhcHBlZCgp
OworICAgIGF1dG8qIGpzVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbiA9IGpzQ2FzdDxKU1Rlc3RM
ZWdhY3lGYWN0b3J5RnVuY3Rpb24qPihoYW5kbGUuc2xvdCgpLT5hc0NlbGwoKSk7CisgICAgYXV0
byYgd3JhcHBlZCA9IGpzVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbi0+d3JhcHBlZCgpOwogICAg
IGlmICghd3JhcHBlZC5pc0NvbnRleHRTdG9wcGVkKCkgJiYgd3JhcHBlZC5oYXNQZW5kaW5nQWN0
aXZpdHkoKSkgewogICAgICAgICBpZiAoVU5MSUtFTFkocmVhc29uKSkKICAgICAgICAgICAgICpy
ZWFzb24gPSAiQWN0aXZlRE9NT2JqZWN0IHdpdGggcGVuZGluZyBhY3Rpdml0eSI7CkBAIC0yNzMs
NTQgKzI3Myw1NCBAQCBib29sIEpTVGVzdE5hbWVkQ29uc3RydWN0b3JPd25lcjo6aXNSZWFjCiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIEpTVGVzdE5hbWVkQ29uc3RydWN0b3JPd25lcjo6
ZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqIGNvbnRleHQp
Cit2b2lkIEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbk93bmVyOjpmaW5hbGl6ZShKU0M6Okhh
bmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCogY29udGV4dCkKIHsKLSAgICBhdXRvKiBq
c1Rlc3ROYW1lZENvbnN0cnVjdG9yID0gc3RhdGljX2Nhc3Q8SlNUZXN0TmFtZWRDb25zdHJ1Y3Rv
cio+KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgpKTsKKyAgICBhdXRvKiBqc1Rlc3RMZWdhY3lGYWN0
b3J5RnVuY3Rpb24gPSBzdGF0aWNfY2FzdDxKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24qPiho
YW5kbGUuc2xvdCgpLT5hc0NlbGwoKSk7CiAgICAgYXV0byYgd29ybGQgPSAqc3RhdGljX2Nhc3Q8
RE9NV3JhcHBlcldvcmxkKj4oY29udGV4dCk7Ci0gICAgdW5jYWNoZVdyYXBwZXIod29ybGQsICZq
c1Rlc3ROYW1lZENvbnN0cnVjdG9yLT53cmFwcGVkKCksIGpzVGVzdE5hbWVkQ29uc3RydWN0b3Ip
OworICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxkLCAmanNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9u
LT53cmFwcGVkKCksIGpzVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbik7CiB9CiAKICNpZiBFTkFC
TEUoQklORElOR19JTlRFR1JJVFkpCiAjaWYgUExBVEZPUk0oV0lOKQogI3ByYWdtYSB3YXJuaW5n
KGRpc2FibGU6IDQ0ODMpCi1leHRlcm4gIkMiIHsgZXh0ZXJuIHZvaWQgKCpjb25zdCBfX2lkZW50
aWZpZXIoIj8/XzdUZXN0TmFtZWRDb25zdHJ1Y3RvckBXZWJDb3JlQEA2QkAiKVtdKSgpOyB9Citl
eHRlcm4gIkMiIHsgZXh0ZXJuIHZvaWQgKCpjb25zdCBfX2lkZW50aWZpZXIoIj8/XzdUZXN0TGVn
YWN5RmFjdG9yeUZ1bmN0aW9uQFdlYkNvcmVAQDZCQCIpW10pKCk7IH0KICNlbHNlCi1leHRlcm4g
IkMiIHsgZXh0ZXJuIHZvaWQqIF9aVFZON1dlYkNvcmUyMFRlc3ROYW1lZENvbnN0cnVjdG9yRVtd
OyB9CitleHRlcm4gIkMiIHsgZXh0ZXJuIHZvaWQqIF9aVFZON1dlYkNvcmUyNVRlc3RMZWdhY3lG
YWN0b3J5RnVuY3Rpb25FW107IH0KICNlbmRpZgogI2VuZGlmCiAKLUpTQzo6SlNWYWx1ZSB0b0pT
TmV3bHlDcmVhdGVkKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBSZWY8VGVzdE5hbWVkQ29uc3RydWN0b3I+JiYgaW1wbCkKK0pTQzo6SlNWYWx1
ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0RPTUdsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbj4mJiBpbXBsKQog
ewogCiAjaWYgRU5BQkxFKEJJTkRJTkdfSU5URUdSSVRZKQogICAgIGNvbnN0IHZvaWQqIGFjdHVh
bFZUYWJsZVBvaW50ZXIgPSBnZXRWVGFibGVQb2ludGVyKGltcGwucHRyKCkpOwogI2lmIFBMQVRG
T1JNKFdJTikKLSAgICB2b2lkKiBleHBlY3RlZFZUYWJsZVBvaW50ZXIgPSBfX2lkZW50aWZpZXIo
Ij8/XzdUZXN0TmFtZWRDb25zdHJ1Y3RvckBXZWJDb3JlQEA2QkAiKTsKKyAgICB2b2lkKiBleHBl
Y3RlZFZUYWJsZVBvaW50ZXIgPSBfX2lkZW50aWZpZXIoIj8/XzdUZXN0TGVnYWN5RmFjdG9yeUZ1
bmN0aW9uQFdlYkNvcmVAQDZCQCIpOwogI2Vsc2UKLSAgICB2b2lkKiBleHBlY3RlZFZUYWJsZVBv
aW50ZXIgPSAmX1pUVk43V2ViQ29yZTIwVGVzdE5hbWVkQ29uc3RydWN0b3JFWzJdOworICAgIHZv
aWQqIGV4cGVjdGVkVlRhYmxlUG9pbnRlciA9ICZfWlRWTjdXZWJDb3JlMjVUZXN0TGVnYWN5RmFj
dG9yeUZ1bmN0aW9uRVsyXTsKICNlbmRpZgogCi0gICAgLy8gSWYgdGhpcyBmYWlscyBUZXN0TmFt
ZWRDb25zdHJ1Y3RvciBkb2VzIG5vdCBoYXZlIGEgdnRhYmxlLCBzbyB5b3UgbmVlZCB0byBhZGQg
dGhlCisgICAgLy8gSWYgdGhpcyBmYWlscyBUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uIGRvZXMg
bm90IGhhdmUgYSB2dGFibGUsIHNvIHlvdSBuZWVkIHRvIGFkZCB0aGUKICAgICAvLyBJbXBsZW1l
bnRhdGlvbkxhY2tzVlRhYmxlIGF0dHJpYnV0ZSB0byB0aGUgaW50ZXJmYWNlIGRlZmluaXRpb24K
LSAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfcG9seW1vcnBoaWM8VGVzdE5hbWVkQ29uc3RydWN0
b3I+Ojp2YWx1ZSwgIlRlc3ROYW1lZENvbnN0cnVjdG9yIGlzIG5vdCBwb2x5bW9ycGhpYyIpOwor
ICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19wb2x5bW9ycGhpYzxUZXN0TGVnYWN5RmFjdG9yeUZ1
bmN0aW9uPjo6dmFsdWUsICJUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uIGlzIG5vdCBwb2x5bW9y
cGhpYyIpOwogCiAgICAgLy8gSWYgeW91IGhpdCB0aGlzIGFzc2VydGlvbiB5b3UgZWl0aGVyIGhh
dmUgYSB1c2UgYWZ0ZXIgZnJlZSBidWcsIG9yCi0gICAgLy8gVGVzdE5hbWVkQ29uc3RydWN0b3Ig
aGFzIHN1YmNsYXNzZXMuIElmIFRlc3ROYW1lZENvbnN0cnVjdG9yIGhhcyBzdWJjbGFzc2VzIHRo
YXQgZ2V0IHBhc3NlZAotICAgIC8vIHRvIHRvSlMoKSB3ZSBjdXJyZW50bHkgcmVxdWlyZSBUZXN0
TmFtZWRDb25zdHJ1Y3RvciB5b3UgdG8gb3B0IG91dCBvZiBiaW5kaW5nIGhhcmRlbmluZworICAg
IC8vIFRlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24gaGFzIHN1YmNsYXNzZXMuIElmIFRlc3RMZWdh
Y3lGYWN0b3J5RnVuY3Rpb24gaGFzIHN1YmNsYXNzZXMgdGhhdCBnZXQgcGFzc2VkCisgICAgLy8g
dG8gdG9KUygpIHdlIGN1cnJlbnRseSByZXF1aXJlIFRlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24g
eW91IHRvIG9wdCBvdXQgb2YgYmluZGluZyBoYXJkZW5pbmcKICAgICAvLyBieSBhZGRpbmcgdGhl
IFNraXBWVGFibGVWYWxpZGF0aW9uIGF0dHJpYnV0ZSB0byB0aGUgaW50ZXJmYWNlIElETCBkZWZp
bml0aW9uCiAgICAgUkVMRUFTRV9BU1NFUlQoYWN0dWFsVlRhYmxlUG9pbnRlciA9PSBleHBlY3Rl
ZFZUYWJsZVBvaW50ZXIpOwogI2VuZGlmCi0gICAgcmV0dXJuIGNyZWF0ZVdyYXBwZXI8VGVzdE5h
bWVkQ29uc3RydWN0b3I+KGdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7CisgICAgcmV0dXJu
IGNyZWF0ZVdyYXBwZXI8VGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbj4oZ2xvYmFsT2JqZWN0LCBX
VEZNb3ZlKGltcGwpKTsKIH0KIAotSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
VGVzdE5hbWVkQ29uc3RydWN0b3ImIGltcGwpCitKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uJiBpbXBsKQogewogICAgIHJldHVybiB3
cmFwKGxleGljYWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgaW1wbCk7CiB9CiAKLVRlc3RO
YW1lZENvbnN0cnVjdG9yKiBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yOjp0b1dyYXBwZWQoSlNDOjpW
TSYgdm0sIEpTQzo6SlNWYWx1ZSB2YWx1ZSkKK1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24qIEpT
VGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbjo6dG9XcmFwcGVkKEpTQzo6Vk0mIHZtLCBKU0M6OkpT
VmFsdWUgdmFsdWUpCiB7Ci0gICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNDYXN0PEpT
VGVzdE5hbWVkQ29uc3RydWN0b3IqPih2bSwgdmFsdWUpKQorICAgIGlmIChhdXRvKiB3cmFwcGVy
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24qPih2bSwgdmFsdWUp
KQogICAgICAgICByZXR1cm4gJndyYXBwZXItPndyYXBwZWQoKTsKICAgICByZXR1cm4gbnVsbHB0
cjsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uLmgJKHJl
dmlzaW9uIDI2NjU1OSkJKGZyb20gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuaDoyNjY1NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uLmgJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSw5NCBAQAorLyoKKyAgICBUaGlzIGZpbGUgaXMgcGFydCBv
ZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCisgICAgVGhpcyBmaWxlIGhhcyBiZWVu
IGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKKworICAg
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRo
aXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwor
ICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVl
dCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisj
cHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkpTRE9NV3JhcHBlci5oIgorI2luY2x1ZGUgIlRlc3RO
YW1lZENvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSlNUZXN0TmFtZWRDb25zdHJ1Y3RvciA6IHB1Ymxp
YyBKU0RPTVdyYXBwZXI8VGVzdE5hbWVkQ29uc3RydWN0b3I+IHsKK3B1YmxpYzoKKyAgICB1c2lu
ZyBCYXNlID0gSlNET01XcmFwcGVyPFRlc3ROYW1lZENvbnN0cnVjdG9yPjsKKyAgICBzdGF0aWMg
SlNUZXN0TmFtZWRDb25zdHJ1Y3RvciogY3JlYXRlKEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0TmFtZWRDb25zdHJ1Y3Rv
cj4mJiBpbXBsKQorICAgIHsKKyAgICAgICAgSlNUZXN0TmFtZWRDb25zdHJ1Y3RvciogcHRyID0g
bmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3ROYW1lZENvbnN0cnVjdG9yPihn
bG9iYWxPYmplY3QtPnZtKCkuaGVhcCkpIEpTVGVzdE5hbWVkQ29uc3RydWN0b3Ioc3RydWN0dXJl
LCAqZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKKyAgICAgICAgcHRyLT5maW5pc2hDcmVh
dGlvbihnbG9iYWxPYmplY3QtPnZtKCkpOworICAgICAgICByZXR1cm4gcHRyOworICAgIH0KKwor
ICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBjcmVhdGVQcm90b3R5cGUoSlNDOjpWTSYsIEpTRE9N
R2xvYmFsT2JqZWN0Jik7CisgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIHByb3RvdHlwZShKU0M6
OlZNJiwgSlNET01HbG9iYWxPYmplY3QmKTsKKyAgICBzdGF0aWMgVGVzdE5hbWVkQ29uc3RydWN0
b3IqIHRvV3JhcHBlZChKU0M6OlZNJiwgSlNDOjpKU1ZhbHVlKTsKKyAgICBzdGF0aWMgdm9pZCBk
ZXN0cm95KEpTQzo6SlNDZWxsKik7CisKKyAgICBERUNMQVJFX0lORk87CisKKyAgICBzdGF0aWMg
SlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJv
dG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBp
bmZvKCksIEpTQzo6Tm9uQXJyYXkpOworICAgIH0KKworICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUg
Z2V0Q29uc3RydWN0b3IoSlNDOjpWTSYsIGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAg
ICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldE5hbWVkQ29uc3RydWN0b3IoSlNDOjpWTSYsIEpTQzo6
SlNHbG9iYWxPYmplY3QqKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSwgSlNDOjpTdWJzcGFjZUFj
Y2VzcyBtb2RlPiBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYg
dm0pCisgICAgeworICAgICAgICBpZiBjb25zdGV4cHIgKG1vZGUgPT0gSlNDOjpTdWJzcGFjZUFj
Y2Vzczo6Q29uY3VycmVudGx5KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAg
IHJldHVybiBzdWJzcGFjZUZvckltcGwodm0pOworICAgIH0KKyAgICBzdGF0aWMgSlNDOjpJc29T
dWJzcGFjZSogc3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKTsKKyAgICBzdGF0aWMgdm9pZCBh
bmFseXplSGVhcChKU0NlbGwqLCBKU0M6OkhlYXBBbmFseXplciYpOworcHJvdGVjdGVkOgorICAg
IEpTVGVzdE5hbWVkQ29uc3RydWN0b3IoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVj
dCYsIFJlZjxUZXN0TmFtZWRDb25zdHJ1Y3Rvcj4mJik7CisKKyAgICB2b2lkIGZpbmlzaENyZWF0
aW9uKEpTQzo6Vk0mKTsKK307CisKK2NsYXNzIEpTVGVzdE5hbWVkQ29uc3RydWN0b3JPd25lciA6
IHB1YmxpYyBKU0M6OldlYWtIYW5kbGVPd25lciB7CitwdWJsaWM6CisgICAgdmlydHVhbCBib29s
IGlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4sIHZv
aWQqIGNvbnRleHQsIEpTQzo6U2xvdFZpc2l0b3ImLCBjb25zdCBjaGFyKiopOworICAgIHZpcnR1
YWwgdm9pZCBmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+LCB2b2lkKiBjb250ZXh0
KTsKK307CisKK2lubGluZSBKU0M6OldlYWtIYW5kbGVPd25lciogd3JhcHBlck93bmVyKERPTVdy
YXBwZXJXb3JsZCYsIFRlc3ROYW1lZENvbnN0cnVjdG9yKikKK3sKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8SlNUZXN0TmFtZWRDb25zdHJ1Y3Rvck93bmVyPiBvd25lcjsKKyAgICByZXR1cm4g
Jm93bmVyLmdldCgpOworfQorCitpbmxpbmUgdm9pZCogd3JhcHBlcktleShUZXN0TmFtZWRDb25z
dHJ1Y3Rvciogd3JhcHBhYmxlT2JqZWN0KQoreworICAgIHJldHVybiB3cmFwcGFibGVPYmplY3Q7
Cit9CisKK0pTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0RPTUdsb2Jh
bE9iamVjdCosIFRlc3ROYW1lZENvbnN0cnVjdG9yJik7CitpbmxpbmUgSlNDOjpKU1ZhbHVlIHRv
SlMoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNET01HbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdE5hbWVkQ29uc3RydWN0b3IqIGltcGwpIHsgcmV0dXJu
IGltcGwgPyB0b0pTKGxleGljYWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgKmltcGwpIDog
SlNDOjpqc051bGwoKTsgfQorSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpKU0ds
b2JhbE9iamVjdCosIEpTRE9NR2xvYmFsT2JqZWN0KiwgUmVmPFRlc3ROYW1lZENvbnN0cnVjdG9y
PiYmKTsKK2lubGluZSBKU0M6OkpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChKU0M6OkpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBSZWZQdHI8VGVzdE5hbWVkQ29uc3RydWN0b3I+JiYgaW1wbCkgeyByZXR1cm4gaW1wbCA/
IHRvSlNOZXdseUNyZWF0ZWQobGV4aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LCBpbXBs
LnJlbGVhc2VOb25OdWxsKCkpIDogSlNDOjpqc051bGwoKTsgfQorCit0ZW1wbGF0ZTw+IHN0cnVj
dCBKU0RPTVdyYXBwZXJDb252ZXJ0ZXJUcmFpdHM8VGVzdE5hbWVkQ29uc3RydWN0b3I+IHsKKyAg
ICB1c2luZyBXcmFwcGVyQ2xhc3MgPSBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yOworICAgIHVzaW5n
IFRvV3JhcHBlZFJldHVyblR5cGUgPSBUZXN0TmFtZWRDb25zdHJ1Y3Rvcio7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uLmgKX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fXwpBZGRlZDogc3ZuOmVvbC1zdHlsZQojIyAtMCwwICsxICMjCitMRgpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdExlZ2FjeUZhY3Rv
cnlGdW5jdGlvbi5oCShyZXZpc2lvbiAyNjY1NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTIxLDI0ICsyMSwyNCBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJKU0RP
TVdyYXBwZXIuaCIKLSNpbmNsdWRlICJUZXN0TmFtZWRDb25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUg
IlRlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24uaCIKICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95
ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBKU1Rlc3ROYW1lZENvbnN0cnVj
dG9yIDogcHVibGljIEpTRE9NV3JhcHBlcjxUZXN0TmFtZWRDb25zdHJ1Y3Rvcj4geworY2xhc3Mg
SlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uIDogcHVibGljIEpTRE9NV3JhcHBlcjxUZXN0TGVn
YWN5RmFjdG9yeUZ1bmN0aW9uPiB7CiBwdWJsaWM6Ci0gICAgdXNpbmcgQmFzZSA9IEpTRE9NV3Jh
cHBlcjxUZXN0TmFtZWRDb25zdHJ1Y3Rvcj47Ci0gICAgc3RhdGljIEpTVGVzdE5hbWVkQ29uc3Ry
dWN0b3IqIGNyZWF0ZShKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdE5hbWVkQ29uc3RydWN0b3I+JiYgaW1wbCkKKyAgICB1
c2luZyBCYXNlID0gSlNET01XcmFwcGVyPFRlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24+OworICAg
IHN0YXRpYyBKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24qIGNyZWF0ZShKU0M6OlN0cnVjdHVy
ZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdExl
Z2FjeUZhY3RvcnlGdW5jdGlvbj4mJiBpbXBsKQogICAgIHsKLSAgICAgICAgSlNUZXN0TmFtZWRD
b25zdHJ1Y3RvciogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RO
YW1lZENvbnN0cnVjdG9yPihnbG9iYWxPYmplY3QtPnZtKCkuaGVhcCkpIEpTVGVzdE5hbWVkQ29u
c3RydWN0b3Ioc3RydWN0dXJlLCAqZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKKyAgICAg
ICAgSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6
YWxsb2NhdGVDZWxsPEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbj4oZ2xvYmFsT2JqZWN0LT52
bSgpLmhlYXApKSBKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24oc3RydWN0dXJlLCAqZ2xvYmFs
T2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKICAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbihnbG9i
YWxPYmplY3QtPnZtKCkpOwogICAgICAgICByZXR1cm4gcHRyOwogICAgIH0KIAogICAgIHN0YXRp
YyBKU0M6OkpTT2JqZWN0KiBjcmVhdGVQcm90b3R5cGUoSlNDOjpWTSYsIEpTRE9NR2xvYmFsT2Jq
ZWN0Jik7CiAgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIHByb3RvdHlwZShKU0M6OlZNJiwgSlNE
T01HbG9iYWxPYmplY3QmKTsKLSAgICBzdGF0aWMgVGVzdE5hbWVkQ29uc3RydWN0b3IqIHRvV3Jh
cHBlZChKU0M6OlZNJiwgSlNDOjpKU1ZhbHVlKTsKKyAgICBzdGF0aWMgVGVzdExlZ2FjeUZhY3Rv
cnlGdW5jdGlvbiogdG9XcmFwcGVkKEpTQzo6Vk0mLCBKU0M6OkpTVmFsdWUpOwogICAgIHN0YXRp
YyB2b2lkIGRlc3Ryb3koSlNDOjpKU0NlbGwqKTsKIAogICAgIERFQ0xBUkVfSU5GTzsKQEAgLTQ5
LDcgKzQ5LDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0
Q29uc3RydWN0b3IoSlNDOjpWTSYsIGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKLSAgICBz
dGF0aWMgSlNDOjpKU1ZhbHVlIGdldE5hbWVkQ29uc3RydWN0b3IoSlNDOjpWTSYsIEpTQzo6SlNH
bG9iYWxPYmplY3QqKTsKKyAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldExlZ2FjeUZhY3RvcnlG
dW5jdGlvbihKU0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOwogICAgIHRlbXBsYXRlPHR5
cGVuYW1lLCBKU0M6OlN1YnNwYWNlQWNjZXNzIG1vZGU+IHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNl
KiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKICAgICB7CiAgICAgICAgIGlmIGNvbnN0ZXhwciAo
bW9kZSA9PSBKU0M6OlN1YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50bHkpCkBAIC01OSwzNiArNTks
MzYgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcklt
cGwoSlNDOjpWTSYgdm0pOwogICAgIHN0YXRpYyB2b2lkIGFuYWx5emVIZWFwKEpTQ2VsbCosIEpT
Qzo6SGVhcEFuYWx5emVyJik7CiBwcm90ZWN0ZWQ6Ci0gICAgSlNUZXN0TmFtZWRDb25zdHJ1Y3Rv
cihKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0JiwgUmVmPFRlc3ROYW1lZENvbnN0
cnVjdG9yPiYmKTsKKyAgICBKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24oSlNDOjpTdHJ1Y3R1
cmUqLCBKU0RPTUdsb2JhbE9iamVjdCYsIFJlZjxUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uPiYm
KTsKIAogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYpOwogfTsKIAotY2xhc3MgSlNU
ZXN0TmFtZWRDb25zdHJ1Y3Rvck93bmVyIDogcHVibGljIEpTQzo6V2Vha0hhbmRsZU93bmVyIHsK
K2NsYXNzIEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbk93bmVyIDogcHVibGljIEpTQzo6V2Vh
a0hhbmRsZU93bmVyIHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNSZWFjaGFibGVGcm9t
T3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiwgdm9pZCogY29udGV4dCwgSlND
OjpTbG90VmlzaXRvciYsIGNvbnN0IGNoYXIqKik7CiAgICAgdmlydHVhbCB2b2lkIGZpbmFsaXpl
KEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4sIHZvaWQqIGNvbnRleHQpOwogfTsKIAotaW5saW5l
IEpTQzo6V2Vha0hhbmRsZU93bmVyKiB3cmFwcGVyT3duZXIoRE9NV3JhcHBlcldvcmxkJiwgVGVz
dE5hbWVkQ29uc3RydWN0b3IqKQoraW5saW5lIEpTQzo6V2Vha0hhbmRsZU93bmVyKiB3cmFwcGVy
T3duZXIoRE9NV3JhcHBlcldvcmxkJiwgVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbiopCiB7Ci0g
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEpTVGVzdE5hbWVkQ29uc3RydWN0b3JPd25lcj4gb3du
ZXI7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlv
bk93bmVyPiBvd25lcjsKICAgICByZXR1cm4gJm93bmVyLmdldCgpOwogfQogCi1pbmxpbmUgdm9p
ZCogd3JhcHBlcktleShUZXN0TmFtZWRDb25zdHJ1Y3Rvciogd3JhcHBhYmxlT2JqZWN0KQoraW5s
aW5lIHZvaWQqIHdyYXBwZXJLZXkoVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbiogd3JhcHBhYmxl
T2JqZWN0KQogewogICAgIHJldHVybiB3cmFwcGFibGVPYmplY3Q7CiB9CiAKLUpTQzo6SlNWYWx1
ZSB0b0pTKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0RPTUdsb2JhbE9iamVjdCosIFRlc3ROYW1l
ZENvbnN0cnVjdG9yJik7Ci1pbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgVGVzdE5hbWVkQ29uc3RydWN0b3IqIGltcGwpIHsgcmV0dXJuIGltcGwgPyB0b0pTKGxleGlj
YWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgKmltcGwpIDogSlNDOjpqc051bGwoKTsgfQot
SlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTRE9N
R2xvYmFsT2JqZWN0KiwgUmVmPFRlc3ROYW1lZENvbnN0cnVjdG9yPiYmKTsKLWlubGluZSBKU0M6
OkpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWZQdHI8VGVzdE5h
bWVkQ29uc3RydWN0b3I+JiYgaW1wbCkgeyByZXR1cm4gaW1wbCA/IHRvSlNOZXdseUNyZWF0ZWQo
bGV4aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LCBpbXBsLnJlbGVhc2VOb25OdWxsKCkp
IDogSlNDOjpqc051bGwoKTsgfQotCi10ZW1wbGF0ZTw+IHN0cnVjdCBKU0RPTVdyYXBwZXJDb252
ZXJ0ZXJUcmFpdHM8VGVzdE5hbWVkQ29uc3RydWN0b3I+IHsKLSAgICB1c2luZyBXcmFwcGVyQ2xh
c3MgPSBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yOwotICAgIHVzaW5nIFRvV3JhcHBlZFJldHVyblR5
cGUgPSBUZXN0TmFtZWRDb25zdHJ1Y3Rvcio7CitKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkpTR2xv
YmFsT2JqZWN0KiwgSlNET01HbG9iYWxPYmplY3QqLCBUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9u
Jik7CitpbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdExlZ2Fj
eUZhY3RvcnlGdW5jdGlvbiogaW1wbCkgeyByZXR1cm4gaW1wbCA/IHRvSlMobGV4aWNhbEdsb2Jh
bE9iamVjdCwgZ2xvYmFsT2JqZWN0LCAqaW1wbCkgOiBKU0M6OmpzTnVsbCgpOyB9CitKU0M6OkpT
VmFsdWUgdG9KU05ld2x5Q3JlYXRlZChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNET01HbG9iYWxP
YmplY3QqLCBSZWY8VGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbj4mJik7CitpbmxpbmUgSlNDOjpK
U1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmUHRyPFRlc3RMZWdh
Y3lGYWN0b3J5RnVuY3Rpb24+JiYgaW1wbCkgeyByZXR1cm4gaW1wbCA/IHRvSlNOZXdseUNyZWF0
ZWQobGV4aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LCBpbXBsLnJlbGVhc2VOb25OdWxs
KCkpIDogSlNDOjpqc051bGwoKTsgfQorCit0ZW1wbGF0ZTw+IHN0cnVjdCBKU0RPTVdyYXBwZXJD
b252ZXJ0ZXJUcmFpdHM8VGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbj4geworICAgIHVzaW5nIFdy
YXBwZXJDbGFzcyA9IEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbjsKKyAgICB1c2luZyBUb1dy
YXBwZWRSZXR1cm5UeXBlID0gVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbio7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0b3Iu
Y3BwCShyZXZpc2lvbiAyNjY1NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAJKG5vbmV4aXN0ZW50KQpAQCAtMSwz
MjggKzAsMCBAQAotLyoKLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4g
c291cmNlIHByb2plY3QuCi0gICAgVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5l
cmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKLQotICAgIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAgICBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICAg
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlcgotICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KLQotICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gICAgTUVSQ0hBTlRB
QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUK
LSAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLQot
ICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UKLSAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRo
ZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICAgIHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0g
ICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0qLwotCi0jaW5jbHVkZSAiY29uZmlnLmgi
Ci0jaW5jbHVkZSAiSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5oIgotCi0jaW5jbHVkZSAiQWN0aXZl
RE9NT2JqZWN0LmgiCi0jaW5jbHVkZSAiRE9NSXNvU3Vic3BhY2VzLmgiCi0jaW5jbHVkZSAiRG9j
dW1lbnQuaCIKLSNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKLSNpbmNsdWRlICJKU0RPTUNvbnN0
cnVjdG9yTm90Q29uc3RydWN0YWJsZS5oIgotI2luY2x1ZGUgIkpTRE9NQ29udmVydEludGVyZmFj
ZS5oIgotI2luY2x1ZGUgIkpTRE9NQ29udmVydFN0cmluZ3MuaCIKLSNpbmNsdWRlICJKU0RPTUV4
Y2VwdGlvbkhhbmRsaW5nLmgiCi0jaW5jbHVkZSAiSlNET01OYW1lZENvbnN0cnVjdG9yLmgiCi0j
aW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKLSNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25D
b250ZXh0LmgiCi0jaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgotI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvSGVhcEFuYWx5emVyLmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5o
PgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxU
eXBlLmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Vic3BhY2VJbmxpbmVzLmg+Ci0jaW5j
bHVkZSA8d3RmL0dldFB0ci5oPgotI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+
Ci0jaW5jbHVkZSA8d3RmL1VSTC5oPgotCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLXVzaW5nIG5h
bWVzcGFjZSBKU0M7Ci0KLS8vIEF0dHJpYnV0ZXMKLQotSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3ROYW1lZENvbnN0cnVjdG9yQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6
RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLWJvb2wgc2V0SlNUZXN0TmFtZWRD
b25zdHJ1Y3RvckNvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRK
U1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKLQotY2xhc3MgSlNUZXN0TmFtZWRDb25zdHJ1
Y3RvclByb3RvdHlwZSBmaW5hbCA6IHB1YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3QgewotcHVi
bGljOgotICAgIHVzaW5nIEJhc2UgPSBKU0M6OkpTTm9uRmluYWxPYmplY3Q7Ci0gICAgc3RhdGlj
IEpTVGVzdE5hbWVkQ29uc3RydWN0b3JQcm90b3R5cGUqIGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNE
T01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkK
LSAgICB7Ci0gICAgICAgIEpTVGVzdE5hbWVkQ29uc3RydWN0b3JQcm90b3R5cGUqIHB0ciA9IG5l
dyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0TmFtZWRDb25zdHJ1Y3RvclByb3Rv
dHlwZT4odm0uaGVhcCkpIEpTVGVzdE5hbWVkQ29uc3RydWN0b3JQcm90b3R5cGUodm0sIGdsb2Jh
bE9iamVjdCwgc3RydWN0dXJlKTsKLSAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbih2bSk7Ci0g
ICAgICAgIHJldHVybiBwdHI7Ci0gICAgfQotCi0gICAgREVDTEFSRV9JTkZPOwotICAgIHRlbXBs
YXRlPHR5cGVuYW1lIENlbGxUeXBlLCBKU0M6OlN1YnNwYWNlQWNjZXNzPgotICAgIHN0YXRpYyBK
U0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKLSAgICB7Ci0gICAgICAg
IFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdE5hbWVkQ29uc3RydWN0
b3JQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7
Ci0gICAgfQotICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6
Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBw
cm90b3R5cGUpCi0gICAgewotICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2
bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBl
LCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEpTVGVz
dE5hbWVkQ29uc3RydWN0b3JQcm90b3R5cGUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmpl
Y3QqLCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQotICAgICAgICA6IEpTQzo6SlNOb25GaW5h
bE9iamVjdCh2bSwgc3RydWN0dXJlKQotICAgIHsKLSAgICB9Ci0KLSAgICB2b2lkIGZpbmlzaENy
ZWF0aW9uKEpTQzo6Vk0mKTsKLX07Ci1TVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJM
RShKU1Rlc3ROYW1lZENvbnN0cnVjdG9yUHJvdG90eXBlLCBKU1Rlc3ROYW1lZENvbnN0cnVjdG9y
UHJvdG90eXBlOjpCYXNlKTsKLQotdXNpbmcgSlNUZXN0TmFtZWRDb25zdHJ1Y3RvckNvbnN0cnVj
dG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNUZXN0TmFtZWRDb25zdHJ1
Y3Rvcj47Ci11c2luZyBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yTmFtZWRDb25zdHJ1Y3RvciA9IEpT
RE9NTmFtZWRDb25zdHJ1Y3RvcjxKU1Rlc3ROYW1lZENvbnN0cnVjdG9yPjsKLQotdGVtcGxhdGU8
PiBKU1ZhbHVlIEpTVGVzdE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9y
U3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2Jq
ZWN0KQotewotICAgIFVOVVNFRF9QQVJBTSh2bSk7Ci0gICAgcmV0dXJuIGdsb2JhbE9iamVjdC5m
dW5jdGlvblByb3RvdHlwZSgpOwotfQotCi10ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0TmFtZWRDb25z
dHJ1Y3RvckNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xv
YmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCi17Ci0gICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdE5hbWVkQ29uc3RydWN0b3I6OnByb3RvdHlwZSh2bSwg
Z2xvYmFsT2JqZWN0KSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0pOwotICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250
cml2aWFsU3RyaW5nKHZtLCAiVGVzdE5hbWVkQ29uc3RydWN0b3IiX3MpLCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsK
LSAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMSks
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0pOwotfQotCi10ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3ROYW1l
ZENvbnN0cnVjdG9yQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3ROYW1lZENvbnN0cnVjdG9y
IiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShK
U1Rlc3ROYW1lZENvbnN0cnVjdG9yQ29uc3RydWN0b3IpIH07Ci0KLXRlbXBsYXRlPD4gRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yTmFtZWRDb25zdHJ1
Y3Rvcjo6Y29uc3RydWN0KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkKLXsKLSAgICBWTSYgdm0gPSBsZXhpY2FsR2xvYmFsT2JqZWN0LT52
bSgpOwotICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAg
IGF1dG8qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0TmFtZWRDb25zdHJ1Y3Rvck5hbWVkQ29u
c3RydWN0b3IqPihjYWxsRnJhbWUtPmpzQ2FsbGVlKCkpOwotICAgIEFTU0VSVChjYXN0ZWRUaGlz
KTsKLSAgICBpZiAoVU5MSUtFTFkoY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkgPCAxKSkKLSAg
ICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0KSk7Ci0g
ICAgYXV0byogY29udGV4dCA9IGNhc3RlZFRoaXMtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsK
LSAgICBpZiAoVU5MSUtFTFkoIWNvbnRleHQpKQotICAgICAgICByZXR1cm4gdGhyb3dDb25zdHJ1
Y3RvclNjcmlwdEV4ZWN1dGlvbkNvbnRleHRVbmF2YWlsYWJsZUVycm9yKCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aHJvd1Njb3BlLCAiVGVzdE5hbWVkQ29uc3RydWN0b3IiKTsKLSAgICBBU1NFUlQo
Y29udGV4dC0+aXNEb2N1bWVudCgpKTsKLSAgICBhdXRvJiBkb2N1bWVudCA9IGRvd25jYXN0PERv
Y3VtZW50PigqY29udGV4dCk7Ci0gICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9
IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7Ci0gICAgYXV0byBzdHIxID0gY29udmVy
dDxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSk7
Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
LSAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQxID0gY2FsbEZyYW1lLT5hcmd1bWVu
dCgxKTsKLSAgICBhdXRvIHN0cjIgPSBhcmd1bWVudDEudmFsdWUoKS5pc1VuZGVmaW5lZCgpID8g
ImRlZmF1bHRTdHJpbmciX3MgOiBjb252ZXJ0PElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxP
YmplY3QsIGFyZ3VtZW50MS52YWx1ZSgpKTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1
bWVudDIgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDIpOwotICAgIGF1dG8gc3RyMyA9IGFyZ3VtZW50
Mi52YWx1ZSgpLmlzVW5kZWZpbmVkKCkgPyBTdHJpbmcoKSA6IGNvbnZlcnQ8SURMRE9NU3RyaW5n
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQyLnZhbHVlKCkpOwotICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgYXV0byBvYmpl
Y3QgPSBUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6Y3JlYXRlRm9ySlNDb25zdHJ1Y3Rvcihkb2N1bWVu
dCwgV1RGTW92ZShzdHIxKSwgV1RGTW92ZShzdHIyKSwgV1RGTW92ZShzdHIzKSk7Ci0gICAgc3Rh
dGljX2Fzc2VydChJc0V4Y2VwdGlvbk9yPGRlY2x0eXBlKG9iamVjdCk+Ojp2YWx1ZSk7Ci0gICAg
c3RhdGljX2Fzc2VydChkZWNsdHlwZShvYmplY3QpOjpSZXR1cm5UeXBlOjppc1JlZik7Ci0gICAg
YXV0byBqc1ZhbHVlID0gdG9KU05ld2x5Q3JlYXRlZDxJRExJbnRlcmZhY2U8VGVzdE5hbWVkQ29u
c3RydWN0b3I+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVj
dCgpLCB0aHJvd1Njb3BlLCBXVEZNb3ZlKG9iamVjdCkpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgeyB9KTsKLSAgICBzZXRTdWJjbGFzc1N0cnVjdHVyZUlmTmVlZGVkPFRl
c3ROYW1lZENvbnN0cnVjdG9yPihsZXhpY2FsR2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIGFzT2Jq
ZWN0KGpzVmFsdWUpKTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7
Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1ZhbHVlKTsKLX0KLQotdGVtcGxhdGU8PiBK
U1ZhbHVlIEpTVGVzdE5hbWVkQ29uc3RydWN0b3JOYW1lZENvbnN0cnVjdG9yOjpwcm90b3R5cGVG
b3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxP
YmplY3QpCi17Ci0gICAgVU5VU0VEX1BBUkFNKHZtKTsKLSAgICByZXR1cm4gZ2xvYmFsT2JqZWN0
LmZ1bmN0aW9uUHJvdG90eXBlKCk7Ci19Ci0KLXRlbXBsYXRlPD4gdm9pZCBKU1Rlc3ROYW1lZENv
bnN0cnVjdG9yTmFtZWRDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBK
U0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQotewotICAgIHB1dERpcmVjdCh2bSwgdm0u
cHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yOjpwcm90b3R5
cGUodm0sIGdsb2JhbE9iamVjdCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUg
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKTsKLSAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUs
IGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIkF1ZGlvIl9zKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7Ci0gICAgcHV0
RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDEpLCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtKTsKLX0KLQotdGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0TmFtZWRDb25zdHJ1
Y3Rvck5hbWVkQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkF1ZGlvIiwgJkJhc2U6OnNfaW5mbywg
bnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3ROYW1lZENvbnN0cnVj
dG9yTmFtZWRDb25zdHJ1Y3RvcikgfTsKLQotLyogSGFzaCB0YWJsZSBmb3IgcHJvdG90eXBlICov
Ci0KLXN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yUHJv
dG90eXBlVGFibGVWYWx1ZXNbXSA9Ci17Ci0gICAgeyAiY29uc3RydWN0b3IiLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpz
VGVzdE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8
UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdE5hbWVkQ29uc3RydWN0b3JD
b25zdHJ1Y3RvcikgfSB9LAotfTsKLQotY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE5hbWVkQ29uc3Ry
dWN0b3JQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlc3ROYW1lZENvbnN0cnVjdG9yIiwgJkJhc2U6
OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3ROYW1l
ZENvbnN0cnVjdG9yUHJvdG90eXBlKSB9OwotCi12b2lkIEpTVGVzdE5hbWVkQ29uc3RydWN0b3JQ
cm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKLXsKLSAgICBCYXNlOjpmaW5pc2hDcmVh
dGlvbih2bSk7Ci0gICAgcmVpZnlTdGF0aWNQcm9wZXJ0aWVzKHZtLCBKU1Rlc3ROYW1lZENvbnN0
cnVjdG9yOjppbmZvKCksIEpTVGVzdE5hbWVkQ29uc3RydWN0b3JQcm90b3R5cGVUYWJsZVZhbHVl
cywgKnRoaXMpOwotICAgIEpTQ19UT19TVFJJTkdfVEFHX1dJVEhPVVRfVFJBTlNJVElPTigpOwot
fQotCi1jb25zdCBDbGFzc0luZm8gSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAi
VGVzdE5hbWVkQ29uc3RydWN0b3IiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBD
UkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE5hbWVkQ29uc3RydWN0b3IpIH07Ci0KLUpTVGVzdE5h
bWVkQ29uc3RydWN0b3I6OkpTVGVzdE5hbWVkQ29uc3RydWN0b3IoU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0TmFtZWRDb25zdHJ1
Y3Rvcj4mJiBpbXBsKQotICAgIDogSlNET01XcmFwcGVyPFRlc3ROYW1lZENvbnN0cnVjdG9yPihz
dHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSkKLXsKLX0KLQotdm9pZCBKU1Rl
c3ROYW1lZENvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCi17Ci0gICAgQmFzZTo6
ZmluaXNoQ3JlYXRpb24odm0pOwotICAgIEFTU0VSVChpbmhlcml0cyh2bSwgaW5mbygpKSk7Ci0K
LSAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZjxBY3RpdmVET01PYmplY3QsIFRlc3RO
YW1lZENvbnN0cnVjdG9yPjo6dmFsdWUsICJJbnRlcmZhY2UgaXMgbWFya2VkIGFzIFtBY3RpdmVE
T01PYmplY3RdIGJ1dCBpbXBsZW1lbnRhdGlvbiBjbGFzcyBkb2VzIG5vdCBzdWJjbGFzcyBBY3Rp
dmVET01PYmplY3QuIik7Ci0KLX0KLQotSlNPYmplY3QqIEpTVGVzdE5hbWVkQ29uc3RydWN0b3I6
OmNyZWF0ZVByb3RvdHlwZShWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3Qp
Ci17Ci0gICAgcmV0dXJuIEpTVGVzdE5hbWVkQ29uc3RydWN0b3JQcm90b3R5cGU6OmNyZWF0ZSh2
bSwgJmdsb2JhbE9iamVjdCwgSlNUZXN0TmFtZWRDb25zdHJ1Y3RvclByb3RvdHlwZTo6Y3JlYXRl
U3RydWN0dXJlKHZtLCAmZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3Qub2JqZWN0UHJvdG90eXBl
KCkpKTsKLX0KLQotSlNPYmplY3QqIEpTVGVzdE5hbWVkQ29uc3RydWN0b3I6OnByb3RvdHlwZShW
TSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCi17Ci0gICAgcmV0dXJuIGdl
dERPTVByb3RvdHlwZTxKU1Rlc3ROYW1lZENvbnN0cnVjdG9yPih2bSwgZ2xvYmFsT2JqZWN0KTsK
LX0KLQotSlNWYWx1ZSBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3RvcihWTSYg
dm0sIGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCi17Ci0gICAgcmV0dXJuIGdl
dERPTUNvbnN0cnVjdG9yPEpTVGVzdE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1Y3Rvcj4odm0sICpq
c0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKLX0KLQotSlNW
YWx1ZSBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yOjpnZXROYW1lZENvbnN0cnVjdG9yKFZNJiB2bSwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKLXsKLSAgICByZXR1cm4gZ2V0RE9NQ29uc3Ry
dWN0b3I8SlNUZXN0TmFtZWRDb25zdHJ1Y3Rvck5hbWVkQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0
PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7Ci19Ci0KLXZvaWQgSlNUZXN0TmFt
ZWRDb25zdHJ1Y3Rvcjo6ZGVzdHJveShKU0M6OkpTQ2VsbCogY2VsbCkKLXsKLSAgICBKU1Rlc3RO
YW1lZENvbnN0cnVjdG9yKiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNUZXN0TmFtZWRDb25z
dHJ1Y3Rvcio+KGNlbGwpOwotICAgIHRoaXNPYmplY3QtPkpTVGVzdE5hbWVkQ29uc3RydWN0b3I6
On5KU1Rlc3ROYW1lZENvbnN0cnVjdG9yKCk7Ci19Ci0KLUVuY29kZWRKU1ZhbHVlIGpzVGVzdE5h
bWVkQ29uc3RydWN0b3JDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCi17Ci0gICAgVk0m
IHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBhdXRvKiBwcm90b3R5cGUgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdE5hbWVkQ29uc3RydWN0b3JQcm90b3R5cGUqPih2bSwgSlNWYWx1ZTo6
ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghcHJvdG90eXBlKSkKLSAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3ROYW1lZENvbnN0cnVjdG9yOjpn
ZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpLCBwcm90b3R5cGUt
Pmdsb2JhbE9iamVjdCgpKSk7Ci19Ci0KLWJvb2wgc2V0SlNUZXN0TmFtZWRDb25zdHJ1Y3RvckNv
bnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKLXsKLSAgICBWTSYg
dm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwotICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIGF1dG8qIHByb3RvdHlwZSA9IGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0TmFtZWRDb25zdHJ1Y3RvclByb3RvdHlwZSo+KHZtLCBKU1ZhbHVlOjpk
ZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFwcm90b3R5cGUpKSB7Ci0gICAg
ICAgIHRocm93Vk1UeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSk7Ci0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4g
Y29uc3RydWN0b3IKLSAgICByZXR1cm4gcHJvdG90eXBlLT5wdXREaXJlY3Qodm0sIHZtLnByb3Bl
cnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSk7Ci19
Ci0KLUpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE5hbWVkQ29uc3RydWN0b3I6OnN1YnNwYWNlRm9y
SW1wbChKU0M6OlZNJiB2bSkKLXsKLSAgICBhdXRvJiBjbGllbnREYXRhID0gKnN0YXRpY19jYXN0
PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7Ci0gICAgYXV0byYgc3BhY2VzID0gY2xp
ZW50RGF0YS5zdWJzcGFjZXMoKTsKLSAgICBpZiAoYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJz
cGFjZUZvclRlc3ROYW1lZENvbnN0cnVjdG9yLmdldCgpKQotICAgICAgICByZXR1cm4gc3BhY2U7
Ci0gICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxl
T2JqZWN0LCBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yPiB8fCAhSlNUZXN0TmFtZWRDb25zdHJ1Y3Rv
cjo6bmVlZHNEZXN0cnVjdGlvbik7Ci0gICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2Zf
djxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yPikKLSAg
ICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRDb25zdHJ1Y3RvciA9IG1ha2VVbmlx
dWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJs
ZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvcik7Ci0gICAg
ZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZENvbnN0cnVjdG9yID0g
bWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2Vs
bEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvcik7Ci0gICAgYXV0byog
c3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZENvbnN0cnVjdG9yLmdldCgpOwot
SUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKLUlHTk9SRV9XQVJOSU5H
U19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQotICAgIGlmICgmSlNUZXN0TmFtZWRDb25z
dHJ1Y3Rvcjo6dmlzaXRPdXRwdXRDb25zdHJhaW50cyAhPSAmSlNDOjpKU0NlbGw6OnZpc2l0T3V0
cHV0Q29uc3RyYWludHMpCi0gICAgICAgIGNsaWVudERhdGEub3V0cHV0Q29uc3RyYWludFNwYWNl
cygpLmFwcGVuZChzcGFjZSk7Ci1JR05PUkVfV0FSTklOR1NfRU5ECi1JR05PUkVfV0FSTklOR1Nf
RU5ECi0gICAgcmV0dXJuIHNwYWNlOwotfQotCi12b2lkIEpTVGVzdE5hbWVkQ29uc3RydWN0b3I6
OmFuYWx5emVIZWFwKEpTQ2VsbCogY2VsbCwgSGVhcEFuYWx5emVyJiBhbmFseXplcikKLXsKLSAg
ICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdE5hbWVkQ29uc3RydWN0b3IqPihjZWxs
KTsKLSAgICBhbmFseXplci5zZXRXcmFwcGVkT2JqZWN0Rm9yQ2VsbChjZWxsLCAmdGhpc09iamVj
dC0+d3JhcHBlZCgpKTsKLSAgICBpZiAodGhpc09iamVjdC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpKQotICAgICAgICBhbmFseXplci5zZXRMYWJlbEZvckNlbGwoY2VsbCwgInVybCAiICsgdGhp
c09iamVjdC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT51cmwoKS5zdHJpbmcoKSk7Ci0gICAg
QmFzZTo6YW5hbHl6ZUhlYXAoY2VsbCwgYW5hbHl6ZXIpOwotfQotCi1ib29sIEpTVGVzdE5hbWVk
Q29uc3RydWN0b3JPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8
SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqLCBTbG90VmlzaXRvciYgdmlzaXRvciwgY29uc3Qg
Y2hhcioqIHJlYXNvbikKLXsKLSAgICBhdXRvKiBqc1Rlc3ROYW1lZENvbnN0cnVjdG9yID0ganND
YXN0PEpTVGVzdE5hbWVkQ29uc3RydWN0b3IqPihoYW5kbGUuc2xvdCgpLT5hc0NlbGwoKSk7Ci0g
ICAgYXV0byYgd3JhcHBlZCA9IGpzVGVzdE5hbWVkQ29uc3RydWN0b3ItPndyYXBwZWQoKTsKLSAg
ICBpZiAoIXdyYXBwZWQuaXNDb250ZXh0U3RvcHBlZCgpICYmIHdyYXBwZWQuaGFzUGVuZGluZ0Fj
dGl2aXR5KCkpIHsKLSAgICAgICAgaWYgKFVOTElLRUxZKHJlYXNvbikpCi0gICAgICAgICAgICAq
cmVhc29uID0gIkFjdGl2ZURPTU9iamVjdCB3aXRoIHBlbmRpbmcgYWN0aXZpdHkiOwotICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICAgfQotICAgIFVOVVNFRF9QQVJBTSh2aXNpdG9yKTsKLSAgICBV
TlVTRURfUEFSQU0ocmVhc29uKTsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLXZvaWQgSlNUZXN0
TmFtZWRDb25zdHJ1Y3Rvck93bmVyOjpmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+
IGhhbmRsZSwgdm9pZCogY29udGV4dCkKLXsKLSAgICBhdXRvKiBqc1Rlc3ROYW1lZENvbnN0cnVj
dG9yID0gc3RhdGljX2Nhc3Q8SlNUZXN0TmFtZWRDb25zdHJ1Y3Rvcio+KGhhbmRsZS5zbG90KCkt
PmFzQ2VsbCgpKTsKLSAgICBhdXRvJiB3b3JsZCA9ICpzdGF0aWNfY2FzdDxET01XcmFwcGVyV29y
bGQqPihjb250ZXh0KTsKLSAgICB1bmNhY2hlV3JhcHBlcih3b3JsZCwgJmpzVGVzdE5hbWVkQ29u
c3RydWN0b3ItPndyYXBwZWQoKSwganNUZXN0TmFtZWRDb25zdHJ1Y3Rvcik7Ci19Ci0KLSNpZiBF
TkFCTEUoQklORElOR19JTlRFR1JJVFkpCi0jaWYgUExBVEZPUk0oV0lOKQotI3ByYWdtYSB3YXJu
aW5nKGRpc2FibGU6IDQ0ODMpCi1leHRlcm4gIkMiIHsgZXh0ZXJuIHZvaWQgKCpjb25zdCBfX2lk
ZW50aWZpZXIoIj8/XzdUZXN0TmFtZWRDb25zdHJ1Y3RvckBXZWJDb3JlQEA2QkAiKVtdKSgpOyB9
Ci0jZWxzZQotZXh0ZXJuICJDIiB7IGV4dGVybiB2b2lkKiBfWlRWTjdXZWJDb3JlMjBUZXN0TmFt
ZWRDb25zdHJ1Y3RvckVbXTsgfQotI2VuZGlmCi0jZW5kaWYKLQotSlNDOjpKU1ZhbHVlIHRvSlNO
ZXdseUNyZWF0ZWQoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFJlZjxUZXN0TmFtZWRDb25zdHJ1Y3Rvcj4mJiBpbXBsKQotewotCi0jaWYgRU5B
QkxFKEJJTkRJTkdfSU5URUdSSVRZKQotICAgIGNvbnN0IHZvaWQqIGFjdHVhbFZUYWJsZVBvaW50
ZXIgPSBnZXRWVGFibGVQb2ludGVyKGltcGwucHRyKCkpOwotI2lmIFBMQVRGT1JNKFdJTikKLSAg
ICB2b2lkKiBleHBlY3RlZFZUYWJsZVBvaW50ZXIgPSBfX2lkZW50aWZpZXIoIj8/XzdUZXN0TmFt
ZWRDb25zdHJ1Y3RvckBXZWJDb3JlQEA2QkAiKTsKLSNlbHNlCi0gICAgdm9pZCogZXhwZWN0ZWRW
VGFibGVQb2ludGVyID0gJl9aVFZON1dlYkNvcmUyMFRlc3ROYW1lZENvbnN0cnVjdG9yRVsyXTsK
LSNlbmRpZgotCi0gICAgLy8gSWYgdGhpcyBmYWlscyBUZXN0TmFtZWRDb25zdHJ1Y3RvciBkb2Vz
IG5vdCBoYXZlIGEgdnRhYmxlLCBzbyB5b3UgbmVlZCB0byBhZGQgdGhlCi0gICAgLy8gSW1wbGVt
ZW50YXRpb25MYWNrc1ZUYWJsZSBhdHRyaWJ1dGUgdG8gdGhlIGludGVyZmFjZSBkZWZpbml0aW9u
Ci0gICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3BvbHltb3JwaGljPFRlc3ROYW1lZENvbnN0cnVj
dG9yPjo6dmFsdWUsICJUZXN0TmFtZWRDb25zdHJ1Y3RvciBpcyBub3QgcG9seW1vcnBoaWMiKTsK
LQotICAgIC8vIElmIHlvdSBoaXQgdGhpcyBhc3NlcnRpb24geW91IGVpdGhlciBoYXZlIGEgdXNl
IGFmdGVyIGZyZWUgYnVnLCBvcgotICAgIC8vIFRlc3ROYW1lZENvbnN0cnVjdG9yIGhhcyBzdWJj
bGFzc2VzLiBJZiBUZXN0TmFtZWRDb25zdHJ1Y3RvciBoYXMgc3ViY2xhc3NlcyB0aGF0IGdldCBw
YXNzZWQKLSAgICAvLyB0byB0b0pTKCkgd2UgY3VycmVudGx5IHJlcXVpcmUgVGVzdE5hbWVkQ29u
c3RydWN0b3IgeW91IHRvIG9wdCBvdXQgb2YgYmluZGluZyBoYXJkZW5pbmcKLSAgICAvLyBieSBh
ZGRpbmcgdGhlIFNraXBWVGFibGVWYWxpZGF0aW9uIGF0dHJpYnV0ZSB0byB0aGUgaW50ZXJmYWNl
IElETCBkZWZpbml0aW9uCi0gICAgUkVMRUFTRV9BU1NFUlQoYWN0dWFsVlRhYmxlUG9pbnRlciA9
PSBleHBlY3RlZFZUYWJsZVBvaW50ZXIpOwotI2VuZGlmCi0gICAgcmV0dXJuIGNyZWF0ZVdyYXBw
ZXI8VGVzdE5hbWVkQ29uc3RydWN0b3I+KGdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7Ci19
Ci0KLUpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3ROYW1lZENvbnN0cnVj
dG9yJiBpbXBsKQotewotICAgIHJldHVybiB3cmFwKGxleGljYWxHbG9iYWxPYmplY3QsIGdsb2Jh
bE9iamVjdCwgaW1wbCk7Ci19Ci0KLVRlc3ROYW1lZENvbnN0cnVjdG9yKiBKU1Rlc3ROYW1lZENv
bnN0cnVjdG9yOjp0b1dyYXBwZWQoSlNDOjpWTSYgdm0sIEpTQzo6SlNWYWx1ZSB2YWx1ZSkKLXsK
LSAgICBpZiAoYXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0TmFtZWRDb25zdHJ1
Y3Rvcio+KHZtLCB2YWx1ZSkpCi0gICAgICAgIHJldHVybiAmd3JhcHBlci0+d3JhcHBlZCgpOwot
ICAgIHJldHVybiBudWxscHRyOwotfQotCi19CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5j
cHAKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fXwpEZWxldGVkOiBzdm46ZW9sLXN0eWxlCiMjIC0xICswLDAgIyMKLUxGClwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQ29u
c3RydWN0b3IuaAkocmV2aXNpb24gMjY2NTU5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuaAkobm9uZXhpc3RlbnQpCkBA
IC0xLDk0ICswLDAgQEAKLS8qCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBv
cGVuIHNvdXJjZSBwcm9qZWN0LgotICAgIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkg
Z2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCi0KLSAgICBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gICAgbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
LSAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKLSAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICAgIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCi0gICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
Ci0KLSAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNl
ZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAgICB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29y
LAotICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotKi8KLQotI3ByYWdtYSBvbmNlCi0K
LSNpbmNsdWRlICJKU0RPTVdyYXBwZXIuaCIKLSNpbmNsdWRlICJUZXN0TmFtZWRDb25zdHJ1Y3Rv
ci5oIgotI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLWNsYXNzIEpTVGVzdE5hbWVkQ29uc3RydWN0b3IgOiBwdWJsaWMgSlNET01XcmFwcGVy
PFRlc3ROYW1lZENvbnN0cnVjdG9yPiB7Ci1wdWJsaWM6Ci0gICAgdXNpbmcgQmFzZSA9IEpTRE9N
V3JhcHBlcjxUZXN0TmFtZWRDb25zdHJ1Y3Rvcj47Ci0gICAgc3RhdGljIEpTVGVzdE5hbWVkQ29u
c3RydWN0b3IqIGNyZWF0ZShKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdE5hbWVkQ29uc3RydWN0b3I+JiYgaW1wbCkKLSAg
ICB7Ci0gICAgICAgIEpTVGVzdE5hbWVkQ29uc3RydWN0b3IqIHB0ciA9IG5ldyAoTm90TnVsbCwg
SlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0TmFtZWRDb25zdHJ1Y3Rvcj4oZ2xvYmFsT2JqZWN0LT52
bSgpLmhlYXApKSBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yKHN0cnVjdHVyZSwgKmdsb2JhbE9iamVj
dCwgV1RGTW92ZShpbXBsKSk7Ci0gICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsT2Jq
ZWN0LT52bSgpKTsKLSAgICAgICAgcmV0dXJuIHB0cjsKLSAgICB9Ci0KLSAgICBzdGF0aWMgSlND
OjpKU09iamVjdCogY3JlYXRlUHJvdG90eXBlKEpTQzo6Vk0mLCBKU0RPTUdsb2JhbE9iamVjdCYp
OwotICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBwcm90b3R5cGUoSlNDOjpWTSYsIEpTRE9NR2xv
YmFsT2JqZWN0Jik7Ci0gICAgc3RhdGljIFRlc3ROYW1lZENvbnN0cnVjdG9yKiB0b1dyYXBwZWQo
SlNDOjpWTSYsIEpTQzo6SlNWYWx1ZSk7Ci0gICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0M6OkpT
Q2VsbCopOwotCi0gICAgREVDTEFSRV9JTkZPOwotCi0gICAgc3RhdGljIEpTQzo6U3RydWN0dXJl
KiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBK
U0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpU
eXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpLCBKU0M6Ok5v
bkFycmF5KTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9y
KEpTQzo6Vk0mLCBjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7Ci0gICAgc3RhdGljIEpTQzo6
SlNWYWx1ZSBnZXROYW1lZENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0
Kik7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUsIEpTQzo6U3Vic3BhY2VBY2Nlc3MgbW9kZT4gc3Rh
dGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQotICAgIHsKLSAg
ICAgICAgaWYgY29uc3RleHByIChtb2RlID09IEpTQzo6U3Vic3BhY2VBY2Nlc3M6OkNvbmN1cnJl
bnRseSkKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICByZXR1cm4gc3Vic3Bh
Y2VGb3JJbXBsKHZtKTsKLSAgICB9Ci0gICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNw
YWNlRm9ySW1wbChKU0M6OlZNJiB2bSk7Ci0gICAgc3RhdGljIHZvaWQgYW5hbHl6ZUhlYXAoSlND
ZWxsKiwgSlNDOjpIZWFwQW5hbHl6ZXImKTsKLXByb3RlY3RlZDoKLSAgICBKU1Rlc3ROYW1lZENv
bnN0cnVjdG9yKEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3QmLCBSZWY8VGVzdE5h
bWVkQ29uc3RydWN0b3I+JiYpOwotCi0gICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJik7
Ci19OwotCi1jbGFzcyBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yT3duZXIgOiBwdWJsaWMgSlNDOjpX
ZWFrSGFuZGxlT3duZXIgewotcHVibGljOgotICAgIHZpcnR1YWwgYm9vbCBpc1JlYWNoYWJsZUZy
b21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+LCB2b2lkKiBjb250ZXh0LCBK
U0M6OlNsb3RWaXNpdG9yJiwgY29uc3QgY2hhcioqKTsKLSAgICB2aXJ0dWFsIHZvaWQgZmluYWxp
emUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiwgdm9pZCogY29udGV4dCk7Ci19OwotCi1pbmxp
bmUgSlNDOjpXZWFrSGFuZGxlT3duZXIqIHdyYXBwZXJPd25lcihET01XcmFwcGVyV29ybGQmLCBU
ZXN0TmFtZWRDb25zdHJ1Y3RvciopCi17Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEpTVGVz
dE5hbWVkQ29uc3RydWN0b3JPd25lcj4gb3duZXI7Ci0gICAgcmV0dXJuICZvd25lci5nZXQoKTsK
LX0KLQotaW5saW5lIHZvaWQqIHdyYXBwZXJLZXkoVGVzdE5hbWVkQ29uc3RydWN0b3IqIHdyYXBw
YWJsZU9iamVjdCkKLXsKLSAgICByZXR1cm4gd3JhcHBhYmxlT2JqZWN0OwotfQotCi1KU0M6OkpT
VmFsdWUgdG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNET01HbG9iYWxPYmplY3QqLCBUZXN0
TmFtZWRDb25zdHJ1Y3RvciYpOwotaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6SlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFRlc3ROYW1lZENvbnN0cnVjdG9yKiBpbXBsKSB7IHJldHVybiBpbXBsID8gdG9KUyhs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QsICppbXBsKSA6IEpTQzo6anNOdWxsKCk7
IH0KLUpTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBK
U0RPTUdsb2JhbE9iamVjdCosIFJlZjxUZXN0TmFtZWRDb25zdHJ1Y3Rvcj4mJik7Ci1pbmxpbmUg
SlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmUHRyPFRl
c3ROYW1lZENvbnN0cnVjdG9yPiYmIGltcGwpIHsgcmV0dXJuIGltcGwgPyB0b0pTTmV3bHlDcmVh
dGVkKGxleGljYWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgaW1wbC5yZWxlYXNlTm9uTnVs
bCgpKSA6IEpTQzo6anNOdWxsKCk7IH0KLQotdGVtcGxhdGU8PiBzdHJ1Y3QgSlNET01XcmFwcGVy
Q29udmVydGVyVHJhaXRzPFRlc3ROYW1lZENvbnN0cnVjdG9yPiB7Ci0gICAgdXNpbmcgV3JhcHBl
ckNsYXNzID0gSlNUZXN0TmFtZWRDb25zdHJ1Y3RvcjsKLSAgICB1c2luZyBUb1dyYXBwZWRSZXR1
cm5UeXBlID0gVGVzdE5hbWVkQ29uc3RydWN0b3IqOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuaApfX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2
bjplb2wtc3R5bGUKIyMgLTEgKzAsMCAjIwotTEYKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9w
ZXJ0eQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXVkaW9FbGVtZW50LmlkbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdWRpb0VsZW1lbnQuaWRsCShyZXZp
c2lvbiAyNjY1NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdWRpb0VsZW1lbnQuaWRs
CSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAKIFsKICAgICBDb25kaXRpb25hbD1W
SURFTywKLSAgICBDb25zdHJ1Y3RvckNhbGxXaXRoPURvY3VtZW50LAotICAgIE5hbWVkQ29uc3Ry
dWN0b3I9QXVkaW8ob3B0aW9uYWwgW0F0b21TdHJpbmddIERPTVN0cmluZyBzcmMpCisgICAgTGVn
YWN5RmFjdG9yeUZ1bmN0aW9uQ2FsbFdpdGg9RG9jdW1lbnQsCisgICAgTGVnYWN5RmFjdG9yeUZ1
bmN0aW9uPUF1ZGlvKG9wdGlvbmFsIFtBdG9tU3RyaW5nXSBET01TdHJpbmcgc3JjKQogXSBpbnRl
cmZhY2UgSFRNTEF1ZGlvRWxlbWVudCA6IEhUTUxNZWRpYUVsZW1lbnQgewogfTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5pZGwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmlkbAkocmV2aXNpb24gMjY2NTU5KQor
KysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmlkbAkod29ya2luZyBjb3B5
KQpAQCAtMjEsOCArMjEsOCBAQAogWwogICAgIEV4cG9ydE1hY3JvPVdFQkNPUkVfRVhQT1JULAog
ICAgIEpTR2VuZXJhdGVUb05hdGl2ZU9iamVjdCwKLSAgICBDb25zdHJ1Y3RvckNhbGxXaXRoPURv
Y3VtZW50LAotICAgIE5hbWVkQ29uc3RydWN0b3I9SW1hZ2Uob3B0aW9uYWwgdW5zaWduZWQgbG9u
ZyB3aWR0aCwgb3B0aW9uYWwgdW5zaWduZWQgbG9uZyBoZWlnaHQpCisgICAgTGVnYWN5RmFjdG9y
eUZ1bmN0aW9uQ2FsbFdpdGg9RG9jdW1lbnQsCisgICAgTGVnYWN5RmFjdG9yeUZ1bmN0aW9uPUlt
YWdlKG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgd2lkdGgsIG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcg
aGVpZ2h0KQogXSBpbnRlcmZhY2UgSFRNTEltYWdlRWxlbWVudCA6IEhUTUxFbGVtZW50IHsKICAg
ICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVkLCBSZWZsZWN0XSBhdHRyaWJ1dGUgRE9NU3RyaW5nIG5h
bWU7CiAgICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwgUmVmbGVjdF0gYXR0cmlidXRlIERPTVN0
cmluZyBhbGlnbjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQu
aWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQu
aWRsCShyZXZpc2lvbiAyNjY1NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25F
bGVtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjAsOSArMjAsOSBAQAogCiBbCiAgICAgSlNH
ZW5lcmF0ZVRvTmF0aXZlT2JqZWN0LAotICAgIENvbnN0cnVjdG9yTWF5VGhyb3dFeGNlcHRpb24s
Ci0gICAgQ29uc3RydWN0b3JDYWxsV2l0aD1Eb2N1bWVudCwKLSAgICBOYW1lZENvbnN0cnVjdG9y
PU9wdGlvbihvcHRpb25hbCBET01TdHJpbmcgdGV4dCA9ICIiLCBvcHRpb25hbCBET01TdHJpbmcg
dmFsdWUsIG9wdGlvbmFsIGJvb2xlYW4gZGVmYXVsdFNlbGVjdGVkID0gZmFsc2UsIG9wdGlvbmFs
IGJvb2xlYW4gc2VsZWN0ZWQgPSBmYWxzZSksCisgICAgTGVnYWN5RmFjdG9yeUZ1bmN0aW9uTWF5
VGhyb3dFeGNlcHRpb24sCisgICAgTGVnYWN5RmFjdG9yeUZ1bmN0aW9uQ2FsbFdpdGg9RG9jdW1l
bnQsCisgICAgTGVnYWN5RmFjdG9yeUZ1bmN0aW9uPU9wdGlvbihvcHRpb25hbCBET01TdHJpbmcg
dGV4dCA9ICIiLCBvcHRpb25hbCBET01TdHJpbmcgdmFsdWUsIG9wdGlvbmFsIGJvb2xlYW4gZGVm
YXVsdFNlbGVjdGVkID0gZmFsc2UsIG9wdGlvbmFsIGJvb2xlYW4gc2VsZWN0ZWQgPSBmYWxzZSks
CiBdIGludGVyZmFjZSBIVE1MT3B0aW9uRWxlbWVudCA6IEhUTUxFbGVtZW50IHsKICAgICBbQ0VS
ZWFjdGlvbnM9Tm90TmVlZGVkLCBSZWZsZWN0XSBhdHRyaWJ1dGUgYm9vbGVhbiBkaXNhYmxlZDsK
ICAgICByZWFkb25seSBhdHRyaWJ1dGUgSFRNTEZvcm1FbGVtZW50IGZvcm07CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5pZGwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuaWRsCShyZXZpc2lvbiAyNjY1NTkp
CisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5pZGwJKHdvcmtpbmcg
Y29weSkKQEAgLTMwLDcgKzMwLDcgQEAKICAgICBDdXN0b21Ub0pTT2JqZWN0LAogICAgIEpTQ3Vz
dG9tTWFya0Z1bmN0aW9uLAogICAgIFNraXBWVGFibGVWYWxpZGF0aW9uLAotICAgIENvbnN0cnVj
dG9yRW5hYmxlZEJ5U2V0dGluZz1HZW5lcmljQ3VlQVBJCisgICAgTGVnYWN5RmFjdG9yeUZ1bmN0
aW9uRW5hYmxlZEJ5U2V0dGluZz1HZW5lcmljQ3VlQVBJCiBdIGludGVyZmFjZSBUZXh0VHJhY2tD
dWUgOiBFdmVudFRhcmdldCB7CiAgICAgW0NhbGxXaXRoPURvY3VtZW50LCBNYXlUaHJvd0V4Y2Vw
dGlvbl0gY29uc3RydWN0b3IoZG91YmxlIHN0YXJ0VGltZSwgZG91YmxlIGVuZFRpbWUsIERvY3Vt
ZW50RnJhZ21lbnQgY3VlTm9kZSk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407991</attachid>
            <date>2020-09-04 10:14:17 -0700</date>
            <delta_ts>2020-09-04 10:17:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213316-20200904101416.patch</filename>
            <type>text/plain</type>
            <size>105955</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2NjYxNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYyIEBACisyMDIwLTA5LTA0ICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViSURMXSBBZG9wdCBMZWdhY3lG
YWN0b3J5RnVuY3Rpb24gZXh0ZW5kZWQgYXR0cmlidXRlIGluIGxpZXUgb2YgTmFtZWRDb25zdHJ1
Y3RvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEz
MzE2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVu
YW1lIHRoZSBmb2xsb3dpbmcgdGhlIGV4dGVuZGVkIGF0dHJpYnV0ZXMgdG8gbW9yZSBjbG9zZWx5
IGFsaWduIHdpdGggV2ViSURMOgorICAgICAgICAgICAgTmFtZWRDb25zdHJ1Y3RvciAtPiBMZWdh
Y3lGYWN0b3J5RnVuY3Rpb24KKyAgICAgICAgICAgIENvbnN0cnVjdG9yQ2FsbFdpdGggLT4gTGVn
YWN5RmFjdG9yeUZ1bmN0aW9uQ2FsbFdpdGgKKyAgICAgICAgICAgIENvbnN0cnVjdG9yRW5hYmxl
ZEJ5U2V0dGluZyAtPiBMZWdhY3lGYWN0b3J5RnVuY3Rpb25FbmFibGVkQnlTZXR0aW5nCisgICAg
ICAgICAgICBDb25zdHJ1Y3Rvck1heVRocm93RXhjZXB0aW9uIC0+IExlZ2FjeUZhY3RvcnlGdW5j
dGlvbk1heVRocm93RXhjZXB0aW9uCisKKyAgICAgICAgTm90ZSwgQ29uc3RydWN0b3JDYWxsV2l0
aCwgQ29uc3RydWN0b3JFbmFibGVkQnlTZXR0aW5nIGFuZCBDb25zdHJ1Y3Rvck1heVRocm93RXhj
ZXB0aW9uCisgICAgICAgIHdlcmUgb25seSB1c2VkIHdpdGggTmFtZWRDb25zdHJ1Y3RvcnMgcHJl
dmlvdXNseSBhcyBub3JtYWwgY29uc3RydWN0b3JzIGRvbid0IHJlcXVpcmUKKyAgICAgICAgaW50
ZXJmYWNlIGxldmVsIGV4dGVuZGVkIGF0dHJpYnV0ZXMgZm9yIHRoZXNlIGFzIHRoZSBleHRlbmRl
ZCBhdHRyaWJ1dGUgY2FuIGJlIGRpcmVjdGx5CisgICAgICAgIG9uIHRoZSBjb25zdHJ1Y3RvciBp
dHNlbGYuIElkZWFsbHksIHdlIHdvdWxkIGRvIHRoZSBzYW1lIHdpdGggTGVnYWN5RmFjdG9yeUZ1
bmN0aW9uIGJ5CisgICAgICAgIGFsbG93aW5nIGV4dGVuZGVkIGF0dHJpYnV0ZXMgb24gdGhlIG9w
ZXJhdG9yIGl0c2VsZiBsaWtlOgorICAgICAgICAKKyAgICAgICAgWworICAgICAgICAgICAgLi4u
CisgICAgICAgICAgICBMZWdhY3lGYWN0b3J5RnVuY3Rpb249W0NhbGxXaXRoPURvY3VtZW50XSBB
dWRpbyhvcHRpb25hbCBbQXRvbVN0cmluZ10gRE9NU3RyaW5nIHNyYykKKyAgICAgICAgXQorCisg
ICAgICAgIGJ1dCB0aGlzIHJlcXVpcmVzIGNoYW5nZXMgdG8gdGhlIElETFBhcnNlciAod2hpY2gg
YXJlIHN0cmFpZ2h0Zm9yd2FyZCkgYW5kIGNyZWF0ZXMgYSBsb3Qgb2YKKyAgICAgICAgYWRkaXRp
b25hbCBjb21wbGV4aXR5IGluc2lkZSB0aGUgdmVyeSBoYWNreSBwcmVwcm9jZXNzLWlkbHMucGwg
cmVwcm9kdWNpbmcgdGhvc2UgcGFyc2VyIGNoYW5nZXMuCisgICAgICAgIEkgd2lsbCBsZWF2ZSB0
aGF0IGFkZGl0aW9uYWwgY2xlYW51cCBmb3IgYSBzdWJzZXF1ZW50IGNoYW5nZS4gCisKKyAgICAg
ICAgKiBodG1sL0hUTUxBdWRpb0VsZW1lbnQuaWRsOgorICAgICAgICAqIGh0bWwvSFRNTEltYWdl
RWxlbWVudC5pZGw6CisgICAgICAgICogaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5pZGw6CisgICAg
ICAgICogaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuaWRsOgorICAgICAgICBVcGRhdGUgdG8gdXNl
IG5ldyBuYW1lcy4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NTGVnYWN5RmFjdG9yeUZ1
bmN0aW9uLmg6IENvcGllZCBmcm9tIGJpbmRpbmdzL2pzL0pTRE9NTmFtZWRDb25zdHJ1Y3Rvci5o
LgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NTmFtZWRDb25zdHJ1Y3Rvci5oOiBSZW1vdmVk
LgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
VXBkYXRlIGZvciByZW5hbWUgb2YgSlNET01OYW1lZENvbnN0cnVjdG9yLmggdG8gSlNET01MZWdh
Y3lGYWN0b3J5RnVuY3Rpb24uaAorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9ySlMucG06CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIucG06Cisg
ICAgICAgIChhcHBseUV4dGVuZGVkQXR0cmlidXRlTGlzdCk6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy9wcmVwcm9jZXNzLWlkbHMucGw6CisgICAgICAgIChHZW5lcmF0ZUNvbnN0cnVjdG9y
QXR0cmlidXRlcyk6CisgICAgICAgIFVwZGF0ZSBJREwgcHJvY2Vzc2luZyB0byBoYW5kbGUgbmV3
IG5hbWVzLgorICAgICAgICAKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0
ZXMuanNvbjoKKyAgICAgICAgVXBkYXRlIGV4dGVuZGVkIGF0dHJpYnV0ZSBkZWZpbml0aW9ucyBm
b3IgbmV3IG5hbWVzLiBSZW1vdmVkIHVudXNlZCBDb25zdHJ1Y3RvciBleHRlbmRlZCBhdHRyaWJ1
dGUuCisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2Jq
ZWN0LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TGVnYWN5
RmFjdG9yeUZ1bmN0aW9uLmNwcDogQ29waWVkIGZyb20gYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24uaDogQ29waWVkIGZyb20gYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuaC4KKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHA6IFJlbW92
ZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3Ry
dWN0b3IuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvU3VwcGxl
bWVudGFsRGVwZW5kZW5jaWVzLmRlcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbi5pZGw6IENvcGllZCBmcm9tIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9UZXN0TmFtZWRDb25zdHJ1Y3Rvci5pZGwuCisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Rlc3ROYW1lZENvbnN0cnVjdG9yLmlkbDogUmVtb3ZlZC4KKyAgICAgICAgVXBk
YXRlIHRlc3RzIGZvciBuZXcgbmFtZXMuCisKIDIwMjAtMDktMDQgIFlvdWVubiBGYWJsZXQgIDx5
b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEJpbmRpbmcgZ2VuZXJhdG9yIGlzIG5vdCBhbHdh
eXMgY29tcHV0aW5nIHRoZSByaWdodCBpbnRlcmZhY2UgYXR0cmlidXRlcwpJbmRleDogU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNp
b24gMjY2NTU5KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMDA0Myw3ICsxMDA0Myw3IEBACiAJCTdDMENFRjI5
MUU0QTU0RDMwMDhERUI4MCAvKiBKU0RPTUNvbnN0cnVjdG9yV2l0aERvY3VtZW50LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRE9NQ29uc3RydWN0b3JXaXRoRG9jdW1lbnQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MwQ0VGMkExRTRBNTU2QzAwOERFQjgw
IC8qIEpTRE9NQnVpbHRpbkNvbnN0cnVjdG9yQmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKU0RPTUJ1aWx0aW5Db25zdHJ1Y3RvckJhc2UuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJN0MwQ0VGMkIxRTRBNTVDMzAwOERFQjgwIC8qIEpTRE9NQ29uc3RydWN0
b3JOb3RDb25zdHJ1Y3RhYmxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpT
RE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCTdDMENFRjJDMUU0QTU2NEQwMDhERUI4MCAvKiBKU0RPTU5hbWVkQ29uc3RydWN0b3Iu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNET01OYW1lZENvbnN0cnVjdG9y
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDMENFRjJDMUU0QTU2NEQwMDhERUI4
MCAvKiBKU0RPTUxlZ2FjeUZhY3RvcnlGdW5jdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKU0RPTUxlZ2FjeUZhY3RvcnlGdW5jdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3QzBDRUYyRDFFNEE1NkM1MDA4REVCODAgLyogSlNET01CdWlsdGluQ29u
c3RydWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNET01CdWlsdGlu
Q29uc3RydWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MwQ0VGMkUxRTRB
NTgzMjAwOERFQjgwIC8qIEpTRE9NQnVpbHRpbkNvbnN0cnVjdG9yQmFzZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0RPTUJ1aWx0aW5Db25zdHJ1Y3RvckJhc2Uu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzBDRUYyRjFFNEE1OEFEMDA4REVC
ODAgLyogSlNET01Db25zdHJ1Y3RvckJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNET01Db25zdHJ1Y3RvckJhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMjY3NDQsNyArMjY3NDQsNyBAQAogCQkJCTdDMENFRjJCMUU0QTU1QzMwMDhE
RUI4MCAvKiBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZS5oICovLAogCQkJCTdDMENF
RjMwMUU0QTU4RjEwMDhERUI4MCAvKiBKU0RPTUNvbnN0cnVjdG9yV2l0aERvY3VtZW50LmNwcCAq
LywKIAkJCQk3QzBDRUYyOTFFNEE1NEQzMDA4REVCODAgLyogSlNET01Db25zdHJ1Y3RvcldpdGhE
b2N1bWVudC5oICovLAotCQkJCTdDMENFRjJDMUU0QTU2NEQwMDhERUI4MCAvKiBKU0RPTU5hbWVk
Q29uc3RydWN0b3IuaCAqLywKKwkJCQk3QzBDRUYyQzFFNEE1NjREMDA4REVCODAgLyogSlNET01M
ZWdhY3lGYWN0b3J5RnVuY3Rpb24uaCAqLywKIAkJCSk7CiAJCQluYW1lID0gQ29uc3RydWN0b3Jz
OwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NTGVnYWN5RmFjdG9yeUZ1bmN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01MZWdhY3lGYWN0b3J5RnVuY3Rpb24uaAkobm9uZXhp
c3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUxlZ2FjeUZhY3RvcnlG
dW5jdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsODEgQEAKKy8qCisgKiAgQ29weXJp
Z2h0IChDKSAyMDE1LCAyMDE2IENhbm9uIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBD
b3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
ICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBH
ZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5
IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAg
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuICBTZWUgdGhlIEdOVQorICogIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFsb25nIHdpdGgg
dGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiAgRm91
bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBN
QSAgMDIxMTAtMTMwMSAgVVNBCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJKU0RP
TUNvbnN0cnVjdG9yV2l0aERvY3VtZW50LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworLy8g
RklNWEU6IFdoeSBjYW4ndCBMZWdhY3lGYWN0b3J5RnVuY3Rpb25zIGJlIHVzZWQgd2l0aCB3b3Jr
ZXJzPwordGVtcGxhdGU8dHlwZW5hbWUgSlNDbGFzcz4gY2xhc3MgSlNET01MZWdhY3lGYWN0b3J5
RnVuY3Rpb24gZmluYWwgOiBwdWJsaWMgSlNET01Db25zdHJ1Y3RvcldpdGhEb2N1bWVudCB7Citw
dWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IEpTRE9NQ29uc3RydWN0b3JXaXRoRG9jdW1lbnQ7CisK
KyAgICBzdGF0aWMgSlNET01MZWdhY3lGYWN0b3J5RnVuY3Rpb24qIGNyZWF0ZShKU0M6OlZNJiwg
SlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCYpOworICAgIHN0YXRpYyBKU0M6OlN0
cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0Jiwg
SlNDOjpKU1ZhbHVlIHByb3RvdHlwZSk7CisKKyAgICBERUNMQVJFX0lORk87CisKKyAgICAvLyBN
dXN0IGJlIGRlZmluZWQgZm9yIGVhY2ggc3BlY2lhbGl6YXRpb24gY2xhc3MuCisgICAgc3RhdGlj
IEpTQzo6SlNWYWx1ZSBwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYsIGNvbnN0IEpTRE9N
R2xvYmFsT2JqZWN0Jik7CisKK3ByaXZhdGU6CisgICAgSlNET01MZWdhY3lGYWN0b3J5RnVuY3Rp
b24oSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9i
amVjdCkKKyAgICAgICAgOiBCYXNlKHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KQorICAgIHsgCisg
ICAgfQorCisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJiwgSlNET01HbG9iYWxPYmpl
Y3QmKTsKKyAgICBzdGF0aWMgSlNDOjpDYWxsRGF0YSBnZXRDb25zdHJ1Y3REYXRhKEpTQzo6SlND
ZWxsKik7CisKKyAgICAvLyBVc3VhbGx5IGRlZmluZWQgZm9yIGVhY2ggc3BlY2lhbGl6YXRpb24g
Y2xhc3MuCisgICAgdm9pZCBpbml0aWFsaXplUHJvcGVydGllcyhKU0M6OlZNJiwgSlNET01HbG9i
YWxPYmplY3QmKSB7IH0KKyAgICAvLyBNdXN0IGJlIGRlZmluZWQgZm9yIGVhY2ggc3BlY2lhbGl6
YXRpb24gY2xhc3MuCisgICAgc3RhdGljIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBjb25zdHJ1Y3QoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7Cit9Owor
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBKU0NsYXNzPiBpbmxpbmUgSlNET01MZWdhY3lGYWN0b3J5RnVu
Y3Rpb248SlNDbGFzcz4qIEpTRE9NTGVnYWN5RmFjdG9yeUZ1bmN0aW9uPEpTQ2xhc3M+OjpjcmVh
dGUoSlNDOjpWTSYgdm0sIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2Jq
ZWN0JiBnbG9iYWxPYmplY3QpCit7CisgICAgSlNET01MZWdhY3lGYWN0b3J5RnVuY3Rpb24qIGNv
bnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU0RPTUxlZ2FjeUZh
Y3RvcnlGdW5jdGlvbj4odm0uaGVhcCkpIEpTRE9NTGVnYWN5RmFjdG9yeUZ1bmN0aW9uKHN0cnVj
dHVyZSwgZ2xvYmFsT2JqZWN0KTsKKyAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24odm0s
IGdsb2JhbE9iamVjdCk7CisgICAgcmV0dXJuIGNvbnN0cnVjdG9yOworfQorCit0ZW1wbGF0ZTx0
eXBlbmFtZSBKU0NsYXNzPiBpbmxpbmUgSlNDOjpTdHJ1Y3R1cmUqIEpTRE9NTGVnYWN5RmFjdG9y
eUZ1bmN0aW9uPEpTQ2xhc3M+OjpjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNH
bG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKK3sKKyAg
ICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgJmdsb2JhbE9iamVjdCwgcHJvdG90
eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZv
KCkpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBKU0NsYXNzPiBpbmxpbmUgdm9pZCBKU0RPTUxl
Z2FjeUZhY3RvcnlGdW5jdGlvbjxKU0NsYXNzPjo6ZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYgdm0s
IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit7CisgICAgQmFzZTo6ZmluaXNoQ3Jl
YXRpb24oZ2xvYmFsT2JqZWN0KTsKKyAgICBBU1NFUlQoaW5oZXJpdHModm0sIGluZm8oKSkpOwor
ICAgIGluaXRpYWxpemVQcm9wZXJ0aWVzKHZtLCBnbG9iYWxPYmplY3QpOworfQorCit0ZW1wbGF0
ZTx0eXBlbmFtZSBKU0NsYXNzPiBpbmxpbmUgSlNDOjpDYWxsRGF0YSBKU0RPTUxlZ2FjeUZhY3Rv
cnlGdW5jdGlvbjxKU0NsYXNzPjo6Z2V0Q29uc3RydWN0RGF0YShKU0M6OkpTQ2VsbCopCit7Cisg
ICAgSlNDOjpDYWxsRGF0YSBjb25zdHJ1Y3REYXRhOworICAgIGNvbnN0cnVjdERhdGEudHlwZSA9
IEpTQzo6Q2FsbERhdGE6OlR5cGU6Ok5hdGl2ZTsKKyAgICBjb25zdHJ1Y3REYXRhLm5hdGl2ZS5m
dW5jdGlvbiA9IGNvbnN0cnVjdDsKKyAgICByZXR1cm4gY29uc3RydWN0RGF0YTsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01OYW1lZENvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01OYW1lZENvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDI2NjU1OSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NTmFtZWRDb25zdHJ1Y3Rvci5oCShub25leGlzdGVu
dCkKQEAgLTEsODEgKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgKEMpIDIwMTUsIDIwMTYgQ2Fu
b24gSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogIENvcHlyaWdodCAoQykgMjAxNiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0gKiAgTGlj
ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy
Ci0gKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs
YXRlciB2ZXJzaW9uLgotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0g
KiAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0g
KiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5l
cmFsIFB1YmxpYwotICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwg
d3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSAqICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu
a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKLSAq
LwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIkpTRE9NQ29uc3RydWN0b3JXaXRoRG9jdW1l
bnQuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0vLyBGSU1YRTogV2h5IGNhbid0IG5hbWVk
IGNvbnN0cnVjdG9ycyBiZSB1c2VkIHdpdGggd29ya2Vycz8KLXRlbXBsYXRlPHR5cGVuYW1lIEpT
Q2xhc3M+IGNsYXNzIEpTRE9NTmFtZWRDb25zdHJ1Y3RvciBmaW5hbCA6IHB1YmxpYyBKU0RPTUNv
bnN0cnVjdG9yV2l0aERvY3VtZW50IHsKLXB1YmxpYzoKLSAgICB1c2luZyBCYXNlID0gSlNET01D
b25zdHJ1Y3RvcldpdGhEb2N1bWVudDsKLQotICAgIHN0YXRpYyBKU0RPTU5hbWVkQ29uc3RydWN0
b3IqIGNyZWF0ZShKU0M6OlZNJiwgSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCYp
OwotICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mLCBK
U0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSk7Ci0KLSAgICBERUNM
QVJFX0lORk87Ci0KLSAgICAvLyBNdXN0IGJlIGRlZmluZWQgZm9yIGVhY2ggc3BlY2lhbGl6YXRp
b24gY2xhc3MuCi0gICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGVGb3JTdHJ1Y3R1cmUo
SlNDOjpWTSYsIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Jik7Ci0KLXByaXZhdGU6Ci0gICAgSlNE
T01OYW1lZENvbnN0cnVjdG9yKEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFs
T2JqZWN0JiBnbG9iYWxPYmplY3QpCi0gICAgICAgIDogQmFzZShzdHJ1Y3R1cmUsIGdsb2JhbE9i
amVjdCkKLSAgICB7IAotICAgIH0KLQotICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYs
IEpTRE9NR2xvYmFsT2JqZWN0Jik7Ci0gICAgc3RhdGljIEpTQzo6Q2FsbERhdGEgZ2V0Q29uc3Ry
dWN0RGF0YShKU0M6OkpTQ2VsbCopOwotCi0gICAgLy8gVXN1YWxseSBkZWZpbmVkIGZvciBlYWNo
IHNwZWNpYWxpemF0aW9uIGNsYXNzLgotICAgIHZvaWQgaW5pdGlhbGl6ZVByb3BlcnRpZXMoSlND
OjpWTSYsIEpTRE9NR2xvYmFsT2JqZWN0JikgeyB9Ci0gICAgLy8gTXVzdCBiZSBkZWZpbmVkIGZv
ciBlYWNoIHNwZWNpYWxpemF0aW9uIGNsYXNzLgotICAgIHN0YXRpYyBKU0M6OkVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNh
bGxGcmFtZSopOwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgSlNDbGFzcz4gaW5saW5lIEpTRE9N
TmFtZWRDb25zdHJ1Y3RvcjxKU0NsYXNzPiogSlNET01OYW1lZENvbnN0cnVjdG9yPEpTQ2xhc3M+
OjpjcmVhdGUoSlNDOjpWTSYgdm0sIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xv
YmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCi17Ci0gICAgSlNET01OYW1lZENvbnN0cnVjdG9yKiBj
b25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNET01OYW1lZENv
bnN0cnVjdG9yPih2bS5oZWFwKSkgSlNET01OYW1lZENvbnN0cnVjdG9yKHN0cnVjdHVyZSwgZ2xv
YmFsT2JqZWN0KTsKLSAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24odm0sIGdsb2JhbE9i
amVjdCk7Ci0gICAgcmV0dXJuIGNvbnN0cnVjdG9yOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBK
U0NsYXNzPiBpbmxpbmUgSlNDOjpTdHJ1Y3R1cmUqIEpTRE9NTmFtZWRDb25zdHJ1Y3RvcjxKU0Ns
YXNzPjo6Y3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0JiBn
bG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCi17Ci0gICAgcmV0dXJuIEpTQzo6
U3RydWN0dXJlOjpjcmVhdGUodm0sICZnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBl
SW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKLX0KLQotdGVt
cGxhdGU8dHlwZW5hbWUgSlNDbGFzcz4gaW5saW5lIHZvaWQgSlNET01OYW1lZENvbnN0cnVjdG9y
PEpTQ2xhc3M+OjpmaW5pc2hDcmVhdGlvbihKU0M6OlZNJiB2bSwgSlNET01HbG9iYWxPYmplY3Qm
IGdsb2JhbE9iamVjdCkKLXsKLSAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbihnbG9iYWxPYmplY3Qp
OwotICAgIEFTU0VSVChpbmhlcml0cyh2bSwgaW5mbygpKSk7Ci0gICAgaW5pdGlhbGl6ZVByb3Bl
cnRpZXModm0sIGdsb2JhbE9iamVjdCk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEpTQ2xhc3M+
IGlubGluZSBKU0M6OkNhbGxEYXRhIEpTRE9NTmFtZWRDb25zdHJ1Y3RvcjxKU0NsYXNzPjo6Z2V0
Q29uc3RydWN0RGF0YShKU0M6OkpTQ2VsbCopCi17Ci0gICAgSlNDOjpDYWxsRGF0YSBjb25zdHJ1
Y3REYXRhOwotICAgIGNvbnN0cnVjdERhdGEudHlwZSA9IEpTQzo6Q2FsbERhdGE6OlR5cGU6Ok5h
dGl2ZTsKLSAgICBjb25zdHJ1Y3REYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNvbnN0cnVjdDsKLSAg
ICByZXR1cm4gY29uc3RydWN0RGF0YTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
SlMucG0JKHJldmlzaW9uIDI2NjU1OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvckpTLnBtCSh3b3JraW5nIGNvcHkpCkBAIC0yNzc4LDcgKzI3NzgsNyBA
QCBzdWIgR2VuZXJhdGVIZWFkZXIKICAgICAjIENvbnN0cnVjdG9yIG9iamVjdCBnZXR0ZXIKICAg
ICB1bmxlc3MgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e05vSW50ZXJmYWNlT2Jq
ZWN0fSkgewogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyBKU0M6OkpT
VmFsdWUgZ2V0Q29uc3RydWN0b3IoSlNDOjpWTSYsIGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3Qq
KTtcbiIpOwotICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyBKU0M6OkpT
VmFsdWUgZ2V0TmFtZWRDb25zdHJ1Y3RvcihKU0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCop
O1xuIikgaWYgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57TmFtZWRDb25zdHJ1Y3Rv
cn07CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIEpTQzo6SlNWYWx1
ZSBnZXRMZWdhY3lGYWN0b3J5RnVuY3Rpb24oSlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3Qq
KTtcbiIpIGlmICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0xlZ2FjeUZhY3RvcnlG
dW5jdGlvbn07CiAgICAgfQogCiAgICAgIyBTZXJpYWxpemVyIGZ1bmN0aW9uLgpAQCAtMzg2Mywx
MCArMzg2MywxMCBAQCBzdWIgR2VuZXJhdGVSdW50aW1lRW5hYmxlQ29uZGl0aW9uYWxTdHJpCiAg
ICAgICAgIHB1c2goQGNvbmp1bmN0cywgICIke25hbWV9OjplbmFibGVkRm9yQ29udGV4dCgiIC4g
JGNvbnRleHRSZWYgLiAiKSIpOwogICAgIH0KIAotICAgIGlmICgkY29udGV4dC0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57Q29uc3RydWN0b3JFbmFibGVkQnlTZXR0aW5nfSkgewotICAgICAgICBhc3Nl
cnQoIk11c3Qgc3BlY2lmeSB2YWx1ZSBmb3IgQ29uc3RydWN0b3JFbmFibGVkQnlTZXR0aW5nLiIp
IGlmICRjb250ZXh0LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDb25zdHJ1Y3RvckVuYWJsZWRCeVNl
dHRpbmd9IGVxICJWQUxVRV9JU19NSVNTSU5HIjsKKyAgICBpZiAoJGNvbnRleHQtPmV4dGVuZGVk
QXR0cmlidXRlcy0+e0xlZ2FjeUZhY3RvcnlGdW5jdGlvbkVuYWJsZWRCeVNldHRpbmd9KSB7Cisg
ICAgICAgIGFzc2VydCgiTXVzdCBzcGVjaWZ5IHZhbHVlIGZvciBMZWdhY3lGYWN0b3J5RnVuY3Rp
b25FbmFibGVkQnlTZXR0aW5nLiIpIGlmICRjb250ZXh0LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntM
ZWdhY3lGYWN0b3J5RnVuY3Rpb25FbmFibGVkQnlTZXR0aW5nfSBlcSAiVkFMVUVfSVNfTUlTU0lO
RyI7CiAKLSAgICAgICAgbXkgQHNldHRpbmdzID0gc3BsaXQoLyYvLCAkY29udGV4dC0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57Q29uc3RydWN0b3JFbmFibGVkQnlTZXR0aW5nfSk7CisgICAgICAgIG15
IEBzZXR0aW5ncyA9IHNwbGl0KC8mLywgJGNvbnRleHQtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0xl
Z2FjeUZhY3RvcnlGdW5jdGlvbkVuYWJsZWRCeVNldHRpbmd9KTsKICAgICAgICAgZm9yZWFjaCBt
eSAkc2V0dGluZyAoQHNldHRpbmdzKSB7CiAgICAgICAgICAgICBwdXNoKEBjb25qdW5jdHMsICJk
b3duY2FzdDxEb2N1bWVudD4oanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oIiAuICRnbG9iYWxP
YmplY3RQdHIgLiAiKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKS0+c2V0dGluZ3MoKS4iIC4g
VG9NZXRob2ROYW1lKCRzZXR0aW5nKSAuICJFbmFibGVkKCkiKTsKICAgICAgICAgfQpAQCAtNDI1
Nyw4ICs0MjU3LDggQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgbXkgJHBy
b3RvQ2xhc3NOYW1lID0gIiR7Y2xhc3NOYW1lfVByb3RvdHlwZSI7CiAgICAgICAgIEdlbmVyYXRl
Q29uc3RydWN0b3JEZWZpbml0aW9ucyhcQGltcGxDb250ZW50LCAkY2xhc3NOYW1lLCAkcHJvdG9D
bGFzc05hbWUsICR2aXNpYmxlSW50ZXJmYWNlTmFtZSwgJGludGVyZmFjZSk7CiAKLSAgICAgICAg
bXkgJG5hbWVkQ29uc3RydWN0b3IgPSAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntO
YW1lZENvbnN0cnVjdG9yfTsKLSAgICAgICAgR2VuZXJhdGVDb25zdHJ1Y3RvckRlZmluaXRpb25z
KFxAaW1wbENvbnRlbnQsICRjbGFzc05hbWUsICRwcm90b0NsYXNzTmFtZSwgJG5hbWVkQ29uc3Ry
dWN0b3IsICRpbnRlcmZhY2UsICJHZW5lcmF0aW5nTmFtZWRDb25zdHJ1Y3RvciIpIGlmICRuYW1l
ZENvbnN0cnVjdG9yOworICAgICAgICBteSAkbGVnYWN5RmFjdG9yeUZ1bmN0aW9uID0gJGludGVy
ZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57TGVnYWN5RmFjdG9yeUZ1bmN0aW9ufTsKKyAgICAg
ICAgR2VuZXJhdGVDb25zdHJ1Y3RvckRlZmluaXRpb25zKFxAaW1wbENvbnRlbnQsICRjbGFzc05h
bWUsICRwcm90b0NsYXNzTmFtZSwgJGxlZ2FjeUZhY3RvcnlGdW5jdGlvbiwgJGludGVyZmFjZSwg
IkdlbmVyYXRpbmdMZWdhY3lGYWN0b3J5RnVuY3Rpb24iKSBpZiAkbGVnYWN5RmFjdG9yeUZ1bmN0
aW9uOwogICAgIH0KIAogICAgICMgLSBBZGQgZnVuY3Rpb25zIGFuZCBjb25zdGFudHMgdG8gYSBo
YXNodGFibGUgZGVmaW5pdGlvbgpAQCAtNDU1MCwxMCArNDU1MCwxMCBAQCBzdWIgR2VuZXJhdGVJ
bXBsZW1lbnRhdGlvbgogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gZ2V0
RE9NQ29uc3RydWN0b3I8JHtjbGFzc05hbWV9Q29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0
IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7XG4iKTsKICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICJ9XG5cbiIpOwogCi0gICAgICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPntOYW1lZENvbnN0cnVjdG9yfSkgewotICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICJKU1ZhbHVlICR7Y2xhc3NOYW1lfTo6Z2V0TmFtZWRDb25zdHJ1Y3RvcihWTSYg
dm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpXG4iKTsKKyAgICAgICAgaWYgKCRpbnRl
cmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0xlZ2FjeUZhY3RvcnlGdW5jdGlvbn0pIHsKKyAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiSlNWYWx1ZSAke2NsYXNzTmFtZX06OmdldExl
Z2FjeUZhY3RvcnlGdW5jdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qp
XG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7Ci0gICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8JHtjbGFz
c05hbWV9TmFtZWRDb25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihn
bG9iYWxPYmplY3QpKTtcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
cmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPCR7Y2xhc3NOYW1lfUxlZ2FjeUZhY3RvcnlGdW5jdGlv
bj4odm0sICpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTtcbiIpOwog
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOwogICAgICAgICB9CiAgICAg
fQpAQCAtNTAyNSwxNSArNTAyNSwxNyBAQCBzdWIgR2VuZXJhdGVBdHRyaWJ1dGVHZXR0ZXJCb2R5
RGVmaW5pdGlvCiAgICAgfSBlbHNpZiAoJGlzQ29uc3RydWN0b3IpIHsKICAgICAgICAgbXkgJGNv
bnN0cnVjdG9yVHlwZSA9ICRhdHRyaWJ1dGUtPnR5cGUtPm5hbWU7CiAgICAgICAgICRjb25zdHJ1
Y3RvclR5cGUgPX4gcy9Db25zdHJ1Y3RvciQvLzsKKworICAgICAgICBteSAkbGVnYWN5RmFjdG9y
eUZ1bmN0aW9uID0gKCRjb25zdHJ1Y3RvclR5cGUgPX4gL0xlZ2FjeUZhY3RvcnlGdW5jdGlvbiQv
KSA/ICJMZWdhY3lGYWN0b3J5RnVuY3Rpb24iIDogIiI7CisgICAgICAgICRsZWdhY3lGYWN0b3J5
RnVuY3Rpb24gPX4gcy9MZWdhY3lGYWN0b3J5RnVuY3Rpb24kLy87CisKICAgICAgICAgIyBXaGVu
IENvbnN0cnVjdG9yIGF0dHJpYnV0ZSBpcyB1c2VkIGJ5IERPTVdpbmRvdy5pZGwsIGl0J3MgY29y
cmVjdCB0byBwYXNzIHRoaXNPYmplY3QgYXMgdGhlIGdsb2JhbCBvYmplY3QKICAgICAgICAgIyBX
aGVuIEpTRE9NV3JhcHBlcnMgaGF2ZSBhIGJhY2stcG9pbnRlciB0byB0aGUgZ2xvYmFsT2JqZWN0
IHdlIGNhbiBwYXNzIHRoaXNPYmplY3QtPmdsb2JhbE9iamVjdCgpCiAgICAgICAgIGlmICgkaW50
ZXJmYWNlLT50eXBlLT5uYW1lIGVxICJET01XaW5kb3ciKSB7Ci0gICAgICAgICAgICBteSAkbmFt
ZWQgPSAoJGNvbnN0cnVjdG9yVHlwZSA9fiAvTmFtZWQkLykgPyAiTmFtZWQiIDogIiI7Ci0gICAg
ICAgICAgICAkY29uc3RydWN0b3JUeXBlID1+IHMvTmFtZWQkLy87Ci0gICAgICAgICAgICBwdXNo
KEAkb3V0cHV0QXJyYXksICIgICAgcmV0dXJuIEpTIiAuICRjb25zdHJ1Y3RvclR5cGUgLiAiOjpn
ZXQke25hbWVkfUNvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCAm
dGhpc09iamVjdCk7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBy
ZXR1cm4gSlMiIC4gJGNvbnN0cnVjdG9yVHlwZSAuICI6OmdldCR7bGVnYWN5RmFjdG9yeUZ1bmN0
aW9ufUNvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCAmdGhpc09i
amVjdCk7XG4iKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1
ZGVzKCJKUyIgLiAkY29uc3RydWN0b3JUeXBlIC4gIi5oIiwgJGNvbmRpdGlvbmFsKTsKLSAgICAg
ICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICByZXR1cm4gSlMiIC4gJGNvbnN0cnVjdG9y
VHlwZSAuICI6OmdldENvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3Qp
LCB0aGlzT2JqZWN0Lmdsb2JhbE9iamVjdCgpKTtcbiIpOworICAgICAgICAgICAgcHVzaChAJG91
dHB1dEFycmF5LCAiICAgIHJldHVybiBKUyIgLiAkY29uc3RydWN0b3JUeXBlIC4gIjo6Z2V0JHts
ZWdhY3lGYWN0b3J5RnVuY3Rpb259Q29uc3RydWN0b3IoSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCksIHRoaXNPYmplY3QuZ2xvYmFsT2JqZWN0KCkpO1xuIik7CiAgICAgICAgIH0KICAg
ICB9IGVsc2UgewogICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
Q2FjaGVkQXR0cmlidXRlfSkgewpAQCAtNTE4MiwxMCArNTE4NCwxMCBAQCBzdWIgR2VuZXJhdGVB
dHRyaWJ1dGVTZXR0ZXJCb2R5RGVmaW5pdGlvCiAgICAgfSBlbHNpZiAoJGlzQ29uc3RydWN0b3Ip
IHsKICAgICAgICAgbXkgJGNvbnN0cnVjdG9yVHlwZSA9ICRhdHRyaWJ1dGUtPnR5cGUtPm5hbWU7
CiAgICAgICAgICRjb25zdHJ1Y3RvclR5cGUgPX4gcy9Db25zdHJ1Y3RvciQvLzsKLSAgICAgICAg
IyAkY29uc3RydWN0b3JUeXBlIH49IC9Db25zdHJ1Y3RvciQvIGluZGljYXRlcyB0aGF0IGl0IGlz
IE5hbWVkQ29uc3RydWN0b3IuCi0gICAgICAgICMgV2UgZG8gbm90IGdlbmVyYXRlIHRoZSBoZWFk
ZXIgZmlsZSBmb3IgTmFtZWRDb25zdHJ1Y3RvciBvZiBjbGFzcyBYWFhYLAotICAgICAgICAjIHNp
bmNlIHdlIGdlbmVyYXRlIHRoZSBOYW1lZENvbnN0cnVjdG9yIGRlY2xhcmF0aW9uIGludG8gdGhl
IGhlYWRlciBmaWxlIG9mIGNsYXNzIFhYWFguCi0gICAgICAgIGlmICgkY29uc3RydWN0b3JUeXBl
IG5lICJhbnkiIGFuZCAkY29uc3RydWN0b3JUeXBlICF+IC9OYW1lZCQvKSB7CisgICAgICAgICMg
JGNvbnN0cnVjdG9yVHlwZSB+PSAvTGVnYWN5RmFjdG9yeUZ1bmN0aW9uJC8gaW5kaWNhdGVzIHRo
YXQgaXQgaXMgTGVnYWN5RmFjdG9yeUZ1bmN0aW9uLgorICAgICAgICAjIFdlIGRvIG5vdCBnZW5l
cmF0ZSB0aGUgaGVhZGVyIGZpbGUgZm9yIExlZ2FjeUZhY3RvcnlGdW5jdGlvbiBvZiBjbGFzcyBY
WFhYLAorICAgICAgICAjIHNpbmNlIHdlIGdlbmVyYXRlIHRoZSBMZWdhY3lGYWN0b3J5RnVuY3Rp
b24gZGVjbGFyYXRpb24gaW50byB0aGUgaGVhZGVyIGZpbGUgb2YgY2xhc3MgWFhYWC4KKyAgICAg
ICAgaWYgKCRjb25zdHJ1Y3RvclR5cGUgbmUgImFueSIgYW5kICRjb25zdHJ1Y3RvclR5cGUgIX4g
L0xlZ2FjeUZhY3RvcnlGdW5jdGlvbiQvKSB7CiAgICAgICAgICAgICBBZGRUb0ltcGxJbmNsdWRl
cygiSlMiIC4gJGNvbnN0cnVjdG9yVHlwZSAuICIuaCIsICRjb25kaXRpb25hbCk7CiAgICAgICAg
IH0KICAgICAgICAgbXkgJGlkID0gJGF0dHJpYnV0ZS0+bmFtZTsKQEAgLTU5MzMsNyArNTkzNSw3
IEBAIHN1YiBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjawogICAgIH0gZWxzZSB7CiAgICAgICAgICRx
dW90ZWRGdW5jdGlvbk5hbWUgPSAibnVsbHB0ciI7CiAgICAgICAgIHVubGVzcyAoJGNhbGxXaXRo
KSB7Ci0gICAgICAgICAgICAkY2FsbFdpdGggPSAkb3BlcmF0aW9uLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPntDb25zdHJ1Y3RvckNhbGxXaXRofTsKKyAgICAgICAgICAgICRjYWxsV2l0aCA9ICRvcGVy
YXRpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e0xlZ2FjeUZhY3RvcnlGdW5jdGlvbkNhbGxXaXRo
fTsKICAgICAgICAgfQogICAgICAgICBwdXNoKEBhcmd1bWVudHMsIEdlbmVyYXRlQ29uc3RydWN0
b3JDYWxsV2l0aFVzaW5nUG9pbnRlcnMoJGNhbGxXaXRoLCBcQCRvdXRwdXRBcnJheSwgJHZpc2li
bGVJbnRlcmZhY2VOYW1lLCAiKmNhc3RlZFRoaXMiKSk7CiAgICAgfQpAQCAtNzQxNCw3ICs3NDE2
LDcgQEAgc3ViIEdldENvbnN0cnVjdG9yVGVtcGxhdGVDbGFzc05hbWUKIHsKICAgICBteSAkaW50
ZXJmYWNlID0gc2hpZnQ7CiAgICAgcmV0dXJuICJKU0RPTUJ1aWx0aW5Db25zdHJ1Y3RvciIgaWYg
SGFzSlNCdWlsdGluQ29uc3RydWN0b3IoJGludGVyZmFjZSk7Ci0gICAgcmV0dXJuICJKU0RPTUNv
bnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZSIgaWYgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57TmFtZWRDb25zdHJ1Y3Rvcn07CisgICAgcmV0dXJuICJKU0RPTUNvbnN0cnVjdG9yTm90
Q29uc3RydWN0YWJsZSIgaWYgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57TGVnYWN5
RmFjdG9yeUZ1bmN0aW9ufTsKICAgICByZXR1cm4gIkpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1
Y3RhYmxlIiB1bmxlc3MgSXNDb25zdHJ1Y3RhYmxlKCRpbnRlcmZhY2UpOwogICAgIHJldHVybiAi
SlNET01Db25zdHJ1Y3RvciI7CiB9CkBAIC03NDI4LDIyICs3NDMwLDIyIEBAIHN1YiBHZW5lcmF0
ZUNvbnN0cnVjdG9yRGVjbGFyYXRpb24KICAgICBteSAkdGVtcGxhdGVDbGFzc05hbWUgPSBHZXRD
b25zdHJ1Y3RvclRlbXBsYXRlQ2xhc3NOYW1lKCRpbnRlcmZhY2UpOwogCiAgICAgQWRkVG9JbXBs
SW5jbHVkZXMoIiR7dGVtcGxhdGVDbGFzc05hbWV9LmgiKTsKLSAgICBBZGRUb0ltcGxJbmNsdWRl
cygiSlNET01OYW1lZENvbnN0cnVjdG9yLmgiKSBpZiAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPntOYW1lZENvbnN0cnVjdG9yfTsKKyAgICBBZGRUb0ltcGxJbmNsdWRlcygiSlNET01M
ZWdhY3lGYWN0b3J5RnVuY3Rpb24uaCIpIGlmICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRl
cy0+e0xlZ2FjeUZhY3RvcnlGdW5jdGlvbn07CiAKICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ1
c2luZyAkY29uc3RydWN0b3JDbGFzc05hbWUgPSAkdGVtcGxhdGVDbGFzc05hbWU8JGNsYXNzTmFt
ZT47XG4iKTsKLSAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ1c2luZyBKUyR7aW50ZXJmYWNlTmFt
ZX1OYW1lZENvbnN0cnVjdG9yID0gSlNET01OYW1lZENvbnN0cnVjdG9yPCRjbGFzc05hbWU+O1xu
IikgaWYgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57TmFtZWRDb25zdHJ1Y3Rvcn07
CisgICAgcHVzaChAJG91dHB1dEFycmF5LCAidXNpbmcgSlMke2ludGVyZmFjZU5hbWV9TGVnYWN5
RmFjdG9yeUZ1bmN0aW9uID0gSlNET01MZWdhY3lGYWN0b3J5RnVuY3Rpb248JGNsYXNzTmFtZT47
XG4iKSBpZiAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntMZWdhY3lGYWN0b3J5RnVu
Y3Rpb259OwogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIlxuIik7CiB9CiAKIHN1YiBHZW5lcmF0
ZUNvbnN0cnVjdG9yRGVmaW5pdGlvbnMKIHsKLSAgICBteSAoJG91dHB1dEFycmF5LCAkY2xhc3NO
YW1lLCAkcHJvdG9DbGFzc05hbWUsICR2aXNpYmxlSW50ZXJmYWNlTmFtZSwgJGludGVyZmFjZSwg
JGdlbmVyYXRpbmdOYW1lZENvbnN0cnVjdG9yKSA9IEBfOworICAgIG15ICgkb3V0cHV0QXJyYXks
ICRjbGFzc05hbWUsICRwcm90b0NsYXNzTmFtZSwgJHZpc2libGVJbnRlcmZhY2VOYW1lLCAkaW50
ZXJmYWNlLCAkZ2VuZXJhdGluZ0xlZ2FjeUZhY3RvcnlGdW5jdGlvbikgPSBAXzsKIAogICAgIGlm
IChJc0NvbnN0cnVjdGFibGUoJGludGVyZmFjZSkpIHsKICAgICAgICAgbXkgQGNvbnN0cnVjdG9y
cyA9IEB7JGludGVyZmFjZS0+Y29uc3RydWN0b3JzfTsKICAgICAgICAgaWYgKEBjb25zdHJ1Y3Rv
cnMgPiAxKSB7CiAgICAgICAgICAgICBmb3JlYWNoIG15ICRjb25zdHJ1Y3RvciAoQGNvbnN0cnVj
dG9ycykgewotICAgICAgICAgICAgICAgIEdlbmVyYXRlQ29uc3RydWN0b3JEZWZpbml0aW9uKCRv
dXRwdXRBcnJheSwgJGNsYXNzTmFtZSwgJHByb3RvQ2xhc3NOYW1lLCAkdmlzaWJsZUludGVyZmFj
ZU5hbWUsICRpbnRlcmZhY2UsICRnZW5lcmF0aW5nTmFtZWRDb25zdHJ1Y3RvciwgJGNvbnN0cnVj
dG9yKTsKKyAgICAgICAgICAgICAgICBHZW5lcmF0ZUNvbnN0cnVjdG9yRGVmaW5pdGlvbigkb3V0
cHV0QXJyYXksICRjbGFzc05hbWUsICRwcm90b0NsYXNzTmFtZSwgJHZpc2libGVJbnRlcmZhY2VO
YW1lLCAkaW50ZXJmYWNlLCAkZ2VuZXJhdGluZ0xlZ2FjeUZhY3RvcnlGdW5jdGlvbiwgJGNvbnN0
cnVjdG9yKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgbXkgJG92ZXJsb2FkRnVuY3Rp
b25QcmVmaXggPSAiY29uc3RydWN0JHtjbGFzc05hbWV9IjsKQEAgLTc0NTgsMjMgKzc0NjAsMjMg
QEAgc3ViIEdlbmVyYXRlQ29uc3RydWN0b3JEZWZpbml0aW9ucwogCiAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIn1cblxuIik7CiAgICAgICAgIH0gZWxzaWYgKEBjb25zdHJ1Y3RvcnMg
PT0gMSkgewotICAgICAgICAgICAgR2VuZXJhdGVDb25zdHJ1Y3RvckRlZmluaXRpb24oJG91dHB1
dEFycmF5LCAkY2xhc3NOYW1lLCAkcHJvdG9DbGFzc05hbWUsICR2aXNpYmxlSW50ZXJmYWNlTmFt
ZSwgJGludGVyZmFjZSwgJGdlbmVyYXRpbmdOYW1lZENvbnN0cnVjdG9yLCAkY29uc3RydWN0b3Jz
WzBdKTsKKyAgICAgICAgICAgIEdlbmVyYXRlQ29uc3RydWN0b3JEZWZpbml0aW9uKCRvdXRwdXRB
cnJheSwgJGNsYXNzTmFtZSwgJHByb3RvQ2xhc3NOYW1lLCAkdmlzaWJsZUludGVyZmFjZU5hbWUs
ICRpbnRlcmZhY2UsICRnZW5lcmF0aW5nTGVnYWN5RmFjdG9yeUZ1bmN0aW9uLCAkY29uc3RydWN0
b3JzWzBdKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIEdlbmVyYXRlQ29uc3RydWN0
b3JEZWZpbml0aW9uKCRvdXRwdXRBcnJheSwgJGNsYXNzTmFtZSwgJHByb3RvQ2xhc3NOYW1lLCAk
dmlzaWJsZUludGVyZmFjZU5hbWUsICRpbnRlcmZhY2UsICRnZW5lcmF0aW5nTmFtZWRDb25zdHJ1
Y3Rvcik7CisgICAgICAgICAgICBHZW5lcmF0ZUNvbnN0cnVjdG9yRGVmaW5pdGlvbigkb3V0cHV0
QXJyYXksICRjbGFzc05hbWUsICRwcm90b0NsYXNzTmFtZSwgJHZpc2libGVJbnRlcmZhY2VOYW1l
LCAkaW50ZXJmYWNlLCAkZ2VuZXJhdGluZ0xlZ2FjeUZhY3RvcnlGdW5jdGlvbik7CiAgICAgICAg
IH0KICAgICB9CiAKLSAgICBHZW5lcmF0ZUNvbnN0cnVjdG9ySGVscGVyTWV0aG9kcygkb3V0cHV0
QXJyYXksICRjbGFzc05hbWUsICRwcm90b0NsYXNzTmFtZSwgJHZpc2libGVJbnRlcmZhY2VOYW1l
LCAkaW50ZXJmYWNlLCAkZ2VuZXJhdGluZ05hbWVkQ29uc3RydWN0b3IpOworICAgIEdlbmVyYXRl
Q29uc3RydWN0b3JIZWxwZXJNZXRob2RzKCRvdXRwdXRBcnJheSwgJGNsYXNzTmFtZSwgJHByb3Rv
Q2xhc3NOYW1lLCAkdmlzaWJsZUludGVyZmFjZU5hbWUsICRpbnRlcmZhY2UsICRnZW5lcmF0aW5n
TGVnYWN5RmFjdG9yeUZ1bmN0aW9uKTsKIH0KIAogc3ViIEdlbmVyYXRlQ29uc3RydWN0b3JEZWZp
bml0aW9uCiB7Ci0gICAgbXkgKCRvdXRwdXRBcnJheSwgJGNsYXNzTmFtZSwgJHByb3RvQ2xhc3NO
YW1lLCAkdmlzaWJsZUludGVyZmFjZU5hbWUsICRpbnRlcmZhY2UsICRnZW5lcmF0aW5nTmFtZWRD
b25zdHJ1Y3RvciwgJG9wZXJhdGlvbikgPSBAXzsKKyAgICBteSAoJG91dHB1dEFycmF5LCAkY2xh
c3NOYW1lLCAkcHJvdG9DbGFzc05hbWUsICR2aXNpYmxlSW50ZXJmYWNlTmFtZSwgJGludGVyZmFj
ZSwgJGdlbmVyYXRpbmdMZWdhY3lGYWN0b3J5RnVuY3Rpb24sICRvcGVyYXRpb24pID0gQF87CiAK
ICAgICByZXR1cm4gaWYgSGFzSlNCdWlsdGluQ29uc3RydWN0b3IoJGludGVyZmFjZSk7CiAKICAg
ICBteSAkaW50ZXJmYWNlTmFtZSA9ICRpbnRlcmZhY2UtPnR5cGUtPm5hbWU7Ci0gICAgbXkgJGNv
bnN0cnVjdG9yQ2xhc3NOYW1lID0gJGdlbmVyYXRpbmdOYW1lZENvbnN0cnVjdG9yID8gIiR7Y2xh
c3NOYW1lfU5hbWVkQ29uc3RydWN0b3IiIDogIiR7Y2xhc3NOYW1lfUNvbnN0cnVjdG9yIjsKKyAg
ICBteSAkY29uc3RydWN0b3JDbGFzc05hbWUgPSAkZ2VuZXJhdGluZ0xlZ2FjeUZhY3RvcnlGdW5j
dGlvbiA/ICIke2NsYXNzTmFtZX1MZWdhY3lGYWN0b3J5RnVuY3Rpb24iIDogIiR7Y2xhc3NOYW1l
fUNvbnN0cnVjdG9yIjsKIAogICAgIGlmIChJc0NvbnN0cnVjdGFibGUoJGludGVyZmFjZSkpIHsK
ICAgICAgICAgaWYgKEhhc0N1c3RvbUNvbnN0cnVjdG9yKCRpbnRlcmZhY2UpKSB7CkBAIC03NDgz
LDcgKzc0ODUsNyBAQCBzdWIgR2VuZXJhdGVDb25zdHJ1Y3RvckRlZmluaXRpb24KICAgICAgICAg
ICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBBU1NFUlQoY2FsbEZyYW1lKTtcbiIpOwogICAg
ICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHJldHVybiBjb25zdHJ1Y3Qke2NsYXNz
TmFtZX0obGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSk7XG4iKTsKICAgICAgICAgICAg
IHB1c2goQCRvdXRwdXRBcnJheSwgIn1cblxuIik7Ci0gICAgICAgICB9IGVsc2lmICghSGFzQ3Vz
dG9tQ29uc3RydWN0b3IoJGludGVyZmFjZSkgJiYgKCEkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPntOYW1lZENvbnN0cnVjdG9yfSB8fCAkZ2VuZXJhdGluZ05hbWVkQ29uc3RydWN0b3Ip
KSB7CisgICAgICAgICB9IGVsc2lmICghSGFzQ3VzdG9tQ29uc3RydWN0b3IoJGludGVyZmFjZSkg
JiYgKCEkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntMZWdhY3lGYWN0b3J5RnVuY3Rp
b259IHx8ICRnZW5lcmF0aW5nTGVnYWN5RmFjdG9yeUZ1bmN0aW9uKSkgewogICAgICAgICAgICAg
bXkgJGlzT3ZlcmxvYWRlZCA9ICRvcGVyYXRpb24tPntvdmVybG9hZHN9ICYmIEB7JG9wZXJhdGlv
bi0+e292ZXJsb2Fkc319ID4gMTsKICAgICAgICAgICAgIGlmICgkaXNPdmVybG9hZGVkKSB7CiAg
ICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAic3RhdGljIGlubGluZSBFbmNvZGVk
SlNWYWx1ZSBjb25zdHJ1Y3Qke2NsYXNzTmFtZX0kb3BlcmF0aW9uLT57b3ZlcmxvYWRJbmRleH0o
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KVxuIik7CkBAIC03NTA3LDEyICs3NTA5LDEyIEBAIHN1YiBHZW5lcmF0ZUNvbnN0cnVjdG9yRGVm
aW5pdGlvbgogCiAgICAgICAgICAgICBHZW5lcmF0ZUFyZ3VtZW50c0NvdW50Q2hlY2soJG91dHB1
dEFycmF5LCAkb3BlcmF0aW9uLCAkaW50ZXJmYWNlLCAiICAgICIpOwogCi0gICAgICAgICAgICBt
eSAkZnVuY3Rpb25JbXBsZW1lbnRhdGlvbk5hbWUgPSAkZ2VuZXJhdGluZ05hbWVkQ29uc3RydWN0
b3IgPyAiY3JlYXRlRm9ySlNDb25zdHJ1Y3RvciIgOiAiY3JlYXRlIjsKKyAgICAgICAgICAgIG15
ICRmdW5jdGlvbkltcGxlbWVudGF0aW9uTmFtZSA9ICRnZW5lcmF0aW5nTGVnYWN5RmFjdG9yeUZ1
bmN0aW9uID8gImNyZWF0ZUZvckpTQ29uc3RydWN0b3IiIDogImNyZWF0ZSI7CiAgICAgICAgICAg
ICBteSAkZnVuY3Rpb25TdHJpbmcgPSBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjaygkb3V0cHV0QXJy
YXksICRvcGVyYXRpb24sICRpbnRlcmZhY2UsICRmdW5jdGlvbkltcGxlbWVudGF0aW9uTmFtZSwg
IiAgICAiKTsKIAogICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGF1dG8gb2Jq
ZWN0ID0gJHtmdW5jdGlvblN0cmluZ307XG4iKTsKICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRB
cnJheSwgIiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVl
KCkpO1xuIikgaWYgJGNvZGVHZW5lcmF0b3ItPkV4dGVuZGVkQXR0cmlidXRlQ29udGFpbnMoJGlu
dGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q2FsbFdpdGh9LCAiRXhlY1N0YXRlIik7Ci0g
ICAgICAgICAgICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q29uc3RydWN0
b3JNYXlUaHJvd0V4Y2VwdGlvbn0gfHwgJG9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
TWF5VGhyb3dFeGNlcHRpb259KSB7CisgICAgICAgICAgICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57TGVnYWN5RmFjdG9yeUZ1bmN0aW9uTWF5VGhyb3dFeGNlcHRpb259IHx8
ICRvcGVyYXRpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e01heVRocm93RXhjZXB0aW9ufSkgewog
ICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBzdGF0aWNfYXNzZXJ0KElz
RXhjZXB0aW9uT3I8ZGVjbHR5cGUob2JqZWN0KT46OnZhbHVlKTtcbiIpOwogICAgICAgICAgICAg
ICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBzdGF0aWNfYXNzZXJ0KGRlY2x0eXBlKG9iamVj
dCk6OlJldHVyblR5cGU6OmlzUmVmKTtcbiIpOwogICAgICAgICAgICAgfSBlbHNlIHsKQEAgLTc1
MjcsMTIgKzc1MjksMTIgQEAgc3ViIEdlbmVyYXRlQ29uc3RydWN0b3JEZWZpbml0aW9uCiAgICAg
ICAgICAgICBteSBAY29uc3RydWN0aW9uQ29udmVyc2lvbkFyZ3VtZW50cyA9ICgpOwogICAgICAg
ICAgICAgcHVzaChAY29uc3RydWN0aW9uQ29udmVyc2lvbkFyZ3VtZW50cywgIipsZXhpY2FsR2xv
YmFsT2JqZWN0Iik7CiAgICAgICAgICAgICBwdXNoKEBjb25zdHJ1Y3Rpb25Db252ZXJzaW9uQXJn
dW1lbnRzLCAiKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpIik7Ci0gICAgICAgICAgICBwdXNo
KEBjb25zdHJ1Y3Rpb25Db252ZXJzaW9uQXJndW1lbnRzLCAidGhyb3dTY29wZSIpIGlmICRpbnRl
cmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NvbnN0cnVjdG9yTWF5VGhyb3dFeGNlcHRpb259
IHx8ICRvcGVyYXRpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e01heVRocm93RXhjZXB0aW9ufTsK
KyAgICAgICAgICAgIHB1c2goQGNvbnN0cnVjdGlvbkNvbnZlcnNpb25Bcmd1bWVudHMsICJ0aHJv
d1Njb3BlIikgaWYgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57TGVnYWN5RmFjdG9y
eUZ1bmN0aW9uTWF5VGhyb3dFeGNlcHRpb259IHx8ICRvcGVyYXRpb24tPmV4dGVuZGVkQXR0cmli
dXRlcy0+e01heVRocm93RXhjZXB0aW9ufTsKICAgICAgICAgICAgIHB1c2goQGNvbnN0cnVjdGlv
bkNvbnZlcnNpb25Bcmd1bWVudHMsICJXVEZNb3ZlKG9iamVjdCkiKTsKIAogICAgICAgICAgICAg
IyBGSVhNRTogdG9KU05ld2x5Q3JlYXRlZCBzaG91bGQgcmV0dXJuIEpTT2JqZWN0KiBpbnN0ZWFk
IG9mIEpTVmFsdWUuCiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgYXV0byBq
c1ZhbHVlID0gdG9KU05ld2x5Q3JlYXRlZDwke0lETFR5cGV9PigiIC4gam9pbigiLCAiLCBAY29u
c3RydWN0aW9uQ29udmVyc2lvbkFyZ3VtZW50cykgLiAiKTtcbiIpOwotICAgICAgICAgICAgcHVz
aChAJG91dHB1dEFycmF5LCAiICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9
KTtcbiIpIGlmICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NvbnN0cnVjdG9yTWF5
VGhyb3dFeGNlcHRpb259IHx8ICRvcGVyYXRpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e01heVRo
cm93RXhjZXB0aW9ufTsKKyAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7XG4iKSBpZiAkaW50ZXJmYWNlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPntMZWdhY3lGYWN0b3J5RnVuY3Rpb25NYXlUaHJvd0V4Y2VwdGlvbn0g
fHwgJG9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57TWF5VGhyb3dFeGNlcHRpb259Owog
ICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHNldFN1YmNsYXNzU3RydWN0dXJl
SWZOZWVkZWQ8JHtpbXBsVHlwZX0+KGxleGljYWxHbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgYXNP
YmplY3QoanNWYWx1ZSkpO1xuIik7CiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pO1xuIik7CiAgICAgICAgICAg
ICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1ZhbHVl
KTtcbiIpOwpAQCAtNzYwMyw5ICs3NjA1LDkgQEAgc3ViIEdldFJ1bnRpbWVFbmFibGVkU3RhdGlj
UHJvcGVydGllcwogCiBzdWIgR2VuZXJhdGVDb25zdHJ1Y3RvckhlbHBlck1ldGhvZHMKIHsKLSAg
ICBteSAoJG91dHB1dEFycmF5LCAkY2xhc3NOYW1lLCAkcHJvdG9DbGFzc05hbWUsICR2aXNpYmxl
SW50ZXJmYWNlTmFtZSwgJGludGVyZmFjZSwgJGdlbmVyYXRpbmdOYW1lZENvbnN0cnVjdG9yKSA9
IEBfOworICAgIG15ICgkb3V0cHV0QXJyYXksICRjbGFzc05hbWUsICRwcm90b0NsYXNzTmFtZSwg
JHZpc2libGVJbnRlcmZhY2VOYW1lLCAkaW50ZXJmYWNlLCAkZ2VuZXJhdGluZ0xlZ2FjeUZhY3Rv
cnlGdW5jdGlvbikgPSBAXzsKIAotICAgIG15ICRjb25zdHJ1Y3RvckNsYXNzTmFtZSA9ICRnZW5l
cmF0aW5nTmFtZWRDb25zdHJ1Y3RvciA/ICIke2NsYXNzTmFtZX1OYW1lZENvbnN0cnVjdG9yIiA6
ICIke2NsYXNzTmFtZX1Db25zdHJ1Y3RvciI7CisgICAgbXkgJGNvbnN0cnVjdG9yQ2xhc3NOYW1l
ID0gJGdlbmVyYXRpbmdMZWdhY3lGYWN0b3J5RnVuY3Rpb24gPyAiJHtjbGFzc05hbWV9TGVnYWN5
RmFjdG9yeUZ1bmN0aW9uIiA6ICIke2NsYXNzTmFtZX1Db25zdHJ1Y3RvciI7CiAgICAgbXkgJGxl
YXN0Q29uc3RydWN0b3JMZW5ndGggPSAwOwogICAgIGlmIChAeyRpbnRlcmZhY2UtPmNvbnN0cnVj
dG9yc30gPiAwKSB7CiAgICAgICAgICRsZWFzdENvbnN0cnVjdG9yTGVuZ3RoID0gMjU1OwpAQCAt
NzYyNCw3ICs3NjI2LDcgQEAgc3ViIEdlbmVyYXRlQ29uc3RydWN0b3JIZWxwZXJNZXRob2RzCiAK
ICAgICBhc3NlcnQoIkFuIGludGVyZmFjZSBjYW5ub3QgaW5oZXJpdCBmcm9tIGFub3RoZXIgaW50
ZXJmYWNlIHRoYXQgaXMgbWFya2VkIGFzIFtOb0ludGVyZmFjZU9iamVjdF0iKSBpZiAkaW50ZXJm
YWNlLT5wYXJlbnRUeXBlICYmICRjb2RlR2VuZXJhdG9yLT5HZXRJbnRlcmZhY2VFeHRlbmRlZEF0
dHJpYnV0ZXNGcm9tTmFtZSgkaW50ZXJmYWNlLT5wYXJlbnRUeXBlLT5uYW1lKS0+e05vSW50ZXJm
YWNlT2JqZWN0fTsKIAotICAgIGlmICghJGdlbmVyYXRpbmdOYW1lZENvbnN0cnVjdG9yIGFuZCAk
aW50ZXJmYWNlLT5wYXJlbnRUeXBlKSB7CisgICAgaWYgKCEkZ2VuZXJhdGluZ0xlZ2FjeUZhY3Rv
cnlGdW5jdGlvbiBhbmQgJGludGVyZmFjZS0+cGFyZW50VHlwZSkgewogICAgICAgICBteSAkcGFy
ZW50Q2xhc3NOYW1lID0gIkpTIiAuICRpbnRlcmZhY2UtPnBhcmVudFR5cGUtPm5hbWU7CiAgICAg
ICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICByZXR1cm4gJHtwYXJlbnRDbGFzc05hbWV9Ojpn
ZXRDb25zdHJ1Y3Rvcih2bSwgJmdsb2JhbE9iamVjdCk7XG4iKTsKICAgICB9IGVsc2UgewpAQCAt
NzY1Miw3ICs3NjU0LDcgQEAgc3ViIEdlbmVyYXRlQ29uc3RydWN0b3JIZWxwZXJNZXRob2RzCiAg
ICAgYXNzZXJ0KCJqc05vbnRyaXZpYWxTdHJpbmcoKSByZXF1aXJlcyBzdHJpbmdzIHR3byBvciBt
b3JlIGNoYXJhY3RlcnMgbG9uZyIpIGlmIGxlbmd0aCgkdmlzaWJsZUludGVyZmFjZU5hbWUpIDwg
MjsKICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIFwiJHZpc2libGVJbnRlcmZhY2VO
YW1lXCJfcyksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0pO1xuIik7CiAKLSAgICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57Q29uc3RydWN0b3JFbmFibGVkQnlTZXR0aW5nfSkgeworICAgIGlmICgk
aW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntMZWdhY3lGYWN0b3J5RnVuY3Rpb25FbmFi
bGVkQnlTZXR0aW5nfSkgewogICAgICAgICBteSAkcnVudGltZUVuYWJsZUNvbmRpdGlvbmFsU3Ry
aW5nID0gR2VuZXJhdGVSdW50aW1lRW5hYmxlQ29uZGl0aW9uYWxTdHJpbmcoJGludGVyZmFjZSwg
JGludGVyZmFjZSwgIiZnbG9iYWxPYmplY3QiKTsKICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5
LCAiICAgIGludCBjb25zdHJ1Y3Rvckxlbmd0aCA9ICR7bGVhc3RDb25zdHJ1Y3Rvckxlbmd0aH07
XG4iKTsKICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGlmICghJHtydW50aW1lRW5h
YmxlQ29uZGl0aW9uYWxTdHJpbmd9KVxuIik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMuanNvbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMuanNvbgkocmV2aXNpb24gMjY2NTU5KQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLmpzb24JKHdv
cmtpbmcgY29weSkKQEAgLTcyLDI1ICs3Miw2IEBACiAgICAgICAgICAgICAiY29udGV4dHNBbGxv
d2VkIjogWyJpbnRlcmZhY2UiXSwKICAgICAgICAgICAgICJ2YWx1ZXMiOiBbIioiXQogICAgICAg
ICB9LAotICAgICAgICAiQ29uc3RydWN0b3IiOiB7Ci0gICAgICAgICAgICAiY29udGV4dHNBbGxv
d2VkIjogWyJpbnRlcmZhY2UiXSwKLSAgICAgICAgICAgICJzdGFuZGFyZCI6IHsKLSAgICAgICAg
ICAgICAgICAidXJsIjogImh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI0NvbnN0cnVj
dG9yIgotICAgICAgICAgICAgfQotICAgICAgICB9LAotICAgICAgICAiQ29uc3RydWN0b3JDYWxs
V2l0aCI6IHsKLSAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImludGVyZmFjZSJdLAot
ICAgICAgICAgICAgInZhbHVlcyI6IFsiRG9jdW1lbnQiLCAiRXhlY1N0YXRlIiwgIlJ1bnRpbWVG
bGFncyIsICJTY3JpcHRFeGVjdXRpb25Db250ZXh0Il0sCi0gICAgICAgICAgICAic3VwcG9ydHND
b25qdW5jdGlvbiI6IHRydWUKLSAgICAgICAgfSwKLSAgICAgICAgIkNvbnN0cnVjdG9yRW5hYmxl
ZEJ5U2V0dGluZyI6IHsKLSAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImF0dHJpYnV0
ZSIsICJpbnRlcmZhY2UiXSwKLSAgICAgICAgICAgICJ2YWx1ZXMiOiBbIioiXSwKLSAgICAgICAg
ICAgICJzdXBwb3J0c0Nvbmp1bmN0aW9uIjogdHJ1ZQotICAgICAgICB9LAotICAgICAgICAiQ29u
c3RydWN0b3JNYXlUaHJvd0V4Y2VwdGlvbiI6IHsKLSAgICAgICAgICAgICJjb250ZXh0c0FsbG93
ZWQiOiBbImludGVyZmFjZSJdCi0gICAgICAgIH0sCiAgICAgICAgICJDb250ZXh0QWxsb3dzTWVk
aWFEZXZpY2VzIjogewogICAgICAgICAgICAgImNvbnRleHRzQWxsb3dlZCI6IFsiYXR0cmlidXRl
Il0KICAgICAgICAgfSwKQEAgLTI5Nyw2ICsyNzgsMjYgQEAKICAgICAgICAgICAgIH0sCiAgICAg
ICAgICAgICAidW5zdXBwb3J0ZWQiOiB0cnVlCiAgICAgICAgIH0sCisgICAgICAgICJMZWdhY3lG
YWN0b3J5RnVuY3Rpb24iOiB7CisgICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJpbnRl
cmZhY2UiXSwKKyAgICAgICAgICAgICJ2YWx1ZXMiOiBbIioiXSwKKyAgICAgICAgICAgICJzdGFu
ZGFyZCI6IHsKKyAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5p
by93ZWJpZGwvI0xlZ2FjeUZhY3RvcnlGdW5jdGlvbiIKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fSwKKyAgICAgICAgIkxlZ2FjeUZhY3RvcnlGdW5jdGlvbkNhbGxXaXRoIjogeworICAgICAgICAg
ICAgImNvbnRleHRzQWxsb3dlZCI6IFsiaW50ZXJmYWNlIl0sCisgICAgICAgICAgICAidmFsdWVz
IjogWyJEb2N1bWVudCIsICJFeGVjU3RhdGUiLCAiUnVudGltZUZsYWdzIiwgIlNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQiXSwKKyAgICAgICAgICAgICJzdXBwb3J0c0Nvbmp1bmN0aW9uIjogdHJ1ZQor
ICAgICAgICB9LAorICAgICAgICAiTGVnYWN5RmFjdG9yeUZ1bmN0aW9uRW5hYmxlZEJ5U2V0dGlu
ZyI6IHsKKyAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImF0dHJpYnV0ZSIsICJpbnRl
cmZhY2UiXSwKKyAgICAgICAgICAgICJ2YWx1ZXMiOiBbIioiXSwKKyAgICAgICAgICAgICJzdXBw
b3J0c0Nvbmp1bmN0aW9uIjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAiTGVnYWN5RmFjdG9y
eUZ1bmN0aW9uTWF5VGhyb3dFeGNlcHRpb24iOiB7CisgICAgICAgICAgICAiY29udGV4dHNBbGxv
d2VkIjogWyJpbnRlcmZhY2UiXQorICAgICAgICB9LAogICAgICAgICAiTGVnYWN5VW5lbnVtZXJh
YmxlTmFtZWRQcm9wZXJ0aWVzIjogewogICAgICAgICAgICAgImNvbnRleHRzQWxsb3dlZCI6IFsi
aW50ZXJmYWNlIl0sCiAgICAgICAgICAgICAic3RhbmRhcmQiOiB7CkBAIC0zMjksMTMgKzMzMCw2
IEBACiAgICAgICAgICJNYXlUaHJvd0V4Y2VwdGlvbiI6IHsKICAgICAgICAgICAgICJjb250ZXh0
c0FsbG93ZWQiOiBbImF0dHJpYnV0ZSIsICJvcGVyYXRpb24iXQogICAgICAgICB9LAotICAgICAg
ICAiTmFtZWRDb25zdHJ1Y3RvciI6IHsKLSAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBb
ImludGVyZmFjZSJdLAotICAgICAgICAgICAgInZhbHVlcyI6IFsiKiJdLAotICAgICAgICAgICAg
InN0YW5kYXJkIjogewotICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9oZXljYW0uZ2l0
aHViLmlvL3dlYmlkbC8jTmFtZWRDb25zdHJ1Y3RvciIKLSAgICAgICAgICAgIH0KLSAgICAgICAg
fSwKICAgICAgICAgIk5ld0ltcHVyZVByb3BlcnR5RmlyZXNXYXRjaHBvaW50cyI6IHsKICAgICAg
ICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImludGVyZmFjZSJdCiAgICAgICAgIH0sCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETFBhcnNlci5wbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETFBhcnNlci5wbQkocmV2aXNp
b24gMjY2NTU5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIu
cG0JKHdvcmtpbmcgY29weSkKQEAgLTMzODcsMTYgKzMzODcsMTYgQEAgc3ViIGFwcGx5RXh0ZW5k
ZWRBdHRyaWJ1dGVMaXN0CiAgICAgbXkgJGludGVyZmFjZSA9IHNoaWZ0OwogICAgIG15ICRleHRl
bmRlZEF0dHJpYnV0ZUxpc3QgPSBzaGlmdDsKIAotICAgIGlmIChkZWZpbmVkICRleHRlbmRlZEF0
dHJpYnV0ZUxpc3QtPnsiTmFtZWRDb25zdHJ1Y3RvciJ9KSB7CisgICAgaWYgKGRlZmluZWQgJGV4
dGVuZGVkQXR0cmlidXRlTGlzdC0+eyJMZWdhY3lGYWN0b3J5RnVuY3Rpb24ifSkgewogICAgICAg
ICBteSAkbmV3RGF0YU5vZGUgPSBJRExPcGVyYXRpb24tPm5ldygpOwogICAgICAgICAkbmV3RGF0
YU5vZGUtPmlzQ29uc3RydWN0b3IoMSk7Ci0gICAgICAgICRuZXdEYXRhTm9kZS0+bmFtZSgiTmFt
ZWRDb25zdHJ1Y3RvciIpOworICAgICAgICAkbmV3RGF0YU5vZGUtPm5hbWUoIkxlZ2FjeUZhY3Rv
cnlGdW5jdGlvbiIpOwogICAgICAgICAkbmV3RGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcygk
ZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0KTsKLSAgICAgICAgbXkgJWF0dHJpYnV0ZXMgPSAleyRleHRl
bmRlZEF0dHJpYnV0ZUxpc3QtPnsiTmFtZWRDb25zdHJ1Y3RvciJ9fTsKKyAgICAgICAgbXkgJWF0
dHJpYnV0ZXMgPSAleyRleHRlbmRlZEF0dHJpYnV0ZUxpc3QtPnsiTGVnYWN5RmFjdG9yeUZ1bmN0
aW9uIn19OwogICAgICAgICBteSBAYXR0cmlidXRlS2V5cyA9IGtleXMgKCVhdHRyaWJ1dGVzKTsK
ICAgICAgICAgbXkgJGNvbnN0cnVjdG9yTmFtZSA9ICRhdHRyaWJ1dGVLZXlzWzBdOwogICAgICAg
ICBwdXNoKEB7JG5ld0RhdGFOb2RlLT5hcmd1bWVudHN9LCBAeyRhdHRyaWJ1dGVzeyRjb25zdHJ1
Y3Rvck5hbWV9fSk7Ci0gICAgICAgICRleHRlbmRlZEF0dHJpYnV0ZUxpc3QtPnsiTmFtZWRDb25z
dHJ1Y3RvciJ9ID0gJGNvbnN0cnVjdG9yTmFtZTsKKyAgICAgICAgJGV4dGVuZGVkQXR0cmlidXRl
TGlzdC0+eyJMZWdhY3lGYWN0b3J5RnVuY3Rpb24ifSA9ICRjb25zdHJ1Y3Rvck5hbWU7CiAgICAg
ICAgIHB1c2goQHskaW50ZXJmYWNlLT5jb25zdHJ1Y3RvcnN9LCAkbmV3RGF0YU5vZGUpOwogICAg
IH0KICAgICAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvcHJlcHJvY2Vz
cy1pZGxzLnBsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
cHJlcHJvY2Vzcy1pZGxzLnBsCShyZXZpc2lvbiAyNjY1NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3ByZXByb2Nlc3MtaWRscy5wbAkod29ya2luZyBjb3B5KQpAQCAtMzEx
LDcgKzMxMSw3IEBAIHN1YiBHZW5lcmF0ZUNvbnN0cnVjdG9yQXR0cmlidXRlcwogICAgICAgbmV4
dCB1bmxlc3MgKCRhdHRyaWJ1dGVOYW1lIGVxICJDb25kaXRpb25hbCIgfHwgJGF0dHJpYnV0ZU5h
bWUgZXEgIkVuYWJsZWRBdFJ1bnRpbWUiIHx8ICRhdHRyaWJ1dGVOYW1lIGVxICJFbmFibGVkRm9y
V29ybGQiCiAgICAgICAgIHx8ICRhdHRyaWJ1dGVOYW1lIGVxICJFbmFibGVkQnlTZXR0aW5nIiB8
fCAkYXR0cmlidXRlTmFtZSBlcSAiU2VjdXJlQ29udGV4dCIgfHwgJGF0dHJpYnV0ZU5hbWUgZXEg
IlByaXZhdGVJZGVudGlmaWVyIgogICAgICAgICB8fCAkYXR0cmlidXRlTmFtZSBlcSAiUHVibGlj
SWRlbnRpZmllciIgfHwgJGF0dHJpYnV0ZU5hbWUgZXEgIkRpc2FibGVkQnlRdWlyayIgfHwgJGF0
dHJpYnV0ZU5hbWUgZXEgIkVuYWJsZWRCeVF1aXJrIgotICAgICAgICB8fCAkYXR0cmlidXRlTmFt
ZSBlcSAiRW5hYmxlZEZvckNvbnRleHQiIHx8ICRhdHRyaWJ1dGVOYW1lIGVxICJDdXN0b21FbmFi
bGVkIikgfHwgJGF0dHJpYnV0ZU5hbWUgZXEgIkNvbnN0cnVjdG9yRW5hYmxlZEJ5U2V0dGluZyI7
CisgICAgICAgIHx8ICRhdHRyaWJ1dGVOYW1lIGVxICJFbmFibGVkRm9yQ29udGV4dCIgfHwgJGF0
dHJpYnV0ZU5hbWUgZXEgIkN1c3RvbUVuYWJsZWQiKSB8fCAkYXR0cmlidXRlTmFtZSBlcSAiTGVn
YWN5RmFjdG9yeUZ1bmN0aW9uRW5hYmxlZEJ5U2V0dGluZyI7CiAgICAgICBteSAkZXh0ZW5kZWRB
dHRyaWJ1dGUgPSAkYXR0cmlidXRlTmFtZTsKICAgICAgICRleHRlbmRlZEF0dHJpYnV0ZSAuPSAi
PSIgLiAkZXh0ZW5kZWRBdHRyaWJ1dGVzLT57JGF0dHJpYnV0ZU5hbWV9IHVubGVzcyAkZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57JGF0dHJpYnV0ZU5hbWV9IGVxICJWQUxVRV9JU19NSVNTSU5HIjsKICAg
ICAgIHB1c2goQGV4dGVuZGVkQXR0cmlidXRlc0xpc3QsICRleHRlbmRlZEF0dHJpYnV0ZSk7CkBA
IC0zMjIsMTQgKzMyMiwxNCBAQCBzdWIgR2VuZXJhdGVDb25zdHJ1Y3RvckF0dHJpYnV0ZXMKICAg
ICAkaW50ZXJmYWNlTmFtZSA9ICRleHRlbmRlZEF0dHJpYnV0ZXMtPnsiSW50ZXJmYWNlTmFtZSJ9
IGlmICRleHRlbmRlZEF0dHJpYnV0ZXMtPnsiSW50ZXJmYWNlTmFtZSJ9OwogICAgICRjb2RlIC49
ICJhdHRyaWJ1dGUgIiAuICRvcmlnaW5hbEludGVyZmFjZU5hbWUgLiAiQ29uc3RydWN0b3IgJGlu
dGVyZmFjZU5hbWU7XG4iOwogCi0gICAgIyBJbiBhZGRpdGlvbiB0byB0aGUgcmVndWxhciBwcm9w
ZXJ0eSwgZm9yIGV2ZXJ5IFtOYW1lZENvbnN0cnVjdG9yXSBleHRlbmRlZCBhdHRyaWJ1dGUgb24g
YW4gaW50ZXJmYWNlLAorICAgICMgSW4gYWRkaXRpb24gdG8gdGhlIHJlZ3VsYXIgcHJvcGVydHks
IGZvciBldmVyeSBbTGVnYWN5RmFjdG9yeUZ1bmN0aW9uXSBleHRlbmRlZCBhdHRyaWJ1dGUgb24g
YW4gaW50ZXJmYWNlLAogICAgICMgYSBjb3JyZXNwb25kaW5nIHByb3BlcnR5IE1VU1QgZXhpc3Qg
b24gdGhlIEVDTUFTY3JpcHQgZ2xvYmFsIG9iamVjdC4KLSAgICBpZiAoJGV4dGVuZGVkQXR0cmli
dXRlcy0+eyJOYW1lZENvbnN0cnVjdG9yIn0pIHsKLSAgICAgICAgbXkgJGNvbnN0cnVjdG9yTmFt
ZSA9ICRleHRlbmRlZEF0dHJpYnV0ZXMtPnsiTmFtZWRDb25zdHJ1Y3RvciJ9OworICAgIGlmICgk
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkxlZ2FjeUZhY3RvcnlGdW5jdGlvbiJ9KSB7CisgICAgICAg
IG15ICRjb25zdHJ1Y3Rvck5hbWUgPSAkZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkxlZ2FjeUZhY3Rv
cnlGdW5jdGlvbiJ9OwogICAgICAgICAkY29uc3RydWN0b3JOYW1lID1+IHMvXCguKi8vZzsgIyBF
eHRyYWN0IGZ1bmN0aW9uIG5hbWUuCiAgICAgICAgICRjb2RlIC49ICIgICAgIjsKICAgICAgICAg
JGNvZGUgLj0gIlsiIC4gam9pbignLCAnLCBAZXh0ZW5kZWRBdHRyaWJ1dGVzTGlzdCkgLiAiXSAi
IGlmIEBleHRlbmRlZEF0dHJpYnV0ZXNMaXN0OwotICAgICAgICAkY29kZSAuPSAiYXR0cmlidXRl
ICIgLiAkb3JpZ2luYWxJbnRlcmZhY2VOYW1lIC4gIk5hbWVkQ29uc3RydWN0b3IgJGNvbnN0cnVj
dG9yTmFtZTtcbiI7CisgICAgICAgICRjb2RlIC49ICJhdHRyaWJ1dGUgIiAuICRvcmlnaW5hbElu
dGVyZmFjZU5hbWUgLiAiTGVnYWN5RmFjdG9yeUZ1bmN0aW9uQ29uc3RydWN0b3IgJGNvbnN0cnVj
dG9yTmFtZTtcbiI7CiAgICAgfQogICAgIAogICAgIG15ICR3aW5kb3dBbGlhc2VzQ29kZTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9TdXBwbGVtZW50YWxEZXBl
bmRlbmNpZXMuZGVwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9TdXBwbGVtZW50YWxEZXBlbmRlbmNpZXMuZGVwCShyZXZpc2lvbiAyNjY1NTkpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvU3VwcGxlbWVudGFsRGVwZW5k
ZW5jaWVzLmRlcAkod29ya2luZyBjb3B5KQpAQCAtOTEsNiArOTEsOSBAQCBXZWJET01UZXN0SXRl
cmFibGUuaDogCiBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5oOiAKIERPTVRlc3RKU0J1aWx0
aW5Db25zdHJ1Y3Rvci5oOiAKIFdlYkRPTVRlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5oOiAKK0pT
VGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbi5oOiAKK0RPTVRlc3RMZWdhY3lGYWN0b3J5RnVuY3Rp
b24uaDogCitXZWJET01UZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uLmg6IAogSlNUZXN0TWFwTGlr
ZS5oOiAKIERPTVRlc3RNYXBMaWtlLmg6IAogV2ViRE9NVGVzdE1hcExpa2UuaDogCkBAIC0xMDMs
OSArMTA2LDYgQEAgV2ViRE9NVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRQogSlNU
ZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuaDogCiBET01UZXN0TmFtZWRB
bmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuaDogCiBXZWJET01UZXN0TmFtZWRBbmRJbmRl
eGVkU2V0dGVyV2l0aElkZW50aWZpZXIuaDogCi1KU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmg6IAot
RE9NVGVzdE5hbWVkQ29uc3RydWN0b3IuaDogCi1XZWJET01UZXN0TmFtZWRDb25zdHJ1Y3Rvci5o
OiAKIEpTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllci5oOiAKIERPTVRlc3ROYW1lZERlbGV0
ZXJOb0lkZW50aWZpZXIuaDogCiBXZWJET01UZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyLmg6
IApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RMZWdhY3lG
YWN0b3J5RnVuY3Rpb24uaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9UZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uLmlkbAkobm9uZXhpc3RlbnQp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdExlZ2FjeUZhY3Rv
cnlGdW5jdGlvbi5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzOCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zdHJBcmcsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFw
cGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJV
VE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVzdHJB
cmcsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvLyBUaGlzIElE
TCBmaWxlIGlzIGZvciB0ZXN0aW5nIHRoZSBiaW5kaW5ncyBjb2RlIGdlbmVyYXRvciBhbmQgZm9y
IHRyYWNraW5nCisvLyBjaGFuZ2VzIGluIGl0cyBvdXB1dC4KK1sKKyAgICBBY3RpdmVET01PYmpl
Y3QsCisgICAgTGVnYWN5RmFjdG9yeUZ1bmN0aW9uPUF1ZGlvKERPTVN0cmluZyBzdHIxLCBvcHRp
b25hbCBET01TdHJpbmcgc3RyMiA9ICJkZWZhdWx0U3RyaW5nIiwgb3B0aW9uYWwgRE9NU3RyaW5n
IHN0cjMpLAorICAgIExlZ2FjeUZhY3RvcnlGdW5jdGlvbkNhbGxXaXRoPURvY3VtZW50LAorICAg
IExlZ2FjeUZhY3RvcnlGdW5jdGlvbk1heVRocm93RXhjZXB0aW9uCitdIGludGVyZmFjZSBUZXN0
TGVnYWN5RmFjdG9yeUZ1bmN0aW9uIHsKK307CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVGVzdE5hbWVkQ29uc3RydWN0b3IuaWRsCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0TmFtZWRDb25zdHJ1Y3Rvci5p
ZGwJKHJldmlzaW9uIDI2NjU1OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9UZXN0TmFtZWRDb25zdHJ1Y3Rvci5pZGwJKG5vbmV4aXN0ZW50KQpAQCAtMSwzNyArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtc3RyQXJnLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9m
IEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
Ci0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
QU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFc3RyQXJnLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElN
UExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQK
LSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotLy8gVGhpcyBJREwgZmlsZSBpcyBmb3IgdGVzdGluZyB0aGUgYmluZGluZ3MgY29kZSBn
ZW5lcmF0b3IgYW5kIGZvciB0cmFja2luZwotLy8gY2hhbmdlcyBpbiBpdHMgb3VwdXQuCi1bCi0g
ICAgQWN0aXZlRE9NT2JqZWN0LAotICAgIE5hbWVkQ29uc3RydWN0b3I9QXVkaW8oRE9NU3RyaW5n
IHN0cjEsIG9wdGlvbmFsIERPTVN0cmluZyBzdHIyID0gImRlZmF1bHRTdHJpbmciLCBvcHRpb25h
bCBET01TdHJpbmcgc3RyMyksCi0gICAgQ29uc3RydWN0b3JDYWxsV2l0aD1Eb2N1bWVudCwKLSAg
ICBDb25zdHJ1Y3Rvck1heVRocm93RXhjZXB0aW9uCi1dIGludGVyZmFjZSBUZXN0TmFtZWRDb25z
dHJ1Y3RvciB7Ci19OwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5jcHAJKHJldmlzaW9u
IDI2NjU1OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RHbG9iYWxPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MywxMiArNTMsMTIgQEAKICNp
bmNsdWRlICJKU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZS5oIgogI2luY2x1ZGUgIkpT
VGVzdEl0ZXJhYmxlLmgiCiAjaW5jbHVkZSAiSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuaCIK
KyNpbmNsdWRlICJKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU1Rl
c3RMZWdhY3lGYWN0b3J5RnVuY3Rpb25MZWdhY3lGYWN0b3J5RnVuY3Rpb24uaCIKICNpbmNsdWRl
ICJKU1Rlc3RNYXBMaWtlLmgiCiAjaW5jbHVkZSAiSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVy
Tm9JZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhy
b3dpbmdFeGNlcHRpb24uaCIKICNpbmNsdWRlICJKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJX
aXRoSWRlbnRpZmllci5oIgotI2luY2x1ZGUgIkpTVGVzdE5hbWVkQ29uc3RydWN0b3IuaCIKLSNp
bmNsdWRlICJKU1Rlc3ROYW1lZENvbnN0cnVjdG9yTmFtZWQuaCIKICNpbmNsdWRlICJKU1Rlc3RO
YW1lZERlbGV0ZXJOb0lkZW50aWZpZXIuaCIKICNpbmNsdWRlICJKU1Rlc3ROYW1lZERlbGV0ZXJU
aHJvd2luZ0V4Y2VwdGlvbi5oIgogI2luY2x1ZGUgIkpTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVu
dGlmaWVyLmgiCkBAIC0yMTAsNiArMjEwLDEwIEBAIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
R2xvYmFsT2JqZWN0VGUKIGJvb2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdEl0ZXJhYmxlQ29u
c3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6
RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RU
ZXN0SlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0Kiwg
SlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogYm9vbCBzZXRKU1Rlc3RH
bG9iYWxPYmplY3RUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3RvcihKU0M6OkpTR2xv
YmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CitK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdFRlc3RMZWdhY3lGYWN0b3J5RnVu
Y3Rpb25Db25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1
ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOworYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0TGVn
YWN5RmFjdG9yeUZ1bmN0aW9uQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6
RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RHbG9iYWxPYmplY3RBdWRpb0NvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3Qq
LCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Citib29sIHNldEpTVGVz
dEdsb2JhbE9iamVjdEF1ZGlvQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6
RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RHbG9iYWxPYmplY3RUZXN0TWFwTGlrZUNvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxP
YmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CiBib29sIHNl
dEpTVGVzdEdsb2JhbE9iamVjdFRlc3RNYXBMaWtlQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9i
amVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVy
Tm9JZGVudGlmaWVyQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKQEAgLTIxOCwxMCArMjIyLDYgQEAgSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RUZQogYm9vbCBzZXRKU1Rlc3RHbG9iYWxP
YmplY3RUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb25Db25zdHJ1Y3Rv
cihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVk
SlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1l
ZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllckNvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxP
YmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CiBib29sIHNl
dEpTVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmll
ckNvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBK
U0M6OkVuY29kZWRKU1ZhbHVlKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2Jq
ZWN0VGVzdE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0Kiwg
SlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotYm9vbCBzZXRKU1Rlc3RH
bG9iYWxPYmplY3RUZXN0TmFtZWRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxP
YmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKLUpTQzo6
RW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0QXVkaW9Db25zdHJ1Y3RvcihKU0M6OkpT
R2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwot
Ym9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RBdWRpb0NvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxP
YmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6
RW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkRGVsZXRlck5vSWRlbnRp
ZmllckNvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVl
LCBKU0M6OlByb3BlcnR5TmFtZSk7CiBib29sIHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1l
ZERlbGV0ZXJOb0lkZW50aWZpZXJDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlND
OjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbkNv
bnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6
OlByb3BlcnR5TmFtZSk7CkBAIC0zMDUsMTIgKzMwNSwxMiBAQCB1c2luZyBKU1Rlc3RHbG9iYWxP
YmplY3RDb25zdHJ1Y3RvciA9IEpTCiAKIC8qIEhhc2ggdGFibGUgKi8KIAotc3RhdGljIGNvbnN0
IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTVGVzdEdsb2JhbE9iamVjdFRhYmxlSW5kZXhbMjY3
XSA9IHsKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1Rlc3RHbG9iYWxP
YmplY3RUYWJsZUluZGV4WzI2OF0gPSB7CiAgICAgeyAtMSwgLTEgfSwKICAgICB7IDM2LCAtMSB9
LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAwLCAtMSB9LAotICAgIHsgNCwgMjYzIH0sCisgICAg
eyA0LCAyNjQgfSwKICAgICB7IDQwLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwg
LTEgfSwKQEAgLTM0OCw3ICszNDgsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNo
SW5kZXggSlNUCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgNjYsIC0x
IH0sCi0gICAgeyA5LCAyNTggfSwKKyAgICB7IDksIDI1OSB9LAogICAgIHsgLTEsIC0xIH0sCiAg
ICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LApAQCAtMzU3LDcgKzM1Nyw3IEBAIHN0YXRp
YyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1QKICAgICB7IC0xLCAtMSB9LAogICAg
IHsgLTEsIC0xIH0sCiAgICAgeyAzNCwgLTEgfSwKLSAgICB7IDE2LCAyNjQgfSwKKyAgICB7IDE2
LCAyNTYgfSwKICAgICB7IDYsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9
LApAQCAtMzc2LDcgKzM3Niw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRl
eCBKU1QKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwK
LSAgICB7IDE4LCAyNjUgfSwKKyAgICB7IDE4LCAyNjYgfSwKICAgICB7IC0xLCAtMSB9LAogICAg
IHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKQEAgLTM5OCw3ICszOTgsNyBAQCBzdGF0aWMg
Y29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNUCiAgICAgeyAtMSwgLTEgfSwKICAgICB7
IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyAyMCwgMjU2IH0sCisgICAgeyAyMCwg
MjU3IH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IDU4LCAtMSB9LAogICAgIHsgMTUsIC0xIH0s
CkBAIC00MzcsNyArNDM3LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4
IEpTVAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAot
ICAgIHsgMjcsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsg
LTEsIC0xIH0sCiAgICAgeyAzOCwgLTEgfSwKQEAgLTQ2OCw4ICs0NjgsOCBAQCBzdGF0aWMgY29u
c3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNUCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0x
LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyAyOCwgLTEgfSwKLSAgICB7IDI1LCAyNjIg
fSwKKyAgICB7IDI0LCAtMSB9LAorICAgIHsgMjcsIDI2MyB9LAogICAgIHsgLTEsIC0xIH0sCiAg
ICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LApAQCAtNDc5LDcgKzQ3OSw3IEBAIHN0YXRp
YyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1QKICAgICB7IC0xLCAtMSB9LAogICAg
IHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDEyLCAyNTcgfSwKKyAgICB7IDEy
LCAyNTggfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgNTksIC0xIH0sCiAgICAgeyAtMSwgLTEg
fSwKQEAgLTQ5MCw3ICs0OTAsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5k
ZXggSlNUCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0s
Ci0gICAgeyAyOSwgMjY2IH0sCisgICAgeyAyOSwgMjY3IH0sCiAgICAgeyAtMSwgLTEgfSwKICAg
ICB7IDEzLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCkBAIC01MzUsOCArNTM1LDggQEAgc3RhdGlj
IGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTVAogICAgIHsgLTEsIC0xIH0sCiAgICAg
eyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgNDQsIDI2MSB9LAotICAgIHsgNywg
MjYwIH0sCisgICAgeyA0NCwgMjYyIH0sCisgICAgeyA3LCAyNjEgfSwKICAgICB7IC0xLCAtMSB9
LAogICAgIHsgNjAsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKQEAgLTU1MCw3ICs1NTAsNyBAQCBz
dGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNUCiAgICAgeyAyMiwgLTEgfSwK
ICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyAyNCwgLTEgfSwKKyAgICB7
IDI2LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IDQxLCAt
MSB9LApAQCAtNTYyLDggKzU2Miw5IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJ
bmRleCBKU1QKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEg
fSwKLSAgICB7IDIzLCAyNTkgfSwKLSAgICB7IDI2LCAtMSB9LAorICAgIHsgMjMsIDI2NSB9LAor
ICAgIHsgMjUsIDI2MCB9LAorICAgIHsgMjgsIC0xIH0sCiAgICAgeyAzNSwgLTEgfSwKICAgICB7
IDM3LCAtMSB9LAogICAgIHsgMzksIC0xIH0sCkBAIC02MTMsMTIgKzYxNCwxMiBAQCBzdGF0aWMg
Y29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0R2xvYmFsCiAgICAgeyAiVGVzdEludGVyZmFjZUxl
YWRpbmdVbmRlcnNjb3JlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFBy
b3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RUZXN0SW50ZXJmYWNl
TGVhZGluZ1VuZGVyc2NvcmVDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0
UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RJbnRl
cmZhY2VMZWFkaW5nVW5kZXJzY29yZUNvbnN0cnVjdG9yKSB9IH0sCiAgICAgeyAiVGVzdEl0ZXJh
YmxlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6
R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RUZXN0SXRlcmFibGVDb25zdHJ1Y3Rvciks
IChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNl
dEpTVGVzdEdsb2JhbE9iamVjdFRlc3RJdGVyYWJsZUNvbnN0cnVjdG9yKSB9IH0sCiAgICAgeyAi
VGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRp
Y19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RUZXN0
SlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8
UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RK
U0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9yKSB9IH0sCisgICAgeyAiVGVzdExlZ2FjeUZh
Y3RvcnlGdW5jdGlvbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9w
ZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0VGVzdExlZ2FjeUZhY3Rv
cnlGdW5jdGlvbkNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0
eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdExlZ2FjeUZhY3Rv
cnlGdW5jdGlvbkNvbnN0cnVjdG9yKSB9IH0sCisgICAgeyAiQXVkaW8iLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywg
eyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVz
dEdsb2JhbE9iamVjdEF1ZGlvQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1
dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RHbG9iYWxPYmplY3RBdWRpb0Nv
bnN0cnVjdG9yKSB9IH0sCiAgICAgeyAiVGVzdE1hcExpa2UiLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50
cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2Jh
bE9iamVjdFRlc3RNYXBMaWtlQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1
dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0TWFw
TGlrZUNvbnN0cnVjdG9yKSB9IH0sCiAgICAgeyAiVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5v
SWRlbnRpZmllciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0
eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkQW5kSW5kZXhl
ZFNldHRlck5vSWRlbnRpZmllckNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQ
dXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdE5h
bWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllckNvbnN0cnVjdG9yKSB9IH0sCiAgICAgeyAi
VGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uIiwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rl
c3RHbG9iYWxPYmplY3RUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb25D
b25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRW
YWx1ZUZ1bmM+KHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJU
aHJvd2luZ0V4Y2VwdGlvbkNvbnN0cnVjdG9yKSB9IH0sCiAgICAgeyAiVGVzdE5hbWVkQW5kSW5k
ZXhlZFNldHRlcldpdGhJZGVudGlmaWVyIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRp
Y19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RUZXN0
TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXJDb25zdHJ1Y3RvciksIChpbnRwdHJf
dCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdEds
b2JhbE9iamVjdFRlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllckNvbnN0cnVj
dG9yKSB9IH0sCi0gICAgeyAiVGVzdE5hbWVkQ29uc3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEds
b2JhbE9iamVjdFRlc3ROYW1lZENvbnN0cnVjdG9yQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0
YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RHbG9iYWxP
YmplY3RUZXN0TmFtZWRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yKSB9IH0sCi0gICAgeyAiQXVkaW8i
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0p
LCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRW
YWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdEF1ZGlvQ29uc3RydWN0b3IpLCAoaW50cHRyX3Qp
IHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RHbG9i
YWxPYmplY3RBdWRpb0NvbnN0cnVjdG9yKSB9IH0sCiAgICAgeyAiVGVzdE5hbWVkRGVsZXRlck5v
SWRlbnRpZmllciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0
eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkRGVsZXRlck5v
SWRlbnRpZmllckNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0
eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkRGVsZXRl
ck5vSWRlbnRpZmllckNvbnN0cnVjdG9yKSB9IH0sCiAgICAgeyAiVGVzdE5hbWVkRGVsZXRlclRo
cm93aW5nRXhjZXB0aW9uIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFBy
b3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWREZWxl
dGVyVGhyb3dpbmdFeGNlcHRpb25Db25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8
UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RO
YW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbkNvbnN0cnVjdG9yKSB9IH0sCiAgICAgeyAiVGVz
dE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0
YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RU
ZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXJDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3Rh
dGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdEdsb2JhbE9i
amVjdFRlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllckNvbnN0cnVjdG9yKSB9IH0sCkBAIC0x
NDQ4LDYgKzE0NDksNTIgQEAgYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0SlNCdWlsdGlu
QwogICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0R2xvYmFsT2JqZWN0Pjo6c2V0PHNldEpT
VGVzdEdsb2JhbE9iamVjdFRlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9yU2V0dGVy
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJUZXN0SlNC
dWlsdGluQ29uc3RydWN0b3IiKTsKIH0KIAorc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdEds
b2JhbE9iamVjdFRlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb25Db25zdHJ1Y3RvckdldHRlcihKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0R2xvYmFsT2JqZWN0JiB0aGlz
T2JqZWN0KQoreworICAgIFVOVVNFRF9QQVJBTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICBy
ZXR1cm4gSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uOjpnZXRDb25zdHJ1Y3RvcihKU0M6Omdl
dFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgdGhpc09iamVjdC5nbG9iYWxPYmplY3QoKSk7Cit9
CisKK0VuY29kZWRKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdFRlc3RMZWdhY3lGYWN0b3J5RnVu
Y3Rpb25Db25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCit7CisgICAgcmV0dXJuIElETEF0
dHJpYnV0ZTxKU1Rlc3RHbG9iYWxPYmplY3Q+OjpnZXQ8anNUZXN0R2xvYmFsT2JqZWN0VGVzdExl
Z2FjeUZhY3RvcnlGdW5jdGlvbkNvbnN0cnVjdG9yR2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhpc1ZhbHVlLCAiVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbiIpOworfQorCitzdGF0aWMg
aW5saW5lIGJvb2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlv
bkNvbnN0cnVjdG9yU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U1Rlc3RHbG9iYWxPYmplY3QmIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCit7CisgICAgYXV0
byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICAvLyBTaGFkb3dp
bmcgYSBidWlsdC1pbiBjb25zdHJ1Y3Rvci4KKyAgICByZXR1cm4gdGhpc09iamVjdC5wdXREaXJl
Y3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
TENoYXIqPigiVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbiIpLCBzdHJsZW4oIlRlc3RMZWdhY3lG
YWN0b3J5RnVuY3Rpb24iKSksIHZhbHVlKTsKK30KKworYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmpl
Y3RUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlKQoreworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0R2xvYmFs
T2JqZWN0Pjo6c2V0PHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RMZWdhY3lGYWN0b3J5RnVuY3Rp
b25Db25zdHJ1Y3RvclNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5j
b2RlZFZhbHVlLCAiVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbiIpOworfQorCitzdGF0aWMgaW5s
aW5lIEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0QXVkaW9Db25zdHJ1Y3RvckdldHRlcihKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0R2xvYmFsT2JqZWN0JiB0aGlz
T2JqZWN0KQoreworICAgIFVOVVNFRF9QQVJBTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICBy
ZXR1cm4gSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uTGVnYWN5RmFjdG9yeUZ1bmN0aW9uOjpn
ZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgdGhpc09iamVj
dC5nbG9iYWxPYmplY3QoKSk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVj
dEF1ZGlvQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQoreworICAgIHJldHVybiBJRExB
dHRyaWJ1dGU8SlNUZXN0R2xvYmFsT2JqZWN0Pjo6Z2V0PGpzVGVzdEdsb2JhbE9iamVjdEF1ZGlv
Q29uc3RydWN0b3JHZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJBdWRp
byIpOworfQorCitzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0QXVkaW9D
b25zdHJ1Y3RvclNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNU
ZXN0R2xvYmFsT2JqZWN0JiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQoreworICAgIGF1dG8m
IHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgLy8gU2hhZG93aW5n
IGEgYnVpbHQtaW4gY29uc3RydWN0b3IuCisgICAgcmV0dXJuIHRoaXNPYmplY3QucHV0RGlyZWN0
KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExD
aGFyKj4oIkF1ZGlvIiksIHN0cmxlbigiQXVkaW8iKSksIHZhbHVlKTsKK30KKworYm9vbCBzZXRK
U1Rlc3RHbG9iYWxPYmplY3RBdWRpb0NvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSkKK3sKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdEdsb2JhbE9iamVj
dD46OnNldDxzZXRKU1Rlc3RHbG9iYWxPYmplY3RBdWRpb0NvbnN0cnVjdG9yU2V0dGVyPigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJBdWRpbyIpOworfQor
CiBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0VGVzdE1hcExpa2VDb25z
dHJ1Y3RvckdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0
R2xvYmFsT2JqZWN0JiB0aGlzT2JqZWN0KQogewogICAgIFVOVVNFRF9QQVJBTShsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKQEAgLTE1NDAsNTIgKzE1ODcsNiBAQCBib29sIHNldEpTVGVzdEdsb2JhbE9i
amVjdFRlc3ROYW1lZEFuZEluCiAgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RHbG9iYWxP
YmplY3Q+OjpzZXQ8c2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkQW5kSW5kZXhlZFNldHRl
cldpdGhJZGVudGlmaWVyQ29uc3RydWN0b3JTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIlRlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRl
bnRpZmllciIpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0
VGVzdE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1Y3RvckdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0R2xvYmFsT2JqZWN0JiB0aGlzT2JqZWN0KQotewotICAg
IFVOVVNFRF9QQVJBTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICByZXR1cm4gSlNUZXN0TmFt
ZWRDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0b3IoSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9i
amVjdCksIHRoaXNPYmplY3QuZ2xvYmFsT2JqZWN0KCkpOwotfQotCi1FbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkKLXsKLSAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdEdsb2JhbE9iamVj
dD46OmdldDxqc1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRDb25zdHJ1Y3RvckNvbnN0cnVjdG9y
R2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiVGVzdE5hbWVkQ29uc3Ry
dWN0b3IiKTsKLX0KLQotc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdEdsb2JhbE9iamVjdFRl
c3ROYW1lZENvbnN0cnVjdG9yQ29uc3RydWN0b3JTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTVGVzdEdsb2JhbE9iamVjdCYgdGhpc09iamVjdCwgSlNWYWx1ZSB2
YWx1ZSkKLXsKLSAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3Qp
OwotICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yLgotICAgIHJldHVybiB0
aGlzT2JqZWN0LnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRl
cnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJUZXN0TmFtZWRDb25zdHJ1Y3RvciIpLCBzdHJsZW4o
IlRlc3ROYW1lZENvbnN0cnVjdG9yIikpLCB2YWx1ZSk7Ci19Ci0KLWJvb2wgc2V0SlNUZXN0R2xv
YmFsT2JqZWN0VGVzdE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUpCi17Ci0gICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RHbG9i
YWxPYmplY3Q+OjpzZXQ8c2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkQ29uc3RydWN0b3JD
b25zdHJ1Y3RvclNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2Rl
ZFZhbHVlLCAiVGVzdE5hbWVkQ29uc3RydWN0b3IiKTsKLX0KLQotc3RhdGljIGlubGluZSBKU1Zh
bHVlIGpzVGVzdEdsb2JhbE9iamVjdEF1ZGlvQ29uc3RydWN0b3JHZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdEdsb2JhbE9iamVjdCYgdGhpc09iamVjdCkK
LXsKLSAgICBVTlVTRURfUEFSQU0obGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgcmV0dXJuIEpT
VGVzdE5hbWVkQ29uc3RydWN0b3JOYW1lZDo6Z2V0Q29uc3RydWN0b3IoSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCksIHRoaXNPYmplY3QuZ2xvYmFsT2JqZWN0KCkpOwotfQotCi1FbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RBdWRpb0NvbnN0cnVjdG9yKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkKLXsKLSAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdEdsb2JhbE9iamVjdD46
OmdldDxqc1Rlc3RHbG9iYWxPYmplY3RBdWRpb0NvbnN0cnVjdG9yR2V0dGVyPigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiQXVkaW8iKTsKLX0KLQotc3RhdGljIGlubGluZSBib29s
IHNldEpTVGVzdEdsb2JhbE9iamVjdEF1ZGlvQ29uc3RydWN0b3JTZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdEdsb2JhbE9iamVjdCYgdGhpc09iamVjdCwg
SlNWYWx1ZSB2YWx1ZSkKLXsKLSAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9i
YWxPYmplY3QpOwotICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yLgotICAg
IHJldHVybiB0aGlzT2JqZWN0LnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2
bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJBdWRpbyIpLCBzdHJsZW4oIkF1ZGlv
IikpLCB2YWx1ZSk7Ci19Ci0KLWJvb2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0QXVkaW9Db25zdHJ1
Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCi17Ci0gICAgcmV0dXJuIElE
TEF0dHJpYnV0ZTxKU1Rlc3RHbG9iYWxPYmplY3Q+OjpzZXQ8c2V0SlNUZXN0R2xvYmFsT2JqZWN0
QXVkaW9Db25zdHJ1Y3RvclNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwg
ZW5jb2RlZFZhbHVlLCAiQXVkaW8iKTsKLX0KLQogc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVz
dEdsb2JhbE9iamVjdFRlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXJDb25zdHJ1Y3RvckdldHRl
cihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0R2xvYmFsT2JqZWN0
JiB0aGlzT2JqZWN0KQogewogICAgIFVOVVNFRF9QQVJBTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RMZWdh
Y3lGYWN0b3J5RnVuY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24uY3BwCShub25l
eGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzI4
IEBACisvKgorICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2Ug
cHJvamVjdC4KKyAgICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJp
bmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisg
ICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUg
Q09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0
b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24uaCIKKworI2luY2x1ZGUgIkFjdGl2ZURP
TU9iamVjdC5oIgorI2luY2x1ZGUgIkRPTUlzb1N1YnNwYWNlcy5oIgorI2luY2x1ZGUgIkRvY3Vt
ZW50LmgiCisjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCisjaW5jbHVkZSAiSlNET01Db25zdHJ1
Y3Rvck5vdENvbnN0cnVjdGFibGUuaCIKKyNpbmNsdWRlICJKU0RPTUNvbnZlcnRJbnRlcmZhY2Uu
aCIKKyNpbmNsdWRlICJKU0RPTUNvbnZlcnRTdHJpbmdzLmgiCisjaW5jbHVkZSAiSlNET01FeGNl
cHRpb25IYW5kbGluZy5oIgorI2luY2x1ZGUgIkpTRE9NTGVnYWN5RmFjdG9yeUZ1bmN0aW9uLmgi
CisjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRp
b25Db250ZXh0LmgiCisjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgorI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvSGVhcEFuYWx5emVyLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5l
cy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENl
bGxUeXBlLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Vic3BhY2VJbmxpbmVzLmg+Cisj
aW5jbHVkZSA8d3RmL0dldFB0ci5oPgorI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRpb25z
Lmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgorCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK3VzaW5n
IG5hbWVzcGFjZSBKU0M7CisKKy8vIEF0dHJpYnV0ZXMKKworSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb25Db25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0
KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOworYm9vbCBzZXRKU1Rl
c3RMZWdhY3lGYWN0b3J5RnVuY3Rpb25Db25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0Kiwg
SlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CisKK2NsYXNzIEpTVGVz
dExlZ2FjeUZhY3RvcnlGdW5jdGlvblByb3RvdHlwZSBmaW5hbCA6IHB1YmxpYyBKU0M6OkpTTm9u
RmluYWxPYmplY3QgeworcHVibGljOgorICAgIHVzaW5nIEJhc2UgPSBKU0M6OkpTTm9uRmluYWxP
YmplY3Q7CisgICAgc3RhdGljIEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvblByb3RvdHlwZSog
Y3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6
OlN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIHsKKyAgICAgICAgSlNUZXN0TGVnYWN5RmFjdG9y
eUZ1bmN0aW9uUHJvdG90eXBlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxs
PEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvblByb3RvdHlwZT4odm0uaGVhcCkpIEpTVGVzdExl
Z2FjeUZhY3RvcnlGdW5jdGlvblByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUp
OworICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICAgICAgcmV0dXJuIHB0cjsK
KyAgICB9CisKKyAgICBERUNMQVJFX0lORk87CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5
cGUsIEpTQzo6U3Vic3BhY2VBY2Nlc3M+CisgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1
YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQorICAgIHsKKyAgICAgICAgU1RBVElDX0FTU0VSVF9JU09f
U1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uUHJvdG90eXBlLCBC
YXNlKTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgIH0KKyAgICBz
dGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVj
dCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxh
Z3MpLCBpbmZvKCkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBKU1Rlc3RMZWdhY3lGYWN0b3J5
RnVuY3Rpb25Qcm90b3R5cGUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6
OlN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgICAgICA6IEpTQzo6SlNOb25GaW5hbE9iamVjdCh2
bSwgc3RydWN0dXJlKQorICAgIHsKKyAgICB9CisKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpT
Qzo6Vk0mKTsKK307CitTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3RM
ZWdhY3lGYWN0b3J5RnVuY3Rpb25Qcm90b3R5cGUsIEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlv
blByb3RvdHlwZTo6QmFzZSk7CisKK3VzaW5nIEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbkNv
bnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNUZXN0TGVnYWN5
RmFjdG9yeUZ1bmN0aW9uPjsKK3VzaW5nIEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbkxlZ2Fj
eUZhY3RvcnlGdW5jdGlvbiA9IEpTRE9NTGVnYWN5RmFjdG9yeUZ1bmN0aW9uPEpTVGVzdExlZ2Fj
eUZhY3RvcnlGdW5jdGlvbj47CisKK3RlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3RMZWdhY3lGYWN0
b3J5RnVuY3Rpb25Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZt
LCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQoreworICAgIFVOVVNFRF9Q
QVJBTSh2bSk7CisgICAgcmV0dXJuIGdsb2JhbE9iamVjdC5mdW5jdGlvblByb3RvdHlwZSgpOwor
fQorCit0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uQ29uc3RydWN0
b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2Jh
bE9iamVjdCkKK3sKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlw
ZSwgSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uOjpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVj
dCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKKyAg
ICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmlu
Zyh2bSwgIlRlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24iX3MpLCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKKyAgICBw
dXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMSksIEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0pOworfQorCit0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RMZWdhY3lGYWN0
b3J5RnVuY3Rpb25Db25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdExlZ2FjeUZhY3RvcnlGdW5j
dGlvbiIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFC
TEUoSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uQ29uc3RydWN0b3IpIH07CisKK3RlbXBsYXRl
PD4gRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rp
b25MZWdhY3lGYWN0b3J5RnVuY3Rpb246OmNvbnN0cnVjdChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit7CisgICAgVk0mIHZtID0gbGV4
aWNhbEdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKyAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdExlZ2Fj
eUZhY3RvcnlGdW5jdGlvbkxlZ2FjeUZhY3RvcnlGdW5jdGlvbio+KGNhbGxGcmFtZS0+anNDYWxs
ZWUoKSk7CisgICAgQVNTRVJUKGNhc3RlZFRoaXMpOworICAgIGlmIChVTkxJS0VMWShjYWxsRnJh
bWUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQorICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vy
cm9yKGxleGljYWxHbG9iYWxPYmplY3QpKTsKKyAgICBhdXRvKiBjb250ZXh0ID0gY2FzdGVkVGhp
cy0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworICAgIGlmIChVTkxJS0VMWSghY29udGV4dCkp
CisgICAgICAgIHJldHVybiB0aHJvd0NvbnN0cnVjdG9yU2NyaXB0RXhlY3V0aW9uQ29udGV4dFVu
YXZhaWxhYmxlRXJyb3IoKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsICJUZXN0TGVn
YWN5RmFjdG9yeUZ1bmN0aW9uIik7CisgICAgQVNTRVJUKGNvbnRleHQtPmlzRG9jdW1lbnQoKSk7
CisgICAgYXV0byYgZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4oKmNvbnRleHQpOworICAg
IEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFy
Z3VtZW50KDApOworICAgIGF1dG8gc3RyMSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisgICAgRW5zdXJlU3RpbGxBbGl2ZVNj
b3BlIGFyZ3VtZW50MSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMSk7CisgICAgYXV0byBzdHIyID0g
YXJndW1lbnQxLnZhbHVlKCkuaXNVbmRlZmluZWQoKSA/ICJkZWZhdWx0U3RyaW5nIl9zIDogY29u
dmVydDxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDEudmFsdWUo
KSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgp
KTsKKyAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQyID0gY2FsbEZyYW1lLT5hcmd1
bWVudCgyKTsKKyAgICBhdXRvIHN0cjMgPSBhcmd1bWVudDIudmFsdWUoKS5pc1VuZGVmaW5lZCgp
ID8gU3RyaW5nKCkgOiBjb252ZXJ0PElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IGFyZ3VtZW50Mi52YWx1ZSgpKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IGVuY29kZWRKU1ZhbHVlKCkpOworICAgIGF1dG8gb2JqZWN0ID0gVGVzdExlZ2FjeUZhY3RvcnlG
dW5jdGlvbjo6Y3JlYXRlRm9ySlNDb25zdHJ1Y3Rvcihkb2N1bWVudCwgV1RGTW92ZShzdHIxKSwg
V1RGTW92ZShzdHIyKSwgV1RGTW92ZShzdHIzKSk7CisgICAgc3RhdGljX2Fzc2VydChJc0V4Y2Vw
dGlvbk9yPGRlY2x0eXBlKG9iamVjdCk+Ojp2YWx1ZSk7CisgICAgc3RhdGljX2Fzc2VydChkZWNs
dHlwZShvYmplY3QpOjpSZXR1cm5UeXBlOjppc1JlZik7CisgICAgYXV0byBqc1ZhbHVlID0gdG9K
U05ld2x5Q3JlYXRlZDxJRExJbnRlcmZhY2U8VGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbj4+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIHRocm93U2Nv
cGUsIFdURk1vdmUob2JqZWN0KSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCB7IH0pOworICAgIHNldFN1YmNsYXNzU3RydWN0dXJlSWZOZWVkZWQ8VGVzdExlZ2FjeUZhY3Rv
cnlGdW5jdGlvbj4obGV4aWNhbEdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCBhc09iamVjdChqc1Zh
bHVlKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOworICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNWYWx1ZSk7Cit9CisKK3RlbXBsYXRlPD4gSlNWYWx1ZSBK
U1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb25MZWdhY3lGYWN0b3J5RnVuY3Rpb246OnByb3RvdHlw
ZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2Jh
bE9iamVjdCkKK3sKKyAgICBVTlVTRURfUEFSQU0odm0pOworICAgIHJldHVybiBnbG9iYWxPYmpl
Y3QuZnVuY3Rpb25Qcm90b3R5cGUoKTsKK30KKwordGVtcGxhdGU8PiB2b2lkIEpTVGVzdExlZ2Fj
eUZhY3RvcnlGdW5jdGlvbkxlZ2FjeUZhY3RvcnlGdW5jdGlvbjo6aW5pdGlhbGl6ZVByb3BlcnRp
ZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQoreworICAgIHB1dERp
cmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3RMZWdhY3lGYWN0b3J5
RnVuY3Rpb246OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOworICAgIHB1dERpcmVjdCh2bSwgdm0ucHJv
cGVydHlOYW1lcy0+bmFtZSwganNOb250cml2aWFsU3RyaW5nKHZtLCAiQXVkaW8iX3MpLCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtKTsKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNO
dW1iZXIoMSksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0pOworfQorCit0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBK
U1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb25MZWdhY3lGYWN0b3J5RnVuY3Rpb246OnNfaW5mbyA9
IHsgIkF1ZGlvIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhP
RF9UQUJMRShKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb25MZWdhY3lGYWN0b3J5RnVuY3Rpb24p
IH07CisKKy8qIEhhc2ggdGFibGUgZm9yIHByb3RvdHlwZSAqLworCitzdGF0aWMgY29uc3QgSGFz
aFRhYmxlVmFsdWUgSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uUHJvdG90eXBlVGFibGVWYWx1
ZXNbXSA9Cit7CisgICAgeyAiY29uc3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdExlZ2FjeUZhY3Rv
cnlGdW5jdGlvbkNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0
eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uQ29uc3Ry
dWN0b3IpIH0gfSwKK307CisKK2NvbnN0IENsYXNzSW5mbyBKU1Rlc3RMZWdhY3lGYWN0b3J5RnVu
Y3Rpb25Qcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24iLCAm
QmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVz
dExlZ2FjeUZhY3RvcnlGdW5jdGlvblByb3RvdHlwZSkgfTsKKwordm9pZCBKU1Rlc3RMZWdhY3lG
YWN0b3J5RnVuY3Rpb25Qcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBC
YXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgcmVpZnlTdGF0aWNQcm9wZXJ0aWVzKHZtLCBK
U1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb246OmluZm8oKSwgSlNUZXN0TGVnYWN5RmFjdG9yeUZ1
bmN0aW9uUHJvdG90eXBlVGFibGVWYWx1ZXMsICp0aGlzKTsKKyAgICBKU0NfVE9fU1RSSU5HX1RB
R19XSVRIT1VUX1RSQU5TSVRJT04oKTsKK30KKworY29uc3QgQ2xhc3NJbmZvIEpTVGVzdExlZ2Fj
eUZhY3RvcnlGdW5jdGlvbjo6c19pbmZvID0geyAiVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbiIs
ICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNU
ZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uKSB9OworCitKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rp
b246OkpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbihTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNE
T01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgUmVmPFRlc3RMZWdhY3lGYWN0b3J5RnVuY3Rp
b24+JiYgaW1wbCkKKyAgICA6IEpTRE9NV3JhcHBlcjxUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9u
PihzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSkKK3sKK30KKwordm9pZCBK
U1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb246OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3sKKyAg
ICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgQVNTRVJUKGluaGVyaXRzKHZtLCBpbmZv
KCkpKTsKKworICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mPEFjdGl2ZURPTU9iamVj
dCwgVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbj46OnZhbHVlLCAiSW50ZXJmYWNlIGlzIG1hcmtl
ZCBhcyBbQWN0aXZlRE9NT2JqZWN0XSBidXQgaW1wbGVtZW50YXRpb24gY2xhc3MgZG9lcyBub3Qg
c3ViY2xhc3MgQWN0aXZlRE9NT2JqZWN0LiIpOworCit9CisKK0pTT2JqZWN0KiBKU1Rlc3RMZWdh
Y3lGYWN0b3J5RnVuY3Rpb246OmNyZWF0ZVByb3RvdHlwZShWTSYgdm0sIEpTRE9NR2xvYmFsT2Jq
ZWN0JiBnbG9iYWxPYmplY3QpCit7CisgICAgcmV0dXJuIEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5j
dGlvblByb3RvdHlwZTo6Y3JlYXRlKHZtLCAmZ2xvYmFsT2JqZWN0LCBKU1Rlc3RMZWdhY3lGYWN0
b3J5RnVuY3Rpb25Qcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgJmdsb2JhbE9iamVjdCwg
Z2xvYmFsT2JqZWN0Lm9iamVjdFByb3RvdHlwZSgpKSk7Cit9CisKK0pTT2JqZWN0KiBKU1Rlc3RM
ZWdhY3lGYWN0b3J5RnVuY3Rpb246OnByb3RvdHlwZShWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0
JiBnbG9iYWxPYmplY3QpCit7CisgICAgcmV0dXJuIGdldERPTVByb3RvdHlwZTxKU1Rlc3RMZWdh
Y3lGYWN0b3J5RnVuY3Rpb24+KHZtLCBnbG9iYWxPYmplY3QpOworfQorCitKU1ZhbHVlIEpTVGVz
dExlZ2FjeUZhY3RvcnlGdW5jdGlvbjo6Z2V0Q29uc3RydWN0b3IoVk0mIHZtLCBjb25zdCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3Rv
cjxKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb25Db25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29u
c3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKK30KKworSlNWYWx1ZSBKU1Rl
c3RMZWdhY3lGYWN0b3J5RnVuY3Rpb246OmdldExlZ2FjeUZhY3RvcnlGdW5jdGlvbihWTSYgdm0s
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgcmV0dXJuIGdldERPTUNvbnN0
cnVjdG9yPEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbkxlZ2FjeUZhY3RvcnlGdW5jdGlvbj4o
dm0sICpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKK30KKwordm9p
ZCBKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb246OmRlc3Ryb3koSlNDOjpKU0NlbGwqIGNlbGwp
Cit7CisgICAgSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uKiB0aGlzT2JqZWN0ID0gc3RhdGlj
X2Nhc3Q8SlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uKj4oY2VsbCk7CisgICAgdGhpc09iamVj
dC0+SlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uOjp+SlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0
aW9uKCk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIGpzVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbkNv
bnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKK3sKKyAgICBWTSYgdm0gPSBKU0M6OmdldFZN
KGxleGljYWxHbG9iYWxPYmplY3QpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworICAgIGF1dG8qIHByb3RvdHlwZSA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
TGVnYWN5RmFjdG9yeUZ1bmN0aW9uUHJvdG90eXBlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKTsKKyAgICBpZiAoVU5MSUtFTFkoIXByb3RvdHlwZSkpCisgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUpOworICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uOjpnZXRDb25z
dHJ1Y3RvcihKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpLCBwcm90b3R5cGUtPmdsb2Jh
bE9iamVjdCgpKSk7Cit9CisKK2Jvb2wgc2V0SlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uQ29u
c3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQoreworICAgIFZNJiB2
bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgYXV0byogcHJvdG90eXBlID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb25Qcm90b3R5cGUqPih2bSwgSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIGlmIChVTkxJS0VMWSghcHJvdG90eXBlKSkgewor
ICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUp
OworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0
LWluIGNvbnN0cnVjdG9yCisgICAgcmV0dXJuIHByb3RvdHlwZS0+cHV0RGlyZWN0KHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSkp
OworfQorCitKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb246OnN1
YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSkKK3sKKyAgICBhdXRvJiBjbGllbnREYXRhID0gKnN0
YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7CisgICAgYXV0byYgc3Bh
Y2VzID0gY2xpZW50RGF0YS5zdWJzcGFjZXMoKTsKKyAgICBpZiAoYXV0byogc3BhY2UgPSBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24uZ2V0KCkpCisgICAgICAg
IHJldHVybiBzcGFjZTsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6
SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbj4gfHwgIUpT
VGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbjo6bmVlZHNEZXN0cnVjdGlvbik7CisgICAgaWYgY29u
c3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rl
c3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24+KQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRl
c3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VC
U1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0
KCksIEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbik7CisgICAgZWxzZQorICAgICAgICBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24gPSBtYWtlVW5pcXVlPElz
b1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBl
LmdldCgpLCBKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24pOworICAgIGF1dG8qIHNwYWNlID0g
c3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uLmdldCgpOworSUdO
T1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKK0lHTk9SRV9XQVJOSU5HU19C
RUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQorICAgIGlmICgmSlNUZXN0TGVnYWN5RmFjdG9y
eUZ1bmN0aW9uOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzICE9ICZKU0M6OkpTQ2VsbDo6dmlzaXRP
dXRwdXRDb25zdHJhaW50cykKKyAgICAgICAgY2xpZW50RGF0YS5vdXRwdXRDb25zdHJhaW50U3Bh
Y2VzKCkuYXBwZW5kKHNwYWNlKTsKK0lHTk9SRV9XQVJOSU5HU19FTkQKK0lHTk9SRV9XQVJOSU5H
U19FTkQKKyAgICByZXR1cm4gc3BhY2U7Cit9CisKK3ZvaWQgSlNUZXN0TGVnYWN5RmFjdG9yeUZ1
bmN0aW9uOjphbmFseXplSGVhcChKU0NlbGwqIGNlbGwsIEhlYXBBbmFseXplciYgYW5hbHl6ZXIp
Cit7CisgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RMZWdhY3lGYWN0b3J5RnVu
Y3Rpb24qPihjZWxsKTsKKyAgICBhbmFseXplci5zZXRXcmFwcGVkT2JqZWN0Rm9yQ2VsbChjZWxs
LCAmdGhpc09iamVjdC0+d3JhcHBlZCgpKTsKKyAgICBpZiAodGhpc09iamVjdC0+c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpKQorICAgICAgICBhbmFseXplci5zZXRMYWJlbEZvckNlbGwoY2VsbCwg
InVybCAiICsgdGhpc09iamVjdC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT51cmwoKS5zdHJp
bmcoKSk7CisgICAgQmFzZTo6YW5hbHl6ZUhlYXAoY2VsbCwgYW5hbHl6ZXIpOworfQorCitib29s
IEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbk93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVS
b290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCosIFNsb3RWaXNpdG9y
JiB2aXNpdG9yLCBjb25zdCBjaGFyKiogcmVhc29uKQoreworICAgIGF1dG8qIGpzVGVzdExlZ2Fj
eUZhY3RvcnlGdW5jdGlvbiA9IGpzQ2FzdDxKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24qPiho
YW5kbGUuc2xvdCgpLT5hc0NlbGwoKSk7CisgICAgYXV0byYgd3JhcHBlZCA9IGpzVGVzdExlZ2Fj
eUZhY3RvcnlGdW5jdGlvbi0+d3JhcHBlZCgpOworICAgIGlmICghd3JhcHBlZC5pc0NvbnRleHRT
dG9wcGVkKCkgJiYgd3JhcHBlZC5oYXNQZW5kaW5nQWN0aXZpdHkoKSkgeworICAgICAgICBpZiAo
VU5MSUtFTFkocmVhc29uKSkKKyAgICAgICAgICAgICpyZWFzb24gPSAiQWN0aXZlRE9NT2JqZWN0
IHdpdGggcGVuZGluZyBhY3Rpdml0eSI7CisgICAgICAgIHJldHVybiB0cnVlOworICAgICB9Cisg
ICAgVU5VU0VEX1BBUkFNKHZpc2l0b3IpOworICAgIFVOVVNFRF9QQVJBTShyZWFzb24pOworICAg
IHJldHVybiBmYWxzZTsKK30KKwordm9pZCBKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb25Pd25l
cjo6ZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqIGNvbnRl
eHQpCit7CisgICAgYXV0byoganNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uID0gc3RhdGljX2Nh
c3Q8SlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uKj4oaGFuZGxlLnNsb3QoKS0+YXNDZWxsKCkp
OworICAgIGF1dG8mIHdvcmxkID0gKnN0YXRpY19jYXN0PERPTVdyYXBwZXJXb3JsZCo+KGNvbnRl
eHQpOworICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxkLCAmanNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0
aW9uLT53cmFwcGVkKCksIGpzVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbik7Cit9CisKKyNpZiBF
TkFCTEUoQklORElOR19JTlRFR1JJVFkpCisjaWYgUExBVEZPUk0oV0lOKQorI3ByYWdtYSB3YXJu
aW5nKGRpc2FibGU6IDQ0ODMpCitleHRlcm4gIkMiIHsgZXh0ZXJuIHZvaWQgKCpjb25zdCBfX2lk
ZW50aWZpZXIoIj8/XzdUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uQFdlYkNvcmVAQDZCQCIpW10p
KCk7IH0KKyNlbHNlCitleHRlcm4gIkMiIHsgZXh0ZXJuIHZvaWQqIF9aVFZON1dlYkNvcmUyNVRl
c3RMZWdhY3lGYWN0b3J5RnVuY3Rpb25FW107IH0KKyNlbmRpZgorI2VuZGlmCisKK0pTQzo6SlNW
YWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0RPTUdsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbj4mJiBpbXBs
KQoreworCisjaWYgRU5BQkxFKEJJTkRJTkdfSU5URUdSSVRZKQorICAgIGNvbnN0IHZvaWQqIGFj
dHVhbFZUYWJsZVBvaW50ZXIgPSBnZXRWVGFibGVQb2ludGVyKGltcGwucHRyKCkpOworI2lmIFBM
QVRGT1JNKFdJTikKKyAgICB2b2lkKiBleHBlY3RlZFZUYWJsZVBvaW50ZXIgPSBfX2lkZW50aWZp
ZXIoIj8/XzdUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uQFdlYkNvcmVAQDZCQCIpOworI2Vsc2UK
KyAgICB2b2lkKiBleHBlY3RlZFZUYWJsZVBvaW50ZXIgPSAmX1pUVk43V2ViQ29yZTI1VGVzdExl
Z2FjeUZhY3RvcnlGdW5jdGlvbkVbMl07CisjZW5kaWYKKworICAgIC8vIElmIHRoaXMgZmFpbHMg
VGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbiBkb2VzIG5vdCBoYXZlIGEgdnRhYmxlLCBzbyB5b3Ug
bmVlZCB0byBhZGQgdGhlCisgICAgLy8gSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZSBhdHRyaWJ1
dGUgdG8gdGhlIGludGVyZmFjZSBkZWZpbml0aW9uCisgICAgc3RhdGljX2Fzc2VydChzdGQ6Omlz
X3BvbHltb3JwaGljPFRlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24+Ojp2YWx1ZSwgIlRlc3RMZWdh
Y3lGYWN0b3J5RnVuY3Rpb24gaXMgbm90IHBvbHltb3JwaGljIik7CisKKyAgICAvLyBJZiB5b3Ug
aGl0IHRoaXMgYXNzZXJ0aW9uIHlvdSBlaXRoZXIgaGF2ZSBhIHVzZSBhZnRlciBmcmVlIGJ1Zywg
b3IKKyAgICAvLyBUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uIGhhcyBzdWJjbGFzc2VzLiBJZiBU
ZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uIGhhcyBzdWJjbGFzc2VzIHRoYXQgZ2V0IHBhc3NlZAor
ICAgIC8vIHRvIHRvSlMoKSB3ZSBjdXJyZW50bHkgcmVxdWlyZSBUZXN0TGVnYWN5RmFjdG9yeUZ1
bmN0aW9uIHlvdSB0byBvcHQgb3V0IG9mIGJpbmRpbmcgaGFyZGVuaW5nCisgICAgLy8gYnkgYWRk
aW5nIHRoZSBTa2lwVlRhYmxlVmFsaWRhdGlvbiBhdHRyaWJ1dGUgdG8gdGhlIGludGVyZmFjZSBJ
REwgZGVmaW5pdGlvbgorICAgIFJFTEVBU0VfQVNTRVJUKGFjdHVhbFZUYWJsZVBvaW50ZXIgPT0g
ZXhwZWN0ZWRWVGFibGVQb2ludGVyKTsKKyNlbmRpZgorICAgIHJldHVybiBjcmVhdGVXcmFwcGVy
PFRlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24+KGdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7
Cit9CisKK0pTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RMZWdhY3lGYWN0
b3J5RnVuY3Rpb24mIGltcGwpCit7CisgICAgcmV0dXJuIHdyYXAobGV4aWNhbEdsb2JhbE9iamVj
dCwgZ2xvYmFsT2JqZWN0LCBpbXBsKTsKK30KKworVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbiog
SlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uOjp0b1dyYXBwZWQoSlNDOjpWTSYgdm0sIEpTQzo6
SlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBpZiAoYXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Nhc3Q8
SlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uKj4odm0sIHZhbHVlKSkKKyAgICAgICAgcmV0dXJu
ICZ3cmFwcGVyLT53cmFwcGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK30KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RMZWdhY3lGYWN0
b3J5RnVuY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uLmgJKG5vbmV4aXN0ZW50KQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdExlZ2FjeUZh
Y3RvcnlGdW5jdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsOTQgQEAKKy8qCisgICAg
VGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgorICAg
IFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERP
IE5PVCBNT0RJRlkhCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIg
b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisK
KyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
CisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4g
IElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu
LCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAt
MTMwMSwgVVNBLgorKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJKU0RPTVdyYXBwZXIu
aCIKKyNpbmNsdWRlICJUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uLmgiCisjaW5jbHVkZSA8d3Rm
L05ldmVyRGVzdHJveWVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSlNUZXN0
TGVnYWN5RmFjdG9yeUZ1bmN0aW9uIDogcHVibGljIEpTRE9NV3JhcHBlcjxUZXN0TGVnYWN5RmFj
dG9yeUZ1bmN0aW9uPiB7CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IEpTRE9NV3JhcHBlcjxU
ZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uPjsKKyAgICBzdGF0aWMgSlNUZXN0TGVnYWN5RmFjdG9y
eUZ1bmN0aW9uKiBjcmVhdGUoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24+JiYgaW1w
bCkKKyAgICB7CisgICAgICAgIEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbiogcHRyID0gbmV3
IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24+
KGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwKSkgSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uKHN0
cnVjdHVyZSwgKmdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7CisgICAgICAgIHB0ci0+Zmlu
aXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0LT52bSgpKTsKKyAgICAgICAgcmV0dXJuIHB0cjsKKyAg
ICB9CisKKyAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogY3JlYXRlUHJvdG90eXBlKEpTQzo6Vk0m
LCBKU0RPTUdsb2JhbE9iamVjdCYpOworICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBwcm90b3R5
cGUoSlNDOjpWTSYsIEpTRE9NR2xvYmFsT2JqZWN0Jik7CisgICAgc3RhdGljIFRlc3RMZWdhY3lG
YWN0b3J5RnVuY3Rpb24qIHRvV3JhcHBlZChKU0M6OlZNJiwgSlNDOjpKU1ZhbHVlKTsKKyAgICBz
dGF0aWMgdm9pZCBkZXN0cm95KEpTQzo6SlNDZWxsKik7CisKKyAgICBERUNMQVJFX0lORk87CisK
KyAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwg
SlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBl
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2Jh
bE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0
dXJlRmxhZ3MpLCBpbmZvKCksIEpTQzo6Tm9uQXJyYXkpOworICAgIH0KKworICAgIHN0YXRpYyBK
U0M6OkpTVmFsdWUgZ2V0Q29uc3RydWN0b3IoSlNDOjpWTSYsIGNvbnN0IEpTQzo6SlNHbG9iYWxP
YmplY3QqKTsKKyAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldExlZ2FjeUZhY3RvcnlGdW5jdGlv
bihKU0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOworICAgIHRlbXBsYXRlPHR5cGVuYW1l
LCBKU0M6OlN1YnNwYWNlQWNjZXNzIG1vZGU+IHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJz
cGFjZUZvcihKU0M6OlZNJiB2bSkKKyAgICB7CisgICAgICAgIGlmIGNvbnN0ZXhwciAobW9kZSA9
PSBKU0M6OlN1YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50bHkpCisgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIHN1YnNwYWNlRm9ySW1wbCh2bSk7CisgICAgfQorICAg
IHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pOwor
ICAgIHN0YXRpYyB2b2lkIGFuYWx5emVIZWFwKEpTQ2VsbCosIEpTQzo6SGVhcEFuYWx5emVyJik7
Citwcm90ZWN0ZWQ6CisgICAgSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uKEpTQzo6U3RydWN0
dXJlKiwgSlNET01HbG9iYWxPYmplY3QmLCBSZWY8VGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbj4m
Jik7CisKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0mKTsKK307CisKK2NsYXNzIEpT
VGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbk93bmVyIDogcHVibGljIEpTQzo6V2Vha0hhbmRsZU93
bmVyIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIGJvb2wgaXNSZWFjaGFibGVGcm9tT3BhcXVlUm9v
dHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiwgdm9pZCogY29udGV4dCwgSlNDOjpTbG90Vmlz
aXRvciYsIGNvbnN0IGNoYXIqKik7CisgICAgdmlydHVhbCB2b2lkIGZpbmFsaXplKEpTQzo6SGFu
ZGxlPEpTQzo6VW5rbm93bj4sIHZvaWQqIGNvbnRleHQpOworfTsKKworaW5saW5lIEpTQzo6V2Vh
a0hhbmRsZU93bmVyKiB3cmFwcGVyT3duZXIoRE9NV3JhcHBlcldvcmxkJiwgVGVzdExlZ2FjeUZh
Y3RvcnlGdW5jdGlvbiopCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEpTVGVzdExlZ2Fj
eUZhY3RvcnlGdW5jdGlvbk93bmVyPiBvd25lcjsKKyAgICByZXR1cm4gJm93bmVyLmdldCgpOwor
fQorCitpbmxpbmUgdm9pZCogd3JhcHBlcktleShUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uKiB3
cmFwcGFibGVPYmplY3QpCit7CisgICAgcmV0dXJuIHdyYXBwYWJsZU9iamVjdDsKK30KKworSlND
OjpKU1ZhbHVlIHRvSlMoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTRE9NR2xvYmFsT2JqZWN0Kiwg
VGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbiYpOworaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTKEpT
Qzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTRE9NR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFRlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24qIGltcGwpIHsgcmV0dXJu
IGltcGwgPyB0b0pTKGxleGljYWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgKmltcGwpIDog
SlNDOjpqc051bGwoKTsgfQorSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpKU0ds
b2JhbE9iamVjdCosIEpTRE9NR2xvYmFsT2JqZWN0KiwgUmVmPFRlc3RMZWdhY3lGYWN0b3J5RnVu
Y3Rpb24+JiYpOworaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6SlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFJlZlB0cjxUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uPiYmIGltcGwpIHsgcmV0
dXJuIGltcGwgPyB0b0pTTmV3bHlDcmVhdGVkKGxleGljYWxHbG9iYWxPYmplY3QsIGdsb2JhbE9i
amVjdCwgaW1wbC5yZWxlYXNlTm9uTnVsbCgpKSA6IEpTQzo6anNOdWxsKCk7IH0KKwordGVtcGxh
dGU8PiBzdHJ1Y3QgSlNET01XcmFwcGVyQ29udmVydGVyVHJhaXRzPFRlc3RMZWdhY3lGYWN0b3J5
RnVuY3Rpb24+IHsKKyAgICB1c2luZyBXcmFwcGVyQ2xhc3MgPSBKU1Rlc3RMZWdhY3lGYWN0b3J5
RnVuY3Rpb247CisgICAgdXNpbmcgVG9XcmFwcGVkUmV0dXJuVHlwZSA9IFRlc3RMZWdhY3lGYWN0
b3J5RnVuY3Rpb24qOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0b3Iu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMjY2NTU5KQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0b3Iu
Y3BwCShub25leGlzdGVudCkKQEAgLTEsMzI4ICswLDAgQEAKLS8qCi0gICAgVGhpcyBmaWxlIGlz
IHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgotICAgIFRoaXMgZmlsZSBo
YXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkh
Ci0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCi0gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vu
c2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0KLSAgICBUaGlzIGxp
YnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK
LSAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3
YXJyYW50eSBvZgotICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCi0KLSAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gICAgYWxvbmcg
d2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3Jp
dGUgdG8KLSAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xp
biBTdHJlZXQsIEZpZnRoIEZsb29yLAotICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgot
Ki8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkpTVGVzdE5hbWVkQ29uc3RydWN0
b3IuaCIKLQotI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgotI2luY2x1ZGUgIkRPTUlzb1N1
YnNwYWNlcy5oIgotI2luY2x1ZGUgIkRvY3VtZW50LmgiCi0jaW5jbHVkZSAiSlNET01CaW5kaW5n
LmgiCi0jaW5jbHVkZSAiSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGUuaCIKLSNpbmNs
dWRlICJKU0RPTUNvbnZlcnRJbnRlcmZhY2UuaCIKLSNpbmNsdWRlICJKU0RPTUNvbnZlcnRTdHJp
bmdzLmgiCi0jaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgotI2luY2x1ZGUgIkpT
RE9NTmFtZWRDb25zdHJ1Y3Rvci5oIgotI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCi0j
aW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgIldlYkNvcmVKU0Ns
aWVudERhdGEuaCIKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5o
PgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBBbmFseXplci5oPgotI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Rl
c3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L1N1YnNwYWNlSW5saW5lcy5oPgotI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KLSNpbmNsdWRlIDx3
dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgotI2luY2x1ZGUgPHd0Zi9VUkwuaD4KLQotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci11c2luZyBuYW1lc3BhY2UgSlNDOwotCi0vLyBBdHRyaWJ1dGVzCi0K
LUpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0TmFtZWRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yKEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFt
ZSk7Ci1ib29sIHNldEpTVGVzdE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1Y3RvcihKU0M6OkpTR2xv
YmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7Ci0K
LWNsYXNzIEpTVGVzdE5hbWVkQ29uc3RydWN0b3JQcm90b3R5cGUgZmluYWwgOiBwdWJsaWMgSlND
OjpKU05vbkZpbmFsT2JqZWN0IHsKLXB1YmxpYzoKLSAgICB1c2luZyBCYXNlID0gSlNDOjpKU05v
bkZpbmFsT2JqZWN0OwotICAgIHN0YXRpYyBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yUHJvdG90eXBl
KiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
Qzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCi0gICAgewotICAgICAgICBKU1Rlc3ROYW1lZENvbnN0
cnVjdG9yUHJvdG90eXBlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpT
VGVzdE5hbWVkQ29uc3RydWN0b3JQcm90b3R5cGU+KHZtLmhlYXApKSBKU1Rlc3ROYW1lZENvbnN0
cnVjdG9yUHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7Ci0gICAgICAgIHB0
ci0+ZmluaXNoQ3JlYXRpb24odm0pOwotICAgICAgICByZXR1cm4gcHRyOwotICAgIH0KLQotICAg
IERFQ0xBUkVfSU5GTzsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgSlNDOjpTdWJz
cGFjZUFjY2Vzcz4KLSAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlND
OjpWTSYgdm0pCi0gICAgewotICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFS
QUJMRShKU1Rlc3ROYW1lZENvbnN0cnVjdG9yUHJvdG90eXBlLCBCYXNlKTsKLSAgICAgICAgcmV0
dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOwotICAgIH0KLSAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1
cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQotICAgIHsKLSAgICAgICAgcmV0dXJu
IEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6
OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwotICAg
IH0KLQotcHJpdmF0ZToKLSAgICBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yUHJvdG90eXBlKEpTQzo6
Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkK
LSAgICAgICAgOiBKU0M6OkpTTm9uRmluYWxPYmplY3Qodm0sIHN0cnVjdHVyZSkKLSAgICB7Ci0g
ICAgfQotCi0gICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJik7Ci19OwotU1RBVElDX0FT
U0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0TmFtZWRDb25zdHJ1Y3RvclByb3RvdHlw
ZSwgSlNUZXN0TmFtZWRDb25zdHJ1Y3RvclByb3RvdHlwZTo6QmFzZSk7Ci0KLXVzaW5nIEpTVGVz
dE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1
Y3RhYmxlPEpTVGVzdE5hbWVkQ29uc3RydWN0b3I+OwotdXNpbmcgSlNUZXN0TmFtZWRDb25zdHJ1
Y3Rvck5hbWVkQ29uc3RydWN0b3IgPSBKU0RPTU5hbWVkQ29uc3RydWN0b3I8SlNUZXN0TmFtZWRD
b25zdHJ1Y3Rvcj47Ci0KLXRlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3ROYW1lZENvbnN0cnVjdG9y
Q29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNE
T01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKLXsKLSAgICBVTlVTRURfUEFSQU0odm0pOwot
ICAgIHJldHVybiBnbG9iYWxPYmplY3QuZnVuY3Rpb25Qcm90b3R5cGUoKTsKLX0KLQotdGVtcGxh
dGU8PiB2b2lkIEpTVGVzdE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVBy
b3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQotewotICAg
IHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3ROYW1lZENv
bnN0cnVjdG9yOjpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCksIEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKLSAgICBwdXREaXJlY3Qodm0sIHZtLnBy
b3BlcnR5TmFtZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlRlc3ROYW1lZENvbnN0
cnVjdG9yIl9zKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSk7Ci0gICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT5sZW5ndGgsIGpzTnVtYmVyKDEpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25s
eSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKLX0KLQotdGVtcGxhdGU8PiBj
b25zdCBDbGFzc0luZm8gSlNUZXN0TmFtZWRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yOjpzX2luZm8g
PSB7ICJUZXN0TmFtZWRDb25zdHJ1Y3RvciIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxw
dHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0TmFtZWRDb25zdHJ1Y3RvckNvbnN0cnVjdG9y
KSB9OwotCi10ZW1wbGF0ZTw+IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNUZXN0TmFt
ZWRDb25zdHJ1Y3Rvck5hbWVkQ29uc3RydWN0b3I6OmNvbnN0cnVjdChKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCi17Ci0gICAgVk0mIHZt
ID0gbGV4aWNhbEdsb2JhbE9iamVjdC0+dm0oKTsKLSAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVz
dE5hbWVkQ29uc3RydWN0b3JOYW1lZENvbnN0cnVjdG9yKj4oY2FsbEZyYW1lLT5qc0NhbGxlZSgp
KTsKLSAgICBBU1NFUlQoY2FzdGVkVGhpcyk7Ci0gICAgaWYgKFVOTElLRUxZKGNhbGxGcmFtZS0+
YXJndW1lbnRDb3VudCgpIDwgMSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IobGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Io
bGV4aWNhbEdsb2JhbE9iamVjdCkpOwotICAgIGF1dG8qIGNvbnRleHQgPSBjYXN0ZWRUaGlzLT5z
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgaWYgKFVOTElLRUxZKCFjb250ZXh0KSkKLSAg
ICAgICAgcmV0dXJuIHRocm93Q29uc3RydWN0b3JTY3JpcHRFeGVjdXRpb25Db250ZXh0VW5hdmFp
bGFibGVFcnJvcigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgIlRlc3ROYW1lZENv
bnN0cnVjdG9yIik7Ci0gICAgQVNTRVJUKGNvbnRleHQtPmlzRG9jdW1lbnQoKSk7Ci0gICAgYXV0
byYgZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4oKmNvbnRleHQpOwotICAgIEVuc3VyZVN0
aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDAp
OwotICAgIGF1dG8gc3RyMSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgYXJndW1lbnQwLnZhbHVlKCkpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3Vt
ZW50MSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMSk7Ci0gICAgYXV0byBzdHIyID0gYXJndW1lbnQx
LnZhbHVlKCkuaXNVbmRlZmluZWQoKSA/ICJkZWZhdWx0U3RyaW5nIl9zIDogY29udmVydDxJRExE
T01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDEudmFsdWUoKSk7Ci0gICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBF
bnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQyID0gY2FsbEZyYW1lLT5hcmd1bWVudCgyKTsK
LSAgICBhdXRvIHN0cjMgPSBhcmd1bWVudDIudmFsdWUoKS5pc1VuZGVmaW5lZCgpID8gU3RyaW5n
KCkgOiBjb252ZXJ0PElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50
Mi52YWx1ZSgpKTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRK
U1ZhbHVlKCkpOwotICAgIGF1dG8gb2JqZWN0ID0gVGVzdE5hbWVkQ29uc3RydWN0b3I6OmNyZWF0
ZUZvckpTQ29uc3RydWN0b3IoZG9jdW1lbnQsIFdURk1vdmUoc3RyMSksIFdURk1vdmUoc3RyMiks
IFdURk1vdmUoc3RyMykpOwotICAgIHN0YXRpY19hc3NlcnQoSXNFeGNlcHRpb25PcjxkZWNsdHlw
ZShvYmplY3QpPjo6dmFsdWUpOwotICAgIHN0YXRpY19hc3NlcnQoZGVjbHR5cGUob2JqZWN0KTo6
UmV0dXJuVHlwZTo6aXNSZWYpOwotICAgIGF1dG8ganNWYWx1ZSA9IHRvSlNOZXdseUNyZWF0ZWQ8
SURMSW50ZXJmYWNlPFRlc3ROYW1lZENvbnN0cnVjdG9yPj4oKmxleGljYWxHbG9iYWxPYmplY3Qs
ICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgdGhyb3dTY29wZSwgV1RGTW92ZShvYmplY3Qp
KTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7Ci0gICAgc2V0U3Vi
Y2xhc3NTdHJ1Y3R1cmVJZk5lZWRlZDxUZXN0TmFtZWRDb25zdHJ1Y3Rvcj4obGV4aWNhbEdsb2Jh
bE9iamVjdCwgY2FsbEZyYW1lLCBhc09iamVjdChqc1ZhbHVlKSk7Ci0gICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNW
YWx1ZSk7Ci19Ci0KLXRlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yTmFt
ZWRDb25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBK
U0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQotewotICAgIFVOVVNFRF9QQVJBTSh2bSk7
Ci0gICAgcmV0dXJuIGdsb2JhbE9iamVjdC5mdW5jdGlvblByb3RvdHlwZSgpOwotfQotCi10ZW1w
bGF0ZTw+IHZvaWQgSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvck5hbWVkQ29uc3RydWN0b3I6OmluaXRp
YWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkK
LXsKLSAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0
TmFtZWRDb25zdHJ1Y3Rvcjo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9u
bHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7Ci0gICAgcHV0RGlyZWN0KHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJBdWRpbyJf
cyksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0pOwotICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVu
Z3RoLCBqc051bWJlcigxKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7Ci19Ci0KLXRlbXBsYXRlPD4gY29uc3QgQ2xh
c3NJbmZvIEpTVGVzdE5hbWVkQ29uc3RydWN0b3JOYW1lZENvbnN0cnVjdG9yOjpzX2luZm8gPSB7
ICJBdWRpbyIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0Rf
VEFCTEUoSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvck5hbWVkQ29uc3RydWN0b3IpIH07Ci0KLS8qIEhh
c2ggdGFibGUgZm9yIHByb3RvdHlwZSAqLwotCi1zdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUg
SlNUZXN0TmFtZWRDb25zdHJ1Y3RvclByb3RvdHlwZVRhYmxlVmFsdWVzW10gPQotewotICAgIHsg
ImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3ROYW1lZENvbnN0cnVjdG9yQ29uc3RydWN0b3Ip
LCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihz
ZXRKU1Rlc3ROYW1lZENvbnN0cnVjdG9yQ29uc3RydWN0b3IpIH0gfSwKLX07Ci0KLWNvbnN0IENs
YXNzSW5mbyBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yUHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZXN0
TmFtZWRDb25zdHJ1Y3RvciIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFU
RV9NRVRIT0RfVEFCTEUoSlNUZXN0TmFtZWRDb25zdHJ1Y3RvclByb3RvdHlwZSkgfTsKLQotdm9p
ZCBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0p
Ci17Ci0gICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwotICAgIHJlaWZ5U3RhdGljUHJvcGVy
dGllcyh2bSwgSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6aW5mbygpLCBKU1Rlc3ROYW1lZENvbnN0
cnVjdG9yUHJvdG90eXBlVGFibGVWYWx1ZXMsICp0aGlzKTsKLSAgICBKU0NfVE9fU1RSSU5HX1RB
R19XSVRIT1VUX1RSQU5TSVRJT04oKTsKLX0KLQotY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE5hbWVk
Q29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3ROYW1lZENvbnN0cnVjdG9yIiwgJkJhc2U6OnNf
aW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3ROYW1lZENv
bnN0cnVjdG9yKSB9OwotCi1KU1Rlc3ROYW1lZENvbnN0cnVjdG9yOjpKU1Rlc3ROYW1lZENvbnN0
cnVjdG9yKFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2Jq
ZWN0LCBSZWY8VGVzdE5hbWVkQ29uc3RydWN0b3I+JiYgaW1wbCkKLSAgICA6IEpTRE9NV3JhcHBl
cjxUZXN0TmFtZWRDb25zdHJ1Y3Rvcj4oc3RydWN0dXJlLCBnbG9iYWxPYmplY3QsIFdURk1vdmUo
aW1wbCkpCi17Ci19Ci0KLXZvaWQgSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRp
b24oVk0mIHZtKQotewotICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKLSAgICBBU1NFUlQo
aW5oZXJpdHModm0sIGluZm8oKSkpOwotCi0gICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vf
b2Y8QWN0aXZlRE9NT2JqZWN0LCBUZXN0TmFtZWRDb25zdHJ1Y3Rvcj46OnZhbHVlLCAiSW50ZXJm
YWNlIGlzIG1hcmtlZCBhcyBbQWN0aXZlRE9NT2JqZWN0XSBidXQgaW1wbGVtZW50YXRpb24gY2xh
c3MgZG9lcyBub3Qgc3ViY2xhc3MgQWN0aXZlRE9NT2JqZWN0LiIpOwotCi19Ci0KLUpTT2JqZWN0
KiBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yOjpjcmVhdGVQcm90b3R5cGUoVk0mIHZtLCBKU0RPTUds
b2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQotewotICAgIHJldHVybiBKU1Rlc3ROYW1lZENvbnN0
cnVjdG9yUHJvdG90eXBlOjpjcmVhdGUodm0sICZnbG9iYWxPYmplY3QsIEpTVGVzdE5hbWVkQ29u
c3RydWN0b3JQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgJmdsb2JhbE9iamVjdCwgZ2xv
YmFsT2JqZWN0Lm9iamVjdFByb3RvdHlwZSgpKSk7Ci19Ci0KLUpTT2JqZWN0KiBKU1Rlc3ROYW1l
ZENvbnN0cnVjdG9yOjpwcm90b3R5cGUoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFs
T2JqZWN0KQotewotICAgIHJldHVybiBnZXRET01Qcm90b3R5cGU8SlNUZXN0TmFtZWRDb25zdHJ1
Y3Rvcj4odm0sIGdsb2JhbE9iamVjdCk7Ci19Ci0KLUpTVmFsdWUgSlNUZXN0TmFtZWRDb25zdHJ1
Y3Rvcjo6Z2V0Q29uc3RydWN0b3IoVk0mIHZtLCBjb25zdCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0KQotewotICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3ROYW1lZENvbnN0
cnVjdG9yQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4o
Z2xvYmFsT2JqZWN0KSk7Ci19Ci0KLUpTVmFsdWUgSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6Z2V0
TmFtZWRDb25zdHJ1Y3RvcihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCi17
Ci0gICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdE5hbWVkQ29uc3RydWN0b3JOYW1l
ZENvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVj
dCkpOwotfQotCi12b2lkIEpTVGVzdE5hbWVkQ29uc3RydWN0b3I6OmRlc3Ryb3koSlNDOjpKU0Nl
bGwqIGNlbGwpCi17Ci0gICAgSlNUZXN0TmFtZWRDb25zdHJ1Y3RvciogdGhpc09iamVjdCA9IHN0
YXRpY19jYXN0PEpTVGVzdE5hbWVkQ29uc3RydWN0b3IqPihjZWxsKTsKLSAgICB0aGlzT2JqZWN0
LT5KU1Rlc3ROYW1lZENvbnN0cnVjdG9yOjp+SlNUZXN0TmFtZWRDb25zdHJ1Y3RvcigpOwotfQot
Ci1FbmNvZGVkSlNWYWx1ZSBqc1Rlc3ROYW1lZENvbnN0cnVjdG9yQ29uc3RydWN0b3IoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
UHJvcGVydHlOYW1lKQotewotICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9i
amVjdCk7Ci0gICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0g
ICAgYXV0byogcHJvdG90eXBlID0ganNEeW5hbWljQ2FzdDxKU1Rlc3ROYW1lZENvbnN0cnVjdG9y
UHJvdG90eXBlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5M
SUtFTFkoIXByb3RvdHlwZSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
SlNUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0b3IoSlNDOjpnZXRWTShsZXhpY2Fs
R2xvYmFsT2JqZWN0KSwgcHJvdG90eXBlLT5nbG9iYWxPYmplY3QoKSkpOwotfQotCi1ib29sIHNl
dEpTVGVzdE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUpCi17Ci0gICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKLSAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAg
ICBhdXRvKiBwcm90b3R5cGUgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE5hbWVkQ29uc3RydWN0b3JQ
cm90b3R5cGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJ
S0VMWSghcHJvdG90eXBlKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAg
IC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCi0gICAgcmV0dXJuIHByb3RvdHlw
ZS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgSlNWYWx1ZTo6
ZGVjb2RlKGVuY29kZWRWYWx1ZSkpOwotfQotCi1KU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3ROYW1l
ZENvbnN0cnVjdG9yOjpzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pCi17Ci0gICAgYXV0byYg
Y2xpZW50RGF0YSA9ICpzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEp
OwotICAgIGF1dG8mIHNwYWNlcyA9IGNsaWVudERhdGEuc3Vic3BhY2VzKCk7Ci0gICAgaWYgKGF1
dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRDb25zdHJ1Y3Rvci5nZXQo
KSkKLSAgICAgICAgcmV0dXJuIHNwYWNlOwotICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNl
X29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvcj4g
fHwgIUpTVGVzdE5hbWVkQ29uc3RydWN0b3I6Om5lZWRzRGVzdHJ1Y3Rpb24pOwotICAgIGlmIGNv
bnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNU
ZXN0TmFtZWRDb25zdHJ1Y3Rvcj4pCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5h
bWVkQ29uc3RydWN0b3IgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5J
VCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVz
dE5hbWVkQ29uc3RydWN0b3IpOwotICAgIGVsc2UKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0TmFtZWRDb25zdHJ1Y3RvciA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJT
UEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdE5hbWVk
Q29uc3RydWN0b3IpOwotICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
TmFtZWRDb25zdHJ1Y3Rvci5nZXQoKTsKLUlHTk9SRV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFi
bGUtY29kZSIpCi1JR05PUkVfV0FSTklOR1NfQkVHSU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikK
LSAgICBpZiAoJkpTVGVzdE5hbWVkQ29uc3RydWN0b3I6OnZpc2l0T3V0cHV0Q29uc3RyYWludHMg
IT0gJkpTQzo6SlNDZWxsOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzKQotICAgICAgICBjbGllbnRE
YXRhLm91dHB1dENvbnN0cmFpbnRTcGFjZXMoKS5hcHBlbmQoc3BhY2UpOwotSUdOT1JFX1dBUk5J
TkdTX0VORAotSUdOT1JFX1dBUk5JTkdTX0VORAotICAgIHJldHVybiBzcGFjZTsKLX0KLQotdm9p
ZCBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yOjphbmFseXplSGVhcChKU0NlbGwqIGNlbGwsIEhlYXBB
bmFseXplciYgYW5hbHl6ZXIpCi17Ci0gICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rl
c3ROYW1lZENvbnN0cnVjdG9yKj4oY2VsbCk7Ci0gICAgYW5hbHl6ZXIuc2V0V3JhcHBlZE9iamVj
dEZvckNlbGwoY2VsbCwgJnRoaXNPYmplY3QtPndyYXBwZWQoKSk7Ci0gICAgaWYgKHRoaXNPYmpl
Y3QtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKLSAgICAgICAgYW5hbHl6ZXIuc2V0TGFiZWxG
b3JDZWxsKGNlbGwsICJ1cmwgIiArIHRoaXNPYmplY3QtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KS0+dXJsKCkuc3RyaW5nKCkpOwotICAgIEJhc2U6OmFuYWx5emVIZWFwKGNlbGwsIGFuYWx5emVy
KTsKLX0KLQotYm9vbCBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yT3duZXI6OmlzUmVhY2hhYmxlRnJv
bU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiwgU2xv
dFZpc2l0b3ImIHZpc2l0b3IsIGNvbnN0IGNoYXIqKiByZWFzb24pCi17Ci0gICAgYXV0byoganNU
ZXN0TmFtZWRDb25zdHJ1Y3RvciA9IGpzQ2FzdDxKU1Rlc3ROYW1lZENvbnN0cnVjdG9yKj4oaGFu
ZGxlLnNsb3QoKS0+YXNDZWxsKCkpOwotICAgIGF1dG8mIHdyYXBwZWQgPSBqc1Rlc3ROYW1lZENv
bnN0cnVjdG9yLT53cmFwcGVkKCk7Ci0gICAgaWYgKCF3cmFwcGVkLmlzQ29udGV4dFN0b3BwZWQo
KSAmJiB3cmFwcGVkLmhhc1BlbmRpbmdBY3Rpdml0eSgpKSB7Ci0gICAgICAgIGlmIChVTkxJS0VM
WShyZWFzb24pKQotICAgICAgICAgICAgKnJlYXNvbiA9ICJBY3RpdmVET01PYmplY3Qgd2l0aCBw
ZW5kaW5nIGFjdGl2aXR5IjsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgIH0KLSAgICBVTlVT
RURfUEFSQU0odmlzaXRvcik7Ci0gICAgVU5VU0VEX1BBUkFNKHJlYXNvbik7Ci0gICAgcmV0dXJu
IGZhbHNlOwotfQotCi12b2lkIEpTVGVzdE5hbWVkQ29uc3RydWN0b3JPd25lcjo6ZmluYWxpemUo
SlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqIGNvbnRleHQpCi17Ci0gICAg
YXV0byoganNUZXN0TmFtZWRDb25zdHJ1Y3RvciA9IHN0YXRpY19jYXN0PEpTVGVzdE5hbWVkQ29u
c3RydWN0b3IqPihoYW5kbGUuc2xvdCgpLT5hc0NlbGwoKSk7Ci0gICAgYXV0byYgd29ybGQgPSAq
c3RhdGljX2Nhc3Q8RE9NV3JhcHBlcldvcmxkKj4oY29udGV4dCk7Ci0gICAgdW5jYWNoZVdyYXBw
ZXIod29ybGQsICZqc1Rlc3ROYW1lZENvbnN0cnVjdG9yLT53cmFwcGVkKCksIGpzVGVzdE5hbWVk
Q29uc3RydWN0b3IpOwotfQotCi0jaWYgRU5BQkxFKEJJTkRJTkdfSU5URUdSSVRZKQotI2lmIFBM
QVRGT1JNKFdJTikKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0NDgzKQotZXh0ZXJuICJDIiB7
IGV4dGVybiB2b2lkICgqY29uc3QgX19pZGVudGlmaWVyKCI/P183VGVzdE5hbWVkQ29uc3RydWN0
b3JAV2ViQ29yZUBANkJAIilbXSkoKTsgfQotI2Vsc2UKLWV4dGVybiAiQyIgeyBleHRlcm4gdm9p
ZCogX1pUVk43V2ViQ29yZTIwVGVzdE5hbWVkQ29uc3RydWN0b3JFW107IH0KLSNlbmRpZgotI2Vu
ZGlmCi0KLUpTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6SlNHbG9iYWxPYmplY3Qq
LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdE5hbWVkQ29uc3RydWN0
b3I+JiYgaW1wbCkKLXsKLQotI2lmIEVOQUJMRShCSU5ESU5HX0lOVEVHUklUWSkKLSAgICBjb25z
dCB2b2lkKiBhY3R1YWxWVGFibGVQb2ludGVyID0gZ2V0VlRhYmxlUG9pbnRlcihpbXBsLnB0cigp
KTsKLSNpZiBQTEFURk9STShXSU4pCi0gICAgdm9pZCogZXhwZWN0ZWRWVGFibGVQb2ludGVyID0g
X19pZGVudGlmaWVyKCI/P183VGVzdE5hbWVkQ29uc3RydWN0b3JAV2ViQ29yZUBANkJAIik7Ci0j
ZWxzZQotICAgIHZvaWQqIGV4cGVjdGVkVlRhYmxlUG9pbnRlciA9ICZfWlRWTjdXZWJDb3JlMjBU
ZXN0TmFtZWRDb25zdHJ1Y3RvckVbMl07Ci0jZW5kaWYKLQotICAgIC8vIElmIHRoaXMgZmFpbHMg
VGVzdE5hbWVkQ29uc3RydWN0b3IgZG9lcyBub3QgaGF2ZSBhIHZ0YWJsZSwgc28geW91IG5lZWQg
dG8gYWRkIHRoZQotICAgIC8vIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUgYXR0cmlidXRlIHRv
IHRoZSBpbnRlcmZhY2UgZGVmaW5pdGlvbgotICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19wb2x5
bW9ycGhpYzxUZXN0TmFtZWRDb25zdHJ1Y3Rvcj46OnZhbHVlLCAiVGVzdE5hbWVkQ29uc3RydWN0
b3IgaXMgbm90IHBvbHltb3JwaGljIik7Ci0KLSAgICAvLyBJZiB5b3UgaGl0IHRoaXMgYXNzZXJ0
aW9uIHlvdSBlaXRoZXIgaGF2ZSBhIHVzZSBhZnRlciBmcmVlIGJ1Zywgb3IKLSAgICAvLyBUZXN0
TmFtZWRDb25zdHJ1Y3RvciBoYXMgc3ViY2xhc3Nlcy4gSWYgVGVzdE5hbWVkQ29uc3RydWN0b3Ig
aGFzIHN1YmNsYXNzZXMgdGhhdCBnZXQgcGFzc2VkCi0gICAgLy8gdG8gdG9KUygpIHdlIGN1cnJl
bnRseSByZXF1aXJlIFRlc3ROYW1lZENvbnN0cnVjdG9yIHlvdSB0byBvcHQgb3V0IG9mIGJpbmRp
bmcgaGFyZGVuaW5nCi0gICAgLy8gYnkgYWRkaW5nIHRoZSBTa2lwVlRhYmxlVmFsaWRhdGlvbiBh
dHRyaWJ1dGUgdG8gdGhlIGludGVyZmFjZSBJREwgZGVmaW5pdGlvbgotICAgIFJFTEVBU0VfQVNT
RVJUKGFjdHVhbFZUYWJsZVBvaW50ZXIgPT0gZXhwZWN0ZWRWVGFibGVQb2ludGVyKTsKLSNlbmRp
ZgotICAgIHJldHVybiBjcmVhdGVXcmFwcGVyPFRlc3ROYW1lZENvbnN0cnVjdG9yPihnbG9iYWxP
YmplY3QsIFdURk1vdmUoaW1wbCkpOwotfQotCi1KU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBUZXN0TmFtZWRDb25zdHJ1Y3RvciYgaW1wbCkKLXsKLSAgICByZXR1cm4gd3JhcChs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QsIGltcGwpOwotfQotCi1UZXN0TmFtZWRD
b25zdHJ1Y3RvciogSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6dG9XcmFwcGVkKEpTQzo6Vk0mIHZt
LCBKU0M6OkpTVmFsdWUgdmFsdWUpCi17Ci0gICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFt
aWNDYXN0PEpTVGVzdE5hbWVkQ29uc3RydWN0b3IqPih2bSwgdmFsdWUpKQotICAgICAgICByZXR1
cm4gJndyYXBwZXItPndyYXBwZWQoKTsKLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQotfQoKUHJv
cGVydHkgY2hhbmdlcyBvbjogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOmVvbC1z
dHlsZQojIyAtMSArMCwwICMjCi1MRgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRD
b25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDI2NjU1OSkKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0
cnVjdG9yLmgJKG5vbmV4aXN0ZW50KQpAQCAtMSw5NCArMCwwIEBACi0vKgotICAgIFRoaXMgZmls
ZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KLSAgICBUaGlzIGZp
bGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9E
SUZZIQotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgotICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gICAgdmVyc2lvbiAyIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotCi0gICAgVGhp
cyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCi0gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKLSAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotCi0gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICAgIGFs
b25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3Qs
IHdyaXRlIHRvCi0gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh
bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVT
QS4KLSovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiSlNET01XcmFwcGVyLmgiCi0jaW5j
bHVkZSAiVGVzdE5hbWVkQ29uc3RydWN0b3IuaCIKLSNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95
ZWQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBKU1Rlc3ROYW1lZENvbnN0cnVj
dG9yIDogcHVibGljIEpTRE9NV3JhcHBlcjxUZXN0TmFtZWRDb25zdHJ1Y3Rvcj4gewotcHVibGlj
OgotICAgIHVzaW5nIEJhc2UgPSBKU0RPTVdyYXBwZXI8VGVzdE5hbWVkQ29uc3RydWN0b3I+Owot
ICAgIHN0YXRpYyBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yKiBjcmVhdGUoSlNDOjpTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3ROYW1l
ZENvbnN0cnVjdG9yPiYmIGltcGwpCi0gICAgewotICAgICAgICBKU1Rlc3ROYW1lZENvbnN0cnVj
dG9yKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdE5hbWVkQ29u
c3RydWN0b3I+KGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwKSkgSlNUZXN0TmFtZWRDb25zdHJ1Y3Rv
cihzdHJ1Y3R1cmUsICpnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOwotICAgICAgICBwdHIt
PmZpbmlzaENyZWF0aW9uKGdsb2JhbE9iamVjdC0+dm0oKSk7Ci0gICAgICAgIHJldHVybiBwdHI7
Ci0gICAgfQotCi0gICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIGNyZWF0ZVByb3RvdHlwZShKU0M6
OlZNJiwgSlNET01HbG9iYWxPYmplY3QmKTsKLSAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogcHJv
dG90eXBlKEpTQzo6Vk0mLCBKU0RPTUdsb2JhbE9iamVjdCYpOwotICAgIHN0YXRpYyBUZXN0TmFt
ZWRDb25zdHJ1Y3RvciogdG9XcmFwcGVkKEpTQzo6Vk0mLCBKU0M6OkpTVmFsdWUpOwotICAgIHN0
YXRpYyB2b2lkIGRlc3Ryb3koSlNDOjpKU0NlbGwqKTsKLQotICAgIERFQ0xBUkVfSU5GTzsKLQot
ICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBK
U0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUp
Ci0gICAgewotICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFs
T2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1
cmVGbGFncyksIGluZm8oKSwgSlNDOjpOb25BcnJheSk7Ci0gICAgfQotCi0gICAgc3RhdGljIEpT
Qzo6SlNWYWx1ZSBnZXRDb25zdHJ1Y3RvcihKU0M6OlZNJiwgY29uc3QgSlNDOjpKU0dsb2JhbE9i
amVjdCopOwotICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0TmFtZWRDb25zdHJ1Y3RvcihKU0M6
OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBKU0M6
OlN1YnNwYWNlQWNjZXNzIG1vZGU+IHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZv
cihKU0M6OlZNJiB2bSkKLSAgICB7Ci0gICAgICAgIGlmIGNvbnN0ZXhwciAobW9kZSA9PSBKU0M6
OlN1YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50bHkpCi0gICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLSAgICAgICAgcmV0dXJuIHN1YnNwYWNlRm9ySW1wbCh2bSk7Ci0gICAgfQotICAgIHN0YXRp
YyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pOwotICAgIHN0
YXRpYyB2b2lkIGFuYWx5emVIZWFwKEpTQ2VsbCosIEpTQzo6SGVhcEFuYWx5emVyJik7Ci1wcm90
ZWN0ZWQ6Ci0gICAgSlNUZXN0TmFtZWRDb25zdHJ1Y3RvcihKU0M6OlN0cnVjdHVyZSosIEpTRE9N
R2xvYmFsT2JqZWN0JiwgUmVmPFRlc3ROYW1lZENvbnN0cnVjdG9yPiYmKTsKLQotICAgIHZvaWQg
ZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYpOwotfTsKLQotY2xhc3MgSlNUZXN0TmFtZWRDb25zdHJ1
Y3Rvck93bmVyIDogcHVibGljIEpTQzo6V2Vha0hhbmRsZU93bmVyIHsKLXB1YmxpYzoKLSAgICB2
aXJ0dWFsIGJvb2wgaXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpV
bmtub3duPiwgdm9pZCogY29udGV4dCwgSlNDOjpTbG90VmlzaXRvciYsIGNvbnN0IGNoYXIqKik7
Ci0gICAgdmlydHVhbCB2b2lkIGZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4sIHZv
aWQqIGNvbnRleHQpOwotfTsKLQotaW5saW5lIEpTQzo6V2Vha0hhbmRsZU93bmVyKiB3cmFwcGVy
T3duZXIoRE9NV3JhcHBlcldvcmxkJiwgVGVzdE5hbWVkQ29uc3RydWN0b3IqKQotewotICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxKU1Rlc3ROYW1lZENvbnN0cnVjdG9yT3duZXI+IG93bmVyOwot
ICAgIHJldHVybiAmb3duZXIuZ2V0KCk7Ci19Ci0KLWlubGluZSB2b2lkKiB3cmFwcGVyS2V5KFRl
c3ROYW1lZENvbnN0cnVjdG9yKiB3cmFwcGFibGVPYmplY3QpCi17Ci0gICAgcmV0dXJuIHdyYXBw
YWJsZU9iamVjdDsKLX0KLQotSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpKU0dsb2JhbE9iamVjdCos
IEpTRE9NR2xvYmFsT2JqZWN0KiwgVGVzdE5hbWVkQ29uc3RydWN0b3ImKTsKLWlubGluZSBKU0M6
OkpTVmFsdWUgdG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0TmFtZWRDb25zdHJ1Y3RvciogaW1w
bCkgeyByZXR1cm4gaW1wbCA/IHRvSlMobGV4aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0
LCAqaW1wbCkgOiBKU0M6OmpzTnVsbCgpOyB9Ci1KU0M6OkpTVmFsdWUgdG9KU05ld2x5Q3JlYXRl
ZChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNET01HbG9iYWxPYmplY3QqLCBSZWY8VGVzdE5hbWVk
Q29uc3RydWN0b3I+JiYpOwotaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpT
Qzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTRE9NR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFJlZlB0cjxUZXN0TmFtZWRDb25zdHJ1Y3Rvcj4mJiBpbXBsKSB7IHJl
dHVybiBpbXBsID8gdG9KU05ld2x5Q3JlYXRlZChsZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxP
YmplY3QsIGltcGwucmVsZWFzZU5vbk51bGwoKSkgOiBKU0M6OmpzTnVsbCgpOyB9Ci0KLXRlbXBs
YXRlPD4gc3RydWN0IEpTRE9NV3JhcHBlckNvbnZlcnRlclRyYWl0czxUZXN0TmFtZWRDb25zdHJ1
Y3Rvcj4gewotICAgIHVzaW5nIFdyYXBwZXJDbGFzcyA9IEpTVGVzdE5hbWVkQ29uc3RydWN0b3I7
Ci0gICAgdXNpbmcgVG9XcmFwcGVkUmV0dXJuVHlwZSA9IFRlc3ROYW1lZENvbnN0cnVjdG9yKjsK
LX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9y
LmgKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fXwpEZWxldGVkOiBzdm46ZW9sLXN0eWxlCiMjIC0xICswLDAgIyMKLUxGClwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEF1ZGlvRWxlbWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQXVkaW9FbGVtZW50LmlkbAkocmV2aXNpb24gMjY2NTU5KQorKysgU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQXVkaW9FbGVtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBA
QAogCiBbCiAgICAgQ29uZGl0aW9uYWw9VklERU8sCi0gICAgQ29uc3RydWN0b3JDYWxsV2l0aD1E
b2N1bWVudCwKLSAgICBOYW1lZENvbnN0cnVjdG9yPUF1ZGlvKG9wdGlvbmFsIFtBdG9tU3RyaW5n
XSBET01TdHJpbmcgc3JjKQorICAgIExlZ2FjeUZhY3RvcnlGdW5jdGlvbkNhbGxXaXRoPURvY3Vt
ZW50LAorICAgIExlZ2FjeUZhY3RvcnlGdW5jdGlvbj1BdWRpbyhvcHRpb25hbCBbQXRvbVN0cmlu
Z10gRE9NU3RyaW5nIHNyYykKIF0gaW50ZXJmYWNlIEhUTUxBdWRpb0VsZW1lbnQgOiBIVE1MTWVk
aWFFbGVtZW50IHsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1l
bnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVu
dC5pZGwJKHJldmlzaW9uIDI2NjU1OSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdl
RWxlbWVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTIxLDggKzIxLDggQEAKIFsKICAgICBFeHBv
cnRNYWNybz1XRUJDT1JFX0VYUE9SVCwKICAgICBKU0dlbmVyYXRlVG9OYXRpdmVPYmplY3QsCi0g
ICAgQ29uc3RydWN0b3JDYWxsV2l0aD1Eb2N1bWVudCwKLSAgICBOYW1lZENvbnN0cnVjdG9yPUlt
YWdlKG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgd2lkdGgsIG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcg
aGVpZ2h0KQorICAgIExlZ2FjeUZhY3RvcnlGdW5jdGlvbkNhbGxXaXRoPURvY3VtZW50LAorICAg
IExlZ2FjeUZhY3RvcnlGdW5jdGlvbj1JbWFnZShvcHRpb25hbCB1bnNpZ25lZCBsb25nIHdpZHRo
LCBvcHRpb25hbCB1bnNpZ25lZCBsb25nIGhlaWdodCkKIF0gaW50ZXJmYWNlIEhUTUxJbWFnZUVs
ZW1lbnQgOiBIVE1MRWxlbWVudCB7CiAgICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwgUmVmbGVj
dF0gYXR0cmlidXRlIERPTVN0cmluZyBuYW1lOwogICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQs
IFJlZmxlY3RdIGF0dHJpYnV0ZSBET01TdHJpbmcgYWxpZ247CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmlkbAkocmV2aXNpb24gMjY2NTU5KQorKysgU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTIw
LDkgKzIwLDkgQEAKIAogWwogICAgIEpTR2VuZXJhdGVUb05hdGl2ZU9iamVjdCwKLSAgICBDb25z
dHJ1Y3Rvck1heVRocm93RXhjZXB0aW9uLAotICAgIENvbnN0cnVjdG9yQ2FsbFdpdGg9RG9jdW1l
bnQsCi0gICAgTmFtZWRDb25zdHJ1Y3Rvcj1PcHRpb24ob3B0aW9uYWwgRE9NU3RyaW5nIHRleHQg
PSAiIiwgb3B0aW9uYWwgRE9NU3RyaW5nIHZhbHVlLCBvcHRpb25hbCBib29sZWFuIGRlZmF1bHRT
ZWxlY3RlZCA9IGZhbHNlLCBvcHRpb25hbCBib29sZWFuIHNlbGVjdGVkID0gZmFsc2UpLAorICAg
IExlZ2FjeUZhY3RvcnlGdW5jdGlvbk1heVRocm93RXhjZXB0aW9uLAorICAgIExlZ2FjeUZhY3Rv
cnlGdW5jdGlvbkNhbGxXaXRoPURvY3VtZW50LAorICAgIExlZ2FjeUZhY3RvcnlGdW5jdGlvbj1P
cHRpb24ob3B0aW9uYWwgRE9NU3RyaW5nIHRleHQgPSAiIiwgb3B0aW9uYWwgRE9NU3RyaW5nIHZh
bHVlLCBvcHRpb25hbCBib29sZWFuIGRlZmF1bHRTZWxlY3RlZCA9IGZhbHNlLCBvcHRpb25hbCBi
b29sZWFuIHNlbGVjdGVkID0gZmFsc2UpLAogXSBpbnRlcmZhY2UgSFRNTE9wdGlvbkVsZW1lbnQg
OiBIVE1MRWxlbWVudCB7CiAgICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwgUmVmbGVjdF0gYXR0
cmlidXRlIGJvb2xlYW4gZGlzYWJsZWQ7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEhUTUxGb3Jt
RWxlbWVudCBmb3JtOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tD
dWUuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNr
Q3VlLmlkbAkocmV2aXNpb24gMjY2NTU5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9U
ZXh0VHJhY2tDdWUuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw3IEBACiAgICAgQ3Vz
dG9tVG9KU09iamVjdCwKICAgICBKU0N1c3RvbU1hcmtGdW5jdGlvbiwKICAgICBTa2lwVlRhYmxl
VmFsaWRhdGlvbiwKLSAgICBDb25zdHJ1Y3RvckVuYWJsZWRCeVNldHRpbmc9R2VuZXJpY0N1ZUFQ
SQorICAgIExlZ2FjeUZhY3RvcnlGdW5jdGlvbkVuYWJsZWRCeVNldHRpbmc9R2VuZXJpY0N1ZUFQ
SQogXSBpbnRlcmZhY2UgVGV4dFRyYWNrQ3VlIDogRXZlbnRUYXJnZXQgewogICAgIFtDYWxsV2l0
aD1Eb2N1bWVudCwgTWF5VGhyb3dFeGNlcHRpb25dIGNvbnN0cnVjdG9yKGRvdWJsZSBzdGFydFRp
bWUsIGRvdWJsZSBlbmRUaW1lLCBEb2N1bWVudEZyYWdtZW50IGN1ZU5vZGUpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407992</attachid>
            <date>2020-09-04 10:17:33 -0700</date>
            <delta_ts>2020-09-04 10:29:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213316-20200904101732.patch</filename>
            <type>text/plain</type>
            <size>385656</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2NjYxNikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYyIEBACisyMDIwLTA5LTA0ICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViSURMXSBBZG9wdCBMZWdhY3lG
YWN0b3J5RnVuY3Rpb24gZXh0ZW5kZWQgYXR0cmlidXRlIGluIGxpZXUgb2YgTmFtZWRDb25zdHJ1
Y3RvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEz
MzE2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVu
YW1lIHRoZSBmb2xsb3dpbmcgdGhlIGV4dGVuZGVkIGF0dHJpYnV0ZXMgdG8gbW9yZSBjbG9zZWx5
IGFsaWduIHdpdGggV2ViSURMOgorICAgICAgICAgICAgTmFtZWRDb25zdHJ1Y3RvciAtPiBMZWdh
Y3lGYWN0b3J5RnVuY3Rpb24KKyAgICAgICAgICAgIENvbnN0cnVjdG9yQ2FsbFdpdGggLT4gTGVn
YWN5RmFjdG9yeUZ1bmN0aW9uQ2FsbFdpdGgKKyAgICAgICAgICAgIENvbnN0cnVjdG9yRW5hYmxl
ZEJ5U2V0dGluZyAtPiBMZWdhY3lGYWN0b3J5RnVuY3Rpb25FbmFibGVkQnlTZXR0aW5nCisgICAg
ICAgICAgICBDb25zdHJ1Y3Rvck1heVRocm93RXhjZXB0aW9uIC0+IExlZ2FjeUZhY3RvcnlGdW5j
dGlvbk1heVRocm93RXhjZXB0aW9uCisKKyAgICAgICAgTm90ZSwgQ29uc3RydWN0b3JDYWxsV2l0
aCwgQ29uc3RydWN0b3JFbmFibGVkQnlTZXR0aW5nIGFuZCBDb25zdHJ1Y3Rvck1heVRocm93RXhj
ZXB0aW9uCisgICAgICAgIHdlcmUgb25seSB1c2VkIHdpdGggTmFtZWRDb25zdHJ1Y3RvcnMgcHJl
dmlvdXNseSBhcyBub3JtYWwgY29uc3RydWN0b3JzIGRvbid0IHJlcXVpcmUKKyAgICAgICAgaW50
ZXJmYWNlIGxldmVsIGV4dGVuZGVkIGF0dHJpYnV0ZXMgZm9yIHRoZXNlIGFzIHRoZSBleHRlbmRl
ZCBhdHRyaWJ1dGUgY2FuIGJlIGRpcmVjdGx5CisgICAgICAgIG9uIHRoZSBjb25zdHJ1Y3RvciBp
dHNlbGYuIElkZWFsbHksIHdlIHdvdWxkIGRvIHRoZSBzYW1lIHdpdGggTGVnYWN5RmFjdG9yeUZ1
bmN0aW9uIGJ5CisgICAgICAgIGFsbG93aW5nIGV4dGVuZGVkIGF0dHJpYnV0ZXMgb24gdGhlIG9w
ZXJhdG9yIGl0c2VsZiBsaWtlOgorICAgICAgICAKKyAgICAgICAgWworICAgICAgICAgICAgLi4u
CisgICAgICAgICAgICBMZWdhY3lGYWN0b3J5RnVuY3Rpb249W0NhbGxXaXRoPURvY3VtZW50XSBB
dWRpbyhvcHRpb25hbCBbQXRvbVN0cmluZ10gRE9NU3RyaW5nIHNyYykKKyAgICAgICAgXQorCisg
ICAgICAgIGJ1dCB0aGlzIHJlcXVpcmVzIGNoYW5nZXMgdG8gdGhlIElETFBhcnNlciAod2hpY2gg
YXJlIHN0cmFpZ2h0Zm9yd2FyZCkgYW5kIGNyZWF0ZXMgYSBsb3Qgb2YKKyAgICAgICAgYWRkaXRp
b25hbCBjb21wbGV4aXR5IGluc2lkZSB0aGUgdmVyeSBoYWNreSBwcmVwcm9jZXNzLWlkbHMucGwg
cmVwcm9kdWNpbmcgdGhvc2UgcGFyc2VyIGNoYW5nZXMuCisgICAgICAgIEkgd2lsbCBsZWF2ZSB0
aGF0IGFkZGl0aW9uYWwgY2xlYW51cCBmb3IgYSBzdWJzZXF1ZW50IGNoYW5nZS4gCisKKyAgICAg
ICAgKiBodG1sL0hUTUxBdWRpb0VsZW1lbnQuaWRsOgorICAgICAgICAqIGh0bWwvSFRNTEltYWdl
RWxlbWVudC5pZGw6CisgICAgICAgICogaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5pZGw6CisgICAg
ICAgICogaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuaWRsOgorICAgICAgICBVcGRhdGUgdG8gdXNl
IG5ldyBuYW1lcy4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NTGVnYWN5RmFjdG9yeUZ1
bmN0aW9uLmg6IENvcGllZCBmcm9tIGJpbmRpbmdzL2pzL0pTRE9NTmFtZWRDb25zdHJ1Y3Rvci5o
LgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NTmFtZWRDb25zdHJ1Y3Rvci5oOiBSZW1vdmVk
LgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
VXBkYXRlIGZvciByZW5hbWUgb2YgSlNET01OYW1lZENvbnN0cnVjdG9yLmggdG8gSlNET01MZWdh
Y3lGYWN0b3J5RnVuY3Rpb24uaAorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9ySlMucG06CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIucG06Cisg
ICAgICAgIChhcHBseUV4dGVuZGVkQXR0cmlidXRlTGlzdCk6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy9wcmVwcm9jZXNzLWlkbHMucGw6CisgICAgICAgIChHZW5lcmF0ZUNvbnN0cnVjdG9y
QXR0cmlidXRlcyk6CisgICAgICAgIFVwZGF0ZSBJREwgcHJvY2Vzc2luZyB0byBoYW5kbGUgbmV3
IG5hbWVzLgorICAgICAgICAKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0
ZXMuanNvbjoKKyAgICAgICAgVXBkYXRlIGV4dGVuZGVkIGF0dHJpYnV0ZSBkZWZpbml0aW9ucyBm
b3IgbmV3IG5hbWVzLiBSZW1vdmVkIHVudXNlZCBDb25zdHJ1Y3RvciBleHRlbmRlZCBhdHRyaWJ1
dGUuCisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2Jq
ZWN0LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TGVnYWN5
RmFjdG9yeUZ1bmN0aW9uLmNwcDogQ29waWVkIGZyb20gYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24uaDogQ29waWVkIGZyb20gYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuaC4KKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHA6IFJlbW92
ZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3Ry
dWN0b3IuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvU3VwcGxl
bWVudGFsRGVwZW5kZW5jaWVzLmRlcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbi5pZGw6IENvcGllZCBmcm9tIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9UZXN0TmFtZWRDb25zdHJ1Y3Rvci5pZGwuCisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Rlc3ROYW1lZENvbnN0cnVjdG9yLmlkbDogUmVtb3ZlZC4KKyAgICAgICAgVXBk
YXRlIHRlc3RzIGZvciBuZXcgbmFtZXMuCisKIDIwMjAtMDktMDQgIENocmlzIER1bWV6ICA8Y2R1
bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OKG1hY09TIEJpZyBTdXIpIGh0dHBz
Oi8vbWFnZW50YS5naXRodWIuaW8vbG9maS1wbGF5ZXIvIGlzIGJyb2tlbgpJbmRleDogU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNp
b24gMjY2NjE2KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMDA0Myw3ICsxMDA0Myw3IEBACiAJCTdDMENFRjI5
MUU0QTU0RDMwMDhERUI4MCAvKiBKU0RPTUNvbnN0cnVjdG9yV2l0aERvY3VtZW50LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRE9NQ29uc3RydWN0b3JXaXRoRG9jdW1lbnQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MwQ0VGMkExRTRBNTU2QzAwOERFQjgw
IC8qIEpTRE9NQnVpbHRpbkNvbnN0cnVjdG9yQmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKU0RPTUJ1aWx0aW5Db25zdHJ1Y3RvckJhc2UuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJN0MwQ0VGMkIxRTRBNTVDMzAwOERFQjgwIC8qIEpTRE9NQ29uc3RydWN0
b3JOb3RDb25zdHJ1Y3RhYmxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpT
RE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCTdDMENFRjJDMUU0QTU2NEQwMDhERUI4MCAvKiBKU0RPTU5hbWVkQ29uc3RydWN0b3Iu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNET01OYW1lZENvbnN0cnVjdG9y
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDMENFRjJDMUU0QTU2NEQwMDhERUI4
MCAvKiBKU0RPTUxlZ2FjeUZhY3RvcnlGdW5jdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKU0RPTUxlZ2FjeUZhY3RvcnlGdW5jdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3QzBDRUYyRDFFNEE1NkM1MDA4REVCODAgLyogSlNET01CdWlsdGluQ29u
c3RydWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNET01CdWlsdGlu
Q29uc3RydWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MwQ0VGMkUxRTRB
NTgzMjAwOERFQjgwIC8qIEpTRE9NQnVpbHRpbkNvbnN0cnVjdG9yQmFzZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0RPTUJ1aWx0aW5Db25zdHJ1Y3RvckJhc2Uu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzBDRUYyRjFFNEE1OEFEMDA4REVC
ODAgLyogSlNET01Db25zdHJ1Y3RvckJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNET01Db25zdHJ1Y3RvckJhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMjY3NDQsNyArMjY3NDQsNyBAQAogCQkJCTdDMENFRjJCMUU0QTU1QzMwMDhE
RUI4MCAvKiBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZS5oICovLAogCQkJCTdDMENF
RjMwMUU0QTU4RjEwMDhERUI4MCAvKiBKU0RPTUNvbnN0cnVjdG9yV2l0aERvY3VtZW50LmNwcCAq
LywKIAkJCQk3QzBDRUYyOTFFNEE1NEQzMDA4REVCODAgLyogSlNET01Db25zdHJ1Y3RvcldpdGhE
b2N1bWVudC5oICovLAotCQkJCTdDMENFRjJDMUU0QTU2NEQwMDhERUI4MCAvKiBKU0RPTU5hbWVk
Q29uc3RydWN0b3IuaCAqLywKKwkJCQk3QzBDRUYyQzFFNEE1NjREMDA4REVCODAgLyogSlNET01M
ZWdhY3lGYWN0b3J5RnVuY3Rpb24uaCAqLywKIAkJCSk7CiAJCQluYW1lID0gQ29uc3RydWN0b3Jz
OwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NTGVnYWN5RmFjdG9yeUZ1bmN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01MZWdhY3lGYWN0b3J5RnVuY3Rpb24uaAkobm9uZXhp
c3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUxlZ2FjeUZhY3RvcnlG
dW5jdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsODEgQEAKKy8qCisgKiAgQ29weXJp
Z2h0IChDKSAyMDE1LCAyMDE2IENhbm9uIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBD
b3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
ICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBH
ZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5
IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAg
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuICBTZWUgdGhlIEdOVQorICogIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFsb25nIHdpdGgg
dGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiAgRm91
bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBN
QSAgMDIxMTAtMTMwMSAgVVNBCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJKU0RP
TUNvbnN0cnVjdG9yV2l0aERvY3VtZW50LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworLy8g
RklNWEU6IFdoeSBjYW4ndCBMZWdhY3lGYWN0b3J5RnVuY3Rpb25zIGJlIHVzZWQgd2l0aCB3b3Jr
ZXJzPwordGVtcGxhdGU8dHlwZW5hbWUgSlNDbGFzcz4gY2xhc3MgSlNET01MZWdhY3lGYWN0b3J5
RnVuY3Rpb24gZmluYWwgOiBwdWJsaWMgSlNET01Db25zdHJ1Y3RvcldpdGhEb2N1bWVudCB7Citw
dWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IEpTRE9NQ29uc3RydWN0b3JXaXRoRG9jdW1lbnQ7CisK
KyAgICBzdGF0aWMgSlNET01MZWdhY3lGYWN0b3J5RnVuY3Rpb24qIGNyZWF0ZShKU0M6OlZNJiwg
SlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCYpOworICAgIHN0YXRpYyBKU0M6OlN0
cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0Jiwg
SlNDOjpKU1ZhbHVlIHByb3RvdHlwZSk7CisKKyAgICBERUNMQVJFX0lORk87CisKKyAgICAvLyBN
dXN0IGJlIGRlZmluZWQgZm9yIGVhY2ggc3BlY2lhbGl6YXRpb24gY2xhc3MuCisgICAgc3RhdGlj
IEpTQzo6SlNWYWx1ZSBwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYsIGNvbnN0IEpTRE9N
R2xvYmFsT2JqZWN0Jik7CisKK3ByaXZhdGU6CisgICAgSlNET01MZWdhY3lGYWN0b3J5RnVuY3Rp
b24oSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9i
amVjdCkKKyAgICAgICAgOiBCYXNlKHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KQorICAgIHsgCisg
ICAgfQorCisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJiwgSlNET01HbG9iYWxPYmpl
Y3QmKTsKKyAgICBzdGF0aWMgSlNDOjpDYWxsRGF0YSBnZXRDb25zdHJ1Y3REYXRhKEpTQzo6SlND
ZWxsKik7CisKKyAgICAvLyBVc3VhbGx5IGRlZmluZWQgZm9yIGVhY2ggc3BlY2lhbGl6YXRpb24g
Y2xhc3MuCisgICAgdm9pZCBpbml0aWFsaXplUHJvcGVydGllcyhKU0M6OlZNJiwgSlNET01HbG9i
YWxPYmplY3QmKSB7IH0KKyAgICAvLyBNdXN0IGJlIGRlZmluZWQgZm9yIGVhY2ggc3BlY2lhbGl6
YXRpb24gY2xhc3MuCisgICAgc3RhdGljIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBjb25zdHJ1Y3QoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7Cit9Owor
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBKU0NsYXNzPiBpbmxpbmUgSlNET01MZWdhY3lGYWN0b3J5RnVu
Y3Rpb248SlNDbGFzcz4qIEpTRE9NTGVnYWN5RmFjdG9yeUZ1bmN0aW9uPEpTQ2xhc3M+OjpjcmVh
dGUoSlNDOjpWTSYgdm0sIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2Jq
ZWN0JiBnbG9iYWxPYmplY3QpCit7CisgICAgSlNET01MZWdhY3lGYWN0b3J5RnVuY3Rpb24qIGNv
bnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU0RPTUxlZ2FjeUZh
Y3RvcnlGdW5jdGlvbj4odm0uaGVhcCkpIEpTRE9NTGVnYWN5RmFjdG9yeUZ1bmN0aW9uKHN0cnVj
dHVyZSwgZ2xvYmFsT2JqZWN0KTsKKyAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24odm0s
IGdsb2JhbE9iamVjdCk7CisgICAgcmV0dXJuIGNvbnN0cnVjdG9yOworfQorCit0ZW1wbGF0ZTx0
eXBlbmFtZSBKU0NsYXNzPiBpbmxpbmUgSlNDOjpTdHJ1Y3R1cmUqIEpTRE9NTGVnYWN5RmFjdG9y
eUZ1bmN0aW9uPEpTQ2xhc3M+OjpjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNH
bG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKK3sKKyAg
ICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgJmdsb2JhbE9iamVjdCwgcHJvdG90
eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZv
KCkpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBKU0NsYXNzPiBpbmxpbmUgdm9pZCBKU0RPTUxl
Z2FjeUZhY3RvcnlGdW5jdGlvbjxKU0NsYXNzPjo6ZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYgdm0s
IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit7CisgICAgQmFzZTo6ZmluaXNoQ3Jl
YXRpb24oZ2xvYmFsT2JqZWN0KTsKKyAgICBBU1NFUlQoaW5oZXJpdHModm0sIGluZm8oKSkpOwor
ICAgIGluaXRpYWxpemVQcm9wZXJ0aWVzKHZtLCBnbG9iYWxPYmplY3QpOworfQorCit0ZW1wbGF0
ZTx0eXBlbmFtZSBKU0NsYXNzPiBpbmxpbmUgSlNDOjpDYWxsRGF0YSBKU0RPTUxlZ2FjeUZhY3Rv
cnlGdW5jdGlvbjxKU0NsYXNzPjo6Z2V0Q29uc3RydWN0RGF0YShKU0M6OkpTQ2VsbCopCit7Cisg
ICAgSlNDOjpDYWxsRGF0YSBjb25zdHJ1Y3REYXRhOworICAgIGNvbnN0cnVjdERhdGEudHlwZSA9
IEpTQzo6Q2FsbERhdGE6OlR5cGU6Ok5hdGl2ZTsKKyAgICBjb25zdHJ1Y3REYXRhLm5hdGl2ZS5m
dW5jdGlvbiA9IGNvbnN0cnVjdDsKKyAgICByZXR1cm4gY29uc3RydWN0RGF0YTsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01OYW1lZENvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01OYW1lZENvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDI2NjYxNikKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NTmFtZWRDb25zdHJ1Y3Rvci5oCShub25leGlzdGVu
dCkKQEAgLTEsODEgKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgKEMpIDIwMTUsIDIwMTYgQ2Fu
b24gSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogIENvcHlyaWdodCAoQykgMjAxNiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0gKiAgTGlj
ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy
Ci0gKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs
YXRlciB2ZXJzaW9uLgotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0g
KiAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0g
KiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5l
cmFsIFB1YmxpYwotICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwg
d3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSAqICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu
a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKLSAq
LwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIkpTRE9NQ29uc3RydWN0b3JXaXRoRG9jdW1l
bnQuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0vLyBGSU1YRTogV2h5IGNhbid0IG5hbWVk
IGNvbnN0cnVjdG9ycyBiZSB1c2VkIHdpdGggd29ya2Vycz8KLXRlbXBsYXRlPHR5cGVuYW1lIEpT
Q2xhc3M+IGNsYXNzIEpTRE9NTmFtZWRDb25zdHJ1Y3RvciBmaW5hbCA6IHB1YmxpYyBKU0RPTUNv
bnN0cnVjdG9yV2l0aERvY3VtZW50IHsKLXB1YmxpYzoKLSAgICB1c2luZyBCYXNlID0gSlNET01D
b25zdHJ1Y3RvcldpdGhEb2N1bWVudDsKLQotICAgIHN0YXRpYyBKU0RPTU5hbWVkQ29uc3RydWN0
b3IqIGNyZWF0ZShKU0M6OlZNJiwgSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCYp
OwotICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mLCBK
U0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSk7Ci0KLSAgICBERUNM
QVJFX0lORk87Ci0KLSAgICAvLyBNdXN0IGJlIGRlZmluZWQgZm9yIGVhY2ggc3BlY2lhbGl6YXRp
b24gY2xhc3MuCi0gICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGVGb3JTdHJ1Y3R1cmUo
SlNDOjpWTSYsIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Jik7Ci0KLXByaXZhdGU6Ci0gICAgSlNE
T01OYW1lZENvbnN0cnVjdG9yKEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFs
T2JqZWN0JiBnbG9iYWxPYmplY3QpCi0gICAgICAgIDogQmFzZShzdHJ1Y3R1cmUsIGdsb2JhbE9i
amVjdCkKLSAgICB7IAotICAgIH0KLQotICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYs
IEpTRE9NR2xvYmFsT2JqZWN0Jik7Ci0gICAgc3RhdGljIEpTQzo6Q2FsbERhdGEgZ2V0Q29uc3Ry
dWN0RGF0YShKU0M6OkpTQ2VsbCopOwotCi0gICAgLy8gVXN1YWxseSBkZWZpbmVkIGZvciBlYWNo
IHNwZWNpYWxpemF0aW9uIGNsYXNzLgotICAgIHZvaWQgaW5pdGlhbGl6ZVByb3BlcnRpZXMoSlND
OjpWTSYsIEpTRE9NR2xvYmFsT2JqZWN0JikgeyB9Ci0gICAgLy8gTXVzdCBiZSBkZWZpbmVkIGZv
ciBlYWNoIHNwZWNpYWxpemF0aW9uIGNsYXNzLgotICAgIHN0YXRpYyBKU0M6OkVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkNh
bGxGcmFtZSopOwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgSlNDbGFzcz4gaW5saW5lIEpTRE9N
TmFtZWRDb25zdHJ1Y3RvcjxKU0NsYXNzPiogSlNET01OYW1lZENvbnN0cnVjdG9yPEpTQ2xhc3M+
OjpjcmVhdGUoSlNDOjpWTSYgdm0sIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xv
YmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCi17Ci0gICAgSlNET01OYW1lZENvbnN0cnVjdG9yKiBj
b25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNET01OYW1lZENv
bnN0cnVjdG9yPih2bS5oZWFwKSkgSlNET01OYW1lZENvbnN0cnVjdG9yKHN0cnVjdHVyZSwgZ2xv
YmFsT2JqZWN0KTsKLSAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24odm0sIGdsb2JhbE9i
amVjdCk7Ci0gICAgcmV0dXJuIGNvbnN0cnVjdG9yOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBK
U0NsYXNzPiBpbmxpbmUgSlNDOjpTdHJ1Y3R1cmUqIEpTRE9NTmFtZWRDb25zdHJ1Y3RvcjxKU0Ns
YXNzPjo6Y3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0JiBn
bG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCi17Ci0gICAgcmV0dXJuIEpTQzo6
U3RydWN0dXJlOjpjcmVhdGUodm0sICZnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBl
SW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKLX0KLQotdGVt
cGxhdGU8dHlwZW5hbWUgSlNDbGFzcz4gaW5saW5lIHZvaWQgSlNET01OYW1lZENvbnN0cnVjdG9y
PEpTQ2xhc3M+OjpmaW5pc2hDcmVhdGlvbihKU0M6OlZNJiB2bSwgSlNET01HbG9iYWxPYmplY3Qm
IGdsb2JhbE9iamVjdCkKLXsKLSAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbihnbG9iYWxPYmplY3Qp
OwotICAgIEFTU0VSVChpbmhlcml0cyh2bSwgaW5mbygpKSk7Ci0gICAgaW5pdGlhbGl6ZVByb3Bl
cnRpZXModm0sIGdsb2JhbE9iamVjdCk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEpTQ2xhc3M+
IGlubGluZSBKU0M6OkNhbGxEYXRhIEpTRE9NTmFtZWRDb25zdHJ1Y3RvcjxKU0NsYXNzPjo6Z2V0
Q29uc3RydWN0RGF0YShKU0M6OkpTQ2VsbCopCi17Ci0gICAgSlNDOjpDYWxsRGF0YSBjb25zdHJ1
Y3REYXRhOwotICAgIGNvbnN0cnVjdERhdGEudHlwZSA9IEpTQzo6Q2FsbERhdGE6OlR5cGU6Ok5h
dGl2ZTsKLSAgICBjb25zdHJ1Y3REYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNvbnN0cnVjdDsKLSAg
ICByZXR1cm4gY29uc3RydWN0RGF0YTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
SlMucG0JKHJldmlzaW9uIDI2NjYxNikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvckpTLnBtCSh3b3JraW5nIGNvcHkpCkBAIC0yNzc4LDcgKzI3NzgsNyBA
QCBzdWIgR2VuZXJhdGVIZWFkZXIKICAgICAjIENvbnN0cnVjdG9yIG9iamVjdCBnZXR0ZXIKICAg
ICB1bmxlc3MgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e05vSW50ZXJmYWNlT2Jq
ZWN0fSkgewogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyBKU0M6OkpT
VmFsdWUgZ2V0Q29uc3RydWN0b3IoSlNDOjpWTSYsIGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3Qq
KTtcbiIpOwotICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyBKU0M6OkpT
VmFsdWUgZ2V0TmFtZWRDb25zdHJ1Y3RvcihKU0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCop
O1xuIikgaWYgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57TmFtZWRDb25zdHJ1Y3Rv
cn07CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIEpTQzo6SlNWYWx1
ZSBnZXRMZWdhY3lGYWN0b3J5RnVuY3Rpb24oSlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3Qq
KTtcbiIpIGlmICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0xlZ2FjeUZhY3RvcnlG
dW5jdGlvbn07CiAgICAgfQogCiAgICAgIyBTZXJpYWxpemVyIGZ1bmN0aW9uLgpAQCAtMzg2Mywx
MCArMzg2MywxMCBAQCBzdWIgR2VuZXJhdGVSdW50aW1lRW5hYmxlQ29uZGl0aW9uYWxTdHJpCiAg
ICAgICAgIHB1c2goQGNvbmp1bmN0cywgICIke25hbWV9OjplbmFibGVkRm9yQ29udGV4dCgiIC4g
JGNvbnRleHRSZWYgLiAiKSIpOwogICAgIH0KIAotICAgIGlmICgkY29udGV4dC0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57Q29uc3RydWN0b3JFbmFibGVkQnlTZXR0aW5nfSkgewotICAgICAgICBhc3Nl
cnQoIk11c3Qgc3BlY2lmeSB2YWx1ZSBmb3IgQ29uc3RydWN0b3JFbmFibGVkQnlTZXR0aW5nLiIp
IGlmICRjb250ZXh0LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDb25zdHJ1Y3RvckVuYWJsZWRCeVNl
dHRpbmd9IGVxICJWQUxVRV9JU19NSVNTSU5HIjsKKyAgICBpZiAoJGNvbnRleHQtPmV4dGVuZGVk
QXR0cmlidXRlcy0+e0xlZ2FjeUZhY3RvcnlGdW5jdGlvbkVuYWJsZWRCeVNldHRpbmd9KSB7Cisg
ICAgICAgIGFzc2VydCgiTXVzdCBzcGVjaWZ5IHZhbHVlIGZvciBMZWdhY3lGYWN0b3J5RnVuY3Rp
b25FbmFibGVkQnlTZXR0aW5nLiIpIGlmICRjb250ZXh0LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntM
ZWdhY3lGYWN0b3J5RnVuY3Rpb25FbmFibGVkQnlTZXR0aW5nfSBlcSAiVkFMVUVfSVNfTUlTU0lO
RyI7CiAKLSAgICAgICAgbXkgQHNldHRpbmdzID0gc3BsaXQoLyYvLCAkY29udGV4dC0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57Q29uc3RydWN0b3JFbmFibGVkQnlTZXR0aW5nfSk7CisgICAgICAgIG15
IEBzZXR0aW5ncyA9IHNwbGl0KC8mLywgJGNvbnRleHQtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0xl
Z2FjeUZhY3RvcnlGdW5jdGlvbkVuYWJsZWRCeVNldHRpbmd9KTsKICAgICAgICAgZm9yZWFjaCBt
eSAkc2V0dGluZyAoQHNldHRpbmdzKSB7CiAgICAgICAgICAgICBwdXNoKEBjb25qdW5jdHMsICJk
b3duY2FzdDxEb2N1bWVudD4oanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oIiAuICRnbG9iYWxP
YmplY3RQdHIgLiAiKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKS0+c2V0dGluZ3MoKS4iIC4g
VG9NZXRob2ROYW1lKCRzZXR0aW5nKSAuICJFbmFibGVkKCkiKTsKICAgICAgICAgfQpAQCAtNDI1
Nyw4ICs0MjU3LDggQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgbXkgJHBy
b3RvQ2xhc3NOYW1lID0gIiR7Y2xhc3NOYW1lfVByb3RvdHlwZSI7CiAgICAgICAgIEdlbmVyYXRl
Q29uc3RydWN0b3JEZWZpbml0aW9ucyhcQGltcGxDb250ZW50LCAkY2xhc3NOYW1lLCAkcHJvdG9D
bGFzc05hbWUsICR2aXNpYmxlSW50ZXJmYWNlTmFtZSwgJGludGVyZmFjZSk7CiAKLSAgICAgICAg
bXkgJG5hbWVkQ29uc3RydWN0b3IgPSAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntO
YW1lZENvbnN0cnVjdG9yfTsKLSAgICAgICAgR2VuZXJhdGVDb25zdHJ1Y3RvckRlZmluaXRpb25z
KFxAaW1wbENvbnRlbnQsICRjbGFzc05hbWUsICRwcm90b0NsYXNzTmFtZSwgJG5hbWVkQ29uc3Ry
dWN0b3IsICRpbnRlcmZhY2UsICJHZW5lcmF0aW5nTmFtZWRDb25zdHJ1Y3RvciIpIGlmICRuYW1l
ZENvbnN0cnVjdG9yOworICAgICAgICBteSAkbGVnYWN5RmFjdG9yeUZ1bmN0aW9uID0gJGludGVy
ZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57TGVnYWN5RmFjdG9yeUZ1bmN0aW9ufTsKKyAgICAg
ICAgR2VuZXJhdGVDb25zdHJ1Y3RvckRlZmluaXRpb25zKFxAaW1wbENvbnRlbnQsICRjbGFzc05h
bWUsICRwcm90b0NsYXNzTmFtZSwgJGxlZ2FjeUZhY3RvcnlGdW5jdGlvbiwgJGludGVyZmFjZSwg
IkdlbmVyYXRpbmdMZWdhY3lGYWN0b3J5RnVuY3Rpb24iKSBpZiAkbGVnYWN5RmFjdG9yeUZ1bmN0
aW9uOwogICAgIH0KIAogICAgICMgLSBBZGQgZnVuY3Rpb25zIGFuZCBjb25zdGFudHMgdG8gYSBo
YXNodGFibGUgZGVmaW5pdGlvbgpAQCAtNDU1MCwxMCArNDU1MCwxMCBAQCBzdWIgR2VuZXJhdGVJ
bXBsZW1lbnRhdGlvbgogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gZ2V0
RE9NQ29uc3RydWN0b3I8JHtjbGFzc05hbWV9Q29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0
IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7XG4iKTsKICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICJ9XG5cbiIpOwogCi0gICAgICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPntOYW1lZENvbnN0cnVjdG9yfSkgewotICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICJKU1ZhbHVlICR7Y2xhc3NOYW1lfTo6Z2V0TmFtZWRDb25zdHJ1Y3RvcihWTSYg
dm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpXG4iKTsKKyAgICAgICAgaWYgKCRpbnRl
cmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0xlZ2FjeUZhY3RvcnlGdW5jdGlvbn0pIHsKKyAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiSlNWYWx1ZSAke2NsYXNzTmFtZX06OmdldExl
Z2FjeUZhY3RvcnlGdW5jdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qp
XG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7Ci0gICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8JHtjbGFz
c05hbWV9TmFtZWRDb25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihn
bG9iYWxPYmplY3QpKTtcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
cmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPCR7Y2xhc3NOYW1lfUxlZ2FjeUZhY3RvcnlGdW5jdGlv
bj4odm0sICpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTtcbiIpOwog
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOwogICAgICAgICB9CiAgICAg
fQpAQCAtNTAyNSwxNSArNTAyNSwxNyBAQCBzdWIgR2VuZXJhdGVBdHRyaWJ1dGVHZXR0ZXJCb2R5
RGVmaW5pdGlvCiAgICAgfSBlbHNpZiAoJGlzQ29uc3RydWN0b3IpIHsKICAgICAgICAgbXkgJGNv
bnN0cnVjdG9yVHlwZSA9ICRhdHRyaWJ1dGUtPnR5cGUtPm5hbWU7CiAgICAgICAgICRjb25zdHJ1
Y3RvclR5cGUgPX4gcy9Db25zdHJ1Y3RvciQvLzsKKworICAgICAgICBteSAkbGVnYWN5RmFjdG9y
eUZ1bmN0aW9uID0gKCRjb25zdHJ1Y3RvclR5cGUgPX4gL0xlZ2FjeUZhY3RvcnlGdW5jdGlvbiQv
KSA/ICJMZWdhY3lGYWN0b3J5RnVuY3Rpb24iIDogIiI7CisgICAgICAgICRsZWdhY3lGYWN0b3J5
RnVuY3Rpb24gPX4gcy9MZWdhY3lGYWN0b3J5RnVuY3Rpb24kLy87CisKICAgICAgICAgIyBXaGVu
IENvbnN0cnVjdG9yIGF0dHJpYnV0ZSBpcyB1c2VkIGJ5IERPTVdpbmRvdy5pZGwsIGl0J3MgY29y
cmVjdCB0byBwYXNzIHRoaXNPYmplY3QgYXMgdGhlIGdsb2JhbCBvYmplY3QKICAgICAgICAgIyBX
aGVuIEpTRE9NV3JhcHBlcnMgaGF2ZSBhIGJhY2stcG9pbnRlciB0byB0aGUgZ2xvYmFsT2JqZWN0
IHdlIGNhbiBwYXNzIHRoaXNPYmplY3QtPmdsb2JhbE9iamVjdCgpCiAgICAgICAgIGlmICgkaW50
ZXJmYWNlLT50eXBlLT5uYW1lIGVxICJET01XaW5kb3ciKSB7Ci0gICAgICAgICAgICBteSAkbmFt
ZWQgPSAoJGNvbnN0cnVjdG9yVHlwZSA9fiAvTmFtZWQkLykgPyAiTmFtZWQiIDogIiI7Ci0gICAg
ICAgICAgICAkY29uc3RydWN0b3JUeXBlID1+IHMvTmFtZWQkLy87Ci0gICAgICAgICAgICBwdXNo
KEAkb3V0cHV0QXJyYXksICIgICAgcmV0dXJuIEpTIiAuICRjb25zdHJ1Y3RvclR5cGUgLiAiOjpn
ZXQke25hbWVkfUNvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCAm
dGhpc09iamVjdCk7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBy
ZXR1cm4gSlMiIC4gJGNvbnN0cnVjdG9yVHlwZSAuICI6OmdldCR7bGVnYWN5RmFjdG9yeUZ1bmN0
aW9ufUNvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCAmdGhpc09i
amVjdCk7XG4iKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1
ZGVzKCJKUyIgLiAkY29uc3RydWN0b3JUeXBlIC4gIi5oIiwgJGNvbmRpdGlvbmFsKTsKLSAgICAg
ICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICByZXR1cm4gSlMiIC4gJGNvbnN0cnVjdG9y
VHlwZSAuICI6OmdldENvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3Qp
LCB0aGlzT2JqZWN0Lmdsb2JhbE9iamVjdCgpKTtcbiIpOworICAgICAgICAgICAgcHVzaChAJG91
dHB1dEFycmF5LCAiICAgIHJldHVybiBKUyIgLiAkY29uc3RydWN0b3JUeXBlIC4gIjo6Z2V0JHts
ZWdhY3lGYWN0b3J5RnVuY3Rpb259Q29uc3RydWN0b3IoSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCksIHRoaXNPYmplY3QuZ2xvYmFsT2JqZWN0KCkpO1xuIik7CiAgICAgICAgIH0KICAg
ICB9IGVsc2UgewogICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
Q2FjaGVkQXR0cmlidXRlfSkgewpAQCAtNTE4MiwxMCArNTE4NCwxMCBAQCBzdWIgR2VuZXJhdGVB
dHRyaWJ1dGVTZXR0ZXJCb2R5RGVmaW5pdGlvCiAgICAgfSBlbHNpZiAoJGlzQ29uc3RydWN0b3Ip
IHsKICAgICAgICAgbXkgJGNvbnN0cnVjdG9yVHlwZSA9ICRhdHRyaWJ1dGUtPnR5cGUtPm5hbWU7
CiAgICAgICAgICRjb25zdHJ1Y3RvclR5cGUgPX4gcy9Db25zdHJ1Y3RvciQvLzsKLSAgICAgICAg
IyAkY29uc3RydWN0b3JUeXBlIH49IC9Db25zdHJ1Y3RvciQvIGluZGljYXRlcyB0aGF0IGl0IGlz
IE5hbWVkQ29uc3RydWN0b3IuCi0gICAgICAgICMgV2UgZG8gbm90IGdlbmVyYXRlIHRoZSBoZWFk
ZXIgZmlsZSBmb3IgTmFtZWRDb25zdHJ1Y3RvciBvZiBjbGFzcyBYWFhYLAotICAgICAgICAjIHNp
bmNlIHdlIGdlbmVyYXRlIHRoZSBOYW1lZENvbnN0cnVjdG9yIGRlY2xhcmF0aW9uIGludG8gdGhl
IGhlYWRlciBmaWxlIG9mIGNsYXNzIFhYWFguCi0gICAgICAgIGlmICgkY29uc3RydWN0b3JUeXBl
IG5lICJhbnkiIGFuZCAkY29uc3RydWN0b3JUeXBlICF+IC9OYW1lZCQvKSB7CisgICAgICAgICMg
JGNvbnN0cnVjdG9yVHlwZSB+PSAvTGVnYWN5RmFjdG9yeUZ1bmN0aW9uJC8gaW5kaWNhdGVzIHRo
YXQgaXQgaXMgTGVnYWN5RmFjdG9yeUZ1bmN0aW9uLgorICAgICAgICAjIFdlIGRvIG5vdCBnZW5l
cmF0ZSB0aGUgaGVhZGVyIGZpbGUgZm9yIExlZ2FjeUZhY3RvcnlGdW5jdGlvbiBvZiBjbGFzcyBY
WFhYLAorICAgICAgICAjIHNpbmNlIHdlIGdlbmVyYXRlIHRoZSBMZWdhY3lGYWN0b3J5RnVuY3Rp
b24gZGVjbGFyYXRpb24gaW50byB0aGUgaGVhZGVyIGZpbGUgb2YgY2xhc3MgWFhYWC4KKyAgICAg
ICAgaWYgKCRjb25zdHJ1Y3RvclR5cGUgbmUgImFueSIgYW5kICRjb25zdHJ1Y3RvclR5cGUgIX4g
L0xlZ2FjeUZhY3RvcnlGdW5jdGlvbiQvKSB7CiAgICAgICAgICAgICBBZGRUb0ltcGxJbmNsdWRl
cygiSlMiIC4gJGNvbnN0cnVjdG9yVHlwZSAuICIuaCIsICRjb25kaXRpb25hbCk7CiAgICAgICAg
IH0KICAgICAgICAgbXkgJGlkID0gJGF0dHJpYnV0ZS0+bmFtZTsKQEAgLTU5MzMsNyArNTkzNSw3
IEBAIHN1YiBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjawogICAgIH0gZWxzZSB7CiAgICAgICAgICRx
dW90ZWRGdW5jdGlvbk5hbWUgPSAibnVsbHB0ciI7CiAgICAgICAgIHVubGVzcyAoJGNhbGxXaXRo
KSB7Ci0gICAgICAgICAgICAkY2FsbFdpdGggPSAkb3BlcmF0aW9uLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPntDb25zdHJ1Y3RvckNhbGxXaXRofTsKKyAgICAgICAgICAgICRjYWxsV2l0aCA9ICRvcGVy
YXRpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e0xlZ2FjeUZhY3RvcnlGdW5jdGlvbkNhbGxXaXRo
fTsKICAgICAgICAgfQogICAgICAgICBwdXNoKEBhcmd1bWVudHMsIEdlbmVyYXRlQ29uc3RydWN0
b3JDYWxsV2l0aFVzaW5nUG9pbnRlcnMoJGNhbGxXaXRoLCBcQCRvdXRwdXRBcnJheSwgJHZpc2li
bGVJbnRlcmZhY2VOYW1lLCAiKmNhc3RlZFRoaXMiKSk7CiAgICAgfQpAQCAtNzQxNCw3ICs3NDE2
LDcgQEAgc3ViIEdldENvbnN0cnVjdG9yVGVtcGxhdGVDbGFzc05hbWUKIHsKICAgICBteSAkaW50
ZXJmYWNlID0gc2hpZnQ7CiAgICAgcmV0dXJuICJKU0RPTUJ1aWx0aW5Db25zdHJ1Y3RvciIgaWYg
SGFzSlNCdWlsdGluQ29uc3RydWN0b3IoJGludGVyZmFjZSk7Ci0gICAgcmV0dXJuICJKU0RPTUNv
bnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZSIgaWYgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57TmFtZWRDb25zdHJ1Y3Rvcn07CisgICAgcmV0dXJuICJKU0RPTUNvbnN0cnVjdG9yTm90
Q29uc3RydWN0YWJsZSIgaWYgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57TGVnYWN5
RmFjdG9yeUZ1bmN0aW9ufTsKICAgICByZXR1cm4gIkpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1
Y3RhYmxlIiB1bmxlc3MgSXNDb25zdHJ1Y3RhYmxlKCRpbnRlcmZhY2UpOwogICAgIHJldHVybiAi
SlNET01Db25zdHJ1Y3RvciI7CiB9CkBAIC03NDI4LDIyICs3NDMwLDIyIEBAIHN1YiBHZW5lcmF0
ZUNvbnN0cnVjdG9yRGVjbGFyYXRpb24KICAgICBteSAkdGVtcGxhdGVDbGFzc05hbWUgPSBHZXRD
b25zdHJ1Y3RvclRlbXBsYXRlQ2xhc3NOYW1lKCRpbnRlcmZhY2UpOwogCiAgICAgQWRkVG9JbXBs
SW5jbHVkZXMoIiR7dGVtcGxhdGVDbGFzc05hbWV9LmgiKTsKLSAgICBBZGRUb0ltcGxJbmNsdWRl
cygiSlNET01OYW1lZENvbnN0cnVjdG9yLmgiKSBpZiAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPntOYW1lZENvbnN0cnVjdG9yfTsKKyAgICBBZGRUb0ltcGxJbmNsdWRlcygiSlNET01M
ZWdhY3lGYWN0b3J5RnVuY3Rpb24uaCIpIGlmICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRl
cy0+e0xlZ2FjeUZhY3RvcnlGdW5jdGlvbn07CiAKICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ1
c2luZyAkY29uc3RydWN0b3JDbGFzc05hbWUgPSAkdGVtcGxhdGVDbGFzc05hbWU8JGNsYXNzTmFt
ZT47XG4iKTsKLSAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ1c2luZyBKUyR7aW50ZXJmYWNlTmFt
ZX1OYW1lZENvbnN0cnVjdG9yID0gSlNET01OYW1lZENvbnN0cnVjdG9yPCRjbGFzc05hbWU+O1xu
IikgaWYgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57TmFtZWRDb25zdHJ1Y3Rvcn07
CisgICAgcHVzaChAJG91dHB1dEFycmF5LCAidXNpbmcgSlMke2ludGVyZmFjZU5hbWV9TGVnYWN5
RmFjdG9yeUZ1bmN0aW9uID0gSlNET01MZWdhY3lGYWN0b3J5RnVuY3Rpb248JGNsYXNzTmFtZT47
XG4iKSBpZiAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntMZWdhY3lGYWN0b3J5RnVu
Y3Rpb259OwogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIlxuIik7CiB9CiAKIHN1YiBHZW5lcmF0
ZUNvbnN0cnVjdG9yRGVmaW5pdGlvbnMKIHsKLSAgICBteSAoJG91dHB1dEFycmF5LCAkY2xhc3NO
YW1lLCAkcHJvdG9DbGFzc05hbWUsICR2aXNpYmxlSW50ZXJmYWNlTmFtZSwgJGludGVyZmFjZSwg
JGdlbmVyYXRpbmdOYW1lZENvbnN0cnVjdG9yKSA9IEBfOworICAgIG15ICgkb3V0cHV0QXJyYXks
ICRjbGFzc05hbWUsICRwcm90b0NsYXNzTmFtZSwgJHZpc2libGVJbnRlcmZhY2VOYW1lLCAkaW50
ZXJmYWNlLCAkZ2VuZXJhdGluZ0xlZ2FjeUZhY3RvcnlGdW5jdGlvbikgPSBAXzsKIAogICAgIGlm
IChJc0NvbnN0cnVjdGFibGUoJGludGVyZmFjZSkpIHsKICAgICAgICAgbXkgQGNvbnN0cnVjdG9y
cyA9IEB7JGludGVyZmFjZS0+Y29uc3RydWN0b3JzfTsKICAgICAgICAgaWYgKEBjb25zdHJ1Y3Rv
cnMgPiAxKSB7CiAgICAgICAgICAgICBmb3JlYWNoIG15ICRjb25zdHJ1Y3RvciAoQGNvbnN0cnVj
dG9ycykgewotICAgICAgICAgICAgICAgIEdlbmVyYXRlQ29uc3RydWN0b3JEZWZpbml0aW9uKCRv
dXRwdXRBcnJheSwgJGNsYXNzTmFtZSwgJHByb3RvQ2xhc3NOYW1lLCAkdmlzaWJsZUludGVyZmFj
ZU5hbWUsICRpbnRlcmZhY2UsICRnZW5lcmF0aW5nTmFtZWRDb25zdHJ1Y3RvciwgJGNvbnN0cnVj
dG9yKTsKKyAgICAgICAgICAgICAgICBHZW5lcmF0ZUNvbnN0cnVjdG9yRGVmaW5pdGlvbigkb3V0
cHV0QXJyYXksICRjbGFzc05hbWUsICRwcm90b0NsYXNzTmFtZSwgJHZpc2libGVJbnRlcmZhY2VO
YW1lLCAkaW50ZXJmYWNlLCAkZ2VuZXJhdGluZ0xlZ2FjeUZhY3RvcnlGdW5jdGlvbiwgJGNvbnN0
cnVjdG9yKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgbXkgJG92ZXJsb2FkRnVuY3Rp
b25QcmVmaXggPSAiY29uc3RydWN0JHtjbGFzc05hbWV9IjsKQEAgLTc0NTgsMjMgKzc0NjAsMjMg
QEAgc3ViIEdlbmVyYXRlQ29uc3RydWN0b3JEZWZpbml0aW9ucwogCiAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIn1cblxuIik7CiAgICAgICAgIH0gZWxzaWYgKEBjb25zdHJ1Y3RvcnMg
PT0gMSkgewotICAgICAgICAgICAgR2VuZXJhdGVDb25zdHJ1Y3RvckRlZmluaXRpb24oJG91dHB1
dEFycmF5LCAkY2xhc3NOYW1lLCAkcHJvdG9DbGFzc05hbWUsICR2aXNpYmxlSW50ZXJmYWNlTmFt
ZSwgJGludGVyZmFjZSwgJGdlbmVyYXRpbmdOYW1lZENvbnN0cnVjdG9yLCAkY29uc3RydWN0b3Jz
WzBdKTsKKyAgICAgICAgICAgIEdlbmVyYXRlQ29uc3RydWN0b3JEZWZpbml0aW9uKCRvdXRwdXRB
cnJheSwgJGNsYXNzTmFtZSwgJHByb3RvQ2xhc3NOYW1lLCAkdmlzaWJsZUludGVyZmFjZU5hbWUs
ICRpbnRlcmZhY2UsICRnZW5lcmF0aW5nTGVnYWN5RmFjdG9yeUZ1bmN0aW9uLCAkY29uc3RydWN0
b3JzWzBdKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIEdlbmVyYXRlQ29uc3RydWN0
b3JEZWZpbml0aW9uKCRvdXRwdXRBcnJheSwgJGNsYXNzTmFtZSwgJHByb3RvQ2xhc3NOYW1lLCAk
dmlzaWJsZUludGVyZmFjZU5hbWUsICRpbnRlcmZhY2UsICRnZW5lcmF0aW5nTmFtZWRDb25zdHJ1
Y3Rvcik7CisgICAgICAgICAgICBHZW5lcmF0ZUNvbnN0cnVjdG9yRGVmaW5pdGlvbigkb3V0cHV0
QXJyYXksICRjbGFzc05hbWUsICRwcm90b0NsYXNzTmFtZSwgJHZpc2libGVJbnRlcmZhY2VOYW1l
LCAkaW50ZXJmYWNlLCAkZ2VuZXJhdGluZ0xlZ2FjeUZhY3RvcnlGdW5jdGlvbik7CiAgICAgICAg
IH0KICAgICB9CiAKLSAgICBHZW5lcmF0ZUNvbnN0cnVjdG9ySGVscGVyTWV0aG9kcygkb3V0cHV0
QXJyYXksICRjbGFzc05hbWUsICRwcm90b0NsYXNzTmFtZSwgJHZpc2libGVJbnRlcmZhY2VOYW1l
LCAkaW50ZXJmYWNlLCAkZ2VuZXJhdGluZ05hbWVkQ29uc3RydWN0b3IpOworICAgIEdlbmVyYXRl
Q29uc3RydWN0b3JIZWxwZXJNZXRob2RzKCRvdXRwdXRBcnJheSwgJGNsYXNzTmFtZSwgJHByb3Rv
Q2xhc3NOYW1lLCAkdmlzaWJsZUludGVyZmFjZU5hbWUsICRpbnRlcmZhY2UsICRnZW5lcmF0aW5n
TGVnYWN5RmFjdG9yeUZ1bmN0aW9uKTsKIH0KIAogc3ViIEdlbmVyYXRlQ29uc3RydWN0b3JEZWZp
bml0aW9uCiB7Ci0gICAgbXkgKCRvdXRwdXRBcnJheSwgJGNsYXNzTmFtZSwgJHByb3RvQ2xhc3NO
YW1lLCAkdmlzaWJsZUludGVyZmFjZU5hbWUsICRpbnRlcmZhY2UsICRnZW5lcmF0aW5nTmFtZWRD
b25zdHJ1Y3RvciwgJG9wZXJhdGlvbikgPSBAXzsKKyAgICBteSAoJG91dHB1dEFycmF5LCAkY2xh
c3NOYW1lLCAkcHJvdG9DbGFzc05hbWUsICR2aXNpYmxlSW50ZXJmYWNlTmFtZSwgJGludGVyZmFj
ZSwgJGdlbmVyYXRpbmdMZWdhY3lGYWN0b3J5RnVuY3Rpb24sICRvcGVyYXRpb24pID0gQF87CiAK
ICAgICByZXR1cm4gaWYgSGFzSlNCdWlsdGluQ29uc3RydWN0b3IoJGludGVyZmFjZSk7CiAKICAg
ICBteSAkaW50ZXJmYWNlTmFtZSA9ICRpbnRlcmZhY2UtPnR5cGUtPm5hbWU7Ci0gICAgbXkgJGNv
bnN0cnVjdG9yQ2xhc3NOYW1lID0gJGdlbmVyYXRpbmdOYW1lZENvbnN0cnVjdG9yID8gIiR7Y2xh
c3NOYW1lfU5hbWVkQ29uc3RydWN0b3IiIDogIiR7Y2xhc3NOYW1lfUNvbnN0cnVjdG9yIjsKKyAg
ICBteSAkY29uc3RydWN0b3JDbGFzc05hbWUgPSAkZ2VuZXJhdGluZ0xlZ2FjeUZhY3RvcnlGdW5j
dGlvbiA/ICIke2NsYXNzTmFtZX1MZWdhY3lGYWN0b3J5RnVuY3Rpb24iIDogIiR7Y2xhc3NOYW1l
fUNvbnN0cnVjdG9yIjsKIAogICAgIGlmIChJc0NvbnN0cnVjdGFibGUoJGludGVyZmFjZSkpIHsK
ICAgICAgICAgaWYgKEhhc0N1c3RvbUNvbnN0cnVjdG9yKCRpbnRlcmZhY2UpKSB7CkBAIC03NDgz
LDcgKzc0ODUsNyBAQCBzdWIgR2VuZXJhdGVDb25zdHJ1Y3RvckRlZmluaXRpb24KICAgICAgICAg
ICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBBU1NFUlQoY2FsbEZyYW1lKTtcbiIpOwogICAg
ICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHJldHVybiBjb25zdHJ1Y3Qke2NsYXNz
TmFtZX0obGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSk7XG4iKTsKICAgICAgICAgICAg
IHB1c2goQCRvdXRwdXRBcnJheSwgIn1cblxuIik7Ci0gICAgICAgICB9IGVsc2lmICghSGFzQ3Vz
dG9tQ29uc3RydWN0b3IoJGludGVyZmFjZSkgJiYgKCEkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPntOYW1lZENvbnN0cnVjdG9yfSB8fCAkZ2VuZXJhdGluZ05hbWVkQ29uc3RydWN0b3Ip
KSB7CisgICAgICAgICB9IGVsc2lmICghSGFzQ3VzdG9tQ29uc3RydWN0b3IoJGludGVyZmFjZSkg
JiYgKCEkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntMZWdhY3lGYWN0b3J5RnVuY3Rp
b259IHx8ICRnZW5lcmF0aW5nTGVnYWN5RmFjdG9yeUZ1bmN0aW9uKSkgewogICAgICAgICAgICAg
bXkgJGlzT3ZlcmxvYWRlZCA9ICRvcGVyYXRpb24tPntvdmVybG9hZHN9ICYmIEB7JG9wZXJhdGlv
bi0+e292ZXJsb2Fkc319ID4gMTsKICAgICAgICAgICAgIGlmICgkaXNPdmVybG9hZGVkKSB7CiAg
ICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAic3RhdGljIGlubGluZSBFbmNvZGVk
SlNWYWx1ZSBjb25zdHJ1Y3Qke2NsYXNzTmFtZX0kb3BlcmF0aW9uLT57b3ZlcmxvYWRJbmRleH0o
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KVxuIik7CkBAIC03NTA3LDEyICs3NTA5LDEyIEBAIHN1YiBHZW5lcmF0ZUNvbnN0cnVjdG9yRGVm
aW5pdGlvbgogCiAgICAgICAgICAgICBHZW5lcmF0ZUFyZ3VtZW50c0NvdW50Q2hlY2soJG91dHB1
dEFycmF5LCAkb3BlcmF0aW9uLCAkaW50ZXJmYWNlLCAiICAgICIpOwogCi0gICAgICAgICAgICBt
eSAkZnVuY3Rpb25JbXBsZW1lbnRhdGlvbk5hbWUgPSAkZ2VuZXJhdGluZ05hbWVkQ29uc3RydWN0
b3IgPyAiY3JlYXRlRm9ySlNDb25zdHJ1Y3RvciIgOiAiY3JlYXRlIjsKKyAgICAgICAgICAgIG15
ICRmdW5jdGlvbkltcGxlbWVudGF0aW9uTmFtZSA9ICRnZW5lcmF0aW5nTGVnYWN5RmFjdG9yeUZ1
bmN0aW9uID8gImNyZWF0ZUZvckpTQ29uc3RydWN0b3IiIDogImNyZWF0ZSI7CiAgICAgICAgICAg
ICBteSAkZnVuY3Rpb25TdHJpbmcgPSBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjaygkb3V0cHV0QXJy
YXksICRvcGVyYXRpb24sICRpbnRlcmZhY2UsICRmdW5jdGlvbkltcGxlbWVudGF0aW9uTmFtZSwg
IiAgICAiKTsKIAogICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGF1dG8gb2Jq
ZWN0ID0gJHtmdW5jdGlvblN0cmluZ307XG4iKTsKICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRB
cnJheSwgIiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVl
KCkpO1xuIikgaWYgJGNvZGVHZW5lcmF0b3ItPkV4dGVuZGVkQXR0cmlidXRlQ29udGFpbnMoJGlu
dGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q2FsbFdpdGh9LCAiRXhlY1N0YXRlIik7Ci0g
ICAgICAgICAgICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q29uc3RydWN0
b3JNYXlUaHJvd0V4Y2VwdGlvbn0gfHwgJG9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
TWF5VGhyb3dFeGNlcHRpb259KSB7CisgICAgICAgICAgICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57TGVnYWN5RmFjdG9yeUZ1bmN0aW9uTWF5VGhyb3dFeGNlcHRpb259IHx8
ICRvcGVyYXRpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e01heVRocm93RXhjZXB0aW9ufSkgewog
ICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBzdGF0aWNfYXNzZXJ0KElz
RXhjZXB0aW9uT3I8ZGVjbHR5cGUob2JqZWN0KT46OnZhbHVlKTtcbiIpOwogICAgICAgICAgICAg
ICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBzdGF0aWNfYXNzZXJ0KGRlY2x0eXBlKG9iamVj
dCk6OlJldHVyblR5cGU6OmlzUmVmKTtcbiIpOwogICAgICAgICAgICAgfSBlbHNlIHsKQEAgLTc1
MjcsMTIgKzc1MjksMTIgQEAgc3ViIEdlbmVyYXRlQ29uc3RydWN0b3JEZWZpbml0aW9uCiAgICAg
ICAgICAgICBteSBAY29uc3RydWN0aW9uQ29udmVyc2lvbkFyZ3VtZW50cyA9ICgpOwogICAgICAg
ICAgICAgcHVzaChAY29uc3RydWN0aW9uQ29udmVyc2lvbkFyZ3VtZW50cywgIipsZXhpY2FsR2xv
YmFsT2JqZWN0Iik7CiAgICAgICAgICAgICBwdXNoKEBjb25zdHJ1Y3Rpb25Db252ZXJzaW9uQXJn
dW1lbnRzLCAiKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpIik7Ci0gICAgICAgICAgICBwdXNo
KEBjb25zdHJ1Y3Rpb25Db252ZXJzaW9uQXJndW1lbnRzLCAidGhyb3dTY29wZSIpIGlmICRpbnRl
cmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NvbnN0cnVjdG9yTWF5VGhyb3dFeGNlcHRpb259
IHx8ICRvcGVyYXRpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e01heVRocm93RXhjZXB0aW9ufTsK
KyAgICAgICAgICAgIHB1c2goQGNvbnN0cnVjdGlvbkNvbnZlcnNpb25Bcmd1bWVudHMsICJ0aHJv
d1Njb3BlIikgaWYgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57TGVnYWN5RmFjdG9y
eUZ1bmN0aW9uTWF5VGhyb3dFeGNlcHRpb259IHx8ICRvcGVyYXRpb24tPmV4dGVuZGVkQXR0cmli
dXRlcy0+e01heVRocm93RXhjZXB0aW9ufTsKICAgICAgICAgICAgIHB1c2goQGNvbnN0cnVjdGlv
bkNvbnZlcnNpb25Bcmd1bWVudHMsICJXVEZNb3ZlKG9iamVjdCkiKTsKIAogICAgICAgICAgICAg
IyBGSVhNRTogdG9KU05ld2x5Q3JlYXRlZCBzaG91bGQgcmV0dXJuIEpTT2JqZWN0KiBpbnN0ZWFk
IG9mIEpTVmFsdWUuCiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgYXV0byBq
c1ZhbHVlID0gdG9KU05ld2x5Q3JlYXRlZDwke0lETFR5cGV9PigiIC4gam9pbigiLCAiLCBAY29u
c3RydWN0aW9uQ29udmVyc2lvbkFyZ3VtZW50cykgLiAiKTtcbiIpOwotICAgICAgICAgICAgcHVz
aChAJG91dHB1dEFycmF5LCAiICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9
KTtcbiIpIGlmICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NvbnN0cnVjdG9yTWF5
VGhyb3dFeGNlcHRpb259IHx8ICRvcGVyYXRpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e01heVRo
cm93RXhjZXB0aW9ufTsKKyAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7XG4iKSBpZiAkaW50ZXJmYWNlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPntMZWdhY3lGYWN0b3J5RnVuY3Rpb25NYXlUaHJvd0V4Y2VwdGlvbn0g
fHwgJG9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57TWF5VGhyb3dFeGNlcHRpb259Owog
ICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHNldFN1YmNsYXNzU3RydWN0dXJl
SWZOZWVkZWQ8JHtpbXBsVHlwZX0+KGxleGljYWxHbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgYXNP
YmplY3QoanNWYWx1ZSkpO1xuIik7CiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pO1xuIik7CiAgICAgICAgICAg
ICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1ZhbHVl
KTtcbiIpOwpAQCAtNzYwMyw5ICs3NjA1LDkgQEAgc3ViIEdldFJ1bnRpbWVFbmFibGVkU3RhdGlj
UHJvcGVydGllcwogCiBzdWIgR2VuZXJhdGVDb25zdHJ1Y3RvckhlbHBlck1ldGhvZHMKIHsKLSAg
ICBteSAoJG91dHB1dEFycmF5LCAkY2xhc3NOYW1lLCAkcHJvdG9DbGFzc05hbWUsICR2aXNpYmxl
SW50ZXJmYWNlTmFtZSwgJGludGVyZmFjZSwgJGdlbmVyYXRpbmdOYW1lZENvbnN0cnVjdG9yKSA9
IEBfOworICAgIG15ICgkb3V0cHV0QXJyYXksICRjbGFzc05hbWUsICRwcm90b0NsYXNzTmFtZSwg
JHZpc2libGVJbnRlcmZhY2VOYW1lLCAkaW50ZXJmYWNlLCAkZ2VuZXJhdGluZ0xlZ2FjeUZhY3Rv
cnlGdW5jdGlvbikgPSBAXzsKIAotICAgIG15ICRjb25zdHJ1Y3RvckNsYXNzTmFtZSA9ICRnZW5l
cmF0aW5nTmFtZWRDb25zdHJ1Y3RvciA/ICIke2NsYXNzTmFtZX1OYW1lZENvbnN0cnVjdG9yIiA6
ICIke2NsYXNzTmFtZX1Db25zdHJ1Y3RvciI7CisgICAgbXkgJGNvbnN0cnVjdG9yQ2xhc3NOYW1l
ID0gJGdlbmVyYXRpbmdMZWdhY3lGYWN0b3J5RnVuY3Rpb24gPyAiJHtjbGFzc05hbWV9TGVnYWN5
RmFjdG9yeUZ1bmN0aW9uIiA6ICIke2NsYXNzTmFtZX1Db25zdHJ1Y3RvciI7CiAgICAgbXkgJGxl
YXN0Q29uc3RydWN0b3JMZW5ndGggPSAwOwogICAgIGlmIChAeyRpbnRlcmZhY2UtPmNvbnN0cnVj
dG9yc30gPiAwKSB7CiAgICAgICAgICRsZWFzdENvbnN0cnVjdG9yTGVuZ3RoID0gMjU1OwpAQCAt
NzYyNCw3ICs3NjI2LDcgQEAgc3ViIEdlbmVyYXRlQ29uc3RydWN0b3JIZWxwZXJNZXRob2RzCiAK
ICAgICBhc3NlcnQoIkFuIGludGVyZmFjZSBjYW5ub3QgaW5oZXJpdCBmcm9tIGFub3RoZXIgaW50
ZXJmYWNlIHRoYXQgaXMgbWFya2VkIGFzIFtOb0ludGVyZmFjZU9iamVjdF0iKSBpZiAkaW50ZXJm
YWNlLT5wYXJlbnRUeXBlICYmICRjb2RlR2VuZXJhdG9yLT5HZXRJbnRlcmZhY2VFeHRlbmRlZEF0
dHJpYnV0ZXNGcm9tTmFtZSgkaW50ZXJmYWNlLT5wYXJlbnRUeXBlLT5uYW1lKS0+e05vSW50ZXJm
YWNlT2JqZWN0fTsKIAotICAgIGlmICghJGdlbmVyYXRpbmdOYW1lZENvbnN0cnVjdG9yIGFuZCAk
aW50ZXJmYWNlLT5wYXJlbnRUeXBlKSB7CisgICAgaWYgKCEkZ2VuZXJhdGluZ0xlZ2FjeUZhY3Rv
cnlGdW5jdGlvbiBhbmQgJGludGVyZmFjZS0+cGFyZW50VHlwZSkgewogICAgICAgICBteSAkcGFy
ZW50Q2xhc3NOYW1lID0gIkpTIiAuICRpbnRlcmZhY2UtPnBhcmVudFR5cGUtPm5hbWU7CiAgICAg
ICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICByZXR1cm4gJHtwYXJlbnRDbGFzc05hbWV9Ojpn
ZXRDb25zdHJ1Y3Rvcih2bSwgJmdsb2JhbE9iamVjdCk7XG4iKTsKICAgICB9IGVsc2UgewpAQCAt
NzY1Miw3ICs3NjU0LDcgQEAgc3ViIEdlbmVyYXRlQ29uc3RydWN0b3JIZWxwZXJNZXRob2RzCiAg
ICAgYXNzZXJ0KCJqc05vbnRyaXZpYWxTdHJpbmcoKSByZXF1aXJlcyBzdHJpbmdzIHR3byBvciBt
b3JlIGNoYXJhY3RlcnMgbG9uZyIpIGlmIGxlbmd0aCgkdmlzaWJsZUludGVyZmFjZU5hbWUpIDwg
MjsKICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIFwiJHZpc2libGVJbnRlcmZhY2VO
YW1lXCJfcyksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0pO1xuIik7CiAKLSAgICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57Q29uc3RydWN0b3JFbmFibGVkQnlTZXR0aW5nfSkgeworICAgIGlmICgk
aW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntMZWdhY3lGYWN0b3J5RnVuY3Rpb25FbmFi
bGVkQnlTZXR0aW5nfSkgewogICAgICAgICBteSAkcnVudGltZUVuYWJsZUNvbmRpdGlvbmFsU3Ry
aW5nID0gR2VuZXJhdGVSdW50aW1lRW5hYmxlQ29uZGl0aW9uYWxTdHJpbmcoJGludGVyZmFjZSwg
JGludGVyZmFjZSwgIiZnbG9iYWxPYmplY3QiKTsKICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5
LCAiICAgIGludCBjb25zdHJ1Y3Rvckxlbmd0aCA9ICR7bGVhc3RDb25zdHJ1Y3Rvckxlbmd0aH07
XG4iKTsKICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGlmICghJHtydW50aW1lRW5h
YmxlQ29uZGl0aW9uYWxTdHJpbmd9KVxuIik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMuanNvbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMuanNvbgkocmV2aXNpb24gMjY2NjE2KQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLmpzb24JKHdv
cmtpbmcgY29weSkKQEAgLTcyLDI1ICs3Miw2IEBACiAgICAgICAgICAgICAiY29udGV4dHNBbGxv
d2VkIjogWyJpbnRlcmZhY2UiXSwKICAgICAgICAgICAgICJ2YWx1ZXMiOiBbIioiXQogICAgICAg
ICB9LAotICAgICAgICAiQ29uc3RydWN0b3IiOiB7Ci0gICAgICAgICAgICAiY29udGV4dHNBbGxv
d2VkIjogWyJpbnRlcmZhY2UiXSwKLSAgICAgICAgICAgICJzdGFuZGFyZCI6IHsKLSAgICAgICAg
ICAgICAgICAidXJsIjogImh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI0NvbnN0cnVj
dG9yIgotICAgICAgICAgICAgfQotICAgICAgICB9LAotICAgICAgICAiQ29uc3RydWN0b3JDYWxs
V2l0aCI6IHsKLSAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImludGVyZmFjZSJdLAot
ICAgICAgICAgICAgInZhbHVlcyI6IFsiRG9jdW1lbnQiLCAiRXhlY1N0YXRlIiwgIlJ1bnRpbWVG
bGFncyIsICJTY3JpcHRFeGVjdXRpb25Db250ZXh0Il0sCi0gICAgICAgICAgICAic3VwcG9ydHND
b25qdW5jdGlvbiI6IHRydWUKLSAgICAgICAgfSwKLSAgICAgICAgIkNvbnN0cnVjdG9yRW5hYmxl
ZEJ5U2V0dGluZyI6IHsKLSAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImF0dHJpYnV0
ZSIsICJpbnRlcmZhY2UiXSwKLSAgICAgICAgICAgICJ2YWx1ZXMiOiBbIioiXSwKLSAgICAgICAg
ICAgICJzdXBwb3J0c0Nvbmp1bmN0aW9uIjogdHJ1ZQotICAgICAgICB9LAotICAgICAgICAiQ29u
c3RydWN0b3JNYXlUaHJvd0V4Y2VwdGlvbiI6IHsKLSAgICAgICAgICAgICJjb250ZXh0c0FsbG93
ZWQiOiBbImludGVyZmFjZSJdCi0gICAgICAgIH0sCiAgICAgICAgICJDb250ZXh0QWxsb3dzTWVk
aWFEZXZpY2VzIjogewogICAgICAgICAgICAgImNvbnRleHRzQWxsb3dlZCI6IFsiYXR0cmlidXRl
Il0KICAgICAgICAgfSwKQEAgLTI5Nyw2ICsyNzgsMjYgQEAKICAgICAgICAgICAgIH0sCiAgICAg
ICAgICAgICAidW5zdXBwb3J0ZWQiOiB0cnVlCiAgICAgICAgIH0sCisgICAgICAgICJMZWdhY3lG
YWN0b3J5RnVuY3Rpb24iOiB7CisgICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJpbnRl
cmZhY2UiXSwKKyAgICAgICAgICAgICJ2YWx1ZXMiOiBbIioiXSwKKyAgICAgICAgICAgICJzdGFu
ZGFyZCI6IHsKKyAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5p
by93ZWJpZGwvI0xlZ2FjeUZhY3RvcnlGdW5jdGlvbiIKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fSwKKyAgICAgICAgIkxlZ2FjeUZhY3RvcnlGdW5jdGlvbkNhbGxXaXRoIjogeworICAgICAgICAg
ICAgImNvbnRleHRzQWxsb3dlZCI6IFsiaW50ZXJmYWNlIl0sCisgICAgICAgICAgICAidmFsdWVz
IjogWyJEb2N1bWVudCIsICJFeGVjU3RhdGUiLCAiUnVudGltZUZsYWdzIiwgIlNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQiXSwKKyAgICAgICAgICAgICJzdXBwb3J0c0Nvbmp1bmN0aW9uIjogdHJ1ZQor
ICAgICAgICB9LAorICAgICAgICAiTGVnYWN5RmFjdG9yeUZ1bmN0aW9uRW5hYmxlZEJ5U2V0dGlu
ZyI6IHsKKyAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImF0dHJpYnV0ZSIsICJpbnRl
cmZhY2UiXSwKKyAgICAgICAgICAgICJ2YWx1ZXMiOiBbIioiXSwKKyAgICAgICAgICAgICJzdXBw
b3J0c0Nvbmp1bmN0aW9uIjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAiTGVnYWN5RmFjdG9y
eUZ1bmN0aW9uTWF5VGhyb3dFeGNlcHRpb24iOiB7CisgICAgICAgICAgICAiY29udGV4dHNBbGxv
d2VkIjogWyJpbnRlcmZhY2UiXQorICAgICAgICB9LAogICAgICAgICAiTGVnYWN5VW5lbnVtZXJh
YmxlTmFtZWRQcm9wZXJ0aWVzIjogewogICAgICAgICAgICAgImNvbnRleHRzQWxsb3dlZCI6IFsi
aW50ZXJmYWNlIl0sCiAgICAgICAgICAgICAic3RhbmRhcmQiOiB7CkBAIC0zMjksMTMgKzMzMCw2
IEBACiAgICAgICAgICJNYXlUaHJvd0V4Y2VwdGlvbiI6IHsKICAgICAgICAgICAgICJjb250ZXh0
c0FsbG93ZWQiOiBbImF0dHJpYnV0ZSIsICJvcGVyYXRpb24iXQogICAgICAgICB9LAotICAgICAg
ICAiTmFtZWRDb25zdHJ1Y3RvciI6IHsKLSAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBb
ImludGVyZmFjZSJdLAotICAgICAgICAgICAgInZhbHVlcyI6IFsiKiJdLAotICAgICAgICAgICAg
InN0YW5kYXJkIjogewotICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9oZXljYW0uZ2l0
aHViLmlvL3dlYmlkbC8jTmFtZWRDb25zdHJ1Y3RvciIKLSAgICAgICAgICAgIH0KLSAgICAgICAg
fSwKICAgICAgICAgIk5ld0ltcHVyZVByb3BlcnR5RmlyZXNXYXRjaHBvaW50cyI6IHsKICAgICAg
ICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImludGVyZmFjZSJdCiAgICAgICAgIH0sCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETFBhcnNlci5wbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETFBhcnNlci5wbQkocmV2aXNp
b24gMjY2NjE2KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIu
cG0JKHdvcmtpbmcgY29weSkKQEAgLTMzODcsMTYgKzMzODcsMTYgQEAgc3ViIGFwcGx5RXh0ZW5k
ZWRBdHRyaWJ1dGVMaXN0CiAgICAgbXkgJGludGVyZmFjZSA9IHNoaWZ0OwogICAgIG15ICRleHRl
bmRlZEF0dHJpYnV0ZUxpc3QgPSBzaGlmdDsKIAotICAgIGlmIChkZWZpbmVkICRleHRlbmRlZEF0
dHJpYnV0ZUxpc3QtPnsiTmFtZWRDb25zdHJ1Y3RvciJ9KSB7CisgICAgaWYgKGRlZmluZWQgJGV4
dGVuZGVkQXR0cmlidXRlTGlzdC0+eyJMZWdhY3lGYWN0b3J5RnVuY3Rpb24ifSkgewogICAgICAg
ICBteSAkbmV3RGF0YU5vZGUgPSBJRExPcGVyYXRpb24tPm5ldygpOwogICAgICAgICAkbmV3RGF0
YU5vZGUtPmlzQ29uc3RydWN0b3IoMSk7Ci0gICAgICAgICRuZXdEYXRhTm9kZS0+bmFtZSgiTmFt
ZWRDb25zdHJ1Y3RvciIpOworICAgICAgICAkbmV3RGF0YU5vZGUtPm5hbWUoIkxlZ2FjeUZhY3Rv
cnlGdW5jdGlvbiIpOwogICAgICAgICAkbmV3RGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcygk
ZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0KTsKLSAgICAgICAgbXkgJWF0dHJpYnV0ZXMgPSAleyRleHRl
bmRlZEF0dHJpYnV0ZUxpc3QtPnsiTmFtZWRDb25zdHJ1Y3RvciJ9fTsKKyAgICAgICAgbXkgJWF0
dHJpYnV0ZXMgPSAleyRleHRlbmRlZEF0dHJpYnV0ZUxpc3QtPnsiTGVnYWN5RmFjdG9yeUZ1bmN0
aW9uIn19OwogICAgICAgICBteSBAYXR0cmlidXRlS2V5cyA9IGtleXMgKCVhdHRyaWJ1dGVzKTsK
ICAgICAgICAgbXkgJGNvbnN0cnVjdG9yTmFtZSA9ICRhdHRyaWJ1dGVLZXlzWzBdOwogICAgICAg
ICBwdXNoKEB7JG5ld0RhdGFOb2RlLT5hcmd1bWVudHN9LCBAeyRhdHRyaWJ1dGVzeyRjb25zdHJ1
Y3Rvck5hbWV9fSk7Ci0gICAgICAgICRleHRlbmRlZEF0dHJpYnV0ZUxpc3QtPnsiTmFtZWRDb25z
dHJ1Y3RvciJ9ID0gJGNvbnN0cnVjdG9yTmFtZTsKKyAgICAgICAgJGV4dGVuZGVkQXR0cmlidXRl
TGlzdC0+eyJMZWdhY3lGYWN0b3J5RnVuY3Rpb24ifSA9ICRjb25zdHJ1Y3Rvck5hbWU7CiAgICAg
ICAgIHB1c2goQHskaW50ZXJmYWNlLT5jb25zdHJ1Y3RvcnN9LCAkbmV3RGF0YU5vZGUpOwogICAg
IH0KICAgICAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvcHJlcHJvY2Vz
cy1pZGxzLnBsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
cHJlcHJvY2Vzcy1pZGxzLnBsCShyZXZpc2lvbiAyNjY2MTYpCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3ByZXByb2Nlc3MtaWRscy5wbAkod29ya2luZyBjb3B5KQpAQCAtMzEy
LDcgKzMxMiw3IEBAIHN1YiBHZW5lcmF0ZUNvbnN0cnVjdG9yQXR0cmlidXRlcwogICAgICAgbmV4
dCB1bmxlc3MgKCRhdHRyaWJ1dGVOYW1lIGVxICJDb25kaXRpb25hbCIgfHwgJGF0dHJpYnV0ZU5h
bWUgZXEgIkVuYWJsZWRBdFJ1bnRpbWUiIHx8ICRhdHRyaWJ1dGVOYW1lIGVxICJFbmFibGVkRm9y
V29ybGQiCiAgICAgICAgIHx8ICRhdHRyaWJ1dGVOYW1lIGVxICJFbmFibGVkQnlTZXR0aW5nIiB8
fCAkYXR0cmlidXRlTmFtZSBlcSAiU2VjdXJlQ29udGV4dCIgfHwgJGF0dHJpYnV0ZU5hbWUgZXEg
IlByaXZhdGVJZGVudGlmaWVyIgogICAgICAgICB8fCAkYXR0cmlidXRlTmFtZSBlcSAiUHVibGlj
SWRlbnRpZmllciIgfHwgJGF0dHJpYnV0ZU5hbWUgZXEgIkRpc2FibGVkQnlRdWlyayIgfHwgJGF0
dHJpYnV0ZU5hbWUgZXEgIkVuYWJsZWRCeVF1aXJrIgotICAgICAgICB8fCAkYXR0cmlidXRlTmFt
ZSBlcSAiRW5hYmxlZEZvckNvbnRleHQiIHx8ICRhdHRyaWJ1dGVOYW1lIGVxICJDdXN0b21FbmFi
bGVkIikgfHwgJGF0dHJpYnV0ZU5hbWUgZXEgIkNvbnN0cnVjdG9yRW5hYmxlZEJ5U2V0dGluZyI7
CisgICAgICAgIHx8ICRhdHRyaWJ1dGVOYW1lIGVxICJFbmFibGVkRm9yQ29udGV4dCIgfHwgJGF0
dHJpYnV0ZU5hbWUgZXEgIkN1c3RvbUVuYWJsZWQiKSB8fCAkYXR0cmlidXRlTmFtZSBlcSAiTGVn
YWN5RmFjdG9yeUZ1bmN0aW9uRW5hYmxlZEJ5U2V0dGluZyI7CiAgICAgICBteSAkZXh0ZW5kZWRB
dHRyaWJ1dGUgPSAkYXR0cmlidXRlTmFtZTsKICAgICAgICRleHRlbmRlZEF0dHJpYnV0ZSAuPSAi
PSIgLiAkZXh0ZW5kZWRBdHRyaWJ1dGVzLT57JGF0dHJpYnV0ZU5hbWV9IHVubGVzcyAkZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57JGF0dHJpYnV0ZU5hbWV9IGVxICJWQUxVRV9JU19NSVNTSU5HIjsKICAg
ICAgIHB1c2goQGV4dGVuZGVkQXR0cmlidXRlc0xpc3QsICRleHRlbmRlZEF0dHJpYnV0ZSk7CkBA
IC0zMjMsMTQgKzMyMywxNCBAQCBzdWIgR2VuZXJhdGVDb25zdHJ1Y3RvckF0dHJpYnV0ZXMKICAg
ICAkaW50ZXJmYWNlTmFtZSA9ICRleHRlbmRlZEF0dHJpYnV0ZXMtPnsiSW50ZXJmYWNlTmFtZSJ9
IGlmICRleHRlbmRlZEF0dHJpYnV0ZXMtPnsiSW50ZXJmYWNlTmFtZSJ9OwogICAgICRjb2RlIC49
ICJhdHRyaWJ1dGUgIiAuICRvcmlnaW5hbEludGVyZmFjZU5hbWUgLiAiQ29uc3RydWN0b3IgJGlu
dGVyZmFjZU5hbWU7XG4iOwogCi0gICAgIyBJbiBhZGRpdGlvbiB0byB0aGUgcmVndWxhciBwcm9w
ZXJ0eSwgZm9yIGV2ZXJ5IFtOYW1lZENvbnN0cnVjdG9yXSBleHRlbmRlZCBhdHRyaWJ1dGUgb24g
YW4gaW50ZXJmYWNlLAorICAgICMgSW4gYWRkaXRpb24gdG8gdGhlIHJlZ3VsYXIgcHJvcGVydHks
IGZvciBldmVyeSBbTGVnYWN5RmFjdG9yeUZ1bmN0aW9uXSBleHRlbmRlZCBhdHRyaWJ1dGUgb24g
YW4gaW50ZXJmYWNlLAogICAgICMgYSBjb3JyZXNwb25kaW5nIHByb3BlcnR5IE1VU1QgZXhpc3Qg
b24gdGhlIEVDTUFTY3JpcHQgZ2xvYmFsIG9iamVjdC4KLSAgICBpZiAoJGV4dGVuZGVkQXR0cmli
dXRlcy0+eyJOYW1lZENvbnN0cnVjdG9yIn0pIHsKLSAgICAgICAgbXkgJGNvbnN0cnVjdG9yTmFt
ZSA9ICRleHRlbmRlZEF0dHJpYnV0ZXMtPnsiTmFtZWRDb25zdHJ1Y3RvciJ9OworICAgIGlmICgk
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkxlZ2FjeUZhY3RvcnlGdW5jdGlvbiJ9KSB7CisgICAgICAg
IG15ICRjb25zdHJ1Y3Rvck5hbWUgPSAkZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkxlZ2FjeUZhY3Rv
cnlGdW5jdGlvbiJ9OwogICAgICAgICAkY29uc3RydWN0b3JOYW1lID1+IHMvXCguKi8vZzsgIyBF
eHRyYWN0IGZ1bmN0aW9uIG5hbWUuCiAgICAgICAgICRjb2RlIC49ICIgICAgIjsKICAgICAgICAg
JGNvZGUgLj0gIlsiIC4gam9pbignLCAnLCBAZXh0ZW5kZWRBdHRyaWJ1dGVzTGlzdCkgLiAiXSAi
IGlmIEBleHRlbmRlZEF0dHJpYnV0ZXNMaXN0OwotICAgICAgICAkY29kZSAuPSAiYXR0cmlidXRl
ICIgLiAkb3JpZ2luYWxJbnRlcmZhY2VOYW1lIC4gIk5hbWVkQ29uc3RydWN0b3IgJGNvbnN0cnVj
dG9yTmFtZTtcbiI7CisgICAgICAgICRjb2RlIC49ICJhdHRyaWJ1dGUgIiAuICRvcmlnaW5hbElu
dGVyZmFjZU5hbWUgLiAiTGVnYWN5RmFjdG9yeUZ1bmN0aW9uQ29uc3RydWN0b3IgJGNvbnN0cnVj
dG9yTmFtZTtcbiI7CiAgICAgfQogICAgIAogICAgIG15ICR3aW5kb3dBbGlhc2VzQ29kZTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9TdXBwbGVtZW50YWxEZXBl
bmRlbmNpZXMuZGVwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9TdXBwbGVtZW50YWxEZXBlbmRlbmNpZXMuZGVwCShyZXZpc2lvbiAyNjY2MTYpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvU3VwcGxlbWVudGFsRGVwZW5k
ZW5jaWVzLmRlcAkod29ya2luZyBjb3B5KQpAQCAtMTEwLDYgKzExMCw5IEBAIFdlYkRPTVRlc3RJ
dGVyYWJsZS5oOiAKIEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmg6IAogRE9NVGVzdEpTQnVp
bHRpbkNvbnN0cnVjdG9yLmg6IAogV2ViRE9NVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmg6IAor
SlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uLmg6IAorRE9NVGVzdExlZ2FjeUZhY3RvcnlGdW5j
dGlvbi5oOiAKK1dlYkRPTVRlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24uaDogCiBKU1Rlc3RNYXBM
aWtlLmg6IAogRE9NVGVzdE1hcExpa2UuaDogCiBXZWJET01UZXN0TWFwTGlrZS5oOiAKQEAgLTEy
Miw5ICsxMjUsNiBAQCBXZWJET01UZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFCiBK
U1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5oOiAKIERPTVRlc3ROYW1l
ZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5oOiAKIFdlYkRPTVRlc3ROYW1lZEFuZElu
ZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5oOiAKLUpTVGVzdE5hbWVkQ29uc3RydWN0b3IuaDog
Ci1ET01UZXN0TmFtZWRDb25zdHJ1Y3Rvci5oOiAKLVdlYkRPTVRlc3ROYW1lZENvbnN0cnVjdG9y
Lmg6IAogSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyLmg6IAogRE9NVGVzdE5hbWVkRGVs
ZXRlck5vSWRlbnRpZmllci5oOiAKIFdlYkRPTVRlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIu
aDogCkBAIC0xODAsNiArMTgwLDkgQEAgSlNUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWwuaDogVGVz
dE9wZXJhdAogRE9NVGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsLmg6IFRlc3RPcGVyYXRpb25CYXNl
LmlkbAogV2ViRE9NVGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsLmg6IFRlc3RPcGVyYXRpb25CYXNl
LmlkbAogVGVzdE9wZXJhdGlvbkJhc2UuaWRsOgorSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
cy5oOiAKK0RPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmg6IAorV2ViRE9NVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnMuaDogCiBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNl
cXVlbmNlLmg6IAogRE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UuaDog
CiBXZWJET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZS5oOiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0TGVnYWN5RmFjdG9yeUZ1
bmN0aW9uLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbi5pZGwJKG5vbmV4aXN0ZW50KQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rp
b24uaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtc3RyQXJnLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5v
ciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFT
IElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFc3RyQXJnLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
KyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLy8gVGhpcyBJREwgZmlsZSBp
cyBmb3IgdGVzdGluZyB0aGUgYmluZGluZ3MgY29kZSBnZW5lcmF0b3IgYW5kIGZvciB0cmFja2lu
ZworLy8gY2hhbmdlcyBpbiBpdHMgb3VwdXQuCitbCisgICAgQWN0aXZlRE9NT2JqZWN0LAorICAg
IExlZ2FjeUZhY3RvcnlGdW5jdGlvbj1BdWRpbyhET01TdHJpbmcgc3RyMSwgb3B0aW9uYWwgRE9N
U3RyaW5nIHN0cjIgPSAiZGVmYXVsdFN0cmluZyIsIG9wdGlvbmFsIERPTVN0cmluZyBzdHIzKSwK
KyAgICBMZWdhY3lGYWN0b3J5RnVuY3Rpb25DYWxsV2l0aD1Eb2N1bWVudCwKKyAgICBMZWdhY3lG
YWN0b3J5RnVuY3Rpb25NYXlUaHJvd0V4Y2VwdGlvbgorXSBpbnRlcmZhY2UgVGVzdExlZ2FjeUZh
Y3RvcnlGdW5jdGlvbiB7Cit9OwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Rlc3ROYW1lZENvbnN0cnVjdG9yLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE5hbWVkQ29uc3RydWN0b3IuaWRsCShyZXZp
c2lvbiAyNjY2MTYpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVz
dE5hbWVkQ29uc3RydWN0b3IuaWRsCShub25leGlzdGVudCkKQEAgLTEsMzcgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXN0
ckFyZywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJ
bmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAg
IGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMg
Q09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRXN0ckFyZywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0g
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLS8v
IFRoaXMgSURMIGZpbGUgaXMgZm9yIHRlc3RpbmcgdGhlIGJpbmRpbmdzIGNvZGUgZ2VuZXJhdG9y
IGFuZCBmb3IgdHJhY2tpbmcKLS8vIGNoYW5nZXMgaW4gaXRzIG91cHV0LgotWwotICAgIEFjdGl2
ZURPTU9iamVjdCwKLSAgICBOYW1lZENvbnN0cnVjdG9yPUF1ZGlvKERPTVN0cmluZyBzdHIxLCBv
cHRpb25hbCBET01TdHJpbmcgc3RyMiA9ICJkZWZhdWx0U3RyaW5nIiwgb3B0aW9uYWwgRE9NU3Ry
aW5nIHN0cjMpLAotICAgIENvbnN0cnVjdG9yQ2FsbFdpdGg9RG9jdW1lbnQsCi0gICAgQ29uc3Ry
dWN0b3JNYXlUaHJvd0V4Y2VwdGlvbgotXSBpbnRlcmZhY2UgVGVzdE5hbWVkQ29uc3RydWN0b3Ig
ewotfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0RP
TVdpbmRvdy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTRE9NV2luZG93LmNwcAkocmV2aXNpb24gMjY2NjE2KQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRE9NV2luZG93LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTksMjIgKzU5LDQxIEBAIEpTQzo6RW5jb2RlZEpTVmFsdWUganNET01XaW5kb3dU
ZXN0T2JqZWMKIGJvb2wgc2V0SlNET01XaW5kb3dUZXN0T2JqZWN0Q29uc3RydWN0b3IoSlNDOjpK
U0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUp
OwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc0RPTVdpbmRvd1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZl
bnRDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwg
SlNDOjpQcm9wZXJ0eU5hbWUpOwogYm9vbCBzZXRKU0RPTVdpbmRvd1Rlc3RQcm9taXNlUmVqZWN0
aW9uRXZlbnRDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNW
YWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CitKU0M6OkVuY29kZWRKU1ZhbHVlIGpzRE9NV2lu
ZG93RXhwb3NlZFRvV29ya2VyQW5kV2luZG93Q29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVj
dCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKK2Jvb2wgc2V0SlNE
T01XaW5kb3dFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3dDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFs
T2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CitKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzRE9NV2luZG93VGVzdE5vZGVDb25zdHJ1Y3RvcihKU0M6OkpTR2xv
YmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOworYm9v
bCBzZXRKU0RPTVdpbmRvd1Rlc3ROb2RlQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCos
IEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc0RPTVdpbmRvd1Rlc3RPYmplY3RDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOworYm9vbCBzZXRK
U0RPTVdpbmRvd1Rlc3RPYmplY3RDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlND
OjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CitKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzRE9NV2luZG93VGVzdFByb21pc2VSZWplY3Rpb25FdmVudENvbnN0cnVjdG9yKEpTQzo6
SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7
Citib29sIHNldEpTRE9NV2luZG93VGVzdFByb21pc2VSZWplY3Rpb25FdmVudENvbnN0cnVjdG9y
KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRK
U1ZhbHVlKTsKIAogdXNpbmcgSlNET01XaW5kb3dDb25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0
b3JOb3RDb25zdHJ1Y3RhYmxlPEpTRE9NV2luZG93PjsKIAogLyogSGFzaCB0YWJsZSAqLwogCi1z
dGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNET01XaW5kb3dUYWJsZUluZGV4
WzEwXSA9IHsKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU0RPTVdpbmRv
d1RhYmxlSW5kZXhbMjFdID0geworICAgIHsgLTEsIC0xIH0sCisgICAgeyAwLCAxNiB9LAorICAg
IHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEs
IC0xIH0sCi0gICAgeyAwLCA4IH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAog
ICAgIHsgLTEsIC0xIH0sCisgICAgeyAyLCAxOSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyAz
LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyAxLCA5IH0sCi0gICAgeyAyLCAtMSB9LAor
ICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IDMsIDIwIH0sCisgICAgeyAt
MSwgLTEgfSwKKyAgICB7IDEsIDE3IH0sCisgICAgeyA0LCAxOCB9LAorICAgIHsgNSwgLTEgfSwK
KyAgICB7IDYsIC0xIH0sCisgICAgeyA3LCAtMSB9LAogfTsKIAogCkBAIC04NCw5ICsxMDMsMTMg
QEAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTRE9NV2luZG93VAogICAgIHsgIlRlc3RO
b2RlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6
R2V0VmFsdWVGdW5jPihqc0RPTVdpbmRvd1Rlc3ROb2RlQ29uc3RydWN0b3IpLCAoaW50cHRyX3Qp
IHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0RPTVdpbmRv
d1Rlc3ROb2RlQ29uc3RydWN0b3IpIH0gfSwKICAgICB7ICJUZXN0T2JqZWN0Iiwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihq
c0RPTVdpbmRvd1Rlc3RPYmplY3RDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8
UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTRE9NV2luZG93VGVzdE9iamVjdENv
bnN0cnVjdG9yKSB9IH0sCiAgICAgeyAiVGVzdFByb21pc2VSZWplY3Rpb25FdmVudCIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVu
Yz4oanNET01XaW5kb3dUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Q29uc3RydWN0b3IpLCAoaW50
cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0RP
TVdpbmRvd1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRDb25zdHJ1Y3RvcikgfSB9LAorICAgIHsg
IkV4cG9zZWRUb1dvcmtlckFuZFdpbmRvdyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0
aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNET01XaW5kb3dFeHBvc2VkVG9X
b3JrZXJBbmRXaW5kb3dDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJv
cGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTRE9NV2luZG93RXhwb3NlZFRvV29ya2VyQW5k
V2luZG93Q29uc3RydWN0b3IpIH0gfSwKKyAgICB7ICJUZXN0Tm9kZSIsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNET01X
aW5kb3dUZXN0Tm9kZUNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9w
ZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNET01XaW5kb3dUZXN0Tm9kZUNvbnN0cnVjdG9y
KSB9IH0sCisgICAgeyAiVGVzdE9iamVjdCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0
aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNET01XaW5kb3dUZXN0T2JqZWN0
Q29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0
VmFsdWVGdW5jPihzZXRKU0RPTVdpbmRvd1Rlc3RPYmplY3RDb25zdHJ1Y3RvcikgfSB9LAorICAg
IHsgIlRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzRE9NV2luZG93VGVzdFBy
b21pc2VSZWplY3Rpb25FdmVudENvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQ
dXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNET01XaW5kb3dUZXN0UHJvbWlzZVJl
amVjdGlvbkV2ZW50Q29uc3RydWN0b3IpIH0gfSwKIH07CiAKLXN0YXRpYyBjb25zdCBIYXNoVGFi
bGUgSlNET01XaW5kb3dUYWJsZSA9IHsgNCwgNywgdHJ1ZSwgSlNET01XaW5kb3c6OmluZm8oKSwg
SlNET01XaW5kb3dUYWJsZVZhbHVlcywgSlNET01XaW5kb3dUYWJsZUluZGV4IH07CitzdGF0aWMg
Y29uc3QgSGFzaFRhYmxlIEpTRE9NV2luZG93VGFibGUgPSB7IDgsIDE1LCB0cnVlLCBKU0RPTVdp
bmRvdzo6aW5mbygpLCBKU0RPTVdpbmRvd1RhYmxlVmFsdWVzLCBKU0RPTVdpbmRvd1RhYmxlSW5k
ZXggfTsKIHRlbXBsYXRlPD4gSlNWYWx1ZSBKU0RPTVdpbmRvd0NvbnN0cnVjdG9yOjpwcm90b3R5
cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9i
YWxPYmplY3QpCiB7CiAgICAgcmV0dXJuIEpTRXZlbnRUYXJnZXQ6OmdldENvbnN0cnVjdG9yKHZt
LCAmZ2xvYmFsT2JqZWN0KTsKQEAgLTI2NCw2ICsyODcsOTggQEAgYm9vbCBzZXRKU0RPTVdpbmRv
d1Rlc3RQcm9taXNlUmVqZWN0aW9uRQogICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNET01XaW5k
b3c+OjpzZXQ8c2V0SlNET01XaW5kb3dUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Q29uc3RydWN0
b3JTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwg
IlRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQiKTsKIH0KIAorc3RhdGljIGlubGluZSBKU1ZhbHVl
IGpzRE9NV2luZG93RXhwb3NlZFRvV29ya2VyQW5kV2luZG93Q29uc3RydWN0b3JHZXR0ZXIoSlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTRE9NV2luZG93JiB0aGlzT2JqZWN0
KQoreworICAgIFVOVVNFRF9QQVJBTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICByZXR1cm4g
SlNFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3c6OmdldENvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0oJmxl
eGljYWxHbG9iYWxPYmplY3QpLCAmdGhpc09iamVjdCk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIGpz
RE9NV2luZG93RXhwb3NlZFRvV29ya2VyQW5kV2luZG93Q29uc3RydWN0b3IoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVy
dHlOYW1lKQoreworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNET01XaW5kb3c+OjpnZXQ8anNE
T01XaW5kb3dFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3dDb25zdHJ1Y3RvckdldHRlcj4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIkV4cG9zZWRUb1dvcmtlckFuZFdpbmRvdyIpOwor
fQorCitzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNET01XaW5kb3dFeHBvc2VkVG9Xb3JrZXJBbmRX
aW5kb3dDb25zdHJ1Y3RvclNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNET01XaW5kb3cmIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCit7CisgICAgYXV0byYg
dm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICAvLyBTaGFkb3dpbmcg
YSBidWlsdC1pbiBjb25zdHJ1Y3Rvci4KKyAgICByZXR1cm4gdGhpc09iamVjdC5wdXREaXJlY3Qo
dm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENo
YXIqPigiRXhwb3NlZFRvV29ya2VyQW5kV2luZG93IiksIHN0cmxlbigiRXhwb3NlZFRvV29ya2Vy
QW5kV2luZG93IikpLCB2YWx1ZSk7Cit9CisKK2Jvb2wgc2V0SlNET01XaW5kb3dFeHBvc2VkVG9X
b3JrZXJBbmRXaW5kb3dDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpCit7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0RPTVdpbmRvdz46OnNldDxzZXRKU0RP
TVdpbmRvd0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvd0NvbnN0cnVjdG9yU2V0dGVyPigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJFeHBvc2VkVG9Xb3JrZXJB
bmRXaW5kb3ciKTsKK30KKworc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzRE9NV2luZG93VGVzdE5v
ZGVDb25zdHJ1Y3RvckdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNET01XaW5kb3cmIHRoaXNPYmplY3QpCit7CisgICAgVU5VU0VEX1BBUkFNKGxleGljYWxHbG9i
YWxPYmplY3QpOworICAgIHJldHVybiBKU1Rlc3ROb2RlOjpnZXRDb25zdHJ1Y3RvcihKU0M6Omdl
dFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgJnRoaXNPYmplY3QpOworfQorCitFbmNvZGVkSlNW
YWx1ZSBqc0RPTVdpbmRvd1Rlc3ROb2RlQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQor
eworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNET01XaW5kb3c+OjpnZXQ8anNET01XaW5kb3dU
ZXN0Tm9kZUNvbnN0cnVjdG9yR2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCAiVGVzdE5vZGUiKTsKK30KKworc3RhdGljIGlubGluZSBib29sIHNldEpTRE9NV2luZG93VGVz
dE5vZGVDb25zdHJ1Y3RvclNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNET01XaW5kb3cmIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCit7CisgICAgYXV0byYg
dm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICAvLyBTaGFkb3dpbmcg
YSBidWlsdC1pbiBjb25zdHJ1Y3Rvci4KKyAgICByZXR1cm4gdGhpc09iamVjdC5wdXREaXJlY3Qo
dm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENo
YXIqPigiVGVzdE5vZGUiKSwgc3RybGVuKCJUZXN0Tm9kZSIpKSwgdmFsdWUpOworfQorCitib29s
IHNldEpTRE9NV2luZG93VGVzdE5vZGVDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUpCit7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0RPTVdpbmRvdz46OnNl
dDxzZXRKU0RPTVdpbmRvd1Rlc3ROb2RlQ29uc3RydWN0b3JTZXR0ZXI+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIlRlc3ROb2RlIik7Cit9CisKK3N0YXRp
YyBpbmxpbmUgSlNWYWx1ZSBqc0RPTVdpbmRvd1Rlc3RPYmplY3RDb25zdHJ1Y3RvckdldHRlcihK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNET01XaW5kb3cmIHRoaXNPYmpl
Y3QpCit7CisgICAgVU5VU0VEX1BBUkFNKGxleGljYWxHbG9iYWxPYmplY3QpOworICAgIHJldHVy
biBKU1Rlc3RPYmo6OmdldENvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpLCAmdGhpc09iamVjdCk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIGpzRE9NV2luZG93VGVzdE9i
amVjdENvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKK3sKKyAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTRE9NV2luZG93Pjo6Z2V0PGpzRE9NV2luZG93VGVzdE9iamVjdENvbnN0cnVjdG9y
R2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiVGVzdE9iamVjdCIpOwor
fQorCitzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNET01XaW5kb3dUZXN0T2JqZWN0Q29uc3RydWN0
b3JTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTRE9NV2luZG93
JiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQoreworICAgIGF1dG8mIHZtID0gSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29u
c3RydWN0b3IuCisgICAgcmV0dXJuIHRoaXNPYmplY3QucHV0RGlyZWN0KHZtLCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oIlRlc3RPYmpl
Y3QiKSwgc3RybGVuKCJUZXN0T2JqZWN0IikpLCB2YWx1ZSk7Cit9CisKK2Jvb2wgc2V0SlNET01X
aW5kb3dUZXN0T2JqZWN0Q29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlKQoreworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNET01XaW5kb3c+OjpzZXQ8c2V0SlNE
T01XaW5kb3dUZXN0T2JqZWN0Q29uc3RydWN0b3JTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIlRlc3RPYmplY3QiKTsKK30KKworc3RhdGljIGlu
bGluZSBKU1ZhbHVlIGpzRE9NV2luZG93VGVzdFByb21pc2VSZWplY3Rpb25FdmVudENvbnN0cnVj
dG9yR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0RPTVdpbmRv
dyYgdGhpc09iamVjdCkKK3sKKyAgICBVTlVTRURfUEFSQU0obGV4aWNhbEdsb2JhbE9iamVjdCk7
CisgICAgcmV0dXJuIEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudDo6Z2V0Q29uc3RydWN0b3Io
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksICZ0aGlzT2JqZWN0KTsKK30KKworRW5j
b2RlZEpTVmFsdWUganNET01XaW5kb3dUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Q29uc3RydWN0
b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgUHJvcGVydHlOYW1lKQoreworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNET01X
aW5kb3c+OjpnZXQ8anNET01XaW5kb3dUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Q29uc3RydWN0
b3JHZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJUZXN0UHJvbWlzZVJl
amVjdGlvbkV2ZW50Iik7Cit9CisKK3N0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0RPTVdpbmRvd1Rl
c3RQcm9taXNlUmVqZWN0aW9uRXZlbnRDb25zdHJ1Y3RvclNldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNET01XaW5kb3cmIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFs
dWUpCit7CisgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
KyAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3Rvci4KKyAgICByZXR1cm4gdGhp
c09iamVjdC5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiVGVzdFByb21pc2VSZWplY3Rpb25FdmVudCIpLCBzdHJs
ZW4oIlRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQiKSksIHZhbHVlKTsKK30KKworYm9vbCBzZXRK
U0RPTVdpbmRvd1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRDb25zdHJ1Y3RvcihKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCit7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0RP
TVdpbmRvdz46OnNldDxzZXRKU0RPTVdpbmRvd1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRDb25z
dHJ1Y3RvclNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZh
bHVlLCAiVGVzdFByb21pc2VSZWplY3Rpb25FdmVudCIpOworfQorCiBKU0M6Oklzb1N1YnNwYWNl
KiBKU0RPTVdpbmRvdzo6c3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKQogewogICAgIGF1dG8m
IGNsaWVudERhdGEgPSAqc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRh
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RH
bG9iYWxPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuY3BwCShyZXZpc2lvbiAyNjY2MTYpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2Jq
ZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTcsNiArNTcsOCBAQAogI2luY2x1ZGUgIkpTVGVz
dEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlLmgiCiAjaW5jbHVkZSAiSlNUZXN0SXRlcmFibGUu
aCIKICNpbmNsdWRlICJKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgIkpT
VGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTVGVzdExlZ2FjeUZhY3Rv
cnlGdW5jdGlvbkxlZ2FjeUZhY3RvcnlGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTVGVzdE1hcExp
a2UuaCIKICNpbmNsdWRlICJKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIu
aCIKICNpbmNsdWRlICJKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlv
bi5oIgpAQCAtNzgsNiArODAsNyBAQAogI2luY2x1ZGUgIkpTVGVzdE5hbWVkU2V0dGVyV2l0aE92
ZXJyaWRlQnVpbHRpbnMuaCIKICNpbmNsdWRlICJKU1Rlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdh
YmxlUHJvcGVydGllcy5oIgogI2luY2x1ZGUgIkpTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2Fi
bGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucy5oIgorI2luY2x1ZGUgIkpTVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnMuaCIKICNpbmNsdWRlICJKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzV2l0aFNlcXVlbmNlLmgiCiAjaW5jbHVkZSAiSlNUZXN0T3ZlcnJpZGVCdWlsdGlucy5oIgog
I2luY2x1ZGUgIkpTVGVzdFBsdWdpbkludGVyZmFjZS5oIgpAQCAtMzE1LDM0ICszMTgsMTc4IEBA
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0V28KIGJvb2wgc2V0SlNUZXN0
R2xvYmFsT2JqZWN0V29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdFdvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVj
dG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3Bl
cnR5TmFtZSk7CiBib29sIHNldEpTVGVzdEdsb2JhbE9iamVjdFdvcmtsZXRHbG9iYWxTY29wZUNv
bnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6
OkVuY29kZWRKU1ZhbHVlKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0
RE9NV2luZG93Q29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpT
VmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKK2Jvb2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0RE9N
V2luZG93Q29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFs
dWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RHbG9i
YWxPYmplY3REZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yKEpTQzo6SlNHbG9i
YWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Citib29s
IHNldEpTVGVzdEdsb2JhbE9iamVjdERlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0
b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUpOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RQYWludFdv
cmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVu
Y29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Citib29sIHNldEpTVGVzdEdsb2JhbE9i
amVjdFBhaW50V29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVj
dCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVDb25z
dHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQ
cm9wZXJ0eU5hbWUpOworYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RTZXJ2aWNlV29ya2VyR2xv
YmFsU2NvcGVDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNW
YWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CitKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEds
b2JhbE9iamVjdFRlc3RDRVJlYWN0aW9uc0NvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3Qq
LCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Citib29sIHNldEpTVGVz
dEdsb2JhbE9iamVjdFRlc3RDRVJlYWN0aW9uc0NvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmpl
Y3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK0pTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0VGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXJD
b25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlND
OjpQcm9wZXJ0eU5hbWUpOworYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0Q0VSZWFjdGlv
bnNTdHJpbmdpZmllckNvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29k
ZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0R2xvYmFsT2JqZWN0VGVzdENhbGxUcmFjZXJDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOworYm9vbCBzZXRK
U1Rlc3RHbG9iYWxPYmplY3RUZXN0Q2FsbFRyYWNlckNvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxP
YmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKKyNpZiBF
TkFCTEUoVEVTVF9DT05ESVRJT05BTCkKK0pTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFs
T2JqZWN0VGVzdENhbGxiYWNrSW50ZXJmYWNlQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVj
dCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKK2Jvb2wgc2V0SlNU
ZXN0R2xvYmFsT2JqZWN0VGVzdENhbGxiYWNrSW50ZXJmYWNlQ29uc3RydWN0b3IoSlNDOjpKU0ds
b2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwor
I2VuZGlmCitKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdFRlc3RDbGFzc1dp
dGhKU0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBK
U0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Citib29sIHNldEpTVGVzdEds
b2JhbE9iamVjdFRlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9yKEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1Zh
bHVlKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0VGVzdERPTUpJVENv
bnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6
OlByb3BlcnR5TmFtZSk7Citib29sIHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RET01KSVRDb25z
dHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpF
bmNvZGVkSlNWYWx1ZSk7CitKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdFRl
c3REb21haW5TZWN1cml0eUNvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVu
Y29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Citib29sIHNldEpTVGVzdEdsb2JhbE9i
amVjdFRlc3REb21haW5TZWN1cml0eUNvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBK
U0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK0pTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0R2xvYmFsT2JqZWN0VGVzdEVuYWJsZWRCeVNldHRpbmdDb25zdHJ1Y3RvcihK
U0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5h
bWUpOworYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0RW5hYmxlZEJ5U2V0dGluZ0NvbnN0
cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVu
Y29kZWRKU1ZhbHVlKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0VGVz
dEVuYWJsZWRGb3JDb250ZXh0Q29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6
RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKK2Jvb2wgc2V0SlNUZXN0R2xvYmFs
T2JqZWN0VGVzdEVuYWJsZWRGb3JDb250ZXh0Q29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVj
dCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RUZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVj
dG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3Bl
cnR5TmFtZSk7Citib29sIHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RFdmVudENvbnN0cnVjdG9y
Q29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpT
Qzo6RW5jb2RlZEpTVmFsdWUpOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmpl
Y3RUZXN0RXZlbnRUYXJnZXRDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpF
bmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOworYm9vbCBzZXRKU1Rlc3RHbG9iYWxP
YmplY3RUZXN0RXZlbnRUYXJnZXRDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlND
OjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CitKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdEdsb2JhbE9iamVjdFRlc3RFeGNlcHRpb25Db25zdHJ1Y3RvcihKU0M6OkpTR2xv
YmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOworYm9v
bCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0RXhjZXB0aW9uQ29uc3RydWN0b3IoSlNDOjpKU0ds
b2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwor
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RUZXN0R2VuZXJhdGVJc1JlYWNo
YWJsZUNvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVl
LCBKU0M6OlByb3BlcnR5TmFtZSk7Citib29sIHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RHZW5l
cmF0ZUlzUmVhY2hhYmxlQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5j
b2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RHbG9iYWxPYmplY3RUZXN0R2xvYmFsT2JqZWN0Q29uc3RydWN0b3IoSlNDOjpKU0dsb2Jh
bE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKK2Jvb2wg
c2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdEdsb2JhbE9iamVjdENvbnN0cnVjdG9yKEpTQzo6SlNH
bG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsK
K0pTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0VGVzdEluZGV4ZWRTZXR0ZXJO
b0lkZW50aWZpZXJDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVk
SlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOworYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RU
ZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllckNvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmpl
Y3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK0pTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0VGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4
Y2VwdGlvbkNvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1Zh
bHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Citib29sIHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RJ
bmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb25Db25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CitKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdFRlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50
aWZpZXJDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1
ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOworYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0SW5k
ZXhlZFNldHRlcldpdGhJZGVudGlmaWVyQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCos
IEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworI2lmIEVOQUJMRShD
b25kaXRpb24xKSB8fCBFTkFCTEUoQ29uZGl0aW9uMikKK0pTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0R2xvYmFsT2JqZWN0VGVzdEludGVyZmFjZUNvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmpl
Y3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Citib29sIHNldEpT
VGVzdEdsb2JhbE9iamVjdFRlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CisjZW5kaWYK
K0pTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0VGVzdEludGVyZmFjZUxlYWRp
bmdVbmRlcnNjb3JlQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKK2Jvb2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0
VGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9i
amVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RUZXN0SXRlcmFibGVDb25zdHJ1Y3RvcihK
U0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5h
bWUpOworYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0SXRlcmFibGVDb25zdHJ1Y3RvcihK
U0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNW
YWx1ZSk7CitKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdFRlc3RKU0J1aWx0
aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29k
ZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Citib29sIHNldEpTVGVzdEdsb2JhbE9iamVj
dFRlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3Qq
LCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK0pTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0VGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbkNvbnN0
cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlBy
b3BlcnR5TmFtZSk7Citib29sIHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RMZWdhY3lGYWN0b3J5
RnVuY3Rpb25Db25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNW
YWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CitKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEds
b2JhbE9iamVjdEF1ZGlvQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5j
b2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKK2Jvb2wgc2V0SlNUZXN0R2xvYmFsT2Jq
ZWN0QXVkaW9Db25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNW
YWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CitKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEds
b2JhbE9iamVjdFRlc3RNYXBMaWtlQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpT
Qzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKK2Jvb2wgc2V0SlNUZXN0R2xv
YmFsT2JqZWN0VGVzdE1hcExpa2VDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlND
OjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CitKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZp
ZXJDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwg
SlNDOjpQcm9wZXJ0eU5hbWUpOworYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRB
bmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVj
dCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhy
b3dpbmdFeGNlcHRpb25Db25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOworYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmpl
Y3RUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb25Db25zdHJ1Y3RvcihK
U0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNW
YWx1ZSk7CitKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZEFu
ZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllckNvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmpl
Y3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Citib29sIHNldEpT
VGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllckNv
bnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6
OkVuY29kZWRKU1ZhbHVlKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0
VGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllckNvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmpl
Y3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Citib29sIHNldEpT
VGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXJDb25zdHJ1Y3RvcihK
U0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNW
YWx1ZSk7CitKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZERl
bGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbkNvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBK
U0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Citib29sIHNldEpTVGVzdEds
b2JhbE9iamVjdFRlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbkNvbnN0cnVjdG9yKEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1Zh
bHVlKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkRGVs
ZXRlcldpdGhJZGVudGlmaWVyQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6
RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKK2Jvb2wgc2V0SlNUZXN0R2xvYmFs
T2JqZWN0VGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyQ29uc3RydWN0b3IoSlNDOjpKU0ds
b2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwor
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWREZWxldGVyV2l0
aEluZGV4ZWRHZXR0ZXJDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOworYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmpl
Y3RUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXJDb25zdHJ1Y3RvcihKU0M6OkpTR2xv
YmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CitK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZEdldHRlckNhbGxX
aXRoQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUs
IEpTQzo6UHJvcGVydHlOYW1lKTsKK2Jvb2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVk
R2V0dGVyQ2FsbFdpdGhDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CitKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllckNvbnN0cnVjdG9yKEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFt
ZSk7Citib29sIHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZEdldHRlck5vSWRlbnRpZmll
ckNvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBK
U0M6OkVuY29kZWRKU1ZhbHVlKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2Jq
ZWN0VGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXJDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFs
T2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOworYm9vbCBz
ZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllckNvbnN0cnVj
dG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29k
ZWRKU1ZhbHVlKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0VGVzdE5h
bWVkU2V0dGVyTm9JZGVudGlmaWVyQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpT
Qzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKK2Jvb2wgc2V0SlNUZXN0R2xv
YmFsT2JqZWN0VGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyQ29uc3RydWN0b3IoSlNDOjpKU0ds
b2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwor
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJUaHJv
d2luZ0V4Y2VwdGlvbkNvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29k
ZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Citib29sIHNldEpTVGVzdEdsb2JhbE9iamVj
dFRlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uQ29uc3RydWN0b3IoSlNDOjpKU0dsb2Jh
bE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRoSWRl
bnRpZmllckNvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1Zh
bHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Citib29sIHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RO
YW1lZFNldHRlcldpdGhJZGVudGlmaWVyQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCos
IEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRl
ckNvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBK
U0M6OlByb3BlcnR5TmFtZSk7Citib29sIHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZFNl
dHRlcldpdGhJbmRleGVkR2V0dGVyQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpT
Qzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFu
ZFNldHRlckNvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1Zh
bHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Citib29sIHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RO
YW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyQ29uc3RydWN0b3IoSlNDOjpKU0ds
b2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwor
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRo
T3ZlcnJpZGVCdWlsdGluc0NvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVu
Y29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Citib29sIHNldEpTVGVzdEdsb2JhbE9i
amVjdFRlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3IoSlNDOjpK
U0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUp
OworSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJX
aXRoVW5mb3JnYWJsZVByb3BlcnRpZXNDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0Kiwg
SlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOworYm9vbCBzZXRKU1Rlc3RH
bG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNDb25zdHJ1
Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSk7CitKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdFRlc3RO
YW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnNDb25z
dHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQ
cm9wZXJ0eU5hbWUpOworYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJX
aXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3IoSlND
OjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFs
dWUpOworI2lmIEVOQUJMRShDb25kaXRpb25EZXJpdmVkKQorSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RHbG9iYWxPYmplY3RUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWxDb25zdHJ1Y3RvcihKU0M6
OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUp
OworYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWxDb25z
dHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpF
bmNvZGVkSlNWYWx1ZSk7CisjZW5kaWYKK0pTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFs
T2JqZWN0VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFs
T2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOworYm9vbCBz
ZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9y
KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRK
U1ZhbHVlKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0VGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2VDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOworYm9vbCBzZXRK
U1Rlc3RHbG9iYWxPYmplY3RUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZUNv
bnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6
OkVuY29kZWRKU1ZhbHVlKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0
VGVzdE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlND
OjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOworYm9vbCBzZXRKU1Rlc3RHbG9i
YWxPYmplY3RUZXN0T3ZlcnJpZGVCdWlsdGluc0NvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmpl
Y3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK0pTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0VGVzdFBsdWdpbkludGVyZmFjZUNvbnN0cnVj
dG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3Bl
cnR5TmFtZSk7Citib29sIHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RQbHVnaW5JbnRlcmZhY2VD
b25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlND
OjpFbmNvZGVkSlNWYWx1ZSk7CitKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVj
dFRlc3RSZWFkT25seU1hcExpa2VDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlND
OjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOworYm9vbCBzZXRKU1Rlc3RHbG9i
YWxPYmplY3RUZXN0UmVhZE9ubHlNYXBMaWtlQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVj
dCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RUZXN0UmVhZE9ubHlTZXRMaWtlQ29uc3RydWN0
b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVy
dHlOYW1lKTsKK2Jvb2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdFJlYWRPbmx5U2V0TGlrZUNv
bnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6
OkVuY29kZWRKU1ZhbHVlKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0
VGVzdFJlcG9ydEV4dHJhTWVtb3J5Q29zdENvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3Qq
LCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Citib29sIHNldEpTVGVz
dEdsb2JhbE9iamVjdFRlc3RSZXBvcnRFeHRyYU1lbW9yeUNvc3RDb25zdHJ1Y3RvcihKU0M6OkpT
R2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7
CitKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdFRlc3RTZXJpYWxpemF0aW9u
Q29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpT
Qzo6UHJvcGVydHlOYW1lKTsKK2Jvb2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdFNlcmlhbGl6
YXRpb25Db25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1
ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CitKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEdsb2Jh
bE9iamVjdFRlc3RTZXJpYWxpemF0aW9uSW5kaXJlY3RJbmhlcml0YW5jZUNvbnN0cnVjdG9yKEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFt
ZSk7Citib29sIHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RTZXJpYWxpemF0aW9uSW5kaXJlY3RJ
bmhlcml0YW5jZUNvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRK
U1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
R2xvYmFsT2JqZWN0VGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0Q29uc3RydWN0b3IoSlNDOjpKU0ds
b2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKK2Jv
b2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0Q29uc3RydWN0
b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUpOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RUZXN0U2Vy
aWFsaXphdGlvbkluaGVyaXRGaW5hbENvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBK
U0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Citib29sIHNldEpTVGVzdEds
b2JhbE9iamVjdFRlc3RTZXJpYWxpemF0aW9uSW5oZXJpdEZpbmFsQ29uc3RydWN0b3IoSlNDOjpK
U0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUp
OworI2lmIEVOQUJMRShDb25kaXRpb24xKSB8fCBFTkFCTEUoQ29uZGl0aW9uMikKK0pTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlu
dGVyZmFjZUNvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1Zh
bHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Citib29sIHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CisjZW5kaWYK
K0pTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0VGVzdFNldExpa2VDb25zdHJ1
Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9w
ZXJ0eU5hbWUpOworYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0U2V0TGlrZUNvbnN0cnVj
dG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29k
ZWRKU1ZhbHVlKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0VGVzdFN0
cmluZ2lmaWVyQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpT
VmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKK2Jvb2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVz
dFN0cmluZ2lmaWVyQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RHbG9iYWxPYmplY3RUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb25Db25zdHJ1Y3Rv
cihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0
eU5hbWUpOworYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0U3RyaW5naWZpZXJBbm9ueW1v
dXNPcGVyYXRpb25Db25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVk
SlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CitKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dEdsb2JhbE9iamVjdFRlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uQ29uc3RydWN0b3IoSlND
OjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1l
KTsKK2Jvb2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRp
b25Db25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwg
SlNDOjpFbmNvZGVkSlNWYWx1ZSk7CitKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEdsb2JhbE9i
amVjdFRlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXNDb25zdHJ1Y3RvcihKU0M6
OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUp
OworYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBs
ZW1lbnRlZEFzQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpT
VmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RH
bG9iYWxPYmplY3RUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nQ29uc3RydWN0
b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVy
dHlOYW1lKTsKK2Jvb2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdFN0cmluZ2lmaWVyT3BlcmF0
aW9uTmFtZWRUb1N0cmluZ0NvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVu
Y29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0R2xvYmFsT2JqZWN0VGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGVDb25zdHJ1
Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9w
ZXJ0eU5hbWUpOworYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0U3RyaW5naWZpZXJSZWFk
T25seUF0dHJpYnV0ZUNvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29k
ZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0R2xvYmFsT2JqZWN0VGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlQ29uc3RydWN0
b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVy
dHlOYW1lKTsKK2Jvb2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdFN0cmluZ2lmaWVyUmVhZFdy
aXRlQXR0cmlidXRlQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RHbG9iYWxPYmplY3RUZXN0VHlwZWRlZnNDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0
KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOworYm9vbCBzZXRKU1Rl
c3RHbG9iYWxPYmplY3RUZXN0VHlwZWRlZnNDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0
KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CitKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdFdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3Io
SlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlO
YW1lKTsKK2Jvb2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0V29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1
Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSk7CitKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdFdvcmts
ZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29k
ZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Citib29sIHNldEpTVGVzdEdsb2JhbE9iamVj
dFdvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6
OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIAogdXNpbmcgSlNUZXN0R2xv
YmFsT2JqZWN0Q29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxK
U1Rlc3RHbG9iYWxPYmplY3Q+OwogCiAvKiBIYXNoIHRhYmxlICovCiAKLXN0YXRpYyBjb25zdCBz
dHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1Rlc3RHbG9iYWxPYmplY3RUYWJsZUluZGV4WzI2OF0g
PSB7CitzdGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNUZXN0R2xvYmFsT2Jq
ZWN0VGFibGVJbmRleFs1ODldID0gewogICAgIHsgLTEsIC0xIH0sCi0gICAgeyA0MCwgLTEgfSwK
ICAgICB7IC0xLCAtMSB9LAotICAgIHsgMCwgLTEgfSwKLSAgICB7IDgsIDI2MyB9LAotICAgIHsg
NDQsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0x
IH0sCisgICAgeyA0NCwgNTYyIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAog
ICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDU0LCAtMSB9LAogICAgIHsg
LTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgMjMsIC0x
IH0sCisgICAgeyA1NCwgNTcyIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAog
ICAgIHsgLTEsIC0xIH0sCi0gICAgeyA2NiwgLTEgfSwKKyAgICB7IDIzLCA1NDIgfSwKICAgICB7
IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKQEAgLTM1NiwxNCAr
NTAzLDI3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1QKICAgICB7
IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDM0LCAt
MSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAog
ICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDcxLCAtMSB9LAotICAgIHsg
MTMsIDI1OCB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAt
MSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAor
ICAgIHsgMzksIDU1NyB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7
IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAt
MSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IDk1LCAtMSB9LAog
ICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LApAQCAtMzcx
LDMzICs1MzEsMzAgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTVAog
ICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsg
MzgsIC0xIH0sCi0gICAgeyAyMCwgMjY0IH0sCi0gICAgeyAxMCwgLTEgfSwKICAgICB7IC0xLCAt
MSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAor
ICAgIHsgMzYsIDU1NCB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7
IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAt
MSB9LAotICAgIHsgMzYsIC0xIH0sCisgICAgeyAyMiwgNTE5IH0sCiAgICAgeyAtMSwgLTEgfSwK
ICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7
IC0xLCAtMSB9LAorICAgIHsgOSwgNTI4IH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDIyLCAy
NjUgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwK
ICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyA5LCAtMSB9LAogICAgIHsg
LTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LApAQCAtNDA2LDQ3ICs1
NjMsNDEgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTVAogICAgIHsg
LTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgNjAsIC0x
IH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAg
ICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyAy
NCwgMjU2IH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDYxLCAtMSB9LAotICAgIHsgMTksIC0x
IH0sCisgICAgeyA0NiwgNTY0IH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAot
ICAgIHsgNDYsIC0xIH0sCi0gICAgeyAxOCwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsg
LTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgMzUsIC0x
IH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgNCwgLTEgfSwKICAg
ICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDUw
LCAtMSB9LAotICAgIHsgMjUsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDIsIDI2NyB9
LAotICAgIHsgMzcsIC0xIH0sCisgICAgeyA1MCwgNTY4IH0sCisgICAgeyAyNSwgNTQ0IH0sCiAg
ICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAorICAgIHsgMzcsIDU1NSB9LAorICAgIHsg
LTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgMjEsIDU0
MCB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyAyMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAog
ICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsg
LTEsIC0xIH0sCi0gICAgeyA1OCwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0x
IH0sCiAgICAgeyAtMSwgLTEgfSwKQEAgLTQ1NSwxNSArNjA2LDIwIEBAIHN0YXRpYyBjb25zdCBz
dHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1QKICAgICB7IDMxLCAtMSB9LAogICAgIHsgLTEsIC0x
IH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDQyLCAtMSB9LAorICAgIHsgNDIsIDU2MCB9LAor
ICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsg
LTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IDUzLCA1NzEgfSwKICAgICB7IC0xLCAt
MSB9LAorICAgIHsgMTQsIDUzMyB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwK
ICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyA1MywgLTEgfSwKICAgICB7
IC0xLCAtMSB9LAotICAgIHsgMTQsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAt
MSB9LAogICAgIHsgLTEsIC0xIH0sCkBAIC00NzQsMjkgKzYzMCwyNSBAQCBzdGF0aWMgY29uc3Qg
c3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNUCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAt
MSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyA2LCAtMSB9LAorICAgIHsgNjcsIDU4NSB9LAog
ICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsg
LTEsIC0xIH0sCi0gICAgeyA2NywgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0x
IH0sCisgICAgeyA1LCA1MjQgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgMzIsIC0xIH0sCi0g
ICAgeyAyOSwgMjYyIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDUsIC0xIH0sCiAgICAgeyAt
MSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEg
fSwKICAgICB7IC0xLCAtMSB9LAorICAgIHsgMTYsIDUzNSB9LAogICAgIHsgLTEsIC0xIH0sCiAg
ICAgeyAtMSwgLTEgfSwKLSAgICB7IDE2LCAyNTcgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsg
NjIsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0x
IH0sCkBAIC01MDUsMTEgKzY1Nyw5IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJ
bmRleCBKU1QKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEg
fSwKLSAgICB7IDMzLCAyNjYgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgMTcsIC0xIH0sCisg
ICAgeyAxNywgNTM2IH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDY1LCAtMSB9LAogICAgIHsg
LTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LApAQCAtNTIzLDE1ICs2
NzMsMTYgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTVAogICAgIHsg
LTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgNzAsIC0x
IH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAg
ICAgeyAtMSwgLTEgfSwKLSAgICB7IDU2LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAt
MSwgLTEgfSwKLSAgICB7IDMsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9
LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAzLCA1MjIgfSwKICAgICB7IC0xLCAtMSB9LAogICAg
IHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKQEAgLTU0NSw0MzUgKzY5NiwyNDU0IEBAIHN0
YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1QKICAgICB7IC0xLCAtMSB9LAog
ICAgIHsgMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgMTIsIC0xIH0sCisgICAgeyAx
MiwgNTMxIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0x
IH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDQ4LCAyNjEgfSwKLSAgICB7IDExLCAyNjAgfSwK
KyAgICB7IDQ4LCA1MTUgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgNjMsIC0xIH0sCiAgICAg
eyAtMSwgLTEgfSwKLSAgICB7IDQ3LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwg
LTEgfSwKKyAgICB7IDQ3LCA1NjUgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0s
Ci0gICAgeyAxNSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgMjYsIC0xIH0sCiAgICAg
eyAtMSwgLTEgfSwKKyAgICB7IDE1LCA1MzQgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgMjgs
IC0xIH0sCisgICAgeyAyNiwgNTQ1IH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9
LAotICAgIHsgNDUsIC0xIH0sCi0gICAgeyA3LCAtMSB9LAotICAgIHsgNTEsIC0xIH0sCisgICAg
eyAyOCwgNTQ4IH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDUyLCAtMSB9LAogICAgIHsgLTEs
IC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0s
Ci0gICAgeyAyNywgMjU5IH0sCi0gICAgeyAzMCwgLTEgfSwKLSAgICB7IDM5LCAtMSB9LAotICAg
IHsgNDEsIC0xIH0sCi0gICAgeyA0MywgLTEgfSwKLSAgICB7IDQ5LCAtMSB9LAotICAgIHsgNTUs
IC0xIH0sCi0gICAgeyA1NywgLTEgfSwKLSAgICB7IDU5LCAtMSB9LAotICAgIHsgNjQsIC0xIH0s
Ci0gICAgeyA2OCwgLTEgfSwKLSAgICB7IDY5LCAtMSB9LAotfTsKLQotCi1zdGF0aWMgY29uc3Qg
SGFzaFRhYmxlVmFsdWUgSlNUZXN0R2xvYmFsT2JqZWN0VGFibGVWYWx1ZXNbXSA9Ci17Ci0gICAg
eyAicmVndWxhckF0dHJpYnV0ZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0
dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNs
b3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0UmVndWxhckF0dHJpYnV0ZSksIChp
bnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpT
VGVzdEdsb2JhbE9iamVjdFJlZ3VsYXJBdHRyaWJ1dGUpIH0gfSwKLSAgICB7ICJwdWJsaWNBbmRQ
cml2YXRlQXR0cmlidXRlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkN1c3RvbUFjY2Vzc29yKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RQdWJsaWNB
bmRQcml2YXRlQXR0cmlidXRlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNs
b3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0R2xvYmFsT2JqZWN0UHVibGljQW5kUHJpdmF0ZUF0
dHJpYnV0ZSkgfSB9LAotI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCi0gICAgeyAicHVibGljQW5k
UHJpdmF0ZUNvbmRpdGlvbmFsQXR0cmlidXRlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0
cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxP
YmplY3RQdWJsaWNBbmRQcml2YXRlQ29uZGl0aW9uYWxBdHRyaWJ1dGUpLCAoaW50cHRyX3QpIHN0
YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RHbG9iYWxP
YmplY3RQdWJsaWNBbmRQcml2YXRlQ29uZGl0aW9uYWxBdHRyaWJ1dGUpIH0gfSwKLSNlbHNlCi0g
ICAgeyAwLCAwLCBOb0ludHJpbnNpYywgeyAwLCAwIH0gfSwKLSNlbmRpZgotICAgIHsgIkRPTVdp
bmRvdyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6
OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0RE9NV2luZG93Q29uc3RydWN0b3IpLCAo
aW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRK
U1Rlc3RHbG9iYWxPYmplY3RET01XaW5kb3dDb25zdHJ1Y3RvcikgfSB9LAotICAgIHsgIkRlZGlj
YXRlZFdvcmtlckdsb2JhbFNjb3BlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3REZWRpY2F0
ZWRXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQ
dXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0R2xvYmFsT2JqZWN0RGVkaWNh
dGVkV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcikgfSB9LAotICAgIHsgIlBhaW50V29ya2xl
dEdsb2JhbFNjb3BlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RQYWludFdvcmtsZXRHbG9i
YWxTY29wZUNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNs
b3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0R2xvYmFsT2JqZWN0UGFpbnRXb3JrbGV0R2xvYmFs
U2NvcGVDb25zdHJ1Y3RvcikgfSB9LAotICAgIHsgIlNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSIs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSks
IE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZh
bHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0U2VydmljZVdvcmtlckdsb2JhbFNjb3BlQ29uc3Ry
dWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPihzZXRKU1Rlc3RHbG9iYWxPYmplY3RTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1
Y3RvcikgfSB9LAotICAgIHsgIlRlc3RDRVJlYWN0aW9ucyIsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFs
T2JqZWN0VGVzdENFUmVhY3Rpb25zQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0
PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0
Q0VSZWFjdGlvbnNDb25zdHJ1Y3RvcikgfSB9LAotICAgIHsgIlRlc3RDRVJlYWN0aW9uc1N0cmlu
Z2lmaWVyIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xv
dDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RUZXN0Q0VSZWFjdGlvbnNTdHJpbmdp
ZmllckNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6
OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdENFUmVhY3Rpb25zU3RyaW5n
aWZpZXJDb25zdHJ1Y3RvcikgfSB9LAotICAgIHsgIlRlc3RDYWxsVHJhY2VyIiwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihq
c1Rlc3RHbG9iYWxPYmplY3RUZXN0Q2FsbFRyYWNlckNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBz
dGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0R2xvYmFs
T2JqZWN0VGVzdENhbGxUcmFjZXJDb25zdHJ1Y3RvcikgfSB9LAotI2lmIEVOQUJMRShURVNUX0NP
TkRJVElPTkFMKQotICAgIHsgIlRlc3RDYWxsYmFja0ludGVyZmFjZSIsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0
R2xvYmFsT2JqZWN0VGVzdENhbGxiYWNrSW50ZXJmYWNlQ29uc3RydWN0b3IpLCAoaW50cHRyX3Qp
IHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RHbG9i
YWxPYmplY3RUZXN0Q2FsbGJhY2tJbnRlcmZhY2VDb25zdHJ1Y3RvcikgfSB9LAotI2Vsc2UKLSAg
ICB7IDAsIDAsIE5vSW50cmluc2ljLCB7IDAsIDAgfSB9LAotI2VuZGlmCi0gICAgeyAiVGVzdENs
YXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0
YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RU
ZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkg
c3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdEdsb2Jh
bE9iamVjdFRlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9yKSB9IH0s
Ci0gICAgeyAiVGVzdERPTUpJVCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2Fz
dDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0VGVzdERPTUpJ
VENvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1
dFZhbHVlRnVuYz4oc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdERPTUpJVENvbnN0cnVjdG9yKSB9
IH0sCi0gICAgeyAiVGVzdERvbWFpblNlY3VyaXR5Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90
KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmpl
Y3RUZXN0RG9tYWluU2VjdXJpdHlDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8
UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RE
b21haW5TZWN1cml0eUNvbnN0cnVjdG9yKSB9IH0sCi0gICAgeyAiVGVzdEVuYWJsZWRCeVNldHRp
bmciLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpH
ZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdFRlc3RFbmFibGVkQnlTZXR0aW5nQ29uc3Ry
dWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPihzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0RW5hYmxlZEJ5U2V0dGluZ0NvbnN0cnVjdG9y
KSB9IH0sCi0gICAgeyAiVGVzdEV2ZW50Q29uc3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50
cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2Jh
bE9iamVjdFRlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRp
Y19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RHbG9iYWxPYmpl
Y3RUZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yKSB9IH0sCi0gICAgeyAiVGVzdEV2ZW50
VGFyZ2V0Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xv
dDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RUZXN0RXZlbnRUYXJnZXRDb25zdHJ1
Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1
bmM+KHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RFdmVudFRhcmdldENvbnN0cnVjdG9yKSB9IH0s
Ci0gICAgeyAiVGVzdEV4Y2VwdGlvbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNf
Y2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0VGVzdEV4
Y2VwdGlvbkNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNs
b3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdEV4Y2VwdGlvbkNvbnN0
cnVjdG9yKSB9IH0sCi0gICAgeyAiVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUiLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpz
VGVzdEdsb2JhbE9iamVjdFRlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlQ29uc3RydWN0b3IpLCAoaW50
cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rl
c3RHbG9iYWxPYmplY3RUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZUNvbnN0cnVjdG9yKSB9IH0sCi0g
ICAgeyAiVGVzdEdsb2JhbE9iamVjdCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNf
Y2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0VGVzdEds
b2JhbE9iamVjdENvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0
eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdEdsb2JhbE9iamVj
dENvbnN0cnVjdG9yKSB9IH0sCi0gICAgeyAiVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIi
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0p
LCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRW
YWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdFRlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVy
Q29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0
VmFsdWVGdW5jPihzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRp
ZmllckNvbnN0cnVjdG9yKSB9IH0sCi0gICAgeyAiVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4
Y2VwdGlvbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNs
b3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0VGVzdEluZGV4ZWRTZXR0ZXJUaHJv
d2luZ0V4Y2VwdGlvbkNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9w
ZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdEluZGV4ZWRT
ZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbkNvbnN0cnVjdG9yKSB9IH0sCi0gICAgeyAiVGVzdEluZGV4
ZWRTZXR0ZXJXaXRoSWRlbnRpZmllciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNf
Y2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0VGVzdElu
ZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllckNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNf
Y2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0R2xvYmFsT2JqZWN0
VGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllckNvbnN0cnVjdG9yKSB9IH0sCi0jaWYgRU5B
QkxFKENvbmRpdGlvbjEpIHx8IEVOQUJMRShDb25kaXRpb24yKQotICAgIHsgIlRlc3RJbnRlcmZh
Y2UiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpH
ZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdFRlc3RJbnRlcmZhY2VDb25zdHJ1Y3Rvciks
IChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNl
dEpTVGVzdEdsb2JhbE9iamVjdFRlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvcikgfSB9LAotI2Vsc2UK
LSAgICB7IDAsIDAsIE5vSW50cmluc2ljLCB7IDAsIDAgfSB9LAotI2VuZGlmCi0gICAgeyAiVGVz
dEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0
YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RU
ZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmVDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3Rh
dGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdEdsb2JhbE9i
amVjdFRlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZUNvbnN0cnVjdG9yKSB9IH0sCi0gICAg
eyAiVGVzdEl0ZXJhYmxlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFBy
b3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RUZXN0SXRlcmFibGVD
b25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRW
YWx1ZUZ1bmM+KHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RJdGVyYWJsZUNvbnN0cnVjdG9yKSB9
IH0sCi0gICAgeyAiVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGlu
dHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9i
YWxPYmplY3RUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkg
c3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdEdsb2Jh
bE9iamVjdFRlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9yKSB9IH0sCi0gICAgeyAi
VGVzdE1hcExpa2UiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdFRlc3RNYXBMaWtlQ29uc3Ry
dWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPihzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0TWFwTGlrZUNvbnN0cnVjdG9yKSB9IH0sCi0g
ICAgeyAiVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllciIsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2lj
LCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNU
ZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllckNvbnN0
cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVl
RnVuYz4oc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRl
bnRpZmllckNvbnN0cnVjdG9yKSB9IH0sCi0gICAgeyAiVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRl
clRocm93aW5nRXhjZXB0aW9uIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0
PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRB
bmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb25Db25zdHJ1Y3RvciksIChpbnRwdHJfdCkg
c3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdEdsb2Jh
bE9iamVjdFRlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbkNvbnN0cnVj
dG9yKSB9IH0sCi0gICAgeyAiVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVy
Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
KSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0
VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0
aElkZW50aWZpZXJDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVy
dHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZEFuZElu
ZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllckNvbnN0cnVjdG9yKSB9IH0sCi0gICAgeyAiVGVzdE5h
bWVkQ29uc3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJv
cGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZENvbnN0
cnVjdG9yQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xv
dDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRDb25zdHJ1Y3Rv
ckNvbnN0cnVjdG9yKSB9IH0sCi0gICAgeyAiQXVkaW8iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9i
amVjdEF1ZGlvQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5
U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RHbG9iYWxPYmplY3RBdWRpb0NvbnN0cnVjdG9y
KSB9IH0sCi0gICAgeyAiVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllciIsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2lj
LCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNU
ZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllckNvbnN0cnVjdG9yKSwg
KGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0
SlNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllckNvbnN0cnVjdG9y
KSB9IH0sCi0gICAgeyAiVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uIiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
Pihqc1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb25Db25z
dHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1
ZUZ1bmM+KHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2Vw
dGlvbkNvbnN0cnVjdG9yKSB9IH0sCi0gICAgeyAiVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlm
aWVyIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6
R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWREZWxldGVyV2l0aElkZW50
aWZpZXJDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90
OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZERlbGV0ZXJXaXRo
SWRlbnRpZmllckNvbnN0cnVjdG9yKSB9IH0sCi0gICAgeyAiVGVzdE5hbWVkRGVsZXRlcldpdGhJ
bmRleGVkR2V0dGVyIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWREZWxldGVy
V2l0aEluZGV4ZWRHZXR0ZXJDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0
UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1l
ZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlckNvbnN0cnVjdG9yKSB9IH0sCi0gICAgeyAiVGVzdE5h
bWVkR2V0dGVyQ2FsbFdpdGgiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZEdl
dHRlckNhbGxXaXRoQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3Bl
cnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRHZXR0
ZXJDYWxsV2l0aENvbnN0cnVjdG9yKSB9IH0sCi0gICAgeyAiVGVzdE5hbWVkR2V0dGVyTm9JZGVu
dGlmaWVyIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xv
dDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRHZXR0ZXJOb0lkZW50
aWZpZXJDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90
OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZEdldHRlck5vSWRl
bnRpZmllckNvbnN0cnVjdG9yKSB9IH0sCi0gICAgeyAiVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50
aWZpZXIiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90
OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZEdldHRlcldpdGhJZGVu
dGlmaWVyQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xv
dDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRHZXR0ZXJXaXRo
SWRlbnRpZmllckNvbnN0cnVjdG9yKSB9IH0sCi0gICAgeyAiVGVzdE5hbWVkU2V0dGVyTm9JZGVu
dGlmaWVyIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xv
dDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJOb0lkZW50
aWZpZXJDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90
OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZFNldHRlck5vSWRl
bnRpZmllckNvbnN0cnVjdG9yKSB9IH0sCi0gICAgeyAiVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdF
eGNlcHRpb24iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlT
bG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZFNldHRlclRocm93
aW5nRXhjZXB0aW9uQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3Bl
cnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0
ZXJUaHJvd2luZ0V4Y2VwdGlvbkNvbnN0cnVjdG9yKSB9IH0sCi0gICAgeyAiVGVzdE5hbWVkU2V0
dGVyV2l0aElkZW50aWZpZXIiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZFNl
dHRlcldpdGhJZGVudGlmaWVyQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1
dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFt
ZWRTZXR0ZXJXaXRoSWRlbnRpZmllckNvbnN0cnVjdG9yKSB9IH0sCi0gICAgeyAiVGVzdE5hbWVk
U2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdFRlc3RO
YW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRp
Y19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RHbG9iYWxPYmpl
Y3RUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckNvbnN0cnVjdG9yKSB9IH0sCi0gICAg
eyAiVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIiLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpz
VGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVy
Q29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0
VmFsdWVGdW5jPihzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhl
ZEdldHRlckFuZFNldHRlckNvbnN0cnVjdG9yKSB9IH0sCi0gICAgeyAiVGVzdE5hbWVkU2V0dGVy
V2l0aE92ZXJyaWRlQnVpbHRpbnMiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1l
ZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRp
Y19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RHbG9iYWxPYmpl
Y3RUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGluc0NvbnN0cnVjdG9yKSB9IH0sCi0g
ICAgeyAiVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzIiwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihq
c1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXND
b25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRW
YWx1ZUZ1bmM+KHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdh
YmxlUHJvcGVydGllc0NvbnN0cnVjdG9yKSB9IH0sCi0gICAgeyAiVGVzdE5hbWVkU2V0dGVyV2l0
aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucyIsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0
R2xvYmFsT2JqZWN0VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3Zl
cnJpZGVCdWlsdGluc0NvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9w
ZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkU2V0
dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluc0NvbnN0cnVjdG9y
KSB9IH0sCi0jaWYgRU5BQkxFKENvbmRpdGlvbkRlcml2ZWQpCi0gICAgeyAiVGVzdE9wZXJhdGlv
bkNvbmRpdGlvbmFsIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RUZXN0T3BlcmF0aW9uQ29u
ZGl0aW9uYWxDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlT
bG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RPcGVyYXRpb25Db25k
aXRpb25hbENvbnN0cnVjdG9yKSB9IH0sCi0jZWxzZQotICAgIHsgMCwgMCwgTm9JbnRyaW5zaWMs
IHsgMCwgMCB9IH0sCi0jZW5kaWYKLSAgICB7ICJUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dp
dGhTZXF1ZW5jZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0
eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0VGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnNXaXRoU2VxdWVuY2VDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8
UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlQ29uc3RydWN0b3IpIH0gfSwKLSAgICB7
ICJUZXN0T3ZlcnJpZGVCdWlsdGlucyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNf
Y2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0VGVzdE92
ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJv
cGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RPdmVycmlk
ZUJ1aWx0aW5zQ29uc3RydWN0b3IpIH0gfSwKLSAgICB7ICJUZXN0UGx1Z2luSW50ZXJmYWNlIiwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFs
dWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RUZXN0UGx1Z2luSW50ZXJmYWNlQ29uc3RydWN0b3Ip
LCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihz
ZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0UGx1Z2luSW50ZXJmYWNlQ29uc3RydWN0b3IpIH0gfSwK
LSAgICB7ICJUZXN0UmVhZE9ubHlNYXBMaWtlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0
YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RU
ZXN0UmVhZE9ubHlNYXBMaWtlQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1
dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0UmVh
ZE9ubHlNYXBMaWtlQ29uc3RydWN0b3IpIH0gfSwKLSAgICB7ICJUZXN0UmVhZE9ubHlTZXRMaWtl
Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
KSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0
VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RUZXN0UmVhZE9ubHlTZXRMaWtlQ29uc3RydWN0
b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5j
PihzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0UmVhZE9ubHlTZXRMaWtlQ29uc3RydWN0b3IpIH0g
fSwKLSAgICB7ICJUZXN0UmVwb3J0RXh0cmFNZW1vcnlDb3N0Iiwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGlu
dHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9i
YWxPYmplY3RUZXN0UmVwb3J0RXh0cmFNZW1vcnlDb3N0Q29uc3RydWN0b3IpLCAoaW50cHRyX3Qp
IHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RHbG9i
YWxPYmplY3RUZXN0UmVwb3J0RXh0cmFNZW1vcnlDb3N0Q29uc3RydWN0b3IpIH0gfSwKLSAgICB7
ICJUZXN0U2VyaWFsaXphdGlvbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2Fz
dDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0VGVzdFNlcmlh
bGl6YXRpb25Db25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlT
bG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RTZXJpYWxpemF0aW9u
Q29uc3RydWN0b3IpIH0gfSwKLSAgICB7ICJUZXN0U2VyaWFsaXphdGlvbkluZGlyZWN0SW5oZXJp
dGFuY2UiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90
OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdFRlc3RTZXJpYWxpemF0aW9uSW5kaXJl
Y3RJbmhlcml0YW5jZUNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9w
ZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdFNlcmlhbGl6
YXRpb25JbmRpcmVjdEluaGVyaXRhbmNlQ29uc3RydWN0b3IpIH0gfSwKLSAgICB7ICJUZXN0U2Vy
aWFsaXphdGlvbkluaGVyaXQiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdFRlc3RTZXJpYWxp
emF0aW9uSW5oZXJpdENvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9w
ZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdFNlcmlhbGl6
YXRpb25Jbmhlcml0Q29uc3RydWN0b3IpIH0gfSwKLSAgICB7ICJUZXN0U2VyaWFsaXphdGlvbklu
aGVyaXRGaW5hbCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0
eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0VGVzdFNlcmlhbGl6YXRpb25J
bmhlcml0RmluYWxDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVy
dHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RTZXJpYWxpemF0
aW9uSW5oZXJpdEZpbmFsQ29uc3RydWN0b3IpIH0gfSwKLSNpZiBFTkFCTEUoQ29uZGl0aW9uMSkg
fHwgRU5BQkxFKENvbmRpdGlvbjIpCi0gICAgeyAiVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlu
dGVyZmFjZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNs
b3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0VGVzdFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUludGVyZmFjZUNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9w
ZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNvbnN0cnVjdG9yKSB9IH0sCi0jZWxzZQotICAgIHsgMCwg
MCwgTm9JbnRyaW5zaWMsIHsgMCwgMCB9IH0sCi0jZW5kaWYKLSAgICB7ICJUZXN0U2V0TGlrZSIs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSks
IE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZh
bHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0VGVzdFNldExpa2VDb25zdHJ1Y3RvciksIChpbnRw
dHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVz
dEdsb2JhbE9iamVjdFRlc3RTZXRMaWtlQ29uc3RydWN0b3IpIH0gfSwKLSAgICB7ICJUZXN0U3Ry
aW5naWZpZXIiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlT
bG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdFRlc3RTdHJpbmdpZmllckNvbnN0
cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVl
RnVuYz4oc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdFN0cmluZ2lmaWVyQ29uc3RydWN0b3IpIH0g
fSwKLSAgICB7ICJUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24iLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpz
VGVzdEdsb2JhbE9iamVjdFRlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvbkNvbnN0cnVj
dG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVu
Yz4oc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9u
Q29uc3RydWN0b3IpIH0gfSwKLSAgICB7ICJUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbiIs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSks
IE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZh
bHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0VGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb25D
b25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRW
YWx1ZUZ1bmM+KHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0
aW9uQ29uc3RydWN0b3IpIH0gfSwKLSAgICB7ICJUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBs
ZW1lbnRlZEFzIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RUZXN0U3RyaW5naWZpZXJPcGVy
YXRpb25JbXBsZW1lbnRlZEFzQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1
dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0U3Ry
aW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzQ29uc3RydWN0b3IpIH0gfSwKLSAgICB7ICJU
ZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nIiwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGlu
dHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9i
YWxPYmplY3RUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nQ29uc3RydWN0b3Ip
LCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihz
ZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5n
Q29uc3RydWN0b3IpIH0gfSwKLSAgICB7ICJUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0
ZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51
bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6Okdl
dFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0VGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRy
aWJ1dGVDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90
OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RTdHJpbmdpZmllclJlYWRP
bmx5QXR0cmlidXRlQ29uc3RydWN0b3IpIH0gfSwKLSAgICB7ICJUZXN0U3RyaW5naWZpZXJSZWFk
V3JpdGVBdHRyaWJ1dGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJv
cGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdFRlc3RTdHJpbmdpZmll
clJlYWRXcml0ZUF0dHJpYnV0ZUNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQ
dXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdFN0
cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlQ29uc3RydWN0b3IpIH0gfSwKLSAgICB7ICJUZXN0
VHlwZWRlZnMiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlT
bG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdFRlc3RUeXBlZGVmc0NvbnN0cnVj
dG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVu
Yz4oc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdFR5cGVkZWZzQ29uc3RydWN0b3IpIH0gfSwKLSAg
ICB7ICJXb3JrZXJHbG9iYWxTY29wZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNf
Y2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0V29ya2Vy
R2xvYmFsU2NvcGVDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVy
dHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdEdsb2JhbE9iamVjdFdvcmtlckdsb2JhbFNj
b3BlQ29uc3RydWN0b3IpIH0gfSwKLSAgICB7ICJXb3JrbGV0R2xvYmFsU2NvcGUiLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJp
bnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+
KGpzVGVzdEdsb2JhbE9iamVjdFdvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9yKSwgKGludHB0
cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0
R2xvYmFsT2JqZWN0V29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3IpIH0gfSwKLSAgICB7ICJy
ZWd1bGFyT3BlcmF0aW9uIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJh
d05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uUmVndWxh
ck9wZXJhdGlvbiksIChpbnRwdHJfdCkgKDEpIH0gfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsg
LTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0x
IH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgNDAsIDU1OCB9LAor
ICAgIHsgLTEsIC0xIH0sCisgICAgeyAwLCAtMSB9LAorICAgIHsgOCwgNTE3IH0sCisgICAgeyAt
MSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEg
fSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAg
ICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0x
LCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9
LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IDY2LCA1ODQgfSwKKyAg
ICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0x
LCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9
LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAg
IHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgMzQs
IDU1MiB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9
LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IDE0MCwgLTEgfSwKKyAg
ICB7IDEzLCA1MzIgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAt
MSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEg
fSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgMzgsIDU1NiB9LAorICAgIHsgMjAsIDUxOCB9LAor
ICAgIHsgMTAsIDUyOSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7
IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAt
MSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAor
ICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsg
LTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0x
IH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisg
ICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAt
MSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEg
fSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAg
ICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IDYw
LCA1NzggfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEg
fSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAg
ICB7IDI0LCA1MTIgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgNjEsIDU3OSB9LAorICAgIHsg
MTksIDUzOCB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAt
MSB9LAorICAgIHsgMTgsIDUzNyB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwK
KyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAzNSwgNTUzIH0sCisgICAg
eyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgNCwgNTIzIH0sCisgICAgeyAtMSwg
LTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwK
KyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAyLCA1MjEgfSwKKyAgICB7
IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAt
MSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAor
ICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsg
NTgsIDU3NiB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAt
MSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAor
ICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsg
LTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0x
IH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisg
ICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAt
MSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEg
fSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAg
ICB7IC0xLCAtMSB9LAorICAgIHsgNiwgNTI1IH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0x
LCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9
LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAg
IHsgMzIsIDU0NiB9LAorICAgIHsgMjksIDUxNiB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAt
MSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEg
fSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAg
ICB7IC0xLCAtMSB9LAorICAgIHsgMzAsIDU1MCB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyA2
MiwgNTgwIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0x
IH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisg
ICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgMzMsIDUyMCB9LAorICAgIHsg
LTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgNjUsIDU4
MyB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAor
ICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IDExNywgLTEgfSwKKyAgICB7
IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAt
MSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAor
ICAgIHsgNzAsIDU4OCB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7
IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyA1NiwgNTc0IH0sCisgICAgeyAtMSwg
LTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwK
KyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7
IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAt
MSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAor
ICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsg
LTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0x
IH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IDExLCA1MTQgfSwKKyAgICB7IC0xLCAtMSB9LAor
ICAgIHsgNjMsIDU4MSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7
IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAt
MSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAor
ICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsg
LTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IDQ1LCA1NjMgfSwKKyAgICB7IDcsIDUy
NiB9LAorICAgIHsgNTEsIDU2OSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyA1MiwgNTcwIH0s
CisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAg
eyAtMSwgLTEgfSwKKyAgICB7IDI3LCA1MTMgfSwKKyAgICB7IDQxLCA1NDMgfSwKKyAgICB7IDQz
LCA1MzAgfSwKKyAgICB7IDQ5LCA1NjYgfSwKKyAgICB7IDU1LCA1NDkgfSwKKyAgICB7IDU3LCA1
MjcgfSwKKyAgICB7IDU5LCA1MzkgfSwKKyAgICB7IDY0LCA1NDEgfSwKKyAgICB7IDY4LCA1NTEg
fSwKKyAgICB7IDY5LCA1ODcgfSwKKyAgICB7IDcxLCAtMSB9LAorICAgIHsgNzIsIC0xIH0sCisg
ICAgeyA3MywgLTEgfSwKKyAgICB7IDc0LCAtMSB9LAorICAgIHsgNzUsIC0xIH0sCisgICAgeyA3
NiwgNTc1IH0sCisgICAgeyA3NywgLTEgfSwKKyAgICB7IDc4LCAtMSB9LAorICAgIHsgNzksIDU2
MSB9LAorICAgIHsgODAsIC0xIH0sCisgICAgeyA4MSwgLTEgfSwKKyAgICB7IDgyLCAtMSB9LAor
ICAgIHsgODMsIC0xIH0sCisgICAgeyA4NCwgLTEgfSwKKyAgICB7IDg1LCAtMSB9LAorICAgIHsg
ODYsIC0xIH0sCisgICAgeyA4NywgLTEgfSwKKyAgICB7IDg4LCA1NzcgfSwKKyAgICB7IDg5LCAt
MSB9LAorICAgIHsgOTAsIDU4MiB9LAorICAgIHsgOTEsIC0xIH0sCisgICAgeyA5MiwgNTQ3IH0s
CisgICAgeyA5MywgLTEgfSwKKyAgICB7IDk0LCAtMSB9LAorICAgIHsgOTYsIC0xIH0sCisgICAg
eyA5NywgNTU5IH0sCisgICAgeyA5OCwgLTEgfSwKKyAgICB7IDk5LCA1NzMgfSwKKyAgICB7IDEw
MCwgLTEgfSwKKyAgICB7IDEwMSwgNTg2IH0sCisgICAgeyAxMDIsIC0xIH0sCisgICAgeyAxMDMs
IC0xIH0sCisgICAgeyAxMDQsIC0xIH0sCisgICAgeyAxMDUsIC0xIH0sCisgICAgeyAxMDYsIC0x
IH0sCisgICAgeyAxMDcsIC0xIH0sCisgICAgeyAxMDgsIC0xIH0sCisgICAgeyAxMDksIC0xIH0s
CisgICAgeyAxMTAsIC0xIH0sCisgICAgeyAxMTEsIC0xIH0sCisgICAgeyAxMTIsIC0xIH0sCisg
ICAgeyAxMTMsIC0xIH0sCisgICAgeyAxMTQsIC0xIH0sCisgICAgeyAxMTUsIC0xIH0sCisgICAg
eyAxMTYsIDU2NyB9LAorICAgIHsgMTE4LCAtMSB9LAorICAgIHsgMTE5LCAtMSB9LAorICAgIHsg
MTIwLCAtMSB9LAorICAgIHsgMTIxLCAtMSB9LAorICAgIHsgMTIyLCAtMSB9LAorICAgIHsgMTIz
LCAtMSB9LAorICAgIHsgMTI0LCAtMSB9LAorICAgIHsgMTI1LCAtMSB9LAorICAgIHsgMTI2LCAt
MSB9LAorICAgIHsgMTI3LCAtMSB9LAorICAgIHsgMTI4LCAtMSB9LAorICAgIHsgMTI5LCAtMSB9
LAorICAgIHsgMTMwLCAtMSB9LAorICAgIHsgMTMxLCAtMSB9LAorICAgIHsgMTMyLCAtMSB9LAor
ICAgIHsgMTMzLCAtMSB9LAorICAgIHsgMTM0LCAtMSB9LAorICAgIHsgMTM1LCAtMSB9LAorICAg
IHsgMTM2LCAtMSB9LAorICAgIHsgMTM3LCAtMSB9LAorICAgIHsgMTM4LCAtMSB9LAorICAgIHsg
MTM5LCAtMSB9LAogfTsKIAotc3RhdGljIGNvbnN0IEhhc2hUYWJsZSBKU1Rlc3RHbG9iYWxPYmpl
Y3RUYWJsZSA9IHsgNzIsIDI1NSwgdHJ1ZSwgSlNUZXN0R2xvYmFsT2JqZWN0OjppbmZvKCksIEpT
VGVzdEdsb2JhbE9iamVjdFRhYmxlVmFsdWVzLCBKU1Rlc3RHbG9iYWxPYmplY3RUYWJsZUluZGV4
IH07Ci0vKiBIYXNoIHRhYmxlIGZvciBjb25zdHJ1Y3RvciAqLwogCi1zdGF0aWMgY29uc3QgSGFz
aFRhYmxlVmFsdWUgSlNUZXN0R2xvYmFsT2JqZWN0Q29uc3RydWN0b3JUYWJsZVZhbHVlc1tdID0K
K3N0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RHbG9iYWxPYmplY3RUYWJsZVZhbHVl
c1tdID0KK3sKKyAgICB7ICJyZWd1bGFyQXR0cmlidXRlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RSZWd1bGFy
QXR0cmlidXRlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZh
bHVlRnVuYz4oc2V0SlNUZXN0R2xvYmFsT2JqZWN0UmVndWxhckF0dHJpYnV0ZSkgfSB9LAorICAg
IHsgInB1YmxpY0FuZFByaXZhdGVBdHRyaWJ1dGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IpLCBOb0ludHJpbnNpYywgeyAoaW50
cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2Jh
bE9iamVjdFB1YmxpY0FuZFByaXZhdGVBdHRyaWJ1dGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0
PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RHbG9iYWxPYmplY3RQdWJs
aWNBbmRQcml2YXRlQXR0cmlidXRlKSB9IH0sCisjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKKyAg
ICB7ICJwdWJsaWNBbmRQcml2YXRlQ29uZGl0aW9uYWxBdHRyaWJ1dGUiLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IpLCBOb0ludHJp
bnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+
KGpzVGVzdEdsb2JhbE9iamVjdFB1YmxpY0FuZFByaXZhdGVDb25kaXRpb25hbEF0dHJpYnV0ZSks
IChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNl
dEpTVGVzdEdsb2JhbE9iamVjdFB1YmxpY0FuZFByaXZhdGVDb25kaXRpb25hbEF0dHJpYnV0ZSkg
fSB9LAorI2Vsc2UKKyAgICB7IDAsIDAsIE5vSW50cmluc2ljLCB7IDAsIDAgfSB9LAorI2VuZGlm
CisgICAgeyAiRE9NV2luZG93Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0
PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RET01XaW5kb3dD
b25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRW
YWx1ZUZ1bmM+KHNldEpTVGVzdEdsb2JhbE9iamVjdERPTVdpbmRvd0NvbnN0cnVjdG9yKSB9IH0s
CisgICAgeyAiRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50
cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2Jh
bE9iamVjdERlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3IpLCAoaW50cHRyX3Qp
IHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RHbG9i
YWxPYmplY3REZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yKSB9IH0sCisgICAg
eyAiUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdFBh
aW50V29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0
PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RHbG9iYWxPYmplY3RQYWlu
dFdvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9yKSB9IH0sCisgICAgeyAiU2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RTZXJ2aWNlV29ya2VyR2xv
YmFsU2NvcGVDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlT
bG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdEdsb2JhbE9iamVjdFNlcnZpY2VXb3JrZXJHbG9i
YWxTY29wZUNvbnN0cnVjdG9yKSB9IH0sCisgICAgeyAiVGVzdENFUmVhY3Rpb25zIiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
Pihqc1Rlc3RHbG9iYWxPYmplY3RUZXN0Q0VSZWFjdGlvbnNDb25zdHJ1Y3RvciksIChpbnRwdHJf
dCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdEds
b2JhbE9iamVjdFRlc3RDRVJlYWN0aW9uc0NvbnN0cnVjdG9yKSB9IH0sCisgICAgeyAiVGVzdENF
UmVhY3Rpb25zU3RyaW5naWZpZXIiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdFRlc3RDRVJl
YWN0aW9uc1N0cmluZ2lmaWVyQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1
dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0Q0VS
ZWFjdGlvbnNTdHJpbmdpZmllckNvbnN0cnVjdG9yKSB9IH0sCisgICAgeyAiVGVzdENhbGxUcmFj
ZXIiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpH
ZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdFRlc3RDYWxsVHJhY2VyQ29uc3RydWN0b3Ip
LCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihz
ZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0Q2FsbFRyYWNlckNvbnN0cnVjdG9yKSB9IH0sCisjaWYg
RU5BQkxFKFRFU1RfQ09ORElUSU9OQUwpCisgICAgeyAiVGVzdENhbGxiYWNrSW50ZXJmYWNlIiwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFs
dWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RUZXN0Q2FsbGJhY2tJbnRlcmZhY2VDb25zdHJ1Y3Rv
ciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+
KHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RDYWxsYmFja0ludGVyZmFjZUNvbnN0cnVjdG9yKSB9
IH0sCisjZWxzZQorICAgIHsgMCwgMCwgTm9JbnRyaW5zaWMsIHsgMCwgMCB9IH0sCisjZW5kaWYK
KyAgICB7ICJUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywg
eyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVz
dEdsb2JhbE9iamVjdFRlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9y
KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4o
c2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29u
c3RydWN0b3IpIH0gfSwKKyAgICB7ICJUZXN0RE9NSklUIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0
cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxP
YmplY3RUZXN0RE9NSklUQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFBy
b3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0RE9NSklU
Q29uc3RydWN0b3IpIH0gfSwKKyAgICB7ICJUZXN0RG9tYWluU2VjdXJpdHkiLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpz
VGVzdEdsb2JhbE9iamVjdFRlc3REb21haW5TZWN1cml0eUNvbnN0cnVjdG9yKSwgKGludHB0cl90
KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0R2xv
YmFsT2JqZWN0VGVzdERvbWFpblNlY3VyaXR5Q29uc3RydWN0b3IpIH0gfSwKKyAgICB7ICJUZXN0
RW5hYmxlZEJ5U2V0dGluZyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQ
cm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0VGVzdEVuYWJsZWRC
eVNldHRpbmdDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlT
bG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RFbmFibGVkQnlTZXR0
aW5nQ29uc3RydWN0b3IpIH0gfSwKKyAgICB7ICJUZXN0RXZlbnRDb25zdHJ1Y3RvciIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVu
Yz4oanNUZXN0R2xvYmFsT2JqZWN0VGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3RvciksIChp
bnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpT
VGVzdEdsb2JhbE9iamVjdFRlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3IpIH0gfSwKKyAg
ICB7ICJUZXN0RXZlbnRUYXJnZXQiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdFRlc3RFdmVu
dFRhcmdldENvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNs
b3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdEV2ZW50VGFyZ2V0Q29u
c3RydWN0b3IpIH0gfSwKKyAgICB7ICJUZXN0RXhjZXB0aW9uIiwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGlu
dHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9i
YWxPYmplY3RUZXN0RXhjZXB0aW9uQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0
PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0
RXhjZXB0aW9uQ29uc3RydWN0b3IpIH0gfSwKKyAgICB7ICJUZXN0R2VuZXJhdGVJc1JlYWNoYWJs
ZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51
bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6Okdl
dFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0VGVzdEdlbmVyYXRlSXNSZWFjaGFibGVDb25z
dHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1
ZUZ1bmM+KHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlQ29uc3Ry
dWN0b3IpIH0gfSwKKyAgICB7ICJUZXN0R2xvYmFsT2JqZWN0Iiwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGlu
dHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9i
YWxPYmplY3RUZXN0R2xvYmFsT2JqZWN0Q29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19j
YXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RHbG9iYWxPYmplY3RU
ZXN0R2xvYmFsT2JqZWN0Q29uc3RydWN0b3IpIH0gfSwKKyAgICB7ICJUZXN0SW5kZXhlZFNldHRl
ck5vSWRlbnRpZmllciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9w
ZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0VGVzdEluZGV4ZWRTZXR0
ZXJOb0lkZW50aWZpZXJDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJv
cGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RJbmRleGVk
U2V0dGVyTm9JZGVudGlmaWVyQ29uc3RydWN0b3IpIH0gfSwKKyAgICB7ICJUZXN0SW5kZXhlZFNl
dHRlclRocm93aW5nRXhjZXB0aW9uIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RUZXN0SW5k
ZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRp
Y19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RHbG9iYWxPYmpl
Y3RUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uQ29uc3RydWN0b3IpIH0gfSwKKyAg
ICB7ICJUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyIiwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGlu
dHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9i
YWxPYmplY3RUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyQ29uc3RydWN0b3IpLCAoaW50
cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rl
c3RHbG9iYWxPYmplY3RUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyQ29uc3RydWN0b3Ip
IH0gfSwKKyNpZiBFTkFCTEUoQ29uZGl0aW9uMSkgfHwgRU5BQkxFKENvbmRpdGlvbjIpCisgICAg
eyAiVGVzdEludGVyZmFjZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQ
cm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0VGVzdEludGVyZmFj
ZUNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1
dFZhbHVlRnVuYz4oc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdEludGVyZmFjZUNvbnN0cnVjdG9y
KSB9IH0sCisjZWxzZQorICAgIHsgMCwgMCwgTm9JbnRyaW5zaWMsIHsgMCwgMCB9IH0sCisjZW5k
aWYKKyAgICB7ICJUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmUiLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywg
eyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVz
dEdsb2JhbE9iamVjdFRlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZUNvbnN0cnVjdG9yKSwg
KGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0
SlNUZXN0R2xvYmFsT2JqZWN0VGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlQ29uc3RydWN0
b3IpIH0gfSwKKyAgICB7ICJUZXN0SXRlcmFibGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVj
dFRlc3RJdGVyYWJsZUNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9w
ZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdEl0ZXJhYmxl
Q29uc3RydWN0b3IpIH0gfSwKKyAgICB7ICJUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IiLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0lu
dHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1
bmM+KGpzVGVzdEdsb2JhbE9iamVjdFRlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9y
KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4o
c2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29uc3RydWN0b3Ip
IH0gfSwKKyAgICB7ICJUZXN0TWFwTGlrZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0
aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0VGVz
dE1hcExpa2VDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlT
bG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RNYXBMaWtlQ29uc3Ry
dWN0b3IpIH0gfSwKKyAgICB7ICJUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVy
Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
KSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0
VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9J
ZGVudGlmaWVyQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5
U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRBbmRJbmRl
eGVkU2V0dGVyTm9JZGVudGlmaWVyQ29uc3RydWN0b3IpIH0gfSwKKyAgICB7ICJUZXN0TmFtZWRB
bmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9i
amVjdFRlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbkNvbnN0cnVjdG9y
KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4o
c2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhj
ZXB0aW9uQ29uc3RydWN0b3IpIH0gfSwKKyAgICB7ICJUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVy
V2l0aElkZW50aWZpZXIiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJv
cGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZEFuZElu
ZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllckNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNf
Y2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0R2xvYmFsT2JqZWN0
VGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyQ29uc3RydWN0b3IpIH0gfSwK
KyAgICB7ICJUZXN0TmFtZWRDb25zdHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0
VGVzdE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8
UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RO
YW1lZENvbnN0cnVjdG9yQ29uc3RydWN0b3IpIH0gfSwKKyAgICB7ICJBdWRpbyIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmlu
c2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4o
anNUZXN0R2xvYmFsT2JqZWN0QXVkaW9Db25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nh
c3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdEdsb2JhbE9iamVjdEF1
ZGlvQ29uc3RydWN0b3IpIH0gfSwKKyAgICB7ICJUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVy
Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
KSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0
VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVy
Q29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0
VmFsdWVGdW5jPihzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWREZWxldGVyTm9JZGVudGlm
aWVyQ29uc3RydWN0b3IpIH0gfSwKKyAgICB7ICJUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNl
cHRpb24iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90
OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZERlbGV0ZXJUaHJvd2lu
Z0V4Y2VwdGlvbkNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0
eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkRGVsZXRl
clRocm93aW5nRXhjZXB0aW9uQ29uc3RydWN0b3IpIH0gfSwKKyAgICB7ICJUZXN0TmFtZWREZWxl
dGVyV2l0aElkZW50aWZpZXIiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZERl
bGV0ZXJXaXRoSWRlbnRpZmllckNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQ
dXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdE5h
bWVkRGVsZXRlcldpdGhJZGVudGlmaWVyQ29uc3RydWN0b3IpIH0gfSwKKyAgICB7ICJUZXN0TmFt
ZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdFRl
c3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlckNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBz
dGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0R2xvYmFs
T2JqZWN0VGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyQ29uc3RydWN0b3IpIH0gfSwK
KyAgICB7ICJUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2Jq
ZWN0VGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGhDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGlj
X2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdEdsb2JhbE9iamVj
dFRlc3ROYW1lZEdldHRlckNhbGxXaXRoQ29uc3RydWN0b3IpIH0gfSwKKyAgICB7ICJUZXN0TmFt
ZWRHZXR0ZXJOb0lkZW50aWZpZXIiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1l
ZEdldHRlck5vSWRlbnRpZmllckNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQ
dXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdE5h
bWVkR2V0dGVyTm9JZGVudGlmaWVyQ29uc3RydWN0b3IpIH0gfSwKKyAgICB7ICJUZXN0TmFtZWRH
ZXR0ZXJXaXRoSWRlbnRpZmllciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2Fz
dDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVk
R2V0dGVyV2l0aElkZW50aWZpZXJDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8
UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RO
YW1lZEdldHRlcldpdGhJZGVudGlmaWVyQ29uc3RydWN0b3IpIH0gfSwKKyAgICB7ICJUZXN0TmFt
ZWRTZXR0ZXJOb0lkZW50aWZpZXIiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1l
ZFNldHRlck5vSWRlbnRpZmllckNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQ
dXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdE5h
bWVkU2V0dGVyTm9JZGVudGlmaWVyQ29uc3RydWN0b3IpIH0gfSwKKyAgICB7ICJUZXN0TmFtZWRT
ZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNf
Y2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0VGVzdE5h
bWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb25Db25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGlj
X2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdEdsb2JhbE9iamVj
dFRlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uQ29uc3RydWN0b3IpIH0gfSwKKyAgICB7
ICJUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2Jq
ZWN0VGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXJDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkg
c3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdEdsb2Jh
bE9iamVjdFRlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyQ29uc3RydWN0b3IpIH0gfSwKKyAg
ICB7ICJUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlciIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xv
YmFsT2JqZWN0VGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJDb25zdHJ1Y3RvciksIChp
bnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpT
VGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQ29uc3RydWN0
b3IpIH0gfSwKKyAgICB7ICJUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRl
ciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51
bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6Okdl
dFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRH
ZXR0ZXJBbmRTZXR0ZXJDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJv
cGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZFNl
dHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyQ29uc3RydWN0b3IpIH0gfSwKKyAgICB7ICJU
ZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucyIsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFs
T2JqZWN0VGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3RvciksIChp
bnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpT
VGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zQ29uc3Ry
dWN0b3IpIH0gfSwKKyAgICB7ICJUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRp
ZXMiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpH
ZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdh
YmxlUHJvcGVydGllc0NvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9w
ZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkU2V0
dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQ29uc3RydWN0b3IpIH0gfSwKKyAgICB7ICJUZXN0
TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zIiwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFs
dWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVBy
b3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRp
Y19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RHbG9iYWxPYmpl
Y3RUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0
aW5zQ29uc3RydWN0b3IpIH0gfSwKKyNpZiBFTkFCTEUoQ29uZGl0aW9uRGVyaXZlZCkKKyAgICB7
ICJUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWwiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdFRl
c3RPcGVyYXRpb25Db25kaXRpb25hbENvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2Fz
dDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVz
dE9wZXJhdGlvbkNvbmRpdGlvbmFsQ29uc3RydWN0b3IpIH0gfSwKKyNlbHNlCisgICAgeyAwLCAw
LCBOb0ludHJpbnNpYywgeyAwLCAwIH0gfSwKKyNlbmRpZgorICAgIHsgIlRlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzV2l0aFNlcXVlbmNlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRp
Y19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZUNvbnN0cnVjdG9yKSwgKGludHB0cl90
KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0R2xv
YmFsT2JqZWN0VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2VDb25zdHJ1Y3Rv
cikgfSB9LAorICAgIHsgIlRlc3RPdmVycmlkZUJ1aWx0aW5zIiwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGlu
dHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9i
YWxPYmplY3RUZXN0T3ZlcnJpZGVCdWlsdGluc0NvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0
aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0R2xvYmFsT2Jq
ZWN0VGVzdE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3RvcikgfSB9LAorICAgIHsgIlRlc3RQbHVn
aW5JbnRlcmZhY2UiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdFRlc3RQbHVnaW5JbnRlcmZh
Y2VDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RQbHVnaW5JbnRlcmZhY2VDb25z
dHJ1Y3RvcikgfSB9LAorICAgIHsgIlRlc3RSZWFkT25seU1hcExpa2UiLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywg
eyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVz
dEdsb2JhbE9iamVjdFRlc3RSZWFkT25seU1hcExpa2VDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkg
c3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdEdsb2Jh
bE9iamVjdFRlc3RSZWFkT25seU1hcExpa2VDb25zdHJ1Y3RvcikgfSB9LAorICAgIHsgIlRlc3RS
ZWFkT25seVNldExpa2UiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJv
cGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdFRlc3RSZWFkT25seVNl
dExpa2VDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90
OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RSZWFkT25seVNldExpa2VD
b25zdHJ1Y3RvcikgfSB9LAorICAgIHsgIlRlc3RSZXBvcnRFeHRyYU1lbW9yeUNvc3QiLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0lu
dHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1
bmM+KGpzVGVzdEdsb2JhbE9iamVjdFRlc3RSZXBvcnRFeHRyYU1lbW9yeUNvc3RDb25zdHJ1Y3Rv
ciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+
KHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RSZXBvcnRFeHRyYU1lbW9yeUNvc3RDb25zdHJ1Y3Rv
cikgfSB9LAorICAgIHsgIlRlc3RTZXJpYWxpemF0aW9uIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0
cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxP
YmplY3RUZXN0U2VyaWFsaXphdGlvbkNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2Fz
dDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVz
dFNlcmlhbGl6YXRpb25Db25zdHJ1Y3RvcikgfSB9LAorICAgIHsgIlRlc3RTZXJpYWxpemF0aW9u
SW5kaXJlY3RJbmhlcml0YW5jZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2Fz
dDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0VGVzdFNlcmlh
bGl6YXRpb25JbmRpcmVjdEluaGVyaXRhbmNlQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRp
Y19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RHbG9iYWxPYmpl
Y3RUZXN0U2VyaWFsaXphdGlvbkluZGlyZWN0SW5oZXJpdGFuY2VDb25zdHJ1Y3RvcikgfSB9LAor
ICAgIHsgIlRlc3RTZXJpYWxpemF0aW9uSW5oZXJpdCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2Jq
ZWN0VGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0Q29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRp
Y19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RHbG9iYWxPYmpl
Y3RUZXN0U2VyaWFsaXphdGlvbkluaGVyaXRDb25zdHJ1Y3RvcikgfSB9LAorICAgIHsgIlRlc3RT
ZXJpYWxpemF0aW9uSW5oZXJpdEZpbmFsIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRp
Y19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RUZXN0
U2VyaWFsaXphdGlvbkluaGVyaXRGaW5hbENvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNf
Y2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0R2xvYmFsT2JqZWN0
VGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0RmluYWxDb25zdHJ1Y3RvcikgfSB9LAorI2lmIEVOQUJM
RShDb25kaXRpb24xKSB8fCBFTkFCTEUoQ29uZGl0aW9uMikKKyAgICB7ICJUZXN0U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlSW50ZXJmYWNlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RUZXN0U2Vy
aWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRp
Y19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RHbG9iYWxPYmpl
Y3RUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ29uc3RydWN0b3IpIH0gfSwKKyNl
bHNlCisgICAgeyAwLCAwLCBOb0ludHJpbnNpYywgeyAwLCAwIH0gfSwKKyNlbmRpZgorICAgIHsg
IlRlc3RTZXRMaWtlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RUZXN0U2V0TGlrZUNvbnN0
cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVl
RnVuYz4oc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdFNldExpa2VDb25zdHJ1Y3RvcikgfSB9LAor
ICAgIHsgIlRlc3RTdHJpbmdpZmllciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNf
Y2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0VGVzdFN0
cmluZ2lmaWVyQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5
U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0U3RyaW5naWZpZXJD
b25zdHJ1Y3RvcikgfSB9LAorICAgIHsgIlRlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlv
biIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51
bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6Okdl
dFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0VGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3Bl
cmF0aW9uQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xv
dDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0U3RyaW5naWZpZXJBbm9u
eW1vdXNPcGVyYXRpb25Db25zdHJ1Y3RvcikgfSB9LAorICAgIHsgIlRlc3RTdHJpbmdpZmllck5h
bWVkT3BlcmF0aW9uIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RUZXN0U3RyaW5naWZpZXJO
YW1lZE9wZXJhdGlvbkNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9w
ZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdFN0cmluZ2lm
aWVyTmFtZWRPcGVyYXRpb25Db25zdHJ1Y3RvcikgfSB9LAorICAgIHsgIlRlc3RTdHJpbmdpZmll
ck9wZXJhdGlvbkltcGxlbWVudGVkQXMiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdFRlc3RT
dHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXNDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkg
c3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdEdsb2Jh
bE9iamVjdFRlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXNDb25zdHJ1Y3Rvcikg
fSB9LAorICAgIHsgIlRlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmciLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0lu
dHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1
bmM+KGpzVGVzdEdsb2JhbE9iamVjdFRlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJp
bmdDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RTdHJpbmdpZmllck9wZXJhdGlv
bk5hbWVkVG9TdHJpbmdDb25zdHJ1Y3RvcikgfSB9LAorICAgIHsgIlRlc3RTdHJpbmdpZmllclJl
YWRPbmx5QXR0cmlidXRlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFBy
b3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RUZXN0U3RyaW5naWZp
ZXJSZWFkT25seUF0dHJpYnV0ZUNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQ
dXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdFN0
cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGVDb25zdHJ1Y3RvcikgfSB9LAorICAgIHsgIlRlc3RT
dHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0
VGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlQ29uc3RydWN0b3IpLCAoaW50cHRyX3Qp
IHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RHbG9i
YWxPYmplY3RUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGVDb25zdHJ1Y3RvcikgfSB9
LAorICAgIHsgIlRlc3RUeXBlZGVmcyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNf
Y2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0VGVzdFR5
cGVkZWZzQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xv
dDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0VHlwZWRlZnNDb25zdHJ1
Y3RvcikgfSB9LAorICAgIHsgIldvcmtlckdsb2JhbFNjb3BlIiwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGlu
dHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9i
YWxPYmplY3RXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNf
Y2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0R2xvYmFsT2JqZWN0
V29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcikgfSB9LAorICAgIHsgIldvcmtsZXRHbG9iYWxT
Y29wZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6
OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0V29ya2xldEdsb2JhbFNjb3BlQ29uc3Ry
dWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPihzZXRKU1Rlc3RHbG9iYWxPYmplY3RXb3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3Rvcikg
fSB9LAorICAgIHsgIkRPTVdpbmRvdyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNf
Y2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0RE9NV2lu
ZG93Q29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6
UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RHbG9iYWxPYmplY3RET01XaW5kb3dDb25zdHJ1Y3Rvcikg
fSB9LAorICAgIHsgIkRlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlIiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RH
bG9iYWxPYmplY3REZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yKSwgKGludHB0
cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0
R2xvYmFsT2JqZWN0RGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcikgfSB9LAor
ICAgIHsgIlBhaW50V29ya2xldEdsb2JhbFNjb3BlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90
KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmpl
Y3RQYWludFdvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNf
Y2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0R2xvYmFsT2JqZWN0
UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcikgfSB9LAorICAgIHsgIlNlcnZpY2VX
b3JrZXJHbG9iYWxTY29wZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQ
cm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0U2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3Bl
cnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RHbG9iYWxPYmplY3RTZXJ2aWNlV29ya2Vy
R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcikgfSB9LAorICAgIHsgIlRlc3RDRVJlYWN0aW9ucyIsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5v
SW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVl
RnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0VGVzdENFUmVhY3Rpb25zQ29uc3RydWN0b3IpLCAoaW50
cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rl
c3RHbG9iYWxPYmplY3RUZXN0Q0VSZWFjdGlvbnNDb25zdHJ1Y3RvcikgfSB9LAorICAgIHsgIlRl
c3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRp
Y19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RUZXN0
Q0VSZWFjdGlvbnNTdHJpbmdpZmllckNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2Fz
dDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVz
dENFUmVhY3Rpb25zU3RyaW5naWZpZXJDb25zdHJ1Y3RvcikgfSB9LAorICAgIHsgIlRlc3RDYWxs
VHJhY2VyIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xv
dDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RUZXN0Q2FsbFRyYWNlckNvbnN0cnVj
dG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVu
Yz4oc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdENhbGxUcmFjZXJDb25zdHJ1Y3RvcikgfSB9LAor
I2lmIEVOQUJMRShURVNUX0NPTkRJVElPTkFMKQorICAgIHsgIlRlc3RDYWxsYmFja0ludGVyZmFj
ZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51
bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6Okdl
dFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0VGVzdENhbGxiYWNrSW50ZXJmYWNlQ29uc3Ry
dWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPihzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0Q2FsbGJhY2tJbnRlcmZhY2VDb25zdHJ1Y3Rv
cikgfSB9LAorI2Vsc2UKKyAgICB7IDAsIDAsIE5vSW50cmluc2ljLCB7IDAsIDAgfSB9LAorI2Vu
ZGlmCisgICAgeyAiVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yIiwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihq
c1Rlc3RHbG9iYWxPYmplY3RUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1
Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1
bmM+KHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rv
ckNvbnN0cnVjdG9yKSB9IH0sCisgICAgeyAiVGVzdERPTUpJVCIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xv
YmFsT2JqZWN0VGVzdERPTUpJVENvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQ
dXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdERP
TUpJVENvbnN0cnVjdG9yKSB9IH0sCisgICAgeyAiVGVzdERvbWFpblNlY3VyaXR5Iiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
Pihqc1Rlc3RHbG9iYWxPYmplY3RUZXN0RG9tYWluU2VjdXJpdHlDb25zdHJ1Y3RvciksIChpbnRw
dHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVz
dEdsb2JhbE9iamVjdFRlc3REb21haW5TZWN1cml0eUNvbnN0cnVjdG9yKSB9IH0sCisgICAgeyAi
VGVzdEVuYWJsZWRCeVNldHRpbmciLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdFRlc3RFbmFi
bGVkQnlTZXR0aW5nQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3Bl
cnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0RW5hYmxlZEJ5
U2V0dGluZ0NvbnN0cnVjdG9yKSB9IH0sCisgICAgeyAiVGVzdEV2ZW50Q29uc3RydWN0b3IiLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBO
b0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1
ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdFRlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3Ip
LCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihz
ZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yKSB9IH0s
CisgICAgeyAiVGVzdEV2ZW50VGFyZ2V0Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRp
Y19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RUZXN0
RXZlbnRUYXJnZXRDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVy
dHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RFdmVudFRhcmdl
dENvbnN0cnVjdG9yKSB9IH0sCisgICAgeyAiVGVzdEV4Y2VwdGlvbiIsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0
R2xvYmFsT2JqZWN0VGVzdEV4Y2VwdGlvbkNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNf
Y2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0R2xvYmFsT2JqZWN0
VGVzdEV4Y2VwdGlvbkNvbnN0cnVjdG9yKSB9IH0sCisgICAgeyAiVGVzdEdlbmVyYXRlSXNSZWFj
aGFibGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90
OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdFRlc3RHZW5lcmF0ZUlzUmVhY2hhYmxl
Q29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0
VmFsdWVGdW5jPihzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZUNv
bnN0cnVjdG9yKSB9IH0sCisgICAgeyAiVGVzdEdsb2JhbE9iamVjdCIsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0
R2xvYmFsT2JqZWN0VGVzdEdsb2JhbE9iamVjdENvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0
aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0R2xvYmFsT2Jq
ZWN0VGVzdEdsb2JhbE9iamVjdENvbnN0cnVjdG9yKSB9IH0sCisgICAgeyAiVGVzdEluZGV4ZWRT
ZXR0ZXJOb0lkZW50aWZpZXIiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdFRlc3RJbmRleGVk
U2V0dGVyTm9JZGVudGlmaWVyQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1
dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0SW5k
ZXhlZFNldHRlck5vSWRlbnRpZmllckNvbnN0cnVjdG9yKSB9IH0sCisgICAgeyAiVGVzdEluZGV4
ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0
aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0VGVz
dEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbkNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBz
dGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0R2xvYmFs
T2JqZWN0VGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbkNvbnN0cnVjdG9yKSB9IH0s
CisgICAgeyAiVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllciIsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0
R2xvYmFsT2JqZWN0VGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllckNvbnN0cnVjdG9yKSwg
KGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0
SlNUZXN0R2xvYmFsT2JqZWN0VGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllckNvbnN0cnVj
dG9yKSB9IH0sCisjaWYgRU5BQkxFKENvbmRpdGlvbjEpIHx8IEVOQUJMRShDb25kaXRpb24yKQor
ICAgIHsgIlRlc3RJbnRlcmZhY2UiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdFRlc3RJbnRl
cmZhY2VDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90
OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RJbnRlcmZhY2VDb25zdHJ1
Y3RvcikgfSB9LAorI2Vsc2UKKyAgICB7IDAsIDAsIE5vSW50cmluc2ljLCB7IDAsIDAgfSB9LAor
I2VuZGlmCisgICAgeyAiVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlIiwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihq
c1Rlc3RHbG9iYWxPYmplY3RUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmVDb25zdHJ1Y3Rv
ciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+
KHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZUNvbnN0
cnVjdG9yKSB9IH0sCisgICAgeyAiVGVzdEl0ZXJhYmxlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0
cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxP
YmplY3RUZXN0SXRlcmFibGVDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0
UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RJdGVy
YWJsZUNvbnN0cnVjdG9yKSB9IH0sCisgICAgeyAiVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yIiwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFs
dWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1
Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1
bmM+KHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVj
dG9yKSB9IH0sCisgICAgeyAiVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbiIsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2lj
LCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNU
ZXN0R2xvYmFsT2JqZWN0VGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbkNvbnN0cnVjdG9yKSwgKGlu
dHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNU
ZXN0R2xvYmFsT2JqZWN0VGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbkNvbnN0cnVjdG9yKSB9IH0s
CisgICAgeyAiQXVkaW8iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJv
cGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdEF1ZGlvQ29uc3RydWN0
b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5j
PihzZXRKU1Rlc3RHbG9iYWxPYmplY3RBdWRpb0NvbnN0cnVjdG9yKSB9IH0sCisgICAgeyAiVGVz
dE1hcExpa2UiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlT
bG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdFRlc3RNYXBMaWtlQ29uc3RydWN0
b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5j
PihzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0TWFwTGlrZUNvbnN0cnVjdG9yKSB9IH0sCisgICAg
eyAiVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllciIsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0
R2xvYmFsT2JqZWN0VGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllckNvbnN0cnVj
dG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVu
Yz4oc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRp
ZmllckNvbnN0cnVjdG9yKSB9IH0sCisgICAgeyAiVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRo
cm93aW5nRXhjZXB0aW9uIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFBy
b3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRBbmRJ
bmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb25Db25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3Rh
dGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdEdsb2JhbE9i
amVjdFRlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbkNvbnN0cnVjdG9y
KSB9IH0sCisgICAgeyAiVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyIiwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFs
dWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElk
ZW50aWZpZXJDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlT
bG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZEFuZEluZGV4
ZWRTZXR0ZXJXaXRoSWRlbnRpZmllckNvbnN0cnVjdG9yKSB9IH0sCisgICAgeyAiVGVzdE5hbWVk
RGVsZXRlck5vSWRlbnRpZmllciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2Fz
dDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVk
RGVsZXRlck5vSWRlbnRpZmllckNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQ
dXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdE5h
bWVkRGVsZXRlck5vSWRlbnRpZmllckNvbnN0cnVjdG9yKSB9IH0sCisgICAgeyAiVGVzdE5hbWVk
RGVsZXRlclRocm93aW5nRXhjZXB0aW9uIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRp
Y19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RUZXN0
TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb25Db25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3Rh
dGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdEdsb2JhbE9i
amVjdFRlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbkNvbnN0cnVjdG9yKSB9IH0sCisg
ICAgeyAiVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyIiwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGlu
dHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9i
YWxPYmplY3RUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXJDb25zdHJ1Y3RvciksIChpbnRw
dHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVz
dEdsb2JhbE9iamVjdFRlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllckNvbnN0cnVjdG9yKSB9
IH0sCisgICAgeyAiVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyIiwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihq
c1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXJDb25zdHJ1
Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1
bmM+KHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRl
ckNvbnN0cnVjdG9yKSB9IH0sCisgICAgeyAiVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGgiLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0lu
dHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1
bmM+KGpzVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZEdldHRlckNhbGxXaXRoQ29uc3RydWN0b3Ip
LCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihz
ZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aENvbnN0cnVjdG9yKSB9
IH0sCisgICAgeyAiVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyIiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RH
bG9iYWxPYmplY3RUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXJDb25zdHJ1Y3RvciksIChpbnRw
dHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVz
dEdsb2JhbE9iamVjdFRlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllckNvbnN0cnVjdG9yKSB9IH0s
CisgICAgeyAiVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXIiLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEds
b2JhbE9iamVjdFRlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyQ29uc3RydWN0b3IpLCAoaW50
cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rl
c3RHbG9iYWxPYmplY3RUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllckNvbnN0cnVjdG9yKSB9
IH0sCisgICAgeyAiVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyIiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RH
bG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXJDb25zdHJ1Y3RvciksIChpbnRw
dHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVz
dEdsb2JhbE9iamVjdFRlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllckNvbnN0cnVjdG9yKSB9IH0s
CisgICAgeyAiVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24iLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywg
eyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVz
dEdsb2JhbE9iamVjdFRlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uQ29uc3RydWN0b3Ip
LCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihz
ZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbkNvbnN0
cnVjdG9yKSB9IH0sCisgICAgeyAiVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIiLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0lu
dHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1
bmM+KGpzVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyQ29uc3Ry
dWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPihzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllckNv
bnN0cnVjdG9yKSB9IH0sCisgICAgeyAiVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIi
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0p
LCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRW
YWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0
dGVyQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6
UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRoSW5k
ZXhlZEdldHRlckNvbnN0cnVjdG9yKSB9IH0sCisgICAgeyAiVGVzdE5hbWVkU2V0dGVyV2l0aElu
ZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1l
ZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyQ29uc3RydWN0b3IpLCAoaW50cHRyX3Qp
IHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RHbG9i
YWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlckNvbnN0cnVj
dG9yKSB9IH0sCisgICAgeyAiVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMiLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBO
b0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1
ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0
aW5zQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6
UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRoT3Zl
cnJpZGVCdWlsdGluc0NvbnN0cnVjdG9yKSB9IH0sCisgICAgeyAiVGVzdE5hbWVkU2V0dGVyV2l0
aFVuZm9yZ2FibGVQcm9wZXJ0aWVzIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFt
ZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkg
c3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdEdsb2Jh
bE9iamVjdFRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0NvbnN0cnVjdG9y
KSB9IH0sCisgICAgeyAiVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5k
T3ZlcnJpZGVCdWlsdGlucyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQ
cm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkU2V0
dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGluc0NvbnN0cnVjdG9y
KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4o
c2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0
aWVzQW5kT3ZlcnJpZGVCdWlsdGluc0NvbnN0cnVjdG9yKSB9IH0sCisjaWYgRU5BQkxFKENvbmRp
dGlvbkRlcml2ZWQpCisgICAgeyAiVGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsIiwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihq
c1Rlc3RHbG9iYWxPYmplY3RUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWxDb25zdHJ1Y3RvciksIChp
bnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpT
VGVzdEdsb2JhbE9iamVjdFRlc3RPcGVyYXRpb25Db25kaXRpb25hbENvbnN0cnVjdG9yKSB9IH0s
CisjZWxzZQorICAgIHsgMCwgMCwgTm9JbnRyaW5zaWMsIHsgMCwgMCB9IH0sCisjZW5kaWYKKyAg
ICB7ICJUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2Jq
ZWN0VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3Rh
dGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdEdsb2JhbE9i
amVjdFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3IpIH0gfSwKKyAgICB7ICJU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZSIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xv
YmFsT2JqZWN0VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2VDb25zdHJ1Y3Rv
ciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+
KHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVl
bmNlQ29uc3RydWN0b3IpIH0gfSwKKyAgICB7ICJUZXN0T3ZlcnJpZGVCdWlsdGlucyIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVu
Yz4oanNUZXN0R2xvYmFsT2JqZWN0VGVzdE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3RvciksIChp
bnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpT
VGVzdEdsb2JhbE9iamVjdFRlc3RPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3IpIH0gfSwKKyAg
ICB7ICJUZXN0UGx1Z2luSW50ZXJmYWNlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRp
Y19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RUZXN0
UGx1Z2luSW50ZXJmYWNlQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFBy
b3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0UGx1Z2lu
SW50ZXJmYWNlQ29uc3RydWN0b3IpIH0gfSwKKyAgICB7ICJUZXN0UmVhZE9ubHlNYXBMaWtlIiwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFs
dWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RUZXN0UmVhZE9ubHlNYXBMaWtlQ29uc3RydWN0b3Ip
LCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihz
ZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0UmVhZE9ubHlNYXBMaWtlQ29uc3RydWN0b3IpIH0gfSwK
KyAgICB7ICJUZXN0UmVhZE9ubHlTZXRMaWtlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0
YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RU
ZXN0UmVhZE9ubHlTZXRMaWtlQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1
dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0UmVh
ZE9ubHlTZXRMaWtlQ29uc3RydWN0b3IpIH0gfSwKKyAgICB7ICJUZXN0UmVwb3J0RXh0cmFNZW1v
cnlDb3N0Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xv
dDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RUZXN0UmVwb3J0RXh0cmFNZW1vcnlD
b3N0Q29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6
UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0UmVwb3J0RXh0cmFNZW1vcnlD
b3N0Q29uc3RydWN0b3IpIH0gfSwKKyAgICB7ICJUZXN0U2VyaWFsaXphdGlvbiIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmlu
c2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4o
anNUZXN0R2xvYmFsT2JqZWN0VGVzdFNlcmlhbGl6YXRpb25Db25zdHJ1Y3RvciksIChpbnRwdHJf
dCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdEds
b2JhbE9iamVjdFRlc3RTZXJpYWxpemF0aW9uQ29uc3RydWN0b3IpIH0gfSwKKyAgICB7ICJUZXN0
U2VyaWFsaXphdGlvbkluZGlyZWN0SW5oZXJpdGFuY2UiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9i
amVjdFRlc3RTZXJpYWxpemF0aW9uSW5kaXJlY3RJbmhlcml0YW5jZUNvbnN0cnVjdG9yKSwgKGlu
dHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNU
ZXN0R2xvYmFsT2JqZWN0VGVzdFNlcmlhbGl6YXRpb25JbmRpcmVjdEluaGVyaXRhbmNlQ29uc3Ry
dWN0b3IpIH0gfSwKKyAgICB7ICJUZXN0U2VyaWFsaXphdGlvbkluaGVyaXQiLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpz
VGVzdEdsb2JhbE9iamVjdFRlc3RTZXJpYWxpemF0aW9uSW5oZXJpdENvbnN0cnVjdG9yKSwgKGlu
dHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNU
ZXN0R2xvYmFsT2JqZWN0VGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0Q29uc3RydWN0b3IpIH0gfSwK
KyAgICB7ICJUZXN0U2VyaWFsaXphdGlvbkluaGVyaXRGaW5hbCIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xv
YmFsT2JqZWN0VGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0RmluYWxDb25zdHJ1Y3RvciksIChpbnRw
dHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVz
dEdsb2JhbE9iamVjdFRlc3RTZXJpYWxpemF0aW9uSW5oZXJpdEZpbmFsQ29uc3RydWN0b3IpIH0g
fSwKKyNpZiBFTkFCTEUoQ29uZGl0aW9uMSkgfHwgRU5BQkxFKENvbmRpdGlvbjIpCisgICAgeyAi
VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFs
T2JqZWN0VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNvbnN0cnVjdG9yKSwgKGlu
dHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNU
ZXN0R2xvYmFsT2JqZWN0VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNvbnN0cnVj
dG9yKSB9IH0sCisjZWxzZQorICAgIHsgMCwgMCwgTm9JbnRyaW5zaWMsIHsgMCwgMCB9IH0sCisj
ZW5kaWYKKyAgICB7ICJUZXN0U2V0TGlrZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0
aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0VGVz
dFNldExpa2VDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlT
bG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RTZXRMaWtlQ29uc3Ry
dWN0b3IpIH0gfSwKKyAgICB7ICJUZXN0U3RyaW5naWZpZXIiLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50
cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2Jh
bE9iamVjdFRlc3RTdHJpbmdpZmllckNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2Fz
dDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVz
dFN0cmluZ2lmaWVyQ29uc3RydWN0b3IpIH0gfSwKKyAgICB7ICJUZXN0U3RyaW5naWZpZXJBbm9u
eW1vdXNPcGVyYXRpb24iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJv
cGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdFRlc3RTdHJpbmdpZmll
ckFub255bW91c09wZXJhdGlvbkNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQ
dXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdFN0
cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uQ29uc3RydWN0b3IpIH0gfSwKKyAgICB7ICJUZXN0
U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0
aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0VGVz
dFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb25Db25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGlj
X2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdEdsb2JhbE9iamVj
dFRlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uQ29uc3RydWN0b3IpIH0gfSwKKyAgICB7ICJU
ZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzIiwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGlu
dHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9i
YWxPYmplY3RUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzQ29uc3RydWN0b3Ip
LCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihz
ZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFz
Q29uc3RydWN0b3IpIH0gfSwKKyAgICB7ICJUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRv
U3RyaW5nIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xv
dDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RUZXN0U3RyaW5naWZpZXJPcGVyYXRp
b25OYW1lZFRvU3RyaW5nQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFBy
b3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0U3RyaW5n
aWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nQ29uc3RydWN0b3IpIH0gfSwKKyAgICB7ICJUZXN0
U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0
VGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGVDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkg
c3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdEdsb2Jh
bE9iamVjdFRlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlQ29uc3RydWN0b3IpIH0gfSwK
KyAgICB7ICJUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGUiLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywg
eyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVz
dEdsb2JhbE9iamVjdFRlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZUNvbnN0cnVjdG9y
KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4o
c2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlQ29u
c3RydWN0b3IpIH0gfSwKKyAgICB7ICJUZXN0VHlwZWRlZnMiLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50
cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2Jh
bE9iamVjdFRlc3RUeXBlZGVmc0NvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQ
dXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdFR5
cGVkZWZzQ29uc3RydWN0b3IpIH0gfSwKKyAgICB7ICJXb3JrZXJHbG9iYWxTY29wZSIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVu
Yz4oanNUZXN0R2xvYmFsT2JqZWN0V29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvciksIChpbnRw
dHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVz
dEdsb2JhbE9iamVjdFdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3IpIH0gfSwKKyAgICB7ICJX
b3JrbGV0R2xvYmFsU2NvcGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdFdvcmtsZXRHbG9i
YWxTY29wZUNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNs
b3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0R2xvYmFsT2JqZWN0V29ya2xldEdsb2JhbFNjb3Bl
Q29uc3RydWN0b3IpIH0gfSwKKyAgICB7ICJyZWd1bGFyT3BlcmF0aW9uIiwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RHbG9iYWxP
YmplY3RJbnN0YW5jZUZ1bmN0aW9uUmVndWxhck9wZXJhdGlvbiksIChpbnRwdHJfdCkgKDEpIH0g
fSwKK307CisKK3N0YXRpYyBjb25zdCBIYXNoVGFibGUgSlNUZXN0R2xvYmFsT2JqZWN0VGFibGUg
PSB7IDE0MSwgNTExLCB0cnVlLCBKU1Rlc3RHbG9iYWxPYmplY3Q6OmluZm8oKSwgSlNUZXN0R2xv
YmFsT2JqZWN0VGFibGVWYWx1ZXMsIEpTVGVzdEdsb2JhbE9iamVjdFRhYmxlSW5kZXggfTsKKy8q
IEhhc2ggdGFibGUgZm9yIGNvbnN0cnVjdG9yICovCisKK3N0YXRpYyBjb25zdCBIYXNoVGFibGVW
YWx1ZSBKU1Rlc3RHbG9iYWxPYmplY3RDb25zdHJ1Y3RvclRhYmxlVmFsdWVzW10gPQoreworI2lm
IEVOQUJMRShURVNUX0ZFQVRVUkUpCisgICAgeyAiZW5hYmxlZEF0UnVudGltZU9wZXJhdGlvblN0
YXRpYyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5j
dGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5j
dGlvbj4oanNUZXN0R2xvYmFsT2JqZWN0Q29uc3RydWN0b3JGdW5jdGlvbkVuYWJsZWRBdFJ1bnRp
bWVPcGVyYXRpb25TdGF0aWMpLCAoaW50cHRyX3QpICgxKSB9IH0sCisjZWxzZQorICAgIHsgMCwg
MCwgTm9JbnRyaW5zaWMsIHsgMCwgMCB9IH0sCisjZW5kaWYKK307CisKK3RlbXBsYXRlPD4gSlNW
YWx1ZSBKU1Rlc3RHbG9iYWxPYmplY3RDb25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJl
KEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQorewor
ICAgIFVOVVNFRF9QQVJBTSh2bSk7CisgICAgcmV0dXJuIGdsb2JhbE9iamVjdC5mdW5jdGlvblBy
b3RvdHlwZSgpOworfQorCit0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0R2xvYmFsT2JqZWN0Q29uc3Ry
dWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGds
b2JhbE9iamVjdCkKK3sKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3Rv
dHlwZSwgZ2xvYmFsT2JqZWN0LmdldFByb3RvdHlwZURpcmVjdCh2bSksIEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKKyAgICBwdXREaXJlY3Qodm0sIHZt
LnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlRlc3RHbG9iYWxP
YmplY3QiX3MpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFt
ZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOworICAgIHJlaWZ5U3RhdGljUHJv
cGVydGllcyh2bSwgSlNUZXN0R2xvYmFsT2JqZWN0OjppbmZvKCksIEpTVGVzdEdsb2JhbE9iamVj
dENvbnN0cnVjdG9yVGFibGVWYWx1ZXMsICp0aGlzKTsKK30KKwordGVtcGxhdGU8PiBjb25zdCBD
bGFzc0luZm8gSlNUZXN0R2xvYmFsT2JqZWN0Q29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3RH
bG9iYWxPYmplY3QiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVU
SE9EX1RBQkxFKEpTVGVzdEdsb2JhbE9iamVjdENvbnN0cnVjdG9yKSB9OworCisvKiBIYXNoIHRh
YmxlIGZvciBwcm90b3R5cGUgKi8KKworc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaElu
ZGV4IEpTVGVzdEdsb2JhbE9iamVjdFByb3RvdHlwZVRhYmxlSW5kZXhbMl0gPSB7CisgICAgeyAt
MSwgLTEgfSwKKyAgICB7IDAsIC0xIH0sCit9OworCisKK3N0YXRpYyBjb25zdCBIYXNoVGFibGVW
YWx1ZSBKU1Rlc3RHbG9iYWxPYmplY3RQcm90b3R5cGVUYWJsZVZhbHVlc1tdID0KK3sKKyAgICB7
ICJjb25zdHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9w
ZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0Q29uc3RydWN0b3IpLCAo
aW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRK
U1Rlc3RHbG9iYWxPYmplY3RDb25zdHJ1Y3RvcikgfSB9LAorfTsKKworc3RhdGljIGNvbnN0IEhh
c2hUYWJsZSBKU1Rlc3RHbG9iYWxPYmplY3RQcm90b3R5cGVUYWJsZSA9IHsgMSwgMSwgdHJ1ZSwg
SlNUZXN0R2xvYmFsT2JqZWN0OjppbmZvKCksIEpTVGVzdEdsb2JhbE9iamVjdFByb3RvdHlwZVRh
YmxlVmFsdWVzLCBKU1Rlc3RHbG9iYWxPYmplY3RQcm90b3R5cGVUYWJsZUluZGV4IH07Citjb25z
dCBDbGFzc0luZm8gSlNUZXN0R2xvYmFsT2JqZWN0UHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZXN0
R2xvYmFsT2JqZWN0IiwgJkJhc2U6OnNfaW5mbywgJkpTVGVzdEdsb2JhbE9iamVjdFByb3RvdHlw
ZVRhYmxlLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdEdsb2JhbE9iamVjdFBy
b3RvdHlwZSkgfTsKKwordm9pZCBKU1Rlc3RHbG9iYWxPYmplY3RQcm90b3R5cGU6OmZpbmlzaENy
ZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgSlND
X1RPX1NUUklOR19UQUdfV0lUSE9VVF9UUkFOU0lUSU9OKCk7Cit9CisKK2NvbnN0IENsYXNzSW5m
byBKU1Rlc3RHbG9iYWxPYmplY3Q6OnNfaW5mbyA9IHsgIlRlc3RHbG9iYWxPYmplY3QiLCAmQmFz
ZTo6c19pbmZvLCAmSlNUZXN0R2xvYmFsT2JqZWN0VGFibGUsIG51bGxwdHIsIENSRUFURV9NRVRI
T0RfVEFCTEUoSlNUZXN0R2xvYmFsT2JqZWN0KSB9OworCitKU1Rlc3RHbG9iYWxPYmplY3Q6OkpT
VGVzdEdsb2JhbE9iamVjdChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3Qm
IGdsb2JhbE9iamVjdCwgUmVmPFRlc3RHbG9iYWxPYmplY3Q+JiYgaW1wbCkKKyAgICA6IEpTRE9N
V3JhcHBlcjxUZXN0R2xvYmFsT2JqZWN0PihzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCwgV1RGTW92
ZShpbXBsKSkKK3sKK30KKwordm9pZCBKU1Rlc3RHbG9iYWxPYmplY3Q6OmZpbmlzaENyZWF0aW9u
KFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgQVNTRVJUKGlu
aGVyaXRzKHZtLCBpbmZvKCkpKTsKKworICAgIHN0YXRpY19hc3NlcnQoIXN0ZDo6aXNfYmFzZV9v
ZjxBY3RpdmVET01PYmplY3QsIFRlc3RHbG9iYWxPYmplY3Q+Ojp2YWx1ZSwgIkludGVyZmFjZSBp
cyBub3QgbWFya2VkIGFzIFtBY3RpdmVET01PYmplY3RdIGV2ZW4gdGhvdWdoIGltcGxlbWVudGF0
aW9uIGNsYXNzIHN1YmNsYXNzZXMgQWN0aXZlRE9NT2JqZWN0LiIpOworCisjaWYgRU5BQkxFKFRF
U1RfRkVBVFVSRSkKKyAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVy
ZXMoKS50ZXN0RmVhdHVyZUVuYWJsZWQoKSkKKyAgICAgICAgcHV0RGlyZWN0Q3VzdG9tQWNjZXNz
b3Iodm0sIHN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSktPmJ1aWx0
aW5OYW1lcygpLmVuYWJsZWRBdFJ1bnRpbWVBdHRyaWJ1dGVQdWJsaWNOYW1lKCksIEN1c3RvbUdl
dHRlclNldHRlcjo6Y3JlYXRlKHZtLCBqc1Rlc3RHbG9iYWxPYmplY3RFbmFibGVkQXRSdW50aW1l
QXR0cmlidXRlLCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RFbmFibGVkQXRSdW50aW1lQXR0cmlidXRl
KSwgYXR0cmlidXRlc0ZvclN0cnVjdHVyZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IpKSk7CisjZW5kaWYKKyAgICBpZiAoKGpzQ2Fz
dDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpLT5pc1NlY3VyZUNvbnRleHQoKSAmJiBUZXN0RW5hYmxlZEZvckNvbnRleHQ6OmVuYWJs
ZWRGb3JDb250ZXh0KCpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSkt
PnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkpKQorICAgICAgICBwdXREaXJlY3RDdXN0b21BY2Nl
c3Nvcih2bSwgc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKS0+YnVp
bHRpbk5hbWVzKCkuVGVzdEVuYWJsZWRGb3JDb250ZXh0UHVibGljTmFtZSgpLCBDdXN0b21HZXR0
ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwganNUZXN0R2xvYmFsT2JqZWN0VGVzdEVuYWJsZWRGb3JDb250
ZXh0Q29uc3RydWN0b3IsIHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RFbmFibGVkRm9yQ29udGV4
dENvbnN0cnVjdG9yKSwgYXR0cmlidXRlc0ZvclN0cnVjdHVyZShzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKSk7CisgICAgaWYgKChqc0Nhc3Q8
SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKS0+aXNTZWN1cmVDb250ZXh0KCkgJiYgVGVzdEVuYWJsZWRGb3JDb250ZXh0OjplbmFibGVk
Rm9yQ29udGV4dCgqanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5z
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkpKSkKKyAgICAgICAgcHV0RGlyZWN0Q3VzdG9tQWNjZXNz
b3Iodm0sIHN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSktPmJ1aWx0
aW5OYW1lcygpLlRlc3RFbmFibGVkRm9yQ29udGV4dFB1YmxpY05hbWUoKSwgQ3VzdG9tR2V0dGVy
U2V0dGVyOjpjcmVhdGUodm0sIGpzVGVzdEdsb2JhbE9iamVjdFRlc3RFbmFibGVkRm9yQ29udGV4
dENvbnN0cnVjdG9yLCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0RW5hYmxlZEZvckNvbnRleHRD
b25zdHJ1Y3RvciksIGF0dHJpYnV0ZXNGb3JTdHJ1Y3R1cmUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSkpOworICAgIHB1dERpcmVjdEN1c3Rv
bUFjY2Vzc29yKHZtLCBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEp
LT5idWlsdGluTmFtZXMoKS5wdWJsaWNBbmRQcml2YXRlQXR0cmlidXRlUHJpdmF0ZU5hbWUoKSwg
Q3VzdG9tR2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sIGpzVGVzdEdsb2JhbE9iamVjdFB1YmxpY0Fu
ZFByaXZhdGVBdHRyaWJ1dGUsIG51bGxwdHIpLCBhdHRyaWJ1dGVzRm9yU3RydWN0dXJlKEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpS
ZWFkT25seSkpOworI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCisgICAgcHV0RGlyZWN0Q3VzdG9t
QWNjZXNzb3Iodm0sIHN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSkt
PmJ1aWx0aW5OYW1lcygpLnB1YmxpY0FuZFByaXZhdGVDb25kaXRpb25hbEF0dHJpYnV0ZVByaXZh
dGVOYW1lKCksIEN1c3RvbUdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCBqc1Rlc3RHbG9iYWxPYmpl
Y3RQdWJsaWNBbmRQcml2YXRlQ29uZGl0aW9uYWxBdHRyaWJ1dGUsIG51bGxwdHIpLCBhdHRyaWJ1
dGVzRm9yU3RydWN0dXJlKEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSkpOworI2VuZGlmCisjaWYgRU5BQkxFKFRFU1Rf
RkVBVFVSRSkKKyAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMo
KS50ZXN0RmVhdHVyZUVuYWJsZWQoKSkKKyAgICAgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24o
dm0sIHRoaXMsIHN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSktPmJ1
aWx0aW5OYW1lcygpLmVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb25QdWJsaWNOYW1lKCksIDEsIGpz
VGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25FbmFibGVkQXRSdW50aW1lT3BlcmF0aW9u
LCBOb0ludHJpbnNpYywgYXR0cmlidXRlc0ZvclN0cnVjdHVyZShzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pKSk7CisjZW5kaWYKKyNpZiBFTkFC
TEUoVEVTVF9GRUFUVVJFKQorICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRG
ZWF0dXJlcygpLnRlc3RGZWF0dXJlRW5hYmxlZCgpKQorICAgICAgICBwdXREaXJlY3ROYXRpdmVG
dW5jdGlvbih2bSwgdGhpcywgc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnRE
YXRhKS0+YnVpbHRpbk5hbWVzKCkuZW5hYmxlZEF0UnVudGltZU9wZXJhdGlvblN0YXRpY1B1Ymxp
Y05hbWUoKSwgMSwganNUZXN0R2xvYmFsT2JqZWN0Q29uc3RydWN0b3JGdW5jdGlvbkVuYWJsZWRB
dFJ1bnRpbWVPcGVyYXRpb25TdGF0aWMsIE5vSW50cmluc2ljLCBhdHRyaWJ1dGVzRm9yU3RydWN0
dXJlKHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlv
bikpKTsKKyNlbmRpZgorICAgIGlmICh3b3JsZEZvckRPTU9iamVjdCgqdGhpcykuc3BlY2lmaWNX
b3JsZCgpKQorICAgICAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbih2bSwgdGhpcywgc3RhdGlj
X2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKS0+YnVpbHRpbk5hbWVzKCkuZW5h
YmxlZEluU3BlY2lmaWNXb3JsZFB1YmxpY05hbWUoKSwgMSwganNUZXN0R2xvYmFsT2JqZWN0SW5z
dGFuY2VGdW5jdGlvbkVuYWJsZWRJblNwZWNpZmljV29ybGQsIE5vSW50cmluc2ljLCBhdHRyaWJ1
dGVzRm9yU3RydWN0dXJlKHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpGdW5jdGlvbikpKTsKKyAgICBpZiAoKHdvcmxkRm9yRE9NT2JqZWN0KCp0aGlzKS5zcGVj
aWZpY1dvcmxkKCkgJiYgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS50
ZXN0RmVhdHVyZUVuYWJsZWQoKSkpCisgICAgICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKHZt
LCB0aGlzLCBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpLT5idWls
dGluTmFtZXMoKS5lbmFibGVkSW5TcGVjaWZpY1dvcmxkV2hlblJ1bnRpbWVGZWF0dXJlRW5hYmxl
ZFB1YmxpY05hbWUoKSwgMSwganNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbkVuYWJs
ZWRJblNwZWNpZmljV29ybGRXaGVuUnVudGltZUZlYXR1cmVFbmFibGVkLCBOb0ludHJpbnNpYywg
YXR0cmlidXRlc0ZvclN0cnVjdHVyZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RnVuY3Rpb24pKSk7CisgICAgaWYgKCh3b3JsZEZvckRPTU9iamVjdCgqdGhp
cykuc3BlY2lmaWNXb3JsZCgpICYmIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1
cmVzKCkudGVzdEZlYXR1cmVFbmFibGVkKCkgJiYgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hh
cmVkRmVhdHVyZXMoKS50ZXN0RmVhdHVyZTFFbmFibGVkKCkpKQorICAgICAgICBwdXREaXJlY3RO
YXRpdmVGdW5jdGlvbih2bSwgdGhpcywgc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5j
bGllbnREYXRhKS0+YnVpbHRpbk5hbWVzKCkuZW5hYmxlZEluU3BlY2lmaWNXb3JsZFdoZW5SdW50
aW1lRmVhdHVyZXNFbmFibGVkUHVibGljTmFtZSgpLCAxLCBqc1Rlc3RHbG9iYWxPYmplY3RJbnN0
YW5jZUZ1bmN0aW9uRW5hYmxlZEluU3BlY2lmaWNXb3JsZFdoZW5SdW50aW1lRmVhdHVyZXNFbmFi
bGVkLCBOb0ludHJpbnNpYywgYXR0cmlidXRlc0ZvclN0cnVjdHVyZShzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pKSk7CisjaWYgRU5BQkxFKFRF
U1RfRkVBVFVSRSkKKyAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVy
ZXMoKS50ZXN0RmVhdHVyZUVuYWJsZWQoKSkKKyAgICAgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rp
b24odm0sIHRoaXMsIHN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSkt
PmJ1aWx0aW5OYW1lcygpLnRlc3RQcml2YXRlRnVuY3Rpb25Qcml2YXRlTmFtZSgpLCAwLCBqc1Rl
c3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uVGVzdFByaXZhdGVGdW5jdGlvbiwgTm9JbnRy
aW5zaWMsIGF0dHJpYnV0ZXNGb3JTdHJ1Y3R1cmUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSkpOworI2VuZGlmCisjaWYgRU5BQkxFKFRFU1Rf
RkVBVFVSRSkKKyAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMo
KS50ZXN0RmVhdHVyZUVuYWJsZWQoKSkKKyAgICAgICAgcHV0RGlyZWN0QnVpbHRpbkZ1bmN0aW9u
KHZtLCB0aGlzLCBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpLT5i
dWlsdGluTmFtZXMoKS50ZXN0SlNCdWlsdGluRnVuY3Rpb25QdWJsaWNOYW1lKCksIHRlc3RHbG9i
YWxPYmplY3RUZXN0SlNCdWlsdGluRnVuY3Rpb25Db2RlR2VuZXJhdG9yKHZtKSwgYXR0cmlidXRl
c0ZvclN0cnVjdHVyZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6QnVpbHRpbikpKTsKKyNlbmRpZgorICAgIGlmIChqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3Qq
PihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNTZWN1cmVDb250
ZXh0KCkpCisgICAgICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKHZtLCB0aGlzLCBzdGF0aWNf
Y2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpLT5idWlsdGluTmFtZXMoKS5jYWxj
dWxhdGVTZWNyZXRSZXN1bHRQdWJsaWNOYW1lKCksIDAsIGpzVGVzdEdsb2JhbE9iamVjdEluc3Rh
bmNlRnVuY3Rpb25DYWxjdWxhdGVTZWNyZXRSZXN1bHQsIE5vSW50cmluc2ljLCBhdHRyaWJ1dGVz
Rm9yU3RydWN0dXJlKHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpGdW5jdGlvbikpKTsKKyAgICBpZiAoanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFs
T2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzU2VjdXJlQ29udGV4dCgpKQor
ICAgICAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbih2bSwgdGhpcywgc3RhdGljX2Nhc3Q8SlNW
TUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKS0+YnVpbHRpbk5hbWVzKCkuZ2V0U2VjcmV0Qm9v
bGVhblB1YmxpY05hbWUoKSwgMCwganNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbkdl
dFNlY3JldEJvb2xlYW4sIE5vSW50cmluc2ljLCBhdHRyaWJ1dGVzRm9yU3RydWN0dXJlKHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbikpKTsKKyNp
ZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQorICAgIGlmICgoanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0
Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzU2VjdXJlQ29u
dGV4dCgpICYmIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkudGVzdEZl
YXR1cmVFbmFibGVkKCkpKQorICAgICAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbih2bSwgdGhp
cywgc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKS0+YnVpbHRpbk5h
bWVzKCkudGVzdEZlYXR1cmVHZXRTZWNyZXRCb29sZWFuUHVibGljTmFtZSgpLCAwLCBqc1Rlc3RH
bG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uVGVzdEZlYXR1cmVHZXRTZWNyZXRCb29sZWFuLCBO
b0ludHJpbnNpYywgYXR0cmlidXRlc0ZvclN0cnVjdHVyZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pKSk7CisjZW5kaWYKK30KKworSlNWYWx1
ZSBKU1Rlc3RHbG9iYWxPYmplY3Q6OmdldENvbnN0cnVjdG9yKFZNJiB2bSwgY29uc3QgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8
SlNUZXN0R2xvYmFsT2JqZWN0Q29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xv
YmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7Cit9CisKK3ZvaWQgSlNUZXN0R2xvYmFsT2JqZWN0
OjpkZXN0cm95KEpTQzo6SlNDZWxsKiBjZWxsKQoreworICAgIEpTVGVzdEdsb2JhbE9iamVjdCog
dGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEpTVGVzdEdsb2JhbE9iamVjdCo+KGNlbGwpOworICAg
IHRoaXNPYmplY3QtPkpTVGVzdEdsb2JhbE9iamVjdDo6fkpTVGVzdEdsb2JhbE9iamVjdCgpOwor
fQorCit0ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RHbG9iYWxPYmplY3QqIElETEF0dHJpYnV0ZTxK
U1Rlc3RHbG9iYWxPYmplY3Q+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUpCit7CisgICAgcmV0dXJuIGpzRHluYW1pY0Nh
c3Q8SlNUZXN0R2xvYmFsT2JqZWN0Kj4oSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCks
IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKK30KKwordGVtcGxhdGU8PiBpbmxpbmUgSlNU
ZXN0R2xvYmFsT2JqZWN0KiBJRExPcGVyYXRpb248SlNUZXN0R2xvYmFsT2JqZWN0Pjo6Y2FzdChK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lJiBjYWxsRnJhbWUp
Cit7CisgICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0R2xvYmFsT2JqZWN0Kj4oSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIGNhbGxGcmFtZS50aGlzVmFsdWUoKSk7Cit9CisK
K0VuY29kZWRKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdENvbnN0cnVjdG9yKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkKK3sKKyAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3Qp
OworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIGF1
dG8qIHByb3RvdHlwZSA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0R2xvYmFsT2JqZWN0UHJvdG90eXBl
Kj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBpZiAoVU5MSUtFTFkoIXBy
b3RvdHlwZSkpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0R2xv
YmFsT2JqZWN0OjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3Qp
LCBwcm90b3R5cGUtPmdsb2JhbE9iamVjdCgpKSk7Cit9CisKK2Jvb2wgc2V0SlNUZXN0R2xvYmFs
T2JqZWN0Q29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorewor
ICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgYXV0byogcHJvdG90eXBl
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RHbG9iYWxPYmplY3RQcm90b3R5cGUqPih2bSwgSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIGlmIChVTkxJS0VMWSghcHJvdG90eXBlKSkgewor
ICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUp
OworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0
LWluIGNvbnN0cnVjdG9yCisgICAgcmV0dXJuIHByb3RvdHlwZS0+cHV0RGlyZWN0KHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSkp
OworfQorCitzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0UmVndWxhckF0
dHJpYnV0ZUdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0
R2xvYmFsT2JqZWN0JiB0aGlzT2JqZWN0KQoreworICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOworICAg
IFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExET01TdHJpbmc+KGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwucmVndWxhckF0dHJpYnV0ZSgpKSkpOwor
fQorCitFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RSZWd1bGFyQXR0cmlidXRlKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSkKK3sKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdEdsb2Jh
bE9iamVjdD46OmdldDxqc1Rlc3RHbG9iYWxPYmplY3RSZWd1bGFyQXR0cmlidXRlR2V0dGVyLCBD
YXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhp
c1ZhbHVlLCAicmVndWxhckF0dHJpYnV0ZSIpOworfQorCitzdGF0aWMgaW5saW5lIGJvb2wgc2V0
SlNUZXN0R2xvYmFsT2JqZWN0UmVndWxhckF0dHJpYnV0ZVNldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0R2xvYmFsT2JqZWN0JiB0aGlzT2JqZWN0LCBKU1Zh
bHVlIHZhbHVlKQoreworICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9i
amVjdCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Cisg
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOworICAgIGF1dG8gbmF0aXZlVmFs
dWUgPSBjb252ZXJ0PElETERPTVN0cmluZz4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwor
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOworICAgIEF0dHJpYnV0
ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0geworICAg
ICAgICByZXR1cm4gaW1wbC5zZXRSZWd1bGFyQXR0cmlidXRlKFdURk1vdmUobmF0aXZlVmFsdWUp
KTsKKyAgICB9KTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBzZXRKU1Rlc3RHbG9iYWxP
YmplY3RSZWd1bGFyQXR0cmlidXRlKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkK
K3sKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdEdsb2JhbE9iamVjdD46OnNldDxzZXRK
U1Rlc3RHbG9iYWxPYmplY3RSZWd1bGFyQXR0cmlidXRlU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJyZWd1bGFyQXR0cmlidXRlIik7Cit9CisK
K3N0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RQdWJsaWNBbmRQcml2YXRl
QXR0cmlidXRlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rl
c3RHbG9iYWxPYmplY3QmIHRoaXNPYmplY3QpCit7CisgICAgYXV0byYgdm0gPSBKU0M6OmdldFZN
KCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKyAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7Cisg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETERPTVN0cmluZz4obGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5wdWJsaWNBbmRQcml2YXRlQXR0cmli
dXRlKCkpKSk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdFB1YmxpY0Fu
ZFByaXZhdGVBdHRyaWJ1dGUoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQoreworICAgIHJldHVybiBJRExB
dHRyaWJ1dGU8SlNUZXN0R2xvYmFsT2JqZWN0Pjo6Z2V0PGpzVGVzdEdsb2JhbE9iamVjdFB1Ymxp
Y0FuZFByaXZhdGVBdHRyaWJ1dGVHZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFs
dWUsICJwdWJsaWNBbmRQcml2YXRlQXR0cmlidXRlIik7Cit9CisKK3N0YXRpYyBpbmxpbmUgYm9v
bCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RQdWJsaWNBbmRQcml2YXRlQXR0cmlidXRlU2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RHbG9iYWxPYmplY3QmIHRo
aXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCit7CisgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKyAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CisgICAg
YXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB2YWx1ZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7
CisgICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIFsmXSB7CisgICAgICAgIHJldHVybiBpbXBsLnNldFB1YmxpY0FuZFByaXZhdGVBdHRyaWJ1
dGUoV1RGTW92ZShuYXRpdmVWYWx1ZSkpOworICAgIH0pOworICAgIHJldHVybiB0cnVlOworfQor
Citib29sIHNldEpTVGVzdEdsb2JhbE9iamVjdFB1YmxpY0FuZFByaXZhdGVBdHRyaWJ1dGUoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQoreworICAgIHJldHVybiBJRExBdHRyaWJ1
dGU8SlNUZXN0R2xvYmFsT2JqZWN0Pjo6c2V0PHNldEpTVGVzdEdsb2JhbE9iamVjdFB1YmxpY0Fu
ZFByaXZhdGVBdHRyaWJ1dGVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
IGVuY29kZWRWYWx1ZSwgInB1YmxpY0FuZFByaXZhdGVBdHRyaWJ1dGUiKTsKK30KKworI2lmIEVO
QUJMRShURVNUX0ZFQVRVUkUpCitzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0R2xvYmFsT2Jq
ZWN0UHVibGljQW5kUHJpdmF0ZUNvbmRpdGlvbmFsQXR0cmlidXRlR2V0dGVyKEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RHbG9iYWxPYmplY3QmIHRoaXNPYmplY3Qp
Cit7CisgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93
U2NvcGUsICh0b0pTPElETERPTVN0cmluZz4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgaW1wbC5wdWJsaWNBbmRQcml2YXRlQ29uZGl0aW9uYWxBdHRyaWJ1dGUoKSkpKTsKK30KKwor
RW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0UHVibGljQW5kUHJpdmF0ZUNvbmRpdGlv
bmFsQXR0cmlidXRlKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKK3sKKyAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTVGVzdEdsb2JhbE9iamVjdD46OmdldDxqc1Rlc3RHbG9iYWxPYmplY3RQdWJsaWNBbmRQ
cml2YXRlQ29uZGl0aW9uYWxBdHRyaWJ1dGVHZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aGlzVmFsdWUsICJwdWJsaWNBbmRQcml2YXRlQ29uZGl0aW9uYWxBdHRyaWJ1dGUiKTsKK30KKwor
I2VuZGlmCisKKyNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQorc3RhdGljIGlubGluZSBib29sIHNl
dEpTVGVzdEdsb2JhbE9iamVjdFB1YmxpY0FuZFByaXZhdGVDb25kaXRpb25hbEF0dHJpYnV0ZVNl
dHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0R2xvYmFsT2Jq
ZWN0JiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQoreworICAgIGF1dG8mIHZtID0gSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgp
OworICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETERPTVN0cmluZz4obGV4aWNhbEds
b2JhbE9iamVjdCwgdmFsdWUpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
ZmFsc2UpOworICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlLCBbJl0geworICAgICAgICByZXR1cm4gaW1wbC5zZXRQdWJsaWNBbmRQcml2YXRl
Q29uZGl0aW9uYWxBdHRyaWJ1dGUoV1RGTW92ZShuYXRpdmVWYWx1ZSkpOworICAgIH0pOworICAg
IHJldHVybiB0cnVlOworfQorCitib29sIHNldEpTVGVzdEdsb2JhbE9iamVjdFB1YmxpY0FuZFBy
aXZhdGVDb25kaXRpb25hbEF0dHJpYnV0ZShKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpCit7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RHbG9iYWxPYmplY3Q+OjpzZXQ8
c2V0SlNUZXN0R2xvYmFsT2JqZWN0UHVibGljQW5kUHJpdmF0ZUNvbmRpdGlvbmFsQXR0cmlidXRl
U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJw
dWJsaWNBbmRQcml2YXRlQ29uZGl0aW9uYWxBdHRyaWJ1dGUiKTsKK30KKworI2VuZGlmCisKKyNp
ZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQorc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdEdsb2Jh
bE9iamVjdEVuYWJsZWRBdFJ1bnRpbWVBdHRyaWJ1dGVHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdEdsb2JhbE9iamVjdCYgdGhpc09iamVjdCkKK3sKKyAg
ICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOworICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIGF1dG8mIGltcGwgPSB0
aGlzT2JqZWN0LndyYXBwZWQoKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwg
KHRvSlM8SURMRE9NU3RyaW5nPihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBs
LmVuYWJsZWRBdFJ1bnRpbWVBdHRyaWJ1dGUoKSkpKTsKK30KKworRW5jb2RlZEpTVmFsdWUganNU
ZXN0R2xvYmFsT2JqZWN0RW5hYmxlZEF0UnVudGltZUF0dHJpYnV0ZShKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5h
bWUpCit7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RHbG9iYWxPYmplY3Q+OjpnZXQ8
anNUZXN0R2xvYmFsT2JqZWN0RW5hYmxlZEF0UnVudGltZUF0dHJpYnV0ZUdldHRlcj4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImVuYWJsZWRBdFJ1bnRpbWVBdHRyaWJ1dGUiKTsK
K30KKworI2VuZGlmCisKKyNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQorc3RhdGljIGlubGluZSBi
b29sIHNldEpTVGVzdEdsb2JhbE9iamVjdEVuYWJsZWRBdFJ1bnRpbWVBdHRyaWJ1dGVTZXR0ZXIo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdEdsb2JhbE9iamVjdCYg
dGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKKyAg
ICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExET01TdHJpbmc+KGxleGljYWxHbG9iYWxP
YmplY3QsIHZhbHVlKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNl
KTsKKyAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgWyZdIHsKKyAgICAgICAgcmV0dXJuIGltcGwuc2V0RW5hYmxlZEF0UnVudGltZUF0dHJp
YnV0ZShXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CisgICAgfSk7CisgICAgcmV0dXJuIHRydWU7Cit9
CisKK2Jvb2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0RW5hYmxlZEF0UnVudGltZUF0dHJpYnV0ZShK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCit7CisgICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU1Rlc3RHbG9iYWxPYmplY3Q+OjpzZXQ8c2V0SlNUZXN0R2xvYmFsT2JqZWN0RW5hYmxl
ZEF0UnVudGltZUF0dHJpYnV0ZVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1
ZSwgZW5jb2RlZFZhbHVlLCAiZW5hYmxlZEF0UnVudGltZUF0dHJpYnV0ZSIpOworfQorCisjZW5k
aWYKKworc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdERPTVdpbmRvd0Nv
bnN0cnVjdG9yR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rl
c3RHbG9iYWxPYmplY3QmIHRoaXNPYmplY3QpCit7CisgICAgVU5VU0VEX1BBUkFNKGxleGljYWxH
bG9iYWxPYmplY3QpOworICAgIHJldHVybiBKU0RPTVdpbmRvdzo6Z2V0Q29uc3RydWN0b3IoSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIHRoaXNPYmplY3QuZ2xvYmFsT2JqZWN0KCkp
OworfQorCitFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RET01XaW5kb3dDb25zdHJ1
Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCit7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rl
c3RHbG9iYWxPYmplY3Q+OjpnZXQ8anNUZXN0R2xvYmFsT2JqZWN0RE9NV2luZG93Q29uc3RydWN0
b3JHZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJET01XaW5kb3ciKTsK
K30KKworc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdEdsb2JhbE9iamVjdERPTVdpbmRvd0Nv
bnN0cnVjdG9yU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rl
c3RHbG9iYWxPYmplY3QmIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCit7CisgICAgYXV0byYg
dm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICAvLyBTaGFkb3dpbmcg
YSBidWlsdC1pbiBjb25zdHJ1Y3Rvci4KKyAgICByZXR1cm4gdGhpc09iamVjdC5wdXREaXJlY3Qo
dm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENo
YXIqPigiRE9NV2luZG93IiksIHN0cmxlbigiRE9NV2luZG93IikpLCB2YWx1ZSk7Cit9CisKK2Jv
b2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0RE9NV2luZG93Q29uc3RydWN0b3IoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQoreworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0
R2xvYmFsT2JqZWN0Pjo6c2V0PHNldEpTVGVzdEdsb2JhbE9iamVjdERPTVdpbmRvd0NvbnN0cnVj
dG9yU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUs
ICJET01XaW5kb3ciKTsKK30KKworc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdEdsb2JhbE9i
amVjdERlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JHZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdEdsb2JhbE9iamVjdCYgdGhpc09iamVj
dCkKK3sKKyAgICBVTlVTRURfUEFSQU0obGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgcmV0dXJu
IEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGU6OmdldENvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpLCB0aGlzT2JqZWN0Lmdsb2JhbE9iamVjdCgpKTsKK30KKwor
RW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0RGVkaWNhdGVkV29ya2VyR2xvYmFsU2Nv
cGVDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCit7CisgICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU1Rlc3RHbG9iYWxPYmplY3Q+OjpnZXQ8anNUZXN0R2xvYmFsT2JqZWN0RGVkaWNhdGVk
V29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvckdldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IHRoaXNWYWx1ZSwgIkRlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlIik7Cit9CisKK3N0YXRpYyBp
bmxpbmUgYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3REZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29w
ZUNvbnN0cnVjdG9yU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U1Rlc3RHbG9iYWxPYmplY3QmIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCit7CisgICAgYXV0
byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICAvLyBTaGFkb3dp
bmcgYSBidWlsdC1pbiBjb25zdHJ1Y3Rvci4KKyAgICByZXR1cm4gdGhpc09iamVjdC5wdXREaXJl
Y3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
TENoYXIqPigiRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUiKSwgc3RybGVuKCJEZWRpY2F0ZWRX
b3JrZXJHbG9iYWxTY29wZSIpKSwgdmFsdWUpOworfQorCitib29sIHNldEpTVGVzdEdsb2JhbE9i
amVjdERlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlKQoreworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0R2xv
YmFsT2JqZWN0Pjo6c2V0PHNldEpTVGVzdEdsb2JhbE9iamVjdERlZGljYXRlZFdvcmtlckdsb2Jh
bFNjb3BlQ29uc3RydWN0b3JTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
IGVuY29kZWRWYWx1ZSwgIkRlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlIik7Cit9CisKK3N0YXRp
YyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RQYWludFdvcmtsZXRHbG9iYWxTY29w
ZUNvbnN0cnVjdG9yR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U1Rlc3RHbG9iYWxPYmplY3QmIHRoaXNPYmplY3QpCit7CisgICAgVU5VU0VEX1BBUkFNKGxleGlj
YWxHbG9iYWxPYmplY3QpOworICAgIHJldHVybiBKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlOjpn
ZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgdGhpc09iamVj
dC5nbG9iYWxPYmplY3QoKSk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVj
dFBhaW50V29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQor
eworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0R2xvYmFsT2JqZWN0Pjo6Z2V0PGpzVGVz
dEdsb2JhbE9iamVjdFBhaW50V29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3JHZXR0ZXI+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJQYWludFdvcmtsZXRHbG9iYWxTY29wZSIp
OworfQorCitzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0UGFpbnRXb3Jr
bGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvclNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNUZXN0R2xvYmFsT2JqZWN0JiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVl
KQoreworICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7Cisg
ICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IuCisgICAgcmV0dXJuIHRoaXNP
YmplY3QucHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJl
dF9jYXN0PGNvbnN0IExDaGFyKj4oIlBhaW50V29ya2xldEdsb2JhbFNjb3BlIiksIHN0cmxlbigi
UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUiKSksIHZhbHVlKTsKK30KKworYm9vbCBzZXRKU1Rlc3RH
bG9iYWxPYmplY3RQYWludFdvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9yKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK3sKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVz
dEdsb2JhbE9iamVjdD46OnNldDxzZXRKU1Rlc3RHbG9iYWxPYmplY3RQYWludFdvcmtsZXRHbG9i
YWxTY29wZUNvbnN0cnVjdG9yU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCBlbmNvZGVkVmFsdWUsICJQYWludFdvcmtsZXRHbG9iYWxTY29wZSIpOworfQorCitzdGF0aWMg
aW5saW5lIEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0U2VydmljZVdvcmtlckdsb2JhbFNjb3Bl
Q29uc3RydWN0b3JHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpT
VGVzdEdsb2JhbE9iamVjdCYgdGhpc09iamVjdCkKK3sKKyAgICBVTlVTRURfUEFSQU0obGV4aWNh
bEdsb2JhbE9iamVjdCk7CisgICAgcmV0dXJuIEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlOjpn
ZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgdGhpc09iamVj
dC5nbG9iYWxPYmplY3QoKSk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVj
dFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkK
K3sKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdEdsb2JhbE9iamVjdD46OmdldDxqc1Rl
c3RHbG9iYWxPYmplY3RTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvckdldHRlcj4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIlNlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZSIpOworfQorCitzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0U2Vydmlj
ZVdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTVGVzdEdsb2JhbE9iamVjdCYgdGhpc09iamVjdCwgSlNWYWx1ZSB2
YWx1ZSkKK3sKKyAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3Qp
OworICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yLgorICAgIHJldHVybiB0
aGlzT2JqZWN0LnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRl
cnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUiKSwgc3Ry
bGVuKCJTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUiKSksIHZhbHVlKTsKK30KKworYm9vbCBzZXRK
U1Rlc3RHbG9iYWxPYmplY3RTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcihKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCit7CisgICAgcmV0dXJuIElETEF0dHJpYnV0
ZTxKU1Rlc3RHbG9iYWxPYmplY3Q+OjpzZXQ8c2V0SlNUZXN0R2xvYmFsT2JqZWN0U2VydmljZVdv
cmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIlNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSIpOworfQor
CitzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0VGVzdENFUmVhY3Rpb25z
Q29uc3RydWN0b3JHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpT
VGVzdEdsb2JhbE9iamVjdCYgdGhpc09iamVjdCkKK3sKKyAgICBVTlVTRURfUEFSQU0obGV4aWNh
bEdsb2JhbE9iamVjdCk7CisgICAgcmV0dXJuIEpTVGVzdENFUmVhY3Rpb25zOjpnZXRDb25zdHJ1
Y3RvcihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgdGhpc09iamVjdC5nbG9iYWxP
YmplY3QoKSk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdFRlc3RDRVJl
YWN0aW9uc0NvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKK3sKKyAgICByZXR1cm4gSURM
QXR0cmlidXRlPEpTVGVzdEdsb2JhbE9iamVjdD46OmdldDxqc1Rlc3RHbG9iYWxPYmplY3RUZXN0
Q0VSZWFjdGlvbnNDb25zdHJ1Y3RvckdldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNW
YWx1ZSwgIlRlc3RDRVJlYWN0aW9ucyIpOworfQorCitzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNU
ZXN0R2xvYmFsT2JqZWN0VGVzdENFUmVhY3Rpb25zQ29uc3RydWN0b3JTZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdEdsb2JhbE9iamVjdCYgdGhpc09iamVj
dCwgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOworICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yLgor
ICAgIHJldHVybiB0aGlzT2JqZWN0LnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJUZXN0Q0VSZWFjdGlvbnMiKSwg
c3RybGVuKCJUZXN0Q0VSZWFjdGlvbnMiKSksIHZhbHVlKTsKK30KKworYm9vbCBzZXRKU1Rlc3RH
bG9iYWxPYmplY3RUZXN0Q0VSZWFjdGlvbnNDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkVmFsdWUpCit7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RHbG9iYWxP
YmplY3Q+OjpzZXQ8c2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdENFUmVhY3Rpb25zQ29uc3RydWN0
b3JTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwg
IlRlc3RDRVJlYWN0aW9ucyIpOworfQorCitzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0R2xv
YmFsT2JqZWN0VGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXJDb25zdHJ1Y3RvckdldHRlcihKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0R2xvYmFsT2JqZWN0JiB0aGlz
T2JqZWN0KQoreworICAgIFVOVVNFRF9QQVJBTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICBy
ZXR1cm4gSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllcjo6Z2V0Q29uc3RydWN0b3IoSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIHRoaXNPYmplY3QuZ2xvYmFsT2JqZWN0KCkpOwor
fQorCitFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RUZXN0Q0VSZWFjdGlvbnNTdHJp
bmdpZmllckNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKK3sKKyAgICByZXR1cm4gSURM
QXR0cmlidXRlPEpTVGVzdEdsb2JhbE9iamVjdD46OmdldDxqc1Rlc3RHbG9iYWxPYmplY3RUZXN0
Q0VSZWFjdGlvbnNTdHJpbmdpZmllckNvbnN0cnVjdG9yR2V0dGVyPigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhpc1ZhbHVlLCAiVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIiKTsKK30KKworc3Rh
dGljIGlubGluZSBib29sIHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RDRVJlYWN0aW9uc1N0cmlu
Z2lmaWVyQ29uc3RydWN0b3JTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTVGVzdEdsb2JhbE9iamVjdCYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAg
ICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOworICAgIC8vIFNo
YWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yLgorICAgIHJldHVybiB0aGlzT2JqZWN0LnB1
dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxj
b25zdCBMQ2hhcio+KCJUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllciIpLCBzdHJsZW4oIlRlc3RD
RVJlYWN0aW9uc1N0cmluZ2lmaWVyIikpLCB2YWx1ZSk7Cit9CisKK2Jvb2wgc2V0SlNUZXN0R2xv
YmFsT2JqZWN0VGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXJDb25zdHJ1Y3RvcihKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCit7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rl
c3RHbG9iYWxPYmplY3Q+OjpzZXQ8c2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdENFUmVhY3Rpb25z
U3RyaW5naWZpZXJDb25zdHJ1Y3RvclNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNW
YWx1ZSwgZW5jb2RlZFZhbHVlLCAiVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIiKTsKK30KKwor
c3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdFRlc3RDYWxsVHJhY2VyQ29u
c3RydWN0b3JHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVz
dEdsb2JhbE9iamVjdCYgdGhpc09iamVjdCkKK3sKKyAgICBVTlVTRURfUEFSQU0obGV4aWNhbEds
b2JhbE9iamVjdCk7CisgICAgcmV0dXJuIEpTVGVzdENhbGxUcmFjZXI6OmdldENvbnN0cnVjdG9y
KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCB0aGlzT2JqZWN0Lmdsb2JhbE9iamVj
dCgpKTsKK30KKworRW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0VGVzdENhbGxUcmFj
ZXJDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCit7CisgICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU1Rlc3RHbG9iYWxPYmplY3Q+OjpnZXQ8anNUZXN0R2xvYmFsT2JqZWN0VGVzdENhbGxU
cmFjZXJDb25zdHJ1Y3RvckdldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwg
IlRlc3RDYWxsVHJhY2VyIik7Cit9CisKK3N0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RHbG9i
YWxPYmplY3RUZXN0Q2FsbFRyYWNlckNvbnN0cnVjdG9yU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RHbG9iYWxPYmplY3QmIHRoaXNPYmplY3QsIEpTVmFs
dWUgdmFsdWUpCit7CisgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKKyAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3Rvci4KKyAgICByZXR1
cm4gdGhpc09iamVjdC5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiVGVzdENhbGxUcmFjZXIiKSwgc3RybGVuKCJU
ZXN0Q2FsbFRyYWNlciIpKSwgdmFsdWUpOworfQorCitib29sIHNldEpTVGVzdEdsb2JhbE9iamVj
dFRlc3RDYWxsVHJhY2VyQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlKQoreworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0R2xvYmFsT2JqZWN0Pjo6c2V0
PHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RDYWxsVHJhY2VyQ29uc3RydWN0b3JTZXR0ZXI+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIlRlc3RDYWxsVHJh
Y2VyIik7Cit9CisKKyNpZiBFTkFCTEUoVEVTVF9DT05ESVRJT05BTCkKK3N0YXRpYyBpbmxpbmUg
SlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RUZXN0Q2FsbGJhY2tJbnRlcmZhY2VDb25zdHJ1Y3Rv
ckdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0R2xvYmFs
T2JqZWN0JiB0aGlzT2JqZWN0KQoreworICAgIFVOVVNFRF9QQVJBTShsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKKyAgICByZXR1cm4gSlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2U6OmdldENvbnN0cnVjdG9y
KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCB0aGlzT2JqZWN0Lmdsb2JhbE9iamVj
dCgpKTsKK30KKworRW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0VGVzdENhbGxiYWNr
SW50ZXJmYWNlQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQoreworICAgIHJldHVybiBJ
RExBdHRyaWJ1dGU8SlNUZXN0R2xvYmFsT2JqZWN0Pjo6Z2V0PGpzVGVzdEdsb2JhbE9iamVjdFRl
c3RDYWxsYmFja0ludGVyZmFjZUNvbnN0cnVjdG9yR2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhpc1ZhbHVlLCAiVGVzdENhbGxiYWNrSW50ZXJmYWNlIik7Cit9CisKKyNlbmRpZgorCisj
aWYgRU5BQkxFKFRFU1RfQ09ORElUSU9OQUwpCitzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0
R2xvYmFsT2JqZWN0VGVzdENhbGxiYWNrSW50ZXJmYWNlQ29uc3RydWN0b3JTZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdEdsb2JhbE9iamVjdCYgdGhpc09i
amVjdCwgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpOworICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9y
LgorICAgIHJldHVybiB0aGlzT2JqZWN0LnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJUZXN0Q2FsbGJhY2tJbnRl
cmZhY2UiKSwgc3RybGVuKCJUZXN0Q2FsbGJhY2tJbnRlcmZhY2UiKSksIHZhbHVlKTsKK30KKwor
Ym9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0Q2FsbGJhY2tJbnRlcmZhY2VDb25zdHJ1Y3Rv
cihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCit7CisgICAgcmV0dXJuIElETEF0
dHJpYnV0ZTxKU1Rlc3RHbG9iYWxPYmplY3Q+OjpzZXQ8c2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVz
dENhbGxiYWNrSW50ZXJmYWNlQ29uc3RydWN0b3JTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIlRlc3RDYWxsYmFja0ludGVyZmFjZSIpOworfQor
CisjZW5kaWYKKworc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdFRlc3RD
bGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9yR2V0dGVyKEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RHbG9iYWxPYmplY3QmIHRoaXNPYmplY3Qp
Cit7CisgICAgVU5VU0VEX1BBUkFNKGxleGljYWxHbG9iYWxPYmplY3QpOworICAgIHJldHVybiBK
U1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0b3IoSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIHRoaXNPYmplY3QuZ2xvYmFsT2JqZWN0KCkpOwor
fQorCitFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RUZXN0Q2xhc3NXaXRoSlNCdWls
dGluQ29uc3RydWN0b3JDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCit7CisgICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RHbG9iYWxPYmplY3Q+OjpnZXQ8anNUZXN0R2xvYmFsT2Jq
ZWN0VGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29uc3RydWN0b3JHZXR0ZXI+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29u
c3RydWN0b3IiKTsKK30KKworc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdEdsb2JhbE9iamVj
dFRlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9yU2V0dGVyKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RHbG9iYWxPYmplY3QmIHRoaXNP
YmplY3QsIEpTVmFsdWUgdmFsdWUpCit7CisgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKKyAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3Rv
ci4KKyAgICByZXR1cm4gdGhpc09iamVjdC5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21T
dHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiVGVzdENsYXNzV2l0aEpT
QnVpbHRpbkNvbnN0cnVjdG9yIiksIHN0cmxlbigiVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0
cnVjdG9yIikpLCB2YWx1ZSk7Cit9CisKK2Jvb2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdENs
YXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlKQoreworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0R2xvYmFs
T2JqZWN0Pjo6c2V0PHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RDbGFzc1dpdGhKU0J1aWx0aW5D
b25zdHJ1Y3RvckNvbnN0cnVjdG9yU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCBlbmNvZGVkVmFsdWUsICJUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IiKTsK
K30KKworc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdFRlc3RET01KSVRD
b25zdHJ1Y3RvckdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNU
ZXN0R2xvYmFsT2JqZWN0JiB0aGlzT2JqZWN0KQoreworICAgIFVOVVNFRF9QQVJBTShsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKKyAgICByZXR1cm4gSlNUZXN0RE9NSklUOjpnZXRDb25zdHJ1Y3RvcihK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgdGhpc09iamVjdC5nbG9iYWxPYmplY3Qo
KSk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdFRlc3RET01KSVRDb25z
dHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCit7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U1Rlc3RHbG9iYWxPYmplY3Q+OjpnZXQ8anNUZXN0R2xvYmFsT2JqZWN0VGVzdERPTUpJVENvbnN0
cnVjdG9yR2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiVGVzdERPTUpJ
VCIpOworfQorCitzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdERP
TUpJVENvbnN0cnVjdG9yU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU1Rlc3RHbG9iYWxPYmplY3QmIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCit7CisgICAg
YXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICAvLyBTaGFk
b3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3Rvci4KKyAgICByZXR1cm4gdGhpc09iamVjdC5wdXRE
aXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgTENoYXIqPigiVGVzdERPTUpJVCIpLCBzdHJsZW4oIlRlc3RET01KSVQiKSksIHZhbHVlKTsK
K30KKworYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0RE9NSklUQ29uc3RydWN0b3IoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQoreworICAgIHJldHVybiBJRExBdHRyaWJ1
dGU8SlNUZXN0R2xvYmFsT2JqZWN0Pjo6c2V0PHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RET01K
SVRDb25zdHJ1Y3RvclNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5j
b2RlZFZhbHVlLCAiVGVzdERPTUpJVCIpOworfQorCitzdGF0aWMgaW5saW5lIEpTVmFsdWUganNU
ZXN0R2xvYmFsT2JqZWN0VGVzdERvbWFpblNlY3VyaXR5Q29uc3RydWN0b3JHZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdEdsb2JhbE9iamVjdCYgdGhpc09i
amVjdCkKK3sKKyAgICBVTlVTRURfUEFSQU0obGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgcmV0
dXJuIEpTVGVzdERvbWFpblNlY3VyaXR5OjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KSwgdGhpc09iamVjdC5nbG9iYWxPYmplY3QoKSk7Cit9CisKK0VuY29k
ZWRKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdFRlc3REb21haW5TZWN1cml0eUNvbnN0cnVjdG9y
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIFByb3BlcnR5TmFtZSkKK3sKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdEds
b2JhbE9iamVjdD46OmdldDxqc1Rlc3RHbG9iYWxPYmplY3RUZXN0RG9tYWluU2VjdXJpdHlDb25z
dHJ1Y3RvckdldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIlRlc3REb21h
aW5TZWN1cml0eSIpOworfQorCitzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0R2xvYmFsT2Jq
ZWN0VGVzdERvbWFpblNlY3VyaXR5Q29uc3RydWN0b3JTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdEdsb2JhbE9iamVjdCYgdGhpc09iamVjdCwgSlNWYWx1
ZSB2YWx1ZSkKK3sKKyAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpOworICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yLgorICAgIHJldHVy
biB0aGlzT2JqZWN0LnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVp
bnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJUZXN0RG9tYWluU2VjdXJpdHkiKSwgc3RybGVu
KCJUZXN0RG9tYWluU2VjdXJpdHkiKSksIHZhbHVlKTsKK30KKworYm9vbCBzZXRKU1Rlc3RHbG9i
YWxPYmplY3RUZXN0RG9tYWluU2VjdXJpdHlDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkVmFsdWUpCit7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RHbG9iYWxP
YmplY3Q+OjpzZXQ8c2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdERvbWFpblNlY3VyaXR5Q29uc3Ry
dWN0b3JTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1
ZSwgIlRlc3REb21haW5TZWN1cml0eSIpOworfQorCitzdGF0aWMgaW5saW5lIEpTVmFsdWUganNU
ZXN0R2xvYmFsT2JqZWN0VGVzdEVuYWJsZWRCeVNldHRpbmdDb25zdHJ1Y3RvckdldHRlcihKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0R2xvYmFsT2JqZWN0JiB0aGlz
T2JqZWN0KQoreworICAgIFVOVVNFRF9QQVJBTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICBy
ZXR1cm4gSlNUZXN0RW5hYmxlZEJ5U2V0dGluZzo6Z2V0Q29uc3RydWN0b3IoSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCksIHRoaXNPYmplY3QuZ2xvYmFsT2JqZWN0KCkpOworfQorCitF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RUZXN0RW5hYmxlZEJ5U2V0dGluZ0NvbnN0
cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKK3sKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpT
VGVzdEdsb2JhbE9iamVjdD46OmdldDxqc1Rlc3RHbG9iYWxPYmplY3RUZXN0RW5hYmxlZEJ5U2V0
dGluZ0NvbnN0cnVjdG9yR2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAi
VGVzdEVuYWJsZWRCeVNldHRpbmciKTsKK30KKworc3RhdGljIGlubGluZSBib29sIHNldEpTVGVz
dEdsb2JhbE9iamVjdFRlc3RFbmFibGVkQnlTZXR0aW5nQ29uc3RydWN0b3JTZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdEdsb2JhbE9iamVjdCYgdGhpc09i
amVjdCwgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpOworICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9y
LgorICAgIHJldHVybiB0aGlzT2JqZWN0LnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJUZXN0RW5hYmxlZEJ5U2V0
dGluZyIpLCBzdHJsZW4oIlRlc3RFbmFibGVkQnlTZXR0aW5nIikpLCB2YWx1ZSk7Cit9CisKK2Jv
b2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdEVuYWJsZWRCeVNldHRpbmdDb25zdHJ1Y3RvcihK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCit7CisgICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU1Rlc3RHbG9iYWxPYmplY3Q+OjpzZXQ8c2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdEVu
YWJsZWRCeVNldHRpbmdDb25zdHJ1Y3RvclNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRo
aXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiVGVzdEVuYWJsZWRCeVNldHRpbmciKTsKK30KKworc3Rh
dGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdFRlc3RFbmFibGVkRm9yQ29udGV4
dENvbnN0cnVjdG9yR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U1Rlc3RHbG9iYWxPYmplY3QmIHRoaXNPYmplY3QpCit7CisgICAgVU5VU0VEX1BBUkFNKGxleGlj
YWxHbG9iYWxPYmplY3QpOworICAgIHJldHVybiBKU1Rlc3RFbmFibGVkRm9yQ29udGV4dDo6Z2V0
Q29uc3RydWN0b3IoSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIHRoaXNPYmplY3Qu
Z2xvYmFsT2JqZWN0KCkpOworfQorCitFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RU
ZXN0RW5hYmxlZEZvckNvbnRleHRDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCit7Cisg
ICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RHbG9iYWxPYmplY3Q+OjpnZXQ8anNUZXN0R2xv
YmFsT2JqZWN0VGVzdEVuYWJsZWRGb3JDb250ZXh0Q29uc3RydWN0b3JHZXR0ZXI+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJUZXN0RW5hYmxlZEZvckNvbnRleHQiKTsKK30KKwor
c3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RFbmFibGVkRm9yQ29u
dGV4dENvbnN0cnVjdG9yU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU1Rlc3RHbG9iYWxPYmplY3QmIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCit7CisgICAg
YXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICAvLyBTaGFk
b3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3Rvci4KKyAgICByZXR1cm4gdGhpc09iamVjdC5wdXRE
aXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgTENoYXIqPigiVGVzdEVuYWJsZWRGb3JDb250ZXh0IiksIHN0cmxlbigiVGVzdEVuYWJsZWRG
b3JDb250ZXh0IikpLCB2YWx1ZSk7Cit9CisKK2Jvb2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVz
dEVuYWJsZWRGb3JDb250ZXh0Q29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlKQoreworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0R2xvYmFsT2JqZWN0Pjo6
c2V0PHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RFbmFibGVkRm9yQ29udGV4dENvbnN0cnVjdG9y
U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJU
ZXN0RW5hYmxlZEZvckNvbnRleHQiKTsKK30KKworc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVz
dEdsb2JhbE9iamVjdFRlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3JHZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdEdsb2JhbE9iamVjdCYgdGhpc09i
amVjdCkKK3sKKyAgICBVTlVTRURfUEFSQU0obGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgcmV0
dXJuIEpTVGVzdEV2ZW50Q29uc3RydWN0b3I6OmdldENvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0oJmxl
eGljYWxHbG9iYWxPYmplY3QpLCB0aGlzT2JqZWN0Lmdsb2JhbE9iamVjdCgpKTsKK30KKworRW5j
b2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0VGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1
Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCit7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rl
c3RHbG9iYWxPYmplY3Q+OjpnZXQ8anNUZXN0R2xvYmFsT2JqZWN0VGVzdEV2ZW50Q29uc3RydWN0
b3JDb25zdHJ1Y3RvckdldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIlRl
c3RFdmVudENvbnN0cnVjdG9yIik7Cit9CisKK3N0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RH
bG9iYWxPYmplY3RUZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yU2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RHbG9iYWxPYmplY3QmIHRoaXNPYmpl
Y3QsIEpTVmFsdWUgdmFsdWUpCit7CisgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKKyAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3Rvci4K
KyAgICByZXR1cm4gdGhpc09iamVjdC5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiVGVzdEV2ZW50Q29uc3RydWN0
b3IiKSwgc3RybGVuKCJUZXN0RXZlbnRDb25zdHJ1Y3RvciIpKSwgdmFsdWUpOworfQorCitib29s
IHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3IoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQoreworICAgIHJldHVybiBJRExBdHRyaWJ1
dGU8SlNUZXN0R2xvYmFsT2JqZWN0Pjo6c2V0PHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RFdmVu
dENvbnN0cnVjdG9yQ29uc3RydWN0b3JTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsIGVuY29kZWRWYWx1ZSwgIlRlc3RFdmVudENvbnN0cnVjdG9yIik7Cit9CisKK3N0YXRp
YyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RUZXN0RXZlbnRUYXJnZXRDb25zdHJ1
Y3RvckdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0R2xv
YmFsT2JqZWN0JiB0aGlzT2JqZWN0KQoreworICAgIFVOVVNFRF9QQVJBTShsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKKyAgICByZXR1cm4gSlNUZXN0RXZlbnRUYXJnZXQ6OmdldENvbnN0cnVjdG9yKEpT
Qzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCB0aGlzT2JqZWN0Lmdsb2JhbE9iamVjdCgp
KTsKK30KKworRW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0VGVzdEV2ZW50VGFyZ2V0
Q29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQoreworICAgIHJldHVybiBJRExBdHRyaWJ1
dGU8SlNUZXN0R2xvYmFsT2JqZWN0Pjo6Z2V0PGpzVGVzdEdsb2JhbE9iamVjdFRlc3RFdmVudFRh
cmdldENvbnN0cnVjdG9yR2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAi
VGVzdEV2ZW50VGFyZ2V0Iik7Cit9CisKK3N0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RHbG9i
YWxPYmplY3RUZXN0RXZlbnRUYXJnZXRDb25zdHJ1Y3RvclNldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0R2xvYmFsT2JqZWN0JiB0aGlzT2JqZWN0LCBKU1Zh
bHVlIHZhbHVlKQoreworICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9i
amVjdCk7CisgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IuCisgICAgcmV0
dXJuIHRoaXNPYmplY3QucHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCBy
ZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oIlRlc3RFdmVudFRhcmdldCIpLCBzdHJsZW4o
IlRlc3RFdmVudFRhcmdldCIpKSwgdmFsdWUpOworfQorCitib29sIHNldEpTVGVzdEdsb2JhbE9i
amVjdFRlc3RFdmVudFRhcmdldENvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkKK3sKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdEdsb2JhbE9iamVjdD46
OnNldDxzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0RXZlbnRUYXJnZXRDb25zdHJ1Y3RvclNldHRl
cj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiVGVzdEV2
ZW50VGFyZ2V0Iik7Cit9CisKK3N0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmpl
Y3RUZXN0RXhjZXB0aW9uQ29uc3RydWN0b3JHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxH
bG9iYWxPYmplY3QsIEpTVGVzdEdsb2JhbE9iamVjdCYgdGhpc09iamVjdCkKK3sKKyAgICBVTlVT
RURfUEFSQU0obGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgcmV0dXJuIEpTVGVzdEV4Y2VwdGlv
bjo6Z2V0Q29uc3RydWN0b3IoSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIHRoaXNP
YmplY3QuZ2xvYmFsT2JqZWN0KCkpOworfQorCitFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RHbG9iYWxP
YmplY3RUZXN0RXhjZXB0aW9uQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQoreworICAg
IHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0R2xvYmFsT2JqZWN0Pjo6Z2V0PGpzVGVzdEdsb2Jh
bE9iamVjdFRlc3RFeGNlcHRpb25Db25zdHJ1Y3RvckdldHRlcj4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNWYWx1ZSwgIlRlc3RFeGNlcHRpb24iKTsKK30KKworc3RhdGljIGlubGluZSBib29s
IHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RFeGNlcHRpb25Db25zdHJ1Y3RvclNldHRlcihKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0R2xvYmFsT2JqZWN0JiB0aGlz
T2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQoreworICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCk7CisgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0
b3IuCisgICAgcmV0dXJuIHRoaXNPYmplY3QucHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oIlRlc3RFeGNlcHRpb24i
KSwgc3RybGVuKCJUZXN0RXhjZXB0aW9uIikpLCB2YWx1ZSk7Cit9CisKK2Jvb2wgc2V0SlNUZXN0
R2xvYmFsT2JqZWN0VGVzdEV4Y2VwdGlvbkNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSkKK3sKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdEdsb2JhbE9i
amVjdD46OnNldDxzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0RXhjZXB0aW9uQ29uc3RydWN0b3JT
ZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIlRl
c3RFeGNlcHRpb24iKTsKK30KKworc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdEdsb2JhbE9i
amVjdFRlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlQ29uc3RydWN0b3JHZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdEdsb2JhbE9iamVjdCYgdGhpc09iamVjdCkK
K3sKKyAgICBVTlVTRURfUEFSQU0obGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgcmV0dXJuIEpT
VGVzdEdlbmVyYXRlSXNSZWFjaGFibGU6OmdldENvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpLCB0aGlzT2JqZWN0Lmdsb2JhbE9iamVjdCgpKTsKK30KKworRW5jb2Rl
ZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0VGVzdEdlbmVyYXRlSXNSZWFjaGFibGVDb25zdHJ1
Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCit7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rl
c3RHbG9iYWxPYmplY3Q+OjpnZXQ8anNUZXN0R2xvYmFsT2JqZWN0VGVzdEdlbmVyYXRlSXNSZWFj
aGFibGVDb25zdHJ1Y3RvckdldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwg
IlRlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlIik7Cit9CisKK3N0YXRpYyBpbmxpbmUgYm9vbCBzZXRK
U1Rlc3RHbG9iYWxPYmplY3RUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZUNvbnN0cnVjdG9yU2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RHbG9iYWxPYmplY3Qm
IHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCit7CisgICAgYXV0byYgdm0gPSBKU0M6OmdldFZN
KCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25z
dHJ1Y3Rvci4KKyAgICByZXR1cm4gdGhpc09iamVjdC5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiVGVzdEdlbmVy
YXRlSXNSZWFjaGFibGUiKSwgc3RybGVuKCJUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZSIpKSwgdmFs
dWUpOworfQorCitib29sIHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RHZW5lcmF0ZUlzUmVhY2hh
YmxlQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQoreworICAg
IHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0R2xvYmFsT2JqZWN0Pjo6c2V0PHNldEpTVGVzdEds
b2JhbE9iamVjdFRlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlQ29uc3RydWN0b3JTZXR0ZXI+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIlRlc3RHZW5lcmF0ZUlz
UmVhY2hhYmxlIik7Cit9CisKK3N0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmpl
Y3RUZXN0R2xvYmFsT2JqZWN0Q29uc3RydWN0b3JHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTVGVzdEdsb2JhbE9iamVjdCYgdGhpc09iamVjdCkKK3sKKyAgICBV
TlVTRURfUEFSQU0obGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgcmV0dXJuIEpTVGVzdEdsb2Jh
bE9iamVjdDo6Z2V0Q29uc3RydWN0b3IoSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCks
IHRoaXNPYmplY3QuZ2xvYmFsT2JqZWN0KCkpOworfQorCitFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RH
bG9iYWxPYmplY3RUZXN0R2xvYmFsT2JqZWN0Q29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1l
KQoreworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0R2xvYmFsT2JqZWN0Pjo6Z2V0PGpz
VGVzdEdsb2JhbE9iamVjdFRlc3RHbG9iYWxPYmplY3RDb25zdHJ1Y3RvckdldHRlcj4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIlRlc3RHbG9iYWxPYmplY3QiKTsKK30KKworc3Rh
dGljIGlubGluZSBib29sIHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RHbG9iYWxPYmplY3RDb25z
dHJ1Y3RvclNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0
R2xvYmFsT2JqZWN0JiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQoreworICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgLy8gU2hhZG93aW5nIGEg
YnVpbHQtaW4gY29uc3RydWN0b3IuCisgICAgcmV0dXJuIHRoaXNPYmplY3QucHV0RGlyZWN0KHZt
LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFy
Kj4oIlRlc3RHbG9iYWxPYmplY3QiKSwgc3RybGVuKCJUZXN0R2xvYmFsT2JqZWN0IikpLCB2YWx1
ZSk7Cit9CisKK2Jvb2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdEdsb2JhbE9iamVjdENvbnN0
cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK3sKKyAgICByZXR1cm4g
SURMQXR0cmlidXRlPEpTVGVzdEdsb2JhbE9iamVjdD46OnNldDxzZXRKU1Rlc3RHbG9iYWxPYmpl
Y3RUZXN0R2xvYmFsT2JqZWN0Q29uc3RydWN0b3JTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIlRlc3RHbG9iYWxPYmplY3QiKTsKK30KKworc3Rh
dGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdFRlc3RJbmRleGVkU2V0dGVyTm9J
ZGVudGlmaWVyQ29uc3RydWN0b3JHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTVGVzdEdsb2JhbE9iamVjdCYgdGhpc09iamVjdCkKK3sKKyAgICBVTlVTRURfUEFS
QU0obGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgcmV0dXJuIEpTVGVzdEluZGV4ZWRTZXR0ZXJO
b0lkZW50aWZpZXI6OmdldENvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpLCB0aGlzT2JqZWN0Lmdsb2JhbE9iamVjdCgpKTsKK30KKworRW5jb2RlZEpTVmFsdWUganNU
ZXN0R2xvYmFsT2JqZWN0VGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXJDb25zdHJ1Y3RvcihK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBQcm9wZXJ0eU5hbWUpCit7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RHbG9i
YWxPYmplY3Q+OjpnZXQ8anNUZXN0R2xvYmFsT2JqZWN0VGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50
aWZpZXJDb25zdHJ1Y3RvckdldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwg
IlRlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyIik7Cit9CisKK3N0YXRpYyBpbmxpbmUgYm9v
bCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllckNvbnN0
cnVjdG9yU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RH
bG9iYWxPYmplY3QmIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCit7CisgICAgYXV0byYgdm0g
PSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICAvLyBTaGFkb3dpbmcgYSBi
dWlsdC1pbiBjb25zdHJ1Y3Rvci4KKyAgICByZXR1cm4gdGhpc09iamVjdC5wdXREaXJlY3Qodm0s
IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIq
PigiVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIiKSwgc3RybGVuKCJUZXN0SW5kZXhlZFNl
dHRlck5vSWRlbnRpZmllciIpKSwgdmFsdWUpOworfQorCitib29sIHNldEpTVGVzdEdsb2JhbE9i
amVjdFRlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyQ29uc3RydWN0b3IoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQoreworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0
R2xvYmFsT2JqZWN0Pjo6c2V0PHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RJbmRleGVkU2V0dGVy
Tm9JZGVudGlmaWVyQ29uc3RydWN0b3JTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsIGVuY29kZWRWYWx1ZSwgIlRlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyIik7Cit9
CisKK3N0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RUZXN0SW5kZXhlZFNl
dHRlclRocm93aW5nRXhjZXB0aW9uQ29uc3RydWN0b3JHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdEdsb2JhbE9iamVjdCYgdGhpc09iamVjdCkKK3sKKyAg
ICBVTlVTRURfUEFSQU0obGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgcmV0dXJuIEpTVGVzdElu
ZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbjo6Z2V0Q29uc3RydWN0b3IoSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCksIHRoaXNPYmplY3QuZ2xvYmFsT2JqZWN0KCkpOworfQorCitF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RUZXN0SW5kZXhlZFNldHRlclRocm93aW5n
RXhjZXB0aW9uQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQoreworICAgIHJldHVybiBJ
RExBdHRyaWJ1dGU8SlNUZXN0R2xvYmFsT2JqZWN0Pjo6Z2V0PGpzVGVzdEdsb2JhbE9iamVjdFRl
c3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb25Db25zdHJ1Y3RvckdldHRlcj4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIlRlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNl
cHRpb24iKTsKK30KKworc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdEdsb2JhbE9iamVjdFRl
c3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb25Db25zdHJ1Y3RvclNldHRlcihKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0R2xvYmFsT2JqZWN0JiB0aGlzT2Jq
ZWN0LCBKU1ZhbHVlIHZhbHVlKQoreworICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCk7CisgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3Iu
CisgICAgcmV0dXJuIHRoaXNPYmplY3QucHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oIlRlc3RJbmRleGVkU2V0dGVy
VGhyb3dpbmdFeGNlcHRpb24iKSwgc3RybGVuKCJUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhj
ZXB0aW9uIikpLCB2YWx1ZSk7Cit9CisKK2Jvb2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdElu
ZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbkNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSkKK3sKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdEdsb2Jh
bE9iamVjdD46OnNldDxzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0SW5kZXhlZFNldHRlclRocm93
aW5nRXhjZXB0aW9uQ29uc3RydWN0b3JTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsIGVuY29kZWRWYWx1ZSwgIlRlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24i
KTsKK30KKworc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdFRlc3RJbmRl
eGVkU2V0dGVyV2l0aElkZW50aWZpZXJDb25zdHJ1Y3RvckdldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0R2xvYmFsT2JqZWN0JiB0aGlzT2JqZWN0KQorewor
ICAgIFVOVVNFRF9QQVJBTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICByZXR1cm4gSlNUZXN0
SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyOjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0KSwgdGhpc09iamVjdC5nbG9iYWxPYmplY3QoKSk7Cit9CisKK0Vu
Y29kZWRKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdFRlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50
aWZpZXJDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCit7CisgICAgcmV0dXJuIElETEF0
dHJpYnV0ZTxKU1Rlc3RHbG9iYWxPYmplY3Q+OjpnZXQ8anNUZXN0R2xvYmFsT2JqZWN0VGVzdElu
ZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllckNvbnN0cnVjdG9yR2V0dGVyPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCAiVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllciIpOwor
fQorCitzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdEluZGV4ZWRT
ZXR0ZXJXaXRoSWRlbnRpZmllckNvbnN0cnVjdG9yU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RHbG9iYWxPYmplY3QmIHRoaXNPYmplY3QsIEpTVmFsdWUg
dmFsdWUpCit7CisgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKKyAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3Rvci4KKyAgICByZXR1cm4g
dGhpc09iamVjdC5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmll
ciIpLCBzdHJsZW4oIlRlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIiKSksIHZhbHVlKTsK
K30KKworYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVu
dGlmaWVyQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorewor
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0R2xvYmFsT2JqZWN0Pjo6c2V0PHNldEpTVGVz
dEdsb2JhbE9iamVjdFRlc3RJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXJDb25zdHJ1Y3RvclNl
dHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiVGVz
dEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllciIpOworfQorCisjaWYgRU5BQkxFKENvbmRpdGlv
bjEpIHx8IEVOQUJMRShDb25kaXRpb24yKQorc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdEds
b2JhbE9iamVjdFRlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvckdldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0R2xvYmFsT2JqZWN0JiB0aGlzT2JqZWN0KQorewor
ICAgIFVOVVNFRF9QQVJBTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICByZXR1cm4gSlNUZXN0
SW50ZXJmYWNlOjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0
KSwgdGhpc09iamVjdC5nbG9iYWxPYmplY3QoKSk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIGpzVGVz
dEdsb2JhbE9iamVjdFRlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUp
Cit7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RHbG9iYWxPYmplY3Q+OjpnZXQ8anNU
ZXN0R2xvYmFsT2JqZWN0VGVzdEludGVyZmFjZUNvbnN0cnVjdG9yR2V0dGVyPigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiVGVzdEludGVyZmFjZSIpOworfQorCisjZW5kaWYKKwor
I2lmIEVOQUJMRShDb25kaXRpb24xKSB8fCBFTkFCTEUoQ29uZGl0aW9uMikKK3N0YXRpYyBpbmxp
bmUgYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3JTZXR0
ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdEdsb2JhbE9iamVj
dCYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOworICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNv
bnN0cnVjdG9yLgorICAgIHJldHVybiB0aGlzT2JqZWN0LnB1dERpcmVjdCh2bSwgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJUZXN0SW50
ZXJmYWNlIiksIHN0cmxlbigiVGVzdEludGVyZmFjZSIpKSwgdmFsdWUpOworfQorCitib29sIHNl
dEpTVGVzdEdsb2JhbE9iamVjdFRlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUpCit7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RH
bG9iYWxPYmplY3Q+OjpzZXQ8c2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdEludGVyZmFjZUNvbnN0
cnVjdG9yU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFs
dWUsICJUZXN0SW50ZXJmYWNlIik7Cit9CisKKyNlbmRpZgorCitzdGF0aWMgaW5saW5lIEpTVmFs
dWUganNUZXN0R2xvYmFsT2JqZWN0VGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlQ29uc3Ry
dWN0b3JHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdEds
b2JhbE9iamVjdCYgdGhpc09iamVjdCkKK3sKKyAgICBVTlVTRURfUEFSQU0obGV4aWNhbEdsb2Jh
bE9iamVjdCk7CisgICAgcmV0dXJuIEpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlOjpn
ZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgdGhpc09iamVj
dC5nbG9iYWxPYmplY3QoKSk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVj
dFRlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZUNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0
KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5
TmFtZSkKK3sKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdEdsb2JhbE9iamVjdD46Omdl
dDxqc1Rlc3RHbG9iYWxPYmplY3RUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmVDb25zdHJ1
Y3RvckdldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIlRlc3RJbnRlcmZh
Y2VMZWFkaW5nVW5kZXJzY29yZSIpOworfQorCitzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0
R2xvYmFsT2JqZWN0VGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlQ29uc3RydWN0b3JTZXR0
ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdEdsb2JhbE9iamVj
dCYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOworICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNv
bnN0cnVjdG9yLgorICAgIHJldHVybiB0aGlzT2JqZWN0LnB1dERpcmVjdCh2bSwgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJUZXN0SW50
ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmUiKSwgc3RybGVuKCJUZXN0SW50ZXJmYWNlTGVhZGluZ1Vu
ZGVyc2NvcmUiKSksIHZhbHVlKTsKK30KKworYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0
SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmVDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkVmFsdWUpCit7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RHbG9iYWxP
YmplY3Q+OjpzZXQ8c2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdEludGVyZmFjZUxlYWRpbmdVbmRl
cnNjb3JlQ29uc3RydWN0b3JTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
IGVuY29kZWRWYWx1ZSwgIlRlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZSIpOworfQorCitz
dGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0VGVzdEl0ZXJhYmxlQ29uc3Ry
dWN0b3JHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdEds
b2JhbE9iamVjdCYgdGhpc09iamVjdCkKK3sKKyAgICBVTlVTRURfUEFSQU0obGV4aWNhbEdsb2Jh
bE9iamVjdCk7CisgICAgcmV0dXJuIEpTVGVzdEl0ZXJhYmxlOjpnZXRDb25zdHJ1Y3RvcihKU0M6
OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgdGhpc09iamVjdC5nbG9iYWxPYmplY3QoKSk7
Cit9CisKK0VuY29kZWRKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdFRlc3RJdGVyYWJsZUNvbnN0
cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKK3sKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpT
VGVzdEdsb2JhbE9iamVjdD46OmdldDxqc1Rlc3RHbG9iYWxPYmplY3RUZXN0SXRlcmFibGVDb25z
dHJ1Y3RvckdldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIlRlc3RJdGVy
YWJsZSIpOworfQorCitzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVz
dEl0ZXJhYmxlQ29uc3RydWN0b3JTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTVGVzdEdsb2JhbE9iamVjdCYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKK3sK
KyAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOworICAgIC8v
IFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yLgorICAgIHJldHVybiB0aGlzT2JqZWN0
LnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBMQ2hhcio+KCJUZXN0SXRlcmFibGUiKSwgc3RybGVuKCJUZXN0SXRlcmFibGUiKSks
IHZhbHVlKTsKK30KKworYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0SXRlcmFibGVDb25z
dHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCit7CisgICAgcmV0dXJu
IElETEF0dHJpYnV0ZTxKU1Rlc3RHbG9iYWxPYmplY3Q+OjpzZXQ8c2V0SlNUZXN0R2xvYmFsT2Jq
ZWN0VGVzdEl0ZXJhYmxlQ29uc3RydWN0b3JTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIlRlc3RJdGVyYWJsZSIpOworfQorCitzdGF0aWMgaW5s
aW5lIEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0VGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29u
c3RydWN0b3JHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVz
dEdsb2JhbE9iamVjdCYgdGhpc09iamVjdCkKK3sKKyAgICBVTlVTRURfUEFSQU0obGV4aWNhbEds
b2JhbE9iamVjdCk7CisgICAgcmV0dXJuIEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yOjpnZXRD
b25zdHJ1Y3RvcihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgdGhpc09iamVjdC5n
bG9iYWxPYmplY3QoKSk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdFRl
c3RKU0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKK3sK
KyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdEdsb2JhbE9iamVjdD46OmdldDxqc1Rlc3RH
bG9iYWxPYmplY3RUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3RvckdldHRlcj4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIlRlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvciIp
OworfQorCitzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdEpTQnVp
bHRpbkNvbnN0cnVjdG9yQ29uc3RydWN0b3JTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxH
bG9iYWxPYmplY3QsIEpTVGVzdEdsb2JhbE9iamVjdCYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1
ZSkKK3sKKyAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwor
ICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yLgorICAgIHJldHVybiB0aGlz
T2JqZWN0LnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IiKSwgc3RybGVu
KCJUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IiKSksIHZhbHVlKTsKK30KKworYm9vbCBzZXRKU1Rl
c3RHbG9iYWxPYmplY3RUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3RvcihKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCit7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U1Rlc3RHbG9iYWxPYmplY3Q+OjpzZXQ8c2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdEpTQnVpbHRp
bkNvbnN0cnVjdG9yQ29uc3RydWN0b3JTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsIGVuY29kZWRWYWx1ZSwgIlRlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvciIpOworfQorCitz
dGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0VGVzdE1hcExpa2VDb25zdHJ1
Y3RvckdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0R2xv
YmFsT2JqZWN0JiB0aGlzT2JqZWN0KQoreworICAgIFVOVVNFRF9QQVJBTShsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKKyAgICByZXR1cm4gSlNUZXN0TWFwTGlrZTo6Z2V0Q29uc3RydWN0b3IoSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIHRoaXNPYmplY3QuZ2xvYmFsT2JqZWN0KCkpOwor
fQorCitFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RUZXN0TWFwTGlrZUNvbnN0cnVj
dG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKK3sKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVz
dEdsb2JhbE9iamVjdD46OmdldDxqc1Rlc3RHbG9iYWxPYmplY3RUZXN0TWFwTGlrZUNvbnN0cnVj
dG9yR2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiVGVzdE1hcExpa2Ui
KTsKK30KKworc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RNYXBM
aWtlQ29uc3RydWN0b3JTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTVGVzdEdsb2JhbE9iamVjdCYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBh
dXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOworICAgIC8vIFNoYWRv
d2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yLgorICAgIHJldHVybiB0aGlzT2JqZWN0LnB1dERp
cmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25z
dCBMQ2hhcio+KCJUZXN0TWFwTGlrZSIpLCBzdHJsZW4oIlRlc3RNYXBMaWtlIikpLCB2YWx1ZSk7
Cit9CisKK2Jvb2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdE1hcExpa2VDb25zdHJ1Y3RvcihK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCit7CisgICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU1Rlc3RHbG9iYWxPYmplY3Q+OjpzZXQ8c2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdE1h
cExpa2VDb25zdHJ1Y3RvclNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwg
ZW5jb2RlZFZhbHVlLCAiVGVzdE1hcExpa2UiKTsKK30KKworc3RhdGljIGlubGluZSBKU1ZhbHVl
IGpzVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXJD
b25zdHJ1Y3RvckdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNU
ZXN0R2xvYmFsT2JqZWN0JiB0aGlzT2JqZWN0KQoreworICAgIFVOVVNFRF9QQVJBTShsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKKyAgICByZXR1cm4gSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9J
ZGVudGlmaWVyOjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0
KSwgdGhpc09iamVjdC5nbG9iYWxPYmplY3QoKSk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIGpzVGVz
dEdsb2JhbE9iamVjdFRlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXJDb25zdHJ1
Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCit7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rl
c3RHbG9iYWxPYmplY3Q+OjpnZXQ8anNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkQW5kSW5kZXhl
ZFNldHRlck5vSWRlbnRpZmllckNvbnN0cnVjdG9yR2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhpc1ZhbHVlLCAiVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllciIpOwor
fQorCitzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkQW5k
SW5kZXhlZFNldHRlck5vSWRlbnRpZmllckNvbnN0cnVjdG9yU2V0dGVyKEpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RHbG9iYWxPYmplY3QmIHRoaXNPYmplY3QsIEpT
VmFsdWUgdmFsdWUpCit7CisgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKKyAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3Rvci4KKyAgICBy
ZXR1cm4gdGhpc09iamVjdC5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0s
IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRl
ck5vSWRlbnRpZmllciIpLCBzdHJsZW4oIlRlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50
aWZpZXIiKSksIHZhbHVlKTsKK30KKworYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFt
ZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlKQoreworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0R2xv
YmFsT2JqZWN0Pjo6c2V0PHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZEFuZEluZGV4ZWRT
ZXR0ZXJOb0lkZW50aWZpZXJDb25zdHJ1Y3RvclNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRl
bnRpZmllciIpOworfQorCitzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0
VGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uQ29uc3RydWN0b3JHZXR0
ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdEdsb2JhbE9iamVj
dCYgdGhpc09iamVjdCkKK3sKKyAgICBVTlVTRURfUEFSQU0obGV4aWNhbEdsb2JhbE9iamVjdCk7
CisgICAgcmV0dXJuIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9u
OjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgdGhpc09i
amVjdC5nbG9iYWxPYmplY3QoKSk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIGpzVGVzdEdsb2JhbE9i
amVjdFRlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbkNvbnN0cnVjdG9y
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIFByb3BlcnR5TmFtZSkKK3sKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdEds
b2JhbE9iamVjdD46OmdldDxqc1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRBbmRJbmRleGVkU2V0
dGVyVGhyb3dpbmdFeGNlcHRpb25Db25zdHJ1Y3RvckdldHRlcj4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNWYWx1ZSwgIlRlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlv
biIpOworfQorCitzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdE5h
bWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uQ29uc3RydWN0b3JTZXR0ZXIoSlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdEdsb2JhbE9iamVjdCYgdGhp
c09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxl
eGljYWxHbG9iYWxPYmplY3QpOworICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVj
dG9yLgorICAgIHJldHVybiB0aGlzT2JqZWN0LnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJUZXN0TmFtZWRBbmRJ
bmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24iKSwgc3RybGVuKCJUZXN0TmFtZWRBbmRJbmRl
eGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24iKSksIHZhbHVlKTsKK30KKworYm9vbCBzZXRKU1Rl
c3RHbG9iYWxPYmplY3RUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb25D
b25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCit7CisgICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RHbG9iYWxPYmplY3Q+OjpzZXQ8c2V0SlNUZXN0R2xvYmFs
T2JqZWN0VGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uQ29uc3RydWN0
b3JTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwg
IlRlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbiIpOworfQorCitzdGF0
aWMgaW5saW5lIEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkQW5kSW5kZXhlZFNl
dHRlcldpdGhJZGVudGlmaWVyQ29uc3RydWN0b3JHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTVGVzdEdsb2JhbE9iamVjdCYgdGhpc09iamVjdCkKK3sKKyAgICBV
TlVTRURfUEFSQU0obGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgcmV0dXJuIEpTVGVzdE5hbWVk
QW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyOjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZN
KCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgdGhpc09iamVjdC5nbG9iYWxPYmplY3QoKSk7Cit9CisK
K0VuY29kZWRKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZEFuZEluZGV4ZWRTZXR0
ZXJXaXRoSWRlbnRpZmllckNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKK3sKKyAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdEdsb2JhbE9iamVjdD46OmdldDxqc1Rlc3RHbG9iYWxP
YmplY3RUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXJDb25zdHJ1Y3Rvckdl
dHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIlRlc3ROYW1lZEFuZEluZGV4
ZWRTZXR0ZXJXaXRoSWRlbnRpZmllciIpOworfQorCitzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNU
ZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyQ29u
c3RydWN0b3JTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVz
dEdsb2JhbE9iamVjdCYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBhdXRvJiB2
bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOworICAgIC8vIFNoYWRvd2luZyBh
IGJ1aWx0LWluIGNvbnN0cnVjdG9yLgorICAgIHJldHVybiB0aGlzT2JqZWN0LnB1dERpcmVjdCh2
bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hh
cio+KCJUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIiKSwgc3RybGVuKCJU
ZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIiKSksIHZhbHVlKTsKK30KKwor
Ym9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElk
ZW50aWZpZXJDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCit7
CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RHbG9iYWxPYmplY3Q+OjpzZXQ8c2V0SlNU
ZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyQ29u
c3RydWN0b3JTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRW
YWx1ZSwgIlRlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllciIpOworfQorCitz
dGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkQ29uc3RydWN0
b3JDb25zdHJ1Y3RvckdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNUZXN0R2xvYmFsT2JqZWN0JiB0aGlzT2JqZWN0KQoreworICAgIFVOVVNFRF9QQVJBTShsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKKyAgICByZXR1cm4gSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6Z2V0
Q29uc3RydWN0b3IoSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIHRoaXNPYmplY3Qu
Z2xvYmFsT2JqZWN0KCkpOworfQorCitFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RU
ZXN0TmFtZWRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKK3sKKyAg
ICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdEdsb2JhbE9iamVjdD46OmdldDxqc1Rlc3RHbG9i
YWxPYmplY3RUZXN0TmFtZWRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yR2V0dGVyPigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiVGVzdE5hbWVkQ29uc3RydWN0b3IiKTsKK30KKworc3Rh
dGljIGlubGluZSBib29sIHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZENvbnN0cnVjdG9y
Q29uc3RydWN0b3JTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpT
VGVzdEdsb2JhbE9iamVjdCYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBhdXRv
JiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOworICAgIC8vIFNoYWRvd2lu
ZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yLgorICAgIHJldHVybiB0aGlzT2JqZWN0LnB1dERpcmVj
dCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBM
Q2hhcio+KCJUZXN0TmFtZWRDb25zdHJ1Y3RvciIpLCBzdHJsZW4oIlRlc3ROYW1lZENvbnN0cnVj
dG9yIikpLCB2YWx1ZSk7Cit9CisKK2Jvb2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVk
Q29uc3RydWN0b3JDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUp
Cit7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RHbG9iYWxPYmplY3Q+OjpzZXQ8c2V0
SlNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1Y3RvclNldHRlcj4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiVGVzdE5hbWVk
Q29uc3RydWN0b3IiKTsKK30KKworc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdEdsb2JhbE9i
amVjdEF1ZGlvQ29uc3RydWN0b3JHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTVGVzdEdsb2JhbE9iamVjdCYgdGhpc09iamVjdCkKK3sKKyAgICBVTlVTRURfUEFS
QU0obGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgcmV0dXJuIEpTVGVzdE5hbWVkQ29uc3RydWN0
b3JOYW1lZDo6Z2V0Q29uc3RydWN0b3IoSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCks
IHRoaXNPYmplY3QuZ2xvYmFsT2JqZWN0KCkpOworfQorCitFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RH
bG9iYWxPYmplY3RBdWRpb0NvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKK3sKKyAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdEdsb2JhbE9iamVjdD46OmdldDxqc1Rlc3RHbG9iYWxP
YmplY3RBdWRpb0NvbnN0cnVjdG9yR2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCAiQXVkaW8iKTsKK30KKworc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdEdsb2JhbE9i
amVjdEF1ZGlvQ29uc3RydWN0b3JTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTVGVzdEdsb2JhbE9iamVjdCYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKK3sK
KyAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOworICAgIC8v
IFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yLgorICAgIHJldHVybiB0aGlzT2JqZWN0
LnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBMQ2hhcio+KCJBdWRpbyIpLCBzdHJsZW4oIkF1ZGlvIikpLCB2YWx1ZSk7Cit9CisK
K2Jvb2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0QXVkaW9Db25zdHJ1Y3RvcihKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUpCit7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RH
bG9iYWxPYmplY3Q+OjpzZXQ8c2V0SlNUZXN0R2xvYmFsT2JqZWN0QXVkaW9Db25zdHJ1Y3RvclNl
dHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiQXVk
aW8iKTsKK30KKworc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdFRlc3RO
YW1lZERlbGV0ZXJOb0lkZW50aWZpZXJDb25zdHJ1Y3RvckdldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0R2xvYmFsT2JqZWN0JiB0aGlzT2JqZWN0KQorewor
ICAgIFVOVVNFRF9QQVJBTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICByZXR1cm4gSlNUZXN0
TmFtZWREZWxldGVyTm9JZGVudGlmaWVyOjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KSwgdGhpc09iamVjdC5nbG9iYWxPYmplY3QoKSk7Cit9CisKK0VuY29k
ZWRKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXJD
b25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCit7CisgICAgcmV0dXJuIElETEF0dHJpYnV0
ZTxKU1Rlc3RHbG9iYWxPYmplY3Q+OjpnZXQ8anNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkRGVs
ZXRlck5vSWRlbnRpZmllckNvbnN0cnVjdG9yR2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCAiVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllciIpOworfQorCitzdGF0aWMg
aW5saW5lIGJvb2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkRGVsZXRlck5vSWRlbnRp
ZmllckNvbnN0cnVjdG9yU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU1Rlc3RHbG9iYWxPYmplY3QmIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCit7CisgICAg
YXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICAvLyBTaGFk
b3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3Rvci4KKyAgICByZXR1cm4gdGhpc09iamVjdC5wdXRE
aXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgTENoYXIqPigiVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllciIpLCBzdHJsZW4oIlRlc3RO
YW1lZERlbGV0ZXJOb0lkZW50aWZpZXIiKSksIHZhbHVlKTsKK30KKworYm9vbCBzZXRKU1Rlc3RH
bG9iYWxPYmplY3RUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyQ29uc3RydWN0b3IoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQoreworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8
SlNUZXN0R2xvYmFsT2JqZWN0Pjo6c2V0PHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZERl
bGV0ZXJOb0lkZW50aWZpZXJDb25zdHJ1Y3RvclNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllciIp
OworfQorCitzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVk
RGVsZXRlclRocm93aW5nRXhjZXB0aW9uQ29uc3RydWN0b3JHZXR0ZXIoSlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdEdsb2JhbE9iamVjdCYgdGhpc09iamVjdCkKK3sK
KyAgICBVTlVTRURfUEFSQU0obGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgcmV0dXJuIEpTVGVz
dE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uOjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZN
KCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgdGhpc09iamVjdC5nbG9iYWxPYmplY3QoKSk7Cit9CisK
K0VuY29kZWRKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZERlbGV0ZXJUaHJvd2lu
Z0V4Y2VwdGlvbkNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKK3sKKyAgICByZXR1cm4g
SURMQXR0cmlidXRlPEpTVGVzdEdsb2JhbE9iamVjdD46OmdldDxqc1Rlc3RHbG9iYWxPYmplY3RU
ZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb25Db25zdHJ1Y3RvckdldHRlcj4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIlRlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2Vw
dGlvbiIpOworfQorCitzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVz
dE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uQ29uc3RydWN0b3JTZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdEdsb2JhbE9iamVjdCYgdGhpc09iamVj
dCwgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOworICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yLgor
ICAgIHJldHVybiB0aGlzT2JqZWN0LnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJUZXN0TmFtZWREZWxldGVyVGhy
b3dpbmdFeGNlcHRpb24iKSwgc3RybGVuKCJUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRp
b24iKSksIHZhbHVlKTsKK30KKworYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRE
ZWxldGVyVGhyb3dpbmdFeGNlcHRpb25Db25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUpCit7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RHbG9iYWxPYmpl
Y3Q+OjpzZXQ8c2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhj
ZXB0aW9uQ29uc3RydWN0b3JTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
IGVuY29kZWRWYWx1ZSwgIlRlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbiIpOworfQor
CitzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkRGVsZXRl
cldpdGhJZGVudGlmaWVyQ29uc3RydWN0b3JHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxH
bG9iYWxPYmplY3QsIEpTVGVzdEdsb2JhbE9iamVjdCYgdGhpc09iamVjdCkKK3sKKyAgICBVTlVT
RURfUEFSQU0obGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgcmV0dXJuIEpTVGVzdE5hbWVkRGVs
ZXRlcldpdGhJZGVudGlmaWVyOjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKCZsZXhpY2FsR2xv
YmFsT2JqZWN0KSwgdGhpc09iamVjdC5nbG9iYWxPYmplY3QoKSk7Cit9CisKK0VuY29kZWRKU1Zh
bHVlIGpzVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllckNvbnN0
cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKK3sKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpT
VGVzdEdsb2JhbE9iamVjdD46OmdldDxqc1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWREZWxldGVy
V2l0aElkZW50aWZpZXJDb25zdHJ1Y3RvckdldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRo
aXNWYWx1ZSwgIlRlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllciIpOworfQorCitzdGF0aWMg
aW5saW5lIGJvb2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkRGVsZXRlcldpdGhJZGVu
dGlmaWVyQ29uc3RydWN0b3JTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTVGVzdEdsb2JhbE9iamVjdCYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAg
ICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOworICAgIC8vIFNo
YWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yLgorICAgIHJldHVybiB0aGlzT2JqZWN0LnB1
dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxj
b25zdCBMQ2hhcio+KCJUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIiKSwgc3RybGVuKCJU
ZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIiKSksIHZhbHVlKTsKK30KKworYm9vbCBzZXRK
U1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXJDb25zdHJ1Y3Rv
cihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCit7CisgICAgcmV0dXJuIElETEF0
dHJpYnV0ZTxKU1Rlc3RHbG9iYWxPYmplY3Q+OjpzZXQ8c2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVz
dE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyQ29uc3RydWN0b3JTZXR0ZXI+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIlRlc3ROYW1lZERlbGV0ZXJXaXRo
SWRlbnRpZmllciIpOworfQorCitzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0R2xvYmFsT2Jq
ZWN0VGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyQ29uc3RydWN0b3JHZXR0ZXIoSlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdEdsb2JhbE9iamVjdCYgdGhp
c09iamVjdCkKK3sKKyAgICBVTlVTRURfUEFSQU0obGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAg
cmV0dXJuIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyOjpnZXRDb25zdHJ1Y3Rv
cihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgdGhpc09iamVjdC5nbG9iYWxPYmpl
Y3QoKSk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZERl
bGV0ZXJXaXRoSW5kZXhlZEdldHRlckNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKK3sK
KyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdEdsb2JhbE9iamVjdD46OmdldDxqc1Rlc3RH
bG9iYWxPYmplY3RUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXJDb25zdHJ1Y3Rvckdl
dHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIlRlc3ROYW1lZERlbGV0ZXJX
aXRoSW5kZXhlZEdldHRlciIpOworfQorCitzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0R2xv
YmFsT2JqZWN0VGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyQ29uc3RydWN0b3JTZXR0
ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdEdsb2JhbE9iamVj
dCYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOworICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNv
bnN0cnVjdG9yLgorICAgIHJldHVybiB0aGlzT2JqZWN0LnB1dERpcmVjdCh2bSwgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJUZXN0TmFt
ZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIiKSwgc3RybGVuKCJUZXN0TmFtZWREZWxldGVyV2l0
aEluZGV4ZWRHZXR0ZXIiKSksIHZhbHVlKTsKK30KKworYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmpl
Y3RUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXJDb25zdHJ1Y3RvcihKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCit7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rl
c3RHbG9iYWxPYmplY3Q+OjpzZXQ8c2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkRGVsZXRl
cldpdGhJbmRleGVkR2V0dGVyQ29uc3RydWN0b3JTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIlRlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdl
dHRlciIpOworfQorCitzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0VGVz
dE5hbWVkR2V0dGVyQ2FsbFdpdGhDb25zdHJ1Y3RvckdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0R2xvYmFsT2JqZWN0JiB0aGlzT2JqZWN0KQoreworICAg
IFVOVVNFRF9QQVJBTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICByZXR1cm4gSlNUZXN0TmFt
ZWRHZXR0ZXJDYWxsV2l0aDo6Z2V0Q29uc3RydWN0b3IoSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCksIHRoaXNPYmplY3QuZ2xvYmFsT2JqZWN0KCkpOworfQorCitFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aENvbnN0cnVjdG9yKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSkKK3sKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdEdsb2Jh
bE9iamVjdD46OmdldDxqc1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aENv
bnN0cnVjdG9yR2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiVGVzdE5h
bWVkR2V0dGVyQ2FsbFdpdGgiKTsKK30KKworc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdEds
b2JhbE9iamVjdFRlc3ROYW1lZEdldHRlckNhbGxXaXRoQ29uc3RydWN0b3JTZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdEdsb2JhbE9iamVjdCYgdGhpc09i
amVjdCwgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpOworICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9y
LgorICAgIHJldHVybiB0aGlzT2JqZWN0LnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJUZXN0TmFtZWRHZXR0ZXJD
YWxsV2l0aCIpLCBzdHJsZW4oIlRlc3ROYW1lZEdldHRlckNhbGxXaXRoIikpLCB2YWx1ZSk7Cit9
CisKK2Jvb2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGhDb25z
dHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCit7CisgICAgcmV0dXJu
IElETEF0dHJpYnV0ZTxKU1Rlc3RHbG9iYWxPYmplY3Q+OjpzZXQ8c2V0SlNUZXN0R2xvYmFsT2Jq
ZWN0VGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGhDb25zdHJ1Y3RvclNldHRlcj4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiVGVzdE5hbWVkR2V0dGVyQ2FsbFdp
dGgiKTsKK30KKworc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdFRlc3RO
YW1lZEdldHRlck5vSWRlbnRpZmllckNvbnN0cnVjdG9yR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RHbG9iYWxPYmplY3QmIHRoaXNPYmplY3QpCit7Cisg
ICAgVU5VU0VEX1BBUkFNKGxleGljYWxHbG9iYWxPYmplY3QpOworICAgIHJldHVybiBKU1Rlc3RO
YW1lZEdldHRlck5vSWRlbnRpZmllcjo6Z2V0Q29uc3RydWN0b3IoSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCksIHRoaXNPYmplY3QuZ2xvYmFsT2JqZWN0KCkpOworfQorCitFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXJDb25z
dHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCit7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U1Rlc3RHbG9iYWxPYmplY3Q+OjpnZXQ8anNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkR2V0dGVy
Tm9JZGVudGlmaWVyQ29uc3RydWN0b3JHZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsICJUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXIiKTsKK30KKworc3RhdGljIGlubGlu
ZSBib29sIHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllckNv
bnN0cnVjdG9yU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rl
c3RHbG9iYWxPYmplY3QmIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCit7CisgICAgYXV0byYg
dm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICAvLyBTaGFkb3dpbmcg
YSBidWlsdC1pbiBjb25zdHJ1Y3Rvci4KKyAgICByZXR1cm4gdGhpc09iamVjdC5wdXREaXJlY3Qo
dm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENo
YXIqPigiVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyIiksIHN0cmxlbigiVGVzdE5hbWVkR2V0
dGVyTm9JZGVudGlmaWVyIikpLCB2YWx1ZSk7Cit9CisKK2Jvb2wgc2V0SlNUZXN0R2xvYmFsT2Jq
ZWN0VGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlKQoreworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0R2xv
YmFsT2JqZWN0Pjo6c2V0PHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZEdldHRlck5vSWRl
bnRpZmllckNvbnN0cnVjdG9yU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCBlbmNvZGVkVmFsdWUsICJUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXIiKTsKK30KKworc3Rh
dGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZEdldHRlcldpdGhJ
ZGVudGlmaWVyQ29uc3RydWN0b3JHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTVGVzdEdsb2JhbE9iamVjdCYgdGhpc09iamVjdCkKK3sKKyAgICBVTlVTRURfUEFS
QU0obGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgcmV0dXJuIEpTVGVzdE5hbWVkR2V0dGVyV2l0
aElkZW50aWZpZXI6OmdldENvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpLCB0aGlzT2JqZWN0Lmdsb2JhbE9iamVjdCgpKTsKK30KKworRW5jb2RlZEpTVmFsdWUganNU
ZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXJDb25zdHJ1Y3RvcihK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBQcm9wZXJ0eU5hbWUpCit7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RHbG9i
YWxPYmplY3Q+OjpnZXQ8anNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkR2V0dGVyV2l0aElkZW50
aWZpZXJDb25zdHJ1Y3RvckdldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwg
IlRlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyIik7Cit9CisKK3N0YXRpYyBpbmxpbmUgYm9v
bCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllckNvbnN0
cnVjdG9yU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RH
bG9iYWxPYmplY3QmIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCit7CisgICAgYXV0byYgdm0g
PSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICAvLyBTaGFkb3dpbmcgYSBi
dWlsdC1pbiBjb25zdHJ1Y3Rvci4KKyAgICByZXR1cm4gdGhpc09iamVjdC5wdXREaXJlY3Qodm0s
IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIq
PigiVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXIiKSwgc3RybGVuKCJUZXN0TmFtZWRHZXR0
ZXJXaXRoSWRlbnRpZmllciIpKSwgdmFsdWUpOworfQorCitib29sIHNldEpTVGVzdEdsb2JhbE9i
amVjdFRlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyQ29uc3RydWN0b3IoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQoreworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0
R2xvYmFsT2JqZWN0Pjo6c2V0PHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZEdldHRlcldp
dGhJZGVudGlmaWVyQ29uc3RydWN0b3JTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsIGVuY29kZWRWYWx1ZSwgIlRlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyIik7Cit9
CisKK3N0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0
ZXJOb0lkZW50aWZpZXJDb25zdHJ1Y3RvckdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNUZXN0R2xvYmFsT2JqZWN0JiB0aGlzT2JqZWN0KQoreworICAgIFVOVVNF
RF9QQVJBTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICByZXR1cm4gSlNUZXN0TmFtZWRTZXR0
ZXJOb0lkZW50aWZpZXI6OmdldENvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxP
YmplY3QpLCB0aGlzT2JqZWN0Lmdsb2JhbE9iamVjdCgpKTsKK30KKworRW5jb2RlZEpTVmFsdWUg
anNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyQ29uc3RydWN0b3Io
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgUHJvcGVydHlOYW1lKQoreworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0R2xv
YmFsT2JqZWN0Pjo6Z2V0PGpzVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZFNldHRlck5vSWRlbnRp
ZmllckNvbnN0cnVjdG9yR2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAi
VGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyIik7Cit9CisKK3N0YXRpYyBpbmxpbmUgYm9vbCBz
ZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXJDb25zdHJ1Y3Rv
clNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0R2xvYmFs
T2JqZWN0JiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQoreworICAgIGF1dG8mIHZtID0gSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQt
aW4gY29uc3RydWN0b3IuCisgICAgcmV0dXJuIHRoaXNPYmplY3QucHV0RGlyZWN0KHZtLCBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oIlRl
c3ROYW1lZFNldHRlck5vSWRlbnRpZmllciIpLCBzdHJsZW4oIlRlc3ROYW1lZFNldHRlck5vSWRl
bnRpZmllciIpKSwgdmFsdWUpOworfQorCitib29sIHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RO
YW1lZFNldHRlck5vSWRlbnRpZmllckNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSkKK3sKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdEdsb2JhbE9iamVj
dD46OnNldDxzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXJD
b25zdHJ1Y3RvclNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2Rl
ZFZhbHVlLCAiVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyIik7Cit9CisKK3N0YXRpYyBpbmxp
bmUgSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2Vw
dGlvbkNvbnN0cnVjdG9yR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU1Rlc3RHbG9iYWxPYmplY3QmIHRoaXNPYmplY3QpCit7CisgICAgVU5VU0VEX1BBUkFNKGxl
eGljYWxHbG9iYWxPYmplY3QpOworICAgIHJldHVybiBKU1Rlc3ROYW1lZFNldHRlclRocm93aW5n
RXhjZXB0aW9uOjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0
KSwgdGhpc09iamVjdC5nbG9iYWxPYmplY3QoKSk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIGpzVGVz
dEdsb2JhbE9iamVjdFRlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uQ29uc3RydWN0b3Io
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgUHJvcGVydHlOYW1lKQoreworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0R2xv
YmFsT2JqZWN0Pjo6Z2V0PGpzVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZFNldHRlclRocm93aW5n
RXhjZXB0aW9uQ29uc3RydWN0b3JHZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFs
dWUsICJUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbiIpOworfQorCitzdGF0aWMgaW5s
aW5lIGJvb2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNl
cHRpb25Db25zdHJ1Y3RvclNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNUZXN0R2xvYmFsT2JqZWN0JiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQoreworICAg
IGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgLy8gU2hh
ZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IuCisgICAgcmV0dXJuIHRoaXNPYmplY3QucHV0
RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNv
bnN0IExDaGFyKj4oIlRlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uIiksIHN0cmxlbigi
VGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24iKSksIHZhbHVlKTsKK30KKworYm9vbCBz
ZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbkNvbnN0
cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK3sKKyAgICByZXR1cm4g
SURMQXR0cmlidXRlPEpTVGVzdEdsb2JhbE9iamVjdD46OnNldDxzZXRKU1Rlc3RHbG9iYWxPYmpl
Y3RUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbkNvbnN0cnVjdG9yU2V0dGVyPigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJUZXN0TmFtZWRTZXR0
ZXJUaHJvd2luZ0V4Y2VwdGlvbiIpOworfQorCitzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0
R2xvYmFsT2JqZWN0VGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXJDb25zdHJ1Y3RvckdldHRl
cihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0R2xvYmFsT2JqZWN0
JiB0aGlzT2JqZWN0KQoreworICAgIFVOVVNFRF9QQVJBTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
KyAgICByZXR1cm4gSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllcjo6Z2V0Q29uc3RydWN0
b3IoSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIHRoaXNPYmplY3QuZ2xvYmFsT2Jq
ZWN0KCkpOworfQorCitFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRT
ZXR0ZXJXaXRoSWRlbnRpZmllckNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKK3sKKyAg
ICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdEdsb2JhbE9iamVjdD46OmdldDxqc1Rlc3RHbG9i
YWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllckNvbnN0cnVjdG9yR2V0dGVyPigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50
aWZpZXIiKTsKK30KKworc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdEdsb2JhbE9iamVjdFRl
c3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyQ29uc3RydWN0b3JTZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdEdsb2JhbE9iamVjdCYgdGhpc09iamVjdCwg
SlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9i
YWxPYmplY3QpOworICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yLgorICAg
IHJldHVybiB0aGlzT2JqZWN0LnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2
bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJUZXN0TmFtZWRTZXR0ZXJXaXRoSWRl
bnRpZmllciIpLCBzdHJsZW4oIlRlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyIikpLCB2YWx1
ZSk7Cit9CisKK2Jvb2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkU2V0dGVyV2l0aElk
ZW50aWZpZXJDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCit7
CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RHbG9iYWxPYmplY3Q+OjpzZXQ8c2V0SlNU
ZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXJDb25zdHJ1Y3RvclNl
dHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiVGVz
dE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIiKTsKK30KKworc3RhdGljIGlubGluZSBKU1ZhbHVl
IGpzVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQ29uc3Ry
dWN0b3JHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdEds
b2JhbE9iamVjdCYgdGhpc09iamVjdCkKK3sKKyAgICBVTlVTRURfUEFSQU0obGV4aWNhbEdsb2Jh
bE9iamVjdCk7CisgICAgcmV0dXJuIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXI6
OmdldENvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCB0aGlzT2Jq
ZWN0Lmdsb2JhbE9iamVjdCgpKTsKK30KKworRW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2Jq
ZWN0VGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJDb25zdHJ1Y3RvcihKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpCit7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RHbG9iYWxPYmplY3Q+
OjpnZXQ8anNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJD
b25zdHJ1Y3RvckdldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIlRlc3RO
YW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyIik7Cit9CisKK3N0YXRpYyBpbmxpbmUgYm9vbCBz
ZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckNvbnN0
cnVjdG9yU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RH
bG9iYWxPYmplY3QmIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCit7CisgICAgYXV0byYgdm0g
PSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICAvLyBTaGFkb3dpbmcgYSBi
dWlsdC1pbiBjb25zdHJ1Y3Rvci4KKyAgICByZXR1cm4gdGhpc09iamVjdC5wdXREaXJlY3Qodm0s
IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIq
PigiVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIiKSwgc3RybGVuKCJUZXN0TmFtZWRT
ZXR0ZXJXaXRoSW5kZXhlZEdldHRlciIpKSwgdmFsdWUpOworfQorCitib29sIHNldEpTVGVzdEds
b2JhbE9iamVjdFRlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQ29uc3RydWN0b3IoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQoreworICAgIHJldHVybiBJRExBdHRyaWJ1
dGU8SlNUZXN0R2xvYmFsT2JqZWN0Pjo6c2V0PHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1l
ZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQ29uc3RydWN0b3JTZXR0ZXI+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIlRlc3ROYW1lZFNldHRlcldpdGhJbmRl
eGVkR2V0dGVyIik7Cit9CisKK3N0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmpl
Y3RUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlckNvbnN0cnVjdG9yR2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RHbG9iYWxPYmpl
Y3QmIHRoaXNPYmplY3QpCit7CisgICAgVU5VU0VEX1BBUkFNKGxleGljYWxHbG9iYWxPYmplY3Qp
OworICAgIHJldHVybiBKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVy
OjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgdGhpc09i
amVjdC5nbG9iYWxPYmplY3QoKSk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIGpzVGVzdEdsb2JhbE9i
amVjdFRlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyQ29uc3RydWN0b3Io
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgUHJvcGVydHlOYW1lKQoreworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0R2xv
YmFsT2JqZWN0Pjo6Z2V0PGpzVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZFNldHRlcldpdGhJbmRl
eGVkR2V0dGVyQW5kU2V0dGVyQ29uc3RydWN0b3JHZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aGlzVmFsdWUsICJUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlciIp
OworfQorCitzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVk
U2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXJDb25zdHJ1Y3RvclNldHRlcihKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0R2xvYmFsT2JqZWN0JiB0aGlzT2Jq
ZWN0LCBKU1ZhbHVlIHZhbHVlKQoreworICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCk7CisgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3Iu
CisgICAgcmV0dXJuIHRoaXNPYmplY3QucHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oIlRlc3ROYW1lZFNldHRlcldp
dGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyIiksIHN0cmxlbigiVGVzdE5hbWVkU2V0dGVyV2l0aElu
ZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIiKSksIHZhbHVlKTsKK30KKworYm9vbCBzZXRKU1Rlc3RHbG9i
YWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlckNvbnN0cnVj
dG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK3sKKyAgICByZXR1cm4gSURM
QXR0cmlidXRlPEpTVGVzdEdsb2JhbE9iamVjdD46OnNldDxzZXRKU1Rlc3RHbG9iYWxPYmplY3RU
ZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlckNvbnN0cnVjdG9yU2V0dGVy
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJUZXN0TmFt
ZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlciIpOworfQorCitzdGF0aWMgaW5saW5l
IEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVp
bHRpbnNDb25zdHJ1Y3RvckdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNUZXN0R2xvYmFsT2JqZWN0JiB0aGlzT2JqZWN0KQoreworICAgIFVOVVNFRF9QQVJBTShs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICByZXR1cm4gSlNUZXN0TmFtZWRTZXR0ZXJXaXRoT3Zl
cnJpZGVCdWlsdGluczo6Z2V0Q29uc3RydWN0b3IoSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9i
amVjdCksIHRoaXNPYmplY3QuZ2xvYmFsT2JqZWN0KCkpOworfQorCitFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGluc0NvbnN0
cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKK3sKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpT
VGVzdEdsb2JhbE9iamVjdD46OmdldDxqc1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJX
aXRoT3ZlcnJpZGVCdWlsdGluc0NvbnN0cnVjdG9yR2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhpc1ZhbHVlLCAiVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMiKTsKK30K
Kworc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZFNldHRl
cldpdGhPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3JTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdEdsb2JhbE9iamVjdCYgdGhpc09iamVjdCwgSlNWYWx1
ZSB2YWx1ZSkKK3sKKyAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpOworICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yLgorICAgIHJldHVy
biB0aGlzT2JqZWN0LnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVp
bnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJUZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVC
dWlsdGlucyIpLCBzdHJsZW4oIlRlc3ROYW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zIikp
LCB2YWx1ZSk7Cit9CisKK2Jvb2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkU2V0dGVy
V2l0aE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpCit7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RHbG9iYWxPYmplY3Q+
OjpzZXQ8c2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVp
bHRpbnNDb25zdHJ1Y3RvclNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwg
ZW5jb2RlZFZhbHVlLCAiVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMiKTsKK30K
Kworc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZFNldHRl
cldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0NvbnN0cnVjdG9yR2V0dGVyKEpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RHbG9iYWxPYmplY3QmIHRoaXNPYmplY3QpCit7
CisgICAgVU5VU0VEX1BBUkFNKGxleGljYWxHbG9iYWxPYmplY3QpOworICAgIHJldHVybiBKU1Rl
c3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllczo6Z2V0Q29uc3RydWN0b3IoSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIHRoaXNPYmplY3QuZ2xvYmFsT2JqZWN0KCkp
OworfQorCitFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJX
aXRoVW5mb3JnYWJsZVByb3BlcnRpZXNDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCit7
CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RHbG9iYWxPYmplY3Q+OjpnZXQ8anNUZXN0
R2xvYmFsT2JqZWN0VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQ29uc3Ry
dWN0b3JHZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJUZXN0TmFtZWRT
ZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMiKTsKK30KKworc3RhdGljIGlubGluZSBib29s
IHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVy
dGllc0NvbnN0cnVjdG9yU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU1Rlc3RHbG9iYWxPYmplY3QmIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCit7CisgICAg
YXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICAvLyBTaGFk
b3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3Rvci4KKyAgICByZXR1cm4gdGhpc09iamVjdC5wdXRE
aXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgTENoYXIqPigiVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzIiksIHN0
cmxlbigiVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzIikpLCB2YWx1ZSk7
Cit9CisKK2Jvb2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9y
Z2FibGVQcm9wZXJ0aWVzQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlKQoreworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0R2xvYmFsT2JqZWN0Pjo6c2V0
PHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVy
dGllc0NvbnN0cnVjdG9yU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBl
bmNvZGVkVmFsdWUsICJUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMiKTsK
K30KKworc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZFNl
dHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3Rv
ckdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0R2xvYmFs
T2JqZWN0JiB0aGlzT2JqZWN0KQoreworICAgIFVOVVNFRF9QQVJBTShsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKKyAgICByZXR1cm4gSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRp
ZXNBbmRPdmVycmlkZUJ1aWx0aW5zOjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KSwgdGhpc09iamVjdC5nbG9iYWxPYmplY3QoKSk7Cit9CisKK0VuY29kZWRK
U1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJv
cGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUp
Cit7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RHbG9iYWxPYmplY3Q+OjpnZXQ8anNU
ZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5k
T3ZlcnJpZGVCdWlsdGluc0NvbnN0cnVjdG9yR2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCAiVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3Zl
cnJpZGVCdWlsdGlucyIpOworfQorCitzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0R2xvYmFs
T2JqZWN0VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVC
dWlsdGluc0NvbnN0cnVjdG9yU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU1Rlc3RHbG9iYWxPYmplY3QmIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCit7Cisg
ICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICAvLyBT
aGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3Rvci4KKyAgICByZXR1cm4gdGhpc09iamVjdC5w
dXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgTENoYXIqPigiVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5k
T3ZlcnJpZGVCdWlsdGlucyIpLCBzdHJsZW4oIlRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxl
UHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMiKSksIHZhbHVlKTsKK30KKworYm9vbCBzZXRK
U1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNB
bmRPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlKQoreworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0R2xvYmFsT2JqZWN0Pjo6
c2V0PHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJv
cGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3RvclNldHRlcj4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiVGVzdE5hbWVkU2V0dGVyV2l0aFVu
Zm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlucyIpOworfQorCisjaWYgRU5BQkxF
KENvbmRpdGlvbkRlcml2ZWQpCitzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0R2xvYmFsT2Jq
ZWN0VGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsQ29uc3RydWN0b3JHZXR0ZXIoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdEdsb2JhbE9iamVjdCYgdGhpc09iamVjdCkK
K3sKKyAgICBVTlVTRURfUEFSQU0obGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgcmV0dXJuIEpT
VGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsOjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KSwgdGhpc09iamVjdC5nbG9iYWxPYmplY3QoKSk7Cit9CisKK0VuY29k
ZWRKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdFRlc3RPcGVyYXRpb25Db25kaXRpb25hbENvbnN0
cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKK3sKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpT
VGVzdEdsb2JhbE9iamVjdD46OmdldDxqc1Rlc3RHbG9iYWxPYmplY3RUZXN0T3BlcmF0aW9uQ29u
ZGl0aW9uYWxDb25zdHJ1Y3RvckdldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1
ZSwgIlRlc3RPcGVyYXRpb25Db25kaXRpb25hbCIpOworfQorCisjZW5kaWYKKworI2lmIEVOQUJM
RShDb25kaXRpb25EZXJpdmVkKQorc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdEdsb2JhbE9i
amVjdFRlc3RPcGVyYXRpb25Db25kaXRpb25hbENvbnN0cnVjdG9yU2V0dGVyKEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RHbG9iYWxPYmplY3QmIHRoaXNPYmplY3Qs
IEpTVmFsdWUgdmFsdWUpCit7CisgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKKyAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3Rvci4KKyAg
ICByZXR1cm4gdGhpc09iamVjdC5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmco
dm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiVGVzdE9wZXJhdGlvbkNvbmRpdGlv
bmFsIiksIHN0cmxlbigiVGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsIikpLCB2YWx1ZSk7Cit9CisK
K2Jvb2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsQ29uc3Ry
dWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQoreworICAgIHJldHVybiBJ
RExBdHRyaWJ1dGU8SlNUZXN0R2xvYmFsT2JqZWN0Pjo6c2V0PHNldEpTVGVzdEdsb2JhbE9iamVj
dFRlc3RPcGVyYXRpb25Db25kaXRpb25hbENvbnN0cnVjdG9yU2V0dGVyPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJUZXN0T3BlcmF0aW9uQ29uZGl0aW9u
YWwiKTsKK30KKworI2VuZGlmCisKK3N0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RHbG9iYWxP
YmplY3RUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZUNvbnN0cnVjdG9yR2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RHbG9iYWxPYmpl
Y3QmIHRoaXNPYmplY3QpCit7CisgICAgVU5VU0VEX1BBUkFNKGxleGljYWxHbG9iYWxPYmplY3Qp
OworICAgIHJldHVybiBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlOjpn
ZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgdGhpc09iamVj
dC5nbG9iYWxPYmplY3QoKSk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVj
dFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlQ29uc3RydWN0b3IoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
UHJvcGVydHlOYW1lKQoreworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0R2xvYmFsT2Jq
ZWN0Pjo6Z2V0PGpzVGVzdEdsb2JhbE9iamVjdFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0
aFNlcXVlbmNlQ29uc3RydWN0b3JHZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFs
dWUsICJUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZSIpOworfQorCitzdGF0
aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnNXaXRoU2VxdWVuY2VDb25zdHJ1Y3RvclNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNUZXN0R2xvYmFsT2JqZWN0JiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZh
bHVlKQoreworICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CisgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IuCisgICAgcmV0dXJuIHRo
aXNPYmplY3QucHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVy
cHJldF9jYXN0PGNvbnN0IExDaGFyKj4oIlRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNl
cXVlbmNlIiksIHN0cmxlbigiVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2Ui
KSksIHZhbHVlKTsKK30KKworYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZUNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSkKK3sKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdEdsb2JhbE9i
amVjdD46OnNldDxzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
c1dpdGhTZXF1ZW5jZUNvbnN0cnVjdG9yU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhp
c1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1
ZW5jZSIpOworfQorCitzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0VGVz
dE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3RvckdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNUZXN0R2xvYmFsT2JqZWN0JiB0aGlzT2JqZWN0KQoreworICAgIFVO
VVNFRF9QQVJBTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICByZXR1cm4gSlNUZXN0T3ZlcnJp
ZGVCdWlsdGluczo6Z2V0Q29uc3RydWN0b3IoSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCksIHRoaXNPYmplY3QuZ2xvYmFsT2JqZWN0KCkpOworfQorCitFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RHbG9iYWxPYmplY3RUZXN0T3ZlcnJpZGVCdWlsdGluc0NvbnN0cnVjdG9yKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkKK3sKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdEdsb2JhbE9iamVjdD46
OmdldDxqc1Rlc3RHbG9iYWxPYmplY3RUZXN0T3ZlcnJpZGVCdWlsdGluc0NvbnN0cnVjdG9yR2V0
dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiVGVzdE92ZXJyaWRlQnVpbHRp
bnMiKTsKK30KKworc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RP
dmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3JTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxH
bG9iYWxPYmplY3QsIEpTVGVzdEdsb2JhbE9iamVjdCYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1
ZSkKK3sKKyAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwor
ICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yLgorICAgIHJldHVybiB0aGlz
T2JqZWN0LnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJUZXN0T3ZlcnJpZGVCdWlsdGlucyIpLCBzdHJsZW4oIlRl
c3RPdmVycmlkZUJ1aWx0aW5zIikpLCB2YWx1ZSk7Cit9CisKK2Jvb2wgc2V0SlNUZXN0R2xvYmFs
T2JqZWN0VGVzdE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkVmFsdWUpCit7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RHbG9iYWxP
YmplY3Q+OjpzZXQ8c2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdE92ZXJyaWRlQnVpbHRpbnNDb25z
dHJ1Y3RvclNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZh
bHVlLCAiVGVzdE92ZXJyaWRlQnVpbHRpbnMiKTsKK30KKworc3RhdGljIGlubGluZSBKU1ZhbHVl
IGpzVGVzdEdsb2JhbE9iamVjdFRlc3RQbHVnaW5JbnRlcmZhY2VDb25zdHJ1Y3RvckdldHRlcihK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0R2xvYmFsT2JqZWN0JiB0
aGlzT2JqZWN0KQoreworICAgIFVOVVNFRF9QQVJBTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAg
ICByZXR1cm4gSlNUZXN0UGx1Z2luSW50ZXJmYWNlOjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZN
KCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgdGhpc09iamVjdC5nbG9iYWxPYmplY3QoKSk7Cit9CisK
K0VuY29kZWRKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdFRlc3RQbHVnaW5JbnRlcmZhY2VDb25z
dHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCit7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U1Rlc3RHbG9iYWxPYmplY3Q+OjpnZXQ8anNUZXN0R2xvYmFsT2JqZWN0VGVzdFBsdWdpbkludGVy
ZmFjZUNvbnN0cnVjdG9yR2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAi
VGVzdFBsdWdpbkludGVyZmFjZSIpOworfQorCitzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0
R2xvYmFsT2JqZWN0VGVzdFBsdWdpbkludGVyZmFjZUNvbnN0cnVjdG9yU2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RHbG9iYWxPYmplY3QmIHRoaXNPYmpl
Y3QsIEpTVmFsdWUgdmFsdWUpCit7CisgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKKyAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3Rvci4K
KyAgICByZXR1cm4gdGhpc09iamVjdC5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiVGVzdFBsdWdpbkludGVyZmFj
ZSIpLCBzdHJsZW4oIlRlc3RQbHVnaW5JbnRlcmZhY2UiKSksIHZhbHVlKTsKK30KKworYm9vbCBz
ZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0UGx1Z2luSW50ZXJmYWNlQ29uc3RydWN0b3IoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQoreworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8
SlNUZXN0R2xvYmFsT2JqZWN0Pjo6c2V0PHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RQbHVnaW5J
bnRlcmZhY2VDb25zdHJ1Y3RvclNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1
ZSwgZW5jb2RlZFZhbHVlLCAiVGVzdFBsdWdpbkludGVyZmFjZSIpOworfQorCitzdGF0aWMgaW5s
aW5lIEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0VGVzdFJlYWRPbmx5TWFwTGlrZUNvbnN0cnVj
dG9yR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RHbG9i
YWxPYmplY3QmIHRoaXNPYmplY3QpCit7CisgICAgVU5VU0VEX1BBUkFNKGxleGljYWxHbG9iYWxP
YmplY3QpOworICAgIHJldHVybiBKU1Rlc3RSZWFkT25seU1hcExpa2U6OmdldENvbnN0cnVjdG9y
KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCB0aGlzT2JqZWN0Lmdsb2JhbE9iamVj
dCgpKTsKK30KKworRW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0VGVzdFJlYWRPbmx5
TWFwTGlrZUNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKK3sKKyAgICByZXR1cm4gSURM
QXR0cmlidXRlPEpTVGVzdEdsb2JhbE9iamVjdD46OmdldDxqc1Rlc3RHbG9iYWxPYmplY3RUZXN0
UmVhZE9ubHlNYXBMaWtlQ29uc3RydWN0b3JHZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aGlzVmFsdWUsICJUZXN0UmVhZE9ubHlNYXBMaWtlIik7Cit9CisKK3N0YXRpYyBpbmxpbmUgYm9v
bCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0UmVhZE9ubHlNYXBMaWtlQ29uc3RydWN0b3JTZXR0
ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdEdsb2JhbE9iamVj
dCYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOworICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNv
bnN0cnVjdG9yLgorICAgIHJldHVybiB0aGlzT2JqZWN0LnB1dERpcmVjdCh2bSwgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJUZXN0UmVh
ZE9ubHlNYXBMaWtlIiksIHN0cmxlbigiVGVzdFJlYWRPbmx5TWFwTGlrZSIpKSwgdmFsdWUpOwor
fQorCitib29sIHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RSZWFkT25seU1hcExpa2VDb25zdHJ1
Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCit7CisgICAgcmV0dXJuIElE
TEF0dHJpYnV0ZTxKU1Rlc3RHbG9iYWxPYmplY3Q+OjpzZXQ8c2V0SlNUZXN0R2xvYmFsT2JqZWN0
VGVzdFJlYWRPbmx5TWFwTGlrZUNvbnN0cnVjdG9yU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJUZXN0UmVhZE9ubHlNYXBMaWtlIik7Cit9CisK
K3N0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RUZXN0UmVhZE9ubHlTZXRM
aWtlQ29uc3RydWN0b3JHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTVGVzdEdsb2JhbE9iamVjdCYgdGhpc09iamVjdCkKK3sKKyAgICBVTlVTRURfUEFSQU0obGV4
aWNhbEdsb2JhbE9iamVjdCk7CisgICAgcmV0dXJuIEpTVGVzdFJlYWRPbmx5U2V0TGlrZTo6Z2V0
Q29uc3RydWN0b3IoSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIHRoaXNPYmplY3Qu
Z2xvYmFsT2JqZWN0KCkpOworfQorCitFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RU
ZXN0UmVhZE9ubHlTZXRMaWtlQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQoreworICAg
IHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0R2xvYmFsT2JqZWN0Pjo6Z2V0PGpzVGVzdEdsb2Jh
bE9iamVjdFRlc3RSZWFkT25seVNldExpa2VDb25zdHJ1Y3RvckdldHRlcj4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRoaXNWYWx1ZSwgIlRlc3RSZWFkT25seVNldExpa2UiKTsKK30KKworc3RhdGlj
IGlubGluZSBib29sIHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RSZWFkT25seVNldExpa2VDb25z
dHJ1Y3RvclNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0
R2xvYmFsT2JqZWN0JiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQoreworICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgLy8gU2hhZG93aW5nIGEg
YnVpbHQtaW4gY29uc3RydWN0b3IuCisgICAgcmV0dXJuIHRoaXNPYmplY3QucHV0RGlyZWN0KHZt
LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFy
Kj4oIlRlc3RSZWFkT25seVNldExpa2UiKSwgc3RybGVuKCJUZXN0UmVhZE9ubHlTZXRMaWtlIikp
LCB2YWx1ZSk7Cit9CisKK2Jvb2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdFJlYWRPbmx5U2V0
TGlrZUNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK3sKKyAg
ICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdEdsb2JhbE9iamVjdD46OnNldDxzZXRKU1Rlc3RH
bG9iYWxPYmplY3RUZXN0UmVhZE9ubHlTZXRMaWtlQ29uc3RydWN0b3JTZXR0ZXI+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIlRlc3RSZWFkT25seVNldExp
a2UiKTsKK30KKworc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdFRlc3RS
ZXBvcnRFeHRyYU1lbW9yeUNvc3RDb25zdHJ1Y3RvckdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0R2xvYmFsT2JqZWN0JiB0aGlzT2JqZWN0KQoreworICAg
IFVOVVNFRF9QQVJBTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICByZXR1cm4gSlNUZXN0UmVw
b3J0RXh0cmFNZW1vcnlDb3N0OjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKCZsZXhpY2FsR2xv
YmFsT2JqZWN0KSwgdGhpc09iamVjdC5nbG9iYWxPYmplY3QoKSk7Cit9CisKK0VuY29kZWRKU1Zh
bHVlIGpzVGVzdEdsb2JhbE9iamVjdFRlc3RSZXBvcnRFeHRyYU1lbW9yeUNvc3RDb25zdHJ1Y3Rv
cihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCit7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RH
bG9iYWxPYmplY3Q+OjpnZXQ8anNUZXN0R2xvYmFsT2JqZWN0VGVzdFJlcG9ydEV4dHJhTWVtb3J5
Q29zdENvbnN0cnVjdG9yR2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAi
VGVzdFJlcG9ydEV4dHJhTWVtb3J5Q29zdCIpOworfQorCitzdGF0aWMgaW5saW5lIGJvb2wgc2V0
SlNUZXN0R2xvYmFsT2JqZWN0VGVzdFJlcG9ydEV4dHJhTWVtb3J5Q29zdENvbnN0cnVjdG9yU2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RHbG9iYWxPYmpl
Y3QmIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCit7CisgICAgYXV0byYgdm0gPSBKU0M6Omdl
dFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBj
b25zdHJ1Y3Rvci4KKyAgICByZXR1cm4gdGhpc09iamVjdC5wdXREaXJlY3Qodm0sIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiVGVzdFJl
cG9ydEV4dHJhTWVtb3J5Q29zdCIpLCBzdHJsZW4oIlRlc3RSZXBvcnRFeHRyYU1lbW9yeUNvc3Qi
KSksIHZhbHVlKTsKK30KKworYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0UmVwb3J0RXh0
cmFNZW1vcnlDb3N0Q29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
KQoreworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0R2xvYmFsT2JqZWN0Pjo6c2V0PHNl
dEpTVGVzdEdsb2JhbE9iamVjdFRlc3RSZXBvcnRFeHRyYU1lbW9yeUNvc3RDb25zdHJ1Y3RvclNl
dHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiVGVz
dFJlcG9ydEV4dHJhTWVtb3J5Q29zdCIpOworfQorCitzdGF0aWMgaW5saW5lIEpTVmFsdWUganNU
ZXN0R2xvYmFsT2JqZWN0VGVzdFNlcmlhbGl6YXRpb25Db25zdHJ1Y3RvckdldHRlcihKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0R2xvYmFsT2JqZWN0JiB0aGlzT2Jq
ZWN0KQoreworICAgIFVOVVNFRF9QQVJBTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICByZXR1
cm4gSlNUZXN0U2VyaWFsaXphdGlvbjo6Z2V0Q29uc3RydWN0b3IoSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCksIHRoaXNPYmplY3QuZ2xvYmFsT2JqZWN0KCkpOworfQorCitFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RUZXN0U2VyaWFsaXphdGlvbkNvbnN0cnVjdG9yKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSkKK3sKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdEdsb2Jh
bE9iamVjdD46OmdldDxqc1Rlc3RHbG9iYWxPYmplY3RUZXN0U2VyaWFsaXphdGlvbkNvbnN0cnVj
dG9yR2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiVGVzdFNlcmlhbGl6
YXRpb24iKTsKK30KKworc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdEdsb2JhbE9iamVjdFRl
c3RTZXJpYWxpemF0aW9uQ29uc3RydWN0b3JTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxH
bG9iYWxPYmplY3QsIEpTVGVzdEdsb2JhbE9iamVjdCYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1
ZSkKK3sKKyAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwor
ICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yLgorICAgIHJldHVybiB0aGlz
T2JqZWN0LnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJUZXN0U2VyaWFsaXphdGlvbiIpLCBzdHJsZW4oIlRlc3RT
ZXJpYWxpemF0aW9uIikpLCB2YWx1ZSk7Cit9CisKK2Jvb2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0
VGVzdFNlcmlhbGl6YXRpb25Db25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUpCit7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RHbG9iYWxPYmplY3Q+Ojpz
ZXQ8c2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdFNlcmlhbGl6YXRpb25Db25zdHJ1Y3RvclNldHRl
cj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiVGVzdFNl
cmlhbGl6YXRpb24iKTsKK30KKworc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdEdsb2JhbE9i
amVjdFRlc3RTZXJpYWxpemF0aW9uSW5kaXJlY3RJbmhlcml0YW5jZUNvbnN0cnVjdG9yR2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RHbG9iYWxPYmplY3Qm
IHRoaXNPYmplY3QpCit7CisgICAgVU5VU0VEX1BBUkFNKGxleGljYWxHbG9iYWxPYmplY3QpOwor
ICAgIHJldHVybiBKU1Rlc3RTZXJpYWxpemF0aW9uSW5kaXJlY3RJbmhlcml0YW5jZTo6Z2V0Q29u
c3RydWN0b3IoSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIHRoaXNPYmplY3QuZ2xv
YmFsT2JqZWN0KCkpOworfQorCitFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RUZXN0
U2VyaWFsaXphdGlvbkluZGlyZWN0SW5oZXJpdGFuY2VDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0
eU5hbWUpCit7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RHbG9iYWxPYmplY3Q+Ojpn
ZXQ8anNUZXN0R2xvYmFsT2JqZWN0VGVzdFNlcmlhbGl6YXRpb25JbmRpcmVjdEluaGVyaXRhbmNl
Q29uc3RydWN0b3JHZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJUZXN0
U2VyaWFsaXphdGlvbkluZGlyZWN0SW5oZXJpdGFuY2UiKTsKK30KKworc3RhdGljIGlubGluZSBi
b29sIHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RTZXJpYWxpemF0aW9uSW5kaXJlY3RJbmhlcml0
YW5jZUNvbnN0cnVjdG9yU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU1Rlc3RHbG9iYWxPYmplY3QmIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCit7CisgICAg
YXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICAvLyBTaGFk
b3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3Rvci4KKyAgICByZXR1cm4gdGhpc09iamVjdC5wdXRE
aXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgTENoYXIqPigiVGVzdFNlcmlhbGl6YXRpb25JbmRpcmVjdEluaGVyaXRhbmNlIiksIHN0cmxl
bigiVGVzdFNlcmlhbGl6YXRpb25JbmRpcmVjdEluaGVyaXRhbmNlIikpLCB2YWx1ZSk7Cit9CisK
K2Jvb2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdFNlcmlhbGl6YXRpb25JbmRpcmVjdEluaGVy
aXRhbmNlQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorewor
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0R2xvYmFsT2JqZWN0Pjo6c2V0PHNldEpTVGVz
dEdsb2JhbE9iamVjdFRlc3RTZXJpYWxpemF0aW9uSW5kaXJlY3RJbmhlcml0YW5jZUNvbnN0cnVj
dG9yU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUs
ICJUZXN0U2VyaWFsaXphdGlvbkluZGlyZWN0SW5oZXJpdGFuY2UiKTsKK30KKworc3RhdGljIGlu
bGluZSBKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdFRlc3RTZXJpYWxpemF0aW9uSW5oZXJpdENv
bnN0cnVjdG9yR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rl
c3RHbG9iYWxPYmplY3QmIHRoaXNPYmplY3QpCit7CisgICAgVU5VU0VEX1BBUkFNKGxleGljYWxH
bG9iYWxPYmplY3QpOworICAgIHJldHVybiBKU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdDo6Z2V0
Q29uc3RydWN0b3IoSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIHRoaXNPYmplY3Qu
Z2xvYmFsT2JqZWN0KCkpOworfQorCitFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RU
ZXN0U2VyaWFsaXphdGlvbkluaGVyaXRDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCit7
CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RHbG9iYWxPYmplY3Q+OjpnZXQ8anNUZXN0
R2xvYmFsT2JqZWN0VGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0Q29uc3RydWN0b3JHZXR0ZXI+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJUZXN0U2VyaWFsaXphdGlvbkluaGVyaXQi
KTsKK30KKworc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RTZXJp
YWxpemF0aW9uSW5oZXJpdENvbnN0cnVjdG9yU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU1Rlc3RHbG9iYWxPYmplY3QmIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFs
dWUpCiB7Ci0jaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKLSAgICB7ICJlbmFibGVkQXRSdW50aW1l
T3BlcmF0aW9uU3RhdGljIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJh
d05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RHbG9iYWxPYmplY3RDb25zdHJ1Y3RvckZ1bmN0aW9uRW5h
YmxlZEF0UnVudGltZU9wZXJhdGlvblN0YXRpYyksIChpbnRwdHJfdCkgKDEpIH0gfSwKLSNlbHNl
Ci0gICAgeyAwLCAwLCBOb0ludHJpbnNpYywgeyAwLCAwIH0gfSwKKyAgICBhdXRvJiB2bSA9IEpT
Qzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOworICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0
LWluIGNvbnN0cnVjdG9yLgorICAgIHJldHVybiB0aGlzT2JqZWN0LnB1dERpcmVjdCh2bSwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJU
ZXN0U2VyaWFsaXphdGlvbkluaGVyaXQiKSwgc3RybGVuKCJUZXN0U2VyaWFsaXphdGlvbkluaGVy
aXQiKSksIHZhbHVlKTsKK30KKworYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0U2VyaWFs
aXphdGlvbkluaGVyaXRDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpCit7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RHbG9iYWxPYmplY3Q+OjpzZXQ8
c2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0Q29uc3RydWN0b3JT
ZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIlRl
c3RTZXJpYWxpemF0aW9uSW5oZXJpdCIpOworfQorCitzdGF0aWMgaW5saW5lIEpTVmFsdWUganNU
ZXN0R2xvYmFsT2JqZWN0VGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0RmluYWxDb25zdHJ1Y3Rvckdl
dHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0R2xvYmFsT2Jq
ZWN0JiB0aGlzT2JqZWN0KQoreworICAgIFVOVVNFRF9QQVJBTShsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKKyAgICByZXR1cm4gSlNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXRGaW5hbDo6Z2V0Q29uc3Ry
dWN0b3IoSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIHRoaXNPYmplY3QuZ2xvYmFs
T2JqZWN0KCkpOworfQorCitFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RUZXN0U2Vy
aWFsaXphdGlvbkluaGVyaXRGaW5hbENvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKK3sK
KyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdEdsb2JhbE9iamVjdD46OmdldDxqc1Rlc3RH
bG9iYWxPYmplY3RUZXN0U2VyaWFsaXphdGlvbkluaGVyaXRGaW5hbENvbnN0cnVjdG9yR2V0dGVy
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiVGVzdFNlcmlhbGl6YXRpb25Jbmhl
cml0RmluYWwiKTsKK30KKworc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdEdsb2JhbE9iamVj
dFRlc3RTZXJpYWxpemF0aW9uSW5oZXJpdEZpbmFsQ29uc3RydWN0b3JTZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdEdsb2JhbE9iamVjdCYgdGhpc09iamVj
dCwgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxH
bG9iYWxPYmplY3QpOworICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yLgor
ICAgIHJldHVybiB0aGlzT2JqZWN0LnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJUZXN0U2VyaWFsaXphdGlvbklu
aGVyaXRGaW5hbCIpLCBzdHJsZW4oIlRlc3RTZXJpYWxpemF0aW9uSW5oZXJpdEZpbmFsIikpLCB2
YWx1ZSk7Cit9CisKK2Jvb2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdFNlcmlhbGl6YXRpb25J
bmhlcml0RmluYWxDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUp
Cit7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RHbG9iYWxPYmplY3Q+OjpzZXQ8c2V0
SlNUZXN0R2xvYmFsT2JqZWN0VGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0RmluYWxDb25zdHJ1Y3Rv
clNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAi
VGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0RmluYWwiKTsKK30KKworI2lmIEVOQUJMRShDb25kaXRp
b24xKSB8fCBFTkFCTEUoQ29uZGl0aW9uMikKK3N0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RH
bG9iYWxPYmplY3RUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ29uc3RydWN0b3JH
ZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdEdsb2JhbE9i
amVjdCYgdGhpc09iamVjdCkKK3sKKyAgICBVTlVTRURfUEFSQU0obGV4aWNhbEdsb2JhbE9iamVj
dCk7CisgICAgcmV0dXJuIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6Z2V0
Q29uc3RydWN0b3IoSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIHRoaXNPYmplY3Qu
Z2xvYmFsT2JqZWN0KCkpOworfQorCitFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RU
ZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ29uc3RydWN0b3IoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVy
dHlOYW1lKQoreworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0R2xvYmFsT2JqZWN0Pjo6
Z2V0PGpzVGVzdEdsb2JhbE9iamVjdFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VD
b25zdHJ1Y3RvckdldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIlRlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UiKTsKK30KKwogI2VuZGlmCi19OwogCi10ZW1w
bGF0ZTw+IEpTVmFsdWUgSlNUZXN0R2xvYmFsT2JqZWN0Q29uc3RydWN0b3I6OnByb3RvdHlwZUZv
clN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9i
amVjdCkKKyNpZiBFTkFCTEUoQ29uZGl0aW9uMSkgfHwgRU5BQkxFKENvbmRpdGlvbjIpCitzdGF0
aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUludGVyZmFjZUNvbnN0cnVjdG9yU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU1Rlc3RHbG9iYWxPYmplY3QmIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUp
CiB7Ci0gICAgVU5VU0VEX1BBUkFNKHZtKTsKLSAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LmZ1bmN0
aW9uUHJvdG90eXBlKCk7CisgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKKyAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3Rvci4KKyAgICBy
ZXR1cm4gdGhpc09iamVjdC5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0s
IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUludGVyZmFjZSIpLCBzdHJsZW4oIlRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2Ui
KSksIHZhbHVlKTsKIH0KIAotdGVtcGxhdGU8PiB2b2lkIEpTVGVzdEdsb2JhbE9iamVjdENvbnN0
cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBn
bG9iYWxPYmplY3QpCitib29sIHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RTZXJpYWxpemVkU2Ny
aXB0VmFsdWVJbnRlcmZhY2VDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUpCiB7Ci0gICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUs
IGdsb2JhbE9iamVjdC5nZXRQcm90b3R5cGVEaXJlY3Qodm0pLCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7Ci0gICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0R2xvYmFsT2JqZWN0
Il9zKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSk7Ci0gICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5s
ZW5ndGgsIGpzTnVtYmVyKDApLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKLSAgICByZWlmeVN0YXRpY1Byb3BlcnRp
ZXModm0sIEpTVGVzdEdsb2JhbE9iamVjdDo6aW5mbygpLCBKU1Rlc3RHbG9iYWxPYmplY3RDb25z
dHJ1Y3RvclRhYmxlVmFsdWVzLCAqdGhpcyk7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rl
c3RHbG9iYWxPYmplY3Q+OjpzZXQ8c2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUludGVyZmFjZUNvbnN0cnVjdG9yU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50
ZXJmYWNlIik7CiB9CiAKLXRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdEdsb2JhbE9i
amVjdENvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0R2xvYmFsT2JqZWN0IiwgJkJhc2U6OnNf
aW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RHbG9iYWxP
YmplY3RDb25zdHJ1Y3RvcikgfTsKKyNlbmRpZgogCi0vKiBIYXNoIHRhYmxlIGZvciBwcm90b3R5
cGUgKi8KK3N0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RUZXN0U2V0TGlr
ZUNvbnN0cnVjdG9yR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U1Rlc3RHbG9iYWxPYmplY3QmIHRoaXNPYmplY3QpCit7CisgICAgVU5VU0VEX1BBUkFNKGxleGlj
YWxHbG9iYWxPYmplY3QpOworICAgIHJldHVybiBKU1Rlc3RTZXRMaWtlOjpnZXRDb25zdHJ1Y3Rv
cihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgdGhpc09iamVjdC5nbG9iYWxPYmpl
Y3QoKSk7Cit9CiAKLXN0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1Rlc3RH
bG9iYWxPYmplY3RQcm90b3R5cGVUYWJsZUluZGV4WzJdID0gewotICAgIHsgLTEsIC0xIH0sCi0g
ICAgeyAwLCAtMSB9LAotfTsKK0VuY29kZWRKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdFRlc3RT
ZXRMaWtlQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQoreworICAgIHJldHVybiBJRExB
dHRyaWJ1dGU8SlNUZXN0R2xvYmFsT2JqZWN0Pjo6Z2V0PGpzVGVzdEdsb2JhbE9iamVjdFRlc3RT
ZXRMaWtlQ29uc3RydWN0b3JHZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
ICJUZXN0U2V0TGlrZSIpOworfQogCitzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0R2xvYmFs
T2JqZWN0VGVzdFNldExpa2VDb25zdHJ1Y3RvclNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNUZXN0R2xvYmFsT2JqZWN0JiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZh
bHVlKQoreworICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CisgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IuCisgICAgcmV0dXJuIHRo
aXNPYmplY3QucHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVy
cHJldF9jYXN0PGNvbnN0IExDaGFyKj4oIlRlc3RTZXRMaWtlIiksIHN0cmxlbigiVGVzdFNldExp
a2UiKSksIHZhbHVlKTsKK30KIAotc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdEds
b2JhbE9iamVjdFByb3RvdHlwZVRhYmxlVmFsdWVzW10gPQorYm9vbCBzZXRKU1Rlc3RHbG9iYWxP
YmplY3RUZXN0U2V0TGlrZUNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSkKIHsKLSAgICB7ICJjb25zdHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0
Q29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0
VmFsdWVGdW5jPihzZXRKU1Rlc3RHbG9iYWxPYmplY3RDb25zdHJ1Y3RvcikgfSB9LAotfTsKKyAg
ICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdEdsb2JhbE9iamVjdD46OnNldDxzZXRKU1Rlc3RH
bG9iYWxPYmplY3RUZXN0U2V0TGlrZUNvbnN0cnVjdG9yU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJUZXN0U2V0TGlrZSIpOworfQogCi1zdGF0
aWMgY29uc3QgSGFzaFRhYmxlIEpTVGVzdEdsb2JhbE9iamVjdFByb3RvdHlwZVRhYmxlID0geyAx
LCAxLCB0cnVlLCBKU1Rlc3RHbG9iYWxPYmplY3Q6OmluZm8oKSwgSlNUZXN0R2xvYmFsT2JqZWN0
UHJvdG90eXBlVGFibGVWYWx1ZXMsIEpTVGVzdEdsb2JhbE9iamVjdFByb3RvdHlwZVRhYmxlSW5k
ZXggfTsKLWNvbnN0IENsYXNzSW5mbyBKU1Rlc3RHbG9iYWxPYmplY3RQcm90b3R5cGU6OnNfaW5m
byA9IHsgIlRlc3RHbG9iYWxPYmplY3QiLCAmQmFzZTo6c19pbmZvLCAmSlNUZXN0R2xvYmFsT2Jq
ZWN0UHJvdG90eXBlVGFibGUsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0R2xv
YmFsT2JqZWN0UHJvdG90eXBlKSB9Oworc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdEdsb2Jh
bE9iamVjdFRlc3RTdHJpbmdpZmllckNvbnN0cnVjdG9yR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RHbG9iYWxPYmplY3QmIHRoaXNPYmplY3QpCit7Cisg
ICAgVU5VU0VEX1BBUkFNKGxleGljYWxHbG9iYWxPYmplY3QpOworICAgIHJldHVybiBKU1Rlc3RT
dHJpbmdpZmllcjo6Z2V0Q29uc3RydWN0b3IoSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCksIHRoaXNPYmplY3QuZ2xvYmFsT2JqZWN0KCkpOworfQogCi12b2lkIEpTVGVzdEdsb2JhbE9i
amVjdFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQorRW5jb2RlZEpTVmFsdWUganNU
ZXN0R2xvYmFsT2JqZWN0VGVzdFN0cmluZ2lmaWVyQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lKQogewotICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKLSAgICBKU0NfVE9fU1RSSU5H
X1RBR19XSVRIT1VUX1RSQU5TSVRJT04oKTsKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVz
dEdsb2JhbE9iamVjdD46OmdldDxqc1Rlc3RHbG9iYWxPYmplY3RUZXN0U3RyaW5naWZpZXJDb25z
dHJ1Y3RvckdldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIlRlc3RTdHJp
bmdpZmllciIpOwogfQogCi1jb25zdCBDbGFzc0luZm8gSlNUZXN0R2xvYmFsT2JqZWN0OjpzX2lu
Zm8gPSB7ICJUZXN0R2xvYmFsT2JqZWN0IiwgJkJhc2U6OnNfaW5mbywgJkpTVGVzdEdsb2JhbE9i
amVjdFRhYmxlLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdEdsb2JhbE9iamVj
dCkgfTsKK3N0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0U3RyaW5n
aWZpZXJDb25zdHJ1Y3RvclNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNUZXN0R2xvYmFsT2JqZWN0JiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQoreworICAg
IGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgLy8gU2hh
ZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IuCisgICAgcmV0dXJuIHRoaXNPYmplY3QucHV0
RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNv
bnN0IExDaGFyKj4oIlRlc3RTdHJpbmdpZmllciIpLCBzdHJsZW4oIlRlc3RTdHJpbmdpZmllciIp
KSwgdmFsdWUpOworfQogCi1KU1Rlc3RHbG9iYWxPYmplY3Q6OkpTVGVzdEdsb2JhbE9iamVjdChT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgUmVm
PFRlc3RHbG9iYWxPYmplY3Q+JiYgaW1wbCkKLSAgICA6IEpTRE9NV3JhcHBlcjxUZXN0R2xvYmFs
T2JqZWN0PihzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSkKK2Jvb2wgc2V0
SlNUZXN0R2xvYmFsT2JqZWN0VGVzdFN0cmluZ2lmaWVyQ29uc3RydWN0b3IoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQoreworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0
R2xvYmFsT2JqZWN0Pjo6c2V0PHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RTdHJpbmdpZmllckNv
bnN0cnVjdG9yU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVk
VmFsdWUsICJUZXN0U3RyaW5naWZpZXIiKTsKK30KKworc3RhdGljIGlubGluZSBKU1ZhbHVlIGpz
VGVzdEdsb2JhbE9iamVjdFRlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvbkNvbnN0cnVj
dG9yR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RHbG9i
YWxPYmplY3QmIHRoaXNPYmplY3QpCiB7CisgICAgVU5VU0VEX1BBUkFNKGxleGljYWxHbG9iYWxP
YmplY3QpOworICAgIHJldHVybiBKU1Rlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvbjo6
Z2V0Q29uc3RydWN0b3IoSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIHRoaXNPYmpl
Y3QuZ2xvYmFsT2JqZWN0KCkpOwogfQogCi12b2lkIEpTVGVzdEdsb2JhbE9iamVjdDo6ZmluaXNo
Q3JlYXRpb24oVk0mIHZtKQorRW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0VGVzdFN0
cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1l
KQogewotICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKLSAgICBBU1NFUlQoaW5oZXJpdHMo
dm0sIGluZm8oKSkpOworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0R2xvYmFsT2JqZWN0
Pjo6Z2V0PGpzVGVzdEdsb2JhbE9iamVjdFRlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlv
bkNvbnN0cnVjdG9yR2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiVGVz
dFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uIik7Cit9CiAKLSAgICBzdGF0aWNfYXNzZXJ0
KCFzdGQ6OmlzX2Jhc2Vfb2Y8QWN0aXZlRE9NT2JqZWN0LCBUZXN0R2xvYmFsT2JqZWN0Pjo6dmFs
dWUsICJJbnRlcmZhY2UgaXMgbm90IG1hcmtlZCBhcyBbQWN0aXZlRE9NT2JqZWN0XSBldmVuIHRo
b3VnaCBpbXBsZW1lbnRhdGlvbiBjbGFzcyBzdWJjbGFzc2VzIEFjdGl2ZURPTU9iamVjdC4iKTsK
K3N0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0U3RyaW5naWZpZXJB
bm9ueW1vdXNPcGVyYXRpb25Db25zdHJ1Y3RvclNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNUZXN0R2xvYmFsT2JqZWN0JiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZh
bHVlKQoreworICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7
CisgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IuCisgICAgcmV0dXJuIHRo
aXNPYmplY3QucHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVy
cHJldF9jYXN0PGNvbnN0IExDaGFyKj4oIlRlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlv
biIpLCBzdHJsZW4oIlRlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvbiIpKSwgdmFsdWUp
OworfQogCi0jaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKLSAgICBpZiAoUnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS50ZXN0RmVhdHVyZUVuYWJsZWQoKSkKLSAgICAgICAg
cHV0RGlyZWN0Q3VzdG9tQWNjZXNzb3Iodm0sIHN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4o
dm0uY2xpZW50RGF0YSktPmJ1aWx0aW5OYW1lcygpLmVuYWJsZWRBdFJ1bnRpbWVBdHRyaWJ1dGVQ
dWJsaWNOYW1lKCksIEN1c3RvbUdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCBqc1Rlc3RHbG9iYWxP
YmplY3RFbmFibGVkQXRSdW50aW1lQXR0cmlidXRlLCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RFbmFi
bGVkQXRSdW50aW1lQXR0cmlidXRlKSwgYXR0cmlidXRlc0ZvclN0cnVjdHVyZShzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IpKSk7Ci0j
ZW5kaWYKLSAgICBpZiAoKGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgp
KS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc1NlY3VyZUNvbnRleHQoKSAmJiBUZXN0RW5h
YmxlZEZvckNvbnRleHQ6OmVuYWJsZWRGb3JDb250ZXh0KCpqc0Nhc3Q8SlNET01HbG9iYWxPYmpl
Y3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkpKQotICAgICAg
ICBwdXREaXJlY3RDdXN0b21BY2Nlc3Nvcih2bSwgc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEq
Pih2bS5jbGllbnREYXRhKS0+YnVpbHRpbk5hbWVzKCkuVGVzdEVuYWJsZWRGb3JDb250ZXh0UHVi
bGljTmFtZSgpLCBDdXN0b21HZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwganNUZXN0R2xvYmFsT2Jq
ZWN0VGVzdEVuYWJsZWRGb3JDb250ZXh0Q29uc3RydWN0b3IsIHNldEpTVGVzdEdsb2JhbE9iamVj
dFRlc3RFbmFibGVkRm9yQ29udGV4dENvbnN0cnVjdG9yKSwgYXR0cmlidXRlc0ZvclN0cnVjdHVy
ZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0p
KSk7Ci0gICAgcHV0RGlyZWN0Q3VzdG9tQWNjZXNzb3Iodm0sIHN0YXRpY19jYXN0PEpTVk1DbGll
bnREYXRhKj4odm0uY2xpZW50RGF0YSktPmJ1aWx0aW5OYW1lcygpLnB1YmxpY0FuZFByaXZhdGVB
dHRyaWJ1dGVQcml2YXRlTmFtZSgpLCBDdXN0b21HZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwganNU
ZXN0R2xvYmFsT2JqZWN0UHVibGljQW5kUHJpdmF0ZUF0dHJpYnV0ZSwgbnVsbHB0ciksIGF0dHJp
YnV0ZXNGb3JTdHJ1Y3R1cmUoSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSk7Ci0jaWYgRU5BQkxFKFRFU1RfRkVBVFVS
RSkKLSAgICBwdXREaXJlY3RDdXN0b21BY2Nlc3Nvcih2bSwgc3RhdGljX2Nhc3Q8SlNWTUNsaWVu
dERhdGEqPih2bS5jbGllbnREYXRhKS0+YnVpbHRpbk5hbWVzKCkucHVibGljQW5kUHJpdmF0ZUNv
bmRpdGlvbmFsQXR0cmlidXRlUHJpdmF0ZU5hbWUoKSwgQ3VzdG9tR2V0dGVyU2V0dGVyOjpjcmVh
dGUodm0sIGpzVGVzdEdsb2JhbE9iamVjdFB1YmxpY0FuZFByaXZhdGVDb25kaXRpb25hbEF0dHJp
YnV0ZSwgbnVsbHB0ciksIGF0dHJpYnV0ZXNGb3JTdHJ1Y3R1cmUoSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSk7Ci0j
ZW5kaWYKLSNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQotICAgIGlmIChSdW50aW1lRW5hYmxlZEZl
YXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnRlc3RGZWF0dXJlRW5hYmxlZCgpKQotICAgICAgICBw
dXREaXJlY3ROYXRpdmVGdW5jdGlvbih2bSwgdGhpcywgc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERh
dGEqPih2bS5jbGllbnREYXRhKS0+YnVpbHRpbk5hbWVzKCkuZW5hYmxlZEF0UnVudGltZU9wZXJh
dGlvblB1YmxpY05hbWUoKSwgMSwganNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbkVu
YWJsZWRBdFJ1bnRpbWVPcGVyYXRpb24sIE5vSW50cmluc2ljLCBhdHRyaWJ1dGVzRm9yU3RydWN0
dXJlKHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlv
bikpKTsKLSNlbmRpZgotI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCi0gICAgaWYgKFJ1bnRpbWVF
bmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkudGVzdEZlYXR1cmVFbmFibGVkKCkpCi0g
ICAgICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKHZtLCB0aGlzLCBzdGF0aWNfY2FzdDxKU1ZN
Q2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpLT5idWlsdGluTmFtZXMoKS5lbmFibGVkQXRSdW50
aW1lT3BlcmF0aW9uU3RhdGljUHVibGljTmFtZSgpLCAxLCBqc1Rlc3RHbG9iYWxPYmplY3RDb25z
dHJ1Y3RvckZ1bmN0aW9uRW5hYmxlZEF0UnVudGltZU9wZXJhdGlvblN0YXRpYywgTm9JbnRyaW5z
aWMsIGF0dHJpYnV0ZXNGb3JTdHJ1Y3R1cmUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSkpOwotI2VuZGlmCi0gICAgaWYgKHdvcmxkRm9yRE9N
T2JqZWN0KCp0aGlzKS5zcGVjaWZpY1dvcmxkKCkpCi0gICAgICAgIHB1dERpcmVjdE5hdGl2ZUZ1
bmN0aW9uKHZtLCB0aGlzLCBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERh
dGEpLT5idWlsdGluTmFtZXMoKS5lbmFibGVkSW5TcGVjaWZpY1dvcmxkUHVibGljTmFtZSgpLCAx
LCBqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uRW5hYmxlZEluU3BlY2lmaWNXb3Js
ZCwgTm9JbnRyaW5zaWMsIGF0dHJpYnV0ZXNGb3JTdHJ1Y3R1cmUoc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSkpOwotICAgIGlmICgod29ybGRG
b3JET01PYmplY3QoKnRoaXMpLnNwZWNpZmljV29ybGQoKSAmJiBSdW50aW1lRW5hYmxlZEZlYXR1
cmVzOjpzaGFyZWRGZWF0dXJlcygpLnRlc3RGZWF0dXJlRW5hYmxlZCgpKSkKLSAgICAgICAgcHV0
RGlyZWN0TmF0aXZlRnVuY3Rpb24odm0sIHRoaXMsIHN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRh
Kj4odm0uY2xpZW50RGF0YSktPmJ1aWx0aW5OYW1lcygpLmVuYWJsZWRJblNwZWNpZmljV29ybGRX
aGVuUnVudGltZUZlYXR1cmVFbmFibGVkUHVibGljTmFtZSgpLCAxLCBqc1Rlc3RHbG9iYWxPYmpl
Y3RJbnN0YW5jZUZ1bmN0aW9uRW5hYmxlZEluU3BlY2lmaWNXb3JsZFdoZW5SdW50aW1lRmVhdHVy
ZUVuYWJsZWQsIE5vSW50cmluc2ljLCBhdHRyaWJ1dGVzRm9yU3RydWN0dXJlKHN0YXRpY19jYXN0
PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbikpKTsKLSAgICBpZiAo
KHdvcmxkRm9yRE9NT2JqZWN0KCp0aGlzKS5zcGVjaWZpY1dvcmxkKCkgJiYgUnVudGltZUVuYWJs
ZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS50ZXN0RmVhdHVyZUVuYWJsZWQoKSAmJiBSdW50
aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnRlc3RGZWF0dXJlMUVuYWJsZWQo
KSkpCi0gICAgICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKHZtLCB0aGlzLCBzdGF0aWNfY2Fz
dDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpLT5idWlsdGluTmFtZXMoKS5lbmFibGVk
SW5TcGVjaWZpY1dvcmxkV2hlblJ1bnRpbWVGZWF0dXJlc0VuYWJsZWRQdWJsaWNOYW1lKCksIDEs
IGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25FbmFibGVkSW5TcGVjaWZpY1dvcmxk
V2hlblJ1bnRpbWVGZWF0dXJlc0VuYWJsZWQsIE5vSW50cmluc2ljLCBhdHRyaWJ1dGVzRm9yU3Ry
dWN0dXJlKHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5j
dGlvbikpKTsKLSNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQotICAgIGlmIChSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnRlc3RGZWF0dXJlRW5hYmxlZCgpKQotICAgICAg
ICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbih2bSwgdGhpcywgc3RhdGljX2Nhc3Q8SlNWTUNsaWVu
dERhdGEqPih2bS5jbGllbnREYXRhKS0+YnVpbHRpbk5hbWVzKCkudGVzdFByaXZhdGVGdW5jdGlv
blByaXZhdGVOYW1lKCksIDAsIGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25UZXN0
UHJpdmF0ZUZ1bmN0aW9uLCBOb0ludHJpbnNpYywgYXR0cmlidXRlc0ZvclN0cnVjdHVyZShzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pKSk7Ci0j
ZW5kaWYKLSNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQotICAgIGlmIChSdW50aW1lRW5hYmxlZEZl
YXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnRlc3RGZWF0dXJlRW5hYmxlZCgpKQotICAgICAgICBw
dXREaXJlY3RCdWlsdGluRnVuY3Rpb24odm0sIHRoaXMsIHN0YXRpY19jYXN0PEpTVk1DbGllbnRE
YXRhKj4odm0uY2xpZW50RGF0YSktPmJ1aWx0aW5OYW1lcygpLnRlc3RKU0J1aWx0aW5GdW5jdGlv
blB1YmxpY05hbWUoKSwgdGVzdEdsb2JhbE9iamVjdFRlc3RKU0J1aWx0aW5GdW5jdGlvbkNvZGVH
ZW5lcmF0b3Iodm0pLCBhdHRyaWJ1dGVzRm9yU3RydWN0dXJlKHN0YXRpY19jYXN0PHVuc2lnbmVk
PihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpCdWlsdGluKSkpOwotI2VuZGlmCi0gICAgaWYgKGpz
Q2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpLT5pc1NlY3VyZUNvbnRleHQoKSkKLSAgICAgICAgcHV0RGlyZWN0TmF0aXZlRnVu
Y3Rpb24odm0sIHRoaXMsIHN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0
YSktPmJ1aWx0aW5OYW1lcygpLmNhbGN1bGF0ZVNlY3JldFJlc3VsdFB1YmxpY05hbWUoKSwgMCwg
anNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbkNhbGN1bGF0ZVNlY3JldFJlc3VsdCwg
Tm9JbnRyaW5zaWMsIGF0dHJpYnV0ZXNGb3JTdHJ1Y3R1cmUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSkpOwotICAgIGlmIChqc0Nhc3Q8SlNE
T01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KS0+aXNTZWN1cmVDb250ZXh0KCkpCi0gICAgICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKHZt
LCB0aGlzLCBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpLT5idWls
dGluTmFtZXMoKS5nZXRTZWNyZXRCb29sZWFuUHVibGljTmFtZSgpLCAwLCBqc1Rlc3RHbG9iYWxP
YmplY3RJbnN0YW5jZUZ1bmN0aW9uR2V0U2VjcmV0Qm9vbGVhbiwgTm9JbnRyaW5zaWMsIGF0dHJp
YnV0ZXNGb3JTdHJ1Y3R1cmUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkZ1bmN0aW9uKSkpOwotI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCi0gICAgaWYgKChq
c0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKS0+aXNTZWN1cmVDb250ZXh0KCkgJiYgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6
c2hhcmVkRmVhdHVyZXMoKS50ZXN0RmVhdHVyZUVuYWJsZWQoKSkpCi0gICAgICAgIHB1dERpcmVj
dE5hdGl2ZUZ1bmN0aW9uKHZtLCB0aGlzLCBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZt
LmNsaWVudERhdGEpLT5idWlsdGluTmFtZXMoKS50ZXN0RmVhdHVyZUdldFNlY3JldEJvb2xlYW5Q
dWJsaWNOYW1lKCksIDAsIGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25UZXN0RmVh
dHVyZUdldFNlY3JldEJvb2xlYW4sIE5vSW50cmluc2ljLCBhdHRyaWJ1dGVzRm9yU3RydWN0dXJl
KHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbikp
KTsKLSNlbmRpZgorYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0U3RyaW5naWZpZXJBbm9u
eW1vdXNPcGVyYXRpb25Db25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpCit7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RHbG9iYWxPYmplY3Q+OjpzZXQ8
c2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uQ29u
c3RydWN0b3JTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRW
YWx1ZSwgIlRlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvbiIpOwogfQogCi1KU1ZhbHVl
IEpTVGVzdEdsb2JhbE9iamVjdDo6Z2V0Q29uc3RydWN0b3IoVk0mIHZtLCBjb25zdCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0KQorc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdEdsb2Jh
bE9iamVjdFRlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uQ29uc3RydWN0b3JHZXR0ZXIoSlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdEdsb2JhbE9iamVjdCYgdGhp
c09iamVjdCkKIHsKLSAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0R2xvYmFsT2Jq
ZWN0Q29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xv
YmFsT2JqZWN0KSk7CisgICAgVU5VU0VEX1BBUkFNKGxleGljYWxHbG9iYWxPYmplY3QpOworICAg
IHJldHVybiBKU1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uOjpnZXRDb25zdHJ1Y3RvcihK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgdGhpc09iamVjdC5nbG9iYWxPYmplY3Qo
KSk7CiB9CiAKLXZvaWQgSlNUZXN0R2xvYmFsT2JqZWN0OjpkZXN0cm95KEpTQzo6SlNDZWxsKiBj
ZWxsKQorRW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0VGVzdFN0cmluZ2lmaWVyTmFt
ZWRPcGVyYXRpb25Db25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgSlNUZXN0
R2xvYmFsT2JqZWN0KiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNUZXN0R2xvYmFsT2JqZWN0
Kj4oY2VsbCk7Ci0gICAgdGhpc09iamVjdC0+SlNUZXN0R2xvYmFsT2JqZWN0Ojp+SlNUZXN0R2xv
YmFsT2JqZWN0KCk7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RHbG9iYWxPYmplY3Q+
OjpnZXQ8anNUZXN0R2xvYmFsT2JqZWN0VGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb25Db25z
dHJ1Y3RvckdldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIlRlc3RTdHJp
bmdpZmllck5hbWVkT3BlcmF0aW9uIik7Cit9CisKK3N0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rl
c3RHbG9iYWxPYmplY3RUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbkNvbnN0cnVjdG9yU2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RHbG9iYWxPYmpl
Y3QmIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCit7CisgICAgYXV0byYgdm0gPSBKU0M6Omdl
dFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBj
b25zdHJ1Y3Rvci4KKyAgICByZXR1cm4gdGhpc09iamVjdC5wdXREaXJlY3Qodm0sIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiVGVzdFN0
cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24iKSwgc3RybGVuKCJUZXN0U3RyaW5naWZpZXJOYW1lZE9w
ZXJhdGlvbiIpKSwgdmFsdWUpOworfQorCitib29sIHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RT
dHJpbmdpZmllck5hbWVkT3BlcmF0aW9uQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlKQoreworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0R2xvYmFsT2Jq
ZWN0Pjo6c2V0PHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0
aW9uQ29uc3RydWN0b3JTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVu
Y29kZWRWYWx1ZSwgIlRlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uIik7Cit9CisKK3N0YXRp
YyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RUZXN0U3RyaW5naWZpZXJPcGVyYXRp
b25JbXBsZW1lbnRlZEFzQ29uc3RydWN0b3JHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxH
bG9iYWxPYmplY3QsIEpTVGVzdEdsb2JhbE9iamVjdCYgdGhpc09iamVjdCkKK3sKKyAgICBVTlVT
RURfUEFSQU0obGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgcmV0dXJuIEpTVGVzdFN0cmluZ2lm
aWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBczo6Z2V0Q29uc3RydWN0b3IoSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCksIHRoaXNPYmplY3QuZ2xvYmFsT2JqZWN0KCkpOworfQorCitFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBs
ZW1lbnRlZEFzQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQoreworICAgIHJldHVybiBJ
RExBdHRyaWJ1dGU8SlNUZXN0R2xvYmFsT2JqZWN0Pjo6Z2V0PGpzVGVzdEdsb2JhbE9iamVjdFRl
c3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXNDb25zdHJ1Y3RvckdldHRlcj4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIlRlc3RTdHJpbmdpZmllck9wZXJhdGlvbklt
cGxlbWVudGVkQXMiKTsKK30KKworc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdEdsb2JhbE9i
amVjdFRlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXNDb25zdHJ1Y3RvclNldHRl
cihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0R2xvYmFsT2JqZWN0
JiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQoreworICAgIGF1dG8mIHZtID0gSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29u
c3RydWN0b3IuCisgICAgcmV0dXJuIHRoaXNPYmplY3QucHV0RGlyZWN0KHZtLCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oIlRlc3RTdHJp
bmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXMiKSwgc3RybGVuKCJUZXN0U3RyaW5naWZpZXJP
cGVyYXRpb25JbXBsZW1lbnRlZEFzIikpLCB2YWx1ZSk7Cit9CisKK2Jvb2wgc2V0SlNUZXN0R2xv
YmFsT2JqZWN0VGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBc0NvbnN0cnVjdG9y
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK3sKKyAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTVGVzdEdsb2JhbE9iamVjdD46OnNldDxzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0
U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzQ29uc3RydWN0b3JTZXR0ZXI+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIlRlc3RTdHJpbmdpZmll
ck9wZXJhdGlvbkltcGxlbWVudGVkQXMiKTsKK30KKworc3RhdGljIGlubGluZSBKU1ZhbHVlIGpz
VGVzdEdsb2JhbE9iamVjdFRlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmdDb25z
dHJ1Y3RvckdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0
R2xvYmFsT2JqZWN0JiB0aGlzT2JqZWN0KQoreworICAgIFVOVVNFRF9QQVJBTShsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKKyAgICByZXR1cm4gSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRv
U3RyaW5nOjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwg
dGhpc09iamVjdC5nbG9iYWxPYmplY3QoKSk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIGpzVGVzdEds
b2JhbE9iamVjdFRlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmdDb25zdHJ1Y3Rv
cihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCit7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RH
bG9iYWxPYmplY3Q+OjpnZXQ8anNUZXN0R2xvYmFsT2JqZWN0VGVzdFN0cmluZ2lmaWVyT3BlcmF0
aW9uTmFtZWRUb1N0cmluZ0NvbnN0cnVjdG9yR2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCAiVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZyIpOworfQor
CitzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdFN0cmluZ2lmaWVy
T3BlcmF0aW9uTmFtZWRUb1N0cmluZ0NvbnN0cnVjdG9yU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RHbG9iYWxPYmplY3QmIHRoaXNPYmplY3QsIEpTVmFs
dWUgdmFsdWUpCit7CisgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKKyAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3Rvci4KKyAgICByZXR1
cm4gdGhpc09iamVjdC5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFt
ZWRUb1N0cmluZyIpLCBzdHJsZW4oIlRlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJp
bmciKSksIHZhbHVlKTsKK30KKworYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0U3RyaW5n
aWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlKQoreworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0R2xvYmFs
T2JqZWN0Pjo6c2V0PHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RTdHJpbmdpZmllck9wZXJhdGlv
bk5hbWVkVG9TdHJpbmdDb25zdHJ1Y3RvclNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRo
aXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0
cmluZyIpOwogfQogCi10ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RHbG9iYWxPYmplY3QqIElETEF0
dHJpYnV0ZTxKU1Rlc3RHbG9iYWxPYmplY3Q+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUpCitzdGF0aWMgaW5saW5lIEpT
VmFsdWUganNUZXN0R2xvYmFsT2JqZWN0VGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGVD
b25zdHJ1Y3RvckdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNU
ZXN0R2xvYmFsT2JqZWN0JiB0aGlzT2JqZWN0KQogewotICAgIHJldHVybiBqc0R5bmFtaWNDYXN0
PEpTVGVzdEdsb2JhbE9iamVjdCo+KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCBK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgVU5VU0VEX1BBUkFNKGxleGljYWxHbG9i
YWxPYmplY3QpOworICAgIHJldHVybiBKU1Rlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRl
OjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgdGhpc09i
amVjdC5nbG9iYWxPYmplY3QoKSk7CiB9CiAKLXRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdEdsb2Jh
bE9iamVjdCogSURMT3BlcmF0aW9uPEpTVGVzdEdsb2JhbE9iamVjdD46OmNhc3QoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSYgY2FsbEZyYW1lKQorRW5jb2Rl
ZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0VGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1
dGVDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgcmV0dXJuIGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0R2xvYmFsT2JqZWN0Kj4oSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCksIGNhbGxGcmFtZS50aGlzVmFsdWUoKSk7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rl
c3RHbG9iYWxPYmplY3Q+OjpnZXQ8anNUZXN0R2xvYmFsT2JqZWN0VGVzdFN0cmluZ2lmaWVyUmVh
ZE9ubHlBdHRyaWJ1dGVDb25zdHJ1Y3RvckdldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRo
aXNWYWx1ZSwgIlRlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlIik7CiB9CiAKLUVuY29k
ZWRKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdENvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFt
ZSkKK3N0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0U3RyaW5naWZp
ZXJSZWFkT25seUF0dHJpYnV0ZUNvbnN0cnVjdG9yU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RHbG9iYWxPYmplY3QmIHRoaXNPYmplY3QsIEpTVmFsdWUg
dmFsdWUpCiB7Ci0gICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
LSAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBhdXRv
KiBwcm90b3R5cGUgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEdsb2JhbE9iamVjdFByb3RvdHlwZSo+
KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFwcm90
b3R5cGUpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aHJvd1Njb3BlKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdEdsb2Jh
bE9iamVjdDo6Z2V0Q29uc3RydWN0b3IoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSwg
cHJvdG90eXBlLT5nbG9iYWxPYmplY3QoKSkpOworICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3Ry
dWN0b3IuCisgICAgcmV0dXJuIHRoaXNPYmplY3QucHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oIlRlc3RTdHJpbmdp
ZmllclJlYWRPbmx5QXR0cmlidXRlIiksIHN0cmxlbigiVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlB
dHRyaWJ1dGUiKSksIHZhbHVlKTsKIH0KIAotYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RDb25z
dHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVz
dEdsb2JhbE9iamVjdFRlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlQ29uc3RydWN0b3Io
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIFZNJiB2bSA9IEpTQzo6
Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0byogcHJvdG90eXBlID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RHbG9iYWxPYmplY3RQcm90b3R5cGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1
ZSkpOwotICAgIGlmIChVTkxJS0VMWSghcHJvdG90eXBlKSkgewotICAgICAgICB0aHJvd1ZNVHlw
ZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUpOwotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgfQotICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCi0g
ICAgcmV0dXJuIHByb3RvdHlwZS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25z
dHJ1Y3RvciwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSkpOworICAgIHJldHVybiBJRExB
dHRyaWJ1dGU8SlNUZXN0R2xvYmFsT2JqZWN0Pjo6c2V0PHNldEpTVGVzdEdsb2JhbE9iamVjdFRl
c3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlQ29uc3RydWN0b3JTZXR0ZXI+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIlRlc3RTdHJpbmdpZmllclJl
YWRPbmx5QXR0cmlidXRlIik7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RHbG9i
YWxPYmplY3RSZWd1bGFyQXR0cmlidXRlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU1Rlc3RHbG9iYWxPYmplY3QmIHRoaXNPYmplY3QpCitzdGF0aWMgaW5saW5l
IEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0VGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmli
dXRlQ29uc3RydWN0b3JHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTVGVzdEdsb2JhbE9iamVjdCYgdGhpc09iamVjdCkKIHsKLSAgICBhdXRvJiB2bSA9IEpTQzo6
Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwotICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwotICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMRE9NU3RyaW5n
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLnJlZ3VsYXJBdHRyaWJ1dGUo
KSkpKTsKKyAgICBVTlVTRURfUEFSQU0obGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgcmV0dXJu
IEpTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlOjpnZXRDb25zdHJ1Y3RvcihKU0M6
OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgdGhpc09iamVjdC5nbG9iYWxPYmplY3QoKSk7
CiB9CiAKLUVuY29kZWRKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdFJlZ3VsYXJBdHRyaWJ1dGUo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgUHJvcGVydHlOYW1lKQorRW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0VGVz
dFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lKQogewotICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0R2xvYmFsT2JqZWN0Pjo6Z2V0
PGpzVGVzdEdsb2JhbE9iamVjdFJlZ3VsYXJBdHRyaWJ1dGVHZXR0ZXIsIENhc3RlZFRoaXNFcnJv
ckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJyZWd1
bGFyQXR0cmlidXRlIik7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RHbG9iYWxPYmpl
Y3Q+OjpnZXQ8anNUZXN0R2xvYmFsT2JqZWN0VGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmli
dXRlQ29uc3RydWN0b3JHZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJU
ZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGUiKTsKIH0KIAotc3RhdGljIGlubGluZSBi
b29sIHNldEpTVGVzdEdsb2JhbE9iamVjdFJlZ3VsYXJBdHRyaWJ1dGVTZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdEdsb2JhbE9iamVjdCYgdGhpc09iamVj
dCwgSlNWYWx1ZSB2YWx1ZSkKK3N0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmpl
Y3RUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGVDb25zdHJ1Y3RvclNldHRlcihKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0R2xvYmFsT2JqZWN0JiB0aGlz
T2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQogewogICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7Ci0gICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwotICAgIGF1
dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETERPTVN0cmluZz4obGV4aWNhbEdsb2JhbE9iamVj
dCwgdmFsdWUpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwot
ICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBbJl0gewotICAgICAgICByZXR1cm4gaW1wbC5zZXRSZWd1bGFyQXR0cmlidXRlKFdURk1vdmUo
bmF0aXZlVmFsdWUpKTsKLSAgICB9KTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICAvLyBTaGFkb3dp
bmcgYSBidWlsdC1pbiBjb25zdHJ1Y3Rvci4KKyAgICByZXR1cm4gdGhpc09iamVjdC5wdXREaXJl
Y3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
TENoYXIqPigiVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlIiksIHN0cmxlbigiVGVz
dFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlIikpLCB2YWx1ZSk7CiB9CiAKLWJvb2wgc2V0
SlNUZXN0R2xvYmFsT2JqZWN0UmVndWxhckF0dHJpYnV0ZShKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUpCitib29sIHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RTdHJpbmdpZmllclJl
YWRXcml0ZUF0dHJpYnV0ZUNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSkKIHsKLSAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdEdsb2JhbE9iamVjdD46OnNl
dDxzZXRKU1Rlc3RHbG9iYWxPYmplY3RSZWd1bGFyQXR0cmlidXRlU2V0dGVyPigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJyZWd1bGFyQXR0cmlidXRlIik7
CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RHbG9iYWxPYmplY3Q+OjpzZXQ8c2V0SlNU
ZXN0R2xvYmFsT2JqZWN0VGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlQ29uc3RydWN0
b3JTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwg
IlRlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZSIpOwogfQogCi1zdGF0aWMgaW5saW5l
IEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0UHVibGljQW5kUHJpdmF0ZUF0dHJpYnV0ZUdldHRl
cihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0R2xvYmFsT2JqZWN0
JiB0aGlzT2JqZWN0KQorc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdFRl
c3RUeXBlZGVmc0NvbnN0cnVjdG9yR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU1Rlc3RHbG9iYWxPYmplY3QmIHRoaXNPYmplY3QpCiB7Ci0gICAgYXV0byYgdm0g
PSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETERP
TVN0cmluZz4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5wdWJsaWNBbmRQ
cml2YXRlQXR0cmlidXRlKCkpKSk7CisgICAgVU5VU0VEX1BBUkFNKGxleGljYWxHbG9iYWxPYmpl
Y3QpOworICAgIHJldHVybiBKU1Rlc3RUeXBlZGVmczo6Z2V0Q29uc3RydWN0b3IoSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIHRoaXNPYmplY3QuZ2xvYmFsT2JqZWN0KCkpOwogfQog
Ci1FbmNvZGVkSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RQdWJsaWNBbmRQcml2YXRlQXR0cmli
dXRlKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKK0VuY29kZWRKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVj
dFRlc3RUeXBlZGVmc0NvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICByZXR1
cm4gSURMQXR0cmlidXRlPEpTVGVzdEdsb2JhbE9iamVjdD46OmdldDxqc1Rlc3RHbG9iYWxPYmpl
Y3RQdWJsaWNBbmRQcml2YXRlQXR0cmlidXRlR2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCAicHVibGljQW5kUHJpdmF0ZUF0dHJpYnV0ZSIpOworICAgIHJldHVybiBJRExB
dHRyaWJ1dGU8SlNUZXN0R2xvYmFsT2JqZWN0Pjo6Z2V0PGpzVGVzdEdsb2JhbE9iamVjdFRlc3RU
eXBlZGVmc0NvbnN0cnVjdG9yR2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCAiVGVzdFR5cGVkZWZzIik7CiB9CiAKLXN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RHbG9i
YWxPYmplY3RQdWJsaWNBbmRQcml2YXRlQXR0cmlidXRlU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RHbG9iYWxPYmplY3QmIHRoaXNPYmplY3QsIEpTVmFs
dWUgdmFsdWUpCitzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdFR5
cGVkZWZzQ29uc3RydWN0b3JTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTVGVzdEdsb2JhbE9iamVjdCYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKIHsKICAg
ICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwotICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIGF1dG8mIGltcGwgPSB0
aGlzT2JqZWN0LndyYXBwZWQoKTsKLSAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExE
T01TdHJpbmc+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKLSAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKLSAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKLSAgICAgICAgcmV0dXJuIGltcGwu
c2V0UHVibGljQW5kUHJpdmF0ZUF0dHJpYnV0ZShXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7Ci0gICAg
fSk7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3Ry
dWN0b3IuCisgICAgcmV0dXJuIHRoaXNPYmplY3QucHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oIlRlc3RUeXBlZGVm
cyIpLCBzdHJsZW4oIlRlc3RUeXBlZGVmcyIpKSwgdmFsdWUpOwogfQogCi1ib29sIHNldEpTVGVz
dEdsb2JhbE9iamVjdFB1YmxpY0FuZFByaXZhdGVBdHRyaWJ1dGUoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlKQorYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0VHlwZWRlZnND
b25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RHbG9iYWxPYmplY3Q+OjpzZXQ8c2V0SlNUZXN0R2xvYmFs
T2JqZWN0UHVibGljQW5kUHJpdmF0ZUF0dHJpYnV0ZVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAicHVibGljQW5kUHJpdmF0ZUF0dHJpYnV0ZSIp
OworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0R2xvYmFsT2JqZWN0Pjo6c2V0PHNldEpT
VGVzdEdsb2JhbE9iamVjdFRlc3RUeXBlZGVmc0NvbnN0cnVjdG9yU2V0dGVyPigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJUZXN0VHlwZWRlZnMiKTsKIH0K
IAotI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCi1zdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0
R2xvYmFsT2JqZWN0UHVibGljQW5kUHJpdmF0ZUNvbmRpdGlvbmFsQXR0cmlidXRlR2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RHbG9iYWxPYmplY3QmIHRo
aXNPYmplY3QpCitzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0V29ya2Vy
R2xvYmFsU2NvcGVDb25zdHJ1Y3RvckdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNUZXN0R2xvYmFsT2JqZWN0JiB0aGlzT2JqZWN0KQogewotICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qu
d3JhcHBlZCgpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExE
T01TdHJpbmc+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwucHVibGljQW5k
UHJpdmF0ZUNvbmRpdGlvbmFsQXR0cmlidXRlKCkpKSk7CisgICAgVU5VU0VEX1BBUkFNKGxleGlj
YWxHbG9iYWxPYmplY3QpOworICAgIHJldHVybiBKU1dvcmtlckdsb2JhbFNjb3BlOjpnZXRDb25z
dHJ1Y3RvcihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgdGhpc09iamVjdC5nbG9i
YWxPYmplY3QoKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdFB1Ymxp
Y0FuZFByaXZhdGVDb25kaXRpb25hbEF0dHJpYnV0ZShKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCitFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9y
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdEds
b2JhbE9iamVjdD46OmdldDxqc1Rlc3RHbG9iYWxPYmplY3RQdWJsaWNBbmRQcml2YXRlQ29uZGl0
aW9uYWxBdHRyaWJ1dGVHZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJw
dWJsaWNBbmRQcml2YXRlQ29uZGl0aW9uYWxBdHRyaWJ1dGUiKTsKKyAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTVGVzdEdsb2JhbE9iamVjdD46OmdldDxqc1Rlc3RHbG9iYWxPYmplY3RXb3JrZXJH
bG9iYWxTY29wZUNvbnN0cnVjdG9yR2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCAiV29ya2VyR2xvYmFsU2NvcGUiKTsKIH0KIAotI2VuZGlmCi0KLSNpZiBFTkFCTEUoVEVT
VF9GRUFUVVJFKQotc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdEdsb2JhbE9iamVjdFB1Ymxp
Y0FuZFByaXZhdGVDb25kaXRpb25hbEF0dHJpYnV0ZVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0R2xvYmFsT2JqZWN0JiB0aGlzT2JqZWN0LCBKU1ZhbHVl
IHZhbHVlKQorc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdEdsb2JhbE9iamVjdFdvcmtlckds
b2JhbFNjb3BlQ29uc3RydWN0b3JTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTVGVzdEdsb2JhbE9iamVjdCYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKIHsK
ICAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwotICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIGF1dG8mIGltcGwg
PSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKLSAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJ
RExET01TdHJpbmc+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKLSAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKLSAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwo
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKLSAgICAgICAgcmV0dXJuIGlt
cGwuc2V0UHVibGljQW5kUHJpdmF0ZUNvbmRpdGlvbmFsQXR0cmlidXRlKFdURk1vdmUobmF0aXZl
VmFsdWUpKTsKLSAgICB9KTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICAvLyBTaGFkb3dpbmcgYSBi
dWlsdC1pbiBjb25zdHJ1Y3Rvci4KKyAgICByZXR1cm4gdGhpc09iamVjdC5wdXREaXJlY3Qodm0s
IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIq
PigiV29ya2VyR2xvYmFsU2NvcGUiKSwgc3RybGVuKCJXb3JrZXJHbG9iYWxTY29wZSIpKSwgdmFs
dWUpOwogfQogCi1ib29sIHNldEpTVGVzdEdsb2JhbE9iamVjdFB1YmxpY0FuZFByaXZhdGVDb25k
aXRpb25hbEF0dHJpYnV0ZShKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCitib29s
IHNldEpTVGVzdEdsb2JhbE9iamVjdFdvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3IoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIHJldHVybiBJRExBdHRyaWJ1dGU8
SlNUZXN0R2xvYmFsT2JqZWN0Pjo6c2V0PHNldEpTVGVzdEdsb2JhbE9iamVjdFB1YmxpY0FuZFBy
aXZhdGVDb25kaXRpb25hbEF0dHJpYnV0ZVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRo
aXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAicHVibGljQW5kUHJpdmF0ZUNvbmRpdGlvbmFsQXR0cmli
dXRlIik7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RHbG9iYWxPYmplY3Q+OjpzZXQ8
c2V0SlNUZXN0R2xvYmFsT2JqZWN0V29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvclNldHRlcj4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiV29ya2VyR2xv
YmFsU2NvcGUiKTsKIH0KIAotI2VuZGlmCi0KLSNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQotc3Rh
dGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdEVuYWJsZWRBdFJ1bnRpbWVBdHRy
aWJ1dGVHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdEds
b2JhbE9iamVjdCYgdGhpc09iamVjdCkKK3N0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RHbG9i
YWxPYmplY3RXb3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvckdldHRlcihKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0R2xvYmFsT2JqZWN0JiB0aGlzT2JqZWN0KQog
ewotICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0byYgaW1w
bCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Nj
b3BlLCAodG9KUzxJRExET01TdHJpbmc+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IGltcGwuZW5hYmxlZEF0UnVudGltZUF0dHJpYnV0ZSgpKSkpOworICAgIFVOVVNFRF9QQVJBTShs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICByZXR1cm4gSlNXb3JrbGV0R2xvYmFsU2NvcGU6Omdl
dENvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCB0aGlzT2JqZWN0
Lmdsb2JhbE9iamVjdCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0
RW5hYmxlZEF0UnVudGltZUF0dHJpYnV0ZShKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCitFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RXb3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvcihKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RHbG9iYWxP
YmplY3Q+OjpnZXQ8anNUZXN0R2xvYmFsT2JqZWN0RW5hYmxlZEF0UnVudGltZUF0dHJpYnV0ZUdl
dHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImVuYWJsZWRBdFJ1bnRpbWVB
dHRyaWJ1dGUiKTsKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdEdsb2JhbE9iamVjdD46
OmdldDxqc1Rlc3RHbG9iYWxPYmplY3RXb3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvckdldHRl
cj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIldvcmtsZXRHbG9iYWxTY29wZSIp
OwogfQogCi0jZW5kaWYKLQotI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCi1zdGF0aWMgaW5saW5l
IGJvb2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0RW5hYmxlZEF0UnVudGltZUF0dHJpYnV0ZVNldHRl
cihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0R2xvYmFsT2JqZWN0
JiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQorc3RhdGljIGlubGluZSBib29sIHNldEpTVGVz
dEdsb2JhbE9iamVjdFdvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9yU2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RHbG9iYWxPYmplY3QmIHRoaXNPYmpl
Y3QsIEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKLSAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKLSAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7Ci0gICAgYXV0byBu
YXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2
YWx1ZSk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7Ci0gICAg
QXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsm
XSB7Ci0gICAgICAgIHJldHVybiBpbXBsLnNldEVuYWJsZWRBdFJ1bnRpbWVBdHRyaWJ1dGUoV1RG
TW92ZShuYXRpdmVWYWx1ZSkpOwotICAgIH0pOwotICAgIHJldHVybiB0cnVlOworICAgIC8vIFNo
YWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yLgorICAgIHJldHVybiB0aGlzT2JqZWN0LnB1
dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxj
b25zdCBMQ2hhcio+KCJXb3JrbGV0R2xvYmFsU2NvcGUiKSwgc3RybGVuKCJXb3JrbGV0R2xvYmFs
U2NvcGUiKSksIHZhbHVlKTsKIH0KIAotYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RFbmFibGVk
QXRSdW50aW1lQXR0cmlidXRlKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK2Jv
b2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0V29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3IoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIHJldHVybiBJRExBdHRyaWJ1
dGU8SlNUZXN0R2xvYmFsT2JqZWN0Pjo6c2V0PHNldEpTVGVzdEdsb2JhbE9iamVjdEVuYWJsZWRB
dFJ1bnRpbWVBdHRyaWJ1dGVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
IGVuY29kZWRWYWx1ZSwgImVuYWJsZWRBdFJ1bnRpbWVBdHRyaWJ1dGUiKTsKKyAgICByZXR1cm4g
SURMQXR0cmlidXRlPEpTVGVzdEdsb2JhbE9iamVjdD46OnNldDxzZXRKU1Rlc3RHbG9iYWxPYmpl
Y3RXb3JrbGV0R2xvYmFsU2NvcGVDb25zdHJ1Y3RvclNldHRlcj4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiV29ya2xldEdsb2JhbFNjb3BlIik7CiB9CiAK
LSNlbmRpZgotCiBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0RE9NV2lu
ZG93Q29uc3RydWN0b3JHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTVGVzdEdsb2JhbE9iamVjdCYgdGhpc09iamVjdCkKIHsKICAgICBVTlVTRURfUEFSQU0obGV4
aWNhbEdsb2JhbE9iamVjdCk7CkBAIC0xNTYxLDYgKzM3MzEsNTIgQEAgYm9vbCBzZXRKU1Rlc3RH
bG9iYWxPYmplY3RUZXN0SlNCdWlsdGluQwogICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0
R2xvYmFsT2JqZWN0Pjo6c2V0PHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RKU0J1aWx0aW5Db25z
dHJ1Y3RvckNvbnN0cnVjdG9yU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCBlbmNvZGVkVmFsdWUsICJUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IiKTsKIH0KIAorc3RhdGlj
IGlubGluZSBKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdFRlc3RMZWdhY3lGYWN0b3J5RnVuY3Rp
b25Db25zdHJ1Y3RvckdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNUZXN0R2xvYmFsT2JqZWN0JiB0aGlzT2JqZWN0KQoreworICAgIFVOVVNFRF9QQVJBTShsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKKyAgICByZXR1cm4gSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9u
OjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgdGhpc09i
amVjdC5nbG9iYWxPYmplY3QoKSk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIGpzVGVzdEdsb2JhbE9i
amVjdFRlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb25Db25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5h
bWUpCit7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RHbG9iYWxPYmplY3Q+OjpnZXQ8
anNUZXN0R2xvYmFsT2JqZWN0VGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbkNvbnN0cnVjdG9yR2V0
dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiVGVzdExlZ2FjeUZhY3RvcnlG
dW5jdGlvbiIpOworfQorCitzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0
VGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbkNvbnN0cnVjdG9yU2V0dGVyKEpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RHbG9iYWxPYmplY3QmIHRoaXNPYmplY3QsIEpT
VmFsdWUgdmFsdWUpCit7CisgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKKyAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3Rvci4KKyAgICBy
ZXR1cm4gdGhpc09iamVjdC5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0s
IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlv
biIpLCBzdHJsZW4oIlRlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24iKSksIHZhbHVlKTsKK30KKwor
Ym9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uQ29uc3Ry
dWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQoreworICAgIHJldHVybiBJ
RExBdHRyaWJ1dGU8SlNUZXN0R2xvYmFsT2JqZWN0Pjo6c2V0PHNldEpTVGVzdEdsb2JhbE9iamVj
dFRlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb25Db25zdHJ1Y3RvclNldHRlcj4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiVGVzdExlZ2FjeUZhY3RvcnlGdW5j
dGlvbiIpOworfQorCitzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0QXVk
aW9Db25zdHJ1Y3RvckdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNUZXN0R2xvYmFsT2JqZWN0JiB0aGlzT2JqZWN0KQoreworICAgIFVOVVNFRF9QQVJBTShsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKKyAgICByZXR1cm4gSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9u
TGVnYWN5RmFjdG9yeUZ1bmN0aW9uOjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KSwgdGhpc09iamVjdC5nbG9iYWxPYmplY3QoKSk7Cit9CisKK0VuY29kZWRK
U1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdEF1ZGlvQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lKQoreworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0R2xvYmFsT2JqZWN0Pjo6Z2V0
PGpzVGVzdEdsb2JhbE9iamVjdEF1ZGlvQ29uc3RydWN0b3JHZXR0ZXI+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aGlzVmFsdWUsICJBdWRpbyIpOworfQorCitzdGF0aWMgaW5saW5lIGJvb2wgc2V0
SlNUZXN0R2xvYmFsT2JqZWN0QXVkaW9Db25zdHJ1Y3RvclNldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0R2xvYmFsT2JqZWN0JiB0aGlzT2JqZWN0LCBKU1Zh
bHVlIHZhbHVlKQoreworICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9i
amVjdCk7CisgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IuCisgICAgcmV0
dXJuIHRoaXNPYmplY3QucHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCBy
ZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oIkF1ZGlvIiksIHN0cmxlbigiQXVkaW8iKSks
IHZhbHVlKTsKK30KKworYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RBdWRpb0NvbnN0cnVjdG9y
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK3sKKyAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTVGVzdEdsb2JhbE9iamVjdD46OnNldDxzZXRKU1Rlc3RHbG9iYWxPYmplY3RBdWRp
b0NvbnN0cnVjdG9yU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNv
ZGVkVmFsdWUsICJBdWRpbyIpOworfQorCiBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0R2xv
YmFsT2JqZWN0VGVzdE1hcExpa2VDb25zdHJ1Y3RvckdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0R2xvYmFsT2JqZWN0JiB0aGlzT2JqZWN0KQogewogICAg
IFVOVVNFRF9QQVJBTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKQEAgLTE2NTMsNTIgKzM4NjksNiBA
QCBib29sIHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZEFuZEluCiAgICAgcmV0dXJuIElE
TEF0dHJpYnV0ZTxKU1Rlc3RHbG9iYWxPYmplY3Q+OjpzZXQ8c2V0SlNUZXN0R2xvYmFsT2JqZWN0
VGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyQ29uc3RydWN0b3JTZXR0ZXI+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIlRlc3ROYW1l
ZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllciIpOwogfQogCi1zdGF0aWMgaW5saW5lIEpT
VmFsdWUganNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1Y3Rvckdl
dHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0R2xvYmFsT2Jq
ZWN0JiB0aGlzT2JqZWN0KQotewotICAgIFVOVVNFRF9QQVJBTShsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKLSAgICByZXR1cm4gSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0b3IoSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIHRoaXNPYmplY3QuZ2xvYmFsT2JqZWN0KCkp
OwotfQotCi1FbmNvZGVkSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRDb25zdHJ1
Y3RvckNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKLXsKLSAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTVGVzdEdsb2JhbE9iamVjdD46OmdldDxqc1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFt
ZWRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yR2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhp
c1ZhbHVlLCAiVGVzdE5hbWVkQ29uc3RydWN0b3IiKTsKLX0KLQotc3RhdGljIGlubGluZSBib29s
IHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZENvbnN0cnVjdG9yQ29uc3RydWN0b3JTZXR0
ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdEdsb2JhbE9iamVj
dCYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKLXsKLSAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwotICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNv
bnN0cnVjdG9yLgotICAgIHJldHVybiB0aGlzT2JqZWN0LnB1dERpcmVjdCh2bSwgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJUZXN0TmFt
ZWRDb25zdHJ1Y3RvciIpLCBzdHJsZW4oIlRlc3ROYW1lZENvbnN0cnVjdG9yIikpLCB2YWx1ZSk7
Ci19Ci0KLWJvb2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkQ29uc3RydWN0b3JDb25z
dHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCi17Ci0gICAgcmV0dXJu
IElETEF0dHJpYnV0ZTxKU1Rlc3RHbG9iYWxPYmplY3Q+OjpzZXQ8c2V0SlNUZXN0R2xvYmFsT2Jq
ZWN0VGVzdE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1Y3RvclNldHRlcj4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiVGVzdE5hbWVkQ29uc3RydWN0b3IiKTsK
LX0KLQotc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdEF1ZGlvQ29uc3Ry
dWN0b3JHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdEds
b2JhbE9iamVjdCYgdGhpc09iamVjdCkKLXsKLSAgICBVTlVTRURfUEFSQU0obGV4aWNhbEdsb2Jh
bE9iamVjdCk7Ci0gICAgcmV0dXJuIEpTVGVzdE5hbWVkQ29uc3RydWN0b3JOYW1lZDo6Z2V0Q29u
c3RydWN0b3IoSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIHRoaXNPYmplY3QuZ2xv
YmFsT2JqZWN0KCkpOwotfQotCi1FbmNvZGVkSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RBdWRp
b0NvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKLXsKLSAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTVGVzdEdsb2JhbE9iamVjdD46OmdldDxqc1Rlc3RHbG9iYWxPYmplY3RBdWRpb0NvbnN0
cnVjdG9yR2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiQXVkaW8iKTsK
LX0KLQotc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdEdsb2JhbE9iamVjdEF1ZGlvQ29uc3Ry
dWN0b3JTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdEds
b2JhbE9iamVjdCYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKLXsKLSAgICBhdXRvJiB2bSA9
IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwotICAgIC8vIFNoYWRvd2luZyBhIGJ1
aWx0LWluIGNvbnN0cnVjdG9yLgotICAgIHJldHVybiB0aGlzT2JqZWN0LnB1dERpcmVjdCh2bSwg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+
KCJBdWRpbyIpLCBzdHJsZW4oIkF1ZGlvIikpLCB2YWx1ZSk7Ci19Ci0KLWJvb2wgc2V0SlNUZXN0
R2xvYmFsT2JqZWN0QXVkaW9Db25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUpCi17Ci0gICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RHbG9iYWxPYmplY3Q+Ojpz
ZXQ8c2V0SlNUZXN0R2xvYmFsT2JqZWN0QXVkaW9Db25zdHJ1Y3RvclNldHRlcj4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiQXVkaW8iKTsKLX0KLQogc3Rh
dGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZERlbGV0ZXJOb0lk
ZW50aWZpZXJDb25zdHJ1Y3RvckdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNUZXN0R2xvYmFsT2JqZWN0JiB0aGlzT2JqZWN0KQogewogICAgIFVOVVNFRF9QQVJB
TShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKQEAgLTIwNzMsNiArNDI0MywyOSBAQCBib29sIHNldEpT
VGVzdEdsb2JhbE9iamVjdFRlc3RPcGVyYXRpb25DCiAKICNlbmRpZgogCitzdGF0aWMgaW5saW5l
IEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25z
dHJ1Y3RvckdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0
R2xvYmFsT2JqZWN0JiB0aGlzT2JqZWN0KQoreworICAgIFVOVVNFRF9QQVJBTShsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKKyAgICByZXR1cm4gSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6Z2V0
Q29uc3RydWN0b3IoSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIHRoaXNPYmplY3Qu
Z2xvYmFsT2JqZWN0KCkpOworfQorCitFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkK
K3sKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdEdsb2JhbE9iamVjdD46OmdldDxqc1Rl
c3RHbG9iYWxPYmplY3RUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yR2V0dGVy
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnMiKTsKK30KKworc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdEdsb2JhbE9iamVjdFRl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3JTZXR0ZXIoSlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdEdsb2JhbE9iamVjdCYgdGhpc09iamVjdCwgSlNW
YWx1ZSB2YWx1ZSkKK3sKKyAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxP
YmplY3QpOworICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yLgorICAgIHJl
dHVybiB0aGlzT2JqZWN0LnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwg
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
cyIpLCBzdHJsZW4oIlRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzIikpLCB2YWx1ZSk7Cit9CisK
K2Jvb2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25z
dHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCit7CisgICAgcmV0dXJu
IElETEF0dHJpYnV0ZTxKU1Rlc3RHbG9iYWxPYmplY3Q+OjpzZXQ8c2V0SlNUZXN0R2xvYmFsT2Jq
ZWN0VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3RvclNldHRlcj4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnMiKTsKK30KKwogc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVj
dFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlQ29uc3RydWN0b3JHZXR0ZXIo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdEdsb2JhbE9iamVjdCYg
dGhpc09iamVjdCkKIHsKICAgICBVTlVTRURfUEFSQU0obGV4aWNhbEdsb2JhbE9iamVjdCk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TGVnYWN5
RmFjdG9yeUZ1bmN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uLmNwcAkobm9uZXhp
c3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TGVnYWN5RmFjdG9yeUZ1bmN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDMyOCBA
QAorLyoKKyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHBy
b2plY3QuCisgICAgVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5k
aW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAg
IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg
dmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0
aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0
aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBz
aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENP
UFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9u
LCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uLmgiCisKKyNpbmNsdWRlICJBY3RpdmVET01P
YmplY3QuaCIKKyNpbmNsdWRlICJET01Jc29TdWJzcGFjZXMuaCIKKyNpbmNsdWRlICJEb2N1bWVu
dC5oIgorI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgorI2luY2x1ZGUgIkpTRE9NQ29uc3RydWN0
b3JOb3RDb25zdHJ1Y3RhYmxlLmgiCisjaW5jbHVkZSAiSlNET01Db252ZXJ0SW50ZXJmYWNlLmgi
CisjaW5jbHVkZSAiSlNET01Db252ZXJ0U3RyaW5ncy5oIgorI2luY2x1ZGUgIkpTRE9NRXhjZXB0
aW9uSGFuZGxpbmcuaCIKKyNpbmNsdWRlICJKU0RPTUxlZ2FjeUZhY3RvcnlGdW5jdGlvbi5oIgor
I2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9u
Q29udGV4dC5oIgorI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKKyNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0hlYXBBbmFseXplci5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMu
aD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxs
VHlwZS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N1YnNwYWNlSW5saW5lcy5oPgorI2lu
Y2x1ZGUgPHd0Zi9HZXRQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5o
PgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KKworCituYW1lc3BhY2UgV2ViQ29yZSB7Cit1c2luZyBu
YW1lc3BhY2UgSlNDOworCisvLyBBdHRyaWJ1dGVzCisKK0pTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCos
IEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKK2Jvb2wgc2V0SlNUZXN0
TGVnYWN5RmFjdG9yeUZ1bmN0aW9uQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpT
Qzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworCitjbGFzcyBKU1Rlc3RM
ZWdhY3lGYWN0b3J5RnVuY3Rpb25Qcm90b3R5cGUgZmluYWwgOiBwdWJsaWMgSlNDOjpKU05vbkZp
bmFsT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB1c2luZyBCYXNlID0gSlNDOjpKU05vbkZpbmFsT2Jq
ZWN0OworICAgIHN0YXRpYyBKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb25Qcm90b3R5cGUqIGNy
ZWF0ZShKU0M6OlZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICB7CisgICAgICAgIEpTVGVzdExlZ2FjeUZhY3RvcnlG
dW5jdGlvblByb3RvdHlwZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxK
U1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb25Qcm90b3R5cGU+KHZtLmhlYXApKSBKU1Rlc3RMZWdh
Y3lGYWN0b3J5RnVuY3Rpb25Qcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsK
KyAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgICAgIHJldHVybiBwdHI7Cisg
ICAgfQorCisgICAgREVDTEFSRV9JTkZPOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBl
LCBKU0M6OlN1YnNwYWNlQWNjZXNzPgorICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJz
cGFjZUZvcihKU0M6OlZNJiB2bSkKKyAgICB7CisgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NV
QlNQQUNFX1NIQVJBQkxFKEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvblByb3RvdHlwZSwgQmFz
ZSk7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICB9CisgICAgc3Rh
dGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7
CisgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3Qs
IHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdz
KSwgaW5mbygpKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgSlNUZXN0TGVnYWN5RmFjdG9yeUZ1
bmN0aW9uUHJvdG90eXBlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICAgICAgOiBKU0M6OkpTTm9uRmluYWxPYmplY3Qodm0s
IHN0cnVjdHVyZSkKKyAgICB7CisgICAgfQorCisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6
OlZNJik7Cit9OworU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0TGVn
YWN5RmFjdG9yeUZ1bmN0aW9uUHJvdG90eXBlLCBKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb25Q
cm90b3R5cGU6OkJhc2UpOworCit1c2luZyBKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb25Db25z
dHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpTVGVzdExlZ2FjeUZh
Y3RvcnlGdW5jdGlvbj47Cit1c2luZyBKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb25MZWdhY3lG
YWN0b3J5RnVuY3Rpb24gPSBKU0RPTUxlZ2FjeUZhY3RvcnlGdW5jdGlvbjxKU1Rlc3RMZWdhY3lG
YWN0b3J5RnVuY3Rpb24+OworCit0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0TGVnYWN5RmFjdG9y
eUZ1bmN0aW9uQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwg
Y29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3sKKyAgICBVTlVTRURfUEFS
QU0odm0pOworICAgIHJldHVybiBnbG9iYWxPYmplY3QuZnVuY3Rpb25Qcm90b3R5cGUoKTsKK30K
KwordGVtcGxhdGU8PiB2b2lkIEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbkNvbnN0cnVjdG9y
Ojppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxP
YmplY3QpCit7CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUs
IEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbjo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3Qp
LCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CisgICAg
cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmco
dm0sICJUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uIl9zKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CisgICAgcHV0
RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDEpLCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtKTsKK30KKwordGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0TGVnYWN5RmFjdG9y
eUZ1bmN0aW9uQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3RMZWdhY3lGYWN0b3J5RnVuY3Rp
b24iLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxF
KEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbkNvbnN0cnVjdG9yKSB9OworCit0ZW1wbGF0ZTw+
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9u
TGVnYWN5RmFjdG9yeUZ1bmN0aW9uOjpjb25zdHJ1Y3QoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIFZNJiB2bSA9IGxleGlj
YWxHbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RMZWdhY3lG
YWN0b3J5RnVuY3Rpb25MZWdhY3lGYWN0b3J5RnVuY3Rpb24qPihjYWxsRnJhbWUtPmpzQ2FsbGVl
KCkpOworICAgIEFTU0VSVChjYXN0ZWRUaGlzKTsKKyAgICBpZiAoVU5MSUtFTFkoY2FsbEZyYW1l
LT5hcmd1bWVudENvdW50KCkgPCAxKSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJv
cihsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CisgICAgYXV0byogY29udGV4dCA9IGNhc3RlZFRoaXMt
PnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKKyAgICBpZiAoVU5MSUtFTFkoIWNvbnRleHQpKQor
ICAgICAgICByZXR1cm4gdGhyb3dDb25zdHJ1Y3RvclNjcmlwdEV4ZWN1dGlvbkNvbnRleHRVbmF2
YWlsYWJsZUVycm9yKCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCAiVGVzdExlZ2Fj
eUZhY3RvcnlGdW5jdGlvbiIpOworICAgIEFTU0VSVChjb250ZXh0LT5pc0RvY3VtZW50KCkpOwor
ICAgIGF1dG8mIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KCpjb250ZXh0KTsKKyAgICBF
bnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1
bWVudCgwKTsKKyAgICBhdXRvIHN0cjEgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKmxleGljYWxH
bG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOworICAgIEVuc3VyZVN0aWxsQWxpdmVTY29w
ZSBhcmd1bWVudDEgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpOworICAgIGF1dG8gc3RyMiA9IGFy
Z3VtZW50MS52YWx1ZSgpLmlzVW5kZWZpbmVkKCkgPyAiZGVmYXVsdFN0cmluZyJfcyA6IGNvbnZl
cnQ8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQxLnZhbHVlKCkp
OworICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
CisgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MiA9IGNhbGxGcmFtZS0+YXJndW1l
bnQoMik7CisgICAgYXV0byBzdHIzID0gYXJndW1lbnQyLnZhbHVlKCkuaXNVbmRlZmluZWQoKSA/
IFN0cmluZygpIDogY29udmVydDxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBh
cmd1bWVudDIudmFsdWUoKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKKyAgICBhdXRvIG9iamVjdCA9IFRlc3RMZWdhY3lGYWN0b3J5RnVu
Y3Rpb246OmNyZWF0ZUZvckpTQ29uc3RydWN0b3IoZG9jdW1lbnQsIFdURk1vdmUoc3RyMSksIFdU
Rk1vdmUoc3RyMiksIFdURk1vdmUoc3RyMykpOworICAgIHN0YXRpY19hc3NlcnQoSXNFeGNlcHRp
b25PcjxkZWNsdHlwZShvYmplY3QpPjo6dmFsdWUpOworICAgIHN0YXRpY19hc3NlcnQoZGVjbHR5
cGUob2JqZWN0KTo6UmV0dXJuVHlwZTo6aXNSZWYpOworICAgIGF1dG8ganNWYWx1ZSA9IHRvSlNO
ZXdseUNyZWF0ZWQ8SURMSW50ZXJmYWNlPFRlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24+PigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCB0aHJvd1Njb3Bl
LCBXVEZNb3ZlKG9iamVjdCkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
eyB9KTsKKyAgICBzZXRTdWJjbGFzc1N0cnVjdHVyZUlmTmVlZGVkPFRlc3RMZWdhY3lGYWN0b3J5
RnVuY3Rpb24+KGxleGljYWxHbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgYXNPYmplY3QoanNWYWx1
ZSkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKKyAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVmFsdWUpOworfQorCit0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNU
ZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uTGVnYWN5RmFjdG9yeUZ1bmN0aW9uOjpwcm90b3R5cGVG
b3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxP
YmplY3QpCit7CisgICAgVU5VU0VEX1BBUkFNKHZtKTsKKyAgICByZXR1cm4gZ2xvYmFsT2JqZWN0
LmZ1bmN0aW9uUHJvdG90eXBlKCk7Cit9CisKK3RlbXBsYXRlPD4gdm9pZCBKU1Rlc3RMZWdhY3lG
YWN0b3J5RnVuY3Rpb25MZWdhY3lGYWN0b3J5RnVuY3Rpb246OmluaXRpYWxpemVQcm9wZXJ0aWVz
KFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3sKKyAgICBwdXREaXJl
Y3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0TGVnYWN5RmFjdG9yeUZ1
bmN0aW9uOjpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3Bl
cnR5TmFtZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIkF1ZGlvIl9zKSwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSk7CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVt
YmVyKDEpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtKTsKK30KKwordGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNU
ZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uTGVnYWN5RmFjdG9yeUZ1bmN0aW9uOjpzX2luZm8gPSB7
ICJBdWRpbyIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0Rf
VEFCTEUoSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uTGVnYWN5RmFjdG9yeUZ1bmN0aW9uKSB9
OworCisvKiBIYXNoIHRhYmxlIGZvciBwcm90b3R5cGUgKi8KKworc3RhdGljIGNvbnN0IEhhc2hU
YWJsZVZhbHVlIEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvblByb3RvdHlwZVRhYmxlVmFsdWVz
W10gPQoreworICAgIHsgImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0
YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RMZWdhY3lGYWN0b3J5
RnVuY3Rpb25Db25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlT
bG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbkNvbnN0cnVj
dG9yKSB9IH0sCit9OworCitjb25zdCBDbGFzc0luZm8gSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0
aW9uUHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uIiwgJkJh
c2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RM
ZWdhY3lGYWN0b3J5RnVuY3Rpb25Qcm90b3R5cGUpIH07CisKK3ZvaWQgSlNUZXN0TGVnYWN5RmFj
dG9yeUZ1bmN0aW9uUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCit7CisgICAgQmFz
ZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIHJlaWZ5U3RhdGljUHJvcGVydGllcyh2bSwgSlNU
ZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uOjppbmZvKCksIEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5j
dGlvblByb3RvdHlwZVRhYmxlVmFsdWVzLCAqdGhpcyk7CisgICAgSlNDX1RPX1NUUklOR19UQUdf
V0lUSE9VVF9UUkFOU0lUSU9OKCk7Cit9CisKK2NvbnN0IENsYXNzSW5mbyBKU1Rlc3RMZWdhY3lG
YWN0b3J5RnVuY3Rpb246OnNfaW5mbyA9IHsgIlRlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24iLCAm
QmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVz
dExlZ2FjeUZhY3RvcnlGdW5jdGlvbikgfTsKKworSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9u
OjpKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24oU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9N
R2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9u
PiYmIGltcGwpCisgICAgOiBKU0RPTVdyYXBwZXI8VGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbj4o
c3RydWN0dXJlLCBnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpCit7Cit9CisKK3ZvaWQgSlNU
ZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCit7CisgICAg
QmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIEFTU0VSVChpbmhlcml0cyh2bSwgaW5mbygp
KSk7CisKKyAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZjxBY3RpdmVET01PYmplY3Qs
IFRlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24+Ojp2YWx1ZSwgIkludGVyZmFjZSBpcyBtYXJrZWQg
YXMgW0FjdGl2ZURPTU9iamVjdF0gYnV0IGltcGxlbWVudGF0aW9uIGNsYXNzIGRvZXMgbm90IHN1
YmNsYXNzIEFjdGl2ZURPTU9iamVjdC4iKTsKKworfQorCitKU09iamVjdCogSlNUZXN0TGVnYWN5
RmFjdG9yeUZ1bmN0aW9uOjpjcmVhdGVQcm90b3R5cGUoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVj
dCYgZ2xvYmFsT2JqZWN0KQoreworICAgIHJldHVybiBKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rp
b25Qcm90b3R5cGU6OmNyZWF0ZSh2bSwgJmdsb2JhbE9iamVjdCwgSlNUZXN0TGVnYWN5RmFjdG9y
eUZ1bmN0aW9uUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sICZnbG9iYWxPYmplY3QsIGds
b2JhbE9iamVjdC5vYmplY3RQcm90b3R5cGUoKSkpOworfQorCitKU09iamVjdCogSlNUZXN0TGVn
YWN5RmFjdG9yeUZ1bmN0aW9uOjpwcm90b3R5cGUoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYg
Z2xvYmFsT2JqZWN0KQoreworICAgIHJldHVybiBnZXRET01Qcm90b3R5cGU8SlNUZXN0TGVnYWN5
RmFjdG9yeUZ1bmN0aW9uPih2bSwgZ2xvYmFsT2JqZWN0KTsKK30KKworSlNWYWx1ZSBKU1Rlc3RM
ZWdhY3lGYWN0b3J5RnVuY3Rpb246OmdldENvbnN0cnVjdG9yKFZNJiB2bSwgY29uc3QgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8
SlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0
IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7Cit9CisKK0pTVmFsdWUgSlNUZXN0
TGVnYWN5RmFjdG9yeUZ1bmN0aW9uOjpnZXRMZWdhY3lGYWN0b3J5RnVuY3Rpb24oVk0mIHZtLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIHJldHVybiBnZXRET01Db25zdHJ1
Y3RvcjxKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb25MZWdhY3lGYWN0b3J5RnVuY3Rpb24+KHZt
LCAqanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7Cit9CisKK3ZvaWQg
SlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uOjpkZXN0cm95KEpTQzo6SlNDZWxsKiBjZWxsKQor
eworICAgIEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbiogdGhpc09iamVjdCA9IHN0YXRpY19j
YXN0PEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbio+KGNlbGwpOworICAgIHRoaXNPYmplY3Qt
PkpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbjo6fkpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlv
bigpOworfQorCitFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb25Db25z
dHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCit7CisgICAgVk0mIHZtID0gSlNDOjpnZXRWTShs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKyAgICBhdXRvKiBwcm90b3R5cGUgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdExl
Z2FjeUZhY3RvcnlGdW5jdGlvblByb3RvdHlwZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1Zh
bHVlKSk7CisgICAgaWYgKFVOTElLRUxZKCFwcm90b3R5cGUpKQorICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlKTsKKyAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbjo6Z2V0Q29uc3Ry
dWN0b3IoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSwgcHJvdG90eXBlLT5nbG9iYWxP
YmplY3QoKSkpOworfQorCitib29sIHNldEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbkNvbnN0
cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK3sKKyAgICBWTSYgdm0g
PSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOworICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIGF1dG8qIHByb3RvdHlwZSA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uUHJvdG90eXBlKj4odm0sIEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBpZiAoVU5MSUtFTFkoIXByb3RvdHlwZSkpIHsKKyAg
ICAgICAgdGhyb3dWTVR5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlKTsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1p
biBjb25zdHJ1Y3RvcgorICAgIHJldHVybiBwcm90b3R5cGUtPnB1dERpcmVjdCh2bSwgdm0ucHJv
cGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpKTsK
K30KKworSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uOjpzdWJz
cGFjZUZvckltcGwoSlNDOjpWTSYgdm0pCit7CisgICAgYXV0byYgY2xpZW50RGF0YSA9ICpzdGF0
aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpOworICAgIGF1dG8mIHNwYWNl
cyA9IGNsaWVudERhdGEuc3Vic3BhY2VzKCk7CisgICAgaWYgKGF1dG8qIHNwYWNlID0gc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uLmdldCgpKQorICAgICAgICBy
ZXR1cm4gc3BhY2U7CisgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpT
RGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24+IHx8ICFKU1Rl
c3RMZWdhY3lGYWN0b3J5RnVuY3Rpb246Om5lZWRzRGVzdHJ1Y3Rpb24pOworICAgIGlmIGNvbnN0
ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNUZXN0
TGVnYWN5RmFjdG9yeUZ1bmN0aW9uPikKKyAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
TGVnYWN5RmFjdG9yeUZ1bmN0aW9uID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQ
QUNFX0lOSVQodm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgp
LCBKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24pOworICAgIGVsc2UKKyAgICAgICAgc3BhY2Vz
Lm1fc3Vic3BhY2VGb3JUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uID0gbWFrZVVuaXF1ZTxJc29T
dWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVhcCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5n
ZXQoKSwgSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uKTsKKyAgICBhdXRvKiBzcGFjZSA9IHNw
YWNlcy5tX3N1YnNwYWNlRm9yVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbi5nZXQoKTsKK0lHTk9S
RV9XQVJOSU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCitJR05PUkVfV0FSTklOR1NfQkVH
SU4oInRhdXRvbG9naWNhbC1jb21wYXJlIikKKyAgICBpZiAoJkpTVGVzdExlZ2FjeUZhY3RvcnlG
dW5jdGlvbjo6dmlzaXRPdXRwdXRDb25zdHJhaW50cyAhPSAmSlNDOjpKU0NlbGw6OnZpc2l0T3V0
cHV0Q29uc3RyYWludHMpCisgICAgICAgIGNsaWVudERhdGEub3V0cHV0Q29uc3RyYWludFNwYWNl
cygpLmFwcGVuZChzcGFjZSk7CitJR05PUkVfV0FSTklOR1NfRU5ECitJR05PUkVfV0FSTklOR1Nf
RU5ECisgICAgcmV0dXJuIHNwYWNlOworfQorCit2b2lkIEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5j
dGlvbjo6YW5hbHl6ZUhlYXAoSlNDZWxsKiBjZWxsLCBIZWFwQW5hbHl6ZXImIGFuYWx5emVyKQor
eworICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0
aW9uKj4oY2VsbCk7CisgICAgYW5hbHl6ZXIuc2V0V3JhcHBlZE9iamVjdEZvckNlbGwoY2VsbCwg
JnRoaXNPYmplY3QtPndyYXBwZWQoKSk7CisgICAgaWYgKHRoaXNPYmplY3QtPnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSkKKyAgICAgICAgYW5hbHl6ZXIuc2V0TGFiZWxGb3JDZWxsKGNlbGwsICJ1
cmwgIiArIHRoaXNPYmplY3QtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+dXJsKCkuc3RyaW5n
KCkpOworICAgIEJhc2U6OmFuYWx5emVIZWFwKGNlbGwsIGFuYWx5emVyKTsKK30KKworYm9vbCBK
U1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb25Pd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9v
dHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqLCBTbG90VmlzaXRvciYg
dmlzaXRvciwgY29uc3QgY2hhcioqIHJlYXNvbikKK3sKKyAgICBhdXRvKiBqc1Rlc3RMZWdhY3lG
YWN0b3J5RnVuY3Rpb24gPSBqc0Nhc3Q8SlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uKj4oaGFu
ZGxlLnNsb3QoKS0+YXNDZWxsKCkpOworICAgIGF1dG8mIHdyYXBwZWQgPSBqc1Rlc3RMZWdhY3lG
YWN0b3J5RnVuY3Rpb24tPndyYXBwZWQoKTsKKyAgICBpZiAoIXdyYXBwZWQuaXNDb250ZXh0U3Rv
cHBlZCgpICYmIHdyYXBwZWQuaGFzUGVuZGluZ0FjdGl2aXR5KCkpIHsKKyAgICAgICAgaWYgKFVO
TElLRUxZKHJlYXNvbikpCisgICAgICAgICAgICAqcmVhc29uID0gIkFjdGl2ZURPTU9iamVjdCB3
aXRoIHBlbmRpbmcgYWN0aXZpdHkiOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgfQorICAg
IFVOVVNFRF9QQVJBTSh2aXNpdG9yKTsKKyAgICBVTlVTRURfUEFSQU0ocmVhc29uKTsKKyAgICBy
ZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uT3duZXI6
OmZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiBjb250ZXh0
KQoreworICAgIGF1dG8qIGpzVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbiA9IHN0YXRpY19jYXN0
PEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbio+KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgpKTsK
KyAgICBhdXRvJiB3b3JsZCA9ICpzdGF0aWNfY2FzdDxET01XcmFwcGVyV29ybGQqPihjb250ZXh0
KTsKKyAgICB1bmNhY2hlV3JhcHBlcih3b3JsZCwgJmpzVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlv
bi0+d3JhcHBlZCgpLCBqc1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24pOworfQorCisjaWYgRU5B
QkxFKEJJTkRJTkdfSU5URUdSSVRZKQorI2lmIFBMQVRGT1JNKFdJTikKKyNwcmFnbWEgd2Fybmlu
ZyhkaXNhYmxlOiA0NDgzKQorZXh0ZXJuICJDIiB7IGV4dGVybiB2b2lkICgqY29uc3QgX19pZGVu
dGlmaWVyKCI/P183VGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbkBXZWJDb3JlQEA2QkAiKVtdKSgp
OyB9CisjZWxzZQorZXh0ZXJuICJDIiB7IGV4dGVybiB2b2lkKiBfWlRWTjdXZWJDb3JlMjVUZXN0
TGVnYWN5RmFjdG9yeUZ1bmN0aW9uRVtdOyB9CisjZW5kaWYKKyNlbmRpZgorCitKU0M6OkpTVmFs
dWUgdG9KU05ld2x5Q3JlYXRlZChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNET01HbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24+JiYgaW1wbCkK
K3sKKworI2lmIEVOQUJMRShCSU5ESU5HX0lOVEVHUklUWSkKKyAgICBjb25zdCB2b2lkKiBhY3R1
YWxWVGFibGVQb2ludGVyID0gZ2V0VlRhYmxlUG9pbnRlcihpbXBsLnB0cigpKTsKKyNpZiBQTEFU
Rk9STShXSU4pCisgICAgdm9pZCogZXhwZWN0ZWRWVGFibGVQb2ludGVyID0gX19pZGVudGlmaWVy
KCI/P183VGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbkBXZWJDb3JlQEA2QkAiKTsKKyNlbHNlCisg
ICAgdm9pZCogZXhwZWN0ZWRWVGFibGVQb2ludGVyID0gJl9aVFZON1dlYkNvcmUyNVRlc3RMZWdh
Y3lGYWN0b3J5RnVuY3Rpb25FWzJdOworI2VuZGlmCisKKyAgICAvLyBJZiB0aGlzIGZhaWxzIFRl
c3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24gZG9lcyBub3QgaGF2ZSBhIHZ0YWJsZSwgc28geW91IG5l
ZWQgdG8gYWRkIHRoZQorICAgIC8vIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUgYXR0cmlidXRl
IHRvIHRoZSBpbnRlcmZhY2UgZGVmaW5pdGlvbgorICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19w
b2x5bW9ycGhpYzxUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uPjo6dmFsdWUsICJUZXN0TGVnYWN5
RmFjdG9yeUZ1bmN0aW9uIGlzIG5vdCBwb2x5bW9ycGhpYyIpOworCisgICAgLy8gSWYgeW91IGhp
dCB0aGlzIGFzc2VydGlvbiB5b3UgZWl0aGVyIGhhdmUgYSB1c2UgYWZ0ZXIgZnJlZSBidWcsIG9y
CisgICAgLy8gVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbiBoYXMgc3ViY2xhc3Nlcy4gSWYgVGVz
dExlZ2FjeUZhY3RvcnlGdW5jdGlvbiBoYXMgc3ViY2xhc3NlcyB0aGF0IGdldCBwYXNzZWQKKyAg
ICAvLyB0byB0b0pTKCkgd2UgY3VycmVudGx5IHJlcXVpcmUgVGVzdExlZ2FjeUZhY3RvcnlGdW5j
dGlvbiB5b3UgdG8gb3B0IG91dCBvZiBiaW5kaW5nIGhhcmRlbmluZworICAgIC8vIGJ5IGFkZGlu
ZyB0aGUgU2tpcFZUYWJsZVZhbGlkYXRpb24gYXR0cmlidXRlIHRvIHRoZSBpbnRlcmZhY2UgSURM
IGRlZmluaXRpb24KKyAgICBSRUxFQVNFX0FTU0VSVChhY3R1YWxWVGFibGVQb2ludGVyID09IGV4
cGVjdGVkVlRhYmxlUG9pbnRlcik7CisjZW5kaWYKKyAgICByZXR1cm4gY3JlYXRlV3JhcHBlcjxU
ZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uPihnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOwor
fQorCitKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0TGVnYWN5RmFjdG9y
eUZ1bmN0aW9uJiBpbXBsKQoreworICAgIHJldHVybiB3cmFwKGxleGljYWxHbG9iYWxPYmplY3Qs
IGdsb2JhbE9iamVjdCwgaW1wbCk7Cit9CisKK1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24qIEpT
VGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbjo6dG9XcmFwcGVkKEpTQzo6Vk0mIHZtLCBKU0M6OkpT
VmFsdWUgdmFsdWUpCit7CisgICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNDYXN0PEpT
VGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbio+KHZtLCB2YWx1ZSkpCisgICAgICAgIHJldHVybiAm
d3JhcHBlci0+d3JhcHBlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCit9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TGVnYWN5RmFjdG9y
eUZ1bmN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbi5oCShub25leGlzdGVudCkKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RMZWdhY3lGYWN0
b3J5RnVuY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDk0IEBACisvKgorICAgIFRo
aXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KKyAgICBU
aGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBO
T1QgTU9ESUZZIQorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisg
ICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi
ZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQor
ICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJ
ZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwg
NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEz
MDEsIFVTQS4KKyovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSlNET01XcmFwcGVyLmgi
CisjaW5jbHVkZSAiVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbi5oIgorI2luY2x1ZGUgPHd0Zi9O
ZXZlckRlc3Ryb3llZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEpTVGVzdExl
Z2FjeUZhY3RvcnlGdW5jdGlvbiA6IHB1YmxpYyBKU0RPTVdyYXBwZXI8VGVzdExlZ2FjeUZhY3Rv
cnlGdW5jdGlvbj4geworcHVibGljOgorICAgIHVzaW5nIEJhc2UgPSBKU0RPTVdyYXBwZXI8VGVz
dExlZ2FjeUZhY3RvcnlGdW5jdGlvbj47CisgICAgc3RhdGljIEpTVGVzdExlZ2FjeUZhY3RvcnlG
dW5jdGlvbiogY3JlYXRlKEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uPiYmIGltcGwp
CisgICAgeworICAgICAgICBKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24qIHB0ciA9IG5ldyAo
Tm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uPihn
bG9iYWxPYmplY3QtPnZtKCkuaGVhcCkpIEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbihzdHJ1
Y3R1cmUsICpnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOworICAgICAgICBwdHItPmZpbmlz
aENyZWF0aW9uKGdsb2JhbE9iamVjdC0+dm0oKSk7CisgICAgICAgIHJldHVybiBwdHI7CisgICAg
fQorCisgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIGNyZWF0ZVByb3RvdHlwZShKU0M6OlZNJiwg
SlNET01HbG9iYWxPYmplY3QmKTsKKyAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogcHJvdG90eXBl
KEpTQzo6Vk0mLCBKU0RPTUdsb2JhbE9iamVjdCYpOworICAgIHN0YXRpYyBUZXN0TGVnYWN5RmFj
dG9yeUZ1bmN0aW9uKiB0b1dyYXBwZWQoSlNDOjpWTSYsIEpTQzo6SlNWYWx1ZSk7CisgICAgc3Rh
dGljIHZvaWQgZGVzdHJveShKU0M6OkpTQ2VsbCopOworCisgICAgREVDTEFSRV9JTkZPOworCisg
ICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpT
Qzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkK
KyAgICB7CisgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxP
YmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVy
ZUZsYWdzKSwgaW5mbygpLCBKU0M6Ok5vbkFycmF5KTsKKyAgICB9CisKKyAgICBzdGF0aWMgSlND
OjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBjb25zdCBKU0M6OkpTR2xvYmFsT2Jq
ZWN0Kik7CisgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRMZWdhY3lGYWN0b3J5RnVuY3Rpb24o
SlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSwg
SlNDOjpTdWJzcGFjZUFjY2VzcyBtb2RlPiBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3Bh
Y2VGb3IoSlNDOjpWTSYgdm0pCisgICAgeworICAgICAgICBpZiBjb25zdGV4cHIgKG1vZGUgPT0g
SlNDOjpTdWJzcGFjZUFjY2Vzczo6Q29uY3VycmVudGx5KQorICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgICAgIHJldHVybiBzdWJzcGFjZUZvckltcGwodm0pOworICAgIH0KKyAgICBz
dGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKTsKKyAg
ICBzdGF0aWMgdm9pZCBhbmFseXplSGVhcChKU0NlbGwqLCBKU0M6OkhlYXBBbmFseXplciYpOwor
cHJvdGVjdGVkOgorICAgIEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbihKU0M6OlN0cnVjdHVy
ZSosIEpTRE9NR2xvYmFsT2JqZWN0JiwgUmVmPFRlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24+JiYp
OworCisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJik7Cit9OworCitjbGFzcyBKU1Rl
c3RMZWdhY3lGYWN0b3J5RnVuY3Rpb25Pd25lciA6IHB1YmxpYyBKU0M6OldlYWtIYW5kbGVPd25l
ciB7CitwdWJsaWM6CisgICAgdmlydHVhbCBib29sIGlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3Rz
KEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4sIHZvaWQqIGNvbnRleHQsIEpTQzo6U2xvdFZpc2l0
b3ImLCBjb25zdCBjaGFyKiopOworICAgIHZpcnR1YWwgdm9pZCBmaW5hbGl6ZShKU0M6OkhhbmRs
ZTxKU0M6OlVua25vd24+LCB2b2lkKiBjb250ZXh0KTsKK307CisKK2lubGluZSBKU0M6OldlYWtI
YW5kbGVPd25lciogd3JhcHBlck93bmVyKERPTVdyYXBwZXJXb3JsZCYsIFRlc3RMZWdhY3lGYWN0
b3J5RnVuY3Rpb24qKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxKU1Rlc3RMZWdhY3lG
YWN0b3J5RnVuY3Rpb25Pd25lcj4gb3duZXI7CisgICAgcmV0dXJuICZvd25lci5nZXQoKTsKK30K
KworaW5saW5lIHZvaWQqIHdyYXBwZXJLZXkoVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbiogd3Jh
cHBhYmxlT2JqZWN0KQoreworICAgIHJldHVybiB3cmFwcGFibGVPYmplY3Q7Cit9CisKK0pTQzo6
SlNWYWx1ZSB0b0pTKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0RPTUdsb2JhbE9iamVjdCosIFRl
c3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24mKTsKK2lubGluZSBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6
OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0RPTUdsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uKiBpbXBsKSB7IHJldHVybiBp
bXBsID8gdG9KUyhsZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QsICppbXBsKSA6IEpT
Qzo6anNOdWxsKCk7IH0KK0pTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6SlNHbG9i
YWxPYmplY3QqLCBKU0RPTUdsb2JhbE9iamVjdCosIFJlZjxUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0
aW9uPiYmKTsKK2lubGluZSBKU0M6OkpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChKU0M6OkpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBSZWZQdHI8VGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbj4mJiBpbXBsKSB7IHJldHVy
biBpbXBsID8gdG9KU05ld2x5Q3JlYXRlZChsZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmpl
Y3QsIGltcGwucmVsZWFzZU5vbk51bGwoKSkgOiBKU0M6OmpzTnVsbCgpOyB9CisKK3RlbXBsYXRl
PD4gc3RydWN0IEpTRE9NV3JhcHBlckNvbnZlcnRlclRyYWl0czxUZXN0TGVnYWN5RmFjdG9yeUZ1
bmN0aW9uPiB7CisgICAgdXNpbmcgV3JhcHBlckNsYXNzID0gSlNUZXN0TGVnYWN5RmFjdG9yeUZ1
bmN0aW9uOworICAgIHVzaW5nIFRvV3JhcHBlZFJldHVyblR5cGUgPSBUZXN0TGVnYWN5RmFjdG9y
eUZ1bmN0aW9uKjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDI2NjYxNikKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmNw
cAkobm9uZXhpc3RlbnQpCkBAIC0xLDMyOCArMCwwIEBACi0vKgotICAgIFRoaXMgZmlsZSBpcyBw
YXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KLSAgICBUaGlzIGZpbGUgaGFz
IGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQot
Ci0gICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgotICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljCi0gICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotCi0gICAgVGhpcyBsaWJy
YXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0g
ICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKLSAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLgotCi0gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w
eSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICAgIGFsb25nIHdp
dGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRl
IHRvCi0gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSov
Ci0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJKU1Rlc3ROYW1lZENvbnN0cnVjdG9y
LmgiCi0KLSNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKLSNpbmNsdWRlICJET01Jc29TdWJz
cGFjZXMuaCIKLSNpbmNsdWRlICJEb2N1bWVudC5oIgotI2luY2x1ZGUgIkpTRE9NQmluZGluZy5o
IgotI2luY2x1ZGUgIkpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlLmgiCi0jaW5jbHVk
ZSAiSlNET01Db252ZXJ0SW50ZXJmYWNlLmgiCi0jaW5jbHVkZSAiSlNET01Db252ZXJ0U3RyaW5n
cy5oIgotI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKLSNpbmNsdWRlICJKU0RP
TU5hbWVkQ29uc3RydWN0b3IuaCIKLSNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgotI2lu
Y2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKLSNpbmNsdWRlICJXZWJDb3JlSlNDbGll
bnREYXRhLmgiCi0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVuY3Rpb25Qcm90b3R5cGUuaD4K
LSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwQW5hbHl6ZXIuaD4KLSNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNEZXN0
cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9T
dWJzcGFjZUlubGluZXMuaD4KLSNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+Ci0jaW5jbHVkZSA8d3Rm
L1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KLSNpbmNsdWRlIDx3dGYvVVJMLmg+Ci0KLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotdXNpbmcgbmFtZXNwYWNlIEpTQzsKLQotLy8gQXR0cmlidXRlcwotCi1K
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1Y3RvcihKU0M6
OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUp
OwotYm9vbCBzZXRKU1Rlc3ROYW1lZENvbnN0cnVjdG9yQ29uc3RydWN0b3IoSlNDOjpKU0dsb2Jh
bE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwotCi1j
bGFzcyBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yUHJvdG90eXBlIGZpbmFsIDogcHVibGljIEpTQzo6
SlNOb25GaW5hbE9iamVjdCB7Ci1wdWJsaWM6Ci0gICAgdXNpbmcgQmFzZSA9IEpTQzo6SlNOb25G
aW5hbE9iamVjdDsKLSAgICBzdGF0aWMgSlNUZXN0TmFtZWRDb25zdHJ1Y3RvclByb3RvdHlwZSog
Y3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6
OlN0cnVjdHVyZSogc3RydWN0dXJlKQotICAgIHsKLSAgICAgICAgSlNUZXN0TmFtZWRDb25zdHJ1
Y3RvclByb3RvdHlwZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rl
c3ROYW1lZENvbnN0cnVjdG9yUHJvdG90eXBlPih2bS5oZWFwKSkgSlNUZXN0TmFtZWRDb25zdHJ1
Y3RvclByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOwotICAgICAgICBwdHIt
PmZpbmlzaENyZWF0aW9uKHZtKTsKLSAgICAgICAgcmV0dXJuIHB0cjsKLSAgICB9Ci0KLSAgICBE
RUNMQVJFX0lORk87Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIEpTQzo6U3Vic3Bh
Y2VBY2Nlc3M+Ci0gICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6
Vk0mIHZtKQotICAgIHsKLSAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFC
TEUoSlNUZXN0TmFtZWRDb25zdHJ1Y3RvclByb3RvdHlwZSwgQmFzZSk7Ci0gICAgICAgIHJldHVy
biAmdm0ucGxhaW5PYmplY3RTcGFjZTsKLSAgICB9Ci0gICAgc3RhdGljIEpTQzo6U3RydWN0dXJl
KiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBK
U0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpU
eXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKLSAgICB9
Ci0KLXByaXZhdGU6Ci0gICAgSlNUZXN0TmFtZWRDb25zdHJ1Y3RvclByb3RvdHlwZShKU0M6OlZN
JiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCi0g
ICAgICAgIDogSlNDOjpKU05vbkZpbmFsT2JqZWN0KHZtLCBzdHJ1Y3R1cmUpCi0gICAgewotICAg
IH0KLQotICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYpOwotfTsKLVNUQVRJQ19BU1NF
UlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdE5hbWVkQ29uc3RydWN0b3JQcm90b3R5cGUs
IEpTVGVzdE5hbWVkQ29uc3RydWN0b3JQcm90b3R5cGU6OkJhc2UpOwotCi11c2luZyBKU1Rlc3RO
YW1lZENvbnN0cnVjdG9yQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0
YWJsZTxKU1Rlc3ROYW1lZENvbnN0cnVjdG9yPjsKLXVzaW5nIEpTVGVzdE5hbWVkQ29uc3RydWN0
b3JOYW1lZENvbnN0cnVjdG9yID0gSlNET01OYW1lZENvbnN0cnVjdG9yPEpTVGVzdE5hbWVkQ29u
c3RydWN0b3I+OwotCi10ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0TmFtZWRDb25zdHJ1Y3RvckNv
bnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9N
R2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCi17Ci0gICAgVU5VU0VEX1BBUkFNKHZtKTsKLSAg
ICByZXR1cm4gZ2xvYmFsT2JqZWN0LmZ1bmN0aW9uUHJvdG90eXBlKCk7Ci19Ci0KLXRlbXBsYXRl
PD4gdm9pZCBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9w
ZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKLXsKLSAgICBw
dXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0TmFtZWRDb25z
dHJ1Y3Rvcjo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7Ci0gICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0TmFtZWRDb25zdHJ1
Y3RvciJfcyksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0pOwotICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1l
cy0+bGVuZ3RoLCBqc051bWJlcigxKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkg
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7Ci19Ci0KLXRlbXBsYXRlPD4gY29u
c3QgQ2xhc3NJbmZvIEpTVGVzdE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1Y3Rvcjo6c19pbmZvID0g
eyAiVGVzdE5hbWVkQ29uc3RydWN0b3IiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRy
LCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1Y3Rvcikg
fTsKLQotdGVtcGxhdGU8PiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTVGVzdE5hbWVk
Q29uc3RydWN0b3JOYW1lZENvbnN0cnVjdG9yOjpjb25zdHJ1Y3QoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQotewotICAgIFZNJiB2bSA9
IGxleGljYWxHbG9iYWxPYmplY3QtPnZtKCk7Ci0gICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0byogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RO
YW1lZENvbnN0cnVjdG9yTmFtZWRDb25zdHJ1Y3Rvcio+KGNhbGxGcmFtZS0+anNDYWxsZWUoKSk7
Ci0gICAgQVNTRVJUKGNhc3RlZFRoaXMpOwotICAgIGlmIChVTkxJS0VMWShjYWxsRnJhbWUtPmFy
Z3VtZW50Q291bnQoKSA8IDEpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGxl
eGljYWxHbG9iYWxPYmplY3QpKTsKLSAgICBhdXRvKiBjb250ZXh0ID0gY2FzdGVkVGhpcy0+c2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgIGlmIChVTkxJS0VMWSghY29udGV4dCkpCi0gICAg
ICAgIHJldHVybiB0aHJvd0NvbnN0cnVjdG9yU2NyaXB0RXhlY3V0aW9uQ29udGV4dFVuYXZhaWxh
YmxlRXJyb3IoKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsICJUZXN0TmFtZWRDb25z
dHJ1Y3RvciIpOwotICAgIEFTU0VSVChjb250ZXh0LT5pc0RvY3VtZW50KCkpOwotICAgIGF1dG8m
IGRvY3VtZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KCpjb250ZXh0KTsKLSAgICBFbnN1cmVTdGls
bEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsK
LSAgICBhdXRvIHN0cjEgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIGFyZ3VtZW50MC52YWx1ZSgpKTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVu
dDEgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpOwotICAgIGF1dG8gc3RyMiA9IGFyZ3VtZW50MS52
YWx1ZSgpLmlzVW5kZWZpbmVkKCkgPyAiZGVmYXVsdFN0cmluZyJfcyA6IGNvbnZlcnQ8SURMRE9N
U3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQxLnZhbHVlKCkpOwotICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgRW5z
dXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MiA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMik7Ci0g
ICAgYXV0byBzdHIzID0gYXJndW1lbnQyLnZhbHVlKCkuaXNVbmRlZmluZWQoKSA/IFN0cmluZygp
IDogY29udmVydDxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDIu
dmFsdWUoKSk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKLSAgICBhdXRvIG9iamVjdCA9IFRlc3ROYW1lZENvbnN0cnVjdG9yOjpjcmVhdGVG
b3JKU0NvbnN0cnVjdG9yKGRvY3VtZW50LCBXVEZNb3ZlKHN0cjEpLCBXVEZNb3ZlKHN0cjIpLCBX
VEZNb3ZlKHN0cjMpKTsKLSAgICBzdGF0aWNfYXNzZXJ0KElzRXhjZXB0aW9uT3I8ZGVjbHR5cGUo
b2JqZWN0KT46OnZhbHVlKTsKLSAgICBzdGF0aWNfYXNzZXJ0KGRlY2x0eXBlKG9iamVjdCk6OlJl
dHVyblR5cGU6OmlzUmVmKTsKLSAgICBhdXRvIGpzVmFsdWUgPSB0b0pTTmV3bHlDcmVhdGVkPElE
TEludGVyZmFjZTxUZXN0TmFtZWRDb25zdHJ1Y3Rvcj4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAq
Y2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIHRocm93U2NvcGUsIFdURk1vdmUob2JqZWN0KSk7
Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwotICAgIHNldFN1YmNs
YXNzU3RydWN0dXJlSWZOZWVkZWQ8VGVzdE5hbWVkQ29uc3RydWN0b3I+KGxleGljYWxHbG9iYWxP
YmplY3QsIGNhbGxGcmFtZSwgYXNPYmplY3QoanNWYWx1ZSkpOwotICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgeyB9KTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVmFs
dWUpOwotfQotCi10ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvck5hbWVk
Q29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNE
T01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKLXsKLSAgICBVTlVTRURfUEFSQU0odm0pOwot
ICAgIHJldHVybiBnbG9iYWxPYmplY3QuZnVuY3Rpb25Qcm90b3R5cGUoKTsKLX0KLQotdGVtcGxh
dGU8PiB2b2lkIEpTVGVzdE5hbWVkQ29uc3RydWN0b3JOYW1lZENvbnN0cnVjdG9yOjppbml0aWFs
aXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCi17
Ci0gICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdE5h
bWVkQ29uc3RydWN0b3I6OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwotICAgIHB1dERpcmVjdCh2bSwg
dm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250cml2aWFsU3RyaW5nKHZtLCAiQXVkaW8iX3Mp
LCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKTsKLSAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0
aCwganNOdW1iZXIoMSksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwotfQotCi10ZW1wbGF0ZTw+IGNvbnN0IENsYXNz
SW5mbyBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yTmFtZWRDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAi
QXVkaW8iLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RB
QkxFKEpTVGVzdE5hbWVkQ29uc3RydWN0b3JOYW1lZENvbnN0cnVjdG9yKSB9OwotCi0vKiBIYXNo
IHRhYmxlIGZvciBwcm90b3R5cGUgKi8KLQotc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpT
VGVzdE5hbWVkQ29uc3RydWN0b3JQcm90b3R5cGVUYWJsZVZhbHVlc1tdID0KLXsKLSAgICB7ICJj
b25zdHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0
eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0TmFtZWRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yKSwg
KGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0
SlNUZXN0TmFtZWRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yKSB9IH0sCi19OwotCi1jb25zdCBDbGFz
c0luZm8gSlNUZXN0TmFtZWRDb25zdHJ1Y3RvclByb3RvdHlwZTo6c19pbmZvID0geyAiVGVzdE5h
bWVkQ29uc3RydWN0b3IiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVf
TUVUSE9EX1RBQkxFKEpTVGVzdE5hbWVkQ29uc3RydWN0b3JQcm90b3R5cGUpIH07Ci0KLXZvaWQg
SlNUZXN0TmFtZWRDb25zdHJ1Y3RvclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQot
ewotICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKLSAgICByZWlmeVN0YXRpY1Byb3BlcnRp
ZXModm0sIEpTVGVzdE5hbWVkQ29uc3RydWN0b3I6OmluZm8oKSwgSlNUZXN0TmFtZWRDb25zdHJ1
Y3RvclByb3RvdHlwZVRhYmxlVmFsdWVzLCAqdGhpcyk7Ci0gICAgSlNDX1RPX1NUUklOR19UQUdf
V0lUSE9VVF9UUkFOU0lUSU9OKCk7Ci19Ci0KLWNvbnN0IENsYXNzSW5mbyBKU1Rlc3ROYW1lZENv
bnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0TmFtZWRDb25zdHJ1Y3RvciIsICZCYXNlOjpzX2lu
Zm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0TmFtZWRDb25z
dHJ1Y3RvcikgfTsKLQotSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6SlNUZXN0TmFtZWRDb25zdHJ1
Y3RvcihTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVj
dCwgUmVmPFRlc3ROYW1lZENvbnN0cnVjdG9yPiYmIGltcGwpCi0gICAgOiBKU0RPTVdyYXBwZXI8
VGVzdE5hbWVkQ29uc3RydWN0b3I+KHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGlt
cGwpKQotewotfQotCi12b2lkIEpTVGVzdE5hbWVkQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9u
KFZNJiB2bSkKLXsKLSAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7Ci0gICAgQVNTRVJUKGlu
aGVyaXRzKHZtLCBpbmZvKCkpKTsKLQotICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29m
PEFjdGl2ZURPTU9iamVjdCwgVGVzdE5hbWVkQ29uc3RydWN0b3I+Ojp2YWx1ZSwgIkludGVyZmFj
ZSBpcyBtYXJrZWQgYXMgW0FjdGl2ZURPTU9iamVjdF0gYnV0IGltcGxlbWVudGF0aW9uIGNsYXNz
IGRvZXMgbm90IHN1YmNsYXNzIEFjdGl2ZURPTU9iamVjdC4iKTsKLQotfQotCi1KU09iamVjdCog
SlNUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6Y3JlYXRlUHJvdG90eXBlKFZNJiB2bSwgSlNET01HbG9i
YWxPYmplY3QmIGdsb2JhbE9iamVjdCkKLXsKLSAgICByZXR1cm4gSlNUZXN0TmFtZWRDb25zdHJ1
Y3RvclByb3RvdHlwZTo6Y3JlYXRlKHZtLCAmZ2xvYmFsT2JqZWN0LCBKU1Rlc3ROYW1lZENvbnN0
cnVjdG9yUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sICZnbG9iYWxPYmplY3QsIGdsb2Jh
bE9iamVjdC5vYmplY3RQcm90b3R5cGUoKSkpOwotfQotCi1KU09iamVjdCogSlNUZXN0TmFtZWRD
b25zdHJ1Y3Rvcjo6cHJvdG90eXBlKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9i
amVjdCkKLXsKLSAgICByZXR1cm4gZ2V0RE9NUHJvdG90eXBlPEpTVGVzdE5hbWVkQ29uc3RydWN0
b3I+KHZtLCBnbG9iYWxPYmplY3QpOwotfQotCi1KU1ZhbHVlIEpTVGVzdE5hbWVkQ29uc3RydWN0
b3I6OmdldENvbnN0cnVjdG9yKFZNJiB2bSwgY29uc3QgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCkKLXsKLSAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0TmFtZWRDb25zdHJ1
Y3RvckNvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGds
b2JhbE9iamVjdCkpOwotfQotCi1KU1ZhbHVlIEpTVGVzdE5hbWVkQ29uc3RydWN0b3I6OmdldE5h
bWVkQ29uc3RydWN0b3IoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQotewot
ICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3ROYW1lZENvbnN0cnVjdG9yTmFtZWRD
b25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3Qp
KTsKLX0KLQotdm9pZCBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yOjpkZXN0cm95KEpTQzo6SlNDZWxs
KiBjZWxsKQotewotICAgIEpTVGVzdE5hbWVkQ29uc3RydWN0b3IqIHRoaXNPYmplY3QgPSBzdGF0
aWNfY2FzdDxKU1Rlc3ROYW1lZENvbnN0cnVjdG9yKj4oY2VsbCk7Ci0gICAgdGhpc09iamVjdC0+
SlNUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6fkpTVGVzdE5hbWVkQ29uc3RydWN0b3IoKTsKLX0KLQot
RW5jb2RlZEpTVmFsdWUganNUZXN0TmFtZWRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkKLXsKLSAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmpl
Y3QpOwotICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAg
IGF1dG8qIHByb3RvdHlwZSA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0TmFtZWRDb25zdHJ1Y3RvclBy
b3RvdHlwZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElL
RUxZKCFwcm90b3R5cGUpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpT
VGVzdE5hbWVkQ29uc3RydWN0b3I6OmdldENvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0obGV4aWNhbEds
b2JhbE9iamVjdCksIHByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCkpKTsKLX0KLQotYm9vbCBzZXRK
U1Rlc3ROYW1lZENvbnN0cnVjdG9yQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlKQotewotICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVj
dCk7Ci0gICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAg
YXV0byogcHJvdG90eXBlID0ganNEeW5hbWljQ2FzdDxKU1Rlc3ROYW1lZENvbnN0cnVjdG9yUHJv
dG90eXBlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtF
TFkoIXByb3RvdHlwZSkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aHJvd1Njb3BlKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICAv
LyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgotICAgIHJldHVybiBwcm90b3R5cGUt
PnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIEpTVmFsdWU6OmRl
Y29kZShlbmNvZGVkVmFsdWUpKTsKLX0KLQotSlNDOjpJc29TdWJzcGFjZSogSlNUZXN0TmFtZWRD
b25zdHJ1Y3Rvcjo6c3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKQotewotICAgIGF1dG8mIGNs
aWVudERhdGEgPSAqc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTsK
LSAgICBhdXRvJiBzcGFjZXMgPSBjbGllbnREYXRhLnN1YnNwYWNlcygpOwotICAgIGlmIChhdXRv
KiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkQ29uc3RydWN0b3IuZ2V0KCkp
Ci0gICAgICAgIHJldHVybiBzcGFjZTsKLSAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9v
Zl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE5hbWVkQ29uc3RydWN0b3I+IHx8
ICFKU1Rlc3ROYW1lZENvbnN0cnVjdG9yOjpuZWVkc0Rlc3RydWN0aW9uKTsKLSAgICBpZiBjb25z
dGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVz
dE5hbWVkQ29uc3RydWN0b3I+KQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1l
ZENvbnN0cnVjdG9yID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RO
YW1lZENvbnN0cnVjdG9yKTsKLSAgICBlbHNlCi0gICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9y
VGVzdE5hbWVkQ29uc3RydWN0b3IgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BB
Q0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3ROYW1lZENv
bnN0cnVjdG9yKTsKLSAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdE5h
bWVkQ29uc3RydWN0b3IuZ2V0KCk7Ci1JR05PUkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxl
LWNvZGUiKQotSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCi0g
ICAgaWYgKCZKU1Rlc3ROYW1lZENvbnN0cnVjdG9yOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzICE9
ICZKU0M6OkpTQ2VsbDo6dmlzaXRPdXRwdXRDb25zdHJhaW50cykKLSAgICAgICAgY2xpZW50RGF0
YS5vdXRwdXRDb25zdHJhaW50U3BhY2VzKCkuYXBwZW5kKHNwYWNlKTsKLUlHTk9SRV9XQVJOSU5H
U19FTkQKLUlHTk9SRV9XQVJOSU5HU19FTkQKLSAgICByZXR1cm4gc3BhY2U7Ci19Ci0KLXZvaWQg
SlNUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6YW5hbHl6ZUhlYXAoSlNDZWxsKiBjZWxsLCBIZWFwQW5h
bHl6ZXImIGFuYWx5emVyKQotewotICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0
TmFtZWRDb25zdHJ1Y3Rvcio+KGNlbGwpOwotICAgIGFuYWx5emVyLnNldFdyYXBwZWRPYmplY3RG
b3JDZWxsKGNlbGwsICZ0aGlzT2JqZWN0LT53cmFwcGVkKCkpOwotICAgIGlmICh0aGlzT2JqZWN0
LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCi0gICAgICAgIGFuYWx5emVyLnNldExhYmVsRm9y
Q2VsbChjZWxsLCAidXJsICIgKyB0aGlzT2JqZWN0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkt
PnVybCgpLnN0cmluZygpKTsKLSAgICBCYXNlOjphbmFseXplSGVhcChjZWxsLCBhbmFseXplcik7
Ci19Ci0KLWJvb2wgSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvck93bmVyOjppc1JlYWNoYWJsZUZyb21P
cGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCosIFNsb3RW
aXNpdG9yJiB2aXNpdG9yLCBjb25zdCBjaGFyKiogcmVhc29uKQotewotICAgIGF1dG8qIGpzVGVz
dE5hbWVkQ29uc3RydWN0b3IgPSBqc0Nhc3Q8SlNUZXN0TmFtZWRDb25zdHJ1Y3Rvcio+KGhhbmRs
ZS5zbG90KCktPmFzQ2VsbCgpKTsKLSAgICBhdXRvJiB3cmFwcGVkID0ganNUZXN0TmFtZWRDb25z
dHJ1Y3Rvci0+d3JhcHBlZCgpOwotICAgIGlmICghd3JhcHBlZC5pc0NvbnRleHRTdG9wcGVkKCkg
JiYgd3JhcHBlZC5oYXNQZW5kaW5nQWN0aXZpdHkoKSkgewotICAgICAgICBpZiAoVU5MSUtFTFko
cmVhc29uKSkKLSAgICAgICAgICAgICpyZWFzb24gPSAiQWN0aXZlRE9NT2JqZWN0IHdpdGggcGVu
ZGluZyBhY3Rpdml0eSI7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgICB9Ci0gICAgVU5VU0VE
X1BBUkFNKHZpc2l0b3IpOwotICAgIFVOVVNFRF9QQVJBTShyZWFzb24pOwotICAgIHJldHVybiBm
YWxzZTsKLX0KLQotdm9pZCBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yT3duZXI6OmZpbmFsaXplKEpT
Qzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiBjb250ZXh0KQotewotICAgIGF1
dG8qIGpzVGVzdE5hbWVkQ29uc3RydWN0b3IgPSBzdGF0aWNfY2FzdDxKU1Rlc3ROYW1lZENvbnN0
cnVjdG9yKj4oaGFuZGxlLnNsb3QoKS0+YXNDZWxsKCkpOwotICAgIGF1dG8mIHdvcmxkID0gKnN0
YXRpY19jYXN0PERPTVdyYXBwZXJXb3JsZCo+KGNvbnRleHQpOwotICAgIHVuY2FjaGVXcmFwcGVy
KHdvcmxkLCAmanNUZXN0TmFtZWRDb25zdHJ1Y3Rvci0+d3JhcHBlZCgpLCBqc1Rlc3ROYW1lZENv
bnN0cnVjdG9yKTsKLX0KLQotI2lmIEVOQUJMRShCSU5ESU5HX0lOVEVHUklUWSkKLSNpZiBQTEFU
Rk9STShXSU4pCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDQ4MykKLWV4dGVybiAiQyIgeyBl
eHRlcm4gdm9pZCAoKmNvbnN0IF9faWRlbnRpZmllcigiPz9fN1Rlc3ROYW1lZENvbnN0cnVjdG9y
QFdlYkNvcmVAQDZCQCIpW10pKCk7IH0KLSNlbHNlCi1leHRlcm4gIkMiIHsgZXh0ZXJuIHZvaWQq
IF9aVFZON1dlYkNvcmUyMFRlc3ROYW1lZENvbnN0cnVjdG9yRVtdOyB9Ci0jZW5kaWYKLSNlbmRp
ZgotCi1KU0M6OkpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChKU0M6OkpTR2xvYmFsT2JqZWN0Kiwg
SlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3ROYW1lZENvbnN0cnVjdG9y
PiYmIGltcGwpCi17Ci0KLSNpZiBFTkFCTEUoQklORElOR19JTlRFR1JJVFkpCi0gICAgY29uc3Qg
dm9pZCogYWN0dWFsVlRhYmxlUG9pbnRlciA9IGdldFZUYWJsZVBvaW50ZXIoaW1wbC5wdHIoKSk7
Ci0jaWYgUExBVEZPUk0oV0lOKQotICAgIHZvaWQqIGV4cGVjdGVkVlRhYmxlUG9pbnRlciA9IF9f
aWRlbnRpZmllcigiPz9fN1Rlc3ROYW1lZENvbnN0cnVjdG9yQFdlYkNvcmVAQDZCQCIpOwotI2Vs
c2UKLSAgICB2b2lkKiBleHBlY3RlZFZUYWJsZVBvaW50ZXIgPSAmX1pUVk43V2ViQ29yZTIwVGVz
dE5hbWVkQ29uc3RydWN0b3JFWzJdOwotI2VuZGlmCi0KLSAgICAvLyBJZiB0aGlzIGZhaWxzIFRl
c3ROYW1lZENvbnN0cnVjdG9yIGRvZXMgbm90IGhhdmUgYSB2dGFibGUsIHNvIHlvdSBuZWVkIHRv
IGFkZCB0aGUKLSAgICAvLyBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlIGF0dHJpYnV0ZSB0byB0
aGUgaW50ZXJmYWNlIGRlZmluaXRpb24KLSAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfcG9seW1v
cnBoaWM8VGVzdE5hbWVkQ29uc3RydWN0b3I+Ojp2YWx1ZSwgIlRlc3ROYW1lZENvbnN0cnVjdG9y
IGlzIG5vdCBwb2x5bW9ycGhpYyIpOwotCi0gICAgLy8gSWYgeW91IGhpdCB0aGlzIGFzc2VydGlv
biB5b3UgZWl0aGVyIGhhdmUgYSB1c2UgYWZ0ZXIgZnJlZSBidWcsIG9yCi0gICAgLy8gVGVzdE5h
bWVkQ29uc3RydWN0b3IgaGFzIHN1YmNsYXNzZXMuIElmIFRlc3ROYW1lZENvbnN0cnVjdG9yIGhh
cyBzdWJjbGFzc2VzIHRoYXQgZ2V0IHBhc3NlZAotICAgIC8vIHRvIHRvSlMoKSB3ZSBjdXJyZW50
bHkgcmVxdWlyZSBUZXN0TmFtZWRDb25zdHJ1Y3RvciB5b3UgdG8gb3B0IG91dCBvZiBiaW5kaW5n
IGhhcmRlbmluZwotICAgIC8vIGJ5IGFkZGluZyB0aGUgU2tpcFZUYWJsZVZhbGlkYXRpb24gYXR0
cmlidXRlIHRvIHRoZSBpbnRlcmZhY2UgSURMIGRlZmluaXRpb24KLSAgICBSRUxFQVNFX0FTU0VS
VChhY3R1YWxWVGFibGVQb2ludGVyID09IGV4cGVjdGVkVlRhYmxlUG9pbnRlcik7Ci0jZW5kaWYK
LSAgICByZXR1cm4gY3JlYXRlV3JhcHBlcjxUZXN0TmFtZWRDb25zdHJ1Y3Rvcj4oZ2xvYmFsT2Jq
ZWN0LCBXVEZNb3ZlKGltcGwpKTsKLX0KLQotSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgVGVzdE5hbWVkQ29uc3RydWN0b3ImIGltcGwpCi17Ci0gICAgcmV0dXJuIHdyYXAobGV4
aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LCBpbXBsKTsKLX0KLQotVGVzdE5hbWVkQ29u
c3RydWN0b3IqIEpTVGVzdE5hbWVkQ29uc3RydWN0b3I6OnRvV3JhcHBlZChKU0M6OlZNJiB2bSwg
SlNDOjpKU1ZhbHVlIHZhbHVlKQotewotICAgIGlmIChhdXRvKiB3cmFwcGVyID0ganNEeW5hbWlj
Q2FzdDxKU1Rlc3ROYW1lZENvbnN0cnVjdG9yKj4odm0sIHZhbHVlKSkKLSAgICAgICAgcmV0dXJu
ICZ3cmFwcGVyLT53cmFwcGVkKCk7Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KLX0KClByb3Bl
cnR5IGNoYW5nZXMgb246IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZENvbnN0cnVjdG9yLmNwcApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjplb2wtc3R5
bGUKIyMgLTEgKzAsMCAjIwotTEYKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQ29u
c3RydWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5oCShyZXZpc2lvbiAyNjY2MTYpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1
Y3Rvci5oCShub25leGlzdGVudCkKQEAgLTEsOTQgKzAsMCBAQAotLyoKLSAgICBUaGlzIGZpbGUg
aXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCi0gICAgVGhpcyBmaWxl
IGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElG
WSEKLQotICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKLSAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICAgIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLQotICAgIFRoaXMg
bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAotICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCi0gICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLQotICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh
IGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAgICBhbG9u
ZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3
cml0ZSB0bwotICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5r
bGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0Eu
Ci0qLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIkpTRE9NV3JhcHBlci5oIgotI2luY2x1
ZGUgIlRlc3ROYW1lZENvbnN0cnVjdG9yLmgiCi0jaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVk
Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgSlNUZXN0TmFtZWRDb25zdHJ1Y3Rv
ciA6IHB1YmxpYyBKU0RPTVdyYXBwZXI8VGVzdE5hbWVkQ29uc3RydWN0b3I+IHsKLXB1YmxpYzoK
LSAgICB1c2luZyBCYXNlID0gSlNET01XcmFwcGVyPFRlc3ROYW1lZENvbnN0cnVjdG9yPjsKLSAg
ICBzdGF0aWMgSlNUZXN0TmFtZWRDb25zdHJ1Y3RvciogY3JlYXRlKEpTQzo6U3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0TmFtZWRD
b25zdHJ1Y3Rvcj4mJiBpbXBsKQotICAgIHsKLSAgICAgICAgSlNUZXN0TmFtZWRDb25zdHJ1Y3Rv
ciogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3ROYW1lZENvbnN0
cnVjdG9yPihnbG9iYWxPYmplY3QtPnZtKCkuaGVhcCkpIEpTVGVzdE5hbWVkQ29uc3RydWN0b3Io
c3RydWN0dXJlLCAqZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKLSAgICAgICAgcHRyLT5m
aW5pc2hDcmVhdGlvbihnbG9iYWxPYmplY3QtPnZtKCkpOwotICAgICAgICByZXR1cm4gcHRyOwot
ICAgIH0KLQotICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBjcmVhdGVQcm90b3R5cGUoSlNDOjpW
TSYsIEpTRE9NR2xvYmFsT2JqZWN0Jik7Ci0gICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIHByb3Rv
dHlwZShKU0M6OlZNJiwgSlNET01HbG9iYWxPYmplY3QmKTsKLSAgICBzdGF0aWMgVGVzdE5hbWVk
Q29uc3RydWN0b3IqIHRvV3JhcHBlZChKU0M6OlZNJiwgSlNDOjpKU1ZhbHVlKTsKLSAgICBzdGF0
aWMgdm9pZCBkZXN0cm95KEpTQzo6SlNDZWxsKik7Ci0KLSAgICBERUNMQVJFX0lORk87Ci0KLSAg
ICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlND
OjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQot
ICAgIHsKLSAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9i
amVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJl
RmxhZ3MpLCBpbmZvKCksIEpTQzo6Tm9uQXJyYXkpOwotICAgIH0KLQotICAgIHN0YXRpYyBKU0M6
OkpTVmFsdWUgZ2V0Q29uc3RydWN0b3IoSlNDOjpWTSYsIGNvbnN0IEpTQzo6SlNHbG9iYWxPYmpl
Y3QqKTsKLSAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldE5hbWVkQ29uc3RydWN0b3IoSlNDOjpW
TSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSwgSlNDOjpT
dWJzcGFjZUFjY2VzcyBtb2RlPiBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3Io
SlNDOjpWTSYgdm0pCi0gICAgewotICAgICAgICBpZiBjb25zdGV4cHIgKG1vZGUgPT0gSlNDOjpT
dWJzcGFjZUFjY2Vzczo6Q29uY3VycmVudGx5KQotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0gICAgICAgIHJldHVybiBzdWJzcGFjZUZvckltcGwodm0pOwotICAgIH0KLSAgICBzdGF0aWMg
SlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKTsKLSAgICBzdGF0
aWMgdm9pZCBhbmFseXplSGVhcChKU0NlbGwqLCBKU0M6OkhlYXBBbmFseXplciYpOwotcHJvdGVj
dGVkOgotICAgIEpTVGVzdE5hbWVkQ29uc3RydWN0b3IoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUds
b2JhbE9iamVjdCYsIFJlZjxUZXN0TmFtZWRDb25zdHJ1Y3Rvcj4mJik7Ci0KLSAgICB2b2lkIGZp
bmlzaENyZWF0aW9uKEpTQzo6Vk0mKTsKLX07Ci0KLWNsYXNzIEpTVGVzdE5hbWVkQ29uc3RydWN0
b3JPd25lciA6IHB1YmxpYyBKU0M6OldlYWtIYW5kbGVPd25lciB7Ci1wdWJsaWM6Ci0gICAgdmly
dHVhbCBib29sIGlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5r
bm93bj4sIHZvaWQqIGNvbnRleHQsIEpTQzo6U2xvdFZpc2l0b3ImLCBjb25zdCBjaGFyKiopOwot
ICAgIHZpcnR1YWwgdm9pZCBmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+LCB2b2lk
KiBjb250ZXh0KTsKLX07Ci0KLWlubGluZSBKU0M6OldlYWtIYW5kbGVPd25lciogd3JhcHBlck93
bmVyKERPTVdyYXBwZXJXb3JsZCYsIFRlc3ROYW1lZENvbnN0cnVjdG9yKikKLXsKLSAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8SlNUZXN0TmFtZWRDb25zdHJ1Y3Rvck93bmVyPiBvd25lcjsKLSAg
ICByZXR1cm4gJm93bmVyLmdldCgpOwotfQotCi1pbmxpbmUgdm9pZCogd3JhcHBlcktleShUZXN0
TmFtZWRDb25zdHJ1Y3Rvciogd3JhcHBhYmxlT2JqZWN0KQotewotICAgIHJldHVybiB3cmFwcGFi
bGVPYmplY3Q7Ci19Ci0KLUpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBK
U0RPTUdsb2JhbE9iamVjdCosIFRlc3ROYW1lZENvbnN0cnVjdG9yJik7Ci1pbmxpbmUgSlNDOjpK
U1ZhbHVlIHRvSlMoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNE
T01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdE5hbWVkQ29uc3RydWN0b3IqIGltcGwp
IHsgcmV0dXJuIGltcGwgPyB0b0pTKGxleGljYWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwg
KmltcGwpIDogSlNDOjpqc051bGwoKTsgfQotSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQo
SlNDOjpKU0dsb2JhbE9iamVjdCosIEpTRE9NR2xvYmFsT2JqZWN0KiwgUmVmPFRlc3ROYW1lZENv
bnN0cnVjdG9yPiYmKTsKLWlubGluZSBKU0M6OkpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChKU0M6
OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0RPTUdsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBSZWZQdHI8VGVzdE5hbWVkQ29uc3RydWN0b3I+JiYgaW1wbCkgeyByZXR1
cm4gaW1wbCA/IHRvSlNOZXdseUNyZWF0ZWQobGV4aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFsT2Jq
ZWN0LCBpbXBsLnJlbGVhc2VOb25OdWxsKCkpIDogSlNDOjpqc051bGwoKTsgfQotCi10ZW1wbGF0
ZTw+IHN0cnVjdCBKU0RPTVdyYXBwZXJDb252ZXJ0ZXJUcmFpdHM8VGVzdE5hbWVkQ29uc3RydWN0
b3I+IHsKLSAgICB1c2luZyBXcmFwcGVyQ2xhc3MgPSBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yOwot
ICAgIHVzaW5nIFRvV3JhcHBlZFJldHVyblR5cGUgPSBUZXN0TmFtZWRDb25zdHJ1Y3Rvcio7Ci19
OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5o
Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX18KRGVsZXRlZDogc3ZuOmVvbC1zdHlsZQojIyAtMSArMCwwICMjCi1MRgpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwCShyZXZpc2lvbiAyNjY2MTYpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSwzNzkgQEAKIC8qCi0gICAgVGhpcyBmaWxl
IGlzIGdlbmVyYXRlZCBqdXN0IHRvIHRlbGwgYnVpbGQgc2NyaXB0cyB0aGF0IEpTVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnMuaCBhbmQKLSAgICBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
LmNwcCBhcmUgY3JlYXRlZCBmb3IgVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuaWRsLCBhbmQg
dGh1cwotICAgIHByZXZlbnQgdGhlIGJ1aWxkIHNjcmlwdHMgZnJvbSB0cnlpbmcgdG8gZ2VuZXJh
dGUgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5oIGFuZAotICAgIEpTVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnMuY3BwIGF0IGV2ZXJ5IGJ1aWxkLiBUaGlzIGZpbGUgbXVzdCBub3QgYmUg
dHJpZWQgdG8gY29tcGlsZS4KKyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9w
ZW4gc291cmNlIHByb2plY3QuCisgICAgVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBn
ZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKKworICAgIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwor
ICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBX
QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hB
TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH
TlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K
KworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2Vl
IHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
CisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCiAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5oIgorCisjaW5jbHVk
ZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiRE9NSXNvU3Vic3BhY2VzLmgiCisjaW5j
bHVkZSAiSlNCbG9iLmgiCisjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCisjaW5jbHVkZSAiSlNE
T01Db25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgIkpTRE9NQ29udmVydEJ1ZmZlclNvdXJjZS5oIgor
I2luY2x1ZGUgIkpTRE9NQ29udmVydEludGVyZmFjZS5oIgorI2luY2x1ZGUgIkpTRE9NQ29udmVy
dE51bWJlcnMuaCIKKyNpbmNsdWRlICJKU0RPTUNvbnZlcnRTdHJpbmdzLmgiCisjaW5jbHVkZSAi
SlNET01Db252ZXJ0VmFyaWFkaWMuaCIKKyNpbmNsdWRlICJKU0RPTUV4Y2VwdGlvbkhhbmRsaW5n
LmgiCisjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVj
dXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgorI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+CisjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvSGVhcEFuYWx5emVyLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5s
aW5lcy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVh
cENlbGxUeXBlLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Vic3BhY2VJbmxpbmVzLmg+
CisjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgorI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFyYXRp
b25zLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgorCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK3Vz
aW5nIG5hbWVzcGFjZSBKU0M7CisKKy8vIEF0dHJpYnV0ZXMKKworSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9i
amVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKK2Jvb2wgc2V0
SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmpl
Y3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKKworY2xhc3Mg
SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1Byb3RvdHlwZSBmaW5hbCA6IHB1YmxpYyBKU0M6
OkpTTm9uRmluYWxPYmplY3QgeworcHVibGljOgorICAgIHVzaW5nIEJhc2UgPSBKU0M6OkpTTm9u
RmluYWxPYmplY3Q7CisgICAgc3RhdGljIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcm90
b3R5cGUqIGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICB7CisgICAgICAgIEpTVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnNQcm90b3R5cGUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxv
Y2F0ZUNlbGw8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1Byb3RvdHlwZT4odm0uaGVhcCkp
IEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCwg
c3RydWN0dXJlKTsKKyAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgICAgIHJl
dHVybiBwdHI7CisgICAgfQorCisgICAgREVDTEFSRV9JTkZPOworICAgIHRlbXBsYXRlPHR5cGVu
YW1lIENlbGxUeXBlLCBKU0M6OlN1YnNwYWNlQWNjZXNzPgorICAgIHN0YXRpYyBKU0M6Oklzb1N1
YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKKyAgICB7CisgICAgICAgIFNUQVRJQ19B
U1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQ
cm90b3R5cGUsIEJhc2UpOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7Cisg
ICAgfQorICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0m
IHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90
b3R5cGUpCisgICAgeworICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwg
Z2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBT
dHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCitwcml2YXRlOgorICAgIEpTVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcm90b3R5cGUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxP
YmplY3QqLCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgICAgICA6IEpTQzo6SlNOb25G
aW5hbE9iamVjdCh2bSwgc3RydWN0dXJlKQorICAgIHsKKyAgICB9CisKKyAgICB2b2lkIGZpbmlz
aENyZWF0aW9uKEpTQzo6Vk0mKTsKK307CitTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFS
QUJMRShKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJvdG90eXBlLCBKU1Rlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzUHJvdG90eXBlOjpCYXNlKTsKKwordXNpbmcgSlNUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3RvcjxKU1Rlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzPjsKKworc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBjb25zdHJ1
Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzMShKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit7CisgICAgVk0mIHZtID0gbGV4aWNh
bEdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKyAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rvcio+KGNhbGxGcmFtZS0+anNDYWxsZWUoKSk7CisgICAg
QVNTRVJUKGNhc3RlZFRoaXMpOworICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAg
PSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOworICAgIGF1dG8gYXJyYXlCdWZmZXIg
PSBjb252ZXJ0PElETEFycmF5QnVmZmVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQw
LnZhbHVlKCksIFtdKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpT
Qzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1bWVudFR5cGVFcnJvcihsZXhpY2FsR2xv
YmFsT2JqZWN0LCBzY29wZSwgMCwgImFycmF5QnVmZmVyIiwgIlRlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzIiwgbnVsbHB0ciwgIkFycmF5QnVmZmVyIik7IH0pOworICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisgICAgYXV0byBvYmplY3QgPSBU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6Y3JlYXRlKCphcnJheUJ1ZmZlcik7CisgICAgc3Rh
dGljX2Fzc2VydChkZWNsdHlwZShvYmplY3QpOjppc1JlZik7CisgICAgYXV0byBqc1ZhbHVlID0g
dG9KU05ld2x5Q3JlYXRlZDxJRExJbnRlcmZhY2U8VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM+
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEZN
b3ZlKG9iamVjdCkpOworICAgIHNldFN1YmNsYXNzU3RydWN0dXJlSWZOZWVkZWQ8VGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnM+KGxleGljYWxHbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgYXNPYmpl
Y3QoanNWYWx1ZSkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsK
KyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVmFsdWUpOworfQorCitzdGF0aWMgaW5saW5l
IEVuY29kZWRKU1ZhbHVlIGNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMyKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkK
K3sKKyAgICBWTSYgdm0gPSBsZXhpY2FsR2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIGF1dG8qIGNhc3RlZFRoaXMg
PSBqc0Nhc3Q8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yKj4oY2FsbEZy
YW1lLT5qc0NhbGxlZSgpKTsKKyAgICBBU1NFUlQoY2FzdGVkVGhpcyk7CisgICAgRW5zdXJlU3Rp
bGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7
CisgICAgYXV0byBhcnJheUJ1ZmZlclZpZXcgPSBjb252ZXJ0PElETEFycmF5QnVmZmVyVmlldz4o
KmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpLCBbXShKU0M6OkpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRo
cm93QXJndW1lbnRUeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsIDAsICJhcnJh
eUJ1ZmZlclZpZXciLCAiVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMiLCBudWxscHRyLCAiQXJy
YXlCdWZmZXJWaWV3Iik7IH0pOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
ZW5jb2RlZEpTVmFsdWUoKSk7CisgICAgYXV0byBvYmplY3QgPSBUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9yczo6Y3JlYXRlKGFycmF5QnVmZmVyVmlldy5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICBz
dGF0aWNfYXNzZXJ0KGRlY2x0eXBlKG9iamVjdCk6OmlzUmVmKTsKKyAgICBhdXRvIGpzVmFsdWUg
PSB0b0pTTmV3bHlDcmVhdGVkPElETEludGVyZmFjZTxUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
cz4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdU
Rk1vdmUob2JqZWN0KSk7CisgICAgc2V0U3ViY2xhc3NTdHJ1Y3R1cmVJZk5lZWRlZDxUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9ycz4obGV4aWNhbEdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCBhc09i
amVjdChqc1ZhbHVlKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0p
OworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNWYWx1ZSk7Cit9CisKK3N0YXRpYyBpbmxp
bmUgRW5jb2RlZEpTVmFsdWUgY29uc3RydWN0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczMo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KQoreworICAgIFZNJiB2bSA9IGxleGljYWxHbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgYXV0byogY2FzdGVkVGhp
cyA9IGpzQ2FzdDxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3IqPihjYWxs
RnJhbWUtPmpzQ2FsbGVlKCkpOworICAgIEFTU0VSVChjYXN0ZWRUaGlzKTsKKyAgICBFbnN1cmVT
dGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgw
KTsKKyAgICBhdXRvIGJsb2IgPSBjb252ZXJ0PElETEludGVyZmFjZTxCbG9iPj4oKmxleGljYWxH
bG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpLCBbXShKU0M6OkpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1l
bnRUeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsIDAsICJibG9iIiwgIlRlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzIiwgbnVsbHB0ciwgIkJsb2IiKTsgfSk7CisgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKyAgICBhdXRvIG9i
amVjdCA9IFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpjcmVhdGUoKmJsb2IpOworICAgIHN0
YXRpY19hc3NlcnQoZGVjbHR5cGUob2JqZWN0KTo6aXNSZWYpOworICAgIGF1dG8ganNWYWx1ZSA9
IHRvSlNOZXdseUNyZWF0ZWQ8SURMSW50ZXJmYWNlPFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
Pj4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RG
TW92ZShvYmplY3QpKTsKKyAgICBzZXRTdWJjbGFzc1N0cnVjdHVyZUlmTmVlZGVkPFRlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzPihsZXhpY2FsR2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIGFzT2Jq
ZWN0KGpzVmFsdWUpKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7
CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1ZhbHVlKTsKK30KKworc3RhdGljIGlubGlu
ZSBFbmNvZGVkSlNWYWx1ZSBjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzNChK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
Cit7CisgICAgVk0mIHZtID0gbGV4aWNhbEdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBhdXRvKiBjYXN0ZWRUaGlz
ID0ganNDYXN0PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rvcio+KGNhbGxG
cmFtZS0+anNDYWxsZWUoKSk7CisgICAgQVNTRVJUKGNhc3RlZFRoaXMpOworICAgIEVuc3VyZVN0
aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDAp
OworICAgIGF1dG8gc3RyaW5nID0gY29udmVydDxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKyAgICBhdXRvIG9iamVjdCA9IFRlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzOjpjcmVhdGUoV1RGTW92ZShzdHJpbmcpKTsKKyAgICBzdGF0aWNfYXNz
ZXJ0KGRlY2x0eXBlKG9iamVjdCk6OmlzUmVmKTsKKyAgICBhdXRvIGpzVmFsdWUgPSB0b0pTTmV3
bHlDcmVhdGVkPElETEludGVyZmFjZTxUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycz4+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURk1vdmUob2Jq
ZWN0KSk7CisgICAgc2V0U3ViY2xhc3NTdHJ1Y3R1cmVJZk5lZWRlZDxUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9ycz4obGV4aWNhbEdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCBhc09iamVjdChqc1Zh
bHVlKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOworICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNWYWx1ZSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgRW5jb2Rl
ZEpTVmFsdWUgY29uc3RydWN0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczUoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAg
IFZNJiB2bSA9IGxleGljYWxHbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzQ2Fz
dDxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3IqPihjYWxsRnJhbWUtPmpz
Q2FsbGVlKCkpOworICAgIEFTU0VSVChjYXN0ZWRUaGlzKTsKKyAgICBhdXRvIGxvbmdBcmdzID0g
Y29udmVydFZhcmlhZGljQXJndW1lbnRzPElETExvbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAq
Y2FsbEZyYW1lLCAwKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29k
ZWRKU1ZhbHVlKCkpOworICAgIGF1dG8gb2JqZWN0ID0gVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnM6OmNyZWF0ZShXVEZNb3ZlKGxvbmdBcmdzKSk7CisgICAgc3RhdGljX2Fzc2VydChkZWNsdHlw
ZShvYmplY3QpOjppc1JlZik7CisgICAgYXV0byBqc1ZhbHVlID0gdG9KU05ld2x5Q3JlYXRlZDxJ
RExJbnRlcmZhY2U8VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM+PigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEZNb3ZlKG9iamVjdCkpOworICAg
IHNldFN1YmNsYXNzU3RydWN0dXJlSWZOZWVkZWQ8VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM+
KGxleGljYWxHbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgYXNPYmplY3QoanNWYWx1ZSkpOworICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKKyAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVmFsdWUpOworfQorCit0ZW1wbGF0ZTw+IEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yOjpjb25zdHJ1
Y3QoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKQoreworICAgIFZNJiB2bSA9IGxleGljYWxHbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFN
KHRocm93U2NvcGUpOworICAgIHNpemVfdCBhcmdzQ291bnQgPSBzdGQ6Om1pbjxzaXplX3Q+KDEs
IGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpKTsKKyAgICBpZiAoYXJnc0NvdW50ID09IDApIHsK
KyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIChjb25zdHJ1Y3RKU1Rlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzNShsZXhpY2FsR2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUpKSk7
CisgICAgfQorICAgIGlmIChhcmdzQ291bnQgPT0gMSkgeworICAgICAgICBKU1ZhbHVlIGRpc3Rp
bmd1aXNoaW5nQXJnID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKKyAgICAgICAg
aWYgKGRpc3Rpbmd1aXNoaW5nQXJnLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QoZGlzdGluZ3Vpc2hp
bmdBcmcpLT5pbmhlcml0czxKU0FycmF5QnVmZmVyPih2bSkpCisgICAgICAgICAgICBSRUxFQVNF
X0FORF9SRVRVUk4odGhyb3dTY29wZSwgKGNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnMxKGxleGljYWxHbG9iYWxPYmplY3QsIGNhbGxGcmFtZSkpKTsKKyAgICAgICAgaWYgKGRp
c3Rpbmd1aXNoaW5nQXJnLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QoZGlzdGluZ3Vpc2hpbmdBcmcp
LT5pbmhlcml0czxKU0FycmF5QnVmZmVyVmlldz4odm0pKQorICAgICAgICAgICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHRocm93U2NvcGUsIChjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzMihsZXhpY2FsR2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUpKSk7CisgICAgICAgIGlmIChkaXN0
aW5ndWlzaGluZ0FyZy5pc09iamVjdCgpICYmIGFzT2JqZWN0KGRpc3Rpbmd1aXNoaW5nQXJnKS0+
aW5oZXJpdHM8SlNCbG9iPih2bSkpCisgICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhy
b3dTY29wZSwgKGNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMzKGxleGljYWxH
bG9iYWxPYmplY3QsIGNhbGxGcmFtZSkpKTsKKyAgICAgICAgaWYgKGRpc3Rpbmd1aXNoaW5nQXJn
LmlzTnVtYmVyKCkpCisgICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwg
KGNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM1KGxleGljYWxHbG9iYWxPYmpl
Y3QsIGNhbGxGcmFtZSkpKTsKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUs
IChjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzNChsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBjYWxsRnJhbWUpKSk7CisgICAgfQorICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUpOworfQorCit0ZW1wbGF0ZTw+IEpTVmFsdWUg
SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1
Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3Qp
Cit7CisgICAgVU5VU0VEX1BBUkFNKHZtKTsKKyAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LmZ1bmN0
aW9uUHJvdG90eXBlKCk7Cit9CisKK3RlbXBsYXRlPD4gdm9pZCBKU1Rlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01H
bG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3sKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3Bl
cnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6cHJvdG90
eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRl
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSk7CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1l
LCBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyJfcyks
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0pOworICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3Ro
LCBqc051bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7Cit9CisKK3RlbXBsYXRlPD4gY29uc3QgQ2xhc3NJ
bmZvIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAi
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxs
cHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25z
dHJ1Y3RvcikgfTsKKworLyogSGFzaCB0YWJsZSBmb3IgcHJvdG90eXBlICovCisKK3N0YXRpYyBj
b25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJvdG90eXBl
VGFibGVWYWx1ZXNbXSA9Cit7CisgICAgeyAiY29uc3RydWN0b3IiLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8
UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnNDb25zdHJ1Y3RvcikgfSB9LAorfTsKKworY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnNQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhP
RF9UQUJMRShKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJvdG90eXBlKSB9OworCit2b2lk
IEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZN
JiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgcmVpZnlTdGF0aWNQ
cm9wZXJ0aWVzKHZtLCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjppbmZvKCksIEpTVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcm90b3R5cGVUYWJsZVZhbHVlcywgKnRoaXMpOworICAg
IEpTQ19UT19TVFJJTkdfVEFHX1dJVEhPVVRfVFJBTlNJVElPTigpOworfQorCitjb25zdCBDbGFz
c0luZm8gSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6c19pbmZvID0geyAiVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnMiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVB
VEVfTUVUSE9EX1RBQkxFKEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMpIH07CisKK0pTVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMoU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIFJlZjxU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycz4mJiBpbXBsKQorICAgIDogSlNET01XcmFwcGVyPFRl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzPihzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCwgV1RGTW92
ZShpbXBsKSkKK3sKK30KKwordm9pZCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpmaW5p
c2hDcmVhdGlvbihWTSYgdm0pCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAg
IEFTU0VSVChpbmhlcml0cyh2bSwgaW5mbygpKSk7CisKKyAgICBzdGF0aWNfYXNzZXJ0KCFzdGQ6
OmlzX2Jhc2Vfb2Y8QWN0aXZlRE9NT2JqZWN0LCBUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycz46
OnZhbHVlLCAiSW50ZXJmYWNlIGlzIG5vdCBtYXJrZWQgYXMgW0FjdGl2ZURPTU9iamVjdF0gZXZl
biB0aG91Z2ggaW1wbGVtZW50YXRpb24gY2xhc3Mgc3ViY2xhc3NlcyBBY3RpdmVET01PYmplY3Qu
Iik7CisKK30KKworSlNPYmplY3QqIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmNyZWF0
ZVByb3RvdHlwZShWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit7Cisg
ICAgcmV0dXJuIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcm90b3R5cGU6OmNyZWF0ZSh2
bSwgJmdsb2JhbE9iamVjdCwgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1Byb3RvdHlwZTo6
Y3JlYXRlU3RydWN0dXJlKHZtLCAmZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3Qub2JqZWN0UHJv
dG90eXBlKCkpKTsKK30KKworSlNPYmplY3QqIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6
OnByb3RvdHlwZShWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit7Cisg
ICAgcmV0dXJuIGdldERPTVByb3RvdHlwZTxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzPih2
bSwgZ2xvYmFsT2JqZWN0KTsKK30KKworSlNWYWx1ZSBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzOjpnZXRDb25zdHJ1Y3RvcihWTSYgdm0sIGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QpCit7CisgICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnNDb25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmpl
Y3QqPihnbG9iYWxPYmplY3QpKTsKK30KKwordm9pZCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzOjpkZXN0cm95KEpTQzo6SlNDZWxsKiBjZWxsKQoreworICAgIEpTVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnMqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxKU1Rlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzKj4oY2VsbCk7CisgICAgdGhpc09iamVjdC0+SlNUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9yczo6fkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMoKTsKK30KKworRW5jb2RlZEpT
VmFsdWUganNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkKK3sKKyAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3Qp
OworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIGF1
dG8qIHByb3RvdHlwZSA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
c1Byb3RvdHlwZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgaWYgKFVO
TElLRUxZKCFwcm90b3R5cGUpKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmdldENvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0o
bGV4aWNhbEdsb2JhbE9iamVjdCksIHByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCkpKTsKK30KKwor
Ym9vbCBzZXRKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3IoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQoreworICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4
aWNhbEdsb2JhbE9iamVjdCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisgICAgYXV0byogcHJvdG90eXBlID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzUHJvdG90eXBlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpKTsKKyAgICBpZiAoVU5MSUtFTFkoIXByb3RvdHlwZSkpIHsKKyAgICAgICAgdGhyb3dWTVR5
cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlKTsKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKyAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3Rvcgor
ICAgIHJldHVybiBwcm90b3R5cGUtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29u
c3RydWN0b3IsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpKTsKK30KKworSlNDOjpJc29T
dWJzcGFjZSogSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6c3Vic3BhY2VGb3JJbXBsKEpT
Qzo6Vk0mIHZtKQoreworICAgIGF1dG8mIGNsaWVudERhdGEgPSAqc3RhdGljX2Nhc3Q8SlNWTUNs
aWVudERhdGEqPih2bS5jbGllbnREYXRhKTsKKyAgICBhdXRvJiBzcGFjZXMgPSBjbGllbnREYXRh
LnN1YnNwYWNlcygpOworICAgIGlmIChhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9y
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuZ2V0KCkpCisgICAgICAgIHJldHVybiBzcGFjZTsK
KyAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVP
YmplY3QsIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM+IHx8ICFKU1Rlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzOjpuZWVkc0Rlc3RydWN0aW9uKTsKKyAgICBpZiBjb25zdGV4cHIgKHN0ZDo6
aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnM+KQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQo
dm0uaGVhcCwgdm0uZGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzKTsKKyAgICBlbHNlCisgICAgICAgIHNwYWNlcy5tX3N1YnNw
YWNlRm9yVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNl
PiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBK
U1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKTsKKyAgICBhdXRvKiBzcGFjZSA9IHNwYWNlcy5t
X3N1YnNwYWNlRm9yVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuZ2V0KCk7CitJR05PUkVfV0FS
TklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQorSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0
YXV0b2xvZ2ljYWwtY29tcGFyZSIpCisgICAgaWYgKCZKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzICE9ICZKU0M6OkpTQ2VsbDo6dmlzaXRPdXRwdXRD
b25zdHJhaW50cykKKyAgICAgICAgY2xpZW50RGF0YS5vdXRwdXRDb25zdHJhaW50U3BhY2VzKCku
YXBwZW5kKHNwYWNlKTsKK0lHTk9SRV9XQVJOSU5HU19FTkQKK0lHTk9SRV9XQVJOSU5HU19FTkQK
KyAgICByZXR1cm4gc3BhY2U7Cit9CisKK3ZvaWQgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
czo6YW5hbHl6ZUhlYXAoSlNDZWxsKiBjZWxsLCBIZWFwQW5hbHl6ZXImIGFuYWx5emVyKQorewor
ICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
cyo+KGNlbGwpOworICAgIGFuYWx5emVyLnNldFdyYXBwZWRPYmplY3RGb3JDZWxsKGNlbGwsICZ0
aGlzT2JqZWN0LT53cmFwcGVkKCkpOworICAgIGlmICh0aGlzT2JqZWN0LT5zY3JpcHRFeGVjdXRp
b25Db250ZXh0KCkpCisgICAgICAgIGFuYWx5emVyLnNldExhYmVsRm9yQ2VsbChjZWxsLCAidXJs
ICIgKyB0aGlzT2JqZWN0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnVybCgpLnN0cmluZygp
KTsKKyAgICBCYXNlOjphbmFseXplSGVhcChjZWxsLCBhbmFseXplcik7Cit9CisKK2Jvb2wgSlNU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc093bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290
cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCosIFNsb3RWaXNpdG9yJiB2
aXNpdG9yLCBjb25zdCBjaGFyKiogcmVhc29uKQoreworICAgIFVOVVNFRF9QQVJBTShoYW5kbGUp
OworICAgIFVOVVNFRF9QQVJBTSh2aXNpdG9yKTsKKyAgICBVTlVTRURfUEFSQU0ocmVhc29uKTsK
KyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
c093bmVyOjpmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCog
Y29udGV4dCkKK3sKKyAgICBhdXRvKiBqc1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzID0gc3Rh
dGljX2Nhc3Q8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyo+KGhhbmRsZS5zbG90KCktPmFz
Q2VsbCgpKTsKKyAgICBhdXRvJiB3b3JsZCA9ICpzdGF0aWNfY2FzdDxET01XcmFwcGVyV29ybGQq
Pihjb250ZXh0KTsKKyAgICB1bmNhY2hlV3JhcHBlcih3b3JsZCwgJmpzVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnMtPndyYXBwZWQoKSwganNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyk7Cit9
CisKKyNpZiBFTkFCTEUoQklORElOR19JTlRFR1JJVFkpCisjaWYgUExBVEZPUk0oV0lOKQorI3By
YWdtYSB3YXJuaW5nKGRpc2FibGU6IDQ0ODMpCitleHRlcm4gIkMiIHsgZXh0ZXJuIHZvaWQgKCpj
b25zdCBfX2lkZW50aWZpZXIoIj8/XzdUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0BXZWJDb3Jl
QEA2QkAiKVtdKSgpOyB9CisjZWxzZQorZXh0ZXJuICJDIiB7IGV4dGVybiB2b2lkKiBfWlRWTjdX
ZWJDb3JlMjZUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0VbXTsgfQorI2VuZGlmCisjZW5kaWYK
KworSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpT
RE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9ycz4mJiBpbXBsKQoreworCisjaWYgRU5BQkxFKEJJTkRJTkdfSU5URUdSSVRZKQorICAgIGNv
bnN0IHZvaWQqIGFjdHVhbFZUYWJsZVBvaW50ZXIgPSBnZXRWVGFibGVQb2ludGVyKGltcGwucHRy
KCkpOworI2lmIFBMQVRGT1JNKFdJTikKKyAgICB2b2lkKiBleHBlY3RlZFZUYWJsZVBvaW50ZXIg
PSBfX2lkZW50aWZpZXIoIj8/XzdUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0BXZWJDb3JlQEA2
QkAiKTsKKyNlbHNlCisgICAgdm9pZCogZXhwZWN0ZWRWVGFibGVQb2ludGVyID0gJl9aVFZON1dl
YkNvcmUyNlRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzRVsyXTsKKyNlbmRpZgorCisgICAgLy8g
SWYgdGhpcyBmYWlscyBUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyBkb2VzIG5vdCBoYXZlIGEg
dnRhYmxlLCBzbyB5b3UgbmVlZCB0byBhZGQgdGhlCisgICAgLy8gSW1wbGVtZW50YXRpb25MYWNr
c1ZUYWJsZSBhdHRyaWJ1dGUgdG8gdGhlIGludGVyZmFjZSBkZWZpbml0aW9uCisgICAgc3RhdGlj
X2Fzc2VydChzdGQ6OmlzX3BvbHltb3JwaGljPFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzPjo6
dmFsdWUsICJUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyBpcyBub3QgcG9seW1vcnBoaWMiKTsK
KworICAgIC8vIElmIHlvdSBoaXQgdGhpcyBhc3NlcnRpb24geW91IGVpdGhlciBoYXZlIGEgdXNl
IGFmdGVyIGZyZWUgYnVnLCBvcgorICAgIC8vIFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzIGhh
cyBzdWJjbGFzc2VzLiBJZiBUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyBoYXMgc3ViY2xhc3Nl
cyB0aGF0IGdldCBwYXNzZWQKKyAgICAvLyB0byB0b0pTKCkgd2UgY3VycmVudGx5IHJlcXVpcmUg
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMgeW91IHRvIG9wdCBvdXQgb2YgYmluZGluZyBoYXJk
ZW5pbmcKKyAgICAvLyBieSBhZGRpbmcgdGhlIFNraXBWVGFibGVWYWxpZGF0aW9uIGF0dHJpYnV0
ZSB0byB0aGUgaW50ZXJmYWNlIElETCBkZWZpbml0aW9uCisgICAgUkVMRUFTRV9BU1NFUlQoYWN0
dWFsVlRhYmxlUG9pbnRlciA9PSBleHBlY3RlZFZUYWJsZVBvaW50ZXIpOworI2VuZGlmCisgICAg
cmV0dXJuIGNyZWF0ZVdyYXBwZXI8VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM+KGdsb2JhbE9i
amVjdCwgV1RGTW92ZShpbXBsKSk7Cit9CisKK0pTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6SlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzJiBpbXBsKQoreworICAgIHJldHVybiB3
cmFwKGxleGljYWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgaW1wbCk7Cit9CisKK1Rlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzKiBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjp0b1dy
YXBwZWQoSlNDOjpWTSYgdm0sIEpTQzo6SlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBpZiAoYXV0byog
d3JhcHBlciA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyo+KHZt
LCB2YWx1ZSkpCisgICAgICAgIHJldHVybiAmd3JhcHBlci0+d3JhcHBlZCgpOworICAgIHJldHVy
biBudWxscHRyOworfQorCit9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzLmgJKHJldmlzaW9uIDI2NjYxNikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNiArMSw5MyBAQAogLyoKLSAgICBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGp1
c3QgdG8gdGVsbCBidWlsZCBzY3JpcHRzIHRoYXQgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
cy5oIGFuZAotICAgIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwIGFyZSBjcmVhdGVk
IGZvciBUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5pZGwsIGFuZCB0aHVzCi0gICAgcHJldmVu
dCB0aGUgYnVpbGQgc2NyaXB0cyBmcm9tIHRyeWluZyB0byBnZW5lcmF0ZSBKU1Rlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzLmggYW5kCi0gICAgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5j
cHAgYXQgZXZlcnkgYnVpbGQuIFRoaXMgZmlsZSBtdXN0IG5vdCBiZSB0cmllZCB0byBjb21waWxl
LgorICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVj
dC4KKyAgICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdz
LnBsLiBETyBOT1QgTU9ESUZZIQorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBw
dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVy
c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz
aW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg
aXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0
IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlO
Ry5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1B
IDAyMTEwLTEzMDEsIFVTQS4KICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSlNET01X
cmFwcGVyLmgiCisjaW5jbHVkZSAiVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuaCIKKyNpbmNs
dWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFz
cyBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzIDogcHVibGljIEpTRE9NV3JhcHBlcjxUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9ycz4geworcHVibGljOgorICAgIHVzaW5nIEJhc2UgPSBKU0RP
TVdyYXBwZXI8VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM+OworICAgIHN0YXRpYyBKU1Rlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzKiBjcmVhdGUoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
SlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzPiYmIGltcGwpCisgICAgeworICAgICAgICBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnM+KGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwKSkgSlNUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9ycyhzdHJ1Y3R1cmUsICpnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOwor
ICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKGdsb2JhbE9iamVjdC0+dm0oKSk7CisgICAgICAg
IHJldHVybiBwdHI7CisgICAgfQorCisgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIGNyZWF0ZVBy
b3RvdHlwZShKU0M6OlZNJiwgSlNET01HbG9iYWxPYmplY3QmKTsKKyAgICBzdGF0aWMgSlNDOjpK
U09iamVjdCogcHJvdG90eXBlKEpTQzo6Vk0mLCBKU0RPTUdsb2JhbE9iamVjdCYpOworICAgIHN0
YXRpYyBUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyogdG9XcmFwcGVkKEpTQzo6Vk0mLCBKU0M6
OkpTVmFsdWUpOworICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDOjpKU0NlbGwqKTsKKworICAg
IERFQ0xBUkVfSU5GTzsKKworICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0
dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6
SlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6
OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpP
YmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSwgSlNDOjpOb25BcnJheSk7CisgICAg
fQorCisgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1Y3RvcihKU0M6OlZNJiwgY29u
c3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOworICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBKU0M6OlN1
YnNwYWNlQWNjZXNzIG1vZGU+IHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihK
U0M6OlZNJiB2bSkKKyAgICB7CisgICAgICAgIGlmIGNvbnN0ZXhwciAobW9kZSA9PSBKU0M6OlN1
YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50bHkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICAgICAgcmV0dXJuIHN1YnNwYWNlRm9ySW1wbCh2bSk7CisgICAgfQorICAgIHN0YXRpYyBK
U0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvckltcGwoSlNDOjpWTSYgdm0pOworICAgIHN0YXRp
YyB2b2lkIGFuYWx5emVIZWFwKEpTQ2VsbCosIEpTQzo6SGVhcEFuYWx5emVyJik7Citwcm90ZWN0
ZWQ6CisgICAgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyhKU0M6OlN0cnVjdHVyZSosIEpT
RE9NR2xvYmFsT2JqZWN0JiwgUmVmPFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzPiYmKTsKKwor
ICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYpOworfTsKKworY2xhc3MgSlNUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9yc093bmVyIDogcHVibGljIEpTQzo6V2Vha0hhbmRsZU93bmVyIHsK
K3B1YmxpYzoKKyAgICB2aXJ0dWFsIGJvb2wgaXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlND
OjpIYW5kbGU8SlNDOjpVbmtub3duPiwgdm9pZCogY29udGV4dCwgSlNDOjpTbG90VmlzaXRvciYs
IGNvbnN0IGNoYXIqKik7CisgICAgdmlydHVhbCB2b2lkIGZpbmFsaXplKEpTQzo6SGFuZGxlPEpT
Qzo6VW5rbm93bj4sIHZvaWQqIGNvbnRleHQpOworfTsKKworaW5saW5lIEpTQzo6V2Vha0hhbmRs
ZU93bmVyKiB3cmFwcGVyT3duZXIoRE9NV3JhcHBlcldvcmxkJiwgVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnMqKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxKU1Rlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzT3duZXI+IG93bmVyOworICAgIHJldHVybiAmb3duZXIuZ2V0KCk7Cit9CisK
K2lubGluZSB2b2lkKiB3cmFwcGVyS2V5KFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKiB3cmFw
cGFibGVPYmplY3QpCit7CisgICAgcmV0dXJuIHdyYXBwYWJsZU9iamVjdDsKK30KKworSlNDOjpK
U1ZhbHVlIHRvSlMoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTRE9NR2xvYmFsT2JqZWN0KiwgVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMmKTsKK2lubGluZSBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6
OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0RPTUdsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyogaW1wbCkgeyByZXR1cm4g
aW1wbCA/IHRvSlMobGV4aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LCAqaW1wbCkgOiBK
U0M6OmpzTnVsbCgpOyB9CitKU0M6OkpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChKU0M6OkpTR2xv
YmFsT2JqZWN0KiwgSlNET01HbG9iYWxPYmplY3QqLCBSZWY8VGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnM+JiYpOworaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6SlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFJlZlB0cjxUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycz4mJiBpbXBsKSB7IHJl
dHVybiBpbXBsID8gdG9KU05ld2x5Q3JlYXRlZChsZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxP
YmplY3QsIGltcGwucmVsZWFzZU5vbk51bGwoKSkgOiBKU0M6OmpzTnVsbCgpOyB9CisKK3RlbXBs
YXRlPD4gc3RydWN0IEpTRE9NV3JhcHBlckNvbnZlcnRlclRyYWl0czxUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9ycz4geworICAgIHVzaW5nIFdyYXBwZXJDbGFzcyA9IEpTVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnM7CisgICAgdXNpbmcgVG9XcmFwcGVkUmV0dXJuVHlwZSA9IFRlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzKjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1dvcmtlckdsb2JhbFNjb3Bl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNXb3JrZXJHbG9iYWxTY29wZS5jcHAJKHJldmlzaW9uIDI2NjYxNikKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1dvcmtlckdsb2JhbFNjb3BlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNTksMjIgKzU5LDQxIEBAIEpTQzo6RW5jb2RlZEpTVmFsdWUganNX
b3JrZXJHbG9iYWxTY29wZVQKIGJvb2wgc2V0SlNXb3JrZXJHbG9iYWxTY29wZVRlc3RPYmplY3RD
b25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlND
OjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzV29ya2VyR2xvYmFsU2Nv
cGVUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Q29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVj
dCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKIGJvb2wgc2V0SlNX
b3JrZXJHbG9iYWxTY29wZVRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRDb25zdHJ1Y3RvcihKU0M6
OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1
ZSk7CitKU0M6OkVuY29kZWRKU1ZhbHVlIGpzV29ya2VyR2xvYmFsU2NvcGVFeHBvc2VkVG9Xb3Jr
ZXJBbmRXaW5kb3dDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVk
SlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOworYm9vbCBzZXRKU1dvcmtlckdsb2JhbFNjb3Bl
RXhwb3NlZFRvV29ya2VyQW5kV2luZG93Q29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCos
IEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1dvcmtlckdsb2JhbFNjb3BlVGVzdE5vZGVDb25zdHJ1Y3RvcihKU0M6OkpTR2xv
YmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOworYm9v
bCBzZXRKU1dvcmtlckdsb2JhbFNjb3BlVGVzdE5vZGVDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFs
T2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CitKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzV29ya2VyR2xvYmFsU2NvcGVUZXN0T2JqZWN0Q29uc3RydWN0b3Io
SlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlO
YW1lKTsKK2Jvb2wgc2V0SlNXb3JrZXJHbG9iYWxTY29wZVRlc3RPYmplY3RDb25zdHJ1Y3RvcihK
U0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNW
YWx1ZSk7CitKU0M6OkVuY29kZWRKU1ZhbHVlIGpzV29ya2VyR2xvYmFsU2NvcGVUZXN0UHJvbWlz
ZVJlamVjdGlvbkV2ZW50Q29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5j
b2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKK2Jvb2wgc2V0SlNXb3JrZXJHbG9iYWxT
Y29wZVRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiAKIHVzaW5n
IEpTV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25z
dHJ1Y3RhYmxlPEpTV29ya2VyR2xvYmFsU2NvcGU+OwogCiAvKiBIYXNoIHRhYmxlICovCiAKLXN0
YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1dvcmtlckdsb2JhbFNjb3BlVGFi
bGVJbmRleFsxMF0gPSB7CitzdGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNX
b3JrZXJHbG9iYWxTY29wZVRhYmxlSW5kZXhbMjFdID0geworICAgIHsgLTEsIC0xIH0sCisgICAg
eyAwLCAxNiB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAt
MSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyAwLCA4IH0sCiAgICAgeyAtMSwgLTEgfSwKICAg
ICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCisgICAgeyAyLCAxOSB9LAogICAgIHsgLTEs
IC0xIH0sCi0gICAgeyAzLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyAxLCA5IH0sCi0g
ICAgeyAyLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IDMs
IDIwIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IDEsIDE3IH0sCisgICAgeyA0LCAxOCB9LAor
ICAgIHsgNSwgLTEgfSwKKyAgICB7IDYsIC0xIH0sCisgICAgeyA3LCAtMSB9LAogfTsKIAogCkBA
IC04NCw5ICsxMDMsMTMgQEAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTV29ya2VyR2xv
YgogICAgIHsgIlRlc3ROb2RlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0
PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1dvcmtlckdsb2JhbFNjb3BlVGVzdE5vZGVD
b25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRW
YWx1ZUZ1bmM+KHNldEpTV29ya2VyR2xvYmFsU2NvcGVUZXN0Tm9kZUNvbnN0cnVjdG9yKSB9IH0s
CiAgICAgeyAiVGVzdE9iamVjdCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2Fz
dDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNXb3JrZXJHbG9iYWxTY29wZVRlc3RPYmpl
Y3RDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KHNldEpTV29ya2VyR2xvYmFsU2NvcGVUZXN0T2JqZWN0Q29uc3RydWN0b3Ip
IH0gfSwKICAgICB7ICJUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Iiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1dvcmtl
ckdsb2JhbFNjb3BlVGVzdFByb21pc2VSZWplY3Rpb25FdmVudENvbnN0cnVjdG9yKSwgKGludHB0
cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNXb3Jr
ZXJHbG9iYWxTY29wZVRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRDb25zdHJ1Y3RvcikgfSB9LAor
ICAgIHsgIkV4cG9zZWRUb1dvcmtlckFuZFdpbmRvdyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNXb3JrZXJHbG9iYWxT
Y29wZUV4cG9zZWRUb1dvcmtlckFuZFdpbmRvd0NvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0
aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNXb3JrZXJHbG9iYWxT
Y29wZUV4cG9zZWRUb1dvcmtlckFuZFdpbmRvd0NvbnN0cnVjdG9yKSB9IH0sCisgICAgeyAiVGVz
dE5vZGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90
OjpHZXRWYWx1ZUZ1bmM+KGpzV29ya2VyR2xvYmFsU2NvcGVUZXN0Tm9kZUNvbnN0cnVjdG9yKSwg
KGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0
SlNXb3JrZXJHbG9iYWxTY29wZVRlc3ROb2RlQ29uc3RydWN0b3IpIH0gfSwKKyAgICB7ICJUZXN0
T2JqZWN0Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xv
dDo6R2V0VmFsdWVGdW5jPihqc1dvcmtlckdsb2JhbFNjb3BlVGVzdE9iamVjdENvbnN0cnVjdG9y
KSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4o
c2V0SlNXb3JrZXJHbG9iYWxTY29wZVRlc3RPYmplY3RDb25zdHJ1Y3RvcikgfSB9LAorICAgIHsg
IlRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzV29ya2VyR2xvYmFsU2NvcGVU
ZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Q29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19j
YXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1dvcmtlckdsb2JhbFNjb3Bl
VGVzdFByb21pc2VSZWplY3Rpb25FdmVudENvbnN0cnVjdG9yKSB9IH0sCiB9OwogCi1zdGF0aWMg
Y29uc3QgSGFzaFRhYmxlIEpTV29ya2VyR2xvYmFsU2NvcGVUYWJsZSA9IHsgNCwgNywgdHJ1ZSwg
SlNXb3JrZXJHbG9iYWxTY29wZTo6aW5mbygpLCBKU1dvcmtlckdsb2JhbFNjb3BlVGFibGVWYWx1
ZXMsIEpTV29ya2VyR2xvYmFsU2NvcGVUYWJsZUluZGV4IH07CitzdGF0aWMgY29uc3QgSGFzaFRh
YmxlIEpTV29ya2VyR2xvYmFsU2NvcGVUYWJsZSA9IHsgOCwgMTUsIHRydWUsIEpTV29ya2VyR2xv
YmFsU2NvcGU6OmluZm8oKSwgSlNXb3JrZXJHbG9iYWxTY29wZVRhYmxlVmFsdWVzLCBKU1dvcmtl
ckdsb2JhbFNjb3BlVGFibGVJbmRleCB9OwogdGVtcGxhdGU8PiBKU1ZhbHVlIEpTV29ya2VyR2xv
YmFsU2NvcGVDb25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBj
b25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAgIHJldHVybiBKU0V2
ZW50VGFyZ2V0OjpnZXRDb25zdHJ1Y3Rvcih2bSwgJmdsb2JhbE9iamVjdCk7CkBAIC0yNzQsNiAr
Mjk3LDk4IEBAIGJvb2wgc2V0SlNXb3JrZXJHbG9iYWxTY29wZVRlc3RQcm9taXNlUmUKICAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTV29ya2VyR2xvYmFsU2NvcGU+OjpzZXQ8c2V0SlNXb3JrZXJH
bG9iYWxTY29wZVRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRDb25zdHJ1Y3RvclNldHRlcj4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiVGVzdFByb21pc2VS
ZWplY3Rpb25FdmVudCIpOwogfQogCitzdGF0aWMgaW5saW5lIEpTVmFsdWUganNXb3JrZXJHbG9i
YWxTY29wZUV4cG9zZWRUb1dvcmtlckFuZFdpbmRvd0NvbnN0cnVjdG9yR2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1dvcmtlckdsb2JhbFNjb3BlJiB0aGlzT2Jq
ZWN0KQoreworICAgIFVOVVNFRF9QQVJBTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICByZXR1
cm4gSlNFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3c6OmdldENvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpLCB0aGlzT2JqZWN0Lmdsb2JhbE9iamVjdCgpKTsKK30KKwor
RW5jb2RlZEpTVmFsdWUganNXb3JrZXJHbG9iYWxTY29wZUV4cG9zZWRUb1dvcmtlckFuZFdpbmRv
d0NvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKK3sKKyAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTV29ya2VyR2xvYmFsU2NvcGU+OjpnZXQ8anNXb3JrZXJHbG9iYWxTY29wZUV4cG9zZWRU
b1dvcmtlckFuZFdpbmRvd0NvbnN0cnVjdG9yR2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCAiRXhwb3NlZFRvV29ya2VyQW5kV2luZG93Iik7Cit9CisKK3N0YXRpYyBpbmxp
bmUgYm9vbCBzZXRKU1dvcmtlckdsb2JhbFNjb3BlRXhwb3NlZFRvV29ya2VyQW5kV2luZG93Q29u
c3RydWN0b3JTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTV29y
a2VyR2xvYmFsU2NvcGUmIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCit7CisgICAgYXV0byYg
dm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICAvLyBTaGFkb3dpbmcg
YSBidWlsdC1pbiBjb25zdHJ1Y3Rvci4KKyAgICByZXR1cm4gdGhpc09iamVjdC5wdXREaXJlY3Qo
dm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENo
YXIqPigiRXhwb3NlZFRvV29ya2VyQW5kV2luZG93IiksIHN0cmxlbigiRXhwb3NlZFRvV29ya2Vy
QW5kV2luZG93IikpLCB2YWx1ZSk7Cit9CisKK2Jvb2wgc2V0SlNXb3JrZXJHbG9iYWxTY29wZUV4
cG9zZWRUb1dvcmtlckFuZFdpbmRvd0NvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSkKK3sKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTV29ya2VyR2xvYmFsU2Nv
cGU+OjpzZXQ8c2V0SlNXb3JrZXJHbG9iYWxTY29wZUV4cG9zZWRUb1dvcmtlckFuZFdpbmRvd0Nv
bnN0cnVjdG9yU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVk
VmFsdWUsICJFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3ciKTsKK30KKworc3RhdGljIGlubGluZSBK
U1ZhbHVlIGpzV29ya2VyR2xvYmFsU2NvcGVUZXN0Tm9kZUNvbnN0cnVjdG9yR2V0dGVyKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1dvcmtlckdsb2JhbFNjb3BlJiB0aGlz
T2JqZWN0KQoreworICAgIFVOVVNFRF9QQVJBTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICBy
ZXR1cm4gSlNUZXN0Tm9kZTo6Z2V0Q29uc3RydWN0b3IoSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCksIHRoaXNPYmplY3QuZ2xvYmFsT2JqZWN0KCkpOworfQorCitFbmNvZGVkSlNWYWx1
ZSBqc1dvcmtlckdsb2JhbFNjb3BlVGVzdE5vZGVDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5h
bWUpCit7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1dvcmtlckdsb2JhbFNjb3BlPjo6Z2V0
PGpzV29ya2VyR2xvYmFsU2NvcGVUZXN0Tm9kZUNvbnN0cnVjdG9yR2V0dGVyPigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiVGVzdE5vZGUiKTsKK30KKworc3RhdGljIGlubGluZSBi
b29sIHNldEpTV29ya2VyR2xvYmFsU2NvcGVUZXN0Tm9kZUNvbnN0cnVjdG9yU2V0dGVyKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1dvcmtlckdsb2JhbFNjb3BlJiB0aGlz
T2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQoreworICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCk7CisgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0
b3IuCisgICAgcmV0dXJuIHRoaXNPYmplY3QucHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oIlRlc3ROb2RlIiksIHN0
cmxlbigiVGVzdE5vZGUiKSksIHZhbHVlKTsKK30KKworYm9vbCBzZXRKU1dvcmtlckdsb2JhbFNj
b3BlVGVzdE5vZGVDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUp
Cit7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1dvcmtlckdsb2JhbFNjb3BlPjo6c2V0PHNl
dEpTV29ya2VyR2xvYmFsU2NvcGVUZXN0Tm9kZUNvbnN0cnVjdG9yU2V0dGVyPigqbGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJUZXN0Tm9kZSIpOworfQorCitz
dGF0aWMgaW5saW5lIEpTVmFsdWUganNXb3JrZXJHbG9iYWxTY29wZVRlc3RPYmplY3RDb25zdHJ1
Y3RvckdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNXb3JrZXJH
bG9iYWxTY29wZSYgdGhpc09iamVjdCkKK3sKKyAgICBVTlVTRURfUEFSQU0obGV4aWNhbEdsb2Jh
bE9iamVjdCk7CisgICAgcmV0dXJuIEpTVGVzdE9iajo6Z2V0Q29uc3RydWN0b3IoSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIHRoaXNPYmplY3QuZ2xvYmFsT2JqZWN0KCkpOworfQor
CitFbmNvZGVkSlNWYWx1ZSBqc1dvcmtlckdsb2JhbFNjb3BlVGVzdE9iamVjdENvbnN0cnVjdG9y
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIFByb3BlcnR5TmFtZSkKK3sKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTV29ya2Vy
R2xvYmFsU2NvcGU+OjpnZXQ8anNXb3JrZXJHbG9iYWxTY29wZVRlc3RPYmplY3RDb25zdHJ1Y3Rv
ckdldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIlRlc3RPYmplY3QiKTsK
K30KKworc3RhdGljIGlubGluZSBib29sIHNldEpTV29ya2VyR2xvYmFsU2NvcGVUZXN0T2JqZWN0
Q29uc3RydWN0b3JTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpT
V29ya2VyR2xvYmFsU2NvcGUmIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCit7CisgICAgYXV0
byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICAvLyBTaGFkb3dp
bmcgYSBidWlsdC1pbiBjb25zdHJ1Y3Rvci4KKyAgICByZXR1cm4gdGhpc09iamVjdC5wdXREaXJl
Y3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
TENoYXIqPigiVGVzdE9iamVjdCIpLCBzdHJsZW4oIlRlc3RPYmplY3QiKSksIHZhbHVlKTsKK30K
KworYm9vbCBzZXRKU1dvcmtlckdsb2JhbFNjb3BlVGVzdE9iamVjdENvbnN0cnVjdG9yKEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK3sKKyAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTV29ya2VyR2xvYmFsU2NvcGU+OjpzZXQ8c2V0SlNXb3JrZXJHbG9iYWxTY29wZVRlc3RPYmpl
Y3RDb25zdHJ1Y3RvclNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5j
b2RlZFZhbHVlLCAiVGVzdE9iamVjdCIpOworfQorCitzdGF0aWMgaW5saW5lIEpTVmFsdWUganNX
b3JrZXJHbG9iYWxTY29wZVRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRDb25zdHJ1Y3RvckdldHRl
cihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNXb3JrZXJHbG9iYWxTY29w
ZSYgdGhpc09iamVjdCkKK3sKKyAgICBVTlVTRURfUEFSQU0obGV4aWNhbEdsb2JhbE9iamVjdCk7
CisgICAgcmV0dXJuIEpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudDo6Z2V0Q29uc3RydWN0b3Io
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIHRoaXNPYmplY3QuZ2xvYmFsT2JqZWN0
KCkpOworfQorCitFbmNvZGVkSlNWYWx1ZSBqc1dvcmtlckdsb2JhbFNjb3BlVGVzdFByb21pc2VS
ZWplY3Rpb25FdmVudENvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKK3sKKyAgICByZXR1
cm4gSURMQXR0cmlidXRlPEpTV29ya2VyR2xvYmFsU2NvcGU+OjpnZXQ8anNXb3JrZXJHbG9iYWxT
Y29wZVRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRDb25zdHJ1Y3RvckdldHRlcj4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIlRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQiKTsKK30K
Kworc3RhdGljIGlubGluZSBib29sIHNldEpTV29ya2VyR2xvYmFsU2NvcGVUZXN0UHJvbWlzZVJl
amVjdGlvbkV2ZW50Q29uc3RydWN0b3JTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTV29ya2VyR2xvYmFsU2NvcGUmIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUp
Cit7CisgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAg
ICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3Rvci4KKyAgICByZXR1cm4gdGhpc09i
amVjdC5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgTENoYXIqPigiVGVzdFByb21pc2VSZWplY3Rpb25FdmVudCIpLCBzdHJsZW4o
IlRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQiKSksIHZhbHVlKTsKK30KKworYm9vbCBzZXRKU1dv
cmtlckdsb2JhbFNjb3BlVGVzdFByb21pc2VSZWplY3Rpb25FdmVudENvbnN0cnVjdG9yKEpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK3sKKyAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTV29ya2VyR2xvYmFsU2NvcGU+OjpzZXQ8c2V0SlNXb3JrZXJHbG9iYWxTY29wZVRlc3RQcm9t
aXNlUmVqZWN0aW9uRXZlbnRDb25zdHJ1Y3RvclNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiVGVzdFByb21pc2VSZWplY3Rpb25FdmVudCIpOwor
fQorCiBKU0M6Oklzb1N1YnNwYWNlKiBKU1dvcmtlckdsb2JhbFNjb3BlOjpzdWJzcGFjZUZvcklt
cGwoSlNDOjpWTSYgdm0pCiB7CiAgICAgYXV0byYgY2xpZW50RGF0YSA9ICpzdGF0aWNfY2FzdDxK
U1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQXVkaW9FbGVtZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxBdWRpb0VsZW1lbnQuaWRsCShyZXZpc2lvbiAyNjY2MTYpCisrKyBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxBdWRpb0VsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3
IEBACiAKIFsKICAgICBDb25kaXRpb25hbD1WSURFTywKLSAgICBDb25zdHJ1Y3RvckNhbGxXaXRo
PURvY3VtZW50LAotICAgIE5hbWVkQ29uc3RydWN0b3I9QXVkaW8ob3B0aW9uYWwgW0F0b21TdHJp
bmddIERPTVN0cmluZyBzcmMpCisgICAgTGVnYWN5RmFjdG9yeUZ1bmN0aW9uQ2FsbFdpdGg9RG9j
dW1lbnQsCisgICAgTGVnYWN5RmFjdG9yeUZ1bmN0aW9uPUF1ZGlvKG9wdGlvbmFsIFtBdG9tU3Ry
aW5nXSBET01TdHJpbmcgc3JjKQogXSBpbnRlcmZhY2UgSFRNTEF1ZGlvRWxlbWVudCA6IEhUTUxN
ZWRpYUVsZW1lbnQgewogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxl
bWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVt
ZW50LmlkbAkocmV2aXNpb24gMjY2NjE2KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1h
Z2VFbGVtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjEsOCArMjEsOCBAQAogWwogICAgIEV4
cG9ydE1hY3JvPVdFQkNPUkVfRVhQT1JULAogICAgIEpTR2VuZXJhdGVUb05hdGl2ZU9iamVjdCwK
LSAgICBDb25zdHJ1Y3RvckNhbGxXaXRoPURvY3VtZW50LAotICAgIE5hbWVkQ29uc3RydWN0b3I9
SW1hZ2Uob3B0aW9uYWwgdW5zaWduZWQgbG9uZyB3aWR0aCwgb3B0aW9uYWwgdW5zaWduZWQgbG9u
ZyBoZWlnaHQpCisgICAgTGVnYWN5RmFjdG9yeUZ1bmN0aW9uQ2FsbFdpdGg9RG9jdW1lbnQsCisg
ICAgTGVnYWN5RmFjdG9yeUZ1bmN0aW9uPUltYWdlKG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgd2lk
dGgsIG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgaGVpZ2h0KQogXSBpbnRlcmZhY2UgSFRNTEltYWdl
RWxlbWVudCA6IEhUTUxFbGVtZW50IHsKICAgICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVkLCBSZWZs
ZWN0XSBhdHRyaWJ1dGUgRE9NU3RyaW5nIG5hbWU7CiAgICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRl
ZCwgUmVmbGVjdF0gYXR0cmlidXRlIERPTVN0cmluZyBhbGlnbjsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuaWRsCShyZXZpc2lvbiAyNjY2MTYpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAt
MjAsOSArMjAsOSBAQAogCiBbCiAgICAgSlNHZW5lcmF0ZVRvTmF0aXZlT2JqZWN0LAotICAgIENv
bnN0cnVjdG9yTWF5VGhyb3dFeGNlcHRpb24sCi0gICAgQ29uc3RydWN0b3JDYWxsV2l0aD1Eb2N1
bWVudCwKLSAgICBOYW1lZENvbnN0cnVjdG9yPU9wdGlvbihvcHRpb25hbCBET01TdHJpbmcgdGV4
dCA9ICIiLCBvcHRpb25hbCBET01TdHJpbmcgdmFsdWUsIG9wdGlvbmFsIGJvb2xlYW4gZGVmYXVs
dFNlbGVjdGVkID0gZmFsc2UsIG9wdGlvbmFsIGJvb2xlYW4gc2VsZWN0ZWQgPSBmYWxzZSksCisg
ICAgTGVnYWN5RmFjdG9yeUZ1bmN0aW9uTWF5VGhyb3dFeGNlcHRpb24sCisgICAgTGVnYWN5RmFj
dG9yeUZ1bmN0aW9uQ2FsbFdpdGg9RG9jdW1lbnQsCisgICAgTGVnYWN5RmFjdG9yeUZ1bmN0aW9u
PU9wdGlvbihvcHRpb25hbCBET01TdHJpbmcgdGV4dCA9ICIiLCBvcHRpb25hbCBET01TdHJpbmcg
dmFsdWUsIG9wdGlvbmFsIGJvb2xlYW4gZGVmYXVsdFNlbGVjdGVkID0gZmFsc2UsIG9wdGlvbmFs
IGJvb2xlYW4gc2VsZWN0ZWQgPSBmYWxzZSksCiBdIGludGVyZmFjZSBIVE1MT3B0aW9uRWxlbWVu
dCA6IEhUTUxFbGVtZW50IHsKICAgICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVkLCBSZWZsZWN0XSBh
dHRyaWJ1dGUgYm9vbGVhbiBkaXNhYmxlZDsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgSFRNTEZv
cm1FbGVtZW50IGZvcm07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFj
a0N1ZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJh
Y2tDdWUuaWRsCShyZXZpc2lvbiAyNjY2MTYpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L1RleHRUcmFja0N1ZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDcgQEAKICAgICBD
dXN0b21Ub0pTT2JqZWN0LAogICAgIEpTQ3VzdG9tTWFya0Z1bmN0aW9uLAogICAgIFNraXBWVGFi
bGVWYWxpZGF0aW9uLAotICAgIENvbnN0cnVjdG9yRW5hYmxlZEJ5U2V0dGluZz1HZW5lcmljQ3Vl
QVBJCisgICAgTGVnYWN5RmFjdG9yeUZ1bmN0aW9uRW5hYmxlZEJ5U2V0dGluZz1HZW5lcmljQ3Vl
QVBJCiBdIGludGVyZmFjZSBUZXh0VHJhY2tDdWUgOiBFdmVudFRhcmdldCB7CiAgICAgW0NhbGxX
aXRoPURvY3VtZW50LCBNYXlUaHJvd0V4Y2VwdGlvbl0gY29uc3RydWN0b3IoZG91YmxlIHN0YXJ0
VGltZSwgZG91YmxlIGVuZFRpbWUsIERvY3VtZW50RnJhZ21lbnQgY3VlTm9kZSk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407995</attachid>
            <date>2020-09-04 10:30:00 -0700</date>
            <delta_ts>2020-09-04 10:53:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213316-20200904102959.patch</filename>
            <type>text/plain</type>
            <size>108377</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2NjYxOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYyIEBACisyMDIwLTA5LTA0ICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViSURMXSBBZG9wdCBMZWdhY3lG
YWN0b3J5RnVuY3Rpb24gZXh0ZW5kZWQgYXR0cmlidXRlIGluIGxpZXUgb2YgTmFtZWRDb25zdHJ1
Y3RvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEz
MzE2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVu
YW1lIHRoZSBmb2xsb3dpbmcgdGhlIGV4dGVuZGVkIGF0dHJpYnV0ZXMgdG8gbW9yZSBjbG9zZWx5
IGFsaWduIHdpdGggV2ViSURMOgorICAgICAgICAgICAgTmFtZWRDb25zdHJ1Y3RvciAtPiBMZWdh
Y3lGYWN0b3J5RnVuY3Rpb24KKyAgICAgICAgICAgIENvbnN0cnVjdG9yQ2FsbFdpdGggLT4gTGVn
YWN5RmFjdG9yeUZ1bmN0aW9uQ2FsbFdpdGgKKyAgICAgICAgICAgIENvbnN0cnVjdG9yRW5hYmxl
ZEJ5U2V0dGluZyAtPiBMZWdhY3lGYWN0b3J5RnVuY3Rpb25FbmFibGVkQnlTZXR0aW5nCisgICAg
ICAgICAgICBDb25zdHJ1Y3Rvck1heVRocm93RXhjZXB0aW9uIC0+IExlZ2FjeUZhY3RvcnlGdW5j
dGlvbk1heVRocm93RXhjZXB0aW9uCisKKyAgICAgICAgTm90ZSwgQ29uc3RydWN0b3JDYWxsV2l0
aCwgQ29uc3RydWN0b3JFbmFibGVkQnlTZXR0aW5nIGFuZCBDb25zdHJ1Y3Rvck1heVRocm93RXhj
ZXB0aW9uCisgICAgICAgIHdlcmUgb25seSB1c2VkIHdpdGggTmFtZWRDb25zdHJ1Y3RvcnMgcHJl
dmlvdXNseSBhcyBub3JtYWwgY29uc3RydWN0b3JzIGRvbid0IHJlcXVpcmUKKyAgICAgICAgaW50
ZXJmYWNlIGxldmVsIGV4dGVuZGVkIGF0dHJpYnV0ZXMgZm9yIHRoZXNlIGFzIHRoZSBleHRlbmRl
ZCBhdHRyaWJ1dGUgY2FuIGJlIGRpcmVjdGx5CisgICAgICAgIG9uIHRoZSBjb25zdHJ1Y3RvciBp
dHNlbGYuIElkZWFsbHksIHdlIHdvdWxkIGRvIHRoZSBzYW1lIHdpdGggTGVnYWN5RmFjdG9yeUZ1
bmN0aW9uIGJ5CisgICAgICAgIGFsbG93aW5nIGV4dGVuZGVkIGF0dHJpYnV0ZXMgb24gdGhlIG9w
ZXJhdG9yIGl0c2VsZiBsaWtlOgorICAgICAgICAKKyAgICAgICAgWworICAgICAgICAgICAgLi4u
CisgICAgICAgICAgICBMZWdhY3lGYWN0b3J5RnVuY3Rpb249W0NhbGxXaXRoPURvY3VtZW50XSBB
dWRpbyhvcHRpb25hbCBbQXRvbVN0cmluZ10gRE9NU3RyaW5nIHNyYykKKyAgICAgICAgXQorCisg
ICAgICAgIGJ1dCB0aGlzIHJlcXVpcmVzIGNoYW5nZXMgdG8gdGhlIElETFBhcnNlciAod2hpY2gg
YXJlIHN0cmFpZ2h0Zm9yd2FyZCkgYW5kIGNyZWF0ZXMgYSBsb3Qgb2YKKyAgICAgICAgYWRkaXRp
b25hbCBjb21wbGV4aXR5IGluc2lkZSB0aGUgdmVyeSBoYWNreSBwcmVwcm9jZXNzLWlkbHMucGwg
cmVwcm9kdWNpbmcgdGhvc2UgcGFyc2VyIGNoYW5nZXMuCisgICAgICAgIEkgd2lsbCBsZWF2ZSB0
aGF0IGFkZGl0aW9uYWwgY2xlYW51cCBmb3IgYSBzdWJzZXF1ZW50IGNoYW5nZS4gCisKKyAgICAg
ICAgKiBodG1sL0hUTUxBdWRpb0VsZW1lbnQuaWRsOgorICAgICAgICAqIGh0bWwvSFRNTEltYWdl
RWxlbWVudC5pZGw6CisgICAgICAgICogaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5pZGw6CisgICAg
ICAgICogaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuaWRsOgorICAgICAgICBVcGRhdGUgdG8gdXNl
IG5ldyBuYW1lcy4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NTGVnYWN5RmFjdG9yeUZ1
bmN0aW9uLmg6IENvcGllZCBmcm9tIGJpbmRpbmdzL2pzL0pTRE9NTmFtZWRDb25zdHJ1Y3Rvci5o
LgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NTmFtZWRDb25zdHJ1Y3Rvci5oOiBSZW1vdmVk
LgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
VXBkYXRlIGZvciByZW5hbWUgb2YgSlNET01OYW1lZENvbnN0cnVjdG9yLmggdG8gSlNET01MZWdh
Y3lGYWN0b3J5RnVuY3Rpb24uaAorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9ySlMucG06CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIucG06Cisg
ICAgICAgIChhcHBseUV4dGVuZGVkQXR0cmlidXRlTGlzdCk6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy9wcmVwcm9jZXNzLWlkbHMucGw6CisgICAgICAgIChHZW5lcmF0ZUNvbnN0cnVjdG9y
QXR0cmlidXRlcyk6CisgICAgICAgIFVwZGF0ZSBJREwgcHJvY2Vzc2luZyB0byBoYW5kbGUgbmV3
IG5hbWVzLgorICAgICAgICAKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0
ZXMuanNvbjoKKyAgICAgICAgVXBkYXRlIGV4dGVuZGVkIGF0dHJpYnV0ZSBkZWZpbml0aW9ucyBm
b3IgbmV3IG5hbWVzLiBSZW1vdmVkIHVudXNlZCBDb25zdHJ1Y3RvciBleHRlbmRlZCBhdHRyaWJ1
dGUuCisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2Jq
ZWN0LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TGVnYWN5
RmFjdG9yeUZ1bmN0aW9uLmNwcDogQ29waWVkIGZyb20gYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24uaDogQ29waWVkIGZyb20gYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuaC4KKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHA6IFJlbW92
ZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3Ry
dWN0b3IuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvU3VwcGxl
bWVudGFsRGVwZW5kZW5jaWVzLmRlcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbi5pZGw6IENvcGllZCBmcm9tIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9UZXN0TmFtZWRDb25zdHJ1Y3Rvci5pZGwuCisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Rlc3ROYW1lZENvbnN0cnVjdG9yLmlkbDogUmVtb3ZlZC4KKyAgICAgICAgVXBk
YXRlIHRlc3RzIGZvciBuZXcgbmFtZXMuCisKIDIwMjAtMDktMDQgIFdlbnNvbiBIc2llaCAgPHdl
bnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIGEgZmFzdCBwYXRoIGluIFRyYW5z
Zm9ybWF0aW9uTWF0cml4OjptYXBSZWN0KGNvbnN0IEZsb2F0UmVjdCYpIGZvciBhZmZpbmUgdHJh
bnNmb3JtYXRpb25zCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyNjY2MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTEwMDQz
LDcgKzEwMDQzLDcgQEAKIAkJN0MwQ0VGMjkxRTRBNTREMzAwOERFQjgwIC8qIEpTRE9NQ29uc3Ry
dWN0b3JXaXRoRG9jdW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNE
T01Db25zdHJ1Y3RvcldpdGhEb2N1bWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3QzBDRUYyQTFFNEE1NTZDMDA4REVCODAgLyogSlNET01CdWlsdGluQ29uc3RydWN0b3JCYXNl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRE9NQnVpbHRpbkNvbnN0cnVj
dG9yQmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzBDRUYyQjFFNEE1NUMz
MDA4REVCODAgLyogSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJN0MwQ0VGMkMxRTRBNTY0RDAwOERFQjgw
IC8qIEpTRE9NTmFtZWRDb25zdHJ1Y3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBKU0RPTU5hbWVkQ29uc3RydWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJN0MwQ0VGMkMxRTRBNTY0RDAwOERFQjgwIC8qIEpTRE9NTGVnYWN5RmFjdG9yeUZ1bmN0aW9u
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRE9NTGVnYWN5RmFjdG9yeUZ1
bmN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDMENFRjJEMUU0QTU2QzUw
MDhERUI4MCAvKiBKU0RPTUJ1aWx0aW5Db25zdHJ1Y3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBKU0RPTUJ1aWx0aW5Db25zdHJ1Y3Rvci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3QzBDRUYyRTFFNEE1ODMyMDA4REVCODAgLyogSlNET01CdWlsdGluQ29u
c3RydWN0b3JCYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
RE9NQnVpbHRpbkNvbnN0cnVjdG9yQmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTdDMENFRjJGMUU0QTU4QUQwMDhERUI4MCAvKiBKU0RPTUNvbnN0cnVjdG9yQmFzZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0RPTUNvbnN0cnVjdG9yQmFz
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNjc0NCw3ICsyNjc0NCw3IEBA
CiAJCQkJN0MwQ0VGMkIxRTRBNTVDMzAwOERFQjgwIC8qIEpTRE9NQ29uc3RydWN0b3JOb3RDb25z
dHJ1Y3RhYmxlLmggKi8sCiAJCQkJN0MwQ0VGMzAxRTRBNThGMTAwOERFQjgwIC8qIEpTRE9NQ29u
c3RydWN0b3JXaXRoRG9jdW1lbnQuY3BwICovLAogCQkJCTdDMENFRjI5MUU0QTU0RDMwMDhERUI4
MCAvKiBKU0RPTUNvbnN0cnVjdG9yV2l0aERvY3VtZW50LmggKi8sCi0JCQkJN0MwQ0VGMkMxRTRB
NTY0RDAwOERFQjgwIC8qIEpTRE9NTmFtZWRDb25zdHJ1Y3Rvci5oICovLAorCQkJCTdDMENFRjJD
MUU0QTU2NEQwMDhERUI4MCAvKiBKU0RPTUxlZ2FjeUZhY3RvcnlGdW5jdGlvbi5oICovLAogCQkJ
KTsKIAkJCW5hbWUgPSBDb25zdHJ1Y3RvcnM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01MZWdhY3lGYWN0b3J5RnVuY3Rp
b24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUxlZ2Fj
eUZhY3RvcnlGdW5jdGlvbi5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NTGVnYWN5RmFjdG9yeUZ1bmN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSw4MSBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTUsIDIwMTYgQ2Fub24gSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBw
dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVy
c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz
aW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv
dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGVzc2Vy
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNo
b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1Ymxp
YworICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8g
dGhlIEZyZWUgU29mdHdhcmUKKyAqICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl
ZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2luY2x1ZGUgIkpTRE9NQ29uc3RydWN0b3JXaXRoRG9jdW1lbnQuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCisvLyBGSU1YRTogV2h5IGNhbid0IExlZ2FjeUZhY3RvcnlG
dW5jdGlvbnMgYmUgdXNlZCB3aXRoIHdvcmtlcnM/Cit0ZW1wbGF0ZTx0eXBlbmFtZSBKU0NsYXNz
PiBjbGFzcyBKU0RPTUxlZ2FjeUZhY3RvcnlGdW5jdGlvbiBmaW5hbCA6IHB1YmxpYyBKU0RPTUNv
bnN0cnVjdG9yV2l0aERvY3VtZW50IHsKK3B1YmxpYzoKKyAgICB1c2luZyBCYXNlID0gSlNET01D
b25zdHJ1Y3RvcldpdGhEb2N1bWVudDsKKworICAgIHN0YXRpYyBKU0RPTUxlZ2FjeUZhY3RvcnlG
dW5jdGlvbiogY3JlYXRlKEpTQzo6Vk0mLCBKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2Jq
ZWN0Jik7CisgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpW
TSYsIEpTQzo6SlNHbG9iYWxPYmplY3QmLCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKTsKKworICAg
IERFQ0xBUkVfSU5GTzsKKworICAgIC8vIE11c3QgYmUgZGVmaW5lZCBmb3IgZWFjaCBzcGVjaWFs
aXphdGlvbiBjbGFzcy4KKyAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZUZvclN0cnVj
dHVyZShKU0M6OlZNJiwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmKTsKKworcHJpdmF0ZToKKyAg
ICBKU0RPTUxlZ2FjeUZhY3RvcnlGdW5jdGlvbihKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBK
U0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQorICAgICAgICA6IEJhc2Uoc3RydWN0dXJl
LCBnbG9iYWxPYmplY3QpCisgICAgeyAKKyAgICB9CisKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9u
KEpTQzo6Vk0mLCBKU0RPTUdsb2JhbE9iamVjdCYpOworICAgIHN0YXRpYyBKU0M6OkNhbGxEYXRh
IGdldENvbnN0cnVjdERhdGEoSlNDOjpKU0NlbGwqKTsKKworICAgIC8vIFVzdWFsbHkgZGVmaW5l
ZCBmb3IgZWFjaCBzcGVjaWFsaXphdGlvbiBjbGFzcy4KKyAgICB2b2lkIGluaXRpYWxpemVQcm9w
ZXJ0aWVzKEpTQzo6Vk0mLCBKU0RPTUdsb2JhbE9iamVjdCYpIHsgfQorICAgIC8vIE11c3QgYmUg
ZGVmaW5lZCBmb3IgZWFjaCBzcGVjaWFsaXphdGlvbiBjbGFzcy4KKyAgICBzdGF0aWMgSlNDOjpF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdChKU0M6OkpTR2xvYmFsT2JqZWN0
KiwgSlNDOjpDYWxsRnJhbWUqKTsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIEpTQ2xhc3M+IGlu
bGluZSBKU0RPTUxlZ2FjeUZhY3RvcnlGdW5jdGlvbjxKU0NsYXNzPiogSlNET01MZWdhY3lGYWN0
b3J5RnVuY3Rpb248SlNDbGFzcz46OmNyZWF0ZShKU0M6OlZNJiB2bSwgSlNDOjpTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3sKKyAgICBKU0RP
TUxlZ2FjeUZhY3RvcnlGdW5jdGlvbiogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIEpTQzo6
YWxsb2NhdGVDZWxsPEpTRE9NTGVnYWN5RmFjdG9yeUZ1bmN0aW9uPih2bS5oZWFwKSkgSlNET01M
ZWdhY3lGYWN0b3J5RnVuY3Rpb24oc3RydWN0dXJlLCBnbG9iYWxPYmplY3QpOworICAgIGNvbnN0
cnVjdG9yLT5maW5pc2hDcmVhdGlvbih2bSwgZ2xvYmFsT2JqZWN0KTsKKyAgICByZXR1cm4gY29u
c3RydWN0b3I7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEpTQ2xhc3M+IGlubGluZSBKU0M6OlN0
cnVjdHVyZSogSlNET01MZWdhY3lGYWN0b3J5RnVuY3Rpb248SlNDbGFzcz46OmNyZWF0ZVN0cnVj
dHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBKU0M6
OkpTVmFsdWUgcHJvdG90eXBlKQoreworICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRl
KHZtLCAmZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RU
eXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEpT
Q2xhc3M+IGlubGluZSB2b2lkIEpTRE9NTGVnYWN5RmFjdG9yeUZ1bmN0aW9uPEpTQ2xhc3M+Ojpm
aW5pc2hDcmVhdGlvbihKU0M6OlZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVj
dCkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbihnbG9iYWxPYmplY3QpOworICAgIEFTU0VS
VChpbmhlcml0cyh2bSwgaW5mbygpKSk7CisgICAgaW5pdGlhbGl6ZVByb3BlcnRpZXModm0sIGds
b2JhbE9iamVjdCk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEpTQ2xhc3M+IGlubGluZSBKU0M6
OkNhbGxEYXRhIEpTRE9NTGVnYWN5RmFjdG9yeUZ1bmN0aW9uPEpTQ2xhc3M+OjpnZXRDb25zdHJ1
Y3REYXRhKEpTQzo6SlNDZWxsKikKK3sKKyAgICBKU0M6OkNhbGxEYXRhIGNvbnN0cnVjdERhdGE7
CisgICAgY29uc3RydWN0RGF0YS50eXBlID0gSlNDOjpDYWxsRGF0YTo6VHlwZTo6TmF0aXZlOwor
ICAgIGNvbnN0cnVjdERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY29uc3RydWN0OworICAgIHJldHVy
biBjb25zdHJ1Y3REYXRhOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTU5hbWVkQ29uc3RydWN0b3IuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTU5hbWVkQ29uc3RydWN0b3IuaAko
cmV2aXNpb24gMjY2NjE5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01OYW1l
ZENvbnN0cnVjdG9yLmgJKG5vbmV4aXN0ZW50KQpAQCAtMSw4MSArMCwwIEBACi0vKgotICogIENv
cHlyaWdodCAoQykgMjAxNSwgMjAxNiBDYW5vbiBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KiAgQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgotICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNz
ZXIgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us
IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAot
ICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh
cnJhbnR5IG9mCi0gKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0gKiAgTGljZW5zZSBhbG9uZyB3
aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotICog
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3Rv
biwgTUEgIDAyMTEwLTEzMDEgIFVTQQotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAi
SlNET01Db25zdHJ1Y3RvcldpdGhEb2N1bWVudC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LS8vIEZJTVhFOiBXaHkgY2FuJ3QgbmFtZWQgY29uc3RydWN0b3JzIGJlIHVzZWQgd2l0aCB3b3Jr
ZXJzPwotdGVtcGxhdGU8dHlwZW5hbWUgSlNDbGFzcz4gY2xhc3MgSlNET01OYW1lZENvbnN0cnVj
dG9yIGZpbmFsIDogcHVibGljIEpTRE9NQ29uc3RydWN0b3JXaXRoRG9jdW1lbnQgewotcHVibGlj
OgotICAgIHVzaW5nIEJhc2UgPSBKU0RPTUNvbnN0cnVjdG9yV2l0aERvY3VtZW50OwotCi0gICAg
c3RhdGljIEpTRE9NTmFtZWRDb25zdHJ1Y3RvciogY3JlYXRlKEpTQzo6Vk0mLCBKU0M6OlN0cnVj
dHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0Jik7Ci0gICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3QmLCBKU0M6OkpTVmFs
dWUgcHJvdG90eXBlKTsKLQotICAgIERFQ0xBUkVfSU5GTzsKLQotICAgIC8vIE11c3QgYmUgZGVm
aW5lZCBmb3IgZWFjaCBzcGVjaWFsaXphdGlvbiBjbGFzcy4KLSAgICBzdGF0aWMgSlNDOjpKU1Zh
bHVlIHByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiwgY29uc3QgSlNET01HbG9iYWxPYmpl
Y3QmKTsKLQotcHJpdmF0ZToKLSAgICBKU0RPTU5hbWVkQ29uc3RydWN0b3IoSlNDOjpTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKLSAgICAgICAg
OiBCYXNlKHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KQotICAgIHsgCi0gICAgfQotCi0gICAgdm9p
ZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJiwgSlNET01HbG9iYWxPYmplY3QmKTsKLSAgICBzdGF0
aWMgSlNDOjpDYWxsRGF0YSBnZXRDb25zdHJ1Y3REYXRhKEpTQzo6SlNDZWxsKik7Ci0KLSAgICAv
LyBVc3VhbGx5IGRlZmluZWQgZm9yIGVhY2ggc3BlY2lhbGl6YXRpb24gY2xhc3MuCi0gICAgdm9p
ZCBpbml0aWFsaXplUHJvcGVydGllcyhKU0M6OlZNJiwgSlNET01HbG9iYWxPYmplY3QmKSB7IH0K
LSAgICAvLyBNdXN0IGJlIGRlZmluZWQgZm9yIGVhY2ggc3BlY2lhbGl6YXRpb24gY2xhc3MuCi0g
ICAgc3RhdGljIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3QoSlND
OjpKU0dsb2JhbE9iamVjdCosIEpTQzo6Q2FsbEZyYW1lKik7Ci19OwotCi10ZW1wbGF0ZTx0eXBl
bmFtZSBKU0NsYXNzPiBpbmxpbmUgSlNET01OYW1lZENvbnN0cnVjdG9yPEpTQ2xhc3M+KiBKU0RP
TU5hbWVkQ29uc3RydWN0b3I8SlNDbGFzcz46OmNyZWF0ZShKU0M6OlZNJiB2bSwgSlNDOjpTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKLXsKLSAg
ICBKU0RPTU5hbWVkQ29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBKU0M6
OmFsbG9jYXRlQ2VsbDxKU0RPTU5hbWVkQ29uc3RydWN0b3I+KHZtLmhlYXApKSBKU0RPTU5hbWVk
Q29uc3RydWN0b3Ioc3RydWN0dXJlLCBnbG9iYWxPYmplY3QpOwotICAgIGNvbnN0cnVjdG9yLT5m
aW5pc2hDcmVhdGlvbih2bSwgZ2xvYmFsT2JqZWN0KTsKLSAgICByZXR1cm4gY29uc3RydWN0b3I7
Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEpTQ2xhc3M+IGlubGluZSBKU0M6OlN0cnVjdHVyZSog
SlNET01OYW1lZENvbnN0cnVjdG9yPEpTQ2xhc3M+OjpjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYg
dm0sIEpTQzo6SlNHbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3Rv
dHlwZSkKLXsKLSAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgJmdsb2JhbE9i
amVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJl
RmxhZ3MpLCBpbmZvKCkpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBKU0NsYXNzPiBpbmxpbmUg
dm9pZCBKU0RPTU5hbWVkQ29uc3RydWN0b3I8SlNDbGFzcz46OmZpbmlzaENyZWF0aW9uKEpTQzo6
Vk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQotewotICAgIEJhc2U6OmZp
bmlzaENyZWF0aW9uKGdsb2JhbE9iamVjdCk7Ci0gICAgQVNTRVJUKGluaGVyaXRzKHZtLCBpbmZv
KCkpKTsKLSAgICBpbml0aWFsaXplUHJvcGVydGllcyh2bSwgZ2xvYmFsT2JqZWN0KTsKLX0KLQot
dGVtcGxhdGU8dHlwZW5hbWUgSlNDbGFzcz4gaW5saW5lIEpTQzo6Q2FsbERhdGEgSlNET01OYW1l
ZENvbnN0cnVjdG9yPEpTQ2xhc3M+OjpnZXRDb25zdHJ1Y3REYXRhKEpTQzo6SlNDZWxsKikKLXsK
LSAgICBKU0M6OkNhbGxEYXRhIGNvbnN0cnVjdERhdGE7Ci0gICAgY29uc3RydWN0RGF0YS50eXBl
ID0gSlNDOjpDYWxsRGF0YTo6VHlwZTo6TmF0aXZlOwotICAgIGNvbnN0cnVjdERhdGEubmF0aXZl
LmZ1bmN0aW9uID0gY29uc3RydWN0OwotICAgIHJldHVybiBjb25zdHJ1Y3REYXRhOwotfQotCi19
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JKUy5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkocmV2aXNpb24gMjY2NjE5KQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHdvcmtpbmcg
Y29weSkKQEAgLTI3NzcsNyArMjc3Nyw3IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgICMgQ29u
c3RydWN0b3Igb2JqZWN0IGdldHRlcgogICAgIHVubGVzcyAoJGludGVyZmFjZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57Tm9JbnRlcmZhY2VPYmplY3R9KSB7CiAgICAgICAgIHB1c2goQGhlYWRlckNv
bnRlbnQsICIgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1Y3RvcihKU0M6OlZNJiwg
Y29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopO1xuIik7Ci0gICAgICAgIHB1c2goQGhlYWRlckNv
bnRlbnQsICIgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXROYW1lZENvbnN0cnVjdG9yKEpTQzo6
Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7XG4iKSBpZiAkaW50ZXJmYWNlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPntOYW1lZENvbnN0cnVjdG9yfTsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVu
dCwgIiAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldExlZ2FjeUZhY3RvcnlGdW5jdGlvbihKU0M6
OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCopO1xuIikgaWYgJGludGVyZmFjZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57TGVnYWN5RmFjdG9yeUZ1bmN0aW9ufTsKICAgICB9CiAKICAgICAjIFNlcmlh
bGl6ZXIgZnVuY3Rpb24uCkBAIC0zODYyLDEwICszODYyLDEwIEBAIHN1YiBHZW5lcmF0ZVJ1bnRp
bWVFbmFibGVDb25kaXRpb25hbFN0cmkKICAgICAgICAgcHVzaChAY29uanVuY3RzLCAgIiR7bmFt
ZX06OmVuYWJsZWRGb3JDb250ZXh0KCIgLiAkY29udGV4dFJlZiAuICIpIik7CiAgICAgfQogCi0g
ICAgaWYgKCRjb250ZXh0LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDb25zdHJ1Y3RvckVuYWJsZWRC
eVNldHRpbmd9KSB7Ci0gICAgICAgIGFzc2VydCgiTXVzdCBzcGVjaWZ5IHZhbHVlIGZvciBDb25z
dHJ1Y3RvckVuYWJsZWRCeVNldHRpbmcuIikgaWYgJGNvbnRleHQtPmV4dGVuZGVkQXR0cmlidXRl
cy0+e0NvbnN0cnVjdG9yRW5hYmxlZEJ5U2V0dGluZ30gZXEgIlZBTFVFX0lTX01JU1NJTkciOwor
ICAgIGlmICgkY29udGV4dC0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57TGVnYWN5RmFjdG9yeUZ1bmN0
aW9uRW5hYmxlZEJ5U2V0dGluZ30pIHsKKyAgICAgICAgYXNzZXJ0KCJNdXN0IHNwZWNpZnkgdmFs
dWUgZm9yIExlZ2FjeUZhY3RvcnlGdW5jdGlvbkVuYWJsZWRCeVNldHRpbmcuIikgaWYgJGNvbnRl
eHQtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0xlZ2FjeUZhY3RvcnlGdW5jdGlvbkVuYWJsZWRCeVNl
dHRpbmd9IGVxICJWQUxVRV9JU19NSVNTSU5HIjsKIAotICAgICAgICBteSBAc2V0dGluZ3MgPSBz
cGxpdCgvJi8sICRjb250ZXh0LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDb25zdHJ1Y3RvckVuYWJs
ZWRCeVNldHRpbmd9KTsKKyAgICAgICAgbXkgQHNldHRpbmdzID0gc3BsaXQoLyYvLCAkY29udGV4
dC0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57TGVnYWN5RmFjdG9yeUZ1bmN0aW9uRW5hYmxlZEJ5U2V0
dGluZ30pOwogICAgICAgICBmb3JlYWNoIG15ICRzZXR0aW5nIChAc2V0dGluZ3MpIHsKICAgICAg
ICAgICAgIHB1c2goQGNvbmp1bmN0cywgImRvd25jYXN0PERvY3VtZW50Pihqc0Nhc3Q8SlNET01H
bG9iYWxPYmplY3QqPigiIC4gJGdsb2JhbE9iamVjdFB0ciAuICIpLT5zY3JpcHRFeGVjdXRpb25D
b250ZXh0KCkpLT5zZXR0aW5ncygpLiIgLiBUb01ldGhvZE5hbWUoJHNldHRpbmcpIC4gIkVuYWJs
ZWQoKSIpOwogICAgICAgICB9CkBAIC00MjU2LDggKzQyNTYsOCBAQCBzdWIgR2VuZXJhdGVJbXBs
ZW1lbnRhdGlvbgogICAgICAgICBteSAkcHJvdG9DbGFzc05hbWUgPSAiJHtjbGFzc05hbWV9UHJv
dG90eXBlIjsKICAgICAgICAgR2VuZXJhdGVDb25zdHJ1Y3RvckRlZmluaXRpb25zKFxAaW1wbENv
bnRlbnQsICRjbGFzc05hbWUsICRwcm90b0NsYXNzTmFtZSwgJHZpc2libGVJbnRlcmZhY2VOYW1l
LCAkaW50ZXJmYWNlKTsKIAotICAgICAgICBteSAkbmFtZWRDb25zdHJ1Y3RvciA9ICRpbnRlcmZh
Y2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e05hbWVkQ29uc3RydWN0b3J9OwotICAgICAgICBHZW5l
cmF0ZUNvbnN0cnVjdG9yRGVmaW5pdGlvbnMoXEBpbXBsQ29udGVudCwgJGNsYXNzTmFtZSwgJHBy
b3RvQ2xhc3NOYW1lLCAkbmFtZWRDb25zdHJ1Y3RvciwgJGludGVyZmFjZSwgIkdlbmVyYXRpbmdO
YW1lZENvbnN0cnVjdG9yIikgaWYgJG5hbWVkQ29uc3RydWN0b3I7CisgICAgICAgIG15ICRsZWdh
Y3lGYWN0b3J5RnVuY3Rpb24gPSAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntMZWdh
Y3lGYWN0b3J5RnVuY3Rpb259OworICAgICAgICBHZW5lcmF0ZUNvbnN0cnVjdG9yRGVmaW5pdGlv
bnMoXEBpbXBsQ29udGVudCwgJGNsYXNzTmFtZSwgJHByb3RvQ2xhc3NOYW1lLCAkbGVnYWN5RmFj
dG9yeUZ1bmN0aW9uLCAkaW50ZXJmYWNlLCAiR2VuZXJhdGluZ0xlZ2FjeUZhY3RvcnlGdW5jdGlv
biIpIGlmICRsZWdhY3lGYWN0b3J5RnVuY3Rpb247CiAgICAgfQogCiAgICAgIyAtIEFkZCBmdW5j
dGlvbnMgYW5kIGNvbnN0YW50cyB0byBhIGhhc2h0YWJsZSBkZWZpbml0aW9uCkBAIC00NTQ5LDEw
ICs0NTQ5LDEwIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3Rvcjwke2NsYXNzTmFtZX1Db25z
dHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmpl
Y3QpKTtcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7CiAKLSAgICAg
ICAgaWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e05hbWVkQ29uc3RydWN0b3J9
KSB7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIkpTVmFsdWUgJHtjbGFzc05hbWV9
OjpnZXROYW1lZENvbnN0cnVjdG9yKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dClcbiIpOworICAgICAgICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57TGVn
YWN5RmFjdG9yeUZ1bmN0aW9ufSkgeworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJK
U1ZhbHVlICR7Y2xhc3NOYW1lfTo6Z2V0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdClcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICJ7XG4iKTsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVy
biBnZXRET01Db25zdHJ1Y3Rvcjwke2NsYXNzTmFtZX1OYW1lZENvbnN0cnVjdG9yPih2bSwgKmpz
Q2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpO1xuIik7CisgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8JHtjbGFz
c05hbWV9TGVnYWN5RmFjdG9yeUZ1bmN0aW9uPih2bSwgKmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVj
dCo+KGdsb2JhbE9iamVjdCkpO1xuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
In1cblxuIik7CiAgICAgICAgIH0KICAgICB9CkBAIC01MDI0LDE1ICs1MDI0LDE3IEBAIHN1YiBH
ZW5lcmF0ZUF0dHJpYnV0ZUdldHRlckJvZHlEZWZpbml0aW8KICAgICB9IGVsc2lmICgkaXNDb25z
dHJ1Y3RvcikgewogICAgICAgICBteSAkY29uc3RydWN0b3JUeXBlID0gJGF0dHJpYnV0ZS0+dHlw
ZS0+bmFtZTsKICAgICAgICAgJGNvbnN0cnVjdG9yVHlwZSA9fiBzL0NvbnN0cnVjdG9yJC8vOwor
CisgICAgICAgIG15ICRsZWdhY3lGYWN0b3J5RnVuY3Rpb24gPSAoJGNvbnN0cnVjdG9yVHlwZSA9
fiAvTGVnYWN5RmFjdG9yeUZ1bmN0aW9uJC8pID8gIkxlZ2FjeUZhY3RvcnlGdW5jdGlvbiIgOiAi
IjsKKyAgICAgICAgJGxlZ2FjeUZhY3RvcnlGdW5jdGlvbiA9fiBzL0xlZ2FjeUZhY3RvcnlGdW5j
dGlvbiQvLzsKKwogICAgICAgICAjIFdoZW4gQ29uc3RydWN0b3IgYXR0cmlidXRlIGlzIHVzZWQg
YnkgRE9NV2luZG93LmlkbCwgaXQncyBjb3JyZWN0IHRvIHBhc3MgdGhpc09iamVjdCBhcyB0aGUg
Z2xvYmFsIG9iamVjdAogICAgICAgICAjIFdoZW4gSlNET01XcmFwcGVycyBoYXZlIGEgYmFjay1w
b2ludGVyIHRvIHRoZSBnbG9iYWxPYmplY3Qgd2UgY2FuIHBhc3MgdGhpc09iamVjdC0+Z2xvYmFs
T2JqZWN0KCkKICAgICAgICAgaWYgKCRpbnRlcmZhY2UtPnR5cGUtPm5hbWUgZXEgIkRPTVdpbmRv
dyIpIHsKLSAgICAgICAgICAgIG15ICRuYW1lZCA9ICgkY29uc3RydWN0b3JUeXBlID1+IC9OYW1l
ZCQvKSA/ICJOYW1lZCIgOiAiIjsKLSAgICAgICAgICAgICRjb25zdHJ1Y3RvclR5cGUgPX4gcy9O
YW1lZCQvLzsKLSAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICByZXR1cm4gSlMi
IC4gJGNvbnN0cnVjdG9yVHlwZSAuICI6OmdldCR7bmFtZWR9Q29uc3RydWN0b3IoSlNDOjpnZXRW
TSgmbGV4aWNhbEdsb2JhbE9iamVjdCksICZ0aGlzT2JqZWN0KTtcbiIpOworICAgICAgICAgICAg
cHVzaChAJG91dHB1dEFycmF5LCAiICAgIHJldHVybiBKUyIgLiAkY29uc3RydWN0b3JUeXBlIC4g
Ijo6Z2V0JHtsZWdhY3lGYWN0b3J5RnVuY3Rpb259Q29uc3RydWN0b3IoSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCksICZ0aGlzT2JqZWN0KTtcbiIpOwogICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIkpTIiAuICRjb25zdHJ1Y3RvclR5cGUgLiAi
LmgiLCAkY29uZGl0aW9uYWwpOwotICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAg
IHJldHVybiBKUyIgLiAkY29uc3RydWN0b3JUeXBlIC4gIjo6Z2V0Q29uc3RydWN0b3IoSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIHRoaXNPYmplY3QuZ2xvYmFsT2JqZWN0KCkpO1xu
Iik7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgcmV0dXJuIEpTIiAuICRj
b25zdHJ1Y3RvclR5cGUgLiAiOjpnZXQke2xlZ2FjeUZhY3RvcnlGdW5jdGlvbn1Db25zdHJ1Y3Rv
cihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgdGhpc09iamVjdC5nbG9iYWxPYmpl
Y3QoKSk7XG4iKTsKICAgICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgIGlmICgkYXR0cmli
dXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDYWNoZWRBdHRyaWJ1dGV9KSB7CkBAIC01MTgxLDEw
ICs1MTgzLDEwIEBAIHN1YiBHZW5lcmF0ZUF0dHJpYnV0ZVNldHRlckJvZHlEZWZpbml0aW8KICAg
ICB9IGVsc2lmICgkaXNDb25zdHJ1Y3RvcikgewogICAgICAgICBteSAkY29uc3RydWN0b3JUeXBl
ID0gJGF0dHJpYnV0ZS0+dHlwZS0+bmFtZTsKICAgICAgICAgJGNvbnN0cnVjdG9yVHlwZSA9fiBz
L0NvbnN0cnVjdG9yJC8vOwotICAgICAgICAjICRjb25zdHJ1Y3RvclR5cGUgfj0gL0NvbnN0cnVj
dG9yJC8gaW5kaWNhdGVzIHRoYXQgaXQgaXMgTmFtZWRDb25zdHJ1Y3Rvci4KLSAgICAgICAgIyBX
ZSBkbyBub3QgZ2VuZXJhdGUgdGhlIGhlYWRlciBmaWxlIGZvciBOYW1lZENvbnN0cnVjdG9yIG9m
IGNsYXNzIFhYWFgsCi0gICAgICAgICMgc2luY2Ugd2UgZ2VuZXJhdGUgdGhlIE5hbWVkQ29uc3Ry
dWN0b3IgZGVjbGFyYXRpb24gaW50byB0aGUgaGVhZGVyIGZpbGUgb2YgY2xhc3MgWFhYWC4KLSAg
ICAgICAgaWYgKCRjb25zdHJ1Y3RvclR5cGUgbmUgImFueSIgYW5kICRjb25zdHJ1Y3RvclR5cGUg
IX4gL05hbWVkJC8pIHsKKyAgICAgICAgIyAkY29uc3RydWN0b3JUeXBlIH49IC9MZWdhY3lGYWN0
b3J5RnVuY3Rpb24kLyBpbmRpY2F0ZXMgdGhhdCBpdCBpcyBMZWdhY3lGYWN0b3J5RnVuY3Rpb24u
CisgICAgICAgICMgV2UgZG8gbm90IGdlbmVyYXRlIHRoZSBoZWFkZXIgZmlsZSBmb3IgTGVnYWN5
RmFjdG9yeUZ1bmN0aW9uIG9mIGNsYXNzIFhYWFgsCisgICAgICAgICMgc2luY2Ugd2UgZ2VuZXJh
dGUgdGhlIExlZ2FjeUZhY3RvcnlGdW5jdGlvbiBkZWNsYXJhdGlvbiBpbnRvIHRoZSBoZWFkZXIg
ZmlsZSBvZiBjbGFzcyBYWFhYLgorICAgICAgICBpZiAoJGNvbnN0cnVjdG9yVHlwZSBuZSAiYW55
IiBhbmQgJGNvbnN0cnVjdG9yVHlwZSAhfiAvTGVnYWN5RmFjdG9yeUZ1bmN0aW9uJC8pIHsKICAg
ICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJKUyIgLiAkY29uc3RydWN0b3JUeXBlIC4gIi5o
IiwgJGNvbmRpdGlvbmFsKTsKICAgICAgICAgfQogICAgICAgICBteSAkaWQgPSAkYXR0cmlidXRl
LT5uYW1lOwpAQCAtNTkzMiw3ICs1OTM0LDcgQEAgc3ViIEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNr
CiAgICAgfSBlbHNlIHsKICAgICAgICAgJHF1b3RlZEZ1bmN0aW9uTmFtZSA9ICJudWxscHRyIjsK
ICAgICAgICAgdW5sZXNzICgkY2FsbFdpdGgpIHsKLSAgICAgICAgICAgICRjYWxsV2l0aCA9ICRv
cGVyYXRpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NvbnN0cnVjdG9yQ2FsbFdpdGh9OworICAg
ICAgICAgICAgJGNhbGxXaXRoID0gJG9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57TGVn
YWN5RmFjdG9yeUZ1bmN0aW9uQ2FsbFdpdGh9OwogICAgICAgICB9CiAgICAgICAgIHB1c2goQGFy
Z3VtZW50cywgR2VuZXJhdGVDb25zdHJ1Y3RvckNhbGxXaXRoVXNpbmdQb2ludGVycygkY2FsbFdp
dGgsIFxAJG91dHB1dEFycmF5LCAkdmlzaWJsZUludGVyZmFjZU5hbWUsICIqY2FzdGVkVGhpcyIp
KTsKICAgICB9CkBAIC03NDEzLDcgKzc0MTUsNyBAQCBzdWIgR2V0Q29uc3RydWN0b3JUZW1wbGF0
ZUNsYXNzTmFtZQogewogICAgIG15ICRpbnRlcmZhY2UgPSBzaGlmdDsKICAgICByZXR1cm4gIkpT
RE9NQnVpbHRpbkNvbnN0cnVjdG9yIiBpZiBIYXNKU0J1aWx0aW5Db25zdHJ1Y3RvcigkaW50ZXJm
YWNlKTsKLSAgICByZXR1cm4gIkpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlIiBpZiAk
aW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntOYW1lZENvbnN0cnVjdG9yfTsKKyAgICBy
ZXR1cm4gIkpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlIiBpZiAkaW50ZXJmYWNlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPntMZWdhY3lGYWN0b3J5RnVuY3Rpb259OwogICAgIHJldHVybiAi
SlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGUiIHVubGVzcyBJc0NvbnN0cnVjdGFibGUo
JGludGVyZmFjZSk7CiAgICAgcmV0dXJuICJKU0RPTUNvbnN0cnVjdG9yIjsKIH0KQEAgLTc0Mjcs
MjIgKzc0MjksMjIgQEAgc3ViIEdlbmVyYXRlQ29uc3RydWN0b3JEZWNsYXJhdGlvbgogICAgIG15
ICR0ZW1wbGF0ZUNsYXNzTmFtZSA9IEdldENvbnN0cnVjdG9yVGVtcGxhdGVDbGFzc05hbWUoJGlu
dGVyZmFjZSk7CiAKICAgICBBZGRUb0ltcGxJbmNsdWRlcygiJHt0ZW1wbGF0ZUNsYXNzTmFtZX0u
aCIpOwotICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJKU0RPTU5hbWVkQ29uc3RydWN0b3IuaCIpIGlm
ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e05hbWVkQ29uc3RydWN0b3J9OworICAg
IEFkZFRvSW1wbEluY2x1ZGVzKCJKU0RPTUxlZ2FjeUZhY3RvcnlGdW5jdGlvbi5oIikgaWYgJGlu
dGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57TGVnYWN5RmFjdG9yeUZ1bmN0aW9ufTsKIAog
ICAgIHB1c2goQCRvdXRwdXRBcnJheSwgInVzaW5nICRjb25zdHJ1Y3RvckNsYXNzTmFtZSA9ICR0
ZW1wbGF0ZUNsYXNzTmFtZTwkY2xhc3NOYW1lPjtcbiIpOwotICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgInVzaW5nIEpTJHtpbnRlcmZhY2VOYW1lfU5hbWVkQ29uc3RydWN0b3IgPSBKU0RPTU5hbWVk
Q29uc3RydWN0b3I8JGNsYXNzTmFtZT47XG4iKSBpZiAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPntOYW1lZENvbnN0cnVjdG9yfTsKKyAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ1c2lu
ZyBKUyR7aW50ZXJmYWNlTmFtZX1MZWdhY3lGYWN0b3J5RnVuY3Rpb24gPSBKU0RPTUxlZ2FjeUZh
Y3RvcnlGdW5jdGlvbjwkY2xhc3NOYW1lPjtcbiIpIGlmICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0
cmlidXRlcy0+e0xlZ2FjeUZhY3RvcnlGdW5jdGlvbn07CiAgICAgcHVzaChAJG91dHB1dEFycmF5
LCAiXG4iKTsKIH0KIAogc3ViIEdlbmVyYXRlQ29uc3RydWN0b3JEZWZpbml0aW9ucwogewotICAg
IG15ICgkb3V0cHV0QXJyYXksICRjbGFzc05hbWUsICRwcm90b0NsYXNzTmFtZSwgJHZpc2libGVJ
bnRlcmZhY2VOYW1lLCAkaW50ZXJmYWNlLCAkZ2VuZXJhdGluZ05hbWVkQ29uc3RydWN0b3IpID0g
QF87CisgICAgbXkgKCRvdXRwdXRBcnJheSwgJGNsYXNzTmFtZSwgJHByb3RvQ2xhc3NOYW1lLCAk
dmlzaWJsZUludGVyZmFjZU5hbWUsICRpbnRlcmZhY2UsICRnZW5lcmF0aW5nTGVnYWN5RmFjdG9y
eUZ1bmN0aW9uKSA9IEBfOwogCiAgICAgaWYgKElzQ29uc3RydWN0YWJsZSgkaW50ZXJmYWNlKSkg
ewogICAgICAgICBteSBAY29uc3RydWN0b3JzID0gQHskaW50ZXJmYWNlLT5jb25zdHJ1Y3RvcnN9
OwogICAgICAgICBpZiAoQGNvbnN0cnVjdG9ycyA+IDEpIHsKICAgICAgICAgICAgIGZvcmVhY2gg
bXkgJGNvbnN0cnVjdG9yIChAY29uc3RydWN0b3JzKSB7Ci0gICAgICAgICAgICAgICAgR2VuZXJh
dGVDb25zdHJ1Y3RvckRlZmluaXRpb24oJG91dHB1dEFycmF5LCAkY2xhc3NOYW1lLCAkcHJvdG9D
bGFzc05hbWUsICR2aXNpYmxlSW50ZXJmYWNlTmFtZSwgJGludGVyZmFjZSwgJGdlbmVyYXRpbmdO
YW1lZENvbnN0cnVjdG9yLCAkY29uc3RydWN0b3IpOworICAgICAgICAgICAgICAgIEdlbmVyYXRl
Q29uc3RydWN0b3JEZWZpbml0aW9uKCRvdXRwdXRBcnJheSwgJGNsYXNzTmFtZSwgJHByb3RvQ2xh
c3NOYW1lLCAkdmlzaWJsZUludGVyZmFjZU5hbWUsICRpbnRlcmZhY2UsICRnZW5lcmF0aW5nTGVn
YWN5RmFjdG9yeUZ1bmN0aW9uLCAkY29uc3RydWN0b3IpOwogICAgICAgICAgICAgfQogCiAgICAg
ICAgICAgICBteSAkb3ZlcmxvYWRGdW5jdGlvblByZWZpeCA9ICJjb25zdHJ1Y3Qke2NsYXNzTmFt
ZX0iOwpAQCAtNzQ1NywyMyArNzQ1OSwyMyBAQCBzdWIgR2VuZXJhdGVDb25zdHJ1Y3RvckRlZmlu
aXRpb25zCiAKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKICAgICAg
ICAgfSBlbHNpZiAoQGNvbnN0cnVjdG9ycyA9PSAxKSB7Ci0gICAgICAgICAgICBHZW5lcmF0ZUNv
bnN0cnVjdG9yRGVmaW5pdGlvbigkb3V0cHV0QXJyYXksICRjbGFzc05hbWUsICRwcm90b0NsYXNz
TmFtZSwgJHZpc2libGVJbnRlcmZhY2VOYW1lLCAkaW50ZXJmYWNlLCAkZ2VuZXJhdGluZ05hbWVk
Q29uc3RydWN0b3IsICRjb25zdHJ1Y3RvcnNbMF0pOworICAgICAgICAgICAgR2VuZXJhdGVDb25z
dHJ1Y3RvckRlZmluaXRpb24oJG91dHB1dEFycmF5LCAkY2xhc3NOYW1lLCAkcHJvdG9DbGFzc05h
bWUsICR2aXNpYmxlSW50ZXJmYWNlTmFtZSwgJGludGVyZmFjZSwgJGdlbmVyYXRpbmdMZWdhY3lG
YWN0b3J5RnVuY3Rpb24sICRjb25zdHJ1Y3RvcnNbMF0pOwogICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgR2VuZXJhdGVDb25zdHJ1Y3RvckRlZmluaXRpb24oJG91dHB1dEFycmF5LCAkY2xh
c3NOYW1lLCAkcHJvdG9DbGFzc05hbWUsICR2aXNpYmxlSW50ZXJmYWNlTmFtZSwgJGludGVyZmFj
ZSwgJGdlbmVyYXRpbmdOYW1lZENvbnN0cnVjdG9yKTsKKyAgICAgICAgICAgIEdlbmVyYXRlQ29u
c3RydWN0b3JEZWZpbml0aW9uKCRvdXRwdXRBcnJheSwgJGNsYXNzTmFtZSwgJHByb3RvQ2xhc3NO
YW1lLCAkdmlzaWJsZUludGVyZmFjZU5hbWUsICRpbnRlcmZhY2UsICRnZW5lcmF0aW5nTGVnYWN5
RmFjdG9yeUZ1bmN0aW9uKTsKICAgICAgICAgfQogICAgIH0KIAotICAgIEdlbmVyYXRlQ29uc3Ry
dWN0b3JIZWxwZXJNZXRob2RzKCRvdXRwdXRBcnJheSwgJGNsYXNzTmFtZSwgJHByb3RvQ2xhc3NO
YW1lLCAkdmlzaWJsZUludGVyZmFjZU5hbWUsICRpbnRlcmZhY2UsICRnZW5lcmF0aW5nTmFtZWRD
b25zdHJ1Y3Rvcik7CisgICAgR2VuZXJhdGVDb25zdHJ1Y3RvckhlbHBlck1ldGhvZHMoJG91dHB1
dEFycmF5LCAkY2xhc3NOYW1lLCAkcHJvdG9DbGFzc05hbWUsICR2aXNpYmxlSW50ZXJmYWNlTmFt
ZSwgJGludGVyZmFjZSwgJGdlbmVyYXRpbmdMZWdhY3lGYWN0b3J5RnVuY3Rpb24pOwogfQogCiBz
dWIgR2VuZXJhdGVDb25zdHJ1Y3RvckRlZmluaXRpb24KIHsKLSAgICBteSAoJG91dHB1dEFycmF5
LCAkY2xhc3NOYW1lLCAkcHJvdG9DbGFzc05hbWUsICR2aXNpYmxlSW50ZXJmYWNlTmFtZSwgJGlu
dGVyZmFjZSwgJGdlbmVyYXRpbmdOYW1lZENvbnN0cnVjdG9yLCAkb3BlcmF0aW9uKSA9IEBfOwor
ICAgIG15ICgkb3V0cHV0QXJyYXksICRjbGFzc05hbWUsICRwcm90b0NsYXNzTmFtZSwgJHZpc2li
bGVJbnRlcmZhY2VOYW1lLCAkaW50ZXJmYWNlLCAkZ2VuZXJhdGluZ0xlZ2FjeUZhY3RvcnlGdW5j
dGlvbiwgJG9wZXJhdGlvbikgPSBAXzsKIAogICAgIHJldHVybiBpZiBIYXNKU0J1aWx0aW5Db25z
dHJ1Y3RvcigkaW50ZXJmYWNlKTsKIAogICAgIG15ICRpbnRlcmZhY2VOYW1lID0gJGludGVyZmFj
ZS0+dHlwZS0+bmFtZTsKLSAgICBteSAkY29uc3RydWN0b3JDbGFzc05hbWUgPSAkZ2VuZXJhdGlu
Z05hbWVkQ29uc3RydWN0b3IgPyAiJHtjbGFzc05hbWV9TmFtZWRDb25zdHJ1Y3RvciIgOiAiJHtj
bGFzc05hbWV9Q29uc3RydWN0b3IiOworICAgIG15ICRjb25zdHJ1Y3RvckNsYXNzTmFtZSA9ICRn
ZW5lcmF0aW5nTGVnYWN5RmFjdG9yeUZ1bmN0aW9uID8gIiR7Y2xhc3NOYW1lfUxlZ2FjeUZhY3Rv
cnlGdW5jdGlvbiIgOiAiJHtjbGFzc05hbWV9Q29uc3RydWN0b3IiOwogCiAgICAgaWYgKElzQ29u
c3RydWN0YWJsZSgkaW50ZXJmYWNlKSkgewogICAgICAgICBpZiAoSGFzQ3VzdG9tQ29uc3RydWN0
b3IoJGludGVyZmFjZSkpIHsKQEAgLTc0ODIsNyArNzQ4NCw3IEBAIHN1YiBHZW5lcmF0ZUNvbnN0
cnVjdG9yRGVmaW5pdGlvbgogICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIEFT
U0VSVChjYWxsRnJhbWUpO1xuIik7CiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIg
ICAgcmV0dXJuIGNvbnN0cnVjdCR7Y2xhc3NOYW1lfShsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2Fs
bEZyYW1lKTtcbiIpOwogICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAifVxuXG4iKTsK
LSAgICAgICAgIH0gZWxzaWYgKCFIYXNDdXN0b21Db25zdHJ1Y3RvcigkaW50ZXJmYWNlKSAmJiAo
ISRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e05hbWVkQ29uc3RydWN0b3J9IHx8ICRn
ZW5lcmF0aW5nTmFtZWRDb25zdHJ1Y3RvcikpIHsKKyAgICAgICAgIH0gZWxzaWYgKCFIYXNDdXN0
b21Db25zdHJ1Y3RvcigkaW50ZXJmYWNlKSAmJiAoISRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmli
dXRlcy0+e0xlZ2FjeUZhY3RvcnlGdW5jdGlvbn0gfHwgJGdlbmVyYXRpbmdMZWdhY3lGYWN0b3J5
RnVuY3Rpb24pKSB7CiAgICAgICAgICAgICBteSAkaXNPdmVybG9hZGVkID0gJG9wZXJhdGlvbi0+
e292ZXJsb2Fkc30gJiYgQHskb3BlcmF0aW9uLT57b3ZlcmxvYWRzfX0gPiAxOwogICAgICAgICAg
ICAgaWYgKCRpc092ZXJsb2FkZWQpIHsKICAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJy
YXksICJzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGNvbnN0cnVjdCR7Y2xhc3NOYW1lfSRv
cGVyYXRpb24tPntvdmVybG9hZEluZGV4fShKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpXG4iKTsKQEAgLTc1MDYsMTIgKzc1MDgsMTIgQEAg
c3ViIEdlbmVyYXRlQ29uc3RydWN0b3JEZWZpbml0aW9uCiAKICAgICAgICAgICAgIEdlbmVyYXRl
QXJndW1lbnRzQ291bnRDaGVjaygkb3V0cHV0QXJyYXksICRvcGVyYXRpb24sICRpbnRlcmZhY2Us
ICIgICAgIik7CiAKLSAgICAgICAgICAgIG15ICRmdW5jdGlvbkltcGxlbWVudGF0aW9uTmFtZSA9
ICRnZW5lcmF0aW5nTmFtZWRDb25zdHJ1Y3RvciA/ICJjcmVhdGVGb3JKU0NvbnN0cnVjdG9yIiA6
ICJjcmVhdGUiOworICAgICAgICAgICAgbXkgJGZ1bmN0aW9uSW1wbGVtZW50YXRpb25OYW1lID0g
JGdlbmVyYXRpbmdMZWdhY3lGYWN0b3J5RnVuY3Rpb24gPyAiY3JlYXRlRm9ySlNDb25zdHJ1Y3Rv
ciIgOiAiY3JlYXRlIjsKICAgICAgICAgICAgIG15ICRmdW5jdGlvblN0cmluZyA9IEdlbmVyYXRl
UGFyYW1ldGVyc0NoZWNrKCRvdXRwdXRBcnJheSwgJG9wZXJhdGlvbiwgJGludGVyZmFjZSwgJGZ1
bmN0aW9uSW1wbGVtZW50YXRpb25OYW1lLCAiICAgICIpOwogCiAgICAgICAgICAgICBwdXNoKEAk
b3V0cHV0QXJyYXksICIgICAgYXV0byBvYmplY3QgPSAke2Z1bmN0aW9uU3RyaW5nfTtcbiIpOwog
ICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7XG4iKSBpZiAkY29kZUdlbmVyYXRvci0+RXh0
ZW5kZWRBdHRyaWJ1dGVDb250YWlucygkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntD
YWxsV2l0aH0sICJFeGVjU3RhdGUiKTsKLSAgICAgICAgICAgIGlmICgkaW50ZXJmYWNlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPntDb25zdHJ1Y3Rvck1heVRocm93RXhjZXB0aW9ufSB8fCAkb3BlcmF0
aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntNYXlUaHJvd0V4Y2VwdGlvbn0pIHsKKyAgICAgICAg
ICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntMZWdhY3lGYWN0b3J5RnVu
Y3Rpb25NYXlUaHJvd0V4Y2VwdGlvbn0gfHwgJG9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57TWF5VGhyb3dFeGNlcHRpb259KSB7CiAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFy
cmF5LCAiICAgIHN0YXRpY19hc3NlcnQoSXNFeGNlcHRpb25PcjxkZWNsdHlwZShvYmplY3QpPjo6
dmFsdWUpO1xuIik7CiAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHN0
YXRpY19hc3NlcnQoZGVjbHR5cGUob2JqZWN0KTo6UmV0dXJuVHlwZTo6aXNSZWYpO1xuIik7CiAg
ICAgICAgICAgICB9IGVsc2UgewpAQCAtNzUyNiwxMiArNzUyOCwxMiBAQCBzdWIgR2VuZXJhdGVD
b25zdHJ1Y3RvckRlZmluaXRpb24KICAgICAgICAgICAgIG15IEBjb25zdHJ1Y3Rpb25Db252ZXJz
aW9uQXJndW1lbnRzID0gKCk7CiAgICAgICAgICAgICBwdXNoKEBjb25zdHJ1Y3Rpb25Db252ZXJz
aW9uQXJndW1lbnRzLCAiKmxleGljYWxHbG9iYWxPYmplY3QiKTsKICAgICAgICAgICAgIHB1c2go
QGNvbnN0cnVjdGlvbkNvbnZlcnNpb25Bcmd1bWVudHMsICIqY2FzdGVkVGhpcy0+Z2xvYmFsT2Jq
ZWN0KCkiKTsKLSAgICAgICAgICAgIHB1c2goQGNvbnN0cnVjdGlvbkNvbnZlcnNpb25Bcmd1bWVu
dHMsICJ0aHJvd1Njb3BlIikgaWYgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q29u
c3RydWN0b3JNYXlUaHJvd0V4Y2VwdGlvbn0gfHwgJG9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57TWF5VGhyb3dFeGNlcHRpb259OworICAgICAgICAgICAgcHVzaChAY29uc3RydWN0aW9u
Q29udmVyc2lvbkFyZ3VtZW50cywgInRocm93U2NvcGUiKSBpZiAkaW50ZXJmYWNlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPntMZWdhY3lGYWN0b3J5RnVuY3Rpb25NYXlUaHJvd0V4Y2VwdGlvbn0gfHwg
JG9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57TWF5VGhyb3dFeGNlcHRpb259OwogICAg
ICAgICAgICAgcHVzaChAY29uc3RydWN0aW9uQ29udmVyc2lvbkFyZ3VtZW50cywgIldURk1vdmUo
b2JqZWN0KSIpOwogCiAgICAgICAgICAgICAjIEZJWE1FOiB0b0pTTmV3bHlDcmVhdGVkIHNob3Vs
ZCByZXR1cm4gSlNPYmplY3QqIGluc3RlYWQgb2YgSlNWYWx1ZS4KICAgICAgICAgICAgIHB1c2go
QCRvdXRwdXRBcnJheSwgIiAgICBhdXRvIGpzVmFsdWUgPSB0b0pTTmV3bHlDcmVhdGVkPCR7SURM
VHlwZX0+KCIgLiBqb2luKCIsICIsIEBjb25zdHJ1Y3Rpb25Db252ZXJzaW9uQXJndW1lbnRzKSAu
ICIpO1xuIik7Ci0gICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pO1xuIikgaWYgJGludGVyZmFjZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57Q29uc3RydWN0b3JNYXlUaHJvd0V4Y2VwdGlvbn0gfHwgJG9wZXJhdGlvbi0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57TWF5VGhyb3dFeGNlcHRpb259OworICAgICAgICAgICAgcHVz
aChAJG91dHB1dEFycmF5LCAiICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9
KTtcbiIpIGlmICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0xlZ2FjeUZhY3RvcnlG
dW5jdGlvbk1heVRocm93RXhjZXB0aW9ufSB8fCAkb3BlcmF0aW9uLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPntNYXlUaHJvd0V4Y2VwdGlvbn07CiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXks
ICIgICAgc2V0U3ViY2xhc3NTdHJ1Y3R1cmVJZk5lZWRlZDwke2ltcGxUeXBlfT4obGV4aWNhbEds
b2JhbE9iamVjdCwgY2FsbEZyYW1lLCBhc09iamVjdChqc1ZhbHVlKSk7XG4iKTsKICAgICAgICAg
ICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIHsgfSk7XG4iKTsKICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVmFsdWUpO1xuIik7CkBAIC03NjAyLDkgKzc2MDQsOSBAQCBz
dWIgR2V0UnVudGltZUVuYWJsZWRTdGF0aWNQcm9wZXJ0aWVzCiAKIHN1YiBHZW5lcmF0ZUNvbnN0
cnVjdG9ySGVscGVyTWV0aG9kcwogewotICAgIG15ICgkb3V0cHV0QXJyYXksICRjbGFzc05hbWUs
ICRwcm90b0NsYXNzTmFtZSwgJHZpc2libGVJbnRlcmZhY2VOYW1lLCAkaW50ZXJmYWNlLCAkZ2Vu
ZXJhdGluZ05hbWVkQ29uc3RydWN0b3IpID0gQF87CisgICAgbXkgKCRvdXRwdXRBcnJheSwgJGNs
YXNzTmFtZSwgJHByb3RvQ2xhc3NOYW1lLCAkdmlzaWJsZUludGVyZmFjZU5hbWUsICRpbnRlcmZh
Y2UsICRnZW5lcmF0aW5nTGVnYWN5RmFjdG9yeUZ1bmN0aW9uKSA9IEBfOwogCi0gICAgbXkgJGNv
bnN0cnVjdG9yQ2xhc3NOYW1lID0gJGdlbmVyYXRpbmdOYW1lZENvbnN0cnVjdG9yID8gIiR7Y2xh
c3NOYW1lfU5hbWVkQ29uc3RydWN0b3IiIDogIiR7Y2xhc3NOYW1lfUNvbnN0cnVjdG9yIjsKKyAg
ICBteSAkY29uc3RydWN0b3JDbGFzc05hbWUgPSAkZ2VuZXJhdGluZ0xlZ2FjeUZhY3RvcnlGdW5j
dGlvbiA/ICIke2NsYXNzTmFtZX1MZWdhY3lGYWN0b3J5RnVuY3Rpb24iIDogIiR7Y2xhc3NOYW1l
fUNvbnN0cnVjdG9yIjsKICAgICBteSAkbGVhc3RDb25zdHJ1Y3Rvckxlbmd0aCA9IDA7CiAgICAg
aWYgKEB7JGludGVyZmFjZS0+Y29uc3RydWN0b3JzfSA+IDApIHsKICAgICAgICAgJGxlYXN0Q29u
c3RydWN0b3JMZW5ndGggPSAyNTU7CkBAIC03NjIzLDcgKzc2MjUsNyBAQCBzdWIgR2VuZXJhdGVD
b25zdHJ1Y3RvckhlbHBlck1ldGhvZHMKIAogICAgIGFzc2VydCgiQW4gaW50ZXJmYWNlIGNhbm5v
dCBpbmhlcml0IGZyb20gYW5vdGhlciBpbnRlcmZhY2UgdGhhdCBpcyBtYXJrZWQgYXMgW05vSW50
ZXJmYWNlT2JqZWN0XSIpIGlmICRpbnRlcmZhY2UtPnBhcmVudFR5cGUgJiYgJGNvZGVHZW5lcmF0
b3ItPkdldEludGVyZmFjZUV4dGVuZGVkQXR0cmlidXRlc0Zyb21OYW1lKCRpbnRlcmZhY2UtPnBh
cmVudFR5cGUtPm5hbWUpLT57Tm9JbnRlcmZhY2VPYmplY3R9OwogCi0gICAgaWYgKCEkZ2VuZXJh
dGluZ05hbWVkQ29uc3RydWN0b3IgYW5kICRpbnRlcmZhY2UtPnBhcmVudFR5cGUpIHsKKyAgICBp
ZiAoISRnZW5lcmF0aW5nTGVnYWN5RmFjdG9yeUZ1bmN0aW9uIGFuZCAkaW50ZXJmYWNlLT5wYXJl
bnRUeXBlKSB7CiAgICAgICAgIG15ICRwYXJlbnRDbGFzc05hbWUgPSAiSlMiIC4gJGludGVyZmFj
ZS0+cGFyZW50VHlwZS0+bmFtZTsKICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHJl
dHVybiAke3BhcmVudENsYXNzTmFtZX06OmdldENvbnN0cnVjdG9yKHZtLCAmZ2xvYmFsT2JqZWN0
KTtcbiIpOwogICAgIH0gZWxzZSB7CkBAIC03NjUxLDcgKzc2NTMsNyBAQCBzdWIgR2VuZXJhdGVD
b25zdHJ1Y3RvckhlbHBlck1ldGhvZHMKICAgICBhc3NlcnQoImpzTm9udHJpdmlhbFN0cmluZygp
IHJlcXVpcmVzIHN0cmluZ3MgdHdvIG9yIG1vcmUgY2hhcmFjdGVycyBsb25nIikgaWYgbGVuZ3Ro
KCR2aXNpYmxlSW50ZXJmYWNlTmFtZSkgPCAyOwogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAg
ICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmlu
Zyh2bSwgXCIkdmlzaWJsZUludGVyZmFjZU5hbWVcIl9zKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7XG4iKTsKIAot
ICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDb25zdHJ1Y3RvckVuYWJs
ZWRCeVNldHRpbmd9KSB7CisgICAgaWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+
e0xlZ2FjeUZhY3RvcnlGdW5jdGlvbkVuYWJsZWRCeVNldHRpbmd9KSB7CiAgICAgICAgIG15ICRy
dW50aW1lRW5hYmxlQ29uZGl0aW9uYWxTdHJpbmcgPSBHZW5lcmF0ZVJ1bnRpbWVFbmFibGVDb25k
aXRpb25hbFN0cmluZygkaW50ZXJmYWNlLCAkaW50ZXJmYWNlLCAiJmdsb2JhbE9iamVjdCIpOwog
ICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgaW50IGNvbnN0cnVjdG9yTGVuZ3RoID0g
JHtsZWFzdENvbnN0cnVjdG9yTGVuZ3RofTtcbiIpOwogICAgICAgICBwdXNoKEAkb3V0cHV0QXJy
YXksICIgICAgaWYgKCEke3J1bnRpbWVFbmFibGVDb25kaXRpb25hbFN0cmluZ30pXG4iKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMQXR0cmlidXRlcy5qc29uCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMQXR0cmlidXRl
cy5qc29uCShyZXZpc2lvbiAyNjY2MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0lETEF0dHJpYnV0ZXMuanNvbgkod29ya2luZyBjb3B5KQpAQCAtNzIsMjUgKzcyLDYgQEAK
ICAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImludGVyZmFjZSJdLAogICAgICAgICAg
ICAgInZhbHVlcyI6IFsiKiJdCiAgICAgICAgIH0sCi0gICAgICAgICJDb25zdHJ1Y3RvciI6IHsK
LSAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImludGVyZmFjZSJdLAotICAgICAgICAg
ICAgInN0YW5kYXJkIjogewotICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9oZXljYW0u
Z2l0aHViLmlvL3dlYmlkbC8jQ29uc3RydWN0b3IiCi0gICAgICAgICAgICB9Ci0gICAgICAgIH0s
Ci0gICAgICAgICJDb25zdHJ1Y3RvckNhbGxXaXRoIjogewotICAgICAgICAgICAgImNvbnRleHRz
QWxsb3dlZCI6IFsiaW50ZXJmYWNlIl0sCi0gICAgICAgICAgICAidmFsdWVzIjogWyJEb2N1bWVu
dCIsICJFeGVjU3RhdGUiLCAiUnVudGltZUZsYWdzIiwgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQi
XSwKLSAgICAgICAgICAgICJzdXBwb3J0c0Nvbmp1bmN0aW9uIjogdHJ1ZQotICAgICAgICB9LAot
ICAgICAgICAiQ29uc3RydWN0b3JFbmFibGVkQnlTZXR0aW5nIjogewotICAgICAgICAgICAgImNv
bnRleHRzQWxsb3dlZCI6IFsiYXR0cmlidXRlIiwgImludGVyZmFjZSJdLAotICAgICAgICAgICAg
InZhbHVlcyI6IFsiKiJdLAotICAgICAgICAgICAgInN1cHBvcnRzQ29uanVuY3Rpb24iOiB0cnVl
Ci0gICAgICAgIH0sCi0gICAgICAgICJDb25zdHJ1Y3Rvck1heVRocm93RXhjZXB0aW9uIjogewot
ICAgICAgICAgICAgImNvbnRleHRzQWxsb3dlZCI6IFsiaW50ZXJmYWNlIl0KLSAgICAgICAgfSwK
ICAgICAgICAgIkNvbnRleHRBbGxvd3NNZWRpYURldmljZXMiOiB7CiAgICAgICAgICAgICAiY29u
dGV4dHNBbGxvd2VkIjogWyJhdHRyaWJ1dGUiXQogICAgICAgICB9LApAQCAtMjkzLDYgKzI3NCwy
NiBAQAogICAgICAgICAiTGVnYWN5Q2FsbGVyIjogewogICAgICAgICAgICAgImNvbnRleHRzQWxs
b3dlZCI6IFsib3BlcmF0aW9uIl0KICAgICAgICAgfSwKKyAgICAgICAgIkxlZ2FjeUZhY3RvcnlG
dW5jdGlvbiI6IHsKKyAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImludGVyZmFjZSJd
LAorICAgICAgICAgICAgInZhbHVlcyI6IFsiKiJdLAorICAgICAgICAgICAgInN0YW5kYXJkIjog
eworICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlk
bC8jTGVnYWN5RmFjdG9yeUZ1bmN0aW9uIgorICAgICAgICAgICAgfQorICAgICAgICB9LAorICAg
ICAgICAiTGVnYWN5RmFjdG9yeUZ1bmN0aW9uQ2FsbFdpdGgiOiB7CisgICAgICAgICAgICAiY29u
dGV4dHNBbGxvd2VkIjogWyJpbnRlcmZhY2UiXSwKKyAgICAgICAgICAgICJ2YWx1ZXMiOiBbIkRv
Y3VtZW50IiwgIkV4ZWNTdGF0ZSIsICJSdW50aW1lRmxhZ3MiLCAiU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCJdLAorICAgICAgICAgICAgInN1cHBvcnRzQ29uanVuY3Rpb24iOiB0cnVlCisgICAgICAg
IH0sCisgICAgICAgICJMZWdhY3lGYWN0b3J5RnVuY3Rpb25FbmFibGVkQnlTZXR0aW5nIjogewor
ICAgICAgICAgICAgImNvbnRleHRzQWxsb3dlZCI6IFsiYXR0cmlidXRlIiwgImludGVyZmFjZSJd
LAorICAgICAgICAgICAgInZhbHVlcyI6IFsiKiJdLAorICAgICAgICAgICAgInN1cHBvcnRzQ29u
anVuY3Rpb24iOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJMZWdhY3lGYWN0b3J5RnVuY3Rp
b25NYXlUaHJvd0V4Y2VwdGlvbiI6IHsKKyAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBb
ImludGVyZmFjZSJdCisgICAgICAgIH0sCiAgICAgICAgICJMZWdhY3lVbmVudW1lcmFibGVOYW1l
ZFByb3BlcnRpZXMiOiB7CiAgICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJpbnRlcmZh
Y2UiXSwKICAgICAgICAgICAgICJzdGFuZGFyZCI6IHsKQEAgLTMyNSwxMyArMzI2LDYgQEAKICAg
ICAgICAgIk1heVRocm93RXhjZXB0aW9uIjogewogICAgICAgICAgICAgImNvbnRleHRzQWxsb3dl
ZCI6IFsiYXR0cmlidXRlIiwgIm9wZXJhdGlvbiJdCiAgICAgICAgIH0sCi0gICAgICAgICJOYW1l
ZENvbnN0cnVjdG9yIjogewotICAgICAgICAgICAgImNvbnRleHRzQWxsb3dlZCI6IFsiaW50ZXJm
YWNlIl0sCi0gICAgICAgICAgICAidmFsdWVzIjogWyIqIl0sCi0gICAgICAgICAgICAic3RhbmRh
cmQiOiB7Ci0gICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2hleWNhbS5naXRodWIuaW8v
d2ViaWRsLyNOYW1lZENvbnN0cnVjdG9yIgotICAgICAgICAgICAgfQotICAgICAgICB9LAogICAg
ICAgICAiTmV3SW1wdXJlUHJvcGVydHlGaXJlc1dhdGNocG9pbnRzIjogewogICAgICAgICAgICAg
ImNvbnRleHRzQWxsb3dlZCI6IFsiaW50ZXJmYWNlIl0KICAgICAgICAgfSwKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMUGFyc2VyLnBtCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMUGFyc2VyLnBtCShyZXZpc2lvbiAyNjY2
MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETFBhcnNlci5wbQkod29y
a2luZyBjb3B5KQpAQCAtMzM4MCwxNiArMzM4MCwxNiBAQCBzdWIgYXBwbHlFeHRlbmRlZEF0dHJp
YnV0ZUxpc3QKICAgICBteSAkaW50ZXJmYWNlID0gc2hpZnQ7CiAgICAgbXkgJGV4dGVuZGVkQXR0
cmlidXRlTGlzdCA9IHNoaWZ0OwogCi0gICAgaWYgKGRlZmluZWQgJGV4dGVuZGVkQXR0cmlidXRl
TGlzdC0+eyJOYW1lZENvbnN0cnVjdG9yIn0pIHsKKyAgICBpZiAoZGVmaW5lZCAkZXh0ZW5kZWRB
dHRyaWJ1dGVMaXN0LT57IkxlZ2FjeUZhY3RvcnlGdW5jdGlvbiJ9KSB7CiAgICAgICAgIG15ICRu
ZXdEYXRhTm9kZSA9IElETE9wZXJhdGlvbi0+bmV3KCk7CiAgICAgICAgICRuZXdEYXRhTm9kZS0+
aXNDb25zdHJ1Y3RvcigxKTsKLSAgICAgICAgJG5ld0RhdGFOb2RlLT5uYW1lKCJOYW1lZENvbnN0
cnVjdG9yIik7CisgICAgICAgICRuZXdEYXRhTm9kZS0+bmFtZSgiTGVnYWN5RmFjdG9yeUZ1bmN0
aW9uIik7CiAgICAgICAgICRuZXdEYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzKCRleHRlbmRl
ZEF0dHJpYnV0ZUxpc3QpOwotICAgICAgICBteSAlYXR0cmlidXRlcyA9ICV7JGV4dGVuZGVkQXR0
cmlidXRlTGlzdC0+eyJOYW1lZENvbnN0cnVjdG9yIn19OworICAgICAgICBteSAlYXR0cmlidXRl
cyA9ICV7JGV4dGVuZGVkQXR0cmlidXRlTGlzdC0+eyJMZWdhY3lGYWN0b3J5RnVuY3Rpb24ifX07
CiAgICAgICAgIG15IEBhdHRyaWJ1dGVLZXlzID0ga2V5cyAoJWF0dHJpYnV0ZXMpOwogICAgICAg
ICBteSAkY29uc3RydWN0b3JOYW1lID0gJGF0dHJpYnV0ZUtleXNbMF07CiAgICAgICAgIHB1c2go
QHskbmV3RGF0YU5vZGUtPmFyZ3VtZW50c30sIEB7JGF0dHJpYnV0ZXN7JGNvbnN0cnVjdG9yTmFt
ZX19KTsKLSAgICAgICAgJGV4dGVuZGVkQXR0cmlidXRlTGlzdC0+eyJOYW1lZENvbnN0cnVjdG9y
In0gPSAkY29uc3RydWN0b3JOYW1lOworICAgICAgICAkZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0LT57
IkxlZ2FjeUZhY3RvcnlGdW5jdGlvbiJ9ID0gJGNvbnN0cnVjdG9yTmFtZTsKICAgICAgICAgcHVz
aChAeyRpbnRlcmZhY2UtPmNvbnN0cnVjdG9yc30sICRuZXdEYXRhTm9kZSk7CiAgICAgfQogICAg
IApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9wcmVwcm9jZXNzLWlkbHMu
cGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9wcmVwcm9j
ZXNzLWlkbHMucGwJKHJldmlzaW9uIDI2NjYxOSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvcHJlcHJvY2Vzcy1pZGxzLnBsCSh3b3JraW5nIGNvcHkpCkBAIC0zMTIsNyArMzEy
LDcgQEAgc3ViIEdlbmVyYXRlQ29uc3RydWN0b3JBdHRyaWJ1dGVzCiAgICAgICBuZXh0IHVubGVz
cyAoJGF0dHJpYnV0ZU5hbWUgZXEgIkNvbmRpdGlvbmFsIiB8fCAkYXR0cmlidXRlTmFtZSBlcSAi
RW5hYmxlZEF0UnVudGltZSIgfHwgJGF0dHJpYnV0ZU5hbWUgZXEgIkVuYWJsZWRGb3JXb3JsZCIK
ICAgICAgICAgfHwgJGF0dHJpYnV0ZU5hbWUgZXEgIkVuYWJsZWRCeVNldHRpbmciIHx8ICRhdHRy
aWJ1dGVOYW1lIGVxICJTZWN1cmVDb250ZXh0IiB8fCAkYXR0cmlidXRlTmFtZSBlcSAiUHJpdmF0
ZUlkZW50aWZpZXIiCiAgICAgICAgIHx8ICRhdHRyaWJ1dGVOYW1lIGVxICJQdWJsaWNJZGVudGlm
aWVyIiB8fCAkYXR0cmlidXRlTmFtZSBlcSAiRGlzYWJsZWRCeVF1aXJrIiB8fCAkYXR0cmlidXRl
TmFtZSBlcSAiRW5hYmxlZEJ5UXVpcmsiCi0gICAgICAgIHx8ICRhdHRyaWJ1dGVOYW1lIGVxICJF
bmFibGVkRm9yQ29udGV4dCIgfHwgJGF0dHJpYnV0ZU5hbWUgZXEgIkN1c3RvbUVuYWJsZWQiKSB8
fCAkYXR0cmlidXRlTmFtZSBlcSAiQ29uc3RydWN0b3JFbmFibGVkQnlTZXR0aW5nIjsKKyAgICAg
ICAgfHwgJGF0dHJpYnV0ZU5hbWUgZXEgIkVuYWJsZWRGb3JDb250ZXh0IiB8fCAkYXR0cmlidXRl
TmFtZSBlcSAiQ3VzdG9tRW5hYmxlZCIpIHx8ICRhdHRyaWJ1dGVOYW1lIGVxICJMZWdhY3lGYWN0
b3J5RnVuY3Rpb25FbmFibGVkQnlTZXR0aW5nIjsKICAgICAgIG15ICRleHRlbmRlZEF0dHJpYnV0
ZSA9ICRhdHRyaWJ1dGVOYW1lOwogICAgICAgJGV4dGVuZGVkQXR0cmlidXRlIC49ICI9IiAuICRl
eHRlbmRlZEF0dHJpYnV0ZXMtPnskYXR0cmlidXRlTmFtZX0gdW5sZXNzICRleHRlbmRlZEF0dHJp
YnV0ZXMtPnskYXR0cmlidXRlTmFtZX0gZXEgIlZBTFVFX0lTX01JU1NJTkciOwogICAgICAgcHVz
aChAZXh0ZW5kZWRBdHRyaWJ1dGVzTGlzdCwgJGV4dGVuZGVkQXR0cmlidXRlKTsKQEAgLTMyMywx
NCArMzIzLDE0IEBAIHN1YiBHZW5lcmF0ZUNvbnN0cnVjdG9yQXR0cmlidXRlcwogICAgICRpbnRl
cmZhY2VOYW1lID0gJGV4dGVuZGVkQXR0cmlidXRlcy0+eyJJbnRlcmZhY2VOYW1lIn0gaWYgJGV4
dGVuZGVkQXR0cmlidXRlcy0+eyJJbnRlcmZhY2VOYW1lIn07CiAgICAgJGNvZGUgLj0gImF0dHJp
YnV0ZSAiIC4gJG9yaWdpbmFsSW50ZXJmYWNlTmFtZSAuICJDb25zdHJ1Y3RvciAkaW50ZXJmYWNl
TmFtZTtcbiI7CiAKLSAgICAjIEluIGFkZGl0aW9uIHRvIHRoZSByZWd1bGFyIHByb3BlcnR5LCBm
b3IgZXZlcnkgW05hbWVkQ29uc3RydWN0b3JdIGV4dGVuZGVkIGF0dHJpYnV0ZSBvbiBhbiBpbnRl
cmZhY2UsCisgICAgIyBJbiBhZGRpdGlvbiB0byB0aGUgcmVndWxhciBwcm9wZXJ0eSwgZm9yIGV2
ZXJ5IFtMZWdhY3lGYWN0b3J5RnVuY3Rpb25dIGV4dGVuZGVkIGF0dHJpYnV0ZSBvbiBhbiBpbnRl
cmZhY2UsCiAgICAgIyBhIGNvcnJlc3BvbmRpbmcgcHJvcGVydHkgTVVTVCBleGlzdCBvbiB0aGUg
RUNNQVNjcmlwdCBnbG9iYWwgb2JqZWN0LgotICAgIGlmICgkZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
Ik5hbWVkQ29uc3RydWN0b3IifSkgewotICAgICAgICBteSAkY29uc3RydWN0b3JOYW1lID0gJGV4
dGVuZGVkQXR0cmlidXRlcy0+eyJOYW1lZENvbnN0cnVjdG9yIn07CisgICAgaWYgKCRleHRlbmRl
ZEF0dHJpYnV0ZXMtPnsiTGVnYWN5RmFjdG9yeUZ1bmN0aW9uIn0pIHsKKyAgICAgICAgbXkgJGNv
bnN0cnVjdG9yTmFtZSA9ICRleHRlbmRlZEF0dHJpYnV0ZXMtPnsiTGVnYWN5RmFjdG9yeUZ1bmN0
aW9uIn07CiAgICAgICAgICRjb25zdHJ1Y3Rvck5hbWUgPX4gcy9cKC4qLy9nOyAjIEV4dHJhY3Qg
ZnVuY3Rpb24gbmFtZS4KICAgICAgICAgJGNvZGUgLj0gIiAgICAiOwogICAgICAgICAkY29kZSAu
PSAiWyIgLiBqb2luKCcsICcsIEBleHRlbmRlZEF0dHJpYnV0ZXNMaXN0KSAuICJdICIgaWYgQGV4
dGVuZGVkQXR0cmlidXRlc0xpc3Q7Ci0gICAgICAgICRjb2RlIC49ICJhdHRyaWJ1dGUgIiAuICRv
cmlnaW5hbEludGVyZmFjZU5hbWUgLiAiTmFtZWRDb25zdHJ1Y3RvciAkY29uc3RydWN0b3JOYW1l
O1xuIjsKKyAgICAgICAgJGNvZGUgLj0gImF0dHJpYnV0ZSAiIC4gJG9yaWdpbmFsSW50ZXJmYWNl
TmFtZSAuICJMZWdhY3lGYWN0b3J5RnVuY3Rpb25Db25zdHJ1Y3RvciAkY29uc3RydWN0b3JOYW1l
O1xuIjsKICAgICB9CiAgICAgCiAgICAgbXkgJHdpbmRvd0FsaWFzZXNDb2RlOwpJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0JpbmRpbmdUZXN0R2xvYmFsQ29uc3Ry
dWN0b3JzLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvQmluZGluZ1Rlc3RHbG9iYWxDb25zdHJ1Y3RvcnMuaWRsCShyZXZpc2lvbiAyNjY2MTkp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQmluZGluZ1Rlc3RHbG9i
YWxDb25zdHJ1Y3RvcnMuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNCwxMiArMjQsMTIgQEAgcGFy
dGlhbCBpbnRlcmZhY2UgVGVzdEdsb2JhbE9iamVjdCB7CiAgICAgYXR0cmlidXRlIFRlc3RJbnRl
cmZhY2VMZWFkaW5nVW5kZXJzY29yZUNvbnN0cnVjdG9yIFRlc3RJbnRlcmZhY2VMZWFkaW5nVW5k
ZXJzY29yZTsKICAgICBhdHRyaWJ1dGUgVGVzdEl0ZXJhYmxlQ29uc3RydWN0b3IgVGVzdEl0ZXJh
YmxlOwogICAgIGF0dHJpYnV0ZSBUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3RvciBU
ZXN0SlNCdWlsdGluQ29uc3RydWN0b3I7CisgICAgYXR0cmlidXRlIFRlc3RMZWdhY3lGYWN0b3J5
RnVuY3Rpb25Db25zdHJ1Y3RvciBUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uOworICAgIGF0dHJp
YnV0ZSBUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uTGVnYWN5RmFjdG9yeUZ1bmN0aW9uQ29uc3Ry
dWN0b3IgQXVkaW87CiAgICAgYXR0cmlidXRlIFRlc3RNYXBMaWtlQ29uc3RydWN0b3IgVGVzdE1h
cExpa2U7CiAgICAgYXR0cmlidXRlIFRlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZp
ZXJDb25zdHJ1Y3RvciBUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyOwogICAg
IGF0dHJpYnV0ZSBUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb25Db25z
dHJ1Y3RvciBUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb247CiAgICAg
YXR0cmlidXRlIFRlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllckNvbnN0cnVj
dG9yIFRlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllcjsKLSAgICBhdHRyaWJ1
dGUgVGVzdE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1Y3RvciBUZXN0TmFtZWRDb25zdHJ1Y3RvcjsK
LSAgICBhdHRyaWJ1dGUgVGVzdE5hbWVkQ29uc3RydWN0b3JOYW1lZENvbnN0cnVjdG9yIEF1ZGlv
OwogICAgIGF0dHJpYnV0ZSBUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyQ29uc3RydWN0b3Ig
VGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllcjsKICAgICBhdHRyaWJ1dGUgVGVzdE5hbWVkRGVs
ZXRlclRocm93aW5nRXhjZXB0aW9uQ29uc3RydWN0b3IgVGVzdE5hbWVkRGVsZXRlclRocm93aW5n
RXhjZXB0aW9uOwogICAgIGF0dHJpYnV0ZSBUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXJD
b25zdHJ1Y3RvciBUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXI7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvU3VwcGxlbWVudGFsRGVwZW5kZW5jaWVzLmRl
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvU3Vw
cGxlbWVudGFsRGVwZW5kZW5jaWVzLmRlcAkocmV2aXNpb24gMjY2NjE5KQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1N1cHBsZW1lbnRhbERlcGVuZGVuY2llcy5kZXAJ
KHdvcmtpbmcgY29weSkKQEAgLTExMCw2ICsxMTAsOSBAQCBXZWJET01UZXN0SXRlcmFibGUuaDog
CiBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5oOiAKIERPTVRlc3RKU0J1aWx0aW5Db25zdHJ1
Y3Rvci5oOiAKIFdlYkRPTVRlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5oOiAKK0pTVGVzdExlZ2Fj
eUZhY3RvcnlGdW5jdGlvbi5oOiAKK0RPTVRlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24uaDogCitX
ZWJET01UZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uLmg6IAogSlNUZXN0TWFwTGlrZS5oOiAKIERP
TVRlc3RNYXBMaWtlLmg6IAogV2ViRE9NVGVzdE1hcExpa2UuaDogCkBAIC0xMjIsOSArMTI1LDYg
QEAgV2ViRE9NVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRQogSlNUZXN0TmFtZWRB
bmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXIuaDogCiBET01UZXN0TmFtZWRBbmRJbmRleGVk
U2V0dGVyV2l0aElkZW50aWZpZXIuaDogCiBXZWJET01UZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVy
V2l0aElkZW50aWZpZXIuaDogCi1KU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmg6IAotRE9NVGVzdE5h
bWVkQ29uc3RydWN0b3IuaDogCi1XZWJET01UZXN0TmFtZWRDb25zdHJ1Y3Rvci5oOiAKIEpTVGVz
dE5hbWVkRGVsZXRlck5vSWRlbnRpZmllci5oOiAKIERPTVRlc3ROYW1lZERlbGV0ZXJOb0lkZW50
aWZpZXIuaDogCiBXZWJET01UZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyLmg6IApJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RMZWdhY3lGYWN0b3J5RnVu
Y3Rpb24uaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9UZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uLmlkbAkobm9uZXhpc3RlbnQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlv
bi5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzOCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zdHJBcmcsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9y
IHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMg
SVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVzdHJBcmcsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQor
ICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvLyBUaGlzIElETCBmaWxlIGlz
IGZvciB0ZXN0aW5nIHRoZSBiaW5kaW5ncyBjb2RlIGdlbmVyYXRvciBhbmQgZm9yIHRyYWNraW5n
CisvLyBjaGFuZ2VzIGluIGl0cyBvdXB1dC4KK1sKKyAgICBBY3RpdmVET01PYmplY3QsCisgICAg
TGVnYWN5RmFjdG9yeUZ1bmN0aW9uPUF1ZGlvKERPTVN0cmluZyBzdHIxLCBvcHRpb25hbCBET01T
dHJpbmcgc3RyMiA9ICJkZWZhdWx0U3RyaW5nIiwgb3B0aW9uYWwgRE9NU3RyaW5nIHN0cjMpLAor
ICAgIExlZ2FjeUZhY3RvcnlGdW5jdGlvbkNhbGxXaXRoPURvY3VtZW50LAorICAgIExlZ2FjeUZh
Y3RvcnlGdW5jdGlvbk1heVRocm93RXhjZXB0aW9uCitdIGludGVyZmFjZSBUZXN0TGVnYWN5RmFj
dG9yeUZ1bmN0aW9uIHsKK307CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVGVzdE5hbWVkQ29uc3RydWN0b3IuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0TmFtZWRDb25zdHJ1Y3Rvci5pZGwJKHJldmlz
aW9uIDI2NjYxOSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0
TmFtZWRDb25zdHJ1Y3Rvci5pZGwJKG5vbmV4aXN0ZW50KQpAQCAtMSwzNyArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtc3Ry
QXJnLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIElu
Yy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAg
ZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBD
T05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFc3RyQXJnLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAq
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
Ci0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotLy8g
VGhpcyBJREwgZmlsZSBpcyBmb3IgdGVzdGluZyB0aGUgYmluZGluZ3MgY29kZSBnZW5lcmF0b3Ig
YW5kIGZvciB0cmFja2luZwotLy8gY2hhbmdlcyBpbiBpdHMgb3VwdXQuCi1bCi0gICAgQWN0aXZl
RE9NT2JqZWN0LAotICAgIE5hbWVkQ29uc3RydWN0b3I9QXVkaW8oRE9NU3RyaW5nIHN0cjEsIG9w
dGlvbmFsIERPTVN0cmluZyBzdHIyID0gImRlZmF1bHRTdHJpbmciLCBvcHRpb25hbCBET01TdHJp
bmcgc3RyMyksCi0gICAgQ29uc3RydWN0b3JDYWxsV2l0aD1Eb2N1bWVudCwKLSAgICBDb25zdHJ1
Y3Rvck1heVRocm93RXhjZXB0aW9uCi1dIGludGVyZmFjZSBUZXN0TmFtZWRDb25zdHJ1Y3RvciB7
Ci19OwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEdsb2JhbE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5jcHAJKHJldmlzaW9uIDI2NjYxOSkK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxP
YmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NywxMiArNTcsMTIgQEAKICNpbmNsdWRlICJK
U1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZS5oIgogI2luY2x1ZGUgIkpTVGVzdEl0ZXJh
YmxlLmgiCiAjaW5jbHVkZSAiSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuaCIKKyNpbmNsdWRl
ICJKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU1Rlc3RMZWdhY3lG
YWN0b3J5RnVuY3Rpb25MZWdhY3lGYWN0b3J5RnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU1Rlc3RN
YXBMaWtlLmgiCiAjaW5jbHVkZSAiSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlm
aWVyLmgiCiAjaW5jbHVkZSAiSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNl
cHRpb24uaCIKICNpbmNsdWRlICJKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRp
Zmllci5oIgotI2luY2x1ZGUgIkpTVGVzdE5hbWVkQ29uc3RydWN0b3IuaCIKLSNpbmNsdWRlICJK
U1Rlc3ROYW1lZENvbnN0cnVjdG9yTmFtZWQuaCIKICNpbmNsdWRlICJKU1Rlc3ROYW1lZERlbGV0
ZXJOb0lkZW50aWZpZXIuaCIKICNpbmNsdWRlICJKU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4
Y2VwdGlvbi5oIgogI2luY2x1ZGUgIkpTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyLmgi
CkBAIC0yMjMsNiArMjIzLDEwIEBAIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2Jq
ZWN0VGUKIGJvb2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdEl0ZXJhYmxlQ29uc3RydWN0b3Io
SlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpT
VmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RUZXN0SlNCdWls
dGluQ29uc3RydWN0b3JDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmpl
Y3RUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0
KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CitKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdFRlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb25Db25z
dHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQ
cm9wZXJ0eU5hbWUpOworYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0TGVnYWN5RmFjdG9y
eUZ1bmN0aW9uQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpT
VmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RH
bG9iYWxPYmplY3RBdWRpb0NvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVu
Y29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Citib29sIHNldEpTVGVzdEdsb2JhbE9i
amVjdEF1ZGlvQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpT
VmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RH
bG9iYWxPYmplY3RUZXN0TWFwTGlrZUNvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBK
U0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CiBib29sIHNldEpTVGVzdEds
b2JhbE9iamVjdFRlc3RNYXBMaWtlQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpT
Qzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlm
aWVyQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUs
IEpTQzo6UHJvcGVydHlOYW1lKTsKQEAgLTIzMSwxMCArMjM1LDYgQEAgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RUZQogYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0
TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb25Db25zdHJ1Y3RvcihKU0M6OkpT
R2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7
CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZEFuZEluZGV4
ZWRTZXR0ZXJXaXRoSWRlbnRpZmllckNvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBK
U0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CiBib29sIHNldEpTVGVzdEds
b2JhbE9iamVjdFRlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllckNvbnN0cnVj
dG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29k
ZWRKU1ZhbHVlKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0VGVzdE5h
bWVkQ29uc3RydWN0b3JDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmpl
Y3RUZXN0TmFtZWRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBK
U0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKLUpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0R2xvYmFsT2JqZWN0QXVkaW9Db25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotYm9vbCBzZXRK
U1Rlc3RHbG9iYWxPYmplY3RBdWRpb0NvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBK
U0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllckNvbnN0
cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlBy
b3BlcnR5TmFtZSk7CiBib29sIHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZERlbGV0ZXJO
b0lkZW50aWZpZXJDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVk
SlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dEdsb2JhbE9iamVjdFRlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbkNvbnN0cnVjdG9y
KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5
TmFtZSk7CkBAIC0zMjAsMTIgKzMyMCwxMiBAQCB1c2luZyBKU1Rlc3RHbG9iYWxPYmplY3RDb25z
dHJ1Y3RvciA9IEpTCiAKIC8qIEhhc2ggdGFibGUgKi8KIAotc3RhdGljIGNvbnN0IHN0cnVjdCBD
b21wYWN0SGFzaEluZGV4IEpTVGVzdEdsb2JhbE9iamVjdFRhYmxlSW5kZXhbMjY4XSA9IHsKK3N0
YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1Rlc3RHbG9iYWxPYmplY3RUYWJs
ZUluZGV4WzI2OV0gPSB7CiAgICAgeyAtMSwgLTEgfSwKICAgICB7IDQwLCAtMSB9LAogICAgIHsg
LTEsIC0xIH0sCiAgICAgeyAwLCAtMSB9LAotICAgIHsgOCwgMjYzIH0sCisgICAgeyA4LCAyNjQg
fSwKICAgICB7IDQ0LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKQEAg
LTM2Myw3ICszNjMsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNU
CiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgNzEsIC0xIH0sCi0gICAg
eyAxMywgMjU4IH0sCisgICAgeyAxMywgMjU5IH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0x
LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCkBAIC0zNzIsNyArMzcyLDcgQEAgc3RhdGljIGNvbnN0
IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTVAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwg
LTEgfSwKICAgICB7IDM4LCAtMSB9LAotICAgIHsgMjAsIDI2NCB9LAorICAgIHsgMjAsIDI1NiB9
LAogICAgIHsgMTAsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LApAQCAt
MzkxLDcgKzM5MSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1QK
ICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7
IDIyLCAyNjUgfSwKKyAgICB7IDIyLCAyNjYgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEs
IC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKQEAgLTQxMyw3ICs0MTMsNyBAQCBzdGF0aWMgY29uc3Qg
c3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNUCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAt
MSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyAyNCwgMjU2IH0sCisgICAgeyAyNCwgMjU3IH0s
CiAgICAgeyAtMSwgLTEgfSwKICAgICB7IDYxLCAtMSB9LAogICAgIHsgMTksIC0xIH0sCkBAIC00
MzUsNyArNDM1LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTVAog
ICAgIHsgNTAsIC0xIH0sCiAgICAgeyAyNSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsg
MiwgMjY3IH0sCisgICAgeyAyLCAyNjggfSwKICAgICB7IDM3LCAtMSB9LAogICAgIHsgLTEsIC0x
IH0sCiAgICAgeyAtMSwgLTEgfSwKQEAgLTQ1Miw3ICs0NTIsNyBAQCBzdGF0aWMgY29uc3Qgc3Ry
dWN0IENvbXBhY3RIYXNoSW5kZXggSlNUCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9
LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyAzMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAogICAg
IHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IDQyLCAtMSB9LApAQCAtNDgzLDgg
KzQ4Myw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1QKICAgICB7
IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDMyLCAt
MSB9LAotICAgIHsgMjksIDI2MiB9LAorICAgIHsgMjgsIC0xIH0sCisgICAgeyAzMSwgMjYzIH0s
CiAgICAgeyAtMSwgLTEgfSwKICAgICB7IDUsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKQEAgLTQ5
NCw3ICs0OTQsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNUCiAg
ICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyAx
NiwgMjU3IH0sCisgICAgeyAxNiwgMjU4IH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IDYyLCAt
MSB9LAogICAgIHsgLTEsIC0xIH0sCkBAIC01MDUsNyArNTA1LDcgQEAgc3RhdGljIGNvbnN0IHN0
cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTVAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEg
fSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgMzMsIDI2NiB9LAorICAgIHsgMzMsIDI2NyB9LAog
ICAgIHsgLTEsIC0xIH0sCiAgICAgeyAxNywgLTEgfSwKICAgICB7IC0xLCAtMSB9LApAQCAtNTUw
LDggKzU1MCw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1QKICAg
ICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDQ4
LCAyNjEgfSwKLSAgICB7IDExLCAyNjAgfSwKKyAgICB7IDQ4LCAyNjIgfSwKKyAgICB7IDExLCAy
NjEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgNjMsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwK
QEAgLTU2NSw3ICs1NjUsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXgg
SlNUCiAgICAgeyAyNiwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0g
ICAgeyAyOCwgLTEgfSwKKyAgICB7IDMwLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAt
MSwgLTEgfSwKICAgICB7IDQ1LCAtMSB9LApAQCAtNTc3LDggKzU3Nyw5IEBAIHN0YXRpYyBjb25z
dCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1QKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEs
IC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDI3LCAyNTkgfSwKLSAgICB7IDMwLCAtMSB9
LAorICAgIHsgMjcsIDI2NSB9LAorICAgIHsgMjksIDI2MCB9LAorICAgIHsgMzIsIC0xIH0sCiAg
ICAgeyAzOSwgLTEgfSwKICAgICB7IDQxLCAtMSB9LAogICAgIHsgNDMsIC0xIH0sCkBAIC02MzMs
MTIgKzYzNCwxMiBAQCBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0R2xvYmFsCiAg
ICAgeyAiVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlIiwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGlu
dHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9i
YWxPYmplY3RUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmVDb25zdHJ1Y3RvciksIChpbnRw
dHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVz
dEdsb2JhbE9iamVjdFRlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZUNvbnN0cnVjdG9yKSB9
IH0sCiAgICAgeyAiVGVzdEl0ZXJhYmxlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRp
Y19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RUZXN0
SXRlcmFibGVDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlT
bG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RJdGVyYWJsZUNvbnN0
cnVjdG9yKSB9IH0sCiAgICAgeyAiVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yIiwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihq
c1Rlc3RHbG9iYWxPYmplY3RUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3RvciksIChp
bnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpT
VGVzdEdsb2JhbE9iamVjdFRlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9yKSB9IH0s
CisgICAgeyAiVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFs
T2JqZWN0VGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbkNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBz
dGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0R2xvYmFs
T2JqZWN0VGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbkNvbnN0cnVjdG9yKSB9IH0sCisgICAgeyAi
QXVkaW8iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90
OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdEF1ZGlvQ29uc3RydWN0b3IpLCAoaW50
cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rl
c3RHbG9iYWxPYmplY3RBdWRpb0NvbnN0cnVjdG9yKSB9IH0sCiAgICAgeyAiVGVzdE1hcExpa2Ui
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0p
LCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRW
YWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdFRlc3RNYXBMaWtlQ29uc3RydWN0b3IpLCAoaW50
cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rl
c3RHbG9iYWxPYmplY3RUZXN0TWFwTGlrZUNvbnN0cnVjdG9yKSB9IH0sCiAgICAgeyAiVGVzdE5h
bWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2Jq
ZWN0VGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllckNvbnN0cnVjdG9yKSwgKGlu
dHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNU
ZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllckNvbnN0
cnVjdG9yKSB9IH0sCiAgICAgeyAiVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhj
ZXB0aW9uIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xv
dDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRBbmRJbmRleGVkU2V0
dGVyVGhyb3dpbmdFeGNlcHRpb25Db25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8
UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RO
YW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbkNvbnN0cnVjdG9yKSB9IH0sCiAg
ICAgeyAiVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyIiwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihq
c1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXJD
b25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRW
YWx1ZUZ1bmM+KHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJX
aXRoSWRlbnRpZmllckNvbnN0cnVjdG9yKSB9IH0sCi0gICAgeyAiVGVzdE5hbWVkQ29uc3RydWN0
b3IiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpH
ZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZENvbnN0cnVjdG9yQ29uc3Ry
dWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPihzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRDb25zdHJ1Y3RvckNvbnN0cnVjdG9y
KSB9IH0sCi0gICAgeyAiQXVkaW8iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdEF1ZGlvQ29u
c3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFs
dWVGdW5jPihzZXRKU1Rlc3RHbG9iYWxPYmplY3RBdWRpb0NvbnN0cnVjdG9yKSB9IH0sCiAgICAg
eyAiVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2Jq
ZWN0VGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllckNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBz
dGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0R2xvYmFs
T2JqZWN0VGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllckNvbnN0cnVjdG9yKSB9IH0sCiAgICAg
eyAiVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uIiwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGlu
dHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9i
YWxPYmplY3RUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb25Db25zdHJ1Y3RvciksIChp
bnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpT
VGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbkNvbnN0cnVj
dG9yKSB9IH0sCiAgICAgeyAiVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyIiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
Pihqc1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXJDb25zdHJ1
Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1
bmM+KHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllckNv
bnN0cnVjdG9yKSB9IH0sCkBAIC0xNTYxLDYgKzE1NjIsNTIgQEAgYm9vbCBzZXRKU1Rlc3RHbG9i
YWxPYmplY3RUZXN0SlNCdWlsdGluQwogICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0R2xv
YmFsT2JqZWN0Pjo6c2V0PHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RKU0J1aWx0aW5Db25zdHJ1
Y3RvckNvbnN0cnVjdG9yU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBl
bmNvZGVkVmFsdWUsICJUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IiKTsKIH0KIAorc3RhdGljIGlu
bGluZSBKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdFRlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb25D
b25zdHJ1Y3RvckdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNU
ZXN0R2xvYmFsT2JqZWN0JiB0aGlzT2JqZWN0KQoreworICAgIFVOVVNFRF9QQVJBTShsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKKyAgICByZXR1cm4gSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uOjpn
ZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgdGhpc09iamVj
dC5nbG9iYWxPYmplY3QoKSk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVj
dFRlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb25Db25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUp
Cit7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RHbG9iYWxPYmplY3Q+OjpnZXQ8anNU
ZXN0R2xvYmFsT2JqZWN0VGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbkNvbnN0cnVjdG9yR2V0dGVy
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiVGVzdExlZ2FjeUZhY3RvcnlGdW5j
dGlvbiIpOworfQorCitzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVz
dExlZ2FjeUZhY3RvcnlGdW5jdGlvbkNvbnN0cnVjdG9yU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RHbG9iYWxPYmplY3QmIHRoaXNPYmplY3QsIEpTVmFs
dWUgdmFsdWUpCit7CisgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKKyAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3Rvci4KKyAgICByZXR1
cm4gdGhpc09iamVjdC5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbiIp
LCBzdHJsZW4oIlRlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24iKSksIHZhbHVlKTsKK30KKworYm9v
bCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uQ29uc3RydWN0
b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQoreworICAgIHJldHVybiBJRExB
dHRyaWJ1dGU8SlNUZXN0R2xvYmFsT2JqZWN0Pjo6c2V0PHNldEpTVGVzdEdsb2JhbE9iamVjdFRl
c3RMZWdhY3lGYWN0b3J5RnVuY3Rpb25Db25zdHJ1Y3RvclNldHRlcj4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlv
biIpOworfQorCitzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0QXVkaW9D
b25zdHJ1Y3RvckdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNU
ZXN0R2xvYmFsT2JqZWN0JiB0aGlzT2JqZWN0KQoreworICAgIFVOVVNFRF9QQVJBTShsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKKyAgICByZXR1cm4gSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uTGVn
YWN5RmFjdG9yeUZ1bmN0aW9uOjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKCZsZXhpY2FsR2xv
YmFsT2JqZWN0KSwgdGhpc09iamVjdC5nbG9iYWxPYmplY3QoKSk7Cit9CisKK0VuY29kZWRKU1Zh
bHVlIGpzVGVzdEdsb2JhbE9iamVjdEF1ZGlvQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1l
KQoreworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0R2xvYmFsT2JqZWN0Pjo6Z2V0PGpz
VGVzdEdsb2JhbE9iamVjdEF1ZGlvQ29uc3RydWN0b3JHZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aGlzVmFsdWUsICJBdWRpbyIpOworfQorCitzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNU
ZXN0R2xvYmFsT2JqZWN0QXVkaW9Db25zdHJ1Y3RvclNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0R2xvYmFsT2JqZWN0JiB0aGlzT2JqZWN0LCBKU1ZhbHVl
IHZhbHVlKQoreworICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCk7CisgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IuCisgICAgcmV0dXJu
IHRoaXNPYmplY3QucHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWlu
dGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oIkF1ZGlvIiksIHN0cmxlbigiQXVkaW8iKSksIHZh
bHVlKTsKK30KKworYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RBdWRpb0NvbnN0cnVjdG9yKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK3sKKyAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTVGVzdEdsb2JhbE9iamVjdD46OnNldDxzZXRKU1Rlc3RHbG9iYWxPYmplY3RBdWRpb0Nv
bnN0cnVjdG9yU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVk
VmFsdWUsICJBdWRpbyIpOworfQorCiBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0R2xvYmFs
T2JqZWN0VGVzdE1hcExpa2VDb25zdHJ1Y3RvckdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNUZXN0R2xvYmFsT2JqZWN0JiB0aGlzT2JqZWN0KQogewogICAgIFVO
VVNFRF9QQVJBTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKQEAgLTE2NTMsNTIgKzE3MDAsNiBAQCBi
b29sIHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZEFuZEluCiAgICAgcmV0dXJuIElETEF0
dHJpYnV0ZTxKU1Rlc3RHbG9iYWxPYmplY3Q+OjpzZXQ8c2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVz
dE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyQ29uc3RydWN0b3JTZXR0ZXI+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIlRlc3ROYW1lZEFu
ZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllciIpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTVmFs
dWUganNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1Y3RvckdldHRl
cihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0R2xvYmFsT2JqZWN0
JiB0aGlzT2JqZWN0KQotewotICAgIFVOVVNFRF9QQVJBTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
LSAgICByZXR1cm4gSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0b3IoSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIHRoaXNPYmplY3QuZ2xvYmFsT2JqZWN0KCkpOwot
fQotCi1FbmNvZGVkSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRDb25zdHJ1Y3Rv
ckNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKLXsKLSAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTVGVzdEdsb2JhbE9iamVjdD46OmdldDxqc1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRD
b25zdHJ1Y3RvckNvbnN0cnVjdG9yR2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCAiVGVzdE5hbWVkQ29uc3RydWN0b3IiKTsKLX0KLQotc3RhdGljIGlubGluZSBib29sIHNl
dEpTVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZENvbnN0cnVjdG9yQ29uc3RydWN0b3JTZXR0ZXIo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdEdsb2JhbE9iamVjdCYg
dGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKLXsKLSAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpOwotICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0
cnVjdG9yLgotICAgIHJldHVybiB0aGlzT2JqZWN0LnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJUZXN0TmFtZWRD
b25zdHJ1Y3RvciIpLCBzdHJsZW4oIlRlc3ROYW1lZENvbnN0cnVjdG9yIikpLCB2YWx1ZSk7Ci19
Ci0KLWJvb2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1
Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCi17Ci0gICAgcmV0dXJuIElE
TEF0dHJpYnV0ZTxKU1Rlc3RHbG9iYWxPYmplY3Q+OjpzZXQ8c2V0SlNUZXN0R2xvYmFsT2JqZWN0
VGVzdE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1Y3RvclNldHRlcj4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiVGVzdE5hbWVkQ29uc3RydWN0b3IiKTsKLX0K
LQotc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdEF1ZGlvQ29uc3RydWN0
b3JHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdEdsb2Jh
bE9iamVjdCYgdGhpc09iamVjdCkKLXsKLSAgICBVTlVTRURfUEFSQU0obGV4aWNhbEdsb2JhbE9i
amVjdCk7Ci0gICAgcmV0dXJuIEpTVGVzdE5hbWVkQ29uc3RydWN0b3JOYW1lZDo6Z2V0Q29uc3Ry
dWN0b3IoSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIHRoaXNPYmplY3QuZ2xvYmFs
T2JqZWN0KCkpOwotfQotCi1FbmNvZGVkSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RBdWRpb0Nv
bnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKLXsKLSAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTVGVzdEdsb2JhbE9iamVjdD46OmdldDxqc1Rlc3RHbG9iYWxPYmplY3RBdWRpb0NvbnN0cnVj
dG9yR2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiQXVkaW8iKTsKLX0K
LQotc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdEdsb2JhbE9iamVjdEF1ZGlvQ29uc3RydWN0
b3JTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdEdsb2Jh
bE9iamVjdCYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKLXsKLSAgICBhdXRvJiB2bSA9IEpT
Qzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwotICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0
LWluIGNvbnN0cnVjdG9yLgotICAgIHJldHVybiB0aGlzT2JqZWN0LnB1dERpcmVjdCh2bSwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJB
dWRpbyIpLCBzdHJsZW4oIkF1ZGlvIikpLCB2YWx1ZSk7Ci19Ci0KLWJvb2wgc2V0SlNUZXN0R2xv
YmFsT2JqZWN0QXVkaW9Db25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpCi17Ci0gICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RHbG9iYWxPYmplY3Q+OjpzZXQ8
c2V0SlNUZXN0R2xvYmFsT2JqZWN0QXVkaW9Db25zdHJ1Y3RvclNldHRlcj4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiQXVkaW8iKTsKLX0KLQogc3RhdGlj
IGlubGluZSBKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZERlbGV0ZXJOb0lkZW50
aWZpZXJDb25zdHJ1Y3RvckdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNUZXN0R2xvYmFsT2JqZWN0JiB0aGlzT2JqZWN0KQogewogICAgIFVOVVNFRF9QQVJBTShs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RMZWdhY3lGYWN0
b3J5RnVuY3Rpb24uY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMzI4IEBACisvKgorICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRo
ZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KKyAgICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2Vu
ZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQorCisgICAgVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQg
eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRp
c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
KyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24uaCIK
KworI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgorI2luY2x1ZGUgIkRPTUlzb1N1YnNwYWNl
cy5oIgorI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCisj
aW5jbHVkZSAiSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGUuaCIKKyNpbmNsdWRlICJK
U0RPTUNvbnZlcnRJbnRlcmZhY2UuaCIKKyNpbmNsdWRlICJKU0RPTUNvbnZlcnRTdHJpbmdzLmgi
CisjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgorI2luY2x1ZGUgIkpTRE9NTGVn
YWN5RmFjdG9yeUZ1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKKyNp
bmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAiV2ViQ29yZUpTQ2xp
ZW50RGF0YS5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+
CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcEFuYWx5emVyLmg+CisjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTRGVz
dHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
U3Vic3BhY2VJbmxpbmVzLmg+CisjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgorI2luY2x1ZGUgPHd0
Zi9Qb2ludGVyUHJlcGFyYXRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgorCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKKy8vIEF0dHJpYnV0ZXMKKwor
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb25Db25zdHJ1Y3Rv
cihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0
eU5hbWUpOworYm9vbCBzZXRKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb25Db25zdHJ1Y3RvcihK
U0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNW
YWx1ZSk7CisKK2NsYXNzIEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvblByb3RvdHlwZSBmaW5h
bCA6IHB1YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3QgeworcHVibGljOgorICAgIHVzaW5nIEJh
c2UgPSBKU0M6OkpTTm9uRmluYWxPYmplY3Q7CisgICAgc3RhdGljIEpTVGVzdExlZ2FjeUZhY3Rv
cnlGdW5jdGlvblByb3RvdHlwZSogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0RPTUdsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIHsKKyAgICAg
ICAgSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uUHJvdG90eXBlKiBwdHIgPSBuZXcgKE5vdE51
bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvblByb3RvdHlw
ZT4odm0uaGVhcCkpIEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvblByb3RvdHlwZSh2bSwgZ2xv
YmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOworICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKHZtKTsK
KyAgICAgICAgcmV0dXJuIHB0cjsKKyAgICB9CisKKyAgICBERUNMQVJFX0lORk87CisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIEpTQzo6U3Vic3BhY2VBY2Nlc3M+CisgICAgc3RhdGlj
IEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQorICAgIHsKKyAgICAg
ICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0TGVnYWN5RmFjdG9y
eUZ1bmN0aW9uUHJvdG90eXBlLCBCYXNlKTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVj
dFNwYWNlOworICAgIH0KKyAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVy
ZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpT
VmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpj
cmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2Jq
ZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKworcHJpdmF0ZToKKyAg
ICBKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb25Qcm90b3R5cGUoSlNDOjpWTSYgdm0sIEpTQzo6
SlNHbG9iYWxPYmplY3QqLCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgICAgICA6IEpT
Qzo6SlNOb25GaW5hbE9iamVjdCh2bSwgc3RydWN0dXJlKQorICAgIHsKKyAgICB9CisKKyAgICB2
b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0mKTsKK307CitTVEFUSUNfQVNTRVJUX0lTT19TVUJT
UEFDRV9TSEFSQUJMRShKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb25Qcm90b3R5cGUsIEpTVGVz
dExlZ2FjeUZhY3RvcnlGdW5jdGlvblByb3RvdHlwZTo6QmFzZSk7CisKK3VzaW5nIEpTVGVzdExl
Z2FjeUZhY3RvcnlGdW5jdGlvbkNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0
cnVjdGFibGU8SlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uPjsKK3VzaW5nIEpTVGVzdExlZ2Fj
eUZhY3RvcnlGdW5jdGlvbkxlZ2FjeUZhY3RvcnlGdW5jdGlvbiA9IEpTRE9NTGVnYWN5RmFjdG9y
eUZ1bmN0aW9uPEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbj47CisKK3RlbXBsYXRlPD4gSlNW
YWx1ZSBKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb25Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9y
U3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2Jq
ZWN0KQoreworICAgIFVOVVNFRF9QQVJBTSh2bSk7CisgICAgcmV0dXJuIGdsb2JhbE9iamVjdC5m
dW5jdGlvblByb3RvdHlwZSgpOworfQorCit0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0TGVnYWN5RmFj
dG9yeUZ1bmN0aW9uQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNE
T01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3sKKyAgICBwdXREaXJlY3Qodm0sIHZtLnBy
b3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uOjpwcm90
b3R5cGUodm0sIGdsb2JhbE9iamVjdCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxl
dGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtKTsKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5h
bWUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlRlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24iX3Mp
LCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKTsKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0
aCwganNOdW1iZXIoMSksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOworfQorCit0ZW1wbGF0ZTw+IGNvbnN0IENsYXNz
SW5mbyBKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb25Db25zdHJ1Y3Rvcjo6c19pbmZvID0geyAi
VGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxw
dHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uQ29uc3Ry
dWN0b3IpIH07CisKK3RlbXBsYXRlPD4gRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1Rl
c3RMZWdhY3lGYWN0b3J5RnVuY3Rpb25MZWdhY3lGYWN0b3J5RnVuY3Rpb246OmNvbnN0cnVjdChK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
Cit7CisgICAgVk0mIHZtID0gbGV4aWNhbEdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBhdXRvKiBjYXN0ZWRUaGlz
ID0ganNDYXN0PEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbkxlZ2FjeUZhY3RvcnlGdW5jdGlv
bio+KGNhbGxGcmFtZS0+anNDYWxsZWUoKSk7CisgICAgQVNTRVJUKGNhc3RlZFRoaXMpOworICAg
IGlmIChVTkxJS0VMWShjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQorICAgICAgICBy
ZXR1cm4gdGhyb3dWTUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGNyZWF0
ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGxleGljYWxHbG9iYWxPYmplY3QpKTsKKyAgICBhdXRv
KiBjb250ZXh0ID0gY2FzdGVkVGhpcy0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworICAgIGlm
IChVTkxJS0VMWSghY29udGV4dCkpCisgICAgICAgIHJldHVybiB0aHJvd0NvbnN0cnVjdG9yU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dFVuYXZhaWxhYmxlRXJyb3IoKmxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsICJUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uIik7CisgICAgQVNTRVJUKGNv
bnRleHQtPmlzRG9jdW1lbnQoKSk7CisgICAgYXV0byYgZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1
bWVudD4oKmNvbnRleHQpOworICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBj
YWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOworICAgIGF1dG8gc3RyMSA9IGNvbnZlcnQ8
SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkpOwor
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Cisg
ICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MSA9IGNhbGxGcmFtZS0+YXJndW1lbnQo
MSk7CisgICAgYXV0byBzdHIyID0gYXJndW1lbnQxLnZhbHVlKCkuaXNVbmRlZmluZWQoKSA/ICJk
ZWZhdWx0U3RyaW5nIl9zIDogY29udmVydDxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBhcmd1bWVudDEudmFsdWUoKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKyAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1l
bnQyID0gY2FsbEZyYW1lLT5hcmd1bWVudCgyKTsKKyAgICBhdXRvIHN0cjMgPSBhcmd1bWVudDIu
dmFsdWUoKS5pc1VuZGVmaW5lZCgpID8gU3RyaW5nKCkgOiBjb252ZXJ0PElETERPTVN0cmluZz4o
KmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50Mi52YWx1ZSgpKTsKKyAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOworICAgIGF1dG8gb2JqZWN0
ID0gVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbjo6Y3JlYXRlRm9ySlNDb25zdHJ1Y3Rvcihkb2N1
bWVudCwgV1RGTW92ZShzdHIxKSwgV1RGTW92ZShzdHIyKSwgV1RGTW92ZShzdHIzKSk7CisgICAg
c3RhdGljX2Fzc2VydChJc0V4Y2VwdGlvbk9yPGRlY2x0eXBlKG9iamVjdCk+Ojp2YWx1ZSk7Cisg
ICAgc3RhdGljX2Fzc2VydChkZWNsdHlwZShvYmplY3QpOjpSZXR1cm5UeXBlOjppc1JlZik7Cisg
ICAgYXV0byBqc1ZhbHVlID0gdG9KU05ld2x5Q3JlYXRlZDxJRExJbnRlcmZhY2U8VGVzdExlZ2Fj
eUZhY3RvcnlGdW5jdGlvbj4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FzdGVkVGhpcy0+Z2xv
YmFsT2JqZWN0KCksIHRocm93U2NvcGUsIFdURk1vdmUob2JqZWN0KSk7CisgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOworICAgIHNldFN1YmNsYXNzU3RydWN0dXJlSWZO
ZWVkZWQ8VGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbj4obGV4aWNhbEdsb2JhbE9iamVjdCwgY2Fs
bEZyYW1lLCBhc09iamVjdChqc1ZhbHVlKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCB7IH0pOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNWYWx1ZSk7Cit9CisK
K3RlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb25MZWdhY3lGYWN0
b3J5RnVuY3Rpb246OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNE
T01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3sKKyAgICBVTlVTRURfUEFSQU0odm0pOwor
ICAgIHJldHVybiBnbG9iYWxPYmplY3QuZnVuY3Rpb25Qcm90b3R5cGUoKTsKK30KKwordGVtcGxh
dGU8PiB2b2lkIEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbkxlZ2FjeUZhY3RvcnlGdW5jdGlv
bjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFs
T2JqZWN0KQoreworICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBl
LCBKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb246OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0
KSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOworICAg
IHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250cml2aWFsU3RyaW5n
KHZtLCAiQXVkaW8iX3MpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3Bl
cnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMSksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJl
YWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOworfQorCit0ZW1wbGF0
ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb25MZWdhY3lGYWN0
b3J5RnVuY3Rpb246OnNfaW5mbyA9IHsgIkF1ZGlvIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwg
bnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb25M
ZWdhY3lGYWN0b3J5RnVuY3Rpb24pIH07CisKKy8qIEhhc2ggdGFibGUgZm9yIHByb3RvdHlwZSAq
LworCitzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0
aW9uUHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9Cit7CisgICAgeyAiY29uc3RydWN0b3IiLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0lu
dHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1
bmM+KGpzVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbkNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBz
dGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0TGVnYWN5
RmFjdG9yeUZ1bmN0aW9uQ29uc3RydWN0b3IpIH0gfSwKK307CisKK2NvbnN0IENsYXNzSW5mbyBK
U1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb25Qcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlc3RMZWdh
Y3lGYWN0b3J5RnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVB
VEVfTUVUSE9EX1RBQkxFKEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvblByb3RvdHlwZSkgfTsK
Kwordm9pZCBKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb25Qcm90b3R5cGU6OmZpbmlzaENyZWF0
aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgcmVpZnlT
dGF0aWNQcm9wZXJ0aWVzKHZtLCBKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb246OmluZm8oKSwg
SlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uUHJvdG90eXBlVGFibGVWYWx1ZXMsICp0aGlzKTsK
KyAgICBKU0NfVE9fU1RSSU5HX1RBR19XSVRIT1VUX1RSQU5TSVRJT04oKTsKK30KKworY29uc3Qg
Q2xhc3NJbmZvIEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbjo6c19pbmZvID0geyAiVGVzdExl
Z2FjeUZhY3RvcnlGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENS
RUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uKSB9OworCitKU1Rl
c3RMZWdhY3lGYWN0b3J5RnVuY3Rpb246OkpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbihTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgUmVmPFRl
c3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24+JiYgaW1wbCkKKyAgICA6IEpTRE9NV3JhcHBlcjxUZXN0
TGVnYWN5RmFjdG9yeUZ1bmN0aW9uPihzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCwgV1RGTW92ZShp
bXBsKSkKK3sKK30KKwordm9pZCBKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb246OmZpbmlzaENy
ZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgQVNT
RVJUKGluaGVyaXRzKHZtLCBpbmZvKCkpKTsKKworICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19i
YXNlX29mPEFjdGl2ZURPTU9iamVjdCwgVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbj46OnZhbHVl
LCAiSW50ZXJmYWNlIGlzIG1hcmtlZCBhcyBbQWN0aXZlRE9NT2JqZWN0XSBidXQgaW1wbGVtZW50
YXRpb24gY2xhc3MgZG9lcyBub3Qgc3ViY2xhc3MgQWN0aXZlRE9NT2JqZWN0LiIpOworCit9CisK
K0pTT2JqZWN0KiBKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb246OmNyZWF0ZVByb3RvdHlwZShW
TSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit7CisgICAgcmV0dXJuIEpT
VGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvblByb3RvdHlwZTo6Y3JlYXRlKHZtLCAmZ2xvYmFsT2Jq
ZWN0LCBKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb25Qcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVy
ZSh2bSwgJmdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0Lm9iamVjdFByb3RvdHlwZSgpKSk7Cit9
CisKK0pTT2JqZWN0KiBKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb246OnByb3RvdHlwZShWTSYg
dm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit7CisgICAgcmV0dXJuIGdldERP
TVByb3RvdHlwZTxKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24+KHZtLCBnbG9iYWxPYmplY3Qp
OworfQorCitKU1ZhbHVlIEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbjo6Z2V0Q29uc3RydWN0
b3IoVk0mIHZtLCBjb25zdCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIHJl
dHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb25Db25zdHJ1
Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3Qp
KTsKK30KKworSlNWYWx1ZSBKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb246OmdldExlZ2FjeUZh
Y3RvcnlGdW5jdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7Cisg
ICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbkxl
Z2FjeUZhY3RvcnlGdW5jdGlvbj4odm0sICpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9i
YWxPYmplY3QpKTsKK30KKwordm9pZCBKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb246OmRlc3Ry
b3koSlNDOjpKU0NlbGwqIGNlbGwpCit7CisgICAgSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9u
KiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uKj4o
Y2VsbCk7CisgICAgdGhpc09iamVjdC0+SlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uOjp+SlNU
ZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uKCk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIGpzVGVzdExl
Z2FjeUZhY3RvcnlGdW5jdGlvbkNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKK3sKKyAg
ICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOworICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIGF1dG8qIHByb3RvdHlwZSA9
IGpzRHluYW1pY0Nhc3Q8SlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uUHJvdG90eXBlKj4odm0s
IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBpZiAoVU5MSUtFTFkoIXByb3RvdHlw
ZSkpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0TGVnYWN5RmFj
dG9yeUZ1bmN0aW9uOjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmpl
Y3QpLCBwcm90b3R5cGUtPmdsb2JhbE9iamVjdCgpKSk7Cit9CisKK2Jvb2wgc2V0SlNUZXN0TGVn
YWN5RmFjdG9yeUZ1bmN0aW9uQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlKQoreworICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7
CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgYXV0
byogcHJvdG90eXBlID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb25Q
cm90b3R5cGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIGlmIChVTkxJ
S0VMWSghcHJvdG90eXBlKSkgeworICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAg
IC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCisgICAgcmV0dXJuIHByb3RvdHlw
ZS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgSlNWYWx1ZTo6
ZGVjb2RlKGVuY29kZWRWYWx1ZSkpOworfQorCitKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3RMZWdh
Y3lGYWN0b3J5RnVuY3Rpb246OnN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSkKK3sKKyAgICBh
dXRvJiBjbGllbnREYXRhID0gKnN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50
RGF0YSk7CisgICAgYXV0byYgc3BhY2VzID0gY2xpZW50RGF0YS5zdWJzcGFjZXMoKTsKKyAgICBp
ZiAoYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RMZWdhY3lGYWN0b3J5RnVu
Y3Rpb24uZ2V0KCkpCisgICAgICAgIHJldHVybiBzcGFjZTsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0
ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdExlZ2FjeUZh
Y3RvcnlGdW5jdGlvbj4gfHwgIUpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbjo6bmVlZHNEZXN0
cnVjdGlvbik7CisgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVz
dHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24+KQorICAgICAgICBz
cGFjZXMubV9zdWJzcGFjZUZvclRlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24gPSBtYWtlVW5pcXVl
PElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVP
YmplY3RIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbik7Cisg
ICAgZWxzZQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3RMZWdhY3lGYWN0b3J5RnVu
Y3Rpb24gPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFw
LCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24p
OworICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TGVnYWN5RmFjdG9y
eUZ1bmN0aW9uLmdldCgpOworSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2Rl
IikKK0lHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQorICAgIGlm
ICgmSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzICE9
ICZKU0M6OkpTQ2VsbDo6dmlzaXRPdXRwdXRDb25zdHJhaW50cykKKyAgICAgICAgY2xpZW50RGF0
YS5vdXRwdXRDb25zdHJhaW50U3BhY2VzKCkuYXBwZW5kKHNwYWNlKTsKK0lHTk9SRV9XQVJOSU5H
U19FTkQKK0lHTk9SRV9XQVJOSU5HU19FTkQKKyAgICByZXR1cm4gc3BhY2U7Cit9CisKK3ZvaWQg
SlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uOjphbmFseXplSGVhcChKU0NlbGwqIGNlbGwsIEhl
YXBBbmFseXplciYgYW5hbHl6ZXIpCit7CisgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxK
U1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24qPihjZWxsKTsKKyAgICBhbmFseXplci5zZXRXcmFw
cGVkT2JqZWN0Rm9yQ2VsbChjZWxsLCAmdGhpc09iamVjdC0+d3JhcHBlZCgpKTsKKyAgICBpZiAo
dGhpc09iamVjdC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQorICAgICAgICBhbmFseXplci5z
ZXRMYWJlbEZvckNlbGwoY2VsbCwgInVybCAiICsgdGhpc09iamVjdC0+c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpLT51cmwoKS5zdHJpbmcoKSk7CisgICAgQmFzZTo6YW5hbHl6ZUhlYXAoY2VsbCwg
YW5hbHl6ZXIpOworfQorCitib29sIEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbk93bmVyOjpp
c1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRs
ZSwgdm9pZCosIFNsb3RWaXNpdG9yJiB2aXNpdG9yLCBjb25zdCBjaGFyKiogcmVhc29uKQorewor
ICAgIGF1dG8qIGpzVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbiA9IGpzQ2FzdDxKU1Rlc3RMZWdh
Y3lGYWN0b3J5RnVuY3Rpb24qPihoYW5kbGUuc2xvdCgpLT5hc0NlbGwoKSk7CisgICAgYXV0byYg
d3JhcHBlZCA9IGpzVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbi0+d3JhcHBlZCgpOworICAgIGlm
ICghd3JhcHBlZC5pc0NvbnRleHRTdG9wcGVkKCkgJiYgd3JhcHBlZC5oYXNQZW5kaW5nQWN0aXZp
dHkoKSkgeworICAgICAgICBpZiAoVU5MSUtFTFkocmVhc29uKSkKKyAgICAgICAgICAgICpyZWFz
b24gPSAiQWN0aXZlRE9NT2JqZWN0IHdpdGggcGVuZGluZyBhY3Rpdml0eSI7CisgICAgICAgIHJl
dHVybiB0cnVlOworICAgICB9CisgICAgVU5VU0VEX1BBUkFNKHZpc2l0b3IpOworICAgIFVOVVNF
RF9QQVJBTShyZWFzb24pOworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBKU1Rlc3RMZWdh
Y3lGYWN0b3J5RnVuY3Rpb25Pd25lcjo6ZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3du
PiBoYW5kbGUsIHZvaWQqIGNvbnRleHQpCit7CisgICAgYXV0byoganNUZXN0TGVnYWN5RmFjdG9y
eUZ1bmN0aW9uID0gc3RhdGljX2Nhc3Q8SlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uKj4oaGFu
ZGxlLnNsb3QoKS0+YXNDZWxsKCkpOworICAgIGF1dG8mIHdvcmxkID0gKnN0YXRpY19jYXN0PERP
TVdyYXBwZXJXb3JsZCo+KGNvbnRleHQpOworICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxkLCAmanNU
ZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uLT53cmFwcGVkKCksIGpzVGVzdExlZ2FjeUZhY3RvcnlG
dW5jdGlvbik7Cit9CisKKyNpZiBFTkFCTEUoQklORElOR19JTlRFR1JJVFkpCisjaWYgUExBVEZP
Uk0oV0lOKQorI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQ0ODMpCitleHRlcm4gIkMiIHsgZXh0
ZXJuIHZvaWQgKCpjb25zdCBfX2lkZW50aWZpZXIoIj8/XzdUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0
aW9uQFdlYkNvcmVAQDZCQCIpW10pKCk7IH0KKyNlbHNlCitleHRlcm4gIkMiIHsgZXh0ZXJuIHZv
aWQqIF9aVFZON1dlYkNvcmUyNVRlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb25FW107IH0KKyNlbmRp
ZgorI2VuZGlmCisKK0pTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6SlNHbG9iYWxP
YmplY3QqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdExlZ2FjeUZh
Y3RvcnlGdW5jdGlvbj4mJiBpbXBsKQoreworCisjaWYgRU5BQkxFKEJJTkRJTkdfSU5URUdSSVRZ
KQorICAgIGNvbnN0IHZvaWQqIGFjdHVhbFZUYWJsZVBvaW50ZXIgPSBnZXRWVGFibGVQb2ludGVy
KGltcGwucHRyKCkpOworI2lmIFBMQVRGT1JNKFdJTikKKyAgICB2b2lkKiBleHBlY3RlZFZUYWJs
ZVBvaW50ZXIgPSBfX2lkZW50aWZpZXIoIj8/XzdUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uQFdl
YkNvcmVAQDZCQCIpOworI2Vsc2UKKyAgICB2b2lkKiBleHBlY3RlZFZUYWJsZVBvaW50ZXIgPSAm
X1pUVk43V2ViQ29yZTI1VGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbkVbMl07CisjZW5kaWYKKwor
ICAgIC8vIElmIHRoaXMgZmFpbHMgVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbiBkb2VzIG5vdCBo
YXZlIGEgdnRhYmxlLCBzbyB5b3UgbmVlZCB0byBhZGQgdGhlCisgICAgLy8gSW1wbGVtZW50YXRp
b25MYWNrc1ZUYWJsZSBhdHRyaWJ1dGUgdG8gdGhlIGludGVyZmFjZSBkZWZpbml0aW9uCisgICAg
c3RhdGljX2Fzc2VydChzdGQ6OmlzX3BvbHltb3JwaGljPFRlc3RMZWdhY3lGYWN0b3J5RnVuY3Rp
b24+Ojp2YWx1ZSwgIlRlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24gaXMgbm90IHBvbHltb3JwaGlj
Iik7CisKKyAgICAvLyBJZiB5b3UgaGl0IHRoaXMgYXNzZXJ0aW9uIHlvdSBlaXRoZXIgaGF2ZSBh
IHVzZSBhZnRlciBmcmVlIGJ1Zywgb3IKKyAgICAvLyBUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9u
IGhhcyBzdWJjbGFzc2VzLiBJZiBUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uIGhhcyBzdWJjbGFz
c2VzIHRoYXQgZ2V0IHBhc3NlZAorICAgIC8vIHRvIHRvSlMoKSB3ZSBjdXJyZW50bHkgcmVxdWly
ZSBUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uIHlvdSB0byBvcHQgb3V0IG9mIGJpbmRpbmcgaGFy
ZGVuaW5nCisgICAgLy8gYnkgYWRkaW5nIHRoZSBTa2lwVlRhYmxlVmFsaWRhdGlvbiBhdHRyaWJ1
dGUgdG8gdGhlIGludGVyZmFjZSBJREwgZGVmaW5pdGlvbgorICAgIFJFTEVBU0VfQVNTRVJUKGFj
dHVhbFZUYWJsZVBvaW50ZXIgPT0gZXhwZWN0ZWRWVGFibGVQb2ludGVyKTsKKyNlbmRpZgorICAg
IHJldHVybiBjcmVhdGVXcmFwcGVyPFRlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24+KGdsb2JhbE9i
amVjdCwgV1RGTW92ZShpbXBsKSk7Cit9CisKK0pTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6SlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFRlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24mIGltcGwpCit7CisgICAgcmV0dXJuIHdy
YXAobGV4aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LCBpbXBsKTsKK30KKworVGVzdExl
Z2FjeUZhY3RvcnlGdW5jdGlvbiogSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uOjp0b1dyYXBw
ZWQoSlNDOjpWTSYgdm0sIEpTQzo6SlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBpZiAoYXV0byogd3Jh
cHBlciA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uKj4odm0sIHZh
bHVlKSkKKyAgICAgICAgcmV0dXJuICZ3cmFwcGVyLT53cmFwcGVkKCk7CisgICAgcmV0dXJuIG51
bGxwdHI7Cit9CisKK30KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0
aW9uLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsOTQgQEAKKy8qCisgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVu
IHNvdXJjZSBwcm9qZWN0LgorICAgIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2Vu
ZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCisKKyAgICBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAg
ICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl
aXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikg
YW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
CisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisK
KyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0
aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAor
ICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
bmNsdWRlICJKU0RPTVdyYXBwZXIuaCIKKyNpbmNsdWRlICJUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0
aW9uLmgiCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY2xhc3MgSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uIDogcHVibGljIEpTRE9N
V3JhcHBlcjxUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uPiB7CitwdWJsaWM6CisgICAgdXNpbmcg
QmFzZSA9IEpTRE9NV3JhcHBlcjxUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uPjsKKyAgICBzdGF0
aWMgSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uKiBjcmVhdGUoSlNDOjpTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3RMZWdhY3lG
YWN0b3J5RnVuY3Rpb24+JiYgaW1wbCkKKyAgICB7CisgICAgICAgIEpTVGVzdExlZ2FjeUZhY3Rv
cnlGdW5jdGlvbiogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RM
ZWdhY3lGYWN0b3J5RnVuY3Rpb24+KGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwKSkgSlNUZXN0TGVn
YWN5RmFjdG9yeUZ1bmN0aW9uKHN0cnVjdHVyZSwgKmdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBs
KSk7CisgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0LT52bSgpKTsKKyAg
ICAgICAgcmV0dXJuIHB0cjsKKyAgICB9CisKKyAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogY3Jl
YXRlUHJvdG90eXBlKEpTQzo6Vk0mLCBKU0RPTUdsb2JhbE9iamVjdCYpOworICAgIHN0YXRpYyBK
U0M6OkpTT2JqZWN0KiBwcm90b3R5cGUoSlNDOjpWTSYsIEpTRE9NR2xvYmFsT2JqZWN0Jik7Cisg
ICAgc3RhdGljIFRlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24qIHRvV3JhcHBlZChKU0M6OlZNJiwg
SlNDOjpKU1ZhbHVlKTsKKyAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQzo6SlNDZWxsKik7CisK
KyAgICBERUNMQVJFX0lORk87CisKKyAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0
cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U0M6OkpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0
dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpT
Qzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCksIEpTQzo6Tm9uQXJyYXkpOwor
ICAgIH0KKworICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0Q29uc3RydWN0b3IoSlNDOjpWTSYs
IGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdl
dExlZ2FjeUZhY3RvcnlGdW5jdGlvbihKU0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOwor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lLCBKU0M6OlN1YnNwYWNlQWNjZXNzIG1vZGU+IHN0YXRpYyBK
U0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKKyAgICB7CisgICAgICAg
IGlmIGNvbnN0ZXhwciAobW9kZSA9PSBKU0M6OlN1YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50bHkp
CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIHN1YnNwYWNlRm9y
SW1wbCh2bSk7CisgICAgfQorICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZv
ckltcGwoSlNDOjpWTSYgdm0pOworICAgIHN0YXRpYyB2b2lkIGFuYWx5emVIZWFwKEpTQ2VsbCos
IEpTQzo6SGVhcEFuYWx5emVyJik7Citwcm90ZWN0ZWQ6CisgICAgSlNUZXN0TGVnYWN5RmFjdG9y
eUZ1bmN0aW9uKEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3QmLCBSZWY8VGVzdExl
Z2FjeUZhY3RvcnlGdW5jdGlvbj4mJik7CisKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6
Vk0mKTsKK307CisKK2NsYXNzIEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbk93bmVyIDogcHVi
bGljIEpTQzo6V2Vha0hhbmRsZU93bmVyIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIGJvb2wgaXNS
ZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiwgdm9pZCog
Y29udGV4dCwgSlNDOjpTbG90VmlzaXRvciYsIGNvbnN0IGNoYXIqKik7CisgICAgdmlydHVhbCB2
b2lkIGZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4sIHZvaWQqIGNvbnRleHQpOwor
fTsKKworaW5saW5lIEpTQzo6V2Vha0hhbmRsZU93bmVyKiB3cmFwcGVyT3duZXIoRE9NV3JhcHBl
cldvcmxkJiwgVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbiopCit7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbk93bmVyPiBvd25lcjsKKyAgICBy
ZXR1cm4gJm93bmVyLmdldCgpOworfQorCitpbmxpbmUgdm9pZCogd3JhcHBlcktleShUZXN0TGVn
YWN5RmFjdG9yeUZ1bmN0aW9uKiB3cmFwcGFibGVPYmplY3QpCit7CisgICAgcmV0dXJuIHdyYXBw
YWJsZU9iamVjdDsKK30KKworSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpKU0dsb2JhbE9iamVjdCos
IEpTRE9NR2xvYmFsT2JqZWN0KiwgVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbiYpOworaW5saW5l
IEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RMZWdhY3lGYWN0b3J5RnVu
Y3Rpb24qIGltcGwpIHsgcmV0dXJuIGltcGwgPyB0b0pTKGxleGljYWxHbG9iYWxPYmplY3QsIGds
b2JhbE9iamVjdCwgKmltcGwpIDogSlNDOjpqc051bGwoKTsgfQorSlNDOjpKU1ZhbHVlIHRvSlNO
ZXdseUNyZWF0ZWQoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTRE9NR2xvYmFsT2JqZWN0KiwgUmVm
PFRlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24+JiYpOworaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pT
TmV3bHlDcmVhdGVkKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpT
RE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZlB0cjxUZXN0TGVnYWN5RmFjdG9yeUZ1
bmN0aW9uPiYmIGltcGwpIHsgcmV0dXJuIGltcGwgPyB0b0pTTmV3bHlDcmVhdGVkKGxleGljYWxH
bG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgaW1wbC5yZWxlYXNlTm9uTnVsbCgpKSA6IEpTQzo6
anNOdWxsKCk7IH0KKwordGVtcGxhdGU8PiBzdHJ1Y3QgSlNET01XcmFwcGVyQ29udmVydGVyVHJh
aXRzPFRlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24+IHsKKyAgICB1c2luZyBXcmFwcGVyQ2xhc3Mg
PSBKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb247CisgICAgdXNpbmcgVG9XcmFwcGVkUmV0dXJu
VHlwZSA9IFRlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24qOworfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmNwcAkocmV2aXNp
b24gMjY2NjE5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwCShub25leGlzdGVudCkKQEAgLTEsMzI4ICswLDAgQEAK
LS8qCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9q
ZWN0LgotICAgIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGlu
Z3MucGwuIERPIE5PVCBNT0RJRlkhCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gICAgbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAgICBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAgICB2
ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl
cnNpb24uCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv
dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICAgIE1FUkNIQU5UQUJJTElUWSBvciBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gICAgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0KLSAgICBZb3Ugc2hv
dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlCi0gICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZ
SU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICAgIEJvc3Rvbiwg
TUEgMDIxMTAtMTMwMSwgVVNBLgotKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUg
IkpTVGVzdE5hbWVkQ29uc3RydWN0b3IuaCIKLQotI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5o
IgotI2luY2x1ZGUgIkRPTUlzb1N1YnNwYWNlcy5oIgotI2luY2x1ZGUgIkRvY3VtZW50LmgiCi0j
aW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCi0jaW5jbHVkZSAiSlNET01Db25zdHJ1Y3Rvck5vdENv
bnN0cnVjdGFibGUuaCIKLSNpbmNsdWRlICJKU0RPTUNvbnZlcnRJbnRlcmZhY2UuaCIKLSNpbmNs
dWRlICJKU0RPTUNvbnZlcnRTdHJpbmdzLmgiCi0jaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5k
bGluZy5oIgotI2luY2x1ZGUgIkpTRE9NTmFtZWRDb25zdHJ1Y3Rvci5oIgotI2luY2x1ZGUgIkpT
RE9NV3JhcHBlckNhY2hlLmgiCi0jaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgot
I2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9GdW5jdGlvblByb3RvdHlwZS5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBBbmFs
eXplci5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KLSNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9KU0Rlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5oPgotI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N1YnNwYWNlSW5saW5lcy5oPgotI2luY2x1ZGUgPHd0Zi9H
ZXRQdHIuaD4KLSNpbmNsdWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgotI2luY2x1ZGUg
PHd0Zi9VUkwuaD4KLQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci11c2luZyBuYW1lc3BhY2UgSlND
OwotCi0vLyBBdHRyaWJ1dGVzCi0KLUpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0TmFtZWRDb25z
dHJ1Y3RvckNvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1Zh
bHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci1ib29sIHNldEpTVGVzdE5hbWVkQ29uc3RydWN0b3JD
b25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlND
OjpFbmNvZGVkSlNWYWx1ZSk7Ci0KLWNsYXNzIEpTVGVzdE5hbWVkQ29uc3RydWN0b3JQcm90b3R5
cGUgZmluYWwgOiBwdWJsaWMgSlNDOjpKU05vbkZpbmFsT2JqZWN0IHsKLXB1YmxpYzoKLSAgICB1
c2luZyBCYXNlID0gSlNDOjpKU05vbkZpbmFsT2JqZWN0OwotICAgIHN0YXRpYyBKU1Rlc3ROYW1l
ZENvbnN0cnVjdG9yUHJvdG90eXBlKiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpTRE9NR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCi0gICAgewotICAg
ICAgICBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yUHJvdG90eXBlKiBwdHIgPSBuZXcgKE5vdE51bGws
IEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdE5hbWVkQ29uc3RydWN0b3JQcm90b3R5cGU+KHZtLmhl
YXApKSBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yUHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QsIHN0
cnVjdHVyZSk7Ci0gICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24odm0pOwotICAgICAgICByZXR1
cm4gcHRyOwotICAgIH0KLQotICAgIERFQ0xBUkVfSU5GTzsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBDZWxsVHlwZSwgSlNDOjpTdWJzcGFjZUFjY2Vzcz4KLSAgICBzdGF0aWMgSlNDOjpJc29TdWJz
cGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCi0gICAgewotICAgICAgICBTVEFUSUNfQVNT
RVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3ROYW1lZENvbnN0cnVjdG9yUHJvdG90eXBl
LCBCYXNlKTsKLSAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOwotICAgIH0KLSAg
ICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlND
OjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQot
ICAgIHsKLSAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9i
amVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJl
RmxhZ3MpLCBpbmZvKCkpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBKU1Rlc3ROYW1lZENvbnN0
cnVjdG9yUHJvdG90eXBlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKLSAgICAgICAgOiBKU0M6OkpTTm9uRmluYWxPYmplY3Qodm0s
IHN0cnVjdHVyZSkKLSAgICB7Ci0gICAgfQotCi0gICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6
OlZNJik7Ci19OwotU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSlNUZXN0TmFt
ZWRDb25zdHJ1Y3RvclByb3RvdHlwZSwgSlNUZXN0TmFtZWRDb25zdHJ1Y3RvclByb3RvdHlwZTo6
QmFzZSk7Ci0KLXVzaW5nIEpTVGVzdE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1Y3RvciA9IEpTRE9N
Q29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpTVGVzdE5hbWVkQ29uc3RydWN0b3I+OwotdXNp
bmcgSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvck5hbWVkQ29uc3RydWN0b3IgPSBKU0RPTU5hbWVkQ29u
c3RydWN0b3I8SlNUZXN0TmFtZWRDb25zdHJ1Y3Rvcj47Ci0KLXRlbXBsYXRlPD4gSlNWYWx1ZSBK
U1Rlc3ROYW1lZENvbnN0cnVjdG9yQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShK
U0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKLXsKLSAg
ICBVTlVTRURfUEFSQU0odm0pOwotICAgIHJldHVybiBnbG9iYWxPYmplY3QuZnVuY3Rpb25Qcm90
b3R5cGUoKTsKLX0KLQotdGVtcGxhdGU8PiB2b2lkIEpTVGVzdE5hbWVkQ29uc3RydWN0b3JDb25z
dHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYg
Z2xvYmFsT2JqZWN0KQotewotICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJv
dG90eXBlLCBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yOjpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVj
dCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKLSAg
ICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmlu
Zyh2bSwgIlRlc3ROYW1lZENvbnN0cnVjdG9yIl9zKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7Ci0gICAgcHV0RGly
ZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDEpLCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
KTsKLX0KLQotdGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0TmFtZWRDb25zdHJ1Y3Rv
ckNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0TmFtZWRDb25zdHJ1Y3RvciIsICZCYXNlOjpz
X2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0TmFtZWRD
b25zdHJ1Y3RvckNvbnN0cnVjdG9yKSB9OwotCi10ZW1wbGF0ZTw+IEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvck5hbWVkQ29uc3RydWN0b3I6OmNvbnN0
cnVjdChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpCi17Ci0gICAgVk0mIHZtID0gbGV4aWNhbEdsb2JhbE9iamVjdC0+dm0oKTsKLSAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBhdXRvKiBjYXN0
ZWRUaGlzID0ganNDYXN0PEpTVGVzdE5hbWVkQ29uc3RydWN0b3JOYW1lZENvbnN0cnVjdG9yKj4o
Y2FsbEZyYW1lLT5qc0NhbGxlZSgpKTsKLSAgICBBU1NFUlQoY2FzdGVkVGhpcyk7Ci0gICAgaWYg
KFVOTElLRUxZKGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCi0gICAgICAgIHJldHVy
biB0aHJvd1ZNRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgY3JlYXRlTm90
RW5vdWdoQXJndW1lbnRzRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCkpOwotICAgIGF1dG8qIGNv
bnRleHQgPSBjYXN0ZWRUaGlzLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgaWYgKFVO
TElLRUxZKCFjb250ZXh0KSkKLSAgICAgICAgcmV0dXJuIHRocm93Q29uc3RydWN0b3JTY3JpcHRF
eGVjdXRpb25Db250ZXh0VW5hdmFpbGFibGVFcnJvcigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgIlRlc3ROYW1lZENvbnN0cnVjdG9yIik7Ci0gICAgQVNTRVJUKGNvbnRleHQtPmlz
RG9jdW1lbnQoKSk7Ci0gICAgYXV0byYgZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4oKmNv
bnRleHQpOwotICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUt
PnVuY2hlY2tlZEFyZ3VtZW50KDApOwotICAgIGF1dG8gc3RyMSA9IGNvbnZlcnQ8SURMRE9NU3Ry
aW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkpOwotICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgRW5zdXJl
U3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMSk7Ci0gICAg
YXV0byBzdHIyID0gYXJndW1lbnQxLnZhbHVlKCkuaXNVbmRlZmluZWQoKSA/ICJkZWZhdWx0U3Ry
aW5nIl9zIDogY29udmVydDxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1
bWVudDEudmFsdWUoKSk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNv
ZGVkSlNWYWx1ZSgpKTsKLSAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQyID0gY2Fs
bEZyYW1lLT5hcmd1bWVudCgyKTsKLSAgICBhdXRvIHN0cjMgPSBhcmd1bWVudDIudmFsdWUoKS5p
c1VuZGVmaW5lZCgpID8gU3RyaW5nKCkgOiBjb252ZXJ0PElETERPTVN0cmluZz4oKmxleGljYWxH
bG9iYWxPYmplY3QsIGFyZ3VtZW50Mi52YWx1ZSgpKTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGF1dG8gb2JqZWN0ID0gVGVzdE5h
bWVkQ29uc3RydWN0b3I6OmNyZWF0ZUZvckpTQ29uc3RydWN0b3IoZG9jdW1lbnQsIFdURk1vdmUo
c3RyMSksIFdURk1vdmUoc3RyMiksIFdURk1vdmUoc3RyMykpOwotICAgIHN0YXRpY19hc3NlcnQo
SXNFeGNlcHRpb25PcjxkZWNsdHlwZShvYmplY3QpPjo6dmFsdWUpOwotICAgIHN0YXRpY19hc3Nl
cnQoZGVjbHR5cGUob2JqZWN0KTo6UmV0dXJuVHlwZTo6aXNSZWYpOwotICAgIGF1dG8ganNWYWx1
ZSA9IHRvSlNOZXdseUNyZWF0ZWQ8SURMSW50ZXJmYWNlPFRlc3ROYW1lZENvbnN0cnVjdG9yPj4o
KmxleGljYWxHbG9iYWxPYmplY3QsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgdGhyb3dT
Y29wZSwgV1RGTW92ZShvYmplY3QpKTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIHsgfSk7Ci0gICAgc2V0U3ViY2xhc3NTdHJ1Y3R1cmVJZk5lZWRlZDxUZXN0TmFtZWRDb25z
dHJ1Y3Rvcj4obGV4aWNhbEdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCBhc09iamVjdChqc1ZhbHVl
KSk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwotICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNWYWx1ZSk7Ci19Ci0KLXRlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rl
c3ROYW1lZENvbnN0cnVjdG9yTmFtZWRDb25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJl
KEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQotewot
ICAgIFVOVVNFRF9QQVJBTSh2bSk7Ci0gICAgcmV0dXJuIGdsb2JhbE9iamVjdC5mdW5jdGlvblBy
b3RvdHlwZSgpOwotfQotCi10ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvck5h
bWVkQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxP
YmplY3QmIGdsb2JhbE9iamVjdCkKLXsKLSAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFt
ZXMtPnByb3RvdHlwZSwgSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6cHJvdG90eXBlKHZtLCBnbG9i
YWxPYmplY3QpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51
bSk7Ci0gICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZp
YWxTdHJpbmcodm0sICJBdWRpbyJfcyksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwotICAgIHB1dERpcmVjdCh2bSwg
dm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigxKSwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7Ci19Ci0K
LXRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE5hbWVkQ29uc3RydWN0b3JOYW1lZENv
bnN0cnVjdG9yOjpzX2luZm8gPSB7ICJBdWRpbyIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51
bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvck5hbWVkQ29u
c3RydWN0b3IpIH07Ci0KLS8qIEhhc2ggdGFibGUgZm9yIHByb3RvdHlwZSAqLwotCi1zdGF0aWMg
Y29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0TmFtZWRDb25zdHJ1Y3RvclByb3RvdHlwZVRhYmxl
VmFsdWVzW10gPQotewotICAgIHsgImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0
cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3ROYW1lZENv
bnN0cnVjdG9yQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5
U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3ROYW1lZENvbnN0cnVjdG9yQ29uc3RydWN0b3Ip
IH0gfSwKLX07Ci0KLWNvbnN0IENsYXNzSW5mbyBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yUHJvdG90
eXBlOjpzX2luZm8gPSB7ICJUZXN0TmFtZWRDb25zdHJ1Y3RvciIsICZCYXNlOjpzX2luZm8sIG51
bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0TmFtZWRDb25zdHJ1Y3Rv
clByb3RvdHlwZSkgfTsKLQotdm9pZCBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yUHJvdG90eXBlOjpm
aW5pc2hDcmVhdGlvbihWTSYgdm0pCi17Ci0gICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwot
ICAgIHJlaWZ5U3RhdGljUHJvcGVydGllcyh2bSwgSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6aW5m
bygpLCBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yUHJvdG90eXBlVGFibGVWYWx1ZXMsICp0aGlzKTsK
LSAgICBKU0NfVE9fU1RSSU5HX1RBR19XSVRIT1VUX1RSQU5TSVRJT04oKTsKLX0KLQotY29uc3Qg
Q2xhc3NJbmZvIEpTVGVzdE5hbWVkQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3ROYW1lZENv
bnN0cnVjdG9yIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhP
RF9UQUJMRShKU1Rlc3ROYW1lZENvbnN0cnVjdG9yKSB9OwotCi1KU1Rlc3ROYW1lZENvbnN0cnVj
dG9yOjpKU1Rlc3ROYW1lZENvbnN0cnVjdG9yKFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUds
b2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdE5hbWVkQ29uc3RydWN0b3I+JiYgaW1w
bCkKLSAgICA6IEpTRE9NV3JhcHBlcjxUZXN0TmFtZWRDb25zdHJ1Y3Rvcj4oc3RydWN0dXJlLCBn
bG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpCi17Ci19Ci0KLXZvaWQgSlNUZXN0TmFtZWRDb25z
dHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQotewotICAgIEJhc2U6OmZpbmlzaENyZWF0
aW9uKHZtKTsKLSAgICBBU1NFUlQoaW5oZXJpdHModm0sIGluZm8oKSkpOwotCi0gICAgc3RhdGlj
X2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2Y8QWN0aXZlRE9NT2JqZWN0LCBUZXN0TmFtZWRDb25zdHJ1
Y3Rvcj46OnZhbHVlLCAiSW50ZXJmYWNlIGlzIG1hcmtlZCBhcyBbQWN0aXZlRE9NT2JqZWN0XSBi
dXQgaW1wbGVtZW50YXRpb24gY2xhc3MgZG9lcyBub3Qgc3ViY2xhc3MgQWN0aXZlRE9NT2JqZWN0
LiIpOwotCi19Ci0KLUpTT2JqZWN0KiBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yOjpjcmVhdGVQcm90
b3R5cGUoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQotewotICAgIHJl
dHVybiBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yUHJvdG90eXBlOjpjcmVhdGUodm0sICZnbG9iYWxP
YmplY3QsIEpTVGVzdE5hbWVkQ29uc3RydWN0b3JQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2
bSwgJmdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0Lm9iamVjdFByb3RvdHlwZSgpKSk7Ci19Ci0K
LUpTT2JqZWN0KiBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yOjpwcm90b3R5cGUoVk0mIHZtLCBKU0RP
TUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQotewotICAgIHJldHVybiBnZXRET01Qcm90b3R5
cGU8SlNUZXN0TmFtZWRDb25zdHJ1Y3Rvcj4odm0sIGdsb2JhbE9iamVjdCk7Ci19Ci0KLUpTVmFs
dWUgSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0b3IoVk0mIHZtLCBjb25zdCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQotewotICAgIHJldHVybiBnZXRET01Db25zdHJ1
Y3RvcjxKU1Rlc3ROYW1lZENvbnN0cnVjdG9yQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0
IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7Ci19Ci0KLUpTVmFsdWUgSlNUZXN0
TmFtZWRDb25zdHJ1Y3Rvcjo6Z2V0TmFtZWRDb25zdHJ1Y3RvcihWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QpCi17Ci0gICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVz
dE5hbWVkQ29uc3RydWN0b3JOYW1lZENvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxKU0RPTUdsb2Jh
bE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOwotfQotCi12b2lkIEpTVGVzdE5hbWVkQ29uc3RydWN0
b3I6OmRlc3Ryb3koSlNDOjpKU0NlbGwqIGNlbGwpCi17Ci0gICAgSlNUZXN0TmFtZWRDb25zdHJ1
Y3RvciogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEpTVGVzdE5hbWVkQ29uc3RydWN0b3IqPihj
ZWxsKTsKLSAgICB0aGlzT2JqZWN0LT5KU1Rlc3ROYW1lZENvbnN0cnVjdG9yOjp+SlNUZXN0TmFt
ZWRDb25zdHJ1Y3RvcigpOwotfQotCi1FbmNvZGVkSlNWYWx1ZSBqc1Rlc3ROYW1lZENvbnN0cnVj
dG9yQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQotewotICAgIFZNJiB2bSA9IEpTQzo6
Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7Ci0gICAgYXV0byogcHJvdG90eXBlID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3ROYW1lZENvbnN0cnVjdG9yUHJvdG90eXBlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIXByb3RvdHlwZSkpCi0gICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUpOwotICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0
b3IoSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KSwgcHJvdG90eXBlLT5nbG9iYWxPYmpl
Y3QoKSkpOwotfQotCi1ib29sIHNldEpTVGVzdE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1Y3RvcihK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCi17Ci0gICAgVk0mIHZtID0gSlNDOjpn
ZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKLSAgICBhdXRvKiBwcm90b3R5cGUgPSBqc0R5bmFtaWNDYXN0PEpT
VGVzdE5hbWVkQ29uc3RydWN0b3JQcm90b3R5cGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghcHJvdG90eXBlKSkgewotICAgICAgICB0aHJvd1ZN
VHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUpOwotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgfQotICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9y
Ci0gICAgcmV0dXJuIHByb3RvdHlwZS0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5j
b25zdHJ1Y3RvciwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSkpOwotfQotCi1KU0M6Oklz
b1N1YnNwYWNlKiBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yOjpzdWJzcGFjZUZvckltcGwoSlNDOjpW
TSYgdm0pCi17Ci0gICAgYXV0byYgY2xpZW50RGF0YSA9ICpzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50
RGF0YSo+KHZtLmNsaWVudERhdGEpOwotICAgIGF1dG8mIHNwYWNlcyA9IGNsaWVudERhdGEuc3Vi
c3BhY2VzKCk7Ci0gICAgaWYgKGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0
TmFtZWRDb25zdHJ1Y3Rvci5nZXQoKSkKLSAgICAgICAgcmV0dXJuIHNwYWNlOwotICAgIHN0YXRp
Y19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9iamVjdCwgSlNU
ZXN0TmFtZWRDb25zdHJ1Y3Rvcj4gfHwgIUpTVGVzdE5hbWVkQ29uc3RydWN0b3I6Om5lZWRzRGVz
dHJ1Y3Rpb24pOwotICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rl
c3RydWN0aWJsZU9iamVjdCwgSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvcj4pCi0gICAgICAgIHNwYWNl
cy5tX3N1YnNwYWNlRm9yVGVzdE5hbWVkQ29uc3RydWN0b3IgPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFw
Q2VsbFR5cGUuZ2V0KCksIEpTVGVzdE5hbWVkQ29uc3RydWN0b3IpOwotICAgIGVsc2UKLSAgICAg
ICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRDb25zdHJ1Y3RvciA9IG1ha2VVbmlxdWU8
SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5
cGUuZ2V0KCksIEpTVGVzdE5hbWVkQ29uc3RydWN0b3IpOwotICAgIGF1dG8qIHNwYWNlID0gc3Bh
Y2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRDb25zdHJ1Y3Rvci5nZXQoKTsKLUlHTk9SRV9XQVJO
SU5HU19CRUdJTigidW5yZWFjaGFibGUtY29kZSIpCi1JR05PUkVfV0FSTklOR1NfQkVHSU4oInRh
dXRvbG9naWNhbC1jb21wYXJlIikKLSAgICBpZiAoJkpTVGVzdE5hbWVkQ29uc3RydWN0b3I6OnZp
c2l0T3V0cHV0Q29uc3RyYWludHMgIT0gJkpTQzo6SlNDZWxsOjp2aXNpdE91dHB1dENvbnN0cmFp
bnRzKQotICAgICAgICBjbGllbnREYXRhLm91dHB1dENvbnN0cmFpbnRTcGFjZXMoKS5hcHBlbmQo
c3BhY2UpOwotSUdOT1JFX1dBUk5JTkdTX0VORAotSUdOT1JFX1dBUk5JTkdTX0VORAotICAgIHJl
dHVybiBzcGFjZTsKLX0KLQotdm9pZCBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yOjphbmFseXplSGVh
cChKU0NlbGwqIGNlbGwsIEhlYXBBbmFseXplciYgYW5hbHl6ZXIpCi17Ci0gICAgYXV0byogdGhp
c09iamVjdCA9IGpzQ2FzdDxKU1Rlc3ROYW1lZENvbnN0cnVjdG9yKj4oY2VsbCk7Ci0gICAgYW5h
bHl6ZXIuc2V0V3JhcHBlZE9iamVjdEZvckNlbGwoY2VsbCwgJnRoaXNPYmplY3QtPndyYXBwZWQo
KSk7Ci0gICAgaWYgKHRoaXNPYmplY3QtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKLSAgICAg
ICAgYW5hbHl6ZXIuc2V0TGFiZWxGb3JDZWxsKGNlbGwsICJ1cmwgIiArIHRoaXNPYmplY3QtPnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+dXJsKCkuc3RyaW5nKCkpOwotICAgIEJhc2U6OmFuYWx5
emVIZWFwKGNlbGwsIGFuYWx5emVyKTsKLX0KLQotYm9vbCBKU1Rlc3ROYW1lZENvbnN0cnVjdG9y
T3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93
bj4gaGFuZGxlLCB2b2lkKiwgU2xvdFZpc2l0b3ImIHZpc2l0b3IsIGNvbnN0IGNoYXIqKiByZWFz
b24pCi17Ci0gICAgYXV0byoganNUZXN0TmFtZWRDb25zdHJ1Y3RvciA9IGpzQ2FzdDxKU1Rlc3RO
YW1lZENvbnN0cnVjdG9yKj4oaGFuZGxlLnNsb3QoKS0+YXNDZWxsKCkpOwotICAgIGF1dG8mIHdy
YXBwZWQgPSBqc1Rlc3ROYW1lZENvbnN0cnVjdG9yLT53cmFwcGVkKCk7Ci0gICAgaWYgKCF3cmFw
cGVkLmlzQ29udGV4dFN0b3BwZWQoKSAmJiB3cmFwcGVkLmhhc1BlbmRpbmdBY3Rpdml0eSgpKSB7
Ci0gICAgICAgIGlmIChVTkxJS0VMWShyZWFzb24pKQotICAgICAgICAgICAgKnJlYXNvbiA9ICJB
Y3RpdmVET01PYmplY3Qgd2l0aCBwZW5kaW5nIGFjdGl2aXR5IjsKLSAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgIH0KLSAgICBVTlVTRURfUEFSQU0odmlzaXRvcik7Ci0gICAgVU5VU0VEX1BBUkFN
KHJlYXNvbik7Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi12b2lkIEpTVGVzdE5hbWVkQ29uc3Ry
dWN0b3JPd25lcjo6ZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZv
aWQqIGNvbnRleHQpCi17Ci0gICAgYXV0byoganNUZXN0TmFtZWRDb25zdHJ1Y3RvciA9IHN0YXRp
Y19jYXN0PEpTVGVzdE5hbWVkQ29uc3RydWN0b3IqPihoYW5kbGUuc2xvdCgpLT5hc0NlbGwoKSk7
Ci0gICAgYXV0byYgd29ybGQgPSAqc3RhdGljX2Nhc3Q8RE9NV3JhcHBlcldvcmxkKj4oY29udGV4
dCk7Ci0gICAgdW5jYWNoZVdyYXBwZXIod29ybGQsICZqc1Rlc3ROYW1lZENvbnN0cnVjdG9yLT53
cmFwcGVkKCksIGpzVGVzdE5hbWVkQ29uc3RydWN0b3IpOwotfQotCi0jaWYgRU5BQkxFKEJJTkRJ
TkdfSU5URUdSSVRZKQotI2lmIFBMQVRGT1JNKFdJTikKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxl
OiA0NDgzKQotZXh0ZXJuICJDIiB7IGV4dGVybiB2b2lkICgqY29uc3QgX19pZGVudGlmaWVyKCI/
P183VGVzdE5hbWVkQ29uc3RydWN0b3JAV2ViQ29yZUBANkJAIilbXSkoKTsgfQotI2Vsc2UKLWV4
dGVybiAiQyIgeyBleHRlcm4gdm9pZCogX1pUVk43V2ViQ29yZTIwVGVzdE5hbWVkQ29uc3RydWN0
b3JFW107IH0KLSNlbmRpZgotI2VuZGlmCi0KLUpTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVk
KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBS
ZWY8VGVzdE5hbWVkQ29uc3RydWN0b3I+JiYgaW1wbCkKLXsKLQotI2lmIEVOQUJMRShCSU5ESU5H
X0lOVEVHUklUWSkKLSAgICBjb25zdCB2b2lkKiBhY3R1YWxWVGFibGVQb2ludGVyID0gZ2V0VlRh
YmxlUG9pbnRlcihpbXBsLnB0cigpKTsKLSNpZiBQTEFURk9STShXSU4pCi0gICAgdm9pZCogZXhw
ZWN0ZWRWVGFibGVQb2ludGVyID0gX19pZGVudGlmaWVyKCI/P183VGVzdE5hbWVkQ29uc3RydWN0
b3JAV2ViQ29yZUBANkJAIik7Ci0jZWxzZQotICAgIHZvaWQqIGV4cGVjdGVkVlRhYmxlUG9pbnRl
ciA9ICZfWlRWTjdXZWJDb3JlMjBUZXN0TmFtZWRDb25zdHJ1Y3RvckVbMl07Ci0jZW5kaWYKLQot
ICAgIC8vIElmIHRoaXMgZmFpbHMgVGVzdE5hbWVkQ29uc3RydWN0b3IgZG9lcyBub3QgaGF2ZSBh
IHZ0YWJsZSwgc28geW91IG5lZWQgdG8gYWRkIHRoZQotICAgIC8vIEltcGxlbWVudGF0aW9uTGFj
a3NWVGFibGUgYXR0cmlidXRlIHRvIHRoZSBpbnRlcmZhY2UgZGVmaW5pdGlvbgotICAgIHN0YXRp
Y19hc3NlcnQoc3RkOjppc19wb2x5bW9ycGhpYzxUZXN0TmFtZWRDb25zdHJ1Y3Rvcj46OnZhbHVl
LCAiVGVzdE5hbWVkQ29uc3RydWN0b3IgaXMgbm90IHBvbHltb3JwaGljIik7Ci0KLSAgICAvLyBJ
ZiB5b3UgaGl0IHRoaXMgYXNzZXJ0aW9uIHlvdSBlaXRoZXIgaGF2ZSBhIHVzZSBhZnRlciBmcmVl
IGJ1Zywgb3IKLSAgICAvLyBUZXN0TmFtZWRDb25zdHJ1Y3RvciBoYXMgc3ViY2xhc3Nlcy4gSWYg
VGVzdE5hbWVkQ29uc3RydWN0b3IgaGFzIHN1YmNsYXNzZXMgdGhhdCBnZXQgcGFzc2VkCi0gICAg
Ly8gdG8gdG9KUygpIHdlIGN1cnJlbnRseSByZXF1aXJlIFRlc3ROYW1lZENvbnN0cnVjdG9yIHlv
dSB0byBvcHQgb3V0IG9mIGJpbmRpbmcgaGFyZGVuaW5nCi0gICAgLy8gYnkgYWRkaW5nIHRoZSBT
a2lwVlRhYmxlVmFsaWRhdGlvbiBhdHRyaWJ1dGUgdG8gdGhlIGludGVyZmFjZSBJREwgZGVmaW5p
dGlvbgotICAgIFJFTEVBU0VfQVNTRVJUKGFjdHVhbFZUYWJsZVBvaW50ZXIgPT0gZXhwZWN0ZWRW
VGFibGVQb2ludGVyKTsKLSNlbmRpZgotICAgIHJldHVybiBjcmVhdGVXcmFwcGVyPFRlc3ROYW1l
ZENvbnN0cnVjdG9yPihnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOwotfQotCi1KU0M6OkpT
VmFsdWUgdG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0RP
TUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0TmFtZWRDb25zdHJ1Y3RvciYgaW1wbCkK
LXsKLSAgICByZXR1cm4gd3JhcChsZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QsIGlt
cGwpOwotfQotCi1UZXN0TmFtZWRDb25zdHJ1Y3RvciogSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6
dG9XcmFwcGVkKEpTQzo6Vk0mIHZtLCBKU0M6OkpTVmFsdWUgdmFsdWUpCi17Ci0gICAgaWYgKGF1
dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE5hbWVkQ29uc3RydWN0b3IqPih2bSwg
dmFsdWUpKQotICAgICAgICByZXR1cm4gJndyYXBwZXItPndyYXBwZWQoKTsKLSAgICByZXR1cm4g
bnVsbHB0cjsKLX0KLQotfQoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwCl9fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X18KRGVsZXRlZDogc3ZuOmVvbC1zdHlsZQojIyAtMSArMCwwICMjCi1MRgpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmgJ
KHJldmlzaW9uIDI2NjYxOSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmgJKG5vbmV4aXN0ZW50KQpAQCAtMSw5NCArMCww
IEBACi0vKgotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2Ug
cHJvamVjdC4KLSAgICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJp
bmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICAgIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gICAgTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0g
ICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAgICBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICAgIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotCi0gICAgWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZQotICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUg
Q09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAgICBCb3N0
b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAi
SlNET01XcmFwcGVyLmgiCi0jaW5jbHVkZSAiVGVzdE5hbWVkQ29uc3RydWN0b3IuaCIKLSNpbmNs
dWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFz
cyBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yIDogcHVibGljIEpTRE9NV3JhcHBlcjxUZXN0TmFtZWRD
b25zdHJ1Y3Rvcj4gewotcHVibGljOgotICAgIHVzaW5nIEJhc2UgPSBKU0RPTVdyYXBwZXI8VGVz
dE5hbWVkQ29uc3RydWN0b3I+OwotICAgIHN0YXRpYyBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yKiBj
cmVhdGUoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgUmVmPFRlc3ROYW1lZENvbnN0cnVjdG9yPiYmIGltcGwpCi0gICAgewotICAgICAg
ICBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2Nh
dGVDZWxsPEpTVGVzdE5hbWVkQ29uc3RydWN0b3I+KGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwKSkg
SlNUZXN0TmFtZWRDb25zdHJ1Y3RvcihzdHJ1Y3R1cmUsICpnbG9iYWxPYmplY3QsIFdURk1vdmUo
aW1wbCkpOwotICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKGdsb2JhbE9iamVjdC0+dm0oKSk7
Ci0gICAgICAgIHJldHVybiBwdHI7Ci0gICAgfQotCi0gICAgc3RhdGljIEpTQzo6SlNPYmplY3Qq
IGNyZWF0ZVByb3RvdHlwZShKU0M6OlZNJiwgSlNET01HbG9iYWxPYmplY3QmKTsKLSAgICBzdGF0
aWMgSlNDOjpKU09iamVjdCogcHJvdG90eXBlKEpTQzo6Vk0mLCBKU0RPTUdsb2JhbE9iamVjdCYp
OwotICAgIHN0YXRpYyBUZXN0TmFtZWRDb25zdHJ1Y3RvciogdG9XcmFwcGVkKEpTQzo6Vk0mLCBK
U0M6OkpTVmFsdWUpOwotICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDOjpKU0NlbGwqKTsKLQot
ICAgIERFQ0xBUkVfSU5GTzsKLQotICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3Ry
dWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
Qzo6SlNWYWx1ZSBwcm90b3R5cGUpCi0gICAgewotICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1
cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlND
OjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSwgSlNDOjpOb25BcnJheSk7Ci0g
ICAgfQotCi0gICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1Y3RvcihKU0M6OlZNJiwg
Y29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOwotICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0
TmFtZWRDb25zdHJ1Y3RvcihKU0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOwotICAgIHRl
bXBsYXRlPHR5cGVuYW1lLCBKU0M6OlN1YnNwYWNlQWNjZXNzIG1vZGU+IHN0YXRpYyBKU0M6Oklz
b1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKLSAgICB7Ci0gICAgICAgIGlmIGNv
bnN0ZXhwciAobW9kZSA9PSBKU0M6OlN1YnNwYWNlQWNjZXNzOjpDb25jdXJyZW50bHkpCi0gICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgcmV0dXJuIHN1YnNwYWNlRm9ySW1wbCh2
bSk7Ci0gICAgfQotICAgIHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvckltcGwo
SlNDOjpWTSYgdm0pOwotICAgIHN0YXRpYyB2b2lkIGFuYWx5emVIZWFwKEpTQ2VsbCosIEpTQzo6
SGVhcEFuYWx5emVyJik7Ci1wcm90ZWN0ZWQ6Ci0gICAgSlNUZXN0TmFtZWRDb25zdHJ1Y3RvcihK
U0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0JiwgUmVmPFRlc3ROYW1lZENvbnN0cnVj
dG9yPiYmKTsKLQotICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYpOwotfTsKLQotY2xh
c3MgSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvck93bmVyIDogcHVibGljIEpTQzo6V2Vha0hhbmRsZU93
bmVyIHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIGJvb2wgaXNSZWFjaGFibGVGcm9tT3BhcXVlUm9v
dHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiwgdm9pZCogY29udGV4dCwgSlNDOjpTbG90Vmlz
aXRvciYsIGNvbnN0IGNoYXIqKik7Ci0gICAgdmlydHVhbCB2b2lkIGZpbmFsaXplKEpTQzo6SGFu
ZGxlPEpTQzo6VW5rbm93bj4sIHZvaWQqIGNvbnRleHQpOwotfTsKLQotaW5saW5lIEpTQzo6V2Vh
a0hhbmRsZU93bmVyKiB3cmFwcGVyT3duZXIoRE9NV3JhcHBlcldvcmxkJiwgVGVzdE5hbWVkQ29u
c3RydWN0b3IqKQotewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxKU1Rlc3ROYW1lZENvbnN0
cnVjdG9yT3duZXI+IG93bmVyOwotICAgIHJldHVybiAmb3duZXIuZ2V0KCk7Ci19Ci0KLWlubGlu
ZSB2b2lkKiB3cmFwcGVyS2V5KFRlc3ROYW1lZENvbnN0cnVjdG9yKiB3cmFwcGFibGVPYmplY3Qp
Ci17Ci0gICAgcmV0dXJuIHdyYXBwYWJsZU9iamVjdDsKLX0KLQotSlNDOjpKU1ZhbHVlIHRvSlMo
SlNDOjpKU0dsb2JhbE9iamVjdCosIEpTRE9NR2xvYmFsT2JqZWN0KiwgVGVzdE5hbWVkQ29uc3Ry
dWN0b3ImKTsKLWlubGluZSBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0
TmFtZWRDb25zdHJ1Y3RvciogaW1wbCkgeyByZXR1cm4gaW1wbCA/IHRvSlMobGV4aWNhbEdsb2Jh
bE9iamVjdCwgZ2xvYmFsT2JqZWN0LCAqaW1wbCkgOiBKU0M6OmpzTnVsbCgpOyB9Ci1KU0M6OkpT
VmFsdWUgdG9KU05ld2x5Q3JlYXRlZChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNET01HbG9iYWxP
YmplY3QqLCBSZWY8VGVzdE5hbWVkQ29uc3RydWN0b3I+JiYpOwotaW5saW5lIEpTQzo6SlNWYWx1
ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZlB0cjxUZXN0TmFtZWRDb25z
dHJ1Y3Rvcj4mJiBpbXBsKSB7IHJldHVybiBpbXBsID8gdG9KU05ld2x5Q3JlYXRlZChsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QsIGltcGwucmVsZWFzZU5vbk51bGwoKSkgOiBKU0M6
OmpzTnVsbCgpOyB9Ci0KLXRlbXBsYXRlPD4gc3RydWN0IEpTRE9NV3JhcHBlckNvbnZlcnRlclRy
YWl0czxUZXN0TmFtZWRDb25zdHJ1Y3Rvcj4gewotICAgIHVzaW5nIFdyYXBwZXJDbGFzcyA9IEpT
VGVzdE5hbWVkQ29uc3RydWN0b3I7Ci0gICAgdXNpbmcgVG9XcmFwcGVkUmV0dXJuVHlwZSA9IFRl
c3ROYW1lZENvbnN0cnVjdG9yKjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKClByb3Bl
cnR5IGNoYW5nZXMgb246IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZENvbnN0cnVjdG9yLmgKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46ZW9sLXN0eWxl
CiMjIC0xICswLDAgIyMKLUxGClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2RvbS9Ub3VjaEV2ZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9kb20vVG91Y2hFdmVudC5pZGwJKHJldmlzaW9uIDI2NjYxOSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2RvbS9Ub3VjaEV2ZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjQsOSArMjQsMTAg
QEAKICAqLwogCiBbCi0gICAgQ29uZGl0aW9uYWw9VE9VQ0hfRVZFTlRTLAotICAgIENvbnN0cnVj
dG9yKERPTVN0cmluZyB0eXBlLCBvcHRpb25hbCBUb3VjaEV2ZW50SW5pdCBldmVudEluaXREaWN0
KSwKKyAgICBDb25kaXRpb25hbD1UT1VDSF9FVkVOVFMKIF0gaW50ZXJmYWNlIFRvdWNoRXZlbnQg
OiBVSUV2ZW50IHsKKyAgICBjb25zdHJ1Y3RvcihET01TdHJpbmcgdHlwZSwgb3B0aW9uYWwgVG91
Y2hFdmVudEluaXQgZXZlbnRJbml0RGljdCk7CisKICAgICByZWFkb25seSBhdHRyaWJ1dGUgVG91
Y2hMaXN0IHRvdWNoZXM7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFRvdWNoTGlzdCB0YXJnZXRU
b3VjaGVzOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBUb3VjaExpc3QgY2hhbmdlZFRvdWNoZXM7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdWRpb0VsZW1lbnQuaWRsCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF1ZGlvRWxlbWVudC5pZGwJKHJldmlzaW9u
IDI2NjYxOSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF1ZGlvRWxlbWVudC5pZGwJKHdv
cmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKIAogWwogICAgIENvbmRpdGlvbmFsPVZJREVP
LAotICAgIENvbnN0cnVjdG9yQ2FsbFdpdGg9RG9jdW1lbnQsCi0gICAgTmFtZWRDb25zdHJ1Y3Rv
cj1BdWRpbyhvcHRpb25hbCBbQXRvbVN0cmluZ10gRE9NU3RyaW5nIHNyYykKKyAgICBMZWdhY3lG
YWN0b3J5RnVuY3Rpb25DYWxsV2l0aD1Eb2N1bWVudCwKKyAgICBMZWdhY3lGYWN0b3J5RnVuY3Rp
b249QXVkaW8ob3B0aW9uYWwgW0F0b21TdHJpbmddIERPTVN0cmluZyBzcmMpCiBdIGludGVyZmFj
ZSBIVE1MQXVkaW9FbGVtZW50IDogSFRNTE1lZGlhRWxlbWVudCB7CiB9OwpJbmRleDogU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaWRsCShyZXZpc2lvbiAyNjY2MTkpCisrKyBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBA
IC0yMSw4ICsyMSw4IEBACiBbCiAgICAgRXhwb3J0TWFjcm89V0VCQ09SRV9FWFBPUlQsCiAgICAg
SlNHZW5lcmF0ZVRvTmF0aXZlT2JqZWN0LAotICAgIENvbnN0cnVjdG9yQ2FsbFdpdGg9RG9jdW1l
bnQsCi0gICAgTmFtZWRDb25zdHJ1Y3Rvcj1JbWFnZShvcHRpb25hbCB1bnNpZ25lZCBsb25nIHdp
ZHRoLCBvcHRpb25hbCB1bnNpZ25lZCBsb25nIGhlaWdodCkKKyAgICBMZWdhY3lGYWN0b3J5RnVu
Y3Rpb25DYWxsV2l0aD1Eb2N1bWVudCwKKyAgICBMZWdhY3lGYWN0b3J5RnVuY3Rpb249SW1hZ2Uo
b3B0aW9uYWwgdW5zaWduZWQgbG9uZyB3aWR0aCwgb3B0aW9uYWwgdW5zaWduZWQgbG9uZyBoZWln
aHQpCiBdIGludGVyZmFjZSBIVE1MSW1hZ2VFbGVtZW50IDogSFRNTEVsZW1lbnQgewogICAgIFtD
RVJlYWN0aW9ucz1Ob3ROZWVkZWQsIFJlZmxlY3RdIGF0dHJpYnV0ZSBET01TdHJpbmcgbmFtZTsK
ICAgICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVkLCBSZWZsZWN0XSBhdHRyaWJ1dGUgRE9NU3RyaW5n
IGFsaWduOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5pZGwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5pZGwJ
KHJldmlzaW9uIDI2NjYxOSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1l
bnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yMCw5ICsyMCw5IEBACiAKIFsKICAgICBKU0dlbmVy
YXRlVG9OYXRpdmVPYmplY3QsCi0gICAgQ29uc3RydWN0b3JNYXlUaHJvd0V4Y2VwdGlvbiwKLSAg
ICBDb25zdHJ1Y3RvckNhbGxXaXRoPURvY3VtZW50LAotICAgIE5hbWVkQ29uc3RydWN0b3I9T3B0
aW9uKG9wdGlvbmFsIERPTVN0cmluZyB0ZXh0ID0gIiIsIG9wdGlvbmFsIERPTVN0cmluZyB2YWx1
ZSwgb3B0aW9uYWwgYm9vbGVhbiBkZWZhdWx0U2VsZWN0ZWQgPSBmYWxzZSwgb3B0aW9uYWwgYm9v
bGVhbiBzZWxlY3RlZCA9IGZhbHNlKSwKKyAgICBMZWdhY3lGYWN0b3J5RnVuY3Rpb25NYXlUaHJv
d0V4Y2VwdGlvbiwKKyAgICBMZWdhY3lGYWN0b3J5RnVuY3Rpb25DYWxsV2l0aD1Eb2N1bWVudCwK
KyAgICBMZWdhY3lGYWN0b3J5RnVuY3Rpb249T3B0aW9uKG9wdGlvbmFsIERPTVN0cmluZyB0ZXh0
ID0gIiIsIG9wdGlvbmFsIERPTVN0cmluZyB2YWx1ZSwgb3B0aW9uYWwgYm9vbGVhbiBkZWZhdWx0
U2VsZWN0ZWQgPSBmYWxzZSwgb3B0aW9uYWwgYm9vbGVhbiBzZWxlY3RlZCA9IGZhbHNlKSwKIF0g
aW50ZXJmYWNlIEhUTUxPcHRpb25FbGVtZW50IDogSFRNTEVsZW1lbnQgewogICAgIFtDRVJlYWN0
aW9ucz1Ob3ROZWVkZWQsIFJlZmxlY3RdIGF0dHJpYnV0ZSBib29sZWFuIGRpc2FibGVkOwogICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBIVE1MRm9ybUVsZW1lbnQgZm9ybTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5pZGwJKHJldmlzaW9uIDI2NjYxOSkKKysr
IFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmlkbAkod29ya2luZyBjb3B5
KQpAQCAtMzAsNyArMzAsNyBAQAogICAgIEN1c3RvbVRvSlNPYmplY3QsCiAgICAgSlNDdXN0b21N
YXJrRnVuY3Rpb24sCiAgICAgU2tpcFZUYWJsZVZhbGlkYXRpb24sCi0gICAgQ29uc3RydWN0b3JF
bmFibGVkQnlTZXR0aW5nPUdlbmVyaWNDdWVBUEkKKyAgICBMZWdhY3lGYWN0b3J5RnVuY3Rpb25F
bmFibGVkQnlTZXR0aW5nPUdlbmVyaWNDdWVBUEkKIF0gaW50ZXJmYWNlIFRleHRUcmFja0N1ZSA6
IEV2ZW50VGFyZ2V0IHsKICAgICBbQ2FsbFdpdGg9RG9jdW1lbnQsIE1heVRocm93RXhjZXB0aW9u
XSBjb25zdHJ1Y3Rvcihkb3VibGUgc3RhcnRUaW1lLCBkb3VibGUgZW5kVGltZSwgRG9jdW1lbnRG
cmFnbWVudCBjdWVOb2RlKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407998</attachid>
            <date>2020-09-04 10:53:43 -0700</date>
            <delta_ts>2020-09-04 17:19:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213316-20200904105342.patch</filename>
            <type>text/plain</type>
            <size>108967</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2NjYyMCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYyIEBACisyMDIwLTA5LTA0ICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViSURMXSBBZG9wdCBMZWdhY3lG
YWN0b3J5RnVuY3Rpb24gZXh0ZW5kZWQgYXR0cmlidXRlIGluIGxpZXUgb2YgTmFtZWRDb25zdHJ1
Y3RvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEz
MzE2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVu
YW1lIHRoZSBmb2xsb3dpbmcgdGhlIGV4dGVuZGVkIGF0dHJpYnV0ZXMgdG8gbW9yZSBjbG9zZWx5
IGFsaWduIHdpdGggV2ViSURMOgorICAgICAgICAgICAgTmFtZWRDb25zdHJ1Y3RvciAtPiBMZWdh
Y3lGYWN0b3J5RnVuY3Rpb24KKyAgICAgICAgICAgIENvbnN0cnVjdG9yQ2FsbFdpdGggLT4gTGVn
YWN5RmFjdG9yeUZ1bmN0aW9uQ2FsbFdpdGgKKyAgICAgICAgICAgIENvbnN0cnVjdG9yRW5hYmxl
ZEJ5U2V0dGluZyAtPiBMZWdhY3lGYWN0b3J5RnVuY3Rpb25FbmFibGVkQnlTZXR0aW5nCisgICAg
ICAgICAgICBDb25zdHJ1Y3Rvck1heVRocm93RXhjZXB0aW9uIC0+IExlZ2FjeUZhY3RvcnlGdW5j
dGlvbk1heVRocm93RXhjZXB0aW9uCisKKyAgICAgICAgTm90ZSwgQ29uc3RydWN0b3JDYWxsV2l0
aCwgQ29uc3RydWN0b3JFbmFibGVkQnlTZXR0aW5nIGFuZCBDb25zdHJ1Y3Rvck1heVRocm93RXhj
ZXB0aW9uCisgICAgICAgIHdlcmUgb25seSB1c2VkIHdpdGggTmFtZWRDb25zdHJ1Y3RvcnMgcHJl
dmlvdXNseSBhcyBub3JtYWwgY29uc3RydWN0b3JzIGRvbid0IHJlcXVpcmUKKyAgICAgICAgaW50
ZXJmYWNlIGxldmVsIGV4dGVuZGVkIGF0dHJpYnV0ZXMgZm9yIHRoZXNlIGFzIHRoZSBleHRlbmRl
ZCBhdHRyaWJ1dGUgY2FuIGJlIGRpcmVjdGx5CisgICAgICAgIG9uIHRoZSBjb25zdHJ1Y3RvciBp
dHNlbGYuIElkZWFsbHksIHdlIHdvdWxkIGRvIHRoZSBzYW1lIHdpdGggTGVnYWN5RmFjdG9yeUZ1
bmN0aW9uIGJ5CisgICAgICAgIGFsbG93aW5nIGV4dGVuZGVkIGF0dHJpYnV0ZXMgb24gdGhlIG9w
ZXJhdG9yIGl0c2VsZiBsaWtlOgorICAgICAgICAKKyAgICAgICAgWworICAgICAgICAgICAgLi4u
CisgICAgICAgICAgICBMZWdhY3lGYWN0b3J5RnVuY3Rpb249W0NhbGxXaXRoPURvY3VtZW50XSBB
dWRpbyhvcHRpb25hbCBbQXRvbVN0cmluZ10gRE9NU3RyaW5nIHNyYykKKyAgICAgICAgXQorCisg
ICAgICAgIGJ1dCB0aGlzIHJlcXVpcmVzIGNoYW5nZXMgdG8gdGhlIElETFBhcnNlciAod2hpY2gg
YXJlIHN0cmFpZ2h0Zm9yd2FyZCkgYW5kIGNyZWF0ZXMgYSBsb3Qgb2YKKyAgICAgICAgYWRkaXRp
b25hbCBjb21wbGV4aXR5IGluc2lkZSB0aGUgdmVyeSBoYWNreSBwcmVwcm9jZXNzLWlkbHMucGwg
cmVwcm9kdWNpbmcgdGhvc2UgcGFyc2VyIGNoYW5nZXMuCisgICAgICAgIEkgd2lsbCBsZWF2ZSB0
aGF0IGFkZGl0aW9uYWwgY2xlYW51cCBmb3IgYSBzdWJzZXF1ZW50IGNoYW5nZS4gCisKKyAgICAg
ICAgKiBodG1sL0hUTUxBdWRpb0VsZW1lbnQuaWRsOgorICAgICAgICAqIGh0bWwvSFRNTEltYWdl
RWxlbWVudC5pZGw6CisgICAgICAgICogaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5pZGw6CisgICAg
ICAgICogaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuaWRsOgorICAgICAgICBVcGRhdGUgdG8gdXNl
IG5ldyBuYW1lcy4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NTGVnYWN5RmFjdG9yeUZ1
bmN0aW9uLmg6IENvcGllZCBmcm9tIGJpbmRpbmdzL2pzL0pTRE9NTmFtZWRDb25zdHJ1Y3Rvci5o
LgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NTmFtZWRDb25zdHJ1Y3Rvci5oOiBSZW1vdmVk
LgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
VXBkYXRlIGZvciByZW5hbWUgb2YgSlNET01OYW1lZENvbnN0cnVjdG9yLmggdG8gSlNET01MZWdh
Y3lGYWN0b3J5RnVuY3Rpb24uaAorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9ySlMucG06CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIucG06Cisg
ICAgICAgIChhcHBseUV4dGVuZGVkQXR0cmlidXRlTGlzdCk6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy9wcmVwcm9jZXNzLWlkbHMucGw6CisgICAgICAgIChHZW5lcmF0ZUNvbnN0cnVjdG9y
QXR0cmlidXRlcyk6CisgICAgICAgIFVwZGF0ZSBJREwgcHJvY2Vzc2luZyB0byBoYW5kbGUgbmV3
IG5hbWVzLgorICAgICAgICAKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0
ZXMuanNvbjoKKyAgICAgICAgVXBkYXRlIGV4dGVuZGVkIGF0dHJpYnV0ZSBkZWZpbml0aW9ucyBm
b3IgbmV3IG5hbWVzLiBSZW1vdmVkIHVudXNlZCBDb25zdHJ1Y3RvciBleHRlbmRlZCBhdHRyaWJ1
dGUuCisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2Jq
ZWN0LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TGVnYWN5
RmFjdG9yeUZ1bmN0aW9uLmNwcDogQ29waWVkIGZyb20gYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24uaDogQ29waWVkIGZyb20gYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuaC4KKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHA6IFJlbW92
ZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3Ry
dWN0b3IuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvU3VwcGxl
bWVudGFsRGVwZW5kZW5jaWVzLmRlcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbi5pZGw6IENvcGllZCBmcm9tIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9UZXN0TmFtZWRDb25zdHJ1Y3Rvci5pZGwuCisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Rlc3ROYW1lZENvbnN0cnVjdG9yLmlkbDogUmVtb3ZlZC4KKyAgICAgICAgVXBk
YXRlIHRlc3RzIGZvciBuZXcgbmFtZXMuCisKIDIwMjAtMDktMDQgIEFsZXggQ2hyaXN0ZW5zZW4g
IDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBBbGlnbiBFVUMtSlAsIElTTy0y
MDIyLUpQLCBhbmQgU2hpZnRfSklTIGRlY29kaW5nIHdpdGggQ2hyb21lLCBGaXJlZm94LCBhbmQg
dGhlIHNwZWNpZmljYXRpb24KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI2NjYyMCkKKysrIFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAt
MTAwNDMsNyArMTAwNDMsNyBAQAogCQk3QzBDRUYyOTFFNEE1NEQzMDA4REVCODAgLyogSlNET01D
b25zdHJ1Y3RvcldpdGhEb2N1bWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBKU0RPTUNvbnN0cnVjdG9yV2l0aERvY3VtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTdDMENFRjJBMUU0QTU1NkMwMDhERUI4MCAvKiBKU0RPTUJ1aWx0aW5Db25zdHJ1Y3Rv
ckJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNET01CdWlsdGluQ29u
c3RydWN0b3JCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDMENFRjJCMUU0
QTU1QzMwMDhERUI4MCAvKiBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0
YWJsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3QzBDRUYyQzFFNEE1NjREMDA4
REVCODAgLyogSlNET01OYW1lZENvbnN0cnVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEpTRE9NTmFtZWRDb25zdHJ1Y3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk3QzBDRUYyQzFFNEE1NjREMDA4REVCODAgLyogSlNET01MZWdhY3lGYWN0b3J5RnVu
Y3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNET01MZWdhY3lGYWN0
b3J5RnVuY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MwQ0VGMkQxRTRB
NTZDNTAwOERFQjgwIC8qIEpTRE9NQnVpbHRpbkNvbnN0cnVjdG9yLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEpTRE9NQnVpbHRpbkNvbnN0cnVjdG9yLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTdDMENFRjJFMUU0QTU4MzIwMDhERUI4MCAvKiBKU0RPTUJ1aWx0
aW5Db25zdHJ1Y3RvckJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNET01CdWlsdGluQ29uc3RydWN0b3JCYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJN0MwQ0VGMkYxRTRBNThBRDAwOERFQjgwIC8qIEpTRE9NQ29uc3RydWN0b3JCYXNl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRE9NQ29uc3RydWN0
b3JCYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI2NzQ0LDcgKzI2NzQ0
LDcgQEAKIAkJCQk3QzBDRUYyQjFFNEE1NUMzMDA4REVCODAgLyogSlNET01Db25zdHJ1Y3Rvck5v
dENvbnN0cnVjdGFibGUuaCAqLywKIAkJCQk3QzBDRUYzMDFFNEE1OEYxMDA4REVCODAgLyogSlNE
T01Db25zdHJ1Y3RvcldpdGhEb2N1bWVudC5jcHAgKi8sCiAJCQkJN0MwQ0VGMjkxRTRBNTREMzAw
OERFQjgwIC8qIEpTRE9NQ29uc3RydWN0b3JXaXRoRG9jdW1lbnQuaCAqLywKLQkJCQk3QzBDRUYy
QzFFNEE1NjREMDA4REVCODAgLyogSlNET01OYW1lZENvbnN0cnVjdG9yLmggKi8sCisJCQkJN0Mw
Q0VGMkMxRTRBNTY0RDAwOERFQjgwIC8qIEpTRE9NTGVnYWN5RmFjdG9yeUZ1bmN0aW9uLmggKi8s
CiAJCQkpOwogCQkJbmFtZSA9IENvbnN0cnVjdG9yczsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUxlZ2FjeUZhY3RvcnlG
dW5jdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
TGVnYWN5RmFjdG9yeUZ1bmN0aW9uLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01MZWdhY3lGYWN0b3J5RnVuY3Rpb24uaAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDgxIEBACisvKgorICogIENvcHlyaWdodCAoQykgMjAxNSwgMjAxNiBDYW5vbiBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNl
IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAq
ICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy
IHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w
ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZ
IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBM
ZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwg
UHVibGljCisgKiAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0
ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICovCisK
KyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSlNET01Db25zdHJ1Y3RvcldpdGhEb2N1bWVudC5o
IgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8vIEZJTVhFOiBXaHkgY2FuJ3QgTGVnYWN5RmFj
dG9yeUZ1bmN0aW9ucyBiZSB1c2VkIHdpdGggd29ya2Vycz8KK3RlbXBsYXRlPHR5cGVuYW1lIEpT
Q2xhc3M+IGNsYXNzIEpTRE9NTGVnYWN5RmFjdG9yeUZ1bmN0aW9uIGZpbmFsIDogcHVibGljIEpT
RE9NQ29uc3RydWN0b3JXaXRoRG9jdW1lbnQgeworcHVibGljOgorICAgIHVzaW5nIEJhc2UgPSBK
U0RPTUNvbnN0cnVjdG9yV2l0aERvY3VtZW50OworCisgICAgc3RhdGljIEpTRE9NTGVnYWN5RmFj
dG9yeUZ1bmN0aW9uKiBjcmVhdGUoSlNDOjpWTSYsIEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9i
YWxPYmplY3QmKTsKKyAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShK
U0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpOwor
CisgICAgREVDTEFSRV9JTkZPOworCisgICAgLy8gTXVzdCBiZSBkZWZpbmVkIGZvciBlYWNoIHNw
ZWNpYWxpemF0aW9uIGNsYXNzLgorICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgcHJvdG90eXBlRm9y
U3RydWN0dXJlKEpTQzo6Vk0mLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYpOworCitwcml2YXRl
OgorICAgIEpTRE9NTGVnYWN5RmFjdG9yeUZ1bmN0aW9uKEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCisgICAgICAgIDogQmFzZShzdHJ1
Y3R1cmUsIGdsb2JhbE9iamVjdCkKKyAgICB7IAorICAgIH0KKworICAgIHZvaWQgZmluaXNoQ3Jl
YXRpb24oSlNDOjpWTSYsIEpTRE9NR2xvYmFsT2JqZWN0Jik7CisgICAgc3RhdGljIEpTQzo6Q2Fs
bERhdGEgZ2V0Q29uc3RydWN0RGF0YShKU0M6OkpTQ2VsbCopOworCisgICAgLy8gVXN1YWxseSBk
ZWZpbmVkIGZvciBlYWNoIHNwZWNpYWxpemF0aW9uIGNsYXNzLgorICAgIHZvaWQgaW5pdGlhbGl6
ZVByb3BlcnRpZXMoSlNDOjpWTSYsIEpTRE9NR2xvYmFsT2JqZWN0JikgeyB9CisgICAgLy8gTXVz
dCBiZSBkZWZpbmVkIGZvciBlYWNoIHNwZWNpYWxpemF0aW9uIGNsYXNzLgorICAgIHN0YXRpYyBK
U0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0KEpTQzo6SlNHbG9iYWxP
YmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgSlNDbGFz
cz4gaW5saW5lIEpTRE9NTGVnYWN5RmFjdG9yeUZ1bmN0aW9uPEpTQ2xhc3M+KiBKU0RPTUxlZ2Fj
eUZhY3RvcnlGdW5jdGlvbjxKU0NsYXNzPjo6Y3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0M6OlN0cnVj
dHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQoreworICAg
IEpTRE9NTGVnYWN5RmFjdG9yeUZ1bmN0aW9uKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwg
SlNDOjphbGxvY2F0ZUNlbGw8SlNET01MZWdhY3lGYWN0b3J5RnVuY3Rpb24+KHZtLmhlYXApKSBK
U0RPTUxlZ2FjeUZhY3RvcnlGdW5jdGlvbihzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCk7CisgICAg
Y29uc3RydWN0b3ItPmZpbmlzaENyZWF0aW9uKHZtLCBnbG9iYWxPYmplY3QpOworICAgIHJldHVy
biBjb25zdHJ1Y3RvcjsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgSlNDbGFzcz4gaW5saW5lIEpT
Qzo6U3RydWN0dXJlKiBKU0RPTUxlZ2FjeUZhY3RvcnlGdW5jdGlvbjxKU0NsYXNzPjo6Y3JlYXRl
U3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3Qs
IEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpj
cmVhdGUodm0sICZnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9i
amVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKK30KKwordGVtcGxhdGU8dHlwZW5h
bWUgSlNDbGFzcz4gaW5saW5lIHZvaWQgSlNET01MZWdhY3lGYWN0b3J5RnVuY3Rpb248SlNDbGFz
cz46OmZpbmlzaENyZWF0aW9uKEpTQzo6Vk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFs
T2JqZWN0KQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGdsb2JhbE9iamVjdCk7CisgICAg
QVNTRVJUKGluaGVyaXRzKHZtLCBpbmZvKCkpKTsKKyAgICBpbml0aWFsaXplUHJvcGVydGllcyh2
bSwgZ2xvYmFsT2JqZWN0KTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgSlNDbGFzcz4gaW5saW5l
IEpTQzo6Q2FsbERhdGEgSlNET01MZWdhY3lGYWN0b3J5RnVuY3Rpb248SlNDbGFzcz46OmdldENv
bnN0cnVjdERhdGEoSlNDOjpKU0NlbGwqKQoreworICAgIEpTQzo6Q2FsbERhdGEgY29uc3RydWN0
RGF0YTsKKyAgICBjb25zdHJ1Y3REYXRhLnR5cGUgPSBKU0M6OkNhbGxEYXRhOjpUeXBlOjpOYXRp
dmU7CisgICAgY29uc3RydWN0RGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjb25zdHJ1Y3Q7CisgICAg
cmV0dXJuIGNvbnN0cnVjdERhdGE7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NTmFtZWRDb25zdHJ1Y3Rvci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NTmFtZWRDb25zdHJ1Y3Rv
ci5oCShyZXZpc2lvbiAyNjY2MjApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TU5hbWVkQ29uc3RydWN0b3IuaAkobm9uZXhpc3RlbnQpCkBAIC0xLDgxICswLDAgQEAKLS8qCi0g
KiAgQ29weXJpZ2h0IChDKSAyMDE1LCAyMDE2IENhbm9uIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqICBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCi0gKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExlc3NlciBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhp
cyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogIExlc3NlciBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl
ZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFs
b25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJl
Ci0gKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwg
Qm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNs
dWRlICJKU0RPTUNvbnN0cnVjdG9yV2l0aERvY3VtZW50LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotLy8gRklNWEU6IFdoeSBjYW4ndCBuYW1lZCBjb25zdHJ1Y3RvcnMgYmUgdXNlZCB3aXRo
IHdvcmtlcnM/Ci10ZW1wbGF0ZTx0eXBlbmFtZSBKU0NsYXNzPiBjbGFzcyBKU0RPTU5hbWVkQ29u
c3RydWN0b3IgZmluYWwgOiBwdWJsaWMgSlNET01Db25zdHJ1Y3RvcldpdGhEb2N1bWVudCB7Ci1w
dWJsaWM6Ci0gICAgdXNpbmcgQmFzZSA9IEpTRE9NQ29uc3RydWN0b3JXaXRoRG9jdW1lbnQ7Ci0K
LSAgICBzdGF0aWMgSlNET01OYW1lZENvbnN0cnVjdG9yKiBjcmVhdGUoSlNDOjpWTSYsIEpTQzo6
U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3QmKTsKLSAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1
cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpTQzo6
SlNWYWx1ZSBwcm90b3R5cGUpOwotCi0gICAgREVDTEFSRV9JTkZPOwotCi0gICAgLy8gTXVzdCBi
ZSBkZWZpbmVkIGZvciBlYWNoIHNwZWNpYWxpemF0aW9uIGNsYXNzLgotICAgIHN0YXRpYyBKU0M6
OkpTVmFsdWUgcHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mLCBjb25zdCBKU0RPTUdsb2Jh
bE9iamVjdCYpOwotCi1wcml2YXRlOgotICAgIEpTRE9NTmFtZWRDb25zdHJ1Y3RvcihKU0M6OlN0
cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQotICAg
ICAgICA6IEJhc2Uoc3RydWN0dXJlLCBnbG9iYWxPYmplY3QpCi0gICAgeyAKLSAgICB9Ci0KLSAg
ICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0mLCBKU0RPTUdsb2JhbE9iamVjdCYpOwotICAg
IHN0YXRpYyBKU0M6OkNhbGxEYXRhIGdldENvbnN0cnVjdERhdGEoSlNDOjpKU0NlbGwqKTsKLQot
ICAgIC8vIFVzdWFsbHkgZGVmaW5lZCBmb3IgZWFjaCBzcGVjaWFsaXphdGlvbiBjbGFzcy4KLSAg
ICB2b2lkIGluaXRpYWxpemVQcm9wZXJ0aWVzKEpTQzo6Vk0mLCBKU0RPTUdsb2JhbE9iamVjdCYp
IHsgfQotICAgIC8vIE11c3QgYmUgZGVmaW5lZCBmb3IgZWFjaCBzcGVjaWFsaXphdGlvbiBjbGFz
cy4KLSAgICBzdGF0aWMgSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVj
dChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpDYWxsRnJhbWUqKTsKLX07Ci0KLXRlbXBsYXRl
PHR5cGVuYW1lIEpTQ2xhc3M+IGlubGluZSBKU0RPTU5hbWVkQ29uc3RydWN0b3I8SlNDbGFzcz4q
IEpTRE9NTmFtZWRDb25zdHJ1Y3RvcjxKU0NsYXNzPjo6Y3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0M6
OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQot
ewotICAgIEpTRE9NTmFtZWRDb25zdHJ1Y3RvciogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGws
IEpTQzo6YWxsb2NhdGVDZWxsPEpTRE9NTmFtZWRDb25zdHJ1Y3Rvcj4odm0uaGVhcCkpIEpTRE9N
TmFtZWRDb25zdHJ1Y3RvcihzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCk7Ci0gICAgY29uc3RydWN0
b3ItPmZpbmlzaENyZWF0aW9uKHZtLCBnbG9iYWxPYmplY3QpOwotICAgIHJldHVybiBjb25zdHJ1
Y3RvcjsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgSlNDbGFzcz4gaW5saW5lIEpTQzo6U3RydWN0
dXJlKiBKU0RPTU5hbWVkQ29uc3RydWN0b3I8SlNDbGFzcz46OmNyZWF0ZVN0cnVjdHVyZShKU0M6
OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUg
cHJvdG90eXBlKQotewotICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCAmZ2xv
YmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1
Y3R1cmVGbGFncyksIGluZm8oKSk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEpTQ2xhc3M+IGlu
bGluZSB2b2lkIEpTRE9NTmFtZWRDb25zdHJ1Y3RvcjxKU0NsYXNzPjo6ZmluaXNoQ3JlYXRpb24o
SlNDOjpWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCi17Ci0gICAgQmFz
ZTo6ZmluaXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0KTsKLSAgICBBU1NFUlQoaW5oZXJpdHModm0s
IGluZm8oKSkpOwotICAgIGluaXRpYWxpemVQcm9wZXJ0aWVzKHZtLCBnbG9iYWxPYmplY3QpOwot
fQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBKU0NsYXNzPiBpbmxpbmUgSlNDOjpDYWxsRGF0YSBKU0RP
TU5hbWVkQ29uc3RydWN0b3I8SlNDbGFzcz46OmdldENvbnN0cnVjdERhdGEoSlNDOjpKU0NlbGwq
KQotewotICAgIEpTQzo6Q2FsbERhdGEgY29uc3RydWN0RGF0YTsKLSAgICBjb25zdHJ1Y3REYXRh
LnR5cGUgPSBKU0M6OkNhbGxEYXRhOjpUeXBlOjpOYXRpdmU7Ci0gICAgY29uc3RydWN0RGF0YS5u
YXRpdmUuZnVuY3Rpb24gPSBjb25zdHJ1Y3Q7Ci0gICAgcmV0dXJuIGNvbnN0cnVjdERhdGE7Ci19
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCShyZXZpc2lvbiAyNjY2MjApCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkod29y
a2luZyBjb3B5KQpAQCAtMjc3Nyw3ICsyNzc3LDcgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAg
IyBDb25zdHJ1Y3RvciBvYmplY3QgZ2V0dGVyCiAgICAgdW5sZXNzICgkaW50ZXJmYWNlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPntOb0ludGVyZmFjZU9iamVjdH0pIHsKICAgICAgICAgcHVzaChAaGVh
ZGVyQ29udGVudCwgIiAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6
Vk0mLCBjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7XG4iKTsKLSAgICAgICAgcHVzaChAaGVh
ZGVyQ29udGVudCwgIiAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldE5hbWVkQ29uc3RydWN0b3Io
SlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqKTtcbiIpIGlmICRpbnRlcmZhY2UtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+e05hbWVkQ29uc3RydWN0b3J9OworICAgICAgICBwdXNoKEBoZWFkZXJD
b250ZW50LCAiICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0TGVnYWN5RmFjdG9yeUZ1bmN0aW9u
KEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7XG4iKSBpZiAkaW50ZXJmYWNlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPntMZWdhY3lGYWN0b3J5RnVuY3Rpb259OwogICAgIH0KIAogICAgICMg
U2VyaWFsaXplciBmdW5jdGlvbi4KQEAgLTM4NjIsMTAgKzM4NjIsMTAgQEAgc3ViIEdlbmVyYXRl
UnVudGltZUVuYWJsZUNvbmRpdGlvbmFsU3RyaQogICAgICAgICBwdXNoKEBjb25qdW5jdHMsICAi
JHtuYW1lfTo6ZW5hYmxlZEZvckNvbnRleHQoIiAuICRjb250ZXh0UmVmIC4gIikiKTsKICAgICB9
CiAKLSAgICBpZiAoJGNvbnRleHQtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NvbnN0cnVjdG9yRW5h
YmxlZEJ5U2V0dGluZ30pIHsKLSAgICAgICAgYXNzZXJ0KCJNdXN0IHNwZWNpZnkgdmFsdWUgZm9y
IENvbnN0cnVjdG9yRW5hYmxlZEJ5U2V0dGluZy4iKSBpZiAkY29udGV4dC0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57Q29uc3RydWN0b3JFbmFibGVkQnlTZXR0aW5nfSBlcSAiVkFMVUVfSVNfTUlTU0lO
RyI7CisgICAgaWYgKCRjb250ZXh0LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntMZWdhY3lGYWN0b3J5
RnVuY3Rpb25FbmFibGVkQnlTZXR0aW5nfSkgeworICAgICAgICBhc3NlcnQoIk11c3Qgc3BlY2lm
eSB2YWx1ZSBmb3IgTGVnYWN5RmFjdG9yeUZ1bmN0aW9uRW5hYmxlZEJ5U2V0dGluZy4iKSBpZiAk
Y29udGV4dC0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57TGVnYWN5RmFjdG9yeUZ1bmN0aW9uRW5hYmxl
ZEJ5U2V0dGluZ30gZXEgIlZBTFVFX0lTX01JU1NJTkciOwogCi0gICAgICAgIG15IEBzZXR0aW5n
cyA9IHNwbGl0KC8mLywgJGNvbnRleHQtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NvbnN0cnVjdG9y
RW5hYmxlZEJ5U2V0dGluZ30pOworICAgICAgICBteSBAc2V0dGluZ3MgPSBzcGxpdCgvJi8sICRj
b250ZXh0LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntMZWdhY3lGYWN0b3J5RnVuY3Rpb25FbmFibGVk
QnlTZXR0aW5nfSk7CiAgICAgICAgIGZvcmVhY2ggbXkgJHNldHRpbmcgKEBzZXR0aW5ncykgewog
ICAgICAgICAgICAgcHVzaChAY29uanVuY3RzLCAiZG93bmNhc3Q8RG9jdW1lbnQ+KGpzQ2FzdDxK
U0RPTUdsb2JhbE9iamVjdCo+KCIgLiAkZ2xvYmFsT2JqZWN0UHRyIC4gIiktPnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSktPnNldHRpbmdzKCkuIiAuIFRvTWV0aG9kTmFtZSgkc2V0dGluZykgLiAi
RW5hYmxlZCgpIik7CiAgICAgICAgIH0KQEAgLTQyNTYsOCArNDI1Niw4IEBAIHN1YiBHZW5lcmF0
ZUltcGxlbWVudGF0aW9uCiAgICAgICAgIG15ICRwcm90b0NsYXNzTmFtZSA9ICIke2NsYXNzTmFt
ZX1Qcm90b3R5cGUiOwogICAgICAgICBHZW5lcmF0ZUNvbnN0cnVjdG9yRGVmaW5pdGlvbnMoXEBp
bXBsQ29udGVudCwgJGNsYXNzTmFtZSwgJHByb3RvQ2xhc3NOYW1lLCAkdmlzaWJsZUludGVyZmFj
ZU5hbWUsICRpbnRlcmZhY2UpOwogCi0gICAgICAgIG15ICRuYW1lZENvbnN0cnVjdG9yID0gJGlu
dGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57TmFtZWRDb25zdHJ1Y3Rvcn07Ci0gICAgICAg
IEdlbmVyYXRlQ29uc3RydWN0b3JEZWZpbml0aW9ucyhcQGltcGxDb250ZW50LCAkY2xhc3NOYW1l
LCAkcHJvdG9DbGFzc05hbWUsICRuYW1lZENvbnN0cnVjdG9yLCAkaW50ZXJmYWNlLCAiR2VuZXJh
dGluZ05hbWVkQ29uc3RydWN0b3IiKSBpZiAkbmFtZWRDb25zdHJ1Y3RvcjsKKyAgICAgICAgbXkg
JGxlZ2FjeUZhY3RvcnlGdW5jdGlvbiA9ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+
e0xlZ2FjeUZhY3RvcnlGdW5jdGlvbn07CisgICAgICAgIEdlbmVyYXRlQ29uc3RydWN0b3JEZWZp
bml0aW9ucyhcQGltcGxDb250ZW50LCAkY2xhc3NOYW1lLCAkcHJvdG9DbGFzc05hbWUsICRsZWdh
Y3lGYWN0b3J5RnVuY3Rpb24sICRpbnRlcmZhY2UsICJHZW5lcmF0aW5nTGVnYWN5RmFjdG9yeUZ1
bmN0aW9uIikgaWYgJGxlZ2FjeUZhY3RvcnlGdW5jdGlvbjsKICAgICB9CiAKICAgICAjIC0gQWRk
IGZ1bmN0aW9ucyBhbmQgY29uc3RhbnRzIHRvIGEgaGFzaHRhYmxlIGRlZmluaXRpb24KQEAgLTQ1
NDksMTAgKzQ1NDksMTAgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPCR7Y2xhc3NOYW1l
fUNvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2Jh
bE9iamVjdCkpO1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKIAot
ICAgICAgICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57TmFtZWRDb25zdHJ1
Y3Rvcn0pIHsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiSlNWYWx1ZSAke2NsYXNz
TmFtZX06OmdldE5hbWVkQ29uc3RydWN0b3IoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0KVxuIik7CisgICAgICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PntMZWdhY3lGYWN0b3J5RnVuY3Rpb259KSB7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIkpTVmFsdWUgJHtjbGFzc05hbWV9OjpnZXRMZWdhY3lGYWN0b3J5RnVuY3Rpb24oVk0mIHZt
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KVxuIik7CiAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIntcbiIpOwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
cmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPCR7Y2xhc3NOYW1lfU5hbWVkQ29uc3RydWN0b3I+KHZt
LCAqanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7XG4iKTsKKyAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3Rvcjwk
e2NsYXNzTmFtZX1MZWdhY3lGYWN0b3J5RnVuY3Rpb24+KHZtLCAqanNDYXN0PEpTRE9NR2xvYmFs
T2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7XG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAifVxuXG4iKTsKICAgICAgICAgfQogICAgIH0KQEAgLTUwMjIsMTcgKzUwMjIsMjEgQEAg
c3ViIEdlbmVyYXRlQXR0cmlidXRlR2V0dGVyQm9keURlZmluaXRpbwogICAgICAgICBteSAkZXZl
bnROYW1lID0gRXZlbnRIYW5kbGVyQXR0cmlidXRlRXZlbnROYW1lKCRhdHRyaWJ1dGUpOwogICAg
ICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgcmV0dXJuICRnZXR0ZXIodGhpc09iamVjdC53
cmFwcGVkKCksICRldmVudE5hbWUsIHdvcmxkRm9yRE9NT2JqZWN0KHRoaXNPYmplY3QpKTtcbiIp
OwogICAgIH0gZWxzaWYgKCRpc0NvbnN0cnVjdG9yKSB7CisgICAgICAgICMgRklYTUU6IFRoaXMg
c2hvdWxkIGJlIHN3aXRjaGVkIHRvIHVzaW5nIGFuIGV4dGVuZGVkIGF0dHJpYnV0ZSByYXRoZXIg
dGhhbiBpbmZlcmluZyB0aGlzIGluZm9ybWF0aW9uIGZyb20gbmFtZS4KICAgICAgICAgbXkgJGNv
bnN0cnVjdG9yVHlwZSA9ICRhdHRyaWJ1dGUtPnR5cGUtPm5hbWU7CisgICAgICAgIG15ICRjb25z
dHJ1Y3RvckdldHRlciA9ICgkY29uc3RydWN0b3JUeXBlID1+IC9MZWdhY3lGYWN0b3J5RnVuY3Rp
b25Db25zdHJ1Y3RvciQvKSA/ICJnZXRMZWdhY3lGYWN0b3J5RnVuY3Rpb24iIDogImdldENvbnN0
cnVjdG9yIjsKKworICAgICAgICAjIFN0cmlwIG9mZiBhbnkgdHJhaWxpbmcgIkNvbnN0cnVjdG9y
IiBvciAiTGVnYWN5RmFjdG9yeUZ1bmN0aW9uQ29uc3RydWN0b3IiIHRvIGdldCB0aGUgcmVhbCB0
eXBlLgogICAgICAgICAkY29uc3RydWN0b3JUeXBlID1+IHMvQ29uc3RydWN0b3IkLy87CisgICAg
ICAgICRjb25zdHJ1Y3RvclR5cGUgPX4gcy9MZWdhY3lGYWN0b3J5RnVuY3Rpb24kLy87CisKICAg
ICAgICAgIyBXaGVuIENvbnN0cnVjdG9yIGF0dHJpYnV0ZSBpcyB1c2VkIGJ5IERPTVdpbmRvdy5p
ZGwsIGl0J3MgY29ycmVjdCB0byBwYXNzIHRoaXNPYmplY3QgYXMgdGhlIGdsb2JhbCBvYmplY3QK
ICAgICAgICAgIyBXaGVuIEpTRE9NV3JhcHBlcnMgaGF2ZSBhIGJhY2stcG9pbnRlciB0byB0aGUg
Z2xvYmFsT2JqZWN0IHdlIGNhbiBwYXNzIHRoaXNPYmplY3QtPmdsb2JhbE9iamVjdCgpCiAgICAg
ICAgIGlmICgkaW50ZXJmYWNlLT50eXBlLT5uYW1lIGVxICJET01XaW5kb3ciKSB7Ci0gICAgICAg
ICAgICBteSAkbmFtZWQgPSAoJGNvbnN0cnVjdG9yVHlwZSA9fiAvTmFtZWQkLykgPyAiTmFtZWQi
IDogIiI7Ci0gICAgICAgICAgICAkY29uc3RydWN0b3JUeXBlID1+IHMvTmFtZWQkLy87Ci0gICAg
ICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgcmV0dXJuIEpTIiAuICRjb25zdHJ1Y3Rv
clR5cGUgLiAiOjpnZXQke25hbWVkfUNvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9i
YWxPYmplY3QpLCAmdGhpc09iamVjdCk7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQCRvdXRwdXRB
cnJheSwgIiAgICByZXR1cm4gSlMiIC4gJGNvbnN0cnVjdG9yVHlwZSAuICI6OiR7Y29uc3RydWN0
b3JHZXR0ZXJ9KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCAmdGhpc09iamVjdCk7
XG4iKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJK
UyIgLiAkY29uc3RydWN0b3JUeXBlIC4gIi5oIiwgJGNvbmRpdGlvbmFsKTsKLSAgICAgICAgICAg
IHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICByZXR1cm4gSlMiIC4gJGNvbnN0cnVjdG9yVHlwZSAu
ICI6OmdldENvbnN0cnVjdG9yKEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCB0aGlz
T2JqZWN0Lmdsb2JhbE9iamVjdCgpKTtcbiIpOworICAgICAgICAgICAgcHVzaChAJG91dHB1dEFy
cmF5LCAiICAgIHJldHVybiBKUyIgLiAkY29uc3RydWN0b3JUeXBlIC4gIjo6JHtjb25zdHJ1Y3Rv
ckdldHRlcn0oSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIHRoaXNPYmplY3QuZ2xv
YmFsT2JqZWN0KCkpO1xuIik7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICBpZiAo
JGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q2FjaGVkQXR0cmlidXRlfSkgewpAQCAt
NTE4MSwxMCArNTE4NSwxMCBAQCBzdWIgR2VuZXJhdGVBdHRyaWJ1dGVTZXR0ZXJCb2R5RGVmaW5p
dGlvCiAgICAgfSBlbHNpZiAoJGlzQ29uc3RydWN0b3IpIHsKICAgICAgICAgbXkgJGNvbnN0cnVj
dG9yVHlwZSA9ICRhdHRyaWJ1dGUtPnR5cGUtPm5hbWU7CiAgICAgICAgICRjb25zdHJ1Y3RvclR5
cGUgPX4gcy9Db25zdHJ1Y3RvciQvLzsKLSAgICAgICAgIyAkY29uc3RydWN0b3JUeXBlIH49IC9D
b25zdHJ1Y3RvciQvIGluZGljYXRlcyB0aGF0IGl0IGlzIE5hbWVkQ29uc3RydWN0b3IuCi0gICAg
ICAgICMgV2UgZG8gbm90IGdlbmVyYXRlIHRoZSBoZWFkZXIgZmlsZSBmb3IgTmFtZWRDb25zdHJ1
Y3RvciBvZiBjbGFzcyBYWFhYLAotICAgICAgICAjIHNpbmNlIHdlIGdlbmVyYXRlIHRoZSBOYW1l
ZENvbnN0cnVjdG9yIGRlY2xhcmF0aW9uIGludG8gdGhlIGhlYWRlciBmaWxlIG9mIGNsYXNzIFhY
WFguCi0gICAgICAgIGlmICgkY29uc3RydWN0b3JUeXBlIG5lICJhbnkiIGFuZCAkY29uc3RydWN0
b3JUeXBlICF+IC9OYW1lZCQvKSB7CisgICAgICAgICMgJGNvbnN0cnVjdG9yVHlwZSB+PSAvTGVn
YWN5RmFjdG9yeUZ1bmN0aW9uJC8gaW5kaWNhdGVzIHRoYXQgaXQgaXMgTGVnYWN5RmFjdG9yeUZ1
bmN0aW9uLgorICAgICAgICAjIFdlIGRvIG5vdCBnZW5lcmF0ZSB0aGUgaGVhZGVyIGZpbGUgZm9y
IExlZ2FjeUZhY3RvcnlGdW5jdGlvbiBvZiBjbGFzcyBYWFhYLAorICAgICAgICAjIHNpbmNlIHdl
IGdlbmVyYXRlIHRoZSBMZWdhY3lGYWN0b3J5RnVuY3Rpb24gZGVjbGFyYXRpb24gaW50byB0aGUg
aGVhZGVyIGZpbGUgb2YgY2xhc3MgWFhYWC4KKyAgICAgICAgaWYgKCRjb25zdHJ1Y3RvclR5cGUg
bmUgImFueSIgYW5kICRjb25zdHJ1Y3RvclR5cGUgIX4gL0xlZ2FjeUZhY3RvcnlGdW5jdGlvbiQv
KSB7CiAgICAgICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiSlMiIC4gJGNvbnN0cnVjdG9yVHlw
ZSAuICIuaCIsICRjb25kaXRpb25hbCk7CiAgICAgICAgIH0KICAgICAgICAgbXkgJGlkID0gJGF0
dHJpYnV0ZS0+bmFtZTsKQEAgLTU5MzIsNyArNTkzNiw3IEBAIHN1YiBHZW5lcmF0ZVBhcmFtZXRl
cnNDaGVjawogICAgIH0gZWxzZSB7CiAgICAgICAgICRxdW90ZWRGdW5jdGlvbk5hbWUgPSAibnVs
bHB0ciI7CiAgICAgICAgIHVubGVzcyAoJGNhbGxXaXRoKSB7Ci0gICAgICAgICAgICAkY2FsbFdp
dGggPSAkb3BlcmF0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDb25zdHJ1Y3RvckNhbGxXaXRo
fTsKKyAgICAgICAgICAgICRjYWxsV2l0aCA9ICRvcGVyYXRpb24tPmV4dGVuZGVkQXR0cmlidXRl
cy0+e0xlZ2FjeUZhY3RvcnlGdW5jdGlvbkNhbGxXaXRofTsKICAgICAgICAgfQogICAgICAgICBw
dXNoKEBhcmd1bWVudHMsIEdlbmVyYXRlQ29uc3RydWN0b3JDYWxsV2l0aFVzaW5nUG9pbnRlcnMo
JGNhbGxXaXRoLCBcQCRvdXRwdXRBcnJheSwgJHZpc2libGVJbnRlcmZhY2VOYW1lLCAiKmNhc3Rl
ZFRoaXMiKSk7CiAgICAgfQpAQCAtNzQxMyw3ICs3NDE3LDcgQEAgc3ViIEdldENvbnN0cnVjdG9y
VGVtcGxhdGVDbGFzc05hbWUKIHsKICAgICBteSAkaW50ZXJmYWNlID0gc2hpZnQ7CiAgICAgcmV0
dXJuICJKU0RPTUJ1aWx0aW5Db25zdHJ1Y3RvciIgaWYgSGFzSlNCdWlsdGluQ29uc3RydWN0b3Io
JGludGVyZmFjZSk7Ci0gICAgcmV0dXJuICJKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJs
ZSIgaWYgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57TmFtZWRDb25zdHJ1Y3Rvcn07
CisgICAgcmV0dXJuICJKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZSIgaWYgJGludGVy
ZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57TGVnYWN5RmFjdG9yeUZ1bmN0aW9ufTsKICAgICBy
ZXR1cm4gIkpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlIiB1bmxlc3MgSXNDb25zdHJ1
Y3RhYmxlKCRpbnRlcmZhY2UpOwogICAgIHJldHVybiAiSlNET01Db25zdHJ1Y3RvciI7CiB9CkBA
IC03NDI3LDIyICs3NDMxLDIyIEBAIHN1YiBHZW5lcmF0ZUNvbnN0cnVjdG9yRGVjbGFyYXRpb24K
ICAgICBteSAkdGVtcGxhdGVDbGFzc05hbWUgPSBHZXRDb25zdHJ1Y3RvclRlbXBsYXRlQ2xhc3NO
YW1lKCRpbnRlcmZhY2UpOwogCiAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIiR7dGVtcGxhdGVDbGFz
c05hbWV9LmgiKTsKLSAgICBBZGRUb0ltcGxJbmNsdWRlcygiSlNET01OYW1lZENvbnN0cnVjdG9y
LmgiKSBpZiAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntOYW1lZENvbnN0cnVjdG9y
fTsKKyAgICBBZGRUb0ltcGxJbmNsdWRlcygiSlNET01MZWdhY3lGYWN0b3J5RnVuY3Rpb24uaCIp
IGlmICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0xlZ2FjeUZhY3RvcnlGdW5jdGlv
bn07CiAKICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ1c2luZyAkY29uc3RydWN0b3JDbGFzc05h
bWUgPSAkdGVtcGxhdGVDbGFzc05hbWU8JGNsYXNzTmFtZT47XG4iKTsKLSAgICBwdXNoKEAkb3V0
cHV0QXJyYXksICJ1c2luZyBKUyR7aW50ZXJmYWNlTmFtZX1OYW1lZENvbnN0cnVjdG9yID0gSlNE
T01OYW1lZENvbnN0cnVjdG9yPCRjbGFzc05hbWU+O1xuIikgaWYgJGludGVyZmFjZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57TmFtZWRDb25zdHJ1Y3Rvcn07CisgICAgcHVzaChAJG91dHB1dEFycmF5
LCAidXNpbmcgSlMke2ludGVyZmFjZU5hbWV9TGVnYWN5RmFjdG9yeUZ1bmN0aW9uID0gSlNET01M
ZWdhY3lGYWN0b3J5RnVuY3Rpb248JGNsYXNzTmFtZT47XG4iKSBpZiAkaW50ZXJmYWNlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPntMZWdhY3lGYWN0b3J5RnVuY3Rpb259OwogICAgIHB1c2goQCRvdXRw
dXRBcnJheSwgIlxuIik7CiB9CiAKIHN1YiBHZW5lcmF0ZUNvbnN0cnVjdG9yRGVmaW5pdGlvbnMK
IHsKLSAgICBteSAoJG91dHB1dEFycmF5LCAkY2xhc3NOYW1lLCAkcHJvdG9DbGFzc05hbWUsICR2
aXNpYmxlSW50ZXJmYWNlTmFtZSwgJGludGVyZmFjZSwgJGdlbmVyYXRpbmdOYW1lZENvbnN0cnVj
dG9yKSA9IEBfOworICAgIG15ICgkb3V0cHV0QXJyYXksICRjbGFzc05hbWUsICRwcm90b0NsYXNz
TmFtZSwgJHZpc2libGVJbnRlcmZhY2VOYW1lLCAkaW50ZXJmYWNlLCAkZ2VuZXJhdGluZ0xlZ2Fj
eUZhY3RvcnlGdW5jdGlvbikgPSBAXzsKIAogICAgIGlmIChJc0NvbnN0cnVjdGFibGUoJGludGVy
ZmFjZSkpIHsKICAgICAgICAgbXkgQGNvbnN0cnVjdG9ycyA9IEB7JGludGVyZmFjZS0+Y29uc3Ry
dWN0b3JzfTsKICAgICAgICAgaWYgKEBjb25zdHJ1Y3RvcnMgPiAxKSB7CiAgICAgICAgICAgICBm
b3JlYWNoIG15ICRjb25zdHJ1Y3RvciAoQGNvbnN0cnVjdG9ycykgewotICAgICAgICAgICAgICAg
IEdlbmVyYXRlQ29uc3RydWN0b3JEZWZpbml0aW9uKCRvdXRwdXRBcnJheSwgJGNsYXNzTmFtZSwg
JHByb3RvQ2xhc3NOYW1lLCAkdmlzaWJsZUludGVyZmFjZU5hbWUsICRpbnRlcmZhY2UsICRnZW5l
cmF0aW5nTmFtZWRDb25zdHJ1Y3RvciwgJGNvbnN0cnVjdG9yKTsKKyAgICAgICAgICAgICAgICBH
ZW5lcmF0ZUNvbnN0cnVjdG9yRGVmaW5pdGlvbigkb3V0cHV0QXJyYXksICRjbGFzc05hbWUsICRw
cm90b0NsYXNzTmFtZSwgJHZpc2libGVJbnRlcmZhY2VOYW1lLCAkaW50ZXJmYWNlLCAkZ2VuZXJh
dGluZ0xlZ2FjeUZhY3RvcnlGdW5jdGlvbiwgJGNvbnN0cnVjdG9yKTsKICAgICAgICAgICAgIH0K
IAogICAgICAgICAgICAgbXkgJG92ZXJsb2FkRnVuY3Rpb25QcmVmaXggPSAiY29uc3RydWN0JHtj
bGFzc05hbWV9IjsKQEAgLTc0NTcsMjMgKzc0NjEsMjMgQEAgc3ViIEdlbmVyYXRlQ29uc3RydWN0
b3JEZWZpbml0aW9ucwogCiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7
CiAgICAgICAgIH0gZWxzaWYgKEBjb25zdHJ1Y3RvcnMgPT0gMSkgewotICAgICAgICAgICAgR2Vu
ZXJhdGVDb25zdHJ1Y3RvckRlZmluaXRpb24oJG91dHB1dEFycmF5LCAkY2xhc3NOYW1lLCAkcHJv
dG9DbGFzc05hbWUsICR2aXNpYmxlSW50ZXJmYWNlTmFtZSwgJGludGVyZmFjZSwgJGdlbmVyYXRp
bmdOYW1lZENvbnN0cnVjdG9yLCAkY29uc3RydWN0b3JzWzBdKTsKKyAgICAgICAgICAgIEdlbmVy
YXRlQ29uc3RydWN0b3JEZWZpbml0aW9uKCRvdXRwdXRBcnJheSwgJGNsYXNzTmFtZSwgJHByb3Rv
Q2xhc3NOYW1lLCAkdmlzaWJsZUludGVyZmFjZU5hbWUsICRpbnRlcmZhY2UsICRnZW5lcmF0aW5n
TGVnYWN5RmFjdG9yeUZ1bmN0aW9uLCAkY29uc3RydWN0b3JzWzBdKTsKICAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgIEdlbmVyYXRlQ29uc3RydWN0b3JEZWZpbml0aW9uKCRvdXRwdXRBcnJh
eSwgJGNsYXNzTmFtZSwgJHByb3RvQ2xhc3NOYW1lLCAkdmlzaWJsZUludGVyZmFjZU5hbWUsICRp
bnRlcmZhY2UsICRnZW5lcmF0aW5nTmFtZWRDb25zdHJ1Y3Rvcik7CisgICAgICAgICAgICBHZW5l
cmF0ZUNvbnN0cnVjdG9yRGVmaW5pdGlvbigkb3V0cHV0QXJyYXksICRjbGFzc05hbWUsICRwcm90
b0NsYXNzTmFtZSwgJHZpc2libGVJbnRlcmZhY2VOYW1lLCAkaW50ZXJmYWNlLCAkZ2VuZXJhdGlu
Z0xlZ2FjeUZhY3RvcnlGdW5jdGlvbik7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBHZW5lcmF0
ZUNvbnN0cnVjdG9ySGVscGVyTWV0aG9kcygkb3V0cHV0QXJyYXksICRjbGFzc05hbWUsICRwcm90
b0NsYXNzTmFtZSwgJHZpc2libGVJbnRlcmZhY2VOYW1lLCAkaW50ZXJmYWNlLCAkZ2VuZXJhdGlu
Z05hbWVkQ29uc3RydWN0b3IpOworICAgIEdlbmVyYXRlQ29uc3RydWN0b3JIZWxwZXJNZXRob2Rz
KCRvdXRwdXRBcnJheSwgJGNsYXNzTmFtZSwgJHByb3RvQ2xhc3NOYW1lLCAkdmlzaWJsZUludGVy
ZmFjZU5hbWUsICRpbnRlcmZhY2UsICRnZW5lcmF0aW5nTGVnYWN5RmFjdG9yeUZ1bmN0aW9uKTsK
IH0KIAogc3ViIEdlbmVyYXRlQ29uc3RydWN0b3JEZWZpbml0aW9uCiB7Ci0gICAgbXkgKCRvdXRw
dXRBcnJheSwgJGNsYXNzTmFtZSwgJHByb3RvQ2xhc3NOYW1lLCAkdmlzaWJsZUludGVyZmFjZU5h
bWUsICRpbnRlcmZhY2UsICRnZW5lcmF0aW5nTmFtZWRDb25zdHJ1Y3RvciwgJG9wZXJhdGlvbikg
PSBAXzsKKyAgICBteSAoJG91dHB1dEFycmF5LCAkY2xhc3NOYW1lLCAkcHJvdG9DbGFzc05hbWUs
ICR2aXNpYmxlSW50ZXJmYWNlTmFtZSwgJGludGVyZmFjZSwgJGdlbmVyYXRpbmdMZWdhY3lGYWN0
b3J5RnVuY3Rpb24sICRvcGVyYXRpb24pID0gQF87CiAKICAgICByZXR1cm4gaWYgSGFzSlNCdWls
dGluQ29uc3RydWN0b3IoJGludGVyZmFjZSk7CiAKICAgICBteSAkaW50ZXJmYWNlTmFtZSA9ICRp
bnRlcmZhY2UtPnR5cGUtPm5hbWU7Ci0gICAgbXkgJGNvbnN0cnVjdG9yQ2xhc3NOYW1lID0gJGdl
bmVyYXRpbmdOYW1lZENvbnN0cnVjdG9yID8gIiR7Y2xhc3NOYW1lfU5hbWVkQ29uc3RydWN0b3Ii
IDogIiR7Y2xhc3NOYW1lfUNvbnN0cnVjdG9yIjsKKyAgICBteSAkY29uc3RydWN0b3JDbGFzc05h
bWUgPSAkZ2VuZXJhdGluZ0xlZ2FjeUZhY3RvcnlGdW5jdGlvbiA/ICIke2NsYXNzTmFtZX1MZWdh
Y3lGYWN0b3J5RnVuY3Rpb24iIDogIiR7Y2xhc3NOYW1lfUNvbnN0cnVjdG9yIjsKIAogICAgIGlm
IChJc0NvbnN0cnVjdGFibGUoJGludGVyZmFjZSkpIHsKICAgICAgICAgaWYgKEhhc0N1c3RvbUNv
bnN0cnVjdG9yKCRpbnRlcmZhY2UpKSB7CkBAIC03NDgyLDcgKzc0ODYsNyBAQCBzdWIgR2VuZXJh
dGVDb25zdHJ1Y3RvckRlZmluaXRpb24KICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwg
IiAgICBBU1NFUlQoY2FsbEZyYW1lKTtcbiIpOwogICAgICAgICAgICAgcHVzaChAJG91dHB1dEFy
cmF5LCAiICAgIHJldHVybiBjb25zdHJ1Y3Qke2NsYXNzTmFtZX0obGV4aWNhbEdsb2JhbE9iamVj
dCwgKmNhbGxGcmFtZSk7XG4iKTsKICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIn1c
blxuIik7Ci0gICAgICAgICB9IGVsc2lmICghSGFzQ3VzdG9tQ29uc3RydWN0b3IoJGludGVyZmFj
ZSkgJiYgKCEkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntOYW1lZENvbnN0cnVjdG9y
fSB8fCAkZ2VuZXJhdGluZ05hbWVkQ29uc3RydWN0b3IpKSB7CisgICAgICAgICB9IGVsc2lmICgh
SGFzQ3VzdG9tQ29uc3RydWN0b3IoJGludGVyZmFjZSkgJiYgKCEkaW50ZXJmYWNlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPntMZWdhY3lGYWN0b3J5RnVuY3Rpb259IHx8ICRnZW5lcmF0aW5nTGVnYWN5
RmFjdG9yeUZ1bmN0aW9uKSkgewogICAgICAgICAgICAgbXkgJGlzT3ZlcmxvYWRlZCA9ICRvcGVy
YXRpb24tPntvdmVybG9hZHN9ICYmIEB7JG9wZXJhdGlvbi0+e292ZXJsb2Fkc319ID4gMTsKICAg
ICAgICAgICAgIGlmICgkaXNPdmVybG9hZGVkKSB7CiAgICAgICAgICAgICAgICAgcHVzaChAJG91
dHB1dEFycmF5LCAic3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBjb25zdHJ1Y3Qke2NsYXNz
TmFtZX0kb3BlcmF0aW9uLT57b3ZlcmxvYWRJbmRleH0oSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKVxuIik7CkBAIC03NTA2LDEyICs3NTEw
LDEyIEBAIHN1YiBHZW5lcmF0ZUNvbnN0cnVjdG9yRGVmaW5pdGlvbgogCiAgICAgICAgICAgICBH
ZW5lcmF0ZUFyZ3VtZW50c0NvdW50Q2hlY2soJG91dHB1dEFycmF5LCAkb3BlcmF0aW9uLCAkaW50
ZXJmYWNlLCAiICAgICIpOwogCi0gICAgICAgICAgICBteSAkZnVuY3Rpb25JbXBsZW1lbnRhdGlv
bk5hbWUgPSAkZ2VuZXJhdGluZ05hbWVkQ29uc3RydWN0b3IgPyAiY3JlYXRlRm9ySlNDb25zdHJ1
Y3RvciIgOiAiY3JlYXRlIjsKKyAgICAgICAgICAgIG15ICRmdW5jdGlvbkltcGxlbWVudGF0aW9u
TmFtZSA9ICRnZW5lcmF0aW5nTGVnYWN5RmFjdG9yeUZ1bmN0aW9uID8gImNyZWF0ZUZvckpTQ29u
c3RydWN0b3IiIDogImNyZWF0ZSI7CiAgICAgICAgICAgICBteSAkZnVuY3Rpb25TdHJpbmcgPSBH
ZW5lcmF0ZVBhcmFtZXRlcnNDaGVjaygkb3V0cHV0QXJyYXksICRvcGVyYXRpb24sICRpbnRlcmZh
Y2UsICRmdW5jdGlvbkltcGxlbWVudGF0aW9uTmFtZSwgIiAgICAiKTsKIAogICAgICAgICAgICAg
cHVzaChAJG91dHB1dEFycmF5LCAiICAgIGF1dG8gb2JqZWN0ID0gJHtmdW5jdGlvblN0cmluZ307
XG4iKTsKICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpO1xuIikgaWYgJGNvZGVHZW5lcmF0
b3ItPkV4dGVuZGVkQXR0cmlidXRlQ29udGFpbnMoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57Q2FsbFdpdGh9LCAiRXhlY1N0YXRlIik7Ci0gICAgICAgICAgICBpZiAoJGludGVyZmFj
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q29uc3RydWN0b3JNYXlUaHJvd0V4Y2VwdGlvbn0gfHwg
JG9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57TWF5VGhyb3dFeGNlcHRpb259KSB7Cisg
ICAgICAgICAgICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57TGVnYWN5RmFj
dG9yeUZ1bmN0aW9uTWF5VGhyb3dFeGNlcHRpb259IHx8ICRvcGVyYXRpb24tPmV4dGVuZGVkQXR0
cmlidXRlcy0+e01heVRocm93RXhjZXB0aW9ufSkgewogICAgICAgICAgICAgICAgIHB1c2goQCRv
dXRwdXRBcnJheSwgIiAgICBzdGF0aWNfYXNzZXJ0KElzRXhjZXB0aW9uT3I8ZGVjbHR5cGUob2Jq
ZWN0KT46OnZhbHVlKTtcbiIpOwogICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwg
IiAgICBzdGF0aWNfYXNzZXJ0KGRlY2x0eXBlKG9iamVjdCk6OlJldHVyblR5cGU6OmlzUmVmKTtc
biIpOwogICAgICAgICAgICAgfSBlbHNlIHsKQEAgLTc1MjYsMTIgKzc1MzAsMTIgQEAgc3ViIEdl
bmVyYXRlQ29uc3RydWN0b3JEZWZpbml0aW9uCiAgICAgICAgICAgICBteSBAY29uc3RydWN0aW9u
Q29udmVyc2lvbkFyZ3VtZW50cyA9ICgpOwogICAgICAgICAgICAgcHVzaChAY29uc3RydWN0aW9u
Q29udmVyc2lvbkFyZ3VtZW50cywgIipsZXhpY2FsR2xvYmFsT2JqZWN0Iik7CiAgICAgICAgICAg
ICBwdXNoKEBjb25zdHJ1Y3Rpb25Db252ZXJzaW9uQXJndW1lbnRzLCAiKmNhc3RlZFRoaXMtPmds
b2JhbE9iamVjdCgpIik7Ci0gICAgICAgICAgICBwdXNoKEBjb25zdHJ1Y3Rpb25Db252ZXJzaW9u
QXJndW1lbnRzLCAidGhyb3dTY29wZSIpIGlmICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRl
cy0+e0NvbnN0cnVjdG9yTWF5VGhyb3dFeGNlcHRpb259IHx8ICRvcGVyYXRpb24tPmV4dGVuZGVk
QXR0cmlidXRlcy0+e01heVRocm93RXhjZXB0aW9ufTsKKyAgICAgICAgICAgIHB1c2goQGNvbnN0
cnVjdGlvbkNvbnZlcnNpb25Bcmd1bWVudHMsICJ0aHJvd1Njb3BlIikgaWYgJGludGVyZmFjZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57TGVnYWN5RmFjdG9yeUZ1bmN0aW9uTWF5VGhyb3dFeGNlcHRp
b259IHx8ICRvcGVyYXRpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e01heVRocm93RXhjZXB0aW9u
fTsKICAgICAgICAgICAgIHB1c2goQGNvbnN0cnVjdGlvbkNvbnZlcnNpb25Bcmd1bWVudHMsICJX
VEZNb3ZlKG9iamVjdCkiKTsKIAogICAgICAgICAgICAgIyBGSVhNRTogdG9KU05ld2x5Q3JlYXRl
ZCBzaG91bGQgcmV0dXJuIEpTT2JqZWN0KiBpbnN0ZWFkIG9mIEpTVmFsdWUuCiAgICAgICAgICAg
ICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgYXV0byBqc1ZhbHVlID0gdG9KU05ld2x5Q3JlYXRl
ZDwke0lETFR5cGV9PigiIC4gam9pbigiLCAiLCBAY29uc3RydWN0aW9uQ29udmVyc2lvbkFyZ3Vt
ZW50cykgLiAiKTtcbiIpOwotICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTtcbiIpIGlmICRpbnRlcmZhY2UtPmV4
dGVuZGVkQXR0cmlidXRlcy0+e0NvbnN0cnVjdG9yTWF5VGhyb3dFeGNlcHRpb259IHx8ICRvcGVy
YXRpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e01heVRocm93RXhjZXB0aW9ufTsKKyAgICAgICAg
ICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIHsgfSk7XG4iKSBpZiAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntMZWdhY3lG
YWN0b3J5RnVuY3Rpb25NYXlUaHJvd0V4Y2VwdGlvbn0gfHwgJG9wZXJhdGlvbi0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57TWF5VGhyb3dFeGNlcHRpb259OwogICAgICAgICAgICAgcHVzaChAJG91dHB1
dEFycmF5LCAiICAgIHNldFN1YmNsYXNzU3RydWN0dXJlSWZOZWVkZWQ8JHtpbXBsVHlwZX0+KGxl
eGljYWxHbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgYXNPYmplY3QoanNWYWx1ZSkpO1xuIik7CiAg
ICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCB7IH0pO1xuIik7CiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1ZhbHVlKTtcbiIpOwpAQCAtNzYwMiw5ICs3NjA2
LDkgQEAgc3ViIEdldFJ1bnRpbWVFbmFibGVkU3RhdGljUHJvcGVydGllcwogCiBzdWIgR2VuZXJh
dGVDb25zdHJ1Y3RvckhlbHBlck1ldGhvZHMKIHsKLSAgICBteSAoJG91dHB1dEFycmF5LCAkY2xh
c3NOYW1lLCAkcHJvdG9DbGFzc05hbWUsICR2aXNpYmxlSW50ZXJmYWNlTmFtZSwgJGludGVyZmFj
ZSwgJGdlbmVyYXRpbmdOYW1lZENvbnN0cnVjdG9yKSA9IEBfOworICAgIG15ICgkb3V0cHV0QXJy
YXksICRjbGFzc05hbWUsICRwcm90b0NsYXNzTmFtZSwgJHZpc2libGVJbnRlcmZhY2VOYW1lLCAk
aW50ZXJmYWNlLCAkZ2VuZXJhdGluZ0xlZ2FjeUZhY3RvcnlGdW5jdGlvbikgPSBAXzsKIAotICAg
IG15ICRjb25zdHJ1Y3RvckNsYXNzTmFtZSA9ICRnZW5lcmF0aW5nTmFtZWRDb25zdHJ1Y3RvciA/
ICIke2NsYXNzTmFtZX1OYW1lZENvbnN0cnVjdG9yIiA6ICIke2NsYXNzTmFtZX1Db25zdHJ1Y3Rv
ciI7CisgICAgbXkgJGNvbnN0cnVjdG9yQ2xhc3NOYW1lID0gJGdlbmVyYXRpbmdMZWdhY3lGYWN0
b3J5RnVuY3Rpb24gPyAiJHtjbGFzc05hbWV9TGVnYWN5RmFjdG9yeUZ1bmN0aW9uIiA6ICIke2Ns
YXNzTmFtZX1Db25zdHJ1Y3RvciI7CiAgICAgbXkgJGxlYXN0Q29uc3RydWN0b3JMZW5ndGggPSAw
OwogICAgIGlmIChAeyRpbnRlcmZhY2UtPmNvbnN0cnVjdG9yc30gPiAwKSB7CiAgICAgICAgICRs
ZWFzdENvbnN0cnVjdG9yTGVuZ3RoID0gMjU1OwpAQCAtNzYyMyw3ICs3NjI3LDcgQEAgc3ViIEdl
bmVyYXRlQ29uc3RydWN0b3JIZWxwZXJNZXRob2RzCiAKICAgICBhc3NlcnQoIkFuIGludGVyZmFj
ZSBjYW5ub3QgaW5oZXJpdCBmcm9tIGFub3RoZXIgaW50ZXJmYWNlIHRoYXQgaXMgbWFya2VkIGFz
IFtOb0ludGVyZmFjZU9iamVjdF0iKSBpZiAkaW50ZXJmYWNlLT5wYXJlbnRUeXBlICYmICRjb2Rl
R2VuZXJhdG9yLT5HZXRJbnRlcmZhY2VFeHRlbmRlZEF0dHJpYnV0ZXNGcm9tTmFtZSgkaW50ZXJm
YWNlLT5wYXJlbnRUeXBlLT5uYW1lKS0+e05vSW50ZXJmYWNlT2JqZWN0fTsKIAotICAgIGlmICgh
JGdlbmVyYXRpbmdOYW1lZENvbnN0cnVjdG9yIGFuZCAkaW50ZXJmYWNlLT5wYXJlbnRUeXBlKSB7
CisgICAgaWYgKCEkZ2VuZXJhdGluZ0xlZ2FjeUZhY3RvcnlGdW5jdGlvbiBhbmQgJGludGVyZmFj
ZS0+cGFyZW50VHlwZSkgewogICAgICAgICBteSAkcGFyZW50Q2xhc3NOYW1lID0gIkpTIiAuICRp
bnRlcmZhY2UtPnBhcmVudFR5cGUtPm5hbWU7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwg
IiAgICByZXR1cm4gJHtwYXJlbnRDbGFzc05hbWV9OjpnZXRDb25zdHJ1Y3Rvcih2bSwgJmdsb2Jh
bE9iamVjdCk7XG4iKTsKICAgICB9IGVsc2UgewpAQCAtNzY1MSw3ICs3NjU1LDcgQEAgc3ViIEdl
bmVyYXRlQ29uc3RydWN0b3JIZWxwZXJNZXRob2RzCiAgICAgYXNzZXJ0KCJqc05vbnRyaXZpYWxT
dHJpbmcoKSByZXF1aXJlcyBzdHJpbmdzIHR3byBvciBtb3JlIGNoYXJhY3RlcnMgbG9uZyIpIGlm
IGxlbmd0aCgkdmlzaWJsZUludGVyZmFjZU5hbWUpIDwgMjsKICAgICBwdXNoKEAkb3V0cHV0QXJy
YXksICIgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZp
YWxTdHJpbmcodm0sIFwiJHZpc2libGVJbnRlcmZhY2VOYW1lXCJfcyksIEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pO1xu
Iik7CiAKLSAgICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q29uc3RydWN0
b3JFbmFibGVkQnlTZXR0aW5nfSkgeworICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPntMZWdhY3lGYWN0b3J5RnVuY3Rpb25FbmFibGVkQnlTZXR0aW5nfSkgewogICAgICAg
ICBteSAkcnVudGltZUVuYWJsZUNvbmRpdGlvbmFsU3RyaW5nID0gR2VuZXJhdGVSdW50aW1lRW5h
YmxlQ29uZGl0aW9uYWxTdHJpbmcoJGludGVyZmFjZSwgJGludGVyZmFjZSwgIiZnbG9iYWxPYmpl
Y3QiKTsKICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGludCBjb25zdHJ1Y3Rvckxl
bmd0aCA9ICR7bGVhc3RDb25zdHJ1Y3Rvckxlbmd0aH07XG4iKTsKICAgICAgICAgcHVzaChAJG91
dHB1dEFycmF5LCAiICAgIGlmICghJHtydW50aW1lRW5hYmxlQ29uZGl0aW9uYWxTdHJpbmd9KVxu
Iik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMu
anNvbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETEF0
dHJpYnV0ZXMuanNvbgkocmV2aXNpb24gMjY2NjIwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLmpzb24JKHdvcmtpbmcgY29weSkKQEAgLTcyLDI1ICs3
Miw2IEBACiAgICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJpbnRlcmZhY2UiXSwKICAg
ICAgICAgICAgICJ2YWx1ZXMiOiBbIioiXQogICAgICAgICB9LAotICAgICAgICAiQ29uc3RydWN0
b3IiOiB7Ci0gICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJpbnRlcmZhY2UiXSwKLSAg
ICAgICAgICAgICJzdGFuZGFyZCI6IHsKLSAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8v
aGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI0NvbnN0cnVjdG9yIgotICAgICAgICAgICAgfQotICAg
ICAgICB9LAotICAgICAgICAiQ29uc3RydWN0b3JDYWxsV2l0aCI6IHsKLSAgICAgICAgICAgICJj
b250ZXh0c0FsbG93ZWQiOiBbImludGVyZmFjZSJdLAotICAgICAgICAgICAgInZhbHVlcyI6IFsi
RG9jdW1lbnQiLCAiRXhlY1N0YXRlIiwgIlJ1bnRpbWVGbGFncyIsICJTY3JpcHRFeGVjdXRpb25D
b250ZXh0Il0sCi0gICAgICAgICAgICAic3VwcG9ydHNDb25qdW5jdGlvbiI6IHRydWUKLSAgICAg
ICAgfSwKLSAgICAgICAgIkNvbnN0cnVjdG9yRW5hYmxlZEJ5U2V0dGluZyI6IHsKLSAgICAgICAg
ICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImF0dHJpYnV0ZSIsICJpbnRlcmZhY2UiXSwKLSAgICAg
ICAgICAgICJ2YWx1ZXMiOiBbIioiXSwKLSAgICAgICAgICAgICJzdXBwb3J0c0Nvbmp1bmN0aW9u
IjogdHJ1ZQotICAgICAgICB9LAotICAgICAgICAiQ29uc3RydWN0b3JNYXlUaHJvd0V4Y2VwdGlv
biI6IHsKLSAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImludGVyZmFjZSJdCi0gICAg
ICAgIH0sCiAgICAgICAgICJDb250ZXh0QWxsb3dzTWVkaWFEZXZpY2VzIjogewogICAgICAgICAg
ICAgImNvbnRleHRzQWxsb3dlZCI6IFsiYXR0cmlidXRlIl0KICAgICAgICAgfSwKQEAgLTI5Myw2
ICsyNzQsMjYgQEAKICAgICAgICAgIkxlZ2FjeUNhbGxlciI6IHsKICAgICAgICAgICAgICJjb250
ZXh0c0FsbG93ZWQiOiBbIm9wZXJhdGlvbiJdCiAgICAgICAgIH0sCisgICAgICAgICJMZWdhY3lG
YWN0b3J5RnVuY3Rpb24iOiB7CisgICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJpbnRl
cmZhY2UiXSwKKyAgICAgICAgICAgICJ2YWx1ZXMiOiBbIioiXSwKKyAgICAgICAgICAgICJzdGFu
ZGFyZCI6IHsKKyAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5p
by93ZWJpZGwvI0xlZ2FjeUZhY3RvcnlGdW5jdGlvbiIKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fSwKKyAgICAgICAgIkxlZ2FjeUZhY3RvcnlGdW5jdGlvbkNhbGxXaXRoIjogeworICAgICAgICAg
ICAgImNvbnRleHRzQWxsb3dlZCI6IFsiaW50ZXJmYWNlIl0sCisgICAgICAgICAgICAidmFsdWVz
IjogWyJEb2N1bWVudCIsICJFeGVjU3RhdGUiLCAiUnVudGltZUZsYWdzIiwgIlNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQiXSwKKyAgICAgICAgICAgICJzdXBwb3J0c0Nvbmp1bmN0aW9uIjogdHJ1ZQor
ICAgICAgICB9LAorICAgICAgICAiTGVnYWN5RmFjdG9yeUZ1bmN0aW9uRW5hYmxlZEJ5U2V0dGlu
ZyI6IHsKKyAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImF0dHJpYnV0ZSIsICJpbnRl
cmZhY2UiXSwKKyAgICAgICAgICAgICJ2YWx1ZXMiOiBbIioiXSwKKyAgICAgICAgICAgICJzdXBw
b3J0c0Nvbmp1bmN0aW9uIjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAiTGVnYWN5RmFjdG9y
eUZ1bmN0aW9uTWF5VGhyb3dFeGNlcHRpb24iOiB7CisgICAgICAgICAgICAiY29udGV4dHNBbGxv
d2VkIjogWyJpbnRlcmZhY2UiXQorICAgICAgICB9LAogICAgICAgICAiTGVnYWN5VW5lbnVtZXJh
YmxlTmFtZWRQcm9wZXJ0aWVzIjogewogICAgICAgICAgICAgImNvbnRleHRzQWxsb3dlZCI6IFsi
aW50ZXJmYWNlIl0sCiAgICAgICAgICAgICAic3RhbmRhcmQiOiB7CkBAIC0zMjUsMTMgKzMyNiw2
IEBACiAgICAgICAgICJNYXlUaHJvd0V4Y2VwdGlvbiI6IHsKICAgICAgICAgICAgICJjb250ZXh0
c0FsbG93ZWQiOiBbImF0dHJpYnV0ZSIsICJvcGVyYXRpb24iXQogICAgICAgICB9LAotICAgICAg
ICAiTmFtZWRDb25zdHJ1Y3RvciI6IHsKLSAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBb
ImludGVyZmFjZSJdLAotICAgICAgICAgICAgInZhbHVlcyI6IFsiKiJdLAotICAgICAgICAgICAg
InN0YW5kYXJkIjogewotICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9oZXljYW0uZ2l0
aHViLmlvL3dlYmlkbC8jTmFtZWRDb25zdHJ1Y3RvciIKLSAgICAgICAgICAgIH0KLSAgICAgICAg
fSwKICAgICAgICAgIk5ld0ltcHVyZVByb3BlcnR5RmlyZXNXYXRjaHBvaW50cyI6IHsKICAgICAg
ICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImludGVyZmFjZSJdCiAgICAgICAgIH0sCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETFBhcnNlci5wbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETFBhcnNlci5wbQkocmV2aXNp
b24gMjY2NjIwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIu
cG0JKHdvcmtpbmcgY29weSkKQEAgLTMzODAsMTYgKzMzODAsMTYgQEAgc3ViIGFwcGx5RXh0ZW5k
ZWRBdHRyaWJ1dGVMaXN0CiAgICAgbXkgJGludGVyZmFjZSA9IHNoaWZ0OwogICAgIG15ICRleHRl
bmRlZEF0dHJpYnV0ZUxpc3QgPSBzaGlmdDsKIAotICAgIGlmIChkZWZpbmVkICRleHRlbmRlZEF0
dHJpYnV0ZUxpc3QtPnsiTmFtZWRDb25zdHJ1Y3RvciJ9KSB7CisgICAgaWYgKGRlZmluZWQgJGV4
dGVuZGVkQXR0cmlidXRlTGlzdC0+eyJMZWdhY3lGYWN0b3J5RnVuY3Rpb24ifSkgewogICAgICAg
ICBteSAkbmV3RGF0YU5vZGUgPSBJRExPcGVyYXRpb24tPm5ldygpOwogICAgICAgICAkbmV3RGF0
YU5vZGUtPmlzQ29uc3RydWN0b3IoMSk7Ci0gICAgICAgICRuZXdEYXRhTm9kZS0+bmFtZSgiTmFt
ZWRDb25zdHJ1Y3RvciIpOworICAgICAgICAkbmV3RGF0YU5vZGUtPm5hbWUoIkxlZ2FjeUZhY3Rv
cnlGdW5jdGlvbiIpOwogICAgICAgICAkbmV3RGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcygk
ZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0KTsKLSAgICAgICAgbXkgJWF0dHJpYnV0ZXMgPSAleyRleHRl
bmRlZEF0dHJpYnV0ZUxpc3QtPnsiTmFtZWRDb25zdHJ1Y3RvciJ9fTsKKyAgICAgICAgbXkgJWF0
dHJpYnV0ZXMgPSAleyRleHRlbmRlZEF0dHJpYnV0ZUxpc3QtPnsiTGVnYWN5RmFjdG9yeUZ1bmN0
aW9uIn19OwogICAgICAgICBteSBAYXR0cmlidXRlS2V5cyA9IGtleXMgKCVhdHRyaWJ1dGVzKTsK
ICAgICAgICAgbXkgJGNvbnN0cnVjdG9yTmFtZSA9ICRhdHRyaWJ1dGVLZXlzWzBdOwogICAgICAg
ICBwdXNoKEB7JG5ld0RhdGFOb2RlLT5hcmd1bWVudHN9LCBAeyRhdHRyaWJ1dGVzeyRjb25zdHJ1
Y3Rvck5hbWV9fSk7Ci0gICAgICAgICRleHRlbmRlZEF0dHJpYnV0ZUxpc3QtPnsiTmFtZWRDb25z
dHJ1Y3RvciJ9ID0gJGNvbnN0cnVjdG9yTmFtZTsKKyAgICAgICAgJGV4dGVuZGVkQXR0cmlidXRl
TGlzdC0+eyJMZWdhY3lGYWN0b3J5RnVuY3Rpb24ifSA9ICRjb25zdHJ1Y3Rvck5hbWU7CiAgICAg
ICAgIHB1c2goQHskaW50ZXJmYWNlLT5jb25zdHJ1Y3RvcnN9LCAkbmV3RGF0YU5vZGUpOwogICAg
IH0KICAgICAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvcHJlcHJvY2Vz
cy1pZGxzLnBsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
cHJlcHJvY2Vzcy1pZGxzLnBsCShyZXZpc2lvbiAyNjY2MjApCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3ByZXByb2Nlc3MtaWRscy5wbAkod29ya2luZyBjb3B5KQpAQCAtMzEy
LDcgKzMxMiw3IEBAIHN1YiBHZW5lcmF0ZUNvbnN0cnVjdG9yQXR0cmlidXRlcwogICAgICAgbmV4
dCB1bmxlc3MgKCRhdHRyaWJ1dGVOYW1lIGVxICJDb25kaXRpb25hbCIgfHwgJGF0dHJpYnV0ZU5h
bWUgZXEgIkVuYWJsZWRBdFJ1bnRpbWUiIHx8ICRhdHRyaWJ1dGVOYW1lIGVxICJFbmFibGVkRm9y
V29ybGQiCiAgICAgICAgIHx8ICRhdHRyaWJ1dGVOYW1lIGVxICJFbmFibGVkQnlTZXR0aW5nIiB8
fCAkYXR0cmlidXRlTmFtZSBlcSAiU2VjdXJlQ29udGV4dCIgfHwgJGF0dHJpYnV0ZU5hbWUgZXEg
IlByaXZhdGVJZGVudGlmaWVyIgogICAgICAgICB8fCAkYXR0cmlidXRlTmFtZSBlcSAiUHVibGlj
SWRlbnRpZmllciIgfHwgJGF0dHJpYnV0ZU5hbWUgZXEgIkRpc2FibGVkQnlRdWlyayIgfHwgJGF0
dHJpYnV0ZU5hbWUgZXEgIkVuYWJsZWRCeVF1aXJrIgotICAgICAgICB8fCAkYXR0cmlidXRlTmFt
ZSBlcSAiRW5hYmxlZEZvckNvbnRleHQiIHx8ICRhdHRyaWJ1dGVOYW1lIGVxICJDdXN0b21FbmFi
bGVkIikgfHwgJGF0dHJpYnV0ZU5hbWUgZXEgIkNvbnN0cnVjdG9yRW5hYmxlZEJ5U2V0dGluZyI7
CisgICAgICAgIHx8ICRhdHRyaWJ1dGVOYW1lIGVxICJFbmFibGVkRm9yQ29udGV4dCIgfHwgJGF0
dHJpYnV0ZU5hbWUgZXEgIkN1c3RvbUVuYWJsZWQiKSB8fCAkYXR0cmlidXRlTmFtZSBlcSAiTGVn
YWN5RmFjdG9yeUZ1bmN0aW9uRW5hYmxlZEJ5U2V0dGluZyI7CiAgICAgICBteSAkZXh0ZW5kZWRB
dHRyaWJ1dGUgPSAkYXR0cmlidXRlTmFtZTsKICAgICAgICRleHRlbmRlZEF0dHJpYnV0ZSAuPSAi
PSIgLiAkZXh0ZW5kZWRBdHRyaWJ1dGVzLT57JGF0dHJpYnV0ZU5hbWV9IHVubGVzcyAkZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57JGF0dHJpYnV0ZU5hbWV9IGVxICJWQUxVRV9JU19NSVNTSU5HIjsKICAg
ICAgIHB1c2goQGV4dGVuZGVkQXR0cmlidXRlc0xpc3QsICRleHRlbmRlZEF0dHJpYnV0ZSk7CkBA
IC0zMjMsMTQgKzMyMywxNCBAQCBzdWIgR2VuZXJhdGVDb25zdHJ1Y3RvckF0dHJpYnV0ZXMKICAg
ICAkaW50ZXJmYWNlTmFtZSA9ICRleHRlbmRlZEF0dHJpYnV0ZXMtPnsiSW50ZXJmYWNlTmFtZSJ9
IGlmICRleHRlbmRlZEF0dHJpYnV0ZXMtPnsiSW50ZXJmYWNlTmFtZSJ9OwogICAgICRjb2RlIC49
ICJhdHRyaWJ1dGUgIiAuICRvcmlnaW5hbEludGVyZmFjZU5hbWUgLiAiQ29uc3RydWN0b3IgJGlu
dGVyZmFjZU5hbWU7XG4iOwogCi0gICAgIyBJbiBhZGRpdGlvbiB0byB0aGUgcmVndWxhciBwcm9w
ZXJ0eSwgZm9yIGV2ZXJ5IFtOYW1lZENvbnN0cnVjdG9yXSBleHRlbmRlZCBhdHRyaWJ1dGUgb24g
YW4gaW50ZXJmYWNlLAorICAgICMgSW4gYWRkaXRpb24gdG8gdGhlIHJlZ3VsYXIgcHJvcGVydHks
IGZvciBldmVyeSBbTGVnYWN5RmFjdG9yeUZ1bmN0aW9uXSBleHRlbmRlZCBhdHRyaWJ1dGUgb24g
YW4gaW50ZXJmYWNlLAogICAgICMgYSBjb3JyZXNwb25kaW5nIHByb3BlcnR5IE1VU1QgZXhpc3Qg
b24gdGhlIEVDTUFTY3JpcHQgZ2xvYmFsIG9iamVjdC4KLSAgICBpZiAoJGV4dGVuZGVkQXR0cmli
dXRlcy0+eyJOYW1lZENvbnN0cnVjdG9yIn0pIHsKLSAgICAgICAgbXkgJGNvbnN0cnVjdG9yTmFt
ZSA9ICRleHRlbmRlZEF0dHJpYnV0ZXMtPnsiTmFtZWRDb25zdHJ1Y3RvciJ9OworICAgIGlmICgk
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkxlZ2FjeUZhY3RvcnlGdW5jdGlvbiJ9KSB7CisgICAgICAg
IG15ICRjb25zdHJ1Y3Rvck5hbWUgPSAkZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkxlZ2FjeUZhY3Rv
cnlGdW5jdGlvbiJ9OwogICAgICAgICAkY29uc3RydWN0b3JOYW1lID1+IHMvXCguKi8vZzsgIyBF
eHRyYWN0IGZ1bmN0aW9uIG5hbWUuCiAgICAgICAgICRjb2RlIC49ICIgICAgIjsKICAgICAgICAg
JGNvZGUgLj0gIlsiIC4gam9pbignLCAnLCBAZXh0ZW5kZWRBdHRyaWJ1dGVzTGlzdCkgLiAiXSAi
IGlmIEBleHRlbmRlZEF0dHJpYnV0ZXNMaXN0OwotICAgICAgICAkY29kZSAuPSAiYXR0cmlidXRl
ICIgLiAkb3JpZ2luYWxJbnRlcmZhY2VOYW1lIC4gIk5hbWVkQ29uc3RydWN0b3IgJGNvbnN0cnVj
dG9yTmFtZTtcbiI7CisgICAgICAgICRjb2RlIC49ICJhdHRyaWJ1dGUgIiAuICRvcmlnaW5hbElu
dGVyZmFjZU5hbWUgLiAiTGVnYWN5RmFjdG9yeUZ1bmN0aW9uQ29uc3RydWN0b3IgJGNvbnN0cnVj
dG9yTmFtZTtcbiI7CiAgICAgfQogICAgIAogICAgIG15ICR3aW5kb3dBbGlhc2VzQ29kZTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9CaW5kaW5nVGVzdEdsb2Jh
bENvbnN0cnVjdG9ycy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0JpbmRpbmdUZXN0R2xvYmFsQ29uc3RydWN0b3JzLmlkbAkocmV2aXNpb24g
MjY2NjIwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0JpbmRpbmdU
ZXN0R2xvYmFsQ29uc3RydWN0b3JzLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjQsMTIgKzI0LDEy
IEBAIHBhcnRpYWwgaW50ZXJmYWNlIFRlc3RHbG9iYWxPYmplY3QgewogICAgIGF0dHJpYnV0ZSBU
ZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmVDb25zdHJ1Y3RvciBUZXN0SW50ZXJmYWNlTGVh
ZGluZ1VuZGVyc2NvcmU7CiAgICAgYXR0cmlidXRlIFRlc3RJdGVyYWJsZUNvbnN0cnVjdG9yIFRl
c3RJdGVyYWJsZTsKICAgICBhdHRyaWJ1dGUgVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29uc3Ry
dWN0b3IgVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yOworICAgIGF0dHJpYnV0ZSBUZXN0TGVnYWN5
RmFjdG9yeUZ1bmN0aW9uQ29uc3RydWN0b3IgVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbjsKKyAg
ICBhdHRyaWJ1dGUgVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbkxlZ2FjeUZhY3RvcnlGdW5jdGlv
bkNvbnN0cnVjdG9yIEF1ZGlvOwogICAgIGF0dHJpYnV0ZSBUZXN0TWFwTGlrZUNvbnN0cnVjdG9y
IFRlc3RNYXBMaWtlOwogICAgIGF0dHJpYnV0ZSBUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9J
ZGVudGlmaWVyQ29uc3RydWN0b3IgVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmll
cjsKICAgICBhdHRyaWJ1dGUgVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0
aW9uQ29uc3RydWN0b3IgVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9u
OwogICAgIGF0dHJpYnV0ZSBUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXJD
b25zdHJ1Y3RvciBUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXI7Ci0gICAg
YXR0cmlidXRlIFRlc3ROYW1lZENvbnN0cnVjdG9yQ29uc3RydWN0b3IgVGVzdE5hbWVkQ29uc3Ry
dWN0b3I7Ci0gICAgYXR0cmlidXRlIFRlc3ROYW1lZENvbnN0cnVjdG9yTmFtZWRDb25zdHJ1Y3Rv
ciBBdWRpbzsKICAgICBhdHRyaWJ1dGUgVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllckNvbnN0
cnVjdG9yIFRlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXI7CiAgICAgYXR0cmlidXRlIFRlc3RO
YW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbkNvbnN0cnVjdG9yIFRlc3ROYW1lZERlbGV0ZXJU
aHJvd2luZ0V4Y2VwdGlvbjsKICAgICBhdHRyaWJ1dGUgVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVu
dGlmaWVyQ29uc3RydWN0b3IgVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyOwpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1N1cHBsZW1lbnRhbERlcGVuZGVu
Y2llcy5kZXAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1N1cHBsZW1lbnRhbERlcGVuZGVuY2llcy5kZXAJKHJldmlzaW9uIDI2NjYyMCkKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9TdXBwbGVtZW50YWxEZXBlbmRlbmNp
ZXMuZGVwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTAsNiArMTEwLDkgQEAgV2ViRE9NVGVzdEl0ZXJh
YmxlLmg6IAogSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuaDogCiBET01UZXN0SlNCdWlsdGlu
Q29uc3RydWN0b3IuaDogCiBXZWJET01UZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuaDogCitKU1Rl
c3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24uaDogCitET01UZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9u
Lmg6IAorV2ViRE9NVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbi5oOiAKIEpTVGVzdE1hcExpa2Uu
aDogCiBET01UZXN0TWFwTGlrZS5oOiAKIFdlYkRPTVRlc3RNYXBMaWtlLmg6IApAQCAtMTIyLDkg
KzEyNSw2IEBAIFdlYkRPTVRlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0UKIEpTVGVz
dE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmg6IAogRE9NVGVzdE5hbWVkQW5k
SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmg6IAogV2ViRE9NVGVzdE5hbWVkQW5kSW5kZXhl
ZFNldHRlcldpdGhJZGVudGlmaWVyLmg6IAotSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5oOiAKLURP
TVRlc3ROYW1lZENvbnN0cnVjdG9yLmg6IAotV2ViRE9NVGVzdE5hbWVkQ29uc3RydWN0b3IuaDog
CiBKU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIuaDogCiBET01UZXN0TmFtZWREZWxldGVy
Tm9JZGVudGlmaWVyLmg6IAogV2ViRE9NVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllci5oOiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0TGVnYWN5RmFj
dG9yeUZ1bmN0aW9uLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbi5pZGwJKG5vbmV4aXN0ZW50KQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RMZWdhY3lGYWN0b3J5
RnVuY3Rpb24uaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtc3RyQXJnLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBs
ZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRP
UlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFc3RyQXJn
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLy8gVGhpcyBJREwg
ZmlsZSBpcyBmb3IgdGVzdGluZyB0aGUgYmluZGluZ3MgY29kZSBnZW5lcmF0b3IgYW5kIGZvciB0
cmFja2luZworLy8gY2hhbmdlcyBpbiBpdHMgb3VwdXQuCitbCisgICAgQWN0aXZlRE9NT2JqZWN0
LAorICAgIExlZ2FjeUZhY3RvcnlGdW5jdGlvbj1BdWRpbyhET01TdHJpbmcgc3RyMSwgb3B0aW9u
YWwgRE9NU3RyaW5nIHN0cjIgPSAiZGVmYXVsdFN0cmluZyIsIG9wdGlvbmFsIERPTVN0cmluZyBz
dHIzKSwKKyAgICBMZWdhY3lGYWN0b3J5RnVuY3Rpb25DYWxsV2l0aD1Eb2N1bWVudCwKKyAgICBM
ZWdhY3lGYWN0b3J5RnVuY3Rpb25NYXlUaHJvd0V4Y2VwdGlvbgorXSBpbnRlcmZhY2UgVGVzdExl
Z2FjeUZhY3RvcnlGdW5jdGlvbiB7Cit9OwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Rlc3ROYW1lZENvbnN0cnVjdG9yLmlkbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE5hbWVkQ29uc3RydWN0b3IuaWRs
CShyZXZpc2lvbiAyNjY2MjApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVGVzdE5hbWVkQ29uc3RydWN0b3IuaWRsCShub25leGlzdGVudCkKQEAgLTEsMzcgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXN0ckFyZywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBB
cHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAot
ICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFO
RCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRXN0ckFyZywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0g
KiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLS8vIFRoaXMgSURMIGZpbGUgaXMgZm9yIHRlc3RpbmcgdGhlIGJpbmRpbmdzIGNvZGUgZ2Vu
ZXJhdG9yIGFuZCBmb3IgdHJhY2tpbmcKLS8vIGNoYW5nZXMgaW4gaXRzIG91cHV0LgotWwotICAg
IEFjdGl2ZURPTU9iamVjdCwKLSAgICBOYW1lZENvbnN0cnVjdG9yPUF1ZGlvKERPTVN0cmluZyBz
dHIxLCBvcHRpb25hbCBET01TdHJpbmcgc3RyMiA9ICJkZWZhdWx0U3RyaW5nIiwgb3B0aW9uYWwg
RE9NU3RyaW5nIHN0cjMpLAotICAgIENvbnN0cnVjdG9yQ2FsbFdpdGg9RG9jdW1lbnQsCi0gICAg
Q29uc3RydWN0b3JNYXlUaHJvd0V4Y2VwdGlvbgotXSBpbnRlcmZhY2UgVGVzdE5hbWVkQ29uc3Ry
dWN0b3IgewotfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RHbG9iYWxPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuY3BwCShyZXZpc2lvbiAy
NjY2MjApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
R2xvYmFsT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1
ZGUgIkpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJKU1BhaW50V29y
a2xldEdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUu
aCIKKyNpbmNsdWRlICJKU1Rlc3QuaCIKICNpbmNsdWRlICJKU1Rlc3RDRVJlYWN0aW9ucy5oIgog
I2luY2x1ZGUgIkpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIuaCIKICNpbmNsdWRlICJKU1Rl
c3RDYWxsVHJhY2VyLmgiCkBAIC01NywxMiArNTgsMTEgQEAKICNpbmNsdWRlICJKU1Rlc3RJbnRl
cmZhY2VMZWFkaW5nVW5kZXJzY29yZS5oIgogI2luY2x1ZGUgIkpTVGVzdEl0ZXJhYmxlLmgiCiAj
aW5jbHVkZSAiSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJKU1Rlc3RM
ZWdhY3lGYWN0b3J5RnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU1Rlc3RNYXBMaWtlLmgiCiAjaW5j
bHVkZSAiSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmgiCiAjaW5jbHVk
ZSAiSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uaCIKICNpbmNs
dWRlICJKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5oIgotI2luY2x1
ZGUgIkpTVGVzdE5hbWVkQ29uc3RydWN0b3IuaCIKLSNpbmNsdWRlICJKU1Rlc3ROYW1lZENvbnN0
cnVjdG9yTmFtZWQuaCIKICNpbmNsdWRlICJKU1Rlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIu
aCIKICNpbmNsdWRlICJKU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5oIgogI2lu
Y2x1ZGUgIkpTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyLmgiCkBAIC0yMjMsNiArMjIz
LDEwIEBAIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0VGUKIGJvb2wgc2V0
SlNUZXN0R2xvYmFsT2JqZWN0VGVzdEl0ZXJhYmxlQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9i
amVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JD
b25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlND
OjpQcm9wZXJ0eU5hbWUpOwogYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0SlNCdWlsdGlu
Q29uc3RydWN0b3JDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVk
SlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CitKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dEdsb2JhbE9iamVjdFRlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb25Db25zdHJ1Y3RvcihKU0M6OkpT
R2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwor
Ym9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uQ29uc3Ry
dWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5j
b2RlZEpTVmFsdWUpOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RBdWRp
b0NvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBK
U0M6OlByb3BlcnR5TmFtZSk7Citib29sIHNldEpTVGVzdEdsb2JhbE9iamVjdEF1ZGlvQ29uc3Ry
dWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5j
b2RlZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RUZXN0
TWFwTGlrZUNvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1Zh
bHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CiBib29sIHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RN
YXBMaWtlQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFs
dWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RHbG9i
YWxPYmplY3RUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyQ29uc3RydWN0b3Io
SlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlO
YW1lKTsKQEAgLTIzMSwxMCArMjM1LDYgQEAgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RHbG9i
YWxPYmplY3RUZQogYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRBbmRJbmRleGVk
U2V0dGVyVGhyb3dpbmdFeGNlcHRpb25Db25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0Kiwg
SlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRl
bnRpZmllckNvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1Zh
bHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CiBib29sIHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RO
YW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllckNvbnN0cnVjdG9yKEpTQzo6SlNHbG9i
YWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKLUpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkQ29uc3RydWN0b3JD
b25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlND
OjpQcm9wZXJ0eU5hbWUpOwotYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRDb25z
dHJ1Y3RvckNvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1Zh
bHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKLUpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0R2xv
YmFsT2JqZWN0QXVkaW9Db25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmpl
Y3RBdWRpb0NvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1Zh
bHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0R2xv
YmFsT2JqZWN0VGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllckNvbnN0cnVjdG9yKEpTQzo6SlNH
bG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CiBi
b29sIHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXJDb25z
dHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpF
bmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdFRl
c3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbkNvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxP
YmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CkBAIC0zMjAs
MTIgKzMyMCwxMiBAQCB1c2luZyBKU1Rlc3RHbG9iYWxPYmplY3RDb25zdHJ1Y3RvciA9IEpTCiAK
IC8qIEhhc2ggdGFibGUgKi8KIAotc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4
IEpTVGVzdEdsb2JhbE9iamVjdFRhYmxlSW5kZXhbMjY4XSA9IHsKK3N0YXRpYyBjb25zdCBzdHJ1
Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1Rlc3RHbG9iYWxPYmplY3RUYWJsZUluZGV4WzI2OV0gPSB7
CiAgICAgeyAtMSwgLTEgfSwKICAgICB7IDQwLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAg
eyAwLCAtMSB9LAotICAgIHsgOCwgMjYzIH0sCisgICAgeyA4LCAyNjQgfSwKICAgICB7IDQ0LCAt
MSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKQEAgLTM2Myw3ICszNjMsNyBA
QCBzdGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNUCiAgICAgeyAtMSwgLTEg
fSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgNzEsIC0xIH0sCi0gICAgeyAxMywgMjU4IH0sCisg
ICAgeyAxMywgMjU5IH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsg
LTEsIC0xIH0sCkBAIC0zNzIsNyArMzcyLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0
SGFzaEluZGV4IEpTVAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IDM4
LCAtMSB9LAotICAgIHsgMjAsIDI2NCB9LAorICAgIHsgMjAsIDI1NiB9LAogICAgIHsgMTAsIC0x
IH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LApAQCAtMzkxLDcgKzM5MSw3IEBA
IHN0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1QKICAgICB7IC0xLCAtMSB9
LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDIyLCAyNjUgfSwKKyAg
ICB7IDIyLCAyNjYgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAt
MSwgLTEgfSwKQEAgLTQxMyw3ICs0MTMsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RI
YXNoSW5kZXggSlNUCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEs
IC0xIH0sCi0gICAgeyAyNCwgMjU2IH0sCisgICAgeyAyNCwgMjU3IH0sCiAgICAgeyAtMSwgLTEg
fSwKICAgICB7IDYxLCAtMSB9LAogICAgIHsgMTksIC0xIH0sCkBAIC00MzUsNyArNDM1LDcgQEAg
c3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTVAogICAgIHsgNTAsIC0xIH0s
CiAgICAgeyAyNSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgMiwgMjY3IH0sCisgICAg
eyAyLCAyNjggfSwKICAgICB7IDM3LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwg
LTEgfSwKQEAgLTQ1Miw3ICs0NTIsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNo
SW5kZXggSlNUCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0x
IH0sCi0gICAgeyAzMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAg
ICAgeyAtMSwgLTEgfSwKICAgICB7IDQyLCAtMSB9LApAQCAtNDgzLDggKzQ4Myw4IEBAIHN0YXRp
YyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1QKICAgICB7IC0xLCAtMSB9LAogICAg
IHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDMyLCAtMSB9LAotICAgIHsgMjks
IDI2MiB9LAorICAgIHsgMjgsIC0xIH0sCisgICAgeyAzMSwgMjYzIH0sCiAgICAgeyAtMSwgLTEg
fSwKICAgICB7IDUsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKQEAgLTQ5NCw3ICs0OTQsNyBAQCBz
dGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNUCiAgICAgeyAtMSwgLTEgfSwK
ICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyAxNiwgMjU3IH0sCisgICAg
eyAxNiwgMjU4IH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IDYyLCAtMSB9LAogICAgIHsgLTEs
IC0xIH0sCkBAIC01MDUsNyArNTA1LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFz
aEluZGV4IEpTVAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAt
MSB9LAotICAgIHsgMzMsIDI2NiB9LAorICAgIHsgMzMsIDI2NyB9LAogICAgIHsgLTEsIC0xIH0s
CiAgICAgeyAxNywgLTEgfSwKICAgICB7IC0xLCAtMSB9LApAQCAtNTUwLDggKzU1MCw4IEBAIHN0
YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1QKICAgICB7IC0xLCAtMSB9LAog
ICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDQ4LCAyNjEgfSwKLSAgICB7
IDExLCAyNjAgfSwKKyAgICB7IDQ4LCAyNjIgfSwKKyAgICB7IDExLCAyNjEgfSwKICAgICB7IC0x
LCAtMSB9LAogICAgIHsgNjMsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKQEAgLTU2NSw3ICs1NjUs
NyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNUCiAgICAgeyAyNiwg
LTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyAyOCwgLTEgfSwK
KyAgICB7IDMwLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7
IDQ1LCAtMSB9LApAQCAtNTc3LDggKzU3Nyw5IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFj
dEhhc2hJbmRleCBKU1QKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAt
MSwgLTEgfSwKLSAgICB7IDI3LCAyNTkgfSwKLSAgICB7IDMwLCAtMSB9LAorICAgIHsgMjcsIDI2
NSB9LAorICAgIHsgMjksIDI2MCB9LAorICAgIHsgMzIsIC0xIH0sCiAgICAgeyAzOSwgLTEgfSwK
ICAgICB7IDQxLCAtMSB9LAogICAgIHsgNDMsIC0xIH0sCkBAIC02MzMsMTIgKzYzNCwxMiBAQCBz
dGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0R2xvYmFsCiAgICAgeyAiVGVzdEludGVy
ZmFjZUxlYWRpbmdVbmRlcnNjb3JlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RUZXN0SW50
ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmVDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nh
c3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdEdsb2JhbE9iamVjdFRl
c3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZUNvbnN0cnVjdG9yKSB9IH0sCiAgICAgeyAiVGVz
dEl0ZXJhYmxlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RUZXN0SXRlcmFibGVDb25zdHJ1
Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1
bmM+KHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RJdGVyYWJsZUNvbnN0cnVjdG9yKSB9IH0sCiAg
ICAgeyAiVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90
KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmpl
Y3RUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGlj
X2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdEdsb2JhbE9iamVj
dFRlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9yKSB9IH0sCisgICAgeyAiVGVzdExl
Z2FjeUZhY3RvcnlGdW5jdGlvbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2Fz
dDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0VGVzdExlZ2Fj
eUZhY3RvcnlGdW5jdGlvbkNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQ
cm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdExlZ2Fj
eUZhY3RvcnlGdW5jdGlvbkNvbnN0cnVjdG9yKSB9IH0sCisgICAgeyAiQXVkaW8iLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJp
bnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+
KGpzVGVzdEdsb2JhbE9iamVjdEF1ZGlvQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19j
YXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RHbG9iYWxPYmplY3RB
dWRpb0NvbnN0cnVjdG9yKSB9IH0sCiAgICAgeyAiVGVzdE1hcExpa2UiLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywg
eyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVz
dEdsb2JhbE9iamVjdFRlc3RNYXBMaWtlQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19j
YXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RHbG9iYWxPYmplY3RU
ZXN0TWFwTGlrZUNvbnN0cnVjdG9yKSB9IH0sCiAgICAgeyAiVGVzdE5hbWVkQW5kSW5kZXhlZFNl
dHRlck5vSWRlbnRpZmllciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQ
cm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkQW5k
SW5kZXhlZFNldHRlck5vSWRlbnRpZmllckNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNf
Y2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0R2xvYmFsT2JqZWN0
VGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllckNvbnN0cnVjdG9yKSB9IH0sCiAg
ICAgeyAiVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uIiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
Pihqc1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNl
cHRpb25Db25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90
OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZEFuZEluZGV4ZWRT
ZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbkNvbnN0cnVjdG9yKSB9IH0sCiAgICAgeyAiVGVzdE5hbWVk
QW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90
KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmpl
Y3RUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXJDb25zdHJ1Y3RvciksIChp
bnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpT
VGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllckNv
bnN0cnVjdG9yKSB9IH0sCi0gICAgeyAiVGVzdE5hbWVkQ29uc3RydWN0b3IiLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpz
VGVzdEdsb2JhbE9iamVjdFRlc3ROYW1lZENvbnN0cnVjdG9yQ29uc3RydWN0b3IpLCAoaW50cHRy
X3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RH
bG9iYWxPYmplY3RUZXN0TmFtZWRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yKSB9IH0sCi0gICAgeyAi
QXVkaW8iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90
OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdEF1ZGlvQ29uc3RydWN0b3IpLCAoaW50
cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rl
c3RHbG9iYWxPYmplY3RBdWRpb0NvbnN0cnVjdG9yKSB9IH0sCiAgICAgeyAiVGVzdE5hbWVkRGVs
ZXRlck5vSWRlbnRpZmllciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQ
cm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkRGVs
ZXRlck5vSWRlbnRpZmllckNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQ
cm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVk
RGVsZXRlck5vSWRlbnRpZmllckNvbnN0cnVjdG9yKSB9IH0sCiAgICAgeyAiVGVzdE5hbWVkRGVs
ZXRlclRocm93aW5nRXhjZXB0aW9uIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFt
ZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb25Db25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGlj
X2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdEdsb2JhbE9iamVj
dFRlc3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbkNvbnN0cnVjdG9yKSB9IH0sCiAgICAg
eyAiVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0
cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RHbG9iYWxP
YmplY3RUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXJDb25zdHJ1Y3RvciksIChpbnRwdHJf
dCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdEds
b2JhbE9iamVjdFRlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllckNvbnN0cnVjdG9yKSB9IH0s
CkBAIC0xNTYxLDYgKzE1NjIsNTIgQEAgYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0SlNC
dWlsdGluQwogICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0R2xvYmFsT2JqZWN0Pjo6c2V0
PHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9y
U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJU
ZXN0SlNCdWlsdGluQ29uc3RydWN0b3IiKTsKIH0KIAorc3RhdGljIGlubGluZSBKU1ZhbHVlIGpz
VGVzdEdsb2JhbE9iamVjdFRlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb25Db25zdHJ1Y3RvckdldHRl
cihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0R2xvYmFsT2JqZWN0
JiB0aGlzT2JqZWN0KQoreworICAgIFVOVVNFRF9QQVJBTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
KyAgICByZXR1cm4gSlNUZXN0OjpnZXRMZWdhY3lGYWN0b3J5RnVuY3Rpb24oSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCksIHRoaXNPYmplY3QuZ2xvYmFsT2JqZWN0KCkpOworfQorCitF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9u
Q29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQoreworICAgIHJldHVybiBJRExBdHRyaWJ1
dGU8SlNUZXN0R2xvYmFsT2JqZWN0Pjo6Z2V0PGpzVGVzdEdsb2JhbE9iamVjdFRlc3RMZWdhY3lG
YWN0b3J5RnVuY3Rpb25Db25zdHJ1Y3RvckdldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRo
aXNWYWx1ZSwgIlRlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24iKTsKK30KKworc3RhdGljIGlubGlu
ZSBib29sIHNldEpTVGVzdEdsb2JhbE9iamVjdFRlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb25Db25z
dHJ1Y3RvclNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0
R2xvYmFsT2JqZWN0JiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQoreworICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgLy8gU2hhZG93aW5nIGEg
YnVpbHQtaW4gY29uc3RydWN0b3IuCisgICAgcmV0dXJuIHRoaXNPYmplY3QucHV0RGlyZWN0KHZt
LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFy
Kj4oIlRlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24iKSwgc3RybGVuKCJUZXN0TGVnYWN5RmFjdG9y
eUZ1bmN0aW9uIikpLCB2YWx1ZSk7Cit9CisKK2Jvb2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVz
dExlZ2FjeUZhY3RvcnlGdW5jdGlvbkNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSkKK3sKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdEdsb2JhbE9iamVj
dD46OnNldDxzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uQ29u
c3RydWN0b3JTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRW
YWx1ZSwgIlRlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24iKTsKK30KKworc3RhdGljIGlubGluZSBK
U1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdEF1ZGlvQ29uc3RydWN0b3JHZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdEdsb2JhbE9iamVjdCYgdGhpc09iamVj
dCkKK3sKKyAgICBVTlVTRURfUEFSQU0obGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgcmV0dXJu
IEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbjo6Z2V0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uKEpT
Qzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCB0aGlzT2JqZWN0Lmdsb2JhbE9iamVjdCgp
KTsKK30KKworRW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0QXVkaW9Db25zdHJ1Y3Rv
cihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCit7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RH
bG9iYWxPYmplY3Q+OjpnZXQ8anNUZXN0R2xvYmFsT2JqZWN0QXVkaW9Db25zdHJ1Y3RvckdldHRl
cj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIkF1ZGlvIik7Cit9CisKK3N0YXRp
YyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RBdWRpb0NvbnN0cnVjdG9yU2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RHbG9iYWxPYmplY3Qm
IHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCit7CisgICAgYXV0byYgdm0gPSBKU0M6OmdldFZN
KCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25z
dHJ1Y3Rvci4KKyAgICByZXR1cm4gdGhpc09iamVjdC5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiQXVkaW8iKSwg
c3RybGVuKCJBdWRpbyIpKSwgdmFsdWUpOworfQorCitib29sIHNldEpTVGVzdEdsb2JhbE9iamVj
dEF1ZGlvQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorewor
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0R2xvYmFsT2JqZWN0Pjo6c2V0PHNldEpTVGVz
dEdsb2JhbE9iamVjdEF1ZGlvQ29uc3RydWN0b3JTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIkF1ZGlvIik7Cit9CisKIHN0YXRpYyBpbmxpbmUg
SlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RUZXN0TWFwTGlrZUNvbnN0cnVjdG9yR2V0dGVyKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RHbG9iYWxPYmplY3QmIHRo
aXNPYmplY3QpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGxleGljYWxHbG9iYWxPYmplY3QpOwpAQCAt
MTY1Myw1MiArMTcwMCw2IEBAIGJvb2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkQW5k
SW4KICAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdEdsb2JhbE9iamVjdD46OnNldDxzZXRK
U1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXJD
b25zdHJ1Y3RvclNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2Rl
ZFZhbHVlLCAiVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyIik7CiB9CiAK
LXN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRDb25zdHJ1
Y3RvckNvbnN0cnVjdG9yR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU1Rlc3RHbG9iYWxPYmplY3QmIHRoaXNPYmplY3QpCi17Ci0gICAgVU5VU0VEX1BBUkFNKGxl
eGljYWxHbG9iYWxPYmplY3QpOwotICAgIHJldHVybiBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yOjpn
ZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgdGhpc09iamVj
dC5nbG9iYWxPYmplY3QoKSk7Ci19Ci0KLUVuY29kZWRKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVj
dFRlc3ROYW1lZENvbnN0cnVjdG9yQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQotewot
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0R2xvYmFsT2JqZWN0Pjo6Z2V0PGpzVGVzdEds
b2JhbE9iamVjdFRlc3ROYW1lZENvbnN0cnVjdG9yQ29uc3RydWN0b3JHZXR0ZXI+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJUZXN0TmFtZWRDb25zdHJ1Y3RvciIpOwotfQotCi1z
dGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0VGVzdE5hbWVkQ29uc3RydWN0
b3JDb25zdHJ1Y3RvclNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNUZXN0R2xvYmFsT2JqZWN0JiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQotewotICAgIGF1
dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgLy8gU2hhZG93
aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IuCi0gICAgcmV0dXJuIHRoaXNPYmplY3QucHV0RGly
ZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0
IExDaGFyKj4oIlRlc3ROYW1lZENvbnN0cnVjdG9yIiksIHN0cmxlbigiVGVzdE5hbWVkQ29uc3Ry
dWN0b3IiKSksIHZhbHVlKTsKLX0KLQotYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFt
ZWRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSkKLXsKLSAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdEdsb2JhbE9iamVjdD46OnNldDxz
ZXRKU1Rlc3RHbG9iYWxPYmplY3RUZXN0TmFtZWRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yU2V0dGVy
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJUZXN0TmFt
ZWRDb25zdHJ1Y3RvciIpOwotfQotCi1zdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0R2xvYmFs
T2JqZWN0QXVkaW9Db25zdHJ1Y3RvckdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNUZXN0R2xvYmFsT2JqZWN0JiB0aGlzT2JqZWN0KQotewotICAgIFVOVVNFRF9Q
QVJBTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICByZXR1cm4gSlNUZXN0TmFtZWRDb25zdHJ1
Y3Rvck5hbWVkOjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0
KSwgdGhpc09iamVjdC5nbG9iYWxPYmplY3QoKSk7Ci19Ci0KLUVuY29kZWRKU1ZhbHVlIGpzVGVz
dEdsb2JhbE9iamVjdEF1ZGlvQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9i
YWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQotewotICAg
IHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0R2xvYmFsT2JqZWN0Pjo6Z2V0PGpzVGVzdEdsb2Jh
bE9iamVjdEF1ZGlvQ29uc3RydWN0b3JHZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsICJBdWRpbyIpOwotfQotCi1zdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0R2xvYmFs
T2JqZWN0QXVkaW9Db25zdHJ1Y3RvclNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNUZXN0R2xvYmFsT2JqZWN0JiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQot
ewotICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAg
Ly8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IuCi0gICAgcmV0dXJuIHRoaXNPYmpl
Y3QucHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9j
YXN0PGNvbnN0IExDaGFyKj4oIkF1ZGlvIiksIHN0cmxlbigiQXVkaW8iKSksIHZhbHVlKTsKLX0K
LQotYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RBdWRpb0NvbnN0cnVjdG9yKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKLXsKLSAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVz
dEdsb2JhbE9iamVjdD46OnNldDxzZXRKU1Rlc3RHbG9iYWxPYmplY3RBdWRpb0NvbnN0cnVjdG9y
U2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJB
dWRpbyIpOwotfQotCiBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0VGVz
dE5hbWVkRGVsZXRlck5vSWRlbnRpZmllckNvbnN0cnVjdG9yR2V0dGVyKEpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RHbG9iYWxPYmplY3QmIHRoaXNPYmplY3QpCiB7
CiAgICAgVU5VU0VEX1BBUkFNKGxleGljYWxHbG9iYWxPYmplY3QpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlv
bi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbi5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdExlZ2FjeUZhY3RvcnlG
dW5jdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzMjggQEAKKy8qCisgICAgVGhp
cyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgorICAgIFRo
aXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5P
VCBNT0RJRlkhCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2Yg
dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAg
ICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg
aW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisg
ICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElm
IG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1
MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMw
MSwgVVNBLgorKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTVGVzdExlZ2Fj
eUZhY3RvcnlGdW5jdGlvbi5oIgorCisjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisjaW5j
bHVkZSAiRE9NSXNvU3Vic3BhY2VzLmgiCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRl
ICJKU0RPTUJpbmRpbmcuaCIKKyNpbmNsdWRlICJKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0
YWJsZS5oIgorI2luY2x1ZGUgIkpTRE9NQ29udmVydEludGVyZmFjZS5oIgorI2luY2x1ZGUgIkpT
RE9NQ29udmVydFN0cmluZ3MuaCIKKyNpbmNsdWRlICJKU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmgi
CisjaW5jbHVkZSAiSlNET01MZWdhY3lGYWN0b3J5RnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0RP
TVdyYXBwZXJDYWNoZS5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNp
bmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
RnVuY3Rpb25Qcm90b3R5cGUuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwQW5hbHl6
ZXIuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CisjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuaD4KKyNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9TdWJzcGFjZUlubGluZXMuaD4KKyNpbmNsdWRlIDx3dGYvR2V0
UHRyLmg+CisjaW5jbHVkZSA8d3RmL1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3
dGYvVVJMLmg+CisKKworbmFtZXNwYWNlIFdlYkNvcmUgewordXNpbmcgbmFtZXNwYWNlIEpTQzsK
KworLy8gQXR0cmlidXRlcworCitKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdExlZ2FjeUZhY3Rv
cnlGdW5jdGlvbkNvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRK
U1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Citib29sIHNldEpTVGVzdExlZ2FjeUZhY3RvcnlG
dW5jdGlvbkNvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1Zh
bHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKKworY2xhc3MgSlNUZXN0TGVnYWN5RmFjdG9yeUZ1
bmN0aW9uUHJvdG90eXBlIGZpbmFsIDogcHVibGljIEpTQzo6SlNOb25GaW5hbE9iamVjdCB7Citw
dWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IEpTQzo6SlNOb25GaW5hbE9iamVjdDsKKyAgICBzdGF0
aWMgSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uUHJvdG90eXBlKiBjcmVhdGUoSlNDOjpWTSYg
dm0sIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1
Y3R1cmUpCisgICAgeworICAgICAgICBKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb25Qcm90b3R5
cGUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0TGVnYWN5RmFj
dG9yeUZ1bmN0aW9uUHJvdG90eXBlPih2bS5oZWFwKSkgSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0
aW9uUHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CisgICAgICAgIHB0ci0+
ZmluaXNoQ3JlYXRpb24odm0pOworICAgICAgICByZXR1cm4gcHRyOworICAgIH0KKworICAgIERF
Q0xBUkVfSU5GTzsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgSlNDOjpTdWJzcGFj
ZUFjY2Vzcz4KKyAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpW
TSYgdm0pCisgICAgeworICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJM
RShKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb25Qcm90b3R5cGUsIEJhc2UpOworICAgICAgICBy
ZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgfQorICAgIHN0YXRpYyBKU0M6OlN0cnVj
dHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICByZXR1
cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpT
Qzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cisg
ICAgfQorCitwcml2YXRlOgorICAgIEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvblByb3RvdHlw
ZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6U3RydWN0dXJlKiBzdHJ1
Y3R1cmUpCisgICAgICAgIDogSlNDOjpKU05vbkZpbmFsT2JqZWN0KHZtLCBzdHJ1Y3R1cmUpCisg
ICAgeworICAgIH0KKworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYpOworfTsKK1NU
QVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5j
dGlvblByb3RvdHlwZSwgSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uUHJvdG90eXBlOjpCYXNl
KTsKKwordXNpbmcgSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uQ29uc3RydWN0b3IgPSBKU0RP
TUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24+
OwordXNpbmcgSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uTGVnYWN5RmFjdG9yeUZ1bmN0aW9u
ID0gSlNET01MZWdhY3lGYWN0b3J5RnVuY3Rpb248SlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9u
PjsKKwordGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbkNvbnN0
cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xv
YmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit7CisgICAgVU5VU0VEX1BBUkFNKHZtKTsKKyAgICBy
ZXR1cm4gZ2xvYmFsT2JqZWN0LmZ1bmN0aW9uUHJvdG90eXBlKCk7Cit9CisKK3RlbXBsYXRlPD4g
dm9pZCBKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb25Db25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVBy
b3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQoreworICAg
IHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3RMZWdhY3lG
YWN0b3J5RnVuY3Rpb246OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOworICAgIHB1dERpcmVjdCh2bSwg
dm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250cml2aWFsU3RyaW5nKHZtLCAiVGVzdExlZ2Fj
eUZhY3RvcnlGdW5jdGlvbiJfcyksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOworICAgIHB1dERpcmVjdCh2bSwgdm0u
cHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigxKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7Cit9CisKK3Rl
bXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbkNvbnN0
cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uIiwgJkJhc2U6OnNf
aW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RMZWdhY3lG
YWN0b3J5RnVuY3Rpb25Db25zdHJ1Y3RvcikgfTsKKwordGVtcGxhdGU8PiBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbkxlZ2FjeUZhY3RvcnlG
dW5jdGlvbjo6Y29uc3RydWN0KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkKK3sKKyAgICBWTSYgdm0gPSBsZXhpY2FsR2xvYmFsT2JqZWN0
LT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
ICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9u
TGVnYWN5RmFjdG9yeUZ1bmN0aW9uKj4oY2FsbEZyYW1lLT5qc0NhbGxlZSgpKTsKKyAgICBBU1NF
UlQoY2FzdGVkVGhpcyk7CisgICAgaWYgKFVOTElLRUxZKGNhbGxGcmFtZS0+YXJndW1lbnRDb3Vu
dCgpIDwgMSkpCisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IobGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IobGV4aWNhbEdsb2Jh
bE9iamVjdCkpOworICAgIGF1dG8qIGNvbnRleHQgPSBjYXN0ZWRUaGlzLT5zY3JpcHRFeGVjdXRp
b25Db250ZXh0KCk7CisgICAgaWYgKFVOTElLRUxZKCFjb250ZXh0KSkKKyAgICAgICAgcmV0dXJu
IHRocm93Q29uc3RydWN0b3JTY3JpcHRFeGVjdXRpb25Db250ZXh0VW5hdmFpbGFibGVFcnJvcigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgIlRlc3RMZWdhY3lGYWN0b3J5RnVuY3Rp
b24iKTsKKyAgICBBU1NFUlQoY29udGV4dC0+aXNEb2N1bWVudCgpKTsKKyAgICBhdXRvJiBkb2N1
bWVudCA9IGRvd25jYXN0PERvY3VtZW50PigqY29udGV4dCk7CisgICAgRW5zdXJlU3RpbGxBbGl2
ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7CisgICAg
YXV0byBzdHIxID0gY29udmVydDxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBh
cmd1bWVudDAudmFsdWUoKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKKyAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQxID0g
Y2FsbEZyYW1lLT5hcmd1bWVudCgxKTsKKyAgICBhdXRvIHN0cjIgPSBhcmd1bWVudDEudmFsdWUo
KS5pc1VuZGVmaW5lZCgpID8gImRlZmF1bHRTdHJpbmciX3MgOiBjb252ZXJ0PElETERPTVN0cmlu
Zz4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MS52YWx1ZSgpKTsKKyAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOworICAgIEVuc3VyZVN0
aWxsQWxpdmVTY29wZSBhcmd1bWVudDIgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDIpOworICAgIGF1
dG8gc3RyMyA9IGFyZ3VtZW50Mi52YWx1ZSgpLmlzVW5kZWZpbmVkKCkgPyBTdHJpbmcoKSA6IGNv
bnZlcnQ8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQyLnZhbHVl
KCkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUo
KSk7CisgICAgYXV0byBvYmplY3QgPSBUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uOjpjcmVhdGVG
b3JKU0NvbnN0cnVjdG9yKGRvY3VtZW50LCBXVEZNb3ZlKHN0cjEpLCBXVEZNb3ZlKHN0cjIpLCBX
VEZNb3ZlKHN0cjMpKTsKKyAgICBzdGF0aWNfYXNzZXJ0KElzRXhjZXB0aW9uT3I8ZGVjbHR5cGUo
b2JqZWN0KT46OnZhbHVlKTsKKyAgICBzdGF0aWNfYXNzZXJ0KGRlY2x0eXBlKG9iamVjdCk6OlJl
dHVyblR5cGU6OmlzUmVmKTsKKyAgICBhdXRvIGpzVmFsdWUgPSB0b0pTTmV3bHlDcmVhdGVkPElE
TEludGVyZmFjZTxUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uPj4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgdGhyb3dTY29wZSwgV1RGTW92ZShvYmpl
Y3QpKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CisgICAgc2V0
U3ViY2xhc3NTdHJ1Y3R1cmVJZk5lZWRlZDxUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uPihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIGFzT2JqZWN0KGpzVmFsdWUpKTsKKyAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1ZhbHVlKTsKK30KKwordGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdExlZ2FjeUZhY3Rv
cnlGdW5jdGlvbkxlZ2FjeUZhY3RvcnlGdW5jdGlvbjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpT
Qzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQoreworICAg
IFVOVVNFRF9QQVJBTSh2bSk7CisgICAgcmV0dXJuIGdsb2JhbE9iamVjdC5mdW5jdGlvblByb3Rv
dHlwZSgpOworfQorCit0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9u
TGVnYWN5RmFjdG9yeUZ1bmN0aW9uOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9N
R2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit7CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbjo6cHJvdG90
eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRl
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSk7CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1l
LCBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJBdWRpbyJfcyksIEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOworICAgIHB1
dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigxKSwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSk7Cit9CisKK3RlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdExlZ2FjeUZhY3Rv
cnlGdW5jdGlvbkxlZ2FjeUZhY3RvcnlGdW5jdGlvbjo6c19pbmZvID0geyAiQXVkaW8iLCAmQmFz
ZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdExl
Z2FjeUZhY3RvcnlGdW5jdGlvbkxlZ2FjeUZhY3RvcnlGdW5jdGlvbikgfTsKKworLyogSGFzaCB0
YWJsZSBmb3IgcHJvdG90eXBlICovCisKK3N0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rl
c3RMZWdhY3lGYWN0b3J5RnVuY3Rpb25Qcm90b3R5cGVUYWJsZVZhbHVlc1tdID0KK3sKKyAgICB7
ICJjb25zdHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9w
ZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uQ29uc3Ry
dWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPihzZXRKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb25Db25zdHJ1Y3RvcikgfSB9LAorfTsK
KworY29uc3QgQ2xhc3NJbmZvIEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvblByb3RvdHlwZTo6
c19pbmZvID0geyAiVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sIG51
bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0TGVnYWN5RmFjdG9yeUZ1
bmN0aW9uUHJvdG90eXBlKSB9OworCit2b2lkIEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvblBy
b3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0
aW9uKHZtKTsKKyAgICByZWlmeVN0YXRpY1Byb3BlcnRpZXModm0sIEpTVGVzdExlZ2FjeUZhY3Rv
cnlGdW5jdGlvbjo6aW5mbygpLCBKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb25Qcm90b3R5cGVU
YWJsZVZhbHVlcywgKnRoaXMpOworICAgIEpTQ19UT19TVFJJTkdfVEFHX1dJVEhPVVRfVFJBTlNJ
VElPTigpOworfQorCitjb25zdCBDbGFzc0luZm8gSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9u
OjpzX2luZm8gPSB7ICJUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywg
bnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RMZWdhY3lGYWN0b3J5
RnVuY3Rpb24pIH07CisKK0pTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbjo6SlNUZXN0TGVnYWN5
RmFjdG9yeUZ1bmN0aW9uKFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCYg
Z2xvYmFsT2JqZWN0LCBSZWY8VGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbj4mJiBpbXBsKQorICAg
IDogSlNET01XcmFwcGVyPFRlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24+KHN0cnVjdHVyZSwgZ2xv
YmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKQoreworfQorCit2b2lkIEpTVGVzdExlZ2FjeUZhY3Rv
cnlGdW5jdGlvbjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQoreworICAgIEJhc2U6OmZpbmlzaENy
ZWF0aW9uKHZtKTsKKyAgICBBU1NFUlQoaW5oZXJpdHModm0sIGluZm8oKSkpOworCisgICAgc3Rh
dGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2Y8QWN0aXZlRE9NT2JqZWN0LCBUZXN0TGVnYWN5RmFj
dG9yeUZ1bmN0aW9uPjo6dmFsdWUsICJJbnRlcmZhY2UgaXMgbWFya2VkIGFzIFtBY3RpdmVET01P
YmplY3RdIGJ1dCBpbXBsZW1lbnRhdGlvbiBjbGFzcyBkb2VzIG5vdCBzdWJjbGFzcyBBY3RpdmVE
T01PYmplY3QuIik7CisKK30KKworSlNPYmplY3QqIEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlv
bjo6Y3JlYXRlUHJvdG90eXBlKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVj
dCkKK3sKKyAgICByZXR1cm4gSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uUHJvdG90eXBlOjpj
cmVhdGUodm0sICZnbG9iYWxPYmplY3QsIEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvblByb3Rv
dHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCAmZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3Qub2Jq
ZWN0UHJvdG90eXBlKCkpKTsKK30KKworSlNPYmplY3QqIEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5j
dGlvbjo6cHJvdG90eXBlKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkK
K3sKKyAgICByZXR1cm4gZ2V0RE9NUHJvdG90eXBlPEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlv
bj4odm0sIGdsb2JhbE9iamVjdCk7Cit9CisKK0pTVmFsdWUgSlNUZXN0TGVnYWN5RmFjdG9yeUZ1
bmN0aW9uOjpnZXRDb25zdHJ1Y3RvcihWTSYgdm0sIGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QpCit7CisgICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdExlZ2FjeUZh
Y3RvcnlGdW5jdGlvbkNvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9i
amVjdCo+KGdsb2JhbE9iamVjdCkpOworfQorCitKU1ZhbHVlIEpTVGVzdExlZ2FjeUZhY3RvcnlG
dW5jdGlvbjo6Z2V0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCkKK3sKKyAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0TGVn
YWN5RmFjdG9yeUZ1bmN0aW9uTGVnYWN5RmFjdG9yeUZ1bmN0aW9uPih2bSwgKmpzQ2FzdDxKU0RP
TUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOworfQorCit2b2lkIEpTVGVzdExlZ2FjeUZh
Y3RvcnlGdW5jdGlvbjo6ZGVzdHJveShKU0M6OkpTQ2VsbCogY2VsbCkKK3sKKyAgICBKU1Rlc3RM
ZWdhY3lGYWN0b3J5RnVuY3Rpb24qIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxKU1Rlc3RMZWdh
Y3lGYWN0b3J5RnVuY3Rpb24qPihjZWxsKTsKKyAgICB0aGlzT2JqZWN0LT5KU1Rlc3RMZWdhY3lG
YWN0b3J5RnVuY3Rpb246On5KU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24oKTsKK30KKworRW5j
b2RlZEpTVmFsdWUganNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uQ29uc3RydWN0b3IoSlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
UHJvcGVydHlOYW1lKQoreworICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9i
amVjdCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Cisg
ICAgYXV0byogcHJvdG90eXBlID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RMZWdhY3lGYWN0b3J5RnVu
Y3Rpb25Qcm90b3R5cGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIGlm
IChVTkxJS0VMWSghcHJvdG90eXBlKSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb246OmdldENvbnN0cnVjdG9yKEpTQzo6Z2V0
Vk0obGV4aWNhbEdsb2JhbE9iamVjdCksIHByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCkpKTsKK30K
KworYm9vbCBzZXRKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb25Db25zdHJ1Y3RvcihKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCit7CisgICAgVk0mIHZtID0gSlNDOjpnZXRWTShs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKyAgICBhdXRvKiBwcm90b3R5cGUgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdExl
Z2FjeUZhY3RvcnlGdW5jdGlvblByb3RvdHlwZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1Zh
bHVlKSk7CisgICAgaWYgKFVOTElLRUxZKCFwcm90b3R5cGUpKSB7CisgICAgICAgIHRocm93Vk1U
eXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSk7CisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9CisgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IK
KyAgICByZXR1cm4gcHJvdG90eXBlLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmNv
bnN0cnVjdG9yLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSk7Cit9CisKK0pTQzo6SXNv
U3Vic3BhY2UqIEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbjo6c3Vic3BhY2VGb3JJbXBsKEpT
Qzo6Vk0mIHZtKQoreworICAgIGF1dG8mIGNsaWVudERhdGEgPSAqc3RhdGljX2Nhc3Q8SlNWTUNs
aWVudERhdGEqPih2bS5jbGllbnREYXRhKTsKKyAgICBhdXRvJiBzcGFjZXMgPSBjbGllbnREYXRh
LnN1YnNwYWNlcygpOworICAgIGlmIChhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9y
VGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbi5nZXQoKSkKKyAgICAgICAgcmV0dXJuIHNwYWNlOwor
ICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9i
amVjdCwgSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uPiB8fCAhSlNUZXN0TGVnYWN5RmFjdG9y
eUZ1bmN0aW9uOjpuZWVkc0Rlc3RydWN0aW9uKTsKKyAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNf
YmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpTVGVzdExlZ2FjeUZhY3RvcnlG
dW5jdGlvbj4pCisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdExlZ2FjeUZhY3RvcnlG
dW5jdGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhl
YXAsIHZtLmRlc3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0TGVnYWN5
RmFjdG9yeUZ1bmN0aW9uKTsKKyAgICBlbHNlCisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9y
VGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbiA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19T
VUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdExl
Z2FjeUZhY3RvcnlGdW5jdGlvbik7CisgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFj
ZUZvclRlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24uZ2V0KCk7CitJR05PUkVfV0FSTklOR1NfQkVH
SU4oInVucmVhY2hhYmxlLWNvZGUiKQorSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0YXV0b2xvZ2lj
YWwtY29tcGFyZSIpCisgICAgaWYgKCZKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb246OnZpc2l0
T3V0cHV0Q29uc3RyYWludHMgIT0gJkpTQzo6SlNDZWxsOjp2aXNpdE91dHB1dENvbnN0cmFpbnRz
KQorICAgICAgICBjbGllbnREYXRhLm91dHB1dENvbnN0cmFpbnRTcGFjZXMoKS5hcHBlbmQoc3Bh
Y2UpOworSUdOT1JFX1dBUk5JTkdTX0VORAorSUdOT1JFX1dBUk5JTkdTX0VORAorICAgIHJldHVy
biBzcGFjZTsKK30KKwordm9pZCBKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb246OmFuYWx5emVI
ZWFwKEpTQ2VsbCogY2VsbCwgSGVhcEFuYWx5emVyJiBhbmFseXplcikKK3sKKyAgICBhdXRvKiB0
aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbio+KGNlbGwpOwor
ICAgIGFuYWx5emVyLnNldFdyYXBwZWRPYmplY3RGb3JDZWxsKGNlbGwsICZ0aGlzT2JqZWN0LT53
cmFwcGVkKCkpOworICAgIGlmICh0aGlzT2JqZWN0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkp
CisgICAgICAgIGFuYWx5emVyLnNldExhYmVsRm9yQ2VsbChjZWxsLCAidXJsICIgKyB0aGlzT2Jq
ZWN0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnVybCgpLnN0cmluZygpKTsKKyAgICBCYXNl
OjphbmFseXplSGVhcChjZWxsLCBhbmFseXplcik7Cit9CisKK2Jvb2wgSlNUZXN0TGVnYWN5RmFj
dG9yeUZ1bmN0aW9uT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxl
PEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiwgU2xvdFZpc2l0b3ImIHZpc2l0b3IsIGNvbnN0
IGNoYXIqKiByZWFzb24pCit7CisgICAgYXV0byoganNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9u
ID0ganNDYXN0PEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbio+KGhhbmRsZS5zbG90KCktPmFz
Q2VsbCgpKTsKKyAgICBhdXRvJiB3cmFwcGVkID0ganNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9u
LT53cmFwcGVkKCk7CisgICAgaWYgKCF3cmFwcGVkLmlzQ29udGV4dFN0b3BwZWQoKSAmJiB3cmFw
cGVkLmhhc1BlbmRpbmdBY3Rpdml0eSgpKSB7CisgICAgICAgIGlmIChVTkxJS0VMWShyZWFzb24p
KQorICAgICAgICAgICAgKnJlYXNvbiA9ICJBY3RpdmVET01PYmplY3Qgd2l0aCBwZW5kaW5nIGFj
dGl2aXR5IjsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgIH0KKyAgICBVTlVTRURfUEFSQU0o
dmlzaXRvcik7CisgICAgVU5VU0VEX1BBUkFNKHJlYXNvbik7CisgICAgcmV0dXJuIGZhbHNlOwor
fQorCit2b2lkIEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbk93bmVyOjpmaW5hbGl6ZShKU0M6
OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCogY29udGV4dCkKK3sKKyAgICBhdXRv
KiBqc1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24gPSBzdGF0aWNfY2FzdDxKU1Rlc3RMZWdhY3lG
YWN0b3J5RnVuY3Rpb24qPihoYW5kbGUuc2xvdCgpLT5hc0NlbGwoKSk7CisgICAgYXV0byYgd29y
bGQgPSAqc3RhdGljX2Nhc3Q8RE9NV3JhcHBlcldvcmxkKj4oY29udGV4dCk7CisgICAgdW5jYWNo
ZVdyYXBwZXIod29ybGQsICZqc1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24tPndyYXBwZWQoKSwg
anNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uKTsKK30KKworI2lmIEVOQUJMRShCSU5ESU5HX0lO
VEVHUklUWSkKKyNpZiBQTEFURk9STShXSU4pCisjcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDQ4
MykKK2V4dGVybiAiQyIgeyBleHRlcm4gdm9pZCAoKmNvbnN0IF9faWRlbnRpZmllcigiPz9fN1Rl
c3RMZWdhY3lGYWN0b3J5RnVuY3Rpb25AV2ViQ29yZUBANkJAIilbXSkoKTsgfQorI2Vsc2UKK2V4
dGVybiAiQyIgeyBleHRlcm4gdm9pZCogX1pUVk43V2ViQ29yZTI1VGVzdExlZ2FjeUZhY3RvcnlG
dW5jdGlvbkVbXTsgfQorI2VuZGlmCisjZW5kaWYKKworSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNy
ZWF0ZWQoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFJlZjxUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uPiYmIGltcGwpCit7CisKKyNpZiBFTkFC
TEUoQklORElOR19JTlRFR1JJVFkpCisgICAgY29uc3Qgdm9pZCogYWN0dWFsVlRhYmxlUG9pbnRl
ciA9IGdldFZUYWJsZVBvaW50ZXIoaW1wbC5wdHIoKSk7CisjaWYgUExBVEZPUk0oV0lOKQorICAg
IHZvaWQqIGV4cGVjdGVkVlRhYmxlUG9pbnRlciA9IF9faWRlbnRpZmllcigiPz9fN1Rlc3RMZWdh
Y3lGYWN0b3J5RnVuY3Rpb25AV2ViQ29yZUBANkJAIik7CisjZWxzZQorICAgIHZvaWQqIGV4cGVj
dGVkVlRhYmxlUG9pbnRlciA9ICZfWlRWTjdXZWJDb3JlMjVUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0
aW9uRVsyXTsKKyNlbmRpZgorCisgICAgLy8gSWYgdGhpcyBmYWlscyBUZXN0TGVnYWN5RmFjdG9y
eUZ1bmN0aW9uIGRvZXMgbm90IGhhdmUgYSB2dGFibGUsIHNvIHlvdSBuZWVkIHRvIGFkZCB0aGUK
KyAgICAvLyBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlIGF0dHJpYnV0ZSB0byB0aGUgaW50ZXJm
YWNlIGRlZmluaXRpb24KKyAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfcG9seW1vcnBoaWM8VGVz
dExlZ2FjeUZhY3RvcnlGdW5jdGlvbj46OnZhbHVlLCAiVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlv
biBpcyBub3QgcG9seW1vcnBoaWMiKTsKKworICAgIC8vIElmIHlvdSBoaXQgdGhpcyBhc3NlcnRp
b24geW91IGVpdGhlciBoYXZlIGEgdXNlIGFmdGVyIGZyZWUgYnVnLCBvcgorICAgIC8vIFRlc3RM
ZWdhY3lGYWN0b3J5RnVuY3Rpb24gaGFzIHN1YmNsYXNzZXMuIElmIFRlc3RMZWdhY3lGYWN0b3J5
RnVuY3Rpb24gaGFzIHN1YmNsYXNzZXMgdGhhdCBnZXQgcGFzc2VkCisgICAgLy8gdG8gdG9KUygp
IHdlIGN1cnJlbnRseSByZXF1aXJlIFRlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24geW91IHRvIG9w
dCBvdXQgb2YgYmluZGluZyBoYXJkZW5pbmcKKyAgICAvLyBieSBhZGRpbmcgdGhlIFNraXBWVGFi
bGVWYWxpZGF0aW9uIGF0dHJpYnV0ZSB0byB0aGUgaW50ZXJmYWNlIElETCBkZWZpbml0aW9uCisg
ICAgUkVMRUFTRV9BU1NFUlQoYWN0dWFsVlRhYmxlUG9pbnRlciA9PSBleHBlY3RlZFZUYWJsZVBv
aW50ZXIpOworI2VuZGlmCisgICAgcmV0dXJuIGNyZWF0ZVdyYXBwZXI8VGVzdExlZ2FjeUZhY3Rv
cnlGdW5jdGlvbj4oZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKK30KKworSlNDOjpKU1Zh
bHVlIHRvSlMoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNET01H
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbiYgaW1w
bCkKK3sKKyAgICByZXR1cm4gd3JhcChsZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3Qs
IGltcGwpOworfQorCitUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uKiBKU1Rlc3RMZWdhY3lGYWN0
b3J5RnVuY3Rpb246OnRvV3JhcHBlZChKU0M6OlZNJiB2bSwgSlNDOjpKU1ZhbHVlIHZhbHVlKQor
eworICAgIGlmIChhdXRvKiB3cmFwcGVyID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RMZWdhY3lGYWN0
b3J5RnVuY3Rpb24qPih2bSwgdmFsdWUpKQorICAgICAgICByZXR1cm4gJndyYXBwZXItPndyYXBw
ZWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworfQpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbi5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24uaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5NCBAQAorLyoKKyAgICBUaGlzIGZpbGUgaXMgcGFy
dCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCisgICAgVGhpcyBmaWxlIGhhcyBi
ZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKKwor
ICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAg
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRo
IHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0
bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0
cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLwor
CisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkpTRE9NV3JhcHBlci5oIgorI2luY2x1ZGUgIlRl
c3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24uaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBKU1Rlc3RMZWdhY3lGYWN0b3J5RnVu
Y3Rpb24gOiBwdWJsaWMgSlNET01XcmFwcGVyPFRlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24+IHsK
K3B1YmxpYzoKKyAgICB1c2luZyBCYXNlID0gSlNET01XcmFwcGVyPFRlc3RMZWdhY3lGYWN0b3J5
RnVuY3Rpb24+OworICAgIHN0YXRpYyBKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24qIGNyZWF0
ZShKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBSZWY8VGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbj4mJiBpbXBsKQorICAgIHsKKyAgICAg
ICAgSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6
YWxsb2NhdGVDZWxsPEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbj4oZ2xvYmFsT2JqZWN0LT52
bSgpLmhlYXApKSBKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24oc3RydWN0dXJlLCAqZ2xvYmFs
T2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKKyAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbihnbG9i
YWxPYmplY3QtPnZtKCkpOworICAgICAgICByZXR1cm4gcHRyOworICAgIH0KKworICAgIHN0YXRp
YyBKU0M6OkpTT2JqZWN0KiBjcmVhdGVQcm90b3R5cGUoSlNDOjpWTSYsIEpTRE9NR2xvYmFsT2Jq
ZWN0Jik7CisgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIHByb3RvdHlwZShKU0M6OlZNJiwgSlNE
T01HbG9iYWxPYmplY3QmKTsKKyAgICBzdGF0aWMgVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbiog
dG9XcmFwcGVkKEpTQzo6Vk0mLCBKU0M6OkpTVmFsdWUpOworICAgIHN0YXRpYyB2b2lkIGRlc3Ry
b3koSlNDOjpKU0NlbGwqKTsKKworICAgIERFQ0xBUkVfSU5GTzsKKworICAgIHN0YXRpYyBKU0M6
OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAg
ICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5
cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8o
KSwgSlNDOjpOb25BcnJheSk7CisgICAgfQorCisgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRD
b25zdHJ1Y3RvcihKU0M6OlZNJiwgY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOworICAgIHN0
YXRpYyBKU0M6OkpTVmFsdWUgZ2V0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uKEpTQzo6Vk0mLCBKU0M6
OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUsIEpTQzo6U3Vic3BhY2VB
Y2Nlc3MgbW9kZT4gc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0m
IHZtKQorICAgIHsKKyAgICAgICAgaWYgY29uc3RleHByIChtb2RlID09IEpTQzo6U3Vic3BhY2VB
Y2Nlc3M6OkNvbmN1cnJlbnRseSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAg
ICByZXR1cm4gc3Vic3BhY2VGb3JJbXBsKHZtKTsKKyAgICB9CisgICAgc3RhdGljIEpTQzo6SXNv
U3Vic3BhY2UqIHN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSk7CisgICAgc3RhdGljIHZvaWQg
YW5hbHl6ZUhlYXAoSlNDZWxsKiwgSlNDOjpIZWFwQW5hbHl6ZXImKTsKK3Byb3RlY3RlZDoKKyAg
ICBKU1Rlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24oSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2Jh
bE9iamVjdCYsIFJlZjxUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uPiYmKTsKKworICAgIHZvaWQg
ZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYpOworfTsKKworY2xhc3MgSlNUZXN0TGVnYWN5RmFjdG9y
eUZ1bmN0aW9uT3duZXIgOiBwdWJsaWMgSlNDOjpXZWFrSGFuZGxlT3duZXIgeworcHVibGljOgor
ICAgIHZpcnR1YWwgYm9vbCBpc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxK
U0M6OlVua25vd24+LCB2b2lkKiBjb250ZXh0LCBKU0M6OlNsb3RWaXNpdG9yJiwgY29uc3QgY2hh
cioqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3du
Piwgdm9pZCogY29udGV4dCk7Cit9OworCitpbmxpbmUgSlNDOjpXZWFrSGFuZGxlT3duZXIqIHdy
YXBwZXJPd25lcihET01XcmFwcGVyV29ybGQmLCBUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uKikK
K3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9u
T3duZXI+IG93bmVyOworICAgIHJldHVybiAmb3duZXIuZ2V0KCk7Cit9CisKK2lubGluZSB2b2lk
KiB3cmFwcGVyS2V5KFRlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24qIHdyYXBwYWJsZU9iamVjdCkK
K3sKKyAgICByZXR1cm4gd3JhcHBhYmxlT2JqZWN0OworfQorCitKU0M6OkpTVmFsdWUgdG9KUyhK
U0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNET01HbG9iYWxPYmplY3QqLCBUZXN0TGVnYWN5RmFjdG9y
eUZ1bmN0aW9uJik7CitpbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
VGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbiogaW1wbCkgeyByZXR1cm4gaW1wbCA/IHRvSlMobGV4
aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LCAqaW1wbCkgOiBKU0M6OmpzTnVsbCgpOyB9
CitKU0M6OkpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNE
T01HbG9iYWxPYmplY3QqLCBSZWY8VGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbj4mJik7Citpbmxp
bmUgSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmUHRy
PFRlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24+JiYgaW1wbCkgeyByZXR1cm4gaW1wbCA/IHRvSlNO
ZXdseUNyZWF0ZWQobGV4aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LCBpbXBsLnJlbGVh
c2VOb25OdWxsKCkpIDogSlNDOjpqc051bGwoKTsgfQorCit0ZW1wbGF0ZTw+IHN0cnVjdCBKU0RP
TVdyYXBwZXJDb252ZXJ0ZXJUcmFpdHM8VGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbj4geworICAg
IHVzaW5nIFdyYXBwZXJDbGFzcyA9IEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbjsKKyAgICB1
c2luZyBUb1dyYXBwZWRSZXR1cm5UeXBlID0gVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbio7Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQ29u
c3RydWN0b3IuY3BwCShyZXZpc2lvbiAyNjY2MjApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAJKG5vbmV4aXN0ZW50
KQpAQCAtMSwzMjggKzAsMCBAQAotLyoKLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2Vi
S2l0IG9wZW4gc291cmNlIHByb2plY3QuCi0gICAgVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRl
ZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKLQotICAgIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAg
ICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYwotICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlcgotICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLQotICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICAgIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gICAg
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKLSAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KLQotICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFy
eTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICAgIHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsCi0gICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0qLwotCi0jaW5jbHVkZSAi
Y29uZmlnLmgiCi0jaW5jbHVkZSAiSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5oIgotCi0jaW5jbHVk
ZSAiQWN0aXZlRE9NT2JqZWN0LmgiCi0jaW5jbHVkZSAiRE9NSXNvU3Vic3BhY2VzLmgiCi0jaW5j
bHVkZSAiRG9jdW1lbnQuaCIKLSNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKLSNpbmNsdWRlICJK
U0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZS5oIgotI2luY2x1ZGUgIkpTRE9NQ29udmVy
dEludGVyZmFjZS5oIgotI2luY2x1ZGUgIkpTRE9NQ29udmVydFN0cmluZ3MuaCIKLSNpbmNsdWRl
ICJKU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmgiCi0jaW5jbHVkZSAiSlNET01OYW1lZENvbnN0cnVj
dG9yLmgiCi0jaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKLSNpbmNsdWRlICJTY3JpcHRF
eGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgotI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJvdG90eXBlLmg+Ci0jaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvSGVhcEFuYWx5emVyLmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlND
SW5saW5lcy5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0
SGVhcENlbGxUeXBlLmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Vic3BhY2VJbmxpbmVz
Lmg+Ci0jaW5jbHVkZSA8d3RmL0dldFB0ci5oPgotI2luY2x1ZGUgPHd0Zi9Qb2ludGVyUHJlcGFy
YXRpb25zLmg+Ci0jaW5jbHVkZSA8d3RmL1VSTC5oPgotCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LXVzaW5nIG5hbWVzcGFjZSBKU0M7Ci0KLS8vIEF0dHJpYnV0ZXMKLQotSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3ROYW1lZENvbnN0cnVjdG9yQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVj
dCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLWJvb2wgc2V0SlNU
ZXN0TmFtZWRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6
OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKLQotY2xhc3MgSlNUZXN0TmFt
ZWRDb25zdHJ1Y3RvclByb3RvdHlwZSBmaW5hbCA6IHB1YmxpYyBKU0M6OkpTTm9uRmluYWxPYmpl
Y3QgewotcHVibGljOgotICAgIHVzaW5nIEJhc2UgPSBKU0M6OkpTTm9uRmluYWxPYmplY3Q7Ci0g
ICAgc3RhdGljIEpTVGVzdE5hbWVkQ29uc3RydWN0b3JQcm90b3R5cGUqIGNyZWF0ZShKU0M6OlZN
JiB2bSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKLSAgICB7Ci0gICAgICAgIEpTVGVzdE5hbWVkQ29uc3RydWN0b3JQcm90b3R5cGUq
IHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0TmFtZWRDb25zdHJ1
Y3RvclByb3RvdHlwZT4odm0uaGVhcCkpIEpTVGVzdE5hbWVkQ29uc3RydWN0b3JQcm90b3R5cGUo
dm0sIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKLSAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlv
bih2bSk7Ci0gICAgICAgIHJldHVybiBwdHI7Ci0gICAgfQotCi0gICAgREVDTEFSRV9JTkZPOwot
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBKU0M6OlN1YnNwYWNlQWNjZXNzPgotICAg
IHN0YXRpYyBKU0M6Oklzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihKU0M6OlZNJiB2bSkKLSAgICB7
Ci0gICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEpTVGVzdE5hbWVk
Q29uc3RydWN0b3JQcm90b3R5cGUsIEJhc2UpOwotICAgICAgICByZXR1cm4gJnZtLnBsYWluT2Jq
ZWN0U3BhY2U7Ci0gICAgfQotICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0
dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6
SlNWYWx1ZSBwcm90b3R5cGUpCi0gICAgewotICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6
OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpP
YmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Ci0gICAgfQotCi1wcml2YXRlOgot
ICAgIEpTVGVzdE5hbWVkQ29uc3RydWN0b3JQcm90b3R5cGUoSlNDOjpWTSYgdm0sIEpTQzo6SlNH
bG9iYWxPYmplY3QqLCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQotICAgICAgICA6IEpTQzo6
SlNOb25GaW5hbE9iamVjdCh2bSwgc3RydWN0dXJlKQotICAgIHsKLSAgICB9Ci0KLSAgICB2b2lk
IGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0mKTsKLX07Ci1TVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFD
RV9TSEFSQUJMRShKU1Rlc3ROYW1lZENvbnN0cnVjdG9yUHJvdG90eXBlLCBKU1Rlc3ROYW1lZENv
bnN0cnVjdG9yUHJvdG90eXBlOjpCYXNlKTsKLQotdXNpbmcgSlNUZXN0TmFtZWRDb25zdHJ1Y3Rv
ckNvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNUZXN0TmFt
ZWRDb25zdHJ1Y3Rvcj47Ci11c2luZyBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yTmFtZWRDb25zdHJ1
Y3RvciA9IEpTRE9NTmFtZWRDb25zdHJ1Y3RvcjxKU1Rlc3ROYW1lZENvbnN0cnVjdG9yPjsKLQot
dGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1Y3Rvcjo6cHJv
dG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYg
Z2xvYmFsT2JqZWN0KQotewotICAgIFVOVVNFRF9QQVJBTSh2bSk7Ci0gICAgcmV0dXJuIGdsb2Jh
bE9iamVjdC5mdW5jdGlvblByb3RvdHlwZSgpOwotfQotCi10ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0
TmFtZWRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0s
IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCi17Ci0gICAgcHV0RGlyZWN0KHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdE5hbWVkQ29uc3RydWN0b3I6OnByb3Rv
dHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0
ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0pOwotICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFt
ZSwganNOb250cml2aWFsU3RyaW5nKHZtLCAiVGVzdE5hbWVkQ29uc3RydWN0b3IiX3MpLCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtKTsKLSAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNO
dW1iZXIoMSksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0pOwotfQotCi10ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBK
U1Rlc3ROYW1lZENvbnN0cnVjdG9yQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3ROYW1lZENv
bnN0cnVjdG9yIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhP
RF9UQUJMRShKU1Rlc3ROYW1lZENvbnN0cnVjdG9yQ29uc3RydWN0b3IpIH07Ci0KLXRlbXBsYXRl
PD4gRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yTmFt
ZWRDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKLXsKLSAgICBWTSYgdm0gPSBsZXhpY2FsR2xvYmFs
T2JqZWN0LT52bSgpOwotICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwotICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0TmFtZWRDb25zdHJ1Y3Rv
ck5hbWVkQ29uc3RydWN0b3IqPihjYWxsRnJhbWUtPmpzQ2FsbGVlKCkpOwotICAgIEFTU0VSVChj
YXN0ZWRUaGlzKTsKLSAgICBpZiAoVU5MSUtFTFkoY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkg
PCAxKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihsZXhpY2FsR2xvYmFsT2Jq
ZWN0KSk7Ci0gICAgYXV0byogY29udGV4dCA9IGNhc3RlZFRoaXMtPnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKTsKLSAgICBpZiAoVU5MSUtFTFkoIWNvbnRleHQpKQotICAgICAgICByZXR1cm4gdGhy
b3dDb25zdHJ1Y3RvclNjcmlwdEV4ZWN1dGlvbkNvbnRleHRVbmF2YWlsYWJsZUVycm9yKCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCAiVGVzdE5hbWVkQ29uc3RydWN0b3IiKTsKLSAg
ICBBU1NFUlQoY29udGV4dC0+aXNEb2N1bWVudCgpKTsKLSAgICBhdXRvJiBkb2N1bWVudCA9IGRv
d25jYXN0PERvY3VtZW50PigqY29udGV4dCk7Ci0gICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFy
Z3VtZW50MCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7Ci0gICAgYXV0byBzdHIx
ID0gY29udmVydDxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAu
dmFsdWUoKSk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKLSAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQxID0gY2FsbEZyYW1l
LT5hcmd1bWVudCgxKTsKLSAgICBhdXRvIHN0cjIgPSBhcmd1bWVudDEudmFsdWUoKS5pc1VuZGVm
aW5lZCgpID8gImRlZmF1bHRTdHJpbmciX3MgOiBjb252ZXJ0PElETERPTVN0cmluZz4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MS52YWx1ZSgpKTsKLSAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIEVuc3VyZVN0aWxsQWxpdmVT
Y29wZSBhcmd1bWVudDIgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDIpOwotICAgIGF1dG8gc3RyMyA9
IGFyZ3VtZW50Mi52YWx1ZSgpLmlzVW5kZWZpbmVkKCkgPyBTdHJpbmcoKSA6IGNvbnZlcnQ8SURM
RE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQyLnZhbHVlKCkpOwotICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAg
YXV0byBvYmplY3QgPSBUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6Y3JlYXRlRm9ySlNDb25zdHJ1Y3Rv
cihkb2N1bWVudCwgV1RGTW92ZShzdHIxKSwgV1RGTW92ZShzdHIyKSwgV1RGTW92ZShzdHIzKSk7
Ci0gICAgc3RhdGljX2Fzc2VydChJc0V4Y2VwdGlvbk9yPGRlY2x0eXBlKG9iamVjdCk+Ojp2YWx1
ZSk7Ci0gICAgc3RhdGljX2Fzc2VydChkZWNsdHlwZShvYmplY3QpOjpSZXR1cm5UeXBlOjppc1Jl
Zik7Ci0gICAgYXV0byBqc1ZhbHVlID0gdG9KU05ld2x5Q3JlYXRlZDxJRExJbnRlcmZhY2U8VGVz
dE5hbWVkQ29uc3RydWN0b3I+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhc3RlZFRoaXMtPmds
b2JhbE9iamVjdCgpLCB0aHJvd1Njb3BlLCBXVEZNb3ZlKG9iamVjdCkpOwotICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKLSAgICBzZXRTdWJjbGFzc1N0cnVjdHVyZUlm
TmVlZGVkPFRlc3ROYW1lZENvbnN0cnVjdG9yPihsZXhpY2FsR2xvYmFsT2JqZWN0LCBjYWxsRnJh
bWUsIGFzT2JqZWN0KGpzVmFsdWUpKTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIHsgfSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1ZhbHVlKTsKLX0KLQotdGVt
cGxhdGU8PiBKU1ZhbHVlIEpTVGVzdE5hbWVkQ29uc3RydWN0b3JOYW1lZENvbnN0cnVjdG9yOjpw
cm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0
JiBnbG9iYWxPYmplY3QpCi17Ci0gICAgVU5VU0VEX1BBUkFNKHZtKTsKLSAgICByZXR1cm4gZ2xv
YmFsT2JqZWN0LmZ1bmN0aW9uUHJvdG90eXBlKCk7Ci19Ci0KLXRlbXBsYXRlPD4gdm9pZCBKU1Rl
c3ROYW1lZENvbnN0cnVjdG9yTmFtZWRDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMo
Vk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQotewotICAgIHB1dERpcmVj
dCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3ROYW1lZENvbnN0cnVjdG9y
Ojpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnREZWxldGUgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKLSAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFt
ZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIkF1ZGlvIl9zKSwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7
Ci0gICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDEp
LCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKTsKLX0KLQotdGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0TmFt
ZWRDb25zdHJ1Y3Rvck5hbWVkQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkF1ZGlvIiwgJkJhc2U6
OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3ROYW1l
ZENvbnN0cnVjdG9yTmFtZWRDb25zdHJ1Y3RvcikgfTsKLQotLyogSGFzaCB0YWJsZSBmb3IgcHJv
dG90eXBlICovCi0KLXN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3ROYW1lZENvbnN0
cnVjdG9yUHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9Ci17Ci0gICAgeyAiY29uc3RydWN0b3IiLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBO
b0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1
ZUZ1bmM+KGpzVGVzdE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3Rh
dGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdE5hbWVkQ29u
c3RydWN0b3JDb25zdHJ1Y3RvcikgfSB9LAotfTsKLQotY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE5h
bWVkQ29uc3RydWN0b3JQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlc3ROYW1lZENvbnN0cnVjdG9y
IiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShK
U1Rlc3ROYW1lZENvbnN0cnVjdG9yUHJvdG90eXBlKSB9OwotCi12b2lkIEpTVGVzdE5hbWVkQ29u
c3RydWN0b3JQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKLXsKLSAgICBCYXNlOjpm
aW5pc2hDcmVhdGlvbih2bSk7Ci0gICAgcmVpZnlTdGF0aWNQcm9wZXJ0aWVzKHZtLCBKU1Rlc3RO
YW1lZENvbnN0cnVjdG9yOjppbmZvKCksIEpTVGVzdE5hbWVkQ29uc3RydWN0b3JQcm90b3R5cGVU
YWJsZVZhbHVlcywgKnRoaXMpOwotICAgIEpTQ19UT19TVFJJTkdfVEFHX1dJVEhPVVRfVFJBTlNJ
VElPTigpOwotfQotCi1jb25zdCBDbGFzc0luZm8gSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6c19p
bmZvID0geyAiVGVzdE5hbWVkQ29uc3RydWN0b3IiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBu
dWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE5hbWVkQ29uc3RydWN0b3IpIH07Ci0K
LUpTVGVzdE5hbWVkQ29uc3RydWN0b3I6OkpTVGVzdE5hbWVkQ29uc3RydWN0b3IoU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0TmFt
ZWRDb25zdHJ1Y3Rvcj4mJiBpbXBsKQotICAgIDogSlNET01XcmFwcGVyPFRlc3ROYW1lZENvbnN0
cnVjdG9yPihzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSkKLXsKLX0KLQot
dm9pZCBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCi17Ci0g
ICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwotICAgIEFTU0VSVChpbmhlcml0cyh2bSwgaW5m
bygpKSk7Ci0KLSAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZjxBY3RpdmVET01PYmpl
Y3QsIFRlc3ROYW1lZENvbnN0cnVjdG9yPjo6dmFsdWUsICJJbnRlcmZhY2UgaXMgbWFya2VkIGFz
IFtBY3RpdmVET01PYmplY3RdIGJ1dCBpbXBsZW1lbnRhdGlvbiBjbGFzcyBkb2VzIG5vdCBzdWJj
bGFzcyBBY3RpdmVET01PYmplY3QuIik7Ci0KLX0KLQotSlNPYmplY3QqIEpTVGVzdE5hbWVkQ29u
c3RydWN0b3I6OmNyZWF0ZVByb3RvdHlwZShWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9i
YWxPYmplY3QpCi17Ci0gICAgcmV0dXJuIEpTVGVzdE5hbWVkQ29uc3RydWN0b3JQcm90b3R5cGU6
OmNyZWF0ZSh2bSwgJmdsb2JhbE9iamVjdCwgSlNUZXN0TmFtZWRDb25zdHJ1Y3RvclByb3RvdHlw
ZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCAmZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3Qub2JqZWN0
UHJvdG90eXBlKCkpKTsKLX0KLQotSlNPYmplY3QqIEpTVGVzdE5hbWVkQ29uc3RydWN0b3I6OnBy
b3RvdHlwZShWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCi17Ci0gICAg
cmV0dXJuIGdldERPTVByb3RvdHlwZTxKU1Rlc3ROYW1lZENvbnN0cnVjdG9yPih2bSwgZ2xvYmFs
T2JqZWN0KTsKLX0KLQotSlNWYWx1ZSBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yOjpnZXRDb25zdHJ1
Y3RvcihWTSYgdm0sIGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCi17Ci0gICAg
cmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1Y3Rv
cj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsK
LX0KLQotSlNWYWx1ZSBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yOjpnZXROYW1lZENvbnN0cnVjdG9y
KFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKLXsKLSAgICByZXR1cm4gZ2V0
RE9NQ29uc3RydWN0b3I8SlNUZXN0TmFtZWRDb25zdHJ1Y3Rvck5hbWVkQ29uc3RydWN0b3I+KHZt
LCAqanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7Ci19Ci0KLXZvaWQg
SlNUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6ZGVzdHJveShKU0M6OkpTQ2VsbCogY2VsbCkKLXsKLSAg
ICBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yKiB0aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNUZXN0
TmFtZWRDb25zdHJ1Y3Rvcio+KGNlbGwpOwotICAgIHRoaXNPYmplY3QtPkpTVGVzdE5hbWVkQ29u
c3RydWN0b3I6On5KU1Rlc3ROYW1lZENvbnN0cnVjdG9yKCk7Ci19Ci0KLUVuY29kZWRKU1ZhbHVl
IGpzVGVzdE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCi17
Ci0gICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKLSAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBhdXRvKiBwcm90b3R5
cGUgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE5hbWVkQ29uc3RydWN0b3JQcm90b3R5cGUqPih2bSwg
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghcHJvdG90eXBl
KSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3ROYW1lZENvbnN0
cnVjdG9yOjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpLCBw
cm90b3R5cGUtPmdsb2JhbE9iamVjdCgpKSk7Ci19Ci0KLWJvb2wgc2V0SlNUZXN0TmFtZWRDb25z
dHJ1Y3RvckNvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKLXsK
LSAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwotICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIGF1dG8qIHByb3RvdHlw
ZSA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0TmFtZWRDb25zdHJ1Y3RvclByb3RvdHlwZSo+KHZtLCBK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFwcm90b3R5cGUp
KSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgLy8gU2hhZG93aW5nIGEg
YnVpbHQtaW4gY29uc3RydWN0b3IKLSAgICByZXR1cm4gcHJvdG90eXBlLT5wdXREaXJlY3Qodm0s
IHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZh
bHVlKSk7Ci19Ci0KLUpTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdE5hbWVkQ29uc3RydWN0b3I6OnN1
YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSkKLXsKLSAgICBhdXRvJiBjbGllbnREYXRhID0gKnN0
YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7Ci0gICAgYXV0byYgc3Bh
Y2VzID0gY2xpZW50RGF0YS5zdWJzcGFjZXMoKTsKLSAgICBpZiAoYXV0byogc3BhY2UgPSBzcGFj
ZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZENvbnN0cnVjdG9yLmdldCgpKQotICAgICAgICByZXR1
cm4gc3BhY2U7Ci0gICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVz
dHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yPiB8fCAhSlNUZXN0TmFtZWRD
b25zdHJ1Y3Rvcjo6bmVlZHNEZXN0cnVjdGlvbik7Ci0gICAgaWYgY29uc3RleHByIChzdGQ6Omlz
X2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3ROYW1lZENvbnN0cnVj
dG9yPikKLSAgICAgICAgc3BhY2VzLm1fc3Vic3BhY2VGb3JUZXN0TmFtZWRDb25zdHJ1Y3RvciA9
IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRl
c3RydWN0aWJsZU9iamVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0TmFtZWRDb25zdHJ1Y3Rv
cik7Ci0gICAgZWxzZQotICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZENvbnN0
cnVjdG9yID0gbWFrZVVuaXF1ZTxJc29TdWJzcGFjZT4gSVNPX1NVQlNQQUNFX0lOSVQodm0uaGVh
cCwgdm0uY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvcik7Ci0g
ICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3ROYW1lZENvbnN0cnVjdG9y
LmdldCgpOwotSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKLUlHTk9S
RV9XQVJOSU5HU19CRUdJTigidGF1dG9sb2dpY2FsLWNvbXBhcmUiKQotICAgIGlmICgmSlNUZXN0
TmFtZWRDb25zdHJ1Y3Rvcjo6dmlzaXRPdXRwdXRDb25zdHJhaW50cyAhPSAmSlNDOjpKU0NlbGw6
OnZpc2l0T3V0cHV0Q29uc3RyYWludHMpCi0gICAgICAgIGNsaWVudERhdGEub3V0cHV0Q29uc3Ry
YWludFNwYWNlcygpLmFwcGVuZChzcGFjZSk7Ci1JR05PUkVfV0FSTklOR1NfRU5ECi1JR05PUkVf
V0FSTklOR1NfRU5ECi0gICAgcmV0dXJuIHNwYWNlOwotfQotCi12b2lkIEpTVGVzdE5hbWVkQ29u
c3RydWN0b3I6OmFuYWx5emVIZWFwKEpTQ2VsbCogY2VsbCwgSGVhcEFuYWx5emVyJiBhbmFseXpl
cikKLXsKLSAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdE5hbWVkQ29uc3RydWN0
b3IqPihjZWxsKTsKLSAgICBhbmFseXplci5zZXRXcmFwcGVkT2JqZWN0Rm9yQ2VsbChjZWxsLCAm
dGhpc09iamVjdC0+d3JhcHBlZCgpKTsKLSAgICBpZiAodGhpc09iamVjdC0+c2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpKQotICAgICAgICBhbmFseXplci5zZXRMYWJlbEZvckNlbGwoY2VsbCwgInVy
bCAiICsgdGhpc09iamVjdC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT51cmwoKS5zdHJpbmco
KSk7Ci0gICAgQmFzZTo6YW5hbHl6ZUhlYXAoY2VsbCwgYW5hbHl6ZXIpOwotfQotCi1ib29sIEpT
VGVzdE5hbWVkQ29uc3RydWN0b3JPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlND
OjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqLCBTbG90VmlzaXRvciYgdmlzaXRv
ciwgY29uc3QgY2hhcioqIHJlYXNvbikKLXsKLSAgICBhdXRvKiBqc1Rlc3ROYW1lZENvbnN0cnVj
dG9yID0ganNDYXN0PEpTVGVzdE5hbWVkQ29uc3RydWN0b3IqPihoYW5kbGUuc2xvdCgpLT5hc0Nl
bGwoKSk7Ci0gICAgYXV0byYgd3JhcHBlZCA9IGpzVGVzdE5hbWVkQ29uc3RydWN0b3ItPndyYXBw
ZWQoKTsKLSAgICBpZiAoIXdyYXBwZWQuaXNDb250ZXh0U3RvcHBlZCgpICYmIHdyYXBwZWQuaGFz
UGVuZGluZ0FjdGl2aXR5KCkpIHsKLSAgICAgICAgaWYgKFVOTElLRUxZKHJlYXNvbikpCi0gICAg
ICAgICAgICAqcmVhc29uID0gIkFjdGl2ZURPTU9iamVjdCB3aXRoIHBlbmRpbmcgYWN0aXZpdHki
OwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgfQotICAgIFVOVVNFRF9QQVJBTSh2aXNpdG9y
KTsKLSAgICBVTlVTRURfUEFSQU0ocmVhc29uKTsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLXZv
aWQgSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvck93bmVyOjpmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6
OlVua25vd24+IGhhbmRsZSwgdm9pZCogY29udGV4dCkKLXsKLSAgICBhdXRvKiBqc1Rlc3ROYW1l
ZENvbnN0cnVjdG9yID0gc3RhdGljX2Nhc3Q8SlNUZXN0TmFtZWRDb25zdHJ1Y3Rvcio+KGhhbmRs
ZS5zbG90KCktPmFzQ2VsbCgpKTsKLSAgICBhdXRvJiB3b3JsZCA9ICpzdGF0aWNfY2FzdDxET01X
cmFwcGVyV29ybGQqPihjb250ZXh0KTsKLSAgICB1bmNhY2hlV3JhcHBlcih3b3JsZCwgJmpzVGVz
dE5hbWVkQ29uc3RydWN0b3ItPndyYXBwZWQoKSwganNUZXN0TmFtZWRDb25zdHJ1Y3Rvcik7Ci19
Ci0KLSNpZiBFTkFCTEUoQklORElOR19JTlRFR1JJVFkpCi0jaWYgUExBVEZPUk0oV0lOKQotI3By
YWdtYSB3YXJuaW5nKGRpc2FibGU6IDQ0ODMpCi1leHRlcm4gIkMiIHsgZXh0ZXJuIHZvaWQgKCpj
b25zdCBfX2lkZW50aWZpZXIoIj8/XzdUZXN0TmFtZWRDb25zdHJ1Y3RvckBXZWJDb3JlQEA2QkAi
KVtdKSgpOyB9Ci0jZWxzZQotZXh0ZXJuICJDIiB7IGV4dGVybiB2b2lkKiBfWlRWTjdXZWJDb3Jl
MjBUZXN0TmFtZWRDb25zdHJ1Y3RvckVbXTsgfQotI2VuZGlmCi0jZW5kaWYKLQotSlNDOjpKU1Zh
bHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTRE9NR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0TmFtZWRDb25zdHJ1Y3Rvcj4mJiBpbXBsKQotewot
Ci0jaWYgRU5BQkxFKEJJTkRJTkdfSU5URUdSSVRZKQotICAgIGNvbnN0IHZvaWQqIGFjdHVhbFZU
YWJsZVBvaW50ZXIgPSBnZXRWVGFibGVQb2ludGVyKGltcGwucHRyKCkpOwotI2lmIFBMQVRGT1JN
KFdJTikKLSAgICB2b2lkKiBleHBlY3RlZFZUYWJsZVBvaW50ZXIgPSBfX2lkZW50aWZpZXIoIj8/
XzdUZXN0TmFtZWRDb25zdHJ1Y3RvckBXZWJDb3JlQEA2QkAiKTsKLSNlbHNlCi0gICAgdm9pZCog
ZXhwZWN0ZWRWVGFibGVQb2ludGVyID0gJl9aVFZON1dlYkNvcmUyMFRlc3ROYW1lZENvbnN0cnVj
dG9yRVsyXTsKLSNlbmRpZgotCi0gICAgLy8gSWYgdGhpcyBmYWlscyBUZXN0TmFtZWRDb25zdHJ1
Y3RvciBkb2VzIG5vdCBoYXZlIGEgdnRhYmxlLCBzbyB5b3UgbmVlZCB0byBhZGQgdGhlCi0gICAg
Ly8gSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZSBhdHRyaWJ1dGUgdG8gdGhlIGludGVyZmFjZSBk
ZWZpbml0aW9uCi0gICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3BvbHltb3JwaGljPFRlc3ROYW1l
ZENvbnN0cnVjdG9yPjo6dmFsdWUsICJUZXN0TmFtZWRDb25zdHJ1Y3RvciBpcyBub3QgcG9seW1v
cnBoaWMiKTsKLQotICAgIC8vIElmIHlvdSBoaXQgdGhpcyBhc3NlcnRpb24geW91IGVpdGhlciBo
YXZlIGEgdXNlIGFmdGVyIGZyZWUgYnVnLCBvcgotICAgIC8vIFRlc3ROYW1lZENvbnN0cnVjdG9y
IGhhcyBzdWJjbGFzc2VzLiBJZiBUZXN0TmFtZWRDb25zdHJ1Y3RvciBoYXMgc3ViY2xhc3NlcyB0
aGF0IGdldCBwYXNzZWQKLSAgICAvLyB0byB0b0pTKCkgd2UgY3VycmVudGx5IHJlcXVpcmUgVGVz
dE5hbWVkQ29uc3RydWN0b3IgeW91IHRvIG9wdCBvdXQgb2YgYmluZGluZyBoYXJkZW5pbmcKLSAg
ICAvLyBieSBhZGRpbmcgdGhlIFNraXBWVGFibGVWYWxpZGF0aW9uIGF0dHJpYnV0ZSB0byB0aGUg
aW50ZXJmYWNlIElETCBkZWZpbml0aW9uCi0gICAgUkVMRUFTRV9BU1NFUlQoYWN0dWFsVlRhYmxl
UG9pbnRlciA9PSBleHBlY3RlZFZUYWJsZVBvaW50ZXIpOwotI2VuZGlmCi0gICAgcmV0dXJuIGNy
ZWF0ZVdyYXBwZXI8VGVzdE5hbWVkQ29uc3RydWN0b3I+KGdsb2JhbE9iamVjdCwgV1RGTW92ZShp
bXBsKSk7Ci19Ci0KLUpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3ROYW1l
ZENvbnN0cnVjdG9yJiBpbXBsKQotewotICAgIHJldHVybiB3cmFwKGxleGljYWxHbG9iYWxPYmpl
Y3QsIGdsb2JhbE9iamVjdCwgaW1wbCk7Ci19Ci0KLVRlc3ROYW1lZENvbnN0cnVjdG9yKiBKU1Rl
c3ROYW1lZENvbnN0cnVjdG9yOjp0b1dyYXBwZWQoSlNDOjpWTSYgdm0sIEpTQzo6SlNWYWx1ZSB2
YWx1ZSkKLXsKLSAgICBpZiAoYXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0TmFt
ZWRDb25zdHJ1Y3Rvcio+KHZtLCB2YWx1ZSkpCi0gICAgICAgIHJldHVybiAmd3JhcHBlci0+d3Jh
cHBlZCgpOwotICAgIHJldHVybiBudWxscHRyOwotfQotCi19CgpQcm9wZXJ0eSBjaGFuZ2VzIG9u
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25z
dHJ1Y3Rvci5jcHAKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46ZW9sLXN0eWxlCiMjIC0xICswLDAg
IyMKLUxGClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5hbWVkQ29uc3RydWN0b3IuaAkocmV2aXNpb24gMjY2NjIwKQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuaAkobm9uZXhp
c3RlbnQpCkBAIC0xLDk0ICswLDAgQEAKLS8qCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhl
IFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgotICAgIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5l
cmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCi0KLSAgICBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
Ci0gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKLSAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXIKLSAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5
b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgot
ICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCi0gICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCi0KLSAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gICAgYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAgICB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAotICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotKi8KLQotI3ByYWdt
YSBvbmNlCi0KLSNpbmNsdWRlICJKU0RPTVdyYXBwZXIuaCIKLSNpbmNsdWRlICJUZXN0TmFtZWRD
b25zdHJ1Y3Rvci5oIgotI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEpTVGVzdE5hbWVkQ29uc3RydWN0b3IgOiBwdWJsaWMgSlNE
T01XcmFwcGVyPFRlc3ROYW1lZENvbnN0cnVjdG9yPiB7Ci1wdWJsaWM6Ci0gICAgdXNpbmcgQmFz
ZSA9IEpTRE9NV3JhcHBlcjxUZXN0TmFtZWRDb25zdHJ1Y3Rvcj47Ci0gICAgc3RhdGljIEpTVGVz
dE5hbWVkQ29uc3RydWN0b3IqIGNyZWF0ZShKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RP
TUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdE5hbWVkQ29uc3RydWN0b3I+JiYg
aW1wbCkKLSAgICB7Ci0gICAgICAgIEpTVGVzdE5hbWVkQ29uc3RydWN0b3IqIHB0ciA9IG5ldyAo
Tm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0TmFtZWRDb25zdHJ1Y3Rvcj4oZ2xvYmFs
T2JqZWN0LT52bSgpLmhlYXApKSBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yKHN0cnVjdHVyZSwgKmds
b2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7Ci0gICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24o
Z2xvYmFsT2JqZWN0LT52bSgpKTsKLSAgICAgICAgcmV0dXJuIHB0cjsKLSAgICB9Ci0KLSAgICBz
dGF0aWMgSlNDOjpKU09iamVjdCogY3JlYXRlUHJvdG90eXBlKEpTQzo6Vk0mLCBKU0RPTUdsb2Jh
bE9iamVjdCYpOwotICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBwcm90b3R5cGUoSlNDOjpWTSYs
IEpTRE9NR2xvYmFsT2JqZWN0Jik7Ci0gICAgc3RhdGljIFRlc3ROYW1lZENvbnN0cnVjdG9yKiB0
b1dyYXBwZWQoSlNDOjpWTSYsIEpTQzo6SlNWYWx1ZSk7Ci0gICAgc3RhdGljIHZvaWQgZGVzdHJv
eShKU0M6OkpTQ2VsbCopOwotCi0gICAgREVDTEFSRV9JTkZPOwotCi0gICAgc3RhdGljIEpTQzo6
U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKLSAgICB7Ci0gICAgICAg
IHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlw
ZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygp
LCBKU0M6Ok5vbkFycmF5KTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENv
bnN0cnVjdG9yKEpTQzo6Vk0mLCBjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7Ci0gICAgc3Rh
dGljIEpTQzo6SlNWYWx1ZSBnZXROYW1lZENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBKU0M6OkpTR2xv
YmFsT2JqZWN0Kik7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUsIEpTQzo6U3Vic3BhY2VBY2Nlc3Mg
bW9kZT4gc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQot
ICAgIHsKLSAgICAgICAgaWYgY29uc3RleHByIChtb2RlID09IEpTQzo6U3Vic3BhY2VBY2Nlc3M6
OkNvbmN1cnJlbnRseSkKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICByZXR1
cm4gc3Vic3BhY2VGb3JJbXBsKHZtKTsKLSAgICB9Ci0gICAgc3RhdGljIEpTQzo6SXNvU3Vic3Bh
Y2UqIHN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSk7Ci0gICAgc3RhdGljIHZvaWQgYW5hbHl6
ZUhlYXAoSlNDZWxsKiwgSlNDOjpIZWFwQW5hbHl6ZXImKTsKLXByb3RlY3RlZDoKLSAgICBKU1Rl
c3ROYW1lZENvbnN0cnVjdG9yKEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3QmLCBS
ZWY8VGVzdE5hbWVkQ29uc3RydWN0b3I+JiYpOwotCi0gICAgdm9pZCBmaW5pc2hDcmVhdGlvbihK
U0M6OlZNJik7Ci19OwotCi1jbGFzcyBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yT3duZXIgOiBwdWJs
aWMgSlNDOjpXZWFrSGFuZGxlT3duZXIgewotcHVibGljOgotICAgIHZpcnR1YWwgYm9vbCBpc1Jl
YWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+LCB2b2lkKiBj
b250ZXh0LCBKU0M6OlNsb3RWaXNpdG9yJiwgY29uc3QgY2hhcioqKTsKLSAgICB2aXJ0dWFsIHZv
aWQgZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiwgdm9pZCogY29udGV4dCk7Ci19
OwotCi1pbmxpbmUgSlNDOjpXZWFrSGFuZGxlT3duZXIqIHdyYXBwZXJPd25lcihET01XcmFwcGVy
V29ybGQmLCBUZXN0TmFtZWRDb25zdHJ1Y3RvciopCi17Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPEpTVGVzdE5hbWVkQ29uc3RydWN0b3JPd25lcj4gb3duZXI7Ci0gICAgcmV0dXJuICZvd25l
ci5nZXQoKTsKLX0KLQotaW5saW5lIHZvaWQqIHdyYXBwZXJLZXkoVGVzdE5hbWVkQ29uc3RydWN0
b3IqIHdyYXBwYWJsZU9iamVjdCkKLXsKLSAgICByZXR1cm4gd3JhcHBhYmxlT2JqZWN0OwotfQot
Ci1KU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNET01HbG9iYWxPYmpl
Y3QqLCBUZXN0TmFtZWRDb25zdHJ1Y3RvciYpOwotaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTKEpT
Qzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTRE9NR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFRlc3ROYW1lZENvbnN0cnVjdG9yKiBpbXBsKSB7IHJldHVybiBpbXBs
ID8gdG9KUyhsZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QsICppbXBsKSA6IEpTQzo6
anNOdWxsKCk7IH0KLUpTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6SlNHbG9iYWxP
YmplY3QqLCBKU0RPTUdsb2JhbE9iamVjdCosIFJlZjxUZXN0TmFtZWRDb25zdHJ1Y3Rvcj4mJik7
Ci1pbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
UmVmUHRyPFRlc3ROYW1lZENvbnN0cnVjdG9yPiYmIGltcGwpIHsgcmV0dXJuIGltcGwgPyB0b0pT
TmV3bHlDcmVhdGVkKGxleGljYWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgaW1wbC5yZWxl
YXNlTm9uTnVsbCgpKSA6IEpTQzo6anNOdWxsKCk7IH0KLQotdGVtcGxhdGU8PiBzdHJ1Y3QgSlNE
T01XcmFwcGVyQ29udmVydGVyVHJhaXRzPFRlc3ROYW1lZENvbnN0cnVjdG9yPiB7Ci0gICAgdXNp
bmcgV3JhcHBlckNsYXNzID0gSlNUZXN0TmFtZWRDb25zdHJ1Y3RvcjsKLSAgICB1c2luZyBUb1dy
YXBwZWRSZXR1cm5UeXBlID0gVGVzdE5hbWVkQ29uc3RydWN0b3IqOwotfTsKLQotfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuaApfX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRl
bGV0ZWQ6IHN2bjplb2wtc3R5bGUKIyMgLTEgKzAsMCAjIwotTEYKXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBwcm9wZXJ0eQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1RvdWNoRXZlbnQuaWRsCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Ub3VjaEV2ZW50LmlkbAkocmV2aXNpb24g
MjY2NjIwKQorKysgU291cmNlL1dlYkNvcmUvZG9tL1RvdWNoRXZlbnQuaWRsCSh3b3JraW5nIGNv
cHkpCkBAIC0yNCw5ICsyNCwxMCBAQAogICovCiAKIFsKLSAgICBDb25kaXRpb25hbD1UT1VDSF9F
VkVOVFMsCi0gICAgQ29uc3RydWN0b3IoRE9NU3RyaW5nIHR5cGUsIG9wdGlvbmFsIFRvdWNoRXZl
bnRJbml0IGV2ZW50SW5pdERpY3QpLAorICAgIENvbmRpdGlvbmFsPVRPVUNIX0VWRU5UUwogXSBp
bnRlcmZhY2UgVG91Y2hFdmVudCA6IFVJRXZlbnQgeworICAgIGNvbnN0cnVjdG9yKERPTVN0cmlu
ZyB0eXBlLCBvcHRpb25hbCBUb3VjaEV2ZW50SW5pdCBldmVudEluaXREaWN0KTsKKwogICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBUb3VjaExpc3QgdG91Y2hlczsKICAgICByZWFkb25seSBhdHRyaWJ1
dGUgVG91Y2hMaXN0IHRhcmdldFRvdWNoZXM7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFRvdWNo
TGlzdCBjaGFuZ2VkVG91Y2hlczsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF1ZGlv
RWxlbWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXVkaW9F
bGVtZW50LmlkbAkocmV2aXNpb24gMjY2NjIwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
QXVkaW9FbGVtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQAogCiBbCiAg
ICAgQ29uZGl0aW9uYWw9VklERU8sCi0gICAgQ29uc3RydWN0b3JDYWxsV2l0aD1Eb2N1bWVudCwK
LSAgICBOYW1lZENvbnN0cnVjdG9yPUF1ZGlvKG9wdGlvbmFsIFtBdG9tU3RyaW5nXSBET01TdHJp
bmcgc3JjKQorICAgIExlZ2FjeUZhY3RvcnlGdW5jdGlvbkNhbGxXaXRoPURvY3VtZW50LAorICAg
IExlZ2FjeUZhY3RvcnlGdW5jdGlvbj1BdWRpbyhvcHRpb25hbCBbQXRvbVN0cmluZ10gRE9NU3Ry
aW5nIHNyYykKIF0gaW50ZXJmYWNlIEhUTUxBdWRpb0VsZW1lbnQgOiBIVE1MTWVkaWFFbGVtZW50
IHsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaWRsCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5pZGwJKHJl
dmlzaW9uIDI2NjYyMCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5p
ZGwJKHdvcmtpbmcgY29weSkKQEAgLTIxLDggKzIxLDggQEAKIFsKICAgICBFeHBvcnRNYWNybz1X
RUJDT1JFX0VYUE9SVCwKICAgICBKU0dlbmVyYXRlVG9OYXRpdmVPYmplY3QsCi0gICAgQ29uc3Ry
dWN0b3JDYWxsV2l0aD1Eb2N1bWVudCwKLSAgICBOYW1lZENvbnN0cnVjdG9yPUltYWdlKG9wdGlv
bmFsIHVuc2lnbmVkIGxvbmcgd2lkdGgsIG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgaGVpZ2h0KQor
ICAgIExlZ2FjeUZhY3RvcnlGdW5jdGlvbkNhbGxXaXRoPURvY3VtZW50LAorICAgIExlZ2FjeUZh
Y3RvcnlGdW5jdGlvbj1JbWFnZShvcHRpb25hbCB1bnNpZ25lZCBsb25nIHdpZHRoLCBvcHRpb25h
bCB1bnNpZ25lZCBsb25nIGhlaWdodCkKIF0gaW50ZXJmYWNlIEhUTUxJbWFnZUVsZW1lbnQgOiBI
VE1MRWxlbWVudCB7CiAgICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwgUmVmbGVjdF0gYXR0cmli
dXRlIERPTVN0cmluZyBuYW1lOwogICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQsIFJlZmxlY3Rd
IGF0dHJpYnV0ZSBET01TdHJpbmcgYWxpZ247CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxPcHRpb25FbGVtZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxPcHRpb25FbGVtZW50LmlkbAkocmV2aXNpb24gMjY2NjIwKQorKysgU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MT3B0aW9uRWxlbWVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTIwLDkgKzIwLDkg
QEAKIAogWwogICAgIEpTR2VuZXJhdGVUb05hdGl2ZU9iamVjdCwKLSAgICBDb25zdHJ1Y3Rvck1h
eVRocm93RXhjZXB0aW9uLAotICAgIENvbnN0cnVjdG9yQ2FsbFdpdGg9RG9jdW1lbnQsCi0gICAg
TmFtZWRDb25zdHJ1Y3Rvcj1PcHRpb24ob3B0aW9uYWwgRE9NU3RyaW5nIHRleHQgPSAiIiwgb3B0
aW9uYWwgRE9NU3RyaW5nIHZhbHVlLCBvcHRpb25hbCBib29sZWFuIGRlZmF1bHRTZWxlY3RlZCA9
IGZhbHNlLCBvcHRpb25hbCBib29sZWFuIHNlbGVjdGVkID0gZmFsc2UpLAorICAgIExlZ2FjeUZh
Y3RvcnlGdW5jdGlvbk1heVRocm93RXhjZXB0aW9uLAorICAgIExlZ2FjeUZhY3RvcnlGdW5jdGlv
bkNhbGxXaXRoPURvY3VtZW50LAorICAgIExlZ2FjeUZhY3RvcnlGdW5jdGlvbj1PcHRpb24ob3B0
aW9uYWwgRE9NU3RyaW5nIHRleHQgPSAiIiwgb3B0aW9uYWwgRE9NU3RyaW5nIHZhbHVlLCBvcHRp
b25hbCBib29sZWFuIGRlZmF1bHRTZWxlY3RlZCA9IGZhbHNlLCBvcHRpb25hbCBib29sZWFuIHNl
bGVjdGVkID0gZmFsc2UpLAogXSBpbnRlcmZhY2UgSFRNTE9wdGlvbkVsZW1lbnQgOiBIVE1MRWxl
bWVudCB7CiAgICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwgUmVmbGVjdF0gYXR0cmlidXRlIGJv
b2xlYW4gZGlzYWJsZWQ7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEhUTUxGb3JtRWxlbWVudCBm
b3JtOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuaWRsCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmlkbAko
cmV2aXNpb24gMjY2NjIwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tD
dWUuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw3IEBACiAgICAgQ3VzdG9tVG9KU09i
amVjdCwKICAgICBKU0N1c3RvbU1hcmtGdW5jdGlvbiwKICAgICBTa2lwVlRhYmxlVmFsaWRhdGlv
biwKLSAgICBDb25zdHJ1Y3RvckVuYWJsZWRCeVNldHRpbmc9R2VuZXJpY0N1ZUFQSQorICAgIExl
Z2FjeUZhY3RvcnlGdW5jdGlvbkVuYWJsZWRCeVNldHRpbmc9R2VuZXJpY0N1ZUFQSQogXSBpbnRl
cmZhY2UgVGV4dFRyYWNrQ3VlIDogRXZlbnRUYXJnZXQgewogICAgIFtDYWxsV2l0aD1Eb2N1bWVu
dCwgTWF5VGhyb3dFeGNlcHRpb25dIGNvbnN0cnVjdG9yKGRvdWJsZSBzdGFydFRpbWUsIGRvdWJs
ZSBlbmRUaW1lLCBEb2N1bWVudEZyYWdtZW50IGN1ZU5vZGUpOwogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>