<?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>216732</bug_id>
          
          <creation_ts>2020-09-19 11:46:08 -0700</creation_ts>
          <short_desc>Performance.navigation and Performance.timing are incorrectly exposed to workers</short_desc>
          <delta_ts>2020-09-21 12:07:50 -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>cdumez</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1690101</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-09-19 11:46:08 -0700</bug_when>
    <thetext>Performance.navigation and Performance.timing are incorrectly exposed to workers</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1690102</commentid>
    <comment_count>1</comment_count>
      <attachid>409207</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-09-19 11:47:45 -0700</bug_when>
    <thetext>Created attachment 409207
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1690108</commentid>
    <comment_count>2</comment_count>
      <attachid>409208</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-09-19 12:36:18 -0700</bug_when>
    <thetext>Created attachment 409208
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1690109</commentid>
    <comment_count>3</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-09-19 12:37:17 -0700</bug_when>
    <thetext>NOTE TO REVIEWERS: this patch also contains the changes for https://bugs.webkit.org/show_bug.cgi?id=216731, but I intend to land them separately.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1690110</commentid>
    <comment_count>4</comment_count>
      <attachid>409209</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-09-19 12:38:46 -0700</bug_when>
    <thetext>Created attachment 409209
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1690231</commentid>
    <comment_count>5</comment_count>
      <attachid>409252</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-09-20 15:28:55 -0700</bug_when>
    <thetext>Created attachment 409252
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1690232</commentid>
    <comment_count>6</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-09-20 15:29:25 -0700</bug_when>
    <thetext>Ok, this should be good to review now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1690235</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-09-20 16:07:56 -0700</bug_when>
    <thetext>Committed r267333: &lt;https://trac.webkit.org/changeset/267333&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 409252.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1690402</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-09-21 12:07:50 -0700</bug_when>
    <thetext>&lt;rdar://problem/69318718&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>409207</attachid>
            <date>2020-09-19 11:47:45 -0700</date>
            <delta_ts>2020-09-19 12:36:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216732-20200919114744.patch</filename>
            <type>text/plain</type>
            <size>49969</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2NzMxOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDIwLTA5LTE5ICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBQZXJmb3JtYW5jZS5uYXZpZ2F0aW9u
IGFuZCBQZXJmb3JtYW5jZS50aW1pbmcgYXJlIGluY29ycmVjdGx5IGV4cG9zZWQgdG8gd29ya2Vy
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE2NzMy
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW1dJUF0K
KworICAgICAgICAqIHBhZ2UvUGVyZm9ybWFuY2UuaWRsOgorCiAyMDIwLTA5LTE5ICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KIAogICAgICAgICBQZXJmb3JtYW5jZSBhbmQgUGVyZm9y
bWFuY2VOYXZpZ2F0aW9uIGludGVyZmFjZXMgYXJlIG1pc3NpbmcgdG9KU09OIG9wZXJhdGlvbnMK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBt
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvckpTLnBtCShyZXZpc2lvbiAyNjczMTkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkod29ya2luZyBjb3B5KQpAQCAtMzk3MCw3ICszOTcw
LDcgQEAgc3ViIFRvTWV0aG9kTmFtZQogCiBzdWIgR2VuZXJhdGVSdW50aW1lRW5hYmxlQ29uZGl0
aW9uYWxTdHJpbmdGb3JFeHBvc2VkCiB7Ci0gICAgbXkgKCRpbnRlcmZhY2UsICRjb250ZXh0LCAk
Y29uanVuY3RzLCAkZ2xvYmFsT2JqZWN0SXNQYXJhbSkgPSBAXzsKKyAgICBteSAoJGludGVyZmFj
ZSwgJGNvbnRleHQsICRnbG9iYWxPYmplY3RQdHIsICRjb25qdW5jdHMpID0gQF87CiAKICAgICBh
c3NlcnQoIk11c3Qgc3BlY2lmeSB2YWx1ZSBmb3IgRXhwb3NlZC4iKSBpZiAkY29udGV4dC0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57RXhwb3NlZH0gZXEgIlZBTFVFX0lTX01JU1NJTkciOwogCkBAIC0z
OTg0LDggKzM5ODQsNiBAQCBzdWIgR2VuZXJhdGVSdW50aW1lRW5hYmxlQ29uZGl0aW9uYWxTdHJp
CiAgICAgICAgICRleHBvc2VkID0gQCRleHBvc2VkWzBdOwogICAgIH0KIAotICAgIG15ICRnbG9i
YWxPYmplY3RQdHIgPSAkZ2xvYmFsT2JqZWN0SXNQYXJhbSA/ICImZ2xvYmFsT2JqZWN0IiA6ICJn
bG9iYWxPYmplY3QoKSI7Ci0KICAgICBpZiAoJGV4cG9zZWQgZXEgIldpbmRvdyIpIHsKICAgICAg
ICAgcHVzaChAJGNvbmp1bmN0cywgImpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KCIgLiAkZ2xv
YmFsT2JqZWN0UHRyIC4gIiktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNEb2N1bWVudCgp
Iik7CiAgICAgfSBlbHNpZiAoJGV4cG9zZWQgZXEgIldvcmtlciIpIHsKQEAgLTQwMDQsMTEgKzQw
MDIsOSBAQCBzdWIgR2VuZXJhdGVSdW50aW1lRW5hYmxlQ29uZGl0aW9uYWxTdHJpCiAjIChlLmcu
IElETEludGVyZmFjZSwgSURMQXR0cmlidXRlLCBJRExPcGVyYXRpb24sIElETEl0ZXJhYmxlLCBl
dGMuKQogc3ViIEdlbmVyYXRlUnVudGltZUVuYWJsZUNvbmRpdGlvbmFsU3RyaW5nCiB7Ci0gICAg
bXkgKCRpbnRlcmZhY2UsICRjb250ZXh0LCAkZ2xvYmFsT2JqZWN0SXNQYXJhbSkgPSBAXzsKKyAg
ICBteSAoJGludGVyZmFjZSwgJGNvbnRleHQsICRnbG9iYWxPYmplY3RQdHIpID0gQF87CiAKICAg
ICBteSBAY29uanVuY3RzOwotICAgIG15ICRnbG9iYWxPYmplY3RQdHIgPSAkZ2xvYmFsT2JqZWN0
SXNQYXJhbSA/ICRnbG9iYWxPYmplY3RJc1BhcmFtIDogImdsb2JhbE9iamVjdCgpIjsKLSAgICAK
ICAgICBpZiAoJGNvbnRleHQtPmV4dGVuZGVkQXR0cmlidXRlcy0+e1NlY3VyZUNvbnRleHR9KSB7
CiAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiKTsK
IApAQCAtNDAyMSw3ICs0MDE3LDcgQEAgc3ViIEdlbmVyYXRlUnVudGltZUVuYWJsZUNvbmRpdGlv
bmFsU3RyaQogICAgIH0KIAogICAgIGlmICgkY29udGV4dC0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
RXhwb3NlZH0pIHsKLSAgICAgICAgR2VuZXJhdGVSdW50aW1lRW5hYmxlQ29uZGl0aW9uYWxTdHJp
bmdGb3JFeHBvc2VkKCRpbnRlcmZhY2UsICRjb250ZXh0LCBcQGNvbmp1bmN0cyk7CisgICAgICAg
IEdlbmVyYXRlUnVudGltZUVuYWJsZUNvbmRpdGlvbmFsU3RyaW5nRm9yRXhwb3NlZCgkaW50ZXJm
YWNlLCAkY29udGV4dCwgJGdsb2JhbE9iamVjdFB0ciwgXEBjb25qdW5jdHMpOwogICAgIH0KIAog
ICAgIGlmICgkY29udGV4dC0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RW5hYmxlZEZvcldvcmxkfSkg
ewpAQCAtNDU2MCw3ICs0NTU2LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAg
ICAgZm9yZWFjaCBteSAkb3BlcmF0aW9uT3JBdHRyaWJ1dGUgKEBydW50aW1lRW5hYmxlZFByb3Bl
cnRpZXMpIHsKICAgICAgICAgICAgIG15ICRjb25kaXRpb25hbFN0cmluZyA9ICRjb2RlR2VuZXJh
dG9yLT5HZW5lcmF0ZUNvbmRpdGlvbmFsU3RyaW5nKCRvcGVyYXRpb25PckF0dHJpYnV0ZSk7CiAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiNpZiAke2NvbmRpdGlvbmFsU3RyaW5nfVxu
IikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwotICAgICAgICAgICAgbXkgJHJ1bnRpbWVFbmFibGVD
b25kaXRpb25hbFN0cmluZyA9IEdlbmVyYXRlUnVudGltZUVuYWJsZUNvbmRpdGlvbmFsU3RyaW5n
KCRpbnRlcmZhY2UsICRvcGVyYXRpb25PckF0dHJpYnV0ZSk7CisgICAgICAgICAgICBteSAkcnVu
dGltZUVuYWJsZUNvbmRpdGlvbmFsU3RyaW5nID0gR2VuZXJhdGVSdW50aW1lRW5hYmxlQ29uZGl0
aW9uYWxTdHJpbmcoJGludGVyZmFjZSwgJG9wZXJhdGlvbk9yQXR0cmlidXRlLCAiZ2xvYmFsT2Jq
ZWN0KCkiKTsKICAgICAgICAgICAgIG15ICRuYW1lID0gJG9wZXJhdGlvbk9yQXR0cmlidXRlLT5u
YW1lOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKCEke3J1bnRpbWVF
bmFibGVDb25kaXRpb25hbFN0cmluZ30pIHtcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgICAgIGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlO1xuIik7
CkBAIC00NTc1LDcgKzQ1NzEsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAg
ICBmb3JlYWNoIG15ICRhdHRyaWJ1dGUgKEBydW50aW1lRW5hYmxlZEF0dHJpYnV0ZXMpIHsKICAg
ICAgICAgICAgIGlmIChOZWVkc1J1bnRpbWVSZWFkV3JpdGVDaGVjaygkaW50ZXJmYWNlLCAkYXR0
cmlidXRlKSkgewogICAgICAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJXZWJDb3JlSlND
bGllbnREYXRhLmgiKTsKLSAgICAgICAgICAgICAgICBteSAkcnVudGltZUVuYWJsZUNvbmRpdGlv
bmFsU3RyaW5nID0gR2VuZXJhdGVSdW50aW1lRW5hYmxlQ29uZGl0aW9uYWxTdHJpbmcoJGludGVy
ZmFjZSwgJGF0dHJpYnV0ZSk7CisgICAgICAgICAgICAgICAgbXkgJHJ1bnRpbWVFbmFibGVDb25k
aXRpb25hbFN0cmluZyA9IEdlbmVyYXRlUnVudGltZUVuYWJsZUNvbmRpdGlvbmFsU3RyaW5nKCRp
bnRlcmZhY2UsICRhdHRyaWJ1dGUsICJnbG9iYWxPYmplY3QoKSIpOwogCiAgICAgICAgICAgICAg
ICAgbXkgJGF0dHJpYnV0ZU5hbWUgPSAkYXR0cmlidXRlLT5uYW1lOwogICAgICAgICAgICAgICAg
IG15ICRnZXR0ZXIgPSBHZXRBdHRyaWJ1dGVHZXR0ZXJOYW1lKCRpbnRlcmZhY2UsICRjbGFzc05h
bWUsICRhdHRyaWJ1dGUpOwpAQCAtNDcwOCw3ICs0NzA0LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVt
ZW50YXRpb24KICAgICAgICAgbmV4dCB1bmxlc3MgQXR0cmlidXRlU2hvdWxkQmVPbkluc3RhbmNl
KCRpbnRlcmZhY2UsICRhdHRyaWJ1dGUpOwogCiAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJX
ZWJDb3JlSlNDbGllbnREYXRhLmgiKTsKLSAgICAgICAgbXkgJHJ1bnRpbWVFbmFibGVDb25kaXRp
b25hbFN0cmluZyA9IEdlbmVyYXRlUnVudGltZUVuYWJsZUNvbmRpdGlvbmFsU3RyaW5nKCRpbnRl
cmZhY2UsICRhdHRyaWJ1dGUpOworICAgICAgICBteSAkcnVudGltZUVuYWJsZUNvbmRpdGlvbmFs
U3RyaW5nID0gR2VuZXJhdGVSdW50aW1lRW5hYmxlQ29uZGl0aW9uYWxTdHJpbmcoJGludGVyZmFj
ZSwgJGF0dHJpYnV0ZSwgImdsb2JhbE9iamVjdCgpIik7CiAgICAgICAgIG15ICRhdHRyaWJ1dGVO
YW1lID0gJGF0dHJpYnV0ZS0+bmFtZTsKICAgICAgICAgbXkgJGdldHRlciA9IEdldEF0dHJpYnV0
ZUdldHRlck5hbWUoJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJGF0dHJpYnV0ZSk7CiAgICAgICAg
IG15ICRzZXR0ZXIgPSBJc1JlYWRvbmx5KCRhdHRyaWJ1dGUpID8gIm51bGxwdHIiIDogR2V0QXR0
cmlidXRlU2V0dGVyTmFtZSgkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkYXR0cmlidXRlKTsKQEAg
LTQ3NDUsNyArNDc0MSw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgIG5l
eHQgaWYgJG9wZXJhdGlvbi0+e292ZXJsb2FkSW5kZXh9ICYmICRvcGVyYXRpb24tPntvdmVybG9h
ZEluZGV4fSA+IDE7CiAKICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIldlYkNvcmVKU0NsaWVu
dERhdGEuaCIpOwotICAgICAgICBteSAkcnVudGltZUVuYWJsZUNvbmRpdGlvbmFsU3RyaW5nID0g
R2VuZXJhdGVSdW50aW1lRW5hYmxlQ29uZGl0aW9uYWxTdHJpbmcoJGludGVyZmFjZSwgJG9wZXJh
dGlvbik7CisgICAgICAgIG15ICRydW50aW1lRW5hYmxlQ29uZGl0aW9uYWxTdHJpbmcgPSBHZW5l
cmF0ZVJ1bnRpbWVFbmFibGVDb25kaXRpb25hbFN0cmluZygkaW50ZXJmYWNlLCAkb3BlcmF0aW9u
LCAiZ2xvYmFsT2JqZWN0KCkiKTsKICAgICAgICAgbXkgJGZ1bmN0aW9uTmFtZSA9ICRvcGVyYXRp
b24tPm5hbWU7CiAgICAgICAgIG15ICRpbXBsZW1lbnRhdGlvbkZ1bmN0aW9uID0gR2V0RnVuY3Rp
b25OYW1lKCRpbnRlcmZhY2UsICRjbGFzc05hbWUsICRvcGVyYXRpb24pOwogICAgICAgICBteSAk
ZnVuY3Rpb25MZW5ndGggPSBHZXRGdW5jdGlvbkxlbmd0aCgkb3BlcmF0aW9uKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9ET01XaW5kb3dDb25zdHJ1Y3RvcnMu
aWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9E
T01XaW5kb3dDb25zdHJ1Y3RvcnMuaWRsCShyZXZpc2lvbiAyNjczMTkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvRE9NV2luZG93Q29uc3RydWN0b3JzLmlkbAkod29y
a2luZyBjb3B5KQpAQCAtMSw2ICsxLDcgQEAKIHBhcnRpYWwgaW50ZXJmYWNlIERPTVdpbmRvdyB7
CiAgICAgYXR0cmlidXRlIEV4cG9zZWRUb1dvcmtlckFuZFdpbmRvd0NvbnN0cnVjdG9yIEV4cG9z
ZWRUb1dvcmtlckFuZFdpbmRvdzsKICAgICBhdHRyaWJ1dGUgVGVzdENvbmRpdGlvbmFsbHlSZWFk
V3JpdGVDb25zdHJ1Y3RvciBUZXN0Q29uZGl0aW9uYWxseVJlYWRXcml0ZTsKKyAgICBhdHRyaWJ1
dGUgVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZENvbnN0cnVjdG9yIFRlc3REZWZh
dWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQ7CiAgICAgYXR0cmlidXRlIFRlc3ROb2RlQ29uc3Ry
dWN0b3IgVGVzdE5vZGU7CiAgICAgYXR0cmlidXRlIFRlc3RPYmpDb25zdHJ1Y3RvciBUZXN0T2Jq
ZWN0OwogICAgIGF0dHJpYnV0ZSBUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Q29uc3RydWN0b3Ig
VGVzdFByb21pc2VSZWplY3Rpb25FdmVudDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9TdXBwbGVtZW50YWxEZXBlbmRlbmNpZXMuZGVwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9TdXBwbGVtZW50YWxEZXBlbmRl
bmNpZXMuZGVwCShyZXZpc2lvbiAyNjczMTkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvU3VwcGxlbWVudGFsRGVwZW5kZW5jaWVzLmRlcAkod29ya2luZyBjb3B5KQpA
QCAtNjEsNiArNjEsOSBAQCBXZWJET01UZXN0RGVmYXVsdFRvSlNPTi5oOiAKIEpTVGVzdERlZmF1
bHRUb0pTT05FbnVtLmg6IAogRE9NVGVzdERlZmF1bHRUb0pTT05FbnVtLmg6IAogV2ViRE9NVGVz
dERlZmF1bHRUb0pTT05FbnVtLmg6IAorSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBv
c2VkLmg6IAorRE9NVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZC5oOiAKK1dlYkRP
TVRlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQuaDogCiBKU1Rlc3REZWZhdWx0VG9K
U09OSW5kaXJlY3RJbmhlcml0YW5jZS5oOiAKIERPTVRlc3REZWZhdWx0VG9KU09OSW5kaXJlY3RJ
bmhlcml0YW5jZS5oOiAKIFdlYkRPTVRlc3REZWZhdWx0VG9KU09OSW5kaXJlY3RJbmhlcml0YW5j
ZS5oOiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0RGVm
YXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhw
b3NlZC5pZGwJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQuaWRsCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitbCisgICAgRXhwb3NlZD0oV2luZG93
LFdvcmtlcikKK10gaW50ZXJmYWNlIFRlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQg
eworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBsb25nIG5vcm1hbEF0dHJpYnV0ZTsKKyAgICBbRXhw
b3NlZD1XaW5kb3ddIHJlYWRvbmx5IGF0dHJpYnV0ZSBkb3VibGUgZmlsdGVyZWRCeUV4cG9zZWRX
aW5kb3dBdHRyaWJ1dGU7CisgICAgW0V4cG9zZWQ9V29ya2VyXSByZWFkb25seSBhdHRyaWJ1dGUg
RE9NU3RyaW5nIGZpbHRlcmVkQnlFeHBvc2VkV29ya2VyQXR0cmlidXRlOworCisgICAgW0RlZmF1
bHRdIG9iamVjdCB0b0pTT04oKTsKK307CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnMuaWRsCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9Xb3JrZXJHbG9iYWxTY29w
ZUNvbnN0cnVjdG9ycy5pZGwJKHJldmlzaW9uIDI2NzMxOSkKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9Xb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9ycy5pZGwJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiBwYXJ0aWFsIGludGVyZmFjZSBXb3JrZXJHbG9i
YWxTY29wZSB7CiAgICAgYXR0cmlidXRlIEV4cG9zZWRUb1dvcmtlckFuZFdpbmRvd0NvbnN0cnVj
dG9yIEV4cG9zZWRUb1dvcmtlckFuZFdpbmRvdzsKKyAgICBhdHRyaWJ1dGUgVGVzdERlZmF1bHRU
b0pTT05GaWx0ZXJlZEJ5RXhwb3NlZENvbnN0cnVjdG9yIFRlc3REZWZhdWx0VG9KU09ORmlsdGVy
ZWRCeUV4cG9zZWQ7CiAgICAgYXR0cmlidXRlIFRlc3ROb2RlQ29uc3RydWN0b3IgVGVzdE5vZGU7
CiAgICAgYXR0cmlidXRlIFRlc3RPYmpDb25zdHJ1Y3RvciBUZXN0T2JqZWN0OwogICAgIGF0dHJp
YnV0ZSBUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Q29uc3RydWN0b3IgVGVzdFByb21pc2VSZWpl
Y3Rpb25FdmVudDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU0RPTVdpbmRvdy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTRE9NV2luZG93LmNwcAkocmV2aXNpb24gMjY3MzE5KQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRE9NV2luZG93LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hl
LmgiCiAjaW5jbHVkZSAiSlNFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3cuaCIKICNpbmNsdWRlICJK
U1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlLmgiCisjaW5jbHVkZSAiSlNUZXN0RGVmYXVsdFRv
SlNPTkZpbHRlcmVkQnlFeHBvc2VkLmgiCiAjaW5jbHVkZSAiSlNUZXN0Tm9kZS5oIgogI2luY2x1
ZGUgIkpTVGVzdE9iai5oIgogI2luY2x1ZGUgIkpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudC5o
IgpAQCAtNTYsNiArNTcsOCBAQCBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzRE9NV2luZG93RXhwb3Nl
ZFRvCiBib29sIHNldEpTRE9NV2luZG93RXhwb3NlZFRvV29ya2VyQW5kV2luZG93Q29uc3RydWN0
b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc0RPTVdpbmRvd1Rlc3RDb25kaXRpb25h
bGx5UmVhZFdyaXRlQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKIGJvb2wgc2V0SlNET01XaW5kb3dUZXN0Q29u
ZGl0aW9uYWxseVJlYWRXcml0ZUNvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6
OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKK0pTQzo6RW5jb2RlZEpTVmFs
dWUganNET01XaW5kb3dUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkQ29uc3RydWN0
b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVy
dHlOYW1lKTsKK2Jvb2wgc2V0SlNET01XaW5kb3dUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlF
eHBvc2VkQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFs
dWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc0RPTVdpbmRv
d1Rlc3ROb2RlQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpT
VmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKIGJvb2wgc2V0SlNET01XaW5kb3dUZXN0Tm9kZUNv
bnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6
OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNET01XaW5kb3dUZXN0T2Jq
ZWN0Q29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUs
IEpTQzo6UHJvcGVydHlOYW1lKTsKQEAgLTY3LDcgKzcwLDcgQEAgdXNpbmcgSlNET01XaW5kb3dD
b25zdHJ1Y3RvciA9IEpTRE9NQ29ucwogCiAvKiBIYXNoIHRhYmxlICovCiAKLXN0YXRpYyBjb25z
dCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU0RPTVdpbmRvd1RhYmxlSW5kZXhbMThdID0gewor
c3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTRE9NV2luZG93VGFibGVJbmRl
eFsxOV0gPSB7CiAgICAgeyAtMSwgLTEgfSwKICAgICB7IDAsIDE2IH0sCiAgICAgeyAtMSwgLTEg
fSwKQEAgLTc3LDE1ICs4MCwxNiBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5k
ZXggSlNECiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0s
Ci0gICAgeyAzLCAtMSB9LAorICAgIHsgNCwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsg
LTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgNCwgLTEg
fSwKKyAgICB7IDUsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IDEsIDE3IH0sCi0gICAg
eyAyLCAtMSB9LAorICAgIHsgMiwgMTggfSwKKyAgICB7IDMsIC0xIH0sCiB9OwogCiAKQEAgLTkz
LDEyICs5NywxMyBAQCBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNET01XaW5kb3dUCiB7
CiAgICAgeyAiRXhwb3NlZFRvV29ya2VyQW5kV2luZG93Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0
cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0RPTVdpbmRvd0V4
cG9zZWRUb1dvcmtlckFuZFdpbmRvd0NvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2Fz
dDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNET01XaW5kb3dFeHBvc2VkVG9X
b3JrZXJBbmRXaW5kb3dDb25zdHJ1Y3RvcikgfSB9LAogICAgIHsgIlRlc3RDb25kaXRpb25hbGx5
UmVhZFdyaXRlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jPihqc0RPTVdpbmRvd1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRl
Q29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0
VmFsdWVGdW5jPihzZXRKU0RPTVdpbmRvd1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlQ29uc3Ry
dWN0b3IpIH0gfSwKKyAgICB7ICJUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkIiwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFs
dWVGdW5jPihqc0RPTVdpbmRvd1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWRDb25z
dHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1
ZUZ1bmM+KHNldEpTRE9NV2luZG93VGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZENv
bnN0cnVjdG9yKSB9IH0sCiAgICAgeyAiVGVzdE5vZGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzRE9NV2luZG93VGVz
dE5vZGVDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90
OjpQdXRWYWx1ZUZ1bmM+KHNldEpTRE9NV2luZG93VGVzdE5vZGVDb25zdHJ1Y3RvcikgfSB9LAog
ICAgIHsgIlRlc3RPYmplY3QiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzRE9NV2luZG93VGVzdE9iamVjdENvbnN0cnVj
dG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVu
Yz4oc2V0SlNET01XaW5kb3dUZXN0T2JqZWN0Q29uc3RydWN0b3IpIH0gfSwKICAgICB7ICJUZXN0
UHJvbWlzZVJlamVjdGlvbkV2ZW50Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc0RPTVdpbmRvd1Rlc3RQcm9taXNlUmVq
ZWN0aW9uRXZlbnRDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVy
dHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTRE9NV2luZG93VGVzdFByb21pc2VSZWplY3Rpb25F
dmVudENvbnN0cnVjdG9yKSB9IH0sCiB9OwogCi1zdGF0aWMgY29uc3QgSGFzaFRhYmxlIEpTRE9N
V2luZG93VGFibGUgPSB7IDUsIDE1LCB0cnVlLCBKU0RPTVdpbmRvdzo6aW5mbygpLCBKU0RPTVdp
bmRvd1RhYmxlVmFsdWVzLCBKU0RPTVdpbmRvd1RhYmxlSW5kZXggfTsKK3N0YXRpYyBjb25zdCBI
YXNoVGFibGUgSlNET01XaW5kb3dUYWJsZSA9IHsgNiwgMTUsIHRydWUsIEpTRE9NV2luZG93Ojpp
bmZvKCksIEpTRE9NV2luZG93VGFibGVWYWx1ZXMsIEpTRE9NV2luZG93VGFibGVJbmRleCB9Owog
dGVtcGxhdGU8PiBKU1ZhbHVlIEpTRE9NV2luZG93Q29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0
cnVjdHVyZShKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVj
dCkKIHsKICAgICByZXR1cm4gSlNFdmVudFRhcmdldDo6Z2V0Q29uc3RydWN0b3Iodm0sICZnbG9i
YWxPYmplY3QpOwpAQCAtMjMwLDYgKzIzNSwyOSBAQCBib29sIHNldEpTRE9NV2luZG93VGVzdENv
bmRpdGlvbmFsbHlSZWFkCiAgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU0RPTVdpbmRvdz46OnNl
dDxzZXRKU0RPTVdpbmRvd1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlQ29uc3RydWN0b3JTZXR0
ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIlRlc3RD
b25kaXRpb25hbGx5UmVhZFdyaXRlIik7CiB9CiAKK3N0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc0RP
TVdpbmRvd1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWRDb25zdHJ1Y3RvckdldHRl
cihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNET01XaW5kb3cmIHRoaXNP
YmplY3QpCit7CisgICAgVU5VU0VEX1BBUkFNKGxleGljYWxHbG9iYWxPYmplY3QpOworICAgIHJl
dHVybiBKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQ6OmdldENvbnN0cnVjdG9y
KEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpLCAmdGhpc09iamVjdCk7Cit9CisKK0Vu
Y29kZWRKU1ZhbHVlIGpzRE9NV2luZG93VGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3Nl
ZENvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKK3sKKyAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTRE9NV2luZG93Pjo6Z2V0PGpzRE9NV2luZG93VGVzdERlZmF1bHRUb0pTT05GaWx0ZXJl
ZEJ5RXhwb3NlZENvbnN0cnVjdG9yR2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCAiVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZCIpOworfQorCitzdGF0aWMg
aW5saW5lIGJvb2wgc2V0SlNET01XaW5kb3dUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBv
c2VkQ29uc3RydWN0b3JTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTRE9NV2luZG93JiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQoreworICAgIGF1dG8mIHZt
ID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgLy8gU2hhZG93aW5nIGEg
YnVpbHQtaW4gY29uc3RydWN0b3IuCisgICAgcmV0dXJuIHRoaXNPYmplY3QucHV0RGlyZWN0KHZt
LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFy
Kj4oIlRlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQiKSwgc3RybGVuKCJUZXN0RGVm
YXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkIikpLCB2YWx1ZSk7Cit9CisKK2Jvb2wgc2V0SlNE
T01XaW5kb3dUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkQ29uc3RydWN0b3IoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQoreworICAgIHJldHVybiBJRExBdHRyaWJ1
dGU8SlNET01XaW5kb3c+OjpzZXQ8c2V0SlNET01XaW5kb3dUZXN0RGVmYXVsdFRvSlNPTkZpbHRl
cmVkQnlFeHBvc2VkQ29uc3RydWN0b3JTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsIGVuY29kZWRWYWx1ZSwgIlRlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQi
KTsKK30KKwogc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzRE9NV2luZG93VGVzdE5vZGVDb25zdHJ1
Y3RvckdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNET01XaW5k
b3cmIHRoaXNPYmplY3QpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGxleGljYWxHbG9iYWxPYmplY3Qp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERl
ZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJl
ZEJ5RXhwb3NlZC5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNjkgQEAKKy8qCisgICAgVGhpcyBmaWxlIGlzIHBh
cnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgorICAgIFRoaXMgZmlsZSBoYXMg
YmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCisK
KyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us
IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAg
ICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0
aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUg
dG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBT
dHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTVGVzdERlZmF1bHRUb0pTT05GaWx0
ZXJlZEJ5RXhwb3NlZC5oIgorCisjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVk
ZSAiRE9NSXNvU3Vic3BhY2VzLmgiCisjaW5jbHVkZSAiSlNET01BdHRyaWJ1dGUuaCIKKyNpbmNs
dWRlICJKU0RPTUJpbmRpbmcuaCIKKyNpbmNsdWRlICJKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3Ry
dWN0YWJsZS5oIgorI2luY2x1ZGUgIkpTRE9NQ29udmVydE51bWJlcnMuaCIKKyNpbmNsdWRlICJK
U0RPTUNvbnZlcnRTdHJpbmdzLmgiCisjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5o
IgorI2luY2x1ZGUgIkpTRE9NT3BlcmF0aW9uLmgiCisjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2Fj
aGUuaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAiV2Vi
Q29yZUpTQ2xpZW50RGF0YS5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bmN0aW9uUHJv
dG90eXBlLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcEFuYWx5emVyLmg+CisjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0SGVhcENlbGxUeXBlLmg+CisjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvT2JqZWN0Q29uc3RydWN0b3IuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9T
dWJzcGFjZUlubGluZXMuaD4KKyNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CisjaW5jbHVkZSA8d3Rm
L1BvaW50ZXJQcmVwYXJhdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CisKKworbmFtZXNw
YWNlIFdlYkNvcmUgewordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworLy8gRnVuY3Rpb25zCisKK0pT
Qzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3REZWZhdWx0VG9KU09ORmlsdGVy
ZWRCeUV4cG9zZWRQcm90b3R5cGVGdW5jdGlvblRvSlNPTihKU0M6OkpTR2xvYmFsT2JqZWN0Kiwg
SlNDOjpDYWxsRnJhbWUqKTsKKworLy8gQXR0cmlidXRlcworCitKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZENvbnN0cnVjdG9yKEpTQzo6SlNH
bG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Citi
b29sIHNldEpTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZENvbnN0cnVjdG9yKEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1Zh
bHVlKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlF
eHBvc2VkTm9ybWFsQXR0cmlidXRlKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRK
U1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CitKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdERl
ZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZEZpbHRlcmVkQnlFeHBvc2VkV2luZG93QXR0cmli
dXRlKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3Bl
cnR5TmFtZSk7CitKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJl
ZEJ5RXhwb3NlZEZpbHRlcmVkQnlFeHBvc2VkV29ya2VyQXR0cmlidXRlKEpTQzo6SlNHbG9iYWxP
YmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CisKK2NsYXNz
IEpTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZFByb3RvdHlwZSBmaW5hbCA6IHB1
YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3QgeworcHVibGljOgorICAgIHVzaW5nIEJhc2UgPSBK
U0M6OkpTTm9uRmluYWxPYmplY3Q7CisgICAgc3RhdGljIEpTVGVzdERlZmF1bHRUb0pTT05GaWx0
ZXJlZEJ5RXhwb3NlZFByb3RvdHlwZSogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0RPTUdsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIHsKKyAg
ICAgICAgSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkUHJvdG90eXBlKiBwdHIg
PSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdERlZmF1bHRUb0pTT05GaWx0
ZXJlZEJ5RXhwb3NlZFByb3RvdHlwZT4odm0uaGVhcCkpIEpTVGVzdERlZmF1bHRUb0pTT05GaWx0
ZXJlZEJ5RXhwb3NlZFByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOworICAg
ICAgICBwdHItPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICAgICAgcmV0dXJuIHB0cjsKKyAgICB9
CisKKyAgICBERUNMQVJFX0lORk87CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIEpT
Qzo6U3Vic3BhY2VBY2Nlc3M+CisgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNl
Rm9yKEpTQzo6Vk0mIHZtKQorICAgIHsKKyAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BB
Q0VfU0hBUkFCTEUoSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkUHJvdG90eXBl
LCBCYXNlKTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgIH0KKyAg
ICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlND
OjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9i
amVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJl
RmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBKU1Rlc3REZWZhdWx0VG9K
U09ORmlsdGVyZWRCeUV4cG9zZWRQcm90b3R5cGUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxP
YmplY3QqLCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgICAgICA6IEpTQzo6SlNOb25G
aW5hbE9iamVjdCh2bSwgc3RydWN0dXJlKQorICAgIHsKKyAgICB9CisKKyAgICB2b2lkIGZpbmlz
aENyZWF0aW9uKEpTQzo6Vk0mKTsKK307CitTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFS
QUJMRShKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWRQcm90b3R5cGUsIEpTVGVz
dERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZFByb3RvdHlwZTo6QmFzZSk7CisKK3VzaW5n
IEpTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZENvbnN0cnVjdG9yID0gSlNET01D
b25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlF
eHBvc2VkPjsKKwordGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJl
ZEJ5RXhwb3NlZENvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0s
IGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit7CisgICAgVU5VU0VEX1BB
UkFNKHZtKTsKKyAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LmZ1bmN0aW9uUHJvdG90eXBlKCk7Cit9
CisKK3RlbXBsYXRlPD4gdm9pZCBKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWRD
b25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVj
dCYgZ2xvYmFsT2JqZWN0KQoreworICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+
cHJvdG90eXBlLCBKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQ6OnByb3RvdHlw
ZSh2bSwgZ2xvYmFsT2JqZWN0KSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0pOworICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwg
anNOb250cml2aWFsU3RyaW5nKHZtLCAiVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3Nl
ZCJfcyksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pOworICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+
bGVuZ3RoLCBqc051bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7Cit9CisKK3RlbXBsYXRlPD4gY29uc3Qg
Q2xhc3NJbmZvIEpTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZENvbnN0cnVjdG9y
OjpzX2luZm8gPSB7ICJUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkIiwgJkJhc2U6
OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3REZWZh
dWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWRDb25zdHJ1Y3RvcikgfTsKKworLyogSGFzaCB0YWJs
ZSBmb3IgcHJvdG90eXBlICovCisKK3N0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RE
ZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWRQcm90b3R5cGVUYWJsZVZhbHVlc1tdID0KK3sK
KyAgICB7ICJjb25zdHJ1Y3RvciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2Fz
dDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVk
QnlFeHBvc2VkQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5
U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9z
ZWRDb25zdHJ1Y3RvcikgfSB9LAorICAgIHsgIm5vcm1hbEF0dHJpYnV0ZSIsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9N
QXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWRO
b3JtYWxBdHRyaWJ1dGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6
UHV0VmFsdWVGdW5jPigwKSB9IH0sCisgICAgeyAiZmlsdGVyZWRCeUV4cG9zZWRXaW5kb3dBdHRy
aWJ1dGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVh
ZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0RGVmYXVsdFRvSlNP
TkZpbHRlcmVkQnlFeHBvc2VkRmlsdGVyZWRCeUV4cG9zZWRXaW5kb3dBdHRyaWJ1dGUpLCAoaW50
cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0s
CisgICAgeyAiZmlsdGVyZWRCeUV4cG9zZWRXb3JrZXJBdHRyaWJ1dGUiLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0
dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNs
b3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkRmls
dGVyZWRCeUV4cG9zZWRXb3JrZXJBdHRyaWJ1dGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1
dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCisgICAgeyAidG9KU09OIiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9J
bnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rl
c3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWRQcm90b3R5cGVGdW5jdGlvblRvSlNPTiks
IChpbnRwdHJfdCkgKDApIH0gfSwKK307CisKK2NvbnN0IENsYXNzSW5mbyBKU1Rlc3REZWZhdWx0
VG9KU09ORmlsdGVyZWRCeUV4cG9zZWRQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlc3REZWZhdWx0
VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRy
LCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3Nl
ZFByb3RvdHlwZSkgfTsKKwordm9pZCBKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9z
ZWRQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hD
cmVhdGlvbih2bSk7CisgICAgcmVpZnlTdGF0aWNQcm9wZXJ0aWVzKHZtLCBKU1Rlc3REZWZhdWx0
VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQ6OmluZm8oKSwgSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRl
cmVkQnlFeHBvc2VkUHJvdG90eXBlVGFibGVWYWx1ZXMsICp0aGlzKTsKKyAgICBib29sIGhhc0Rp
c2FibGVkUnVudGltZVByb3BlcnRpZXMgPSBmYWxzZTsKKyAgICBpZiAoIWpzQ2FzdDxKU0RPTUds
b2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5p
c0RvY3VtZW50KCkpIHsKKyAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRy
dWU7CisgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2
bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJmaWx0ZXJlZEJ5RXhwb3NlZFdpbmRv
d0F0dHJpYnV0ZSIpLCBzdHJsZW4oImZpbHRlcmVkQnlFeHBvc2VkV2luZG93QXR0cmlidXRlIikp
OworICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxl
dGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7CisgICAgICAgIERlbGV0ZVByb3Bl
cnR5U2xvdCBzbG90OworICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xv
YmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZSwgc2xvdCk7CisgICAgfQorICAgIGlmICghanNDYXN0
PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250
ZXh0KCktPmlzV29ya2VyR2xvYmFsU2NvcGUoKSkgeworICAgICAgICBoYXNEaXNhYmxlZFJ1bnRp
bWVQcm9wZXJ0aWVzID0gdHJ1ZTsKKyAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oImZpbHRl
cmVkQnlFeHBvc2VkV29ya2VyQXR0cmlidXRlIiksIHN0cmxlbigiZmlsdGVyZWRCeUV4cG9zZWRX
b3JrZXJBdHRyaWJ1dGUiKSk7CisgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBz
Y29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKKyAg
ICAgICAgRGVsZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQ
cm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKKyAgICB9
CisgICAgaWYgKGhhc0Rpc2FibGVkUnVudGltZVByb3BlcnRpZXMgJiYgc3RydWN0dXJlKCktPmlz
RGljdGlvbmFyeSgpKQorICAgICAgICBmbGF0dGVuRGljdGlvbmFyeU9iamVjdCh2bSk7CisgICAg
SlNDX1RPX1NUUklOR19UQUdfV0lUSE9VVF9UUkFOU0lUSU9OKCk7Cit9CisKK2NvbnN0IENsYXNz
SW5mbyBKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQ6OnNfaW5mbyA9IHsgIlRl
c3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQiLCAmQmFzZTo6c19pbmZvLCBudWxscHRy
LCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJl
ZEJ5RXhwb3NlZCkgfTsKKworSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkOjpK
U1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQoU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0RGVmYXVsdFRvSlNPTkZp
bHRlcmVkQnlFeHBvc2VkPiYmIGltcGwpCisgICAgOiBKU0RPTVdyYXBwZXI8VGVzdERlZmF1bHRU
b0pTT05GaWx0ZXJlZEJ5RXhwb3NlZD4oc3RydWN0dXJlLCBnbG9iYWxPYmplY3QsIFdURk1vdmUo
aW1wbCkpCit7Cit9CisKK3ZvaWQgSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2Vk
OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0p
OworICAgIEFTU0VSVChpbmhlcml0cyh2bSwgaW5mbygpKSk7CisKKyAgICBzdGF0aWNfYXNzZXJ0
KCFzdGQ6OmlzX2Jhc2Vfb2Y8QWN0aXZlRE9NT2JqZWN0LCBUZXN0RGVmYXVsdFRvSlNPTkZpbHRl
cmVkQnlFeHBvc2VkPjo6dmFsdWUsICJJbnRlcmZhY2UgaXMgbm90IG1hcmtlZCBhcyBbQWN0aXZl
RE9NT2JqZWN0XSBldmVuIHRob3VnaCBpbXBsZW1lbnRhdGlvbiBjbGFzcyBzdWJjbGFzc2VzIEFj
dGl2ZURPTU9iamVjdC4iKTsKKworfQorCitKU09iamVjdCogSlNUZXN0RGVmYXVsdFRvSlNPTkZp
bHRlcmVkQnlFeHBvc2VkOjpjcmVhdGVQcm90b3R5cGUoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVj
dCYgZ2xvYmFsT2JqZWN0KQoreworICAgIHJldHVybiBKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVy
ZWRCeUV4cG9zZWRQcm90b3R5cGU6OmNyZWF0ZSh2bSwgJmdsb2JhbE9iamVjdCwgSlNUZXN0RGVm
YXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0s
ICZnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC5vYmplY3RQcm90b3R5cGUoKSkpOworfQorCitK
U09iamVjdCogSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkOjpwcm90b3R5cGUo
Vk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQoreworICAgIHJldHVybiBn
ZXRET01Qcm90b3R5cGU8SlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkPih2bSwg
Z2xvYmFsT2JqZWN0KTsKK30KKworSlNWYWx1ZSBKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRC
eUV4cG9zZWQ6OmdldENvbnN0cnVjdG9yKFZNJiB2bSwgY29uc3QgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCkKK3sKKyAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0RGVmYXVs
dFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpT
RE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7Cit9CisKK3ZvaWQgSlNUZXN0RGVmYXVs
dFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkOjpkZXN0cm95KEpTQzo6SlNDZWxsKiBjZWxsKQorewor
ICAgIEpTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZCogdGhpc09iamVjdCA9IHN0
YXRpY19jYXN0PEpTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZCo+KGNlbGwpOwor
ICAgIHRoaXNPYmplY3QtPkpTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZDo6fkpT
VGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZCgpOworfQorCit0ZW1wbGF0ZTw+IGlu
bGluZSBKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQqIElETEF0dHJpYnV0ZTxK
U1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQ+OjpjYXN0KEpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUpCit7CisgICAg
cmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2Vk
Kj4oSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKTsKK30KKwordGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRl
cmVkQnlFeHBvc2VkKiBJRExPcGVyYXRpb248SlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlF
eHBvc2VkPjo6Y2FzdChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lJiBjYWxsRnJhbWUpCit7CisgICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0RGVmYXVs
dFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkKj4oSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVj
dCksIGNhbGxGcmFtZS50aGlzVmFsdWUoKSk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIGpzVGVzdERl
ZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZENvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFt
ZSkKK3sKKyAgICBWTSYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOworICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIGF1dG8qIHBy
b3RvdHlwZSA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBv
c2VkUHJvdG90eXBlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBpZiAo
VU5MSUtFTFkoIXByb3RvdHlwZSkpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkOjpnZXRDb25zdHJ1Y3RvcihK
U0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpLCBwcm90b3R5cGUtPmdsb2JhbE9iamVjdCgp
KSk7Cit9CisKK2Jvb2wgc2V0SlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkQ29u
c3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQoreworICAgIFZNJiB2
bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgYXV0byogcHJvdG90eXBlID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWRQcm90b3R5cGUqPih2
bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIGlmIChVTkxJS0VMWSghcHJvdG90
eXBlKSkgeworICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIC8vIFNoYWRvd2lu
ZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCisgICAgcmV0dXJuIHByb3RvdHlwZS0+cHV0RGlyZWN0
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29k
ZWRWYWx1ZSkpOworfQorCitzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RGVmYXVsdFRvSlNP
TkZpbHRlcmVkQnlFeHBvc2VkTm9ybWFsQXR0cmlidXRlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQm
IHRoaXNPYmplY3QpCit7CisgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFs
T2JqZWN0KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KyAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CisgICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETExvbmc+KGxleGljYWxHbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsIGltcGwubm9ybWFsQXR0cmlidXRlKCkpKSk7Cit9CisKK0VuY29kZWRKU1ZhbHVl
IGpzVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZE5vcm1hbEF0dHJpYnV0ZShKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpCit7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3REZWZhdWx0
VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQ+OjpnZXQ8anNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVk
QnlFeHBvc2VkTm9ybWFsQXR0cmlidXRlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6
QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAibm9ybWFsQXR0cmlidXRl
Iik7Cit9CisKK3N0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3REZWZhdWx0VG9KU09ORmlsdGVy
ZWRCeUV4cG9zZWRGaWx0ZXJlZEJ5RXhwb3NlZFdpbmRvd0F0dHJpYnV0ZUdldHRlcihKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVk
QnlFeHBvc2VkJiB0aGlzT2JqZWN0KQoreworICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4
aWNhbEdsb2JhbE9iamVjdCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOworICAgIFJF
TEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExEb3VibGU+KGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZmlsdGVyZWRCeUV4cG9zZWRXaW5kb3dBdHRyaWJ1
dGUoKSkpKTsKK30KKworRW5jb2RlZEpTVmFsdWUganNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVk
QnlFeHBvc2VkRmlsdGVyZWRCeUV4cG9zZWRXaW5kb3dBdHRyaWJ1dGUoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lKQoreworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRl
cmVkQnlFeHBvc2VkPjo6Z2V0PGpzVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZEZp
bHRlcmVkQnlFeHBvc2VkV2luZG93QXR0cmlidXRlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhh
dmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiZmlsdGVyZWRC
eUV4cG9zZWRXaW5kb3dBdHRyaWJ1dGUiKTsKK30KKworc3RhdGljIGlubGluZSBKU1ZhbHVlIGpz
VGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZEZpbHRlcmVkQnlFeHBvc2VkV29ya2Vy
QXR0cmlidXRlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rl
c3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQmIHRoaXNPYmplY3QpCit7CisgICAgYXV0
byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBhdXRvJiBpbXBsID0gdGhpc09i
amVjdC53cmFwcGVkKCk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pT
PElETERPTVN0cmluZz4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5maWx0
ZXJlZEJ5RXhwb3NlZFdvcmtlckF0dHJpYnV0ZSgpKSkpOworfQorCitFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWRGaWx0ZXJlZEJ5RXhwb3NlZFdvcmtl
ckF0dHJpYnV0ZShKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCit7CisgICAgcmV0dXJuIElETEF0dHJpYnV0
ZTxKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQ+OjpnZXQ8anNUZXN0RGVmYXVs
dFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkRmlsdGVyZWRCeUV4cG9zZWRXb3JrZXJBdHRyaWJ1dGVH
ZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aGlzVmFsdWUsICJmaWx0ZXJlZEJ5RXhwb3NlZFdvcmtlckF0dHJpYnV0ZSIpOworfQor
CitzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJl
ZEJ5RXhwb3NlZFByb3RvdHlwZUZ1bmN0aW9uVG9KU09OQm9keShKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiwgSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVk
QnlFeHBvc2VkKiBjYXN0ZWRUaGlzKQoreworICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTShsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CisgICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKKyAgICBhdXRvKiByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0
eU9iamVjdChsZXhpY2FsR2xvYmFsT2JqZWN0LCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKS0+
b2JqZWN0UHJvdG90eXBlKCkpOworICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKHZtLCAibm9ybWFsQXR0cmlidXRlIiksIHRvSlM8SURMTG9uZz4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwubm9ybWFsQXR0cmlidXRlKCkpKTsKKyAg
ICBpZiAoanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0
KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzRG9jdW1lbnQoKSkgeworICAgICAgICBy
ZXN1bHQtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImZpbHRlcmVk
QnlFeHBvc2VkV2luZG93QXR0cmlidXRlIiksIHRvSlM8SURMRG91YmxlPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5maWx0ZXJlZEJ5RXhwb3NlZFdpbmRvd0F0dHJpYnV0
ZSgpKSk7CisgICAgfQorICAgIGlmIChqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihjYXN0ZWRU
aGlzLT5nbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNXb3JrZXJH
bG9iYWxTY29wZSgpKSB7CisgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKHZtLCAiZmlsdGVyZWRCeUV4cG9zZWRXb3JrZXJBdHRyaWJ1dGUiKSwgdG9K
UzxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmZp
bHRlcmVkQnlFeHBvc2VkV29ya2VyQXR0cmlidXRlKCkpKTsKKyAgICB9CisgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShyZXN1bHQpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZFByb3RvdHlwZUZ1bmN0aW9uVG9K
U09OKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKK3sKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdERlZmF1bHRUb0pTT05GaWx0
ZXJlZEJ5RXhwb3NlZD46OmNhbGw8anNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2Vk
UHJvdG90eXBlRnVuY3Rpb25Ub0pTT05Cb2R5PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxG
cmFtZSwgInRvSlNPTiIpOworfQorCitKU0M6Oklzb1N1YnNwYWNlKiBKU1Rlc3REZWZhdWx0VG9K
U09ORmlsdGVyZWRCeUV4cG9zZWQ6OnN1YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSkKK3sKKyAg
ICBhdXRvJiBjbGllbnREYXRhID0gKnN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xp
ZW50RGF0YSk7CisgICAgYXV0byYgc3BhY2VzID0gY2xpZW50RGF0YS5zdWJzcGFjZXMoKTsKKyAg
ICBpZiAoYXV0byogc3BhY2UgPSBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REZWZhdWx0VG9KU09O
RmlsdGVyZWRCeUV4cG9zZWQuZ2V0KCkpCisgICAgICAgIHJldHVybiBzcGFjZTsKKyAgICBzdGF0
aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpT
VGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZD4gfHwgIUpTVGVzdERlZmF1bHRUb0pT
T05GaWx0ZXJlZEJ5RXhwb3NlZDo6bmVlZHNEZXN0cnVjdGlvbik7CisgICAgaWYgY29uc3RleHBy
IChzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0M6OkpTRGVzdHJ1Y3RpYmxlT2JqZWN0LCBKU1Rlc3REZWZh
dWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQ+KQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZv
clRlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQgPSBtYWtlVW5pcXVlPElzb1N1YnNw
YWNlPiBJU09fU1VCU1BBQ0VfSU5JVCh2bS5oZWFwLCB2bS5kZXN0cnVjdGlibGVPYmplY3RIZWFw
Q2VsbFR5cGUuZ2V0KCksIEpTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZCk7Cisg
ICAgZWxzZQorICAgICAgICBzcGFjZXMubV9zdWJzcGFjZUZvclRlc3REZWZhdWx0VG9KU09ORmls
dGVyZWRCeUV4cG9zZWQgPSBtYWtlVW5pcXVlPElzb1N1YnNwYWNlPiBJU09fU1VCU1BBQ0VfSU5J
VCh2bS5oZWFwLCB2bS5jZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rlc3REZWZhdWx0VG9KU09O
RmlsdGVyZWRCeUV4cG9zZWQpOworICAgIGF1dG8qIHNwYWNlID0gc3BhY2VzLm1fc3Vic3BhY2VG
b3JUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkLmdldCgpOworSUdOT1JFX1dBUk5J
TkdTX0JFR0lOKCJ1bnJlYWNoYWJsZS1jb2RlIikKK0lHTk9SRV9XQVJOSU5HU19CRUdJTigidGF1
dG9sb2dpY2FsLWNvbXBhcmUiKQorICAgIGlmICgmSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVk
QnlFeHBvc2VkOjp2aXNpdE91dHB1dENvbnN0cmFpbnRzICE9ICZKU0M6OkpTQ2VsbDo6dmlzaXRP
dXRwdXRDb25zdHJhaW50cykKKyAgICAgICAgY2xpZW50RGF0YS5vdXRwdXRDb25zdHJhaW50U3Bh
Y2VzKCkuYXBwZW5kKHNwYWNlKTsKK0lHTk9SRV9XQVJOSU5HU19FTkQKK0lHTk9SRV9XQVJOSU5H
U19FTkQKKyAgICByZXR1cm4gc3BhY2U7Cit9CisKK3ZvaWQgSlNUZXN0RGVmYXVsdFRvSlNPTkZp
bHRlcmVkQnlFeHBvc2VkOjphbmFseXplSGVhcChKU0NlbGwqIGNlbGwsIEhlYXBBbmFseXplciYg
YW5hbHl6ZXIpCit7CisgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3REZWZhdWx0
VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQqPihjZWxsKTsKKyAgICBhbmFseXplci5zZXRXcmFwcGVk
T2JqZWN0Rm9yQ2VsbChjZWxsLCAmdGhpc09iamVjdC0+d3JhcHBlZCgpKTsKKyAgICBpZiAodGhp
c09iamVjdC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQorICAgICAgICBhbmFseXplci5zZXRM
YWJlbEZvckNlbGwoY2VsbCwgInVybCAiICsgdGhpc09iamVjdC0+c2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpLT51cmwoKS5zdHJpbmcoKSk7CisgICAgQmFzZTo6YW5hbHl6ZUhlYXAoY2VsbCwgYW5h
bHl6ZXIpOworfQorCitib29sIEpTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZE93
bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+
IGhhbmRsZSwgdm9pZCosIFNsb3RWaXNpdG9yJiB2aXNpdG9yLCBjb25zdCBjaGFyKiogcmVhc29u
KQoreworICAgIFVOVVNFRF9QQVJBTShoYW5kbGUpOworICAgIFVOVVNFRF9QQVJBTSh2aXNpdG9y
KTsKKyAgICBVTlVTRURfUEFSQU0ocmVhc29uKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3Zv
aWQgSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkT3duZXI6OmZpbmFsaXplKEpT
Qzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiBjb250ZXh0KQoreworICAgIGF1
dG8qIGpzVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZCA9IHN0YXRpY19jYXN0PEpT
VGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZCo+KGhhbmRsZS5zbG90KCktPmFzQ2Vs
bCgpKTsKKyAgICBhdXRvJiB3b3JsZCA9ICpzdGF0aWNfY2FzdDxET01XcmFwcGVyV29ybGQqPihj
b250ZXh0KTsKKyAgICB1bmNhY2hlV3JhcHBlcih3b3JsZCwgJmpzVGVzdERlZmF1bHRUb0pTT05G
aWx0ZXJlZEJ5RXhwb3NlZC0+d3JhcHBlZCgpLCBqc1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRC
eUV4cG9zZWQpOworfQorCisjaWYgRU5BQkxFKEJJTkRJTkdfSU5URUdSSVRZKQorI2lmIFBMQVRG
T1JNKFdJTikKKyNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0NDgzKQorZXh0ZXJuICJDIiB7IGV4
dGVybiB2b2lkICgqY29uc3QgX19pZGVudGlmaWVyKCI/P183VGVzdERlZmF1bHRUb0pTT05GaWx0
ZXJlZEJ5RXhwb3NlZEBXZWJDb3JlQEA2QkAiKVtdKSgpOyB9CisjZWxzZQorZXh0ZXJuICJDIiB7
IGV4dGVybiB2b2lkKiBfWlRWTjdXZWJDb3JlMzRUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlF
eHBvc2VkRVtdOyB9CisjZW5kaWYKKyNlbmRpZgorCitKU0M6OkpTVmFsdWUgdG9KU05ld2x5Q3Jl
YXRlZChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgUmVmPFRlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQ+JiYgaW1wbCkKK3sKKwor
I2lmIEVOQUJMRShCSU5ESU5HX0lOVEVHUklUWSkKKyAgICBjb25zdCB2b2lkKiBhY3R1YWxWVGFi
bGVQb2ludGVyID0gZ2V0VlRhYmxlUG9pbnRlcihpbXBsLnB0cigpKTsKKyNpZiBQTEFURk9STShX
SU4pCisgICAgdm9pZCogZXhwZWN0ZWRWVGFibGVQb2ludGVyID0gX19pZGVudGlmaWVyKCI/P183
VGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZEBXZWJDb3JlQEA2QkAiKTsKKyNlbHNl
CisgICAgdm9pZCogZXhwZWN0ZWRWVGFibGVQb2ludGVyID0gJl9aVFZON1dlYkNvcmUzNFRlc3RE
ZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWRFWzJdOworI2VuZGlmCisKKyAgICAvLyBJZiB0
aGlzIGZhaWxzIFRlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQgZG9lcyBub3QgaGF2
ZSBhIHZ0YWJsZSwgc28geW91IG5lZWQgdG8gYWRkIHRoZQorICAgIC8vIEltcGxlbWVudGF0aW9u
TGFja3NWVGFibGUgYXR0cmlidXRlIHRvIHRoZSBpbnRlcmZhY2UgZGVmaW5pdGlvbgorICAgIHN0
YXRpY19hc3NlcnQoc3RkOjppc19wb2x5bW9ycGhpYzxUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVk
QnlFeHBvc2VkPjo6dmFsdWUsICJUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkIGlz
IG5vdCBwb2x5bW9ycGhpYyIpOworCisgICAgLy8gSWYgeW91IGhpdCB0aGlzIGFzc2VydGlvbiB5
b3UgZWl0aGVyIGhhdmUgYSB1c2UgYWZ0ZXIgZnJlZSBidWcsIG9yCisgICAgLy8gVGVzdERlZmF1
bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZCBoYXMgc3ViY2xhc3Nlcy4gSWYgVGVzdERlZmF1bHRU
b0pTT05GaWx0ZXJlZEJ5RXhwb3NlZCBoYXMgc3ViY2xhc3NlcyB0aGF0IGdldCBwYXNzZWQKKyAg
ICAvLyB0byB0b0pTKCkgd2UgY3VycmVudGx5IHJlcXVpcmUgVGVzdERlZmF1bHRUb0pTT05GaWx0
ZXJlZEJ5RXhwb3NlZCB5b3UgdG8gb3B0IG91dCBvZiBiaW5kaW5nIGhhcmRlbmluZworICAgIC8v
IGJ5IGFkZGluZyB0aGUgU2tpcFZUYWJsZVZhbGlkYXRpb24gYXR0cmlidXRlIHRvIHRoZSBpbnRl
cmZhY2UgSURMIGRlZmluaXRpb24KKyAgICBSRUxFQVNFX0FTU0VSVChhY3R1YWxWVGFibGVQb2lu
dGVyID09IGV4cGVjdGVkVlRhYmxlUG9pbnRlcik7CisjZW5kaWYKKyAgICByZXR1cm4gY3JlYXRl
V3JhcHBlcjxUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkPihnbG9iYWxPYmplY3Qs
IFdURk1vdmUoaW1wbCkpOworfQorCitKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkJiBpbXBsKQoreworICAgIHJldHVy
biB3cmFwKGxleGljYWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgaW1wbCk7Cit9CisKK1Rl
c3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQqIEpTVGVzdERlZmF1bHRUb0pTT05GaWx0
ZXJlZEJ5RXhwb3NlZDo6dG9XcmFwcGVkKEpTQzo6Vk0mIHZtLCBKU0M6OkpTVmFsdWUgdmFsdWUp
Cit7CisgICAgaWYgKGF1dG8qIHdyYXBwZXIgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdERlZmF1bHRU
b0pTT05GaWx0ZXJlZEJ5RXhwb3NlZCo+KHZtLCB2YWx1ZSkpCisgICAgICAgIHJldHVybiAmd3Jh
cHBlci0+d3JhcHBlZCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCit9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTkZp
bHRlcmVkQnlFeHBvc2VkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZC5oCShu
b25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQuaAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDkzIEBACisvKgorICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3Bl
biBzb3VyY2UgcHJvamVjdC4KKyAgICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdl
bmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQorCisgICAgVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisg
ICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg
ZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGlu
IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFO
VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO
VQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgor
CisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUg
dGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwK
KyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNwcmFnbWEgb25jZQorCisj
aW5jbHVkZSAiSlNET01XcmFwcGVyLmgiCisjaW5jbHVkZSAiVGVzdERlZmF1bHRUb0pTT05GaWx0
ZXJlZEJ5RXhwb3NlZC5oIgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEpTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhw
b3NlZCA6IHB1YmxpYyBKU0RPTVdyYXBwZXI8VGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhw
b3NlZD4geworcHVibGljOgorICAgIHVzaW5nIEJhc2UgPSBKU0RPTVdyYXBwZXI8VGVzdERlZmF1
bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZD47CisgICAgc3RhdGljIEpTVGVzdERlZmF1bHRUb0pT
T05GaWx0ZXJlZEJ5RXhwb3NlZCogY3JlYXRlKEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpT
RE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0RGVmYXVsdFRvSlNPTkZpbHRl
cmVkQnlFeHBvc2VkPiYmIGltcGwpCisgICAgeworICAgICAgICBKU1Rlc3REZWZhdWx0VG9KU09O
RmlsdGVyZWRCeUV4cG9zZWQqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8
SlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkPihnbG9iYWxPYmplY3QtPnZtKCku
aGVhcCkpIEpTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZChzdHJ1Y3R1cmUsICpn
bG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOworICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9u
KGdsb2JhbE9iamVjdC0+dm0oKSk7CisgICAgICAgIHJldHVybiBwdHI7CisgICAgfQorCisgICAg
c3RhdGljIEpTQzo6SlNPYmplY3QqIGNyZWF0ZVByb3RvdHlwZShKU0M6OlZNJiwgSlNET01HbG9i
YWxPYmplY3QmKTsKKyAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogcHJvdG90eXBlKEpTQzo6Vk0m
LCBKU0RPTUdsb2JhbE9iamVjdCYpOworICAgIHN0YXRpYyBUZXN0RGVmYXVsdFRvSlNPTkZpbHRl
cmVkQnlFeHBvc2VkKiB0b1dyYXBwZWQoSlNDOjpWTSYsIEpTQzo6SlNWYWx1ZSk7CisgICAgc3Rh
dGljIHZvaWQgZGVzdHJveShKU0M6OkpTQ2VsbCopOworCisgICAgREVDTEFSRV9JTkZPOworCisg
ICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpT
Qzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkK
KyAgICB7CisgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxP
YmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVy
ZUZsYWdzKSwgaW5mbygpLCBKU0M6Ok5vbkFycmF5KTsKKyAgICB9CisKKyAgICBzdGF0aWMgSlND
OjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBjb25zdCBKU0M6OkpTR2xvYmFsT2Jq
ZWN0Kik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUsIEpTQzo6U3Vic3BhY2VBY2Nlc3MgbW9kZT4g
c3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKEpTQzo6Vk0mIHZtKQorICAgIHsK
KyAgICAgICAgaWYgY29uc3RleHByIChtb2RlID09IEpTQzo6U3Vic3BhY2VBY2Nlc3M6OkNvbmN1
cnJlbnRseSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gc3Vi
c3BhY2VGb3JJbXBsKHZtKTsKKyAgICB9CisgICAgc3RhdGljIEpTQzo6SXNvU3Vic3BhY2UqIHN1
YnNwYWNlRm9ySW1wbChKU0M6OlZNJiB2bSk7CisgICAgc3RhdGljIHZvaWQgYW5hbHl6ZUhlYXAo
SlNDZWxsKiwgSlNDOjpIZWFwQW5hbHl6ZXImKTsKK3Byb3RlY3RlZDoKKyAgICBKU1Rlc3REZWZh
dWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9i
amVjdCYsIFJlZjxUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkPiYmKTsKKworICAg
IHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYpOworfTsKKworY2xhc3MgSlNUZXN0RGVmYXVs
dFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkT3duZXIgOiBwdWJsaWMgSlNDOjpXZWFrSGFuZGxlT3du
ZXIgeworcHVibGljOgorICAgIHZpcnR1YWwgYm9vbCBpc1JlYWNoYWJsZUZyb21PcGFxdWVSb290
cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+LCB2b2lkKiBjb250ZXh0LCBKU0M6OlNsb3RWaXNp
dG9yJiwgY29uc3QgY2hhcioqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZmluYWxpemUoSlNDOjpIYW5k
bGU8SlNDOjpVbmtub3duPiwgdm9pZCogY29udGV4dCk7Cit9OworCitpbmxpbmUgSlNDOjpXZWFr
SGFuZGxlT3duZXIqIHdyYXBwZXJPd25lcihET01XcmFwcGVyV29ybGQmLCBUZXN0RGVmYXVsdFRv
SlNPTkZpbHRlcmVkQnlFeHBvc2VkKikKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SlNU
ZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkT3duZXI+IG93bmVyOworICAgIHJldHVy
biAmb3duZXIuZ2V0KCk7Cit9CisKK2lubGluZSB2b2lkKiB3cmFwcGVyS2V5KFRlc3REZWZhdWx0
VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQqIHdyYXBwYWJsZU9iamVjdCkKK3sKKyAgICByZXR1cm4g
d3JhcHBhYmxlT2JqZWN0OworfQorCitKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiwgSlNET01HbG9iYWxPYmplY3QqLCBUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBv
c2VkJik7CitpbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdERl
ZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZCogaW1wbCkgeyByZXR1cm4gaW1wbCA/IHRvSlMo
bGV4aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LCAqaW1wbCkgOiBKU0M6OmpzTnVsbCgp
OyB9CitKU0M6OkpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChKU0M6OkpTR2xvYmFsT2JqZWN0Kiwg
SlNET01HbG9iYWxPYmplY3QqLCBSZWY8VGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3Nl
ZD4mJik7CitpbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgUmVmUHRyPFRlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQ+JiYgaW1wbCkg
eyByZXR1cm4gaW1wbCA/IHRvSlNOZXdseUNyZWF0ZWQobGV4aWNhbEdsb2JhbE9iamVjdCwgZ2xv
YmFsT2JqZWN0LCBpbXBsLnJlbGVhc2VOb25OdWxsKCkpIDogSlNDOjpqc051bGwoKTsgfQorCit0
ZW1wbGF0ZTw+IHN0cnVjdCBKU0RPTVdyYXBwZXJDb252ZXJ0ZXJUcmFpdHM8VGVzdERlZmF1bHRU
b0pTT05GaWx0ZXJlZEJ5RXhwb3NlZD4geworICAgIHVzaW5nIFdyYXBwZXJDbGFzcyA9IEpTVGVz
dERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZDsKKyAgICB1c2luZyBUb1dyYXBwZWRSZXR1
cm5UeXBlID0gVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZCo7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNXb3JrZXJHbG9iYWxTY29wZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTV29ya2VyR2xvYmFsU2NvcGUuY3BwCShy
ZXZpc2lvbiAyNjczMTkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNXb3JrZXJHbG9iYWxTY29wZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcg
QEAKICNpbmNsdWRlICJKU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmgiCiAjaW5jbHVkZSAiSlNET01X
cmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJKU0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvdy5oIgor
I2luY2x1ZGUgIkpTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZC5oIgogI2luY2x1
ZGUgIkpTVGVzdE5vZGUuaCIKICNpbmNsdWRlICJKU1Rlc3RPYmouaCIKICNpbmNsdWRlICJKU1Rl
c3RQcm9taXNlUmVqZWN0aW9uRXZlbnQuaCIKQEAgLTUzLDYgKzU0LDggQEAgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1dvcmtlckdsb2JhbFNjb3BlQwogYm9vbCBzZXRKU1dvcmtlckdsb2JhbFNjb3Bl
Q29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpT
Qzo6RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1dvcmtlckdsb2JhbFNj
b3BlRXhwb3NlZFRvV29ya2VyQW5kV2luZG93Q29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVj
dCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKIGJvb2wgc2V0SlNX
b3JrZXJHbG9iYWxTY29wZUV4cG9zZWRUb1dvcmtlckFuZFdpbmRvd0NvbnN0cnVjdG9yKEpTQzo6
SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVl
KTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUganNXb3JrZXJHbG9iYWxTY29wZVRlc3REZWZhdWx0VG9K
U09ORmlsdGVyZWRCeUV4cG9zZWRDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlND
OjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOworYm9vbCBzZXRKU1dvcmtlckds
b2JhbFNjb3BlVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZENvbnN0cnVjdG9yKEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1Zh
bHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNXb3JrZXJHbG9iYWxTY29wZVRlc3ROb2RlQ29u
c3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6
UHJvcGVydHlOYW1lKTsKIGJvb2wgc2V0SlNXb3JrZXJHbG9iYWxTY29wZVRlc3ROb2RlQ29uc3Ry
dWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5j
b2RlZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1dvcmtlckdsb2JhbFNjb3BlVGVz
dE9iamVjdENvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkVuY29kZWRKU1Zh
bHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CkBAIC02NCwxNiArNjcsMjQgQEAgdXNpbmcgSlNXb3Jr
ZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yID0gSgogCiAvKiBIYXNoIHRhYmxlICovCiAKLXN0YXRp
YyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1dvcmtlckdsb2JhbFNjb3BlVGFibGVJ
bmRleFsxMF0gPSB7CitzdGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNXb3Jr
ZXJHbG9iYWxTY29wZVRhYmxlSW5kZXhbMThdID0geworICAgIHsgLTEsIC0xIH0sCisgICAgeyAw
LCAxNiB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9
LAotICAgIHsgMCwgOCB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7
IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAzLCAtMSB9LAogICAgIHsgLTEsIC0x
IH0sCi0gICAgeyAxLCA5IH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAg
IHsgLTEsIC0xIH0sCisgICAgeyA0LCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAxLCAx
NyB9LAogICAgIHsgMiwgLTEgfSwKIH07CiAKQEAgLTgxLDEyICs5MiwxMyBAQCBzdGF0aWMgY29u
c3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNXCiBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFs
dWUgSlNXb3JrZXJHbG9iYWxTY29wZVRhYmxlVmFsdWVzW10gPQogewogICAgIHsgIkV4cG9zZWRU
b1dvcmtlckFuZFdpbmRvdyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQ
cm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNXb3JrZXJHbG9iYWxTY29wZUV4cG9zZWRUb1dv
cmtlckFuZFdpbmRvd0NvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9w
ZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNXb3JrZXJHbG9iYWxTY29wZUV4cG9zZWRUb1dv
cmtlckFuZFdpbmRvd0NvbnN0cnVjdG9yKSB9IH0sCisgICAgeyAiVGVzdERlZmF1bHRUb0pTT05G
aWx0ZXJlZEJ5RXhwb3NlZCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQ
cm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNXb3JrZXJHbG9iYWxTY29wZVRlc3REZWZhdWx0
VG9KU09ORmlsdGVyZWRCeUV4cG9zZWRDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nh
c3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTV29ya2VyR2xvYmFsU2NvcGVU
ZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkQ29uc3RydWN0b3IpIH0gfSwKICAgICB7
ICJUZXN0Tm9kZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0
eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNXb3JrZXJHbG9iYWxTY29wZVRlc3ROb2RlQ29uc3RydWN0
b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5j
PihzZXRKU1dvcmtlckdsb2JhbFNjb3BlVGVzdE5vZGVDb25zdHJ1Y3RvcikgfSB9LAogICAgIHsg
IlRlc3RPYmplY3QiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzV29ya2VyR2xvYmFsU2NvcGVUZXN0T2JqZWN0Q29uc3Ry
dWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPihzZXRKU1dvcmtlckdsb2JhbFNjb3BlVGVzdE9iamVjdENvbnN0cnVjdG9yKSB9IH0sCiAg
ICAgeyAiVGVzdFByb21pc2VSZWplY3Rpb25FdmVudCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNXb3JrZXJHbG9iYWxT
Y29wZVRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3Rh
dGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTV29ya2VyR2xvYmFs
U2NvcGVUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Q29uc3RydWN0b3IpIH0gfSwKIH07CiAKLXN0
YXRpYyBjb25zdCBIYXNoVGFibGUgSlNXb3JrZXJHbG9iYWxTY29wZVRhYmxlID0geyA0LCA3LCB0
cnVlLCBKU1dvcmtlckdsb2JhbFNjb3BlOjppbmZvKCksIEpTV29ya2VyR2xvYmFsU2NvcGVUYWJs
ZVZhbHVlcywgSlNXb3JrZXJHbG9iYWxTY29wZVRhYmxlSW5kZXggfTsKK3N0YXRpYyBjb25zdCBI
YXNoVGFibGUgSlNXb3JrZXJHbG9iYWxTY29wZVRhYmxlID0geyA1LCAxNSwgdHJ1ZSwgSlNXb3Jr
ZXJHbG9iYWxTY29wZTo6aW5mbygpLCBKU1dvcmtlckdsb2JhbFNjb3BlVGFibGVWYWx1ZXMsIEpT
V29ya2VyR2xvYmFsU2NvcGVUYWJsZUluZGV4IH07CiB0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNXb3Jr
ZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYg
dm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAgICAgcmV0dXJu
IEpTRXZlbnRUYXJnZXQ6OmdldENvbnN0cnVjdG9yKHZtLCAmZ2xvYmFsT2JqZWN0KTsKQEAgLTIw
NSw2ICsyMTcsMjkgQEAgYm9vbCBzZXRKU1dvcmtlckdsb2JhbFNjb3BlRXhwb3NlZFRvV29yawog
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNXb3JrZXJHbG9iYWxTY29wZT46OnNldDxzZXRKU1dv
cmtlckdsb2JhbFNjb3BlRXhwb3NlZFRvV29ya2VyQW5kV2luZG93Q29uc3RydWN0b3JTZXR0ZXI+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIkV4cG9zZWRU
b1dvcmtlckFuZFdpbmRvdyIpOwogfQogCitzdGF0aWMgaW5saW5lIEpTVmFsdWUganNXb3JrZXJH
bG9iYWxTY29wZVRlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWRDb25zdHJ1Y3Rvckdl
dHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNXb3JrZXJHbG9iYWxT
Y29wZSYgdGhpc09iamVjdCkKK3sKKyAgICBVTlVTRURfUEFSQU0obGV4aWNhbEdsb2JhbE9iamVj
dCk7CisgICAgcmV0dXJuIEpTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZDo6Z2V0
Q29uc3RydWN0b3IoSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksIHRoaXNPYmplY3Qu
Z2xvYmFsT2JqZWN0KCkpOworfQorCitFbmNvZGVkSlNWYWx1ZSBqc1dvcmtlckdsb2JhbFNjb3Bl
VGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZENvbnN0cnVjdG9yKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkKK3sKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTV29ya2VyR2xvYmFsU2NvcGU+
OjpnZXQ8anNXb3JrZXJHbG9iYWxTY29wZVRlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9z
ZWRDb25zdHJ1Y3RvckdldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgIlRl
c3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQiKTsKK30KKworc3RhdGljIGlubGluZSBi
b29sIHNldEpTV29ya2VyR2xvYmFsU2NvcGVUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBv
c2VkQ29uc3RydWN0b3JTZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTV29ya2VyR2xvYmFsU2NvcGUmIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCit7CisgICAg
YXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICAvLyBTaGFk
b3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3Rvci4KKyAgICByZXR1cm4gdGhpc09iamVjdC5wdXRE
aXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgTENoYXIqPigiVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZCIpLCBzdHJsZW4o
IlRlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQiKSksIHZhbHVlKTsKK30KKworYm9v
bCBzZXRKU1dvcmtlckdsb2JhbFNjb3BlVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3Nl
ZENvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK3sKKyAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTV29ya2VyR2xvYmFsU2NvcGU+OjpzZXQ8c2V0SlNXb3JrZXJH
bG9iYWxTY29wZVRlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWRDb25zdHJ1Y3RvclNl
dHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiVGVz
dERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZCIpOworfQorCiBzdGF0aWMgaW5saW5lIEpT
VmFsdWUganNXb3JrZXJHbG9iYWxTY29wZVRlc3ROb2RlQ29uc3RydWN0b3JHZXR0ZXIoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTV29ya2VyR2xvYmFsU2NvcGUmIHRoaXNP
YmplY3QpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGxleGljYWxHbG9iYWxPYmplY3QpOwpJbmRleDog
U291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZS5pZGwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZS5pZGwJKHJldmlzaW9uIDI2NzMxOSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2UuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC00Myw4ICs0
Myw4IEBAIHR5cGVkZWYgZG91YmxlIERPTUhpZ2hSZXNUaW1lU3RhbXA7CiAgICAgW0RlZmF1bHRd
IG9iamVjdCB0b0pTT04oKTsKIAogICAgIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9uYXZpZ2F0
aW9uLXRpbWluZy8jZXh0ZW5zaW9ucy10by10aGUtcGVyZm9ybWFuY2UtaW50ZXJmYWNlCi0gICAg
cmVhZG9ubHkgYXR0cmlidXRlIFBlcmZvcm1hbmNlTmF2aWdhdGlvbiBuYXZpZ2F0aW9uOwotICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBQZXJmb3JtYW5jZVRpbWluZyB0aW1pbmc7CisgICAgW0V4cG9z
ZWQ9V2luZG93XSByZWFkb25seSBhdHRyaWJ1dGUgUGVyZm9ybWFuY2VOYXZpZ2F0aW9uIG5hdmln
YXRpb247CisgICAgW0V4cG9zZWQ9V2luZG93XSByZWFkb25seSBhdHRyaWJ1dGUgUGVyZm9ybWFu
Y2VUaW1pbmcgdGltaW5nOwogCiAgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL3BlcmZvcm1h
bmNlLXRpbWVsaW5lLyNleHRlbnNpb25zLXRvLXRoZS1wZXJmb3JtYW5jZS1pbnRlcmZhY2UKICAg
ICBQZXJmb3JtYW5jZUVudHJ5TGlzdCBnZXRFbnRyaWVzKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>409208</attachid>
            <date>2020-09-19 12:36:18 -0700</date>
            <delta_ts>2020-09-19 12:38:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216732-20200919123617.patch</filename>
            <type>text/plain</type>
            <size>50034</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2NzMxOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDIwLTA5LTE5ICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBQZXJmb3JtYW5jZS5uYXZpZ2F0aW9u
IGFuZCBQZXJmb3JtYW5jZS50aW1pbmcgYXJlIGluY29ycmVjdGx5IGV4cG9zZWQgdG8gd29ya2Vy
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE2NzMy
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwYWdl
L1BlcmZvcm1hbmNlLmlkbDoKKyAgICAgICAgT25seSBleHBvc2UgUGVyZm9ybWFuY2UubmF2aWdh
dGlvbiBhbmQgUGVyZm9ybWFuY2UudGltaW5nIHRvIHRoZSBXaW5kb3cuCisKIDIwMjAtMDktMTkg
IFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgogCiAgICAgICAgIFBlcmZvcm1hbmNlIGFu
ZCBQZXJmb3JtYW5jZU5hdmlnYXRpb24gaW50ZXJmYWNlcyBhcmUgbWlzc2luZyB0b0pTT04gb3Bl
cmF0aW9ucwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9ySlMucG0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9ySlMucG0JKHJldmlzaW9uIDI2NzMxOSkKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCSh3b3JraW5nIGNvcHkpCkBAIC0zOTcw
LDcgKzM5NzAsNyBAQCBzdWIgVG9NZXRob2ROYW1lCiAKIHN1YiBHZW5lcmF0ZVJ1bnRpbWVFbmFi
bGVDb25kaXRpb25hbFN0cmluZ0ZvckV4cG9zZWQKIHsKLSAgICBteSAoJGludGVyZmFjZSwgJGNv
bnRleHQsICRjb25qdW5jdHMsICRnbG9iYWxPYmplY3RJc1BhcmFtKSA9IEBfOworICAgIG15ICgk
aW50ZXJmYWNlLCAkY29udGV4dCwgJGdsb2JhbE9iamVjdFB0ciwgJGNvbmp1bmN0cykgPSBAXzsK
IAogICAgIGFzc2VydCgiTXVzdCBzcGVjaWZ5IHZhbHVlIGZvciBFeHBvc2VkLiIpIGlmICRjb250
ZXh0LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntFeHBvc2VkfSBlcSAiVkFMVUVfSVNfTUlTU0lORyI7
CiAKQEAgLTM5ODQsOCArMzk4NCw2IEBAIHN1YiBHZW5lcmF0ZVJ1bnRpbWVFbmFibGVDb25kaXRp
b25hbFN0cmkKICAgICAgICAgJGV4cG9zZWQgPSBAJGV4cG9zZWRbMF07CiAgICAgfQogCi0gICAg
bXkgJGdsb2JhbE9iamVjdFB0ciA9ICRnbG9iYWxPYmplY3RJc1BhcmFtID8gIiZnbG9iYWxPYmpl
Y3QiIDogImdsb2JhbE9iamVjdCgpIjsKLQogICAgIGlmICgkZXhwb3NlZCBlcSAiV2luZG93Iikg
ewogICAgICAgICBwdXNoKEAkY29uanVuY3RzLCAianNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4o
IiAuICRnbG9iYWxPYmplY3RQdHIgLiAiKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc0Rv
Y3VtZW50KCkiKTsKICAgICB9IGVsc2lmICgkZXhwb3NlZCBlcSAiV29ya2VyIikgewpAQCAtNDAw
NCwxMSArNDAwMiw5IEBAIHN1YiBHZW5lcmF0ZVJ1bnRpbWVFbmFibGVDb25kaXRpb25hbFN0cmkK
ICMgKGUuZy4gSURMSW50ZXJmYWNlLCBJRExBdHRyaWJ1dGUsIElETE9wZXJhdGlvbiwgSURMSXRl
cmFibGUsIGV0Yy4pCiBzdWIgR2VuZXJhdGVSdW50aW1lRW5hYmxlQ29uZGl0aW9uYWxTdHJpbmcK
IHsKLSAgICBteSAoJGludGVyZmFjZSwgJGNvbnRleHQsICRnbG9iYWxPYmplY3RJc1BhcmFtKSA9
IEBfOworICAgIG15ICgkaW50ZXJmYWNlLCAkY29udGV4dCwgJGdsb2JhbE9iamVjdFB0cikgPSBA
XzsKIAogICAgIG15IEBjb25qdW5jdHM7Ci0gICAgbXkgJGdsb2JhbE9iamVjdFB0ciA9ICRnbG9i
YWxPYmplY3RJc1BhcmFtID8gJGdsb2JhbE9iamVjdElzUGFyYW0gOiAiZ2xvYmFsT2JqZWN0KCki
OwotICAgIAogICAgIGlmICgkY29udGV4dC0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57U2VjdXJlQ29u
dGV4dH0pIHsKICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIlNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuaCIpOwogCkBAIC00MDIxLDcgKzQwMTcsNyBAQCBzdWIgR2VuZXJhdGVSdW50aW1lRW5hYmxl
Q29uZGl0aW9uYWxTdHJpCiAgICAgfQogCiAgICAgaWYgKCRjb250ZXh0LT5leHRlbmRlZEF0dHJp
YnV0ZXMtPntFeHBvc2VkfSkgewotICAgICAgICBHZW5lcmF0ZVJ1bnRpbWVFbmFibGVDb25kaXRp
b25hbFN0cmluZ0ZvckV4cG9zZWQoJGludGVyZmFjZSwgJGNvbnRleHQsIFxAY29uanVuY3RzKTsK
KyAgICAgICAgR2VuZXJhdGVSdW50aW1lRW5hYmxlQ29uZGl0aW9uYWxTdHJpbmdGb3JFeHBvc2Vk
KCRpbnRlcmZhY2UsICRjb250ZXh0LCAkZ2xvYmFsT2JqZWN0UHRyLCBcQGNvbmp1bmN0cyk7CiAg
ICAgfQogCiAgICAgaWYgKCRjb250ZXh0LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntFbmFibGVkRm9y
V29ybGR9KSB7CkBAIC00NTYwLDcgKzQ1NTYsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlv
bgogICAgICAgICBmb3JlYWNoIG15ICRvcGVyYXRpb25PckF0dHJpYnV0ZSAoQHJ1bnRpbWVFbmFi
bGVkUHJvcGVydGllcykgewogICAgICAgICAgICAgbXkgJGNvbmRpdGlvbmFsU3RyaW5nID0gJGNv
ZGVHZW5lcmF0b3ItPkdlbmVyYXRlQ29uZGl0aW9uYWxTdHJpbmcoJG9wZXJhdGlvbk9yQXR0cmli
dXRlKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiI2lmICR7Y29uZGl0aW9uYWxT
dHJpbmd9XG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7Ci0gICAgICAgICAgICBteSAkcnVudGlt
ZUVuYWJsZUNvbmRpdGlvbmFsU3RyaW5nID0gR2VuZXJhdGVSdW50aW1lRW5hYmxlQ29uZGl0aW9u
YWxTdHJpbmcoJGludGVyZmFjZSwgJG9wZXJhdGlvbk9yQXR0cmlidXRlKTsKKyAgICAgICAgICAg
IG15ICRydW50aW1lRW5hYmxlQ29uZGl0aW9uYWxTdHJpbmcgPSBHZW5lcmF0ZVJ1bnRpbWVFbmFi
bGVDb25kaXRpb25hbFN0cmluZygkaW50ZXJmYWNlLCAkb3BlcmF0aW9uT3JBdHRyaWJ1dGUsICJn
bG9iYWxPYmplY3QoKSIpOwogICAgICAgICAgICAgbXkgJG5hbWUgPSAkb3BlcmF0aW9uT3JBdHRy
aWJ1dGUtPm5hbWU7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoISR7
cnVudGltZUVuYWJsZUNvbmRpdGlvbmFsU3RyaW5nfSkge1xuIik7CiAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRy
dWU7XG4iKTsKQEAgLTQ1NzUsNyArNDU3MSw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9u
CiAgICAgICAgIGZvcmVhY2ggbXkgJGF0dHJpYnV0ZSAoQHJ1bnRpbWVFbmFibGVkQXR0cmlidXRl
cykgewogICAgICAgICAgICAgaWYgKE5lZWRzUnVudGltZVJlYWRXcml0ZUNoZWNrKCRpbnRlcmZh
Y2UsICRhdHRyaWJ1dGUpKSB7CiAgICAgICAgICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIldl
YkNvcmVKU0NsaWVudERhdGEuaCIpOwotICAgICAgICAgICAgICAgIG15ICRydW50aW1lRW5hYmxl
Q29uZGl0aW9uYWxTdHJpbmcgPSBHZW5lcmF0ZVJ1bnRpbWVFbmFibGVDb25kaXRpb25hbFN0cmlu
ZygkaW50ZXJmYWNlLCAkYXR0cmlidXRlKTsKKyAgICAgICAgICAgICAgICBteSAkcnVudGltZUVu
YWJsZUNvbmRpdGlvbmFsU3RyaW5nID0gR2VuZXJhdGVSdW50aW1lRW5hYmxlQ29uZGl0aW9uYWxT
dHJpbmcoJGludGVyZmFjZSwgJGF0dHJpYnV0ZSwgImdsb2JhbE9iamVjdCgpIik7CiAKICAgICAg
ICAgICAgICAgICBteSAkYXR0cmlidXRlTmFtZSA9ICRhdHRyaWJ1dGUtPm5hbWU7CiAgICAgICAg
ICAgICAgICAgbXkgJGdldHRlciA9IEdldEF0dHJpYnV0ZUdldHRlck5hbWUoJGludGVyZmFjZSwg
JGNsYXNzTmFtZSwgJGF0dHJpYnV0ZSk7CkBAIC00NzA4LDcgKzQ3MDQsNyBAQCBzdWIgR2VuZXJh
dGVJbXBsZW1lbnRhdGlvbgogICAgICAgICBuZXh0IHVubGVzcyBBdHRyaWJ1dGVTaG91bGRCZU9u
SW5zdGFuY2UoJGludGVyZmFjZSwgJGF0dHJpYnV0ZSk7CiAKICAgICAgICAgQWRkVG9JbXBsSW5j
bHVkZXMoIldlYkNvcmVKU0NsaWVudERhdGEuaCIpOwotICAgICAgICBteSAkcnVudGltZUVuYWJs
ZUNvbmRpdGlvbmFsU3RyaW5nID0gR2VuZXJhdGVSdW50aW1lRW5hYmxlQ29uZGl0aW9uYWxTdHJp
bmcoJGludGVyZmFjZSwgJGF0dHJpYnV0ZSk7CisgICAgICAgIG15ICRydW50aW1lRW5hYmxlQ29u
ZGl0aW9uYWxTdHJpbmcgPSBHZW5lcmF0ZVJ1bnRpbWVFbmFibGVDb25kaXRpb25hbFN0cmluZygk
aW50ZXJmYWNlLCAkYXR0cmlidXRlLCAiZ2xvYmFsT2JqZWN0KCkiKTsKICAgICAgICAgbXkgJGF0
dHJpYnV0ZU5hbWUgPSAkYXR0cmlidXRlLT5uYW1lOwogICAgICAgICBteSAkZ2V0dGVyID0gR2V0
QXR0cmlidXRlR2V0dGVyTmFtZSgkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkYXR0cmlidXRlKTsK
ICAgICAgICAgbXkgJHNldHRlciA9IElzUmVhZG9ubHkoJGF0dHJpYnV0ZSkgPyAibnVsbHB0ciIg
OiBHZXRBdHRyaWJ1dGVTZXR0ZXJOYW1lKCRpbnRlcmZhY2UsICRjbGFzc05hbWUsICRhdHRyaWJ1
dGUpOwpAQCAtNDc0NSw3ICs0NzQxLDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAg
ICAgICAgbmV4dCBpZiAkb3BlcmF0aW9uLT57b3ZlcmxvYWRJbmRleH0gJiYgJG9wZXJhdGlvbi0+
e292ZXJsb2FkSW5kZXh9ID4gMTsKIAogICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiV2ViQ29y
ZUpTQ2xpZW50RGF0YS5oIik7Ci0gICAgICAgIG15ICRydW50aW1lRW5hYmxlQ29uZGl0aW9uYWxT
dHJpbmcgPSBHZW5lcmF0ZVJ1bnRpbWVFbmFibGVDb25kaXRpb25hbFN0cmluZygkaW50ZXJmYWNl
LCAkb3BlcmF0aW9uKTsKKyAgICAgICAgbXkgJHJ1bnRpbWVFbmFibGVDb25kaXRpb25hbFN0cmlu
ZyA9IEdlbmVyYXRlUnVudGltZUVuYWJsZUNvbmRpdGlvbmFsU3RyaW5nKCRpbnRlcmZhY2UsICRv
cGVyYXRpb24sICJnbG9iYWxPYmplY3QoKSIpOwogICAgICAgICBteSAkZnVuY3Rpb25OYW1lID0g
JG9wZXJhdGlvbi0+bmFtZTsKICAgICAgICAgbXkgJGltcGxlbWVudGF0aW9uRnVuY3Rpb24gPSBH
ZXRGdW5jdGlvbk5hbWUoJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJG9wZXJhdGlvbik7CiAgICAg
ICAgIG15ICRmdW5jdGlvbkxlbmd0aCA9IEdldEZ1bmN0aW9uTGVuZ3RoKCRvcGVyYXRpb24pOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0RPTVdpbmRvd0NvbnN0
cnVjdG9ycy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0RPTVdpbmRvd0NvbnN0cnVjdG9ycy5pZGwJKHJldmlzaW9uIDI2NzMxOSkKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9ET01XaW5kb3dDb25zdHJ1Y3RvcnMu
aWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNyBAQAogcGFydGlhbCBpbnRlcmZhY2UgRE9N
V2luZG93IHsKICAgICBhdHRyaWJ1dGUgRXhwb3NlZFRvV29ya2VyQW5kV2luZG93Q29uc3RydWN0
b3IgRXhwb3NlZFRvV29ya2VyQW5kV2luZG93OwogICAgIGF0dHJpYnV0ZSBUZXN0Q29uZGl0aW9u
YWxseVJlYWRXcml0ZUNvbnN0cnVjdG9yIFRlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlOworICAg
IGF0dHJpYnV0ZSBUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkQ29uc3RydWN0b3Ig
VGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZDsKICAgICBhdHRyaWJ1dGUgVGVzdE5v
ZGVDb25zdHJ1Y3RvciBUZXN0Tm9kZTsKICAgICBhdHRyaWJ1dGUgVGVzdE9iakNvbnN0cnVjdG9y
IFRlc3RPYmplY3Q7CiAgICAgYXR0cmlidXRlIFRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRDb25z
dHJ1Y3RvciBUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50OwpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1N1cHBsZW1lbnRhbERlcGVuZGVuY2llcy5kZXAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1N1cHBsZW1lbnRh
bERlcGVuZGVuY2llcy5kZXAJKHJldmlzaW9uIDI2NzMxOSkKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9TdXBwbGVtZW50YWxEZXBlbmRlbmNpZXMuZGVwCSh3b3JraW5n
IGNvcHkpCkBAIC02MSw2ICs2MSw5IEBAIFdlYkRPTVRlc3REZWZhdWx0VG9KU09OLmg6IAogSlNU
ZXN0RGVmYXVsdFRvSlNPTkVudW0uaDogCiBET01UZXN0RGVmYXVsdFRvSlNPTkVudW0uaDogCiBX
ZWJET01UZXN0RGVmYXVsdFRvSlNPTkVudW0uaDogCitKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVy
ZWRCeUV4cG9zZWQuaDogCitET01UZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkLmg6
IAorV2ViRE9NVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZC5oOiAKIEpTVGVzdERl
ZmF1bHRUb0pTT05JbmRpcmVjdEluaGVyaXRhbmNlLmg6IAogRE9NVGVzdERlZmF1bHRUb0pTT05J
bmRpcmVjdEluaGVyaXRhbmNlLmg6IAogV2ViRE9NVGVzdERlZmF1bHRUb0pTT05JbmRpcmVjdElu
aGVyaXRhbmNlLmg6IApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQuaWRsCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0RGVmYXVsdFRvSlNPTkZpbHRl
cmVkQnlFeHBvc2VkLmlkbAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZC5pZGwJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSwzNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1sKKyAgICBFeHBvc2Vk
PShXaW5kb3csV29ya2VyKQorXSBpbnRlcmZhY2UgVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5
RXhwb3NlZCB7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIGxvbmcgbm9ybWFsQXR0cmlidXRlOwor
ICAgIFtFeHBvc2VkPVdpbmRvd10gcmVhZG9ubHkgYXR0cmlidXRlIGRvdWJsZSBmaWx0ZXJlZEJ5
RXhwb3NlZFdpbmRvd0F0dHJpYnV0ZTsKKyAgICBbRXhwb3NlZD1Xb3JrZXJdIHJlYWRvbmx5IGF0
dHJpYnV0ZSBET01TdHJpbmcgZmlsdGVyZWRCeUV4cG9zZWRXb3JrZXJBdHRyaWJ1dGU7CisKKyAg
ICBbRGVmYXVsdF0gb2JqZWN0IHRvSlNPTigpOworfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9Xb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9ycy5pZGwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1dvcmtlckds
b2JhbFNjb3BlQ29uc3RydWN0b3JzLmlkbAkocmV2aXNpb24gMjY3MzE5KQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1dvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3Jz
LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIHBhcnRpYWwgaW50ZXJmYWNlIFdv
cmtlckdsb2JhbFNjb3BlIHsKICAgICBhdHRyaWJ1dGUgRXhwb3NlZFRvV29ya2VyQW5kV2luZG93
Q29uc3RydWN0b3IgRXhwb3NlZFRvV29ya2VyQW5kV2luZG93OworICAgIGF0dHJpYnV0ZSBUZXN0
RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkQ29uc3RydWN0b3IgVGVzdERlZmF1bHRUb0pT
T05GaWx0ZXJlZEJ5RXhwb3NlZDsKICAgICBhdHRyaWJ1dGUgVGVzdE5vZGVDb25zdHJ1Y3RvciBU
ZXN0Tm9kZTsKICAgICBhdHRyaWJ1dGUgVGVzdE9iakNvbnN0cnVjdG9yIFRlc3RPYmplY3Q7CiAg
ICAgYXR0cmlidXRlIFRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRDb25zdHJ1Y3RvciBUZXN0UHJv
bWlzZVJlamVjdGlvbkV2ZW50OwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTRE9NV2luZG93LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNET01XaW5kb3cuY3BwCShyZXZpc2lvbiAyNjczMTkp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNET01XaW5kb3cu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiSlNET01XcmFw
cGVyQ2FjaGUuaCIKICNpbmNsdWRlICJKU0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvdy5oIgogI2lu
Y2x1ZGUgIkpTVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGUuaCIKKyNpbmNsdWRlICJKU1Rlc3RE
ZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQuaCIKICNpbmNsdWRlICJKU1Rlc3ROb2RlLmgi
CiAjaW5jbHVkZSAiSlNUZXN0T2JqLmgiCiAjaW5jbHVkZSAiSlNUZXN0UHJvbWlzZVJlamVjdGlv
bkV2ZW50LmgiCkBAIC01Niw2ICs1Nyw4IEBAIEpTQzo6RW5jb2RlZEpTVmFsdWUganNET01XaW5k
b3dFeHBvc2VkVG8KIGJvb2wgc2V0SlNET01XaW5kb3dFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3dD
b25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlND
OjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzRE9NV2luZG93VGVzdENv
bmRpdGlvbmFsbHlSZWFkV3JpdGVDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlND
OjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogYm9vbCBzZXRKU0RPTVdpbmRv
d1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVj
dCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc0RPTVdpbmRvd1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWRD
b25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlND
OjpQcm9wZXJ0eU5hbWUpOworYm9vbCBzZXRKU0RPTVdpbmRvd1Rlc3REZWZhdWx0VG9KU09ORmls
dGVyZWRCeUV4cG9zZWRDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
RE9NV2luZG93VGVzdE5vZGVDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpF
bmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogYm9vbCBzZXRKU0RPTVdpbmRvd1Rl
c3ROb2RlQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFs
dWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc0RPTVdpbmRv
d1Rlc3RPYmplY3RDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVk
SlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwpAQCAtNjcsNyArNzAsNyBAQCB1c2luZyBKU0RP
TVdpbmRvd0NvbnN0cnVjdG9yID0gSlNET01Db25zCiAKIC8qIEhhc2ggdGFibGUgKi8KIAotc3Rh
dGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTRE9NV2luZG93VGFibGVJbmRleFsx
OF0gPSB7CitzdGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNET01XaW5kb3dU
YWJsZUluZGV4WzE5XSA9IHsKICAgICB7IC0xLCAtMSB9LAogICAgIHsgMCwgMTYgfSwKICAgICB7
IC0xLCAtMSB9LApAQCAtNzcsMTUgKzgwLDE2IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFj
dEhhc2hJbmRleCBKU0QKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAt
MSwgLTEgfSwKLSAgICB7IDMsIC0xIH0sCisgICAgeyA0LCAtMSB9LAogICAgIHsgLTEsIC0xIH0s
CiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAg
eyA0LCAtMSB9LAorICAgIHsgNSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgMSwgMTcg
fSwKLSAgICB7IDIsIC0xIH0sCisgICAgeyAyLCAxOCB9LAorICAgIHsgMywgLTEgfSwKIH07CiAK
IApAQCAtOTMsMTIgKzk3LDEzIEBAIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU0RPTVdp
bmRvd1QKIHsKICAgICB7ICJFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3ciLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywg
eyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzRE9N
V2luZG93RXhwb3NlZFRvV29ya2VyQW5kV2luZG93Q29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0
YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0RPTVdpbmRvd0V4
cG9zZWRUb1dvcmtlckFuZFdpbmRvd0NvbnN0cnVjdG9yKSB9IH0sCiAgICAgeyAiVGVzdENvbmRp
dGlvbmFsbHlSZWFkV3JpdGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzRE9NV2luZG93VGVzdENvbmRpdGlvbmFsbHlS
ZWFkV3JpdGVDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlT
bG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTRE9NV2luZG93VGVzdENvbmRpdGlvbmFsbHlSZWFkV3Jp
dGVDb25zdHJ1Y3RvcikgfSB9LAorICAgIHsgIlRlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4
cG9zZWQiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90
OjpHZXRWYWx1ZUZ1bmM+KGpzRE9NV2luZG93VGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhw
b3NlZENvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6
OlB1dFZhbHVlRnVuYz4oc2V0SlNET01XaW5kb3dUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlF
eHBvc2VkQ29uc3RydWN0b3IpIH0gfSwKICAgICB7ICJUZXN0Tm9kZSIsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNET01X
aW5kb3dUZXN0Tm9kZUNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9w
ZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNET01XaW5kb3dUZXN0Tm9kZUNvbnN0cnVjdG9y
KSB9IH0sCiAgICAgeyAiVGVzdE9iamVjdCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0
aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNET01XaW5kb3dUZXN0T2JqZWN0
Q29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0
VmFsdWVGdW5jPihzZXRKU0RPTVdpbmRvd1Rlc3RPYmplY3RDb25zdHJ1Y3RvcikgfSB9LAogICAg
IHsgIlRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzRE9NV2luZG93VGVzdFBy
b21pc2VSZWplY3Rpb25FdmVudENvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQ
dXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNET01XaW5kb3dUZXN0UHJvbWlzZVJl
amVjdGlvbkV2ZW50Q29uc3RydWN0b3IpIH0gfSwKIH07CiAKLXN0YXRpYyBjb25zdCBIYXNoVGFi
bGUgSlNET01XaW5kb3dUYWJsZSA9IHsgNSwgMTUsIHRydWUsIEpTRE9NV2luZG93OjppbmZvKCks
IEpTRE9NV2luZG93VGFibGVWYWx1ZXMsIEpTRE9NV2luZG93VGFibGVJbmRleCB9Oworc3RhdGlj
IGNvbnN0IEhhc2hUYWJsZSBKU0RPTVdpbmRvd1RhYmxlID0geyA2LCAxNSwgdHJ1ZSwgSlNET01X
aW5kb3c6OmluZm8oKSwgSlNET01XaW5kb3dUYWJsZVZhbHVlcywgSlNET01XaW5kb3dUYWJsZUlu
ZGV4IH07CiB0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNET01XaW5kb3dDb25zdHJ1Y3Rvcjo6cHJvdG90
eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xv
YmFsT2JqZWN0KQogewogICAgIHJldHVybiBKU0V2ZW50VGFyZ2V0OjpnZXRDb25zdHJ1Y3Rvcih2
bSwgJmdsb2JhbE9iamVjdCk7CkBAIC0yMzAsNiArMjM1LDI5IEBAIGJvb2wgc2V0SlNET01XaW5k
b3dUZXN0Q29uZGl0aW9uYWxseVJlYWQKICAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTRE9NV2lu
ZG93Pjo6c2V0PHNldEpTRE9NV2luZG93VGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGVDb25zdHJ1
Y3RvclNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVl
LCAiVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGUiKTsKIH0KIAorc3RhdGljIGlubGluZSBKU1Zh
bHVlIGpzRE9NV2luZG93VGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZENvbnN0cnVj
dG9yR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0RPTVdpbmRv
dyYgdGhpc09iamVjdCkKK3sKKyAgICBVTlVTRURfUEFSQU0obGV4aWNhbEdsb2JhbE9iamVjdCk7
CisgICAgcmV0dXJuIEpTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZDo6Z2V0Q29u
c3RydWN0b3IoSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksICZ0aGlzT2JqZWN0KTsK
K30KKworRW5jb2RlZEpTVmFsdWUganNET01XaW5kb3dUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVk
QnlFeHBvc2VkQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQoreworICAgIHJldHVybiBJ
RExBdHRyaWJ1dGU8SlNET01XaW5kb3c+OjpnZXQ8anNET01XaW5kb3dUZXN0RGVmYXVsdFRvSlNP
TkZpbHRlcmVkQnlFeHBvc2VkQ29uc3RydWN0b3JHZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aGlzVmFsdWUsICJUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkIik7Cit9CisK
K3N0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0RPTVdpbmRvd1Rlc3REZWZhdWx0VG9KU09ORmlsdGVy
ZWRCeUV4cG9zZWRDb25zdHJ1Y3RvclNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNET01XaW5kb3cmIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCit7CisgICAg
YXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICAvLyBTaGFk
b3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3Rvci4KKyAgICByZXR1cm4gdGhpc09iamVjdC5wdXRE
aXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgTENoYXIqPigiVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZCIpLCBzdHJsZW4o
IlRlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQiKSksIHZhbHVlKTsKK30KKworYm9v
bCBzZXRKU0RPTVdpbmRvd1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWRDb25zdHJ1
Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCit7CisgICAgcmV0dXJuIElE
TEF0dHJpYnV0ZTxKU0RPTVdpbmRvdz46OnNldDxzZXRKU0RPTVdpbmRvd1Rlc3REZWZhdWx0VG9K
U09ORmlsdGVyZWRCeUV4cG9zZWRDb25zdHJ1Y3RvclNldHRlcj4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5
RXhwb3NlZCIpOworfQorCiBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNET01XaW5kb3dUZXN0Tm9k
ZUNvbnN0cnVjdG9yR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0RPTVdpbmRvdyYgdGhpc09iamVjdCkKIHsKICAgICBVTlVTRURfUEFSQU0obGV4aWNhbEdsb2Jh
bE9iamVjdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNP
TkZpbHRlcmVkQnlFeHBvc2VkLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBv
c2VkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM2OSBAQAorLyoKKyAgICBUaGlzIGZp
bGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCisgICAgVGhpcyBm
aWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1P
RElGWSEKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUg
TGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRo
aXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl
ZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBh
bG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90
LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZy
YW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBV
U0EuCisqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNUZXN0RGVmYXVsdFRv
SlNPTkZpbHRlcmVkQnlFeHBvc2VkLmgiCisKKyNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIK
KyNpbmNsdWRlICJET01Jc29TdWJzcGFjZXMuaCIKKyNpbmNsdWRlICJKU0RPTUF0dHJpYnV0ZS5o
IgorI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgorI2luY2x1ZGUgIkpTRE9NQ29uc3RydWN0b3JO
b3RDb25zdHJ1Y3RhYmxlLmgiCisjaW5jbHVkZSAiSlNET01Db252ZXJ0TnVtYmVycy5oIgorI2lu
Y2x1ZGUgIkpTRE9NQ29udmVydFN0cmluZ3MuaCIKKyNpbmNsdWRlICJKU0RPTUV4Y2VwdGlvbkhh
bmRsaW5nLmgiCisjaW5jbHVkZSAiSlNET01PcGVyYXRpb24uaCIKKyNpbmNsdWRlICJKU0RPTVdy
YXBwZXJDYWNoZS5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNs
dWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVu
Y3Rpb25Qcm90b3R5cGUuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwQW5hbHl6ZXIu
aD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CisjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuaD4KKyNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9PYmplY3RDb25zdHJ1Y3Rvci5oPgorI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL1N1YnNwYWNlSW5saW5lcy5oPgorI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KKyNpbmNs
dWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KKwor
CituYW1lc3BhY2UgV2ViQ29yZSB7Cit1c2luZyBuYW1lc3BhY2UgSlNDOworCisvLyBGdW5jdGlv
bnMKKworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdERlZmF1bHRUb0pT
T05GaWx0ZXJlZEJ5RXhwb3NlZFByb3RvdHlwZUZ1bmN0aW9uVG9KU09OKEpTQzo6SlNHbG9iYWxP
YmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworCisvLyBBdHRyaWJ1dGVzCisKK0pTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkQ29uc3RydWN0b3Io
SlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlO
YW1lKTsKK2Jvb2wgc2V0SlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkQ29uc3Ry
dWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5j
b2RlZEpTVmFsdWUpOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3REZWZhdWx0VG9KU09ORmls
dGVyZWRCeUV4cG9zZWROb3JtYWxBdHRyaWJ1dGUoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6
RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkRmlsdGVyZWRCeUV4cG9zZWRXaW5k
b3dBdHRyaWJ1dGUoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpT
Qzo6UHJvcGVydHlOYW1lKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0RGVmYXVsdFRvSlNP
TkZpbHRlcmVkQnlFeHBvc2VkRmlsdGVyZWRCeUV4cG9zZWRXb3JrZXJBdHRyaWJ1dGUoSlNDOjpK
U0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsK
KworY2xhc3MgSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkUHJvdG90eXBlIGZp
bmFsIDogcHVibGljIEpTQzo6SlNOb25GaW5hbE9iamVjdCB7CitwdWJsaWM6CisgICAgdXNpbmcg
QmFzZSA9IEpTQzo6SlNOb25GaW5hbE9iamVjdDsKKyAgICBzdGF0aWMgSlNUZXN0RGVmYXVsdFRv
SlNPTkZpbHRlcmVkQnlFeHBvc2VkUHJvdG90eXBlKiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpTRE9N
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisg
ICAgeworICAgICAgICBKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWRQcm90b3R5
cGUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0RGVmYXVsdFRv
SlNPTkZpbHRlcmVkQnlFeHBvc2VkUHJvdG90eXBlPih2bS5oZWFwKSkgSlNUZXN0RGVmYXVsdFRv
SlNPTkZpbHRlcmVkQnlFeHBvc2VkUHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVy
ZSk7CisgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgICAgICByZXR1cm4gcHRy
OworICAgIH0KKworICAgIERFQ0xBUkVfSU5GTzsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxs
VHlwZSwgSlNDOjpTdWJzcGFjZUFjY2Vzcz4KKyAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSog
c3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCisgICAgeworICAgICAgICBTVEFUSUNfQVNTRVJUX0lT
T19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWRQ
cm90b3R5cGUsIEJhc2UpOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7Cisg
ICAgfQorICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0m
IHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90
b3R5cGUpCisgICAgeworICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwg
Z2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBT
dHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCitwcml2YXRlOgorICAgIEpTVGVzdERl
ZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZFByb3RvdHlwZShKU0M6OlZNJiB2bSwgSlNDOjpK
U0dsb2JhbE9iamVjdCosIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgICAgIDogSlND
OjpKU05vbkZpbmFsT2JqZWN0KHZtLCBzdHJ1Y3R1cmUpCisgICAgeworICAgIH0KKworICAgIHZv
aWQgZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYpOworfTsKK1NUQVRJQ19BU1NFUlRfSVNPX1NVQlNQ
QUNFX1NIQVJBQkxFKEpTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZFByb3RvdHlw
ZSwgSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkUHJvdG90eXBlOjpCYXNlKTsK
KwordXNpbmcgSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkQ29uc3RydWN0b3Ig
PSBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1Rlc3REZWZhdWx0VG9KU09ORmls
dGVyZWRCeUV4cG9zZWQ+OworCit0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0RGVmYXVsdFRvSlNP
TkZpbHRlcmVkQnlFeHBvc2VkQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6
OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3sKKyAgICBV
TlVTRURfUEFSQU0odm0pOworICAgIHJldHVybiBnbG9iYWxPYmplY3QuZnVuY3Rpb25Qcm90b3R5
cGUoKTsKK30KKwordGVtcGxhdGU8PiB2b2lkIEpTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5
RXhwb3NlZENvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xv
YmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit7CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZDo6
cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250
RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSk7CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVk
QnlFeHBvc2VkIl9zKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFk
T25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKK30KKwordGVtcGxhdGU8
PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkQ29u
c3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQi
LCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpT
VGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZENvbnN0cnVjdG9yKSB9OworCisvKiBI
YXNoIHRhYmxlIGZvciBwcm90b3R5cGUgKi8KKworc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVl
IEpTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZFByb3RvdHlwZVRhYmxlVmFsdWVz
W10gPQoreworICAgIHsgImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0
YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3REZWZhdWx0VG9KU09O
RmlsdGVyZWRCeUV4cG9zZWRDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0
UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJl
ZEJ5RXhwb3NlZENvbnN0cnVjdG9yKSB9IH0sCisgICAgeyAibm9ybWFsQXR0cmlidXRlIiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5
RXhwb3NlZE5vcm1hbEF0dHJpYnV0ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVy
dHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKKyAgICB7ICJmaWx0ZXJlZEJ5RXhwb3NlZFdp
bmRvd0F0dHJpYnV0ZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGlu
dHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3REZWZh
dWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWRGaWx0ZXJlZEJ5RXhwb3NlZFdpbmRvd0F0dHJpYnV0
ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+
KDApIH0gfSwKKyAgICB7ICJmaWx0ZXJlZEJ5RXhwb3NlZFdvcmtlckF0dHJpYnV0ZSIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFBy
b3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4
cG9zZWRGaWx0ZXJlZEJ5RXhwb3NlZFdvcmtlckF0dHJpYnV0ZSksIChpbnRwdHJfdCkgc3RhdGlj
X2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKKyAgICB7ICJ0b0pT
T04iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rp
b24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rp
b24+KGpzVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZFByb3RvdHlwZUZ1bmN0aW9u
VG9KU09OKSwgKGludHB0cl90KSAoMCkgfSB9LAorfTsKKworY29uc3QgQ2xhc3NJbmZvIEpTVGVz
dERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZFByb3RvdHlwZTo6c19pbmZvID0geyAiVGVz
dERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZCIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIs
IG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVk
QnlFeHBvc2VkUHJvdG90eXBlKSB9OworCit2b2lkIEpTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJl
ZEJ5RXhwb3NlZFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQoreworICAgIEJhc2U6
OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICByZWlmeVN0YXRpY1Byb3BlcnRpZXModm0sIEpTVGVz
dERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZDo6aW5mbygpLCBKU1Rlc3REZWZhdWx0VG9K
U09ORmlsdGVyZWRCeUV4cG9zZWRQcm90b3R5cGVUYWJsZVZhbHVlcywgKnRoaXMpOworICAgIGJv
b2wgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IGZhbHNlOworICAgIGlmICghanNDYXN0
PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250
ZXh0KCktPmlzRG9jdW1lbnQoKSkgeworICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0
aWVzID0gdHJ1ZTsKKyAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oImZpbHRlcmVkQnlFeHBv
c2VkV2luZG93QXR0cmlidXRlIiksIHN0cmxlbigiZmlsdGVyZWRCeUV4cG9zZWRXaW5kb3dBdHRy
aWJ1dGUiKSk7CisgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwg
Vk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKKyAgICAgICAgRGVs
ZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0
aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKKyAgICB9CisgICAgaWYg
KCFqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKS0+aXNXb3JrZXJHbG9iYWxTY29wZSgpKSB7CisgICAgICAgIGhhc0Rpc2Fi
bGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOworICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9
IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIq
PigiZmlsdGVyZWRCeUV4cG9zZWRXb3JrZXJBdHRyaWJ1dGUiKSwgc3RybGVuKCJmaWx0ZXJlZEJ5
RXhwb3NlZFdvcmtlckF0dHJpYnV0ZSIpKTsKKyAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9k
ZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFi
bGUpOworICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgSlNPYmplY3Q6
OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3Qp
OworICAgIH0KKyAgICBpZiAoaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyAmJiBzdHJ1Y3R1
cmUoKS0+aXNEaWN0aW9uYXJ5KCkpCisgICAgICAgIGZsYXR0ZW5EaWN0aW9uYXJ5T2JqZWN0KHZt
KTsKKyAgICBKU0NfVE9fU1RSSU5HX1RBR19XSVRIT1VUX1RSQU5TSVRJT04oKTsKK30KKworY29u
c3QgQ2xhc3NJbmZvIEpTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZDo6c19pbmZv
ID0geyAiVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZCIsICZCYXNlOjpzX2luZm8s
IG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0RGVmYXVsdFRvSlNP
TkZpbHRlcmVkQnlFeHBvc2VkKSB9OworCitKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4
cG9zZWQ6OkpTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZChTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgUmVmPFRlc3REZWZhdWx0
VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQ+JiYgaW1wbCkKKyAgICA6IEpTRE9NV3JhcHBlcjxUZXN0
RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkPihzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCwg
V1RGTW92ZShpbXBsKSkKK3sKK30KKwordm9pZCBKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRC
eUV4cG9zZWQ6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVh
dGlvbih2bSk7CisgICAgQVNTRVJUKGluaGVyaXRzKHZtLCBpbmZvKCkpKTsKKworICAgIHN0YXRp
Y19hc3NlcnQoIXN0ZDo6aXNfYmFzZV9vZjxBY3RpdmVET01PYmplY3QsIFRlc3REZWZhdWx0VG9K
U09ORmlsdGVyZWRCeUV4cG9zZWQ+Ojp2YWx1ZSwgIkludGVyZmFjZSBpcyBub3QgbWFya2VkIGFz
IFtBY3RpdmVET01PYmplY3RdIGV2ZW4gdGhvdWdoIGltcGxlbWVudGF0aW9uIGNsYXNzIHN1YmNs
YXNzZXMgQWN0aXZlRE9NT2JqZWN0LiIpOworCit9CisKK0pTT2JqZWN0KiBKU1Rlc3REZWZhdWx0
VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQ6OmNyZWF0ZVByb3RvdHlwZShWTSYgdm0sIEpTRE9NR2xv
YmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit7CisgICAgcmV0dXJuIEpTVGVzdERlZmF1bHRUb0pT
T05GaWx0ZXJlZEJ5RXhwb3NlZFByb3RvdHlwZTo6Y3JlYXRlKHZtLCAmZ2xvYmFsT2JqZWN0LCBK
U1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWRQcm90b3R5cGU6OmNyZWF0ZVN0cnVj
dHVyZSh2bSwgJmdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0Lm9iamVjdFByb3RvdHlwZSgpKSk7
Cit9CisKK0pTT2JqZWN0KiBKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQ6OnBy
b3RvdHlwZShWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit7CisgICAg
cmV0dXJuIGdldERPTVByb3RvdHlwZTxKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9z
ZWQ+KHZtLCBnbG9iYWxPYmplY3QpOworfQorCitKU1ZhbHVlIEpTVGVzdERlZmF1bHRUb0pTT05G
aWx0ZXJlZEJ5RXhwb3NlZDo6Z2V0Q29uc3RydWN0b3IoVk0mIHZtLCBjb25zdCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rl
c3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWRDb25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8
Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKK30KKwordm9pZCBKU1Rl
c3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQ6OmRlc3Ryb3koSlNDOjpKU0NlbGwqIGNl
bGwpCit7CisgICAgSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkKiB0aGlzT2Jq
ZWN0ID0gc3RhdGljX2Nhc3Q8SlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkKj4o
Y2VsbCk7CisgICAgdGhpc09iamVjdC0+SlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBv
c2VkOjp+SlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkKCk7Cit9CisKK3RlbXBs
YXRlPD4gaW5saW5lIEpTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZCogSURMQXR0
cmlidXRlPEpTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZD46OmNhc3QoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkK
K3sKKyAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRC
eUV4cG9zZWQqPihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgSlNWYWx1ZTo6ZGVj
b2RlKHRoaXNWYWx1ZSkpOworfQorCit0ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3REZWZhdWx0VG9K
U09ORmlsdGVyZWRCeUV4cG9zZWQqIElETE9wZXJhdGlvbjxKU1Rlc3REZWZhdWx0VG9KU09ORmls
dGVyZWRCeUV4cG9zZWQ+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUmIGNhbGxGcmFtZSkKK3sKKyAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rl
c3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQqPihKU0M6OmdldFZNKCZsZXhpY2FsR2xv
YmFsT2JqZWN0KSwgY2FsbEZyYW1lLnRoaXNWYWx1ZSgpKTsKK30KKworRW5jb2RlZEpTVmFsdWUg
anNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkQ29uc3RydWN0b3IoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJv
cGVydHlOYW1lKQoreworICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVj
dCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAg
YXV0byogcHJvdG90eXBlID0ganNEeW5hbWljQ2FzdDxKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVy
ZWRCeUV4cG9zZWRQcm90b3R5cGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwor
ICAgIGlmIChVTkxJS0VMWSghcHJvdG90eXBlKSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSk7CisgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQ6OmdldENvbnN0
cnVjdG9yKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCksIHByb3RvdHlwZS0+Z2xvYmFs
T2JqZWN0KCkpKTsKK30KKworYm9vbCBzZXRKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4
cG9zZWRDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCit7Cisg
ICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBhdXRvKiBwcm90b3R5cGUg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZFByb3Rv
dHlwZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgaWYgKFVOTElLRUxZ
KCFwcm90b3R5cGUpKSB7CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgLy8g
U2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IKKyAgICByZXR1cm4gcHJvdG90eXBlLT5w
dXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZFZhbHVlKSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3REZWZh
dWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWROb3JtYWxBdHRyaWJ1dGVHZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5
RXhwb3NlZCYgdGhpc09iamVjdCkKK3sKKyAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKKyAgICBSRUxF
QVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTG9uZz4obGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgaW1wbC5ub3JtYWxBdHRyaWJ1dGUoKSkpKTsKK30KKworRW5jb2Rl
ZEpTVmFsdWUganNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkTm9ybWFsQXR0cmli
dXRlKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKK3sKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVz
dERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZD46OmdldDxqc1Rlc3REZWZhdWx0VG9KU09O
RmlsdGVyZWRCeUV4cG9zZWROb3JtYWxBdHRyaWJ1dGVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJl
aGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJub3JtYWxB
dHRyaWJ1dGUiKTsKK30KKworc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERlZmF1bHRUb0pT
T05GaWx0ZXJlZEJ5RXhwb3NlZEZpbHRlcmVkQnlFeHBvc2VkV2luZG93QXR0cmlidXRlR2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3REZWZhdWx0VG9KU09O
RmlsdGVyZWRCeUV4cG9zZWQmIHRoaXNPYmplY3QpCit7CisgICAgYXV0byYgdm0gPSBKU0M6Omdl
dFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKyAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7
CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETERvdWJsZT4obGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5maWx0ZXJlZEJ5RXhwb3NlZFdpbmRv
d0F0dHJpYnV0ZSgpKSkpOworfQorCitFbmNvZGVkSlNWYWx1ZSBqc1Rlc3REZWZhdWx0VG9KU09O
RmlsdGVyZWRCeUV4cG9zZWRGaWx0ZXJlZEJ5RXhwb3NlZFdpbmRvd0F0dHJpYnV0ZShKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQ
cm9wZXJ0eU5hbWUpCit7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3REZWZhdWx0VG9K
U09ORmlsdGVyZWRCeUV4cG9zZWQ+OjpnZXQ8anNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlF
eHBvc2VkRmlsdGVyZWRCeUV4cG9zZWRXaW5kb3dBdHRyaWJ1dGVHZXR0ZXIsIENhc3RlZFRoaXNF
cnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJm
aWx0ZXJlZEJ5RXhwb3NlZFdpbmRvd0F0dHJpYnV0ZSIpOworfQorCitzdGF0aWMgaW5saW5lIEpT
VmFsdWUganNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkRmlsdGVyZWRCeUV4cG9z
ZWRXb3JrZXJBdHRyaWJ1dGVHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZCYgdGhpc09iamVjdCkKK3sK
KyAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOworICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIGF1dG8mIGltcGwg
PSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29w
ZSwgKHRvSlM8SURMRE9NU3RyaW5nPihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBp
bXBsLmZpbHRlcmVkQnlFeHBvc2VkV29ya2VyQXR0cmlidXRlKCkpKSk7Cit9CisKK0VuY29kZWRK
U1ZhbHVlIGpzVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZEZpbHRlcmVkQnlFeHBv
c2VkV29ya2VyQXR0cmlidXRlKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKK3sKKyAgICByZXR1cm4gSURM
QXR0cmlidXRlPEpTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZD46OmdldDxqc1Rl
c3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWRGaWx0ZXJlZEJ5RXhwb3NlZFdvcmtlckF0
dHJpYnV0ZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImZpbHRlcmVkQnlFeHBvc2VkV29ya2VyQXR0cmlidXRl
Iik7Cit9CisKK3N0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0RGVmYXVsdFRvSlNP
TkZpbHRlcmVkQnlFeHBvc2VkUHJvdG90eXBlRnVuY3Rpb25Ub0pTT05Cb2R5KEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqLCBKU1Rlc3REZWZhdWx0VG9KU09O
RmlsdGVyZWRCeUV4cG9zZWQqIGNhc3RlZFRoaXMpCit7CisgICAgYXV0byYgdm0gPSBKU0M6Omdl
dFZNKGxleGljYWxHbG9iYWxPYmplY3QpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKKyAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOworICAgIGF1dG8qIHJlc3VsdCA9IGNvbnN0
cnVjdEVtcHR5T2JqZWN0KGxleGljYWxHbG9iYWxPYmplY3QsIGNhc3RlZFRoaXMtPmdsb2JhbE9i
amVjdCgpLT5vYmplY3RQcm90b3R5cGUoKSk7CisgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJub3JtYWxBdHRyaWJ1dGUiKSwgdG9KUzxJRExMb25n
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5ub3JtYWxBdHRyaWJ1dGUo
KSkpOworICAgIGlmIChqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihjYXN0ZWRUaGlzLT5nbG9i
YWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNEb2N1bWVudCgpKSB7Cisg
ICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAi
ZmlsdGVyZWRCeUV4cG9zZWRXaW5kb3dBdHRyaWJ1dGUiKSwgdG9KUzxJRExEb3VibGU+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmZpbHRlcmVkQnlFeHBvc2VkV2luZG93
QXR0cmlidXRlKCkpKTsKKyAgICB9CisgICAgaWYgKGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+
KGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5p
c1dvcmtlckdsb2JhbFNjb3BlKCkpIHsKKyAgICAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJmaWx0ZXJlZEJ5RXhwb3NlZFdvcmtlckF0dHJpYnV0
ZSIpLCB0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IGltcGwuZmlsdGVyZWRCeUV4cG9zZWRXb3JrZXJBdHRyaWJ1dGUoKSkpOworICAgIH0KKyAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkUHJvdG90eXBlRnVu
Y3Rpb25Ub0pTT04oSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKQoreworICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0RGVmYXVsdFRv
SlNPTkZpbHRlcmVkQnlFeHBvc2VkPjo6Y2FsbDxqc1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRC
eUV4cG9zZWRQcm90b3R5cGVGdW5jdGlvblRvSlNPTkJvZHk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCAqY2FsbEZyYW1lLCAidG9KU09OIik7Cit9CisKK0pTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdERl
ZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZDo6c3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZt
KQoreworICAgIGF1dG8mIGNsaWVudERhdGEgPSAqc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEq
Pih2bS5jbGllbnREYXRhKTsKKyAgICBhdXRvJiBzcGFjZXMgPSBjbGllbnREYXRhLnN1YnNwYWNl
cygpOworICAgIGlmIChhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERlZmF1
bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZC5nZXQoKSkKKyAgICAgICAgcmV0dXJuIHNwYWNlOwor
ICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9i
amVjdCwgSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkPiB8fCAhSlNUZXN0RGVm
YXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkOjpuZWVkc0Rlc3RydWN0aW9uKTsKKyAgICBpZiBj
b25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpT
VGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZD4pCisgICAgICAgIHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZCA9IG1ha2VVbmlxdWU8
SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9i
amVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBv
c2VkKTsKKyAgICBlbHNlCisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERlZmF1bHRU
b0pTT05GaWx0ZXJlZEJ5RXhwb3NlZCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJT
UEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdERlZmF1
bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZCk7CisgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQuZ2V0KCk7CitJR05P
UkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQorSUdOT1JFX1dBUk5JTkdTX0JF
R0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCisgICAgaWYgKCZKU1Rlc3REZWZhdWx0VG9KU09O
RmlsdGVyZWRCeUV4cG9zZWQ6OnZpc2l0T3V0cHV0Q29uc3RyYWludHMgIT0gJkpTQzo6SlNDZWxs
Ojp2aXNpdE91dHB1dENvbnN0cmFpbnRzKQorICAgICAgICBjbGllbnREYXRhLm91dHB1dENvbnN0
cmFpbnRTcGFjZXMoKS5hcHBlbmQoc3BhY2UpOworSUdOT1JFX1dBUk5JTkdTX0VORAorSUdOT1JF
X1dBUk5JTkdTX0VORAorICAgIHJldHVybiBzcGFjZTsKK30KKwordm9pZCBKU1Rlc3REZWZhdWx0
VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQ6OmFuYWx5emVIZWFwKEpTQ2VsbCogY2VsbCwgSGVhcEFu
YWx5emVyJiBhbmFseXplcikKK3sKKyAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVz
dERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZCo+KGNlbGwpOworICAgIGFuYWx5emVyLnNl
dFdyYXBwZWRPYmplY3RGb3JDZWxsKGNlbGwsICZ0aGlzT2JqZWN0LT53cmFwcGVkKCkpOworICAg
IGlmICh0aGlzT2JqZWN0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCisgICAgICAgIGFuYWx5
emVyLnNldExhYmVsRm9yQ2VsbChjZWxsLCAidXJsICIgKyB0aGlzT2JqZWN0LT5zY3JpcHRFeGVj
dXRpb25Db250ZXh0KCktPnVybCgpLnN0cmluZygpKTsKKyAgICBCYXNlOjphbmFseXplSGVhcChj
ZWxsLCBhbmFseXplcik7Cit9CisKK2Jvb2wgSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlF
eHBvc2VkT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6
VW5rbm93bj4gaGFuZGxlLCB2b2lkKiwgU2xvdFZpc2l0b3ImIHZpc2l0b3IsIGNvbnN0IGNoYXIq
KiByZWFzb24pCit7CisgICAgVU5VU0VEX1BBUkFNKGhhbmRsZSk7CisgICAgVU5VU0VEX1BBUkFN
KHZpc2l0b3IpOworICAgIFVOVVNFRF9QQVJBTShyZWFzb24pOworICAgIHJldHVybiBmYWxzZTsK
K30KKwordm9pZCBKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWRPd25lcjo6Zmlu
YWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqIGNvbnRleHQpCit7
CisgICAgYXV0byoganNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkID0gc3RhdGlj
X2Nhc3Q8SlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkKj4oaGFuZGxlLnNsb3Qo
KS0+YXNDZWxsKCkpOworICAgIGF1dG8mIHdvcmxkID0gKnN0YXRpY19jYXN0PERPTVdyYXBwZXJX
b3JsZCo+KGNvbnRleHQpOworICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxkLCAmanNUZXN0RGVmYXVs
dFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkLT53cmFwcGVkKCksIGpzVGVzdERlZmF1bHRUb0pTT05G
aWx0ZXJlZEJ5RXhwb3NlZCk7Cit9CisKKyNpZiBFTkFCTEUoQklORElOR19JTlRFR1JJVFkpCisj
aWYgUExBVEZPUk0oV0lOKQorI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQ0ODMpCitleHRlcm4g
IkMiIHsgZXh0ZXJuIHZvaWQgKCpjb25zdCBfX2lkZW50aWZpZXIoIj8/XzdUZXN0RGVmYXVsdFRv
SlNPTkZpbHRlcmVkQnlFeHBvc2VkQFdlYkNvcmVAQDZCQCIpW10pKCk7IH0KKyNlbHNlCitleHRl
cm4gIkMiIHsgZXh0ZXJuIHZvaWQqIF9aVFZON1dlYkNvcmUzNFRlc3REZWZhdWx0VG9KU09ORmls
dGVyZWRCeUV4cG9zZWRFW107IH0KKyNlbmRpZgorI2VuZGlmCisKK0pTQzo6SlNWYWx1ZSB0b0pT
TmV3bHlDcmVhdGVkKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBSZWY8VGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZD4mJiBpbXBs
KQoreworCisjaWYgRU5BQkxFKEJJTkRJTkdfSU5URUdSSVRZKQorICAgIGNvbnN0IHZvaWQqIGFj
dHVhbFZUYWJsZVBvaW50ZXIgPSBnZXRWVGFibGVQb2ludGVyKGltcGwucHRyKCkpOworI2lmIFBM
QVRGT1JNKFdJTikKKyAgICB2b2lkKiBleHBlY3RlZFZUYWJsZVBvaW50ZXIgPSBfX2lkZW50aWZp
ZXIoIj8/XzdUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkQFdlYkNvcmVAQDZCQCIp
OworI2Vsc2UKKyAgICB2b2lkKiBleHBlY3RlZFZUYWJsZVBvaW50ZXIgPSAmX1pUVk43V2ViQ29y
ZTM0VGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZEVbMl07CisjZW5kaWYKKworICAg
IC8vIElmIHRoaXMgZmFpbHMgVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZCBkb2Vz
IG5vdCBoYXZlIGEgdnRhYmxlLCBzbyB5b3UgbmVlZCB0byBhZGQgdGhlCisgICAgLy8gSW1wbGVt
ZW50YXRpb25MYWNrc1ZUYWJsZSBhdHRyaWJ1dGUgdG8gdGhlIGludGVyZmFjZSBkZWZpbml0aW9u
CisgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3BvbHltb3JwaGljPFRlc3REZWZhdWx0VG9KU09O
RmlsdGVyZWRCeUV4cG9zZWQ+Ojp2YWx1ZSwgIlRlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4
cG9zZWQgaXMgbm90IHBvbHltb3JwaGljIik7CisKKyAgICAvLyBJZiB5b3UgaGl0IHRoaXMgYXNz
ZXJ0aW9uIHlvdSBlaXRoZXIgaGF2ZSBhIHVzZSBhZnRlciBmcmVlIGJ1Zywgb3IKKyAgICAvLyBU
ZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkIGhhcyBzdWJjbGFzc2VzLiBJZiBUZXN0
RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkIGhhcyBzdWJjbGFzc2VzIHRoYXQgZ2V0IHBh
c3NlZAorICAgIC8vIHRvIHRvSlMoKSB3ZSBjdXJyZW50bHkgcmVxdWlyZSBUZXN0RGVmYXVsdFRv
SlNPTkZpbHRlcmVkQnlFeHBvc2VkIHlvdSB0byBvcHQgb3V0IG9mIGJpbmRpbmcgaGFyZGVuaW5n
CisgICAgLy8gYnkgYWRkaW5nIHRoZSBTa2lwVlRhYmxlVmFsaWRhdGlvbiBhdHRyaWJ1dGUgdG8g
dGhlIGludGVyZmFjZSBJREwgZGVmaW5pdGlvbgorICAgIFJFTEVBU0VfQVNTRVJUKGFjdHVhbFZU
YWJsZVBvaW50ZXIgPT0gZXhwZWN0ZWRWVGFibGVQb2ludGVyKTsKKyNlbmRpZgorICAgIHJldHVy
biBjcmVhdGVXcmFwcGVyPFRlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQ+KGdsb2Jh
bE9iamVjdCwgV1RGTW92ZShpbXBsKSk7Cit9CisKK0pTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6SlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFRlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQmIGltcGwpCit7Cisg
ICAgcmV0dXJuIHdyYXAobGV4aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LCBpbXBsKTsK
K30KKworVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZCogSlNUZXN0RGVmYXVsdFRv
SlNPTkZpbHRlcmVkQnlFeHBvc2VkOjp0b1dyYXBwZWQoSlNDOjpWTSYgdm0sIEpTQzo6SlNWYWx1
ZSB2YWx1ZSkKK3sKKyAgICBpZiAoYXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkKj4odm0sIHZhbHVlKSkKKyAgICAgICAgcmV0
dXJuICZ3cmFwcGVyLT53cmFwcGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK30KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0
VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBv
c2VkLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsOTMgQEAKKy8qCisgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdl
YktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgorICAgIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0
ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCisKKyAgICBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisg
ICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAg
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl
dGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJh
cnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo
IEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpbmNsdWRlICJKU0RPTVdyYXBwZXIuaCIKKyNpbmNsdWRlICJUZXN0RGVmYXVsdFRv
SlNPTkZpbHRlcmVkQnlFeHBvc2VkLmgiCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRl
cmVkQnlFeHBvc2VkIDogcHVibGljIEpTRE9NV3JhcHBlcjxUZXN0RGVmYXVsdFRvSlNPTkZpbHRl
cmVkQnlFeHBvc2VkPiB7CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IEpTRE9NV3JhcHBlcjxU
ZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkPjsKKyAgICBzdGF0aWMgSlNUZXN0RGVm
YXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkKiBjcmVhdGUoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3REZWZhdWx0VG9K
U09ORmlsdGVyZWRCeUV4cG9zZWQ+JiYgaW1wbCkKKyAgICB7CisgICAgICAgIEpTVGVzdERlZmF1
bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZCogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9j
YXRlQ2VsbDxKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQ+KGdsb2JhbE9iamVj
dC0+dm0oKS5oZWFwKSkgSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkKHN0cnVj
dHVyZSwgKmdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7CisgICAgICAgIHB0ci0+ZmluaXNo
Q3JlYXRpb24oZ2xvYmFsT2JqZWN0LT52bSgpKTsKKyAgICAgICAgcmV0dXJuIHB0cjsKKyAgICB9
CisKKyAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogY3JlYXRlUHJvdG90eXBlKEpTQzo6Vk0mLCBK
U0RPTUdsb2JhbE9iamVjdCYpOworICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBwcm90b3R5cGUo
SlNDOjpWTSYsIEpTRE9NR2xvYmFsT2JqZWN0Jik7CisgICAgc3RhdGljIFRlc3REZWZhdWx0VG9K
U09ORmlsdGVyZWRCeUV4cG9zZWQqIHRvV3JhcHBlZChKU0M6OlZNJiwgSlNDOjpKU1ZhbHVlKTsK
KyAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQzo6SlNDZWxsKik7CisKKyAgICBERUNMQVJFX0lO
Rk87CisKKyAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZN
JiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJv
dG90eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0s
IGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwg
U3RydWN0dXJlRmxhZ3MpLCBpbmZvKCksIEpTQzo6Tm9uQXJyYXkpOworICAgIH0KKworICAgIHN0
YXRpYyBKU0M6OkpTVmFsdWUgZ2V0Q29uc3RydWN0b3IoSlNDOjpWTSYsIGNvbnN0IEpTQzo6SlNH
bG9iYWxPYmplY3QqKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSwgSlNDOjpTdWJzcGFjZUFjY2Vz
cyBtb2RlPiBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0p
CisgICAgeworICAgICAgICBpZiBjb25zdGV4cHIgKG1vZGUgPT0gSlNDOjpTdWJzcGFjZUFjY2Vz
czo6Q29uY3VycmVudGx5KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJl
dHVybiBzdWJzcGFjZUZvckltcGwodm0pOworICAgIH0KKyAgICBzdGF0aWMgSlNDOjpJc29TdWJz
cGFjZSogc3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKTsKKyAgICBzdGF0aWMgdm9pZCBhbmFs
eXplSGVhcChKU0NlbGwqLCBKU0M6OkhlYXBBbmFseXplciYpOworcHJvdGVjdGVkOgorICAgIEpT
VGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZChKU0M6OlN0cnVjdHVyZSosIEpTRE9N
R2xvYmFsT2JqZWN0JiwgUmVmPFRlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQ+JiYp
OworCisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJik7Cit9OworCitjbGFzcyBKU1Rl
c3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWRPd25lciA6IHB1YmxpYyBKU0M6OldlYWtI
YW5kbGVPd25lciB7CitwdWJsaWM6CisgICAgdmlydHVhbCBib29sIGlzUmVhY2hhYmxlRnJvbU9w
YXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4sIHZvaWQqIGNvbnRleHQsIEpTQzo6
U2xvdFZpc2l0b3ImLCBjb25zdCBjaGFyKiopOworICAgIHZpcnR1YWwgdm9pZCBmaW5hbGl6ZShK
U0M6OkhhbmRsZTxKU0M6OlVua25vd24+LCB2b2lkKiBjb250ZXh0KTsKK307CisKK2lubGluZSBK
U0M6OldlYWtIYW5kbGVPd25lciogd3JhcHBlck93bmVyKERPTVdyYXBwZXJXb3JsZCYsIFRlc3RE
ZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQqKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWRPd25lcj4gb3duZXI7Cisg
ICAgcmV0dXJuICZvd25lci5nZXQoKTsKK30KKworaW5saW5lIHZvaWQqIHdyYXBwZXJLZXkoVGVz
dERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZCogd3JhcHBhYmxlT2JqZWN0KQoreworICAg
IHJldHVybiB3cmFwcGFibGVPYmplY3Q7Cit9CisKK0pTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6SlNH
bG9iYWxPYmplY3QqLCBKU0RPTUdsb2JhbE9iamVjdCosIFRlc3REZWZhdWx0VG9KU09ORmlsdGVy
ZWRCeUV4cG9zZWQmKTsKK2lubGluZSBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkKiBpbXBsKSB7IHJldHVybiBpbXBs
ID8gdG9KUyhsZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QsICppbXBsKSA6IEpTQzo6
anNOdWxsKCk7IH0KK0pTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6SlNHbG9iYWxP
YmplY3QqLCBKU0RPTUdsb2JhbE9iamVjdCosIFJlZjxUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVk
QnlFeHBvc2VkPiYmKTsKK2lubGluZSBKU0M6OkpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChKU0M6
OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0RPTUdsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBSZWZQdHI8VGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZD4m
JiBpbXBsKSB7IHJldHVybiBpbXBsID8gdG9KU05ld2x5Q3JlYXRlZChsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBnbG9iYWxPYmplY3QsIGltcGwucmVsZWFzZU5vbk51bGwoKSkgOiBKU0M6OmpzTnVsbCgp
OyB9CisKK3RlbXBsYXRlPD4gc3RydWN0IEpTRE9NV3JhcHBlckNvbnZlcnRlclRyYWl0czxUZXN0
RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkPiB7CisgICAgdXNpbmcgV3JhcHBlckNsYXNz
ID0gSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkOworICAgIHVzaW5nIFRvV3Jh
cHBlZFJldHVyblR5cGUgPSBUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkKjsKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1dvcmtlckdsb2JhbFNjb3BlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNXb3JrZXJHbG9iYWxTY29w
ZS5jcHAJKHJldmlzaW9uIDI2NzMxOSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1dvcmtlckdsb2JhbFNjb3BlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjks
NiArMjksNyBAQAogI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKICNpbmNsdWRl
ICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIkpTRXhwb3NlZFRvV29ya2VyQW5kV2lu
ZG93LmgiCisjaW5jbHVkZSAiSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkLmgi
CiAjaW5jbHVkZSAiSlNUZXN0Tm9kZS5oIgogI2luY2x1ZGUgIkpTVGVzdE9iai5oIgogI2luY2x1
ZGUgIkpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudC5oIgpAQCAtNTMsNiArNTQsOCBAQCBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzV29ya2VyR2xvYmFsU2NvcGVDCiBib29sIHNldEpTV29ya2VyR2xv
YmFsU2NvcGVDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNW
YWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzV29ya2Vy
R2xvYmFsU2NvcGVFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3dDb25zdHJ1Y3RvcihKU0M6OkpTR2xv
YmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogYm9v
bCBzZXRKU1dvcmtlckdsb2JhbFNjb3BlRXhwb3NlZFRvV29ya2VyQW5kV2luZG93Q29uc3RydWN0
b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUpOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1dvcmtlckdsb2JhbFNjb3BlVGVzdERl
ZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZENvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmpl
Y3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Citib29sIHNldEpT
V29ya2VyR2xvYmFsU2NvcGVUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkQ29uc3Ry
dWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5j
b2RlZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1dvcmtlckdsb2JhbFNjb3BlVGVz
dE5vZGVDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1
ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogYm9vbCBzZXRKU1dvcmtlckdsb2JhbFNjb3BlVGVzdE5v
ZGVDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwg
SlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzV29ya2VyR2xvYmFs
U2NvcGVUZXN0T2JqZWN0Q29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5j
b2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKQEAgLTY0LDE2ICs2NywyNCBAQCB1c2lu
ZyBKU1dvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3IgPSBKCiAKIC8qIEhhc2ggdGFibGUgKi8K
IAotc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTV29ya2VyR2xvYmFsU2Nv
cGVUYWJsZUluZGV4WzEwXSA9IHsKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRl
eCBKU1dvcmtlckdsb2JhbFNjb3BlVGFibGVJbmRleFsxOF0gPSB7CisgICAgeyAtMSwgLTEgfSwK
KyAgICB7IDAsIDE2IH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAogICAgIHsg
LTEsIC0xIH0sCi0gICAgeyAwLCA4IH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9
LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IDMsIC0xIH0sCiAgICAg
eyAtMSwgLTEgfSwKLSAgICB7IDEsIDkgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0x
IH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IDQsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAg
ICB7IDEsIDE3IH0sCiAgICAgeyAyLCAtMSB9LAogfTsKIApAQCAtODEsMTIgKzkyLDEzIEBAIHN0
YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1cKIHN0YXRpYyBjb25zdCBIYXNo
VGFibGVWYWx1ZSBKU1dvcmtlckdsb2JhbFNjb3BlVGFibGVWYWx1ZXNbXSA9CiB7CiAgICAgeyAi
RXhwb3NlZFRvV29ya2VyQW5kV2luZG93Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRp
Y19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1dvcmtlckdsb2JhbFNjb3BlRXhw
b3NlZFRvV29ya2VyQW5kV2luZG93Q29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0
PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1dvcmtlckdsb2JhbFNjb3BlRXhw
b3NlZFRvV29ya2VyQW5kV2luZG93Q29uc3RydWN0b3IpIH0gfSwKKyAgICB7ICJUZXN0RGVmYXVs
dFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRp
Y19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1dvcmtlckdsb2JhbFNjb3BlVGVz
dERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZENvbnN0cnVjdG9yKSwgKGludHB0cl90KSBz
dGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNXb3JrZXJHbG9i
YWxTY29wZVRlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWRDb25zdHJ1Y3RvcikgfSB9
LAogICAgIHsgIlRlc3ROb2RlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0
PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1dvcmtlckdsb2JhbFNjb3BlVGVzdE5vZGVD
b25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRW
YWx1ZUZ1bmM+KHNldEpTV29ya2VyR2xvYmFsU2NvcGVUZXN0Tm9kZUNvbnN0cnVjdG9yKSB9IH0s
CiAgICAgeyAiVGVzdE9iamVjdCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2Fz
dDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNXb3JrZXJHbG9iYWxTY29wZVRlc3RPYmpl
Y3RDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KHNldEpTV29ya2VyR2xvYmFsU2NvcGVUZXN0T2JqZWN0Q29uc3RydWN0b3Ip
IH0gfSwKICAgICB7ICJUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Iiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1dvcmtl
ckdsb2JhbFNjb3BlVGVzdFByb21pc2VSZWplY3Rpb25FdmVudENvbnN0cnVjdG9yKSwgKGludHB0
cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNXb3Jr
ZXJHbG9iYWxTY29wZVRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRDb25zdHJ1Y3RvcikgfSB9LAog
fTsKIAotc3RhdGljIGNvbnN0IEhhc2hUYWJsZSBKU1dvcmtlckdsb2JhbFNjb3BlVGFibGUgPSB7
IDQsIDcsIHRydWUsIEpTV29ya2VyR2xvYmFsU2NvcGU6OmluZm8oKSwgSlNXb3JrZXJHbG9iYWxT
Y29wZVRhYmxlVmFsdWVzLCBKU1dvcmtlckdsb2JhbFNjb3BlVGFibGVJbmRleCB9Oworc3RhdGlj
IGNvbnN0IEhhc2hUYWJsZSBKU1dvcmtlckdsb2JhbFNjb3BlVGFibGUgPSB7IDUsIDE1LCB0cnVl
LCBKU1dvcmtlckdsb2JhbFNjb3BlOjppbmZvKCksIEpTV29ya2VyR2xvYmFsU2NvcGVUYWJsZVZh
bHVlcywgSlNXb3JrZXJHbG9iYWxTY29wZVRhYmxlSW5kZXggfTsKIHRlbXBsYXRlPD4gSlNWYWx1
ZSBKU1dvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShK
U0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAg
ICByZXR1cm4gSlNFdmVudFRhcmdldDo6Z2V0Q29uc3RydWN0b3Iodm0sICZnbG9iYWxPYmplY3Qp
OwpAQCAtMjA1LDYgKzIxNywyOSBAQCBib29sIHNldEpTV29ya2VyR2xvYmFsU2NvcGVFeHBvc2Vk
VG9Xb3JrCiAgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1dvcmtlckdsb2JhbFNjb3BlPjo6c2V0
PHNldEpTV29ya2VyR2xvYmFsU2NvcGVFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3dDb25zdHJ1Y3Rv
clNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAi
RXhwb3NlZFRvV29ya2VyQW5kV2luZG93Iik7CiB9CiAKK3N0YXRpYyBpbmxpbmUgSlNWYWx1ZSBq
c1dvcmtlckdsb2JhbFNjb3BlVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZENvbnN0
cnVjdG9yR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1dvcmtl
ckdsb2JhbFNjb3BlJiB0aGlzT2JqZWN0KQoreworICAgIFVOVVNFRF9QQVJBTShsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKKyAgICByZXR1cm4gSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBv
c2VkOjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgdGhp
c09iamVjdC5nbG9iYWxPYmplY3QoKSk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIGpzV29ya2VyR2xv
YmFsU2NvcGVUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkQ29uc3RydWN0b3IoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lKQoreworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNXb3JrZXJHbG9i
YWxTY29wZT46OmdldDxqc1dvcmtlckdsb2JhbFNjb3BlVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJl
ZEJ5RXhwb3NlZENvbnN0cnVjdG9yR2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCAiVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZCIpOworfQorCitzdGF0aWMg
aW5saW5lIGJvb2wgc2V0SlNXb3JrZXJHbG9iYWxTY29wZVRlc3REZWZhdWx0VG9KU09ORmlsdGVy
ZWRCeUV4cG9zZWRDb25zdHJ1Y3RvclNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNXb3JrZXJHbG9iYWxTY29wZSYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkK
K3sKKyAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOworICAg
IC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yLgorICAgIHJldHVybiB0aGlzT2Jq
ZWN0LnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBMQ2hhcio+KCJUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkIiks
IHN0cmxlbigiVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZCIpKSwgdmFsdWUpOwor
fQorCitib29sIHNldEpTV29ya2VyR2xvYmFsU2NvcGVUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVk
QnlFeHBvc2VkQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQor
eworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNXb3JrZXJHbG9iYWxTY29wZT46OnNldDxzZXRK
U1dvcmtlckdsb2JhbFNjb3BlVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZENvbnN0
cnVjdG9yU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFs
dWUsICJUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkIik7Cit9CisKIHN0YXRpYyBp
bmxpbmUgSlNWYWx1ZSBqc1dvcmtlckdsb2JhbFNjb3BlVGVzdE5vZGVDb25zdHJ1Y3RvckdldHRl
cihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNXb3JrZXJHbG9iYWxTY29w
ZSYgdGhpc09iamVjdCkKIHsKICAgICBVTlVTRURfUEFSQU0obGV4aWNhbEdsb2JhbE9iamVjdCk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlLmlkbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlLmlkbAkocmV2aXNpb24gMjY3MzE5KQor
KysgU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZS5pZGwJKHdvcmtpbmcgY29weSkKQEAg
LTQzLDggKzQzLDggQEAgdHlwZWRlZiBkb3VibGUgRE9NSGlnaFJlc1RpbWVTdGFtcDsKICAgICBb
RGVmYXVsdF0gb2JqZWN0IHRvSlNPTigpOwogCiAgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlv
L25hdmlnYXRpb24tdGltaW5nLyNleHRlbnNpb25zLXRvLXRoZS1wZXJmb3JtYW5jZS1pbnRlcmZh
Y2UKLSAgICByZWFkb25seSBhdHRyaWJ1dGUgUGVyZm9ybWFuY2VOYXZpZ2F0aW9uIG5hdmlnYXRp
b247Ci0gICAgcmVhZG9ubHkgYXR0cmlidXRlIFBlcmZvcm1hbmNlVGltaW5nIHRpbWluZzsKKyAg
ICBbRXhwb3NlZD1XaW5kb3ddIHJlYWRvbmx5IGF0dHJpYnV0ZSBQZXJmb3JtYW5jZU5hdmlnYXRp
b24gbmF2aWdhdGlvbjsKKyAgICBbRXhwb3NlZD1XaW5kb3ddIHJlYWRvbmx5IGF0dHJpYnV0ZSBQ
ZXJmb3JtYW5jZVRpbWluZyB0aW1pbmc7CiAKICAgICAvLyBodHRwczovL3czYy5naXRodWIuaW8v
cGVyZm9ybWFuY2UtdGltZWxpbmUvI2V4dGVuc2lvbnMtdG8tdGhlLXBlcmZvcm1hbmNlLWludGVy
ZmFjZQogICAgIFBlcmZvcm1hbmNlRW50cnlMaXN0IGdldEVudHJpZXMoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>409209</attachid>
            <date>2020-09-19 12:38:46 -0700</date>
            <delta_ts>2020-09-20 15:28:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216732-20200919123845.patch</filename>
            <type>text/plain</type>
            <size>53642</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2NzMxOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDIwLTA5LTE5ICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBQZXJmb3JtYW5jZS5uYXZpZ2F0aW9u
IGFuZCBQZXJmb3JtYW5jZS50aW1pbmcgYXJlIGluY29ycmVjdGx5IGV4cG9zZWQgdG8gd29ya2Vy
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE2NzMy
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwYWdl
L1BlcmZvcm1hbmNlLmlkbDoKKyAgICAgICAgT25seSBleHBvc2UgUGVyZm9ybWFuY2UubmF2aWdh
dGlvbiBhbmQgUGVyZm9ybWFuY2UudGltaW5nIHRvIHRoZSBXaW5kb3cuCisKIDIwMjAtMDktMTkg
IFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgogCiAgICAgICAgIFBlcmZvcm1hbmNlIGFu
ZCBQZXJmb3JtYW5jZU5hdmlnYXRpb24gaW50ZXJmYWNlcyBhcmUgbWlzc2luZyB0b0pTT04gb3Bl
cmF0aW9ucwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9ySlMucG0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9ySlMucG0JKHJldmlzaW9uIDI2NzMxOSkKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCSh3b3JraW5nIGNvcHkpCkBAIC0zOTcw
LDcgKzM5NzAsNyBAQCBzdWIgVG9NZXRob2ROYW1lCiAKIHN1YiBHZW5lcmF0ZVJ1bnRpbWVFbmFi
bGVDb25kaXRpb25hbFN0cmluZ0ZvckV4cG9zZWQKIHsKLSAgICBteSAoJGludGVyZmFjZSwgJGNv
bnRleHQsICRjb25qdW5jdHMsICRnbG9iYWxPYmplY3RJc1BhcmFtKSA9IEBfOworICAgIG15ICgk
aW50ZXJmYWNlLCAkY29udGV4dCwgJGdsb2JhbE9iamVjdFB0ciwgJGNvbmp1bmN0cykgPSBAXzsK
IAogICAgIGFzc2VydCgiTXVzdCBzcGVjaWZ5IHZhbHVlIGZvciBFeHBvc2VkLiIpIGlmICRjb250
ZXh0LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntFeHBvc2VkfSBlcSAiVkFMVUVfSVNfTUlTU0lORyI7
CiAKQEAgLTM5ODQsOCArMzk4NCw2IEBAIHN1YiBHZW5lcmF0ZVJ1bnRpbWVFbmFibGVDb25kaXRp
b25hbFN0cmkKICAgICAgICAgJGV4cG9zZWQgPSBAJGV4cG9zZWRbMF07CiAgICAgfQogCi0gICAg
bXkgJGdsb2JhbE9iamVjdFB0ciA9ICRnbG9iYWxPYmplY3RJc1BhcmFtID8gIiZnbG9iYWxPYmpl
Y3QiIDogImdsb2JhbE9iamVjdCgpIjsKLQogICAgIGlmICgkZXhwb3NlZCBlcSAiV2luZG93Iikg
ewogICAgICAgICBwdXNoKEAkY29uanVuY3RzLCAianNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4o
IiAuICRnbG9iYWxPYmplY3RQdHIgLiAiKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc0Rv
Y3VtZW50KCkiKTsKICAgICB9IGVsc2lmICgkZXhwb3NlZCBlcSAiV29ya2VyIikgewpAQCAtNDAw
NCwxMSArNDAwMiw5IEBAIHN1YiBHZW5lcmF0ZVJ1bnRpbWVFbmFibGVDb25kaXRpb25hbFN0cmkK
ICMgKGUuZy4gSURMSW50ZXJmYWNlLCBJRExBdHRyaWJ1dGUsIElETE9wZXJhdGlvbiwgSURMSXRl
cmFibGUsIGV0Yy4pCiBzdWIgR2VuZXJhdGVSdW50aW1lRW5hYmxlQ29uZGl0aW9uYWxTdHJpbmcK
IHsKLSAgICBteSAoJGludGVyZmFjZSwgJGNvbnRleHQsICRnbG9iYWxPYmplY3RJc1BhcmFtKSA9
IEBfOworICAgIG15ICgkaW50ZXJmYWNlLCAkY29udGV4dCwgJGdsb2JhbE9iamVjdFB0cikgPSBA
XzsKIAogICAgIG15IEBjb25qdW5jdHM7Ci0gICAgbXkgJGdsb2JhbE9iamVjdFB0ciA9ICRnbG9i
YWxPYmplY3RJc1BhcmFtID8gJGdsb2JhbE9iamVjdElzUGFyYW0gOiAiZ2xvYmFsT2JqZWN0KCki
OwotICAgIAogICAgIGlmICgkY29udGV4dC0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57U2VjdXJlQ29u
dGV4dH0pIHsKICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIlNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuaCIpOwogCkBAIC00MDIxLDcgKzQwMTcsNyBAQCBzdWIgR2VuZXJhdGVSdW50aW1lRW5hYmxl
Q29uZGl0aW9uYWxTdHJpCiAgICAgfQogCiAgICAgaWYgKCRjb250ZXh0LT5leHRlbmRlZEF0dHJp
YnV0ZXMtPntFeHBvc2VkfSkgewotICAgICAgICBHZW5lcmF0ZVJ1bnRpbWVFbmFibGVDb25kaXRp
b25hbFN0cmluZ0ZvckV4cG9zZWQoJGludGVyZmFjZSwgJGNvbnRleHQsIFxAY29uanVuY3RzKTsK
KyAgICAgICAgR2VuZXJhdGVSdW50aW1lRW5hYmxlQ29uZGl0aW9uYWxTdHJpbmdGb3JFeHBvc2Vk
KCRpbnRlcmZhY2UsICRjb250ZXh0LCAkZ2xvYmFsT2JqZWN0UHRyLCBcQGNvbmp1bmN0cyk7CiAg
ICAgfQogCiAgICAgaWYgKCRjb250ZXh0LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntFbmFibGVkRm9y
V29ybGR9KSB7CkBAIC00NTYwLDcgKzQ1NTYsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlv
bgogICAgICAgICBmb3JlYWNoIG15ICRvcGVyYXRpb25PckF0dHJpYnV0ZSAoQHJ1bnRpbWVFbmFi
bGVkUHJvcGVydGllcykgewogICAgICAgICAgICAgbXkgJGNvbmRpdGlvbmFsU3RyaW5nID0gJGNv
ZGVHZW5lcmF0b3ItPkdlbmVyYXRlQ29uZGl0aW9uYWxTdHJpbmcoJG9wZXJhdGlvbk9yQXR0cmli
dXRlKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiI2lmICR7Y29uZGl0aW9uYWxT
dHJpbmd9XG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7Ci0gICAgICAgICAgICBteSAkcnVudGlt
ZUVuYWJsZUNvbmRpdGlvbmFsU3RyaW5nID0gR2VuZXJhdGVSdW50aW1lRW5hYmxlQ29uZGl0aW9u
YWxTdHJpbmcoJGludGVyZmFjZSwgJG9wZXJhdGlvbk9yQXR0cmlidXRlKTsKKyAgICAgICAgICAg
IG15ICRydW50aW1lRW5hYmxlQ29uZGl0aW9uYWxTdHJpbmcgPSBHZW5lcmF0ZVJ1bnRpbWVFbmFi
bGVDb25kaXRpb25hbFN0cmluZygkaW50ZXJmYWNlLCAkb3BlcmF0aW9uT3JBdHRyaWJ1dGUsICJn
bG9iYWxPYmplY3QoKSIpOwogICAgICAgICAgICAgbXkgJG5hbWUgPSAkb3BlcmF0aW9uT3JBdHRy
aWJ1dGUtPm5hbWU7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoISR7
cnVudGltZUVuYWJsZUNvbmRpdGlvbmFsU3RyaW5nfSkge1xuIik7CiAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICAgICAgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IHRy
dWU7XG4iKTsKQEAgLTQ1NzUsNyArNDU3MSw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9u
CiAgICAgICAgIGZvcmVhY2ggbXkgJGF0dHJpYnV0ZSAoQHJ1bnRpbWVFbmFibGVkQXR0cmlidXRl
cykgewogICAgICAgICAgICAgaWYgKE5lZWRzUnVudGltZVJlYWRXcml0ZUNoZWNrKCRpbnRlcmZh
Y2UsICRhdHRyaWJ1dGUpKSB7CiAgICAgICAgICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIldl
YkNvcmVKU0NsaWVudERhdGEuaCIpOwotICAgICAgICAgICAgICAgIG15ICRydW50aW1lRW5hYmxl
Q29uZGl0aW9uYWxTdHJpbmcgPSBHZW5lcmF0ZVJ1bnRpbWVFbmFibGVDb25kaXRpb25hbFN0cmlu
ZygkaW50ZXJmYWNlLCAkYXR0cmlidXRlKTsKKyAgICAgICAgICAgICAgICBteSAkcnVudGltZUVu
YWJsZUNvbmRpdGlvbmFsU3RyaW5nID0gR2VuZXJhdGVSdW50aW1lRW5hYmxlQ29uZGl0aW9uYWxT
dHJpbmcoJGludGVyZmFjZSwgJGF0dHJpYnV0ZSwgImdsb2JhbE9iamVjdCgpIik7CiAKICAgICAg
ICAgICAgICAgICBteSAkYXR0cmlidXRlTmFtZSA9ICRhdHRyaWJ1dGUtPm5hbWU7CiAgICAgICAg
ICAgICAgICAgbXkgJGdldHRlciA9IEdldEF0dHJpYnV0ZUdldHRlck5hbWUoJGludGVyZmFjZSwg
JGNsYXNzTmFtZSwgJGF0dHJpYnV0ZSk7CkBAIC00NzA4LDcgKzQ3MDQsNyBAQCBzdWIgR2VuZXJh
dGVJbXBsZW1lbnRhdGlvbgogICAgICAgICBuZXh0IHVubGVzcyBBdHRyaWJ1dGVTaG91bGRCZU9u
SW5zdGFuY2UoJGludGVyZmFjZSwgJGF0dHJpYnV0ZSk7CiAKICAgICAgICAgQWRkVG9JbXBsSW5j
bHVkZXMoIldlYkNvcmVKU0NsaWVudERhdGEuaCIpOwotICAgICAgICBteSAkcnVudGltZUVuYWJs
ZUNvbmRpdGlvbmFsU3RyaW5nID0gR2VuZXJhdGVSdW50aW1lRW5hYmxlQ29uZGl0aW9uYWxTdHJp
bmcoJGludGVyZmFjZSwgJGF0dHJpYnV0ZSk7CisgICAgICAgIG15ICRydW50aW1lRW5hYmxlQ29u
ZGl0aW9uYWxTdHJpbmcgPSBHZW5lcmF0ZVJ1bnRpbWVFbmFibGVDb25kaXRpb25hbFN0cmluZygk
aW50ZXJmYWNlLCAkYXR0cmlidXRlLCAiZ2xvYmFsT2JqZWN0KCkiKTsKICAgICAgICAgbXkgJGF0
dHJpYnV0ZU5hbWUgPSAkYXR0cmlidXRlLT5uYW1lOwogICAgICAgICBteSAkZ2V0dGVyID0gR2V0
QXR0cmlidXRlR2V0dGVyTmFtZSgkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkYXR0cmlidXRlKTsK
ICAgICAgICAgbXkgJHNldHRlciA9IElzUmVhZG9ubHkoJGF0dHJpYnV0ZSkgPyAibnVsbHB0ciIg
OiBHZXRBdHRyaWJ1dGVTZXR0ZXJOYW1lKCRpbnRlcmZhY2UsICRjbGFzc05hbWUsICRhdHRyaWJ1
dGUpOwpAQCAtNDc0NSw3ICs0NzQxLDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAg
ICAgICAgbmV4dCBpZiAkb3BlcmF0aW9uLT57b3ZlcmxvYWRJbmRleH0gJiYgJG9wZXJhdGlvbi0+
e292ZXJsb2FkSW5kZXh9ID4gMTsKIAogICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiV2ViQ29y
ZUpTQ2xpZW50RGF0YS5oIik7Ci0gICAgICAgIG15ICRydW50aW1lRW5hYmxlQ29uZGl0aW9uYWxT
dHJpbmcgPSBHZW5lcmF0ZVJ1bnRpbWVFbmFibGVDb25kaXRpb25hbFN0cmluZygkaW50ZXJmYWNl
LCAkb3BlcmF0aW9uKTsKKyAgICAgICAgbXkgJHJ1bnRpbWVFbmFibGVDb25kaXRpb25hbFN0cmlu
ZyA9IEdlbmVyYXRlUnVudGltZUVuYWJsZUNvbmRpdGlvbmFsU3RyaW5nKCRpbnRlcmZhY2UsICRv
cGVyYXRpb24sICJnbG9iYWxPYmplY3QoKSIpOwogICAgICAgICBteSAkZnVuY3Rpb25OYW1lID0g
JG9wZXJhdGlvbi0+bmFtZTsKICAgICAgICAgbXkgJGltcGxlbWVudGF0aW9uRnVuY3Rpb24gPSBH
ZXRGdW5jdGlvbk5hbWUoJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJG9wZXJhdGlvbik7CiAgICAg
ICAgIG15ICRmdW5jdGlvbkxlbmd0aCA9IEdldEZ1bmN0aW9uTGVuZ3RoKCRvcGVyYXRpb24pOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0RPTVdpbmRvd0NvbnN0
cnVjdG9ycy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0RPTVdpbmRvd0NvbnN0cnVjdG9ycy5pZGwJKHJldmlzaW9uIDI2NzMxOSkKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9ET01XaW5kb3dDb25zdHJ1Y3RvcnMu
aWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNyBAQAogcGFydGlhbCBpbnRlcmZhY2UgRE9N
V2luZG93IHsKICAgICBhdHRyaWJ1dGUgRXhwb3NlZFRvV29ya2VyQW5kV2luZG93Q29uc3RydWN0
b3IgRXhwb3NlZFRvV29ya2VyQW5kV2luZG93OwogICAgIGF0dHJpYnV0ZSBUZXN0Q29uZGl0aW9u
YWxseVJlYWRXcml0ZUNvbnN0cnVjdG9yIFRlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlOworICAg
IGF0dHJpYnV0ZSBUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkQ29uc3RydWN0b3Ig
VGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZDsKICAgICBhdHRyaWJ1dGUgVGVzdE5v
ZGVDb25zdHJ1Y3RvciBUZXN0Tm9kZTsKICAgICBhdHRyaWJ1dGUgVGVzdE9iakNvbnN0cnVjdG9y
IFRlc3RPYmplY3Q7CiAgICAgYXR0cmlidXRlIFRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRDb25z
dHJ1Y3RvciBUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50OwpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1N1cHBsZW1lbnRhbERlcGVuZGVuY2llcy5kZXAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1N1cHBsZW1lbnRh
bERlcGVuZGVuY2llcy5kZXAJKHJldmlzaW9uIDI2NzMxOSkKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9TdXBwbGVtZW50YWxEZXBlbmRlbmNpZXMuZGVwCSh3b3JraW5n
IGNvcHkpCkBAIC02MSw2ICs2MSw5IEBAIFdlYkRPTVRlc3REZWZhdWx0VG9KU09OLmg6IAogSlNU
ZXN0RGVmYXVsdFRvSlNPTkVudW0uaDogCiBET01UZXN0RGVmYXVsdFRvSlNPTkVudW0uaDogCiBX
ZWJET01UZXN0RGVmYXVsdFRvSlNPTkVudW0uaDogCitKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVy
ZWRCeUV4cG9zZWQuaDogCitET01UZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkLmg6
IAorV2ViRE9NVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZC5oOiAKIEpTVGVzdERl
ZmF1bHRUb0pTT05JbmRpcmVjdEluaGVyaXRhbmNlLmg6IAogRE9NVGVzdERlZmF1bHRUb0pTT05J
bmRpcmVjdEluaGVyaXRhbmNlLmg6IAogV2ViRE9NVGVzdERlZmF1bHRUb0pTT05JbmRpcmVjdElu
aGVyaXRhbmNlLmg6IApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQuaWRsCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0RGVmYXVsdFRvSlNPTkZpbHRl
cmVkQnlFeHBvc2VkLmlkbAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZC5pZGwJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSwzNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1sKKyAgICBFeHBvc2Vk
PShXaW5kb3csV29ya2VyKQorXSBpbnRlcmZhY2UgVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5
RXhwb3NlZCB7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIGxvbmcgbm9ybWFsQXR0cmlidXRlOwor
ICAgIFtFeHBvc2VkPVdpbmRvd10gcmVhZG9ubHkgYXR0cmlidXRlIGRvdWJsZSBmaWx0ZXJlZEJ5
RXhwb3NlZFdpbmRvd0F0dHJpYnV0ZTsKKyAgICBbRXhwb3NlZD1Xb3JrZXJdIHJlYWRvbmx5IGF0
dHJpYnV0ZSBET01TdHJpbmcgZmlsdGVyZWRCeUV4cG9zZWRXb3JrZXJBdHRyaWJ1dGU7CisKKyAg
ICBbRGVmYXVsdF0gb2JqZWN0IHRvSlNPTigpOworfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9Xb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9ycy5pZGwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1dvcmtlckds
b2JhbFNjb3BlQ29uc3RydWN0b3JzLmlkbAkocmV2aXNpb24gMjY3MzE5KQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1dvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3Jz
LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIHBhcnRpYWwgaW50ZXJmYWNlIFdv
cmtlckdsb2JhbFNjb3BlIHsKICAgICBhdHRyaWJ1dGUgRXhwb3NlZFRvV29ya2VyQW5kV2luZG93
Q29uc3RydWN0b3IgRXhwb3NlZFRvV29ya2VyQW5kV2luZG93OworICAgIGF0dHJpYnV0ZSBUZXN0
RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkQ29uc3RydWN0b3IgVGVzdERlZmF1bHRUb0pT
T05GaWx0ZXJlZEJ5RXhwb3NlZDsKICAgICBhdHRyaWJ1dGUgVGVzdE5vZGVDb25zdHJ1Y3RvciBU
ZXN0Tm9kZTsKICAgICBhdHRyaWJ1dGUgVGVzdE9iakNvbnN0cnVjdG9yIFRlc3RPYmplY3Q7CiAg
ICAgYXR0cmlidXRlIFRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRDb25zdHJ1Y3RvciBUZXN0UHJv
bWlzZVJlamVjdGlvbkV2ZW50OwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTRE9NV2luZG93LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNET01XaW5kb3cuY3BwCShyZXZpc2lvbiAyNjczMTkp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNET01XaW5kb3cu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiSlNET01XcmFw
cGVyQ2FjaGUuaCIKICNpbmNsdWRlICJKU0V4cG9zZWRUb1dvcmtlckFuZFdpbmRvdy5oIgogI2lu
Y2x1ZGUgIkpTVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGUuaCIKKyNpbmNsdWRlICJKU1Rlc3RE
ZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQuaCIKICNpbmNsdWRlICJKU1Rlc3ROb2RlLmgi
CiAjaW5jbHVkZSAiSlNUZXN0T2JqLmgiCiAjaW5jbHVkZSAiSlNUZXN0UHJvbWlzZVJlamVjdGlv
bkV2ZW50LmgiCkBAIC01Niw2ICs1Nyw4IEBAIEpTQzo6RW5jb2RlZEpTVmFsdWUganNET01XaW5k
b3dFeHBvc2VkVG8KIGJvb2wgc2V0SlNET01XaW5kb3dFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3dD
b25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlND
OjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzRE9NV2luZG93VGVzdENv
bmRpdGlvbmFsbHlSZWFkV3JpdGVDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlND
OjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogYm9vbCBzZXRKU0RPTVdpbmRv
d1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVj
dCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc0RPTVdpbmRvd1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWRD
b25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlND
OjpQcm9wZXJ0eU5hbWUpOworYm9vbCBzZXRKU0RPTVdpbmRvd1Rlc3REZWZhdWx0VG9KU09ORmls
dGVyZWRCeUV4cG9zZWRDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
RE9NV2luZG93VGVzdE5vZGVDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpF
bmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogYm9vbCBzZXRKU0RPTVdpbmRvd1Rl
c3ROb2RlQ29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFs
dWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc0RPTVdpbmRv
d1Rlc3RPYmplY3RDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVk
SlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwpAQCAtNjcsNyArNzAsNyBAQCB1c2luZyBKU0RP
TVdpbmRvd0NvbnN0cnVjdG9yID0gSlNET01Db25zCiAKIC8qIEhhc2ggdGFibGUgKi8KIAotc3Rh
dGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTRE9NV2luZG93VGFibGVJbmRleFsx
OF0gPSB7CitzdGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNET01XaW5kb3dU
YWJsZUluZGV4WzE5XSA9IHsKICAgICB7IC0xLCAtMSB9LAogICAgIHsgMCwgMTYgfSwKICAgICB7
IC0xLCAtMSB9LApAQCAtNzcsMTUgKzgwLDE2IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFj
dEhhc2hJbmRleCBKU0QKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAt
MSwgLTEgfSwKLSAgICB7IDMsIC0xIH0sCisgICAgeyA0LCAtMSB9LAogICAgIHsgLTEsIC0xIH0s
CiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCi0gICAg
eyA0LCAtMSB9LAorICAgIHsgNSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgMSwgMTcg
fSwKLSAgICB7IDIsIC0xIH0sCisgICAgeyAyLCAxOCB9LAorICAgIHsgMywgLTEgfSwKIH07CiAK
IApAQCAtOTMsMTIgKzk3LDEzIEBAIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU0RPTVdp
bmRvd1QKIHsKICAgICB7ICJFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3ciLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywg
eyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzRE9N
V2luZG93RXhwb3NlZFRvV29ya2VyQW5kV2luZG93Q29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0
YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU0RPTVdpbmRvd0V4
cG9zZWRUb1dvcmtlckFuZFdpbmRvd0NvbnN0cnVjdG9yKSB9IH0sCiAgICAgeyAiVGVzdENvbmRp
dGlvbmFsbHlSZWFkV3JpdGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzRE9NV2luZG93VGVzdENvbmRpdGlvbmFsbHlS
ZWFkV3JpdGVDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlT
bG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTRE9NV2luZG93VGVzdENvbmRpdGlvbmFsbHlSZWFkV3Jp
dGVDb25zdHJ1Y3RvcikgfSB9LAorICAgIHsgIlRlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4
cG9zZWQiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90
OjpHZXRWYWx1ZUZ1bmM+KGpzRE9NV2luZG93VGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhw
b3NlZENvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6
OlB1dFZhbHVlRnVuYz4oc2V0SlNET01XaW5kb3dUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlF
eHBvc2VkQ29uc3RydWN0b3IpIH0gfSwKICAgICB7ICJUZXN0Tm9kZSIsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNET01X
aW5kb3dUZXN0Tm9kZUNvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9w
ZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNET01XaW5kb3dUZXN0Tm9kZUNvbnN0cnVjdG9y
KSB9IH0sCiAgICAgeyAiVGVzdE9iamVjdCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0
aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNET01XaW5kb3dUZXN0T2JqZWN0
Q29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0
VmFsdWVGdW5jPihzZXRKU0RPTVdpbmRvd1Rlc3RPYmplY3RDb25zdHJ1Y3RvcikgfSB9LAogICAg
IHsgIlRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzRE9NV2luZG93VGVzdFBy
b21pc2VSZWplY3Rpb25FdmVudENvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQ
dXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNET01XaW5kb3dUZXN0UHJvbWlzZVJl
amVjdGlvbkV2ZW50Q29uc3RydWN0b3IpIH0gfSwKIH07CiAKLXN0YXRpYyBjb25zdCBIYXNoVGFi
bGUgSlNET01XaW5kb3dUYWJsZSA9IHsgNSwgMTUsIHRydWUsIEpTRE9NV2luZG93OjppbmZvKCks
IEpTRE9NV2luZG93VGFibGVWYWx1ZXMsIEpTRE9NV2luZG93VGFibGVJbmRleCB9Oworc3RhdGlj
IGNvbnN0IEhhc2hUYWJsZSBKU0RPTVdpbmRvd1RhYmxlID0geyA2LCAxNSwgdHJ1ZSwgSlNET01X
aW5kb3c6OmluZm8oKSwgSlNET01XaW5kb3dUYWJsZVZhbHVlcywgSlNET01XaW5kb3dUYWJsZUlu
ZGV4IH07CiB0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNET01XaW5kb3dDb25zdHJ1Y3Rvcjo6cHJvdG90
eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xv
YmFsT2JqZWN0KQogewogICAgIHJldHVybiBKU0V2ZW50VGFyZ2V0OjpnZXRDb25zdHJ1Y3Rvcih2
bSwgJmdsb2JhbE9iamVjdCk7CkBAIC0yMzAsNiArMjM1LDI5IEBAIGJvb2wgc2V0SlNET01XaW5k
b3dUZXN0Q29uZGl0aW9uYWxseVJlYWQKICAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTRE9NV2lu
ZG93Pjo6c2V0PHNldEpTRE9NV2luZG93VGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGVDb25zdHJ1
Y3RvclNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVl
LCAiVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGUiKTsKIH0KIAorc3RhdGljIGlubGluZSBKU1Zh
bHVlIGpzRE9NV2luZG93VGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZENvbnN0cnVj
dG9yR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0RPTVdpbmRv
dyYgdGhpc09iamVjdCkKK3sKKyAgICBVTlVTRURfUEFSQU0obGV4aWNhbEdsb2JhbE9iamVjdCk7
CisgICAgcmV0dXJuIEpTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZDo6Z2V0Q29u
c3RydWN0b3IoSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCksICZ0aGlzT2JqZWN0KTsK
K30KKworRW5jb2RlZEpTVmFsdWUganNET01XaW5kb3dUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVk
QnlFeHBvc2VkQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQoreworICAgIHJldHVybiBJ
RExBdHRyaWJ1dGU8SlNET01XaW5kb3c+OjpnZXQ8anNET01XaW5kb3dUZXN0RGVmYXVsdFRvSlNP
TkZpbHRlcmVkQnlFeHBvc2VkQ29uc3RydWN0b3JHZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aGlzVmFsdWUsICJUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkIik7Cit9CisK
K3N0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU0RPTVdpbmRvd1Rlc3REZWZhdWx0VG9KU09ORmlsdGVy
ZWRCeUV4cG9zZWRDb25zdHJ1Y3RvclNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNET01XaW5kb3cmIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCit7CisgICAg
YXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICAvLyBTaGFk
b3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3Rvci4KKyAgICByZXR1cm4gdGhpc09iamVjdC5wdXRE
aXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgTENoYXIqPigiVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZCIpLCBzdHJsZW4o
IlRlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQiKSksIHZhbHVlKTsKK30KKworYm9v
bCBzZXRKU0RPTVdpbmRvd1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWRDb25zdHJ1
Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCit7CisgICAgcmV0dXJuIElE
TEF0dHJpYnV0ZTxKU0RPTVdpbmRvdz46OnNldDxzZXRKU0RPTVdpbmRvd1Rlc3REZWZhdWx0VG9K
U09ORmlsdGVyZWRCeUV4cG9zZWRDb25zdHJ1Y3RvclNldHRlcj4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5
RXhwb3NlZCIpOworfQorCiBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNET01XaW5kb3dUZXN0Tm9k
ZUNvbnN0cnVjdG9yR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0RPTVdpbmRvdyYgdGhpc09iamVjdCkKIHsKICAgICBVTlVTRURfUEFSQU0obGV4aWNhbEdsb2Jh
bE9iamVjdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNP
TkZpbHRlcmVkQnlFeHBvc2VkLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBv
c2VkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM2OSBAQAorLyoKKyAgICBUaGlzIGZp
bGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCisgICAgVGhpcyBm
aWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1P
RElGWSEKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUg
TGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRo
aXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl
ZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBh
bG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90
LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZy
YW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBV
U0EuCisqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNUZXN0RGVmYXVsdFRv
SlNPTkZpbHRlcmVkQnlFeHBvc2VkLmgiCisKKyNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIK
KyNpbmNsdWRlICJET01Jc29TdWJzcGFjZXMuaCIKKyNpbmNsdWRlICJKU0RPTUF0dHJpYnV0ZS5o
IgorI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgorI2luY2x1ZGUgIkpTRE9NQ29uc3RydWN0b3JO
b3RDb25zdHJ1Y3RhYmxlLmgiCisjaW5jbHVkZSAiSlNET01Db252ZXJ0TnVtYmVycy5oIgorI2lu
Y2x1ZGUgIkpTRE9NQ29udmVydFN0cmluZ3MuaCIKKyNpbmNsdWRlICJKU0RPTUV4Y2VwdGlvbkhh
bmRsaW5nLmgiCisjaW5jbHVkZSAiSlNET01PcGVyYXRpb24uaCIKKyNpbmNsdWRlICJKU0RPTVdy
YXBwZXJDYWNoZS5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNs
dWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVu
Y3Rpb25Qcm90b3R5cGUuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwQW5hbHl6ZXIu
aD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CisjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvSlNEZXN0cnVjdGlibGVPYmplY3RIZWFwQ2VsbFR5cGUuaD4KKyNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9PYmplY3RDb25zdHJ1Y3Rvci5oPgorI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL1N1YnNwYWNlSW5saW5lcy5oPgorI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KKyNpbmNs
dWRlIDx3dGYvUG9pbnRlclByZXBhcmF0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KKwor
CituYW1lc3BhY2UgV2ViQ29yZSB7Cit1c2luZyBuYW1lc3BhY2UgSlNDOworCisvLyBGdW5jdGlv
bnMKKworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdERlZmF1bHRUb0pT
T05GaWx0ZXJlZEJ5RXhwb3NlZFByb3RvdHlwZUZ1bmN0aW9uVG9KU09OKEpTQzo6SlNHbG9iYWxP
YmplY3QqLCBKU0M6OkNhbGxGcmFtZSopOworCisvLyBBdHRyaWJ1dGVzCisKK0pTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkQ29uc3RydWN0b3Io
SlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlO
YW1lKTsKK2Jvb2wgc2V0SlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkQ29uc3Ry
dWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5j
b2RlZEpTVmFsdWUpOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3REZWZhdWx0VG9KU09ORmls
dGVyZWRCeUV4cG9zZWROb3JtYWxBdHRyaWJ1dGUoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6
RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkRmlsdGVyZWRCeUV4cG9zZWRXaW5k
b3dBdHRyaWJ1dGUoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpT
Qzo6UHJvcGVydHlOYW1lKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0RGVmYXVsdFRvSlNP
TkZpbHRlcmVkQnlFeHBvc2VkRmlsdGVyZWRCeUV4cG9zZWRXb3JrZXJBdHRyaWJ1dGUoSlNDOjpK
U0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsK
KworY2xhc3MgSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkUHJvdG90eXBlIGZp
bmFsIDogcHVibGljIEpTQzo6SlNOb25GaW5hbE9iamVjdCB7CitwdWJsaWM6CisgICAgdXNpbmcg
QmFzZSA9IEpTQzo6SlNOb25GaW5hbE9iamVjdDsKKyAgICBzdGF0aWMgSlNUZXN0RGVmYXVsdFRv
SlNPTkZpbHRlcmVkQnlFeHBvc2VkUHJvdG90eXBlKiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpTRE9N
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisg
ICAgeworICAgICAgICBKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWRQcm90b3R5
cGUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0RGVmYXVsdFRv
SlNPTkZpbHRlcmVkQnlFeHBvc2VkUHJvdG90eXBlPih2bS5oZWFwKSkgSlNUZXN0RGVmYXVsdFRv
SlNPTkZpbHRlcmVkQnlFeHBvc2VkUHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVy
ZSk7CisgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgICAgICByZXR1cm4gcHRy
OworICAgIH0KKworICAgIERFQ0xBUkVfSU5GTzsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxs
VHlwZSwgSlNDOjpTdWJzcGFjZUFjY2Vzcz4KKyAgICBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSog
c3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0pCisgICAgeworICAgICAgICBTVEFUSUNfQVNTRVJUX0lT
T19TVUJTUEFDRV9TSEFSQUJMRShKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWRQ
cm90b3R5cGUsIEJhc2UpOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7Cisg
ICAgfQorICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0m
IHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90
b3R5cGUpCisgICAgeworICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwg
Z2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBT
dHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCitwcml2YXRlOgorICAgIEpTVGVzdERl
ZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZFByb3RvdHlwZShKU0M6OlZNJiB2bSwgSlNDOjpK
U0dsb2JhbE9iamVjdCosIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgICAgIDogSlND
OjpKU05vbkZpbmFsT2JqZWN0KHZtLCBzdHJ1Y3R1cmUpCisgICAgeworICAgIH0KKworICAgIHZv
aWQgZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYpOworfTsKK1NUQVRJQ19BU1NFUlRfSVNPX1NVQlNQ
QUNFX1NIQVJBQkxFKEpTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZFByb3RvdHlw
ZSwgSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkUHJvdG90eXBlOjpCYXNlKTsK
KwordXNpbmcgSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkQ29uc3RydWN0b3Ig
PSBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZTxKU1Rlc3REZWZhdWx0VG9KU09ORmls
dGVyZWRCeUV4cG9zZWQ+OworCit0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0RGVmYXVsdFRvSlNP
TkZpbHRlcmVkQnlFeHBvc2VkQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6
OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3sKKyAgICBV
TlVTRURfUEFSQU0odm0pOworICAgIHJldHVybiBnbG9iYWxPYmplY3QuZnVuY3Rpb25Qcm90b3R5
cGUoKTsKK30KKwordGVtcGxhdGU8PiB2b2lkIEpTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5
RXhwb3NlZENvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xv
YmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit7CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZDo6
cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250
RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSk7CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVk
QnlFeHBvc2VkIl9zKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFk
T25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKK30KKwordGVtcGxhdGU8
PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkQ29u
c3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQi
LCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpT
VGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZENvbnN0cnVjdG9yKSB9OworCisvKiBI
YXNoIHRhYmxlIGZvciBwcm90b3R5cGUgKi8KKworc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVl
IEpTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZFByb3RvdHlwZVRhYmxlVmFsdWVz
W10gPQoreworICAgIHsgImNvbnN0cnVjdG9yIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0
YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3REZWZhdWx0VG9KU09O
RmlsdGVyZWRCeUV4cG9zZWRDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0
UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJl
ZEJ5RXhwb3NlZENvbnN0cnVjdG9yKSB9IH0sCisgICAgeyAibm9ybWFsQXR0cmlidXRlIiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5
RXhwb3NlZE5vcm1hbEF0dHJpYnV0ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVy
dHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKKyAgICB7ICJmaWx0ZXJlZEJ5RXhwb3NlZFdp
bmRvd0F0dHJpYnV0ZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGlu
dHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3REZWZh
dWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWRGaWx0ZXJlZEJ5RXhwb3NlZFdpbmRvd0F0dHJpYnV0
ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+
KDApIH0gfSwKKyAgICB7ICJmaWx0ZXJlZEJ5RXhwb3NlZFdvcmtlckF0dHJpYnV0ZSIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFBy
b3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4
cG9zZWRGaWx0ZXJlZEJ5RXhwb3NlZFdvcmtlckF0dHJpYnV0ZSksIChpbnRwdHJfdCkgc3RhdGlj
X2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKKyAgICB7ICJ0b0pT
T04iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rp
b24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rp
b24+KGpzVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZFByb3RvdHlwZUZ1bmN0aW9u
VG9KU09OKSwgKGludHB0cl90KSAoMCkgfSB9LAorfTsKKworY29uc3QgQ2xhc3NJbmZvIEpTVGVz
dERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZFByb3RvdHlwZTo6c19pbmZvID0geyAiVGVz
dERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZCIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIs
IG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVk
QnlFeHBvc2VkUHJvdG90eXBlKSB9OworCit2b2lkIEpTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJl
ZEJ5RXhwb3NlZFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQoreworICAgIEJhc2U6
OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICByZWlmeVN0YXRpY1Byb3BlcnRpZXModm0sIEpTVGVz
dERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZDo6aW5mbygpLCBKU1Rlc3REZWZhdWx0VG9K
U09ORmlsdGVyZWRCeUV4cG9zZWRQcm90b3R5cGVUYWJsZVZhbHVlcywgKnRoaXMpOworICAgIGJv
b2wgaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyA9IGZhbHNlOworICAgIGlmICghanNDYXN0
PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250
ZXh0KCktPmlzRG9jdW1lbnQoKSkgeworICAgICAgICBoYXNEaXNhYmxlZFJ1bnRpbWVQcm9wZXJ0
aWVzID0gdHJ1ZTsKKyAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKHZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oImZpbHRlcmVkQnlFeHBv
c2VkV2luZG93QXR0cmlidXRlIiksIHN0cmxlbigiZmlsdGVyZWRCeUV4cG9zZWRXaW5kb3dBdHRy
aWJ1dGUiKSk7CisgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwg
Vk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKKyAgICAgICAgRGVs
ZXRlUHJvcGVydHlTbG90IHNsb3Q7CisgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0
aGlzLCBnbG9iYWxPYmplY3QoKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKKyAgICB9CisgICAgaWYg
KCFqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKS0+aXNXb3JrZXJHbG9iYWxTY29wZSgpKSB7CisgICAgICAgIGhhc0Rpc2Fi
bGVkUnVudGltZVByb3BlcnRpZXMgPSB0cnVlOworICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9
IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIq
PigiZmlsdGVyZWRCeUV4cG9zZWRXb3JrZXJBdHRyaWJ1dGUiKSwgc3RybGVuKCJmaWx0ZXJlZEJ5
RXhwb3NlZFdvcmtlckF0dHJpYnV0ZSIpKTsKKyAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9k
ZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFi
bGUpOworICAgICAgICBEZWxldGVQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAgSlNPYmplY3Q6
OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUsIHNsb3Qp
OworICAgIH0KKyAgICBpZiAoaGFzRGlzYWJsZWRSdW50aW1lUHJvcGVydGllcyAmJiBzdHJ1Y3R1
cmUoKS0+aXNEaWN0aW9uYXJ5KCkpCisgICAgICAgIGZsYXR0ZW5EaWN0aW9uYXJ5T2JqZWN0KHZt
KTsKKyAgICBKU0NfVE9fU1RSSU5HX1RBR19XSVRIT1VUX1RSQU5TSVRJT04oKTsKK30KKworY29u
c3QgQ2xhc3NJbmZvIEpTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZDo6c19pbmZv
ID0geyAiVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZCIsICZCYXNlOjpzX2luZm8s
IG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0RGVmYXVsdFRvSlNP
TkZpbHRlcmVkQnlFeHBvc2VkKSB9OworCitKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4
cG9zZWQ6OkpTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZChTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgUmVmPFRlc3REZWZhdWx0
VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQ+JiYgaW1wbCkKKyAgICA6IEpTRE9NV3JhcHBlcjxUZXN0
RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkPihzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCwg
V1RGTW92ZShpbXBsKSkKK3sKK30KKwordm9pZCBKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRC
eUV4cG9zZWQ6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVh
dGlvbih2bSk7CisgICAgQVNTRVJUKGluaGVyaXRzKHZtLCBpbmZvKCkpKTsKKworICAgIHN0YXRp
Y19hc3NlcnQoIXN0ZDo6aXNfYmFzZV9vZjxBY3RpdmVET01PYmplY3QsIFRlc3REZWZhdWx0VG9K
U09ORmlsdGVyZWRCeUV4cG9zZWQ+Ojp2YWx1ZSwgIkludGVyZmFjZSBpcyBub3QgbWFya2VkIGFz
IFtBY3RpdmVET01PYmplY3RdIGV2ZW4gdGhvdWdoIGltcGxlbWVudGF0aW9uIGNsYXNzIHN1YmNs
YXNzZXMgQWN0aXZlRE9NT2JqZWN0LiIpOworCit9CisKK0pTT2JqZWN0KiBKU1Rlc3REZWZhdWx0
VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQ6OmNyZWF0ZVByb3RvdHlwZShWTSYgdm0sIEpTRE9NR2xv
YmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit7CisgICAgcmV0dXJuIEpTVGVzdERlZmF1bHRUb0pT
T05GaWx0ZXJlZEJ5RXhwb3NlZFByb3RvdHlwZTo6Y3JlYXRlKHZtLCAmZ2xvYmFsT2JqZWN0LCBK
U1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWRQcm90b3R5cGU6OmNyZWF0ZVN0cnVj
dHVyZSh2bSwgJmdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0Lm9iamVjdFByb3RvdHlwZSgpKSk7
Cit9CisKK0pTT2JqZWN0KiBKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQ6OnBy
b3RvdHlwZShWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit7CisgICAg
cmV0dXJuIGdldERPTVByb3RvdHlwZTxKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9z
ZWQ+KHZtLCBnbG9iYWxPYmplY3QpOworfQorCitKU1ZhbHVlIEpTVGVzdERlZmF1bHRUb0pTT05G
aWx0ZXJlZEJ5RXhwb3NlZDo6Z2V0Q29uc3RydWN0b3IoVk0mIHZtLCBjb25zdCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rl
c3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWRDb25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8
Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKK30KKwordm9pZCBKU1Rl
c3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQ6OmRlc3Ryb3koSlNDOjpKU0NlbGwqIGNl
bGwpCit7CisgICAgSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkKiB0aGlzT2Jq
ZWN0ID0gc3RhdGljX2Nhc3Q8SlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkKj4o
Y2VsbCk7CisgICAgdGhpc09iamVjdC0+SlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBv
c2VkOjp+SlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkKCk7Cit9CisKK3RlbXBs
YXRlPD4gaW5saW5lIEpTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZCogSURMQXR0
cmlidXRlPEpTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZD46OmNhc3QoSlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkK
K3sKKyAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRC
eUV4cG9zZWQqPihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgSlNWYWx1ZTo6ZGVj
b2RlKHRoaXNWYWx1ZSkpOworfQorCit0ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3REZWZhdWx0VG9K
U09ORmlsdGVyZWRCeUV4cG9zZWQqIElETE9wZXJhdGlvbjxKU1Rlc3REZWZhdWx0VG9KU09ORmls
dGVyZWRCeUV4cG9zZWQ+OjpjYXN0KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUmIGNhbGxGcmFtZSkKK3sKKyAgICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU1Rl
c3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQqPihKU0M6OmdldFZNKCZsZXhpY2FsR2xv
YmFsT2JqZWN0KSwgY2FsbEZyYW1lLnRoaXNWYWx1ZSgpKTsKK30KKworRW5jb2RlZEpTVmFsdWUg
anNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkQ29uc3RydWN0b3IoSlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJv
cGVydHlOYW1lKQoreworICAgIFZNJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVj
dCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAg
YXV0byogcHJvdG90eXBlID0ganNEeW5hbWljQ2FzdDxKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVy
ZWRCeUV4cG9zZWRQcm90b3R5cGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwor
ICAgIGlmIChVTkxJS0VMWSghcHJvdG90eXBlKSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSk7CisgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQ6OmdldENvbnN0
cnVjdG9yKEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCksIHByb3RvdHlwZS0+Z2xvYmFs
T2JqZWN0KCkpKTsKK30KKworYm9vbCBzZXRKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4
cG9zZWRDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCit7Cisg
ICAgVk0mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBhdXRvKiBwcm90b3R5cGUg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZFByb3Rv
dHlwZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgaWYgKFVOTElLRUxZ
KCFwcm90b3R5cGUpKSB7CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgLy8g
U2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IKKyAgICByZXR1cm4gcHJvdG90eXBlLT5w
dXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZFZhbHVlKSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3REZWZh
dWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWROb3JtYWxBdHRyaWJ1dGVHZXR0ZXIoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5
RXhwb3NlZCYgdGhpc09iamVjdCkKK3sKKyAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKKyAgICBSRUxF
QVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMTG9uZz4obGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgaW1wbC5ub3JtYWxBdHRyaWJ1dGUoKSkpKTsKK30KKworRW5jb2Rl
ZEpTVmFsdWUganNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkTm9ybWFsQXR0cmli
dXRlKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKK3sKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVz
dERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZD46OmdldDxqc1Rlc3REZWZhdWx0VG9KU09O
RmlsdGVyZWRCeUV4cG9zZWROb3JtYWxBdHRyaWJ1dGVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJl
aGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJub3JtYWxB
dHRyaWJ1dGUiKTsKK30KKworc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERlZmF1bHRUb0pT
T05GaWx0ZXJlZEJ5RXhwb3NlZEZpbHRlcmVkQnlFeHBvc2VkV2luZG93QXR0cmlidXRlR2V0dGVy
KEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3REZWZhdWx0VG9KU09O
RmlsdGVyZWRCeUV4cG9zZWQmIHRoaXNPYmplY3QpCit7CisgICAgYXV0byYgdm0gPSBKU0M6Omdl
dFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKyAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7
CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETERvdWJsZT4obGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5maWx0ZXJlZEJ5RXhwb3NlZFdpbmRv
d0F0dHJpYnV0ZSgpKSkpOworfQorCitFbmNvZGVkSlNWYWx1ZSBqc1Rlc3REZWZhdWx0VG9KU09O
RmlsdGVyZWRCeUV4cG9zZWRGaWx0ZXJlZEJ5RXhwb3NlZFdpbmRvd0F0dHJpYnV0ZShKU0dsb2Jh
bE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQ
cm9wZXJ0eU5hbWUpCit7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3REZWZhdWx0VG9K
U09ORmlsdGVyZWRCeUV4cG9zZWQ+OjpnZXQ8anNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlF
eHBvc2VkRmlsdGVyZWRCeUV4cG9zZWRXaW5kb3dBdHRyaWJ1dGVHZXR0ZXIsIENhc3RlZFRoaXNF
cnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsICJm
aWx0ZXJlZEJ5RXhwb3NlZFdpbmRvd0F0dHJpYnV0ZSIpOworfQorCitzdGF0aWMgaW5saW5lIEpT
VmFsdWUganNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkRmlsdGVyZWRCeUV4cG9z
ZWRXb3JrZXJBdHRyaWJ1dGVHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZCYgdGhpc09iamVjdCkKK3sK
KyAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOworICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIGF1dG8mIGltcGwg
PSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29w
ZSwgKHRvSlM8SURMRE9NU3RyaW5nPihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBp
bXBsLmZpbHRlcmVkQnlFeHBvc2VkV29ya2VyQXR0cmlidXRlKCkpKSk7Cit9CisKK0VuY29kZWRK
U1ZhbHVlIGpzVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZEZpbHRlcmVkQnlFeHBv
c2VkV29ya2VyQXR0cmlidXRlKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKK3sKKyAgICByZXR1cm4gSURM
QXR0cmlidXRlPEpTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZD46OmdldDxqc1Rl
c3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWRGaWx0ZXJlZEJ5RXhwb3NlZFdvcmtlckF0
dHJpYnV0ZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgImZpbHRlcmVkQnlFeHBvc2VkV29ya2VyQXR0cmlidXRl
Iik7Cit9CisKK3N0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0RGVmYXVsdFRvSlNP
TkZpbHRlcmVkQnlFeHBvc2VkUHJvdG90eXBlRnVuY3Rpb25Ub0pTT05Cb2R5KEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqLCBKU1Rlc3REZWZhdWx0VG9KU09O
RmlsdGVyZWRCeUV4cG9zZWQqIGNhc3RlZFRoaXMpCit7CisgICAgYXV0byYgdm0gPSBKU0M6Omdl
dFZNKGxleGljYWxHbG9iYWxPYmplY3QpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKKyAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOworICAgIGF1dG8qIHJlc3VsdCA9IGNvbnN0
cnVjdEVtcHR5T2JqZWN0KGxleGljYWxHbG9iYWxPYmplY3QsIGNhc3RlZFRoaXMtPmdsb2JhbE9i
amVjdCgpLT5vYmplY3RQcm90b3R5cGUoKSk7CisgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJub3JtYWxBdHRyaWJ1dGUiKSwgdG9KUzxJRExMb25n
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5ub3JtYWxBdHRyaWJ1dGUo
KSkpOworICAgIGlmIChqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihjYXN0ZWRUaGlzLT5nbG9i
YWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNEb2N1bWVudCgpKSB7Cisg
ICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAi
ZmlsdGVyZWRCeUV4cG9zZWRXaW5kb3dBdHRyaWJ1dGUiKSwgdG9KUzxJRExEb3VibGU+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmZpbHRlcmVkQnlFeHBvc2VkV2luZG93
QXR0cmlidXRlKCkpKTsKKyAgICB9CisgICAgaWYgKGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+
KGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5p
c1dvcmtlckdsb2JhbFNjb3BlKCkpIHsKKyAgICAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJmaWx0ZXJlZEJ5RXhwb3NlZFdvcmtlckF0dHJpYnV0
ZSIpLCB0b0pTPElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IGltcGwuZmlsdGVyZWRCeUV4cG9zZWRXb3JrZXJBdHRyaWJ1dGUoKSkpOworICAgIH0KKyAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkUHJvdG90eXBlRnVu
Y3Rpb25Ub0pTT04oSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKQoreworICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0RGVmYXVsdFRv
SlNPTkZpbHRlcmVkQnlFeHBvc2VkPjo6Y2FsbDxqc1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRC
eUV4cG9zZWRQcm90b3R5cGVGdW5jdGlvblRvSlNPTkJvZHk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCAqY2FsbEZyYW1lLCAidG9KU09OIik7Cit9CisKK0pTQzo6SXNvU3Vic3BhY2UqIEpTVGVzdERl
ZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZDo6c3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZt
KQoreworICAgIGF1dG8mIGNsaWVudERhdGEgPSAqc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEq
Pih2bS5jbGllbnREYXRhKTsKKyAgICBhdXRvJiBzcGFjZXMgPSBjbGllbnREYXRhLnN1YnNwYWNl
cygpOworICAgIGlmIChhdXRvKiBzcGFjZSA9IHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERlZmF1
bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZC5nZXQoKSkKKyAgICAgICAgcmV0dXJuIHNwYWNlOwor
ICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29mX3Y8SlNDOjpKU0Rlc3RydWN0aWJsZU9i
amVjdCwgSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkPiB8fCAhSlNUZXN0RGVm
YXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkOjpuZWVkc0Rlc3RydWN0aW9uKTsKKyAgICBpZiBj
b25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PEpTQzo6SlNEZXN0cnVjdGlibGVPYmplY3QsIEpT
VGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZD4pCisgICAgICAgIHNwYWNlcy5tX3N1
YnNwYWNlRm9yVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZCA9IG1ha2VVbmlxdWU8
SXNvU3Vic3BhY2U+IElTT19TVUJTUEFDRV9JTklUKHZtLmhlYXAsIHZtLmRlc3RydWN0aWJsZU9i
amVjdEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBv
c2VkKTsKKyAgICBlbHNlCisgICAgICAgIHNwYWNlcy5tX3N1YnNwYWNlRm9yVGVzdERlZmF1bHRU
b0pTT05GaWx0ZXJlZEJ5RXhwb3NlZCA9IG1ha2VVbmlxdWU8SXNvU3Vic3BhY2U+IElTT19TVUJT
UEFDRV9JTklUKHZtLmhlYXAsIHZtLmNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVzdERlZmF1
bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZCk7CisgICAgYXV0byogc3BhY2UgPSBzcGFjZXMubV9z
dWJzcGFjZUZvclRlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQuZ2V0KCk7CitJR05P
UkVfV0FSTklOR1NfQkVHSU4oInVucmVhY2hhYmxlLWNvZGUiKQorSUdOT1JFX1dBUk5JTkdTX0JF
R0lOKCJ0YXV0b2xvZ2ljYWwtY29tcGFyZSIpCisgICAgaWYgKCZKU1Rlc3REZWZhdWx0VG9KU09O
RmlsdGVyZWRCeUV4cG9zZWQ6OnZpc2l0T3V0cHV0Q29uc3RyYWludHMgIT0gJkpTQzo6SlNDZWxs
Ojp2aXNpdE91dHB1dENvbnN0cmFpbnRzKQorICAgICAgICBjbGllbnREYXRhLm91dHB1dENvbnN0
cmFpbnRTcGFjZXMoKS5hcHBlbmQoc3BhY2UpOworSUdOT1JFX1dBUk5JTkdTX0VORAorSUdOT1JF
X1dBUk5JTkdTX0VORAorICAgIHJldHVybiBzcGFjZTsKK30KKwordm9pZCBKU1Rlc3REZWZhdWx0
VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQ6OmFuYWx5emVIZWFwKEpTQ2VsbCogY2VsbCwgSGVhcEFu
YWx5emVyJiBhbmFseXplcikKK3sKKyAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVz
dERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZCo+KGNlbGwpOworICAgIGFuYWx5emVyLnNl
dFdyYXBwZWRPYmplY3RGb3JDZWxsKGNlbGwsICZ0aGlzT2JqZWN0LT53cmFwcGVkKCkpOworICAg
IGlmICh0aGlzT2JqZWN0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCisgICAgICAgIGFuYWx5
emVyLnNldExhYmVsRm9yQ2VsbChjZWxsLCAidXJsICIgKyB0aGlzT2JqZWN0LT5zY3JpcHRFeGVj
dXRpb25Db250ZXh0KCktPnVybCgpLnN0cmluZygpKTsKKyAgICBCYXNlOjphbmFseXplSGVhcChj
ZWxsLCBhbmFseXplcik7Cit9CisKK2Jvb2wgSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlF
eHBvc2VkT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6
VW5rbm93bj4gaGFuZGxlLCB2b2lkKiwgU2xvdFZpc2l0b3ImIHZpc2l0b3IsIGNvbnN0IGNoYXIq
KiByZWFzb24pCit7CisgICAgVU5VU0VEX1BBUkFNKGhhbmRsZSk7CisgICAgVU5VU0VEX1BBUkFN
KHZpc2l0b3IpOworICAgIFVOVVNFRF9QQVJBTShyZWFzb24pOworICAgIHJldHVybiBmYWxzZTsK
K30KKwordm9pZCBKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWRPd25lcjo6Zmlu
YWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqIGNvbnRleHQpCit7
CisgICAgYXV0byoganNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkID0gc3RhdGlj
X2Nhc3Q8SlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkKj4oaGFuZGxlLnNsb3Qo
KS0+YXNDZWxsKCkpOworICAgIGF1dG8mIHdvcmxkID0gKnN0YXRpY19jYXN0PERPTVdyYXBwZXJX
b3JsZCo+KGNvbnRleHQpOworICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxkLCAmanNUZXN0RGVmYXVs
dFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkLT53cmFwcGVkKCksIGpzVGVzdERlZmF1bHRUb0pTT05G
aWx0ZXJlZEJ5RXhwb3NlZCk7Cit9CisKKyNpZiBFTkFCTEUoQklORElOR19JTlRFR1JJVFkpCisj
aWYgUExBVEZPUk0oV0lOKQorI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQ0ODMpCitleHRlcm4g
IkMiIHsgZXh0ZXJuIHZvaWQgKCpjb25zdCBfX2lkZW50aWZpZXIoIj8/XzdUZXN0RGVmYXVsdFRv
SlNPTkZpbHRlcmVkQnlFeHBvc2VkQFdlYkNvcmVAQDZCQCIpW10pKCk7IH0KKyNlbHNlCitleHRl
cm4gIkMiIHsgZXh0ZXJuIHZvaWQqIF9aVFZON1dlYkNvcmUzNFRlc3REZWZhdWx0VG9KU09ORmls
dGVyZWRCeUV4cG9zZWRFW107IH0KKyNlbmRpZgorI2VuZGlmCisKK0pTQzo6SlNWYWx1ZSB0b0pT
TmV3bHlDcmVhdGVkKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBSZWY8VGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZD4mJiBpbXBs
KQoreworCisjaWYgRU5BQkxFKEJJTkRJTkdfSU5URUdSSVRZKQorICAgIGNvbnN0IHZvaWQqIGFj
dHVhbFZUYWJsZVBvaW50ZXIgPSBnZXRWVGFibGVQb2ludGVyKGltcGwucHRyKCkpOworI2lmIFBM
QVRGT1JNKFdJTikKKyAgICB2b2lkKiBleHBlY3RlZFZUYWJsZVBvaW50ZXIgPSBfX2lkZW50aWZp
ZXIoIj8/XzdUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkQFdlYkNvcmVAQDZCQCIp
OworI2Vsc2UKKyAgICB2b2lkKiBleHBlY3RlZFZUYWJsZVBvaW50ZXIgPSAmX1pUVk43V2ViQ29y
ZTM0VGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZEVbMl07CisjZW5kaWYKKworICAg
IC8vIElmIHRoaXMgZmFpbHMgVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZCBkb2Vz
IG5vdCBoYXZlIGEgdnRhYmxlLCBzbyB5b3UgbmVlZCB0byBhZGQgdGhlCisgICAgLy8gSW1wbGVt
ZW50YXRpb25MYWNrc1ZUYWJsZSBhdHRyaWJ1dGUgdG8gdGhlIGludGVyZmFjZSBkZWZpbml0aW9u
CisgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3BvbHltb3JwaGljPFRlc3REZWZhdWx0VG9KU09O
RmlsdGVyZWRCeUV4cG9zZWQ+Ojp2YWx1ZSwgIlRlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4
cG9zZWQgaXMgbm90IHBvbHltb3JwaGljIik7CisKKyAgICAvLyBJZiB5b3UgaGl0IHRoaXMgYXNz
ZXJ0aW9uIHlvdSBlaXRoZXIgaGF2ZSBhIHVzZSBhZnRlciBmcmVlIGJ1Zywgb3IKKyAgICAvLyBU
ZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkIGhhcyBzdWJjbGFzc2VzLiBJZiBUZXN0
RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkIGhhcyBzdWJjbGFzc2VzIHRoYXQgZ2V0IHBh
c3NlZAorICAgIC8vIHRvIHRvSlMoKSB3ZSBjdXJyZW50bHkgcmVxdWlyZSBUZXN0RGVmYXVsdFRv
SlNPTkZpbHRlcmVkQnlFeHBvc2VkIHlvdSB0byBvcHQgb3V0IG9mIGJpbmRpbmcgaGFyZGVuaW5n
CisgICAgLy8gYnkgYWRkaW5nIHRoZSBTa2lwVlRhYmxlVmFsaWRhdGlvbiBhdHRyaWJ1dGUgdG8g
dGhlIGludGVyZmFjZSBJREwgZGVmaW5pdGlvbgorICAgIFJFTEVBU0VfQVNTRVJUKGFjdHVhbFZU
YWJsZVBvaW50ZXIgPT0gZXhwZWN0ZWRWVGFibGVQb2ludGVyKTsKKyNlbmRpZgorICAgIHJldHVy
biBjcmVhdGVXcmFwcGVyPFRlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQ+KGdsb2Jh
bE9iamVjdCwgV1RGTW92ZShpbXBsKSk7Cit9CisKK0pTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6SlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFRlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQmIGltcGwpCit7Cisg
ICAgcmV0dXJuIHdyYXAobGV4aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LCBpbXBsKTsK
K30KKworVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZCogSlNUZXN0RGVmYXVsdFRv
SlNPTkZpbHRlcmVkQnlFeHBvc2VkOjp0b1dyYXBwZWQoSlNDOjpWTSYgdm0sIEpTQzo6SlNWYWx1
ZSB2YWx1ZSkKK3sKKyAgICBpZiAoYXV0byogd3JhcHBlciA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0
RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkKj4odm0sIHZhbHVlKSkKKyAgICAgICAgcmV0
dXJuICZ3cmFwcGVyLT53cmFwcGVkKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK30KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0
VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBv
c2VkLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsOTMgQEAKKy8qCisgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdl
YktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgorICAgIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0
ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCisKKyAgICBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisg
ICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAg
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl
dGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJh
cnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo
IEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpbmNsdWRlICJKU0RPTVdyYXBwZXIuaCIKKyNpbmNsdWRlICJUZXN0RGVmYXVsdFRv
SlNPTkZpbHRlcmVkQnlFeHBvc2VkLmgiCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRl
cmVkQnlFeHBvc2VkIDogcHVibGljIEpTRE9NV3JhcHBlcjxUZXN0RGVmYXVsdFRvSlNPTkZpbHRl
cmVkQnlFeHBvc2VkPiB7CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IEpTRE9NV3JhcHBlcjxU
ZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkPjsKKyAgICBzdGF0aWMgSlNUZXN0RGVm
YXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkKiBjcmVhdGUoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3REZWZhdWx0VG9K
U09ORmlsdGVyZWRCeUV4cG9zZWQ+JiYgaW1wbCkKKyAgICB7CisgICAgICAgIEpTVGVzdERlZmF1
bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZCogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9j
YXRlQ2VsbDxKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQ+KGdsb2JhbE9iamVj
dC0+dm0oKS5oZWFwKSkgSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkKHN0cnVj
dHVyZSwgKmdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7CisgICAgICAgIHB0ci0+ZmluaXNo
Q3JlYXRpb24oZ2xvYmFsT2JqZWN0LT52bSgpKTsKKyAgICAgICAgcmV0dXJuIHB0cjsKKyAgICB9
CisKKyAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogY3JlYXRlUHJvdG90eXBlKEpTQzo6Vk0mLCBK
U0RPTUdsb2JhbE9iamVjdCYpOworICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBwcm90b3R5cGUo
SlNDOjpWTSYsIEpTRE9NR2xvYmFsT2JqZWN0Jik7CisgICAgc3RhdGljIFRlc3REZWZhdWx0VG9K
U09ORmlsdGVyZWRCeUV4cG9zZWQqIHRvV3JhcHBlZChKU0M6OlZNJiwgSlNDOjpKU1ZhbHVlKTsK
KyAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQzo6SlNDZWxsKik7CisKKyAgICBERUNMQVJFX0lO
Rk87CisKKyAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZN
JiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJv
dG90eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0s
IGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwg
U3RydWN0dXJlRmxhZ3MpLCBpbmZvKCksIEpTQzo6Tm9uQXJyYXkpOworICAgIH0KKworICAgIHN0
YXRpYyBKU0M6OkpTVmFsdWUgZ2V0Q29uc3RydWN0b3IoSlNDOjpWTSYsIGNvbnN0IEpTQzo6SlNH
bG9iYWxPYmplY3QqKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSwgSlNDOjpTdWJzcGFjZUFjY2Vz
cyBtb2RlPiBzdGF0aWMgSlNDOjpJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoSlNDOjpWTSYgdm0p
CisgICAgeworICAgICAgICBpZiBjb25zdGV4cHIgKG1vZGUgPT0gSlNDOjpTdWJzcGFjZUFjY2Vz
czo6Q29uY3VycmVudGx5KQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJl
dHVybiBzdWJzcGFjZUZvckltcGwodm0pOworICAgIH0KKyAgICBzdGF0aWMgSlNDOjpJc29TdWJz
cGFjZSogc3Vic3BhY2VGb3JJbXBsKEpTQzo6Vk0mIHZtKTsKKyAgICBzdGF0aWMgdm9pZCBhbmFs
eXplSGVhcChKU0NlbGwqLCBKU0M6OkhlYXBBbmFseXplciYpOworcHJvdGVjdGVkOgorICAgIEpT
VGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZChKU0M6OlN0cnVjdHVyZSosIEpTRE9N
R2xvYmFsT2JqZWN0JiwgUmVmPFRlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQ+JiYp
OworCisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJik7Cit9OworCitjbGFzcyBKU1Rl
c3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWRPd25lciA6IHB1YmxpYyBKU0M6OldlYWtI
YW5kbGVPd25lciB7CitwdWJsaWM6CisgICAgdmlydHVhbCBib29sIGlzUmVhY2hhYmxlRnJvbU9w
YXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4sIHZvaWQqIGNvbnRleHQsIEpTQzo6
U2xvdFZpc2l0b3ImLCBjb25zdCBjaGFyKiopOworICAgIHZpcnR1YWwgdm9pZCBmaW5hbGl6ZShK
U0M6OkhhbmRsZTxKU0M6OlVua25vd24+LCB2b2lkKiBjb250ZXh0KTsKK307CisKK2lubGluZSBK
U0M6OldlYWtIYW5kbGVPd25lciogd3JhcHBlck93bmVyKERPTVdyYXBwZXJXb3JsZCYsIFRlc3RE
ZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQqKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWRPd25lcj4gb3duZXI7Cisg
ICAgcmV0dXJuICZvd25lci5nZXQoKTsKK30KKworaW5saW5lIHZvaWQqIHdyYXBwZXJLZXkoVGVz
dERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZCogd3JhcHBhYmxlT2JqZWN0KQoreworICAg
IHJldHVybiB3cmFwcGFibGVPYmplY3Q7Cit9CisKK0pTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6SlNH
bG9iYWxPYmplY3QqLCBKU0RPTUdsb2JhbE9iamVjdCosIFRlc3REZWZhdWx0VG9KU09ORmlsdGVy
ZWRCeUV4cG9zZWQmKTsKK2lubGluZSBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkKiBpbXBsKSB7IHJldHVybiBpbXBs
ID8gdG9KUyhsZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QsICppbXBsKSA6IEpTQzo6
anNOdWxsKCk7IH0KK0pTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpTQzo6SlNHbG9iYWxP
YmplY3QqLCBKU0RPTUdsb2JhbE9iamVjdCosIFJlZjxUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVk
QnlFeHBvc2VkPiYmKTsKK2lubGluZSBKU0M6OkpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChKU0M6
OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0RPTUdsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBSZWZQdHI8VGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZD4m
JiBpbXBsKSB7IHJldHVybiBpbXBsID8gdG9KU05ld2x5Q3JlYXRlZChsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBnbG9iYWxPYmplY3QsIGltcGwucmVsZWFzZU5vbk51bGwoKSkgOiBKU0M6OmpzTnVsbCgp
OyB9CisKK3RlbXBsYXRlPD4gc3RydWN0IEpTRE9NV3JhcHBlckNvbnZlcnRlclRyYWl0czxUZXN0
RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkPiB7CisgICAgdXNpbmcgV3JhcHBlckNsYXNz
ID0gSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkOworICAgIHVzaW5nIFRvV3Jh
cHBlZFJldHVyblR5cGUgPSBUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkKjsKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1dvcmtlckdsb2JhbFNjb3BlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNXb3JrZXJHbG9iYWxTY29w
ZS5jcHAJKHJldmlzaW9uIDI2NzMxOSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1dvcmtlckdsb2JhbFNjb3BlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjks
NiArMjksNyBAQAogI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKICNpbmNsdWRl
ICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIkpTRXhwb3NlZFRvV29ya2VyQW5kV2lu
ZG93LmgiCisjaW5jbHVkZSAiSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkLmgi
CiAjaW5jbHVkZSAiSlNUZXN0Tm9kZS5oIgogI2luY2x1ZGUgIkpTVGVzdE9iai5oIgogI2luY2x1
ZGUgIkpTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudC5oIgpAQCAtNTMsNiArNTQsOCBAQCBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzV29ya2VyR2xvYmFsU2NvcGVDCiBib29sIHNldEpTV29ya2VyR2xv
YmFsU2NvcGVDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNW
YWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzV29ya2Vy
R2xvYmFsU2NvcGVFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3dDb25zdHJ1Y3RvcihKU0M6OkpTR2xv
YmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogYm9v
bCBzZXRKU1dvcmtlckdsb2JhbFNjb3BlRXhwb3NlZFRvV29ya2VyQW5kV2luZG93Q29uc3RydWN0
b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUpOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1dvcmtlckdsb2JhbFNjb3BlVGVzdERl
ZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZENvbnN0cnVjdG9yKEpTQzo6SlNHbG9iYWxPYmpl
Y3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Citib29sIHNldEpT
V29ya2VyR2xvYmFsU2NvcGVUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkQ29uc3Ry
dWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5j
b2RlZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1dvcmtlckdsb2JhbFNjb3BlVGVz
dE5vZGVDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1
ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogYm9vbCBzZXRKU1dvcmtlckdsb2JhbFNjb3BlVGVzdE5v
ZGVDb25zdHJ1Y3RvcihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwg
SlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzV29ya2VyR2xvYmFs
U2NvcGVUZXN0T2JqZWN0Q29uc3RydWN0b3IoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RW5j
b2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKQEAgLTY0LDE2ICs2NywyNCBAQCB1c2lu
ZyBKU1dvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3IgPSBKCiAKIC8qIEhhc2ggdGFibGUgKi8K
IAotc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTV29ya2VyR2xvYmFsU2Nv
cGVUYWJsZUluZGV4WzEwXSA9IHsKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRl
eCBKU1dvcmtlckdsb2JhbFNjb3BlVGFibGVJbmRleFsxOF0gPSB7CisgICAgeyAtMSwgLTEgfSwK
KyAgICB7IDAsIDE2IH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAogICAgIHsg
LTEsIC0xIH0sCi0gICAgeyAwLCA4IH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9
LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IDMsIC0xIH0sCiAgICAg
eyAtMSwgLTEgfSwKLSAgICB7IDEsIDkgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0x
IH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IDQsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAg
ICB7IDEsIDE3IH0sCiAgICAgeyAyLCAtMSB9LAogfTsKIApAQCAtODEsMTIgKzkyLDEzIEBAIHN0
YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBKU1cKIHN0YXRpYyBjb25zdCBIYXNo
VGFibGVWYWx1ZSBKU1dvcmtlckdsb2JhbFNjb3BlVGFibGVWYWx1ZXNbXSA9CiB7CiAgICAgeyAi
RXhwb3NlZFRvV29ya2VyQW5kV2luZG93Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRp
Y19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1dvcmtlckdsb2JhbFNjb3BlRXhw
b3NlZFRvV29ya2VyQW5kV2luZG93Q29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0
PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1dvcmtlckdsb2JhbFNjb3BlRXhw
b3NlZFRvV29ya2VyQW5kV2luZG93Q29uc3RydWN0b3IpIH0gfSwKKyAgICB7ICJUZXN0RGVmYXVs
dFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRp
Y19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1dvcmtlckdsb2JhbFNjb3BlVGVz
dERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZENvbnN0cnVjdG9yKSwgKGludHB0cl90KSBz
dGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNXb3JrZXJHbG9i
YWxTY29wZVRlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWRDb25zdHJ1Y3RvcikgfSB9
LAogICAgIHsgIlRlc3ROb2RlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0
PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1dvcmtlckdsb2JhbFNjb3BlVGVzdE5vZGVD
b25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRW
YWx1ZUZ1bmM+KHNldEpTV29ya2VyR2xvYmFsU2NvcGVUZXN0Tm9kZUNvbnN0cnVjdG9yKSB9IH0s
CiAgICAgeyAiVGVzdE9iamVjdCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2Fz
dDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNXb3JrZXJHbG9iYWxTY29wZVRlc3RPYmpl
Y3RDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KHNldEpTV29ya2VyR2xvYmFsU2NvcGVUZXN0T2JqZWN0Q29uc3RydWN0b3Ip
IH0gfSwKICAgICB7ICJUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Iiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1dvcmtl
ckdsb2JhbFNjb3BlVGVzdFByb21pc2VSZWplY3Rpb25FdmVudENvbnN0cnVjdG9yKSwgKGludHB0
cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNXb3Jr
ZXJHbG9iYWxTY29wZVRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRDb25zdHJ1Y3RvcikgfSB9LAog
fTsKIAotc3RhdGljIGNvbnN0IEhhc2hUYWJsZSBKU1dvcmtlckdsb2JhbFNjb3BlVGFibGUgPSB7
IDQsIDcsIHRydWUsIEpTV29ya2VyR2xvYmFsU2NvcGU6OmluZm8oKSwgSlNXb3JrZXJHbG9iYWxT
Y29wZVRhYmxlVmFsdWVzLCBKU1dvcmtlckdsb2JhbFNjb3BlVGFibGVJbmRleCB9Oworc3RhdGlj
IGNvbnN0IEhhc2hUYWJsZSBKU1dvcmtlckdsb2JhbFNjb3BlVGFibGUgPSB7IDUsIDE1LCB0cnVl
LCBKU1dvcmtlckdsb2JhbFNjb3BlOjppbmZvKCksIEpTV29ya2VyR2xvYmFsU2NvcGVUYWJsZVZh
bHVlcywgSlNXb3JrZXJHbG9iYWxTY29wZVRhYmxlSW5kZXggfTsKIHRlbXBsYXRlPD4gSlNWYWx1
ZSBKU1dvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShK
U0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAg
ICByZXR1cm4gSlNFdmVudFRhcmdldDo6Z2V0Q29uc3RydWN0b3Iodm0sICZnbG9iYWxPYmplY3Qp
OwpAQCAtMjA1LDYgKzIxNywyOSBAQCBib29sIHNldEpTV29ya2VyR2xvYmFsU2NvcGVFeHBvc2Vk
VG9Xb3JrCiAgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1dvcmtlckdsb2JhbFNjb3BlPjo6c2V0
PHNldEpTV29ya2VyR2xvYmFsU2NvcGVFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3dDb25zdHJ1Y3Rv
clNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAi
RXhwb3NlZFRvV29ya2VyQW5kV2luZG93Iik7CiB9CiAKK3N0YXRpYyBpbmxpbmUgSlNWYWx1ZSBq
c1dvcmtlckdsb2JhbFNjb3BlVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZENvbnN0
cnVjdG9yR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1dvcmtl
ckdsb2JhbFNjb3BlJiB0aGlzT2JqZWN0KQoreworICAgIFVOVVNFRF9QQVJBTShsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKKyAgICByZXR1cm4gSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBv
c2VkOjpnZXRDb25zdHJ1Y3RvcihKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSwgdGhp
c09iamVjdC5nbG9iYWxPYmplY3QoKSk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIGpzV29ya2VyR2xv
YmFsU2NvcGVUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkQ29uc3RydWN0b3IoSlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lKQoreworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNXb3JrZXJHbG9i
YWxTY29wZT46OmdldDxqc1dvcmtlckdsb2JhbFNjb3BlVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJl
ZEJ5RXhwb3NlZENvbnN0cnVjdG9yR2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCAiVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZCIpOworfQorCitzdGF0aWMg
aW5saW5lIGJvb2wgc2V0SlNXb3JrZXJHbG9iYWxTY29wZVRlc3REZWZhdWx0VG9KU09ORmlsdGVy
ZWRCeUV4cG9zZWRDb25zdHJ1Y3RvclNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNXb3JrZXJHbG9iYWxTY29wZSYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkK
K3sKKyAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOworICAg
IC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yLgorICAgIHJldHVybiB0aGlzT2Jq
ZWN0LnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBMQ2hhcio+KCJUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkIiks
IHN0cmxlbigiVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZCIpKSwgdmFsdWUpOwor
fQorCitib29sIHNldEpTV29ya2VyR2xvYmFsU2NvcGVUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVk
QnlFeHBvc2VkQ29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQor
eworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNXb3JrZXJHbG9iYWxTY29wZT46OnNldDxzZXRK
U1dvcmtlckdsb2JhbFNjb3BlVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZENvbnN0
cnVjdG9yU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFs
dWUsICJUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlFeHBvc2VkIik7Cit9CisKIHN0YXRpYyBp
bmxpbmUgSlNWYWx1ZSBqc1dvcmtlckdsb2JhbFNjb3BlVGVzdE5vZGVDb25zdHJ1Y3RvckdldHRl
cihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNXb3JrZXJHbG9iYWxTY29w
ZSYgdGhpc09iamVjdCkKIHsKICAgICBVTlVTRURfUEFSQU0obGV4aWNhbEdsb2JhbE9iamVjdCk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlLmlkbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlLmlkbAkocmV2aXNpb24gMjY3MzE5KQor
KysgU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZS5pZGwJKHdvcmtpbmcgY29weSkKQEAg
LTQzLDggKzQzLDggQEAgdHlwZWRlZiBkb3VibGUgRE9NSGlnaFJlc1RpbWVTdGFtcDsKICAgICBb
RGVmYXVsdF0gb2JqZWN0IHRvSlNPTigpOwogCiAgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlv
L25hdmlnYXRpb24tdGltaW5nLyNleHRlbnNpb25zLXRvLXRoZS1wZXJmb3JtYW5jZS1pbnRlcmZh
Y2UKLSAgICByZWFkb25seSBhdHRyaWJ1dGUgUGVyZm9ybWFuY2VOYXZpZ2F0aW9uIG5hdmlnYXRp
b247Ci0gICAgcmVhZG9ubHkgYXR0cmlidXRlIFBlcmZvcm1hbmNlVGltaW5nIHRpbWluZzsKKyAg
ICBbRXhwb3NlZD1XaW5kb3ddIHJlYWRvbmx5IGF0dHJpYnV0ZSBQZXJmb3JtYW5jZU5hdmlnYXRp
b24gbmF2aWdhdGlvbjsKKyAgICBbRXhwb3NlZD1XaW5kb3ddIHJlYWRvbmx5IGF0dHJpYnV0ZSBQ
ZXJmb3JtYW5jZVRpbWluZyB0aW1pbmc7CiAKICAgICAvLyBodHRwczovL3czYy5naXRodWIuaW8v
cGVyZm9ybWFuY2UtdGltZWxpbmUvI2V4dGVuc2lvbnMtdG8tdGhlLXBlcmZvcm1hbmNlLWludGVy
ZmFjZQogICAgIFBlcmZvcm1hbmNlRW50cnlMaXN0IGdldEVudHJpZXMoKTsKSW5kZXg6IExheW91
dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI2NzMxOSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE1IEBACisyMDIwLTA5LTE5ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNv
bT4KKworICAgICAgICBQZXJmb3JtYW5jZS5uYXZpZ2F0aW9uIGFuZCBQZXJmb3JtYW5jZS50aW1p
bmcgYXJlIGluY29ycmVjdGx5IGV4cG9zZWQgdG8gd29ya2VycworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE2NzMyCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0RXhwZWN0YXRpb25zOgorICAgICAg
ICBSZW1vdmUgZmxha3kgYW5ub3RhdGlvbiBmb3IgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93b3JrZXJzL3dvcmtlci1wZXJmb3JtYW5jZS53b3JrZXIuaHRtbC4gVGhlCisgICAgICAg
IHRlc3Qgd2FzIGZpeGVkIGluIHVwc3RyZWFtIFdQVCBhcyBkYWI5YzQ1LCBhbmQgaGFzIHNpbmNl
IGJlZW4gdXBkYXRlZCBpbiB0aGUgV2ViS2l0IHRyZWUgYXMgd2VsbC4KKyAgICAgICAgSXQgbm93
IGFsc28gcGFzc2VzLgorCiAyMDIwLTA5LTE5ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNv
bT4KIAogICAgICAgICBSZXN5bmMgd2ViLXBsYXRmb3JtLXRlc3RzL2hyLXRpbWUgZnJvbSB1cHN0
cmVhbQpJbmRleDogTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCShyZXZpc2lvbiAyNjczMTkpCisrKyBMYXlvdXRU
ZXN0cy9UZXN0RXhwZWN0YXRpb25zCSh3b3JraW5nIGNvcHkpCkBAIC0yNzU3LDkgKzI3NTcsNiBA
QCB3ZWJraXQub3JnL2IvMTU4MjA1IGFwcGxpY2F0aW9ubWFuaWZlc3QvCiAKIHdlYmtpdC5vcmcv
Yi8xNzg3ODUgcGVyZi9vYmplY3Qta2V5cy5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIAotIyBUaGVy
ZSBpcyBhIGJ1ZyBpbiB0aGUgdGVzdAotaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
b3JrZXJzL3dvcmtlci1wZXJmb3JtYW5jZS53b3JrZXIuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCi0K
IHdlYmtpdC5vcmcvYi8xODMzOTAgaHR0cC93cHQvaHRtbC9icm93c2Vycy9oaXN0b3J5L3RoZS1s
b2NhdGlvbi1pbnRlcmZhY2UvbG9jYXRpb24tcHJvdG9jb2wtc2V0dGVyLW5vbi1icm9rZW4tYXN5
bmMtZGVsZWdhdGUuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKIHdlYmtpdC5vcmcvYi8xNzIyNDMg
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9JbmRleGVkREIvaWRiZGF0YWJhc2UtY3Jl
YXRlT2JqZWN0U3RvcmUtZXhjZXB0aW9uLW9yZGVyLmh0bSBbIFBhc3MgRmFpbHVyZSBdCkluZGV4
OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2NzMyMCkKKysrIExheW91
dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
NCBAQAorMjAyMC0wOS0xOSAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAg
ICAgUGVyZm9ybWFuY2UubmF2aWdhdGlvbiBhbmQgUGVyZm9ybWFuY2UudGltaW5nIGFyZSBpbmNv
cnJlY3RseSBleHBvc2VkIHRvIHdvcmtlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIxNjczMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvd29ya2VyLXBl
cmZvcm1hbmNlLndvcmtlci1leHBlY3RlZC50eHQ6CisgICAgICAgIFVwZGF0ZSByZXN1bHRzIG5v
dyB0aGF0IFBlcmZvcm1hbmNlLm5hdmlnYXRpb24gYW5kIFBlcmZvcm1hbmNlLnRpbWluZyBhcmUg
bm8gbG9uZ2VyCisgICAgICAgIGV4cG9zZWQgdG8gd29ya2Vycy4KKwogMjAyMC0wOS0xOSAgU2Ft
IFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CiAKICAgICAgICAgUGVyZm9ybWFuY2UgYW5kIFBl
cmZvcm1hbmNlTmF2aWdhdGlvbiBpbnRlcmZhY2VzIGFyZSBtaXNzaW5nIHRvSlNPTiBvcGVyYXRp
b25zCkluZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dv
cmtlcnMvd29ya2VyLXBlcmZvcm1hbmNlLndvcmtlci1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3dv
cmtlci1wZXJmb3JtYW5jZS53b3JrZXItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNjczMTkpCisr
KyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dvcmtlcnMvd29y
a2VyLXBlcmZvcm1hbmNlLndvcmtlci1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTks
OCArOSw4IEBAIFBBU1MgQ2FuIHVzZSBjbGVhck1hcmtzIGFuZCBjbGVhck1lYXN1cmUKIFBBU1Mg
UmVzb3VyY2UgdGltaW5nIHNlZW1zIHRvIHdvcmsgaW4gd29ya2VycyAKIFBBU1MgcGVyZm9ybWFu
Y2UuY2xlYXJSZXNvdXJjZVRpbWluZ3MgaW4gd29ya2VycyAKIFBBU1MgcGVyZm9ybWFuY2Uuc2V0
UmVzb3VyY2VUaW1pbmdCdWZmZXJTaXplIGluIHdvcmtlcnMgCi1GQUlMIHBlcmZvcm1hbmNlLnRp
bWluZyBpcyBub3QgYXZhaWxhYmxlIGluIHdvcmtlcnMgYXNzZXJ0X2VxdWFsczogcGVyZm9ybWFu
Y2UudGltaW5nIGlzIHVuZGVmaW5lZCBleHBlY3RlZCAidW5kZWZpbmVkIiBidXQgZ290ICJvYmpl
Y3QiCi1GQUlMIHBlcmZvcm1hbmNlLm5hdmlnYXRpb24gaXMgbm90IGF2YWlsYWJsZSBpbiB3b3Jr
ZXJzIGFzc2VydF9lcXVhbHM6IHBlcmZvcm1hbmNlLm5hdmlnYXRpb24gaXMgdW5kZWZpbmVkIGV4
cGVjdGVkICJ1bmRlZmluZWQiIGJ1dCBnb3QgIm9iamVjdCIKLUZBSUwgcGVyZm9ybWFuY2UudG9K
U09OIGlzIGF2YWlsYWJsZSBpbiB3b3JrZXJzIGFzc2VydF9lcXVhbHM6IHBlcmZvcm1hbmNlLnRv
SlNPTiBpcyBhIGZ1bmN0aW9uIGV4cGVjdGVkICJmdW5jdGlvbiIgYnV0IGdvdCAidW5kZWZpbmVk
IgorUEFTUyBwZXJmb3JtYW5jZS50aW1pbmcgaXMgbm90IGF2YWlsYWJsZSBpbiB3b3JrZXJzIAor
UEFTUyBwZXJmb3JtYW5jZS5uYXZpZ2F0aW9uIGlzIG5vdCBhdmFpbGFibGUgaW4gd29ya2VycyAK
K1BBU1MgcGVyZm9ybWFuY2UudG9KU09OIGlzIGF2YWlsYWJsZSBpbiB3b3JrZXJzIAogUEFTUyBU
aGVyZSBhcmUgbm8gbmF2aWdhdGlvbiB0eXBlIHBlcmZvcm1hbmNlIGVudHJpZXMgaW4gd29ya2Vy
cyAKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>409252</attachid>
            <date>2020-09-20 15:28:55 -0700</date>
            <delta_ts>2020-09-20 16:07:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216732-20200919123845.patch</filename>
            <type>text/plain</type>
            <size>5085</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2NzMxOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDIwLTA5LTE5ICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBQZXJmb3JtYW5jZS5uYXZpZ2F0aW9u
IGFuZCBQZXJmb3JtYW5jZS50aW1pbmcgYXJlIGluY29ycmVjdGx5IGV4cG9zZWQgdG8gd29ya2Vy
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE2NzMy
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwYWdl
L1BlcmZvcm1hbmNlLmlkbDoKKyAgICAgICAgT25seSBleHBvc2UgUGVyZm9ybWFuY2UubmF2aWdh
dGlvbiBhbmQgUGVyZm9ybWFuY2UudGltaW5nIHRvIHRoZSBXaW5kb3cuCisKIDIwMjAtMDktMTkg
IFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgogCiAgICAgICAgIFBlcmZvcm1hbmNlIGFu
ZCBQZXJmb3JtYW5jZU5hdmlnYXRpb24gaW50ZXJmYWNlcyBhcmUgbWlzc2luZyB0b0pTT04gb3Bl
cmF0aW9ucwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZS5pZGwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZS5pZGwJKHJldmlzaW9uIDI2
NzMxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2UuaWRsCSh3b3JraW5nIGNv
cHkpCkBAIC00Myw4ICs0Myw4IEBAIHR5cGVkZWYgZG91YmxlIERPTUhpZ2hSZXNUaW1lU3RhbXA7
CiAgICAgW0RlZmF1bHRdIG9iamVjdCB0b0pTT04oKTsKIAogICAgIC8vIGh0dHBzOi8vdzNjLmdp
dGh1Yi5pby9uYXZpZ2F0aW9uLXRpbWluZy8jZXh0ZW5zaW9ucy10by10aGUtcGVyZm9ybWFuY2Ut
aW50ZXJmYWNlCi0gICAgcmVhZG9ubHkgYXR0cmlidXRlIFBlcmZvcm1hbmNlTmF2aWdhdGlvbiBu
YXZpZ2F0aW9uOwotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBQZXJmb3JtYW5jZVRpbWluZyB0aW1p
bmc7CisgICAgW0V4cG9zZWQ9V2luZG93XSByZWFkb25seSBhdHRyaWJ1dGUgUGVyZm9ybWFuY2VO
YXZpZ2F0aW9uIG5hdmlnYXRpb247CisgICAgW0V4cG9zZWQ9V2luZG93XSByZWFkb25seSBhdHRy
aWJ1dGUgUGVyZm9ybWFuY2VUaW1pbmcgdGltaW5nOwogCiAgICAgLy8gaHR0cHM6Ly93M2MuZ2l0
aHViLmlvL3BlcmZvcm1hbmNlLXRpbWVsaW5lLyNleHRlbnNpb25zLXRvLXRoZS1wZXJmb3JtYW5j
ZS1pbnRlcmZhY2UKICAgICBQZXJmb3JtYW5jZUVudHJ5TGlzdCBnZXRFbnRyaWVzKCk7CkluZGV4
OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCShyZXZpc2lvbiAyNjczMTkpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAyMC0wOS0xOSAgU2FtIFdlaW5pZyAgPHdlaW5pZ0Bh
cHBsZS5jb20+CisKKyAgICAgICAgUGVyZm9ybWFuY2UubmF2aWdhdGlvbiBhbmQgUGVyZm9ybWFu
Y2UudGltaW5nIGFyZSBpbmNvcnJlY3RseSBleHBvc2VkIHRvIHdvcmtlcnMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNjczMgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdEV4cGVjdGF0aW9uczoK
KyAgICAgICAgUmVtb3ZlIGZsYWt5IGFubm90YXRpb24gZm9yIGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd29ya2Vycy93b3JrZXItcGVyZm9ybWFuY2Uud29ya2VyLmh0bWwuIFRoZQor
ICAgICAgICB0ZXN0IHdhcyBmaXhlZCBpbiB1cHN0cmVhbSBXUFQgYXMgZGFiOWM0NSwgYW5kIGhh
cyBzaW5jZSBiZWVuIHVwZGF0ZWQgaW4gdGhlIFdlYktpdCB0cmVlIGFzIHdlbGwuCisgICAgICAg
IEl0IG5vdyBhbHNvIHBhc3Nlcy4KKwogMjAyMC0wOS0xOSAgU2FtIFdlaW5pZyAgPHdlaW5pZ0Bh
cHBsZS5jb20+CiAKICAgICAgICAgUmVzeW5jIHdlYi1wbGF0Zm9ybS10ZXN0cy9oci10aW1lIGZy
b20gdXBzdHJlYW0KSW5kZXg6IExheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwkocmV2aXNpb24gMjY3MzE5KQorKysg
TGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwkod29ya2luZyBjb3B5KQpAQCAtMjc1Nyw5ICsy
NzU3LDYgQEAgd2Via2l0Lm9yZy9iLzE1ODIwNSBhcHBsaWNhdGlvbm1hbmlmZXN0LwogCiB3ZWJr
aXQub3JnL2IvMTc4Nzg1IHBlcmYvb2JqZWN0LWtleXMuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAK
LSMgVGhlcmUgaXMgYSBidWcgaW4gdGhlIHRlc3QKLWltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd29ya2Vycy93b3JrZXItcGVyZm9ybWFuY2Uud29ya2VyLmh0bWwgWyBQYXNzIEZhaWx1
cmUgXQotCiB3ZWJraXQub3JnL2IvMTgzMzkwIGh0dHAvd3B0L2h0bWwvYnJvd3NlcnMvaGlzdG9y
eS90aGUtbG9jYXRpb24taW50ZXJmYWNlL2xvY2F0aW9uLXByb3RvY29sLXNldHRlci1ub24tYnJv
a2VuLWFzeW5jLWRlbGVnYXRlLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCiB3ZWJraXQub3JnL2Iv
MTcyMjQzIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvSW5kZXhlZERCL2lkYmRhdGFi
YXNlLWNyZWF0ZU9iamVjdFN0b3JlLWV4Y2VwdGlvbi1vcmRlci5odG0gWyBQYXNzIEZhaWx1cmUg
XQpJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjczMjApCisr
KyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMTQgQEAKKzIwMjAtMDktMTkgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgor
CisgICAgICAgIFBlcmZvcm1hbmNlLm5hdmlnYXRpb24gYW5kIFBlcmZvcm1hbmNlLnRpbWluZyBh
cmUgaW5jb3JyZWN0bHkgZXhwb3NlZCB0byB3b3JrZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTY3MzIKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93b3JrZXJzL3dv
cmtlci1wZXJmb3JtYW5jZS53b3JrZXItZXhwZWN0ZWQudHh0OgorICAgICAgICBVcGRhdGUgcmVz
dWx0cyBub3cgdGhhdCBQZXJmb3JtYW5jZS5uYXZpZ2F0aW9uIGFuZCBQZXJmb3JtYW5jZS50aW1p
bmcgYXJlIG5vIGxvbmdlcgorICAgICAgICBleHBvc2VkIHRvIHdvcmtlcnMuCisKIDIwMjAtMDkt
MTkgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgogCiAgICAgICAgIFBlcmZvcm1hbmNl
IGFuZCBQZXJmb3JtYW5jZU5hdmlnYXRpb24gaW50ZXJmYWNlcyBhcmUgbWlzc2luZyB0b0pTT04g
b3BlcmF0aW9ucwpJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93b3JrZXJzL3dvcmtlci1wZXJmb3JtYW5jZS53b3JrZXItZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd29y
a2Vycy93b3JrZXItcGVyZm9ybWFuY2Uud29ya2VyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjY3
MzE5KQorKysgTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93b3Jr
ZXJzL3dvcmtlci1wZXJmb3JtYW5jZS53b3JrZXItZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkp
CkBAIC05LDggKzksOCBAQCBQQVNTIENhbiB1c2UgY2xlYXJNYXJrcyBhbmQgY2xlYXJNZWFzdXJl
CiBQQVNTIFJlc291cmNlIHRpbWluZyBzZWVtcyB0byB3b3JrIGluIHdvcmtlcnMgCiBQQVNTIHBl
cmZvcm1hbmNlLmNsZWFyUmVzb3VyY2VUaW1pbmdzIGluIHdvcmtlcnMgCiBQQVNTIHBlcmZvcm1h
bmNlLnNldFJlc291cmNlVGltaW5nQnVmZmVyU2l6ZSBpbiB3b3JrZXJzIAotRkFJTCBwZXJmb3Jt
YW5jZS50aW1pbmcgaXMgbm90IGF2YWlsYWJsZSBpbiB3b3JrZXJzIGFzc2VydF9lcXVhbHM6IHBl
cmZvcm1hbmNlLnRpbWluZyBpcyB1bmRlZmluZWQgZXhwZWN0ZWQgInVuZGVmaW5lZCIgYnV0IGdv
dCAib2JqZWN0IgotRkFJTCBwZXJmb3JtYW5jZS5uYXZpZ2F0aW9uIGlzIG5vdCBhdmFpbGFibGUg
aW4gd29ya2VycyBhc3NlcnRfZXF1YWxzOiBwZXJmb3JtYW5jZS5uYXZpZ2F0aW9uIGlzIHVuZGVm
aW5lZCBleHBlY3RlZCAidW5kZWZpbmVkIiBidXQgZ290ICJvYmplY3QiCi1GQUlMIHBlcmZvcm1h
bmNlLnRvSlNPTiBpcyBhdmFpbGFibGUgaW4gd29ya2VycyBhc3NlcnRfZXF1YWxzOiBwZXJmb3Jt
YW5jZS50b0pTT04gaXMgYSBmdW5jdGlvbiBleHBlY3RlZCAiZnVuY3Rpb24iIGJ1dCBnb3QgInVu
ZGVmaW5lZCIKK1BBU1MgcGVyZm9ybWFuY2UudGltaW5nIGlzIG5vdCBhdmFpbGFibGUgaW4gd29y
a2VycyAKK1BBU1MgcGVyZm9ybWFuY2UubmF2aWdhdGlvbiBpcyBub3QgYXZhaWxhYmxlIGluIHdv
cmtlcnMgCitQQVNTIHBlcmZvcm1hbmNlLnRvSlNPTiBpcyBhdmFpbGFibGUgaW4gd29ya2VycyAK
IFBBU1MgVGhlcmUgYXJlIG5vIG5hdmlnYXRpb24gdHlwZSBwZXJmb3JtYW5jZSBlbnRyaWVzIGlu
IHdvcmtlcnMgCiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>