<?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>162996</bug_id>
          
          <creation_ts>2016-10-05 22:24:17 -0700</creation_ts>
          <short_desc>Upgrading and constructing element should always report exception instead of rethrowing</short_desc>
          <delta_ts>2016-10-06 17:49:06 -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>DOM</component>
          <version>Safari Technology Preview</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>154907</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kangil.han</cc>
    
    <cc>koivisto</cc>
    
    <cc>mkwst</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1236901</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-10-05 22:24:17 -0700</bug_when>
    <thetext>When upgrading or constructing an element synchronously inside the HTML parser and document.createElement,
we must report the exception instead of rethrowing the exception.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236902</commentid>
    <comment_count>1</comment_count>
      <attachid>290782</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-10-05 22:40:03 -0700</bug_when>
    <thetext>Created attachment 290782
Fixes the bug</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236928</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2016-10-06 00:07:55 -0700</bug_when>
    <thetext>&lt;rdar://problem/28647657&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1237250</commentid>
    <comment_count>3</comment_count>
      <attachid>290782</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-10-06 12:42:04 -0700</bug_when>
    <thetext>Comment on attachment 290782
Fixes the bug

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

&gt; Source/WebCore/bindings/js/JSCustomElementInterface.cpp:72
&gt; +    return element.get();

The get() here means we get reference count churn. Can we compile a version that transfers ownership instead? Maybe WTFMove(element) works? If not, then we should fix the Ref class so it does.

&gt; Source/WebCore/bindings/js/JSCustomElementInterface.cpp:91
&gt; +    RefPtr&lt;Element&gt; element = constructCustomElementSynchronously(document, vm, state, m_constructor.get(), localName);

Can we use auto here instead of RefPtr?

&gt; Source/WebCore/html/parser/HTMLDocumentParser.cpp:200
&gt; +        Ref&lt;Element&gt; newElement = elementInterface.constructElementWithFallback(*document(), constructionData-&gt;name);

Can we use auto here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1237300</commentid>
    <comment_count>4</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-10-06 13:16:27 -0700</bug_when>
    <thetext>Thanks for the review.

(In reply to comment #3)
&gt; Comment on attachment 290782 [details]
&gt; Fixes the bug
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=290782&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/bindings/js/JSCustomElementInterface.cpp:72
&gt; &gt; +    return element.get();
&gt; 
&gt; The get() here means we get reference count churn. Can we compile a version
&gt; that transfers ownership instead? Maybe WTFMove(element) works? If not, then
&gt; we should fix the Ref class so it does.

WTFMove(element) fails because Ref&lt;HTMLUnknownElement&gt;&amp;&amp; can be adopted by Ref&lt;Element&gt;&amp;&amp; :(  I agree we should fix that, not in this patch though.

&gt; 
&gt; &gt; Source/WebCore/bindings/js/JSCustomElementInterface.cpp:91
&gt; &gt; +    RefPtr&lt;Element&gt; element = constructCustomElementSynchronously(document, vm, state, m_constructor.get(), localName);
&gt; 
&gt; Can we use auto here instead of RefPtr?

Sure.

&gt; &gt; Source/WebCore/html/parser/HTMLDocumentParser.cpp:200
&gt; &gt; +        Ref&lt;Element&gt; newElement = elementInterface.constructElementWithFallback(*document(), constructionData-&gt;name);
&gt; 
&gt; Can we use auto here?

Sure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1237396</commentid>
    <comment_count>5</comment_count>
      <attachid>290872</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-10-06 17:15:06 -0700</bug_when>
    <thetext>Created attachment 290872
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1237416</commentid>
    <comment_count>6</comment_count>
      <attachid>290872</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-06 17:49:01 -0700</bug_when>
    <thetext>Comment on attachment 290872
Patch for landing

Clearing flags on attachment: 290872

Committed r206890: &lt;http://trac.webkit.org/changeset/206890&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1237417</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-06 17:49:06 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>290782</attachid>
            <date>2016-10-05 22:40:03 -0700</date>
            <delta_ts>2016-10-06 17:15:02 -0700</delta_ts>
            <desc>Fixes the bug</desc>
            <filename>bug-162996-20161005223650.patch</filename>
            <type>text/plain</type>
            <size>47788</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA2ODAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2QzMjllYTllNTQ2YWQy
YjJlMDY5ZDY1ODhiNTlmMTliZjFkNDFhYi4uMjM2ODJjMTA4YjQ3ZmU2M2MwMmJkZmE3OWY0ODRm
MjhhMTMwZjU1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDE2LTEwLTA1ICBSeW9z
dWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFVwZ3JhZGluZyBhbmQgY29u
c3RydWN0aW5nIGVsZW1lbnQgc2hvdWxkIGFsd2F5cyByZXBvcnQgZXhjZXB0aW9uIGluc3RlYWQg
b2YgcmV0aHJvd2luZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTYyOTk2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVGhlIGxhdGVzdCBIVE1MIHNwZWNpZmljYXRpb24gc3BlY2lmaWVzIHRoYXQgd2UgbXVz
dCByZXBvcnQgZXhjZXB0aW9ucyB0aHJvd24gZHVyaW5nIGVsZW1lbnQgdXBncmFkZXM6CisgICAg
ICAgIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvI3VwZ3JhZGVzCisKKyAgICAgICAgSW4g
YWRkaXRpb24sIEYyRiBkdXJpbmcgMjAxNiBUUEFDIGhhZCBhIGNvbnNlbnN1cyB0aGF0IHdlIHNo
b3VsZCBkbyB0aGUgc2FtZSBmb3IgZG9jdW1lbnQuY3JlYXRlRWxlbWVudDoKKyAgICAgICAgaHR0
cHM6Ly9naXRodWIuY29tL3czYy93ZWJjb21wb25lbnRzL2lzc3Vlcy81NjkKKworICAgICAgICBT
aW5jZSB0aGUgSFRNTCBwYXJzZXIgYWxyZWFkeSByZXBvcnRzIHRoZSBleGNlcHRpb24gdGhyb3du
IGR1cmluZyBjdXN0b20gZWxlbWVudCBjb25zdHJ1Y3Rpb24gYXMgaXQgZG9lcworICAgICAgICBu
b3QgaGF2ZSBhbnkgSlMgc3RhY2ssIHRoZXNlIGNoYW5nZXMgbWFrZSBleGNlcHRpb25zIHRocm93
biBkdXJpbmcgdXBncmFkZXMgYW5kIGNvbnN0cnVjdGlvbnMuCisKKyAgICAgICAgSW4gb3VyIGlt
cGxlbWVudGF0aW9uLCB0aGlzIG9ubHkgcmVkdWNlcyB0aGUgY29kZSBjb21wbGV4aXR5IGFzIG5v
dyB3ZSBjYW4gcHVzaCB0aGUgbG9naWMgdG8gZmFsbGJhY2sKKyAgICAgICAgdG8gSFRNTFVua25v
d25FbGVtZW50IGludG8gSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlJ3MgY29uc3RydWN0RWxlbWVu
dCwgd2hpY2ggaGFzIGJlZW4gcmVuYW1lZAorICAgICAgICB0byBjb25zdHJ1Y3RFbGVtZW50V2l0
aEZhbGxiYWNrLCBhbmQgZWxpbWluYXRlIFNob3VsZENsZWFyRXhjZXB0aW9uIGVudW0gY2xhc3Mg
ZW50aXJlbHkuIE1vcmVvdmVyLAorICAgICAgICBjb25zdHJ1Y3RFbGVtZW50V2l0aEZhbGxiYWNr
IGNhbiBub3cgcmV0dXJuIFJlZiBpbnN0ZWFkIG9mIFJlZlB0ci4KKworICAgICAgICBObyBuZXcg
dGVzdHMuIEV4aXN0aW5nIHRlc3RzIGhhdmUgYmVlbiB1cGRhdGVkLgorCisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkpTQ3VzdG9tRWxlbWVudEludGVyZmFjZTo6Y29uc3RydWN0RWxlbWVudFdpdGhGYWxsYmFjayk6
IENyZWF0ZSBhIEhUTUxVbmtub3duRWxlbWVudCBpZgorICAgICAgICBhbiBhdHRlbXB0IHRvIGNv
bnN0cnVjdCBhIGN1c3RvbSBlbGVtZW50IGhhZCBmYWlsZWQgaW4gbGlldSBvZiByZXR1cm5pbmcg
bnVsbHB0ci4KKyAgICAgICAgKFdlYkNvcmU6OkpTQ3VzdG9tRWxlbWVudEludGVyZmFjZTo6dHJ5
VG9Db25zdHJ1Y3RDdXN0b21FbGVtZW50KTogUmVuYW1lZCBmcm9tIGNvbnN0cnVjdEVsZW1lbnQu
CisgICAgICAgIEFsd2F5cyByZXBvcnQgZXhjZXB0aW9ucyAodGhlIHNhbWUgYmVoYXZpb3IgYXMg
U2hvdWxkQ2xlYXJFeGNlcHRpb246OkNsZWFyKS4KKyAgICAgICAgKFdlYkNvcmU6OkpTQ3VzdG9t
RWxlbWVudEludGVyZmFjZTo6dXBncmFkZUVsZW1lbnQpOiBSZXBvcnQgZXhjZXB0aW9ucyBpbnN0
ZWFkIG9mIHJldGhyb3dpbmcuCisgICAgICAgICogYmluZGluZ3MvanMvSlNDdXN0b21FbGVtZW50
SW50ZXJmYWNlLmg6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNyZWF0ZUhUTUxFbGVtZW50V2l0aE5hbWVWYWxpZGF0aW9uKToKKyAgICAgICAgKiBodG1s
L3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTERv
Y3VtZW50UGFyc2VyOjpydW5TY3JpcHRzRm9yUGF1c2VkVHJlZUJ1aWxkZXIpOgorCiAyMDE2LTEw
LTA0ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CiAKICAgICAg
ICAgVGhlIGRyYWdnZWQgaW1hZ2Ugc2hvdWxkIGJlIHRoZSBjdXJyZW50IGZyYW1lIG9ubHkgb2Yg
dGhlIGFuaW1hdGVkIGltYWdlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlLmNwcAppbmRleCA1OTkwMzEyYjVlMjgxN2YyZWZj
MDQ1NzIzMWI5OGI2NjY0ZWM2NmY0Li4zNjQ2ZGYxYTM4NDM0MmJiMjA4ZDRkOGRjODM5ZDAwNzc3
OGYyOTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbUVs
ZW1lbnRJbnRlcmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3Vz
dG9tRWxlbWVudEludGVyZmFjZS5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpZiBFTkFCTEUoQ1VT
VE9NX0VMRU1FTlRTKQogCiAjaW5jbHVkZSAiRE9NV3JhcHBlcldvcmxkLmgiCisjaW5jbHVkZSAi
SFRNTFVua25vd25FbGVtZW50LmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5jbHVk
ZSAiSlNET01HbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJKU0VsZW1lbnQuaCIKQEAgLTU5LDcg
KzYwLDE5IEBAIEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZTo6fkpTQ3VzdG9tRWxlbWVudEludGVy
ZmFjZSgpCiAKIHN0YXRpYyBSZWZQdHI8RWxlbWVudD4gY29uc3RydWN0Q3VzdG9tRWxlbWVudFN5
bmNocm9ub3VzbHkoRG9jdW1lbnQmLCBWTSYsIEV4ZWNTdGF0ZSYsIEpTT2JqZWN0KiBjb25zdHJ1
Y3RvciwgY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbE5hbWUpOwogCi1SZWZQdHI8RWxlbWVudD4g
SlNDdXN0b21FbGVtZW50SW50ZXJmYWNlOjpjb25zdHJ1Y3RFbGVtZW50KGNvbnN0IEF0b21pY1N0
cmluZyYgbG9jYWxOYW1lLCBTaG91bGRDbGVhckV4Y2VwdGlvbiBzaG91bGRDbGVhckV4Y2VwdGlv
bikKK1JlZjxFbGVtZW50PiBKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2U6OmNvbnN0cnVjdEVsZW1l
bnRXaXRoRmFsbGJhY2soRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBBdG9taWNTdHJpbmcmIGxv
Y2FsTmFtZSkKK3sKKyAgICBpZiAoYXV0byBlbGVtZW50ID0gdHJ5VG9Db25zdHJ1Y3RDdXN0b21F
bGVtZW50KGRvY3VtZW50LCBsb2NhbE5hbWUpKQorICAgICAgICByZXR1cm4gZWxlbWVudC5yZWxl
YXNlTm9uTnVsbCgpOworCisgICAgYXV0byBlbGVtZW50ID0gSFRNTFVua25vd25FbGVtZW50Ojpj
cmVhdGUoUXVhbGlmaWVkTmFtZShudWxsQXRvbSwgbG9jYWxOYW1lLCBIVE1MTmFtZXM6OnhodG1s
TmFtZXNwYWNlVVJJKSwgZG9jdW1lbnQpOworICAgIGVsZW1lbnQtPnNldElzQ3VzdG9tRWxlbWVu
dFVwZ3JhZGVDYW5kaWRhdGUoKTsKKyAgICBlbGVtZW50LT5zZXRJc0ZhaWxlZEN1c3RvbUVsZW1l
bnQoKnRoaXMpOworCisgICAgcmV0dXJuIGVsZW1lbnQuZ2V0KCk7Cit9CisKK1JlZlB0cjxFbGVt
ZW50PiBKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2U6OnRyeVRvQ29uc3RydWN0Q3VzdG9tRWxlbWVu
dChEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxOYW1lKQogewog
ICAgIGlmICghY2FuSW52b2tlQ2FsbGJhY2soKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBA
IC03MywyMCArODYsMTQgQEAgUmVmUHRyPEVsZW1lbnQ+IEpTQ3VzdG9tRWxlbWVudEludGVyZmFj
ZTo6Y29uc3RydWN0RWxlbWVudChjb25zdCBBdG9taWNTdHJpbmcmIGwKICAgICBpZiAoIW1fY29u
c3RydWN0b3IpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICBpZiAoIWNv
bnRleHQpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIEFTU0VSVChjb250ZXh0LT5pc0Rv
Y3VtZW50KCkpOwotCi0gICAgYXV0byYgc3RhdGUgPSAqY29udGV4dC0+ZXhlY1N0YXRlKCk7Ci0g
ICAgUmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQgPSBjb25zdHJ1Y3RDdXN0b21FbGVtZW50U3luY2hy
b25vdXNseShkb3duY2FzdDxEb2N1bWVudD4oKmNvbnRleHQpLCB2bSwgc3RhdGUsIG1fY29uc3Ry
dWN0b3IuZ2V0KCksIGxvY2FsTmFtZSk7CisgICAgQVNTRVJUKCZkb2N1bWVudCA9PSBzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCkpOworICAgIGF1dG8mIHN0YXRlID0gKmRvY3VtZW50LmV4ZWNTdGF0
ZSgpOworICAgIFJlZlB0cjxFbGVtZW50PiBlbGVtZW50ID0gY29uc3RydWN0Q3VzdG9tRWxlbWVu
dFN5bmNocm9ub3VzbHkoZG9jdW1lbnQsIHZtLCBzdGF0ZSwgbV9jb25zdHJ1Y3Rvci5nZXQoKSwg
bG9jYWxOYW1lKTsKICAgICBBU1NFUlQoISFzY29wZS5leGNlcHRpb24oKSA9PSAhZWxlbWVudCk7
CiAgICAgaWYgKCFlbGVtZW50KSB7Ci0gICAgICAgIGlmIChzaG91bGRDbGVhckV4Y2VwdGlvbiA9
PSBTaG91bGRDbGVhckV4Y2VwdGlvbjo6Q2xlYXIpIHsKLSAgICAgICAgICAgIGF1dG8qIGV4Y2Vw
dGlvbiA9IHNjb3BlLmV4Y2VwdGlvbigpOwotICAgICAgICAgICAgc2NvcGUuY2xlYXJFeGNlcHRp
b24oKTsKLSAgICAgICAgICAgIHJlcG9ydEV4Y2VwdGlvbigmc3RhdGUsIGV4Y2VwdGlvbik7Ci0g
ICAgICAgIH0KKyAgICAgICAgYXV0byogZXhjZXB0aW9uID0gc2NvcGUuZXhjZXB0aW9uKCk7Cisg
ICAgICAgIHNjb3BlLmNsZWFyRXhjZXB0aW9uKCk7CisgICAgICAgIHJlcG9ydEV4Y2VwdGlvbigm
c3RhdGUsIGV4Y2VwdGlvbik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIApAQCAt
MTg2LDEzICsxOTMsMTQgQEAgdm9pZCBKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2U6OnVwZ3JhZGVF
bGVtZW50KEVsZW1lbnQmIGVsZW1lbnQpCiAKICAgICBpZiAoVU5MSUtFTFkoc2NvcGUuZXhjZXB0
aW9uKCkpKSB7CiAgICAgICAgIGVsZW1lbnQuc2V0SXNGYWlsZWRDdXN0b21FbGVtZW50KCp0aGlz
KTsKKyAgICAgICAgcmVwb3J0RXhjZXB0aW9uKHN0YXRlLCBzY29wZS5leGNlcHRpb24oKSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBFbGVtZW50KiB3cmFwcGVkRWxlbWVudCA9IEpT
RWxlbWVudDo6dG9XcmFwcGVkKHJldHVybmVkRWxlbWVudCk7CiAgICAgaWYgKCF3cmFwcGVkRWxl
bWVudCB8fCB3cmFwcGVkRWxlbWVudCAhPSAmZWxlbWVudCkgewogICAgICAgICBlbGVtZW50LnNl
dElzRmFpbGVkQ3VzdG9tRWxlbWVudCgqdGhpcyk7Ci0gICAgICAgIHRocm93SW52YWxpZFN0YXRl
RXJyb3IoKnN0YXRlLCBzY29wZSwgIkN1c3RvbSBlbGVtZW50IGNvbnN0cnVjdG9yIGZhaWxlZCB0
byB1cGdyYWRlIGFuIGVsZW1lbnQiKTsKKyAgICAgICAgcmVwb3J0RXhjZXB0aW9uKHN0YXRlLCBj
cmVhdGVET01FeGNlcHRpb24oc3RhdGUsIElOVkFMSURfU1RBVEVfRVJSLCAiQ3VzdG9tIGVsZW1l
bnQgY29uc3RydWN0b3IgZmFpbGVkIHRvIHVwZ3JhZGUgYW4gZWxlbWVudCIpKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KICAgICBlbGVtZW50LnNldElzRGVmaW5lZEN1c3RvbUVsZW1lbnQoKnRo
aXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21FbGVt
ZW50SW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbUVsZW1l
bnRJbnRlcmZhY2UuaAppbmRleCBlNjgxMWE0Mzg4NjAzMjJiOGU4ZTU3MjM0NDI2Njg2NTMwNWFk
Y2QwLi44Mzk1NWZmODQxZTYwNzQ4OTcxMTYxODQyNTEyODA2NTBkZTA5ZjE2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2Uu
aApAQCAtNjMsOCArNjMsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZShuYW1lLCBjYWxsYmFjaywgZ2xvYmFsT2JqZWN0KSk7
CiAgICAgfQogCi0gICAgZW51bSBjbGFzcyBTaG91bGRDbGVhckV4Y2VwdGlvbiB7IENsZWFyLCBE
b05vdENsZWFyIH07Ci0gICAgUmVmUHRyPEVsZW1lbnQ+IGNvbnN0cnVjdEVsZW1lbnQoY29uc3Qg
QXRvbWljU3RyaW5nJiwgU2hvdWxkQ2xlYXJFeGNlcHRpb24pOworICAgIFJlZjxFbGVtZW50PiBj
b25zdHJ1Y3RFbGVtZW50V2l0aEZhbGxiYWNrKERvY3VtZW50JiwgY29uc3QgQXRvbWljU3RyaW5n
Jik7CiAKICAgICB2b2lkIHVwZ3JhZGVFbGVtZW50KEVsZW1lbnQmKTsKIApAQCAtOTgsNiArOTcs
OCBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZShjb25z
dCBRdWFsaWZpZWROYW1lJiwgSlNDOjpKU09iamVjdCogY2FsbGJhY2ssIEpTRE9NR2xvYmFsT2Jq
ZWN0Kik7CiAKKyAgICBSZWZQdHI8RWxlbWVudD4gdHJ5VG9Db25zdHJ1Y3RDdXN0b21FbGVtZW50
KERvY3VtZW50JiwgY29uc3QgQXRvbWljU3RyaW5nJik7CisKICAgICB2b2lkIGludm9rZUNhbGxi
YWNrKEVsZW1lbnQmLCBKU0M6OkpTT2JqZWN0KiBjYWxsYmFjaywgY29uc3QgV1RGOjpGdW5jdGlv
bjx2b2lkKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqLCBKU0M6Ok1hcmtlZEFy
Z3VtZW50QnVmZmVyJik+JiBhZGRBcmd1bWVudHMgPSB7IH0pOwogCiAgICAgUXVhbGlmaWVkTmFt
ZSBtX25hbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCBjMWNjZGMwMmFlYWI5ZDBhMDE3
YzA0ZDM2ZTFjMmIwNTg0OTI3MzMwLi5iZjM4MGU3NDAyMWQ4ZTc4Yzg3MGY1OTcxMTE3YjQxOGM0
M2U5MWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTg5Myw3ICs4OTMsNyBAQCBzdGF0
aWMgUmVmUHRyPEVsZW1lbnQ+IGNyZWF0ZUhUTUxFbGVtZW50V2l0aE5hbWVWYWxpZGF0aW9uKERv
Y3VtZW50JiBkb2N1bWVudCwgYwogICAgICAgICBhdXRvKiByZWdpc3RyeSA9IHdpbmRvdy0+Y3Vz
dG9tRWxlbWVudFJlZ2lzdHJ5KCk7CiAgICAgICAgIGlmIChVTkxJS0VMWShyZWdpc3RyeSkpIHsK
ICAgICAgICAgICAgIGlmIChhdXRvKiBlbGVtZW50SW50ZXJmYWNlID0gcmVnaXN0cnktPmZpbmRJ
bnRlcmZhY2UobG9jYWxOYW1lKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZWxlbWVudEludGVy
ZmFjZS0+Y29uc3RydWN0RWxlbWVudChsb2NhbE5hbWUsIEpTQ3VzdG9tRWxlbWVudEludGVyZmFj
ZTo6U2hvdWxkQ2xlYXJFeGNlcHRpb246OkRvTm90Q2xlYXIpOworICAgICAgICAgICAgICAgIHJl
dHVybiBlbGVtZW50SW50ZXJmYWNlLT5jb25zdHJ1Y3RFbGVtZW50V2l0aEZhbGxiYWNrKGRvY3Vt
ZW50LCBsb2NhbE5hbWUpOwogICAgICAgICB9CiAgICAgfQogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcAppbmRleCA2YTY2OWRi
ZmNlNzI5ODQyYTM1MjEwZDRkYWNiZTY4NTc0NmQyODllLi5mNDQ1M2QwZDllMzAwNGVhMjc2ODQ0
YmY5MTQxZjg0ZmFkM2FhYzM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0hUTUxEb2N1bWVudFBhcnNlci5jcHAKQEAgLTE5NywxNSArMTk3LDggQEAgdm9pZCBIVE1MRG9j
dW1lbnRQYXJzZXI6OnJ1blNjcmlwdHNGb3JQYXVzZWRUcmVlQnVpbGRlcigpCiAKICAgICAgICAg
Ly8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy8jY3JlYXRlLWFuLWVsZW1lbnQtZm9yLXRo
ZS10b2tlbgogICAgICAgICBhdXRvJiBlbGVtZW50SW50ZXJmYWNlID0gY29uc3RydWN0aW9uRGF0
YS0+ZWxlbWVudEludGVyZmFjZS5nZXQoKTsKLSAgICAgICAgUmVmUHRyPEVsZW1lbnQ+IG5ld0Vs
ZW1lbnQgPSBlbGVtZW50SW50ZXJmYWNlLmNvbnN0cnVjdEVsZW1lbnQoY29uc3RydWN0aW9uRGF0
YS0+bmFtZSwgSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlOjpTaG91bGRDbGVhckV4Y2VwdGlvbjo6
Q2xlYXIpOwotICAgICAgICBpZiAoIW5ld0VsZW1lbnQpIHsKLSAgICAgICAgICAgIEFTU0VSVCgh
bV90cmVlQnVpbGRlci0+aXNQYXJzaW5nVGVtcGxhdGVDb250ZW50cygpKTsKLSAgICAgICAgICAg
IG5ld0VsZW1lbnQgPSBIVE1MVW5rbm93bkVsZW1lbnQ6OmNyZWF0ZShRdWFsaWZpZWROYW1lKG51
bGxBdG9tLCBjb25zdHJ1Y3Rpb25EYXRhLT5uYW1lLCB4aHRtbE5hbWVzcGFjZVVSSSksICpkb2N1
bWVudCgpKTsKLSAgICAgICAgICAgIG5ld0VsZW1lbnQtPnNldElzQ3VzdG9tRWxlbWVudFVwZ3Jh
ZGVDYW5kaWRhdGUoKTsKLSAgICAgICAgICAgIG5ld0VsZW1lbnQtPnNldElzRmFpbGVkQ3VzdG9t
RWxlbWVudChlbGVtZW50SW50ZXJmYWNlKTsKLSAgICAgICAgfQotCi0gICAgICAgIG1fdHJlZUJ1
aWxkZXItPmRpZENyZWF0ZUN1c3RvbU9yQ2FsbGJhY2tFbGVtZW50KG5ld0VsZW1lbnQucmVsZWFz
ZU5vbk51bGwoKSwgKmNvbnN0cnVjdGlvbkRhdGEpOworICAgICAgICBSZWY8RWxlbWVudD4gbmV3
RWxlbWVudCA9IGVsZW1lbnRJbnRlcmZhY2UuY29uc3RydWN0RWxlbWVudFdpdGhGYWxsYmFjaygq
ZG9jdW1lbnQoKSwgY29uc3RydWN0aW9uRGF0YS0+bmFtZSk7CisgICAgICAgIG1fdHJlZUJ1aWxk
ZXItPmRpZENyZWF0ZUN1c3RvbU9yQ2FsbGJhY2tFbGVtZW50KFdURk1vdmUobmV3RWxlbWVudCks
ICpjb25zdHJ1Y3Rpb25EYXRhKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IDk2MDI0NDUzZDRlYjk2YmQ3OTRjNzNjZDIyYmFmMzBiN2UwMmE0YmEuLmQwODhhOTY4MDlm
MzQ5YmJmNmY3MTJlZTUyYzY5N2ExODdhOTZlY2EgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0No
YW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAx
Ni0xMC0wNiAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KKworICAgICAgICBVcGdy
YWRpbmcgYW5kIGNvbnN0cnVjdGluZyBlbGVtZW50IHNob3VsZCBhbHdheXMgcmVwb3J0IGV4Y2Vw
dGlvbiBpbnN0ZWFkIG9mIHJldGhyb3dpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE2Mjk5NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFVwZGF0ZWQgdGhlIHRlc3RzIHRvIGV4cGVjdCBleGNlcHRpb25z
IHRocm93biBkdXJpbmcgY3VzdG9tIGVsZW1lbnQgY29uc3RydWN0aW9ucyBhcmUgYWx3YXlzIHJl
cG9ydGVkLgorCisgICAgICAgICogZmFzdC9jdXN0b20tZWxlbWVudHMvRG9jdW1lbnQtY3JlYXRl
RWxlbWVudC1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9jdXN0b20tZWxlbWVudHMvRG9j
dW1lbnQtY3JlYXRlRWxlbWVudC5odG1sOgorICAgICAgICAqIGZhc3QvY3VzdG9tLWVsZW1lbnRz
L2RlZmluZWQtcHNldWRvLWNsYXNzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2N1c3Rv
bS1lbGVtZW50cy9kZWZpbmVkLXBzZXVkby1jbGFzcy5odG1sOgorICAgICAgICAqIGZhc3QvY3Vz
dG9tLWVsZW1lbnRzL3VwZ3JhZGluZy9Ob2RlLWNsb25lTm9kZS5odG1sOgorICAgICAgICAqIGZh
c3QvY3VzdG9tLWVsZW1lbnRzL3VwZ3JhZGluZy91cGdyYWRpbmctcGFyc2VyLWNyZWF0ZWQtZWxl
bWVudC5odG1sOgorCiAyMDE2LTEwLTA1ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3Jn
PgogCiAgICAgICAgIEltcG9ydCB2MSBjdXN0b20gZWxlbWVudHMgdGVzdHMgZnJvbSBXM0MKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3VzdG9tLWVsZW1lbnRzL0RvY3VtZW50LWNyZWF0
ZUVsZW1lbnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVudHMv
RG9jdW1lbnQtY3JlYXRlRWxlbWVudC1leHBlY3RlZC50eHQKaW5kZXggMWRlZTUxODBlZGUwYjc1
YzFhNmViY2RlNWRkMmEzYTMzOTdjOTg1NS4uZjQxN2VkYWM3N2EwOTc1ODMzMTFkMTA4NmZkMzM3
OWY0ZjI4ZGZmZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVudHMv
RG9jdW1lbnQtY3JlYXRlRWxlbWVudC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9jdXN0b20tZWxlbWVudHMvRG9jdW1lbnQtY3JlYXRlRWxlbWVudC1leHBlY3RlZC50eHQKQEAg
LTEsMzcgKzEsMzcgQEAKIAogUEFTUyBkb2N1bWVudC5jcmVhdGVFbGVtZW50IG11c3QgY3JlYXRl
IGFuIGluc3RhbmNlIG9mIGN1c3RvbSBlbGVtZW50cyAKLVBBU1MgZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCBtdXN0IHRocm93IGEgVHlwZUVycm9yIHdoZW4gdGhlIHJlc3VsdCBvZiBDb25zdHJ1Y3Qg
aXMgbm90IGEgRE9NIG5vZGUgCi1QQVNTIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQgbXVzdCB0aHJv
dyBhIFR5cGVFcnJvciB3aGVuIHRoZSByZXN1bHQgb2YgQ29uc3RydWN0IGlzIGEgVGV4dE5vZGUg
Ci1QQVNTIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQgbXVzdCB0aHJvdyBhIE5vdFN1cHBvcnRlZEVy
cm9yIHdoZW4gYXR0cmlidXRlIGlzIGFkZGVkIGJ5IHNldEF0dHJpYnV0ZSBkdXJpbmcgY29uc3Ry
dWN0aW9uIAotUEFTUyBkb2N1bWVudC5jcmVhdGVFbGVtZW50IG11c3QgdGhyb3cgYSBOb3RTdXBw
b3J0ZWRFcnJvciB3aGVuIGF0dHJpYnV0ZSBpcyBhZGRlZCBieSBhdHRyaWJ1dGVzLnNldE5hbWVk
SXRlbSBkdXJpbmcgY29uc3RydWN0aW9uIAotUEFTUyBkb2N1bWVudC5jcmVhdGVFbGVtZW50IG11
c3Qgbm90IHRocm93IGEgTm90U3VwcG9ydGVkRXJyb3Igd2hlbiBhdHRyaWJ1dGUgaXMgYWRkZWQg
YW5kIHJlbW92ZWQgZHVyaW5nIGNvbnN0cnVjdGlvbiAKLVBBU1MgZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCBtdXN0IHRocm93IGEgTm90U3VwcG9ydGVkRXJyb3Igd2hlbiBhIFRleHQgY2hpbGQgaXMg
YWRkZWQgZHVyaW5nIGNvbnN0cnVjdGlvbiAKLVBBU1MgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCBt
dXN0IHRocm93IGEgTm90U3VwcG9ydGVkRXJyb3Igd2hlbiBhIENvbW1lbnQgY2hpbGQgaXMgYWRk
ZWQgZHVyaW5nIGNvbnN0cnVjdGlvbiAKLVBBU1MgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCBtdXN0
IHRocm93IGEgTm90U3VwcG9ydGVkRXJyb3Igd2hlbiBhbiBlbGVtZW50IGNoaWxkIGlzIGFkZGVk
IGR1cmluZyBjb25zdHJ1Y3Rpb24gCi1QQVNTIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQgbXVzdCBu
b3QgdGhyb3cgYSBOb3RTdXBwb3J0ZWRFcnJvciB3aGVuIGFuIGVsZW1lbnQgY2hpbGQgaXMgYWRk
ZWQgYW5kIHJlbW92ZWQgZHVyaW5nIGNvbnN0cnVjdGlvbiAKLVBBU1MgZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCBtdXN0IHRocm93IGEgTm90U3VwcG9ydGVkRXJyb3Igd2hlbiB0aGUgZWxlbWVudCBn
ZXRzIGluc2VydGVkIGludG8gYW5vdGhlciBlbGVtZW50IGR1cmluZyBjb25zdHJ1Y3Rpb24gCi1Q
QVNTIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQgbXVzdCBub3QgdGhyb3cgYSBOb3RTdXBwb3J0ZWRF
cnJvciB3aGVuIHRoZSBlbGVtZW50IGlzIGluc2VydGVkIGFuZCByZW1vdmVkIGZyb20gYW5vdGhl
ciBlbGVtZW50IGR1cmluZyBjb25zdHJ1Y3Rpb24gCi1QQVNTIGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQgbXVzdCB0aHJvdyBhIE5vdFN1cHBvcnRlZEVycm9yIHdoZW4gdGhlIGVsZW1lbnQgaXMgYWRv
cHRlZCBpbnRvIGEgZG9jdW1lbnQgb2YgYSB0ZW1wbGF0ZSBlbGVtZW50IGR1cmluZyBjb25zdHJ1
Y3Rpb24gCi1QQVNTIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQgbXVzdCB0aHJvdyBhIE5vdFN1cHBv
cnRlZEVycm9yIHdoZW4gdGhlIGVsZW1lbnQgaXMgaW5zZXJ0ZWQgaW50byBhIGRvY3VtZW50IG9m
IGEgdGVtcGxhdGUgZWxlbWVudCBkdXJpbmcgY29uc3RydWN0aW9uIAotUEFTUyBkb2N1bWVudC5j
cmVhdGVFbGVtZW50IG11c3Qgbm90IHRocm93IGEgTm90U3VwcG9ydGVkRXJyb3Igd2hlbiB0aGUg
ZWxlbWVudCBpcyBhZG9wdGVkIGJhY2sgZnJvbSBhIGRvY3VtZW50IG9mIGEgdGVtcGxhdGUgZWxl
bWVudCBkdXJpbmcgY29uc3RydWN0aW9uIAotUEFTUyBkb2N1bWVudC5jcmVhdGVFbGVtZW50IG11
c3QgdGhyb3cgYSBOb3RTdXBwb3J0ZWRFcnJvciB3aGVuIHRoZSBlbGVtZW50IGlzIGFkb3B0ZWQg
aW50byBhIG5ldyBkb2N1bWVudCBkdXJpbmcgY29uc3RydWN0aW9uIAotUEFTUyBkb2N1bWVudC5j
cmVhdGVFbGVtZW50IG11c3QgdGhyb3cgYSBOb3RTdXBwb3J0ZWRFcnJvciB3aGVuIHRoZSBlbGVt
ZW50IGlzIGluc2VydGVkIGludG8gYSBuZXcgZG9jdW1lbnQgZHVyaW5nIGNvbnN0cnVjdGlvbiAK
LVBBU1MgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCBtdXN0IG5vdCB0aHJvdyBhIE5vdFN1cHBvcnRl
ZEVycm9yIHdoZW4gdGhlIGVsZW1lbnQgaXMgYWRvcHRlZCBiYWNrIGZyb20gYSBuZXcgZG9jdW1l
bnQgZHVyaW5nIGNvbnN0cnVjdGlvbiAKLVBBU1MgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCBtdXN0
IHRocm93IGEgTm90U3VwcG9ydGVkRXJyb3Igd2hlbiB0aGUgZWxlbWVudCBpcyBhZG9wdGVkIGlu
dG8gYSBjbG9uZWQgZG9jdW1lbnQgZHVyaW5nIGNvbnN0cnVjdGlvbiAKLVBBU1MgZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCBtdXN0IHRocm93IGEgTm90U3VwcG9ydGVkRXJyb3Igd2hlbiB0aGUgZWxl
bWVudCBpcyBpbnNlcnRlZCBpbnRvIGEgY2xvbmVkIGRvY3VtZW50IGR1cmluZyBjb25zdHJ1Y3Rp
b24gCi1QQVNTIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQgbXVzdCBub3QgdGhyb3cgYSBOb3RTdXBw
b3J0ZWRFcnJvciB3aGVuIHRoZSBlbGVtZW50IGlzIGFkb3B0ZWQgYmFjayBmcm9tIGEgY2xvbmVk
IGRvY3VtZW50IGR1cmluZyBjb25zdHJ1Y3Rpb24gCi1QQVNTIGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQgbXVzdCB0aHJvdyBhIE5vdFN1cHBvcnRlZEVycm9yIHdoZW4gdGhlIGVsZW1lbnQgaXMgYWRv
cHRlZCBpbnRvIGEgZG9jdW1lbnQgY3JlYXRlZCBieSBjcmVhdGVIVE1MRG9jdW1lbnQgZHVyaW5n
IGNvbnN0cnVjdGlvbiAKLVBBU1MgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCBtdXN0IHRocm93IGEg
Tm90U3VwcG9ydGVkRXJyb3Igd2hlbiB0aGUgZWxlbWVudCBpcyBpbnNlcnRlZCBpbnRvIGEgZG9j
dW1lbnQgY3JlYXRlZCBieSBjcmVhdGVIVE1MRG9jdW1lbnQgZHVyaW5nIGNvbnN0cnVjdGlvbiAK
LVBBU1MgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCBtdXN0IG5vdCB0aHJvdyBhIE5vdFN1cHBvcnRl
ZEVycm9yIHdoZW4gdGhlIGVsZW1lbnQgaXMgYWRvcHRlZCBiYWNrIGZyb20gYSBkb2N1bWVudCBj
cmVhdGVkIGJ5IGNyZWF0ZUhUTUxEb2N1bWVudCBkdXJpbmcgY29uc3RydWN0aW9uIAotUEFTUyBk
b2N1bWVudC5jcmVhdGVFbGVtZW50IG11c3QgdGhyb3cgYSBOb3RTdXBwb3J0ZWRFcnJvciB3aGVu
IHRoZSBlbGVtZW50IGlzIGFkb3B0ZWQgaW50byBhIEhUTUwgZG9jdW1lbnQgY3JlYXRlZCBieSBj
cmVhdGVEb2N1bWVudCBkdXJpbmcgY29uc3RydWN0aW9uIAotUEFTUyBkb2N1bWVudC5jcmVhdGVF
bGVtZW50IG11c3QgdGhyb3cgYSBOb3RTdXBwb3J0ZWRFcnJvciB3aGVuIHRoZSBlbGVtZW50IGlz
IGluc2VydGVkIGludG8gYSBIVE1MIGRvY3VtZW50IGNyZWF0ZWQgYnkgY3JlYXRlRG9jdW1lbnQg
ZHVyaW5nIGNvbnN0cnVjdGlvbiAKLVBBU1MgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCBtdXN0IG5v
dCB0aHJvdyBhIE5vdFN1cHBvcnRlZEVycm9yIHdoZW4gdGhlIGVsZW1lbnQgaXMgYWRvcHRlZCBi
YWNrIGZyb20gYSBIVE1MIGRvY3VtZW50IGNyZWF0ZWQgYnkgY3JlYXRlRG9jdW1lbnQgZHVyaW5n
IGNvbnN0cnVjdGlvbiAKLVBBU1MgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCBtdXN0IHRocm93IGEg
Tm90U3VwcG9ydGVkRXJyb3Igd2hlbiB0aGUgZWxlbWVudCBpcyBhZG9wdGVkIGludG8gYSBkb2N1
bWVudCBpbiBhbiBpZnJhbWUgZHVyaW5nIGNvbnN0cnVjdGlvbiAKLVBBU1MgZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCBtdXN0IHRocm93IGEgTm90U3VwcG9ydGVkRXJyb3Igd2hlbiB0aGUgZWxlbWVu
dCBpcyBpbnNlcnRlZCBpbnRvIGEgZG9jdW1lbnQgaW4gYW4gaWZyYW1lIGR1cmluZyBjb25zdHJ1
Y3Rpb24gCi1QQVNTIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQgbXVzdCBub3QgdGhyb3cgYSBOb3RT
dXBwb3J0ZWRFcnJvciB3aGVuIHRoZSBlbGVtZW50IGlzIGFkb3B0ZWQgYmFjayBmcm9tIGEgZG9j
dW1lbnQgaW4gYW4gaWZyYW1lIGR1cmluZyBjb25zdHJ1Y3Rpb24gCi1QQVNTIGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQgbXVzdCB0aHJvdyBhIE5vdFN1cHBvcnRlZEVycm9yIHdoZW4gdGhlIGVsZW1l
bnQgaXMgYWRvcHRlZCBpbnRvIGEgSFRNTCBkb2N1bWVudCBmZXRjaGVkIGJ5IFhIUiBkdXJpbmcg
Y29uc3RydWN0aW9uIAotUEFTUyBkb2N1bWVudC5jcmVhdGVFbGVtZW50IG11c3QgdGhyb3cgYSBO
b3RTdXBwb3J0ZWRFcnJvciB3aGVuIHRoZSBlbGVtZW50IGlzIGluc2VydGVkIGludG8gYSBIVE1M
IGRvY3VtZW50IGZldGNoZWQgYnkgWEhSIGR1cmluZyBjb25zdHJ1Y3Rpb24gCi1QQVNTIGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQgbXVzdCBub3QgdGhyb3cgYSBOb3RTdXBwb3J0ZWRFcnJvciB3aGVu
IHRoZSBlbGVtZW50IGlzIGFkb3B0ZWQgYmFjayBmcm9tIGEgSFRNTCBkb2N1bWVudCBmZXRjaGVk
IGJ5IFhIUiBkdXJpbmcgY29uc3RydWN0aW9uIAotUEFTUyBkb2N1bWVudC5jcmVhdGVFbGVtZW50
IG11c3QgdGhyb3cgYSBOb3RTdXBwb3J0ZWRFcnJvciB3aGVuIHRoZSBsb2NhbCBuYW1lIG9mIHRo
ZSBlbGVtZW50IGRvZXMgbm90IG1hdGNoIHRoYXQgb2YgdGhlIGN1c3RvbSBlbGVtZW50IAotUEFT
UyBkb2N1bWVudC5jcmVhdGVFbGVtZW50IG11c3QgcmUtdGhyb3cgYW4gZXhjZXB0aW9uIHRocm93
biBieSBhIGN1c3RvbSBlbGVtZW50IGNvbnN0cnVjdG9yIAorUEFTUyBkb2N1bWVudC5jcmVhdGVF
bGVtZW50IG11c3QgcmVwb3J0IGEgVHlwZUVycm9yIHdoZW4gdGhlIHJlc3VsdCBvZiBDb25zdHJ1
Y3QgaXMgbm90IGEgRE9NIG5vZGUgCitQQVNTIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQgbXVzdCBy
ZXBvcnQgYSBUeXBlRXJyb3Igd2hlbiB0aGUgcmVzdWx0IG9mIENvbnN0cnVjdCBpcyBhIFRleHRO
b2RlIAorUEFTUyBkb2N1bWVudC5jcmVhdGVFbGVtZW50IG11c3QgcmVwb3J0IGEgTm90U3VwcG9y
dGVkRXJyb3Igd2hlbiBhdHRyaWJ1dGUgaXMgYWRkZWQgYnkgc2V0QXR0cmlidXRlIGR1cmluZyBj
b25zdHJ1Y3Rpb24gCitQQVNTIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQgbXVzdCByZXBvcnQgYSBO
b3RTdXBwb3J0ZWRFcnJvciB3aGVuIGF0dHJpYnV0ZSBpcyBhZGRlZCBieSBhdHRyaWJ1dGVzLnNl
dE5hbWVkSXRlbSBkdXJpbmcgY29uc3RydWN0aW9uIAorUEFTUyBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50IG11c3Qgbm90IHJlcG9ydCBhIE5vdFN1cHBvcnRlZEVycm9yIHdoZW4gYXR0cmlidXRlIGlz
IGFkZGVkIGFuZCByZW1vdmVkIGR1cmluZyBjb25zdHJ1Y3Rpb24gCitQQVNTIGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQgbXVzdCByZXBvcnQgYSBOb3RTdXBwb3J0ZWRFcnJvciB3aGVuIGEgVGV4dCBj
aGlsZCBpcyBhZGRlZCBkdXJpbmcgY29uc3RydWN0aW9uIAorUEFTUyBkb2N1bWVudC5jcmVhdGVF
bGVtZW50IG11c3QgcmVwb3J0IGEgTm90U3VwcG9ydGVkRXJyb3Igd2hlbiBhIENvbW1lbnQgY2hp
bGQgaXMgYWRkZWQgZHVyaW5nIGNvbnN0cnVjdGlvbiAKK1BBU1MgZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCBtdXN0IHJlcG9ydCBhIE5vdFN1cHBvcnRlZEVycm9yIHdoZW4gYW4gZWxlbWVudCBjaGls
ZCBpcyBhZGRlZCBkdXJpbmcgY29uc3RydWN0aW9uIAorUEFTUyBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50IG11c3Qgbm90IHJlcG9ydCBhIE5vdFN1cHBvcnRlZEVycm9yIHdoZW4gYW4gZWxlbWVudCBj
aGlsZCBpcyBhZGRlZCBhbmQgcmVtb3ZlZCBkdXJpbmcgY29uc3RydWN0aW9uIAorUEFTUyBkb2N1
bWVudC5jcmVhdGVFbGVtZW50IG11c3QgcmVwb3J0IGEgTm90U3VwcG9ydGVkRXJyb3Igd2hlbiB0
aGUgZWxlbWVudCBnZXRzIGluc2VydGVkIGludG8gYW5vdGhlciBlbGVtZW50IGR1cmluZyBjb25z
dHJ1Y3Rpb24gCitQQVNTIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQgbXVzdCBub3QgcmVwb3J0IGEg
Tm90U3VwcG9ydGVkRXJyb3Igd2hlbiB0aGUgZWxlbWVudCBpcyBpbnNlcnRlZCBhbmQgcmVtb3Zl
ZCBmcm9tIGFub3RoZXIgZWxlbWVudCBkdXJpbmcgY29uc3RydWN0aW9uIAorUEFTUyBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50IG11c3QgcmVwb3J0IGEgTm90U3VwcG9ydGVkRXJyb3Igd2hlbiB0aGUg
ZWxlbWVudCBpcyBhZG9wdGVkIGludG8gYSBkb2N1bWVudCBvZiBhIHRlbXBsYXRlIGVsZW1lbnQg
ZHVyaW5nIGNvbnN0cnVjdGlvbiAKK1BBU1MgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCBtdXN0IHJl
cG9ydCBhIE5vdFN1cHBvcnRlZEVycm9yIHdoZW4gdGhlIGVsZW1lbnQgaXMgaW5zZXJ0ZWQgaW50
byBhIGRvY3VtZW50IG9mIGEgdGVtcGxhdGUgZWxlbWVudCBkdXJpbmcgY29uc3RydWN0aW9uIAor
UEFTUyBkb2N1bWVudC5jcmVhdGVFbGVtZW50IG11c3Qgbm90IHJlcG9ydCBhIE5vdFN1cHBvcnRl
ZEVycm9yIHdoZW4gdGhlIGVsZW1lbnQgaXMgYWRvcHRlZCBiYWNrIGZyb20gYSBkb2N1bWVudCBv
ZiBhIHRlbXBsYXRlIGVsZW1lbnQgZHVyaW5nIGNvbnN0cnVjdGlvbiAKK1BBU1MgZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCBtdXN0IHJlcG9ydCBhIE5vdFN1cHBvcnRlZEVycm9yIHdoZW4gdGhlIGVs
ZW1lbnQgaXMgYWRvcHRlZCBpbnRvIGEgbmV3IGRvY3VtZW50IGR1cmluZyBjb25zdHJ1Y3Rpb24g
CitQQVNTIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQgbXVzdCByZXBvcnQgYSBOb3RTdXBwb3J0ZWRF
cnJvciB3aGVuIHRoZSBlbGVtZW50IGlzIGluc2VydGVkIGludG8gYSBuZXcgZG9jdW1lbnQgZHVy
aW5nIGNvbnN0cnVjdGlvbiAKK1BBU1MgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCBtdXN0IG5vdCBy
ZXBvcnQgYSBOb3RTdXBwb3J0ZWRFcnJvciB3aGVuIHRoZSBlbGVtZW50IGlzIGFkb3B0ZWQgYmFj
ayBmcm9tIGEgbmV3IGRvY3VtZW50IGR1cmluZyBjb25zdHJ1Y3Rpb24gCitQQVNTIGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQgbXVzdCByZXBvcnQgYSBOb3RTdXBwb3J0ZWRFcnJvciB3aGVuIHRoZSBl
bGVtZW50IGlzIGFkb3B0ZWQgaW50byBhIGNsb25lZCBkb2N1bWVudCBkdXJpbmcgY29uc3RydWN0
aW9uIAorUEFTUyBkb2N1bWVudC5jcmVhdGVFbGVtZW50IG11c3QgcmVwb3J0IGEgTm90U3VwcG9y
dGVkRXJyb3Igd2hlbiB0aGUgZWxlbWVudCBpcyBpbnNlcnRlZCBpbnRvIGEgY2xvbmVkIGRvY3Vt
ZW50IGR1cmluZyBjb25zdHJ1Y3Rpb24gCitQQVNTIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQgbXVz
dCBub3QgcmVwb3J0IGEgTm90U3VwcG9ydGVkRXJyb3Igd2hlbiB0aGUgZWxlbWVudCBpcyBhZG9w
dGVkIGJhY2sgZnJvbSBhIGNsb25lZCBkb2N1bWVudCBkdXJpbmcgY29uc3RydWN0aW9uIAorUEFT
UyBkb2N1bWVudC5jcmVhdGVFbGVtZW50IG11c3QgcmVwb3J0IGEgTm90U3VwcG9ydGVkRXJyb3Ig
d2hlbiB0aGUgZWxlbWVudCBpcyBhZG9wdGVkIGludG8gYSBkb2N1bWVudCBjcmVhdGVkIGJ5IGNy
ZWF0ZUhUTUxEb2N1bWVudCBkdXJpbmcgY29uc3RydWN0aW9uIAorUEFTUyBkb2N1bWVudC5jcmVh
dGVFbGVtZW50IG11c3QgcmVwb3J0IGEgTm90U3VwcG9ydGVkRXJyb3Igd2hlbiB0aGUgZWxlbWVu
dCBpcyBpbnNlcnRlZCBpbnRvIGEgZG9jdW1lbnQgY3JlYXRlZCBieSBjcmVhdGVIVE1MRG9jdW1l
bnQgZHVyaW5nIGNvbnN0cnVjdGlvbiAKK1BBU1MgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCBtdXN0
IG5vdCByZXBvcnQgYSBOb3RTdXBwb3J0ZWRFcnJvciB3aGVuIHRoZSBlbGVtZW50IGlzIGFkb3B0
ZWQgYmFjayBmcm9tIGEgZG9jdW1lbnQgY3JlYXRlZCBieSBjcmVhdGVIVE1MRG9jdW1lbnQgZHVy
aW5nIGNvbnN0cnVjdGlvbiAKK1BBU1MgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCBtdXN0IHJlcG9y
dCBhIE5vdFN1cHBvcnRlZEVycm9yIHdoZW4gdGhlIGVsZW1lbnQgaXMgYWRvcHRlZCBpbnRvIGEg
SFRNTCBkb2N1bWVudCBjcmVhdGVkIGJ5IGNyZWF0ZURvY3VtZW50IGR1cmluZyBjb25zdHJ1Y3Rp
b24gCitQQVNTIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQgbXVzdCByZXBvcnQgYSBOb3RTdXBwb3J0
ZWRFcnJvciB3aGVuIHRoZSBlbGVtZW50IGlzIGluc2VydGVkIGludG8gYSBIVE1MIGRvY3VtZW50
IGNyZWF0ZWQgYnkgY3JlYXRlRG9jdW1lbnQgZHVyaW5nIGNvbnN0cnVjdGlvbiAKK1BBU1MgZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCBtdXN0IG5vdCByZXBvcnQgYSBOb3RTdXBwb3J0ZWRFcnJvciB3
aGVuIHRoZSBlbGVtZW50IGlzIGFkb3B0ZWQgYmFjayBmcm9tIGEgSFRNTCBkb2N1bWVudCBjcmVh
dGVkIGJ5IGNyZWF0ZURvY3VtZW50IGR1cmluZyBjb25zdHJ1Y3Rpb24gCitQQVNTIGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQgbXVzdCByZXBvcnQgYSBOb3RTdXBwb3J0ZWRFcnJvciB3aGVuIHRoZSBl
bGVtZW50IGlzIGFkb3B0ZWQgaW50byBhIGRvY3VtZW50IGluIGFuIGlmcmFtZSBkdXJpbmcgY29u
c3RydWN0aW9uIAorUEFTUyBkb2N1bWVudC5jcmVhdGVFbGVtZW50IG11c3QgcmVwb3J0IGEgTm90
U3VwcG9ydGVkRXJyb3Igd2hlbiB0aGUgZWxlbWVudCBpcyBpbnNlcnRlZCBpbnRvIGEgZG9jdW1l
bnQgaW4gYW4gaWZyYW1lIGR1cmluZyBjb25zdHJ1Y3Rpb24gCitQQVNTIGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQgbXVzdCBub3QgcmVwb3J0IGEgTm90U3VwcG9ydGVkRXJyb3Igd2hlbiB0aGUgZWxl
bWVudCBpcyBhZG9wdGVkIGJhY2sgZnJvbSBhIGRvY3VtZW50IGluIGFuIGlmcmFtZSBkdXJpbmcg
Y29uc3RydWN0aW9uIAorUEFTUyBkb2N1bWVudC5jcmVhdGVFbGVtZW50IG11c3QgcmVwb3J0IGEg
Tm90U3VwcG9ydGVkRXJyb3Igd2hlbiB0aGUgZWxlbWVudCBpcyBhZG9wdGVkIGludG8gYSBIVE1M
IGRvY3VtZW50IGZldGNoZWQgYnkgWEhSIGR1cmluZyBjb25zdHJ1Y3Rpb24gCitQQVNTIGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQgbXVzdCByZXBvcnQgYSBOb3RTdXBwb3J0ZWRFcnJvciB3aGVuIHRo
ZSBlbGVtZW50IGlzIGluc2VydGVkIGludG8gYSBIVE1MIGRvY3VtZW50IGZldGNoZWQgYnkgWEhS
IGR1cmluZyBjb25zdHJ1Y3Rpb24gCitQQVNTIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQgbXVzdCBu
b3QgcmVwb3J0IGEgTm90U3VwcG9ydGVkRXJyb3Igd2hlbiB0aGUgZWxlbWVudCBpcyBhZG9wdGVk
IGJhY2sgZnJvbSBhIEhUTUwgZG9jdW1lbnQgZmV0Y2hlZCBieSBYSFIgZHVyaW5nIGNvbnN0cnVj
dGlvbiAKK1BBU1MgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCBtdXN0IHJlcG9ydCBhIE5vdFN1cHBv
cnRlZEVycm9yIHdoZW4gdGhlIGxvY2FsIG5hbWUgb2YgdGhlIGVsZW1lbnQgZG9lcyBub3QgbWF0
Y2ggdGhhdCBvZiB0aGUgY3VzdG9tIGVsZW1lbnQgCitQQVNTIGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQgbXVzdCByZXBvcnQgYW4gZXhjZXB0aW9uIHRocm93biBieSBhIGN1c3RvbSBlbGVtZW50IGNv
bnN0cnVjdG9yIAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2N1c3RvbS1lbGVtZW50
cy9Eb2N1bWVudC1jcmVhdGVFbGVtZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2N1c3RvbS1l
bGVtZW50cy9Eb2N1bWVudC1jcmVhdGVFbGVtZW50Lmh0bWwKaW5kZXggZDE1MTY1ZWFiZjA4YTEy
YjI0YWVjNDUxOGEzODhmN2U4Y2IxM2VjNi4uMDA2NGU1Y2MzYjY0ZGU1OWVjNGVjYWUzOGQzMTFl
OTAwYWUwNGE0ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVudHMv
RG9jdW1lbnQtY3JlYXRlRWxlbWVudC5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3VzdG9t
LWVsZW1lbnRzL0RvY3VtZW50LWNyZWF0ZUVsZW1lbnQuaHRtbApAQCAtMTIsNiArMTIsNyBAQAog
PGJvZHk+CiA8ZGl2IGlkPSJsb2ciPjwvZGl2PgogPHNjcmlwdD4KK3NldHVwKHthbGxvd191bmNh
dWdodF9leGNlcHRpb246dHJ1ZX0pOwogCiB0ZXN0KGZ1bmN0aW9uICgpIHsKICAgICBjbGFzcyBN
eUN1c3RvbUVsZW1lbnQgZXh0ZW5kcyBIVE1MRWxlbWVudCB7fTsKQEAgLTI3LDYgKzI4LDIzIEBA
IHRlc3QoZnVuY3Rpb24gKCkgewogCiB9LCAnZG9jdW1lbnQuY3JlYXRlRWxlbWVudCBtdXN0IGNy
ZWF0ZSBhbiBpbnN0YW5jZSBvZiBjdXN0b20gZWxlbWVudHMnKTsKIAorZnVuY3Rpb24gYXNzZXJ0
X3JlcG9ydHMoZXhwZWN0ZWQsIHRlc3RGdW5jdGlvbiwgbWVzc2FnZSkgeworICAgIHZhciB1bmNh
dWdodEVycm9yID0gbnVsbDsKKyAgICB3aW5kb3cub25lcnJvciA9IGZ1bmN0aW9uIChtZXNzYWdl
LCB1cmwsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgZXJyb3IpIHsgdW5jYXVnaHRFcnJvciA9
IGVycm9yOyByZXR1cm4gdHJ1ZTsgfQorICAgIHRlc3RGdW5jdGlvbigpOworICAgIGlmICh0eXBl
b2YoZXhwZWN0ZWQpID09ICdzdHJpbmcnKQorICAgICAgICBhc3NlcnRfZXF1YWxzKHVuY2F1Z2h0
RXJyb3IsIGV4cGVjdGVkLCBtZXNzYWdlKTsKKyAgICBlbHNlIGlmIChleHBlY3RlZCAmJiAnbmFt
ZScgaW4gZXhwZWN0ZWQpCisgICAgICAgIGFzc2VydF9lcXVhbHModW5jYXVnaHRFcnJvci5uYW1l
LCBleHBlY3RlZC5uYW1lLCBtZXNzYWdlKTsKKyAgICBlbHNlCisgICAgICBhc3NlcnRfZXF1YWxz
KHVuY2F1Z2h0RXJyb3IsIGV4cGVjdGVkLCBtZXNzYWdlKTsKKyAgICB3aW5kb3cub25lcnJvciA9
IG51bGw7Cit9CisKK2Z1bmN0aW9uIGFzc2VydF9ub3RfcmVwb3J0cyh0ZXN0RnVuY3Rpb24sIG1l
c3NhZ2UpIHsKKyAgICBhc3NlcnRfcmVwb3J0cyhudWxsLCB0ZXN0RnVuY3Rpb24sIG1lc3NhZ2Up
OworfQorCiB0ZXN0KGZ1bmN0aW9uICgpIHsKICAgICBjbGFzcyBPYmplY3RDdXN0b21FbGVtZW50
IGV4dGVuZHMgSFRNTEVsZW1lbnQgewogICAgICAgICBjb25zdHJ1Y3RvcigpCkBAIC00MCw4ICs1
OCwxMSBAQCB0ZXN0KGZ1bmN0aW9uICgpIHsKICAgICBhc3NlcnRfdHJ1ZShpbnN0YW5jZSBpbnN0
YW5jZW9mIE9iamVjdCk7CiAgICAgYXNzZXJ0X2VxdWFscyhpbnN0YW5jZS5mb28sICdiYXInKTsK
IAotICAgIGFzc2VydF90aHJvd3Moe25hbWU6ICdUeXBlRXJyb3InfSwgZnVuY3Rpb24gKCkgeyBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCdvYmplY3QtY3VzdG9tLWVsZW1lbnQnKTsgfSk7Ci19LCAn
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCBtdXN0IHRocm93IGEgVHlwZUVycm9yIHdoZW4gdGhlIHJl
c3VsdCBvZiBDb25zdHJ1Y3QgaXMgbm90IGEgRE9NIG5vZGUnKTsKKyAgICB2YXIgaW5zdGFuY2U7
CisgICAgYXNzZXJ0X3JlcG9ydHMoe25hbWU6ICdUeXBlRXJyb3InfSwgZnVuY3Rpb24gKCkgeyBp
bnN0YW5jZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ29iamVjdC1jdXN0b20tZWxlbWVudCcp
OyB9KTsKKyAgICBhc3NlcnRfZXF1YWxzKGluc3RhbmNlLmxvY2FsTmFtZSwgJ29iamVjdC1jdXN0
b20tZWxlbWVudCcpOworICAgIGFzc2VydF90cnVlKGluc3RhbmNlIGluc3RhbmNlb2YgSFRNTFVu
a25vd25FbGVtZW50KTsKK30sICdkb2N1bWVudC5jcmVhdGVFbGVtZW50IG11c3QgcmVwb3J0IGEg
VHlwZUVycm9yIHdoZW4gdGhlIHJlc3VsdCBvZiBDb25zdHJ1Y3QgaXMgbm90IGEgRE9NIG5vZGUn
KTsKIAogdGVzdChmdW5jdGlvbiAoKSB7CiAgICAgY2xhc3MgVGV4dEN1c3RvbUVsZW1lbnQgZXh0
ZW5kcyBIVE1MRWxlbWVudCB7CkBAIC01Miw4ICs3MywxMSBAQCB0ZXN0KGZ1bmN0aW9uICgpIHsK
ICAgICB9OwogICAgIGN1c3RvbUVsZW1lbnRzLmRlZmluZSgndGV4dC1jdXN0b20tZWxlbWVudCcs
IFRleHRDdXN0b21FbGVtZW50KTsKICAgICBhc3NlcnRfdHJ1ZShuZXcgVGV4dEN1c3RvbUVsZW1l
bnQgaW5zdGFuY2VvZiBUZXh0KTsKLSAgICBhc3NlcnRfdGhyb3dzKHtuYW1lOiAnVHlwZUVycm9y
J30sIGZ1bmN0aW9uICgpIHsgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGV4dC1jdXN0b20tZWxl
bWVudCcpOyB9KTsKLX0sICdkb2N1bWVudC5jcmVhdGVFbGVtZW50IG11c3QgdGhyb3cgYSBUeXBl
RXJyb3Igd2hlbiB0aGUgcmVzdWx0IG9mIENvbnN0cnVjdCBpcyBhIFRleHROb2RlJyk7CisgICAg
dmFyIGluc3RhbmNlOworICAgIGFzc2VydF9yZXBvcnRzKHtuYW1lOiAnVHlwZUVycm9yJ30sIGZ1
bmN0aW9uICgpIHsgaW5zdGFuY2UgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZXh0LWN1c3Rv
bS1lbGVtZW50Jyk7IH0pOworICAgIGFzc2VydF9lcXVhbHMoaW5zdGFuY2UubG9jYWxOYW1lLCAn
dGV4dC1jdXN0b20tZWxlbWVudCcpOworICAgIGFzc2VydF90cnVlKGluc3RhbmNlIGluc3RhbmNl
b2YgSFRNTFVua25vd25FbGVtZW50KTsKK30sICdkb2N1bWVudC5jcmVhdGVFbGVtZW50IG11c3Qg
cmVwb3J0IGEgVHlwZUVycm9yIHdoZW4gdGhlIHJlc3VsdCBvZiBDb25zdHJ1Y3QgaXMgYSBUZXh0
Tm9kZScpOwogCiB0ZXN0KGZ1bmN0aW9uICgpIHsKICAgICBjbGFzcyBFbGVtZW50V2l0aEF0dHJp
YnV0ZSBleHRlbmRzIEhUTUxFbGVtZW50IHsKQEAgLTY1LDggKzg5LDExIEBAIHRlc3QoZnVuY3Rp
b24gKCkgewogICAgIH07CiAgICAgY3VzdG9tRWxlbWVudHMuZGVmaW5lKCdlbGVtZW50LXdpdGgt
YXR0cmlidXRlJywgRWxlbWVudFdpdGhBdHRyaWJ1dGUpOwogICAgIGFzc2VydF90cnVlKG5ldyBF
bGVtZW50V2l0aEF0dHJpYnV0ZSBpbnN0YW5jZW9mIEVsZW1lbnRXaXRoQXR0cmlidXRlKTsKLSAg
ICBhc3NlcnRfdGhyb3dzKHtuYW1lOiAnTm90U3VwcG9ydGVkRXJyb3InfSwgZnVuY3Rpb24gKCkg
eyBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdlbGVtZW50LXdpdGgtYXR0cmlidXRlJyk7IH0pOwot
fSwgJ2RvY3VtZW50LmNyZWF0ZUVsZW1lbnQgbXVzdCB0aHJvdyBhIE5vdFN1cHBvcnRlZEVycm9y
IHdoZW4gYXR0cmlidXRlIGlzIGFkZGVkIGJ5IHNldEF0dHJpYnV0ZSBkdXJpbmcgY29uc3RydWN0
aW9uJyk7CisgICAgdmFyIGluc3RhbmNlOworICAgIGFzc2VydF9yZXBvcnRzKHtuYW1lOiAnTm90
U3VwcG9ydGVkRXJyb3InfSwgZnVuY3Rpb24gKCkgeyBpbnN0YW5jZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoJ2VsZW1lbnQtd2l0aC1hdHRyaWJ1dGUnKTsgfSk7CisgICAgYXNzZXJ0X2VxdWFs
cyhpbnN0YW5jZS5sb2NhbE5hbWUsICdlbGVtZW50LXdpdGgtYXR0cmlidXRlJyk7CisgICAgYXNz
ZXJ0X3RydWUoaW5zdGFuY2UgaW5zdGFuY2VvZiBIVE1MVW5rbm93bkVsZW1lbnQpOworfSwgJ2Rv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQgbXVzdCByZXBvcnQgYSBOb3RTdXBwb3J0ZWRFcnJvciB3aGVu
IGF0dHJpYnV0ZSBpcyBhZGRlZCBieSBzZXRBdHRyaWJ1dGUgZHVyaW5nIGNvbnN0cnVjdGlvbicp
OwogCiB0ZXN0KGZ1bmN0aW9uICgpIHsKICAgICBjbGFzcyBFbGVtZW50V2l0aEF0dHJOb2RlIGV4
dGVuZHMgSFRNTEVsZW1lbnQgewpAQCAtNzgsOCArMTA1LDExIEBAIHRlc3QoZnVuY3Rpb24gKCkg
ewogICAgIH07CiAgICAgY3VzdG9tRWxlbWVudHMuZGVmaW5lKCdlbGVtZW50LXdpdGgtYXR0ci1u
b2RlJywgRWxlbWVudFdpdGhBdHRyTm9kZSk7CiAgICAgYXNzZXJ0X3RydWUobmV3IEVsZW1lbnRX
aXRoQXR0ck5vZGUgaW5zdGFuY2VvZiBFbGVtZW50V2l0aEF0dHJOb2RlKTsKLSAgICBhc3NlcnRf
dGhyb3dzKHtuYW1lOiAnTm90U3VwcG9ydGVkRXJyb3InfSwgZnVuY3Rpb24gKCkgeyBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCdlbGVtZW50LXdpdGgtYXR0ci1ub2RlJyk7IH0pOwotfSwgJ2RvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQgbXVzdCB0aHJvdyBhIE5vdFN1cHBvcnRlZEVycm9yIHdoZW4gYXR0
cmlidXRlIGlzIGFkZGVkIGJ5IGF0dHJpYnV0ZXMuc2V0TmFtZWRJdGVtIGR1cmluZyBjb25zdHJ1
Y3Rpb24nKTsKKyAgICB2YXIgaW5zdGFuY2U7CisgICAgYXNzZXJ0X3JlcG9ydHMoe25hbWU6ICdO
b3RTdXBwb3J0ZWRFcnJvcid9LCBmdW5jdGlvbiAoKSB7IGluc3RhbmNlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgnZWxlbWVudC13aXRoLWF0dHItbm9kZScpOyB9KTsKKyAgICBhc3NlcnRfZXF1
YWxzKGluc3RhbmNlLmxvY2FsTmFtZSwgJ2VsZW1lbnQtd2l0aC1hdHRyLW5vZGUnKTsKKyAgICBh
c3NlcnRfdHJ1ZShpbnN0YW5jZSBpbnN0YW5jZW9mIEhUTUxVbmtub3duRWxlbWVudCk7Cit9LCAn
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCBtdXN0IHJlcG9ydCBhIE5vdFN1cHBvcnRlZEVycm9yIHdo
ZW4gYXR0cmlidXRlIGlzIGFkZGVkIGJ5IGF0dHJpYnV0ZXMuc2V0TmFtZWRJdGVtIGR1cmluZyBj
b25zdHJ1Y3Rpb24nKTsKIAogdGVzdChmdW5jdGlvbiAoKSB7CiAgICAgY2xhc3MgRWxlbWVudFdp
dGhOb0F0dHJpYnV0ZXMgZXh0ZW5kcyBIVE1MRWxlbWVudCB7CkBAIC05Miw4ICsxMjIsMTAgQEAg
dGVzdChmdW5jdGlvbiAoKSB7CiAgICAgfTsKICAgICBjdXN0b21FbGVtZW50cy5kZWZpbmUoJ2Vs
ZW1lbnQtd2l0aC1uby1hdHRpcmlidXRlcycsIEVsZW1lbnRXaXRoTm9BdHRyaWJ1dGVzKTsKICAg
ICBhc3NlcnRfdHJ1ZShuZXcgRWxlbWVudFdpdGhOb0F0dHJpYnV0ZXMgaW5zdGFuY2VvZiBFbGVt
ZW50V2l0aE5vQXR0cmlidXRlcyk7Ci0gICAgYXNzZXJ0X3RydWUoZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgnZWxlbWVudC13aXRoLW5vLWF0dGlyaWJ1dGVzJykgaW5zdGFuY2VvZiBFbGVtZW50V2l0
aE5vQXR0cmlidXRlcyk7Ci19LCAnZG9jdW1lbnQuY3JlYXRlRWxlbWVudCBtdXN0IG5vdCB0aHJv
dyBhIE5vdFN1cHBvcnRlZEVycm9yIHdoZW4gYXR0cmlidXRlIGlzIGFkZGVkIGFuZCByZW1vdmVk
IGR1cmluZyBjb25zdHJ1Y3Rpb24nKTsKKyAgICB2YXIgaW5zdGFuY2U7CisgICAgYXNzZXJ0X25v
dF9yZXBvcnRzKGZ1bmN0aW9uICgpIHsgaW5zdGFuY2UgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCdlbGVtZW50LXdpdGgtbm8tYXR0aXJpYnV0ZXMnKTsgfSk7CisgICAgYXNzZXJ0X3RydWUoaW5z
dGFuY2UgaW5zdGFuY2VvZiBFbGVtZW50V2l0aE5vQXR0cmlidXRlcyk7Cit9LCAnZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCBtdXN0IG5vdCByZXBvcnQgYSBOb3RTdXBwb3J0ZWRFcnJvciB3aGVuIGF0
dHJpYnV0ZSBpcyBhZGRlZCBhbmQgcmVtb3ZlZCBkdXJpbmcgY29uc3RydWN0aW9uJyk7CiAKIHRl
c3QoZnVuY3Rpb24gKCkgewogICAgIGNsYXNzIEVsZW1lbnRXaXRoQ2hpbGRUZXh0IGV4dGVuZHMg
SFRNTEVsZW1lbnQgewpAQCAtMTA1LDggKzEzNywxMSBAQCB0ZXN0KGZ1bmN0aW9uICgpIHsKICAg
ICB9OwogICAgIGN1c3RvbUVsZW1lbnRzLmRlZmluZSgnZWxlbWVudC13aXRoLWNoaWxkLXRleHQn
LCBFbGVtZW50V2l0aENoaWxkVGV4dCk7CiAgICAgYXNzZXJ0X3RydWUobmV3IEVsZW1lbnRXaXRo
Q2hpbGRUZXh0IGluc3RhbmNlb2YgRWxlbWVudFdpdGhDaGlsZFRleHQpOwotICAgIGFzc2VydF90
aHJvd3Moe25hbWU6ICdOb3RTdXBwb3J0ZWRFcnJvcid9LCBmdW5jdGlvbiAoKSB7IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ2VsZW1lbnQtd2l0aC1jaGlsZC10ZXh0Jyk7IH0pOwotfSwgJ2RvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQgbXVzdCB0aHJvdyBhIE5vdFN1cHBvcnRlZEVycm9yIHdoZW4gYSBU
ZXh0IGNoaWxkIGlzIGFkZGVkIGR1cmluZyBjb25zdHJ1Y3Rpb24nKTsKKyAgICB2YXIgaW5zdGFu
Y2U7CisgICAgYXNzZXJ0X3JlcG9ydHMoe25hbWU6ICdOb3RTdXBwb3J0ZWRFcnJvcid9LCBmdW5j
dGlvbiAoKSB7IGluc3RhbmNlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZWxlbWVudC13aXRo
LWNoaWxkLXRleHQnKTsgfSk7CisgICAgYXNzZXJ0X2VxdWFscyhpbnN0YW5jZS5sb2NhbE5hbWUs
ICdlbGVtZW50LXdpdGgtY2hpbGQtdGV4dCcpOworICAgIGFzc2VydF90cnVlKGluc3RhbmNlIGlu
c3RhbmNlb2YgSFRNTFVua25vd25FbGVtZW50KTsKK30sICdkb2N1bWVudC5jcmVhdGVFbGVtZW50
IG11c3QgcmVwb3J0IGEgTm90U3VwcG9ydGVkRXJyb3Igd2hlbiBhIFRleHQgY2hpbGQgaXMgYWRk
ZWQgZHVyaW5nIGNvbnN0cnVjdGlvbicpOwogCiB0ZXN0KGZ1bmN0aW9uICgpIHsKICAgICBjbGFz
cyBFbGVtZW50V2l0aENoaWxkQ29tbWVudCBleHRlbmRzIEhUTUxFbGVtZW50IHsKQEAgLTExOCw4
ICsxNTMsMTEgQEAgdGVzdChmdW5jdGlvbiAoKSB7CiAgICAgfTsKICAgICBjdXN0b21FbGVtZW50
cy5kZWZpbmUoJ2VsZW1lbnQtd2l0aC1jaGlsZC1jb21tZW50JywgRWxlbWVudFdpdGhDaGlsZENv
bW1lbnQpOwogICAgIGFzc2VydF90cnVlKG5ldyBFbGVtZW50V2l0aENoaWxkQ29tbWVudCBpbnN0
YW5jZW9mIEVsZW1lbnRXaXRoQ2hpbGRDb21tZW50KTsKLSAgICBhc3NlcnRfdGhyb3dzKHtuYW1l
OiAnTm90U3VwcG9ydGVkRXJyb3InfSwgZnVuY3Rpb24gKCkgeyBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdlbGVtZW50LXdpdGgtY2hpbGQtY29tbWVudCcpOyB9KTsKLX0sICdkb2N1bWVudC5jcmVh
dGVFbGVtZW50IG11c3QgdGhyb3cgYSBOb3RTdXBwb3J0ZWRFcnJvciB3aGVuIGEgQ29tbWVudCBj
aGlsZCBpcyBhZGRlZCBkdXJpbmcgY29uc3RydWN0aW9uJyk7CisgICAgdmFyIGluc3RhbmNlOwor
ICAgIGFzc2VydF9yZXBvcnRzKHtuYW1lOiAnTm90U3VwcG9ydGVkRXJyb3InfSwgZnVuY3Rpb24g
KCkgeyBpbnN0YW5jZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2VsZW1lbnQtd2l0aC1jaGls
ZC1jb21tZW50Jyk7IH0pOworICAgIGFzc2VydF9lcXVhbHMoaW5zdGFuY2UubG9jYWxOYW1lLCAn
ZWxlbWVudC13aXRoLWNoaWxkLWNvbW1lbnQnKTsKKyAgICBhc3NlcnRfdHJ1ZShpbnN0YW5jZSBp
bnN0YW5jZW9mIEhUTUxVbmtub3duRWxlbWVudCk7Cit9LCAnZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCBtdXN0IHJlcG9ydCBhIE5vdFN1cHBvcnRlZEVycm9yIHdoZW4gYSBDb21tZW50IGNoaWxkIGlz
IGFkZGVkIGR1cmluZyBjb25zdHJ1Y3Rpb24nKTsKIAogdGVzdChmdW5jdGlvbiAoKSB7CiAgICAg
Y2xhc3MgRWxlbWVudFdpdGhDaGlsZEVsZW1lbnQgZXh0ZW5kcyBIVE1MRWxlbWVudCB7CkBAIC0x
MzEsOCArMTY5LDExIEBAIHRlc3QoZnVuY3Rpb24gKCkgewogICAgIH07CiAgICAgY3VzdG9tRWxl
bWVudHMuZGVmaW5lKCdlbGVtZW50LXdpdGgtY2hpbGQtZWxlbWVudCcsIEVsZW1lbnRXaXRoQ2hp
bGRFbGVtZW50KTsKICAgICBhc3NlcnRfdHJ1ZShuZXcgRWxlbWVudFdpdGhDaGlsZEVsZW1lbnQg
aW5zdGFuY2VvZiBFbGVtZW50V2l0aENoaWxkRWxlbWVudCk7Ci0gICAgYXNzZXJ0X3Rocm93cyh7
bmFtZTogJ05vdFN1cHBvcnRlZEVycm9yJ30sIGZ1bmN0aW9uICgpIHsgZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgnZWxlbWVudC13aXRoLWNoaWxkLWVsZW1lbnQnKTsgfSk7Ci19LCAnZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCBtdXN0IHRocm93IGEgTm90U3VwcG9ydGVkRXJyb3Igd2hlbiBhbiBlbGVt
ZW50IGNoaWxkIGlzIGFkZGVkIGR1cmluZyBjb25zdHJ1Y3Rpb24nKTsKKyAgICB2YXIgaW5zdGFu
Y2U7CisgICAgYXNzZXJ0X3JlcG9ydHMoe25hbWU6ICdOb3RTdXBwb3J0ZWRFcnJvcid9LCBmdW5j
dGlvbiAoKSB7IGluc3RhbmNlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZWxlbWVudC13aXRo
LWNoaWxkLWVsZW1lbnQnKTsgfSk7CisgICAgYXNzZXJ0X2VxdWFscyhpbnN0YW5jZS5sb2NhbE5h
bWUsICdlbGVtZW50LXdpdGgtY2hpbGQtZWxlbWVudCcpOworICAgIGFzc2VydF90cnVlKGluc3Rh
bmNlIGluc3RhbmNlb2YgSFRNTFVua25vd25FbGVtZW50KTsKK30sICdkb2N1bWVudC5jcmVhdGVF
bGVtZW50IG11c3QgcmVwb3J0IGEgTm90U3VwcG9ydGVkRXJyb3Igd2hlbiBhbiBlbGVtZW50IGNo
aWxkIGlzIGFkZGVkIGR1cmluZyBjb25zdHJ1Y3Rpb24nKTsKIAogdGVzdChmdW5jdGlvbiAoKSB7
CiAgICAgY2xhc3MgRWxlbWVudFdpdGhOb0NoaWxkRWxlbWVudHMgZXh0ZW5kcyBIVE1MRWxlbWVu
dCB7CkBAIC0xNDQsOCArMTg1LDEwIEBAIHRlc3QoZnVuY3Rpb24gKCkgewogICAgICAgICB9CiAg
ICAgfTsKICAgICBjdXN0b21FbGVtZW50cy5kZWZpbmUoJ2VsZW1lbnQtd2l0aC1uby1jaGlsZC1l
bGVtZW50cycsIEVsZW1lbnRXaXRoTm9DaGlsZEVsZW1lbnRzKTsKLSAgICBhc3NlcnRfdHJ1ZShk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCdlbGVtZW50LXdpdGgtbm8tY2hpbGQtZWxlbWVudHMnKSBp
bnN0YW5jZW9mIEVsZW1lbnRXaXRoTm9DaGlsZEVsZW1lbnRzKTsKLX0sICdkb2N1bWVudC5jcmVh
dGVFbGVtZW50IG11c3Qgbm90IHRocm93IGEgTm90U3VwcG9ydGVkRXJyb3Igd2hlbiBhbiBlbGVt
ZW50IGNoaWxkIGlzIGFkZGVkIGFuZCByZW1vdmVkIGR1cmluZyBjb25zdHJ1Y3Rpb24nKTsKKyAg
ICB2YXIgaW5zdGFuY2U7CisgICAgYXNzZXJ0X25vdF9yZXBvcnRzKGZ1bmN0aW9uICgpIHsgaW5z
dGFuY2UgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdlbGVtZW50LXdpdGgtbm8tY2hpbGQtZWxl
bWVudHMnKTsgfSk7CisgICAgYXNzZXJ0X3RydWUoaW5zdGFuY2UgaW5zdGFuY2VvZiBFbGVtZW50
V2l0aE5vQ2hpbGRFbGVtZW50cyk7Cit9LCAnZG9jdW1lbnQuY3JlYXRlRWxlbWVudCBtdXN0IG5v
dCByZXBvcnQgYSBOb3RTdXBwb3J0ZWRFcnJvciB3aGVuIGFuIGVsZW1lbnQgY2hpbGQgaXMgYWRk
ZWQgYW5kIHJlbW92ZWQgZHVyaW5nIGNvbnN0cnVjdGlvbicpOwogCiB0ZXN0KGZ1bmN0aW9uICgp
IHsKICAgICBjbGFzcyBFbGVtZW50V2l0aFBhcmVudCBleHRlbmRzIEhUTUxFbGVtZW50IHsKQEAg
LTE1Nyw4ICsyMDAsMTEgQEAgdGVzdChmdW5jdGlvbiAoKSB7CiAgICAgfTsKICAgICBjdXN0b21F
bGVtZW50cy5kZWZpbmUoJ2VsZW1lbnQtd2l0aC1wYXJlbnQnLCBFbGVtZW50V2l0aFBhcmVudCk7
CiAgICAgYXNzZXJ0X3RydWUobmV3IEVsZW1lbnRXaXRoUGFyZW50IGluc3RhbmNlb2YgRWxlbWVu
dFdpdGhQYXJlbnQpOwotICAgIGFzc2VydF90aHJvd3Moe25hbWU6ICdOb3RTdXBwb3J0ZWRFcnJv
cid9LCBmdW5jdGlvbiAoKSB7IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2VsZW1lbnQtd2l0aC1w
YXJlbnQnKTsgfSk7Ci19LCAnZG9jdW1lbnQuY3JlYXRlRWxlbWVudCBtdXN0IHRocm93IGEgTm90
U3VwcG9ydGVkRXJyb3Igd2hlbiB0aGUgZWxlbWVudCBnZXRzIGluc2VydGVkIGludG8gYW5vdGhl
ciBlbGVtZW50IGR1cmluZyBjb25zdHJ1Y3Rpb24nKTsKKyAgICB2YXIgaW5zdGFuY2U7CisgICAg
YXNzZXJ0X3JlcG9ydHMoe25hbWU6ICdOb3RTdXBwb3J0ZWRFcnJvcid9LCBmdW5jdGlvbiAoKSB7
IGluc3RhbmNlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZWxlbWVudC13aXRoLXBhcmVudCcp
OyB9KTsKKyAgICBhc3NlcnRfZXF1YWxzKGluc3RhbmNlLmxvY2FsTmFtZSwgJ2VsZW1lbnQtd2l0
aC1wYXJlbnQnKTsKKyAgICBhc3NlcnRfdHJ1ZShpbnN0YW5jZSBpbnN0YW5jZW9mIEhUTUxVbmtu
b3duRWxlbWVudCk7Cit9LCAnZG9jdW1lbnQuY3JlYXRlRWxlbWVudCBtdXN0IHJlcG9ydCBhIE5v
dFN1cHBvcnRlZEVycm9yIHdoZW4gdGhlIGVsZW1lbnQgZ2V0cyBpbnNlcnRlZCBpbnRvIGFub3Ro
ZXIgZWxlbWVudCBkdXJpbmcgY29uc3RydWN0aW9uJyk7CiAKIHRlc3QoZnVuY3Rpb24gKCkgewog
ICAgIGNsYXNzIEVsZW1lbnRXaXRoTm9QYXJlbnQgZXh0ZW5kcyBIVE1MRWxlbWVudCB7CkBAIC0x
NzAsOCArMjE2LDEwIEBAIHRlc3QoZnVuY3Rpb24gKCkgewogICAgICAgICB9CiAgICAgfTsKICAg
ICBjdXN0b21FbGVtZW50cy5kZWZpbmUoJ2VsZW1lbnQtd2l0aC1uby1wYXJlbnQnLCBFbGVtZW50
V2l0aE5vUGFyZW50KTsKLSAgICBhc3NlcnRfdHJ1ZShkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdl
bGVtZW50LXdpdGgtbm8tcGFyZW50JykgaW5zdGFuY2VvZiBFbGVtZW50V2l0aE5vUGFyZW50KTsK
LX0sICdkb2N1bWVudC5jcmVhdGVFbGVtZW50IG11c3Qgbm90IHRocm93IGEgTm90U3VwcG9ydGVk
RXJyb3Igd2hlbiB0aGUgZWxlbWVudCBpcyBpbnNlcnRlZCBhbmQgcmVtb3ZlZCBmcm9tIGFub3Ro
ZXIgZWxlbWVudCBkdXJpbmcgY29uc3RydWN0aW9uJyk7CisgICAgdmFyIGluc3RhbmNlOworICAg
IGFzc2VydF9ub3RfcmVwb3J0cyhmdW5jdGlvbiAoKSB7IGluc3RhbmNlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgnZWxlbWVudC13aXRoLW5vLXBhcmVudCcpOyB9KTsKKyAgICBhc3NlcnRfdHJ1
ZShpbnN0YW5jZSBpbnN0YW5jZW9mIEVsZW1lbnRXaXRoTm9QYXJlbnQpOworfSwgJ2RvY3VtZW50
LmNyZWF0ZUVsZW1lbnQgbXVzdCBub3QgcmVwb3J0IGEgTm90U3VwcG9ydGVkRXJyb3Igd2hlbiB0
aGUgZWxlbWVudCBpcyBpbnNlcnRlZCBhbmQgcmVtb3ZlZCBmcm9tIGFub3RoZXIgZWxlbWVudCBk
dXJpbmcgY29uc3RydWN0aW9uJyk7CiAKIERvY3VtZW50VHlwZXMuZm9yRWFjaChmdW5jdGlvbiAo
ZW50cnksIHRlc3ROdW1iZXIpIHsKICAgICBpZiAoZW50cnkuaXNPd25lcikKQEAgLTE5Miw5ICsy
NDAsMTIgQEAgRG9jdW1lbnRUeXBlcy5mb3JFYWNoKGZ1bmN0aW9uIChlbnRyeSwgdGVzdE51bWJl
cikgewogICAgICAgICAgICAgdmFyIG5hbWUgPSAnZWxlbWVudC13aXRoLWFkb3B0LWNhbGwtJyAr
IHRlc3ROdW1iZXI7CiAgICAgICAgICAgICBjdXN0b21FbGVtZW50cy5kZWZpbmUobmFtZSwgRWxl
bWVudFdpdGhBZG9wdENhbGwpOwogICAgICAgICAgICAgYXNzZXJ0X3RydWUobmV3IEVsZW1lbnRX
aXRoQWRvcHRDYWxsIGluc3RhbmNlb2YgRWxlbWVudFdpdGhBZG9wdENhbGwpOwotICAgICAgICAg
ICAgYXNzZXJ0X3Rocm93cyh7bmFtZTogJ05vdFN1cHBvcnRlZEVycm9yJ30sIGZ1bmN0aW9uICgp
IHsgZG9jdW1lbnQuY3JlYXRlRWxlbWVudChuYW1lKTsgfSk7CisgICAgICAgICAgICB2YXIgaW5z
dGFuY2U7CisgICAgICAgICAgICBhc3NlcnRfcmVwb3J0cyh7bmFtZTogJ05vdFN1cHBvcnRlZEVy
cm9yJ30sIGZ1bmN0aW9uICgpIHsgaW5zdGFuY2UgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KG5h
bWUpOyB9KTsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoaW5zdGFuY2UubG9jYWxOYW1lLCBu
YW1lKTsKKyAgICAgICAgICAgIGFzc2VydF90cnVlKGluc3RhbmNlIGluc3RhbmNlb2YgSFRNTFVu
a25vd25FbGVtZW50KTsKICAgICAgICAgfSk7Ci0gICAgfSwgJ2RvY3VtZW50LmNyZWF0ZUVsZW1l
bnQgbXVzdCB0aHJvdyBhIE5vdFN1cHBvcnRlZEVycm9yIHdoZW4gdGhlIGVsZW1lbnQgaXMgYWRv
cHRlZCBpbnRvIGEgJyArIGRvY3VlbW50TmFtZSArICcgZHVyaW5nIGNvbnN0cnVjdGlvbicpOwor
ICAgIH0sICdkb2N1bWVudC5jcmVhdGVFbGVtZW50IG11c3QgcmVwb3J0IGEgTm90U3VwcG9ydGVk
RXJyb3Igd2hlbiB0aGUgZWxlbWVudCBpcyBhZG9wdGVkIGludG8gYSAnICsgZG9jdWVtbnROYW1l
ICsgJyBkdXJpbmcgY29uc3RydWN0aW9uJyk7CiAKICAgICBwcm9taXNlX3Rlc3QoZnVuY3Rpb24g
KCkgewogICAgICAgICByZXR1cm4gZ2V0RG9jdW1lbnQoKS50aGVuKGZ1bmN0aW9uIChkb2MpIHsK
QEAgLTIwOCw5ICsyNTksMTIgQEAgRG9jdW1lbnRUeXBlcy5mb3JFYWNoKGZ1bmN0aW9uIChlbnRy
eSwgdGVzdE51bWJlcikgewogICAgICAgICAgICAgdmFyIG5hbWUgPSAnZWxlbWVudC1pbnNlcnRl
ZC1pbnRvLWFub3RoZXItZG9jdW1lbnQtJyArIHRlc3ROdW1iZXI7CiAgICAgICAgICAgICBjdXN0
b21FbGVtZW50cy5kZWZpbmUobmFtZSwgRWxlbWVudEluc2VydGVkSW50b0Fub3RoZXJEb2N1bWVu
dCk7CiAgICAgICAgICAgICBhc3NlcnRfdHJ1ZShuZXcgRWxlbWVudEluc2VydGVkSW50b0Fub3Ro
ZXJEb2N1bWVudCBpbnN0YW5jZW9mIEVsZW1lbnRJbnNlcnRlZEludG9Bbm90aGVyRG9jdW1lbnQp
OwotICAgICAgICAgICAgYXNzZXJ0X3Rocm93cyh7bmFtZTogJ05vdFN1cHBvcnRlZEVycm9yJ30s
IGZ1bmN0aW9uICgpIHsgZG9jdW1lbnQuY3JlYXRlRWxlbWVudChuYW1lKTsgfSk7CisgICAgICAg
ICAgICB2YXIgaW5zdGFuY2U7CisgICAgICAgICAgICBhc3NlcnRfcmVwb3J0cyh7bmFtZTogJ05v
dFN1cHBvcnRlZEVycm9yJ30sIGZ1bmN0aW9uICgpIHsgaW5zdGFuY2UgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KG5hbWUpOyB9KTsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoaW5zdGFuY2Uu
bG9jYWxOYW1lLCBuYW1lKTsKKyAgICAgICAgICAgIGFzc2VydF90cnVlKGluc3RhbmNlIGluc3Rh
bmNlb2YgSFRNTFVua25vd25FbGVtZW50KTsKICAgICAgICAgfSk7Ci0gICAgfSwgJ2RvY3VtZW50
LmNyZWF0ZUVsZW1lbnQgbXVzdCB0aHJvdyBhIE5vdFN1cHBvcnRlZEVycm9yIHdoZW4gdGhlIGVs
ZW1lbnQgaXMgaW5zZXJ0ZWQgaW50byBhICcgKyBkb2N1ZW1udE5hbWUgKyAnIGR1cmluZyBjb25z
dHJ1Y3Rpb24nKTsKKyAgICB9LCAnZG9jdW1lbnQuY3JlYXRlRWxlbWVudCBtdXN0IHJlcG9ydCBh
IE5vdFN1cHBvcnRlZEVycm9yIHdoZW4gdGhlIGVsZW1lbnQgaXMgaW5zZXJ0ZWQgaW50byBhICcg
KyBkb2N1ZW1udE5hbWUgKyAnIGR1cmluZyBjb25zdHJ1Y3Rpb24nKTsKIAogICAgIHByb21pc2Vf
dGVzdChmdW5jdGlvbiAoKSB7CiAgICAgICAgIHJldHVybiBnZXREb2N1bWVudCgpLnRoZW4oZnVu
Y3Rpb24gKGRvYykgewpAQCAtMjI0LDkgKzI3OCwxMSBAQCBEb2N1bWVudFR5cGVzLmZvckVhY2go
ZnVuY3Rpb24gKGVudHJ5LCB0ZXN0TnVtYmVyKSB7CiAgICAgICAgICAgICB9OwogICAgICAgICAg
ICAgdmFyIG5hbWUgPSAnZWxlbWVudC10aGF0LWdldC1hZG9wdGVkLWJhY2snICsgdGVzdE51bWJl
cjsKICAgICAgICAgICAgIGN1c3RvbUVsZW1lbnRzLmRlZmluZShuYW1lLCBFbGVtZW50VGhhdEdl
dEFkb3B0ZWRCYWNrKTsKLSAgICAgICAgICAgIGFzc2VydF90cnVlKGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQobmFtZSkgaW5zdGFuY2VvZiBFbGVtZW50VGhhdEdldEFkb3B0ZWRCYWNrKTsKKyAgICAg
ICAgICAgIHZhciBpbnN0YW5jZTsKKyAgICAgICAgICAgIGFzc2VydF9ub3RfcmVwb3J0cyhmdW5j
dGlvbiAoKSB7IGluc3RhbmNlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChuYW1lKTsgfSk7Cisg
ICAgICAgICAgICBhc3NlcnRfdHJ1ZShpbnN0YW5jZSBpbnN0YW5jZW9mIEVsZW1lbnRUaGF0R2V0
QWRvcHRlZEJhY2spOwogICAgICAgICB9KTsKLSAgICB9LCAnZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCBtdXN0IG5vdCB0aHJvdyBhIE5vdFN1cHBvcnRlZEVycm9yIHdoZW4gdGhlIGVsZW1lbnQgaXMg
YWRvcHRlZCBiYWNrIGZyb20gYSAnICsgZG9jdWVtbnROYW1lICsgJyBkdXJpbmcgY29uc3RydWN0
aW9uJyk7CisgICAgfSwgJ2RvY3VtZW50LmNyZWF0ZUVsZW1lbnQgbXVzdCBub3QgcmVwb3J0IGEg
Tm90U3VwcG9ydGVkRXJyb3Igd2hlbiB0aGUgZWxlbWVudCBpcyBhZG9wdGVkIGJhY2sgZnJvbSBh
ICcgKyBkb2N1ZW1udE5hbWUgKyAnIGR1cmluZyBjb25zdHJ1Y3Rpb24nKTsKIH0pOwogCiB0ZXN0
KGZ1bmN0aW9uICgpIHsKQEAgLTIzOSwxMSArMjk1LDE0IEBAIHRlc3QoZnVuY3Rpb24gKCkgewog
ICAgIH07CiAgICAgY3VzdG9tRWxlbWVudHMuZGVmaW5lKCdkaXYtY3VzdG9tLWVsZW1lbnQnLCBE
aXZDdXN0b21FbGVtZW50KTsKICAgICBhc3NlcnRfdHJ1ZShuZXcgRGl2Q3VzdG9tRWxlbWVudCBp
bnN0YW5jZW9mIEhUTUxEaXZFbGVtZW50KTsKLSAgICBhc3NlcnRfdGhyb3dzKHtuYW1lOiAnTm90
U3VwcG9ydGVkRXJyb3InfSwgZnVuY3Rpb24gKCkgeyBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdk
aXYtY3VzdG9tLWVsZW1lbnQnKTsgfSk7Ci19LCAnZG9jdW1lbnQuY3JlYXRlRWxlbWVudCBtdXN0
IHRocm93IGEgTm90U3VwcG9ydGVkRXJyb3Igd2hlbiB0aGUgbG9jYWwgbmFtZSBvZiB0aGUgZWxl
bWVudCBkb2VzIG5vdCBtYXRjaCB0aGF0IG9mIHRoZSBjdXN0b20gZWxlbWVudCcpOworICAgIHZh
ciBpbnN0YW5jZTsKKyAgICBhc3NlcnRfcmVwb3J0cyh7bmFtZTogJ05vdFN1cHBvcnRlZEVycm9y
J30sIGZ1bmN0aW9uICgpIHsgaW5zdGFuY2UgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYt
Y3VzdG9tLWVsZW1lbnQnKTsgfSk7CisgICAgYXNzZXJ0X2VxdWFscyhpbnN0YW5jZS5sb2NhbE5h
bWUsICdkaXYtY3VzdG9tLWVsZW1lbnQnKTsKKyAgICBhc3NlcnRfdHJ1ZShpbnN0YW5jZSBpbnN0
YW5jZW9mIEhUTUxVbmtub3duRWxlbWVudCk7Cit9LCAnZG9jdW1lbnQuY3JlYXRlRWxlbWVudCBt
dXN0IHJlcG9ydCBhIE5vdFN1cHBvcnRlZEVycm9yIHdoZW4gdGhlIGxvY2FsIG5hbWUgb2YgdGhl
IGVsZW1lbnQgZG9lcyBub3QgbWF0Y2ggdGhhdCBvZiB0aGUgY3VzdG9tIGVsZW1lbnQnKTsKIAog
dGVzdChmdW5jdGlvbiAoKSB7Ci0gICAgdmFyIGV4Y2VwdGlvblRvVGhyb3cgPSB7bWVzc2FnZTog
J2V4Y2VwdGlvbiB0aHJvd24gYnkgYSBjdXN0b20gY29uc3RydWN0b3InfTsKKyAgICB2YXIgZXhj
ZXB0aW9uVG9UaHJvdyA9IHtuYW1lOiAnZXhjZXB0aW9uIHRocm93biBieSBhIGN1c3RvbSBjb25z
dHJ1Y3Rvcid9OwogICAgIGNsYXNzIFRocm93Q3VzdG9tRWxlbWVudCBleHRlbmRzIEhUTUxFbGVt
ZW50IHsKICAgICAgICAgY29uc3RydWN0b3IoKQogICAgICAgICB7CkBAIC0yNTQsMjEgKzMxMywx
OCBAQCB0ZXN0KGZ1bmN0aW9uICgpIHsKICAgICB9OwogICAgIGN1c3RvbUVsZW1lbnRzLmRlZmlu
ZSgndGhyb3ctY3VzdG9tLWVsZW1lbnQnLCBUaHJvd0N1c3RvbUVsZW1lbnQpOwogCi0gICAgYXNz
ZXJ0X3Rocm93cyhudWxsLCBmdW5jdGlvbiAoKSB7IG5ldyBUaHJvd0N1c3RvbUVsZW1lbnQ7IH0p
OwotCi0gICAgdHJ5IHsKLSAgICAgICAgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGhyb3ctY3Vz
dG9tLWVsZW1lbnQnKTsKLSAgICAgICAgYXNzZXJ0KGZhbHNlLCAnZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCBtdXN0IHRocm93IHdoZW4gYSBjdXN0b20gZWxlbWVudCBjb25zdHJ1Y3RvciB0aHJvd3Mn
KTsKLSAgICB9IGNhdGNoIChleGNlcHRpb24pIHsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyhleGNl
cHRpb24sIGV4Y2VwdGlvblRvVGhyb3csICdkb2N1bWVudC5jcmVhdGVFbGVtZW50IG11c3QgdGhy
b3cgdGhlIHNhbWUgZXhjZXB0aW9uIGN1c3RvbSBlbGVtZW50IGNvbnN0cnVjdG9yIHRocm93cycp
OwotICAgIH0KKyAgICBhc3NlcnRfdGhyb3dzKGV4Y2VwdGlvblRvVGhyb3csIGZ1bmN0aW9uICgp
IHsgbmV3IFRocm93Q3VzdG9tRWxlbWVudDsgfSk7CisgICAgdmFyIGluc3RhbmNlOworICAgIGFz
c2VydF9yZXBvcnRzKGV4Y2VwdGlvblRvVGhyb3csIGZ1bmN0aW9uICgpIHsgaW5zdGFuY2UgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCd0aHJvdy1jdXN0b20tZWxlbWVudCcpOyB9KTsKKyAgICBh
c3NlcnRfZXF1YWxzKGluc3RhbmNlLmxvY2FsTmFtZSwgJ3Rocm93LWN1c3RvbS1lbGVtZW50Jyk7
CisgICAgYXNzZXJ0X3RydWUoaW5zdGFuY2UgaW5zdGFuY2VvZiBIVE1MVW5rbm93bkVsZW1lbnQp
OwogCiAgICAgZXhjZXB0aW9uVG9UaHJvdyA9IGZhbHNlOwogICAgIHZhciBpbnN0YW5jZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3Rocm93LWN1c3RvbS1lbGVtZW50Jyk7CiAgICAgYXNzZXJ0
X3RydWUoaW5zdGFuY2UgaW5zdGFuY2VvZiBUaHJvd0N1c3RvbUVsZW1lbnQpOwogICAgIGFzc2Vy
dF9lcXVhbHMoaW5zdGFuY2UubG9jYWxOYW1lLCAndGhyb3ctY3VzdG9tLWVsZW1lbnQnKTsKIAot
fSwgJ2RvY3VtZW50LmNyZWF0ZUVsZW1lbnQgbXVzdCByZS10aHJvdyBhbiBleGNlcHRpb24gdGhy
b3duIGJ5IGEgY3VzdG9tIGVsZW1lbnQgY29uc3RydWN0b3InKTsKK30sICdkb2N1bWVudC5jcmVh
dGVFbGVtZW50IG11c3QgcmVwb3J0IGFuIGV4Y2VwdGlvbiB0aHJvd24gYnkgYSBjdXN0b20gZWxl
bWVudCBjb25zdHJ1Y3RvcicpOwogCiA8L3NjcmlwdD4KIDwvYm9keT4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvY3VzdG9tLWVsZW1lbnRzL2RlZmluZWQtcHNldWRvLWNsYXNzLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvY3VzdG9tLWVsZW1lbnRzL2RlZmluZWQtcHNldWRv
LWNsYXNzLWV4cGVjdGVkLnR4dAppbmRleCAyNGJiZDU2OGUyNzBjZDA0NWNmMDBiYjEwNmU5NzI2
ZjYzNjM1YWRiLi4xOGQ0MDA5ODg3OTk3YWM5Y2JhZGE3M2ZmMjlmM2JjYmI3ODI4NmQ0IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2N1c3RvbS1lbGVtZW50cy9kZWZpbmVkLXBzZXVkby1j
bGFzcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVudHMv
ZGVmaW5lZC1wc2V1ZG8tY2xhc3MtZXhwZWN0ZWQudHh0CkBAIC0xLDYgKzEsMyBAQAotQ09OU09M
RSBNRVNTQUdFOiBsaW5lIDc5OiBUeXBlRXJyb3I6IFRoZSByZXN1bHQgb2YgY29uc3RydWN0aW5n
IGEgY3VzdG9tIGVsZW1lbnQgbXVzdCBiZSBhIEhUTUxFbGVtZW50Ci0KLUhhcm5lc3MgRXJyb3Ig
KEZBSUwpLCBtZXNzYWdlID0gVHlwZUVycm9yOiBUaGUgcmVzdWx0IG9mIGNvbnN0cnVjdGluZyBh
IGN1c3RvbSBlbGVtZW50IG11c3QgYmUgYSBIVE1MRWxlbWVudAogCiBQQVNTIFRoZSBkZWZpbmVk
IGZsYWcgb2YgYSBjdXN0b20gZWxlbWVudCBtdXN0IG5vdCBiZSBzZXQgaWYgYSBjdXN0b20gZWxl
bWVudCBoYXMgbm90IGJlZW4gdXBncmFkZWQgeWV0IAogUEFTUyBUaGUgZGVmaW5lZCBmbGFnIG9m
IGEgY3VzdG9tIGVsZW1lbnQgbXVzdCBub3QgYmUgc2V0IGlmIGEgY3VzdG9tIGVsZW1lbnQgaGFz
IG5vdCBiZWVuIHVwZ3JhZGVkIHlldCBldmVuIGlmIHRoZSBlbGVtZW50IGhhcyBiZWVuIGRlZmlu
ZWQgCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2N1c3RvbS1lbGVtZW50cy9kZWZpbmVk
LXBzZXVkby1jbGFzcy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVudHMvZGVm
aW5lZC1wc2V1ZG8tY2xhc3MuaHRtbAppbmRleCBlY2EwZWZmOGQ4YzQ1YTM5MTIyMjc4ZjhlM2Ex
N2Y1YzMxMzE0YTRlLi4wNjIwZmNkMzcwYWYyM2E1YTI5OWYzMGIyOGJjOTEwYmE5NGJhYTc1IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2N1c3RvbS1lbGVtZW50cy9kZWZpbmVkLXBzZXVk
by1jbGFzcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3VzdG9tLWVsZW1lbnRzL2RlZmlu
ZWQtcHNldWRvLWNsYXNzLmh0bWwKQEAgLTExLDYgKzExLDcgQEAKIDxib2R5PgogPGRpdiBpZD0i
bG9nIj48L2Rpdj4KIDxzY3JpcHQ+CitzZXR1cCh7YWxsb3dfdW5jYXVnaHRfZXhjZXB0aW9uOnRy
dWV9KTsKIAogdmFyIHVwZ3JhZGVDYW5kaWRhdGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdt
eS1lbGVtZW50Jyk7CiAKQEAgLTc2LDEwICs3NywxNCBAQCBjbGFzcyBSZXR1cm5zQW5vdGhlck5v
ZGUgZXh0ZW5kcyBIVE1MRWxlbWVudCB7CiB9CiBjdXN0b21FbGVtZW50cy5kZWZpbmUoJ3JldHVy
bnMtYW5vdGhlci1ub2RlJywgUmV0dXJuc0Fub3RoZXJOb2RlKTsKIAordmFyIHVuY2F1Z2h0RXJy
b3I7Cit3aW5kb3cub25lcnJvciA9IGZ1bmN0aW9uIChtZXNzYWdlLCB1cmwsIGxpbmVOdW1iZXIs
IGNvbHVtbk51bWJlciwgZXJyb3IpIHsgdW5jYXVnaHRFcnJvciA9IGVycm9yOyByZXR1cm4gdHJ1
ZTsgfQogZG9jdW1lbnQud3JpdGUoJzxyZXR1cm5zLWFub3RoZXItbm9kZT48L3JldHVybnMtYW5v
dGhlci1ub2RlPicpOword2luZG93Lm9uZXJyb3IgPSBudWxsOwogCiB0ZXN0KGZ1bmN0aW9uICgp
IHsKICAgICB2YXIgaW5zdGFuY2UgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdyZXR1cm5zLWFu
b3RoZXItbm9kZScpOworICAgIGFzc2VydF9lcXVhbHModW5jYXVnaHRFcnJvci5uYW1lLCAnVHlw
ZUVycm9yJywgJ1RoZSBIVE1MIHBhcnNlciBtdXN0IHJlcG9ydCBhIFR5cGVFcnJvciB3aGVuIGEg
Y3VzdG9tIGVsZW1lbnQgcmV0dXJucyBhIG5vbi1FbGVtZW50IG5vZGUuJyk7CiAgICAgYXNzZXJ0
X25vdF9lcXVhbHMoaW5zdGFuY2UsIFJldHVybnNBbm90aGVyTm9kZS5sYXN0SW5zdGFuY2UsICdU
aGUgZWxlbWVudCBpbnNlcnRlZCBieSBIVE1MIHBhcnNlciBtdXN0IG5vdCBiZSB0aGUgb25lIHJl
dHVybmVkIGJ5IHN1cGVyKCkgY2FsbCcpOwogICAgIGFzc2VydF90cnVlKGluc3RhbmNlIGluc3Rh
bmNlb2YgSFRNTEVsZW1lbnQsICdUaGUgZWxlbWVudCBpbnNlcnRlZCBieSBIVE1MIHBhcnNlciBt
dXN0IGJlIGEgSFRNTEVsZW1lbnQnKTsKICAgICBhc3NlcnRfZmFsc2UoaW5zdGFuY2UgaW5zdGFu
Y2VvZiBSZXR1cm5zQW5vdGhlck5vZGUsICdUaGUgZWxlbWVudCBpbnNlcnRlZCBieSBIVE1MIHBh
cnNlciBtdXN0IGJlIGEgY3VzdG9tIGVsZW1lbnQnKTsKQEAgLTEwMCwxNSArMTA1LDE2IEBAIHRl
c3QoZnVuY3Rpb24gKCkgewogCiB0ZXN0KGZ1bmN0aW9uICgpIHsKICAgICB2YXIgbWF0Y2hJbnNp
ZGVDb25zdHJ1Y3RvciA9IGZhbHNlOwotICAgIGN1c3RvbUVsZW1lbnRzLmRlZmluZSgndGhyb3dz
LWV4Y2VwdGlvbicsIGNsYXNzIGV4dGVuZHMgSFRNTEVsZW1lbnQgeworICAgIGNsYXNzIFRocm93
c0V4Y2VwdGlvbiBleHRlbmRzIEhUTUxFbGVtZW50IHsKICAgICAgICAgY29uc3RydWN0b3IoKSB7
CiAgICAgICAgICAgICBzdXBlcigpOwogICAgICAgICAgICAgbWF0Y2hJbnNpZGVDb25zdHJ1Y3Rv
ciA9IHRoaXMubWF0Y2hlcygnOmRlZmluZWQnKTsKICAgICAgICAgICAgIHRocm93IHtuYW1lOiAn
YmFkJ307CiAgICAgICAgIH0KLSAgICB9KTsKKyAgICB9OworICAgIGN1c3RvbUVsZW1lbnRzLmRl
ZmluZSgndGhyb3dzLWV4Y2VwdGlvbicsIFRocm93c0V4Y2VwdGlvbik7CiAgICAgdmFyIGluc3Rh
bmNlOwotICAgIGFzc2VydF90aHJvd3Moe25hbWU6ICdiYWQnfSwgZnVuY3Rpb24gKCkgeyBpbnN0
YW5jZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3Rocm93cy1leGNlcHRpb24nKTsgfSk7Cisg
ICAgYXNzZXJ0X3Rocm93cyh7bmFtZTogJ2JhZCd9LCBmdW5jdGlvbiAoKSB7IGluc3RhbmNlID0g
bmV3IFRocm93c0V4Y2VwdGlvbjsgfSk7CiAgICAgYXNzZXJ0X3RydWUobWF0Y2hJbnNpZGVDb25z
dHJ1Y3Rvcik7CiB9LCAnVGhlIGRlZmluZWQgZmxhZyBvZiBhIGN1c3RvbSBlbGVtZW50IG11c3Qg
YmUgc2V0IGluc2lkZSBhIGNvbnN0cnVjdG9yIHdoZW4gY29uc3RydWN0aW5nIGEgY3VzdG9tIGVs
ZW1lbnQgc3luY2hyb25vdXNseScKICAgICArICcgZXZlbiBpZiB0aGUgY29uc3RydWN0b3IgdGhy
ZXcgYW4gZXhjZXB0aW9uIGxhdGVyJyk7CkBAIC0xMTYsMTMgKzEyMiwxNCBAQCB0ZXN0KGZ1bmN0
aW9uICgpIHsKIHRlc3QoZnVuY3Rpb24gKCkgewogICAgIHZhciBpbnN0YW5jZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ3Rocm93cy1leGNlcHRpb24tMicpOwogICAgIGRvY3VtZW50LmJvZHku
YXBwZW5kQ2hpbGQoaW5zdGFuY2UpOwotICAgIGFzc2VydF90aHJvd3Moe25hbWU6ICdiYWQnfSwg
ZnVuY3Rpb24gKCkgewotICAgICAgICBjdXN0b21FbGVtZW50cy5kZWZpbmUoJ3Rocm93cy1leGNl
cHRpb24tMicsIGNsYXNzIGV4dGVuZHMgSFRNTEVsZW1lbnQgewotICAgICAgICAgICAgY29uc3Ry
dWN0b3IoKSB7Ci0gICAgICAgICAgICAgICAgdGhyb3cge25hbWU6ICdiYWQnfTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgfSk7CisgICAgdmFyIHVuY2F1Z2h0RXJyb3I7CisgICAgd2luZG93Lm9u
ZXJyb3IgPSBmdW5jdGlvbiAobWVzc2FnZSwgdXJsLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIs
IGVycm9yKSB7IHVuY2F1Z2h0RXJyb3IgPSBlcnJvcjsgcmV0dXJuIHRydWU7IH0KKyAgICBjdXN0
b21FbGVtZW50cy5kZWZpbmUoJ3Rocm93cy1leGNlcHRpb24tMicsIGNsYXNzIGV4dGVuZHMgSFRN
TEVsZW1lbnQgeworICAgICAgICBjb25zdHJ1Y3RvcigpIHsKKyAgICAgICAgICAgIHRocm93IHtu
YW1lOiAnYmFkJ307CisgICAgICAgIH0KICAgICB9KTsKKyAgICBhc3NlcnRfZXF1YWxzKHVuY2F1
Z2h0RXJyb3IubmFtZSwgJ2JhZCcpOwogICAgIGFzc2VydF9mYWxzZShpbnN0YW5jZS5tYXRjaGVz
KCc6ZGVmaW5lZCcpKTsKIH0sICdUaGUgZGVmaW5lZCBmbGFnIG9mIGEgY3VzdG9tIGVsZW1lbnQg
bXVzdCBub3QgYmUgc2V0IHdoZW4gYW4gdXBncmFkZSBvZiBhIGN1c3RvbSBlbGVtZW50IGZhaWxz
Jyk7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3VzdG9tLWVsZW1lbnRzL3VwZ3Jh
ZGluZy9Ob2RlLWNsb25lTm9kZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVu
dHMvdXBncmFkaW5nL05vZGUtY2xvbmVOb2RlLmh0bWwKaW5kZXggYjU1ODNhMzVmMzU5NDFkYWE5
MWY0MTQ3ZTQxY2ViMDVkYmE1ZDdmNy4uM2QzYTg1OWM2MDY0ZTc1NzAzOWViZTI4YWIxZWNjZjQw
NmE1YjllYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVudHMvdXBn
cmFkaW5nL05vZGUtY2xvbmVOb2RlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jdXN0b20t
ZWxlbWVudHMvdXBncmFkaW5nL05vZGUtY2xvbmVOb2RlLmh0bWwKQEAgLTEyMyw4ICsxMjMsMTEg
QEAgdGVzdChmdW5jdGlvbiAoKSB7CiAgICAgICAgIH0KICAgICAgICAgY29udGVudFdpbmRvdy5j
dXN0b21FbGVtZW50cy5kZWZpbmUoJ215LWN1c3RvbS1lbGVtZW50JywgTXlDdXN0b21FbGVtZW50
KTsKIAotICAgICAgICB2YXIgaW5zdGFuY2UgPSBjb250ZW50RG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgnbXktY3VzdG9tLWVsZW1lbnQnKTsKLSAgICAgICAgYXNzZXJ0X3Rocm93cyh7J25hbWUnOiAn
SW52YWxpZFN0YXRlRXJyb3InfSwgZnVuY3Rpb24gKCkgeyBpbnN0YW5jZS5jbG9uZU5vZGUoZmFs
c2UpOyB9KTsKKyAgICAgICAgdmFyIGluc3RhbmNlID0gbmV3IE15Q3VzdG9tRWxlbWVudChmYWxz
ZSk7CisgICAgICAgIHZhciB1bmNhdWdodEVycm9yOworICAgICAgICBjb250ZW50V2luZG93Lm9u
ZXJyb3IgPSBmdW5jdGlvbiAobWVzc2FnZSwgdXJsLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIs
IGVycm9yKSB7IHVuY2F1Z2h0RXJyb3IgPSBlcnJvcjsgcmV0dXJuIHRydWU7IH0KKyAgICAgICAg
aW5zdGFuY2UuY2xvbmVOb2RlKGZhbHNlKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyh1bmNhdWdo
dEVycm9yLm5hbWUsICdJbnZhbGlkU3RhdGVFcnJvcicpOwogICAgIH0pOwogfSwgJ0hUTUxFbGVt
ZW50IGNvbnN0cnVjdG9yIG11c3QgdGhyb3cgYW4gSW52YWxpZFN0YXRlRXJyb3Igd2hlbiB0aGUg
dG9wIG9mIHRoZSBjb25zdHJ1Y3Rpb24gc3RhY2sgaXMgbWFya2VkIEFscmVhZHlDb25zdHJ1Y3Rl
ZCcKICAgICArICcgZHVlIHRvIGEgY3VzdG9tIGVsZW1lbnQgY29uc3RydWN0b3IgY29uc3RydWN0
aW5nIGl0c2VsZiBhZnRlciBzdXBlcigpIGNhbGwnKTsKQEAgLTE0MCwyNyArMTQzLDMzIEBAIHRl
c3QoZnVuY3Rpb24gKCkgewogICAgICAgICB9CiAgICAgICAgIGNvbnRlbnRXaW5kb3cuY3VzdG9t
RWxlbWVudHMuZGVmaW5lKCdteS1jdXN0b20tZWxlbWVudCcsIE15Q3VzdG9tRWxlbWVudCk7CiAK
LSAgICAgICAgdmFyIGluc3RhbmNlID0gY29udGVudERvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ215
LWN1c3RvbS1lbGVtZW50Jyk7Ci0gICAgICAgIGFzc2VydF90aHJvd3MoeyduYW1lJzogJ0ludmFs
aWRTdGF0ZUVycm9yJ30sIGZ1bmN0aW9uICgpIHsgaW5zdGFuY2UuY2xvbmVOb2RlKGZhbHNlKTsg
fSk7CisgICAgICAgIHZhciBpbnN0YW5jZSA9IG5ldyBNeUN1c3RvbUVsZW1lbnQoZmFsc2UpOwor
ICAgICAgICB2YXIgdW5jYXVnaHRFcnJvcjsKKyAgICAgICAgY29udGVudFdpbmRvdy5vbmVycm9y
ID0gZnVuY3Rpb24gKG1lc3NhZ2UsIHVybCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBlcnJv
cikgeyB1bmNhdWdodEVycm9yID0gZXJyb3I7IHJldHVybiB0cnVlOyB9CisgICAgICAgIGluc3Rh
bmNlLmNsb25lTm9kZShmYWxzZSk7CisgICAgICAgIGFzc2VydF9lcXVhbHModW5jYXVnaHRFcnJv
ci5uYW1lLCAnSW52YWxpZFN0YXRlRXJyb3InKTsKICAgICB9KTsKIH0sICdIVE1MRWxlbWVudCBj
b25zdHJ1Y3RvciBtdXN0IHRocm93IGFuIEludmFsaWRTdGF0ZUVycm9yIHdoZW4gdGhlIHRvcCBv
ZiB0aGUgY29uc3RydWN0aW9uIHN0YWNrIGlzIG1hcmtlZCBBbHJlYWR5Q29uc3RydWN0ZWQnCiAg
ICAgKyAnIGR1ZSB0byBhIGN1c3RvbSBlbGVtZW50IGNvbnN0cnVjdG9yIGNvbnN0cnVjdGluZyBp
dHNlbGYgYmVmb3JlIHN1cGVyKCkgY2FsbCcpOwogCiB0ZXN0KGZ1bmN0aW9uICgpIHsKICAgICB3
aXRoTmV3RG9jdW1lbnRXaXRoQUJyb3dzaW5nQ29udGV4dChmdW5jdGlvbiAoY29udGVudFdpbmRv
dywgY29udGVudERvY3VtZW50KSB7Ci0gICAgICAgIHZhciBjbG9uaW5nID0gZmFsc2U7CisgICAg
ICAgIHZhciByZXR1cm5TcGFuID0gZmFsc2U7CiAgICAgICAgIGNsYXNzIE15Q3VzdG9tRWxlbWVu
dCBleHRlbmRzIGNvbnRlbnRXaW5kb3cuSFRNTEVsZW1lbnQgewogICAgICAgICAgICAgY29uc3Ry
dWN0b3IoKSB7CiAgICAgICAgICAgICAgICAgc3VwZXIoKTsKLSAgICAgICAgICAgICAgICBpZiAo
Y2xvbmluZykKKyAgICAgICAgICAgICAgICBpZiAocmV0dXJuU3BhbikKICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGNvbnRlbnREb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgY29udGVudFdpbmRvdy5jdXN0b21FbGVtZW50
cy5kZWZpbmUoJ215LWN1c3RvbS1lbGVtZW50JywgTXlDdXN0b21FbGVtZW50KTsKIAotICAgICAg
ICB2YXIgaW5zdGFuY2UgPSBjb250ZW50RG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbXktY3VzdG9t
LWVsZW1lbnQnKTsKLSAgICAgICAgY2xvbmluZyA9IHRydWU7Ci0gICAgICAgIGFzc2VydF90aHJv
d3MoeyduYW1lJzogJ0ludmFsaWRTdGF0ZUVycm9yJ30sIGZ1bmN0aW9uICgpIHsgaW5zdGFuY2Uu
Y2xvbmVOb2RlKGZhbHNlKTsgfSk7CisgICAgICAgIHZhciBpbnN0YW5jZSA9IG5ldyBNeUN1c3Rv
bUVsZW1lbnQoZmFsc2UpOworICAgICAgICByZXR1cm5TcGFuID0gdHJ1ZTsKKyAgICAgICAgdmFy
IHVuY2F1Z2h0RXJyb3I7CisgICAgICAgIGNvbnRlbnRXaW5kb3cub25lcnJvciA9IGZ1bmN0aW9u
IChtZXNzYWdlLCB1cmwsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgZXJyb3IpIHsgdW5jYXVn
aHRFcnJvciA9IGVycm9yOyByZXR1cm4gdHJ1ZTsgfQorICAgICAgICBpbnN0YW5jZS5jbG9uZU5v
ZGUoZmFsc2UpOworICAgICAgICBhc3NlcnRfZXF1YWxzKHVuY2F1Z2h0RXJyb3IubmFtZSwgJ0lu
dmFsaWRTdGF0ZUVycm9yJyk7CiAgICAgfSk7CiB9LCAnVXBncmFkaW5nIGEgY3VzdG9tIGVsZW1l
bnQgbXVzdCB0aHJvdyBJbnZhbGlkU3RhdGVFcnJvciB3aGVuIHRoZSBjdXN0b20gZWxlbWVudFwn
cyBjb25zdHJ1Y3RvciByZXR1cm5zIGFub3RoZXIgZWxlbWVudCcpOwogCkBAIC0xNzksOSArMTg4
LDEwIEBAIHRlc3QoZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAg
ICAgICAgdHJ5IHsKLSAgICAgICAgICAgIGNvbnRlbnRXaW5kb3cuY3VzdG9tRWxlbWVudHMuZGVm
aW5lKCdteS1jdXN0b20tZWxlbWVudCcsIE15Q3VzdG9tRWxlbWVudCk7Ci0gICAgICAgIH0gY2F0
Y2ggKGUpIHsgfQorICAgICAgICB2YXIgdW5jYXVnaHRFcnJvcjsKKyAgICAgICAgY29udGVudFdp
bmRvdy5vbmVycm9yID0gZnVuY3Rpb24gKG1lc3NhZ2UsIHVybCwgbGluZU51bWJlciwgY29sdW1u
TnVtYmVyLCBlcnJvcikgeyB1bmNhdWdodEVycm9yID0gZXJyb3I7IHJldHVybiB0cnVlOyB9Cisg
ICAgICAgIGNvbnRlbnRXaW5kb3cuY3VzdG9tRWxlbWVudHMuZGVmaW5lKCdteS1jdXN0b20tZWxl
bWVudCcsIE15Q3VzdG9tRWxlbWVudCk7CisgICAgICAgIGFzc2VydF9lcXVhbHModW5jYXVnaHRF
cnJvciwgJ2JhZCcpOwogCiAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMoY2FsbHMsIFtpbnN0
YW5jZV0pOwogICAgICAgICBjb250ZW50RG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChpbnN0YW5j
ZSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2N1c3RvbS1lbGVtZW50cy91cGdyYWRp
bmcvdXBncmFkaW5nLXBhcnNlci1jcmVhdGVkLWVsZW1lbnQuaHRtbCBiL0xheW91dFRlc3RzL2Zh
c3QvY3VzdG9tLWVsZW1lbnRzL3VwZ3JhZGluZy91cGdyYWRpbmctcGFyc2VyLWNyZWF0ZWQtZWxl
bWVudC5odG1sCmluZGV4IDQ0MjVmODdjMzU3YjUzMmFjMDNkZGIzYjdiYmFiY2U5OGJiOGI2MTcu
LmE4ODkxNjM2ZGZhNzEyYWZhNTM3Y2M1ZDdkOWJjY2RkOGM3NjkwOWIgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2Zhc3QvY3VzdG9tLWVsZW1lbnRzL3VwZ3JhZGluZy91cGdyYWRpbmctcGFyc2Vy
LWNyZWF0ZWQtZWxlbWVudC5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3VzdG9tLWVsZW1l
bnRzL3VwZ3JhZGluZy91cGdyYWRpbmctcGFyc2VyLWNyZWF0ZWQtZWxlbWVudC5odG1sCkBAIC0x
OCw2ICsxOCw4IEBACiA8bXktb3RoZXItZWxlbWVudCBpZD0ib3RoZXJJbnN0YW5jZSI+PC9teS1v
dGhlci1lbGVtZW50PgogPHNjcmlwdD4KIAorc2V0dXAoe2FsbG93X3VuY2F1Z2h0X2V4Y2VwdGlv
bjp0cnVlfSk7CisKIHRlc3QoZnVuY3Rpb24gKCkgewogICAgIGNsYXNzIE15Q3VzdG9tRWxlbWVu
dCBleHRlbmRzIEhUTUxFbGVtZW50IHsgfQogCkBAIC0zNSw3ICszNyw2IEBAIHRlc3QoZnVuY3Rp
b24gKCkgewogCiB9LCAnRWxlbWVudC5wcm90b3R5cGUuY3JlYXRlRWxlbWVudCBtdXN0IGFkZCBh
biB1bnJlc29sdmVkIGN1c3RvbSBlbGVtZW50IHRvIHRoZSB1cGdyYWRlIGNhbmRpZGF0ZXMgbWFw
Jyk7CiAKLQogdGVzdChmdW5jdGlvbiAoKSB7CiAgICAgY2xhc3MgSW5zdGFudGlhdGVzSXRzZWxm
QWZ0ZXJTdXBlciBleHRlbmRzIEhUTUxFbGVtZW50IHsKICAgICAgICAgY29uc3RydWN0b3IoZG9O
b3RDcmVhdGVJdHNlbGYpIHsKQEAgLTQ1LDkgKzQ2LDEwIEBAIHRlc3QoZnVuY3Rpb24gKCkgewog
ICAgICAgICB9CiAgICAgfQogCi0gICAgYXNzZXJ0X3Rocm93cyh7J25hbWUnOiAnSW52YWxpZFN0
YXRlRXJyb3InfSwgZnVuY3Rpb24gKCkgewotICAgICAgICBjdXN0b21FbGVtZW50cy5kZWZpbmUo
J2luc3RhbnRpYXRlcy1pdHNlbGYtYWZ0ZXItc3VwZXInLCBJbnN0YW50aWF0ZXNJdHNlbGZBZnRl
clN1cGVyKTsKLSAgICB9KTsKKyAgICB2YXIgdW5jYXVnaHRFcnJvcjsKKyAgICB3aW5kb3cub25l
cnJvciA9IGZ1bmN0aW9uIChtZXNzYWdlLCB1cmwsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwg
ZXJyb3IpIHsgdW5jYXVnaHRFcnJvciA9IGVycm9yOyByZXR1cm4gdHJ1ZTsgfQorICAgIGN1c3Rv
bUVsZW1lbnRzLmRlZmluZSgnaW5zdGFudGlhdGVzLWl0c2VsZi1hZnRlci1zdXBlcicsIEluc3Rh
bnRpYXRlc0l0c2VsZkFmdGVyU3VwZXIpOworICAgIGFzc2VydF9lcXVhbHModW5jYXVnaHRFcnJv
ci5uYW1lLCAnSW52YWxpZFN0YXRlRXJyb3InKTsKIH0sICdIVE1MRWxlbWVudCBjb25zdHJ1Y3Rv
ciBtdXN0IHRocm93IGFuIEludmFsaWRTdGF0ZUVycm9yIHdoZW4gdGhlIHRvcCBvZiB0aGUgY29u
c3RydWN0aW9uIHN0YWNrIGlzIG1hcmtlZCBBbHJlYWR5Q29uc3RydWN0ZWQnCiAgICAgKyAnIGR1
ZSB0byBhIGN1c3RvbSBlbGVtZW50IGNvbnN0cnVjdG9yIGNvbnN0cnVjdGluZyBpdHNlbGYgYWZ0
ZXIgc3VwZXIoKSBjYWxsJyk7CiAKQEAgLTYwLDkgKzYyLDEwIEBAIHRlc3QoZnVuY3Rpb24gKCkg
ewogICAgICAgICB9CiAgICAgfQogCi0gICAgYXNzZXJ0X3Rocm93cyh7J25hbWUnOiAnSW52YWxp
ZFN0YXRlRXJyb3InfSwgZnVuY3Rpb24gKCkgewotICAgICAgICBjdXN0b21FbGVtZW50cy5kZWZp
bmUoJ2luc3RhbnRpYXRlcy1pdHNlbGYtYmVmb3JlLXN1cGVyJywgSW5zdGFudGlhdGVzSXRzZWxm
QmVmb3JlU3VwZXIpOwotICAgIH0pOworICAgIHZhciB1bmNhdWdodEVycm9yOworICAgIHdpbmRv
dy5vbmVycm9yID0gZnVuY3Rpb24gKG1lc3NhZ2UsIHVybCwgbGluZU51bWJlciwgY29sdW1uTnVt
YmVyLCBlcnJvcikgeyB1bmNhdWdodEVycm9yID0gZXJyb3I7IHJldHVybiB0cnVlOyB9CisgICAg
Y3VzdG9tRWxlbWVudHMuZGVmaW5lKCdpbnN0YW50aWF0ZXMtaXRzZWxmLWJlZm9yZS1zdXBlcics
IEluc3RhbnRpYXRlc0l0c2VsZkJlZm9yZVN1cGVyKTsKKyAgICBhc3NlcnRfZXF1YWxzKHVuY2F1
Z2h0RXJyb3IubmFtZSwgJ0ludmFsaWRTdGF0ZUVycm9yJyk7CiB9LCAnSFRNTEVsZW1lbnQgY29u
c3RydWN0b3IgbXVzdCB0aHJvdyBhbiBJbnZhbGlkU3RhdGVFcnJvciB3aGVuIHRoZSB0b3Agb2Yg
dGhlIGNvbnN0cnVjdGlvbiBzdGFjayBpcyBtYXJrZWQgQWxyZWFkeUNvbnN0cnVjdGVkJwogICAg
ICsgJyBkdWUgdG8gYSBjdXN0b20gZWxlbWVudCBjb25zdHJ1Y3RvciBjb25zdHJ1Y3RpbmcgaXRz
ZWxmIGJlZm9yZSBzdXBlcigpIGNhbGwnKTsKIApAQCAtODAsMTIgKzgzLDE0IEBAIHRlc3QoZnVu
Y3Rpb24gKCkgewogICAgIGFzc2VydF9mYWxzZShpbnN0YW5jZSBpbnN0YW5jZW9mIE15T3RoZXJF
bGVtZW50KTsKICAgICBhc3NlcnRfZmFsc2Uob3RoZXJJbnN0YW5jZSBpbnN0YW5jZW9mIE15T3Ro
ZXJFbGVtZW50KTsKIAotICAgIGFzc2VydF90aHJvd3MoeyduYW1lJzogJ0ludmFsaWRTdGF0ZUVy
cm9yJ30sIGZ1bmN0aW9uICgpIHsKLSAgICAgICAgY3VzdG9tRWxlbWVudHMuZGVmaW5lKCdteS1v
dGhlci1lbGVtZW50JywgTXlPdGhlckVsZW1lbnQpOwotICAgIH0pOworICAgIHZhciB1bmNhdWdo
dEVycm9yOworICAgIHdpbmRvdy5vbmVycm9yID0gZnVuY3Rpb24gKG1lc3NhZ2UsIHVybCwgbGlu
ZU51bWJlciwgY29sdW1uTnVtYmVyLCBlcnJvcikgeyB1bmNhdWdodEVycm9yID0gZXJyb3I7IHJl
dHVybiB0cnVlOyB9CisgICAgY3VzdG9tRWxlbWVudHMuZGVmaW5lKCdteS1vdGhlci1lbGVtZW50
JywgTXlPdGhlckVsZW1lbnQpOworICAgIGFzc2VydF9lcXVhbHModW5jYXVnaHRFcnJvci5uYW1l
LCAnSW52YWxpZFN0YXRlRXJyb3InKTsKIAogICAgIGFzc2VydF90cnVlKGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoJ215LW90aGVyLWVsZW1lbnQnKSBpbnN0YW5jZW9mIE15T3RoZXJFbGVtZW50LAog
ICAgICAgICAnVXBncmFkaW5nIG9mIGN1c3RvbSBlbGVtZW50cyBtdXN0IGhhcHBlbiBhZnRlciB0
aGUgZGVmaW5pdGlvbiB3YXMgYWRkZWQgdG8gdGhlIHJlZ2lzdHJ5LicpOworCiB9LCAnVXBncmFk
aW5nIGEgY3VzdG9tIGVsZW1lbnQgbXVzdCB0aHJvdyBhbiBJbnZhbGlkU3RhdGVFcnJvciB3aGVu
IHRoZSByZXR1cm5lZCBlbGVtZW50IGlzIG5vdCBTYW1lVmFsdWUgYXMgdGhlIHVwZ3JhZGVkIGVs
ZW1lbnQnKTsKIAogPC9zY3JpcHQ+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>290872</attachid>
            <date>2016-10-06 17:15:06 -0700</date>
            <delta_ts>2016-10-06 17:49:01 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-162996-20161006171155.patch</filename>
            <type>text/plain</type>
            <size>47766</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA2ODc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzgzMmUyMTlkOTQ4ZDc4
ZjAxYzJhNzJmNWMxODljZTJiYWQxZmUwYS4uMjgwYjcyYTMwZDZkNWM1YWJiNDhmNDdjNjYzMGMw
OTg0YTUyYzI5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDE2LTEwLTA1ICBSeW9z
dWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFVwZ3JhZGluZyBhbmQgY29u
c3RydWN0aW5nIGVsZW1lbnQgc2hvdWxkIGFsd2F5cyByZXBvcnQgZXhjZXB0aW9uIGluc3RlYWQg
b2YgcmV0aHJvd2luZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTYyOTk2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAg
ICAgVGhlIGxhdGVzdCBIVE1MIHNwZWNpZmljYXRpb24gc3BlY2lmaWVzIHRoYXQgd2UgbXVzdCBy
ZXBvcnQgZXhjZXB0aW9ucyB0aHJvd24gZHVyaW5nIGVsZW1lbnQgdXBncmFkZXM6CisgICAgICAg
IGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvI3VwZ3JhZGVzCisKKyAgICAgICAgSW4gYWRk
aXRpb24sIEYyRiBkdXJpbmcgMjAxNiBUUEFDIGhhZCBhIGNvbnNlbnN1cyB0aGF0IHdlIHNob3Vs
ZCBkbyB0aGUgc2FtZSBmb3IgZG9jdW1lbnQuY3JlYXRlRWxlbWVudDoKKyAgICAgICAgaHR0cHM6
Ly9naXRodWIuY29tL3czYy93ZWJjb21wb25lbnRzL2lzc3Vlcy81NjkKKworICAgICAgICBTaW5j
ZSB0aGUgSFRNTCBwYXJzZXIgYWxyZWFkeSByZXBvcnRzIHRoZSBleGNlcHRpb24gdGhyb3duIGR1
cmluZyBjdXN0b20gZWxlbWVudCBjb25zdHJ1Y3Rpb24gYXMgaXQgZG9lcworICAgICAgICBub3Qg
aGF2ZSBhbnkgSlMgc3RhY2ssIHRoZXNlIGNoYW5nZXMgbWFrZSBleGNlcHRpb25zIHRocm93biBk
dXJpbmcgdXBncmFkZXMgYW5kIGNvbnN0cnVjdGlvbnMuCisKKyAgICAgICAgSW4gb3VyIGltcGxl
bWVudGF0aW9uLCB0aGlzIG9ubHkgcmVkdWNlcyB0aGUgY29kZSBjb21wbGV4aXR5IGFzIG5vdyB3
ZSBjYW4gcHVzaCB0aGUgbG9naWMgdG8gZmFsbGJhY2sKKyAgICAgICAgdG8gSFRNTFVua25vd25F
bGVtZW50IGludG8gSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlJ3MgY29uc3RydWN0RWxlbWVudCwg
d2hpY2ggaGFzIGJlZW4gcmVuYW1lZAorICAgICAgICB0byBjb25zdHJ1Y3RFbGVtZW50V2l0aEZh
bGxiYWNrLCBhbmQgZWxpbWluYXRlIFNob3VsZENsZWFyRXhjZXB0aW9uIGVudW0gY2xhc3MgZW50
aXJlbHkuIE1vcmVvdmVyLAorICAgICAgICBjb25zdHJ1Y3RFbGVtZW50V2l0aEZhbGxiYWNrIGNh
biBub3cgcmV0dXJuIFJlZiBpbnN0ZWFkIG9mIFJlZlB0ci4KKworICAgICAgICBObyBuZXcgdGVz
dHMuIEV4aXN0aW5nIHRlc3RzIGhhdmUgYmVlbiB1cGRhdGVkLgorCisgICAgICAgICogYmluZGlu
Z3MvanMvSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpT
Q3VzdG9tRWxlbWVudEludGVyZmFjZTo6Y29uc3RydWN0RWxlbWVudFdpdGhGYWxsYmFjayk6IENy
ZWF0ZSBhIEhUTUxVbmtub3duRWxlbWVudCBpZgorICAgICAgICBhbiBhdHRlbXB0IHRvIGNvbnN0
cnVjdCBhIGN1c3RvbSBlbGVtZW50IGhhZCBmYWlsZWQgaW4gbGlldSBvZiByZXR1cm5pbmcgbnVs
bHB0ci4KKyAgICAgICAgKFdlYkNvcmU6OkpTQ3VzdG9tRWxlbWVudEludGVyZmFjZTo6dHJ5VG9D
b25zdHJ1Y3RDdXN0b21FbGVtZW50KTogUmVuYW1lZCBmcm9tIGNvbnN0cnVjdEVsZW1lbnQuCisg
ICAgICAgIEFsd2F5cyByZXBvcnQgZXhjZXB0aW9ucyAodGhlIHNhbWUgYmVoYXZpb3IgYXMgU2hv
dWxkQ2xlYXJFeGNlcHRpb246OkNsZWFyKS4KKyAgICAgICAgKFdlYkNvcmU6OkpTQ3VzdG9tRWxl
bWVudEludGVyZmFjZTo6dXBncmFkZUVsZW1lbnQpOiBSZXBvcnQgZXhjZXB0aW9ucyBpbnN0ZWFk
IG9mIHJldGhyb3dpbmcuCisgICAgICAgICogYmluZGluZ3MvanMvSlNDdXN0b21FbGVtZW50SW50
ZXJmYWNlLmg6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmNyZWF0ZUhUTUxFbGVtZW50V2l0aE5hbWVWYWxpZGF0aW9uKToKKyAgICAgICAgKiBodG1sL3Bh
cnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTERvY3Vt
ZW50UGFyc2VyOjpydW5TY3JpcHRzRm9yUGF1c2VkVHJlZUJ1aWxkZXIpOgorCiAyMDE2LTEwLTA2
ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3
ZWQgYnVpbGQgZml4LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlND
dXN0b21FbGVtZW50SW50ZXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
Q3VzdG9tRWxlbWVudEludGVyZmFjZS5jcHAKaW5kZXggNTk5MDMxMmI1ZTI4MTdmMmVmYzA0NTcy
MzFiOThiNjY2NGVjNjZmNC4uM2Q2ODUzOGY0ZmQyY2UxYzYzOWU0MWFlOTg3OTkxYmViNWI1MzQ3
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21FbGVtZW50
SW50ZXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbUVs
ZW1lbnRJbnRlcmZhY2UuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaWYgRU5BQkxFKENVU1RPTV9F
TEVNRU5UUykKIAogI2luY2x1ZGUgIkRPTVdyYXBwZXJXb3JsZC5oIgorI2luY2x1ZGUgIkhUTUxV
bmtub3duRWxlbWVudC5oIgogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgogI2luY2x1ZGUgIkpT
RE9NR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNFbGVtZW50LmgiCkBAIC01OSw3ICs2MCwx
OSBAQCBKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2U6On5KU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2Uo
KQogCiBzdGF0aWMgUmVmUHRyPEVsZW1lbnQ+IGNvbnN0cnVjdEN1c3RvbUVsZW1lbnRTeW5jaHJv
bm91c2x5KERvY3VtZW50JiwgVk0mLCBFeGVjU3RhdGUmLCBKU09iamVjdCogY29uc3RydWN0b3Is
IGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxOYW1lKTsKIAotUmVmUHRyPEVsZW1lbnQ+IEpTQ3Vz
dG9tRWxlbWVudEludGVyZmFjZTo6Y29uc3RydWN0RWxlbWVudChjb25zdCBBdG9taWNTdHJpbmcm
IGxvY2FsTmFtZSwgU2hvdWxkQ2xlYXJFeGNlcHRpb24gc2hvdWxkQ2xlYXJFeGNlcHRpb24pCitS
ZWY8RWxlbWVudD4gSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlOjpjb25zdHJ1Y3RFbGVtZW50V2l0
aEZhbGxiYWNrKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbE5h
bWUpCit7CisgICAgaWYgKGF1dG8gZWxlbWVudCA9IHRyeVRvQ29uc3RydWN0Q3VzdG9tRWxlbWVu
dChkb2N1bWVudCwgbG9jYWxOYW1lKSkKKyAgICAgICAgcmV0dXJuIGVsZW1lbnQucmVsZWFzZU5v
bk51bGwoKTsKKworICAgIGF1dG8gZWxlbWVudCA9IEhUTUxVbmtub3duRWxlbWVudDo6Y3JlYXRl
KFF1YWxpZmllZE5hbWUobnVsbEF0b20sIGxvY2FsTmFtZSwgSFRNTE5hbWVzOjp4aHRtbE5hbWVz
cGFjZVVSSSksIGRvY3VtZW50KTsKKyAgICBlbGVtZW50LT5zZXRJc0N1c3RvbUVsZW1lbnRVcGdy
YWRlQ2FuZGlkYXRlKCk7CisgICAgZWxlbWVudC0+c2V0SXNGYWlsZWRDdXN0b21FbGVtZW50KCp0
aGlzKTsKKworICAgIHJldHVybiBlbGVtZW50LmdldCgpOworfQorCitSZWZQdHI8RWxlbWVudD4g
SlNDdXN0b21FbGVtZW50SW50ZXJmYWNlOjp0cnlUb0NvbnN0cnVjdEN1c3RvbUVsZW1lbnQoRG9j
dW1lbnQmIGRvY3VtZW50LCBjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsTmFtZSkKIHsKICAgICBp
ZiAoIWNhbkludm9rZUNhbGxiYWNrKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNzMs
MjAgKzg2LDE0IEBAIFJlZlB0cjxFbGVtZW50PiBKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2U6OmNv
bnN0cnVjdEVsZW1lbnQoY29uc3QgQXRvbWljU3RyaW5nJiBsCiAgICAgaWYgKCFtX2NvbnN0cnVj
dG9yKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgaWYgKCFjb250ZXh0
KQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBBU1NFUlQoY29udGV4dC0+aXNEb2N1bWVu
dCgpKTsKLQotICAgIGF1dG8mIHN0YXRlID0gKmNvbnRleHQtPmV4ZWNTdGF0ZSgpOwotICAgIFJl
ZlB0cjxFbGVtZW50PiBlbGVtZW50ID0gY29uc3RydWN0Q3VzdG9tRWxlbWVudFN5bmNocm9ub3Vz
bHkoZG93bmNhc3Q8RG9jdW1lbnQ+KCpjb250ZXh0KSwgdm0sIHN0YXRlLCBtX2NvbnN0cnVjdG9y
LmdldCgpLCBsb2NhbE5hbWUpOworICAgIEFTU0VSVCgmZG9jdW1lbnQgPT0gc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpKTsKKyAgICBhdXRvJiBzdGF0ZSA9ICpkb2N1bWVudC5leGVjU3RhdGUoKTsK
KyAgICBhdXRvIGVsZW1lbnQgPSBjb25zdHJ1Y3RDdXN0b21FbGVtZW50U3luY2hyb25vdXNseShk
b2N1bWVudCwgdm0sIHN0YXRlLCBtX2NvbnN0cnVjdG9yLmdldCgpLCBsb2NhbE5hbWUpOwogICAg
IEFTU0VSVCghIXNjb3BlLmV4Y2VwdGlvbigpID09ICFlbGVtZW50KTsKICAgICBpZiAoIWVsZW1l
bnQpIHsKLSAgICAgICAgaWYgKHNob3VsZENsZWFyRXhjZXB0aW9uID09IFNob3VsZENsZWFyRXhj
ZXB0aW9uOjpDbGVhcikgewotICAgICAgICAgICAgYXV0byogZXhjZXB0aW9uID0gc2NvcGUuZXhj
ZXB0aW9uKCk7Ci0gICAgICAgICAgICBzY29wZS5jbGVhckV4Y2VwdGlvbigpOwotICAgICAgICAg
ICAgcmVwb3J0RXhjZXB0aW9uKCZzdGF0ZSwgZXhjZXB0aW9uKTsKLSAgICAgICAgfQorICAgICAg
ICBhdXRvKiBleGNlcHRpb24gPSBzY29wZS5leGNlcHRpb24oKTsKKyAgICAgICAgc2NvcGUuY2xl
YXJFeGNlcHRpb24oKTsKKyAgICAgICAgcmVwb3J0RXhjZXB0aW9uKCZzdGF0ZSwgZXhjZXB0aW9u
KTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC0xODYsMTMgKzE5MywxNCBA
QCB2b2lkIEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZTo6dXBncmFkZUVsZW1lbnQoRWxlbWVudCYg
ZWxlbWVudCkKIAogICAgIGlmIChVTkxJS0VMWShzY29wZS5leGNlcHRpb24oKSkpIHsKICAgICAg
ICAgZWxlbWVudC5zZXRJc0ZhaWxlZEN1c3RvbUVsZW1lbnQoKnRoaXMpOworICAgICAgICByZXBv
cnRFeGNlcHRpb24oc3RhdGUsIHNjb3BlLmV4Y2VwdGlvbigpKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAogICAgIEVsZW1lbnQqIHdyYXBwZWRFbGVtZW50ID0gSlNFbGVtZW50Ojp0b1dyYXBw
ZWQocmV0dXJuZWRFbGVtZW50KTsKICAgICBpZiAoIXdyYXBwZWRFbGVtZW50IHx8IHdyYXBwZWRF
bGVtZW50ICE9ICZlbGVtZW50KSB7CiAgICAgICAgIGVsZW1lbnQuc2V0SXNGYWlsZWRDdXN0b21F
bGVtZW50KCp0aGlzKTsKLSAgICAgICAgdGhyb3dJbnZhbGlkU3RhdGVFcnJvcigqc3RhdGUsIHNj
b3BlLCAiQ3VzdG9tIGVsZW1lbnQgY29uc3RydWN0b3IgZmFpbGVkIHRvIHVwZ3JhZGUgYW4gZWxl
bWVudCIpOworICAgICAgICByZXBvcnRFeGNlcHRpb24oc3RhdGUsIGNyZWF0ZURPTUV4Y2VwdGlv
bihzdGF0ZSwgSU5WQUxJRF9TVEFURV9FUlIsICJDdXN0b20gZWxlbWVudCBjb25zdHJ1Y3RvciBm
YWlsZWQgdG8gdXBncmFkZSBhbiBlbGVtZW50IikpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
ICAgIGVsZW1lbnQuc2V0SXNEZWZpbmVkQ3VzdG9tRWxlbWVudCgqdGhpcyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UuaCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudEludGVyZmFjZS5oCmlu
ZGV4IGU2ODExYTQzODg2MDMyMmI4ZThlNTcyMzQ0MjY2ODY1MzA1YWRjZDAuLjgzOTU1ZmY4NDFl
NjA3NDg5NzExNjE4NDI1MTI4MDY1MGRlMDlmMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudEludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudEludGVyZmFjZS5oCkBAIC02Myw4ICs2Myw3
IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSlNDdXN0b21FbGVtZW50
SW50ZXJmYWNlKG5hbWUsIGNhbGxiYWNrLCBnbG9iYWxPYmplY3QpKTsKICAgICB9CiAKLSAgICBl
bnVtIGNsYXNzIFNob3VsZENsZWFyRXhjZXB0aW9uIHsgQ2xlYXIsIERvTm90Q2xlYXIgfTsKLSAg
ICBSZWZQdHI8RWxlbWVudD4gY29uc3RydWN0RWxlbWVudChjb25zdCBBdG9taWNTdHJpbmcmLCBT
aG91bGRDbGVhckV4Y2VwdGlvbik7CisgICAgUmVmPEVsZW1lbnQ+IGNvbnN0cnVjdEVsZW1lbnRX
aXRoRmFsbGJhY2soRG9jdW1lbnQmLCBjb25zdCBBdG9taWNTdHJpbmcmKTsKIAogICAgIHZvaWQg
dXBncmFkZUVsZW1lbnQoRWxlbWVudCYpOwogCkBAIC05OCw2ICs5Nyw4IEBAIHB1YmxpYzoKIHBy
aXZhdGU6CiAgICAgSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlKGNvbnN0IFF1YWxpZmllZE5hbWUm
LCBKU0M6OkpTT2JqZWN0KiBjYWxsYmFjaywgSlNET01HbG9iYWxPYmplY3QqKTsKIAorICAgIFJl
ZlB0cjxFbGVtZW50PiB0cnlUb0NvbnN0cnVjdEN1c3RvbUVsZW1lbnQoRG9jdW1lbnQmLCBjb25z
dCBBdG9taWNTdHJpbmcmKTsKKwogICAgIHZvaWQgaW52b2tlQ2FsbGJhY2soRWxlbWVudCYsIEpT
Qzo6SlNPYmplY3QqIGNhbGxiYWNrLCBjb25zdCBXVEY6OkZ1bmN0aW9uPHZvaWQoSlNDOjpFeGVj
U3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCosIEpTQzo6TWFya2VkQXJndW1lbnRCdWZmZXImKT4m
IGFkZEFyZ3VtZW50cyA9IHsgfSk7CiAKICAgICBRdWFsaWZpZWROYW1lIG1fbmFtZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCmluZGV4IGMxY2NkYzAyYWVhYjlkMGEwMTdjMDRkMzZlMWMyYjA1ODQ5
MjczMzAuLmJmMzgwZTc0MDIxZDhlNzhjODcwZjU5NzExMTdiNDE4YzQzZTkxYmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcApAQCAtODkzLDcgKzg5Myw3IEBAIHN0YXRpYyBSZWZQdHI8RWxlbWVu
dD4gY3JlYXRlSFRNTEVsZW1lbnRXaXRoTmFtZVZhbGlkYXRpb24oRG9jdW1lbnQmIGRvY3VtZW50
LCBjCiAgICAgICAgIGF1dG8qIHJlZ2lzdHJ5ID0gd2luZG93LT5jdXN0b21FbGVtZW50UmVnaXN0
cnkoKTsKICAgICAgICAgaWYgKFVOTElLRUxZKHJlZ2lzdHJ5KSkgewogICAgICAgICAgICAgaWYg
KGF1dG8qIGVsZW1lbnRJbnRlcmZhY2UgPSByZWdpc3RyeS0+ZmluZEludGVyZmFjZShsb2NhbE5h
bWUpKQotICAgICAgICAgICAgICAgIHJldHVybiBlbGVtZW50SW50ZXJmYWNlLT5jb25zdHJ1Y3RF
bGVtZW50KGxvY2FsTmFtZSwgSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlOjpTaG91bGRDbGVhckV4
Y2VwdGlvbjo6RG9Ob3RDbGVhcik7CisgICAgICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnRJbnRl
cmZhY2UtPmNvbnN0cnVjdEVsZW1lbnRXaXRoRmFsbGJhY2soZG9jdW1lbnQsIGxvY2FsTmFtZSk7
CiAgICAgICAgIH0KICAgICB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwCmluZGV4IDZhNjY5ZGJmY2U3Mjk4NDJhMzUyMTBk
NGRhY2JlNjg1NzQ2ZDI4OWUuLjU5NDBlMDY3NWU3MGRjNTU5OGQwNzdkZTM0ZTcxMzhiOGEwYmRh
OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBh
cnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFy
c2VyLmNwcApAQCAtMTk3LDE1ICsxOTcsOCBAQCB2b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6cnVu
U2NyaXB0c0ZvclBhdXNlZFRyZWVCdWlsZGVyKCkKIAogICAgICAgICAvLyBodHRwczovL2h0bWwu
c3BlYy53aGF0d2cub3JnLyNjcmVhdGUtYW4tZWxlbWVudC1mb3ItdGhlLXRva2VuCiAgICAgICAg
IGF1dG8mIGVsZW1lbnRJbnRlcmZhY2UgPSBjb25zdHJ1Y3Rpb25EYXRhLT5lbGVtZW50SW50ZXJm
YWNlLmdldCgpOwotICAgICAgICBSZWZQdHI8RWxlbWVudD4gbmV3RWxlbWVudCA9IGVsZW1lbnRJ
bnRlcmZhY2UuY29uc3RydWN0RWxlbWVudChjb25zdHJ1Y3Rpb25EYXRhLT5uYW1lLCBKU0N1c3Rv
bUVsZW1lbnRJbnRlcmZhY2U6OlNob3VsZENsZWFyRXhjZXB0aW9uOjpDbGVhcik7Ci0gICAgICAg
IGlmICghbmV3RWxlbWVudCkgewotICAgICAgICAgICAgQVNTRVJUKCFtX3RyZWVCdWlsZGVyLT5p
c1BhcnNpbmdUZW1wbGF0ZUNvbnRlbnRzKCkpOwotICAgICAgICAgICAgbmV3RWxlbWVudCA9IEhU
TUxVbmtub3duRWxlbWVudDo6Y3JlYXRlKFF1YWxpZmllZE5hbWUobnVsbEF0b20sIGNvbnN0cnVj
dGlvbkRhdGEtPm5hbWUsIHhodG1sTmFtZXNwYWNlVVJJKSwgKmRvY3VtZW50KCkpOwotICAgICAg
ICAgICAgbmV3RWxlbWVudC0+c2V0SXNDdXN0b21FbGVtZW50VXBncmFkZUNhbmRpZGF0ZSgpOwot
ICAgICAgICAgICAgbmV3RWxlbWVudC0+c2V0SXNGYWlsZWRDdXN0b21FbGVtZW50KGVsZW1lbnRJ
bnRlcmZhY2UpOwotICAgICAgICB9Ci0KLSAgICAgICAgbV90cmVlQnVpbGRlci0+ZGlkQ3JlYXRl
Q3VzdG9tT3JDYWxsYmFja0VsZW1lbnQobmV3RWxlbWVudC5yZWxlYXNlTm9uTnVsbCgpLCAqY29u
c3RydWN0aW9uRGF0YSk7CisgICAgICAgIGF1dG8gbmV3RWxlbWVudCA9IGVsZW1lbnRJbnRlcmZh
Y2UuY29uc3RydWN0RWxlbWVudFdpdGhGYWxsYmFjaygqZG9jdW1lbnQoKSwgY29uc3RydWN0aW9u
RGF0YS0+bmFtZSk7CisgICAgICAgIG1fdHJlZUJ1aWxkZXItPmRpZENyZWF0ZUN1c3RvbU9yQ2Fs
bGJhY2tFbGVtZW50KFdURk1vdmUobmV3RWxlbWVudCksICpjb25zdHJ1Y3Rpb25EYXRhKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGFlMTY4MWI5YzExZWU0ZWJhNzQ0
MmQ1ZDgxN2U4NDk5NjFiODE3OTEuLmFiZWI3YTYwYzcwNjQ3NGRiN2Y0Y2Q0ZDQ5MDlkNGI5ZWEw
ZDVjMmQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxNi0xMC0wNiAgUnlvc3VrZSBOaXdhICA8
cm5pd2FAd2Via2l0Lm9yZz4KKworICAgICAgICBVcGdyYWRpbmcgYW5kIGNvbnN0cnVjdGluZyBl
bGVtZW50IHNob3VsZCBhbHdheXMgcmVwb3J0IGV4Y2VwdGlvbiBpbnN0ZWFkIG9mIHJldGhyb3dp
bmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2Mjk5
NgorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIFVwZGF0ZWQg
dGhlIHRlc3RzIHRvIGV4cGVjdCBleGNlcHRpb25zIHRocm93biBkdXJpbmcgY3VzdG9tIGVsZW1l
bnQgY29uc3RydWN0aW9ucyBhcmUgYWx3YXlzIHJlcG9ydGVkLgorCisgICAgICAgICogZmFzdC9j
dXN0b20tZWxlbWVudHMvRG9jdW1lbnQtY3JlYXRlRWxlbWVudC1leHBlY3RlZC50eHQ6CisgICAg
ICAgICogZmFzdC9jdXN0b20tZWxlbWVudHMvRG9jdW1lbnQtY3JlYXRlRWxlbWVudC5odG1sOgor
ICAgICAgICAqIGZhc3QvY3VzdG9tLWVsZW1lbnRzL2RlZmluZWQtcHNldWRvLWNsYXNzLWV4cGVj
dGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2N1c3RvbS1lbGVtZW50cy9kZWZpbmVkLXBzZXVkby1j
bGFzcy5odG1sOgorICAgICAgICAqIGZhc3QvY3VzdG9tLWVsZW1lbnRzL3VwZ3JhZGluZy9Ob2Rl
LWNsb25lTm9kZS5odG1sOgorICAgICAgICAqIGZhc3QvY3VzdG9tLWVsZW1lbnRzL3VwZ3JhZGlu
Zy91cGdyYWRpbmctcGFyc2VyLWNyZWF0ZWQtZWxlbWVudC5odG1sOgorCiAyMDE2LTEwLTA2ICBB
ZGFtIEJlcmdrdmlzdCAgPGFkYW0uYmVyZ2t2aXN0QGVyaWNzc29uLmNvbT4KIAogICAgICAgICBX
ZWJSVEM6IEFkZCBzdXBwb3J0IGZvciB0aGUgaWNlY29ubmVjdGlvbnN0YXRlY2hhbmdlIGV2ZW50
IGluIE1lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9jdXN0b20tZWxlbWVudHMvRG9jdW1lbnQtY3JlYXRlRWxlbWVudC1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9mYXN0L2N1c3RvbS1lbGVtZW50cy9Eb2N1bWVudC1jcmVhdGVFbGVtZW50
LWV4cGVjdGVkLnR4dAppbmRleCAxZGVlNTE4MGVkZTBiNzVjMWE2ZWJjZGU1ZGQyYTNhMzM5N2M5
ODU1Li5mNDE3ZWRhYzc3YTA5NzU4MzMxMWQxMDg2ZmQzMzc5ZjRmMjhkZmZkIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9mYXN0L2N1c3RvbS1lbGVtZW50cy9Eb2N1bWVudC1jcmVhdGVFbGVtZW50
LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2N1c3RvbS1lbGVtZW50cy9Eb2N1
bWVudC1jcmVhdGVFbGVtZW50LWV4cGVjdGVkLnR4dApAQCAtMSwzNyArMSwzNyBAQAogCiBQQVNT
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQgbXVzdCBjcmVhdGUgYW4gaW5zdGFuY2Ugb2YgY3VzdG9t
IGVsZW1lbnRzIAotUEFTUyBkb2N1bWVudC5jcmVhdGVFbGVtZW50IG11c3QgdGhyb3cgYSBUeXBl
RXJyb3Igd2hlbiB0aGUgcmVzdWx0IG9mIENvbnN0cnVjdCBpcyBub3QgYSBET00gbm9kZSAKLVBB
U1MgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCBtdXN0IHRocm93IGEgVHlwZUVycm9yIHdoZW4gdGhl
IHJlc3VsdCBvZiBDb25zdHJ1Y3QgaXMgYSBUZXh0Tm9kZSAKLVBBU1MgZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCBtdXN0IHRocm93IGEgTm90U3VwcG9ydGVkRXJyb3Igd2hlbiBhdHRyaWJ1dGUgaXMg
YWRkZWQgYnkgc2V0QXR0cmlidXRlIGR1cmluZyBjb25zdHJ1Y3Rpb24gCi1QQVNTIGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQgbXVzdCB0aHJvdyBhIE5vdFN1cHBvcnRlZEVycm9yIHdoZW4gYXR0cmli
dXRlIGlzIGFkZGVkIGJ5IGF0dHJpYnV0ZXMuc2V0TmFtZWRJdGVtIGR1cmluZyBjb25zdHJ1Y3Rp
b24gCi1QQVNTIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQgbXVzdCBub3QgdGhyb3cgYSBOb3RTdXBw
b3J0ZWRFcnJvciB3aGVuIGF0dHJpYnV0ZSBpcyBhZGRlZCBhbmQgcmVtb3ZlZCBkdXJpbmcgY29u
c3RydWN0aW9uIAotUEFTUyBkb2N1bWVudC5jcmVhdGVFbGVtZW50IG11c3QgdGhyb3cgYSBOb3RT
dXBwb3J0ZWRFcnJvciB3aGVuIGEgVGV4dCBjaGlsZCBpcyBhZGRlZCBkdXJpbmcgY29uc3RydWN0
aW9uIAotUEFTUyBkb2N1bWVudC5jcmVhdGVFbGVtZW50IG11c3QgdGhyb3cgYSBOb3RTdXBwb3J0
ZWRFcnJvciB3aGVuIGEgQ29tbWVudCBjaGlsZCBpcyBhZGRlZCBkdXJpbmcgY29uc3RydWN0aW9u
IAotUEFTUyBkb2N1bWVudC5jcmVhdGVFbGVtZW50IG11c3QgdGhyb3cgYSBOb3RTdXBwb3J0ZWRF
cnJvciB3aGVuIGFuIGVsZW1lbnQgY2hpbGQgaXMgYWRkZWQgZHVyaW5nIGNvbnN0cnVjdGlvbiAK
LVBBU1MgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCBtdXN0IG5vdCB0aHJvdyBhIE5vdFN1cHBvcnRl
ZEVycm9yIHdoZW4gYW4gZWxlbWVudCBjaGlsZCBpcyBhZGRlZCBhbmQgcmVtb3ZlZCBkdXJpbmcg
Y29uc3RydWN0aW9uIAotUEFTUyBkb2N1bWVudC5jcmVhdGVFbGVtZW50IG11c3QgdGhyb3cgYSBO
b3RTdXBwb3J0ZWRFcnJvciB3aGVuIHRoZSBlbGVtZW50IGdldHMgaW5zZXJ0ZWQgaW50byBhbm90
aGVyIGVsZW1lbnQgZHVyaW5nIGNvbnN0cnVjdGlvbiAKLVBBU1MgZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCBtdXN0IG5vdCB0aHJvdyBhIE5vdFN1cHBvcnRlZEVycm9yIHdoZW4gdGhlIGVsZW1lbnQg
aXMgaW5zZXJ0ZWQgYW5kIHJlbW92ZWQgZnJvbSBhbm90aGVyIGVsZW1lbnQgZHVyaW5nIGNvbnN0
cnVjdGlvbiAKLVBBU1MgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCBtdXN0IHRocm93IGEgTm90U3Vw
cG9ydGVkRXJyb3Igd2hlbiB0aGUgZWxlbWVudCBpcyBhZG9wdGVkIGludG8gYSBkb2N1bWVudCBv
ZiBhIHRlbXBsYXRlIGVsZW1lbnQgZHVyaW5nIGNvbnN0cnVjdGlvbiAKLVBBU1MgZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCBtdXN0IHRocm93IGEgTm90U3VwcG9ydGVkRXJyb3Igd2hlbiB0aGUgZWxl
bWVudCBpcyBpbnNlcnRlZCBpbnRvIGEgZG9jdW1lbnQgb2YgYSB0ZW1wbGF0ZSBlbGVtZW50IGR1
cmluZyBjb25zdHJ1Y3Rpb24gCi1QQVNTIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQgbXVzdCBub3Qg
dGhyb3cgYSBOb3RTdXBwb3J0ZWRFcnJvciB3aGVuIHRoZSBlbGVtZW50IGlzIGFkb3B0ZWQgYmFj
ayBmcm9tIGEgZG9jdW1lbnQgb2YgYSB0ZW1wbGF0ZSBlbGVtZW50IGR1cmluZyBjb25zdHJ1Y3Rp
b24gCi1QQVNTIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQgbXVzdCB0aHJvdyBhIE5vdFN1cHBvcnRl
ZEVycm9yIHdoZW4gdGhlIGVsZW1lbnQgaXMgYWRvcHRlZCBpbnRvIGEgbmV3IGRvY3VtZW50IGR1
cmluZyBjb25zdHJ1Y3Rpb24gCi1QQVNTIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQgbXVzdCB0aHJv
dyBhIE5vdFN1cHBvcnRlZEVycm9yIHdoZW4gdGhlIGVsZW1lbnQgaXMgaW5zZXJ0ZWQgaW50byBh
IG5ldyBkb2N1bWVudCBkdXJpbmcgY29uc3RydWN0aW9uIAotUEFTUyBkb2N1bWVudC5jcmVhdGVF
bGVtZW50IG11c3Qgbm90IHRocm93IGEgTm90U3VwcG9ydGVkRXJyb3Igd2hlbiB0aGUgZWxlbWVu
dCBpcyBhZG9wdGVkIGJhY2sgZnJvbSBhIG5ldyBkb2N1bWVudCBkdXJpbmcgY29uc3RydWN0aW9u
IAotUEFTUyBkb2N1bWVudC5jcmVhdGVFbGVtZW50IG11c3QgdGhyb3cgYSBOb3RTdXBwb3J0ZWRF
cnJvciB3aGVuIHRoZSBlbGVtZW50IGlzIGFkb3B0ZWQgaW50byBhIGNsb25lZCBkb2N1bWVudCBk
dXJpbmcgY29uc3RydWN0aW9uIAotUEFTUyBkb2N1bWVudC5jcmVhdGVFbGVtZW50IG11c3QgdGhy
b3cgYSBOb3RTdXBwb3J0ZWRFcnJvciB3aGVuIHRoZSBlbGVtZW50IGlzIGluc2VydGVkIGludG8g
YSBjbG9uZWQgZG9jdW1lbnQgZHVyaW5nIGNvbnN0cnVjdGlvbiAKLVBBU1MgZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCBtdXN0IG5vdCB0aHJvdyBhIE5vdFN1cHBvcnRlZEVycm9yIHdoZW4gdGhlIGVs
ZW1lbnQgaXMgYWRvcHRlZCBiYWNrIGZyb20gYSBjbG9uZWQgZG9jdW1lbnQgZHVyaW5nIGNvbnN0
cnVjdGlvbiAKLVBBU1MgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCBtdXN0IHRocm93IGEgTm90U3Vw
cG9ydGVkRXJyb3Igd2hlbiB0aGUgZWxlbWVudCBpcyBhZG9wdGVkIGludG8gYSBkb2N1bWVudCBj
cmVhdGVkIGJ5IGNyZWF0ZUhUTUxEb2N1bWVudCBkdXJpbmcgY29uc3RydWN0aW9uIAotUEFTUyBk
b2N1bWVudC5jcmVhdGVFbGVtZW50IG11c3QgdGhyb3cgYSBOb3RTdXBwb3J0ZWRFcnJvciB3aGVu
IHRoZSBlbGVtZW50IGlzIGluc2VydGVkIGludG8gYSBkb2N1bWVudCBjcmVhdGVkIGJ5IGNyZWF0
ZUhUTUxEb2N1bWVudCBkdXJpbmcgY29uc3RydWN0aW9uIAotUEFTUyBkb2N1bWVudC5jcmVhdGVF
bGVtZW50IG11c3Qgbm90IHRocm93IGEgTm90U3VwcG9ydGVkRXJyb3Igd2hlbiB0aGUgZWxlbWVu
dCBpcyBhZG9wdGVkIGJhY2sgZnJvbSBhIGRvY3VtZW50IGNyZWF0ZWQgYnkgY3JlYXRlSFRNTERv
Y3VtZW50IGR1cmluZyBjb25zdHJ1Y3Rpb24gCi1QQVNTIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQg
bXVzdCB0aHJvdyBhIE5vdFN1cHBvcnRlZEVycm9yIHdoZW4gdGhlIGVsZW1lbnQgaXMgYWRvcHRl
ZCBpbnRvIGEgSFRNTCBkb2N1bWVudCBjcmVhdGVkIGJ5IGNyZWF0ZURvY3VtZW50IGR1cmluZyBj
b25zdHJ1Y3Rpb24gCi1QQVNTIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQgbXVzdCB0aHJvdyBhIE5v
dFN1cHBvcnRlZEVycm9yIHdoZW4gdGhlIGVsZW1lbnQgaXMgaW5zZXJ0ZWQgaW50byBhIEhUTUwg
ZG9jdW1lbnQgY3JlYXRlZCBieSBjcmVhdGVEb2N1bWVudCBkdXJpbmcgY29uc3RydWN0aW9uIAot
UEFTUyBkb2N1bWVudC5jcmVhdGVFbGVtZW50IG11c3Qgbm90IHRocm93IGEgTm90U3VwcG9ydGVk
RXJyb3Igd2hlbiB0aGUgZWxlbWVudCBpcyBhZG9wdGVkIGJhY2sgZnJvbSBhIEhUTUwgZG9jdW1l
bnQgY3JlYXRlZCBieSBjcmVhdGVEb2N1bWVudCBkdXJpbmcgY29uc3RydWN0aW9uIAotUEFTUyBk
b2N1bWVudC5jcmVhdGVFbGVtZW50IG11c3QgdGhyb3cgYSBOb3RTdXBwb3J0ZWRFcnJvciB3aGVu
IHRoZSBlbGVtZW50IGlzIGFkb3B0ZWQgaW50byBhIGRvY3VtZW50IGluIGFuIGlmcmFtZSBkdXJp
bmcgY29uc3RydWN0aW9uIAotUEFTUyBkb2N1bWVudC5jcmVhdGVFbGVtZW50IG11c3QgdGhyb3cg
YSBOb3RTdXBwb3J0ZWRFcnJvciB3aGVuIHRoZSBlbGVtZW50IGlzIGluc2VydGVkIGludG8gYSBk
b2N1bWVudCBpbiBhbiBpZnJhbWUgZHVyaW5nIGNvbnN0cnVjdGlvbiAKLVBBU1MgZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCBtdXN0IG5vdCB0aHJvdyBhIE5vdFN1cHBvcnRlZEVycm9yIHdoZW4gdGhl
IGVsZW1lbnQgaXMgYWRvcHRlZCBiYWNrIGZyb20gYSBkb2N1bWVudCBpbiBhbiBpZnJhbWUgZHVy
aW5nIGNvbnN0cnVjdGlvbiAKLVBBU1MgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCBtdXN0IHRocm93
IGEgTm90U3VwcG9ydGVkRXJyb3Igd2hlbiB0aGUgZWxlbWVudCBpcyBhZG9wdGVkIGludG8gYSBI
VE1MIGRvY3VtZW50IGZldGNoZWQgYnkgWEhSIGR1cmluZyBjb25zdHJ1Y3Rpb24gCi1QQVNTIGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQgbXVzdCB0aHJvdyBhIE5vdFN1cHBvcnRlZEVycm9yIHdoZW4g
dGhlIGVsZW1lbnQgaXMgaW5zZXJ0ZWQgaW50byBhIEhUTUwgZG9jdW1lbnQgZmV0Y2hlZCBieSBY
SFIgZHVyaW5nIGNvbnN0cnVjdGlvbiAKLVBBU1MgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCBtdXN0
IG5vdCB0aHJvdyBhIE5vdFN1cHBvcnRlZEVycm9yIHdoZW4gdGhlIGVsZW1lbnQgaXMgYWRvcHRl
ZCBiYWNrIGZyb20gYSBIVE1MIGRvY3VtZW50IGZldGNoZWQgYnkgWEhSIGR1cmluZyBjb25zdHJ1
Y3Rpb24gCi1QQVNTIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQgbXVzdCB0aHJvdyBhIE5vdFN1cHBv
cnRlZEVycm9yIHdoZW4gdGhlIGxvY2FsIG5hbWUgb2YgdGhlIGVsZW1lbnQgZG9lcyBub3QgbWF0
Y2ggdGhhdCBvZiB0aGUgY3VzdG9tIGVsZW1lbnQgCi1QQVNTIGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQgbXVzdCByZS10aHJvdyBhbiBleGNlcHRpb24gdGhyb3duIGJ5IGEgY3VzdG9tIGVsZW1lbnQg
Y29uc3RydWN0b3IgCitQQVNTIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQgbXVzdCByZXBvcnQgYSBU
eXBlRXJyb3Igd2hlbiB0aGUgcmVzdWx0IG9mIENvbnN0cnVjdCBpcyBub3QgYSBET00gbm9kZSAK
K1BBU1MgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCBtdXN0IHJlcG9ydCBhIFR5cGVFcnJvciB3aGVu
IHRoZSByZXN1bHQgb2YgQ29uc3RydWN0IGlzIGEgVGV4dE5vZGUgCitQQVNTIGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQgbXVzdCByZXBvcnQgYSBOb3RTdXBwb3J0ZWRFcnJvciB3aGVuIGF0dHJpYnV0
ZSBpcyBhZGRlZCBieSBzZXRBdHRyaWJ1dGUgZHVyaW5nIGNvbnN0cnVjdGlvbiAKK1BBU1MgZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCBtdXN0IHJlcG9ydCBhIE5vdFN1cHBvcnRlZEVycm9yIHdoZW4g
YXR0cmlidXRlIGlzIGFkZGVkIGJ5IGF0dHJpYnV0ZXMuc2V0TmFtZWRJdGVtIGR1cmluZyBjb25z
dHJ1Y3Rpb24gCitQQVNTIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQgbXVzdCBub3QgcmVwb3J0IGEg
Tm90U3VwcG9ydGVkRXJyb3Igd2hlbiBhdHRyaWJ1dGUgaXMgYWRkZWQgYW5kIHJlbW92ZWQgZHVy
aW5nIGNvbnN0cnVjdGlvbiAKK1BBU1MgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCBtdXN0IHJlcG9y
dCBhIE5vdFN1cHBvcnRlZEVycm9yIHdoZW4gYSBUZXh0IGNoaWxkIGlzIGFkZGVkIGR1cmluZyBj
b25zdHJ1Y3Rpb24gCitQQVNTIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQgbXVzdCByZXBvcnQgYSBO
b3RTdXBwb3J0ZWRFcnJvciB3aGVuIGEgQ29tbWVudCBjaGlsZCBpcyBhZGRlZCBkdXJpbmcgY29u
c3RydWN0aW9uIAorUEFTUyBkb2N1bWVudC5jcmVhdGVFbGVtZW50IG11c3QgcmVwb3J0IGEgTm90
U3VwcG9ydGVkRXJyb3Igd2hlbiBhbiBlbGVtZW50IGNoaWxkIGlzIGFkZGVkIGR1cmluZyBjb25z
dHJ1Y3Rpb24gCitQQVNTIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQgbXVzdCBub3QgcmVwb3J0IGEg
Tm90U3VwcG9ydGVkRXJyb3Igd2hlbiBhbiBlbGVtZW50IGNoaWxkIGlzIGFkZGVkIGFuZCByZW1v
dmVkIGR1cmluZyBjb25zdHJ1Y3Rpb24gCitQQVNTIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQgbXVz
dCByZXBvcnQgYSBOb3RTdXBwb3J0ZWRFcnJvciB3aGVuIHRoZSBlbGVtZW50IGdldHMgaW5zZXJ0
ZWQgaW50byBhbm90aGVyIGVsZW1lbnQgZHVyaW5nIGNvbnN0cnVjdGlvbiAKK1BBU1MgZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCBtdXN0IG5vdCByZXBvcnQgYSBOb3RTdXBwb3J0ZWRFcnJvciB3aGVu
IHRoZSBlbGVtZW50IGlzIGluc2VydGVkIGFuZCByZW1vdmVkIGZyb20gYW5vdGhlciBlbGVtZW50
IGR1cmluZyBjb25zdHJ1Y3Rpb24gCitQQVNTIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQgbXVzdCBy
ZXBvcnQgYSBOb3RTdXBwb3J0ZWRFcnJvciB3aGVuIHRoZSBlbGVtZW50IGlzIGFkb3B0ZWQgaW50
byBhIGRvY3VtZW50IG9mIGEgdGVtcGxhdGUgZWxlbWVudCBkdXJpbmcgY29uc3RydWN0aW9uIAor
UEFTUyBkb2N1bWVudC5jcmVhdGVFbGVtZW50IG11c3QgcmVwb3J0IGEgTm90U3VwcG9ydGVkRXJy
b3Igd2hlbiB0aGUgZWxlbWVudCBpcyBpbnNlcnRlZCBpbnRvIGEgZG9jdW1lbnQgb2YgYSB0ZW1w
bGF0ZSBlbGVtZW50IGR1cmluZyBjb25zdHJ1Y3Rpb24gCitQQVNTIGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQgbXVzdCBub3QgcmVwb3J0IGEgTm90U3VwcG9ydGVkRXJyb3Igd2hlbiB0aGUgZWxlbWVu
dCBpcyBhZG9wdGVkIGJhY2sgZnJvbSBhIGRvY3VtZW50IG9mIGEgdGVtcGxhdGUgZWxlbWVudCBk
dXJpbmcgY29uc3RydWN0aW9uIAorUEFTUyBkb2N1bWVudC5jcmVhdGVFbGVtZW50IG11c3QgcmVw
b3J0IGEgTm90U3VwcG9ydGVkRXJyb3Igd2hlbiB0aGUgZWxlbWVudCBpcyBhZG9wdGVkIGludG8g
YSBuZXcgZG9jdW1lbnQgZHVyaW5nIGNvbnN0cnVjdGlvbiAKK1BBU1MgZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCBtdXN0IHJlcG9ydCBhIE5vdFN1cHBvcnRlZEVycm9yIHdoZW4gdGhlIGVsZW1lbnQg
aXMgaW5zZXJ0ZWQgaW50byBhIG5ldyBkb2N1bWVudCBkdXJpbmcgY29uc3RydWN0aW9uIAorUEFT
UyBkb2N1bWVudC5jcmVhdGVFbGVtZW50IG11c3Qgbm90IHJlcG9ydCBhIE5vdFN1cHBvcnRlZEVy
cm9yIHdoZW4gdGhlIGVsZW1lbnQgaXMgYWRvcHRlZCBiYWNrIGZyb20gYSBuZXcgZG9jdW1lbnQg
ZHVyaW5nIGNvbnN0cnVjdGlvbiAKK1BBU1MgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCBtdXN0IHJl
cG9ydCBhIE5vdFN1cHBvcnRlZEVycm9yIHdoZW4gdGhlIGVsZW1lbnQgaXMgYWRvcHRlZCBpbnRv
IGEgY2xvbmVkIGRvY3VtZW50IGR1cmluZyBjb25zdHJ1Y3Rpb24gCitQQVNTIGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQgbXVzdCByZXBvcnQgYSBOb3RTdXBwb3J0ZWRFcnJvciB3aGVuIHRoZSBlbGVt
ZW50IGlzIGluc2VydGVkIGludG8gYSBjbG9uZWQgZG9jdW1lbnQgZHVyaW5nIGNvbnN0cnVjdGlv
biAKK1BBU1MgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCBtdXN0IG5vdCByZXBvcnQgYSBOb3RTdXBw
b3J0ZWRFcnJvciB3aGVuIHRoZSBlbGVtZW50IGlzIGFkb3B0ZWQgYmFjayBmcm9tIGEgY2xvbmVk
IGRvY3VtZW50IGR1cmluZyBjb25zdHJ1Y3Rpb24gCitQQVNTIGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQgbXVzdCByZXBvcnQgYSBOb3RTdXBwb3J0ZWRFcnJvciB3aGVuIHRoZSBlbGVtZW50IGlzIGFk
b3B0ZWQgaW50byBhIGRvY3VtZW50IGNyZWF0ZWQgYnkgY3JlYXRlSFRNTERvY3VtZW50IGR1cmlu
ZyBjb25zdHJ1Y3Rpb24gCitQQVNTIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQgbXVzdCByZXBvcnQg
YSBOb3RTdXBwb3J0ZWRFcnJvciB3aGVuIHRoZSBlbGVtZW50IGlzIGluc2VydGVkIGludG8gYSBk
b2N1bWVudCBjcmVhdGVkIGJ5IGNyZWF0ZUhUTUxEb2N1bWVudCBkdXJpbmcgY29uc3RydWN0aW9u
IAorUEFTUyBkb2N1bWVudC5jcmVhdGVFbGVtZW50IG11c3Qgbm90IHJlcG9ydCBhIE5vdFN1cHBv
cnRlZEVycm9yIHdoZW4gdGhlIGVsZW1lbnQgaXMgYWRvcHRlZCBiYWNrIGZyb20gYSBkb2N1bWVu
dCBjcmVhdGVkIGJ5IGNyZWF0ZUhUTUxEb2N1bWVudCBkdXJpbmcgY29uc3RydWN0aW9uIAorUEFT
UyBkb2N1bWVudC5jcmVhdGVFbGVtZW50IG11c3QgcmVwb3J0IGEgTm90U3VwcG9ydGVkRXJyb3Ig
d2hlbiB0aGUgZWxlbWVudCBpcyBhZG9wdGVkIGludG8gYSBIVE1MIGRvY3VtZW50IGNyZWF0ZWQg
YnkgY3JlYXRlRG9jdW1lbnQgZHVyaW5nIGNvbnN0cnVjdGlvbiAKK1BBU1MgZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCBtdXN0IHJlcG9ydCBhIE5vdFN1cHBvcnRlZEVycm9yIHdoZW4gdGhlIGVsZW1l
bnQgaXMgaW5zZXJ0ZWQgaW50byBhIEhUTUwgZG9jdW1lbnQgY3JlYXRlZCBieSBjcmVhdGVEb2N1
bWVudCBkdXJpbmcgY29uc3RydWN0aW9uIAorUEFTUyBkb2N1bWVudC5jcmVhdGVFbGVtZW50IG11
c3Qgbm90IHJlcG9ydCBhIE5vdFN1cHBvcnRlZEVycm9yIHdoZW4gdGhlIGVsZW1lbnQgaXMgYWRv
cHRlZCBiYWNrIGZyb20gYSBIVE1MIGRvY3VtZW50IGNyZWF0ZWQgYnkgY3JlYXRlRG9jdW1lbnQg
ZHVyaW5nIGNvbnN0cnVjdGlvbiAKK1BBU1MgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCBtdXN0IHJl
cG9ydCBhIE5vdFN1cHBvcnRlZEVycm9yIHdoZW4gdGhlIGVsZW1lbnQgaXMgYWRvcHRlZCBpbnRv
IGEgZG9jdW1lbnQgaW4gYW4gaWZyYW1lIGR1cmluZyBjb25zdHJ1Y3Rpb24gCitQQVNTIGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQgbXVzdCByZXBvcnQgYSBOb3RTdXBwb3J0ZWRFcnJvciB3aGVuIHRo
ZSBlbGVtZW50IGlzIGluc2VydGVkIGludG8gYSBkb2N1bWVudCBpbiBhbiBpZnJhbWUgZHVyaW5n
IGNvbnN0cnVjdGlvbiAKK1BBU1MgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCBtdXN0IG5vdCByZXBv
cnQgYSBOb3RTdXBwb3J0ZWRFcnJvciB3aGVuIHRoZSBlbGVtZW50IGlzIGFkb3B0ZWQgYmFjayBm
cm9tIGEgZG9jdW1lbnQgaW4gYW4gaWZyYW1lIGR1cmluZyBjb25zdHJ1Y3Rpb24gCitQQVNTIGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQgbXVzdCByZXBvcnQgYSBOb3RTdXBwb3J0ZWRFcnJvciB3aGVu
IHRoZSBlbGVtZW50IGlzIGFkb3B0ZWQgaW50byBhIEhUTUwgZG9jdW1lbnQgZmV0Y2hlZCBieSBY
SFIgZHVyaW5nIGNvbnN0cnVjdGlvbiAKK1BBU1MgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCBtdXN0
IHJlcG9ydCBhIE5vdFN1cHBvcnRlZEVycm9yIHdoZW4gdGhlIGVsZW1lbnQgaXMgaW5zZXJ0ZWQg
aW50byBhIEhUTUwgZG9jdW1lbnQgZmV0Y2hlZCBieSBYSFIgZHVyaW5nIGNvbnN0cnVjdGlvbiAK
K1BBU1MgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCBtdXN0IG5vdCByZXBvcnQgYSBOb3RTdXBwb3J0
ZWRFcnJvciB3aGVuIHRoZSBlbGVtZW50IGlzIGFkb3B0ZWQgYmFjayBmcm9tIGEgSFRNTCBkb2N1
bWVudCBmZXRjaGVkIGJ5IFhIUiBkdXJpbmcgY29uc3RydWN0aW9uIAorUEFTUyBkb2N1bWVudC5j
cmVhdGVFbGVtZW50IG11c3QgcmVwb3J0IGEgTm90U3VwcG9ydGVkRXJyb3Igd2hlbiB0aGUgbG9j
YWwgbmFtZSBvZiB0aGUgZWxlbWVudCBkb2VzIG5vdCBtYXRjaCB0aGF0IG9mIHRoZSBjdXN0b20g
ZWxlbWVudCAKK1BBU1MgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCBtdXN0IHJlcG9ydCBhbiBleGNl
cHRpb24gdGhyb3duIGJ5IGEgY3VzdG9tIGVsZW1lbnQgY29uc3RydWN0b3IgCiAKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvY3VzdG9tLWVsZW1lbnRzL0RvY3VtZW50LWNyZWF0ZUVsZW1l
bnQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3VzdG9tLWVsZW1lbnRzL0RvY3VtZW50LWNyZWF0
ZUVsZW1lbnQuaHRtbAppbmRleCBkMTUxNjVlYWJmMDhhMTJiMjRhZWM0NTE4YTM4OGY3ZThjYjEz
ZWM2Li4wMDY0ZTVjYzNiNjRkZTU5ZWM0ZWNhZTM4ZDMxMWU5MDBhZTA0YTRlIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9mYXN0L2N1c3RvbS1lbGVtZW50cy9Eb2N1bWVudC1jcmVhdGVFbGVtZW50
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVudHMvRG9jdW1lbnQtY3Jl
YXRlRWxlbWVudC5odG1sCkBAIC0xMiw2ICsxMiw3IEBACiA8Ym9keT4KIDxkaXYgaWQ9ImxvZyI+
PC9kaXY+CiA8c2NyaXB0Pgorc2V0dXAoe2FsbG93X3VuY2F1Z2h0X2V4Y2VwdGlvbjp0cnVlfSk7
CiAKIHRlc3QoZnVuY3Rpb24gKCkgewogICAgIGNsYXNzIE15Q3VzdG9tRWxlbWVudCBleHRlbmRz
IEhUTUxFbGVtZW50IHt9OwpAQCAtMjcsNiArMjgsMjMgQEAgdGVzdChmdW5jdGlvbiAoKSB7CiAK
IH0sICdkb2N1bWVudC5jcmVhdGVFbGVtZW50IG11c3QgY3JlYXRlIGFuIGluc3RhbmNlIG9mIGN1
c3RvbSBlbGVtZW50cycpOwogCitmdW5jdGlvbiBhc3NlcnRfcmVwb3J0cyhleHBlY3RlZCwgdGVz
dEZ1bmN0aW9uLCBtZXNzYWdlKSB7CisgICAgdmFyIHVuY2F1Z2h0RXJyb3IgPSBudWxsOworICAg
IHdpbmRvdy5vbmVycm9yID0gZnVuY3Rpb24gKG1lc3NhZ2UsIHVybCwgbGluZU51bWJlciwgY29s
dW1uTnVtYmVyLCBlcnJvcikgeyB1bmNhdWdodEVycm9yID0gZXJyb3I7IHJldHVybiB0cnVlOyB9
CisgICAgdGVzdEZ1bmN0aW9uKCk7CisgICAgaWYgKHR5cGVvZihleHBlY3RlZCkgPT0gJ3N0cmlu
ZycpCisgICAgICAgIGFzc2VydF9lcXVhbHModW5jYXVnaHRFcnJvciwgZXhwZWN0ZWQsIG1lc3Nh
Z2UpOworICAgIGVsc2UgaWYgKGV4cGVjdGVkICYmICduYW1lJyBpbiBleHBlY3RlZCkKKyAgICAg
ICAgYXNzZXJ0X2VxdWFscyh1bmNhdWdodEVycm9yLm5hbWUsIGV4cGVjdGVkLm5hbWUsIG1lc3Nh
Z2UpOworICAgIGVsc2UKKyAgICAgIGFzc2VydF9lcXVhbHModW5jYXVnaHRFcnJvciwgZXhwZWN0
ZWQsIG1lc3NhZ2UpOworICAgIHdpbmRvdy5vbmVycm9yID0gbnVsbDsKK30KKworZnVuY3Rpb24g
YXNzZXJ0X25vdF9yZXBvcnRzKHRlc3RGdW5jdGlvbiwgbWVzc2FnZSkgeworICAgIGFzc2VydF9y
ZXBvcnRzKG51bGwsIHRlc3RGdW5jdGlvbiwgbWVzc2FnZSk7Cit9CisKIHRlc3QoZnVuY3Rpb24g
KCkgewogICAgIGNsYXNzIE9iamVjdEN1c3RvbUVsZW1lbnQgZXh0ZW5kcyBIVE1MRWxlbWVudCB7
CiAgICAgICAgIGNvbnN0cnVjdG9yKCkKQEAgLTQwLDggKzU4LDExIEBAIHRlc3QoZnVuY3Rpb24g
KCkgewogICAgIGFzc2VydF90cnVlKGluc3RhbmNlIGluc3RhbmNlb2YgT2JqZWN0KTsKICAgICBh
c3NlcnRfZXF1YWxzKGluc3RhbmNlLmZvbywgJ2JhcicpOwogCi0gICAgYXNzZXJ0X3Rocm93cyh7
bmFtZTogJ1R5cGVFcnJvcid9LCBmdW5jdGlvbiAoKSB7IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
J29iamVjdC1jdXN0b20tZWxlbWVudCcpOyB9KTsKLX0sICdkb2N1bWVudC5jcmVhdGVFbGVtZW50
IG11c3QgdGhyb3cgYSBUeXBlRXJyb3Igd2hlbiB0aGUgcmVzdWx0IG9mIENvbnN0cnVjdCBpcyBu
b3QgYSBET00gbm9kZScpOworICAgIHZhciBpbnN0YW5jZTsKKyAgICBhc3NlcnRfcmVwb3J0cyh7
bmFtZTogJ1R5cGVFcnJvcid9LCBmdW5jdGlvbiAoKSB7IGluc3RhbmNlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgnb2JqZWN0LWN1c3RvbS1lbGVtZW50Jyk7IH0pOworICAgIGFzc2VydF9lcXVh
bHMoaW5zdGFuY2UubG9jYWxOYW1lLCAnb2JqZWN0LWN1c3RvbS1lbGVtZW50Jyk7CisgICAgYXNz
ZXJ0X3RydWUoaW5zdGFuY2UgaW5zdGFuY2VvZiBIVE1MVW5rbm93bkVsZW1lbnQpOworfSwgJ2Rv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQgbXVzdCByZXBvcnQgYSBUeXBlRXJyb3Igd2hlbiB0aGUgcmVz
dWx0IG9mIENvbnN0cnVjdCBpcyBub3QgYSBET00gbm9kZScpOwogCiB0ZXN0KGZ1bmN0aW9uICgp
IHsKICAgICBjbGFzcyBUZXh0Q3VzdG9tRWxlbWVudCBleHRlbmRzIEhUTUxFbGVtZW50IHsKQEAg
LTUyLDggKzczLDExIEBAIHRlc3QoZnVuY3Rpb24gKCkgewogICAgIH07CiAgICAgY3VzdG9tRWxl
bWVudHMuZGVmaW5lKCd0ZXh0LWN1c3RvbS1lbGVtZW50JywgVGV4dEN1c3RvbUVsZW1lbnQpOwog
ICAgIGFzc2VydF90cnVlKG5ldyBUZXh0Q3VzdG9tRWxlbWVudCBpbnN0YW5jZW9mIFRleHQpOwot
ICAgIGFzc2VydF90aHJvd3Moe25hbWU6ICdUeXBlRXJyb3InfSwgZnVuY3Rpb24gKCkgeyBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCd0ZXh0LWN1c3RvbS1lbGVtZW50Jyk7IH0pOwotfSwgJ2RvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQgbXVzdCB0aHJvdyBhIFR5cGVFcnJvciB3aGVuIHRoZSByZXN1bHQg
b2YgQ29uc3RydWN0IGlzIGEgVGV4dE5vZGUnKTsKKyAgICB2YXIgaW5zdGFuY2U7CisgICAgYXNz
ZXJ0X3JlcG9ydHMoe25hbWU6ICdUeXBlRXJyb3InfSwgZnVuY3Rpb24gKCkgeyBpbnN0YW5jZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RleHQtY3VzdG9tLWVsZW1lbnQnKTsgfSk7CisgICAg
YXNzZXJ0X2VxdWFscyhpbnN0YW5jZS5sb2NhbE5hbWUsICd0ZXh0LWN1c3RvbS1lbGVtZW50Jyk7
CisgICAgYXNzZXJ0X3RydWUoaW5zdGFuY2UgaW5zdGFuY2VvZiBIVE1MVW5rbm93bkVsZW1lbnQp
OworfSwgJ2RvY3VtZW50LmNyZWF0ZUVsZW1lbnQgbXVzdCByZXBvcnQgYSBUeXBlRXJyb3Igd2hl
biB0aGUgcmVzdWx0IG9mIENvbnN0cnVjdCBpcyBhIFRleHROb2RlJyk7CiAKIHRlc3QoZnVuY3Rp
b24gKCkgewogICAgIGNsYXNzIEVsZW1lbnRXaXRoQXR0cmlidXRlIGV4dGVuZHMgSFRNTEVsZW1l
bnQgewpAQCAtNjUsOCArODksMTEgQEAgdGVzdChmdW5jdGlvbiAoKSB7CiAgICAgfTsKICAgICBj
dXN0b21FbGVtZW50cy5kZWZpbmUoJ2VsZW1lbnQtd2l0aC1hdHRyaWJ1dGUnLCBFbGVtZW50V2l0
aEF0dHJpYnV0ZSk7CiAgICAgYXNzZXJ0X3RydWUobmV3IEVsZW1lbnRXaXRoQXR0cmlidXRlIGlu
c3RhbmNlb2YgRWxlbWVudFdpdGhBdHRyaWJ1dGUpOwotICAgIGFzc2VydF90aHJvd3Moe25hbWU6
ICdOb3RTdXBwb3J0ZWRFcnJvcid9LCBmdW5jdGlvbiAoKSB7IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoJ2VsZW1lbnQtd2l0aC1hdHRyaWJ1dGUnKTsgfSk7Ci19LCAnZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCBtdXN0IHRocm93IGEgTm90U3VwcG9ydGVkRXJyb3Igd2hlbiBhdHRyaWJ1dGUgaXMgYWRk
ZWQgYnkgc2V0QXR0cmlidXRlIGR1cmluZyBjb25zdHJ1Y3Rpb24nKTsKKyAgICB2YXIgaW5zdGFu
Y2U7CisgICAgYXNzZXJ0X3JlcG9ydHMoe25hbWU6ICdOb3RTdXBwb3J0ZWRFcnJvcid9LCBmdW5j
dGlvbiAoKSB7IGluc3RhbmNlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZWxlbWVudC13aXRo
LWF0dHJpYnV0ZScpOyB9KTsKKyAgICBhc3NlcnRfZXF1YWxzKGluc3RhbmNlLmxvY2FsTmFtZSwg
J2VsZW1lbnQtd2l0aC1hdHRyaWJ1dGUnKTsKKyAgICBhc3NlcnRfdHJ1ZShpbnN0YW5jZSBpbnN0
YW5jZW9mIEhUTUxVbmtub3duRWxlbWVudCk7Cit9LCAnZG9jdW1lbnQuY3JlYXRlRWxlbWVudCBt
dXN0IHJlcG9ydCBhIE5vdFN1cHBvcnRlZEVycm9yIHdoZW4gYXR0cmlidXRlIGlzIGFkZGVkIGJ5
IHNldEF0dHJpYnV0ZSBkdXJpbmcgY29uc3RydWN0aW9uJyk7CiAKIHRlc3QoZnVuY3Rpb24gKCkg
ewogICAgIGNsYXNzIEVsZW1lbnRXaXRoQXR0ck5vZGUgZXh0ZW5kcyBIVE1MRWxlbWVudCB7CkBA
IC03OCw4ICsxMDUsMTEgQEAgdGVzdChmdW5jdGlvbiAoKSB7CiAgICAgfTsKICAgICBjdXN0b21F
bGVtZW50cy5kZWZpbmUoJ2VsZW1lbnQtd2l0aC1hdHRyLW5vZGUnLCBFbGVtZW50V2l0aEF0dHJO
b2RlKTsKICAgICBhc3NlcnRfdHJ1ZShuZXcgRWxlbWVudFdpdGhBdHRyTm9kZSBpbnN0YW5jZW9m
IEVsZW1lbnRXaXRoQXR0ck5vZGUpOwotICAgIGFzc2VydF90aHJvd3Moe25hbWU6ICdOb3RTdXBw
b3J0ZWRFcnJvcid9LCBmdW5jdGlvbiAoKSB7IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2VsZW1l
bnQtd2l0aC1hdHRyLW5vZGUnKTsgfSk7Ci19LCAnZG9jdW1lbnQuY3JlYXRlRWxlbWVudCBtdXN0
IHRocm93IGEgTm90U3VwcG9ydGVkRXJyb3Igd2hlbiBhdHRyaWJ1dGUgaXMgYWRkZWQgYnkgYXR0
cmlidXRlcy5zZXROYW1lZEl0ZW0gZHVyaW5nIGNvbnN0cnVjdGlvbicpOworICAgIHZhciBpbnN0
YW5jZTsKKyAgICBhc3NlcnRfcmVwb3J0cyh7bmFtZTogJ05vdFN1cHBvcnRlZEVycm9yJ30sIGZ1
bmN0aW9uICgpIHsgaW5zdGFuY2UgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdlbGVtZW50LXdp
dGgtYXR0ci1ub2RlJyk7IH0pOworICAgIGFzc2VydF9lcXVhbHMoaW5zdGFuY2UubG9jYWxOYW1l
LCAnZWxlbWVudC13aXRoLWF0dHItbm9kZScpOworICAgIGFzc2VydF90cnVlKGluc3RhbmNlIGlu
c3RhbmNlb2YgSFRNTFVua25vd25FbGVtZW50KTsKK30sICdkb2N1bWVudC5jcmVhdGVFbGVtZW50
IG11c3QgcmVwb3J0IGEgTm90U3VwcG9ydGVkRXJyb3Igd2hlbiBhdHRyaWJ1dGUgaXMgYWRkZWQg
YnkgYXR0cmlidXRlcy5zZXROYW1lZEl0ZW0gZHVyaW5nIGNvbnN0cnVjdGlvbicpOwogCiB0ZXN0
KGZ1bmN0aW9uICgpIHsKICAgICBjbGFzcyBFbGVtZW50V2l0aE5vQXR0cmlidXRlcyBleHRlbmRz
IEhUTUxFbGVtZW50IHsKQEAgLTkyLDggKzEyMiwxMCBAQCB0ZXN0KGZ1bmN0aW9uICgpIHsKICAg
ICB9OwogICAgIGN1c3RvbUVsZW1lbnRzLmRlZmluZSgnZWxlbWVudC13aXRoLW5vLWF0dGlyaWJ1
dGVzJywgRWxlbWVudFdpdGhOb0F0dHJpYnV0ZXMpOwogICAgIGFzc2VydF90cnVlKG5ldyBFbGVt
ZW50V2l0aE5vQXR0cmlidXRlcyBpbnN0YW5jZW9mIEVsZW1lbnRXaXRoTm9BdHRyaWJ1dGVzKTsK
LSAgICBhc3NlcnRfdHJ1ZShkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdlbGVtZW50LXdpdGgtbm8t
YXR0aXJpYnV0ZXMnKSBpbnN0YW5jZW9mIEVsZW1lbnRXaXRoTm9BdHRyaWJ1dGVzKTsKLX0sICdk
b2N1bWVudC5jcmVhdGVFbGVtZW50IG11c3Qgbm90IHRocm93IGEgTm90U3VwcG9ydGVkRXJyb3Ig
d2hlbiBhdHRyaWJ1dGUgaXMgYWRkZWQgYW5kIHJlbW92ZWQgZHVyaW5nIGNvbnN0cnVjdGlvbicp
OworICAgIHZhciBpbnN0YW5jZTsKKyAgICBhc3NlcnRfbm90X3JlcG9ydHMoZnVuY3Rpb24gKCkg
eyBpbnN0YW5jZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2VsZW1lbnQtd2l0aC1uby1hdHRp
cmlidXRlcycpOyB9KTsKKyAgICBhc3NlcnRfdHJ1ZShpbnN0YW5jZSBpbnN0YW5jZW9mIEVsZW1l
bnRXaXRoTm9BdHRyaWJ1dGVzKTsKK30sICdkb2N1bWVudC5jcmVhdGVFbGVtZW50IG11c3Qgbm90
IHJlcG9ydCBhIE5vdFN1cHBvcnRlZEVycm9yIHdoZW4gYXR0cmlidXRlIGlzIGFkZGVkIGFuZCBy
ZW1vdmVkIGR1cmluZyBjb25zdHJ1Y3Rpb24nKTsKIAogdGVzdChmdW5jdGlvbiAoKSB7CiAgICAg
Y2xhc3MgRWxlbWVudFdpdGhDaGlsZFRleHQgZXh0ZW5kcyBIVE1MRWxlbWVudCB7CkBAIC0xMDUs
OCArMTM3LDExIEBAIHRlc3QoZnVuY3Rpb24gKCkgewogICAgIH07CiAgICAgY3VzdG9tRWxlbWVu
dHMuZGVmaW5lKCdlbGVtZW50LXdpdGgtY2hpbGQtdGV4dCcsIEVsZW1lbnRXaXRoQ2hpbGRUZXh0
KTsKICAgICBhc3NlcnRfdHJ1ZShuZXcgRWxlbWVudFdpdGhDaGlsZFRleHQgaW5zdGFuY2VvZiBF
bGVtZW50V2l0aENoaWxkVGV4dCk7Ci0gICAgYXNzZXJ0X3Rocm93cyh7bmFtZTogJ05vdFN1cHBv
cnRlZEVycm9yJ30sIGZ1bmN0aW9uICgpIHsgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZWxlbWVu
dC13aXRoLWNoaWxkLXRleHQnKTsgfSk7Ci19LCAnZG9jdW1lbnQuY3JlYXRlRWxlbWVudCBtdXN0
IHRocm93IGEgTm90U3VwcG9ydGVkRXJyb3Igd2hlbiBhIFRleHQgY2hpbGQgaXMgYWRkZWQgZHVy
aW5nIGNvbnN0cnVjdGlvbicpOworICAgIHZhciBpbnN0YW5jZTsKKyAgICBhc3NlcnRfcmVwb3J0
cyh7bmFtZTogJ05vdFN1cHBvcnRlZEVycm9yJ30sIGZ1bmN0aW9uICgpIHsgaW5zdGFuY2UgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCdlbGVtZW50LXdpdGgtY2hpbGQtdGV4dCcpOyB9KTsKKyAg
ICBhc3NlcnRfZXF1YWxzKGluc3RhbmNlLmxvY2FsTmFtZSwgJ2VsZW1lbnQtd2l0aC1jaGlsZC10
ZXh0Jyk7CisgICAgYXNzZXJ0X3RydWUoaW5zdGFuY2UgaW5zdGFuY2VvZiBIVE1MVW5rbm93bkVs
ZW1lbnQpOworfSwgJ2RvY3VtZW50LmNyZWF0ZUVsZW1lbnQgbXVzdCByZXBvcnQgYSBOb3RTdXBw
b3J0ZWRFcnJvciB3aGVuIGEgVGV4dCBjaGlsZCBpcyBhZGRlZCBkdXJpbmcgY29uc3RydWN0aW9u
Jyk7CiAKIHRlc3QoZnVuY3Rpb24gKCkgewogICAgIGNsYXNzIEVsZW1lbnRXaXRoQ2hpbGRDb21t
ZW50IGV4dGVuZHMgSFRNTEVsZW1lbnQgewpAQCAtMTE4LDggKzE1MywxMSBAQCB0ZXN0KGZ1bmN0
aW9uICgpIHsKICAgICB9OwogICAgIGN1c3RvbUVsZW1lbnRzLmRlZmluZSgnZWxlbWVudC13aXRo
LWNoaWxkLWNvbW1lbnQnLCBFbGVtZW50V2l0aENoaWxkQ29tbWVudCk7CiAgICAgYXNzZXJ0X3Ry
dWUobmV3IEVsZW1lbnRXaXRoQ2hpbGRDb21tZW50IGluc3RhbmNlb2YgRWxlbWVudFdpdGhDaGls
ZENvbW1lbnQpOwotICAgIGFzc2VydF90aHJvd3Moe25hbWU6ICdOb3RTdXBwb3J0ZWRFcnJvcid9
LCBmdW5jdGlvbiAoKSB7IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2VsZW1lbnQtd2l0aC1jaGls
ZC1jb21tZW50Jyk7IH0pOwotfSwgJ2RvY3VtZW50LmNyZWF0ZUVsZW1lbnQgbXVzdCB0aHJvdyBh
IE5vdFN1cHBvcnRlZEVycm9yIHdoZW4gYSBDb21tZW50IGNoaWxkIGlzIGFkZGVkIGR1cmluZyBj
b25zdHJ1Y3Rpb24nKTsKKyAgICB2YXIgaW5zdGFuY2U7CisgICAgYXNzZXJ0X3JlcG9ydHMoe25h
bWU6ICdOb3RTdXBwb3J0ZWRFcnJvcid9LCBmdW5jdGlvbiAoKSB7IGluc3RhbmNlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgnZWxlbWVudC13aXRoLWNoaWxkLWNvbW1lbnQnKTsgfSk7CisgICAg
YXNzZXJ0X2VxdWFscyhpbnN0YW5jZS5sb2NhbE5hbWUsICdlbGVtZW50LXdpdGgtY2hpbGQtY29t
bWVudCcpOworICAgIGFzc2VydF90cnVlKGluc3RhbmNlIGluc3RhbmNlb2YgSFRNTFVua25vd25F
bGVtZW50KTsKK30sICdkb2N1bWVudC5jcmVhdGVFbGVtZW50IG11c3QgcmVwb3J0IGEgTm90U3Vw
cG9ydGVkRXJyb3Igd2hlbiBhIENvbW1lbnQgY2hpbGQgaXMgYWRkZWQgZHVyaW5nIGNvbnN0cnVj
dGlvbicpOwogCiB0ZXN0KGZ1bmN0aW9uICgpIHsKICAgICBjbGFzcyBFbGVtZW50V2l0aENoaWxk
RWxlbWVudCBleHRlbmRzIEhUTUxFbGVtZW50IHsKQEAgLTEzMSw4ICsxNjksMTEgQEAgdGVzdChm
dW5jdGlvbiAoKSB7CiAgICAgfTsKICAgICBjdXN0b21FbGVtZW50cy5kZWZpbmUoJ2VsZW1lbnQt
d2l0aC1jaGlsZC1lbGVtZW50JywgRWxlbWVudFdpdGhDaGlsZEVsZW1lbnQpOwogICAgIGFzc2Vy
dF90cnVlKG5ldyBFbGVtZW50V2l0aENoaWxkRWxlbWVudCBpbnN0YW5jZW9mIEVsZW1lbnRXaXRo
Q2hpbGRFbGVtZW50KTsKLSAgICBhc3NlcnRfdGhyb3dzKHtuYW1lOiAnTm90U3VwcG9ydGVkRXJy
b3InfSwgZnVuY3Rpb24gKCkgeyBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdlbGVtZW50LXdpdGgt
Y2hpbGQtZWxlbWVudCcpOyB9KTsKLX0sICdkb2N1bWVudC5jcmVhdGVFbGVtZW50IG11c3QgdGhy
b3cgYSBOb3RTdXBwb3J0ZWRFcnJvciB3aGVuIGFuIGVsZW1lbnQgY2hpbGQgaXMgYWRkZWQgZHVy
aW5nIGNvbnN0cnVjdGlvbicpOworICAgIHZhciBpbnN0YW5jZTsKKyAgICBhc3NlcnRfcmVwb3J0
cyh7bmFtZTogJ05vdFN1cHBvcnRlZEVycm9yJ30sIGZ1bmN0aW9uICgpIHsgaW5zdGFuY2UgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCdlbGVtZW50LXdpdGgtY2hpbGQtZWxlbWVudCcpOyB9KTsK
KyAgICBhc3NlcnRfZXF1YWxzKGluc3RhbmNlLmxvY2FsTmFtZSwgJ2VsZW1lbnQtd2l0aC1jaGls
ZC1lbGVtZW50Jyk7CisgICAgYXNzZXJ0X3RydWUoaW5zdGFuY2UgaW5zdGFuY2VvZiBIVE1MVW5r
bm93bkVsZW1lbnQpOworfSwgJ2RvY3VtZW50LmNyZWF0ZUVsZW1lbnQgbXVzdCByZXBvcnQgYSBO
b3RTdXBwb3J0ZWRFcnJvciB3aGVuIGFuIGVsZW1lbnQgY2hpbGQgaXMgYWRkZWQgZHVyaW5nIGNv
bnN0cnVjdGlvbicpOwogCiB0ZXN0KGZ1bmN0aW9uICgpIHsKICAgICBjbGFzcyBFbGVtZW50V2l0
aE5vQ2hpbGRFbGVtZW50cyBleHRlbmRzIEhUTUxFbGVtZW50IHsKQEAgLTE0NCw4ICsxODUsMTAg
QEAgdGVzdChmdW5jdGlvbiAoKSB7CiAgICAgICAgIH0KICAgICB9OwogICAgIGN1c3RvbUVsZW1l
bnRzLmRlZmluZSgnZWxlbWVudC13aXRoLW5vLWNoaWxkLWVsZW1lbnRzJywgRWxlbWVudFdpdGhO
b0NoaWxkRWxlbWVudHMpOwotICAgIGFzc2VydF90cnVlKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
J2VsZW1lbnQtd2l0aC1uby1jaGlsZC1lbGVtZW50cycpIGluc3RhbmNlb2YgRWxlbWVudFdpdGhO
b0NoaWxkRWxlbWVudHMpOwotfSwgJ2RvY3VtZW50LmNyZWF0ZUVsZW1lbnQgbXVzdCBub3QgdGhy
b3cgYSBOb3RTdXBwb3J0ZWRFcnJvciB3aGVuIGFuIGVsZW1lbnQgY2hpbGQgaXMgYWRkZWQgYW5k
IHJlbW92ZWQgZHVyaW5nIGNvbnN0cnVjdGlvbicpOworICAgIHZhciBpbnN0YW5jZTsKKyAgICBh
c3NlcnRfbm90X3JlcG9ydHMoZnVuY3Rpb24gKCkgeyBpbnN0YW5jZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoJ2VsZW1lbnQtd2l0aC1uby1jaGlsZC1lbGVtZW50cycpOyB9KTsKKyAgICBhc3Nl
cnRfdHJ1ZShpbnN0YW5jZSBpbnN0YW5jZW9mIEVsZW1lbnRXaXRoTm9DaGlsZEVsZW1lbnRzKTsK
K30sICdkb2N1bWVudC5jcmVhdGVFbGVtZW50IG11c3Qgbm90IHJlcG9ydCBhIE5vdFN1cHBvcnRl
ZEVycm9yIHdoZW4gYW4gZWxlbWVudCBjaGlsZCBpcyBhZGRlZCBhbmQgcmVtb3ZlZCBkdXJpbmcg
Y29uc3RydWN0aW9uJyk7CiAKIHRlc3QoZnVuY3Rpb24gKCkgewogICAgIGNsYXNzIEVsZW1lbnRX
aXRoUGFyZW50IGV4dGVuZHMgSFRNTEVsZW1lbnQgewpAQCAtMTU3LDggKzIwMCwxMSBAQCB0ZXN0
KGZ1bmN0aW9uICgpIHsKICAgICB9OwogICAgIGN1c3RvbUVsZW1lbnRzLmRlZmluZSgnZWxlbWVu
dC13aXRoLXBhcmVudCcsIEVsZW1lbnRXaXRoUGFyZW50KTsKICAgICBhc3NlcnRfdHJ1ZShuZXcg
RWxlbWVudFdpdGhQYXJlbnQgaW5zdGFuY2VvZiBFbGVtZW50V2l0aFBhcmVudCk7Ci0gICAgYXNz
ZXJ0X3Rocm93cyh7bmFtZTogJ05vdFN1cHBvcnRlZEVycm9yJ30sIGZ1bmN0aW9uICgpIHsgZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgnZWxlbWVudC13aXRoLXBhcmVudCcpOyB9KTsKLX0sICdkb2N1
bWVudC5jcmVhdGVFbGVtZW50IG11c3QgdGhyb3cgYSBOb3RTdXBwb3J0ZWRFcnJvciB3aGVuIHRo
ZSBlbGVtZW50IGdldHMgaW5zZXJ0ZWQgaW50byBhbm90aGVyIGVsZW1lbnQgZHVyaW5nIGNvbnN0
cnVjdGlvbicpOworICAgIHZhciBpbnN0YW5jZTsKKyAgICBhc3NlcnRfcmVwb3J0cyh7bmFtZTog
J05vdFN1cHBvcnRlZEVycm9yJ30sIGZ1bmN0aW9uICgpIHsgaW5zdGFuY2UgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCdlbGVtZW50LXdpdGgtcGFyZW50Jyk7IH0pOworICAgIGFzc2VydF9lcXVh
bHMoaW5zdGFuY2UubG9jYWxOYW1lLCAnZWxlbWVudC13aXRoLXBhcmVudCcpOworICAgIGFzc2Vy
dF90cnVlKGluc3RhbmNlIGluc3RhbmNlb2YgSFRNTFVua25vd25FbGVtZW50KTsKK30sICdkb2N1
bWVudC5jcmVhdGVFbGVtZW50IG11c3QgcmVwb3J0IGEgTm90U3VwcG9ydGVkRXJyb3Igd2hlbiB0
aGUgZWxlbWVudCBnZXRzIGluc2VydGVkIGludG8gYW5vdGhlciBlbGVtZW50IGR1cmluZyBjb25z
dHJ1Y3Rpb24nKTsKIAogdGVzdChmdW5jdGlvbiAoKSB7CiAgICAgY2xhc3MgRWxlbWVudFdpdGhO
b1BhcmVudCBleHRlbmRzIEhUTUxFbGVtZW50IHsKQEAgLTE3MCw4ICsyMTYsMTAgQEAgdGVzdChm
dW5jdGlvbiAoKSB7CiAgICAgICAgIH0KICAgICB9OwogICAgIGN1c3RvbUVsZW1lbnRzLmRlZmlu
ZSgnZWxlbWVudC13aXRoLW5vLXBhcmVudCcsIEVsZW1lbnRXaXRoTm9QYXJlbnQpOwotICAgIGFz
c2VydF90cnVlKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2VsZW1lbnQtd2l0aC1uby1wYXJlbnQn
KSBpbnN0YW5jZW9mIEVsZW1lbnRXaXRoTm9QYXJlbnQpOwotfSwgJ2RvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQgbXVzdCBub3QgdGhyb3cgYSBOb3RTdXBwb3J0ZWRFcnJvciB3aGVuIHRoZSBlbGVtZW50
IGlzIGluc2VydGVkIGFuZCByZW1vdmVkIGZyb20gYW5vdGhlciBlbGVtZW50IGR1cmluZyBjb25z
dHJ1Y3Rpb24nKTsKKyAgICB2YXIgaW5zdGFuY2U7CisgICAgYXNzZXJ0X25vdF9yZXBvcnRzKGZ1
bmN0aW9uICgpIHsgaW5zdGFuY2UgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdlbGVtZW50LXdp
dGgtbm8tcGFyZW50Jyk7IH0pOworICAgIGFzc2VydF90cnVlKGluc3RhbmNlIGluc3RhbmNlb2Yg
RWxlbWVudFdpdGhOb1BhcmVudCk7Cit9LCAnZG9jdW1lbnQuY3JlYXRlRWxlbWVudCBtdXN0IG5v
dCByZXBvcnQgYSBOb3RTdXBwb3J0ZWRFcnJvciB3aGVuIHRoZSBlbGVtZW50IGlzIGluc2VydGVk
IGFuZCByZW1vdmVkIGZyb20gYW5vdGhlciBlbGVtZW50IGR1cmluZyBjb25zdHJ1Y3Rpb24nKTsK
IAogRG9jdW1lbnRUeXBlcy5mb3JFYWNoKGZ1bmN0aW9uIChlbnRyeSwgdGVzdE51bWJlcikgewog
ICAgIGlmIChlbnRyeS5pc093bmVyKQpAQCAtMTkyLDkgKzI0MCwxMiBAQCBEb2N1bWVudFR5cGVz
LmZvckVhY2goZnVuY3Rpb24gKGVudHJ5LCB0ZXN0TnVtYmVyKSB7CiAgICAgICAgICAgICB2YXIg
bmFtZSA9ICdlbGVtZW50LXdpdGgtYWRvcHQtY2FsbC0nICsgdGVzdE51bWJlcjsKICAgICAgICAg
ICAgIGN1c3RvbUVsZW1lbnRzLmRlZmluZShuYW1lLCBFbGVtZW50V2l0aEFkb3B0Q2FsbCk7CiAg
ICAgICAgICAgICBhc3NlcnRfdHJ1ZShuZXcgRWxlbWVudFdpdGhBZG9wdENhbGwgaW5zdGFuY2Vv
ZiBFbGVtZW50V2l0aEFkb3B0Q2FsbCk7Ci0gICAgICAgICAgICBhc3NlcnRfdGhyb3dzKHtuYW1l
OiAnTm90U3VwcG9ydGVkRXJyb3InfSwgZnVuY3Rpb24gKCkgeyBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KG5hbWUpOyB9KTsKKyAgICAgICAgICAgIHZhciBpbnN0YW5jZTsKKyAgICAgICAgICAgIGFz
c2VydF9yZXBvcnRzKHtuYW1lOiAnTm90U3VwcG9ydGVkRXJyb3InfSwgZnVuY3Rpb24gKCkgeyBp
bnN0YW5jZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQobmFtZSk7IH0pOworICAgICAgICAgICAg
YXNzZXJ0X2VxdWFscyhpbnN0YW5jZS5sb2NhbE5hbWUsIG5hbWUpOworICAgICAgICAgICAgYXNz
ZXJ0X3RydWUoaW5zdGFuY2UgaW5zdGFuY2VvZiBIVE1MVW5rbm93bkVsZW1lbnQpOwogICAgICAg
ICB9KTsKLSAgICB9LCAnZG9jdW1lbnQuY3JlYXRlRWxlbWVudCBtdXN0IHRocm93IGEgTm90U3Vw
cG9ydGVkRXJyb3Igd2hlbiB0aGUgZWxlbWVudCBpcyBhZG9wdGVkIGludG8gYSAnICsgZG9jdWVt
bnROYW1lICsgJyBkdXJpbmcgY29uc3RydWN0aW9uJyk7CisgICAgfSwgJ2RvY3VtZW50LmNyZWF0
ZUVsZW1lbnQgbXVzdCByZXBvcnQgYSBOb3RTdXBwb3J0ZWRFcnJvciB3aGVuIHRoZSBlbGVtZW50
IGlzIGFkb3B0ZWQgaW50byBhICcgKyBkb2N1ZW1udE5hbWUgKyAnIGR1cmluZyBjb25zdHJ1Y3Rp
b24nKTsKIAogICAgIHByb21pc2VfdGVzdChmdW5jdGlvbiAoKSB7CiAgICAgICAgIHJldHVybiBn
ZXREb2N1bWVudCgpLnRoZW4oZnVuY3Rpb24gKGRvYykgewpAQCAtMjA4LDkgKzI1OSwxMiBAQCBE
b2N1bWVudFR5cGVzLmZvckVhY2goZnVuY3Rpb24gKGVudHJ5LCB0ZXN0TnVtYmVyKSB7CiAgICAg
ICAgICAgICB2YXIgbmFtZSA9ICdlbGVtZW50LWluc2VydGVkLWludG8tYW5vdGhlci1kb2N1bWVu
dC0nICsgdGVzdE51bWJlcjsKICAgICAgICAgICAgIGN1c3RvbUVsZW1lbnRzLmRlZmluZShuYW1l
LCBFbGVtZW50SW5zZXJ0ZWRJbnRvQW5vdGhlckRvY3VtZW50KTsKICAgICAgICAgICAgIGFzc2Vy
dF90cnVlKG5ldyBFbGVtZW50SW5zZXJ0ZWRJbnRvQW5vdGhlckRvY3VtZW50IGluc3RhbmNlb2Yg
RWxlbWVudEluc2VydGVkSW50b0Fub3RoZXJEb2N1bWVudCk7Ci0gICAgICAgICAgICBhc3NlcnRf
dGhyb3dzKHtuYW1lOiAnTm90U3VwcG9ydGVkRXJyb3InfSwgZnVuY3Rpb24gKCkgeyBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KG5hbWUpOyB9KTsKKyAgICAgICAgICAgIHZhciBpbnN0YW5jZTsKKyAg
ICAgICAgICAgIGFzc2VydF9yZXBvcnRzKHtuYW1lOiAnTm90U3VwcG9ydGVkRXJyb3InfSwgZnVu
Y3Rpb24gKCkgeyBpbnN0YW5jZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQobmFtZSk7IH0pOwor
ICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhpbnN0YW5jZS5sb2NhbE5hbWUsIG5hbWUpOworICAg
ICAgICAgICAgYXNzZXJ0X3RydWUoaW5zdGFuY2UgaW5zdGFuY2VvZiBIVE1MVW5rbm93bkVsZW1l
bnQpOwogICAgICAgICB9KTsKLSAgICB9LCAnZG9jdW1lbnQuY3JlYXRlRWxlbWVudCBtdXN0IHRo
cm93IGEgTm90U3VwcG9ydGVkRXJyb3Igd2hlbiB0aGUgZWxlbWVudCBpcyBpbnNlcnRlZCBpbnRv
IGEgJyArIGRvY3VlbW50TmFtZSArICcgZHVyaW5nIGNvbnN0cnVjdGlvbicpOworICAgIH0sICdk
b2N1bWVudC5jcmVhdGVFbGVtZW50IG11c3QgcmVwb3J0IGEgTm90U3VwcG9ydGVkRXJyb3Igd2hl
biB0aGUgZWxlbWVudCBpcyBpbnNlcnRlZCBpbnRvIGEgJyArIGRvY3VlbW50TmFtZSArICcgZHVy
aW5nIGNvbnN0cnVjdGlvbicpOwogCiAgICAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9uICgpIHsKICAg
ICAgICAgcmV0dXJuIGdldERvY3VtZW50KCkudGhlbihmdW5jdGlvbiAoZG9jKSB7CkBAIC0yMjQs
OSArMjc4LDExIEBAIERvY3VtZW50VHlwZXMuZm9yRWFjaChmdW5jdGlvbiAoZW50cnksIHRlc3RO
dW1iZXIpIHsKICAgICAgICAgICAgIH07CiAgICAgICAgICAgICB2YXIgbmFtZSA9ICdlbGVtZW50
LXRoYXQtZ2V0LWFkb3B0ZWQtYmFjaycgKyB0ZXN0TnVtYmVyOwogICAgICAgICAgICAgY3VzdG9t
RWxlbWVudHMuZGVmaW5lKG5hbWUsIEVsZW1lbnRUaGF0R2V0QWRvcHRlZEJhY2spOwotICAgICAg
ICAgICAgYXNzZXJ0X3RydWUoZG9jdW1lbnQuY3JlYXRlRWxlbWVudChuYW1lKSBpbnN0YW5jZW9m
IEVsZW1lbnRUaGF0R2V0QWRvcHRlZEJhY2spOworICAgICAgICAgICAgdmFyIGluc3RhbmNlOwor
ICAgICAgICAgICAgYXNzZXJ0X25vdF9yZXBvcnRzKGZ1bmN0aW9uICgpIHsgaW5zdGFuY2UgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KG5hbWUpOyB9KTsKKyAgICAgICAgICAgIGFzc2VydF90cnVl
KGluc3RhbmNlIGluc3RhbmNlb2YgRWxlbWVudFRoYXRHZXRBZG9wdGVkQmFjayk7CiAgICAgICAg
IH0pOwotICAgIH0sICdkb2N1bWVudC5jcmVhdGVFbGVtZW50IG11c3Qgbm90IHRocm93IGEgTm90
U3VwcG9ydGVkRXJyb3Igd2hlbiB0aGUgZWxlbWVudCBpcyBhZG9wdGVkIGJhY2sgZnJvbSBhICcg
KyBkb2N1ZW1udE5hbWUgKyAnIGR1cmluZyBjb25zdHJ1Y3Rpb24nKTsKKyAgICB9LCAnZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCBtdXN0IG5vdCByZXBvcnQgYSBOb3RTdXBwb3J0ZWRFcnJvciB3aGVu
IHRoZSBlbGVtZW50IGlzIGFkb3B0ZWQgYmFjayBmcm9tIGEgJyArIGRvY3VlbW50TmFtZSArICcg
ZHVyaW5nIGNvbnN0cnVjdGlvbicpOwogfSk7CiAKIHRlc3QoZnVuY3Rpb24gKCkgewpAQCAtMjM5
LDExICsyOTUsMTQgQEAgdGVzdChmdW5jdGlvbiAoKSB7CiAgICAgfTsKICAgICBjdXN0b21FbGVt
ZW50cy5kZWZpbmUoJ2Rpdi1jdXN0b20tZWxlbWVudCcsIERpdkN1c3RvbUVsZW1lbnQpOwogICAg
IGFzc2VydF90cnVlKG5ldyBEaXZDdXN0b21FbGVtZW50IGluc3RhbmNlb2YgSFRNTERpdkVsZW1l
bnQpOwotICAgIGFzc2VydF90aHJvd3Moe25hbWU6ICdOb3RTdXBwb3J0ZWRFcnJvcid9LCBmdW5j
dGlvbiAoKSB7IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Rpdi1jdXN0b20tZWxlbWVudCcpOyB9
KTsKLX0sICdkb2N1bWVudC5jcmVhdGVFbGVtZW50IG11c3QgdGhyb3cgYSBOb3RTdXBwb3J0ZWRF
cnJvciB3aGVuIHRoZSBsb2NhbCBuYW1lIG9mIHRoZSBlbGVtZW50IGRvZXMgbm90IG1hdGNoIHRo
YXQgb2YgdGhlIGN1c3RvbSBlbGVtZW50Jyk7CisgICAgdmFyIGluc3RhbmNlOworICAgIGFzc2Vy
dF9yZXBvcnRzKHtuYW1lOiAnTm90U3VwcG9ydGVkRXJyb3InfSwgZnVuY3Rpb24gKCkgeyBpbnN0
YW5jZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Rpdi1jdXN0b20tZWxlbWVudCcpOyB9KTsK
KyAgICBhc3NlcnRfZXF1YWxzKGluc3RhbmNlLmxvY2FsTmFtZSwgJ2Rpdi1jdXN0b20tZWxlbWVu
dCcpOworICAgIGFzc2VydF90cnVlKGluc3RhbmNlIGluc3RhbmNlb2YgSFRNTFVua25vd25FbGVt
ZW50KTsKK30sICdkb2N1bWVudC5jcmVhdGVFbGVtZW50IG11c3QgcmVwb3J0IGEgTm90U3VwcG9y
dGVkRXJyb3Igd2hlbiB0aGUgbG9jYWwgbmFtZSBvZiB0aGUgZWxlbWVudCBkb2VzIG5vdCBtYXRj
aCB0aGF0IG9mIHRoZSBjdXN0b20gZWxlbWVudCcpOwogCiB0ZXN0KGZ1bmN0aW9uICgpIHsKLSAg
ICB2YXIgZXhjZXB0aW9uVG9UaHJvdyA9IHttZXNzYWdlOiAnZXhjZXB0aW9uIHRocm93biBieSBh
IGN1c3RvbSBjb25zdHJ1Y3Rvcid9OworICAgIHZhciBleGNlcHRpb25Ub1Rocm93ID0ge25hbWU6
ICdleGNlcHRpb24gdGhyb3duIGJ5IGEgY3VzdG9tIGNvbnN0cnVjdG9yJ307CiAgICAgY2xhc3Mg
VGhyb3dDdXN0b21FbGVtZW50IGV4dGVuZHMgSFRNTEVsZW1lbnQgewogICAgICAgICBjb25zdHJ1
Y3RvcigpCiAgICAgICAgIHsKQEAgLTI1NCwyMSArMzEzLDE4IEBAIHRlc3QoZnVuY3Rpb24gKCkg
ewogICAgIH07CiAgICAgY3VzdG9tRWxlbWVudHMuZGVmaW5lKCd0aHJvdy1jdXN0b20tZWxlbWVu
dCcsIFRocm93Q3VzdG9tRWxlbWVudCk7CiAKLSAgICBhc3NlcnRfdGhyb3dzKG51bGwsIGZ1bmN0
aW9uICgpIHsgbmV3IFRocm93Q3VzdG9tRWxlbWVudDsgfSk7Ci0KLSAgICB0cnkgewotICAgICAg
ICBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0aHJvdy1jdXN0b20tZWxlbWVudCcpOwotICAgICAg
ICBhc3NlcnQoZmFsc2UsICdkb2N1bWVudC5jcmVhdGVFbGVtZW50IG11c3QgdGhyb3cgd2hlbiBh
IGN1c3RvbSBlbGVtZW50IGNvbnN0cnVjdG9yIHRocm93cycpOwotICAgIH0gY2F0Y2ggKGV4Y2Vw
dGlvbikgewotICAgICAgICBhc3NlcnRfZXF1YWxzKGV4Y2VwdGlvbiwgZXhjZXB0aW9uVG9UaHJv
dywgJ2RvY3VtZW50LmNyZWF0ZUVsZW1lbnQgbXVzdCB0aHJvdyB0aGUgc2FtZSBleGNlcHRpb24g
Y3VzdG9tIGVsZW1lbnQgY29uc3RydWN0b3IgdGhyb3dzJyk7Ci0gICAgfQorICAgIGFzc2VydF90
aHJvd3MoZXhjZXB0aW9uVG9UaHJvdywgZnVuY3Rpb24gKCkgeyBuZXcgVGhyb3dDdXN0b21FbGVt
ZW50OyB9KTsKKyAgICB2YXIgaW5zdGFuY2U7CisgICAgYXNzZXJ0X3JlcG9ydHMoZXhjZXB0aW9u
VG9UaHJvdywgZnVuY3Rpb24gKCkgeyBpbnN0YW5jZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
J3Rocm93LWN1c3RvbS1lbGVtZW50Jyk7IH0pOworICAgIGFzc2VydF9lcXVhbHMoaW5zdGFuY2Uu
bG9jYWxOYW1lLCAndGhyb3ctY3VzdG9tLWVsZW1lbnQnKTsKKyAgICBhc3NlcnRfdHJ1ZShpbnN0
YW5jZSBpbnN0YW5jZW9mIEhUTUxVbmtub3duRWxlbWVudCk7CiAKICAgICBleGNlcHRpb25Ub1Ro
cm93ID0gZmFsc2U7CiAgICAgdmFyIGluc3RhbmNlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgn
dGhyb3ctY3VzdG9tLWVsZW1lbnQnKTsKICAgICBhc3NlcnRfdHJ1ZShpbnN0YW5jZSBpbnN0YW5j
ZW9mIFRocm93Q3VzdG9tRWxlbWVudCk7CiAgICAgYXNzZXJ0X2VxdWFscyhpbnN0YW5jZS5sb2Nh
bE5hbWUsICd0aHJvdy1jdXN0b20tZWxlbWVudCcpOwogCi19LCAnZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCBtdXN0IHJlLXRocm93IGFuIGV4Y2VwdGlvbiB0aHJvd24gYnkgYSBjdXN0b20gZWxlbWVu
dCBjb25zdHJ1Y3RvcicpOworfSwgJ2RvY3VtZW50LmNyZWF0ZUVsZW1lbnQgbXVzdCByZXBvcnQg
YW4gZXhjZXB0aW9uIHRocm93biBieSBhIGN1c3RvbSBlbGVtZW50IGNvbnN0cnVjdG9yJyk7CiAK
IDwvc2NyaXB0PgogPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jdXN0b20t
ZWxlbWVudHMvZGVmaW5lZC1wc2V1ZG8tY2xhc3MtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
ZmFzdC9jdXN0b20tZWxlbWVudHMvZGVmaW5lZC1wc2V1ZG8tY2xhc3MtZXhwZWN0ZWQudHh0Cmlu
ZGV4IDI0YmJkNTY4ZTI3MGNkMDQ1Y2YwMGJiMTA2ZTk3MjZmNjM2MzVhZGIuLjE4ZDQwMDk4ODc5
OTdhYzljYmFkYTczZmYyOWYzYmNiYjc4Mjg2ZDQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zh
c3QvY3VzdG9tLWVsZW1lbnRzL2RlZmluZWQtcHNldWRvLWNsYXNzLWV4cGVjdGVkLnR4dAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2N1c3RvbS1lbGVtZW50cy9kZWZpbmVkLXBzZXVkby1jbGFzcy1l
eHBlY3RlZC50eHQKQEAgLTEsNiArMSwzIEBACi1DT05TT0xFIE1FU1NBR0U6IGxpbmUgNzk6IFR5
cGVFcnJvcjogVGhlIHJlc3VsdCBvZiBjb25zdHJ1Y3RpbmcgYSBjdXN0b20gZWxlbWVudCBtdXN0
IGJlIGEgSFRNTEVsZW1lbnQKLQotSGFybmVzcyBFcnJvciAoRkFJTCksIG1lc3NhZ2UgPSBUeXBl
RXJyb3I6IFRoZSByZXN1bHQgb2YgY29uc3RydWN0aW5nIGEgY3VzdG9tIGVsZW1lbnQgbXVzdCBi
ZSBhIEhUTUxFbGVtZW50CiAKIFBBU1MgVGhlIGRlZmluZWQgZmxhZyBvZiBhIGN1c3RvbSBlbGVt
ZW50IG11c3Qgbm90IGJlIHNldCBpZiBhIGN1c3RvbSBlbGVtZW50IGhhcyBub3QgYmVlbiB1cGdy
YWRlZCB5ZXQgCiBQQVNTIFRoZSBkZWZpbmVkIGZsYWcgb2YgYSBjdXN0b20gZWxlbWVudCBtdXN0
IG5vdCBiZSBzZXQgaWYgYSBjdXN0b20gZWxlbWVudCBoYXMgbm90IGJlZW4gdXBncmFkZWQgeWV0
IGV2ZW4gaWYgdGhlIGVsZW1lbnQgaGFzIGJlZW4gZGVmaW5lZCAKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvY3VzdG9tLWVsZW1lbnRzL2RlZmluZWQtcHNldWRvLWNsYXNzLmh0bWwgYi9M
YXlvdXRUZXN0cy9mYXN0L2N1c3RvbS1lbGVtZW50cy9kZWZpbmVkLXBzZXVkby1jbGFzcy5odG1s
CmluZGV4IGVjYTBlZmY4ZDhjNDVhMzkxMjIyNzhmOGUzYTE3ZjVjMzEzMTRhNGUuLjA2MjBmY2Qz
NzBhZjIzYTVhMjk5ZjMwYjI4YmM5MTBiYTk0YmFhNzUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2Zhc3QvY3VzdG9tLWVsZW1lbnRzL2RlZmluZWQtcHNldWRvLWNsYXNzLmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVudHMvZGVmaW5lZC1wc2V1ZG8tY2xhc3MuaHRtbApA
QCAtMTEsNiArMTEsNyBAQAogPGJvZHk+CiA8ZGl2IGlkPSJsb2ciPjwvZGl2PgogPHNjcmlwdD4K
K3NldHVwKHthbGxvd191bmNhdWdodF9leGNlcHRpb246dHJ1ZX0pOwogCiB2YXIgdXBncmFkZUNh
bmRpZGF0ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ215LWVsZW1lbnQnKTsKIApAQCAtNzYs
MTAgKzc3LDE0IEBAIGNsYXNzIFJldHVybnNBbm90aGVyTm9kZSBleHRlbmRzIEhUTUxFbGVtZW50
IHsKIH0KIGN1c3RvbUVsZW1lbnRzLmRlZmluZSgncmV0dXJucy1hbm90aGVyLW5vZGUnLCBSZXR1
cm5zQW5vdGhlck5vZGUpOwogCit2YXIgdW5jYXVnaHRFcnJvcjsKK3dpbmRvdy5vbmVycm9yID0g
ZnVuY3Rpb24gKG1lc3NhZ2UsIHVybCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBlcnJvcikg
eyB1bmNhdWdodEVycm9yID0gZXJyb3I7IHJldHVybiB0cnVlOyB9CiBkb2N1bWVudC53cml0ZSgn
PHJldHVybnMtYW5vdGhlci1ub2RlPjwvcmV0dXJucy1hbm90aGVyLW5vZGU+Jyk7Cit3aW5kb3cu
b25lcnJvciA9IG51bGw7CiAKIHRlc3QoZnVuY3Rpb24gKCkgewogICAgIHZhciBpbnN0YW5jZSA9
IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ3JldHVybnMtYW5vdGhlci1ub2RlJyk7CisgICAgYXNz
ZXJ0X2VxdWFscyh1bmNhdWdodEVycm9yLm5hbWUsICdUeXBlRXJyb3InLCAnVGhlIEhUTUwgcGFy
c2VyIG11c3QgcmVwb3J0IGEgVHlwZUVycm9yIHdoZW4gYSBjdXN0b20gZWxlbWVudCByZXR1cm5z
IGEgbm9uLUVsZW1lbnQgbm9kZS4nKTsKICAgICBhc3NlcnRfbm90X2VxdWFscyhpbnN0YW5jZSwg
UmV0dXJuc0Fub3RoZXJOb2RlLmxhc3RJbnN0YW5jZSwgJ1RoZSBlbGVtZW50IGluc2VydGVkIGJ5
IEhUTUwgcGFyc2VyIG11c3Qgbm90IGJlIHRoZSBvbmUgcmV0dXJuZWQgYnkgc3VwZXIoKSBjYWxs
Jyk7CiAgICAgYXNzZXJ0X3RydWUoaW5zdGFuY2UgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCwgJ1Ro
ZSBlbGVtZW50IGluc2VydGVkIGJ5IEhUTUwgcGFyc2VyIG11c3QgYmUgYSBIVE1MRWxlbWVudCcp
OwogICAgIGFzc2VydF9mYWxzZShpbnN0YW5jZSBpbnN0YW5jZW9mIFJldHVybnNBbm90aGVyTm9k
ZSwgJ1RoZSBlbGVtZW50IGluc2VydGVkIGJ5IEhUTUwgcGFyc2VyIG11c3QgYmUgYSBjdXN0b20g
ZWxlbWVudCcpOwpAQCAtMTAwLDE1ICsxMDUsMTYgQEAgdGVzdChmdW5jdGlvbiAoKSB7CiAKIHRl
c3QoZnVuY3Rpb24gKCkgewogICAgIHZhciBtYXRjaEluc2lkZUNvbnN0cnVjdG9yID0gZmFsc2U7
Ci0gICAgY3VzdG9tRWxlbWVudHMuZGVmaW5lKCd0aHJvd3MtZXhjZXB0aW9uJywgY2xhc3MgZXh0
ZW5kcyBIVE1MRWxlbWVudCB7CisgICAgY2xhc3MgVGhyb3dzRXhjZXB0aW9uIGV4dGVuZHMgSFRN
TEVsZW1lbnQgewogICAgICAgICBjb25zdHJ1Y3RvcigpIHsKICAgICAgICAgICAgIHN1cGVyKCk7
CiAgICAgICAgICAgICBtYXRjaEluc2lkZUNvbnN0cnVjdG9yID0gdGhpcy5tYXRjaGVzKCc6ZGVm
aW5lZCcpOwogICAgICAgICAgICAgdGhyb3cge25hbWU6ICdiYWQnfTsKICAgICAgICAgfQotICAg
IH0pOworICAgIH07CisgICAgY3VzdG9tRWxlbWVudHMuZGVmaW5lKCd0aHJvd3MtZXhjZXB0aW9u
JywgVGhyb3dzRXhjZXB0aW9uKTsKICAgICB2YXIgaW5zdGFuY2U7Ci0gICAgYXNzZXJ0X3Rocm93
cyh7bmFtZTogJ2JhZCd9LCBmdW5jdGlvbiAoKSB7IGluc3RhbmNlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgndGhyb3dzLWV4Y2VwdGlvbicpOyB9KTsKKyAgICBhc3NlcnRfdGhyb3dzKHtuYW1l
OiAnYmFkJ30sIGZ1bmN0aW9uICgpIHsgaW5zdGFuY2UgPSBuZXcgVGhyb3dzRXhjZXB0aW9uOyB9
KTsKICAgICBhc3NlcnRfdHJ1ZShtYXRjaEluc2lkZUNvbnN0cnVjdG9yKTsKIH0sICdUaGUgZGVm
aW5lZCBmbGFnIG9mIGEgY3VzdG9tIGVsZW1lbnQgbXVzdCBiZSBzZXQgaW5zaWRlIGEgY29uc3Ry
dWN0b3Igd2hlbiBjb25zdHJ1Y3RpbmcgYSBjdXN0b20gZWxlbWVudCBzeW5jaHJvbm91c2x5Jwog
ICAgICsgJyBldmVuIGlmIHRoZSBjb25zdHJ1Y3RvciB0aHJldyBhbiBleGNlcHRpb24gbGF0ZXIn
KTsKQEAgLTExNiwxMyArMTIyLDE0IEBAIHRlc3QoZnVuY3Rpb24gKCkgewogdGVzdChmdW5jdGlv
biAoKSB7CiAgICAgdmFyIGluc3RhbmNlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGhyb3dz
LWV4Y2VwdGlvbi0yJyk7CiAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpbnN0YW5jZSk7
Ci0gICAgYXNzZXJ0X3Rocm93cyh7bmFtZTogJ2JhZCd9LCBmdW5jdGlvbiAoKSB7Ci0gICAgICAg
IGN1c3RvbUVsZW1lbnRzLmRlZmluZSgndGhyb3dzLWV4Y2VwdGlvbi0yJywgY2xhc3MgZXh0ZW5k
cyBIVE1MRWxlbWVudCB7Ci0gICAgICAgICAgICBjb25zdHJ1Y3RvcigpIHsKLSAgICAgICAgICAg
ICAgICB0aHJvdyB7bmFtZTogJ2JhZCd9OwotICAgICAgICAgICAgfQotICAgICAgICB9KTsKKyAg
ICB2YXIgdW5jYXVnaHRFcnJvcjsKKyAgICB3aW5kb3cub25lcnJvciA9IGZ1bmN0aW9uIChtZXNz
YWdlLCB1cmwsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgZXJyb3IpIHsgdW5jYXVnaHRFcnJv
ciA9IGVycm9yOyByZXR1cm4gdHJ1ZTsgfQorICAgIGN1c3RvbUVsZW1lbnRzLmRlZmluZSgndGhy
b3dzLWV4Y2VwdGlvbi0yJywgY2xhc3MgZXh0ZW5kcyBIVE1MRWxlbWVudCB7CisgICAgICAgIGNv
bnN0cnVjdG9yKCkgeworICAgICAgICAgICAgdGhyb3cge25hbWU6ICdiYWQnfTsKKyAgICAgICAg
fQogICAgIH0pOworICAgIGFzc2VydF9lcXVhbHModW5jYXVnaHRFcnJvci5uYW1lLCAnYmFkJyk7
CiAgICAgYXNzZXJ0X2ZhbHNlKGluc3RhbmNlLm1hdGNoZXMoJzpkZWZpbmVkJykpOwogfSwgJ1Ro
ZSBkZWZpbmVkIGZsYWcgb2YgYSBjdXN0b20gZWxlbWVudCBtdXN0IG5vdCBiZSBzZXQgd2hlbiBh
biB1cGdyYWRlIG9mIGEgY3VzdG9tIGVsZW1lbnQgZmFpbHMnKTsKIApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVudHMvdXBncmFkaW5nL05vZGUtY2xvbmVOb2RlLmh0
bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2N1c3RvbS1lbGVtZW50cy91cGdyYWRpbmcvTm9kZS1jbG9u
ZU5vZGUuaHRtbAppbmRleCBiNTU4M2EzNWYzNTk0MWRhYTkxZjQxNDdlNDFjZWIwNWRiYTVkN2Y3
Li4zZDNhODU5YzYwNjRlNzU3MDM5ZWJlMjhhYjFlY2NmNDA2YTViOWVhIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9mYXN0L2N1c3RvbS1lbGVtZW50cy91cGdyYWRpbmcvTm9kZS1jbG9uZU5vZGUu
aHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2N1c3RvbS1lbGVtZW50cy91cGdyYWRpbmcvTm9k
ZS1jbG9uZU5vZGUuaHRtbApAQCAtMTIzLDggKzEyMywxMSBAQCB0ZXN0KGZ1bmN0aW9uICgpIHsK
ICAgICAgICAgfQogICAgICAgICBjb250ZW50V2luZG93LmN1c3RvbUVsZW1lbnRzLmRlZmluZSgn
bXktY3VzdG9tLWVsZW1lbnQnLCBNeUN1c3RvbUVsZW1lbnQpOwogCi0gICAgICAgIHZhciBpbnN0
YW5jZSA9IGNvbnRlbnREb2N1bWVudC5jcmVhdGVFbGVtZW50KCdteS1jdXN0b20tZWxlbWVudCcp
OwotICAgICAgICBhc3NlcnRfdGhyb3dzKHsnbmFtZSc6ICdJbnZhbGlkU3RhdGVFcnJvcid9LCBm
dW5jdGlvbiAoKSB7IGluc3RhbmNlLmNsb25lTm9kZShmYWxzZSk7IH0pOworICAgICAgICB2YXIg
aW5zdGFuY2UgPSBuZXcgTXlDdXN0b21FbGVtZW50KGZhbHNlKTsKKyAgICAgICAgdmFyIHVuY2F1
Z2h0RXJyb3I7CisgICAgICAgIGNvbnRlbnRXaW5kb3cub25lcnJvciA9IGZ1bmN0aW9uIChtZXNz
YWdlLCB1cmwsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgZXJyb3IpIHsgdW5jYXVnaHRFcnJv
ciA9IGVycm9yOyByZXR1cm4gdHJ1ZTsgfQorICAgICAgICBpbnN0YW5jZS5jbG9uZU5vZGUoZmFs
c2UpOworICAgICAgICBhc3NlcnRfZXF1YWxzKHVuY2F1Z2h0RXJyb3IubmFtZSwgJ0ludmFsaWRT
dGF0ZUVycm9yJyk7CiAgICAgfSk7CiB9LCAnSFRNTEVsZW1lbnQgY29uc3RydWN0b3IgbXVzdCB0
aHJvdyBhbiBJbnZhbGlkU3RhdGVFcnJvciB3aGVuIHRoZSB0b3Agb2YgdGhlIGNvbnN0cnVjdGlv
biBzdGFjayBpcyBtYXJrZWQgQWxyZWFkeUNvbnN0cnVjdGVkJwogICAgICsgJyBkdWUgdG8gYSBj
dXN0b20gZWxlbWVudCBjb25zdHJ1Y3RvciBjb25zdHJ1Y3RpbmcgaXRzZWxmIGFmdGVyIHN1cGVy
KCkgY2FsbCcpOwpAQCAtMTQwLDI3ICsxNDMsMzMgQEAgdGVzdChmdW5jdGlvbiAoKSB7CiAgICAg
ICAgIH0KICAgICAgICAgY29udGVudFdpbmRvdy5jdXN0b21FbGVtZW50cy5kZWZpbmUoJ215LWN1
c3RvbS1lbGVtZW50JywgTXlDdXN0b21FbGVtZW50KTsKIAotICAgICAgICB2YXIgaW5zdGFuY2Ug
PSBjb250ZW50RG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbXktY3VzdG9tLWVsZW1lbnQnKTsKLSAg
ICAgICAgYXNzZXJ0X3Rocm93cyh7J25hbWUnOiAnSW52YWxpZFN0YXRlRXJyb3InfSwgZnVuY3Rp
b24gKCkgeyBpbnN0YW5jZS5jbG9uZU5vZGUoZmFsc2UpOyB9KTsKKyAgICAgICAgdmFyIGluc3Rh
bmNlID0gbmV3IE15Q3VzdG9tRWxlbWVudChmYWxzZSk7CisgICAgICAgIHZhciB1bmNhdWdodEVy
cm9yOworICAgICAgICBjb250ZW50V2luZG93Lm9uZXJyb3IgPSBmdW5jdGlvbiAobWVzc2FnZSwg
dXJsLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGVycm9yKSB7IHVuY2F1Z2h0RXJyb3IgPSBl
cnJvcjsgcmV0dXJuIHRydWU7IH0KKyAgICAgICAgaW5zdGFuY2UuY2xvbmVOb2RlKGZhbHNlKTsK
KyAgICAgICAgYXNzZXJ0X2VxdWFscyh1bmNhdWdodEVycm9yLm5hbWUsICdJbnZhbGlkU3RhdGVF
cnJvcicpOwogICAgIH0pOwogfSwgJ0hUTUxFbGVtZW50IGNvbnN0cnVjdG9yIG11c3QgdGhyb3cg
YW4gSW52YWxpZFN0YXRlRXJyb3Igd2hlbiB0aGUgdG9wIG9mIHRoZSBjb25zdHJ1Y3Rpb24gc3Rh
Y2sgaXMgbWFya2VkIEFscmVhZHlDb25zdHJ1Y3RlZCcKICAgICArICcgZHVlIHRvIGEgY3VzdG9t
IGVsZW1lbnQgY29uc3RydWN0b3IgY29uc3RydWN0aW5nIGl0c2VsZiBiZWZvcmUgc3VwZXIoKSBj
YWxsJyk7CiAKIHRlc3QoZnVuY3Rpb24gKCkgewogICAgIHdpdGhOZXdEb2N1bWVudFdpdGhBQnJv
d3NpbmdDb250ZXh0KGZ1bmN0aW9uIChjb250ZW50V2luZG93LCBjb250ZW50RG9jdW1lbnQpIHsK
LSAgICAgICAgdmFyIGNsb25pbmcgPSBmYWxzZTsKKyAgICAgICAgdmFyIHJldHVyblNwYW4gPSBm
YWxzZTsKICAgICAgICAgY2xhc3MgTXlDdXN0b21FbGVtZW50IGV4dGVuZHMgY29udGVudFdpbmRv
dy5IVE1MRWxlbWVudCB7CiAgICAgICAgICAgICBjb25zdHJ1Y3RvcigpIHsKICAgICAgICAgICAg
ICAgICBzdXBlcigpOwotICAgICAgICAgICAgICAgIGlmIChjbG9uaW5nKQorICAgICAgICAgICAg
ICAgIGlmIChyZXR1cm5TcGFuKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29udGVudERv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQog
ICAgICAgICBjb250ZW50V2luZG93LmN1c3RvbUVsZW1lbnRzLmRlZmluZSgnbXktY3VzdG9tLWVs
ZW1lbnQnLCBNeUN1c3RvbUVsZW1lbnQpOwogCi0gICAgICAgIHZhciBpbnN0YW5jZSA9IGNvbnRl
bnREb2N1bWVudC5jcmVhdGVFbGVtZW50KCdteS1jdXN0b20tZWxlbWVudCcpOwotICAgICAgICBj
bG9uaW5nID0gdHJ1ZTsKLSAgICAgICAgYXNzZXJ0X3Rocm93cyh7J25hbWUnOiAnSW52YWxpZFN0
YXRlRXJyb3InfSwgZnVuY3Rpb24gKCkgeyBpbnN0YW5jZS5jbG9uZU5vZGUoZmFsc2UpOyB9KTsK
KyAgICAgICAgdmFyIGluc3RhbmNlID0gbmV3IE15Q3VzdG9tRWxlbWVudChmYWxzZSk7CisgICAg
ICAgIHJldHVyblNwYW4gPSB0cnVlOworICAgICAgICB2YXIgdW5jYXVnaHRFcnJvcjsKKyAgICAg
ICAgY29udGVudFdpbmRvdy5vbmVycm9yID0gZnVuY3Rpb24gKG1lc3NhZ2UsIHVybCwgbGluZU51
bWJlciwgY29sdW1uTnVtYmVyLCBlcnJvcikgeyB1bmNhdWdodEVycm9yID0gZXJyb3I7IHJldHVy
biB0cnVlOyB9CisgICAgICAgIGluc3RhbmNlLmNsb25lTm9kZShmYWxzZSk7CisgICAgICAgIGFz
c2VydF9lcXVhbHModW5jYXVnaHRFcnJvci5uYW1lLCAnSW52YWxpZFN0YXRlRXJyb3InKTsKICAg
ICB9KTsKIH0sICdVcGdyYWRpbmcgYSBjdXN0b20gZWxlbWVudCBtdXN0IHRocm93IEludmFsaWRT
dGF0ZUVycm9yIHdoZW4gdGhlIGN1c3RvbSBlbGVtZW50XCdzIGNvbnN0cnVjdG9yIHJldHVybnMg
YW5vdGhlciBlbGVtZW50Jyk7CiAKQEAgLTE3OSw5ICsxODgsMTAgQEAgdGVzdChmdW5jdGlvbiAo
KSB7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICB0cnkgewotICAgICAgICAg
ICAgY29udGVudFdpbmRvdy5jdXN0b21FbGVtZW50cy5kZWZpbmUoJ215LWN1c3RvbS1lbGVtZW50
JywgTXlDdXN0b21FbGVtZW50KTsKLSAgICAgICAgfSBjYXRjaCAoZSkgeyB9CisgICAgICAgIHZh
ciB1bmNhdWdodEVycm9yOworICAgICAgICBjb250ZW50V2luZG93Lm9uZXJyb3IgPSBmdW5jdGlv
biAobWVzc2FnZSwgdXJsLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGVycm9yKSB7IHVuY2F1
Z2h0RXJyb3IgPSBlcnJvcjsgcmV0dXJuIHRydWU7IH0KKyAgICAgICAgY29udGVudFdpbmRvdy5j
dXN0b21FbGVtZW50cy5kZWZpbmUoJ215LWN1c3RvbS1lbGVtZW50JywgTXlDdXN0b21FbGVtZW50
KTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyh1bmNhdWdodEVycm9yLCAnYmFkJyk7CiAKICAgICAg
ICAgYXNzZXJ0X2FycmF5X2VxdWFscyhjYWxscywgW2luc3RhbmNlXSk7CiAgICAgICAgIGNvbnRl
bnREb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGluc3RhbmNlKTsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvY3VzdG9tLWVsZW1lbnRzL3VwZ3JhZGluZy91cGdyYWRpbmctcGFyc2VyLWNy
ZWF0ZWQtZWxlbWVudC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVudHMvdXBn
cmFkaW5nL3VwZ3JhZGluZy1wYXJzZXItY3JlYXRlZC1lbGVtZW50Lmh0bWwKaW5kZXggNDQyNWY4
N2MzNTdiNTMyYWMwM2RkYjNiN2JiYWJjZTk4YmI4YjYxNy4uYTg4OTE2MzZkZmE3MTJhZmE1Mzdj
YzVkN2Q5YmNjZGQ4Yzc2OTA5YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9jdXN0b20t
ZWxlbWVudHMvdXBncmFkaW5nL3VwZ3JhZGluZy1wYXJzZXItY3JlYXRlZC1lbGVtZW50Lmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVudHMvdXBncmFkaW5nL3VwZ3JhZGlu
Zy1wYXJzZXItY3JlYXRlZC1lbGVtZW50Lmh0bWwKQEAgLTE4LDYgKzE4LDggQEAKIDxteS1vdGhl
ci1lbGVtZW50IGlkPSJvdGhlckluc3RhbmNlIj48L215LW90aGVyLWVsZW1lbnQ+CiA8c2NyaXB0
PgogCitzZXR1cCh7YWxsb3dfdW5jYXVnaHRfZXhjZXB0aW9uOnRydWV9KTsKKwogdGVzdChmdW5j
dGlvbiAoKSB7CiAgICAgY2xhc3MgTXlDdXN0b21FbGVtZW50IGV4dGVuZHMgSFRNTEVsZW1lbnQg
eyB9CiAKQEAgLTM1LDcgKzM3LDYgQEAgdGVzdChmdW5jdGlvbiAoKSB7CiAKIH0sICdFbGVtZW50
LnByb3RvdHlwZS5jcmVhdGVFbGVtZW50IG11c3QgYWRkIGFuIHVucmVzb2x2ZWQgY3VzdG9tIGVs
ZW1lbnQgdG8gdGhlIHVwZ3JhZGUgY2FuZGlkYXRlcyBtYXAnKTsKIAotCiB0ZXN0KGZ1bmN0aW9u
ICgpIHsKICAgICBjbGFzcyBJbnN0YW50aWF0ZXNJdHNlbGZBZnRlclN1cGVyIGV4dGVuZHMgSFRN
TEVsZW1lbnQgewogICAgICAgICBjb25zdHJ1Y3Rvcihkb05vdENyZWF0ZUl0c2VsZikgewpAQCAt
NDUsOSArNDYsMTAgQEAgdGVzdChmdW5jdGlvbiAoKSB7CiAgICAgICAgIH0KICAgICB9CiAKLSAg
ICBhc3NlcnRfdGhyb3dzKHsnbmFtZSc6ICdJbnZhbGlkU3RhdGVFcnJvcid9LCBmdW5jdGlvbiAo
KSB7Ci0gICAgICAgIGN1c3RvbUVsZW1lbnRzLmRlZmluZSgnaW5zdGFudGlhdGVzLWl0c2VsZi1h
ZnRlci1zdXBlcicsIEluc3RhbnRpYXRlc0l0c2VsZkFmdGVyU3VwZXIpOwotICAgIH0pOworICAg
IHZhciB1bmNhdWdodEVycm9yOworICAgIHdpbmRvdy5vbmVycm9yID0gZnVuY3Rpb24gKG1lc3Nh
Z2UsIHVybCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBlcnJvcikgeyB1bmNhdWdodEVycm9y
ID0gZXJyb3I7IHJldHVybiB0cnVlOyB9CisgICAgY3VzdG9tRWxlbWVudHMuZGVmaW5lKCdpbnN0
YW50aWF0ZXMtaXRzZWxmLWFmdGVyLXN1cGVyJywgSW5zdGFudGlhdGVzSXRzZWxmQWZ0ZXJTdXBl
cik7CisgICAgYXNzZXJ0X2VxdWFscyh1bmNhdWdodEVycm9yLm5hbWUsICdJbnZhbGlkU3RhdGVF
cnJvcicpOwogfSwgJ0hUTUxFbGVtZW50IGNvbnN0cnVjdG9yIG11c3QgdGhyb3cgYW4gSW52YWxp
ZFN0YXRlRXJyb3Igd2hlbiB0aGUgdG9wIG9mIHRoZSBjb25zdHJ1Y3Rpb24gc3RhY2sgaXMgbWFy
a2VkIEFscmVhZHlDb25zdHJ1Y3RlZCcKICAgICArICcgZHVlIHRvIGEgY3VzdG9tIGVsZW1lbnQg
Y29uc3RydWN0b3IgY29uc3RydWN0aW5nIGl0c2VsZiBhZnRlciBzdXBlcigpIGNhbGwnKTsKIApA
QCAtNjAsOSArNjIsMTAgQEAgdGVzdChmdW5jdGlvbiAoKSB7CiAgICAgICAgIH0KICAgICB9CiAK
LSAgICBhc3NlcnRfdGhyb3dzKHsnbmFtZSc6ICdJbnZhbGlkU3RhdGVFcnJvcid9LCBmdW5jdGlv
biAoKSB7Ci0gICAgICAgIGN1c3RvbUVsZW1lbnRzLmRlZmluZSgnaW5zdGFudGlhdGVzLWl0c2Vs
Zi1iZWZvcmUtc3VwZXInLCBJbnN0YW50aWF0ZXNJdHNlbGZCZWZvcmVTdXBlcik7Ci0gICAgfSk7
CisgICAgdmFyIHVuY2F1Z2h0RXJyb3I7CisgICAgd2luZG93Lm9uZXJyb3IgPSBmdW5jdGlvbiAo
bWVzc2FnZSwgdXJsLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGVycm9yKSB7IHVuY2F1Z2h0
RXJyb3IgPSBlcnJvcjsgcmV0dXJuIHRydWU7IH0KKyAgICBjdXN0b21FbGVtZW50cy5kZWZpbmUo
J2luc3RhbnRpYXRlcy1pdHNlbGYtYmVmb3JlLXN1cGVyJywgSW5zdGFudGlhdGVzSXRzZWxmQmVm
b3JlU3VwZXIpOworICAgIGFzc2VydF9lcXVhbHModW5jYXVnaHRFcnJvci5uYW1lLCAnSW52YWxp
ZFN0YXRlRXJyb3InKTsKIH0sICdIVE1MRWxlbWVudCBjb25zdHJ1Y3RvciBtdXN0IHRocm93IGFu
IEludmFsaWRTdGF0ZUVycm9yIHdoZW4gdGhlIHRvcCBvZiB0aGUgY29uc3RydWN0aW9uIHN0YWNr
IGlzIG1hcmtlZCBBbHJlYWR5Q29uc3RydWN0ZWQnCiAgICAgKyAnIGR1ZSB0byBhIGN1c3RvbSBl
bGVtZW50IGNvbnN0cnVjdG9yIGNvbnN0cnVjdGluZyBpdHNlbGYgYmVmb3JlIHN1cGVyKCkgY2Fs
bCcpOwogCkBAIC04MCwxMiArODMsMTQgQEAgdGVzdChmdW5jdGlvbiAoKSB7CiAgICAgYXNzZXJ0
X2ZhbHNlKGluc3RhbmNlIGluc3RhbmNlb2YgTXlPdGhlckVsZW1lbnQpOwogICAgIGFzc2VydF9m
YWxzZShvdGhlckluc3RhbmNlIGluc3RhbmNlb2YgTXlPdGhlckVsZW1lbnQpOwogCi0gICAgYXNz
ZXJ0X3Rocm93cyh7J25hbWUnOiAnSW52YWxpZFN0YXRlRXJyb3InfSwgZnVuY3Rpb24gKCkgewot
ICAgICAgICBjdXN0b21FbGVtZW50cy5kZWZpbmUoJ215LW90aGVyLWVsZW1lbnQnLCBNeU90aGVy
RWxlbWVudCk7Ci0gICAgfSk7CisgICAgdmFyIHVuY2F1Z2h0RXJyb3I7CisgICAgd2luZG93Lm9u
ZXJyb3IgPSBmdW5jdGlvbiAobWVzc2FnZSwgdXJsLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIs
IGVycm9yKSB7IHVuY2F1Z2h0RXJyb3IgPSBlcnJvcjsgcmV0dXJuIHRydWU7IH0KKyAgICBjdXN0
b21FbGVtZW50cy5kZWZpbmUoJ215LW90aGVyLWVsZW1lbnQnLCBNeU90aGVyRWxlbWVudCk7Cisg
ICAgYXNzZXJ0X2VxdWFscyh1bmNhdWdodEVycm9yLm5hbWUsICdJbnZhbGlkU3RhdGVFcnJvcicp
OwogCiAgICAgYXNzZXJ0X3RydWUoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbXktb3RoZXItZWxl
bWVudCcpIGluc3RhbmNlb2YgTXlPdGhlckVsZW1lbnQsCiAgICAgICAgICdVcGdyYWRpbmcgb2Yg
Y3VzdG9tIGVsZW1lbnRzIG11c3QgaGFwcGVuIGFmdGVyIHRoZSBkZWZpbml0aW9uIHdhcyBhZGRl
ZCB0byB0aGUgcmVnaXN0cnkuJyk7CisKIH0sICdVcGdyYWRpbmcgYSBjdXN0b20gZWxlbWVudCBt
dXN0IHRocm93IGFuIEludmFsaWRTdGF0ZUVycm9yIHdoZW4gdGhlIHJldHVybmVkIGVsZW1lbnQg
aXMgbm90IFNhbWVWYWx1ZSBhcyB0aGUgdXBncmFkZWQgZWxlbWVudCcpOwogCiA8L3NjcmlwdD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>