<?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>58211</bug_id>
          
          <creation_ts>2011-04-10 18:38:43 -0700</creation_ts>
          <short_desc>Add method to make a Port able to retrieve TestOutputSets from its builders.</short_desc>
          <delta_ts>2011-05-04 15:45:35 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="James Kozianski">koz</reporter>
          <assigned_to name="James Kozianski">koz</assigned_to>
          <cc>abarth</cc>
    
    <cc>eric</cc>
    
    <cc>mihaip</cc>
    
    <cc>ojan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>382991</commentid>
    <comment_count>0</comment_count>
    <who name="James Kozianski">koz</who>
    <bug_when>2011-04-10 18:38:43 -0700</bug_when>
    <thetext>Add method to make a Port able to retrieve TestOutputSets from its builders.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>382993</commentid>
    <comment_count>1</comment_count>
      <attachid>88963</attachid>
    <who name="James Kozianski">koz</who>
    <bug_when>2011-04-10 18:43:06 -0700</bug_when>
    <thetext>Created attachment 88963
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>383000</commentid>
    <comment_count>2</comment_count>
      <attachid>88963</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2011-04-10 19:04:12 -0700</bug_when>
    <thetext>Comment on attachment 88963
Patch

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

&gt; Tools/Scripts/webkitpy/layout_tests/port/base.py:504
&gt; +    def buildbot_testoutputset(self, platforms):

This should be buildbot_test_output_set.

&gt; Tools/Scripts/webkitpy/layout_tests/port/chromium.py:205
&gt; +        platform_builders = {
&gt; +            &apos;chromium-mac&apos;: &apos;Webkit_Mac10_5&apos;,
&gt; +            &apos;chromium-win-vista&apos;: &apos;Webkit_Win&apos;,
&gt; +            &apos;chromium-linux&apos;: &apos;Webkit_Linux__dbg__1_&apos;,
&gt; +        }

This is a generally useful map. Lets move this to a map next to ALL_BASELINE_VARIANTS and generate ALL_BASELINE_VARIANTS from this map. Lets talk in person about what the best location for this data is.

&gt; Tools/Scripts/webkitpy/layout_tests/port/chromium.py:212
&gt; +            zip_url = &apos;http://build.chromium.org/f/chromium/layout_test_results/&apos; + \

\ line continuations are so old-school. use parens instead.

&gt; Tools/Scripts/webkitpy/layout_tests/port/factory.py:131
&gt; +def get_all(options=None):

This doesn&apos;t look like it&apos;s used in this patch. Did you mean to include it?

&gt; Tools/Scripts/webkitpy/layout_tests/port/factory.py:134
&gt; +    return dict([(port_name, get(port_name, options=options))
&gt; +                     for port_name in all_port_names()])

This indentation is weird. Also, we don&apos;t have a line limit. I think this would read fine on one line.

&gt; Tools/Scripts/webkitpy/layout_tests/port/webkit.py:80
&gt; +        platform_builders = {
&gt; +            &apos;mac-snowleopard&apos;: &apos;SnowLeopard Intel Release (Tests)&apos;,
&gt; +            &apos;mac-leopard&apos;: &apos;Leopard Intel Debug (Tests)&apos;,
&gt; +            &apos;win&apos;: &apos;Windows 7 Release (WebKit2 Tests)&apos;,
&gt; +            &apos;chromium-linux&apos;: &apos;GTK Linux 32-bit Release&apos;,
&gt; +        }

ditto above

&gt; Tools/Scripts/webkitpy/layout_tests/port/webkit.py:86
&gt; +        bb = BuildBot()

abbreviations are discouraged in webkit code. also, you don&apos;t really need this local variable, do you? it&apos;s only used on line 90.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>383009</commentid>
    <comment_count>3</comment_count>
      <attachid>88963</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2011-04-10 19:53:18 -0700</bug_when>
    <thetext>Comment on attachment 88963
Patch

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

&gt;&gt; Tools/Scripts/webkitpy/layout_tests/port/chromium.py:205
&gt;&gt; +        }
&gt; 
&gt; This is a generally useful map. Lets move this to a map next to ALL_BASELINE_VARIANTS and generate ALL_BASELINE_VARIANTS from this map. Lets talk in person about what the best location for this data is.

Thinking about this more, I think maybe this should be a map in factory.py? Then all_port_names in factory.py can generate the list based on this map, this code can use the map and ALL_BASELINE_VARIANTS doesn&apos;t need to exist since it can just be generated from the list in factory.py.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>397331</commentid>
    <comment_count>4</comment_count>
    <who name="James Kozianski">koz</who>
    <bug_when>2011-05-03 13:42:06 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 88963 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=88963&amp;action=review
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/layout_tests/port/base.py:504
&gt; &gt; +    def buildbot_testoutputset(self, platforms):
&gt; 
&gt; This should be buildbot_test_output_set.

Done.

&gt; &gt; Tools/Scripts/webkitpy/layout_tests/port/chromium.py:205
&gt; &gt; +        platform_builders = {
&gt; &gt; +            &apos;chromium-mac&apos;: &apos;Webkit_Mac10_5&apos;,
&gt; &gt; +            &apos;chromium-win-vista&apos;: &apos;Webkit_Win&apos;,
&gt; &gt; +            &apos;chromium-linux&apos;: &apos;Webkit_Linux__dbg__1_&apos;,
&gt; &gt; +        }
&gt; 
&gt; This is a generally useful map. Lets move this to a map next to ALL_BASELINE_VARIANTS and generate ALL_BASELINE_VARIANTS from this map. Lets talk in person about what the best location for this data is.

Done.

&gt; &gt; Tools/Scripts/webkitpy/layout_tests/port/chromium.py:212
&gt; &gt; +            zip_url = &apos;http://build.chromium.org/f/chromium/layout_test_results/&apos; + \
&gt; 
&gt; \ line continuations are so old-school. use parens instead.

Done.

&gt; &gt; Tools/Scripts/webkitpy/layout_tests/port/factory.py:131
&gt; &gt; +def get_all(options=None):
&gt; 
&gt; This doesn&apos;t look like it&apos;s used in this patch. Did you mean to include it?

This is kind of irrelevant to this change - reverted.

&gt; &gt; Tools/Scripts/webkitpy/layout_tests/port/factory.py:134
&gt; &gt; +    return dict([(port_name, get(port_name, options=options))
&gt; &gt; +                     for port_name in all_port_names()])
&gt; 
&gt; This indentation is weird. Also, we don&apos;t have a line limit. I think this would read fine on one line.
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/layout_tests/port/webkit.py:80
&gt; &gt; +        platform_builders = {
&gt; &gt; +            &apos;mac-snowleopard&apos;: &apos;SnowLeopard Intel Release (Tests)&apos;,
&gt; &gt; +            &apos;mac-leopard&apos;: &apos;Leopard Intel Debug (Tests)&apos;,
&gt; &gt; +            &apos;win&apos;: &apos;Windows 7 Release (WebKit2 Tests)&apos;,
&gt; &gt; +            &apos;chromium-linux&apos;: &apos;GTK Linux 32-bit Release&apos;,
&gt; &gt; +        }
&gt; 
&gt; ditto above

Done.

&gt; &gt; Tools/Scripts/webkitpy/layout_tests/port/webkit.py:86
&gt; &gt; +        bb = BuildBot()
&gt; 
&gt; abbreviations are discouraged in webkit code. also, you don&apos;t really need this local variable, do you? it&apos;s only used on line 90.

Good point - I&apos;ve removed the variable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>397333</commentid>
    <comment_count>5</comment_count>
      <attachid>92119</attachid>
    <who name="James Kozianski">koz</who>
    <bug_when>2011-05-03 13:44:25 -0700</bug_when>
    <thetext>Created attachment 92119
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>397338</commentid>
    <comment_count>6</comment_count>
      <attachid>92119</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-05-03 13:45:47 -0700</bug_when>
    <thetext>Comment on attachment 92119
Patch

What&apos;s a TestOutputSet and how does it differ from LayoutTestResults (in common.net).  I feel like we&apos;ve had this discussion before, but refresh my memory. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>397343</commentid>
    <comment_count>7</comment_count>
    <who name="James Kozianski">koz</who>
    <bug_when>2011-05-03 13:46:56 -0700</bug_when>
    <thetext>*** Bug 60058 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>397360</commentid>
    <comment_count>8</comment_count>
      <attachid>92119</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-05-03 13:57:33 -0700</bug_when>
    <thetext>Comment on attachment 92119
Patch

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

&gt; Tools/Scripts/webkitpy/layout_tests/port/chromium.py:209
&gt; +            if platform not in PORT_TO_BUILDER_NAME:

I think I would have exposed a lookup function  (or list class) instead of exposing the actual list.  Then you call builder_name_for_platform(platform) and if it&apos;s None do this exeption.

&gt; Tools/Scripts/webkitpy/layout_tests/port/chromium.py:212
&gt; +            zip_url = (&apos;http://build.chromium.org/f/chromium/layout_test_results/&apos; +

We may want to put this in common.config.urls, not sure.

&gt; Tools/Scripts/webkitpy/layout_tests/port/webkit.py:85
&gt; +        for builder in BuildBot().builders():
&gt; +            builders_by_name[builder.name()] = builder

Isn&apos;t there already a dictionary function which does this?

I guess:
builders_by_name = dict([(builder.name(), builder) for builder in BuildBot.builders()])
is what I&apos;m thinking of.

&gt; Tools/Scripts/webkitpy/layout_tests/port/webkit.py:87
&gt; +        for platform in platforms:

This could also be re-written as list comprehensions if you wanted.  the set_platform call is the only thing that makes the not directly obvious.

Heck, if it used a _results_for_platform helper function, the rest of this implementation could be shared between webkit.py and chromium.py, no?

&gt; Tools/Scripts/webkitpy/layout_tests/port/webkit.py:89
&gt; +            rs = builder.latest_cached_build().results()

generally we avoid short variable names.  I think results or result_set would be more readable here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>397362</commentid>
    <comment_count>9</comment_count>
    <who name="James Kozianski">koz</who>
    <bug_when>2011-05-03 13:59:23 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 92119 [details])
&gt; What&apos;s a TestOutputSet and how does it differ from LayoutTestResults (in common.net).  I feel like we&apos;ve had this discussion before, but refresh my memory. :)

Sure :-)

A TestOutputSet is a set of TestOutputs, which are what the LayoutTests generate when they run. So a TestOutput is the type of a baseline (you compare a test&apos;s output with a baseline to determine if the test is passing).

LayoutTestResults I think is a container for information extracted from results.html, that is, a list of failing tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>397363</commentid>
    <comment_count>10</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-05-03 14:00:44 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; LayoutTestResults I think is a container for information extracted from results.html, that is, a list of failing tests.

That&apos;s correct.  It&apos;s a container for information abstracted from a layout test run.  Parsed from the *.json files or .html files for either ORWT or NRWT.

Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>397430</commentid>
    <comment_count>11</comment_count>
    <who name="James Kozianski">koz</who>
    <bug_when>2011-05-03 15:11:16 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 92119 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=92119&amp;action=review
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/layout_tests/port/chromium.py:209
&gt; &gt; +            if platform not in PORT_TO_BUILDER_NAME:
&gt; 
&gt; I think I would have exposed a lookup function  (or list class) instead of exposing the actual list.  Then you call builder_name_for_platform(platform) and if it&apos;s None do this exeption.

Done.

&gt; &gt; Tools/Scripts/webkitpy/layout_tests/port/chromium.py:212
&gt; &gt; +            zip_url = (&apos;http://build.chromium.org/f/chromium/layout_test_results/&apos; +
&gt; 
&gt; We may want to put this in common.config.urls, not sure.

Makes sense - I added a chromium_results_zip_url() function.

&gt; &gt; Tools/Scripts/webkitpy/layout_tests/port/webkit.py:85
&gt; &gt; +        for builder in BuildBot().builders():
&gt; &gt; +            builders_by_name[builder.name()] = builder
&gt; 
&gt; Isn&apos;t there already a dictionary function which does this?
&gt; 
&gt; I guess:
&gt; builders_by_name = dict([(builder.name(), builder) for builder in BuildBot.builders()])
&gt; is what I&apos;m thinking of.

Done.

&gt; &gt; Tools/Scripts/webkitpy/layout_tests/port/webkit.py:87
&gt; &gt; +        for platform in platforms:
&gt; 
&gt; This could also be re-written as list comprehensions if you wanted.  the set_platform call is the only thing that makes the not directly obvious.

With the introduction of _results_for_platform this is no longer a list comprehension.

&gt; Heck, if it used a _results_for_platform helper function, the rest of this implementation could be shared between webkit.py and chromium.py, no?

Done.

&gt; &gt; Tools/Scripts/webkitpy/layout_tests/port/webkit.py:89
&gt; &gt; +            rs = builder.latest_cached_build().results()
&gt; 
&gt; generally we avoid short variable names.  I think results or result_set would be more readable here.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>397529</commentid>
    <comment_count>12</comment_count>
      <attachid>92165</attachid>
    <who name="James Kozianski">koz</who>
    <bug_when>2011-05-03 16:44:11 -0700</bug_when>
    <thetext>Created attachment 92165
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>397535</commentid>
    <comment_count>13</comment_count>
      <attachid>92165</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-05-03 16:52:30 -0700</bug_when>
    <thetext>Comment on attachment 92165
Patch

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

&gt; Tools/Scripts/webkitpy/layout_tests/port/builders.py:91
&gt; +    if platform in PORT_TO_BUILDER_NAME:
&gt; +        return PORT_TO_BUILDER_NAME[platform]
&gt; +    return None

This is equivalent to PORT_TO_BUILDER_NAME.get(platform)

I still agree it should be wrapped in a function like this!  It can just be a one-line function.

I think PORT_TO_BUILDER_NAME will eventually end up private to this module.

&gt; Tools/Scripts/webkitpy/layout_tests/port/chromium.py:209
&gt; +        if builder_name is None:

You can probably just use if not builder_name, since an empty builder name makes as much sense as None does. :)

&gt; Tools/Scripts/webkitpy/layout_tests/port/webkit.py:74
&gt; +        builders_by_name = dict([(builder.name(), builder) for builder in BuildBot().builders()])

Seems we don&apos;t want to compute this until we need it.  (aka, after we&apos;ve successfully looked up the builder_name).  Doesn&apos;t really matter since in the normal case we&apos;ll succeed.

We&apos;re also going to end up recomputing this every time we call this function.  Which is OK.

&gt; Tools/Scripts/webkitpy/layout_tests/port/webkit.py:81
&gt; +        result_set = builder.latest_cached_build().results()
&gt; +        result_set.set_platform(platform)
&gt; +        return result_set

So why is the webkit one different?  Because the chromium bots spit out zips?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>397993</commentid>
    <comment_count>14</comment_count>
    <who name="James Kozianski">koz</who>
    <bug_when>2011-05-04 09:51:04 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (From update of attachment 92165 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=92165&amp;action=review
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/layout_tests/port/builders.py:91
&gt; &gt; +    if platform in PORT_TO_BUILDER_NAME:
&gt; &gt; +        return PORT_TO_BUILDER_NAME[platform]
&gt; &gt; +    return None
&gt; 
&gt; This is equivalent to PORT_TO_BUILDER_NAME.get(platform)
&gt; 
&gt; I still agree it should be wrapped in a function like this!  It can just be a one-line function.
&gt; 
&gt; I think PORT_TO_BUILDER_NAME will eventually end up private to this module.

Cool! Done.

&gt; &gt; Tools/Scripts/webkitpy/layout_tests/port/chromium.py:209
&gt; &gt; +        if builder_name is None:
&gt; 
&gt; You can probably just use if not builder_name, since an empty builder name makes as much sense as None does. :)

Done.

&gt; &gt; Tools/Scripts/webkitpy/layout_tests/port/webkit.py:74
&gt; &gt; +        builders_by_name = dict([(builder.name(), builder) for builder in BuildBot().builders()])
&gt; 
&gt; Seems we don&apos;t want to compute this until we need it.  (aka, after we&apos;ve successfully looked up the builder_name).  Doesn&apos;t really matter since in the normal case we&apos;ll succeed.
&gt; 
&gt; We&apos;re also going to end up recomputing this every time we call this function.  Which is OK.

Yeah, it looked pretty cheap. I&apos;ve moved the builders_by_name to after the builder_name lookup.

&gt; &gt; Tools/Scripts/webkitpy/layout_tests/port/webkit.py:81
&gt; &gt; +        result_set = builder.latest_cached_build().results()
&gt; &gt; +        result_set.set_platform(platform)
&gt; &gt; +        return result_set
&gt; 
&gt; So why is the webkit one different?  Because the chromium bots spit out zips?

Yep, that&apos;s right - Chromium bots store the latest results in a constant place, but the WebKit ones store them in a directory that contains the revision number (I think), so it needs a bit more logic to figure out which are the latest results.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>397997</commentid>
    <comment_count>15</comment_count>
      <attachid>92262</attachid>
    <who name="James Kozianski">koz</who>
    <bug_when>2011-05-04 09:52:37 -0700</bug_when>
    <thetext>Created attachment 92262
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>398003</commentid>
    <comment_count>16</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-05-04 09:54:59 -0700</bug_when>
    <thetext>Attachment 92262 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Tools/ChangeLog&apos;, u&apos;Tools/Scripts/webkitpy...&quot; exit_code: 1

Tools/Scripts/webkitpy/common/config/urls.py:41:  too many blank lines (3)  [pep8/E303] [5]
Total errors found: 1 in 6 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>398012</commentid>
    <comment_count>17</comment_count>
      <attachid>92266</attachid>
    <who name="James Kozianski">koz</who>
    <bug_when>2011-05-04 10:00:15 -0700</bug_when>
    <thetext>Created attachment 92266
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>398013</commentid>
    <comment_count>18</comment_count>
    <who name="James Kozianski">koz</who>
    <bug_when>2011-05-04 10:00:41 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; Attachment 92262 [details] did not pass style-queue:
&gt; 
&gt; Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Tools/ChangeLog&apos;, u&apos;Tools/Scripts/webkitpy...&quot; exit_code: 1
&gt; 
&gt; Tools/Scripts/webkitpy/common/config/urls.py:41:  too many blank lines (3)  [pep8/E303] [5]
&gt; Total errors found: 1 in 6 files
&gt; 
&gt; 
&gt; If any of these errors are false positives, please file a bug against check-webkit-style.

Hmm, it doesn&apos;t report any problems locally. I&apos;ve tried removing the blank line following urls.py:41</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>398014</commentid>
    <comment_count>19</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-05-04 10:02:07 -0700</bug_when>
    <thetext>Attachment 92266 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Tools/ChangeLog&apos;, u&apos;Tools/Scripts/webkitpy...&quot; exit_code: 1

Tools/Scripts/webkitpy/common/config/urls.py:41:  too many blank lines (3)  [pep8/E303] [5]
Total errors found: 1 in 6 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>398017</commentid>
    <comment_count>20</comment_count>
      <attachid>92268</attachid>
    <who name="James Kozianski">koz</who>
    <bug_when>2011-05-04 10:04:26 -0700</bug_when>
    <thetext>Created attachment 92268
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>398019</commentid>
    <comment_count>21</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-05-04 10:06:54 -0700</bug_when>
    <thetext>Attachment 92268 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Tools/ChangeLog&apos;, u&apos;Tools/Scripts/webkitpy...&quot; exit_code: 1

Tools/Scripts/webkitpy/common/config/urls.py:41:  too many blank lines (3)  [pep8/E303] [5]
Total errors found: 1 in 6 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>398036</commentid>
    <comment_count>22</comment_count>
      <attachid>92268</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-05-04 10:28:55 -0700</bug_when>
    <thetext>Comment on attachment 92268
Patch

Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>398329</commentid>
    <comment_count>23</comment_count>
    <who name="James Kozianski">koz</who>
    <bug_when>2011-05-04 15:45:35 -0700</bug_when>
    <thetext>Committed r85797: &lt;http://trac.webkit.org/changeset/85797&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88963</attachid>
            <date>2011-04-10 18:43:06 -0700</date>
            <delta_ts>2011-05-03 13:44:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-58211-20110411114304.patch</filename>
            <type>text/plain</type>
            <size>6352</size>
            <attacher name="James Kozianski">koz</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODMyMjYKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCAxMzdiMjljZTFlYzYzNzliMTJmOWQzYTYzMzk5OGExNjMw
OTcwZjRmLi5kNjUzY2EzZTFkMDk3NGYxNzQwZjRkMzc5MzhhZGY2Yjc1YmJiNWFmIDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTgg
QEAKKzIwMTEtMDQtMTAgIEphbWVzIEtvemlhbnNraSAgPGtvekBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIG1ldGhvZCB0
byBtYWtlIGEgUG9ydCBhYmxlIHRvIHJldHJpZXZlIFRlc3RPdXRwdXRTZXRzIGZyb20gaXRzIGJ1
aWxkZXJzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NTgyMTEKKworICAgICAgICBUaGlzIHdpbGwgYmUgdXNlZCBpbiB0aGUgbmV3IHJlYmFzZWxpbmUg
c2NyaXB0IC0gVGVzdE91dHB1dHMgYXJlCisgICAgICAgIHBvdGVudGlhbCBuZXcgYmFzZWxpbmVz
LgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5
OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0u
cHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9mYWN0b3J5
LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0
LnB5OgorCiAyMDExLTA0LTA3ICBBbmRyZXcgU2NoZXJrdXMgIDxzY2hlcmt1c0BjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgUmV2ZXJ0IEVOQUJMRV9UUkFDSyBwYXRjaCBkdWUgdG8gY29tcGlsZSBm
YWlsdXJlcy4KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3BvcnQvYmFzZS5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQv
YmFzZS5weQppbmRleCBjMjA0ODZjODA2YmUyZjM4NGZmNWQ4NGZkNTMxNjM5NmEzZWY5Y2Y2Li4w
OTY0NWExMDdlNTI4NWU5NzM1NjY5ZmRiMTYyZDFlMmUzMjZiOTZjIDEwMDY0NAotLS0gYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHkKKysrIGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5CkBAIC01MDEsNiArNTAx
LDEwIEBAIGNsYXNzIFBvcnQob2JqZWN0KToKICAgICAgICAgZXhwZWN0YXRpb25zLCBkZXRlcm1p
bmluZyBzZWFyY2ggcGF0aHMsIGFuZCBsb2dnaW5nIGluZm9ybWF0aW9uLiIiIgogICAgICAgICBy
ZXR1cm4gc2VsZi5fdmVyc2lvbgogCisgICAgZGVmIGJ1aWxkYm90X3Rlc3RvdXRwdXRzZXQoc2Vs
ZiwgcGxhdGZvcm1zKToKKyAgICAgICAgIiIiUmV0dXJucyBhIFRlc3RPdXRwdXRTZXQgZm9yIHRo
ZSBzcGVjaWZpZWQgcGxhdGZvcm1zIGZvciB0aGlzIHBvcnRzIGJ1aWxkYm90cy4iIiIKKyAgICAg
ICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcignUG9ydC5idWlsZGJvdF90ZXN0b3V0cHV0c2V0
JykKKwogICAgIGRlZiBncmFwaGljc190eXBlKHNlbGYpOgogICAgICAgICAiIiJSZXR1cm5zIHdo
ZXRoZXIgdGhlIHBvcnQgdXNlcyBhY2NlbGVyYXRlZCBncmFwaGljcyAoJ2dwdScpIG9yIG5vdAog
ICAgICAgICAoJ2NwdScpLiIiIgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bS5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHkKaW5kZXggNTM2ZmQwZTUzYmNlOTUyNWY2NGJhYzcz
Yzg5YTVhMTUwMDMyYWNmOS4uZmU5Y2U3ZDVhMmQzYWJlY2Y1MjI3ZjIxNDNhN2IzYjM3NGJlNTY2
NiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9j
aHJvbWl1bS5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0
L2Nocm9taXVtLnB5CkBAIC0zOCw4ICszOCwxMCBAQCBpbXBvcnQgc3lzCiBpbXBvcnQgdGltZQog
aW1wb3J0IHdlYmJyb3dzZXIKIAorZnJvbSB3ZWJraXRweS5jb21tb24ubmV0LnRlc3RvdXRwdXRz
ZXQgaW1wb3J0IEFnZ3JlZ2F0ZVRlc3RPdXRwdXRTZXQsIFRlc3RPdXRwdXRTZXQKIGZyb20gd2Vi
a2l0cHkuY29tbW9uLnN5c3RlbSBpbXBvcnQgZXhlY3V0aXZlCiBmcm9tIHdlYmtpdHB5LmNvbW1v
bi5zeXN0ZW0ucGF0aCBpbXBvcnQgY3lncGF0aAorZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVt
LnppcGZpbGVzZXQgaW1wb3J0IFppcEZpbGVTZXQKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3Rz
LmxheW91dF9wYWNrYWdlIGltcG9ydCB0ZXN0X2V4cGVjdGF0aW9ucwogZnJvbSB3ZWJraXRweS5s
YXlvdXRfdGVzdHMucG9ydCBpbXBvcnQgYmFzZQogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMu
cG9ydCBpbXBvcnQgaHR0cF9zZXJ2ZXIKQEAgLTE5NSw2ICsxOTcsMjUgQEAgY2xhc3MgQ2hyb21p
dW1Qb3J0KGJhc2UuUG9ydCk6CiAgICAgICAgIHJldHVybiBzZWxmLnBhdGhfZnJvbV93ZWJraXRf
YmFzZSgnTGF5b3V0VGVzdHMnLCAncGxhdGZvcm0nLAogICAgICAgICAgICAgJ2Nocm9taXVtJywg
J3Rlc3RfZXhwZWN0YXRpb25zLnR4dCcpCiAKKyAgICBkZWYgYnVpbGRib3RfdGVzdG91dHB1dHNl
dChzZWxmLCBwbGF0Zm9ybXMpOgorICAgICAgICBwbGF0Zm9ybV9idWlsZGVycyA9IHsKKyAgICAg
ICAgICAgICdjaHJvbWl1bS1tYWMnOiAnV2Via2l0X01hYzEwXzUnLAorICAgICAgICAgICAgJ2No
cm9taXVtLXdpbi12aXN0YSc6ICdXZWJraXRfV2luJywKKyAgICAgICAgICAgICdjaHJvbWl1bS1s
aW51eCc6ICdXZWJraXRfTGludXhfX2RiZ19fMV8nLAorICAgICAgICB9CisKKyAgICAgICAgdGVz
dG91dHB1dHNldHMgPSBbXQorICAgICAgICBmb3IgcGxhdGZvcm0gaW4gcGxhdGZvcm1zOgorICAg
ICAgICAgICAgaWYgcGxhdGZvcm0gbm90IGluIHBsYXRmb3JtX2J1aWxkZXJzOgorICAgICAgICAg
ICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiRG9uJ3QgaGF2ZSB0ZXN0IG91dHB1dHMgZm9yIHBsYXRm
b3JtICVzIiAlIHBsYXRmb3JtKQorICAgICAgICAgICAgYnVpbGRlcl9uYW1lID0gcGxhdGZvcm1f
YnVpbGRlcnNbcGxhdGZvcm1dCisgICAgICAgICAgICB6aXBfdXJsID0gJ2h0dHA6Ly9idWlsZC5j
aHJvbWl1bS5vcmcvZi9jaHJvbWl1bS9sYXlvdXRfdGVzdF9yZXN1bHRzLycgKyBcCisgICAgICAg
ICAgICAgICAgYnVpbGRlcl9uYW1lICsgJy9sYXlvdXQtdGVzdC1yZXN1bHRzLnppcCcKKyAgICAg
ICAgICAgIHRlc3RvdXRwdXRzZXRzLmFwcGVuZChUZXN0T3V0cHV0U2V0KGJ1aWxkZXJfbmFtZSwg
cGxhdGZvcm0sIFppcEZpbGVTZXQoemlwX3VybCksCisgICAgICAgICAgICAgICAgaW5jbHVkZV9l
eHBlY3RlZD1GYWxzZSkpCisKKyAgICAgICAgcmV0dXJuIEFnZ3JlZ2F0ZVRlc3RPdXRwdXRTZXQo
dGVzdG91dHB1dHNldHMpCisKICAgICBkZWYgcmVzdWx0c19kaXJlY3Rvcnkoc2VsZik6CiAgICAg
ICAgIHRyeToKICAgICAgICAgICAgIHJldHVybiBzZWxmLnBhdGhfZnJvbV9jaHJvbWl1bV9iYXNl
KCd3ZWJraXQnLApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcG9ydC9mYWN0b3J5LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC9mYWN0b3J5LnB5CmluZGV4IDY4M2RiYTNkNjg3MjVkOTE2NTNmYTFlYzA4OTE2NzZkMzU0
NTAzZGYuLjkzNjg2ZjI4NTIwN2ZkYzhhYWNhYTg1YTk2ODMyOWU4Mzc3ZjNkYzMgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZmFjdG9yeS5weQor
KysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2ZhY3RvcnkucHkK
QEAgLTEyNiwzICsxMjYsOSBAQCBkZWYgX2dldF9rd2FyZ3MoKiprd2FyZ3MpOgogICAgIGVsc2U6
CiAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoJ3Vuc3VwcG9ydGVkIHBvcnQ6ICVz
JyAlIHBvcnRfdG9fdXNlKQogICAgIHJldHVybiBtYWtlcigqKmt3YXJncykKKworCitkZWYgZ2V0
X2FsbChvcHRpb25zPU5vbmUpOgorICAgICIiIlJldHVybnMgYWxsIHRoZSBvYmplY3RzIGltcGxl
bWVudGluZyB0aGUgUG9ydCBpbnRlcmZhY2UuIiIiCisgICAgcmV0dXJuIGRpY3QoWyhwb3J0X25h
bWUsIGdldChwb3J0X25hbWUsIG9wdGlvbnM9b3B0aW9ucykpCisgICAgICAgICAgICAgICAgICAg
ICBmb3IgcG9ydF9uYW1lIGluIGFsbF9wb3J0X25hbWVzKCldKQpkaWZmIC0tZ2l0IGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJraXQucHkgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdC5weQppbmRleCAwNTIyNjMxNDk0
MGNlOWUxZmQyYTJjYmEyODVlMjVhMmM2ZjcwOGIyLi4wZjc4OGIzZmY1ZDliZjBkNWQ1MmIwNDA0
NDI5MzhjNmNkMTAwMDI4IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L3dlYmtpdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L3dlYmtpdC5weQpAQCAtNDAsNiArNDAsOCBAQCBpbXBvcnQgc3lzCiBpbXBv
cnQgdGltZQogaW1wb3J0IHdlYmJyb3dzZXIKIAorZnJvbSB3ZWJraXRweS5jb21tb24ubmV0LmJ1
aWxkYm90IGltcG9ydCBCdWlsZEJvdAorZnJvbSB3ZWJraXRweS5jb21tb24ubmV0LnRlc3RvdXRw
dXRzZXQgaW1wb3J0IEFnZ3JlZ2F0ZVRlc3RPdXRwdXRTZXQKIGZyb20gd2Via2l0cHkuY29tbW9u
LnN5c3RlbSBpbXBvcnQgb3NwYXRoCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0IGlt
cG9ydCBiYXNlCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0IGltcG9ydCBzZXJ2ZXJf
cHJvY2VzcwpAQCAtNjksNiArNzEsMzMgQEAgY2xhc3MgV2ViS2l0UG9ydChiYXNlLlBvcnQpOgog
ICAgICAgICByZXR1cm4gc2VsZi5fZmlsZXN5c3RlbS5qb2luKHNlbGYuX3dlYmtpdF9iYXNlbGlu
ZV9wYXRoKHNlbGYuX25hbWUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICd0ZXN0X2V4cGVjdGF0aW9ucy50eHQnKQogCisgICAgZGVmIGJ1aWxkYm90X3Rlc3RvdXRwdXRz
ZXQoc2VsZiwgcGxhdGZvcm1zKToKKyAgICAgICAgcGxhdGZvcm1fYnVpbGRlcnMgPSB7CisgICAg
ICAgICAgICAnbWFjLXNub3dsZW9wYXJkJzogJ1Nub3dMZW9wYXJkIEludGVsIFJlbGVhc2UgKFRl
c3RzKScsCisgICAgICAgICAgICAnbWFjLWxlb3BhcmQnOiAnTGVvcGFyZCBJbnRlbCBEZWJ1ZyAo
VGVzdHMpJywKKyAgICAgICAgICAgICd3aW4nOiAnV2luZG93cyA3IFJlbGVhc2UgKFdlYktpdDIg
VGVzdHMpJywKKyAgICAgICAgICAgICdjaHJvbWl1bS1saW51eCc6ICdHVEsgTGludXggMzItYml0
IFJlbGVhc2UnLAorICAgICAgICB9CisKKyAgICAgICAgZm9yIHBsYXRmb3JtIGluIHBsYXRmb3Jt
czoKKyAgICAgICAgICAgIGlmIHBsYXRmb3JtIG5vdCBpbiBwbGF0Zm9ybV9idWlsZGVyczoKKyAg
ICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIkNhbid0IGZpbmQgYnVpbGRlciBmb3IgJXMi
ICUgcGxhdGZvcm0pCisKKyAgICAgICAgYmIgPSBCdWlsZEJvdCgpCisgICAgICAgIHRlc3RvdXRw
dXRzZXRzID0gW10KKyAgICAgICAgYnVpbGRlcnNfYnlfbmFtZSA9IHt9CisKKyAgICAgICAgZm9y
IGJ1aWxkZXIgaW4gYmIuYnVpbGRlcnMoKToKKyAgICAgICAgICAgIGJ1aWxkZXJzX2J5X25hbWVb
YnVpbGRlci5uYW1lKCldID0gYnVpbGRlcgorCisgICAgICAgIGZvciBwbGF0Zm9ybSBpbiBwbGF0
Zm9ybXM6CisgICAgICAgICAgICBidWlsZGVyID0gYnVpbGRlcnNfYnlfbmFtZVtwbGF0Zm9ybV9i
dWlsZGVyc1twbGF0Zm9ybV1dCisgICAgICAgICAgICBycyA9IGJ1aWxkZXIubGF0ZXN0X2NhY2hl
ZF9idWlsZCgpLnJlc3VsdHMoKQorICAgICAgICAgICAgcnMuc2V0X3BsYXRmb3JtKHBsYXRmb3Jt
KQorICAgICAgICAgICAgdGVzdG91dHB1dHNldHMuYXBwZW5kKHJzKQorCisgICAgICAgIHJldHVy
biBBZ2dyZWdhdGVUZXN0T3V0cHV0U2V0KHRlc3RvdXRwdXRzZXRzKQorCiAgICAgZGVmIF9idWls
ZF9kcml2ZXIoc2VsZik6CiAgICAgICAgIGNvbmZpZ3VyYXRpb24gPSBzZWxmLmdldF9vcHRpb24o
J2NvbmZpZ3VyYXRpb24nKQogICAgICAgICByZXR1cm4gc2VsZi5fY29uZmlnLmJ1aWxkX2R1bXBy
ZW5kZXJ0cmVlKGNvbmZpZ3VyYXRpb24pCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>92119</attachid>
            <date>2011-05-03 13:44:25 -0700</date>
            <delta_ts>2011-05-03 16:44:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-58211-20110504064423.patch</filename>
            <type>text/plain</type>
            <size>5499</size>
            <attacher name="James Kozianski">koz</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODU0OTUKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCA3YThhNGIyMmExOTYzYjMxNmNlNDUwMWY2NjcyYzkyZjYw
MDNiNTkwLi5hZjQxOTM4NjMyOTg3YTEwNjYwZjU3NjI4OGVmNWY2OGI0NTUzODAyIDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTgg
QEAKKzIwMTEtMDUtMDMgIEphbWVzIEtvemlhbnNraSAgPGtvekBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIG1ldGhvZCB0
byBtYWtlIGEgUG9ydCBhYmxlIHRvIHJldHJpZXZlIFRlc3RPdXRwdXRTZXRzIGZyb20gaXRzIGJ1
aWxkZXJzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NTgyMTEKKworICAgICAgICBUaGlzIHdpbGwgYmUgdXNlZCBpbiB0aGUgbmV3IHJlYmFzZWxpbmUg
c2NyaXB0IC0gVGVzdE91dHB1dHMgYXJlCisgICAgICAgIHBvdGVudGlhbCBuZXcgYmFzZWxpbmVz
LgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5
OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0u
cHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9mYWN0b3J5
LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0
LnB5OgorCiAyMDExLTA1LTAyICBOaWNvIFdlYmVyICA8dGhha2lzQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBNaWhhaSBQYXJwYXJpdGEuCmRpZmYgLS1naXQgYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHkgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHkKaW5kZXggMTljZDE2OWQzZTQ2MDQ1
YWFjYzk2ZTI2MWQzZGRiNGQ5NDFmNGQ5NS4uZDE1MjE4NDE1NmE0OGI2ZTEzODBhZDFlZmZkMDE5
MjJkMjQ0MTY2ZSAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcG9ydC9iYXNlLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3BvcnQvYmFzZS5weQpAQCAtNTMwLDYgKzUzMCwxMCBAQCBjbGFzcyBQb3J0KG9iamVjdCk6CiAg
ICAgICAgIGV4cGVjdGF0aW9ucywgZGV0ZXJtaW5pbmcgc2VhcmNoIHBhdGhzLCBhbmQgbG9nZ2lu
ZyBpbmZvcm1hdGlvbi4iIiIKICAgICAgICAgcmV0dXJuIHNlbGYuX3ZlcnNpb24KIAorICAgIGRl
ZiBidWlsZGJvdF90ZXN0X291dHB1dF9zZXQoc2VsZiwgcGxhdGZvcm1zKToKKyAgICAgICAgIiIi
UmV0dXJucyBhIFRlc3RPdXRwdXRTZXQgZm9yIHRoZSBzcGVjaWZpZWQgcGxhdGZvcm1zIGZvciB0
aGlzIHBvcnRzIGJ1aWxkYm90cy4iIiIKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJv
cignUG9ydC5idWlsZGJvdF90ZXN0b3V0cHV0c2V0JykKKwogICAgIGRlZiBncmFwaGljc190eXBl
KHNlbGYpOgogICAgICAgICAiIiJSZXR1cm5zIHdoZXRoZXIgdGhlIHBvcnQgdXNlcyBhY2NlbGVy
YXRlZCBncmFwaGljcyAoJ2dwdScpIG9yIG5vdAogICAgICAgICAoJ2NwdScpLiIiIgpkaWZmIC0t
Z2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bS5w
eSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHkK
aW5kZXggYTQyNzliNGI1ZWFjNGQxZGJhY2VkY2MxZDA5ZTc3ODk2NDQzYjMwYy4uMTYzZDkwMThm
MDkzZTFiNmU3MjJiMDMyNzM0ODRkYWQwZTM2MjQ3YSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bS5weQorKysgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtLnB5CkBAIC0zOCwxMiArMzgs
MTUgQEAgaW1wb3J0IHN5cwogaW1wb3J0IHRpbWUKIGltcG9ydCB3ZWJicm93c2VyCiAKK2Zyb20g
d2Via2l0cHkuY29tbW9uLm5ldC50ZXN0b3V0cHV0c2V0IGltcG9ydCBUZXN0T3V0cHV0U2V0LCBB
Z2dyZWdhdGVUZXN0T3V0cHV0U2V0CiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0gaW1wb3J0
IGV4ZWN1dGl2ZQogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLnBhdGggaW1wb3J0IGN5Z3Bh
dGgKK2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS56aXBmaWxlc2V0IGltcG9ydCBaaXBGaWxl
U2V0CiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5sYXlvdXRfcGFja2FnZSBpbXBvcnQgdGVz
dF9leHBlY3RhdGlvbnMKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQgaW1wb3J0IGJh
c2UKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQgaW1wb3J0IGh0dHBfc2VydmVyCiBm
cm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0IGltcG9ydCB3ZWJzb2NrZXRfc2VydmVyCitm
cm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0LmJ1aWxkZXJzIGltcG9ydCBQT1JUX1RPX0JV
SUxERVJfTkFNRQogCiBfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoIndlYmtpdHB5LmxheW91dF90
ZXN0cy5wb3J0LmNocm9taXVtIikKIApAQCAtMjAwLDYgKzIwMywxOSBAQCBjbGFzcyBDaHJvbWl1
bVBvcnQoYmFzZS5Qb3J0KToKICAgICAgICAgcmV0dXJuIHNlbGYucGF0aF9mcm9tX3dlYmtpdF9i
YXNlKCdMYXlvdXRUZXN0cycsICdwbGF0Zm9ybScsCiAgICAgICAgICAgICAnY2hyb21pdW0nLCAn
dGVzdF9leHBlY3RhdGlvbnMudHh0JykKIAorICAgIGRlZiBidWlsZGJvdF90ZXN0X291dHB1dF9z
ZXQoc2VsZiwgcGxhdGZvcm1zKToKKyAgICAgICAgdGVzdF9vdXRwdXRfc2V0cyA9IFtdCisgICAg
ICAgIGZvciBwbGF0Zm9ybSBpbiBwbGF0Zm9ybXM6CisgICAgICAgICAgICBpZiBwbGF0Zm9ybSBu
b3QgaW4gUE9SVF9UT19CVUlMREVSX05BTUU6CisgICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0
aW9uKCJEb24ndCBoYXZlIHRlc3Qgb3V0cHV0cyBmb3IgcGxhdGZvcm0gJXMiICUgcGxhdGZvcm0p
CisgICAgICAgICAgICBidWlsZGVyX25hbWUgPSBQT1JUX1RPX0JVSUxERVJfTkFNRVtwbGF0Zm9y
bV0KKyAgICAgICAgICAgIHppcF91cmwgPSAoJ2h0dHA6Ly9idWlsZC5jaHJvbWl1bS5vcmcvZi9j
aHJvbWl1bS9sYXlvdXRfdGVzdF9yZXN1bHRzLycgKworICAgICAgICAgICAgICAgIGJ1aWxkZXJf
bmFtZSArICcvbGF5b3V0LXRlc3QtcmVzdWx0cy56aXAnKQorICAgICAgICAgICAgdGVzdF9vdXRw
dXRfc2V0cy5hcHBlbmQoVGVzdE91dHB1dFNldChidWlsZGVyX25hbWUsIHBsYXRmb3JtLCBaaXBG
aWxlU2V0KHppcF91cmwpLAorICAgICAgICAgICAgICAgIGluY2x1ZGVfZXhwZWN0ZWQ9RmFsc2Up
KQorCisgICAgICAgIHJldHVybiBBZ2dyZWdhdGVUZXN0T3V0cHV0U2V0KHRlc3Rfb3V0cHV0X3Nl
dHMpCisKICAgICBkZWYgZGVmYXVsdF9yZXN1bHRzX2RpcmVjdG9yeShzZWxmKToKICAgICAgICAg
dHJ5OgogICAgICAgICAgICAgcmV0dXJuIHNlbGYucGF0aF9mcm9tX2Nocm9taXVtX2Jhc2UoJ3dl
YmtpdCcsCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9w
b3J0L3dlYmtpdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQv
d2Via2l0LnB5CmluZGV4IGNlZmEzMzY5MGZjN2NjZWZiOTNjMzlkNGM3MjRkMDc1MGU3MzJhOTku
LmJiN2QzZjk4OTgzZWZiMTlhMDAwMWM4ZDQ1NjQ1ZGFmY2Y1MWM3MTYgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0LnB5CisrKyBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0LnB5CkBAIC00MSw5
ICs0MSwxMiBAQCBpbXBvcnQgc3lzCiBpbXBvcnQgdGltZQogaW1wb3J0IHdlYmJyb3dzZXIKIAor
ZnJvbSB3ZWJraXRweS5jb21tb24ubmV0LmJ1aWxkYm90IGltcG9ydCBCdWlsZEJvdAorZnJvbSB3
ZWJraXRweS5jb21tb24ubmV0LnRlc3RvdXRwdXRzZXQgaW1wb3J0IFRlc3RPdXRwdXRTZXQsIEFn
Z3JlZ2F0ZVRlc3RPdXRwdXRTZXQKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbSBpbXBvcnQg
b3NwYXRoCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0IGltcG9ydCBiYXNlCiBmcm9t
IHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0IGltcG9ydCBzZXJ2ZXJfcHJvY2VzcworZnJvbSB3
ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydC5idWlsZGVycyBpbXBvcnQgUE9SVF9UT19CVUlMREVS
X05BTUUKIAogX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJ3ZWJraXRweS5sYXlvdXRfdGVzdHMu
cG9ydC53ZWJraXQiKQogCkBAIC03MCw2ICs3MywyNSBAQCBjbGFzcyBXZWJLaXRQb3J0KGJhc2Uu
UG9ydCk6CiAgICAgICAgIHJldHVybiBzZWxmLl9maWxlc3lzdGVtLmpvaW4oc2VsZi5fd2Via2l0
X2Jhc2VsaW5lX3BhdGgoc2VsZi5fbmFtZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJ3Rlc3RfZXhwZWN0YXRpb25zLnR4dCcpCiAKKyAgICBkZWYgYnVpbGRib3RfdGVz
dF9vdXRwdXRfc2V0KHNlbGYsIHBsYXRmb3Jtcyk6CisgICAgICAgIGZvciBwbGF0Zm9ybSBpbiBw
bGF0Zm9ybXM6CisgICAgICAgICAgICBpZiBwbGF0Zm9ybSBub3QgaW4gUE9SVF9UT19CVUlMREVS
X05BTUU6CisgICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJDYW4ndCBmaW5kIGJ1aWxk
ZXIgZm9yICVzIiAlIHBsYXRmb3JtKQorCisgICAgICAgIHRlc3Rfb3V0cHV0X3NldHMgPSBbXQor
ICAgICAgICBidWlsZGVyc19ieV9uYW1lID0ge30KKworICAgICAgICBmb3IgYnVpbGRlciBpbiBC
dWlsZEJvdCgpLmJ1aWxkZXJzKCk6CisgICAgICAgICAgICBidWlsZGVyc19ieV9uYW1lW2J1aWxk
ZXIubmFtZSgpXSA9IGJ1aWxkZXIKKworICAgICAgICBmb3IgcGxhdGZvcm0gaW4gcGxhdGZvcm1z
OgorICAgICAgICAgICAgYnVpbGRlciA9IGJ1aWxkZXJzX2J5X25hbWVbUE9SVF9UT19CVUlMREVS
X05BTUVbcGxhdGZvcm1dXQorICAgICAgICAgICAgcnMgPSBidWlsZGVyLmxhdGVzdF9jYWNoZWRf
YnVpbGQoKS5yZXN1bHRzKCkKKyAgICAgICAgICAgIHJzLnNldF9wbGF0Zm9ybShwbGF0Zm9ybSkK
KyAgICAgICAgICAgIHRlc3Rfb3V0cHV0X3NldHMuYXBwZW5kKHJzKQorCisgICAgICAgIHJldHVy
biBBZ2dyZWdhdGVUZXN0T3V0cHV0U2V0KHRlc3Rfb3V0cHV0X3NldHMpCisKICAgICBkZWYgX2J1
aWxkX2RyaXZlcihzZWxmKToKICAgICAgICAgY29uZmlndXJhdGlvbiA9IHNlbGYuZ2V0X29wdGlv
bignY29uZmlndXJhdGlvbicpCiAgICAgICAgIHJldHVybiBzZWxmLl9jb25maWcuYnVpbGRfZHVt
cHJlbmRlcnRyZWUoY29uZmlndXJhdGlvbikK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>92165</attachid>
            <date>2011-05-03 16:44:11 -0700</date>
            <delta_ts>2011-05-04 09:52:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-58211-20110504094409.patch</filename>
            <type>text/plain</type>
            <size>6792</size>
            <attacher name="James Kozianski">koz</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODU0OTUKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCA3YThhNGIyMmExOTYzYjMxNmNlNDUwMWY2NjcyYzkyZjYw
MDNiNTkwLi5hZjQxOTM4NjMyOTg3YTEwNjYwZjU3NjI4OGVmNWY2OGI0NTUzODAyIDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTgg
QEAKKzIwMTEtMDUtMDMgIEphbWVzIEtvemlhbnNraSAgPGtvekBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIG1ldGhvZCB0
byBtYWtlIGEgUG9ydCBhYmxlIHRvIHJldHJpZXZlIFRlc3RPdXRwdXRTZXRzIGZyb20gaXRzIGJ1
aWxkZXJzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NTgyMTEKKworICAgICAgICBUaGlzIHdpbGwgYmUgdXNlZCBpbiB0aGUgbmV3IHJlYmFzZWxpbmUg
c2NyaXB0IC0gVGVzdE91dHB1dHMgYXJlCisgICAgICAgIHBvdGVudGlhbCBuZXcgYmFzZWxpbmVz
LgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5
OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0u
cHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9mYWN0b3J5
LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0
LnB5OgorCiAyMDExLTA1LTAyICBOaWNvIFdlYmVyICA8dGhha2lzQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBNaWhhaSBQYXJwYXJpdGEuCmRpZmYgLS1naXQgYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jb25maWcvdXJscy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvY29tbW9uL2NvbmZpZy91cmxzLnB5CmluZGV4IGRkYWVmOTdiNzhhNTUwZjEyNzhmZTc5
ZDZiNzAyMGFlODg1MTZiMzYuLmE5MzJkMTcwNzdmOTIzZTE0MWEyMTk3OTBkNWQxYmI0NDE2MWYz
MDIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NvbmZpZy91cmxz
LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NvbmZpZy91cmxzLnB5CkBA
IC0zNCw2ICszNCwxMCBAQCBkZWYgdmlld19zb3VyY2VfdXJsKGxvY2FsX3BhdGgpOgogZGVmIHZp
ZXdfcmV2aXNpb25fdXJsKHJldmlzaW9uX251bWJlcik6CiAgICAgcmV0dXJuICJodHRwOi8vdHJh
Yy53ZWJraXQub3JnL2NoYW5nZXNldC8lcyIgJSByZXZpc2lvbl9udW1iZXIKIAorCitkZWYgY2hy
b21pdW1fcmVzdWx0c196aXBfdXJsKGJ1aWxkZXJfbmFtZSk6CisgICAgcmV0dXJuICdodHRwOi8v
YnVpbGQuY2hyb21pdW0ub3JnL2YvY2hyb21pdW0vbGF5b3V0X3Rlc3RfcmVzdWx0cy8lcy9sYXlv
dXQtdGVzdC1yZXN1bHRzLnppcCcgJSBidWlsZGVyX25hbWUKKwogY2hyb21pdW1fbGtncl91cmwg
PSAiaHR0cDovL2Nocm9taXVtLXN0YXR1cy5hcHBzcG90LmNvbS9sa2dyIgogCiBjb250cmlidXRp
b25fZ3VpZGVsaW5lcyA9ICJodHRwOi8vd2Via2l0Lm9yZy9jb2RpbmcvY29udHJpYnV0aW5nLmh0
bWwiCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0
L2Jhc2UucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2Uu
cHkKaW5kZXggMTljZDE2OWQzZTQ2MDQ1YWFjYzk2ZTI2MWQzZGRiNGQ5NDFmNGQ5NS4uYzkzZmYy
MGYyMmI5ODVhOGZhNmM1MzZmZGM2M2IzNmE2ZGMzNDBiZCAxMDA3NTUKLS0tIGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5CisrKyBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weQpAQCAtNDAsNiArNDAsOCBAQCBp
bXBvcnQgc2hsZXgKIGltcG9ydCBzeXMKIGltcG9ydCB0aW1lCiAKK2Zyb20gd2Via2l0cHkuY29t
bW9uLm5ldC50ZXN0b3V0cHV0c2V0IGltcG9ydCBBZ2dyZWdhdGVUZXN0T3V0cHV0U2V0CisKICMg
SGFuZGxlIFB5dGhvbiA8IDIuNiB3aGVyZSBtdWx0aXByb2Nlc3NpbmcgaXNuJ3QgYXZhaWxhYmxl
LgogdHJ5OgogICAgIGltcG9ydCBtdWx0aXByb2Nlc3NpbmcKQEAgLTUzMCw2ICs1MzIsMTQgQEAg
Y2xhc3MgUG9ydChvYmplY3QpOgogICAgICAgICBleHBlY3RhdGlvbnMsIGRldGVybWluaW5nIHNl
YXJjaCBwYXRocywgYW5kIGxvZ2dpbmcgaW5mb3JtYXRpb24uIiIiCiAgICAgICAgIHJldHVybiBz
ZWxmLl92ZXJzaW9uCiAKKyAgICBkZWYgX3Jlc3VsdHNfZm9yX3BsYXRmb3JtKHNlbGYsIHBsYXRm
b3JtKToKKyAgICAgICAgIiIiUmV0dXJucyBhIFRlc3RPdXRwdXRTZXQgZm9yIHRoZSBib3RzIG9m
IHRoZSBnaXZlbiBwbGF0Zm9ybS4iIiIKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJv
cignUG9ydC5fcmVzdWx0c19mb3JfcGxhdGZvcm0nKQorCisgICAgZGVmIGJ1aWxkYm90X3Rlc3Rf
b3V0cHV0X3NldChzZWxmLCBwbGF0Zm9ybXMpOgorICAgICAgICAiIiJSZXR1cm5zIGEgVGVzdE91
dHB1dFNldCBmb3IgdGhlIHNwZWNpZmllZCBwbGF0Zm9ybXMgZm9yIHRoaXMgcG9ydHMgYnVpbGRi
b3RzLiIiIgorICAgICAgICByZXR1cm4gQWdncmVnYXRlVGVzdE91dHB1dFNldChbc2VsZi5fcmVz
dWx0c19mb3JfcGxhdGZvcm0ocGxhdGZvcm0pIGZvciBwbGF0Zm9ybSBpbiBwbGF0Zm9ybXNdKQor
CiAgICAgZGVmIGdyYXBoaWNzX3R5cGUoc2VsZik6CiAgICAgICAgICIiIlJldHVybnMgd2hldGhl
ciB0aGUgcG9ydCB1c2VzIGFjY2VsZXJhdGVkIGdyYXBoaWNzICgnZ3B1Jykgb3Igbm90CiAgICAg
ICAgICgnY3B1JykuIiIiCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L2J1aWxkZXJzLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC9idWlsZGVycy5weQppbmRleCA0OTg4MGFiZjRlODJlOTI2MGE0MjYwMDJlY2Q2
NGIyMjg3OTcxMjk3Li4yMGY4MzRkMTk2Yjc0ZTE4MTcyNDA5ODM1OWIxZjJmNjYwMDI1Njk0IDEw
MDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2J1aWxk
ZXJzLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYnVp
bGRlcnMucHkKQEAgLTgzLDMgKzgzLDkgQEAgV0VCS0lUX1BPUlRfVE9fQlVJTERFUl9OQU1FID0g
ewogUE9SVF9UT19CVUlMREVSX05BTUUgPSB7fQogUE9SVF9UT19CVUlMREVSX05BTUUudXBkYXRl
KENIUk9NSVVNX1BPUlRfVE9fQlVJTERFUl9OQU1FKQogUE9SVF9UT19CVUlMREVSX05BTUUudXBk
YXRlKFdFQktJVF9QT1JUX1RPX0JVSUxERVJfTkFNRSkKKworCitkZWYgYnVpbGRlcl9uYW1lX2Zv
cl9wbGF0Zm9ybShwbGF0Zm9ybSk6CisgICAgaWYgcGxhdGZvcm0gaW4gUE9SVF9UT19CVUlMREVS
X05BTUU6CisgICAgICAgIHJldHVybiBQT1JUX1RPX0JVSUxERVJfTkFNRVtwbGF0Zm9ybV0KKyAg
ICByZXR1cm4gTm9uZQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC9jaHJvbWl1bS5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvY2hyb21pdW0ucHkKaW5kZXggYTQyNzliNGI1ZWFjNGQxZGJhY2VkY2MxZDA5ZTc3
ODk2NDQzYjMwYy4uNjVkZGVlMDkyMjZmNjk4Mzg1ODgzYjRlZjI4NDNhNDU5YmM1YWY0MiAxMDA2
NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1
bS5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9t
aXVtLnB5CkBAIC0zOCwxMCArMzgsMTQgQEAgaW1wb3J0IHN5cwogaW1wb3J0IHRpbWUKIGltcG9y
dCB3ZWJicm93c2VyCiAKK2Zyb20gd2Via2l0cHkuY29tbW9uLmNvbmZpZyBpbXBvcnQgdXJscwor
ZnJvbSB3ZWJraXRweS5jb21tb24ubmV0LnRlc3RvdXRwdXRzZXQgaW1wb3J0IFRlc3RPdXRwdXRT
ZXQKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbSBpbXBvcnQgZXhlY3V0aXZlCiBmcm9tIHdl
YmtpdHB5LmNvbW1vbi5zeXN0ZW0ucGF0aCBpbXBvcnQgY3lncGF0aAorZnJvbSB3ZWJraXRweS5j
b21tb24uc3lzdGVtLnppcGZpbGVzZXQgaW1wb3J0IFppcEZpbGVTZXQKIGZyb20gd2Via2l0cHku
bGF5b3V0X3Rlc3RzLmxheW91dF9wYWNrYWdlIGltcG9ydCB0ZXN0X2V4cGVjdGF0aW9ucwogZnJv
bSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydCBpbXBvcnQgYmFzZQorZnJvbSB3ZWJraXRweS5s
YXlvdXRfdGVzdHMucG9ydCBpbXBvcnQgYnVpbGRlcnMKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rl
c3RzLnBvcnQgaW1wb3J0IGh0dHBfc2VydmVyCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5w
b3J0IGltcG9ydCB3ZWJzb2NrZXRfc2VydmVyCiAKQEAgLTIwMCw2ICsyMDQsMTQgQEAgY2xhc3Mg
Q2hyb21pdW1Qb3J0KGJhc2UuUG9ydCk6CiAgICAgICAgIHJldHVybiBzZWxmLnBhdGhfZnJvbV93
ZWJraXRfYmFzZSgnTGF5b3V0VGVzdHMnLCAncGxhdGZvcm0nLAogICAgICAgICAgICAgJ2Nocm9t
aXVtJywgJ3Rlc3RfZXhwZWN0YXRpb25zLnR4dCcpCiAKKyAgICBkZWYgX3Jlc3VsdHNfZm9yX3Bs
YXRmb3JtKHNlbGYsIHBsYXRmb3JtKToKKyAgICAgICAgYnVpbGRlcl9uYW1lID0gYnVpbGRlcnMu
YnVpbGRlcl9uYW1lX2Zvcl9wbGF0Zm9ybShwbGF0Zm9ybSkKKyAgICAgICAgaWYgYnVpbGRlcl9u
YW1lIGlzIE5vbmU6CisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIkNhbid0IGZpbmQgYnVp
bGRlciBmb3IgJXMiICUgcGxhdGZvcm0pCisgICAgICAgIHppcF91cmwgPSB1cmxzLmNocm9taXVt
X3Jlc3VsdHNfemlwX3VybChidWlsZGVyX25hbWUpCisgICAgICAgIHJldHVybiBUZXN0T3V0cHV0
U2V0KGJ1aWxkZXJfbmFtZSwgcGxhdGZvcm0sIFppcEZpbGVTZXQoemlwX3VybCksCisgICAgICAg
ICAgICAgICAgaW5jbHVkZV9leHBlY3RlZD1GYWxzZSkKKwogICAgIGRlZiBkZWZhdWx0X3Jlc3Vs
dHNfZGlyZWN0b3J5KHNlbGYpOgogICAgICAgICB0cnk6CiAgICAgICAgICAgICByZXR1cm4gc2Vs
Zi5wYXRoX2Zyb21fY2hyb21pdW1fYmFzZSgnd2Via2l0JywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0LnB5IGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJraXQucHkKaW5kZXggY2VmYTMzNjkwZmM3
Y2NlZmI5M2MzOWQ0YzcyNGQwNzUwZTczMmE5OS4uYjc4NTJmN2RiOTkwMzMwNGRjMTc2MDNiZmNk
ZjljMzBjMGZhYjIyNyAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC93ZWJraXQucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC93ZWJraXQucHkKQEAgLTQxLDkgKzQxLDkgQEAgaW1wb3J0IHN5cwogaW1wb3J0
IHRpbWUKIGltcG9ydCB3ZWJicm93c2VyCiAKK2Zyb20gd2Via2l0cHkuY29tbW9uLm5ldC5idWls
ZGJvdCBpbXBvcnQgQnVpbGRCb3QKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbSBpbXBvcnQg
b3NwYXRoCi1mcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0IGltcG9ydCBiYXNlCi1mcm9t
IHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0IGltcG9ydCBzZXJ2ZXJfcHJvY2VzcworZnJvbSB3
ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydCBpbXBvcnQgYmFzZSwgYnVpbGRlcnMsIHNlcnZlcl9w
cm9jZXNzCiAKIF9sb2cgPSBsb2dnaW5nLmdldExvZ2dlcigid2Via2l0cHkubGF5b3V0X3Rlc3Rz
LnBvcnQud2Via2l0IikKIApAQCAtNzAsNiArNzAsMTYgQEAgY2xhc3MgV2ViS2l0UG9ydChiYXNl
LlBvcnQpOgogICAgICAgICByZXR1cm4gc2VsZi5fZmlsZXN5c3RlbS5qb2luKHNlbGYuX3dlYmtp
dF9iYXNlbGluZV9wYXRoKHNlbGYuX25hbWUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICd0ZXN0X2V4cGVjdGF0aW9ucy50eHQnKQogCisgICAgZGVmIF9yZXN1bHRzX2Zv
cl9wbGF0Zm9ybShzZWxmLCBwbGF0Zm9ybSk6CisgICAgICAgIGJ1aWxkZXJzX2J5X25hbWUgPSBk
aWN0KFsoYnVpbGRlci5uYW1lKCksIGJ1aWxkZXIpIGZvciBidWlsZGVyIGluIEJ1aWxkQm90KCku
YnVpbGRlcnMoKV0pCisgICAgICAgIGJ1aWxkZXJfbmFtZSA9IGJ1aWxkZXJzLmJ1aWxkZXJfbmFt
ZV9mb3JfcGxhdGZvcm0ocGxhdGZvcm0pCisgICAgICAgIGlmIGJ1aWxkZXJfbmFtZSBpcyBOb25l
OgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJDYW4ndCBmaW5kIGJ1aWxkZXIgZm9yICVz
IiAlIHBsYXRmb3JtKQorICAgICAgICBidWlsZGVyID0gYnVpbGRlcnNfYnlfbmFtZVtidWlsZGVy
X25hbWVdCisgICAgICAgIHJlc3VsdF9zZXQgPSBidWlsZGVyLmxhdGVzdF9jYWNoZWRfYnVpbGQo
KS5yZXN1bHRzKCkKKyAgICAgICAgcmVzdWx0X3NldC5zZXRfcGxhdGZvcm0ocGxhdGZvcm0pCisg
ICAgICAgIHJldHVybiByZXN1bHRfc2V0CisKICAgICBkZWYgX2J1aWxkX2RyaXZlcihzZWxmKToK
ICAgICAgICAgY29uZmlndXJhdGlvbiA9IHNlbGYuZ2V0X29wdGlvbignY29uZmlndXJhdGlvbicp
CiAgICAgICAgIHJldHVybiBzZWxmLl9jb25maWcuYnVpbGRfZHVtcHJlbmRlcnRyZWUoY29uZmln
dXJhdGlvbikK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>92262</attachid>
            <date>2011-05-04 09:52:37 -0700</date>
            <delta_ts>2011-05-04 10:00:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-58211-20110505025234.patch</filename>
            <type>text/plain</type>
            <size>6776</size>
            <attacher name="James Kozianski">koz</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODU0OTUKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCA3YThhNGIyMmExOTYzYjMxNmNlNDUwMWY2NjcyYzkyZjYw
MDNiNTkwLi41MjYwY2U0MTliNjY3ZWUwYzJiZGViZmQ5ZWYxZmU1ZGUwZjVjNDllIDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkg
QEAKKzIwMTEtMDUtMDQgIEphbWVzIEtvemlhbnNraSAgPGtvekBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIG1ldGhvZCB0
byBtYWtlIGEgUG9ydCBhYmxlIHRvIHJldHJpZXZlIFRlc3RPdXRwdXRTZXRzIGZyb20gaXRzIGJ1
aWxkZXJzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NTgyMTEKKworICAgICAgICBUaGlzIHdpbGwgYmUgdXNlZCBpbiB0aGUgbmV3IHJlYmFzZWxpbmUg
c2NyaXB0IC0gVGVzdE91dHB1dHMgYXJlCisgICAgICAgIHBvdGVudGlhbCBuZXcgYmFzZWxpbmVz
LgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vY29uZmlnL3VybHMucHk6Cisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5OgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHk6Cisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9mYWN0b3J5LnB5Ogor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0LnB5Ogor
CiAyMDExLTA1LTAyICBOaWNvIFdlYmVyICA8dGhha2lzQGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBNaWhhaSBQYXJwYXJpdGEuCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2NvbW1vbi9jb25maWcvdXJscy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
Y29tbW9uL2NvbmZpZy91cmxzLnB5CmluZGV4IGRkYWVmOTdiNzhhNTUwZjEyNzhmZTc5ZDZiNzAy
MGFlODg1MTZiMzYuLmE5MzJkMTcwNzdmOTIzZTE0MWEyMTk3OTBkNWQxYmI0NDE2MWYzMDIgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NvbmZpZy91cmxzLnB5Cisr
KyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NvbmZpZy91cmxzLnB5CkBAIC0zNCw2
ICszNCwxMCBAQCBkZWYgdmlld19zb3VyY2VfdXJsKGxvY2FsX3BhdGgpOgogZGVmIHZpZXdfcmV2
aXNpb25fdXJsKHJldmlzaW9uX251bWJlcik6CiAgICAgcmV0dXJuICJodHRwOi8vdHJhYy53ZWJr
aXQub3JnL2NoYW5nZXNldC8lcyIgJSByZXZpc2lvbl9udW1iZXIKIAorCitkZWYgY2hyb21pdW1f
cmVzdWx0c196aXBfdXJsKGJ1aWxkZXJfbmFtZSk6CisgICAgcmV0dXJuICdodHRwOi8vYnVpbGQu
Y2hyb21pdW0ub3JnL2YvY2hyb21pdW0vbGF5b3V0X3Rlc3RfcmVzdWx0cy8lcy9sYXlvdXQtdGVz
dC1yZXN1bHRzLnppcCcgJSBidWlsZGVyX25hbWUKKwogY2hyb21pdW1fbGtncl91cmwgPSAiaHR0
cDovL2Nocm9taXVtLXN0YXR1cy5hcHBzcG90LmNvbS9sa2dyIgogCiBjb250cmlidXRpb25fZ3Vp
ZGVsaW5lcyA9ICJodHRwOi8vd2Via2l0Lm9yZy9jb2RpbmcvY29udHJpYnV0aW5nLmh0bWwiCmRp
ZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2Uu
cHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHkKaW5k
ZXggMTljZDE2OWQzZTQ2MDQ1YWFjYzk2ZTI2MWQzZGRiNGQ5NDFmNGQ5NS4uYzkzZmYyMGYyMmI5
ODVhOGZhNmM1MzZmZGM2M2IzNmE2ZGMzNDBiZCAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weQpAQCAtNDAsNiArNDAsOCBAQCBpbXBvcnQg
c2hsZXgKIGltcG9ydCBzeXMKIGltcG9ydCB0aW1lCiAKK2Zyb20gd2Via2l0cHkuY29tbW9uLm5l
dC50ZXN0b3V0cHV0c2V0IGltcG9ydCBBZ2dyZWdhdGVUZXN0T3V0cHV0U2V0CisKICMgSGFuZGxl
IFB5dGhvbiA8IDIuNiB3aGVyZSBtdWx0aXByb2Nlc3NpbmcgaXNuJ3QgYXZhaWxhYmxlLgogdHJ5
OgogICAgIGltcG9ydCBtdWx0aXByb2Nlc3NpbmcKQEAgLTUzMCw2ICs1MzIsMTQgQEAgY2xhc3Mg
UG9ydChvYmplY3QpOgogICAgICAgICBleHBlY3RhdGlvbnMsIGRldGVybWluaW5nIHNlYXJjaCBw
YXRocywgYW5kIGxvZ2dpbmcgaW5mb3JtYXRpb24uIiIiCiAgICAgICAgIHJldHVybiBzZWxmLl92
ZXJzaW9uCiAKKyAgICBkZWYgX3Jlc3VsdHNfZm9yX3BsYXRmb3JtKHNlbGYsIHBsYXRmb3JtKToK
KyAgICAgICAgIiIiUmV0dXJucyBhIFRlc3RPdXRwdXRTZXQgZm9yIHRoZSBib3RzIG9mIHRoZSBn
aXZlbiBwbGF0Zm9ybS4iIiIKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcignUG9y
dC5fcmVzdWx0c19mb3JfcGxhdGZvcm0nKQorCisgICAgZGVmIGJ1aWxkYm90X3Rlc3Rfb3V0cHV0
X3NldChzZWxmLCBwbGF0Zm9ybXMpOgorICAgICAgICAiIiJSZXR1cm5zIGEgVGVzdE91dHB1dFNl
dCBmb3IgdGhlIHNwZWNpZmllZCBwbGF0Zm9ybXMgZm9yIHRoaXMgcG9ydHMgYnVpbGRib3RzLiIi
IgorICAgICAgICByZXR1cm4gQWdncmVnYXRlVGVzdE91dHB1dFNldChbc2VsZi5fcmVzdWx0c19m
b3JfcGxhdGZvcm0ocGxhdGZvcm0pIGZvciBwbGF0Zm9ybSBpbiBwbGF0Zm9ybXNdKQorCiAgICAg
ZGVmIGdyYXBoaWNzX3R5cGUoc2VsZik6CiAgICAgICAgICIiIlJldHVybnMgd2hldGhlciB0aGUg
cG9ydCB1c2VzIGFjY2VsZXJhdGVkIGdyYXBoaWNzICgnZ3B1Jykgb3Igbm90CiAgICAgICAgICgn
Y3B1JykuIiIiCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L2J1aWxkZXJzLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC9idWlsZGVycy5weQppbmRleCA0OTg4MGFiZjRlODJlOTI2MGE0MjYwMDJlY2Q2NGIyMjg3
OTcxMjk3Li5jOGVhODFmMDk4M2IyN2JkNGQwYWIzOTFkMjQ5MTc3MjUxNTkwNDNkIDEwMDY0NAot
LS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2J1aWxkZXJzLnB5
CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYnVpbGRlcnMu
cHkKQEAgLTgzLDMgKzgzLDcgQEAgV0VCS0lUX1BPUlRfVE9fQlVJTERFUl9OQU1FID0gewogUE9S
VF9UT19CVUlMREVSX05BTUUgPSB7fQogUE9SVF9UT19CVUlMREVSX05BTUUudXBkYXRlKENIUk9N
SVVNX1BPUlRfVE9fQlVJTERFUl9OQU1FKQogUE9SVF9UT19CVUlMREVSX05BTUUudXBkYXRlKFdF
QktJVF9QT1JUX1RPX0JVSUxERVJfTkFNRSkKKworCitkZWYgYnVpbGRlcl9uYW1lX2Zvcl9wbGF0
Zm9ybShwbGF0Zm9ybSk6CisgICAgcmV0dXJuIFBPUlRfVE9fQlVJTERFUl9OQU1FLmdldChwbGF0
Zm9ybSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Bv
cnQvY2hyb21pdW0ucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0
L2Nocm9taXVtLnB5CmluZGV4IGE0Mjc5YjRiNWVhYzRkMWRiYWNlZGNjMWQwOWU3Nzg5NjQ0M2Iz
MGMuLjg0YTVmYjc5OGM4YzIyOWU1MDViYjMxY2VmZjg5Nzk2ZDA5M2RjMjIgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHkKKysr
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bS5weQpA
QCAtMzgsMTAgKzM4LDE0IEBAIGltcG9ydCBzeXMKIGltcG9ydCB0aW1lCiBpbXBvcnQgd2ViYnJv
d3NlcgogCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5jb25maWcgaW1wb3J0IHVybHMKK2Zyb20gd2Vi
a2l0cHkuY29tbW9uLm5ldC50ZXN0b3V0cHV0c2V0IGltcG9ydCBUZXN0T3V0cHV0U2V0CiBmcm9t
IHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0gaW1wb3J0IGV4ZWN1dGl2ZQogZnJvbSB3ZWJraXRweS5j
b21tb24uc3lzdGVtLnBhdGggaW1wb3J0IGN5Z3BhdGgKK2Zyb20gd2Via2l0cHkuY29tbW9uLnN5
c3RlbS56aXBmaWxlc2V0IGltcG9ydCBaaXBGaWxlU2V0CiBmcm9tIHdlYmtpdHB5LmxheW91dF90
ZXN0cy5sYXlvdXRfcGFja2FnZSBpbXBvcnQgdGVzdF9leHBlY3RhdGlvbnMKIGZyb20gd2Via2l0
cHkubGF5b3V0X3Rlc3RzLnBvcnQgaW1wb3J0IGJhc2UKK2Zyb20gd2Via2l0cHkubGF5b3V0X3Rl
c3RzLnBvcnQgaW1wb3J0IGJ1aWxkZXJzCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0
IGltcG9ydCBodHRwX3NlcnZlcgogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydCBpbXBv
cnQgd2Vic29ja2V0X3NlcnZlcgogCkBAIC0yMDAsNiArMjA0LDE0IEBAIGNsYXNzIENocm9taXVt
UG9ydChiYXNlLlBvcnQpOgogICAgICAgICByZXR1cm4gc2VsZi5wYXRoX2Zyb21fd2Via2l0X2Jh
c2UoJ0xheW91dFRlc3RzJywgJ3BsYXRmb3JtJywKICAgICAgICAgICAgICdjaHJvbWl1bScsICd0
ZXN0X2V4cGVjdGF0aW9ucy50eHQnKQogCisgICAgZGVmIF9yZXN1bHRzX2Zvcl9wbGF0Zm9ybShz
ZWxmLCBwbGF0Zm9ybSk6CisgICAgICAgIGJ1aWxkZXJfbmFtZSA9IGJ1aWxkZXJzLmJ1aWxkZXJf
bmFtZV9mb3JfcGxhdGZvcm0ocGxhdGZvcm0pCisgICAgICAgIGlmIG5vdCBidWlsZGVyX25hbWU6
CisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIkNhbid0IGZpbmQgYnVpbGRlciBmb3IgJXMi
ICUgcGxhdGZvcm0pCisgICAgICAgIHppcF91cmwgPSB1cmxzLmNocm9taXVtX3Jlc3VsdHNfemlw
X3VybChidWlsZGVyX25hbWUpCisgICAgICAgIHJldHVybiBUZXN0T3V0cHV0U2V0KGJ1aWxkZXJf
bmFtZSwgcGxhdGZvcm0sIFppcEZpbGVTZXQoemlwX3VybCksCisgICAgICAgICAgICAgICAgaW5j
bHVkZV9leHBlY3RlZD1GYWxzZSkKKwogICAgIGRlZiBkZWZhdWx0X3Jlc3VsdHNfZGlyZWN0b3J5
KHNlbGYpOgogICAgICAgICB0cnk6CiAgICAgICAgICAgICByZXR1cm4gc2VsZi5wYXRoX2Zyb21f
Y2hyb21pdW1fYmFzZSgnd2Via2l0JywKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcG9ydC93ZWJraXQucHkKaW5kZXggY2VmYTMzNjkwZmM3Y2NlZmI5M2MzOWQ0
YzcyNGQwNzUwZTczMmE5OS4uZWViNzVjOTUzMjIwNjA4NWVlZDk2MWJmNTY2MzYzMWI1YTIzZDc1
NCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93
ZWJraXQucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93
ZWJraXQucHkKQEAgLTQxLDkgKzQxLDkgQEAgaW1wb3J0IHN5cwogaW1wb3J0IHRpbWUKIGltcG9y
dCB3ZWJicm93c2VyCiAKK2Zyb20gd2Via2l0cHkuY29tbW9uLm5ldC5idWlsZGJvdCBpbXBvcnQg
QnVpbGRCb3QKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbSBpbXBvcnQgb3NwYXRoCi1mcm9t
IHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0IGltcG9ydCBiYXNlCi1mcm9tIHdlYmtpdHB5Lmxh
eW91dF90ZXN0cy5wb3J0IGltcG9ydCBzZXJ2ZXJfcHJvY2VzcworZnJvbSB3ZWJraXRweS5sYXlv
dXRfdGVzdHMucG9ydCBpbXBvcnQgYmFzZSwgYnVpbGRlcnMsIHNlcnZlcl9wcm9jZXNzCiAKIF9s
b2cgPSBsb2dnaW5nLmdldExvZ2dlcigid2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQud2Via2l0
IikKIApAQCAtNzAsNiArNzAsMTYgQEAgY2xhc3MgV2ViS2l0UG9ydChiYXNlLlBvcnQpOgogICAg
ICAgICByZXR1cm4gc2VsZi5fZmlsZXN5c3RlbS5qb2luKHNlbGYuX3dlYmtpdF9iYXNlbGluZV9w
YXRoKHNlbGYuX25hbWUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0
ZXN0X2V4cGVjdGF0aW9ucy50eHQnKQogCisgICAgZGVmIF9yZXN1bHRzX2Zvcl9wbGF0Zm9ybShz
ZWxmLCBwbGF0Zm9ybSk6CisgICAgICAgIGJ1aWxkZXJfbmFtZSA9IGJ1aWxkZXJzLmJ1aWxkZXJf
bmFtZV9mb3JfcGxhdGZvcm0ocGxhdGZvcm0pCisgICAgICAgIGlmIG5vdCBidWlsZGVyX25hbWU6
CisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIkNhbid0IGZpbmQgYnVpbGRlciBmb3IgJXMi
ICUgcGxhdGZvcm0pCisgICAgICAgIGJ1aWxkZXJzX2J5X25hbWUgPSBkaWN0KFsoYnVpbGRlci5u
YW1lKCksIGJ1aWxkZXIpIGZvciBidWlsZGVyIGluIEJ1aWxkQm90KCkuYnVpbGRlcnMoKV0pCisg
ICAgICAgIGJ1aWxkZXIgPSBidWlsZGVyc19ieV9uYW1lW2J1aWxkZXJfbmFtZV0KKyAgICAgICAg
cmVzdWx0X3NldCA9IGJ1aWxkZXIubGF0ZXN0X2NhY2hlZF9idWlsZCgpLnJlc3VsdHMoKQorICAg
ICAgICByZXN1bHRfc2V0LnNldF9wbGF0Zm9ybShwbGF0Zm9ybSkKKyAgICAgICAgcmV0dXJuIHJl
c3VsdF9zZXQKKwogICAgIGRlZiBfYnVpbGRfZHJpdmVyKHNlbGYpOgogICAgICAgICBjb25maWd1
cmF0aW9uID0gc2VsZi5nZXRfb3B0aW9uKCdjb25maWd1cmF0aW9uJykKICAgICAgICAgcmV0dXJu
IHNlbGYuX2NvbmZpZy5idWlsZF9kdW1wcmVuZGVydHJlZShjb25maWd1cmF0aW9uKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>92266</attachid>
            <date>2011-05-04 10:00:15 -0700</date>
            <delta_ts>2011-05-04 10:04:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-58211-20110505030012.patch</filename>
            <type>text/plain</type>
            <size>6836</size>
            <attacher name="James Kozianski">koz</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODU0OTUKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCA3YThhNGIyMmExOTYzYjMxNmNlNDUwMWY2NjcyYzkyZjYw
MDNiNTkwLi41MjYwY2U0MTliNjY3ZWUwYzJiZGViZmQ5ZWYxZmU1ZGUwZjVjNDllIDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkg
QEAKKzIwMTEtMDUtMDQgIEphbWVzIEtvemlhbnNraSAgPGtvekBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIG1ldGhvZCB0
byBtYWtlIGEgUG9ydCBhYmxlIHRvIHJldHJpZXZlIFRlc3RPdXRwdXRTZXRzIGZyb20gaXRzIGJ1
aWxkZXJzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NTgyMTEKKworICAgICAgICBUaGlzIHdpbGwgYmUgdXNlZCBpbiB0aGUgbmV3IHJlYmFzZWxpbmUg
c2NyaXB0IC0gVGVzdE91dHB1dHMgYXJlCisgICAgICAgIHBvdGVudGlhbCBuZXcgYmFzZWxpbmVz
LgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vY29uZmlnL3VybHMucHk6Cisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5OgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHk6Cisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9mYWN0b3J5LnB5Ogor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0LnB5Ogor
CiAyMDExLTA1LTAyICBOaWNvIFdlYmVyICA8dGhha2lzQGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBNaWhhaSBQYXJwYXJpdGEuCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2NvbW1vbi9jb25maWcvdXJscy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
Y29tbW9uL2NvbmZpZy91cmxzLnB5CmluZGV4IGRkYWVmOTdiNzhhNTUwZjEyNzhmZTc5ZDZiNzAy
MGFlODg1MTZiMzYuLjc4MzQ5MzJhY2ZkN2JmZmI4MDYyMTcwNTMxN2I1Mzc3ZjdiNDI5YjEgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NvbmZpZy91cmxzLnB5Cisr
KyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NvbmZpZy91cmxzLnB5CkBAIC0zNCw2
ICszNCw5IEBAIGRlZiB2aWV3X3NvdXJjZV91cmwobG9jYWxfcGF0aCk6CiBkZWYgdmlld19yZXZp
c2lvbl91cmwocmV2aXNpb25fbnVtYmVyKToKICAgICByZXR1cm4gImh0dHA6Ly90cmFjLndlYmtp
dC5vcmcvY2hhbmdlc2V0LyVzIiAlIHJldmlzaW9uX251bWJlcgogCi1jaHJvbWl1bV9sa2dyX3Vy
bCA9ICJodHRwOi8vY2hyb21pdW0tc3RhdHVzLmFwcHNwb3QuY29tL2xrZ3IiCiAKK2RlZiBjaHJv
bWl1bV9yZXN1bHRzX3ppcF91cmwoYnVpbGRlcl9uYW1lKToKKyAgICByZXR1cm4gJ2h0dHA6Ly9i
dWlsZC5jaHJvbWl1bS5vcmcvZi9jaHJvbWl1bS9sYXlvdXRfdGVzdF9yZXN1bHRzLyVzL2xheW91
dC10ZXN0LXJlc3VsdHMuemlwJyAlIGJ1aWxkZXJfbmFtZQorCitjaHJvbWl1bV9sa2dyX3VybCA9
ICJodHRwOi8vY2hyb21pdW0tc3RhdHVzLmFwcHNwb3QuY29tL2xrZ3IiCiBjb250cmlidXRpb25f
Z3VpZGVsaW5lcyA9ICJodHRwOi8vd2Via2l0Lm9yZy9jb2RpbmcvY29udHJpYnV0aW5nLmh0bWwi
CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jh
c2UucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHkK
aW5kZXggMTljZDE2OWQzZTQ2MDQ1YWFjYzk2ZTI2MWQzZGRiNGQ5NDFmNGQ5NS4uYzkzZmYyMGYy
MmI5ODVhOGZhNmM1MzZmZGM2M2IzNmE2ZGMzNDBiZCAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weQpAQCAtNDAsNiArNDAsOCBAQCBpbXBv
cnQgc2hsZXgKIGltcG9ydCBzeXMKIGltcG9ydCB0aW1lCiAKK2Zyb20gd2Via2l0cHkuY29tbW9u
Lm5ldC50ZXN0b3V0cHV0c2V0IGltcG9ydCBBZ2dyZWdhdGVUZXN0T3V0cHV0U2V0CisKICMgSGFu
ZGxlIFB5dGhvbiA8IDIuNiB3aGVyZSBtdWx0aXByb2Nlc3NpbmcgaXNuJ3QgYXZhaWxhYmxlLgog
dHJ5OgogICAgIGltcG9ydCBtdWx0aXByb2Nlc3NpbmcKQEAgLTUzMCw2ICs1MzIsMTQgQEAgY2xh
c3MgUG9ydChvYmplY3QpOgogICAgICAgICBleHBlY3RhdGlvbnMsIGRldGVybWluaW5nIHNlYXJj
aCBwYXRocywgYW5kIGxvZ2dpbmcgaW5mb3JtYXRpb24uIiIiCiAgICAgICAgIHJldHVybiBzZWxm
Ll92ZXJzaW9uCiAKKyAgICBkZWYgX3Jlc3VsdHNfZm9yX3BsYXRmb3JtKHNlbGYsIHBsYXRmb3Jt
KToKKyAgICAgICAgIiIiUmV0dXJucyBhIFRlc3RPdXRwdXRTZXQgZm9yIHRoZSBib3RzIG9mIHRo
ZSBnaXZlbiBwbGF0Zm9ybS4iIiIKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcign
UG9ydC5fcmVzdWx0c19mb3JfcGxhdGZvcm0nKQorCisgICAgZGVmIGJ1aWxkYm90X3Rlc3Rfb3V0
cHV0X3NldChzZWxmLCBwbGF0Zm9ybXMpOgorICAgICAgICAiIiJSZXR1cm5zIGEgVGVzdE91dHB1
dFNldCBmb3IgdGhlIHNwZWNpZmllZCBwbGF0Zm9ybXMgZm9yIHRoaXMgcG9ydHMgYnVpbGRib3Rz
LiIiIgorICAgICAgICByZXR1cm4gQWdncmVnYXRlVGVzdE91dHB1dFNldChbc2VsZi5fcmVzdWx0
c19mb3JfcGxhdGZvcm0ocGxhdGZvcm0pIGZvciBwbGF0Zm9ybSBpbiBwbGF0Zm9ybXNdKQorCiAg
ICAgZGVmIGdyYXBoaWNzX3R5cGUoc2VsZik6CiAgICAgICAgICIiIlJldHVybnMgd2hldGhlciB0
aGUgcG9ydCB1c2VzIGFjY2VsZXJhdGVkIGdyYXBoaWNzICgnZ3B1Jykgb3Igbm90CiAgICAgICAg
ICgnY3B1JykuIiIiCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9wb3J0L2J1aWxkZXJzLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcG9ydC9idWlsZGVycy5weQppbmRleCA0OTg4MGFiZjRlODJlOTI2MGE0MjYwMDJlY2Q2NGIy
Mjg3OTcxMjk3Li5jOGVhODFmMDk4M2IyN2JkNGQwYWIzOTFkMjQ5MTc3MjUxNTkwNDNkIDEwMDY0
NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2J1aWxkZXJz
LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYnVpbGRl
cnMucHkKQEAgLTgzLDMgKzgzLDcgQEAgV0VCS0lUX1BPUlRfVE9fQlVJTERFUl9OQU1FID0gewog
UE9SVF9UT19CVUlMREVSX05BTUUgPSB7fQogUE9SVF9UT19CVUlMREVSX05BTUUudXBkYXRlKENI
Uk9NSVVNX1BPUlRfVE9fQlVJTERFUl9OQU1FKQogUE9SVF9UT19CVUlMREVSX05BTUUudXBkYXRl
KFdFQktJVF9QT1JUX1RPX0JVSUxERVJfTkFNRSkKKworCitkZWYgYnVpbGRlcl9uYW1lX2Zvcl9w
bGF0Zm9ybShwbGF0Zm9ybSk6CisgICAgcmV0dXJuIFBPUlRfVE9fQlVJTERFUl9OQU1FLmdldChw
bGF0Zm9ybSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3BvcnQvY2hyb21pdW0ucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9w
b3J0L2Nocm9taXVtLnB5CmluZGV4IGE0Mjc5YjRiNWVhYzRkMWRiYWNlZGNjMWQwOWU3Nzg5NjQ0
M2IzMGMuLjg0YTVmYjc5OGM4YzIyOWU1MDViYjMxY2VmZjg5Nzk2ZDA5M2RjMjIgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHkK
KysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bS5w
eQpAQCAtMzgsMTAgKzM4LDE0IEBAIGltcG9ydCBzeXMKIGltcG9ydCB0aW1lCiBpbXBvcnQgd2Vi
YnJvd3NlcgogCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5jb25maWcgaW1wb3J0IHVybHMKK2Zyb20g
d2Via2l0cHkuY29tbW9uLm5ldC50ZXN0b3V0cHV0c2V0IGltcG9ydCBUZXN0T3V0cHV0U2V0CiBm
cm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0gaW1wb3J0IGV4ZWN1dGl2ZQogZnJvbSB3ZWJraXRw
eS5jb21tb24uc3lzdGVtLnBhdGggaW1wb3J0IGN5Z3BhdGgKK2Zyb20gd2Via2l0cHkuY29tbW9u
LnN5c3RlbS56aXBmaWxlc2V0IGltcG9ydCBaaXBGaWxlU2V0CiBmcm9tIHdlYmtpdHB5LmxheW91
dF90ZXN0cy5sYXlvdXRfcGFja2FnZSBpbXBvcnQgdGVzdF9leHBlY3RhdGlvbnMKIGZyb20gd2Vi
a2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQgaW1wb3J0IGJhc2UKK2Zyb20gd2Via2l0cHkubGF5b3V0
X3Rlc3RzLnBvcnQgaW1wb3J0IGJ1aWxkZXJzCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5w
b3J0IGltcG9ydCBodHRwX3NlcnZlcgogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydCBp
bXBvcnQgd2Vic29ja2V0X3NlcnZlcgogCkBAIC0yMDAsNiArMjA0LDE0IEBAIGNsYXNzIENocm9t
aXVtUG9ydChiYXNlLlBvcnQpOgogICAgICAgICByZXR1cm4gc2VsZi5wYXRoX2Zyb21fd2Via2l0
X2Jhc2UoJ0xheW91dFRlc3RzJywgJ3BsYXRmb3JtJywKICAgICAgICAgICAgICdjaHJvbWl1bScs
ICd0ZXN0X2V4cGVjdGF0aW9ucy50eHQnKQogCisgICAgZGVmIF9yZXN1bHRzX2Zvcl9wbGF0Zm9y
bShzZWxmLCBwbGF0Zm9ybSk6CisgICAgICAgIGJ1aWxkZXJfbmFtZSA9IGJ1aWxkZXJzLmJ1aWxk
ZXJfbmFtZV9mb3JfcGxhdGZvcm0ocGxhdGZvcm0pCisgICAgICAgIGlmIG5vdCBidWlsZGVyX25h
bWU6CisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIkNhbid0IGZpbmQgYnVpbGRlciBmb3Ig
JXMiICUgcGxhdGZvcm0pCisgICAgICAgIHppcF91cmwgPSB1cmxzLmNocm9taXVtX3Jlc3VsdHNf
emlwX3VybChidWlsZGVyX25hbWUpCisgICAgICAgIHJldHVybiBUZXN0T3V0cHV0U2V0KGJ1aWxk
ZXJfbmFtZSwgcGxhdGZvcm0sIFppcEZpbGVTZXQoemlwX3VybCksCisgICAgICAgICAgICAgICAg
aW5jbHVkZV9leHBlY3RlZD1GYWxzZSkKKwogICAgIGRlZiBkZWZhdWx0X3Jlc3VsdHNfZGlyZWN0
b3J5KHNlbGYpOgogICAgICAgICB0cnk6CiAgICAgICAgICAgICByZXR1cm4gc2VsZi5wYXRoX2Zy
b21fY2hyb21pdW1fYmFzZSgnd2Via2l0JywKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJraXQucHkKaW5kZXggY2VmYTMzNjkwZmM3Y2NlZmI5M2Mz
OWQ0YzcyNGQwNzUwZTczMmE5OS4uZWViNzVjOTUzMjIwNjA4NWVlZDk2MWJmNTY2MzYzMWI1YTIz
ZDc1NCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC93ZWJraXQucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC93ZWJraXQucHkKQEAgLTQxLDkgKzQxLDkgQEAgaW1wb3J0IHN5cwogaW1wb3J0IHRpbWUKIGlt
cG9ydCB3ZWJicm93c2VyCiAKK2Zyb20gd2Via2l0cHkuY29tbW9uLm5ldC5idWlsZGJvdCBpbXBv
cnQgQnVpbGRCb3QKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbSBpbXBvcnQgb3NwYXRoCi1m
cm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0IGltcG9ydCBiYXNlCi1mcm9tIHdlYmtpdHB5
LmxheW91dF90ZXN0cy5wb3J0IGltcG9ydCBzZXJ2ZXJfcHJvY2VzcworZnJvbSB3ZWJraXRweS5s
YXlvdXRfdGVzdHMucG9ydCBpbXBvcnQgYmFzZSwgYnVpbGRlcnMsIHNlcnZlcl9wcm9jZXNzCiAK
IF9sb2cgPSBsb2dnaW5nLmdldExvZ2dlcigid2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQud2Vi
a2l0IikKIApAQCAtNzAsNiArNzAsMTYgQEAgY2xhc3MgV2ViS2l0UG9ydChiYXNlLlBvcnQpOgog
ICAgICAgICByZXR1cm4gc2VsZi5fZmlsZXN5c3RlbS5qb2luKHNlbGYuX3dlYmtpdF9iYXNlbGlu
ZV9wYXRoKHNlbGYuX25hbWUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICd0ZXN0X2V4cGVjdGF0aW9ucy50eHQnKQogCisgICAgZGVmIF9yZXN1bHRzX2Zvcl9wbGF0Zm9y
bShzZWxmLCBwbGF0Zm9ybSk6CisgICAgICAgIGJ1aWxkZXJfbmFtZSA9IGJ1aWxkZXJzLmJ1aWxk
ZXJfbmFtZV9mb3JfcGxhdGZvcm0ocGxhdGZvcm0pCisgICAgICAgIGlmIG5vdCBidWlsZGVyX25h
bWU6CisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIkNhbid0IGZpbmQgYnVpbGRlciBmb3Ig
JXMiICUgcGxhdGZvcm0pCisgICAgICAgIGJ1aWxkZXJzX2J5X25hbWUgPSBkaWN0KFsoYnVpbGRl
ci5uYW1lKCksIGJ1aWxkZXIpIGZvciBidWlsZGVyIGluIEJ1aWxkQm90KCkuYnVpbGRlcnMoKV0p
CisgICAgICAgIGJ1aWxkZXIgPSBidWlsZGVyc19ieV9uYW1lW2J1aWxkZXJfbmFtZV0KKyAgICAg
ICAgcmVzdWx0X3NldCA9IGJ1aWxkZXIubGF0ZXN0X2NhY2hlZF9idWlsZCgpLnJlc3VsdHMoKQor
ICAgICAgICByZXN1bHRfc2V0LnNldF9wbGF0Zm9ybShwbGF0Zm9ybSkKKyAgICAgICAgcmV0dXJu
IHJlc3VsdF9zZXQKKwogICAgIGRlZiBfYnVpbGRfZHJpdmVyKHNlbGYpOgogICAgICAgICBjb25m
aWd1cmF0aW9uID0gc2VsZi5nZXRfb3B0aW9uKCdjb25maWd1cmF0aW9uJykKICAgICAgICAgcmV0
dXJuIHNlbGYuX2NvbmZpZy5idWlsZF9kdW1wcmVuZGVydHJlZShjb25maWd1cmF0aW9uKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>92268</attachid>
            <date>2011-05-04 10:04:26 -0700</date>
            <delta_ts>2011-05-04 10:28:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-58211-20110505030424.patch</filename>
            <type>text/plain</type>
            <size>6834</size>
            <attacher name="James Kozianski">koz</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODU0OTUKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCA3YThhNGIyMmExOTYzYjMxNmNlNDUwMWY2NjcyYzkyZjYw
MDNiNTkwLi41MjYwY2U0MTliNjY3ZWUwYzJiZGViZmQ5ZWYxZmU1ZGUwZjVjNDllIDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkg
QEAKKzIwMTEtMDUtMDQgIEphbWVzIEtvemlhbnNraSAgPGtvekBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIG1ldGhvZCB0
byBtYWtlIGEgUG9ydCBhYmxlIHRvIHJldHJpZXZlIFRlc3RPdXRwdXRTZXRzIGZyb20gaXRzIGJ1
aWxkZXJzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NTgyMTEKKworICAgICAgICBUaGlzIHdpbGwgYmUgdXNlZCBpbiB0aGUgbmV3IHJlYmFzZWxpbmUg
c2NyaXB0IC0gVGVzdE91dHB1dHMgYXJlCisgICAgICAgIHBvdGVudGlhbCBuZXcgYmFzZWxpbmVz
LgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vY29uZmlnL3VybHMucHk6Cisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5OgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHk6Cisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9mYWN0b3J5LnB5Ogor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0LnB5Ogor
CiAyMDExLTA1LTAyICBOaWNvIFdlYmVyICA8dGhha2lzQGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBNaWhhaSBQYXJwYXJpdGEuCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2NvbW1vbi9jb25maWcvdXJscy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
Y29tbW9uL2NvbmZpZy91cmxzLnB5CmluZGV4IGRkYWVmOTdiNzhhNTUwZjEyNzhmZTc5ZDZiNzAy
MGFlODg1MTZiMzYuLjIxMWY3OTg2MTRmODg0ZWE0YTUzOWNiZTg0ZDEyNGFlMmQ2NjE2ODEgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NvbmZpZy91cmxzLnB5Cisr
KyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NvbmZpZy91cmxzLnB5CkBAIC0zNCw2
ICszNCw4IEBAIGRlZiB2aWV3X3NvdXJjZV91cmwobG9jYWxfcGF0aCk6CiBkZWYgdmlld19yZXZp
c2lvbl91cmwocmV2aXNpb25fbnVtYmVyKToKICAgICByZXR1cm4gImh0dHA6Ly90cmFjLndlYmtp
dC5vcmcvY2hhbmdlc2V0LyVzIiAlIHJldmlzaW9uX251bWJlcgogCi1jaHJvbWl1bV9sa2dyX3Vy
bCA9ICJodHRwOi8vY2hyb21pdW0tc3RhdHVzLmFwcHNwb3QuY29tL2xrZ3IiCiAKK2RlZiBjaHJv
bWl1bV9yZXN1bHRzX3ppcF91cmwoYnVpbGRlcl9uYW1lKToKKyAgICByZXR1cm4gJ2h0dHA6Ly9i
dWlsZC5jaHJvbWl1bS5vcmcvZi9jaHJvbWl1bS9sYXlvdXRfdGVzdF9yZXN1bHRzLyVzL2xheW91
dC10ZXN0LXJlc3VsdHMuemlwJyAlIGJ1aWxkZXJfbmFtZQorY2hyb21pdW1fbGtncl91cmwgPSAi
aHR0cDovL2Nocm9taXVtLXN0YXR1cy5hcHBzcG90LmNvbS9sa2dyIgogY29udHJpYnV0aW9uX2d1
aWRlbGluZXMgPSAiaHR0cDovL3dlYmtpdC5vcmcvY29kaW5nL2NvbnRyaWJ1dGluZy5odG1sIgpk
aWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNl
LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5Cmlu
ZGV4IDE5Y2QxNjlkM2U0NjA0NWFhY2M5NmUyNjFkM2RkYjRkOTQxZjRkOTUuLmM5M2ZmMjBmMjJi
OTg1YThmYTZjNTM2ZmRjNjNiMzZhNmRjMzQwYmQgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weQorKysgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHkKQEAgLTQwLDYgKzQwLDggQEAgaW1wb3J0
IHNobGV4CiBpbXBvcnQgc3lzCiBpbXBvcnQgdGltZQogCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5u
ZXQudGVzdG91dHB1dHNldCBpbXBvcnQgQWdncmVnYXRlVGVzdE91dHB1dFNldAorCiAjIEhhbmRs
ZSBQeXRob24gPCAyLjYgd2hlcmUgbXVsdGlwcm9jZXNzaW5nIGlzbid0IGF2YWlsYWJsZS4KIHRy
eToKICAgICBpbXBvcnQgbXVsdGlwcm9jZXNzaW5nCkBAIC01MzAsNiArNTMyLDE0IEBAIGNsYXNz
IFBvcnQob2JqZWN0KToKICAgICAgICAgZXhwZWN0YXRpb25zLCBkZXRlcm1pbmluZyBzZWFyY2gg
cGF0aHMsIGFuZCBsb2dnaW5nIGluZm9ybWF0aW9uLiIiIgogICAgICAgICByZXR1cm4gc2VsZi5f
dmVyc2lvbgogCisgICAgZGVmIF9yZXN1bHRzX2Zvcl9wbGF0Zm9ybShzZWxmLCBwbGF0Zm9ybSk6
CisgICAgICAgICIiIlJldHVybnMgYSBUZXN0T3V0cHV0U2V0IGZvciB0aGUgYm90cyBvZiB0aGUg
Z2l2ZW4gcGxhdGZvcm0uIiIiCisgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoJ1Bv
cnQuX3Jlc3VsdHNfZm9yX3BsYXRmb3JtJykKKworICAgIGRlZiBidWlsZGJvdF90ZXN0X291dHB1
dF9zZXQoc2VsZiwgcGxhdGZvcm1zKToKKyAgICAgICAgIiIiUmV0dXJucyBhIFRlc3RPdXRwdXRT
ZXQgZm9yIHRoZSBzcGVjaWZpZWQgcGxhdGZvcm1zIGZvciB0aGlzIHBvcnRzIGJ1aWxkYm90cy4i
IiIKKyAgICAgICAgcmV0dXJuIEFnZ3JlZ2F0ZVRlc3RPdXRwdXRTZXQoW3NlbGYuX3Jlc3VsdHNf
Zm9yX3BsYXRmb3JtKHBsYXRmb3JtKSBmb3IgcGxhdGZvcm0gaW4gcGxhdGZvcm1zXSkKKwogICAg
IGRlZiBncmFwaGljc190eXBlKHNlbGYpOgogICAgICAgICAiIiJSZXR1cm5zIHdoZXRoZXIgdGhl
IHBvcnQgdXNlcyBhY2NlbGVyYXRlZCBncmFwaGljcyAoJ2dwdScpIG9yIG5vdAogICAgICAgICAo
J2NwdScpLiIiIgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcG9ydC9idWlsZGVycy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3BvcnQvYnVpbGRlcnMucHkKaW5kZXggNDk4ODBhYmY0ZTgyZTkyNjBhNDI2MDAyZWNkNjRiMjI4
Nzk3MTI5Ny4uYzhlYTgxZjA5ODNiMjdiZDRkMGFiMzkxZDI0OTE3NzI1MTU5MDQzZCAxMDA2NDQK
LS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9idWlsZGVycy5w
eQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2J1aWxkZXJz
LnB5CkBAIC04MywzICs4Myw3IEBAIFdFQktJVF9QT1JUX1RPX0JVSUxERVJfTkFNRSA9IHsKIFBP
UlRfVE9fQlVJTERFUl9OQU1FID0ge30KIFBPUlRfVE9fQlVJTERFUl9OQU1FLnVwZGF0ZShDSFJP
TUlVTV9QT1JUX1RPX0JVSUxERVJfTkFNRSkKIFBPUlRfVE9fQlVJTERFUl9OQU1FLnVwZGF0ZShX
RUJLSVRfUE9SVF9UT19CVUlMREVSX05BTUUpCisKKworZGVmIGJ1aWxkZXJfbmFtZV9mb3JfcGxh
dGZvcm0ocGxhdGZvcm0pOgorICAgIHJldHVybiBQT1JUX1RPX0JVSUxERVJfTkFNRS5nZXQocGxh
dGZvcm0pCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9w
b3J0L2Nocm9taXVtLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC9jaHJvbWl1bS5weQppbmRleCBhNDI3OWI0YjVlYWM0ZDFkYmFjZWRjYzFkMDllNzc4OTY0NDNi
MzBjLi44NGE1ZmI3OThjOGMyMjllNTA1YmIzMWNlZmY4OTc5NmQwOTNkYzIyIDEwMDY0NAotLS0g
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtLnB5Cisr
KyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHkK
QEAgLTM4LDEwICszOCwxNCBAQCBpbXBvcnQgc3lzCiBpbXBvcnQgdGltZQogaW1wb3J0IHdlYmJy
b3dzZXIKIAorZnJvbSB3ZWJraXRweS5jb21tb24uY29uZmlnIGltcG9ydCB1cmxzCitmcm9tIHdl
YmtpdHB5LmNvbW1vbi5uZXQudGVzdG91dHB1dHNldCBpbXBvcnQgVGVzdE91dHB1dFNldAogZnJv
bSB3ZWJraXRweS5jb21tb24uc3lzdGVtIGltcG9ydCBleGVjdXRpdmUKIGZyb20gd2Via2l0cHku
Y29tbW9uLnN5c3RlbS5wYXRoIGltcG9ydCBjeWdwYXRoCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5z
eXN0ZW0uemlwZmlsZXNldCBpbXBvcnQgWmlwRmlsZVNldAogZnJvbSB3ZWJraXRweS5sYXlvdXRf
dGVzdHMubGF5b3V0X3BhY2thZ2UgaW1wb3J0IHRlc3RfZXhwZWN0YXRpb25zCiBmcm9tIHdlYmtp
dHB5LmxheW91dF90ZXN0cy5wb3J0IGltcG9ydCBiYXNlCitmcm9tIHdlYmtpdHB5LmxheW91dF90
ZXN0cy5wb3J0IGltcG9ydCBidWlsZGVycwogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9y
dCBpbXBvcnQgaHR0cF9zZXJ2ZXIKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQgaW1w
b3J0IHdlYnNvY2tldF9zZXJ2ZXIKIApAQCAtMjAwLDYgKzIwNCwxNCBAQCBjbGFzcyBDaHJvbWl1
bVBvcnQoYmFzZS5Qb3J0KToKICAgICAgICAgcmV0dXJuIHNlbGYucGF0aF9mcm9tX3dlYmtpdF9i
YXNlKCdMYXlvdXRUZXN0cycsICdwbGF0Zm9ybScsCiAgICAgICAgICAgICAnY2hyb21pdW0nLCAn
dGVzdF9leHBlY3RhdGlvbnMudHh0JykKIAorICAgIGRlZiBfcmVzdWx0c19mb3JfcGxhdGZvcm0o
c2VsZiwgcGxhdGZvcm0pOgorICAgICAgICBidWlsZGVyX25hbWUgPSBidWlsZGVycy5idWlsZGVy
X25hbWVfZm9yX3BsYXRmb3JtKHBsYXRmb3JtKQorICAgICAgICBpZiBub3QgYnVpbGRlcl9uYW1l
OgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJDYW4ndCBmaW5kIGJ1aWxkZXIgZm9yICVz
IiAlIHBsYXRmb3JtKQorICAgICAgICB6aXBfdXJsID0gdXJscy5jaHJvbWl1bV9yZXN1bHRzX3pp
cF91cmwoYnVpbGRlcl9uYW1lKQorICAgICAgICByZXR1cm4gVGVzdE91dHB1dFNldChidWlsZGVy
X25hbWUsIHBsYXRmb3JtLCBaaXBGaWxlU2V0KHppcF91cmwpLAorICAgICAgICAgICAgICAgIGlu
Y2x1ZGVfZXhwZWN0ZWQ9RmFsc2UpCisKICAgICBkZWYgZGVmYXVsdF9yZXN1bHRzX2RpcmVjdG9y
eShzZWxmKToKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgcmV0dXJuIHNlbGYucGF0aF9mcm9t
X2Nocm9taXVtX2Jhc2UoJ3dlYmtpdCcsCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0LnB5CmluZGV4IGNlZmEzMzY5MGZjN2NjZWZiOTNjMzlk
NGM3MjRkMDc1MGU3MzJhOTkuLmVlYjc1Yzk1MzIyMDYwODVlZWQ5NjFiZjU2NjM2MzFiNWEyM2Q3
NTQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQv
d2Via2l0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQv
d2Via2l0LnB5CkBAIC00MSw5ICs0MSw5IEBAIGltcG9ydCBzeXMKIGltcG9ydCB0aW1lCiBpbXBv
cnQgd2ViYnJvd3NlcgogCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5uZXQuYnVpbGRib3QgaW1wb3J0
IEJ1aWxkQm90CiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0gaW1wb3J0IG9zcGF0aAotZnJv
bSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydCBpbXBvcnQgYmFzZQotZnJvbSB3ZWJraXRweS5s
YXlvdXRfdGVzdHMucG9ydCBpbXBvcnQgc2VydmVyX3Byb2Nlc3MKK2Zyb20gd2Via2l0cHkubGF5
b3V0X3Rlc3RzLnBvcnQgaW1wb3J0IGJhc2UsIGJ1aWxkZXJzLCBzZXJ2ZXJfcHJvY2VzcwogCiBf
bG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoIndlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0LndlYmtp
dCIpCiAKQEAgLTcwLDYgKzcwLDE2IEBAIGNsYXNzIFdlYktpdFBvcnQoYmFzZS5Qb3J0KToKICAg
ICAgICAgcmV0dXJuIHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihzZWxmLl93ZWJraXRfYmFzZWxpbmVf
cGF0aChzZWxmLl9uYW1lKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn
dGVzdF9leHBlY3RhdGlvbnMudHh0JykKIAorICAgIGRlZiBfcmVzdWx0c19mb3JfcGxhdGZvcm0o
c2VsZiwgcGxhdGZvcm0pOgorICAgICAgICBidWlsZGVyX25hbWUgPSBidWlsZGVycy5idWlsZGVy
X25hbWVfZm9yX3BsYXRmb3JtKHBsYXRmb3JtKQorICAgICAgICBpZiBub3QgYnVpbGRlcl9uYW1l
OgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJDYW4ndCBmaW5kIGJ1aWxkZXIgZm9yICVz
IiAlIHBsYXRmb3JtKQorICAgICAgICBidWlsZGVyc19ieV9uYW1lID0gZGljdChbKGJ1aWxkZXIu
bmFtZSgpLCBidWlsZGVyKSBmb3IgYnVpbGRlciBpbiBCdWlsZEJvdCgpLmJ1aWxkZXJzKCldKQor
ICAgICAgICBidWlsZGVyID0gYnVpbGRlcnNfYnlfbmFtZVtidWlsZGVyX25hbWVdCisgICAgICAg
IHJlc3VsdF9zZXQgPSBidWlsZGVyLmxhdGVzdF9jYWNoZWRfYnVpbGQoKS5yZXN1bHRzKCkKKyAg
ICAgICAgcmVzdWx0X3NldC5zZXRfcGxhdGZvcm0ocGxhdGZvcm0pCisgICAgICAgIHJldHVybiBy
ZXN1bHRfc2V0CisKICAgICBkZWYgX2J1aWxkX2RyaXZlcihzZWxmKToKICAgICAgICAgY29uZmln
dXJhdGlvbiA9IHNlbGYuZ2V0X29wdGlvbignY29uZmlndXJhdGlvbicpCiAgICAgICAgIHJldHVy
biBzZWxmLl9jb25maWcuYnVpbGRfZHVtcHJlbmRlcnRyZWUoY29uZmlndXJhdGlvbikK
</data>
<flag name="review"
          id="85217"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>