<?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>37731</bug_id>
          
          <creation_ts>2010-04-16 15:15:14 -0700</creation_ts>
          <short_desc>Integrate v8 testing utility with webkit tests</short_desc>
          <delta_ts>2010-04-22 20:30:36 -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>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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yaar Schnitman">yaar</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>eric</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>213449</commentid>
    <comment_count>0</comment_count>
    <who name="Yaar Schnitman">yaar</who>
    <bug_when>2010-04-16 15:15:14 -0700</bug_when>
    <thetext>Integrate v8 testing utility with webkit tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213451</commentid>
    <comment_count>1</comment_count>
      <attachid>53571</attachid>
    <who name="Yaar Schnitman">yaar</who>
    <bug_when>2010-04-16 15:20:42 -0700</bug_when>
    <thetext>Created attachment 53571
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213452</commentid>
    <comment_count>2</comment_count>
      <attachid>53571</attachid>
    <who name="Yaar Schnitman">yaar</who>
    <bug_when>2010-04-16 15:21:30 -0700</bug_when>
    <thetext>Comment on attachment 53571
Patch

Please cq+ if LGTM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213454</commentid>
    <comment_count>3</comment_count>
    <who name="Yaar Schnitman">yaar</who>
    <bug_when>2010-04-16 15:23:06 -0700</bug_when>
    <thetext>Eric, this refactor of the original test utility can be run to see if output is different from the reference files and optionally, to update the reference files.

I&apos;ll leave the hookup to EWS, commit queue, etc to you.

Cheers,
Yaar</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213654</commentid>
    <comment_count>4</comment_count>
      <attachid>53571</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-04-17 13:16:40 -0700</bug_when>
    <thetext>Comment on attachment 53571
Patch

+ os.system(&apos; &apos;.join(cmd))

os.system is a dangerous API.  Please consider using popen or webkitpy.common.system.executive.

+ webkitRoot = os.path.join(os.path.dirname(__file__), &apos;..&apos;, &apos;..&apos;)

This seems very fragile.  Please consider using checkout_root in webkitpy.common.checkout.scm.

+ workDir = tempfile.mkdtemp()

I don&apos;t understand why we need a working temp directory.  Can&apos;t we just generate the new output into a memory buffer?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>214079</commentid>
    <comment_count>5</comment_count>
      <attachid>53687</attachid>
    <who name="Yaar Schnitman">yaar</who>
    <bug_when>2010-04-19 10:18:16 -0700</bug_when>
    <thetext>Created attachment 53687
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>214080</commentid>
    <comment_count>6</comment_count>
      <attachid>53687</attachid>
    <who name="Yaar Schnitman">yaar</who>
    <bug_when>2010-04-19 10:18:38 -0700</bug_when>
    <thetext>Comment on attachment 53687
Patch

Ready for review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>214084</commentid>
    <comment_count>7</comment_count>
    <who name="Yaar Schnitman">yaar</who>
    <bug_when>2010-04-19 10:21:15 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 53571 [details])
&gt; + os.system(&apos; &apos;.join(cmd))
&gt; 
&gt; os.system is a dangerous API.  Please consider using popen or
&gt; webkitpy.common.system.executive.
Fixed to use subprocess.call

&gt; + webkitRoot = os.path.join(os.path.dirname(__file__), &apos;..&apos;, &apos;..&apos;)
&gt; 
&gt; This seems very fragile.  Please consider using checkout_root in
&gt; webkitpy.common.checkout.scm.
Fixed.
&gt; 
&gt; + workDir = tempfile.mkdtemp()
&gt; 
&gt; I don&apos;t understand why we need a working temp directory.  Can&apos;t we just
&gt; generate the new output into a memory buffer?
There are 3 reasons:
1) Its hard to run &apos;diff&apos; on a memory buffer.
2) Its hard to predict pipe the output of the Perl generator into a memory buffer, as there is no agreed interface for how many files and what files it outputs. While I can hard code something for V8, I want this to generalize to other generators.
3) Its shorter, simpler code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>214085</commentid>
    <comment_count>8</comment_count>
    <who name="Yaar Schnitman">yaar</who>
    <bug_when>2010-04-19 10:21:45 -0700</bug_when>
    <thetext>(Please cq+ if ok)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>216043</commentid>
    <comment_count>9</comment_count>
      <attachid>53687</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-04-22 13:01:36 -0700</bug_when>
    <thetext>Comment on attachment 53687
Patch

Thanks for the patch!  Glad to have this testing harness.  :)

WebKitTools/Scripts/run-bindings-tests:105
 +      overwrite = &quot;--overwrite&quot; in argv
We should probably use option parser here instead of doing this manually.

WebKitTools/Scripts/run-bindings-tests:82
 +              workDir = tempfile.mkdtemp()
I still think we should do this in memory, but ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>216246</commentid>
    <comment_count>10</comment_count>
      <attachid>53687</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-04-22 20:30:31 -0700</bug_when>
    <thetext>Comment on attachment 53687
Patch

Clearing flags on attachment: 53687

Committed r58143: &lt;http://trac.webkit.org/changeset/58143&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>216247</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-04-22 20:30:36 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>53571</attachid>
            <date>2010-04-16 15:20:42 -0700</date>
            <delta_ts>2010-04-19 10:18:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-37731-20100416152041.patch</filename>
            <type>text/plain</type>
            <size>8575</size>
            <attacher name="Yaar Schnitman">yaar</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YzliY2MwYi4uYWU1YzUyZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTIsNiArMiwxNSBAQAogCiAgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgogCisgICAgICAgIEludGVncmF0ZSB2OCB0ZXN0aW5nIHV0aWxpdHkgd2l0
aCB3ZWJraXQgdGVzdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTM3NzMxCisKKyAgICAgICAgKiBiaW5kaW5ncy92OC90ZXN0L3J1bl90ZXN0cy5weTog
UmVtb3ZlZC4KKworMjAxMC0wNC0xNiAgWWFhciBTY2huaXRtYW4gIDx5YWFyQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwogICAgICAgICBBdXRv
LWdlbmVyYXRlIFY4IGJpbmRpbmdzIGZvciBjYW52YXMuKiBvdmVybG9hZHMKICAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM3NDUzCiAKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvYmluZGluZ3MvdjgvdGVzdC9ydW5fdGVzdHMucHkgYi9XZWJDb3JlL2JpbmRpbmdz
L3Y4L3Rlc3QvcnVuX3Rlc3RzLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMjdk
NTU5Li4wMDAwMDAwCi0tLSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvdGVzdC9ydW5fdGVzdHMucHkK
KysrIC9kZXYvbnVsbApAQCAtMSw1OCArMCwwIEBACi0jIS91c3IvYmluL3B5dGhvbgotIwotIyBD
b3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0j
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0jCi0j
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKLSMgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSMgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0jIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotIyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKLSMgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotIyBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSMgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotIyBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0jCi0KLSMgVGhpcyBzY3JpcHQgZ2VuZXJh
dGVzIGggYW5kIGNwcCBmaWxlIGZvciBUZXN0T2JqLmlkbCB1c2luZyB0aGUgVjggY29kZQotIyBn
ZW5lcmF0b3IuIFBsZWFzZSBleGVjdXRlIHRoZSBzY3JpcHQgd2hlbmV2ZXIgY2hhbmdlcyBhcmUg
bWFkZSB0bwotIyBDb2RlR2VuZXJhdG9yVjgucG0sIGFuZCBzdWJtaXQgdGhlIGNoYW5nZXMgaW4g
VjhUZXN0T2JqLmgvY3BwIGluIHRoZSBzYW1lCi0jIHBhdGNoLiBUaGlzIG1ha2VzIGl0IGVhc2ll
ciB0byB0cmFjayBhbmQgcmV2aWV3IGNoYW5nZXMgaW4gZ2VuZXJhdGVkIGNvZGUuCi0jIFRvIGV4
ZWN1dGUsIGludm9rZTogJ3B5dGhvbiBydW5fdGVzdHMucHknCi0KLWltcG9ydCBvcwotaW1wb3J0
IHN5cwotCi0KLWRlZiB0ZXN0KGlkbEZpbGVQYXRoKToKLSAgICBjbWQgPSBbJ3BlcmwnLCAnLXcn
LAotICAgICAgICAgJy1JLi4vLi4vc2NyaXB0cycsCi0gICAgICAgICAnLi4vLi4vc2NyaXB0cy9n
ZW5lcmF0ZS1iaW5kaW5ncy5wbCcsCi0gICAgICAgICAjIGlkbCBpbmNsdWRlIGRpcmVjdG9yaWVz
IChwYXRoIHJlbGF0aXZlIHRvIGdlbmVyYXRlLWJpbmRpbmdzLnBsKQotICAgICAgICAgJy0taW5j
bHVkZSAuJywKLSAgICAgICAgICMgcGxhY2UgaG9sZGVyIGZvciBkZWZpbmVzIChnZW5lcmF0ZS1i
aW5kaW5ncy5wbCByZXF1aXJlcyBpdCkKLSAgICAgICAgICctLWRlZmluZXMgeHh4JywKLSAgICAg
ICAgICctLWdlbmVyYXRvciBWOCcsCi0gICAgICAgICAnLS1vdXRwdXREaXIgLicsCi0gICAgICAg
ICBpZGxGaWxlUGF0aF0KLSAgICBvcy5zeXN0ZW0oJyAnLmpvaW4oY21kKSkKLQotCi1kZWYgbWFp
bihhcmd2KToKLSAgICBzY3JpcHREaXIgPSBvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pCi0gICAg
b3MuY2hkaXIoc2NyaXB0RGlyKQotICAgIHRlc3QoJ1Rlc3RPYmouaWRsJykKLQotCi1pZiBfX25h
bWVfXyA9PSAnX19tYWluX18nOgotICAgIHN5cy5leGl0KG1haW4oc3lzLmFyZ3YpKQpkaWZmIC0t
Z2l0IGEvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCmluZGV4
IDAyYzM1MjUuLjgyOWU0MWEgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZworKysg
Yi9XZWJLaXRUb29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMC0wNC0xNiAgWWFh
ciBTY2huaXRtYW4gIDx5YWFyQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnRlZ3JhdGUgdjggdGVzdGluZyB1dGlsaXR5IHdp
dGggd2Via2l0IHRlc3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0zNzczMQorCisgICAgICAgICogU2NyaXB0cy9ydW4tYmluZGluZ3MtdGVzdHM6IEFk
ZGVkLgorCiAyMDEwLTA0LTE0ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBSb2Jlbi4KZGlmZiAtLWdpdCBhL1dlYktpdFRv
b2xzL1NjcmlwdHMvcnVuLWJpbmRpbmdzLXRlc3RzIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9ydW4t
YmluZGluZ3MtdGVzdHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjFiMjYx
MgotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvcnVuLWJpbmRpbmdzLXRl
c3RzCkBAIC0wLDAgKzEsMTMzIEBACisjIS91c3IvYmluL3B5dGhvbgorIyBDb3B5cmlnaHQgKEMp
IDIwMTAgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
IyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyMgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyMgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorIyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyMg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorIyBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyMgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorIyBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisjCisKKyMgVGhpcyBzY3JpcHQgZ2VuZXJhdGVzIGggYW5kIGNw
cCBmaWxlIGZvciBUZXN0T2JqLmlkbCB1c2luZyB0aGUgVjggY29kZQorIyBnZW5lcmF0b3IuIFBs
ZWFzZSBleGVjdXRlIHRoZSBzY3JpcHQgd2hlbmV2ZXIgY2hhbmdlcyBhcmUgbWFkZSB0bworIyBD
b2RlR2VuZXJhdG9yVjgucG0sIGFuZCBzdWJtaXQgdGhlIGNoYW5nZXMgaW4gVjhUZXN0T2JqLmgv
Y3BwIGluIHRoZSBzYW1lCisjIHBhdGNoLiBUaGlzIG1ha2VzIGl0IGVhc2llciB0byB0cmFjayBh
bmQgcmV2aWV3IGNoYW5nZXMgaW4gZ2VuZXJhdGVkIGNvZGUuCisjIFRvIGV4ZWN1dGUsIGludm9r
ZTogJ3B5dGhvbiBydW5fdGVzdHMucHknCisKK2ltcG9ydCBvcworaW1wb3J0IG9zLnBhdGgKK2lt
cG9ydCBzeXMKK2ltcG9ydCB0ZW1wZmlsZQorCisKK2RlZiBnZW5lcmF0ZUZyb21JREwoZ2VuZXJh
dG9yLCBpZGxGaWxlLCBvdXRwdXREaXIpOgorICAgIGNtZCA9IFsncGVybCcsICctdycsCisgICAg
ICAgICAgICctSVdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cycsCisgICAgICAgICAgICdXZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvZ2VuZXJhdGUtYmluZGluZ3MucGwnLAorICAgICAgICAgICAjIGlk
bCBpbmNsdWRlIGRpcmVjdG9yaWVzIChwYXRoIHJlbGF0aXZlIHRvIGdlbmVyYXRlLWJpbmRpbmdz
LnBsKQorICAgICAgICAgICAnLS1pbmNsdWRlIC4nLAorICAgICAgICAgICAjIHBsYWNlIGhvbGRl
ciBmb3IgZGVmaW5lcyAoZ2VuZXJhdGUtYmluZGluZ3MucGwgcmVxdWlyZW1lbnQpCisgICAgICAg
ICAgICctLWRlZmluZXMgeCcsCisgICAgICAgICAgICctLWdlbmVyYXRvciAlcycgJSBnZW5lcmF0
b3IsCisgICAgICAgICAgICctLW91dHB1dERpciAlcycgJSBvdXRwdXREaXIsCisgICAgICAgICAg
IGlkbEZpbGVdCisKKyAgICByZXR1cm4gb3Muc3lzdGVtKCcgJy5qb2luKGNtZCkpID09IDAKKwor
CitkZWYgZGV0ZWN0Q2hhbmdlcyh3b3JrRGlyLCByZWZlcmVuY2VEaXIpOgorICAgIGNoYW5nZXNG
b3VuZCA9IEZhbHNlCisgICAgZm9yIG91dHB1dEZpbGUgaW4gb3MubGlzdGRpcih3b3JrRGlyKToK
KyAgICAgICAgcHJpbnQgJ0RldGVjdGluZyBjaGFuZ2VzIGluICVzLi4uJyAlIG91dHB1dEZpbGUK
KyAgICAgICAgY21kID0gWydkaWZmJywKKyAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihyZWZl
cmVuY2VEaXIsIG91dHB1dEZpbGUpLAorICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKHdvcmtE
aXIsIG91dHB1dEZpbGUpXQorICAgICAgICBpZiBvcy5zeXN0ZW0oJyAnLmpvaW4oY21kKSkgIT0g
MDoKKyAgICAgICAgICAgIHByaW50ICdEZXRlY3RlZCBjaGFuZ2VzIGluICVzIChzZWUgYWJvdmUp
JyAlIG91dHB1dEZpbGUKKyAgICAgICAgICAgIGNoYW5nZXNGb3VuZCA9IFRydWUKKyAgICAgICAg
ZWxzZToKKyAgICAgICAgICAgIHByaW50ICdObyBjaGFuZ2VzIGZvdW5kLicKKworICAgIHJldHVy
biBjaGFuZ2VzRm91bmQKKworCitkZWYgcnVuVGVzdHMoZ2VuZXJhdG9yLCBpbnB1dERpciwgcmVm
ZXJlbmNlRGlyLCBvdmVyd3JpdGUpOgorICAgIHdvcmtEaXIgPSByZWZlcmVuY2VEaXIKKworICAg
IHBhc3NlZCA9IFRydWUKKyAgICBmb3IgaW5wdXRGaWxlIGluIG9zLmxpc3RkaXIoaW5wdXREaXIp
OgorICAgICAgICAobmFtZSwgZXh0KSA9IG9zLnBhdGguc3BsaXRleHQoaW5wdXRGaWxlKQorICAg
ICAgICBpZiBleHQgIT0gJy5pZGwnOgorICAgICAgICAgICAgY29udGludWUKKworICAgICAgICBw
cmludCAnVGVzdGluZyB0aGUgJXMgZ2VuZXJhdG9yIG9uICVzJyAlIChnZW5lcmF0b3IsIGlucHV0
RmlsZSkKKworICAgICAgICAjIEdlbmVyYXRlIG91dHB1dCBpbnRvIHRoZSB3b3JrIGRpcmVjdG9y
eSAoZWl0aGVyIHRoZSBnaXZlbiBvbmUgb3IgYSAKKyAgICAgICAgIyB0ZW1wIG9uZSBpZiBub3Qg
b3ZlcndyaXRlIGlzIHBlcmZvcm1lZCkKKyAgICAgICAgaWYgbm90IG92ZXJ3cml0ZToKKyAgICAg
ICAgICAgIHdvcmtEaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKCkKKworICAgICAgICBpZiBub3QgZ2Vu
ZXJhdGVGcm9tSURMKGdlbmVyYXRvciwgb3MucGF0aC5qb2luKGlucHV0RGlyLCBpbnB1dEZpbGUp
LCB3b3JrRGlyKToKKyAgICAgICAgICAgIHBhc3NlZCA9IEZhbHNlCisgICAgICAgIAorICAgICAg
ICBpZiBvdmVyd3JpdGU6CisgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICMgRGV0ZWN0
IGNoYW5nZXMKKyAgICAgICAgaWYgZGV0ZWN0Q2hhbmdlcyh3b3JrRGlyLCByZWZlcmVuY2VEaXIp
OgorICAgICAgICAgICAgcGFzc2VkID0gRmFsc2UKKworICAgIGlmIG5vdCBwYXNzZWQ6CisgICAg
ICAgIHByaW50ICclcyBnZW5lcmF0b3IgZmFpbGVkLicgJSBnZW5lcmF0b3IKKyAgICByZXR1cm4g
cGFzc2VkCisKKworZGVmIG1haW4oYXJndik6CisgICAgIiIiUnVucyBXZWJDb3JlIGJpbmRpbmdz
IGNvZGUgZ2VuZXJhdG9ycyBvbiB0ZXN0IElETCBmaWxlcyBhbmQgY29tcGFyZXMgCisgICAgdGhl
IHJlc3VsdHMgd2l0aCByZWZlcmVuY2UgZmlsZXMuCisKKyAgICBPcHRpb25zOgorICAgICAgICAt
LW92ZXJ3cml0ZTogT3ZlcndyaXRlcyB0aGUgcmVmZXJlbmNlIGZpbGVzIHdpdGggdGhlIGdlbmVy
YXRlZCByZXN1bHRzLgorCisgICAgIiIiCisgICAgb3ZlcndyaXRlID0gIi0tb3ZlcndyaXRlIiBp
biBhcmd2CisKKyAgICBjdXJyZW50RGlyID0gb3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKQorICAg
IHdlYmtpdFJvb3QgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgJy4u
JywgJy4uJykKKworICAgIG9zLmNoZGlyKHdlYmtpdFJvb3QpCisKKyAgICBhbGxUZXN0c1Bhc3Nl
ZCA9IFRydWUKKyAgICBpZiBub3QgcnVuVGVzdHMoJ1Y4JywKKyAgICAgICAgb3MucGF0aC5qb2lu
KCdXZWJDb3JlJywgJ2JpbmRpbmdzJywgJ3Y4JywgJ3Rlc3QnKSwgIyBJbnB1dCBkaXIKKyAgICAg
ICAgb3MucGF0aC5qb2luKCdXZWJDb3JlJywgJ2JpbmRpbmdzJywgJ3Y4JywgJ3Rlc3QnKSwgIyBS
ZWZlcmVuY2UgZGlyCisgICAgICAgIG92ZXJ3cml0ZSk6CisgICAgICAgIGFsbFRlc3RzUGFzc2Vk
ID0gRmFsc2UKKworICAgICMgRklYTUU6IEFkZCB0ZXN0cyBmb3IgSlNDLCBPYmpDCisKKyAgICBp
ZiBhbGxUZXN0c1Bhc3NlZDoKKyAgICAgICAgcHJpbnQgJ0FsbCB0ZXN0cyBwYXNzZWQhJworICAg
ICAgICByZXR1cm4gMAorICAgIGVsc2U6CisgICAgICAgIHByaW50ICcoVG8gdXBkYXRlIHRoZSBy
ZWZlcmVuY2UgZmlsZXMsIGV4ZWN1dGUgInJ1bi1iaW5kaW5ncy10ZXN0IC0tb3ZlcndyaXRlIikn
CisgICAgICAgIHJldHVybiAtMQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAg
c3lzLmV4aXQobWFpbihzeXMuYXJndikpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>53687</attachid>
            <date>2010-04-19 10:18:16 -0700</date>
            <delta_ts>2010-04-22 20:30:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-37731-20100419101814.patch</filename>
            <type>text/plain</type>
            <size>8557</size>
            <attacher name="Yaar Schnitman">yaar</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MzI1MGRmNS4uYTczOTA5ZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMC0wNC0xOSAgWWFhciBTY2huaXRt
YW4gIDx5YWFyQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBJbnRlZ3JhdGUgdjggdGVzdGluZyB1dGlsaXR5IHdpdGggd2Via2l0
IHRlc3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0z
NzczMQorCisgICAgICAgICogYmluZGluZ3MvdjgvdGVzdC9ydW5fdGVzdHMucHk6IFJlbW92ZWQu
CisKIDIwMTAtMDQtMTUgIE5pa29sYXMgWmltbWVybWFubiAgPG56aW1tZXJtYW5uQHJpbS5jb20+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQmV0aCBEYWtpbi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUv
YmluZGluZ3MvdjgvdGVzdC9ydW5fdGVzdHMucHkgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L3Rlc3Qv
cnVuX3Rlc3RzLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMjdkNTU5Li4wMDAw
MDAwCi0tLSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvdGVzdC9ydW5fdGVzdHMucHkKKysrIC9kZXYv
bnVsbApAQCAtMSw1OCArMCwwIEBACi0jIS91c3IvYmluL3B5dGhvbgotIwotIyBDb3B5cmlnaHQg
KEMpIDIwMTAgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0jCi0jIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKLSMgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKLSMgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0jIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotIyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
LSMgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotIyBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSMgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotIyBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0jCi0KLSMgVGhpcyBzY3JpcHQgZ2VuZXJhdGVzIGggYW5k
IGNwcCBmaWxlIGZvciBUZXN0T2JqLmlkbCB1c2luZyB0aGUgVjggY29kZQotIyBnZW5lcmF0b3Iu
IFBsZWFzZSBleGVjdXRlIHRoZSBzY3JpcHQgd2hlbmV2ZXIgY2hhbmdlcyBhcmUgbWFkZSB0bwot
IyBDb2RlR2VuZXJhdG9yVjgucG0sIGFuZCBzdWJtaXQgdGhlIGNoYW5nZXMgaW4gVjhUZXN0T2Jq
LmgvY3BwIGluIHRoZSBzYW1lCi0jIHBhdGNoLiBUaGlzIG1ha2VzIGl0IGVhc2llciB0byB0cmFj
ayBhbmQgcmV2aWV3IGNoYW5nZXMgaW4gZ2VuZXJhdGVkIGNvZGUuCi0jIFRvIGV4ZWN1dGUsIGlu
dm9rZTogJ3B5dGhvbiBydW5fdGVzdHMucHknCi0KLWltcG9ydCBvcwotaW1wb3J0IHN5cwotCi0K
LWRlZiB0ZXN0KGlkbEZpbGVQYXRoKToKLSAgICBjbWQgPSBbJ3BlcmwnLCAnLXcnLAotICAgICAg
ICAgJy1JLi4vLi4vc2NyaXB0cycsCi0gICAgICAgICAnLi4vLi4vc2NyaXB0cy9nZW5lcmF0ZS1i
aW5kaW5ncy5wbCcsCi0gICAgICAgICAjIGlkbCBpbmNsdWRlIGRpcmVjdG9yaWVzIChwYXRoIHJl
bGF0aXZlIHRvIGdlbmVyYXRlLWJpbmRpbmdzLnBsKQotICAgICAgICAgJy0taW5jbHVkZSAuJywK
LSAgICAgICAgICMgcGxhY2UgaG9sZGVyIGZvciBkZWZpbmVzIChnZW5lcmF0ZS1iaW5kaW5ncy5w
bCByZXF1aXJlcyBpdCkKLSAgICAgICAgICctLWRlZmluZXMgeHh4JywKLSAgICAgICAgICctLWdl
bmVyYXRvciBWOCcsCi0gICAgICAgICAnLS1vdXRwdXREaXIgLicsCi0gICAgICAgICBpZGxGaWxl
UGF0aF0KLSAgICBvcy5zeXN0ZW0oJyAnLmpvaW4oY21kKSkKLQotCi1kZWYgbWFpbihhcmd2KToK
LSAgICBzY3JpcHREaXIgPSBvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pCi0gICAgb3MuY2hkaXIo
c2NyaXB0RGlyKQotICAgIHRlc3QoJ1Rlc3RPYmouaWRsJykKLQotCi1pZiBfX25hbWVfXyA9PSAn
X19tYWluX18nOgotICAgIHN5cy5leGl0KG1haW4oc3lzLmFyZ3YpKQpkaWZmIC0tZ2l0IGEvV2Vi
S2l0VG9vbHMvQ2hhbmdlTG9nIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCmluZGV4IDAyYzM1MjUu
LmM4YTIxZGYgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZworKysgYi9XZWJLaXRU
b29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMC0wNC0xOSAgWWFhciBTY2huaXRt
YW4gIDx5YWFyQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBJbnRlZ3JhdGUgdjggdGVzdGluZyB1dGlsaXR5IHdpdGggd2Via2l0
IHRlc3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0z
NzczMQorCisgICAgICAgICogU2NyaXB0cy9ydW4tYmluZGluZ3MtdGVzdHM6IEFkZGVkLgorCiAy
MDEwLTA0LTE0ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgQWRhbSBSb2Jlbi4KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1Njcmlw
dHMvcnVuLWJpbmRpbmdzLXRlc3RzIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9ydW4tYmluZGluZ3Mt
dGVzdHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGIyN2YxZAotLS0gL2Rl
di9udWxsCisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvcnVuLWJpbmRpbmdzLXRlc3RzCkBAIC0w
LDAgKzEsMTMwIEBACisjIS91c3IvYmluL3B5dGhvbgorIyBDb3B5cmlnaHQgKEMpIDIwMTAgR29v
Z2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyMgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyMgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorIyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyMgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorIyBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyMgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorIyBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisjCisKKyMgVGhpcyBzY3JpcHQgZ2VuZXJhdGVzIGggYW5kIGNwcCBmaWxlIGZv
ciBUZXN0T2JqLmlkbCB1c2luZyB0aGUgVjggY29kZQorIyBnZW5lcmF0b3IuIFBsZWFzZSBleGVj
dXRlIHRoZSBzY3JpcHQgd2hlbmV2ZXIgY2hhbmdlcyBhcmUgbWFkZSB0bworIyBDb2RlR2VuZXJh
dG9yVjgucG0sIGFuZCBzdWJtaXQgdGhlIGNoYW5nZXMgaW4gVjhUZXN0T2JqLmgvY3BwIGluIHRo
ZSBzYW1lCisjIHBhdGNoLiBUaGlzIG1ha2VzIGl0IGVhc2llciB0byB0cmFjayBhbmQgcmV2aWV3
IGNoYW5nZXMgaW4gZ2VuZXJhdGVkIGNvZGUuCisjIFRvIGV4ZWN1dGUsIGludm9rZTogJ3B5dGhv
biBydW5fdGVzdHMucHknCisKK2ltcG9ydCBvcworaW1wb3J0IG9zLnBhdGgKK2ltcG9ydCBzdWJw
cm9jZXNzCitpbXBvcnQgc3lzCitpbXBvcnQgdGVtcGZpbGUKK2Zyb20gd2Via2l0cHkuY29tbW9u
LmNoZWNrb3V0IGltcG9ydCBzY20KKworCitkZWYgZ2VuZXJhdGVGcm9tSURMKGdlbmVyYXRvciwg
aWRsRmlsZSwgb3V0cHV0RGlyKToKKyAgICBjbWQgPSBbJ3BlcmwnLCAnLXcnLAorICAgICAgICAg
ICAnLUlXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMnLAorICAgICAgICAgICAnV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL2dlbmVyYXRlLWJpbmRpbmdzLnBsJywKKyAgICAgICAgICAgIyBpZGwgaW5j
bHVkZSBkaXJlY3RvcmllcyAocGF0aCByZWxhdGl2ZSB0byBnZW5lcmF0ZS1iaW5kaW5ncy5wbCkK
KyAgICAgICAgICAgJy0taW5jbHVkZScsICcuJywKKyAgICAgICAgICAgIyBwbGFjZSBob2xkZXIg
Zm9yIGRlZmluZXMgKGdlbmVyYXRlLWJpbmRpbmdzLnBsIHJlcXVpcmVtZW50KQorICAgICAgICAg
ICAnLS1kZWZpbmVzJywgJ3gnLAorICAgICAgICAgICAnLS1nZW5lcmF0b3InLCBnZW5lcmF0b3Is
CisgICAgICAgICAgICctLW91dHB1dERpcicsIG91dHB1dERpciwKKyAgICAgICAgICAgaWRsRmls
ZV0KKyAgICByZXR1cm4gc3VicHJvY2Vzcy5jYWxsKGNtZCkgPT0gMAorCisKK2RlZiBkZXRlY3RD
aGFuZ2VzKHdvcmtEaXIsIHJlZmVyZW5jZURpcik6CisgICAgY2hhbmdlc0ZvdW5kID0gRmFsc2UK
KyAgICBmb3Igb3V0cHV0RmlsZSBpbiBvcy5saXN0ZGlyKHdvcmtEaXIpOgorICAgICAgICBwcmlu
dCAnRGV0ZWN0aW5nIGNoYW5nZXMgaW4gJXMuLi4nICUgb3V0cHV0RmlsZQorICAgICAgICBjbWQg
PSBbJ2RpZmYnLAorICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKHJlZmVyZW5jZURpciwgb3V0
cHV0RmlsZSksCisgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4od29ya0Rpciwgb3V0cHV0Rmls
ZSldCisgICAgICAgIGlmIHN1YnByb2Nlc3MuY2FsbChjbWQpICE9IDA6CisgICAgICAgICAgICBw
cmludCAnRGV0ZWN0ZWQgY2hhbmdlcyBpbiAlcyAoc2VlIGFib3ZlKScgJSBvdXRwdXRGaWxlCisg
ICAgICAgICAgICBjaGFuZ2VzRm91bmQgPSBUcnVlCisgICAgICAgIGVsc2U6CisgICAgICAgICAg
ICBwcmludCAnTm8gY2hhbmdlcyBmb3VuZC4nCisKKyAgICByZXR1cm4gY2hhbmdlc0ZvdW5kCisK
KworZGVmIHJ1blRlc3RzKGdlbmVyYXRvciwgaW5wdXREaXIsIHJlZmVyZW5jZURpciwgb3Zlcndy
aXRlKToKKyAgICB3b3JrRGlyID0gcmVmZXJlbmNlRGlyCisKKyAgICBwYXNzZWQgPSBUcnVlCisg
ICAgZm9yIGlucHV0RmlsZSBpbiBvcy5saXN0ZGlyKGlucHV0RGlyKToKKyAgICAgICAgKG5hbWUs
IGV4dCkgPSBvcy5wYXRoLnNwbGl0ZXh0KGlucHV0RmlsZSkKKyAgICAgICAgaWYgZXh0ICE9ICcu
aWRsJzoKKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIHByaW50ICdUZXN0aW5nIHRoZSAl
cyBnZW5lcmF0b3Igb24gJXMnICUgKGdlbmVyYXRvciwgaW5wdXRGaWxlKQorICAgICAgICAjIEdl
bmVyYXRlIG91dHB1dCBpbnRvIHRoZSB3b3JrIGRpcmVjdG9yeSAoZWl0aGVyIHRoZSBnaXZlbiBv
bmUgb3IgYSAKKyAgICAgICAgIyB0ZW1wIG9uZSBpZiBub3Qgb3ZlcndyaXRlIGlzIHBlcmZvcm1l
ZCkKKyAgICAgICAgaWYgbm90IG92ZXJ3cml0ZToKKyAgICAgICAgICAgIHdvcmtEaXIgPSB0ZW1w
ZmlsZS5ta2R0ZW1wKCkKKyAgICAgICAgaWYgbm90IGdlbmVyYXRlRnJvbUlETChnZW5lcmF0b3Is
IG9zLnBhdGguam9pbihpbnB1dERpciwgaW5wdXRGaWxlKSwgd29ya0Rpcik6CisgICAgICAgICAg
ICBwYXNzZWQgPSBGYWxzZQorICAgICAgICBpZiBvdmVyd3JpdGU6CisgICAgICAgICAgICBwcmlu
dCAiT3Zlcndyb3RlIHJlZmVyZW5jZSBmaWxlcyIKKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAg
ICAgICMgRGV0ZWN0IGNoYW5nZXMKKyAgICAgICAgaWYgZGV0ZWN0Q2hhbmdlcyh3b3JrRGlyLCBy
ZWZlcmVuY2VEaXIpOgorICAgICAgICAgICAgcGFzc2VkID0gRmFsc2UKKworICAgIGlmIG5vdCBw
YXNzZWQ6CisgICAgICAgIHByaW50ICclcyBnZW5lcmF0b3IgZmFpbGVkLicgJSBnZW5lcmF0b3IK
KyAgICByZXR1cm4gcGFzc2VkCisKKworZGVmIG1haW4oYXJndik6CisgICAgIiIiUnVucyBXZWJD
b3JlIGJpbmRpbmdzIGNvZGUgZ2VuZXJhdG9ycyBvbiB0ZXN0IElETCBmaWxlcyBhbmQgY29tcGFy
ZXMgCisgICAgdGhlIHJlc3VsdHMgd2l0aCByZWZlcmVuY2UgZmlsZXMuCisKKyAgICBPcHRpb25z
OgorICAgICAgICAtLW92ZXJ3cml0ZTogT3ZlcndyaXRlcyB0aGUgcmVmZXJlbmNlIGZpbGVzIHdp
dGggdGhlIGdlbmVyYXRlZCByZXN1bHRzLgorCisgICAgIiIiCisgICAgb3ZlcndyaXRlID0gIi0t
b3ZlcndyaXRlIiBpbiBhcmd2CisKKyAgICBzY21TeXN0ZW0gPSBzY20uZGV0ZWN0X3NjbV9zeXN0
ZW0ob3MuY3VyZGlyKQorICAgIHByaW50IHNjbVN5c3RlbQorCisgICAgb3MuY2hkaXIoc2NtU3lz
dGVtLmNoZWNrb3V0X3Jvb3QpCisKKyAgICBhbGxUZXN0c1Bhc3NlZCA9IFRydWUKKyAgICBpZiBu
b3QgcnVuVGVzdHMoJ1Y4JywKKyAgICAgICAgb3MucGF0aC5qb2luKCdXZWJDb3JlJywgJ2JpbmRp
bmdzJywgJ3Y4JywgJ3Rlc3QnKSwgIyBJbnB1dCBkaXIKKyAgICAgICAgb3MucGF0aC5qb2luKCdX
ZWJDb3JlJywgJ2JpbmRpbmdzJywgJ3Y4JywgJ3Rlc3QnKSwgIyBSZWZlcmVuY2UgZGlyCisgICAg
ICAgIG92ZXJ3cml0ZSk6CisgICAgICAgIGFsbFRlc3RzUGFzc2VkID0gRmFsc2UKKworICAgICMg
RklYTUU6IEFkZCB0ZXN0cyBmb3IgSlNDLCBPYmpDCisKKyAgICBpZiBhbGxUZXN0c1Bhc3NlZDoK
KyAgICAgICAgcHJpbnQgJ0FsbCB0ZXN0cyBwYXNzZWQhJworICAgICAgICByZXR1cm4gMAorICAg
IGVsc2U6CisgICAgICAgIHByaW50ICcoVG8gdXBkYXRlIHRoZSByZWZlcmVuY2UgZmlsZXMsIGV4
ZWN1dGUgInJ1bi1iaW5kaW5ncy10ZXN0IC0tb3ZlcndyaXRlIiknCisgICAgICAgIHJldHVybiAt
MQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgc3lzLmV4aXQobWFpbihzeXMu
YXJndikpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>