<?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>217667</bug_id>
          
          <creation_ts>2020-10-13 14:13:29 -0700</creation_ts>
          <short_desc>[WebIDL] Add support for identifiers with dashes (&apos;-&apos;)</short_desc>
          <delta_ts>2020-10-14 09:16:07 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>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>
          
          <blocked>217623</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>cdumez</cc>
    
    <cc>darin</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1697396</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-10-13 14:13:29 -0700</bug_when>
    <thetext>[WebIDL] Add support for identifiers with hyphens (&apos;-&apos;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1697415</commentid>
    <comment_count>1</comment_count>
      <attachid>411258</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-10-13 14:40:17 -0700</bug_when>
    <thetext>Created attachment 411258
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1697426</commentid>
    <comment_count>2</comment_count>
      <attachid>411258</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-10-13 15:00:07 -0700</bug_when>
    <thetext>Comment on attachment 411258
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=411258&amp;action=review

&gt; Source/WebCore/ChangeLog:12
&gt; +        Update identifer regular expression to match current spec which allows for dashes (&apos;-&apos;).

identifer

&gt; Source/WebCore/ChangeLog:19
&gt; +        underscores (&apos;__&apos;), as that is not likely to ever appear in an identifier.

C++ reserves identifiers containing double underscores. https://en.cppreference.com/w/cpp/language/identifiers

Maybe &quot;_dash_&quot;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1697430</commentid>
    <comment_count>3</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-10-13 15:07:00 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #2)
&gt; Comment on attachment 411258 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=411258&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:12
&gt; &gt; +        Update identifer regular expression to match current spec which allows for dashes (&apos;-&apos;).
&gt; 
&gt; identifer
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:19
&gt; &gt; +        underscores (&apos;__&apos;), as that is not likely to ever appear in an identifier.
&gt; 
&gt; C++ reserves identifiers containing double underscores.
&gt; https://en.cppreference.com/w/cpp/language/identifiers

Oh, interesting. I for some reason always thought it was double underscores at the beginning of an identifier, but no, it&apos;s anywhere.

&gt; 
&gt; Maybe &quot;_dash_&quot;?

That seems good. Will update. Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1697433</commentid>
    <comment_count>4</comment_count>
      <attachid>411264</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-10-13 15:09:45 -0700</bug_when>
    <thetext>Created attachment 411264
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1697446</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-10-13 15:23:24 -0700</bug_when>
    <thetext>Unicode names the ASCII character &quot;hyphen-minus&quot;. So we are being super colloquial calling it a &quot;dash&quot;. But that word seems friendly enough.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1697486</commentid>
    <comment_count>6</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-10-13 16:07:33 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #5)
&gt; Unicode names the ASCII character &quot;hyphen-minus&quot;. So we are being super
&gt; colloquial calling it a &quot;dash&quot;. But that word seems friendly enough.

Sorry, a bit unclear here. Are you suggesting I change it from &quot;_dash_&quot; to something else?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1697509</commentid>
    <comment_count>7</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-10-13 17:06:42 -0700</bug_when>
    <thetext>No. Just musing on whether this character is a &quot;dash&quot; or a &quot;hyphen&quot;, don’t really care which name we chose.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1697514</commentid>
    <comment_count>8</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-10-13 17:14:19 -0700</bug_when>
    <thetext>Committed r268435: &lt;https://trac.webkit.org/changeset/268435&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 411264.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1697515</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-10-13 17:15:26 -0700</bug_when>
    <thetext>&lt;rdar://problem/70272997&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1697737</commentid>
    <comment_count>10</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-10-14 09:16:07 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #7)
&gt; No. Just musing on whether this character is a &quot;dash&quot; or a &quot;hyphen&quot;, don’t
&gt; really care which name we chose.

Heh. I clearly had the same musing as the test case still uses &quot;hyphen&quot; :). I went back and forth a few times.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411258</attachid>
            <date>2020-10-13 14:40:17 -0700</date>
            <delta_ts>2020-10-13 15:09:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217667-20201013144017.patch</filename>
            <type>text/plain</type>
            <size>30692</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2ODQxOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM3IEBACisyMDIwLTEwLTEzICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViSURMXSBBZGQgc3VwcG9ydCBm
b3IgaWRlbnRpZmllcnMgd2l0aCBkYXNoZXMgKCctJykgCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTc2NjcKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUbyBzdXBwb3J0IENTU1N0eWxlRGVjbGFyYXRpb24u
aWRsIGNvcnJlY3RseSwgd2UgbmVlZCB0byBhZGQgc3VwcG9ydCBmb3IgZGFzaGVzICgnLScpCisg
ICAgICAgIGluIFdlYklETCBpZGVudGlmZXJzLgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy9JRExQYXJzZXIucG06CisgICAgICAgIFVwZGF0ZSBpZGVudGlmZXIgcmVndWxhciBleHByZXNz
aW9uIHRvIG1hdGNoIGN1cnJlbnQgc3BlYyB3aGljaCBhbGxvd3MgZm9yIGRhc2hlcyAoJy0nKS4K
KworICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAg
ICAoTWFuZ2xlQXR0cmlidXRlT3JGdW5jdGlvbk5hbWUpOgorICAgICAgICBIZWxwZXIgdG8gY2Vu
dHJhbGl6ZSBtYW5nbGluZyByZXF1aXJlZCB0byBjb25zdHJ1Y3QgdmFsaWQgYysrIGlkZW50aWZp
ZXJzIGZyb20gdGhlIFdlYklETAorICAgICAgICBpZGVudGlmaWVycywgc2luY2Ugbm93IFdlYklE
TCBpZGVudGlmaWVycyBjYW4gY29udGFpbiBkYXNoZXMgKCctJyksIHdoaWNoIGlzIG5vdCB2YWxp
ZCBpbiAKKyAgICAgICAgYysrLiBGb3Igbm93LCB3ZSB1c2UgYSB2ZXJ5IHNpbXBsZSBtYW5nbGlu
ZyB3aGljaCByZXBsYWNlcyBhbGwgZGFzaGVzICgnLScpIHdpdGggdHdvIAorICAgICAgICB1bmRl
cnNjb3JlcyAoJ19fJyksIGFzIHRoYXQgaXMgbm90IGxpa2VseSB0byBldmVyIGFwcGVhciBpbiBh
biBpZGVudGlmaWVyLgorIAorICAgICAgICAoR2V0QXR0cmlidXRlR2V0dGVyTmFtZSk6CisgICAg
ICAgIChHZXRBdHRyaWJ1dGVTZXR0ZXJOYW1lKToKKyAgICAgICAgKEdldEZ1bmN0aW9uTmFtZSk6
CisgICAgICAgIENsYXJpZnkgYW5kIGNsZWFudXAgbG9naWMgYSBiaXQgYW5kIGNhbGwgdGhlIG5l
dyBtYW5nbGVyLgorCisgICAgICAgIChHZW5lcmF0ZUltcGxlbWVudGF0aW9uKToKKyAgICAgICAg
R2V0QXR0cmlidXRlR2V0dGVyTmFtZSB3aWxsIG5vdyBhbHdheXMgdXNlIHRoZSAkY2xhc3NOYW1l
LCBzbyB0aGlzIGNhbGxlciBuZWVkcyB0byBhY3R1YWxseQorICAgICAgICBwYXNzIHRoZSByaWdo
dCB2YWx1ZSBpbi4gUHJldmlvdXNseSwgdGhlICRnZW5lcmF0b3JOYW1lIGl0IHBhc3NlZCBpbiB3
YXMgbm90IGFjdHVhbGx5IHVzZWQuCisgICAgICAgIEFsc28gcmVtb3ZlcyBzb21lIGR1cGxpY2F0
ZSBkZWZpbml0aW9ucyBvZiAkaW50ZXJmYWNlTmFtZS4KKworICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9UZXN0T2JqLmlkbDoKKyAgICAgICAgQWRkcyB0ZXN0cyBmb3IgdmFyaW91cyBjb21iaW5h
dGlvbnMgb2YgdW5kZXJzY29yZXMgYW5kIGRhc2hlcyBpbiBpZGVudGlmaWVycy4KKwogMjAyMC0x
MC0xMyAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBQ
bHVtYiBPcHRpb25TZXQ8V2hlZWxFdmVudFByb2Nlc3NpbmdTdGVwcz4gdGhyb3VnaCB0aGUgd2hl
ZWwgZXZlbnQgaGFuZGxpbmcgY29kZQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHJldmlzaW9uIDI2ODM5MikKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCSh3b3JraW5n
IGNvcHkpCkBAIC0xODQ3LDIyICsxODQ3LDMzIEBAIHN1YiBQYXNzQXJndW1lbnRFeHByZXNzaW9u
CiAgICAgcmV0dXJuICJXVEZNb3ZlKCR7bmFtZX0pIjsKIH0KIAorc3ViIE1hbmdsZUF0dHJpYnV0
ZU9yRnVuY3Rpb25OYW1lCit7CisgICAgbXkgKCRuYW1lKSA9IEBfOworCisgICAgJG5hbWUgPX4g
cy8tL19fL2c7CisKKyAgICByZXR1cm4gJG5hbWU7Cit9CisKIHN1YiBHZXRBdHRyaWJ1dGVHZXR0
ZXJOYW1lCiB7CiAgICAgbXkgKCRpbnRlcmZhY2UsICRjbGFzc05hbWUsICRhdHRyaWJ1dGUpID0g
QF87CiAKLSAgICByZXR1cm4gJGNvZGVHZW5lcmF0b3ItPldLX2xjZmlyc3QoJGNsYXNzTmFtZSkg
LiAiQ29uc3RydWN0b3IiIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJGF0dHJpYnV0ZS0+
bmFtZSkgaWYgJGF0dHJpYnV0ZS0+aXNTdGF0aWM7CiAgICAgcmV0dXJuIEdldEpTQnVpbHRpbkZ1
bmN0aW9uTmFtZSgkY2xhc3NOYW1lLCAkYXR0cmlidXRlKSBpZiBJc0pTQnVpbHRpbigkaW50ZXJm
YWNlLCAkYXR0cmlidXRlKTsKLSAgICByZXR1cm4gImpzIiAuICRpbnRlcmZhY2UtPnR5cGUtPm5h
bWUgLiAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkYXR0cmlidXRlLT5uYW1lKSAuICgkY29k
ZUdlbmVyYXRvci0+SXNDb25zdHJ1Y3RvclR5cGUoJGF0dHJpYnV0ZS0+dHlwZSkgPyAiQ29uc3Ry
dWN0b3IiIDogIiIpOworICAgIHJldHVybiAkY29kZUdlbmVyYXRvci0+V0tfbGNmaXJzdCgkY2xh
c3NOYW1lKSAuICJDb25zdHJ1Y3RvciIgLiAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdChNYW5n
bGVBdHRyaWJ1dGVPckZ1bmN0aW9uTmFtZSgkYXR0cmlidXRlLT5uYW1lKSkgaWYgJGF0dHJpYnV0
ZS0+aXNTdGF0aWM7CisgICAgcmV0dXJuICRjb2RlR2VuZXJhdG9yLT5XS19sY2ZpcnN0KCRjbGFz
c05hbWUpIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoTWFuZ2xlQXR0cmlidXRlT3JGdW5j
dGlvbk5hbWUoJGF0dHJpYnV0ZS0+bmFtZSkpIC4gIkNvbnN0cnVjdG9yIiBpZiAkY29kZUdlbmVy
YXRvci0+SXNDb25zdHJ1Y3RvclR5cGUoJGF0dHJpYnV0ZS0+dHlwZSk7CisgICAgcmV0dXJuICRj
b2RlR2VuZXJhdG9yLT5XS19sY2ZpcnN0KCRjbGFzc05hbWUpIC4gJGNvZGVHZW5lcmF0b3ItPldL
X3VjZmlyc3QoTWFuZ2xlQXR0cmlidXRlT3JGdW5jdGlvbk5hbWUoJGF0dHJpYnV0ZS0+bmFtZSkp
OwogfQogCiBzdWIgR2V0QXR0cmlidXRlU2V0dGVyTmFtZQogewogICAgIG15ICgkaW50ZXJmYWNl
LCAkY2xhc3NOYW1lLCAkYXR0cmlidXRlKSA9IEBfOwogCi0gICAgcmV0dXJuICJzZXQiIC4gJGNv
ZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJGNsYXNzTmFtZSkgLiAiQ29uc3RydWN0b3IiIC4gJGNv
ZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJGF0dHJpYnV0ZS0+bmFtZSkgaWYgJGF0dHJpYnV0ZS0+
aXNTdGF0aWM7CiAgICAgcmV0dXJuICJzZXQiIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3Qo
R2V0SlNCdWlsdGluRnVuY3Rpb25OYW1lKCRjbGFzc05hbWUsICRhdHRyaWJ1dGUpKSBpZiBJc0pT
QnVpbHRpbigkaW50ZXJmYWNlLCAkYXR0cmlidXRlKTsKLSAgICByZXR1cm4gInNldEpTIiAuICRp
bnRlcmZhY2UtPnR5cGUtPm5hbWUgLiAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkYXR0cmli
dXRlLT5uYW1lKSAuICgkY29kZUdlbmVyYXRvci0+SXNDb25zdHJ1Y3RvclR5cGUoJGF0dHJpYnV0
ZS0+dHlwZSkgPyAiQ29uc3RydWN0b3IiIDogIiIpOworICAgIHJldHVybiAic2V0IiAuICRjb2Rl
R2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRjbGFzc05hbWUpIC4gIkNvbnN0cnVjdG9yIiAuICRjb2Rl
R2VuZXJhdG9yLT5XS191Y2ZpcnN0KE1hbmdsZUF0dHJpYnV0ZU9yRnVuY3Rpb25OYW1lKCRhdHRy
aWJ1dGUtPm5hbWUpKSBpZiAkYXR0cmlidXRlLT5pc1N0YXRpYzsKKyAgICByZXR1cm4gInNldCIg
LiAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkY2xhc3NOYW1lKSAuICRjb2RlR2VuZXJhdG9y
LT5XS191Y2ZpcnN0KE1hbmdsZUF0dHJpYnV0ZU9yRnVuY3Rpb25OYW1lKCRhdHRyaWJ1dGUtPm5h
bWUpKSAuICJDb25zdHJ1Y3RvciIgaWYgJGNvZGVHZW5lcmF0b3ItPklzQ29uc3RydWN0b3JUeXBl
KCRhdHRyaWJ1dGUtPnR5cGUpOworICAgIHJldHVybiAic2V0IiAuICRjb2RlR2VuZXJhdG9yLT5X
S191Y2ZpcnN0KCRjbGFzc05hbWUpIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoTWFuZ2xl
QXR0cmlidXRlT3JGdW5jdGlvbk5hbWUoJGF0dHJpYnV0ZS0+bmFtZSkpOwogfQogCiBzdWIgR2V0
RnVuY3Rpb25OYW1lCkBAIC0xODc1LDcgKzE4ODYsNyBAQCBzdWIgR2V0RnVuY3Rpb25OYW1lCiAg
ICAgJGZ1bmN0aW9uTmFtZSA9ICJTeW1ib2xJdGVyYXRvciIgaWYgJGZ1bmN0aW9uTmFtZSBlcSAi
W1N5bWJvbC5JdGVyYXRvcl0iOwogCiAgICAgbXkgJGtpbmQgPSAkb3BlcmF0aW9uLT5pc1N0YXRp
YyA/ICJDb25zdHJ1Y3RvciIgOiAoT3BlcmF0aW9uU2hvdWxkQmVPbkluc3RhbmNlKCRpbnRlcmZh
Y2UsICRvcGVyYXRpb24pID8gIkluc3RhbmNlIiA6ICJQcm90b3R5cGUiKTsKLSAgICByZXR1cm4g
JGNvZGVHZW5lcmF0b3ItPldLX2xjZmlyc3QoJGNsYXNzTmFtZSkgLiAka2luZCAuICJGdW5jdGlv
biIgLiAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkZnVuY3Rpb25OYW1lKTsKKyAgICByZXR1
cm4gJGNvZGVHZW5lcmF0b3ItPldLX2xjZmlyc3QoJGNsYXNzTmFtZSkgLiAka2luZCAuICJGdW5j
dGlvbiIgLiAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdChNYW5nbGVBdHRyaWJ1dGVPckZ1bmN0
aW9uTmFtZSgkZnVuY3Rpb25OYW1lKSk7CiB9CiAKIHN1YiBHZXRGdWxseVF1YWxpZmllZEltcGxl
bWVudGF0aW9uQ2FsbE5hbWUKQEAgLTQzNjAsNyArNDM3MSw2IEBAIHN1YiBHZW5lcmF0ZUltcGxl
bWVudGF0aW9uCiAgICAgICAgICAgICBkaWUgIk92ZXJsb2FkcyBpcyBub3Qgc3VwcG9ydGVkIGlu
IERPTUpJVCIgaWYgJGlzT3ZlcmxvYWRlZDsKICAgICAgICAgICAgIGRpZSAiQ3VycmVudGx5IFJl
YWRET00gdmFsdWUgaXMgb25seSBhbGxvd2VkIiB1bmxlc3MgJGNvZGVHZW5lcmF0b3ItPkV4dGVu
ZGVkQXR0cmlidXRlQ29udGFpbnMoJG9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RE9N
SklUfSwgIlJlYWRET00iKTsKIAotICAgICAgICAgICAgbXkgJGludGVyZmFjZU5hbWUgPSAkaW50
ZXJmYWNlLT50eXBlLT5uYW1lOwogICAgICAgICAgICAgbXkgJGZ1bmN0aW9uTmFtZSA9IEdldEZ1
bmN0aW9uTmFtZSgkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkb3BlcmF0aW9uKTsKICAgICAgICAg
ICAgIG15ICRuYW1lT2ZGdW5jdGlvbldpdGhvdXRUeXBlQ2hlY2sgPSAkY29kZUdlbmVyYXRvci0+
V0tfbGNmaXJzdCgkZnVuY3Rpb25OYW1lKSAuICJXaXRob3V0VHlwZUNoZWNrIjsKICAgICAgICAg
ICAgIG15ICRkb21KSVRTaWduYXR1cmVOYW1lID0gIkRPTUpJVFNpZ25hdHVyZUZvciIgLiAkaW50
ZXJmYWNlLT50eXBlLT5uYW1lIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJG9wZXJhdGlv
bi0+bmFtZSk7CkBAIC00MzkwLDEwICs0NDAwLDkgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRp
b24KICAgICAgICAgICAgIG15ICRjb25kaXRpb25hbFN0cmluZyA9ICRjb2RlR2VuZXJhdG9yLT5H
ZW5lcmF0ZUNvbmRpdGlvbmFsU3RyaW5nKCRhdHRyaWJ1dGUpOwogICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIjaWYgJHtjb25kaXRpb25hbFN0cmluZ31cblxuIikgaWYgJGNvbmRpdGlv
bmFsU3RyaW5nOwogICAgICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIkRPTUpJVElETFR5cGVG
aWx0ZXIuaCIsICRjb25kaXRpb25hbFN0cmluZyk7Ci0gICAgICAgICAgICBteSAkaW50ZXJmYWNl
TmFtZSA9ICRpbnRlcmZhY2UtPnR5cGUtPm5hbWU7CiAgICAgICAgICAgICBteSAkZ2VuZXJhdG9y
TmFtZSA9ICRpbnRlcmZhY2VOYW1lIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJGF0dHJp
YnV0ZS0+bmFtZSk7CiAgICAgICAgICAgICBteSAkZG9tSklUQ2xhc3NOYW1lID0gJGdlbmVyYXRv
ck5hbWUgLiAiQXR0cmlidXRlIjsKLSAgICAgICAgICAgIG15ICRnZXR0ZXIgPSBHZXRBdHRyaWJ1
dGVHZXR0ZXJOYW1lKCRpbnRlcmZhY2UsICRnZW5lcmF0b3JOYW1lLCAkYXR0cmlidXRlKTsKKyAg
ICAgICAgICAgIG15ICRnZXR0ZXIgPSBHZXRBdHRyaWJ1dGVHZXR0ZXJOYW1lKCRpbnRlcmZhY2Us
ICRjbGFzc05hbWUsICRhdHRyaWJ1dGUpOwogICAgICAgICAgICAgbXkgJHJlc3VsdFR5cGUgPSAi
SlNDOjpTcGVjQnl0ZWNvZGVUb3AiOwogICAgICAgICAgICAgaWYgKCRhdHRyaWJ1dGUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+e0RPTUpJVH0pIHsKICAgICAgICAgICAgICAgICAkcmVzdWx0VHlwZSA9
IEdldFJlc3VsdFR5cGVGaWx0ZXIoJGludGVyZmFjZSwgJGF0dHJpYnV0ZS0+dHlwZSk7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETFBhcnNlci5wbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETFBhcnNlci5wbQkocmV2aXNp
b24gMjY4MzkyKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIu
cG0JKHdvcmtpbmcgY29weSkKQEAgLTQwMyw3ICs0MDMsNyBAQCBteSAkd2hpdGVzcGFjZVRva2Vu
UGF0dGVybiA9ICdeW1x0XG5cciBdCiBteSAkZmxvYXRUb2tlblBhdHRlcm4gPSAnXigtPygoWzAt
OV0rXC5bMC05XSp8WzAtOV0qXC5bMC05XSspKFtFZV1bKy1dP1swLTldKyk/fFswLTldK1tFZV1b
Ky1dP1swLTldKykpJzsKIG15ICRpbnRlZ2VyVG9rZW5QYXR0ZXJuID0gJ14oLT9bMS05XVswLTld
KnwtPzBbWHhdWzAtOUEtRmEtZl0rfC0/MFswLTddKiknOwogbXkgJHN0cmluZ1Rva2VuUGF0dGVy
biA9ICdeKFwiW15cIl0qXCIpJzsKLW15ICRpZGVudGlmaWVyVG9rZW5QYXR0ZXJuID0gJ14oW0Et
Wl9hLXpdWzAtOUEtWl9hLXpdKiknOworbXkgJGlkZW50aWZpZXJUb2tlblBhdHRlcm4gPSAnXihb
Xy1dP1tBLVpfYS16XVswLTlBLVpfYS16LV0qKSc7CiBteSAkb3RoZXJUb2tlblBhdHRlcm4gPSAn
XihcLlwuXC58W15cdFxuXHIgMC05QS1aX2Etel0pJzsKIAogc3ViIGdldFRva2VuSW50ZXJuYWwK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9i
ai5pZGwJKHJldmlzaW9uIDI2ODM5MikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9UZXN0T2JqLmlkbAkod29ya2luZyBjb3B5KQpAQCAtNDU1LDYgKzQ1NSwxOCBAQCBl
bnVtIFRlc3RDb25maWRlbmNlIHsgImhpZ2giLCAia2luZGEtbG93CiAgICAgW0V4cG9zZWQ9V2lu
ZG93XSB1bmRlZmluZWQgY29uZGl0aW9uYWxseUV4cG9zZWRUb1dpbmRvd0Z1bmN0aW9uKCk7CiAg
ICAgW0V4cG9zZWQ9V29ya2VyXSB1bmRlZmluZWQgY29uZGl0aW9uYWxseUV4cG9zZWRUb1dvcmtl
ckZ1bmN0aW9uKCk7CiAgICAgW0V4cG9zZWQ9KFdpbmRvdywgV29ya2VyKV0gdW5kZWZpbmVkIGNv
bmRpdGlvbmFsbHlFeHBvc2VkVG9XaW5kb3dBbmRXb3JrZXJGdW5jdGlvbigpOworCisgICAgW0lt
cGxlbWVudGVkQXM9bGVhZGluZ0h5cGhlbkF0dHJpYnV0ZV0gYXR0cmlidXRlIERPTVN0cmluZyAt
bGVhZGluZy1oeXBoZW4tYXR0cmlidXRlOworICAgIFtJbXBsZW1lbnRlZEFzPXRyYWlsaW5nSHlw
aGVuQXR0cmlidXRlXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHRyYWlsaW5nLWh5cGhlbi1hdHRyaWJ1
dGUtOworICAgIGF0dHJpYnV0ZSBET01TdHJpbmcgX2xlYWRpbmdfdW5kZXJzY29yZV9hdHRyaWJ1
dGU7IC8vIE5PVEU6IElETCByZW1vdmVzIHRoZSBsZWFkaW5nIHVuZGVyc2NvcmUgc28gdGhpcyBp
cyBpbnRlcnByZXRlZCBhcyAibGVhZGluZ191bmRlcnNjb3JlX2F0dHJpYnV0ZSIKKyAgICBhdHRy
aWJ1dGUgRE9NU3RyaW5nIF9fZG91YmxlX2xlYWRpbmdfdW5kZXJzY29yZV9hdHRyaWJ1dGU7IC8v
IE5PVEU6IElETCByZW1vdmVzIHRoZSBsZWFkaW5nIHVuZGVyc2NvcmUgc28gdGhpcyBpcyBpbnRl
cnByZXRlZCBhcyAiX2RvdWJsZV9sZWFkaW5nX3VuZGVyc2NvcmVfYXR0cmlidXRlIgorICAgIGF0
dHJpYnV0ZSBET01TdHJpbmcgdHJhaWxpbmdfdW5kZXJzY29yZV9hdHRyaWJ1dGVfOworCisgICAg
W0ltcGxlbWVudGVkQXM9bGVhZGluZ0h5cGhlbkZ1bmN0aW9uXSB1bmRlZmluZWQgLWxlYWRpbmct
aHlwaGVuLWZ1bmN0aW9uKCk7CisgICAgW0ltcGxlbWVudGVkQXM9dHJhaWxpbmdIeXBoZW5GdW5j
dGlvbl0gdW5kZWZpbmVkIHRyYWlsaW5nLWh5cGhlbi1mdW5jdGlvbi0oKTsKKyAgICB1bmRlZmlu
ZWQgX2xlYWRpbmdfdW5kZXJzY29yZV9mdW5jdGlvbigpOyAvLyBOT1RFOiBXZWJJREwgcmVtb3Zl
cyB0aGUgbGVhZGluZyB1bmRlcnNjb3JlIHNvIHRoaXMgaXMgaW50ZXJwcmV0ZWQgYXMgImxlYWRp
bmdfdW5kZXJzY29yZV9mdW5jdGlvbiIKKyAgICB1bmRlZmluZWQgX19kb3VibGVfbGVhZGluZ191
bmRlcnNjb3JlX2Z1bmN0aW9uKCk7IC8vIE5PVEU6IFdlYklETCByZW1vdmVzIHRoZSBsZWFkaW5n
IHVuZGVyc2NvcmUgc28gdGhpcyBpcyBpbnRlcnByZXRlZCBhcyAiX2RvdWJsZV9sZWFkaW5nX3Vu
ZGVyc2NvcmVfZnVuY3Rpb24iCisgICAgdW5kZWZpbmVkIHRyYWlsaW5nX3VuZGVyc2NvcmVfZnVu
Y3Rpb25fKCk7CiB9OwogCiAvLyBUaGUgZm9sbG93aW5nIGNvbW1lbnRzIHNob3VsZCBub3QgZ2Vu
ZXJhdGUgYW55IGNvZGUuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0T2JqLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAkocmV2aXNpb24gMjY4MzkyKQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE1OTcsNiArMTU5NywxMSBAQCBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9O
KGpzVGVzdE9ialByb3RvCiBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxseUV4cG9zZWRUb1dpbmRvd0Z1bmN0aW9uKTsKIEpTQ19E
RUNMQVJFX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db25kaXRpb25h
bGx5RXhwb3NlZFRvV29ya2VyRnVuY3Rpb24pOwogSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsbHlFeHBvc2VkVG9XaW5kb3dBbmRX
b3JrZXJGdW5jdGlvbik7CitKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uX19sZWFkaW5nX19oeXBoZW5fX2Z1bmN0aW9uKTsKK0pTQ19ERUNMQVJFX0hP
U1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UcmFpbGluZ19faHlwaGVuX19m
dW5jdGlvbl9fKTsKK0pTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25MZWFkaW5nX3VuZGVyc2NvcmVfZnVuY3Rpb24pOworSlNDX0RFQ0xBUkVfSE9TVF9G
VU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9kb3VibGVfbGVhZGluZ191bmRlcnNj
b3JlX2Z1bmN0aW9uKTsKK0pTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25UcmFpbGluZ191bmRlcnNjb3JlX2Z1bmN0aW9uXyk7CiBKU0NfREVDTEFSRV9I
T1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVG9TdHJpbmcpOwogCiAvLyBB
dHRyaWJ1dGVzCkBAIC0xNzk2LDYgKzE4MDEsMTYgQEAgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRF
Uihqc1Rlc3RPYmpDb25kaQogSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUihzZXRKU1Rlc3RPYmpD
b25kaXRpb25hbGx5RXhwb3NlZFRvV29ya2VyQXR0cmlidXRlKTsKIEpTQ19ERUNMQVJFX0NVU1RP
TV9HRVRURVIoanNUZXN0T2JqQ29uZGl0aW9uYWxseUV4cG9zZWRUb1dpbmRvd0FuZFdvcmtlckF0
dHJpYnV0ZSk7CiBKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdE9iakNvbmRpdGlv
bmFsbHlFeHBvc2VkVG9XaW5kb3dBbmRXb3JrZXJBdHRyaWJ1dGUpOworSlNDX0RFQ0xBUkVfQ1VT
VE9NX0dFVFRFUihqc1Rlc3RPYmpfX2xlYWRpbmdfX2h5cGhlbl9fYXR0cmlidXRlKTsKK0pTQ19E
RUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNUZXN0T2JqX19sZWFkaW5nX19oeXBoZW5fX2F0dHJp
YnV0ZSk7CitKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzVGVzdE9ialRyYWlsaW5nX19oeXBo
ZW5fX2F0dHJpYnV0ZV9fKTsKK0pTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNUZXN0T2Jq
VHJhaWxpbmdfX2h5cGhlbl9fYXR0cmlidXRlX18pOworSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRF
Uihqc1Rlc3RPYmpMZWFkaW5nX3VuZGVyc2NvcmVfYXR0cmlidXRlKTsKK0pTQ19ERUNMQVJFX0NV
U1RPTV9TRVRURVIoc2V0SlNUZXN0T2JqTGVhZGluZ191bmRlcnNjb3JlX2F0dHJpYnV0ZSk7CitK
U0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzVGVzdE9ial9kb3VibGVfbGVhZGluZ191bmRlcnNj
b3JlX2F0dHJpYnV0ZSk7CitKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdE9ial9k
b3VibGVfbGVhZGluZ191bmRlcnNjb3JlX2F0dHJpYnV0ZSk7CitKU0NfREVDTEFSRV9DVVNUT01f
R0VUVEVSKGpzVGVzdE9ialRyYWlsaW5nX3VuZGVyc2NvcmVfYXR0cmlidXRlXyk7CitKU0NfREVD
TEFSRV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdE9ialRyYWlsaW5nX3VuZGVyc2NvcmVfYXR0cmli
dXRlXyk7CiAKIGNsYXNzIEpTVGVzdE9ialByb3RvdHlwZSBmaW5hbCA6IHB1YmxpYyBKU0M6OkpT
Tm9uRmluYWxPYmplY3QgewogcHVibGljOgpAQCAtMjEyOCw2ICsyMTQzLDExIEBAIHN0YXRpYyBj
b25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RPYmpQcm8KICAgICB7ICJjb25kaXRpb25hbGx5RXhw
b3NlZFRvV2luZG93QXR0cmlidXRlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9N
QXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpDb25kaXRpb25hbGx5RXhwb3NlZFRvV2luZG93
QXR0cmlidXRlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZh
bHVlRnVuYz4oc2V0SlNUZXN0T2JqQ29uZGl0aW9uYWxseUV4cG9zZWRUb1dpbmRvd0F0dHJpYnV0
ZSkgfSB9LAogICAgIHsgImNvbmRpdGlvbmFsbHlFeHBvc2VkVG9Xb3JrZXJBdHRyaWJ1dGUiLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNz
b3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywg
eyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVz
dE9iakNvbmRpdGlvbmFsbHlFeHBvc2VkVG9Xb3JrZXJBdHRyaWJ1dGUpLCAoaW50cHRyX3QpIHN0
YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RPYmpDb25k
aXRpb25hbGx5RXhwb3NlZFRvV29ya2VyQXR0cmlidXRlKSB9IH0sCiAgICAgeyAiY29uZGl0aW9u
YWxseUV4cG9zZWRUb1dpbmRvd0FuZFdvcmtlckF0dHJpYnV0ZSIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0
aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqQ29uZGl0aW9uYWxs
eUV4cG9zZWRUb1dpbmRvd0FuZFdvcmtlckF0dHJpYnV0ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nh
c3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdE9iakNvbmRpdGlvbmFs
bHlFeHBvc2VkVG9XaW5kb3dBbmRXb3JrZXJBdHRyaWJ1dGUpIH0gfSwKKyAgICB7ICItbGVhZGlu
Zy1oeXBoZW4tYXR0cmlidXRlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0
cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xv
dDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpfX2xlYWRpbmdfX2h5cGhlbl9fYXR0cmlidXRlKSwg
KGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0
SlNUZXN0T2JqX19sZWFkaW5nX19oeXBoZW5fX2F0dHJpYnV0ZSkgfSB9LAorICAgIHsgInRyYWls
aW5nLWh5cGhlbi1hdHRyaWJ1dGUtIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9N
QXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpUcmFpbGluZ19faHlwaGVuX19hdHRyaWJ1dGVf
XyksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+
KHNldEpTVGVzdE9ialRyYWlsaW5nX19oeXBoZW5fX2F0dHJpYnV0ZV9fKSB9IH0sCisgICAgeyAi
bGVhZGluZ191bmRlcnNjb3JlX2F0dHJpYnV0ZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQ
cm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqTGVhZGluZ191bmRlcnNjb3JlX2F0
dHJpYnV0ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1
ZUZ1bmM+KHNldEpTVGVzdE9iakxlYWRpbmdfdW5kZXJzY29yZV9hdHRyaWJ1dGUpIH0gfSwKKyAg
ICB7ICJfZG91YmxlX2xlYWRpbmdfdW5kZXJzY29yZV9hdHRyaWJ1dGUiLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9ial9kb3VibGVf
bGVhZGluZ191bmRlcnNjb3JlX2F0dHJpYnV0ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0
UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdE9ial9kb3VibGVfbGVhZGluZ191
bmRlcnNjb3JlX2F0dHJpYnV0ZSkgfSB9LAorICAgIHsgInRyYWlsaW5nX3VuZGVyc2NvcmVfYXR0
cmlidXRlXyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpD
dXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5v
SW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVl
RnVuYz4oanNUZXN0T2JqVHJhaWxpbmdfdW5kZXJzY29yZV9hdHRyaWJ1dGVfKSwgKGludHB0cl90
KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0T2Jq
VHJhaWxpbmdfdW5kZXJzY29yZV9hdHRyaWJ1dGVfKSB9IH0sCiAjaWYgRU5BQkxFKFRFU1RfRkVB
VFVSRSkKICAgICB7ICJlbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uIiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbkVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb24pLCAoaW50cHRyX3QpICgxKSB9IH0s
CiAjZWxzZQpAQCAtMjMwOSw2ICsyMzI5LDExIEBAIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1
ZSBKU1Rlc3RPYmpQcm8KICAgICB7ICJjb25kaXRpb25hbGx5RXhwb3NlZFRvV2luZG93RnVuY3Rp
b24iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rp
b24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rp
b24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxseUV4cG9zZWRUb1dpbmRv
d0Z1bmN0aW9uKSwgKGludHB0cl90KSAoMCkgfSB9LAogICAgIHsgImNvbmRpdGlvbmFsbHlFeHBv
c2VkVG9Xb3JrZXJGdW5jdGlvbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2Fz
dDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db25kaXRpb25h
bGx5RXhwb3NlZFRvV29ya2VyRnVuY3Rpb24pLCAoaW50cHRyX3QpICgwKSB9IH0sCiAgICAgeyAi
Y29uZGl0aW9uYWxseUV4cG9zZWRUb1dpbmRvd0FuZFdvcmtlckZ1bmN0aW9uIiwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsbHlFeHBvc2VkVG9XaW5kb3dBbmRXb3JrZXJGdW5j
dGlvbiksIChpbnRwdHJfdCkgKDApIH0gfSwKKyAgICB7ICItbGVhZGluZy1oeXBoZW4tZnVuY3Rp
b24iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rp
b24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rp
b24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX19sZWFkaW5nX19oeXBoZW5fX2Z1bmN0aW9u
KSwgKGludHB0cl90KSAoMCkgfSB9LAorICAgIHsgInRyYWlsaW5nLWh5cGhlbi1mdW5jdGlvbi0i
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24p
LCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+
KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVHJhaWxpbmdfX2h5cGhlbl9fZnVuY3Rpb25fXyks
IChpbnRwdHJfdCkgKDApIH0gfSwKKyAgICB7ICJsZWFkaW5nX3VuZGVyc2NvcmVfZnVuY3Rpb24i
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24p
LCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+
KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTGVhZGluZ191bmRlcnNjb3JlX2Z1bmN0aW9uKSwg
KGludHB0cl90KSAoMCkgfSB9LAorICAgIHsgIl9kb3VibGVfbGVhZGluZ191bmRlcnNjb3JlX2Z1
bmN0aW9uIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1
bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1
bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9kb3VibGVfbGVhZGluZ191bmRlcnNj
b3JlX2Z1bmN0aW9uKSwgKGludHB0cl90KSAoMCkgfSB9LAorICAgIHsgInRyYWlsaW5nX3VuZGVy
c2NvcmVfZnVuY3Rpb25fIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJh
d05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRyYWlsaW5nX3VuZGVy
c2NvcmVfZnVuY3Rpb25fKSwgKGludHB0cl90KSAoMCkgfSB9LAogICAgIHsgInRvU3RyaW5nIiwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRvU3RyaW5nKSwgKGludHB0cl90KSAoMCkgfSB9LAog
I2lmIEVOQUJMRShDb25kaXRpb24xKQogICAgIHsgIkNPTkRJVElPTkFMX0NPTlNUIiwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJl
YWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q29uc3RhbnRJbnRlZ2VyLCBOb0ludHJp
bnNpYywgeyAobG9uZyBsb25nKSgwKSB9IH0sCkBAIC01MzI4LDYgKzUzNTMsMTYxIEBAIEpTQ19E
RUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRKU1Rlc3RPYmpDb24KICAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTVGVzdE9iaj46OnNldDxzZXRKU1Rlc3RPYmpDb25kaXRpb25hbGx5RXhwb3NlZFRvV2lu
ZG93QW5kV29ya2VyQXR0cmlidXRlU2V0dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCBlbmNvZGVkVmFsdWUsICJjb25kaXRpb25hbGx5RXhwb3NlZFRvV2luZG93QW5kV29ya2Vy
QXR0cmlidXRlIik7CiB9CiAKK3N0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RPYmpfX2xlYWRp
bmdfX2h5cGhlbl9fYXR0cmlidXRlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU1Rlc3RPYmomIHRoaXNPYmplY3QpCit7CisgICAgYXV0byYgdm0gPSBKU0M6Omdl
dFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKyAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7
CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETERPTVN0cmluZz4o
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5sZWFkaW5nSHlwaGVuQXR0cmli
dXRlKCkpKSk7Cit9CisKK0pTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RPYmpfX2xlYWRp
bmdfX2h5cGhlbl9fYXR0cmlidXRlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKK3sKKyAgICByZXR1
cm4gSURMQXR0cmlidXRlPEpTVGVzdE9iaj46OmdldDxqc1Rlc3RPYmpfX2xlYWRpbmdfX2h5cGhl
bl9fYXR0cmlidXRlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiLWxlYWRpbmctaHlwaGVuLWF0dHJpYnV0ZSIp
OworfQorCitzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0T2JqX19sZWFkaW5nX19oeXBoZW5f
X2F0dHJpYnV0ZVNldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNU
ZXN0T2JqJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQoreworICAgIGF1dG8mIHZtID0gSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBl
ZCgpOworICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETERPTVN0cmluZz4obGV4aWNh
bEdsb2JhbE9iamVjdCwgdmFsdWUpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgZmFsc2UpOworICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBbJl0geworICAgICAgICByZXR1cm4gaW1wbC5zZXRMZWFkaW5nSHlwaGVu
QXR0cmlidXRlKFdURk1vdmUobmF0aXZlVmFsdWUpKTsKKyAgICB9KTsKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdE9ial9fbGVhZGluZ19f
aHlwaGVuX19hdHRyaWJ1dGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQor
eworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0T2JqPjo6c2V0PHNldEpTVGVzdE9ial9f
bGVhZGluZ19faHlwaGVuX19hdHRyaWJ1dGVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIi1sZWFkaW5nLWh5cGhlbi1hdHRyaWJ1dGUiKTsKK30K
Kworc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdE9ialRyYWlsaW5nX19oeXBoZW5fX2F0dHJp
YnV0ZV9fR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RP
YmomIHRoaXNPYmplY3QpCit7CisgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xv
YmFsT2JqZWN0KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKyAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CisgICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETERPTVN0cmluZz4obGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhyb3dTY29wZSwgaW1wbC50cmFpbGluZ0h5cGhlbkF0dHJpYnV0ZSgpKSkpOworfQor
CitKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNUZXN0T2JqVHJhaWxpbmdfX2h5cGhlbl9fYXR0
cmlidXRlX18sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQoreworICAgIHJldHVybiBJRExBdHRyaWJ1
dGU8SlNUZXN0T2JqPjo6Z2V0PGpzVGVzdE9ialRyYWlsaW5nX19oeXBoZW5fX2F0dHJpYnV0ZV9f
R2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhpc1ZhbHVlLCAidHJhaWxpbmctaHlwaGVuLWF0dHJpYnV0ZS0iKTsKK30KKworc3Rh
dGljIGlubGluZSBib29sIHNldEpTVGVzdE9ialRyYWlsaW5nX19oeXBoZW5fX2F0dHJpYnV0ZV9f
U2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RPYmomIHRo
aXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCit7CisgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKyAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CisgICAg
YXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB2YWx1ZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7
CisgICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIFsmXSB7CisgICAgICAgIHJldHVybiBpbXBsLnNldFRyYWlsaW5nSHlwaGVuQXR0cmlidXRl
KFdURk1vdmUobmF0aXZlVmFsdWUpKTsKKyAgICB9KTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
SlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdE9ialRyYWlsaW5nX19oeXBoZW5fX2F0
dHJpYnV0ZV9fLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKK3sKKyAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdE9iaj46OnNldDxzZXRKU1Rlc3RPYmpUcmFpbGluZ19f
aHlwaGVuX19hdHRyaWJ1dGVfX1NldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1
ZSwgZW5jb2RlZFZhbHVlLCAidHJhaWxpbmctaHlwaGVuLWF0dHJpYnV0ZS0iKTsKK30KKworc3Rh
dGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdE9iakxlYWRpbmdfdW5kZXJzY29yZV9hdHRyaWJ1dGVH
ZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdE9iaiYgdGhp
c09iamVjdCkKK3sKKyAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAg
IGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKKyAgICBSRUxFQVNFX0FORF9SRVRV
Uk4odGhyb3dTY29wZSwgKHRvSlM8SURMRE9NU3RyaW5nPihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlLCBpbXBsLmxlYWRpbmdfdW5kZXJzY29yZV9hdHRyaWJ1dGUoKSkpKTsKK30KKwor
SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzVGVzdE9iakxlYWRpbmdfdW5kZXJzY29yZV9hdHRy
aWJ1dGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQoreworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8
SlNUZXN0T2JqPjo6Z2V0PGpzVGVzdE9iakxlYWRpbmdfdW5kZXJzY29yZV9hdHRyaWJ1dGVHZXR0
ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aGlzVmFsdWUsICJsZWFkaW5nX3VuZGVyc2NvcmVfYXR0cmlidXRlIik7Cit9CisKK3N0YXRp
YyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RPYmpMZWFkaW5nX3VuZGVyc2NvcmVfYXR0cmlidXRlU2V0
dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RPYmomIHRoaXNP
YmplY3QsIEpTVmFsdWUgdmFsdWUpCit7CisgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKyAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CisgICAgYXV0
byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPihsZXhpY2FsR2xvYmFsT2JqZWN0
LCB2YWx1ZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7Cisg
ICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IFsmXSB7CisgICAgICAgIHJldHVybiBpbXBsLnNldExlYWRpbmdfdW5kZXJzY29yZV9hdHRyaWJ1
dGUoV1RGTW92ZShuYXRpdmVWYWx1ZSkpOworICAgIH0pOworICAgIHJldHVybiB0cnVlOworfQor
CitKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNUZXN0T2JqTGVhZGluZ191bmRlcnNjb3Jl
X2F0dHJpYnV0ZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCit7CisgICAg
cmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RPYmo+OjpzZXQ8c2V0SlNUZXN0T2JqTGVhZGluZ191
bmRlcnNjb3JlX2F0dHJpYnV0ZVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1
ZSwgZW5jb2RlZFZhbHVlLCAibGVhZGluZ191bmRlcnNjb3JlX2F0dHJpYnV0ZSIpOworfQorCitz
dGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0T2JqX2RvdWJsZV9sZWFkaW5nX3VuZGVyc2NvcmVf
YXR0cmlidXRlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rl
c3RPYmomIHRoaXNPYmplY3QpCit7CisgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKyAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CisgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETERPTVN0cmluZz4obGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5fZG91YmxlX2xlYWRpbmdfdW5kZXJzY29yZV9hdHRy
aWJ1dGUoKSkpKTsKK30KKworSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzVGVzdE9ial9kb3Vi
bGVfbGVhZGluZ191bmRlcnNjb3JlX2F0dHJpYnV0ZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCit7
CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RPYmo+OjpnZXQ8anNUZXN0T2JqX2RvdWJs
ZV9sZWFkaW5nX3VuZGVyc2NvcmVfYXR0cmlidXRlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhh
dmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiX2RvdWJsZV9s
ZWFkaW5nX3VuZGVyc2NvcmVfYXR0cmlidXRlIik7Cit9CisKK3N0YXRpYyBpbmxpbmUgYm9vbCBz
ZXRKU1Rlc3RPYmpfZG91YmxlX2xlYWRpbmdfdW5kZXJzY29yZV9hdHRyaWJ1dGVTZXR0ZXIoSlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdE9iaiYgdGhpc09iamVjdCwg
SlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9i
YWxPYmplY3QpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKKyAgICBhdXRvIG5hdGl2
ZVZhbHVlID0gY29udmVydDxJRExET01TdHJpbmc+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVl
KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKKyAgICBBdHRy
aWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsK
KyAgICAgICAgcmV0dXJuIGltcGwuc2V0X2RvdWJsZV9sZWFkaW5nX3VuZGVyc2NvcmVfYXR0cmli
dXRlKFdURk1vdmUobmF0aXZlVmFsdWUpKTsKKyAgICB9KTsKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KworSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdE9ial9kb3VibGVfbGVhZGluZ191
bmRlcnNjb3JlX2F0dHJpYnV0ZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkp
Cit7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RPYmo+OjpzZXQ8c2V0SlNUZXN0T2Jq
X2RvdWJsZV9sZWFkaW5nX3VuZGVyc2NvcmVfYXR0cmlidXRlU2V0dGVyPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJfZG91YmxlX2xlYWRpbmdfdW5kZXJz
Y29yZV9hdHRyaWJ1dGUiKTsKK30KKworc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdE9ialRy
YWlsaW5nX3VuZGVyc2NvcmVfYXR0cmlidXRlX0dldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNUZXN0T2JqJiB0aGlzT2JqZWN0KQoreworICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3Jh
cHBlZCgpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExET01T
dHJpbmc+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwudHJhaWxpbmdfdW5k
ZXJzY29yZV9hdHRyaWJ1dGVfKCkpKSk7Cit9CisKK0pTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihq
c1Rlc3RPYmpUcmFpbGluZ191bmRlcnNjb3JlX2F0dHJpYnV0ZV8sIChKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5h
bWUpKQoreworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0T2JqPjo6Z2V0PGpzVGVzdE9i
alRyYWlsaW5nX3VuZGVyc2NvcmVfYXR0cmlidXRlX0dldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVo
YXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgInRyYWlsaW5n
X3VuZGVyc2NvcmVfYXR0cmlidXRlXyIpOworfQorCitzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNU
ZXN0T2JqVHJhaWxpbmdfdW5kZXJzY29yZV9hdHRyaWJ1dGVfU2V0dGVyKEpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RPYmomIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFs
dWUpCit7CisgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsK
KyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBhdXRv
JiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CisgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNv
bnZlcnQ8SURMRE9NU3RyaW5nPihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CisgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CisgICAgQXR0cmlidXRlU2V0dGVy
OjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CisgICAgICAgIHJl
dHVybiBpbXBsLnNldFRyYWlsaW5nX3VuZGVyc2NvcmVfYXR0cmlidXRlXyhXVEZNb3ZlKG5hdGl2
ZVZhbHVlKSk7CisgICAgfSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK0pTQ19ERUZJTkVfQ1VT
VE9NX1NFVFRFUihzZXRKU1Rlc3RPYmpUcmFpbGluZ191bmRlcnNjb3JlX2F0dHJpYnV0ZV8sIChK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQoreworICAgIHJldHVybiBJRExBdHRy
aWJ1dGU8SlNUZXN0T2JqPjo6c2V0PHNldEpTVGVzdE9ialRyYWlsaW5nX3VuZGVyc2NvcmVfYXR0
cmlidXRlX1NldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5jb2RlZFZh
bHVlLCAidHJhaWxpbmdfdW5kZXJzY29yZV9hdHRyaWJ1dGVfIik7Cit9CisKICNpZiBFTkFCTEUo
VEVTVF9GRUFUVVJFKQogc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uRW5hYmxlZEF0UnVudGltZU9wZXJhdGlvbjFCb2R5KEpTQzo6SlNH
bG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJh
bWUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0
ZWRUaGlzKQogewpAQCAtOTI0Niw2ICs5NDI2LDkxIEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElP
Tihqc1Rlc3RPYmpQcm90b3QKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNh
bGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db25kaXRpb25hbGx5RXhwb3NlZFRvV2luZG93
QW5kV29ya2VyRnVuY3Rpb25Cb2R5PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwg
ImNvbmRpdGlvbmFsbHlFeHBvc2VkVG9XaW5kb3dBbmRXb3JrZXJGdW5jdGlvbiIpOwogfQogCitz
dGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25fX2xlYWRpbmdfX2h5cGhlbl9fZnVuY3Rpb25Cb2R5KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5cGVuYW1lIElE
TE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzKQoreworICAg
IGF1dG8mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvIHRo
cm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhy
b3dTY29wZSk7CisgICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7CisgICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKKyAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKKyAgICBp
bXBsLmxlYWRpbmdIeXBoZW5GdW5jdGlvbigpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7Cit9CisKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbl9fbGVhZGluZ19faHlwaGVuX19mdW5jdGlvbiwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAg
cmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uX19sZWFkaW5nX19oeXBoZW5fX2Z1bmN0aW9uQm9keT4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsICpjYWxsRnJhbWUsICItbGVhZGluZy1oeXBoZW4tZnVuY3Rpb24iKTsKK30KKworc3RhdGlj
IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVHJh
aWxpbmdfX2h5cGhlbl9fZnVuY3Rpb25fX0JvZHkoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDOjpDYWxsRnJhbWUqIGNhbGxGcmFtZSwgdHlwZW5hbWUgSURMT3Bl
cmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMpCit7CisgICAgYXV0
byYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOworICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Nj
b3BlKTsKKyAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKKyAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+d3JhcHBlZCgpOworICAgIHRocm93U2NvcGUucmVsZWFzZSgpOworICAgIGltcGwu
dHJhaWxpbmdIeXBoZW5GdW5jdGlvbigpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7Cit9CisKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvblRyYWlsaW5nX19oeXBoZW5fX2Z1bmN0aW9uX18sIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAgIHJl
dHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvblRyYWlsaW5nX19oeXBoZW5fX2Z1bmN0aW9uX19Cb2R5PigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgKmNhbGxGcmFtZSwgInRyYWlsaW5nLWh5cGhlbi1mdW5jdGlvbi0iKTsKK30KKworc3RhdGlj
IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTGVh
ZGluZ191bmRlcnNjb3JlX2Z1bmN0aW9uQm9keShKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFtZSogY2FsbEZyYW1lLCB0eXBlbmFtZSBJRExPcGVy
YXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcykKK3sKKyAgICBhdXRv
JiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2Nv
cGUpOworICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOworICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT53cmFwcGVkKCk7CisgICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7CisgICAgaW1wbC5s
ZWFkaW5nX3VuZGVyc2NvcmVfZnVuY3Rpb24oKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOworfQorCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oanNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25MZWFkaW5nX3VuZGVyc2NvcmVfZnVuY3Rpb24sIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAg
IHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbkxlYWRpbmdfdW5kZXJzY29yZV9mdW5jdGlvbkJvZHk+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCAqY2FsbEZyYW1lLCAibGVhZGluZ191bmRlcnNjb3JlX2Z1bmN0aW9uIik7Cit9CisKK3N0
YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bl9kb3VibGVfbGVhZGluZ191bmRlcnNjb3JlX2Z1bmN0aW9uQm9keShKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFtZSogY2FsbEZyYW1lLCB0eXBl
bmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcykK
K3sKKyAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BB
UkFNKHRocm93U2NvcGUpOworICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOworICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CisgICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7
CisgICAgaW1wbC5fZG91YmxlX2xlYWRpbmdfdW5kZXJzY29yZV9mdW5jdGlvbigpOworICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Cit9CisKK0pTQ19ERUZJTkVfSE9T
VF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9kb3VibGVfbGVhZGluZ191bmRl
cnNjb3JlX2Z1bmN0aW9uLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogY2FsbEZyYW1lKSkKK3sKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9i
aj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25fZG91YmxlX2xlYWRpbmdfdW5kZXJz
Y29yZV9mdW5jdGlvbkJvZHk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAiX2Rv
dWJsZV9sZWFkaW5nX3VuZGVyc2NvcmVfZnVuY3Rpb24iKTsKK30KKworc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVHJhaWxpbmdfdW5k
ZXJzY29yZV9mdW5jdGlvbl9Cb2R5KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxK
U1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzKQoreworICAgIGF1dG8mIHZtID0g
SlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7Cisg
ICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PndyYXBwZWQoKTsKKyAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKKyAgICBpbXBsLnRyYWlsaW5n
X3VuZGVyc2NvcmVfZnVuY3Rpb25fKCk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uVHJhaWxpbmdfdW5kZXJzY29yZV9mdW5jdGlvbl8sIChKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAgIHJl
dHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvblRyYWlsaW5nX3VuZGVyc2NvcmVfZnVuY3Rpb25fQm9keT4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsICpjYWxsRnJhbWUsICJ0cmFpbGluZ191bmRlcnNjb3JlX2Z1bmN0aW9uXyIpOworfQorCiBz
dGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25Ub1N0cmluZ0JvZHkoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNDOjpDYWxsRnJhbWUqIGNhbGxGcmFtZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9i
aj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMpCiB7CiAgICAgYXV0byYgdm0gPSBKU0M6Omdl
dFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411264</attachid>
            <date>2020-10-13 15:09:45 -0700</date>
            <delta_ts>2020-10-13 17:14:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217667-20201013150944.patch</filename>
            <type>text/plain</type>
            <size>30998</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2ODQxOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM3IEBACisyMDIwLTEwLTEzICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViSURMXSBBZGQgc3VwcG9ydCBm
b3IgaWRlbnRpZmllcnMgd2l0aCBkYXNoZXMgKCctJykgCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTc2NjcKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUbyBzdXBwb3J0IENTU1N0eWxlRGVjbGFyYXRpb24u
aWRsIGNvcnJlY3RseSwgd2UgbmVlZCB0byBhZGQgc3VwcG9ydCBmb3IgZGFzaGVzICgnLScpCisg
ICAgICAgIGluIFdlYklETCBpZGVudGlmZXJzLgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy9JRExQYXJzZXIucG06CisgICAgICAgIFVwZGF0ZSBpZGVudGlmZXIgcmVndWxhciBleHByZXNz
aW9uIHRvIG1hdGNoIGN1cnJlbnQgc3BlYyB3aGljaCBhbGxvd3MgZm9yIGRhc2hlcyAoJy0nKS4K
KworICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAg
ICAoTWFuZ2xlQXR0cmlidXRlT3JGdW5jdGlvbk5hbWUpOgorICAgICAgICBIZWxwZXIgdG8gY2Vu
dHJhbGl6ZSBtYW5nbGluZyByZXF1aXJlZCB0byBjb25zdHJ1Y3QgdmFsaWQgYysrIGlkZW50aWZp
ZXJzIGZyb20gdGhlIFdlYklETAorICAgICAgICBpZGVudGlmaWVycywgc2luY2Ugbm93IFdlYklE
TCBpZGVudGlmaWVycyBjYW4gY29udGFpbiBkYXNoZXMgKCctJyksIHdoaWNoIGlzIG5vdCB2YWxp
ZCBpbiAKKyAgICAgICAgYysrLiBGb3Igbm93LCB3ZSB1c2UgYSB2ZXJ5IHNpbXBsZSBtYW5nbGlu
ZyB3aGljaCByZXBsYWNlcyBhbGwgZGFzaGVzICgnLScpIHdpdGggdGhlIHN0cmluZyAKKyAgICAg
ICAgIl9kYXNoXyIuCisgCisgICAgICAgIChHZXRBdHRyaWJ1dGVHZXR0ZXJOYW1lKToKKyAgICAg
ICAgKEdldEF0dHJpYnV0ZVNldHRlck5hbWUpOgorICAgICAgICAoR2V0RnVuY3Rpb25OYW1lKToK
KyAgICAgICAgQ2xhcmlmeSBhbmQgY2xlYW51cCBsb2dpYyBhIGJpdCBhbmQgY2FsbCB0aGUgbmV3
IG1hbmdsZXIuCisKKyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50YXRpb24pOgorICAgICAgICBH
ZXRBdHRyaWJ1dGVHZXR0ZXJOYW1lIHdpbGwgbm93IGFsd2F5cyB1c2UgdGhlICRjbGFzc05hbWUs
IHNvIHRoaXMgY2FsbGVyIG5lZWRzIHRvIGFjdHVhbGx5CisgICAgICAgIHBhc3MgdGhlIHJpZ2h0
IHZhbHVlIGluLiBQcmV2aW91c2x5LCB0aGUgJGdlbmVyYXRvck5hbWUgaXQgcGFzc2VkIGluIHdh
cyBub3QgYWN0dWFsbHkgdXNlZC4KKyAgICAgICAgQWxzbyByZW1vdmVzIHNvbWUgZHVwbGljYXRl
IGRlZmluaXRpb25zIG9mICRpbnRlcmZhY2VOYW1lLgorCisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Rlc3RPYmouaWRsOgorICAgICAgICBBZGRzIHRlc3RzIGZvciB2YXJpb3VzIGNvbWJpbmF0
aW9ucyBvZiB1bmRlcnNjb3JlcyBhbmQgZGFzaGVzIGluIGlkZW50aWZpZXJzLgorCiAyMDIwLTEw
LTEzICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFBs
dW1iIE9wdGlvblNldDxXaGVlbEV2ZW50UHJvY2Vzc2luZ1N0ZXBzPiB0aHJvdWdoIHRoZSB3aGVl
bCBldmVudCBoYW5kbGluZyBjb2RlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JKUy5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkocmV2aXNpb24gMjY4MzkyKQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHdvcmtpbmcg
Y29weSkKQEAgLTE4NDcsMjIgKzE4NDcsMzMgQEAgc3ViIFBhc3NBcmd1bWVudEV4cHJlc3Npb24K
ICAgICByZXR1cm4gIldURk1vdmUoJHtuYW1lfSkiOwogfQogCitzdWIgTWFuZ2xlQXR0cmlidXRl
T3JGdW5jdGlvbk5hbWUKK3sKKyAgICBteSAoJG5hbWUpID0gQF87CisKKyAgICAkbmFtZSA9fiBz
Ly0vX2Rhc2hfL2c7CisKKyAgICByZXR1cm4gJG5hbWU7Cit9CisKIHN1YiBHZXRBdHRyaWJ1dGVH
ZXR0ZXJOYW1lCiB7CiAgICAgbXkgKCRpbnRlcmZhY2UsICRjbGFzc05hbWUsICRhdHRyaWJ1dGUp
ID0gQF87CiAKLSAgICByZXR1cm4gJGNvZGVHZW5lcmF0b3ItPldLX2xjZmlyc3QoJGNsYXNzTmFt
ZSkgLiAiQ29uc3RydWN0b3IiIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJGF0dHJpYnV0
ZS0+bmFtZSkgaWYgJGF0dHJpYnV0ZS0+aXNTdGF0aWM7CiAgICAgcmV0dXJuIEdldEpTQnVpbHRp
bkZ1bmN0aW9uTmFtZSgkY2xhc3NOYW1lLCAkYXR0cmlidXRlKSBpZiBJc0pTQnVpbHRpbigkaW50
ZXJmYWNlLCAkYXR0cmlidXRlKTsKLSAgICByZXR1cm4gImpzIiAuICRpbnRlcmZhY2UtPnR5cGUt
Pm5hbWUgLiAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkYXR0cmlidXRlLT5uYW1lKSAuICgk
Y29kZUdlbmVyYXRvci0+SXNDb25zdHJ1Y3RvclR5cGUoJGF0dHJpYnV0ZS0+dHlwZSkgPyAiQ29u
c3RydWN0b3IiIDogIiIpOworICAgIHJldHVybiAkY29kZUdlbmVyYXRvci0+V0tfbGNmaXJzdCgk
Y2xhc3NOYW1lKSAuICJDb25zdHJ1Y3RvciIgLiAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdChN
YW5nbGVBdHRyaWJ1dGVPckZ1bmN0aW9uTmFtZSgkYXR0cmlidXRlLT5uYW1lKSkgaWYgJGF0dHJp
YnV0ZS0+aXNTdGF0aWM7CisgICAgcmV0dXJuICRjb2RlR2VuZXJhdG9yLT5XS19sY2ZpcnN0KCRj
bGFzc05hbWUpIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoTWFuZ2xlQXR0cmlidXRlT3JG
dW5jdGlvbk5hbWUoJGF0dHJpYnV0ZS0+bmFtZSkpIC4gIkNvbnN0cnVjdG9yIiBpZiAkY29kZUdl
bmVyYXRvci0+SXNDb25zdHJ1Y3RvclR5cGUoJGF0dHJpYnV0ZS0+dHlwZSk7CisgICAgcmV0dXJu
ICRjb2RlR2VuZXJhdG9yLT5XS19sY2ZpcnN0KCRjbGFzc05hbWUpIC4gJGNvZGVHZW5lcmF0b3It
PldLX3VjZmlyc3QoTWFuZ2xlQXR0cmlidXRlT3JGdW5jdGlvbk5hbWUoJGF0dHJpYnV0ZS0+bmFt
ZSkpOwogfQogCiBzdWIgR2V0QXR0cmlidXRlU2V0dGVyTmFtZQogewogICAgIG15ICgkaW50ZXJm
YWNlLCAkY2xhc3NOYW1lLCAkYXR0cmlidXRlKSA9IEBfOwogCi0gICAgcmV0dXJuICJzZXQiIC4g
JGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJGNsYXNzTmFtZSkgLiAiQ29uc3RydWN0b3IiIC4g
JGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJGF0dHJpYnV0ZS0+bmFtZSkgaWYgJGF0dHJpYnV0
ZS0+aXNTdGF0aWM7CiAgICAgcmV0dXJuICJzZXQiIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmly
c3QoR2V0SlNCdWlsdGluRnVuY3Rpb25OYW1lKCRjbGFzc05hbWUsICRhdHRyaWJ1dGUpKSBpZiBJ
c0pTQnVpbHRpbigkaW50ZXJmYWNlLCAkYXR0cmlidXRlKTsKLSAgICByZXR1cm4gInNldEpTIiAu
ICRpbnRlcmZhY2UtPnR5cGUtPm5hbWUgLiAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkYXR0
cmlidXRlLT5uYW1lKSAuICgkY29kZUdlbmVyYXRvci0+SXNDb25zdHJ1Y3RvclR5cGUoJGF0dHJp
YnV0ZS0+dHlwZSkgPyAiQ29uc3RydWN0b3IiIDogIiIpOworICAgIHJldHVybiAic2V0IiAuICRj
b2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRjbGFzc05hbWUpIC4gIkNvbnN0cnVjdG9yIiAuICRj
b2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KE1hbmdsZUF0dHJpYnV0ZU9yRnVuY3Rpb25OYW1lKCRh
dHRyaWJ1dGUtPm5hbWUpKSBpZiAkYXR0cmlidXRlLT5pc1N0YXRpYzsKKyAgICByZXR1cm4gInNl
dCIgLiAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkY2xhc3NOYW1lKSAuICRjb2RlR2VuZXJh
dG9yLT5XS191Y2ZpcnN0KE1hbmdsZUF0dHJpYnV0ZU9yRnVuY3Rpb25OYW1lKCRhdHRyaWJ1dGUt
Pm5hbWUpKSAuICJDb25zdHJ1Y3RvciIgaWYgJGNvZGVHZW5lcmF0b3ItPklzQ29uc3RydWN0b3JU
eXBlKCRhdHRyaWJ1dGUtPnR5cGUpOworICAgIHJldHVybiAic2V0IiAuICRjb2RlR2VuZXJhdG9y
LT5XS191Y2ZpcnN0KCRjbGFzc05hbWUpIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoTWFu
Z2xlQXR0cmlidXRlT3JGdW5jdGlvbk5hbWUoJGF0dHJpYnV0ZS0+bmFtZSkpOwogfQogCiBzdWIg
R2V0RnVuY3Rpb25OYW1lCkBAIC0xODc1LDcgKzE4ODYsNyBAQCBzdWIgR2V0RnVuY3Rpb25OYW1l
CiAgICAgJGZ1bmN0aW9uTmFtZSA9ICJTeW1ib2xJdGVyYXRvciIgaWYgJGZ1bmN0aW9uTmFtZSBl
cSAiW1N5bWJvbC5JdGVyYXRvcl0iOwogCiAgICAgbXkgJGtpbmQgPSAkb3BlcmF0aW9uLT5pc1N0
YXRpYyA/ICJDb25zdHJ1Y3RvciIgOiAoT3BlcmF0aW9uU2hvdWxkQmVPbkluc3RhbmNlKCRpbnRl
cmZhY2UsICRvcGVyYXRpb24pID8gIkluc3RhbmNlIiA6ICJQcm90b3R5cGUiKTsKLSAgICByZXR1
cm4gJGNvZGVHZW5lcmF0b3ItPldLX2xjZmlyc3QoJGNsYXNzTmFtZSkgLiAka2luZCAuICJGdW5j
dGlvbiIgLiAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkZnVuY3Rpb25OYW1lKTsKKyAgICBy
ZXR1cm4gJGNvZGVHZW5lcmF0b3ItPldLX2xjZmlyc3QoJGNsYXNzTmFtZSkgLiAka2luZCAuICJG
dW5jdGlvbiIgLiAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdChNYW5nbGVBdHRyaWJ1dGVPckZ1
bmN0aW9uTmFtZSgkZnVuY3Rpb25OYW1lKSk7CiB9CiAKIHN1YiBHZXRGdWxseVF1YWxpZmllZElt
cGxlbWVudGF0aW9uQ2FsbE5hbWUKQEAgLTQzNjAsNyArNDM3MSw2IEBAIHN1YiBHZW5lcmF0ZUlt
cGxlbWVudGF0aW9uCiAgICAgICAgICAgICBkaWUgIk92ZXJsb2FkcyBpcyBub3Qgc3VwcG9ydGVk
IGluIERPTUpJVCIgaWYgJGlzT3ZlcmxvYWRlZDsKICAgICAgICAgICAgIGRpZSAiQ3VycmVudGx5
IFJlYWRET00gdmFsdWUgaXMgb25seSBhbGxvd2VkIiB1bmxlc3MgJGNvZGVHZW5lcmF0b3ItPkV4
dGVuZGVkQXR0cmlidXRlQ29udGFpbnMoJG9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
RE9NSklUfSwgIlJlYWRET00iKTsKIAotICAgICAgICAgICAgbXkgJGludGVyZmFjZU5hbWUgPSAk
aW50ZXJmYWNlLT50eXBlLT5uYW1lOwogICAgICAgICAgICAgbXkgJGZ1bmN0aW9uTmFtZSA9IEdl
dEZ1bmN0aW9uTmFtZSgkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkb3BlcmF0aW9uKTsKICAgICAg
ICAgICAgIG15ICRuYW1lT2ZGdW5jdGlvbldpdGhvdXRUeXBlQ2hlY2sgPSAkY29kZUdlbmVyYXRv
ci0+V0tfbGNmaXJzdCgkZnVuY3Rpb25OYW1lKSAuICJXaXRob3V0VHlwZUNoZWNrIjsKICAgICAg
ICAgICAgIG15ICRkb21KSVRTaWduYXR1cmVOYW1lID0gIkRPTUpJVFNpZ25hdHVyZUZvciIgLiAk
aW50ZXJmYWNlLT50eXBlLT5uYW1lIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJG9wZXJh
dGlvbi0+bmFtZSk7CkBAIC00MzkwLDEwICs0NDAwLDkgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50
YXRpb24KICAgICAgICAgICAgIG15ICRjb25kaXRpb25hbFN0cmluZyA9ICRjb2RlR2VuZXJhdG9y
LT5HZW5lcmF0ZUNvbmRpdGlvbmFsU3RyaW5nKCRhdHRyaWJ1dGUpOwogICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIjaWYgJHtjb25kaXRpb25hbFN0cmluZ31cblxuIikgaWYgJGNvbmRp
dGlvbmFsU3RyaW5nOwogICAgICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIkRPTUpJVElETFR5
cGVGaWx0ZXIuaCIsICRjb25kaXRpb25hbFN0cmluZyk7Ci0gICAgICAgICAgICBteSAkaW50ZXJm
YWNlTmFtZSA9ICRpbnRlcmZhY2UtPnR5cGUtPm5hbWU7CiAgICAgICAgICAgICBteSAkZ2VuZXJh
dG9yTmFtZSA9ICRpbnRlcmZhY2VOYW1lIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJGF0
dHJpYnV0ZS0+bmFtZSk7CiAgICAgICAgICAgICBteSAkZG9tSklUQ2xhc3NOYW1lID0gJGdlbmVy
YXRvck5hbWUgLiAiQXR0cmlidXRlIjsKLSAgICAgICAgICAgIG15ICRnZXR0ZXIgPSBHZXRBdHRy
aWJ1dGVHZXR0ZXJOYW1lKCRpbnRlcmZhY2UsICRnZW5lcmF0b3JOYW1lLCAkYXR0cmlidXRlKTsK
KyAgICAgICAgICAgIG15ICRnZXR0ZXIgPSBHZXRBdHRyaWJ1dGVHZXR0ZXJOYW1lKCRpbnRlcmZh
Y2UsICRjbGFzc05hbWUsICRhdHRyaWJ1dGUpOwogICAgICAgICAgICAgbXkgJHJlc3VsdFR5cGUg
PSAiSlNDOjpTcGVjQnl0ZWNvZGVUb3AiOwogICAgICAgICAgICAgaWYgKCRhdHRyaWJ1dGUtPmV4
dGVuZGVkQXR0cmlidXRlcy0+e0RPTUpJVH0pIHsKICAgICAgICAgICAgICAgICAkcmVzdWx0VHlw
ZSA9IEdldFJlc3VsdFR5cGVGaWx0ZXIoJGludGVyZmFjZSwgJGF0dHJpYnV0ZS0+dHlwZSk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETFBhcnNlci5wbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETFBhcnNlci5wbQkocmV2
aXNpb24gMjY4MzkyKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJz
ZXIucG0JKHdvcmtpbmcgY29weSkKQEAgLTQwMyw3ICs0MDMsNyBAQCBteSAkd2hpdGVzcGFjZVRv
a2VuUGF0dGVybiA9ICdeW1x0XG5cciBdCiBteSAkZmxvYXRUb2tlblBhdHRlcm4gPSAnXigtPygo
WzAtOV0rXC5bMC05XSp8WzAtOV0qXC5bMC05XSspKFtFZV1bKy1dP1swLTldKyk/fFswLTldK1tF
ZV1bKy1dP1swLTldKykpJzsKIG15ICRpbnRlZ2VyVG9rZW5QYXR0ZXJuID0gJ14oLT9bMS05XVsw
LTldKnwtPzBbWHhdWzAtOUEtRmEtZl0rfC0/MFswLTddKiknOwogbXkgJHN0cmluZ1Rva2VuUGF0
dGVybiA9ICdeKFwiW15cIl0qXCIpJzsKLW15ICRpZGVudGlmaWVyVG9rZW5QYXR0ZXJuID0gJ14o
W0EtWl9hLXpdWzAtOUEtWl9hLXpdKiknOworbXkgJGlkZW50aWZpZXJUb2tlblBhdHRlcm4gPSAn
XihbXy1dP1tBLVpfYS16XVswLTlBLVpfYS16LV0qKSc7CiBteSAkb3RoZXJUb2tlblBhdHRlcm4g
PSAnXihcLlwuXC58W15cdFxuXHIgMC05QS1aX2Etel0pJzsKIAogc3ViIGdldFRva2VuSW50ZXJu
YWwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlk
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVz
dE9iai5pZGwJKHJldmlzaW9uIDI2ODM5MikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9UZXN0T2JqLmlkbAkod29ya2luZyBjb3B5KQpAQCAtNDU1LDYgKzQ1NSwxOCBA
QCBlbnVtIFRlc3RDb25maWRlbmNlIHsgImhpZ2giLCAia2luZGEtbG93CiAgICAgW0V4cG9zZWQ9
V2luZG93XSB1bmRlZmluZWQgY29uZGl0aW9uYWxseUV4cG9zZWRUb1dpbmRvd0Z1bmN0aW9uKCk7
CiAgICAgW0V4cG9zZWQ9V29ya2VyXSB1bmRlZmluZWQgY29uZGl0aW9uYWxseUV4cG9zZWRUb1dv
cmtlckZ1bmN0aW9uKCk7CiAgICAgW0V4cG9zZWQ9KFdpbmRvdywgV29ya2VyKV0gdW5kZWZpbmVk
IGNvbmRpdGlvbmFsbHlFeHBvc2VkVG9XaW5kb3dBbmRXb3JrZXJGdW5jdGlvbigpOworCisgICAg
W0ltcGxlbWVudGVkQXM9bGVhZGluZ0h5cGhlbkF0dHJpYnV0ZV0gYXR0cmlidXRlIERPTVN0cmlu
ZyAtbGVhZGluZy1oeXBoZW4tYXR0cmlidXRlOworICAgIFtJbXBsZW1lbnRlZEFzPXRyYWlsaW5n
SHlwaGVuQXR0cmlidXRlXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHRyYWlsaW5nLWh5cGhlbi1hdHRy
aWJ1dGUtOworICAgIGF0dHJpYnV0ZSBET01TdHJpbmcgX2xlYWRpbmdfdW5kZXJzY29yZV9hdHRy
aWJ1dGU7IC8vIE5PVEU6IElETCByZW1vdmVzIHRoZSBsZWFkaW5nIHVuZGVyc2NvcmUgc28gdGhp
cyBpcyBpbnRlcnByZXRlZCBhcyAibGVhZGluZ191bmRlcnNjb3JlX2F0dHJpYnV0ZSIKKyAgICBh
dHRyaWJ1dGUgRE9NU3RyaW5nIF9fZG91YmxlX2xlYWRpbmdfdW5kZXJzY29yZV9hdHRyaWJ1dGU7
IC8vIE5PVEU6IElETCByZW1vdmVzIHRoZSBsZWFkaW5nIHVuZGVyc2NvcmUgc28gdGhpcyBpcyBp
bnRlcnByZXRlZCBhcyAiX2RvdWJsZV9sZWFkaW5nX3VuZGVyc2NvcmVfYXR0cmlidXRlIgorICAg
IGF0dHJpYnV0ZSBET01TdHJpbmcgdHJhaWxpbmdfdW5kZXJzY29yZV9hdHRyaWJ1dGVfOworCisg
ICAgW0ltcGxlbWVudGVkQXM9bGVhZGluZ0h5cGhlbkZ1bmN0aW9uXSB1bmRlZmluZWQgLWxlYWRp
bmctaHlwaGVuLWZ1bmN0aW9uKCk7CisgICAgW0ltcGxlbWVudGVkQXM9dHJhaWxpbmdIeXBoZW5G
dW5jdGlvbl0gdW5kZWZpbmVkIHRyYWlsaW5nLWh5cGhlbi1mdW5jdGlvbi0oKTsKKyAgICB1bmRl
ZmluZWQgX2xlYWRpbmdfdW5kZXJzY29yZV9mdW5jdGlvbigpOyAvLyBOT1RFOiBXZWJJREwgcmVt
b3ZlcyB0aGUgbGVhZGluZyB1bmRlcnNjb3JlIHNvIHRoaXMgaXMgaW50ZXJwcmV0ZWQgYXMgImxl
YWRpbmdfdW5kZXJzY29yZV9mdW5jdGlvbiIKKyAgICB1bmRlZmluZWQgX19kb3VibGVfbGVhZGlu
Z191bmRlcnNjb3JlX2Z1bmN0aW9uKCk7IC8vIE5PVEU6IFdlYklETCByZW1vdmVzIHRoZSBsZWFk
aW5nIHVuZGVyc2NvcmUgc28gdGhpcyBpcyBpbnRlcnByZXRlZCBhcyAiX2RvdWJsZV9sZWFkaW5n
X3VuZGVyc2NvcmVfZnVuY3Rpb24iCisgICAgdW5kZWZpbmVkIHRyYWlsaW5nX3VuZGVyc2NvcmVf
ZnVuY3Rpb25fKCk7CiB9OwogCiAvLyBUaGUgZm9sbG93aW5nIGNvbW1lbnRzIHNob3VsZCBub3Qg
Z2VuZXJhdGUgYW55IGNvZGUuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAkocmV2aXNpb24gMjY4MzkyKQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE1OTcsNiArMTU5NywxMSBAQCBKU0NfREVDTEFSRV9IT1NUX0ZVTkNU
SU9OKGpzVGVzdE9ialByb3RvCiBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxseUV4cG9zZWRUb1dpbmRvd0Z1bmN0aW9uKTsKIEpT
Q19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db25kaXRp
b25hbGx5RXhwb3NlZFRvV29ya2VyRnVuY3Rpb24pOwogSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElP
Tihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsbHlFeHBvc2VkVG9XaW5kb3dB
bmRXb3JrZXJGdW5jdGlvbik7CitKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uX2Rhc2hfbGVhZGluZ19kYXNoX2h5cGhlbl9kYXNoX2Z1bmN0aW9uKTsK
K0pTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UcmFp
bGluZ19kYXNoX2h5cGhlbl9kYXNoX2Z1bmN0aW9uX2Rhc2hfKTsKK0pTQ19ERUNMQVJFX0hPU1Rf
RlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25MZWFkaW5nX3VuZGVyc2NvcmVfZnVu
Y3Rpb24pOworSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbl9kb3VibGVfbGVhZGluZ191bmRlcnNjb3JlX2Z1bmN0aW9uKTsKK0pTQ19ERUNMQVJFX0hP
U1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UcmFpbGluZ191bmRlcnNjb3Jl
X2Z1bmN0aW9uXyk7CiBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uVG9TdHJpbmcpOwogCiAvLyBBdHRyaWJ1dGVzCkBAIC0xNzk2LDYgKzE4MDEsMTYg
QEAgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RPYmpDb25kaQogSlNDX0RFQ0xBUkVf
Q1VTVE9NX1NFVFRFUihzZXRKU1Rlc3RPYmpDb25kaXRpb25hbGx5RXhwb3NlZFRvV29ya2VyQXR0
cmlidXRlKTsKIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIoanNUZXN0T2JqQ29uZGl0aW9uYWxs
eUV4cG9zZWRUb1dpbmRvd0FuZFdvcmtlckF0dHJpYnV0ZSk7CiBKU0NfREVDTEFSRV9DVVNUT01f
U0VUVEVSKHNldEpTVGVzdE9iakNvbmRpdGlvbmFsbHlFeHBvc2VkVG9XaW5kb3dBbmRXb3JrZXJB
dHRyaWJ1dGUpOworSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RPYmpfZGFzaF9sZWFk
aW5nX2Rhc2hfaHlwaGVuX2Rhc2hfYXR0cmlidXRlKTsKK0pTQ19ERUNMQVJFX0NVU1RPTV9TRVRU
RVIoc2V0SlNUZXN0T2JqX2Rhc2hfbGVhZGluZ19kYXNoX2h5cGhlbl9kYXNoX2F0dHJpYnV0ZSk7
CitKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzVGVzdE9ialRyYWlsaW5nX2Rhc2hfaHlwaGVu
X2Rhc2hfYXR0cmlidXRlX2Rhc2hfKTsKK0pTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNU
ZXN0T2JqVHJhaWxpbmdfZGFzaF9oeXBoZW5fZGFzaF9hdHRyaWJ1dGVfZGFzaF8pOworSlNDX0RF
Q0xBUkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RPYmpMZWFkaW5nX3VuZGVyc2NvcmVfYXR0cmlidXRl
KTsKK0pTQ19ERUNMQVJFX0NVU1RPTV9TRVRURVIoc2V0SlNUZXN0T2JqTGVhZGluZ191bmRlcnNj
b3JlX2F0dHJpYnV0ZSk7CitKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzVGVzdE9ial9kb3Vi
bGVfbGVhZGluZ191bmRlcnNjb3JlX2F0dHJpYnV0ZSk7CitKU0NfREVDTEFSRV9DVVNUT01fU0VU
VEVSKHNldEpTVGVzdE9ial9kb3VibGVfbGVhZGluZ191bmRlcnNjb3JlX2F0dHJpYnV0ZSk7CitK
U0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKGpzVGVzdE9ialRyYWlsaW5nX3VuZGVyc2NvcmVfYXR0
cmlidXRlXyk7CitKU0NfREVDTEFSRV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdE9ialRyYWlsaW5n
X3VuZGVyc2NvcmVfYXR0cmlidXRlXyk7CiAKIGNsYXNzIEpTVGVzdE9ialByb3RvdHlwZSBmaW5h
bCA6IHB1YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3QgewogcHVibGljOgpAQCAtMjEyOCw2ICsy
MTQzLDExIEBAIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RPYmpQcm8KICAgICB7
ICJjb25kaXRpb25hbGx5RXhwb3NlZFRvV2luZG93QXR0cmlidXRlIiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0
YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpDb25kaXRpb25h
bGx5RXhwb3NlZFRvV2luZG93QXR0cmlidXRlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQ
cm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0T2JqQ29uZGl0aW9uYWxseUV4cG9z
ZWRUb1dpbmRvd0F0dHJpYnV0ZSkgfSB9LAogICAgIHsgImNvbmRpdGlvbmFsbHlFeHBvc2VkVG9X
b3JrZXJBdHRyaWJ1dGUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6Q3VzdG9tQWNjZXNzb3IgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1
dGUpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpH
ZXRWYWx1ZUZ1bmM+KGpzVGVzdE9iakNvbmRpdGlvbmFsbHlFeHBvc2VkVG9Xb3JrZXJBdHRyaWJ1
dGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5j
PihzZXRKU1Rlc3RPYmpDb25kaXRpb25hbGx5RXhwb3NlZFRvV29ya2VyQXR0cmlidXRlKSB9IH0s
CiAgICAgeyAiY29uZGl0aW9uYWxseUV4cG9zZWRUb1dpbmRvd0FuZFdvcmtlckF0dHJpYnV0ZSIs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nl
c3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2lj
LCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNU
ZXN0T2JqQ29uZGl0aW9uYWxseUV4cG9zZWRUb1dpbmRvd0FuZFdvcmtlckF0dHJpYnV0ZSksIChp
bnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpT
VGVzdE9iakNvbmRpdGlvbmFsbHlFeHBvc2VkVG9XaW5kb3dBbmRXb3JrZXJBdHRyaWJ1dGUpIH0g
fSwKKyAgICB7ICItbGVhZGluZy1oeXBoZW4tYXR0cmlidXRlIiwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRp
Y19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpfZGFzaF9sZWFkaW5n
X2Rhc2hfaHlwaGVuX2Rhc2hfYXR0cmlidXRlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQ
cm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0T2JqX2Rhc2hfbGVhZGluZ19kYXNo
X2h5cGhlbl9kYXNoX2F0dHJpYnV0ZSkgfSB9LAorICAgIHsgInRyYWlsaW5nLWh5cGhlbi1hdHRy
aWJ1dGUtIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkN1
c3RvbUFjY2Vzc29yIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RE9NQXR0cmlidXRlKSwgTm9J
bnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVG
dW5jPihqc1Rlc3RPYmpUcmFpbGluZ19kYXNoX2h5cGhlbl9kYXNoX2F0dHJpYnV0ZV9kYXNoXyks
IChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNl
dEpTVGVzdE9ialRyYWlsaW5nX2Rhc2hfaHlwaGVuX2Rhc2hfYXR0cmlidXRlX2Rhc2hfKSB9IH0s
CisgICAgeyAibGVhZGluZ191bmRlcnNjb3JlX2F0dHJpYnV0ZSIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRPTUF0dHJpYnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0
aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqTGVhZGluZ191bmRl
cnNjb3JlX2F0dHJpYnV0ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90
OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdE9iakxlYWRpbmdfdW5kZXJzY29yZV9hdHRyaWJ1dGUp
IH0gfSwKKyAgICB7ICJfZG91YmxlX2xlYWRpbmdfdW5kZXJzY29yZV9hdHRyaWJ1dGUiLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3Ig
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpET01BdHRyaWJ1dGUpLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9i
al9kb3VibGVfbGVhZGluZ191bmRlcnNjb3JlX2F0dHJpYnV0ZSksIChpbnRwdHJfdCkgc3RhdGlj
X2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdE9ial9kb3VibGVf
bGVhZGluZ191bmRlcnNjb3JlX2F0dHJpYnV0ZSkgfSB9LAorICAgIHsgInRyYWlsaW5nX3VuZGVy
c2NvcmVfYXR0cmlidXRlXyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpDdXN0b21BY2Nlc3NvciB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRPTUF0dHJp
YnV0ZSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6
OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqVHJhaWxpbmdfdW5kZXJzY29yZV9hdHRyaWJ1dGVfKSwg
KGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0
SlNUZXN0T2JqVHJhaWxpbmdfdW5kZXJzY29yZV9hdHRyaWJ1dGVfKSB9IH0sCiAjaWYgRU5BQkxF
KFRFU1RfRkVBVFVSRSkKICAgICB7ICJlbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uIiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbkVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb24pLCAoaW50cHRyX3Qp
ICgxKSB9IH0sCiAjZWxzZQpAQCAtMjMwOSw2ICsyMzI5LDExIEBAIHN0YXRpYyBjb25zdCBIYXNo
VGFibGVWYWx1ZSBKU1Rlc3RPYmpQcm8KICAgICB7ICJjb25kaXRpb25hbGx5RXhwb3NlZFRvV2lu
ZG93RnVuY3Rpb24iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0
aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxseUV4cG9z
ZWRUb1dpbmRvd0Z1bmN0aW9uKSwgKGludHB0cl90KSAoMCkgfSB9LAogICAgIHsgImNvbmRpdGlv
bmFsbHlFeHBvc2VkVG9Xb3JrZXJGdW5jdGlvbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25D
b25kaXRpb25hbGx5RXhwb3NlZFRvV29ya2VyRnVuY3Rpb24pLCAoaW50cHRyX3QpICgwKSB9IH0s
CiAgICAgeyAiY29uZGl0aW9uYWxseUV4cG9zZWRUb1dpbmRvd0FuZFdvcmtlckZ1bmN0aW9uIiwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsbHlFeHBvc2VkVG9XaW5kb3dBbmRX
b3JrZXJGdW5jdGlvbiksIChpbnRwdHJfdCkgKDApIH0gfSwKKyAgICB7ICItbGVhZGluZy1oeXBo
ZW4tZnVuY3Rpb24iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0
aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX2Rhc2hfbGVhZGluZ19kYXNo
X2h5cGhlbl9kYXNoX2Z1bmN0aW9uKSwgKGludHB0cl90KSAoMCkgfSB9LAorICAgIHsgInRyYWls
aW5nLWh5cGhlbi1mdW5jdGlvbi0iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVHJhaWxpbmdf
ZGFzaF9oeXBoZW5fZGFzaF9mdW5jdGlvbl9kYXNoXyksIChpbnRwdHJfdCkgKDApIH0gfSwKKyAg
ICB7ICJsZWFkaW5nX3VuZGVyc2NvcmVfZnVuY3Rpb24iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uTGVhZGluZ191bmRlcnNjb3JlX2Z1bmN0aW9uKSwgKGludHB0cl90KSAoMCkgfSB9LAorICAg
IHsgIl9kb3VibGVfbGVhZGluZ191bmRlcnNjb3JlX2Z1bmN0aW9uIiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbl9kb3VibGVfbGVhZGluZ191bmRlcnNjb3JlX2Z1bmN0aW9uKSwgKGludHB0cl90
KSAoMCkgfSB9LAorICAgIHsgInRyYWlsaW5nX3VuZGVyc2NvcmVfZnVuY3Rpb25fIiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvblRyYWlsaW5nX3VuZGVyc2NvcmVfZnVuY3Rpb25fKSwgKGludHB0
cl90KSAoMCkgfSB9LAogICAgIHsgInRvU3RyaW5nIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90
KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
blRvU3RyaW5nKSwgKGludHB0cl90KSAoMCkgfSB9LAogI2lmIEVOQUJMRShDb25kaXRpb24xKQog
ICAgIHsgIkNPTkRJVElPTkFMX0NPTlNUIiwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERl
bGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6Q29uc3RhbnRJbnRlZ2VyLCBOb0ludHJpbnNpYywgeyAobG9uZyBsb25nKSgwKSB9
IH0sCkBAIC01MzI4LDYgKzUzNTMsMTYxIEBAIEpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRK
U1Rlc3RPYmpDb24KICAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdE9iaj46OnNldDxzZXRK
U1Rlc3RPYmpDb25kaXRpb25hbGx5RXhwb3NlZFRvV2luZG93QW5kV29ya2VyQXR0cmlidXRlU2V0
dGVyPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJjb25k
aXRpb25hbGx5RXhwb3NlZFRvV2luZG93QW5kV29ya2VyQXR0cmlidXRlIik7CiB9CiAKK3N0YXRp
YyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RPYmpfZGFzaF9sZWFkaW5nX2Rhc2hfaHlwaGVuX2Rhc2hf
YXR0cmlidXRlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rl
c3RPYmomIHRoaXNPYmplY3QpCit7CisgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKyAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CisgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETERPTVN0cmluZz4obGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5sZWFkaW5nSHlwaGVuQXR0cmlidXRlKCkpKSk7Cit9
CisKK0pTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihqc1Rlc3RPYmpfZGFzaF9sZWFkaW5nX2Rhc2hf
aHlwaGVuX2Rhc2hfYXR0cmlidXRlLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKK3sKKyAgICByZXR1
cm4gSURMQXR0cmlidXRlPEpTVGVzdE9iaj46OmdldDxqc1Rlc3RPYmpfZGFzaF9sZWFkaW5nX2Rh
c2hfaHlwaGVuX2Rhc2hfYXR0cmlidXRlR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6
QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiLWxlYWRpbmctaHlwaGVu
LWF0dHJpYnV0ZSIpOworfQorCitzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0T2JqX2Rhc2hf
bGVhZGluZ19kYXNoX2h5cGhlbl9kYXNoX2F0dHJpYnV0ZVNldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0T2JqJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVl
KQoreworICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7Cisg
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOworICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252
ZXJ0PElETERPTVN0cmluZz4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOworICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOworICAgIEF0dHJpYnV0ZVNldHRlcjo6
Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0geworICAgICAgICByZXR1
cm4gaW1wbC5zZXRMZWFkaW5nSHlwaGVuQXR0cmlidXRlKFdURk1vdmUobmF0aXZlVmFsdWUpKTsK
KyAgICB9KTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworSlNDX0RFRklORV9DVVNUT01fU0VUVEVS
KHNldEpTVGVzdE9ial9kYXNoX2xlYWRpbmdfZGFzaF9oeXBoZW5fZGFzaF9hdHRyaWJ1dGUsIChK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQoreworICAgIHJldHVybiBJRExBdHRy
aWJ1dGU8SlNUZXN0T2JqPjo6c2V0PHNldEpTVGVzdE9ial9kYXNoX2xlYWRpbmdfZGFzaF9oeXBo
ZW5fZGFzaF9hdHRyaWJ1dGVTZXR0ZXI+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
IGVuY29kZWRWYWx1ZSwgIi1sZWFkaW5nLWh5cGhlbi1hdHRyaWJ1dGUiKTsKK30KKworc3RhdGlj
IGlubGluZSBKU1ZhbHVlIGpzVGVzdE9ialRyYWlsaW5nX2Rhc2hfaHlwaGVuX2Rhc2hfYXR0cmli
dXRlX2Rhc2hfR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rl
c3RPYmomIHRoaXNPYmplY3QpCit7CisgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKyAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CisgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETERPTVN0cmluZz4obGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC50cmFpbGluZ0h5cGhlbkF0dHJpYnV0ZSgpKSkpOwor
fQorCitKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNUZXN0T2JqVHJhaWxpbmdfZGFzaF9oeXBo
ZW5fZGFzaF9hdHRyaWJ1dGVfZGFzaF8sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQoreworICAgIHJl
dHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0T2JqPjo6Z2V0PGpzVGVzdE9ialRyYWlsaW5nX2Rhc2hf
aHlwaGVuX2Rhc2hfYXR0cmlidXRlX2Rhc2hfR2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlv
cjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAidHJhaWxpbmctaHlw
aGVuLWF0dHJpYnV0ZS0iKTsKK30KKworc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdE9ialRy
YWlsaW5nX2Rhc2hfaHlwaGVuX2Rhc2hfYXR0cmlidXRlX2Rhc2hfU2V0dGVyKEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RPYmomIHRoaXNPYmplY3QsIEpTVmFsdWUg
dmFsdWUpCit7CisgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBh
dXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CisgICAgYXV0byBuYXRpdmVWYWx1ZSA9
IGNvbnZlcnQ8SURMRE9NU3RyaW5nPihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CisgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CisgICAgQXR0cmlidXRlU2V0
dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CisgICAgICAg
IHJldHVybiBpbXBsLnNldFRyYWlsaW5nSHlwaGVuQXR0cmlidXRlKFdURk1vdmUobmF0aXZlVmFs
dWUpKTsKKyAgICB9KTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworSlNDX0RFRklORV9DVVNUT01f
U0VUVEVSKHNldEpTVGVzdE9ialRyYWlsaW5nX2Rhc2hfaHlwaGVuX2Rhc2hfYXR0cmlidXRlX2Rh
c2hfLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSkKK3sKKyAgICByZXR1cm4g
SURMQXR0cmlidXRlPEpTVGVzdE9iaj46OnNldDxzZXRKU1Rlc3RPYmpUcmFpbGluZ19kYXNoX2h5
cGhlbl9kYXNoX2F0dHJpYnV0ZV9kYXNoX1NldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRo
aXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAidHJhaWxpbmctaHlwaGVuLWF0dHJpYnV0ZS0iKTsKK30K
Kworc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdE9iakxlYWRpbmdfdW5kZXJzY29yZV9hdHRy
aWJ1dGVHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdE9i
aiYgdGhpc09iamVjdCkKK3sKKyAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9i
YWxPYmplY3QpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKKyAgICBSRUxFQVNFX0FO
RF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMRE9NU3RyaW5nPihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmxlYWRpbmdfdW5kZXJzY29yZV9hdHRyaWJ1dGUoKSkpKTsK
K30KKworSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzVGVzdE9iakxlYWRpbmdfdW5kZXJzY29y
ZV9hdHRyaWJ1dGUsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQoreworICAgIHJldHVybiBJRExBdHRy
aWJ1dGU8SlNUZXN0T2JqPjo6Z2V0PGpzVGVzdE9iakxlYWRpbmdfdW5kZXJzY29yZV9hdHRyaWJ1
dGVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aGlzVmFsdWUsICJsZWFkaW5nX3VuZGVyc2NvcmVfYXR0cmlidXRlIik7Cit9CisK
K3N0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RPYmpMZWFkaW5nX3VuZGVyc2NvcmVfYXR0cmli
dXRlU2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RPYmom
IHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCit7CisgICAgYXV0byYgdm0gPSBKU0M6OmdldFZN
KCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKyAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7Cisg
ICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPihsZXhpY2FsR2xvYmFs
T2JqZWN0LCB2YWx1ZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxz
ZSk7CisgICAgQXR0cmlidXRlU2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIFsmXSB7CisgICAgICAgIHJldHVybiBpbXBsLnNldExlYWRpbmdfdW5kZXJzY29yZV9h
dHRyaWJ1dGUoV1RGTW92ZShuYXRpdmVWYWx1ZSkpOworICAgIH0pOworICAgIHJldHVybiB0cnVl
OworfQorCitKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0SlNUZXN0T2JqTGVhZGluZ191bmRl
cnNjb3JlX2F0dHJpYnV0ZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkpCit7
CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RPYmo+OjpzZXQ8c2V0SlNUZXN0T2JqTGVh
ZGluZ191bmRlcnNjb3JlX2F0dHJpYnV0ZVNldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRo
aXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAibGVhZGluZ191bmRlcnNjb3JlX2F0dHJpYnV0ZSIpOwor
fQorCitzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0T2JqX2RvdWJsZV9sZWFkaW5nX3VuZGVy
c2NvcmVfYXR0cmlidXRlR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU1Rlc3RPYmomIHRoaXNPYmplY3QpCit7CisgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKyAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CisgICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETERPTVN0cmluZz4obGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5fZG91YmxlX2xlYWRpbmdfdW5kZXJzY29y
ZV9hdHRyaWJ1dGUoKSkpKTsKK30KKworSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzVGVzdE9i
al9kb3VibGVfbGVhZGluZ191bmRlcnNjb3JlX2F0dHJpYnV0ZSwgKEpTR2xvYmFsT2JqZWN0KiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFt
ZSkpCit7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RPYmo+OjpnZXQ8anNUZXN0T2Jq
X2RvdWJsZV9sZWFkaW5nX3VuZGVyc2NvcmVfYXR0cmlidXRlR2V0dGVyLCBDYXN0ZWRUaGlzRXJy
b3JCZWhhdmlvcjo6QXNzZXJ0PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCAiX2Rv
dWJsZV9sZWFkaW5nX3VuZGVyc2NvcmVfYXR0cmlidXRlIik7Cit9CisKK3N0YXRpYyBpbmxpbmUg
Ym9vbCBzZXRKU1Rlc3RPYmpfZG91YmxlX2xlYWRpbmdfdW5kZXJzY29yZV9hdHRyaWJ1dGVTZXR0
ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTVGVzdE9iaiYgdGhpc09i
amVjdCwgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKKyAgICBhdXRv
IG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExET01TdHJpbmc+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHZhbHVlKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKKyAg
ICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwg
WyZdIHsKKyAgICAgICAgcmV0dXJuIGltcGwuc2V0X2RvdWJsZV9sZWFkaW5nX3VuZGVyc2NvcmVf
YXR0cmlidXRlKFdURk1vdmUobmF0aXZlVmFsdWUpKTsKKyAgICB9KTsKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworSlNDX0RFRklORV9DVVNUT01fU0VUVEVSKHNldEpTVGVzdE9ial9kb3VibGVfbGVh
ZGluZ191bmRlcnNjb3JlX2F0dHJpYnV0ZSwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSkpCit7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RPYmo+OjpzZXQ8c2V0SlNU
ZXN0T2JqX2RvdWJsZV9sZWFkaW5nX3VuZGVyc2NvcmVfYXR0cmlidXRlU2V0dGVyPigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJfZG91YmxlX2xlYWRpbmdf
dW5kZXJzY29yZV9hdHRyaWJ1dGUiKTsKK30KKworc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVz
dE9ialRyYWlsaW5nX3VuZGVyc2NvcmVfYXR0cmlidXRlX0dldHRlcihKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNUZXN0T2JqJiB0aGlzT2JqZWN0KQoreworICAgIGF1dG8m
IHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgYXV0byYgaW1wbCA9IHRoaXNPYmpl
Y3Qud3JhcHBlZCgpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJ
RExET01TdHJpbmc+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwudHJhaWxp
bmdfdW5kZXJzY29yZV9hdHRyaWJ1dGVfKCkpKSk7Cit9CisKK0pTQ19ERUZJTkVfQ1VTVE9NX0dF
VFRFUihqc1Rlc3RPYmpUcmFpbGluZ191bmRlcnNjb3JlX2F0dHJpYnV0ZV8sIChKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpKQoreworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0T2JqPjo6Z2V0PGpz
VGVzdE9ialRyYWlsaW5nX3VuZGVyc2NvcmVfYXR0cmlidXRlX0dldHRlciwgQ2FzdGVkVGhpc0Vy
cm9yQmVoYXZpb3I6OkFzc2VydD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgInRy
YWlsaW5nX3VuZGVyc2NvcmVfYXR0cmlidXRlXyIpOworfQorCitzdGF0aWMgaW5saW5lIGJvb2wg
c2V0SlNUZXN0T2JqVHJhaWxpbmdfdW5kZXJzY29yZV9hdHRyaWJ1dGVfU2V0dGVyKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1Rlc3RPYmomIHRoaXNPYmplY3QsIEpTVmFs
dWUgdmFsdWUpCit7CisgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAg
ICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CisgICAgYXV0byBuYXRpdmVWYWx1
ZSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7Cisg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CisgICAgQXR0cmlidXRl
U2V0dGVyOjpjYWxsKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CisgICAg
ICAgIHJldHVybiBpbXBsLnNldFRyYWlsaW5nX3VuZGVyc2NvcmVfYXR0cmlidXRlXyhXVEZNb3Zl
KG5hdGl2ZVZhbHVlKSk7CisgICAgfSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK0pTQ19ERUZJ
TkVfQ1VTVE9NX1NFVFRFUihzZXRKU1Rlc3RPYmpUcmFpbGluZ191bmRlcnNjb3JlX2F0dHJpYnV0
ZV8sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpKQoreworICAgIHJldHVybiBJ
RExBdHRyaWJ1dGU8SlNUZXN0T2JqPjo6c2V0PHNldEpTVGVzdE9ialRyYWlsaW5nX3VuZGVyc2Nv
cmVfYXR0cmlidXRlX1NldHRlcj4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgZW5j
b2RlZFZhbHVlLCAidHJhaWxpbmdfdW5kZXJzY29yZV9hdHRyaWJ1dGVfIik7Cit9CisKICNpZiBF
TkFCTEUoVEVTVF9GRUFUVVJFKQogc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uRW5hYmxlZEF0UnVudGltZU9wZXJhdGlvbjFCb2R5KEpT
Qzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBj
YWxsRnJhbWUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRl
ciBjYXN0ZWRUaGlzKQogewpAQCAtOTI0Niw2ICs5NDI2LDkxIEBAIEpTQ19ERUZJTkVfSE9TVF9G
VU5DVElPTihqc1Rlc3RPYmpQcm90b3QKICAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9i
aj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db25kaXRpb25hbGx5RXhwb3NlZFRv
V2luZG93QW5kV29ya2VyRnVuY3Rpb25Cb2R5PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxG
cmFtZSwgImNvbmRpdGlvbmFsbHlFeHBvc2VkVG9XaW5kb3dBbmRXb3JrZXJGdW5jdGlvbiIpOwog
fQogCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25fZGFzaF9sZWFkaW5nX2Rhc2hfaHlwaGVuX2Rhc2hfZnVuY3Rpb25Cb2R5KEpTQzo6
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxs
RnJhbWUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBj
YXN0ZWRUaGlzKQoreworICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAg
ICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CisgICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7
CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKKyAgICB0aHJvd1Njb3Bl
LnJlbGVhc2UoKTsKKyAgICBpbXBsLmxlYWRpbmdIeXBoZW5GdW5jdGlvbigpOworICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Cit9CisKK0pTQ19ERUZJTkVfSE9TVF9G
VU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbl9kYXNoX2xlYWRpbmdfZGFzaF9oeXBo
ZW5fZGFzaF9mdW5jdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RP
Ymo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uX2Rhc2hfbGVhZGluZ19kYXNoX2h5
cGhlbl9kYXNoX2Z1bmN0aW9uQm9keT4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUs
ICItbGVhZGluZy1oeXBoZW4tZnVuY3Rpb24iKTsKK30KKworc3RhdGljIGlubGluZSBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVHJhaWxpbmdfZGFzaF9oeXBo
ZW5fZGFzaF9mdW5jdGlvbl9kYXNoX0JvZHkoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDOjpDYWxsRnJhbWUqIGNhbGxGcmFtZSwgdHlwZW5hbWUgSURMT3BlcmF0
aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMpCit7CisgICAgYXV0byYg
dm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOworICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3Bl
KTsKKyAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKKyAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+d3JhcHBlZCgpOworICAgIHRocm93U2NvcGUucmVsZWFzZSgpOworICAgIGltcGwudHJh
aWxpbmdIeXBoZW5GdW5jdGlvbigpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7Cit9CisKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvblRyYWlsaW5nX2Rhc2hfaHlwaGVuX2Rhc2hfZnVuY3Rpb25fZGFzaF8sIChKU0ds
b2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQor
eworICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvblRyYWlsaW5nX2Rhc2hfaHlwaGVuX2Rhc2hfZnVuY3Rpb25fZGFzaF9Cb2R5
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgKmNhbGxGcmFtZSwgInRyYWlsaW5nLWh5cGhlbi1mdW5j
dGlvbi0iKTsKK30KKworc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uTGVhZGluZ191bmRlcnNjb3JlX2Z1bmN0aW9uQm9keShKU0M6OkpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxGcmFtZSogY2FsbEZy
YW1lLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2Fz
dGVkVGhpcykKK3sKKyAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNhbEdsb2JhbE9iamVj
dCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAg
VU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOworICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOwor
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CisgICAgdGhyb3dTY29wZS5y
ZWxlYXNlKCk7CisgICAgaW1wbC5sZWFkaW5nX3VuZGVyc2NvcmVfZnVuY3Rpb24oKTsKKyAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworfQorCitKU0NfREVGSU5FX0hP
U1RfRlVOQ1RJT04oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25MZWFkaW5nX3VuZGVyc2NvcmVf
ZnVuY3Rpb24sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpKQoreworICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2Fs
bDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkxlYWRpbmdfdW5kZXJzY29yZV9mdW5jdGlvbkJv
ZHk+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCAqY2FsbEZyYW1lLCAibGVhZGluZ191bmRlcnNjb3Jl
X2Z1bmN0aW9uIik7Cit9CisKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbl9kb3VibGVfbGVhZGluZ191bmRlcnNjb3JlX2Z1bmN0aW9u
Qm9keShKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkNhbGxG
cmFtZSogY2FsbEZyYW1lLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQ
YXJhbWV0ZXIgY2FzdGVkVGhpcykKK3sKKyAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0obGV4aWNh
bEdsb2JhbE9iamVjdCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOworICAgIFVOVVNFRF9QQVJBTShj
YWxsRnJhbWUpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CisgICAg
dGhyb3dTY29wZS5yZWxlYXNlKCk7CisgICAgaW1wbC5fZG91YmxlX2xlYWRpbmdfdW5kZXJzY29y
ZV9mdW5jdGlvbigpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
Cit9CisKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bl9kb3VibGVfbGVhZGluZ191bmRlcnNjb3JlX2Z1bmN0aW9uLCAoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK3sKKyAgICByZXR1cm4g
SURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25f
ZG91YmxlX2xlYWRpbmdfdW5kZXJzY29yZV9mdW5jdGlvbkJvZHk+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCAqY2FsbEZyYW1lLCAiX2RvdWJsZV9sZWFkaW5nX3VuZGVyc2NvcmVfZnVuY3Rpb24iKTsK
K30KKworc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uVHJhaWxpbmdfdW5kZXJzY29yZV9mdW5jdGlvbl9Cb2R5KEpTQzo6SlNHbG9iYWxP
YmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIHR5
cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlz
KQoreworICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURf
UEFSQU0odGhyb3dTY29wZSk7CisgICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7CisgICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKKyAgICB0aHJvd1Njb3BlLnJlbGVhc2Uo
KTsKKyAgICBpbXBsLnRyYWlsaW5nX3VuZGVyc2NvcmVfZnVuY3Rpb25fKCk7CisgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZV
TkNUSU9OKGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVHJhaWxpbmdfdW5kZXJzY29yZV9mdW5j
dGlvbl8sIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpKQoreworICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRyYWlsaW5nX3VuZGVyc2NvcmVfZnVuY3Rpb25fQm9k
eT4oKmxleGljYWxHbG9iYWxPYmplY3QsICpjYWxsRnJhbWUsICJ0cmFpbGluZ191bmRlcnNjb3Jl
X2Z1bmN0aW9uXyIpOworfQorCiBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Ub1N0cmluZ0JvZHkoSlNDOjpKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpDYWxsRnJhbWUqIGNhbGxGcmFtZSwgdHlwZW5hbWUg
SURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMpCiB7CiAg
ICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKGxleGljYWxHbG9iYWxPYmplY3QpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>