<?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>58691</bug_id>
          
          <creation_ts>2011-04-15 13:54:17 -0700</creation_ts>
          <short_desc>new-run-webkit-tests: sort test files &quot;correctly&quot;</short_desc>
          <delta_ts>2011-06-18 13:37:06 -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>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>58625</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dirk Pranke">dpranke</reporter>
          <assigned_to name="Dirk Pranke">dpranke</assigned_to>
          <cc>abarth</cc>
    
    <cc>eric</cc>
    
    <cc>ojan</cc>
    
    <cc>rniwa</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>386891</commentid>
    <comment_count>0</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-04-15 13:54:17 -0700</bug_when>
    <thetext>ORWT sorts the test files such that foo-2.html is run before foo-10.html. NRWT should match this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>386892</commentid>
    <comment_count>1</comment_count>
      <attachid>89848</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-04-15 13:55:12 -0700</bug_when>
    <thetext>Created attachment 89848
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>386893</commentid>
    <comment_count>2</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-04-15 13:55:43 -0700</bug_when>
    <thetext>I thought you had already posted a patch for this yesterday?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>386898</commentid>
    <comment_count>3</comment_count>
      <attachid>89848</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-04-15 13:58:38 -0700</bug_when>
    <thetext>Comment on attachment 89848
Patch

Seems OK to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>386899</commentid>
    <comment_count>4</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-04-15 13:59:34 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; I thought you had already posted a patch for this yesterday?

I did. Same patch, different bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>387412</commentid>
    <comment_count>5</comment_count>
      <attachid>89848</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-04-17 14:01:12 -0700</bug_when>
    <thetext>Comment on attachment 89848
Patch

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

&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/test_runner.py:1240
&gt; +            if int(x_part) &lt; int(y_part):
&gt; +                return -1
&gt; +            elif int(x_part) &gt; int(y_part):
&gt; +                return 1

Nit: You could just do &apos;return cmp(int(x_part), int(y_part))&apos;.  The same below.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>387418</commentid>
    <comment_count>6</comment_count>
      <attachid>89848</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-04-17 14:34:56 -0700</bug_when>
    <thetext>Comment on attachment 89848
Patch

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

&gt;&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/test_runner.py:1240
&gt;&gt; +                return 1
&gt; 
&gt; Nit: You could just do &apos;return cmp(int(x_part), int(y_part))&apos;.  The same below.

No, you can&apos;t, because you need to keep iterating if x_part == y_part.

You could do &apos;if cmp x, y: \ return cmp x,y&apos;, but I&apos;m not sure if that&apos;s really any clearer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>387431</commentid>
    <comment_count>7</comment_count>
      <attachid>89848</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-04-17 15:24:29 -0700</bug_when>
    <thetext>Comment on attachment 89848
Patch

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

&gt;&gt;&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/test_runner.py:1240
&gt;&gt;&gt; +                return 1
&gt;&gt; 
&gt;&gt; Nit: You could just do &apos;return cmp(int(x_part), int(y_part))&apos;.  The same below.
&gt; 
&gt; No, you can&apos;t, because you need to keep iterating if x_part == y_part.
&gt; 
&gt; You could do &apos;if cmp x, y: \ return cmp x,y&apos;, but I&apos;m not sure if that&apos;s really any clearer.

Ah, I see, I missed that you wanted to continue in that case.  You could do:
  if re.match(&apos;^\d&apos;, x_part) and re.match(&apos;^\d&apos;, y_part) and int(x_part) != int(y_part):
    return cmp(int(x_part), int(y_part))</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>387464</commentid>
    <comment_count>8</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-04-17 16:48:55 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 89848 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=89848&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/test_runner.py:1240
&gt; &gt;&gt;&gt; +                return 1
&gt; &gt;&gt; 
&gt; &gt;&gt; Nit: You could just do &apos;return cmp(int(x_part), int(y_part))&apos;.  The same below.
&gt; &gt; 
&gt; &gt; No, you can&apos;t, because you need to keep iterating if x_part == y_part.
&gt; &gt; 
&gt; &gt; You could do &apos;if cmp x, y: \ return cmp x,y&apos;, but I&apos;m not sure if that&apos;s really any clearer.
&gt; 
&gt; Ah, I see, I missed that you wanted to continue in that case.  You could do:
&gt;   if re.match(&apos;^\d&apos;, x_part) and re.match(&apos;^\d&apos;, y_part) and int(x_part) != int(y_part):
&gt;     return cmp(int(x_part), int(y_part))

OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>387466</commentid>
    <comment_count>9</comment_count>
      <attachid>89973</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-04-17 16:54:13 -0700</bug_when>
    <thetext>Created attachment 89973
update w/ feedback from tony, restructure loop a bit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>412404</commentid>
    <comment_count>10</comment_count>
      <attachid>95383</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-05-30 16:59:59 -0700</bug_when>
    <thetext>Created attachment 95383
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416382</commentid>
    <comment_count>11</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-06-06 23:54:59 -0700</bug_when>
    <thetext>Is this patch up for a review or not?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416535</commentid>
    <comment_count>12</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-06-07 08:55:02 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; Is this patch up for a review or not?

No need. Tony R+&apos;ed the earlier version, and the last version just had his feedback. It hasn&apos;t landed because it&apos;s waiting on some other work before it can go in without causing regressions on the chromium ports.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>420937</commentid>
    <comment_count>13</comment_count>
      <attachid>97215</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-06-14 18:40:27 -0700</bug_when>
    <thetext>Created attachment 97215
use a key= method instead of cmp=, rename to &apos;natural&apos; sorting</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>420977</commentid>
    <comment_count>14</comment_count>
      <attachid>97223</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-06-14 20:11:24 -0700</bug_when>
    <thetext>Created attachment 97223
fix path sorting as well</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>420980</commentid>
    <comment_count>15</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-06-14 20:14:20 -0700</bug_when>
    <thetext>Okay, this implementation is totally different from the previous one, and we roll in a couple of other changes:

1) We cluster the tests so that we will run all of the tests in a directory before any tests in a subdirectory. This matters when we are only running parts or chunks of the whole suite.

2) We do natural sorting on the directory names as well as the path names. Switching to the key-based comparison turns &gt;10lines of code into 2-3.

3) For some reason, old-run-webkit-tests will run tests in &quot;foo-bar&quot; before &quot;foo&quot; (notably in &quot;inspector-enabled&quot; before &quot;inspector&quot;, but there&apos;s nothing special about the &quot;-enabled&quot; suffix, it just appends the directory separator onto the key before comparing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>422116</commentid>
    <comment_count>16</comment_count>
      <attachid>97223</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-06-16 11:43:36 -0700</bug_when>
    <thetext>Comment on attachment 97223
fix path sorting as well

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

&gt; Tools/Scripts/webkitpy/common/system/filesystem_mock.py:284
&gt; +        return (path[0:idx], path[idx:])

Shouldn&apos;t the second part be path[idx+1:] (i.e., without the slash)?  Also, do you want to handle the case of multiple slashes (e.g., foo//bar)?  Nit: You can omit the 0 in the first part of the tuple.

&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/manager.py:374
&gt; +            self._test_files_list.sort(key=lambda path: path_key(self._fs, path))

Nit: It might be a bit easier to read if path_key() is just a member function (then you don&apos;t have to use lambda).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>422225</commentid>
    <comment_count>17</comment_count>
      <attachid>97223</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-06-16 14:21:11 -0700</bug_when>
    <thetext>Comment on attachment 97223
fix path sorting as well

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

&gt;&gt; Tools/Scripts/webkitpy/common/system/filesystem_mock.py:284
&gt;&gt; +        return (path[0:idx], path[idx:])
&gt; 
&gt; Shouldn&apos;t the second part be path[idx+1:] (i.e., without the slash)?  Also, do you want to handle the case of multiple slashes (e.g., foo//bar)?  Nit: You can omit the 0 in the first part of the tuple.

You&apos;re right, good catch.

&gt;&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/manager.py:374
&gt;&gt; +            self._test_files_list.sort(key=lambda path: path_key(self._fs, path))
&gt; 
&gt; Nit: It might be a bit easier to read if path_key() is just a member function (then you don&apos;t have to use lambda).

Yeah. I wanted to keep path_key as a standalone function so that it would be easier to test and be easier to relocate if we decided someplace else was a better home, though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>422255</commentid>
    <comment_count>18</comment_count>
      <attachid>97505</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-06-16 14:47:51 -0700</bug_when>
    <thetext>Created attachment 97505
update w/ feedback from tony, remove extraneous extra sort</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>423233</commentid>
    <comment_count>19</comment_count>
      <attachid>97505</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-18 13:37:00 -0700</bug_when>
    <thetext>Comment on attachment 97505
update w/ feedback from tony, remove extraneous extra sort

Clearing flags on attachment: 97505

Committed r89206: &lt;http://trac.webkit.org/changeset/89206&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>423234</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-18 13:37:06 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>89848</attachid>
            <date>2011-04-15 13:55:12 -0700</date>
            <delta_ts>2011-04-17 16:54:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-58691-20110415135511.patch</filename>
            <type>text/plain</type>
            <size>4578</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODM4OTUKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCA1YjliOWI4ZjNkNmIzYWZmYTkxZWFjNGIyZGY2MmMyYWE0
YWQwNGUxLi4zMDAzMWNhM2Y3NTQwYmQ5YTE0NzkzNGQyZDY4OWUxYmE1OGM0MWU1IDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQg
QEAKKzIwMTEtMDQtMTQgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgbmV3LXJ1bi13ZWJr
aXQtdGVzdHM6IHNvcnQgdGVzdHMgd2l0aCBlbWJlZGRlZCBudW1lcmljCisgICAgICAgIHN1YnN0
cmluZ3MgaW50ZWxsaWdlbnRseQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NTg2OTEKKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfcnVubmVyLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfcnVubmVyX3VuaXR0ZXN0LnB5
OgorCiAyMDExLTA0LTE0ICBFcmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBEaW1pdHJpIEdsYXprb3YuCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X3J1bm5lci5weSBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfcnVu
bmVyLnB5CmluZGV4IGQ4MWI5Yzg4N2E0Mjg5NDA0Nzk1YTFjNmZjNmMwNzA0NDI1MjE0MTEuLjVi
MDEwZjI2NGE4NzdiOTk2OGYxMGJhMjBlODk1MDI3Y2QxODBhYmYgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfcnVubmVy
LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNr
YWdlL3Rlc3RfcnVubmVyLnB5CkBAIC00Myw2ICs0Myw3IEBAIGltcG9ydCBsb2dnaW5nCiBpbXBv
cnQgbWF0aAogaW1wb3J0IFF1ZXVlCiBpbXBvcnQgcmFuZG9tCitpbXBvcnQgcmUKIGltcG9ydCBz
eXMKIGltcG9ydCB0aW1lCiAKQEAgLTI5NSw3ICsyOTYsNyBAQCBjbGFzcyBUZXN0UnVubmVyOgog
ICAgICAgICBpZiBzZWxmLl9vcHRpb25zLnJhbmRvbWl6ZV9vcmRlcjoKICAgICAgICAgICAgIHJh
bmRvbS5zaHVmZmxlKHNlbGYuX3Rlc3RfZmlsZXNfbGlzdCkKICAgICAgICAgZWxzZToKLSAgICAg
ICAgICAgIHNlbGYuX3Rlc3RfZmlsZXNfbGlzdC5zb3J0KCkKKyAgICAgICAgICAgIHNlbGYuX3Rl
c3RfZmlsZXNfbGlzdC5zb3J0KGNtcD1udW1lcmljX2NvbXBhcmUpCiAKICAgICAgICAgIyBJZiB0
aGUgdXNlciBzcGVjaWZpZXMgdGhleSBqdXN0IHdhbnQgdG8gcnVuIGEgc3Vic2V0IG9mIHRoZSB0
ZXN0cywKICAgICAgICAgIyBqdXN0IGdyYWIgYSBzdWJzZXQgb2YgdGhlIG5vbi1za2lwcGVkIHRl
c3RzLgpAQCAtMTE1MCw3ICsxMTUxLDcgQEAgY2xhc3MgVGVzdFJ1bm5lcjoKICAgICA8aDI+JSh0
aXRsZSlzICglKHRpbWUpcyk8L2gyPgogICAgICAgICAiIiIgJSB7J3RpdGxlJzogdGl0bGUsICd0
aW1lJzogb3ZlcnJpZGVfdGltZSBvciB0aW1lLmFzY3RpbWUoKX0KIAotICAgICAgICBmb3IgdGVz
dF9maWxlIGluIHNvcnRlZCh0ZXN0X2ZpbGVzKToKKyAgICAgICAgZm9yIHRlc3RfZmlsZSBpbiBz
b3J0ZWQodGVzdF9maWxlcywgY21wPW51bWVyaWNfY29tcGFyZSk6CiAgICAgICAgICAgICB0ZXN0
X25hbWUgPSBzZWxmLl9wb3J0LnJlbGF0aXZlX3Rlc3RfZmlsZW5hbWUodGVzdF9maWxlKQogICAg
ICAgICAgICAgdGVzdF91cmwgPSBzZWxmLl9wb3J0LmZpbGVuYW1lX3RvX3VyaSh0ZXN0X2ZpbGUp
CiAgICAgICAgICAgICBwYWdlICs9IHUiPHA+PGEgaHJlZj0nJXMnPiVzPC9hPjxiciAvPlxuIiAl
ICh0ZXN0X3VybCwgdGVzdF9uYW1lKQpAQCAtMTIyMCwzICsxMjIxLDMwIEBAIGRlZiByZWFkX3Rl
c3RfZmlsZXMoZnMsIGZpbGVzKToKICAgICAgICAgICAgICAgICBfbG9nLmNyaXRpY2FsKCctLXRl
c3QtbGlzdCBmaWxlICIlcyIgbm90IGZvdW5kJyAlIGZpbGUpCiAgICAgICAgICAgICByYWlzZQog
ICAgIHJldHVybiB0ZXN0cworCisKK2RlZiBudW1lcmljX2NvbXBhcmUoeCwgeSk6CisgICAgIiIi
Q29tcGFyZXMgdHdvIHN0cmluZ3Mgd2l0aCBlbWJlZGRlZCBudW1lcmljIHN1YnN0cmluZ3MgcHJv
cGVybHkuIiIiCisgICAgeF9wYXJ0cyA9IHJlLnNwbGl0KHInKFxkKyknLCB4KQorICAgIHlfcGFy
dHMgPSByZS5zcGxpdChyJyhcZCspJywgeSkKKworICAgICMgQ29tcGFyZSBvbmUgY2h1bmsgYXQg
YSB0aW1lLgorICAgICMgRWFjaCBjaHVuayBpcyBlaXRoZXIgYWxsIG51bWVyaWMgZGlnaXRzLCBv
ciBhbGwgbm90IG51bWVyaWMgZGlnaXRzLgorICAgIHdoaWxlIHhfcGFydHMgYW5kIHlfcGFydHM6
CisgICAgICAgIHhfcGFydCA9IHhfcGFydHMucG9wKDApCisgICAgICAgIHlfcGFydCA9IHlfcGFy
dHMucG9wKDApCisgICAgICAgIGlmIHJlLm1hdGNoKCdeXGQnLCB4X3BhcnQpIGFuZCByZS5tYXRj
aCgnXlxkJywgeV9wYXJ0KToKKyAgICAgICAgICAgIGlmIGludCh4X3BhcnQpIDwgaW50KHlfcGFy
dCk6CisgICAgICAgICAgICAgICAgcmV0dXJuIC0xCisgICAgICAgICAgICBlbGlmIGludCh4X3Bh
cnQpID4gaW50KHlfcGFydCk6CisgICAgICAgICAgICAgICAgcmV0dXJuIDEKKyAgICAgICAgZWxz
ZToKKyAgICAgICAgICAgIGlmIHhfcGFydCA8IHlfcGFydDoKKyAgICAgICAgICAgICAgICByZXR1
cm4gLTEKKyAgICAgICAgICAgIGVsaWYgeF9wYXJ0ID4geV9wYXJ0OgorICAgICAgICAgICAgICAg
IHJldHVybiAxCisgICAgaWYgeF9wYXJ0czoKKyAgICAgICAgcmV0dXJuIDEKKyAgICBlbGlmIHlf
cGFydHM6CisgICAgICAgIHJldHVybiAtMQorICAgIHJldHVybiAwCmRpZmYgLS1naXQgYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X3J1bm5l
cl91bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91
dF9wYWNrYWdlL3Rlc3RfcnVubmVyX3VuaXR0ZXN0LnB5CmluZGV4IDk3Zjg2MzBmYTkwNzE0OTlk
MmFhNTY0NzhiMTYxYjU2ODliYzY1NjkuLjhiZmE0MjIyMGQ2NTRjYTJlYjIyMWJhMDg4NGFhNTc4
ZTc5NWY0YzcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L2xheW91dF9wYWNrYWdlL3Rlc3RfcnVubmVyX3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfcnVubmVyX3VuaXR0
ZXN0LnB5CkBAIC0xMDIsNSArMTAyLDI3IEBAIGNsYXNzIFRlc3RSdW5uZXJUZXN0KHVuaXR0ZXN0
LlRlc3RDYXNlKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZF90ZXN0c190b19o
dHRwX2xvY2ssIHNldChtdWx0aV90aHJlYWRfcmVzdWx0c1swXVsxXSkpCiAKIAorY2xhc3MgTnVt
ZXJpY0NtcFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiBhc3NlcnRfY21wKHNlbGYs
IHgsIHksIHJlc3VsdCk6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHRlc3RfcnVubmVyLm51
bWVyaWNfY29tcGFyZSh4LCB5KSwgcmVzdWx0KQorCisgICAgZGVmIHRlc3RfbnVtZXJpY19jbXAo
c2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0X2NtcCgnYScsICdhJywgMCkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRfY21wKCdhYicsICdhJywgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRfY21wKCdhJywg
J2FiJywgLTEpCisgICAgICAgIHNlbGYuYXNzZXJ0X2NtcCgnJywgJycsIDApCisgICAgICAgIHNl
bGYuYXNzZXJ0X2NtcCgnJywgJ2FiJywgLTEpCisgICAgICAgIHNlbGYuYXNzZXJ0X2NtcCgnMScs
ICcyJywgLTEpCisgICAgICAgIHNlbGYuYXNzZXJ0X2NtcCgnMicsICcxJywgMSkKKyAgICAgICAg
c2VsZi5hc3NlcnRfY21wKCcxJywgJzEwJywgLTEpCisgICAgICAgIHNlbGYuYXNzZXJ0X2NtcCgn
MicsICcxMCcsIC0xKQorICAgICAgICBzZWxmLmFzc2VydF9jbXAoJ2Zvb18xLmh0bWwnLCAnZm9v
XzIuaHRtbCcsIC0xKQorICAgICAgICBzZWxmLmFzc2VydF9jbXAoJ2Zvb18xLjEuaHRtbCcsICdm
b29fMi5odG1sJywgLTEpCisgICAgICAgIHNlbGYuYXNzZXJ0X2NtcCgnZm9vXzEuaHRtbCcsICdm
b29fMTAuaHRtbCcsIC0xKQorICAgICAgICBzZWxmLmFzc2VydF9jbXAoJ2Zvb18yLmh0bWwnLCAn
Zm9vXzEwLmh0bWwnLCAtMSkKKyAgICAgICAgc2VsZi5hc3NlcnRfY21wKCdmb29fMjMuaHRtbCcs
ICdmb29fMTAuaHRtbCcsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0X2NtcCgnZm9vXzIzLmh0bWwn
LCAnZm9vXzEwMC5odG1sJywgLTEpCisKKwogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAg
ICB1bml0dGVzdC5tYWluKCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>89973</attachid>
            <date>2011-04-17 16:54:13 -0700</date>
            <delta_ts>2011-05-30 16:59:55 -0700</delta_ts>
            <desc>update w/ feedback from tony, restructure loop a bit</desc>
            <filename>bug-58691-20110417165412.patch</filename>
            <type>text/plain</type>
            <size>4439</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODM4OTUKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCA1YjliOWI4ZjNkNmIzYWZmYTkxZWFjNGIyZGY2MmMyYWE0
YWQwNGUxLi4zMDAzMWNhM2Y3NTQwYmQ5YTE0NzkzNGQyZDY4OWUxYmE1OGM0MWU1IDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQg
QEAKKzIwMTEtMDQtMTQgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgbmV3LXJ1bi13ZWJr
aXQtdGVzdHM6IHNvcnQgdGVzdHMgd2l0aCBlbWJlZGRlZCBudW1lcmljCisgICAgICAgIHN1YnN0
cmluZ3MgaW50ZWxsaWdlbnRseQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NTg2OTEKKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfcnVubmVyLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfcnVubmVyX3VuaXR0ZXN0LnB5
OgorCiAyMDExLTA0LTE0ICBFcmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBEaW1pdHJpIEdsYXprb3YuCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X3J1bm5lci5weSBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfcnVu
bmVyLnB5CmluZGV4IGQ4MWI5Yzg4N2E0Mjg5NDA0Nzk1YTFjNmZjNmMwNzA0NDI1MjE0MTEuLjkw
YTdmMDAxNmMwZDFhYjY2ZTk1NzYwOGVjODU1YjJkMTAwMGUyZWEgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfcnVubmVy
LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNr
YWdlL3Rlc3RfcnVubmVyLnB5CkBAIC00Myw2ICs0Myw3IEBAIGltcG9ydCBsb2dnaW5nCiBpbXBv
cnQgbWF0aAogaW1wb3J0IFF1ZXVlCiBpbXBvcnQgcmFuZG9tCitpbXBvcnQgcmUKIGltcG9ydCBz
eXMKIGltcG9ydCB0aW1lCiAKQEAgLTI5NSw3ICsyOTYsNyBAQCBjbGFzcyBUZXN0UnVubmVyOgog
ICAgICAgICBpZiBzZWxmLl9vcHRpb25zLnJhbmRvbWl6ZV9vcmRlcjoKICAgICAgICAgICAgIHJh
bmRvbS5zaHVmZmxlKHNlbGYuX3Rlc3RfZmlsZXNfbGlzdCkKICAgICAgICAgZWxzZToKLSAgICAg
ICAgICAgIHNlbGYuX3Rlc3RfZmlsZXNfbGlzdC5zb3J0KCkKKyAgICAgICAgICAgIHNlbGYuX3Rl
c3RfZmlsZXNfbGlzdC5zb3J0KGNtcD1udW1lcmljX2NvbXBhcmUpCiAKICAgICAgICAgIyBJZiB0
aGUgdXNlciBzcGVjaWZpZXMgdGhleSBqdXN0IHdhbnQgdG8gcnVuIGEgc3Vic2V0IG9mIHRoZSB0
ZXN0cywKICAgICAgICAgIyBqdXN0IGdyYWIgYSBzdWJzZXQgb2YgdGhlIG5vbi1za2lwcGVkIHRl
c3RzLgpAQCAtMTE1MCw3ICsxMTUxLDcgQEAgY2xhc3MgVGVzdFJ1bm5lcjoKICAgICA8aDI+JSh0
aXRsZSlzICglKHRpbWUpcyk8L2gyPgogICAgICAgICAiIiIgJSB7J3RpdGxlJzogdGl0bGUsICd0
aW1lJzogb3ZlcnJpZGVfdGltZSBvciB0aW1lLmFzY3RpbWUoKX0KIAotICAgICAgICBmb3IgdGVz
dF9maWxlIGluIHNvcnRlZCh0ZXN0X2ZpbGVzKToKKyAgICAgICAgZm9yIHRlc3RfZmlsZSBpbiBz
b3J0ZWQodGVzdF9maWxlcywgY21wPW51bWVyaWNfY29tcGFyZSk6CiAgICAgICAgICAgICB0ZXN0
X25hbWUgPSBzZWxmLl9wb3J0LnJlbGF0aXZlX3Rlc3RfZmlsZW5hbWUodGVzdF9maWxlKQogICAg
ICAgICAgICAgdGVzdF91cmwgPSBzZWxmLl9wb3J0LmZpbGVuYW1lX3RvX3VyaSh0ZXN0X2ZpbGUp
CiAgICAgICAgICAgICBwYWdlICs9IHUiPHA+PGEgaHJlZj0nJXMnPiVzPC9hPjxiciAvPlxuIiAl
ICh0ZXN0X3VybCwgdGVzdF9uYW1lKQpAQCAtMTIyMCwzICsxMjIxLDI1IEBAIGRlZiByZWFkX3Rl
c3RfZmlsZXMoZnMsIGZpbGVzKToKICAgICAgICAgICAgICAgICBfbG9nLmNyaXRpY2FsKCctLXRl
c3QtbGlzdCBmaWxlICIlcyIgbm90IGZvdW5kJyAlIGZpbGUpCiAgICAgICAgICAgICByYWlzZQog
ICAgIHJldHVybiB0ZXN0cworCisKK2RlZiBudW1lcmljX2NvbXBhcmUoeCwgeSk6CisgICAgIiIi
Q29tcGFyZXMgdHdvIHN0cmluZ3Mgd2l0aCBlbWJlZGRlZCBudW1lcmljIHN1YnN0cmluZ3MgcHJv
cGVybHkuIiIiCisgICAgeF9wYXJ0cyA9IHJlLnNwbGl0KHInKFxkKyknLCB4KQorICAgIHlfcGFy
dHMgPSByZS5zcGxpdChyJyhcZCspJywgeSkKKworICAgICMgQ29tcGFyZSBvbmUgY2h1bmsgYXQg
YSB0aW1lLgorICAgICMgRWFjaCBjaHVuayBpcyBlaXRoZXIgYWxsIG51bWVyaWMgZGlnaXRzLCBv
ciBhbGwgbm90IG51bWVyaWMgZGlnaXRzLgorICAgIHdoaWxlIHhfcGFydHMgYW5kIHlfcGFydHM6
CisgICAgICAgIHhfcGFydCA9IHhfcGFydHMucG9wKDApCisgICAgICAgIHlfcGFydCA9IHlfcGFy
dHMucG9wKDApCisgICAgICAgIGlmIHhfcGFydCA9PSB5X3BhcnQ6CisgICAgICAgICAgICBjb250
aW51ZQorICAgICAgICBpZiByZS5tYXRjaCgnXlxkJywgeF9wYXJ0KSBhbmQgcmUubWF0Y2goJ15c
ZCcsIHlfcGFydCk6CisgICAgICAgICAgICByZXR1cm4gY21wKGludCh4X3BhcnQpLCBpbnQoeV9w
YXJ0KSkKKyAgICAgICAgcmV0dXJuIGNtcCh4X3BhcnQsIHlfcGFydCkKKyAgICBpZiB4X3BhcnRz
OgorICAgICAgICByZXR1cm4gMQorICAgIGVsaWYgeV9wYXJ0czoKKyAgICAgICAgcmV0dXJuIC0x
CisgICAgcmV0dXJuIDAKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfcnVubmVyX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9ydW5uZXJfdW5p
dHRlc3QucHkKaW5kZXggOTdmODYzMGZhOTA3MTQ5OWQyYWE1NjQ3OGIxNjFiNTY4OWJjNjU2OS4u
OGJmYTQyMjIwZDY1NGNhMmViMjIxYmEwODg0YWE1NzhlNzk1ZjRjNyAxMDA2NDQKLS0tIGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9ydW5u
ZXJfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
bGF5b3V0X3BhY2thZ2UvdGVzdF9ydW5uZXJfdW5pdHRlc3QucHkKQEAgLTEwMiw1ICsxMDIsMjcg
QEAgY2xhc3MgVGVzdFJ1bm5lclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGV4cGVjdGVkX3Rlc3RzX3RvX2h0dHBfbG9jaywgc2V0KG11bHRpX3RocmVh
ZF9yZXN1bHRzWzBdWzFdKSkKIAogCitjbGFzcyBOdW1lcmljQ21wVGVzdCh1bml0dGVzdC5UZXN0
Q2FzZSk6CisgICAgZGVmIGFzc2VydF9jbXAoc2VsZiwgeCwgeSwgcmVzdWx0KToKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbHModGVzdF9ydW5uZXIubnVtZXJpY19jb21wYXJlKHgsIHkpLCByZXN1
bHQpCisKKyAgICBkZWYgdGVzdF9udW1lcmljX2NtcChzZWxmKToKKyAgICAgICAgc2VsZi5hc3Nl
cnRfY21wKCdhJywgJ2EnLCAwKQorICAgICAgICBzZWxmLmFzc2VydF9jbXAoJ2FiJywgJ2EnLCAx
KQorICAgICAgICBzZWxmLmFzc2VydF9jbXAoJ2EnLCAnYWInLCAtMSkKKyAgICAgICAgc2VsZi5h
c3NlcnRfY21wKCcnLCAnJywgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRfY21wKCcnLCAnYWInLCAt
MSkKKyAgICAgICAgc2VsZi5hc3NlcnRfY21wKCcxJywgJzInLCAtMSkKKyAgICAgICAgc2VsZi5h
c3NlcnRfY21wKCcyJywgJzEnLCAxKQorICAgICAgICBzZWxmLmFzc2VydF9jbXAoJzEnLCAnMTAn
LCAtMSkKKyAgICAgICAgc2VsZi5hc3NlcnRfY21wKCcyJywgJzEwJywgLTEpCisgICAgICAgIHNl
bGYuYXNzZXJ0X2NtcCgnZm9vXzEuaHRtbCcsICdmb29fMi5odG1sJywgLTEpCisgICAgICAgIHNl
bGYuYXNzZXJ0X2NtcCgnZm9vXzEuMS5odG1sJywgJ2Zvb18yLmh0bWwnLCAtMSkKKyAgICAgICAg
c2VsZi5hc3NlcnRfY21wKCdmb29fMS5odG1sJywgJ2Zvb18xMC5odG1sJywgLTEpCisgICAgICAg
IHNlbGYuYXNzZXJ0X2NtcCgnZm9vXzIuaHRtbCcsICdmb29fMTAuaHRtbCcsIC0xKQorICAgICAg
ICBzZWxmLmFzc2VydF9jbXAoJ2Zvb18yMy5odG1sJywgJ2Zvb18xMC5odG1sJywgMSkKKyAgICAg
ICAgc2VsZi5hc3NlcnRfY21wKCdmb29fMjMuaHRtbCcsICdmb29fMTAwLmh0bWwnLCAtMSkKKwor
CiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIHVuaXR0ZXN0Lm1haW4oKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>95383</attachid>
            <date>2011-05-30 16:59:59 -0700</date>
            <delta_ts>2011-06-14 18:40:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-58691-20110530165957.patch</filename>
            <type>text/plain</type>
            <size>4003</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODc2OTcKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCAzNmU5ZDE0ZTEyN2M4MzZkMzcwNGQxMDAzMDY1ZjFiNmQ1
M2VlZDc0Li4zYzk4NGMwNjhjMWJjZjRlZTJlYTMxNjNlYTkyZWJiMDRiNjg4YjRlIDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQg
QEAKKzIwMTEtMDUtMzAgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgbmV3LXJ1bi13ZWJr
aXQtdGVzdHM6IHNvcnQgdGVzdHMgd2l0aCBlbWJlZGRlZCBudW1lcmljCisgICAgICAgIHN1YnN0
cmluZ3MgaW50ZWxsaWdlbnRseQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NTg2OTEKKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL2xheW91dF9wYWNrYWdlL21hbmFnZXIucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvbWFuYWdlcl91bml0dGVzdC5weToKKwogMjAx
MS0wNS0zMCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgTWFydGluIFJvYmluc29uLgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvbWFuYWdlci5weSBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL21hbmFnZXIu
cHkKaW5kZXggNzRiOGY4MGYwM2UzMzgyZDkwY2ZkNTBmOWI1NjJkOGFmYmI0MjFjNy4uZTUzMDQ5
YzhjNzdiMDViZjRiYmE3ZTljNTk1ZjgxMzFiMDYyMWFlOCAxMDA2NDQKLS0tIGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvbWFuYWdlci5weQorKysg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9tYW5h
Z2VyLnB5CkBAIC00Myw2ICs0Myw3IEBAIGltcG9ydCBsb2dnaW5nCiBpbXBvcnQgbWF0aAogaW1w
b3J0IFF1ZXVlCiBpbXBvcnQgcmFuZG9tCitpbXBvcnQgcmUKIGltcG9ydCBzeXMKIGltcG9ydCB0
aW1lCiAKQEAgLTM2OSw3ICszNzAsNyBAQCBjbGFzcyBNYW5hZ2VyOgogICAgICAgICBpZiBzZWxm
Ll9vcHRpb25zLnJhbmRvbWl6ZV9vcmRlcjoKICAgICAgICAgICAgIHJhbmRvbS5zaHVmZmxlKHNl
bGYuX3Rlc3RfZmlsZXNfbGlzdCkKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuX3Rl
c3RfZmlsZXNfbGlzdC5zb3J0KCkKKyAgICAgICAgICAgIHNlbGYuX3Rlc3RfZmlsZXNfbGlzdC5z
b3J0KGNtcD1udW1lcmljX2NvbXBhcmUpCiAKICAgICAgICAgIyBJZiB0aGUgdXNlciBzcGVjaWZp
ZXMgdGhleSBqdXN0IHdhbnQgdG8gcnVuIGEgc3Vic2V0IG9mIHRoZSB0ZXN0cywKICAgICAgICAg
IyBqdXN0IGdyYWIgYSBzdWJzZXQgb2YgdGhlIG5vbi1za2lwcGVkIHRlc3RzLgpAQCAtMTM0NSw2
ICsxMzQ2LDI4IEBAIGRlZiByZWFkX3Rlc3RfZmlsZXMoZnMsIGZpbGVzKToKICAgICByZXR1cm4g
dGVzdHMKIAogCitkZWYgbnVtZXJpY19jb21wYXJlKHgsIHkpOgorICAgICIiIkNvbXBhcmVzIHR3
byBzdHJpbmdzIHdpdGggZW1iZWRkZWQgbnVtZXJpYyBzdWJzdHJpbmdzIHByb3Blcmx5LiIiIgor
ICAgIHhfcGFydHMgPSByZS5zcGxpdChyJyhcZCspJywgeCkKKyAgICB5X3BhcnRzID0gcmUuc3Bs
aXQocicoXGQrKScsIHkpCisKKyAgICAjIENvbXBhcmUgb25lIGNodW5rIGF0IGEgdGltZS4KKyAg
ICAjIEVhY2ggY2h1bmsgaXMgZWl0aGVyIGFsbCBudW1lcmljIGRpZ2l0cywgb3IgYWxsIG5vdCBu
dW1lcmljIGRpZ2l0cy4KKyAgICB3aGlsZSB4X3BhcnRzIGFuZCB5X3BhcnRzOgorICAgICAgICB4
X3BhcnQgPSB4X3BhcnRzLnBvcCgwKQorICAgICAgICB5X3BhcnQgPSB5X3BhcnRzLnBvcCgwKQor
ICAgICAgICBpZiB4X3BhcnQgPT0geV9wYXJ0OgorICAgICAgICAgICAgY29udGludWUKKyAgICAg
ICAgaWYgcmUubWF0Y2goJ15cZCcsIHhfcGFydCkgYW5kIHJlLm1hdGNoKCdeXGQnLCB5X3BhcnQp
OgorICAgICAgICAgICAgcmV0dXJuIGNtcChpbnQoeF9wYXJ0KSwgaW50KHlfcGFydCkpCisgICAg
ICAgIHJldHVybiBjbXAoeF9wYXJ0LCB5X3BhcnQpCisgICAgaWYgeF9wYXJ0czoKKyAgICAgICAg
cmV0dXJuIDEKKyAgICBlbGlmIHlfcGFydHM6CisgICAgICAgIHJldHVybiAtMQorICAgIHJldHVy
biAwCisKKwogY2xhc3MgX1dvcmtlclN0YXRlKG9iamVjdCk6CiAgICAgIiIiQSBjbGFzcyBmb3Ig
dGhlIG1hbmFnZXIgdG8gdXNlIHRvIHRyYWNrIHRoZSBjdXJyZW50IHN0YXRlIG9mIHRoZSB3b3Jr
ZXJzLiIiIgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBudW1iZXIsIHdvcmtlcl9jb25uZWN0aW9u
KToKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91
dF9wYWNrYWdlL21hbmFnZXJfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9tYW5hZ2VyX3VuaXR0ZXN0LnB5CmluZGV4IDQzY2Vk
NWE0MzYzY2IyZDY5ODJmYzUwYzFjYmJkMDNmZTI0ZjA5MmQuLjgwNWQ4OWUzN2UyOGZiMjRiMzhl
ODc1Nzg5YjIwYTBhZGNkYWFhMDAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL21hbmFnZXJfdW5pdHRlc3QucHkKKysrIGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvbWFuYWdlcl91
bml0dGVzdC5weQpAQCAtODAsNSArODAsMjcgQEAgY2xhc3MgTWFuYWdlclRlc3QodW5pdHRlc3Qu
VGVzdENhc2UpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkX3Rlc3RzX3RvX2h0
dHBfbG9jaywgc2V0KG11bHRpX3RocmVhZF9yZXN1bHRzWzBdWzFdKSkKIAogCitjbGFzcyBOdW1l
cmljQ21wVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIGFzc2VydF9jbXAoc2VsZiwg
eCwgeSwgcmVzdWx0KToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMobWFuYWdlci5udW1lcmlj
X2NvbXBhcmUoeCwgeSksIHJlc3VsdCkKKworICAgIGRlZiB0ZXN0X251bWVyaWNfY21wKHNlbGYp
OgorICAgICAgICBzZWxmLmFzc2VydF9jbXAoJ2EnLCAnYScsIDApCisgICAgICAgIHNlbGYuYXNz
ZXJ0X2NtcCgnYWInLCAnYScsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0X2NtcCgnYScsICdhYics
IC0xKQorICAgICAgICBzZWxmLmFzc2VydF9jbXAoJycsICcnLCAwKQorICAgICAgICBzZWxmLmFz
c2VydF9jbXAoJycsICdhYicsIC0xKQorICAgICAgICBzZWxmLmFzc2VydF9jbXAoJzEnLCAnMics
IC0xKQorICAgICAgICBzZWxmLmFzc2VydF9jbXAoJzInLCAnMScsIDEpCisgICAgICAgIHNlbGYu
YXNzZXJ0X2NtcCgnMScsICcxMCcsIC0xKQorICAgICAgICBzZWxmLmFzc2VydF9jbXAoJzInLCAn
MTAnLCAtMSkKKyAgICAgICAgc2VsZi5hc3NlcnRfY21wKCdmb29fMS5odG1sJywgJ2Zvb18yLmh0
bWwnLCAtMSkKKyAgICAgICAgc2VsZi5hc3NlcnRfY21wKCdmb29fMS4xLmh0bWwnLCAnZm9vXzIu
aHRtbCcsIC0xKQorICAgICAgICBzZWxmLmFzc2VydF9jbXAoJ2Zvb18xLmh0bWwnLCAnZm9vXzEw
Lmh0bWwnLCAtMSkKKyAgICAgICAgc2VsZi5hc3NlcnRfY21wKCdmb29fMi5odG1sJywgJ2Zvb18x
MC5odG1sJywgLTEpCisgICAgICAgIHNlbGYuYXNzZXJ0X2NtcCgnZm9vXzIzLmh0bWwnLCAnZm9v
XzEwLmh0bWwnLCAxKQorICAgICAgICBzZWxmLmFzc2VydF9jbXAoJ2Zvb18yMy5odG1sJywgJ2Zv
b18xMDAuaHRtbCcsIC0xKQorCisKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgdW5p
dHRlc3QubWFpbigpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>97215</attachid>
            <date>2011-06-14 18:40:27 -0700</date>
            <delta_ts>2011-06-14 20:11:20 -0700</delta_ts>
            <desc>use a key= method instead of cmp=, rename to &apos;natural&apos; sorting</desc>
            <filename>bug-58691-20110614184026.patch</filename>
            <type>text/plain</type>
            <size>4052</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODg2ODUKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCA4OTJlM2YxMjI5ODA5MDQzYjIwNGNmZGYwYzI1YjRiMTA0
NmZjYjgyLi40OTNlZmU4YzRkODJkNmRmODNiOTk1ZDBkNmVlMTBmZDVjYWQ1NjhiIDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcg
QEAKKzIwMTEtMDYtMTQgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgbmV3LXJ1bi13ZWJr
aXQtdGVzdHM6IHNvcnQgdGVzdHMgd2l0aCBlbWJlZGRlZCBudW1lcmljCisgICAgICAgIHN1YnN0
cmluZ3MgaW50ZWxsaWdlbnRseQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NTg2OTEKKworICAgICAgICBUaGlzIGNoYW5nZXMgdGhlIHNvcnRpbmcgdG8g
dXNlIGEgIm5hdHVyYWwiIHNvcnQgb3JkZXIgc3VjaCB0aGF0CisgICAgICAgIGZvbzIuaHRtbCBz
b3J0cyBiZWZvcmUgZm9vMTMuaHRtbC4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL21hbmFnZXIucHk6CisgICAgICAgICogU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvbWFuYWdlcl91bml0dGVzdC5weToK
KwogMjAxMS0wNi0xMyAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+
CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjg4NjcxLgpkaWZmIC0tZ2l0IGEv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvbWFuYWdl
ci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdl
L21hbmFnZXIucHkKaW5kZXggYmM5ZWFmMmMzOGM0ZjZjN2UwOTdhOGRmMmZkYjAzYTQ5MzMyNWUz
Ni4uM2E2NWIwYzJkNzJhMWI5YzAzODhkYzRjZTg3OGRiZmRhMGJjNTAyOSAxMDA2NDQKLS0tIGEv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvbWFuYWdl
ci5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFj
a2FnZS9tYW5hZ2VyLnB5CkBAIC00Myw2ICs0Myw3IEBAIGltcG9ydCBsb2dnaW5nCiBpbXBvcnQg
bWF0aAogaW1wb3J0IFF1ZXVlCiBpbXBvcnQgcmFuZG9tCitpbXBvcnQgcmUKIGltcG9ydCBzeXMK
IGltcG9ydCB0aW1lCiAKQEAgLTM2OSw3ICszNzAsNyBAQCBjbGFzcyBNYW5hZ2VyOgogICAgICAg
ICBpZiBzZWxmLl9vcHRpb25zLnJhbmRvbWl6ZV9vcmRlcjoKICAgICAgICAgICAgIHJhbmRvbS5z
aHVmZmxlKHNlbGYuX3Rlc3RfZmlsZXNfbGlzdCkKICAgICAgICAgZWxzZToKLSAgICAgICAgICAg
IHNlbGYuX3Rlc3RfZmlsZXNfbGlzdC5zb3J0KCkKKyAgICAgICAgICAgIHNlbGYuX3Rlc3RfZmls
ZXNfbGlzdC5zb3J0KGtleT1uYXR1cmFsX3NvcnRfa2V5KQogCiAgICAgICAgICMgSWYgdGhlIHVz
ZXIgc3BlY2lmaWVzIHRoZXkganVzdCB3YW50IHRvIHJ1biBhIHN1YnNldCBvZiB0aGUgdGVzdHMs
CiAgICAgICAgICMganVzdCBncmFiIGEgc3Vic2V0IG9mIHRoZSBub24tc2tpcHBlZCB0ZXN0cy4K
QEAgLTEzNDgsNiArMTM0OSwyMyBAQCBkZWYgcmVhZF90ZXN0X2ZpbGVzKGZzLCBmaWxlcyk6CiAg
ICAgcmV0dXJuIHRlc3RzCiAKIAorZGVmIG5hdHVyYWxfc29ydF9rZXkoc3RyaW5nX3RvX3NwbGl0
KToKKyAgICAiIiIgVHVybiBhIHN0cmluZyBpbnRvIGEgbGlzdCBvZiBzdHJpbmcgYW5kIG51bWJl
ciBjaHVua3MuCisgICAgICAgICJ6MjNhIiAtPiBbInoiLCAyMywgImEiXQorCisgICAgICAgIENh
biBiZSB1c2VkIHRvIGltcGxlbWVudCAibmF0dXJhbCBzb3J0IiBvcmRlci4gU2VlOgorICAgICAg
ICAgICAgaHR0cDovL3d3dy5jb2Rpbmdob3Jyb3IuY29tL2Jsb2cvMjAwNy8xMi9zb3J0aW5nLWZv
ci1odW1hbnMtbmF0dXJhbC1zb3J0LW9yZGVyLmh0bWwKKyAgICAgICAgICAgIGh0dHA6Ly9uZWRi
YXRjaGVsZGVyLmNvbS9ibG9nLzIwMDcxMi5odG1sI2UyMDA3MTIxMVQwNTQ5NTYKKyAgICAiIiIK
KyAgICBkZWYgdHJ5aW50KHZhbCk6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJldHVybiBp
bnQodmFsKQorICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICByZXR1cm4gdmFsCisKKyAgICBy
ZXR1cm4gW3RyeWludChjaHVuaykgZm9yIGNodW5rIGluIHJlLnNwbGl0KCcoXGQrKScsIHN0cmlu
Z190b19zcGxpdCldCisKKwogY2xhc3MgX1dvcmtlclN0YXRlKG9iamVjdCk6CiAgICAgIiIiQSBj
bGFzcyBmb3IgdGhlIG1hbmFnZXIgdG8gdXNlIHRvIHRyYWNrIHRoZSBjdXJyZW50IHN0YXRlIG9m
IHRoZSB3b3JrZXJzLiIiIgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBudW1iZXIsIHdvcmtlcl9j
b25uZWN0aW9uKToKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL2xheW91dF9wYWNrYWdlL21hbmFnZXJfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9tYW5hZ2VyX3VuaXR0ZXN0LnB5Cmlu
ZGV4IDQzY2VkNWE0MzYzY2IyZDY5ODJmYzUwYzFjYmJkMDNmZTI0ZjA5MmQuLmJkMmRmZTgyOGM1
ZTNkZjUyZWY4OTAzMTI5NzY5Zjg3NjYwZjAzNDUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL21hbmFnZXJfdW5pdHRlc3QucHkK
KysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2Uv
bWFuYWdlcl91bml0dGVzdC5weQpAQCAtODAsNSArODAsMjcgQEAgY2xhc3MgTWFuYWdlclRlc3Qo
dW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkX3Rl
c3RzX3RvX2h0dHBfbG9jaywgc2V0KG11bHRpX3RocmVhZF9yZXN1bHRzWzBdWzFdKSkKIAogCitj
bGFzcyBOYXR1cmFsQ29tcGFyZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiBhc3Nl
cnRfY21wKHNlbGYsIHgsIHksIHJlc3VsdCk6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGNt
cChtYW5hZ2VyLm5hdHVyYWxfc29ydF9rZXkoeCksIG1hbmFnZXIubmF0dXJhbF9zb3J0X2tleSh5
KSksIHJlc3VsdCkKKworICAgIGRlZiB0ZXN0X25hdHVyYWxfY29tcGFyZShzZWxmKToKKyAgICAg
ICAgc2VsZi5hc3NlcnRfY21wKCdhJywgJ2EnLCAwKQorICAgICAgICBzZWxmLmFzc2VydF9jbXAo
J2FiJywgJ2EnLCAxKQorICAgICAgICBzZWxmLmFzc2VydF9jbXAoJ2EnLCAnYWInLCAtMSkKKyAg
ICAgICAgc2VsZi5hc3NlcnRfY21wKCcnLCAnJywgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRfY21w
KCcnLCAnYWInLCAtMSkKKyAgICAgICAgc2VsZi5hc3NlcnRfY21wKCcxJywgJzInLCAtMSkKKyAg
ICAgICAgc2VsZi5hc3NlcnRfY21wKCcyJywgJzEnLCAxKQorICAgICAgICBzZWxmLmFzc2VydF9j
bXAoJzEnLCAnMTAnLCAtMSkKKyAgICAgICAgc2VsZi5hc3NlcnRfY21wKCcyJywgJzEwJywgLTEp
CisgICAgICAgIHNlbGYuYXNzZXJ0X2NtcCgnZm9vXzEuaHRtbCcsICdmb29fMi5odG1sJywgLTEp
CisgICAgICAgIHNlbGYuYXNzZXJ0X2NtcCgnZm9vXzEuMS5odG1sJywgJ2Zvb18yLmh0bWwnLCAt
MSkKKyAgICAgICAgc2VsZi5hc3NlcnRfY21wKCdmb29fMS5odG1sJywgJ2Zvb18xMC5odG1sJywg
LTEpCisgICAgICAgIHNlbGYuYXNzZXJ0X2NtcCgnZm9vXzIuaHRtbCcsICdmb29fMTAuaHRtbCcs
IC0xKQorICAgICAgICBzZWxmLmFzc2VydF9jbXAoJ2Zvb18yMy5odG1sJywgJ2Zvb18xMC5odG1s
JywgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRfY21wKCdmb29fMjMuaHRtbCcsICdmb29fMTAwLmh0
bWwnLCAtMSkKKworCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIHVuaXR0ZXN0Lm1h
aW4oKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>97223</attachid>
            <date>2011-06-14 20:11:24 -0700</date>
            <delta_ts>2011-06-16 14:47:47 -0700</delta_ts>
            <desc>fix path sorting as well</desc>
            <filename>bug-58691-20110614201123.patch</filename>
            <type>text/plain</type>
            <size>7104</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODg2ODUKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCA4OTJlM2YxMjI5ODA5MDQzYjIwNGNmZGYwYzI1YjRiMTA0
NmZjYjgyLi43NGQzNDg0ZGUyNDVkZGI4OTMzMzkxODM2OWNiZjg1ZGFhZGM5Y2M4IDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMg
QEAKKzIwMTEtMDYtMTQgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgbmV3LXJ1bi13ZWJr
aXQtdGVzdHM6IGZpeCB0ZXN0IHNvcnRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTU4NjkxCisKKyAgICAgICAgVGhpcyBjaGFuZ2VzIHRoZSBzb3J0
aW5nIHRvIHVzZSBhICJuYXR1cmFsIiBzb3J0IG9yZGVyIHN1Y2ggdGhhdAorICAgICAgICBmb28y
Lmh0bWwgc29ydHMgYmVmb3JlIGZvbzEzLmh0bWwsIGFuZCBzb3J0cyB0aGUgdGVzdHMgc28KKyAg
ICAgICAgdGhhdCBhbGwgdGhlIHRlc3RzIGluIGEgZGlyZWN0b3J5IGFyZSBydW4gYmVmb3JlIGFu
eSB0ZXN0IGluIGEKKyAgICAgICAgc3ViZGlyZWN0b3J5LgorCisgICAgICAgIFRoaXMgY2hhbmdl
IGFsc28gYWRkcyBhIHNwbGl0KCkgbWV0aG9kIHRvIHRoZSBmaWxlc3lzdGVtIHNpbmNlCisgICAg
ICAgIHRoYXQgaXMgbmVlZGVkIHRvIGNsdXN0ZXIgZmlsZXMgaW50byBhIGRpcmVjdG9yeSBvdGhl
cndpc2UuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZmlsZXN5
c3RlbS5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZmlsZXN5
c3RlbV9tb2NrLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xh
eW91dF9wYWNrYWdlL21hbmFnZXIucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvbWFuYWdlcl91bml0dGVzdC5weToKKwogMjAxMS0wNi0x
MyAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAg
VW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjg4NjcxLgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2ZpbGVzeXN0ZW0ucHkgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2NvbW1vbi9zeXN0ZW0vZmlsZXN5c3RlbS5weQppbmRleCA1OGJlMDNhOWVjNjRmMTQz
M2FlYzY5YTcwY2RjYzQzNmM4YTBiZDE5Li41MTUwNDA4NTdkMjU5OWExMDdkYjdhMDMxMWVhMThk
MDBkNjE0OTg1IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0
ZW0vZmlsZXN5c3RlbS5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0
ZW0vZmlsZXN5c3RlbS5weQpAQCAtMjYzLDYgKzI2MywxMCBAQCBjbGFzcyBGaWxlU3lzdGVtKG9i
amVjdCk6CiAgICAgICAgIHdpdGggY29kZWNzLm9wZW4ocGF0aCwgJ3InLCAndXRmOCcpIGFzIGY6
CiAgICAgICAgICAgICByZXR1cm4gZi5yZWFkKCkKIAorICAgIGRlZiBzcGxpdChzZWxmLCBwYXRo
KToKKyAgICAgICAgIiIiUmV0dXJuIChkaXJuYW1lLCBiYXNlbmFtZSArICcuJyArIGV4dCkiIiIK
KyAgICAgICAgcmV0dXJuIG9zLnBhdGguc3BsaXQocGF0aCkKKwogICAgIGRlZiBzcGxpdGV4dChz
ZWxmLCBwYXRoKToKICAgICAgICAgIiIiUmV0dXJuIChkaXJuYW1lICsgb3Muc2VwICsgYmFzZW5h
bWUsICcuJyArIGV4dCkiIiIKICAgICAgICAgcmV0dXJuIG9zLnBhdGguc3BsaXRleHQocGF0aCkK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9maWxlc3lz
dGVtX21vY2sucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZmlsZXN5
c3RlbV9tb2NrLnB5CmluZGV4IDUwZDRmNWFkZWJiMDJiMzM0ZDE1NTQ3NGQyZjNiODQzOTUxNGVj
MTUuLjBlZTQwMzRlMjhhMTFjYjAwNDM1OGE5NjUwYWVkY2E4NThjMDc1NzAgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9maWxlc3lzdGVtX21vY2sucHkK
KysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2ZpbGVzeXN0ZW1fbW9j
ay5weQpAQCAtMjc3LDYgKzI3NywxMiBAQCBjbGFzcyBNb2NrRmlsZVN5c3RlbShvYmplY3QpOgog
ICAgICAgICAgICAgaWYgZC5zdGFydHN3aXRoKHBhdGgpOgogICAgICAgICAgICAgICAgIHNlbGYu
ZGlyc1tkXSA9IE5vbmUKIAorICAgIGRlZiBzcGxpdChzZWxmLCBwYXRoKToKKyAgICAgICAgaWR4
ID0gcGF0aC5yZmluZChzZWxmLnNlcCkKKyAgICAgICAgaWYgaWR4ID09IC0xOgorICAgICAgICAg
ICAgcmV0dXJuICgnJywgcGF0aCkKKyAgICAgICAgcmV0dXJuIChwYXRoWzA6aWR4XSwgcGF0aFtp
ZHg6XSkKKwogICAgIGRlZiBzcGxpdGV4dChzZWxmLCBwYXRoKToKICAgICAgICAgaWR4ID0gcGF0
aC5yZmluZCgnLicpCiAgICAgICAgIGlmIGlkeCA9PSAtMToKZGlmZiAtLWdpdCBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL21hbmFnZXIucHkgYi9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9tYW5hZ2Vy
LnB5CmluZGV4IGJjOWVhZjJjMzhjNGY2YzdlMDk3YThkZjJmZGIwM2E0OTMzMjVlMzYuLjg5NzI1
NzQxZTlkZjg0YTVkNzYwYzEwNjIwNDhkZmM1NzRhNTkwMTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL21hbmFnZXIucHkKKysr
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvbWFu
YWdlci5weQpAQCAtNDMsNiArNDMsNyBAQCBpbXBvcnQgbG9nZ2luZwogaW1wb3J0IG1hdGgKIGlt
cG9ydCBRdWV1ZQogaW1wb3J0IHJhbmRvbQoraW1wb3J0IHJlCiBpbXBvcnQgc3lzCiBpbXBvcnQg
dGltZQogCkBAIC0zNjksNyArMzcwLDggQEAgY2xhc3MgTWFuYWdlcjoKICAgICAgICAgaWYgc2Vs
Zi5fb3B0aW9ucy5yYW5kb21pemVfb3JkZXI6CiAgICAgICAgICAgICByYW5kb20uc2h1ZmZsZShz
ZWxmLl90ZXN0X2ZpbGVzX2xpc3QpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLl90
ZXN0X2ZpbGVzX2xpc3Quc29ydCgpCisgICAgICAgICAgICBzZWxmLl90ZXN0X2ZpbGVzX2xpc3Qu
c29ydChrZXk9bmF0dXJhbF9zb3J0X2tleSkKKyAgICAgICAgICAgIHNlbGYuX3Rlc3RfZmlsZXNf
bGlzdC5zb3J0KGtleT1sYW1iZGEgcGF0aDogcGF0aF9rZXkoc2VsZi5fZnMsIHBhdGgpKQogCiAg
ICAgICAgICMgSWYgdGhlIHVzZXIgc3BlY2lmaWVzIHRoZXkganVzdCB3YW50IHRvIHJ1biBhIHN1
YnNldCBvZiB0aGUgdGVzdHMsCiAgICAgICAgICMganVzdCBncmFiIGEgc3Vic2V0IG9mIHRoZSBu
b24tc2tpcHBlZCB0ZXN0cy4KQEAgLTEzNDgsNiArMTM1MCwzNCBAQCBkZWYgcmVhZF90ZXN0X2Zp
bGVzKGZzLCBmaWxlcyk6CiAgICAgcmV0dXJuIHRlc3RzCiAKIAorZGVmIHBhdGhfa2V5KGZpbGVz
eXN0ZW0sIHBhdGgpOgorICAgICIiIlR1cm5zIGEgcGF0aCBpbnRvIGEgbGlzdCB3aXRoIHR3byBz
dWJsaXN0cywgdGhlIG5hdHVyYWwga2V5IG9mIHRoZQorICAgIGRpcm5hbWUsIGFuZCB0aGUgbmF0
dXJhbCBrZXkgb2YgdGhlIGJhc2VuYW1lLgorCisgICAgVGhpcyBjYW4gYmUgdXNlZCB3aGVuIHNv
cnRpbmcgcGF0aHMgc28gdGhhdCBmaWxlcyBpbiBhIGRpcmVjdG9yeS4KKyAgICBkaXJlY3Rvcnkg
YXJlIGtlcHQgdG9nZXRoZXIgcmF0aGVyIHRoYW4gYmVpbmcgbWl4ZWQgaW4gd2l0aCBmaWxlcyBp
bgorICAgIHN1YmRpcmVjdG9yaWVzLiIiIgorICAgIGRpcm5hbWUsIGJhc2VuYW1lID0gZmlsZXN5
c3RlbS5zcGxpdChwYXRoKQorICAgIHJldHVybiAobmF0dXJhbF9zb3J0X2tleShkaXJuYW1lICsg
ZmlsZXN5c3RlbS5zZXApLCBuYXR1cmFsX3NvcnRfa2V5KGJhc2VuYW1lKSkKKworCitkZWYgbmF0
dXJhbF9zb3J0X2tleShzdHJpbmdfdG9fc3BsaXQpOgorICAgICIiIiBUdXJuIGEgc3RyaW5nIGlu
dG8gYSBsaXN0IG9mIHN0cmluZyBhbmQgbnVtYmVyIGNodW5rcy4KKyAgICAgICAgInoyM2EiIC0+
IFsieiIsIDIzLCAiYSJdCisKKyAgICAgICAgQ2FuIGJlIHVzZWQgdG8gaW1wbGVtZW50ICJuYXR1
cmFsIHNvcnQiIG9yZGVyLiBTZWU6CisgICAgICAgICAgICBodHRwOi8vd3d3LmNvZGluZ2hvcnJv
ci5jb20vYmxvZy8yMDA3LzEyL3NvcnRpbmctZm9yLWh1bWFucy1uYXR1cmFsLXNvcnQtb3JkZXIu
aHRtbAorICAgICAgICAgICAgaHR0cDovL25lZGJhdGNoZWxkZXIuY29tL2Jsb2cvMjAwNzEyLmh0
bWwjZTIwMDcxMjExVDA1NDk1NgorICAgICIiIgorICAgIGRlZiB0cnlpbnQodmFsKToKKyAgICAg
ICAgdHJ5OgorICAgICAgICAgICAgcmV0dXJuIGludCh2YWwpCisgICAgICAgIGV4Y2VwdDoKKyAg
ICAgICAgICAgIHJldHVybiB2YWwKKworICAgIHJldHVybiBbdHJ5aW50KGNodW5rKSBmb3IgY2h1
bmsgaW4gcmUuc3BsaXQoJyhcZCspJywgc3RyaW5nX3RvX3NwbGl0KV0KKworCiBjbGFzcyBfV29y
a2VyU3RhdGUob2JqZWN0KToKICAgICAiIiJBIGNsYXNzIGZvciB0aGUgbWFuYWdlciB0byB1c2Ug
dG8gdHJhY2sgdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlIHdvcmtlcnMuIiIiCiAgICAgZGVmIF9f
aW5pdF9fKHNlbGYsIG51bWJlciwgd29ya2VyX2Nvbm5lY3Rpb24pOgpkaWZmIC0tZ2l0IGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvbWFuYWdlcl91
bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9w
YWNrYWdlL21hbmFnZXJfdW5pdHRlc3QucHkKaW5kZXggNDNjZWQ1YTQzNjNjYjJkNjk4MmZjNTBj
MWNiYmQwM2ZlMjRmMDkyZC4uNGQxMTQyNjM0Njc2OTIxMmM2MTc2NjYyYTFmYzUzYjkxYjg3M2Mw
MCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0
X3BhY2thZ2UvbWFuYWdlcl91bml0dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9tYW5hZ2VyX3VuaXR0ZXN0LnB5CkBAIC04MCw1
ICs4MCw0OCBAQCBjbGFzcyBNYW5hZ2VyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWRfdGVzdHNfdG9faHR0cF9sb2NrLCBzZXQobXVsdGlf
dGhyZWFkX3Jlc3VsdHNbMF1bMV0pKQogCiAKK2NsYXNzIE5hdHVyYWxDb21wYXJlVGVzdCh1bml0
dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIGFzc2VydF9jbXAoc2VsZiwgeCwgeSwgcmVzdWx0KToK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoY21wKG1hbmFnZXIubmF0dXJhbF9zb3J0X2tleSh4
KSwgbWFuYWdlci5uYXR1cmFsX3NvcnRfa2V5KHkpKSwgcmVzdWx0KQorCisgICAgZGVmIHRlc3Rf
bmF0dXJhbF9jb21wYXJlKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydF9jbXAoJ2EnLCAnYScs
IDApCisgICAgICAgIHNlbGYuYXNzZXJ0X2NtcCgnYWInLCAnYScsIDEpCisgICAgICAgIHNlbGYu
YXNzZXJ0X2NtcCgnYScsICdhYicsIC0xKQorICAgICAgICBzZWxmLmFzc2VydF9jbXAoJycsICcn
LCAwKQorICAgICAgICBzZWxmLmFzc2VydF9jbXAoJycsICdhYicsIC0xKQorICAgICAgICBzZWxm
LmFzc2VydF9jbXAoJzEnLCAnMicsIC0xKQorICAgICAgICBzZWxmLmFzc2VydF9jbXAoJzInLCAn
MScsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0X2NtcCgnMScsICcxMCcsIC0xKQorICAgICAgICBz
ZWxmLmFzc2VydF9jbXAoJzInLCAnMTAnLCAtMSkKKyAgICAgICAgc2VsZi5hc3NlcnRfY21wKCdm
b29fMS5odG1sJywgJ2Zvb18yLmh0bWwnLCAtMSkKKyAgICAgICAgc2VsZi5hc3NlcnRfY21wKCdm
b29fMS4xLmh0bWwnLCAnZm9vXzIuaHRtbCcsIC0xKQorICAgICAgICBzZWxmLmFzc2VydF9jbXAo
J2Zvb18xLmh0bWwnLCAnZm9vXzEwLmh0bWwnLCAtMSkKKyAgICAgICAgc2VsZi5hc3NlcnRfY21w
KCdmb29fMi5odG1sJywgJ2Zvb18xMC5odG1sJywgLTEpCisgICAgICAgIHNlbGYuYXNzZXJ0X2Nt
cCgnZm9vXzIzLmh0bWwnLCAnZm9vXzEwLmh0bWwnLCAxKQorICAgICAgICBzZWxmLmFzc2VydF9j
bXAoJ2Zvb18yMy5odG1sJywgJ2Zvb18xMDAuaHRtbCcsIC0xKQorCisKK2NsYXNzIFBhdGhDb21w
YXJlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAg
ICBzZWxmLmZpbGVzeXN0ZW0gPSBmaWxlc3lzdGVtX21vY2suTW9ja0ZpbGVTeXN0ZW0oKQorCisg
ICAgZGVmIHBhdGhfa2V5KHNlbGYsIGspOgorICAgICAgICByZXR1cm4gbWFuYWdlci5wYXRoX2tl
eShzZWxmLmZpbGVzeXN0ZW0sIGspCisKKyAgICBkZWYgYXNzZXJ0X2NtcChzZWxmLCB4LCB5LCBy
ZXN1bHQpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhjbXAoc2VsZi5wYXRoX2tleSh4KSwg
c2VsZi5wYXRoX2tleSh5KSksIHJlc3VsdCkKKworICAgIGRlZiB0ZXN0X3BhdGhfY29tcGFyZShz
ZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRfY21wKCcvYScsICcvYScsIDApCisgICAgICAgIHNl
bGYuYXNzZXJ0X2NtcCgnL2EnLCAnL2InLCAtMSkKKyAgICAgICAgc2VsZi5hc3NlcnRfY21wKCcv
YTInLCAnL2ExMCcsIC0xKQorICAgICAgICBzZWxmLmFzc2VydF9jbXAoJy9hMi9mb28nLCAnL2Ex
MC9mb28nLCAtMSkKKyAgICAgICAgc2VsZi5hc3NlcnRfY21wKCcvYS9mb28xMScsICcvYS9mb28y
JywgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRfY21wKCcvYWInLCAnL2EvYS9iJywgLTEpCisgICAg
ICAgIHNlbGYuYXNzZXJ0X2NtcCgnL2EvYS9iJywgJy9hYicsIDEpCisgICAgICAgIHNlbGYuYXNz
ZXJ0X2NtcCgnL2Zvby1iYXIvYmF6JywgJy9mb28vYmF6JywgLTEpCisKKwogaWYgX19uYW1lX18g
PT0gJ19fbWFpbl9fJzoKICAgICB1bml0dGVzdC5tYWluKCkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>97505</attachid>
            <date>2011-06-16 14:47:51 -0700</date>
            <delta_ts>2011-06-18 13:37:00 -0700</delta_ts>
            <desc>update w/ feedback from tony, remove extraneous extra sort</desc>
            <filename>bug-58691-20110616144750.patch</filename>
            <type>text/plain</type>
            <size>7031</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODkwMDAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCAyNDkyMjcyMzAwNzJhOWY3MjdkNDQ1Mzc3ZjJlY2ZjNGFi
MjBmY2IwLi5iYWRhZWZhNmZkYmUxMzdiNzgyYTlhYmEzZTVjZWE3OTZmZGU3ZTQ5IDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMg
QEAKKzIwMTEtMDYtMTQgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgbmV3LXJ1bi13ZWJr
aXQtdGVzdHM6IGZpeCB0ZXN0IHNvcnRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTU4NjkxCisKKyAgICAgICAgVGhpcyBjaGFuZ2VzIHRoZSBzb3J0
aW5nIHRvIHVzZSBhICJuYXR1cmFsIiBzb3J0IG9yZGVyIHN1Y2ggdGhhdAorICAgICAgICBmb28y
Lmh0bWwgc29ydHMgYmVmb3JlIGZvbzEzLmh0bWwsIGFuZCBzb3J0cyB0aGUgdGVzdHMgc28KKyAg
ICAgICAgdGhhdCBhbGwgdGhlIHRlc3RzIGluIGEgZGlyZWN0b3J5IGFyZSBydW4gYmVmb3JlIGFu
eSB0ZXN0IGluIGEKKyAgICAgICAgc3ViZGlyZWN0b3J5LgorCisgICAgICAgIFRoaXMgY2hhbmdl
IGFsc28gYWRkcyBhIHNwbGl0KCkgbWV0aG9kIHRvIHRoZSBmaWxlc3lzdGVtIHNpbmNlCisgICAg
ICAgIHRoYXQgaXMgbmVlZGVkIHRvIGNsdXN0ZXIgZmlsZXMgaW50byBhIGRpcmVjdG9yeSBvdGhl
cndpc2UuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZmlsZXN5
c3RlbS5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZmlsZXN5
c3RlbV9tb2NrLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xh
eW91dF9wYWNrYWdlL21hbmFnZXIucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvbWFuYWdlcl91bml0dGVzdC5weToKKwogMjAxMS0wNi0x
NSAgRGlyayBQcmFua2UgIDxkcHJhbmtlQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmll
d2VkLCBidWlsZCBmaXguCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1v
bi9zeXN0ZW0vZmlsZXN5c3RlbS5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5
c3RlbS9maWxlc3lzdGVtLnB5CmluZGV4IDU4YmUwM2E5ZWM2NGYxNDMzYWVjNjlhNzBjZGNjNDM2
YzhhMGJkMTkuLjUxNTA0MDg1N2QyNTk5YTEwN2RiN2EwMzExZWExOGQwMGQ2MTQ5ODUgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9maWxlc3lzdGVtLnB5
CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9maWxlc3lzdGVtLnB5
CkBAIC0yNjMsNiArMjYzLDEwIEBAIGNsYXNzIEZpbGVTeXN0ZW0ob2JqZWN0KToKICAgICAgICAg
d2l0aCBjb2RlY3Mub3BlbihwYXRoLCAncicsICd1dGY4JykgYXMgZjoKICAgICAgICAgICAgIHJl
dHVybiBmLnJlYWQoKQogCisgICAgZGVmIHNwbGl0KHNlbGYsIHBhdGgpOgorICAgICAgICAiIiJS
ZXR1cm4gKGRpcm5hbWUsIGJhc2VuYW1lICsgJy4nICsgZXh0KSIiIgorICAgICAgICByZXR1cm4g
b3MucGF0aC5zcGxpdChwYXRoKQorCiAgICAgZGVmIHNwbGl0ZXh0KHNlbGYsIHBhdGgpOgogICAg
ICAgICAiIiJSZXR1cm4gKGRpcm5hbWUgKyBvcy5zZXAgKyBiYXNlbmFtZSwgJy4nICsgZXh0KSIi
IgogICAgICAgICByZXR1cm4gb3MucGF0aC5zcGxpdGV4dChwYXRoKQpkaWZmIC0tZ2l0IGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2ZpbGVzeXN0ZW1fbW9jay5weSBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9maWxlc3lzdGVtX21vY2sucHkKaW5k
ZXggNTBkNGY1YWRlYmIwMmIzMzRkMTU1NDc0ZDJmM2I4NDM5NTE0ZWMxNS4uODU0NzYzMTgxODZk
ODYzZjIwYjBhODg5Y2Q3YjdjMjM5YjRiOGMyZSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9jb21tb24vc3lzdGVtL2ZpbGVzeXN0ZW1fbW9jay5weQorKysgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZmlsZXN5c3RlbV9tb2NrLnB5CkBAIC0yNzcsNiAr
Mjc3LDEyIEBAIGNsYXNzIE1vY2tGaWxlU3lzdGVtKG9iamVjdCk6CiAgICAgICAgICAgICBpZiBk
LnN0YXJ0c3dpdGgocGF0aCk6CiAgICAgICAgICAgICAgICAgc2VsZi5kaXJzW2RdID0gTm9uZQog
CisgICAgZGVmIHNwbGl0KHNlbGYsIHBhdGgpOgorICAgICAgICBpZHggPSBwYXRoLnJmaW5kKHNl
bGYuc2VwKQorICAgICAgICBpZiBpZHggPT0gLTE6CisgICAgICAgICAgICByZXR1cm4gKCcnLCBw
YXRoKQorICAgICAgICByZXR1cm4gKHBhdGhbOmlkeF0sIHBhdGhbKGlkeCArIDEpOl0pCisKICAg
ICBkZWYgc3BsaXRleHQoc2VsZiwgcGF0aCk6CiAgICAgICAgIGlkeCA9IHBhdGgucmZpbmQoJy4n
KQogICAgICAgICBpZiBpZHggPT0gLTE6CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9tYW5hZ2VyLnB5IGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvbWFuYWdlci5weQppbmRleCBi
NThhM2JlM2YzNTRhYTIxODVlYjA5NTQ3MDBkY2ZlMzhhZjU0YzYyLi4wMmJmY2Y0NTk1NzhmNzFm
ODk5MjUxMzYwY2M4NjI1ZjM5MDUyNTliIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9tYW5hZ2VyLnB5CisrKyBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL21hbmFnZXIucHkKQEAg
LTQzLDYgKzQzLDcgQEAgaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCBtYXRoCiBpbXBvcnQgUXVldWUK
IGltcG9ydCByYW5kb20KK2ltcG9ydCByZQogaW1wb3J0IHN5cwogaW1wb3J0IHRpbWUKIApAQCAt
Mzc0LDcgKzM3NSw3IEBAIGNsYXNzIE1hbmFnZXI6CiAgICAgICAgIGlmIHNlbGYuX29wdGlvbnMu
cmFuZG9taXplX29yZGVyOgogICAgICAgICAgICAgcmFuZG9tLnNodWZmbGUoc2VsZi5fdGVzdF9m
aWxlc19saXN0KQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5fdGVzdF9maWxlc19s
aXN0LnNvcnQoKQorICAgICAgICAgICAgc2VsZi5fdGVzdF9maWxlc19saXN0LnNvcnQoa2V5PWxh
bWJkYSBwYXRoOiBwYXRoX2tleShzZWxmLl9mcywgcGF0aCkpCiAKICAgICAgICAgIyBJZiB0aGUg
dXNlciBzcGVjaWZpZXMgdGhleSBqdXN0IHdhbnQgdG8gcnVuIGEgc3Vic2V0IG9mIHRoZSB0ZXN0
cywKICAgICAgICAgIyBqdXN0IGdyYWIgYSBzdWJzZXQgb2YgdGhlIG5vbi1za2lwcGVkIHRlc3Rz
LgpAQCAtMTM3MCw2ICsxMzcxLDM0IEBAIGRlZiByZWFkX3Rlc3RfZmlsZXMoZnMsIGZpbGVzKToK
ICAgICByZXR1cm4gdGVzdHMKIAogCitkZWYgcGF0aF9rZXkoZmlsZXN5c3RlbSwgcGF0aCk6Cisg
ICAgIiIiVHVybnMgYSBwYXRoIGludG8gYSBsaXN0IHdpdGggdHdvIHN1Ymxpc3RzLCB0aGUgbmF0
dXJhbCBrZXkgb2YgdGhlCisgICAgZGlybmFtZSwgYW5kIHRoZSBuYXR1cmFsIGtleSBvZiB0aGUg
YmFzZW5hbWUuCisKKyAgICBUaGlzIGNhbiBiZSB1c2VkIHdoZW4gc29ydGluZyBwYXRocyBzbyB0
aGF0IGZpbGVzIGluIGEgZGlyZWN0b3J5LgorICAgIGRpcmVjdG9yeSBhcmUga2VwdCB0b2dldGhl
ciByYXRoZXIgdGhhbiBiZWluZyBtaXhlZCBpbiB3aXRoIGZpbGVzIGluCisgICAgc3ViZGlyZWN0
b3JpZXMuIiIiCisgICAgZGlybmFtZSwgYmFzZW5hbWUgPSBmaWxlc3lzdGVtLnNwbGl0KHBhdGgp
CisgICAgcmV0dXJuIChuYXR1cmFsX3NvcnRfa2V5KGRpcm5hbWUgKyBmaWxlc3lzdGVtLnNlcCks
IG5hdHVyYWxfc29ydF9rZXkoYmFzZW5hbWUpKQorCisKK2RlZiBuYXR1cmFsX3NvcnRfa2V5KHN0
cmluZ190b19zcGxpdCk6CisgICAgIiIiIFR1cm4gYSBzdHJpbmcgaW50byBhIGxpc3Qgb2Ygc3Ry
aW5nIGFuZCBudW1iZXIgY2h1bmtzLgorICAgICAgICAiejIzYSIgLT4gWyJ6IiwgMjMsICJhIl0K
KworICAgICAgICBDYW4gYmUgdXNlZCB0byBpbXBsZW1lbnQgIm5hdHVyYWwgc29ydCIgb3JkZXIu
IFNlZToKKyAgICAgICAgICAgIGh0dHA6Ly93d3cuY29kaW5naG9ycm9yLmNvbS9ibG9nLzIwMDcv
MTIvc29ydGluZy1mb3ItaHVtYW5zLW5hdHVyYWwtc29ydC1vcmRlci5odG1sCisgICAgICAgICAg
ICBodHRwOi8vbmVkYmF0Y2hlbGRlci5jb20vYmxvZy8yMDA3MTIuaHRtbCNlMjAwNzEyMTFUMDU0
OTU2CisgICAgIiIiCisgICAgZGVmIHRyeWludCh2YWwpOgorICAgICAgICB0cnk6CisgICAgICAg
ICAgICByZXR1cm4gaW50KHZhbCkKKyAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgcmV0dXJu
IHZhbAorCisgICAgcmV0dXJuIFt0cnlpbnQoY2h1bmspIGZvciBjaHVuayBpbiByZS5zcGxpdCgn
KFxkKyknLCBzdHJpbmdfdG9fc3BsaXQpXQorCisKIGNsYXNzIF9Xb3JrZXJTdGF0ZShvYmplY3Qp
OgogICAgICIiIkEgY2xhc3MgZm9yIHRoZSBtYW5hZ2VyIHRvIHVzZSB0byB0cmFjayB0aGUgY3Vy
cmVudCBzdGF0ZSBvZiB0aGUgd29ya2Vycy4iIiIKICAgICBkZWYgX19pbml0X18oc2VsZiwgbnVt
YmVyLCB3b3JrZXJfY29ubmVjdGlvbik6CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9tYW5hZ2VyX3VuaXR0ZXN0LnB5IGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvbWFuYWdlcl91
bml0dGVzdC5weQppbmRleCA0M2NlZDVhNDM2M2NiMmQ2OTgyZmM1MGMxY2JiZDAzZmUyNGYwOTJk
Li40ZDExNDI2MzQ2NzY5MjEyYzYxNzY2NjJhMWZjNTNiOTFiODczYzAwIDEwMDY0NAotLS0gYS9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9tYW5hZ2Vy
X3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xh
eW91dF9wYWNrYWdlL21hbmFnZXJfdW5pdHRlc3QucHkKQEAgLTgwLDUgKzgwLDQ4IEBAIGNsYXNz
IE1hbmFnZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChleHBlY3RlZF90ZXN0c190b19odHRwX2xvY2ssIHNldChtdWx0aV90aHJlYWRfcmVzdWx0c1sw
XVsxXSkpCiAKIAorY2xhc3MgTmF0dXJhbENvbXBhcmVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToK
KyAgICBkZWYgYXNzZXJ0X2NtcChzZWxmLCB4LCB5LCByZXN1bHQpOgorICAgICAgICBzZWxmLmFz
c2VydEVxdWFscyhjbXAobWFuYWdlci5uYXR1cmFsX3NvcnRfa2V5KHgpLCBtYW5hZ2VyLm5hdHVy
YWxfc29ydF9rZXkoeSkpLCByZXN1bHQpCisKKyAgICBkZWYgdGVzdF9uYXR1cmFsX2NvbXBhcmUo
c2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0X2NtcCgnYScsICdhJywgMCkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRfY21wKCdhYicsICdhJywgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRfY21wKCdhJywg
J2FiJywgLTEpCisgICAgICAgIHNlbGYuYXNzZXJ0X2NtcCgnJywgJycsIDApCisgICAgICAgIHNl
bGYuYXNzZXJ0X2NtcCgnJywgJ2FiJywgLTEpCisgICAgICAgIHNlbGYuYXNzZXJ0X2NtcCgnMScs
ICcyJywgLTEpCisgICAgICAgIHNlbGYuYXNzZXJ0X2NtcCgnMicsICcxJywgMSkKKyAgICAgICAg
c2VsZi5hc3NlcnRfY21wKCcxJywgJzEwJywgLTEpCisgICAgICAgIHNlbGYuYXNzZXJ0X2NtcCgn
MicsICcxMCcsIC0xKQorICAgICAgICBzZWxmLmFzc2VydF9jbXAoJ2Zvb18xLmh0bWwnLCAnZm9v
XzIuaHRtbCcsIC0xKQorICAgICAgICBzZWxmLmFzc2VydF9jbXAoJ2Zvb18xLjEuaHRtbCcsICdm
b29fMi5odG1sJywgLTEpCisgICAgICAgIHNlbGYuYXNzZXJ0X2NtcCgnZm9vXzEuaHRtbCcsICdm
b29fMTAuaHRtbCcsIC0xKQorICAgICAgICBzZWxmLmFzc2VydF9jbXAoJ2Zvb18yLmh0bWwnLCAn
Zm9vXzEwLmh0bWwnLCAtMSkKKyAgICAgICAgc2VsZi5hc3NlcnRfY21wKCdmb29fMjMuaHRtbCcs
ICdmb29fMTAuaHRtbCcsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0X2NtcCgnZm9vXzIzLmh0bWwn
LCAnZm9vXzEwMC5odG1sJywgLTEpCisKKworY2xhc3MgUGF0aENvbXBhcmVUZXN0KHVuaXR0ZXN0
LlRlc3RDYXNlKToKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYuZmlsZXN5c3Rl
bSA9IGZpbGVzeXN0ZW1fbW9jay5Nb2NrRmlsZVN5c3RlbSgpCisKKyAgICBkZWYgcGF0aF9rZXko
c2VsZiwgayk6CisgICAgICAgIHJldHVybiBtYW5hZ2VyLnBhdGhfa2V5KHNlbGYuZmlsZXN5c3Rl
bSwgaykKKworICAgIGRlZiBhc3NlcnRfY21wKHNlbGYsIHgsIHksIHJlc3VsdCk6CisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWxzKGNtcChzZWxmLnBhdGhfa2V5KHgpLCBzZWxmLnBhdGhfa2V5KHkp
KSwgcmVzdWx0KQorCisgICAgZGVmIHRlc3RfcGF0aF9jb21wYXJlKHNlbGYpOgorICAgICAgICBz
ZWxmLmFzc2VydF9jbXAoJy9hJywgJy9hJywgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRfY21wKCcv
YScsICcvYicsIC0xKQorICAgICAgICBzZWxmLmFzc2VydF9jbXAoJy9hMicsICcvYTEwJywgLTEp
CisgICAgICAgIHNlbGYuYXNzZXJ0X2NtcCgnL2EyL2ZvbycsICcvYTEwL2ZvbycsIC0xKQorICAg
ICAgICBzZWxmLmFzc2VydF9jbXAoJy9hL2ZvbzExJywgJy9hL2ZvbzInLCAxKQorICAgICAgICBz
ZWxmLmFzc2VydF9jbXAoJy9hYicsICcvYS9hL2InLCAtMSkKKyAgICAgICAgc2VsZi5hc3NlcnRf
Y21wKCcvYS9hL2InLCAnL2FiJywgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRfY21wKCcvZm9vLWJh
ci9iYXonLCAnL2Zvby9iYXonLCAtMSkKKworCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgog
ICAgIHVuaXR0ZXN0Lm1haW4oKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>