<?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>59191</bug_id>
          
          <creation_ts>2011-04-22 04:56:45 -0700</creation_ts>
          <short_desc>Web Inspector: js formatter should never insert new tokens or remove existing tokens and comments.</short_desc>
          <delta_ts>2011-04-22 06:46:03 -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>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Pavel Podivilov">podivilov</reporter>
          <assigned_to name="Pavel Podivilov">podivilov</assigned_to>
          <cc>abarth</cc>
    
    <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>eric</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>390716</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-04-22 04:56:45 -0700</bug_when>
    <thetext>Web Inspector: js formatter should never insert new tokens or remove existing tokens and comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>390718</commentid>
    <comment_count>1</comment_count>
      <attachid>90693</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-04-22 05:03:26 -0700</bug_when>
    <thetext>Created attachment 90693
New JavaScript formatter based on UglifyJS tokenizer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>390723</commentid>
    <comment_count>2</comment_count>
      <attachid>90693</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-04-22 05:24:07 -0700</bug_when>
    <thetext>Comment on attachment 90693
New JavaScript formatter based on UglifyJS tokenizer.

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

&gt; Source/WebCore/WebCore.vcproj/WebCore.vcproj:67476
&gt; +					RelativePath=&quot;..\inspector\front-end\UglifyJS\JavaScriptFormatter.js&quot;

Is this formatter a part of the Uglify package? If not, it should be stored outside the folder.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>390728</commentid>
    <comment_count>3</comment_count>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-04-22 05:35:41 -0700</bug_when>
    <thetext>Committed r84620: &lt;http://trac.webkit.org/changeset/84620&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>390755</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-04-22 06:46:03 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/84620 might have broken GTK Linux 32-bit Release
The following tests are not passing:
media/controls-strict.html</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>90693</attachid>
            <date>2011-04-22 05:03:26 -0700</date>
            <delta_ts>2011-04-22 05:24:06 -0700</delta_ts>
            <desc>New JavaScript formatter based on UglifyJS tokenizer.</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>107304</size>
            <attacher name="Pavel Podivilov">podivilov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAwN2EzNmI5Li4yNGE5YzVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDIg
QEAKKzIwMTEtMDQtMjIgIFBhdmVsIFBvZGl2aWxvdiAgPHBvZGl2aWxvdkBjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIElu
c3BlY3RvcjoganMgZm9ybWF0dGVyIHNob3VsZCBuZXZlciBpbnNlcnQgbmV3IHRva2VucyBvciBy
ZW1vdmUgZXhpc3RpbmcgdG9rZW5zIGFuZCBjb21tZW50cy4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU5MTkxCisKKyAgICAgICAgKiBXZWJDb3JlLmd5
cGk6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICog
aW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRGb3JtYXR0ZXIuanM6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuU2NyaXB0Rm9ybWF0dGVyLnByb3RvdHlwZS5mb3JtYXRDb250ZW50LmRpZEZvcm1hdENo
dW5rcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0Rm9ybWF0dGVyLnByb3RvdHlwZS5m
b3JtYXRDb250ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdEZvcm1h
dHRlcldvcmtlci5qczoKKyAgICAgICAgKG9ubWVzc2FnZSk6CisgICAgICAgICogaW5zcGVjdG9y
L2Zyb250LWVuZC9Tb3VyY2VGaWxlLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNvdXJjZUZp
bGUucHJvdG90eXBlLl9sb2FkUmVzb3VyY2VDb250ZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5Gb3JtYXR0ZWRTb3VyY2VGaWxlLnByb3RvdHlwZS5fZGlkUmVxdWVzdENvbnRlbnQpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkZvcm1hdHRlZFNvdXJjZU1hcHBpbmcpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkZvcm1hdHRlZFNvdXJjZU1hcHBpbmcucHJvdG90eXBlLnNjcmlwdExvY2F0aW9u
VG9Tb3VyY2VMaW5lKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Gb3JtYXR0ZWRTb3VyY2VNYXBw
aW5nLnByb3RvdHlwZS5zb3VyY2VMaW5lVG9TY3JpcHRMb2NhdGlvbik6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuRm9ybWF0dGVkU291cmNlTWFwcGluZy5wcm90b3R5cGUuX2NvbnZlcnRQb3NpdGlv
bik6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9VZ2xpZnlKUy9KYXZhU2NyaXB0Rm9y
bWF0dGVyLmpzOiBBZGRlZC4KKyAgICAgICAgKEZvcm1hdHRlZENvbnRlbnRCdWlsZGVyKTogSGVs
cGVyIGNsYXNzIGZvciBidWlsZGluZyBmb3JtYXR0ZWQgc2NyaXB0IGNvbnRlbnQuCisgICAgICAg
IChGb3JtYXR0ZWRDb250ZW50QnVpbGRlci5wcm90b3R5cGUuYWRkVG9rZW4pOgorICAgICAgICAo
Rm9ybWF0dGVkQ29udGVudEJ1aWxkZXIucHJvdG90eXBlLmFkZFNwYWNlKToKKyAgICAgICAgKEZv
cm1hdHRlZENvbnRlbnRCdWlsZGVyLnByb3RvdHlwZS5hZGROZXdMaW5lKToKKyAgICAgICAgKEZv
cm1hdHRlZENvbnRlbnRCdWlsZGVyLnByb3RvdHlwZS5pbmNyZWFzZU5lc3RpbmdMZXZlbCk6Cisg
ICAgICAgIChGb3JtYXR0ZWRDb250ZW50QnVpbGRlci5wcm90b3R5cGUuZGVjcmVhc2VOZXN0aW5n
TGV2ZWwpOgorICAgICAgICAoRm9ybWF0dGVkQ29udGVudEJ1aWxkZXIucHJvdG90eXBlLmNvbnRl
bnQpOgorICAgICAgICAoRm9ybWF0dGVkQ29udGVudEJ1aWxkZXIucHJvdG90eXBlLm1hcHBpbmcp
OgorICAgICAgICAoVG9rZW5pemVyKTogV3JhcHBlciBjbGFzcyBmb3IgVWdsaWZ5SlMgdG9rZW5p
emVyLgorICAgICAgICAoVG9rZW5pemVyLnByb3RvdHlwZS5jb250ZW50KToKKyAgICAgICAgKFRv
a2VuaXplci5wcm90b3R5cGUubmV4dCk6CisgICAgICAgIChUb2tlbml6ZXIucHJvdG90eXBlLl9j
b252ZXJ0VWdsaWZ5VG9rZW4pOgorICAgICAgICAoSmF2YVNjcmlwdEZvcm1hdHRlcik6IE5ldyBm
b3JtYXR0ZXIgYmFzZWQgb24gVWdsaWZ5SlMgdG9rZW5pemVyLgorICAgICAgICAoSmF2YVNjcmlw
dEZvcm1hdHRlci5wcm90b3R5cGUuZm9ybWF0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQt
ZW5kL1VnbGlmeUpTL3Byb2Nlc3MuanM6IFJlbW92ZWQuCisgICAgICAgICogaW5zcGVjdG9yL2Zy
b250LWVuZC9XZWJLaXQucXJjOgorCiAyMDExLTA0LTIxICBDaHJpcyBGbGVpemFjaCAgPGNmbGVp
emFjaEBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQmV0aCBEYWtpbi4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZ3lwaQppbmRleCA5NWJmMDQwLi40NWFlYTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC02MzEw
LDggKzYzMTAsOCBAQAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvdGV4dFZpZXdl
ci5jc3MnLAogICAgICAgICBdLAogICAgICAgICAnd2ViaW5zcGVjdG9yX3VnbGlmeWpzX2ZpbGVz
JzogWworICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvVWdsaWZ5SlMvSmF2YVNjcmlw
dEZvcm1hdHRlci5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9VZ2xpZnlK
Uy9wYXJzZS1qcy5qcycsCi0gICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9VZ2xpZnlK
Uy9wcm9jZXNzLmpzJywKICAgICAgICAgXSwKICAgICAgICAgJ3dlYmluc3BlY3Rvcl9pbWFnZV9m
aWxlcyc6IFsKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0ltYWdlcy9hcHBsaWNh
dGlvbkNhY2hlLnBuZycsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJv
ai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUu
dmNwcm9qCmluZGV4IGEwMDllZmYuLjEyN2Q2ZDEgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC02NzQ3Myw2ICs2NzQ3MywxMCBAQAogCQkJCQk+
CiAJCQkJPC9GaWxlPgogCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9y
XGZyb250LWVuZFxVZ2xpZnlKU1xKYXZhU2NyaXB0Rm9ybWF0dGVyLmpzIgorCQkJCQk+CisJCQkJ
PC9GaWxlPgorCQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXGZyb250
LWVuZFxVZ2xpZnlKU1xwYXJzZS1qcy5qcyIKIAkJCQkJPgogCQkJCTwvRmlsZT4KQEAgLTY3NDkz
LDEwICs2NzQ5Nyw2IEBACiAJCQkJCT4KIAkJCQk8L0ZpbGU+CiAJCQkJPEZpbGUKLQkJCQkJUmVs
YXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcZnJvbnQtZW5kXFVnbGlmeUpTXHByb2Nlc3MuanMiCi0J
CQkJCT4KLQkJCQk8L0ZpbGU+Ci0JCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNw
ZWN0b3JcZnJvbnQtZW5kXFByb2ZpbGVEYXRhR3JpZFRyZWUuanMiCiAJCQkJCT4KIAkJCQk8L0Zp
bGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Njcmlw
dEZvcm1hdHRlci5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0
Rm9ybWF0dGVyLmpzCmluZGV4IDgwODVjNTUuLmQ0NTNkZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0Rm9ybWF0dGVyLmpzCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0Rm9ybWF0dGVyLmpzCkBAIC03Niwx
MiArNzYsMTQgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdEZvcm1hdHRlci5maW5kU2NyaXB0UmFuZ2Vz
ID0gZnVuY3Rpb24obGluZUVuZGluZ3MsIHNjcmlwdHMpCiBXZWJJbnNwZWN0b3IuU2NyaXB0Rm9y
bWF0dGVyLnByb3RvdHlwZSA9IHsKICAgICBmb3JtYXRDb250ZW50OiBmdW5jdGlvbih0ZXh0LCBz
Y3JpcHRzLCBjYWxsYmFjaykKICAgICB7CisgICAgICAgIHRleHQgPSB0ZXh0LnJlcGxhY2UoL1xy
XG4/fFtcblx1MjAyOFx1MjAyOV0vZywgIlxuIikucmVwbGFjZSgvXlx1RkVGRi8sICcnKTsKICAg
ICAgICAgdmFyIHNjcmlwdFJhbmdlcyA9IFdlYkluc3BlY3Rvci5TY3JpcHRGb3JtYXR0ZXIuZmlu
ZFNjcmlwdFJhbmdlcyh0ZXh0LmxpbmVFbmRpbmdzKCksIHNjcmlwdHMpOwogICAgICAgICB2YXIg
Y2h1bmtzID0gdGhpcy5fc3BsaXRDb250ZW50SW50b0NodW5rcyh0ZXh0LCBzY3JpcHRSYW5nZXMp
OwogCiAgICAgICAgIGZ1bmN0aW9uIGRpZEZvcm1hdENodW5rcygpCiAgICAgICAgIHsKICAgICAg
ICAgICAgIHZhciByZXN1bHQgPSB0aGlzLl9idWlsZENvbnRlbnRGcm9tQ2h1bmtzKGNodW5rcyk7
CisgICAgICAgICAgICByZXN1bHQubWFwcGluZy5vcmlnaW5hbExpbmVFbmRpbmdzID0gdGV4dC5s
aW5lRW5kaW5ncygpOwogICAgICAgICAgICAgY2FsbGJhY2socmVzdWx0LnRleHQsIHJlc3VsdC5t
YXBwaW5nKTsKICAgICAgICAgfQogICAgICAgICB0aGlzLl9mb3JtYXRDaHVua3MoY2h1bmtzLCAw
LCBkaWRGb3JtYXRDaHVua3MuYmluZCh0aGlzKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdEZvcm1hdHRlcldvcmtlci5qcyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0Rm9ybWF0dGVyV29ya2VyLmpzCmluZGV4
IGFiNjg1MjQuLjhkNTc5NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvU2NyaXB0Rm9ybWF0dGVyV29ya2VyLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0Rm9ybWF0dGVyV29ya2VyLmpzCkBAIC0zMCw0MiArMzAs
MTMgQEAKIAogb25tZXNzYWdlID0gZnVuY3Rpb24oZXZlbnQpIHsKICAgICB2YXIgc291cmNlID0g
ZXZlbnQuZGF0YTsKLSAgICB2YXIgZm9ybWF0dGVkU291cmNlID0gYmVhdXRpZnkoc291cmNlKTsK
LSAgICB2YXIgbWFwcGluZyA9IGJ1aWxkTWFwcGluZyhzb3VyY2UsIGZvcm1hdHRlZFNvdXJjZSk7
Ci0gICAgcG9zdE1lc3NhZ2UoeyBmb3JtYXR0ZWRTb3VyY2U6IGZvcm1hdHRlZFNvdXJjZSwgbWFw
cGluZzogbWFwcGluZyB9KTsKKyAgICB2YXIgdG9rZW5pemVyID0gbmV3IFRva2VuaXplcihzb3Vy
Y2UpOworICAgIHZhciBidWlsZGVyID0gbmV3IEZvcm1hdHRlZENvbnRlbnRCdWlsZGVyKHRva2Vu
aXplci5jb250ZW50KCkpOworICAgIHZhciBmb3JtYXR0ZXIgPSBuZXcgSmF2YVNjcmlwdEZvcm1h
dHRlcih0b2tlbml6ZXIsIGJ1aWxkZXIpOworICAgIGZvcm1hdHRlci5mb3JtYXQoKTsKKyAgICBw
b3N0TWVzc2FnZSh7IGZvcm1hdHRlZFNvdXJjZTogYnVpbGRlci5jb250ZW50KCksIG1hcHBpbmc6
IGJ1aWxkZXIubWFwcGluZygpIH0pOwogfTsKIAotZnVuY3Rpb24gYmVhdXRpZnkoc291cmNlKQot
ewotICAgIHZhciBhc3QgPSBwYXJzZS5wYXJzZShzb3VyY2UpOwotICAgIHZhciBiZWF1dGlmeU9w
dGlvbnMgPSB7Ci0gICAgICAgIGluZGVudF9sZXZlbDogNCwKLSAgICAgICAgaW5kZW50X3N0YXJ0
OiAwLAotICAgICAgICBxdW90ZV9rZXlzOiBmYWxzZSwKLSAgICAgICAgc3BhY2VfY29sb246IGZh
bHNlCi0gICAgfTsKLSAgICByZXR1cm4gcHJvY2Vzcy5nZW5fY29kZShhc3QsIGJlYXV0aWZ5T3B0
aW9ucyk7Ci19Ci0KLWZ1bmN0aW9uIGJ1aWxkTWFwcGluZyhzb3VyY2UsIGZvcm1hdHRlZFNvdXJj
ZSkKLXsKLSAgICB2YXIgbWFwcGluZyA9IHsgb3JpZ2luYWw6IFtdLCBmb3JtYXR0ZWQ6IFtdIH07
Ci0gICAgdmFyIGxhc3RQb3NpdGlvbiA9IDA7Ci0gICAgdmFyIHJlZ2V4cCA9IC8oXnxbXlxcXSlc
YigoPz1cRClbXCRcLlx3XSspXGIvZzsKLSAgICB3aGlsZSAodHJ1ZSkgewotICAgICAgICB2YXIg
bWF0Y2ggPSByZWdleHAuZXhlYyhmb3JtYXR0ZWRTb3VyY2UpOwotICAgICAgICBpZiAoIW1hdGNo
KQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIHZhciBwb3NpdGlvbiA9IHNvdXJjZS5pbmRl
eE9mKG1hdGNoWzJdLCBsYXN0UG9zaXRpb24pOwotICAgICAgICBpZiAocG9zaXRpb24gPT09IC0x
KQotICAgICAgICAgICAgdGhyb3cgIk5vIG1hdGNoIGZvdW5kIGluIG9yaWdpbmFsIHNvdXJjZSBm
b3IgIiArIG1hdGNoWzJdOwotICAgICAgICBtYXBwaW5nLm9yaWdpbmFsLnB1c2gocG9zaXRpb24p
OwotICAgICAgICBtYXBwaW5nLmZvcm1hdHRlZC5wdXNoKG1hdGNoLmluZGV4ICsgbWF0Y2hbMV0u
bGVuZ3RoKTsKLSAgICAgICAgbGFzdFBvc2l0aW9uID0gcG9zaXRpb24gKyBtYXRjaFsyXS5sZW5n
dGg7Ci0gICAgfQotICAgIHJldHVybiBtYXBwaW5nOwotfQotCiBmdW5jdGlvbiByZXF1aXJlKCkK
IHsKICAgICByZXR1cm4gcGFyc2U7CkBAIC03NSw2ICs0Niw0IEBAIHZhciBleHBvcnRzID0ge307
CiBpbXBvcnRTY3JpcHRzKCJVZ2xpZnlKUy9wYXJzZS1qcy5qcyIpOwogdmFyIHBhcnNlID0gZXhw
b3J0czsKIAotdmFyIGV4cG9ydHMgPSB7fTsKLWltcG9ydFNjcmlwdHMoIlVnbGlmeUpTL3Byb2Nl
c3MuanMiKTsKLXZhciBwcm9jZXNzID0gZXhwb3J0czsKK2ltcG9ydFNjcmlwdHMoIlVnbGlmeUpT
L0phdmFTY3JpcHRGb3JtYXR0ZXIuanMiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvU291cmNlRmlsZS5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvU291cmNlRmlsZS5qcwppbmRleCBjNThhMGM3Li4yZWJiZDQyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NvdXJjZUZpbGUuanMKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Tb3VyY2VGaWxlLmpzCkBAIC0x
MzcsMTMgKzEzNyw4IEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VGaWxlLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmIChy
ZXNvdXJjZS50eXBlID09PSBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZS5TY3JpcHQpCi0gICAg
ICAgICAgICAgICAgdGhpcy5fZGlkUmVxdWVzdENvbnRlbnQoInRleHQvamF2YXNjcmlwdCIsIHRl
eHQpOwotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgLy8gV2ViS2l0IGh0bWwg
bGV4ZXIgbm9ybWFsaXplcyBsaW5lIGVuZGluZ3MgYW5kIHNjcmlwdHMgYXJlIHBhc3NlZCB0byBW
TSB3aXRoICJcbiIgbGluZSBlbmRpbmdzLgotICAgICAgICAgICAgICAgIC8vIEhvd2V2ZXIsIHJl
c291cmNlIGNvbnRlbnQgaGFzIG9yaWdpbmFsIGxpbmUgZW5kaW5ncywgc28gd2UgaGF2ZSB0byBu
b3JtYWxpemUgbGluZSBlbmRpbmdzIGhlcmUuCi0gICAgICAgICAgICAgICAgdGhpcy5fZGlkUmVx
dWVzdENvbnRlbnQoInRleHQvaHRtbCIsIHRleHQucmVwbGFjZSgvXHJcbi9nLCAiXG4iKSk7Ci0g
ICAgICAgICAgICB9CisgICAgICAgICAgICB2YXIgbWltZVR5cGUgPSByZXNvdXJjZS50eXBlID09
PSBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZS5TY3JpcHQgPyAidGV4dC9qYXZhc2NyaXB0IiA6
ICJ0ZXh0L2h0bWwiOworICAgICAgICAgICAgdGhpcy5fZGlkUmVxdWVzdENvbnRlbnQobWltZVR5
cGUsIHRleHQpOwogICAgICAgICB9CiAgICAgICAgIHJlc291cmNlLnJlcXVlc3RDb250ZW50KGRp
ZFJlcXVlc3RDb250ZW50LmJpbmQodGhpcykpOwogICAgIH0sCkBAIC0yNTQsNyArMjQ5LDcgQEAg
V2ViSW5zcGVjdG9yLkZvcm1hdHRlZFNvdXJjZUZpbGUucHJvdG90eXBlID0gewogICAgIHsKICAg
ICAgICAgZnVuY3Rpb24gZGlkRm9ybWF0Q29udGVudChmb3JtYXR0ZWRUZXh0LCBtYXBwaW5nKQog
ICAgICAgICB7Ci0gICAgICAgICAgICB0aGlzLl9tYXBwaW5nID0gbmV3IFdlYkluc3BlY3Rvci5G
b3JtYXR0ZWRTb3VyY2VNYXBwaW5nKHRoaXMuX3NjcmlwdHMsIHRleHQsIGZvcm1hdHRlZFRleHQs
IG1hcHBpbmcpOworICAgICAgICAgICAgdGhpcy5fbWFwcGluZyA9IG5ldyBXZWJJbnNwZWN0b3Iu
Rm9ybWF0dGVkU291cmNlTWFwcGluZyh0aGlzLl9zY3JpcHRzLCBtYXBwaW5nLm9yaWdpbmFsTGlu
ZUVuZGluZ3MsIGZvcm1hdHRlZFRleHQubGluZUVuZGluZ3MoKSwgbWFwcGluZyk7CiAgICAgICAg
ICAgICBXZWJJbnNwZWN0b3IuU291cmNlRmlsZS5wcm90b3R5cGUuX2RpZFJlcXVlc3RDb250ZW50
LmNhbGwodGhpcywgbWltZVR5cGUsIGZvcm1hdHRlZFRleHQpOwogICAgICAgICB9CiAgICAgICAg
IHRoaXMuX2Zvcm1hdHRlci5mb3JtYXRDb250ZW50KHRleHQsIHRoaXMuX3NjcmlwdHMsIGRpZEZv
cm1hdENvbnRlbnQuYmluZCh0aGlzKSk7CkBAIC0yOTMsMTEgKzI4OCwxMSBAQCBXZWJJbnNwZWN0
b3IuU291cmNlTWFwcGluZy5wcm90b3R5cGUgPSB7CiAgICAgfQogfQogCi1XZWJJbnNwZWN0b3Iu
Rm9ybWF0dGVkU291cmNlTWFwcGluZyA9IGZ1bmN0aW9uKHNjcmlwdHMsIG9yaWdpbmFsVGV4dCwg
Zm9ybWF0dGVkVGV4dCwgbWFwcGluZykKK1dlYkluc3BlY3Rvci5Gb3JtYXR0ZWRTb3VyY2VNYXBw
aW5nID0gZnVuY3Rpb24oc2NyaXB0cywgb3JpZ2luYWxMaW5lRW5kaW5ncywgZm9ybWF0dGVkTGlu
ZUVuZGluZ3MsIG1hcHBpbmcpCiB7CiAgICAgV2ViSW5zcGVjdG9yLlNvdXJjZU1hcHBpbmcuY2Fs
bCh0aGlzLCBzY3JpcHRzKTsKLSAgICB0aGlzLl9vcmlnaW5hbExpbmVFbmRpbmdzID0gb3JpZ2lu
YWxUZXh0LmxpbmVFbmRpbmdzKCk7Ci0gICAgdGhpcy5fZm9ybWF0dGVkTGluZUVuZGluZ3MgPSBm
b3JtYXR0ZWRUZXh0LmxpbmVFbmRpbmdzKCk7CisgICAgdGhpcy5fb3JpZ2luYWxMaW5lRW5kaW5n
cyA9IG9yaWdpbmFsTGluZUVuZGluZ3M7CisgICAgdGhpcy5fZm9ybWF0dGVkTGluZUVuZGluZ3Mg
PSBmb3JtYXR0ZWRMaW5lRW5kaW5nczsKICAgICB0aGlzLl9tYXBwaW5nID0gbWFwcGluZzsKIH0K
IApAQCAtMzA1LDE4ICszMDAsMjMgQEAgV2ViSW5zcGVjdG9yLkZvcm1hdHRlZFNvdXJjZU1hcHBp
bmcucHJvdG90eXBlID0gewogICAgIHNjcmlwdExvY2F0aW9uVG9Tb3VyY2VMaW5lOiBmdW5jdGlv
bihsb2NhdGlvbikKICAgICB7CiAgICAgICAgIHZhciBvcmlnaW5hbFBvc2l0aW9uID0gV2ViSW5z
cGVjdG9yLlNjcmlwdEZvcm1hdHRlci5sb2NhdGlvblRvUG9zaXRpb24odGhpcy5fb3JpZ2luYWxM
aW5lRW5kaW5ncywgbG9jYXRpb24pOwotICAgICAgICB2YXIgaW5kZXggPSB0aGlzLl9tYXBwaW5n
Lm9yaWdpbmFsLnVwcGVyQm91bmQob3JpZ2luYWxQb3NpdGlvbiAtIDEpOwotICAgICAgICB2YXIg
Zm9ybWF0dGVkUG9zaXRpb24gPSB0aGlzLl9tYXBwaW5nLmZvcm1hdHRlZFtpbmRleF07CisgICAg
ICAgIHZhciBmb3JtYXR0ZWRQb3NpdGlvbiA9IHRoaXMuX2NvbnZlcnRQb3NpdGlvbih0aGlzLl9t
YXBwaW5nLm9yaWdpbmFsLCB0aGlzLl9tYXBwaW5nLmZvcm1hdHRlZCwgb3JpZ2luYWxQb3NpdGlv
bik7CiAgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuU2NyaXB0Rm9ybWF0dGVyLnBvc2l0aW9u
VG9Mb2NhdGlvbih0aGlzLl9mb3JtYXR0ZWRMaW5lRW5kaW5ncywgZm9ybWF0dGVkUG9zaXRpb24p
LmxpbmVOdW1iZXI7CiAgICAgfSwKIAogICAgIHNvdXJjZUxpbmVUb1NjcmlwdExvY2F0aW9uOiBm
dW5jdGlvbihsaW5lTnVtYmVyKQogICAgIHsKICAgICAgICAgdmFyIGZvcm1hdHRlZFBvc2l0aW9u
ID0gV2ViSW5zcGVjdG9yLlNjcmlwdEZvcm1hdHRlci5saW5lVG9Qb3NpdGlvbih0aGlzLl9mb3Jt
YXR0ZWRMaW5lRW5kaW5ncywgbGluZU51bWJlcik7Ci0gICAgICAgIHZhciBpbmRleCA9IHRoaXMu
X21hcHBpbmcuZm9ybWF0dGVkLnVwcGVyQm91bmQoZm9ybWF0dGVkUG9zaXRpb24gLSAxKTsKLSAg
ICAgICAgdmFyIG9yaWdpbmFsUG9zaXRpb24gPSB0aGlzLl9tYXBwaW5nLm9yaWdpbmFsW2luZGV4
XTsKKyAgICAgICAgdmFyIG9yaWdpbmFsUG9zaXRpb24gPSB0aGlzLl9jb252ZXJ0UG9zaXRpb24o
dGhpcy5fbWFwcGluZy5mb3JtYXR0ZWQsIHRoaXMuX21hcHBpbmcub3JpZ2luYWwsIGZvcm1hdHRl
ZFBvc2l0aW9uKTsKICAgICAgICAgdmFyIG9yaWdpbmFsTG9jYXRpb24gPSBXZWJJbnNwZWN0b3Iu
U2NyaXB0Rm9ybWF0dGVyLnBvc2l0aW9uVG9Mb2NhdGlvbih0aGlzLl9vcmlnaW5hbExpbmVFbmRp
bmdzLCBvcmlnaW5hbFBvc2l0aW9uKTsKICAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5Tb3Vy
Y2VNYXBwaW5nLnByb3RvdHlwZS5fc291cmNlTG9jYXRpb25Ub1NjcmlwdExvY2F0aW9uLmNhbGwo
dGhpcywgb3JpZ2luYWxMb2NhdGlvbi5saW5lTnVtYmVyLCBvcmlnaW5hbExvY2F0aW9uLmNvbHVt
bk51bWJlcik7CisgICAgfSwKKworICAgIF9jb252ZXJ0UG9zaXRpb246IGZ1bmN0aW9uKHBvc2l0
aW9uczEsIHBvc2l0aW9uczIsIHBvc2l0aW9uKQorICAgIHsKKyAgICAgICAgdmFyIGluZGV4ID0g
cG9zaXRpb25zMS51cHBlckJvdW5kKHBvc2l0aW9uKSAtIDE7CisgICAgICAgIHZhciBkZWx0YSA9
IHBvc2l0aW9uIC0gcG9zaXRpb25zMVtpbmRleF07CisgICAgICAgIHJldHVybiBNYXRoLm1pbihw
b3NpdGlvbnMyW2luZGV4XSArIGRlbHRhLCBwb3NpdGlvbnMyW2luZGV4ICsgMV0pOwogICAgIH0K
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9VZ2xp
ZnlKUy9KYXZhU2NyaXB0Rm9ybWF0dGVyLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9VZ2xpZnlKUy9KYXZhU2NyaXB0Rm9ybWF0dGVyLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjI1OGM5NjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1VnbGlmeUpTL0phdmFTY3JpcHRGb3JtYXR0ZXIuanMK
QEAgLTAsMCArMSw4OTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
KyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCitmdW5jdGlvbiBGb3JtYXR0ZWRDb250ZW50QnVpbGRlcihjb250ZW50
KQoreworICAgIHRoaXMuX29yaWdpbmFsQ29udGVudCA9IGNvbnRlbnQ7CisgICAgdGhpcy5fb3Jp
Z2luYWxQb3NpdGlvbnMgPSBbMF07CisgICAgdGhpcy5fbGFzdE9yaWdpbmFsUG9zaXRpb24gPSAw
OworCisgICAgdGhpcy5fZm9ybWF0dGVkQ29udGVudCA9IFtdOworICAgIHRoaXMuX2Zvcm1hdHRl
ZENvbnRlbnRMZW5ndGggPSAwOworICAgIHRoaXMuX2Zvcm1hdHRlZFBvc2l0aW9ucyA9IFswXTsK
KyAgICB0aGlzLl9sYXN0Rm9ybWF0dGVkbFBvc2l0aW9uID0gMDsKKworICAgIHRoaXMuX2xpbmVO
dW1iZXIgPSAwOworICAgIHRoaXMuX25lc3RpbmdMZXZlbExldmVsID0gMDsKK30KKworRm9ybWF0
dGVkQ29udGVudEJ1aWxkZXIucHJvdG90eXBlID0geworICAgIGFkZFRva2VuOiBmdW5jdGlvbih0
b2tlbikKKyAgICB7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdG9rZW4uY29tbWVudHNf
YmVmb3JlLmxlbmd0aDsgKytpKQorICAgICAgICAgICAgdGhpcy5fYWRkQ29tbWVudCh0b2tlbi5j
b21tZW50c19iZWZvcmVbaV0pOworCisgICAgICAgIHdoaWxlICh0aGlzLl9saW5lTnVtYmVyIDwg
dG9rZW4ubGluZSkgeworICAgICAgICAgICAgdGhpcy5fYWRkVGV4dCgiXG4iKTsKKyAgICAgICAg
ICAgIHRoaXMuX2FkZEluZGVudCgpOworICAgICAgICAgICAgdGhpcy5fbmVlZE5ld0xpbmUgPSBm
YWxzZTsKKyAgICAgICAgICAgIHRoaXMuX2xpbmVOdW1iZXIgKz0gMTsKKyAgICAgICAgfQorCisg
ICAgICAgIGlmICh0aGlzLl9uZWVkTmV3TGluZSkgeworICAgICAgICAgICAgdGhpcy5fYWRkVGV4
dCgiXG4iKTsKKyAgICAgICAgICAgIHRoaXMuX2FkZEluZGVudCgpOworICAgICAgICAgICAgdGhp
cy5fbmVlZE5ld0xpbmUgPSBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICh0b2tlbi5w
b3MgLSB0aGlzLl9sYXN0T3JpZ2luYWxQb3NpdGlvbiAhPT0gdGhpcy5fZm9ybWF0dGVkQ29udGVu
dExlbmd0aCAtIHRoaXMuX2xhc3RGb3JtYXR0ZWRQb3NpdGlvbikgeworICAgICAgICAgICAgdGhp
cy5fb3JpZ2luYWxQb3NpdGlvbnMucHVzaCh0b2tlbi5wb3MpOworICAgICAgICAgICAgdGhpcy5f
Zm9ybWF0dGVkUG9zaXRpb25zLnB1c2godGhpcy5fZm9ybWF0dGVkQ29udGVudExlbmd0aCk7Cisg
ICAgICAgICAgICB0aGlzLl9sYXN0T3JpZ2luYWxQb3NpdGlvbiA9IHRva2VuLnBvczsKKyAgICAg
ICAgICAgIHRoaXMuX2xhc3RGb3JtYXR0ZWRQb3NpdGlvbiA9IHRoaXMuX2Zvcm1hdHRlZENvbnRl
bnRMZW5ndGg7CisgICAgICAgIH0KKworICAgICAgICB0aGlzLl9hZGRUZXh0KHRoaXMuX29yaWdp
bmFsQ29udGVudC5zdWJzdHJpbmcodG9rZW4ucG9zLCB0b2tlbi5lbmRQb3MpKTsKKyAgICAgICAg
dGhpcy5fbGluZU51bWJlciA9IHRva2VuLmVuZExpbmU7CisgICAgfSwKKworICAgIGFkZFNwYWNl
OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB0aGlzLl9hZGRUZXh0KCIgIik7CisgICAgfSwK
KworICAgIGFkZE5ld0xpbmU6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMuX25lZWRO
ZXdMaW5lID0gdHJ1ZTsKKyAgICB9LAorCisgICAgaW5jcmVhc2VOZXN0aW5nTGV2ZWw6IGZ1bmN0
aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMuX25lc3RpbmdMZXZlbExldmVsICs9IDE7CisgICAg
fSwKKworICAgIGRlY3JlYXNlTmVzdGluZ0xldmVsOiBmdW5jdGlvbigpCisgICAgeworICAgICAg
ICB0aGlzLl9uZXN0aW5nTGV2ZWxMZXZlbCAtPSAxOworICAgIH0sCisKKyAgICBjb250ZW50OiBm
dW5jdGlvbigpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fZm9ybWF0dGVkQ29udGVudC5q
b2luKCIiKTsKKyAgICB9LAorCisgICAgbWFwcGluZzogZnVuY3Rpb24oKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIHsgb3JpZ2luYWw6IHRoaXMuX29yaWdpbmFsUG9zaXRpb25zLCBmb3JtYXR0ZWQ6
IHRoaXMuX2Zvcm1hdHRlZFBvc2l0aW9ucyB9OworICAgIH0sCisKKyAgICBfYWRkSW5kZW50OiBm
dW5jdGlvbigpCisgICAgeworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX25lc3Rp
bmdMZXZlbExldmVsICogNDsgKytpKQorICAgICAgICAgICAgdGhpcy5hZGRTcGFjZSgpOworICAg
IH0sCisKKyAgICBfYWRkQ29tbWVudDogZnVuY3Rpb24oY29tbWVudCkKKyAgICB7CisgICAgICAg
IGlmICh0aGlzLl9saW5lTnVtYmVyIDwgY29tbWVudC5saW5lKSB7CisgICAgICAgICAgICBmb3Ig
KHZhciBqID0gdGhpcy5fbGluZU51bWJlcjsgaiA8IGNvbW1lbnQubGluZTsgKytqKQorICAgICAg
ICAgICAgICAgIHRoaXMuX2FkZFRleHQoIlxuIik7CisgICAgICAgICAgICB0aGlzLl9saW5lTnVt
YmVyID0gY29tbWVudC5saW5lOworICAgICAgICAgICAgdGhpcy5fbmVlZE5ld0xpbmUgPSBmYWxz
ZTsKKyAgICAgICAgICAgIHRoaXMuX2FkZEluZGVudCgpOworICAgICAgICB9IGVsc2UKKyAgICAg
ICAgICAgIHRoaXMuYWRkU3BhY2UoKTsKKworICAgICAgICBpZiAoY29tbWVudC50eXBlID09PSAi
Y29tbWVudDEiKQorICAgICAgICAgICAgdGhpcy5fYWRkVGV4dCgiLy8iKTsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgdGhpcy5fYWRkVGV4dCgiLyoiKTsKKworICAgICAgICB0aGlzLl9hZGRU
ZXh0KGNvbW1lbnQudmFsdWUpOworCisgICAgICAgIGlmIChjb21tZW50LnR5cGUgIT09ICJjb21t
ZW50MSIpIHsKKyAgICAgICAgICAgIHRoaXMuX2FkZFRleHQoIiovIik7CisgICAgICAgICAgICB2
YXIgcG9zaXRpb247CisgICAgICAgICAgICB3aGlsZSAoKHBvc2l0aW9uID0gY29tbWVudC52YWx1
ZS5pbmRleE9mKCJcbiIsIHBvc2l0aW9uICsgMSkpICE9PSAtMSkKKyAgICAgICAgICAgICAgICB0
aGlzLl9saW5lTnVtYmVyICs9IDE7CisgICAgICAgIH0KKyAgICB9LAorCisgICAgX2FkZFRleHQ6
IGZ1bmN0aW9uKHRleHQpCisgICAgeworICAgICAgICB0aGlzLl9mb3JtYXR0ZWRDb250ZW50LnB1
c2godGV4dCk7CisgICAgICAgIHRoaXMuX2Zvcm1hdHRlZENvbnRlbnRMZW5ndGggKz0gdGV4dC5s
ZW5ndGg7CisgICAgfQorfQorCit2YXIgdG9rZW5zID0gWworICAgIFsiRU9TIl0sCisgICAgWyJM
UEFSRU4iLCAiKCJdLCBbIlJQQVJFTiIsICIpIl0sIFsiTEJSQUNLIiwgIlsiXSwgWyJSQlJBQ0si
LCAiXSJdLCBbIkxCUkFDRSIsICJ7Il0sIFsiUkJSQUNFIiwgIn0iXSwgWyJDT0xPTiIsICI6Il0s
IFsiU0VNSUNPTE9OIiwgIjsiXSwgWyJQRVJJT0QiLCAiLiJdLCBbIkNPTkRJVElPTkFMIiwgIj8i
XSwKKyAgICBbIklOQyIsICIrKyJdLCBbIkRFQyIsICItLSJdLAorICAgIFsiQVNTSUdOIiwgIj0i
XSwgWyJBU1NJR05fQklUX09SIiwgInw9Il0sIFsiQVNTSUdOX0JJVF9YT1IiLCAiXj0iXSwgWyJB
U1NJR05fQklUX0FORCIsICImPSJdLCBbIkFTU0lHTl9TSEwiLCAiPDw9Il0sIFsiQVNTSUdOX1NB
UiIsICI+Pj0iXSwgWyJBU1NJR05fU0hSIiwgIj4+Pj0iXSwKKyAgICBbIkFTU0lHTl9BREQiLCAi
Kz0iXSwgWyJBU1NJR05fU1VCIiwgIi09Il0sIFsiQVNTSUdOX01VTCIsICIqPSJdLCBbIkFTU0lH
Tl9ESVYiLCAiLz0iXSwgWyJBU1NJR05fTU9EIiwgIiU9Il0sCisgICAgWyJDT01NQSIsICIsIl0s
IFsiT1IiLCAifHwiXSwgWyJBTkQiLCAiJiYiXSwgWyJCSVRfT1IiLCAifCJdLCBbIkJJVF9YT1Ii
LCAiXiJdLCBbIkJJVF9BTkQiLCAiJiJdLCBbIlNITCIsICI8PCJdLCBbIlNBUiIsICI+PiJdLCBb
IlNIUiIsICI+Pj4iXSwKKyAgICBbIkFERCIsICIrIl0sIFsiU1VCIiwgIi0iXSwgWyJNVUwiLCAi
KiJdLCBbIkRJViIsICIvIl0sIFsiTU9EIiwgIiUiXSwKKyAgICBbIkVRIiwgIj09Il0sIFsiTkUi
LCAiIT0iXSwgWyJFUV9TVFJJQ1QiLCAiPT09Il0sIFsiTkVfU1RSSUNUIiwgIiE9PSJdLCBbIkxU
IiwgIjwiXSwgWyJHVCIsICI+Il0sIFsiTFRFIiwgIjw9Il0sIFsiR1RFIiwgIj49Il0sCisgICAg
WyJJTlNUQU5DRU9GIiwgImluc3RhbmNlb2YiXSwgWyJJTiIsICJpbiJdLCBbIk5PVCIsICIhIl0s
IFsiQklUX05PVCIsICJ+Il0sIFsiREVMRVRFIiwgImRlbGV0ZSJdLCBbIlRZUEVPRiIsICJ0eXBl
b2YiXSwgWyJWT0lEIiwgInZvaWQiXSwKKyAgICBbIkJSRUFLIiwgImJyZWFrIl0sIFsiQ0FTRSIs
ICJjYXNlIl0sIFsiQ0FUQ0giLCAiY2F0Y2giXSwgWyJDT05USU5VRSIsICJjb250aW51ZSJdLCBb
IkRFQlVHR0VSIiwgImRlYnVnZ2VyIl0sIFsiREVGQVVMVCIsICJkZWZhdWx0Il0sIFsiRE8iLCAi
ZG8iXSwgWyJFTFNFIiwgImVsc2UiXSwgWyJGSU5BTExZIiwgImZpbmFsbHkiXSwKKyAgICBbIkZP
UiIsICJmb3IiXSwgWyJGVU5DVElPTiIsICJmdW5jdGlvbiJdLCBbIklGIiwgImlmIl0sIFsiTkVX
IiwgIm5ldyJdLCBbIlJFVFVSTiIsICJyZXR1cm4iXSwgWyJTV0lUQ0giLCAic3dpdGNoIl0sIFsi
VEhJUyIsICJ0aGlzIl0sIFsiVEhST1ciLCAidGhyb3ciXSwgWyJUUlkiLCAidHJ5Il0sIFsiVkFS
IiwgInZhciJdLAorICAgIFsiV0hJTEUiLCAid2hpbGUiXSwgWyJXSVRIIiwgIndpdGgiXSwgWyJO
VUxMX0xJVEVSQUwiLCAibnVsbCJdLCBbIlRSVUVfTElURVJBTCIsICJ0cnVlIl0sIFsiRkFMU0Vf
TElURVJBTCIsICJmYWxzZSJdLCBbIk5VTUJFUiJdLCBbIlNUUklORyJdLCBbIklERU5USUZJRVIi
XSwgWyJDT05TVCIsICJjb25zdCJdCitdOworCit2YXIgVG9rZW5zID0ge307Citmb3IgKHZhciBp
ID0gMDsgaSA8IHRva2Vucy5sZW5ndGg7ICsraSkKKyAgICBUb2tlbnNbdG9rZW5zW2ldWzBdXSA9
IGk7CisKK3ZhciBUb2tlbnNCeVZhbHVlID0ge307Citmb3IgKHZhciBpID0gMDsgaSA8IHRva2Vu
cy5sZW5ndGg7ICsraSkgeworICAgIGlmICh0b2tlbnNbaV1bMV0pCisgICAgICAgIFRva2Vuc0J5
VmFsdWVbdG9rZW5zW2ldWzFdXSA9IGk7Cit9CisKK3ZhciBUb2tlbnNCeVR5cGUgPSB7CisgICAg
ImVvZiI6IFRva2Vucy5FT1MsCisgICAgIm5hbWUiOiBUb2tlbnMuSURFTlRJRklFUiwKKyAgICAi
bnVtIjogVG9rZW5zLk5VTUJFUiwKKyAgICAicmVnZXhwIjogVG9rZW5zLkRJViwKKyAgICAic3Ry
aW5nIjogVG9rZW5zLlNUUklORworfTsKKworZnVuY3Rpb24gVG9rZW5pemVyKGNvbnRlbnQpCit7
CisgICAgdGhpcy5fcmVhZE5leHRUb2tlbiA9IHBhcnNlLnRva2VuaXplcihjb250ZW50KTsKKyAg
ICB0aGlzLl9zdGF0ZSA9IHRoaXMuX3JlYWROZXh0VG9rZW4uY29udGV4dCgpOworfQorCitUb2tl
bml6ZXIucHJvdG90eXBlID0geworICAgIGNvbnRlbnQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAg
ICAgIHJldHVybiB0aGlzLl9zdGF0ZS50ZXh0OworICAgIH0sCisKKyAgICBuZXh0OiBmdW5jdGlv
bihmb3JjZVJlZ2V4cCkKKyAgICB7CisgICAgICAgIHZhciB1Z2xpZnlUb2tlbiA9IHRoaXMuX3Jl
YWROZXh0VG9rZW4oZm9yY2VSZWdleHApOworICAgICAgICB1Z2xpZnlUb2tlbi5lbmRQb3MgPSB0
aGlzLl9zdGF0ZS5wb3M7CisgICAgICAgIHVnbGlmeVRva2VuLmVuZExpbmUgPSB0aGlzLl9zdGF0
ZS5saW5lOworICAgICAgICB1Z2xpZnlUb2tlbi50b2tlbiA9IHRoaXMuX2NvbnZlcnRVZ2xpZnlU
b2tlbih1Z2xpZnlUb2tlbik7CisgICAgICAgIHJldHVybiB1Z2xpZnlUb2tlbjsKKyAgICB9LAor
CisgICAgX2NvbnZlcnRVZ2xpZnlUb2tlbjogZnVuY3Rpb24odWdsaWZ5VG9rZW4pCisgICAgewor
ICAgICAgICB2YXIgdG9rZW4gPSBUb2tlbnNCeVR5cGVbdWdsaWZ5VG9rZW4udHlwZV07CisgICAg
ICAgIGlmICh0eXBlb2YgdG9rZW4gPT09ICJudW1iZXIiKQorICAgICAgICAgICAgcmV0dXJuIHRv
a2VuOworICAgICAgICB0b2tlbiA9IFRva2Vuc0J5VmFsdWVbdWdsaWZ5VG9rZW4udmFsdWVdOwor
ICAgICAgICBpZiAodHlwZW9mIHRva2VuID09PSAibnVtYmVyIikKKyAgICAgICAgICAgIHJldHVy
biB0b2tlbjsKKyAgICAgICAgdGhyb3cgIlVua25vd24gdG9rZW4gdHlwZSAiICsgdWdsaWZ5VG9r
ZW4udHlwZTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIEphdmFTY3JpcHRGb3JtYXR0ZXIodG9rZW5p
emVyLCBidWlsZGVyKQoreworICAgIHRoaXMuX3Rva2VuaXplciA9IHRva2VuaXplcjsKKyAgICB0
aGlzLl9idWlsZGVyID0gYnVpbGRlcjsKKyAgICB0aGlzLl90b2tlbiA9IG51bGw7CisgICAgdGhp
cy5fbmV4dFRva2VuID0gdGhpcy5fdG9rZW5pemVyLm5leHQoKTsKK30KKworSmF2YVNjcmlwdEZv
cm1hdHRlci5wcm90b3R5cGUgPSB7CisgICAgZm9ybWF0OiBmdW5jdGlvbigpCisgICAgeworICAg
ICAgICB0aGlzLl9wYXJzZVNvdXJjZUVsZW1lbnRzKFRva2Vucy5FT1MpOworICAgICAgICB0aGlz
Ll9jb25zdW1lKFRva2Vucy5FT1MpOworICAgIH0sCisKKyAgICBfcGVlazogZnVuY3Rpb24oKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX25leHRUb2tlbi50b2tlbjsKKyAgICB9LAorCisg
ICAgX25leHQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl90b2tlbiAmJiB0
aGlzLl90b2tlbi50b2tlbiA9PT0gVG9rZW5zLkVPUykKKyAgICAgICAgICAgIHRocm93ICJVbmV4
cGVjdGVkIEVPUyB0b2tlbiI7CisKKyAgICAgICAgdGhpcy5fYnVpbGRlci5hZGRUb2tlbih0aGlz
Ll9uZXh0VG9rZW4pOworICAgICAgICB0aGlzLl90b2tlbiA9IHRoaXMuX25leHRUb2tlbjsKKyAg
ICAgICAgdGhpcy5fbmV4dFRva2VuID0gdGhpcy5fdG9rZW5pemVyLm5leHQodGhpcy5fZm9yY2VS
ZWdleHApOworICAgICAgICB0aGlzLl9mb3JjZVJlZ2V4cCA9IGZhbHNlOworICAgICAgICByZXR1
cm4gdGhpcy5fdG9rZW4udG9rZW47CisgICAgfSwKKworICAgIF9jb25zdW1lOiBmdW5jdGlvbih0
b2tlbikKKyAgICB7CisgICAgICAgIHZhciBuZXh0ID0gdGhpcy5fbmV4dCgpOworICAgICAgICBp
ZiAobmV4dCAhPT0gdG9rZW4pCisgICAgICAgICAgICB0aHJvdyAiVW5leHBlY3RlZCB0b2tlbiBp
biBjb25zdW1lOiBleHBlY3RlZCAiICsgdG9rZW4gKyAiLCBhY3R1YWwgIiArIG5leHQ7CisgICAg
fSwKKworICAgIF9leHBlY3Q6IGZ1bmN0aW9uKHRva2VuKQorICAgIHsKKyAgICAgICAgdmFyIG5l
eHQgPSB0aGlzLl9uZXh0KCk7CisgICAgICAgIGlmIChuZXh0ICE9PSB0b2tlbikKKyAgICAgICAg
ICAgIHRocm93ICJVbmV4cGVjdGVkIHRva2VuOiBleHBlY3RlZCAiICsgdG9rZW4gKyAiLCBhY3R1
YWwgIiArIG5leHQ7CisgICAgfSwKKworICAgIF9leHBlY3RTZW1pY29sb246IGZ1bmN0aW9uKCkK
KyAgICB7CisgICAgICAgIGlmICh0aGlzLl9wZWVrKCkgPT09IFRva2Vucy5TRU1JQ09MT04pCisg
ICAgICAgICAgICB0aGlzLl9jb25zdW1lKFRva2Vucy5TRU1JQ09MT04pOworICAgIH0sCisKKyAg
ICBfaGFzTGluZVRlcm1pbmF0b3JCZWZvcmVOZXh0OiBmdW5jdGlvbigpCisgICAgeworICAgICAg
ICByZXR1cm4gdGhpcy5fbmV4dFRva2VuLm5sYjsKKyAgICB9LAorCisgICAgX3BhcnNlU291cmNl
RWxlbWVudHM6IGZ1bmN0aW9uKGVuZFRva2VuKQorICAgIHsKKyAgICAgICAgd2hpbGUgKHRoaXMu
X3BlZWsoKSAhPT0gZW5kVG9rZW4pIHsKKyAgICAgICAgICAgIHRoaXMuX3BhcnNlU3RhdGVtZW50
KCk7CisgICAgICAgICAgICB0aGlzLl9idWlsZGVyLmFkZE5ld0xpbmUoKTsKKyAgICAgICAgfQor
ICAgIH0sCisKKyAgICBfcGFyc2VTdGF0ZW1lbnRPckJsb2NrOiBmdW5jdGlvbigpCisgICAgewor
ICAgICAgICBpZiAodGhpcy5fcGVlaygpID09PSBUb2tlbnMuTEJSQUNFKSB7CisgICAgICAgICAg
ICB0aGlzLl9idWlsZGVyLmFkZFNwYWNlKCk7CisgICAgICAgICAgICB0aGlzLl9wYXJzZUJsb2Nr
KCk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIHRoaXMu
X2J1aWxkZXIuYWRkTmV3TGluZSgpOworICAgICAgICB0aGlzLl9idWlsZGVyLmluY3JlYXNlTmVz
dGluZ0xldmVsKCk7CisgICAgICAgIHRoaXMuX3BhcnNlU3RhdGVtZW50KCk7CisgICAgICAgIHRo
aXMuX2J1aWxkZXIuZGVjcmVhc2VOZXN0aW5nTGV2ZWwoKTsKKyAgICB9LAorCisgICAgX3BhcnNl
U3RhdGVtZW50OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBzd2l0Y2ggKHRoaXMuX3BlZWso
KSkgeworICAgICAgICBjYXNlIFRva2Vucy5MQlJBQ0U6CisgICAgICAgICAgICByZXR1cm4gdGhp
cy5fcGFyc2VCbG9jaygpOworICAgICAgICBjYXNlIFRva2Vucy5DT05TVDoKKyAgICAgICAgY2Fz
ZSBUb2tlbnMuVkFSOgorICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3BhcnNlVmFyaWFibGVTdGF0
ZW1lbnQoKTsKKyAgICAgICAgY2FzZSBUb2tlbnMuU0VNSUNPTE9OOgorICAgICAgICAgICAgcmV0
dXJuIHRoaXMuX25leHQoKTsKKyAgICAgICAgY2FzZSBUb2tlbnMuSUY6CisgICAgICAgICAgICBy
ZXR1cm4gdGhpcy5fcGFyc2VJZlN0YXRlbWVudCgpOworICAgICAgICBjYXNlIFRva2Vucy5ETzoK
KyAgICAgICAgICAgIHJldHVybiB0aGlzLl9wYXJzZURvV2hpbGVTdGF0ZW1lbnQoKTsKKyAgICAg
ICAgY2FzZSBUb2tlbnMuV0hJTEU6CisgICAgICAgICAgICByZXR1cm4gdGhpcy5fcGFyc2VXaGls
ZVN0YXRlbWVudCgpOworICAgICAgICBjYXNlIFRva2Vucy5GT1I6CisgICAgICAgICAgICByZXR1
cm4gdGhpcy5fcGFyc2VGb3JTdGF0ZW1lbnQoKTsKKyAgICAgICAgY2FzZSBUb2tlbnMuQ09OVElO
VUU6CisgICAgICAgICAgICByZXR1cm4gdGhpcy5fcGFyc2VDb250aW51ZVN0YXRlbWVudCgpOwor
ICAgICAgICBjYXNlIFRva2Vucy5CUkVBSzoKKyAgICAgICAgICAgIHJldHVybiB0aGlzLl9wYXJz
ZUJyZWFrU3RhdGVtZW50KCk7CisgICAgICAgIGNhc2UgVG9rZW5zLlJFVFVSTjoKKyAgICAgICAg
ICAgIHJldHVybiB0aGlzLl9wYXJzZVJldHVyblN0YXRlbWVudCgpOworICAgICAgICBjYXNlIFRv
a2Vucy5XSVRIOgorICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3BhcnNlV2l0aFN0YXRlbWVudCgp
OworICAgICAgICBjYXNlIFRva2Vucy5TV0lUQ0g6CisgICAgICAgICAgICByZXR1cm4gdGhpcy5f
cGFyc2VTd2l0Y2hTdGF0ZW1lbnQoKTsKKyAgICAgICAgY2FzZSBUb2tlbnMuVEhST1c6CisgICAg
ICAgICAgICByZXR1cm4gdGhpcy5fcGFyc2VUaHJvd1N0YXRlbWVudCgpOworICAgICAgICBjYXNl
IFRva2Vucy5UUlk6CisgICAgICAgICAgICByZXR1cm4gdGhpcy5fcGFyc2VUcnlTdGF0ZW1lbnQo
KTsKKyAgICAgICAgY2FzZSBUb2tlbnMuRlVOQ1RJT046CisgICAgICAgICAgICByZXR1cm4gdGhp
cy5fcGFyc2VGdW5jdGlvbkRlY2xhcmF0aW9uKCk7CisgICAgICAgIGNhc2UgVG9rZW5zLkRFQlVH
R0VSOgorICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3BhcnNlRGVidWdnZXJTdGF0ZW1lbnQoKTsK
KyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiB0aGlzLl9wYXJzZUV4cHJlc3Np
b25PckxhYmVsbGVkU3RhdGVtZW50KCk7CisgICAgICAgIH0KKyAgICB9LAorCisgICAgX3BhcnNl
RnVuY3Rpb25EZWNsYXJhdGlvbjogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdGhpcy5fZXhw
ZWN0KFRva2Vucy5GVU5DVElPTik7CisgICAgICAgIHRoaXMuX2J1aWxkZXIuYWRkU3BhY2UoKTsK
KyAgICAgICAgdGhpcy5fZXhwZWN0KFRva2Vucy5JREVOVElGSUVSKTsKKyAgICAgICAgdGhpcy5f
cGFyc2VGdW5jdGlvbkxpdGVyYWwoKQorICAgIH0sCisKKyAgICBfcGFyc2VCbG9jazogZnVuY3Rp
b24oKQorICAgIHsKKyAgICAgICAgdGhpcy5fZXhwZWN0KFRva2Vucy5MQlJBQ0UpOworICAgICAg
ICB0aGlzLl9idWlsZGVyLmFkZE5ld0xpbmUoKTsKKyAgICAgICAgdGhpcy5fYnVpbGRlci5pbmNy
ZWFzZU5lc3RpbmdMZXZlbCgpOworICAgICAgICB3aGlsZSAodGhpcy5fcGVlaygpICE9PSBUb2tl
bnMuUkJSQUNFKSB7CisgICAgICAgICAgICB0aGlzLl9wYXJzZVN0YXRlbWVudCgpOworICAgICAg
ICAgICAgdGhpcy5fYnVpbGRlci5hZGROZXdMaW5lKCk7CisgICAgICAgIH0KKyAgICAgICAgdGhp
cy5fYnVpbGRlci5kZWNyZWFzZU5lc3RpbmdMZXZlbCgpOworICAgICAgICB0aGlzLl9leHBlY3Qo
VG9rZW5zLlJCUkFDRSk7CisgICAgfSwKKworICAgIF9wYXJzZVZhcmlhYmxlU3RhdGVtZW50OiBm
dW5jdGlvbigpCisgICAgeworICAgICAgICB0aGlzLl9wYXJzZVZhcmlhYmxlRGVjbGFyYXRpb25z
KCk7CisgICAgICAgIHRoaXMuX2V4cGVjdFNlbWljb2xvbigpOworICAgIH0sCisKKyAgICBfcGFy
c2VWYXJpYWJsZURlY2xhcmF0aW9uczogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgaWYgKHRo
aXMuX3BlZWsoKSA9PT0gVG9rZW5zLlZBUikKKyAgICAgICAgICAgIHRoaXMuX2NvbnN1bWUoVG9r
ZW5zLlZBUik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRoaXMuX2NvbnN1bWUoVG9rZW5z
LkNPTlNUKQorICAgICAgICB0aGlzLl9idWlsZGVyLmFkZFNwYWNlKCk7CisKKyAgICAgICAgdmFy
IGlzRmlyc3RWYXJpYWJsZSA9IHRydWU7CisgICAgICAgIGRvIHsKKyAgICAgICAgICAgIGlmICgh
aXNGaXJzdFZhcmlhYmxlKSB7CisgICAgICAgICAgICAgICAgdGhpcy5fY29uc3VtZShUb2tlbnMu
Q09NTUEpOworICAgICAgICAgICAgICAgIHRoaXMuX2J1aWxkZXIuYWRkU3BhY2UoKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGlzRmlyc3RWYXJpYWJsZSA9IGZhbHNlOworICAgICAgICAg
ICAgdGhpcy5fZXhwZWN0KFRva2Vucy5JREVOVElGSUVSKTsKKyAgICAgICAgICAgIGlmICh0aGlz
Ll9wZWVrKCkgPT09IFRva2Vucy5BU1NJR04pIHsKKyAgICAgICAgICAgICAgICB0aGlzLl9idWls
ZGVyLmFkZFNwYWNlKCk7CisgICAgICAgICAgICAgICAgdGhpcy5fY29uc3VtZShUb2tlbnMuQVNT
SUdOKTsKKyAgICAgICAgICAgICAgICB0aGlzLl9idWlsZGVyLmFkZFNwYWNlKCk7CisgICAgICAg
ICAgICAgICAgdGhpcy5fcGFyc2VBc3NpZ25tZW50RXhwcmVzc2lvbigpOworICAgICAgICAgICAg
fQorICAgICAgICB9IHdoaWxlICh0aGlzLl9wZWVrKCkgPT09IFRva2Vucy5DT01NQSk7CisgICAg
fSwKKworICAgIF9wYXJzZUV4cHJlc3Npb25PckxhYmVsbGVkU3RhdGVtZW50OiBmdW5jdGlvbigp
CisgICAgeworICAgICAgICB0aGlzLl9wYXJzZUV4cHJlc3Npb24oKTsKKyAgICAgICAgaWYgKHRo
aXMuX3BlZWsoKSA9PT0gVG9rZW5zLkNPTE9OKSB7CisgICAgICAgICAgICB0aGlzLl9leHBlY3Qo
VG9rZW5zLkNPTE9OKTsKKyAgICAgICAgICAgIHRoaXMuX2J1aWxkZXIuYWRkU3BhY2UoKTsKKyAg
ICAgICAgICAgIHRoaXMuX3BhcnNlU3RhdGVtZW50KCk7CisgICAgICAgIH0KKyAgICAgICAgdGhp
cy5fZXhwZWN0U2VtaWNvbG9uKCk7CisgICAgfSwKKworICAgIF9wYXJzZUlmU3RhdGVtZW50OiBm
dW5jdGlvbigpCisgICAgeworICAgICAgICB0aGlzLl9leHBlY3QoVG9rZW5zLklGKTsKKyAgICAg
ICAgdGhpcy5fYnVpbGRlci5hZGRTcGFjZSgpOworICAgICAgICB0aGlzLl9leHBlY3QoVG9rZW5z
LkxQQVJFTik7CisgICAgICAgIHRoaXMuX3BhcnNlRXhwcmVzc2lvbigpOworICAgICAgICB0aGlz
Ll9leHBlY3QoVG9rZW5zLlJQQVJFTik7CisKKyAgICAgICAgdmFyIGlzQmxvY2sgPSB0aGlzLl9w
YXJzZVN0YXRlbWVudE9yQmxvY2soKTsKKyAgICAgICAgaWYgKHRoaXMuX3BlZWsoKSA9PT0gVG9r
ZW5zLkVMU0UpIHsKKyAgICAgICAgICAgIGlmIChpc0Jsb2NrKQorICAgICAgICAgICAgICAgIHRo
aXMuX2J1aWxkZXIuYWRkU3BhY2UoKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICB0aGlzLl9idWlsZGVyLmFkZE5ld0xpbmUoKTsKKyAgICAgICAgICAgIHRoaXMuX25leHQoKTsK
KworICAgICAgICAgICAgaWYgKHRoaXMuX3BlZWsoKSA9PT0gVG9rZW5zLklGKSB7CisgICAgICAg
ICAgICAgICAgdGhpcy5fYnVpbGRlci5hZGRTcGFjZSgpOworICAgICAgICAgICAgICAgIHRoaXMu
X3BhcnNlU3RhdGVtZW50KCk7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICB0
aGlzLl9wYXJzZVN0YXRlbWVudE9yQmxvY2soKTsKKyAgICAgICAgfQorICAgIH0sCisKKyAgICBf
cGFyc2VDb250aW51ZVN0YXRlbWVudDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdGhpcy5f
ZXhwZWN0KFRva2Vucy5DT05USU5VRSk7CisgICAgICAgIHZhciB0b2tlbiA9IHRoaXMuX3BlZWso
KTsKKyAgICAgICAgaWYgKCF0aGlzLl9oYXNMaW5lVGVybWluYXRvckJlZm9yZU5leHQoKSAmJiB0
b2tlbiAhPT0gVG9rZW5zLlNFTUlDT0xPTiAmJiB0b2tlbiAhPT0gVG9rZW5zLlJCUkFDRSAmJiB0
b2tlbiAhPT0gVG9rZW5zLkVPUykgeworICAgICAgICAgICAgdGhpcy5fYnVpbGRlci5hZGRTcGFj
ZSgpOworICAgICAgICAgICAgdGhpcy5fZXhwZWN0KFRva2Vucy5JREVOVElGSUVSKTsKKyAgICAg
ICAgfQorICAgICAgICB0aGlzLl9leHBlY3RTZW1pY29sb24oKTsKKyAgICB9LAorCisgICAgX3Bh
cnNlQnJlYWtTdGF0ZW1lbnQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMuX2V4cGVj
dChUb2tlbnMuQlJFQUspOworICAgICAgICB2YXIgdG9rZW4gPSB0aGlzLl9wZWVrKCk7CisgICAg
ICAgIGlmICghdGhpcy5faGFzTGluZVRlcm1pbmF0b3JCZWZvcmVOZXh0KCkgJiYgdG9rZW4gIT09
IFRva2Vucy5TRU1JQ09MT04gJiYgdG9rZW4gIT09IFRva2Vucy5SQlJBQ0UgJiYgdG9rZW4gIT09
IFRva2Vucy5FT1MpIHsKKyAgICAgICAgICAgIHRoaXMuX2J1aWxkZXIuYWRkU3BhY2UoKTsKKyAg
ICAgICAgICAgIHRoaXMuX2V4cGVjdChUb2tlbnMuSURFTlRJRklFUik7CisgICAgICAgIH0KKyAg
ICAgICAgdGhpcy5fZXhwZWN0U2VtaWNvbG9uKCk7CisgICAgfSwKKworICAgIF9wYXJzZVJldHVy
blN0YXRlbWVudDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdGhpcy5fZXhwZWN0KFRva2Vu
cy5SRVRVUk4pOworICAgICAgICB2YXIgdG9rZW4gPSB0aGlzLl9wZWVrKCk7CisgICAgICAgIGlm
ICghdGhpcy5faGFzTGluZVRlcm1pbmF0b3JCZWZvcmVOZXh0KCkgJiYgdG9rZW4gIT09IFRva2Vu
cy5TRU1JQ09MT04gJiYgdG9rZW4gIT09IFRva2Vucy5SQlJBQ0UgJiYgdG9rZW4gIT09IFRva2Vu
cy5FT1MpIHsKKyAgICAgICAgICAgIHRoaXMuX2J1aWxkZXIuYWRkU3BhY2UoKTsKKyAgICAgICAg
ICAgIHRoaXMuX3BhcnNlRXhwcmVzc2lvbigpOworICAgICAgICB9CisgICAgICAgIHRoaXMuX2V4
cGVjdFNlbWljb2xvbigpOworICAgIH0sCisKKyAgICBfcGFyc2VXaXRoU3RhdGVtZW50OiBmdW5j
dGlvbigpCisgICAgeworICAgICAgICB0aGlzLl9leHBlY3QoVG9rZW5zLldJVEgpOworICAgICAg
ICB0aGlzLl9idWlsZGVyLmFkZFNwYWNlKCk7CisgICAgICAgIHRoaXMuX2V4cGVjdChUb2tlbnMu
TFBBUkVOKTsKKyAgICAgICAgdGhpcy5fcGFyc2VFeHByZXNzaW9uKCk7CisgICAgICAgIHRoaXMu
X2V4cGVjdChUb2tlbnMuUlBBUkVOKTsKKyAgICAgICAgdGhpcy5fcGFyc2VTdGF0ZW1lbnRPckJs
b2NrKCk7CisgICAgfSwKKworICAgIF9wYXJzZUNhc2VDbGF1c2U6IGZ1bmN0aW9uKCkKKyAgICB7
CisgICAgICAgIGlmICh0aGlzLl9wZWVrKCkgPT09IFRva2Vucy5DQVNFKSB7CisgICAgICAgICAg
ICB0aGlzLl9leHBlY3QoVG9rZW5zLkNBU0UpOworICAgICAgICAgICAgdGhpcy5fYnVpbGRlci5h
ZGRTcGFjZSgpOworICAgICAgICAgICAgdGhpcy5fcGFyc2VFeHByZXNzaW9uKCk7CisgICAgICAg
IH0gZWxzZQorICAgICAgICAgICAgdGhpcy5fZXhwZWN0KFRva2Vucy5ERUZBVUxUKTsKKyAgICAg
ICAgdGhpcy5fZXhwZWN0KFRva2Vucy5DT0xPTik7CisgICAgICAgIHRoaXMuX2J1aWxkZXIuYWRk
TmV3TGluZSgpOworCisgICAgICAgIHRoaXMuX2J1aWxkZXIuaW5jcmVhc2VOZXN0aW5nTGV2ZWwo
KTsKKyAgICAgICAgd2hpbGUgKHRoaXMuX3BlZWsoKSAhPT0gVG9rZW5zLkNBU0UgJiYgdGhpcy5f
cGVlaygpICE9PSBUb2tlbnMuREVGQVVMVCAmJiB0aGlzLl9wZWVrKCkgIT09IFRva2Vucy5SQlJB
Q0UpIHsKKyAgICAgICAgICAgIHRoaXMuX3BhcnNlU3RhdGVtZW50KCk7CisgICAgICAgICAgICB0
aGlzLl9idWlsZGVyLmFkZE5ld0xpbmUoKTsKKyAgICAgICAgfQorICAgICAgICB0aGlzLl9idWls
ZGVyLmRlY3JlYXNlTmVzdGluZ0xldmVsKCk7CisgICAgfSwKKworICAgIF9wYXJzZVN3aXRjaFN0
YXRlbWVudDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdGhpcy5fZXhwZWN0KFRva2Vucy5T
V0lUQ0gpOworICAgICAgICB0aGlzLl9idWlsZGVyLmFkZFNwYWNlKCk7CisgICAgICAgIHRoaXMu
X2V4cGVjdChUb2tlbnMuTFBBUkVOKTsKKyAgICAgICAgdGhpcy5fcGFyc2VFeHByZXNzaW9uKCk7
CisgICAgICAgIHRoaXMuX2V4cGVjdChUb2tlbnMuUlBBUkVOKTsKKyAgICAgICAgdGhpcy5fYnVp
bGRlci5hZGRTcGFjZSgpOworCisgICAgICAgIHRoaXMuX2V4cGVjdChUb2tlbnMuTEJSQUNFKTsK
KyAgICAgICAgdGhpcy5fYnVpbGRlci5hZGROZXdMaW5lKCk7CisgICAgICAgIHRoaXMuX2J1aWxk
ZXIuaW5jcmVhc2VOZXN0aW5nTGV2ZWwoKTsKKyAgICAgICAgd2hpbGUgKHRoaXMuX3BlZWsoKSAh
PT0gVG9rZW5zLlJCUkFDRSkKKyAgICAgICAgICAgIHRoaXMuX3BhcnNlQ2FzZUNsYXVzZSgpOwor
ICAgICAgICB0aGlzLl9idWlsZGVyLmRlY3JlYXNlTmVzdGluZ0xldmVsKCk7CisgICAgICAgIHRo
aXMuX2V4cGVjdChUb2tlbnMuUkJSQUNFKTsKKyAgICB9LAorCisgICAgX3BhcnNlVGhyb3dTdGF0
ZW1lbnQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMuX2V4cGVjdChUb2tlbnMuVEhS
T1cpOworICAgICAgICB0aGlzLl9idWlsZGVyLmFkZFNwYWNlKCk7CisgICAgICAgIHRoaXMuX3Bh
cnNlRXhwcmVzc2lvbigpOworICAgICAgICB0aGlzLl9leHBlY3RTZW1pY29sb24oKTsKKyAgICB9
LAorCisgICAgX3BhcnNlVHJ5U3RhdGVtZW50OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB0
aGlzLl9leHBlY3QoVG9rZW5zLlRSWSk7CisgICAgICAgIHRoaXMuX2J1aWxkZXIuYWRkU3BhY2Uo
KTsKKyAgICAgICAgdGhpcy5fcGFyc2VCbG9jaygpOworCisgICAgICAgIHZhciB0b2tlbiA9IHRo
aXMuX3BlZWsoKTsKKyAgICAgICAgaWYgKHRva2VuID09PSBUb2tlbnMuQ0FUQ0gpIHsKKyAgICAg
ICAgICAgIHRoaXMuX2J1aWxkZXIuYWRkU3BhY2UoKTsKKyAgICAgICAgICAgIHRoaXMuX2NvbnN1
bWUoVG9rZW5zLkNBVENIKTsKKyAgICAgICAgICAgIHRoaXMuX2J1aWxkZXIuYWRkU3BhY2UoKTsK
KyAgICAgICAgICAgIHRoaXMuX2V4cGVjdChUb2tlbnMuTFBBUkVOKTsKKyAgICAgICAgICAgIHRo
aXMuX2V4cGVjdChUb2tlbnMuSURFTlRJRklFUik7CisgICAgICAgICAgICB0aGlzLl9leHBlY3Qo
VG9rZW5zLlJQQVJFTik7CisgICAgICAgICAgICB0aGlzLl9idWlsZGVyLmFkZFNwYWNlKCk7Cisg
ICAgICAgICAgICB0aGlzLl9wYXJzZUJsb2NrKCk7CisgICAgICAgICAgICB0b2tlbiA9IHRoaXMu
X3BlZWsoKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICh0b2tlbiA9PT0gVG9rZW5zLkZJTkFM
TFkpIHsKKyAgICAgICAgICAgIHRoaXMuX2NvbnN1bWUoVG9rZW5zLkZJTkFMTFkpOworICAgICAg
ICAgICAgdGhpcy5fYnVpbGRlci5hZGRTcGFjZSgpOworICAgICAgICAgICAgdGhpcy5fcGFyc2VC
bG9jaygpOworICAgICAgICB9CisgICAgfSwKKworICAgIF9wYXJzZURvV2hpbGVTdGF0ZW1lbnQ6
IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMuX2V4cGVjdChUb2tlbnMuRE8pOworICAg
ICAgICB2YXIgaXNCbG9jayA9IHRoaXMuX3BhcnNlU3RhdGVtZW50T3JCbG9jaygpOworICAgICAg
ICBpZiAoaXNCbG9jaykKKyAgICAgICAgICAgIHRoaXMuX2J1aWxkZXIuYWRkU3BhY2UoKTsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgdGhpcy5fYnVpbGRlci5hZGROZXdMaW5lKCk7CisgICAg
ICAgIHRoaXMuX2V4cGVjdChUb2tlbnMuV0hJTEUpOworICAgICAgICB0aGlzLl9idWlsZGVyLmFk
ZFNwYWNlKCk7CisgICAgICAgIHRoaXMuX2V4cGVjdChUb2tlbnMuTFBBUkVOKTsKKyAgICAgICAg
dGhpcy5fcGFyc2VFeHByZXNzaW9uKCk7CisgICAgICAgIHRoaXMuX2V4cGVjdChUb2tlbnMuUlBB
UkVOKTsKKyAgICAgICAgdGhpcy5fZXhwZWN0U2VtaWNvbG9uKCk7CisgICAgfSwKKworICAgIF9w
YXJzZVdoaWxlU3RhdGVtZW50OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB0aGlzLl9leHBl
Y3QoVG9rZW5zLldISUxFKTsKKyAgICAgICAgdGhpcy5fYnVpbGRlci5hZGRTcGFjZSgpOworICAg
ICAgICB0aGlzLl9leHBlY3QoVG9rZW5zLkxQQVJFTik7CisgICAgICAgIHRoaXMuX3BhcnNlRXhw
cmVzc2lvbigpOworICAgICAgICB0aGlzLl9leHBlY3QoVG9rZW5zLlJQQVJFTik7CisgICAgICAg
IHRoaXMuX3BhcnNlU3RhdGVtZW50T3JCbG9jaygpOworICAgIH0sCisKKyAgICBfcGFyc2VGb3JT
dGF0ZW1lbnQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMuX2V4cGVjdChUb2tlbnMu
Rk9SKTsKKyAgICAgICAgdGhpcy5fYnVpbGRlci5hZGRTcGFjZSgpOworICAgICAgICB0aGlzLl9l
eHBlY3QoVG9rZW5zLkxQQVJFTik7CisgICAgICAgIGlmICh0aGlzLl9wZWVrKCkgIT09IFRva2Vu
cy5TRU1JQ09MT04pIHsKKyAgICAgICAgICAgIGlmICh0aGlzLl9wZWVrKCkgPT09IFRva2Vucy5W
QVIgfHwgdGhpcy5fcGVlaygpID09PSBUb2tlbnMuQ09OU1QpIHsKKyAgICAgICAgICAgICAgICB0
aGlzLl9wYXJzZVZhcmlhYmxlRGVjbGFyYXRpb25zKCk7CisgICAgICAgICAgICAgICAgaWYgKHRo
aXMuX3BlZWsoKSA9PT0gVG9rZW5zLklOKSB7CisgICAgICAgICAgICAgICAgICAgIHRoaXMuX2J1
aWxkZXIuYWRkU3BhY2UoKTsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5fY29uc3VtZShUb2tl
bnMuSU4pOworICAgICAgICAgICAgICAgICAgICB0aGlzLl9idWlsZGVyLmFkZFNwYWNlKCk7Cisg
ICAgICAgICAgICAgICAgICAgIHRoaXMuX3BhcnNlRXhwcmVzc2lvbigpOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIHRoaXMuX3BhcnNlRXhw
cmVzc2lvbigpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHRoaXMuX3BlZWsoKSAhPT0gVG9r
ZW5zLlJQQVJFTikgeworICAgICAgICAgICAgdGhpcy5fZXhwZWN0KFRva2Vucy5TRU1JQ09MT04p
OworICAgICAgICAgICAgdGhpcy5fYnVpbGRlci5hZGRTcGFjZSgpOworICAgICAgICAgICAgaWYg
KHRoaXMuX3BlZWsoKSAhPT0gVG9rZW5zLlNFTUlDT0xPTikKKyAgICAgICAgICAgICAgICB0aGlz
Ll9wYXJzZUV4cHJlc3Npb24oKTsKKyAgICAgICAgICAgIHRoaXMuX2V4cGVjdChUb2tlbnMuU0VN
SUNPTE9OKTsKKyAgICAgICAgICAgIHRoaXMuX2J1aWxkZXIuYWRkU3BhY2UoKTsKKyAgICAgICAg
ICAgIGlmICh0aGlzLl9wZWVrKCkgIT09IFRva2Vucy5SUEFSRU4pCisgICAgICAgICAgICAgICAg
dGhpcy5fcGFyc2VFeHByZXNzaW9uKCk7CisgICAgICAgIH0KKyAgICAgICAgdGhpcy5fZXhwZWN0
KFRva2Vucy5SUEFSRU4pOworCisgICAgICAgIHRoaXMuX3BhcnNlU3RhdGVtZW50T3JCbG9jaygp
OworICAgIH0sCisKKyAgICBfcGFyc2VFeHByZXNzaW9uOiBmdW5jdGlvbigpCisgICAgeworICAg
ICAgICB0aGlzLl9wYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKCk7CisgICAgICAgIHdoaWxlICh0
aGlzLl9wZWVrKCkgPT09IFRva2Vucy5DT01NQSkgeworICAgICAgICAgICAgdGhpcy5fZXhwZWN0
KFRva2Vucy5DT01NQSk7CisgICAgICAgICAgICB0aGlzLl9idWlsZGVyLmFkZFNwYWNlKCk7Cisg
ICAgICAgICAgICB0aGlzLl9wYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKCk7CisgICAgICAgIH0K
KyAgICB9LAorCisgICAgX3BhcnNlQXNzaWdubWVudEV4cHJlc3Npb246IGZ1bmN0aW9uKCkKKyAg
ICB7CisgICAgICAgIHRoaXMuX3BhcnNlQ29uZGl0aW9uYWxFeHByZXNzaW9uKCk7CisgICAgICAg
IHZhciB0b2tlbiA9IHRoaXMuX3BlZWsoKTsKKyAgICAgICAgaWYgKFRva2Vucy5BU1NJR04gPD0g
dG9rZW4gJiYgdG9rZW4gPD0gVG9rZW5zLkFTU0lHTl9NT0QpIHsKKyAgICAgICAgICAgIHRoaXMu
X2J1aWxkZXIuYWRkU3BhY2UoKTsKKyAgICAgICAgICAgIHRoaXMuX25leHQoKTsKKyAgICAgICAg
ICAgIHRoaXMuX2J1aWxkZXIuYWRkU3BhY2UoKTsKKyAgICAgICAgICAgIHRoaXMuX3BhcnNlQXNz
aWdubWVudEV4cHJlc3Npb24oKTsKKyAgICAgICAgfQorICAgIH0sCisKKyAgICBfcGFyc2VDb25k
aXRpb25hbEV4cHJlc3Npb246IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMuX3BhcnNl
QmluYXJ5RXhwcmVzc2lvbigpOworICAgICAgICBpZiAodGhpcy5fcGVlaygpID09PSBUb2tlbnMu
Q09ORElUSU9OQUwpIHsKKyAgICAgICAgICAgIHRoaXMuX2J1aWxkZXIuYWRkU3BhY2UoKTsKKyAg
ICAgICAgICAgIHRoaXMuX2NvbnN1bWUoVG9rZW5zLkNPTkRJVElPTkFMKTsKKyAgICAgICAgICAg
IHRoaXMuX2J1aWxkZXIuYWRkU3BhY2UoKTsKKyAgICAgICAgICAgIHRoaXMuX3BhcnNlQXNzaWdu
bWVudEV4cHJlc3Npb24oKTsKKyAgICAgICAgICAgIHRoaXMuX2J1aWxkZXIuYWRkU3BhY2UoKTsK
KyAgICAgICAgICAgIHRoaXMuX2V4cGVjdChUb2tlbnMuQ09MT04pOworICAgICAgICAgICAgdGhp
cy5fYnVpbGRlci5hZGRTcGFjZSgpOworICAgICAgICAgICAgdGhpcy5fcGFyc2VBc3NpZ25tZW50
RXhwcmVzc2lvbigpOworICAgICAgICB9CisgICAgfSwKKworICAgIF9wYXJzZUJpbmFyeUV4cHJl
c3Npb246IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMuX3BhcnNlVW5hcnlFeHByZXNz
aW9uKCk7CisgICAgICAgIHZhciB0b2tlbiA9IHRoaXMuX3BlZWsoKTsKKyAgICAgICAgd2hpbGUg
KFRva2Vucy5PUiA8PSB0b2tlbiAmJiB0b2tlbiA8PSBUb2tlbnMuSU4pIHsKKyAgICAgICAgICAg
IHRoaXMuX2J1aWxkZXIuYWRkU3BhY2UoKTsKKyAgICAgICAgICAgIHRoaXMuX25leHQoKTsKKyAg
ICAgICAgICAgIHRoaXMuX2J1aWxkZXIuYWRkU3BhY2UoKTsKKyAgICAgICAgICAgIHRoaXMuX3Bh
cnNlQmluYXJ5RXhwcmVzc2lvbigpOworICAgICAgICAgICAgdG9rZW4gPSB0aGlzLl9wZWVrKCk7
CisgICAgICAgIH0KKyAgICB9LAorCisgICAgX3BhcnNlVW5hcnlFeHByZXNzaW9uOiBmdW5jdGlv
bigpCisgICAgeworICAgICAgICB2YXIgdG9rZW4gPSB0aGlzLl9wZWVrKCk7CisgICAgICAgIGlm
ICgoVG9rZW5zLk5PVCA8PSB0b2tlbiAmJiB0b2tlbiA8PSBUb2tlbnMuVk9JRCkgfHwgdG9rZW4g
PT09IFRva2Vucy5BREQgfHwgdG9rZW4gPT09IFRva2Vucy5TVUIgfHwgdG9rZW4gPT09ICBUb2tl
bnMuSU5DIHx8IHRva2VuID09PSBUb2tlbnMuREVDKSB7CisgICAgICAgICAgICB0aGlzLl9uZXh0
KCk7CisgICAgICAgICAgICBpZiAodG9rZW4gPT09IFRva2Vucy5ERUxFVEUgfHwgdG9rZW4gPT09
IFRva2Vucy5UWVBFT0YgfHwgdG9rZW4gPT09IFRva2Vucy5WT0lEKQorICAgICAgICAgICAgICAg
IHRoaXMuX2J1aWxkZXIuYWRkU3BhY2UoKTsKKyAgICAgICAgICAgIHRoaXMuX3BhcnNlVW5hcnlF
eHByZXNzaW9uKCk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3Bh
cnNlUG9zdGZpeEV4cHJlc3Npb24oKTsKKyAgICB9LAorCisgICAgX3BhcnNlUG9zdGZpeEV4cHJl
c3Npb246IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMuX3BhcnNlTGVmdEhhbmRTaWRl
RXhwcmVzc2lvbigpOworICAgICAgICB2YXIgdG9rZW4gPSB0aGlzLl9wZWVrKCk7CisgICAgICAg
IGlmICghdGhpcy5faGFzTGluZVRlcm1pbmF0b3JCZWZvcmVOZXh0KCkgJiYgKHRva2VuID09PSBU
b2tlbnMuSU5DIHx8IHRva2VuID09PSBUb2tlbnMuREVDKSkKKyAgICAgICAgICAgIHRoaXMuX25l
eHQoKTsKKyAgICB9LAorCisgICAgX3BhcnNlTGVmdEhhbmRTaWRlRXhwcmVzc2lvbjogZnVuY3Rp
b24oKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX3BlZWsoKSA9PT0gVG9rZW5zLk5FVykKKyAg
ICAgICAgICAgIHRoaXMuX3BhcnNlTmV3RXhwcmVzc2lvbigpOworICAgICAgICBlbHNlCisgICAg
ICAgICAgICB0aGlzLl9wYXJzZU1lbWJlckV4cHJlc3Npb24oKTsKKworICAgICAgICB3aGlsZSAo
dHJ1ZSkgeworICAgICAgICAgICAgc3dpdGNoICh0aGlzLl9wZWVrKCkpIHsKKyAgICAgICAgICAg
IGNhc2UgVG9rZW5zLkxCUkFDSzoKKyAgICAgICAgICAgICAgICB0aGlzLl9jb25zdW1lKFRva2Vu
cy5MQlJBQ0spOworICAgICAgICAgICAgICAgIHRoaXMuX3BhcnNlRXhwcmVzc2lvbigpOworICAg
ICAgICAgICAgICAgIHRoaXMuX2V4cGVjdChUb2tlbnMuUkJSQUNLKTsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKworICAgICAgICAgICAgY2FzZSBUb2tlbnMuTFBBUkVOOgorICAgICAgICAgICAg
ICAgIHRoaXMuX3BhcnNlQXJndW1lbnRzKCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAg
ICAgICAgICAgIGNhc2UgVG9rZW5zLlBFUklPRDoKKyAgICAgICAgICAgICAgICB0aGlzLl9jb25z
dW1lKFRva2Vucy5QRVJJT0QpOworICAgICAgICAgICAgICAgIHRoaXMuX2V4cGVjdChUb2tlbnMu
SURFTlRJRklFUik7CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGRlZmF1
bHQ6CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgfSwKKworICAgIF9wYXJzZU5ld0V4cHJlc3Npb246IGZ1bmN0aW9uKCkKKyAgICB7CisgICAg
ICAgIHRoaXMuX2V4cGVjdChUb2tlbnMuTkVXKTsKKyAgICAgICAgdGhpcy5fYnVpbGRlci5hZGRT
cGFjZSgpOworICAgICAgICBpZiAodGhpcy5fcGVlaygpID09PSBUb2tlbnMuTkVXKQorICAgICAg
ICAgICAgdGhpcy5fcGFyc2VOZXdFeHByZXNzaW9uKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIHRoaXMuX3BhcnNlTWVtYmVyRXhwcmVzc2lvbigpOworICAgIH0sCisKKyAgICBfcGFyc2VN
ZW1iZXJFeHByZXNzaW9uOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBpZiAodGhpcy5fcGVl
aygpID09PSBUb2tlbnMuRlVOQ1RJT04pIHsKKyAgICAgICAgICAgIHRoaXMuX2V4cGVjdChUb2tl
bnMuRlVOQ1RJT04pOworICAgICAgICAgICAgaWYgKHRoaXMuX3BlZWsoKSA9PT0gVG9rZW5zLklE
RU5USUZJRVIpIHsKKyAgICAgICAgICAgICAgICB0aGlzLl9idWlsZGVyLmFkZFNwYWNlKCk7Cisg
ICAgICAgICAgICAgICAgdGhpcy5fZXhwZWN0KFRva2Vucy5JREVOVElGSUVSKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIHRoaXMuX3BhcnNlRnVuY3Rpb25MaXRlcmFsKCk7CisgICAgICAg
IH0gZWxzZQorICAgICAgICAgICAgdGhpcy5fcGFyc2VQcmltYXJ5RXhwcmVzc2lvbigpOworCisg
ICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICBzd2l0Y2ggKHRoaXMuX3BlZWsoKSkg
eworICAgICAgICAgICAgY2FzZSBUb2tlbnMuTEJSQUNLOgorICAgICAgICAgICAgICAgIHRoaXMu
X2NvbnN1bWUoVG9rZW5zLkxCUkFDSyk7CisgICAgICAgICAgICAgICAgdGhpcy5fcGFyc2VFeHBy
ZXNzaW9uKCk7CisgICAgICAgICAgICAgICAgdGhpcy5fZXhwZWN0KFRva2Vucy5SQlJBQ0spOwor
ICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBjYXNlIFRva2Vucy5QRVJJT0Q6
CisgICAgICAgICAgICAgICAgdGhpcy5fY29uc3VtZShUb2tlbnMuUEVSSU9EKTsKKyAgICAgICAg
ICAgICAgICB0aGlzLl9leHBlY3QoVG9rZW5zLklERU5USUZJRVIpOworICAgICAgICAgICAgICAg
IGJyZWFrOworCisgICAgICAgICAgICBjYXNlIFRva2Vucy5MUEFSRU46CisgICAgICAgICAgICAg
ICAgdGhpcy5fcGFyc2VBcmd1bWVudHMoKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAg
ICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICB9LAorCisgICAgX3BhcnNlRGVidWdnZXJTdGF0ZW1lbnQ6IGZ1bmN0
aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMuX2V4cGVjdChUb2tlbnMuREVCVUdHRVIpOworICAg
ICAgICB0aGlzLl9leHBlY3RTZW1pY29sb24oKTsKKyAgICB9LAorCisgICAgX3BhcnNlUHJpbWFy
eUV4cHJlc3Npb246IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHN3aXRjaCAodGhpcy5fcGVl
aygpKSB7CisgICAgICAgIGNhc2UgVG9rZW5zLlRISVM6CisgICAgICAgICAgICByZXR1cm4gdGhp
cy5fY29uc3VtZShUb2tlbnMuVEhJUyk7CisgICAgICAgIGNhc2UgVG9rZW5zLk5VTExfTElURVJB
TDoKKyAgICAgICAgICAgIHJldHVybiB0aGlzLl9jb25zdW1lKFRva2Vucy5OVUxMX0xJVEVSQUwp
OworICAgICAgICBjYXNlIFRva2Vucy5UUlVFX0xJVEVSQUw6CisgICAgICAgICAgICByZXR1cm4g
dGhpcy5fY29uc3VtZShUb2tlbnMuVFJVRV9MSVRFUkFMKTsKKyAgICAgICAgY2FzZSBUb2tlbnMu
RkFMU0VfTElURVJBTDoKKyAgICAgICAgICAgIHJldHVybiB0aGlzLl9jb25zdW1lKFRva2Vucy5G
QUxTRV9MSVRFUkFMKTsKKyAgICAgICAgY2FzZSBUb2tlbnMuSURFTlRJRklFUjoKKyAgICAgICAg
ICAgIHJldHVybiB0aGlzLl9jb25zdW1lKFRva2Vucy5JREVOVElGSUVSKTsKKyAgICAgICAgY2Fz
ZSBUb2tlbnMuTlVNQkVSOgorICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2NvbnN1bWUoVG9rZW5z
Lk5VTUJFUik7CisgICAgICAgIGNhc2UgVG9rZW5zLlNUUklORzoKKyAgICAgICAgICAgIHJldHVy
biB0aGlzLl9jb25zdW1lKFRva2Vucy5TVFJJTkcpOworICAgICAgICBjYXNlIFRva2Vucy5BU1NJ
R05fRElWOgorICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3BhcnNlUmVnRXhwTGl0ZXJhbCgpOwor
ICAgICAgICBjYXNlIFRva2Vucy5ESVY6CisgICAgICAgICAgICByZXR1cm4gdGhpcy5fcGFyc2VS
ZWdFeHBMaXRlcmFsKCk7CisgICAgICAgIGNhc2UgVG9rZW5zLkxCUkFDSzoKKyAgICAgICAgICAg
IHJldHVybiB0aGlzLl9wYXJzZUFycmF5TGl0ZXJhbCgpOworICAgICAgICBjYXNlIFRva2Vucy5M
QlJBQ0U6CisgICAgICAgICAgICByZXR1cm4gdGhpcy5fcGFyc2VPYmplY3RMaXRlcmFsKCk7Cisg
ICAgICAgIGNhc2UgVG9rZW5zLkxQQVJFTjoKKyAgICAgICAgICAgIHRoaXMuX2NvbnN1bWUoVG9r
ZW5zLkxQQVJFTik7CisgICAgICAgICAgICB0aGlzLl9wYXJzZUV4cHJlc3Npb24oKTsKKyAgICAg
ICAgICAgIHRoaXMuX2V4cGVjdChUb2tlbnMuUlBBUkVOKTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiB0aGlzLl9uZXh0KCk7CisgICAg
ICAgIH0KKyAgICB9LAorCisgICAgX3BhcnNlQXJyYXlMaXRlcmFsOiBmdW5jdGlvbigpCisgICAg
eworICAgICAgICB0aGlzLl9leHBlY3QoVG9rZW5zLkxCUkFDSyk7CisgICAgICAgIHRoaXMuX2J1
aWxkZXIuaW5jcmVhc2VOZXN0aW5nTGV2ZWwoKTsKKyAgICAgICAgd2hpbGUgKHRoaXMuX3BlZWso
KSAhPT0gVG9rZW5zLlJCUkFDSykgeworICAgICAgICAgICAgaWYgKHRoaXMuX3BlZWsoKSAhPT0g
VG9rZW5zLkNPTU1BKQorICAgICAgICAgICAgICAgIHRoaXMuX3BhcnNlQXNzaWdubWVudEV4cHJl
c3Npb24oKTsKKyAgICAgICAgICAgIGlmICh0aGlzLl9wZWVrKCkgIT09IFRva2Vucy5SQlJBQ0sp
IHsKKyAgICAgICAgICAgICAgICB0aGlzLl9leHBlY3QoVG9rZW5zLkNPTU1BKTsKKyAgICAgICAg
ICAgICAgICB0aGlzLl9idWlsZGVyLmFkZFNwYWNlKCk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICAgICAgdGhpcy5fYnVpbGRlci5kZWNyZWFzZU5lc3RpbmdMZXZlbCgpOworICAgICAg
ICB0aGlzLl9leHBlY3QoVG9rZW5zLlJCUkFDSyk7CisgICAgfSwKKworICAgIF9wYXJzZU9iamVj
dExpdGVyYWxHZXRTZXQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHZhciB0b2tlbiA9IHRo
aXMuX3BlZWsoKTsKKyAgICAgICAgaWYgKHRva2VuID09PSBUb2tlbnMuSURFTlRJRklFUiB8fCB0
b2tlbiA9PT0gVG9rZW5zLk5VTUJFUiB8fCB0b2tlbiA9PT0gVG9rZW5zLlNUUklORyB8fAorICAg
ICAgICAgICAgVG9rZW5zLkRFTEVURSA8PSB0b2tlbiAmJiB0b2tlbiA8PSBUb2tlbnMuRkFMU0Vf
TElURVJBTCB8fAorICAgICAgICAgICAgdG9rZW4gPT09IFRva2Vucy5JTlNUQU5DRU9GIHx8IHRv
a2VuID09PSBUb2tlbnMuSU4gfHwgdG9rZW4gPT09IFRva2Vucy5DT05TVCkgeworICAgICAgICAg
ICAgdGhpcy5fbmV4dCgpOworICAgICAgICAgICAgdGhpcy5fcGFyc2VGdW5jdGlvbkxpdGVyYWwo
KTsKKyAgICAgICAgfQorICAgIH0sCisKKyAgICBfcGFyc2VPYmplY3RMaXRlcmFsOiBmdW5jdGlv
bigpCisgICAgeworICAgICAgICB0aGlzLl9leHBlY3QoVG9rZW5zLkxCUkFDRSk7CisgICAgICAg
IHRoaXMuX2J1aWxkZXIuaW5jcmVhc2VOZXN0aW5nTGV2ZWwoKTsKKyAgICAgICAgd2hpbGUgKHRo
aXMuX3BlZWsoKSAhPT0gVG9rZW5zLlJCUkFDRSkgeworICAgICAgICAgICAgdmFyIHRva2VuID0g
dGhpcy5fcGVlaygpOworICAgICAgICAgICAgc3dpdGNoICh0b2tlbikgeworICAgICAgICAgICAg
Y2FzZSBUb2tlbnMuSURFTlRJRklFUjoKKyAgICAgICAgICAgICAgICB0aGlzLl9jb25zdW1lKFRv
a2Vucy5JREVOVElGSUVSKTsKKyAgICAgICAgICAgICAgICB2YXIgbmFtZSA9IHRoaXMuX3Rva2Vu
LnZhbHVlOworICAgICAgICAgICAgICAgIGlmICgobmFtZSA9PT0gImdldCIgfHwgbmFtZSA9PT0g
InNldCIpICYmIHRoaXMuX3BlZWsoKSAhPT0gVG9rZW5zLkNPTE9OKSB7CisgICAgICAgICAgICAg
ICAgICAgIHRoaXMuX2J1aWxkZXIuYWRkU3BhY2UoKTsKKyAgICAgICAgICAgICAgICAgICAgdGhp
cy5fcGFyc2VPYmplY3RMaXRlcmFsR2V0U2V0KCk7CisgICAgICAgICAgICAgICAgICAgIGlmICh0
aGlzLl9wZWVrKCkgIT09IFRva2Vucy5SQlJBQ0UpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHRoaXMuX2V4cGVjdChUb2tlbnMuQ09NTUEpOworICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICBicmVhazsKKworICAgICAgICAgICAgY2FzZSBUb2tlbnMuU1RSSU5HOgorICAgICAgICAg
ICAgICAgIHRoaXMuX2NvbnN1bWUoVG9rZW5zLlNUUklORyk7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisKKyAgICAgICAgICAgIGNhc2UgVG9rZW5zLk5VTUJFUjoKKyAgICAgICAgICAgICAgICB0
aGlzLl9jb25zdW1lKFRva2Vucy5OVU1CRVIpOworICAgICAgICAgICAgICAgIGJyZWFrOworCisg
ICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIHRoaXMuX25leHQoKTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgdGhpcy5fZXhwZWN0KFRva2Vucy5DT0xPTik7CisgICAg
ICAgICAgICB0aGlzLl9idWlsZGVyLmFkZFNwYWNlKCk7CisgICAgICAgICAgICB0aGlzLl9wYXJz
ZUFzc2lnbm1lbnRFeHByZXNzaW9uKCk7CisgICAgICAgICAgICBpZiAodGhpcy5fcGVlaygpICE9
PSBUb2tlbnMuUkJSQUNFKSB7CisgICAgICAgICAgICAgICAgdGhpcy5fZXhwZWN0KFRva2Vucy5D
T01NQSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgdGhpcy5fYnVpbGRlci5k
ZWNyZWFzZU5lc3RpbmdMZXZlbCgpOworCisgICAgICAgIHRoaXMuX2V4cGVjdChUb2tlbnMuUkJS
QUNFKTsKKyAgICB9LAorCisgICAgX3BhcnNlUmVnRXhwTGl0ZXJhbDogZnVuY3Rpb24oKQorICAg
IHsKKyAgICAgICAgaWYgKHRoaXMuX25leHRUb2tlbi50eXBlID09PSAicmVnZXhwIikKKyAgICAg
ICAgICAgIHRoaXMuX25leHQoKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICB0aGlzLl9m
b3JjZVJlZ2V4cCA9IHRydWU7CisgICAgICAgICAgICB0aGlzLl9uZXh0KCk7CisgICAgICAgIH0K
KyAgICB9LAorCisgICAgX3BhcnNlQXJndW1lbnRzOiBmdW5jdGlvbigpCisgICAgeworICAgICAg
ICB0aGlzLl9leHBlY3QoVG9rZW5zLkxQQVJFTik7CisgICAgICAgIHZhciBkb25lID0gKHRoaXMu
X3BlZWsoKSA9PT0gVG9rZW5zLlJQQVJFTik7CisgICAgICAgIHdoaWxlICghZG9uZSkgeworICAg
ICAgICAgICAgdGhpcy5fcGFyc2VBc3NpZ25tZW50RXhwcmVzc2lvbigpOworICAgICAgICAgICAg
ZG9uZSA9ICh0aGlzLl9wZWVrKCkgPT09IFRva2Vucy5SUEFSRU4pOworICAgICAgICAgICAgaWYg
KCFkb25lKSB7CisgICAgICAgICAgICAgICAgdGhpcy5fZXhwZWN0KFRva2Vucy5DT01NQSk7Cisg
ICAgICAgICAgICAgICAgdGhpcy5fYnVpbGRlci5hZGRTcGFjZSgpOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgICAgIHRoaXMuX2V4cGVjdChUb2tlbnMuUlBBUkVOKTsKKyAgICB9LAor
CisgICAgX3BhcnNlRnVuY3Rpb25MaXRlcmFsOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB0
aGlzLl9leHBlY3QoVG9rZW5zLkxQQVJFTik7CisgICAgICAgIHZhciBkb25lID0gKHRoaXMuX3Bl
ZWsoKSA9PT0gVG9rZW5zLlJQQVJFTik7CisgICAgICAgIHdoaWxlICghZG9uZSkgeworICAgICAg
ICAgICAgdGhpcy5fZXhwZWN0KFRva2Vucy5JREVOVElGSUVSKTsKKyAgICAgICAgICAgIGRvbmUg
PSAodGhpcy5fcGVlaygpID09PSBUb2tlbnMuUlBBUkVOKTsKKyAgICAgICAgICAgIGlmICghZG9u
ZSkgeworICAgICAgICAgICAgICAgIHRoaXMuX2V4cGVjdChUb2tlbnMuQ09NTUEpOworICAgICAg
ICAgICAgICAgIHRoaXMuX2J1aWxkZXIuYWRkU3BhY2UoKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgICAgICB0aGlzLl9leHBlY3QoVG9rZW5zLlJQQVJFTik7CisgICAgICAgIHRoaXMu
X2J1aWxkZXIuYWRkU3BhY2UoKTsKKworICAgICAgICB0aGlzLl9leHBlY3QoVG9rZW5zLkxCUkFD
RSk7CisgICAgICAgIHRoaXMuX2J1aWxkZXIuYWRkTmV3TGluZSgpOworICAgICAgICB0aGlzLl9i
dWlsZGVyLmluY3JlYXNlTmVzdGluZ0xldmVsKCk7CisgICAgICAgIHRoaXMuX3BhcnNlU291cmNl
RWxlbWVudHMoVG9rZW5zLlJCUkFDRSk7CisgICAgICAgIHRoaXMuX2J1aWxkZXIuZGVjcmVhc2VO
ZXN0aW5nTGV2ZWwoKTsKKyAgICAgICAgdGhpcy5fZXhwZWN0KFRva2Vucy5SQlJBQ0UpOworICAg
IH0KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVWds
aWZ5SlMvcHJvY2Vzcy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVWds
aWZ5SlMvcHJvY2Vzcy5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggNWUzMmRkMC4u
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1VnbGlmeUpT
L3Byb2Nlc3MuanMKKysrIC9kZXYvbnVsbApAQCAtMSwxNDk4ICswLDAgQEAKLS8qKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKgotCi0gIEEgSmF2YVNjcmlwdCB0b2tlbml6ZXIgLyBwYXJzZXIgLyBiZWF1dGlmaWVyIC8g
Y29tcHJlc3Nvci4KLQotICBUaGlzIHZlcnNpb24gaXMgc3VpdGFibGUgZm9yIE5vZGUuanMuICBX
aXRoIG1pbmltYWwgY2hhbmdlcyAodGhlCi0gIGV4cG9ydHMgc3R1ZmYpIGl0IHNob3VsZCB3b3Jr
IG9uIGFueSBKUyBwbGF0Zm9ybS4KLQotICBUaGlzIGZpbGUgaW1wbGVtZW50cyBzb21lIEFTVCBw
cm9jZXNzb3JzLiAgVGhleSB3b3JrIG9uIGRhdGEgYnVpbHQKLSAgYnkgcGFyc2UtanMuCi0KLSAg
RXhwb3J0ZWQgZnVuY3Rpb25zOgotCi0gICAgLSBhc3RfbWFuZ2xlKGFzdCwgaW5jbHVkZV90b3Bs
ZXZlbCkgLS0gbWFuZ2xlcyB0aGUKLSAgICAgIHZhcmlhYmxlL2Z1bmN0aW9uIG5hbWVzIGluIHRo
ZSBBU1QuICBSZXR1cm5zIGFuIEFTVC4gIFBhc3MgdHJ1ZQotICAgICAgYXMgc2Vjb25kIGFyZ3Vt
ZW50IHRvIG1hbmdsZSB0b3BsZXZlbCBuYW1lcyB0b28uCi0KLSAgICAtIGFzdF9zcXVlZXplKGFz
dCkgLS0gZW1wbG95cyB2YXJpb3VzIG9wdGltaXphdGlvbnMgdG8gbWFrZSB0aGUKLSAgICAgIGZp
bmFsIGdlbmVyYXRlZCBjb2RlIGV2ZW4gc21hbGxlci4gIFJldHVybnMgYW4gQVNULgotCi0gICAg
LSBnZW5fY29kZShhc3QsIGJlYXV0aWZ5KSAtLSBnZW5lcmF0ZXMgSlMgY29kZSBmcm9tIHRoZSBB
U1QuICBQYXNzCi0gICAgICB0cnVlIChvciBhbiBvYmplY3QsIHNlZSB0aGUgY29kZSBmb3Igc29t
ZSBvcHRpb25zKSBhcyBzZWNvbmQKLSAgICAgIGFyZ3VtZW50IHRvIGdldCAicHJldHR5IiAoaW5k
ZW50ZWQpIGNvZGUuCi0KLSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKEMpIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICBBdXRob3I6IE1paGFpIEJhem9uCi0gICAgICAgICAgICAgICAgICAgICAgICAgPG1paGFp
LmJhem9uQGdtYWlsLmNvbT4KLSAgICAgICAgICAgICAgICAgICAgICAgaHR0cDovL21paGFpLmJh
em9uLm5ldC9ibG9nCi0KLSAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJTRCBsaWNlbnNlOgotCi0g
ICAgQ29weXJpZ2h0IDIwMTAgKGMpIE1paGFpIEJhem9uIDxtaWhhaS5iYXpvbkBnbWFpbC5jb20+
Ci0KLSAgICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAgICBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAgICBhcmUgbWV0OgotCi0gICAgICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZQot
ICAgICAgICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nCi0gICAgICAgICAgZGlzY2xhaW1lci4KLQotICAgICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAgICAgICAg
ICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZwotICAgICAgICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscwotICAgICAgICAgIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LQotICAgIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVIg
4oCcQVMgSVPigJ0gQU5EIEFOWQotICAgIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gICAgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gICAgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xE
RVIgQkUKLSAgICBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksCi0gICAgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAgICBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAgICBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAgICBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UgotICAgIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRgotICAgIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgotICAgIFNVQ0ggREFNQUdFLgotCi0gKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKiovCi0KLXZhciBqc3AgPSByZXF1aXJlKCIuL3BhcnNlLWpzIiksCi0gICAgc2xpY2Ug
PSBqc3Auc2xpY2UsCi0gICAgbWVtYmVyID0ganNwLm1lbWJlciwKLSAgICBQUkVDRURFTkNFID0g
anNwLlBSRUNFREVOQ0UsCi0gICAgT1BFUkFUT1JTID0ganNwLk9QRVJBVE9SUzsKLQotLyogLS0t
LS1bIGhlbHBlciBmb3IgQVNUIHRyYXZlcnNhbCBdLS0tLS0gKi8KLQotZnVuY3Rpb24gYXN0X3dh
bGtlcihhc3QpIHsKLSAgICAgICAgZnVuY3Rpb24gX3ZhcmRlZnMoZGVmcykgewotICAgICAgICAg
ICAgICAgIHJldHVybiBbIHRoaXNbMF0sIE1BUChkZWZzLCBmdW5jdGlvbihkZWYpewotICAgICAg
ICAgICAgICAgICAgICAgICAgdmFyIGEgPSBbIGRlZlswXSBdOwotICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKGRlZi5sZW5ndGggPiAxKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBhWzFdID0gd2FsayhkZWZbMV0pOwotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGE7
Ci0gICAgICAgICAgICAgICAgfSkgXTsKLSAgICAgICAgfTsKLSAgICAgICAgdmFyIHdhbGtlcnMg
PSB7Ci0gICAgICAgICAgICAgICAgInN0cmluZyI6IGZ1bmN0aW9uKHN0cikgewotICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIFsgdGhpc1swXSwgc3RyIF07Ci0gICAgICAgICAgICAgICAg
fSwKLSAgICAgICAgICAgICAgICAibnVtIjogZnVuY3Rpb24obnVtKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gWyB0aGlzWzBdLCBudW0gXTsKLSAgICAgICAgICAgICAgICB9LAot
ICAgICAgICAgICAgICAgICJuYW1lIjogZnVuY3Rpb24obmFtZSkgewotICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIFsgdGhpc1swXSwgbmFtZSBdOwotICAgICAgICAgICAgICAgIH0sCi0g
ICAgICAgICAgICAgICAgInRvcGxldmVsIjogZnVuY3Rpb24oc3RhdGVtZW50cykgewotICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIFsgdGhpc1swXSwgTUFQKHN0YXRlbWVudHMsIHdhbGsp
IF07Ci0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAiYmxvY2siOiBmdW5jdGlv
bihzdGF0ZW1lbnRzKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB2YXIgb3V0ID0gWyB0aGlz
WzBdIF07Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdGVtZW50cyAhPSBudWxsKQot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQucHVzaChNQVAoc3RhdGVtZW50cywg
d2FsaykpOwotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG91dDsKLSAgICAgICAgICAg
ICAgICB9LAotICAgICAgICAgICAgICAgICJ2YXIiOiBfdmFyZGVmcywKLSAgICAgICAgICAgICAg
ICAiY29uc3QiOiBfdmFyZGVmcywKLSAgICAgICAgICAgICAgICAidHJ5IjogZnVuY3Rpb24odCwg
YywgZikgewotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdGhpc1swXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgTUFQKHQsIHdhbGspLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjICE9IG51
bGwgPyBbIGNbMF0sIE1BUChjWzFdLCB3YWxrKSBdIDogbnVsbCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZiAhPSBudWxsID8gTUFQKGYsIHdhbGspIDogbnVsbAotICAgICAgICAg
ICAgICAgICAgICAgICAgXTsKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICJ0
aHJvdyI6IGZ1bmN0aW9uKGV4cHIpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBb
IHRoaXNbMF0sIHdhbGsoZXhwcikgXTsKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAg
ICAgICJuZXciOiBmdW5jdGlvbihjdG9yLCBhcmdzKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gWyB0aGlzWzBdLCB3YWxrKGN0b3IpLCBNQVAoYXJncywgd2FsaykgXTsKLSAgICAg
ICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICJzd2l0Y2giOiBmdW5jdGlvbihleHByLCBi
b2R5KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWyB0aGlzWzBdLCB3YWxrKGV4
cHIpLCBNQVAoYm9keSwgZnVuY3Rpb24oYnJhbmNoKXsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIFsgYnJhbmNoWzBdID8gd2FsayhicmFuY2hbMF0pIDogbnVsbCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUFQKGJyYW5jaFsxXSwgd2Fs
aykgXTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0pIF07Ci0gICAgICAgICAgICAgICAgfSwK
LSAgICAgICAgICAgICAgICAiYnJlYWsiOiBmdW5jdGlvbihsYWJlbCkgewotICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIFsgdGhpc1swXSwgbGFiZWwgXTsKLSAgICAgICAgICAgICAgICB9
LAotICAgICAgICAgICAgICAgICJjb250aW51ZSI6IGZ1bmN0aW9uKGxhYmVsKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gWyB0aGlzWzBdLCBsYWJlbCBdOwotICAgICAgICAgICAg
ICAgIH0sCi0gICAgICAgICAgICAgICAgImNvbmRpdGlvbmFsIjogZnVuY3Rpb24oY29uZCwgdCwg
ZSkgewotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsgdGhpc1swXSwgd2Fsayhjb25k
KSwgd2Fsayh0KSwgd2FsayhlKSBdOwotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAg
ICAgImFzc2lnbiI6IGZ1bmN0aW9uKG9wLCBsdmFsdWUsIHJ2YWx1ZSkgewotICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIFsgdGhpc1swXSwgb3AsIHdhbGsobHZhbHVlKSwgd2FsayhydmFs
dWUpIF07Ci0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAiZG90IjogZnVuY3Rp
b24oZXhwcikgewotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsgdGhpc1swXSwgd2Fs
ayhleHByKSBdLmNvbmNhdChzbGljZShhcmd1bWVudHMsIDEpKTsKLSAgICAgICAgICAgICAgICB9
LAotICAgICAgICAgICAgICAgICJjYWxsIjogZnVuY3Rpb24oZXhwciwgYXJncykgewotICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIFsgdGhpc1swXSwgd2FsayhleHByKSwgTUFQKGFyZ3Ms
IHdhbGspIF07Ci0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAiZnVuY3Rpb24i
OiBmdW5jdGlvbihuYW1lLCBhcmdzLCBib2R5KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gWyB0aGlzWzBdLCBuYW1lLCBhcmdzLnNsaWNlKCksIE1BUChib2R5LCB3YWxrKSBdOwot
ICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgImRlZnVuIjogZnVuY3Rpb24obmFt
ZSwgYXJncywgYm9keSkgewotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsgdGhpc1sw
XSwgbmFtZSwgYXJncy5zbGljZSgpLCBNQVAoYm9keSwgd2FsaykgXTsKLSAgICAgICAgICAgICAg
ICB9LAotICAgICAgICAgICAgICAgICJpZiI6IGZ1bmN0aW9uKGNvbmRpdGlvbmFsLCB0LCBlKSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWyB0aGlzWzBdLCB3YWxrKGNvbmRpdGlv
bmFsKSwgd2Fsayh0KSwgd2FsayhlKSBdOwotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAg
ICAgICAgImZvciI6IGZ1bmN0aW9uKGluaXQsIGNvbmQsIHN0ZXAsIGJsb2NrKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gWyB0aGlzWzBdLCB3YWxrKGluaXQpLCB3YWxrKGNvbmQp
LCB3YWxrKHN0ZXApLCB3YWxrKGJsb2NrKSBdOwotICAgICAgICAgICAgICAgIH0sCi0gICAgICAg
ICAgICAgICAgImZvci1pbiI6IGZ1bmN0aW9uKGhhc192YXIsIGtleSwgaGFzaCwgYmxvY2spIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbIHRoaXNbMF0sIGhhc192YXIsIGtleSwg
d2FsayhoYXNoKSwgd2FsayhibG9jaykgXTsKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAg
ICAgICAgICJ3aGlsZSI6IGZ1bmN0aW9uKGNvbmQsIGJsb2NrKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gWyB0aGlzWzBdLCB3YWxrKGNvbmQpLCB3YWxrKGJsb2NrKSBdOwotICAg
ICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgImRvIjogZnVuY3Rpb24oY29uZCwgYmxv
Y2spIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbIHRoaXNbMF0sIHdhbGsoY29u
ZCksIHdhbGsoYmxvY2spIF07Ci0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAi
cmV0dXJuIjogZnVuY3Rpb24oZXhwcikgewotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IFsgdGhpc1swXSwgd2FsayhleHByKSBdOwotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAg
ICAgICAgImJpbmFyeSI6IGZ1bmN0aW9uKG9wLCBsZWZ0LCByaWdodCkgewotICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIFsgdGhpc1swXSwgb3AsIHdhbGsobGVmdCksIHdhbGsocmlnaHQp
IF07Ci0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAidW5hcnktcHJlZml4Ijog
ZnVuY3Rpb24ob3AsIGV4cHIpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbIHRo
aXNbMF0sIG9wLCB3YWxrKGV4cHIpIF07Ci0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAg
ICAgICAidW5hcnktcG9zdGZpeCI6IGZ1bmN0aW9uKG9wLCBleHByKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gWyB0aGlzWzBdLCBvcCwgd2FsayhleHByKSBdOwotICAgICAgICAg
ICAgICAgIH0sCi0gICAgICAgICAgICAgICAgInN1YiI6IGZ1bmN0aW9uKGV4cHIsIHN1YnNjcmlw
dCkgewotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsgdGhpc1swXSwgd2FsayhleHBy
KSwgd2FsayhzdWJzY3JpcHQpIF07Ci0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAg
ICAib2JqZWN0IjogZnVuY3Rpb24ocHJvcHMpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBbIHRoaXNbMF0sIE1BUChwcm9wcywgZnVuY3Rpb24ocCl7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBwLmxlbmd0aCA9PSAyCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPyBbIHBbMF0sIHdhbGsocFsxXSkgXQotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogWyBwWzBdLCB3YWxrKHBbMV0pLCBwWzJdIF07
IC8vIGdldC9zZXQtdGVyCi0gICAgICAgICAgICAgICAgICAgICAgICB9KSBdOwotICAgICAgICAg
ICAgICAgIH0sCi0gICAgICAgICAgICAgICAgInJlZ2V4cCI6IGZ1bmN0aW9uKHJ4LCBtb2RzKSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWyB0aGlzWzBdLCByeCwgbW9kcyBdOwot
ICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgImFycmF5IjogZnVuY3Rpb24oZWxl
bWVudHMpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbIHRoaXNbMF0sIE1BUChl
bGVtZW50cywgd2FsaykgXTsKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICJz
dGF0IjogZnVuY3Rpb24oc3RhdCkgewotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsg
dGhpc1swXSwgd2FsayhzdGF0KSBdOwotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAg
ICAgInNlcSI6IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsg
dGhpc1swXSBdLmNvbmNhdChNQVAoc2xpY2UoYXJndW1lbnRzKSwgd2FsaykpOwotICAgICAgICAg
ICAgICAgIH0sCi0gICAgICAgICAgICAgICAgImxhYmVsIjogZnVuY3Rpb24obmFtZSwgYmxvY2sp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbIHRoaXNbMF0sIG5hbWUsIHdhbGso
YmxvY2spIF07Ci0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAid2l0aCI6IGZ1
bmN0aW9uKGV4cHIsIGJsb2NrKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWyB0
aGlzWzBdLCB3YWxrKGV4cHIpLCB3YWxrKGJsb2NrKSBdOwotICAgICAgICAgICAgICAgIH0sCi0g
ICAgICAgICAgICAgICAgImF0b20iOiBmdW5jdGlvbihuYW1lKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gWyB0aGlzWzBdLCBuYW1lIF07Ci0gICAgICAgICAgICAgICAgfQotICAg
ICAgICB9OwotCi0gICAgICAgIHZhciB1c2VyID0ge307Ci0gICAgICAgIHZhciBzdGFjayA9IFtd
OwotICAgICAgICBmdW5jdGlvbiB3YWxrKGFzdCkgewotICAgICAgICAgICAgICAgIGlmIChhc3Qg
PT0gbnVsbCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsOwotICAgICAgICAg
ICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdGFjay5wdXNoKGFzdCk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICB2YXIgdHlwZSA9IGFzdFswXTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHZhciBnZW4gPSB1c2VyW3R5cGVdOwotICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKGdlbikgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmV0ID0gZ2Vu
LmFwcGx5KGFzdCwgYXN0LnNsaWNlKDEpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKHJldCAhPSBudWxsKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiByZXQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBnZW4gPSB3YWxrZXJzW3R5cGVdOwotICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGdlbi5hcHBseShhc3QsIGFzdC5zbGljZSgxKSk7Ci0gICAgICAgICAgICAgICAgfSBm
aW5hbGx5IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrLnBvcCgpOwotICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgfTsKLQotICAgICAgICBmdW5jdGlvbiB3aXRoX3dhbGtlcnMod2Fs
a2VycywgY29udCl7Ci0gICAgICAgICAgICAgICAgdmFyIHNhdmUgPSB7fSwgaTsKLSAgICAgICAg
ICAgICAgICBmb3IgKGkgaW4gd2Fsa2VycykgaWYgKEhPUCh3YWxrZXJzLCBpKSkgewotICAgICAg
ICAgICAgICAgICAgICAgICAgc2F2ZVtpXSA9IHVzZXJbaV07Ci0gICAgICAgICAgICAgICAgICAg
ICAgICB1c2VyW2ldID0gd2Fsa2Vyc1tpXTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgdmFyIHJldCA9IGNvbnQoKTsKLSAgICAgICAgICAgICAgICBmb3IgKGkgaW4gc2F2ZSkg
aWYgKEhPUChzYXZlLCBpKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFzYXZlW2ld
KSBkZWxldGUgdXNlcltpXTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgdXNlcltpXSA9
IHNhdmVbaV07Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJldHVybiByZXQ7
Ci0gICAgICAgIH07Ci0KLSAgICAgICAgcmV0dXJuIHsKLSAgICAgICAgICAgICAgICB3YWxrOiB3
YWxrLAotICAgICAgICAgICAgICAgIHdpdGhfd2Fsa2Vyczogd2l0aF93YWxrZXJzLAotICAgICAg
ICAgICAgICAgIHBhcmVudDogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gc3RhY2tbc3RhY2subGVuZ3RoIC0gMl07IC8vIGxhc3Qgb25lIGlzIGN1cnJlbnQgbm9k
ZQotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgc3RhY2s6IGZ1bmN0aW9uKCkg
ewotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0YWNrOwotICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgfTsKLX07Ci0KLS8qIC0tLS0tWyBTY29wZSBhbmQgbWFuZ2xpbmcgXS0tLS0t
ICovCi0KLWZ1bmN0aW9uIFNjb3BlKHBhcmVudCkgewotICAgICAgICB0aGlzLm5hbWVzID0ge307
ICAgICAgICAvLyBuYW1lcyBkZWZpbmVkIGluIHRoaXMgc2NvcGUKLSAgICAgICAgdGhpcy5tYW5n
bGVkID0ge307ICAgICAgLy8gbWFuZ2xlZCBuYW1lcyAob3JpZy5uYW1lID0+IG1hbmdsZWQpCi0g
ICAgICAgIHRoaXMucmV2X21hbmdsZWQgPSB7fTsgIC8vIHJldmVyc2UgbG9va3VwIChtYW5nbGVk
ID0+IG9yaWcubmFtZSkKLSAgICAgICAgdGhpcy5jbmFtZSA9IC0xOyAgICAgICAgLy8gY3VycmVu
dCBtYW5nbGVkIG5hbWUKLSAgICAgICAgdGhpcy5yZWZzID0ge307ICAgICAgICAgLy8gbmFtZXMg
cmVmZXJlbmNlZCBmcm9tIHRoaXMgc2NvcGUKLSAgICAgICAgdGhpcy51c2VzX3dpdGggPSBmYWxz
ZTsgLy8gd2lsbCBiZWNvbWUgVFJVRSBpZiBldmFsKCkgaXMgZGV0ZWN0ZWQgaW4gdGhpcyBvciBh
bnkgc3Vic2NvcGVzCi0gICAgICAgIHRoaXMudXNlc19ldmFsID0gZmFsc2U7IC8vIHdpbGwgYmVj
b21lIFRSVUUgaWYgd2l0aCgpIGlzIGRldGVjdGVkIGluIHRoaXMgb3IgYW55IHN1YnNjb3Blcwot
ICAgICAgICB0aGlzLnBhcmVudCA9IHBhcmVudDsgICAvLyBwYXJlbnQgc2NvcGUKLSAgICAgICAg
dGhpcy5jaGlsZHJlbiA9IFtdOyAgICAgLy8gc3ViLXNjb3BlcwotICAgICAgICBpZiAocGFyZW50
KSB7Ci0gICAgICAgICAgICAgICAgdGhpcy5sZXZlbCA9IHBhcmVudC5sZXZlbCArIDE7Ci0gICAg
ICAgICAgICAgICAgcGFyZW50LmNoaWxkcmVuLnB1c2godGhpcyk7Ci0gICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICAgICAgdGhpcy5sZXZlbCA9IDA7Ci0gICAgICAgIH0KLX07Ci0KLXZhciBi
YXNlNTQgPSAoZnVuY3Rpb24oKXsKLSAgICAgICAgdmFyIERJR0lUUyA9ICJhYmNkZWZnaGlqa2xt
bm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaJF8iOwotICAgICAgICByZXR1
cm4gZnVuY3Rpb24obnVtKSB7Ci0gICAgICAgICAgICAgICAgdmFyIHJldCA9ICIiOwotICAgICAg
ICAgICAgICAgIGRvIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldCA9IERJR0lUUy5jaGFy
QXQobnVtICUgNTQpICsgcmV0OwotICAgICAgICAgICAgICAgICAgICAgICAgbnVtID0gTWF0aC5m
bG9vcihudW0gLyA1NCk7Ci0gICAgICAgICAgICAgICAgfSB3aGlsZSAobnVtID4gMCk7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIHJldDsKLSAgICAgICAgfTsKLX0pKCk7Ci0KLVNjb3BlLnByb3Rv
dHlwZSA9IHsKLSAgICAgICAgaGFzOiBmdW5jdGlvbihuYW1lKSB7Ci0gICAgICAgICAgICAgICAg
Zm9yICh2YXIgcyA9IHRoaXM7IHM7IHMgPSBzLnBhcmVudCkKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChIT1Aocy5uYW1lcywgbmFtZSkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBzOwotICAgICAgICB9LAotICAgICAgICBoYXNfbWFuZ2xlZDogZnVuY3Rpb24o
bW5hbWUpIHsKLSAgICAgICAgICAgICAgICBmb3IgKHZhciBzID0gdGhpczsgczsgcyA9IHMucGFy
ZW50KQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEhPUChzLnJldl9tYW5nbGVkLCBtbmFt
ZSkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzOwotICAgICAgICB9
LAotICAgICAgICB0b0pTT046IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgIHJldHVybiB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBuYW1lczogdGhpcy5uYW1lcywKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHVzZXNfZXZhbDogdGhpcy51c2VzX2V2YWwsCi0gICAgICAgICAgICAgICAg
ICAgICAgICB1c2VzX3dpdGg6IHRoaXMudXNlc193aXRoCi0gICAgICAgICAgICAgICAgfTsKLSAg
ICAgICAgfSwKLQotICAgICAgICBuZXh0X21hbmdsZWQ6IGZ1bmN0aW9uKCkgewotICAgICAgICAg
ICAgICAgIC8vIHdlIG11c3QgYmUgY2FyZWZ1bCB0aGF0IHRoZSBuZXcgbWFuZ2xlZCBuYW1lOgot
ICAgICAgICAgICAgICAgIC8vCi0gICAgICAgICAgICAgICAgLy8gMS4gZG9lc24ndCBzaGFkb3cg
YSBtYW5nbGVkIG5hbWUgZnJvbSBhIHBhcmVudAotICAgICAgICAgICAgICAgIC8vICAgIHNjb3Bl
LCB1bmxlc3Mgd2UgZG9uJ3QgcmVmZXJlbmNlIHRoZSBvcmlnaW5hbAotICAgICAgICAgICAgICAg
IC8vICAgIG5hbWUgZnJvbSB0aGlzIHNjb3BlIE9SIGZyb20gYW55IHN1Yi1zY29wZXMhCi0gICAg
ICAgICAgICAgICAgLy8gICAgVGhpcyB3aWxsIGdldCBzbG93LgotICAgICAgICAgICAgICAgIC8v
Ci0gICAgICAgICAgICAgICAgLy8gMi4gZG9lc24ndCBzaGFkb3cgYW4gb3JpZ2luYWwgbmFtZSBm
cm9tIGEgcGFyZW50Ci0gICAgICAgICAgICAgICAgLy8gICAgc2NvcGUsIGluIHRoZSBldmVudCB0
aGF0IHRoZSBuYW1lIGlzIG5vdCBtYW5nbGVkCi0gICAgICAgICAgICAgICAgLy8gICAgaW4gdGhl
IHBhcmVudCBzY29wZSBhbmQgd2UgcmVmZXJlbmNlIHRoYXQgbmFtZQotICAgICAgICAgICAgICAg
IC8vICAgIGhlcmUgT1IgSU4gQU5ZIFNVQlNDT1BFUyEKLSAgICAgICAgICAgICAgICAvLwotICAg
ICAgICAgICAgICAgIC8vIDMuIGRvZXNuJ3Qgc2hhZG93IGEgbmFtZSB0aGF0IGlzIHJlZmVyZW5j
ZWQgYnV0IG5vdAotICAgICAgICAgICAgICAgIC8vICAgIGRlZmluZWQgKHBvc3NpYmx5IGdsb2Jh
bCBkZWZpbmVkIGVsc2V3aGVyZSkuCi0gICAgICAgICAgICAgICAgZm9yICg7OykgewotICAgICAg
ICAgICAgICAgICAgICAgICAgdmFyIG0gPSBiYXNlNTQoKyt0aGlzLmNuYW1lKSwgcHJpb3I7Ci0K
LSAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgMS4KLSAgICAgICAgICAgICAgICAgICAg
ICAgIHByaW9yID0gdGhpcy5oYXNfbWFuZ2xlZChtKTsKLSAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChwcmlvciAmJiB0aGlzLnJlZnNbcHJpb3IucmV2X21hbmdsZWRbbV1dID09PSBwcmlvcikK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIGNhc2UgMi4KLSAgICAgICAgICAgICAgICAgICAgICAgIHByaW9yID0g
dGhpcy5oYXMobSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAocHJpb3IgJiYgcHJpb3Ig
IT09IHRoaXMgJiYgdGhpcy5yZWZzW21dID09PSBwcmlvciAmJiAhcHJpb3IuaGFzX21hbmdsZWQo
bSkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAg
ICAgICAgICAgICAgICAgICAvLyBjYXNlIDMuCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAo
SE9QKHRoaXMucmVmcywgbSkgJiYgdGhpcy5yZWZzW21dID09IG51bGwpCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgICAgICAgICAgICAgICAgICAv
LyBJIGdvdCAiZG8iIG9uY2UuIDotLwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpc19p
ZGVudGlmaWVyKG0pKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsK
LQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG07Ci0gICAgICAgICAgICAgICAgfQot
ICAgICAgICB9LAotICAgICAgICBnZXRfbWFuZ2xlZDogZnVuY3Rpb24obmFtZSwgbmV3TWFuZ2xl
KSB7Ci0gICAgICAgICAgICAgICAgaWYgKHRoaXMudXNlc19ldmFsIHx8IHRoaXMudXNlc193aXRo
KSByZXR1cm4gbmFtZTsgLy8gbm8gbWFuZ2xlIGlmIGV2YWwgb3Igd2l0aCBpcyBpbiB1c2UKLSAg
ICAgICAgICAgICAgICB2YXIgcyA9IHRoaXMuaGFzKG5hbWUpOwotICAgICAgICAgICAgICAgIGlm
ICghcykgcmV0dXJuIG5hbWU7IC8vIG5vdCBpbiB2aXNpYmxlIHNjb3BlLCBubyBtYW5nbGUKLSAg
ICAgICAgICAgICAgICBpZiAoSE9QKHMubWFuZ2xlZCwgbmFtZSkpIHJldHVybiBzLm1hbmdsZWRb
bmFtZV07IC8vIGFscmVhZHkgbWFuZ2xlZCBpbiB0aGlzIHNjb3BlCi0gICAgICAgICAgICAgICAg
aWYgKCFuZXdNYW5nbGUpIHJldHVybiBuYW1lOyAgICAgICAgICAgICAgICAgICAgICAvLyBub3Qg
Zm91bmQgYW5kIG5vIG1hbmdsaW5nIHJlcXVlc3RlZAotCi0gICAgICAgICAgICAgICAgdmFyIG0g
PSBzLm5leHRfbWFuZ2xlZCgpOwotICAgICAgICAgICAgICAgIHMucmV2X21hbmdsZWRbbV0gPSBu
YW1lOwotICAgICAgICAgICAgICAgIHJldHVybiBzLm1hbmdsZWRbbmFtZV0gPSBtOwotICAgICAg
ICB9LAotICAgICAgICBkZWZpbmU6IGZ1bmN0aW9uKG5hbWUpIHsKLSAgICAgICAgICAgICAgICBp
ZiAobmFtZSAhPSBudWxsKQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubmFt
ZXNbbmFtZV0gPSBuYW1lOwotICAgICAgICB9Ci19OwotCi1mdW5jdGlvbiBhc3RfYWRkX3Njb3Bl
KGFzdCkgewotCi0gICAgICAgIHZhciBjdXJyZW50X3Njb3BlID0gbnVsbDsKLSAgICAgICAgdmFy
IHcgPSBhc3Rfd2Fsa2VyKCksIHdhbGsgPSB3LndhbGs7Ci0gICAgICAgIHZhciBoYXZpbmdfZXZh
bCA9IFtdOwotCi0gICAgICAgIGZ1bmN0aW9uIHdpdGhfbmV3X3Njb3BlKGNvbnQpIHsKLSAgICAg
ICAgICAgICAgICBjdXJyZW50X3Njb3BlID0gbmV3IFNjb3BlKGN1cnJlbnRfc2NvcGUpOwotICAg
ICAgICAgICAgICAgIHZhciByZXQgPSBjdXJyZW50X3Njb3BlLmJvZHkgPSBjb250KCk7Ci0gICAg
ICAgICAgICAgICAgcmV0LnNjb3BlID0gY3VycmVudF9zY29wZTsKLSAgICAgICAgICAgICAgICBj
dXJyZW50X3Njb3BlID0gY3VycmVudF9zY29wZS5wYXJlbnQ7Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIHJldDsKLSAgICAgICAgfTsKLQotICAgICAgICBmdW5jdGlvbiBkZWZpbmUobmFtZSkgewot
ICAgICAgICAgICAgICAgIHJldHVybiBjdXJyZW50X3Njb3BlLmRlZmluZShuYW1lKTsKLSAgICAg
ICAgfTsKLQotICAgICAgICBmdW5jdGlvbiByZWZlcmVuY2UobmFtZSkgewotICAgICAgICAgICAg
ICAgIGN1cnJlbnRfc2NvcGUucmVmc1tuYW1lXSA9IHRydWU7Ci0gICAgICAgIH07Ci0KLSAgICAg
ICAgZnVuY3Rpb24gX2xhbWJkYShuYW1lLCBhcmdzLCBib2R5KSB7Ci0gICAgICAgICAgICAgICAg
cmV0dXJuIFsgdGhpc1swXSwgZGVmaW5lKG5hbWUpLCBhcmdzLCB3aXRoX25ld19zY29wZShmdW5j
dGlvbigpewotICAgICAgICAgICAgICAgICAgICAgICAgTUFQKGFyZ3MsIGRlZmluZSk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gTUFQKGJvZHksIHdhbGspOwotICAgICAgICAgICAg
ICAgIH0pXTsKLSAgICAgICAgfTsKLQotICAgICAgICByZXR1cm4gd2l0aF9uZXdfc2NvcGUoZnVu
Y3Rpb24oKXsKLSAgICAgICAgICAgICAgICAvLyBwcm9jZXNzIEFTVAotICAgICAgICAgICAgICAg
IHZhciByZXQgPSB3LndpdGhfd2Fsa2Vycyh7Ci0gICAgICAgICAgICAgICAgICAgICAgICAiZnVu
Y3Rpb24iOiBfbGFtYmRhLAotICAgICAgICAgICAgICAgICAgICAgICAgImRlZnVuIjogX2xhbWJk
YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICJ3aXRoIjogZnVuY3Rpb24oZXhwciwgYmxvY2sp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgcyA9IGN1cnJlbnRf
c2NvcGU7IHM7IHMgPSBzLnBhcmVudCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzLnVzZXNfd2l0aCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9LAot
ICAgICAgICAgICAgICAgICAgICAgICAgInZhciI6IGZ1bmN0aW9uKGRlZnMpIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgTUFQKGRlZnMsIGZ1bmN0aW9uKGQpeyBkZWZpbmUoZFsw
XSkgfSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICAg
ICAgImNvbnN0IjogZnVuY3Rpb24oZGVmcykgewotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBNQVAoZGVmcywgZnVuY3Rpb24oZCl7IGRlZmluZShkWzBdKSB9KTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICAidHJ5IjogZnVuY3Rpb24o
dCwgYywgZikgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYyAhPSBudWxs
KSByZXR1cm4gWwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXNb
MF0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUFQKHQsIHdhbGsp
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsgZGVmaW5lKGNbMF0p
LCBNQVAoY1sxXSwgd2FsaykgXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBmICE9IG51bGwgPyBNQVAoZiwgd2FsaykgOiBudWxsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIF07Ci0gICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAg
ICAgICAgICAgICAgIm5hbWUiOiBmdW5jdGlvbihuYW1lKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChuYW1lID09ICJldmFsIikKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBoYXZpbmdfZXZhbC5wdXNoKGN1cnJlbnRfc2NvcGUpOwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2UobmFtZSk7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICAgICAgImZvci1pbiI6IGZ1bmN0aW9u
KGhhc192YXIsIG5hbWUpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGhh
c192YXIpIGRlZmluZShuYW1lKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxz
ZSByZWZlcmVuY2UobmFtZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgfSwgZnVuY3Rpb24oKXsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB3YWxr
KGFzdCk7Ci0gICAgICAgICAgICAgICAgfSk7Ci0KLSAgICAgICAgICAgICAgICAvLyB0aGUgcmVh
c29uIHdoeSB3ZSBuZWVkIGFuIGFkZGl0aW9uYWwgcGFzcyBoZXJlIGlzCi0gICAgICAgICAgICAg
ICAgLy8gdGhhdCBuYW1lcyBjYW4gYmUgdXNlZCBwcmlvciB0byB0aGVpciBkZWZpbml0aW9uLgot
Ci0gICAgICAgICAgICAgICAgLy8gc2NvcGVzIHdoZXJlIGV2YWwgd2FzIGRldGVjdGVkIGFuZCB0
aGVpciBwYXJlbnRzCi0gICAgICAgICAgICAgICAgLy8gYXJlIG1hcmtlZCB3aXRoIHVzZXNfZXZh
bCwgdW5sZXNzIHRoZXkgZGVmaW5lIHRoZQotICAgICAgICAgICAgICAgIC8vICJldmFsIiBuYW1l
LgotICAgICAgICAgICAgICAgIE1BUChoYXZpbmdfZXZhbCwgZnVuY3Rpb24oc2NvcGUpewotICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKCFzY29wZS5oYXMoImV2YWwiKSkgd2hpbGUgKHNjb3Bl
KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLnVzZXNfZXZhbCA9IHRy
dWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlID0gc2NvcGUucGFyZW50
OwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0pOwotCi0gICAg
ICAgICAgICAgICAgLy8gZm9yIHJlZmVyZW5jZWQgbmFtZXMgaXQgbWlnaHQgYmUgdXNlZnVsIHRv
IGtub3cKLSAgICAgICAgICAgICAgICAvLyB0aGVpciBvcmlnaW4gc2NvcGUuICBjdXJyZW50X3Nj
b3BlIGhlcmUgaXMgdGhlCi0gICAgICAgICAgICAgICAgLy8gdG9wbGV2ZWwgb25lLgotICAgICAg
ICAgICAgICAgIGZ1bmN0aW9uIGZpeHJlZnMoc2NvcGUsIGkpIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIGRvIGNoaWxkcmVuIGZpcnN0OyBvcmRlciBzaG91bGRuJ3QgbWF0dGVyCi0gICAg
ICAgICAgICAgICAgICAgICAgICBmb3IgKGkgPSBzY29wZS5jaGlsZHJlbi5sZW5ndGg7IC0taSA+
PSAwOykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZml4cmVmcyhzY29wZS5jaGls
ZHJlbltpXSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGkgaW4gc2NvcGUucmVmcykg
aWYgKEhPUChzY29wZS5yZWZzLCBpKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBmaW5kIG9yaWdpbiBzY29wZSBhbmQgcHJvcGFnYXRlIHRoZSByZWZlcmVuY2UgdG8gb3Jp
Z2luCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIG9yaWdpbiA9IHNj
b3BlLmhhcyhpKSwgcyA9IHNjb3BlOyBzOyBzID0gcy5wYXJlbnQpIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzLnJlZnNbaV0gPSBvcmlnaW47Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMgPT09IG9yaWdpbikgYnJlYWs7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICB9OwotICAgICAgICAgICAgICAgIGZpeHJlZnMoY3VycmVudF9z
Y29wZSk7Ci0KLSAgICAgICAgICAgICAgICByZXR1cm4gcmV0OwotICAgICAgICB9KTsKLQotfTsK
LQotLyogLS0tLS1bIG1hbmdsZSBuYW1lcyBdLS0tLS0gKi8KLQotZnVuY3Rpb24gYXN0X21hbmds
ZShhc3QsIGRvX3RvcGxldmVsKSB7Ci0gICAgICAgIHZhciB3ID0gYXN0X3dhbGtlcigpLCB3YWxr
ID0gdy53YWxrLCBzY29wZTsKLQotICAgICAgICBmdW5jdGlvbiBnZXRfbWFuZ2xlZChuYW1lLCBu
ZXdNYW5nbGUpIHsKLSAgICAgICAgICAgICAgICBpZiAoIWRvX3RvcGxldmVsICYmICFzY29wZS5w
YXJlbnQpIHJldHVybiBuYW1lOyAvLyBkb24ndCBtYW5nbGUgdG9wbGV2ZWwKLSAgICAgICAgICAg
ICAgICByZXR1cm4gc2NvcGUuZ2V0X21hbmdsZWQobmFtZSwgbmV3TWFuZ2xlKTsKLSAgICAgICAg
fTsKLQotICAgICAgICBmdW5jdGlvbiBfbGFtYmRhKG5hbWUsIGFyZ3MsIGJvZHkpIHsKLSAgICAg
ICAgICAgICAgICBpZiAobmFtZSkgbmFtZSA9IGdldF9tYW5nbGVkKG5hbWUpOwotICAgICAgICAg
ICAgICAgIGJvZHkgPSB3aXRoX3Njb3BlKGJvZHkuc2NvcGUsIGZ1bmN0aW9uKCl7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBhcmdzID0gTUFQKGFyZ3MsIGZ1bmN0aW9uKG5hbWUpeyByZXR1cm4g
Z2V0X21hbmdsZWQobmFtZSkgfSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTUFQ
KGJvZHksIHdhbGspOwotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgIHJldHVy
biBbIHRoaXNbMF0sIG5hbWUsIGFyZ3MsIGJvZHkgXTsKLSAgICAgICAgfTsKLQotICAgICAgICBm
dW5jdGlvbiB3aXRoX3Njb3BlKHMsIGNvbnQpIHsKLSAgICAgICAgICAgICAgICB2YXIgX3Njb3Bl
ID0gc2NvcGU7Ci0gICAgICAgICAgICAgICAgc2NvcGUgPSBzOwotICAgICAgICAgICAgICAgIGZv
ciAodmFyIGkgaW4gcy5uYW1lcykgaWYgKEhPUChzLm5hbWVzLCBpKSkgewotICAgICAgICAgICAg
ICAgICAgICAgICAgZ2V0X21hbmdsZWQoaSwgdHJ1ZSk7Ci0gICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgIHZhciByZXQgPSBjb250KCk7Ci0gICAgICAgICAgICAgICAgcmV0LnNjb3Bl
ID0gczsKLSAgICAgICAgICAgICAgICBzY29wZSA9IF9zY29wZTsKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gcmV0OwotICAgICAgICB9OwotCi0gICAgICAgIGZ1bmN0aW9uIF92YXJkZWZzKGRlZnMp
IHsKLSAgICAgICAgICAgICAgICByZXR1cm4gWyB0aGlzWzBdLCBNQVAoZGVmcywgZnVuY3Rpb24o
ZCl7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWyBnZXRfbWFuZ2xlZChkWzBdKSwg
d2FsayhkWzFdKSBdOwotICAgICAgICAgICAgICAgIH0pIF07Ci0gICAgICAgIH07Ci0KLSAgICAg
ICAgcmV0dXJuIHcud2l0aF93YWxrZXJzKHsKLSAgICAgICAgICAgICAgICAiZnVuY3Rpb24iOiBf
bGFtYmRhLAotICAgICAgICAgICAgICAgICJkZWZ1biI6IGZ1bmN0aW9uKCkgewotICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gbW92ZSBmdW5jdGlvbiBkZWNsYXJhdGlvbnMgdG8gdGhlIHRvcCB3
aGVuCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGV5IGFyZSBub3QgaW4gc29tZSBibG9j
ay4KLSAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhc3QgPSBfbGFtYmRhLmFwcGx5KHRoaXMs
IGFyZ3VtZW50cyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHcucGFyZW50KClb
MF0pIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJ0b3BsZXZlbCI6Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiZnVuY3Rpb24iOgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNhc2UgImRlZnVuIjoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIE1BUC5hdF90b3AoYXN0KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhc3Q7Ci0gICAgICAgICAgICAgICAgfSwKLSAg
ICAgICAgICAgICAgICAidmFyIjogX3ZhcmRlZnMsCi0gICAgICAgICAgICAgICAgImNvbnN0Ijog
X3ZhcmRlZnMsCi0gICAgICAgICAgICAgICAgIm5hbWUiOiBmdW5jdGlvbihuYW1lKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gWyB0aGlzWzBdLCBnZXRfbWFuZ2xlZChuYW1lKSBd
OwotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgInRyeSI6IGZ1bmN0aW9uKHQs
IGMsIGYpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbIHRoaXNbMF0sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNQVAodCwgd2FsayksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjICE9IG51bGwgPyBbIGdldF9tYW5nbGVkKGNbMF0pLCBNQVAo
Y1sxXSwgd2FsaykgXSA6IG51bGwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBm
ICE9IG51bGwgPyBNQVAoZiwgd2FsaykgOiBudWxsIF07Ci0gICAgICAgICAgICAgICAgfSwKLSAg
ICAgICAgICAgICAgICAidG9wbGV2ZWwiOiBmdW5jdGlvbihib2R5KSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICB2YXIgc2VsZiA9IHRoaXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gd2l0aF9zY29wZShzZWxmLnNjb3BlLCBmdW5jdGlvbigpewotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gWyBzZWxmWzBdLCBNQVAoYm9keSwgd2FsaykgXTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAg
ICAgImZvci1pbiI6IGZ1bmN0aW9uKGhhc192YXIsIG5hbWUsIG9iaiwgc3RhdCkgewotICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIFsgdGhpc1swXSwgaGFzX3ZhciwgZ2V0X21hbmdsZWQo
bmFtZSksIHdhbGsob2JqKSwgd2FsayhzdGF0KSBdOwotICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHdhbGsoYXN0X2FkZF9z
Y29wZShhc3QpKTsKLSAgICAgICAgfSk7Ci19OwotCi0vKiAtLS0tLVsKLSAgIC0gY29tcHJlc3Mg
Zm9vWyJiYXIiXSBpbnRvIGZvby5iYXIsCi0gICAtIHJlbW92ZSBibG9jayBicmFja2V0cyB7fSB3
aGVyZSBwb3NzaWJsZQotICAgLSBqb2luIGNvbnNlY3V0aXZlIHZhciBkZWNsYXJhdGlvbnMKLSAg
IC0gdmFyaW91cyBvcHRpbWl6YXRpb25zIGZvciBJRnM6Ci0gICAgIC0gaWYgKGNvbmQpIGZvbygp
OyBlbHNlIGJhcigpOyAgPT0+ICBjb25kP2ZvbygpOmJhcigpOwotICAgICAtIGlmIChjb25kKSBm
b28oKTsgID09PiAgY29uZCYmZm9vKCk7Ci0gICAgIC0gaWYgKGZvbykgcmV0dXJuIGJhcigpOyBl
bHNlIHJldHVybiBiYXooKTsgID09PiByZXR1cm4gZm9vP2JhcigpOmJheigpOyAvLyBhbHNvIGZv
ciB0aHJvdwotICAgICAtIGlmIChmb28pIHJldHVybiBiYXIoKTsgZWxzZSBzb21ldGhpbmcoKTsg
ID09PiB7aWYoZm9vKXJldHVybiBiYXIoKTtzb21ldGhpbmcoKX0KLSAgIF0tLS0tLSAqLwotCi12
YXIgd2FybiA9IGZ1bmN0aW9uKCl7fTsKLQotZnVuY3Rpb24gYmVzdF9vZihhc3QxLCBhc3QyKSB7
Ci0gICAgICAgIHJldHVybiBnZW5fY29kZShhc3QxKS5sZW5ndGggPiBnZW5fY29kZShhc3QyWzBd
ID09ICJzdGF0IiA/IGFzdDJbMV0gOiBhc3QyKS5sZW5ndGggPyBhc3QyIDogYXN0MTsKLX07Ci0K
LWZ1bmN0aW9uIGxhc3Rfc3RhdChiKSB7Ci0gICAgICAgIGlmIChiWzBdID09ICJibG9jayIgJiYg
YlsxXSAmJiBiWzFdLmxlbmd0aCA+IDApCi0gICAgICAgICAgICAgICAgcmV0dXJuIGJbMV1bYlsx
XS5sZW5ndGggLSAxXTsKLSAgICAgICAgcmV0dXJuIGI7Ci19Ci0KLWZ1bmN0aW9uIGFib3J0cyh0
KSB7Ci0gICAgICAgIGlmICh0KSB7Ci0gICAgICAgICAgICAgICAgdCA9IGxhc3Rfc3RhdCh0KTsK
LSAgICAgICAgICAgICAgICBpZiAodFswXSA9PSAicmV0dXJuIiB8fCB0WzBdID09ICJicmVhayIg
fHwgdFswXSA9PSAiY29udGludWUiIHx8IHRbMF0gPT0gInRocm93IikKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci19OwotCi1mdW5jdGlvbiBib29sZWFu
X2V4cHIoZXhwcikgewotICAgICAgICByZXR1cm4gKCAoZXhwclswXSA9PSAidW5hcnktcHJlZml4
IgotICAgICAgICAgICAgICAgICAgJiYgbWVtYmVyKGV4cHJbMV0sIFsgIiEiLCAiZGVsZXRlIiBd
KSkgfHwKLQotICAgICAgICAgICAgICAgICAoZXhwclswXSA9PSAiYmluYXJ5IgotICAgICAgICAg
ICAgICAgICAgJiYgbWVtYmVyKGV4cHJbMV0sIFsgImluIiwgImluc3RhbmNlb2YiLCAiPT0iLCAi
IT0iLCAiPT09IiwgIiE9PSIsICI8IiwgIjw9IiwgIj49IiwgIj4iIF0pKSB8fAotCi0gICAgICAg
ICAgICAgICAgIChleHByWzBdID09ICJiaW5hcnkiCi0gICAgICAgICAgICAgICAgICAmJiBtZW1i
ZXIoZXhwclsxXSwgWyAiJiYiLCAifHwiIF0pCi0gICAgICAgICAgICAgICAgICAmJiBib29sZWFu
X2V4cHIoZXhwclsyXSkKLSAgICAgICAgICAgICAgICAgICYmIGJvb2xlYW5fZXhwcihleHByWzNd
KSkgfHwKLQotICAgICAgICAgICAgICAgICAoZXhwclswXSA9PSAiY29uZGl0aW9uYWwiCi0gICAg
ICAgICAgICAgICAgICAmJiBib29sZWFuX2V4cHIoZXhwclsyXSkKLSAgICAgICAgICAgICAgICAg
ICYmIGJvb2xlYW5fZXhwcihleHByWzNdKSkgfHwKLQotICAgICAgICAgICAgICAgICAoZXhwclsw
XSA9PSAiYXNzaWduIgotICAgICAgICAgICAgICAgICAgJiYgZXhwclsxXSA9PT0gdHJ1ZQotICAg
ICAgICAgICAgICAgICAgJiYgYm9vbGVhbl9leHByKGV4cHJbM10pKSB8fAotCi0gICAgICAgICAg
ICAgICAgIChleHByWzBdID09ICJzZXEiCi0gICAgICAgICAgICAgICAgICAmJiBib29sZWFuX2V4
cHIoZXhwcltleHByLmxlbmd0aCAtIDFdKSkKLSAgICAgICAgICAgICAgICk7Ci19OwotCi1mdW5j
dGlvbiBtYWtlX2NvbmRpdGlvbmFsKGMsIHQsIGUpIHsKLSAgICAgICAgaWYgKGNbMF0gPT0gInVu
YXJ5LXByZWZpeCIgJiYgY1sxXSA9PSAiISIpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gZSA/
IFsgImNvbmRpdGlvbmFsIiwgY1syXSwgZSwgdCBdIDogWyAiYmluYXJ5IiwgInx8IiwgY1syXSwg
dCBdOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHJldHVybiBlID8gWyAiY29u
ZGl0aW9uYWwiLCBjLCB0LCBlIF0gOiBbICJiaW5hcnkiLCAiJiYiLCBjLCB0IF07Ci0gICAgICAg
IH0KLX07Ci0KLWZ1bmN0aW9uIGVtcHR5KGIpIHsKLSAgICAgICAgcmV0dXJuICFiIHx8IChiWzBd
ID09ICJibG9jayIgJiYgKCFiWzFdIHx8IGJbMV0ubGVuZ3RoID09IDApKTsKLX07Ci0KLWZ1bmN0
aW9uIGFzdF9zcXVlZXplKGFzdCwgb3B0aW9ucykgewotICAgICAgICBvcHRpb25zID0gZGVmYXVs
dHMob3B0aW9ucywgewotICAgICAgICAgICAgICAgIG1ha2Vfc2VxcyAgIDogdHJ1ZSwKLSAgICAg
ICAgICAgICAgICBkZWFkX2NvZGUgICA6IHRydWUsCi0gICAgICAgICAgICAgICAga2VlcF9jb21w
cyAgOiB0cnVlLAotICAgICAgICAgICAgICAgIG5vX3dhcm5pbmdzIDogZmFsc2UKLSAgICAgICAg
fSk7Ci0KLSAgICAgICAgdmFyIHcgPSBhc3Rfd2Fsa2VyKCksIHdhbGsgPSB3LndhbGssIHNjb3Bl
OwotCi0gICAgICAgIGZ1bmN0aW9uIG5lZ2F0ZShjKSB7Ci0gICAgICAgICAgICAgICAgICAgIHZh
ciBub3RfYyA9IFsgInVuYXJ5LXByZWZpeCIsICIhIiwgYyBdOwotICAgICAgICAgICAgICAgIHN3
aXRjaCAoY1swXSkgewotICAgICAgICAgICAgICAgICAgICBjYXNlICJ1bmFyeS1wcmVmaXgiOgot
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNbMV0gPT0gIiEiICYmIGJvb2xlYW5fZXhw
cihjWzJdKSA/IGNbMl0gOiBub3RfYzsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSAic2VxIjoK
LSAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBzbGljZShjKTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGNbYy5sZW5ndGggLSAxXSA9IG5lZ2F0ZShjW2MubGVuZ3RoIC0gMV0pOwotICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGM7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgImNv
bmRpdGlvbmFsIjoKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBiZXN0X29mKG5vdF9j
LCBbICJjb25kaXRpb25hbCIsIGNbMV0sIG5lZ2F0ZShjWzJdKSwgbmVnYXRlKGNbM10pIF0pOwot
ICAgICAgICAgICAgICAgICAgICBjYXNlICJiaW5hcnkiOgotICAgICAgICAgICAgICAgICAgICAg
ICAgdmFyIG9wID0gY1sxXSwgbGVmdCA9IGNbMl0sIHJpZ2h0ID0gY1szXTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGlmICghb3B0aW9ucy5rZWVwX2NvbXBzKSBzd2l0Y2ggKG9wKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiPD0iICA6IHJldHVybiBbICJiaW5hcnkiLCAi
PiIsIGxlZnQsIHJpZ2h0IF07Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiPCIg
ICA6IHJldHVybiBbICJiaW5hcnkiLCAiPj0iLCBsZWZ0LCByaWdodCBdOwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNhc2UgIj49IiAgOiByZXR1cm4gWyAiYmluYXJ5IiwgIjwiLCBsZWZ0
LCByaWdodCBdOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIj4iICAgOiByZXR1
cm4gWyAiYmluYXJ5IiwgIjw9IiwgbGVmdCwgcmlnaHQgXTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAob3ApIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjYXNlICI9PSIgIDogcmV0dXJuIFsgImJpbmFyeSIsICIhPSIsIGxl
ZnQsIHJpZ2h0IF07Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiIT0iICA6IHJl
dHVybiBbICJiaW5hcnkiLCAiPT0iLCBsZWZ0LCByaWdodCBdOwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNhc2UgIj09PSIgOiByZXR1cm4gWyAiYmluYXJ5IiwgIiE9PSIsIGxlZnQsIHJp
Z2h0IF07Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiIT09IiA6IHJldHVybiBb
ICJiaW5hcnkiLCAiPT09IiwgbGVmdCwgcmlnaHQgXTsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjYXNlICImJiIgIDogcmV0dXJuIGJlc3Rfb2Yobm90X2MsIFsgImJpbmFyeSIsICJ8fCIs
IG5lZ2F0ZShsZWZ0KSwgbmVnYXRlKHJpZ2h0KSBdKTsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjYXNlICJ8fCIgIDogcmV0dXJuIGJlc3Rfb2Yobm90X2MsIFsgImJpbmFyeSIsICImJiIs
IG5lZ2F0ZShsZWZ0KSwgbmVnYXRlKHJpZ2h0KSBdKTsKLSAgICAgICAgICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICByZXR1cm4gbm90X2M7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgZnVuY3Rp
b24gd2l0aF9zY29wZShzLCBjb250KSB7Ci0gICAgICAgICAgICAgICAgdmFyIF9zY29wZSA9IHNj
b3BlOwotICAgICAgICAgICAgICAgIHNjb3BlID0gczsKLSAgICAgICAgICAgICAgICB2YXIgcmV0
ID0gY29udCgpOwotICAgICAgICAgICAgICAgIHJldC5zY29wZSA9IHM7Ci0gICAgICAgICAgICAg
ICAgc2NvcGUgPSBfc2NvcGU7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKLSAgICAgICAg
fTsKLQotICAgICAgICBmdW5jdGlvbiBpc19jb25zdGFudChub2RlKSB7Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIG5vZGVbMF0gPT0gInN0cmluZyIgfHwgbm9kZVswXSA9PSAibnVtIjsKLSAgICAg
ICAgfTsKLQotICAgICAgICBmdW5jdGlvbiBybWJsb2NrKGJsb2NrKSB7Ci0gICAgICAgICAgICAg
ICAgaWYgKGJsb2NrICE9IG51bGwgJiYgYmxvY2tbMF0gPT0gImJsb2NrIiAmJiBibG9ja1sxXSAm
JiBibG9ja1sxXS5sZW5ndGggPT0gMSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrID0g
YmxvY2tbMV1bMF07Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGJsb2NrOwotICAgICAgICB9Owot
Ci0gICAgICAgIGZ1bmN0aW9uIF9sYW1iZGEobmFtZSwgYXJncywgYm9keSkgewotICAgICAgICAg
ICAgICAgIHJldHVybiBbIHRoaXNbMF0sIG5hbWUsIGFyZ3MsIHdpdGhfc2NvcGUoYm9keS5zY29w
ZSwgZnVuY3Rpb24oKXsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aWdodGVuKE1B
UChib2R5LCB3YWxrKSwgImxhbWJkYSIpOwotICAgICAgICAgICAgICAgIH0pIF07Ci0gICAgICAg
IH07Ci0KLSAgICAgICAgLy8gd2UgZ2V0IGhlcmUgZm9yIGJsb2NrcyB0aGF0IGhhdmUgYmVlbiBh
bHJlYWR5IHRyYW5zZm9ybWVkLgotICAgICAgICAvLyB0aGlzIGZ1bmN0aW9uIGRvZXMgYSBmZXcg
dGhpbmdzOgotICAgICAgICAvLyAxLiBkaXNjYXJkIHVzZWxlc3MgYmxvY2tzCi0gICAgICAgIC8v
IDIuIGpvaW4gY29uc2VjdXRpdmUgdmFyIGRlY2xhcmF0aW9ucwotICAgICAgICAvLyAzLiByZW1v
dmUgb2J2aW91c2x5IGRlYWQgY29kZQotICAgICAgICAvLyA0LiB0cmFuc2Zvcm0gY29uc2VjdXRp
dmUgc3RhdGVtZW50cyB1c2luZyB0aGUgY29tbWEgb3BlcmF0b3IKLSAgICAgICAgLy8gNS4gaWYg
YmxvY2tfdHlwZSA9PSAibGFtYmRhIiBhbmQgaXQgZGV0ZWN0cyBjb25zdHJ1Y3RzIGxpa2UgaWYo
Zm9vKSByZXR1cm4gLi4uIC0gcmV3cml0ZSBsaWtlIGlmICghZm9vKSB7IC4uLiB9Ci0gICAgICAg
IGZ1bmN0aW9uIHRpZ2h0ZW4oc3RhdGVtZW50cywgYmxvY2tfdHlwZSkgewotICAgICAgICAgICAg
ICAgIHN0YXRlbWVudHMgPSBzdGF0ZW1lbnRzLnJlZHVjZShmdW5jdGlvbihhLCBzdGF0KXsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChzdGF0WzBdID09ICJibG9jayIpIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXRbMV0pIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBhLnB1c2guYXBwbHkoYSwgc3RhdFsxXSk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEucHVzaChzdGF0KTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhOwot
ICAgICAgICAgICAgICAgIH0sIFtdKTsKLQotICAgICAgICAgICAgICAgIHN0YXRlbWVudHMgPSAo
ZnVuY3Rpb24oYSwgcHJldil7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZW1lbnRzLmZv
ckVhY2goZnVuY3Rpb24oY3VyKXsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KHByZXYgJiYgKChjdXJbMF0gPT0gInZhciIgJiYgcHJldlswXSA9PSAidmFyIikgfHwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdXJbMF0gPT0gImNvbnN0
IiAmJiBwcmV2WzBdID09ICJjb25zdCIpKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHByZXZbMV0gPSBwcmV2WzFdLmNvbmNhdChjdXJbMV0pOwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGEucHVzaChjdXIpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHByZXYgPSBjdXI7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGE7Ci0gICAgICAgICAgICAgICAgfSkoW10pOwotCi0gICAgICAgICAgICAgICAgaWYg
KG9wdGlvbnMuZGVhZF9jb2RlKSBzdGF0ZW1lbnRzID0gKGZ1bmN0aW9uKGEsIGhhc19xdWl0KXsK
LSAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlbWVudHMuZm9yRWFjaChmdW5jdGlvbihzdCl7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoYXNfcXVpdCkgewotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtZW1iZXIoc3RbMF0sIFsgImZ1
bmN0aW9uIiwgImRlZnVuIiAsICJ2YXIiLCAiY29uc3QiIF0pKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhLnB1c2goc3QpOwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBlbHNlIGlmICghb3B0aW9ucy5ub193YXJuaW5ncykKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhcm4oIlJlbW92aW5nIHVucmVh
Y2hhYmxlIGNvZGU6ICIgKyBnZW5fY29kZShzdCwgdHJ1ZSkpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Ugewot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEucHVzaChzdCk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1lbWJlcihzdFswXSwgWyAi
cmV0dXJuIiwgInRocm93IiwgImJyZWFrIiwgImNvbnRpbnVlIiBdKSkKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhc19xdWl0ID0gdHJ1ZTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgfSk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYTsKLSAgICAgICAgICAgICAgICB9KShb
XSk7Ci0KLSAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy5tYWtlX3NlcXMpIHN0YXRlbWVudHMg
PSAoZnVuY3Rpb24oYSwgcHJldikgewotICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGVtZW50
cy5mb3JFYWNoKGZ1bmN0aW9uKGN1cil7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChwcmV2ICYmIHByZXZbMF0gPT0gInN0YXQiICYmIGN1clswXSA9PSAic3RhdCIpIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2WzFdID0gWyAic2VxIiwg
cHJldlsxXSwgY3VyWzFdIF07Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYS5wdXNoKGN1cik7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldiA9IGN1cjsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAg
fSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYTsKLSAgICAgICAgICAgICAgICB9
KShbXSk7Ci0KLSAgICAgICAgICAgICAgICBpZiAoYmxvY2tfdHlwZSA9PSAibGFtYmRhIikgc3Rh
dGVtZW50cyA9IChmdW5jdGlvbihpLCBhLCBzdGF0KXsKLSAgICAgICAgICAgICAgICAgICAgICAg
IHdoaWxlIChpIDwgc3RhdGVtZW50cy5sZW5ndGgpIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3RhdCA9IHN0YXRlbWVudHNbaSsrXTsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKHN0YXRbMF0gPT0gImlmIiAmJiAhc3RhdFszXSkgewotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdGF0WzJdWzBdID09ICJyZXR1cm4iICYm
IHN0YXRbMl1bMV0gPT0gbnVsbCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYS5wdXNoKG1ha2VfaWYobmVnYXRlKHN0YXRbMV0pLCBbICJibG9jayIs
IHN0YXRlbWVudHMuc2xpY2UoaSkgXSkpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBs
YXN0ID0gbGFzdF9zdGF0KHN0YXRbMl0pOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChsYXN0WzBdID09ICJyZXR1cm4iICYmIGxhc3RbMV0gPT0gbnVsbCkgewot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYS5wdXNoKG1h
a2VfaWYoc3RhdFsxXSwgWyAiYmxvY2siLCBzdGF0WzJdWzFdLnNsaWNlKDAsIC0xKSBdLCBbICJi
bG9jayIsIHN0YXRlbWVudHMuc2xpY2UoaSkgXSkpOwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEucHVzaChzdGF0KTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhOwotICAgICAgICAg
ICAgICAgIH0pKDAsIFtdKTsKLQotICAgICAgICAgICAgICAgIHJldHVybiBzdGF0ZW1lbnRzOwot
ICAgICAgICB9OwotCi0gICAgICAgIGZ1bmN0aW9uIG1ha2VfaWYoYywgdCwgZSkgewotICAgICAg
ICAgICAgICAgIGMgPSB3YWxrKGMpOwotICAgICAgICAgICAgICAgIHQgPSB3YWxrKHQpOwotICAg
ICAgICAgICAgICAgIGUgPSB3YWxrKGUpOwotCi0gICAgICAgICAgICAgICAgaWYgKGVtcHR5KHQp
KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjID0gbmVnYXRlKGMpOwotICAgICAgICAgICAg
ICAgICAgICAgICAgdCA9IGU7Ci0gICAgICAgICAgICAgICAgICAgICAgICBlID0gbnVsbDsKLSAg
ICAgICAgICAgICAgICB9IGVsc2UgaWYgKGVtcHR5KGUpKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBlID0gbnVsbDsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gaWYgd2UgaGF2ZSBib3RoIGVsc2UgYW5kIHRoZW4sIG1heWJlIGl0IG1ha2Vz
IHNlbnNlIHRvIHN3aXRjaCB0aGVtPwotICAgICAgICAgICAgICAgICAgICAgICAgKGZ1bmN0aW9u
KCl7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhID0gZ2VuX2NvZGUoYyk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gbmVnYXRlKGMpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYiA9IGdlbl9jb2RlKG4pOwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYi5sZW5ndGggPCBhLmxlbmd0aCkgewotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0bXAgPSB0OwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQgPSBlOwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGUgPSB0bXA7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYyA9IG47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICAgICAgICAgIH0pKCk7Ci0gICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgIGlmIChlbXB0eShlKSAmJiBlbXB0eSh0KSkKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBbICJzdGF0IiwgYyBdOwotICAgICAgICAgICAgICAgIHZhciByZXQgPSBb
ICJpZiIsIGMsIHQsIGUgXTsKLSAgICAgICAgICAgICAgICBpZiAodFswXSA9PSAiaWYiICYmIGVt
cHR5KHRbM10pICYmIGVtcHR5KGUpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXQgPSBi
ZXN0X29mKHJldCwgd2FsayhbICJpZiIsIFsgImJpbmFyeSIsICImJiIsIGMsIHRbMV0gXSwgdFsy
XSBdKSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRbMF0g
PT0gInN0YXQiKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZSkgewotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoZVswXSA9PSAic3RhdCIpIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXQgPSBiZXN0X29mKHJldCwgWyAic3RhdCIs
IG1ha2VfY29uZGl0aW9uYWwoYywgdFsxXSwgZVsxXSkgXSk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXQgPSBi
ZXN0X29mKHJldCwgWyAic3RhdCIsIG1ha2VfY29uZGl0aW9uYWwoYywgdFsxXSkgXSk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
IGVsc2UgaWYgKGUgJiYgdFswXSA9PSBlWzBdICYmICh0WzBdID09ICJyZXR1cm4iIHx8IHRbMF0g
PT0gInRocm93IikpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldCA9IGJlc3Rfb2YocmV0
LCBbIHRbMF0sIG1ha2VfY29uZGl0aW9uYWwoYywgdFsxXSwgZVsxXSApIF0pOwotICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlIGlmIChlICYmIGFib3J0cyh0KSkgewotICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0ID0gWyBbICJpZiIsIGMsIHQgXSBdOwotICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKGVbMF0gPT0gImJsb2NrIikgewotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoZVsxXSkgcmV0ID0gcmV0LmNvbmNhdChlWzFdKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXQucHVzaChlKTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIHJldCA9IHdhbGsoWyAiYmxvY2siLCBy
ZXQgXSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVsc2UgaWYgKHQgJiYg
YWJvcnRzKGUpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXQgPSBbIFsgImlmIiwgbmVn
YXRlKGMpLCBlIF0gXTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0WzBdID09ICJibG9j
ayIpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRbMV0pIHJldCA9IHJl
dC5jb25jYXQodFsxXSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXQucHVzaCh0KTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIHJldCA9IHdhbGsoWyAiYmxvY2siLCBy
ZXQgXSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJldHVybiByZXQ7Ci0g
ICAgICAgIH07Ci0KLSAgICAgICAgcmV0dXJuIHcud2l0aF93YWxrZXJzKHsKLSAgICAgICAgICAg
ICAgICAic3ViIjogZnVuY3Rpb24oZXhwciwgc3Vic2NyaXB0KSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoc3Vic2NyaXB0WzBdID09ICJzdHJpbmciKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHZhciBuYW1lID0gc3Vic2NyaXB0WzFdOwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoaXNfaWRlbnRpZmllcihuYW1lKSkgewotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbICJkb3QiLCB3YWxrKGV4cHIpLCBu
YW1lIF07Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICJpZiI6IG1h
a2VfaWYsCi0gICAgICAgICAgICAgICAgInRvcGxldmVsIjogZnVuY3Rpb24oYm9keSkgewotICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsgInRvcGxldmVsIiwgd2l0aF9zY29wZSh0aGlz
LnNjb3BlLCBmdW5jdGlvbigpewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gdGlnaHRlbihNQVAoYm9keSwgd2FsaykpOwotICAgICAgICAgICAgICAgICAgICAgICAgfSkg
XTsKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICJzd2l0Y2giOiBmdW5jdGlv
bihleHByLCBib2R5KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB2YXIgbGFzdCA9IGJvZHku
bGVuZ3RoIC0gMTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbICJzd2l0Y2giLCB3
YWxrKGV4cHIpLCBNQVAoYm9keSwgZnVuY3Rpb24oYnJhbmNoLCBpKXsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdmFyIGJsb2NrID0gdGlnaHRlbihNQVAoYnJhbmNoWzFdLCB3YWxr
KSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpID09IGxhc3QgJiYgYmxv
Y2subGVuZ3RoID4gMCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHZhciBub2RlID0gYmxvY2tbYmxvY2subGVuZ3RoIC0gMV07Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGVbMF0gPT0gImJyZWFrIiAmJiAhbm9kZVsxXSkK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrLnBv
cCgpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBbIGJyYW5jaFswXSA/IHdhbGsoYnJhbmNoWzBdKSA6IG51
bGwsIGJsb2NrIF07Ci0gICAgICAgICAgICAgICAgICAgICAgICB9KSBdOwotICAgICAgICAgICAg
ICAgIH0sCi0gICAgICAgICAgICAgICAgImZ1bmN0aW9uIjogX2xhbWJkYSwKLSAgICAgICAgICAg
ICAgICAiZGVmdW4iOiBfbGFtYmRhLAotICAgICAgICAgICAgICAgICJibG9jayI6IGZ1bmN0aW9u
KGJvZHkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChib2R5KSByZXR1cm4gcm1ibG9j
ayhbICJibG9jayIsIHRpZ2h0ZW4oTUFQKGJvZHksIHdhbGspKSBdKTsKLSAgICAgICAgICAgICAg
ICB9LAotICAgICAgICAgICAgICAgICJiaW5hcnkiOiBmdW5jdGlvbihvcCwgbGVmdCwgcmlnaHQp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQgPSB3YWxrKGxlZnQpOwotICAgICAgICAg
ICAgICAgICAgICAgICAgcmlnaHQgPSB3YWxrKHJpZ2h0KTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHZhciBiZXN0ID0gWyAiYmluYXJ5Iiwgb3AsIGxlZnQsIHJpZ2h0IF07Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoaXNfY29uc3RhbnQocmlnaHQpICYmIGlzX2NvbnN0YW50KGxlZnQp
KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB2YWwgPSB7fTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG9yaWcgPSB2YWw7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHN3aXRjaCAob3ApIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNhc2UgIisiICAgOiB2YWwgPSBsZWZ0WzFdICsgICByaWdodFsxXTsgYnJl
YWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICIqIiAgIDogdmFs
ID0gbGVmdFsxXSAqICAgcmlnaHRbMV07IGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY2FzZSAiLyIgICA6IHZhbCA9IGxlZnRbMV0gLyAgIHJpZ2h0WzFdOyBicmVh
azsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIi0iICAgOiB2YWwg
PSBsZWZ0WzFdIC0gICByaWdodFsxXTsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjYXNlICI8PCIgIDogdmFsID0gbGVmdFsxXSA8PCAgcmlnaHRbMV07IGJyZWFr
OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiPj4iICA6IHZhbCA9
IGxlZnRbMV0gPj4gIHJpZ2h0WzFdOyBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNhc2UgIj4+PiIgOiB2YWwgPSBsZWZ0WzFdID4+PiByaWdodFsxXTsgYnJlYWs7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICI9PSIgIDogdmFsID0g
bGVmdFsxXSA9PSAgcmlnaHRbMV07IGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY2FzZSAiPT09IiA6IHZhbCA9IGxlZnRbMV0gPT09IHJpZ2h0WzFdOyBicmVhazsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIiE9IiAgOiB2YWwgPSBs
ZWZ0WzFdICE9ICByaWdodFsxXTsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjYXNlICIhPT0iIDogdmFsID0gbGVmdFsxXSAhPT0gcmlnaHRbMV07IGJyZWFrOwot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiPCIgICA6IHZhbCA9IGxl
ZnRbMV0gPCAgIHJpZ2h0WzFdOyBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNhc2UgIjw9IiAgOiB2YWwgPSBsZWZ0WzFdIDw9ICByaWdodFsxXTsgYnJlYWs7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICI+IiAgIDogdmFsID0gbGVm
dFsxXSA+ICAgcmlnaHRbMV07IGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY2FzZSAiPj0iICA6IHZhbCA9IGxlZnRbMV0gPj0gIHJpZ2h0WzFdOyBicmVhazsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAodmFsICE9PSBvcmlnKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3dpdGNoICh0eXBlb2YgdmFsKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNhc2UgInN0cmluZyI6IHZhbCA9IFsgInN0cmluZyIsIHZh
bCBdOyBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y2FzZSAiYm9vbGVhbiI6IHZhbCA9IFsgIm5hbWUiLCB2YWwrIiIgXTsgYnJlYWs7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIm51bWJlciI6IHZhbCA9
IFsgIm51bSIsIHZhbCBdOyBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZGVmYXVsdDogcmV0dXJuIGJlc3Q7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJlc3QgPSBiZXN0X29mKGJlc3QsIHdhbGsodmFsKSk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBiZXN0OwotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAg
ICAgImNvbmRpdGlvbmFsIjogZnVuY3Rpb24oYywgdCwgZSkgewotICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIG1ha2VfY29uZGl0aW9uYWwod2FsayhjKSwgd2Fsayh0KSwgd2FsayhlKSk7
Ci0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAidHJ5IjogZnVuY3Rpb24odCwg
YywgZikgewotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgInRyeSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRpZ2h0ZW4oTUFQKHQsIHdhbGspKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YyAhPSBudWxsID8gWyBjWzBdLCB0aWdodGVuKE1BUChjWzFdLCB3YWxrKSkgXSA6IG51bGwsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgIT0gbnVsbCA/IHRpZ2h0ZW4oTUFQKGYs
IHdhbGspKSA6IG51bGwKLSAgICAgICAgICAgICAgICAgICAgICAgIF07Ci0gICAgICAgICAgICAg
ICAgfSwKLSAgICAgICAgICAgICAgICAidW5hcnktcHJlZml4IjogZnVuY3Rpb24ob3AsIGV4cHIp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGV4cHIgPSB3YWxrKGV4cHIpOwotICAgICAgICAg
ICAgICAgICAgICAgICAgdmFyIHJldCA9IFsgInVuYXJ5LXByZWZpeCIsIG9wLCBleHByIF07Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBpZiAob3AgPT0gIiEiKQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZXQgPSBiZXN0X29mKHJldCwgbmVnYXRlKGV4cHIpKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiByZXQ7Ci0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAg
ICAgICAgICAibmFtZSI6IGZ1bmN0aW9uKG5hbWUpIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
IHN3aXRjaCAobmFtZSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgInRydWUi
OiByZXR1cm4gWyAidW5hcnktcHJlZml4IiwgIiEiLCBbICJudW0iLCAwIF1dOwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNhc2UgImZhbHNlIjogcmV0dXJuIFsgInVuYXJ5LXByZWZpeCIs
ICIhIiwgWyAibnVtIiwgMSBdXTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICB9LAotICAgICAgICAgICAgICAgICJuZXciOiBmdW5jdGlvbihjdG9yLCBhcmdzKSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY3RvclswXSA9PSAibmFtZSIgJiYgY3Rvclsx
XSA9PSAiQXJyYXkiICYmICFzY29wZS5oYXMoIkFycmF5IikpIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKGFyZ3MubGVuZ3RoICE9IDEpIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWyAiYXJyYXkiLCBhcmdzIF07Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIFsgImNhbGwiLCBbICJuYW1lIiwgIkFycmF5IiBdLCBh
cmdzIF07Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICJjYWxsIjog
ZnVuY3Rpb24oZXhwciwgYXJncykgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV4cHJb
MF0gPT0gIm5hbWUiICYmIGV4cHJbMV0gPT0gIkFycmF5IiAmJiBhcmdzLmxlbmd0aCAhPSAxICYm
ICFzY29wZS5oYXMoIkFycmF5IikpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIFsgImFycmF5IiwgYXJncyBdOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAg
cmV0dXJuIHdhbGsoYXN0X2FkZF9zY29wZShhc3QpKTsKLSAgICAgICAgfSk7Ci19OwotCi0vKiAt
LS0tLVsgcmUtZ2VuZXJhdGUgY29kZSBmcm9tIHRoZSBBU1QgXS0tLS0tICovCi0KLXZhciBET1Rf
Q0FMTF9OT19QQVJFTlMgPSBqc3AuYXJyYXlfdG9faGFzaChbCi0gICAgICAgICJuYW1lIiwKLSAg
ICAgICAgImFycmF5IiwKLSAgICAgICAgInN0cmluZyIsCi0gICAgICAgICJkb3QiLAotICAgICAg
ICAic3ViIiwKLSAgICAgICAgImNhbGwiLAotICAgICAgICAicmVnZXhwIgotXSk7Ci0KLWZ1bmN0
aW9uIG1ha2Vfc3RyaW5nKHN0cikgewotICAgICAgICB2YXIgZHEgPSAwLCBzcSA9IDA7Ci0gICAg
ICAgIHN0ciA9IHN0ci5yZXBsYWNlKC9bXFxcYlxmXG5cclx0XHgyMlx4MjddL2csIGZ1bmN0aW9u
KHMpewotICAgICAgICAgICAgICAgIHN3aXRjaCAocykgewotICAgICAgICAgICAgICAgICAgICBj
YXNlICJcXCI6IHJldHVybiAiXFxcXCI7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgIlxiIjog
cmV0dXJuICJcXGIiOwotICAgICAgICAgICAgICAgICAgICBjYXNlICJcZiI6IHJldHVybiAiXFxm
IjsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSAiXG4iOiByZXR1cm4gIlxcbiI7Ci0gICAgICAg
ICAgICAgICAgICAgIGNhc2UgIlxyIjogcmV0dXJuICJcXHIiOwotICAgICAgICAgICAgICAgICAg
ICBjYXNlICJcdCI6IHJldHVybiAiXFx0IjsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSAnIic6
ICsrZHE7IHJldHVybiAnIic7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgIiciOiArK3NxOyBy
ZXR1cm4gIiciOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZXR1cm4gczsK
LSAgICAgICAgfSk7Ci0gICAgICAgIGlmIChkcSA+IHNxKSB7Ci0gICAgICAgICAgICAgICAgcmV0
dXJuICInIiArIHN0ci5yZXBsYWNlKC9ceDI3L2csICJcXCciKSArICInIjsKLSAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gJyInICsgc3RyLnJlcGxhY2UoL1x4MjIvZywg
J1xcIicpICsgJyInOwotICAgICAgICB9Ci19OwotCi1mdW5jdGlvbiBnZW5fY29kZShhc3QsIGJl
YXV0aWZ5KSB7Ci0gICAgICAgIGlmIChiZWF1dGlmeSkgYmVhdXRpZnkgPSBkZWZhdWx0cyhiZWF1
dGlmeSwgewotICAgICAgICAgICAgICAgIGluZGVudF9zdGFydCA6IDAsCi0gICAgICAgICAgICAg
ICAgaW5kZW50X2xldmVsIDogNCwKLSAgICAgICAgICAgICAgICBxdW90ZV9rZXlzICAgOiBmYWxz
ZSwKLSAgICAgICAgICAgICAgICBzcGFjZV9jb2xvbiAgOiBmYWxzZQotICAgICAgICB9KTsKLSAg
ICAgICAgdmFyIGluZGVudGF0aW9uID0gMCwKLSAgICAgICAgICAgIG5ld2xpbmUgPSBiZWF1dGlm
eSA/ICJcbiIgOiAiIiwKLSAgICAgICAgICAgIHNwYWNlID0gYmVhdXRpZnkgPyAiICIgOiAiIjsK
LQotICAgICAgICBmdW5jdGlvbiBpbmRlbnQobGluZSkgewotICAgICAgICAgICAgICAgIGlmIChs
aW5lID09IG51bGwpCi0gICAgICAgICAgICAgICAgICAgICAgICBsaW5lID0gIiI7Ci0gICAgICAg
ICAgICAgICAgaWYgKGJlYXV0aWZ5KQotICAgICAgICAgICAgICAgICAgICAgICAgbGluZSA9IHJl
cGVhdF9zdHJpbmcoIiAiLCBiZWF1dGlmeS5pbmRlbnRfc3RhcnQgKyBpbmRlbnRhdGlvbiAqIGJl
YXV0aWZ5LmluZGVudF9sZXZlbCkgKyBsaW5lOwotICAgICAgICAgICAgICAgIHJldHVybiBsaW5l
OwotICAgICAgICB9OwotCi0gICAgICAgIGZ1bmN0aW9uIHdpdGhfaW5kZW50KGNvbnQsIGluY3Ip
IHsKLSAgICAgICAgICAgICAgICBpZiAoaW5jciA9PSBudWxsKSBpbmNyID0gMTsKLSAgICAgICAg
ICAgICAgICBpbmRlbnRhdGlvbiArPSBpbmNyOwotICAgICAgICAgICAgICAgIHRyeSB7IHJldHVy
biBjb250LmFwcGx5KG51bGwsIHNsaWNlKGFyZ3VtZW50cywgMSkpOyB9Ci0gICAgICAgICAgICAg
ICAgZmluYWxseSB7IGluZGVudGF0aW9uIC09IGluY3I7IH0KLSAgICAgICAgfTsKLQotICAgICAg
ICBmdW5jdGlvbiBhZGRfc3BhY2VzKGEpIHsKLSAgICAgICAgICAgICAgICBpZiAoYmVhdXRpZnkp
Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYS5qb2luKCIgIik7Ci0gICAgICAgICAg
ICAgICAgdmFyIGIgPSBbXTsKLSAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGEu
bGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuZXh0ID0gYVtpICsg
MV07Ci0gICAgICAgICAgICAgICAgICAgICAgICBiLnB1c2goYVtpXSk7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBpZiAobmV4dCAmJgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoL1th
LXowLTlfXHgyNF0kL2kudGVzdChhW2ldLnRvU3RyaW5nKCkpICYmIC9eW2EtejAtOV9ceDI0XS9p
LnRlc3QobmV4dC50b1N0cmluZygpKSkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KC9bXCtcLV0kLy50ZXN0KGFbaV0udG9TdHJpbmcoKSkgJiYgL15bXCtcLV0vLnRlc3QobmV4dC50
b1N0cmluZygpKSkpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIucHVzaCgi
ICIpOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICByZXR1cm4gYi5qb2luKCIiKTsKLSAgICAgICAgfTsKLQotICAgICAgICBmdW5j
dGlvbiBhZGRfY29tbWFzKGEpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gYS5qb2luKCIsIiAr
IHNwYWNlKTsKLSAgICAgICAgfTsKLQotICAgICAgICBmdW5jdGlvbiBwYXJlbnRoZXNpemUoZXhw
cikgewotICAgICAgICAgICAgICAgIHZhciBnZW4gPSBtYWtlKGV4cHIpOwotICAgICAgICAgICAg
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICB2YXIgZWwgPSBhcmd1bWVudHNbaV07Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoKGVsIGluc3RhbmNlb2YgRnVuY3Rpb24gJiYgZWwoZXhwcikpIHx8IGV4cHJb
MF0gPT0gZWwpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAiKCIgKyBn
ZW4gKyAiKSI7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJldHVybiBnZW47
Ci0gICAgICAgIH07Ci0KLSAgICAgICAgZnVuY3Rpb24gYmVzdF9vZihhKSB7Ci0gICAgICAgICAg
ICAgICAgaWYgKGEubGVuZ3RoID09IDEpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBhWzBdOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoYS5sZW5ndGgg
PT0gMikgewotICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGIgPSBhWzFdOwotICAgICAgICAg
ICAgICAgICAgICAgICAgYSA9IGFbMF07Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
YS5sZW5ndGggPD0gYi5sZW5ndGggPyBhIDogYjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIGJlc3Rfb2YoWyBhWzBdLCBiZXN0X29mKGEuc2xpY2UoMSkpIF0pOwot
ICAgICAgICB9OwotCi0gICAgICAgIGZ1bmN0aW9uIG5lZWRzX3BhcmVucyhleHByKSB7Ci0gICAg
ICAgICAgICAgICAgaWYgKGV4cHJbMF0gPT0gImZ1bmN0aW9uIikgewotICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gZG90L2NhbGwgb24gYSBsaXRlcmFsIGZ1bmN0aW9uIHJlcXVpcmVzIHRoZQot
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gZnVuY3Rpb24gbGl0ZXJhbCBpdHNlbGYgdG8gYmUg
cGFyZW50aGVzaXplZAotICAgICAgICAgICAgICAgICAgICAgICAgLy8gb25seSBpZiBpdCdzIHRo
ZSBmaXJzdCAidGhpbmciIGluIGEKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN0YXRlbWVu
dC4gIFRoaXMgbWVhbnMgdGhhdCB0aGUgcGFyZW50IGlzCi0gICAgICAgICAgICAgICAgICAgICAg
ICAvLyAic3RhdCIsIGJ1dCBpdCBjb3VsZCBhbHNvIGJlIGEgInNlcSIgYW5kCi0gICAgICAgICAg
ICAgICAgICAgICAgICAvLyB3ZSdyZSB0aGUgZmlyc3QgaW4gdGhpcyAic2VxIiBhbmQgdGhlCi0g
ICAgICAgICAgICAgICAgICAgICAgICAvLyBwYXJlbnQgaXMgInN0YXQiLCBhbmQgc28gb24uICBN
ZXNzeSBzdHVmZiwKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJ1dCBpdCB3b3J0aHMgdGhl
IHRyb3VibGUuCi0gICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IHNsaWNlKCRzdGFjayks
IHNlbGYgPSBhLnBvcCgpLCBwID0gYS5wb3AoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHdo
aWxlIChwKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwWzBdID09ICJz
dGF0IikgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgo
cFswXSA9PSAic2VxIiAmJiBwWzFdID09PSBzZWxmKSB8fAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKHBbMF0gPT0gImNhbGwiICYmIHBbMV0gPT09IHNlbGYpIHx8Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocFswXSA9PSAiYmluYXJ5IiAmJiBwWzJd
ID09PSBzZWxmKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl
bGYgPSBwOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAgPSBhLnBv
cCgpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZXR1cm4gIUhPUChET1RfQ0FMTF9OT19QQVJF
TlMsIGV4cHJbMF0pOwotICAgICAgICB9OwotCi0gICAgICAgIGZ1bmN0aW9uIG1ha2VfbnVtKG51
bSkgewotICAgICAgICAgICAgICAgIHZhciBzdHIgPSBudW0udG9TdHJpbmcoMTApLCBhID0gWyBz
dHIucmVwbGFjZSgvXjBcLi8sICIuIikgXSwgbTsKLSAgICAgICAgICAgICAgICBpZiAoTWF0aC5m
bG9vcihudW0pID09PSBudW0pIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGEucHVzaCgiMHgi
ICsgbnVtLnRvU3RyaW5nKDE2KS50b0xvd2VyQ2FzZSgpLCAvLyBwcm9iYWJseSBwb2ludGxlc3MK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiMCIgKyBudW0udG9TdHJpbmcoOCkpOyAv
LyBzYW1lLgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChtID0gL14oLio/KSgwKykkLy5l
eGVjKG51bSkpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEucHVzaChtWzFd
ICsgImUiICsgbVsyXS5sZW5ndGgpOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgIH0gZWxzZSBpZiAoKG0gPSAvXjA/XC4oMCspKC4qKSQvLmV4ZWMobnVtKSkpIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgIGEucHVzaChtWzJdICsgImUtIiArIChtWzFdLmxlbmd0
aCArIG1bMl0ubGVuZ3RoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIuc3Vi
c3RyKHN0ci5pbmRleE9mKCIuIikpKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIGJlc3Rfb2YoYSk7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdmFyIGdlbmVyYXRv
cnMgPSB7Ci0gICAgICAgICAgICAgICAgInN0cmluZyI6IG1ha2Vfc3RyaW5nLAotICAgICAgICAg
ICAgICAgICJudW0iOiBtYWtlX251bSwKLSAgICAgICAgICAgICAgICAibmFtZSI6IG1ha2VfbmFt
ZSwKLSAgICAgICAgICAgICAgICAidG9wbGV2ZWwiOiBmdW5jdGlvbihzdGF0ZW1lbnRzKSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWFrZV9ibG9ja19zdGF0ZW1lbnRzKHN0YXRl
bWVudHMpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5qb2luKG5ld2xpbmUgKyBu
ZXdsaW5lKTsKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICJibG9jayI6IG1h
a2VfYmxvY2ssCi0gICAgICAgICAgICAgICAgInZhciI6IGZ1bmN0aW9uKGRlZnMpIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiAidmFyICIgKyBhZGRfY29tbWFzKE1BUChkZWZzLCBt
YWtlXzF2YXJkZWYpKSArICI7IjsKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAg
ICJjb25zdCI6IGZ1bmN0aW9uKGRlZnMpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biAiY29uc3QgIiArIGFkZF9jb21tYXMoTUFQKGRlZnMsIG1ha2VfMXZhcmRlZikpICsgIjsiOwot
ICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgInRyeSI6IGZ1bmN0aW9uKHRyLCBj
YSwgZmkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvdXQgPSBbICJ0cnkiLCBtYWtl
X2Jsb2NrKHRyKSBdOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNhKSBvdXQucHVzaCgi
Y2F0Y2giLCAiKCIgKyBjYVswXSArICIpIiwgbWFrZV9ibG9jayhjYVsxXSkpOwotICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKGZpKSBvdXQucHVzaCgiZmluYWxseSIsIG1ha2VfYmxvY2soZmkp
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhZGRfc3BhY2VzKG91dCk7Ci0gICAg
ICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAidGhyb3ciOiBmdW5jdGlvbihleHByKSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYWRkX3NwYWNlcyhbICJ0aHJvdyIsIG1h
a2UoZXhwcikgXSkgKyAiOyI7Ci0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAi
bmV3IjogZnVuY3Rpb24oY3RvciwgYXJncykgewotICAgICAgICAgICAgICAgICAgICAgICAgYXJn
cyA9IGFyZ3MubGVuZ3RoID4gMCA/ICIoIiArIGFkZF9jb21tYXMoTUFQKGFyZ3MsIG1ha2UpKSAr
ICIpIiA6ICIiOwotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFkZF9zcGFjZXMoWyAi
bmV3IiwgcGFyZW50aGVzaXplKGN0b3IsICJzZXEiLCAiYmluYXJ5IiwgImNvbmRpdGlvbmFsIiwg
ImFzc2lnbiIsIGZ1bmN0aW9uKGV4cHIpewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB2YXIgdyA9IGFzdF93YWxrZXIoKSwgaGFzX2NhbGwgPSB7fTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB3LndpdGhfd2Fsa2Vycyh7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiY2FsbCI6IGZ1bmN0aW9uKCkgeyB0aHJvdyBoYXNfY2FsbCB9LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZ1bmN0aW9uIjog
ZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9LCBmdW5jdGlvbigpewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdy53YWxrKGV4cHIpOwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNh
dGNoKGV4KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV4
ID09PSBoYXNfY2FsbCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHRocm93IGV4OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgICAgICAgICB9KSArIGFyZ3MgXSk7Ci0gICAgICAgICAgICAgICAgfSwKLSAgICAg
ICAgICAgICAgICAic3dpdGNoIjogZnVuY3Rpb24oZXhwciwgYm9keSkgewotICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGFkZF9zcGFjZXMoWyAic3dpdGNoIiwgIigiICsgbWFrZShleHBy
KSArICIpIiwgbWFrZV9zd2l0Y2hfYmxvY2soYm9keSkgXSk7Ci0gICAgICAgICAgICAgICAgfSwK
LSAgICAgICAgICAgICAgICAiYnJlYWsiOiBmdW5jdGlvbihsYWJlbCkgewotICAgICAgICAgICAg
ICAgICAgICAgICAgdmFyIG91dCA9ICJicmVhayI7Ci0gICAgICAgICAgICAgICAgICAgICAgICBp
ZiAobGFiZWwgIT0gbnVsbCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ICs9
ICIgIiArIG1ha2VfbmFtZShsYWJlbCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
b3V0ICsgIjsiOwotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgImNvbnRpbnVl
IjogZnVuY3Rpb24obGFiZWwpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvdXQgPSAi
Y29udGludWUiOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxhYmVsICE9IG51bGwpCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCArPSAiICIgKyBtYWtlX25hbWUobGFi
ZWwpOwotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG91dCArICI7IjsKLSAgICAgICAg
ICAgICAgICB9LAotICAgICAgICAgICAgICAgICJjb25kaXRpb25hbCI6IGZ1bmN0aW9uKGNvLCB0
aCwgZWwpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhZGRfc3BhY2VzKFsgcGFy
ZW50aGVzaXplKGNvLCAiYXNzaWduIiwgInNlcSIsICJjb25kaXRpb25hbCIpLCAiPyIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudGhlc2l6ZSh0aCwg
InNlcSIpLCAiOiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHBhcmVudGhlc2l6ZShlbCwgInNlcSIpIF0pOwotICAgICAgICAgICAgICAgIH0sCi0gICAgICAg
ICAgICAgICAgImFzc2lnbiI6IGZ1bmN0aW9uKG9wLCBsdmFsdWUsIHJ2YWx1ZSkgewotICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKG9wICYmIG9wICE9PSB0cnVlKSBvcCArPSAiPSI7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBlbHNlIG9wID0gIj0iOwotICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGFkZF9zcGFjZXMoWyBtYWtlKGx2YWx1ZSksIG9wLCBwYXJlbnRoZXNpemUocnZh
bHVlLCAic2VxIikgXSk7Ci0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAiZG90
IjogZnVuY3Rpb24oZXhwcikgewotICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG91dCA9IG1h
a2UoZXhwciksIGkgPSAxOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV4cHJbMF0gPT0g
Im51bSIpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCArPSAiLiI7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChuZWVkc19wYXJlbnMoZXhwcikpCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9ICIoIiArIG91dCArICIpIjsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHdoaWxlIChpIDwgYXJndW1lbnRzLmxlbmd0aCkKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgb3V0ICs9ICIuIiArIG1ha2VfbmFtZShhcmd1bWVudHNbaSsr
XSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3V0OwotICAgICAgICAgICAgICAg
IH0sCi0gICAgICAgICAgICAgICAgImNhbGwiOiBmdW5jdGlvbihmdW5jLCBhcmdzKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICB2YXIgZiA9IG1ha2UoZnVuYyk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBpZiAobmVlZHNfcGFyZW5zKGZ1bmMpKQotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBmID0gIigiICsgZiArICIpIjsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBmICsgIigiICsgYWRkX2NvbW1hcyhNQVAoYXJncywgZnVuY3Rpb24oZXhwcil7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwYXJlbnRoZXNpemUoZXhwciwgInNlcSIp
OwotICAgICAgICAgICAgICAgICAgICAgICAgfSkpICsgIikiOwotICAgICAgICAgICAgICAgIH0s
Ci0gICAgICAgICAgICAgICAgImZ1bmN0aW9uIjogbWFrZV9mdW5jdGlvbiwKLSAgICAgICAgICAg
ICAgICAiZGVmdW4iOiBtYWtlX2Z1bmN0aW9uLAotICAgICAgICAgICAgICAgICJpZiI6IGZ1bmN0
aW9uKGNvLCB0aCwgZWwpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvdXQgPSBbICJp
ZiIsICIoIiArIG1ha2UoY28pICsgIikiLCBlbCA/IG1ha2VfdGhlbih0aCkgOiBtYWtlKHRoKSBd
OwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVsKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG91dC5wdXNoKCJlbHNlIiwgbWFrZShlbCkpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFkZF9zcGFjZXMob3V0
KTsKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICJmb3IiOiBmdW5jdGlvbihp
bml0LCBjb25kLCBzdGVwLCBibG9jaykgewotICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG91
dCA9IFsgImZvciIgXTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGluaXQgPSAoaW5pdCAhPSBu
dWxsID8gbWFrZShpbml0KSA6ICIiKS5yZXBsYWNlKC87KlxzKiQvLCAiOyIgKyBzcGFjZSk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBjb25kID0gKGNvbmQgIT0gbnVsbCA/IG1ha2UoY29uZCkg
OiAiIikucmVwbGFjZSgvOypccyokLywgIjsiICsgc3BhY2UpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgc3RlcCA9IChzdGVwICE9IG51bGwgPyBtYWtlKHN0ZXApIDogIiIpLnJlcGxhY2UoLzsq
XHMqJC8sICIiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhcmdzID0gaW5pdCArIGNv
bmQgKyBzdGVwOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFyZ3MgPT0gIjsgOyAiKSBh
cmdzID0gIjs7IjsKLSAgICAgICAgICAgICAgICAgICAgICAgIG91dC5wdXNoKCIoIiArIGFyZ3Mg
KyAiKSIsIG1ha2UoYmxvY2spKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhZGRf
c3BhY2VzKG91dCk7Ci0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAiZm9yLWlu
IjogZnVuY3Rpb24oaGFzX3Zhciwga2V5LCBoYXNoLCBibG9jaykgewotICAgICAgICAgICAgICAg
ICAgICAgICAgdmFyIG91dCA9IGFkZF9zcGFjZXMoWyAiZm9yIiwgIigiIF0pOwotICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKGhhc192YXIpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG91dCArPSAidmFyICI7Ci0gICAgICAgICAgICAgICAgICAgICAgICBvdXQgKz0gYWRkX3Nw
YWNlcyhbIG1ha2VfbmFtZShrZXkpICsgIiBpbiAiICsgbWFrZShoYXNoKSArICIpIiwgbWFrZShi
bG9jaykgXSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3V0OwotICAgICAgICAg
ICAgICAgIH0sCi0gICAgICAgICAgICAgICAgIndoaWxlIjogZnVuY3Rpb24oY29uZGl0aW9uLCBi
bG9jaykgewotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFkZF9zcGFjZXMoWyAid2hp
bGUiLCAiKCIgKyBtYWtlKGNvbmRpdGlvbikgKyAiKSIsIG1ha2UoYmxvY2spIF0pOwotICAgICAg
ICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgImRvIjogZnVuY3Rpb24oY29uZGl0aW9uLCBi
bG9jaykgewotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFkZF9zcGFjZXMoWyAiZG8i
LCBtYWtlKGJsb2NrKSwgIndoaWxlIiwgIigiICsgbWFrZShjb25kaXRpb24pICsgIikiIF0pICsg
IjsiOwotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgInJldHVybiI6IGZ1bmN0
aW9uKGV4cHIpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvdXQgPSBbICJyZXR1cm4i
IF07Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXhwciAhPSBudWxsKSBvdXQucHVzaCht
YWtlKGV4cHIpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhZGRfc3BhY2VzKG91
dCkgKyAiOyI7Ci0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAiYmluYXJ5Ijog
ZnVuY3Rpb24ob3BlcmF0b3IsIGx2YWx1ZSwgcnZhbHVlKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICB2YXIgbGVmdCA9IG1ha2UobHZhbHVlKSwgcmlnaHQgPSBtYWtlKHJ2YWx1ZSk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAvLyBYWFg6IEknbSBwcmV0dHkgc3VyZSBvdGhlciBjYXNlcyB3
aWxsIGJpdGUgaGVyZS4KLSAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICAgd2UgbmVlZCB0
byBiZSBzbWFydGVyLgotICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgICBhZGRpbmcgcGFy
ZW5zIGFsbCB0aGUgdGltZSBpcyB0aGUgc2FmZXN0IGJldC4KLSAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChtZW1iZXIobHZhbHVlWzBdLCBbICJhc3NpZ24iLCAiY29uZGl0aW9uYWwiLCAic2Vx
IiBdKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGx2YWx1ZVswXSA9PSAiYmluYXJ5
IiAmJiBQUkVDRURFTkNFW29wZXJhdG9yXSA+IFBSRUNFREVOQ0VbbHZhbHVlWzFdXSkgewotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0ID0gIigiICsgbGVmdCArICIpIjsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtZW1i
ZXIocnZhbHVlWzBdLCBbICJhc3NpZ24iLCAiY29uZGl0aW9uYWwiLCAic2VxIiBdKSB8fAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJ2YWx1ZVswXSA9PSAiYmluYXJ5IiAmJiBQUkVDRURF
TkNFW29wZXJhdG9yXSA+PSBQUkVDRURFTkNFW3J2YWx1ZVsxXV0gJiYKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAhKHJ2YWx1ZVsxXSA9PSBvcGVyYXRvciAmJiBtZW1iZXIob3BlcmF0b3Is
IFsgIiYmIiwgInx8IiwgIioiIF0pKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByaWdodCA9ICIoIiArIHJpZ2h0ICsgIikiOwotICAgICAgICAgICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFkZF9zcGFjZXMoWyBsZWZ0LCBvcGVyYXRv
ciwgcmlnaHQgXSk7Ci0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAidW5hcnkt
cHJlZml4IjogZnVuY3Rpb24ob3BlcmF0b3IsIGV4cHIpIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHZhciB2YWwgPSBtYWtlKGV4cHIpOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEo
ZXhwclswXSA9PSAibnVtIiB8fCAoZXhwclswXSA9PSAidW5hcnktcHJlZml4IiAmJiAhSE9QKE9Q
RVJBVE9SUywgb3BlcmF0b3IgKyBleHByWzFdKSkgfHwgIW5lZWRzX3BhcmVucyhleHByKSkpCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCA9ICIoIiArIHZhbCArICIpIjsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvcGVyYXRvciArIChqc3AuaXNfYWxwaGFudW1l
cmljX2NoYXIob3BlcmF0b3IuY2hhckF0KDApKSA/ICIgIiA6ICIiKSArIHZhbDsKLSAgICAgICAg
ICAgICAgICB9LAotICAgICAgICAgICAgICAgICJ1bmFyeS1wb3N0Zml4IjogZnVuY3Rpb24ob3Bl
cmF0b3IsIGV4cHIpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHZhciB2YWwgPSBtYWtlKGV4
cHIpOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEoZXhwclswXSA9PSAibnVtIiB8fCAo
ZXhwclswXSA9PSAidW5hcnktcG9zdGZpeCIgJiYgIUhPUChPUEVSQVRPUlMsIG9wZXJhdG9yICsg
ZXhwclsxXSkpIHx8ICFuZWVkc19wYXJlbnMoZXhwcikpKQotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB2YWwgPSAiKCIgKyB2YWwgKyAiKSI7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gdmFsICsgb3BlcmF0b3I7Ci0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAg
ICAgICAic3ViIjogZnVuY3Rpb24oZXhwciwgc3Vic2NyaXB0KSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICB2YXIgaGFzaCA9IG1ha2UoZXhwcik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBp
ZiAobmVlZHNfcGFyZW5zKGV4cHIpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBo
YXNoID0gIigiICsgaGFzaCArICIpIjsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBo
YXNoICsgIlsiICsgbWFrZShzdWJzY3JpcHQpICsgIl0iOwotICAgICAgICAgICAgICAgIH0sCi0g
ICAgICAgICAgICAgICAgIm9iamVjdCI6IGZ1bmN0aW9uKHByb3BzKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBpZiAocHJvcHMubGVuZ3RoID09IDApCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiAie30iOwotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJ7
IiArIG5ld2xpbmUgKyB3aXRoX2luZGVudChmdW5jdGlvbigpewotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gTUFQKHByb3BzLCBmdW5jdGlvbihwKXsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocC5sZW5ndGggPT0gMykgewotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZ2V0dGVyL3NldHRl
ci4gIFRoZSBuYW1lIGlzIGluIHBbMF0sIHRoZSBhcmcubGlzdCBpbiBwWzFdWzJdLCB0aGUKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJvZHkgaW4g
cFsxXVszXSBhbmQgdHlwZSAoImdldCIgLyAic2V0IikgaW4gcFsyXS4KLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpbmRlbnQobWFrZV9mdW5j
dGlvbihwWzBdLCBwWzFdWzJdLCBwWzFdWzNdLCBwWzJdKSk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHZhciBrZXkgPSBwWzBdLCB2YWwgPSBtYWtlKHBbMV0pOwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChiZWF1dGlmeSAmJiBiZWF1dGlmeS5xdW90ZV9r
ZXlzKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBr
ZXkgPSBtYWtlX3N0cmluZyhrZXkpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIH0gZWxzZSBpZiAoKHR5cGVvZiBrZXkgPT0gIm51bWJlciIgfHwgIWJlYXV0aWZ5ICYm
ICtrZXkgKyAiIiA9PSBrZXkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAmJiBwYXJzZUZsb2F0KGtleSkgPj0gMCkgewotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5ID0gbWFrZV9udW0oK2tleSk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICghaXNfaWRl
bnRpZmllcihrZXkpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBrZXkgPSBtYWtlX3N0cmluZyhrZXkpOwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gaW5kZW50KGFkZF9zcGFjZXMoYmVhdXRpZnkgJiYgYmVhdXRpZnkuc3BhY2VfY29s
b24KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPyBbIGtleSwgIjoiLCB2YWwgXQotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFsga2V5ICsgIjoiLCB2
YWwgXSkpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KS5qb2luKCIsIiArIG5l
d2xpbmUpOwotICAgICAgICAgICAgICAgICAgICAgICAgfSkgKyBuZXdsaW5lICsgaW5kZW50KCJ9
Iik7Ci0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAicmVnZXhwIjogZnVuY3Rp
b24ocngsIG1vZHMpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAiLyIgKyByeCAr
ICIvIiArIG1vZHM7Ci0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAiYXJyYXki
OiBmdW5jdGlvbihlbGVtZW50cykgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVsZW1l
bnRzLmxlbmd0aCA9PSAwKSByZXR1cm4gIltdIjsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBhZGRfc3BhY2VzKFsgIlsiLCBhZGRfY29tbWFzKE1BUChlbGVtZW50cywgZnVuY3Rpb24o
ZWwpewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWJlYXV0aWZ5ICYmIGVs
WzBdID09ICJhdG9tIiAmJiBlbFsxXSA9PSAidW5kZWZpbmVkIikgcmV0dXJuICIiOwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGFyZW50aGVzaXplKGVsLCAic2VxIik7
Ci0gICAgICAgICAgICAgICAgICAgICAgICB9KSksICJdIiBdKTsKLSAgICAgICAgICAgICAgICB9
LAotICAgICAgICAgICAgICAgICJzdGF0IjogZnVuY3Rpb24oc3RtdCkgewotICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIG1ha2Uoc3RtdCkucmVwbGFjZSgvOypccyokLywgIjsiKTsKLSAg
ICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICJzZXEiOiBmdW5jdGlvbigpIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhZGRfY29tbWFzKE1BUChzbGljZShhcmd1bWVu
dHMpLCBtYWtlKSk7Ci0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAibGFiZWwi
OiBmdW5jdGlvbihuYW1lLCBibG9jaykgewotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGFkZF9zcGFjZXMoWyBtYWtlX25hbWUobmFtZSksICI6IiwgbWFrZShibG9jaykgXSk7Ci0gICAg
ICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAid2l0aCI6IGZ1bmN0aW9uKGV4cHIsIGJs
b2NrKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYWRkX3NwYWNlcyhbICJ3aXRo
IiwgIigiICsgbWFrZShleHByKSArICIpIiwgbWFrZShibG9jaykgXSk7Ci0gICAgICAgICAgICAg
ICAgfSwKLSAgICAgICAgICAgICAgICAiYXRvbSI6IGZ1bmN0aW9uKG5hbWUpIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBtYWtlX25hbWUobmFtZSk7Ci0gICAgICAgICAgICAgICAg
fQotICAgICAgICB9OwotCi0gICAgICAgIC8vIFRoZSBzcXVlZXplciByZXBsYWNlcyAiYmxvY2si
LXMgdGhhdCBjb250YWluIG9ubHkgYSBzaW5nbGUKLSAgICAgICAgLy8gc3RhdGVtZW50IHdpdGgg
dGhlIHN0YXRlbWVudCBpdHNlbGY7IHRlY2huaWNhbGx5LCB0aGUgQVNUCi0gICAgICAgIC8vIGlz
IGNvcnJlY3QsIGJ1dCB0aGlzIGNhbiBjcmVhdGUgcHJvYmxlbXMgd2hlbiB3ZSBvdXRwdXQgYW4K
LSAgICAgICAgLy8gSUYgaGF2aW5nIGFuIEVMU0UgY2xhdXNlIHdoZXJlIHRoZSBUSEVOIGNsYXVz
ZSBlbmRzIGluIGFuCi0gICAgICAgIC8vIElGICp3aXRob3V0KiBhbiBFTFNFIGJsb2NrICh0aGVu
IHRoZSBvdXRlciBFTFNFIHdvdWxkIHJlZmVyCi0gICAgICAgIC8vIHRvIHRoZSBpbm5lciBJRiku
ICBUaGlzIGZ1bmN0aW9uIGNoZWNrcyBmb3IgdGhpcyBjYXNlIGFuZAotICAgICAgICAvLyBhZGRz
IHRoZSBibG9jayBicmFja2V0cyBpZiBuZWVkZWQuCi0gICAgICAgIGZ1bmN0aW9uIG1ha2VfdGhl
bih0aCkgewotICAgICAgICAgICAgICAgIGlmICh0aFswXSA9PSAiZG8iKSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vbWlzaG9vL1VnbGlmeUpTL2lzc3Vl
cy8jaXNzdWUvNTcKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIElFIGNyb2FrcyB3aXRoICJz
eW50YXggZXJyb3IiIG9uIGNvZGUgbGlrZSB0aGlzOgotICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gICAgIGlmIChmb28pIGRvIC4uLiB3aGlsZShjb25kKTsgZWxzZSAuLi4KLSAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIHdlIG5lZWQgYmxvY2sgYnJhY2tldHMgYXJvdW5kIGRvL3doaWxlCi0g
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWFrZShbICJibG9jayIsIFsgdGggXV0pOwot
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB2YXIgYiA9IHRoOwotICAgICAgICAg
ICAgICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB2YXIgdHlwZSA9
IGJbMF07Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZSA9PSAiaWYiKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghYlszXSkKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBubyBlbHNlLCB3ZSBtdXN0IGFkZCB0aGUgYmxvY2sK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWFrZShbICJi
bG9jayIsIFsgdGggXV0pOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiID0gYlsz
XTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIGVs
c2UgaWYgKHR5cGUgPT0gIndoaWxlIiB8fCB0eXBlID09ICJkbyIpIGIgPSBiWzJdOwotICAgICAg
ICAgICAgICAgICAgICAgICAgZWxzZSBpZiAodHlwZSA9PSAiZm9yIiB8fCB0eXBlID09ICJmb3It
aW4iKSBiID0gYls0XTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgYnJlYWs7Ci0gICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJldHVybiBtYWtlKHRoKTsKLSAgICAgICAg
fTsKLQotICAgICAgICBmdW5jdGlvbiBtYWtlX2Z1bmN0aW9uKG5hbWUsIGFyZ3MsIGJvZHksIGtl
eXdvcmQpIHsKLSAgICAgICAgICAgICAgICB2YXIgb3V0ID0ga2V5d29yZCB8fCAiZnVuY3Rpb24i
OwotICAgICAgICAgICAgICAgIGlmIChuYW1lKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBv
dXQgKz0gIiAiICsgbWFrZV9uYW1lKG5hbWUpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICBvdXQgKz0gIigiICsgYWRkX2NvbW1hcyhNQVAoYXJncywgbWFrZV9uYW1lKSkgKyAi
KSI7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGFkZF9zcGFjZXMoWyBvdXQsIG1ha2VfYmxvY2so
Ym9keSkgXSk7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgZnVuY3Rpb24gbWFrZV9uYW1lKG5hbWUp
IHsKLSAgICAgICAgICAgICAgICByZXR1cm4gbmFtZS50b1N0cmluZygpOwotICAgICAgICB9Owot
Ci0gICAgICAgIGZ1bmN0aW9uIG1ha2VfYmxvY2tfc3RhdGVtZW50cyhzdGF0ZW1lbnRzKSB7Ci0g
ICAgICAgICAgICAgICAgZm9yICh2YXIgYSA9IFtdLCBsYXN0ID0gc3RhdGVtZW50cy5sZW5ndGgg
LSAxLCBpID0gMDsgaSA8PSBsYXN0OyArK2kpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHZh
ciBzdGF0ID0gc3RhdGVtZW50c1tpXTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjb2Rl
ID0gbWFrZShzdGF0KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb2RlICE9ICI7Iikg
ewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWJlYXV0aWZ5ICYmIGkgPT0g
bGFzdCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoc3Rh
dFswXSA9PSAid2hpbGUiICYmIGVtcHR5KHN0YXRbMl0pKSB8fAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAobWVtYmVyKHN0YXRbMF0sIFsgImZvciIsICJmb3It
aW4iXSApICYmIGVtcHR5KHN0YXRbNF0pKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAoc3RhdFswXSA9PSAiaWYiICYmIGVtcHR5KHN0YXRbMl0pICYmICFz
dGF0WzNdKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo
c3RhdFswXSA9PSAiaWYiICYmIHN0YXRbM10gJiYgZW1wdHkoc3RhdFszXSkpKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlID0gY29kZS5yZXBs
YWNlKC87KlxzKiQvLCAiOyIpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb2RlID0gY29kZS5yZXBsYWNlKC87K1xzKiQvLCAiIik7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEucHVzaChjb2RlKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
cmV0dXJuIE1BUChhLCBpbmRlbnQpOwotICAgICAgICB9OwotCi0gICAgICAgIGZ1bmN0aW9uIG1h
a2Vfc3dpdGNoX2Jsb2NrKGJvZHkpIHsKLSAgICAgICAgICAgICAgICB2YXIgbiA9IGJvZHkubGVu
Z3RoOwotICAgICAgICAgICAgICAgIGlmIChuID09IDApIHJldHVybiAie30iOwotICAgICAgICAg
ICAgICAgIHJldHVybiAieyIgKyBuZXdsaW5lICsgTUFQKGJvZHksIGZ1bmN0aW9uKGJyYW5jaCwg
aSl7Ci0gICAgICAgICAgICAgICAgICAgICAgICB2YXIgaGFzX2JvZHkgPSBicmFuY2hbMV0ubGVu
Z3RoID4gMCwgY29kZSA9IHdpdGhfaW5kZW50KGZ1bmN0aW9uKCl7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBpbmRlbnQoYnJhbmNoWzBdCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBhZGRfc3BhY2VzKFsgImNhc2UiLCBtYWtl
KGJyYW5jaFswXSkgKyAiOiIgXSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA6ICJkZWZhdWx0OiIpOwotICAgICAgICAgICAgICAgICAgICAgICAgfSwgMC41
KSArIChoYXNfYm9keSA/IG5ld2xpbmUgKyB3aXRoX2luZGVudChmdW5jdGlvbigpewotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWFrZV9ibG9ja19zdGF0ZW1lbnRzKGJy
YW5jaFsxXSkuam9pbihuZXdsaW5lKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0pIDogIiIp
OwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFiZWF1dGlmeSAmJiBoYXNfYm9keSAmJiBp
IDwgbiAtIDEpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGUgKz0gIjsiOwot
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvZGU7Ci0gICAgICAgICAgICAgICAgfSku
am9pbihuZXdsaW5lKSArIG5ld2xpbmUgKyBpbmRlbnQoIn0iKTsKLSAgICAgICAgfTsKLQotICAg
ICAgICBmdW5jdGlvbiBtYWtlX2Jsb2NrKHN0YXRlbWVudHMpIHsKLSAgICAgICAgICAgICAgICBp
ZiAoIXN0YXRlbWVudHMpIHJldHVybiAiOyI7Ci0gICAgICAgICAgICAgICAgaWYgKHN0YXRlbWVu
dHMubGVuZ3RoID09IDApIHJldHVybiAie30iOwotICAgICAgICAgICAgICAgIHJldHVybiAieyIg
KyBuZXdsaW5lICsgd2l0aF9pbmRlbnQoZnVuY3Rpb24oKXsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBtYWtlX2Jsb2NrX3N0YXRlbWVudHMoc3RhdGVtZW50cykuam9pbihuZXdsaW5l
KTsKLSAgICAgICAgICAgICAgICB9KSArIG5ld2xpbmUgKyBpbmRlbnQoIn0iKTsKLSAgICAgICAg
fTsKLQotICAgICAgICBmdW5jdGlvbiBtYWtlXzF2YXJkZWYoZGVmKSB7Ci0gICAgICAgICAgICAg
ICAgdmFyIG5hbWUgPSBkZWZbMF0sIHZhbCA9IGRlZlsxXTsKLSAgICAgICAgICAgICAgICBpZiAo
dmFsICE9IG51bGwpCi0gICAgICAgICAgICAgICAgICAgICAgICBuYW1lID0gYWRkX3NwYWNlcyhb
IG5hbWUsICI9IiwgbWFrZSh2YWwpIF0pOwotICAgICAgICAgICAgICAgIHJldHVybiBuYW1lOwot
ICAgICAgICB9OwotCi0gICAgICAgIHZhciAkc3RhY2sgPSBbXTsKLQotICAgICAgICBmdW5jdGlv
biBtYWtlKG5vZGUpIHsKLSAgICAgICAgICAgICAgICB2YXIgdHlwZSA9IG5vZGVbMF07Ci0gICAg
ICAgICAgICAgICAgdmFyIGdlbiA9IGdlbmVyYXRvcnNbdHlwZV07Ci0gICAgICAgICAgICAgICAg
aWYgKCFnZW4pCi0gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkNhbid0
IGZpbmQgZ2VuZXJhdG9yIGZvciBcIiIgKyB0eXBlICsgIlwiIik7Ci0gICAgICAgICAgICAgICAg
JHN0YWNrLnB1c2gobm9kZSk7Ci0gICAgICAgICAgICAgICAgdmFyIHJldCA9IGdlbi5hcHBseSh0
eXBlLCBub2RlLnNsaWNlKDEpKTsKLSAgICAgICAgICAgICAgICAkc3RhY2sucG9wKCk7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIHJldDsKLSAgICAgICAgfTsKLQotICAgICAgICByZXR1cm4gbWFr
ZShhc3QpOwotfTsKLQotZnVuY3Rpb24gc3BsaXRfbGluZXMoY29kZSwgbWF4X2xpbmVfbGVuZ3Ro
KSB7Ci0gICAgICAgIHZhciBzcGxpdHMgPSBbIDAgXTsKLSAgICAgICAganNwLnBhcnNlKGZ1bmN0
aW9uKCl7Ci0gICAgICAgICAgICAgICAgdmFyIG5leHRfdG9rZW4gPSBqc3AudG9rZW5pemVyKGNv
ZGUpOwotICAgICAgICAgICAgICAgIHZhciBsYXN0X3NwbGl0ID0gMDsKLSAgICAgICAgICAgICAg
ICB2YXIgcHJldl90b2tlbjsKLSAgICAgICAgICAgICAgICBmdW5jdGlvbiBjdXJyZW50X2xlbmd0
aCh0b2spIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0b2sucG9zIC0gbGFzdF9z
cGxpdDsKLSAgICAgICAgICAgICAgICB9OwotICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHNwbGl0
X2hlcmUodG9rKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBsYXN0X3NwbGl0ID0gdG9rLnBv
czsKLSAgICAgICAgICAgICAgICAgICAgICAgIHNwbGl0cy5wdXNoKGxhc3Rfc3BsaXQpOwotICAg
ICAgICAgICAgICAgIH07Ci0gICAgICAgICAgICAgICAgZnVuY3Rpb24gY3VzdG9tKCl7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICB2YXIgdG9rID0gbmV4dF90b2tlbi5hcHBseSh0aGlzLCBhcmd1
bWVudHMpOwotICAgICAgICAgICAgICAgICAgICAgICAgb3V0OiB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChwcmV2X3Rva2VuKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKHByZXZfdG9rZW4udHlwZSA9PSAia2V5d29yZCIpIGJyZWFr
IG91dDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoY3VycmVudF9sZW5ndGgodG9rKSA+IG1heF9saW5lX2xlbmd0
aCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAodG9r
LnR5cGUpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2Fz
ZSAia2V5d29yZCI6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNhc2UgImF0b20iOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjYXNlICJuYW1lIjoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY2FzZSAicHVuYyI6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzcGxpdF9oZXJlKHRvayk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBicmVhayBvdXQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBwcmV2X3Rva2VuID0g
dG9rOwotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRvazsKLSAgICAgICAgICAgICAg
ICB9OwotICAgICAgICAgICAgICAgIGN1c3RvbS5jb250ZXh0ID0gZnVuY3Rpb24oKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV4dF90b2tlbi5jb250ZXh0LmFwcGx5KHRoaXMs
IGFyZ3VtZW50cyk7Ci0gICAgICAgICAgICAgICAgfTsKLSAgICAgICAgICAgICAgICByZXR1cm4g
Y3VzdG9tOwotICAgICAgICB9KCkpOwotICAgICAgICByZXR1cm4gc3BsaXRzLm1hcChmdW5jdGlv
bihwb3MsIGkpewotICAgICAgICAgICAgICAgIHJldHVybiBjb2RlLnN1YnN0cmluZyhwb3MsIHNw
bGl0c1tpICsgMV0gfHwgY29kZS5sZW5ndGgpOwotICAgICAgICB9KS5qb2luKCJcbiIpOwotfTsK
LQotLyogLS0tLS1bIFV0aWxpdGllcyBdLS0tLS0gKi8KLQotZnVuY3Rpb24gcmVwZWF0X3N0cmlu
ZyhzdHIsIGkpIHsKLSAgICAgICAgaWYgKGkgPD0gMCkgcmV0dXJuICIiOwotICAgICAgICBpZiAo
aSA9PSAxKSByZXR1cm4gc3RyOwotICAgICAgICB2YXIgZCA9IHJlcGVhdF9zdHJpbmcoc3RyLCBp
ID4+IDEpOwotICAgICAgICBkICs9IGQ7Ci0gICAgICAgIGlmIChpICYgMSkgZCArPSBzdHI7Ci0g
ICAgICAgIHJldHVybiBkOwotfTsKLQotZnVuY3Rpb24gZGVmYXVsdHMoYXJncywgZGVmcykgewot
ICAgICAgICB2YXIgcmV0ID0ge307Ci0gICAgICAgIGlmIChhcmdzID09PSB0cnVlKQotICAgICAg
ICAgICAgICAgIGFyZ3MgPSB7fTsKLSAgICAgICAgZm9yICh2YXIgaSBpbiBkZWZzKSBpZiAoSE9Q
KGRlZnMsIGkpKSB7Ci0gICAgICAgICAgICAgICAgcmV0W2ldID0gKGFyZ3MgJiYgSE9QKGFyZ3Ms
IGkpKSA/IGFyZ3NbaV0gOiBkZWZzW2ldOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiByZXQ7
Ci19OwotCi1mdW5jdGlvbiBpc19pZGVudGlmaWVyKG5hbWUpIHsKLSAgICAgICAgcmV0dXJuIC9e
W2Etel8kXVthLXowLTlfJF0qJC9pLnRlc3QobmFtZSkKLSAgICAgICAgICAgICAgICAmJiBuYW1l
ICE9ICJ0aGlzIgotICAgICAgICAgICAgICAgICYmICFIT1AoanNwLktFWVdPUkRTX0FUT00sIG5h
bWUpCi0gICAgICAgICAgICAgICAgJiYgIUhPUChqc3AuUkVTRVJWRURfV09SRFMsIG5hbWUpCi0g
ICAgICAgICAgICAgICAgJiYgIUhPUChqc3AuS0VZV09SRFMsIG5hbWUpOwotfTsKLQotZnVuY3Rp
b24gSE9QKG9iaiwgcHJvcCkgewotICAgICAgICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNP
d25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCk7Ci19OwotCi0vLyBzb21lIHV0aWxpdGllcwotCi12
YXIgTUFQOwotCi0oZnVuY3Rpb24oKXsKLSAgICAgICAgTUFQID0gZnVuY3Rpb24oYSwgZiwgbykg
ewotICAgICAgICAgICAgICAgIHZhciByZXQgPSBbXTsKLSAgICAgICAgICAgICAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IGEubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHZh
ciB2YWwgPSBmLmNhbGwobywgYVtpXSwgaSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAo
dmFsIGluc3RhbmNlb2YgQXRUb3ApIHJldC51bnNoaWZ0KHZhbC52KTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGVsc2UgcmV0LnB1c2godmFsKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIHJldDsKLSAgICAgICAgfTsKLSAgICAgICAgTUFQLmF0X3RvcCA9IGZ1
bmN0aW9uKHZhbCkgeyByZXR1cm4gbmV3IEF0VG9wKHZhbCkgfTsKLSAgICAgICAgZnVuY3Rpb24g
QXRUb3AodmFsKSB7IHRoaXMudiA9IHZhbCB9OwotfSkoKTsKLQotLyogLS0tLS1bIEV4cG9ydHMg
XS0tLS0tICovCi0KLWV4cG9ydHMuYXN0X3dhbGtlciA9IGFzdF93YWxrZXI7Ci1leHBvcnRzLmFz
dF9tYW5nbGUgPSBhc3RfbWFuZ2xlOwotZXhwb3J0cy5hc3Rfc3F1ZWV6ZSA9IGFzdF9zcXVlZXpl
OwotZXhwb3J0cy5nZW5fY29kZSA9IGdlbl9jb2RlOwotZXhwb3J0cy5hc3RfYWRkX3Njb3BlID0g
YXN0X2FkZF9zY29wZTsKLWV4cG9ydHMuYXN0X3NxdWVlemVfbW9yZSA9IHJlcXVpcmUoIi4vc3F1
ZWV6ZS1tb3JlIikuYXN0X3NxdWVlemVfbW9yZTsKLWV4cG9ydHMuc2V0X2xvZ2dlciA9IGZ1bmN0
aW9uKGxvZ2dlcikgeyB3YXJuID0gbG9nZ2VyIH07Ci1leHBvcnRzLm1ha2Vfc3RyaW5nID0gbWFr
ZV9zdHJpbmc7Ci1leHBvcnRzLnNwbGl0X2xpbmVzID0gc3BsaXRfbGluZXM7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMKaW5kZXggMWI1Y2IzOS4uNGI4
MTI5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJL
aXQucXJjCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFy
YwpAQCAtMTIyLDggKzEyMiw4IEBACiAgICAgPGZpbGU+V2F0Y2hFeHByZXNzaW9uc1NpZGViYXJQ
YW5lLmpzPC9maWxlPgogICAgIDxmaWxlPldlbGNvbWVWaWV3LmpzPC9maWxlPgogICAgIDxmaWxl
PldvcmtlcnNTaWRlYmFyUGFuZS5qczwvZmlsZT4KKyAgICA8ZmlsZT5VZ2xpZnlKUy9KYXZhU2Ny
aXB0Rm9ybWF0dGVyLmpzPC9maWxlPgogICAgIDxmaWxlPlVnbGlmeUpTL3BhcnNlLWpzLmpzPC9m
aWxlPgotICAgIDxmaWxlPlVnbGlmeUpTL3Byb2Nlc3MuanM8L2ZpbGU+CiAgICAgPGZpbGU+YXVk
aXRzLmNzczwvZmlsZT4KICAgICA8ZmlsZT5nb1RvTGluZURpYWxvZy5jc3M8L2ZpbGU+CiAgICAg
PGZpbGU+aGVhcFByb2ZpbGVyLmNzczwvZmlsZT4K
</data>
<flag name="review"
          id="83454"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
          </attachment>
      

    </bug>

</bugzilla>