<?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>77143</bug_id>
          
          <creation_ts>2012-01-26 14:40:08 -0800</creation_ts>
          <short_desc>run-webkit-tests calls &quot;nm&quot; when it doesn&apos;t need to</short_desc>
          <delta_ts>2012-01-26 16:03:36 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ojan Vafai">ojan</reporter>
          <assigned_to name="Ojan Vafai">ojan</assigned_to>
          <cc>abarth</cc>
    
    <cc>dpranke</cc>
    
    <cc>eric</cc>
    
    <cc>tony</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>543499</commentid>
    <comment_count>0</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-01-26 14:40:08 -0800</bug_when>
    <thetext>run-webkit-tests calls &quot;nm&quot; when it doesn&apos;t need to</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543501</commentid>
    <comment_count>1</comment_count>
      <attachid>124182</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-01-26 14:42:31 -0800</bug_when>
    <thetext>Created attachment 124182
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543514</commentid>
    <comment_count>2</comment_count>
      <attachid>124182</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-01-26 14:54:40 -0800</bug_when>
    <thetext>Comment on attachment 124182
Patch

A few thoughts:
1.  I&apos;m generally in favor of this change (I like seeing things be faster!)
2.  This starts to feel like these &quot;skipped lists&quot; should just act as filters on the test list
3.  I think we need at least one comment in the code about &quot;why&quot; these calls are used.  To make it clear that we&apos;re trying to avoid the nm call because it&apos;s slow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543528</commentid>
    <comment_count>3</comment_count>
      <attachid>124185</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-01-26 15:03:03 -0800</bug_when>
    <thetext>Created attachment 124185
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543533</commentid>
    <comment_count>4</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-01-26 15:07:08 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 124182 [details])
&gt; 2.  This starts to feel like these &quot;skipped lists&quot; should just act as filters on the test list

I was thinking about something like this too. Specifically, if we initialized TestExpectations *before* we collected the list of tests, we could avoid a considerably amount of duplicate disk IO and we could avoid walking skipped subdirectories entirely in some cases. It would be a tricky refactor though since currently TestExpectations assumes it has the full list of tests and since a more specific line can unskip a specific test in a skipped directory.

In either case, it&apos;s probably a bigger change than I&apos;m willing to make right now.

&gt; 3.  I think we need at least one comment in the code about &quot;why&quot; these calls are used.  To make it clear that we&apos;re trying to avoid the nm call because it&apos;s slow.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543541</commentid>
    <comment_count>5</comment_count>
      <attachid>124185</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-01-26 15:17:26 -0800</bug_when>
    <thetext>Comment on attachment 124185
Patch

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

Commenting on style.  I don&apos;t really know this code.

&gt; Tools/Scripts/webkitpy/layout_tests/port/webkit.py:309
&gt; +        for feature, directories in self._missing_feature_to_skipped_tests().items():

feature is not used so you could use .values() instead of .items().

&gt; Tools/Scripts/webkitpy/layout_tests/port/webkit.py:311
&gt; +            for directory in directories:
&gt; +                for test in test_list:

It looks like you want the pair-wise combination of each test and directory.  You can use itertools.product for this instead of nested loops.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543545</commentid>
    <comment_count>6</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-01-26 15:18:49 -0800</bug_when>
    <thetext>View in context: https://bugs.webkit.org/attachment.cgi?id=124185&amp;action=review

&gt; Tools/Scripts/webkitpy/layout_tests/port/webkit.py:308
&gt; +    def _should_check_for_missing_features(self, test_list):

what happens if test_list == None (or [])? We should still check (since this is equivalent to all tests), but this will return False, won&apos;t it?

(In reply to comment #4)
&gt; (In reply to comment #2)
&gt; &gt; (From update of attachment 124182 [details] [details])
&gt; &gt; 2.  This starts to feel like these &quot;skipped lists&quot; should just act as filters on the test list
&gt; 
&gt; I was thinking about something like this too. Specifically, if we initialized TestExpectations *before* we collected the list of tests, we could avoid a considerably amount of duplicate disk IO and we could avoid walking skipped subdirectories entirely in some cases. It would be a tricky refactor though since currently TestExpectations assumes it has the full list of tests and since a more specific line can unskip a specific test in a skipped directory.
&gt; 

I have long thought that such a change would be the best way to reduce time-to-first-test; as you say, it is a sizeable refactoring and I&apos;ve always had other things to work on (and other lower hanging fruit).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543560</commentid>
    <comment_count>7</comment_count>
      <attachid>124185</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-01-26 15:26:42 -0800</bug_when>
    <thetext>Comment on attachment 124185
Patch

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

&gt;&gt; Tools/Scripts/webkitpy/layout_tests/port/webkit.py:309
&gt;&gt; +        for feature, directories in self._missing_feature_to_skipped_tests().items():
&gt; 
&gt; feature is not used so you could use .values() instead of .items().

Done.

&gt;&gt; Tools/Scripts/webkitpy/layout_tests/port/webkit.py:311
&gt;&gt; +                for test in test_list:
&gt; 
&gt; It looks like you want the pair-wise combination of each test and directory.  You can use itertools.product for this instead of nested loops.

Except I want to bail the first match that I see. Wouldn&apos;t itertools.product be a lot slower? Keep in mind that test_list can be tens of thousands of strings.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543562</commentid>
    <comment_count>8</comment_count>
      <attachid>124185</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-01-26 15:27:49 -0800</bug_when>
    <thetext>Comment on attachment 124185
Patch

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

&gt;&gt;&gt; Tools/Scripts/webkitpy/layout_tests/port/webkit.py:311
&gt;&gt;&gt; +                for test in test_list:
&gt;&gt; 
&gt;&gt; It looks like you want the pair-wise combination of each test and directory.  You can use itertools.product for this instead of nested loops.
&gt; 
&gt; Except I want to bail the first match that I see. Wouldn&apos;t itertools.product be a lot slower? Keep in mind that test_list can be tens of thousands of strings.

itertools.product is a generator, it should be the same speed as 2 nested for loops.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543571</commentid>
    <comment_count>9</comment_count>
      <attachid>124193</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-01-26 15:29:56 -0800</bug_when>
    <thetext>Created attachment 124193
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543573</commentid>
    <comment_count>10</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-01-26 15:32:12 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; what happens if test_list == None (or [])? We should still check (since this is equivalent to all tests), but this will return False, won&apos;t it?

Why is test_list == None/[] equivalent to all test? As best I can tell, the only time we ever pass None/[] through this codepath is in the Rebaseline classes, in which case we probably don&apos;t want to include these tests anyways.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543588</commentid>
    <comment_count>11</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-01-26 15:41:59 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; (In reply to comment #6)
&gt; &gt; what happens if test_list == None (or [])? We should still check (since this is equivalent to all tests), but this will return False, won&apos;t it?
&gt; 
&gt; Why is test_list == None/[] equivalent to all test? As best I can tell, the only time we ever pass None/[] through this codepath is in the Rebaseline classes, in which case we probably don&apos;t want to include these tests anyways.

Ah, sorry, I had the wrong context in my head. When we call port.tests(), None == &quot;find me all the tests&quot;. You&apos;re right, by the time we call skipped_tests from inside TestExpectations, we&apos;re either guaranteed to have all the tests we want to run, or be linting, so this doesn&apos;t matter. Never mind :).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543601</commentid>
    <comment_count>12</comment_count>
      <attachid>124200</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-01-26 15:51:01 -0800</bug_when>
    <thetext>Created attachment 124200
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543602</commentid>
    <comment_count>13</comment_count>
      <attachid>124185</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-01-26 15:51:41 -0800</bug_when>
    <thetext>Comment on attachment 124185
Patch

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

&gt;&gt;&gt;&gt; Tools/Scripts/webkitpy/layout_tests/port/webkit.py:311
&gt;&gt;&gt;&gt; +                for test in test_list:
&gt;&gt;&gt; 
&gt;&gt;&gt; It looks like you want the pair-wise combination of each test and directory.  You can use itertools.product for this instead of nested loops.
&gt;&gt; 
&gt;&gt; Except I want to bail the first match that I see. Wouldn&apos;t itertools.product be a lot slower? Keep in mind that test_list can be tens of thousands of strings.
&gt; 
&gt; itertools.product is a generator, it should be the same speed as 2 nested for loops.

It turned out to be marginally slower in some cases, but not enough to matter. Changed it to use itertools.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543614</commentid>
    <comment_count>14</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-01-26 16:03:36 -0800</bug_when>
    <thetext>Committed r106058: &lt;http://trac.webkit.org/changeset/106058&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124182</attachid>
            <date>2012-01-26 14:42:31 -0800</date>
            <delta_ts>2012-01-26 15:03:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77143-20120126144229.patch</filename>
            <type>text/plain</type>
            <size>10600</size>
            <attacher name="Ojan Vafai">ojan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2MDM4CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggODZlZGMzYWIzOTQwYWQ1ZTgwNWFhNGY2OTkwZmM0NDA4
NTQyZGY1YS4uM2IyZTc2NmVjZDk0NjMzMWVmYjMxMjc0MDlmYjlkMGI2YTBiNTZmNiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0
IEBACisyMDEyLTAxLTI2ICBPamFuIFZhZmFpICA8b2phbkBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgcnVuLXdlYmtpdC10ZXN0cyBjYWxscyAibm0iIHdoZW4gaXQgZG9lc24ndCBuZWVkIHRvCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NzE0MworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElmIHdlIGFyZSBu
b3QgcnVubmluZyBhbnkgdGVzdCB0aGF0IGNhbiBiZSBza2lwcGVkIGJ5IGNoZWNraW5nCisgICAg
ICAgIHRoZSBEUlQgZmVhdHVyZSBsaXN0IG9yIGxvb2tpbmcgYXQgdGhlIGxpc3Qgb2Ygc3ltYm9s
cywgYXZvaWQgY2FsbGluZworICAgICAgICBvdXQgdG8gRFJUIG9yIGNhbGxpbmcgIm5tIi4KKwor
ICAgICAgICBUaGlzIHNhdmVzIH43MDBtcyBvbiBteSBNYWMgUHJvLiBJbiBjYXNlcyB3aGVyZSB5
b3Ugc3RpbGwgaGF2ZSB0byBjYWxsIG91dAorICAgICAgICB0byAibm0iIGl0J3Mgb25seSBhIGNv
dXBsZSBtcyBzbG93ZXIuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9tb2RlbHMvdGVzdF9leHBlY3RhdGlvbnMucHk6CisgICAgICAgIChUZXN0RXhwZWN0YXRpb25z
Ll9faW5pdF9fKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0
L2Jhc2UucHk6CisgICAgICAgIChQb3J0LnNraXBwZWRfdGVzdHMpOgorICAgICAgICAqIFNjcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0LnB5OgorICAgICAgICAoV2ViS2l0
UG9ydC5fc2hvdWxkX2NoZWNrX2Zvcl9taXNzaW5nX2ZlYXR1cmVzKToKKyAgICAgICAgKFdlYktp
dFBvcnQpOgorICAgICAgICAoV2ViS2l0UG9ydC5fc2hvdWxkX2NoZWNrX2Zvcl9taXNzaW5nX3N5
bWJvbHMpOgorICAgICAgICAoV2ViS2l0UG9ydC5fc2tpcHBlZF90ZXN0c19mb3JfdW5zdXBwb3J0
ZWRfZmVhdHVyZXMpOgorICAgICAgICAoV2ViS2l0UG9ydC5za2lwcGVkX2xheW91dF90ZXN0cyk6
CisgICAgICAgIChXZWJLaXRQb3J0LnNraXBwZWRfdGVzdHMpOgorICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0X3VuaXR0ZXN0LnB5OgorICAgICAgICAo
V2ViS2l0UG9ydFRlc3QudGVzdF9za2lwcGVkX2RpcmVjdG9yaWVzX2Zvcl9zeW1ib2xzKToKKyAg
ICAgICAgKHRlc3Rfc2tpcHBlZF9kaXJlY3Rvcmllc19mb3JfZmVhdHVyZXMpOgorICAgICAgICAo
dGVzdF9za2lwcGVkX2RpcmVjdG9yaWVzX2Zvcl9mZWF0dXJlc19ub19tYXRjaGluZ190ZXN0c19p
bl90ZXN0X2xpc3QpOgorICAgICAgICAodGVzdF9za2lwcGVkX2xheW91dF90ZXN0cyk6CisKIDIw
MTItMDEtMjUgIE9qYW4gVmFmYWkgIDxvamFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBQYXJz
aW5nIHRlc3RfZXhwZWNhdGlvbnMudHh0ICsgU2tpcHBlZCBsaXN0cyB0YWtlcyB0b28gbG9uZwpk
aWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbW9kZWxzL3Rl
c3RfZXhwZWN0YXRpb25zLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
bW9kZWxzL3Rlc3RfZXhwZWN0YXRpb25zLnB5CmluZGV4IDcwOTYwZDJkYzZiOWM0MmU3N2NkZjAx
YzA2Yzg2ZGZjM2ZkNTdkODYuLjZhMzBkNGU4ZTA0MTliM2Y4MWFhN2ZiZWE0ZThhMjkxNDJlNmQ4
NzkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL21vZGVs
cy90ZXN0X2V4cGVjdGF0aW9ucy5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9tb2RlbHMvdGVzdF9leHBlY3RhdGlvbnMucHkKQEAgLTcyMiw3ICs3MjIsNyBAQCBj
bGFzcyBUZXN0RXhwZWN0YXRpb25zKG9iamVjdCk6CiAKICAgICAgICAgc2VsZi5fZXhwZWN0YXRp
b25zID0gc2VsZi5fcGFyc2VyLnBhcnNlKGV4cGVjdGF0aW9ucykKICAgICAgICAgc2VsZi5fYWRk
X2V4cGVjdGF0aW9ucyhzZWxmLl9leHBlY3RhdGlvbnMsIG92ZXJyaWRlc19hbGxvd2VkPUZhbHNl
KQotICAgICAgICBzZWxmLl9hZGRfc2tpcHBlZF90ZXN0cyhwb3J0LnNraXBwZWRfdGVzdHMoKSkK
KyAgICAgICAgc2VsZi5fYWRkX3NraXBwZWRfdGVzdHMocG9ydC5za2lwcGVkX3Rlc3RzKHRlc3Rz
KSkKIAogICAgICAgICBpZiBvdmVycmlkZXM6CiAgICAgICAgICAgICBvdmVycmlkZXNfZXhwZWN0
YXRpb25zID0gc2VsZi5fcGFyc2VyLnBhcnNlKG92ZXJyaWRlcykKZGlmZiAtLWdpdCBhL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weSBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weQppbmRleCAzNzk2NmNhMGI5NGQ0
ZDg5MjhlZDVlZDIyMGIzMWYyNjNlNTUxNjdmLi5hOGI5OGZkYTJjMzU2ZjU0MDNmN2M1NjJhOTRi
Njc5MmU4MzNkMmI0IDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9wb3J0L2Jhc2UucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcG9ydC9iYXNlLnB5CkBAIC02MTEsNyArNjExLDcgQEAgY2xhc3MgUG9ydChvYmplY3QpOgog
ICAgIGRlZiBza2lwcGVkX3BlcmZfdGVzdHMoc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLl9l
eHBlY3RhdGlvbnNfZnJvbV9za2lwcGVkX2ZpbGVzKFtzZWxmLnBlcmZfdGVzdHNfZGlyKCldKQog
Ci0gICAgZGVmIHNraXBwZWRfdGVzdHMoc2VsZik6CisgICAgZGVmIHNraXBwZWRfdGVzdHMoc2Vs
ZiwgdGVzdF9saXN0KToKICAgICAgICAgcmV0dXJuIFtdCiAKICAgICBkZWYgc2tpcHNfbGF5b3V0
X3Rlc3Qoc2VsZiwgdGVzdF9uYW1lKToKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcG9ydC93ZWJraXQucHkKaW5kZXggMGMzNWY0OWU5ZmNmNWRjMjNlOWUyNjc1
ODBmODc5NmZkMjQ2MmExMS4uNTVmODVkZDI4MjJhM2IwOTRmN2FiNmIxMGExOThlYzkzZDNkMjYy
NCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93
ZWJraXQucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93
ZWJraXQucHkKQEAgLTMwNSwyMCArMzA1LDM5IEBAIGNsYXNzIFdlYktpdFBvcnQoUG9ydCk6CiAg
ICAgICAgICAgICAiTUhUTUxBcmNoaXZlIjogWyJtaHRtbCJdLAogICAgICAgICB9CiAKLSAgICBk
ZWYgX3NraXBwZWRfdGVzdHNfZm9yX3Vuc3VwcG9ydGVkX2ZlYXR1cmVzKHNlbGYpOgotICAgICAg
ICAjIElmIHRoZSBwb3J0IHN1cHBvcnRzIHJ1bnRpbWUgZmVhdHVyZSBkZXRlY3Rpb24sIGRpc2Fi
bGUgYW55IHRlc3RzCi0gICAgICAgICMgZm9yIGZlYXR1cmVzIG1pc3NpbmcgZnJvbSB0aGUgcnVu
dGltZSBmZWF0dXJlIGxpc3QuCi0gICAgICAgIHN1cHBvcnRlZF9mZWF0dXJlX2xpc3QgPSBzZWxm
Ll9ydW50aW1lX2ZlYXR1cmVfbGlzdCgpCi0gICAgICAgICMgSWYgX3J1bnRpbWVfZmVhdHVyZV9s
aXN0IHJldHVybnMgYSBub24tTm9uZSB2YWx1ZSwgdGhlbiBwcmVmZXIKLSAgICAgICAgIyBydW50
aW1lIGZlYXR1cmUgZGV0ZWN0aW9uIG92ZXIgc3RhdGljIGZlYXR1cmUgZGV0ZWN0aW9uLgotICAg
ICAgICBpZiBzdXBwb3J0ZWRfZmVhdHVyZV9saXN0IGlzIG5vdCBOb25lOgotICAgICAgICAgICAg
cmV0dXJuIHJlZHVjZShvcGVyYXRvci5hZGQsIFtkaXJlY3RvcmllcyBmb3IgZmVhdHVyZSwgZGly
ZWN0b3JpZXMgaW4gc2VsZi5fbWlzc2luZ19mZWF0dXJlX3RvX3NraXBwZWRfdGVzdHMoKS5pdGVt
cygpIGlmIGZlYXR1cmUgbm90IGluIHN1cHBvcnRlZF9mZWF0dXJlX2xpc3RdKQotCi0gICAgICAg
ICMgUnVudGltZSBmZWF0dXJlIGRldGVjdGlvbiBub3Qgc3VwcG9ydGVkLCBmYWxsYmFjayB0byBz
dGF0aWMgZGVjdGVjdGlvbjoKLSAgICAgICAgIyBEaXNhYmxlIGFueSB0ZXN0cyBmb3Igc3ltYm9s
cyBtaXNzaW5nIGZyb20gdGhlIHdlYmNvcmUgc3ltYm9sIHN0cmluZy4KLSAgICAgICAgd2ViY29y
ZV9zeW1ib2xzX3N0cmluZyA9IHNlbGYuX3dlYmNvcmVfc3ltYm9sc19zdHJpbmcoKQotICAgICAg
ICBpZiB3ZWJjb3JlX3N5bWJvbHNfc3RyaW5nIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgcmV0
dXJuIHJlZHVjZShvcGVyYXRvci5hZGQsIFtkaXJlY3RvcmllcyBmb3Igc3ltYm9sX3N1YnN0cmlu
ZywgZGlyZWN0b3JpZXMgaW4gc2VsZi5fbWlzc2luZ19zeW1ib2xfdG9fc2tpcHBlZF90ZXN0cygp
Lml0ZW1zKCkgaWYgc3ltYm9sX3N1YnN0cmluZyBub3QgaW4gd2ViY29yZV9zeW1ib2xzX3N0cmlu
Z10sIFtdKQorICAgIGRlZiBfc2hvdWxkX2NoZWNrX2Zvcl9taXNzaW5nX2ZlYXR1cmVzKHNlbGYs
IHRlc3RfbGlzdCk6CisgICAgICAgIGZvciBmZWF0dXJlLCBkaXJlY3RvcmllcyBpbiBzZWxmLl9t
aXNzaW5nX2ZlYXR1cmVfdG9fc2tpcHBlZF90ZXN0cygpLml0ZW1zKCk6CisgICAgICAgICAgICBm
b3IgZGlyZWN0b3J5IGluIGRpcmVjdG9yaWVzOgorICAgICAgICAgICAgICAgIGZvciB0ZXN0IGlu
IHRlc3RfbGlzdDoKKyAgICAgICAgICAgICAgICAgICAgaWYgdGVzdC5zdGFydHN3aXRoKGRpcmVj
dG9yeSk6CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICByZXR1
cm4gRmFsc2UKKworICAgIGRlZiBfc2hvdWxkX2NoZWNrX2Zvcl9taXNzaW5nX3N5bWJvbHMoc2Vs
ZiwgdGVzdF9saXN0KToKKyAgICAgICAgZm9yIGZlYXR1cmUsIGRpcmVjdG9yaWVzIGluIHNlbGYu
X21pc3Npbmdfc3ltYm9sX3RvX3NraXBwZWRfdGVzdHMoKS5pdGVtcygpOgorICAgICAgICAgICAg
Zm9yIGRpcmVjdG9yeSBpbiBkaXJlY3RvcmllczoKKyAgICAgICAgICAgICAgICBmb3IgdGVzdCBp
biB0ZXN0X2xpc3Q6CisgICAgICAgICAgICAgICAgICAgIGlmIHRlc3Quc3RhcnRzd2l0aChkaXJl
Y3RvcnkpOgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgcmV0
dXJuIEZhbHNlCisKKyAgICBkZWYgX3NraXBwZWRfdGVzdHNfZm9yX3Vuc3VwcG9ydGVkX2ZlYXR1
cmVzKHNlbGYsIHRlc3RfbGlzdCk6CisgICAgICAgIGlmIHNlbGYuX3Nob3VsZF9jaGVja19mb3Jf
bWlzc2luZ19mZWF0dXJlcyh0ZXN0X2xpc3QpOgorICAgICAgICAgICAgIyBJZiB0aGUgcG9ydCBz
dXBwb3J0cyBydW50aW1lIGZlYXR1cmUgZGV0ZWN0aW9uLCBkaXNhYmxlIGFueSB0ZXN0cworICAg
ICAgICAgICAgIyBmb3IgZmVhdHVyZXMgbWlzc2luZyBmcm9tIHRoZSBydW50aW1lIGZlYXR1cmUg
bGlzdC4KKyAgICAgICAgICAgIHN1cHBvcnRlZF9mZWF0dXJlX2xpc3QgPSBzZWxmLl9ydW50aW1l
X2ZlYXR1cmVfbGlzdCgpCisgICAgICAgICAgICAjIElmIF9ydW50aW1lX2ZlYXR1cmVfbGlzdCBy
ZXR1cm5zIGEgbm9uLU5vbmUgdmFsdWUsIHRoZW4gcHJlZmVyCisgICAgICAgICAgICAjIHJ1bnRp
bWUgZmVhdHVyZSBkZXRlY3Rpb24gb3ZlciBzdGF0aWMgZmVhdHVyZSBkZXRlY3Rpb24uCisgICAg
ICAgICAgICBpZiBzdXBwb3J0ZWRfZmVhdHVyZV9saXN0IGlzIG5vdCBOb25lOgorICAgICAgICAg
ICAgICAgIHJldHVybiByZWR1Y2Uob3BlcmF0b3IuYWRkLCBbZGlyZWN0b3JpZXMgZm9yIGZlYXR1
cmUsIGRpcmVjdG9yaWVzIGluIHNlbGYuX21pc3NpbmdfZmVhdHVyZV90b19za2lwcGVkX3Rlc3Rz
KCkuaXRlbXMoKSBpZiBmZWF0dXJlIG5vdCBpbiBzdXBwb3J0ZWRfZmVhdHVyZV9saXN0XSkKKwor
ICAgICAgICBpZiBzZWxmLl9zaG91bGRfY2hlY2tfZm9yX21pc3Npbmdfc3ltYm9scyh0ZXN0X2xp
c3QpOgorICAgICAgICAgICAgIyBSdW50aW1lIGZlYXR1cmUgZGV0ZWN0aW9uIG5vdCBzdXBwb3J0
ZWQsIGZhbGxiYWNrIHRvIHN0YXRpYyBkZWN0ZWN0aW9uOgorICAgICAgICAgICAgIyBEaXNhYmxl
IGFueSB0ZXN0cyBmb3Igc3ltYm9scyBtaXNzaW5nIGZyb20gdGhlIHdlYmNvcmUgc3ltYm9sIHN0
cmluZy4KKyAgICAgICAgICAgIHdlYmNvcmVfc3ltYm9sc19zdHJpbmcgPSBzZWxmLl93ZWJjb3Jl
X3N5bWJvbHNfc3RyaW5nKCkKKyAgICAgICAgICAgIGlmIHdlYmNvcmVfc3ltYm9sc19zdHJpbmcg
aXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgcmV0dXJuIHJlZHVjZShvcGVyYXRvci5hZGQs
IFtkaXJlY3RvcmllcyBmb3Igc3ltYm9sX3N1YnN0cmluZywgZGlyZWN0b3JpZXMgaW4gc2VsZi5f
bWlzc2luZ19zeW1ib2xfdG9fc2tpcHBlZF90ZXN0cygpLml0ZW1zKCkgaWYgc3ltYm9sX3N1YnN0
cmluZyBub3QgaW4gd2ViY29yZV9zeW1ib2xzX3N0cmluZ10sIFtdKQorCiAgICAgICAgICMgRmFp
bGVkIHRvIGdldCBhbnkgcnVudGltZSBvciBzeW1ib2wgaW5mb3JtYXRpb24sIGRvbid0IHNraXAg
YW55IHRlc3RzLgogICAgICAgICByZXR1cm4gW10KIApAQCAtMzUwLDE2ICszNjksMTUgQEAgY2xh
c3MgV2ViS2l0UG9ydChQb3J0KToKICAgICAgICAgICAgIGV4cGVjdGF0aW9ucyA9IHNlbGYuX2Zp
bGVzeXN0ZW0ucmVhZF90ZXh0X2ZpbGUoZXhwZWN0YXRpb25zX3BhdGgpCiAgICAgICAgIHJldHVy
biBleHBlY3RhdGlvbnMKIAotICAgIEBtZW1vaXplZAotICAgIGRlZiBza2lwcGVkX2xheW91dF90
ZXN0cyhzZWxmKToKKyAgICBkZWYgc2tpcHBlZF9sYXlvdXRfdGVzdHMoc2VsZiwgdGVzdF9saXN0
KToKICAgICAgICAgIyBVc2UgYSBzZXQgdG8gYWxsb3cgZHVwbGljYXRlcwogICAgICAgICB0ZXN0
c190b19za2lwID0gc2V0KHNlbGYuX2V4cGVjdGF0aW9uc19mcm9tX3NraXBwZWRfZmlsZXMoc2Vs
Zi5fc2tpcHBlZF9maWxlX3NlYXJjaF9wYXRocygpKSkKICAgICAgICAgdGVzdHNfdG9fc2tpcC51
cGRhdGUoc2VsZi5fdGVzdHNfZm9yX290aGVyX3BsYXRmb3JtcygpKQotICAgICAgICB0ZXN0c190
b19za2lwLnVwZGF0ZShzZWxmLl9za2lwcGVkX3Rlc3RzX2Zvcl91bnN1cHBvcnRlZF9mZWF0dXJl
cygpKQorICAgICAgICB0ZXN0c190b19za2lwLnVwZGF0ZShzZWxmLl9za2lwcGVkX3Rlc3RzX2Zv
cl91bnN1cHBvcnRlZF9mZWF0dXJlcyh0ZXN0X2xpc3QpKQogICAgICAgICByZXR1cm4gdGVzdHNf
dG9fc2tpcAogCi0gICAgZGVmIHNraXBwZWRfdGVzdHMoc2VsZik6Ci0gICAgICAgIHJldHVybiBz
ZWxmLnNraXBwZWRfbGF5b3V0X3Rlc3RzKCkKKyAgICBkZWYgc2tpcHBlZF90ZXN0cyhzZWxmLCB0
ZXN0X2xpc3QpOgorICAgICAgICByZXR1cm4gc2VsZi5za2lwcGVkX2xheW91dF90ZXN0cyh0ZXN0
X2xpc3QpCiAKICAgICBkZWYgX2J1aWxkX3BhdGgoc2VsZiwgKmNvbXBzKToKICAgICAgICAgIyAt
LXJvb3QgaXMgdXNlZCBmb3IgcnVubmluZyB3aXRoIGEgcHJlLWJ1aWx0IHJvb3QgKGxpa2UgZnJv
bSBhIG5pZ2h0bHkgemlwKS4KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvd2Via2l0X3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJraXRfdW5pdHRlc3QucHkKaW5kZXggZDIwNTZmYjY3ZDhh
M2I5OWZhZWU4ZGY2MmUyZGI2NWRiNDRmZjg3ZS4uYThjYzhlNWI4MTZjZGE3MTIwMGUzY2UzMjUw
NzZkZTAyMGZhNjNkZCAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC93ZWJraXRfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJraXRfdW5pdHRlc3QucHkKQEAgLTExMSw3ICsxMTEsNyBA
QCBjbGFzcyBXZWJLaXRQb3J0VGVzdChwb3J0X3Rlc3RjYXNlLlBvcnRUZXN0Q2FzZSk6CiAgICAg
ICAgICAgICAibWh0bWwiLCAgIyBSZXF1aXJlcyBNSFRNTEFyY2hpdmUKICAgICAgICAgXSkKIAot
ICAgICAgICByZXN1bHRfZGlyZWN0b3JpZXMgPSBzZXQoVGVzdFdlYktpdFBvcnQoc3ltYm9sc19z
dHJpbmcsIE5vbmUpLl9za2lwcGVkX3Rlc3RzX2Zvcl91bnN1cHBvcnRlZF9mZWF0dXJlcygpKQor
ICAgICAgICByZXN1bHRfZGlyZWN0b3JpZXMgPSBzZXQoVGVzdFdlYktpdFBvcnQoc3ltYm9sc19z
dHJpbmcsIE5vbmUpLl9za2lwcGVkX3Rlc3RzX2Zvcl91bnN1cHBvcnRlZF9mZWF0dXJlcyh0ZXN0
X2xpc3Q9WydtYXRobWwvZm9vLmh0bWwnXSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVz
dWx0X2RpcmVjdG9yaWVzLCBleHBlY3RlZF9kaXJlY3RvcmllcykKIAogICAgICAgICAjIFRlc3Qg
dGhhdCB0aGUgbm0gc3RyaW5nIHBhcnNpbmcgYWN0dWFsbHkgd29ya3M6CkBAIC0xMjIsNyArMTIy
LDcgQEAgY2xhc3MgV2ViS2l0UG9ydFRlc3QocG9ydF90ZXN0Y2FzZS5Qb3J0VGVzdENhc2UpOgog
IiIiCiAgICAgICAgICMgTm90ZSAnY29tcG9zaXRpbmcnIGlzIG5vdCBpbiB0aGUgbGlzdCBvZiBz
a2lwcGVkIGRpcmVjdG9yaWVzIChoZW5jZSB0aGUgcGFyc2luZyBvZiBHcmFwaGljc0xheWVyIHdv
cmtlZCk6CiAgICAgICAgIGV4cGVjdGVkX2RpcmVjdG9yaWVzID0gc2V0KFsnbWF0aG1sJywgJ3Ry
YW5zZm9ybXMvM2QnLCAnY29tcG9zaXRpbmcvd2ViZ2wnLCAnZmFzdC9jYW52YXMvd2ViZ2wnLCAn
YW5pbWF0aW9ucy8zZCcsICdtaHRtbCcsICdodHRwL3Rlc3RzL2NhbnZhcy93ZWJnbCddKQotICAg
ICAgICByZXN1bHRfZGlyZWN0b3JpZXMgPSBzZXQoVGVzdFdlYktpdFBvcnQoc3ltYm9sc19zdHJp
bmcsIE5vbmUpLl9za2lwcGVkX3Rlc3RzX2Zvcl91bnN1cHBvcnRlZF9mZWF0dXJlcygpKQorICAg
ICAgICByZXN1bHRfZGlyZWN0b3JpZXMgPSBzZXQoVGVzdFdlYktpdFBvcnQoc3ltYm9sc19zdHJp
bmcsIE5vbmUpLl9za2lwcGVkX3Rlc3RzX2Zvcl91bnN1cHBvcnRlZF9mZWF0dXJlcyh0ZXN0X2xp
c3Q9WydtYXRobWwvZm9vLmh0bWwnXSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0
X2RpcmVjdG9yaWVzLCBleHBlY3RlZF9kaXJlY3RvcmllcykKIAogICAgIGRlZiB0ZXN0X3J1bnRp
bWVfZmVhdHVyZV9saXN0KHNlbGYpOgpAQCAtMTM2LDExICsxMzYsMTcgQEAgY2xhc3MgV2ViS2l0
UG9ydFRlc3QocG9ydF90ZXN0Y2FzZS5Qb3J0VGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X3NraXBw
ZWRfZGlyZWN0b3JpZXNfZm9yX2ZlYXR1cmVzKHNlbGYpOgogICAgICAgICBzdXBwb3J0ZWRfZmVh
dHVyZXMgPSBbIkFjY2VsZXJhdGVkIENvbXBvc2l0aW5nIiwgIkZvbyBGZWF0dXJlIl0KICAgICAg
ICAgZXhwZWN0ZWRfZGlyZWN0b3JpZXMgPSBzZXQoWyJhbmltYXRpb25zLzNkIiwgInRyYW5zZm9y
bXMvM2QiXSkKLSAgICAgICAgcmVzdWx0X2RpcmVjdG9yaWVzID0gc2V0KFRlc3RXZWJLaXRQb3J0
KE5vbmUsIHN1cHBvcnRlZF9mZWF0dXJlcykuX3NraXBwZWRfdGVzdHNfZm9yX3Vuc3VwcG9ydGVk
X2ZlYXR1cmVzKCkpCisgICAgICAgIHJlc3VsdF9kaXJlY3RvcmllcyA9IHNldChUZXN0V2ViS2l0
UG9ydChOb25lLCBzdXBwb3J0ZWRfZmVhdHVyZXMpLl9za2lwcGVkX3Rlc3RzX2Zvcl91bnN1cHBv
cnRlZF9mZWF0dXJlcyh0ZXN0X2xpc3Q9WyJhbmltYXRpb25zLzNkL2Zvby5odG1sIl0pKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdF9kaXJlY3RvcmllcywgZXhwZWN0ZWRfZGlyZWN0
b3JpZXMpCisKKyAgICBkZWYgdGVzdF9za2lwcGVkX2RpcmVjdG9yaWVzX2Zvcl9mZWF0dXJlc19u
b19tYXRjaGluZ190ZXN0c19pbl90ZXN0X2xpc3Qoc2VsZik6CisgICAgICAgIHN1cHBvcnRlZF9m
ZWF0dXJlcyA9IFsiQWNjZWxlcmF0ZWQgQ29tcG9zaXRpbmciLCAiRm9vIEZlYXR1cmUiXQorICAg
ICAgICBleHBlY3RlZF9kaXJlY3RvcmllcyA9IHNldChbXSkKKyAgICAgICAgcmVzdWx0X2RpcmVj
dG9yaWVzID0gc2V0KFRlc3RXZWJLaXRQb3J0KE5vbmUsIHN1cHBvcnRlZF9mZWF0dXJlcykuX3Nr
aXBwZWRfdGVzdHNfZm9yX3Vuc3VwcG9ydGVkX2ZlYXR1cmVzKHRlc3RfbGlzdD1bJ2Zvby5odG1s
J10pKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdF9kaXJlY3RvcmllcywgZXhwZWN0
ZWRfZGlyZWN0b3JpZXMpCiAKICAgICBkZWYgdGVzdF9za2lwcGVkX2xheW91dF90ZXN0cyhzZWxm
KToKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUZXN0V2ViS2l0UG9ydChOb25lLCBOb25lKS5z
a2lwcGVkX2xheW91dF90ZXN0cygpLCBzZXQoWydtZWRpYSddKSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChUZXN0V2ViS2l0UG9ydChOb25lLCBOb25lKS5za2lwcGVkX2xheW91dF90ZXN0cyh0
ZXN0X2xpc3Q9W10pLCBzZXQoWydtZWRpYSddKSkKIAogICAgIGRlZiB0ZXN0X3NraXBwZWRfZmls
ZV9zZWFyY2hfcGF0aHMoc2VsZik6CiAgICAgICAgIHBvcnQgPSBUZXN0V2ViS2l0UG9ydCgpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124185</attachid>
            <date>2012-01-26 15:03:03 -0800</date>
            <delta_ts>2012-01-26 15:51:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77143-20120126150302.patch</filename>
            <type>text/plain</type>
            <size>10955</size>
            <attacher name="Ojan Vafai">ojan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2MDM4CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggODZlZGMzYWIzOTQwYWQ1ZTgwNWFhNGY2OTkwZmM0NDA4
NTQyZGY1YS4uM2IyZTc2NmVjZDk0NjMzMWVmYjMxMjc0MDlmYjlkMGI2YTBiNTZmNiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0
IEBACisyMDEyLTAxLTI2ICBPamFuIFZhZmFpICA8b2phbkBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgcnVuLXdlYmtpdC10ZXN0cyBjYWxscyAibm0iIHdoZW4gaXQgZG9lc24ndCBuZWVkIHRvCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NzE0MworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElmIHdlIGFyZSBu
b3QgcnVubmluZyBhbnkgdGVzdCB0aGF0IGNhbiBiZSBza2lwcGVkIGJ5IGNoZWNraW5nCisgICAg
ICAgIHRoZSBEUlQgZmVhdHVyZSBsaXN0IG9yIGxvb2tpbmcgYXQgdGhlIGxpc3Qgb2Ygc3ltYm9s
cywgYXZvaWQgY2FsbGluZworICAgICAgICBvdXQgdG8gRFJUIG9yIGNhbGxpbmcgIm5tIi4KKwor
ICAgICAgICBUaGlzIHNhdmVzIH43MDBtcyBvbiBteSBNYWMgUHJvLiBJbiBjYXNlcyB3aGVyZSB5
b3Ugc3RpbGwgaGF2ZSB0byBjYWxsIG91dAorICAgICAgICB0byAibm0iIGl0J3Mgb25seSBhIGNv
dXBsZSBtcyBzbG93ZXIuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9tb2RlbHMvdGVzdF9leHBlY3RhdGlvbnMucHk6CisgICAgICAgIChUZXN0RXhwZWN0YXRpb25z
Ll9faW5pdF9fKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0
L2Jhc2UucHk6CisgICAgICAgIChQb3J0LnNraXBwZWRfdGVzdHMpOgorICAgICAgICAqIFNjcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0LnB5OgorICAgICAgICAoV2ViS2l0
UG9ydC5fc2hvdWxkX2NoZWNrX2Zvcl9taXNzaW5nX2ZlYXR1cmVzKToKKyAgICAgICAgKFdlYktp
dFBvcnQpOgorICAgICAgICAoV2ViS2l0UG9ydC5fc2hvdWxkX2NoZWNrX2Zvcl9taXNzaW5nX3N5
bWJvbHMpOgorICAgICAgICAoV2ViS2l0UG9ydC5fc2tpcHBlZF90ZXN0c19mb3JfdW5zdXBwb3J0
ZWRfZmVhdHVyZXMpOgorICAgICAgICAoV2ViS2l0UG9ydC5za2lwcGVkX2xheW91dF90ZXN0cyk6
CisgICAgICAgIChXZWJLaXRQb3J0LnNraXBwZWRfdGVzdHMpOgorICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0X3VuaXR0ZXN0LnB5OgorICAgICAgICAo
V2ViS2l0UG9ydFRlc3QudGVzdF9za2lwcGVkX2RpcmVjdG9yaWVzX2Zvcl9zeW1ib2xzKToKKyAg
ICAgICAgKHRlc3Rfc2tpcHBlZF9kaXJlY3Rvcmllc19mb3JfZmVhdHVyZXMpOgorICAgICAgICAo
dGVzdF9za2lwcGVkX2RpcmVjdG9yaWVzX2Zvcl9mZWF0dXJlc19ub19tYXRjaGluZ190ZXN0c19p
bl90ZXN0X2xpc3QpOgorICAgICAgICAodGVzdF9za2lwcGVkX2xheW91dF90ZXN0cyk6CisKIDIw
MTItMDEtMjUgIE9qYW4gVmFmYWkgIDxvamFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBQYXJz
aW5nIHRlc3RfZXhwZWNhdGlvbnMudHh0ICsgU2tpcHBlZCBsaXN0cyB0YWtlcyB0b28gbG9uZwpk
aWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbW9kZWxzL3Rl
c3RfZXhwZWN0YXRpb25zLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
bW9kZWxzL3Rlc3RfZXhwZWN0YXRpb25zLnB5CmluZGV4IDcwOTYwZDJkYzZiOWM0MmU3N2NkZjAx
YzA2Yzg2ZGZjM2ZkNTdkODYuLjZhMzBkNGU4ZTA0MTliM2Y4MWFhN2ZiZWE0ZThhMjkxNDJlNmQ4
NzkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL21vZGVs
cy90ZXN0X2V4cGVjdGF0aW9ucy5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9tb2RlbHMvdGVzdF9leHBlY3RhdGlvbnMucHkKQEAgLTcyMiw3ICs3MjIsNyBAQCBj
bGFzcyBUZXN0RXhwZWN0YXRpb25zKG9iamVjdCk6CiAKICAgICAgICAgc2VsZi5fZXhwZWN0YXRp
b25zID0gc2VsZi5fcGFyc2VyLnBhcnNlKGV4cGVjdGF0aW9ucykKICAgICAgICAgc2VsZi5fYWRk
X2V4cGVjdGF0aW9ucyhzZWxmLl9leHBlY3RhdGlvbnMsIG92ZXJyaWRlc19hbGxvd2VkPUZhbHNl
KQotICAgICAgICBzZWxmLl9hZGRfc2tpcHBlZF90ZXN0cyhwb3J0LnNraXBwZWRfdGVzdHMoKSkK
KyAgICAgICAgc2VsZi5fYWRkX3NraXBwZWRfdGVzdHMocG9ydC5za2lwcGVkX3Rlc3RzKHRlc3Rz
KSkKIAogICAgICAgICBpZiBvdmVycmlkZXM6CiAgICAgICAgICAgICBvdmVycmlkZXNfZXhwZWN0
YXRpb25zID0gc2VsZi5fcGFyc2VyLnBhcnNlKG92ZXJyaWRlcykKZGlmZiAtLWdpdCBhL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weSBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weQppbmRleCAzNzk2NmNhMGI5NGQ0
ZDg5MjhlZDVlZDIyMGIzMWYyNjNlNTUxNjdmLi5hOGI5OGZkYTJjMzU2ZjU0MDNmN2M1NjJhOTRi
Njc5MmU4MzNkMmI0IDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9wb3J0L2Jhc2UucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcG9ydC9iYXNlLnB5CkBAIC02MTEsNyArNjExLDcgQEAgY2xhc3MgUG9ydChvYmplY3QpOgog
ICAgIGRlZiBza2lwcGVkX3BlcmZfdGVzdHMoc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLl9l
eHBlY3RhdGlvbnNfZnJvbV9za2lwcGVkX2ZpbGVzKFtzZWxmLnBlcmZfdGVzdHNfZGlyKCldKQog
Ci0gICAgZGVmIHNraXBwZWRfdGVzdHMoc2VsZik6CisgICAgZGVmIHNraXBwZWRfdGVzdHMoc2Vs
ZiwgdGVzdF9saXN0KToKICAgICAgICAgcmV0dXJuIFtdCiAKICAgICBkZWYgc2tpcHNfbGF5b3V0
X3Rlc3Qoc2VsZiwgdGVzdF9uYW1lKToKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcG9ydC93ZWJraXQucHkKaW5kZXggMGMzNWY0OWU5ZmNmNWRjMjNlOWUyNjc1
ODBmODc5NmZkMjQ2MmExMS4uMWQzOTY4ZjE0ZWZiMWM4ZDBkZGY2YjA0YTc5YjAyZTYyZDVjOWZj
ZCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93
ZWJraXQucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93
ZWJraXQucHkKQEAgLTMwNSwyMCArMzA1LDQzIEBAIGNsYXNzIFdlYktpdFBvcnQoUG9ydCk6CiAg
ICAgICAgICAgICAiTUhUTUxBcmNoaXZlIjogWyJtaHRtbCJdLAogICAgICAgICB9CiAKLSAgICBk
ZWYgX3NraXBwZWRfdGVzdHNfZm9yX3Vuc3VwcG9ydGVkX2ZlYXR1cmVzKHNlbGYpOgotICAgICAg
ICAjIElmIHRoZSBwb3J0IHN1cHBvcnRzIHJ1bnRpbWUgZmVhdHVyZSBkZXRlY3Rpb24sIGRpc2Fi
bGUgYW55IHRlc3RzCi0gICAgICAgICMgZm9yIGZlYXR1cmVzIG1pc3NpbmcgZnJvbSB0aGUgcnVu
dGltZSBmZWF0dXJlIGxpc3QuCi0gICAgICAgIHN1cHBvcnRlZF9mZWF0dXJlX2xpc3QgPSBzZWxm
Ll9ydW50aW1lX2ZlYXR1cmVfbGlzdCgpCi0gICAgICAgICMgSWYgX3J1bnRpbWVfZmVhdHVyZV9s
aXN0IHJldHVybnMgYSBub24tTm9uZSB2YWx1ZSwgdGhlbiBwcmVmZXIKLSAgICAgICAgIyBydW50
aW1lIGZlYXR1cmUgZGV0ZWN0aW9uIG92ZXIgc3RhdGljIGZlYXR1cmUgZGV0ZWN0aW9uLgotICAg
ICAgICBpZiBzdXBwb3J0ZWRfZmVhdHVyZV9saXN0IGlzIG5vdCBOb25lOgotICAgICAgICAgICAg
cmV0dXJuIHJlZHVjZShvcGVyYXRvci5hZGQsIFtkaXJlY3RvcmllcyBmb3IgZmVhdHVyZSwgZGly
ZWN0b3JpZXMgaW4gc2VsZi5fbWlzc2luZ19mZWF0dXJlX3RvX3NraXBwZWRfdGVzdHMoKS5pdGVt
cygpIGlmIGZlYXR1cmUgbm90IGluIHN1cHBvcnRlZF9mZWF0dXJlX2xpc3RdKQotCi0gICAgICAg
ICMgUnVudGltZSBmZWF0dXJlIGRldGVjdGlvbiBub3Qgc3VwcG9ydGVkLCBmYWxsYmFjayB0byBz
dGF0aWMgZGVjdGVjdGlvbjoKLSAgICAgICAgIyBEaXNhYmxlIGFueSB0ZXN0cyBmb3Igc3ltYm9s
cyBtaXNzaW5nIGZyb20gdGhlIHdlYmNvcmUgc3ltYm9sIHN0cmluZy4KLSAgICAgICAgd2ViY29y
ZV9zeW1ib2xzX3N0cmluZyA9IHNlbGYuX3dlYmNvcmVfc3ltYm9sc19zdHJpbmcoKQotICAgICAg
ICBpZiB3ZWJjb3JlX3N5bWJvbHNfc3RyaW5nIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgcmV0
dXJuIHJlZHVjZShvcGVyYXRvci5hZGQsIFtkaXJlY3RvcmllcyBmb3Igc3ltYm9sX3N1YnN0cmlu
ZywgZGlyZWN0b3JpZXMgaW4gc2VsZi5fbWlzc2luZ19zeW1ib2xfdG9fc2tpcHBlZF90ZXN0cygp
Lml0ZW1zKCkgaWYgc3ltYm9sX3N1YnN0cmluZyBub3QgaW4gd2ViY29yZV9zeW1ib2xzX3N0cmlu
Z10sIFtdKQorICAgIGRlZiBfc2hvdWxkX2NoZWNrX2Zvcl9taXNzaW5nX2ZlYXR1cmVzKHNlbGYs
IHRlc3RfbGlzdCk6CisgICAgICAgIGZvciBmZWF0dXJlLCBkaXJlY3RvcmllcyBpbiBzZWxmLl9t
aXNzaW5nX2ZlYXR1cmVfdG9fc2tpcHBlZF90ZXN0cygpLml0ZW1zKCk6CisgICAgICAgICAgICBm
b3IgZGlyZWN0b3J5IGluIGRpcmVjdG9yaWVzOgorICAgICAgICAgICAgICAgIGZvciB0ZXN0IGlu
IHRlc3RfbGlzdDoKKyAgICAgICAgICAgICAgICAgICAgaWYgdGVzdC5zdGFydHN3aXRoKGRpcmVj
dG9yeSk6CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICByZXR1
cm4gRmFsc2UKKworICAgIGRlZiBfc2hvdWxkX2NoZWNrX2Zvcl9taXNzaW5nX3N5bWJvbHMoc2Vs
ZiwgdGVzdF9saXN0KToKKyAgICAgICAgZm9yIGZlYXR1cmUsIGRpcmVjdG9yaWVzIGluIHNlbGYu
X21pc3Npbmdfc3ltYm9sX3RvX3NraXBwZWRfdGVzdHMoKS5pdGVtcygpOgorICAgICAgICAgICAg
Zm9yIGRpcmVjdG9yeSBpbiBkaXJlY3RvcmllczoKKyAgICAgICAgICAgICAgICBmb3IgdGVzdCBp
biB0ZXN0X2xpc3Q6CisgICAgICAgICAgICAgICAgICAgIGlmIHRlc3Quc3RhcnRzd2l0aChkaXJl
Y3RvcnkpOgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgcmV0
dXJuIEZhbHNlCisKKyAgICBkZWYgX3NraXBwZWRfdGVzdHNfZm9yX3Vuc3VwcG9ydGVkX2ZlYXR1
cmVzKHNlbGYsIHRlc3RfbGlzdCk6CisgICAgICAgICMgT25seSBjaGVjayB0aGUgcnVudGltZSBm
ZWF0dXJlIGxpc3Qgb2YgdGhlcmUgYXJlIHRlc3RzIGluIHRoZSB0ZXN0X2xpc3QgdGhhdCBtaWdo
dCBnZXQgc2tpcHBlZC4KKyAgICAgICAgIyBUaGlzIGlzIGEgcGVyZm9ybWFuY2Ugb3B0aW1pemF0
aW9uIHRvIGF2b2lkIHRoZSBzdWJwcm9jZXNzIGNhbGwgdG8gRFJULgorICAgICAgICBpZiBzZWxm
Ll9zaG91bGRfY2hlY2tfZm9yX21pc3NpbmdfZmVhdHVyZXModGVzdF9saXN0KToKKyAgICAgICAg
ICAgICMgSWYgdGhlIHBvcnQgc3VwcG9ydHMgcnVudGltZSBmZWF0dXJlIGRldGVjdGlvbiwgZGlz
YWJsZSBhbnkgdGVzdHMKKyAgICAgICAgICAgICMgZm9yIGZlYXR1cmVzIG1pc3NpbmcgZnJvbSB0
aGUgcnVudGltZSBmZWF0dXJlIGxpc3QuCisgICAgICAgICAgICBzdXBwb3J0ZWRfZmVhdHVyZV9s
aXN0ID0gc2VsZi5fcnVudGltZV9mZWF0dXJlX2xpc3QoKQorICAgICAgICAgICAgIyBJZiBfcnVu
dGltZV9mZWF0dXJlX2xpc3QgcmV0dXJucyBhIG5vbi1Ob25lIHZhbHVlLCB0aGVuIHByZWZlcgor
ICAgICAgICAgICAgIyBydW50aW1lIGZlYXR1cmUgZGV0ZWN0aW9uIG92ZXIgc3RhdGljIGZlYXR1
cmUgZGV0ZWN0aW9uLgorICAgICAgICAgICAgaWYgc3VwcG9ydGVkX2ZlYXR1cmVfbGlzdCBpcyBu
b3QgTm9uZToKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVkdWNlKG9wZXJhdG9yLmFkZCwgW2Rp
cmVjdG9yaWVzIGZvciBmZWF0dXJlLCBkaXJlY3RvcmllcyBpbiBzZWxmLl9taXNzaW5nX2ZlYXR1
cmVfdG9fc2tpcHBlZF90ZXN0cygpLml0ZW1zKCkgaWYgZmVhdHVyZSBub3QgaW4gc3VwcG9ydGVk
X2ZlYXR1cmVfbGlzdF0pCisKKyAgICAgICAgIyBPbmx5IGNoZWNrIHRoZSBzeW1ib2xzIG9mIHRo
ZXJlIGFyZSB0ZXN0cyBpbiB0aGUgdGVzdF9saXN0IHRoYXQgbWlnaHQgZ2V0IHNraXBwZWQuCisg
ICAgICAgICMgVGhpcyBpcyBhIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbiB0byBhdm9pZCB0aGUg
Y2FsbGluZyBubS4KKyAgICAgICAgaWYgc2VsZi5fc2hvdWxkX2NoZWNrX2Zvcl9taXNzaW5nX3N5
bWJvbHModGVzdF9saXN0KToKKyAgICAgICAgICAgICMgUnVudGltZSBmZWF0dXJlIGRldGVjdGlv
biBub3Qgc3VwcG9ydGVkLCBmYWxsYmFjayB0byBzdGF0aWMgZGVjdGVjdGlvbjoKKyAgICAgICAg
ICAgICMgRGlzYWJsZSBhbnkgdGVzdHMgZm9yIHN5bWJvbHMgbWlzc2luZyBmcm9tIHRoZSB3ZWJj
b3JlIHN5bWJvbCBzdHJpbmcuCisgICAgICAgICAgICB3ZWJjb3JlX3N5bWJvbHNfc3RyaW5nID0g
c2VsZi5fd2ViY29yZV9zeW1ib2xzX3N0cmluZygpCisgICAgICAgICAgICBpZiB3ZWJjb3JlX3N5
bWJvbHNfc3RyaW5nIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHJldHVybiByZWR1Y2Uo
b3BlcmF0b3IuYWRkLCBbZGlyZWN0b3JpZXMgZm9yIHN5bWJvbF9zdWJzdHJpbmcsIGRpcmVjdG9y
aWVzIGluIHNlbGYuX21pc3Npbmdfc3ltYm9sX3RvX3NraXBwZWRfdGVzdHMoKS5pdGVtcygpIGlm
IHN5bWJvbF9zdWJzdHJpbmcgbm90IGluIHdlYmNvcmVfc3ltYm9sc19zdHJpbmddLCBbXSkKKwog
ICAgICAgICAjIEZhaWxlZCB0byBnZXQgYW55IHJ1bnRpbWUgb3Igc3ltYm9sIGluZm9ybWF0aW9u
LCBkb24ndCBza2lwIGFueSB0ZXN0cy4KICAgICAgICAgcmV0dXJuIFtdCiAKQEAgLTM1MCwxNiAr
MzczLDE1IEBAIGNsYXNzIFdlYktpdFBvcnQoUG9ydCk6CiAgICAgICAgICAgICBleHBlY3RhdGlv
bnMgPSBzZWxmLl9maWxlc3lzdGVtLnJlYWRfdGV4dF9maWxlKGV4cGVjdGF0aW9uc19wYXRoKQog
ICAgICAgICByZXR1cm4gZXhwZWN0YXRpb25zCiAKLSAgICBAbWVtb2l6ZWQKLSAgICBkZWYgc2tp
cHBlZF9sYXlvdXRfdGVzdHMoc2VsZik6CisgICAgZGVmIHNraXBwZWRfbGF5b3V0X3Rlc3RzKHNl
bGYsIHRlc3RfbGlzdCk6CiAgICAgICAgICMgVXNlIGEgc2V0IHRvIGFsbG93IGR1cGxpY2F0ZXMK
ICAgICAgICAgdGVzdHNfdG9fc2tpcCA9IHNldChzZWxmLl9leHBlY3RhdGlvbnNfZnJvbV9za2lw
cGVkX2ZpbGVzKHNlbGYuX3NraXBwZWRfZmlsZV9zZWFyY2hfcGF0aHMoKSkpCiAgICAgICAgIHRl
c3RzX3RvX3NraXAudXBkYXRlKHNlbGYuX3Rlc3RzX2Zvcl9vdGhlcl9wbGF0Zm9ybXMoKSkKLSAg
ICAgICAgdGVzdHNfdG9fc2tpcC51cGRhdGUoc2VsZi5fc2tpcHBlZF90ZXN0c19mb3JfdW5zdXBw
b3J0ZWRfZmVhdHVyZXMoKSkKKyAgICAgICAgdGVzdHNfdG9fc2tpcC51cGRhdGUoc2VsZi5fc2tp
cHBlZF90ZXN0c19mb3JfdW5zdXBwb3J0ZWRfZmVhdHVyZXModGVzdF9saXN0KSkKICAgICAgICAg
cmV0dXJuIHRlc3RzX3RvX3NraXAKIAotICAgIGRlZiBza2lwcGVkX3Rlc3RzKHNlbGYpOgotICAg
ICAgICByZXR1cm4gc2VsZi5za2lwcGVkX2xheW91dF90ZXN0cygpCisgICAgZGVmIHNraXBwZWRf
dGVzdHMoc2VsZiwgdGVzdF9saXN0KToKKyAgICAgICAgcmV0dXJuIHNlbGYuc2tpcHBlZF9sYXlv
dXRfdGVzdHModGVzdF9saXN0KQogCiAgICAgZGVmIF9idWlsZF9wYXRoKHNlbGYsICpjb21wcyk6
CiAgICAgICAgICMgLS1yb290IGlzIHVzZWQgZm9yIHJ1bm5pbmcgd2l0aCBhIHByZS1idWlsdCBy
b290IChsaWtlIGZyb20gYSBuaWdodGx5IHppcCkuCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdF91bml0dGVzdC5weSBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0X3VuaXR0ZXN0LnB5CmluZGV4
IGQyMDU2ZmI2N2Q4YTNiOTlmYWVlOGRmNjJlMmRiNjVkYjQ0ZmY4N2UuLmE4Y2M4ZTViODE2Y2Rh
NzEyMDBlM2NlMzI1MDc2ZGUwMjBmYTYzZGQgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0X3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0X3VuaXR0ZXN0LnB5CkBAIC0x
MTEsNyArMTExLDcgQEAgY2xhc3MgV2ViS2l0UG9ydFRlc3QocG9ydF90ZXN0Y2FzZS5Qb3J0VGVz
dENhc2UpOgogICAgICAgICAgICAgIm1odG1sIiwgICMgUmVxdWlyZXMgTUhUTUxBcmNoaXZlCiAg
ICAgICAgIF0pCiAKLSAgICAgICAgcmVzdWx0X2RpcmVjdG9yaWVzID0gc2V0KFRlc3RXZWJLaXRQ
b3J0KHN5bWJvbHNfc3RyaW5nLCBOb25lKS5fc2tpcHBlZF90ZXN0c19mb3JfdW5zdXBwb3J0ZWRf
ZmVhdHVyZXMoKSkKKyAgICAgICAgcmVzdWx0X2RpcmVjdG9yaWVzID0gc2V0KFRlc3RXZWJLaXRQ
b3J0KHN5bWJvbHNfc3RyaW5nLCBOb25lKS5fc2tpcHBlZF90ZXN0c19mb3JfdW5zdXBwb3J0ZWRf
ZmVhdHVyZXModGVzdF9saXN0PVsnbWF0aG1sL2Zvby5odG1sJ10pKQogICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHJlc3VsdF9kaXJlY3RvcmllcywgZXhwZWN0ZWRfZGlyZWN0b3JpZXMpCiAKICAg
ICAgICAgIyBUZXN0IHRoYXQgdGhlIG5tIHN0cmluZyBwYXJzaW5nIGFjdHVhbGx5IHdvcmtzOgpA
QCAtMTIyLDcgKzEyMiw3IEBAIGNsYXNzIFdlYktpdFBvcnRUZXN0KHBvcnRfdGVzdGNhc2UuUG9y
dFRlc3RDYXNlKToKICIiIgogICAgICAgICAjIE5vdGUgJ2NvbXBvc2l0aW5nJyBpcyBub3QgaW4g
dGhlIGxpc3Qgb2Ygc2tpcHBlZCBkaXJlY3RvcmllcyAoaGVuY2UgdGhlIHBhcnNpbmcgb2YgR3Jh
cGhpY3NMYXllciB3b3JrZWQpOgogICAgICAgICBleHBlY3RlZF9kaXJlY3RvcmllcyA9IHNldChb
J21hdGhtbCcsICd0cmFuc2Zvcm1zLzNkJywgJ2NvbXBvc2l0aW5nL3dlYmdsJywgJ2Zhc3QvY2Fu
dmFzL3dlYmdsJywgJ2FuaW1hdGlvbnMvM2QnLCAnbWh0bWwnLCAnaHR0cC90ZXN0cy9jYW52YXMv
d2ViZ2wnXSkKLSAgICAgICAgcmVzdWx0X2RpcmVjdG9yaWVzID0gc2V0KFRlc3RXZWJLaXRQb3J0
KHN5bWJvbHNfc3RyaW5nLCBOb25lKS5fc2tpcHBlZF90ZXN0c19mb3JfdW5zdXBwb3J0ZWRfZmVh
dHVyZXMoKSkKKyAgICAgICAgcmVzdWx0X2RpcmVjdG9yaWVzID0gc2V0KFRlc3RXZWJLaXRQb3J0
KHN5bWJvbHNfc3RyaW5nLCBOb25lKS5fc2tpcHBlZF90ZXN0c19mb3JfdW5zdXBwb3J0ZWRfZmVh
dHVyZXModGVzdF9saXN0PVsnbWF0aG1sL2Zvby5odG1sJ10pKQogICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHJlc3VsdF9kaXJlY3RvcmllcywgZXhwZWN0ZWRfZGlyZWN0b3JpZXMpCiAKICAgICBk
ZWYgdGVzdF9ydW50aW1lX2ZlYXR1cmVfbGlzdChzZWxmKToKQEAgLTEzNiwxMSArMTM2LDE3IEBA
IGNsYXNzIFdlYktpdFBvcnRUZXN0KHBvcnRfdGVzdGNhc2UuUG9ydFRlc3RDYXNlKToKICAgICBk
ZWYgdGVzdF9za2lwcGVkX2RpcmVjdG9yaWVzX2Zvcl9mZWF0dXJlcyhzZWxmKToKICAgICAgICAg
c3VwcG9ydGVkX2ZlYXR1cmVzID0gWyJBY2NlbGVyYXRlZCBDb21wb3NpdGluZyIsICJGb28gRmVh
dHVyZSJdCiAgICAgICAgIGV4cGVjdGVkX2RpcmVjdG9yaWVzID0gc2V0KFsiYW5pbWF0aW9ucy8z
ZCIsICJ0cmFuc2Zvcm1zLzNkIl0pCi0gICAgICAgIHJlc3VsdF9kaXJlY3RvcmllcyA9IHNldChU
ZXN0V2ViS2l0UG9ydChOb25lLCBzdXBwb3J0ZWRfZmVhdHVyZXMpLl9za2lwcGVkX3Rlc3RzX2Zv
cl91bnN1cHBvcnRlZF9mZWF0dXJlcygpKQorICAgICAgICByZXN1bHRfZGlyZWN0b3JpZXMgPSBz
ZXQoVGVzdFdlYktpdFBvcnQoTm9uZSwgc3VwcG9ydGVkX2ZlYXR1cmVzKS5fc2tpcHBlZF90ZXN0
c19mb3JfdW5zdXBwb3J0ZWRfZmVhdHVyZXModGVzdF9saXN0PVsiYW5pbWF0aW9ucy8zZC9mb28u
aHRtbCJdKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHRfZGlyZWN0b3JpZXMsIGV4
cGVjdGVkX2RpcmVjdG9yaWVzKQorCisgICAgZGVmIHRlc3Rfc2tpcHBlZF9kaXJlY3Rvcmllc19m
b3JfZmVhdHVyZXNfbm9fbWF0Y2hpbmdfdGVzdHNfaW5fdGVzdF9saXN0KHNlbGYpOgorICAgICAg
ICBzdXBwb3J0ZWRfZmVhdHVyZXMgPSBbIkFjY2VsZXJhdGVkIENvbXBvc2l0aW5nIiwgIkZvbyBG
ZWF0dXJlIl0KKyAgICAgICAgZXhwZWN0ZWRfZGlyZWN0b3JpZXMgPSBzZXQoW10pCisgICAgICAg
IHJlc3VsdF9kaXJlY3RvcmllcyA9IHNldChUZXN0V2ViS2l0UG9ydChOb25lLCBzdXBwb3J0ZWRf
ZmVhdHVyZXMpLl9za2lwcGVkX3Rlc3RzX2Zvcl91bnN1cHBvcnRlZF9mZWF0dXJlcyh0ZXN0X2xp
c3Q9Wydmb28uaHRtbCddKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHRfZGlyZWN0
b3JpZXMsIGV4cGVjdGVkX2RpcmVjdG9yaWVzKQogCiAgICAgZGVmIHRlc3Rfc2tpcHBlZF9sYXlv
dXRfdGVzdHMoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVGVzdFdlYktpdFBvcnQo
Tm9uZSwgTm9uZSkuc2tpcHBlZF9sYXlvdXRfdGVzdHMoKSwgc2V0KFsnbWVkaWEnXSkpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoVGVzdFdlYktpdFBvcnQoTm9uZSwgTm9uZSkuc2tpcHBlZF9s
YXlvdXRfdGVzdHModGVzdF9saXN0PVtdKSwgc2V0KFsnbWVkaWEnXSkpCiAKICAgICBkZWYgdGVz
dF9za2lwcGVkX2ZpbGVfc2VhcmNoX3BhdGhzKHNlbGYpOgogICAgICAgICBwb3J0ID0gVGVzdFdl
YktpdFBvcnQoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124193</attachid>
            <date>2012-01-26 15:29:56 -0800</date>
            <delta_ts>2012-01-26 15:50:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77143-20120126152955.patch</filename>
            <type>text/plain</type>
            <size>10939</size>
            <attacher name="Ojan Vafai">ojan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2MDM4CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggODZlZGMzYWIzOTQwYWQ1ZTgwNWFhNGY2OTkwZmM0NDA4
NTQyZGY1YS4uM2IyZTc2NmVjZDk0NjMzMWVmYjMxMjc0MDlmYjlkMGI2YTBiNTZmNiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0
IEBACisyMDEyLTAxLTI2ICBPamFuIFZhZmFpICA8b2phbkBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgcnVuLXdlYmtpdC10ZXN0cyBjYWxscyAibm0iIHdoZW4gaXQgZG9lc24ndCBuZWVkIHRvCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NzE0MworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElmIHdlIGFyZSBu
b3QgcnVubmluZyBhbnkgdGVzdCB0aGF0IGNhbiBiZSBza2lwcGVkIGJ5IGNoZWNraW5nCisgICAg
ICAgIHRoZSBEUlQgZmVhdHVyZSBsaXN0IG9yIGxvb2tpbmcgYXQgdGhlIGxpc3Qgb2Ygc3ltYm9s
cywgYXZvaWQgY2FsbGluZworICAgICAgICBvdXQgdG8gRFJUIG9yIGNhbGxpbmcgIm5tIi4KKwor
ICAgICAgICBUaGlzIHNhdmVzIH43MDBtcyBvbiBteSBNYWMgUHJvLiBJbiBjYXNlcyB3aGVyZSB5
b3Ugc3RpbGwgaGF2ZSB0byBjYWxsIG91dAorICAgICAgICB0byAibm0iIGl0J3Mgb25seSBhIGNv
dXBsZSBtcyBzbG93ZXIuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9tb2RlbHMvdGVzdF9leHBlY3RhdGlvbnMucHk6CisgICAgICAgIChUZXN0RXhwZWN0YXRpb25z
Ll9faW5pdF9fKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0
L2Jhc2UucHk6CisgICAgICAgIChQb3J0LnNraXBwZWRfdGVzdHMpOgorICAgICAgICAqIFNjcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0LnB5OgorICAgICAgICAoV2ViS2l0
UG9ydC5fc2hvdWxkX2NoZWNrX2Zvcl9taXNzaW5nX2ZlYXR1cmVzKToKKyAgICAgICAgKFdlYktp
dFBvcnQpOgorICAgICAgICAoV2ViS2l0UG9ydC5fc2hvdWxkX2NoZWNrX2Zvcl9taXNzaW5nX3N5
bWJvbHMpOgorICAgICAgICAoV2ViS2l0UG9ydC5fc2tpcHBlZF90ZXN0c19mb3JfdW5zdXBwb3J0
ZWRfZmVhdHVyZXMpOgorICAgICAgICAoV2ViS2l0UG9ydC5za2lwcGVkX2xheW91dF90ZXN0cyk6
CisgICAgICAgIChXZWJLaXRQb3J0LnNraXBwZWRfdGVzdHMpOgorICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0X3VuaXR0ZXN0LnB5OgorICAgICAgICAo
V2ViS2l0UG9ydFRlc3QudGVzdF9za2lwcGVkX2RpcmVjdG9yaWVzX2Zvcl9zeW1ib2xzKToKKyAg
ICAgICAgKHRlc3Rfc2tpcHBlZF9kaXJlY3Rvcmllc19mb3JfZmVhdHVyZXMpOgorICAgICAgICAo
dGVzdF9za2lwcGVkX2RpcmVjdG9yaWVzX2Zvcl9mZWF0dXJlc19ub19tYXRjaGluZ190ZXN0c19p
bl90ZXN0X2xpc3QpOgorICAgICAgICAodGVzdF9za2lwcGVkX2xheW91dF90ZXN0cyk6CisKIDIw
MTItMDEtMjUgIE9qYW4gVmFmYWkgIDxvamFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBQYXJz
aW5nIHRlc3RfZXhwZWNhdGlvbnMudHh0ICsgU2tpcHBlZCBsaXN0cyB0YWtlcyB0b28gbG9uZwpk
aWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbW9kZWxzL3Rl
c3RfZXhwZWN0YXRpb25zLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
bW9kZWxzL3Rlc3RfZXhwZWN0YXRpb25zLnB5CmluZGV4IDcwOTYwZDJkYzZiOWM0MmU3N2NkZjAx
YzA2Yzg2ZGZjM2ZkNTdkODYuLjZhMzBkNGU4ZTA0MTliM2Y4MWFhN2ZiZWE0ZThhMjkxNDJlNmQ4
NzkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL21vZGVs
cy90ZXN0X2V4cGVjdGF0aW9ucy5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9tb2RlbHMvdGVzdF9leHBlY3RhdGlvbnMucHkKQEAgLTcyMiw3ICs3MjIsNyBAQCBj
bGFzcyBUZXN0RXhwZWN0YXRpb25zKG9iamVjdCk6CiAKICAgICAgICAgc2VsZi5fZXhwZWN0YXRp
b25zID0gc2VsZi5fcGFyc2VyLnBhcnNlKGV4cGVjdGF0aW9ucykKICAgICAgICAgc2VsZi5fYWRk
X2V4cGVjdGF0aW9ucyhzZWxmLl9leHBlY3RhdGlvbnMsIG92ZXJyaWRlc19hbGxvd2VkPUZhbHNl
KQotICAgICAgICBzZWxmLl9hZGRfc2tpcHBlZF90ZXN0cyhwb3J0LnNraXBwZWRfdGVzdHMoKSkK
KyAgICAgICAgc2VsZi5fYWRkX3NraXBwZWRfdGVzdHMocG9ydC5za2lwcGVkX3Rlc3RzKHRlc3Rz
KSkKIAogICAgICAgICBpZiBvdmVycmlkZXM6CiAgICAgICAgICAgICBvdmVycmlkZXNfZXhwZWN0
YXRpb25zID0gc2VsZi5fcGFyc2VyLnBhcnNlKG92ZXJyaWRlcykKZGlmZiAtLWdpdCBhL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weSBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weQppbmRleCAzNzk2NmNhMGI5NGQ0
ZDg5MjhlZDVlZDIyMGIzMWYyNjNlNTUxNjdmLi5hOGI5OGZkYTJjMzU2ZjU0MDNmN2M1NjJhOTRi
Njc5MmU4MzNkMmI0IDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9wb3J0L2Jhc2UucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcG9ydC9iYXNlLnB5CkBAIC02MTEsNyArNjExLDcgQEAgY2xhc3MgUG9ydChvYmplY3QpOgog
ICAgIGRlZiBza2lwcGVkX3BlcmZfdGVzdHMoc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLl9l
eHBlY3RhdGlvbnNfZnJvbV9za2lwcGVkX2ZpbGVzKFtzZWxmLnBlcmZfdGVzdHNfZGlyKCldKQog
Ci0gICAgZGVmIHNraXBwZWRfdGVzdHMoc2VsZik6CisgICAgZGVmIHNraXBwZWRfdGVzdHMoc2Vs
ZiwgdGVzdF9saXN0KToKICAgICAgICAgcmV0dXJuIFtdCiAKICAgICBkZWYgc2tpcHNfbGF5b3V0
X3Rlc3Qoc2VsZiwgdGVzdF9uYW1lKToKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcG9ydC93ZWJraXQucHkKaW5kZXggMGMzNWY0OWU5ZmNmNWRjMjNlOWUyNjc1
ODBmODc5NmZkMjQ2MmExMS4uZTI5MDQ3OTZmOTBkODY5ZGMwNjk5MDVlM2Y3YjIzYjFjNjNiNWRh
YSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93
ZWJraXQucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93
ZWJraXQucHkKQEAgLTMwNSwyMCArMzA1LDQzIEBAIGNsYXNzIFdlYktpdFBvcnQoUG9ydCk6CiAg
ICAgICAgICAgICAiTUhUTUxBcmNoaXZlIjogWyJtaHRtbCJdLAogICAgICAgICB9CiAKLSAgICBk
ZWYgX3NraXBwZWRfdGVzdHNfZm9yX3Vuc3VwcG9ydGVkX2ZlYXR1cmVzKHNlbGYpOgotICAgICAg
ICAjIElmIHRoZSBwb3J0IHN1cHBvcnRzIHJ1bnRpbWUgZmVhdHVyZSBkZXRlY3Rpb24sIGRpc2Fi
bGUgYW55IHRlc3RzCi0gICAgICAgICMgZm9yIGZlYXR1cmVzIG1pc3NpbmcgZnJvbSB0aGUgcnVu
dGltZSBmZWF0dXJlIGxpc3QuCi0gICAgICAgIHN1cHBvcnRlZF9mZWF0dXJlX2xpc3QgPSBzZWxm
Ll9ydW50aW1lX2ZlYXR1cmVfbGlzdCgpCi0gICAgICAgICMgSWYgX3J1bnRpbWVfZmVhdHVyZV9s
aXN0IHJldHVybnMgYSBub24tTm9uZSB2YWx1ZSwgdGhlbiBwcmVmZXIKLSAgICAgICAgIyBydW50
aW1lIGZlYXR1cmUgZGV0ZWN0aW9uIG92ZXIgc3RhdGljIGZlYXR1cmUgZGV0ZWN0aW9uLgotICAg
ICAgICBpZiBzdXBwb3J0ZWRfZmVhdHVyZV9saXN0IGlzIG5vdCBOb25lOgotICAgICAgICAgICAg
cmV0dXJuIHJlZHVjZShvcGVyYXRvci5hZGQsIFtkaXJlY3RvcmllcyBmb3IgZmVhdHVyZSwgZGly
ZWN0b3JpZXMgaW4gc2VsZi5fbWlzc2luZ19mZWF0dXJlX3RvX3NraXBwZWRfdGVzdHMoKS5pdGVt
cygpIGlmIGZlYXR1cmUgbm90IGluIHN1cHBvcnRlZF9mZWF0dXJlX2xpc3RdKQotCi0gICAgICAg
ICMgUnVudGltZSBmZWF0dXJlIGRldGVjdGlvbiBub3Qgc3VwcG9ydGVkLCBmYWxsYmFjayB0byBz
dGF0aWMgZGVjdGVjdGlvbjoKLSAgICAgICAgIyBEaXNhYmxlIGFueSB0ZXN0cyBmb3Igc3ltYm9s
cyBtaXNzaW5nIGZyb20gdGhlIHdlYmNvcmUgc3ltYm9sIHN0cmluZy4KLSAgICAgICAgd2ViY29y
ZV9zeW1ib2xzX3N0cmluZyA9IHNlbGYuX3dlYmNvcmVfc3ltYm9sc19zdHJpbmcoKQotICAgICAg
ICBpZiB3ZWJjb3JlX3N5bWJvbHNfc3RyaW5nIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgcmV0
dXJuIHJlZHVjZShvcGVyYXRvci5hZGQsIFtkaXJlY3RvcmllcyBmb3Igc3ltYm9sX3N1YnN0cmlu
ZywgZGlyZWN0b3JpZXMgaW4gc2VsZi5fbWlzc2luZ19zeW1ib2xfdG9fc2tpcHBlZF90ZXN0cygp
Lml0ZW1zKCkgaWYgc3ltYm9sX3N1YnN0cmluZyBub3QgaW4gd2ViY29yZV9zeW1ib2xzX3N0cmlu
Z10sIFtdKQorICAgIGRlZiBfc2hvdWxkX2NoZWNrX2Zvcl9taXNzaW5nX2ZlYXR1cmVzKHNlbGYs
IHRlc3RfbGlzdCk6CisgICAgICAgIGZvciBkaXJlY3RvcmllcyBpbiBzZWxmLl9taXNzaW5nX2Zl
YXR1cmVfdG9fc2tpcHBlZF90ZXN0cygpLnZhbHVlcygpOgorICAgICAgICAgICAgZm9yIGRpcmVj
dG9yeSBpbiBkaXJlY3RvcmllczoKKyAgICAgICAgICAgICAgICBmb3IgdGVzdCBpbiB0ZXN0X2xp
c3Q6CisgICAgICAgICAgICAgICAgICAgIGlmIHRlc3Quc3RhcnRzd2l0aChkaXJlY3RvcnkpOgor
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgcmV0dXJuIEZhbHNl
CisKKyAgICBkZWYgX3Nob3VsZF9jaGVja19mb3JfbWlzc2luZ19zeW1ib2xzKHNlbGYsIHRlc3Rf
bGlzdCk6CisgICAgICAgIGZvciBkaXJlY3RvcmllcyBpbiBzZWxmLl9taXNzaW5nX3N5bWJvbF90
b19za2lwcGVkX3Rlc3RzKCkudmFsdWVzKCk6CisgICAgICAgICAgICBmb3IgZGlyZWN0b3J5IGlu
IGRpcmVjdG9yaWVzOgorICAgICAgICAgICAgICAgIGZvciB0ZXN0IGluIHRlc3RfbGlzdDoKKyAg
ICAgICAgICAgICAgICAgICAgaWYgdGVzdC5zdGFydHN3aXRoKGRpcmVjdG9yeSk6CisgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICByZXR1cm4gRmFsc2UKKworICAg
IGRlZiBfc2tpcHBlZF90ZXN0c19mb3JfdW5zdXBwb3J0ZWRfZmVhdHVyZXMoc2VsZiwgdGVzdF9s
aXN0KToKKyAgICAgICAgIyBPbmx5IGNoZWNrIHRoZSBydW50aW1lIGZlYXR1cmUgbGlzdCBvZiB0
aGVyZSBhcmUgdGVzdHMgaW4gdGhlIHRlc3RfbGlzdCB0aGF0IG1pZ2h0IGdldCBza2lwcGVkLgor
ICAgICAgICAjIFRoaXMgaXMgYSBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24gdG8gYXZvaWQgdGhl
IHN1YnByb2Nlc3MgY2FsbCB0byBEUlQuCisgICAgICAgIGlmIHNlbGYuX3Nob3VsZF9jaGVja19m
b3JfbWlzc2luZ19mZWF0dXJlcyh0ZXN0X2xpc3QpOgorICAgICAgICAgICAgIyBJZiB0aGUgcG9y
dCBzdXBwb3J0cyBydW50aW1lIGZlYXR1cmUgZGV0ZWN0aW9uLCBkaXNhYmxlIGFueSB0ZXN0cwor
ICAgICAgICAgICAgIyBmb3IgZmVhdHVyZXMgbWlzc2luZyBmcm9tIHRoZSBydW50aW1lIGZlYXR1
cmUgbGlzdC4KKyAgICAgICAgICAgIHN1cHBvcnRlZF9mZWF0dXJlX2xpc3QgPSBzZWxmLl9ydW50
aW1lX2ZlYXR1cmVfbGlzdCgpCisgICAgICAgICAgICAjIElmIF9ydW50aW1lX2ZlYXR1cmVfbGlz
dCByZXR1cm5zIGEgbm9uLU5vbmUgdmFsdWUsIHRoZW4gcHJlZmVyCisgICAgICAgICAgICAjIHJ1
bnRpbWUgZmVhdHVyZSBkZXRlY3Rpb24gb3ZlciBzdGF0aWMgZmVhdHVyZSBkZXRlY3Rpb24uCisg
ICAgICAgICAgICBpZiBzdXBwb3J0ZWRfZmVhdHVyZV9saXN0IGlzIG5vdCBOb25lOgorICAgICAg
ICAgICAgICAgIHJldHVybiByZWR1Y2Uob3BlcmF0b3IuYWRkLCBbZGlyZWN0b3JpZXMgZm9yIGZl
YXR1cmUsIGRpcmVjdG9yaWVzIGluIHNlbGYuX21pc3NpbmdfZmVhdHVyZV90b19za2lwcGVkX3Rl
c3RzKCkuaXRlbXMoKSBpZiBmZWF0dXJlIG5vdCBpbiBzdXBwb3J0ZWRfZmVhdHVyZV9saXN0XSkK
KworICAgICAgICAjIE9ubHkgY2hlY2sgdGhlIHN5bWJvbHMgb2YgdGhlcmUgYXJlIHRlc3RzIGlu
IHRoZSB0ZXN0X2xpc3QgdGhhdCBtaWdodCBnZXQgc2tpcHBlZC4KKyAgICAgICAgIyBUaGlzIGlz
IGEgcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uIHRvIGF2b2lkIHRoZSBjYWxsaW5nIG5tLgorICAg
ICAgICBpZiBzZWxmLl9zaG91bGRfY2hlY2tfZm9yX21pc3Npbmdfc3ltYm9scyh0ZXN0X2xpc3Qp
OgorICAgICAgICAgICAgIyBSdW50aW1lIGZlYXR1cmUgZGV0ZWN0aW9uIG5vdCBzdXBwb3J0ZWQs
IGZhbGxiYWNrIHRvIHN0YXRpYyBkZWN0ZWN0aW9uOgorICAgICAgICAgICAgIyBEaXNhYmxlIGFu
eSB0ZXN0cyBmb3Igc3ltYm9scyBtaXNzaW5nIGZyb20gdGhlIHdlYmNvcmUgc3ltYm9sIHN0cmlu
Zy4KKyAgICAgICAgICAgIHdlYmNvcmVfc3ltYm9sc19zdHJpbmcgPSBzZWxmLl93ZWJjb3JlX3N5
bWJvbHNfc3RyaW5nKCkKKyAgICAgICAgICAgIGlmIHdlYmNvcmVfc3ltYm9sc19zdHJpbmcgaXMg
bm90IE5vbmU6CisgICAgICAgICAgICAgICAgcmV0dXJuIHJlZHVjZShvcGVyYXRvci5hZGQsIFtk
aXJlY3RvcmllcyBmb3Igc3ltYm9sX3N1YnN0cmluZywgZGlyZWN0b3JpZXMgaW4gc2VsZi5fbWlz
c2luZ19zeW1ib2xfdG9fc2tpcHBlZF90ZXN0cygpLml0ZW1zKCkgaWYgc3ltYm9sX3N1YnN0cmlu
ZyBub3QgaW4gd2ViY29yZV9zeW1ib2xzX3N0cmluZ10sIFtdKQorCiAgICAgICAgICMgRmFpbGVk
IHRvIGdldCBhbnkgcnVudGltZSBvciBzeW1ib2wgaW5mb3JtYXRpb24sIGRvbid0IHNraXAgYW55
IHRlc3RzLgogICAgICAgICByZXR1cm4gW10KIApAQCAtMzUwLDE2ICszNzMsMTUgQEAgY2xhc3Mg
V2ViS2l0UG9ydChQb3J0KToKICAgICAgICAgICAgIGV4cGVjdGF0aW9ucyA9IHNlbGYuX2ZpbGVz
eXN0ZW0ucmVhZF90ZXh0X2ZpbGUoZXhwZWN0YXRpb25zX3BhdGgpCiAgICAgICAgIHJldHVybiBl
eHBlY3RhdGlvbnMKIAotICAgIEBtZW1vaXplZAotICAgIGRlZiBza2lwcGVkX2xheW91dF90ZXN0
cyhzZWxmKToKKyAgICBkZWYgc2tpcHBlZF9sYXlvdXRfdGVzdHMoc2VsZiwgdGVzdF9saXN0KToK
ICAgICAgICAgIyBVc2UgYSBzZXQgdG8gYWxsb3cgZHVwbGljYXRlcwogICAgICAgICB0ZXN0c190
b19za2lwID0gc2V0KHNlbGYuX2V4cGVjdGF0aW9uc19mcm9tX3NraXBwZWRfZmlsZXMoc2VsZi5f
c2tpcHBlZF9maWxlX3NlYXJjaF9wYXRocygpKSkKICAgICAgICAgdGVzdHNfdG9fc2tpcC51cGRh
dGUoc2VsZi5fdGVzdHNfZm9yX290aGVyX3BsYXRmb3JtcygpKQotICAgICAgICB0ZXN0c190b19z
a2lwLnVwZGF0ZShzZWxmLl9za2lwcGVkX3Rlc3RzX2Zvcl91bnN1cHBvcnRlZF9mZWF0dXJlcygp
KQorICAgICAgICB0ZXN0c190b19za2lwLnVwZGF0ZShzZWxmLl9za2lwcGVkX3Rlc3RzX2Zvcl91
bnN1cHBvcnRlZF9mZWF0dXJlcyh0ZXN0X2xpc3QpKQogICAgICAgICByZXR1cm4gdGVzdHNfdG9f
c2tpcAogCi0gICAgZGVmIHNraXBwZWRfdGVzdHMoc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxm
LnNraXBwZWRfbGF5b3V0X3Rlc3RzKCkKKyAgICBkZWYgc2tpcHBlZF90ZXN0cyhzZWxmLCB0ZXN0
X2xpc3QpOgorICAgICAgICByZXR1cm4gc2VsZi5za2lwcGVkX2xheW91dF90ZXN0cyh0ZXN0X2xp
c3QpCiAKICAgICBkZWYgX2J1aWxkX3BhdGgoc2VsZiwgKmNvbXBzKToKICAgICAgICAgIyAtLXJv
b3QgaXMgdXNlZCBmb3IgcnVubmluZyB3aXRoIGEgcHJlLWJ1aWx0IHJvb3QgKGxpa2UgZnJvbSBh
IG5pZ2h0bHkgemlwKS4KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvd2Via2l0X3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcG9ydC93ZWJraXRfdW5pdHRlc3QucHkKaW5kZXggZDIwNTZmYjY3ZDhhM2I5
OWZhZWU4ZGY2MmUyZGI2NWRiNDRmZjg3ZS4uYThjYzhlNWI4MTZjZGE3MTIwMGUzY2UzMjUwNzZk
ZTAyMGZhNjNkZCAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcG9ydC93ZWJraXRfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcG9ydC93ZWJraXRfdW5pdHRlc3QucHkKQEAgLTExMSw3ICsxMTEsNyBAQCBj
bGFzcyBXZWJLaXRQb3J0VGVzdChwb3J0X3Rlc3RjYXNlLlBvcnRUZXN0Q2FzZSk6CiAgICAgICAg
ICAgICAibWh0bWwiLCAgIyBSZXF1aXJlcyBNSFRNTEFyY2hpdmUKICAgICAgICAgXSkKIAotICAg
ICAgICByZXN1bHRfZGlyZWN0b3JpZXMgPSBzZXQoVGVzdFdlYktpdFBvcnQoc3ltYm9sc19zdHJp
bmcsIE5vbmUpLl9za2lwcGVkX3Rlc3RzX2Zvcl91bnN1cHBvcnRlZF9mZWF0dXJlcygpKQorICAg
ICAgICByZXN1bHRfZGlyZWN0b3JpZXMgPSBzZXQoVGVzdFdlYktpdFBvcnQoc3ltYm9sc19zdHJp
bmcsIE5vbmUpLl9za2lwcGVkX3Rlc3RzX2Zvcl91bnN1cHBvcnRlZF9mZWF0dXJlcyh0ZXN0X2xp
c3Q9WydtYXRobWwvZm9vLmh0bWwnXSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0
X2RpcmVjdG9yaWVzLCBleHBlY3RlZF9kaXJlY3RvcmllcykKIAogICAgICAgICAjIFRlc3QgdGhh
dCB0aGUgbm0gc3RyaW5nIHBhcnNpbmcgYWN0dWFsbHkgd29ya3M6CkBAIC0xMjIsNyArMTIyLDcg
QEAgY2xhc3MgV2ViS2l0UG9ydFRlc3QocG9ydF90ZXN0Y2FzZS5Qb3J0VGVzdENhc2UpOgogIiIi
CiAgICAgICAgICMgTm90ZSAnY29tcG9zaXRpbmcnIGlzIG5vdCBpbiB0aGUgbGlzdCBvZiBza2lw
cGVkIGRpcmVjdG9yaWVzIChoZW5jZSB0aGUgcGFyc2luZyBvZiBHcmFwaGljc0xheWVyIHdvcmtl
ZCk6CiAgICAgICAgIGV4cGVjdGVkX2RpcmVjdG9yaWVzID0gc2V0KFsnbWF0aG1sJywgJ3RyYW5z
Zm9ybXMvM2QnLCAnY29tcG9zaXRpbmcvd2ViZ2wnLCAnZmFzdC9jYW52YXMvd2ViZ2wnLCAnYW5p
bWF0aW9ucy8zZCcsICdtaHRtbCcsICdodHRwL3Rlc3RzL2NhbnZhcy93ZWJnbCddKQotICAgICAg
ICByZXN1bHRfZGlyZWN0b3JpZXMgPSBzZXQoVGVzdFdlYktpdFBvcnQoc3ltYm9sc19zdHJpbmcs
IE5vbmUpLl9za2lwcGVkX3Rlc3RzX2Zvcl91bnN1cHBvcnRlZF9mZWF0dXJlcygpKQorICAgICAg
ICByZXN1bHRfZGlyZWN0b3JpZXMgPSBzZXQoVGVzdFdlYktpdFBvcnQoc3ltYm9sc19zdHJpbmcs
IE5vbmUpLl9za2lwcGVkX3Rlc3RzX2Zvcl91bnN1cHBvcnRlZF9mZWF0dXJlcyh0ZXN0X2xpc3Q9
WydtYXRobWwvZm9vLmh0bWwnXSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0X2Rp
cmVjdG9yaWVzLCBleHBlY3RlZF9kaXJlY3RvcmllcykKIAogICAgIGRlZiB0ZXN0X3J1bnRpbWVf
ZmVhdHVyZV9saXN0KHNlbGYpOgpAQCAtMTM2LDExICsxMzYsMTcgQEAgY2xhc3MgV2ViS2l0UG9y
dFRlc3QocG9ydF90ZXN0Y2FzZS5Qb3J0VGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X3NraXBwZWRf
ZGlyZWN0b3JpZXNfZm9yX2ZlYXR1cmVzKHNlbGYpOgogICAgICAgICBzdXBwb3J0ZWRfZmVhdHVy
ZXMgPSBbIkFjY2VsZXJhdGVkIENvbXBvc2l0aW5nIiwgIkZvbyBGZWF0dXJlIl0KICAgICAgICAg
ZXhwZWN0ZWRfZGlyZWN0b3JpZXMgPSBzZXQoWyJhbmltYXRpb25zLzNkIiwgInRyYW5zZm9ybXMv
M2QiXSkKLSAgICAgICAgcmVzdWx0X2RpcmVjdG9yaWVzID0gc2V0KFRlc3RXZWJLaXRQb3J0KE5v
bmUsIHN1cHBvcnRlZF9mZWF0dXJlcykuX3NraXBwZWRfdGVzdHNfZm9yX3Vuc3VwcG9ydGVkX2Zl
YXR1cmVzKCkpCisgICAgICAgIHJlc3VsdF9kaXJlY3RvcmllcyA9IHNldChUZXN0V2ViS2l0UG9y
dChOb25lLCBzdXBwb3J0ZWRfZmVhdHVyZXMpLl9za2lwcGVkX3Rlc3RzX2Zvcl91bnN1cHBvcnRl
ZF9mZWF0dXJlcyh0ZXN0X2xpc3Q9WyJhbmltYXRpb25zLzNkL2Zvby5odG1sIl0pKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdF9kaXJlY3RvcmllcywgZXhwZWN0ZWRfZGlyZWN0b3Jp
ZXMpCisKKyAgICBkZWYgdGVzdF9za2lwcGVkX2RpcmVjdG9yaWVzX2Zvcl9mZWF0dXJlc19ub19t
YXRjaGluZ190ZXN0c19pbl90ZXN0X2xpc3Qoc2VsZik6CisgICAgICAgIHN1cHBvcnRlZF9mZWF0
dXJlcyA9IFsiQWNjZWxlcmF0ZWQgQ29tcG9zaXRpbmciLCAiRm9vIEZlYXR1cmUiXQorICAgICAg
ICBleHBlY3RlZF9kaXJlY3RvcmllcyA9IHNldChbXSkKKyAgICAgICAgcmVzdWx0X2RpcmVjdG9y
aWVzID0gc2V0KFRlc3RXZWJLaXRQb3J0KE5vbmUsIHN1cHBvcnRlZF9mZWF0dXJlcykuX3NraXBw
ZWRfdGVzdHNfZm9yX3Vuc3VwcG9ydGVkX2ZlYXR1cmVzKHRlc3RfbGlzdD1bJ2Zvby5odG1sJ10p
KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdF9kaXJlY3RvcmllcywgZXhwZWN0ZWRf
ZGlyZWN0b3JpZXMpCiAKICAgICBkZWYgdGVzdF9za2lwcGVkX2xheW91dF90ZXN0cyhzZWxmKToK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUZXN0V2ViS2l0UG9ydChOb25lLCBOb25lKS5za2lw
cGVkX2xheW91dF90ZXN0cygpLCBzZXQoWydtZWRpYSddKSkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChUZXN0V2ViS2l0UG9ydChOb25lLCBOb25lKS5za2lwcGVkX2xheW91dF90ZXN0cyh0ZXN0
X2xpc3Q9W10pLCBzZXQoWydtZWRpYSddKSkKIAogICAgIGRlZiB0ZXN0X3NraXBwZWRfZmlsZV9z
ZWFyY2hfcGF0aHMoc2VsZik6CiAgICAgICAgIHBvcnQgPSBUZXN0V2ViS2l0UG9ydCgpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124200</attachid>
            <date>2012-01-26 15:51:01 -0800</date>
            <delta_ts>2012-01-26 15:53:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-77143-20120126155100.patch</filename>
            <type>text/plain</type>
            <size>10810</size>
            <attacher name="Ojan Vafai">ojan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2MDM4CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggODZlZGMzYWIzOTQwYWQ1ZTgwNWFhNGY2OTkwZmM0NDA4
NTQyZGY1YS4uM2IyZTc2NmVjZDk0NjMzMWVmYjMxMjc0MDlmYjlkMGI2YTBiNTZmNiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0
IEBACisyMDEyLTAxLTI2ICBPamFuIFZhZmFpICA8b2phbkBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgcnVuLXdlYmtpdC10ZXN0cyBjYWxscyAibm0iIHdoZW4gaXQgZG9lc24ndCBuZWVkIHRvCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NzE0MworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElmIHdlIGFyZSBu
b3QgcnVubmluZyBhbnkgdGVzdCB0aGF0IGNhbiBiZSBza2lwcGVkIGJ5IGNoZWNraW5nCisgICAg
ICAgIHRoZSBEUlQgZmVhdHVyZSBsaXN0IG9yIGxvb2tpbmcgYXQgdGhlIGxpc3Qgb2Ygc3ltYm9s
cywgYXZvaWQgY2FsbGluZworICAgICAgICBvdXQgdG8gRFJUIG9yIGNhbGxpbmcgIm5tIi4KKwor
ICAgICAgICBUaGlzIHNhdmVzIH43MDBtcyBvbiBteSBNYWMgUHJvLiBJbiBjYXNlcyB3aGVyZSB5
b3Ugc3RpbGwgaGF2ZSB0byBjYWxsIG91dAorICAgICAgICB0byAibm0iIGl0J3Mgb25seSBhIGNv
dXBsZSBtcyBzbG93ZXIuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9tb2RlbHMvdGVzdF9leHBlY3RhdGlvbnMucHk6CisgICAgICAgIChUZXN0RXhwZWN0YXRpb25z
Ll9faW5pdF9fKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0
L2Jhc2UucHk6CisgICAgICAgIChQb3J0LnNraXBwZWRfdGVzdHMpOgorICAgICAgICAqIFNjcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0LnB5OgorICAgICAgICAoV2ViS2l0
UG9ydC5fc2hvdWxkX2NoZWNrX2Zvcl9taXNzaW5nX2ZlYXR1cmVzKToKKyAgICAgICAgKFdlYktp
dFBvcnQpOgorICAgICAgICAoV2ViS2l0UG9ydC5fc2hvdWxkX2NoZWNrX2Zvcl9taXNzaW5nX3N5
bWJvbHMpOgorICAgICAgICAoV2ViS2l0UG9ydC5fc2tpcHBlZF90ZXN0c19mb3JfdW5zdXBwb3J0
ZWRfZmVhdHVyZXMpOgorICAgICAgICAoV2ViS2l0UG9ydC5za2lwcGVkX2xheW91dF90ZXN0cyk6
CisgICAgICAgIChXZWJLaXRQb3J0LnNraXBwZWRfdGVzdHMpOgorICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0X3VuaXR0ZXN0LnB5OgorICAgICAgICAo
V2ViS2l0UG9ydFRlc3QudGVzdF9za2lwcGVkX2RpcmVjdG9yaWVzX2Zvcl9zeW1ib2xzKToKKyAg
ICAgICAgKHRlc3Rfc2tpcHBlZF9kaXJlY3Rvcmllc19mb3JfZmVhdHVyZXMpOgorICAgICAgICAo
dGVzdF9za2lwcGVkX2RpcmVjdG9yaWVzX2Zvcl9mZWF0dXJlc19ub19tYXRjaGluZ190ZXN0c19p
bl90ZXN0X2xpc3QpOgorICAgICAgICAodGVzdF9za2lwcGVkX2xheW91dF90ZXN0cyk6CisKIDIw
MTItMDEtMjUgIE9qYW4gVmFmYWkgIDxvamFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBQYXJz
aW5nIHRlc3RfZXhwZWNhdGlvbnMudHh0ICsgU2tpcHBlZCBsaXN0cyB0YWtlcyB0b28gbG9uZwpk
aWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbW9kZWxzL3Rl
c3RfZXhwZWN0YXRpb25zLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
bW9kZWxzL3Rlc3RfZXhwZWN0YXRpb25zLnB5CmluZGV4IDcwOTYwZDJkYzZiOWM0MmU3N2NkZjAx
YzA2Yzg2ZGZjM2ZkNTdkODYuLjZhMzBkNGU4ZTA0MTliM2Y4MWFhN2ZiZWE0ZThhMjkxNDJlNmQ4
NzkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL21vZGVs
cy90ZXN0X2V4cGVjdGF0aW9ucy5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9tb2RlbHMvdGVzdF9leHBlY3RhdGlvbnMucHkKQEAgLTcyMiw3ICs3MjIsNyBAQCBj
bGFzcyBUZXN0RXhwZWN0YXRpb25zKG9iamVjdCk6CiAKICAgICAgICAgc2VsZi5fZXhwZWN0YXRp
b25zID0gc2VsZi5fcGFyc2VyLnBhcnNlKGV4cGVjdGF0aW9ucykKICAgICAgICAgc2VsZi5fYWRk
X2V4cGVjdGF0aW9ucyhzZWxmLl9leHBlY3RhdGlvbnMsIG92ZXJyaWRlc19hbGxvd2VkPUZhbHNl
KQotICAgICAgICBzZWxmLl9hZGRfc2tpcHBlZF90ZXN0cyhwb3J0LnNraXBwZWRfdGVzdHMoKSkK
KyAgICAgICAgc2VsZi5fYWRkX3NraXBwZWRfdGVzdHMocG9ydC5za2lwcGVkX3Rlc3RzKHRlc3Rz
KSkKIAogICAgICAgICBpZiBvdmVycmlkZXM6CiAgICAgICAgICAgICBvdmVycmlkZXNfZXhwZWN0
YXRpb25zID0gc2VsZi5fcGFyc2VyLnBhcnNlKG92ZXJyaWRlcykKZGlmZiAtLWdpdCBhL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weSBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weQppbmRleCAzNzk2NmNhMGI5NGQ0
ZDg5MjhlZDVlZDIyMGIzMWYyNjNlNTUxNjdmLi5hOGI5OGZkYTJjMzU2ZjU0MDNmN2M1NjJhOTRi
Njc5MmU4MzNkMmI0IDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9wb3J0L2Jhc2UucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcG9ydC9iYXNlLnB5CkBAIC02MTEsNyArNjExLDcgQEAgY2xhc3MgUG9ydChvYmplY3QpOgog
ICAgIGRlZiBza2lwcGVkX3BlcmZfdGVzdHMoc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLl9l
eHBlY3RhdGlvbnNfZnJvbV9za2lwcGVkX2ZpbGVzKFtzZWxmLnBlcmZfdGVzdHNfZGlyKCldKQog
Ci0gICAgZGVmIHNraXBwZWRfdGVzdHMoc2VsZik6CisgICAgZGVmIHNraXBwZWRfdGVzdHMoc2Vs
ZiwgdGVzdF9saXN0KToKICAgICAgICAgcmV0dXJuIFtdCiAKICAgICBkZWYgc2tpcHNfbGF5b3V0
X3Rlc3Qoc2VsZiwgdGVzdF9uYW1lKToKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcG9ydC93ZWJraXQucHkKaW5kZXggMGMzNWY0OWU5ZmNmNWRjMjNlOWUyNjc1
ODBmODc5NmZkMjQ2MmExMS4uNDFhMTUyZDZmMDcxOGE4YmE1YmJhZjQ2NTgwOWMzN2MwMGI4NmY2
YSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93
ZWJraXQucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93
ZWJraXQucHkKQEAgLTMyLDYgKzMyLDcgQEAKICIiIldlYktpdCBpbXBsZW1lbnRhdGlvbnMgb2Yg
dGhlIFBvcnQgaW50ZXJmYWNlLiIiIgogCiBpbXBvcnQgYmFzZTY0CitpbXBvcnQgaXRlcnRvb2xz
CiBpbXBvcnQgbG9nZ2luZwogaW1wb3J0IG9wZXJhdG9yCiBpbXBvcnQgb3MKQEAgLTMwNSwyMCAr
MzA2LDM0IEBAIGNsYXNzIFdlYktpdFBvcnQoUG9ydCk6CiAgICAgICAgICAgICAiTUhUTUxBcmNo
aXZlIjogWyJtaHRtbCJdLAogICAgICAgICB9CiAKLSAgICBkZWYgX3NraXBwZWRfdGVzdHNfZm9y
X3Vuc3VwcG9ydGVkX2ZlYXR1cmVzKHNlbGYpOgotICAgICAgICAjIElmIHRoZSBwb3J0IHN1cHBv
cnRzIHJ1bnRpbWUgZmVhdHVyZSBkZXRlY3Rpb24sIGRpc2FibGUgYW55IHRlc3RzCi0gICAgICAg
ICMgZm9yIGZlYXR1cmVzIG1pc3NpbmcgZnJvbSB0aGUgcnVudGltZSBmZWF0dXJlIGxpc3QuCi0g
ICAgICAgIHN1cHBvcnRlZF9mZWF0dXJlX2xpc3QgPSBzZWxmLl9ydW50aW1lX2ZlYXR1cmVfbGlz
dCgpCi0gICAgICAgICMgSWYgX3J1bnRpbWVfZmVhdHVyZV9saXN0IHJldHVybnMgYSBub24tTm9u
ZSB2YWx1ZSwgdGhlbiBwcmVmZXIKLSAgICAgICAgIyBydW50aW1lIGZlYXR1cmUgZGV0ZWN0aW9u
IG92ZXIgc3RhdGljIGZlYXR1cmUgZGV0ZWN0aW9uLgotICAgICAgICBpZiBzdXBwb3J0ZWRfZmVh
dHVyZV9saXN0IGlzIG5vdCBOb25lOgotICAgICAgICAgICAgcmV0dXJuIHJlZHVjZShvcGVyYXRv
ci5hZGQsIFtkaXJlY3RvcmllcyBmb3IgZmVhdHVyZSwgZGlyZWN0b3JpZXMgaW4gc2VsZi5fbWlz
c2luZ19mZWF0dXJlX3RvX3NraXBwZWRfdGVzdHMoKS5pdGVtcygpIGlmIGZlYXR1cmUgbm90IGlu
IHN1cHBvcnRlZF9mZWF0dXJlX2xpc3RdKQotCi0gICAgICAgICMgUnVudGltZSBmZWF0dXJlIGRl
dGVjdGlvbiBub3Qgc3VwcG9ydGVkLCBmYWxsYmFjayB0byBzdGF0aWMgZGVjdGVjdGlvbjoKLSAg
ICAgICAgIyBEaXNhYmxlIGFueSB0ZXN0cyBmb3Igc3ltYm9scyBtaXNzaW5nIGZyb20gdGhlIHdl
YmNvcmUgc3ltYm9sIHN0cmluZy4KLSAgICAgICAgd2ViY29yZV9zeW1ib2xzX3N0cmluZyA9IHNl
bGYuX3dlYmNvcmVfc3ltYm9sc19zdHJpbmcoKQotICAgICAgICBpZiB3ZWJjb3JlX3N5bWJvbHNf
c3RyaW5nIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgcmV0dXJuIHJlZHVjZShvcGVyYXRvci5h
ZGQsIFtkaXJlY3RvcmllcyBmb3Igc3ltYm9sX3N1YnN0cmluZywgZGlyZWN0b3JpZXMgaW4gc2Vs
Zi5fbWlzc2luZ19zeW1ib2xfdG9fc2tpcHBlZF90ZXN0cygpLml0ZW1zKCkgaWYgc3ltYm9sX3N1
YnN0cmluZyBub3QgaW4gd2ViY29yZV9zeW1ib2xzX3N0cmluZ10sIFtdKQorICAgIGRlZiBfaGFz
X3Rlc3RfaW5fZGlyZWN0b3JpZXMoc2VsZiwgZGlyZWN0b3J5X2xpc3RzLCB0ZXN0X2xpc3QpOgor
ICAgICAgICBkaXJlY3RvcmllcyA9IGl0ZXJ0b29scy5jaGFpbi5mcm9tX2l0ZXJhYmxlKGRpcmVj
dG9yeV9saXN0cykKKyAgICAgICAgZm9yIGRpcmVjdG9yeSwgdGVzdCBpbiBpdGVydG9vbHMucHJv
ZHVjdChkaXJlY3RvcmllcywgdGVzdF9saXN0KToKKyAgICAgICAgICAgIGlmIHRlc3Quc3RhcnRz
d2l0aChkaXJlY3RvcnkpOgorICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIHJl
dHVybiBGYWxzZQorCisgICAgZGVmIF9za2lwcGVkX3Rlc3RzX2Zvcl91bnN1cHBvcnRlZF9mZWF0
dXJlcyhzZWxmLCB0ZXN0X2xpc3QpOgorICAgICAgICAjIE9ubHkgY2hlY2sgdGhlIHJ1bnRpbWUg
ZmVhdHVyZSBsaXN0IG9mIHRoZXJlIGFyZSB0ZXN0cyBpbiB0aGUgdGVzdF9saXN0IHRoYXQgbWln
aHQgZ2V0IHNraXBwZWQuCisgICAgICAgICMgVGhpcyBpcyBhIHBlcmZvcm1hbmNlIG9wdGltaXph
dGlvbiB0byBhdm9pZCB0aGUgc3VicHJvY2VzcyBjYWxsIHRvIERSVC4KKyAgICAgICAgaWYgc2Vs
Zi5faGFzX3Rlc3RfaW5fZGlyZWN0b3JpZXMoc2VsZi5fbWlzc2luZ19mZWF0dXJlX3RvX3NraXBw
ZWRfdGVzdHMoKS52YWx1ZXMoKSwgdGVzdF9saXN0KToKKyAgICAgICAgICAgICMgSWYgdGhlIHBv
cnQgc3VwcG9ydHMgcnVudGltZSBmZWF0dXJlIGRldGVjdGlvbiwgZGlzYWJsZSBhbnkgdGVzdHMK
KyAgICAgICAgICAgICMgZm9yIGZlYXR1cmVzIG1pc3NpbmcgZnJvbSB0aGUgcnVudGltZSBmZWF0
dXJlIGxpc3QuCisgICAgICAgICAgICBzdXBwb3J0ZWRfZmVhdHVyZV9saXN0ID0gc2VsZi5fcnVu
dGltZV9mZWF0dXJlX2xpc3QoKQorICAgICAgICAgICAgIyBJZiBfcnVudGltZV9mZWF0dXJlX2xp
c3QgcmV0dXJucyBhIG5vbi1Ob25lIHZhbHVlLCB0aGVuIHByZWZlcgorICAgICAgICAgICAgIyBy
dW50aW1lIGZlYXR1cmUgZGV0ZWN0aW9uIG92ZXIgc3RhdGljIGZlYXR1cmUgZGV0ZWN0aW9uLgor
ICAgICAgICAgICAgaWYgc3VwcG9ydGVkX2ZlYXR1cmVfbGlzdCBpcyBub3QgTm9uZToKKyAgICAg
ICAgICAgICAgICByZXR1cm4gcmVkdWNlKG9wZXJhdG9yLmFkZCwgW2RpcmVjdG9yaWVzIGZvciBm
ZWF0dXJlLCBkaXJlY3RvcmllcyBpbiBzZWxmLl9taXNzaW5nX2ZlYXR1cmVfdG9fc2tpcHBlZF90
ZXN0cygpLml0ZW1zKCkgaWYgZmVhdHVyZSBub3QgaW4gc3VwcG9ydGVkX2ZlYXR1cmVfbGlzdF0p
CisKKyAgICAgICAgIyBPbmx5IGNoZWNrIHRoZSBzeW1ib2xzIG9mIHRoZXJlIGFyZSB0ZXN0cyBp
biB0aGUgdGVzdF9saXN0IHRoYXQgbWlnaHQgZ2V0IHNraXBwZWQuCisgICAgICAgICMgVGhpcyBp
cyBhIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbiB0byBhdm9pZCB0aGUgY2FsbGluZyBubS4KKyAg
ICAgICAgaWYgc2VsZi5faGFzX3Rlc3RfaW5fZGlyZWN0b3JpZXMoc2VsZi5fbWlzc2luZ19zeW1i
b2xfdG9fc2tpcHBlZF90ZXN0cygpLnZhbHVlcygpLCB0ZXN0X2xpc3QpOgorICAgICAgICAgICAg
IyBSdW50aW1lIGZlYXR1cmUgZGV0ZWN0aW9uIG5vdCBzdXBwb3J0ZWQsIGZhbGxiYWNrIHRvIHN0
YXRpYyBkZWN0ZWN0aW9uOgorICAgICAgICAgICAgIyBEaXNhYmxlIGFueSB0ZXN0cyBmb3Igc3lt
Ym9scyBtaXNzaW5nIGZyb20gdGhlIHdlYmNvcmUgc3ltYm9sIHN0cmluZy4KKyAgICAgICAgICAg
IHdlYmNvcmVfc3ltYm9sc19zdHJpbmcgPSBzZWxmLl93ZWJjb3JlX3N5bWJvbHNfc3RyaW5nKCkK
KyAgICAgICAgICAgIGlmIHdlYmNvcmVfc3ltYm9sc19zdHJpbmcgaXMgbm90IE5vbmU6CisgICAg
ICAgICAgICAgICAgcmV0dXJuIHJlZHVjZShvcGVyYXRvci5hZGQsIFtkaXJlY3RvcmllcyBmb3Ig
c3ltYm9sX3N1YnN0cmluZywgZGlyZWN0b3JpZXMgaW4gc2VsZi5fbWlzc2luZ19zeW1ib2xfdG9f
c2tpcHBlZF90ZXN0cygpLml0ZW1zKCkgaWYgc3ltYm9sX3N1YnN0cmluZyBub3QgaW4gd2ViY29y
ZV9zeW1ib2xzX3N0cmluZ10sIFtdKQorCiAgICAgICAgICMgRmFpbGVkIHRvIGdldCBhbnkgcnVu
dGltZSBvciBzeW1ib2wgaW5mb3JtYXRpb24sIGRvbid0IHNraXAgYW55IHRlc3RzLgogICAgICAg
ICByZXR1cm4gW10KIApAQCAtMzUwLDE2ICszNjUsMTUgQEAgY2xhc3MgV2ViS2l0UG9ydChQb3J0
KToKICAgICAgICAgICAgIGV4cGVjdGF0aW9ucyA9IHNlbGYuX2ZpbGVzeXN0ZW0ucmVhZF90ZXh0
X2ZpbGUoZXhwZWN0YXRpb25zX3BhdGgpCiAgICAgICAgIHJldHVybiBleHBlY3RhdGlvbnMKIAot
ICAgIEBtZW1vaXplZAotICAgIGRlZiBza2lwcGVkX2xheW91dF90ZXN0cyhzZWxmKToKKyAgICBk
ZWYgc2tpcHBlZF9sYXlvdXRfdGVzdHMoc2VsZiwgdGVzdF9saXN0KToKICAgICAgICAgIyBVc2Ug
YSBzZXQgdG8gYWxsb3cgZHVwbGljYXRlcwogICAgICAgICB0ZXN0c190b19za2lwID0gc2V0KHNl
bGYuX2V4cGVjdGF0aW9uc19mcm9tX3NraXBwZWRfZmlsZXMoc2VsZi5fc2tpcHBlZF9maWxlX3Nl
YXJjaF9wYXRocygpKSkKICAgICAgICAgdGVzdHNfdG9fc2tpcC51cGRhdGUoc2VsZi5fdGVzdHNf
Zm9yX290aGVyX3BsYXRmb3JtcygpKQotICAgICAgICB0ZXN0c190b19za2lwLnVwZGF0ZShzZWxm
Ll9za2lwcGVkX3Rlc3RzX2Zvcl91bnN1cHBvcnRlZF9mZWF0dXJlcygpKQorICAgICAgICB0ZXN0
c190b19za2lwLnVwZGF0ZShzZWxmLl9za2lwcGVkX3Rlc3RzX2Zvcl91bnN1cHBvcnRlZF9mZWF0
dXJlcyh0ZXN0X2xpc3QpKQogICAgICAgICByZXR1cm4gdGVzdHNfdG9fc2tpcAogCi0gICAgZGVm
IHNraXBwZWRfdGVzdHMoc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLnNraXBwZWRfbGF5b3V0
X3Rlc3RzKCkKKyAgICBkZWYgc2tpcHBlZF90ZXN0cyhzZWxmLCB0ZXN0X2xpc3QpOgorICAgICAg
ICByZXR1cm4gc2VsZi5za2lwcGVkX2xheW91dF90ZXN0cyh0ZXN0X2xpc3QpCiAKICAgICBkZWYg
X2J1aWxkX3BhdGgoc2VsZiwgKmNvbXBzKToKICAgICAgICAgIyAtLXJvb3QgaXMgdXNlZCBmb3Ig
cnVubmluZyB3aXRoIGEgcHJlLWJ1aWx0IHJvb3QgKGxpa2UgZnJvbSBhIG5pZ2h0bHkgemlwKS4K
ZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Vi
a2l0X3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC93ZWJraXRfdW5pdHRlc3QucHkKaW5kZXggZDIwNTZmYjY3ZDhhM2I5OWZhZWU4ZGY2MmUyZGI2
NWRiNDRmZjg3ZS4uYThjYzhlNWI4MTZjZGE3MTIwMGUzY2UzMjUwNzZkZTAyMGZhNjNkZCAxMDA3
NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJraXRf
dW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC93ZWJraXRfdW5pdHRlc3QucHkKQEAgLTExMSw3ICsxMTEsNyBAQCBjbGFzcyBXZWJLaXRQb3J0
VGVzdChwb3J0X3Rlc3RjYXNlLlBvcnRUZXN0Q2FzZSk6CiAgICAgICAgICAgICAibWh0bWwiLCAg
IyBSZXF1aXJlcyBNSFRNTEFyY2hpdmUKICAgICAgICAgXSkKIAotICAgICAgICByZXN1bHRfZGly
ZWN0b3JpZXMgPSBzZXQoVGVzdFdlYktpdFBvcnQoc3ltYm9sc19zdHJpbmcsIE5vbmUpLl9za2lw
cGVkX3Rlc3RzX2Zvcl91bnN1cHBvcnRlZF9mZWF0dXJlcygpKQorICAgICAgICByZXN1bHRfZGly
ZWN0b3JpZXMgPSBzZXQoVGVzdFdlYktpdFBvcnQoc3ltYm9sc19zdHJpbmcsIE5vbmUpLl9za2lw
cGVkX3Rlc3RzX2Zvcl91bnN1cHBvcnRlZF9mZWF0dXJlcyh0ZXN0X2xpc3Q9WydtYXRobWwvZm9v
Lmh0bWwnXSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0X2RpcmVjdG9yaWVzLCBl
eHBlY3RlZF9kaXJlY3RvcmllcykKIAogICAgICAgICAjIFRlc3QgdGhhdCB0aGUgbm0gc3RyaW5n
IHBhcnNpbmcgYWN0dWFsbHkgd29ya3M6CkBAIC0xMjIsNyArMTIyLDcgQEAgY2xhc3MgV2ViS2l0
UG9ydFRlc3QocG9ydF90ZXN0Y2FzZS5Qb3J0VGVzdENhc2UpOgogIiIiCiAgICAgICAgICMgTm90
ZSAnY29tcG9zaXRpbmcnIGlzIG5vdCBpbiB0aGUgbGlzdCBvZiBza2lwcGVkIGRpcmVjdG9yaWVz
IChoZW5jZSB0aGUgcGFyc2luZyBvZiBHcmFwaGljc0xheWVyIHdvcmtlZCk6CiAgICAgICAgIGV4
cGVjdGVkX2RpcmVjdG9yaWVzID0gc2V0KFsnbWF0aG1sJywgJ3RyYW5zZm9ybXMvM2QnLCAnY29t
cG9zaXRpbmcvd2ViZ2wnLCAnZmFzdC9jYW52YXMvd2ViZ2wnLCAnYW5pbWF0aW9ucy8zZCcsICdt
aHRtbCcsICdodHRwL3Rlc3RzL2NhbnZhcy93ZWJnbCddKQotICAgICAgICByZXN1bHRfZGlyZWN0
b3JpZXMgPSBzZXQoVGVzdFdlYktpdFBvcnQoc3ltYm9sc19zdHJpbmcsIE5vbmUpLl9za2lwcGVk
X3Rlc3RzX2Zvcl91bnN1cHBvcnRlZF9mZWF0dXJlcygpKQorICAgICAgICByZXN1bHRfZGlyZWN0
b3JpZXMgPSBzZXQoVGVzdFdlYktpdFBvcnQoc3ltYm9sc19zdHJpbmcsIE5vbmUpLl9za2lwcGVk
X3Rlc3RzX2Zvcl91bnN1cHBvcnRlZF9mZWF0dXJlcyh0ZXN0X2xpc3Q9WydtYXRobWwvZm9vLmh0
bWwnXSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0X2RpcmVjdG9yaWVzLCBleHBl
Y3RlZF9kaXJlY3RvcmllcykKIAogICAgIGRlZiB0ZXN0X3J1bnRpbWVfZmVhdHVyZV9saXN0KHNl
bGYpOgpAQCAtMTM2LDExICsxMzYsMTcgQEAgY2xhc3MgV2ViS2l0UG9ydFRlc3QocG9ydF90ZXN0
Y2FzZS5Qb3J0VGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X3NraXBwZWRfZGlyZWN0b3JpZXNfZm9y
X2ZlYXR1cmVzKHNlbGYpOgogICAgICAgICBzdXBwb3J0ZWRfZmVhdHVyZXMgPSBbIkFjY2VsZXJh
dGVkIENvbXBvc2l0aW5nIiwgIkZvbyBGZWF0dXJlIl0KICAgICAgICAgZXhwZWN0ZWRfZGlyZWN0
b3JpZXMgPSBzZXQoWyJhbmltYXRpb25zLzNkIiwgInRyYW5zZm9ybXMvM2QiXSkKLSAgICAgICAg
cmVzdWx0X2RpcmVjdG9yaWVzID0gc2V0KFRlc3RXZWJLaXRQb3J0KE5vbmUsIHN1cHBvcnRlZF9m
ZWF0dXJlcykuX3NraXBwZWRfdGVzdHNfZm9yX3Vuc3VwcG9ydGVkX2ZlYXR1cmVzKCkpCisgICAg
ICAgIHJlc3VsdF9kaXJlY3RvcmllcyA9IHNldChUZXN0V2ViS2l0UG9ydChOb25lLCBzdXBwb3J0
ZWRfZmVhdHVyZXMpLl9za2lwcGVkX3Rlc3RzX2Zvcl91bnN1cHBvcnRlZF9mZWF0dXJlcyh0ZXN0
X2xpc3Q9WyJhbmltYXRpb25zLzNkL2Zvby5odG1sIl0pKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHJlc3VsdF9kaXJlY3RvcmllcywgZXhwZWN0ZWRfZGlyZWN0b3JpZXMpCisKKyAgICBkZWYg
dGVzdF9za2lwcGVkX2RpcmVjdG9yaWVzX2Zvcl9mZWF0dXJlc19ub19tYXRjaGluZ190ZXN0c19p
bl90ZXN0X2xpc3Qoc2VsZik6CisgICAgICAgIHN1cHBvcnRlZF9mZWF0dXJlcyA9IFsiQWNjZWxl
cmF0ZWQgQ29tcG9zaXRpbmciLCAiRm9vIEZlYXR1cmUiXQorICAgICAgICBleHBlY3RlZF9kaXJl
Y3RvcmllcyA9IHNldChbXSkKKyAgICAgICAgcmVzdWx0X2RpcmVjdG9yaWVzID0gc2V0KFRlc3RX
ZWJLaXRQb3J0KE5vbmUsIHN1cHBvcnRlZF9mZWF0dXJlcykuX3NraXBwZWRfdGVzdHNfZm9yX3Vu
c3VwcG9ydGVkX2ZlYXR1cmVzKHRlc3RfbGlzdD1bJ2Zvby5odG1sJ10pKQogICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKHJlc3VsdF9kaXJlY3RvcmllcywgZXhwZWN0ZWRfZGlyZWN0b3JpZXMpCiAK
ICAgICBkZWYgdGVzdF9za2lwcGVkX2xheW91dF90ZXN0cyhzZWxmKToKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChUZXN0V2ViS2l0UG9ydChOb25lLCBOb25lKS5za2lwcGVkX2xheW91dF90ZXN0
cygpLCBzZXQoWydtZWRpYSddKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUZXN0V2ViS2l0
UG9ydChOb25lLCBOb25lKS5za2lwcGVkX2xheW91dF90ZXN0cyh0ZXN0X2xpc3Q9W10pLCBzZXQo
WydtZWRpYSddKSkKIAogICAgIGRlZiB0ZXN0X3NraXBwZWRfZmlsZV9zZWFyY2hfcGF0aHMoc2Vs
Zik6CiAgICAgICAgIHBvcnQgPSBUZXN0V2ViS2l0UG9ydCgpCg==
</data>
<flag name="review"
          id="125398"
          type_id="1"
          status="+"
          setter="dpranke"
    />
          </attachment>
      

    </bug>

</bugzilla>