<?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>91533</bug_id>
          
          <creation_ts>2012-07-17 12:06:20 -0700</creation_ts>
          <short_desc>[Chromium-Android] Run ref tests together to avoid expensive driver restarts</short_desc>
          <delta_ts>2012-07-18 02:19:37 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Android</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>
          
          <blocked>66687</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Xianzhu Wang">wangxianzhu</reporter>
          <assigned_to name="Xianzhu Wang">wangxianzhu</assigned_to>
          <cc>abarth</cc>
    
    <cc>dpranke</cc>
    
    <cc>ojan</cc>
    
    <cc>peter</cc>
    
    <cc>rniwa</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>671480</commentid>
    <comment_count>0</comment_count>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2012-07-17 12:06:20 -0700</bug_when>
    <thetext>Driver restarts on Android is expensive (several seconds each time). Switching between normal tests and ref tests requires a driver restart to switch between non-pixel-test mode and pixel-test mode. To reduce the time to run layout tests on Android, we can group all ref tests together.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>671483</commentid>
    <comment_count>1</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-07-17 12:08:17 -0700</bug_when>
    <thetext>I don&apos;t think this is a good idea. reftests are getting increasingly scattered through all the directories.

The long term plan we&apos;ve had on the other ports is to support per-test arguments so you could force pixel testing on for a particular test, and that way you&apos;d only need one DRT.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>671490</commentid>
    <comment_count>2</comment_count>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2012-07-17 12:15:58 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; I don&apos;t think this is a good idea. reftests are getting increasingly scattered through all the directories.
&gt; 
&gt; The long term plan we&apos;ve had on the other ports is to support per-test arguments so you could force pixel testing on for a particular test, and that way you&apos;d only need one DRT.

It&apos;ll be great to switch pixel test on/off in one DRT.

However, the issue is significant on Android and I&apos;ve already created a patch. Can we make it an intermediate solution before we have the pixel-test per-test argument?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>671493</commentid>
    <comment_count>3</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-07-17 12:19:51 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (In reply to comment #1)
&gt; &gt; I don&apos;t think this is a good idea. reftests are getting increasingly scattered through all the directories.
&gt; &gt; 
&gt; &gt; The long term plan we&apos;ve had on the other ports is to support per-test arguments so you could force pixel testing on for a particular test, and that way you&apos;d only need one DRT.
&gt; 
&gt; It&apos;ll be great to switch pixel test on/off in one DRT.
&gt; 
&gt; However, the issue is significant on Android and I&apos;ve already created a patch. Can we make it an intermediate solution before we have the pixel-test per-test argument?

if you post the patch I&apos;ll be happy to look at it, but I can&apos;t guarantee I&apos;ll like it :).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>671494</commentid>
    <comment_count>4</comment_count>
      <attachid>152804</attachid>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2012-07-17 12:19:59 -0700</bug_when>
    <thetext>Created attachment 152804
Patch for preview</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>671495</commentid>
    <comment_count>5</comment_count>
      <attachid>152804</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-07-17 12:25:31 -0700</bug_when>
    <thetext>Comment on attachment 152804
Patch for preview

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

I guess I can live with this as long as it&apos;s optional. Can you file a bug to remove this and also file a bug to explicitly track adding per-test arg support to DRT and NRWT, and add a couple of FIXMEs in the code to note the hack?

&gt; Tools/ChangeLog:8
&gt; +        Added a command line option &apos;--shard-ref-tests&apos; to group ref tests in dedicated shards.

Please add a comment here about why we want to group the  tests; you can almost guess form the subject line above but some comment about DriverProxy would probably be helpful.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>671558</commentid>
    <comment_count>6</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-07-17 13:46:56 -0700</bug_when>
    <thetext>Out of curiosity, how much is the slowdown?

Maybe it would make more sense to have a DriverPool so we can reuse DRT instances.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>671575</commentid>
    <comment_count>7</comment_count>
      <attachid>152823</attachid>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2012-07-17 13:59:37 -0700</bug_when>
    <thetext>Created attachment 152823
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>671581</commentid>
    <comment_count>8</comment_count>
      <attachid>152825</attachid>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2012-07-17 14:05:26 -0700</bug_when>
    <thetext>Created attachment 152825
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>671589</commentid>
    <comment_count>9</comment_count>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2012-07-17 14:16:49 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; Created an attachment (id=152825) [details]
&gt; Patch

(In reply to comment #5)
&gt; (From update of attachment 152804 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=152804&amp;action=review
&gt; 
&gt; I guess I can live with this as long as it&apos;s optional. Can you file a bug to remove this and also file a bug to explicitly track adding per-test arg support to DRT and NRWT, and add a couple of FIXMEs in the code to note the hack?
&gt;

Filed bug 91538 and bug 91539.
Added FIXME in run_webkit_tests.py parse_args().

&gt; &gt; Tools/ChangeLog:8
&gt; &gt; +        Added a command line option &apos;--shard-ref-tests&apos; to group ref tests in dedicated shards.
&gt; 
&gt; Please add a comment here about why we want to group the  tests; you can almost guess form the subject line above but some comment about DriverProxy would probably be helpful.

Done.

(In reply to comment #6)
&gt; Out of curiosity, how much is the slowdown?
&gt; 
&gt; Maybe it would make more sense to have a DriverPool so we can reuse DRT instances.

Our stat shows that the switching between pixel-test and non-pixel-test occurs about 300 times (total 20~30 minutes) during a full NRWT run.

Actually DriverProxy already pools two drivers (one pixel-test and the other non-pixel test) but we don&apos;t use it because we don&apos;t support multiple native_test activities on Android. Only one driver/DRT instance is allowed on one device. (We will support multiple devices to run layout tests in parallel in the future.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>671686</commentid>
    <comment_count>10</comment_count>
      <attachid>152825</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-07-17 15:52:33 -0700</bug_when>
    <thetext>Comment on attachment 152825
Patch

close ... please add a test for this in run_webkit_tests_integrationtest.py so we can be sure the code is exercised by test-webkitpy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>671797</commentid>
    <comment_count>11</comment_count>
      <attachid>152883</attachid>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2012-07-17 17:33:57 -0700</bug_when>
    <thetext>Created attachment 152883
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>671798</commentid>
    <comment_count>12</comment_count>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2012-07-17 17:34:44 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 152825 [details])
&gt; close ... please add a test for this in run_webkit_tests_integrationtest.py so we can be sure the code is exercised by test-webkitpy.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>671808</commentid>
    <comment_count>13</comment_count>
      <attachid>152883</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-07-17 17:38:54 -0700</bug_when>
    <thetext>Comment on attachment 152883
Patch

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

&gt; Tools/Scripts/webkitpy/layout_tests/controllers/manager_unittest.py:62
&gt; +    def __init__(self, ref_tests, **kwargs):

oh, I meant add an integration test in run_webkit_tests_integrationtest.py that tested that --shard-ref-tests actually ran properly (I don&apos;t care as much that the tests are actually sharded in that case, just that we don&apos;t error out).

This is fine, too, though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>671811</commentid>
    <comment_count>14</comment_count>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2012-07-17 17:43:26 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (From update of attachment 152883 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=152883&amp;action=review
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/layout_tests/controllers/manager_unittest.py:62
&gt; &gt; +    def __init__(self, ref_tests, **kwargs):
&gt; 
&gt; oh, I meant add an integration test in run_webkit_tests_integrationtest.py that tested that --shard-ref-tests actually ran properly (I don&apos;t care as much that the tests are actually sharded in that case, just that we don&apos;t error out).
&gt; 

Sorry for misunderstanding that :)

&gt; This is fine, too, though.

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>671813</commentid>
    <comment_count>15</comment_count>
      <attachid>152889</attachid>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2012-07-17 17:51:59 -0700</bug_when>
    <thetext>Created attachment 152889
Rebased for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>671905</commentid>
    <comment_count>16</comment_count>
      <attachid>152889</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-17 19:45:59 -0700</bug_when>
    <thetext>Comment on attachment 152889
Rebased for landing

Clearing flags on attachment: 152889

Committed r122914: &lt;http://trac.webkit.org/changeset/122914&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>671906</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-17 19:46:05 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>672064</commentid>
    <comment_count>18</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-07-18 00:16:49 -0700</bug_when>
    <thetext>This caused python tests to fail on some bots:
http://build.webkit.org/builders/Apple%20Lion%20Debug%20WK1%20%28Tests%29/builds/1026/steps/webkitpy-test/logs/stdio</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>152804</attachid>
            <date>2012-07-17 12:19:59 -0700</date>
            <delta_ts>2012-07-17 13:59:34 -0700</delta_ts>
            <desc>Patch for preview</desc>
            <filename>bug-91533-20120717121959.patch</filename>
            <type>text/plain</type>
            <size>9968</size>
            <attacher name="Xianzhu Wang">wangxianzhu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIyODY2CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYzkxYzViMjNiMGJiNzQyYzMzOWZmYTAwMjc4MjBmNzE0
N2M2M2RiMi4uZTRmZWQ4ZDBjMGQ3ODI5MDgxZjBjZDdiOThjNTZjNmE4MzhjZjQ4OCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI3
IEBACiAyMDEyLTA3LTE3ICBYaWFuemh1IFdhbmcgIDx3YW5neGlhbnpodUBjaHJvbWl1bS5vcmc+
CiAKKyAgICAgICAgW0Nocm9taXVtLUFuZHJvaWRdIFJ1biByZWYgdGVzdHMgdG9nZXRoZXIgdG8g
YXZvaWQgZXhwZW5zaXZlIGRyaXZlciByZXN0YXJ0cworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTE1MzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBhIGNvbW1hbmQgbGluZSBvcHRpb24gJy0tc2hh
cmQtcmVmLXRlc3RzJyB0byBncm91cCByZWYgdGVzdHMgaW4gZGVkaWNhdGVkIHNoYXJkcy4KKyAg
ICAgICAgVGhlIG9wdGlvbiBpcyBieSBkZWZhdWx0IGVuYWJsZWQgb24gQW5kcm9pZC4KKworICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21hbmFnZXIu
cHk6CisgICAgICAgIChNYW5hZ2VyLl9zaGFyZF90ZXN0cyk6CisgICAgICAgIChNYW5hZ2VyLl9z
aGFyZF9pbl90d28pOgorICAgICAgICAoTWFuYWdlci5fc2hhcmRfYnlfZGlyZWN0b3J5KToKKyAg
ICAgICAgKE1hbmFnZXIuX3J1bl90ZXN0cyk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvY29udHJvbGxlcnMvd29ya2VyLnB5OgorICAgICAgICAoV29ya2VyLl91cGRh
dGVfdGVzdF9pbnB1dCk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC9jaHJvbWl1bV9hbmRyb2lkLnB5OgorICAgICAgICAoQ2hyb21pdW1BbmRyb2lkUG9ydC5f
X2luaXRfXyk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dl
YmtpdF90ZXN0cy5weToKKyAgICAgICAgKHBhcnNlX2FyZ3MpOgorCisyMDEyLTA3LTE3ICBYaWFu
emh1IFdhbmcgIDx3YW5neGlhbnpodUBjaHJvbWl1bS5vcmc+CisKICAgICAgICAgW2Nocm9taXVt
XSByZW1vdmUgLS10ZXN0LXNoZWxsIHN1cHBvcnQgZnJvbSBEUlQKICAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg2OTI3CiAKZGlmZiAtLWdpdCBhL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21hbmFnZXIucHkgYi9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9tYW5hZ2VyLnB5
CmluZGV4IGEzMmUxYTMwNWExNmU0MDk0ZjBhNjM3NTRmYzk1M2UzNDBhZGIwYjAuLmM4MTRhNzUz
M2QwYzc3YzI0NDBjMDVmZWI3Nzc5MjRhNWRkOWY2MDggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21hbmFnZXIucHkKKysrIGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWFuYWdlci5weQpA
QCAtNTY3LDcgKzU2Nyw3IEBAIGNsYXNzIE1hbmFnZXIob2JqZWN0KToKICAgICBkZWYgX3Rlc3Rf
aXNfc2xvdyhzZWxmLCB0ZXN0X2ZpbGUpOgogICAgICAgICByZXR1cm4gc2VsZi5fZXhwZWN0YXRp
b25zLmhhc19tb2RpZmllcih0ZXN0X2ZpbGUsIHRlc3RfZXhwZWN0YXRpb25zLlNMT1cpCiAKLSAg
ICBkZWYgX3NoYXJkX3Rlc3RzKHNlbGYsIHRlc3RfZmlsZXMsIG51bV93b3JrZXJzLCBmdWxseV9w
YXJhbGxlbCk6CisgICAgZGVmIF9zaGFyZF90ZXN0cyhzZWxmLCB0ZXN0X2ZpbGVzLCBudW1fd29y
a2VycywgZnVsbHlfcGFyYWxsZWwsIHNoYXJkX3JlZl90ZXN0cyk6CiAgICAgICAgICIiIkdyb3Vw
cyB0ZXN0cyBpbnRvIGJhdGNoZXMuCiAgICAgICAgIFRoaXMgaGVscHMgZW5zdXJlIHRoYXQgdGVz
dHMgdGhhdCBkZXBlbmQgb24gZWFjaCBvdGhlciAoYWthIGJhZCB0ZXN0cyEpCiAgICAgICAgIGNv
bnRpbnVlIHRvIHJ1biB0b2dldGhlciBhcyBtb3N0IGNyb3NzLXRlc3RzIGRlcGVuZGVuY2llcyB0
ZW5kIHRvCkBAIC01ODEsMzAgKzU4MSw0NSBAQCBjbGFzcyBNYW5hZ2VyKG9iamVjdCk6CiAgICAg
ICAgICMgb3duIGNsYXNzIG9yIG1vZHVsZS4gQ29uc2lkZXIgZ3JvdXBpbmcgaXQgd2l0aCB0aGUg
Y2h1bmtpbmcgbG9naWMKICAgICAgICAgIyBpbiBwcmVwYXJlX2xpc3RzIGFzIHdlbGwuCiAgICAg
ICAgIGlmIG51bV93b3JrZXJzID09IDE6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5fc2hhcmRf
aW5fdHdvKHRlc3RfZmlsZXMpCisgICAgICAgICAgICByZXR1cm4gc2VsZi5fc2hhcmRfaW5fdHdv
KHRlc3RfZmlsZXMsIHNoYXJkX3JlZl90ZXN0cykKICAgICAgICAgZWxpZiBmdWxseV9wYXJhbGxl
bDoKICAgICAgICAgICAgIHJldHVybiBzZWxmLl9zaGFyZF9ldmVyeV9maWxlKHRlc3RfZmlsZXMp
Ci0gICAgICAgIHJldHVybiBzZWxmLl9zaGFyZF9ieV9kaXJlY3RvcnkodGVzdF9maWxlcywgbnVt
X3dvcmtlcnMpCisgICAgICAgIHJldHVybiBzZWxmLl9zaGFyZF9ieV9kaXJlY3RvcnkodGVzdF9m
aWxlcywgbnVtX3dvcmtlcnMsIHNoYXJkX3JlZl90ZXN0cykKIAotICAgIGRlZiBfc2hhcmRfaW5f
dHdvKHNlbGYsIHRlc3RfZmlsZXMpOgorICAgIGRlZiBfc2hhcmRfaW5fdHdvKHNlbGYsIHRlc3Rf
ZmlsZXMsIHNoYXJkX3JlZl90ZXN0cyk6CiAgICAgICAgICIiIlJldHVybnMgdHdvIGxpc3RzIG9m
IHNoYXJkcywgb25lIHdpdGggYWxsIHRoZSB0ZXN0cyByZXF1aXJpbmcgYSBsb2NrIGFuZCBvbmUg
d2l0aCB0aGUgcmVzdC4KIAogICAgICAgICBUaGlzIGlzIHVzZWQgd2hlbiB0aGVyZSdzIG9ubHkg
b25lIHdvcmtlciwgdG8gbWluaW1pemUgdGhlIHBlci1zaGFyZCBvdmVyaGVhZC4iIiIKICAgICAg
ICAgbG9ja2VkX2lucHV0cyA9IFtdCisgICAgICAgIGxvY2tlZF9yZWZfdGVzdF9pbnB1dHMgPSBb
XQogICAgICAgICB1bmxvY2tlZF9pbnB1dHMgPSBbXQorICAgICAgICB1bmxvY2tlZF9yZWZfdGVz
dF9pbnB1dHMgPSBbXQogICAgICAgICBmb3IgdGVzdF9maWxlIGluIHRlc3RfZmlsZXM6CiAgICAg
ICAgICAgICB0ZXN0X2lucHV0ID0gc2VsZi5fZ2V0X3Rlc3RfaW5wdXRfZm9yX2ZpbGUodGVzdF9m
aWxlKQorICAgICAgICAgICAgaWYgc2hhcmRfcmVmX3Rlc3RzOgorICAgICAgICAgICAgICAgICMg
TGF6eSBpbml0aWFsaXphdGlvbi4KKyAgICAgICAgICAgICAgICB0ZXN0X2lucHV0LnJlZmVyZW5j
ZV9maWxlcyA9IHNlbGYuX3BvcnQucmVmZXJlbmNlX2ZpbGVzKHRlc3RfaW5wdXQudGVzdF9uYW1l
KQogICAgICAgICAgICAgaWYgc2VsZi5fdGVzdF9yZXF1aXJlc19sb2NrKHRlc3RfZmlsZSk6Ci0g
ICAgICAgICAgICAgICAgbG9ja2VkX2lucHV0cy5hcHBlbmQodGVzdF9pbnB1dCkKKyAgICAgICAg
ICAgICAgICBpZiBzaGFyZF9yZWZfdGVzdHMgYW5kIHRlc3RfaW5wdXQucmVmZXJlbmNlX2ZpbGVz
OgorICAgICAgICAgICAgICAgICAgICBsb2NrZWRfcmVmX3Rlc3RfaW5wdXRzLmFwcGVuZCh0ZXN0
X2lucHV0KQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGxvY2tl
ZF9pbnB1dHMuYXBwZW5kKHRlc3RfaW5wdXQpCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAg
ICAgICAgIHVubG9ja2VkX2lucHV0cy5hcHBlbmQodGVzdF9pbnB1dCkKKyAgICAgICAgICAgICAg
ICBpZiBzaGFyZF9yZWZfdGVzdHMgYW5kIHRlc3RfaW5wdXQucmVmZXJlbmNlX2ZpbGVzOgorICAg
ICAgICAgICAgICAgICAgICB1bmxvY2tlZF9yZWZfdGVzdF9pbnB1dHMuYXBwZW5kKHRlc3RfaW5w
dXQpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgdW5sb2NrZWRf
aW5wdXRzLmFwcGVuZCh0ZXN0X2lucHV0KQogCiAgICAgICAgIGxvY2tlZF9zaGFyZHMgPSBbXQog
ICAgICAgICB1bmxvY2tlZF9zaGFyZHMgPSBbXQogICAgICAgICBpZiBsb2NrZWRfaW5wdXRzOgog
ICAgICAgICAgICAgbG9ja2VkX3NoYXJkcyA9IFtUZXN0U2hhcmQoJ2xvY2tlZF90ZXN0cycsIGxv
Y2tlZF9pbnB1dHMpXQorICAgICAgICBpZiBsb2NrZWRfcmVmX3Rlc3RfaW5wdXRzOgorICAgICAg
ICAgICAgbG9ja2VkX3NoYXJkcy5hcHBlbmQoVGVzdFNoYXJkKCdsb2NrZWRfcmVmX3Rlc3RzJywg
bG9ja2VkX3JlZl90ZXN0X2lucHV0cykpCiAgICAgICAgIGlmIHVubG9ja2VkX2lucHV0czoKICAg
ICAgICAgICAgIHVubG9ja2VkX3NoYXJkcyA9IFtUZXN0U2hhcmQoJ3VubG9ja2VkX3Rlc3RzJywg
dW5sb2NrZWRfaW5wdXRzKV0KKyAgICAgICAgaWYgdW5sb2NrZWRfcmVmX3Rlc3RfaW5wdXRzOgor
ICAgICAgICAgICAgdW5sb2NrZWRfc2hhcmRzLmFwcGVuZChUZXN0U2hhcmQoJ3VubG9ja2VkX3Jl
Zl90ZXN0cycsIHVubG9ja2VkX3JlZl90ZXN0X2lucHV0cykpCiAKICAgICAgICAgcmV0dXJuIGxv
Y2tlZF9zaGFyZHMsIHVubG9ja2VkX3NoYXJkcwogCkBAIC02MjcsNyArNjQyLDcgQEAgY2xhc3Mg
TWFuYWdlcihvYmplY3QpOgogCiAgICAgICAgIHJldHVybiBsb2NrZWRfc2hhcmRzLCB1bmxvY2tl
ZF9zaGFyZHMKIAotICAgIGRlZiBfc2hhcmRfYnlfZGlyZWN0b3J5KHNlbGYsIHRlc3RfZmlsZXMs
IG51bV93b3JrZXJzKToKKyAgICBkZWYgX3NoYXJkX2J5X2RpcmVjdG9yeShzZWxmLCB0ZXN0X2Zp
bGVzLCBudW1fd29ya2Vycywgc2hhcmRfcmVmX3Rlc3RzKToKICAgICAgICAgIiIiUmV0dXJucyB0
d28gbGlzdHMgb2Ygc2hhcmRzLCBlYWNoIHNoYXJkIGNvbnRhaW5pbmcgYWxsIHRoZSBmaWxlcyBp
biBhIGRpcmVjdG9yeS4KIAogICAgICAgICBUaGlzIGlzIHRoZSBkZWZhdWx0IG1vZGUsIGFuZCBn
ZXRzIGFzIG11Y2ggcGFyYWxsZWxpc20gYXMgd2UgY2FuIHdoaWxlCkBAIC02MzUsMTMgKzY1MCwy
MSBAQCBjbGFzcyBNYW5hZ2VyKG9iamVjdCk6CiAgICAgICAgIGxvY2tlZF9zaGFyZHMgPSBbXQog
ICAgICAgICB1bmxvY2tlZF9zaGFyZHMgPSBbXQogICAgICAgICB0ZXN0c19ieV9kaXIgPSB7fQor
ICAgICAgICByZWZfdGVzdHNfYnlfZGlyID0ge30KICAgICAgICAgIyBGSVhNRTogR2l2ZW4gdGhh
dCB0aGUgdGVzdHMgYXJlIGFscmVhZHkgc29ydGVkIGJ5IGRpcmVjdG9yeSwKICAgICAgICAgIyB3
ZSBjYW4gcHJvYmFibHkgcmV3cml0ZSB0aGlzIHRvIGJlIGNsZWFyZXIgYW5kIGZhc3Rlci4KICAg
ICAgICAgZm9yIHRlc3RfZmlsZSBpbiB0ZXN0X2ZpbGVzOgogICAgICAgICAgICAgZGlyZWN0b3J5
ID0gc2VsZi5fZ2V0X2Rpcl9mb3JfdGVzdF9maWxlKHRlc3RfZmlsZSkKICAgICAgICAgICAgIHRl
c3RfaW5wdXQgPSBzZWxmLl9nZXRfdGVzdF9pbnB1dF9mb3JfZmlsZSh0ZXN0X2ZpbGUpCi0gICAg
ICAgICAgICB0ZXN0c19ieV9kaXIuc2V0ZGVmYXVsdChkaXJlY3RvcnksIFtdKQotICAgICAgICAg
ICAgdGVzdHNfYnlfZGlyW2RpcmVjdG9yeV0uYXBwZW5kKHRlc3RfaW5wdXQpCisgICAgICAgICAg
ICBpZiBzaGFyZF9yZWZfdGVzdHM6CisgICAgICAgICAgICAgICAgIyBMYXp5IGluaXRpYWxpemF0
aW9uLgorICAgICAgICAgICAgICAgIHRlc3RfaW5wdXQucmVmZXJlbmNlX2ZpbGVzID0gc2VsZi5f
cG9ydC5yZWZlcmVuY2VfZmlsZXModGVzdF9pbnB1dC50ZXN0X25hbWUpCisgICAgICAgICAgICBp
ZiBzaGFyZF9yZWZfdGVzdHMgYW5kIHRlc3RfaW5wdXQucmVmZXJlbmNlX2ZpbGVzOgorICAgICAg
ICAgICAgICAgIHJlZl90ZXN0c19ieV9kaXIuc2V0ZGVmYXVsdChkaXJlY3RvcnksIFtdKQorICAg
ICAgICAgICAgICAgIHJlZl90ZXN0c19ieV9kaXJbZGlyZWN0b3J5XS5hcHBlbmQodGVzdF9pbnB1
dCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgdGVzdHNfYnlfZGlyLnNldGRl
ZmF1bHQoZGlyZWN0b3J5LCBbXSkKKyAgICAgICAgICAgICAgICB0ZXN0c19ieV9kaXJbZGlyZWN0
b3J5XS5hcHBlbmQodGVzdF9pbnB1dCkKIAogICAgICAgICBmb3IgZGlyZWN0b3J5LCB0ZXN0X2lu
cHV0cyBpbiB0ZXN0c19ieV9kaXIuaXRlcml0ZW1zKCk6CiAgICAgICAgICAgICBzaGFyZCA9IFRl
c3RTaGFyZChkaXJlY3RvcnksIHRlc3RfaW5wdXRzKQpAQCAtNjUwLDYgKzY3MywxMyBAQCBjbGFz
cyBNYW5hZ2VyKG9iamVjdCk6CiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHVu
bG9ja2VkX3NoYXJkcy5hcHBlbmQoc2hhcmQpCiAKKyAgICAgICAgZm9yIGRpcmVjdG9yeSwgdGVz
dF9pbnB1dHMgaW4gcmVmX3Rlc3RzX2J5X2Rpci5pdGVyaXRlbXMoKToKKyAgICAgICAgICAgIHNo
YXJkID0gVGVzdFNoYXJkKCdyZWZfdGVzdHM6JyArIGRpcmVjdG9yeSwgdGVzdF9pbnB1dHMpCisg
ICAgICAgICAgICBpZiBzZWxmLl90ZXN0X3JlcXVpcmVzX2xvY2soZGlyZWN0b3J5KToKKyAgICAg
ICAgICAgICAgICBsb2NrZWRfc2hhcmRzLmFwcGVuZChzaGFyZCkKKyAgICAgICAgICAgIGVsc2U6
CisgICAgICAgICAgICAgICAgdW5sb2NrZWRfc2hhcmRzLmFwcGVuZChzaGFyZCkKKwogICAgICAg
ICAjIFNvcnQgdGhlIHNoYXJkcyBieSBkaXJlY3RvcnkgbmFtZS4KICAgICAgICAgbG9ja2VkX3No
YXJkcy5zb3J0KGtleT1sYW1iZGEgc2hhcmQ6IHNoYXJkLm5hbWUpCiAgICAgICAgIHVubG9ja2Vk
X3NoYXJkcy5zb3J0KGtleT1sYW1iZGEgc2hhcmQ6IHNoYXJkLm5hbWUpCkBAIC03NDEsNyArNzcx
LDcgQEAgY2xhc3MgTWFuYWdlcihvYmplY3QpOgogICAgICAgICBpbnRlcnJ1cHRlZCA9IEZhbHNl
CiAKICAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF91cGRhdGUoJ1NoYXJkaW5nIHRlc3RzIC4u
LicpCi0gICAgICAgIGxvY2tlZF9zaGFyZHMsIHVubG9ja2VkX3NoYXJkcyA9IHNlbGYuX3NoYXJk
X3Rlc3RzKGZpbGVfbGlzdCwgaW50KHNlbGYuX29wdGlvbnMuY2hpbGRfcHJvY2Vzc2VzKSwgc2Vs
Zi5fb3B0aW9ucy5mdWxseV9wYXJhbGxlbCkKKyAgICAgICAgbG9ja2VkX3NoYXJkcywgdW5sb2Nr
ZWRfc2hhcmRzID0gc2VsZi5fc2hhcmRfdGVzdHMoZmlsZV9saXN0LCBpbnQoc2VsZi5fb3B0aW9u
cy5jaGlsZF9wcm9jZXNzZXMpLCBzZWxmLl9vcHRpb25zLmZ1bGx5X3BhcmFsbGVsLCBzZWxmLl9v
cHRpb25zLnNoYXJkX3JlZl90ZXN0cykKIAogICAgICAgICAjIEZJWE1FOiBXZSBkb24ndCBoYXZl
IGEgZ29vZCB3YXkgdG8gY29vcmRpbmF0ZSB0aGUgd29ya2VycyBzbyB0aGF0CiAgICAgICAgICMg
dGhleSBkb24ndCB0cnkgdG8gcnVuIHRoZSBzaGFyZHMgdGhhdCBuZWVkIGEgbG9jayBpZiB3ZSBk
b24ndCBhY3R1YWxseQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvY29udHJvbGxlcnMvd29ya2VyLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvY29udHJvbGxlcnMvd29ya2VyLnB5CmluZGV4IDgzN2FlYTg2YmM2ZmIyM2JjMjhm
NGYyNjg3NjI3OTZkMGY0YTdlNDEuLjQxOWIyNzk4YmE3MmU1NmYyNzM5MmY3YWUzZDU4Zjk0MGI1
OWM5YmUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2Nv
bnRyb2xsZXJzL3dvcmtlci5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9jb250cm9sbGVycy93b3JrZXIucHkKQEAgLTgzLDcgKzgzLDkgQEAgY2xhc3MgV29ya2Vy
KG9iamVjdCk6CiAgICAgICAgIHNlbGYuX2NhbGxlci5wb3N0KCdmaW5pc2hlZF90ZXN0X2xpc3Qn
LCB0ZXN0X2xpc3RfbmFtZSwgbGVuKHRlc3RfaW5wdXRzKSwgZWxhcHNlZF90aW1lKQogCiAgICAg
ZGVmIF91cGRhdGVfdGVzdF9pbnB1dChzZWxmLCB0ZXN0X2lucHV0KToKLSAgICAgICAgdGVzdF9p
bnB1dC5yZWZlcmVuY2VfZmlsZXMgPSBzZWxmLl9wb3J0LnJlZmVyZW5jZV9maWxlcyh0ZXN0X2lu
cHV0LnRlc3RfbmFtZSkKKyAgICAgICAgaWYgbm90IHRlc3RfaW5wdXQucmVmZXJlbmNlX2ZpbGVz
OgorICAgICAgICAgICAgIyBMYXp5IGluaXRpYWxpemF0aW9uLgorICAgICAgICAgICAgdGVzdF9p
bnB1dC5yZWZlcmVuY2VfZmlsZXMgPSBzZWxmLl9wb3J0LnJlZmVyZW5jZV9maWxlcyh0ZXN0X2lu
cHV0LnRlc3RfbmFtZSkKICAgICAgICAgaWYgdGVzdF9pbnB1dC5yZWZlcmVuY2VfZmlsZXM6CiAg
ICAgICAgICAgICB0ZXN0X2lucHV0LnNob3VsZF9ydW5fcGl4ZWxfdGVzdCA9IFRydWUKICAgICAg
ICAgZWxpZiBzZWxmLl9vcHRpb25zLnBpeGVsX3Rlc3RzOgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9hbmRyb2lkLnB5IGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9hbmRyb2lkLnB5
CmluZGV4IDU2N2YzYWVhOGJmMzAyZmVjZTA2MGE2MDY0ZjlmYWFkNjBjZTZlNTIuLjQzNWQzNjRi
YmUzMjJmMDBlZGI2MTcxZDk2YjM4NTIwZTQzZTQyZWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fYW5kcm9pZC5weQorKysgYi9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX2FuZHJvaWQu
cHkKQEAgLTE1OCw2ICsxNTgsOSBAQCBjbGFzcyBDaHJvbWl1bUFuZHJvaWRQb3J0KGNocm9taXVt
LkNocm9taXVtUG9ydCk6CiAgICAgICAgICMgVGhlIENocm9taXVtIHBvcnQgZm9yIEFuZHJvaWQg
YWx3YXlzIHVzZXMgdGhlIGhhcmR3YXJlIEdQVSBwYXRoLgogICAgICAgICBzZWxmLl9vcHRpb25z
LmVuYWJsZV9oYXJkd2FyZV9ncHUgPSBUcnVlCiAKKyAgICAgICAgIyBTaGFyZCByZWYgdGVzdHMg
c28gdGhhdCB0aGV5IHJ1biB0b2dldGhlciB0byBhdm9pZCByZXBlYXRlZGx5IGRyaXZlciByZXN0
YXJ0cy4KKyAgICAgICAgc2VsZi5fb3B0aW9ucy5zaGFyZF9yZWZfdGVzdHMgPSBUcnVlCisKICAg
ICAgICAgc2VsZi5fb3BlcmF0aW5nX3N5c3RlbSA9ICdhbmRyb2lkJwogICAgICAgICBzZWxmLl92
ZXJzaW9uID0gJ2ljZWNyZWFtc2FuZHdpY2gnCiAgICAgICAgIHNlbGYuX29yaWdpbmFsX2dvdmVy
bm9yID0gTm9uZQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcnVuX3dlYmtpdF90ZXN0cy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3J1bl93ZWJraXRfdGVzdHMucHkKaW5kZXggOTYxY2JhODQ4MmI1NzFkZjZhYmFlNGE1MzVk
OGJjNGU3YWYyMTI5ZS4uMjlkZDkwNDEyNjZhNjRmZmZhYWQyODQwMmM2NTQ1MjdjMDAyMWQ5ZSAx
MDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtp
dF90ZXN0cy5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5f
d2Via2l0X3Rlc3RzLnB5CkBAIC00MjAsNiArNDIwLDggQEAgZGVmIHBhcnNlX2FyZ3MoYXJncz1O
b25lKToKICAgICAgICAgICAgIGhlbHA9IkRvbid0IHJlLXRyeSBhbnkgdGVzdHMgdGhhdCBwcm9k
dWNlIHVuZXhwZWN0ZWQgcmVzdWx0cy4iKSwKICAgICAgICAgb3B0cGFyc2UubWFrZV9vcHRpb24o
Ii0tbWF4LWxvY2tlZC1zaGFyZHMiLCB0eXBlPSJpbnQiLAogICAgICAgICAgICAgaGVscD0iU2V0
IHRoZSBtYXhpbXVtIG51bWJlciBvZiBsb2NrZWQgc2hhcmRzIiksCisgICAgICAgIG9wdHBhcnNl
Lm1ha2Vfb3B0aW9uKCItLXNoYXJkLXJlZi10ZXN0cyIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsCisg
ICAgICAgICAgICBoZWxwPSJSdW4gcmVmIHRlc3RzIGluIGRlZGljYXRlZCBzaGFyZChzKS4gRW5h
YmxlZCBvbiBBbmRyb2lkIGJ5IGRlZmF1bHQuIiksCiAgICAgXSkpCiAKICAgICBvcHRpb25fZ3Jv
dXBfZGVmaW5pdGlvbnMuYXBwZW5kKCgiTWlzY2VsbGFuZW91cyBPcHRpb25zIiwgWwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>152823</attachid>
            <date>2012-07-17 13:59:37 -0700</date>
            <delta_ts>2012-07-17 14:05:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91533-20120717135936.patch</filename>
            <type>text/plain</type>
            <size>10565</size>
            <attacher name="Xianzhu Wang">wangxianzhu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIyODcyCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMzAwOWExNjUzOTg1NDJhZGJmYzE2MzM5NzNlZDU3ZmQx
Nzc1NjY5OC4uYWYzMzc4ZjZiNmNjOThkY2E1ZWI2ZjQxOTA2MmRiZGM0ZTkzYzI4NCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMz
IEBACisyMDEyLTA3LTE3ICBYaWFuemh1IFdhbmcgIDx3YW5neGlhbnpodUBjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgW0Nocm9taXVtLUFuZHJvaWRdIFJ1biByZWYgdGVzdHMgdG9nZXRoZXIgdG8g
YXZvaWQgZXhwZW5zaXZlIGRyaXZlciByZXN0YXJ0cworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTE1MzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUaG91Z2ggRHJpdmVyUHJveHkgbWFpbnRhaW5zIHR3byBk
cml2ZXJzIHRvIHN1cHBvcnQgcGl4ZWwgdGVzdHMgYW5kIG5vbi1waXhlbCB0ZXN0cywKKyAgICAg
ICAgY2hyb21pdW0tYW5kcm9pZCB1c2VzIGFub3RoZXIgd2F5IGJlY2F1c2UgaXQgY2FuJ3Qgc3Vw
cG9ydCBtdWx0aXBsZSBkcml2ZXJzLgorICAgICAgICBJdCByZXN0YXJ0cyB0aGUgZHJpdmVyIHdo
ZW4gcGl4ZWwtdGVzdCBtb2RlIGNoYW5nZXMgKGUuZy4gd2hlbiBydW5uaW5nIGEgcmVmIHRlc3Qg
YWZ0ZXIKKyAgICAgICAgYSBub3JtYWwgdGVzdCBpbiAtLW5vLXBpeGVsLXRlc3RzIG1vZGUpLiBI
b3dldmVyIHJlc3RhcnRpbmcgZHJpdmVyIGlzIGV4cGVuc2l2ZSBvbgorICAgICAgICBBbmRyb2lk
IChzZXZlcmFsIHNlY29uZHMgZWFjaCB0aW1lKS4gVG8gcmVkdWNlIHRoZSBjb3N0LCBhIGNvbW1h
bmQgbGluZSBvcHRpb24KKyAgICAgICAgJy0tc2hhcmQtcmVmLXRlc3RzJyBpcyBhZGRlZCB0byBn
cm91cCByZWYgdGVzdHMgaW4gZGVkaWNhdGVkIHNoYXJkcy4KKyAgICAgICAgVGhlIG9wdGlvbiBp
cyBieSBkZWZhdWx0IGVuYWJsZWQgb24gQW5kcm9pZC4KKworICAgICAgICBXaWxsIHJlbW92ZSB0
aGUgb3B0aW9uIG9uY2UgRFJUIHN1cHBvcnRzIHN3aXRjaGluZyBwaXhlbCB0ZXN0IG1vZGUgZHVy
aW5nIG9uZSBydW4uCisgICAgICAgIChodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9OTE1MzgsIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTUz
OSkKKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJz
L21hbmFnZXIucHk6CisgICAgICAgIChNYW5hZ2VyLl9zaGFyZF90ZXN0cyk6CisgICAgICAgIChN
YW5hZ2VyLl9zaGFyZF9pbl90d28pOgorICAgICAgICAoTWFuYWdlci5fc2hhcmRfYnlfZGlyZWN0
b3J5KToKKyAgICAgICAgKE1hbmFnZXIuX3J1bl90ZXN0cyk6CisgICAgICAgICogU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvd29ya2VyLnB5OgorICAgICAgICAoV29y
a2VyLl91cGRhdGVfdGVzdF9pbnB1dCk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9hbmRyb2lkLnB5OgorICAgICAgICAoQ2hyb21pdW1BbmRy
b2lkUG9ydC5fX2luaXRfXyk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcnVuX3dlYmtpdF90ZXN0cy5weToKKyAgICAgICAgKHBhcnNlX2FyZ3MpOgorCiAyMDEyLTA3
LTE3ICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0b3BoZS5kdW1lekBpbnRlbC5jb20+CiAKICAg
ICAgICAgW0VGTF0gUmVwbGFjZSAwIGJ5IE5VTEwgaW4gcHVibGljIGhlYWRlcnMgZG9jdW1lbnRh
dGlvbgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29u
dHJvbGxlcnMvbWFuYWdlci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L2NvbnRyb2xsZXJzL21hbmFnZXIucHkKaW5kZXggYTMyZTFhMzA1YTE2ZTQwOTRmMGE2Mzc1NGZj
OTUzZTM0MGFkYjBiMC4uYzgxNGE3NTMzZDBjNzdjMjQ0MGMwNWZlYjc3NzkyNGE1ZGQ5ZjYwOCAx
MDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxl
cnMvbWFuYWdlci5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9j
b250cm9sbGVycy9tYW5hZ2VyLnB5CkBAIC01NjcsNyArNTY3LDcgQEAgY2xhc3MgTWFuYWdlcihv
YmplY3QpOgogICAgIGRlZiBfdGVzdF9pc19zbG93KHNlbGYsIHRlc3RfZmlsZSk6CiAgICAgICAg
IHJldHVybiBzZWxmLl9leHBlY3RhdGlvbnMuaGFzX21vZGlmaWVyKHRlc3RfZmlsZSwgdGVzdF9l
eHBlY3RhdGlvbnMuU0xPVykKIAotICAgIGRlZiBfc2hhcmRfdGVzdHMoc2VsZiwgdGVzdF9maWxl
cywgbnVtX3dvcmtlcnMsIGZ1bGx5X3BhcmFsbGVsKToKKyAgICBkZWYgX3NoYXJkX3Rlc3RzKHNl
bGYsIHRlc3RfZmlsZXMsIG51bV93b3JrZXJzLCBmdWxseV9wYXJhbGxlbCwgc2hhcmRfcmVmX3Rl
c3RzKToKICAgICAgICAgIiIiR3JvdXBzIHRlc3RzIGludG8gYmF0Y2hlcy4KICAgICAgICAgVGhp
cyBoZWxwcyBlbnN1cmUgdGhhdCB0ZXN0cyB0aGF0IGRlcGVuZCBvbiBlYWNoIG90aGVyIChha2Eg
YmFkIHRlc3RzISkKICAgICAgICAgY29udGludWUgdG8gcnVuIHRvZ2V0aGVyIGFzIG1vc3QgY3Jv
c3MtdGVzdHMgZGVwZW5kZW5jaWVzIHRlbmQgdG8KQEAgLTU4MSwzMCArNTgxLDQ1IEBAIGNsYXNz
IE1hbmFnZXIob2JqZWN0KToKICAgICAgICAgIyBvd24gY2xhc3Mgb3IgbW9kdWxlLiBDb25zaWRl
ciBncm91cGluZyBpdCB3aXRoIHRoZSBjaHVua2luZyBsb2dpYwogICAgICAgICAjIGluIHByZXBh
cmVfbGlzdHMgYXMgd2VsbC4KICAgICAgICAgaWYgbnVtX3dvcmtlcnMgPT0gMToKLSAgICAgICAg
ICAgIHJldHVybiBzZWxmLl9zaGFyZF9pbl90d28odGVzdF9maWxlcykKKyAgICAgICAgICAgIHJl
dHVybiBzZWxmLl9zaGFyZF9pbl90d28odGVzdF9maWxlcywgc2hhcmRfcmVmX3Rlc3RzKQogICAg
ICAgICBlbGlmIGZ1bGx5X3BhcmFsbGVsOgogICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3NoYXJk
X2V2ZXJ5X2ZpbGUodGVzdF9maWxlcykKLSAgICAgICAgcmV0dXJuIHNlbGYuX3NoYXJkX2J5X2Rp
cmVjdG9yeSh0ZXN0X2ZpbGVzLCBudW1fd29ya2VycykKKyAgICAgICAgcmV0dXJuIHNlbGYuX3No
YXJkX2J5X2RpcmVjdG9yeSh0ZXN0X2ZpbGVzLCBudW1fd29ya2Vycywgc2hhcmRfcmVmX3Rlc3Rz
KQogCi0gICAgZGVmIF9zaGFyZF9pbl90d28oc2VsZiwgdGVzdF9maWxlcyk6CisgICAgZGVmIF9z
aGFyZF9pbl90d28oc2VsZiwgdGVzdF9maWxlcywgc2hhcmRfcmVmX3Rlc3RzKToKICAgICAgICAg
IiIiUmV0dXJucyB0d28gbGlzdHMgb2Ygc2hhcmRzLCBvbmUgd2l0aCBhbGwgdGhlIHRlc3RzIHJl
cXVpcmluZyBhIGxvY2sgYW5kIG9uZSB3aXRoIHRoZSByZXN0LgogCiAgICAgICAgIFRoaXMgaXMg
dXNlZCB3aGVuIHRoZXJlJ3Mgb25seSBvbmUgd29ya2VyLCB0byBtaW5pbWl6ZSB0aGUgcGVyLXNo
YXJkIG92ZXJoZWFkLiIiIgogICAgICAgICBsb2NrZWRfaW5wdXRzID0gW10KKyAgICAgICAgbG9j
a2VkX3JlZl90ZXN0X2lucHV0cyA9IFtdCiAgICAgICAgIHVubG9ja2VkX2lucHV0cyA9IFtdCisg
ICAgICAgIHVubG9ja2VkX3JlZl90ZXN0X2lucHV0cyA9IFtdCiAgICAgICAgIGZvciB0ZXN0X2Zp
bGUgaW4gdGVzdF9maWxlczoKICAgICAgICAgICAgIHRlc3RfaW5wdXQgPSBzZWxmLl9nZXRfdGVz
dF9pbnB1dF9mb3JfZmlsZSh0ZXN0X2ZpbGUpCisgICAgICAgICAgICBpZiBzaGFyZF9yZWZfdGVz
dHM6CisgICAgICAgICAgICAgICAgIyBMYXp5IGluaXRpYWxpemF0aW9uLgorICAgICAgICAgICAg
ICAgIHRlc3RfaW5wdXQucmVmZXJlbmNlX2ZpbGVzID0gc2VsZi5fcG9ydC5yZWZlcmVuY2VfZmls
ZXModGVzdF9pbnB1dC50ZXN0X25hbWUpCiAgICAgICAgICAgICBpZiBzZWxmLl90ZXN0X3JlcXVp
cmVzX2xvY2sodGVzdF9maWxlKToKLSAgICAgICAgICAgICAgICBsb2NrZWRfaW5wdXRzLmFwcGVu
ZCh0ZXN0X2lucHV0KQorICAgICAgICAgICAgICAgIGlmIHNoYXJkX3JlZl90ZXN0cyBhbmQgdGVz
dF9pbnB1dC5yZWZlcmVuY2VfZmlsZXM6CisgICAgICAgICAgICAgICAgICAgIGxvY2tlZF9yZWZf
dGVzdF9pbnB1dHMuYXBwZW5kKHRlc3RfaW5wdXQpCisgICAgICAgICAgICAgICAgZWxzZToKKyAg
ICAgICAgICAgICAgICAgICAgbG9ja2VkX2lucHV0cy5hcHBlbmQodGVzdF9pbnB1dCkKICAgICAg
ICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgdW5sb2NrZWRfaW5wdXRzLmFwcGVuZCh0ZXN0
X2lucHV0KQorICAgICAgICAgICAgICAgIGlmIHNoYXJkX3JlZl90ZXN0cyBhbmQgdGVzdF9pbnB1
dC5yZWZlcmVuY2VfZmlsZXM6CisgICAgICAgICAgICAgICAgICAgIHVubG9ja2VkX3JlZl90ZXN0
X2lucHV0cy5hcHBlbmQodGVzdF9pbnB1dCkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAg
ICAgICAgICAgICAgICB1bmxvY2tlZF9pbnB1dHMuYXBwZW5kKHRlc3RfaW5wdXQpCiAKICAgICAg
ICAgbG9ja2VkX3NoYXJkcyA9IFtdCiAgICAgICAgIHVubG9ja2VkX3NoYXJkcyA9IFtdCiAgICAg
ICAgIGlmIGxvY2tlZF9pbnB1dHM6CiAgICAgICAgICAgICBsb2NrZWRfc2hhcmRzID0gW1Rlc3RT
aGFyZCgnbG9ja2VkX3Rlc3RzJywgbG9ja2VkX2lucHV0cyldCisgICAgICAgIGlmIGxvY2tlZF9y
ZWZfdGVzdF9pbnB1dHM6CisgICAgICAgICAgICBsb2NrZWRfc2hhcmRzLmFwcGVuZChUZXN0U2hh
cmQoJ2xvY2tlZF9yZWZfdGVzdHMnLCBsb2NrZWRfcmVmX3Rlc3RfaW5wdXRzKSkKICAgICAgICAg
aWYgdW5sb2NrZWRfaW5wdXRzOgogICAgICAgICAgICAgdW5sb2NrZWRfc2hhcmRzID0gW1Rlc3RT
aGFyZCgndW5sb2NrZWRfdGVzdHMnLCB1bmxvY2tlZF9pbnB1dHMpXQorICAgICAgICBpZiB1bmxv
Y2tlZF9yZWZfdGVzdF9pbnB1dHM6CisgICAgICAgICAgICB1bmxvY2tlZF9zaGFyZHMuYXBwZW5k
KFRlc3RTaGFyZCgndW5sb2NrZWRfcmVmX3Rlc3RzJywgdW5sb2NrZWRfcmVmX3Rlc3RfaW5wdXRz
KSkKIAogICAgICAgICByZXR1cm4gbG9ja2VkX3NoYXJkcywgdW5sb2NrZWRfc2hhcmRzCiAKQEAg
LTYyNyw3ICs2NDIsNyBAQCBjbGFzcyBNYW5hZ2VyKG9iamVjdCk6CiAKICAgICAgICAgcmV0dXJu
IGxvY2tlZF9zaGFyZHMsIHVubG9ja2VkX3NoYXJkcwogCi0gICAgZGVmIF9zaGFyZF9ieV9kaXJl
Y3Rvcnkoc2VsZiwgdGVzdF9maWxlcywgbnVtX3dvcmtlcnMpOgorICAgIGRlZiBfc2hhcmRfYnlf
ZGlyZWN0b3J5KHNlbGYsIHRlc3RfZmlsZXMsIG51bV93b3JrZXJzLCBzaGFyZF9yZWZfdGVzdHMp
OgogICAgICAgICAiIiJSZXR1cm5zIHR3byBsaXN0cyBvZiBzaGFyZHMsIGVhY2ggc2hhcmQgY29u
dGFpbmluZyBhbGwgdGhlIGZpbGVzIGluIGEgZGlyZWN0b3J5LgogCiAgICAgICAgIFRoaXMgaXMg
dGhlIGRlZmF1bHQgbW9kZSwgYW5kIGdldHMgYXMgbXVjaCBwYXJhbGxlbGlzbSBhcyB3ZSBjYW4g
d2hpbGUKQEAgLTYzNSwxMyArNjUwLDIxIEBAIGNsYXNzIE1hbmFnZXIob2JqZWN0KToKICAgICAg
ICAgbG9ja2VkX3NoYXJkcyA9IFtdCiAgICAgICAgIHVubG9ja2VkX3NoYXJkcyA9IFtdCiAgICAg
ICAgIHRlc3RzX2J5X2RpciA9IHt9CisgICAgICAgIHJlZl90ZXN0c19ieV9kaXIgPSB7fQogICAg
ICAgICAjIEZJWE1FOiBHaXZlbiB0aGF0IHRoZSB0ZXN0cyBhcmUgYWxyZWFkeSBzb3J0ZWQgYnkg
ZGlyZWN0b3J5LAogICAgICAgICAjIHdlIGNhbiBwcm9iYWJseSByZXdyaXRlIHRoaXMgdG8gYmUg
Y2xlYXJlciBhbmQgZmFzdGVyLgogICAgICAgICBmb3IgdGVzdF9maWxlIGluIHRlc3RfZmlsZXM6
CiAgICAgICAgICAgICBkaXJlY3RvcnkgPSBzZWxmLl9nZXRfZGlyX2Zvcl90ZXN0X2ZpbGUodGVz
dF9maWxlKQogICAgICAgICAgICAgdGVzdF9pbnB1dCA9IHNlbGYuX2dldF90ZXN0X2lucHV0X2Zv
cl9maWxlKHRlc3RfZmlsZSkKLSAgICAgICAgICAgIHRlc3RzX2J5X2Rpci5zZXRkZWZhdWx0KGRp
cmVjdG9yeSwgW10pCi0gICAgICAgICAgICB0ZXN0c19ieV9kaXJbZGlyZWN0b3J5XS5hcHBlbmQo
dGVzdF9pbnB1dCkKKyAgICAgICAgICAgIGlmIHNoYXJkX3JlZl90ZXN0czoKKyAgICAgICAgICAg
ICAgICAjIExhenkgaW5pdGlhbGl6YXRpb24uCisgICAgICAgICAgICAgICAgdGVzdF9pbnB1dC5y
ZWZlcmVuY2VfZmlsZXMgPSBzZWxmLl9wb3J0LnJlZmVyZW5jZV9maWxlcyh0ZXN0X2lucHV0LnRl
c3RfbmFtZSkKKyAgICAgICAgICAgIGlmIHNoYXJkX3JlZl90ZXN0cyBhbmQgdGVzdF9pbnB1dC5y
ZWZlcmVuY2VfZmlsZXM6CisgICAgICAgICAgICAgICAgcmVmX3Rlc3RzX2J5X2Rpci5zZXRkZWZh
dWx0KGRpcmVjdG9yeSwgW10pCisgICAgICAgICAgICAgICAgcmVmX3Rlc3RzX2J5X2RpcltkaXJl
Y3RvcnldLmFwcGVuZCh0ZXN0X2lucHV0KQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAg
ICAgICB0ZXN0c19ieV9kaXIuc2V0ZGVmYXVsdChkaXJlY3RvcnksIFtdKQorICAgICAgICAgICAg
ICAgIHRlc3RzX2J5X2RpcltkaXJlY3RvcnldLmFwcGVuZCh0ZXN0X2lucHV0KQogCiAgICAgICAg
IGZvciBkaXJlY3RvcnksIHRlc3RfaW5wdXRzIGluIHRlc3RzX2J5X2Rpci5pdGVyaXRlbXMoKToK
ICAgICAgICAgICAgIHNoYXJkID0gVGVzdFNoYXJkKGRpcmVjdG9yeSwgdGVzdF9pbnB1dHMpCkBA
IC02NTAsNiArNjczLDEzIEBAIGNsYXNzIE1hbmFnZXIob2JqZWN0KToKICAgICAgICAgICAgIGVs
c2U6CiAgICAgICAgICAgICAgICAgdW5sb2NrZWRfc2hhcmRzLmFwcGVuZChzaGFyZCkKIAorICAg
ICAgICBmb3IgZGlyZWN0b3J5LCB0ZXN0X2lucHV0cyBpbiByZWZfdGVzdHNfYnlfZGlyLml0ZXJp
dGVtcygpOgorICAgICAgICAgICAgc2hhcmQgPSBUZXN0U2hhcmQoJ3JlZl90ZXN0czonICsgZGly
ZWN0b3J5LCB0ZXN0X2lucHV0cykKKyAgICAgICAgICAgIGlmIHNlbGYuX3Rlc3RfcmVxdWlyZXNf
bG9jayhkaXJlY3RvcnkpOgorICAgICAgICAgICAgICAgIGxvY2tlZF9zaGFyZHMuYXBwZW5kKHNo
YXJkKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICB1bmxvY2tlZF9zaGFyZHMu
YXBwZW5kKHNoYXJkKQorCiAgICAgICAgICMgU29ydCB0aGUgc2hhcmRzIGJ5IGRpcmVjdG9yeSBu
YW1lLgogICAgICAgICBsb2NrZWRfc2hhcmRzLnNvcnQoa2V5PWxhbWJkYSBzaGFyZDogc2hhcmQu
bmFtZSkKICAgICAgICAgdW5sb2NrZWRfc2hhcmRzLnNvcnQoa2V5PWxhbWJkYSBzaGFyZDogc2hh
cmQubmFtZSkKQEAgLTc0MSw3ICs3NzEsNyBAQCBjbGFzcyBNYW5hZ2VyKG9iamVjdCk6CiAgICAg
ICAgIGludGVycnVwdGVkID0gRmFsc2UKIAogICAgICAgICBzZWxmLl9wcmludGVyLnByaW50X3Vw
ZGF0ZSgnU2hhcmRpbmcgdGVzdHMgLi4uJykKLSAgICAgICAgbG9ja2VkX3NoYXJkcywgdW5sb2Nr
ZWRfc2hhcmRzID0gc2VsZi5fc2hhcmRfdGVzdHMoZmlsZV9saXN0LCBpbnQoc2VsZi5fb3B0aW9u
cy5jaGlsZF9wcm9jZXNzZXMpLCBzZWxmLl9vcHRpb25zLmZ1bGx5X3BhcmFsbGVsKQorICAgICAg
ICBsb2NrZWRfc2hhcmRzLCB1bmxvY2tlZF9zaGFyZHMgPSBzZWxmLl9zaGFyZF90ZXN0cyhmaWxl
X2xpc3QsIGludChzZWxmLl9vcHRpb25zLmNoaWxkX3Byb2Nlc3NlcyksIHNlbGYuX29wdGlvbnMu
ZnVsbHlfcGFyYWxsZWwsIHNlbGYuX29wdGlvbnMuc2hhcmRfcmVmX3Rlc3RzKQogCiAgICAgICAg
ICMgRklYTUU6IFdlIGRvbid0IGhhdmUgYSBnb29kIHdheSB0byBjb29yZGluYXRlIHRoZSB3b3Jr
ZXJzIHNvIHRoYXQKICAgICAgICAgIyB0aGV5IGRvbid0IHRyeSB0byBydW4gdGhlIHNoYXJkcyB0
aGF0IG5lZWQgYSBsb2NrIGlmIHdlIGRvbid0IGFjdHVhbGx5CmRpZmYgLS1naXQgYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy93b3JrZXIucHkgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy93b3JrZXIucHkKaW5k
ZXggODM3YWVhODZiYzZmYjIzYmMyOGY0ZjI2ODc2Mjc5NmQwZjRhN2U0MS4uMzc4ODI2YzUxZjhl
MDlkZjY1YTI4MDBkNzVmYzY1ZTJiYTFhZTU4YiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvd29ya2VyLnB5CisrKyBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL3dvcmtlci5weQpAQCAtODMs
NyArODMsOSBAQCBjbGFzcyBXb3JrZXIob2JqZWN0KToKICAgICAgICAgc2VsZi5fY2FsbGVyLnBv
c3QoJ2ZpbmlzaGVkX3Rlc3RfbGlzdCcsIHRlc3RfbGlzdF9uYW1lLCBsZW4odGVzdF9pbnB1dHMp
LCBlbGFwc2VkX3RpbWUpCiAKICAgICBkZWYgX3VwZGF0ZV90ZXN0X2lucHV0KHNlbGYsIHRlc3Rf
aW5wdXQpOgotICAgICAgICB0ZXN0X2lucHV0LnJlZmVyZW5jZV9maWxlcyA9IHNlbGYuX3BvcnQu
cmVmZXJlbmNlX2ZpbGVzKHRlc3RfaW5wdXQudGVzdF9uYW1lKQorICAgICAgICBpZiB0ZXN0X2lu
cHV0LnJlZmVyZW5jZV9maWxlcyBpcyBOb25lOgorICAgICAgICAgICAgIyBMYXp5IGluaXRpYWxp
emF0aW9uLgorICAgICAgICAgICAgdGVzdF9pbnB1dC5yZWZlcmVuY2VfZmlsZXMgPSBzZWxmLl9w
b3J0LnJlZmVyZW5jZV9maWxlcyh0ZXN0X2lucHV0LnRlc3RfbmFtZSkKICAgICAgICAgaWYgdGVz
dF9pbnB1dC5yZWZlcmVuY2VfZmlsZXM6CiAgICAgICAgICAgICB0ZXN0X2lucHV0LnNob3VsZF9y
dW5fcGl4ZWxfdGVzdCA9IFRydWUKICAgICAgICAgZWxpZiBzZWxmLl9vcHRpb25zLnBpeGVsX3Rl
c3RzOgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC9jaHJvbWl1bV9hbmRyb2lkLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcG9ydC9jaHJvbWl1bV9hbmRyb2lkLnB5CmluZGV4IDU2N2YzYWVhOGJmMzAyZmVjZTA2MGE2
MDY0ZjlmYWFkNjBjZTZlNTIuLjQzNWQzNjRiYmUzMjJmMDBlZGI2MTcxZDk2YjM4NTIwZTQzZTQy
ZWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQv
Y2hyb21pdW1fYW5kcm9pZC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9wb3J0L2Nocm9taXVtX2FuZHJvaWQucHkKQEAgLTE1OCw2ICsxNTgsOSBAQCBjbGFzcyBD
aHJvbWl1bUFuZHJvaWRQb3J0KGNocm9taXVtLkNocm9taXVtUG9ydCk6CiAgICAgICAgICMgVGhl
IENocm9taXVtIHBvcnQgZm9yIEFuZHJvaWQgYWx3YXlzIHVzZXMgdGhlIGhhcmR3YXJlIEdQVSBw
YXRoLgogICAgICAgICBzZWxmLl9vcHRpb25zLmVuYWJsZV9oYXJkd2FyZV9ncHUgPSBUcnVlCiAK
KyAgICAgICAgIyBTaGFyZCByZWYgdGVzdHMgc28gdGhhdCB0aGV5IHJ1biB0b2dldGhlciB0byBh
dm9pZCByZXBlYXRlZGx5IGRyaXZlciByZXN0YXJ0cy4KKyAgICAgICAgc2VsZi5fb3B0aW9ucy5z
aGFyZF9yZWZfdGVzdHMgPSBUcnVlCisKICAgICAgICAgc2VsZi5fb3BlcmF0aW5nX3N5c3RlbSA9
ICdhbmRyb2lkJwogICAgICAgICBzZWxmLl92ZXJzaW9uID0gJ2ljZWNyZWFtc2FuZHdpY2gnCiAg
ICAgICAgIHNlbGYuX29yaWdpbmFsX2dvdmVybm9yID0gTm9uZQpkaWZmIC0tZ2l0IGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weSBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMucHkKaW5kZXgg
OTYxY2JhODQ4MmI1NzFkZjZhYmFlNGE1MzVkOGJjNGU3YWYyMTI5ZS4uMjlkZDkwNDEyNjZhNjRm
ZmZhYWQyODQwMmM2NTQ1MjdjMDAyMWQ5ZSAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weQorKysgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5CkBAIC00MjAsNiArNDIw
LDggQEAgZGVmIHBhcnNlX2FyZ3MoYXJncz1Ob25lKToKICAgICAgICAgICAgIGhlbHA9IkRvbid0
IHJlLXRyeSBhbnkgdGVzdHMgdGhhdCBwcm9kdWNlIHVuZXhwZWN0ZWQgcmVzdWx0cy4iKSwKICAg
ICAgICAgb3B0cGFyc2UubWFrZV9vcHRpb24oIi0tbWF4LWxvY2tlZC1zaGFyZHMiLCB0eXBlPSJp
bnQiLAogICAgICAgICAgICAgaGVscD0iU2V0IHRoZSBtYXhpbXVtIG51bWJlciBvZiBsb2NrZWQg
c2hhcmRzIiksCisgICAgICAgIG9wdHBhcnNlLm1ha2Vfb3B0aW9uKCItLXNoYXJkLXJlZi10ZXN0
cyIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsCisgICAgICAgICAgICBoZWxwPSJSdW4gcmVmIHRlc3Rz
IGluIGRlZGljYXRlZCBzaGFyZChzKS4gRW5hYmxlZCBvbiBBbmRyb2lkIGJ5IGRlZmF1bHQuIiks
CiAgICAgXSkpCiAKICAgICBvcHRpb25fZ3JvdXBfZGVmaW5pdGlvbnMuYXBwZW5kKCgiTWlzY2Vs
bGFuZW91cyBPcHRpb25zIiwgWwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>152825</attachid>
            <date>2012-07-17 14:05:26 -0700</date>
            <delta_ts>2012-07-17 17:33:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91533-20120717140526.patch</filename>
            <type>text/plain</type>
            <size>10775</size>
            <attacher name="Xianzhu Wang">wangxianzhu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIyODcyCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMzAwOWExNjUzOTg1NDJhZGJmYzE2MzM5NzNlZDU3ZmQx
Nzc1NjY5OC4uYWYzMzc4ZjZiNmNjOThkY2E1ZWI2ZjQxOTA2MmRiZGM0ZTkzYzI4NCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMz
IEBACisyMDEyLTA3LTE3ICBYaWFuemh1IFdhbmcgIDx3YW5neGlhbnpodUBjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgW0Nocm9taXVtLUFuZHJvaWRdIFJ1biByZWYgdGVzdHMgdG9nZXRoZXIgdG8g
YXZvaWQgZXhwZW5zaXZlIGRyaXZlciByZXN0YXJ0cworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTE1MzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUaG91Z2ggRHJpdmVyUHJveHkgbWFpbnRhaW5zIHR3byBk
cml2ZXJzIHRvIHN1cHBvcnQgcGl4ZWwgdGVzdHMgYW5kIG5vbi1waXhlbCB0ZXN0cywKKyAgICAg
ICAgY2hyb21pdW0tYW5kcm9pZCB1c2VzIGFub3RoZXIgd2F5IGJlY2F1c2UgaXQgY2FuJ3Qgc3Vw
cG9ydCBtdWx0aXBsZSBkcml2ZXJzLgorICAgICAgICBJdCByZXN0YXJ0cyB0aGUgZHJpdmVyIHdo
ZW4gcGl4ZWwtdGVzdCBtb2RlIGNoYW5nZXMgKGUuZy4gd2hlbiBydW5uaW5nIGEgcmVmIHRlc3Qg
YWZ0ZXIKKyAgICAgICAgYSBub3JtYWwgdGVzdCBpbiAtLW5vLXBpeGVsLXRlc3RzIG1vZGUpLiBI
b3dldmVyIHJlc3RhcnRpbmcgZHJpdmVyIGlzIGV4cGVuc2l2ZSBvbgorICAgICAgICBBbmRyb2lk
IChzZXZlcmFsIHNlY29uZHMgZWFjaCB0aW1lKS4gVG8gcmVkdWNlIHRoZSBjb3N0LCBhIGNvbW1h
bmQgbGluZSBvcHRpb24KKyAgICAgICAgJy0tc2hhcmQtcmVmLXRlc3RzJyBpcyBhZGRlZCB0byBn
cm91cCByZWYgdGVzdHMgaW4gZGVkaWNhdGVkIHNoYXJkcy4KKyAgICAgICAgVGhlIG9wdGlvbiBp
cyBieSBkZWZhdWx0IGVuYWJsZWQgb24gQW5kcm9pZC4KKworICAgICAgICBXaWxsIHJlbW92ZSB0
aGUgb3B0aW9uIG9uY2UgRFJUIHN1cHBvcnRzIHN3aXRjaGluZyBwaXhlbCB0ZXN0IG1vZGUgZHVy
aW5nIG9uZSBydW4uCisgICAgICAgIChodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9OTE1MzgsIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTUz
OSkKKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJz
L21hbmFnZXIucHk6CisgICAgICAgIChNYW5hZ2VyLl9zaGFyZF90ZXN0cyk6CisgICAgICAgIChN
YW5hZ2VyLl9zaGFyZF9pbl90d28pOgorICAgICAgICAoTWFuYWdlci5fc2hhcmRfYnlfZGlyZWN0
b3J5KToKKyAgICAgICAgKE1hbmFnZXIuX3J1bl90ZXN0cyk6CisgICAgICAgICogU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvd29ya2VyLnB5OgorICAgICAgICAoV29y
a2VyLl91cGRhdGVfdGVzdF9pbnB1dCk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9hbmRyb2lkLnB5OgorICAgICAgICAoQ2hyb21pdW1BbmRy
b2lkUG9ydC5fX2luaXRfXyk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcnVuX3dlYmtpdF90ZXN0cy5weToKKyAgICAgICAgKHBhcnNlX2FyZ3MpOgorCiAyMDEyLTA3
LTE3ICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0b3BoZS5kdW1lekBpbnRlbC5jb20+CiAKICAg
ICAgICAgW0VGTF0gUmVwbGFjZSAwIGJ5IE5VTEwgaW4gcHVibGljIGhlYWRlcnMgZG9jdW1lbnRh
dGlvbgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29u
dHJvbGxlcnMvbWFuYWdlci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L2NvbnRyb2xsZXJzL21hbmFnZXIucHkKaW5kZXggYTMyZTFhMzA1YTE2ZTQwOTRmMGE2Mzc1NGZj
OTUzZTM0MGFkYjBiMC4uYTgwMjE0ZThmNzI0YmViYmZkOTUxYWRjNzA0YjhlMTQ4OTIyNDY3OCAx
MDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxl
cnMvbWFuYWdlci5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9j
b250cm9sbGVycy9tYW5hZ2VyLnB5CkBAIC01NjcsNyArNTY3LDcgQEAgY2xhc3MgTWFuYWdlcihv
YmplY3QpOgogICAgIGRlZiBfdGVzdF9pc19zbG93KHNlbGYsIHRlc3RfZmlsZSk6CiAgICAgICAg
IHJldHVybiBzZWxmLl9leHBlY3RhdGlvbnMuaGFzX21vZGlmaWVyKHRlc3RfZmlsZSwgdGVzdF9l
eHBlY3RhdGlvbnMuU0xPVykKIAotICAgIGRlZiBfc2hhcmRfdGVzdHMoc2VsZiwgdGVzdF9maWxl
cywgbnVtX3dvcmtlcnMsIGZ1bGx5X3BhcmFsbGVsKToKKyAgICBkZWYgX3NoYXJkX3Rlc3RzKHNl
bGYsIHRlc3RfZmlsZXMsIG51bV93b3JrZXJzLCBmdWxseV9wYXJhbGxlbCwgc2hhcmRfcmVmX3Rl
c3RzPUZhbHNlKToKICAgICAgICAgIiIiR3JvdXBzIHRlc3RzIGludG8gYmF0Y2hlcy4KICAgICAg
ICAgVGhpcyBoZWxwcyBlbnN1cmUgdGhhdCB0ZXN0cyB0aGF0IGRlcGVuZCBvbiBlYWNoIG90aGVy
IChha2EgYmFkIHRlc3RzISkKICAgICAgICAgY29udGludWUgdG8gcnVuIHRvZ2V0aGVyIGFzIG1v
c3QgY3Jvc3MtdGVzdHMgZGVwZW5kZW5jaWVzIHRlbmQgdG8KQEAgLTU4MSwzMCArNTgxLDQ1IEBA
IGNsYXNzIE1hbmFnZXIob2JqZWN0KToKICAgICAgICAgIyBvd24gY2xhc3Mgb3IgbW9kdWxlLiBD
b25zaWRlciBncm91cGluZyBpdCB3aXRoIHRoZSBjaHVua2luZyBsb2dpYwogICAgICAgICAjIGlu
IHByZXBhcmVfbGlzdHMgYXMgd2VsbC4KICAgICAgICAgaWYgbnVtX3dvcmtlcnMgPT0gMToKLSAg
ICAgICAgICAgIHJldHVybiBzZWxmLl9zaGFyZF9pbl90d28odGVzdF9maWxlcykKKyAgICAgICAg
ICAgIHJldHVybiBzZWxmLl9zaGFyZF9pbl90d28odGVzdF9maWxlcywgc2hhcmRfcmVmX3Rlc3Rz
KQogICAgICAgICBlbGlmIGZ1bGx5X3BhcmFsbGVsOgogICAgICAgICAgICAgcmV0dXJuIHNlbGYu
X3NoYXJkX2V2ZXJ5X2ZpbGUodGVzdF9maWxlcykKLSAgICAgICAgcmV0dXJuIHNlbGYuX3NoYXJk
X2J5X2RpcmVjdG9yeSh0ZXN0X2ZpbGVzLCBudW1fd29ya2VycykKKyAgICAgICAgcmV0dXJuIHNl
bGYuX3NoYXJkX2J5X2RpcmVjdG9yeSh0ZXN0X2ZpbGVzLCBudW1fd29ya2Vycywgc2hhcmRfcmVm
X3Rlc3RzKQogCi0gICAgZGVmIF9zaGFyZF9pbl90d28oc2VsZiwgdGVzdF9maWxlcyk6CisgICAg
ZGVmIF9zaGFyZF9pbl90d28oc2VsZiwgdGVzdF9maWxlcywgc2hhcmRfcmVmX3Rlc3RzKToKICAg
ICAgICAgIiIiUmV0dXJucyB0d28gbGlzdHMgb2Ygc2hhcmRzLCBvbmUgd2l0aCBhbGwgdGhlIHRl
c3RzIHJlcXVpcmluZyBhIGxvY2sgYW5kIG9uZSB3aXRoIHRoZSByZXN0LgogCiAgICAgICAgIFRo
aXMgaXMgdXNlZCB3aGVuIHRoZXJlJ3Mgb25seSBvbmUgd29ya2VyLCB0byBtaW5pbWl6ZSB0aGUg
cGVyLXNoYXJkIG92ZXJoZWFkLiIiIgogICAgICAgICBsb2NrZWRfaW5wdXRzID0gW10KKyAgICAg
ICAgbG9ja2VkX3JlZl90ZXN0X2lucHV0cyA9IFtdCiAgICAgICAgIHVubG9ja2VkX2lucHV0cyA9
IFtdCisgICAgICAgIHVubG9ja2VkX3JlZl90ZXN0X2lucHV0cyA9IFtdCiAgICAgICAgIGZvciB0
ZXN0X2ZpbGUgaW4gdGVzdF9maWxlczoKICAgICAgICAgICAgIHRlc3RfaW5wdXQgPSBzZWxmLl9n
ZXRfdGVzdF9pbnB1dF9mb3JfZmlsZSh0ZXN0X2ZpbGUpCisgICAgICAgICAgICBpZiBzaGFyZF9y
ZWZfdGVzdHM6CisgICAgICAgICAgICAgICAgIyBMYXp5IGluaXRpYWxpemF0aW9uLgorICAgICAg
ICAgICAgICAgIHRlc3RfaW5wdXQucmVmZXJlbmNlX2ZpbGVzID0gc2VsZi5fcG9ydC5yZWZlcmVu
Y2VfZmlsZXModGVzdF9pbnB1dC50ZXN0X25hbWUpCiAgICAgICAgICAgICBpZiBzZWxmLl90ZXN0
X3JlcXVpcmVzX2xvY2sodGVzdF9maWxlKToKLSAgICAgICAgICAgICAgICBsb2NrZWRfaW5wdXRz
LmFwcGVuZCh0ZXN0X2lucHV0KQorICAgICAgICAgICAgICAgIGlmIHNoYXJkX3JlZl90ZXN0cyBh
bmQgdGVzdF9pbnB1dC5yZWZlcmVuY2VfZmlsZXM6CisgICAgICAgICAgICAgICAgICAgIGxvY2tl
ZF9yZWZfdGVzdF9pbnB1dHMuYXBwZW5kKHRlc3RfaW5wdXQpCisgICAgICAgICAgICAgICAgZWxz
ZToKKyAgICAgICAgICAgICAgICAgICAgbG9ja2VkX2lucHV0cy5hcHBlbmQodGVzdF9pbnB1dCkK
ICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgdW5sb2NrZWRfaW5wdXRzLmFwcGVu
ZCh0ZXN0X2lucHV0KQorICAgICAgICAgICAgICAgIGlmIHNoYXJkX3JlZl90ZXN0cyBhbmQgdGVz
dF9pbnB1dC5yZWZlcmVuY2VfZmlsZXM6CisgICAgICAgICAgICAgICAgICAgIHVubG9ja2VkX3Jl
Zl90ZXN0X2lucHV0cy5hcHBlbmQodGVzdF9pbnB1dCkKKyAgICAgICAgICAgICAgICBlbHNlOgor
ICAgICAgICAgICAgICAgICAgICB1bmxvY2tlZF9pbnB1dHMuYXBwZW5kKHRlc3RfaW5wdXQpCiAK
ICAgICAgICAgbG9ja2VkX3NoYXJkcyA9IFtdCiAgICAgICAgIHVubG9ja2VkX3NoYXJkcyA9IFtd
CiAgICAgICAgIGlmIGxvY2tlZF9pbnB1dHM6CiAgICAgICAgICAgICBsb2NrZWRfc2hhcmRzID0g
W1Rlc3RTaGFyZCgnbG9ja2VkX3Rlc3RzJywgbG9ja2VkX2lucHV0cyldCisgICAgICAgIGlmIGxv
Y2tlZF9yZWZfdGVzdF9pbnB1dHM6CisgICAgICAgICAgICBsb2NrZWRfc2hhcmRzLmFwcGVuZChU
ZXN0U2hhcmQoJ2xvY2tlZF9yZWZfdGVzdHMnLCBsb2NrZWRfcmVmX3Rlc3RfaW5wdXRzKSkKICAg
ICAgICAgaWYgdW5sb2NrZWRfaW5wdXRzOgogICAgICAgICAgICAgdW5sb2NrZWRfc2hhcmRzID0g
W1Rlc3RTaGFyZCgndW5sb2NrZWRfdGVzdHMnLCB1bmxvY2tlZF9pbnB1dHMpXQorICAgICAgICBp
ZiB1bmxvY2tlZF9yZWZfdGVzdF9pbnB1dHM6CisgICAgICAgICAgICB1bmxvY2tlZF9zaGFyZHMu
YXBwZW5kKFRlc3RTaGFyZCgndW5sb2NrZWRfcmVmX3Rlc3RzJywgdW5sb2NrZWRfcmVmX3Rlc3Rf
aW5wdXRzKSkKIAogICAgICAgICByZXR1cm4gbG9ja2VkX3NoYXJkcywgdW5sb2NrZWRfc2hhcmRz
CiAKQEAgLTYyNyw3ICs2NDIsNyBAQCBjbGFzcyBNYW5hZ2VyKG9iamVjdCk6CiAKICAgICAgICAg
cmV0dXJuIGxvY2tlZF9zaGFyZHMsIHVubG9ja2VkX3NoYXJkcwogCi0gICAgZGVmIF9zaGFyZF9i
eV9kaXJlY3Rvcnkoc2VsZiwgdGVzdF9maWxlcywgbnVtX3dvcmtlcnMpOgorICAgIGRlZiBfc2hh
cmRfYnlfZGlyZWN0b3J5KHNlbGYsIHRlc3RfZmlsZXMsIG51bV93b3JrZXJzLCBzaGFyZF9yZWZf
dGVzdHMpOgogICAgICAgICAiIiJSZXR1cm5zIHR3byBsaXN0cyBvZiBzaGFyZHMsIGVhY2ggc2hh
cmQgY29udGFpbmluZyBhbGwgdGhlIGZpbGVzIGluIGEgZGlyZWN0b3J5LgogCiAgICAgICAgIFRo
aXMgaXMgdGhlIGRlZmF1bHQgbW9kZSwgYW5kIGdldHMgYXMgbXVjaCBwYXJhbGxlbGlzbSBhcyB3
ZSBjYW4gd2hpbGUKQEAgLTYzNSwxMyArNjUwLDIxIEBAIGNsYXNzIE1hbmFnZXIob2JqZWN0KToK
ICAgICAgICAgbG9ja2VkX3NoYXJkcyA9IFtdCiAgICAgICAgIHVubG9ja2VkX3NoYXJkcyA9IFtd
CiAgICAgICAgIHRlc3RzX2J5X2RpciA9IHt9CisgICAgICAgIHJlZl90ZXN0c19ieV9kaXIgPSB7
fQogICAgICAgICAjIEZJWE1FOiBHaXZlbiB0aGF0IHRoZSB0ZXN0cyBhcmUgYWxyZWFkeSBzb3J0
ZWQgYnkgZGlyZWN0b3J5LAogICAgICAgICAjIHdlIGNhbiBwcm9iYWJseSByZXdyaXRlIHRoaXMg
dG8gYmUgY2xlYXJlciBhbmQgZmFzdGVyLgogICAgICAgICBmb3IgdGVzdF9maWxlIGluIHRlc3Rf
ZmlsZXM6CiAgICAgICAgICAgICBkaXJlY3RvcnkgPSBzZWxmLl9nZXRfZGlyX2Zvcl90ZXN0X2Zp
bGUodGVzdF9maWxlKQogICAgICAgICAgICAgdGVzdF9pbnB1dCA9IHNlbGYuX2dldF90ZXN0X2lu
cHV0X2Zvcl9maWxlKHRlc3RfZmlsZSkKLSAgICAgICAgICAgIHRlc3RzX2J5X2Rpci5zZXRkZWZh
dWx0KGRpcmVjdG9yeSwgW10pCi0gICAgICAgICAgICB0ZXN0c19ieV9kaXJbZGlyZWN0b3J5XS5h
cHBlbmQodGVzdF9pbnB1dCkKKyAgICAgICAgICAgIGlmIHNoYXJkX3JlZl90ZXN0czoKKyAgICAg
ICAgICAgICAgICAjIExhenkgaW5pdGlhbGl6YXRpb24uCisgICAgICAgICAgICAgICAgdGVzdF9p
bnB1dC5yZWZlcmVuY2VfZmlsZXMgPSBzZWxmLl9wb3J0LnJlZmVyZW5jZV9maWxlcyh0ZXN0X2lu
cHV0LnRlc3RfbmFtZSkKKyAgICAgICAgICAgIGlmIHNoYXJkX3JlZl90ZXN0cyBhbmQgdGVzdF9p
bnB1dC5yZWZlcmVuY2VfZmlsZXM6CisgICAgICAgICAgICAgICAgcmVmX3Rlc3RzX2J5X2Rpci5z
ZXRkZWZhdWx0KGRpcmVjdG9yeSwgW10pCisgICAgICAgICAgICAgICAgcmVmX3Rlc3RzX2J5X2Rp
cltkaXJlY3RvcnldLmFwcGVuZCh0ZXN0X2lucHV0KQorICAgICAgICAgICAgZWxzZToKKyAgICAg
ICAgICAgICAgICB0ZXN0c19ieV9kaXIuc2V0ZGVmYXVsdChkaXJlY3RvcnksIFtdKQorICAgICAg
ICAgICAgICAgIHRlc3RzX2J5X2RpcltkaXJlY3RvcnldLmFwcGVuZCh0ZXN0X2lucHV0KQogCiAg
ICAgICAgIGZvciBkaXJlY3RvcnksIHRlc3RfaW5wdXRzIGluIHRlc3RzX2J5X2Rpci5pdGVyaXRl
bXMoKToKICAgICAgICAgICAgIHNoYXJkID0gVGVzdFNoYXJkKGRpcmVjdG9yeSwgdGVzdF9pbnB1
dHMpCkBAIC02NTAsNiArNjczLDEzIEBAIGNsYXNzIE1hbmFnZXIob2JqZWN0KToKICAgICAgICAg
ICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgdW5sb2NrZWRfc2hhcmRzLmFwcGVuZChzaGFyZCkK
IAorICAgICAgICBmb3IgZGlyZWN0b3J5LCB0ZXN0X2lucHV0cyBpbiByZWZfdGVzdHNfYnlfZGly
Lml0ZXJpdGVtcygpOgorICAgICAgICAgICAgc2hhcmQgPSBUZXN0U2hhcmQoJ3JlZl90ZXN0czon
ICsgZGlyZWN0b3J5LCB0ZXN0X2lucHV0cykKKyAgICAgICAgICAgIGlmIHNlbGYuX3Rlc3RfcmVx
dWlyZXNfbG9jayhkaXJlY3RvcnkpOgorICAgICAgICAgICAgICAgIGxvY2tlZF9zaGFyZHMuYXBw
ZW5kKHNoYXJkKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICB1bmxvY2tlZF9z
aGFyZHMuYXBwZW5kKHNoYXJkKQorCiAgICAgICAgICMgU29ydCB0aGUgc2hhcmRzIGJ5IGRpcmVj
dG9yeSBuYW1lLgogICAgICAgICBsb2NrZWRfc2hhcmRzLnNvcnQoa2V5PWxhbWJkYSBzaGFyZDog
c2hhcmQubmFtZSkKICAgICAgICAgdW5sb2NrZWRfc2hhcmRzLnNvcnQoa2V5PWxhbWJkYSBzaGFy
ZDogc2hhcmQubmFtZSkKQEAgLTc0MSw3ICs3NzEsNyBAQCBjbGFzcyBNYW5hZ2VyKG9iamVjdCk6
CiAgICAgICAgIGludGVycnVwdGVkID0gRmFsc2UKIAogICAgICAgICBzZWxmLl9wcmludGVyLnBy
aW50X3VwZGF0ZSgnU2hhcmRpbmcgdGVzdHMgLi4uJykKLSAgICAgICAgbG9ja2VkX3NoYXJkcywg
dW5sb2NrZWRfc2hhcmRzID0gc2VsZi5fc2hhcmRfdGVzdHMoZmlsZV9saXN0LCBpbnQoc2VsZi5f
b3B0aW9ucy5jaGlsZF9wcm9jZXNzZXMpLCBzZWxmLl9vcHRpb25zLmZ1bGx5X3BhcmFsbGVsKQor
ICAgICAgICBsb2NrZWRfc2hhcmRzLCB1bmxvY2tlZF9zaGFyZHMgPSBzZWxmLl9zaGFyZF90ZXN0
cyhmaWxlX2xpc3QsIGludChzZWxmLl9vcHRpb25zLmNoaWxkX3Byb2Nlc3NlcyksIHNlbGYuX29w
dGlvbnMuZnVsbHlfcGFyYWxsZWwsIHNlbGYuX29wdGlvbnMuc2hhcmRfcmVmX3Rlc3RzKQogCiAg
ICAgICAgICMgRklYTUU6IFdlIGRvbid0IGhhdmUgYSBnb29kIHdheSB0byBjb29yZGluYXRlIHRo
ZSB3b3JrZXJzIHNvIHRoYXQKICAgICAgICAgIyB0aGV5IGRvbid0IHRyeSB0byBydW4gdGhlIHNo
YXJkcyB0aGF0IG5lZWQgYSBsb2NrIGlmIHdlIGRvbid0IGFjdHVhbGx5CmRpZmYgLS1naXQgYS9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy93b3JrZXIucHkg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy93b3JrZXIu
cHkKaW5kZXggODM3YWVhODZiYzZmYjIzYmMyOGY0ZjI2ODc2Mjc5NmQwZjRhN2U0MS4uMzc4ODI2
YzUxZjhlMDlkZjY1YTI4MDBkNzVmYzY1ZTJiYTFhZTU4YiAxMDA2NDQKLS0tIGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvd29ya2VyLnB5CisrKyBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL3dvcmtlci5weQpA
QCAtODMsNyArODMsOSBAQCBjbGFzcyBXb3JrZXIob2JqZWN0KToKICAgICAgICAgc2VsZi5fY2Fs
bGVyLnBvc3QoJ2ZpbmlzaGVkX3Rlc3RfbGlzdCcsIHRlc3RfbGlzdF9uYW1lLCBsZW4odGVzdF9p
bnB1dHMpLCBlbGFwc2VkX3RpbWUpCiAKICAgICBkZWYgX3VwZGF0ZV90ZXN0X2lucHV0KHNlbGYs
IHRlc3RfaW5wdXQpOgotICAgICAgICB0ZXN0X2lucHV0LnJlZmVyZW5jZV9maWxlcyA9IHNlbGYu
X3BvcnQucmVmZXJlbmNlX2ZpbGVzKHRlc3RfaW5wdXQudGVzdF9uYW1lKQorICAgICAgICBpZiB0
ZXN0X2lucHV0LnJlZmVyZW5jZV9maWxlcyBpcyBOb25lOgorICAgICAgICAgICAgIyBMYXp5IGlu
aXRpYWxpemF0aW9uLgorICAgICAgICAgICAgdGVzdF9pbnB1dC5yZWZlcmVuY2VfZmlsZXMgPSBz
ZWxmLl9wb3J0LnJlZmVyZW5jZV9maWxlcyh0ZXN0X2lucHV0LnRlc3RfbmFtZSkKICAgICAgICAg
aWYgdGVzdF9pbnB1dC5yZWZlcmVuY2VfZmlsZXM6CiAgICAgICAgICAgICB0ZXN0X2lucHV0LnNo
b3VsZF9ydW5fcGl4ZWxfdGVzdCA9IFRydWUKICAgICAgICAgZWxpZiBzZWxmLl9vcHRpb25zLnBp
eGVsX3Rlc3RzOgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcG9ydC9jaHJvbWl1bV9hbmRyb2lkLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9hbmRyb2lkLnB5CmluZGV4IDU2N2YzYWVhOGJmMzAyZmVj
ZTA2MGE2MDY0ZjlmYWFkNjBjZTZlNTIuLjQzNWQzNjRiYmUzMjJmMDBlZGI2MTcxZDk2YjM4NTIw
ZTQzZTQyZWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3BvcnQvY2hyb21pdW1fYW5kcm9pZC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX2FuZHJvaWQucHkKQEAgLTE1OCw2ICsxNTgsOSBAQCBj
bGFzcyBDaHJvbWl1bUFuZHJvaWRQb3J0KGNocm9taXVtLkNocm9taXVtUG9ydCk6CiAgICAgICAg
ICMgVGhlIENocm9taXVtIHBvcnQgZm9yIEFuZHJvaWQgYWx3YXlzIHVzZXMgdGhlIGhhcmR3YXJl
IEdQVSBwYXRoLgogICAgICAgICBzZWxmLl9vcHRpb25zLmVuYWJsZV9oYXJkd2FyZV9ncHUgPSBU
cnVlCiAKKyAgICAgICAgIyBTaGFyZCByZWYgdGVzdHMgc28gdGhhdCB0aGV5IHJ1biB0b2dldGhl
ciB0byBhdm9pZCByZXBlYXRlZGx5IGRyaXZlciByZXN0YXJ0cy4KKyAgICAgICAgc2VsZi5fb3B0
aW9ucy5zaGFyZF9yZWZfdGVzdHMgPSBUcnVlCisKICAgICAgICAgc2VsZi5fb3BlcmF0aW5nX3N5
c3RlbSA9ICdhbmRyb2lkJwogICAgICAgICBzZWxmLl92ZXJzaW9uID0gJ2ljZWNyZWFtc2FuZHdp
Y2gnCiAgICAgICAgIHNlbGYuX29yaWdpbmFsX2dvdmVybm9yID0gTm9uZQpkaWZmIC0tZ2l0IGEv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weSBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMucHkK
aW5kZXggOTYxY2JhODQ4MmI1NzFkZjZhYmFlNGE1MzVkOGJjNGU3YWYyMTI5ZS4uYTdiODA2YzRk
OWViNTBlM2EwZDFlNDJmZjcwMzBjMmU5ODY3ZmQyNCAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weQorKysgYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5CkBAIC00MjAs
NiArNDIwLDExIEBAIGRlZiBwYXJzZV9hcmdzKGFyZ3M9Tm9uZSk6CiAgICAgICAgICAgICBoZWxw
PSJEb24ndCByZS10cnkgYW55IHRlc3RzIHRoYXQgcHJvZHVjZSB1bmV4cGVjdGVkIHJlc3VsdHMu
IiksCiAgICAgICAgIG9wdHBhcnNlLm1ha2Vfb3B0aW9uKCItLW1heC1sb2NrZWQtc2hhcmRzIiwg
dHlwZT0iaW50IiwKICAgICAgICAgICAgIGhlbHA9IlNldCB0aGUgbWF4aW11bSBudW1iZXIgb2Yg
bG9ja2VkIHNoYXJkcyIpLAorICAgICAgICAjIEZvciBjaHJvbWl1bS1hbmRyb2lkIHRvIHJlZHVj
ZSB0aGUgY29zdCBvZiByZXN0YXJ0aW5nIHRoZSBkcml2ZXIuCisgICAgICAgICMgRklYTUU6IFJl
bW92ZSB0aGUgb3B0aW9uIG9uY2UgcGVyLXRlc3QgYXJnIGlzIHN1cHBvcnRlZDoKKyAgICAgICAg
IyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTE1MzkuCisgICAgICAg
IG9wdHBhcnNlLm1ha2Vfb3B0aW9uKCItLXNoYXJkLXJlZi10ZXN0cyIsIGFjdGlvbj0ic3RvcmVf
dHJ1ZSIsCisgICAgICAgICAgICBoZWxwPSJSdW4gcmVmIHRlc3RzIGluIGRlZGljYXRlZCBzaGFy
ZChzKS4gRW5hYmxlZCBvbiBBbmRyb2lkIGJ5IGRlZmF1bHQuIiksCiAgICAgXSkpCiAKICAgICBv
cHRpb25fZ3JvdXBfZGVmaW5pdGlvbnMuYXBwZW5kKCgiTWlzY2VsbGFuZW91cyBPcHRpb25zIiwg
Wwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>152883</attachid>
            <date>2012-07-17 17:33:57 -0700</date>
            <delta_ts>2012-07-17 17:51:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91533-20120717173356.patch</filename>
            <type>text/plain</type>
            <size>16069</size>
            <attacher name="Xianzhu Wang">wangxianzhu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIyODgzCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMzAwOWExNjUzOTg1NDJhZGJmYzE2MzM5NzNlZDU3ZmQx
Nzc1NjY5OC4uYWYzMzc4ZjZiNmNjOThkY2E1ZWI2ZjQxOTA2MmRiZGM0ZTkzYzI4NCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMz
IEBACisyMDEyLTA3LTE3ICBYaWFuemh1IFdhbmcgIDx3YW5neGlhbnpodUBjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgW0Nocm9taXVtLUFuZHJvaWRdIFJ1biByZWYgdGVzdHMgdG9nZXRoZXIgdG8g
YXZvaWQgZXhwZW5zaXZlIGRyaXZlciByZXN0YXJ0cworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTE1MzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUaG91Z2ggRHJpdmVyUHJveHkgbWFpbnRhaW5zIHR3byBk
cml2ZXJzIHRvIHN1cHBvcnQgcGl4ZWwgdGVzdHMgYW5kIG5vbi1waXhlbCB0ZXN0cywKKyAgICAg
ICAgY2hyb21pdW0tYW5kcm9pZCB1c2VzIGFub3RoZXIgd2F5IGJlY2F1c2UgaXQgY2FuJ3Qgc3Vw
cG9ydCBtdWx0aXBsZSBkcml2ZXJzLgorICAgICAgICBJdCByZXN0YXJ0cyB0aGUgZHJpdmVyIHdo
ZW4gcGl4ZWwtdGVzdCBtb2RlIGNoYW5nZXMgKGUuZy4gd2hlbiBydW5uaW5nIGEgcmVmIHRlc3Qg
YWZ0ZXIKKyAgICAgICAgYSBub3JtYWwgdGVzdCBpbiAtLW5vLXBpeGVsLXRlc3RzIG1vZGUpLiBI
b3dldmVyIHJlc3RhcnRpbmcgZHJpdmVyIGlzIGV4cGVuc2l2ZSBvbgorICAgICAgICBBbmRyb2lk
IChzZXZlcmFsIHNlY29uZHMgZWFjaCB0aW1lKS4gVG8gcmVkdWNlIHRoZSBjb3N0LCBhIGNvbW1h
bmQgbGluZSBvcHRpb24KKyAgICAgICAgJy0tc2hhcmQtcmVmLXRlc3RzJyBpcyBhZGRlZCB0byBn
cm91cCByZWYgdGVzdHMgaW4gZGVkaWNhdGVkIHNoYXJkcy4KKyAgICAgICAgVGhlIG9wdGlvbiBp
cyBieSBkZWZhdWx0IGVuYWJsZWQgb24gQW5kcm9pZC4KKworICAgICAgICBXaWxsIHJlbW92ZSB0
aGUgb3B0aW9uIG9uY2UgRFJUIHN1cHBvcnRzIHN3aXRjaGluZyBwaXhlbCB0ZXN0IG1vZGUgZHVy
aW5nIG9uZSBydW4uCisgICAgICAgIChodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9OTE1MzgsIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTUz
OSkKKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJz
L21hbmFnZXIucHk6CisgICAgICAgIChNYW5hZ2VyLl9zaGFyZF90ZXN0cyk6CisgICAgICAgIChN
YW5hZ2VyLl9zaGFyZF9pbl90d28pOgorICAgICAgICAoTWFuYWdlci5fc2hhcmRfYnlfZGlyZWN0
b3J5KToKKyAgICAgICAgKE1hbmFnZXIuX3J1bl90ZXN0cyk6CisgICAgICAgICogU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvd29ya2VyLnB5OgorICAgICAgICAoV29y
a2VyLl91cGRhdGVfdGVzdF9pbnB1dCk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9hbmRyb2lkLnB5OgorICAgICAgICAoQ2hyb21pdW1BbmRy
b2lkUG9ydC5fX2luaXRfXyk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcnVuX3dlYmtpdF90ZXN0cy5weToKKyAgICAgICAgKHBhcnNlX2FyZ3MpOgorCiAyMDEyLTA3
LTE3ICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0b3BoZS5kdW1lekBpbnRlbC5jb20+CiAKICAg
ICAgICAgW0VGTF0gUmVwbGFjZSAwIGJ5IE5VTEwgaW4gcHVibGljIGhlYWRlcnMgZG9jdW1lbnRh
dGlvbgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29u
dHJvbGxlcnMvbWFuYWdlci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L2NvbnRyb2xsZXJzL21hbmFnZXIucHkKaW5kZXggYTMyZTFhMzA1YTE2ZTQwOTRmMGE2Mzc1NGZj
OTUzZTM0MGFkYjBiMC4uNTJjZWRiMTNjZjc1MTg5NmY5NGM2MGRlY2QyZTUwY2E4ZTZlY2Y1ZSAx
MDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxl
cnMvbWFuYWdlci5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9j
b250cm9sbGVycy9tYW5hZ2VyLnB5CkBAIC01NjcsNyArNTY3LDEzIEBAIGNsYXNzIE1hbmFnZXIo
b2JqZWN0KToKICAgICBkZWYgX3Rlc3RfaXNfc2xvdyhzZWxmLCB0ZXN0X2ZpbGUpOgogICAgICAg
ICByZXR1cm4gc2VsZi5fZXhwZWN0YXRpb25zLmhhc19tb2RpZmllcih0ZXN0X2ZpbGUsIHRlc3Rf
ZXhwZWN0YXRpb25zLlNMT1cpCiAKLSAgICBkZWYgX3NoYXJkX3Rlc3RzKHNlbGYsIHRlc3RfZmls
ZXMsIG51bV93b3JrZXJzLCBmdWxseV9wYXJhbGxlbCk6CisgICAgZGVmIF9pc19yZWZfdGVzdChz
ZWxmLCB0ZXN0X2lucHV0KToKKyAgICAgICAgaWYgdGVzdF9pbnB1dC5yZWZlcmVuY2VfZmlsZXMg
aXMgTm9uZToKKyAgICAgICAgICAgICMgTGF6eSBpbml0aWFsaXphdGlvbi4KKyAgICAgICAgICAg
IHRlc3RfaW5wdXQucmVmZXJlbmNlX2ZpbGVzID0gc2VsZi5fcG9ydC5yZWZlcmVuY2VfZmlsZXMo
dGVzdF9pbnB1dC50ZXN0X25hbWUpCisgICAgICAgIHJldHVybiBib29sKHRlc3RfaW5wdXQucmVm
ZXJlbmNlX2ZpbGVzKQorCisgICAgZGVmIF9zaGFyZF90ZXN0cyhzZWxmLCB0ZXN0X2ZpbGVzLCBu
dW1fd29ya2VycywgZnVsbHlfcGFyYWxsZWwsIHNoYXJkX3JlZl90ZXN0cyk6CiAgICAgICAgICIi
Ikdyb3VwcyB0ZXN0cyBpbnRvIGJhdGNoZXMuCiAgICAgICAgIFRoaXMgaGVscHMgZW5zdXJlIHRo
YXQgdGVzdHMgdGhhdCBkZXBlbmQgb24gZWFjaCBvdGhlciAoYWthIGJhZCB0ZXN0cyEpCiAgICAg
ICAgIGNvbnRpbnVlIHRvIHJ1biB0b2dldGhlciBhcyBtb3N0IGNyb3NzLXRlc3RzIGRlcGVuZGVu
Y2llcyB0ZW5kIHRvCkBAIC01ODEsMzAgKzU4Nyw0MCBAQCBjbGFzcyBNYW5hZ2VyKG9iamVjdCk6
CiAgICAgICAgICMgb3duIGNsYXNzIG9yIG1vZHVsZS4gQ29uc2lkZXIgZ3JvdXBpbmcgaXQgd2l0
aCB0aGUgY2h1bmtpbmcgbG9naWMKICAgICAgICAgIyBpbiBwcmVwYXJlX2xpc3RzIGFzIHdlbGwu
CiAgICAgICAgIGlmIG51bV93b3JrZXJzID09IDE6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5f
c2hhcmRfaW5fdHdvKHRlc3RfZmlsZXMpCisgICAgICAgICAgICByZXR1cm4gc2VsZi5fc2hhcmRf
aW5fdHdvKHRlc3RfZmlsZXMsIHNoYXJkX3JlZl90ZXN0cykKICAgICAgICAgZWxpZiBmdWxseV9w
YXJhbGxlbDoKICAgICAgICAgICAgIHJldHVybiBzZWxmLl9zaGFyZF9ldmVyeV9maWxlKHRlc3Rf
ZmlsZXMpCi0gICAgICAgIHJldHVybiBzZWxmLl9zaGFyZF9ieV9kaXJlY3RvcnkodGVzdF9maWxl
cywgbnVtX3dvcmtlcnMpCisgICAgICAgIHJldHVybiBzZWxmLl9zaGFyZF9ieV9kaXJlY3Rvcnko
dGVzdF9maWxlcywgbnVtX3dvcmtlcnMsIHNoYXJkX3JlZl90ZXN0cykKIAotICAgIGRlZiBfc2hh
cmRfaW5fdHdvKHNlbGYsIHRlc3RfZmlsZXMpOgorICAgIGRlZiBfc2hhcmRfaW5fdHdvKHNlbGYs
IHRlc3RfZmlsZXMsIHNoYXJkX3JlZl90ZXN0cyk6CiAgICAgICAgICIiIlJldHVybnMgdHdvIGxp
c3RzIG9mIHNoYXJkcywgb25lIHdpdGggYWxsIHRoZSB0ZXN0cyByZXF1aXJpbmcgYSBsb2NrIGFu
ZCBvbmUgd2l0aCB0aGUgcmVzdC4KIAogICAgICAgICBUaGlzIGlzIHVzZWQgd2hlbiB0aGVyZSdz
IG9ubHkgb25lIHdvcmtlciwgdG8gbWluaW1pemUgdGhlIHBlci1zaGFyZCBvdmVyaGVhZC4iIiIK
ICAgICAgICAgbG9ja2VkX2lucHV0cyA9IFtdCisgICAgICAgIGxvY2tlZF9yZWZfdGVzdF9pbnB1
dHMgPSBbXQogICAgICAgICB1bmxvY2tlZF9pbnB1dHMgPSBbXQorICAgICAgICB1bmxvY2tlZF9y
ZWZfdGVzdF9pbnB1dHMgPSBbXQogICAgICAgICBmb3IgdGVzdF9maWxlIGluIHRlc3RfZmlsZXM6
CiAgICAgICAgICAgICB0ZXN0X2lucHV0ID0gc2VsZi5fZ2V0X3Rlc3RfaW5wdXRfZm9yX2ZpbGUo
dGVzdF9maWxlKQogICAgICAgICAgICAgaWYgc2VsZi5fdGVzdF9yZXF1aXJlc19sb2NrKHRlc3Rf
ZmlsZSk6Ci0gICAgICAgICAgICAgICAgbG9ja2VkX2lucHV0cy5hcHBlbmQodGVzdF9pbnB1dCkK
KyAgICAgICAgICAgICAgICBpZiBzaGFyZF9yZWZfdGVzdHMgYW5kIHNlbGYuX2lzX3JlZl90ZXN0
KHRlc3RfaW5wdXQpOgorICAgICAgICAgICAgICAgICAgICBsb2NrZWRfcmVmX3Rlc3RfaW5wdXRz
LmFwcGVuZCh0ZXN0X2lucHV0KQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAg
ICAgICAgIGxvY2tlZF9pbnB1dHMuYXBwZW5kKHRlc3RfaW5wdXQpCiAgICAgICAgICAgICBlbHNl
OgotICAgICAgICAgICAgICAgIHVubG9ja2VkX2lucHV0cy5hcHBlbmQodGVzdF9pbnB1dCkKKyAg
ICAgICAgICAgICAgICBpZiBzaGFyZF9yZWZfdGVzdHMgYW5kIHNlbGYuX2lzX3JlZl90ZXN0KHRl
c3RfaW5wdXQpOgorICAgICAgICAgICAgICAgICAgICB1bmxvY2tlZF9yZWZfdGVzdF9pbnB1dHMu
YXBwZW5kKHRlc3RfaW5wdXQpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAg
ICAgICAgdW5sb2NrZWRfaW5wdXRzLmFwcGVuZCh0ZXN0X2lucHV0KQorICAgICAgICBsb2NrZWRf
aW5wdXRzLmV4dGVuZChsb2NrZWRfcmVmX3Rlc3RfaW5wdXRzKQorICAgICAgICB1bmxvY2tlZF9p
bnB1dHMuZXh0ZW5kKHVubG9ja2VkX3JlZl90ZXN0X2lucHV0cykKIAogICAgICAgICBsb2NrZWRf
c2hhcmRzID0gW10KICAgICAgICAgdW5sb2NrZWRfc2hhcmRzID0gW10KICAgICAgICAgaWYgbG9j
a2VkX2lucHV0czoKICAgICAgICAgICAgIGxvY2tlZF9zaGFyZHMgPSBbVGVzdFNoYXJkKCdsb2Nr
ZWRfdGVzdHMnLCBsb2NrZWRfaW5wdXRzKV0KICAgICAgICAgaWYgdW5sb2NrZWRfaW5wdXRzOgot
ICAgICAgICAgICAgdW5sb2NrZWRfc2hhcmRzID0gW1Rlc3RTaGFyZCgndW5sb2NrZWRfdGVzdHMn
LCB1bmxvY2tlZF9pbnB1dHMpXQorICAgICAgICAgICAgdW5sb2NrZWRfc2hhcmRzLmFwcGVuZChU
ZXN0U2hhcmQoJ3VubG9ja2VkX3Rlc3RzJywgdW5sb2NrZWRfaW5wdXRzKSkKIAogICAgICAgICBy
ZXR1cm4gbG9ja2VkX3NoYXJkcywgdW5sb2NrZWRfc2hhcmRzCiAKQEAgLTYyNyw3ICs2NDMsNyBA
QCBjbGFzcyBNYW5hZ2VyKG9iamVjdCk6CiAKICAgICAgICAgcmV0dXJuIGxvY2tlZF9zaGFyZHMs
IHVubG9ja2VkX3NoYXJkcwogCi0gICAgZGVmIF9zaGFyZF9ieV9kaXJlY3Rvcnkoc2VsZiwgdGVz
dF9maWxlcywgbnVtX3dvcmtlcnMpOgorICAgIGRlZiBfc2hhcmRfYnlfZGlyZWN0b3J5KHNlbGYs
IHRlc3RfZmlsZXMsIG51bV93b3JrZXJzLCBzaGFyZF9yZWZfdGVzdHMpOgogICAgICAgICAiIiJS
ZXR1cm5zIHR3byBsaXN0cyBvZiBzaGFyZHMsIGVhY2ggc2hhcmQgY29udGFpbmluZyBhbGwgdGhl
IGZpbGVzIGluIGEgZGlyZWN0b3J5LgogCiAgICAgICAgIFRoaXMgaXMgdGhlIGRlZmF1bHQgbW9k
ZSwgYW5kIGdldHMgYXMgbXVjaCBwYXJhbGxlbGlzbSBhcyB3ZSBjYW4gd2hpbGUKQEAgLTYzNSwx
MyArNjUxLDE4IEBAIGNsYXNzIE1hbmFnZXIob2JqZWN0KToKICAgICAgICAgbG9ja2VkX3NoYXJk
cyA9IFtdCiAgICAgICAgIHVubG9ja2VkX3NoYXJkcyA9IFtdCiAgICAgICAgIHRlc3RzX2J5X2Rp
ciA9IHt9CisgICAgICAgIHJlZl90ZXN0c19ieV9kaXIgPSB7fQogICAgICAgICAjIEZJWE1FOiBH
aXZlbiB0aGF0IHRoZSB0ZXN0cyBhcmUgYWxyZWFkeSBzb3J0ZWQgYnkgZGlyZWN0b3J5LAogICAg
ICAgICAjIHdlIGNhbiBwcm9iYWJseSByZXdyaXRlIHRoaXMgdG8gYmUgY2xlYXJlciBhbmQgZmFz
dGVyLgogICAgICAgICBmb3IgdGVzdF9maWxlIGluIHRlc3RfZmlsZXM6CiAgICAgICAgICAgICBk
aXJlY3RvcnkgPSBzZWxmLl9nZXRfZGlyX2Zvcl90ZXN0X2ZpbGUodGVzdF9maWxlKQogICAgICAg
ICAgICAgdGVzdF9pbnB1dCA9IHNlbGYuX2dldF90ZXN0X2lucHV0X2Zvcl9maWxlKHRlc3RfZmls
ZSkKLSAgICAgICAgICAgIHRlc3RzX2J5X2Rpci5zZXRkZWZhdWx0KGRpcmVjdG9yeSwgW10pCi0g
ICAgICAgICAgICB0ZXN0c19ieV9kaXJbZGlyZWN0b3J5XS5hcHBlbmQodGVzdF9pbnB1dCkKKyAg
ICAgICAgICAgIGlmIHNoYXJkX3JlZl90ZXN0cyBhbmQgc2VsZi5faXNfcmVmX3Rlc3QodGVzdF9p
bnB1dCk6CisgICAgICAgICAgICAgICAgcmVmX3Rlc3RzX2J5X2Rpci5zZXRkZWZhdWx0KGRpcmVj
dG9yeSwgW10pCisgICAgICAgICAgICAgICAgcmVmX3Rlc3RzX2J5X2RpcltkaXJlY3RvcnldLmFw
cGVuZCh0ZXN0X2lucHV0KQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICB0ZXN0
c19ieV9kaXIuc2V0ZGVmYXVsdChkaXJlY3RvcnksIFtdKQorICAgICAgICAgICAgICAgIHRlc3Rz
X2J5X2RpcltkaXJlY3RvcnldLmFwcGVuZCh0ZXN0X2lucHV0KQogCiAgICAgICAgIGZvciBkaXJl
Y3RvcnksIHRlc3RfaW5wdXRzIGluIHRlc3RzX2J5X2Rpci5pdGVyaXRlbXMoKToKICAgICAgICAg
ICAgIHNoYXJkID0gVGVzdFNoYXJkKGRpcmVjdG9yeSwgdGVzdF9pbnB1dHMpCkBAIC02NTAsNiAr
NjcxLDE0IEBAIGNsYXNzIE1hbmFnZXIob2JqZWN0KToKICAgICAgICAgICAgIGVsc2U6CiAgICAg
ICAgICAgICAgICAgdW5sb2NrZWRfc2hhcmRzLmFwcGVuZChzaGFyZCkKIAorICAgICAgICBmb3Ig
ZGlyZWN0b3J5LCB0ZXN0X2lucHV0cyBpbiByZWZfdGVzdHNfYnlfZGlyLml0ZXJpdGVtcygpOgor
ICAgICAgICAgICAgIyAnficgdG8gcGxhY2UgdGhlIHJlZiB0ZXN0cyBhZnRlciBvdGhlciB0ZXN0
cyBhZnRlciBzb3J0ZWQuCisgICAgICAgICAgICBzaGFyZCA9IFRlc3RTaGFyZCgnfnJlZjonICsg
ZGlyZWN0b3J5LCB0ZXN0X2lucHV0cykKKyAgICAgICAgICAgIGlmIHNlbGYuX3Rlc3RfcmVxdWly
ZXNfbG9jayhkaXJlY3RvcnkpOgorICAgICAgICAgICAgICAgIGxvY2tlZF9zaGFyZHMuYXBwZW5k
KHNoYXJkKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICB1bmxvY2tlZF9zaGFy
ZHMuYXBwZW5kKHNoYXJkKQorCiAgICAgICAgICMgU29ydCB0aGUgc2hhcmRzIGJ5IGRpcmVjdG9y
eSBuYW1lLgogICAgICAgICBsb2NrZWRfc2hhcmRzLnNvcnQoa2V5PWxhbWJkYSBzaGFyZDogc2hh
cmQubmFtZSkKICAgICAgICAgdW5sb2NrZWRfc2hhcmRzLnNvcnQoa2V5PWxhbWJkYSBzaGFyZDog
c2hhcmQubmFtZSkKQEAgLTc0MSw3ICs3NzAsNyBAQCBjbGFzcyBNYW5hZ2VyKG9iamVjdCk6CiAg
ICAgICAgIGludGVycnVwdGVkID0gRmFsc2UKIAogICAgICAgICBzZWxmLl9wcmludGVyLnByaW50
X3VwZGF0ZSgnU2hhcmRpbmcgdGVzdHMgLi4uJykKLSAgICAgICAgbG9ja2VkX3NoYXJkcywgdW5s
b2NrZWRfc2hhcmRzID0gc2VsZi5fc2hhcmRfdGVzdHMoZmlsZV9saXN0LCBpbnQoc2VsZi5fb3B0
aW9ucy5jaGlsZF9wcm9jZXNzZXMpLCBzZWxmLl9vcHRpb25zLmZ1bGx5X3BhcmFsbGVsKQorICAg
ICAgICBsb2NrZWRfc2hhcmRzLCB1bmxvY2tlZF9zaGFyZHMgPSBzZWxmLl9zaGFyZF90ZXN0cyhm
aWxlX2xpc3QsIGludChzZWxmLl9vcHRpb25zLmNoaWxkX3Byb2Nlc3NlcyksIHNlbGYuX29wdGlv
bnMuZnVsbHlfcGFyYWxsZWwsIHNlbGYuX29wdGlvbnMuc2hhcmRfcmVmX3Rlc3RzKQogCiAgICAg
ICAgICMgRklYTUU6IFdlIGRvbid0IGhhdmUgYSBnb29kIHdheSB0byBjb29yZGluYXRlIHRoZSB3
b3JrZXJzIHNvIHRoYXQKICAgICAgICAgIyB0aGV5IGRvbid0IHRyeSB0byBydW4gdGhlIHNoYXJk
cyB0aGF0IG5lZWQgYSBsb2NrIGlmIHdlIGRvbid0IGFjdHVhbGx5CmRpZmYgLS1naXQgYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9tYW5hZ2VyX3VuaXR0
ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMv
bWFuYWdlcl91bml0dGVzdC5weQppbmRleCA1YWE4YjMyZWJjZmNhZTljYzk4Y2M4OTU5ZDUxZjdm
MjUxOTNlZDUzLi43MThiZTY5YjM3ZGI4MzY0ZmU4MTkwNmZjZWE5MjMwYWU0MmFiMGQ3IDEwMDY0
NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9t
YW5hZ2VyX3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL2NvbnRyb2xsZXJzL21hbmFnZXJfdW5pdHRlc3QucHkKQEAgLTU5LDkgKzU5LDE2IEBAIGZy
b20gd2Via2l0cHkuY29tbW9uLmhvc3RfbW9jayBpbXBvcnQgTW9ja0hvc3QKIAogCiBjbGFzcyBN
YW5hZ2VyV3JhcHBlcihNYW5hZ2VyKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcmVmX3Rlc3Rz
LCAqKmt3YXJncyk6CisgICAgICAgIE1hbmFnZXIuX19pbml0X18oc2VsZiwgKiprd2FyZ3MpCisg
ICAgICAgIHNlbGYuX3JlZl90ZXN0cyA9IHJlZl90ZXN0cworCiAgICAgZGVmIF9nZXRfdGVzdF9p
bnB1dF9mb3JfZmlsZShzZWxmLCB0ZXN0X2ZpbGUpOgogICAgICAgICByZXR1cm4gdGVzdF9maWxl
CiAKKyAgICBkZWYgX2lzX3JlZl90ZXN0KHNlbGYsIHRlc3RfaW5wdXQpOgorICAgICAgICByZXR1
cm4gdGVzdF9pbnB1dCBpbiBzZWxmLl9yZWZfdGVzdHMKKwogCiBjbGFzcyBTaGFyZGluZ1Rlc3Rz
KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICB0ZXN0X2xpc3QgPSBbCkBAIC03NywxNCArODQsMjEg
QEAgY2xhc3MgU2hhcmRpbmdUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgICJwZXJm
L29iamVjdC1rZXlzLmh0bWwiLAogICAgIF0KIAotICAgIGRlZiBnZXRfc2hhcmRzKHNlbGYsIG51
bV93b3JrZXJzLCBmdWxseV9wYXJhbGxlbCwgdGVzdF9saXN0PU5vbmUsIG1heF9sb2NrZWRfc2hh
cmRzPU5vbmUpOgorICAgIHJlZl90ZXN0cyA9IFsKKyAgICAgICAgImh0dHAvdGVzdHMvc2VjdXJp
dHkvdmlldy1zb3VyY2Utbm8tcmVmcmVzaC5odG1sIiwKKyAgICAgICAgImh0dHAvdGVzdHMvd2Vi
c29ja2V0L3Rlc3RzL3dlYnNvY2tldC1wcm90b2NvbC1pZ25vcmVkLmh0bWwiLAorICAgICAgICAi
aWV0ZXN0Y2VudGVyL0phdmFzY3JpcHQvMTEuMS41XzQtNC1jLTEuaHRtbCIsCisgICAgICAgICJk
b20vaHRtbC9sZXZlbDIvaHRtbC9IVE1MQW5jaG9yRWxlbWVudDA2Lmh0bWwiLAorICAgIF0KKwor
ICAgIGRlZiBnZXRfc2hhcmRzKHNlbGYsIG51bV93b3JrZXJzLCBmdWxseV9wYXJhbGxlbCwgc2hh
cmRfcmVmX3Rlc3RzPUZhbHNlLCB0ZXN0X2xpc3Q9Tm9uZSwgbWF4X2xvY2tlZF9zaGFyZHM9Tm9u
ZSk6CiAgICAgICAgIHRlc3RfbGlzdCA9IHRlc3RfbGlzdCBvciBzZWxmLnRlc3RfbGlzdAogICAg
ICAgICBob3N0ID0gTW9ja0hvc3QoKQogICAgICAgICBwb3J0ID0gaG9zdC5wb3J0X2ZhY3Rvcnku
Z2V0KHBvcnRfbmFtZT0ndGVzdCcpCiAgICAgICAgIHBvcnQuX2ZpbGVzeXN0ZW0gPSBNb2NrRmls
ZVN5c3RlbSgpCiAgICAgICAgIG9wdGlvbnMgPSBNb2NrT3B0aW9ucyhtYXhfbG9ja2VkX3NoYXJk
cz1tYXhfbG9ja2VkX3NoYXJkcykKLSAgICAgICAgc2VsZi5tYW5hZ2VyID0gTWFuYWdlcldyYXBw
ZXIocG9ydD1wb3J0LCBvcHRpb25zPW9wdGlvbnMsIHByaW50ZXI9TW9jaygpKQotICAgICAgICBy
ZXR1cm4gc2VsZi5tYW5hZ2VyLl9zaGFyZF90ZXN0cyh0ZXN0X2xpc3QsIG51bV93b3JrZXJzLCBm
dWxseV9wYXJhbGxlbCkKKyAgICAgICAgc2VsZi5tYW5hZ2VyID0gTWFuYWdlcldyYXBwZXIoc2Vs
Zi5yZWZfdGVzdHMsIHBvcnQ9cG9ydCwgb3B0aW9ucz1vcHRpb25zLCBwcmludGVyPU1vY2soKSkK
KyAgICAgICAgcmV0dXJuIHNlbGYubWFuYWdlci5fc2hhcmRfdGVzdHModGVzdF9saXN0LCBudW1f
d29ya2VycywgZnVsbHlfcGFyYWxsZWwsIHNoYXJkX3JlZl90ZXN0cykKIAogICAgIGRlZiB0ZXN0
X3NoYXJkX2J5X2RpcihzZWxmKToKICAgICAgICAgbG9ja2VkLCB1bmxvY2tlZCA9IHNlbGYuZ2V0
X3NoYXJkcyhudW1fd29ya2Vycz0yLCBmdWxseV9wYXJhbGxlbD1GYWxzZSkKQEAgLTExMCw2ICsx
MjQsMzEgQEAgY2xhc3MgU2hhcmRpbmdUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAg
ICAgICAgVGVzdFNoYXJkKCdpZXRlc3RjZW50ZXIvSmF2YXNjcmlwdCcsCiAgICAgICAgICAgICAg
ICAgICAgICAgIFsnaWV0ZXN0Y2VudGVyL0phdmFzY3JpcHQvMTEuMS41XzQtNC1jLTEuaHRtbCdd
KV0pCiAKKyAgICBkZWYgdGVzdF9zaGFyZF9ieV9kaXJfc2hhcmRpbmdfcmVmX3Rlc3RzKHNlbGYp
OgorICAgICAgICBsb2NrZWQsIHVubG9ja2VkID0gc2VsZi5nZXRfc2hhcmRzKG51bV93b3JrZXJz
PTIsIGZ1bGx5X3BhcmFsbGVsPUZhbHNlLCBzaGFyZF9yZWZfdGVzdHM9VHJ1ZSkKKworICAgICAg
ICAjIE5vdGUgdGhhdCBhbHRob3VnaCB0aGVyZSBhcmUgdGVzdHMgaW4gbXVsdGlwbGUgZGlycyB0
aGF0IG5lZWQgbG9ja3MsCisgICAgICAgICMgdGhleSBhcmUgY3JhbW1lZCBpbnRvIGEgc2luZ2xl
IHNoYXJkIGluIG9yZGVyIHRvIHJlZHVjZSB0aGUgIyBvZgorICAgICAgICAjIHdvcmtlcnMgaGl0
dGluZyB0aGUgc2VydmVyIGF0IG9uY2UuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGxvY2tl
ZCwKKyAgICAgICAgICAgIFtUZXN0U2hhcmQoJ2xvY2tlZF9zaGFyZF8xJywKKyAgICAgICAgICAg
ICAgWydodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy91bmljb2RlLmh0bScsCisgICAgICAgICAg
ICAgICAnaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9zdXBwb3J0ZWQteG1sLWNvbnRlbnQtdHlw
ZXMuaHRtbCcsCisgICAgICAgICAgICAgICAncGVyZi9vYmplY3Qta2V5cy5odG1sJywKKyAgICAg
ICAgICAgICAgICdodHRwL3Rlc3RzL3NlY3VyaXR5L3ZpZXctc291cmNlLW5vLXJlZnJlc2guaHRt
bCcsCisgICAgICAgICAgICAgICAnaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvd2Vic29ja2V0
LXByb3RvY29sLWlnbm9yZWQuaHRtbCddKV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHVu
bG9ja2VkLAorICAgICAgICAgICAgW1Rlc3RTaGFyZCgnYW5pbWF0aW9ucycsCisgICAgICAgICAg
ICAgICAgICAgICAgIFsnYW5pbWF0aW9ucy9rZXlmcmFtZXMuaHRtbCddKSwKKyAgICAgICAgICAg
ICBUZXN0U2hhcmQoJ2RvbS9odG1sL2xldmVsMi9odG1sJywKKyAgICAgICAgICAgICAgICAgICAg
ICAgWydkb20vaHRtbC9sZXZlbDIvaHRtbC9IVE1MQW5jaG9yRWxlbWVudDAzLmh0bWwnXSksCisg
ICAgICAgICAgICAgVGVzdFNoYXJkKCdmYXN0L2NzcycsCisgICAgICAgICAgICAgICAgICAgICAg
IFsnZmFzdC9jc3MvZGlzcGxheS1ub25lLWlubGluZS1zdHlsZS1jaGFuZ2UtY3Jhc2guaHRtbCdd
KSwKKyAgICAgICAgICAgICBUZXN0U2hhcmQoJ35yZWY6ZG9tL2h0bWwvbGV2ZWwyL2h0bWwnLAor
ICAgICAgICAgICAgICAgICAgICAgICBbJ2RvbS9odG1sL2xldmVsMi9odG1sL0hUTUxBbmNob3JF
bGVtZW50MDYuaHRtbCddKSwKKyAgICAgICAgICAgICBUZXN0U2hhcmQoJ35yZWY6aWV0ZXN0Y2Vu
dGVyL0phdmFzY3JpcHQnLAorICAgICAgICAgICAgICAgICAgICAgICBbJ2lldGVzdGNlbnRlci9K
YXZhc2NyaXB0LzExLjEuNV80LTQtYy0xLmh0bWwnXSldKQorCiAgICAgZGVmIHRlc3Rfc2hhcmRf
ZXZlcnlfZmlsZShzZWxmKToKICAgICAgICAgbG9ja2VkLCB1bmxvY2tlZCA9IHNlbGYuZ2V0X3No
YXJkcyhudW1fd29ya2Vycz0yLCBmdWxseV9wYXJhbGxlbD1UcnVlKQogICAgICAgICBzZWxmLmFz
c2VydEVxdWFscyhsb2NrZWQsCkBAIC0xNDIsNiArMTgxLDIzIEBAIGNsYXNzIFNoYXJkaW5nVGVz
dHModW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICAgICAgICAgICAgICAgICAgJ2lldGVzdGNl
bnRlci9KYXZhc2NyaXB0LzExLjEuNV80LTQtYy0xLmh0bWwnLAogICAgICAgICAgICAgICAgICAg
ICAgICAgJ2RvbS9odG1sL2xldmVsMi9odG1sL0hUTUxBbmNob3JFbGVtZW50MDYuaHRtbCddKV0p
CiAKKyAgICBkZWYgdGVzdF9zaGFyZF9pbl90d29fc2hhcmRpbmdfcmVmX3Rlc3RzKHNlbGYpOgor
ICAgICAgICBsb2NrZWQsIHVubG9ja2VkID0gc2VsZi5nZXRfc2hhcmRzKG51bV93b3JrZXJzPTEs
IGZ1bGx5X3BhcmFsbGVsPUZhbHNlLCBzaGFyZF9yZWZfdGVzdHM9VHJ1ZSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbHMobG9ja2VkLAorICAgICAgICAgICAgW1Rlc3RTaGFyZCgnbG9ja2VkX3Rl
c3RzJywKKyAgICAgICAgICAgICAgICAgICAgICAgWydodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0
cy91bmljb2RlLmh0bScsCisgICAgICAgICAgICAgICAgICAgICAgICAnaHR0cC90ZXN0cy94bWxo
dHRwcmVxdWVzdC9zdXBwb3J0ZWQteG1sLWNvbnRlbnQtdHlwZXMuaHRtbCcsCisgICAgICAgICAg
ICAgICAgICAgICAgICAncGVyZi9vYmplY3Qta2V5cy5odG1sJywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICdodHRwL3Rlc3RzL3NlY3VyaXR5L3ZpZXctc291cmNlLW5vLXJlZnJlc2guaHRtbCcs
CisgICAgICAgICAgICAgICAgICAgICAgICAnaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvd2Vi
c29ja2V0LXByb3RvY29sLWlnbm9yZWQuaHRtbCddKV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWxzKHVubG9ja2VkLAorICAgICAgICAgICAgW1Rlc3RTaGFyZCgndW5sb2NrZWRfdGVzdHMnLAor
ICAgICAgICAgICAgICAgICAgICAgICBbJ2FuaW1hdGlvbnMva2V5ZnJhbWVzLmh0bWwnLAorICAg
ICAgICAgICAgICAgICAgICAgICAgJ2Zhc3QvY3NzL2Rpc3BsYXktbm9uZS1pbmxpbmUtc3R5bGUt
Y2hhbmdlLWNyYXNoLmh0bWwnLAorICAgICAgICAgICAgICAgICAgICAgICAgJ2RvbS9odG1sL2xl
dmVsMi9odG1sL0hUTUxBbmNob3JFbGVtZW50MDMuaHRtbCcsCisgICAgICAgICAgICAgICAgICAg
ICAgICAnaWV0ZXN0Y2VudGVyL0phdmFzY3JpcHQvMTEuMS41XzQtNC1jLTEuaHRtbCcsCisgICAg
ICAgICAgICAgICAgICAgICAgICAnZG9tL2h0bWwvbGV2ZWwyL2h0bWwvSFRNTEFuY2hvckVsZW1l
bnQwNi5odG1sJ10pXSkKKwogICAgIGRlZiB0ZXN0X3NoYXJkX2luX3R3b19oYXNfbm9fbG9ja2Vk
X3NoYXJkcyhzZWxmKToKICAgICAgICAgbG9ja2VkLCB1bmxvY2tlZCA9IHNlbGYuZ2V0X3NoYXJk
cyhudW1fd29ya2Vycz0xLCBmdWxseV9wYXJhbGxlbD1GYWxzZSwKICAgICAgICAgICAgICB0ZXN0
X2xpc3Q9WydhbmltYXRpb25zL2tleWZyYW1lLmh0bWwnXSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL3dvcmtlci5weSBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL3dvcmtlci5weQppbmRl
eCA4MzdhZWE4NmJjNmZiMjNiYzI4ZjRmMjY4NzYyNzk2ZDBmNGE3ZTQxLi4zNzg4MjZjNTFmOGUw
OWRmNjVhMjgwMGQ3NWZjNjVlMmJhMWFlNThiIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy93b3JrZXIucHkKKysrIGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvd29ya2VyLnB5CkBAIC04Myw3
ICs4Myw5IEBAIGNsYXNzIFdvcmtlcihvYmplY3QpOgogICAgICAgICBzZWxmLl9jYWxsZXIucG9z
dCgnZmluaXNoZWRfdGVzdF9saXN0JywgdGVzdF9saXN0X25hbWUsIGxlbih0ZXN0X2lucHV0cyks
IGVsYXBzZWRfdGltZSkKIAogICAgIGRlZiBfdXBkYXRlX3Rlc3RfaW5wdXQoc2VsZiwgdGVzdF9p
bnB1dCk6Ci0gICAgICAgIHRlc3RfaW5wdXQucmVmZXJlbmNlX2ZpbGVzID0gc2VsZi5fcG9ydC5y
ZWZlcmVuY2VfZmlsZXModGVzdF9pbnB1dC50ZXN0X25hbWUpCisgICAgICAgIGlmIHRlc3RfaW5w
dXQucmVmZXJlbmNlX2ZpbGVzIGlzIE5vbmU6CisgICAgICAgICAgICAjIExhenkgaW5pdGlhbGl6
YXRpb24uCisgICAgICAgICAgICB0ZXN0X2lucHV0LnJlZmVyZW5jZV9maWxlcyA9IHNlbGYuX3Bv
cnQucmVmZXJlbmNlX2ZpbGVzKHRlc3RfaW5wdXQudGVzdF9uYW1lKQogICAgICAgICBpZiB0ZXN0
X2lucHV0LnJlZmVyZW5jZV9maWxlczoKICAgICAgICAgICAgIHRlc3RfaW5wdXQuc2hvdWxkX3J1
bl9waXhlbF90ZXN0ID0gVHJ1ZQogICAgICAgICBlbGlmIHNlbGYuX29wdGlvbnMucGl4ZWxfdGVz
dHM6CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0
L2Nocm9taXVtX2FuZHJvaWQucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L2Nocm9taXVtX2FuZHJvaWQucHkKaW5kZXggNTY3ZjNhZWE4YmYzMDJmZWNlMDYwYTYw
NjRmOWZhYWQ2MGNlNmU1Mi4uNDM1ZDM2NGJiZTMyMmYwMGVkYjYxNzFkOTZiMzg1MjBlNDNlNDJl
ZSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9j
aHJvbWl1bV9hbmRyb2lkLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvY2hyb21pdW1fYW5kcm9pZC5weQpAQCAtMTU4LDYgKzE1OCw5IEBAIGNsYXNzIENo
cm9taXVtQW5kcm9pZFBvcnQoY2hyb21pdW0uQ2hyb21pdW1Qb3J0KToKICAgICAgICAgIyBUaGUg
Q2hyb21pdW0gcG9ydCBmb3IgQW5kcm9pZCBhbHdheXMgdXNlcyB0aGUgaGFyZHdhcmUgR1BVIHBh
dGguCiAgICAgICAgIHNlbGYuX29wdGlvbnMuZW5hYmxlX2hhcmR3YXJlX2dwdSA9IFRydWUKIAor
ICAgICAgICAjIFNoYXJkIHJlZiB0ZXN0cyBzbyB0aGF0IHRoZXkgcnVuIHRvZ2V0aGVyIHRvIGF2
b2lkIHJlcGVhdGVkbHkgZHJpdmVyIHJlc3RhcnRzLgorICAgICAgICBzZWxmLl9vcHRpb25zLnNo
YXJkX3JlZl90ZXN0cyA9IFRydWUKKwogICAgICAgICBzZWxmLl9vcGVyYXRpbmdfc3lzdGVtID0g
J2FuZHJvaWQnCiAgICAgICAgIHNlbGYuX3ZlcnNpb24gPSAnaWNlY3JlYW1zYW5kd2ljaCcKICAg
ICAgICAgc2VsZi5fb3JpZ2luYWxfZ292ZXJub3IgPSBOb25lCmRpZmYgLS1naXQgYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5IGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weQppbmRleCA5
NjFjYmE4NDgyYjU3MWRmNmFiYWU0YTUzNWQ4YmM0ZTdhZjIxMjllLi5hN2I4MDZjNGQ5ZWI1MGUz
YTBkMWU0MmZmNzAzMGMyZTk4NjdmZDI0IDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMucHkKQEAgLTQyMCw2ICs0MjAs
MTEgQEAgZGVmIHBhcnNlX2FyZ3MoYXJncz1Ob25lKToKICAgICAgICAgICAgIGhlbHA9IkRvbid0
IHJlLXRyeSBhbnkgdGVzdHMgdGhhdCBwcm9kdWNlIHVuZXhwZWN0ZWQgcmVzdWx0cy4iKSwKICAg
ICAgICAgb3B0cGFyc2UubWFrZV9vcHRpb24oIi0tbWF4LWxvY2tlZC1zaGFyZHMiLCB0eXBlPSJp
bnQiLAogICAgICAgICAgICAgaGVscD0iU2V0IHRoZSBtYXhpbXVtIG51bWJlciBvZiBsb2NrZWQg
c2hhcmRzIiksCisgICAgICAgICMgRm9yIGNocm9taXVtLWFuZHJvaWQgdG8gcmVkdWNlIHRoZSBj
b3N0IG9mIHJlc3RhcnRpbmcgdGhlIGRyaXZlci4KKyAgICAgICAgIyBGSVhNRTogUmVtb3ZlIHRo
ZSBvcHRpb24gb25jZSBwZXItdGVzdCBhcmcgaXMgc3VwcG9ydGVkOgorICAgICAgICAjIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTUzOS4KKyAgICAgICAgb3B0cGFy
c2UubWFrZV9vcHRpb24oIi0tc2hhcmQtcmVmLXRlc3RzIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwK
KyAgICAgICAgICAgIGhlbHA9IlJ1biByZWYgdGVzdHMgaW4gZGVkaWNhdGVkIHNoYXJkKHMpLiBF
bmFibGVkIG9uIEFuZHJvaWQgYnkgZGVmYXVsdC4iKSwKICAgICBdKSkKIAogICAgIG9wdGlvbl9n
cm91cF9kZWZpbml0aW9ucy5hcHBlbmQoKCJNaXNjZWxsYW5lb3VzIE9wdGlvbnMiLCBbCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>152889</attachid>
            <date>2012-07-17 17:51:59 -0700</date>
            <delta_ts>2012-07-17 19:45:59 -0700</delta_ts>
            <desc>Rebased for landing</desc>
            <filename>bug-91533-20120717175159.patch</filename>
            <type>text/plain</type>
            <size>16081</size>
            <attacher name="Xianzhu Wang">wangxianzhu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIyOTA1CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYWRlMTQ0ZmRmNzFjMWQ2NmU4Yjg4Y2FjZmQyZjY4Yjhh
ZjlkMjRkNC4uM2M1MjM4MDkwMjBlM2U0YjJjNDc1OTFiNGEzNjMxZTU4MGI4N2U5NyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMz
IEBACisyMDEyLTA3LTE3ICBYaWFuemh1IFdhbmcgIDx3YW5neGlhbnpodUBjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgW0Nocm9taXVtLUFuZHJvaWRdIFJ1biByZWYgdGVzdHMgdG9nZXRoZXIgdG8g
YXZvaWQgZXhwZW5zaXZlIGRyaXZlciByZXN0YXJ0cworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTE1MzMKKworICAgICAgICBSZXZpZXdlZCBieSBEaXJr
IFByYW5rZS4KKworICAgICAgICBUaG91Z2ggRHJpdmVyUHJveHkgbWFpbnRhaW5zIHR3byBkcml2
ZXJzIHRvIHN1cHBvcnQgcGl4ZWwgdGVzdHMgYW5kIG5vbi1waXhlbCB0ZXN0cywKKyAgICAgICAg
Y2hyb21pdW0tYW5kcm9pZCB1c2VzIGFub3RoZXIgd2F5IGJlY2F1c2UgaXQgY2FuJ3Qgc3VwcG9y
dCBtdWx0aXBsZSBkcml2ZXJzLgorICAgICAgICBJdCByZXN0YXJ0cyB0aGUgZHJpdmVyIHdoZW4g
cGl4ZWwtdGVzdCBtb2RlIGNoYW5nZXMgKGUuZy4gd2hlbiBydW5uaW5nIGEgcmVmIHRlc3QgYWZ0
ZXIKKyAgICAgICAgYSBub3JtYWwgdGVzdCBpbiAtLW5vLXBpeGVsLXRlc3RzIG1vZGUpLiBIb3dl
dmVyIHJlc3RhcnRpbmcgZHJpdmVyIGlzIGV4cGVuc2l2ZSBvbgorICAgICAgICBBbmRyb2lkIChz
ZXZlcmFsIHNlY29uZHMgZWFjaCB0aW1lKS4gVG8gcmVkdWNlIHRoZSBjb3N0LCBhIGNvbW1hbmQg
bGluZSBvcHRpb24KKyAgICAgICAgJy0tc2hhcmQtcmVmLXRlc3RzJyBpcyBhZGRlZCB0byBncm91
cCByZWYgdGVzdHMgaW4gZGVkaWNhdGVkIHNoYXJkcy4KKyAgICAgICAgVGhlIG9wdGlvbiBpcyBi
eSBkZWZhdWx0IGVuYWJsZWQgb24gQW5kcm9pZC4KKworICAgICAgICBXaWxsIHJlbW92ZSB0aGUg
b3B0aW9uIG9uY2UgRFJUIHN1cHBvcnRzIHN3aXRjaGluZyBwaXhlbCB0ZXN0IG1vZGUgZHVyaW5n
IG9uZSBydW4uCisgICAgICAgIChodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9OTE1MzgsIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTUzOSkK
KworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21h
bmFnZXIucHk6CisgICAgICAgIChNYW5hZ2VyLl9zaGFyZF90ZXN0cyk6CisgICAgICAgIChNYW5h
Z2VyLl9zaGFyZF9pbl90d28pOgorICAgICAgICAoTWFuYWdlci5fc2hhcmRfYnlfZGlyZWN0b3J5
KToKKyAgICAgICAgKE1hbmFnZXIuX3J1bl90ZXN0cyk6CisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvd29ya2VyLnB5OgorICAgICAgICAoV29ya2Vy
Ll91cGRhdGVfdGVzdF9pbnB1dCk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC9jaHJvbWl1bV9hbmRyb2lkLnB5OgorICAgICAgICAoQ2hyb21pdW1BbmRyb2lk
UG9ydC5fX2luaXRfXyk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cnVuX3dlYmtpdF90ZXN0cy5weToKKyAgICAgICAgKHBhcnNlX2FyZ3MpOgorCiAyMDEyLTA3LTE3
ICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIG5yd3Q6IHJl
bmFtZSBwcmludGVyLnByaW50X3VwZGF0ZSB0byBwcmludGVyLndyaXRlX3VwZGF0ZSB0byBtYXRj
aCBtZXRlcmVkX3N0cmVhbQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvY29udHJvbGxlcnMvbWFuYWdlci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21hbmFnZXIucHkKaW5kZXggMzI1NzYzYzFiMzE1YjFm
MDNjZDNmZTVmNzZjNzhlNGI4MTVkYzBmZC4uMGQwN2QzYTY4OWFmNjU4YzkwZTc4OWMyYjU3MDhj
OTI5NGUzZGJlZiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvY29udHJvbGxlcnMvbWFuYWdlci5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9jb250cm9sbGVycy9tYW5hZ2VyLnB5CkBAIC01NTAsNyArNTUwLDEzIEBAIGNs
YXNzIE1hbmFnZXIob2JqZWN0KToKICAgICBkZWYgX3Rlc3RfaXNfc2xvdyhzZWxmLCB0ZXN0X2Zp
bGUpOgogICAgICAgICByZXR1cm4gc2VsZi5fZXhwZWN0YXRpb25zLmhhc19tb2RpZmllcih0ZXN0
X2ZpbGUsIHRlc3RfZXhwZWN0YXRpb25zLlNMT1cpCiAKLSAgICBkZWYgX3NoYXJkX3Rlc3RzKHNl
bGYsIHRlc3RfZmlsZXMsIG51bV93b3JrZXJzLCBmdWxseV9wYXJhbGxlbCk6CisgICAgZGVmIF9p
c19yZWZfdGVzdChzZWxmLCB0ZXN0X2lucHV0KToKKyAgICAgICAgaWYgdGVzdF9pbnB1dC5yZWZl
cmVuY2VfZmlsZXMgaXMgTm9uZToKKyAgICAgICAgICAgICMgTGF6eSBpbml0aWFsaXphdGlvbi4K
KyAgICAgICAgICAgIHRlc3RfaW5wdXQucmVmZXJlbmNlX2ZpbGVzID0gc2VsZi5fcG9ydC5yZWZl
cmVuY2VfZmlsZXModGVzdF9pbnB1dC50ZXN0X25hbWUpCisgICAgICAgIHJldHVybiBib29sKHRl
c3RfaW5wdXQucmVmZXJlbmNlX2ZpbGVzKQorCisgICAgZGVmIF9zaGFyZF90ZXN0cyhzZWxmLCB0
ZXN0X2ZpbGVzLCBudW1fd29ya2VycywgZnVsbHlfcGFyYWxsZWwsIHNoYXJkX3JlZl90ZXN0cyk6
CiAgICAgICAgICIiIkdyb3VwcyB0ZXN0cyBpbnRvIGJhdGNoZXMuCiAgICAgICAgIFRoaXMgaGVs
cHMgZW5zdXJlIHRoYXQgdGVzdHMgdGhhdCBkZXBlbmQgb24gZWFjaCBvdGhlciAoYWthIGJhZCB0
ZXN0cyEpCiAgICAgICAgIGNvbnRpbnVlIHRvIHJ1biB0b2dldGhlciBhcyBtb3N0IGNyb3NzLXRl
c3RzIGRlcGVuZGVuY2llcyB0ZW5kIHRvCkBAIC01NjQsMzAgKzU3MCw0MCBAQCBjbGFzcyBNYW5h
Z2VyKG9iamVjdCk6CiAgICAgICAgICMgb3duIGNsYXNzIG9yIG1vZHVsZS4gQ29uc2lkZXIgZ3Jv
dXBpbmcgaXQgd2l0aCB0aGUgY2h1bmtpbmcgbG9naWMKICAgICAgICAgIyBpbiBwcmVwYXJlX2xp
c3RzIGFzIHdlbGwuCiAgICAgICAgIGlmIG51bV93b3JrZXJzID09IDE6Ci0gICAgICAgICAgICBy
ZXR1cm4gc2VsZi5fc2hhcmRfaW5fdHdvKHRlc3RfZmlsZXMpCisgICAgICAgICAgICByZXR1cm4g
c2VsZi5fc2hhcmRfaW5fdHdvKHRlc3RfZmlsZXMsIHNoYXJkX3JlZl90ZXN0cykKICAgICAgICAg
ZWxpZiBmdWxseV9wYXJhbGxlbDoKICAgICAgICAgICAgIHJldHVybiBzZWxmLl9zaGFyZF9ldmVy
eV9maWxlKHRlc3RfZmlsZXMpCi0gICAgICAgIHJldHVybiBzZWxmLl9zaGFyZF9ieV9kaXJlY3Rv
cnkodGVzdF9maWxlcywgbnVtX3dvcmtlcnMpCisgICAgICAgIHJldHVybiBzZWxmLl9zaGFyZF9i
eV9kaXJlY3RvcnkodGVzdF9maWxlcywgbnVtX3dvcmtlcnMsIHNoYXJkX3JlZl90ZXN0cykKIAot
ICAgIGRlZiBfc2hhcmRfaW5fdHdvKHNlbGYsIHRlc3RfZmlsZXMpOgorICAgIGRlZiBfc2hhcmRf
aW5fdHdvKHNlbGYsIHRlc3RfZmlsZXMsIHNoYXJkX3JlZl90ZXN0cyk6CiAgICAgICAgICIiIlJl
dHVybnMgdHdvIGxpc3RzIG9mIHNoYXJkcywgb25lIHdpdGggYWxsIHRoZSB0ZXN0cyByZXF1aXJp
bmcgYSBsb2NrIGFuZCBvbmUgd2l0aCB0aGUgcmVzdC4KIAogICAgICAgICBUaGlzIGlzIHVzZWQg
d2hlbiB0aGVyZSdzIG9ubHkgb25lIHdvcmtlciwgdG8gbWluaW1pemUgdGhlIHBlci1zaGFyZCBv
dmVyaGVhZC4iIiIKICAgICAgICAgbG9ja2VkX2lucHV0cyA9IFtdCisgICAgICAgIGxvY2tlZF9y
ZWZfdGVzdF9pbnB1dHMgPSBbXQogICAgICAgICB1bmxvY2tlZF9pbnB1dHMgPSBbXQorICAgICAg
ICB1bmxvY2tlZF9yZWZfdGVzdF9pbnB1dHMgPSBbXQogICAgICAgICBmb3IgdGVzdF9maWxlIGlu
IHRlc3RfZmlsZXM6CiAgICAgICAgICAgICB0ZXN0X2lucHV0ID0gc2VsZi5fZ2V0X3Rlc3RfaW5w
dXRfZm9yX2ZpbGUodGVzdF9maWxlKQogICAgICAgICAgICAgaWYgc2VsZi5fdGVzdF9yZXF1aXJl
c19sb2NrKHRlc3RfZmlsZSk6Ci0gICAgICAgICAgICAgICAgbG9ja2VkX2lucHV0cy5hcHBlbmQo
dGVzdF9pbnB1dCkKKyAgICAgICAgICAgICAgICBpZiBzaGFyZF9yZWZfdGVzdHMgYW5kIHNlbGYu
X2lzX3JlZl90ZXN0KHRlc3RfaW5wdXQpOgorICAgICAgICAgICAgICAgICAgICBsb2NrZWRfcmVm
X3Rlc3RfaW5wdXRzLmFwcGVuZCh0ZXN0X2lucHV0KQorICAgICAgICAgICAgICAgIGVsc2U6Cisg
ICAgICAgICAgICAgICAgICAgIGxvY2tlZF9pbnB1dHMuYXBwZW5kKHRlc3RfaW5wdXQpCiAgICAg
ICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHVubG9ja2VkX2lucHV0cy5hcHBlbmQodGVz
dF9pbnB1dCkKKyAgICAgICAgICAgICAgICBpZiBzaGFyZF9yZWZfdGVzdHMgYW5kIHNlbGYuX2lz
X3JlZl90ZXN0KHRlc3RfaW5wdXQpOgorICAgICAgICAgICAgICAgICAgICB1bmxvY2tlZF9yZWZf
dGVzdF9pbnB1dHMuYXBwZW5kKHRlc3RfaW5wdXQpCisgICAgICAgICAgICAgICAgZWxzZToKKyAg
ICAgICAgICAgICAgICAgICAgdW5sb2NrZWRfaW5wdXRzLmFwcGVuZCh0ZXN0X2lucHV0KQorICAg
ICAgICBsb2NrZWRfaW5wdXRzLmV4dGVuZChsb2NrZWRfcmVmX3Rlc3RfaW5wdXRzKQorICAgICAg
ICB1bmxvY2tlZF9pbnB1dHMuZXh0ZW5kKHVubG9ja2VkX3JlZl90ZXN0X2lucHV0cykKIAogICAg
ICAgICBsb2NrZWRfc2hhcmRzID0gW10KICAgICAgICAgdW5sb2NrZWRfc2hhcmRzID0gW10KICAg
ICAgICAgaWYgbG9ja2VkX2lucHV0czoKICAgICAgICAgICAgIGxvY2tlZF9zaGFyZHMgPSBbVGVz
dFNoYXJkKCdsb2NrZWRfdGVzdHMnLCBsb2NrZWRfaW5wdXRzKV0KICAgICAgICAgaWYgdW5sb2Nr
ZWRfaW5wdXRzOgotICAgICAgICAgICAgdW5sb2NrZWRfc2hhcmRzID0gW1Rlc3RTaGFyZCgndW5s
b2NrZWRfdGVzdHMnLCB1bmxvY2tlZF9pbnB1dHMpXQorICAgICAgICAgICAgdW5sb2NrZWRfc2hh
cmRzLmFwcGVuZChUZXN0U2hhcmQoJ3VubG9ja2VkX3Rlc3RzJywgdW5sb2NrZWRfaW5wdXRzKSkK
IAogICAgICAgICByZXR1cm4gbG9ja2VkX3NoYXJkcywgdW5sb2NrZWRfc2hhcmRzCiAKQEAgLTYx
MCw3ICs2MjYsNyBAQCBjbGFzcyBNYW5hZ2VyKG9iamVjdCk6CiAKICAgICAgICAgcmV0dXJuIGxv
Y2tlZF9zaGFyZHMsIHVubG9ja2VkX3NoYXJkcwogCi0gICAgZGVmIF9zaGFyZF9ieV9kaXJlY3Rv
cnkoc2VsZiwgdGVzdF9maWxlcywgbnVtX3dvcmtlcnMpOgorICAgIGRlZiBfc2hhcmRfYnlfZGly
ZWN0b3J5KHNlbGYsIHRlc3RfZmlsZXMsIG51bV93b3JrZXJzLCBzaGFyZF9yZWZfdGVzdHMpOgog
ICAgICAgICAiIiJSZXR1cm5zIHR3byBsaXN0cyBvZiBzaGFyZHMsIGVhY2ggc2hhcmQgY29udGFp
bmluZyBhbGwgdGhlIGZpbGVzIGluIGEgZGlyZWN0b3J5LgogCiAgICAgICAgIFRoaXMgaXMgdGhl
IGRlZmF1bHQgbW9kZSwgYW5kIGdldHMgYXMgbXVjaCBwYXJhbGxlbGlzbSBhcyB3ZSBjYW4gd2hp
bGUKQEAgLTYxOCwxMyArNjM0LDE4IEBAIGNsYXNzIE1hbmFnZXIob2JqZWN0KToKICAgICAgICAg
bG9ja2VkX3NoYXJkcyA9IFtdCiAgICAgICAgIHVubG9ja2VkX3NoYXJkcyA9IFtdCiAgICAgICAg
IHRlc3RzX2J5X2RpciA9IHt9CisgICAgICAgIHJlZl90ZXN0c19ieV9kaXIgPSB7fQogICAgICAg
ICAjIEZJWE1FOiBHaXZlbiB0aGF0IHRoZSB0ZXN0cyBhcmUgYWxyZWFkeSBzb3J0ZWQgYnkgZGly
ZWN0b3J5LAogICAgICAgICAjIHdlIGNhbiBwcm9iYWJseSByZXdyaXRlIHRoaXMgdG8gYmUgY2xl
YXJlciBhbmQgZmFzdGVyLgogICAgICAgICBmb3IgdGVzdF9maWxlIGluIHRlc3RfZmlsZXM6CiAg
ICAgICAgICAgICBkaXJlY3RvcnkgPSBzZWxmLl9nZXRfZGlyX2Zvcl90ZXN0X2ZpbGUodGVzdF9m
aWxlKQogICAgICAgICAgICAgdGVzdF9pbnB1dCA9IHNlbGYuX2dldF90ZXN0X2lucHV0X2Zvcl9m
aWxlKHRlc3RfZmlsZSkKLSAgICAgICAgICAgIHRlc3RzX2J5X2Rpci5zZXRkZWZhdWx0KGRpcmVj
dG9yeSwgW10pCi0gICAgICAgICAgICB0ZXN0c19ieV9kaXJbZGlyZWN0b3J5XS5hcHBlbmQodGVz
dF9pbnB1dCkKKyAgICAgICAgICAgIGlmIHNoYXJkX3JlZl90ZXN0cyBhbmQgc2VsZi5faXNfcmVm
X3Rlc3QodGVzdF9pbnB1dCk6CisgICAgICAgICAgICAgICAgcmVmX3Rlc3RzX2J5X2Rpci5zZXRk
ZWZhdWx0KGRpcmVjdG9yeSwgW10pCisgICAgICAgICAgICAgICAgcmVmX3Rlc3RzX2J5X2Rpcltk
aXJlY3RvcnldLmFwcGVuZCh0ZXN0X2lucHV0KQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAg
ICAgICAgICB0ZXN0c19ieV9kaXIuc2V0ZGVmYXVsdChkaXJlY3RvcnksIFtdKQorICAgICAgICAg
ICAgICAgIHRlc3RzX2J5X2RpcltkaXJlY3RvcnldLmFwcGVuZCh0ZXN0X2lucHV0KQogCiAgICAg
ICAgIGZvciBkaXJlY3RvcnksIHRlc3RfaW5wdXRzIGluIHRlc3RzX2J5X2Rpci5pdGVyaXRlbXMo
KToKICAgICAgICAgICAgIHNoYXJkID0gVGVzdFNoYXJkKGRpcmVjdG9yeSwgdGVzdF9pbnB1dHMp
CkBAIC02MzMsNiArNjU0LDE0IEBAIGNsYXNzIE1hbmFnZXIob2JqZWN0KToKICAgICAgICAgICAg
IGVsc2U6CiAgICAgICAgICAgICAgICAgdW5sb2NrZWRfc2hhcmRzLmFwcGVuZChzaGFyZCkKIAor
ICAgICAgICBmb3IgZGlyZWN0b3J5LCB0ZXN0X2lucHV0cyBpbiByZWZfdGVzdHNfYnlfZGlyLml0
ZXJpdGVtcygpOgorICAgICAgICAgICAgIyAnficgdG8gcGxhY2UgdGhlIHJlZiB0ZXN0cyBhZnRl
ciBvdGhlciB0ZXN0cyBhZnRlciBzb3J0ZWQuCisgICAgICAgICAgICBzaGFyZCA9IFRlc3RTaGFy
ZCgnfnJlZjonICsgZGlyZWN0b3J5LCB0ZXN0X2lucHV0cykKKyAgICAgICAgICAgIGlmIHNlbGYu
X3Rlc3RfcmVxdWlyZXNfbG9jayhkaXJlY3RvcnkpOgorICAgICAgICAgICAgICAgIGxvY2tlZF9z
aGFyZHMuYXBwZW5kKHNoYXJkKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICB1
bmxvY2tlZF9zaGFyZHMuYXBwZW5kKHNoYXJkKQorCiAgICAgICAgICMgU29ydCB0aGUgc2hhcmRz
IGJ5IGRpcmVjdG9yeSBuYW1lLgogICAgICAgICBsb2NrZWRfc2hhcmRzLnNvcnQoa2V5PWxhbWJk
YSBzaGFyZDogc2hhcmQubmFtZSkKICAgICAgICAgdW5sb2NrZWRfc2hhcmRzLnNvcnQoa2V5PWxh
bWJkYSBzaGFyZDogc2hhcmQubmFtZSkKQEAgLTcxNCw3ICs3NDMsNyBAQCBjbGFzcyBNYW5hZ2Vy
KG9iamVjdCk6CiAgICAgICAgIGludGVycnVwdGVkID0gRmFsc2UKIAogICAgICAgICBzZWxmLl9w
cmludGVyLndyaXRlX3VwZGF0ZSgnU2hhcmRpbmcgdGVzdHMgLi4uJykKLSAgICAgICAgbG9ja2Vk
X3NoYXJkcywgdW5sb2NrZWRfc2hhcmRzID0gc2VsZi5fc2hhcmRfdGVzdHMoZmlsZV9saXN0LCBp
bnQoc2VsZi5fb3B0aW9ucy5jaGlsZF9wcm9jZXNzZXMpLCBzZWxmLl9vcHRpb25zLmZ1bGx5X3Bh
cmFsbGVsKQorICAgICAgICBsb2NrZWRfc2hhcmRzLCB1bmxvY2tlZF9zaGFyZHMgPSBzZWxmLl9z
aGFyZF90ZXN0cyhmaWxlX2xpc3QsIGludChzZWxmLl9vcHRpb25zLmNoaWxkX3Byb2Nlc3Nlcyks
IHNlbGYuX29wdGlvbnMuZnVsbHlfcGFyYWxsZWwsIHNlbGYuX29wdGlvbnMuc2hhcmRfcmVmX3Rl
c3RzKQogCiAgICAgICAgICMgRklYTUU6IFdlIGRvbid0IGhhdmUgYSBnb29kIHdheSB0byBjb29y
ZGluYXRlIHRoZSB3b3JrZXJzIHNvIHRoYXQKICAgICAgICAgIyB0aGV5IGRvbid0IHRyeSB0byBy
dW4gdGhlIHNoYXJkcyB0aGF0IG5lZWQgYSBsb2NrIGlmIHdlIGRvbid0IGFjdHVhbGx5CmRpZmYg
LS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9t
YW5hZ2VyX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
Y29udHJvbGxlcnMvbWFuYWdlcl91bml0dGVzdC5weQppbmRleCA3YmU2YmQwNDA4OWQyNTQxNzZl
MDUyMWFhM2EyZTA2MDg2NTJiOGNiLi5hZTIwYThhNTAyMjM1M2I3ZjI5MTYyNjM5YTU5ZmU2M2Nj
Nzk0NWQ1IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9j
b250cm9sbGVycy9tYW5hZ2VyX3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21hbmFnZXJfdW5pdHRlc3QucHkKQEAgLTU5LDkg
KzU5LDE2IEBAIGZyb20gd2Via2l0cHkuY29tbW9uLmhvc3RfbW9jayBpbXBvcnQgTW9ja0hvc3QK
IAogCiBjbGFzcyBNYW5hZ2VyV3JhcHBlcihNYW5hZ2VyKToKKyAgICBkZWYgX19pbml0X18oc2Vs
ZiwgcmVmX3Rlc3RzLCAqKmt3YXJncyk6CisgICAgICAgIE1hbmFnZXIuX19pbml0X18oc2VsZiwg
Kiprd2FyZ3MpCisgICAgICAgIHNlbGYuX3JlZl90ZXN0cyA9IHJlZl90ZXN0cworCiAgICAgZGVm
IF9nZXRfdGVzdF9pbnB1dF9mb3JfZmlsZShzZWxmLCB0ZXN0X2ZpbGUpOgogICAgICAgICByZXR1
cm4gdGVzdF9maWxlCiAKKyAgICBkZWYgX2lzX3JlZl90ZXN0KHNlbGYsIHRlc3RfaW5wdXQpOgor
ICAgICAgICByZXR1cm4gdGVzdF9pbnB1dCBpbiBzZWxmLl9yZWZfdGVzdHMKKwogCiBjbGFzcyBT
aGFyZGluZ1Rlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICB0ZXN0X2xpc3QgPSBbCkBAIC03
NywxNCArODQsMjEgQEAgY2xhc3MgU2hhcmRpbmdUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAg
ICAgICAgICJwZXJmL29iamVjdC1rZXlzLmh0bWwiLAogICAgIF0KIAotICAgIGRlZiBnZXRfc2hh
cmRzKHNlbGYsIG51bV93b3JrZXJzLCBmdWxseV9wYXJhbGxlbCwgdGVzdF9saXN0PU5vbmUsIG1h
eF9sb2NrZWRfc2hhcmRzPU5vbmUpOgorICAgIHJlZl90ZXN0cyA9IFsKKyAgICAgICAgImh0dHAv
dGVzdHMvc2VjdXJpdHkvdmlldy1zb3VyY2Utbm8tcmVmcmVzaC5odG1sIiwKKyAgICAgICAgImh0
dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL3dlYnNvY2tldC1wcm90b2NvbC1pZ25vcmVkLmh0bWwi
LAorICAgICAgICAiaWV0ZXN0Y2VudGVyL0phdmFzY3JpcHQvMTEuMS41XzQtNC1jLTEuaHRtbCIs
CisgICAgICAgICJkb20vaHRtbC9sZXZlbDIvaHRtbC9IVE1MQW5jaG9yRWxlbWVudDA2Lmh0bWwi
LAorICAgIF0KKworICAgIGRlZiBnZXRfc2hhcmRzKHNlbGYsIG51bV93b3JrZXJzLCBmdWxseV9w
YXJhbGxlbCwgc2hhcmRfcmVmX3Rlc3RzPUZhbHNlLCB0ZXN0X2xpc3Q9Tm9uZSwgbWF4X2xvY2tl
ZF9zaGFyZHM9Tm9uZSk6CiAgICAgICAgIHRlc3RfbGlzdCA9IHRlc3RfbGlzdCBvciBzZWxmLnRl
c3RfbGlzdAogICAgICAgICBob3N0ID0gTW9ja0hvc3QoKQogICAgICAgICBwb3J0ID0gaG9zdC5w
b3J0X2ZhY3RvcnkuZ2V0KHBvcnRfbmFtZT0ndGVzdCcpCiAgICAgICAgIHBvcnQuX2ZpbGVzeXN0
ZW0gPSBNb2NrRmlsZVN5c3RlbSgpCiAgICAgICAgIG9wdGlvbnMgPSBNb2NrT3B0aW9ucyhtYXhf
bG9ja2VkX3NoYXJkcz1tYXhfbG9ja2VkX3NoYXJkcykKLSAgICAgICAgc2VsZi5tYW5hZ2VyID0g
TWFuYWdlcldyYXBwZXIocG9ydD1wb3J0LCBvcHRpb25zPW9wdGlvbnMsIHByaW50ZXI9TW9jaygp
KQotICAgICAgICByZXR1cm4gc2VsZi5tYW5hZ2VyLl9zaGFyZF90ZXN0cyh0ZXN0X2xpc3QsIG51
bV93b3JrZXJzLCBmdWxseV9wYXJhbGxlbCkKKyAgICAgICAgc2VsZi5tYW5hZ2VyID0gTWFuYWdl
cldyYXBwZXIoc2VsZi5yZWZfdGVzdHMsIHBvcnQ9cG9ydCwgb3B0aW9ucz1vcHRpb25zLCBwcmlu
dGVyPU1vY2soKSkKKyAgICAgICAgcmV0dXJuIHNlbGYubWFuYWdlci5fc2hhcmRfdGVzdHModGVz
dF9saXN0LCBudW1fd29ya2VycywgZnVsbHlfcGFyYWxsZWwsIHNoYXJkX3JlZl90ZXN0cykKIAog
ICAgIGRlZiB0ZXN0X3NoYXJkX2J5X2RpcihzZWxmKToKICAgICAgICAgbG9ja2VkLCB1bmxvY2tl
ZCA9IHNlbGYuZ2V0X3NoYXJkcyhudW1fd29ya2Vycz0yLCBmdWxseV9wYXJhbGxlbD1GYWxzZSkK
QEAgLTExMCw2ICsxMjQsMzEgQEAgY2xhc3MgU2hhcmRpbmdUZXN0cyh1bml0dGVzdC5UZXN0Q2Fz
ZSk6CiAgICAgICAgICAgICAgVGVzdFNoYXJkKCdpZXRlc3RjZW50ZXIvSmF2YXNjcmlwdCcsCiAg
ICAgICAgICAgICAgICAgICAgICAgIFsnaWV0ZXN0Y2VudGVyL0phdmFzY3JpcHQvMTEuMS41XzQt
NC1jLTEuaHRtbCddKV0pCiAKKyAgICBkZWYgdGVzdF9zaGFyZF9ieV9kaXJfc2hhcmRpbmdfcmVm
X3Rlc3RzKHNlbGYpOgorICAgICAgICBsb2NrZWQsIHVubG9ja2VkID0gc2VsZi5nZXRfc2hhcmRz
KG51bV93b3JrZXJzPTIsIGZ1bGx5X3BhcmFsbGVsPUZhbHNlLCBzaGFyZF9yZWZfdGVzdHM9VHJ1
ZSkKKworICAgICAgICAjIE5vdGUgdGhhdCBhbHRob3VnaCB0aGVyZSBhcmUgdGVzdHMgaW4gbXVs
dGlwbGUgZGlycyB0aGF0IG5lZWQgbG9ja3MsCisgICAgICAgICMgdGhleSBhcmUgY3JhbW1lZCBp
bnRvIGEgc2luZ2xlIHNoYXJkIGluIG9yZGVyIHRvIHJlZHVjZSB0aGUgIyBvZgorICAgICAgICAj
IHdvcmtlcnMgaGl0dGluZyB0aGUgc2VydmVyIGF0IG9uY2UuCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWxzKGxvY2tlZCwKKyAgICAgICAgICAgIFtUZXN0U2hhcmQoJ2xvY2tlZF9zaGFyZF8xJywK
KyAgICAgICAgICAgICAgWydodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy91bmljb2RlLmh0bScs
CisgICAgICAgICAgICAgICAnaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9zdXBwb3J0ZWQteG1s
LWNvbnRlbnQtdHlwZXMuaHRtbCcsCisgICAgICAgICAgICAgICAncGVyZi9vYmplY3Qta2V5cy5o
dG1sJywKKyAgICAgICAgICAgICAgICdodHRwL3Rlc3RzL3NlY3VyaXR5L3ZpZXctc291cmNlLW5v
LXJlZnJlc2guaHRtbCcsCisgICAgICAgICAgICAgICAnaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVz
dHMvd2Vic29ja2V0LXByb3RvY29sLWlnbm9yZWQuaHRtbCddKV0pCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWxzKHVubG9ja2VkLAorICAgICAgICAgICAgW1Rlc3RTaGFyZCgnYW5pbWF0aW9ucycs
CisgICAgICAgICAgICAgICAgICAgICAgIFsnYW5pbWF0aW9ucy9rZXlmcmFtZXMuaHRtbCddKSwK
KyAgICAgICAgICAgICBUZXN0U2hhcmQoJ2RvbS9odG1sL2xldmVsMi9odG1sJywKKyAgICAgICAg
ICAgICAgICAgICAgICAgWydkb20vaHRtbC9sZXZlbDIvaHRtbC9IVE1MQW5jaG9yRWxlbWVudDAz
Lmh0bWwnXSksCisgICAgICAgICAgICAgVGVzdFNoYXJkKCdmYXN0L2NzcycsCisgICAgICAgICAg
ICAgICAgICAgICAgIFsnZmFzdC9jc3MvZGlzcGxheS1ub25lLWlubGluZS1zdHlsZS1jaGFuZ2Ut
Y3Jhc2guaHRtbCddKSwKKyAgICAgICAgICAgICBUZXN0U2hhcmQoJ35yZWY6ZG9tL2h0bWwvbGV2
ZWwyL2h0bWwnLAorICAgICAgICAgICAgICAgICAgICAgICBbJ2RvbS9odG1sL2xldmVsMi9odG1s
L0hUTUxBbmNob3JFbGVtZW50MDYuaHRtbCddKSwKKyAgICAgICAgICAgICBUZXN0U2hhcmQoJ35y
ZWY6aWV0ZXN0Y2VudGVyL0phdmFzY3JpcHQnLAorICAgICAgICAgICAgICAgICAgICAgICBbJ2ll
dGVzdGNlbnRlci9KYXZhc2NyaXB0LzExLjEuNV80LTQtYy0xLmh0bWwnXSldKQorCiAgICAgZGVm
IHRlc3Rfc2hhcmRfZXZlcnlfZmlsZShzZWxmKToKICAgICAgICAgbG9ja2VkLCB1bmxvY2tlZCA9
IHNlbGYuZ2V0X3NoYXJkcyhudW1fd29ya2Vycz0yLCBmdWxseV9wYXJhbGxlbD1UcnVlKQogICAg
ICAgICBzZWxmLmFzc2VydEVxdWFscyhsb2NrZWQsCkBAIC0xNDIsNiArMTgxLDIzIEBAIGNsYXNz
IFNoYXJkaW5nVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICAgICAgICAgICAgICAg
ICAgJ2lldGVzdGNlbnRlci9KYXZhc2NyaXB0LzExLjEuNV80LTQtYy0xLmh0bWwnLAogICAgICAg
ICAgICAgICAgICAgICAgICAgJ2RvbS9odG1sL2xldmVsMi9odG1sL0hUTUxBbmNob3JFbGVtZW50
MDYuaHRtbCddKV0pCiAKKyAgICBkZWYgdGVzdF9zaGFyZF9pbl90d29fc2hhcmRpbmdfcmVmX3Rl
c3RzKHNlbGYpOgorICAgICAgICBsb2NrZWQsIHVubG9ja2VkID0gc2VsZi5nZXRfc2hhcmRzKG51
bV93b3JrZXJzPTEsIGZ1bGx5X3BhcmFsbGVsPUZhbHNlLCBzaGFyZF9yZWZfdGVzdHM9VHJ1ZSkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMobG9ja2VkLAorICAgICAgICAgICAgW1Rlc3RTaGFy
ZCgnbG9ja2VkX3Rlc3RzJywKKyAgICAgICAgICAgICAgICAgICAgICAgWydodHRwL3Rlc3RzL3dl
YnNvY2tldC90ZXN0cy91bmljb2RlLmh0bScsCisgICAgICAgICAgICAgICAgICAgICAgICAnaHR0
cC90ZXN0cy94bWxodHRwcmVxdWVzdC9zdXBwb3J0ZWQteG1sLWNvbnRlbnQtdHlwZXMuaHRtbCcs
CisgICAgICAgICAgICAgICAgICAgICAgICAncGVyZi9vYmplY3Qta2V5cy5odG1sJywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICdodHRwL3Rlc3RzL3NlY3VyaXR5L3ZpZXctc291cmNlLW5vLXJl
ZnJlc2guaHRtbCcsCisgICAgICAgICAgICAgICAgICAgICAgICAnaHR0cC90ZXN0cy93ZWJzb2Nr
ZXQvdGVzdHMvd2Vic29ja2V0LXByb3RvY29sLWlnbm9yZWQuaHRtbCddKV0pCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWxzKHVubG9ja2VkLAorICAgICAgICAgICAgW1Rlc3RTaGFyZCgndW5sb2Nr
ZWRfdGVzdHMnLAorICAgICAgICAgICAgICAgICAgICAgICBbJ2FuaW1hdGlvbnMva2V5ZnJhbWVz
Lmh0bWwnLAorICAgICAgICAgICAgICAgICAgICAgICAgJ2Zhc3QvY3NzL2Rpc3BsYXktbm9uZS1p
bmxpbmUtc3R5bGUtY2hhbmdlLWNyYXNoLmh0bWwnLAorICAgICAgICAgICAgICAgICAgICAgICAg
J2RvbS9odG1sL2xldmVsMi9odG1sL0hUTUxBbmNob3JFbGVtZW50MDMuaHRtbCcsCisgICAgICAg
ICAgICAgICAgICAgICAgICAnaWV0ZXN0Y2VudGVyL0phdmFzY3JpcHQvMTEuMS41XzQtNC1jLTEu
aHRtbCcsCisgICAgICAgICAgICAgICAgICAgICAgICAnZG9tL2h0bWwvbGV2ZWwyL2h0bWwvSFRN
TEFuY2hvckVsZW1lbnQwNi5odG1sJ10pXSkKKwogICAgIGRlZiB0ZXN0X3NoYXJkX2luX3R3b19o
YXNfbm9fbG9ja2VkX3NoYXJkcyhzZWxmKToKICAgICAgICAgbG9ja2VkLCB1bmxvY2tlZCA9IHNl
bGYuZ2V0X3NoYXJkcyhudW1fd29ya2Vycz0xLCBmdWxseV9wYXJhbGxlbD1GYWxzZSwKICAgICAg
ICAgICAgICB0ZXN0X2xpc3Q9WydhbmltYXRpb25zL2tleWZyYW1lLmh0bWwnXSkKZGlmZiAtLWdp
dCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL3dvcmtl
ci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL3dv
cmtlci5weQppbmRleCA4MzdhZWE4NmJjNmZiMjNiYzI4ZjRmMjY4NzYyNzk2ZDBmNGE3ZTQxLi4z
Nzg4MjZjNTFmOGUwOWRmNjVhMjgwMGQ3NWZjNjVlMmJhMWFlNThiIDEwMDY0NAotLS0gYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy93b3JrZXIucHkKKysr
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvd29ya2Vy
LnB5CkBAIC04Myw3ICs4Myw5IEBAIGNsYXNzIFdvcmtlcihvYmplY3QpOgogICAgICAgICBzZWxm
Ll9jYWxsZXIucG9zdCgnZmluaXNoZWRfdGVzdF9saXN0JywgdGVzdF9saXN0X25hbWUsIGxlbih0
ZXN0X2lucHV0cyksIGVsYXBzZWRfdGltZSkKIAogICAgIGRlZiBfdXBkYXRlX3Rlc3RfaW5wdXQo
c2VsZiwgdGVzdF9pbnB1dCk6Ci0gICAgICAgIHRlc3RfaW5wdXQucmVmZXJlbmNlX2ZpbGVzID0g
c2VsZi5fcG9ydC5yZWZlcmVuY2VfZmlsZXModGVzdF9pbnB1dC50ZXN0X25hbWUpCisgICAgICAg
IGlmIHRlc3RfaW5wdXQucmVmZXJlbmNlX2ZpbGVzIGlzIE5vbmU6CisgICAgICAgICAgICAjIExh
enkgaW5pdGlhbGl6YXRpb24uCisgICAgICAgICAgICB0ZXN0X2lucHV0LnJlZmVyZW5jZV9maWxl
cyA9IHNlbGYuX3BvcnQucmVmZXJlbmNlX2ZpbGVzKHRlc3RfaW5wdXQudGVzdF9uYW1lKQogICAg
ICAgICBpZiB0ZXN0X2lucHV0LnJlZmVyZW5jZV9maWxlczoKICAgICAgICAgICAgIHRlc3RfaW5w
dXQuc2hvdWxkX3J1bl9waXhlbF90ZXN0ID0gVHJ1ZQogICAgICAgICBlbGlmIHNlbGYuX29wdGlv
bnMucGl4ZWxfdGVzdHM6CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L2Nocm9taXVtX2FuZHJvaWQucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX2FuZHJvaWQucHkKaW5kZXggYWU0MzBkMjZjZmRl
YmJmMTk5MzVlODEwMjdkMGU5ZmRjM2ZkZDM2Zi4uMTI2YjMxODY4ZTQ3OWY1ZGUyZjM3YTNhOGVl
YTE0ZmZlYjM2MTMxNiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC9jaHJvbWl1bV9hbmRyb2lkLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fYW5kcm9pZC5weQpAQCAtMTYyLDYgKzE2Miw5
IEBAIGNsYXNzIENocm9taXVtQW5kcm9pZFBvcnQoY2hyb21pdW0uQ2hyb21pdW1Qb3J0KToKICAg
ICAgICAgIyBUaGUgQ2hyb21pdW0gcG9ydCBmb3IgQW5kcm9pZCBhbHdheXMgdXNlcyB0aGUgaGFy
ZHdhcmUgR1BVIHBhdGguCiAgICAgICAgIHNlbGYuX29wdGlvbnMuZW5hYmxlX2hhcmR3YXJlX2dw
dSA9IFRydWUKIAorICAgICAgICAjIFNoYXJkIHJlZiB0ZXN0cyBzbyB0aGF0IHRoZXkgcnVuIHRv
Z2V0aGVyIHRvIGF2b2lkIHJlcGVhdGVkbHkgZHJpdmVyIHJlc3RhcnRzLgorICAgICAgICBzZWxm
Ll9vcHRpb25zLnNoYXJkX3JlZl90ZXN0cyA9IFRydWUKKwogICAgICAgICBzZWxmLl9vcGVyYXRp
bmdfc3lzdGVtID0gJ2FuZHJvaWQnCiAgICAgICAgIHNlbGYuX3ZlcnNpb24gPSAnaWNlY3JlYW1z
YW5kd2ljaCcKICAgICAgICAgc2VsZi5fb3JpZ2luYWxfZ292ZXJub3IgPSBOb25lCmRpZmYgLS1n
aXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3Rz
LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0
cy5weQppbmRleCAxNjYzNDE2MTJiMmZiZTkyZGVjMzgwYmFhNmI0Mzg2M2E2ZDQwNzg1Li42MGRi
NTg3ZTBiMjZkYTljYjdjZmUzY2I0NWU5Mzg1Nzc4N2YzMGNiIDEwMDc1NQotLS0gYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5CisrKyBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMucHkKQEAg
LTQyMCw2ICs0MjAsMTEgQEAgZGVmIHBhcnNlX2FyZ3MoYXJncz1Ob25lKToKICAgICAgICAgICAg
IGhlbHA9IkRvbid0IHJlLXRyeSBhbnkgdGVzdHMgdGhhdCBwcm9kdWNlIHVuZXhwZWN0ZWQgcmVz
dWx0cy4iKSwKICAgICAgICAgb3B0cGFyc2UubWFrZV9vcHRpb24oIi0tbWF4LWxvY2tlZC1zaGFy
ZHMiLCB0eXBlPSJpbnQiLAogICAgICAgICAgICAgaGVscD0iU2V0IHRoZSBtYXhpbXVtIG51bWJl
ciBvZiBsb2NrZWQgc2hhcmRzIiksCisgICAgICAgICMgRm9yIGNocm9taXVtLWFuZHJvaWQgdG8g
cmVkdWNlIHRoZSBjb3N0IG9mIHJlc3RhcnRpbmcgdGhlIGRyaXZlci4KKyAgICAgICAgIyBGSVhN
RTogUmVtb3ZlIHRoZSBvcHRpb24gb25jZSBwZXItdGVzdCBhcmcgaXMgc3VwcG9ydGVkOgorICAg
ICAgICAjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTUzOS4KKyAg
ICAgICAgb3B0cGFyc2UubWFrZV9vcHRpb24oIi0tc2hhcmQtcmVmLXRlc3RzIiwgYWN0aW9uPSJz
dG9yZV90cnVlIiwKKyAgICAgICAgICAgIGhlbHA9IlJ1biByZWYgdGVzdHMgaW4gZGVkaWNhdGVk
IHNoYXJkKHMpLiBFbmFibGVkIG9uIEFuZHJvaWQgYnkgZGVmYXVsdC4iKSwKICAgICBdKSkKIAog
ICAgIG9wdGlvbl9ncm91cF9kZWZpbml0aW9ucy5hcHBlbmQoKCJNaXNjZWxsYW5lb3VzIE9wdGlv
bnMiLCBbCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>