<?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>53471</bug_id>
          
          <creation_ts>2011-01-31 20:20:42 -0800</creation_ts>
          <short_desc>new-run-webkit-tests: support chromium code paths in mock_drt</short_desc>
          <delta_ts>2011-02-02 16:33:38 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</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>
          
          <blocked>49566</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dirk Pranke">dpranke</reporter>
          <assigned_to name="Dirk Pranke">dpranke</assigned_to>
          <cc>abarth</cc>
    
    <cc>eric</cc>
    
    <cc>mihaip</cc>
    
    <cc>tkent</cc>
    
    <cc>tony</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>342991</commentid>
    <comment_count>0</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-01-31 20:20:42 -0800</bug_when>
    <thetext>new-run-webkit-tests: support chromium code paths in mock_drt</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>342992</commentid>
    <comment_count>1</comment_count>
      <attachid>80711</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-01-31 20:21:29 -0800</bug_when>
    <thetext>Created attachment 80711
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>342993</commentid>
    <comment_count>2</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-01-31 20:26:03 -0800</bug_when>
    <thetext>This patch makes the &quot;TestShell&quot; code paths for the mock- * implementation of DRT work - we write the image file to the file system, and output the correct text for the chromium.py code path.

One non-obvious change in this patch: in the run_one_test method of MockDRT, there previously were calls to UTF-8 encode the output returned from reading the text_file. It turns out that this would not work when we were mocking out a real platform, because filesystem.read_text_file() doesn&apos;t normally enforce the text being decoded to UTF-8, and it can&apos;t, since there is at least one file containing non-UTF-8 input
(svg/text/caret-in-svg-text-expected.txt). 

This is probably a bug in the checked-in baseline, but I&apos;m still not sure if the output from DRT is always supposed to be UTF-8 or not. Arguably this should be a separate patch from the Chromium code path changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>342997</commentid>
    <comment_count>3</comment_count>
      <attachid>80713</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-01-31 20:33:51 -0800</bug_when>
    <thetext>Created attachment 80713
fix missing filesystem import</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>344292</commentid>
    <comment_count>4</comment_count>
      <attachid>80713</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-02-02 15:01:14 -0800</bug_when>
    <thetext>Comment on attachment 80713
fix missing filesystem import

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

&gt; Tools/Scripts/webkitpy/layout_tests/port/mock_drt.py:130
&gt; -    option_parser = optparse.OptionParser(option_list=option_list)
&gt; -    return option_parser.parse_args(argv)
&gt; +    platform_index = argv.index(&apos;--platform&apos;)
&gt; +    platform = argv[platform_index + 1]

What&apos;s wrong with using optparse here?  You could still convert it into a base.DummyOptions.

&gt; Tools/Scripts/webkitpy/layout_tests/port/mock_drt.py:177
&gt; +        vals = line.strip().split(&quot;&apos;&quot;)
&gt; +        if len(vals) == 1:
&gt; +            return (vals[0], None, None)
&gt; +        return (vals[0], None, vals[1])

I would prefer if this returned a class to improve readability.  It&apos;s not obvious what the three values being returned are.

&gt; Tools/Scripts/webkitpy/layout_tests/port/mock_drt.py:214
&gt; +class MockChromiumDRT(MockDRT):
&gt; +    def parse_input(self, line):
&gt; +        vals = line.split()

This could share the same class as above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>344308</commentid>
    <comment_count>5</comment_count>
      <attachid>80713</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-02-02 15:31:25 -0800</bug_when>
    <thetext>Comment on attachment 80713
fix missing filesystem import

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

&gt;&gt; Tools/Scripts/webkitpy/layout_tests/port/mock_drt.py:130
&gt;&gt; +    platform = argv[platform_index + 1]
&gt; 
&gt; What&apos;s wrong with using optparse here?  You could still convert it into a base.DummyOptions.

We can&apos;t use optparse because the WebKitDriver syntax uses --pixel-tests as a boolean, and ChromiumDriver uses --pixel-test=&lt;path&gt; as a field. In addition optparse will complain if it gets command line flags it doesn&apos;t recognize, and I don&apos;t want to repeat all of the possible options here (I don&apos;t even care about them).

&gt;&gt; Tools/Scripts/webkitpy/layout_tests/port/mock_drt.py:177
&gt;&gt; +        return (vals[0], None, vals[1])
&gt; 
&gt; I would prefer if this returned a class to improve readability.  It&apos;s not obvious what the three values being returned are.

Okay. I don&apos;t have the aversion to tuples that you do, but I agree it&apos;s a bit undercommented otherwise.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>344341</commentid>
    <comment_count>6</comment_count>
      <attachid>80989</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-02-02 15:56:20 -0800</bug_when>
    <thetext>Created attachment 80989
revise w/ tony&apos;s review feedback</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>344372</commentid>
    <comment_count>7</comment_count>
      <attachid>80989</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-02-02 16:17:46 -0800</bug_when>
    <thetext>Comment on attachment 80989
revise w/ tony&apos;s review feedback

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

&gt; Tools/Scripts/webkitpy/layout_tests/port/mock_drt.py:238
&gt; +            self.uri, self.timeout, self.checksum = vals
&gt; +        else:
&gt; +            self.uri = vals[0]
&gt; +            self.timeout = vals[1]

Why do we bother saving the timeout if we&apos;re not going to use it?  You could document it with a comment if you wanted.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>344389</commentid>
    <comment_count>8</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-02-02 16:31:24 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 80989 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=80989&amp;action=review
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/layout_tests/port/mock_drt.py:238
&gt; &gt; +            self.uri, self.timeout, self.checksum = vals
&gt; &gt; +        else:
&gt; &gt; +            self.uri = vals[0]
&gt; &gt; +            self.timeout = vals[1]
&gt; 
&gt; Why do we bother saving the timeout if we&apos;re not going to use it?  You could document it with a comment if you wanted.

No huge reason, but I figured it made things a little clearer to keep around. Eventually this&apos;ll switch over to the DriverInput class (as per the FIXME).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>344391</commentid>
    <comment_count>9</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-02-02 16:33:38 -0800</bug_when>
    <thetext>Committed r77431: &lt;http://trac.webkit.org/changeset/77431&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>80711</attachid>
            <date>2011-01-31 20:21:29 -0800</date>
            <delta_ts>2011-01-31 20:33:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-53471-20110131202127.patch</filename>
            <type>text/plain</type>
            <size>17828</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAzNDE1
NTQ2NTFjZmE3M2JiZTE1MGI3MmU5NmFjYmJmZWJkZDExYzAwLi41MWYwZmYwZWZlZGZiNmJkMTlm
YjAzYmZmYTYxNzU4ZDA3ZTQ0NzJkIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMDEtMzEgIERpcmsgUHJhbmtl
ICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgbmV3LXJ1bi13ZWJraXQtdGVzdHM6IHN1cHBvcnQgY2hyb21pdW0g
Y29kZSBwYXRocyBpbiBtb2NrX2RydAorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD01MzQ3MQorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcG9ydC9tb2NrX2RydC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L21vY2tfZHJ0X3VuaXR0ZXN0LnB5OgorCiAyMDExLTAxLTMxICBNaWhh
aSBQYXJwYXJpdGEgIDxtaWhhaXBAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IFRvbnkgQ2hhbmcuCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9wb3J0L21vY2tfZHJ0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcG9ydC9tb2NrX2RydC5weQppbmRleCBhMjYxYWEyY2ViZDc0MTA5MGJkOGE2Y2U3ZGQyNjM4
ZTVhNmM2OGUxLi44MjBjNmYyOWI2NDUzODZlMWFlZjQxYjg2NWJlMjU1OTE3NWU0NjUxIDEwMDY0
NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L21vY2tfZHJ0
LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvbW9ja19k
cnQucHkKQEAgLTgxLDcgKzgxLDYgQEAgY2xhc3MgTW9ja0RSVFBvcnQob2JqZWN0KToKICAgICAg
ICAgIyBtZXRob2QgdGhhdCBzcGxpY2VzIGluIHRoZSBtb2NrX2RydCBwYXRoIGFuZCBjb21tYW5k
IGxpbmUgYXJndW1lbnRzCiAgICAgICAgICMgaW4gcGxhY2Ugb2YgdGhlIGFjdHVhbCBwYXRoIHRv
IHRoZSBkcml2ZXIgYmluYXJ5LgogCi0gICAgICAgICMgRklYTUU6IFRoaXMgZG9lc24ndCB5ZXQg
d29yayBmb3IgQ2hyb21pdW0gdGVzdF9zaGVsbCBwb3J0cy4KICAgICAgICAgZGVmIG92ZXJyaWRp
bmdfY21kX2xpbmUoKToKICAgICAgICAgICAgIGNtZCA9IHNlbGYuX19vcmlnaW5hbF9kcml2ZXJf
Y21kX2xpbmUoKQogICAgICAgICAgICAgaW5kZXggPSBjbWQuaW5kZXgoc2VsZi5fX2RlbGVnYXRl
Ll9wYXRoX3RvX2RyaXZlcigpKQpAQCAtMTEzLDM0ICsxMTIsNDQgQEAgY2xhc3MgTW9ja0RSVFBv
cnQob2JqZWN0KToKICAgICAgICAgcGFzcwogCiAKLWRlZiBtYWluKGFyZ3YsIHN0ZGluLCBzdGRv
dXQsIHN0ZGVycik6CitkZWYgbWFpbihhcmd2LCBmcywgc3RkaW4sIHN0ZG91dCwgc3RkZXJyKToK
ICAgICAiIiJSdW4gdGhlIHRlc3RzLiIiIgogCiAgICAgb3B0aW9ucywgYXJncyA9IHBhcnNlX29w
dGlvbnMoYXJndikKLSAgICBkcnQgPSBNb2NrRFJUKG9wdGlvbnMsIGFyZ3MsIHN0ZGluLCBzdGRv
dXQsIHN0ZGVycikKKyAgICBpZiBvcHRpb25zLmNocm9taXVtOgorICAgICAgICBkcnQgPSBNb2Nr
Q2hyb21pdW1EUlQob3B0aW9ucywgYXJncywgZnMsIHN0ZGluLCBzdGRvdXQsIHN0ZGVycikKKyAg
ICBlbHNlOgorICAgICAgICBkcnQgPSBNb2NrRFJUKG9wdGlvbnMsIGFyZ3MsIGZzLCBzdGRpbiwg
c3Rkb3V0LCBzdGRlcnIpCiAgICAgcmV0dXJuIGRydC5ydW4oKQogCiAKIGRlZiBwYXJzZV9vcHRp
b25zKGFyZ3YpOgotICAgICMgRklYTUU6IFdlIG5lZWQgdG8gZmlndXJlIG91dCBob3cgdG8gaGFu
ZGxlIHZhcmlhbnRzIHRoYXQgaGF2ZQotICAgICMgZGlmZmVyZW50IGNvbW1hbmQtbGluZSBjb252
ZW50aW9ucy4KLSAgICBvcHRpb25fbGlzdCA9IFsKLSAgICAgICAgb3B0cGFyc2UubWFrZV9vcHRp
b24oJy0tcGxhdGZvcm0nLCBhY3Rpb249J3N0b3JlJywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaGVscD0ncGxhdGZvcm0gdG8gZW11bGF0ZScpLAotICAgICAgICBvcHRwYXJzZS5tYWtl
X29wdGlvbignLS1sYXlvdXQtdGVzdHMnLCBhY3Rpb249J3N0b3JlX3RydWUnLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PVRydWUsIGhlbHA9J3J1biBsYXlvdXQgdGVzdHMn
KSwKLSAgICAgICAgb3B0cGFyc2UubWFrZV9vcHRpb24oJy0tcGl4ZWwtdGVzdHMnLCBhY3Rpb249
J3N0b3JlX3RydWUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PUZhbHNl
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdvdXRwdXQgaW1hZ2UgZm9yIHBp
eGVsIHRlc3RzJyksCi0gICAgXQotICAgIG9wdGlvbl9wYXJzZXIgPSBvcHRwYXJzZS5PcHRpb25Q
YXJzZXIob3B0aW9uX2xpc3Q9b3B0aW9uX2xpc3QpCi0gICAgcmV0dXJuIG9wdGlvbl9wYXJzZXIu
cGFyc2VfYXJncyhhcmd2KQorICAgIHBsYXRmb3JtX2luZGV4ID0gYXJndi5pbmRleCgnLS1wbGF0
Zm9ybScpCisgICAgcGxhdGZvcm0gPSBhcmd2W3BsYXRmb3JtX2luZGV4ICsgMV0KKworICAgIHBp
eGVsX3Rlc3RzID0gRmFsc2UKKyAgICBwaXhlbF9wYXRoID0gTm9uZQorICAgIGNocm9taXVtID0g
RmFsc2UKKyAgICBpZiBwbGF0Zm9ybS5zdGFydHN3aXRoKCdjaHJvbWl1bScpOgorICAgICAgICBj
aHJvbWl1bSA9IFRydWUKKyAgICAgICAgZm9yIGFyZyBpbiBhcmd2OgorICAgICAgICAgICAgaWYg
YXJnLnN0YXJ0c3dpdGgoJy0tcGl4ZWwtdGVzdHMnKToKKyAgICAgICAgICAgICAgICBwaXhlbF90
ZXN0cyA9IFRydWUKKyAgICAgICAgICAgICAgICBwaXhlbF9wYXRoID0gYXJnW2xlbignLS1waXhl
bC10ZXN0cz0nKTpdCisgICAgZWxzZToKKyAgICAgICAgcGl4ZWxfdGVzdHMgPSAnLS1waXhlbC10
ZXN0cycgaW4gYXJndgorICAgIG9wdGlvbnMgPSBiYXNlLkR1bW15T3B0aW9ucyhjaHJvbWl1bT1j
aHJvbWl1bSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhdGZvcm09cGxhdGZv
cm0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpeGVsX3Rlc3RzPXBpeGVsX3Rl
c3RzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaXhlbF9wYXRoPXBpeGVsX3Bh
dGgpCisgICAgcmV0dXJuIChvcHRpb25zLCBbXSkKIAogCiBjbGFzcyBNb2NrRFJUKG9iamVjdCk6
Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG9wdGlvbnMsIGFyZ3MsIHN0ZGluLCBzdGRvdXQsIHN0
ZGVycik6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG9wdGlvbnMsIGFyZ3MsIGZpbGVzeXN0ZW0s
IHN0ZGluLCBzdGRvdXQsIHN0ZGVycik6CiAgICAgICAgIHNlbGYuX29wdGlvbnMgPSBvcHRpb25z
CiAgICAgICAgIHNlbGYuX2FyZ3MgPSBhcmdzCisgICAgICAgIHNlbGYuX2ZpbGVzeXN0ZW0gPSBm
aWxlc3lzdGVtCiAgICAgICAgIHNlbGYuX3N0ZG91dCA9IHN0ZG91dAogICAgICAgICBzZWxmLl9z
dGRpbiA9IHN0ZGluCiAgICAgICAgIHNlbGYuX3N0ZGVyciA9IHN0ZGVycgpAQCAtMTQ4LDU3ICsx
NTcsOTMgQEAgY2xhc3MgTW9ja0RSVChvYmplY3QpOgogICAgICAgICBwb3J0X25hbWUgPSBOb25l
CiAgICAgICAgIGlmIG9wdGlvbnMucGxhdGZvcm06CiAgICAgICAgICAgICBwb3J0X25hbWUgPSBv
cHRpb25zLnBsYXRmb3JtCi0gICAgICAgIHNlbGYuX3BvcnQgPSBmYWN0b3J5LmdldChwb3J0X25h
bWUsIG9wdGlvbnM9b3B0aW9ucykKKyAgICAgICAgc2VsZi5fcG9ydCA9IGZhY3RvcnkuZ2V0KHBv
cnRfbmFtZSwgb3B0aW9ucz1vcHRpb25zLCBmaWxlc3lzdGVtPWZpbGVzeXN0ZW0pCiAKICAgICBk
ZWYgcnVuKHNlbGYpOgogICAgICAgICB3aGlsZSBUcnVlOgogICAgICAgICAgICAgbGluZSA9IHNl
bGYuX3N0ZGluLnJlYWRsaW5lKCkKICAgICAgICAgICAgIGlmIG5vdCBsaW5lOgogICAgICAgICAg
ICAgICAgIGJyZWFrCi0KLSAgICAgICAgICAgIHVybCwgZXhwZWN0ZWRfY2hlY2tzdW0gPSBzZWxm
LnBhcnNlX2lucHV0KGxpbmUpCi0gICAgICAgICAgICBzZWxmLnJ1bl9vbmVfdGVzdCh1cmwsIGV4
cGVjdGVkX2NoZWNrc3VtKQorICAgICAgICAgICAgdXJsLCB0aW1lb3V0LCBjaGVja3N1bSA9IHNl
bGYucGFyc2VfaW5wdXQobGluZSkKKyAgICAgICAgICAgIHNlbGYucnVuX29uZV90ZXN0KHVybCwg
dGltZW91dCwgY2hlY2tzdW0pCiAgICAgICAgIHJldHVybiAwCiAKICAgICBkZWYgcGFyc2VfaW5w
dXQoc2VsZiwgbGluZSk6Ci0gICAgICAgIGxpbmUgPSBsaW5lLnN0cmlwKCkKLSAgICAgICAgaWYg
IiciIGluIGxpbmU6Ci0gICAgICAgICAgICByZXR1cm4gbGluZS5zcGxpdCgiJyIsIDEpCi0gICAg
ICAgIHJldHVybiAobGluZSwgTm9uZSkKLQotICAgIGRlZiByYXdfYnl0ZXMoc2VsZiwgdW5pY29k
ZV9zdHIpOgotICAgICAgICByZXR1cm4gdW5pY29kZV9zdHIuZW5jb2RlKCd1dGYtOCcpCisgICAg
ICAgIHZhbHMgPSBsaW5lLnN0cmlwKCkuc3BsaXQoIiciKQorICAgICAgICBpZiBsZW4odmFscykg
PT0gMToKKyAgICAgICAgICAgIHJldHVybiAodmFsc1swXSwgTm9uZSwgTm9uZSkKKyAgICAgICAg
cmV0dXJuICh2YWxzWzBdLCBOb25lLCB2YWxzWzFdKQogCi0gICAgZGVmIHJ1bl9vbmVfdGVzdChz
ZWxmLCB1cmwsIGV4cGVjdGVkX2NoZWNrc3VtKToKKyAgICBkZWYgcnVuX29uZV90ZXN0KHNlbGYs
IHVybCwgdGltZW91dCwgZXhwZWN0ZWRfY2hlY2tzdW0pOgogICAgICAgICBwb3J0ID0gc2VsZi5f
cG9ydAogICAgICAgICBpZiB1cmwuc3RhcnRzd2l0aCgnaHR0cCcpOgogICAgICAgICAgICAgdGVz
dF9uYW1lID0gcG9ydC51cmlfdG9fdGVzdF9uYW1lKHVybCkKLSAgICAgICAgICAgIHRlc3RfcGF0
aCA9IHBvcnQuX2ZpbGVzeXN0ZW0uam9pbihwb3J0LmxheW91dF90ZXN0c19kaXIoKSwgdGVzdF9u
YW1lKQorICAgICAgICAgICAgdGVzdF9wYXRoID0gc2VsZi5fZmlsZXN5c3RlbS5qb2luKHBvcnQu
bGF5b3V0X3Rlc3RzX2RpcigpLCB0ZXN0X25hbWUpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAg
ICB0ZXN0X3BhdGggPSB1cmwKIAotICAgICAgICBhY3R1YWxfdGV4dF9ieXRlcyA9IHNlbGYucmF3
X2J5dGVzKHBvcnQuZXhwZWN0ZWRfdGV4dCh0ZXN0X3BhdGgpKQorICAgICAgICBhY3R1YWxfdGV4
dCA9IHBvcnQuZXhwZWN0ZWRfdGV4dCh0ZXN0X3BhdGgpCiAgICAgICAgIGlmIHNlbGYuX29wdGlv
bnMucGl4ZWxfdGVzdHMgYW5kIGV4cGVjdGVkX2NoZWNrc3VtOgotICAgICAgICAgICAgYWN0dWFs
X2NoZWNrc3VtX2J5dGVzID0gc2VsZi5yYXdfYnl0ZXMocG9ydC5leHBlY3RlZF9jaGVja3N1bSh0
ZXN0X3BhdGgpKQotICAgICAgICAgICAgYWN0dWFsX2ltYWdlX2J5dGVzID0gcG9ydC5leHBlY3Rl
ZF9pbWFnZSh0ZXN0X3BhdGgpCisgICAgICAgICAgICBhY3R1YWxfY2hlY2tzdW0gPSBwb3J0LmV4
cGVjdGVkX2NoZWNrc3VtKHRlc3RfcGF0aCkKKyAgICAgICAgICAgIGFjdHVhbF9pbWFnZSA9IHBv
cnQuZXhwZWN0ZWRfaW1hZ2UodGVzdF9wYXRoKQogCiAgICAgICAgIHNlbGYuX3N0ZG91dC53cml0
ZSgnQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluXG4nKQotICAgICAgICBzZWxmLl9zdGRvdXQud3Jp
dGUoYWN0dWFsX3RleHRfYnl0ZXMpCisKKyAgICAgICAgIyBGSVhNRTogTm90ZSB0aGF0IHdlIGRv
bid0IGVuc3VyZSB0aGVyZSBpcyBhIHRyYWlsaW5nIG5ld2xpbmUhCisgICAgICAgICMgVGhpcyBt
aXJyb3JzIGFjdHVhbCAoTWFjKSBEUlQgYmVoYXZpb3IgYnV0IGlzIGEgYnVnLgorICAgICAgICBz
ZWxmLl9zdGRvdXQud3JpdGUoYWN0dWFsX3RleHQpCiAgICAgICAgIHNlbGYuX3N0ZG91dC53cml0
ZSgnI0VPRlxuJykKIAogICAgICAgICBpZiBzZWxmLl9vcHRpb25zLnBpeGVsX3Rlc3RzIGFuZCBl
eHBlY3RlZF9jaGVja3N1bToKLSAgICAgICAgICAgIGV4cGVjdGVkX2NoZWNrc3VtX2J5dGVzID0g
c2VsZi5yYXdfYnl0ZXMoZXhwZWN0ZWRfY2hlY2tzdW0pCiAgICAgICAgICAgICBzZWxmLl9zdGRv
dXQud3JpdGUoJ1xuJykKLSAgICAgICAgICAgIHNlbGYuX3N0ZG91dC53cml0ZSgnQWN0dWFsSGFz
aDogJXNcbicgJSBhY3R1YWxfY2hlY2tzdW1fYnl0ZXMpCi0gICAgICAgICAgICBzZWxmLl9zdGRv
dXQud3JpdGUoJ0V4cGVjdGVkSGFzaDogJXNcbicgJSBleHBlY3RlZF9jaGVja3N1bV9ieXRlcykK
LSAgICAgICAgICAgIGlmIGFjdHVhbF9jaGVja3N1bV9ieXRlcyAhPSBleHBlY3RlZF9jaGVja3N1
bV9ieXRlczoKKyAgICAgICAgICAgIHNlbGYuX3N0ZG91dC53cml0ZSgnQWN0dWFsSGFzaDogJXNc
bicgJSBhY3R1YWxfY2hlY2tzdW0pCisgICAgICAgICAgICBzZWxmLl9zdGRvdXQud3JpdGUoJ0V4
cGVjdGVkSGFzaDogJXNcbicgJSBleHBlY3RlZF9jaGVja3N1bSkKKyAgICAgICAgICAgIGlmIGFj
dHVhbF9jaGVja3N1bSAhPSBleHBlY3RlZF9jaGVja3N1bToKICAgICAgICAgICAgICAgICBzZWxm
Ll9zdGRvdXQud3JpdGUoJ0NvbnRlbnQtVHlwZTogaW1hZ2UvcG5nXG4nKQotICAgICAgICAgICAg
ICAgIHNlbGYuX3N0ZG91dC53cml0ZSgnQ29udGVudC1MZW5ndGg6ICVzXG5cbicgJSBsZW4oYWN0
dWFsX2ltYWdlX2J5dGVzKSkKLSAgICAgICAgICAgICAgICBzZWxmLl9zdGRvdXQud3JpdGUoYWN0
dWFsX2ltYWdlX2J5dGVzKQorICAgICAgICAgICAgICAgIHNlbGYuX3N0ZG91dC53cml0ZSgnQ29u
dGVudC1MZW5ndGg6ICVzXG5cbicgJSBsZW4oYWN0dWFsX2ltYWdlKSkKKyAgICAgICAgICAgICAg
ICBzZWxmLl9zdGRvdXQud3JpdGUoYWN0dWFsX2ltYWdlKQogICAgICAgICBzZWxmLl9zdGRvdXQu
d3JpdGUoJyNFT0ZcbicpCiAgICAgICAgIHNlbGYuX3N0ZG91dC5mbHVzaCgpCiAgICAgICAgIHNl
bGYuX3N0ZGVyci5mbHVzaCgpCiAKIAorY2xhc3MgTW9ja0Nocm9taXVtRFJUKE1vY2tEUlQpOgor
ICAgIGRlZiBwYXJzZV9pbnB1dChzZWxmLCBsaW5lKToKKyAgICAgICAgdmFscyA9IGxpbmUuc3Bs
aXQoKQorICAgICAgICBpZiBsZW4odmFscykgPT0gMzoKKyAgICAgICAgICAgIHJldHVybiB2YWxz
CisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gKHZhbHNbMF0sIHZhbHNbMV0sIE5v
bmUpCisKKyAgICBkZWYgcnVuX29uZV90ZXN0KHNlbGYsIHVybCwgdGltZW91dCwgZXhwZWN0ZWRf
Y2hlY2tzdW0pOgorICAgICAgICBwb3J0ID0gc2VsZi5fcG9ydAorICAgICAgICB0ZXN0X25hbWUg
PSBzZWxmLl9wb3J0LnVyaV90b190ZXN0X25hbWUodXJsKQorICAgICAgICB0ZXN0X3BhdGggPSBz
ZWxmLl9maWxlc3lzdGVtLmpvaW4ocG9ydC5sYXlvdXRfdGVzdHNfZGlyKCksIHRlc3RfbmFtZSkK
KworICAgICAgICBhY3R1YWxfdGV4dCA9IHBvcnQuZXhwZWN0ZWRfdGV4dCh0ZXN0X3BhdGgpCisg
ICAgICAgIGFjdHVhbF9pbWFnZSA9ICcnCisgICAgICAgIGFjdHVhbF9jaGVja3N1bSA9ICcnCisg
ICAgICAgIGlmIHNlbGYuX29wdGlvbnMucGl4ZWxfdGVzdHMgYW5kIGV4cGVjdGVkX2NoZWNrc3Vt
OgorICAgICAgICAgICAgYWN0dWFsX2NoZWNrc3VtID0gcG9ydC5leHBlY3RlZF9jaGVja3N1bSh0
ZXN0X3BhdGgpCisgICAgICAgICAgICBpZiBhY3R1YWxfY2hlY2tzdW0gIT0gZXhwZWN0ZWRfY2hl
Y2tzdW06CisgICAgICAgICAgICAgICAgYWN0dWFsX2ltYWdlID0gcG9ydC5leHBlY3RlZF9pbWFn
ZSh0ZXN0X3BhdGgpCisKKyAgICAgICAgc2VsZi5fc3Rkb3V0LndyaXRlKCIjVVJMOiVzXG4iICUg
dXJsKQorICAgICAgICBpZiBzZWxmLl9vcHRpb25zLnBpeGVsX3Rlc3RzIGFuZCBleHBlY3RlZF9j
aGVja3N1bToKKyAgICAgICAgICAgIHNlbGYuX3N0ZG91dC53cml0ZSgiI01ENTolc1xuIiAlIGFj
dHVhbF9jaGVja3N1bSkKKyAgICAgICAgICAgIHNlbGYuX2ZpbGVzeXN0ZW0ud3JpdGVfYmluYXJ5
X2ZpbGUoc2VsZi5fb3B0aW9ucy5waXhlbF9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBhY3R1YWxfaW1hZ2UpCisgICAgICAgIHNlbGYuX3N0ZG91
dC53cml0ZShhY3R1YWxfdGV4dCkKKworICAgICAgICAjIEZJWE1FOiAoU2VlIGFib3ZlIEZJWE1F
IGFzIHdlbGwpLiBDaHJvbWl1bSBEUlQgYXBwZWFycyB0byBhbHdheXMKKyAgICAgICAgIyBlbnN1
cmUgdGhlIHRleHQgb3V0cHV0IGhhcyBhIHRyYWlsaW5nIG5ld2xpbmUuIE1hYyBEUlQgZG9lcyBu
b3QuCisgICAgICAgIGlmIG5vdCBhY3R1YWxfdGV4dC5lbmRzd2l0aCgnXG4nKToKKyAgICAgICAg
ICAgIHNlbGYuX3N0ZG91dC53cml0ZSgnXG4nKQorICAgICAgICBzZWxmLl9zdGRvdXQud3JpdGUo
JyNFT0ZcbicpCisgICAgICAgIHNlbGYuX3N0ZG91dC5mbHVzaCgpCisKKworCiBpZiBfX25hbWVf
XyA9PSAnX19tYWluX18nOgotICAgIHN5cy5leGl0KG1haW4oc3lzLmFyZ3ZbMTpdLCBzeXMuc3Rk
aW4sIHN5cy5zdGRvdXQsIHN5cy5zdGRlcnIpKQorICAgIGZzID0gZmlsZXN5c3RlbS5GaWxlU3lz
dGVtKCkKKyAgICBzeXMuZXhpdChtYWluKHN5cy5hcmd2WzE6XSwgZnMsIHN5cy5zdGRpbiwgc3lz
LnN0ZG91dCwgc3lzLnN0ZGVycikpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9wb3J0L21vY2tfZHJ0X3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9tb2NrX2RydF91bml0dGVzdC5weQppbmRleCAzYWVh
ZmFmYWM0ODFlMmFmMjhjNWY5ZjVkNmE3ZDAyOTdiOWJkNzEyLi4xNTA2MzE1MzFjNWQwMDFmMDQ1
ZGZlMmQwNDBhZmM5MmQ4ZDZlMDRmIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9wb3J0L21vY2tfZHJ0X3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvbW9ja19kcnRfdW5pdHRlc3QucHkKQEAgLTM2
LDYgKzM2LDcgQEAgZnJvbSB3ZWJraXRweS5jb21tb24gaW1wb3J0IG5ld3N0cmluZ2lvCiBmcm9t
IHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0IGltcG9ydCBtb2NrX2RydAogZnJvbSB3ZWJraXRw
eS5sYXlvdXRfdGVzdHMucG9ydCBpbXBvcnQgZmFjdG9yeQogZnJvbSB3ZWJraXRweS5sYXlvdXRf
dGVzdHMucG9ydCBpbXBvcnQgcG9ydF90ZXN0Y2FzZQorZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVz
dHMucG9ydCBpbXBvcnQgdGVzdAogCiAKIGNsYXNzIE1vY2tEUlRQb3J0VGVzdChwb3J0X3Rlc3Rj
YXNlLlBvcnRUZXN0Q2FzZSk6CkBAIC04NywxNSArODgsMTEgQEAgY2xhc3MgTW9ja0RSVFBvcnRU
ZXN0KHBvcnRfdGVzdGNhc2UuUG9ydFRlc3RDYXNlKToKIAogCiBjbGFzcyBNb2NrRFJUVGVzdCh1
bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgZGVmIHNldFVwKHNlbGYpOgotICAgICAgICBzZWxmLl9w
b3J0ID0gZmFjdG9yeS5nZXQoJ3Rlc3QnKQotICAgICAgICBzZWxmLl9sYXlvdXRfdGVzdHNfZGly
ID0gc2VsZi5fcG9ydC5sYXlvdXRfdGVzdHNfZGlyKCkKKyAgICBkZWYgdG9fcGF0aChzZWxmLCBw
b3J0LCB0ZXN0X25hbWUpOgorICAgICAgICByZXR1cm4gcG9ydC5fZmlsZXN5c3RlbS5qb2luKHBv
cnQubGF5b3V0X3Rlc3RzX2RpcigpLCB0ZXN0X25hbWUpCiAKLSAgICBkZWYgdG9fcGF0aChzZWxm
LCB0ZXN0X25hbWUpOgotICAgICAgICByZXR1cm4gc2VsZi5fcG9ydC5fZmlsZXN5c3RlbS5qb2lu
KHNlbGYuX2xheW91dF90ZXN0c19kaXIsIHRlc3RfbmFtZSkKLQotICAgIGRlZiBpbnB1dF9saW5l
KHNlbGYsIHRlc3RfbmFtZSwgY2hlY2tzdW09Tm9uZSk6Ci0gICAgICAgIHVybCA9IHNlbGYuX3Bv
cnQuZmlsZW5hbWVfdG9fdXJpKHNlbGYudG9fcGF0aCh0ZXN0X25hbWUpKQorICAgIGRlZiBpbnB1
dF9saW5lKHNlbGYsIHBvcnQsIHRlc3RfbmFtZSwgY2hlY2tzdW09Tm9uZSk6CisgICAgICAgIHVy
bCA9IHBvcnQuZmlsZW5hbWVfdG9fdXJpKHNlbGYudG9fcGF0aChwb3J0LCB0ZXN0X25hbWUpKQog
ICAgICAgICAjIEZJWE1FOiB3ZSBzaG91bGRuJ3QgaGF2ZSB0byB3b3JrIGFyb3VuZCBwbGF0Zm9y
bS1zcGVjaWZpYyBpc3N1ZXMKICAgICAgICAgIyBoZXJlLgogICAgICAgICBpZiB1cmwuc3RhcnRz
d2l0aCgnZmlsZTovLy8vJyk6CkBAIC0xMDcsNTQgKzEwNCw2MSBAQCBjbGFzcyBNb2NrRFJUVGVz
dCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgICAgICByZXR1cm4gdXJsICsgIiciICsgY2hl
Y2tzdW0gKyAnXG4nCiAgICAgICAgIHJldHVybiB1cmwgKyAnXG4nCiAKLSAgICBkZWYgbWFrZV9k
cnQoc2VsZiwgaW5wdXRfc3RyaW5nLCBleHRyYV9hcmdzPU5vbmUpOgotICAgICAgICBhcmdzID0g
WyctLXBsYXRmb3JtJywgJ3Rlc3QnLCAnLSddCi0gICAgICAgIGV4dHJhX2FyZ3MgPSBleHRyYV9h
cmdzIG9yIFtdCi0gICAgICAgIGFyZ3MgKz0gZXh0cmFfYXJncwotICAgICAgICBzdGRpbiA9IG5l
d3N0cmluZ2lvLlN0cmluZ0lPKGlucHV0X3N0cmluZykKLSAgICAgICAgc3Rkb3V0ID0gbmV3c3Ry
aW5naW8uU3RyaW5nSU8oKQotICAgICAgICBzdGRlcnIgPSBuZXdzdHJpbmdpby5TdHJpbmdJTygp
Ci0gICAgICAgIG9wdGlvbnMsIGFyZ3MgPSBtb2NrX2RydC5wYXJzZV9vcHRpb25zKGFyZ3MpCi0g
ICAgICAgIGRydCA9IG1vY2tfZHJ0Lk1vY2tEUlQob3B0aW9ucywgYXJncywgc3RkaW4sIHN0ZG91
dCwgc3RkZXJyKQotICAgICAgICByZXR1cm4gKGRydCwgc3Rkb3V0LCBzdGRlcnIpCisgICAgZGVm
IGV4dHJhX2FyZ3Moc2VsZiwgcGl4ZWxfdGVzdHMpOgorICAgICAgICBpZiBwaXhlbF90ZXN0czoK
KyAgICAgICAgICAgIHJldHVybiBbJy0tcGl4ZWwtdGVzdHMnLCAnLSddCisgICAgICAgIHJldHVy
biBbJy0nXQogCi0gICAgZGVmIG1ha2VfaW5wdXRfb3V0cHV0KHNlbGYsIHRlc3RfbmFtZSwgcGl4
ZWxfdGVzdHMsIGV4cGVjdGVkX2NoZWNrc3VtLAotICAgICAgICAgICAgICAgICAgICAgICAgICBk
cnRfb3V0cHV0LCBkcnRfaW5wdXQ9Tm9uZSk6Ci0gICAgICAgIHBhdGggPSBzZWxmLnRvX3BhdGgo
dGVzdF9uYW1lKQorICAgIGRlZiBtYWtlX2RydChzZWxmLCBvcHRpb25zLCBhcmdzLCBmaWxlc3lz
dGVtLCBzdGRpbiwgc3Rkb3V0LCBzdGRlcnIpOgorICAgICAgICByZXR1cm4gbW9ja19kcnQuTW9j
a0RSVChvcHRpb25zLCBhcmdzLCBmaWxlc3lzdGVtLCBzdGRpbiwgc3Rkb3V0LCBzdGRlcnIpCisK
KyAgICBkZWYgbWFrZV9pbnB1dF9vdXRwdXQoc2VsZiwgcG9ydCwgdGVzdF9uYW1lLCBwaXhlbF90
ZXN0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfY2hlY2tzdW0sIGRydF9v
dXRwdXQsIGRydF9pbnB1dD1Ob25lKToKKyAgICAgICAgcGF0aCA9IHNlbGYudG9fcGF0aChwb3J0
LCB0ZXN0X25hbWUpCiAgICAgICAgIGlmIHBpeGVsX3Rlc3RzOgogICAgICAgICAgICAgaWYgbm90
IGV4cGVjdGVkX2NoZWNrc3VtOgotICAgICAgICAgICAgICAgIGV4cGVjdGVkX2NoZWNrc3VtID0g
c2VsZi5fcG9ydC5leHBlY3RlZF9jaGVja3N1bShwYXRoKQorICAgICAgICAgICAgICAgIGV4cGVj
dGVkX2NoZWNrc3VtID0gcG9ydC5leHBlY3RlZF9jaGVja3N1bShwYXRoKQogICAgICAgICBpZiBu
b3QgZHJ0X2lucHV0OgotICAgICAgICAgICAgZHJ0X2lucHV0ID0gc2VsZi5pbnB1dF9saW5lKHRl
c3RfbmFtZSwgZXhwZWN0ZWRfY2hlY2tzdW0pCi0gICAgICAgIHRleHRfb3V0cHV0ID0gc2VsZi5f
cG9ydC5leHBlY3RlZF90ZXh0KHBhdGgpCisgICAgICAgICAgICBkcnRfaW5wdXQgPSBzZWxmLmlu
cHV0X2xpbmUocG9ydCwgdGVzdF9uYW1lLCBleHBlY3RlZF9jaGVja3N1bSkKKyAgICAgICAgdGV4
dF9vdXRwdXQgPSBwb3J0LmV4cGVjdGVkX3RleHQocGF0aCkKIAogICAgICAgICBpZiBub3QgZHJ0
X291dHB1dDoKLSAgICAgICAgICAgIGlmIHBpeGVsX3Rlc3RzOgotICAgICAgICAgICAgICAgIGRy
dF9vdXRwdXQgPSBbCi0gICAgICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGU6IHRleHQvcGxh
aW5cbicsCi0gICAgICAgICAgICAgICAgICAgIHRleHRfb3V0cHV0LmVuY29kZSgndXRmLTgnKSwK
KyAgICAgICAgICAgIGRydF9vdXRwdXQgPSBzZWxmLmV4cGVjdGVkX291dHB1dChwb3J0LCB0ZXN0
X25hbWUsIHBpeGVsX3Rlc3RzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHRleHRfb3V0cHV0LCBleHBlY3RlZF9jaGVja3N1bSkKKyAgICAgICAgcmV0dXJu
IChkcnRfaW5wdXQsIGRydF9vdXRwdXQpCisKKyAgICBkZWYgZXhwZWN0ZWRfb3V0cHV0KHNlbGYs
IHBvcnQsIHRlc3RfbmFtZSwgcGl4ZWxfdGVzdHMsIHRleHRfb3V0cHV0LCBleHBlY3RlZF9jaGVj
a3N1bSk6CisgICAgICAgIGlmIHBpeGVsX3Rlc3RzIGFuZCBleHBlY3RlZF9jaGVja3N1bToKKyAg
ICAgICAgICAgIHJldHVybiBbJ0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpblxuJywKKyAgICAgICAg
ICAgICAgICAgICAgdGV4dF9vdXRwdXQsCiAgICAgICAgICAgICAgICAgICAgICcjRU9GXG4nLAog
ICAgICAgICAgICAgICAgICAgICAnXG4nLAotICAgICAgICAgICAgICAgICAgICAnQWN0dWFsSGFz
aDogJXNcbicgJSBleHBlY3RlZF9jaGVja3N1bS5lbmNvZGUoJ3V0Zi04JyksCi0gICAgICAgICAg
ICAgICAgICAgICdFeHBlY3RlZEhhc2g6ICVzXG4nICUgZXhwZWN0ZWRfY2hlY2tzdW0uZW5jb2Rl
KCd1dGYtOCcpLAorICAgICAgICAgICAgICAgICAgICAnQWN0dWFsSGFzaDogJXNcbicgJSBleHBl
Y3RlZF9jaGVja3N1bSwKKyAgICAgICAgICAgICAgICAgICAgJ0V4cGVjdGVkSGFzaDogJXNcbicg
JSBleHBlY3RlZF9jaGVja3N1bSwKICAgICAgICAgICAgICAgICAgICAgJyNFT0ZcbiddCi0gICAg
ICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGRydF9vdXRwdXQgPSBbCi0gICAgICAgICAg
ICAgICAgICAgICdDb250ZW50LVR5cGU6IHRleHQvcGxhaW5cbicsCi0gICAgICAgICAgICAgICAg
ICAgIHRleHRfb3V0cHV0LmVuY29kZSgndXRmLTgnKSwKKyAgICAgICAgZWxzZToKKyAgICAgICAg
ICAgIHJldHVybiBbJ0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpblxuJywKKyAgICAgICAgICAgICAg
ICAgICAgdGV4dF9vdXRwdXQsCiAgICAgICAgICAgICAgICAgICAgICcjRU9GXG4nLAogICAgICAg
ICAgICAgICAgICAgICAnI0VPRlxuJ10KIAotICAgICAgICByZXR1cm4gKGRydF9pbnB1dCwgZHJ0
X291dHB1dCkKKyAgICBkZWYgYXNzZXJ0VGVzdChzZWxmLCB0ZXN0X25hbWUsIHBpeGVsX3Rlc3Rz
LCBleHBlY3RlZF9jaGVja3N1bT1Ob25lLAorICAgICAgICAgICAgICAgICAgIGRydF9vdXRwdXQ9
Tm9uZSwgZmlsZXN5c3RlbT1Ob25lKToKKyAgICAgICAgcGxhdGZvcm0gPSAndGVzdCcKKyAgICAg
ICAgZmlsZXN5c3RlbSA9IGZpbGVzeXN0ZW0gb3IgdGVzdC51bml0X3Rlc3RfZmlsZXN5c3RlbSgp
CisgICAgICAgIHBvcnQgPSBmYWN0b3J5LmdldChwbGF0Zm9ybSwgZmlsZXN5c3RlbT1maWxlc3lz
dGVtKQorICAgICAgICBkcnRfaW5wdXQsIGRydF9vdXRwdXQgPSBzZWxmLm1ha2VfaW5wdXRfb3V0
cHV0KHBvcnQsIHRlc3RfbmFtZSwKKyAgICAgICAgICAgIHBpeGVsX3Rlc3RzLCBleHBlY3RlZF9j
aGVja3N1bSwgZHJ0X291dHB1dCkKIAotICAgIGRlZiBhc3NlcnRUZXN0KHNlbGYsIHRlc3RfbmFt
ZSwgcGl4ZWxfdGVzdHMsIGV4cGVjdGVkX2NoZWNrc3VtPU5vbmUsIGRydF9vdXRwdXQ9Tm9uZSk6
Ci0gICAgICAgIGRydF9pbnB1dCwgZHJ0X291dHB1dCA9IHNlbGYubWFrZV9pbnB1dF9vdXRwdXQo
dGVzdF9uYW1lLCBwaXhlbF90ZXN0cywKLSAgICAgICAgICAgIGV4cGVjdGVkX2NoZWNrc3VtLCBk
cnRfb3V0cHV0KQotICAgICAgICBleHRyYV9hcmdzID0gW10KLSAgICAgICAgaWYgcGl4ZWxfdGVz
dHM6Ci0gICAgICAgICAgICBleHRyYV9hcmdzID0gWyctLXBpeGVsLXRlc3RzJ10KLSAgICAgICAg
ZHJ0LCBzdGRvdXQsIHN0ZGVyciA9IHNlbGYubWFrZV9kcnQoZHJ0X2lucHV0LCBleHRyYV9hcmdz
KQorICAgICAgICBhcmdzID0gWyctLXBsYXRmb3JtJywgJ3Rlc3QnXSArIHNlbGYuZXh0cmFfYXJn
cyhwaXhlbF90ZXN0cykKKyAgICAgICAgc3RkaW4gPSBuZXdzdHJpbmdpby5TdHJpbmdJTyhkcnRf
aW5wdXQpCisgICAgICAgIHN0ZG91dCA9IG5ld3N0cmluZ2lvLlN0cmluZ0lPKCkKKyAgICAgICAg
c3RkZXJyID0gbmV3c3RyaW5naW8uU3RyaW5nSU8oKQorICAgICAgICBvcHRpb25zLCBhcmdzID0g
bW9ja19kcnQucGFyc2Vfb3B0aW9ucyhhcmdzKQorCisgICAgICAgIGRydCA9IHNlbGYubWFrZV9k
cnQob3B0aW9ucywgYXJncywgZmlsZXN5c3RlbSwgc3RkaW4sIHN0ZG91dCwgc3RkZXJyKQogICAg
ICAgICByZXMgPSBkcnQucnVuKCkKKwogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcywgMCkK
IAogICAgICAgICAjIFdlIHVzZSB0aGUgU3RyaW5nSU8uYnVmbGlzdCBoZXJlIGluc3RlYWQgb2Yg
Z2V0dmFsdWUoKSBiZWNhdXNlCkBAIC0xNjMsMTMgKzE2NywxNiBAQCBjbGFzcyBNb2NrRFJUVGVz
dCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RkZXJyLmdl
dHZhbHVlKCksICcnKQogCiAgICAgZGVmIHRlc3RfbWFpbihzZWxmKToKKyAgICAgICAgZmlsZXN5
c3RlbSA9IHRlc3QudW5pdF90ZXN0X2ZpbGVzeXN0ZW0oKQogICAgICAgICBzdGRpbiA9IG5ld3N0
cmluZ2lvLlN0cmluZ0lPKCkKICAgICAgICAgc3Rkb3V0ID0gbmV3c3RyaW5naW8uU3RyaW5nSU8o
KQogICAgICAgICBzdGRlcnIgPSBuZXdzdHJpbmdpby5TdHJpbmdJTygpCi0gICAgICAgIHJlcyA9
IG1vY2tfZHJ0Lm1haW4oWyctLXBsYXRmb3JtJywgJ3Rlc3QnLCAnLSddLCBzdGRpbiwgc3Rkb3V0
LCBzdGRlcnIpCisgICAgICAgIHJlcyA9IG1vY2tfZHJ0Lm1haW4oWyctLXBsYXRmb3JtJywgJ3Rl
c3QnXSArIHNlbGYuZXh0cmFfYXJncyhGYWxzZSksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZmlsZXN5c3RlbSwgc3RkaW4sIHN0ZG91dCwgc3RkZXJyKQogICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHJlcywgMCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGRvdXQuZ2V0dmFsdWUo
KSwgJycpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RkZXJyLmdldHZhbHVlKCksICcnKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbGVzeXN0ZW0ud3JpdHRlbl9maWxlcywge30pCiAK
ICAgICBkZWYgdGVzdF9waXhlbHRlc3RfcGFzc2VzKHNlbGYpOgogICAgICAgICAjIFRoaXMgYWxz
byB0ZXN0cyB0aGF0IHdlIGhhbmRsZSBIVFRQOiB0ZXN0IFVSTHMgcHJvcGVybHkuCkBAIC0xOTMs
NSArMjAwLDYyIEBAIGNsYXNzIE1vY2tEUlRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAg
ICAgc2VsZi5hc3NlcnRUZXN0KCdwYXNzZXMvaW1hZ2UuaHRtbCcsIEZhbHNlKQogCiAKK2NsYXNz
IE1vY2tDaHJvbWl1bURSVFRlc3QoTW9ja0RSVFRlc3QpOgorICAgIGRlZiBleHRyYV9hcmdzKHNl
bGYsIHBpeGVsX3Rlc3RzKToKKyAgICAgICAgaWYgcGl4ZWxfdGVzdHM6CisgICAgICAgICAgICBy
ZXR1cm4gWyctLXBpeGVsLXRlc3RzPS90bXAvcG5nX3Jlc3VsdDAucG5nJ10KKyAgICAgICAgcmV0
dXJuIFtdCisKKyAgICBkZWYgbWFrZV9kcnQoc2VsZiwgb3B0aW9ucywgYXJncywgZmlsZXN5c3Rl
bSwgc3RkaW4sIHN0ZG91dCwgc3RkZXJyKToKKyAgICAgICAgb3B0aW9ucy5jaHJvbWl1bSA9IFRy
dWUKKworICAgICAgICAjIFdlIGhhdmUgdG8gc2V0IHRoZXNlIGJ5IGhhbmQgYmVjYXVzZSAtLXBs
YXRmb3JtIHRlc3Qgd29uJ3QgdHJpZ2dlcgorICAgICAgICAjIHRoZSBDaHJvbWl1bSBjb2RlIHBh
dGhzLgorICAgICAgICBvcHRpb25zLnBpeGVsX3BhdGggPSAnL3RtcC9wbmdfcmVzdWx0MC5wbmcn
CisgICAgICAgIG9wdGlvbnMucGl4ZWxfdGVzdHMgPSBUcnVlCisKKyAgICAgICAgcmV0dXJuIG1v
Y2tfZHJ0Lk1vY2tDaHJvbWl1bURSVChvcHRpb25zLCBhcmdzLCBmaWxlc3lzdGVtLCBzdGRpbiwg
c3Rkb3V0LCBzdGRlcnIpCisKKyAgICBkZWYgaW5wdXRfbGluZShzZWxmLCBwb3J0LCB0ZXN0X25h
bWUsIGNoZWNrc3VtPU5vbmUpOgorICAgICAgICB1cmwgPSBwb3J0LmZpbGVuYW1lX3RvX3VyaShz
ZWxmLnRvX3BhdGgocG9ydCwgdGVzdF9uYW1lKSkKKyAgICAgICAgaWYgY2hlY2tzdW06CisgICAg
ICAgICAgICByZXR1cm4gdXJsICsgJyA2MDAwICcgKyBjaGVja3N1bSArICdcbicKKyAgICAgICAg
cmV0dXJuIHVybCArICcgNjAwMFxuJworCisgICAgZGVmIGV4cGVjdGVkX291dHB1dChzZWxmLCBw
b3J0LCB0ZXN0X25hbWUsIHBpeGVsX3Rlc3RzLCB0ZXh0X291dHB1dCwgZXhwZWN0ZWRfY2hlY2tz
dW0pOgorICAgICAgICB1cmwgPSBwb3J0LmZpbGVuYW1lX3RvX3VyaShzZWxmLnRvX3BhdGgocG9y
dCwgdGVzdF9uYW1lKSkKKyAgICAgICAgaWYgcGl4ZWxfdGVzdHMgYW5kIGV4cGVjdGVkX2NoZWNr
c3VtOgorICAgICAgICAgICAgcmV0dXJuIFsnI1VSTDolc1xuJyAlIHVybCwKKyAgICAgICAgICAg
ICAgICAgICAgJyNNRDU6JXNcbicgJSBleHBlY3RlZF9jaGVja3N1bSwKKyAgICAgICAgICAgICAg
ICAgICAgdGV4dF9vdXRwdXQsCisgICAgICAgICAgICAgICAgICAgICdcbicsCisgICAgICAgICAg
ICAgICAgICAgICcjRU9GXG4nXQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIFsn
I1VSTDolc1xuJyAlIHVybCwKKyAgICAgICAgICAgICAgICAgICAgdGV4dF9vdXRwdXQsCisgICAg
ICAgICAgICAgICAgICAgICdcbicsCisgICAgICAgICAgICAgICAgICAgICcjRU9GXG4nXQorCisg
ICAgZGVmIHRlc3RfcGl4ZWx0ZXN0X19mYWlscyhzZWxmKToKKyAgICAgICAgZmlsZXN5c3RlbSA9
IHRlc3QudW5pdF90ZXN0X2ZpbGVzeXN0ZW0oKQorICAgICAgICBzZWxmLmFzc2VydFRlc3QoJ2Zh
aWx1cmVzL2V4cGVjdGVkL2NoZWNrc3VtLmh0bWwnLCBwaXhlbF90ZXN0cz1UcnVlLAorICAgICAg
ICAgICAgZXhwZWN0ZWRfY2hlY2tzdW09J3dyb25nLWNoZWNrc3VtJywKKyAgICAgICAgICAgIGRy
dF9vdXRwdXQ9WycjVVJMOmZpbGU6Ly8vdGVzdC5jaGVja291dC9MYXlvdXRUZXN0cy9mYWlsdXJl
cy9leHBlY3RlZC9jaGVja3N1bS5odG1sXG4nLAorICAgICAgICAgICAgICAgICAgICAgICAgJyNN
RDU6Y2hlY2tzdW0tY2hlY2tzdW1cbicsCisgICAgICAgICAgICAgICAgICAgICAgICAnY2hlY2tz
dW0tdHh0JywKKyAgICAgICAgICAgICAgICAgICAgICAgICdcbicsCisgICAgICAgICAgICAgICAg
ICAgICAgICAnI0VPRlxuJ10sCisgICAgICAgICAgICBmaWxlc3lzdGVtPWZpbGVzeXN0ZW0pCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGZpbGVzeXN0ZW0ud3JpdHRlbl9maWxlcywKKyAgICAg
ICAgICAgIHsnL3RtcC9wbmdfcmVzdWx0MC5wbmcnOiAnY2hlY2tzdW1ceDhhLXBuZyd9KQorCisg
ICAgZGVmIHRlc3RfY2hyb21pdW1fcGFyc2Vfb3B0aW9ucyhzZWxmKToKKyAgICAgICAgb3B0aW9u
cywgYXJncyA9IG1vY2tfZHJ0LnBhcnNlX29wdGlvbnMoWyctLXBsYXRmb3JtJywgJ2Nocm9taXVt
LW1hYycsCisgICAgICAgICAgICAnLS1waXhlbC10ZXN0cz0vdG1wL3BuZ19yZXN1bHQwLnBuZydd
KQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3B0aW9ucy5jaHJvbWl1bSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRUcnVlKG9wdGlvbnMucGl4ZWxfdGVzdHMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWxzKG9wdGlvbnMucGl4ZWxfcGF0aCwgJy90bXAvcG5nX3Jlc3VsdDAucG5nJykKKworCiBpZiBf
X25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIHVuaXR0ZXN0Lm1haW4oKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>80713</attachid>
            <date>2011-01-31 20:33:51 -0800</date>
            <delta_ts>2011-02-02 15:56:17 -0800</delta_ts>
            <desc>fix missing filesystem import</desc>
            <filename>bug-53471-20110131203350.patch</filename>
            <type>text/plain</type>
            <size>18031</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAzNDE1
NTQ2NTFjZmE3M2JiZTE1MGI3MmU5NmFjYmJmZWJkZDExYzAwLi41MWYwZmYwZWZlZGZiNmJkMTlm
YjAzYmZmYTYxNzU4ZDA3ZTQ0NzJkIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMDEtMzEgIERpcmsgUHJhbmtl
ICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgbmV3LXJ1bi13ZWJraXQtdGVzdHM6IHN1cHBvcnQgY2hyb21pdW0g
Y29kZSBwYXRocyBpbiBtb2NrX2RydAorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD01MzQ3MQorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcG9ydC9tb2NrX2RydC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L21vY2tfZHJ0X3VuaXR0ZXN0LnB5OgorCiAyMDExLTAxLTMxICBNaWhh
aSBQYXJwYXJpdGEgIDxtaWhhaXBAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IFRvbnkgQ2hhbmcuCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9wb3J0L21vY2tfZHJ0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcG9ydC9tb2NrX2RydC5weQppbmRleCBhMjYxYWEyY2ViZDc0MTA5MGJkOGE2Y2U3ZGQyNjM4
ZTVhNmM2OGUxLi5hNTE2YTkyMzQ2MGU3MDhiMTFhNjU3ZmRjZTAwMjdhZDEyYTMyZjFmIDEwMDY0
NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L21vY2tfZHJ0
LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvbW9ja19k
cnQucHkKQEAgLTM3LDYgKzM3LDggQEAgaW1wb3J0IG9wdHBhcnNlCiBpbXBvcnQgb3MKIGltcG9y
dCBzeXMKIAorZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtIGltcG9ydCBmaWxlc3lzdGVtCisK
IGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQgaW1wb3J0IGJhc2UKIGZyb20gd2Via2l0
cHkubGF5b3V0X3Rlc3RzLnBvcnQgaW1wb3J0IGZhY3RvcnkKIApAQCAtODEsNyArODMsNiBAQCBj
bGFzcyBNb2NrRFJUUG9ydChvYmplY3QpOgogICAgICAgICAjIG1ldGhvZCB0aGF0IHNwbGljZXMg
aW4gdGhlIG1vY2tfZHJ0IHBhdGggYW5kIGNvbW1hbmQgbGluZSBhcmd1bWVudHMKICAgICAgICAg
IyBpbiBwbGFjZSBvZiB0aGUgYWN0dWFsIHBhdGggdG8gdGhlIGRyaXZlciBiaW5hcnkuCiAKLSAg
ICAgICAgIyBGSVhNRTogVGhpcyBkb2Vzbid0IHlldCB3b3JrIGZvciBDaHJvbWl1bSB0ZXN0X3No
ZWxsIHBvcnRzLgogICAgICAgICBkZWYgb3ZlcnJpZGluZ19jbWRfbGluZSgpOgogICAgICAgICAg
ICAgY21kID0gc2VsZi5fX29yaWdpbmFsX2RyaXZlcl9jbWRfbGluZSgpCiAgICAgICAgICAgICBp
bmRleCA9IGNtZC5pbmRleChzZWxmLl9fZGVsZWdhdGUuX3BhdGhfdG9fZHJpdmVyKCkpCkBAIC0x
MTMsMzQgKzExNCw0NCBAQCBjbGFzcyBNb2NrRFJUUG9ydChvYmplY3QpOgogICAgICAgICBwYXNz
CiAKIAotZGVmIG1haW4oYXJndiwgc3RkaW4sIHN0ZG91dCwgc3RkZXJyKToKK2RlZiBtYWluKGFy
Z3YsIGZzLCBzdGRpbiwgc3Rkb3V0LCBzdGRlcnIpOgogICAgICIiIlJ1biB0aGUgdGVzdHMuIiIi
CiAKICAgICBvcHRpb25zLCBhcmdzID0gcGFyc2Vfb3B0aW9ucyhhcmd2KQotICAgIGRydCA9IE1v
Y2tEUlQob3B0aW9ucywgYXJncywgc3RkaW4sIHN0ZG91dCwgc3RkZXJyKQorICAgIGlmIG9wdGlv
bnMuY2hyb21pdW06CisgICAgICAgIGRydCA9IE1vY2tDaHJvbWl1bURSVChvcHRpb25zLCBhcmdz
LCBmcywgc3RkaW4sIHN0ZG91dCwgc3RkZXJyKQorICAgIGVsc2U6CisgICAgICAgIGRydCA9IE1v
Y2tEUlQob3B0aW9ucywgYXJncywgZnMsIHN0ZGluLCBzdGRvdXQsIHN0ZGVycikKICAgICByZXR1
cm4gZHJ0LnJ1bigpCiAKIAogZGVmIHBhcnNlX29wdGlvbnMoYXJndik6Ci0gICAgIyBGSVhNRTog
V2UgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0byBoYW5kbGUgdmFyaWFudHMgdGhhdCBoYXZlCi0g
ICAgIyBkaWZmZXJlbnQgY29tbWFuZC1saW5lIGNvbnZlbnRpb25zLgotICAgIG9wdGlvbl9saXN0
ID0gWwotICAgICAgICBvcHRwYXJzZS5tYWtlX29wdGlvbignLS1wbGF0Zm9ybScsIGFjdGlvbj0n
c3RvcmUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdwbGF0Zm9ybSB0byBl
bXVsYXRlJyksCi0gICAgICAgIG9wdHBhcnNlLm1ha2Vfb3B0aW9uKCctLWxheW91dC10ZXN0cycs
IGFjdGlvbj0nc3RvcmVfdHJ1ZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1
bHQ9VHJ1ZSwgaGVscD0ncnVuIGxheW91dCB0ZXN0cycpLAotICAgICAgICBvcHRwYXJzZS5tYWtl
X29wdGlvbignLS1waXhlbC10ZXN0cycsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGhlbHA9J291dHB1dCBpbWFnZSBmb3IgcGl4ZWwgdGVzdHMnKSwKLSAgICBdCi0gICAg
b3B0aW9uX3BhcnNlciA9IG9wdHBhcnNlLk9wdGlvblBhcnNlcihvcHRpb25fbGlzdD1vcHRpb25f
bGlzdCkKLSAgICByZXR1cm4gb3B0aW9uX3BhcnNlci5wYXJzZV9hcmdzKGFyZ3YpCisgICAgcGxh
dGZvcm1faW5kZXggPSBhcmd2LmluZGV4KCctLXBsYXRmb3JtJykKKyAgICBwbGF0Zm9ybSA9IGFy
Z3ZbcGxhdGZvcm1faW5kZXggKyAxXQorCisgICAgcGl4ZWxfdGVzdHMgPSBGYWxzZQorICAgIHBp
eGVsX3BhdGggPSBOb25lCisgICAgY2hyb21pdW0gPSBGYWxzZQorICAgIGlmIHBsYXRmb3JtLnN0
YXJ0c3dpdGgoJ2Nocm9taXVtJyk6CisgICAgICAgIGNocm9taXVtID0gVHJ1ZQorICAgICAgICBm
b3IgYXJnIGluIGFyZ3Y6CisgICAgICAgICAgICBpZiBhcmcuc3RhcnRzd2l0aCgnLS1waXhlbC10
ZXN0cycpOgorICAgICAgICAgICAgICAgIHBpeGVsX3Rlc3RzID0gVHJ1ZQorICAgICAgICAgICAg
ICAgIHBpeGVsX3BhdGggPSBhcmdbbGVuKCctLXBpeGVsLXRlc3RzPScpOl0KKyAgICBlbHNlOgor
ICAgICAgICBwaXhlbF90ZXN0cyA9ICctLXBpeGVsLXRlc3RzJyBpbiBhcmd2CisgICAgb3B0aW9u
cyA9IGJhc2UuRHVtbXlPcHRpb25zKGNocm9taXVtPWNocm9taXVtLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwbGF0Zm9ybT1wbGF0Zm9ybSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcGl4ZWxfdGVzdHM9cGl4ZWxfdGVzdHMsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHBpeGVsX3BhdGg9cGl4ZWxfcGF0aCkKKyAgICByZXR1cm4gKG9wdGlvbnMs
IFtdKQogCiAKIGNsYXNzIE1vY2tEUlQob2JqZWN0KToKLSAgICBkZWYgX19pbml0X18oc2VsZiwg
b3B0aW9ucywgYXJncywgc3RkaW4sIHN0ZG91dCwgc3RkZXJyKToKKyAgICBkZWYgX19pbml0X18o
c2VsZiwgb3B0aW9ucywgYXJncywgZmlsZXN5c3RlbSwgc3RkaW4sIHN0ZG91dCwgc3RkZXJyKToK
ICAgICAgICAgc2VsZi5fb3B0aW9ucyA9IG9wdGlvbnMKICAgICAgICAgc2VsZi5fYXJncyA9IGFy
Z3MKKyAgICAgICAgc2VsZi5fZmlsZXN5c3RlbSA9IGZpbGVzeXN0ZW0KICAgICAgICAgc2VsZi5f
c3Rkb3V0ID0gc3Rkb3V0CiAgICAgICAgIHNlbGYuX3N0ZGluID0gc3RkaW4KICAgICAgICAgc2Vs
Zi5fc3RkZXJyID0gc3RkZXJyCkBAIC0xNDgsNTcgKzE1OSw5MyBAQCBjbGFzcyBNb2NrRFJUKG9i
amVjdCk6CiAgICAgICAgIHBvcnRfbmFtZSA9IE5vbmUKICAgICAgICAgaWYgb3B0aW9ucy5wbGF0
Zm9ybToKICAgICAgICAgICAgIHBvcnRfbmFtZSA9IG9wdGlvbnMucGxhdGZvcm0KLSAgICAgICAg
c2VsZi5fcG9ydCA9IGZhY3RvcnkuZ2V0KHBvcnRfbmFtZSwgb3B0aW9ucz1vcHRpb25zKQorICAg
ICAgICBzZWxmLl9wb3J0ID0gZmFjdG9yeS5nZXQocG9ydF9uYW1lLCBvcHRpb25zPW9wdGlvbnMs
IGZpbGVzeXN0ZW09ZmlsZXN5c3RlbSkKIAogICAgIGRlZiBydW4oc2VsZik6CiAgICAgICAgIHdo
aWxlIFRydWU6CiAgICAgICAgICAgICBsaW5lID0gc2VsZi5fc3RkaW4ucmVhZGxpbmUoKQogICAg
ICAgICAgICAgaWYgbm90IGxpbmU6CiAgICAgICAgICAgICAgICAgYnJlYWsKLQotICAgICAgICAg
ICAgdXJsLCBleHBlY3RlZF9jaGVja3N1bSA9IHNlbGYucGFyc2VfaW5wdXQobGluZSkKLSAgICAg
ICAgICAgIHNlbGYucnVuX29uZV90ZXN0KHVybCwgZXhwZWN0ZWRfY2hlY2tzdW0pCisgICAgICAg
ICAgICB1cmwsIHRpbWVvdXQsIGNoZWNrc3VtID0gc2VsZi5wYXJzZV9pbnB1dChsaW5lKQorICAg
ICAgICAgICAgc2VsZi5ydW5fb25lX3Rlc3QodXJsLCB0aW1lb3V0LCBjaGVja3N1bSkKICAgICAg
ICAgcmV0dXJuIDAKIAogICAgIGRlZiBwYXJzZV9pbnB1dChzZWxmLCBsaW5lKToKLSAgICAgICAg
bGluZSA9IGxpbmUuc3RyaXAoKQotICAgICAgICBpZiAiJyIgaW4gbGluZToKLSAgICAgICAgICAg
IHJldHVybiBsaW5lLnNwbGl0KCInIiwgMSkKLSAgICAgICAgcmV0dXJuIChsaW5lLCBOb25lKQot
Ci0gICAgZGVmIHJhd19ieXRlcyhzZWxmLCB1bmljb2RlX3N0cik6Ci0gICAgICAgIHJldHVybiB1
bmljb2RlX3N0ci5lbmNvZGUoJ3V0Zi04JykKKyAgICAgICAgdmFscyA9IGxpbmUuc3RyaXAoKS5z
cGxpdCgiJyIpCisgICAgICAgIGlmIGxlbih2YWxzKSA9PSAxOgorICAgICAgICAgICAgcmV0dXJu
ICh2YWxzWzBdLCBOb25lLCBOb25lKQorICAgICAgICByZXR1cm4gKHZhbHNbMF0sIE5vbmUsIHZh
bHNbMV0pCiAKLSAgICBkZWYgcnVuX29uZV90ZXN0KHNlbGYsIHVybCwgZXhwZWN0ZWRfY2hlY2tz
dW0pOgorICAgIGRlZiBydW5fb25lX3Rlc3Qoc2VsZiwgdXJsLCB0aW1lb3V0LCBleHBlY3RlZF9j
aGVja3N1bSk6CiAgICAgICAgIHBvcnQgPSBzZWxmLl9wb3J0CiAgICAgICAgIGlmIHVybC5zdGFy
dHN3aXRoKCdodHRwJyk6CiAgICAgICAgICAgICB0ZXN0X25hbWUgPSBwb3J0LnVyaV90b190ZXN0
X25hbWUodXJsKQotICAgICAgICAgICAgdGVzdF9wYXRoID0gcG9ydC5fZmlsZXN5c3RlbS5qb2lu
KHBvcnQubGF5b3V0X3Rlc3RzX2RpcigpLCB0ZXN0X25hbWUpCisgICAgICAgICAgICB0ZXN0X3Bh
dGggPSBzZWxmLl9maWxlc3lzdGVtLmpvaW4ocG9ydC5sYXlvdXRfdGVzdHNfZGlyKCksIHRlc3Rf
bmFtZSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHRlc3RfcGF0aCA9IHVybAogCi0gICAg
ICAgIGFjdHVhbF90ZXh0X2J5dGVzID0gc2VsZi5yYXdfYnl0ZXMocG9ydC5leHBlY3RlZF90ZXh0
KHRlc3RfcGF0aCkpCisgICAgICAgIGFjdHVhbF90ZXh0ID0gcG9ydC5leHBlY3RlZF90ZXh0KHRl
c3RfcGF0aCkKICAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5waXhlbF90ZXN0cyBhbmQgZXhwZWN0
ZWRfY2hlY2tzdW06Ci0gICAgICAgICAgICBhY3R1YWxfY2hlY2tzdW1fYnl0ZXMgPSBzZWxmLnJh
d19ieXRlcyhwb3J0LmV4cGVjdGVkX2NoZWNrc3VtKHRlc3RfcGF0aCkpCi0gICAgICAgICAgICBh
Y3R1YWxfaW1hZ2VfYnl0ZXMgPSBwb3J0LmV4cGVjdGVkX2ltYWdlKHRlc3RfcGF0aCkKKyAgICAg
ICAgICAgIGFjdHVhbF9jaGVja3N1bSA9IHBvcnQuZXhwZWN0ZWRfY2hlY2tzdW0odGVzdF9wYXRo
KQorICAgICAgICAgICAgYWN0dWFsX2ltYWdlID0gcG9ydC5leHBlY3RlZF9pbWFnZSh0ZXN0X3Bh
dGgpCiAKICAgICAgICAgc2VsZi5fc3Rkb3V0LndyaXRlKCdDb250ZW50LVR5cGU6IHRleHQvcGxh
aW5cbicpCi0gICAgICAgIHNlbGYuX3N0ZG91dC53cml0ZShhY3R1YWxfdGV4dF9ieXRlcykKKwor
ICAgICAgICAjIEZJWE1FOiBOb3RlIHRoYXQgd2UgZG9uJ3QgZW5zdXJlIHRoZXJlIGlzIGEgdHJh
aWxpbmcgbmV3bGluZSEKKyAgICAgICAgIyBUaGlzIG1pcnJvcnMgYWN0dWFsIChNYWMpIERSVCBi
ZWhhdmlvciBidXQgaXMgYSBidWcuCisgICAgICAgIHNlbGYuX3N0ZG91dC53cml0ZShhY3R1YWxf
dGV4dCkKICAgICAgICAgc2VsZi5fc3Rkb3V0LndyaXRlKCcjRU9GXG4nKQogCiAgICAgICAgIGlm
IHNlbGYuX29wdGlvbnMucGl4ZWxfdGVzdHMgYW5kIGV4cGVjdGVkX2NoZWNrc3VtOgotICAgICAg
ICAgICAgZXhwZWN0ZWRfY2hlY2tzdW1fYnl0ZXMgPSBzZWxmLnJhd19ieXRlcyhleHBlY3RlZF9j
aGVja3N1bSkKICAgICAgICAgICAgIHNlbGYuX3N0ZG91dC53cml0ZSgnXG4nKQotICAgICAgICAg
ICAgc2VsZi5fc3Rkb3V0LndyaXRlKCdBY3R1YWxIYXNoOiAlc1xuJyAlIGFjdHVhbF9jaGVja3N1
bV9ieXRlcykKLSAgICAgICAgICAgIHNlbGYuX3N0ZG91dC53cml0ZSgnRXhwZWN0ZWRIYXNoOiAl
c1xuJyAlIGV4cGVjdGVkX2NoZWNrc3VtX2J5dGVzKQotICAgICAgICAgICAgaWYgYWN0dWFsX2No
ZWNrc3VtX2J5dGVzICE9IGV4cGVjdGVkX2NoZWNrc3VtX2J5dGVzOgorICAgICAgICAgICAgc2Vs
Zi5fc3Rkb3V0LndyaXRlKCdBY3R1YWxIYXNoOiAlc1xuJyAlIGFjdHVhbF9jaGVja3N1bSkKKyAg
ICAgICAgICAgIHNlbGYuX3N0ZG91dC53cml0ZSgnRXhwZWN0ZWRIYXNoOiAlc1xuJyAlIGV4cGVj
dGVkX2NoZWNrc3VtKQorICAgICAgICAgICAgaWYgYWN0dWFsX2NoZWNrc3VtICE9IGV4cGVjdGVk
X2NoZWNrc3VtOgogICAgICAgICAgICAgICAgIHNlbGYuX3N0ZG91dC53cml0ZSgnQ29udGVudC1U
eXBlOiBpbWFnZS9wbmdcbicpCi0gICAgICAgICAgICAgICAgc2VsZi5fc3Rkb3V0LndyaXRlKCdD
b250ZW50LUxlbmd0aDogJXNcblxuJyAlIGxlbihhY3R1YWxfaW1hZ2VfYnl0ZXMpKQotICAgICAg
ICAgICAgICAgIHNlbGYuX3N0ZG91dC53cml0ZShhY3R1YWxfaW1hZ2VfYnl0ZXMpCisgICAgICAg
ICAgICAgICAgc2VsZi5fc3Rkb3V0LndyaXRlKCdDb250ZW50LUxlbmd0aDogJXNcblxuJyAlIGxl
bihhY3R1YWxfaW1hZ2UpKQorICAgICAgICAgICAgICAgIHNlbGYuX3N0ZG91dC53cml0ZShhY3R1
YWxfaW1hZ2UpCiAgICAgICAgIHNlbGYuX3N0ZG91dC53cml0ZSgnI0VPRlxuJykKICAgICAgICAg
c2VsZi5fc3Rkb3V0LmZsdXNoKCkKICAgICAgICAgc2VsZi5fc3RkZXJyLmZsdXNoKCkKIAogCitj
bGFzcyBNb2NrQ2hyb21pdW1EUlQoTW9ja0RSVCk6CisgICAgZGVmIHBhcnNlX2lucHV0KHNlbGYs
IGxpbmUpOgorICAgICAgICB2YWxzID0gbGluZS5zcGxpdCgpCisgICAgICAgIGlmIGxlbih2YWxz
KSA9PSAzOgorICAgICAgICAgICAgcmV0dXJuIHZhbHMKKyAgICAgICAgZWxzZToKKyAgICAgICAg
ICAgIHJldHVybiAodmFsc1swXSwgdmFsc1sxXSwgTm9uZSkKKworICAgIGRlZiBydW5fb25lX3Rl
c3Qoc2VsZiwgdXJsLCB0aW1lb3V0LCBleHBlY3RlZF9jaGVja3N1bSk6CisgICAgICAgIHBvcnQg
PSBzZWxmLl9wb3J0CisgICAgICAgIHRlc3RfbmFtZSA9IHNlbGYuX3BvcnQudXJpX3RvX3Rlc3Rf
bmFtZSh1cmwpCisgICAgICAgIHRlc3RfcGF0aCA9IHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihwb3J0
LmxheW91dF90ZXN0c19kaXIoKSwgdGVzdF9uYW1lKQorCisgICAgICAgIGFjdHVhbF90ZXh0ID0g
cG9ydC5leHBlY3RlZF90ZXh0KHRlc3RfcGF0aCkKKyAgICAgICAgYWN0dWFsX2ltYWdlID0gJycK
KyAgICAgICAgYWN0dWFsX2NoZWNrc3VtID0gJycKKyAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5w
aXhlbF90ZXN0cyBhbmQgZXhwZWN0ZWRfY2hlY2tzdW06CisgICAgICAgICAgICBhY3R1YWxfY2hl
Y2tzdW0gPSBwb3J0LmV4cGVjdGVkX2NoZWNrc3VtKHRlc3RfcGF0aCkKKyAgICAgICAgICAgIGlm
IGFjdHVhbF9jaGVja3N1bSAhPSBleHBlY3RlZF9jaGVja3N1bToKKyAgICAgICAgICAgICAgICBh
Y3R1YWxfaW1hZ2UgPSBwb3J0LmV4cGVjdGVkX2ltYWdlKHRlc3RfcGF0aCkKKworICAgICAgICBz
ZWxmLl9zdGRvdXQud3JpdGUoIiNVUkw6JXNcbiIgJSB1cmwpCisgICAgICAgIGlmIHNlbGYuX29w
dGlvbnMucGl4ZWxfdGVzdHMgYW5kIGV4cGVjdGVkX2NoZWNrc3VtOgorICAgICAgICAgICAgc2Vs
Zi5fc3Rkb3V0LndyaXRlKCIjTUQ1OiVzXG4iICUgYWN0dWFsX2NoZWNrc3VtKQorICAgICAgICAg
ICAgc2VsZi5fZmlsZXN5c3RlbS53cml0ZV9iaW5hcnlfZmlsZShzZWxmLl9vcHRpb25zLnBpeGVs
X3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFj
dHVhbF9pbWFnZSkKKyAgICAgICAgc2VsZi5fc3Rkb3V0LndyaXRlKGFjdHVhbF90ZXh0KQorCisg
ICAgICAgICMgRklYTUU6IChTZWUgYWJvdmUgRklYTUUgYXMgd2VsbCkuIENocm9taXVtIERSVCBh
cHBlYXJzIHRvIGFsd2F5cworICAgICAgICAjIGVuc3VyZSB0aGUgdGV4dCBvdXRwdXQgaGFzIGEg
dHJhaWxpbmcgbmV3bGluZS4gTWFjIERSVCBkb2VzIG5vdC4KKyAgICAgICAgaWYgbm90IGFjdHVh
bF90ZXh0LmVuZHN3aXRoKCdcbicpOgorICAgICAgICAgICAgc2VsZi5fc3Rkb3V0LndyaXRlKCdc
bicpCisgICAgICAgIHNlbGYuX3N0ZG91dC53cml0ZSgnI0VPRlxuJykKKyAgICAgICAgc2VsZi5f
c3Rkb3V0LmZsdXNoKCkKKworCisKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgc3lz
LmV4aXQobWFpbihzeXMuYXJndlsxOl0sIHN5cy5zdGRpbiwgc3lzLnN0ZG91dCwgc3lzLnN0ZGVy
cikpCisgICAgZnMgPSBmaWxlc3lzdGVtLkZpbGVTeXN0ZW0oKQorICAgIHN5cy5leGl0KG1haW4o
c3lzLmFyZ3ZbMTpdLCBmcywgc3lzLnN0ZGluLCBzeXMuc3Rkb3V0LCBzeXMuc3RkZXJyKSkKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvbW9ja19k
cnRfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0
L21vY2tfZHJ0X3VuaXR0ZXN0LnB5CmluZGV4IDNhZWFmYWZhYzQ4MWUyYWYyOGM1ZjlmNWQ2YTdk
MDI5N2I5YmQ3MTIuLjE1MDYzMTUzMWM1ZDAwMWYwNDVkZmUyZDA0MGFmYzkyZDhkNmUwNGYgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvbW9ja19k
cnRfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC9tb2NrX2RydF91bml0dGVzdC5weQpAQCAtMzYsNiArMzYsNyBAQCBmcm9tIHdlYmtpdHB5
LmNvbW1vbiBpbXBvcnQgbmV3c3RyaW5naW8KIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBv
cnQgaW1wb3J0IG1vY2tfZHJ0CiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0IGltcG9y
dCBmYWN0b3J5CiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0IGltcG9ydCBwb3J0X3Rl
c3RjYXNlCitmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0IGltcG9ydCB0ZXN0CiAKIAog
Y2xhc3MgTW9ja0RSVFBvcnRUZXN0KHBvcnRfdGVzdGNhc2UuUG9ydFRlc3RDYXNlKToKQEAgLTg3
LDE1ICs4OCwxMSBAQCBjbGFzcyBNb2NrRFJUUG9ydFRlc3QocG9ydF90ZXN0Y2FzZS5Qb3J0VGVz
dENhc2UpOgogCiAKIGNsYXNzIE1vY2tEUlRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBk
ZWYgc2V0VXAoc2VsZik6Ci0gICAgICAgIHNlbGYuX3BvcnQgPSBmYWN0b3J5LmdldCgndGVzdCcp
Ci0gICAgICAgIHNlbGYuX2xheW91dF90ZXN0c19kaXIgPSBzZWxmLl9wb3J0LmxheW91dF90ZXN0
c19kaXIoKQorICAgIGRlZiB0b19wYXRoKHNlbGYsIHBvcnQsIHRlc3RfbmFtZSk6CisgICAgICAg
IHJldHVybiBwb3J0Ll9maWxlc3lzdGVtLmpvaW4ocG9ydC5sYXlvdXRfdGVzdHNfZGlyKCksIHRl
c3RfbmFtZSkKIAotICAgIGRlZiB0b19wYXRoKHNlbGYsIHRlc3RfbmFtZSk6Ci0gICAgICAgIHJl
dHVybiBzZWxmLl9wb3J0Ll9maWxlc3lzdGVtLmpvaW4oc2VsZi5fbGF5b3V0X3Rlc3RzX2Rpciwg
dGVzdF9uYW1lKQotCi0gICAgZGVmIGlucHV0X2xpbmUoc2VsZiwgdGVzdF9uYW1lLCBjaGVja3N1
bT1Ob25lKToKLSAgICAgICAgdXJsID0gc2VsZi5fcG9ydC5maWxlbmFtZV90b191cmkoc2VsZi50
b19wYXRoKHRlc3RfbmFtZSkpCisgICAgZGVmIGlucHV0X2xpbmUoc2VsZiwgcG9ydCwgdGVzdF9u
YW1lLCBjaGVja3N1bT1Ob25lKToKKyAgICAgICAgdXJsID0gcG9ydC5maWxlbmFtZV90b191cmko
c2VsZi50b19wYXRoKHBvcnQsIHRlc3RfbmFtZSkpCiAgICAgICAgICMgRklYTUU6IHdlIHNob3Vs
ZG4ndCBoYXZlIHRvIHdvcmsgYXJvdW5kIHBsYXRmb3JtLXNwZWNpZmljIGlzc3VlcwogICAgICAg
ICAjIGhlcmUuCiAgICAgICAgIGlmIHVybC5zdGFydHN3aXRoKCdmaWxlOi8vLy8nKToKQEAgLTEw
Nyw1NCArMTA0LDYxIEBAIGNsYXNzIE1vY2tEUlRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAg
ICAgICAgICAgIHJldHVybiB1cmwgKyAiJyIgKyBjaGVja3N1bSArICdcbicKICAgICAgICAgcmV0
dXJuIHVybCArICdcbicKIAotICAgIGRlZiBtYWtlX2RydChzZWxmLCBpbnB1dF9zdHJpbmcsIGV4
dHJhX2FyZ3M9Tm9uZSk6Ci0gICAgICAgIGFyZ3MgPSBbJy0tcGxhdGZvcm0nLCAndGVzdCcsICct
J10KLSAgICAgICAgZXh0cmFfYXJncyA9IGV4dHJhX2FyZ3Mgb3IgW10KLSAgICAgICAgYXJncyAr
PSBleHRyYV9hcmdzCi0gICAgICAgIHN0ZGluID0gbmV3c3RyaW5naW8uU3RyaW5nSU8oaW5wdXRf
c3RyaW5nKQotICAgICAgICBzdGRvdXQgPSBuZXdzdHJpbmdpby5TdHJpbmdJTygpCi0gICAgICAg
IHN0ZGVyciA9IG5ld3N0cmluZ2lvLlN0cmluZ0lPKCkKLSAgICAgICAgb3B0aW9ucywgYXJncyA9
IG1vY2tfZHJ0LnBhcnNlX29wdGlvbnMoYXJncykKLSAgICAgICAgZHJ0ID0gbW9ja19kcnQuTW9j
a0RSVChvcHRpb25zLCBhcmdzLCBzdGRpbiwgc3Rkb3V0LCBzdGRlcnIpCi0gICAgICAgIHJldHVy
biAoZHJ0LCBzdGRvdXQsIHN0ZGVycikKKyAgICBkZWYgZXh0cmFfYXJncyhzZWxmLCBwaXhlbF90
ZXN0cyk6CisgICAgICAgIGlmIHBpeGVsX3Rlc3RzOgorICAgICAgICAgICAgcmV0dXJuIFsnLS1w
aXhlbC10ZXN0cycsICctJ10KKyAgICAgICAgcmV0dXJuIFsnLSddCiAKLSAgICBkZWYgbWFrZV9p
bnB1dF9vdXRwdXQoc2VsZiwgdGVzdF9uYW1lLCBwaXhlbF90ZXN0cywgZXhwZWN0ZWRfY2hlY2tz
dW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGRydF9vdXRwdXQsIGRydF9pbnB1dD1Ob25l
KToKLSAgICAgICAgcGF0aCA9IHNlbGYudG9fcGF0aCh0ZXN0X25hbWUpCisgICAgZGVmIG1ha2Vf
ZHJ0KHNlbGYsIG9wdGlvbnMsIGFyZ3MsIGZpbGVzeXN0ZW0sIHN0ZGluLCBzdGRvdXQsIHN0ZGVy
cik6CisgICAgICAgIHJldHVybiBtb2NrX2RydC5Nb2NrRFJUKG9wdGlvbnMsIGFyZ3MsIGZpbGVz
eXN0ZW0sIHN0ZGluLCBzdGRvdXQsIHN0ZGVycikKKworICAgIGRlZiBtYWtlX2lucHV0X291dHB1
dChzZWxmLCBwb3J0LCB0ZXN0X25hbWUsIHBpeGVsX3Rlc3RzLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICBleHBlY3RlZF9jaGVja3N1bSwgZHJ0X291dHB1dCwgZHJ0X2lucHV0PU5vbmUpOgor
ICAgICAgICBwYXRoID0gc2VsZi50b19wYXRoKHBvcnQsIHRlc3RfbmFtZSkKICAgICAgICAgaWYg
cGl4ZWxfdGVzdHM6CiAgICAgICAgICAgICBpZiBub3QgZXhwZWN0ZWRfY2hlY2tzdW06Ci0gICAg
ICAgICAgICAgICAgZXhwZWN0ZWRfY2hlY2tzdW0gPSBzZWxmLl9wb3J0LmV4cGVjdGVkX2NoZWNr
c3VtKHBhdGgpCisgICAgICAgICAgICAgICAgZXhwZWN0ZWRfY2hlY2tzdW0gPSBwb3J0LmV4cGVj
dGVkX2NoZWNrc3VtKHBhdGgpCiAgICAgICAgIGlmIG5vdCBkcnRfaW5wdXQ6Ci0gICAgICAgICAg
ICBkcnRfaW5wdXQgPSBzZWxmLmlucHV0X2xpbmUodGVzdF9uYW1lLCBleHBlY3RlZF9jaGVja3N1
bSkKLSAgICAgICAgdGV4dF9vdXRwdXQgPSBzZWxmLl9wb3J0LmV4cGVjdGVkX3RleHQocGF0aCkK
KyAgICAgICAgICAgIGRydF9pbnB1dCA9IHNlbGYuaW5wdXRfbGluZShwb3J0LCB0ZXN0X25hbWUs
IGV4cGVjdGVkX2NoZWNrc3VtKQorICAgICAgICB0ZXh0X291dHB1dCA9IHBvcnQuZXhwZWN0ZWRf
dGV4dChwYXRoKQogCiAgICAgICAgIGlmIG5vdCBkcnRfb3V0cHV0OgotICAgICAgICAgICAgaWYg
cGl4ZWxfdGVzdHM6Ci0gICAgICAgICAgICAgICAgZHJ0X291dHB1dCA9IFsKLSAgICAgICAgICAg
ICAgICAgICAgJ0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpblxuJywKLSAgICAgICAgICAgICAgICAg
ICAgdGV4dF9vdXRwdXQuZW5jb2RlKCd1dGYtOCcpLAorICAgICAgICAgICAgZHJ0X291dHB1dCA9
IHNlbGYuZXhwZWN0ZWRfb3V0cHV0KHBvcnQsIHRlc3RfbmFtZSwgcGl4ZWxfdGVzdHMsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dF9vdXRwdXQsIGV4
cGVjdGVkX2NoZWNrc3VtKQorICAgICAgICByZXR1cm4gKGRydF9pbnB1dCwgZHJ0X291dHB1dCkK
KworICAgIGRlZiBleHBlY3RlZF9vdXRwdXQoc2VsZiwgcG9ydCwgdGVzdF9uYW1lLCBwaXhlbF90
ZXN0cywgdGV4dF9vdXRwdXQsIGV4cGVjdGVkX2NoZWNrc3VtKToKKyAgICAgICAgaWYgcGl4ZWxf
dGVzdHMgYW5kIGV4cGVjdGVkX2NoZWNrc3VtOgorICAgICAgICAgICAgcmV0dXJuIFsnQ29udGVu
dC1UeXBlOiB0ZXh0L3BsYWluXG4nLAorICAgICAgICAgICAgICAgICAgICB0ZXh0X291dHB1dCwK
ICAgICAgICAgICAgICAgICAgICAgJyNFT0ZcbicsCiAgICAgICAgICAgICAgICAgICAgICdcbics
Ci0gICAgICAgICAgICAgICAgICAgICdBY3R1YWxIYXNoOiAlc1xuJyAlIGV4cGVjdGVkX2NoZWNr
c3VtLmVuY29kZSgndXRmLTgnKSwKLSAgICAgICAgICAgICAgICAgICAgJ0V4cGVjdGVkSGFzaDog
JXNcbicgJSBleHBlY3RlZF9jaGVja3N1bS5lbmNvZGUoJ3V0Zi04JyksCisgICAgICAgICAgICAg
ICAgICAgICdBY3R1YWxIYXNoOiAlc1xuJyAlIGV4cGVjdGVkX2NoZWNrc3VtLAorICAgICAgICAg
ICAgICAgICAgICAnRXhwZWN0ZWRIYXNoOiAlc1xuJyAlIGV4cGVjdGVkX2NoZWNrc3VtLAogICAg
ICAgICAgICAgICAgICAgICAnI0VPRlxuJ10KLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAg
ICAgICAgZHJ0X291dHB1dCA9IFsKLSAgICAgICAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZTog
dGV4dC9wbGFpblxuJywKLSAgICAgICAgICAgICAgICAgICAgdGV4dF9vdXRwdXQuZW5jb2RlKCd1
dGYtOCcpLAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIFsnQ29udGVudC1UeXBl
OiB0ZXh0L3BsYWluXG4nLAorICAgICAgICAgICAgICAgICAgICB0ZXh0X291dHB1dCwKICAgICAg
ICAgICAgICAgICAgICAgJyNFT0ZcbicsCiAgICAgICAgICAgICAgICAgICAgICcjRU9GXG4nXQog
Ci0gICAgICAgIHJldHVybiAoZHJ0X2lucHV0LCBkcnRfb3V0cHV0KQorICAgIGRlZiBhc3NlcnRU
ZXN0KHNlbGYsIHRlc3RfbmFtZSwgcGl4ZWxfdGVzdHMsIGV4cGVjdGVkX2NoZWNrc3VtPU5vbmUs
CisgICAgICAgICAgICAgICAgICAgZHJ0X291dHB1dD1Ob25lLCBmaWxlc3lzdGVtPU5vbmUpOgor
ICAgICAgICBwbGF0Zm9ybSA9ICd0ZXN0JworICAgICAgICBmaWxlc3lzdGVtID0gZmlsZXN5c3Rl
bSBvciB0ZXN0LnVuaXRfdGVzdF9maWxlc3lzdGVtKCkKKyAgICAgICAgcG9ydCA9IGZhY3Rvcnku
Z2V0KHBsYXRmb3JtLCBmaWxlc3lzdGVtPWZpbGVzeXN0ZW0pCisgICAgICAgIGRydF9pbnB1dCwg
ZHJ0X291dHB1dCA9IHNlbGYubWFrZV9pbnB1dF9vdXRwdXQocG9ydCwgdGVzdF9uYW1lLAorICAg
ICAgICAgICAgcGl4ZWxfdGVzdHMsIGV4cGVjdGVkX2NoZWNrc3VtLCBkcnRfb3V0cHV0KQogCi0g
ICAgZGVmIGFzc2VydFRlc3Qoc2VsZiwgdGVzdF9uYW1lLCBwaXhlbF90ZXN0cywgZXhwZWN0ZWRf
Y2hlY2tzdW09Tm9uZSwgZHJ0X291dHB1dD1Ob25lKToKLSAgICAgICAgZHJ0X2lucHV0LCBkcnRf
b3V0cHV0ID0gc2VsZi5tYWtlX2lucHV0X291dHB1dCh0ZXN0X25hbWUsIHBpeGVsX3Rlc3RzLAot
ICAgICAgICAgICAgZXhwZWN0ZWRfY2hlY2tzdW0sIGRydF9vdXRwdXQpCi0gICAgICAgIGV4dHJh
X2FyZ3MgPSBbXQotICAgICAgICBpZiBwaXhlbF90ZXN0czoKLSAgICAgICAgICAgIGV4dHJhX2Fy
Z3MgPSBbJy0tcGl4ZWwtdGVzdHMnXQotICAgICAgICBkcnQsIHN0ZG91dCwgc3RkZXJyID0gc2Vs
Zi5tYWtlX2RydChkcnRfaW5wdXQsIGV4dHJhX2FyZ3MpCisgICAgICAgIGFyZ3MgPSBbJy0tcGxh
dGZvcm0nLCAndGVzdCddICsgc2VsZi5leHRyYV9hcmdzKHBpeGVsX3Rlc3RzKQorICAgICAgICBz
dGRpbiA9IG5ld3N0cmluZ2lvLlN0cmluZ0lPKGRydF9pbnB1dCkKKyAgICAgICAgc3Rkb3V0ID0g
bmV3c3RyaW5naW8uU3RyaW5nSU8oKQorICAgICAgICBzdGRlcnIgPSBuZXdzdHJpbmdpby5TdHJp
bmdJTygpCisgICAgICAgIG9wdGlvbnMsIGFyZ3MgPSBtb2NrX2RydC5wYXJzZV9vcHRpb25zKGFy
Z3MpCisKKyAgICAgICAgZHJ0ID0gc2VsZi5tYWtlX2RydChvcHRpb25zLCBhcmdzLCBmaWxlc3lz
dGVtLCBzdGRpbiwgc3Rkb3V0LCBzdGRlcnIpCiAgICAgICAgIHJlcyA9IGRydC5ydW4oKQorCiAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzLCAwKQogCiAgICAgICAgICMgV2UgdXNlIHRoZSBT
dHJpbmdJTy5idWZsaXN0IGhlcmUgaW5zdGVhZCBvZiBnZXR2YWx1ZSgpIGJlY2F1c2UKQEAgLTE2
MywxMyArMTY3LDE2IEBAIGNsYXNzIE1vY2tEUlRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGRlcnIuZ2V0dmFsdWUoKSwgJycpCiAKICAgICBkZWYg
dGVzdF9tYWluKHNlbGYpOgorICAgICAgICBmaWxlc3lzdGVtID0gdGVzdC51bml0X3Rlc3RfZmls
ZXN5c3RlbSgpCiAgICAgICAgIHN0ZGluID0gbmV3c3RyaW5naW8uU3RyaW5nSU8oKQogICAgICAg
ICBzdGRvdXQgPSBuZXdzdHJpbmdpby5TdHJpbmdJTygpCiAgICAgICAgIHN0ZGVyciA9IG5ld3N0
cmluZ2lvLlN0cmluZ0lPKCkKLSAgICAgICAgcmVzID0gbW9ja19kcnQubWFpbihbJy0tcGxhdGZv
cm0nLCAndGVzdCcsICctJ10sIHN0ZGluLCBzdGRvdXQsIHN0ZGVycikKKyAgICAgICAgcmVzID0g
bW9ja19kcnQubWFpbihbJy0tcGxhdGZvcm0nLCAndGVzdCddICsgc2VsZi5leHRyYV9hcmdzKEZh
bHNlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlc3lzdGVtLCBzdGRpbiwgc3Rk
b3V0LCBzdGRlcnIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzLCAwKQogICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHN0ZG91dC5nZXR2YWx1ZSgpLCAnJykKICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChzdGRlcnIuZ2V0dmFsdWUoKSwgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
ZmlsZXN5c3RlbS53cml0dGVuX2ZpbGVzLCB7fSkKIAogICAgIGRlZiB0ZXN0X3BpeGVsdGVzdF9w
YXNzZXMoc2VsZik6CiAgICAgICAgICMgVGhpcyBhbHNvIHRlc3RzIHRoYXQgd2UgaGFuZGxlIEhU
VFA6IHRlc3QgVVJMcyBwcm9wZXJseS4KQEAgLTE5Myw1ICsyMDAsNjIgQEAgY2xhc3MgTW9ja0RS
VFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBzZWxmLmFzc2VydFRlc3QoJ3Bhc3Nl
cy9pbWFnZS5odG1sJywgRmFsc2UpCiAKIAorY2xhc3MgTW9ja0Nocm9taXVtRFJUVGVzdChNb2Nr
RFJUVGVzdCk6CisgICAgZGVmIGV4dHJhX2FyZ3Moc2VsZiwgcGl4ZWxfdGVzdHMpOgorICAgICAg
ICBpZiBwaXhlbF90ZXN0czoKKyAgICAgICAgICAgIHJldHVybiBbJy0tcGl4ZWwtdGVzdHM9L3Rt
cC9wbmdfcmVzdWx0MC5wbmcnXQorICAgICAgICByZXR1cm4gW10KKworICAgIGRlZiBtYWtlX2Ry
dChzZWxmLCBvcHRpb25zLCBhcmdzLCBmaWxlc3lzdGVtLCBzdGRpbiwgc3Rkb3V0LCBzdGRlcnIp
OgorICAgICAgICBvcHRpb25zLmNocm9taXVtID0gVHJ1ZQorCisgICAgICAgICMgV2UgaGF2ZSB0
byBzZXQgdGhlc2UgYnkgaGFuZCBiZWNhdXNlIC0tcGxhdGZvcm0gdGVzdCB3b24ndCB0cmlnZ2Vy
CisgICAgICAgICMgdGhlIENocm9taXVtIGNvZGUgcGF0aHMuCisgICAgICAgIG9wdGlvbnMucGl4
ZWxfcGF0aCA9ICcvdG1wL3BuZ19yZXN1bHQwLnBuZycKKyAgICAgICAgb3B0aW9ucy5waXhlbF90
ZXN0cyA9IFRydWUKKworICAgICAgICByZXR1cm4gbW9ja19kcnQuTW9ja0Nocm9taXVtRFJUKG9w
dGlvbnMsIGFyZ3MsIGZpbGVzeXN0ZW0sIHN0ZGluLCBzdGRvdXQsIHN0ZGVycikKKworICAgIGRl
ZiBpbnB1dF9saW5lKHNlbGYsIHBvcnQsIHRlc3RfbmFtZSwgY2hlY2tzdW09Tm9uZSk6CisgICAg
ICAgIHVybCA9IHBvcnQuZmlsZW5hbWVfdG9fdXJpKHNlbGYudG9fcGF0aChwb3J0LCB0ZXN0X25h
bWUpKQorICAgICAgICBpZiBjaGVja3N1bToKKyAgICAgICAgICAgIHJldHVybiB1cmwgKyAnIDYw
MDAgJyArIGNoZWNrc3VtICsgJ1xuJworICAgICAgICByZXR1cm4gdXJsICsgJyA2MDAwXG4nCisK
KyAgICBkZWYgZXhwZWN0ZWRfb3V0cHV0KHNlbGYsIHBvcnQsIHRlc3RfbmFtZSwgcGl4ZWxfdGVz
dHMsIHRleHRfb3V0cHV0LCBleHBlY3RlZF9jaGVja3N1bSk6CisgICAgICAgIHVybCA9IHBvcnQu
ZmlsZW5hbWVfdG9fdXJpKHNlbGYudG9fcGF0aChwb3J0LCB0ZXN0X25hbWUpKQorICAgICAgICBp
ZiBwaXhlbF90ZXN0cyBhbmQgZXhwZWN0ZWRfY2hlY2tzdW06CisgICAgICAgICAgICByZXR1cm4g
WycjVVJMOiVzXG4nICUgdXJsLAorICAgICAgICAgICAgICAgICAgICAnI01ENTolc1xuJyAlIGV4
cGVjdGVkX2NoZWNrc3VtLAorICAgICAgICAgICAgICAgICAgICB0ZXh0X291dHB1dCwKKyAgICAg
ICAgICAgICAgICAgICAgJ1xuJywKKyAgICAgICAgICAgICAgICAgICAgJyNFT0ZcbiddCisgICAg
ICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gWycjVVJMOiVzXG4nICUgdXJsLAorICAgICAg
ICAgICAgICAgICAgICB0ZXh0X291dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgJ1xuJywKKyAg
ICAgICAgICAgICAgICAgICAgJyNFT0ZcbiddCisKKyAgICBkZWYgdGVzdF9waXhlbHRlc3RfX2Zh
aWxzKHNlbGYpOgorICAgICAgICBmaWxlc3lzdGVtID0gdGVzdC51bml0X3Rlc3RfZmlsZXN5c3Rl
bSgpCisgICAgICAgIHNlbGYuYXNzZXJ0VGVzdCgnZmFpbHVyZXMvZXhwZWN0ZWQvY2hlY2tzdW0u
aHRtbCcsIHBpeGVsX3Rlc3RzPVRydWUsCisgICAgICAgICAgICBleHBlY3RlZF9jaGVja3N1bT0n
d3JvbmctY2hlY2tzdW0nLAorICAgICAgICAgICAgZHJ0X291dHB1dD1bJyNVUkw6ZmlsZTovLy90
ZXN0LmNoZWNrb3V0L0xheW91dFRlc3RzL2ZhaWx1cmVzL2V4cGVjdGVkL2NoZWNrc3VtLmh0bWxc
bicsCisgICAgICAgICAgICAgICAgICAgICAgICAnI01ENTpjaGVja3N1bS1jaGVja3N1bVxuJywK
KyAgICAgICAgICAgICAgICAgICAgICAgICdjaGVja3N1bS10eHQnLAorICAgICAgICAgICAgICAg
ICAgICAgICAgJ1xuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICcjRU9GXG4nXSwKKyAgICAg
ICAgICAgIGZpbGVzeXN0ZW09ZmlsZXN5c3RlbSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMo
ZmlsZXN5c3RlbS53cml0dGVuX2ZpbGVzLAorICAgICAgICAgICAgeycvdG1wL3BuZ19yZXN1bHQw
LnBuZyc6ICdjaGVja3N1bVx4OGEtcG5nJ30pCisKKyAgICBkZWYgdGVzdF9jaHJvbWl1bV9wYXJz
ZV9vcHRpb25zKHNlbGYpOgorICAgICAgICBvcHRpb25zLCBhcmdzID0gbW9ja19kcnQucGFyc2Vf
b3B0aW9ucyhbJy0tcGxhdGZvcm0nLCAnY2hyb21pdW0tbWFjJywKKyAgICAgICAgICAgICctLXBp
eGVsLXRlc3RzPS90bXAvcG5nX3Jlc3VsdDAucG5nJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1
ZShvcHRpb25zLmNocm9taXVtKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3B0aW9ucy5waXhl
bF90ZXN0cykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMob3B0aW9ucy5waXhlbF9wYXRoLCAn
L3RtcC9wbmdfcmVzdWx0MC5wbmcnKQorCisKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAg
ICAgdW5pdHRlc3QubWFpbigpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>80989</attachid>
            <date>2011-02-02 15:56:20 -0800</date>
            <delta_ts>2011-02-02 16:17:46 -0800</delta_ts>
            <desc>revise w/ tony&apos;s review feedback</desc>
            <filename>bug-53471-20110202155619.patch</filename>
            <type>text/plain</type>
            <size>19416</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAzNDE1
NTQ2NTFjZmE3M2JiZTE1MGI3MmU5NmFjYmJmZWJkZDExYzAwLi41MWYwZmYwZWZlZGZiNmJkMTlm
YjAzYmZmYTYxNzU4ZDA3ZTQ0NzJkIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMDEtMzEgIERpcmsgUHJhbmtl
ICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgbmV3LXJ1bi13ZWJraXQtdGVzdHM6IHN1cHBvcnQgY2hyb21pdW0g
Y29kZSBwYXRocyBpbiBtb2NrX2RydAorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD01MzQ3MQorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcG9ydC9tb2NrX2RydC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L21vY2tfZHJ0X3VuaXR0ZXN0LnB5OgorCiAyMDExLTAxLTMxICBNaWhh
aSBQYXJwYXJpdGEgIDxtaWhhaXBAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IFRvbnkgQ2hhbmcuCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9wb3J0L21vY2tfZHJ0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcG9ydC9tb2NrX2RydC5weQppbmRleCBhMjYxYWEyY2ViZDc0MTA5MGJkOGE2Y2U3ZGQyNjM4
ZTVhNmM2OGUxLi4zNzAzMjdmYjAxYjU4M2MwZGQwMjU4N2U2NDNkOTc4YjE4NGViMDFlIDEwMDY0
NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L21vY2tfZHJ0
LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvbW9ja19k
cnQucHkKQEAgLTM3LDYgKzM3LDggQEAgaW1wb3J0IG9wdHBhcnNlCiBpbXBvcnQgb3MKIGltcG9y
dCBzeXMKIAorZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtIGltcG9ydCBmaWxlc3lzdGVtCisK
IGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQgaW1wb3J0IGJhc2UKIGZyb20gd2Via2l0
cHkubGF5b3V0X3Rlc3RzLnBvcnQgaW1wb3J0IGZhY3RvcnkKIApAQCAtODEsNyArODMsNiBAQCBj
bGFzcyBNb2NrRFJUUG9ydChvYmplY3QpOgogICAgICAgICAjIG1ldGhvZCB0aGF0IHNwbGljZXMg
aW4gdGhlIG1vY2tfZHJ0IHBhdGggYW5kIGNvbW1hbmQgbGluZSBhcmd1bWVudHMKICAgICAgICAg
IyBpbiBwbGFjZSBvZiB0aGUgYWN0dWFsIHBhdGggdG8gdGhlIGRyaXZlciBiaW5hcnkuCiAKLSAg
ICAgICAgIyBGSVhNRTogVGhpcyBkb2Vzbid0IHlldCB3b3JrIGZvciBDaHJvbWl1bSB0ZXN0X3No
ZWxsIHBvcnRzLgogICAgICAgICBkZWYgb3ZlcnJpZGluZ19jbWRfbGluZSgpOgogICAgICAgICAg
ICAgY21kID0gc2VsZi5fX29yaWdpbmFsX2RyaXZlcl9jbWRfbGluZSgpCiAgICAgICAgICAgICBp
bmRleCA9IGNtZC5pbmRleChzZWxmLl9fZGVsZWdhdGUuX3BhdGhfdG9fZHJpdmVyKCkpCkBAIC0x
MTMsMzQgKzExNCw2NSBAQCBjbGFzcyBNb2NrRFJUUG9ydChvYmplY3QpOgogICAgICAgICBwYXNz
CiAKIAotZGVmIG1haW4oYXJndiwgc3RkaW4sIHN0ZG91dCwgc3RkZXJyKToKK2RlZiBtYWluKGFy
Z3YsIGZzLCBzdGRpbiwgc3Rkb3V0LCBzdGRlcnIpOgogICAgICIiIlJ1biB0aGUgdGVzdHMuIiIi
CiAKICAgICBvcHRpb25zLCBhcmdzID0gcGFyc2Vfb3B0aW9ucyhhcmd2KQotICAgIGRydCA9IE1v
Y2tEUlQob3B0aW9ucywgYXJncywgc3RkaW4sIHN0ZG91dCwgc3RkZXJyKQorICAgIGlmIG9wdGlv
bnMuY2hyb21pdW06CisgICAgICAgIGRydCA9IE1vY2tDaHJvbWl1bURSVChvcHRpb25zLCBhcmdz
LCBmcywgc3RkaW4sIHN0ZG91dCwgc3RkZXJyKQorICAgIGVsc2U6CisgICAgICAgIGRydCA9IE1v
Y2tEUlQob3B0aW9ucywgYXJncywgZnMsIHN0ZGluLCBzdGRvdXQsIHN0ZGVycikKICAgICByZXR1
cm4gZHJ0LnJ1bigpCiAKIAogZGVmIHBhcnNlX29wdGlvbnMoYXJndik6Ci0gICAgIyBGSVhNRTog
V2UgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0byBoYW5kbGUgdmFyaWFudHMgdGhhdCBoYXZlCi0g
ICAgIyBkaWZmZXJlbnQgY29tbWFuZC1saW5lIGNvbnZlbnRpb25zLgotICAgIG9wdGlvbl9saXN0
ID0gWwotICAgICAgICBvcHRwYXJzZS5tYWtlX29wdGlvbignLS1wbGF0Zm9ybScsIGFjdGlvbj0n
c3RvcmUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdwbGF0Zm9ybSB0byBl
bXVsYXRlJyksCi0gICAgICAgIG9wdHBhcnNlLm1ha2Vfb3B0aW9uKCctLWxheW91dC10ZXN0cycs
IGFjdGlvbj0nc3RvcmVfdHJ1ZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1
bHQ9VHJ1ZSwgaGVscD0ncnVuIGxheW91dCB0ZXN0cycpLAotICAgICAgICBvcHRwYXJzZS5tYWtl
X29wdGlvbignLS1waXhlbC10ZXN0cycsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGhlbHA9J291dHB1dCBpbWFnZSBmb3IgcGl4ZWwgdGVzdHMnKSwKLSAgICBdCi0gICAg
b3B0aW9uX3BhcnNlciA9IG9wdHBhcnNlLk9wdGlvblBhcnNlcihvcHRpb25fbGlzdD1vcHRpb25f
bGlzdCkKLSAgICByZXR1cm4gb3B0aW9uX3BhcnNlci5wYXJzZV9hcmdzKGFyZ3YpCisgICAgIyBG
SVhNRTogV2UgaGF2ZSB0byBkbyBjdXN0b20gYXJnIHBhcnNpbmcgaW5zdGVhZCBvZiB1c2luZyB0
aGUgb3B0cGFyc2UKKyAgICAjIG1vZHVsZS4gIEZpcnN0LCBDaHJvbWl1bSBhbmQgbm9uLUNocm9t
aXVtIERSVHMgaGF2ZSBhIGRpZmZlcmVudCBhcmd1bWVudAorICAgICMgc3ludGF4LiAgQ2hyb21p
dW0gdXNlcyAtLXBpeGVsLXRlc3RzPTxwYXRoPiwgYW5kIG5vbi1DaHJvbWl1bSB1c2VzCisgICAg
IyAtLXBpeGVsLXRlc3RzIGFzIGEgYm9vbGVhbiBmbGFnLiBTZWNvbmQsIHdlIGRvbid0IHdhbnQg
dG8gaGF2ZSB0byBsaXN0CisgICAgIyBldmVyeSBjb21tYW5kIGxpbmUgZmxhZyBEUlQgYWNjZXB0
cywgYnV0IG9wdHBhcnNlIGNvbXBsYWlucyBhYm91dAorICAgICMgdW5yZWNvZ25pemVkIGZsYWdz
LiBBdCBzb21lIHBvaW50IGl0IG1pZ2h0IGJlIGdvb2QgdG8gc2hhcmUgYSBjb21tb24KKyAgICAj
IERSVCBvcHRpb25zIGNsYXNzIGJldHdlZW4gdGhpcyBmaWxlIGFuZCB3ZWJraXQucHkgYW5kIGNo
cm9taXVtLnB5CisgICAgIyBqdXN0IHRvIGdldCBiZXR0ZXIgdHlwZSBjaGVja2luZy4KKyAgICBw
bGF0Zm9ybV9pbmRleCA9IGFyZ3YuaW5kZXgoJy0tcGxhdGZvcm0nKQorICAgIHBsYXRmb3JtID0g
YXJndltwbGF0Zm9ybV9pbmRleCArIDFdCisKKyAgICBwaXhlbF90ZXN0cyA9IEZhbHNlCisgICAg
cGl4ZWxfcGF0aCA9IE5vbmUKKyAgICBjaHJvbWl1bSA9IEZhbHNlCisgICAgaWYgcGxhdGZvcm0u
c3RhcnRzd2l0aCgnY2hyb21pdW0nKToKKyAgICAgICAgY2hyb21pdW0gPSBUcnVlCisgICAgICAg
IGZvciBhcmcgaW4gYXJndjoKKyAgICAgICAgICAgIGlmIGFyZy5zdGFydHN3aXRoKCctLXBpeGVs
LXRlc3RzJyk6CisgICAgICAgICAgICAgICAgcGl4ZWxfdGVzdHMgPSBUcnVlCisgICAgICAgICAg
ICAgICAgcGl4ZWxfcGF0aCA9IGFyZ1tsZW4oJy0tcGl4ZWwtdGVzdHM9Jyk6XQorICAgIGVsc2U6
CisgICAgICAgIHBpeGVsX3Rlc3RzID0gJy0tcGl4ZWwtdGVzdHMnIGluIGFyZ3YKKyAgICBvcHRp
b25zID0gYmFzZS5EdW1teU9wdGlvbnMoY2hyb21pdW09Y2hyb21pdW0sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHBsYXRmb3JtPXBsYXRmb3JtLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwaXhlbF90ZXN0cz1waXhlbF90ZXN0cywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcGl4ZWxfcGF0aD1waXhlbF9wYXRoKQorICAgIHJldHVybiAob3B0aW9u
cywgW10pCisKKworIyBGSVhNRTogU2hvdWxkIHByb2JhYmx5IGNoYW5nZSB0aGlzIHRvIHVzZSBE
cml2ZXJJbnB1dCBhZnRlcgorIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NTMwMDQgbGFuZHMuCitjbGFzcyBfRFJUSW5wdXQob2JqZWN0KToKKyAgICBkZWYgX19pbml0
X18oc2VsZiwgbGluZSk6CisgICAgICAgIHZhbHMgPSBsaW5lLnN0cmlwKCkuc3BsaXQoIiciKQor
ICAgICAgICBpZiBsZW4odmFscykgPT0gMToKKyAgICAgICAgICAgIHNlbGYudXJpID0gdmFsc1sw
XQorICAgICAgICAgICAgc2VsZi5jaGVja3N1bSA9IE5vbmUKKyAgICAgICAgZWxzZToKKyAgICAg
ICAgICAgIHNlbGYudXJpID0gdmFsc1swXQorICAgICAgICAgICAgc2VsZi5jaGVja3N1bSA9IHZh
bHNbMV0KIAogCiBjbGFzcyBNb2NrRFJUKG9iamVjdCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYs
IG9wdGlvbnMsIGFyZ3MsIHN0ZGluLCBzdGRvdXQsIHN0ZGVycik6CisgICAgZGVmIF9faW5pdF9f
KHNlbGYsIG9wdGlvbnMsIGFyZ3MsIGZpbGVzeXN0ZW0sIHN0ZGluLCBzdGRvdXQsIHN0ZGVycik6
CiAgICAgICAgIHNlbGYuX29wdGlvbnMgPSBvcHRpb25zCiAgICAgICAgIHNlbGYuX2FyZ3MgPSBh
cmdzCisgICAgICAgIHNlbGYuX2ZpbGVzeXN0ZW0gPSBmaWxlc3lzdGVtCiAgICAgICAgIHNlbGYu
X3N0ZG91dCA9IHN0ZG91dAogICAgICAgICBzZWxmLl9zdGRpbiA9IHN0ZGluCiAgICAgICAgIHNl
bGYuX3N0ZGVyciA9IHN0ZGVycgpAQCAtMTQ4LDU3ICsxODAsOTggQEAgY2xhc3MgTW9ja0RSVChv
YmplY3QpOgogICAgICAgICBwb3J0X25hbWUgPSBOb25lCiAgICAgICAgIGlmIG9wdGlvbnMucGxh
dGZvcm06CiAgICAgICAgICAgICBwb3J0X25hbWUgPSBvcHRpb25zLnBsYXRmb3JtCi0gICAgICAg
IHNlbGYuX3BvcnQgPSBmYWN0b3J5LmdldChwb3J0X25hbWUsIG9wdGlvbnM9b3B0aW9ucykKKyAg
ICAgICAgc2VsZi5fcG9ydCA9IGZhY3RvcnkuZ2V0KHBvcnRfbmFtZSwgb3B0aW9ucz1vcHRpb25z
LCBmaWxlc3lzdGVtPWZpbGVzeXN0ZW0pCiAKICAgICBkZWYgcnVuKHNlbGYpOgogICAgICAgICB3
aGlsZSBUcnVlOgogICAgICAgICAgICAgbGluZSA9IHNlbGYuX3N0ZGluLnJlYWRsaW5lKCkKICAg
ICAgICAgICAgIGlmIG5vdCBsaW5lOgogICAgICAgICAgICAgICAgIGJyZWFrCi0KLSAgICAgICAg
ICAgIHVybCwgZXhwZWN0ZWRfY2hlY2tzdW0gPSBzZWxmLnBhcnNlX2lucHV0KGxpbmUpCi0gICAg
ICAgICAgICBzZWxmLnJ1bl9vbmVfdGVzdCh1cmwsIGV4cGVjdGVkX2NoZWNrc3VtKQorICAgICAg
ICAgICAgc2VsZi5ydW5fb25lX3Rlc3Qoc2VsZi5wYXJzZV9pbnB1dChsaW5lKSkKICAgICAgICAg
cmV0dXJuIDAKIAogICAgIGRlZiBwYXJzZV9pbnB1dChzZWxmLCBsaW5lKToKLSAgICAgICAgbGlu
ZSA9IGxpbmUuc3RyaXAoKQotICAgICAgICBpZiAiJyIgaW4gbGluZToKLSAgICAgICAgICAgIHJl
dHVybiBsaW5lLnNwbGl0KCInIiwgMSkKLSAgICAgICAgcmV0dXJuIChsaW5lLCBOb25lKQorICAg
ICAgICByZXR1cm4gX0RSVElucHV0KGxpbmUpCiAKLSAgICBkZWYgcmF3X2J5dGVzKHNlbGYsIHVu
aWNvZGVfc3RyKToKLSAgICAgICAgcmV0dXJuIHVuaWNvZGVfc3RyLmVuY29kZSgndXRmLTgnKQot
Ci0gICAgZGVmIHJ1bl9vbmVfdGVzdChzZWxmLCB1cmwsIGV4cGVjdGVkX2NoZWNrc3VtKToKKyAg
ICBkZWYgcnVuX29uZV90ZXN0KHNlbGYsIHRlc3RfaW5wdXQpOgogICAgICAgICBwb3J0ID0gc2Vs
Zi5fcG9ydAotICAgICAgICBpZiB1cmwuc3RhcnRzd2l0aCgnaHR0cCcpOgotICAgICAgICAgICAg
dGVzdF9uYW1lID0gcG9ydC51cmlfdG9fdGVzdF9uYW1lKHVybCkKLSAgICAgICAgICAgIHRlc3Rf
cGF0aCA9IHBvcnQuX2ZpbGVzeXN0ZW0uam9pbihwb3J0LmxheW91dF90ZXN0c19kaXIoKSwgdGVz
dF9uYW1lKQorICAgICAgICBpZiB0ZXN0X2lucHV0LnVyaS5zdGFydHN3aXRoKCdodHRwJyk6Cisg
ICAgICAgICAgICB0ZXN0X25hbWUgPSBwb3J0LnVyaV90b190ZXN0X25hbWUodGVzdF9pbnB1dC51
cmkpCisgICAgICAgICAgICB0ZXN0X3BhdGggPSBzZWxmLl9maWxlc3lzdGVtLmpvaW4ocG9ydC5s
YXlvdXRfdGVzdHNfZGlyKCksIHRlc3RfbmFtZSkKICAgICAgICAgZWxzZToKLSAgICAgICAgICAg
IHRlc3RfcGF0aCA9IHVybAorICAgICAgICAgICAgdGVzdF9wYXRoID0gdGVzdF9pbnB1dC51cmkK
IAotICAgICAgICBhY3R1YWxfdGV4dF9ieXRlcyA9IHNlbGYucmF3X2J5dGVzKHBvcnQuZXhwZWN0
ZWRfdGV4dCh0ZXN0X3BhdGgpKQotICAgICAgICBpZiBzZWxmLl9vcHRpb25zLnBpeGVsX3Rlc3Rz
IGFuZCBleHBlY3RlZF9jaGVja3N1bToKLSAgICAgICAgICAgIGFjdHVhbF9jaGVja3N1bV9ieXRl
cyA9IHNlbGYucmF3X2J5dGVzKHBvcnQuZXhwZWN0ZWRfY2hlY2tzdW0odGVzdF9wYXRoKSkKLSAg
ICAgICAgICAgIGFjdHVhbF9pbWFnZV9ieXRlcyA9IHBvcnQuZXhwZWN0ZWRfaW1hZ2UodGVzdF9w
YXRoKQorICAgICAgICBhY3R1YWxfdGV4dCA9IHBvcnQuZXhwZWN0ZWRfdGV4dCh0ZXN0X3BhdGgp
CisgICAgICAgIGlmIHNlbGYuX29wdGlvbnMucGl4ZWxfdGVzdHMgYW5kIHRlc3RfaW5wdXQuY2hl
Y2tzdW06CisgICAgICAgICAgICBhY3R1YWxfY2hlY2tzdW0gPSBwb3J0LmV4cGVjdGVkX2NoZWNr
c3VtKHRlc3RfcGF0aCkKKyAgICAgICAgICAgIGFjdHVhbF9pbWFnZSA9IHBvcnQuZXhwZWN0ZWRf
aW1hZ2UodGVzdF9wYXRoKQogCiAgICAgICAgIHNlbGYuX3N0ZG91dC53cml0ZSgnQ29udGVudC1U
eXBlOiB0ZXh0L3BsYWluXG4nKQotICAgICAgICBzZWxmLl9zdGRvdXQud3JpdGUoYWN0dWFsX3Rl
eHRfYnl0ZXMpCisKKyAgICAgICAgIyBGSVhNRTogTm90ZSB0aGF0IHdlIGRvbid0IGVuc3VyZSB0
aGVyZSBpcyBhIHRyYWlsaW5nIG5ld2xpbmUhCisgICAgICAgICMgVGhpcyBtaXJyb3JzIGFjdHVh
bCAoTWFjKSBEUlQgYmVoYXZpb3IgYnV0IGlzIGEgYnVnLgorICAgICAgICBzZWxmLl9zdGRvdXQu
d3JpdGUoYWN0dWFsX3RleHQpCiAgICAgICAgIHNlbGYuX3N0ZG91dC53cml0ZSgnI0VPRlxuJykK
IAotICAgICAgICBpZiBzZWxmLl9vcHRpb25zLnBpeGVsX3Rlc3RzIGFuZCBleHBlY3RlZF9jaGVj
a3N1bToKLSAgICAgICAgICAgIGV4cGVjdGVkX2NoZWNrc3VtX2J5dGVzID0gc2VsZi5yYXdfYnl0
ZXMoZXhwZWN0ZWRfY2hlY2tzdW0pCisgICAgICAgIGlmIHNlbGYuX29wdGlvbnMucGl4ZWxfdGVz
dHMgYW5kIHRlc3RfaW5wdXQuY2hlY2tzdW06CiAgICAgICAgICAgICBzZWxmLl9zdGRvdXQud3Jp
dGUoJ1xuJykKLSAgICAgICAgICAgIHNlbGYuX3N0ZG91dC53cml0ZSgnQWN0dWFsSGFzaDogJXNc
bicgJSBhY3R1YWxfY2hlY2tzdW1fYnl0ZXMpCi0gICAgICAgICAgICBzZWxmLl9zdGRvdXQud3Jp
dGUoJ0V4cGVjdGVkSGFzaDogJXNcbicgJSBleHBlY3RlZF9jaGVja3N1bV9ieXRlcykKLSAgICAg
ICAgICAgIGlmIGFjdHVhbF9jaGVja3N1bV9ieXRlcyAhPSBleHBlY3RlZF9jaGVja3N1bV9ieXRl
czoKKyAgICAgICAgICAgIHNlbGYuX3N0ZG91dC53cml0ZSgnQWN0dWFsSGFzaDogJXNcbicgJSBh
Y3R1YWxfY2hlY2tzdW0pCisgICAgICAgICAgICBzZWxmLl9zdGRvdXQud3JpdGUoJ0V4cGVjdGVk
SGFzaDogJXNcbicgJSB0ZXN0X2lucHV0LmNoZWNrc3VtKQorICAgICAgICAgICAgaWYgYWN0dWFs
X2NoZWNrc3VtICE9IHRlc3RfaW5wdXQuY2hlY2tzdW06CiAgICAgICAgICAgICAgICAgc2VsZi5f
c3Rkb3V0LndyaXRlKCdDb250ZW50LVR5cGU6IGltYWdlL3BuZ1xuJykKLSAgICAgICAgICAgICAg
ICBzZWxmLl9zdGRvdXQud3JpdGUoJ0NvbnRlbnQtTGVuZ3RoOiAlc1xuXG4nICUgbGVuKGFjdHVh
bF9pbWFnZV9ieXRlcykpCi0gICAgICAgICAgICAgICAgc2VsZi5fc3Rkb3V0LndyaXRlKGFjdHVh
bF9pbWFnZV9ieXRlcykKKyAgICAgICAgICAgICAgICBzZWxmLl9zdGRvdXQud3JpdGUoJ0NvbnRl
bnQtTGVuZ3RoOiAlc1xuXG4nICUgbGVuKGFjdHVhbF9pbWFnZSkpCisgICAgICAgICAgICAgICAg
c2VsZi5fc3Rkb3V0LndyaXRlKGFjdHVhbF9pbWFnZSkKICAgICAgICAgc2VsZi5fc3Rkb3V0Lndy
aXRlKCcjRU9GXG4nKQogICAgICAgICBzZWxmLl9zdGRvdXQuZmx1c2goKQogICAgICAgICBzZWxm
Ll9zdGRlcnIuZmx1c2goKQogCiAKKyMgRklYTUU6IFNob3VsZCBwcm9iYWJseSBjaGFuZ2UgdGhp
cyB0byB1c2UgRHJpdmVySW5wdXQgYWZ0ZXIKKyMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTUzMDA0IGxhbmRzLgorY2xhc3MgX0Nocm9taXVtRFJUSW5wdXQoX0RSVElu
cHV0KToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbGluZSk6CisgICAgICAgIHZhbHMgPSBsaW5l
LnN0cmlwKCkuc3BsaXQoKQorICAgICAgICBpZiBsZW4odmFscykgPT0gMzoKKyAgICAgICAgICAg
IHNlbGYudXJpLCBzZWxmLnRpbWVvdXQsIHNlbGYuY2hlY2tzdW0gPSB2YWxzCisgICAgICAgIGVs
c2U6CisgICAgICAgICAgICBzZWxmLnVyaSA9IHZhbHNbMF0KKyAgICAgICAgICAgIHNlbGYudGlt
ZW91dCA9IHZhbHNbMV0KKyAgICAgICAgICAgIHNlbGYuY2hlY2tzdW0gPSBOb25lCisKKworY2xh
c3MgTW9ja0Nocm9taXVtRFJUKE1vY2tEUlQpOgorICAgIGRlZiBwYXJzZV9pbnB1dChzZWxmLCBs
aW5lKToKKyAgICAgICAgcmV0dXJuIF9DaHJvbWl1bURSVElucHV0KGxpbmUpCisKKyAgICBkZWYg
cnVuX29uZV90ZXN0KHNlbGYsIHRlc3RfaW5wdXQpOgorICAgICAgICBwb3J0ID0gc2VsZi5fcG9y
dAorICAgICAgICB0ZXN0X25hbWUgPSBzZWxmLl9wb3J0LnVyaV90b190ZXN0X25hbWUodGVzdF9p
bnB1dC51cmkpCisgICAgICAgIHRlc3RfcGF0aCA9IHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihwb3J0
LmxheW91dF90ZXN0c19kaXIoKSwgdGVzdF9uYW1lKQorCisgICAgICAgIGFjdHVhbF90ZXh0ID0g
cG9ydC5leHBlY3RlZF90ZXh0KHRlc3RfcGF0aCkKKyAgICAgICAgYWN0dWFsX2ltYWdlID0gJycK
KyAgICAgICAgYWN0dWFsX2NoZWNrc3VtID0gJycKKyAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5w
aXhlbF90ZXN0cyBhbmQgdGVzdF9pbnB1dC5jaGVja3N1bToKKyAgICAgICAgICAgIGFjdHVhbF9j
aGVja3N1bSA9IHBvcnQuZXhwZWN0ZWRfY2hlY2tzdW0odGVzdF9wYXRoKQorICAgICAgICAgICAg
aWYgYWN0dWFsX2NoZWNrc3VtICE9IHRlc3RfaW5wdXQuY2hlY2tzdW06CisgICAgICAgICAgICAg
ICAgYWN0dWFsX2ltYWdlID0gcG9ydC5leHBlY3RlZF9pbWFnZSh0ZXN0X3BhdGgpCisKKyAgICAg
ICAgc2VsZi5fc3Rkb3V0LndyaXRlKCIjVVJMOiVzXG4iICUgdGVzdF9pbnB1dC51cmkpCisgICAg
ICAgIGlmIHNlbGYuX29wdGlvbnMucGl4ZWxfdGVzdHMgYW5kIHRlc3RfaW5wdXQuY2hlY2tzdW06
CisgICAgICAgICAgICBzZWxmLl9zdGRvdXQud3JpdGUoIiNNRDU6JXNcbiIgJSBhY3R1YWxfY2hl
Y2tzdW0pCisgICAgICAgICAgICBzZWxmLl9maWxlc3lzdGVtLndyaXRlX2JpbmFyeV9maWxlKHNl
bGYuX29wdGlvbnMucGl4ZWxfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYWN0dWFsX2ltYWdlKQorICAgICAgICBzZWxmLl9zdGRvdXQud3JpdGUo
YWN0dWFsX3RleHQpCisKKyAgICAgICAgIyBGSVhNRTogKFNlZSBhYm92ZSBGSVhNRSBhcyB3ZWxs
KS4gQ2hyb21pdW0gRFJUIGFwcGVhcnMgdG8gYWx3YXlzCisgICAgICAgICMgZW5zdXJlIHRoZSB0
ZXh0IG91dHB1dCBoYXMgYSB0cmFpbGluZyBuZXdsaW5lLiBNYWMgRFJUIGRvZXMgbm90LgorICAg
ICAgICBpZiBub3QgYWN0dWFsX3RleHQuZW5kc3dpdGgoJ1xuJyk6CisgICAgICAgICAgICBzZWxm
Ll9zdGRvdXQud3JpdGUoJ1xuJykKKyAgICAgICAgc2VsZi5fc3Rkb3V0LndyaXRlKCcjRU9GXG4n
KQorICAgICAgICBzZWxmLl9zdGRvdXQuZmx1c2goKQorCisKKwogaWYgX19uYW1lX18gPT0gJ19f
bWFpbl9fJzoKLSAgICBzeXMuZXhpdChtYWluKHN5cy5hcmd2WzE6XSwgc3lzLnN0ZGluLCBzeXMu
c3Rkb3V0LCBzeXMuc3RkZXJyKSkKKyAgICBmcyA9IGZpbGVzeXN0ZW0uRmlsZVN5c3RlbSgpCisg
ICAgc3lzLmV4aXQobWFpbihzeXMuYXJndlsxOl0sIGZzLCBzeXMuc3RkaW4sIHN5cy5zdGRvdXQs
IHN5cy5zdGRlcnIpKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC9tb2NrX2RydF91bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvbW9ja19kcnRfdW5pdHRlc3QucHkKaW5kZXggM2FlYWZhZmFjNDgx
ZTJhZjI4YzVmOWY1ZDZhN2QwMjk3YjliZDcxMi4uMTUwNjMxNTMxYzVkMDAxZjA0NWRmZTJkMDQw
YWZjOTJkOGQ2ZTA0ZiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC9tb2NrX2RydF91bml0dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9wb3J0L21vY2tfZHJ0X3VuaXR0ZXN0LnB5CkBAIC0zNiw2ICszNiw3
IEBAIGZyb20gd2Via2l0cHkuY29tbW9uIGltcG9ydCBuZXdzdHJpbmdpbwogZnJvbSB3ZWJraXRw
eS5sYXlvdXRfdGVzdHMucG9ydCBpbXBvcnQgbW9ja19kcnQKIGZyb20gd2Via2l0cHkubGF5b3V0
X3Rlc3RzLnBvcnQgaW1wb3J0IGZhY3RvcnkKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBv
cnQgaW1wb3J0IHBvcnRfdGVzdGNhc2UKK2Zyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQg
aW1wb3J0IHRlc3QKIAogCiBjbGFzcyBNb2NrRFJUUG9ydFRlc3QocG9ydF90ZXN0Y2FzZS5Qb3J0
VGVzdENhc2UpOgpAQCAtODcsMTUgKzg4LDExIEBAIGNsYXNzIE1vY2tEUlRQb3J0VGVzdChwb3J0
X3Rlc3RjYXNlLlBvcnRUZXN0Q2FzZSk6CiAKIAogY2xhc3MgTW9ja0RSVFRlc3QodW5pdHRlc3Qu
VGVzdENhc2UpOgotICAgIGRlZiBzZXRVcChzZWxmKToKLSAgICAgICAgc2VsZi5fcG9ydCA9IGZh
Y3RvcnkuZ2V0KCd0ZXN0JykKLSAgICAgICAgc2VsZi5fbGF5b3V0X3Rlc3RzX2RpciA9IHNlbGYu
X3BvcnQubGF5b3V0X3Rlc3RzX2RpcigpCisgICAgZGVmIHRvX3BhdGgoc2VsZiwgcG9ydCwgdGVz
dF9uYW1lKToKKyAgICAgICAgcmV0dXJuIHBvcnQuX2ZpbGVzeXN0ZW0uam9pbihwb3J0LmxheW91
dF90ZXN0c19kaXIoKSwgdGVzdF9uYW1lKQogCi0gICAgZGVmIHRvX3BhdGgoc2VsZiwgdGVzdF9u
YW1lKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX3BvcnQuX2ZpbGVzeXN0ZW0uam9pbihzZWxmLl9s
YXlvdXRfdGVzdHNfZGlyLCB0ZXN0X25hbWUpCi0KLSAgICBkZWYgaW5wdXRfbGluZShzZWxmLCB0
ZXN0X25hbWUsIGNoZWNrc3VtPU5vbmUpOgotICAgICAgICB1cmwgPSBzZWxmLl9wb3J0LmZpbGVu
YW1lX3RvX3VyaShzZWxmLnRvX3BhdGgodGVzdF9uYW1lKSkKKyAgICBkZWYgaW5wdXRfbGluZShz
ZWxmLCBwb3J0LCB0ZXN0X25hbWUsIGNoZWNrc3VtPU5vbmUpOgorICAgICAgICB1cmwgPSBwb3J0
LmZpbGVuYW1lX3RvX3VyaShzZWxmLnRvX3BhdGgocG9ydCwgdGVzdF9uYW1lKSkKICAgICAgICAg
IyBGSVhNRTogd2Ugc2hvdWxkbid0IGhhdmUgdG8gd29yayBhcm91bmQgcGxhdGZvcm0tc3BlY2lm
aWMgaXNzdWVzCiAgICAgICAgICMgaGVyZS4KICAgICAgICAgaWYgdXJsLnN0YXJ0c3dpdGgoJ2Zp
bGU6Ly8vLycpOgpAQCAtMTA3LDU0ICsxMDQsNjEgQEAgY2xhc3MgTW9ja0RSVFRlc3QodW5pdHRl
c3QuVGVzdENhc2UpOgogICAgICAgICAgICAgcmV0dXJuIHVybCArICInIiArIGNoZWNrc3VtICsg
J1xuJwogICAgICAgICByZXR1cm4gdXJsICsgJ1xuJwogCi0gICAgZGVmIG1ha2VfZHJ0KHNlbGYs
IGlucHV0X3N0cmluZywgZXh0cmFfYXJncz1Ob25lKToKLSAgICAgICAgYXJncyA9IFsnLS1wbGF0
Zm9ybScsICd0ZXN0JywgJy0nXQotICAgICAgICBleHRyYV9hcmdzID0gZXh0cmFfYXJncyBvciBb
XQotICAgICAgICBhcmdzICs9IGV4dHJhX2FyZ3MKLSAgICAgICAgc3RkaW4gPSBuZXdzdHJpbmdp
by5TdHJpbmdJTyhpbnB1dF9zdHJpbmcpCi0gICAgICAgIHN0ZG91dCA9IG5ld3N0cmluZ2lvLlN0
cmluZ0lPKCkKLSAgICAgICAgc3RkZXJyID0gbmV3c3RyaW5naW8uU3RyaW5nSU8oKQotICAgICAg
ICBvcHRpb25zLCBhcmdzID0gbW9ja19kcnQucGFyc2Vfb3B0aW9ucyhhcmdzKQotICAgICAgICBk
cnQgPSBtb2NrX2RydC5Nb2NrRFJUKG9wdGlvbnMsIGFyZ3MsIHN0ZGluLCBzdGRvdXQsIHN0ZGVy
cikKLSAgICAgICAgcmV0dXJuIChkcnQsIHN0ZG91dCwgc3RkZXJyKQorICAgIGRlZiBleHRyYV9h
cmdzKHNlbGYsIHBpeGVsX3Rlc3RzKToKKyAgICAgICAgaWYgcGl4ZWxfdGVzdHM6CisgICAgICAg
ICAgICByZXR1cm4gWyctLXBpeGVsLXRlc3RzJywgJy0nXQorICAgICAgICByZXR1cm4gWyctJ10K
IAotICAgIGRlZiBtYWtlX2lucHV0X291dHB1dChzZWxmLCB0ZXN0X25hbWUsIHBpeGVsX3Rlc3Rz
LCBleHBlY3RlZF9jaGVja3N1bSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZHJ0X291dHB1
dCwgZHJ0X2lucHV0PU5vbmUpOgotICAgICAgICBwYXRoID0gc2VsZi50b19wYXRoKHRlc3RfbmFt
ZSkKKyAgICBkZWYgbWFrZV9kcnQoc2VsZiwgb3B0aW9ucywgYXJncywgZmlsZXN5c3RlbSwgc3Rk
aW4sIHN0ZG91dCwgc3RkZXJyKToKKyAgICAgICAgcmV0dXJuIG1vY2tfZHJ0Lk1vY2tEUlQob3B0
aW9ucywgYXJncywgZmlsZXN5c3RlbSwgc3RkaW4sIHN0ZG91dCwgc3RkZXJyKQorCisgICAgZGVm
IG1ha2VfaW5wdXRfb3V0cHV0KHNlbGYsIHBvcnQsIHRlc3RfbmFtZSwgcGl4ZWxfdGVzdHMsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX2NoZWNrc3VtLCBkcnRfb3V0cHV0LCBk
cnRfaW5wdXQ9Tm9uZSk6CisgICAgICAgIHBhdGggPSBzZWxmLnRvX3BhdGgocG9ydCwgdGVzdF9u
YW1lKQogICAgICAgICBpZiBwaXhlbF90ZXN0czoKICAgICAgICAgICAgIGlmIG5vdCBleHBlY3Rl
ZF9jaGVja3N1bToKLSAgICAgICAgICAgICAgICBleHBlY3RlZF9jaGVja3N1bSA9IHNlbGYuX3Bv
cnQuZXhwZWN0ZWRfY2hlY2tzdW0ocGF0aCkKKyAgICAgICAgICAgICAgICBleHBlY3RlZF9jaGVj
a3N1bSA9IHBvcnQuZXhwZWN0ZWRfY2hlY2tzdW0ocGF0aCkKICAgICAgICAgaWYgbm90IGRydF9p
bnB1dDoKLSAgICAgICAgICAgIGRydF9pbnB1dCA9IHNlbGYuaW5wdXRfbGluZSh0ZXN0X25hbWUs
IGV4cGVjdGVkX2NoZWNrc3VtKQotICAgICAgICB0ZXh0X291dHB1dCA9IHNlbGYuX3BvcnQuZXhw
ZWN0ZWRfdGV4dChwYXRoKQorICAgICAgICAgICAgZHJ0X2lucHV0ID0gc2VsZi5pbnB1dF9saW5l
KHBvcnQsIHRlc3RfbmFtZSwgZXhwZWN0ZWRfY2hlY2tzdW0pCisgICAgICAgIHRleHRfb3V0cHV0
ID0gcG9ydC5leHBlY3RlZF90ZXh0KHBhdGgpCiAKICAgICAgICAgaWYgbm90IGRydF9vdXRwdXQ6
Ci0gICAgICAgICAgICBpZiBwaXhlbF90ZXN0czoKLSAgICAgICAgICAgICAgICBkcnRfb3V0cHV0
ID0gWwotICAgICAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluXG4nLAot
ICAgICAgICAgICAgICAgICAgICB0ZXh0X291dHB1dC5lbmNvZGUoJ3V0Zi04JyksCisgICAgICAg
ICAgICBkcnRfb3V0cHV0ID0gc2VsZi5leHBlY3RlZF9vdXRwdXQocG9ydCwgdGVzdF9uYW1lLCBw
aXhlbF90ZXN0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB0ZXh0X291dHB1dCwgZXhwZWN0ZWRfY2hlY2tzdW0pCisgICAgICAgIHJldHVybiAoZHJ0X2lu
cHV0LCBkcnRfb3V0cHV0KQorCisgICAgZGVmIGV4cGVjdGVkX291dHB1dChzZWxmLCBwb3J0LCB0
ZXN0X25hbWUsIHBpeGVsX3Rlc3RzLCB0ZXh0X291dHB1dCwgZXhwZWN0ZWRfY2hlY2tzdW0pOgor
ICAgICAgICBpZiBwaXhlbF90ZXN0cyBhbmQgZXhwZWN0ZWRfY2hlY2tzdW06CisgICAgICAgICAg
ICByZXR1cm4gWydDb250ZW50LVR5cGU6IHRleHQvcGxhaW5cbicsCisgICAgICAgICAgICAgICAg
ICAgIHRleHRfb3V0cHV0LAogICAgICAgICAgICAgICAgICAgICAnI0VPRlxuJywKICAgICAgICAg
ICAgICAgICAgICAgJ1xuJywKLSAgICAgICAgICAgICAgICAgICAgJ0FjdHVhbEhhc2g6ICVzXG4n
ICUgZXhwZWN0ZWRfY2hlY2tzdW0uZW5jb2RlKCd1dGYtOCcpLAotICAgICAgICAgICAgICAgICAg
ICAnRXhwZWN0ZWRIYXNoOiAlc1xuJyAlIGV4cGVjdGVkX2NoZWNrc3VtLmVuY29kZSgndXRmLTgn
KSwKKyAgICAgICAgICAgICAgICAgICAgJ0FjdHVhbEhhc2g6ICVzXG4nICUgZXhwZWN0ZWRfY2hl
Y2tzdW0sCisgICAgICAgICAgICAgICAgICAgICdFeHBlY3RlZEhhc2g6ICVzXG4nICUgZXhwZWN0
ZWRfY2hlY2tzdW0sCiAgICAgICAgICAgICAgICAgICAgICcjRU9GXG4nXQotICAgICAgICAgICAg
ZWxzZToKLSAgICAgICAgICAgICAgICBkcnRfb3V0cHV0ID0gWwotICAgICAgICAgICAgICAgICAg
ICAnQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluXG4nLAotICAgICAgICAgICAgICAgICAgICB0ZXh0
X291dHB1dC5lbmNvZGUoJ3V0Zi04JyksCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1
cm4gWydDb250ZW50LVR5cGU6IHRleHQvcGxhaW5cbicsCisgICAgICAgICAgICAgICAgICAgIHRl
eHRfb3V0cHV0LAogICAgICAgICAgICAgICAgICAgICAnI0VPRlxuJywKICAgICAgICAgICAgICAg
ICAgICAgJyNFT0ZcbiddCiAKLSAgICAgICAgcmV0dXJuIChkcnRfaW5wdXQsIGRydF9vdXRwdXQp
CisgICAgZGVmIGFzc2VydFRlc3Qoc2VsZiwgdGVzdF9uYW1lLCBwaXhlbF90ZXN0cywgZXhwZWN0
ZWRfY2hlY2tzdW09Tm9uZSwKKyAgICAgICAgICAgICAgICAgICBkcnRfb3V0cHV0PU5vbmUsIGZp
bGVzeXN0ZW09Tm9uZSk6CisgICAgICAgIHBsYXRmb3JtID0gJ3Rlc3QnCisgICAgICAgIGZpbGVz
eXN0ZW0gPSBmaWxlc3lzdGVtIG9yIHRlc3QudW5pdF90ZXN0X2ZpbGVzeXN0ZW0oKQorICAgICAg
ICBwb3J0ID0gZmFjdG9yeS5nZXQocGxhdGZvcm0sIGZpbGVzeXN0ZW09ZmlsZXN5c3RlbSkKKyAg
ICAgICAgZHJ0X2lucHV0LCBkcnRfb3V0cHV0ID0gc2VsZi5tYWtlX2lucHV0X291dHB1dChwb3J0
LCB0ZXN0X25hbWUsCisgICAgICAgICAgICBwaXhlbF90ZXN0cywgZXhwZWN0ZWRfY2hlY2tzdW0s
IGRydF9vdXRwdXQpCiAKLSAgICBkZWYgYXNzZXJ0VGVzdChzZWxmLCB0ZXN0X25hbWUsIHBpeGVs
X3Rlc3RzLCBleHBlY3RlZF9jaGVja3N1bT1Ob25lLCBkcnRfb3V0cHV0PU5vbmUpOgotICAgICAg
ICBkcnRfaW5wdXQsIGRydF9vdXRwdXQgPSBzZWxmLm1ha2VfaW5wdXRfb3V0cHV0KHRlc3RfbmFt
ZSwgcGl4ZWxfdGVzdHMsCi0gICAgICAgICAgICBleHBlY3RlZF9jaGVja3N1bSwgZHJ0X291dHB1
dCkKLSAgICAgICAgZXh0cmFfYXJncyA9IFtdCi0gICAgICAgIGlmIHBpeGVsX3Rlc3RzOgotICAg
ICAgICAgICAgZXh0cmFfYXJncyA9IFsnLS1waXhlbC10ZXN0cyddCi0gICAgICAgIGRydCwgc3Rk
b3V0LCBzdGRlcnIgPSBzZWxmLm1ha2VfZHJ0KGRydF9pbnB1dCwgZXh0cmFfYXJncykKKyAgICAg
ICAgYXJncyA9IFsnLS1wbGF0Zm9ybScsICd0ZXN0J10gKyBzZWxmLmV4dHJhX2FyZ3MocGl4ZWxf
dGVzdHMpCisgICAgICAgIHN0ZGluID0gbmV3c3RyaW5naW8uU3RyaW5nSU8oZHJ0X2lucHV0KQor
ICAgICAgICBzdGRvdXQgPSBuZXdzdHJpbmdpby5TdHJpbmdJTygpCisgICAgICAgIHN0ZGVyciA9
IG5ld3N0cmluZ2lvLlN0cmluZ0lPKCkKKyAgICAgICAgb3B0aW9ucywgYXJncyA9IG1vY2tfZHJ0
LnBhcnNlX29wdGlvbnMoYXJncykKKworICAgICAgICBkcnQgPSBzZWxmLm1ha2VfZHJ0KG9wdGlv
bnMsIGFyZ3MsIGZpbGVzeXN0ZW0sIHN0ZGluLCBzdGRvdXQsIHN0ZGVycikKICAgICAgICAgcmVz
ID0gZHJ0LnJ1bigpCisKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMsIDApCiAKICAgICAg
ICAgIyBXZSB1c2UgdGhlIFN0cmluZ0lPLmJ1Zmxpc3QgaGVyZSBpbnN0ZWFkIG9mIGdldHZhbHVl
KCkgYmVjYXVzZQpAQCAtMTYzLDEzICsxNjcsMTYgQEAgY2xhc3MgTW9ja0RSVFRlc3QodW5pdHRl
c3QuVGVzdENhc2UpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0ZGVyci5nZXR2YWx1ZSgp
LCAnJykKIAogICAgIGRlZiB0ZXN0X21haW4oc2VsZik6CisgICAgICAgIGZpbGVzeXN0ZW0gPSB0
ZXN0LnVuaXRfdGVzdF9maWxlc3lzdGVtKCkKICAgICAgICAgc3RkaW4gPSBuZXdzdHJpbmdpby5T
dHJpbmdJTygpCiAgICAgICAgIHN0ZG91dCA9IG5ld3N0cmluZ2lvLlN0cmluZ0lPKCkKICAgICAg
ICAgc3RkZXJyID0gbmV3c3RyaW5naW8uU3RyaW5nSU8oKQotICAgICAgICByZXMgPSBtb2NrX2Ry
dC5tYWluKFsnLS1wbGF0Zm9ybScsICd0ZXN0JywgJy0nXSwgc3RkaW4sIHN0ZG91dCwgc3RkZXJy
KQorICAgICAgICByZXMgPSBtb2NrX2RydC5tYWluKFsnLS1wbGF0Zm9ybScsICd0ZXN0J10gKyBz
ZWxmLmV4dHJhX2FyZ3MoRmFsc2UpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVz
eXN0ZW0sIHN0ZGluLCBzdGRvdXQsIHN0ZGVycikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChy
ZXMsIDApCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3Rkb3V0LmdldHZhbHVlKCksICcnKQog
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0ZGVyci5nZXR2YWx1ZSgpLCAnJykKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChmaWxlc3lzdGVtLndyaXR0ZW5fZmlsZXMsIHt9KQogCiAgICAgZGVm
IHRlc3RfcGl4ZWx0ZXN0X3Bhc3NlcyhzZWxmKToKICAgICAgICAgIyBUaGlzIGFsc28gdGVzdHMg
dGhhdCB3ZSBoYW5kbGUgSFRUUDogdGVzdCBVUkxzIHByb3Blcmx5LgpAQCAtMTkzLDUgKzIwMCw2
MiBAQCBjbGFzcyBNb2NrRFJUVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIHNlbGYu
YXNzZXJ0VGVzdCgncGFzc2VzL2ltYWdlLmh0bWwnLCBGYWxzZSkKIAogCitjbGFzcyBNb2NrQ2hy
b21pdW1EUlRUZXN0KE1vY2tEUlRUZXN0KToKKyAgICBkZWYgZXh0cmFfYXJncyhzZWxmLCBwaXhl
bF90ZXN0cyk6CisgICAgICAgIGlmIHBpeGVsX3Rlc3RzOgorICAgICAgICAgICAgcmV0dXJuIFsn
LS1waXhlbC10ZXN0cz0vdG1wL3BuZ19yZXN1bHQwLnBuZyddCisgICAgICAgIHJldHVybiBbXQor
CisgICAgZGVmIG1ha2VfZHJ0KHNlbGYsIG9wdGlvbnMsIGFyZ3MsIGZpbGVzeXN0ZW0sIHN0ZGlu
LCBzdGRvdXQsIHN0ZGVycik6CisgICAgICAgIG9wdGlvbnMuY2hyb21pdW0gPSBUcnVlCisKKyAg
ICAgICAgIyBXZSBoYXZlIHRvIHNldCB0aGVzZSBieSBoYW5kIGJlY2F1c2UgLS1wbGF0Zm9ybSB0
ZXN0IHdvbid0IHRyaWdnZXIKKyAgICAgICAgIyB0aGUgQ2hyb21pdW0gY29kZSBwYXRocy4KKyAg
ICAgICAgb3B0aW9ucy5waXhlbF9wYXRoID0gJy90bXAvcG5nX3Jlc3VsdDAucG5nJworICAgICAg
ICBvcHRpb25zLnBpeGVsX3Rlc3RzID0gVHJ1ZQorCisgICAgICAgIHJldHVybiBtb2NrX2RydC5N
b2NrQ2hyb21pdW1EUlQob3B0aW9ucywgYXJncywgZmlsZXN5c3RlbSwgc3RkaW4sIHN0ZG91dCwg
c3RkZXJyKQorCisgICAgZGVmIGlucHV0X2xpbmUoc2VsZiwgcG9ydCwgdGVzdF9uYW1lLCBjaGVj
a3N1bT1Ob25lKToKKyAgICAgICAgdXJsID0gcG9ydC5maWxlbmFtZV90b191cmkoc2VsZi50b19w
YXRoKHBvcnQsIHRlc3RfbmFtZSkpCisgICAgICAgIGlmIGNoZWNrc3VtOgorICAgICAgICAgICAg
cmV0dXJuIHVybCArICcgNjAwMCAnICsgY2hlY2tzdW0gKyAnXG4nCisgICAgICAgIHJldHVybiB1
cmwgKyAnIDYwMDBcbicKKworICAgIGRlZiBleHBlY3RlZF9vdXRwdXQoc2VsZiwgcG9ydCwgdGVz
dF9uYW1lLCBwaXhlbF90ZXN0cywgdGV4dF9vdXRwdXQsIGV4cGVjdGVkX2NoZWNrc3VtKToKKyAg
ICAgICAgdXJsID0gcG9ydC5maWxlbmFtZV90b191cmkoc2VsZi50b19wYXRoKHBvcnQsIHRlc3Rf
bmFtZSkpCisgICAgICAgIGlmIHBpeGVsX3Rlc3RzIGFuZCBleHBlY3RlZF9jaGVja3N1bToKKyAg
ICAgICAgICAgIHJldHVybiBbJyNVUkw6JXNcbicgJSB1cmwsCisgICAgICAgICAgICAgICAgICAg
ICcjTUQ1OiVzXG4nICUgZXhwZWN0ZWRfY2hlY2tzdW0sCisgICAgICAgICAgICAgICAgICAgIHRl
eHRfb3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAnXG4nLAorICAgICAgICAgICAgICAgICAg
ICAnI0VPRlxuJ10KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBbJyNVUkw6JXNc
bicgJSB1cmwsCisgICAgICAgICAgICAgICAgICAgIHRleHRfb3V0cHV0LAorICAgICAgICAgICAg
ICAgICAgICAnXG4nLAorICAgICAgICAgICAgICAgICAgICAnI0VPRlxuJ10KKworICAgIGRlZiB0
ZXN0X3BpeGVsdGVzdF9fZmFpbHMoc2VsZik6CisgICAgICAgIGZpbGVzeXN0ZW0gPSB0ZXN0LnVu
aXRfdGVzdF9maWxlc3lzdGVtKCkKKyAgICAgICAgc2VsZi5hc3NlcnRUZXN0KCdmYWlsdXJlcy9l
eHBlY3RlZC9jaGVja3N1bS5odG1sJywgcGl4ZWxfdGVzdHM9VHJ1ZSwKKyAgICAgICAgICAgIGV4
cGVjdGVkX2NoZWNrc3VtPSd3cm9uZy1jaGVja3N1bScsCisgICAgICAgICAgICBkcnRfb3V0cHV0
PVsnI1VSTDpmaWxlOi8vL3Rlc3QuY2hlY2tvdXQvTGF5b3V0VGVzdHMvZmFpbHVyZXMvZXhwZWN0
ZWQvY2hlY2tzdW0uaHRtbFxuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICcjTUQ1OmNoZWNr
c3VtLWNoZWNrc3VtXG4nLAorICAgICAgICAgICAgICAgICAgICAgICAgJ2NoZWNrc3VtLXR4dCcs
CisgICAgICAgICAgICAgICAgICAgICAgICAnXG4nLAorICAgICAgICAgICAgICAgICAgICAgICAg
JyNFT0ZcbiddLAorICAgICAgICAgICAgZmlsZXN5c3RlbT1maWxlc3lzdGVtKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFscyhmaWxlc3lzdGVtLndyaXR0ZW5fZmlsZXMsCisgICAgICAgICAgICB7
Jy90bXAvcG5nX3Jlc3VsdDAucG5nJzogJ2NoZWNrc3VtXHg4YS1wbmcnfSkKKworICAgIGRlZiB0
ZXN0X2Nocm9taXVtX3BhcnNlX29wdGlvbnMoc2VsZik6CisgICAgICAgIG9wdGlvbnMsIGFyZ3Mg
PSBtb2NrX2RydC5wYXJzZV9vcHRpb25zKFsnLS1wbGF0Zm9ybScsICdjaHJvbWl1bS1tYWMnLAor
ICAgICAgICAgICAgJy0tcGl4ZWwtdGVzdHM9L3RtcC9wbmdfcmVzdWx0MC5wbmcnXSkKKyAgICAg
ICAgc2VsZi5hc3NlcnRUcnVlKG9wdGlvbnMuY2hyb21pdW0pCisgICAgICAgIHNlbGYuYXNzZXJ0
VHJ1ZShvcHRpb25zLnBpeGVsX3Rlc3RzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhvcHRp
b25zLnBpeGVsX3BhdGgsICcvdG1wL3BuZ19yZXN1bHQwLnBuZycpCisKKwogaWYgX19uYW1lX18g
PT0gJ19fbWFpbl9fJzoKICAgICB1bml0dGVzdC5tYWluKCkK
</data>
<flag name="review"
          id="72513"
          type_id="1"
          status="+"
          setter="tony"
    />
          </attachment>
      

    </bug>

</bugzilla>