<?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>41213</bug_id>
          
          <creation_ts>2010-06-25 07:09:26 -0700</creation_ts>
          <short_desc>improved lexer for JavaScriptCore</short_desc>
          <delta_ts>2010-06-28 14:24:21 -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>JavaScriptCore</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>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Zoltan Herczeg">zherczeg</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>barraclough</cc>
    
    <cc>eric</cc>
    
    <cc>ggaren</cc>
    
    <cc>oliver</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>243003</commentid>
    <comment_count>0</comment_count>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2010-06-25 07:09:26 -0700</bug_when>
    <thetext>It is time to improve the speed of the lexer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243004</commentid>
    <comment_count>1</comment_count>
      <attachid>59765</attachid>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2010-06-25 07:10:07 -0700</bug_when>
    <thetext>Created attachment 59765
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243075</commentid>
    <comment_count>2</comment_count>
      <attachid>59765</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2010-06-25 10:48:05 -0700</bug_when>
    <thetext>Comment on attachment 59765
patch

This looks sane but i&apos;m in a bus so can&apos;t really review properly -- what&apos;s the perf win from this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243086</commentid>
    <comment_count>3</comment_count>
      <attachid>59765</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-06-25 11:16:37 -0700</bug_when>
    <thetext>Comment on attachment 59765
patch

Missing ChangeLog and perf change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243091</commentid>
    <comment_count>4</comment_count>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2010-06-25 11:25:16 -0700</bug_when>
    <thetext>Performance gain is minimal. I plan to refactor the other parts of lexer (want to remove the majority of the gotos), just not everything in one step, except if you prefer the one big change.

TEST                           COMPARISON            FROM                 TO             DETAILS

=============================================================================

** TOTAL **:                   -                 34.0ms +/- 2.6%   33.2ms +/- 2.0%

=============================================================================

  jquery:                      ??                 5.1ms +/- 4.4%    5.3ms +/- 6.5%     not conclusive: might be *1.039x as slow*
    1.3.2:                     ??                 5.1ms +/- 4.4%    5.3ms +/- 6.5%     not conclusive: might be *1.039x as slow*

  mootools:                    ??                 5.3ms +/- 6.5%    5.4ms +/- 6.8%     not conclusive: might be *1.019x as slow*
    1.2.2-core-nc:             ??                 5.3ms +/- 6.5%    5.4ms +/- 6.8%     not conclusive: might be *1.019x as slow*

  prototype:                   -                  6.4ms +/- 5.8%    6.1ms +/- 3.7%
    1.6.0.3:                   -                  6.4ms +/- 5.8%    6.1ms +/- 3.7%

  concat:                      1.049x as fast    17.2ms +/- 3.3%   16.4ms +/- 2.3%     significant
    jquery-mootools-prototype: 1.049x as fast    17.2ms +/- 3.3%   16.4ms +/- 2.3%     significant</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243150</commentid>
    <comment_count>5</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2010-06-25 12:54:20 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Performance gain is minimal. I plan to refactor the other parts of lexer (want to remove the majority of the gotos), just not everything in one step, except if you prefer the one big change.
Nope, i completely agree with this approach.

Like Sam said missing a changelog == badness, otherwise this looks good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243599</commentid>
    <comment_count>6</comment_count>
      <attachid>59881</attachid>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2010-06-28 00:59:28 -0700</bug_when>
    <thetext>Created attachment 59881
full patch

Sorry for the Changelog. I used to many iterations, and maintaining a Changelog is a nightmare after updates.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243812</commentid>
    <comment_count>7</comment_count>
      <attachid>59881</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2010-06-28 12:17:57 -0700</bug_when>
    <thetext>Comment on attachment 59881
full patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243859</commentid>
    <comment_count>8</comment_count>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2010-06-28 13:23:51 -0700</bug_when>
    <thetext>thanks.

Landed in http://trac.webkit.org/changeset/62031
Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243901</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-28 14:24:21 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/62031 might have broken GTK Linux 32-bit Debug
The following changes are on the blame list:
http://trac.webkit.org/changeset/62032
http://trac.webkit.org/changeset/62033
http://trac.webkit.org/changeset/62034
http://trac.webkit.org/changeset/62031</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59765</attachid>
            <date>2010-06-25 07:10:07 -0700</date>
            <delta_ts>2010-06-28 00:59:28 -0700</delta_ts>
            <desc>patch</desc>
            <filename>0001-new-lexer.patch</filename>
            <type>text/plain</type>
            <size>29286</size>
            <attacher name="Zoltan Herczeg">zherczeg</attacher>
            
              <data encoding="base64">RnJvbSAwNjUxZWYxYjczZDM0MjcwNWJlYTk5Zjc0NTBhOWI3NjVmMjlkYzVkIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBab2x0YW4gSGVyY3plZyA8emhlcmN6ZWdAaW5mLnUtc3plZ2Vk
Lmh1PgpEYXRlOiBGcmksIDI1IEp1biAyMDEwIDE2OjA1OjUxICswMjAwClN1YmplY3Q6IFtQQVRD
SF0gbmV3IGxleGVyCgpTaWduZWQtb2ZmLWJ5OiBab2x0YW4gSGVyY3plZyA8emhlcmN6ZWdAaW5m
LnUtc3plZ2VkLmh1PgotLS0KIEphdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAgfCAgNjk3
ICsrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLQogSmF2YVNjcmlwdENvcmUv
cGFyc2VyL0xleGVyLmggICB8ICAgMjYgKy0KIDIgZmlsZXMgY2hhbmdlZCwgMzUzIGluc2VydGlv
bnMoKyksIDM3MCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvTGV4ZXIuY3BwIGIvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcAppbmRleCAzYTM4
MjczLi4xNWQyMTMxIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3Bw
CisrKyBiL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAKQEAgLTIsNiArMiw3IEBACiAg
KiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDAgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykK
ICAqICBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwg
UmlnaHRzIFJlc2VydmVkLgogICogIENvcHlyaWdodCAoQykgMjAwNyBDYW1lcm9uIFp3YXJpY2gg
KGN3endhcmljaEB1d2F0ZXJsb28uY2EpCisgKiAgQ29weXJpZ2h0IChDKSAyMDEwIFpvbHRhbiBI
ZXJjemVnICh6aGVyY3plZ0BpbmYudS1zemVnZWQuaHUpCiAgKgogICogIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpA
QCAtNjQsNzcgKzY1LDE3IEBAIExleGVyOjp+TGV4ZXIoKQogICAgIG1fa2V5d29yZFRhYmxlLmRl
bGV0ZVRhYmxlKCk7CiB9CiAKLWlubGluZSBjb25zdCBVQ2hhciogTGV4ZXI6OmN1cnJlbnRDaGFy
YWN0ZXIoKSBjb25zdAorQUxXQVlTX0lOTElORSBjb25zdCBVQ2hhciogTGV4ZXI6OmN1cnJlbnRD
aGFyYWN0ZXIoKSBjb25zdAogewotICAgIHJldHVybiBtX2NvZGUgLSA0OworICAgIEFTU0VSVCht
X2N1cnJlbnQgIT0gLTEpOworICAgIHJldHVybiBtX2NvZGU7CiB9CiAKLWlubGluZSBpbnQgTGV4
ZXI6OmN1cnJlbnRPZmZzZXQoKSBjb25zdAorQUxXQVlTX0lOTElORSBpbnQgTGV4ZXI6OmN1cnJl
bnRPZmZzZXQoKSBjb25zdAogewogICAgIHJldHVybiBjdXJyZW50Q2hhcmFjdGVyKCkgLSBtX2Nv
ZGVTdGFydDsKIH0KIAotQUxXQVlTX0lOTElORSB2b2lkIExleGVyOjpzaGlmdDEoKQotewotICAg
IG1fY3VycmVudCA9IG1fbmV4dDE7Ci0gICAgbV9uZXh0MSA9IG1fbmV4dDI7Ci0gICAgbV9uZXh0
MiA9IG1fbmV4dDM7Ci0gICAgaWYgKExJS0VMWShtX2NvZGUgPCBtX2NvZGVFbmQpKQotICAgICAg
ICBtX25leHQzID0gbV9jb2RlWzBdOwotICAgIGVsc2UKLSAgICAgICAgbV9uZXh0MyA9IC0xOwot
Ci0gICAgKyttX2NvZGU7Ci19Ci0KLUFMV0FZU19JTkxJTkUgdm9pZCBMZXhlcjo6c2hpZnQyKCkK
LXsKLSAgICBtX2N1cnJlbnQgPSBtX25leHQyOwotICAgIG1fbmV4dDEgPSBtX25leHQzOwotICAg
IGlmIChMSUtFTFkobV9jb2RlICsgMSA8IG1fY29kZUVuZCkpIHsKLSAgICAgICAgbV9uZXh0MiA9
IG1fY29kZVswXTsKLSAgICAgICAgbV9uZXh0MyA9IG1fY29kZVsxXTsKLSAgICB9IGVsc2Ugewot
ICAgICAgICBtX25leHQyID0gbV9jb2RlIDwgbV9jb2RlRW5kID8gbV9jb2RlWzBdIDogLTE7Ci0g
ICAgICAgIG1fbmV4dDMgPSAtMTsKLSAgICB9Ci0KLSAgICBtX2NvZGUgKz0gMjsKLX0KLQotQUxX
QVlTX0lOTElORSB2b2lkIExleGVyOjpzaGlmdDMoKQotewotICAgIG1fY3VycmVudCA9IG1fbmV4
dDM7Ci0gICAgaWYgKExJS0VMWShtX2NvZGUgKyAyIDwgbV9jb2RlRW5kKSkgewotICAgICAgICBt
X25leHQxID0gbV9jb2RlWzBdOwotICAgICAgICBtX25leHQyID0gbV9jb2RlWzFdOwotICAgICAg
ICBtX25leHQzID0gbV9jb2RlWzJdOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIG1fbmV4dDEgPSBt
X2NvZGUgPCBtX2NvZGVFbmQgPyBtX2NvZGVbMF0gOiAtMTsKLSAgICAgICAgbV9uZXh0MiA9IG1f
Y29kZSArIDEgPCBtX2NvZGVFbmQgPyBtX2NvZGVbMV0gOiAtMTsKLSAgICAgICAgbV9uZXh0MyA9
IC0xOwotICAgIH0KLQotICAgIG1fY29kZSArPSAzOwotfQotCi1BTFdBWVNfSU5MSU5FIHZvaWQg
TGV4ZXI6OnNoaWZ0NCgpCi17Ci0gICAgaWYgKExJS0VMWShtX2NvZGUgKyAzIDwgbV9jb2RlRW5k
KSkgewotICAgICAgICBtX2N1cnJlbnQgPSBtX2NvZGVbMF07Ci0gICAgICAgIG1fbmV4dDEgPSBt
X2NvZGVbMV07Ci0gICAgICAgIG1fbmV4dDIgPSBtX2NvZGVbMl07Ci0gICAgICAgIG1fbmV4dDMg
PSBtX2NvZGVbM107Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgbV9jdXJyZW50ID0gbV9jb2RlIDwg
bV9jb2RlRW5kID8gbV9jb2RlWzBdIDogLTE7Ci0gICAgICAgIG1fbmV4dDEgPSBtX2NvZGUgKyAx
IDwgbV9jb2RlRW5kID8gbV9jb2RlWzFdIDogLTE7Ci0gICAgICAgIG1fbmV4dDIgPSBtX2NvZGUg
KyAyIDwgbV9jb2RlRW5kID8gbV9jb2RlWzJdIDogLTE7Ci0gICAgICAgIG1fbmV4dDMgPSAtMTsK
LSAgICB9Ci0KLSAgICBtX2NvZGUgKz0gNDsKLX0KLQogdm9pZCBMZXhlcjo6c2V0Q29kZShjb25z
dCBTb3VyY2VDb2RlJiBzb3VyY2UsIFBhcnNlckFyZW5hJiBhcmVuYSkKIHsKICAgICBtX2FyZW5h
ID0gJmFyZW5hLmlkZW50aWZpZXJBcmVuYSgpOwpAQCAtMTY2LDggKzEwNywxMCBAQCB2b2lkIExl
eGVyOjpzZXRDb2RlKGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgUGFyc2VyQXJlbmEmIGFyZW5h
KQogICAgICAgICB9CiAgICAgfQogCi0gICAgLy8gUmVhZCB0aGUgZmlyc3QgY2hhcmFjdGVycyBp
bnRvIHRoZSA0LWNoYXJhY3RlciBidWZmZXIuCi0gICAgc2hpZnQ0KCk7CisgICAgaWYgKExJS0VM
WShtX2NvZGUgPCBtX2NvZGVFbmQpKQorICAgICAgICBtX2N1cnJlbnQgPSAqbV9jb2RlOworICAg
IGVsc2UKKyAgICAgICAgbV9jdXJyZW50ID0gLTE7CiAgICAgQVNTRVJUKGN1cnJlbnRPZmZzZXQo
KSA9PSBzb3VyY2Uuc3RhcnRPZmZzZXQoKSk7CiB9CiAKQEAgLTE5MCwxNSArMTMzLDUxIEBAIHZv
aWQgTGV4ZXI6OmNvcHlDb2RlV2l0aG91dEJPTXMoKQogICAgIG1fY29kZUVuZCA9IG1fY29kZVdp
dGhvdXRCT01zLmRhdGEoKSArIG1fY29kZVdpdGhvdXRCT01zLnNpemUoKTsKIH0KIAorQUxXQVlT
X0lOTElORSB2b2lkIExleGVyOjpzaGlmdCgpCit7CisgICAgLy8gRmFzdGVyIHRoYW4gYW4gaWYt
ZWxzZSBzZXF1ZW5jZQorICAgIEFTU0VSVChtX2N1cnJlbnQgIT0gLTEpOworICAgIG1fY3VycmVu
dCA9IC0xOworICAgICsrbV9jb2RlOworICAgIGlmIChMSUtFTFkobV9jb2RlIDwgbV9jb2RlRW5k
KSkKKyAgICAgICAgbV9jdXJyZW50ID0gKm1fY29kZTsKK30KKworQUxXQVlTX0lOTElORSBpbnQg
TGV4ZXI6OnBlZWsoaW50IG9mZnNldCkKK3sKKyAgICAvLyBPbmx5IHVzZSBpZiBuZWNlc3NhcnkK
KyAgICBBU1NFUlQob2Zmc2V0ID4gMCAmJiBvZmZzZXQgPCA1KTsKKyAgICBjb25zdCBVQ2hhciog
Y29kZSA9IG1fY29kZSArIG9mZnNldDsKKyAgICByZXR1cm4gKGNvZGUgPCBtX2NvZGVFbmQpID8g
KmNvZGUgOiAtMTsKK30KKworaW50IExleGVyOjpnZXRVbmljb2RlQ2hhcmFjdGVyKCkKK3sKKyAg
ICBpbnQgY2hhcjEgPSBwZWVrKDEpOworICAgIGludCBjaGFyMiA9IHBlZWsoMik7CisgICAgaW50
IGNoYXIzID0gcGVlaygzKTsKKworICAgIGlmIChVTkxJS0VMWSghaXNBU0NJSUhleERpZ2l0KG1f
Y3VycmVudCkgfHwgIWlzQVNDSUlIZXhEaWdpdChjaGFyMSkgfHwgIWlzQVNDSUlIZXhEaWdpdChj
aGFyMikgfHwgIWlzQVNDSUlIZXhEaWdpdChjaGFyMykpKQorICAgICAgICByZXR1cm4gLTE7CisK
KyAgICBpbnQgcmVzdWx0ID0gY29udmVydFVuaWNvZGUobV9jdXJyZW50LCBjaGFyMSwgY2hhcjIs
IGNoYXIzKTsKKyAgICBzaGlmdCgpOworICAgIHNoaWZ0KCk7CisgICAgc2hpZnQoKTsKKyAgICBz
aGlmdCgpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKIHZvaWQgTGV4ZXI6OnNoaWZ0TGluZVRl
cm1pbmF0b3IoKQogewogICAgIEFTU0VSVChpc0xpbmVUZXJtaW5hdG9yKG1fY3VycmVudCkpOwog
CisgICAgaW50IG1fcHJldiA9IG1fY3VycmVudDsKKyAgICBzaGlmdCgpOworCiAgICAgLy8gQWxs
b3cgYm90aCBDUkxGIGFuZCBMRkNSLgotICAgIGlmIChtX2N1cnJlbnQgKyBtX25leHQxID09ICdc
bicgKyAnXHInKQotICAgICAgICBzaGlmdDIoKTsKLSAgICBlbHNlCi0gICAgICAgIHNoaWZ0MSgp
OworICAgIGlmIChtX3ByZXYgKyBtX2N1cnJlbnQgPT0gJ1xuJyArICdccicpCisgICAgICAgIHNo
aWZ0KCk7CiAKICAgICArK21fbGluZU51bWJlcjsKIH0KQEAgLTIwOCw3ICsxODcsNyBAQCBBTFdB
WVNfSU5MSU5FIGNvbnN0IElkZW50aWZpZXIqIExleGVyOjptYWtlSWRlbnRpZmllcihjb25zdCBV
Q2hhciogY2hhcmFjdGVycywgcwogICAgIHJldHVybiAmbV9hcmVuYS0+bWFrZUlkZW50aWZpZXIo
bV9nbG9iYWxEYXRhLCBjaGFyYWN0ZXJzLCBsZW5ndGgpOwogfQogCi1pbmxpbmUgYm9vbCBMZXhl
cjo6bGFzdFRva2VuV2FzUmVzdHJLZXl3b3JkKCkgY29uc3QKK0FMV0FZU19JTkxJTkUgYm9vbCBM
ZXhlcjo6bGFzdFRva2VuV2FzUmVzdHJLZXl3b3JkKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9s
YXN0VG9rZW4gPT0gQ09OVElOVUUgfHwgbV9sYXN0VG9rZW4gPT0gQlJFQUsgfHwgbV9sYXN0VG9r
ZW4gPT0gUkVUVVJOIHx8IG1fbGFzdFRva2VuID09IFRIUk9XOwogfQpAQCAtMjg2LDcgKzI2NSw3
IEBAIGludCBMZXhlcjo6bGV4KHZvaWQqIHAxLCB2b2lkKiBwMikKIAogc3RhcnQ6CiAgICAgd2hp
bGUgKGlzV2hpdGVTcGFjZShtX2N1cnJlbnQpKQotICAgICAgICBzaGlmdDEoKTsKKyAgICAgICAg
c2hpZnQoKTsKIAogICAgIGludCBzdGFydE9mZnNldCA9IGN1cnJlbnRPZmZzZXQoKTsKIApAQCAt
MzAxLDI2NCArMjgwLDI1NiBAQCBzdGFydDoKIAogICAgIG1fZGVsaW1pdGVkID0gZmFsc2U7CiAg
ICAgc3dpdGNoIChtX2N1cnJlbnQpIHsKLSAgICAgICAgY2FzZSAnPic6Ci0gICAgICAgICAgICBp
ZiAobV9uZXh0MSA9PSAnPicgJiYgbV9uZXh0MiA9PSAnPicpIHsKLSAgICAgICAgICAgICAgICBp
ZiAobV9uZXh0MyA9PSAnPScpIHsKLSAgICAgICAgICAgICAgICAgICAgc2hpZnQ0KCk7CisgICAg
Y2FzZSAnPic6CisgICAgICAgIHNoaWZ0KCk7CisgICAgICAgIGlmIChtX2N1cnJlbnQgPT0gJz4n
KSB7CisgICAgICAgICAgICBzaGlmdCgpOworICAgICAgICAgICAgaWYgKG1fY3VycmVudCA9PSAn
PicpIHsKKyAgICAgICAgICAgICAgICBzaGlmdCgpOworICAgICAgICAgICAgICAgIGlmIChtX2N1
cnJlbnQgPT0gJz0nKSB7CisgICAgICAgICAgICAgICAgICAgIHNoaWZ0KCk7CiAgICAgICAgICAg
ICAgICAgICAgIHRva2VuID0gVVJTSElGVEVRVUFMOwogICAgICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgc2hpZnQzKCk7CiAgICAgICAg
ICAgICAgICAgdG9rZW4gPSBVUlNISUZUOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgfQotICAgICAgICAgICAgaWYgKG1fbmV4dDEgPT0gJz4nKSB7Ci0gICAgICAgICAgICAg
ICAgaWYgKG1fbmV4dDIgPT0gJz0nKSB7Ci0gICAgICAgICAgICAgICAgICAgIHNoaWZ0MygpOwot
ICAgICAgICAgICAgICAgICAgICB0b2tlbiA9IFJTSElGVEVRVUFMOwotICAgICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgc2hpZnQyKCk7
Ci0gICAgICAgICAgICAgICAgdG9rZW4gPSBSU0hJRlQ7CisgICAgICAgICAgICBpZiAobV9jdXJy
ZW50ID09ICc9JykgeworICAgICAgICAgICAgICAgIHNoaWZ0KCk7CisgICAgICAgICAgICAgICAg
dG9rZW4gPSBSU0hJRlRFUVVBTDsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIGlmIChtX25leHQxID09ICc9JykgewotICAgICAgICAgICAgICAgIHNo
aWZ0MigpOwotICAgICAgICAgICAgICAgIHRva2VuID0gR0U7Ci0gICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBzaGlmdDEoKTsKLSAgICAgICAgICAgIHRv
a2VuID0gJz4nOworICAgICAgICAgICAgdG9rZW4gPSBSU0hJRlQ7CiAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgY2FzZSAnPSc6Ci0gICAgICAgICAgICBpZiAobV9uZXh0MSA9PSAnPScpIHsK
LSAgICAgICAgICAgICAgICBpZiAobV9uZXh0MiA9PSAnPScpIHsKLSAgICAgICAgICAgICAgICAg
ICAgc2hpZnQzKCk7Ci0gICAgICAgICAgICAgICAgICAgIHRva2VuID0gU1RSRVE7Ci0gICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBz
aGlmdDIoKTsKLSAgICAgICAgICAgICAgICB0b2tlbiA9IEVRRVE7Ci0gICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBzaGlmdDEoKTsKLSAgICAgICAgICAg
IHRva2VuID0gJz0nOworICAgICAgICB9CisgICAgICAgIGlmIChtX2N1cnJlbnQgPT0gJz0nKSB7
CisgICAgICAgICAgICBzaGlmdCgpOworICAgICAgICAgICAgdG9rZW4gPSBHRTsKICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICBjYXNlICchJzoKLSAgICAgICAgICAgIGlmIChtX25leHQxID09
ICc9JykgewotICAgICAgICAgICAgICAgIGlmIChtX25leHQyID09ICc9JykgewotICAgICAgICAg
ICAgICAgICAgICBzaGlmdDMoKTsKLSAgICAgICAgICAgICAgICAgICAgdG9rZW4gPSBTVFJORVE7
Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICBzaGlmdDIoKTsKLSAgICAgICAgICAgICAgICB0b2tlbiA9IE5FOworICAgICAgICB9
CisgICAgICAgIHRva2VuID0gJz4nOworICAgICAgICBicmVhazsKKyAgICBjYXNlICc9JzoKKyAg
ICAgICAgc2hpZnQoKTsKKyAgICAgICAgaWYgKG1fY3VycmVudCA9PSAnPScpIHsKKyAgICAgICAg
ICAgIHNoaWZ0KCk7CisgICAgICAgICAgICBpZiAobV9jdXJyZW50ID09ICc9JykgeworICAgICAg
ICAgICAgICAgIHNoaWZ0KCk7CisgICAgICAgICAgICAgICAgdG9rZW4gPSBTVFJFUTsKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHNoaWZ0MSgpOwot
ICAgICAgICAgICAgdG9rZW4gPSAnISc7CisgICAgICAgICAgICB0b2tlbiA9IEVRRVE7CiAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSAnPCc6Ci0gICAgICAgICAgICBpZiAobV9uZXh0
MSA9PSAnIScgJiYgbV9uZXh0MiA9PSAnLScgJiYgbV9uZXh0MyA9PSAnLScpIHsKLSAgICAgICAg
ICAgICAgICAvLyA8IS0tIG1hcmtzIHRoZSBiZWdpbm5pbmcgb2YgYSBsaW5lIGNvbW1lbnQgKGZv
ciB3d3cgdXNhZ2UpCi0gICAgICAgICAgICAgICAgc2hpZnQ0KCk7Ci0gICAgICAgICAgICAgICAg
Z290byBpblNpbmdsZUxpbmVDb21tZW50OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYg
KG1fbmV4dDEgPT0gJzwnKSB7Ci0gICAgICAgICAgICAgICAgaWYgKG1fbmV4dDIgPT0gJz0nKSB7
Ci0gICAgICAgICAgICAgICAgICAgIHNoaWZ0MygpOwotICAgICAgICAgICAgICAgICAgICB0b2tl
biA9IExTSElGVEVRVUFMOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgc2hpZnQyKCk7Ci0gICAgICAgICAgICAgICAgdG9rZW4g
PSBMU0hJRlQ7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBpZiAobV9uZXh0MSA9PSAnPScpIHsKLSAgICAgICAgICAgICAgICBzaGlmdDIoKTsKLSAg
ICAgICAgICAgICAgICB0b2tlbiA9IExFOworICAgICAgICB9CisgICAgICAgIHRva2VuID0gJz0n
OworICAgICAgICBicmVhazsKKyAgICBjYXNlICchJzoKKyAgICAgICAgc2hpZnQoKTsKKyAgICAg
ICAgaWYgKG1fY3VycmVudCA9PSAnPScpIHsKKyAgICAgICAgICAgIHNoaWZ0KCk7CisgICAgICAg
ICAgICBpZiAobV9jdXJyZW50ID09ICc9JykgeworICAgICAgICAgICAgICAgIHNoaWZ0KCk7Cisg
ICAgICAgICAgICAgICAgdG9rZW4gPSBTVFJORVE7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICBzaGlmdDEoKTsKLSAgICAgICAgICAgIHRva2VuID0g
JzwnOworICAgICAgICAgICAgdG9rZW4gPSBORTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICBjYXNlICcrJzoKLSAgICAgICAgICAgIGlmIChtX25leHQxID09ICcrJykgewotICAgICAgICAg
ICAgICAgIHNoaWZ0MigpOwotICAgICAgICAgICAgICAgIGlmIChtX3Rlcm1pbmF0b3IpIHsKLSAg
ICAgICAgICAgICAgICAgICAgdG9rZW4gPSBBVVRPUExVU1BMVVM7Ci0gICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB0b2tlbiA9IFBM
VVNQTFVTOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAg
ICAgaWYgKG1fbmV4dDEgPT0gJz0nKSB7Ci0gICAgICAgICAgICAgICAgc2hpZnQyKCk7Ci0gICAg
ICAgICAgICAgICAgdG9rZW4gPSBQTFVTRVFVQUw7CisgICAgICAgIH0KKyAgICAgICAgdG9rZW4g
PSAnISc7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgJzwnOgorICAgICAgICBzaGlmdCgpOwor
ICAgICAgICBpZiAobV9jdXJyZW50ID09ICchJyAmJiBwZWVrKDEpID09ICctJyAmJiBwZWVrKDIp
ID09ICctJykgeworICAgICAgICAgICAgLy8gPCEtLSBtYXJrcyB0aGUgYmVnaW5uaW5nIG9mIGEg
bGluZSBjb21tZW50IChmb3Igd3d3IHVzYWdlKQorICAgICAgICAgICAgZ290byBpblNpbmdsZUxp
bmVDb21tZW50OworICAgICAgICB9CisgICAgICAgIGlmIChtX2N1cnJlbnQgPT0gJzwnKSB7Cisg
ICAgICAgICAgICBzaGlmdCgpOworICAgICAgICAgICAgaWYgKG1fY3VycmVudCA9PSAnPScpIHsK
KyAgICAgICAgICAgICAgICBzaGlmdCgpOworICAgICAgICAgICAgICAgIHRva2VuID0gTFNISUZU
RVFVQUw7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICBzaGlmdDEoKTsKLSAgICAgICAgICAgIHRva2VuID0gJysnOworICAgICAgICAgICAgdG9rZW4g
PSBMU0hJRlQ7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSAnLSc6Ci0gICAgICAg
ICAgICBpZiAobV9uZXh0MSA9PSAnLScpIHsKLSAgICAgICAgICAgICAgICBpZiAobV9hdExpbmVT
dGFydCAmJiBtX25leHQyID09ICc+JykgewotICAgICAgICAgICAgICAgICAgICBzaGlmdDMoKTsK
LSAgICAgICAgICAgICAgICAgICAgZ290byBpblNpbmdsZUxpbmVDb21tZW50OwotICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICBzaGlmdDIoKTsKLSAgICAgICAgICAgICAgICBpZiAo
bV90ZXJtaW5hdG9yKSB7Ci0gICAgICAgICAgICAgICAgICAgIHRva2VuID0gQVVUT01JTlVTTUlO
VVM7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICB0b2tlbiA9IE1JTlVTTUlOVVM7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAobV9uZXh0MSA9PSAnPScpIHsKLSAgICAgICAg
ICAgICAgICBzaGlmdDIoKTsKLSAgICAgICAgICAgICAgICB0b2tlbiA9IE1JTlVTRVFVQUw7Ci0g
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBzaGlmdDEo
KTsKLSAgICAgICAgICAgIHRva2VuID0gJy0nOworICAgICAgICB9CisgICAgICAgIGlmIChtX2N1
cnJlbnQgPT0gJz0nKSB7CisgICAgICAgICAgICBzaGlmdCgpOworICAgICAgICAgICAgdG9rZW4g
PSBMRTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlICcqJzoKLSAgICAgICAgICAg
IGlmIChtX25leHQxID09ICc9JykgewotICAgICAgICAgICAgICAgIHNoaWZ0MigpOwotICAgICAg
ICAgICAgICAgIHRva2VuID0gTVVMVEVRVUFMOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgc2hpZnQxKCk7Ci0gICAgICAgICAgICB0b2tlbiA9ICcq
JzsKKyAgICAgICAgfQorICAgICAgICB0b2tlbiA9ICc8JzsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSAnKyc6CisgICAgICAgIHNoaWZ0KCk7CisgICAgICAgIGlmIChtX2N1cnJlbnQgPT0gJysn
KSB7CisgICAgICAgICAgICBzaGlmdCgpOworICAgICAgICAgICAgdG9rZW4gPSAoIW1fdGVybWlu
YXRvcikgPyBQTFVTUExVUyA6IEFVVE9QTFVTUExVUzsKICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICBjYXNlICcvJzoKLSAgICAgICAgICAgIGlmIChtX25leHQxID09ICcvJykgewotICAgICAg
ICAgICAgICAgIHNoaWZ0MigpOworICAgICAgICB9CisgICAgICAgIGlmIChtX2N1cnJlbnQgPT0g
Jz0nKSB7CisgICAgICAgICAgICBzaGlmdCgpOworICAgICAgICAgICAgdG9rZW4gPSBQTFVTRVFV
QUw7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICB0b2tlbiA9ICcrJzsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAnLSc6CisgICAgICAgIHNoaWZ0KCk7CisgICAgICAg
IGlmIChtX2N1cnJlbnQgPT0gJy0nKSB7CisgICAgICAgICAgICBzaGlmdCgpOworICAgICAgICAg
ICAgaWYgKG1fYXRMaW5lU3RhcnQgJiYgbV9jdXJyZW50ID09ICc+JykgeworICAgICAgICAgICAg
ICAgIHNoaWZ0KCk7CiAgICAgICAgICAgICAgICAgZ290byBpblNpbmdsZUxpbmVDb21tZW50Owog
ICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKG1fbmV4dDEgPT0gJyonKQotICAgICAgICAg
ICAgICAgIGdvdG8gaW5NdWx0aUxpbmVDb21tZW50OwotICAgICAgICAgICAgaWYgKG1fbmV4dDEg
PT0gJz0nKSB7Ci0gICAgICAgICAgICAgICAgc2hpZnQyKCk7Ci0gICAgICAgICAgICAgICAgdG9r
ZW4gPSBESVZFUVVBTDsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIHNoaWZ0MSgpOwotICAgICAgICAgICAgdG9rZW4gPSAnLyc7CisgICAgICAgICAg
ICB0b2tlbiA9ICghbV90ZXJtaW5hdG9yKSA/IE1JTlVTTUlOVVMgOiBBVVRPTUlOVVNNSU5VUzsK
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlICcmJzoKLSAgICAgICAgICAgIGlmICht
X25leHQxID09ICcmJykgewotICAgICAgICAgICAgICAgIHNoaWZ0MigpOwotICAgICAgICAgICAg
ICAgIHRva2VuID0gQU5EOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgaWYgKG1fbmV4dDEgPT0gJz0nKSB7Ci0gICAgICAgICAgICAgICAgc2hpZnQy
KCk7Ci0gICAgICAgICAgICAgICAgdG9rZW4gPSBBTkRFUVVBTDsKLSAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHNoaWZ0MSgpOwotICAgICAgICAgICAg
dG9rZW4gPSAnJic7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG1fY3VycmVudCA9PSAnPScpIHsK
KyAgICAgICAgICAgIHNoaWZ0KCk7CisgICAgICAgICAgICB0b2tlbiA9IE1JTlVTRVFVQUw7CiAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSAnXic6Ci0gICAgICAgICAgICBpZiAobV9u
ZXh0MSA9PSAnPScpIHsKLSAgICAgICAgICAgICAgICBzaGlmdDIoKTsKLSAgICAgICAgICAgICAg
ICB0b2tlbiA9IFhPUkVRVUFMOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
fQotICAgICAgICAgICAgc2hpZnQxKCk7Ci0gICAgICAgICAgICB0b2tlbiA9ICdeJzsKKyAgICAg
ICAgfQorICAgICAgICB0b2tlbiA9ICctJzsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAnKic6
CisgICAgICAgIHNoaWZ0KCk7CisgICAgICAgIGlmIChtX2N1cnJlbnQgPT0gJz0nKSB7CisgICAg
ICAgICAgICBzaGlmdCgpOworICAgICAgICAgICAgdG9rZW4gPSBNVUxURVFVQUw7CiAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgY2FzZSAnJSc6Ci0gICAgICAgICAgICBpZiAobV9uZXh0MSA9
PSAnPScpIHsKLSAgICAgICAgICAgICAgICBzaGlmdDIoKTsKLSAgICAgICAgICAgICAgICB0b2tl
biA9IE1PREVRVUFMOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAg
ICAgICAgICAgc2hpZnQxKCk7Ci0gICAgICAgICAgICB0b2tlbiA9ICclJzsKKyAgICAgICAgfQor
ICAgICAgICB0b2tlbiA9ICcqJzsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAnLyc6CisgICAg
ICAgIHNoaWZ0KCk7CisgICAgICAgIGlmIChtX2N1cnJlbnQgPT0gJy8nKSB7CisgICAgICAgICAg
ICBzaGlmdCgpOworICAgICAgICAgICAgZ290byBpblNpbmdsZUxpbmVDb21tZW50OworICAgICAg
ICB9CisgICAgICAgIGlmIChtX2N1cnJlbnQgPT0gJyonKSB7CisgICAgICAgICAgICBzaGlmdCgp
OworICAgICAgICAgICAgZ290byBpbk11bHRpTGluZUNvbW1lbnQ7CisgICAgICAgIH0KKyAgICAg
ICAgaWYgKG1fY3VycmVudCA9PSAnPScpIHsKKyAgICAgICAgICAgIHNoaWZ0KCk7CisgICAgICAg
ICAgICB0b2tlbiA9IERJVkVRVUFMOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2Ug
J3wnOgotICAgICAgICAgICAgaWYgKG1fbmV4dDEgPT0gJz0nKSB7Ci0gICAgICAgICAgICAgICAg
c2hpZnQyKCk7Ci0gICAgICAgICAgICAgICAgdG9rZW4gPSBPUkVRVUFMOwotICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKG1fbmV4dDEgPT0gJ3wn
KSB7Ci0gICAgICAgICAgICAgICAgc2hpZnQyKCk7Ci0gICAgICAgICAgICAgICAgdG9rZW4gPSBP
UjsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHNo
aWZ0MSgpOwotICAgICAgICAgICAgdG9rZW4gPSAnfCc7CisgICAgICAgIH0KKyAgICAgICAgdG9r
ZW4gPSAnLyc7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgJyYnOgorICAgICAgICBzaGlmdCgp
OworICAgICAgICBpZiAobV9jdXJyZW50ID09ICcmJykgeworICAgICAgICAgICAgc2hpZnQoKTsK
KyAgICAgICAgICAgIHRva2VuID0gQU5EOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNh
c2UgJy4nOgotICAgICAgICAgICAgaWYgKGlzQVNDSUlEaWdpdChtX25leHQxKSkgewotICAgICAg
ICAgICAgICAgIHJlY29yZDgoJy4nKTsKLSAgICAgICAgICAgICAgICBzaGlmdDEoKTsKLSAgICAg
ICAgICAgICAgICBnb3RvIGluTnVtYmVyQWZ0ZXJEZWNpbWFsUG9pbnQ7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICB0b2tlbiA9ICcuJzsKLSAgICAgICAgICAgIHNoaWZ0MSgpOworICAgICAg
ICB9CisgICAgICAgIGlmIChtX2N1cnJlbnQgPT0gJz0nKSB7CisgICAgICAgICAgICBzaGlmdCgp
OworICAgICAgICAgICAgdG9rZW4gPSBBTkRFUVVBTDsKICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICBjYXNlICcsJzoKLSAgICAgICAgY2FzZSAnfic6Ci0gICAgICAgIGNhc2UgJz8nOgotICAg
ICAgICBjYXNlICc6JzoKLSAgICAgICAgY2FzZSAnKCc6Ci0gICAgICAgIGNhc2UgJyknOgotICAg
ICAgICBjYXNlICdbJzoKLSAgICAgICAgY2FzZSAnXSc6Ci0gICAgICAgICAgICB0b2tlbiA9IG1f
Y3VycmVudDsKLSAgICAgICAgICAgIHNoaWZ0MSgpOworICAgICAgICB9CisgICAgICAgIHRva2Vu
ID0gJyYnOworICAgICAgICBicmVhazsKKyAgICBjYXNlICdeJzoKKyAgICAgICAgc2hpZnQoKTsK
KyAgICAgICAgaWYgKG1fY3VycmVudCA9PSAnPScpIHsKKyAgICAgICAgICAgIHNoaWZ0KCk7Cisg
ICAgICAgICAgICB0b2tlbiA9IFhPUkVRVUFMOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IGNhc2UgJzsnOgotICAgICAgICAgICAgc2hpZnQxKCk7Ci0gICAgICAgICAgICBtX2RlbGltaXRl
ZCA9IHRydWU7Ci0gICAgICAgICAgICB0b2tlbiA9ICc7JzsKKyAgICAgICAgfQorICAgICAgICB0
b2tlbiA9ICdeJzsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAnJSc6CisgICAgICAgIHNoaWZ0
KCk7CisgICAgICAgIGlmIChtX2N1cnJlbnQgPT0gJz0nKSB7CisgICAgICAgICAgICBzaGlmdCgp
OworICAgICAgICAgICAgdG9rZW4gPSBNT0RFUVVBTDsKICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICBjYXNlICd7JzoKLSAgICAgICAgICAgIGx2YWxwLT5pbnRWYWx1ZSA9IGN1cnJlbnRPZmZz
ZXQoKTsKLSAgICAgICAgICAgIHNoaWZ0MSgpOwotICAgICAgICAgICAgdG9rZW4gPSBPUEVOQlJB
Q0U7CisgICAgICAgIH0KKyAgICAgICAgdG9rZW4gPSAnJSc7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgJ3wnOgorICAgICAgICBzaGlmdCgpOworICAgICAgICBpZiAobV9jdXJyZW50ID09ICc9
JykgeworICAgICAgICAgICAgc2hpZnQoKTsKKyAgICAgICAgICAgIHRva2VuID0gT1JFUVVBTDsK
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlICd9JzoKLSAgICAgICAgICAgIGx2YWxw
LT5pbnRWYWx1ZSA9IGN1cnJlbnRPZmZzZXQoKTsKLSAgICAgICAgICAgIHNoaWZ0MSgpOwotICAg
ICAgICAgICAgbV9kZWxpbWl0ZWQgPSB0cnVlOwotICAgICAgICAgICAgdG9rZW4gPSBDTE9TRUJS
QUNFOworICAgICAgICB9CisgICAgICAgIGlmIChtX2N1cnJlbnQgPT0gJ3wnKSB7CisgICAgICAg
ICAgICBzaGlmdCgpOworICAgICAgICAgICAgdG9rZW4gPSBPUjsKICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICBjYXNlICdcXCc6Ci0gICAgICAgICAgICBnb3RvIHN0YXJ0SWRlbnRpZmllcldp
dGhCYWNrc2xhc2g7Ci0gICAgICAgIGNhc2UgJzAnOgotICAgICAgICAgICAgZ290byBzdGFydE51
bWJlcldpdGhaZXJvRGlnaXQ7Ci0gICAgICAgIGNhc2UgJzEnOgotICAgICAgICBjYXNlICcyJzoK
LSAgICAgICAgY2FzZSAnMyc6Ci0gICAgICAgIGNhc2UgJzQnOgotICAgICAgICBjYXNlICc1JzoK
LSAgICAgICAgY2FzZSAnNic6Ci0gICAgICAgIGNhc2UgJzcnOgotICAgICAgICBjYXNlICc4JzoK
LSAgICAgICAgY2FzZSAnOSc6Ci0gICAgICAgICAgICBnb3RvIHN0YXJ0TnVtYmVyOwotICAgICAg
ICBjYXNlICciJzoKLSAgICAgICAgY2FzZSAnXCcnOgotICAgICAgICAgICAgZ290byBzdGFydFN0
cmluZzsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGlmIChpc0lkZW50U3RhcnQobV9j
dXJyZW50KSkKLSAgICAgICAgICAgICAgICBnb3RvIHN0YXJ0SWRlbnRpZmllck9yS2V5d29yZDsK
LSAgICAgICAgICAgIGlmIChpc0xpbmVUZXJtaW5hdG9yKG1fY3VycmVudCkpIHsKLSAgICAgICAg
ICAgICAgICBzaGlmdExpbmVUZXJtaW5hdG9yKCk7Ci0gICAgICAgICAgICAgICAgbV9hdExpbmVT
dGFydCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgbV90ZXJtaW5hdG9yID0gdHJ1ZTsKLSAgICAg
ICAgICAgICAgICBpZiAobGFzdFRva2VuV2FzUmVzdHJLZXl3b3JkKCkpIHsKLSAgICAgICAgICAg
ICAgICAgICAgdG9rZW4gPSAnOyc7Ci0gICAgICAgICAgICAgICAgICAgIGdvdG8gZG9uZVNlbWlj
b2xvbjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZ290byBzdGFydDsKKyAg
ICAgICAgfQorICAgICAgICB0b2tlbiA9ICd8JzsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAn
Lic6CisgICAgICAgIHNoaWZ0KCk7CisgICAgICAgIGlmIChpc0FTQ0lJRGlnaXQobV9jdXJyZW50
KSkgeworICAgICAgICAgICAgcmVjb3JkOCgnLicpOworICAgICAgICAgICAgZ290byBpbk51bWJl
ckFmdGVyRGVjaW1hbFBvaW50OworICAgICAgICB9CisgICAgICAgIHRva2VuID0gJy4nOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlICcsJzoKKyAgICBjYXNlICd+JzoKKyAgICBjYXNlICc/JzoK
KyAgICBjYXNlICc6JzoKKyAgICBjYXNlICcoJzoKKyAgICBjYXNlICcpJzoKKyAgICBjYXNlICdb
JzoKKyAgICBjYXNlICddJzoKKyAgICAgICAgdG9rZW4gPSBtX2N1cnJlbnQ7CisgICAgICAgIHNo
aWZ0KCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgJzsnOgorICAgICAgICBtX2RlbGltaXRl
ZCA9IHRydWU7CisgICAgICAgIHNoaWZ0KCk7CisgICAgICAgIHRva2VuID0gJzsnOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlICd7JzoKKyAgICAgICAgbHZhbHAtPmludFZhbHVlID0gY3VycmVu
dE9mZnNldCgpOworICAgICAgICBzaGlmdCgpOworICAgICAgICB0b2tlbiA9IE9QRU5CUkFDRTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAnfSc6CisgICAgICAgIGx2YWxwLT5pbnRWYWx1ZSA9
IGN1cnJlbnRPZmZzZXQoKTsKKyAgICAgICAgbV9kZWxpbWl0ZWQgPSB0cnVlOworICAgICAgICBz
aGlmdCgpOworICAgICAgICB0b2tlbiA9IENMT1NFQlJBQ0U7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgJ1xcJzoKKyAgICAgICAgZ290byBzdGFydElkZW50aWZpZXJXaXRoQmFja3NsYXNoOwor
ICAgIGNhc2UgJzAnOgorICAgICAgICBnb3RvIHN0YXJ0TnVtYmVyV2l0aFplcm9EaWdpdDsKKyAg
ICBjYXNlICcxJzoKKyAgICBjYXNlICcyJzoKKyAgICBjYXNlICczJzoKKyAgICBjYXNlICc0JzoK
KyAgICBjYXNlICc1JzoKKyAgICBjYXNlICc2JzoKKyAgICBjYXNlICc3JzoKKyAgICBjYXNlICc4
JzoKKyAgICBjYXNlICc5JzoKKyAgICAgICAgZ290byBzdGFydE51bWJlcjsKKyAgICBjYXNlICci
JzoKKyAgICBjYXNlICdcJyc6CisgICAgICAgIGdvdG8gc3RhcnRTdHJpbmc7CisgICAgZGVmYXVs
dDoKKyAgICAgICAgaWYgKGlzSWRlbnRTdGFydChtX2N1cnJlbnQpKQorICAgICAgICAgICAgZ290
byBzdGFydElkZW50aWZpZXJPcktleXdvcmQ7CisgICAgICAgIGlmIChpc0xpbmVUZXJtaW5hdG9y
KG1fY3VycmVudCkpIHsKKyAgICAgICAgICAgIHNoaWZ0TGluZVRlcm1pbmF0b3IoKTsKKyAgICAg
ICAgICAgIG1fYXRMaW5lU3RhcnQgPSB0cnVlOworICAgICAgICAgICAgbV90ZXJtaW5hdG9yID0g
dHJ1ZTsKKyAgICAgICAgICAgIGlmIChsYXN0VG9rZW5XYXNSZXN0cktleXdvcmQoKSkgeworICAg
ICAgICAgICAgICAgIHRva2VuID0gJzsnOworICAgICAgICAgICAgICAgIGdvdG8gZG9uZVNlbWlj
b2xvbjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGdvdG8gcmV0dXJuRXJyb3I7CisgICAg
ICAgICAgICBnb3RvIHN0YXJ0OworICAgICAgICB9CisgICAgICAgIGdvdG8gcmV0dXJuRXJyb3I7
CiAgICAgfQogCiAgICAgbV9hdExpbmVTdGFydCA9IGZhbHNlOwpAQCAtNTY2LDcgKzUzNyw3IEBA
IHN0YXJ0OgogCiBzdGFydFN0cmluZzogewogICAgIGludCBzdHJpbmdRdW90ZUNoYXJhY3RlciA9
IG1fY3VycmVudDsKLSAgICBzaGlmdDEoKTsKKyAgICBzaGlmdCgpOwogCiAgICAgY29uc3QgVUNo
YXIqIHN0cmluZ1N0YXJ0ID0gY3VycmVudENoYXJhY3RlcigpOwogICAgIHdoaWxlIChtX2N1cnJl
bnQgIT0gc3RyaW5nUXVvdGVDaGFyYWN0ZXIpIHsKQEAgLTU3NywxMCArNTQ4LDEwIEBAIHN0YXJ0
U3RyaW5nOiB7CiAgICAgICAgICAgICBtX2J1ZmZlcjE2LmFwcGVuZChzdHJpbmdTdGFydCwgY3Vy
cmVudENoYXJhY3RlcigpIC0gc3RyaW5nU3RhcnQpOwogICAgICAgICAgICAgZ290byBpblN0cmlu
ZzsKICAgICAgICAgfQotICAgICAgICBzaGlmdDEoKTsKKyAgICAgICAgc2hpZnQoKTsKICAgICB9
CiAgICAgbHZhbHAtPmlkZW50ID0gbWFrZUlkZW50aWZpZXIoc3RyaW5nU3RhcnQsIGN1cnJlbnRD
aGFyYWN0ZXIoKSAtIHN0cmluZ1N0YXJ0KTsKLSAgICBzaGlmdDEoKTsKKyAgICBzaGlmdCgpOwog
ICAgIG1fYXRMaW5lU3RhcnQgPSBmYWxzZTsKICAgICBtX2RlbGltaXRlZCA9IGZhbHNlOwogICAg
IHRva2VuID0gU1RSSU5HOwpAQCAtNTk1LDE3ICs1NjYsMTkgQEAgaW5TdHJpbmc6CiAgICAgICAg
IGlmIChVTkxJS0VMWShtX2N1cnJlbnQgPT0gLTEpKQogICAgICAgICAgICAgZ290byByZXR1cm5F
cnJvcjsKICAgICAgICAgcmVjb3JkMTYobV9jdXJyZW50KTsKLSAgICAgICAgc2hpZnQxKCk7Cisg
ICAgICAgIHNoaWZ0KCk7CiAgICAgfQogICAgIGdvdG8gZG9uZVN0cmluZzsKIAogaW5TdHJpbmdF
c2NhcGVTZXF1ZW5jZToKLSAgICBzaGlmdDEoKTsKKyAgICBzaGlmdCgpOwogICAgIGlmIChtX2N1
cnJlbnQgPT0gJ3gnKSB7Ci0gICAgICAgIHNoaWZ0MSgpOwotICAgICAgICBpZiAoaXNBU0NJSUhl
eERpZ2l0KG1fY3VycmVudCkgJiYgaXNBU0NJSUhleERpZ2l0KG1fbmV4dDEpKSB7Ci0gICAgICAg
ICAgICByZWNvcmQxNihjb252ZXJ0SGV4KG1fY3VycmVudCwgbV9uZXh0MSkpOwotICAgICAgICAg
ICAgc2hpZnQyKCk7CisgICAgICAgIHNoaWZ0KCk7CisgICAgICAgIGlmIChpc0FTQ0lJSGV4RGln
aXQobV9jdXJyZW50KSAmJiBpc0FTQ0lJSGV4RGlnaXQocGVlaygxKSkpIHsKKyAgICAgICAgICAg
IGludCBwcmV2ID0gbV9jdXJyZW50OworICAgICAgICAgICAgc2hpZnQoKTsKKyAgICAgICAgICAg
IHJlY29yZDE2KGNvbnZlcnRIZXgocHJldiwgbV9jdXJyZW50KSk7CisgICAgICAgICAgICBzaGlm
dCgpOwogICAgICAgICAgICAgZ290byBpblN0cmluZzsKICAgICAgICAgfQogICAgICAgICByZWNv
cmQxNigneCcpOwpAQCAtNjE0LDEwICs1ODcsMTAgQEAgaW5TdHJpbmdFc2NhcGVTZXF1ZW5jZToK
ICAgICAgICAgZ290byBpblN0cmluZzsKICAgICB9CiAgICAgaWYgKG1fY3VycmVudCA9PSAndScp
IHsKLSAgICAgICAgc2hpZnQxKCk7Ci0gICAgICAgIGlmIChpc0FTQ0lJSGV4RGlnaXQobV9jdXJy
ZW50KSAmJiBpc0FTQ0lJSGV4RGlnaXQobV9uZXh0MSkgJiYgaXNBU0NJSUhleERpZ2l0KG1fbmV4
dDIpICYmIGlzQVNDSUlIZXhEaWdpdChtX25leHQzKSkgewotICAgICAgICAgICAgcmVjb3JkMTYo
Y29udmVydFVuaWNvZGUobV9jdXJyZW50LCBtX25leHQxLCBtX25leHQyLCBtX25leHQzKSk7Ci0g
ICAgICAgICAgICBzaGlmdDQoKTsKKyAgICAgICAgc2hpZnQoKTsKKyAgICAgICAgdG9rZW4gPSBn
ZXRVbmljb2RlQ2hhcmFjdGVyKCk7CisgICAgICAgIGlmICh0b2tlbiAhPSAtMSkgeworICAgICAg
ICAgICAgcmVjb3JkMTYodG9rZW4pOwogICAgICAgICAgICAgZ290byBpblN0cmluZzsKICAgICAg
ICAgfQogICAgICAgICBpZiAobV9jdXJyZW50ID09IHN0cmluZ1F1b3RlQ2hhcmFjdGVyKSB7CkBA
IC02MjcsMTggKzYwMCwyMSBAQCBpblN0cmluZ0VzY2FwZVNlcXVlbmNlOgogICAgICAgICBnb3Rv
IHJldHVybkVycm9yOwogICAgIH0KICAgICBpZiAoaXNBU0NJSU9jdGFsRGlnaXQobV9jdXJyZW50
KSkgewotICAgICAgICBpZiAobV9jdXJyZW50ID49ICcwJyAmJiBtX2N1cnJlbnQgPD0gJzMnICYm
IGlzQVNDSUlPY3RhbERpZ2l0KG1fbmV4dDEpICYmIGlzQVNDSUlPY3RhbERpZ2l0KG1fbmV4dDIp
KSB7Ci0gICAgICAgICAgICByZWNvcmQxNigobV9jdXJyZW50IC0gJzAnKSAqIDY0ICsgKG1fbmV4
dDEgLSAnMCcpICogOCArIG1fbmV4dDIgLSAnMCcpOwotICAgICAgICAgICAgc2hpZnQzKCk7Cisg
ICAgICAgIGludCBjaGFyMSA9IG1fY3VycmVudDsKKyAgICAgICAgc2hpZnQoKTsKKyAgICAgICAg
aWYgKGNoYXIxID49ICcwJyAmJiBjaGFyMSA8PSAnMycgJiYgaXNBU0NJSU9jdGFsRGlnaXQobV9j
dXJyZW50KSAmJiBpc0FTQ0lJT2N0YWxEaWdpdChwZWVrKDEpKSkgeworICAgICAgICAgICAgaW50
IGNoYXIyID0gbV9jdXJyZW50OworICAgICAgICAgICAgc2hpZnQoKTsKKyAgICAgICAgICAgIHJl
Y29yZDE2KChjaGFyMSAtICcwJykgKiA2NCArIChjaGFyMiAtICcwJykgKiA4ICsgbV9jdXJyZW50
IC0gJzAnKTsKKyAgICAgICAgICAgIHNoaWZ0KCk7CiAgICAgICAgICAgICBnb3RvIGluU3RyaW5n
OwogICAgICAgICB9Ci0gICAgICAgIGlmIChpc0FTQ0lJT2N0YWxEaWdpdChtX25leHQxKSkgewot
ICAgICAgICAgICAgcmVjb3JkMTYoKG1fY3VycmVudCAtICcwJykgKiA4ICsgbV9uZXh0MSAtICcw
Jyk7Ci0gICAgICAgICAgICBzaGlmdDIoKTsKKyAgICAgICAgaWYgKGlzQVNDSUlPY3RhbERpZ2l0
KG1fY3VycmVudCkpIHsKKyAgICAgICAgICAgIHJlY29yZDE2KChjaGFyMSAtICcwJykgKiA4ICsg
bV9jdXJyZW50IC0gJzAnKTsKKyAgICAgICAgICAgIHNoaWZ0KCk7CiAgICAgICAgICAgICBnb3Rv
IGluU3RyaW5nOwogICAgICAgICB9Ci0gICAgICAgIHJlY29yZDE2KG1fY3VycmVudCAtICcwJyk7
Ci0gICAgICAgIHNoaWZ0MSgpOworICAgICAgICByZWNvcmQxNihjaGFyMSAtICcwJyk7CiAgICAg
ICAgIGdvdG8gaW5TdHJpbmc7CiAgICAgfQogICAgIGlmIChpc0xpbmVUZXJtaW5hdG9yKG1fY3Vy
cmVudCkpIHsKQEAgLTY0OCwyOCArNjI0LDMxIEBAIGluU3RyaW5nRXNjYXBlU2VxdWVuY2U6CiAg
ICAgaWYgKG1fY3VycmVudCA9PSAtMSkKICAgICAgICAgZ290byByZXR1cm5FcnJvcjsKICAgICBy
ZWNvcmQxNihzaW5nbGVFc2NhcGUobV9jdXJyZW50KSk7Ci0gICAgc2hpZnQxKCk7CisgICAgc2hp
ZnQoKTsKICAgICBnb3RvIGluU3RyaW5nOwogfQogCi1zdGFydElkZW50aWZpZXJXaXRoQmFja3Ns
YXNoOgotICAgIHNoaWZ0MSgpOworc3RhcnRJZGVudGlmaWVyV2l0aEJhY2tzbGFzaDogeworICAg
IHNoaWZ0KCk7CiAgICAgaWYgKFVOTElLRUxZKG1fY3VycmVudCAhPSAndScpKQogICAgICAgICBn
b3RvIHJldHVybkVycm9yOwotICAgIHNoaWZ0MSgpOwotICAgIGlmIChVTkxJS0VMWSghaXNBU0NJ
SUhleERpZ2l0KG1fY3VycmVudCkgfHwgIWlzQVNDSUlIZXhEaWdpdChtX25leHQxKSB8fCAhaXNB
U0NJSUhleERpZ2l0KG1fbmV4dDIpIHx8ICFpc0FTQ0lJSGV4RGlnaXQobV9uZXh0MykpKQorICAg
IHNoaWZ0KCk7CisKKyAgICB0b2tlbiA9IGdldFVuaWNvZGVDaGFyYWN0ZXIoKTsKKyAgICBpZiAo
VU5MSUtFTFkodG9rZW4gPT0gLTEpKQogICAgICAgICBnb3RvIHJldHVybkVycm9yOwotICAgIHRv
a2VuID0gY29udmVydFVuaWNvZGUobV9jdXJyZW50LCBtX25leHQxLCBtX25leHQyLCBtX25leHQz
KTsKICAgICBpZiAoVU5MSUtFTFkoIWlzSWRlbnRTdGFydCh0b2tlbikpKQogICAgICAgICBnb3Rv
IHJldHVybkVycm9yOwogICAgIGdvdG8gaW5JZGVudGlmaWVyQWZ0ZXJDaGFyYWN0ZXJDaGVjazsK
K30KIAogc3RhcnRJZGVudGlmaWVyT3JLZXl3b3JkOiB7CiAgICAgY29uc3QgVUNoYXIqIGlkZW50
aWZpZXJTdGFydCA9IGN1cnJlbnRDaGFyYWN0ZXIoKTsKLSAgICBzaGlmdDEoKTsKKyAgICBzaGlm
dCgpOwogICAgIHdoaWxlIChpc0lkZW50UGFydChtX2N1cnJlbnQpKQotICAgICAgICBzaGlmdDEo
KTsKKyAgICAgICAgc2hpZnQoKTsKICAgICBpZiAoTElLRUxZKG1fY3VycmVudCAhPSAnXFwnKSkg
eworICAgICAgICAvLyBGYXN0IGNhc2UgZm9yIGlkZW50cyB3aGljaCBkb2VzIG5vdCBjb250YWlu
IFx1Q0NDQyBjaGFyYWN0ZXJzCiAgICAgICAgIGx2YWxwLT5pZGVudCA9IG1ha2VJZGVudGlmaWVy
KGlkZW50aWZpZXJTdGFydCwgY3VycmVudENoYXJhY3RlcigpIC0gaWRlbnRpZmllclN0YXJ0KTsK
ICAgICAgICAgZ290byBkb25lSWRlbnRpZmllck9yS2V5d29yZDsKICAgICB9CkBAIC02NzcsMjIg
KzY1NiwyMSBAQCBzdGFydElkZW50aWZpZXJPcktleXdvcmQ6IHsKIH0KIAogICAgIGRvIHsKLSAg
ICAgICAgc2hpZnQxKCk7CisgICAgICAgIHNoaWZ0KCk7CiAgICAgICAgIGlmIChVTkxJS0VMWSht
X2N1cnJlbnQgIT0gJ3UnKSkKICAgICAgICAgICAgIGdvdG8gcmV0dXJuRXJyb3I7Ci0gICAgICAg
IHNoaWZ0MSgpOwotICAgICAgICBpZiAoVU5MSUtFTFkoIWlzQVNDSUlIZXhEaWdpdChtX2N1cnJl
bnQpIHx8ICFpc0FTQ0lJSGV4RGlnaXQobV9uZXh0MSkgfHwgIWlzQVNDSUlIZXhEaWdpdChtX25l
eHQyKSB8fCAhaXNBU0NJSUhleERpZ2l0KG1fbmV4dDMpKSkKKyAgICAgICAgc2hpZnQoKTsKKyAg
ICAgICAgdG9rZW4gPSBnZXRVbmljb2RlQ2hhcmFjdGVyKCk7CisgICAgICAgIGlmIChVTkxJS0VM
WSh0b2tlbiA9PSAtMSkpCiAgICAgICAgICAgICBnb3RvIHJldHVybkVycm9yOwotICAgICAgICB0
b2tlbiA9IGNvbnZlcnRVbmljb2RlKG1fY3VycmVudCwgbV9uZXh0MSwgbV9uZXh0MiwgbV9uZXh0
Myk7CiAgICAgICAgIGlmIChVTkxJS0VMWSghaXNJZGVudFBhcnQodG9rZW4pKSkKICAgICAgICAg
ICAgIGdvdG8gcmV0dXJuRXJyb3I7CiBpbklkZW50aWZpZXJBZnRlckNoYXJhY3RlckNoZWNrOgog
ICAgICAgICByZWNvcmQxNih0b2tlbik7Ci0gICAgICAgIHNoaWZ0NCgpOwogCiAgICAgICAgIHdo
aWxlIChpc0lkZW50UGFydChtX2N1cnJlbnQpKSB7CiAgICAgICAgICAgICByZWNvcmQxNihtX2N1
cnJlbnQpOwotICAgICAgICAgICAgc2hpZnQxKCk7CisgICAgICAgICAgICBzaGlmdCgpOwogICAg
ICAgICB9CiAgICAgfSB3aGlsZSAoVU5MSUtFTFkobV9jdXJyZW50ID09ICdcXCcpKTsKICAgICBn
b3RvIGRvbmVJZGVudGlmaWVyOwpAQCAtNzAxLDcgKzY3OSw3IEBAIGluU2luZ2xlTGluZUNvbW1l
bnQ6CiAgICAgd2hpbGUgKCFpc0xpbmVUZXJtaW5hdG9yKG1fY3VycmVudCkpIHsKICAgICAgICAg
aWYgKFVOTElLRUxZKG1fY3VycmVudCA9PSAtMSkpCiAgICAgICAgICAgICByZXR1cm4gMDsKLSAg
ICAgICAgc2hpZnQxKCk7CisgICAgICAgIHNoaWZ0KCk7CiAgICAgfQogICAgIHNoaWZ0TGluZVRl
cm1pbmF0b3IoKTsKICAgICBtX2F0TGluZVN0YXJ0ID0gdHJ1ZTsKQEAgLTcxMSwzNiArNjg5LDQz
IEBAIGluU2luZ2xlTGluZUNvbW1lbnQ6CiAgICAgZ290byBzdGFydDsKIAogaW5NdWx0aUxpbmVD
b21tZW50OgotICAgIHNoaWZ0MigpOwotICAgIHdoaWxlIChtX2N1cnJlbnQgIT0gJyonIHx8IG1f
bmV4dDEgIT0gJy8nKSB7CisgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgaWYgKFVOTElLRUxZ
KG1fY3VycmVudCA9PSAnKicpKSB7CisgICAgICAgICAgICBzaGlmdCgpOworICAgICAgICAgICAg
aWYgKG1fY3VycmVudCA9PSAnLycpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICBpZiAobV9jdXJyZW50ID09ICcqJykKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgfQorCiAgICAgICAgIGlmIChpc0xpbmVUZXJtaW5hdG9yKG1fY3VycmVudCkpCiAgICAgICAg
ICAgICBzaGlmdExpbmVUZXJtaW5hdG9yKCk7CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAg
c2hpZnQxKCk7CisgICAgICAgICAgICBzaGlmdCgpOwogICAgICAgICAgICAgaWYgKFVOTElLRUxZ
KG1fY3VycmVudCA9PSAtMSkpCiAgICAgICAgICAgICAgICAgZ290byByZXR1cm5FcnJvcjsKICAg
ICAgICAgfQogICAgIH0KLSAgICBzaGlmdDIoKTsKKyAgICBzaGlmdCgpOwogICAgIG1fYXRMaW5l
U3RhcnQgPSBmYWxzZTsKICAgICBnb3RvIHN0YXJ0OwogCiBzdGFydE51bWJlcldpdGhaZXJvRGln
aXQ6Ci0gICAgc2hpZnQxKCk7Ci0gICAgaWYgKChtX2N1cnJlbnQgfCAweDIwKSA9PSAneCcgJiYg
aXNBU0NJSUhleERpZ2l0KG1fbmV4dDEpKSB7Ci0gICAgICAgIHNoaWZ0MSgpOworICAgIHNoaWZ0
KCk7CisgICAgaWYgKChtX2N1cnJlbnQgfCAweDIwKSA9PSAneCcgJiYgaXNBU0NJSUhleERpZ2l0
KHBlZWsoMSkpKSB7CisgICAgICAgIHNoaWZ0KCk7CiAgICAgICAgIGdvdG8gaW5IZXg7CiAgICAg
fQogICAgIGlmIChtX2N1cnJlbnQgPT0gJy4nKSB7CiAgICAgICAgIHJlY29yZDgoJzAnKTsKICAg
ICAgICAgcmVjb3JkOCgnLicpOwotICAgICAgICBzaGlmdDEoKTsKKyAgICAgICAgc2hpZnQoKTsK
ICAgICAgICAgZ290byBpbk51bWJlckFmdGVyRGVjaW1hbFBvaW50OwogICAgIH0KICAgICBpZiAo
KG1fY3VycmVudCB8IDB4MjApID09ICdlJykgewogICAgICAgICByZWNvcmQ4KCcwJyk7CiAgICAg
ICAgIHJlY29yZDgoJ2UnKTsKLSAgICAgICAgc2hpZnQxKCk7CisgICAgICAgIHNoaWZ0KCk7CiAg
ICAgICAgIGdvdG8gaW5FeHBvbmVudEluZGljYXRvcjsKICAgICB9CiAgICAgaWYgKGlzQVNDSUlP
Y3RhbERpZ2l0KG1fY3VycmVudCkpCkBAIC03NTMsMTEgKzczOCwxMSBAQCBzdGFydE51bWJlcldp
dGhaZXJvRGlnaXQ6CiBpbk51bWJlckFmdGVyRGVjaW1hbFBvaW50OgogICAgIHdoaWxlIChpc0FT
Q0lJRGlnaXQobV9jdXJyZW50KSkgewogICAgICAgICByZWNvcmQ4KG1fY3VycmVudCk7Ci0gICAg
ICAgIHNoaWZ0MSgpOworICAgICAgICBzaGlmdCgpOwogICAgIH0KICAgICBpZiAoKG1fY3VycmVu
dCB8IDB4MjApID09ICdlJykgewogICAgICAgICByZWNvcmQ4KCdlJyk7Ci0gICAgICAgIHNoaWZ0
MSgpOworICAgICAgICBzaGlmdCgpOwogICAgICAgICBnb3RvIGluRXhwb25lbnRJbmRpY2F0b3I7
CiAgICAgfQogICAgIGdvdG8gZG9uZU51bWJlcjsKQEAgLTc2NSwyMCArNzUwLDIwIEBAIGluTnVt
YmVyQWZ0ZXJEZWNpbWFsUG9pbnQ6CiBpbkV4cG9uZW50SW5kaWNhdG9yOgogICAgIGlmIChtX2N1
cnJlbnQgPT0gJysnIHx8IG1fY3VycmVudCA9PSAnLScpIHsKICAgICAgICAgcmVjb3JkOChtX2N1
cnJlbnQpOwotICAgICAgICBzaGlmdDEoKTsKKyAgICAgICAgc2hpZnQoKTsKICAgICB9CiAgICAg
aWYgKCFpc0FTQ0lJRGlnaXQobV9jdXJyZW50KSkKICAgICAgICAgZ290byByZXR1cm5FcnJvcjsK
ICAgICBkbyB7CiAgICAgICAgIHJlY29yZDgobV9jdXJyZW50KTsKLSAgICAgICAgc2hpZnQxKCk7
CisgICAgICAgIHNoaWZ0KCk7CiAgICAgfSB3aGlsZSAoaXNBU0NJSURpZ2l0KG1fY3VycmVudCkp
OwogICAgIGdvdG8gZG9uZU51bWJlcjsKIAogaW5PY3RhbDogewogICAgIGRvIHsKICAgICAgICAg
cmVjb3JkOChtX2N1cnJlbnQpOwotICAgICAgICBzaGlmdDEoKTsKKyAgICAgICAgc2hpZnQoKTsK
ICAgICB9IHdoaWxlIChpc0FTQ0lJT2N0YWxEaWdpdChtX2N1cnJlbnQpKTsKICAgICBpZiAoaXNB
U0NJSURpZ2l0KG1fY3VycmVudCkpCiAgICAgICAgIGdvdG8gc3RhcnROdW1iZXI7CkBAIC04MDIs
NyArNzg3LDcgQEAgaW5PY3RhbDogewogaW5IZXg6IHsKICAgICBkbyB7CiAgICAgICAgIHJlY29y
ZDgobV9jdXJyZW50KTsKLSAgICAgICAgc2hpZnQxKCk7CisgICAgICAgIHNoaWZ0KCk7CiAgICAg
fSB3aGlsZSAoaXNBU0NJSUhleERpZ2l0KG1fY3VycmVudCkpOwogCiAgICAgZG91YmxlIGR2YWwg
PSAwOwpAQCAtODIzLDE5ICs4MDgsMTkgQEAgaW5IZXg6IHsKIAogc3RhcnROdW1iZXI6CiAgICAg
cmVjb3JkOChtX2N1cnJlbnQpOwotICAgIHNoaWZ0MSgpOworICAgIHNoaWZ0KCk7CiAgICAgd2hp
bGUgKGlzQVNDSUlEaWdpdChtX2N1cnJlbnQpKSB7CiAgICAgICAgIHJlY29yZDgobV9jdXJyZW50
KTsKLSAgICAgICAgc2hpZnQxKCk7CisgICAgICAgIHNoaWZ0KCk7CiAgICAgfQogICAgIGlmICht
X2N1cnJlbnQgPT0gJy4nKSB7CiAgICAgICAgIHJlY29yZDgoJy4nKTsKLSAgICAgICAgc2hpZnQx
KCk7CisgICAgICAgIHNoaWZ0KCk7CiAgICAgICAgIGdvdG8gaW5OdW1iZXJBZnRlckRlY2ltYWxQ
b2ludDsKICAgICB9CiAgICAgaWYgKChtX2N1cnJlbnQgfCAweDIwKSA9PSAnZScpIHsKICAgICAg
ICAgcmVjb3JkOCgnZScpOwotICAgICAgICBzaGlmdDEoKTsKKyAgICAgICAgc2hpZnQoKTsKICAg
ICAgICAgZ290byBpbkV4cG9uZW50SW5kaWNhdG9yOwogICAgIH0KIApAQCAtODgzLDcgKzg2OCw3
IEBAIGRvbmVJZGVudGlmaWVyT3JLZXl3b3JkOiB7CiAKIGRvbmVTdHJpbmc6CiAgICAgLy8gQXRv
bWl6ZSBjb25zdGFudCBzdHJpbmdzIGluIGNhc2UgdGhleSdyZSBsYXRlciB1c2VkIGluIHByb3Bl
cnR5IGxvb2t1cC4KLSAgICBzaGlmdDEoKTsKKyAgICBzaGlmdCgpOwogICAgIG1fYXRMaW5lU3Rh
cnQgPSBmYWxzZTsKICAgICBtX2RlbGltaXRlZCA9IGZhbHNlOwogICAgIGx2YWxwLT5pZGVudCA9
IG1ha2VJZGVudGlmaWVyKG1fYnVmZmVyMTYuZGF0YSgpLCBtX2J1ZmZlcjE2LnNpemUoKSk7CkBA
IC05MjksNyArOTE0LDcgQEAgYm9vbCBMZXhlcjo6c2NhblJlZ0V4cChjb25zdCBJZGVudGlmaWVy
KiYgcGF0dGVybiwgY29uc3QgSWRlbnRpZmllciomIGZsYWdzLCBVQ2gKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgfQogCi0gICAgICAgIHNoaWZ0MSgpOworICAgICAgICBzaGlm
dCgpOwogCiAgICAgICAgIGlmIChjdXJyZW50ID09ICcvJyAmJiAhbGFzdFdhc0VzY2FwZSAmJiAh
aW5CcmFja2V0cykKICAgICAgICAgICAgIGJyZWFrOwpAQCAtOTU5LDcgKzk0NCw3IEBAIGJvb2wg
TGV4ZXI6OnNjYW5SZWdFeHAoY29uc3QgSWRlbnRpZmllciomIHBhdHRlcm4sIGNvbnN0IElkZW50
aWZpZXIqJiBmbGFncywgVUNoCiAKICAgICB3aGlsZSAoaXNJZGVudFBhcnQobV9jdXJyZW50KSkg
ewogICAgICAgICByZWNvcmQxNihtX2N1cnJlbnQpOwotICAgICAgICBzaGlmdDEoKTsKKyAgICAg
ICAgc2hpZnQoKTsKICAgICB9CiAKICAgICBmbGFncyA9IG1ha2VJZGVudGlmaWVyKG1fYnVmZmVy
MTYuZGF0YSgpLCBtX2J1ZmZlcjE2LnNpemUoKSk7CkBAIC05NzksNyArOTY0LDcgQEAgYm9vbCBM
ZXhlcjo6c2tpcFJlZ0V4cCgpCiAgICAgICAgIGlmIChpc0xpbmVUZXJtaW5hdG9yKGN1cnJlbnQp
IHx8IGN1cnJlbnQgPT0gLTEpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAg
c2hpZnQxKCk7CisgICAgICAgIHNoaWZ0KCk7CiAKICAgICAgICAgaWYgKGN1cnJlbnQgPT0gJy8n
ICYmICFsYXN0V2FzRXNjYXBlICYmICFpbkJyYWNrZXRzKQogICAgICAgICAgICAgYnJlYWs7CkBA
IC0xMDAzLDcgKzk4OCw3IEBAIGJvb2wgTGV4ZXI6OnNraXBSZWdFeHAoKQogICAgIH0KIAogICAg
IHdoaWxlIChpc0lkZW50UGFydChtX2N1cnJlbnQpKQotICAgICAgICBzaGlmdDEoKTsKKyAgICAg
ICAgc2hpZnQoKTsKIAogICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL0xleGVyLmggYi9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuaAppbmRl
eCBmMTk3MDkzLi5lYzI1NGNlIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4
ZXIuaAorKysgYi9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuaApAQCAtMSw2ICsxLDcgQEAK
IC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDAgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2Rl
Lm9yZykKICAqICBDb3B5cmlnaHQgKEMpIDIwMDIsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIw
MDcsIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHly
aWdodCAoQykgMjAxMCBab2x0YW4gSGVyY3plZyAoemhlcmN6ZWdAaW5mLnUtc3plZ2VkLmh1KQog
ICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTI2LDYgKzI3LDcgQEAKICNpbmNsdWRlICJQYXJzZXJB
cmVuYS5oIgogI2luY2x1ZGUgIlNvdXJjZUNvZGUuaCIKICNpbmNsdWRlIDx3dGYvQVNDSUlDVHlw
ZS5oPgorI2luY2x1ZGUgPHd0Zi9BbHdheXNJbmxpbmUuaD4KICNpbmNsdWRlIDx3dGYvU2VnbWVu
dGVkVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi91bmlj
b2RlL1VuaWNvZGUuaD4KQEAgLTY2LDI0ICs2OCwyMyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgTGV4ZXIoSlNHbG9iYWxEYXRhKik7CiAgICAgICAgIH5MZXhlcigpOwogCi0gICAgICAgIHZv
aWQgc2hpZnQxKCk7Ci0gICAgICAgIHZvaWQgc2hpZnQyKCk7Ci0gICAgICAgIHZvaWQgc2hpZnQz
KCk7Ci0gICAgICAgIHZvaWQgc2hpZnQ0KCk7Ci0gICAgICAgIHZvaWQgc2hpZnRMaW5lVGVybWlu
YXRvcigpOwotCiAgICAgICAgIHZvaWQgcmVjb3JkOChpbnQpOwogICAgICAgICB2b2lkIHJlY29y
ZDE2KGludCk7CiAgICAgICAgIHZvaWQgcmVjb3JkMTYoVUNoYXIpOwogCiAgICAgICAgIHZvaWQg
Y29weUNvZGVXaXRob3V0Qk9NcygpOwogCi0gICAgICAgIGludCBjdXJyZW50T2Zmc2V0KCkgY29u
c3Q7Ci0gICAgICAgIGNvbnN0IFVDaGFyKiBjdXJyZW50Q2hhcmFjdGVyKCkgY29uc3Q7CisgICAg
ICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzaGlmdCgpOworICAgICAgICBBTFdBWVNfSU5MSU5FIGlu
dCBwZWVrKGludCBvZmZzZXQpOworICAgICAgICBpbnQgZ2V0VW5pY29kZUNoYXJhY3RlcigpOwor
ICAgICAgICB2b2lkIHNoaWZ0TGluZVRlcm1pbmF0b3IoKTsKKworICAgICAgICBBTFdBWVNfSU5M
SU5FIGNvbnN0IFVDaGFyKiBjdXJyZW50Q2hhcmFjdGVyKCkgY29uc3Q7CisgICAgICAgIEFMV0FZ
U19JTkxJTkUgaW50IGN1cnJlbnRPZmZzZXQoKSBjb25zdDsKIAotICAgICAgICBjb25zdCBJZGVu
dGlmaWVyKiBtYWtlSWRlbnRpZmllcihjb25zdCBVQ2hhciogY2hhcmFjdGVycywgc2l6ZV90IGxl
bmd0aCk7CisgICAgICAgIEFMV0FZU19JTkxJTkUgY29uc3QgSWRlbnRpZmllciogbWFrZUlkZW50
aWZpZXIoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHNpemVfdCBsZW5ndGgpOwogCi0gICAgICAg
IGJvb2wgbGFzdFRva2VuV2FzUmVzdHJLZXl3b3JkKCkgY29uc3Q7CisgICAgICAgIEFMV0FZU19J
TkxJTkUgYm9vbCBsYXN0VG9rZW5XYXNSZXN0cktleXdvcmQoKSBjb25zdDsKIAogICAgICAgICBz
dGF0aWMgY29uc3Qgc2l6ZV90IGluaXRpYWxSZWFkQnVmZmVyQ2FwYWNpdHkgPSAzMjsKICAgICAg
ICAgCkBAIC0xMDYsMTAgKzEwNyw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIC8vIGN1
cnJlbnQgYW5kIGZvbGxvd2luZyB1bmljb2RlIGNoYXJhY3RlcnMgKGludCB0byBhbGxvdyBmb3Ig
LTEgZm9yIGVuZC1vZi1maWxlIG1hcmtlcikKICAgICAgICAgaW50IG1fY3VycmVudDsKLSAgICAg
ICAgaW50IG1fbmV4dDE7Ci0gICAgICAgIGludCBtX25leHQyOwotICAgICAgICBpbnQgbV9uZXh0
MzsKLSAgICAgICAgCisKICAgICAgICAgSWRlbnRpZmllckFyZW5hKiBtX2FyZW5hOwogCiAgICAg
ICAgIEpTR2xvYmFsRGF0YSogbV9nbG9iYWxEYXRhOwotLSAKMS42LjAuNAoK
</data>
<flag name="review"
          id="46834"
          type_id="1"
          status="-"
          setter="sam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59881</attachid>
            <date>2010-06-28 00:59:28 -0700</date>
            <delta_ts>2010-06-28 12:17:57 -0700</delta_ts>
            <desc>full patch</desc>
            <filename>0001-lexer-patch.patch</filename>
            <type>text/plain</type>
            <size>30638</size>
            <attacher name="Zoltan Herczeg">zherczeg</attacher>
            
              <data encoding="base64">RnJvbSA1ZWM4YWU0ZTJmZjFlMDIwZDBlNTQzOTk1NDE5OGI5MmEzNjFmNGMyIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBab2x0YW4gSGVyY3plZyA8emhlcmN6ZWdAaW5mLnUtc3plZ2Vk
Lmh1PgpEYXRlOiBNb24sIDI4IEp1biAyMDEwIDA5OjU0OjE0ICswMjAwClN1YmplY3Q6IFtQQVRD
SF0gbGV4ZXIgcGF0Y2gKClNpZ25lZC1vZmYtYnk6IFpvbHRhbiBIZXJjemVnIDx6aGVyY3plZ0Bp
bmYudS1zemVnZWQuaHU+Ci0tLQogSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nICAgICAgICB8ICAg
MjYgKysKIEphdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAgfCAgNzA1ICsrKysrKysrKysr
KysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLQogSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVy
LmggICB8ICAgMjYgKy0KIDMgZmlsZXMgY2hhbmdlZCwgMzgzIGluc2VydGlvbnMoKyksIDM3NCBk
ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9KYXZh
U2NyaXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggNDVkNzA1ZC4uNmE1MzQ1OSAxMDA2NDQKLS0tIGEv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDI5IEBACisyMDEwLTA2LTI4ICBab2x0YW4gSGVyY3plZyAgPHpoZXJjemVnQHdl
YmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgT25seSBvbmUgY2hhcmFjdGVyIGxvb2thaGVhZCBzaG91bGQgYmUgZW5vdWdoIGZvciB0aGUg
bGV4ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQx
MjEzCisKKyAgICAgICAgVGhlIGxleGVyIGhhZCA0IGNoYXJhY3RlciBsb29rYWhlYWQgYmVmb3Jl
LCB3aGljaCByZXF1aXJlZAorICAgICAgICBhIGNvbXBsZXggc2hpZnRpbmcgbWVjaGFuaXNtLiBU
aGlzIGNhbiBiZSBpbXByb3ZlZCBieSB1c2luZworICAgICAgICBvbmx5IG9uZSBjaGFyYWN0ZXIg
bG9va2FoZWFkIGZvciBtb3N0IGRlY2lzaW9ucywgYW5kIGEKKyAgICAgICAgcGVlaygpIGZ1bmN0
aW9uIGFzIGEgZmFsbGJhY2sgd2hlbiBpdCBpcyBhYnNvbHV0ZWx5IG5lY2Vzc2FyeS4KKworICAg
ICAgICAqIHBhcnNlci9MZXhlci5jcHA6CisgICAgICAgIChKU0M6OkxleGVyOjpjdXJyZW50Q2hh
cmFjdGVyKToKKyAgICAgICAgKEpTQzo6TGV4ZXI6OmN1cnJlbnRPZmZzZXQpOgorICAgICAgICAo
SlNDOjpMZXhlcjo6c2V0Q29kZSk6CisgICAgICAgIChKU0M6OkxleGVyOjpzaGlmdCk6CisgICAg
ICAgIChKU0M6OkxleGVyOjpwZWVrKToKKyAgICAgICAgKEpTQzo6TGV4ZXI6OmdldFVuaWNvZGVD
aGFyYWN0ZXIpOgorICAgICAgICAoSlNDOjpMZXhlcjo6c2hpZnRMaW5lVGVybWluYXRvcik6Cisg
ICAgICAgIChKU0M6OkxleGVyOjpsYXN0VG9rZW5XYXNSZXN0cktleXdvcmQpOgorICAgICAgICAo
SlNDOjpMZXhlcjo6bGV4KToKKyAgICAgICAgKEpTQzo6TGV4ZXI6OnNjYW5SZWdFeHApOgorICAg
ICAgICAoSlNDOjpMZXhlcjo6c2tpcFJlZ0V4cCk6CisgICAgICAgICogcGFyc2VyL0xleGVyLmg6
CisKIDIwMTAtMDYtMjcgIEt3YW5nIFl1bCBTZW8gIDxza3l1bEBjb21wYW55MTAwLm5ldD4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBLZW50IFRhbXVyYS4KZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9MZXhlci5jcHAgYi9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCmlu
ZGV4IGYxNzAyYmUuLjExNmNlNjQgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3BhcnNlci9M
ZXhlci5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcApAQCAtMiw2ICsy
LDcgQEAKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMCBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBr
ZGUub3JnKQogICogIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSBBcHBsZSBJ
bmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKiAgQ29weXJpZ2h0IChDKSAyMDA3IENhbWVyb24g
WndhcmljaCAoY3d6d2FyaWNoQHV3YXRlcmxvby5jYSkKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTAg
Wm9sdGFuIEhlcmN6ZWcgKHpoZXJjemVnQGluZi51LXN6ZWdlZC5odSkKICAqCiAgKiAgVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgog
ICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCkBAIC01OCw3NyArNTksMTcgQEAgTGV4ZXI6On5MZXhlcigpCiAgICAgbV9rZXl3b3Jk
VGFibGUuZGVsZXRlVGFibGUoKTsKIH0KIAotaW5saW5lIGNvbnN0IFVDaGFyKiBMZXhlcjo6Y3Vy
cmVudENoYXJhY3RlcigpIGNvbnN0CitBTFdBWVNfSU5MSU5FIGNvbnN0IFVDaGFyKiBMZXhlcjo6
Y3VycmVudENoYXJhY3RlcigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fY29kZSAtIDQ7CisgICAg
QVNTRVJUKG1fY29kZSA8PSBtX2NvZGVFbmQpOworICAgIHJldHVybiBtX2NvZGU7CiB9CiAKLWlu
bGluZSBpbnQgTGV4ZXI6OmN1cnJlbnRPZmZzZXQoKSBjb25zdAorQUxXQVlTX0lOTElORSBpbnQg
TGV4ZXI6OmN1cnJlbnRPZmZzZXQoKSBjb25zdAogewogICAgIHJldHVybiBjdXJyZW50Q2hhcmFj
dGVyKCkgLSBtX2NvZGVTdGFydDsKIH0KIAotQUxXQVlTX0lOTElORSB2b2lkIExleGVyOjpzaGlm
dDEoKQotewotICAgIG1fY3VycmVudCA9IG1fbmV4dDE7Ci0gICAgbV9uZXh0MSA9IG1fbmV4dDI7
Ci0gICAgbV9uZXh0MiA9IG1fbmV4dDM7Ci0gICAgaWYgKExJS0VMWShtX2NvZGUgPCBtX2NvZGVF
bmQpKQotICAgICAgICBtX25leHQzID0gbV9jb2RlWzBdOwotICAgIGVsc2UKLSAgICAgICAgbV9u
ZXh0MyA9IC0xOwotCi0gICAgKyttX2NvZGU7Ci19Ci0KLUFMV0FZU19JTkxJTkUgdm9pZCBMZXhl
cjo6c2hpZnQyKCkKLXsKLSAgICBtX2N1cnJlbnQgPSBtX25leHQyOwotICAgIG1fbmV4dDEgPSBt
X25leHQzOwotICAgIGlmIChMSUtFTFkobV9jb2RlICsgMSA8IG1fY29kZUVuZCkpIHsKLSAgICAg
ICAgbV9uZXh0MiA9IG1fY29kZVswXTsKLSAgICAgICAgbV9uZXh0MyA9IG1fY29kZVsxXTsKLSAg
ICB9IGVsc2UgewotICAgICAgICBtX25leHQyID0gbV9jb2RlIDwgbV9jb2RlRW5kID8gbV9jb2Rl
WzBdIDogLTE7Ci0gICAgICAgIG1fbmV4dDMgPSAtMTsKLSAgICB9Ci0KLSAgICBtX2NvZGUgKz0g
MjsKLX0KLQotQUxXQVlTX0lOTElORSB2b2lkIExleGVyOjpzaGlmdDMoKQotewotICAgIG1fY3Vy
cmVudCA9IG1fbmV4dDM7Ci0gICAgaWYgKExJS0VMWShtX2NvZGUgKyAyIDwgbV9jb2RlRW5kKSkg
ewotICAgICAgICBtX25leHQxID0gbV9jb2RlWzBdOwotICAgICAgICBtX25leHQyID0gbV9jb2Rl
WzFdOwotICAgICAgICBtX25leHQzID0gbV9jb2RlWzJdOwotICAgIH0gZWxzZSB7Ci0gICAgICAg
IG1fbmV4dDEgPSBtX2NvZGUgPCBtX2NvZGVFbmQgPyBtX2NvZGVbMF0gOiAtMTsKLSAgICAgICAg
bV9uZXh0MiA9IG1fY29kZSArIDEgPCBtX2NvZGVFbmQgPyBtX2NvZGVbMV0gOiAtMTsKLSAgICAg
ICAgbV9uZXh0MyA9IC0xOwotICAgIH0KLQotICAgIG1fY29kZSArPSAzOwotfQotCi1BTFdBWVNf
SU5MSU5FIHZvaWQgTGV4ZXI6OnNoaWZ0NCgpCi17Ci0gICAgaWYgKExJS0VMWShtX2NvZGUgKyAz
IDwgbV9jb2RlRW5kKSkgewotICAgICAgICBtX2N1cnJlbnQgPSBtX2NvZGVbMF07Ci0gICAgICAg
IG1fbmV4dDEgPSBtX2NvZGVbMV07Ci0gICAgICAgIG1fbmV4dDIgPSBtX2NvZGVbMl07Ci0gICAg
ICAgIG1fbmV4dDMgPSBtX2NvZGVbM107Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgbV9jdXJyZW50
ID0gbV9jb2RlIDwgbV9jb2RlRW5kID8gbV9jb2RlWzBdIDogLTE7Ci0gICAgICAgIG1fbmV4dDEg
PSBtX2NvZGUgKyAxIDwgbV9jb2RlRW5kID8gbV9jb2RlWzFdIDogLTE7Ci0gICAgICAgIG1fbmV4
dDIgPSBtX2NvZGUgKyAyIDwgbV9jb2RlRW5kID8gbV9jb2RlWzJdIDogLTE7Ci0gICAgICAgIG1f
bmV4dDMgPSAtMTsKLSAgICB9Ci0KLSAgICBtX2NvZGUgKz0gNDsKLX0KLQogdm9pZCBMZXhlcjo6
c2V0Q29kZShjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIFBhcnNlckFyZW5hJiBhcmVuYSkKIHsK
ICAgICBtX2FyZW5hID0gJmFyZW5hLmlkZW50aWZpZXJBcmVuYSgpOwpAQCAtMTYwLDggKzEwMSwx
MCBAQCB2b2lkIExleGVyOjpzZXRDb2RlKGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgUGFyc2Vy
QXJlbmEmIGFyZW5hKQogICAgICAgICB9CiAgICAgfQogCi0gICAgLy8gUmVhZCB0aGUgZmlyc3Qg
Y2hhcmFjdGVycyBpbnRvIHRoZSA0LWNoYXJhY3RlciBidWZmZXIuCi0gICAgc2hpZnQ0KCk7Cisg
ICAgaWYgKExJS0VMWShtX2NvZGUgPCBtX2NvZGVFbmQpKQorICAgICAgICBtX2N1cnJlbnQgPSAq
bV9jb2RlOworICAgIGVsc2UKKyAgICAgICAgbV9jdXJyZW50ID0gLTE7CiAgICAgQVNTRVJUKGN1
cnJlbnRPZmZzZXQoKSA9PSBzb3VyY2Uuc3RhcnRPZmZzZXQoKSk7CiB9CiAKQEAgLTE4NCwxNSAr
MTI3LDUxIEBAIHZvaWQgTGV4ZXI6OmNvcHlDb2RlV2l0aG91dEJPTXMoKQogICAgIG1fY29kZUVu
ZCA9IG1fY29kZVdpdGhvdXRCT01zLmRhdGEoKSArIG1fY29kZVdpdGhvdXRCT01zLnNpemUoKTsK
IH0KIAorQUxXQVlTX0lOTElORSB2b2lkIExleGVyOjpzaGlmdCgpCit7CisgICAgLy8gRmFzdGVy
IHRoYW4gYW4gaWYtZWxzZSBzZXF1ZW5jZQorICAgIEFTU0VSVChtX2N1cnJlbnQgIT0gLTEpOwor
ICAgIG1fY3VycmVudCA9IC0xOworICAgICsrbV9jb2RlOworICAgIGlmIChMSUtFTFkobV9jb2Rl
IDwgbV9jb2RlRW5kKSkKKyAgICAgICAgbV9jdXJyZW50ID0gKm1fY29kZTsKK30KKworQUxXQVlT
X0lOTElORSBpbnQgTGV4ZXI6OnBlZWsoaW50IG9mZnNldCkKK3sKKyAgICAvLyBPbmx5IHVzZSBp
ZiBuZWNlc3NhcnkKKyAgICBBU1NFUlQob2Zmc2V0ID4gMCAmJiBvZmZzZXQgPCA1KTsKKyAgICBj
b25zdCBVQ2hhciogY29kZSA9IG1fY29kZSArIG9mZnNldDsKKyAgICByZXR1cm4gKGNvZGUgPCBt
X2NvZGVFbmQpID8gKmNvZGUgOiAtMTsKK30KKworaW50IExleGVyOjpnZXRVbmljb2RlQ2hhcmFj
dGVyKCkKK3sKKyAgICBpbnQgY2hhcjEgPSBwZWVrKDEpOworICAgIGludCBjaGFyMiA9IHBlZWso
Mik7CisgICAgaW50IGNoYXIzID0gcGVlaygzKTsKKworICAgIGlmIChVTkxJS0VMWSghaXNBU0NJ
SUhleERpZ2l0KG1fY3VycmVudCkgfHwgIWlzQVNDSUlIZXhEaWdpdChjaGFyMSkgfHwgIWlzQVND
SUlIZXhEaWdpdChjaGFyMikgfHwgIWlzQVNDSUlIZXhEaWdpdChjaGFyMykpKQorICAgICAgICBy
ZXR1cm4gLTE7CisKKyAgICBpbnQgcmVzdWx0ID0gY29udmVydFVuaWNvZGUobV9jdXJyZW50LCBj
aGFyMSwgY2hhcjIsIGNoYXIzKTsKKyAgICBzaGlmdCgpOworICAgIHNoaWZ0KCk7CisgICAgc2hp
ZnQoKTsKKyAgICBzaGlmdCgpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKIHZvaWQgTGV4ZXI6
OnNoaWZ0TGluZVRlcm1pbmF0b3IoKQogewogICAgIEFTU0VSVChpc0xpbmVUZXJtaW5hdG9yKG1f
Y3VycmVudCkpOwogCisgICAgaW50IG1fcHJldiA9IG1fY3VycmVudDsKKyAgICBzaGlmdCgpOwor
CiAgICAgLy8gQWxsb3cgYm90aCBDUkxGIGFuZCBMRkNSLgotICAgIGlmIChtX2N1cnJlbnQgKyBt
X25leHQxID09ICdcbicgKyAnXHInKQotICAgICAgICBzaGlmdDIoKTsKLSAgICBlbHNlCi0gICAg
ICAgIHNoaWZ0MSgpOworICAgIGlmIChtX3ByZXYgKyBtX2N1cnJlbnQgPT0gJ1xuJyArICdccicp
CisgICAgICAgIHNoaWZ0KCk7CiAKICAgICArK21fbGluZU51bWJlcjsKIH0KQEAgLTIwMiw3ICsx
ODEsNyBAQCBBTFdBWVNfSU5MSU5FIGNvbnN0IElkZW50aWZpZXIqIExleGVyOjptYWtlSWRlbnRp
Zmllcihjb25zdCBVQ2hhciogY2hhcmFjdGVycywgcwogICAgIHJldHVybiAmbV9hcmVuYS0+bWFr
ZUlkZW50aWZpZXIobV9nbG9iYWxEYXRhLCBjaGFyYWN0ZXJzLCBsZW5ndGgpOwogfQogCi1pbmxp
bmUgYm9vbCBMZXhlcjo6bGFzdFRva2VuV2FzUmVzdHJLZXl3b3JkKCkgY29uc3QKK0FMV0FZU19J
TkxJTkUgYm9vbCBMZXhlcjo6bGFzdFRva2VuV2FzUmVzdHJLZXl3b3JkKCkgY29uc3QKIHsKICAg
ICByZXR1cm4gbV9sYXN0VG9rZW4gPT0gQ09OVElOVUUgfHwgbV9sYXN0VG9rZW4gPT0gQlJFQUsg
fHwgbV9sYXN0VG9rZW4gPT0gUkVUVVJOIHx8IG1fbGFzdFRva2VuID09IFRIUk9XOwogfQpAQCAt
MjgwLDcgKzI1OSw3IEBAIGludCBMZXhlcjo6bGV4KHZvaWQqIHAxLCB2b2lkKiBwMikKIAogc3Rh
cnQ6CiAgICAgd2hpbGUgKGlzV2hpdGVTcGFjZShtX2N1cnJlbnQpKQotICAgICAgICBzaGlmdDEo
KTsKKyAgICAgICAgc2hpZnQoKTsKIAogICAgIGludCBzdGFydE9mZnNldCA9IGN1cnJlbnRPZmZz
ZXQoKTsKIApAQCAtMjk1LDI2NCArMjc0LDI1NiBAQCBzdGFydDoKIAogICAgIG1fZGVsaW1pdGVk
ID0gZmFsc2U7CiAgICAgc3dpdGNoIChtX2N1cnJlbnQpIHsKLSAgICAgICAgY2FzZSAnPic6Ci0g
ICAgICAgICAgICBpZiAobV9uZXh0MSA9PSAnPicgJiYgbV9uZXh0MiA9PSAnPicpIHsKLSAgICAg
ICAgICAgICAgICBpZiAobV9uZXh0MyA9PSAnPScpIHsKLSAgICAgICAgICAgICAgICAgICAgc2hp
ZnQ0KCk7CisgICAgY2FzZSAnPic6CisgICAgICAgIHNoaWZ0KCk7CisgICAgICAgIGlmIChtX2N1
cnJlbnQgPT0gJz4nKSB7CisgICAgICAgICAgICBzaGlmdCgpOworICAgICAgICAgICAgaWYgKG1f
Y3VycmVudCA9PSAnPicpIHsKKyAgICAgICAgICAgICAgICBzaGlmdCgpOworICAgICAgICAgICAg
ICAgIGlmIChtX2N1cnJlbnQgPT0gJz0nKSB7CisgICAgICAgICAgICAgICAgICAgIHNoaWZ0KCk7
CiAgICAgICAgICAgICAgICAgICAgIHRva2VuID0gVVJTSElGVEVRVUFMOwogICAgICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgc2hpZnQz
KCk7CiAgICAgICAgICAgICAgICAgdG9rZW4gPSBVUlNISUZUOwogICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKG1fbmV4dDEgPT0gJz4nKSB7Ci0g
ICAgICAgICAgICAgICAgaWYgKG1fbmV4dDIgPT0gJz0nKSB7Ci0gICAgICAgICAgICAgICAgICAg
IHNoaWZ0MygpOwotICAgICAgICAgICAgICAgICAgICB0b2tlbiA9IFJTSElGVEVRVUFMOwotICAg
ICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgc2hpZnQyKCk7Ci0gICAgICAgICAgICAgICAgdG9rZW4gPSBSU0hJRlQ7Ci0gICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAobV9uZXh0MSA9PSAn
PScpIHsKLSAgICAgICAgICAgICAgICBzaGlmdDIoKTsKLSAgICAgICAgICAgICAgICB0b2tlbiA9
IEdFOworICAgICAgICAgICAgaWYgKG1fY3VycmVudCA9PSAnPScpIHsKKyAgICAgICAgICAgICAg
ICBzaGlmdCgpOworICAgICAgICAgICAgICAgIHRva2VuID0gUlNISUZURVFVQUw7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBzaGlmdDEoKTsKLSAg
ICAgICAgICAgIHRva2VuID0gJz4nOworICAgICAgICAgICAgdG9rZW4gPSBSU0hJRlQ7CiAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSAnPSc6Ci0gICAgICAgICAgICBpZiAobV9uZXh0
MSA9PSAnPScpIHsKLSAgICAgICAgICAgICAgICBpZiAobV9uZXh0MiA9PSAnPScpIHsKLSAgICAg
ICAgICAgICAgICAgICAgc2hpZnQzKCk7Ci0gICAgICAgICAgICAgICAgICAgIHRva2VuID0gU1RS
RVE7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICBzaGlmdDIoKTsKLSAgICAgICAgICAgICAgICB0b2tlbiA9IEVRRVE7Ci0gICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBzaGlmdDEoKTsK
LSAgICAgICAgICAgIHRva2VuID0gJz0nOworICAgICAgICB9CisgICAgICAgIGlmIChtX2N1cnJl
bnQgPT0gJz0nKSB7CisgICAgICAgICAgICBzaGlmdCgpOworICAgICAgICAgICAgdG9rZW4gPSBH
RTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlICchJzoKLSAgICAgICAgICAgIGlm
IChtX25leHQxID09ICc9JykgewotICAgICAgICAgICAgICAgIGlmIChtX25leHQyID09ICc9Jykg
ewotICAgICAgICAgICAgICAgICAgICBzaGlmdDMoKTsKLSAgICAgICAgICAgICAgICAgICAgdG9r
ZW4gPSBTVFJORVE7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICBzaGlmdDIoKTsKLSAgICAgICAgICAgICAgICB0b2tlbiA9IE5F
OworICAgICAgICB9CisgICAgICAgIHRva2VuID0gJz4nOworICAgICAgICBicmVhazsKKyAgICBj
YXNlICc9JzoKKyAgICAgICAgc2hpZnQoKTsKKyAgICAgICAgaWYgKG1fY3VycmVudCA9PSAnPScp
IHsKKyAgICAgICAgICAgIHNoaWZ0KCk7CisgICAgICAgICAgICBpZiAobV9jdXJyZW50ID09ICc9
JykgeworICAgICAgICAgICAgICAgIHNoaWZ0KCk7CisgICAgICAgICAgICAgICAgdG9rZW4gPSBT
VFJFUTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IHNoaWZ0MSgpOwotICAgICAgICAgICAgdG9rZW4gPSAnISc7CisgICAgICAgICAgICB0b2tlbiA9
IEVRRVE7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSAnPCc6Ci0gICAgICAgICAg
ICBpZiAobV9uZXh0MSA9PSAnIScgJiYgbV9uZXh0MiA9PSAnLScgJiYgbV9uZXh0MyA9PSAnLScp
IHsKLSAgICAgICAgICAgICAgICAvLyA8IS0tIG1hcmtzIHRoZSBiZWdpbm5pbmcgb2YgYSBsaW5l
IGNvbW1lbnQgKGZvciB3d3cgdXNhZ2UpCi0gICAgICAgICAgICAgICAgc2hpZnQ0KCk7Ci0gICAg
ICAgICAgICAgICAgZ290byBpblNpbmdsZUxpbmVDb21tZW50OwotICAgICAgICAgICAgfQotICAg
ICAgICAgICAgaWYgKG1fbmV4dDEgPT0gJzwnKSB7Ci0gICAgICAgICAgICAgICAgaWYgKG1fbmV4
dDIgPT0gJz0nKSB7Ci0gICAgICAgICAgICAgICAgICAgIHNoaWZ0MygpOwotICAgICAgICAgICAg
ICAgICAgICB0b2tlbiA9IExTSElGVEVRVUFMOwotICAgICAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgc2hpZnQyKCk7Ci0gICAgICAgICAg
ICAgICAgdG9rZW4gPSBMU0hJRlQ7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICBpZiAobV9uZXh0MSA9PSAnPScpIHsKLSAgICAgICAgICAgICAgICBz
aGlmdDIoKTsKLSAgICAgICAgICAgICAgICB0b2tlbiA9IExFOworICAgICAgICB9CisgICAgICAg
IHRva2VuID0gJz0nOworICAgICAgICBicmVhazsKKyAgICBjYXNlICchJzoKKyAgICAgICAgc2hp
ZnQoKTsKKyAgICAgICAgaWYgKG1fY3VycmVudCA9PSAnPScpIHsKKyAgICAgICAgICAgIHNoaWZ0
KCk7CisgICAgICAgICAgICBpZiAobV9jdXJyZW50ID09ICc9JykgeworICAgICAgICAgICAgICAg
IHNoaWZ0KCk7CisgICAgICAgICAgICAgICAgdG9rZW4gPSBTVFJORVE7CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBzaGlmdDEoKTsKLSAgICAgICAg
ICAgIHRva2VuID0gJzwnOworICAgICAgICAgICAgdG9rZW4gPSBORTsKICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICBjYXNlICcrJzoKLSAgICAgICAgICAgIGlmIChtX25leHQxID09ICcrJykg
ewotICAgICAgICAgICAgICAgIHNoaWZ0MigpOwotICAgICAgICAgICAgICAgIGlmIChtX3Rlcm1p
bmF0b3IpIHsKLSAgICAgICAgICAgICAgICAgICAgdG9rZW4gPSBBVVRPUExVU1BMVVM7Ci0gICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICB0b2tlbiA9IFBMVVNQTFVTOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
fQotICAgICAgICAgICAgaWYgKG1fbmV4dDEgPT0gJz0nKSB7Ci0gICAgICAgICAgICAgICAgc2hp
ZnQyKCk7Ci0gICAgICAgICAgICAgICAgdG9rZW4gPSBQTFVTRVFVQUw7CisgICAgICAgIH0KKyAg
ICAgICAgdG9rZW4gPSAnISc7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgJzwnOgorICAgICAg
ICBzaGlmdCgpOworICAgICAgICBpZiAobV9jdXJyZW50ID09ICchJyAmJiBwZWVrKDEpID09ICct
JyAmJiBwZWVrKDIpID09ICctJykgeworICAgICAgICAgICAgLy8gPCEtLSBtYXJrcyB0aGUgYmVn
aW5uaW5nIG9mIGEgbGluZSBjb21tZW50IChmb3Igd3d3IHVzYWdlKQorICAgICAgICAgICAgZ290
byBpblNpbmdsZUxpbmVDb21tZW50OworICAgICAgICB9CisgICAgICAgIGlmIChtX2N1cnJlbnQg
PT0gJzwnKSB7CisgICAgICAgICAgICBzaGlmdCgpOworICAgICAgICAgICAgaWYgKG1fY3VycmVu
dCA9PSAnPScpIHsKKyAgICAgICAgICAgICAgICBzaGlmdCgpOworICAgICAgICAgICAgICAgIHRv
a2VuID0gTFNISUZURVFVQUw7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICBzaGlmdDEoKTsKLSAgICAgICAgICAgIHRva2VuID0gJysnOworICAgICAg
ICAgICAgdG9rZW4gPSBMU0hJRlQ7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSAn
LSc6Ci0gICAgICAgICAgICBpZiAobV9uZXh0MSA9PSAnLScpIHsKLSAgICAgICAgICAgICAgICBp
ZiAobV9hdExpbmVTdGFydCAmJiBtX25leHQyID09ICc+JykgewotICAgICAgICAgICAgICAgICAg
ICBzaGlmdDMoKTsKLSAgICAgICAgICAgICAgICAgICAgZ290byBpblNpbmdsZUxpbmVDb21tZW50
OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBzaGlmdDIoKTsKLSAgICAgICAg
ICAgICAgICBpZiAobV90ZXJtaW5hdG9yKSB7Ci0gICAgICAgICAgICAgICAgICAgIHRva2VuID0g
QVVUT01JTlVTTUlOVVM7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICB0b2tlbiA9IE1JTlVTTUlOVVM7Ci0gICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAobV9uZXh0MSA9PSAnPScp
IHsKLSAgICAgICAgICAgICAgICBzaGlmdDIoKTsKLSAgICAgICAgICAgICAgICB0b2tlbiA9IE1J
TlVTRVFVQUw7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBzaGlmdDEoKTsKLSAgICAgICAgICAgIHRva2VuID0gJy0nOworICAgICAgICB9CisgICAg
ICAgIGlmIChtX2N1cnJlbnQgPT0gJz0nKSB7CisgICAgICAgICAgICBzaGlmdCgpOworICAgICAg
ICAgICAgdG9rZW4gPSBMRTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlICcqJzoK
LSAgICAgICAgICAgIGlmIChtX25leHQxID09ICc9JykgewotICAgICAgICAgICAgICAgIHNoaWZ0
MigpOwotICAgICAgICAgICAgICAgIHRva2VuID0gTVVMVEVRVUFMOwotICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgc2hpZnQxKCk7Ci0gICAgICAgICAg
ICB0b2tlbiA9ICcqJzsKKyAgICAgICAgfQorICAgICAgICB0b2tlbiA9ICc8JzsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSAnKyc6CisgICAgICAgIHNoaWZ0KCk7CisgICAgICAgIGlmIChtX2N1
cnJlbnQgPT0gJysnKSB7CisgICAgICAgICAgICBzaGlmdCgpOworICAgICAgICAgICAgdG9rZW4g
PSAoIW1fdGVybWluYXRvcikgPyBQTFVTUExVUyA6IEFVVE9QTFVTUExVUzsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CisgICAgICAgIGlmIChtX2N1cnJlbnQgPT0gJz0nKSB7CisgICAg
ICAgICAgICBzaGlmdCgpOworICAgICAgICAgICAgdG9rZW4gPSBQTFVTRVFVQUw7CiAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgY2FzZSAnLyc6Ci0gICAgICAgICAgICBpZiAobV9uZXh0MSA9
PSAnLycpIHsKLSAgICAgICAgICAgICAgICBzaGlmdDIoKTsKKyAgICAgICAgfQorICAgICAgICB0
b2tlbiA9ICcrJzsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAnLSc6CisgICAgICAgIHNoaWZ0
KCk7CisgICAgICAgIGlmIChtX2N1cnJlbnQgPT0gJy0nKSB7CisgICAgICAgICAgICBzaGlmdCgp
OworICAgICAgICAgICAgaWYgKG1fYXRMaW5lU3RhcnQgJiYgbV9jdXJyZW50ID09ICc+Jykgewor
ICAgICAgICAgICAgICAgIHNoaWZ0KCk7CiAgICAgICAgICAgICAgICAgZ290byBpblNpbmdsZUxp
bmVDb21tZW50OwogICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKG1fbmV4dDEgPT0gJyon
KQotICAgICAgICAgICAgICAgIGdvdG8gaW5NdWx0aUxpbmVDb21tZW50OwotICAgICAgICAgICAg
aWYgKG1fbmV4dDEgPT0gJz0nKSB7Ci0gICAgICAgICAgICAgICAgc2hpZnQyKCk7Ci0gICAgICAg
ICAgICAgICAgdG9rZW4gPSBESVZFUVVBTDsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIHNoaWZ0MSgpOwotICAgICAgICAgICAgdG9rZW4gPSAnLyc7
CisgICAgICAgICAgICB0b2tlbiA9ICghbV90ZXJtaW5hdG9yKSA/IE1JTlVTTUlOVVMgOiBBVVRP
TUlOVVNNSU5VUzsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlICcmJzoKLSAgICAg
ICAgICAgIGlmIChtX25leHQxID09ICcmJykgewotICAgICAgICAgICAgICAgIHNoaWZ0MigpOwot
ICAgICAgICAgICAgICAgIHRva2VuID0gQU5EOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgaWYgKG1fbmV4dDEgPT0gJz0nKSB7Ci0gICAgICAgICAg
ICAgICAgc2hpZnQyKCk7Ci0gICAgICAgICAgICAgICAgdG9rZW4gPSBBTkRFUVVBTDsKLSAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHNoaWZ0MSgpOwot
ICAgICAgICAgICAgdG9rZW4gPSAnJic7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG1fY3VycmVu
dCA9PSAnPScpIHsKKyAgICAgICAgICAgIHNoaWZ0KCk7CisgICAgICAgICAgICB0b2tlbiA9IE1J
TlVTRVFVQUw7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSAnXic6Ci0gICAgICAg
ICAgICBpZiAobV9uZXh0MSA9PSAnPScpIHsKLSAgICAgICAgICAgICAgICBzaGlmdDIoKTsKLSAg
ICAgICAgICAgICAgICB0b2tlbiA9IFhPUkVRVUFMOwotICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgc2hpZnQxKCk7Ci0gICAgICAgICAgICB0b2tlbiA9
ICdeJzsKKyAgICAgICAgfQorICAgICAgICB0b2tlbiA9ICctJzsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSAnKic6CisgICAgICAgIHNoaWZ0KCk7CisgICAgICAgIGlmIChtX2N1cnJlbnQgPT0g
Jz0nKSB7CisgICAgICAgICAgICBzaGlmdCgpOworICAgICAgICAgICAgdG9rZW4gPSBNVUxURVFV
QUw7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSAnJSc6Ci0gICAgICAgICAgICBp
ZiAobV9uZXh0MSA9PSAnPScpIHsKLSAgICAgICAgICAgICAgICBzaGlmdDIoKTsKLSAgICAgICAg
ICAgICAgICB0b2tlbiA9IE1PREVRVUFMOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgfQotICAgICAgICAgICAgc2hpZnQxKCk7Ci0gICAgICAgICAgICB0b2tlbiA9ICclJzsK
KyAgICAgICAgfQorICAgICAgICB0b2tlbiA9ICcqJzsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSAnLyc6CisgICAgICAgIHNoaWZ0KCk7CisgICAgICAgIGlmIChtX2N1cnJlbnQgPT0gJy8nKSB7
CisgICAgICAgICAgICBzaGlmdCgpOworICAgICAgICAgICAgZ290byBpblNpbmdsZUxpbmVDb21t
ZW50OworICAgICAgICB9CisgICAgICAgIGlmIChtX2N1cnJlbnQgPT0gJyonKSB7CisgICAgICAg
ICAgICBzaGlmdCgpOworICAgICAgICAgICAgZ290byBpbk11bHRpTGluZUNvbW1lbnQ7CisgICAg
ICAgIH0KKyAgICAgICAgaWYgKG1fY3VycmVudCA9PSAnPScpIHsKKyAgICAgICAgICAgIHNoaWZ0
KCk7CisgICAgICAgICAgICB0b2tlbiA9IERJVkVRVUFMOwogICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIGNhc2UgJ3wnOgotICAgICAgICAgICAgaWYgKG1fbmV4dDEgPT0gJz0nKSB7Ci0gICAg
ICAgICAgICAgICAgc2hpZnQyKCk7Ci0gICAgICAgICAgICAgICAgdG9rZW4gPSBPUkVRVUFMOwot
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKG1f
bmV4dDEgPT0gJ3wnKSB7Ci0gICAgICAgICAgICAgICAgc2hpZnQyKCk7Ci0gICAgICAgICAgICAg
ICAgdG9rZW4gPSBPUjsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIHNoaWZ0MSgpOwotICAgICAgICAgICAgdG9rZW4gPSAnfCc7CisgICAgICAgIH0K
KyAgICAgICAgdG9rZW4gPSAnLyc7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgJyYnOgorICAg
ICAgICBzaGlmdCgpOworICAgICAgICBpZiAobV9jdXJyZW50ID09ICcmJykgeworICAgICAgICAg
ICAgc2hpZnQoKTsKKyAgICAgICAgICAgIHRva2VuID0gQU5EOwogICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIGNhc2UgJy4nOgotICAgICAgICAgICAgaWYgKGlzQVNDSUlEaWdpdChtX25leHQx
KSkgewotICAgICAgICAgICAgICAgIHJlY29yZDgoJy4nKTsKLSAgICAgICAgICAgICAgICBzaGlm
dDEoKTsKLSAgICAgICAgICAgICAgICBnb3RvIGluTnVtYmVyQWZ0ZXJEZWNpbWFsUG9pbnQ7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICB0b2tlbiA9ICcuJzsKLSAgICAgICAgICAgIHNoaWZ0
MSgpOworICAgICAgICB9CisgICAgICAgIGlmIChtX2N1cnJlbnQgPT0gJz0nKSB7CisgICAgICAg
ICAgICBzaGlmdCgpOworICAgICAgICAgICAgdG9rZW4gPSBBTkRFUVVBTDsKICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICBjYXNlICcsJzoKLSAgICAgICAgY2FzZSAnfic6Ci0gICAgICAgIGNh
c2UgJz8nOgotICAgICAgICBjYXNlICc6JzoKLSAgICAgICAgY2FzZSAnKCc6Ci0gICAgICAgIGNh
c2UgJyknOgotICAgICAgICBjYXNlICdbJzoKLSAgICAgICAgY2FzZSAnXSc6Ci0gICAgICAgICAg
ICB0b2tlbiA9IG1fY3VycmVudDsKLSAgICAgICAgICAgIHNoaWZ0MSgpOworICAgICAgICB9Cisg
ICAgICAgIHRva2VuID0gJyYnOworICAgICAgICBicmVhazsKKyAgICBjYXNlICdeJzoKKyAgICAg
ICAgc2hpZnQoKTsKKyAgICAgICAgaWYgKG1fY3VycmVudCA9PSAnPScpIHsKKyAgICAgICAgICAg
IHNoaWZ0KCk7CisgICAgICAgICAgICB0b2tlbiA9IFhPUkVRVUFMOwogICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIGNhc2UgJzsnOgotICAgICAgICAgICAgc2hpZnQxKCk7Ci0gICAgICAgICAg
ICBtX2RlbGltaXRlZCA9IHRydWU7Ci0gICAgICAgICAgICB0b2tlbiA9ICc7JzsKKyAgICAgICAg
fQorICAgICAgICB0b2tlbiA9ICdeJzsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAnJSc6Cisg
ICAgICAgIHNoaWZ0KCk7CisgICAgICAgIGlmIChtX2N1cnJlbnQgPT0gJz0nKSB7CisgICAgICAg
ICAgICBzaGlmdCgpOworICAgICAgICAgICAgdG9rZW4gPSBNT0RFUVVBTDsKICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICBjYXNlICd7JzoKLSAgICAgICAgICAgIGx2YWxwLT5pbnRWYWx1ZSA9
IGN1cnJlbnRPZmZzZXQoKTsKLSAgICAgICAgICAgIHNoaWZ0MSgpOwotICAgICAgICAgICAgdG9r
ZW4gPSBPUEVOQlJBQ0U7CisgICAgICAgIH0KKyAgICAgICAgdG9rZW4gPSAnJSc7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgJ3wnOgorICAgICAgICBzaGlmdCgpOworICAgICAgICBpZiAobV9j
dXJyZW50ID09ICc9JykgeworICAgICAgICAgICAgc2hpZnQoKTsKKyAgICAgICAgICAgIHRva2Vu
ID0gT1JFUVVBTDsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlICd9JzoKLSAgICAg
ICAgICAgIGx2YWxwLT5pbnRWYWx1ZSA9IGN1cnJlbnRPZmZzZXQoKTsKLSAgICAgICAgICAgIHNo
aWZ0MSgpOwotICAgICAgICAgICAgbV9kZWxpbWl0ZWQgPSB0cnVlOwotICAgICAgICAgICAgdG9r
ZW4gPSBDTE9TRUJSQUNFOworICAgICAgICB9CisgICAgICAgIGlmIChtX2N1cnJlbnQgPT0gJ3wn
KSB7CisgICAgICAgICAgICBzaGlmdCgpOworICAgICAgICAgICAgdG9rZW4gPSBPUjsKICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlICdcXCc6Ci0gICAgICAgICAgICBnb3RvIHN0YXJ0
SWRlbnRpZmllcldpdGhCYWNrc2xhc2g7Ci0gICAgICAgIGNhc2UgJzAnOgotICAgICAgICAgICAg
Z290byBzdGFydE51bWJlcldpdGhaZXJvRGlnaXQ7Ci0gICAgICAgIGNhc2UgJzEnOgotICAgICAg
ICBjYXNlICcyJzoKLSAgICAgICAgY2FzZSAnMyc6Ci0gICAgICAgIGNhc2UgJzQnOgotICAgICAg
ICBjYXNlICc1JzoKLSAgICAgICAgY2FzZSAnNic6Ci0gICAgICAgIGNhc2UgJzcnOgotICAgICAg
ICBjYXNlICc4JzoKLSAgICAgICAgY2FzZSAnOSc6Ci0gICAgICAgICAgICBnb3RvIHN0YXJ0TnVt
YmVyOwotICAgICAgICBjYXNlICciJzoKLSAgICAgICAgY2FzZSAnXCcnOgotICAgICAgICAgICAg
Z290byBzdGFydFN0cmluZzsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGlmIChpc0lk
ZW50U3RhcnQobV9jdXJyZW50KSkKLSAgICAgICAgICAgICAgICBnb3RvIHN0YXJ0SWRlbnRpZmll
ck9yS2V5d29yZDsKLSAgICAgICAgICAgIGlmIChpc0xpbmVUZXJtaW5hdG9yKG1fY3VycmVudCkp
IHsKLSAgICAgICAgICAgICAgICBzaGlmdExpbmVUZXJtaW5hdG9yKCk7Ci0gICAgICAgICAgICAg
ICAgbV9hdExpbmVTdGFydCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgbV90ZXJtaW5hdG9yID0g
dHJ1ZTsKLSAgICAgICAgICAgICAgICBpZiAobGFzdFRva2VuV2FzUmVzdHJLZXl3b3JkKCkpIHsK
LSAgICAgICAgICAgICAgICAgICAgdG9rZW4gPSAnOyc7Ci0gICAgICAgICAgICAgICAgICAgIGdv
dG8gZG9uZVNlbWljb2xvbjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZ290
byBzdGFydDsKKyAgICAgICAgfQorICAgICAgICB0b2tlbiA9ICd8JzsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSAnLic6CisgICAgICAgIHNoaWZ0KCk7CisgICAgICAgIGlmIChpc0FTQ0lJRGln
aXQobV9jdXJyZW50KSkgeworICAgICAgICAgICAgcmVjb3JkOCgnLicpOworICAgICAgICAgICAg
Z290byBpbk51bWJlckFmdGVyRGVjaW1hbFBvaW50OworICAgICAgICB9CisgICAgICAgIHRva2Vu
ID0gJy4nOworICAgICAgICBicmVhazsKKyAgICBjYXNlICcsJzoKKyAgICBjYXNlICd+JzoKKyAg
ICBjYXNlICc/JzoKKyAgICBjYXNlICc6JzoKKyAgICBjYXNlICcoJzoKKyAgICBjYXNlICcpJzoK
KyAgICBjYXNlICdbJzoKKyAgICBjYXNlICddJzoKKyAgICAgICAgdG9rZW4gPSBtX2N1cnJlbnQ7
CisgICAgICAgIHNoaWZ0KCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgJzsnOgorICAgICAg
ICBtX2RlbGltaXRlZCA9IHRydWU7CisgICAgICAgIHNoaWZ0KCk7CisgICAgICAgIHRva2VuID0g
JzsnOworICAgICAgICBicmVhazsKKyAgICBjYXNlICd7JzoKKyAgICAgICAgbHZhbHAtPmludFZh
bHVlID0gY3VycmVudE9mZnNldCgpOworICAgICAgICBzaGlmdCgpOworICAgICAgICB0b2tlbiA9
IE9QRU5CUkFDRTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAnfSc6CisgICAgICAgIGx2YWxw
LT5pbnRWYWx1ZSA9IGN1cnJlbnRPZmZzZXQoKTsKKyAgICAgICAgbV9kZWxpbWl0ZWQgPSB0cnVl
OworICAgICAgICBzaGlmdCgpOworICAgICAgICB0b2tlbiA9IENMT1NFQlJBQ0U7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgJ1xcJzoKKyAgICAgICAgZ290byBzdGFydElkZW50aWZpZXJXaXRo
QmFja3NsYXNoOworICAgIGNhc2UgJzAnOgorICAgICAgICBnb3RvIHN0YXJ0TnVtYmVyV2l0aFpl
cm9EaWdpdDsKKyAgICBjYXNlICcxJzoKKyAgICBjYXNlICcyJzoKKyAgICBjYXNlICczJzoKKyAg
ICBjYXNlICc0JzoKKyAgICBjYXNlICc1JzoKKyAgICBjYXNlICc2JzoKKyAgICBjYXNlICc3JzoK
KyAgICBjYXNlICc4JzoKKyAgICBjYXNlICc5JzoKKyAgICAgICAgZ290byBzdGFydE51bWJlcjsK
KyAgICBjYXNlICciJzoKKyAgICBjYXNlICdcJyc6CisgICAgICAgIGdvdG8gc3RhcnRTdHJpbmc7
CisgICAgZGVmYXVsdDoKKyAgICAgICAgaWYgKGlzSWRlbnRTdGFydChtX2N1cnJlbnQpKQorICAg
ICAgICAgICAgZ290byBzdGFydElkZW50aWZpZXJPcktleXdvcmQ7CisgICAgICAgIGlmIChpc0xp
bmVUZXJtaW5hdG9yKG1fY3VycmVudCkpIHsKKyAgICAgICAgICAgIHNoaWZ0TGluZVRlcm1pbmF0
b3IoKTsKKyAgICAgICAgICAgIG1fYXRMaW5lU3RhcnQgPSB0cnVlOworICAgICAgICAgICAgbV90
ZXJtaW5hdG9yID0gdHJ1ZTsKKyAgICAgICAgICAgIGlmIChsYXN0VG9rZW5XYXNSZXN0cktleXdv
cmQoKSkgeworICAgICAgICAgICAgICAgIHRva2VuID0gJzsnOworICAgICAgICAgICAgICAgIGdv
dG8gZG9uZVNlbWljb2xvbjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGdvdG8gcmV0dXJu
RXJyb3I7CisgICAgICAgICAgICBnb3RvIHN0YXJ0OworICAgICAgICB9CisgICAgICAgIGdvdG8g
cmV0dXJuRXJyb3I7CiAgICAgfQogCiAgICAgbV9hdExpbmVTdGFydCA9IGZhbHNlOwpAQCAtNTYw
LDcgKzUzMSw3IEBAIHN0YXJ0OgogCiBzdGFydFN0cmluZzogewogICAgIGludCBzdHJpbmdRdW90
ZUNoYXJhY3RlciA9IG1fY3VycmVudDsKLSAgICBzaGlmdDEoKTsKKyAgICBzaGlmdCgpOwogCiAg
ICAgY29uc3QgVUNoYXIqIHN0cmluZ1N0YXJ0ID0gY3VycmVudENoYXJhY3RlcigpOwogICAgIHdo
aWxlIChtX2N1cnJlbnQgIT0gc3RyaW5nUXVvdGVDaGFyYWN0ZXIpIHsKQEAgLTU3MSwxMCArNTQy
LDEwIEBAIHN0YXJ0U3RyaW5nOiB7CiAgICAgICAgICAgICBtX2J1ZmZlcjE2LmFwcGVuZChzdHJp
bmdTdGFydCwgY3VycmVudENoYXJhY3RlcigpIC0gc3RyaW5nU3RhcnQpOwogICAgICAgICAgICAg
Z290byBpblN0cmluZzsKICAgICAgICAgfQotICAgICAgICBzaGlmdDEoKTsKKyAgICAgICAgc2hp
ZnQoKTsKICAgICB9CiAgICAgbHZhbHAtPmlkZW50ID0gbWFrZUlkZW50aWZpZXIoc3RyaW5nU3Rh
cnQsIGN1cnJlbnRDaGFyYWN0ZXIoKSAtIHN0cmluZ1N0YXJ0KTsKLSAgICBzaGlmdDEoKTsKKyAg
ICBzaGlmdCgpOwogICAgIG1fYXRMaW5lU3RhcnQgPSBmYWxzZTsKICAgICBtX2RlbGltaXRlZCA9
IGZhbHNlOwogICAgIHRva2VuID0gU1RSSU5HOwpAQCAtNTg5LDE3ICs1NjAsMTkgQEAgaW5TdHJp
bmc6CiAgICAgICAgIGlmIChVTkxJS0VMWShtX2N1cnJlbnQgPT0gLTEpKQogICAgICAgICAgICAg
Z290byByZXR1cm5FcnJvcjsKICAgICAgICAgcmVjb3JkMTYobV9jdXJyZW50KTsKLSAgICAgICAg
c2hpZnQxKCk7CisgICAgICAgIHNoaWZ0KCk7CiAgICAgfQogICAgIGdvdG8gZG9uZVN0cmluZzsK
IAogaW5TdHJpbmdFc2NhcGVTZXF1ZW5jZToKLSAgICBzaGlmdDEoKTsKKyAgICBzaGlmdCgpOwog
ICAgIGlmIChtX2N1cnJlbnQgPT0gJ3gnKSB7Ci0gICAgICAgIHNoaWZ0MSgpOwotICAgICAgICBp
ZiAoaXNBU0NJSUhleERpZ2l0KG1fY3VycmVudCkgJiYgaXNBU0NJSUhleERpZ2l0KG1fbmV4dDEp
KSB7Ci0gICAgICAgICAgICByZWNvcmQxNihjb252ZXJ0SGV4KG1fY3VycmVudCwgbV9uZXh0MSkp
OwotICAgICAgICAgICAgc2hpZnQyKCk7CisgICAgICAgIHNoaWZ0KCk7CisgICAgICAgIGlmIChp
c0FTQ0lJSGV4RGlnaXQobV9jdXJyZW50KSAmJiBpc0FTQ0lJSGV4RGlnaXQocGVlaygxKSkpIHsK
KyAgICAgICAgICAgIGludCBwcmV2ID0gbV9jdXJyZW50OworICAgICAgICAgICAgc2hpZnQoKTsK
KyAgICAgICAgICAgIHJlY29yZDE2KGNvbnZlcnRIZXgocHJldiwgbV9jdXJyZW50KSk7CisgICAg
ICAgICAgICBzaGlmdCgpOwogICAgICAgICAgICAgZ290byBpblN0cmluZzsKICAgICAgICAgfQog
ICAgICAgICByZWNvcmQxNigneCcpOwpAQCAtNjA4LDEwICs1ODEsMTAgQEAgaW5TdHJpbmdFc2Nh
cGVTZXF1ZW5jZToKICAgICAgICAgZ290byBpblN0cmluZzsKICAgICB9CiAgICAgaWYgKG1fY3Vy
cmVudCA9PSAndScpIHsKLSAgICAgICAgc2hpZnQxKCk7Ci0gICAgICAgIGlmIChpc0FTQ0lJSGV4
RGlnaXQobV9jdXJyZW50KSAmJiBpc0FTQ0lJSGV4RGlnaXQobV9uZXh0MSkgJiYgaXNBU0NJSUhl
eERpZ2l0KG1fbmV4dDIpICYmIGlzQVNDSUlIZXhEaWdpdChtX25leHQzKSkgewotICAgICAgICAg
ICAgcmVjb3JkMTYoY29udmVydFVuaWNvZGUobV9jdXJyZW50LCBtX25leHQxLCBtX25leHQyLCBt
X25leHQzKSk7Ci0gICAgICAgICAgICBzaGlmdDQoKTsKKyAgICAgICAgc2hpZnQoKTsKKyAgICAg
ICAgdG9rZW4gPSBnZXRVbmljb2RlQ2hhcmFjdGVyKCk7CisgICAgICAgIGlmICh0b2tlbiAhPSAt
MSkgeworICAgICAgICAgICAgcmVjb3JkMTYodG9rZW4pOwogICAgICAgICAgICAgZ290byBpblN0
cmluZzsKICAgICAgICAgfQogICAgICAgICBpZiAobV9jdXJyZW50ID09IHN0cmluZ1F1b3RlQ2hh
cmFjdGVyKSB7CkBAIC02MjEsMTggKzU5NCwyMSBAQCBpblN0cmluZ0VzY2FwZVNlcXVlbmNlOgog
ICAgICAgICBnb3RvIHJldHVybkVycm9yOwogICAgIH0KICAgICBpZiAoaXNBU0NJSU9jdGFsRGln
aXQobV9jdXJyZW50KSkgewotICAgICAgICBpZiAobV9jdXJyZW50ID49ICcwJyAmJiBtX2N1cnJl
bnQgPD0gJzMnICYmIGlzQVNDSUlPY3RhbERpZ2l0KG1fbmV4dDEpICYmIGlzQVNDSUlPY3RhbERp
Z2l0KG1fbmV4dDIpKSB7Ci0gICAgICAgICAgICByZWNvcmQxNigobV9jdXJyZW50IC0gJzAnKSAq
IDY0ICsgKG1fbmV4dDEgLSAnMCcpICogOCArIG1fbmV4dDIgLSAnMCcpOwotICAgICAgICAgICAg
c2hpZnQzKCk7CisgICAgICAgIGludCBjaGFyMSA9IG1fY3VycmVudDsKKyAgICAgICAgc2hpZnQo
KTsKKyAgICAgICAgaWYgKGNoYXIxID49ICcwJyAmJiBjaGFyMSA8PSAnMycgJiYgaXNBU0NJSU9j
dGFsRGlnaXQobV9jdXJyZW50KSAmJiBpc0FTQ0lJT2N0YWxEaWdpdChwZWVrKDEpKSkgeworICAg
ICAgICAgICAgaW50IGNoYXIyID0gbV9jdXJyZW50OworICAgICAgICAgICAgc2hpZnQoKTsKKyAg
ICAgICAgICAgIHJlY29yZDE2KChjaGFyMSAtICcwJykgKiA2NCArIChjaGFyMiAtICcwJykgKiA4
ICsgbV9jdXJyZW50IC0gJzAnKTsKKyAgICAgICAgICAgIHNoaWZ0KCk7CiAgICAgICAgICAgICBn
b3RvIGluU3RyaW5nOwogICAgICAgICB9Ci0gICAgICAgIGlmIChpc0FTQ0lJT2N0YWxEaWdpdCht
X25leHQxKSkgewotICAgICAgICAgICAgcmVjb3JkMTYoKG1fY3VycmVudCAtICcwJykgKiA4ICsg
bV9uZXh0MSAtICcwJyk7Ci0gICAgICAgICAgICBzaGlmdDIoKTsKKyAgICAgICAgaWYgKGlzQVND
SUlPY3RhbERpZ2l0KG1fY3VycmVudCkpIHsKKyAgICAgICAgICAgIHJlY29yZDE2KChjaGFyMSAt
ICcwJykgKiA4ICsgbV9jdXJyZW50IC0gJzAnKTsKKyAgICAgICAgICAgIHNoaWZ0KCk7CiAgICAg
ICAgICAgICBnb3RvIGluU3RyaW5nOwogICAgICAgICB9Ci0gICAgICAgIHJlY29yZDE2KG1fY3Vy
cmVudCAtICcwJyk7Ci0gICAgICAgIHNoaWZ0MSgpOworICAgICAgICByZWNvcmQxNihjaGFyMSAt
ICcwJyk7CiAgICAgICAgIGdvdG8gaW5TdHJpbmc7CiAgICAgfQogICAgIGlmIChpc0xpbmVUZXJt
aW5hdG9yKG1fY3VycmVudCkpIHsKQEAgLTY0MiwyOCArNjE4LDMxIEBAIGluU3RyaW5nRXNjYXBl
U2VxdWVuY2U6CiAgICAgaWYgKG1fY3VycmVudCA9PSAtMSkKICAgICAgICAgZ290byByZXR1cm5F
cnJvcjsKICAgICByZWNvcmQxNihzaW5nbGVFc2NhcGUobV9jdXJyZW50KSk7Ci0gICAgc2hpZnQx
KCk7CisgICAgc2hpZnQoKTsKICAgICBnb3RvIGluU3RyaW5nOwogfQogCi1zdGFydElkZW50aWZp
ZXJXaXRoQmFja3NsYXNoOgotICAgIHNoaWZ0MSgpOworc3RhcnRJZGVudGlmaWVyV2l0aEJhY2tz
bGFzaDogeworICAgIHNoaWZ0KCk7CiAgICAgaWYgKFVOTElLRUxZKG1fY3VycmVudCAhPSAndScp
KQogICAgICAgICBnb3RvIHJldHVybkVycm9yOwotICAgIHNoaWZ0MSgpOwotICAgIGlmIChVTkxJ
S0VMWSghaXNBU0NJSUhleERpZ2l0KG1fY3VycmVudCkgfHwgIWlzQVNDSUlIZXhEaWdpdChtX25l
eHQxKSB8fCAhaXNBU0NJSUhleERpZ2l0KG1fbmV4dDIpIHx8ICFpc0FTQ0lJSGV4RGlnaXQobV9u
ZXh0MykpKQorICAgIHNoaWZ0KCk7CisKKyAgICB0b2tlbiA9IGdldFVuaWNvZGVDaGFyYWN0ZXIo
KTsKKyAgICBpZiAoVU5MSUtFTFkodG9rZW4gPT0gLTEpKQogICAgICAgICBnb3RvIHJldHVybkVy
cm9yOwotICAgIHRva2VuID0gY29udmVydFVuaWNvZGUobV9jdXJyZW50LCBtX25leHQxLCBtX25l
eHQyLCBtX25leHQzKTsKICAgICBpZiAoVU5MSUtFTFkoIWlzSWRlbnRTdGFydCh0b2tlbikpKQog
ICAgICAgICBnb3RvIHJldHVybkVycm9yOwogICAgIGdvdG8gaW5JZGVudGlmaWVyQWZ0ZXJDaGFy
YWN0ZXJDaGVjazsKK30KIAogc3RhcnRJZGVudGlmaWVyT3JLZXl3b3JkOiB7CiAgICAgY29uc3Qg
VUNoYXIqIGlkZW50aWZpZXJTdGFydCA9IGN1cnJlbnRDaGFyYWN0ZXIoKTsKLSAgICBzaGlmdDEo
KTsKKyAgICBzaGlmdCgpOwogICAgIHdoaWxlIChpc0lkZW50UGFydChtX2N1cnJlbnQpKQotICAg
ICAgICBzaGlmdDEoKTsKKyAgICAgICAgc2hpZnQoKTsKICAgICBpZiAoTElLRUxZKG1fY3VycmVu
dCAhPSAnXFwnKSkgeworICAgICAgICAvLyBGYXN0IGNhc2UgZm9yIGlkZW50cyB3aGljaCBkb2Vz
IG5vdCBjb250YWluIFx1Q0NDQyBjaGFyYWN0ZXJzCiAgICAgICAgIGx2YWxwLT5pZGVudCA9IG1h
a2VJZGVudGlmaWVyKGlkZW50aWZpZXJTdGFydCwgY3VycmVudENoYXJhY3RlcigpIC0gaWRlbnRp
ZmllclN0YXJ0KTsKICAgICAgICAgZ290byBkb25lSWRlbnRpZmllck9yS2V5d29yZDsKICAgICB9
CkBAIC02NzEsMjIgKzY1MCwyMSBAQCBzdGFydElkZW50aWZpZXJPcktleXdvcmQ6IHsKIH0KIAog
ICAgIGRvIHsKLSAgICAgICAgc2hpZnQxKCk7CisgICAgICAgIHNoaWZ0KCk7CiAgICAgICAgIGlm
IChVTkxJS0VMWShtX2N1cnJlbnQgIT0gJ3UnKSkKICAgICAgICAgICAgIGdvdG8gcmV0dXJuRXJy
b3I7Ci0gICAgICAgIHNoaWZ0MSgpOwotICAgICAgICBpZiAoVU5MSUtFTFkoIWlzQVNDSUlIZXhE
aWdpdChtX2N1cnJlbnQpIHx8ICFpc0FTQ0lJSGV4RGlnaXQobV9uZXh0MSkgfHwgIWlzQVNDSUlI
ZXhEaWdpdChtX25leHQyKSB8fCAhaXNBU0NJSUhleERpZ2l0KG1fbmV4dDMpKSkKKyAgICAgICAg
c2hpZnQoKTsKKyAgICAgICAgdG9rZW4gPSBnZXRVbmljb2RlQ2hhcmFjdGVyKCk7CisgICAgICAg
IGlmIChVTkxJS0VMWSh0b2tlbiA9PSAtMSkpCiAgICAgICAgICAgICBnb3RvIHJldHVybkVycm9y
OwotICAgICAgICB0b2tlbiA9IGNvbnZlcnRVbmljb2RlKG1fY3VycmVudCwgbV9uZXh0MSwgbV9u
ZXh0MiwgbV9uZXh0Myk7CiAgICAgICAgIGlmIChVTkxJS0VMWSghaXNJZGVudFBhcnQodG9rZW4p
KSkKICAgICAgICAgICAgIGdvdG8gcmV0dXJuRXJyb3I7CiBpbklkZW50aWZpZXJBZnRlckNoYXJh
Y3RlckNoZWNrOgogICAgICAgICByZWNvcmQxNih0b2tlbik7Ci0gICAgICAgIHNoaWZ0NCgpOwog
CiAgICAgICAgIHdoaWxlIChpc0lkZW50UGFydChtX2N1cnJlbnQpKSB7CiAgICAgICAgICAgICBy
ZWNvcmQxNihtX2N1cnJlbnQpOwotICAgICAgICAgICAgc2hpZnQxKCk7CisgICAgICAgICAgICBz
aGlmdCgpOwogICAgICAgICB9CiAgICAgfSB3aGlsZSAoVU5MSUtFTFkobV9jdXJyZW50ID09ICdc
XCcpKTsKICAgICBnb3RvIGRvbmVJZGVudGlmaWVyOwpAQCAtNjk1LDcgKzY3Myw3IEBAIGluU2lu
Z2xlTGluZUNvbW1lbnQ6CiAgICAgd2hpbGUgKCFpc0xpbmVUZXJtaW5hdG9yKG1fY3VycmVudCkp
IHsKICAgICAgICAgaWYgKFVOTElLRUxZKG1fY3VycmVudCA9PSAtMSkpCiAgICAgICAgICAgICBy
ZXR1cm4gMDsKLSAgICAgICAgc2hpZnQxKCk7CisgICAgICAgIHNoaWZ0KCk7CiAgICAgfQogICAg
IHNoaWZ0TGluZVRlcm1pbmF0b3IoKTsKICAgICBtX2F0TGluZVN0YXJ0ID0gdHJ1ZTsKQEAgLTcw
NSwzNiArNjgzLDQzIEBAIGluU2luZ2xlTGluZUNvbW1lbnQ6CiAgICAgZ290byBzdGFydDsKIAog
aW5NdWx0aUxpbmVDb21tZW50OgotICAgIHNoaWZ0MigpOwotICAgIHdoaWxlIChtX2N1cnJlbnQg
IT0gJyonIHx8IG1fbmV4dDEgIT0gJy8nKSB7CisgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAg
aWYgKFVOTElLRUxZKG1fY3VycmVudCA9PSAnKicpKSB7CisgICAgICAgICAgICBzaGlmdCgpOwor
ICAgICAgICAgICAgaWYgKG1fY3VycmVudCA9PSAnLycpCisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICBpZiAobV9jdXJyZW50ID09ICcqJykKKyAgICAgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChVTkxJS0VMWShtX2N1cnJlbnQgPT0gLTEp
KQorICAgICAgICAgICAgZ290byByZXR1cm5FcnJvcjsKKwogICAgICAgICBpZiAoaXNMaW5lVGVy
bWluYXRvcihtX2N1cnJlbnQpKQogICAgICAgICAgICAgc2hpZnRMaW5lVGVybWluYXRvcigpOwot
ICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHNoaWZ0MSgpOwotICAgICAgICAgICAgaWYgKFVO
TElLRUxZKG1fY3VycmVudCA9PSAtMSkpCi0gICAgICAgICAgICAgICAgZ290byByZXR1cm5FcnJv
cjsKLSAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgICAgICBzaGlmdCgpOwogICAgIH0K
LSAgICBzaGlmdDIoKTsKKyAgICBzaGlmdCgpOwogICAgIG1fYXRMaW5lU3RhcnQgPSBmYWxzZTsK
ICAgICBnb3RvIHN0YXJ0OwogCiBzdGFydE51bWJlcldpdGhaZXJvRGlnaXQ6Ci0gICAgc2hpZnQx
KCk7Ci0gICAgaWYgKChtX2N1cnJlbnQgfCAweDIwKSA9PSAneCcgJiYgaXNBU0NJSUhleERpZ2l0
KG1fbmV4dDEpKSB7Ci0gICAgICAgIHNoaWZ0MSgpOworICAgIHNoaWZ0KCk7CisgICAgaWYgKCht
X2N1cnJlbnQgfCAweDIwKSA9PSAneCcgJiYgaXNBU0NJSUhleERpZ2l0KHBlZWsoMSkpKSB7Cisg
ICAgICAgIHNoaWZ0KCk7CiAgICAgICAgIGdvdG8gaW5IZXg7CiAgICAgfQogICAgIGlmIChtX2N1
cnJlbnQgPT0gJy4nKSB7CiAgICAgICAgIHJlY29yZDgoJzAnKTsKICAgICAgICAgcmVjb3JkOCgn
LicpOwotICAgICAgICBzaGlmdDEoKTsKKyAgICAgICAgc2hpZnQoKTsKICAgICAgICAgZ290byBp
bk51bWJlckFmdGVyRGVjaW1hbFBvaW50OwogICAgIH0KICAgICBpZiAoKG1fY3VycmVudCB8IDB4
MjApID09ICdlJykgewogICAgICAgICByZWNvcmQ4KCcwJyk7CiAgICAgICAgIHJlY29yZDgoJ2Un
KTsKLSAgICAgICAgc2hpZnQxKCk7CisgICAgICAgIHNoaWZ0KCk7CiAgICAgICAgIGdvdG8gaW5F
eHBvbmVudEluZGljYXRvcjsKICAgICB9CiAgICAgaWYgKGlzQVNDSUlPY3RhbERpZ2l0KG1fY3Vy
cmVudCkpCkBAIC03NDcsMTEgKzczMiwxMSBAQCBzdGFydE51bWJlcldpdGhaZXJvRGlnaXQ6CiBp
bk51bWJlckFmdGVyRGVjaW1hbFBvaW50OgogICAgIHdoaWxlIChpc0FTQ0lJRGlnaXQobV9jdXJy
ZW50KSkgewogICAgICAgICByZWNvcmQ4KG1fY3VycmVudCk7Ci0gICAgICAgIHNoaWZ0MSgpOwor
ICAgICAgICBzaGlmdCgpOwogICAgIH0KICAgICBpZiAoKG1fY3VycmVudCB8IDB4MjApID09ICdl
JykgewogICAgICAgICByZWNvcmQ4KCdlJyk7Ci0gICAgICAgIHNoaWZ0MSgpOworICAgICAgICBz
aGlmdCgpOwogICAgICAgICBnb3RvIGluRXhwb25lbnRJbmRpY2F0b3I7CiAgICAgfQogICAgIGdv
dG8gZG9uZU51bWJlcjsKQEAgLTc1OSwyMCArNzQ0LDIwIEBAIGluTnVtYmVyQWZ0ZXJEZWNpbWFs
UG9pbnQ6CiBpbkV4cG9uZW50SW5kaWNhdG9yOgogICAgIGlmIChtX2N1cnJlbnQgPT0gJysnIHx8
IG1fY3VycmVudCA9PSAnLScpIHsKICAgICAgICAgcmVjb3JkOChtX2N1cnJlbnQpOwotICAgICAg
ICBzaGlmdDEoKTsKKyAgICAgICAgc2hpZnQoKTsKICAgICB9CiAgICAgaWYgKCFpc0FTQ0lJRGln
aXQobV9jdXJyZW50KSkKICAgICAgICAgZ290byByZXR1cm5FcnJvcjsKICAgICBkbyB7CiAgICAg
ICAgIHJlY29yZDgobV9jdXJyZW50KTsKLSAgICAgICAgc2hpZnQxKCk7CisgICAgICAgIHNoaWZ0
KCk7CiAgICAgfSB3aGlsZSAoaXNBU0NJSURpZ2l0KG1fY3VycmVudCkpOwogICAgIGdvdG8gZG9u
ZU51bWJlcjsKIAogaW5PY3RhbDogewogICAgIGRvIHsKICAgICAgICAgcmVjb3JkOChtX2N1cnJl
bnQpOwotICAgICAgICBzaGlmdDEoKTsKKyAgICAgICAgc2hpZnQoKTsKICAgICB9IHdoaWxlIChp
c0FTQ0lJT2N0YWxEaWdpdChtX2N1cnJlbnQpKTsKICAgICBpZiAoaXNBU0NJSURpZ2l0KG1fY3Vy
cmVudCkpCiAgICAgICAgIGdvdG8gc3RhcnROdW1iZXI7CkBAIC03OTYsNyArNzgxLDcgQEAgaW5P
Y3RhbDogewogaW5IZXg6IHsKICAgICBkbyB7CiAgICAgICAgIHJlY29yZDgobV9jdXJyZW50KTsK
LSAgICAgICAgc2hpZnQxKCk7CisgICAgICAgIHNoaWZ0KCk7CiAgICAgfSB3aGlsZSAoaXNBU0NJ
SUhleERpZ2l0KG1fY3VycmVudCkpOwogCiAgICAgZG91YmxlIGR2YWwgPSAwOwpAQCAtODE3LDE5
ICs4MDIsMTkgQEAgaW5IZXg6IHsKIAogc3RhcnROdW1iZXI6CiAgICAgcmVjb3JkOChtX2N1cnJl
bnQpOwotICAgIHNoaWZ0MSgpOworICAgIHNoaWZ0KCk7CiAgICAgd2hpbGUgKGlzQVNDSUlEaWdp
dChtX2N1cnJlbnQpKSB7CiAgICAgICAgIHJlY29yZDgobV9jdXJyZW50KTsKLSAgICAgICAgc2hp
ZnQxKCk7CisgICAgICAgIHNoaWZ0KCk7CiAgICAgfQogICAgIGlmIChtX2N1cnJlbnQgPT0gJy4n
KSB7CiAgICAgICAgIHJlY29yZDgoJy4nKTsKLSAgICAgICAgc2hpZnQxKCk7CisgICAgICAgIHNo
aWZ0KCk7CiAgICAgICAgIGdvdG8gaW5OdW1iZXJBZnRlckRlY2ltYWxQb2ludDsKICAgICB9CiAg
ICAgaWYgKChtX2N1cnJlbnQgfCAweDIwKSA9PSAnZScpIHsKICAgICAgICAgcmVjb3JkOCgnZScp
OwotICAgICAgICBzaGlmdDEoKTsKKyAgICAgICAgc2hpZnQoKTsKICAgICAgICAgZ290byBpbkV4
cG9uZW50SW5kaWNhdG9yOwogICAgIH0KIApAQCAtODc3LDcgKzg2Miw3IEBAIGRvbmVJZGVudGlm
aWVyT3JLZXl3b3JkOiB7CiAKIGRvbmVTdHJpbmc6CiAgICAgLy8gQXRvbWl6ZSBjb25zdGFudCBz
dHJpbmdzIGluIGNhc2UgdGhleSdyZSBsYXRlciB1c2VkIGluIHByb3BlcnR5IGxvb2t1cC4KLSAg
ICBzaGlmdDEoKTsKKyAgICBzaGlmdCgpOwogICAgIG1fYXRMaW5lU3RhcnQgPSBmYWxzZTsKICAg
ICBtX2RlbGltaXRlZCA9IGZhbHNlOwogICAgIGx2YWxwLT5pZGVudCA9IG1ha2VJZGVudGlmaWVy
KG1fYnVmZmVyMTYuZGF0YSgpLCBtX2J1ZmZlcjE2LnNpemUoKSk7CkBAIC05MjMsNyArOTA4LDcg
QEAgYm9vbCBMZXhlcjo6c2NhblJlZ0V4cChjb25zdCBJZGVudGlmaWVyKiYgcGF0dGVybiwgY29u
c3QgSWRlbnRpZmllciomIGZsYWdzLCBVQ2gKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgfQogCi0gICAgICAgIHNoaWZ0MSgpOworICAgICAgICBzaGlmdCgpOwogCiAgICAgICAg
IGlmIChjdXJyZW50ID09ICcvJyAmJiAhbGFzdFdhc0VzY2FwZSAmJiAhaW5CcmFja2V0cykKICAg
ICAgICAgICAgIGJyZWFrOwpAQCAtOTUzLDcgKzkzOCw3IEBAIGJvb2wgTGV4ZXI6OnNjYW5SZWdF
eHAoY29uc3QgSWRlbnRpZmllciomIHBhdHRlcm4sIGNvbnN0IElkZW50aWZpZXIqJiBmbGFncywg
VUNoCiAKICAgICB3aGlsZSAoaXNJZGVudFBhcnQobV9jdXJyZW50KSkgewogICAgICAgICByZWNv
cmQxNihtX2N1cnJlbnQpOwotICAgICAgICBzaGlmdDEoKTsKKyAgICAgICAgc2hpZnQoKTsKICAg
ICB9CiAKICAgICBmbGFncyA9IG1ha2VJZGVudGlmaWVyKG1fYnVmZmVyMTYuZGF0YSgpLCBtX2J1
ZmZlcjE2LnNpemUoKSk7CkBAIC05NzMsNyArOTU4LDcgQEAgYm9vbCBMZXhlcjo6c2tpcFJlZ0V4
cCgpCiAgICAgICAgIGlmIChpc0xpbmVUZXJtaW5hdG9yKGN1cnJlbnQpIHx8IGN1cnJlbnQgPT0g
LTEpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgc2hpZnQxKCk7CisgICAg
ICAgIHNoaWZ0KCk7CiAKICAgICAgICAgaWYgKGN1cnJlbnQgPT0gJy8nICYmICFsYXN0V2FzRXNj
YXBlICYmICFpbkJyYWNrZXRzKQogICAgICAgICAgICAgYnJlYWs7CkBAIC05OTcsNyArOTgyLDcg
QEAgYm9vbCBMZXhlcjo6c2tpcFJlZ0V4cCgpCiAgICAgfQogCiAgICAgd2hpbGUgKGlzSWRlbnRQ
YXJ0KG1fY3VycmVudCkpCi0gICAgICAgIHNoaWZ0MSgpOworICAgICAgICBzaGlmdCgpOwogCiAg
ICAgcmV0dXJuIHRydWU7CiB9CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4
ZXIuaCBiL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5oCmluZGV4IGYxOTcwOTMuLmVjMjU0
Y2UgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5oCisrKyBiL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9MZXhlci5oCkBAIC0xLDYgKzEsNyBAQAogLyoKICAqICBDb3B5cmln
aHQgKEMpIDE5OTktMjAwMCBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQogICogIENvcHly
aWdodCAoQykgMjAwMiwgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDEwIFpv
bHRhbiBIZXJjemVnICh6aGVyY3plZ0BpbmYudS1zemVnZWQuaHUpCiAgKgogICogIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAq
ICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYwpAQCAtMjYsNiArMjcsNyBAQAogI2luY2x1ZGUgIlBhcnNlckFyZW5hLmgiCiAjaW5jbHVk
ZSAiU291cmNlQ29kZS5oIgogI2luY2x1ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+CisjaW5jbHVkZSA8
d3RmL0Fsd2F5c0lubGluZS5oPgogI2luY2x1ZGUgPHd0Zi9TZWdtZW50ZWRWZWN0b3IuaD4KICNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3VuaWNvZGUvVW5pY29kZS5oPgpA
QCAtNjYsMjQgKzY4LDIzIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBMZXhlcihKU0dsb2Jh
bERhdGEqKTsKICAgICAgICAgfkxleGVyKCk7CiAKLSAgICAgICAgdm9pZCBzaGlmdDEoKTsKLSAg
ICAgICAgdm9pZCBzaGlmdDIoKTsKLSAgICAgICAgdm9pZCBzaGlmdDMoKTsKLSAgICAgICAgdm9p
ZCBzaGlmdDQoKTsKLSAgICAgICAgdm9pZCBzaGlmdExpbmVUZXJtaW5hdG9yKCk7Ci0KICAgICAg
ICAgdm9pZCByZWNvcmQ4KGludCk7CiAgICAgICAgIHZvaWQgcmVjb3JkMTYoaW50KTsKICAgICAg
ICAgdm9pZCByZWNvcmQxNihVQ2hhcik7CiAKICAgICAgICAgdm9pZCBjb3B5Q29kZVdpdGhvdXRC
T01zKCk7CiAKLSAgICAgICAgaW50IGN1cnJlbnRPZmZzZXQoKSBjb25zdDsKLSAgICAgICAgY29u
c3QgVUNoYXIqIGN1cnJlbnRDaGFyYWN0ZXIoKSBjb25zdDsKKyAgICAgICAgQUxXQVlTX0lOTElO
RSB2b2lkIHNoaWZ0KCk7CisgICAgICAgIEFMV0FZU19JTkxJTkUgaW50IHBlZWsoaW50IG9mZnNl
dCk7CisgICAgICAgIGludCBnZXRVbmljb2RlQ2hhcmFjdGVyKCk7CisgICAgICAgIHZvaWQgc2hp
ZnRMaW5lVGVybWluYXRvcigpOworCisgICAgICAgIEFMV0FZU19JTkxJTkUgY29uc3QgVUNoYXIq
IGN1cnJlbnRDaGFyYWN0ZXIoKSBjb25zdDsKKyAgICAgICAgQUxXQVlTX0lOTElORSBpbnQgY3Vy
cmVudE9mZnNldCgpIGNvbnN0OwogCi0gICAgICAgIGNvbnN0IElkZW50aWZpZXIqIG1ha2VJZGVu
dGlmaWVyKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCBzaXplX3QgbGVuZ3RoKTsKKyAgICAgICAg
QUxXQVlTX0lOTElORSBjb25zdCBJZGVudGlmaWVyKiBtYWtlSWRlbnRpZmllcihjb25zdCBVQ2hh
ciogY2hhcmFjdGVycywgc2l6ZV90IGxlbmd0aCk7CiAKLSAgICAgICAgYm9vbCBsYXN0VG9rZW5X
YXNSZXN0cktleXdvcmQoKSBjb25zdDsKKyAgICAgICAgQUxXQVlTX0lOTElORSBib29sIGxhc3RU
b2tlbldhc1Jlc3RyS2V5d29yZCgpIGNvbnN0OwogCiAgICAgICAgIHN0YXRpYyBjb25zdCBzaXpl
X3QgaW5pdGlhbFJlYWRCdWZmZXJDYXBhY2l0eSA9IDMyOwogICAgICAgICAKQEAgLTEwNiwxMCAr
MTA3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgLy8gY3VycmVudCBhbmQgZm9sbG93
aW5nIHVuaWNvZGUgY2hhcmFjdGVycyAoaW50IHRvIGFsbG93IGZvciAtMSBmb3IgZW5kLW9mLWZp
bGUgbWFya2VyKQogICAgICAgICBpbnQgbV9jdXJyZW50OwotICAgICAgICBpbnQgbV9uZXh0MTsK
LSAgICAgICAgaW50IG1fbmV4dDI7Ci0gICAgICAgIGludCBtX25leHQzOwotICAgICAgICAKKwog
ICAgICAgICBJZGVudGlmaWVyQXJlbmEqIG1fYXJlbmE7CiAKICAgICAgICAgSlNHbG9iYWxEYXRh
KiBtX2dsb2JhbERhdGE7Ci0tIAoxLjYuMC40Cgo=
</data>
<flag name="review"
          id="47023"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>