<?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>63528</bug_id>
          
          <creation_ts>2011-06-28 05:15:48 -0700</creation_ts>
          <short_desc>Complete functions in filesystem.py</short_desc>
          <delta_ts>2011-07-10 19:36:41 -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>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P3</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>63514</dependson>
          <blocked>63527</blocked>
    
    <blocked>61773</blocked>
    
    <blocked>64149</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Roland Steiner">rolandsteiner</reporter>
          <assigned_to name="Roland Steiner">rolandsteiner</assigned_to>
          <cc>dpranke</cc>
    
    <cc>tony</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>428808</commentid>
    <comment_count>0</comment_count>
    <who name="Roland Steiner">rolandsteiner</who>
    <bug_when>2011-06-28 05:15:48 -0700</bug_when>
    <thetext>E.g., there exists a function open_text_file_for_writing(), but not the corresponding open_text_file_for_reading().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>428813</commentid>
    <comment_count>1</comment_count>
      <attachid>98902</attachid>
    <who name="Roland Steiner">rolandsteiner</who>
    <bug_when>2011-06-28 05:26:14 -0700</bug_when>
    <thetext>Created attachment 98902
Patch

Patch probably also needs some new tests, but &apos;testing the waters&apos; first... ;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>429321</commentid>
    <comment_count>2</comment_count>
    <who name="Roland Steiner">rolandsteiner</who>
    <bug_when>2011-06-28 18:00:37 -0700</bug_when>
    <thetext>I should add that this is largely similar to the patch in https://bugs.webkit.org/show_bug.cgi?id=63419 , except without the &apos;encoding&apos; parameters, plus a bit more polishing.

The main reason for this patch is to provide functions needed in https://bugs.webkit.org/show_bug.cgi?id=63527 .</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>430530</commentid>
    <comment_count>3</comment_count>
      <attachid>98902</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-06-30 10:35:06 -0700</bug_when>
    <thetext>Comment on attachment 98902
Patch

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

&gt; Tools/Scripts/webkitpy/common/system/filesystem.py:232
&gt; +    def open_text_file_for_appending(self, path):
&gt; +        &quot;&quot;&quot;Returns a file handle suitable for appending to.&quot;&quot;&quot;
&gt; +        return codecs.open(path, &apos;a&apos;, &apos;utf8&apos;)

Do you need all these methods?  I think we should only add the functions you need.

&gt; Tools/Scripts/webkitpy/common/system/filesystem_mock.py:340
&gt; +    def __init__(self, fs, path):
&gt; +        WritableBinaryFileObject.__init__(self, fs, path)

I believe this will be done implicitly even if you don&apos;t declare __init__ here.

&gt; Tools/Scripts/webkitpy/common/system/filesystem_mock.py:373
&gt; +    def __init__(self, fs, path):
&gt; +        ReadableBinaryFileObject.__init__(self, fs, path)

This too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>430919</commentid>
    <comment_count>4</comment_count>
    <who name="Roland Steiner">rolandsteiner</who>
    <bug_when>2011-06-30 18:27:37 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Do you need all these methods?  I think we should only add the functions you need.

Good question ;) I won&apos;t be needing the &apos;append&apos; functions, but otherwise I can&apos;t say yet (have to work my way through the rest of the project files first). OTOH I felt it&apos;s nice to have a complete set without having to extend it in the future.

I guess I&apos;ll leave this as a &quot;work-in-progress&quot; patch and update it once I can narrow it down.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>431228</commentid>
    <comment_count>5</comment_count>
      <attachid>98902</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-07-01 09:51:41 -0700</bug_when>
    <thetext>Comment on attachment 98902
Patch

Sounds good to me.  I&apos;m going to remove the r? flag to get it out of the review queue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>433239</commentid>
    <comment_count>6</comment_count>
      <attachid>99927</attachid>
    <who name="Roland Steiner">rolandsteiner</who>
    <bug_when>2011-07-06 21:28:23 -0700</bug_when>
    <thetext>Created attachment 99927
patch, reduced

Somewhat reduced patch, removed binary file functions that I probably won&apos;t be using</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>433260</commentid>
    <comment_count>7</comment_count>
      <attachid>99935</attachid>
    <who name="Roland Steiner">rolandsteiner</who>
    <bug_when>2011-07-06 22:16:27 -0700</bug_when>
    <thetext>Created attachment 99935
patch, reduced

Forgot to include unit test in last patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>433522</commentid>
    <comment_count>8</comment_count>
      <attachid>99935</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-07-07 09:43:32 -0700</bug_when>
    <thetext>Comment on attachment 99935
patch, reduced

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

Mostly just some style nits.

&gt; Tools/Scripts/webkitpy/common/system/filesystem_mock.py:-317
&gt; -        if path not in self.fs.files or not append:

Why is the check for &apos;path not in self.fs.files&apos; no longer needed?

&gt; Tools/Scripts/webkitpy/common/system/filesystem_mock.py:340
&gt; +    def __init__(self, fs, path):
&gt; +        WritableBinaryFileObject.__init__(self, fs, path)

Nit: I don&apos;t think we need this, it&apos;s called implicitly.

&gt; Tools/Scripts/webkitpy/common/system/filesystem_unittest.py:149
&gt; +        unicode_text_string = u&apos;ÅªnÄ­cÅdeÌ½&apos;

It might be safer to have this be unicode escaped (e.g., u&apos;\uXXXX\uXXXX&apos;) rather than trying to inline directly.  I think we expect all our python files to be utf8.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>433570</commentid>
    <comment_count>9</comment_count>
      <attachid>99935</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-07-07 10:21:00 -0700</bug_when>
    <thetext>Comment on attachment 99935
patch, reduced

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

&gt;&gt; Tools/Scripts/webkitpy/common/system/filesystem_mock.py:-317
&gt;&gt; -        if path not in self.fs.files or not append:
&gt; 
&gt; Why is the check for &apos;path not in self.fs.files&apos; no longer needed?

I think the &apos;path not in self.fs.files&apos; part was just wrong and should never have been there. When it was there, if the file already existed (and had content), that content would&apos;ve been preserved, which I think is probably the wrong thing to do in most if not all cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>433872</commentid>
    <comment_count>10</comment_count>
      <attachid>100067</attachid>
    <who name="Roland Steiner">rolandsteiner</who>
    <bug_when>2011-07-07 19:33:37 -0700</bug_when>
    <thetext>Created attachment 100067
Patch

Escaped Unicode strings, using super() for initialization.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>433875</commentid>
    <comment_count>11</comment_count>
    <who name="Roland Steiner">rolandsteiner</who>
    <bug_when>2011-07-07 19:41:50 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; &gt; Tools/Scripts/webkitpy/common/system/filesystem_mock.py:-317
&gt; &gt; -        if path not in self.fs.files or not append:
&gt; 
&gt; Why is the check for &apos;path not in self.fs.files&apos; no longer needed?

AFAICT that was to make sure not to clobber the file contents if &apos;append&apos; was True. Without the appending case we can always clobber the file contents. And &apos;append&apos; never was True anyways...
 
&gt; &gt; Tools/Scripts/webkitpy/common/system/filesystem_mock.py:340
&gt; &gt; +    def __init__(self, fs, path):
&gt; &gt; +        WritableBinaryFileObject.__init__(self, fs, path)
&gt; 
&gt; Nit: I don&apos;t think we need this, it&apos;s called implicitly.

I personally hate having to go hunting for constructor parameters in super-classes, so I would prefer if I could leave it in. Changed the call to use super() in the new patch, though, which should be a bit more idiosyncratic.

&gt; &gt; Tools/Scripts/webkitpy/common/system/filesystem_unittest.py:149
&gt; &gt; +        unicode_text_string = u&apos;ÅªnÄ­cÅdeÌ½&apos;
&gt; 
&gt; It might be safer to have this be unicode escaped (e.g., u&apos;\uXXXX\uXXXX&apos;) rather than trying to inline directly.  I think we expect all our python files to be utf8.

Heh, who says it wasn&apos;t? ;) But I do agree - escaped the string and the original where I copied it from in the new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>434113</commentid>
    <comment_count>12</comment_count>
      <attachid>100067</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-07-08 09:55:39 -0700</bug_when>
    <thetext>Comment on attachment 100067
Patch

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

&gt; Tools/Scripts/webkitpy/common/system/filesystem_mock.py:341
&gt; +    def __init__(self, fs, path):
&gt; +        super(WritableTextFileObject, self).__init__(fs, path)

I think super is worse :)  If you insist on having __init__, let&apos;s change this back to WritableTextFileObject.__init__(self, fs, path).

I don&apos;t like the pass through constructors because if you add a param to the base class, you have to find and fix all the subclasses.  It&apos;s easy to miss some because it&apos;s not a compile error.  But calling .__init__ explicitly is OK too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>434642</commentid>
    <comment_count>13</comment_count>
    <who name="Roland Steiner">rolandsteiner</who>
    <bug_when>2011-07-10 19:00:18 -0700</bug_when>
    <thetext>Committed r90702: &lt;http://trac.webkit.org/changeset/90702&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>434644</commentid>
    <comment_count>14</comment_count>
    <who name="Roland Steiner">rolandsteiner</who>
    <bug_when>2011-07-10 19:02:17 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; I think super is worse :)  If you insist on having __init__, let&apos;s change this back to WritableTextFileObject.__init__(self, fs, path).
&gt; 
&gt; I don&apos;t like the pass through constructors because if you add a param to the base class, you have to find and fix all the subclasses.  It&apos;s easy to miss some because it&apos;s not a compile error.  But calling .__init__ explicitly is OK too.

I&apos;m not that set on either form, so I just removed it upon commit ;).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>434653</commentid>
    <comment_count>15</comment_count>
      <attachid>100067</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-07-10 19:36:41 -0700</bug_when>
    <thetext>Comment on attachment 100067
Patch

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

&gt;&gt; Tools/Scripts/webkitpy/common/system/filesystem_mock.py:341
&gt;&gt; +        super(WritableTextFileObject, self).__init__(fs, path)
&gt; 
&gt; I think super is worse :)  If you insist on having __init__, let&apos;s change this back to WritableTextFileObject.__init__(self, fs, path).
&gt; 
&gt; I don&apos;t like the pass through constructors because if you add a param to the base class, you have to find and fix all the subclasses.  It&apos;s easy to miss some because it&apos;s not a compile error.  But calling .__init__ explicitly is OK too.

Or just omit the __init__.  That&apos;s what do usually.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>98902</attachid>
            <date>2011-06-28 05:26:14 -0700</date>
            <delta_ts>2011-07-06 21:28:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-63528-20110628212612.patch</filename>
            <type>text/plain</type>
            <size>8313</size>
            <attacher name="Roland Steiner">rolandsteiner</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODk5MDIKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCBmNThmMDBlMzdjN2VmNGQ4MGY3MTY2YjQxNjczMjZjODIz
YmQzODYzLi4zMWMwMzMwMTY1ZjljODgyODc2ODBkNGI3ZWNmOTJmYjJlNzc1ZTkyIDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTgg
QEAKKzIwMTEtMDYtMjggIFJvbGFuZCBTdGVpbmVyICA8cm9sYW5kc3RlaW5lckBjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ29t
cGxldGUgZnVuY3Rpb25zIGluIGZpbGVzeXN0ZW0ucHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYzNTI4CisKKyAgICAgICAgLSBtaXNzaW5nIGZ1bmN0
aW9ucyBhZGRlZAorICAgICAgICAtIGZ1bmN0aW9ucyBzb3J0ZWQKKyAgICAgICAgLSByZW1vdmVk
ICdhcHBlbmQnIG9wdGlvbmFsIHBhcmFtZXRlcnMsIHJlcGxhY2VkIGJ5IG9wZW5fYmluYXJ5L3Rl
eHRfZmlsZV9mb3JfYXBwZW5kaW5nKCkKKyAgICAgICAgLSBhZGFwdGVkIGZpbGVzeXN0ZW1fbW9j
ayBpbiB0aGUgc2FtZSB3YXkKKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5
c3RlbS9maWxlc3lzdGVtLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5
c3RlbS9maWxlc3lzdGVtX21vY2sucHk6CisKIDIwMTEtMDYtMjcgIEFkYW0gQmFydGggIDxhYmFy
dGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KZGlmZiAt
LWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9maWxlc3lzdGVtLnB5
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2ZpbGVzeXN0ZW0ucHkKaW5k
ZXggZTdjMDY4YTlhZDg0NmI0NmJjZTc1OTQ4OThiY2U3ZDlkOTIzOTRhMS4uNjY1MzFhMDdkOGQ1
YzJkZTQ1NTVmNmY3MGFlNDVmMjEzZWFjNmY5ZCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9jb21tb24vc3lzdGVtL2ZpbGVzeXN0ZW0ucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9jb21tb24vc3lzdGVtL2ZpbGVzeXN0ZW0ucHkKQEAgLTE5NCwyNCArMTk0LDQzIEBA
IGNsYXNzIEZpbGVTeXN0ZW0ob2JqZWN0KToKICAgICBkZWYgb3Blbl9iaW5hcnlfdGVtcGZpbGUo
c2VsZiwgc3VmZml4KToKICAgICAgICAgIiIiQ3JlYXRlLCBvcGVuLCBhbmQgcmV0dXJuIGEgYmlu
YXJ5IHRlbXAgZmlsZS4gUmV0dXJucyBhIHR1cGxlIG9mIHRoZSBmaWxlIGFuZCB0aGUgbmFtZS4i
IiIKICAgICAgICAgdGVtcF9mZCwgdGVtcF9uYW1lID0gdGVtcGZpbGUubWtzdGVtcChzdWZmaXgp
Ci0gICAgICAgIGYgPSBvcy5mZG9wZW4odGVtcF9mZCwgJ3diJykKKyAgICAgICAgZiA9IG9zLmZk
b3Blbih0ZW1wX2ZkLCAndytiJykKICAgICAgICAgcmV0dXJuIGYsIHRlbXBfbmFtZQogCi0gICAg
ZGVmIG9wZW5fdGV4dF9maWxlX2Zvcl93cml0aW5nKHNlbGYsIHBhdGgsIGFwcGVuZD1GYWxzZSk6
Ci0gICAgICAgICIiIlJldHVybnMgYSBmaWxlIGhhbmRsZSBzdWl0YWJsZSBmb3Igd3JpdGluZyB0
by4iIiIKLSAgICAgICAgbW9kZSA9ICd3JwotICAgICAgICBpZiBhcHBlbmQ6Ci0gICAgICAgICAg
ICBtb2RlID0gJ2EnCi0gICAgICAgIHJldHVybiBjb2RlY3Mub3BlbihwYXRoLCBtb2RlLCAndXRm
OCcpCi0KICAgICBkZWYgb3Blbl9iaW5hcnlfZmlsZV9mb3JfcmVhZGluZyhzZWxmLCBwYXRoKToK
KyAgICAgICAgIiIiUmV0dXJucyBhIGZpbGUgaGFuZGxlIHN1aXRhYmxlIGZvciByZWFkaW5nIGZy
b20uIiIiCiAgICAgICAgIHJldHVybiBjb2RlY3Mub3BlbihwYXRoLCAncmInKQogCisgICAgZGVm
IG9wZW5fYmluYXJ5X2ZpbGVfZm9yX3dyaXRpbmcoc2VsZiwgcGF0aCk6CisgICAgICAgICIiIlJl
dHVybnMgYSBmaWxlIGhhbmRsZSBzdWl0YWJsZSBmb3Igd3JpdGluZyB0by4iIiIKKyAgICAgICAg
cmV0dXJuIGNvZGVjcy5vcGVuKHBhdGgsICd3YicpCisKKyAgICBkZWYgb3Blbl9iaW5hcnlfZmls
ZV9mb3JfYXBwZW5kaW5nKHNlbGYsIHBhdGgpOgorICAgICAgICAiIiJSZXR1cm5zIGEgZmlsZSBo
YW5kbGUgc3VpdGFibGUgZm9yIGFwcGVuZGluZyB0by4iIiIKKyAgICAgICAgcmV0dXJuIGNvZGVj
cy5vcGVuKHBhdGgsICdhYicpCisKICAgICBkZWYgcmVhZF9iaW5hcnlfZmlsZShzZWxmLCBwYXRo
KToKICAgICAgICAgIiIiUmV0dXJuIHRoZSBjb250ZW50cyBvZiB0aGUgZmlsZSBhdCB0aGUgZ2l2
ZW4gcGF0aCBhcyBhIGJ5dGUgc3RyaW5nLiIiIgogICAgICAgICB3aXRoIGZpbGUocGF0aCwgJ3Ji
JykgYXMgZjoKICAgICAgICAgICAgIHJldHVybiBmLnJlYWQoKQogCisgICAgZGVmIHdyaXRlX2Jp
bmFyeV9maWxlKHNlbGYsIHBhdGgsIGNvbnRlbnRzKToKKyAgICAgICAgIiIiV3JpdGUgdGhlIGNv
bnRlbnRzIHRvIHRoZSBmaWxlIGF0IHRoZSBnaXZlbiBsb2NhdGlvbi4iIiIKKyAgICAgICAgd2l0
aCBmaWxlKHBhdGgsICd3YicpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKGNvbnRlbnRzKQor
CisgICAgZGVmIG9wZW5fdGV4dF9maWxlX2Zvcl9yZWFkaW5nKHNlbGYsIHBhdGgpOgorICAgICAg
ICAiIiJSZXR1cm5zIGEgZmlsZSBoYW5kbGUgc3VpdGFibGUgZm9yIHJlYWRpbmcgZnJvbS4iIiIK
KyAgICAgICAgcmV0dXJuIGNvZGVjcy5vcGVuKHBhdGgsICdyJywgJ3V0ZjgnKQorCisgICAgZGVm
IG9wZW5fdGV4dF9maWxlX2Zvcl93cml0aW5nKHNlbGYsIHBhdGgpOgorICAgICAgICAiIiJSZXR1
cm5zIGEgZmlsZSBoYW5kbGUgc3VpdGFibGUgZm9yIHdyaXRpbmcgdG8uIiIiCisgICAgICAgIHJl
dHVybiBjb2RlY3Mub3BlbihwYXRoLCAndycsICd1dGY4JykKKworICAgIGRlZiBvcGVuX3RleHRf
ZmlsZV9mb3JfYXBwZW5kaW5nKHNlbGYsIHBhdGgpOgorICAgICAgICAiIiJSZXR1cm5zIGEgZmls
ZSBoYW5kbGUgc3VpdGFibGUgZm9yIGFwcGVuZGluZyB0by4iIiIKKyAgICAgICAgcmV0dXJuIGNv
ZGVjcy5vcGVuKHBhdGgsICdhJywgJ3V0ZjgnKQorCiAgICAgZGVmIHJlYWRfdGV4dF9maWxlKHNl
bGYsIHBhdGgpOgogICAgICAgICAiIiJSZXR1cm4gdGhlIGNvbnRlbnRzIG9mIHRoZSBmaWxlIGF0
IHRoZSBnaXZlbiBwYXRoIGFzIGEgVW5pY29kZSBzdHJpbmcuCiAKQEAgLTIxOSw2ICsyMzgsMTMg
QEAgY2xhc3MgRmlsZVN5c3RlbShvYmplY3QpOgogICAgICAgICB3aXRoIGNvZGVjcy5vcGVuKHBh
dGgsICdyJywgJ3V0ZjgnKSBhcyBmOgogICAgICAgICAgICAgcmV0dXJuIGYucmVhZCgpCiAKKyAg
ICBkZWYgd3JpdGVfdGV4dF9maWxlKHNlbGYsIHBhdGgsIGNvbnRlbnRzKToKKyAgICAgICAgIiIi
V3JpdGUgdGhlIGNvbnRlbnRzIHRvIHRoZSBmaWxlIGF0IHRoZSBnaXZlbiBsb2NhdGlvbi4KKwor
ICAgICAgICBUaGUgZmlsZSBpcyB3cml0dGVuIGVuY29kZWQgYXMgVVRGLTggd2l0aCBubyBCT00u
IiIiCisgICAgICAgIHdpdGggY29kZWNzLm9wZW4ocGF0aCwgJ3cnLCAndXRmOCcpIGFzIGY6Cisg
ICAgICAgICAgICBmLndyaXRlKGNvbnRlbnRzKQorCiAgICAgZGVmIHJlbHBhdGgoc2VsZiwgcGF0
aCwgc3RhcnQ9Jy4nKToKICAgICAgICAgcmV0dXJuIG9zcGF0aC5yZWxwYXRoKHBhdGgsIHN0YXJ0
KQogCkBAIC0yNzEsMTUgKzI5NywzIEBAIGNsYXNzIEZpbGVTeXN0ZW0ob2JqZWN0KToKICAgICBk
ZWYgc3BsaXRleHQoc2VsZiwgcGF0aCk6CiAgICAgICAgICIiIlJldHVybiAoZGlybmFtZSArIG9z
LnNlcCArIGJhc2VuYW1lLCAnLicgKyBleHQpIiIiCiAgICAgICAgIHJldHVybiBvcy5wYXRoLnNw
bGl0ZXh0KHBhdGgpCi0KLSAgICBkZWYgd3JpdGVfYmluYXJ5X2ZpbGUoc2VsZiwgcGF0aCwgY29u
dGVudHMpOgotICAgICAgICAiIiJXcml0ZSB0aGUgY29udGVudHMgdG8gdGhlIGZpbGUgYXQgdGhl
IGdpdmVuIGxvY2F0aW9uLiIiIgotICAgICAgICB3aXRoIGZpbGUocGF0aCwgJ3diJykgYXMgZjoK
LSAgICAgICAgICAgIGYud3JpdGUoY29udGVudHMpCi0KLSAgICBkZWYgd3JpdGVfdGV4dF9maWxl
KHNlbGYsIHBhdGgsIGNvbnRlbnRzKToKLSAgICAgICAgIiIiV3JpdGUgdGhlIGNvbnRlbnRzIHRv
IHRoZSBmaWxlIGF0IHRoZSBnaXZlbiBsb2NhdGlvbi4KLQotICAgICAgICBUaGUgZmlsZSBpcyB3
cml0dGVuIGVuY29kZWQgYXMgVVRGLTggd2l0aCBubyBCT00uIiIiCi0gICAgICAgIHdpdGggY29k
ZWNzLm9wZW4ocGF0aCwgJ3cnLCAndXRmOCcpIGFzIGY6Ci0gICAgICAgICAgICBmLndyaXRlKGNv
bnRlbnRzKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVt
L2ZpbGVzeXN0ZW1fbW9jay5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3Rl
bS9maWxlc3lzdGVtX21vY2sucHkKaW5kZXggMjA0NDY4ZjVkNzViZmEwN2YyNDRhNTMyYjYyYmZk
YTRhMTRmOTgyZS4uY2E0ZjEzNGVkNjcxODU5NGY0YmVmOGU1NGU1M2YwMWQ2YThmNmUxZCAxMDA2
NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2ZpbGVzeXN0ZW1f
bW9jay5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZmlsZXN5
c3RlbV9tb2NrLnB5CkBAIC0yNDcsMTggKzI0NywxNSBAQCBjbGFzcyBNb2NrRmlsZVN5c3RlbShv
YmplY3QpOgogCiAgICAgZGVmIG9wZW5fYmluYXJ5X3RlbXBmaWxlKHNlbGYsIHN1ZmZpeD0nJyk6
CiAgICAgICAgIHBhdGggPSBzZWxmLl9ta3RlbXAoc3VmZml4KQotICAgICAgICByZXR1cm4gKFdy
aXRhYmxlRmlsZU9iamVjdChzZWxmLCBwYXRoKSwgcGF0aCkKLQotICAgIGRlZiBvcGVuX3RleHRf
ZmlsZV9mb3Jfd3JpdGluZyhzZWxmLCBwYXRoLCBhcHBlbmQ9RmFsc2UpOgotICAgICAgICByZXR1
cm4gV3JpdGFibGVGaWxlT2JqZWN0KHNlbGYsIHBhdGgsIGFwcGVuZCkKLQotICAgIGRlZiByZWFk
X3RleHRfZmlsZShzZWxmLCBwYXRoKToKLSAgICAgICAgcmV0dXJuIHNlbGYucmVhZF9iaW5hcnlf
ZmlsZShwYXRoKS5kZWNvZGUoJ3V0Zi04JykKKyAgICAgICAgcmV0dXJuIChXcml0YWJsZUJpbmFy
eUZpbGVPYmplY3Qoc2VsZiwgcGF0aCksIHBhdGgpCiAKICAgICBkZWYgb3Blbl9iaW5hcnlfZmls
ZV9mb3JfcmVhZGluZyhzZWxmLCBwYXRoKToKICAgICAgICAgaWYgc2VsZi5maWxlc1twYXRoXSBp
cyBOb25lOgogICAgICAgICAgICAgc2VsZi5fcmFpc2Vfbm90X2ZvdW5kKHBhdGgpCi0gICAgICAg
IHJldHVybiBSZWFkYWJsZUZpbGVPYmplY3Qoc2VsZiwgcGF0aCwgc2VsZi5maWxlc1twYXRoXSkK
KyAgICAgICAgcmV0dXJuIFJlYWRhYmxlQmluYXJ5RmlsZU9iamVjdChzZWxmLCBwYXRoLCBzZWxm
LmZpbGVzW3BhdGhdKQorCisgICAgZGVmIG9wZW5fYmluYXJ5X2ZpbGVfZm9yX3dyaXRpbmcoc2Vs
ZiwgcGF0aCk6CisgICAgICAgIHJldHVybiBXcml0YWJsZUJpbmFyeUZpbGVPYmplY3Qoc2VsZiwg
cGF0aCwgc2VsZi5maWxlc1twYXRoXSkKIAogICAgIGRlZiByZWFkX2JpbmFyeV9maWxlKHNlbGYs
IHBhdGgpOgogICAgICAgICAjIEludGVudGlvbmFsbHkgcmFpc2VzIEtleUVycm9yIGlmIHdlIGRv
bid0IHJlY29nbml6ZSB0aGUgcGF0aC4KQEAgLTI2Niw2ICsyNjMsMjQgQEAgY2xhc3MgTW9ja0Zp
bGVTeXN0ZW0ob2JqZWN0KToKICAgICAgICAgICAgIHNlbGYuX3JhaXNlX25vdF9mb3VuZChwYXRo
KQogICAgICAgICByZXR1cm4gc2VsZi5maWxlc1twYXRoXQogCisgICAgZGVmIHdyaXRlX2JpbmFy
eV9maWxlKHNlbGYsIHBhdGgsIGNvbnRlbnRzKToKKyAgICAgICAgc2VsZi5maWxlc1twYXRoXSA9
IGNvbnRlbnRzCisgICAgICAgIHNlbGYud3JpdHRlbl9maWxlc1twYXRoXSA9IGNvbnRlbnRzCisK
KyAgICBkZWYgb3Blbl90ZXh0X2ZpbGVfZm9yX3JlYWRpbmcoc2VsZiwgcGF0aCk6CisgICAgICAg
IGlmIHNlbGYuZmlsZXNbcGF0aF0gaXMgTm9uZToKKyAgICAgICAgICAgIHNlbGYuX3JhaXNlX25v
dF9mb3VuZChwYXRoKQorICAgICAgICByZXR1cm4gUmVhZGFibGVUZXh0RmlsZU9iamVjdChzZWxm
LCBwYXRoKQorCisgICAgZGVmIG9wZW5fdGV4dF9maWxlX2Zvcl93cml0aW5nKHNlbGYsIHBhdGgp
OgorICAgICAgICByZXR1cm4gV3JpdGFibGVUZXh0RmlsZU9iamVjdChzZWxmLCBwYXRoKQorCisg
ICAgZGVmIHJlYWRfdGV4dF9maWxlKHNlbGYsIHBhdGgpOgorICAgICAgICByZXR1cm4gc2VsZi5y
ZWFkX2JpbmFyeV9maWxlKHBhdGgpLmRlY29kZSgndXRmLTgnKQorCisgICAgZGVmIHdyaXRlX3Rl
eHRfZmlsZShzZWxmLCBwYXRoLCBjb250ZW50cyk6CisgICAgICAgIHJldHVybiBzZWxmLndyaXRl
X2JpbmFyeV9maWxlKHBhdGgsIGNvbnRlbnRzLmVuY29kZSgndXRmLTgnKSkKKwogICAgIGRlZiBy
ZWxwYXRoKHNlbGYsIHBhdGgsIHN0YXJ0PScuJyk6CiAgICAgICAgIHJldHVybiBvc3BhdGgucmVs
cGF0aChwYXRoLCBzdGFydCwgc2VsZi5hYnNwYXRoLCBzZWxmLnNlcCkKIApAQCAtMjk4LDIxICsz
MTMsMTMgQEAgY2xhc3MgTW9ja0ZpbGVTeXN0ZW0ob2JqZWN0KToKICAgICAgICAgICAgIGlkeCA9
IDAKICAgICAgICAgcmV0dXJuIChwYXRoWzA6aWR4XSwgcGF0aFtpZHg6XSkKIAotICAgIGRlZiB3
cml0ZV90ZXh0X2ZpbGUoc2VsZiwgcGF0aCwgY29udGVudHMpOgotICAgICAgICByZXR1cm4gc2Vs
Zi53cml0ZV9iaW5hcnlfZmlsZShwYXRoLCBjb250ZW50cy5lbmNvZGUoJ3V0Zi04JykpCi0KLSAg
ICBkZWYgd3JpdGVfYmluYXJ5X2ZpbGUoc2VsZiwgcGF0aCwgY29udGVudHMpOgotICAgICAgICBz
ZWxmLmZpbGVzW3BhdGhdID0gY29udGVudHMKLSAgICAgICAgc2VsZi53cml0dGVuX2ZpbGVzW3Bh
dGhdID0gY29udGVudHMKLQogCi1jbGFzcyBXcml0YWJsZUZpbGVPYmplY3Qob2JqZWN0KToKLSAg
ICBkZWYgX19pbml0X18oc2VsZiwgZnMsIHBhdGgsIGFwcGVuZD1GYWxzZSwgZW5jb2Rpbmc9Tm9u
ZSk6CitjbGFzcyBXcml0YWJsZUJpbmFyeUZpbGVPYmplY3Qob2JqZWN0KToKKyAgICBkZWYgX19p
bml0X18oc2VsZiwgZnMsIHBhdGgpOgogICAgICAgICBzZWxmLmZzID0gZnMKICAgICAgICAgc2Vs
Zi5wYXRoID0gcGF0aAogICAgICAgICBzZWxmLmNsb3NlZCA9IEZhbHNlCi0gICAgICAgIGlmIHBh
dGggbm90IGluIHNlbGYuZnMuZmlsZXMgb3Igbm90IGFwcGVuZDoKLSAgICAgICAgICAgIHNlbGYu
ZnMuZmlsZXNbcGF0aF0gPSAiIgorICAgICAgICBzZWxmLmZzLmZpbGVzW3BhdGhdID0gIiIKIAog
ICAgIGRlZiBfX2VudGVyX18oc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmCkBAIC0zMjgsNyAr
MzM1LDE1IEBAIGNsYXNzIFdyaXRhYmxlRmlsZU9iamVjdChvYmplY3QpOgogICAgICAgICBzZWxm
LmZzLndyaXR0ZW5fZmlsZXNbc2VsZi5wYXRoXSA9IHNlbGYuZnMuZmlsZXNbc2VsZi5wYXRoXQog
CiAKLWNsYXNzIFJlYWRhYmxlRmlsZU9iamVjdChvYmplY3QpOgorY2xhc3MgV3JpdGFibGVUZXh0
RmlsZU9iamVjdChXcml0YWJsZUJpbmFyeUZpbGVPYmplY3QpOgorICAgIGRlZiBfX2luaXRfXyhz
ZWxmLCBmcywgcGF0aCk6CisgICAgICAgIFdyaXRhYmxlQmluYXJ5RmlsZU9iamVjdC5fX2luaXRf
XyhzZWxmLCBmcywgcGF0aCkKKworICAgIGRlZiB3cml0ZShzZWxmLCBzdHIpOgorICAgICAgICBX
cml0YWJsZUJpbmFyeUZpbGVPYmplY3Qud3JpdGUoc2VsZiwgc3RyLmVuY29kZSgndXRmLTgnKSkK
KworCitjbGFzcyBSZWFkYWJsZUJpbmFyeUZpbGVPYmplY3Qob2JqZWN0KToKICAgICBkZWYgX19p
bml0X18oc2VsZiwgZnMsIHBhdGgsIGRhdGE9IiIpOgogICAgICAgICBzZWxmLmZzID0gZnMKICAg
ICAgICAgc2VsZi5wYXRoID0gcGF0aApAQCAtMzUxLDMgKzM2NiwxMSBAQCBjbGFzcyBSZWFkYWJs
ZUZpbGVPYmplY3Qob2JqZWN0KToKICAgICAgICAgc3RhcnQgPSBzZWxmLm9mZnNldAogICAgICAg
ICBzZWxmLm9mZnNldCArPSBieXRlcwogICAgICAgICByZXR1cm4gc2VsZi5kYXRhW3N0YXJ0OnNl
bGYub2Zmc2V0XQorCisKK2NsYXNzIFJlYWRhYmxlVGV4dEZpbGVPYmplY3QoUmVhZGFibGVCaW5h
cnlGaWxlT2JqZWN0KToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZnMsIHBhdGgpOgorICAgICAg
ICBSZWFkYWJsZUJpbmFyeUZpbGVPYmplY3QuX19pbml0X18oc2VsZiwgZnMsIHBhdGgpCisKKyAg
ICBkZWYgcmVhZChzZWxmLCBieXRlcz1Ob25lKToKKyAgICAgICAgcmV0dXJuIFJlYWRhYmxlQmlu
YXJ5RmlsZU9iamVjdC5yZWFkKHNlbGYsIGJ5dGVzKS5kZWNvZGUoJ3V0Zi04JykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>99927</attachid>
            <date>2011-07-06 21:28:23 -0700</date>
            <delta_ts>2011-07-06 22:16:19 -0700</delta_ts>
            <desc>patch, reduced</desc>
            <filename>bug-63528-20110707132821.patch</filename>
            <type>text/plain</type>
            <size>7009</size>
            <attacher name="Roland Steiner">rolandsteiner</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTA1MzIKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCAwZjRlYTkyZmE5NjE5MWIyY2IwNzc3YWExMDYyMjg1NTJm
YTkwMTVkLi4zZWRhNTEzNmI2NWY5YjQ3NDk4ODJhMDZjNDM4ZDJjMDI5OTExNWVmIDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTgg
QEAKKzIwMTEtMDYtMjggIFJvbGFuZCBTdGVpbmVyICA8cm9sYW5kc3RlaW5lckBjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ29t
cGxldGUgZnVuY3Rpb25zIGluIGZpbGVzeXN0ZW0ucHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYzNTI4CisKKyAgICAgICAgLSBtaXNzaW5nIHRleHQg
ZmlsZSBmdW5jdGlvbnMgYWRkZWQKKyAgICAgICAgLSBmdW5jdGlvbnMgc29ydGVkCisgICAgICAg
IC0gcmVtb3ZlZCAnYXBwZW5kJyBvcHRpb25hbCBwYXJhbWV0ZXJzICh3ZXJlIHVudXNlZCkKKyAg
ICAgICAgLSBhZGFwdGVkIGZpbGVzeXN0ZW1fbW9jayBpbiB0aGUgc2FtZSB3YXkKKworICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9maWxlc3lzdGVtLnB5OgorICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9maWxlc3lzdGVtX21vY2sucHk6CisK
IDIwMTEtMDctMDYgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBN
b3ZlIG1vZGVsIGNsYXNzZXMgb3V0IG9mIGxheW91dF9wYWNrYWdlIGFuZCBpbnRvIG1vZGVscwpk
aWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2ZpbGVzeXN0
ZW0ucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZmlsZXN5c3RlbS5w
eQppbmRleCBjMTAxZjRkN2IyYmU1ZjA1ZWY3ZWQ2MzYyNmQyMjU3MDgwZWM0ZTdhLi4wYWY2ZWM4
OTE1MjY1ZTQ1YzMzNTBhY2UyNGY2NWUxM2M5NTAyZjUyIDEwMDY0NAotLS0gYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZmlsZXN5c3RlbS5weQorKysgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZmlsZXN5c3RlbS5weQpAQCAtMTkxLDEyICsxOTEs
NiBAQCBjbGFzcyBGaWxlU3lzdGVtKG9iamVjdCk6CiAgICAgICAgIGYgPSBvcy5mZG9wZW4odGVt
cF9mZCwgJ3diJykKICAgICAgICAgcmV0dXJuIGYsIHRlbXBfbmFtZQogCi0gICAgZGVmIG9wZW5f
dGV4dF9maWxlX2Zvcl93cml0aW5nKHNlbGYsIHBhdGgsIGFwcGVuZD1GYWxzZSk6Ci0gICAgICAg
IG1vZGUgPSAndycKLSAgICAgICAgaWYgYXBwZW5kOgotICAgICAgICAgICAgbW9kZSA9ICdhJwot
ICAgICAgICByZXR1cm4gY29kZWNzLm9wZW4ocGF0aCwgbW9kZSwgJ3V0ZjgnKQotCiAgICAgZGVm
IG9wZW5fYmluYXJ5X2ZpbGVfZm9yX3JlYWRpbmcoc2VsZiwgcGF0aCk6CiAgICAgICAgIHJldHVy
biBjb2RlY3Mub3BlbihwYXRoLCAncmInKQogCkBAIC0yMDUsNiArMTk5LDE2IEBAIGNsYXNzIEZp
bGVTeXN0ZW0ob2JqZWN0KToKICAgICAgICAgd2l0aCBmaWxlKHBhdGgsICdyYicpIGFzIGY6CiAg
ICAgICAgICAgICByZXR1cm4gZi5yZWFkKCkKIAorICAgIGRlZiB3cml0ZV9iaW5hcnlfZmlsZShz
ZWxmLCBwYXRoLCBjb250ZW50cyk6CisgICAgICAgIHdpdGggZmlsZShwYXRoLCAnd2InKSBhcyBm
OgorICAgICAgICAgICAgZi53cml0ZShjb250ZW50cykKKworICAgIGRlZiBvcGVuX3RleHRfZmls
ZV9mb3JfcmVhZGluZyhzZWxmLCBwYXRoKToKKyAgICAgICAgcmV0dXJuIGNvZGVjcy5vcGVuKHBh
dGgsICdyJywgJ3V0ZjgnKQorCisgICAgZGVmIG9wZW5fdGV4dF9maWxlX2Zvcl93cml0aW5nKHNl
bGYsIHBhdGgpOgorICAgICAgICByZXR1cm4gY29kZWNzLm9wZW4ocGF0aCwgJ3cnLCAndXRmOCcp
CisKICAgICBkZWYgcmVhZF90ZXh0X2ZpbGUoc2VsZiwgcGF0aCk6CiAgICAgICAgICIiIlJldHVy
biB0aGUgY29udGVudHMgb2YgdGhlIGZpbGUgYXQgdGhlIGdpdmVuIHBhdGggYXMgYSBVbmljb2Rl
IHN0cmluZy4KIApAQCAtMjEyLDYgKzIxNiwxMyBAQCBjbGFzcyBGaWxlU3lzdGVtKG9iamVjdCk6
CiAgICAgICAgIHdpdGggY29kZWNzLm9wZW4ocGF0aCwgJ3InLCAndXRmOCcpIGFzIGY6CiAgICAg
ICAgICAgICByZXR1cm4gZi5yZWFkKCkKIAorICAgIGRlZiB3cml0ZV90ZXh0X2ZpbGUoc2VsZiwg
cGF0aCwgY29udGVudHMpOgorICAgICAgICAiIiJXcml0ZSB0aGUgY29udGVudHMgdG8gdGhlIGZp
bGUgYXQgdGhlIGdpdmVuIGxvY2F0aW9uLgorCisgICAgICAgIFRoZSBmaWxlIGlzIHdyaXR0ZW4g
ZW5jb2RlZCBhcyBVVEYtOCB3aXRoIG5vIEJPTS4iIiIKKyAgICAgICAgd2l0aCBjb2RlY3Mub3Bl
bihwYXRoLCAndycsICd1dGY4JykgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGUoY29udGVudHMp
CisKICAgICBkZWYgcmVscGF0aChzZWxmLCBwYXRoLCBzdGFydD0nLicpOgogICAgICAgICByZXR1
cm4gb3NwYXRoLnJlbHBhdGgocGF0aCwgc3RhcnQpCiAKQEAgLTI1MiwxNCArMjYzLDMgQEAgY2xh
c3MgRmlsZVN5c3RlbShvYmplY3QpOgogICAgIGRlZiBzcGxpdGV4dChzZWxmLCBwYXRoKToKICAg
ICAgICAgIiIiUmV0dXJuIChkaXJuYW1lICsgb3Muc2VwICsgYmFzZW5hbWUsICcuJyArIGV4dCki
IiIKICAgICAgICAgcmV0dXJuIG9zLnBhdGguc3BsaXRleHQocGF0aCkKLQotICAgIGRlZiB3cml0
ZV9iaW5hcnlfZmlsZShzZWxmLCBwYXRoLCBjb250ZW50cyk6Ci0gICAgICAgIHdpdGggZmlsZShw
YXRoLCAnd2InKSBhcyBmOgotICAgICAgICAgICAgZi53cml0ZShjb250ZW50cykKLQotICAgIGRl
ZiB3cml0ZV90ZXh0X2ZpbGUoc2VsZiwgcGF0aCwgY29udGVudHMpOgotICAgICAgICAiIiJXcml0
ZSB0aGUgY29udGVudHMgdG8gdGhlIGZpbGUgYXQgdGhlIGdpdmVuIGxvY2F0aW9uLgotCi0gICAg
ICAgIFRoZSBmaWxlIGlzIHdyaXR0ZW4gZW5jb2RlZCBhcyBVVEYtOCB3aXRoIG5vIEJPTS4iIiIK
LSAgICAgICAgd2l0aCBjb2RlY3Mub3BlbihwYXRoLCAndycsICd1dGY4JykgYXMgZjoKLSAgICAg
ICAgICAgIGYud3JpdGUoY29udGVudHMpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2NvbW1vbi9zeXN0ZW0vZmlsZXN5c3RlbV9tb2NrLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9jb21tb24vc3lzdGVtL2ZpbGVzeXN0ZW1fbW9jay5weQppbmRleCA2ZWI5NThhMTVmNzhm
MTQ3NjFkZGU4Y2IxY2VkZWRhZDFiNzg2MjQ3Li5hOWIxOTM4OTA0MmM1OGYwZmYyNDIwMjVmYjgw
MGNlMjk0N2RhZGU2IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9z
eXN0ZW0vZmlsZXN5c3RlbV9tb2NrLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29t
bW9uL3N5c3RlbS9maWxlc3lzdGVtX21vY2sucHkKQEAgLTI1MCwxOCArMjUwLDEyIEBAIGNsYXNz
IE1vY2tGaWxlU3lzdGVtKG9iamVjdCk6CiAKICAgICBkZWYgb3Blbl9iaW5hcnlfdGVtcGZpbGUo
c2VsZiwgc3VmZml4PScnKToKICAgICAgICAgcGF0aCA9IHNlbGYuX21rdGVtcChzdWZmaXgpCi0g
ICAgICAgIHJldHVybiAoV3JpdGFibGVGaWxlT2JqZWN0KHNlbGYsIHBhdGgpLCBwYXRoKQotCi0g
ICAgZGVmIG9wZW5fdGV4dF9maWxlX2Zvcl93cml0aW5nKHNlbGYsIHBhdGgsIGFwcGVuZD1GYWxz
ZSk6Ci0gICAgICAgIHJldHVybiBXcml0YWJsZUZpbGVPYmplY3Qoc2VsZiwgcGF0aCwgYXBwZW5k
KQotCi0gICAgZGVmIHJlYWRfdGV4dF9maWxlKHNlbGYsIHBhdGgpOgotICAgICAgICByZXR1cm4g
c2VsZi5yZWFkX2JpbmFyeV9maWxlKHBhdGgpLmRlY29kZSgndXRmLTgnKQorICAgICAgICByZXR1
cm4gKFdyaXRhYmxlQmluYXJ5RmlsZU9iamVjdChzZWxmLCBwYXRoKSwgcGF0aCkKIAogICAgIGRl
ZiBvcGVuX2JpbmFyeV9maWxlX2Zvcl9yZWFkaW5nKHNlbGYsIHBhdGgpOgogICAgICAgICBpZiBz
ZWxmLmZpbGVzW3BhdGhdIGlzIE5vbmU6CiAgICAgICAgICAgICBzZWxmLl9yYWlzZV9ub3RfZm91
bmQocGF0aCkKLSAgICAgICAgcmV0dXJuIFJlYWRhYmxlRmlsZU9iamVjdChzZWxmLCBwYXRoLCBz
ZWxmLmZpbGVzW3BhdGhdKQorICAgICAgICByZXR1cm4gUmVhZGFibGVCaW5hcnlGaWxlT2JqZWN0
KHNlbGYsIHBhdGgsIHNlbGYuZmlsZXNbcGF0aF0pCiAKICAgICBkZWYgcmVhZF9iaW5hcnlfZmls
ZShzZWxmLCBwYXRoKToKICAgICAgICAgIyBJbnRlbnRpb25hbGx5IHJhaXNlcyBLZXlFcnJvciBp
ZiB3ZSBkb24ndCByZWNvZ25pemUgdGhlIHBhdGguCkBAIC0yNjksNiArMjYzLDI0IEBAIGNsYXNz
IE1vY2tGaWxlU3lzdGVtKG9iamVjdCk6CiAgICAgICAgICAgICBzZWxmLl9yYWlzZV9ub3RfZm91
bmQocGF0aCkKICAgICAgICAgcmV0dXJuIHNlbGYuZmlsZXNbcGF0aF0KIAorICAgIGRlZiB3cml0
ZV9iaW5hcnlfZmlsZShzZWxmLCBwYXRoLCBjb250ZW50cyk6CisgICAgICAgIHNlbGYuZmlsZXNb
cGF0aF0gPSBjb250ZW50cworICAgICAgICBzZWxmLndyaXR0ZW5fZmlsZXNbcGF0aF0gPSBjb250
ZW50cworCisgICAgZGVmIG9wZW5fdGV4dF9maWxlX2Zvcl9yZWFkaW5nKHNlbGYsIHBhdGgpOgor
ICAgICAgICBpZiBzZWxmLmZpbGVzW3BhdGhdIGlzIE5vbmU6CisgICAgICAgICAgICBzZWxmLl9y
YWlzZV9ub3RfZm91bmQocGF0aCkKKyAgICAgICAgcmV0dXJuIFJlYWRhYmxlVGV4dEZpbGVPYmpl
Y3Qoc2VsZiwgcGF0aCkKKworICAgIGRlZiBvcGVuX3RleHRfZmlsZV9mb3Jfd3JpdGluZyhzZWxm
LCBwYXRoKToKKyAgICAgICAgcmV0dXJuIFdyaXRhYmxlVGV4dEZpbGVPYmplY3Qoc2VsZiwgcGF0
aCkKKworICAgIGRlZiByZWFkX3RleHRfZmlsZShzZWxmLCBwYXRoKToKKyAgICAgICAgcmV0dXJu
IHNlbGYucmVhZF9iaW5hcnlfZmlsZShwYXRoKS5kZWNvZGUoJ3V0Zi04JykKKworICAgIGRlZiB3
cml0ZV90ZXh0X2ZpbGUoc2VsZiwgcGF0aCwgY29udGVudHMpOgorICAgICAgICByZXR1cm4gc2Vs
Zi53cml0ZV9iaW5hcnlfZmlsZShwYXRoLCBjb250ZW50cy5lbmNvZGUoJ3V0Zi04JykpCisKICAg
ICBkZWYgcmVscGF0aChzZWxmLCBwYXRoLCBzdGFydD0nLicpOgogICAgICAgICByZXR1cm4gb3Nw
YXRoLnJlbHBhdGgocGF0aCwgc3RhcnQsIHNlbGYuYWJzcGF0aCwgc2VsZi5zZXApCiAKQEAgLTMw
MSwyMSArMzEzLDEzIEBAIGNsYXNzIE1vY2tGaWxlU3lzdGVtKG9iamVjdCk6CiAgICAgICAgICAg
ICBpZHggPSAwCiAgICAgICAgIHJldHVybiAocGF0aFswOmlkeF0sIHBhdGhbaWR4Ol0pCiAKLSAg
ICBkZWYgd3JpdGVfdGV4dF9maWxlKHNlbGYsIHBhdGgsIGNvbnRlbnRzKToKLSAgICAgICAgcmV0
dXJuIHNlbGYud3JpdGVfYmluYXJ5X2ZpbGUocGF0aCwgY29udGVudHMuZW5jb2RlKCd1dGYtOCcp
KQotCi0gICAgZGVmIHdyaXRlX2JpbmFyeV9maWxlKHNlbGYsIHBhdGgsIGNvbnRlbnRzKToKLSAg
ICAgICAgc2VsZi5maWxlc1twYXRoXSA9IGNvbnRlbnRzCi0gICAgICAgIHNlbGYud3JpdHRlbl9m
aWxlc1twYXRoXSA9IGNvbnRlbnRzCi0KIAotY2xhc3MgV3JpdGFibGVGaWxlT2JqZWN0KG9iamVj
dCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGZzLCBwYXRoLCBhcHBlbmQ9RmFsc2UsIGVuY29k
aW5nPU5vbmUpOgorY2xhc3MgV3JpdGFibGVCaW5hcnlGaWxlT2JqZWN0KG9iamVjdCk6CisgICAg
ZGVmIF9faW5pdF9fKHNlbGYsIGZzLCBwYXRoKToKICAgICAgICAgc2VsZi5mcyA9IGZzCiAgICAg
ICAgIHNlbGYucGF0aCA9IHBhdGgKICAgICAgICAgc2VsZi5jbG9zZWQgPSBGYWxzZQotICAgICAg
ICBpZiBwYXRoIG5vdCBpbiBzZWxmLmZzLmZpbGVzIG9yIG5vdCBhcHBlbmQ6Ci0gICAgICAgICAg
ICBzZWxmLmZzLmZpbGVzW3BhdGhdID0gIiIKKyAgICAgICAgc2VsZi5mcy5maWxlc1twYXRoXSA9
ICIiCiAKICAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZgpAQCAt
MzMxLDcgKzMzNSwxNSBAQCBjbGFzcyBXcml0YWJsZUZpbGVPYmplY3Qob2JqZWN0KToKICAgICAg
ICAgc2VsZi5mcy53cml0dGVuX2ZpbGVzW3NlbGYucGF0aF0gPSBzZWxmLmZzLmZpbGVzW3NlbGYu
cGF0aF0KIAogCi1jbGFzcyBSZWFkYWJsZUZpbGVPYmplY3Qob2JqZWN0KToKK2NsYXNzIFdyaXRh
YmxlVGV4dEZpbGVPYmplY3QoV3JpdGFibGVCaW5hcnlGaWxlT2JqZWN0KToKKyAgICBkZWYgX19p
bml0X18oc2VsZiwgZnMsIHBhdGgpOgorICAgICAgICBXcml0YWJsZUJpbmFyeUZpbGVPYmplY3Qu
X19pbml0X18oc2VsZiwgZnMsIHBhdGgpCisKKyAgICBkZWYgd3JpdGUoc2VsZiwgc3RyKToKKyAg
ICAgICAgV3JpdGFibGVCaW5hcnlGaWxlT2JqZWN0LndyaXRlKHNlbGYsIHN0ci5lbmNvZGUoJ3V0
Zi04JykpCisKKworY2xhc3MgUmVhZGFibGVCaW5hcnlGaWxlT2JqZWN0KG9iamVjdCk6CiAgICAg
ZGVmIF9faW5pdF9fKHNlbGYsIGZzLCBwYXRoLCBkYXRhPSIiKToKICAgICAgICAgc2VsZi5mcyA9
IGZzCiAgICAgICAgIHNlbGYucGF0aCA9IHBhdGgKQEAgLTM1NCwzICszNjYsMTEgQEAgY2xhc3Mg
UmVhZGFibGVGaWxlT2JqZWN0KG9iamVjdCk6CiAgICAgICAgIHN0YXJ0ID0gc2VsZi5vZmZzZXQK
ICAgICAgICAgc2VsZi5vZmZzZXQgKz0gYnl0ZXMKICAgICAgICAgcmV0dXJuIHNlbGYuZGF0YVtz
dGFydDpzZWxmLm9mZnNldF0KKworCitjbGFzcyBSZWFkYWJsZVRleHRGaWxlT2JqZWN0KFJlYWRh
YmxlQmluYXJ5RmlsZU9iamVjdCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZzLCBwYXRoKToK
KyAgICAgICAgUmVhZGFibGVCaW5hcnlGaWxlT2JqZWN0Ll9faW5pdF9fKHNlbGYsIGZzLCBwYXRo
KQorCisgICAgZGVmIHJlYWQoc2VsZiwgYnl0ZXM9Tm9uZSk6CisgICAgICAgIHJldHVybiBSZWFk
YWJsZUJpbmFyeUZpbGVPYmplY3QucmVhZChzZWxmLCBieXRlcykuZGVjb2RlKCd1dGYtOCcpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>99935</attachid>
            <date>2011-07-06 22:16:27 -0700</date>
            <delta_ts>2011-07-07 19:33:30 -0700</delta_ts>
            <desc>patch, reduced</desc>
            <filename>bug-63528-20110707141625.patch</filename>
            <type>text/plain</type>
            <size>8409</size>
            <attacher name="Roland Steiner">rolandsteiner</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTA1MzIKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCAwZjRlYTkyZmE5NjE5MWIyY2IwNzc3YWExMDYyMjg1NTJm
YTkwMTVkLi4zMGZlNmZhMjRiY2Y2NWUxOTc5YzBlNzY0ZDc1Nzc4NWUzY2M0ZmZlIDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkg
QEAKKzIwMTEtMDYtMjggIFJvbGFuZCBTdGVpbmVyICA8cm9sYW5kc3RlaW5lckBjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ29t
cGxldGUgZnVuY3Rpb25zIGluIGZpbGVzeXN0ZW0ucHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYzNTI4CisKKyAgICAgICAgLSBtaXNzaW5nIHRleHQg
ZmlsZSBmdW5jdGlvbnMgYWRkZWQKKyAgICAgICAgLSBmdW5jdGlvbnMgc29ydGVkCisgICAgICAg
IC0gcmVtb3ZlZCAnYXBwZW5kJyBvcHRpb25hbCBwYXJhbWV0ZXJzICh3ZXJlIHVudXNlZCkKKyAg
ICAgICAgLSBhZGFwdGVkIGZpbGVzeXN0ZW1fbW9jayBpbiB0aGUgc2FtZSB3YXkKKworICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9maWxlc3lzdGVtLnB5OgorICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9maWxlc3lzdGVtX21vY2sucHk6Cisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2ZpbGVzeXN0ZW1fdW5pdHRl
c3QucHk6CisKIDIwMTEtMDctMDYgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAog
ICAgICAgICBNb3ZlIG1vZGVsIGNsYXNzZXMgb3V0IG9mIGxheW91dF9wYWNrYWdlIGFuZCBpbnRv
IG1vZGVscwpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVt
L2ZpbGVzeXN0ZW0ucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZmls
ZXN5c3RlbS5weQppbmRleCBjMTAxZjRkN2IyYmU1ZjA1ZWY3ZWQ2MzYyNmQyMjU3MDgwZWM0ZTdh
Li4wYWY2ZWM4OTE1MjY1ZTQ1YzMzNTBhY2UyNGY2NWUxM2M5NTAyZjUyIDEwMDY0NAotLS0gYS9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZmlsZXN5c3RlbS5weQorKysgYi9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZmlsZXN5c3RlbS5weQpAQCAtMTkx
LDEyICsxOTEsNiBAQCBjbGFzcyBGaWxlU3lzdGVtKG9iamVjdCk6CiAgICAgICAgIGYgPSBvcy5m
ZG9wZW4odGVtcF9mZCwgJ3diJykKICAgICAgICAgcmV0dXJuIGYsIHRlbXBfbmFtZQogCi0gICAg
ZGVmIG9wZW5fdGV4dF9maWxlX2Zvcl93cml0aW5nKHNlbGYsIHBhdGgsIGFwcGVuZD1GYWxzZSk6
Ci0gICAgICAgIG1vZGUgPSAndycKLSAgICAgICAgaWYgYXBwZW5kOgotICAgICAgICAgICAgbW9k
ZSA9ICdhJwotICAgICAgICByZXR1cm4gY29kZWNzLm9wZW4ocGF0aCwgbW9kZSwgJ3V0ZjgnKQot
CiAgICAgZGVmIG9wZW5fYmluYXJ5X2ZpbGVfZm9yX3JlYWRpbmcoc2VsZiwgcGF0aCk6CiAgICAg
ICAgIHJldHVybiBjb2RlY3Mub3BlbihwYXRoLCAncmInKQogCkBAIC0yMDUsNiArMTk5LDE2IEBA
IGNsYXNzIEZpbGVTeXN0ZW0ob2JqZWN0KToKICAgICAgICAgd2l0aCBmaWxlKHBhdGgsICdyYicp
IGFzIGY6CiAgICAgICAgICAgICByZXR1cm4gZi5yZWFkKCkKIAorICAgIGRlZiB3cml0ZV9iaW5h
cnlfZmlsZShzZWxmLCBwYXRoLCBjb250ZW50cyk6CisgICAgICAgIHdpdGggZmlsZShwYXRoLCAn
d2InKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZShjb250ZW50cykKKworICAgIGRlZiBvcGVu
X3RleHRfZmlsZV9mb3JfcmVhZGluZyhzZWxmLCBwYXRoKToKKyAgICAgICAgcmV0dXJuIGNvZGVj
cy5vcGVuKHBhdGgsICdyJywgJ3V0ZjgnKQorCisgICAgZGVmIG9wZW5fdGV4dF9maWxlX2Zvcl93
cml0aW5nKHNlbGYsIHBhdGgpOgorICAgICAgICByZXR1cm4gY29kZWNzLm9wZW4ocGF0aCwgJ3cn
LCAndXRmOCcpCisKICAgICBkZWYgcmVhZF90ZXh0X2ZpbGUoc2VsZiwgcGF0aCk6CiAgICAgICAg
ICIiIlJldHVybiB0aGUgY29udGVudHMgb2YgdGhlIGZpbGUgYXQgdGhlIGdpdmVuIHBhdGggYXMg
YSBVbmljb2RlIHN0cmluZy4KIApAQCAtMjEyLDYgKzIxNiwxMyBAQCBjbGFzcyBGaWxlU3lzdGVt
KG9iamVjdCk6CiAgICAgICAgIHdpdGggY29kZWNzLm9wZW4ocGF0aCwgJ3InLCAndXRmOCcpIGFz
IGY6CiAgICAgICAgICAgICByZXR1cm4gZi5yZWFkKCkKIAorICAgIGRlZiB3cml0ZV90ZXh0X2Zp
bGUoc2VsZiwgcGF0aCwgY29udGVudHMpOgorICAgICAgICAiIiJXcml0ZSB0aGUgY29udGVudHMg
dG8gdGhlIGZpbGUgYXQgdGhlIGdpdmVuIGxvY2F0aW9uLgorCisgICAgICAgIFRoZSBmaWxlIGlz
IHdyaXR0ZW4gZW5jb2RlZCBhcyBVVEYtOCB3aXRoIG5vIEJPTS4iIiIKKyAgICAgICAgd2l0aCBj
b2RlY3Mub3BlbihwYXRoLCAndycsICd1dGY4JykgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGUo
Y29udGVudHMpCisKICAgICBkZWYgcmVscGF0aChzZWxmLCBwYXRoLCBzdGFydD0nLicpOgogICAg
ICAgICByZXR1cm4gb3NwYXRoLnJlbHBhdGgocGF0aCwgc3RhcnQpCiAKQEAgLTI1MiwxNCArMjYz
LDMgQEAgY2xhc3MgRmlsZVN5c3RlbShvYmplY3QpOgogICAgIGRlZiBzcGxpdGV4dChzZWxmLCBw
YXRoKToKICAgICAgICAgIiIiUmV0dXJuIChkaXJuYW1lICsgb3Muc2VwICsgYmFzZW5hbWUsICcu
JyArIGV4dCkiIiIKICAgICAgICAgcmV0dXJuIG9zLnBhdGguc3BsaXRleHQocGF0aCkKLQotICAg
IGRlZiB3cml0ZV9iaW5hcnlfZmlsZShzZWxmLCBwYXRoLCBjb250ZW50cyk6Ci0gICAgICAgIHdp
dGggZmlsZShwYXRoLCAnd2InKSBhcyBmOgotICAgICAgICAgICAgZi53cml0ZShjb250ZW50cykK
LQotICAgIGRlZiB3cml0ZV90ZXh0X2ZpbGUoc2VsZiwgcGF0aCwgY29udGVudHMpOgotICAgICAg
ICAiIiJXcml0ZSB0aGUgY29udGVudHMgdG8gdGhlIGZpbGUgYXQgdGhlIGdpdmVuIGxvY2F0aW9u
LgotCi0gICAgICAgIFRoZSBmaWxlIGlzIHdyaXR0ZW4gZW5jb2RlZCBhcyBVVEYtOCB3aXRoIG5v
IEJPTS4iIiIKLSAgICAgICAgd2l0aCBjb2RlY3Mub3BlbihwYXRoLCAndycsICd1dGY4JykgYXMg
ZjoKLSAgICAgICAgICAgIGYud3JpdGUoY29udGVudHMpCmRpZmYgLS1naXQgYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZmlsZXN5c3RlbV9tb2NrLnB5IGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2ZpbGVzeXN0ZW1fbW9jay5weQppbmRleCA2ZWI5
NThhMTVmNzhmMTQ3NjFkZGU4Y2IxY2VkZWRhZDFiNzg2MjQ3Li5hOWIxOTM4OTA0MmM1OGYwZmYy
NDIwMjVmYjgwMGNlMjk0N2RhZGU2IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2NvbW1vbi9zeXN0ZW0vZmlsZXN5c3RlbV9tb2NrLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvY29tbW9uL3N5c3RlbS9maWxlc3lzdGVtX21vY2sucHkKQEAgLTI1MCwxOCArMjUwLDEy
IEBAIGNsYXNzIE1vY2tGaWxlU3lzdGVtKG9iamVjdCk6CiAKICAgICBkZWYgb3Blbl9iaW5hcnlf
dGVtcGZpbGUoc2VsZiwgc3VmZml4PScnKToKICAgICAgICAgcGF0aCA9IHNlbGYuX21rdGVtcChz
dWZmaXgpCi0gICAgICAgIHJldHVybiAoV3JpdGFibGVGaWxlT2JqZWN0KHNlbGYsIHBhdGgpLCBw
YXRoKQotCi0gICAgZGVmIG9wZW5fdGV4dF9maWxlX2Zvcl93cml0aW5nKHNlbGYsIHBhdGgsIGFw
cGVuZD1GYWxzZSk6Ci0gICAgICAgIHJldHVybiBXcml0YWJsZUZpbGVPYmplY3Qoc2VsZiwgcGF0
aCwgYXBwZW5kKQotCi0gICAgZGVmIHJlYWRfdGV4dF9maWxlKHNlbGYsIHBhdGgpOgotICAgICAg
ICByZXR1cm4gc2VsZi5yZWFkX2JpbmFyeV9maWxlKHBhdGgpLmRlY29kZSgndXRmLTgnKQorICAg
ICAgICByZXR1cm4gKFdyaXRhYmxlQmluYXJ5RmlsZU9iamVjdChzZWxmLCBwYXRoKSwgcGF0aCkK
IAogICAgIGRlZiBvcGVuX2JpbmFyeV9maWxlX2Zvcl9yZWFkaW5nKHNlbGYsIHBhdGgpOgogICAg
ICAgICBpZiBzZWxmLmZpbGVzW3BhdGhdIGlzIE5vbmU6CiAgICAgICAgICAgICBzZWxmLl9yYWlz
ZV9ub3RfZm91bmQocGF0aCkKLSAgICAgICAgcmV0dXJuIFJlYWRhYmxlRmlsZU9iamVjdChzZWxm
LCBwYXRoLCBzZWxmLmZpbGVzW3BhdGhdKQorICAgICAgICByZXR1cm4gUmVhZGFibGVCaW5hcnlG
aWxlT2JqZWN0KHNlbGYsIHBhdGgsIHNlbGYuZmlsZXNbcGF0aF0pCiAKICAgICBkZWYgcmVhZF9i
aW5hcnlfZmlsZShzZWxmLCBwYXRoKToKICAgICAgICAgIyBJbnRlbnRpb25hbGx5IHJhaXNlcyBL
ZXlFcnJvciBpZiB3ZSBkb24ndCByZWNvZ25pemUgdGhlIHBhdGguCkBAIC0yNjksNiArMjYzLDI0
IEBAIGNsYXNzIE1vY2tGaWxlU3lzdGVtKG9iamVjdCk6CiAgICAgICAgICAgICBzZWxmLl9yYWlz
ZV9ub3RfZm91bmQocGF0aCkKICAgICAgICAgcmV0dXJuIHNlbGYuZmlsZXNbcGF0aF0KIAorICAg
IGRlZiB3cml0ZV9iaW5hcnlfZmlsZShzZWxmLCBwYXRoLCBjb250ZW50cyk6CisgICAgICAgIHNl
bGYuZmlsZXNbcGF0aF0gPSBjb250ZW50cworICAgICAgICBzZWxmLndyaXR0ZW5fZmlsZXNbcGF0
aF0gPSBjb250ZW50cworCisgICAgZGVmIG9wZW5fdGV4dF9maWxlX2Zvcl9yZWFkaW5nKHNlbGYs
IHBhdGgpOgorICAgICAgICBpZiBzZWxmLmZpbGVzW3BhdGhdIGlzIE5vbmU6CisgICAgICAgICAg
ICBzZWxmLl9yYWlzZV9ub3RfZm91bmQocGF0aCkKKyAgICAgICAgcmV0dXJuIFJlYWRhYmxlVGV4
dEZpbGVPYmplY3Qoc2VsZiwgcGF0aCkKKworICAgIGRlZiBvcGVuX3RleHRfZmlsZV9mb3Jfd3Jp
dGluZyhzZWxmLCBwYXRoKToKKyAgICAgICAgcmV0dXJuIFdyaXRhYmxlVGV4dEZpbGVPYmplY3Qo
c2VsZiwgcGF0aCkKKworICAgIGRlZiByZWFkX3RleHRfZmlsZShzZWxmLCBwYXRoKToKKyAgICAg
ICAgcmV0dXJuIHNlbGYucmVhZF9iaW5hcnlfZmlsZShwYXRoKS5kZWNvZGUoJ3V0Zi04JykKKwor
ICAgIGRlZiB3cml0ZV90ZXh0X2ZpbGUoc2VsZiwgcGF0aCwgY29udGVudHMpOgorICAgICAgICBy
ZXR1cm4gc2VsZi53cml0ZV9iaW5hcnlfZmlsZShwYXRoLCBjb250ZW50cy5lbmNvZGUoJ3V0Zi04
JykpCisKICAgICBkZWYgcmVscGF0aChzZWxmLCBwYXRoLCBzdGFydD0nLicpOgogICAgICAgICBy
ZXR1cm4gb3NwYXRoLnJlbHBhdGgocGF0aCwgc3RhcnQsIHNlbGYuYWJzcGF0aCwgc2VsZi5zZXAp
CiAKQEAgLTMwMSwyMSArMzEzLDEzIEBAIGNsYXNzIE1vY2tGaWxlU3lzdGVtKG9iamVjdCk6CiAg
ICAgICAgICAgICBpZHggPSAwCiAgICAgICAgIHJldHVybiAocGF0aFswOmlkeF0sIHBhdGhbaWR4
Ol0pCiAKLSAgICBkZWYgd3JpdGVfdGV4dF9maWxlKHNlbGYsIHBhdGgsIGNvbnRlbnRzKToKLSAg
ICAgICAgcmV0dXJuIHNlbGYud3JpdGVfYmluYXJ5X2ZpbGUocGF0aCwgY29udGVudHMuZW5jb2Rl
KCd1dGYtOCcpKQotCi0gICAgZGVmIHdyaXRlX2JpbmFyeV9maWxlKHNlbGYsIHBhdGgsIGNvbnRl
bnRzKToKLSAgICAgICAgc2VsZi5maWxlc1twYXRoXSA9IGNvbnRlbnRzCi0gICAgICAgIHNlbGYu
d3JpdHRlbl9maWxlc1twYXRoXSA9IGNvbnRlbnRzCi0KIAotY2xhc3MgV3JpdGFibGVGaWxlT2Jq
ZWN0KG9iamVjdCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGZzLCBwYXRoLCBhcHBlbmQ9RmFs
c2UsIGVuY29kaW5nPU5vbmUpOgorY2xhc3MgV3JpdGFibGVCaW5hcnlGaWxlT2JqZWN0KG9iamVj
dCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZzLCBwYXRoKToKICAgICAgICAgc2VsZi5mcyA9
IGZzCiAgICAgICAgIHNlbGYucGF0aCA9IHBhdGgKICAgICAgICAgc2VsZi5jbG9zZWQgPSBGYWxz
ZQotICAgICAgICBpZiBwYXRoIG5vdCBpbiBzZWxmLmZzLmZpbGVzIG9yIG5vdCBhcHBlbmQ6Ci0g
ICAgICAgICAgICBzZWxmLmZzLmZpbGVzW3BhdGhdID0gIiIKKyAgICAgICAgc2VsZi5mcy5maWxl
c1twYXRoXSA9ICIiCiAKICAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgogICAgICAgICByZXR1cm4g
c2VsZgpAQCAtMzMxLDcgKzMzNSwxNSBAQCBjbGFzcyBXcml0YWJsZUZpbGVPYmplY3Qob2JqZWN0
KToKICAgICAgICAgc2VsZi5mcy53cml0dGVuX2ZpbGVzW3NlbGYucGF0aF0gPSBzZWxmLmZzLmZp
bGVzW3NlbGYucGF0aF0KIAogCi1jbGFzcyBSZWFkYWJsZUZpbGVPYmplY3Qob2JqZWN0KToKK2Ns
YXNzIFdyaXRhYmxlVGV4dEZpbGVPYmplY3QoV3JpdGFibGVCaW5hcnlGaWxlT2JqZWN0KToKKyAg
ICBkZWYgX19pbml0X18oc2VsZiwgZnMsIHBhdGgpOgorICAgICAgICBXcml0YWJsZUJpbmFyeUZp
bGVPYmplY3QuX19pbml0X18oc2VsZiwgZnMsIHBhdGgpCisKKyAgICBkZWYgd3JpdGUoc2VsZiwg
c3RyKToKKyAgICAgICAgV3JpdGFibGVCaW5hcnlGaWxlT2JqZWN0LndyaXRlKHNlbGYsIHN0ci5l
bmNvZGUoJ3V0Zi04JykpCisKKworY2xhc3MgUmVhZGFibGVCaW5hcnlGaWxlT2JqZWN0KG9iamVj
dCk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZzLCBwYXRoLCBkYXRhPSIiKToKICAgICAgICAg
c2VsZi5mcyA9IGZzCiAgICAgICAgIHNlbGYucGF0aCA9IHBhdGgKQEAgLTM1NCwzICszNjYsMTEg
QEAgY2xhc3MgUmVhZGFibGVGaWxlT2JqZWN0KG9iamVjdCk6CiAgICAgICAgIHN0YXJ0ID0gc2Vs
Zi5vZmZzZXQKICAgICAgICAgc2VsZi5vZmZzZXQgKz0gYnl0ZXMKICAgICAgICAgcmV0dXJuIHNl
bGYuZGF0YVtzdGFydDpzZWxmLm9mZnNldF0KKworCitjbGFzcyBSZWFkYWJsZVRleHRGaWxlT2Jq
ZWN0KFJlYWRhYmxlQmluYXJ5RmlsZU9iamVjdCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZz
LCBwYXRoKToKKyAgICAgICAgUmVhZGFibGVCaW5hcnlGaWxlT2JqZWN0Ll9faW5pdF9fKHNlbGYs
IGZzLCBwYXRoKQorCisgICAgZGVmIHJlYWQoc2VsZiwgYnl0ZXM9Tm9uZSk6CisgICAgICAgIHJl
dHVybiBSZWFkYWJsZUJpbmFyeUZpbGVPYmplY3QucmVhZChzZWxmLCBieXRlcykuZGVjb2RlKCd1
dGYtOCcpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0v
ZmlsZXN5c3RlbV91bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5
c3RlbS9maWxlc3lzdGVtX3VuaXR0ZXN0LnB5CmluZGV4IGU2MTMyNjIxMDllNTNkOTg3MzYwY2Yy
OTUyNTU2OWIwOTEzMjlmMGIuLjI3YTVjZmExZjk5ZTdhYzE4MDg5OGI5NGFiMmMwNWY3ZTk0MzNj
YjYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9maWxl
c3lzdGVtX3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5
c3RlbS9maWxlc3lzdGVtX3VuaXR0ZXN0LnB5CkBAIC0xNDIsNiArMTQyLDI3IEBAIGNsYXNzIEZp
bGVTeXN0ZW1UZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgICAgIGlmIG9zLnBhdGgu
ZXhpc3RzKHN1Yl9kaXIpOgogICAgICAgICAgICAgICAgIG9zLnJtZGlyKHN1Yl9kaXIpCiAKKyAg
ICBkZWYgdGVzdF9yZWFkX2FuZF93cml0ZV90ZXh0X2ZpbGUoc2VsZik6CisgICAgICAgIGZzID0g
RmlsZVN5c3RlbSgpCisgICAgICAgIHRleHRfcGF0aCA9IE5vbmUKKworICAgICAgICB1bmljb2Rl
X3RleHRfc3RyaW5nID0gdSfFqm7ErWPFjWRlzL0nCisgICAgICAgIGhleF9lcXVpdmFsZW50ID0g
J1x4QzVceEFBXHg2RVx4QzRceEFEXHg2M1x4QzVceDhEXHg2NFx4NjVceENDXHhCRCcKKyAgICAg
ICAgdHJ5OgorICAgICAgICAgICAgdGV4dF9wYXRoID0gdGVtcGZpbGUubWt0ZW1wKHByZWZpeD0n
dHJlZV91bml0dGVzdF8nKQorICAgICAgICAgICAgZmlsZSA9IGZzLm9wZW5fdGV4dF9maWxlX2Zv
cl93cml0aW5nKHRleHRfcGF0aCkKKyAgICAgICAgICAgIGZpbGUud3JpdGUodW5pY29kZV90ZXh0
X3N0cmluZykKKyAgICAgICAgICAgIGZpbGUuY2xvc2UoKQorCisgICAgICAgICAgICBmaWxlID0g
ZnMub3Blbl90ZXh0X2ZpbGVfZm9yX3JlYWRpbmcodGV4dF9wYXRoKQorICAgICAgICAgICAgcmVh
ZF90ZXh0ID0gZmlsZS5yZWFkKCkKKyAgICAgICAgICAgIGZpbGUuY2xvc2UoKQorCisgICAgICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKHJlYWRfdGV4dCwgdW5pY29kZV90ZXh0X3N0cmluZykKKyAg
ICAgICAgZmluYWxseToKKyAgICAgICAgICAgIGlmIHRleHRfcGF0aCBhbmQgZnMuaXNmaWxlKHRl
eHRfcGF0aCk6CisgICAgICAgICAgICAgICAgb3MucmVtb3ZlKHRleHRfcGF0aCkKKwogICAgIGRl
ZiB0ZXN0X3JlYWRfYW5kX3dyaXRlX2ZpbGUoc2VsZik6CiAgICAgICAgIGZzID0gRmlsZVN5c3Rl
bSgpCiAgICAgICAgIHRleHRfcGF0aCA9IE5vbmUK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>100067</attachid>
            <date>2011-07-07 19:33:37 -0700</date>
            <delta_ts>2011-07-10 19:36:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-63528-20110708113334.patch</filename>
            <type>text/plain</type>
            <size>8751</size>
            <attacher name="Roland Steiner">rolandsteiner</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTA2MDUKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCAyNDUwYmFmZTEwNzkyNmNlMGY1NDE2NjE3YjIwMjAxM2M5
ZjY1NjY0Li41ZDE3MzQ2ZDVlOTJiNTFlYzZkMmFjNGU4YzViYmQ3M2JkZDAxMDU4IDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkg
QEAKKzIwMTEtMDYtMjggIFJvbGFuZCBTdGVpbmVyICA8cm9sYW5kc3RlaW5lckBjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ29t
cGxldGUgZnVuY3Rpb25zIGluIGZpbGVzeXN0ZW0ucHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYzNTI4CisKKyAgICAgICAgLSBtaXNzaW5nIHRleHQg
ZmlsZSBmdW5jdGlvbnMgYWRkZWQKKyAgICAgICAgLSBmdW5jdGlvbnMgc29ydGVkCisgICAgICAg
IC0gcmVtb3ZlZCAnYXBwZW5kJyBvcHRpb25hbCBwYXJhbWV0ZXJzICh3ZXJlIHVudXNlZCkKKyAg
ICAgICAgLSBhZGFwdGVkIGZpbGVzeXN0ZW1fbW9jayBpbiB0aGUgc2FtZSB3YXkKKworICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9maWxlc3lzdGVtLnB5OgorICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9maWxlc3lzdGVtX21vY2sucHk6Cisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2ZpbGVzeXN0ZW1fdW5pdHRl
c3QucHk6CisKIDIwMTEtMDctMDcgIFJhcGhhZWwgS3VibyBkYSBDb3N0YSAgPGt1Ym9AcHJvZnVz
aW9uLm1vYmk+CiAKICAgICAgICAgW0VGTF0gRFJUOiBMZWFrIGNhaXJvX3QgdG8gbWFrZSB0aGUg
cGl4ZWwgdGVzdHMgc3RvcCBjcmFzaGluZwpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9jb21tb24vc3lzdGVtL2ZpbGVzeXN0ZW0ucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2NvbW1vbi9zeXN0ZW0vZmlsZXN5c3RlbS5weQppbmRleCBjMTAxZjRkN2IyYmU1ZjA1ZWY3ZWQ2
MzYyNmQyMjU3MDgwZWM0ZTdhLi4wYWY2ZWM4OTE1MjY1ZTQ1YzMzNTBhY2UyNGY2NWUxM2M5NTAy
ZjUyIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZmls
ZXN5c3RlbS5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZmls
ZXN5c3RlbS5weQpAQCAtMTkxLDEyICsxOTEsNiBAQCBjbGFzcyBGaWxlU3lzdGVtKG9iamVjdCk6
CiAgICAgICAgIGYgPSBvcy5mZG9wZW4odGVtcF9mZCwgJ3diJykKICAgICAgICAgcmV0dXJuIGYs
IHRlbXBfbmFtZQogCi0gICAgZGVmIG9wZW5fdGV4dF9maWxlX2Zvcl93cml0aW5nKHNlbGYsIHBh
dGgsIGFwcGVuZD1GYWxzZSk6Ci0gICAgICAgIG1vZGUgPSAndycKLSAgICAgICAgaWYgYXBwZW5k
OgotICAgICAgICAgICAgbW9kZSA9ICdhJwotICAgICAgICByZXR1cm4gY29kZWNzLm9wZW4ocGF0
aCwgbW9kZSwgJ3V0ZjgnKQotCiAgICAgZGVmIG9wZW5fYmluYXJ5X2ZpbGVfZm9yX3JlYWRpbmco
c2VsZiwgcGF0aCk6CiAgICAgICAgIHJldHVybiBjb2RlY3Mub3BlbihwYXRoLCAncmInKQogCkBA
IC0yMDUsNiArMTk5LDE2IEBAIGNsYXNzIEZpbGVTeXN0ZW0ob2JqZWN0KToKICAgICAgICAgd2l0
aCBmaWxlKHBhdGgsICdyYicpIGFzIGY6CiAgICAgICAgICAgICByZXR1cm4gZi5yZWFkKCkKIAor
ICAgIGRlZiB3cml0ZV9iaW5hcnlfZmlsZShzZWxmLCBwYXRoLCBjb250ZW50cyk6CisgICAgICAg
IHdpdGggZmlsZShwYXRoLCAnd2InKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZShjb250ZW50
cykKKworICAgIGRlZiBvcGVuX3RleHRfZmlsZV9mb3JfcmVhZGluZyhzZWxmLCBwYXRoKToKKyAg
ICAgICAgcmV0dXJuIGNvZGVjcy5vcGVuKHBhdGgsICdyJywgJ3V0ZjgnKQorCisgICAgZGVmIG9w
ZW5fdGV4dF9maWxlX2Zvcl93cml0aW5nKHNlbGYsIHBhdGgpOgorICAgICAgICByZXR1cm4gY29k
ZWNzLm9wZW4ocGF0aCwgJ3cnLCAndXRmOCcpCisKICAgICBkZWYgcmVhZF90ZXh0X2ZpbGUoc2Vs
ZiwgcGF0aCk6CiAgICAgICAgICIiIlJldHVybiB0aGUgY29udGVudHMgb2YgdGhlIGZpbGUgYXQg
dGhlIGdpdmVuIHBhdGggYXMgYSBVbmljb2RlIHN0cmluZy4KIApAQCAtMjEyLDYgKzIxNiwxMyBA
QCBjbGFzcyBGaWxlU3lzdGVtKG9iamVjdCk6CiAgICAgICAgIHdpdGggY29kZWNzLm9wZW4ocGF0
aCwgJ3InLCAndXRmOCcpIGFzIGY6CiAgICAgICAgICAgICByZXR1cm4gZi5yZWFkKCkKIAorICAg
IGRlZiB3cml0ZV90ZXh0X2ZpbGUoc2VsZiwgcGF0aCwgY29udGVudHMpOgorICAgICAgICAiIiJX
cml0ZSB0aGUgY29udGVudHMgdG8gdGhlIGZpbGUgYXQgdGhlIGdpdmVuIGxvY2F0aW9uLgorCisg
ICAgICAgIFRoZSBmaWxlIGlzIHdyaXR0ZW4gZW5jb2RlZCBhcyBVVEYtOCB3aXRoIG5vIEJPTS4i
IiIKKyAgICAgICAgd2l0aCBjb2RlY3Mub3BlbihwYXRoLCAndycsICd1dGY4JykgYXMgZjoKKyAg
ICAgICAgICAgIGYud3JpdGUoY29udGVudHMpCisKICAgICBkZWYgcmVscGF0aChzZWxmLCBwYXRo
LCBzdGFydD0nLicpOgogICAgICAgICByZXR1cm4gb3NwYXRoLnJlbHBhdGgocGF0aCwgc3RhcnQp
CiAKQEAgLTI1MiwxNCArMjYzLDMgQEAgY2xhc3MgRmlsZVN5c3RlbShvYmplY3QpOgogICAgIGRl
ZiBzcGxpdGV4dChzZWxmLCBwYXRoKToKICAgICAgICAgIiIiUmV0dXJuIChkaXJuYW1lICsgb3Mu
c2VwICsgYmFzZW5hbWUsICcuJyArIGV4dCkiIiIKICAgICAgICAgcmV0dXJuIG9zLnBhdGguc3Bs
aXRleHQocGF0aCkKLQotICAgIGRlZiB3cml0ZV9iaW5hcnlfZmlsZShzZWxmLCBwYXRoLCBjb250
ZW50cyk6Ci0gICAgICAgIHdpdGggZmlsZShwYXRoLCAnd2InKSBhcyBmOgotICAgICAgICAgICAg
Zi53cml0ZShjb250ZW50cykKLQotICAgIGRlZiB3cml0ZV90ZXh0X2ZpbGUoc2VsZiwgcGF0aCwg
Y29udGVudHMpOgotICAgICAgICAiIiJXcml0ZSB0aGUgY29udGVudHMgdG8gdGhlIGZpbGUgYXQg
dGhlIGdpdmVuIGxvY2F0aW9uLgotCi0gICAgICAgIFRoZSBmaWxlIGlzIHdyaXR0ZW4gZW5jb2Rl
ZCBhcyBVVEYtOCB3aXRoIG5vIEJPTS4iIiIKLSAgICAgICAgd2l0aCBjb2RlY3Mub3BlbihwYXRo
LCAndycsICd1dGY4JykgYXMgZjoKLSAgICAgICAgICAgIGYud3JpdGUoY29udGVudHMpCmRpZmYg
LS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZmlsZXN5c3RlbV9t
b2NrLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2ZpbGVzeXN0ZW1f
bW9jay5weQppbmRleCA3M2YyN2JmNzA5MzQxNzBhZmIyMzExMDViNDg4NTZmNTVhMzlkNzM1Li4w
MDIyYjBmZTZmZTgxZjZkMDY2ZDkzOTY3YmI3YmIwZWE1OTkyODFmIDEwMDY0NAotLS0gYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZmlsZXN5c3RlbV9tb2NrLnB5CisrKyBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9maWxlc3lzdGVtX21vY2sucHkK
QEAgLTI1MywxOCArMjUzLDEyIEBAIGNsYXNzIE1vY2tGaWxlU3lzdGVtKG9iamVjdCk6CiAKICAg
ICBkZWYgb3Blbl9iaW5hcnlfdGVtcGZpbGUoc2VsZiwgc3VmZml4PScnKToKICAgICAgICAgcGF0
aCA9IHNlbGYuX21rdGVtcChzdWZmaXgpCi0gICAgICAgIHJldHVybiAoV3JpdGFibGVGaWxlT2Jq
ZWN0KHNlbGYsIHBhdGgpLCBwYXRoKQotCi0gICAgZGVmIG9wZW5fdGV4dF9maWxlX2Zvcl93cml0
aW5nKHNlbGYsIHBhdGgsIGFwcGVuZD1GYWxzZSk6Ci0gICAgICAgIHJldHVybiBXcml0YWJsZUZp
bGVPYmplY3Qoc2VsZiwgcGF0aCwgYXBwZW5kKQotCi0gICAgZGVmIHJlYWRfdGV4dF9maWxlKHNl
bGYsIHBhdGgpOgotICAgICAgICByZXR1cm4gc2VsZi5yZWFkX2JpbmFyeV9maWxlKHBhdGgpLmRl
Y29kZSgndXRmLTgnKQorICAgICAgICByZXR1cm4gKFdyaXRhYmxlQmluYXJ5RmlsZU9iamVjdChz
ZWxmLCBwYXRoKSwgcGF0aCkKIAogICAgIGRlZiBvcGVuX2JpbmFyeV9maWxlX2Zvcl9yZWFkaW5n
KHNlbGYsIHBhdGgpOgogICAgICAgICBpZiBzZWxmLmZpbGVzW3BhdGhdIGlzIE5vbmU6CiAgICAg
ICAgICAgICBzZWxmLl9yYWlzZV9ub3RfZm91bmQocGF0aCkKLSAgICAgICAgcmV0dXJuIFJlYWRh
YmxlRmlsZU9iamVjdChzZWxmLCBwYXRoLCBzZWxmLmZpbGVzW3BhdGhdKQorICAgICAgICByZXR1
cm4gUmVhZGFibGVCaW5hcnlGaWxlT2JqZWN0KHNlbGYsIHBhdGgsIHNlbGYuZmlsZXNbcGF0aF0p
CiAKICAgICBkZWYgcmVhZF9iaW5hcnlfZmlsZShzZWxmLCBwYXRoKToKICAgICAgICAgIyBJbnRl
bnRpb25hbGx5IHJhaXNlcyBLZXlFcnJvciBpZiB3ZSBkb24ndCByZWNvZ25pemUgdGhlIHBhdGgu
CkBAIC0yNzIsNiArMjY2LDI0IEBAIGNsYXNzIE1vY2tGaWxlU3lzdGVtKG9iamVjdCk6CiAgICAg
ICAgICAgICBzZWxmLl9yYWlzZV9ub3RfZm91bmQocGF0aCkKICAgICAgICAgcmV0dXJuIHNlbGYu
ZmlsZXNbcGF0aF0KIAorICAgIGRlZiB3cml0ZV9iaW5hcnlfZmlsZShzZWxmLCBwYXRoLCBjb250
ZW50cyk6CisgICAgICAgIHNlbGYuZmlsZXNbcGF0aF0gPSBjb250ZW50cworICAgICAgICBzZWxm
LndyaXR0ZW5fZmlsZXNbcGF0aF0gPSBjb250ZW50cworCisgICAgZGVmIG9wZW5fdGV4dF9maWxl
X2Zvcl9yZWFkaW5nKHNlbGYsIHBhdGgpOgorICAgICAgICBpZiBzZWxmLmZpbGVzW3BhdGhdIGlz
IE5vbmU6CisgICAgICAgICAgICBzZWxmLl9yYWlzZV9ub3RfZm91bmQocGF0aCkKKyAgICAgICAg
cmV0dXJuIFJlYWRhYmxlVGV4dEZpbGVPYmplY3Qoc2VsZiwgcGF0aCkKKworICAgIGRlZiBvcGVu
X3RleHRfZmlsZV9mb3Jfd3JpdGluZyhzZWxmLCBwYXRoKToKKyAgICAgICAgcmV0dXJuIFdyaXRh
YmxlVGV4dEZpbGVPYmplY3Qoc2VsZiwgcGF0aCkKKworICAgIGRlZiByZWFkX3RleHRfZmlsZShz
ZWxmLCBwYXRoKToKKyAgICAgICAgcmV0dXJuIHNlbGYucmVhZF9iaW5hcnlfZmlsZShwYXRoKS5k
ZWNvZGUoJ3V0Zi04JykKKworICAgIGRlZiB3cml0ZV90ZXh0X2ZpbGUoc2VsZiwgcGF0aCwgY29u
dGVudHMpOgorICAgICAgICByZXR1cm4gc2VsZi53cml0ZV9iaW5hcnlfZmlsZShwYXRoLCBjb250
ZW50cy5lbmNvZGUoJ3V0Zi04JykpCisKICAgICBkZWYgcmVscGF0aChzZWxmLCBwYXRoLCBzdGFy
dD0nLicpOgogICAgICAgICByZXR1cm4gb3NwYXRoLnJlbHBhdGgocGF0aCwgc3RhcnQsIHNlbGYu
YWJzcGF0aCwgc2VsZi5zZXApCiAKQEAgLTMwMiwyMSArMzE0LDEzIEBAIGNsYXNzIE1vY2tGaWxl
U3lzdGVtKG9iamVjdCk6CiAgICAgICAgICAgICBpZHggPSAwCiAgICAgICAgIHJldHVybiAocGF0
aFswOmlkeF0sIHBhdGhbaWR4Ol0pCiAKLSAgICBkZWYgd3JpdGVfdGV4dF9maWxlKHNlbGYsIHBh
dGgsIGNvbnRlbnRzKToKLSAgICAgICAgcmV0dXJuIHNlbGYud3JpdGVfYmluYXJ5X2ZpbGUocGF0
aCwgY29udGVudHMuZW5jb2RlKCd1dGYtOCcpKQotCi0gICAgZGVmIHdyaXRlX2JpbmFyeV9maWxl
KHNlbGYsIHBhdGgsIGNvbnRlbnRzKToKLSAgICAgICAgc2VsZi5maWxlc1twYXRoXSA9IGNvbnRl
bnRzCi0gICAgICAgIHNlbGYud3JpdHRlbl9maWxlc1twYXRoXSA9IGNvbnRlbnRzCi0KIAotY2xh
c3MgV3JpdGFibGVGaWxlT2JqZWN0KG9iamVjdCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGZz
LCBwYXRoLCBhcHBlbmQ9RmFsc2UsIGVuY29kaW5nPU5vbmUpOgorY2xhc3MgV3JpdGFibGVCaW5h
cnlGaWxlT2JqZWN0KG9iamVjdCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZzLCBwYXRoKToK
ICAgICAgICAgc2VsZi5mcyA9IGZzCiAgICAgICAgIHNlbGYucGF0aCA9IHBhdGgKICAgICAgICAg
c2VsZi5jbG9zZWQgPSBGYWxzZQotICAgICAgICBpZiBwYXRoIG5vdCBpbiBzZWxmLmZzLmZpbGVz
IG9yIG5vdCBhcHBlbmQ6Ci0gICAgICAgICAgICBzZWxmLmZzLmZpbGVzW3BhdGhdID0gIiIKKyAg
ICAgICAgc2VsZi5mcy5maWxlc1twYXRoXSA9ICIiCiAKICAgICBkZWYgX19lbnRlcl9fKHNlbGYp
OgogICAgICAgICByZXR1cm4gc2VsZgpAQCAtMzMyLDcgKzMzNiwxNSBAQCBjbGFzcyBXcml0YWJs
ZUZpbGVPYmplY3Qob2JqZWN0KToKICAgICAgICAgc2VsZi5mcy53cml0dGVuX2ZpbGVzW3NlbGYu
cGF0aF0gPSBzZWxmLmZzLmZpbGVzW3NlbGYucGF0aF0KIAogCi1jbGFzcyBSZWFkYWJsZUZpbGVP
YmplY3Qob2JqZWN0KToKK2NsYXNzIFdyaXRhYmxlVGV4dEZpbGVPYmplY3QoV3JpdGFibGVCaW5h
cnlGaWxlT2JqZWN0KToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZnMsIHBhdGgpOgorICAgICAg
ICBzdXBlcihXcml0YWJsZVRleHRGaWxlT2JqZWN0LCBzZWxmKS5fX2luaXRfXyhmcywgcGF0aCkK
KworICAgIGRlZiB3cml0ZShzZWxmLCBzdHIpOgorICAgICAgICBXcml0YWJsZUJpbmFyeUZpbGVP
YmplY3Qud3JpdGUoc2VsZiwgc3RyLmVuY29kZSgndXRmLTgnKSkKKworCitjbGFzcyBSZWFkYWJs
ZUJpbmFyeUZpbGVPYmplY3Qob2JqZWN0KToKICAgICBkZWYgX19pbml0X18oc2VsZiwgZnMsIHBh
dGgsIGRhdGE9IiIpOgogICAgICAgICBzZWxmLmZzID0gZnMKICAgICAgICAgc2VsZi5wYXRoID0g
cGF0aApAQCAtMzU1LDMgKzM2NywxMSBAQCBjbGFzcyBSZWFkYWJsZUZpbGVPYmplY3Qob2JqZWN0
KToKICAgICAgICAgc3RhcnQgPSBzZWxmLm9mZnNldAogICAgICAgICBzZWxmLm9mZnNldCArPSBi
eXRlcwogICAgICAgICByZXR1cm4gc2VsZi5kYXRhW3N0YXJ0OnNlbGYub2Zmc2V0XQorCisKK2Ns
YXNzIFJlYWRhYmxlVGV4dEZpbGVPYmplY3QoUmVhZGFibGVCaW5hcnlGaWxlT2JqZWN0KToKKyAg
ICBkZWYgX19pbml0X18oc2VsZiwgZnMsIHBhdGgpOgorICAgICAgICBzdXBlcihSZWFkYWJsZVRl
eHRGaWxlT2JqZWN0LCBzZWxmKS5fX2luaXRfXyhmcywgcGF0aCkKKworICAgIGRlZiByZWFkKHNl
bGYsIGJ5dGVzPU5vbmUpOgorICAgICAgICByZXR1cm4gUmVhZGFibGVCaW5hcnlGaWxlT2JqZWN0
LnJlYWQoc2VsZiwgYnl0ZXMpLmRlY29kZSgndXRmLTgnKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2ZpbGVzeXN0ZW1fdW5pdHRlc3QucHkgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZmlsZXN5c3RlbV91bml0dGVzdC5weQpp
bmRleCBlNjEzMjYyMTA5ZTUzZDk4NzM2MGNmMjk1MjU1NjliMDkxMzI5ZjBiLi44NTMzZGRlNTMx
MzdmMjkzMzgzMWJiM2RhZDhkYzMxNTYzYzRlNTZhIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZmlsZXN5c3RlbV91bml0dGVzdC5weQorKysgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZmlsZXN5c3RlbV91bml0dGVzdC5weQpA
QCAtMTQyLDEyICsxNDIsMzMgQEAgY2xhc3MgRmlsZVN5c3RlbVRlc3QodW5pdHRlc3QuVGVzdENh
c2UpOgogICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoc3ViX2Rpcik6CiAgICAgICAgICAg
ICAgICAgb3Mucm1kaXIoc3ViX2RpcikKIAorICAgIGRlZiB0ZXN0X3JlYWRfYW5kX3dyaXRlX3Rl
eHRfZmlsZShzZWxmKToKKyAgICAgICAgZnMgPSBGaWxlU3lzdGVtKCkKKyAgICAgICAgdGV4dF9w
YXRoID0gTm9uZQorCisgICAgICAgIHVuaWNvZGVfdGV4dF9zdHJpbmcgPSB1J1x1MDE2QW5cdTAx
MkRjXHUwMTREZGVcdTAzM0QnCisgICAgICAgIGhleF9lcXVpdmFsZW50ID0gJ1x4QzVceEFBXHg2
RVx4QzRceEFEXHg2M1x4QzVceDhEXHg2NFx4NjVceENDXHhCRCcKKyAgICAgICAgdHJ5OgorICAg
ICAgICAgICAgdGV4dF9wYXRoID0gdGVtcGZpbGUubWt0ZW1wKHByZWZpeD0ndHJlZV91bml0dGVz
dF8nKQorICAgICAgICAgICAgZmlsZSA9IGZzLm9wZW5fdGV4dF9maWxlX2Zvcl93cml0aW5nKHRl
eHRfcGF0aCkKKyAgICAgICAgICAgIGZpbGUud3JpdGUodW5pY29kZV90ZXh0X3N0cmluZykKKyAg
ICAgICAgICAgIGZpbGUuY2xvc2UoKQorCisgICAgICAgICAgICBmaWxlID0gZnMub3Blbl90ZXh0
X2ZpbGVfZm9yX3JlYWRpbmcodGV4dF9wYXRoKQorICAgICAgICAgICAgcmVhZF90ZXh0ID0gZmls
ZS5yZWFkKCkKKyAgICAgICAgICAgIGZpbGUuY2xvc2UoKQorCisgICAgICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHJlYWRfdGV4dCwgdW5pY29kZV90ZXh0X3N0cmluZykKKyAgICAgICAgZmluYWxs
eToKKyAgICAgICAgICAgIGlmIHRleHRfcGF0aCBhbmQgZnMuaXNmaWxlKHRleHRfcGF0aCk6Cisg
ICAgICAgICAgICAgICAgb3MucmVtb3ZlKHRleHRfcGF0aCkKKwogICAgIGRlZiB0ZXN0X3JlYWRf
YW5kX3dyaXRlX2ZpbGUoc2VsZik6CiAgICAgICAgIGZzID0gRmlsZVN5c3RlbSgpCiAgICAgICAg
IHRleHRfcGF0aCA9IE5vbmUKICAgICAgICAgYmluYXJ5X3BhdGggPSBOb25lCiAKLSAgICAgICAg
dW5pY29kZV90ZXh0X3N0cmluZyA9IHUnxapuxK1jxY1kZcy9JworICAgICAgICB1bmljb2RlX3Rl
eHRfc3RyaW5nID0gdSdcdTAxNkFuXHUwMTJEY1x1MDE0RGRlXHUwMzNEJwogICAgICAgICBoZXhf
ZXF1aXZhbGVudCA9ICdceEM1XHhBQVx4NkVceEM0XHhBRFx4NjNceEM1XHg4RFx4NjRceDY1XHhD
Q1x4QkQnCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHRleHRfcGF0aCA9IHRlbXBmaWxlLm1r
dGVtcChwcmVmaXg9J3RyZWVfdW5pdHRlc3RfJykK
</data>
<flag name="review"
          id="94690"
          type_id="1"
          status="+"
          setter="tony"
    />
          </attachment>
      

    </bug>

</bugzilla>