<?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>104891</bug_id>
          
          <creation_ts>2012-12-13 01:22:03 -0800</creation_ts>
          <short_desc>Add --profiler=PROFILER option to run-perf-tests to allow specifying which profiler to use on platforms with many</short_desc>
          <delta_ts>2012-12-13 22:42:31 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>104975</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Eric Seidel (no email)">eric</assigned_to>
          <cc>abarth</cc>
    
    <cc>dpranke</cc>
    
    <cc>pdr</cc>
    
    <cc>peter</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>790401</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-12-13 01:22:03 -0800</bug_when>
    <thetext>Add --profiler=PROFILER option to run-perf-tests to allow specifying which profiler to use on platforms with many</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790402</commentid>
    <comment_count>1</comment_count>
      <attachid>179228</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-12-13 01:26:38 -0800</bug_when>
    <thetext>Created attachment 179228
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790411</commentid>
    <comment_count>2</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-12-13 01:34:24 -0800</bug_when>
    <thetext>As I noted in the ChangeLog, this support is all for linux, I just used /usr/bin/sample as an excuse to be able to code this up from my Mac. :)

We could definitely do nicer error handling, we definitely have the plumbing to do that now.  Right now I think it will just ignore --profile if it&apos;s specified on Windows, since it will try to create the Profiler and get back None.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790412</commentid>
    <comment_count>3</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-12-13 01:39:01 -0800</bug_when>
    <thetext>Presumably we could also come up with a nice way to dump the available profiler names from the help.  Right now the arguments are parsed before the &quot;platform&quot; object is created, so it would take a bit of fiddling to be able to print the available profilers in the current version of our arguments help.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790750</commentid>
    <comment_count>4</comment_count>
      <attachid>179228</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-12-13 10:44:12 -0800</bug_when>
    <thetext>Comment on attachment 179228
Patch

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

&gt; Tools/Scripts/webkitpy/common/system/executive.py:458
&gt; +        return subprocess.Popen(string_args, **kwargs)

I&apos;m not sure that this is a great change ... it might be better to match the underlying syntax and make the callers map to strings instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790764</commentid>
    <comment_count>5</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-12-13 11:04:16 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 179228 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=179228&amp;action=review
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/common/system/executive.py:458
&gt; &gt; +        return subprocess.Popen(string_args, **kwargs)
&gt; 
&gt; I&apos;m not sure that this is a great change ... it might be better to match the underlying syntax and make the callers map to strings instead.

We can certainly go back to that.  It seemed that repeating the same line in 4 places was kinda silly.  And then once I did this that there is a second line for windows compat which was missing in 2 of the 4 places. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790765</commentid>
    <comment_count>6</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-12-13 11:05:23 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #4)
&gt; &gt; (From update of attachment 179228 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=179228&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Tools/Scripts/webkitpy/common/system/executive.py:458
&gt; &gt; &gt; +        return subprocess.Popen(string_args, **kwargs)
&gt; &gt; 
&gt; &gt; I&apos;m not sure that this is a great change ... it might be better to match the underlying syntax and make the callers map to strings instead.
&gt; 
&gt; We can certainly go back to that.  It seemed that repeating the same line in 4 places was kinda silly.  And then once I did this that there is a second line for windows compat which was missing in 2 of the 4 places. :)

Yup. It&apos;s up to you ...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790969</commentid>
    <comment_count>7</comment_count>
      <attachid>179228</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-12-13 14:51:12 -0800</bug_when>
    <thetext>Comment on attachment 179228
Patch

I&apos;m going to leave it like this until we get into trouble.  Thanks. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790990</commentid>
    <comment_count>8</comment_count>
      <attachid>179228</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-13 15:18:18 -0800</bug_when>
    <thetext>Comment on attachment 179228
Patch

Clearing flags on attachment: 179228

Committed r137661: &lt;http://trac.webkit.org/changeset/137661&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790991</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-13 15:18:22 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>791036</commentid>
    <comment_count>10</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-12-13 15:50:02 -0800</bug_when>
    <thetext>Reverted r137661 for reason:

broke unit tests, run-webkit-tests

Committed r137673: &lt;http://trac.webkit.org/changeset/137673&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>791038</commentid>
    <comment_count>11</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-12-13 15:51:42 -0800</bug_when>
    <thetext>See, e.g.: http://build.chromium.org/p/chromium.webkit/builders/WebKit%20Mac10.6/builds/3394/steps/webkit_tests/logs/stdio
http://build.webkit.org/builders/Apple%20MountainLion%20Release%20WK2%20%28Tests%29/builds/4050/steps/webkitpy-test/logs/stdio

the change to map args to popen to strings apparently missed some cases and/or had unexpected side effects. I haven&apos;t fully triaged it yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>791063</commentid>
    <comment_count>12</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-12-13 16:10:06 -0800</bug_when>
    <thetext>This is really just another symptom of us not running test-webkitpy on the EWS bots anymore, and me forgetting that that&apos;s teh case. :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>791064</commentid>
    <comment_count>13</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-12-13 16:10:30 -0800</bug_when>
    <thetext>Apologies to all for the breakage.  Will upload a fixed patch shortly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>791073</commentid>
    <comment_count>14</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-12-13 16:21:02 -0800</bug_when>
    <thetext>Turns out test-webkitpy was OK, but I&apos;ve now added a test to catch this:

[548/1609] webkitpy.common.system.executive_unittest.ExecutiveTest.test_run_command_args_type erred:                 
  Traceback (most recent call last):
    File &quot;/src/WebKit/Tools/Scripts/webkitpy/common/system/executive_unittest.py&quot;, line 115, in test_run_command_args_type
      executive.run_command(command_line(&apos;echo&apos;, 1))
    File &quot;/src/WebKit/Tools/Scripts/webkitpy/common/system/executive.py&quot;, line 412, in run_command
      _log.debug(&apos;&quot;%s&quot; took %.2fs&apos; % (self._command_for_printing(args), time.time() - start_time))
    File &quot;/src/WebKit/Tools/Scripts/webkitpy/common/system/executive.py&quot;, line 375, in _command_for_printing
      return &quot; &quot;.join(escaped_args)
  TypeError: sequence item 3: expected string, int found
  
Ran 1609 tests in 3.005s</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>791079</commentid>
    <comment_count>15</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-12-13 16:22:45 -0800</bug_when>
    <thetext>I&apos;m going to break the Executive changes out into a separate patch and get that in cleanly first. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>791229</commentid>
    <comment_count>16</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-12-13 18:54:39 -0800</bug_when>
    <thetext>Will update this shortly with a patch which can re-land.  Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>791292</commentid>
    <comment_count>17</comment_count>
      <attachid>179408</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-12-13 20:50:21 -0800</bug_when>
    <thetext>Created attachment 179408
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>791301</commentid>
    <comment_count>18</comment_count>
      <attachid>179410</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-12-13 21:05:54 -0800</bug_when>
    <thetext>Created attachment 179410
Updated to include perf on linux</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>791309</commentid>
    <comment_count>19</comment_count>
      <attachid>179410</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-12-13 21:20:00 -0800</bug_when>
    <thetext>Comment on attachment 179410
Updated to include perf on linux

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

&gt; Tools/Scripts/webkitpy/common/system/profiler.py:59
&gt; +        if platform.is_mac():
&gt; +            return &apos;iprofiler&apos;
&gt; +        if platform.is_linux():
&gt; +            return &apos;perf&apos;

Can this be a dictionary instead?
It also seem weak that we have to have two platform-to-profiler maps in available_profilers_by_name and default_profiler_name.
Can we have two dictionaries like:
platform_to_profilers = {
    &apos;linux&apos;; [Perf, GooglePProg],
    &apos;mac&apos;: [IProfiler, Sample, GooglePProf]
}
and then add name() to Profiler subclasses instead?

&gt; Tools/Scripts/webkitpy/common/system/profiler.py:163
&gt; +class Sample(SingleFileOutputProfiler):

Should we add a test for this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>791311</commentid>
    <comment_count>20</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-12-13 21:22:24 -0800</bug_when>
    <thetext>(In reply to comment #19)
&gt; platform_to_profilers = {
&gt;     &apos;linux&apos;; [Perf, GooglePProg],
&gt;     &apos;mac&apos;: [IProfiler, Sample, GooglePProf]
&gt; }

Of course, the point of it being array is so that the first item can be considered as the default for the platform.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>791312</commentid>
    <comment_count>21</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-12-13 21:26:30 -0800</bug_when>
    <thetext>(In reply to comment #19)
&gt; (From update of attachment 179410 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=179410&amp;action=review
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/common/system/profiler.py:59
&gt; &gt; +        if platform.is_mac():
&gt; &gt; +            return &apos;iprofiler&apos;
&gt; &gt; +        if platform.is_linux():
&gt; &gt; +            return &apos;perf&apos;
&gt; 
&gt; Can this be a dictionary instead?
&gt; It also seem weak that we have to have two platform-to-profiler maps in available_profilers_by_name and default_profiler_name.
&gt; Can we have two dictionaries like:
&gt; platform_to_profilers = {
&gt;     &apos;linux&apos;; [Perf, GooglePProg],
&gt;     &apos;mac&apos;: [IProfiler, Sample, GooglePProf]
&gt; }
&gt; and then add name() to Profiler subclasses instead?

I&apos;m not sure I follow.  We could certainly move the &quot;name&quot; information onto the Profiler class itself.  I&apos;m not sure it belongs there though, since it seems specific to the command-line argument --profiler.  ProfilerFactory is kinda the bridge between the CLI and the actual Profiler classes IMO.

&gt; &gt; Tools/Scripts/webkitpy/common/system/profiler.py:163
&gt; &gt; +class Sample(SingleFileOutputProfiler):
&gt; 
&gt; Should we add a test for this?

Happy to.  Do you have specific parts you&apos;d like tested?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>791313</commentid>
    <comment_count>22</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-12-13 21:28:04 -0800</bug_when>
    <thetext>(In reply to comment #20)
&gt; (In reply to comment #19)
&gt; &gt; platform_to_profilers = {
&gt; &gt;     &apos;linux&apos;; [Perf, GooglePProg],
&gt; &gt;     &apos;mac&apos;: [IProfiler, Sample, GooglePProf]
&gt; &gt; }
&gt; 
&gt; Of course, the point of it being array is so that the first item can be considered as the default for the platform.

Definitely possible.  You&apos;ll end up re-listing the common profilers (like GooglePProf, and presumably eventually valgrind, etc.) in each one, but that&apos;s OK.

If you can flesh out your sample code more, I&apos;m happy to move the design closer to your suggestions.  I just don&apos;t fully understand where you&apos;re going yet. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>791314</commentid>
    <comment_count>23</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-12-13 21:30:28 -0800</bug_when>
    <thetext>I think I understand.  Coding up a version of rniwa&apos;s suggestion now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>791315</commentid>
    <comment_count>24</comment_count>
      <attachid>179410</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-12-13 21:33:30 -0800</bug_when>
    <thetext>Comment on attachment 179410
Updated to include perf on linux

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

&gt;&gt;&gt; Tools/Scripts/webkitpy/common/system/profiler.py:59
&gt;&gt;&gt; +            return &apos;perf&apos;
&gt;&gt; 
&gt;&gt; Can this be a dictionary instead?
&gt;&gt; It also seem weak that we have to have two platform-to-profiler maps in available_profilers_by_name and default_profiler_name.
&gt;&gt; Can we have two dictionaries like:
&gt;&gt; platform_to_profilers = {
&gt;&gt;     &apos;linux&apos;; [Perf, GooglePProg],
&gt;&gt;     &apos;mac&apos;: [IProfiler, Sample, GooglePProf]
&gt;&gt; }
&gt;&gt; and then add name() to Profiler subclasses instead?
&gt; 
&gt; I&apos;m not sure I follow.  We could certainly move the &quot;name&quot; information onto the Profiler class itself.  I&apos;m not sure it belongs there though, since it seems specific to the command-line argument --profiler.  ProfilerFactory is kinda the bridge between the CLI and the actual Profiler classes IMO.

So these two static methods can be re-wrriten as:
def default_profile_name(cls, platform):
    return platform_to_profilers.get(platform.os_name, [None])[0];

def available_profilers_by_name(cls, platform):
    profilers = {}
    for profiler in platform_to_profilers.get(platform.os_name, [GooglePProf]):
        profilers[profilers.name] = profiler
    return profilers

I think it’s much cleaner.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>791316</commentid>
    <comment_count>25</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-12-13 21:35:48 -0800</bug_when>
    <thetext>Hm… on my second thought, shouldn’t default_profiler_name default to gprof given that it’s available everywhere? If not, then adding it always in available_profilers_by_name doesn’t seem right.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>791325</commentid>
    <comment_count>26</comment_count>
      <attachid>179417</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-12-13 21:57:16 -0800</bug_when>
    <thetext>Created attachment 179417
Updated per rniwa&apos;s suggestions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>791343</commentid>
    <comment_count>27</comment_count>
      <attachid>179417</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-13 22:42:26 -0800</bug_when>
    <thetext>Comment on attachment 179417
Updated per rniwa&apos;s suggestions

Clearing flags on attachment: 179417

Committed r137714: &lt;http://trac.webkit.org/changeset/137714&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>791344</commentid>
    <comment_count>28</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-13 22:42:31 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179228</attachid>
            <date>2012-12-13 01:26:38 -0800</date>
            <delta_ts>2012-12-13 20:50:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-104891-20121213012400.patch</filename>
            <type>text/plain</type>
            <size>8424</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3NTY0CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYjI3ZDg2OWFmMGM0NzRkNWRjNjE4MTQzNmFjNTg5MjJh
NDNiY2ZjNi4uOGIwMTQ5NmI2YWU2NDkwOTM1ZWNiNzVhYmE0YzEzZTY0NmIwYzZiYyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3
IEBACisyMDEyLTEyLTEzICBFcmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KKworICAgICAg
ICBBZGQgLS1wcm9maWxlcj1QUk9GSUxFUiBvcHRpb24gdG8gcnVuLXBlcmYtdGVzdHMgdG8gYWxs
b3cgc3BlY2lmeWluZyB3aGljaCBwcm9maWxlciB0byB1c2Ugb24gcGxhdGZvcm1zIHdpdGggbWFu
eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA0ODkx
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSSBhbHNv
IGltcGxlbWVudGVkIGEgdmVyeSBzaW1wbGUgIlNhbXBsZSIgUHJvZmlsZXIgdXNpbmcKKyAgICAg
ICAgTWFjIE9TIFgncyAvdXNyL2Jpbi9zYW1wbGUgY29tbWFuZCBsaW5lIHRvb2wuCisKKyAgICAg
ICAgSSBhbHNvIG1vdmVkIHRoZSBtYXAodW5pY29kZSwgYXJncykgY2FsbCBpbnRvIEV4ZWN1dGl2
ZS5wb3BlbgorICAgICAgICBzbyB0aGF0IGFsbCBjYWxsZXJzIGRvbid0IGhhdmUgdG8gZG8gaXQg
dGhlbXNlbHZlcy4KKworICAgICAgICBUaGUgcmVhbCByZWFzb24gZm9yIHRoaXMgYWJzdHJhY3Rp
b24gaXMgdG8gbWFrZSBpdCBlYXN5CisgICAgICAgIHRvIHN1cHBvcnQgYm90aCBwZXJmIGFuZCBw
cHJvZiBvbiBsaW51eCB3aGljaCBzZWVtIHRvCisgICAgICAgIGJlIGFib3V0IGVxdWFsbHkgcG9w
dWxhciBhbW9uZyB0aG9zZSBJIGFzayBpbiB0aGUgQ2hyb21lIHRlYW0uCisKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZXhlY3V0aXZlLnB5OgorICAgICAgICAoRXhl
Y3V0aXZlLnBvcGVuKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0v
cHJvZmlsZXIucHk6CisgICAgICAgIChQcm9maWxlckZhY3RvcnkuY3JlYXRlX3Byb2ZpbGVyKToK
KyAgICAgICAgKFByb2ZpbGVyRmFjdG9yeSk6CisgICAgICAgIChQcm9maWxlckZhY3RvcnkuYXZh
aWxhYmxlX3Byb2ZpbGVyc19ieV9uYW1lKToKKyAgICAgICAgKFByb2ZpbGVyRmFjdG9yeS5kZWZh
dWx0X3Byb2ZpbGVyX25hbWUpOgorICAgICAgICAoU2FtcGxlKToKKyAgICAgICAgKFNhbXBsZS5f
X2luaXRfXyk6CisgICAgICAgIChTYW1wbGUuYXR0YWNoX3RvX3BpZCk6CisgICAgICAgIChTYW1w
bGUucHJvZmlsZV9hZnRlcl9leGl0KToKKyAgICAgICAgKElQcm9maWxlci5hdHRhY2hfdG9fcGlk
KToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2RyaXZlci5w
eToKKyAgICAgICAgKERyaXZlci5fX2luaXRfXyk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRw
eS9wZXJmb3JtYW5jZV90ZXN0cy9wZXJmdGVzdHNydW5uZXIucHk6CisgICAgICAgIChQZXJmVGVz
dHNSdW5uZXIuX3BhcnNlX2FyZ3MpOgorCiAyMDEyLTEyLTEyICBSb2dlciBGb25nICA8cm9nZXJf
Zm9uZ0BhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gRml4IHR5cG8gaW4gTlJXVC4K
ZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9leGVjdXRp
dmUucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZXhlY3V0aXZlLnB5
CmluZGV4IDQyYTgxMjJkMzZlMGVlNDgwNDY0MThhOWFjZGExMTkyNDgwNTMwMTcuLjdiYzFkNDA5
NzdhOTVkMjcwYWM1Zjg1ODc3MTNiYzVjODllYzZmMGIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9leGVjdXRpdmUucHkKKysrIGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2V4ZWN1dGl2ZS5weQpAQCAtMTAxLDkgKzEwMSw2IEBA
IGNsYXNzIEV4ZWN1dGl2ZShvYmplY3QpOgogICAgICAgICByZXR1cm4gc3lzLnBsYXRmb3JtIG5v
dCBpbiAoJ3dpbjMyJywgJ2N5Z3dpbicpCiAKICAgICBkZWYgX3J1bl9jb21tYW5kX3dpdGhfdGVl
ZF9vdXRwdXQoc2VsZiwgYXJncywgdGVlZF9vdXRwdXQsICoqa3dhcmdzKToKLSAgICAgICAgYXJn
cyA9IG1hcCh1bmljb2RlLCBhcmdzKSAgIyBQb3BlbiB3aWxsIHRocm93IGFuIGV4Y2VwdGlvbiBp
ZiBhcmdzIGFyZSBub24tc3RyaW5ncyAobGlrZSBpbnQoKSkKLSAgICAgICAgYXJncyA9IG1hcChz
ZWxmLl9lbmNvZGVfYXJndW1lbnRfaWZfbmVlZGVkLCBhcmdzKQotCiAgICAgICAgIGNoaWxkX3By
b2Nlc3MgPSBzZWxmLnBvcGVuKGFyZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0ZG91dD1zZWxmLlBJUEUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHN0ZGVycj1zZWxmLlNURE9VVCwKQEAgLTM5MCw4ICszODcsNiBAQCBjbGFzcyBFeGVjdXRpdmUo
b2JqZWN0KToKICAgICAgICAgIiIiUG9wZW4gd3JhcHBlciBmb3IgY29udmVuaWVuY2UgYW5kIHRv
IHdvcmsgYXJvdW5kIHB5dGhvbiBidWdzLiIiIgogICAgICAgICBhc3NlcnQoaXNpbnN0YW5jZShh
cmdzLCBsaXN0KSBvciBpc2luc3RhbmNlKGFyZ3MsIHR1cGxlKSkKICAgICAgICAgc3RhcnRfdGlt
ZSA9IHRpbWUudGltZSgpCi0gICAgICAgIGFyZ3MgPSBtYXAodW5pY29kZSwgYXJncykgICMgUG9w
ZW4gd2lsbCB0aHJvdyBhbiBleGNlcHRpb24gaWYgYXJncyBhcmUgbm9uLXN0cmluZ3MgKGxpa2Ug
aW50KCkpCi0gICAgICAgIGFyZ3MgPSBtYXAoc2VsZi5fZW5jb2RlX2FyZ3VtZW50X2lmX25lZWRl
ZCwgYXJncykKIAogICAgICAgICBzdGRpbiwgc3RyaW5nX3RvX2NvbW11bmljYXRlID0gc2VsZi5f
Y29tcHV0ZV9zdGRpbihpbnB1dCkKICAgICAgICAgc3RkZXJyID0gc2VsZi5TVERPVVQgaWYgcmV0
dXJuX3N0ZGVyciBlbHNlIE5vbmUKQEAgLTQ1OCw3ICs0NTMsOSBAQCBjbGFzcyBFeGVjdXRpdmUo
b2JqZWN0KToKICAgICAgICAgcmV0dXJuIGFyZ3VtZW50LmVuY29kZShzZWxmLl9jaGlsZF9wcm9j
ZXNzX2VuY29kaW5nKCkpCiAKICAgICBkZWYgcG9wZW4oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToK
LSAgICAgICAgcmV0dXJuIHN1YnByb2Nlc3MuUG9wZW4oKmFyZ3MsICoqa3dhcmdzKQorICAgICAg
ICBzdHJpbmdfYXJncyA9IG1hcCh1bmljb2RlLCAqYXJncykgICMgUG9wZW4gd2lsbCB0aHJvdyBh
biBleGNlcHRpb24gaWYgYXJncyBhcmUgbm9uLXN0cmluZ3MgKGxpa2UgaW50KCkpCisgICAgICAg
IHN0cmluZ19hcmdzID0gbWFwKHNlbGYuX2VuY29kZV9hcmd1bWVudF9pZl9uZWVkZWQsIHN0cmlu
Z19hcmdzKQorICAgICAgICByZXR1cm4gc3VicHJvY2Vzcy5Qb3BlbihzdHJpbmdfYXJncywgKipr
d2FyZ3MpCiAKICAgICBkZWYgcnVuX2luX3BhcmFsbGVsKHNlbGYsIGNvbW1hbmRfbGluZXNfYW5k
X2N3ZHMsIHByb2Nlc3Nlcz1Ob25lKToKICAgICAgICAgIiIiUnVucyBhIGxpc3Qgb2YgKGNtZF9s
aW5lIGxpc3QsIGN3ZCBzdHJpbmcpIHR1cGxlcyBpbiBwYXJhbGxlbCBhbmQgcmV0dXJucyBhIGxp
c3Qgb2YgKHJldGNvZGUsIHN0ZG91dCwgc3RkZXJyKSB0dXBsZXMuIiIiCmRpZmYgLS1naXQgYS9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vcHJvZmlsZXIucHkgYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vcHJvZmlsZXIucHkKaW5kZXggMTMwNDU5MjA3
ZDNkMDFjYzcxZGRkNzkxMmNiYWNhN2VlNzA1ZGNlOC4uMjBmN2MwZWY3ZjEzNzU4N2EzZDU0MDA1
M2ZlYmUyYmViOTlmYWVkMCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21t
b24vc3lzdGVtL3Byb2ZpbGVyLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9u
L3N5c3RlbS9wcm9maWxlci5weQpAQCAtMzQsMTAgKzM0LDI4IEBAIF9sb2cgPSBsb2dnaW5nLmdl
dExvZ2dlcihfX25hbWVfXykKIAogY2xhc3MgUHJvZmlsZXJGYWN0b3J5KG9iamVjdCk6CiAgICAg
QGNsYXNzbWV0aG9kCi0gICAgZGVmIGNyZWF0ZV9wcm9maWxlcihjbHMsIGhvc3QsIGV4ZWN1dGFi
bGVfcGF0aCwgb3V0cHV0X2RpciwgaWRlbnRpZmllcj1Ob25lKToKLSAgICAgICAgaWYgaG9zdC5w
bGF0Zm9ybS5pc19tYWMoKToKLSAgICAgICAgICAgIHJldHVybiBJUHJvZmlsZXIoaG9zdCwgZXhl
Y3V0YWJsZV9wYXRoLCBvdXRwdXRfZGlyLCBpZGVudGlmaWVyKQotICAgICAgICByZXR1cm4gR29v
Z2xlUFByb2YoaG9zdCwgZXhlY3V0YWJsZV9wYXRoLCBvdXRwdXRfZGlyLCBpZGVudGlmaWVyKQor
ICAgIGRlZiBjcmVhdGVfcHJvZmlsZXIoY2xzLCBob3N0LCBleGVjdXRhYmxlX3BhdGgsIG91dHB1
dF9kaXIsIHByb2ZpbGVyX25hbWU9Tm9uZSwgaWRlbnRpZmllcj1Ob25lKToKKyAgICAgICAgcHJv
ZmlsZXJzX2J5X25hbWUgPSBjbHMuYXZhaWxhYmxlX3Byb2ZpbGVyc19ieV9uYW1lKGhvc3QucGxh
dGZvcm0pCisgICAgICAgIHByb2ZpbGVyX2NsYXNzID0gcHJvZmlsZXJzX2J5X25hbWUuZ2V0KHBy
b2ZpbGVyX25hbWUgb3IgY2xzLmRlZmF1bHRfcHJvZmlsZXJfbmFtZShob3N0LnBsYXRmb3JtKSkK
KyAgICAgICAgaWYgbm90IHByb2ZpbGVyX2NsYXNzOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUK
KyAgICAgICAgcmV0dXJuIHByb2ZpbGVyX2NsYXNzKGhvc3QsIGV4ZWN1dGFibGVfcGF0aCwgb3V0
cHV0X2RpciwgaWRlbnRpZmllcikKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBhdmFpbGFi
bGVfcHJvZmlsZXJzX2J5X25hbWUoY2xzLCBwbGF0Zm9ybSk6CisgICAgICAgIHByb2ZpbGVycyA9
IHsncHByb2YnOiBHb29nbGVQUHJvZn0KKyAgICAgICAgaWYgcGxhdGZvcm0uaXNfbWFjKCk6Cisg
ICAgICAgICAgICBwcm9maWxlcnNbJ2lwcm9maWxlciddID0gSVByb2ZpbGVyCisgICAgICAgICAg
ICBwcm9maWxlcnNbJ3NhbXBsZSddID0gU2FtcGxlCisgICAgICAgIHJldHVybiBwcm9maWxlcnMK
KworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBkZWZhdWx0X3Byb2ZpbGVyX25hbWUoY2xzLCBw
bGF0Zm9ybSk6CisgICAgICAgIGlmIHBsYXRmb3JtLmlzX21hYygpOgorICAgICAgICAgICAgcmV0
dXJuICdpcHJvZmlsZXInCisgICAgICAgIGlmIHBsYXRmb3JtLmlzX2xpbnV4KCk6CisgICAgICAg
ICAgICByZXR1cm4gJ3Bwcm9mJworICAgICAgICByZXR1cm4gTm9uZQogCiAKIGNsYXNzIFByb2Zp
bGVyKG9iamVjdCk6CkBAIC05MSw2ICsxMDksMjAgQEAgY2xhc3MgR29vZ2xlUFByb2YoU2luZ2xl
RmlsZU91dHB1dFByb2ZpbGVyKToKICAgICAgICAgcHJpbnQgc2VsZi5fZmlyc3RfdGVuX2xpbmVz
X29mX3Byb2ZpbGUocHJvZmlsZV90ZXh0KQogCiAKK2NsYXNzIFNhbXBsZShTaW5nbGVGaWxlT3V0
cHV0UHJvZmlsZXIpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBob3N0LCBleGVjdXRhYmxlX3Bh
dGgsIG91dHB1dF9kaXIsIGlkZW50aWZpZXI9Tm9uZSk6CisgICAgICAgIHN1cGVyKFNhbXBsZSwg
c2VsZikuX19pbml0X18oaG9zdCwgZXhlY3V0YWJsZV9wYXRoLCBvdXRwdXRfZGlyLCAidHh0Iiwg
aWRlbnRpZmllcikKKyAgICAgICAgc2VsZi5fcHJvZmlsZXJfcHJvY2VzcyA9IE5vbmUKKworICAg
IGRlZiBhdHRhY2hfdG9fcGlkKHNlbGYsIHBpZCk6CisgICAgICAgIGZzID0gc2VsZi5faG9zdC5m
aWxlc3lzdGVtCisgICAgICAgIGNtZCA9IFsic2FtcGxlIiwgcGlkLCAiLW1heURpZSIsICItZmls
ZSIsIHNlbGYuX291dHB1dF9wYXRoXQorICAgICAgICBzZWxmLl9wcm9maWxlcl9wcm9jZXNzID0g
c2VsZi5faG9zdC5leGVjdXRpdmUucG9wZW4oY21kKQorCisgICAgZGVmIHByb2ZpbGVfYWZ0ZXJf
ZXhpdChzZWxmKToKKyAgICAgICAgc2VsZi5fcHJvZmlsZXJfcHJvY2Vzcy53YWl0KCkKKworCiBj
bGFzcyBJUHJvZmlsZXIoU2luZ2xlRmlsZU91dHB1dFByb2ZpbGVyKToKICAgICBkZWYgX19pbml0
X18oc2VsZiwgaG9zdCwgZXhlY3V0YWJsZV9wYXRoLCBvdXRwdXRfZGlyLCBpZGVudGlmaWVyPU5v
bmUpOgogICAgICAgICBzdXBlcihJUHJvZmlsZXIsIHNlbGYpLl9faW5pdF9fKGhvc3QsIGV4ZWN1
dGFibGVfcGF0aCwgb3V0cHV0X2RpciwgImR0cHMiLCBpZGVudGlmaWVyKQpAQCAtMTAyLDcgKzEz
NCw2IEBAIGNsYXNzIElQcm9maWxlcihTaW5nbGVGaWxlT3V0cHV0UHJvZmlsZXIpOgogICAgICAg
ICBmcyA9IHNlbGYuX2hvc3QuZmlsZXN5c3RlbQogICAgICAgICBjbWQgPSBbImlwcm9maWxlciIs
ICItdGltZXByb2ZpbGVyIiwgIi1hIiwgcGlkLAogICAgICAgICAgICAgICAgICItZCIsIGZzLmRp
cm5hbWUoc2VsZi5fb3V0cHV0X3BhdGgpLCAiLW8iLCBmcy5zcGxpdGV4dChmcy5iYXNlbmFtZShz
ZWxmLl9vdXRwdXRfcGF0aCkpWzBdXQotICAgICAgICBjbWQgPSBtYXAodW5pY29kZSwgY21kKQog
ICAgICAgICAjIEZJWE1FOiBDb25zaWRlciBjYXB0dXJpbmcgaW5zdGVhZCBvZiBsZXR0aW5nIGlu
c3RydW1lbnRzIHNwYW0gdG8gc3RkZXJyIGRpcmVjdGx5LgogICAgICAgICBzZWxmLl9wcm9maWxl
cl9wcm9jZXNzID0gc2VsZi5faG9zdC5leGVjdXRpdmUucG9wZW4oY21kKQogCmRpZmYgLS1naXQg
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2RyaXZlci5weSBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZHJpdmVyLnB5CmluZGV4IDJi
YWY1OWU5NDViM2MxMzBkNmI0NjgyNDQ0YjdhZDg1YTYzZWFkYTIuLjc2ODRhOWQ4NGY0Zjg5ZWI0
NzBiZDAxNDE5ZDQ1OTIwOTI2MGRiM2QgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZHJpdmVyLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZHJpdmVyLnB5CkBAIC0xNDMsNyArMTQzLDkgQEAgY2xhc3Mg
RHJpdmVyKG9iamVjdCk6CiAKICAgICAgICAgc2VsZi5fbWVhc3VyZW1lbnRzID0ge30KICAgICAg
ICAgaWYgc2VsZi5fcG9ydC5nZXRfb3B0aW9uKCJwcm9maWxlIik6Ci0gICAgICAgICAgICBzZWxm
Ll9wcm9maWxlciA9IFByb2ZpbGVyRmFjdG9yeS5jcmVhdGVfcHJvZmlsZXIoc2VsZi5fcG9ydC5o
b3N0LCBzZWxmLl9wb3J0Ll9wYXRoX3RvX2RyaXZlcigpLCBzZWxmLl9wb3J0LnJlc3VsdHNfZGly
ZWN0b3J5KCkpCisgICAgICAgICAgICBwcm9maWxlcl9uYW1lID0gc2VsZi5fcG9ydC5nZXRfb3B0
aW9uKCJwcm9maWxlciIpCisgICAgICAgICAgICBzZWxmLl9wcm9maWxlciA9IFByb2ZpbGVyRmFj
dG9yeS5jcmVhdGVfcHJvZmlsZXIoc2VsZi5fcG9ydC5ob3N0LAorICAgICAgICAgICAgICAgIHNl
bGYuX3BvcnQuX3BhdGhfdG9fZHJpdmVyKCksIHNlbGYuX3BvcnQucmVzdWx0c19kaXJlY3Rvcnko
KSwgcHJvZmlsZXJfbmFtZSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYuX3Byb2Zp
bGVyID0gTm9uZQogCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BlcmZvcm1h
bmNlX3Rlc3RzL3BlcmZ0ZXN0c3J1bm5lci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcGVy
Zm9ybWFuY2VfdGVzdHMvcGVyZnRlc3RzcnVubmVyLnB5CmluZGV4IDJhMjFhZTM1ODAyYWNhMzUz
NjQ4ZWExZTU1Zjg4OGJjMDVkOGVhODUuLjZlNWNiYjUwYjVjZTI0ZjNiNTU1ZDgyYzM0Y2M1MDg5
MDI3ZGQwZTAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcGVyZm9ybWFuY2Vf
dGVzdHMvcGVyZnRlc3RzcnVubmVyLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcGVy
Zm9ybWFuY2VfdGVzdHMvcGVyZnRlc3RzcnVubmVyLnB5CkBAIC0xMjIsNiArMTIyLDggQEAgY2xh
c3MgUGVyZlRlc3RzUnVubmVyKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgaGVscD0iUnVuIGFs
bCB0ZXN0cywgaW5jbHVkaW5nIHRoZSBvbmVzIGluIHRoZSBTa2lwcGVkIGxpc3QuIiksCiAgICAg
ICAgICAgICBvcHRwYXJzZS5tYWtlX29wdGlvbigiLS1wcm9maWxlIiwgYWN0aW9uPSJzdG9yZV90
cnVlIiwKICAgICAgICAgICAgICAgICBoZWxwPSJPdXRwdXQgcGVyLXRlc3QgcHJvZmlsZSBpbmZv
cm1hdGlvbi4iKSwKKyAgICAgICAgICAgIG9wdHBhcnNlLm1ha2Vfb3B0aW9uKCItLXByb2ZpbGVy
IiwgYWN0aW9uPSJzdG9yZSIsCisgICAgICAgICAgICAgICAgaGVscD0iT3V0cHV0IHBlci10ZXN0
IHByb2ZpbGUgaW5mb3JtYXRpb24sIHVzaW5nIHRoZSBzcGVjaWZpZWQgcHJvZmlsZXIuIiksCiAg
ICAgICAgICAgICBdCiAgICAgICAgIHJldHVybiBvcHRwYXJzZS5PcHRpb25QYXJzZXIob3B0aW9u
X2xpc3Q9KHBlcmZfb3B0aW9uX2xpc3QpKS5wYXJzZV9hcmdzKGFyZ3MpCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179408</attachid>
            <date>2012-12-13 20:50:21 -0800</date>
            <delta_ts>2012-12-13 21:05:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-104891-20121213204745.patch</filename>
            <type>text/plain</type>
            <size>6277</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3NzA1CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNjBjMTEzOTJiYzlmZGQwZmNmNDU1MWQ1NDhkMDNlY2Yy
NTIyM2E5Yy4uZmU1MTU0ZmRmN2Y0MGRiMGI0NTQ0OWE0ZDZjMjQyNjcyNWQxZjE1MCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMy
IEBACisyMDEyLTEyLTEzICBFcmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KKworICAgICAg
ICBBZGQgLS1wcm9maWxlcj1QUk9GSUxFUiBvcHRpb24gdG8gcnVuLXBlcmYtdGVzdHMgdG8gYWxs
b3cgc3BlY2lmeWluZyB3aGljaCBwcm9maWxlciB0byB1c2Ugb24gcGxhdGZvcm1zIHdpdGggbWFu
eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA0ODkx
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSSBhbHNv
IGltcGxlbWVudGVkIGEgdmVyeSBzaW1wbGUgIlNhbXBsZSIgUHJvZmlsZXIgdXNpbmcKKyAgICAg
ICAgTWFjIE9TIFgncyAvdXNyL2Jpbi9zYW1wbGUgY29tbWFuZCBsaW5lIHRvb2wuCisKKyAgICAg
ICAgVGhlIHJlYWwgcmVhc29uIGZvciB0aGlzIGFic3RyYWN0aW9uIGlzIHRvIG1ha2UgaXQgZWFz
eQorICAgICAgICB0byBzdXBwb3J0IGJvdGggcGVyZiBhbmQgcHByb2Ygb24gbGludXggd2hpY2gg
c2VlbSB0bworICAgICAgICBiZSBhYm91dCBlcXVhbGx5IHBvcHVsYXIgYW1vbmcgdGhvc2UgSSBh
c2sgaW4gdGhlIENocm9tZSB0ZWFtLgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21t
b24vc3lzdGVtL3Byb2ZpbGVyLnB5OgorICAgICAgICAoUHJvZmlsZXJGYWN0b3J5LmNyZWF0ZV9w
cm9maWxlcik6CisgICAgICAgIChQcm9maWxlckZhY3RvcnkpOgorICAgICAgICAoUHJvZmlsZXJG
YWN0b3J5LmF2YWlsYWJsZV9wcm9maWxlcnNfYnlfbmFtZSk6CisgICAgICAgIChQcm9maWxlckZh
Y3RvcnkuZGVmYXVsdF9wcm9maWxlcl9uYW1lKToKKyAgICAgICAgKFNhbXBsZSk6CisgICAgICAg
IChTYW1wbGUuX19pbml0X18pOgorICAgICAgICAoU2FtcGxlLmF0dGFjaF90b19waWQpOgorICAg
ICAgICAoU2FtcGxlLnByb2ZpbGVfYWZ0ZXJfZXhpdCk6CisgICAgICAgIChJUHJvZmlsZXIuYXR0
YWNoX3RvX3BpZCk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC9kcml2ZXIucHk6CisgICAgICAgIChEcml2ZXIuX19pbml0X18pOgorICAgICAgICAqIFNjcmlw
dHMvd2Via2l0cHkvcGVyZm9ybWFuY2VfdGVzdHMvcGVyZnRlc3RzcnVubmVyLnB5OgorICAgICAg
ICAoUGVyZlRlc3RzUnVubmVyLl9wYXJzZV9hcmdzKToKKwogMjAxMi0xMi0xMyAgSnVsaWUgUGFy
ZW50ICA8anBhcmVudEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgRGFzaGJvYXJkIGNsZWFudXA6
IHJlbW92ZSB1c2FnZSBvZiBnbG9iYWwgZ19idWlsZGVycy4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9wcm9maWxlci5weSBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvY29tbW9uL3N5c3RlbS9wcm9maWxlci5weQppbmRleCBlNDQ1MmQyMmVjM2Q3ZGE3
NzdiNmIyNzRkZDZkMTcyMjNiNjRjY2EzLi4wOGViYzE4OGI1MzJjY2RkMTRmMGM2ZTNkNzhiN2Rm
NmQwNGQzYmI4IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0
ZW0vcHJvZmlsZXIucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVt
L3Byb2ZpbGVyLnB5CkBAIC0zNCwxMCArMzQsMjggQEAgX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2Vy
KF9fbmFtZV9fKQogCiBjbGFzcyBQcm9maWxlckZhY3Rvcnkob2JqZWN0KToKICAgICBAY2xhc3Nt
ZXRob2QKLSAgICBkZWYgY3JlYXRlX3Byb2ZpbGVyKGNscywgaG9zdCwgZXhlY3V0YWJsZV9wYXRo
LCBvdXRwdXRfZGlyLCBpZGVudGlmaWVyPU5vbmUpOgotICAgICAgICBpZiBob3N0LnBsYXRmb3Jt
LmlzX21hYygpOgotICAgICAgICAgICAgcmV0dXJuIElQcm9maWxlcihob3N0LCBleGVjdXRhYmxl
X3BhdGgsIG91dHB1dF9kaXIsIGlkZW50aWZpZXIpCi0gICAgICAgIHJldHVybiBHb29nbGVQUHJv
Zihob3N0LCBleGVjdXRhYmxlX3BhdGgsIG91dHB1dF9kaXIsIGlkZW50aWZpZXIpCisgICAgZGVm
IGNyZWF0ZV9wcm9maWxlcihjbHMsIGhvc3QsIGV4ZWN1dGFibGVfcGF0aCwgb3V0cHV0X2Rpciwg
cHJvZmlsZXJfbmFtZT1Ob25lLCBpZGVudGlmaWVyPU5vbmUpOgorICAgICAgICBwcm9maWxlcnNf
YnlfbmFtZSA9IGNscy5hdmFpbGFibGVfcHJvZmlsZXJzX2J5X25hbWUoaG9zdC5wbGF0Zm9ybSkK
KyAgICAgICAgcHJvZmlsZXJfY2xhc3MgPSBwcm9maWxlcnNfYnlfbmFtZS5nZXQocHJvZmlsZXJf
bmFtZSBvciBjbHMuZGVmYXVsdF9wcm9maWxlcl9uYW1lKGhvc3QucGxhdGZvcm0pKQorICAgICAg
ICBpZiBub3QgcHJvZmlsZXJfY2xhc3M6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAg
ICByZXR1cm4gcHJvZmlsZXJfY2xhc3MoaG9zdCwgZXhlY3V0YWJsZV9wYXRoLCBvdXRwdXRfZGly
LCBpZGVudGlmaWVyKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGF2YWlsYWJsZV9wcm9m
aWxlcnNfYnlfbmFtZShjbHMsIHBsYXRmb3JtKToKKyAgICAgICAgcHJvZmlsZXJzID0geydwcHJv
Zic6IEdvb2dsZVBQcm9mfQorICAgICAgICBpZiBwbGF0Zm9ybS5pc19tYWMoKToKKyAgICAgICAg
ICAgIHByb2ZpbGVyc1snaXByb2ZpbGVyJ10gPSBJUHJvZmlsZXIKKyAgICAgICAgICAgIHByb2Zp
bGVyc1snc2FtcGxlJ10gPSBTYW1wbGUKKyAgICAgICAgcmV0dXJuIHByb2ZpbGVycworCisgICAg
QGNsYXNzbWV0aG9kCisgICAgZGVmIGRlZmF1bHRfcHJvZmlsZXJfbmFtZShjbHMsIHBsYXRmb3Jt
KToKKyAgICAgICAgaWYgcGxhdGZvcm0uaXNfbWFjKCk6CisgICAgICAgICAgICByZXR1cm4gJ2lw
cm9maWxlcicKKyAgICAgICAgaWYgcGxhdGZvcm0uaXNfbGludXgoKToKKyAgICAgICAgICAgIHJl
dHVybiAncHByb2YnCisgICAgICAgIHJldHVybiBOb25lCiAKIAogY2xhc3MgUHJvZmlsZXIob2Jq
ZWN0KToKQEAgLTk3LDYgKzExNSwyMCBAQCBjbGFzcyBHb29nbGVQUHJvZihTaW5nbGVGaWxlT3V0
cHV0UHJvZmlsZXIpOgogICAgICAgICBwcmludCAnICcuam9pbihbc2VsZi5fcHByb2ZfcGF0aCgp
LCBzZWxmLl9leGVjdXRhYmxlX3BhdGgsIHNlbGYuX291dHB1dF9wYXRoXSkKIAogCitjbGFzcyBT
YW1wbGUoU2luZ2xlRmlsZU91dHB1dFByb2ZpbGVyKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwg
aG9zdCwgZXhlY3V0YWJsZV9wYXRoLCBvdXRwdXRfZGlyLCBpZGVudGlmaWVyPU5vbmUpOgorICAg
ICAgICBzdXBlcihTYW1wbGUsIHNlbGYpLl9faW5pdF9fKGhvc3QsIGV4ZWN1dGFibGVfcGF0aCwg
b3V0cHV0X2RpciwgInR4dCIsIGlkZW50aWZpZXIpCisgICAgICAgIHNlbGYuX3Byb2ZpbGVyX3By
b2Nlc3MgPSBOb25lCisKKyAgICBkZWYgYXR0YWNoX3RvX3BpZChzZWxmLCBwaWQpOgorICAgICAg
ICBmcyA9IHNlbGYuX2hvc3QuZmlsZXN5c3RlbQorICAgICAgICBjbWQgPSBbInNhbXBsZSIsIHBp
ZCwgIi1tYXlEaWUiLCAiLWZpbGUiLCBzZWxmLl9vdXRwdXRfcGF0aF0KKyAgICAgICAgc2VsZi5f
cHJvZmlsZXJfcHJvY2VzcyA9IHNlbGYuX2hvc3QuZXhlY3V0aXZlLnBvcGVuKGNtZCkKKworICAg
IGRlZiBwcm9maWxlX2FmdGVyX2V4aXQoc2VsZik6CisgICAgICAgIHNlbGYuX3Byb2ZpbGVyX3By
b2Nlc3Mud2FpdCgpCisKKwogY2xhc3MgSVByb2ZpbGVyKFNpbmdsZUZpbGVPdXRwdXRQcm9maWxl
cik6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGhvc3QsIGV4ZWN1dGFibGVfcGF0aCwgb3V0cHV0
X2RpciwgaWRlbnRpZmllcj1Ob25lKToKICAgICAgICAgc3VwZXIoSVByb2ZpbGVyLCBzZWxmKS5f
X2luaXRfXyhob3N0LCBleGVjdXRhYmxlX3BhdGgsIG91dHB1dF9kaXIsICJkdHBzIiwgaWRlbnRp
ZmllcikKQEAgLTEwOCw3ICsxNDAsNiBAQCBjbGFzcyBJUHJvZmlsZXIoU2luZ2xlRmlsZU91dHB1
dFByb2ZpbGVyKToKICAgICAgICAgZnMgPSBzZWxmLl9ob3N0LmZpbGVzeXN0ZW0KICAgICAgICAg
Y21kID0gWyJpcHJvZmlsZXIiLCAiLXRpbWVwcm9maWxlciIsICItYSIsIHBpZCwKICAgICAgICAg
ICAgICAgICAiLWQiLCBmcy5kaXJuYW1lKHNlbGYuX291dHB1dF9wYXRoKSwgIi1vIiwgZnMuc3Bs
aXRleHQoZnMuYmFzZW5hbWUoc2VsZi5fb3V0cHV0X3BhdGgpKVswXV0KLSAgICAgICAgY21kID0g
bWFwKHVuaWNvZGUsIGNtZCkKICAgICAgICAgIyBGSVhNRTogQ29uc2lkZXIgY2FwdHVyaW5nIGlu
c3RlYWQgb2YgbGV0dGluZyBpbnN0cnVtZW50cyBzcGFtIHRvIHN0ZGVyciBkaXJlY3RseS4KICAg
ICAgICAgc2VsZi5fcHJvZmlsZXJfcHJvY2VzcyA9IHNlbGYuX2hvc3QuZXhlY3V0aXZlLnBvcGVu
KGNtZCkKIApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC9kcml2ZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0
L2RyaXZlci5weQppbmRleCAyYmFmNTllOTQ1YjNjMTMwZDZiNDY4MjQ0NGI3YWQ4NWE2M2VhZGEy
Li43Njg0YTlkODRmNGY4OWViNDcwYmQwMTQxOWQ0NTkyMDkyNjBkYjNkIDEwMDY0NAotLS0gYS9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2RyaXZlci5weQorKysgYi9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2RyaXZlci5weQpAQCAtMTQz
LDcgKzE0Myw5IEBAIGNsYXNzIERyaXZlcihvYmplY3QpOgogCiAgICAgICAgIHNlbGYuX21lYXN1
cmVtZW50cyA9IHt9CiAgICAgICAgIGlmIHNlbGYuX3BvcnQuZ2V0X29wdGlvbigicHJvZmlsZSIp
OgotICAgICAgICAgICAgc2VsZi5fcHJvZmlsZXIgPSBQcm9maWxlckZhY3RvcnkuY3JlYXRlX3By
b2ZpbGVyKHNlbGYuX3BvcnQuaG9zdCwgc2VsZi5fcG9ydC5fcGF0aF90b19kcml2ZXIoKSwgc2Vs
Zi5fcG9ydC5yZXN1bHRzX2RpcmVjdG9yeSgpKQorICAgICAgICAgICAgcHJvZmlsZXJfbmFtZSA9
IHNlbGYuX3BvcnQuZ2V0X29wdGlvbigicHJvZmlsZXIiKQorICAgICAgICAgICAgc2VsZi5fcHJv
ZmlsZXIgPSBQcm9maWxlckZhY3RvcnkuY3JlYXRlX3Byb2ZpbGVyKHNlbGYuX3BvcnQuaG9zdCwK
KyAgICAgICAgICAgICAgICBzZWxmLl9wb3J0Ll9wYXRoX3RvX2RyaXZlcigpLCBzZWxmLl9wb3J0
LnJlc3VsdHNfZGlyZWN0b3J5KCksIHByb2ZpbGVyX25hbWUpCiAgICAgICAgIGVsc2U6CiAgICAg
ICAgICAgICBzZWxmLl9wcm9maWxlciA9IE5vbmUKIApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9wZXJmb3JtYW5jZV90ZXN0cy9wZXJmdGVzdHNydW5uZXIucHkgYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L3BlcmZvcm1hbmNlX3Rlc3RzL3BlcmZ0ZXN0c3J1bm5lci5weQppbmRl
eCAyYTIxYWUzNTgwMmFjYTM1MzY0OGVhMWU1NWY4ODhiYzA1ZDhlYTg1Li42ZTVjYmI1MGI1Y2Uy
NGYzYjU1NWQ4MmMzNGNjNTA4OTAyN2RkMGUwIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L3BlcmZvcm1hbmNlX3Rlc3RzL3BlcmZ0ZXN0c3J1bm5lci5weQorKysgYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L3BlcmZvcm1hbmNlX3Rlc3RzL3BlcmZ0ZXN0c3J1bm5lci5weQpAQCAt
MTIyLDYgKzEyMiw4IEBAIGNsYXNzIFBlcmZUZXN0c1J1bm5lcihvYmplY3QpOgogICAgICAgICAg
ICAgICAgIGhlbHA9IlJ1biBhbGwgdGVzdHMsIGluY2x1ZGluZyB0aGUgb25lcyBpbiB0aGUgU2tp
cHBlZCBsaXN0LiIpLAogICAgICAgICAgICAgb3B0cGFyc2UubWFrZV9vcHRpb24oIi0tcHJvZmls
ZSIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsCiAgICAgICAgICAgICAgICAgaGVscD0iT3V0cHV0IHBl
ci10ZXN0IHByb2ZpbGUgaW5mb3JtYXRpb24uIiksCisgICAgICAgICAgICBvcHRwYXJzZS5tYWtl
X29wdGlvbigiLS1wcm9maWxlciIsIGFjdGlvbj0ic3RvcmUiLAorICAgICAgICAgICAgICAgIGhl
bHA9Ik91dHB1dCBwZXItdGVzdCBwcm9maWxlIGluZm9ybWF0aW9uLCB1c2luZyB0aGUgc3BlY2lm
aWVkIHByb2ZpbGVyLiIpLAogICAgICAgICAgICAgXQogICAgICAgICByZXR1cm4gb3B0cGFyc2Uu
T3B0aW9uUGFyc2VyKG9wdGlvbl9saXN0PShwZXJmX29wdGlvbl9saXN0KSkucGFyc2VfYXJncyhh
cmdzKQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179410</attachid>
            <date>2012-12-13 21:05:54 -0800</date>
            <delta_ts>2012-12-13 21:57:13 -0800</delta_ts>
            <desc>Updated to include perf on linux</desc>
            <filename>bug-104891-20121213210317.patch</filename>
            <type>text/plain</type>
            <size>7751</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3NzExCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOGUwOWYyYjAzOTk5ZGY3NmYzYWRjNmE5NmE5YTYxMzk1
YmIzZDMyYS4uYTQxNWMxZDAwODQ1NTA1MjZlMzc0ZGNhY2IzMWQ1MjRjNDQxYjgyOSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDM0
IEBACiAyMDEyLTEyLTEzICBFcmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KIAorICAgICAg
ICBBZGQgLS1wcm9maWxlcj1QUk9GSUxFUiBvcHRpb24gdG8gcnVuLXBlcmYtdGVzdHMgdG8gYWxs
b3cgc3BlY2lmeWluZyB3aGljaCBwcm9maWxlciB0byB1c2Ugb24gcGxhdGZvcm1zIHdpdGggbWFu
eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA0ODkx
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSSBhbHNv
IGltcGxlbWVudGVkIGEgdmVyeSBzaW1wbGUgIlNhbXBsZSIgUHJvZmlsZXIgdXNpbmcKKyAgICAg
ICAgTWFjIE9TIFgncyAvdXNyL2Jpbi9zYW1wbGUgY29tbWFuZCBsaW5lIHRvb2wuCisKKyAgICAg
ICAgVGhlIHJlYWwgcmVhc29uIGZvciB0aGlzIGFic3RyYWN0aW9uIGlzIHRvIG1ha2UgaXQgZWFz
eQorICAgICAgICB0byBzdXBwb3J0IGJvdGggcGVyZiBhbmQgcHByb2Ygb24gbGludXggd2hpY2gg
c2VlbSB0bworICAgICAgICBiZSBhYm91dCBlcXVhbGx5IHBvcHVsYXIgYW1vbmcgdGhvc2UgSSBh
c2sgaW4gdGhlIENocm9tZSB0ZWFtLgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21t
b24vc3lzdGVtL3Byb2ZpbGVyLnB5OgorICAgICAgICAoUHJvZmlsZXJGYWN0b3J5LmNyZWF0ZV9w
cm9maWxlcik6CisgICAgICAgIChQcm9maWxlckZhY3RvcnkpOgorICAgICAgICAoUHJvZmlsZXJG
YWN0b3J5LmF2YWlsYWJsZV9wcm9maWxlcnNfYnlfbmFtZSk6CisgICAgICAgIChQcm9maWxlckZh
Y3RvcnkuZGVmYXVsdF9wcm9maWxlcl9uYW1lKToKKyAgICAgICAgKFNhbXBsZSk6CisgICAgICAg
IChTYW1wbGUuX19pbml0X18pOgorICAgICAgICAoU2FtcGxlLmF0dGFjaF90b19waWQpOgorICAg
ICAgICAoU2FtcGxlLnByb2ZpbGVfYWZ0ZXJfZXhpdCk6CisgICAgICAgIChJUHJvZmlsZXIuYXR0
YWNoX3RvX3BpZCk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC9kcml2ZXIucHk6CisgICAgICAgIChEcml2ZXIuX19pbml0X18pOgorICAgICAgICAqIFNjcmlw
dHMvd2Via2l0cHkvcGVyZm9ybWFuY2VfdGVzdHMvcGVyZnRlc3RzcnVubmVyLnB5OgorICAgICAg
ICAoUGVyZlRlc3RzUnVubmVyLl9wYXJzZV9hcmdzKToKKworMjAxMi0xMi0xMyAgRXJpYyBTZWlk
ZWwgIDxlcmljQHdlYmtpdC5vcmc+CisKICAgICAgICAgVW5yZXZpZXdlZCwgZml4aW5nIHR5cG8g
aW4gcHl0aG9uIHVuaXR0ZXN0LgogCiAgICAgICAgIEkgY2hhbmdlZCB0aGUgZGVmYXVsdCBwcm9m
aWxlciBvbiBsaW51eCBmcm9tIHBwcm9mIHRvIHBlcmYgaW4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9wcm9maWxlci5weSBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvY29tbW9uL3N5c3RlbS9wcm9maWxlci5weQppbmRleCA5ODZhZmE3NjI1NTJiNTQ0
ZjdjZDMwNmYxMGYxYjBhOGQ2MmUzYjFkLi4xN2MzNmVmZGI5YmNmZThhNTZkMGNmMjUxNDAxM2M1
Yzk4NzY0ZWEzIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0
ZW0vcHJvZmlsZXIucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVt
L3Byb2ZpbGVyLnB5CkBAIC0zNCwxMCArMzQsMzAgQEAgX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2Vy
KF9fbmFtZV9fKQogCiBjbGFzcyBQcm9maWxlckZhY3Rvcnkob2JqZWN0KToKICAgICBAY2xhc3Nt
ZXRob2QKLSAgICBkZWYgY3JlYXRlX3Byb2ZpbGVyKGNscywgaG9zdCwgZXhlY3V0YWJsZV9wYXRo
LCBvdXRwdXRfZGlyLCBpZGVudGlmaWVyPU5vbmUpOgotICAgICAgICBpZiBob3N0LnBsYXRmb3Jt
LmlzX21hYygpOgotICAgICAgICAgICAgcmV0dXJuIElQcm9maWxlcihob3N0LCBleGVjdXRhYmxl
X3BhdGgsIG91dHB1dF9kaXIsIGlkZW50aWZpZXIpCi0gICAgICAgIHJldHVybiBQZXJmKGhvc3Qs
IGV4ZWN1dGFibGVfcGF0aCwgb3V0cHV0X2RpciwgaWRlbnRpZmllcikKKyAgICBkZWYgY3JlYXRl
X3Byb2ZpbGVyKGNscywgaG9zdCwgZXhlY3V0YWJsZV9wYXRoLCBvdXRwdXRfZGlyLCBwcm9maWxl
cl9uYW1lPU5vbmUsIGlkZW50aWZpZXI9Tm9uZSk6CisgICAgICAgIHByb2ZpbGVyc19ieV9uYW1l
ID0gY2xzLmF2YWlsYWJsZV9wcm9maWxlcnNfYnlfbmFtZShob3N0LnBsYXRmb3JtKQorICAgICAg
ICBwcm9maWxlcl9jbGFzcyA9IHByb2ZpbGVyc19ieV9uYW1lLmdldChwcm9maWxlcl9uYW1lIG9y
IGNscy5kZWZhdWx0X3Byb2ZpbGVyX25hbWUoaG9zdC5wbGF0Zm9ybSkpCisgICAgICAgIGlmIG5v
dCBwcm9maWxlcl9jbGFzczoKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIHJldHVy
biBwcm9maWxlcl9jbGFzcyhob3N0LCBleGVjdXRhYmxlX3BhdGgsIG91dHB1dF9kaXIsIGlkZW50
aWZpZXIpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgYXZhaWxhYmxlX3Byb2ZpbGVyc19i
eV9uYW1lKGNscywgcGxhdGZvcm0pOgorICAgICAgICBwcm9maWxlcnMgPSB7J3Bwcm9mJzogR29v
Z2xlUFByb2Z9ICAjIHBwcm9mIHJlcXVpcmVzIHRjbWFsbG9jLCBidXQgaXMgYXZhaWxhYmxlIGV2
ZXJ5d2hlcmUuCisgICAgICAgIGlmIHBsYXRmb3JtLmlzX21hYygpOgorICAgICAgICAgICAgcHJv
ZmlsZXJzWydpcHJvZmlsZXInXSA9IElQcm9maWxlcgorICAgICAgICAgICAgcHJvZmlsZXJzWydz
YW1wbGUnXSA9IFNhbXBsZQorICAgICAgICBpZiBwbGF0Zm9ybS5pc19saW51eCgpOgorICAgICAg
ICAgICAgcHJvZmlsZXJzWydwZXJmJ10gPSBQZXJmCisgICAgICAgIHJldHVybiBwcm9maWxlcnMK
KworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBkZWZhdWx0X3Byb2ZpbGVyX25hbWUoY2xzLCBw
bGF0Zm9ybSk6CisgICAgICAgIGlmIHBsYXRmb3JtLmlzX21hYygpOgorICAgICAgICAgICAgcmV0
dXJuICdpcHJvZmlsZXInCisgICAgICAgIGlmIHBsYXRmb3JtLmlzX2xpbnV4KCk6CisgICAgICAg
ICAgICByZXR1cm4gJ3BlcmYnCisgICAgICAgIHJldHVybiBOb25lCiAKIAogY2xhc3MgUHJvZmls
ZXIob2JqZWN0KToKQEAgLTE0MCw2ICsxNjAsMjAgQEAgY2xhc3MgUGVyZihTaW5nbGVGaWxlT3V0
cHV0UHJvZmlsZXIpOgogICAgICAgICBwcmludCAnICcuam9pbihbc2VsZi5fcGVyZl9wYXRoKCks
ICdyZXBvcnQnLCAnLWknLCBzZWxmLl9vdXRwdXRfcGF0aF0pCiAKIAorY2xhc3MgU2FtcGxlKFNp
bmdsZUZpbGVPdXRwdXRQcm9maWxlcik6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGhvc3QsIGV4
ZWN1dGFibGVfcGF0aCwgb3V0cHV0X2RpciwgaWRlbnRpZmllcj1Ob25lKToKKyAgICAgICAgc3Vw
ZXIoU2FtcGxlLCBzZWxmKS5fX2luaXRfXyhob3N0LCBleGVjdXRhYmxlX3BhdGgsIG91dHB1dF9k
aXIsICJ0eHQiLCBpZGVudGlmaWVyKQorICAgICAgICBzZWxmLl9wcm9maWxlcl9wcm9jZXNzID0g
Tm9uZQorCisgICAgZGVmIGF0dGFjaF90b19waWQoc2VsZiwgcGlkKToKKyAgICAgICAgZnMgPSBz
ZWxmLl9ob3N0LmZpbGVzeXN0ZW0KKyAgICAgICAgY21kID0gWyJzYW1wbGUiLCBwaWQsICItbWF5
RGllIiwgIi1maWxlIiwgc2VsZi5fb3V0cHV0X3BhdGhdCisgICAgICAgIHNlbGYuX3Byb2ZpbGVy
X3Byb2Nlc3MgPSBzZWxmLl9ob3N0LmV4ZWN1dGl2ZS5wb3BlbihjbWQpCisKKyAgICBkZWYgcHJv
ZmlsZV9hZnRlcl9leGl0KHNlbGYpOgorICAgICAgICBzZWxmLl9wcm9maWxlcl9wcm9jZXNzLndh
aXQoKQorCisKIGNsYXNzIElQcm9maWxlcihTaW5nbGVGaWxlT3V0cHV0UHJvZmlsZXIpOgogICAg
IGRlZiBfX2luaXRfXyhzZWxmLCBob3N0LCBleGVjdXRhYmxlX3BhdGgsIG91dHB1dF9kaXIsIGlk
ZW50aWZpZXI9Tm9uZSk6CiAgICAgICAgIHN1cGVyKElQcm9maWxlciwgc2VsZikuX19pbml0X18o
aG9zdCwgZXhlY3V0YWJsZV9wYXRoLCBvdXRwdXRfZGlyLCAiZHRwcyIsIGlkZW50aWZpZXIpCkBA
IC0xNTEsNyArMTg1LDYgQEAgY2xhc3MgSVByb2ZpbGVyKFNpbmdsZUZpbGVPdXRwdXRQcm9maWxl
cik6CiAgICAgICAgIGZzID0gc2VsZi5faG9zdC5maWxlc3lzdGVtCiAgICAgICAgIGNtZCA9IFsi
aXByb2ZpbGVyIiwgIi10aW1lcHJvZmlsZXIiLCAiLWEiLCBwaWQsCiAgICAgICAgICAgICAgICAg
Ii1kIiwgZnMuZGlybmFtZShzZWxmLl9vdXRwdXRfcGF0aCksICItbyIsIGZzLnNwbGl0ZXh0KGZz
LmJhc2VuYW1lKHNlbGYuX291dHB1dF9wYXRoKSlbMF1dCi0gICAgICAgIGNtZCA9IG1hcCh1bmlj
b2RlLCBjbWQpCiAgICAgICAgICMgRklYTUU6IENvbnNpZGVyIGNhcHR1cmluZyBpbnN0ZWFkIG9m
IGxldHRpbmcgaW5zdHJ1bWVudHMgc3BhbSB0byBzdGRlcnIgZGlyZWN0bHkuCiAgICAgICAgIHNl
bGYuX3Byb2ZpbGVyX3Byb2Nlc3MgPSBzZWxmLl9ob3N0LmV4ZWN1dGl2ZS5wb3BlbihjbWQpCiAK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9wcm9maWxl
cl91bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9wcm9m
aWxlcl91bml0dGVzdC5weQppbmRleCA3OTY3Y2E4OTEyMDc2ODI3ZTY0MzM0YzZjM2JkNjEwYTZh
OWYwNGVlLi5mMmVjNGVlMTg3OWVlODdkNWQ0ZWY1Njc1ODY1NmMzNjAzZDFhNjhjIDEwMDY0NAot
LS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vcHJvZmlsZXJfdW5pdHRl
c3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL3Byb2ZpbGVy
X3VuaXR0ZXN0LnB5CkBAIC0zNCwxNyArMzQsMjIgQEAgZnJvbSAucHJvZmlsZXIgaW1wb3J0IFBy
b2ZpbGVyRmFjdG9yeSwgR29vZ2xlUFByb2YKIAogCiBjbGFzcyBQcm9maWxlckZhY3RvcnlUZXN0
KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBkZWYgdGVzdF9iYXNpYyhzZWxmKToKKyAgICBkZWYg
dGVzdF9kZWZhdWx0X3Byb2ZpbGVycyhzZWxmKToKICAgICAgICAgaG9zdCA9IE1vY2tTeXN0ZW1I
b3N0KCkKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShob3N0LmZpbGVzeXN0ZW0uZXhpc3RzKCIv
dG1wL291dHB1dCIpKQorCisgICAgICAgICMgRGVmYXVsdCBtb2NrcyBhcmUgTWFjLCBzbyBpcHJv
ZmlsZSBzaG91bGQgYmUgZGVmYXVsdC4KICAgICAgICAgcHJvZmlsZXIgPSBQcm9maWxlckZhY3Rv
cnkuY3JlYXRlX3Byb2ZpbGVyKGhvc3QsICcvYmluL2V4ZWN1dGFibGUnLCAnL3RtcC9vdXRwdXQn
KQogICAgICAgICBzZWxmLmFzc2VydFRydWUoaG9zdC5maWxlc3lzdGVtLmV4aXN0cygiL3RtcC9v
dXRwdXQiKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocHJvZmlsZXIuX291dHB1dF9wYXRo
LCAiL3RtcC9vdXRwdXQvdGVzdC5kdHBzIikKIAorICAgICAgICAjIExpbnV4IGRlZmF1bHRzIHRv
IHBlcmYuCiAgICAgICAgIGhvc3QucGxhdGZvcm0ub3NfbmFtZSA9ICdsaW51eCcKICAgICAgICAg
cHJvZmlsZXIgPSBQcm9maWxlckZhY3RvcnkuY3JlYXRlX3Byb2ZpbGVyKGhvc3QsICcvYmluL2V4
ZWN1dGFibGUnLCAnL3RtcC9vdXRwdXQnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhwcm9m
aWxlci5fb3V0cHV0X3BhdGgsICIvdG1wL291dHB1dC90ZXN0LmRhdGEiKQogCisKK2NsYXNzIEdv
b2dsZVBQcm9mVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3RfcHByb2Zfb3V0
cHV0X3JlZ2V4cChzZWxmKToKICAgICAgICAgcHByb2Zfb3V0cHV0ID0gIiIiCiBzb21ldGltZXMK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZHJp
dmVyLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9kcml2ZXIu
cHkKaW5kZXggMmJhZjU5ZTk0NWIzYzEzMGQ2YjQ2ODI0NDRiN2FkODVhNjNlYWRhMi4uNzY4NGE5
ZDg0ZjRmODllYjQ3MGJkMDE0MTlkNDU5MjA5MjYwZGIzZCAxMDA2NDQKLS0tIGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9kcml2ZXIucHkKKysrIGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9kcml2ZXIucHkKQEAgLTE0Myw3ICsxNDMs
OSBAQCBjbGFzcyBEcml2ZXIob2JqZWN0KToKIAogICAgICAgICBzZWxmLl9tZWFzdXJlbWVudHMg
PSB7fQogICAgICAgICBpZiBzZWxmLl9wb3J0LmdldF9vcHRpb24oInByb2ZpbGUiKToKLSAgICAg
ICAgICAgIHNlbGYuX3Byb2ZpbGVyID0gUHJvZmlsZXJGYWN0b3J5LmNyZWF0ZV9wcm9maWxlcihz
ZWxmLl9wb3J0Lmhvc3QsIHNlbGYuX3BvcnQuX3BhdGhfdG9fZHJpdmVyKCksIHNlbGYuX3BvcnQu
cmVzdWx0c19kaXJlY3RvcnkoKSkKKyAgICAgICAgICAgIHByb2ZpbGVyX25hbWUgPSBzZWxmLl9w
b3J0LmdldF9vcHRpb24oInByb2ZpbGVyIikKKyAgICAgICAgICAgIHNlbGYuX3Byb2ZpbGVyID0g
UHJvZmlsZXJGYWN0b3J5LmNyZWF0ZV9wcm9maWxlcihzZWxmLl9wb3J0Lmhvc3QsCisgICAgICAg
ICAgICAgICAgc2VsZi5fcG9ydC5fcGF0aF90b19kcml2ZXIoKSwgc2VsZi5fcG9ydC5yZXN1bHRz
X2RpcmVjdG9yeSgpLCBwcm9maWxlcl9uYW1lKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAg
c2VsZi5fcHJvZmlsZXIgPSBOb25lCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvcGVyZm9ybWFuY2VfdGVzdHMvcGVyZnRlc3RzcnVubmVyLnB5IGIvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9wZXJmb3JtYW5jZV90ZXN0cy9wZXJmdGVzdHNydW5uZXIucHkKaW5kZXggMmEyMWFl
MzU4MDJhY2EzNTM2NDhlYTFlNTVmODg4YmMwNWQ4ZWE4NS4uNmU1Y2JiNTBiNWNlMjRmM2I1NTVk
ODJjMzRjYzUwODkwMjdkZDBlMCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9w
ZXJmb3JtYW5jZV90ZXN0cy9wZXJmdGVzdHNydW5uZXIucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9wZXJmb3JtYW5jZV90ZXN0cy9wZXJmdGVzdHNydW5uZXIucHkKQEAgLTEyMiw2ICsx
MjIsOCBAQCBjbGFzcyBQZXJmVGVzdHNSdW5uZXIob2JqZWN0KToKICAgICAgICAgICAgICAgICBo
ZWxwPSJSdW4gYWxsIHRlc3RzLCBpbmNsdWRpbmcgdGhlIG9uZXMgaW4gdGhlIFNraXBwZWQgbGlz
dC4iKSwKICAgICAgICAgICAgIG9wdHBhcnNlLm1ha2Vfb3B0aW9uKCItLXByb2ZpbGUiLCBhY3Rp
b249InN0b3JlX3RydWUiLAogICAgICAgICAgICAgICAgIGhlbHA9Ik91dHB1dCBwZXItdGVzdCBw
cm9maWxlIGluZm9ybWF0aW9uLiIpLAorICAgICAgICAgICAgb3B0cGFyc2UubWFrZV9vcHRpb24o
Ii0tcHJvZmlsZXIiLCBhY3Rpb249InN0b3JlIiwKKyAgICAgICAgICAgICAgICBoZWxwPSJPdXRw
dXQgcGVyLXRlc3QgcHJvZmlsZSBpbmZvcm1hdGlvbiwgdXNpbmcgdGhlIHNwZWNpZmllZCBwcm9m
aWxlci4iKSwKICAgICAgICAgICAgIF0KICAgICAgICAgcmV0dXJuIG9wdHBhcnNlLk9wdGlvblBh
cnNlcihvcHRpb25fbGlzdD0ocGVyZl9vcHRpb25fbGlzdCkpLnBhcnNlX2FyZ3MoYXJncykKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179417</attachid>
            <date>2012-12-13 21:57:16 -0800</date>
            <delta_ts>2012-12-13 22:42:25 -0800</delta_ts>
            <desc>Updated per rniwa&apos;s suggestions</desc>
            <filename>bug-104891-20121213215439.patch</filename>
            <type>text/plain</type>
            <size>10118</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3NzExCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOGUwOWYyYjAzOTk5ZGY3NmYzYWRjNmE5NmE5YTYxMzk1
YmIzZDMyYS4uYTQxNWMxZDAwODQ1NTA1MjZlMzc0ZGNhY2IzMWQ1MjRjNDQxYjgyOSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDM0
IEBACiAyMDEyLTEyLTEzICBFcmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KIAorICAgICAg
ICBBZGQgLS1wcm9maWxlcj1QUk9GSUxFUiBvcHRpb24gdG8gcnVuLXBlcmYtdGVzdHMgdG8gYWxs
b3cgc3BlY2lmeWluZyB3aGljaCBwcm9maWxlciB0byB1c2Ugb24gcGxhdGZvcm1zIHdpdGggbWFu
eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA0ODkx
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSSBhbHNv
IGltcGxlbWVudGVkIGEgdmVyeSBzaW1wbGUgIlNhbXBsZSIgUHJvZmlsZXIgdXNpbmcKKyAgICAg
ICAgTWFjIE9TIFgncyAvdXNyL2Jpbi9zYW1wbGUgY29tbWFuZCBsaW5lIHRvb2wuCisKKyAgICAg
ICAgVGhlIHJlYWwgcmVhc29uIGZvciB0aGlzIGFic3RyYWN0aW9uIGlzIHRvIG1ha2UgaXQgZWFz
eQorICAgICAgICB0byBzdXBwb3J0IGJvdGggcGVyZiBhbmQgcHByb2Ygb24gbGludXggd2hpY2gg
c2VlbSB0bworICAgICAgICBiZSBhYm91dCBlcXVhbGx5IHBvcHVsYXIgYW1vbmcgdGhvc2UgSSBh
c2sgaW4gdGhlIENocm9tZSB0ZWFtLgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21t
b24vc3lzdGVtL3Byb2ZpbGVyLnB5OgorICAgICAgICAoUHJvZmlsZXJGYWN0b3J5LmNyZWF0ZV9w
cm9maWxlcik6CisgICAgICAgIChQcm9maWxlckZhY3RvcnkpOgorICAgICAgICAoUHJvZmlsZXJG
YWN0b3J5LmF2YWlsYWJsZV9wcm9maWxlcnNfYnlfbmFtZSk6CisgICAgICAgIChQcm9maWxlckZh
Y3RvcnkuZGVmYXVsdF9wcm9maWxlcl9uYW1lKToKKyAgICAgICAgKFNhbXBsZSk6CisgICAgICAg
IChTYW1wbGUuX19pbml0X18pOgorICAgICAgICAoU2FtcGxlLmF0dGFjaF90b19waWQpOgorICAg
ICAgICAoU2FtcGxlLnByb2ZpbGVfYWZ0ZXJfZXhpdCk6CisgICAgICAgIChJUHJvZmlsZXIuYXR0
YWNoX3RvX3BpZCk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC9kcml2ZXIucHk6CisgICAgICAgIChEcml2ZXIuX19pbml0X18pOgorICAgICAgICAqIFNjcmlw
dHMvd2Via2l0cHkvcGVyZm9ybWFuY2VfdGVzdHMvcGVyZnRlc3RzcnVubmVyLnB5OgorICAgICAg
ICAoUGVyZlRlc3RzUnVubmVyLl9wYXJzZV9hcmdzKToKKworMjAxMi0xMi0xMyAgRXJpYyBTZWlk
ZWwgIDxlcmljQHdlYmtpdC5vcmc+CisKICAgICAgICAgVW5yZXZpZXdlZCwgZml4aW5nIHR5cG8g
aW4gcHl0aG9uIHVuaXR0ZXN0LgogCiAgICAgICAgIEkgY2hhbmdlZCB0aGUgZGVmYXVsdCBwcm9m
aWxlciBvbiBsaW51eCBmcm9tIHBwcm9mIHRvIHBlcmYgaW4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9wcm9maWxlci5weSBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvY29tbW9uL3N5c3RlbS9wcm9maWxlci5weQppbmRleCA5ODZhZmE3NjI1NTJiNTQ0
ZjdjZDMwNmYxMGYxYjBhOGQ2MmUzYjFkLi5lMzA2N2NjMDdhZWMzYjVhZjM1NWY2ODg1NjU5ZmZm
YTY1N2YzZGJiIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0
ZW0vcHJvZmlsZXIucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVt
L3Byb2ZpbGVyLnB5CkBAIC0yOCwxOSArMjgsNDQgQEAKIAogaW1wb3J0IGxvZ2dpbmcKIGltcG9y
dCByZQoraW1wb3J0IGl0ZXJ0b29scwogCiBfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1l
X18pCiAKIAogY2xhc3MgUHJvZmlsZXJGYWN0b3J5KG9iamVjdCk6CiAgICAgQGNsYXNzbWV0aG9k
Ci0gICAgZGVmIGNyZWF0ZV9wcm9maWxlcihjbHMsIGhvc3QsIGV4ZWN1dGFibGVfcGF0aCwgb3V0
cHV0X2RpciwgaWRlbnRpZmllcj1Ob25lKToKLSAgICAgICAgaWYgaG9zdC5wbGF0Zm9ybS5pc19t
YWMoKToKLSAgICAgICAgICAgIHJldHVybiBJUHJvZmlsZXIoaG9zdCwgZXhlY3V0YWJsZV9wYXRo
LCBvdXRwdXRfZGlyLCBpZGVudGlmaWVyKQotICAgICAgICByZXR1cm4gUGVyZihob3N0LCBleGVj
dXRhYmxlX3BhdGgsIG91dHB1dF9kaXIsIGlkZW50aWZpZXIpCisgICAgZGVmIGNyZWF0ZV9wcm9m
aWxlcihjbHMsIGhvc3QsIGV4ZWN1dGFibGVfcGF0aCwgb3V0cHV0X2RpciwgcHJvZmlsZXJfbmFt
ZT1Ob25lLCBpZGVudGlmaWVyPU5vbmUpOgorICAgICAgICBwcm9maWxlcnMgPSBjbHMucHJvZmls
ZXJzX2Zvcl9wbGF0Zm9ybShob3N0LnBsYXRmb3JtKQorICAgICAgICBpZiBub3QgcHJvZmlsZXJz
OgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgcHJvZmlsZXJfbmFtZSA9IHByb2Zp
bGVyX25hbWUgb3IgY2xzLmRlZmF1bHRfcHJvZmlsZXJfbmFtZShob3N0LnBsYXRmb3JtKQorICAg
ICAgICBwcm9maWxlcl9jbGFzcyA9IG5leHQoaXRlcnRvb2xzLmlmaWx0ZXIobGFtYmRhIHByb2Zp
bGVyOiBwcm9maWxlci5uYW1lID09IHByb2ZpbGVyX25hbWUsIHByb2ZpbGVycyksIE5vbmUpCisg
ICAgICAgIGlmIG5vdCBwcm9maWxlcl9jbGFzczoKKyAgICAgICAgICAgIHJldHVybiBOb25lCisg
ICAgICAgIHJldHVybiBwcm9maWxlcnNbMF0oaG9zdCwgZXhlY3V0YWJsZV9wYXRoLCBvdXRwdXRf
ZGlyLCBpZGVudGlmaWVyKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGRlZmF1bHRfcHJv
ZmlsZXJfbmFtZShjbHMsIHBsYXRmb3JtKToKKyAgICAgICAgcHJvZmlsZXJzID0gY2xzLnByb2Zp
bGVyc19mb3JfcGxhdGZvcm0ocGxhdGZvcm0pCisgICAgICAgIHJldHVybiBwcm9maWxlcnNbMF0u
bmFtZSBpZiBwcm9maWxlcnMgZWxzZSBOb25lCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYg
cHJvZmlsZXJzX2Zvcl9wbGF0Zm9ybShjbHMsIHBsYXRmb3JtKToKKyAgICAgICAgIyBHb29nbGVQ
UHJvZiByZXF1aXJlcyBUQ01hbGxvYy9nb29nbGUtcGVyZnRvb2xzLCBidXQgaXMgYXZhaWxhYmxl
IGV2ZXJ5d2hlcmUuCisgICAgICAgIHByb2ZpbGVyc19ieV9vc19uYW1lID0geworICAgICAgICAg
ICAgJ21hYyc6IFtJUHJvZmlsZXIsIFNhbXBsZSwgR29vZ2xlUFByb2ZdLAorICAgICAgICAgICAg
J2xpbnV4JzogW1BlcmYsIEdvb2dsZVBQcm9mXSwKKyAgICAgICAgICAgICMgTm90ZTogZnJlZWJz
ZCwgd2luMzIgaGF2ZSBubyBwcm9maWxlcnMgZGVmaW5lZCB5ZXQsIHRodXMgLS1wcm9maWxlIHdp
bGwgYmUgaWdub3JlZAorICAgICAgICAgICAgIyBieSBkZWZhdWx0LCBidXQgYSBwcm9maWxlciBj
YW4gYmUgc2VsZWN0ZWQgd2l0aCAtLXByb2ZpbGVyPVBST0ZJTEVSIGV4cGxpY2l0bHkuCisgICAg
ICAgIH0KKyAgICAgICAgcmV0dXJuIHByb2ZpbGVyc19ieV9vc19uYW1lLmdldChwbGF0Zm9ybS5v
c19uYW1lLCBbXSkKIAogCiBjbGFzcyBQcm9maWxlcihvYmplY3QpOgorICAgICMgVXNlZCBieSBQ
cm9maWxlckZhY3RvcnkgdG8gbG9va3VwIGEgcHJvZmlsZXIgZnJvbSB0aGUgLS1wcm9maWxlcj1O
QU1FIG9wdGlvbi4KKyAgICBuYW1lID0gTm9uZQorCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGhv
c3QsIGV4ZWN1dGFibGVfcGF0aCwgb3V0cHV0X2RpciwgaWRlbnRpZmllcj1Ob25lKToKICAgICAg
ICAgc2VsZi5faG9zdCA9IGhvc3QKICAgICAgICAgc2VsZi5fZXhlY3V0YWJsZV9wYXRoID0gZXhl
Y3V0YWJsZV9wYXRoCkBAIC02NSw2ICs5MCw4IEBAIGNsYXNzIFNpbmdsZUZpbGVPdXRwdXRQcm9m
aWxlcihQcm9maWxlcik6CiAKIAogY2xhc3MgR29vZ2xlUFByb2YoU2luZ2xlRmlsZU91dHB1dFBy
b2ZpbGVyKToKKyAgICBuYW1lID0gJ3Bwcm9mJworCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGhv
c3QsIGV4ZWN1dGFibGVfcGF0aCwgb3V0cHV0X2RpciwgaWRlbnRpZmllcj1Ob25lKToKICAgICAg
ICAgc3VwZXIoR29vZ2xlUFByb2YsIHNlbGYpLl9faW5pdF9fKGhvc3QsIGV4ZWN1dGFibGVfcGF0
aCwgb3V0cHV0X2RpciwgInBwcm9mIiwgaWRlbnRpZmllcikKIApAQCAtOTgsNiArMTI1LDggQEAg
Y2xhc3MgR29vZ2xlUFByb2YoU2luZ2xlRmlsZU91dHB1dFByb2ZpbGVyKToKIAogCiBjbGFzcyBQ
ZXJmKFNpbmdsZUZpbGVPdXRwdXRQcm9maWxlcik6CisgICAgbmFtZSA9ICdwZXJmJworCiAgICAg
ZGVmIF9faW5pdF9fKHNlbGYsIGhvc3QsIGV4ZWN1dGFibGVfcGF0aCwgb3V0cHV0X2RpciwgaWRl
bnRpZmllcj1Ob25lKToKICAgICAgICAgc3VwZXIoUGVyZiwgc2VsZikuX19pbml0X18oaG9zdCwg
ZXhlY3V0YWJsZV9wYXRoLCBvdXRwdXRfZGlyLCAiZGF0YSIsIGlkZW50aWZpZXIpCiAgICAgICAg
IHNlbGYuX3BlcmZfcHJvY2VzcyA9IE5vbmUKQEAgLTExMSw3ICsxNDAsNiBAQCBjbGFzcyBQZXJm
KFNpbmdsZUZpbGVPdXRwdXRQcm9maWxlcik6CiAgICAgICAgIGFzc2VydChub3Qgc2VsZi5fcGVy
Zl9wcm9jZXNzIGFuZCBub3Qgc2VsZi5fcGlkX2JlaW5nX3Byb2ZpbGVkKQogICAgICAgICBzZWxm
Ll9waWRfYmVpbmdfcHJvZmlsZWQgPSBwaWQKICAgICAgICAgY21kID0gW3NlbGYuX3BlcmZfcGF0
aCgpLCAicmVjb3JkIiwgIi1nIiwgIi1wIiwgcGlkLCAiLW8iLCBzZWxmLl9vdXRwdXRfcGF0aF0K
LSAgICAgICAgY21kID0gbWFwKHVuaWNvZGUsIGNtZCkKICAgICAgICAgc2VsZi5fcGVyZl9wcm9j
ZXNzID0gc2VsZi5faG9zdC5leGVjdXRpdmUucG9wZW4oY21kKQogCiAgICAgZGVmIF9maXJzdF90
ZW5fbGluZXNfb2ZfcHJvZmlsZShzZWxmLCBwZXJmX291dHB1dCk6CkBAIC0xNDAsNyArMTY4LDI0
IEBAIGNsYXNzIFBlcmYoU2luZ2xlRmlsZU91dHB1dFByb2ZpbGVyKToKICAgICAgICAgcHJpbnQg
JyAnLmpvaW4oW3NlbGYuX3BlcmZfcGF0aCgpLCAncmVwb3J0JywgJy1pJywgc2VsZi5fb3V0cHV0
X3BhdGhdKQogCiAKK2NsYXNzIFNhbXBsZShTaW5nbGVGaWxlT3V0cHV0UHJvZmlsZXIpOgorICAg
IG5hbWUgPSAnc2FtcGxlJworCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGhvc3QsIGV4ZWN1dGFi
bGVfcGF0aCwgb3V0cHV0X2RpciwgaWRlbnRpZmllcj1Ob25lKToKKyAgICAgICAgc3VwZXIoU2Ft
cGxlLCBzZWxmKS5fX2luaXRfXyhob3N0LCBleGVjdXRhYmxlX3BhdGgsIG91dHB1dF9kaXIsICJ0
eHQiLCBpZGVudGlmaWVyKQorICAgICAgICBzZWxmLl9wcm9maWxlcl9wcm9jZXNzID0gTm9uZQor
CisgICAgZGVmIGF0dGFjaF90b19waWQoc2VsZiwgcGlkKToKKyAgICAgICAgY21kID0gWyJzYW1w
bGUiLCBwaWQsICItbWF5RGllIiwgIi1maWxlIiwgc2VsZi5fb3V0cHV0X3BhdGhdCisgICAgICAg
IHNlbGYuX3Byb2ZpbGVyX3Byb2Nlc3MgPSBzZWxmLl9ob3N0LmV4ZWN1dGl2ZS5wb3BlbihjbWQp
CisKKyAgICBkZWYgcHJvZmlsZV9hZnRlcl9leGl0KHNlbGYpOgorICAgICAgICBzZWxmLl9wcm9m
aWxlcl9wcm9jZXNzLndhaXQoKQorCisKIGNsYXNzIElQcm9maWxlcihTaW5nbGVGaWxlT3V0cHV0
UHJvZmlsZXIpOgorICAgIG5hbWUgPSAnaXByb2ZpbGVyJworCiAgICAgZGVmIF9faW5pdF9fKHNl
bGYsIGhvc3QsIGV4ZWN1dGFibGVfcGF0aCwgb3V0cHV0X2RpciwgaWRlbnRpZmllcj1Ob25lKToK
ICAgICAgICAgc3VwZXIoSVByb2ZpbGVyLCBzZWxmKS5fX2luaXRfXyhob3N0LCBleGVjdXRhYmxl
X3BhdGgsIG91dHB1dF9kaXIsICJkdHBzIiwgaWRlbnRpZmllcikKICAgICAgICAgc2VsZi5fcHJv
ZmlsZXJfcHJvY2VzcyA9IE5vbmUKQEAgLTE1MSw3ICsxOTYsNiBAQCBjbGFzcyBJUHJvZmlsZXIo
U2luZ2xlRmlsZU91dHB1dFByb2ZpbGVyKToKICAgICAgICAgZnMgPSBzZWxmLl9ob3N0LmZpbGVz
eXN0ZW0KICAgICAgICAgY21kID0gWyJpcHJvZmlsZXIiLCAiLXRpbWVwcm9maWxlciIsICItYSIs
IHBpZCwKICAgICAgICAgICAgICAgICAiLWQiLCBmcy5kaXJuYW1lKHNlbGYuX291dHB1dF9wYXRo
KSwgIi1vIiwgZnMuc3BsaXRleHQoZnMuYmFzZW5hbWUoc2VsZi5fb3V0cHV0X3BhdGgpKVswXV0K
LSAgICAgICAgY21kID0gbWFwKHVuaWNvZGUsIGNtZCkKICAgICAgICAgIyBGSVhNRTogQ29uc2lk
ZXIgY2FwdHVyaW5nIGluc3RlYWQgb2YgbGV0dGluZyBpbnN0cnVtZW50cyBzcGFtIHRvIHN0ZGVy
ciBkaXJlY3RseS4KICAgICAgICAgc2VsZi5fcHJvZmlsZXJfcHJvY2VzcyA9IHNlbGYuX2hvc3Qu
ZXhlY3V0aXZlLnBvcGVuKGNtZCkKIApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9jb21tb24vc3lzdGVtL3Byb2ZpbGVyX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9jb21tb24vc3lzdGVtL3Byb2ZpbGVyX3VuaXR0ZXN0LnB5CmluZGV4IDc5NjdjYTg5MTIw
NzY4MjdlNjQzMzRjNmMzYmQ2MTBhNmE5ZjA0ZWUuLmVkODU2N2ZiZmEwNTA5NTAzYjMwMWM5N2Rm
ZjZiYWZiZDkwZmI5NGUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9u
L3N5c3RlbS9wcm9maWxlcl91bml0dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2NvbW1vbi9zeXN0ZW0vcHJvZmlsZXJfdW5pdHRlc3QucHkKQEAgLTI4LDIzICsyOCwzOSBAQAog
CiBpbXBvcnQgdW5pdHRlc3QKIAorZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLnBsYXRmb3Jt
aW5mb19tb2NrIGltcG9ydCBNb2NrUGxhdGZvcm1JbmZvCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5z
eXN0ZW0uc3lzdGVtaG9zdF9tb2NrIGltcG9ydCBNb2NrU3lzdGVtSG9zdAogCiBmcm9tIC5wcm9m
aWxlciBpbXBvcnQgUHJvZmlsZXJGYWN0b3J5LCBHb29nbGVQUHJvZgogCiAKIGNsYXNzIFByb2Zp
bGVyRmFjdG9yeVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGRlZiB0ZXN0X2Jhc2ljKHNl
bGYpOgorICAgIGRlZiBfYXNzZXJ0X2RlZmF1bHRfcHJvZmlsZXJfbmFtZShzZWxmLCBvc19uYW1l
LCBleHBlY3RlZF9wcm9maWxlcl9uYW1lKToKKyAgICAgICAgcHJvZmlsZXJfbmFtZSA9IFByb2Zp
bGVyRmFjdG9yeS5kZWZhdWx0X3Byb2ZpbGVyX25hbWUoTW9ja1BsYXRmb3JtSW5mbyhvc19uYW1l
KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocHJvZmlsZXJfbmFtZSwgZXhwZWN0ZWRfcHJv
ZmlsZXJfbmFtZSkKKworICAgIGRlZiB0ZXN0X2RlZmF1bHRfcHJvZmlsZXJzKHNlbGYpOgorICAg
ICAgICBzZWxmLl9hc3NlcnRfZGVmYXVsdF9wcm9maWxlcl9uYW1lKCdtYWMnLCAnaXByb2ZpbGVy
JykKKyAgICAgICAgc2VsZi5fYXNzZXJ0X2RlZmF1bHRfcHJvZmlsZXJfbmFtZSgnbGludXgnLCAn
cGVyZicpCisgICAgICAgIHNlbGYuX2Fzc2VydF9kZWZhdWx0X3Byb2ZpbGVyX25hbWUoJ3dpbjMy
JywgTm9uZSkKKyAgICAgICAgc2VsZi5fYXNzZXJ0X2RlZmF1bHRfcHJvZmlsZXJfbmFtZSgnZnJl
ZWJzZCcsIE5vbmUpCisKKyAgICBkZWYgdGVzdF9kZWZhdWx0X3Byb2ZpbGVyX291dHB1dChzZWxm
KToKICAgICAgICAgaG9zdCA9IE1vY2tTeXN0ZW1Ib3N0KCkKICAgICAgICAgc2VsZi5hc3NlcnRG
YWxzZShob3N0LmZpbGVzeXN0ZW0uZXhpc3RzKCIvdG1wL291dHB1dCIpKQorCisgICAgICAgICMg
RGVmYXVsdCBtb2NrcyBhcmUgTWFjLCBzbyBpcHJvZmlsZSBzaG91bGQgYmUgZGVmYXVsdC4KICAg
ICAgICAgcHJvZmlsZXIgPSBQcm9maWxlckZhY3RvcnkuY3JlYXRlX3Byb2ZpbGVyKGhvc3QsICcv
YmluL2V4ZWN1dGFibGUnLCAnL3RtcC9vdXRwdXQnKQogICAgICAgICBzZWxmLmFzc2VydFRydWUo
aG9zdC5maWxlc3lzdGVtLmV4aXN0cygiL3RtcC9vdXRwdXQiKSkKICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbHMocHJvZmlsZXIuX291dHB1dF9wYXRoLCAiL3RtcC9vdXRwdXQvdGVzdC5kdHBzIikK
IAorICAgICAgICAjIExpbnV4IGRlZmF1bHRzIHRvIHBlcmYuCiAgICAgICAgIGhvc3QucGxhdGZv
cm0ub3NfbmFtZSA9ICdsaW51eCcKICAgICAgICAgcHJvZmlsZXIgPSBQcm9maWxlckZhY3Rvcnku
Y3JlYXRlX3Byb2ZpbGVyKGhvc3QsICcvYmluL2V4ZWN1dGFibGUnLCAnL3RtcC9vdXRwdXQnKQog
ICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhwcm9maWxlci5fb3V0cHV0X3BhdGgsICIvdG1wL291
dHB1dC90ZXN0LmRhdGEiKQogCisKK2NsYXNzIEdvb2dsZVBQcm9mVGVzdCh1bml0dGVzdC5UZXN0
Q2FzZSk6CiAgICAgZGVmIHRlc3RfcHByb2Zfb3V0cHV0X3JlZ2V4cChzZWxmKToKICAgICAgICAg
cHByb2Zfb3V0cHV0ID0gIiIiCiBzb21ldGltZXMKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZHJpdmVyLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvcG9ydC9kcml2ZXIucHkKaW5kZXggMmJhZjU5ZTk0NWIzYzEzMGQ2
YjQ2ODI0NDRiN2FkODVhNjNlYWRhMi4uNzY4NGE5ZDg0ZjRmODllYjQ3MGJkMDE0MTlkNDU5MjA5
MjYwZGIzZCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC9kcml2ZXIucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC9kcml2ZXIucHkKQEAgLTE0Myw3ICsxNDMsOSBAQCBjbGFzcyBEcml2ZXIob2JqZWN0KToK
IAogICAgICAgICBzZWxmLl9tZWFzdXJlbWVudHMgPSB7fQogICAgICAgICBpZiBzZWxmLl9wb3J0
LmdldF9vcHRpb24oInByb2ZpbGUiKToKLSAgICAgICAgICAgIHNlbGYuX3Byb2ZpbGVyID0gUHJv
ZmlsZXJGYWN0b3J5LmNyZWF0ZV9wcm9maWxlcihzZWxmLl9wb3J0Lmhvc3QsIHNlbGYuX3BvcnQu
X3BhdGhfdG9fZHJpdmVyKCksIHNlbGYuX3BvcnQucmVzdWx0c19kaXJlY3RvcnkoKSkKKyAgICAg
ICAgICAgIHByb2ZpbGVyX25hbWUgPSBzZWxmLl9wb3J0LmdldF9vcHRpb24oInByb2ZpbGVyIikK
KyAgICAgICAgICAgIHNlbGYuX3Byb2ZpbGVyID0gUHJvZmlsZXJGYWN0b3J5LmNyZWF0ZV9wcm9m
aWxlcihzZWxmLl9wb3J0Lmhvc3QsCisgICAgICAgICAgICAgICAgc2VsZi5fcG9ydC5fcGF0aF90
b19kcml2ZXIoKSwgc2VsZi5fcG9ydC5yZXN1bHRzX2RpcmVjdG9yeSgpLCBwcm9maWxlcl9uYW1l
KQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc2VsZi5fcHJvZmlsZXIgPSBOb25lCiAKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcGVyZm9ybWFuY2VfdGVzdHMvcGVyZnRl
c3RzcnVubmVyLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wZXJmb3JtYW5jZV90ZXN0cy9w
ZXJmdGVzdHNydW5uZXIucHkKaW5kZXggMmEyMWFlMzU4MDJhY2EzNTM2NDhlYTFlNTVmODg4YmMw
NWQ4ZWE4NS4uNmU1Y2JiNTBiNWNlMjRmM2I1NTVkODJjMzRjYzUwODkwMjdkZDBlMCAxMDA2NDQK
LS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wZXJmb3JtYW5jZV90ZXN0cy9wZXJmdGVzdHNy
dW5uZXIucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wZXJmb3JtYW5jZV90ZXN0cy9w
ZXJmdGVzdHNydW5uZXIucHkKQEAgLTEyMiw2ICsxMjIsOCBAQCBjbGFzcyBQZXJmVGVzdHNSdW5u
ZXIob2JqZWN0KToKICAgICAgICAgICAgICAgICBoZWxwPSJSdW4gYWxsIHRlc3RzLCBpbmNsdWRp
bmcgdGhlIG9uZXMgaW4gdGhlIFNraXBwZWQgbGlzdC4iKSwKICAgICAgICAgICAgIG9wdHBhcnNl
Lm1ha2Vfb3B0aW9uKCItLXByb2ZpbGUiLCBhY3Rpb249InN0b3JlX3RydWUiLAogICAgICAgICAg
ICAgICAgIGhlbHA9Ik91dHB1dCBwZXItdGVzdCBwcm9maWxlIGluZm9ybWF0aW9uLiIpLAorICAg
ICAgICAgICAgb3B0cGFyc2UubWFrZV9vcHRpb24oIi0tcHJvZmlsZXIiLCBhY3Rpb249InN0b3Jl
IiwKKyAgICAgICAgICAgICAgICBoZWxwPSJPdXRwdXQgcGVyLXRlc3QgcHJvZmlsZSBpbmZvcm1h
dGlvbiwgdXNpbmcgdGhlIHNwZWNpZmllZCBwcm9maWxlci4iKSwKICAgICAgICAgICAgIF0KICAg
ICAgICAgcmV0dXJuIG9wdHBhcnNlLk9wdGlvblBhcnNlcihvcHRpb25fbGlzdD0ocGVyZl9vcHRp
b25fbGlzdCkpLnBhcnNlX2FyZ3MoYXJncykKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>