<?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>49773</bug_id>
          
          <creation_ts>2010-11-18 17:27:21 -0800</creation_ts>
          <short_desc>nrwt multiprocessing - clean up test sharding a bit, add --workers-are flag</short_desc>
          <delta_ts>2010-11-23 16:46:07 -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>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>
          
          <blocked>49566</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dirk Pranke">dpranke</reporter>
          <assigned_to name="Dirk Pranke">dpranke</assigned_to>
          <cc>abarth</cc>
    
    <cc>eric</cc>
    
    <cc>hayato</cc>
    
    <cc>ojan</cc>
    
    <cc>tony</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>311198</commentid>
    <comment_count>0</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-11-18 17:27:21 -0800</bug_when>
    <thetext>nrwt multiprocessing - clean up test sharding a bit, add --workers-are flag</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>311204</commentid>
    <comment_count>1</comment_count>
      <attachid>74329</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-11-18 17:31:39 -0800</bug_when>
    <thetext>Created attachment 74329
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>311212</commentid>
    <comment_count>2</comment_count>
      <attachid>74330</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-11-18 17:46:05 -0800</bug_when>
    <thetext>Created attachment 74330
fix typos</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>311217</commentid>
    <comment_count>3</comment_count>
      <attachid>74333</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-11-18 18:01:28 -0800</bug_when>
    <thetext>Created attachment 74333
two more minor omissions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>311795</commentid>
    <comment_count>4</comment_count>
      <attachid>74453</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-11-19 18:05:34 -0800</bug_when>
    <thetext>Created attachment 74453
merge to tip of tree (r72458)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>311811</commentid>
    <comment_count>5</comment_count>
      <attachid>74453</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-11-19 18:51:28 -0800</bug_when>
    <thetext>Comment on attachment 74453
merge to tip of tree (r72458)

r- only for not validating possible values of workers-are.  The rest is just bikeshedding about naming, but I think we can come up with something better than workers_are.

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

&gt; WebKitTools/Scripts/webkitpy/layout_tests/run_webkit_tests.py:498
&gt; +    def _shard_tests(self, test_files, single_threaded):

Maybe single_group instead of single_threaded since this is True if experiment_fully_parallel is true?

&gt; WebKitTools/Scripts/webkitpy/layout_tests/run_webkit_tests.py:586
&gt; -        &quot;&quot;&quot;Returns whether we should run all the tests in the main thread.&quot;&quot;&quot;
&gt; +        &quot;&quot;&quot;Returns whether to pluralize log messages about DRT instances.&quot;&quot;&quot;

The new docstring is confusing to me.  I&apos;m not sure this function even needs a docstring.

&gt; WebKitTools/Scripts/webkitpy/layout_tests/run_webkit_tests.py:1591
&gt; +        optparse.make_option(&quot;--workers-are&quot;, action=&quot;store&quot;,
&gt; +                             default=&quot;threads&quot;,
&gt; +                             help=&quot;controls worker model. Valid values are &quot;
&gt; +                             &quot;&apos;inline&apos; and &apos;threads&apos; (default).&quot;),

As mentioned in bug 49779, I think workers-are is a weird variable name.  I think concurrency-{mode,type,model} would be more descriptive, but hard to type as a command line flag.  Maybe --concurrency=inline (or single) and --concurrency=threads isn&apos;t too bad. The variable could still be concurrency_mode.  Maybe worker_mode, but that&apos;s pretty vague too.

To be clear, this means you could have flags for inline and experimental-fully-parallel?  Maybe experiment-fully-parallel should be rolled into this enum to avoid conflicting flags (separate change, of course)?

Also, can we check this somewhere (i.e., raise an exception if it&apos;s not inline or threads)?  It looks like you can add custom types to optparse, but that might not be worth it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>312623</commentid>
    <comment_count>6</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-11-22 17:34:49 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=74453&amp;action=review
&gt; 
&gt; &gt; WebKitTools/Scripts/webkitpy/layout_tests/run_webkit_tests.py:498
&gt; &gt; +    def _shard_tests(self, test_files, single_threaded):
&gt; 
&gt; Maybe single_group instead of single_threaded since this is True if experiment_fully_parallel is true?
&gt;

It&apos;s actually one test per group, so N groups, not one. Although it turns out that we now lump all of the http and websocket tests into one group even in --experimental-fully-parallel mode,  which sucks.

I&apos;ve changed the parameter name to &quot;use_real_shards&quot;, which is maybe a bit more descriptive, and updated the docstring.

&gt; &gt; WebKitTools/Scripts/webkitpy/layout_tests/run_webkit_tests.py:586
&gt; &gt; -        &quot;&quot;&quot;Returns whether we should run all the tests in the main thread.&quot;&quot;&quot;
&gt; &gt; +        &quot;&quot;&quot;Returns whether to pluralize log messages about DRT instances.&quot;&quot;&quot;
&gt; 
&gt; The new docstring is confusing to me.  I&apos;m not sure this function even needs a docstring.
&gt; 

Agreed. I&apos;ve renamed to this to _num_workers() and made it return the number instead of a boolean.

&gt; &gt; WebKitTools/Scripts/webkitpy/layout_tests/run_webkit_tests.py:1591
&gt; &gt; +        optparse.make_option(&quot;--workers-are&quot;, action=&quot;store&quot;,
&gt; &gt; +                             default=&quot;threads&quot;,
&gt; &gt; +                             help=&quot;controls worker model. Valid values are &quot;
&gt; &gt; +                             &quot;&apos;inline&apos; and &apos;threads&apos; (default).&quot;),
&gt; 
&gt; As mentioned in bug 49779, I think workers-are is a weird variable name.

I&apos;ve changed this to --worker-model and added validation tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>312624</commentid>
    <comment_count>7</comment_count>
      <attachid>74621</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-11-22 17:40:40 -0800</bug_when>
    <thetext>Created attachment 74621
update w/ review feedback, including renaming --workers-are to --worker-model</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>312636</commentid>
    <comment_count>8</comment_count>
      <attachid>74621</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-11-22 18:04:29 -0800</bug_when>
    <thetext>Comment on attachment 74621
update w/ review feedback, including renaming --workers-are to --worker-model

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

&gt; WebKitTools/Scripts/webkitpy/layout_tests/run_webkit_tests.py:-605
&gt; -        # FIXME: We should use webkitpy.tool.grammar.pluralize here.

Nit: Seems like we should keep this comment, no?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>312639</commentid>
    <comment_count>9</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-11-22 18:14:38 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 74621 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=74621&amp;action=review
&gt; 
&gt; &gt; WebKitTools/Scripts/webkitpy/layout_tests/run_webkit_tests.py:-605
&gt; &gt; -        # FIXME: We should use webkitpy.tool.grammar.pluralize here.
&gt; 
&gt; Nit: Seems like we should keep this comment, no?

IMO, no. That routine is way simplistic and only handles adding an &quot;s&quot; onto the end of a string. I don&apos;t think it adds enough value to be worth using.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>312640</commentid>
    <comment_count>10</comment_count>
      <attachid>74621</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-11-22 18:18:24 -0800</bug_when>
    <thetext>Comment on attachment 74621
update w/ review feedback, including renaming --workers-are to --worker-model

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

&gt;&gt;&gt; WebKitTools/Scripts/webkitpy/layout_tests/run_webkit_tests.py:-605
&gt;&gt;&gt; -        # FIXME: We should use webkitpy.tool.grammar.pluralize here.
&gt;&gt; 
&gt;&gt; Nit: Seems like we should keep this comment, no?
&gt; 
&gt; IMO, no. That routine is way simplistic and only handles adding an &quot;s&quot; onto the end of a string. I don&apos;t think it adds enough value to be worth using.

The idea is to route all these calls through that API so we can improve our pluralization handling in one place instead of having it copy/pasted around the codebase.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>312643</commentid>
    <comment_count>11</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-11-22 18:22:08 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 74621 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=74621&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; WebKitTools/Scripts/webkitpy/layout_tests/run_webkit_tests.py:-605
&gt; &gt;&gt;&gt; -        # FIXME: We should use webkitpy.tool.grammar.pluralize here.
&gt; &gt;&gt; 
&gt; &gt;&gt; Nit: Seems like we should keep this comment, no?
&gt; &gt; 
&gt; &gt; IMO, no. That routine is way simplistic and only handles adding an &quot;s&quot; onto the end of a string. I don&apos;t think it adds enough value to be worth using.
&gt; 
&gt; The idea is to route all these calls through that API so we can improve our pluralization handling in one place instead of having it copy/pasted around the codebase.

Well, sure. But it&apos;s not at all clear to me that building a generic pluralization routine is worth it for the types of code we&apos;re writing in webkitpy, and without having a generic, sufficiently flexible scheme, IMO using this routine some places and not others is just confusing.

I am actually speaking from experience here - I tried to use pluralize, and I even tried to modify pluralize to be generic enough to be useful for the places I would want to use it, and it was turning out to be way more work than just handling the pluralization directly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>312650</commentid>
    <comment_count>12</comment_count>
      <attachid>74621</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-11-22 18:43:24 -0800</bug_when>
    <thetext>Comment on attachment 74621
update w/ review feedback, including renaming --workers-are to --worker-model

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

&gt;&gt;&gt;&gt;&gt; WebKitTools/Scripts/webkitpy/layout_tests/run_webkit_tests.py:-605
&gt;&gt;&gt;&gt;&gt; -        # FIXME: We should use webkitpy.tool.grammar.pluralize here.
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; Nit: Seems like we should keep this comment, no?
&gt;&gt;&gt; 
&gt;&gt;&gt; IMO, no. That routine is way simplistic and only handles adding an &quot;s&quot; onto the end of a string. I don&apos;t think it adds enough value to be worth using.
&gt;&gt; 
&gt;&gt; The idea is to route all these calls through that API so we can improve our pluralization handling in one place instead of having it copy/pasted around the codebase.
&gt; 
&gt; Well, sure. But it&apos;s not at all clear to me that building a generic pluralization routine is worth it for the types of code we&apos;re writing in webkitpy, and without having a generic, sufficiently flexible scheme, IMO using this routine some places and not others is just confusing.
&gt; 
&gt; I am actually speaking from experience here - I tried to use pluralize, and I even tried to modify pluralize to be generic enough to be useful for the places I would want to use it, and it was turning out to be way more work than just handling the pluralization directly.

Maybe the best thing for now is to leave the FIXME and someone can come by later and fix it?  If we were writing in ruby-on-rails, we&apos;d use the built-in pluralize function because it&apos;s pretty awesome.  Someday, it would be nice to have an equally awesome pluralize function, either via some library or by writing it ourselves.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>312655</commentid>
    <comment_count>13</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-11-22 19:02:40 -0800</bug_when>
    <thetext>&gt; Maybe the best thing for now is to leave the FIXME and someone can come by later and fix it?  If we were writing in ruby-on-rails, we&apos;d use the built-in pluralize function because it&apos;s pretty awesome.  Someday, it would be nice to have an equally awesome pluralize function, either via some library or by writing it ourselves.

I agree that RoR&apos;s pluralize is kind of cool in a &quot;gee-whiz&quot; way, but AFAIK even the advocates of that particular feature will agree that it only works in some cases and is not intended to work for everything everywhere. It only really works if you&apos;re just trying to pluralize a noun.

Not to put on my Old Man Hat or anything, but back in the day when I worked at Oracle -- where they used to take language translation deadly seriously and every log message that your code might output needed to be customizable -- they had a hard rule that singular and plural forms of messages needed to actually be two different strings, because printing intelligible messages just isn&apos;t as simple as pluralizing a noun.

The particular example that stopped me in this code is in the next diff block (paraphrasing):

if num_workers == 1:
   print_config(&quot;Running one DRT&quot;)
else:
   print_config(&quot;Running %d DRTs in parallel&quot; % num_workers)

Not only do these message shift from spelled-out to numeric indicators, but it adds additional text onto the end. I use &quot;one&quot; because it&apos;s more readable than &quot;1&quot; in most cases. I claim that writing a pluralization routine that will do the right thing here is going to be more trouble than it&apos;s worth.

And, given the above, I don&apos;t want to use pluralization in one place and not in others in the same file, especially for what is virtually the same message. Which is not necessarily to say that we should never have a pluralize function, or that other code shouldn&apos;t be able to use it for other situations.

Given all that, the point of me removing the FIXME is that I did look into this, and decided that I didn&apos;t want to do it. It doesn&apos;t seem like leaving FIXMEs scattered through the code in case we decide to change decisions is really the way we write code.

Of course, one could argue that I shouldn&apos;t have deleted this line in a seemingly unrelated patch, but that&apos;s a whole different argument :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>312959</commentid>
    <comment_count>14</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-11-23 11:59:44 -0800</bug_when>
    <thetext>I apologize if my previous comments were overly harsh. Long day yesterday ... let me try again.

RoR&apos;s pluralize() method came about as a way to solve the problem that arises when you&apos;re trying build ORM tools, and you need to map between objects (conventionally named in the singular) and tables (conventionally plural). These things are typically single nouns, and the grammar doesn&apos;t have to be perfect but can usually be good enough, which is why it makes sense to implement it.

I don&apos;t think a pluralize()-type approach makes nearly as much sense for human-destined messaging. First, for the reasons above (the messages often differ in ways not easily handled by a simple routine), and second, because actually having the branch in the code is useful because then code coverage tools can highlight missed branches and it can help to identify test cases.

So, I don&apos;t think it makes a huge amount of sense to use the routine here, and I&apos;d like to remove the comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>312960</commentid>
    <comment_count>15</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-11-23 12:09:03 -0800</bug_when>
    <thetext>But it&apos;s hardly an issue worth arguing about ...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>313067</commentid>
    <comment_count>16</comment_count>
      <attachid>74621</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-11-23 16:15:28 -0800</bug_when>
    <thetext>Comment on attachment 74621
update w/ review feedback, including renaming --workers-are to --worker-model

Clearing flags on attachment: 74621

Committed r72641: &lt;http://trac.webkit.org/changeset/72641&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>313068</commentid>
    <comment_count>17</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-11-23 16:15:34 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>313084</commentid>
    <comment_count>18</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-11-23 16:46:07 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; But it&apos;s hardly an issue worth arguing about ...

And in retrospect this afternoon, it&apos;s not actually unreasonable for that line of code, although I continue to think we shouldn&apos;t use it in general (e.g., in the other example).

I must&apos;ve gotten up on the wrong side of the bed last night, or something. Sorry all.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>74329</attachid>
            <date>2010-11-18 17:31:39 -0800</date>
            <delta_ts>2010-11-18 17:46:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-49773-20101118173138.patch</filename>
            <type>text/plain</type>
            <size>10757</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCAwYjQ4ZWJiMmVmY2RmYmQ1ZGRiYThlOTBlMzhiMGJkYTZjMzExOGY1Li5iN2Q3OGE5
YzA2YTBlODk3ZjE2YzNiNDZkZmI5ODA0ZDkxM2MzNjFhIDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjMgQEAK
IDIwMTAtMTEtMTggIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CiAKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBjbGVh
bnMgdXAgdGhlIGxvZ2ljIHVzZWQgdG8gc2hhcmQgdGVzdHMgaW50byBncm91cHMgYQorICAgICAg
ICBiaXQgYW5kIGFkZHMgdGhlIC0td29ya2Vycy1hcmUgZmxhZyB0byBOUldULiBUaGUgZmxhZyBp
cyBvbmx5CisgICAgICAgIHVzZWQgYXQgdGhlIG1vbWVudCB0byBjb250cm9sIHdoZXRoZXIgdG8g
cnVuIHNpbmdsZS10aHJlYWRlZCBvcgorICAgICAgICBub3QsIGJ1dCBldmVudHVhbGx5IHdpbGwg
YWxzbyBhbGxvdyB0b2dnbGluZyBiZXR3ZWVuIHRocmVhZHMgYW5kCisgICAgICAgIHByb2Nlc3Nl
cy4KKworICAgICAgICBBbHNvIGFkZCBhIG1pbm9yIGNsZWFudXAgd2l0aCBfdGVzdF9pc19zbG93
KCksIHdoaWNoIGp1c3QKKyAgICAgICAgZWxpbWluYXRlcyBzb21lIHJlcGV0aXRpb24gYW5kIGdp
dmVzIHNsaWdodGx5IGJldHRlciBlbmNhcHN1bGF0aW9uLgorCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00OTc3MworCisgICAgICAgICogU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weToKKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzX3VuaXR0ZXN0LnB5Ogor
CisyMDEwLTExLTE4ICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgorCiAgICAg
ICAgIFJldmlld2VkIGJ5IFRvbnkgQ2hhbmcuCiAKICAgICAgICAgbmV3LXJ1bi13ZWJraXQtdGVz
dHM6IGNyZWF0ZSBmaXJzdCBwYXJ0IG9mICdtZXNzYWdlX2Jyb2tlcicgY2xhc3MgZm9yIG11bHRp
cHJvY2Vzc2luZyBmaXhlcwpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMucHkKaW5kZXggYjM4MDRmNDcw
YmM2M2ZiM2Q1YjdiNjBlYWY3NjkzYTNkOTk4OWE3MS4uMjFkZWJkNjdlNzc1NDVkOTJlMzk4Njk2
YWNjMGYxY2UzZTMyMjRjNSAxMDA3NTUKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weQorKysgYi9XZWJLaXRUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5CkBAIC00ODksNyAr
NDg5LDcgQEAgY2xhc3MgVGVzdFJ1bm5lcjoKICAgICAgICAgIiIiUmV0dXJucyB0aGUgYXBwcm9w
cmlhdGUgVGVzdElucHV0IG9iamVjdCBmb3IgdGhlIGZpbGUuIE1vc3RseSB0aGlzCiAgICAgICAg
IGlzIHVzZWQgZm9yIGxvb2tpbmcgdXAgdGhlIHRpbWVvdXQgdmFsdWUgKGluIG1zKSB0byB1c2Ug
Zm9yIHRoZSBnaXZlbgogICAgICAgICB0ZXN0LiIiIgotICAgICAgICBpZiBzZWxmLl9leHBlY3Rh
dGlvbnMuaGFzX21vZGlmaWVyKHRlc3RfZmlsZSwgdGVzdF9leHBlY3RhdGlvbnMuU0xPVyk6Cisg
ICAgICAgIGlmIHNlbGYuX3Rlc3RfaXNfc2xvdyh0ZXN0X2ZpbGUpOgogICAgICAgICAgICAgcmV0
dXJuIFRlc3RJbnB1dCh0ZXN0X2ZpbGUsIHNlbGYuX29wdGlvbnMuc2xvd190aW1lX291dF9tcykK
ICAgICAgICAgcmV0dXJuIFRlc3RJbnB1dCh0ZXN0X2ZpbGUsIHNlbGYuX29wdGlvbnMudGltZV9v
dXRfbXMpCiAKQEAgLTQ5OSwyMyArNDk5LDIzIEBAIGNsYXNzIFRlc3RSdW5uZXI6CiAgICAgICAg
IHNwbGl0X3BhdGggPSB0ZXN0X2ZpbGUuc3BsaXQob3Muc2VwKQogICAgICAgICByZXR1cm4gJ2h0
dHAnIGluIHNwbGl0X3BhdGggb3IgJ3dlYnNvY2tldCcgaW4gc3BsaXRfcGF0aAogCi0gICAgZGVm
IF9nZXRfdGVzdF9maWxlX3F1ZXVlKHNlbGYsIHRlc3RfZmlsZXMpOgotICAgICAgICAiIiJDcmVh
dGUgdGhlIHRocmVhZCBzYWZlIHF1ZXVlIG9mIGxpc3RzIG9mICh0ZXN0IGZpbGVuYW1lcywgdGVz
dCBVUklzKQotICAgICAgICB0dXBsZXMuIEVhY2ggVGVzdFNoZWxsVGhyZWFkIHB1bGxzIGEgbGlz
dCBmcm9tIHRoaXMgcXVldWUgYW5kIHJ1bnMKLSAgICAgICAgdGhvc2UgdGVzdHMgaW4gb3JkZXIg
YmVmb3JlIGdyYWJiaW5nIHRoZSBuZXh0IGF2YWlsYWJsZSBsaXN0LgorICAgIGRlZiBfdGVzdF9p
c19zbG93KHNlbGYsIHRlc3RfZmlsZSk6CisgICAgICAgIHJldHVybiBzZWxmLl9leHBlY3RhdGlv
bnMuaGFzX21vZGlmaWVyKHRlc3RfZmlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdGVzdF9leHBlY3RhdGlvbnMuU0xPVykKIAotICAgICAgICBTaGFy
ZCB0aGUgbGlzdHMgYnkgZGlyZWN0b3J5LiBUaGlzIGhlbHBzIGVuc3VyZSB0aGF0IHRlc3RzIHRo
YXQgZGVwZW5kCi0gICAgICAgIG9uIGVhY2ggb3RoZXIgKGFrYSBiYWQgdGVzdHMhKSBjb250aW51
ZSB0byBydW4gdG9nZXRoZXIgYXMgbW9zdAotICAgICAgICBjcm9zcy10ZXN0cyBkZXBlbmRlbmNp
ZXMgdGVuZCB0byBvY2N1ciB3aXRoaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICAgIGRlZiBfc2hh
cmRfdGVzdHMoc2VsZiwgdGVzdF9maWxlcywgc2luZ2xlX3RocmVhZGVkKToKKyAgICAgICAgIiIi
R3JvdXBzIHRlc3RzIGludG8gYmF0Y2hlcy4KKyAgICAgICAgVGhpcyBoZWxwcyBlbnN1cmUgdGhh
dCB0ZXN0cyB0aGF0IGRlcGVuZCBvbiBlYWNoIG90aGVyIChha2EgYmFkIHRlc3RzISkKKyAgICAg
ICAgY29udGludWUgdG8gcnVuIHRvZ2V0aGVyIGFzIG1vc3QgY3Jvc3MtdGVzdHMgZGVwZW5kZW5j
aWVzIHRlbmQgdG8KKyAgICAgICAgb2NjdXIgd2l0aGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KIAog
ICAgICAgICBSZXR1cm46Ci0gICAgICAgICAgVGhlIFF1ZXVlIG9mIGxpc3RzIG9mIFRlc3RJbnB1
dCBvYmplY3RzLgorICAgICAgICAgICAgQSBsaXN0IG9mIGxpc3RzIG9mIFRlc3RJbnB1dCBvYmpl
Y3RzLgogICAgICAgICAiIiIKIAogICAgICAgICB0ZXN0X2xpc3RzID0gW10KICAgICAgICAgdGVz
dHNfdG9faHR0cF9sb2NrID0gW10KLSAgICAgICAgaWYgKHNlbGYuX29wdGlvbnMuZXhwZXJpbWVu
dGFsX2Z1bGx5X3BhcmFsbGVsIG9yCi0gICAgICAgICAgICBzZWxmLl9pc19zaW5nbGVfdGhyZWFk
ZWQoKSk6CisgICAgICAgIGlmIHNpbmdsZV90aHJlYWRlZDoKICAgICAgICAgICAgIGZvciB0ZXN0
X2ZpbGUgaW4gdGVzdF9maWxlczoKICAgICAgICAgICAgICAgICB0ZXN0X2lucHV0ID0gc2VsZi5f
Z2V0X3Rlc3RfaW5wdXRfZm9yX2ZpbGUodGVzdF9maWxlKQogICAgICAgICAgICAgICAgIGlmIHNl
bGYuX3Rlc3RfcmVxdWlyZXNfbG9jayh0ZXN0X2ZpbGUpOgpAQCAtNTU0LDEwICs1NTQsNyBAQCBj
bGFzcyBUZXN0UnVubmVyOgogICAgICAgICAgICAgdGVzdHNfdG9faHR0cF9sb2NrLnJldmVyc2Uo
KQogICAgICAgICAgICAgdGVzdF9saXN0cy5pbnNlcnQoMCwgKCJ0ZXN0c190b19odHRwX2xvY2si
LCB0ZXN0c190b19odHRwX2xvY2spKQogCi0gICAgICAgIGZpbGVuYW1lX3F1ZXVlID0gUXVldWUu
UXVldWUoKQotICAgICAgICBmb3IgaXRlbSBpbiB0ZXN0X2xpc3RzOgotICAgICAgICAgICAgZmls
ZW5hbWVfcXVldWUucHV0KGl0ZW0pCi0gICAgICAgIHJldHVybiBmaWxlbmFtZV9xdWV1ZQorICAg
ICAgICByZXR1cm4gdGVzdF9saXN0cwogCiAgICAgZGVmIF9nZXRfdGVzdF9hcmdzKHNlbGYsIGlu
ZGV4KToKICAgICAgICAgIiIiUmV0dXJucyB0aGUgdHVwbGUgb2YgYXJndW1lbnRzIGZvciB0ZXN0
cyBhbmQgZm9yIER1bXBSZW5kZXJUcmVlLiIiIgpAQCAtNTg1LDExICs1ODIsMTYgQEAgY2xhc3Mg
VGVzdFJ1bm5lcjoKICAgICAgICAgUmV0dXJuOgogICAgICAgICAgIFRoZSBsaXN0IG9mIHRocmVh
ZHMuCiAgICAgICAgICIiIgotICAgICAgICBmaWxlbmFtZV9xdWV1ZSA9IHNlbGYuX2dldF90ZXN0
X2ZpbGVfcXVldWUodGVzdF9maWxlcykKKyAgICAgICAgbnVtX3dvcmtlcnMgPSBpbnQoc2VsZi5f
b3B0aW9ucy5jaGlsZF9wcm9jZXNzZXMpCisgICAgICAgIHRlc3RfbGlzdHMgPSBzZWxmLl9zaGFy
ZF90ZXN0cyh0ZXN0X2ZpbGVzLAorICAgICAgICAgICAgbnVtX3dvcmtlcnMgPT0gMSBvciBzZWxm
Ll9vcHRpb25zLmV4cGVyaW1lbnRhbF9mdWxseV9wYXJhbGxlbCkKKyAgICAgICAgZmlsZW5hbWVf
cXVldWUgPSBRdWV1ZS5RdWV1ZSgpCisgICAgICAgIGZvciBpdGVtIGluIHRlc3RfbGlzdHM6Cisg
ICAgICAgICAgICBmaWxlbmFtZV9xdWV1ZS5wdXQoaXRlbSkKIAogICAgICAgICAjIEluc3RhbnRp
YXRlIFRlc3RTaGVsbFRocmVhZHMgYW5kIHN0YXJ0IHRoZW0uCiAgICAgICAgIHRocmVhZHMgPSBb
XQotICAgICAgICBmb3IgaSBpbiB4cmFuZ2UoaW50KHNlbGYuX29wdGlvbnMuY2hpbGRfcHJvY2Vz
c2VzKSk6CisgICAgICAgIGZvciBpIGluIHhyYW5nZShudW1fd29ya2Vycyk6CiAgICAgICAgICAg
ICAjIENyZWF0ZSBzZXBhcmF0ZSBUZXN0VHlwZXMgaW5zdGFuY2VzIGZvciBlYWNoIHRocmVhZC4K
ICAgICAgICAgICAgIHRlc3RfdHlwZXMgPSBbXQogICAgICAgICAgICAgZm9yIHRlc3RfdHlwZSBp
biBzZWxmLl90ZXN0X3R5cGVzOgpAQCAtNjA5LDcgKzYxMSw3IEBAIGNsYXNzIFRlc3RSdW5uZXI6
CiAgICAgICAgIHJldHVybiB0aHJlYWRzCiAKICAgICBkZWYgX2lzX3NpbmdsZV90aHJlYWRlZChz
ZWxmKToKLSAgICAgICAgIiIiUmV0dXJucyB3aGV0aGVyIHdlIHNob3VsZCBydW4gYWxsIHRoZSB0
ZXN0cyBpbiB0aGUgbWFpbiB0aHJlYWQuIiIiCisgICAgICAgICIiIlJldHVybnMgd2hldGhlciB0
byBwbHVyYWxpemUgbG9nIG1lc3NhZ2VzIGFib3V0IERSVCBpbnN0YW5jZXMuIiIiCiAgICAgICAg
IHJldHVybiBpbnQoc2VsZi5fb3B0aW9ucy5jaGlsZF9wcm9jZXNzZXMpID09IDEKIAogICAgIGRl
ZiBfcnVuX3Rlc3RzKHNlbGYsIGZpbGVfbGlzdCwgcmVzdWx0X3N1bW1hcnkpOgpAQCAtMTA2OCw4
ICsxMDcwLDcgQEAgY2xhc3MgVGVzdFJ1bm5lcjoKICAgICAgICAgZm9yIHRlc3RfdHVwbGUgaW4g
aW5kaXZpZHVhbF90ZXN0X3RpbWluZ3M6CiAgICAgICAgICAgICBmaWxlbmFtZSA9IHRlc3RfdHVw
bGUuZmlsZW5hbWUKICAgICAgICAgICAgIGlzX3RpbWVvdXRfY3Jhc2hfb3Jfc2xvdyA9IEZhbHNl
Ci0gICAgICAgICAgICBpZiBzZWxmLl9leHBlY3RhdGlvbnMuaGFzX21vZGlmaWVyKGZpbGVuYW1l
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2V4
cGVjdGF0aW9ucy5TTE9XKToKKyAgICAgICAgICAgIGlmIHNlbGYuX3Rlc3RfaXNfc2xvdyhmaWxl
bmFtZSk6CiAgICAgICAgICAgICAgICAgaXNfdGltZW91dF9jcmFzaF9vcl9zbG93ID0gVHJ1ZQog
ICAgICAgICAgICAgICAgIHNsb3dfdGVzdHMuYXBwZW5kKHRlc3RfdHVwbGUpCiAKQEAgLTEzODQs
OCArMTM4NSwxMSBAQCBkZWYgcnVuKHBvcnQsIG9wdGlvbnMsIGFyZ3MsIHJlZ3VsYXJfb3V0cHV0
PXN5cy5zdGRlcnIsCiBkZWYgX3NldF91cF9kZXJpdmVkX29wdGlvbnMocG9ydF9vYmosIG9wdGlv
bnMpOgogICAgICIiIlNldHMgdGhlIG9wdGlvbnMgdmFsdWVzIHRoYXQgZGVwZW5kIG9uIG90aGVy
IG9wdGlvbnMgdmFsdWVzLiIiIgogCisgICAgaWYgb3B0aW9ucy53b3JrZXJzX2FyZSA9PSAnaW5s
aW5lJzoKKyAgICAgICAgaWYgb3B0aW9ucy5jaGlsZF9wcm9jZXNzZXMgYW5kIGludChvcHRpb25z
LmNoaWxkX3Byb2Nlc3NlcykgPiAxOgorICAgICAgICAgICAgX2xvZy53YXJuaW5nKCItLXdvcmtl
cnMtYXJlPWlubGluZSBvdmVycmlkZXMgLS1jaGlsZF9wcm9jZXNzZXMiKQorICAgICAgICBvcHRp
b25zLmNoaWxkX3Byb2Nlc3NlcyA9ICIxIgogICAgIGlmIG5vdCBvcHRpb25zLmNoaWxkX3Byb2Nl
c3NlczoKLSAgICAgICAgIyBGSVhNRTogSW52ZXN0aWdhdGUgcGVyZi9mbGFraW5lc3MgaW1wYWN0
IG9mIHVzaW5nIGNwdV9jb3VudCArIDEuCiAgICAgICAgIG9wdGlvbnMuY2hpbGRfcHJvY2Vzc2Vz
ID0gb3MuZW52aXJvbi5nZXQoIldFQktJVF9URVNUX0NISUxEX1BST0NFU1NFUyIsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyKHBvcnRfb2JqLmRl
ZmF1bHRfY2hpbGRfcHJvY2Vzc2VzKCkpKQogCkBAIC0xNjA4LDYgKzE2MTIsMTAgQEAgZGVmIHBh
cnNlX2FyZ3MoYXJncz1Ob25lKToKICAgICAgICAgb3B0cGFyc2UubWFrZV9vcHRpb24oIi0tY2hp
bGQtcHJvY2Vzc2VzIiwKICAgICAgICAgICAgIGhlbHA9Ik51bWJlciBvZiBEdW1wUmVuZGVyVHJl
ZXMgdG8gcnVuIGluIHBhcmFsbGVsLiIpLAogICAgICAgICAjIEZJWE1FOiBEaXNwbGF5IGRlZmF1
bHQgbnVtYmVyIG9mIGNoaWxkIHByb2Nlc3NlcyB0aGF0IHdpbGwgcnVuLgorICAgICAgICBvcHRw
YXJzZS5tYWtlX29wdGlvbigiLS13b3JrZXJzLWFyZSIsIGFjdGlvbj0ic3RvcmUiLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PSJwcm9jZXNzZXMiLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBoZWxwPSJjb250cm9scyB3b3JrZXIgbW9kZWwuIFZhbGlkIHZhbHVl
cyBhcmUgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJ2lubGluZScgYW5kICd0aHJl
YWRzJyAoZGVmYXVsdCkuIiksCiAgICAgICAgIG9wdHBhcnNlLm1ha2Vfb3B0aW9uKCItLWV4cGVy
aW1lbnRhbC1mdWxseS1wYXJhbGxlbCIsCiAgICAgICAgICAgICBhY3Rpb249InN0b3JlX3RydWUi
LCBkZWZhdWx0PUZhbHNlLAogICAgICAgICAgICAgaGVscD0icnVuIGFsbCB0ZXN0cyBpbiBwYXJh
bGxlbCIpLApAQCAtMTY2OCwxMiArMTY3NiwxMiBAQCBkZWYgcGFyc2VfYXJncyhhcmdzPU5vbmUp
OgogICAgIHJldHVybiBvcHRpb25zLCBhcmdzCiAKIAotCiBkZWYgbWFpbigpOgogICAgIG9wdGlv
bnMsIGFyZ3MgPSBwYXJzZV9hcmdzKCkKICAgICBwb3J0X29iaiA9IHBvcnQuZ2V0KG9wdGlvbnMu
cGxhdGZvcm0sIG9wdGlvbnMpCiAgICAgcmV0dXJuIHJ1bihwb3J0X29iaiwgb3B0aW9ucywgYXJn
cykKIAorCiBpZiAnX19tYWluX18nID09IF9fbmFtZV9fOgogICAgIHRyeToKICAgICAgICAgc3lz
LmV4aXQobWFpbigpKQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0c191bml0dGVzdC5weSBiL1dlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHNfdW5pdHRlc3QucHkK
aW5kZXggMGJkMWIzYTM1Y2E5MTI5YzJiN2FjODgyMDY3ZDM3NjI5NmE4OGJiMC4uYzM2ZTM0MGM0
MGQ4OWI4NmFmZDIxZmEyMGM1MGNkZmI0MzU1MTg2ZCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0c191bml0dGVzdC5w
eQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Vi
a2l0X3Rlc3RzX3VuaXR0ZXN0LnB5CkBAIC03Miw2ICs3Miw4IEBAIGRlZiBwYXNzaW5nX3J1bihl
eHRyYV9hcmdzPU5vbmUsIHBvcnRfb2JqPU5vbmUsIHJlY29yZF9yZXN1bHRzPUZhbHNlLAogICAg
ICAgICBhcmdzLmV4dGVuZChbJy0tcGxhdGZvcm0nLCAndGVzdCddKQogICAgIGlmIG5vdCByZWNv
cmRfcmVzdWx0czoKICAgICAgICAgYXJncy5hcHBlbmQoJy0tbm8tcmVjb3JkLXJlc3VsdHMnKQor
ICAgIGlmIG5vdCAnLS1jaGlsZC1wcm9jZXNzZXMnIGluIGV4dHJhX2FyZ3M6CisgICAgICAgIGFy
Z3MuZXh0ZW5kKFsnLS13b3JrZXJzLWFyZScsICdpbmxpbmUnXSkKICAgICBhcmdzLmV4dGVuZChl
eHRyYV9hcmdzKQogICAgIGlmIG5vdCB0ZXN0c19pbmNsdWRlZDoKICAgICAgICAgIyBXZSB1c2Ug
dGhlIGdsb2IgdG8gdGVzdCB0aGF0IGdsb2JiaW5nIHdvcmtzLgpAQCAtMTE2LDcgKzExOCw3IEBA
IGRlZiBnZXRfdGVzdHNfcnVuKGV4dHJhX2FyZ3M9Tm9uZSwgdGVzdHNfaW5jbHVkZWQ9RmFsc2Us
IGZsYXR0ZW5fYmF0Y2hlcz1GYWxzZSk6CiAgICAgICAgICctLXByaW50JywgJ25vdGhpbmcnLAog
ICAgICAgICAnLS1wbGF0Zm9ybScsICd0ZXN0JywKICAgICAgICAgJy0tbm8tcmVjb3JkLXJlc3Vs
dHMnLAotICAgICAgICAnLS1jaGlsZC1wcm9jZXNzZXMnLCAnMSddCisgICAgICAgICctLXdvcmtl
cnMtYXJlJywgJ2lubGluZSddCiAgICAgYXJncy5leHRlbmQoZXh0cmFfYXJncykKICAgICBpZiBu
b3QgdGVzdHNfaW5jbHVkZWQ6CiAgICAgICAgICMgTm90IGluY2x1ZGluZyBodHRwIHRlc3RzIHNp
bmNlIHRoZXkgZ2V0IHJ1biBvdXQgb2Ygb3JkZXIgKHRoYXQKQEAgLTQ1MywyMCArNDU1LDEwIEBA
IGNsYXNzIFRlc3RSdW5uZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgaHRtbCA9
IHJ1bm5lci5fcmVzdWx0c19odG1sKFsidGVzdF9wYXRoIl0sIHt9LCAiVGl0bGUiLCBvdmVycmlk
ZV90aW1lPSJ0aW1lIikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChodG1sLCBleHBlY3RlZF9o
dG1sKQogCi0gICAgZGVmIHF1ZXVlX3RvX2xpc3Qoc2VsZiwgcXVldWUpOgotICAgICAgICBxdWV1
ZV9saXN0ID0gW10KLSAgICAgICAgd2hpbGUoVHJ1ZSk6Ci0gICAgICAgICAgICB0cnk6Ci0gICAg
ICAgICAgICAgICAgcXVldWVfbGlzdC5hcHBlbmQocXVldWUuZ2V0X25vd2FpdCgpKQotICAgICAg
ICAgICAgZXhjZXB0IFF1ZXVlLkVtcHR5OgotICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAg
IHJldHVybiBxdWV1ZV9saXN0Ci0KLSAgICBkZWYgdGVzdF9nZXRfdGVzdF9maWxlX3F1ZXVlKHNl
bGYpOgotICAgICAgICAjIFRlc3QgdGhhdCBfZ2V0X3Rlc3RfZmlsZV9xdWV1ZSBpbiBydW5fd2Vi
a2l0X3Rlc3RzLlRlc3RSdW5uZXIgcmVhbGx5CisgICAgZGVmIHRlc3Rfc2hhcmRfdGVzdHMoc2Vs
Zik6CisgICAgICAgICMgVGVzdCB0aGF0IF9zaGFyZF90ZXN0cyBpbiBydW5fd2Via2l0X3Rlc3Rz
LlRlc3RSdW5uZXIgcmVhbGx5CiAgICAgICAgICMgcHV0IHRoZSBodHRwIHRlc3RzIGZpcnN0IGlu
IHRoZSBxdWV1ZS4KICAgICAgICAgcnVubmVyID0gVGVzdFJ1bm5lcldyYXBwZXIocG9ydD1Nb2Nr
KCksIG9wdGlvbnM9TW9jaygpLCBwcmludGVyPU1vY2soKSkKLSAgICAgICAgcnVubmVyLl9vcHRp
b25zLmV4cGVyaW1lbnRhbF9mdWxseV9wYXJhbGxlbCA9IEZhbHNlCiAKICAgICAgICAgdGVzdF9s
aXN0ID0gWwogICAgICAgICAgICJMYXlvdXRUZXN0cy93ZWJzb2NrZXQvdGVzdHMvdW5pY29kZS5o
dG0iLApAQCAtNDg3LDE5ICs0NzksMTUgQEAgY2xhc3MgVGVzdFJ1bm5lclRlc3QodW5pdHRlc3Qu
VGVzdENhc2UpOgogICAgICAgICAgICdMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1
ZXN0L3N1cHBvcnRlZC14bWwtY29udGVudC10eXBlcy5odG1sJywKICAgICAgICAgXSkKIAotICAg
ICAgICBydW5uZXIuX29wdGlvbnMuY2hpbGRfcHJvY2Vzc2VzID0gMQotICAgICAgICB0ZXN0X3F1
ZXVlX2Zvcl9zaW5nbGVfdGhyZWFkID0gcnVubmVyLl9nZXRfdGVzdF9maWxlX3F1ZXVlKHRlc3Rf
bGlzdCkKLSAgICAgICAgcnVubmVyLl9vcHRpb25zLmNoaWxkX3Byb2Nlc3NlcyA9IDIKLSAgICAg
ICAgdGVzdF9xdWV1ZV9mb3JfbXVsdGlfdGhyZWFkID0gcnVubmVyLl9nZXRfdGVzdF9maWxlX3F1
ZXVlKHRlc3RfbGlzdCkKLQotICAgICAgICBzaW5nbGVfdGhyZWFkX3Jlc3VsdHMgPSBzZWxmLnF1
ZXVlX3RvX2xpc3QodGVzdF9xdWV1ZV9mb3Jfc2luZ2xlX3RocmVhZCkKLSAgICAgICAgbXVsdGlf
dGhyZWFkX3Jlc3VsdHMgPSBzZWxmLnF1ZXVlX3RvX2xpc3QodGVzdF9xdWV1ZV9mb3JfbXVsdGlf
dGhyZWFkKQorICAgICAgICBzaW5nbGVfdGhyZWFkX3Jlc3VsdHMgPSBydW5uZXIuX3NoYXJkX3Rl
c3RzKHRlc3RfbGlzdCwgVHJ1ZSkKKyAgICAgICAgbXVsdGlfdGhyZWFkX3Jlc3VsdHMgPSBydW5u
ZXIuX3NoYXJkX3Rlc3RzKHRlc3RfbGlzdCwgRmFsc2UpCiAKICAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbCgidGVzdHNfdG9faHR0cF9sb2NrIiwgc2luZ2xlX3RocmVhZF9yZXN1bHRzWzBdWzBdKQog
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkX3Rlc3RzX3RvX2h0dHBfbG9jaywgc2V0
KHNpbmdsZV90aHJlYWRfcmVzdWx0c1swXVsxXSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
InRlc3RzX3RvX2h0dHBfbG9jayIsIG11bHRpX3RocmVhZF9yZXN1bHRzWzBdWzBdKQogICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkX3Rlc3RzX3RvX2h0dHBfbG9jaywgc2V0KG11bHRp
X3RocmVhZF9yZXN1bHRzWzBdWzFdKSkKIAorCiBjbGFzcyBEcnlydW5UZXN0KHVuaXR0ZXN0LlRl
c3RDYXNlKToKICAgICAjIEZJWE1FOiBpdCdzIGhhcmQgdG8ga25vdyB3aGljaCBwbGF0Zm9ybXMg
YXJlIHNhZmUgdG8gdGVzdDsgdGhlCiAgICAgIyBjaHJvbWl1bSBwbGF0Zm9ybXMgcmVxdWlyZSBh
IGNocm9taXVtIGNoZWNrb3V0LCBhbmQgdGhlIG1hYyBwbGF0Zm9ybQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>74330</attachid>
            <date>2010-11-18 17:46:05 -0800</date>
            <delta_ts>2010-11-18 18:01:25 -0800</delta_ts>
            <desc>fix typos</desc>
            <filename>bug-49773-20101118174604.patch</filename>
            <type>text/plain</type>
            <size>10755</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCAwYjQ4ZWJiMmVmY2RmYmQ1ZGRiYThlOTBlMzhiMGJkYTZjMzExOGY1Li5iN2Q3OGE5
YzA2YTBlODk3ZjE2YzNiNDZkZmI5ODA0ZDkxM2MzNjFhIDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjMgQEAK
IDIwMTAtMTEtMTggIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CiAKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBjbGVh
bnMgdXAgdGhlIGxvZ2ljIHVzZWQgdG8gc2hhcmQgdGVzdHMgaW50byBncm91cHMgYQorICAgICAg
ICBiaXQgYW5kIGFkZHMgdGhlIC0td29ya2Vycy1hcmUgZmxhZyB0byBOUldULiBUaGUgZmxhZyBp
cyBvbmx5CisgICAgICAgIHVzZWQgYXQgdGhlIG1vbWVudCB0byBjb250cm9sIHdoZXRoZXIgdG8g
cnVuIHNpbmdsZS10aHJlYWRlZCBvcgorICAgICAgICBub3QsIGJ1dCBldmVudHVhbGx5IHdpbGwg
YWxzbyBhbGxvdyB0b2dnbGluZyBiZXR3ZWVuIHRocmVhZHMgYW5kCisgICAgICAgIHByb2Nlc3Nl
cy4KKworICAgICAgICBBbHNvIGFkZCBhIG1pbm9yIGNsZWFudXAgd2l0aCBfdGVzdF9pc19zbG93
KCksIHdoaWNoIGp1c3QKKyAgICAgICAgZWxpbWluYXRlcyBzb21lIHJlcGV0aXRpb24gYW5kIGdp
dmVzIHNsaWdodGx5IGJldHRlciBlbmNhcHN1bGF0aW9uLgorCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00OTc3MworCisgICAgICAgICogU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weToKKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzX3VuaXR0ZXN0LnB5Ogor
CisyMDEwLTExLTE4ICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgorCiAgICAg
ICAgIFJldmlld2VkIGJ5IFRvbnkgQ2hhbmcuCiAKICAgICAgICAgbmV3LXJ1bi13ZWJraXQtdGVz
dHM6IGNyZWF0ZSBmaXJzdCBwYXJ0IG9mICdtZXNzYWdlX2Jyb2tlcicgY2xhc3MgZm9yIG11bHRp
cHJvY2Vzc2luZyBmaXhlcwpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMucHkKaW5kZXggYjM4MDRmNDcw
YmM2M2ZiM2Q1YjdiNjBlYWY3NjkzYTNkOTk4OWE3MS4uNjgxMmFhZjk5YjE2NzEyZDc3ODk4ZWVm
YjRkNGVjMjgxODBjYTNmYSAxMDA3NTUKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weQorKysgYi9XZWJLaXRUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5CkBAIC00ODksNyAr
NDg5LDcgQEAgY2xhc3MgVGVzdFJ1bm5lcjoKICAgICAgICAgIiIiUmV0dXJucyB0aGUgYXBwcm9w
cmlhdGUgVGVzdElucHV0IG9iamVjdCBmb3IgdGhlIGZpbGUuIE1vc3RseSB0aGlzCiAgICAgICAg
IGlzIHVzZWQgZm9yIGxvb2tpbmcgdXAgdGhlIHRpbWVvdXQgdmFsdWUgKGluIG1zKSB0byB1c2Ug
Zm9yIHRoZSBnaXZlbgogICAgICAgICB0ZXN0LiIiIgotICAgICAgICBpZiBzZWxmLl9leHBlY3Rh
dGlvbnMuaGFzX21vZGlmaWVyKHRlc3RfZmlsZSwgdGVzdF9leHBlY3RhdGlvbnMuU0xPVyk6Cisg
ICAgICAgIGlmIHNlbGYuX3Rlc3RfaXNfc2xvdyh0ZXN0X2ZpbGUpOgogICAgICAgICAgICAgcmV0
dXJuIFRlc3RJbnB1dCh0ZXN0X2ZpbGUsIHNlbGYuX29wdGlvbnMuc2xvd190aW1lX291dF9tcykK
ICAgICAgICAgcmV0dXJuIFRlc3RJbnB1dCh0ZXN0X2ZpbGUsIHNlbGYuX29wdGlvbnMudGltZV9v
dXRfbXMpCiAKQEAgLTQ5OSwyMyArNDk5LDIzIEBAIGNsYXNzIFRlc3RSdW5uZXI6CiAgICAgICAg
IHNwbGl0X3BhdGggPSB0ZXN0X2ZpbGUuc3BsaXQob3Muc2VwKQogICAgICAgICByZXR1cm4gJ2h0
dHAnIGluIHNwbGl0X3BhdGggb3IgJ3dlYnNvY2tldCcgaW4gc3BsaXRfcGF0aAogCi0gICAgZGVm
IF9nZXRfdGVzdF9maWxlX3F1ZXVlKHNlbGYsIHRlc3RfZmlsZXMpOgotICAgICAgICAiIiJDcmVh
dGUgdGhlIHRocmVhZCBzYWZlIHF1ZXVlIG9mIGxpc3RzIG9mICh0ZXN0IGZpbGVuYW1lcywgdGVz
dCBVUklzKQotICAgICAgICB0dXBsZXMuIEVhY2ggVGVzdFNoZWxsVGhyZWFkIHB1bGxzIGEgbGlz
dCBmcm9tIHRoaXMgcXVldWUgYW5kIHJ1bnMKLSAgICAgICAgdGhvc2UgdGVzdHMgaW4gb3JkZXIg
YmVmb3JlIGdyYWJiaW5nIHRoZSBuZXh0IGF2YWlsYWJsZSBsaXN0LgorICAgIGRlZiBfdGVzdF9p
c19zbG93KHNlbGYsIHRlc3RfZmlsZSk6CisgICAgICAgIHJldHVybiBzZWxmLl9leHBlY3RhdGlv
bnMuaGFzX21vZGlmaWVyKHRlc3RfZmlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdGVzdF9leHBlY3RhdGlvbnMuU0xPVykKIAotICAgICAgICBTaGFy
ZCB0aGUgbGlzdHMgYnkgZGlyZWN0b3J5LiBUaGlzIGhlbHBzIGVuc3VyZSB0aGF0IHRlc3RzIHRo
YXQgZGVwZW5kCi0gICAgICAgIG9uIGVhY2ggb3RoZXIgKGFrYSBiYWQgdGVzdHMhKSBjb250aW51
ZSB0byBydW4gdG9nZXRoZXIgYXMgbW9zdAotICAgICAgICBjcm9zcy10ZXN0cyBkZXBlbmRlbmNp
ZXMgdGVuZCB0byBvY2N1ciB3aXRoaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICAgIGRlZiBfc2hh
cmRfdGVzdHMoc2VsZiwgdGVzdF9maWxlcywgc2luZ2xlX3RocmVhZGVkKToKKyAgICAgICAgIiIi
R3JvdXBzIHRlc3RzIGludG8gYmF0Y2hlcy4KKyAgICAgICAgVGhpcyBoZWxwcyBlbnN1cmUgdGhh
dCB0ZXN0cyB0aGF0IGRlcGVuZCBvbiBlYWNoIG90aGVyIChha2EgYmFkIHRlc3RzISkKKyAgICAg
ICAgY29udGludWUgdG8gcnVuIHRvZ2V0aGVyIGFzIG1vc3QgY3Jvc3MtdGVzdHMgZGVwZW5kZW5j
aWVzIHRlbmQgdG8KKyAgICAgICAgb2NjdXIgd2l0aGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KIAog
ICAgICAgICBSZXR1cm46Ci0gICAgICAgICAgVGhlIFF1ZXVlIG9mIGxpc3RzIG9mIFRlc3RJbnB1
dCBvYmplY3RzLgorICAgICAgICAgICAgQSBsaXN0IG9mIGxpc3RzIG9mIFRlc3RJbnB1dCBvYmpl
Y3RzLgogICAgICAgICAiIiIKIAogICAgICAgICB0ZXN0X2xpc3RzID0gW10KICAgICAgICAgdGVz
dHNfdG9faHR0cF9sb2NrID0gW10KLSAgICAgICAgaWYgKHNlbGYuX29wdGlvbnMuZXhwZXJpbWVu
dGFsX2Z1bGx5X3BhcmFsbGVsIG9yCi0gICAgICAgICAgICBzZWxmLl9pc19zaW5nbGVfdGhyZWFk
ZWQoKSk6CisgICAgICAgIGlmIHNpbmdsZV90aHJlYWRlZDoKICAgICAgICAgICAgIGZvciB0ZXN0
X2ZpbGUgaW4gdGVzdF9maWxlczoKICAgICAgICAgICAgICAgICB0ZXN0X2lucHV0ID0gc2VsZi5f
Z2V0X3Rlc3RfaW5wdXRfZm9yX2ZpbGUodGVzdF9maWxlKQogICAgICAgICAgICAgICAgIGlmIHNl
bGYuX3Rlc3RfcmVxdWlyZXNfbG9jayh0ZXN0X2ZpbGUpOgpAQCAtNTU0LDEwICs1NTQsNyBAQCBj
bGFzcyBUZXN0UnVubmVyOgogICAgICAgICAgICAgdGVzdHNfdG9faHR0cF9sb2NrLnJldmVyc2Uo
KQogICAgICAgICAgICAgdGVzdF9saXN0cy5pbnNlcnQoMCwgKCJ0ZXN0c190b19odHRwX2xvY2si
LCB0ZXN0c190b19odHRwX2xvY2spKQogCi0gICAgICAgIGZpbGVuYW1lX3F1ZXVlID0gUXVldWUu
UXVldWUoKQotICAgICAgICBmb3IgaXRlbSBpbiB0ZXN0X2xpc3RzOgotICAgICAgICAgICAgZmls
ZW5hbWVfcXVldWUucHV0KGl0ZW0pCi0gICAgICAgIHJldHVybiBmaWxlbmFtZV9xdWV1ZQorICAg
ICAgICByZXR1cm4gdGVzdF9saXN0cwogCiAgICAgZGVmIF9nZXRfdGVzdF9hcmdzKHNlbGYsIGlu
ZGV4KToKICAgICAgICAgIiIiUmV0dXJucyB0aGUgdHVwbGUgb2YgYXJndW1lbnRzIGZvciB0ZXN0
cyBhbmQgZm9yIER1bXBSZW5kZXJUcmVlLiIiIgpAQCAtNTg1LDExICs1ODIsMTYgQEAgY2xhc3Mg
VGVzdFJ1bm5lcjoKICAgICAgICAgUmV0dXJuOgogICAgICAgICAgIFRoZSBsaXN0IG9mIHRocmVh
ZHMuCiAgICAgICAgICIiIgotICAgICAgICBmaWxlbmFtZV9xdWV1ZSA9IHNlbGYuX2dldF90ZXN0
X2ZpbGVfcXVldWUodGVzdF9maWxlcykKKyAgICAgICAgbnVtX3dvcmtlcnMgPSBpbnQoc2VsZi5f
b3B0aW9ucy5jaGlsZF9wcm9jZXNzZXMpCisgICAgICAgIHRlc3RfbGlzdHMgPSBzZWxmLl9zaGFy
ZF90ZXN0cyh0ZXN0X2ZpbGVzLAorICAgICAgICAgICAgbnVtX3dvcmtlcnMgPT0gMSBvciBzZWxm
Ll9vcHRpb25zLmV4cGVyaW1lbnRhbF9mdWxseV9wYXJhbGxlbCkKKyAgICAgICAgZmlsZW5hbWVf
cXVldWUgPSBRdWV1ZS5RdWV1ZSgpCisgICAgICAgIGZvciBpdGVtIGluIHRlc3RfbGlzdHM6Cisg
ICAgICAgICAgICBmaWxlbmFtZV9xdWV1ZS5wdXQoaXRlbSkKIAogICAgICAgICAjIEluc3RhbnRp
YXRlIFRlc3RTaGVsbFRocmVhZHMgYW5kIHN0YXJ0IHRoZW0uCiAgICAgICAgIHRocmVhZHMgPSBb
XQotICAgICAgICBmb3IgaSBpbiB4cmFuZ2UoaW50KHNlbGYuX29wdGlvbnMuY2hpbGRfcHJvY2Vz
c2VzKSk6CisgICAgICAgIGZvciBpIGluIHhyYW5nZShudW1fd29ya2Vycyk6CiAgICAgICAgICAg
ICAjIENyZWF0ZSBzZXBhcmF0ZSBUZXN0VHlwZXMgaW5zdGFuY2VzIGZvciBlYWNoIHRocmVhZC4K
ICAgICAgICAgICAgIHRlc3RfdHlwZXMgPSBbXQogICAgICAgICAgICAgZm9yIHRlc3RfdHlwZSBp
biBzZWxmLl90ZXN0X3R5cGVzOgpAQCAtNjA5LDcgKzYxMSw3IEBAIGNsYXNzIFRlc3RSdW5uZXI6
CiAgICAgICAgIHJldHVybiB0aHJlYWRzCiAKICAgICBkZWYgX2lzX3NpbmdsZV90aHJlYWRlZChz
ZWxmKToKLSAgICAgICAgIiIiUmV0dXJucyB3aGV0aGVyIHdlIHNob3VsZCBydW4gYWxsIHRoZSB0
ZXN0cyBpbiB0aGUgbWFpbiB0aHJlYWQuIiIiCisgICAgICAgICIiIlJldHVybnMgd2hldGhlciB0
byBwbHVyYWxpemUgbG9nIG1lc3NhZ2VzIGFib3V0IERSVCBpbnN0YW5jZXMuIiIiCiAgICAgICAg
IHJldHVybiBpbnQoc2VsZi5fb3B0aW9ucy5jaGlsZF9wcm9jZXNzZXMpID09IDEKIAogICAgIGRl
ZiBfcnVuX3Rlc3RzKHNlbGYsIGZpbGVfbGlzdCwgcmVzdWx0X3N1bW1hcnkpOgpAQCAtMTA2OCw4
ICsxMDcwLDcgQEAgY2xhc3MgVGVzdFJ1bm5lcjoKICAgICAgICAgZm9yIHRlc3RfdHVwbGUgaW4g
aW5kaXZpZHVhbF90ZXN0X3RpbWluZ3M6CiAgICAgICAgICAgICBmaWxlbmFtZSA9IHRlc3RfdHVw
bGUuZmlsZW5hbWUKICAgICAgICAgICAgIGlzX3RpbWVvdXRfY3Jhc2hfb3Jfc2xvdyA9IEZhbHNl
Ci0gICAgICAgICAgICBpZiBzZWxmLl9leHBlY3RhdGlvbnMuaGFzX21vZGlmaWVyKGZpbGVuYW1l
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2V4
cGVjdGF0aW9ucy5TTE9XKToKKyAgICAgICAgICAgIGlmIHNlbGYuX3Rlc3RfaXNfc2xvdyhmaWxl
bmFtZSk6CiAgICAgICAgICAgICAgICAgaXNfdGltZW91dF9jcmFzaF9vcl9zbG93ID0gVHJ1ZQog
ICAgICAgICAgICAgICAgIHNsb3dfdGVzdHMuYXBwZW5kKHRlc3RfdHVwbGUpCiAKQEAgLTEzODQs
OCArMTM4NSwxMSBAQCBkZWYgcnVuKHBvcnQsIG9wdGlvbnMsIGFyZ3MsIHJlZ3VsYXJfb3V0cHV0
PXN5cy5zdGRlcnIsCiBkZWYgX3NldF91cF9kZXJpdmVkX29wdGlvbnMocG9ydF9vYmosIG9wdGlv
bnMpOgogICAgICIiIlNldHMgdGhlIG9wdGlvbnMgdmFsdWVzIHRoYXQgZGVwZW5kIG9uIG90aGVy
IG9wdGlvbnMgdmFsdWVzLiIiIgogCisgICAgaWYgb3B0aW9ucy53b3JrZXJzX2FyZSA9PSAnaW5s
aW5lJzoKKyAgICAgICAgaWYgb3B0aW9ucy5jaGlsZF9wcm9jZXNzZXMgYW5kIGludChvcHRpb25z
LmNoaWxkX3Byb2Nlc3NlcykgPiAxOgorICAgICAgICAgICAgX2xvZy53YXJuaW5nKCItLXdvcmtl
cnMtYXJlPWlubGluZSBvdmVycmlkZXMgLS1jaGlsZC1wcm9jZXNzZXMiKQorICAgICAgICBvcHRp
b25zLmNoaWxkX3Byb2Nlc3NlcyA9ICIxIgogICAgIGlmIG5vdCBvcHRpb25zLmNoaWxkX3Byb2Nl
c3NlczoKLSAgICAgICAgIyBGSVhNRTogSW52ZXN0aWdhdGUgcGVyZi9mbGFraW5lc3MgaW1wYWN0
IG9mIHVzaW5nIGNwdV9jb3VudCArIDEuCiAgICAgICAgIG9wdGlvbnMuY2hpbGRfcHJvY2Vzc2Vz
ID0gb3MuZW52aXJvbi5nZXQoIldFQktJVF9URVNUX0NISUxEX1BST0NFU1NFUyIsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyKHBvcnRfb2JqLmRl
ZmF1bHRfY2hpbGRfcHJvY2Vzc2VzKCkpKQogCkBAIC0xNjA4LDYgKzE2MTIsMTAgQEAgZGVmIHBh
cnNlX2FyZ3MoYXJncz1Ob25lKToKICAgICAgICAgb3B0cGFyc2UubWFrZV9vcHRpb24oIi0tY2hp
bGQtcHJvY2Vzc2VzIiwKICAgICAgICAgICAgIGhlbHA9Ik51bWJlciBvZiBEdW1wUmVuZGVyVHJl
ZXMgdG8gcnVuIGluIHBhcmFsbGVsLiIpLAogICAgICAgICAjIEZJWE1FOiBEaXNwbGF5IGRlZmF1
bHQgbnVtYmVyIG9mIGNoaWxkIHByb2Nlc3NlcyB0aGF0IHdpbGwgcnVuLgorICAgICAgICBvcHRw
YXJzZS5tYWtlX29wdGlvbigiLS13b3JrZXJzLWFyZSIsIGFjdGlvbj0ic3RvcmUiLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PSJ0aHJlYWRzIiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaGVscD0iY29udHJvbHMgd29ya2VyIG1vZGVsLiBWYWxpZCB2YWx1ZXMg
YXJlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIidpbmxpbmUnIGFuZCAndGhyZWFk
cycgKGRlZmF1bHQpLiIpLAogICAgICAgICBvcHRwYXJzZS5tYWtlX29wdGlvbigiLS1leHBlcmlt
ZW50YWwtZnVsbHktcGFyYWxsZWwiLAogICAgICAgICAgICAgYWN0aW9uPSJzdG9yZV90cnVlIiwg
ZGVmYXVsdD1GYWxzZSwKICAgICAgICAgICAgIGhlbHA9InJ1biBhbGwgdGVzdHMgaW4gcGFyYWxs
ZWwiKSwKQEAgLTE2NjgsMTIgKzE2NzYsMTIgQEAgZGVmIHBhcnNlX2FyZ3MoYXJncz1Ob25lKToK
ICAgICByZXR1cm4gb3B0aW9ucywgYXJncwogCiAKLQogZGVmIG1haW4oKToKICAgICBvcHRpb25z
LCBhcmdzID0gcGFyc2VfYXJncygpCiAgICAgcG9ydF9vYmogPSBwb3J0LmdldChvcHRpb25zLnBs
YXRmb3JtLCBvcHRpb25zKQogICAgIHJldHVybiBydW4ocG9ydF9vYmosIG9wdGlvbnMsIGFyZ3Mp
CiAKKwogaWYgJ19fbWFpbl9fJyA9PSBfX25hbWVfXzoKICAgICB0cnk6CiAgICAgICAgIHN5cy5l
eGl0KG1haW4oKSkKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHNfdW5pdHRlc3QucHkgYi9XZWJLaXRUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzX3VuaXR0ZXN0LnB5Cmlu
ZGV4IDBiZDFiM2EzNWNhOTEyOWMyYjdhYzg4MjA2N2QzNzYyOTZhODhiYjAuLmMzNmUzNDBjNDBk
ODliODZhZmQyMWZhMjBjNTBjZGZiNDM1NTE4NmQgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHNfdW5pdHRlc3QucHkK
KysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtp
dF90ZXN0c191bml0dGVzdC5weQpAQCAtNzIsNiArNzIsOCBAQCBkZWYgcGFzc2luZ19ydW4oZXh0
cmFfYXJncz1Ob25lLCBwb3J0X29iaj1Ob25lLCByZWNvcmRfcmVzdWx0cz1GYWxzZSwKICAgICAg
ICAgYXJncy5leHRlbmQoWyctLXBsYXRmb3JtJywgJ3Rlc3QnXSkKICAgICBpZiBub3QgcmVjb3Jk
X3Jlc3VsdHM6CiAgICAgICAgIGFyZ3MuYXBwZW5kKCctLW5vLXJlY29yZC1yZXN1bHRzJykKKyAg
ICBpZiBub3QgJy0tY2hpbGQtcHJvY2Vzc2VzJyBpbiBleHRyYV9hcmdzOgorICAgICAgICBhcmdz
LmV4dGVuZChbJy0td29ya2Vycy1hcmUnLCAnaW5saW5lJ10pCiAgICAgYXJncy5leHRlbmQoZXh0
cmFfYXJncykKICAgICBpZiBub3QgdGVzdHNfaW5jbHVkZWQ6CiAgICAgICAgICMgV2UgdXNlIHRo
ZSBnbG9iIHRvIHRlc3QgdGhhdCBnbG9iYmluZyB3b3Jrcy4KQEAgLTExNiw3ICsxMTgsNyBAQCBk
ZWYgZ2V0X3Rlc3RzX3J1bihleHRyYV9hcmdzPU5vbmUsIHRlc3RzX2luY2x1ZGVkPUZhbHNlLCBm
bGF0dGVuX2JhdGNoZXM9RmFsc2UpOgogICAgICAgICAnLS1wcmludCcsICdub3RoaW5nJywKICAg
ICAgICAgJy0tcGxhdGZvcm0nLCAndGVzdCcsCiAgICAgICAgICctLW5vLXJlY29yZC1yZXN1bHRz
JywKLSAgICAgICAgJy0tY2hpbGQtcHJvY2Vzc2VzJywgJzEnXQorICAgICAgICAnLS13b3JrZXJz
LWFyZScsICdpbmxpbmUnXQogICAgIGFyZ3MuZXh0ZW5kKGV4dHJhX2FyZ3MpCiAgICAgaWYgbm90
IHRlc3RzX2luY2x1ZGVkOgogICAgICAgICAjIE5vdCBpbmNsdWRpbmcgaHR0cCB0ZXN0cyBzaW5j
ZSB0aGV5IGdldCBydW4gb3V0IG9mIG9yZGVyICh0aGF0CkBAIC00NTMsMjAgKzQ1NSwxMCBAQCBj
bGFzcyBUZXN0UnVubmVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIGh0bWwgPSBy
dW5uZXIuX3Jlc3VsdHNfaHRtbChbInRlc3RfcGF0aCJdLCB7fSwgIlRpdGxlIiwgb3ZlcnJpZGVf
dGltZT0idGltZSIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaHRtbCwgZXhwZWN0ZWRfaHRt
bCkKIAotICAgIGRlZiBxdWV1ZV90b19saXN0KHNlbGYsIHF1ZXVlKToKLSAgICAgICAgcXVldWVf
bGlzdCA9IFtdCi0gICAgICAgIHdoaWxlKFRydWUpOgotICAgICAgICAgICAgdHJ5OgotICAgICAg
ICAgICAgICAgIHF1ZXVlX2xpc3QuYXBwZW5kKHF1ZXVlLmdldF9ub3dhaXQoKSkKLSAgICAgICAg
ICAgIGV4Y2VwdCBRdWV1ZS5FbXB0eToKLSAgICAgICAgICAgICAgICBicmVhawotICAgICAgICBy
ZXR1cm4gcXVldWVfbGlzdAotCi0gICAgZGVmIHRlc3RfZ2V0X3Rlc3RfZmlsZV9xdWV1ZShzZWxm
KToKLSAgICAgICAgIyBUZXN0IHRoYXQgX2dldF90ZXN0X2ZpbGVfcXVldWUgaW4gcnVuX3dlYmtp
dF90ZXN0cy5UZXN0UnVubmVyIHJlYWxseQorICAgIGRlZiB0ZXN0X3NoYXJkX3Rlc3RzKHNlbGYp
OgorICAgICAgICAjIFRlc3QgdGhhdCBfc2hhcmRfdGVzdHMgaW4gcnVuX3dlYmtpdF90ZXN0cy5U
ZXN0UnVubmVyIHJlYWxseQogICAgICAgICAjIHB1dCB0aGUgaHR0cCB0ZXN0cyBmaXJzdCBpbiB0
aGUgcXVldWUuCiAgICAgICAgIHJ1bm5lciA9IFRlc3RSdW5uZXJXcmFwcGVyKHBvcnQ9TW9jaygp
LCBvcHRpb25zPU1vY2soKSwgcHJpbnRlcj1Nb2NrKCkpCi0gICAgICAgIHJ1bm5lci5fb3B0aW9u
cy5leHBlcmltZW50YWxfZnVsbHlfcGFyYWxsZWwgPSBGYWxzZQogCiAgICAgICAgIHRlc3RfbGlz
dCA9IFsKICAgICAgICAgICAiTGF5b3V0VGVzdHMvd2Vic29ja2V0L3Rlc3RzL3VuaWNvZGUuaHRt
IiwKQEAgLTQ4NywxOSArNDc5LDE1IEBAIGNsYXNzIFRlc3RSdW5uZXJUZXN0KHVuaXR0ZXN0LlRl
c3RDYXNlKToKICAgICAgICAgICAnTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVz
dC9zdXBwb3J0ZWQteG1sLWNvbnRlbnQtdHlwZXMuaHRtbCcsCiAgICAgICAgIF0pCiAKLSAgICAg
ICAgcnVubmVyLl9vcHRpb25zLmNoaWxkX3Byb2Nlc3NlcyA9IDEKLSAgICAgICAgdGVzdF9xdWV1
ZV9mb3Jfc2luZ2xlX3RocmVhZCA9IHJ1bm5lci5fZ2V0X3Rlc3RfZmlsZV9xdWV1ZSh0ZXN0X2xp
c3QpCi0gICAgICAgIHJ1bm5lci5fb3B0aW9ucy5jaGlsZF9wcm9jZXNzZXMgPSAyCi0gICAgICAg
IHRlc3RfcXVldWVfZm9yX211bHRpX3RocmVhZCA9IHJ1bm5lci5fZ2V0X3Rlc3RfZmlsZV9xdWV1
ZSh0ZXN0X2xpc3QpCi0KLSAgICAgICAgc2luZ2xlX3RocmVhZF9yZXN1bHRzID0gc2VsZi5xdWV1
ZV90b19saXN0KHRlc3RfcXVldWVfZm9yX3NpbmdsZV90aHJlYWQpCi0gICAgICAgIG11bHRpX3Ro
cmVhZF9yZXN1bHRzID0gc2VsZi5xdWV1ZV90b19saXN0KHRlc3RfcXVldWVfZm9yX211bHRpX3Ro
cmVhZCkKKyAgICAgICAgc2luZ2xlX3RocmVhZF9yZXN1bHRzID0gcnVubmVyLl9zaGFyZF90ZXN0
cyh0ZXN0X2xpc3QsIFRydWUpCisgICAgICAgIG11bHRpX3RocmVhZF9yZXN1bHRzID0gcnVubmVy
Ll9zaGFyZF90ZXN0cyh0ZXN0X2xpc3QsIEZhbHNlKQogCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoInRlc3RzX3RvX2h0dHBfbG9jayIsIHNpbmdsZV90aHJlYWRfcmVzdWx0c1swXVswXSkKICAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZF90ZXN0c190b19odHRwX2xvY2ssIHNldChz
aW5nbGVfdGhyZWFkX3Jlc3VsdHNbMF1bMV0pKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJ0
ZXN0c190b19odHRwX2xvY2siLCBtdWx0aV90aHJlYWRfcmVzdWx0c1swXVswXSkKICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZF90ZXN0c190b19odHRwX2xvY2ssIHNldChtdWx0aV90
aHJlYWRfcmVzdWx0c1swXVsxXSkpCiAKKwogY2xhc3MgRHJ5cnVuVGVzdCh1bml0dGVzdC5UZXN0
Q2FzZSk6CiAgICAgIyBGSVhNRTogaXQncyBoYXJkIHRvIGtub3cgd2hpY2ggcGxhdGZvcm1zIGFy
ZSBzYWZlIHRvIHRlc3Q7IHRoZQogICAgICMgY2hyb21pdW0gcGxhdGZvcm1zIHJlcXVpcmUgYSBj
aHJvbWl1bSBjaGVja291dCwgYW5kIHRoZSBtYWMgcGxhdGZvcm0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>74333</attachid>
            <date>2010-11-18 18:01:28 -0800</date>
            <delta_ts>2010-11-19 18:05:30 -0800</delta_ts>
            <desc>two more minor omissions</desc>
            <filename>bug-49773-20101118180127.patch</filename>
            <type>text/plain</type>
            <size>11527</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCAwYjQ4ZWJiMmVmY2RmYmQ1ZGRiYThlOTBlMzhiMGJkYTZjMzExOGY1Li5iN2Q3OGE5
YzA2YTBlODk3ZjE2YzNiNDZkZmI5ODA0ZDkxM2MzNjFhIDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjMgQEAK
IDIwMTAtMTEtMTggIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CiAKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBjbGVh
bnMgdXAgdGhlIGxvZ2ljIHVzZWQgdG8gc2hhcmQgdGVzdHMgaW50byBncm91cHMgYQorICAgICAg
ICBiaXQgYW5kIGFkZHMgdGhlIC0td29ya2Vycy1hcmUgZmxhZyB0byBOUldULiBUaGUgZmxhZyBp
cyBvbmx5CisgICAgICAgIHVzZWQgYXQgdGhlIG1vbWVudCB0byBjb250cm9sIHdoZXRoZXIgdG8g
cnVuIHNpbmdsZS10aHJlYWRlZCBvcgorICAgICAgICBub3QsIGJ1dCBldmVudHVhbGx5IHdpbGwg
YWxzbyBhbGxvdyB0b2dnbGluZyBiZXR3ZWVuIHRocmVhZHMgYW5kCisgICAgICAgIHByb2Nlc3Nl
cy4KKworICAgICAgICBBbHNvIGFkZCBhIG1pbm9yIGNsZWFudXAgd2l0aCBfdGVzdF9pc19zbG93
KCksIHdoaWNoIGp1c3QKKyAgICAgICAgZWxpbWluYXRlcyBzb21lIHJlcGV0aXRpb24gYW5kIGdp
dmVzIHNsaWdodGx5IGJldHRlciBlbmNhcHN1bGF0aW9uLgorCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00OTc3MworCisgICAgICAgICogU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weToKKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzX3VuaXR0ZXN0LnB5Ogor
CisyMDEwLTExLTE4ICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgorCiAgICAg
ICAgIFJldmlld2VkIGJ5IFRvbnkgQ2hhbmcuCiAKICAgICAgICAgbmV3LXJ1bi13ZWJraXQtdGVz
dHM6IGNyZWF0ZSBmaXJzdCBwYXJ0IG9mICdtZXNzYWdlX2Jyb2tlcicgY2xhc3MgZm9yIG11bHRp
cHJvY2Vzc2luZyBmaXhlcwpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMucHkKaW5kZXggYjM4MDRmNDcw
YmM2M2ZiM2Q1YjdiNjBlYWY3NjkzYTNkOTk4OWE3MS4uZGU4MzBiM2JhMzZlOTc3MGQ5NTU0MjNi
NTU5YjI4NjBhZjhiNTdlMyAxMDA3NTUKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weQorKysgYi9XZWJLaXRUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5CkBAIC00ODksNyAr
NDg5LDcgQEAgY2xhc3MgVGVzdFJ1bm5lcjoKICAgICAgICAgIiIiUmV0dXJucyB0aGUgYXBwcm9w
cmlhdGUgVGVzdElucHV0IG9iamVjdCBmb3IgdGhlIGZpbGUuIE1vc3RseSB0aGlzCiAgICAgICAg
IGlzIHVzZWQgZm9yIGxvb2tpbmcgdXAgdGhlIHRpbWVvdXQgdmFsdWUgKGluIG1zKSB0byB1c2Ug
Zm9yIHRoZSBnaXZlbgogICAgICAgICB0ZXN0LiIiIgotICAgICAgICBpZiBzZWxmLl9leHBlY3Rh
dGlvbnMuaGFzX21vZGlmaWVyKHRlc3RfZmlsZSwgdGVzdF9leHBlY3RhdGlvbnMuU0xPVyk6Cisg
ICAgICAgIGlmIHNlbGYuX3Rlc3RfaXNfc2xvdyh0ZXN0X2ZpbGUpOgogICAgICAgICAgICAgcmV0
dXJuIFRlc3RJbnB1dCh0ZXN0X2ZpbGUsIHNlbGYuX29wdGlvbnMuc2xvd190aW1lX291dF9tcykK
ICAgICAgICAgcmV0dXJuIFRlc3RJbnB1dCh0ZXN0X2ZpbGUsIHNlbGYuX29wdGlvbnMudGltZV9v
dXRfbXMpCiAKQEAgLTQ5OSwyMyArNDk5LDIzIEBAIGNsYXNzIFRlc3RSdW5uZXI6CiAgICAgICAg
IHNwbGl0X3BhdGggPSB0ZXN0X2ZpbGUuc3BsaXQob3Muc2VwKQogICAgICAgICByZXR1cm4gJ2h0
dHAnIGluIHNwbGl0X3BhdGggb3IgJ3dlYnNvY2tldCcgaW4gc3BsaXRfcGF0aAogCi0gICAgZGVm
IF9nZXRfdGVzdF9maWxlX3F1ZXVlKHNlbGYsIHRlc3RfZmlsZXMpOgotICAgICAgICAiIiJDcmVh
dGUgdGhlIHRocmVhZCBzYWZlIHF1ZXVlIG9mIGxpc3RzIG9mICh0ZXN0IGZpbGVuYW1lcywgdGVz
dCBVUklzKQotICAgICAgICB0dXBsZXMuIEVhY2ggVGVzdFNoZWxsVGhyZWFkIHB1bGxzIGEgbGlz
dCBmcm9tIHRoaXMgcXVldWUgYW5kIHJ1bnMKLSAgICAgICAgdGhvc2UgdGVzdHMgaW4gb3JkZXIg
YmVmb3JlIGdyYWJiaW5nIHRoZSBuZXh0IGF2YWlsYWJsZSBsaXN0LgorICAgIGRlZiBfdGVzdF9p
c19zbG93KHNlbGYsIHRlc3RfZmlsZSk6CisgICAgICAgIHJldHVybiBzZWxmLl9leHBlY3RhdGlv
bnMuaGFzX21vZGlmaWVyKHRlc3RfZmlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdGVzdF9leHBlY3RhdGlvbnMuU0xPVykKIAotICAgICAgICBTaGFy
ZCB0aGUgbGlzdHMgYnkgZGlyZWN0b3J5LiBUaGlzIGhlbHBzIGVuc3VyZSB0aGF0IHRlc3RzIHRo
YXQgZGVwZW5kCi0gICAgICAgIG9uIGVhY2ggb3RoZXIgKGFrYSBiYWQgdGVzdHMhKSBjb250aW51
ZSB0byBydW4gdG9nZXRoZXIgYXMgbW9zdAotICAgICAgICBjcm9zcy10ZXN0cyBkZXBlbmRlbmNp
ZXMgdGVuZCB0byBvY2N1ciB3aXRoaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICAgIGRlZiBfc2hh
cmRfdGVzdHMoc2VsZiwgdGVzdF9maWxlcywgc2luZ2xlX3RocmVhZGVkKToKKyAgICAgICAgIiIi
R3JvdXBzIHRlc3RzIGludG8gYmF0Y2hlcy4KKyAgICAgICAgVGhpcyBoZWxwcyBlbnN1cmUgdGhh
dCB0ZXN0cyB0aGF0IGRlcGVuZCBvbiBlYWNoIG90aGVyIChha2EgYmFkIHRlc3RzISkKKyAgICAg
ICAgY29udGludWUgdG8gcnVuIHRvZ2V0aGVyIGFzIG1vc3QgY3Jvc3MtdGVzdHMgZGVwZW5kZW5j
aWVzIHRlbmQgdG8KKyAgICAgICAgb2NjdXIgd2l0aGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KIAog
ICAgICAgICBSZXR1cm46Ci0gICAgICAgICAgVGhlIFF1ZXVlIG9mIGxpc3RzIG9mIFRlc3RJbnB1
dCBvYmplY3RzLgorICAgICAgICAgICAgQSBsaXN0IG9mIGxpc3RzIG9mIFRlc3RJbnB1dCBvYmpl
Y3RzLgogICAgICAgICAiIiIKIAogICAgICAgICB0ZXN0X2xpc3RzID0gW10KICAgICAgICAgdGVz
dHNfdG9faHR0cF9sb2NrID0gW10KLSAgICAgICAgaWYgKHNlbGYuX29wdGlvbnMuZXhwZXJpbWVu
dGFsX2Z1bGx5X3BhcmFsbGVsIG9yCi0gICAgICAgICAgICBzZWxmLl9pc19zaW5nbGVfdGhyZWFk
ZWQoKSk6CisgICAgICAgIGlmIHNpbmdsZV90aHJlYWRlZDoKICAgICAgICAgICAgIGZvciB0ZXN0
X2ZpbGUgaW4gdGVzdF9maWxlczoKICAgICAgICAgICAgICAgICB0ZXN0X2lucHV0ID0gc2VsZi5f
Z2V0X3Rlc3RfaW5wdXRfZm9yX2ZpbGUodGVzdF9maWxlKQogICAgICAgICAgICAgICAgIGlmIHNl
bGYuX3Rlc3RfcmVxdWlyZXNfbG9jayh0ZXN0X2ZpbGUpOgpAQCAtNTU0LDEwICs1NTQsNyBAQCBj
bGFzcyBUZXN0UnVubmVyOgogICAgICAgICAgICAgdGVzdHNfdG9faHR0cF9sb2NrLnJldmVyc2Uo
KQogICAgICAgICAgICAgdGVzdF9saXN0cy5pbnNlcnQoMCwgKCJ0ZXN0c190b19odHRwX2xvY2si
LCB0ZXN0c190b19odHRwX2xvY2spKQogCi0gICAgICAgIGZpbGVuYW1lX3F1ZXVlID0gUXVldWUu
UXVldWUoKQotICAgICAgICBmb3IgaXRlbSBpbiB0ZXN0X2xpc3RzOgotICAgICAgICAgICAgZmls
ZW5hbWVfcXVldWUucHV0KGl0ZW0pCi0gICAgICAgIHJldHVybiBmaWxlbmFtZV9xdWV1ZQorICAg
ICAgICByZXR1cm4gdGVzdF9saXN0cwogCiAgICAgZGVmIF9nZXRfdGVzdF9hcmdzKHNlbGYsIGlu
ZGV4KToKICAgICAgICAgIiIiUmV0dXJucyB0aGUgdHVwbGUgb2YgYXJndW1lbnRzIGZvciB0ZXN0
cyBhbmQgZm9yIER1bXBSZW5kZXJUcmVlLiIiIgpAQCAtNTg1LDExICs1ODIsMTYgQEAgY2xhc3Mg
VGVzdFJ1bm5lcjoKICAgICAgICAgUmV0dXJuOgogICAgICAgICAgIFRoZSBsaXN0IG9mIHRocmVh
ZHMuCiAgICAgICAgICIiIgotICAgICAgICBmaWxlbmFtZV9xdWV1ZSA9IHNlbGYuX2dldF90ZXN0
X2ZpbGVfcXVldWUodGVzdF9maWxlcykKKyAgICAgICAgbnVtX3dvcmtlcnMgPSBpbnQoc2VsZi5f
b3B0aW9ucy5jaGlsZF9wcm9jZXNzZXMpCisgICAgICAgIHRlc3RfbGlzdHMgPSBzZWxmLl9zaGFy
ZF90ZXN0cyh0ZXN0X2ZpbGVzLAorICAgICAgICAgICAgbnVtX3dvcmtlcnMgPT0gMSBvciBzZWxm
Ll9vcHRpb25zLmV4cGVyaW1lbnRhbF9mdWxseV9wYXJhbGxlbCkKKyAgICAgICAgZmlsZW5hbWVf
cXVldWUgPSBRdWV1ZS5RdWV1ZSgpCisgICAgICAgIGZvciBpdGVtIGluIHRlc3RfbGlzdHM6Cisg
ICAgICAgICAgICBmaWxlbmFtZV9xdWV1ZS5wdXQoaXRlbSkKIAogICAgICAgICAjIEluc3RhbnRp
YXRlIFRlc3RTaGVsbFRocmVhZHMgYW5kIHN0YXJ0IHRoZW0uCiAgICAgICAgIHRocmVhZHMgPSBb
XQotICAgICAgICBmb3IgaSBpbiB4cmFuZ2UoaW50KHNlbGYuX29wdGlvbnMuY2hpbGRfcHJvY2Vz
c2VzKSk6CisgICAgICAgIGZvciBpIGluIHhyYW5nZShudW1fd29ya2Vycyk6CiAgICAgICAgICAg
ICAjIENyZWF0ZSBzZXBhcmF0ZSBUZXN0VHlwZXMgaW5zdGFuY2VzIGZvciBlYWNoIHRocmVhZC4K
ICAgICAgICAgICAgIHRlc3RfdHlwZXMgPSBbXQogICAgICAgICAgICAgZm9yIHRlc3RfdHlwZSBp
biBzZWxmLl90ZXN0X3R5cGVzOgpAQCAtNjA5LDcgKzYxMSw3IEBAIGNsYXNzIFRlc3RSdW5uZXI6
CiAgICAgICAgIHJldHVybiB0aHJlYWRzCiAKICAgICBkZWYgX2lzX3NpbmdsZV90aHJlYWRlZChz
ZWxmKToKLSAgICAgICAgIiIiUmV0dXJucyB3aGV0aGVyIHdlIHNob3VsZCBydW4gYWxsIHRoZSB0
ZXN0cyBpbiB0aGUgbWFpbiB0aHJlYWQuIiIiCisgICAgICAgICIiIlJldHVybnMgd2hldGhlciB0
byBwbHVyYWxpemUgbG9nIG1lc3NhZ2VzIGFib3V0IERSVCBpbnN0YW5jZXMuIiIiCiAgICAgICAg
IHJldHVybiBpbnQoc2VsZi5fb3B0aW9ucy5jaGlsZF9wcm9jZXNzZXMpID09IDEKIAogICAgIGRl
ZiBfcnVuX3Rlc3RzKHNlbGYsIGZpbGVfbGlzdCwgcmVzdWx0X3N1bW1hcnkpOgpAQCAtOTU0LDYg
Kzk1Niw3IEBAIGNsYXNzIFRlc3RSdW5uZXI6CiAgICAgICAgICAgICBwLnByaW50X2NvbmZpZygi
UnVubmluZyAlcyAlc3MgaW4gcGFyYWxsZWwiICUKICAgICAgICAgICAgICAgICAgICAgICAgICAg
IChzZWxmLl9vcHRpb25zLmNoaWxkX3Byb2Nlc3NlcywKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzZWxmLl9wb3J0LmRyaXZlcl9uYW1lKCkpKQorICAgICAgICBwLnByaW50X2NvbmZpZygi
V29ya2VycyBhcmUgJXMiICUgc2VsZi5fb3B0aW9ucy53b3JrZXJzX2FyZSkKICAgICAgICAgcC5w
cmludF9jb25maWcoIiIpCiAKICAgICBkZWYgX3ByaW50X2V4cGVjdGVkX3Jlc3VsdHNfb2ZfdHlw
ZShzZWxmLCByZXN1bHRfc3VtbWFyeSwKQEAgLTEwNjgsOCArMTA3MSw3IEBAIGNsYXNzIFRlc3RS
dW5uZXI6CiAgICAgICAgIGZvciB0ZXN0X3R1cGxlIGluIGluZGl2aWR1YWxfdGVzdF90aW1pbmdz
OgogICAgICAgICAgICAgZmlsZW5hbWUgPSB0ZXN0X3R1cGxlLmZpbGVuYW1lCiAgICAgICAgICAg
ICBpc190aW1lb3V0X2NyYXNoX29yX3Nsb3cgPSBGYWxzZQotICAgICAgICAgICAgaWYgc2VsZi5f
ZXhwZWN0YXRpb25zLmhhc19tb2RpZmllcihmaWxlbmFtZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9leHBlY3RhdGlvbnMuU0xPVyk6CisgICAg
ICAgICAgICBpZiBzZWxmLl90ZXN0X2lzX3Nsb3coZmlsZW5hbWUpOgogICAgICAgICAgICAgICAg
IGlzX3RpbWVvdXRfY3Jhc2hfb3Jfc2xvdyA9IFRydWUKICAgICAgICAgICAgICAgICBzbG93X3Rl
c3RzLmFwcGVuZCh0ZXN0X3R1cGxlKQogCkBAIC0xMzg0LDggKzEzODYsMTEgQEAgZGVmIHJ1bihw
b3J0LCBvcHRpb25zLCBhcmdzLCByZWd1bGFyX291dHB1dD1zeXMuc3RkZXJyLAogZGVmIF9zZXRf
dXBfZGVyaXZlZF9vcHRpb25zKHBvcnRfb2JqLCBvcHRpb25zKToKICAgICAiIiJTZXRzIHRoZSBv
cHRpb25zIHZhbHVlcyB0aGF0IGRlcGVuZCBvbiBvdGhlciBvcHRpb25zIHZhbHVlcy4iIiIKIAor
ICAgIGlmIG9wdGlvbnMud29ya2Vyc19hcmUgPT0gJ2lubGluZSc6CisgICAgICAgIGlmIG9wdGlv
bnMuY2hpbGRfcHJvY2Vzc2VzIGFuZCBpbnQob3B0aW9ucy5jaGlsZF9wcm9jZXNzZXMpID4gMToK
KyAgICAgICAgICAgIF9sb2cud2FybmluZygiLS13b3JrZXJzLWFyZT1pbmxpbmUgb3ZlcnJpZGVz
IC0tY2hpbGQtcHJvY2Vzc2VzIikKKyAgICAgICAgb3B0aW9ucy5jaGlsZF9wcm9jZXNzZXMgPSAi
MSIKICAgICBpZiBub3Qgb3B0aW9ucy5jaGlsZF9wcm9jZXNzZXM6Ci0gICAgICAgICMgRklYTUU6
IEludmVzdGlnYXRlIHBlcmYvZmxha2luZXNzIGltcGFjdCBvZiB1c2luZyBjcHVfY291bnQgKyAx
LgogICAgICAgICBvcHRpb25zLmNoaWxkX3Byb2Nlc3NlcyA9IG9zLmVudmlyb24uZ2V0KCJXRUJL
SVRfVEVTVF9DSElMRF9QUk9DRVNTRVMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHN0cihwb3J0X29iai5kZWZhdWx0X2NoaWxkX3Byb2Nlc3Nlcygp
KSkKIApAQCAtMTYwOCw2ICsxNjEzLDEwIEBAIGRlZiBwYXJzZV9hcmdzKGFyZ3M9Tm9uZSk6CiAg
ICAgICAgIG9wdHBhcnNlLm1ha2Vfb3B0aW9uKCItLWNoaWxkLXByb2Nlc3NlcyIsCiAgICAgICAg
ICAgICBoZWxwPSJOdW1iZXIgb2YgRHVtcFJlbmRlclRyZWVzIHRvIHJ1biBpbiBwYXJhbGxlbC4i
KSwKICAgICAgICAgIyBGSVhNRTogRGlzcGxheSBkZWZhdWx0IG51bWJlciBvZiBjaGlsZCBwcm9j
ZXNzZXMgdGhhdCB3aWxsIHJ1bi4KKyAgICAgICAgb3B0cGFyc2UubWFrZV9vcHRpb24oIi0td29y
a2Vycy1hcmUiLCBhY3Rpb249InN0b3JlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZGVmYXVsdD0idGhyZWFkcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9ImNv
bnRyb2xzIHdvcmtlciBtb2RlbC4gVmFsaWQgdmFsdWVzIGFyZSAiCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICInaW5saW5lJyBhbmQgJ3RocmVhZHMnIChkZWZhdWx0KS4iKSwKICAgICAg
ICAgb3B0cGFyc2UubWFrZV9vcHRpb24oIi0tZXhwZXJpbWVudGFsLWZ1bGx5LXBhcmFsbGVsIiwK
ICAgICAgICAgICAgIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlZmF1bHQ9RmFsc2UsCiAgICAgICAg
ICAgICBoZWxwPSJydW4gYWxsIHRlc3RzIGluIHBhcmFsbGVsIiksCkBAIC0xNjY4LDEyICsxNjc3
LDEyIEBAIGRlZiBwYXJzZV9hcmdzKGFyZ3M9Tm9uZSk6CiAgICAgcmV0dXJuIG9wdGlvbnMsIGFy
Z3MKIAogCi0KIGRlZiBtYWluKCk6CiAgICAgb3B0aW9ucywgYXJncyA9IHBhcnNlX2FyZ3MoKQog
ICAgIHBvcnRfb2JqID0gcG9ydC5nZXQob3B0aW9ucy5wbGF0Zm9ybSwgb3B0aW9ucykKICAgICBy
ZXR1cm4gcnVuKHBvcnRfb2JqLCBvcHRpb25zLCBhcmdzKQogCisKIGlmICdfX21haW5fXycgPT0g
X19uYW1lX186CiAgICAgdHJ5OgogICAgICAgICBzeXMuZXhpdChtYWluKCkpCmRpZmYgLS1naXQg
YS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rl
c3RzX3VuaXR0ZXN0LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcnVuX3dlYmtpdF90ZXN0c191bml0dGVzdC5weQppbmRleCAwYmQxYjNhMzVjYTkxMjljMmI3
YWM4ODIwNjdkMzc2Mjk2YTg4YmIwLi44Y2I4ZDgwNmMyNTgzMGNlNjhmYjc5NmYzNWVjZjE2NmQ5
Y2MwY2MzIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9ydW5fd2Via2l0X3Rlc3RzX3VuaXR0ZXN0LnB5CisrKyBiL1dlYktpdFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHNfdW5pdHRlc3QucHkKQEAg
LTcyLDYgKzcyLDggQEAgZGVmIHBhc3NpbmdfcnVuKGV4dHJhX2FyZ3M9Tm9uZSwgcG9ydF9vYmo9
Tm9uZSwgcmVjb3JkX3Jlc3VsdHM9RmFsc2UsCiAgICAgICAgIGFyZ3MuZXh0ZW5kKFsnLS1wbGF0
Zm9ybScsICd0ZXN0J10pCiAgICAgaWYgbm90IHJlY29yZF9yZXN1bHRzOgogICAgICAgICBhcmdz
LmFwcGVuZCgnLS1uby1yZWNvcmQtcmVzdWx0cycpCisgICAgaWYgbm90ICctLWNoaWxkLXByb2Nl
c3NlcycgaW4gZXh0cmFfYXJnczoKKyAgICAgICAgYXJncy5leHRlbmQoWyctLXdvcmtlcnMtYXJl
JywgJ2lubGluZSddKQogICAgIGFyZ3MuZXh0ZW5kKGV4dHJhX2FyZ3MpCiAgICAgaWYgbm90IHRl
c3RzX2luY2x1ZGVkOgogICAgICAgICAjIFdlIHVzZSB0aGUgZ2xvYiB0byB0ZXN0IHRoYXQgZ2xv
YmJpbmcgd29ya3MuCkBAIC05Miw2ICs5NCw4IEBAIGRlZiBsb2dnaW5nX3J1bihleHRyYV9hcmdz
PU5vbmUsIHBvcnRfb2JqPU5vbmUsIHRlc3RzX2luY2x1ZGVkPUZhbHNlKToKICAgICBhcmdzID0g
WyctLW5vLXJlY29yZC1yZXN1bHRzJ10KICAgICBpZiBub3QgJy0tcGxhdGZvcm0nIGluIGV4dHJh
X2FyZ3M6CiAgICAgICAgIGFyZ3MuZXh0ZW5kKFsnLS1wbGF0Zm9ybScsICd0ZXN0J10pCisgICAg
aWYgbm90ICctLWNoaWxkLXByb2Nlc3NlcycgaW4gZXh0cmFfYXJnczoKKyAgICAgICAgYXJncy5l
eHRlbmQoWyctLXdvcmtlcnMtYXJlJywgJ2lubGluZSddKQogICAgIGFyZ3MuZXh0ZW5kKGV4dHJh
X2FyZ3MpCiAgICAgaWYgbm90IHRlc3RzX2luY2x1ZGVkOgogICAgICAgICBhcmdzLmV4dGVuZChb
J3Bhc3NlcycsCkBAIC0xMTYsNyArMTIwLDcgQEAgZGVmIGdldF90ZXN0c19ydW4oZXh0cmFfYXJn
cz1Ob25lLCB0ZXN0c19pbmNsdWRlZD1GYWxzZSwgZmxhdHRlbl9iYXRjaGVzPUZhbHNlKToKICAg
ICAgICAgJy0tcHJpbnQnLCAnbm90aGluZycsCiAgICAgICAgICctLXBsYXRmb3JtJywgJ3Rlc3Qn
LAogICAgICAgICAnLS1uby1yZWNvcmQtcmVzdWx0cycsCi0gICAgICAgICctLWNoaWxkLXByb2Nl
c3NlcycsICcxJ10KKyAgICAgICAgJy0td29ya2Vycy1hcmUnLCAnaW5saW5lJ10KICAgICBhcmdz
LmV4dGVuZChleHRyYV9hcmdzKQogICAgIGlmIG5vdCB0ZXN0c19pbmNsdWRlZDoKICAgICAgICAg
IyBOb3QgaW5jbHVkaW5nIGh0dHAgdGVzdHMgc2luY2UgdGhleSBnZXQgcnVuIG91dCBvZiBvcmRl
ciAodGhhdApAQCAtNDUzLDIwICs0NTcsMTAgQEAgY2xhc3MgVGVzdFJ1bm5lclRlc3QodW5pdHRl
c3QuVGVzdENhc2UpOgogICAgICAgICBodG1sID0gcnVubmVyLl9yZXN1bHRzX2h0bWwoWyJ0ZXN0
X3BhdGgiXSwge30sICJUaXRsZSIsIG92ZXJyaWRlX3RpbWU9InRpbWUiKQogICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGh0bWwsIGV4cGVjdGVkX2h0bWwpCiAKLSAgICBkZWYgcXVldWVfdG9fbGlz
dChzZWxmLCBxdWV1ZSk6Ci0gICAgICAgIHF1ZXVlX2xpc3QgPSBbXQotICAgICAgICB3aGlsZShU
cnVlKToKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBxdWV1ZV9saXN0LmFwcGVu
ZChxdWV1ZS5nZXRfbm93YWl0KCkpCi0gICAgICAgICAgICBleGNlcHQgUXVldWUuRW1wdHk6Ci0g
ICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgcmV0dXJuIHF1ZXVlX2xpc3QKLQotICAgIGRl
ZiB0ZXN0X2dldF90ZXN0X2ZpbGVfcXVldWUoc2VsZik6Ci0gICAgICAgICMgVGVzdCB0aGF0IF9n
ZXRfdGVzdF9maWxlX3F1ZXVlIGluIHJ1bl93ZWJraXRfdGVzdHMuVGVzdFJ1bm5lciByZWFsbHkK
KyAgICBkZWYgdGVzdF9zaGFyZF90ZXN0cyhzZWxmKToKKyAgICAgICAgIyBUZXN0IHRoYXQgX3No
YXJkX3Rlc3RzIGluIHJ1bl93ZWJraXRfdGVzdHMuVGVzdFJ1bm5lciByZWFsbHkKICAgICAgICAg
IyBwdXQgdGhlIGh0dHAgdGVzdHMgZmlyc3QgaW4gdGhlIHF1ZXVlLgogICAgICAgICBydW5uZXIg
PSBUZXN0UnVubmVyV3JhcHBlcihwb3J0PU1vY2soKSwgb3B0aW9ucz1Nb2NrKCksIHByaW50ZXI9
TW9jaygpKQotICAgICAgICBydW5uZXIuX29wdGlvbnMuZXhwZXJpbWVudGFsX2Z1bGx5X3BhcmFs
bGVsID0gRmFsc2UKIAogICAgICAgICB0ZXN0X2xpc3QgPSBbCiAgICAgICAgICAgIkxheW91dFRl
c3RzL3dlYnNvY2tldC90ZXN0cy91bmljb2RlLmh0bSIsCkBAIC00ODcsMTkgKzQ4MSwxNSBAQCBj
bGFzcyBUZXN0UnVubmVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgICAgJ0xheW91
dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvc3VwcG9ydGVkLXhtbC1jb250ZW50LXR5
cGVzLmh0bWwnLAogICAgICAgICBdKQogCi0gICAgICAgIHJ1bm5lci5fb3B0aW9ucy5jaGlsZF9w
cm9jZXNzZXMgPSAxCi0gICAgICAgIHRlc3RfcXVldWVfZm9yX3NpbmdsZV90aHJlYWQgPSBydW5u
ZXIuX2dldF90ZXN0X2ZpbGVfcXVldWUodGVzdF9saXN0KQotICAgICAgICBydW5uZXIuX29wdGlv
bnMuY2hpbGRfcHJvY2Vzc2VzID0gMgotICAgICAgICB0ZXN0X3F1ZXVlX2Zvcl9tdWx0aV90aHJl
YWQgPSBydW5uZXIuX2dldF90ZXN0X2ZpbGVfcXVldWUodGVzdF9saXN0KQotCi0gICAgICAgIHNp
bmdsZV90aHJlYWRfcmVzdWx0cyA9IHNlbGYucXVldWVfdG9fbGlzdCh0ZXN0X3F1ZXVlX2Zvcl9z
aW5nbGVfdGhyZWFkKQotICAgICAgICBtdWx0aV90aHJlYWRfcmVzdWx0cyA9IHNlbGYucXVldWVf
dG9fbGlzdCh0ZXN0X3F1ZXVlX2Zvcl9tdWx0aV90aHJlYWQpCisgICAgICAgIHNpbmdsZV90aHJl
YWRfcmVzdWx0cyA9IHJ1bm5lci5fc2hhcmRfdGVzdHModGVzdF9saXN0LCBUcnVlKQorICAgICAg
ICBtdWx0aV90aHJlYWRfcmVzdWx0cyA9IHJ1bm5lci5fc2hhcmRfdGVzdHModGVzdF9saXN0LCBG
YWxzZSkKIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJ0ZXN0c190b19odHRwX2xvY2siLCBz
aW5nbGVfdGhyZWFkX3Jlc3VsdHNbMF1bMF0pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhw
ZWN0ZWRfdGVzdHNfdG9faHR0cF9sb2NrLCBzZXQoc2luZ2xlX3RocmVhZF9yZXN1bHRzWzBdWzFd
KSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgidGVzdHNfdG9faHR0cF9sb2NrIiwgbXVsdGlf
dGhyZWFkX3Jlc3VsdHNbMF1bMF0pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWRf
dGVzdHNfdG9faHR0cF9sb2NrLCBzZXQobXVsdGlfdGhyZWFkX3Jlc3VsdHNbMF1bMV0pKQogCisK
IGNsYXNzIERyeXJ1blRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICMgRklYTUU6IGl0J3Mg
aGFyZCB0byBrbm93IHdoaWNoIHBsYXRmb3JtcyBhcmUgc2FmZSB0byB0ZXN0OyB0aGUKICAgICAj
IGNocm9taXVtIHBsYXRmb3JtcyByZXF1aXJlIGEgY2hyb21pdW0gY2hlY2tvdXQsIGFuZCB0aGUg
bWFjIHBsYXRmb3JtCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>74453</attachid>
            <date>2010-11-19 18:05:34 -0800</date>
            <delta_ts>2010-11-22 17:40:36 -0800</delta_ts>
            <desc>merge to tip of tree (r72458)</desc>
            <filename>bug-49773-20101119180532.patch</filename>
            <type>text/plain</type>
            <size>11443</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCA3ZTY0NzkzNDg3MWFmZDViMGUyMjRiODM3NzQ3ODk1Yzg5OWUzYTIwLi5mZTE0ZTY0
NzUxNTcyMTQ1MTQ5ZjIzY2Q3ZjEyODNhN2ZmNzc2MGIyIDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAK
KzIwMTAtMTEtMTggIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBjbGVh
bnMgdXAgdGhlIGxvZ2ljIHVzZWQgdG8gc2hhcmQgdGVzdHMgaW50byBncm91cHMgYQorICAgICAg
ICBiaXQgYW5kIGFkZHMgdGhlIC0td29ya2Vycy1hcmUgZmxhZyB0byBOUldULiBUaGUgZmxhZyBp
cyBvbmx5CisgICAgICAgIHVzZWQgYXQgdGhlIG1vbWVudCB0byBjb250cm9sIHdoZXRoZXIgdG8g
cnVuIHNpbmdsZS10aHJlYWRlZCBvcgorICAgICAgICBub3QsIGJ1dCBldmVudHVhbGx5IHdpbGwg
YWxzbyBhbGxvdyB0b2dnbGluZyBiZXR3ZWVuIHRocmVhZHMgYW5kCisgICAgICAgIHByb2Nlc3Nl
cy4KKworICAgICAgICBBbHNvIGFkZCBhIG1pbm9yIGNsZWFudXAgd2l0aCBfdGVzdF9pc19zbG93
KCksIHdoaWNoIGp1c3QKKyAgICAgICAgZWxpbWluYXRlcyBzb21lIHJlcGV0aXRpb24gYW5kIGdp
dmVzIHNsaWdodGx5IGJldHRlciBlbmNhcHN1bGF0aW9uLgorCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00OTc3MworCisgICAgICAgICogU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weToKKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzX3VuaXR0ZXN0LnB5Ogor
CiAyMDEwLTExLTE5ICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IFRvbnkgQ2hhbmcuCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5IGIvV2ViS2l0VG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weQppbmRl
eCA5MTI4YWU4NTQyYmI0Y2JkNGM5ZDlhNWU5Nzk5ZWZmMmI0MmI0OGQ5Li4yZWFiZmQ1NmUxYzc4
MTg3YzA2MzhiZWQyZTBkMjdhZTAyYjExZDJmIDEwMDc1NQotLS0gYS9XZWJLaXRUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5CisrKyBiL1dlYktp
dFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMucHkK
QEAgLTQ4MSw3ICs0ODEsNyBAQCBjbGFzcyBUZXN0UnVubmVyOgogICAgICAgICAiIiJSZXR1cm5z
IHRoZSBhcHByb3ByaWF0ZSBUZXN0SW5wdXQgb2JqZWN0IGZvciB0aGUgZmlsZS4gTW9zdGx5IHRo
aXMKICAgICAgICAgaXMgdXNlZCBmb3IgbG9va2luZyB1cCB0aGUgdGltZW91dCB2YWx1ZSAoaW4g
bXMpIHRvIHVzZSBmb3IgdGhlIGdpdmVuCiAgICAgICAgIHRlc3QuIiIiCi0gICAgICAgIGlmIHNl
bGYuX2V4cGVjdGF0aW9ucy5oYXNfbW9kaWZpZXIodGVzdF9maWxlLCB0ZXN0X2V4cGVjdGF0aW9u
cy5TTE9XKToKKyAgICAgICAgaWYgc2VsZi5fdGVzdF9pc19zbG93KHRlc3RfZmlsZSk6CiAgICAg
ICAgICAgICByZXR1cm4gVGVzdElucHV0KHRlc3RfZmlsZSwgc2VsZi5fb3B0aW9ucy5zbG93X3Rp
bWVfb3V0X21zKQogICAgICAgICByZXR1cm4gVGVzdElucHV0KHRlc3RfZmlsZSwgc2VsZi5fb3B0
aW9ucy50aW1lX291dF9tcykKIApAQCAtNDkxLDIzICs0OTEsMjMgQEAgY2xhc3MgVGVzdFJ1bm5l
cjoKICAgICAgICAgc3BsaXRfcGF0aCA9IHRlc3RfZmlsZS5zcGxpdChvcy5zZXApCiAgICAgICAg
IHJldHVybiAnaHR0cCcgaW4gc3BsaXRfcGF0aCBvciAnd2Vic29ja2V0JyBpbiBzcGxpdF9wYXRo
CiAKLSAgICBkZWYgX2dldF90ZXN0X2ZpbGVfcXVldWUoc2VsZiwgdGVzdF9maWxlcyk6Ci0gICAg
ICAgICIiIkNyZWF0ZSB0aGUgdGhyZWFkIHNhZmUgcXVldWUgb2YgbGlzdHMgb2YgKHRlc3QgZmls
ZW5hbWVzLCB0ZXN0IFVSSXMpCi0gICAgICAgIHR1cGxlcy4gRWFjaCBUZXN0U2hlbGxUaHJlYWQg
cHVsbHMgYSBsaXN0IGZyb20gdGhpcyBxdWV1ZSBhbmQgcnVucwotICAgICAgICB0aG9zZSB0ZXN0
cyBpbiBvcmRlciBiZWZvcmUgZ3JhYmJpbmcgdGhlIG5leHQgYXZhaWxhYmxlIGxpc3QuCisgICAg
ZGVmIF90ZXN0X2lzX3Nsb3coc2VsZiwgdGVzdF9maWxlKToKKyAgICAgICAgcmV0dXJuIHNlbGYu
X2V4cGVjdGF0aW9ucy5oYXNfbW9kaWZpZXIodGVzdF9maWxlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2V4cGVjdGF0aW9ucy5TTE9XKQogCi0g
ICAgICAgIFNoYXJkIHRoZSBsaXN0cyBieSBkaXJlY3RvcnkuIFRoaXMgaGVscHMgZW5zdXJlIHRo
YXQgdGVzdHMgdGhhdCBkZXBlbmQKLSAgICAgICAgb24gZWFjaCBvdGhlciAoYWthIGJhZCB0ZXN0
cyEpIGNvbnRpbnVlIHRvIHJ1biB0b2dldGhlciBhcyBtb3N0Ci0gICAgICAgIGNyb3NzLXRlc3Rz
IGRlcGVuZGVuY2llcyB0ZW5kIHRvIG9jY3VyIHdpdGhpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisg
ICAgZGVmIF9zaGFyZF90ZXN0cyhzZWxmLCB0ZXN0X2ZpbGVzLCBzaW5nbGVfdGhyZWFkZWQpOgor
ICAgICAgICAiIiJHcm91cHMgdGVzdHMgaW50byBiYXRjaGVzLgorICAgICAgICBUaGlzIGhlbHBz
IGVuc3VyZSB0aGF0IHRlc3RzIHRoYXQgZGVwZW5kIG9uIGVhY2ggb3RoZXIgKGFrYSBiYWQgdGVz
dHMhKQorICAgICAgICBjb250aW51ZSB0byBydW4gdG9nZXRoZXIgYXMgbW9zdCBjcm9zcy10ZXN0
cyBkZXBlbmRlbmNpZXMgdGVuZCB0bworICAgICAgICBvY2N1ciB3aXRoaW4gdGhlIHNhbWUgZGly
ZWN0b3J5LgogCiAgICAgICAgIFJldHVybjoKLSAgICAgICAgICBUaGUgUXVldWUgb2YgbGlzdHMg
b2YgVGVzdElucHV0IG9iamVjdHMuCisgICAgICAgICAgICBBIGxpc3Qgb2YgbGlzdHMgb2YgVGVz
dElucHV0IG9iamVjdHMuCiAgICAgICAgICIiIgogCiAgICAgICAgIHRlc3RfbGlzdHMgPSBbXQog
ICAgICAgICB0ZXN0c190b19odHRwX2xvY2sgPSBbXQotICAgICAgICBpZiAoc2VsZi5fb3B0aW9u
cy5leHBlcmltZW50YWxfZnVsbHlfcGFyYWxsZWwgb3IKLSAgICAgICAgICAgIHNlbGYuX2lzX3Np
bmdsZV90aHJlYWRlZCgpKToKKyAgICAgICAgaWYgc2luZ2xlX3RocmVhZGVkOgogICAgICAgICAg
ICAgZm9yIHRlc3RfZmlsZSBpbiB0ZXN0X2ZpbGVzOgogICAgICAgICAgICAgICAgIHRlc3RfaW5w
dXQgPSBzZWxmLl9nZXRfdGVzdF9pbnB1dF9mb3JfZmlsZSh0ZXN0X2ZpbGUpCiAgICAgICAgICAg
ICAgICAgaWYgc2VsZi5fdGVzdF9yZXF1aXJlc19sb2NrKHRlc3RfZmlsZSk6CkBAIC01NDYsMTAg
KzU0Niw3IEBAIGNsYXNzIFRlc3RSdW5uZXI6CiAgICAgICAgICAgICB0ZXN0c190b19odHRwX2xv
Y2sucmV2ZXJzZSgpCiAgICAgICAgICAgICB0ZXN0X2xpc3RzLmluc2VydCgwLCAoInRlc3RzX3Rv
X2h0dHBfbG9jayIsIHRlc3RzX3RvX2h0dHBfbG9jaykpCiAKLSAgICAgICAgZmlsZW5hbWVfcXVl
dWUgPSBRdWV1ZS5RdWV1ZSgpCi0gICAgICAgIGZvciBpdGVtIGluIHRlc3RfbGlzdHM6Ci0gICAg
ICAgICAgICBmaWxlbmFtZV9xdWV1ZS5wdXQoaXRlbSkKLSAgICAgICAgcmV0dXJuIGZpbGVuYW1l
X3F1ZXVlCisgICAgICAgIHJldHVybiB0ZXN0X2xpc3RzCiAKICAgICBkZWYgX2NvbnRhaW5zX3Rl
c3RzKHNlbGYsIHN1YmRpcik6CiAgICAgICAgIGZvciB0ZXN0X2ZpbGUgaW4gc2VsZi5fdGVzdF9m
aWxlczoKQEAgLTU2NCwxMSArNTYxLDE2IEBAIGNsYXNzIFRlc3RSdW5uZXI6CiAgICAgICAgIFJl
dHVybjoKICAgICAgICAgICBUaGUgbGlzdCBvZiB0aHJlYWRzLgogICAgICAgICAiIiIKLSAgICAg
ICAgZmlsZW5hbWVfcXVldWUgPSBzZWxmLl9nZXRfdGVzdF9maWxlX3F1ZXVlKHRlc3RfZmlsZXMp
CisgICAgICAgIG51bV93b3JrZXJzID0gaW50KHNlbGYuX29wdGlvbnMuY2hpbGRfcHJvY2Vzc2Vz
KQorICAgICAgICB0ZXN0X2xpc3RzID0gc2VsZi5fc2hhcmRfdGVzdHModGVzdF9maWxlcywKKyAg
ICAgICAgICAgIG51bV93b3JrZXJzID09IDEgb3Igc2VsZi5fb3B0aW9ucy5leHBlcmltZW50YWxf
ZnVsbHlfcGFyYWxsZWwpCisgICAgICAgIGZpbGVuYW1lX3F1ZXVlID0gUXVldWUuUXVldWUoKQor
ICAgICAgICBmb3IgaXRlbSBpbiB0ZXN0X2xpc3RzOgorICAgICAgICAgICAgZmlsZW5hbWVfcXVl
dWUucHV0KGl0ZW0pCiAKICAgICAgICAgIyBJbnN0YW50aWF0ZSBUZXN0U2hlbGxUaHJlYWRzIGFu
ZCBzdGFydCB0aGVtLgogICAgICAgICB0aHJlYWRzID0gW10KLSAgICAgICAgZm9yIHdvcmtlcl9u
dW1iZXIgaW4geHJhbmdlKGludChzZWxmLl9vcHRpb25zLmNoaWxkX3Byb2Nlc3NlcykpOgorICAg
ICAgICBmb3Igd29ya2VyX251bWJlciBpbiB4cmFuZ2UobnVtX3dvcmtlcnMpOgogICAgICAgICAg
ICAgdGhyZWFkID0gZHVtcF9yZW5kZXJfdHJlZV90aHJlYWQuVGVzdFNoZWxsVGhyZWFkKHNlbGYu
X3BvcnQsCiAgICAgICAgICAgICAgICAgc2VsZi5fb3B0aW9ucywgd29ya2VyX251bWJlciwKICAg
ICAgICAgICAgICAgICBmaWxlbmFtZV9xdWV1ZSwgc2VsZi5fcmVzdWx0X3F1ZXVlKQpAQCAtNTgx
LDcgKzU4Myw3IEBAIGNsYXNzIFRlc3RSdW5uZXI6CiAgICAgICAgIHJldHVybiB0aHJlYWRzCiAK
ICAgICBkZWYgX2lzX3NpbmdsZV90aHJlYWRlZChzZWxmKToKLSAgICAgICAgIiIiUmV0dXJucyB3
aGV0aGVyIHdlIHNob3VsZCBydW4gYWxsIHRoZSB0ZXN0cyBpbiB0aGUgbWFpbiB0aHJlYWQuIiIi
CisgICAgICAgICIiIlJldHVybnMgd2hldGhlciB0byBwbHVyYWxpemUgbG9nIG1lc3NhZ2VzIGFi
b3V0IERSVCBpbnN0YW5jZXMuIiIiCiAgICAgICAgIHJldHVybiBpbnQoc2VsZi5fb3B0aW9ucy5j
aGlsZF9wcm9jZXNzZXMpID09IDEKIAogICAgIGRlZiBfcnVuX3Rlc3RzKHNlbGYsIGZpbGVfbGlz
dCwgcmVzdWx0X3N1bW1hcnkpOgpAQCAtOTI2LDYgKzkyOCw3IEBAIGNsYXNzIFRlc3RSdW5uZXI6
CiAgICAgICAgICAgICBwLnByaW50X2NvbmZpZygiUnVubmluZyAlcyAlc3MgaW4gcGFyYWxsZWwi
ICUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxmLl9vcHRpb25zLmNoaWxkX3Byb2Nl
c3NlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9wb3J0LmRyaXZlcl9uYW1l
KCkpKQorICAgICAgICBwLnByaW50X2NvbmZpZygiV29ya2VycyBhcmUgJXMiICUgc2VsZi5fb3B0
aW9ucy53b3JrZXJzX2FyZSkKICAgICAgICAgcC5wcmludF9jb25maWcoIiIpCiAKICAgICBkZWYg
X3ByaW50X2V4cGVjdGVkX3Jlc3VsdHNfb2ZfdHlwZShzZWxmLCByZXN1bHRfc3VtbWFyeSwKQEAg
LTEwNDAsOCArMTA0Myw3IEBAIGNsYXNzIFRlc3RSdW5uZXI6CiAgICAgICAgIGZvciB0ZXN0X3R1
cGxlIGluIGluZGl2aWR1YWxfdGVzdF90aW1pbmdzOgogICAgICAgICAgICAgZmlsZW5hbWUgPSB0
ZXN0X3R1cGxlLmZpbGVuYW1lCiAgICAgICAgICAgICBpc190aW1lb3V0X2NyYXNoX29yX3Nsb3cg
PSBGYWxzZQotICAgICAgICAgICAgaWYgc2VsZi5fZXhwZWN0YXRpb25zLmhhc19tb2RpZmllcihm
aWxlbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dGVzdF9leHBlY3RhdGlvbnMuU0xPVyk6CisgICAgICAgICAgICBpZiBzZWxmLl90ZXN0X2lzX3Ns
b3coZmlsZW5hbWUpOgogICAgICAgICAgICAgICAgIGlzX3RpbWVvdXRfY3Jhc2hfb3Jfc2xvdyA9
IFRydWUKICAgICAgICAgICAgICAgICBzbG93X3Rlc3RzLmFwcGVuZCh0ZXN0X3R1cGxlKQogCkBA
IC0xMzU2LDggKzEzNTgsMTEgQEAgZGVmIHJ1bihwb3J0LCBvcHRpb25zLCBhcmdzLCByZWd1bGFy
X291dHB1dD1zeXMuc3RkZXJyLAogZGVmIF9zZXRfdXBfZGVyaXZlZF9vcHRpb25zKHBvcnRfb2Jq
LCBvcHRpb25zKToKICAgICAiIiJTZXRzIHRoZSBvcHRpb25zIHZhbHVlcyB0aGF0IGRlcGVuZCBv
biBvdGhlciBvcHRpb25zIHZhbHVlcy4iIiIKIAorICAgIGlmIG9wdGlvbnMud29ya2Vyc19hcmUg
PT0gJ2lubGluZSc6CisgICAgICAgIGlmIG9wdGlvbnMuY2hpbGRfcHJvY2Vzc2VzIGFuZCBpbnQo
b3B0aW9ucy5jaGlsZF9wcm9jZXNzZXMpID4gMToKKyAgICAgICAgICAgIF9sb2cud2FybmluZygi
LS13b3JrZXJzLWFyZT1pbmxpbmUgb3ZlcnJpZGVzIC0tY2hpbGQtcHJvY2Vzc2VzIikKKyAgICAg
ICAgb3B0aW9ucy5jaGlsZF9wcm9jZXNzZXMgPSAiMSIKICAgICBpZiBub3Qgb3B0aW9ucy5jaGls
ZF9wcm9jZXNzZXM6Ci0gICAgICAgICMgRklYTUU6IEludmVzdGlnYXRlIHBlcmYvZmxha2luZXNz
IGltcGFjdCBvZiB1c2luZyBjcHVfY291bnQgKyAxLgogICAgICAgICBvcHRpb25zLmNoaWxkX3By
b2Nlc3NlcyA9IG9zLmVudmlyb24uZ2V0KCJXRUJLSVRfVEVTVF9DSElMRF9QUk9DRVNTRVMiLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cihwb3J0
X29iai5kZWZhdWx0X2NoaWxkX3Byb2Nlc3NlcygpKSkKIApAQCAtMTU4MCw2ICsxNTg1LDEwIEBA
IGRlZiBwYXJzZV9hcmdzKGFyZ3M9Tm9uZSk6CiAgICAgICAgIG9wdHBhcnNlLm1ha2Vfb3B0aW9u
KCItLWNoaWxkLXByb2Nlc3NlcyIsCiAgICAgICAgICAgICBoZWxwPSJOdW1iZXIgb2YgRHVtcFJl
bmRlclRyZWVzIHRvIHJ1biBpbiBwYXJhbGxlbC4iKSwKICAgICAgICAgIyBGSVhNRTogRGlzcGxh
eSBkZWZhdWx0IG51bWJlciBvZiBjaGlsZCBwcm9jZXNzZXMgdGhhdCB3aWxsIHJ1bi4KKyAgICAg
ICAgb3B0cGFyc2UubWFrZV9vcHRpb24oIi0td29ya2Vycy1hcmUiLCBhY3Rpb249InN0b3JlIiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD0idGhyZWFkcyIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGhlbHA9ImNvbnRyb2xzIHdvcmtlciBtb2RlbC4gVmFsaWQg
dmFsdWVzIGFyZSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICInaW5saW5lJyBhbmQg
J3RocmVhZHMnIChkZWZhdWx0KS4iKSwKICAgICAgICAgb3B0cGFyc2UubWFrZV9vcHRpb24oIi0t
ZXhwZXJpbWVudGFsLWZ1bGx5LXBhcmFsbGVsIiwKICAgICAgICAgICAgIGFjdGlvbj0ic3RvcmVf
dHJ1ZSIsIGRlZmF1bHQ9RmFsc2UsCiAgICAgICAgICAgICBoZWxwPSJydW4gYWxsIHRlc3RzIGlu
IHBhcmFsbGVsIiksCkBAIC0xNjQwLDEyICsxNjQ5LDEyIEBAIGRlZiBwYXJzZV9hcmdzKGFyZ3M9
Tm9uZSk6CiAgICAgcmV0dXJuIG9wdGlvbnMsIGFyZ3MKIAogCi0KIGRlZiBtYWluKCk6CiAgICAg
b3B0aW9ucywgYXJncyA9IHBhcnNlX2FyZ3MoKQogICAgIHBvcnRfb2JqID0gcG9ydC5nZXQob3B0
aW9ucy5wbGF0Zm9ybSwgb3B0aW9ucykKICAgICByZXR1cm4gcnVuKHBvcnRfb2JqLCBvcHRpb25z
LCBhcmdzKQogCisKIGlmICdfX21haW5fXycgPT0gX19uYW1lX186CiAgICAgdHJ5OgogICAgICAg
ICBzeXMuZXhpdChtYWluKCkpCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzX3VuaXR0ZXN0LnB5IGIvV2ViS2l0VG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0c191bml0dGVz
dC5weQppbmRleCAzZGZjM2U2MTI2MTRjNWI4YmQzYTMwZGYxY2VmOTU1NmE1MGZhNGM1Li4xYzBj
MjU4OGVkOWY0ZmI5NWIyNWIxYTZjOWQzZGZmNTQ0YTNlNjY4IDEwMDY0NAotLS0gYS9XZWJLaXRU
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzX3VuaXR0
ZXN0LnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1
bl93ZWJraXRfdGVzdHNfdW5pdHRlc3QucHkKQEAgLTcyLDYgKzcyLDggQEAgZGVmIHBhc3Npbmdf
cnVuKGV4dHJhX2FyZ3M9Tm9uZSwgcG9ydF9vYmo9Tm9uZSwgcmVjb3JkX3Jlc3VsdHM9RmFsc2Us
CiAgICAgICAgIGFyZ3MuZXh0ZW5kKFsnLS1wbGF0Zm9ybScsICd0ZXN0J10pCiAgICAgaWYgbm90
IHJlY29yZF9yZXN1bHRzOgogICAgICAgICBhcmdzLmFwcGVuZCgnLS1uby1yZWNvcmQtcmVzdWx0
cycpCisgICAgaWYgbm90ICctLWNoaWxkLXByb2Nlc3NlcycgaW4gZXh0cmFfYXJnczoKKyAgICAg
ICAgYXJncy5leHRlbmQoWyctLXdvcmtlcnMtYXJlJywgJ2lubGluZSddKQogICAgIGFyZ3MuZXh0
ZW5kKGV4dHJhX2FyZ3MpCiAgICAgaWYgbm90IHRlc3RzX2luY2x1ZGVkOgogICAgICAgICAjIFdl
IHVzZSB0aGUgZ2xvYiB0byB0ZXN0IHRoYXQgZ2xvYmJpbmcgd29ya3MuCkBAIC05Miw2ICs5NCw4
IEBAIGRlZiBsb2dnaW5nX3J1bihleHRyYV9hcmdzPU5vbmUsIHBvcnRfb2JqPU5vbmUsIHRlc3Rz
X2luY2x1ZGVkPUZhbHNlKToKICAgICBhcmdzID0gWyctLW5vLXJlY29yZC1yZXN1bHRzJ10KICAg
ICBpZiBub3QgJy0tcGxhdGZvcm0nIGluIGV4dHJhX2FyZ3M6CiAgICAgICAgIGFyZ3MuZXh0ZW5k
KFsnLS1wbGF0Zm9ybScsICd0ZXN0J10pCisgICAgaWYgbm90ICctLWNoaWxkLXByb2Nlc3Nlcycg
aW4gZXh0cmFfYXJnczoKKyAgICAgICAgYXJncy5leHRlbmQoWyctLXdvcmtlcnMtYXJlJywgJ2lu
bGluZSddKQogICAgIGFyZ3MuZXh0ZW5kKGV4dHJhX2FyZ3MpCiAgICAgaWYgbm90IHRlc3RzX2lu
Y2x1ZGVkOgogICAgICAgICBhcmdzLmV4dGVuZChbJ3Bhc3NlcycsCkBAIC0xMTYsNyArMTIwLDcg
QEAgZGVmIGdldF90ZXN0c19ydW4oZXh0cmFfYXJncz1Ob25lLCB0ZXN0c19pbmNsdWRlZD1GYWxz
ZSwgZmxhdHRlbl9iYXRjaGVzPUZhbHNlKToKICAgICAgICAgJy0tcHJpbnQnLCAnbm90aGluZycs
CiAgICAgICAgICctLXBsYXRmb3JtJywgJ3Rlc3QnLAogICAgICAgICAnLS1uby1yZWNvcmQtcmVz
dWx0cycsCi0gICAgICAgICctLWNoaWxkLXByb2Nlc3NlcycsICcxJ10KKyAgICAgICAgJy0td29y
a2Vycy1hcmUnLCAnaW5saW5lJ10KICAgICBhcmdzLmV4dGVuZChleHRyYV9hcmdzKQogICAgIGlm
IG5vdCB0ZXN0c19pbmNsdWRlZDoKICAgICAgICAgIyBOb3QgaW5jbHVkaW5nIGh0dHAgdGVzdHMg
c2luY2UgdGhleSBnZXQgcnVuIG91dCBvZiBvcmRlciAodGhhdApAQCAtNDUzLDIwICs0NTcsMTAg
QEAgY2xhc3MgVGVzdFJ1bm5lclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBodG1s
ID0gcnVubmVyLl9yZXN1bHRzX2h0bWwoWyJ0ZXN0X3BhdGgiXSwge30sICJUaXRsZSIsIG92ZXJy
aWRlX3RpbWU9InRpbWUiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGh0bWwsIGV4cGVjdGVk
X2h0bWwpCiAKLSAgICBkZWYgcXVldWVfdG9fbGlzdChzZWxmLCBxdWV1ZSk6Ci0gICAgICAgIHF1
ZXVlX2xpc3QgPSBbXQotICAgICAgICB3aGlsZShUcnVlKToKLSAgICAgICAgICAgIHRyeToKLSAg
ICAgICAgICAgICAgICBxdWV1ZV9saXN0LmFwcGVuZChxdWV1ZS5nZXRfbm93YWl0KCkpCi0gICAg
ICAgICAgICBleGNlcHQgUXVldWUuRW1wdHk6Ci0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAg
ICAgcmV0dXJuIHF1ZXVlX2xpc3QKLQotICAgIGRlZiB0ZXN0X2dldF90ZXN0X2ZpbGVfcXVldWUo
c2VsZik6Ci0gICAgICAgICMgVGVzdCB0aGF0IF9nZXRfdGVzdF9maWxlX3F1ZXVlIGluIHJ1bl93
ZWJraXRfdGVzdHMuVGVzdFJ1bm5lciByZWFsbHkKKyAgICBkZWYgdGVzdF9zaGFyZF90ZXN0cyhz
ZWxmKToKKyAgICAgICAgIyBUZXN0IHRoYXQgX3NoYXJkX3Rlc3RzIGluIHJ1bl93ZWJraXRfdGVz
dHMuVGVzdFJ1bm5lciByZWFsbHkKICAgICAgICAgIyBwdXQgdGhlIGh0dHAgdGVzdHMgZmlyc3Qg
aW4gdGhlIHF1ZXVlLgogICAgICAgICBydW5uZXIgPSBUZXN0UnVubmVyV3JhcHBlcihwb3J0PU1v
Y2soKSwgb3B0aW9ucz1Nb2NrKCksIHByaW50ZXI9TW9jaygpKQotICAgICAgICBydW5uZXIuX29w
dGlvbnMuZXhwZXJpbWVudGFsX2Z1bGx5X3BhcmFsbGVsID0gRmFsc2UKIAogICAgICAgICB0ZXN0
X2xpc3QgPSBbCiAgICAgICAgICAgIkxheW91dFRlc3RzL3dlYnNvY2tldC90ZXN0cy91bmljb2Rl
Lmh0bSIsCkBAIC00ODcsMTkgKzQ4MSwxNSBAQCBjbGFzcyBUZXN0UnVubmVyVGVzdCh1bml0dGVz
dC5UZXN0Q2FzZSk6CiAgICAgICAgICAgJ0xheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJl
cXVlc3Qvc3VwcG9ydGVkLXhtbC1jb250ZW50LXR5cGVzLmh0bWwnLAogICAgICAgICBdKQogCi0g
ICAgICAgIHJ1bm5lci5fb3B0aW9ucy5jaGlsZF9wcm9jZXNzZXMgPSAxCi0gICAgICAgIHRlc3Rf
cXVldWVfZm9yX3NpbmdsZV90aHJlYWQgPSBydW5uZXIuX2dldF90ZXN0X2ZpbGVfcXVldWUodGVz
dF9saXN0KQotICAgICAgICBydW5uZXIuX29wdGlvbnMuY2hpbGRfcHJvY2Vzc2VzID0gMgotICAg
ICAgICB0ZXN0X3F1ZXVlX2Zvcl9tdWx0aV90aHJlYWQgPSBydW5uZXIuX2dldF90ZXN0X2ZpbGVf
cXVldWUodGVzdF9saXN0KQotCi0gICAgICAgIHNpbmdsZV90aHJlYWRfcmVzdWx0cyA9IHNlbGYu
cXVldWVfdG9fbGlzdCh0ZXN0X3F1ZXVlX2Zvcl9zaW5nbGVfdGhyZWFkKQotICAgICAgICBtdWx0
aV90aHJlYWRfcmVzdWx0cyA9IHNlbGYucXVldWVfdG9fbGlzdCh0ZXN0X3F1ZXVlX2Zvcl9tdWx0
aV90aHJlYWQpCisgICAgICAgIHNpbmdsZV90aHJlYWRfcmVzdWx0cyA9IHJ1bm5lci5fc2hhcmRf
dGVzdHModGVzdF9saXN0LCBUcnVlKQorICAgICAgICBtdWx0aV90aHJlYWRfcmVzdWx0cyA9IHJ1
bm5lci5fc2hhcmRfdGVzdHModGVzdF9saXN0LCBGYWxzZSkKIAogICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKCJ0ZXN0c190b19odHRwX2xvY2siLCBzaW5nbGVfdGhyZWFkX3Jlc3VsdHNbMF1bMF0p
CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWRfdGVzdHNfdG9faHR0cF9sb2NrLCBz
ZXQoc2luZ2xlX3RocmVhZF9yZXN1bHRzWzBdWzFdKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCgidGVzdHNfdG9faHR0cF9sb2NrIiwgbXVsdGlfdGhyZWFkX3Jlc3VsdHNbMF1bMF0pCiAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWRfdGVzdHNfdG9faHR0cF9sb2NrLCBzZXQobXVs
dGlfdGhyZWFkX3Jlc3VsdHNbMF1bMV0pKQogCisKIGNsYXNzIERyeXJ1blRlc3QodW5pdHRlc3Qu
VGVzdENhc2UpOgogICAgICMgRklYTUU6IGl0J3MgaGFyZCB0byBrbm93IHdoaWNoIHBsYXRmb3Jt
cyBhcmUgc2FmZSB0byB0ZXN0OyB0aGUKICAgICAjIGNocm9taXVtIHBsYXRmb3JtcyByZXF1aXJl
IGEgY2hyb21pdW0gY2hlY2tvdXQsIGFuZCB0aGUgbWFjIHBsYXRmb3JtCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>74621</attachid>
            <date>2010-11-22 17:40:40 -0800</date>
            <delta_ts>2010-11-23 16:15:28 -0800</delta_ts>
            <desc>update w/ review feedback, including renaming --workers-are to --worker-model</desc>
            <filename>bug-49773-20101122174039.patch</filename>
            <type>text/plain</type>
            <size>15818</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCBiYzE3ZTgxMGFiMTE5MmM5YjIyNjI5MjdlZTlkOGQwNjYwZWJhMWI1Li5jM2QyZmM2
NzU5OWQ4MmM5MDMwZmU4MTFiZDUzZTdjNzgzMTRkZmZiIDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAK
KzIwMTAtMTEtMTggIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBjbGVh
bnMgdXAgdGhlIGxvZ2ljIHVzZWQgdG8gc2hhcmQgdGVzdHMgaW50byBncm91cHMgYQorICAgICAg
ICBiaXQgYW5kIGFkZHMgdGhlIC0td29ya2VyLW1vZGVsIGZsYWcgdG8gTlJXVC4gVGhlIGZsYWcg
aXMgb25seQorICAgICAgICB1c2VkIGF0IHRoZSBtb21lbnQgdG8gY29udHJvbCB3aGV0aGVyIHRv
IHJ1biBzaW5nbGUtdGhyZWFkZWQgb3IKKyAgICAgICAgbm90LCBidXQgZXZlbnR1YWxseSB3aWxs
IGFsc28gYWxsb3cgdG9nZ2xpbmcgYmV0d2VlbiB0aHJlYWRzIGFuZAorICAgICAgICBwcm9jZXNz
ZXMuCisKKyAgICAgICAgQWxzbyBhZGQgYSBtaW5vciBjbGVhbnVwIHdpdGggX3Rlc3RfaXNfc2xv
dygpLCB3aGljaCBqdXN0CisgICAgICAgIGVsaW1pbmF0ZXMgc29tZSByZXBldGl0aW9uIGFuZCBn
aXZlcyBzbGlnaHRseSBiZXR0ZXIgZW5jYXBzdWxhdGlvbi4KKworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDk3NzMKKworICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMucHk6CisgICAgICAgICogU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0c191bml0dGVzdC5weToK
KwogMjAxMC0xMS0yMiAgRGlyayBQcmFua2UgIDxkcHJhbmtlQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBUb255IENoYW5nLgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weSBiL1dlYktpdFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMucHkKaW5k
ZXggOWJiNzYwNDdmNzI5MjhiNGY2MzJhY2Y0Y2NhM2JlMmM4NGFiNDU4ZS4uMWNlYWVlOTIzNjdj
MzgyZDQ3YzcxZmI5Y2VlOTVlNDdhYmNlM2ZkZCAxMDA3NTUKLS0tIGEvV2ViS2l0VG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weQorKysgYi9XZWJL
aXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5
CkBAIC00ODUsNyArNDg1LDcgQEAgY2xhc3MgVGVzdFJ1bm5lcjoKICAgICAgICAgIiIiUmV0dXJu
cyB0aGUgYXBwcm9wcmlhdGUgVGVzdElucHV0IG9iamVjdCBmb3IgdGhlIGZpbGUuIE1vc3RseSB0
aGlzCiAgICAgICAgIGlzIHVzZWQgZm9yIGxvb2tpbmcgdXAgdGhlIHRpbWVvdXQgdmFsdWUgKGlu
IG1zKSB0byB1c2UgZm9yIHRoZSBnaXZlbgogICAgICAgICB0ZXN0LiIiIgotICAgICAgICBpZiBz
ZWxmLl9leHBlY3RhdGlvbnMuaGFzX21vZGlmaWVyKHRlc3RfZmlsZSwgdGVzdF9leHBlY3RhdGlv
bnMuU0xPVyk6CisgICAgICAgIGlmIHNlbGYuX3Rlc3RfaXNfc2xvdyh0ZXN0X2ZpbGUpOgogICAg
ICAgICAgICAgcmV0dXJuIFRlc3RJbnB1dCh0ZXN0X2ZpbGUsIHNlbGYuX29wdGlvbnMuc2xvd190
aW1lX291dF9tcykKICAgICAgICAgcmV0dXJuIFRlc3RJbnB1dCh0ZXN0X2ZpbGUsIHNlbGYuX29w
dGlvbnMudGltZV9vdXRfbXMpCiAKQEAgLTQ5NSwyMyArNDk1LDMwIEBAIGNsYXNzIFRlc3RSdW5u
ZXI6CiAgICAgICAgIHNwbGl0X3BhdGggPSB0ZXN0X2ZpbGUuc3BsaXQob3Muc2VwKQogICAgICAg
ICByZXR1cm4gJ2h0dHAnIGluIHNwbGl0X3BhdGggb3IgJ3dlYnNvY2tldCcgaW4gc3BsaXRfcGF0
aAogCi0gICAgZGVmIF9nZXRfdGVzdF9maWxlX3F1ZXVlKHNlbGYsIHRlc3RfZmlsZXMpOgotICAg
ICAgICAiIiJDcmVhdGUgdGhlIHRocmVhZCBzYWZlIHF1ZXVlIG9mIGxpc3RzIG9mICh0ZXN0IGZp
bGVuYW1lcywgdGVzdCBVUklzKQotICAgICAgICB0dXBsZXMuIEVhY2ggVGVzdFNoZWxsVGhyZWFk
IHB1bGxzIGEgbGlzdCBmcm9tIHRoaXMgcXVldWUgYW5kIHJ1bnMKLSAgICAgICAgdGhvc2UgdGVz
dHMgaW4gb3JkZXIgYmVmb3JlIGdyYWJiaW5nIHRoZSBuZXh0IGF2YWlsYWJsZSBsaXN0LgorICAg
IGRlZiBfdGVzdF9pc19zbG93KHNlbGYsIHRlc3RfZmlsZSk6CisgICAgICAgIHJldHVybiBzZWxm
Ll9leHBlY3RhdGlvbnMuaGFzX21vZGlmaWVyKHRlc3RfZmlsZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9leHBlY3RhdGlvbnMuU0xPVykKIAot
ICAgICAgICBTaGFyZCB0aGUgbGlzdHMgYnkgZGlyZWN0b3J5LiBUaGlzIGhlbHBzIGVuc3VyZSB0
aGF0IHRlc3RzIHRoYXQgZGVwZW5kCi0gICAgICAgIG9uIGVhY2ggb3RoZXIgKGFrYSBiYWQgdGVz
dHMhKSBjb250aW51ZSB0byBydW4gdG9nZXRoZXIgYXMgbW9zdAotICAgICAgICBjcm9zcy10ZXN0
cyBkZXBlbmRlbmNpZXMgdGVuZCB0byBvY2N1ciB3aXRoaW4gdGhlIHNhbWUgZGlyZWN0b3J5Lgor
ICAgIGRlZiBfc2hhcmRfdGVzdHMoc2VsZiwgdGVzdF9maWxlcywgdXNlX3JlYWxfc2hhcmRzKToK
KyAgICAgICAgIiIiR3JvdXBzIHRlc3RzIGludG8gYmF0Y2hlcy4KKyAgICAgICAgVGhpcyBoZWxw
cyBlbnN1cmUgdGhhdCB0ZXN0cyB0aGF0IGRlcGVuZCBvbiBlYWNoIG90aGVyIChha2EgYmFkIHRl
c3RzISkKKyAgICAgICAgY29udGludWUgdG8gcnVuIHRvZ2V0aGVyIGFzIG1vc3QgY3Jvc3MtdGVz
dHMgZGVwZW5kZW5jaWVzIHRlbmQgdG8KKyAgICAgICAgb2NjdXIgd2l0aGluIHRoZSBzYW1lIGRp
cmVjdG9yeS4gSWYgdXNlX3JlYWxfc2hhcmRzIGlzIGZhbHNlLCB3ZQorICAgICAgICBwdXQgZWFj
aCAobm9uLUhUVFAvd2Vic29ja2V0KSB0ZXN0IGludG8gaXRzIG93biBzaGFyZCBmb3IgbWF4aW11
bQorICAgICAgICBjb25jdXJyZW5jeSBpbnN0ZWFkIG9mIHRyeWluZyB0byBkbyBhbnkgc29ydCBv
ZiByZWFsIHNoYXJkaW5nLgogCiAgICAgICAgIFJldHVybjoKLSAgICAgICAgICBUaGUgUXVldWUg
b2YgbGlzdHMgb2YgVGVzdElucHV0IG9iamVjdHMuCisgICAgICAgICAgICBBIGxpc3Qgb2YgbGlz
dHMgb2YgVGVzdElucHV0IG9iamVjdHMuCiAgICAgICAgICIiIgorICAgICAgICAjIEZJWE1FOiB3
aGVuIHdlIGFkZGVkIGh0dHAgbG9ja2luZywgd2UgY2hhbmdlZCBob3cgdGhpcyB3b3JrcyBzdWNo
CisgICAgICAgICMgdGhhdCB3ZSBhbHdheXMgbHVtcCBhbGwgb2YgdGhlIEhUVFAgdGhyZWFkcyBp
bnRvIGEgc2luZ2xlIHNoYXJkLgorICAgICAgICAjIFRoYXQgd2lsbCBzbG93IGRvd24gZXhwZXJp
bWVudGFsLWZ1bGx5LXBhcmFsbGVsLCBidXQgaXQncyB1bmNsZWFyCisgICAgICAgICMgd2hhdCB0
aGUgYmVzdCBhbHRlcm5hdGl2ZSBpcyBjb21wbGV0ZWx5IHJldmFtcGluZyBob3cgd2UgdHJhY2sK
KyAgICAgICAgIyB3aGVuIHRvIGdyYWIgdGhlIGxvY2suCiAKICAgICAgICAgdGVzdF9saXN0cyA9
IFtdCiAgICAgICAgIHRlc3RzX3RvX2h0dHBfbG9jayA9IFtdCi0gICAgICAgIGlmIChzZWxmLl9v
cHRpb25zLmV4cGVyaW1lbnRhbF9mdWxseV9wYXJhbGxlbCBvcgotICAgICAgICAgICAgc2VsZi5f
aXNfc2luZ2xlX3RocmVhZGVkKCkpOgorICAgICAgICBpZiBub3QgdXNlX3JlYWxfc2hhcmRzOgog
ICAgICAgICAgICAgZm9yIHRlc3RfZmlsZSBpbiB0ZXN0X2ZpbGVzOgogICAgICAgICAgICAgICAg
IHRlc3RfaW5wdXQgPSBzZWxmLl9nZXRfdGVzdF9pbnB1dF9mb3JfZmlsZSh0ZXN0X2ZpbGUpCiAg
ICAgICAgICAgICAgICAgaWYgc2VsZi5fdGVzdF9yZXF1aXJlc19sb2NrKHRlc3RfZmlsZSk6CkBA
IC01NTAsMTAgKzU1Nyw3IEBAIGNsYXNzIFRlc3RSdW5uZXI6CiAgICAgICAgICAgICB0ZXN0c190
b19odHRwX2xvY2sucmV2ZXJzZSgpCiAgICAgICAgICAgICB0ZXN0X2xpc3RzLmluc2VydCgwLCAo
InRlc3RzX3RvX2h0dHBfbG9jayIsIHRlc3RzX3RvX2h0dHBfbG9jaykpCiAKLSAgICAgICAgZmls
ZW5hbWVfcXVldWUgPSBRdWV1ZS5RdWV1ZSgpCi0gICAgICAgIGZvciBpdGVtIGluIHRlc3RfbGlz
dHM6Ci0gICAgICAgICAgICBmaWxlbmFtZV9xdWV1ZS5wdXQoaXRlbSkKLSAgICAgICAgcmV0dXJu
IGZpbGVuYW1lX3F1ZXVlCisgICAgICAgIHJldHVybiB0ZXN0X2xpc3RzCiAKICAgICBkZWYgX2Nv
bnRhaW5zX3Rlc3RzKHNlbGYsIHN1YmRpcik6CiAgICAgICAgIGZvciB0ZXN0X2ZpbGUgaW4gc2Vs
Zi5fdGVzdF9maWxlczoKQEAgLTU2OCwyNSArNTcyLDI5IEBAIGNsYXNzIFRlc3RSdW5uZXI6CiAg
ICAgICAgIFJldHVybjoKICAgICAgICAgICBUaGUgbGlzdCBvZiB0aHJlYWRzLgogICAgICAgICAi
IiIKLSAgICAgICAgZmlsZW5hbWVfcXVldWUgPSBzZWxmLl9nZXRfdGVzdF9maWxlX3F1ZXVlKHRl
c3RfZmlsZXMpCisgICAgICAgIG51bV93b3JrZXJzID0gc2VsZi5fbnVtX3dvcmtlcnMoKQorICAg
ICAgICB0ZXN0X2xpc3RzID0gc2VsZi5fc2hhcmRfdGVzdHModGVzdF9maWxlcywKKyAgICAgICAg
ICAgIG51bV93b3JrZXJzID4gMSBhbmQgbm90IHNlbGYuX29wdGlvbnMuZXhwZXJpbWVudGFsX2Z1
bGx5X3BhcmFsbGVsKQorICAgICAgICBmaWxlbmFtZV9xdWV1ZSA9IFF1ZXVlLlF1ZXVlKCkKKyAg
ICAgICAgZm9yIGl0ZW0gaW4gdGVzdF9saXN0czoKKyAgICAgICAgICAgIGZpbGVuYW1lX3F1ZXVl
LnB1dChpdGVtKQogCiAgICAgICAgICMgSW5zdGFudGlhdGUgVGVzdFNoZWxsVGhyZWFkcyBhbmQg
c3RhcnQgdGhlbS4KICAgICAgICAgdGhyZWFkcyA9IFtdCi0gICAgICAgIGZvciB3b3JrZXJfbnVt
YmVyIGluIHhyYW5nZShpbnQoc2VsZi5fb3B0aW9ucy5jaGlsZF9wcm9jZXNzZXMpKToKKyAgICAg
ICAgZm9yIHdvcmtlcl9udW1iZXIgaW4geHJhbmdlKG51bV93b3JrZXJzKToKICAgICAgICAgICAg
IHRocmVhZCA9IGR1bXBfcmVuZGVyX3RyZWVfdGhyZWFkLlRlc3RTaGVsbFRocmVhZChzZWxmLl9w
b3J0LAogICAgICAgICAgICAgICAgIHNlbGYuX29wdGlvbnMsIHdvcmtlcl9udW1iZXIsCiAgICAg
ICAgICAgICAgICAgZmlsZW5hbWVfcXVldWUsIHNlbGYuX3Jlc3VsdF9xdWV1ZSkKLSAgICAgICAg
ICAgIGlmIHNlbGYuX2lzX3NpbmdsZV90aHJlYWRlZCgpOgotICAgICAgICAgICAgICAgIHRocmVh
ZC5ydW5faW5fbWFpbl90aHJlYWQoc2VsZiwgcmVzdWx0X3N1bW1hcnkpCi0gICAgICAgICAgICBl
bHNlOgorICAgICAgICAgICAgaWYgbnVtX3dvcmtlcnMgPiAxOgogICAgICAgICAgICAgICAgIHRo
cmVhZC5zdGFydCgpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHRocmVhZC5y
dW5faW5fbWFpbl90aHJlYWQoc2VsZiwgcmVzdWx0X3N1bW1hcnkpCiAgICAgICAgICAgICB0aHJl
YWRzLmFwcGVuZCh0aHJlYWQpCiAKICAgICAgICAgcmV0dXJuIHRocmVhZHMKIAotICAgIGRlZiBf
aXNfc2luZ2xlX3RocmVhZGVkKHNlbGYpOgotICAgICAgICAiIiJSZXR1cm5zIHdoZXRoZXIgd2Ug
c2hvdWxkIHJ1biBhbGwgdGhlIHRlc3RzIGluIHRoZSBtYWluIHRocmVhZC4iIiIKLSAgICAgICAg
cmV0dXJuIGludChzZWxmLl9vcHRpb25zLmNoaWxkX3Byb2Nlc3NlcykgPT0gMQorICAgIGRlZiBf
bnVtX3dvcmtlcnMoc2VsZik6CisgICAgICAgIHJldHVybiBpbnQoc2VsZi5fb3B0aW9ucy5jaGls
ZF9wcm9jZXNzZXMpCiAKICAgICBkZWYgX3J1bl90ZXN0cyhzZWxmLCBmaWxlX2xpc3QsIHJlc3Vs
dF9zdW1tYXJ5KToKICAgICAgICAgIiIiUnVucyB0aGUgdGVzdHMgaW4gdGhlIGZpbGVfbGlzdC4K
QEAgLTYwMiw5ICs2MTAsOCBAQCBjbGFzcyBUZXN0UnVubmVyOgogICAgICAgICAgICAgICBpbiB0
aGUgZm9ybSB7ZmlsZW5hbWU6ZmlsZW5hbWUsIHRlc3RfcnVuX3RpbWU6dGVzdF9ydW5fdGltZX0K
ICAgICAgICAgICAgIHJlc3VsdF9zdW1tYXJ5OiBzdW1tYXJ5IG9iamVjdCB0byBwb3B1bGF0ZSB3
aXRoIHRoZSByZXN1bHRzCiAgICAgICAgICIiIgotICAgICAgICAjIEZJWE1FOiBXZSBzaG91bGQg
dXNlIHdlYmtpdHB5LnRvb2wuZ3JhbW1hci5wbHVyYWxpemUgaGVyZS4KICAgICAgICAgcGx1cmFs
ID0gIiIKLSAgICAgICAgaWYgbm90IHNlbGYuX2lzX3NpbmdsZV90aHJlYWRlZCgpOgorICAgICAg
ICBpZiBzZWxmLl9udW1fd29ya2VycygpID4gMToKICAgICAgICAgICAgIHBsdXJhbCA9ICJzIgog
ICAgICAgICBzZWxmLl9wcmludGVyLnByaW50X3VwZGF0ZSgnU3RhcnRpbmcgJXMlcyAuLi4nICUK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGYuX3BvcnQuZHJpdmVyX25h
bWUoKSwgcGx1cmFsKSkKQEAgLTkyNCwxMiArOTMxLDEzIEBAIGNsYXNzIFRlc3RSdW5uZXI6CiAg
ICAgICAgICAgICAgICAgICAgICAgIChzZWxmLl9vcHRpb25zLnRpbWVfb3V0X21zLAogICAgICAg
ICAgICAgICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5zbG93X3RpbWVfb3V0X21zKSkKIAotICAg
ICAgICBpZiBzZWxmLl9pc19zaW5nbGVfdGhyZWFkZWQoKToKKyAgICAgICAgaWYgc2VsZi5fbnVt
X3dvcmtlcnMoKSA9PSAxOgogICAgICAgICAgICAgcC5wcmludF9jb25maWcoIlJ1bm5pbmcgb25l
ICVzIiAlIHNlbGYuX3BvcnQuZHJpdmVyX25hbWUoKSkKICAgICAgICAgZWxzZToKICAgICAgICAg
ICAgIHAucHJpbnRfY29uZmlnKCJSdW5uaW5nICVzICVzcyBpbiBwYXJhbGxlbCIgJQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKHNlbGYuX29wdGlvbnMuY2hpbGRfcHJvY2Vzc2VzLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3BvcnQuZHJpdmVyX25hbWUoKSkpCisgICAg
ICAgIHAucHJpbnRfY29uZmlnKCJXb3JrZXIgbW9kZWw6ICVzIiAlIHNlbGYuX29wdGlvbnMud29y
a2VyX21vZGVsKQogICAgICAgICBwLnByaW50X2NvbmZpZygiIikKIAogICAgIGRlZiBfcHJpbnRf
ZXhwZWN0ZWRfcmVzdWx0c19vZl90eXBlKHNlbGYsIHJlc3VsdF9zdW1tYXJ5LApAQCAtMTA0NCw4
ICsxMDUyLDcgQEAgY2xhc3MgVGVzdFJ1bm5lcjoKICAgICAgICAgZm9yIHRlc3RfdHVwbGUgaW4g
aW5kaXZpZHVhbF90ZXN0X3RpbWluZ3M6CiAgICAgICAgICAgICBmaWxlbmFtZSA9IHRlc3RfdHVw
bGUuZmlsZW5hbWUKICAgICAgICAgICAgIGlzX3RpbWVvdXRfY3Jhc2hfb3Jfc2xvdyA9IEZhbHNl
Ci0gICAgICAgICAgICBpZiBzZWxmLl9leHBlY3RhdGlvbnMuaGFzX21vZGlmaWVyKGZpbGVuYW1l
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2V4
cGVjdGF0aW9ucy5TTE9XKToKKyAgICAgICAgICAgIGlmIHNlbGYuX3Rlc3RfaXNfc2xvdyhmaWxl
bmFtZSk6CiAgICAgICAgICAgICAgICAgaXNfdGltZW91dF9jcmFzaF9vcl9zbG93ID0gVHJ1ZQog
ICAgICAgICAgICAgICAgIHNsb3dfdGVzdHMuYXBwZW5kKHRlc3RfdHVwbGUpCiAKQEAgLTEzNjAs
OCArMTM2NywxMSBAQCBkZWYgcnVuKHBvcnQsIG9wdGlvbnMsIGFyZ3MsIHJlZ3VsYXJfb3V0cHV0
PXN5cy5zdGRlcnIsCiBkZWYgX3NldF91cF9kZXJpdmVkX29wdGlvbnMocG9ydF9vYmosIG9wdGlv
bnMpOgogICAgICIiIlNldHMgdGhlIG9wdGlvbnMgdmFsdWVzIHRoYXQgZGVwZW5kIG9uIG90aGVy
IG9wdGlvbnMgdmFsdWVzLiIiIgogCisgICAgaWYgb3B0aW9ucy53b3JrZXJfbW9kZWwgPT0gJ2lu
bGluZSc6CisgICAgICAgIGlmIG9wdGlvbnMuY2hpbGRfcHJvY2Vzc2VzIGFuZCBpbnQob3B0aW9u
cy5jaGlsZF9wcm9jZXNzZXMpID4gMToKKyAgICAgICAgICAgIF9sb2cud2FybmluZygiLS13b3Jr
ZXItbW9kZWw9aW5saW5lIG92ZXJyaWRlcyAtLWNoaWxkLXByb2Nlc3NlcyIpCisgICAgICAgIG9w
dGlvbnMuY2hpbGRfcHJvY2Vzc2VzID0gIjEiCiAgICAgaWYgbm90IG9wdGlvbnMuY2hpbGRfcHJv
Y2Vzc2VzOgotICAgICAgICAjIEZJWE1FOiBJbnZlc3RpZ2F0ZSBwZXJmL2ZsYWtpbmVzcyBpbXBh
Y3Qgb2YgdXNpbmcgY3B1X2NvdW50ICsgMS4KICAgICAgICAgb3B0aW9ucy5jaGlsZF9wcm9jZXNz
ZXMgPSBvcy5lbnZpcm9uLmdldCgiV0VCS0lUX1RFU1RfQ0hJTERfUFJPQ0VTU0VTIiwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIocG9ydF9vYmou
ZGVmYXVsdF9jaGlsZF9wcm9jZXNzZXMoKSkpCiAKQEAgLTE1ODQsNiArMTU5NCwxMCBAQCBkZWYg
cGFyc2VfYXJncyhhcmdzPU5vbmUpOgogICAgICAgICBvcHRwYXJzZS5tYWtlX29wdGlvbigiLS1j
aGlsZC1wcm9jZXNzZXMiLAogICAgICAgICAgICAgaGVscD0iTnVtYmVyIG9mIER1bXBSZW5kZXJU
cmVlcyB0byBydW4gaW4gcGFyYWxsZWwuIiksCiAgICAgICAgICMgRklYTUU6IERpc3BsYXkgZGVm
YXVsdCBudW1iZXIgb2YgY2hpbGQgcHJvY2Vzc2VzIHRoYXQgd2lsbCBydW4uCisgICAgICAgIG9w
dHBhcnNlLm1ha2Vfb3B0aW9uKCItLXdvcmtlci1tb2RlbCIsIGFjdGlvbj0ic3RvcmUiLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PSJ0aHJlYWRzIiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaGVscD0iY29udHJvbHMgd29ya2VyIG1vZGVsLiBWYWxpZCB2YWx1
ZXMgYXJlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIidpbmxpbmUnIGFuZCAndGhy
ZWFkcycgKGRlZmF1bHQpLiIpLAogICAgICAgICBvcHRwYXJzZS5tYWtlX29wdGlvbigiLS1leHBl
cmltZW50YWwtZnVsbHktcGFyYWxsZWwiLAogICAgICAgICAgICAgYWN0aW9uPSJzdG9yZV90cnVl
IiwgZGVmYXVsdD1GYWxzZSwKICAgICAgICAgICAgIGhlbHA9InJ1biBhbGwgdGVzdHMgaW4gcGFy
YWxsZWwiKSwKQEAgLTE2NDEsOCArMTY1NSwxMSBAQCBkZWYgcGFyc2VfYXJncyhhcmdzPU5vbmUp
OgogCiAgICAgb3B0aW9ucywgYXJncyA9IG9wdGlvbl9wYXJzZXIucGFyc2VfYXJncyhhcmdzKQog
Ci0gICAgcmV0dXJuIG9wdGlvbnMsIGFyZ3MKKyAgICBpZiBvcHRpb25zLndvcmtlcl9tb2RlbCBu
b3QgaW4gKCdpbmxpbmUnLCAndGhyZWFkcycpOgorICAgICAgICBvcHRpb25fcGFyc2VyLmVycm9y
KCJ1bnN1cHBvcnRlZCB2YWx1ZSBmb3IgLS13b3JrZXItbW9kZWw6ICVzIiAlCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgb3B0aW9ucy53b3JrZXJfbW9kZWwpCiAKKyAgICByZXR1cm4gb3B0
aW9ucywgYXJncwogCiAKIGRlZiBtYWluKCk6CkBAIC0xNjUwLDYgKzE2NjcsNyBAQCBkZWYgbWFp
bigpOgogICAgIHBvcnRfb2JqID0gcG9ydC5nZXQob3B0aW9ucy5wbGF0Zm9ybSwgb3B0aW9ucykK
ICAgICByZXR1cm4gcnVuKHBvcnRfb2JqLCBvcHRpb25zLCBhcmdzKQogCisKIGlmICdfX21haW5f
XycgPT0gX19uYW1lX186CiAgICAgdHJ5OgogICAgICAgICBzeXMuZXhpdChtYWluKCkpCmRpZmYg
LS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Vi
a2l0X3Rlc3RzX3VuaXR0ZXN0LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0c191bml0dGVzdC5weQppbmRleCBiZjFmMGFhOTZjMTZm
ODdlOGU5OTM3YjBkNWE0N2Q2YWE5NjYyZjkwLi4wOWEwYzcxOTMzYTA0Yzg0MDU3NTM4Y2U4ODlj
YjkwYTM3ZTczMTg0IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzX3VuaXR0ZXN0LnB5CisrKyBiL1dlYktpdFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHNfdW5pdHRlc3Qu
cHkKQEAgLTcyLDYgKzcyLDggQEAgZGVmIHBhc3NpbmdfcnVuKGV4dHJhX2FyZ3M9Tm9uZSwgcG9y
dF9vYmo9Tm9uZSwgcmVjb3JkX3Jlc3VsdHM9RmFsc2UsCiAgICAgICAgIGFyZ3MuZXh0ZW5kKFsn
LS1wbGF0Zm9ybScsICd0ZXN0J10pCiAgICAgaWYgbm90IHJlY29yZF9yZXN1bHRzOgogICAgICAg
ICBhcmdzLmFwcGVuZCgnLS1uby1yZWNvcmQtcmVzdWx0cycpCisgICAgaWYgbm90ICctLWNoaWxk
LXByb2Nlc3NlcycgaW4gZXh0cmFfYXJnczoKKyAgICAgICAgYXJncy5leHRlbmQoWyctLXdvcmtl
ci1tb2RlbCcsICdpbmxpbmUnXSkKICAgICBhcmdzLmV4dGVuZChleHRyYV9hcmdzKQogICAgIGlm
IG5vdCB0ZXN0c19pbmNsdWRlZDoKICAgICAgICAgIyBXZSB1c2UgdGhlIGdsb2IgdG8gdGVzdCB0
aGF0IGdsb2JiaW5nIHdvcmtzLgpAQCAtOTIsMjEgKzk0LDMwIEBAIGRlZiBsb2dnaW5nX3J1bihl
eHRyYV9hcmdzPU5vbmUsIHBvcnRfb2JqPU5vbmUsIHRlc3RzX2luY2x1ZGVkPUZhbHNlKToKICAg
ICBhcmdzID0gWyctLW5vLXJlY29yZC1yZXN1bHRzJ10KICAgICBpZiBub3QgJy0tcGxhdGZvcm0n
IGluIGV4dHJhX2FyZ3M6CiAgICAgICAgIGFyZ3MuZXh0ZW5kKFsnLS1wbGF0Zm9ybScsICd0ZXN0
J10pCisgICAgaWYgbm90ICctLWNoaWxkLXByb2Nlc3NlcycgaW4gZXh0cmFfYXJnczoKKyAgICAg
ICAgYXJncy5leHRlbmQoWyctLXdvcmtlci1tb2RlbCcsICdpbmxpbmUnXSkKICAgICBhcmdzLmV4
dGVuZChleHRyYV9hcmdzKQogICAgIGlmIG5vdCB0ZXN0c19pbmNsdWRlZDoKICAgICAgICAgYXJn
cy5leHRlbmQoWydwYXNzZXMnLAogICAgICAgICAgICAgICAgICAgICAgJ2h0dHAvdGVzdHMnLAog
ICAgICAgICAgICAgICAgICAgICAgJ3dlYnNvY2tldC90ZXN0cycsCiAgICAgICAgICAgICAgICAg
ICAgICAnZmFpbHVyZXMvZXhwZWN0ZWQvKiddKQotICAgIG9wdGlvbnMsIHBhcnNlZF9hcmdzID0g
cnVuX3dlYmtpdF90ZXN0cy5wYXJzZV9hcmdzKGFyZ3MpCi0gICAgdXNlciA9IE1vY2tVc2VyKCkK
LSAgICBpZiBub3QgcG9ydF9vYmo6Ci0gICAgICAgIHBvcnRfb2JqID0gcG9ydC5nZXQocG9ydF9u
YW1lPW9wdGlvbnMucGxhdGZvcm0sIG9wdGlvbnM9b3B0aW9ucywgdXNlcj11c2VyKQotICAgIGJ1
aWxkYm90X291dHB1dCA9IGFycmF5X3N0cmVhbS5BcnJheVN0cmVhbSgpCi0gICAgcmVndWxhcl9v
dXRwdXQgPSBhcnJheV9zdHJlYW0uQXJyYXlTdHJlYW0oKQotICAgIHJlcyA9IHJ1bl93ZWJraXRf
dGVzdHMucnVuKHBvcnRfb2JqLCBvcHRpb25zLCBwYXJzZWRfYXJncywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBidWlsZGJvdF9vdXRwdXQ9YnVpbGRib3Rfb3V0cHV0LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ3VsYXJfb3V0cHV0PXJlZ3VsYXJfb3V0cHV0KQor
CisgICAgdHJ5OgorICAgICAgICBvYyA9IG91dHB1dGNhcHR1cmUuT3V0cHV0Q2FwdHVyZSgpCisg
ICAgICAgIG9jLmNhcHR1cmVfb3V0cHV0KCkKKyAgICAgICAgb3B0aW9ucywgcGFyc2VkX2FyZ3Mg
PSBydW5fd2Via2l0X3Rlc3RzLnBhcnNlX2FyZ3MoYXJncykKKyAgICAgICAgdXNlciA9IE1vY2tV
c2VyKCkKKyAgICAgICAgaWYgbm90IHBvcnRfb2JqOgorICAgICAgICAgICAgcG9ydF9vYmogPSBw
b3J0LmdldChwb3J0X25hbWU9b3B0aW9ucy5wbGF0Zm9ybSwgb3B0aW9ucz1vcHRpb25zLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyPXVzZXIpCisgICAgICAgIGJ1aWxkYm90
X291dHB1dCA9IGFycmF5X3N0cmVhbS5BcnJheVN0cmVhbSgpCisgICAgICAgIHJlZ3VsYXJfb3V0
cHV0ID0gYXJyYXlfc3RyZWFtLkFycmF5U3RyZWFtKCkKKyAgICAgICAgcmVzID0gcnVuX3dlYmtp
dF90ZXN0cy5ydW4ocG9ydF9vYmosIG9wdGlvbnMsIHBhcnNlZF9hcmdzLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBidWlsZGJvdF9vdXRwdXQ9YnVpbGRib3Rfb3V0cHV0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWd1bGFyX291dHB1dD1yZWd1bGFy
X291dHB1dCkKKyAgICBmaW5hbGx5OgorICAgICAgICBvYy5yZXN0b3JlX291dHB1dCgpCiAgICAg
cmV0dXJuIChyZXMsIGJ1aWxkYm90X291dHB1dCwgcmVndWxhcl9vdXRwdXQsIHVzZXIpCiAKIApA
QCAtMTE2LDcgKzEyNyw3IEBAIGRlZiBnZXRfdGVzdHNfcnVuKGV4dHJhX2FyZ3M9Tm9uZSwgdGVz
dHNfaW5jbHVkZWQ9RmFsc2UsIGZsYXR0ZW5fYmF0Y2hlcz1GYWxzZSk6CiAgICAgICAgICctLXBy
aW50JywgJ25vdGhpbmcnLAogICAgICAgICAnLS1wbGF0Zm9ybScsICd0ZXN0JywKICAgICAgICAg
Jy0tbm8tcmVjb3JkLXJlc3VsdHMnLAotICAgICAgICAnLS1jaGlsZC1wcm9jZXNzZXMnLCAnMSdd
CisgICAgICAgICctLXdvcmtlci1tb2RlbCcsICdpbmxpbmUnXQogICAgIGFyZ3MuZXh0ZW5kKGV4
dHJhX2FyZ3MpCiAgICAgaWYgbm90IHRlc3RzX2luY2x1ZGVkOgogICAgICAgICAjIE5vdCBpbmNs
dWRpbmcgaHR0cCB0ZXN0cyBzaW5jZSB0aGV5IGdldCBydW4gb3V0IG9mIG9yZGVyICh0aGF0CkBA
IC0zNjAsOSArMzcxLDI0IEBAIGNsYXNzIE1haW5UZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAg
ICAgICAgdGVzdF9wb3J0ID0gZ2V0X3BvcnRfZm9yX3J1bihiYXNlX2FyZ3MpCiAgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoTm9uZSwgdGVzdF9wb3J0LnRvbGVyYW5jZV91c2VkX2Zvcl9kaWZmX2lt
YWdlKQogCisgICAgZGVmIHRlc3Rfd29ya2VyX21vZGVsX19pbmxpbmUoc2VsZik6CisgICAgICAg
IHNlbGYuYXNzZXJ0VHJ1ZShwYXNzaW5nX3J1bihbJy0td29ya2VyLW1vZGVsJywgJ2lubGluZSdd
KSkKKworICAgIGRlZiB0ZXN0X3dvcmtlcl9tb2RlbF9fdGhyZWFkcyhzZWxmKToKKyAgICAgICAg
c2VsZi5hc3NlcnRUcnVlKHBhc3NpbmdfcnVuKFsnLS13b3JrZXItbW9kZWwnLCAndGhyZWFkcydd
KSkKKworICAgIGRlZiB0ZXN0X3dvcmtlcl9tb2RlbF9fcHJvY2Vzc2VzKHNlbGYpOgorICAgICAg
ICBzZWxmLmFzc2VydFJhaXNlcyhTeXN0ZW1FeGl0LCBsb2dnaW5nX3J1biwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgWyctLXdvcmtlci1tb2RlbCcsICdwcm9jZXNzZXMnXSkKKworICAgIGRl
ZiB0ZXN0X3dvcmtlcl9tb2RlbF9fdW5rbm93bihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRS
YWlzZXMoU3lzdGVtRXhpdCwgbG9nZ2luZ19ydW4sCisgICAgICAgICAgICAgICAgICAgICAgICAg
IFsnLS13b3JrZXItbW9kZWwnLCAndW5rbm93biddKQorCiBNYWluVGVzdCA9IHNraXBfaWYoTWFp
blRlc3QsIHN5cy5wbGF0Zm9ybSA9PSAnY3lnd2luJyBhbmQgY29tcGFyZV92ZXJzaW9uKHN5cywg
JzIuNicpWzBdIDwgMCwgJ25ldy1ydW4td2Via2l0LXRlc3RzIHRlc3RzIGhhbmcgb24gQ3lnd2lu
IFB5dGhvbiAyLjUuMicpCiAKIAorCiBkZWYgX21vY2tlZF9vcGVuKG9yaWdpbmFsX29wZW4sIGZp
bGVfbGlzdCk6CiAgICAgZGVmIF93cmFwcGVyKG5hbWUsIG1vZGUsIGVuY29kaW5nKToKICAgICAg
ICAgaWYgbmFtZS5maW5kKCItZXhwZWN0ZWQuIikgIT0gLTEgYW5kIG1vZGUuZmluZCgidyIpICE9
IC0xOgpAQCAtNDU0LDIwICs0ODAsMTAgQEAgY2xhc3MgVGVzdFJ1bm5lclRlc3QodW5pdHRlc3Qu
VGVzdENhc2UpOgogICAgICAgICBodG1sID0gcnVubmVyLl9yZXN1bHRzX2h0bWwoWyJ0ZXN0X3Bh
dGgiXSwge30sICJUaXRsZSIsIG92ZXJyaWRlX3RpbWU9InRpbWUiKQogICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGh0bWwsIGV4cGVjdGVkX2h0bWwpCiAKLSAgICBkZWYgcXVldWVfdG9fbGlzdChz
ZWxmLCBxdWV1ZSk6Ci0gICAgICAgIHF1ZXVlX2xpc3QgPSBbXQotICAgICAgICB3aGlsZShUcnVl
KToKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBxdWV1ZV9saXN0LmFwcGVuZChx
dWV1ZS5nZXRfbm93YWl0KCkpCi0gICAgICAgICAgICBleGNlcHQgUXVldWUuRW1wdHk6Ci0gICAg
ICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgcmV0dXJuIHF1ZXVlX2xpc3QKLQotICAgIGRlZiB0
ZXN0X2dldF90ZXN0X2ZpbGVfcXVldWUoc2VsZik6Ci0gICAgICAgICMgVGVzdCB0aGF0IF9nZXRf
dGVzdF9maWxlX3F1ZXVlIGluIHJ1bl93ZWJraXRfdGVzdHMuVGVzdFJ1bm5lciByZWFsbHkKKyAg
ICBkZWYgdGVzdF9zaGFyZF90ZXN0cyhzZWxmKToKKyAgICAgICAgIyBUZXN0IHRoYXQgX3NoYXJk
X3Rlc3RzIGluIHJ1bl93ZWJraXRfdGVzdHMuVGVzdFJ1bm5lciByZWFsbHkKICAgICAgICAgIyBw
dXQgdGhlIGh0dHAgdGVzdHMgZmlyc3QgaW4gdGhlIHF1ZXVlLgogICAgICAgICBydW5uZXIgPSBU
ZXN0UnVubmVyV3JhcHBlcihwb3J0PU1vY2soKSwgb3B0aW9ucz1Nb2NrKCksIHByaW50ZXI9TW9j
aygpKQotICAgICAgICBydW5uZXIuX29wdGlvbnMuZXhwZXJpbWVudGFsX2Z1bGx5X3BhcmFsbGVs
ID0gRmFsc2UKIAogICAgICAgICB0ZXN0X2xpc3QgPSBbCiAgICAgICAgICAgIkxheW91dFRlc3Rz
L3dlYnNvY2tldC90ZXN0cy91bmljb2RlLmh0bSIsCkBAIC00ODgsMTkgKzUwNCwxNiBAQCBjbGFz
cyBUZXN0UnVubmVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgICAgJ0xheW91dFRl
c3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvc3VwcG9ydGVkLXhtbC1jb250ZW50LXR5cGVz
Lmh0bWwnLAogICAgICAgICBdKQogCi0gICAgICAgIHJ1bm5lci5fb3B0aW9ucy5jaGlsZF9wcm9j
ZXNzZXMgPSAxCi0gICAgICAgIHRlc3RfcXVldWVfZm9yX3NpbmdsZV90aHJlYWQgPSBydW5uZXIu
X2dldF90ZXN0X2ZpbGVfcXVldWUodGVzdF9saXN0KQotICAgICAgICBydW5uZXIuX29wdGlvbnMu
Y2hpbGRfcHJvY2Vzc2VzID0gMgotICAgICAgICB0ZXN0X3F1ZXVlX2Zvcl9tdWx0aV90aHJlYWQg
PSBydW5uZXIuX2dldF90ZXN0X2ZpbGVfcXVldWUodGVzdF9saXN0KQotCi0gICAgICAgIHNpbmds
ZV90aHJlYWRfcmVzdWx0cyA9IHNlbGYucXVldWVfdG9fbGlzdCh0ZXN0X3F1ZXVlX2Zvcl9zaW5n
bGVfdGhyZWFkKQotICAgICAgICBtdWx0aV90aHJlYWRfcmVzdWx0cyA9IHNlbGYucXVldWVfdG9f
bGlzdCh0ZXN0X3F1ZXVlX2Zvcl9tdWx0aV90aHJlYWQpCisgICAgICAgICMgRklYTUU6IElkZWFs
bHkgdGhlIEhUVFAgdGVzdHMgZG9uJ3QgaGF2ZSB0byBhbGwgYmUgaW4gb25lIHNoYXJkLgorICAg
ICAgICBzaW5nbGVfdGhyZWFkX3Jlc3VsdHMgPSBydW5uZXIuX3NoYXJkX3Rlc3RzKHRlc3RfbGlz
dCwgRmFsc2UpCisgICAgICAgIG11bHRpX3RocmVhZF9yZXN1bHRzID0gcnVubmVyLl9zaGFyZF90
ZXN0cyh0ZXN0X2xpc3QsIFRydWUpCiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgidGVzdHNf
dG9faHR0cF9sb2NrIiwgc2luZ2xlX3RocmVhZF9yZXN1bHRzWzBdWzBdKQogICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGV4cGVjdGVkX3Rlc3RzX3RvX2h0dHBfbG9jaywgc2V0KHNpbmdsZV90aHJl
YWRfcmVzdWx0c1swXVsxXSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoInRlc3RzX3RvX2h0
dHBfbG9jayIsIG11bHRpX3RocmVhZF9yZXN1bHRzWzBdWzBdKQogICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGV4cGVjdGVkX3Rlc3RzX3RvX2h0dHBfbG9jaywgc2V0KG11bHRpX3RocmVhZF9yZXN1
bHRzWzBdWzFdKSkKIAorCiBjbGFzcyBEcnlydW5UZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAg
ICAjIEZJWE1FOiBpdCdzIGhhcmQgdG8ga25vdyB3aGljaCBwbGF0Zm9ybXMgYXJlIHNhZmUgdG8g
dGVzdDsgdGhlCiAgICAgIyBjaHJvbWl1bSBwbGF0Zm9ybXMgcmVxdWlyZSBhIGNocm9taXVtIGNo
ZWNrb3V0LCBhbmQgdGhlIG1hYyBwbGF0Zm9ybQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>