<?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>83944</bug_id>
          
          <creation_ts>2012-04-13 14:07:13 -0700</creation_ts>
          <short_desc>Extract PerfTestFactory</short_desc>
          <delta_ts>2012-04-27 00:04:40 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>abarth</cc>
    
    <cc>dpranke</cc>
    
    <cc>eric</cc>
    
    <cc>morrita</cc>
    
    <cc>ojan</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>602393</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-04-13 14:07:13 -0700</bug_when>
    <thetext>Extract PerfTestFactory</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>602397</commentid>
    <comment_count>1</comment_count>
      <attachid>137148</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-04-13 14:11:04 -0700</bug_when>
    <thetext>Created attachment 137148
cleanup</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>602401</commentid>
    <comment_count>2</comment_count>
      <attachid>137148</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-04-13 14:19:53 -0700</bug_when>
    <thetext>Comment on attachment 137148
cleanup

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

&gt; Tools/Scripts/webkitpy/performance_tests/perftest.py:186
&gt; +    pattern_map = [

_pattern_map?

&gt; Tools/Scripts/webkitpy/performance_tests/perftest.py:192
&gt; +    def create_perf_test(cls, test_name, path):

Do you need to assert() that the path is relative?  absolute paths would do the wrong thing here. :)

&gt; Tools/Scripts/webkitpy/performance_tests/perftest_unittest.py:62
&gt; +        test = PerfTest(&apos;some-test&apos;, &apos;/path/some-dir/some-test&apos;)

Seems like a bad test case, since you don&apos;t use absolute paths, normally.

&gt; Tools/Scripts/webkitpy/performance_tests/perftest_unittest.py:128
&gt; +        test = PerfTestFactory.create_perf_test(&apos;inspector/some-test&apos;, &apos;/path/inspector/some-test&apos;)

I don&apos;t see how these pass?  That doesn&apos;t match ^inspector ??

&gt; Tools/Scripts/webkitpy/performance_tests/perftestsrunner.py:131
&gt; +            tests.append(PerfTestFactory.create_perf_test(relative_path.replace(&apos;\\&apos;, &apos;/&apos;), path))

What&apos;s with the windows hack here??  Don&apos;t we have a nicer way to ensure unix style paths?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>602410</commentid>
    <comment_count>3</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-04-13 14:28:45 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 137148 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=137148&amp;action=review
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/performance_tests/perftest.py:186
&gt; &gt; +    pattern_map = [
&gt; 
&gt; _pattern_map?

Will do.

&gt; &gt; Tools/Scripts/webkitpy/performance_tests/perftest.py:192
&gt; &gt; +    def create_perf_test(cls, test_name, path):
&gt; 
&gt; Do you need to assert() that the path is relative?  absolute paths would do the wrong thing here. :)

No, they need to be absolute paths.

&gt; &gt; Tools/Scripts/webkitpy/performance_tests/perftest_unittest.py:128
&gt; &gt; +        test = PerfTestFactory.create_perf_test(&apos;inspector/some-test&apos;, &apos;/path/inspector/some-test&apos;)
&gt; 
&gt; I don&apos;t see how these pass?  That doesn&apos;t match ^inspector ??

The regex matches the test name, not the path.

&gt; &gt; Tools/Scripts/webkitpy/performance_tests/perftestsrunner.py:131
&gt; &gt; +            tests.append(PerfTestFactory.create_perf_test(relative_path.replace(&apos;\\&apos;, &apos;/&apos;), path))
&gt; 
&gt; What&apos;s with the windows hack here??  Don&apos;t we have a nicer way to ensure unix style paths?

I&apos;d love to know if there&apos;s one. The only reason I have that hack is so that test names match between different platforms.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>602444</commentid>
    <comment_count>4</comment_count>
      <attachid>137160</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-04-13 15:08:28 -0700</bug_when>
    <thetext>Created attachment 137160
Renamed pattern_map to _pattern_map</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>611100</commentid>
    <comment_count>5</comment_count>
      <attachid>137160</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-04-26 17:07:15 -0700</bug_when>
    <thetext>Comment on attachment 137160
Renamed pattern_map to _pattern_map

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

&gt; Tools/Scripts/webkitpy/performance_tests/perftestsrunner.py:131
&gt; +            tests.append(PerfTestFactory.create_perf_test(relative_path.replace(&apos;\\&apos;, &apos;/&apos;), path))

I think you need to convert the \ to / before you call skips_perf_test on line 129, right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>611281</commentid>
    <comment_count>6</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-04-27 00:02:33 -0700</bug_when>
    <thetext>Thanks for the review.

(In reply to comment #5)
&gt; (From update of attachment 137160 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=137160&amp;action=review
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/performance_tests/perftestsrunner.py:131
&gt; &gt; +            tests.append(PerfTestFactory.create_perf_test(relative_path.replace(&apos;\\&apos;, &apos;/&apos;), path))
&gt; 
&gt; I think you need to convert the \ to / before you call skips_perf_test on line 129, right?

Yes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>611283</commentid>
    <comment_count>7</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-04-27 00:04:40 -0700</bug_when>
    <thetext>Committed r115410: &lt;http://trac.webkit.org/changeset/115410&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>137148</attachid>
            <date>2012-04-13 14:11:04 -0700</date>
            <delta_ts>2012-04-13 15:08:25 -0700</delta_ts>
            <desc>cleanup</desc>
            <filename>bug-83944-20120413141103.patch</filename>
            <type>text/plain</type>
            <size>11325</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDExNDE2NikKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDM5IEBACisyMDEyLTA0LTEzICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgor
CisgICAgICAgIEV4dHJhY3QgUGVyZlRlc3RGYWN0b3J5CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04Mzk0NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgRXh0cmFjdGVkIFBlcmZUZXN0RmFjdG9y
eSBvdXQgb2YgUGVyZlRlc3QuIFRoaXMgY2xhc3MgY3JlYXRlcyBhcHByb3ByaWF0ZSBQZXJmVGVz
dCBvYmplY3QgZ2l2ZW4KKyAgICAgICAgYSB0ZXN0IG5hbWUgYW5kIGEgcGF0aC4gQWxzbyByZW1v
dmVkIGRpcm5hbWUgZnJvbSB0aGUgY29uc3RydWN0b3JzIG9mIFBlcmZUZXN0IGFuZCBpdHMgc3Vi
Y2xhc3Nlcy4KKworICAgICAgICBBbHNvIGFkZGVkIHNpbXBsZSB0ZXN0IGNhc2VzIHRvIHNhbml0
eSBjaGVjayBQZXJmVGVzdEZhY3RvcnkuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Bl
cmZvcm1hbmNlX3Rlc3RzL3BlcmZ0ZXN0LnB5OgorICAgICAgICAoUGVyZlRlc3QuX19pbml0X18p
OgorICAgICAgICAoUGVyZlRlc3QudGVzdF9uYW1lKToKKyAgICAgICAgKENocm9taXVtU3R5bGVQ
ZXJmVGVzdC5fX2luaXRfXyk6CisgICAgICAgIChQYWdlTG9hZGluZ1BlcmZUZXN0Ll9faW5pdF9f
KToKKyAgICAgICAgKFBhZ2VMb2FkaW5nUGVyZlRlc3QucnVuKToKKyAgICAgICAgKFBlcmZUZXN0
RmFjdG9yeSk6CisgICAgICAgIChQZXJmVGVzdEZhY3RvcnkuY3JlYXRlX3BlcmZfdGVzdCk6Cisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wZXJmb3JtYW5jZV90ZXN0cy9wZXJmdGVzdF91bml0
dGVzdC5weToKKyAgICAgICAgKE1haW5UZXN0LnRlc3RfcGFyc2Vfb3V0cHV0KToKKyAgICAgICAg
KE1haW5UZXN0LnRlc3RfcGFyc2Vfb3V0cHV0X3dpdGhfZmFpbGluZ19saW5lKToKKyAgICAgICAg
KFRlc3RQYWdlTG9hZGluZ1BlcmZUZXN0LnRlc3RfcnVuKToKKyAgICAgICAgKFRlc3RQYWdlTG9h
ZGluZ1BlcmZUZXN0LnRlc3RfcnVuX3dpdGhfYmFkX291dHB1dCk6CisgICAgICAgIChUZXN0UGVy
ZlRlc3RGYWN0b3J5KToKKyAgICAgICAgKFRlc3RQZXJmVGVzdEZhY3RvcnkudGVzdF9yZWd1bGFy
X3Rlc3QpOgorICAgICAgICAoVGVzdFBlcmZUZXN0RmFjdG9yeS50ZXN0X2luc3BlY3Rvcl90ZXN0
KToKKyAgICAgICAgKFRlc3RQZXJmVGVzdEZhY3RvcnkudGVzdF9wYWdlX2xvYWRpbmdfdGVzdCk6
CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wZXJmb3JtYW5jZV90ZXN0cy9wZXJmdGVzdHNy
dW5uZXIucHk6CisgICAgICAgIChQZXJmVGVzdHNSdW5uZXIpOgorICAgICAgICAoUGVyZlRlc3Rz
UnVubmVyLl9jb2xsZWN0X3Rlc3RzKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BlcmZv
cm1hbmNlX3Rlc3RzL3BlcmZ0ZXN0c3J1bm5lcl91bml0dGVzdC5weToKKyAgICAgICAgKHJ1bl90
ZXN0KToKKyAgICAgICAgKF90ZXN0c19mb3JfcnVubmVyKToKKwogMjAxMi0wNC0xMSAgSmFtZXMg
Um9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gUmVt
b3ZlIHVudXNlZCBjb21wb3NpdGVUb1RleHR1cmUgLyBjb21wb3NpdGVPZmZzY3JlZW4gc2V0dGlu
ZwpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wZXJmb3JtYW5jZV90ZXN0cy9wZXJmdGVz
dC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BlcmZvcm1hbmNlX3Rl
c3RzL3BlcmZ0ZXN0LnB5CShyZXZpc2lvbiAxMTQxNTgpCisrKyBUb29scy9TY3JpcHRzL3dlYmtp
dHB5L3BlcmZvcm1hbmNlX3Rlc3RzL3BlcmZ0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0zNSwx
NyArMzUsMTMgQEAgZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydC5kcml2ZXIgaQogCiAK
IGNsYXNzIFBlcmZUZXN0KG9iamVjdCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHRlc3RfbmFt
ZSwgZGlybmFtZSwgcGF0aF9vcl91cmwpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0ZXN0X25h
bWUsIHBhdGhfb3JfdXJsKToKICAgICAgICAgc2VsZi5fdGVzdF9uYW1lID0gdGVzdF9uYW1lCi0g
ICAgICAgIHNlbGYuX2Rpcm5hbWUgPSBkaXJuYW1lCiAgICAgICAgIHNlbGYuX3BhdGhfb3JfdXJs
ID0gcGF0aF9vcl91cmwKIAogICAgIGRlZiB0ZXN0X25hbWUoc2VsZik6CiAgICAgICAgIHJldHVy
biBzZWxmLl90ZXN0X25hbWUKIAotICAgIGRlZiBkaXJuYW1lKHNlbGYpOgotICAgICAgICByZXR1
cm4gc2VsZi5fZGlybmFtZQotCiAgICAgZGVmIHBhdGhfb3JfdXJsKHNlbGYpOgogICAgICAgICBy
ZXR1cm4gc2VsZi5fcGF0aF9vcl91cmwKIApAQCAtMTI4LDggKzEyNCw4IEBAIGNsYXNzIFBlcmZU
ZXN0KG9iamVjdCk6CiBjbGFzcyBDaHJvbWl1bVN0eWxlUGVyZlRlc3QoUGVyZlRlc3QpOgogICAg
IF9jaHJvbWl1bV9zdHlsZV9yZXN1bHRfcmVnZXggPSByZS5jb21waWxlKHInXlJFU1VMVFxzKyg/
UDxuYW1lPltePV0rKVxzKj1ccysoP1A8dmFsdWU+XGQrKFwuXGQrKT8pXHMqKD9QPHVuaXQ+XHcr
KSQnKQogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHRlc3RfbmFtZSwgZGlybmFtZSwgcGF0aF9v
cl91cmwpOgotICAgICAgICBzdXBlcihDaHJvbWl1bVN0eWxlUGVyZlRlc3QsIHNlbGYpLl9faW5p
dF9fKHRlc3RfbmFtZSwgZGlybmFtZSwgcGF0aF9vcl91cmwpCisgICAgZGVmIF9faW5pdF9fKHNl
bGYsIHRlc3RfbmFtZSwgcGF0aF9vcl91cmwpOgorICAgICAgICBzdXBlcihDaHJvbWl1bVN0eWxl
UGVyZlRlc3QsIHNlbGYpLl9faW5pdF9fKHRlc3RfbmFtZSwgcGF0aF9vcl91cmwpCiAKICAgICBk
ZWYgcGFyc2Vfb3V0cHV0KHNlbGYsIG91dHB1dCwgcHJpbnRlciwgYnVpbGRib3Rfb3V0cHV0KToK
ICAgICAgICAgdGVzdF9mYWlsZWQgPSBGYWxzZQpAQCAtMTQ4LDggKzE0NCw4IEBAIGNsYXNzIENo
cm9taXVtU3R5bGVQZXJmVGVzdChQZXJmVGVzdCk6CiAKIAogY2xhc3MgUGFnZUxvYWRpbmdQZXJm
VGVzdChQZXJmVGVzdCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHRlc3RfbmFtZSwgZGlybmFt
ZSwgcGF0aF9vcl91cmwpOgotICAgICAgICBzdXBlcihQYWdlTG9hZGluZ1BlcmZUZXN0LCBzZWxm
KS5fX2luaXRfXyh0ZXN0X25hbWUsIGRpcm5hbWUsIHBhdGhfb3JfdXJsKQorICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCB0ZXN0X25hbWUsIHBhdGhfb3JfdXJsKToKKyAgICAgICAgc3VwZXIoUGFnZUxv
YWRpbmdQZXJmVGVzdCwgc2VsZikuX19pbml0X18odGVzdF9uYW1lLCBwYXRoX29yX3VybCkKIAog
ICAgIGRlZiBydW4oc2VsZiwgZHJpdmVyLCB0aW1lb3V0X21zLCBwcmludGVyLCBidWlsZGJvdF9v
dXRwdXQpOgogICAgICAgICB0ZXN0X3RpbWVzID0gW10KQEAgLTE4MywzICsxNzksMTggQEAgY2xh
c3MgUGFnZUxvYWRpbmdQZXJmVGVzdChQZXJmVGVzdCk6CiAgICAgICAgICAgICAndW5pdCc6ICdt
cyd9CiAgICAgICAgIHNlbGYub3V0cHV0X3N0YXRpc3RpY3Moc2VsZi50ZXN0X25hbWUoKSwgcmVz
dWx0cywgYnVpbGRib3Rfb3V0cHV0KQogICAgICAgICByZXR1cm4ge3NlbGYudGVzdF9uYW1lKCk6
IHJlc3VsdHN9CisKKworY2xhc3MgUGVyZlRlc3RGYWN0b3J5KG9iamVjdCk6CisKKyAgICBwYXR0
ZXJuX21hcCA9IFsKKyAgICAgICAgKHJlLmNvbXBpbGUoJ15pbnNwZWN0b3IvJyksIENocm9taXVt
U3R5bGVQZXJmVGVzdCksCisgICAgICAgIChyZS5jb21waWxlKCdeUGFnZUxvYWQvJyksIFBhZ2VM
b2FkaW5nUGVyZlRlc3QpLAorICAgIF0KKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBjcmVh
dGVfcGVyZl90ZXN0KGNscywgdGVzdF9uYW1lLCBwYXRoKToKKyAgICAgICAgZm9yIChwYXR0ZXJu
LCB0ZXN0X2NsYXNzKSBpbiBjbHMucGF0dGVybl9tYXA6CisgICAgICAgICAgICBpZiBwYXR0ZXJu
Lm1hdGNoKHRlc3RfbmFtZSk6CisgICAgICAgICAgICAgICAgcmV0dXJuIHRlc3RfY2xhc3ModGVz
dF9uYW1lLCBwYXRoKQorICAgICAgICByZXR1cm4gUGVyZlRlc3QodGVzdF9uYW1lLCBwYXRoKQpJ
bmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wZXJmb3JtYW5jZV90ZXN0cy9wZXJmdGVzdF91
bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BlcmZvcm1h
bmNlX3Rlc3RzL3BlcmZ0ZXN0X3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAxMTQxNTgpCisrKyBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L3BlcmZvcm1hbmNlX3Rlc3RzL3BlcmZ0ZXN0X3VuaXR0ZXN0LnB5
CSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw3IEBAIGZyb20gd2Via2l0cHkubGF5b3V0X3Rl
c3RzLnBvcnQuZHJpdmVyIGkKIGZyb20gd2Via2l0cHkucGVyZm9ybWFuY2VfdGVzdHMucGVyZnRl
c3QgaW1wb3J0IENocm9taXVtU3R5bGVQZXJmVGVzdAogZnJvbSB3ZWJraXRweS5wZXJmb3JtYW5j
ZV90ZXN0cy5wZXJmdGVzdCBpbXBvcnQgUGFnZUxvYWRpbmdQZXJmVGVzdAogZnJvbSB3ZWJraXRw
eS5wZXJmb3JtYW5jZV90ZXN0cy5wZXJmdGVzdCBpbXBvcnQgUGVyZlRlc3QKK2Zyb20gd2Via2l0
cHkucGVyZm9ybWFuY2VfdGVzdHMucGVyZnRlc3QgaW1wb3J0IFBlcmZUZXN0RmFjdG9yeQogCiAK
IGNsYXNzIE1vY2tQcmludGVyKG9iamVjdCk6CkBAIC01OCw3ICs1OSw3IEBAIGNsYXNzIE1haW5U
ZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgICAgICdzdGRldiAxMScsCiAgICAgICAg
ICAgICAnbWluIDEwODAnLAogICAgICAgICAgICAgJ21heCAxMTIwJ10pLCBpbWFnZT1Ob25lLCBp
bWFnZV9oYXNoPU5vbmUsIGF1ZGlvPU5vbmUpCi0gICAgICAgIHRlc3QgPSBQZXJmVGVzdCgnc29t
ZS10ZXN0JywgJ3NvbWUtZGlyL3NvbWUtdGVzdCcsICcvcGF0aC9zb21lLWRpci9zb21lLXRlc3Qn
KQorICAgICAgICB0ZXN0ID0gUGVyZlRlc3QoJ3NvbWUtdGVzdCcsICcvcGF0aC9zb21lLWRpci9z
b21lLXRlc3QnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRlc3QucGFyc2Vfb3V0cHV0KG91
dHB1dCwgcHJpbnRlciwgYnVpbGRib3Rfb3V0cHV0KSwKICAgICAgICAgICAgIHsnc29tZS10ZXN0
JzogeydhdmcnOiAxMTAwLjAsICdtZWRpYW4nOiAxMTAxLjAsICdtaW4nOiAxMDgwLjAsICdtYXgn
OiAxMTIwLjAsICdzdGRldic6IDExLjAsICd1bml0JzogJ21zJ319KQogICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHByaW50ZXIud3JpdHRlbl9saW5lcywgW10pCkBAIC03Nyw3ICs3OCw3IEBAIGNs
YXNzIE1haW5UZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgICAgICdzdGRldiAxMScs
CiAgICAgICAgICAgICAnbWluIDEwODAnLAogICAgICAgICAgICAgJ21heCAxMTIwJ10pLCBpbWFn
ZT1Ob25lLCBpbWFnZV9oYXNoPU5vbmUsIGF1ZGlvPU5vbmUpCi0gICAgICAgIHRlc3QgPSBQZXJm
VGVzdCgnc29tZS10ZXN0JywgJ3NvbWUtZGlyL3NvbWUtdGVzdCcsICcvcGF0aC9zb21lLWRpci9z
b21lLXRlc3QnKQorICAgICAgICB0ZXN0ID0gUGVyZlRlc3QoJ3NvbWUtdGVzdCcsICcvcGF0aC9z
b21lLWRpci9zb21lLXRlc3QnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRlc3QucGFyc2Vf
b3V0cHV0KG91dHB1dCwgcHJpbnRlciwgYnVpbGRib3Rfb3V0cHV0KSwgTm9uZSkKICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChwcmludGVyLndyaXR0ZW5fbGluZXMsIFsnc29tZS11bnJlY29nbml6
YWJsZS1saW5lJ10pCiAKQEAgLTEwMiw3ICsxMDMsNyBAQCBjbGFzcyBUZXN0UGFnZUxvYWRpbmdQ
ZXJmVGVzdCh1bml0dGVzdC5UCiAgICAgZGVmIHRlc3RfcnVuKHNlbGYpOgogICAgICAgICBwcmlu
dGVyID0gTW9ja1ByaW50ZXIoKQogICAgICAgICBidWlsZGJvdF9vdXRwdXQgPSBTdHJpbmdJTy5T
dHJpbmdJTygpCi0gICAgICAgIHRlc3QgPSBQYWdlTG9hZGluZ1BlcmZUZXN0KCdzb21lLXRlc3Qn
LCAnc29tZS1kaXIvc29tZS10ZXN0JywgJy9wYXRoL3NvbWUtZGlyL3NvbWUtdGVzdCcpCisgICAg
ICAgIHRlc3QgPSBQYWdlTG9hZGluZ1BlcmZUZXN0KCdzb21lLXRlc3QnLCAnL3BhdGgvc29tZS1k
aXIvc29tZS10ZXN0JykKICAgICAgICAgZHJpdmVyID0gVGVzdFBhZ2VMb2FkaW5nUGVyZlRlc3Qu
TW9ja0RyaXZlcihbMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0
LCAxNSwgMTYsIDE3LCAxOCwgMTksIDIwXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXN0
LnJ1bihkcml2ZXIsIE5vbmUsIHByaW50ZXIsIGJ1aWxkYm90X291dHB1dCksCiAgICAgICAgICAg
ICB7J3NvbWUtdGVzdCc6IHsnbWF4JzogMjAwMDAsICdhdmcnOiAxMTAwMC4wLCAnbWVkaWFuJzog
MTEwMDAsICdzdGRldic6IG1hdGguc3FydCg1NzAgKiAxMDAwICogMTAwMCksICdtaW4nOiAyMDAw
LCAndW5pdCc6ICdtcyd9fSkKQEAgLTExMiwxMCArMTEzLDI1IEBAIGNsYXNzIFRlc3RQYWdlTG9h
ZGluZ1BlcmZUZXN0KHVuaXR0ZXN0LlQKICAgICBkZWYgdGVzdF9ydW5fd2l0aF9iYWRfb3V0cHV0
KHNlbGYpOgogICAgICAgICBwcmludGVyID0gTW9ja1ByaW50ZXIoKQogICAgICAgICBidWlsZGJv
dF9vdXRwdXQgPSBTdHJpbmdJTy5TdHJpbmdJTygpCi0gICAgICAgIHRlc3QgPSBQYWdlTG9hZGlu
Z1BlcmZUZXN0KCdzb21lLXRlc3QnLCAnc29tZS1kaXIvc29tZS10ZXN0JywgJy9wYXRoL3NvbWUt
ZGlyL3NvbWUtdGVzdCcpCisgICAgICAgIHRlc3QgPSBQYWdlTG9hZGluZ1BlcmZUZXN0KCdzb21l
LXRlc3QnLCAnL3BhdGgvc29tZS1kaXIvc29tZS10ZXN0JykKICAgICAgICAgZHJpdmVyID0gVGVz
dFBhZ2VMb2FkaW5nUGVyZlRlc3QuTW9ja0RyaXZlcihbMSwgMiwgMywgNCwgNSwgNiwgNywgJ3Nv
bWUgZXJyb3InLCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMTcsIDE4LCAxOSwgMjBd
KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRlc3QucnVuKGRyaXZlciwgTm9uZSwgcHJpbnRl
ciwgYnVpbGRib3Rfb3V0cHV0KSwgTm9uZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcmlu
dGVyLndyaXR0ZW5fbGluZXMsIFsnZXJyb3I6IHNvbWUtdGVzdFxuc29tZSBlcnJvciddKQogCisK
K2NsYXNzIFRlc3RQZXJmVGVzdEZhY3RvcnkodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0
ZXN0X3JlZ3VsYXJfdGVzdChzZWxmKToKKyAgICAgICAgdGVzdCA9IFBlcmZUZXN0RmFjdG9yeS5j
cmVhdGVfcGVyZl90ZXN0KCdzb21lLWRpci9zb21lLXRlc3QnLCAnL3BhdGgvc29tZS1kaXIvc29t
ZS10ZXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXN0Ll9fY2xhc3NfXywgUGVyZlRl
c3QpCisKKyAgICBkZWYgdGVzdF9pbnNwZWN0b3JfdGVzdChzZWxmKToKKyAgICAgICAgdGVzdCA9
IFBlcmZUZXN0RmFjdG9yeS5jcmVhdGVfcGVyZl90ZXN0KCdpbnNwZWN0b3Ivc29tZS10ZXN0Jywg
Jy9wYXRoL2luc3BlY3Rvci9zb21lLXRlc3QnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRl
c3QuX19jbGFzc19fLCBDaHJvbWl1bVN0eWxlUGVyZlRlc3QpCisKKyAgICBkZWYgdGVzdF9wYWdl
X2xvYWRpbmdfdGVzdChzZWxmKToKKyAgICAgICAgdGVzdCA9IFBlcmZUZXN0RmFjdG9yeS5jcmVh
dGVfcGVyZl90ZXN0KCdQYWdlTG9hZC9zb21lLXRlc3QnLCAnL3BhdGgvUGFnZUxvYWQvc29tZS10
ZXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXN0Ll9fY2xhc3NfXywgUGFnZUxvYWRp
bmdQZXJmVGVzdCkKKworCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIHVuaXR0ZXN0
Lm1haW4oKQpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wZXJmb3JtYW5jZV90ZXN0cy9w
ZXJmdGVzdHNydW5uZXIucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9w
ZXJmb3JtYW5jZV90ZXN0cy9wZXJmdGVzdHNydW5uZXIucHkJKHJldmlzaW9uIDExNDE0OSkKKysr
IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcGVyZm9ybWFuY2VfdGVzdHMvcGVyZnRlc3RzcnVubmVy
LnB5CSh3b3JraW5nIGNvcHkpCkBAIC00MCwxNyArNDAsMTMgQEAgZnJvbSB3ZWJraXRweS5jb21t
b24gaW1wb3J0IGZpbmRfZmlsZXMKIGZyb20gd2Via2l0cHkuY29tbW9uLmhvc3QgaW1wb3J0IEhv
c3QKIGZyb20gd2Via2l0cHkuY29tbW9uLm5ldC5maWxlX3VwbG9hZGVyIGltcG9ydCBGaWxlVXBs
b2FkZXIKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnZpZXdzIGltcG9ydCBwcmludGluZwot
ZnJvbSB3ZWJraXRweS5wZXJmb3JtYW5jZV90ZXN0cy5wZXJmdGVzdCBpbXBvcnQgQ2hyb21pdW1T
dHlsZVBlcmZUZXN0Ci1mcm9tIHdlYmtpdHB5LnBlcmZvcm1hbmNlX3Rlc3RzLnBlcmZ0ZXN0IGlt
cG9ydCBQYWdlTG9hZGluZ1BlcmZUZXN0Ci1mcm9tIHdlYmtpdHB5LnBlcmZvcm1hbmNlX3Rlc3Rz
LnBlcmZ0ZXN0IGltcG9ydCBQZXJmVGVzdAorZnJvbSB3ZWJraXRweS5wZXJmb3JtYW5jZV90ZXN0
cy5wZXJmdGVzdCBpbXBvcnQgUGVyZlRlc3RGYWN0b3J5CiAKIAogX2xvZyA9IGxvZ2dpbmcuZ2V0
TG9nZ2VyKF9fbmFtZV9fKQogCiAKIGNsYXNzIFBlcmZUZXN0c1J1bm5lcihvYmplY3QpOgotICAg
IF9wYXR0ZXJuX2Zvcl9jaHJvbWl1bV9zdHlsZV90ZXN0cyA9IHJlLmNvbXBpbGUoJ15pbnNwZWN0
b3IvJykKLSAgICBfcGF0dGVybl9mb3JfcGFnZV9sb2FkaW5nX3Rlc3RzID0gcmUuY29tcGlsZSgn
XlBhZ2VMb2FkLycpCiAgICAgX2RlZmF1bHRfYnJhbmNoID0gJ3dlYmtpdC10cnVuaycKICAgICBf
RVhJVF9DT0RFX0JBRF9CVUlMRCA9IC0xCiAgICAgX0VYSVRfQ09ERV9CQURfSlNPTiA9IC0yCkBA
IC0xMzIsMTQgKzEyOCw3IEBAIGNsYXNzIFBlcmZUZXN0c1J1bm5lcihvYmplY3QpOgogICAgICAg
ICAgICAgcmVsYXRpdmVfcGF0aCA9IHNlbGYuX3BvcnQucmVsYXRpdmVfcGVyZl90ZXN0X2ZpbGVu
YW1lKHBhdGgpCiAgICAgICAgICAgICBpZiBzZWxmLl9wb3J0LnNraXBzX3BlcmZfdGVzdChyZWxh
dGl2ZV9wYXRoKToKICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgdGVzdF9u
YW1lID0gcmVsYXRpdmVfcGF0aC5yZXBsYWNlKCdcXCcsICcvJykKLSAgICAgICAgICAgIGRpcm5h
bWUgPSBmaWxlc3lzdGVtLmRpcm5hbWUocGF0aCkKLSAgICAgICAgICAgIGlmIHNlbGYuX3BhdHRl
cm5fZm9yX2Nocm9taXVtX3N0eWxlX3Rlc3RzLm1hdGNoKHJlbGF0aXZlX3BhdGgpOgotICAgICAg
ICAgICAgICAgIHRlc3RzLmFwcGVuZChDaHJvbWl1bVN0eWxlUGVyZlRlc3QodGVzdF9uYW1lLCBk
aXJuYW1lLCBwYXRoKSkKLSAgICAgICAgICAgIGVsaWYgc2VsZi5fcGF0dGVybl9mb3JfcGFnZV9s
b2FkaW5nX3Rlc3RzLm1hdGNoKHJlbGF0aXZlX3BhdGgpOgotICAgICAgICAgICAgICAgIHRlc3Rz
LmFwcGVuZChQYWdlTG9hZGluZ1BlcmZUZXN0KHRlc3RfbmFtZSwgZGlybmFtZSwgcGF0aCkpCi0g
ICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHRlc3RzLmFwcGVuZChQZXJmVGVzdCh0
ZXN0X25hbWUsIGRpcm5hbWUsIHBhdGgpKQorICAgICAgICAgICAgdGVzdHMuYXBwZW5kKFBlcmZU
ZXN0RmFjdG9yeS5jcmVhdGVfcGVyZl90ZXN0KHJlbGF0aXZlX3BhdGgucmVwbGFjZSgnXFwnLCAn
LycpLCBwYXRoKSkKIAogICAgICAgICByZXR1cm4gdGVzdHMKIApJbmRleDogVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9wZXJmb3JtYW5jZV90ZXN0cy9wZXJmdGVzdHNydW5uZXJfdW5pdHRlc3QucHkK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wZXJmb3JtYW5jZV90ZXN0cy9w
ZXJmdGVzdHNydW5uZXJfdW5pdHRlc3QucHkJKHJldmlzaW9uIDExNDE0OSkKKysrIFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvcGVyZm9ybWFuY2VfdGVzdHMvcGVyZnRlc3RzcnVubmVyX3VuaXR0ZXN0
LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xMjgsOCArMTI4LDcgQEAgbWF4IDExMjAKICAgICBkZWYg
cnVuX3Rlc3Qoc2VsZiwgdGVzdF9uYW1lKToKICAgICAgICAgcnVubmVyID0gc2VsZi5jcmVhdGVf
cnVubmVyKCkKICAgICAgICAgZHJpdmVyID0gTWFpblRlc3QuVGVzdERyaXZlcigpCi0gICAgICAg
IHJldHVybiBydW5uZXIuX3J1bl9zaW5nbGVfdGVzdChDaHJvbWl1bVN0eWxlUGVyZlRlc3QodGVz
dF9uYW1lLCAnc29tZS1kaXInLAotICAgICAgICAgICAgcnVubmVyLl9ob3N0LmZpbGVzeXN0ZW0u
am9pbignc29tZS1kaXInLCB0ZXN0X25hbWUpKSwgZHJpdmVyKQorICAgICAgICByZXR1cm4gcnVu
bmVyLl9ydW5fc2luZ2xlX3Rlc3QoQ2hyb21pdW1TdHlsZVBlcmZUZXN0KHRlc3RfbmFtZSwgcnVu
bmVyLl9ob3N0LmZpbGVzeXN0ZW0uam9pbignc29tZS1kaXInLCB0ZXN0X25hbWUpKSwgZHJpdmVy
KQogCiAgICAgZGVmIHRlc3RfcnVuX3Bhc3NpbmdfdGVzdChzZWxmKToKICAgICAgICAgc2VsZi5h
c3NlcnRUcnVlKHNlbGYucnVuX3Rlc3QoJ3Bhc3MuaHRtbCcpKQpAQCAtMTU2LDkgKzE1NSw5IEBA
IG1heCAxMTIwCiAgICAgICAgICAgICBwYXRoID0gZmlsZXN5c3RlbS5qb2luKHJ1bm5lci5fYmFz
ZV9wYXRoLCB0ZXN0KQogICAgICAgICAgICAgZGlybmFtZSA9IGZpbGVzeXN0ZW0uZGlybmFtZShw
YXRoKQogICAgICAgICAgICAgaWYgdGVzdC5zdGFydHN3aXRoKCdpbnNwZWN0b3IvJyk6Ci0gICAg
ICAgICAgICAgICAgdGVzdHMuYXBwZW5kKENocm9taXVtU3R5bGVQZXJmVGVzdCh0ZXN0LCBkaXJu
YW1lLCBwYXRoKSkKKyAgICAgICAgICAgICAgICB0ZXN0cy5hcHBlbmQoQ2hyb21pdW1TdHlsZVBl
cmZUZXN0KHRlc3QsIHBhdGgpKQogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICB0
ZXN0cy5hcHBlbmQoUGVyZlRlc3QodGVzdCwgZGlybmFtZSwgcGF0aCkpCisgICAgICAgICAgICAg
ICAgdGVzdHMuYXBwZW5kKFBlcmZUZXN0KHRlc3QsIHBhdGgpKQogICAgICAgICByZXR1cm4gdGVz
dHMKIAogICAgIGRlZiB0ZXN0X3J1bl90ZXN0X3NldChzZWxmKToK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>137160</attachid>
            <date>2012-04-13 15:08:28 -0700</date>
            <delta_ts>2012-04-26 17:07:14 -0700</delta_ts>
            <desc>Renamed pattern_map to _pattern_map</desc>
            <filename>bug-83944-20120413150827.patch</filename>
            <type>text/plain</type>
            <size>11327</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDExNDE2NikKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDM5IEBACisyMDEyLTA0LTEzICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgor
CisgICAgICAgIEV4dHJhY3QgUGVyZlRlc3RGYWN0b3J5CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04Mzk0NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgRXh0cmFjdGVkIFBlcmZUZXN0RmFjdG9y
eSBvdXQgb2YgUGVyZlRlc3QuIFRoaXMgY2xhc3MgY3JlYXRlcyBhcHByb3ByaWF0ZSBQZXJmVGVz
dCBvYmplY3QgZ2l2ZW4KKyAgICAgICAgYSB0ZXN0IG5hbWUgYW5kIGEgcGF0aC4gQWxzbyByZW1v
dmVkIGRpcm5hbWUgZnJvbSB0aGUgY29uc3RydWN0b3JzIG9mIFBlcmZUZXN0IGFuZCBpdHMgc3Vi
Y2xhc3Nlcy4KKworICAgICAgICBBbHNvIGFkZGVkIHNpbXBsZSB0ZXN0IGNhc2VzIHRvIHNhbml0
eSBjaGVjayBQZXJmVGVzdEZhY3RvcnkuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Bl
cmZvcm1hbmNlX3Rlc3RzL3BlcmZ0ZXN0LnB5OgorICAgICAgICAoUGVyZlRlc3QuX19pbml0X18p
OgorICAgICAgICAoUGVyZlRlc3QudGVzdF9uYW1lKToKKyAgICAgICAgKENocm9taXVtU3R5bGVQ
ZXJmVGVzdC5fX2luaXRfXyk6CisgICAgICAgIChQYWdlTG9hZGluZ1BlcmZUZXN0Ll9faW5pdF9f
KToKKyAgICAgICAgKFBhZ2VMb2FkaW5nUGVyZlRlc3QucnVuKToKKyAgICAgICAgKFBlcmZUZXN0
RmFjdG9yeSk6CisgICAgICAgIChQZXJmVGVzdEZhY3RvcnkuY3JlYXRlX3BlcmZfdGVzdCk6Cisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wZXJmb3JtYW5jZV90ZXN0cy9wZXJmdGVzdF91bml0
dGVzdC5weToKKyAgICAgICAgKE1haW5UZXN0LnRlc3RfcGFyc2Vfb3V0cHV0KToKKyAgICAgICAg
KE1haW5UZXN0LnRlc3RfcGFyc2Vfb3V0cHV0X3dpdGhfZmFpbGluZ19saW5lKToKKyAgICAgICAg
KFRlc3RQYWdlTG9hZGluZ1BlcmZUZXN0LnRlc3RfcnVuKToKKyAgICAgICAgKFRlc3RQYWdlTG9h
ZGluZ1BlcmZUZXN0LnRlc3RfcnVuX3dpdGhfYmFkX291dHB1dCk6CisgICAgICAgIChUZXN0UGVy
ZlRlc3RGYWN0b3J5KToKKyAgICAgICAgKFRlc3RQZXJmVGVzdEZhY3RvcnkudGVzdF9yZWd1bGFy
X3Rlc3QpOgorICAgICAgICAoVGVzdFBlcmZUZXN0RmFjdG9yeS50ZXN0X2luc3BlY3Rvcl90ZXN0
KToKKyAgICAgICAgKFRlc3RQZXJmVGVzdEZhY3RvcnkudGVzdF9wYWdlX2xvYWRpbmdfdGVzdCk6
CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wZXJmb3JtYW5jZV90ZXN0cy9wZXJmdGVzdHNy
dW5uZXIucHk6CisgICAgICAgIChQZXJmVGVzdHNSdW5uZXIpOgorICAgICAgICAoUGVyZlRlc3Rz
UnVubmVyLl9jb2xsZWN0X3Rlc3RzKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BlcmZv
cm1hbmNlX3Rlc3RzL3BlcmZ0ZXN0c3J1bm5lcl91bml0dGVzdC5weToKKyAgICAgICAgKHJ1bl90
ZXN0KToKKyAgICAgICAgKF90ZXN0c19mb3JfcnVubmVyKToKKwogMjAxMi0wNC0xMSAgSmFtZXMg
Um9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gUmVt
b3ZlIHVudXNlZCBjb21wb3NpdGVUb1RleHR1cmUgLyBjb21wb3NpdGVPZmZzY3JlZW4gc2V0dGlu
ZwpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wZXJmb3JtYW5jZV90ZXN0cy9wZXJmdGVz
dC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BlcmZvcm1hbmNlX3Rl
c3RzL3BlcmZ0ZXN0LnB5CShyZXZpc2lvbiAxMTQxNTgpCisrKyBUb29scy9TY3JpcHRzL3dlYmtp
dHB5L3BlcmZvcm1hbmNlX3Rlc3RzL3BlcmZ0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0zNSwx
NyArMzUsMTMgQEAgZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydC5kcml2ZXIgaQogCiAK
IGNsYXNzIFBlcmZUZXN0KG9iamVjdCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHRlc3RfbmFt
ZSwgZGlybmFtZSwgcGF0aF9vcl91cmwpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0ZXN0X25h
bWUsIHBhdGhfb3JfdXJsKToKICAgICAgICAgc2VsZi5fdGVzdF9uYW1lID0gdGVzdF9uYW1lCi0g
ICAgICAgIHNlbGYuX2Rpcm5hbWUgPSBkaXJuYW1lCiAgICAgICAgIHNlbGYuX3BhdGhfb3JfdXJs
ID0gcGF0aF9vcl91cmwKIAogICAgIGRlZiB0ZXN0X25hbWUoc2VsZik6CiAgICAgICAgIHJldHVy
biBzZWxmLl90ZXN0X25hbWUKIAotICAgIGRlZiBkaXJuYW1lKHNlbGYpOgotICAgICAgICByZXR1
cm4gc2VsZi5fZGlybmFtZQotCiAgICAgZGVmIHBhdGhfb3JfdXJsKHNlbGYpOgogICAgICAgICBy
ZXR1cm4gc2VsZi5fcGF0aF9vcl91cmwKIApAQCAtMTI4LDggKzEyNCw4IEBAIGNsYXNzIFBlcmZU
ZXN0KG9iamVjdCk6CiBjbGFzcyBDaHJvbWl1bVN0eWxlUGVyZlRlc3QoUGVyZlRlc3QpOgogICAg
IF9jaHJvbWl1bV9zdHlsZV9yZXN1bHRfcmVnZXggPSByZS5jb21waWxlKHInXlJFU1VMVFxzKyg/
UDxuYW1lPltePV0rKVxzKj1ccysoP1A8dmFsdWU+XGQrKFwuXGQrKT8pXHMqKD9QPHVuaXQ+XHcr
KSQnKQogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHRlc3RfbmFtZSwgZGlybmFtZSwgcGF0aF9v
cl91cmwpOgotICAgICAgICBzdXBlcihDaHJvbWl1bVN0eWxlUGVyZlRlc3QsIHNlbGYpLl9faW5p
dF9fKHRlc3RfbmFtZSwgZGlybmFtZSwgcGF0aF9vcl91cmwpCisgICAgZGVmIF9faW5pdF9fKHNl
bGYsIHRlc3RfbmFtZSwgcGF0aF9vcl91cmwpOgorICAgICAgICBzdXBlcihDaHJvbWl1bVN0eWxl
UGVyZlRlc3QsIHNlbGYpLl9faW5pdF9fKHRlc3RfbmFtZSwgcGF0aF9vcl91cmwpCiAKICAgICBk
ZWYgcGFyc2Vfb3V0cHV0KHNlbGYsIG91dHB1dCwgcHJpbnRlciwgYnVpbGRib3Rfb3V0cHV0KToK
ICAgICAgICAgdGVzdF9mYWlsZWQgPSBGYWxzZQpAQCAtMTQ4LDggKzE0NCw4IEBAIGNsYXNzIENo
cm9taXVtU3R5bGVQZXJmVGVzdChQZXJmVGVzdCk6CiAKIAogY2xhc3MgUGFnZUxvYWRpbmdQZXJm
VGVzdChQZXJmVGVzdCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHRlc3RfbmFtZSwgZGlybmFt
ZSwgcGF0aF9vcl91cmwpOgotICAgICAgICBzdXBlcihQYWdlTG9hZGluZ1BlcmZUZXN0LCBzZWxm
KS5fX2luaXRfXyh0ZXN0X25hbWUsIGRpcm5hbWUsIHBhdGhfb3JfdXJsKQorICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCB0ZXN0X25hbWUsIHBhdGhfb3JfdXJsKToKKyAgICAgICAgc3VwZXIoUGFnZUxv
YWRpbmdQZXJmVGVzdCwgc2VsZikuX19pbml0X18odGVzdF9uYW1lLCBwYXRoX29yX3VybCkKIAog
ICAgIGRlZiBydW4oc2VsZiwgZHJpdmVyLCB0aW1lb3V0X21zLCBwcmludGVyLCBidWlsZGJvdF9v
dXRwdXQpOgogICAgICAgICB0ZXN0X3RpbWVzID0gW10KQEAgLTE4MywzICsxNzksMTggQEAgY2xh
c3MgUGFnZUxvYWRpbmdQZXJmVGVzdChQZXJmVGVzdCk6CiAgICAgICAgICAgICAndW5pdCc6ICdt
cyd9CiAgICAgICAgIHNlbGYub3V0cHV0X3N0YXRpc3RpY3Moc2VsZi50ZXN0X25hbWUoKSwgcmVz
dWx0cywgYnVpbGRib3Rfb3V0cHV0KQogICAgICAgICByZXR1cm4ge3NlbGYudGVzdF9uYW1lKCk6
IHJlc3VsdHN9CisKKworY2xhc3MgUGVyZlRlc3RGYWN0b3J5KG9iamVjdCk6CisKKyAgICBfcGF0
dGVybl9tYXAgPSBbCisgICAgICAgIChyZS5jb21waWxlKCdeaW5zcGVjdG9yLycpLCBDaHJvbWl1
bVN0eWxlUGVyZlRlc3QpLAorICAgICAgICAocmUuY29tcGlsZSgnXlBhZ2VMb2FkLycpLCBQYWdl
TG9hZGluZ1BlcmZUZXN0KSwKKyAgICBdCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgY3Jl
YXRlX3BlcmZfdGVzdChjbHMsIHRlc3RfbmFtZSwgcGF0aCk6CisgICAgICAgIGZvciAocGF0dGVy
biwgdGVzdF9jbGFzcykgaW4gY2xzLl9wYXR0ZXJuX21hcDoKKyAgICAgICAgICAgIGlmIHBhdHRl
cm4ubWF0Y2godGVzdF9uYW1lKToKKyAgICAgICAgICAgICAgICByZXR1cm4gdGVzdF9jbGFzcyh0
ZXN0X25hbWUsIHBhdGgpCisgICAgICAgIHJldHVybiBQZXJmVGVzdCh0ZXN0X25hbWUsIHBhdGgp
CkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BlcmZvcm1hbmNlX3Rlc3RzL3BlcmZ0ZXN0
X3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcGVyZm9y
bWFuY2VfdGVzdHMvcGVyZnRlc3RfdW5pdHRlc3QucHkJKHJldmlzaW9uIDExNDE1OCkKKysrIFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvcGVyZm9ybWFuY2VfdGVzdHMvcGVyZnRlc3RfdW5pdHRlc3Qu
cHkJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDcgQEAgZnJvbSB3ZWJraXRweS5sYXlvdXRf
dGVzdHMucG9ydC5kcml2ZXIgaQogZnJvbSB3ZWJraXRweS5wZXJmb3JtYW5jZV90ZXN0cy5wZXJm
dGVzdCBpbXBvcnQgQ2hyb21pdW1TdHlsZVBlcmZUZXN0CiBmcm9tIHdlYmtpdHB5LnBlcmZvcm1h
bmNlX3Rlc3RzLnBlcmZ0ZXN0IGltcG9ydCBQYWdlTG9hZGluZ1BlcmZUZXN0CiBmcm9tIHdlYmtp
dHB5LnBlcmZvcm1hbmNlX3Rlc3RzLnBlcmZ0ZXN0IGltcG9ydCBQZXJmVGVzdAorZnJvbSB3ZWJr
aXRweS5wZXJmb3JtYW5jZV90ZXN0cy5wZXJmdGVzdCBpbXBvcnQgUGVyZlRlc3RGYWN0b3J5CiAK
IAogY2xhc3MgTW9ja1ByaW50ZXIob2JqZWN0KToKQEAgLTU4LDcgKzU5LDcgQEAgY2xhc3MgTWFp
blRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICAgICAgJ3N0ZGV2IDExJywKICAgICAg
ICAgICAgICdtaW4gMTA4MCcsCiAgICAgICAgICAgICAnbWF4IDExMjAnXSksIGltYWdlPU5vbmUs
IGltYWdlX2hhc2g9Tm9uZSwgYXVkaW89Tm9uZSkKLSAgICAgICAgdGVzdCA9IFBlcmZUZXN0KCdz
b21lLXRlc3QnLCAnc29tZS1kaXIvc29tZS10ZXN0JywgJy9wYXRoL3NvbWUtZGlyL3NvbWUtdGVz
dCcpCisgICAgICAgIHRlc3QgPSBQZXJmVGVzdCgnc29tZS10ZXN0JywgJy9wYXRoL3NvbWUtZGly
L3NvbWUtdGVzdCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGVzdC5wYXJzZV9vdXRwdXQo
b3V0cHV0LCBwcmludGVyLCBidWlsZGJvdF9vdXRwdXQpLAogICAgICAgICAgICAgeydzb21lLXRl
c3QnOiB7J2F2Zyc6IDExMDAuMCwgJ21lZGlhbic6IDExMDEuMCwgJ21pbic6IDEwODAuMCwgJ21h
eCc6IDExMjAuMCwgJ3N0ZGV2JzogMTEuMCwgJ3VuaXQnOiAnbXMnfX0pCiAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwocHJpbnRlci53cml0dGVuX2xpbmVzLCBbXSkKQEAgLTc3LDcgKzc4LDcgQEAg
Y2xhc3MgTWFpblRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICAgICAgJ3N0ZGV2IDEx
JywKICAgICAgICAgICAgICdtaW4gMTA4MCcsCiAgICAgICAgICAgICAnbWF4IDExMjAnXSksIGlt
YWdlPU5vbmUsIGltYWdlX2hhc2g9Tm9uZSwgYXVkaW89Tm9uZSkKLSAgICAgICAgdGVzdCA9IFBl
cmZUZXN0KCdzb21lLXRlc3QnLCAnc29tZS1kaXIvc29tZS10ZXN0JywgJy9wYXRoL3NvbWUtZGly
L3NvbWUtdGVzdCcpCisgICAgICAgIHRlc3QgPSBQZXJmVGVzdCgnc29tZS10ZXN0JywgJy9wYXRo
L3NvbWUtZGlyL3NvbWUtdGVzdCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGVzdC5wYXJz
ZV9vdXRwdXQob3V0cHV0LCBwcmludGVyLCBidWlsZGJvdF9vdXRwdXQpLCBOb25lKQogICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKHByaW50ZXIud3JpdHRlbl9saW5lcywgWydzb21lLXVucmVjb2du
aXphYmxlLWxpbmUnXSkKIApAQCAtMTAyLDcgKzEwMyw3IEBAIGNsYXNzIFRlc3RQYWdlTG9hZGlu
Z1BlcmZUZXN0KHVuaXR0ZXN0LlQKICAgICBkZWYgdGVzdF9ydW4oc2VsZik6CiAgICAgICAgIHBy
aW50ZXIgPSBNb2NrUHJpbnRlcigpCiAgICAgICAgIGJ1aWxkYm90X291dHB1dCA9IFN0cmluZ0lP
LlN0cmluZ0lPKCkKLSAgICAgICAgdGVzdCA9IFBhZ2VMb2FkaW5nUGVyZlRlc3QoJ3NvbWUtdGVz
dCcsICdzb21lLWRpci9zb21lLXRlc3QnLCAnL3BhdGgvc29tZS1kaXIvc29tZS10ZXN0JykKKyAg
ICAgICAgdGVzdCA9IFBhZ2VMb2FkaW5nUGVyZlRlc3QoJ3NvbWUtdGVzdCcsICcvcGF0aC9zb21l
LWRpci9zb21lLXRlc3QnKQogICAgICAgICBkcml2ZXIgPSBUZXN0UGFnZUxvYWRpbmdQZXJmVGVz
dC5Nb2NrRHJpdmVyKFsxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywg
MTQsIDE1LCAxNiwgMTcsIDE4LCAxOSwgMjBdKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRl
c3QucnVuKGRyaXZlciwgTm9uZSwgcHJpbnRlciwgYnVpbGRib3Rfb3V0cHV0KSwKICAgICAgICAg
ICAgIHsnc29tZS10ZXN0JzogeydtYXgnOiAyMDAwMCwgJ2F2Zyc6IDExMDAwLjAsICdtZWRpYW4n
OiAxMTAwMCwgJ3N0ZGV2JzogbWF0aC5zcXJ0KDU3MCAqIDEwMDAgKiAxMDAwKSwgJ21pbic6IDIw
MDAsICd1bml0JzogJ21zJ319KQpAQCAtMTEyLDEwICsxMTMsMjUgQEAgY2xhc3MgVGVzdFBhZ2VM
b2FkaW5nUGVyZlRlc3QodW5pdHRlc3QuVAogICAgIGRlZiB0ZXN0X3J1bl93aXRoX2JhZF9vdXRw
dXQoc2VsZik6CiAgICAgICAgIHByaW50ZXIgPSBNb2NrUHJpbnRlcigpCiAgICAgICAgIGJ1aWxk
Ym90X291dHB1dCA9IFN0cmluZ0lPLlN0cmluZ0lPKCkKLSAgICAgICAgdGVzdCA9IFBhZ2VMb2Fk
aW5nUGVyZlRlc3QoJ3NvbWUtdGVzdCcsICdzb21lLWRpci9zb21lLXRlc3QnLCAnL3BhdGgvc29t
ZS1kaXIvc29tZS10ZXN0JykKKyAgICAgICAgdGVzdCA9IFBhZ2VMb2FkaW5nUGVyZlRlc3QoJ3Nv
bWUtdGVzdCcsICcvcGF0aC9zb21lLWRpci9zb21lLXRlc3QnKQogICAgICAgICBkcml2ZXIgPSBU
ZXN0UGFnZUxvYWRpbmdQZXJmVGVzdC5Nb2NrRHJpdmVyKFsxLCAyLCAzLCA0LCA1LCA2LCA3LCAn
c29tZSBlcnJvcicsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAxNywgMTgsIDE5LCAy
MF0pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGVzdC5ydW4oZHJpdmVyLCBOb25lLCBwcmlu
dGVyLCBidWlsZGJvdF9vdXRwdXQpLCBOb25lKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBy
aW50ZXIud3JpdHRlbl9saW5lcywgWydlcnJvcjogc29tZS10ZXN0XG5zb21lIGVycm9yJ10pCiAK
KworY2xhc3MgVGVzdFBlcmZUZXN0RmFjdG9yeSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVm
IHRlc3RfcmVndWxhcl90ZXN0KHNlbGYpOgorICAgICAgICB0ZXN0ID0gUGVyZlRlc3RGYWN0b3J5
LmNyZWF0ZV9wZXJmX3Rlc3QoJ3NvbWUtZGlyL3NvbWUtdGVzdCcsICcvcGF0aC9zb21lLWRpci9z
b21lLXRlc3QnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRlc3QuX19jbGFzc19fLCBQZXJm
VGVzdCkKKworICAgIGRlZiB0ZXN0X2luc3BlY3Rvcl90ZXN0KHNlbGYpOgorICAgICAgICB0ZXN0
ID0gUGVyZlRlc3RGYWN0b3J5LmNyZWF0ZV9wZXJmX3Rlc3QoJ2luc3BlY3Rvci9zb21lLXRlc3Qn
LCAnL3BhdGgvaW5zcGVjdG9yL3NvbWUtdGVzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
dGVzdC5fX2NsYXNzX18sIENocm9taXVtU3R5bGVQZXJmVGVzdCkKKworICAgIGRlZiB0ZXN0X3Bh
Z2VfbG9hZGluZ190ZXN0KHNlbGYpOgorICAgICAgICB0ZXN0ID0gUGVyZlRlc3RGYWN0b3J5LmNy
ZWF0ZV9wZXJmX3Rlc3QoJ1BhZ2VMb2FkL3NvbWUtdGVzdCcsICcvcGF0aC9QYWdlTG9hZC9zb21l
LXRlc3QnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRlc3QuX19jbGFzc19fLCBQYWdlTG9h
ZGluZ1BlcmZUZXN0KQorCisKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgdW5pdHRl
c3QubWFpbigpCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BlcmZvcm1hbmNlX3Rlc3Rz
L3BlcmZ0ZXN0c3J1bm5lci5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5
L3BlcmZvcm1hbmNlX3Rlc3RzL3BlcmZ0ZXN0c3J1bm5lci5weQkocmV2aXNpb24gMTE0MTQ5KQor
KysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wZXJmb3JtYW5jZV90ZXN0cy9wZXJmdGVzdHNydW5u
ZXIucHkJKHdvcmtpbmcgY29weSkKQEAgLTQwLDE3ICs0MCwxMyBAQCBmcm9tIHdlYmtpdHB5LmNv
bW1vbiBpbXBvcnQgZmluZF9maWxlcwogZnJvbSB3ZWJraXRweS5jb21tb24uaG9zdCBpbXBvcnQg
SG9zdAogZnJvbSB3ZWJraXRweS5jb21tb24ubmV0LmZpbGVfdXBsb2FkZXIgaW1wb3J0IEZpbGVV
cGxvYWRlcgogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMudmlld3MgaW1wb3J0IHByaW50aW5n
Ci1mcm9tIHdlYmtpdHB5LnBlcmZvcm1hbmNlX3Rlc3RzLnBlcmZ0ZXN0IGltcG9ydCBDaHJvbWl1
bVN0eWxlUGVyZlRlc3QKLWZyb20gd2Via2l0cHkucGVyZm9ybWFuY2VfdGVzdHMucGVyZnRlc3Qg
aW1wb3J0IFBhZ2VMb2FkaW5nUGVyZlRlc3QKLWZyb20gd2Via2l0cHkucGVyZm9ybWFuY2VfdGVz
dHMucGVyZnRlc3QgaW1wb3J0IFBlcmZUZXN0Citmcm9tIHdlYmtpdHB5LnBlcmZvcm1hbmNlX3Rl
c3RzLnBlcmZ0ZXN0IGltcG9ydCBQZXJmVGVzdEZhY3RvcnkKIAogCiBfbG9nID0gbG9nZ2luZy5n
ZXRMb2dnZXIoX19uYW1lX18pCiAKIAogY2xhc3MgUGVyZlRlc3RzUnVubmVyKG9iamVjdCk6Ci0g
ICAgX3BhdHRlcm5fZm9yX2Nocm9taXVtX3N0eWxlX3Rlc3RzID0gcmUuY29tcGlsZSgnXmluc3Bl
Y3Rvci8nKQotICAgIF9wYXR0ZXJuX2Zvcl9wYWdlX2xvYWRpbmdfdGVzdHMgPSByZS5jb21waWxl
KCdeUGFnZUxvYWQvJykKICAgICBfZGVmYXVsdF9icmFuY2ggPSAnd2Via2l0LXRydW5rJwogICAg
IF9FWElUX0NPREVfQkFEX0JVSUxEID0gLTEKICAgICBfRVhJVF9DT0RFX0JBRF9KU09OID0gLTIK
QEAgLTEzMiwxNCArMTI4LDcgQEAgY2xhc3MgUGVyZlRlc3RzUnVubmVyKG9iamVjdCk6CiAgICAg
ICAgICAgICByZWxhdGl2ZV9wYXRoID0gc2VsZi5fcG9ydC5yZWxhdGl2ZV9wZXJmX3Rlc3RfZmls
ZW5hbWUocGF0aCkKICAgICAgICAgICAgIGlmIHNlbGYuX3BvcnQuc2tpcHNfcGVyZl90ZXN0KHJl
bGF0aXZlX3BhdGgpOgogICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICB0ZXN0
X25hbWUgPSByZWxhdGl2ZV9wYXRoLnJlcGxhY2UoJ1xcJywgJy8nKQotICAgICAgICAgICAgZGly
bmFtZSA9IGZpbGVzeXN0ZW0uZGlybmFtZShwYXRoKQotICAgICAgICAgICAgaWYgc2VsZi5fcGF0
dGVybl9mb3JfY2hyb21pdW1fc3R5bGVfdGVzdHMubWF0Y2gocmVsYXRpdmVfcGF0aCk6Ci0gICAg
ICAgICAgICAgICAgdGVzdHMuYXBwZW5kKENocm9taXVtU3R5bGVQZXJmVGVzdCh0ZXN0X25hbWUs
IGRpcm5hbWUsIHBhdGgpKQotICAgICAgICAgICAgZWxpZiBzZWxmLl9wYXR0ZXJuX2Zvcl9wYWdl
X2xvYWRpbmdfdGVzdHMubWF0Y2gocmVsYXRpdmVfcGF0aCk6Ci0gICAgICAgICAgICAgICAgdGVz
dHMuYXBwZW5kKFBhZ2VMb2FkaW5nUGVyZlRlc3QodGVzdF9uYW1lLCBkaXJuYW1lLCBwYXRoKSkK
LSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgdGVzdHMuYXBwZW5kKFBlcmZUZXN0
KHRlc3RfbmFtZSwgZGlybmFtZSwgcGF0aCkpCisgICAgICAgICAgICB0ZXN0cy5hcHBlbmQoUGVy
ZlRlc3RGYWN0b3J5LmNyZWF0ZV9wZXJmX3Rlc3QocmVsYXRpdmVfcGF0aC5yZXBsYWNlKCdcXCcs
ICcvJyksIHBhdGgpKQogCiAgICAgICAgIHJldHVybiB0ZXN0cwogCkluZGV4OiBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L3BlcmZvcm1hbmNlX3Rlc3RzL3BlcmZ0ZXN0c3J1bm5lcl91bml0dGVzdC5w
eQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BlcmZvcm1hbmNlX3Rlc3Rz
L3BlcmZ0ZXN0c3J1bm5lcl91bml0dGVzdC5weQkocmV2aXNpb24gMTE0MTQ5KQorKysgVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9wZXJmb3JtYW5jZV90ZXN0cy9wZXJmdGVzdHNydW5uZXJfdW5pdHRl
c3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTEyOCw4ICsxMjgsNyBAQCBtYXggMTEyMAogICAgIGRl
ZiBydW5fdGVzdChzZWxmLCB0ZXN0X25hbWUpOgogICAgICAgICBydW5uZXIgPSBzZWxmLmNyZWF0
ZV9ydW5uZXIoKQogICAgICAgICBkcml2ZXIgPSBNYWluVGVzdC5UZXN0RHJpdmVyKCkKLSAgICAg
ICAgcmV0dXJuIHJ1bm5lci5fcnVuX3NpbmdsZV90ZXN0KENocm9taXVtU3R5bGVQZXJmVGVzdCh0
ZXN0X25hbWUsICdzb21lLWRpcicsCi0gICAgICAgICAgICBydW5uZXIuX2hvc3QuZmlsZXN5c3Rl
bS5qb2luKCdzb21lLWRpcicsIHRlc3RfbmFtZSkpLCBkcml2ZXIpCisgICAgICAgIHJldHVybiBy
dW5uZXIuX3J1bl9zaW5nbGVfdGVzdChDaHJvbWl1bVN0eWxlUGVyZlRlc3QodGVzdF9uYW1lLCBy
dW5uZXIuX2hvc3QuZmlsZXN5c3RlbS5qb2luKCdzb21lLWRpcicsIHRlc3RfbmFtZSkpLCBkcml2
ZXIpCiAKICAgICBkZWYgdGVzdF9ydW5fcGFzc2luZ190ZXN0KHNlbGYpOgogICAgICAgICBzZWxm
LmFzc2VydFRydWUoc2VsZi5ydW5fdGVzdCgncGFzcy5odG1sJykpCkBAIC0xNTYsOSArMTU1LDkg
QEAgbWF4IDExMjAKICAgICAgICAgICAgIHBhdGggPSBmaWxlc3lzdGVtLmpvaW4ocnVubmVyLl9i
YXNlX3BhdGgsIHRlc3QpCiAgICAgICAgICAgICBkaXJuYW1lID0gZmlsZXN5c3RlbS5kaXJuYW1l
KHBhdGgpCiAgICAgICAgICAgICBpZiB0ZXN0LnN0YXJ0c3dpdGgoJ2luc3BlY3Rvci8nKToKLSAg
ICAgICAgICAgICAgICB0ZXN0cy5hcHBlbmQoQ2hyb21pdW1TdHlsZVBlcmZUZXN0KHRlc3QsIGRp
cm5hbWUsIHBhdGgpKQorICAgICAgICAgICAgICAgIHRlc3RzLmFwcGVuZChDaHJvbWl1bVN0eWxl
UGVyZlRlc3QodGVzdCwgcGF0aCkpCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAg
IHRlc3RzLmFwcGVuZChQZXJmVGVzdCh0ZXN0LCBkaXJuYW1lLCBwYXRoKSkKKyAgICAgICAgICAg
ICAgICB0ZXN0cy5hcHBlbmQoUGVyZlRlc3QodGVzdCwgcGF0aCkpCiAgICAgICAgIHJldHVybiB0
ZXN0cwogCiAgICAgZGVmIHRlc3RfcnVuX3Rlc3Rfc2V0KHNlbGYpOgo=
</data>
<flag name="review"
          id="142154"
          type_id="1"
          status="+"
          setter="dpranke"
    />
          </attachment>
      

    </bug>

</bugzilla>