<?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>98115</bug_id>
          
          <creation_ts>2012-10-01 22:36:27 -0700</creation_ts>
          <short_desc>PerfTests have incorrect standard deviation calculation</short_desc>
          <delta_ts>2012-10-02 14:23:47 -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>420+</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>77037</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Philip Rogers">pdr</reporter>
          <assigned_to name="Philip Rogers">pdr</assigned_to>
          <cc>abarth</cc>
    
    <cc>dpranke</cc>
    
    <cc>ojan</cc>
    
    <cc>ossy</cc>
    
    <cc>rniwa</cc>
    
    <cc>schenney</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>732275</commentid>
    <comment_count>0</comment_count>
    <who name="Philip Rogers">pdr</who>
    <bug_when>2012-10-01 22:36:27 -0700</bug_when>
    <thetext>Our performance test numbers calculate standard deviation incorrectly:

(wrong)
RESULT PageLoad: svg: files: worldcup.svg= 2197.27248895 ms
median= 2157.99593925 ms, stdev= 693.92660072 ms, min= 2127.62403488 ms, max= 2865.42391777 ms

(right)
RESULT PageLoad: svg: files: worldcup.svg= 2177.03914642 ms
median= 2146.1250782 ms, stdev= 162.849482453 ms, min= 2105.28707504 ms, max= 2840.33107758 ms</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>732281</commentid>
    <comment_count>1</comment_count>
      <attachid>166608</attachid>
    <who name="Philip Rogers">pdr</who>
    <bug_when>2012-10-01 22:48:52 -0700</bug_when>
    <thetext>Created attachment 166608
Fix PerfTest standard deviation calculation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>732285</commentid>
    <comment_count>2</comment_count>
      <attachid>166608</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-10-01 22:52:45 -0700</bug_when>
    <thetext>Comment on attachment 166608
Fix PerfTest standard deviation calculation.

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

Could you also change the algorithm in runner.js? I&apos;ve always wanted to fix that algorithm.

&gt; Tools/Scripts/webkitpy/performance_tests/perftest.py:236
&gt; +            &apos;stdev&apos;: math.sqrt(squareSum / (len(sorted_test_times) - 1)),

So we&apos;re now computing the sample standard deviation as opposed to the sample deviation of the sample:
http://en.wikipedia.org/wiki/Standard_deviation#Estimation

You should explain that in the change log.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>732287</commentid>
    <comment_count>3</comment_count>
      <attachid>166608</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-10-01 22:54:28 -0700</bug_when>
    <thetext>Comment on attachment 166608
Fix PerfTest standard deviation calculation.

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

&gt; Tools/Scripts/webkitpy/performance_tests/perftest.py:227
&gt;              delta = time - mean
&gt;              sweep = i + 1.0
&gt;              mean += delta / sweep

We can rewrite this as
mean += (time - mean) / sweep
and eliminate delta now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>732344</commentid>
    <comment_count>4</comment_count>
      <attachid>166621</attachid>
    <who name="Philip Rogers">pdr</who>
    <bug_when>2012-10-01 23:48:46 -0700</bug_when>
    <thetext>Created attachment 166621
Update per reviewer comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>732346</commentid>
    <comment_count>5</comment_count>
    <who name="Philip Rogers">pdr</who>
    <bug_when>2012-10-01 23:50:01 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 166608 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=166608&amp;action=review
&gt; 
&gt; Could you also change the algorithm in runner.js? I&apos;ve always wanted to fix that algorithm.

Done :)

&gt; 
&gt; &gt; Tools/Scripts/webkitpy/performance_tests/perftest.py:236
&gt; &gt; +            &apos;stdev&apos;: math.sqrt(squareSum / (len(sorted_test_times) - 1)),
&gt; 
&gt; So we&apos;re now computing the sample standard deviation as opposed to the sample deviation of the sample:
&gt; http://en.wikipedia.org/wiki/Standard_deviation#Estimation
&gt; 
&gt; You should explain that in the change log.

Done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>732348</commentid>
    <comment_count>6</comment_count>
    <who name="Philip Rogers">pdr</who>
    <bug_when>2012-10-01 23:51:52 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 166608 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=166608&amp;action=review
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/performance_tests/perftest.py:227
&gt; &gt;              delta = time - mean
&gt; &gt;              sweep = i + 1.0
&gt; &gt;              mean += delta / sweep
&gt; 
&gt; We can rewrite this as
&gt; mean += (time - mean) / sweep
&gt; and eliminate delta now.

I&apos;m not sure it&apos;s quite that simple (we need to store the mean before and after the update). This isn&apos;t performance-sensitive code and I think the readability (copied directly from Knuth) is useful here for future statistics hackers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>732349</commentid>
    <comment_count>7</comment_count>
      <attachid>166621</attachid>
    <who name="Philip Rogers">pdr</who>
    <bug_when>2012-10-01 23:53:56 -0700</bug_when>
    <thetext>Comment on attachment 166621
Update per reviewer comments

Clearing flags since patch doesn&apos;t apply. Let me rebaseline after rniwa&apos;s change today and reupload.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>732354</commentid>
    <comment_count>8</comment_count>
      <attachid>166623</attachid>
    <who name="Philip Rogers">pdr</who>
    <bug_when>2012-10-02 00:04:58 -0700</bug_when>
    <thetext>Created attachment 166623
Rebaselined</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>732357</commentid>
    <comment_count>9</comment_count>
      <attachid>166623</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-10-02 00:11:09 -0700</bug_when>
    <thetext>Comment on attachment 166623
Rebaselined

Please include the URL to the algorithm you cited.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>732361</commentid>
    <comment_count>10</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-10-02 00:12:08 -0700</bug_when>
    <thetext>*** Bug 77401 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>732364</commentid>
    <comment_count>11</comment_count>
      <attachid>166626</attachid>
    <who name="Philip Rogers">pdr</who>
    <bug_when>2012-10-02 00:17:26 -0700</bug_when>
    <thetext>Created attachment 166626
Added link to algorithm in the ChangeLog</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>732402</commentid>
    <comment_count>12</comment_count>
      <attachid>166626</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-02 01:10:40 -0700</bug_when>
    <thetext>Comment on attachment 166626
Added link to algorithm in the ChangeLog

Clearing flags on attachment: 166626

Committed r130135: &lt;http://trac.webkit.org/changeset/130135&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>732403</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-02 01:10:44 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>732497</commentid>
    <comment_count>14</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-10-02 04:00:21 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; (From update of attachment 166626 [details])
&gt; Clearing flags on attachment: 166626
&gt; 
&gt; Committed r130135: &lt;http://trac.webkit.org/changeset/130135&gt;

FYI: It broke the perf tests again. See the bots for details.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>733063</commentid>
    <comment_count>15</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-10-02 14:13:07 -0700</bug_when>
    <thetext>Fix landed in http://trac.webkit.org/changeset/130181</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>733064</commentid>
    <comment_count>16</comment_count>
    <who name="Philip Rogers">pdr</who>
    <bug_when>2012-10-02 14:15:43 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; Fix landed in http://trac.webkit.org/changeset/130181

Should we also make this change in the python standard deviation method?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>733072</commentid>
    <comment_count>17</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-10-02 14:23:47 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; (In reply to comment #15)
&gt; &gt; Fix landed in http://trac.webkit.org/changeset/130181
&gt; 
&gt; Should we also make this change in the python standard deviation method?

That&apos;s a good point. We should do that although PageLoadTest always gets 20 values.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>166608</attachid>
            <date>2012-10-01 22:48:52 -0700</date>
            <delta_ts>2012-10-01 23:48:46 -0700</delta_ts>
            <desc>Fix PerfTest standard deviation calculation.</desc>
            <filename>98115.1.patch</filename>
            <type>text/plain</type>
            <size>4095</size>
            <attacher name="Philip Rogers">pdr</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDEzMDExOCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDI2IEBACisyMDEyLTEwLTAxICBQaGlsaXAgUm9nZXJzICA8cGRyQGdvb2dsZS5jb20+CisK
KyAgICAgICAgRml4IFBlcmZUZXN0IHN0YW5kYXJkIGRldmlhdGlvbiBjYWxjdWxhdGlvbi4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4MTE1CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUHJldmlvdXNseSBv
dXIgc3RhbmRhcmQgZGV2aWF0aW9uIGNhbGN1bGF0aW9uIHdhcyBpbmNvcnJlY3QuIFRoaXMgcGF0
Y2gKKyAgICAgICAgZml4ZXMgcGVyZnRlc3QucHkncyBhbGdvcml0aG0gc28gdGhhdCB0aGUgY29y
cmVjdCBzdGRldiBpcyBjYWxjdWxhdGVkLCBhbmQKKyAgICAgICAgYSB0ZXN0IGhhcyBiZWVuIG1v
ZGlmaWVkIHRvIHByb3ZlIGl0J3MgY29ycmVjdC4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0
cHkvcGVyZm9ybWFuY2VfdGVzdHMvcGVyZnRlc3QucHk6CisKKyAgICAgICAgICAgIFRoZSB1bnVz
ZWQgdmFyaWFibGUgdmFsdWVTdW0gaGFzIGFsc28gYmVlbiByZW1vdmVkLgorCisgICAgICAgIChQ
YWdlTG9hZGluZ1BlcmZUZXN0LnJ1bik6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wZXJm
b3JtYW5jZV90ZXN0cy9wZXJmdGVzdF91bml0dGVzdC5weToKKworICAgICAgICAgICAgVGhpcyB0
ZXN0IGNhbGN1bGF0ZXMgdGhlIHN0ZGV2IG9mIHsyMDAwLCAzMDAwLCAuLi4sIDIwMDAwfSB3aGlj
aAorICAgICAgICAgICAgd2FzIGhhbmQtY2FsY3VsYXRlZCB1c2luZyBhIHNwcmVhZHNoZWV0Lgor
CisgICAgICAgIChUZXN0UGFnZUxvYWRpbmdQZXJmVGVzdC50ZXN0X3J1bik6CisKIDIwMTItMTAt
MDEgIFJhcGhhZWwgS3VibyBkYSBDb3N0YSAgPHJhcGhhZWwua3Viby5kYS5jb3N0YUBpbnRlbC5j
b20+CiAKICAgICAgICAgd2Via2l0cHkgc2hvdWxkIGFjY2VwdCBhIGRpZmZlcmVudCBodHRwZC5j
b25mIHNwZWNpZmllZCBieSB0aGUgdXNlcgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9w
ZXJmb3JtYW5jZV90ZXN0cy9wZXJmdGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRz
L3dlYmtpdHB5L3BlcmZvcm1hbmNlX3Rlc3RzL3BlcmZ0ZXN0LnB5CShyZXZpc2lvbiAxMjk5NTkp
CisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BlcmZvcm1hbmNlX3Rlc3RzL3BlcmZ0ZXN0LnB5
CSh3b3JraW5nIGNvcHkpCkBAIC0yMTgsMTUgKzIxOCwxNCBAQCBjbGFzcyBQYWdlTG9hZGluZ1Bl
cmZUZXN0KFBlcmZUZXN0KToKIAogICAgICAgICBzb3J0ZWRfdGVzdF90aW1lcyA9IHNvcnRlZCh0
ZXN0X3RpbWVzKQogCi0gICAgICAgICMgQ29tcHV0ZSB0aGUgbWVhbiBhbmQgdmFyaWFuY2UgdXNp
bmcgYSBudW1lcmljYWxseSBzdGFibGUgYWxnb3JpdGhtLgorICAgICAgICAjIENvbXB1dGUgdGhl
IG1lYW4gYW5kIHZhcmlhbmNlIHVzaW5nIEtudXRoJ3Mgb25saW5lIGFsZ29yaXRobSAoaGFzIGdv
b2QgbnVtZXJpY2FsIHN0YWJpbGl0eSkuCiAgICAgICAgIHNxdWFyZVN1bSA9IDAKICAgICAgICAg
bWVhbiA9IDAKLSAgICAgICAgdmFsdWVTdW0gPSBzdW0oc29ydGVkX3Rlc3RfdGltZXMpCiAgICAg
ICAgIGZvciBpLCB0aW1lIGluIGVudW1lcmF0ZShzb3J0ZWRfdGVzdF90aW1lcyk6CiAgICAgICAg
ICAgICBkZWx0YSA9IHRpbWUgLSBtZWFuCiAgICAgICAgICAgICBzd2VlcCA9IGkgKyAxLjAKICAg
ICAgICAgICAgIG1lYW4gKz0gZGVsdGEgLyBzd2VlcAotICAgICAgICAgICAgc3F1YXJlU3VtICs9
IGRlbHRhICogZGVsdGEgKiAoaSAvIHN3ZWVwKQorICAgICAgICAgICAgc3F1YXJlU3VtICs9IGRl
bHRhICogKHRpbWUgLSBtZWFuKQogCiAgICAgICAgIG1pZGRsZSA9IGludChsZW4odGVzdF90aW1l
cykgLyAyKQogICAgICAgICByZXN1bHRzID0geyd2YWx1ZXMnOiB0ZXN0X3RpbWVzLApAQCAtMjM0
LDcgKzIzMyw3IEBAIGNsYXNzIFBhZ2VMb2FkaW5nUGVyZlRlc3QoUGVyZlRlc3QpOgogICAgICAg
ICAgICAgJ21pbic6IHNvcnRlZF90ZXN0X3RpbWVzWzBdLAogICAgICAgICAgICAgJ21heCc6IHNv
cnRlZF90ZXN0X3RpbWVzWy0xXSwKICAgICAgICAgICAgICdtZWRpYW4nOiBzb3J0ZWRfdGVzdF90
aW1lc1ttaWRkbGVdIGlmIGxlbihzb3J0ZWRfdGVzdF90aW1lcykgJSAyIGVsc2UgKHNvcnRlZF90
ZXN0X3RpbWVzW21pZGRsZSAtIDFdICsgc29ydGVkX3Rlc3RfdGltZXNbbWlkZGxlXSkgLyAyLAot
ICAgICAgICAgICAgJ3N0ZGV2JzogbWF0aC5zcXJ0KHNxdWFyZVN1bSksCisgICAgICAgICAgICAn
c3RkZXYnOiBtYXRoLnNxcnQoc3F1YXJlU3VtIC8gKGxlbihzb3J0ZWRfdGVzdF90aW1lcykgLSAx
KSksCiAgICAgICAgICAgICAndW5pdCc6ICdtcyd9CiAgICAgICAgIHNlbGYub3V0cHV0X3N0YXRp
c3RpY3Moc2VsZi50ZXN0X25hbWUoKSwgcmVzdWx0cywgJycpCiAgICAgICAgIHJldHVybiB7c2Vs
Zi50ZXN0X25hbWUoKTogcmVzdWx0c30KSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcGVy
Zm9ybWFuY2VfdGVzdHMvcGVyZnRlc3RfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9wZXJmb3JtYW5jZV90ZXN0cy9wZXJmdGVzdF91bml0dGVzdC5weQko
cmV2aXNpb24gMTI5OTU5KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wZXJmb3JtYW5jZV90
ZXN0cy9wZXJmdGVzdF91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMTE3LDEzICsxMTcs
MTMgQEAgY2xhc3MgVGVzdFBhZ2VMb2FkaW5nUGVyZlRlc3QodW5pdHRlc3QuVAogICAgICAgICBv
dXRwdXRfY2FwdHVyZS5jYXB0dXJlX291dHB1dCgpCiAgICAgICAgIHRyeToKICAgICAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwodGVzdC5ydW4oZHJpdmVyLCBOb25lKSwKLSAgICAgICAgICAgICAg
ICB7J3NvbWUtdGVzdCc6IHsnbWF4JzogMjAwMDAsICdhdmcnOiAxMTAwMC4wLCAnbWVkaWFuJzog
MTEwMDAsICdzdGRldic6IG1hdGguc3FydCg1NzAgKiAxMDAwICogMTAwMCksICdtaW4nOiAyMDAw
LCAndW5pdCc6ICdtcycsCisgICAgICAgICAgICAgICAgeydzb21lLXRlc3QnOiB7J21heCc6IDIw
MDAwLCAnYXZnJzogMTEwMDAuMCwgJ21lZGlhbic6IDExMDAwLCAnc3RkZXYnOiA1NjI3LjMxNDMz
ODcxMTM3OCwgJ21pbic6IDIwMDAsICd1bml0JzogJ21zJywKICAgICAgICAgICAgICAgICAgICAg
J3ZhbHVlcyc6IFtpICogMTAwMCBmb3IgaSBpbiByYW5nZSgyLCAyMSldfX0pCiAgICAgICAgIGZp
bmFsbHk6CiAgICAgICAgICAgICBhY3R1YWxfc3Rkb3V0LCBhY3R1YWxfc3RkZXJyLCBhY3R1YWxf
bG9ncyA9IG91dHB1dF9jYXB0dXJlLnJlc3RvcmVfb3V0cHV0KCkKICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChhY3R1YWxfc3Rkb3V0LCAnJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhY3R1
YWxfc3RkZXJyLCAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhY3R1YWxfbG9ncywgJ1JF
U1VMVCBzb21lLXRlc3Q9IDExMDAwLjAgbXNcbm1lZGlhbj0gMTEwMDAgbXMsIHN0ZGV2PSAyMzg3
NC42NzI3NzI2IG1zLCBtaW49IDIwMDAgbXMsIG1heD0gMjAwMDAgbXNcbicpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoYWN0dWFsX2xvZ3MsICdSRVNVTFQgc29tZS10ZXN0PSAxMTAwMC4wIG1z
XG5tZWRpYW49IDExMDAwIG1zLCBzdGRldj0gNTYyNy4zMTQzMzg3MSBtcywgbWluPSAyMDAwIG1z
LCBtYXg9IDIwMDAwIG1zXG4nKQogCiAgICAgZGVmIHRlc3RfcnVuX3dpdGhfYmFkX291dHB1dChz
ZWxmKToKICAgICAgICAgb3V0cHV0X2NhcHR1cmUgPSBPdXRwdXRDYXB0dXJlKCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>166621</attachid>
            <date>2012-10-01 23:48:46 -0700</date>
            <delta_ts>2012-10-02 00:04:58 -0700</delta_ts>
            <desc>Update per reviewer comments</desc>
            <filename>98115.2.patch</filename>
            <type>text/plain</type>
            <size>14020</size>
            <attacher name="Philip Rogers">pdr</attacher>
            
              <data encoding="base64">SW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1h
bmNlVGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMzAxMjUpCisrKyBQZXJmb3JtYW5jZVRlc3Rz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1IEBACisyMDEyLTEwLTAxICBQ
aGlsaXAgUm9nZXJzICA8cGRyQGdvb2dsZS5jb20+CisKKyAgICAgICAgRml4IFBlcmZUZXN0IHN0
YW5kYXJkIGRldmlhdGlvbiBjYWxjdWxhdGlvbi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTk4MTE1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgUHJldmlvdXNseSBvdXIgc3RhbmRhcmQgZGV2aWF0aW9uIGNh
bGN1bGF0aW9uIHdhcyBpbmNvcnJlY3QuIFRoaXMgcGF0Y2gKKyAgICAgICAgdXBkYXRlcyBwZXJm
dGVzdC5weSdzIGFsZ29yaXRobSB0byBjYWxjdWxhdGUgdGhlIHNhbXBsZSBzdGFuZGFyZCBkZXZp
YXRpb24KKyAgICAgICAgKHdpdGggQmVzc2VsJ3MgY29ycmVjdGlvbikuIEFuIGV4aXN0aW5nIHRl
c3QgaGFzIGJlZW4gbW9kaWZpZWQgdG8gcHJvdmUKKyAgICAgICAgb3VyIG5ldyByZXN1bHRzLgor
CisgICAgICAgIFRoaXMgcGF0Y2ggYWxzbyB1cGRhdGVzIHJ1bm5lci5qcyB0byB1c2UgQmVzc2Vs
J3MgY29ycmVjdGlvbiBpbgorICAgICAgICBpdHMgc2FtcGxlIHN0YW5kYXJkIGRldmlhdGlvbiBj
YWxjdWxhdGlvbiwgd2hpY2ggaXMgbW9yZSBhY2N1cmF0ZQorICAgICAgICBmb3Igc21hbGwgc2Ft
cGxlIHNpemVzLgorCisgICAgICAgIEFkZGl0aW9uYWxseSwgcnVubmVyLmpzIGhhcyBiZWVuIG1v
ZGlmaWVkIHRvIG5vdCBjYWxjdWxhdGUKKyAgICAgICAgdGhlICdzdW0nIHN0YXRpc3RpYywgd2hp
Y2ggd2FzIG5vdCB2ZXJ5IHVzZWZ1bC4KKworICAgICAgICAqIHJlc291cmNlcy9ydW5uZXIuanM6
CisgICAgICAgIChQZXJmVGVzdFJ1bm5lci5jb21wdXRlU3RhdGlzdGljcyk6CisKIDIwMTItMTAt
MDEgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUGVyZlRlc3RS
dW5uZXI6IE1vdmUgYWxsIGZ1bmN0aW9ucyBpbnRvIHRoZSBjbG9zdXJlIGFuZCBhbHdheXMgdXNl
IGRvdWJsZSBxdW90YXRpb24gZm9yIHN0cmluZyBsaXRlcmFscwpJbmRleDogUGVyZm9ybWFuY2VU
ZXN0cy9yZXNvdXJjZXMvcnVubmVyLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMv
cmVzb3VyY2VzL3J1bm5lci5qcwkocmV2aXNpb24gMTI5OTk4KQorKysgUGVyZm9ybWFuY2VUZXN0
cy9yZXNvdXJjZXMvcnVubmVyLmpzCSh3b3JraW5nIGNvcHkpCkBAIC02OCwyMCArNjgsMTggQEAg
UGVyZlRlc3RSdW5uZXIuY29tcHV0ZVN0YXRpc3RpY3MgPSBmdW5jdAogICAgICAgICBtZWRpYW46
IGRhdGEubGVuZ3RoICUgMiA/IGRhdGFbbWlkZGxlXSA6IChkYXRhW21pZGRsZSAtIDFdICsgZGF0
YVttaWRkbGVdKSAvIDIsCiAgICAgfTsKIAotICAgIC8vIENvbXB1dGUgdGhlIG1lYW4gYW5kIHZh
cmlhbmNlIHVzaW5nIGEgbnVtZXJpY2FsbHkgc3RhYmxlIGFsZ29yaXRobS4KKyAgICAvLyBDb21w
dXRlIHRoZSBtZWFuIGFuZCB2YXJpYW5jZSB1c2luZyBLbnV0aCdzIG9ubGluZSBhbGdvcml0aG0g
KGhhcyBnb29kIG51bWVyaWNhbCBzdGFiaWxpdHkpLgogICAgIHZhciBzcXVhcmVTdW0gPSAwOwog
ICAgIHJlc3VsdC52YWx1ZXMgPSB0aW1lczsKLSAgICByZXN1bHQubWVhbiA9IGRhdGFbMF07Ci0g
ICAgcmVzdWx0LnN1bSA9IGRhdGFbMF07Ci0gICAgZm9yICh2YXIgaSA9IDE7IGkgPCBkYXRhLmxl
bmd0aDsgKytpKSB7CisgICAgcmVzdWx0Lm1lYW4gPSAwOworICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgZGF0YS5sZW5ndGg7ICsraSkgewogICAgICAgICB2YXIgeCA9IGRhdGFbaV07CiAgICAgICAg
IHZhciBkZWx0YSA9IHggLSByZXN1bHQubWVhbjsKICAgICAgICAgdmFyIHN3ZWVwID0gaSArIDEu
MDsKICAgICAgICAgcmVzdWx0Lm1lYW4gKz0gZGVsdGEgLyBzd2VlcDsKLSAgICAgICAgcmVzdWx0
LnN1bSArPSB4OwotICAgICAgICBzcXVhcmVTdW0gKz0gZGVsdGEgKiBkZWx0YSAqIChpIC8gc3dl
ZXApOworICAgICAgICBzcXVhcmVTdW0gKz0gZGVsdGEgKiAoeCAtIHJlc3VsdC5tZWFuKTsKICAg
ICB9Ci0gICAgcmVzdWx0LnZhcmlhbmNlID0gc3F1YXJlU3VtIC8gZGF0YS5sZW5ndGg7CisgICAg
cmVzdWx0LnZhcmlhbmNlID0gc3F1YXJlU3VtIC8gKGRhdGEubGVuZ3RoIC0gMSk7CiAgICAgcmVz
dWx0LnN0ZGV2ID0gTWF0aC5zcXJ0KHJlc3VsdC52YXJpYW5jZSk7CiAgICAgcmVzdWx0LnVuaXQg
PSB1bml0IHx8ICJtcyI7CiAKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzMDEyNSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDM0IEBACisyMDEyLTEwLTAxICBQaGlsaXAgUm9nZXJzICA8
cGRyQGdvb2dsZS5jb20+CisKKyAgICAgICAgRml4IFBlcmZUZXN0IHN0YW5kYXJkIGRldmlhdGlv
biBjYWxjdWxhdGlvbi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTk4MTE1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgUHJldmlvdXNseSBvdXIgc3RhbmRhcmQgZGV2aWF0aW9uIGNhbGN1bGF0aW9uIHdhcyBp
bmNvcnJlY3QuIFRoaXMgcGF0Y2gKKyAgICAgICAgdXBkYXRlcyBwZXJmdGVzdC5weSdzIGFsZ29y
aXRobSB0byBjYWxjdWxhdGUgdGhlIHNhbXBsZSBzdGFuZGFyZCBkZXZpYXRpb24KKyAgICAgICAg
KHdpdGggQmVzc2VsJ3MgY29ycmVjdGlvbikuIEFuIGV4aXN0aW5nIHRlc3QgaGFzIGJlZW4gbW9k
aWZpZWQgdG8gcHJvdmUKKyAgICAgICAgb3VyIG5ldyByZXN1bHRzLgorCisgICAgICAgIFRoaXMg
cGF0Y2ggYWxzbyB1cGRhdGVzIHJ1bm5lci5qcyB0byB1c2UgQmVzc2VsJ3MgY29ycmVjdGlvbiBp
bgorICAgICAgICBpdHMgc2FtcGxlIHN0YW5kYXJkIGRldmlhdGlvbiBjYWxjdWxhdGlvbiwgd2hp
Y2ggaXMgbW9yZSBhY2N1cmF0ZQorICAgICAgICBmb3Igc21hbGwgc2FtcGxlIHNpemVzLgorCisg
ICAgICAgIEFkZGl0aW9uYWxseSwgcnVubmVyLmpzIGhhcyBiZWVuIG1vZGlmaWVkIHRvIG5vdCBj
YWxjdWxhdGUKKyAgICAgICAgdGhlICdzdW0nIHN0YXRpc3RpYywgd2hpY2ggd2FzIG5vdCB2ZXJ5
IHVzZWZ1bC4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcGVyZm9ybWFuY2VfdGVzdHMv
cGVyZnRlc3QucHk6CisKKyAgICAgICAgICAgIFRoZSB1bnVzZWQgdmFyaWFibGUgdmFsdWVTdW0g
aGFzIGFsc28gYmVlbiByZW1vdmVkLgorCisgICAgICAgIChQYWdlTG9hZGluZ1BlcmZUZXN0LnJ1
bik6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wZXJmb3JtYW5jZV90ZXN0cy9wZXJmdGVz
dF91bml0dGVzdC5weToKKworICAgICAgICAgICAgVGhpcyB0ZXN0IGNhbGN1bGF0ZXMgdGhlIHN0
ZGV2IG9mIHsyMDAwLCAzMDAwLCAuLi4sIDIwMDAwfSB3aGljaAorICAgICAgICAgICAgd2FzIGhh
bmQtY2FsY3VsYXRlZCB1c2luZyBhIHNwcmVhZHNoZWV0LgorCisgICAgICAgIChUZXN0UGFnZUxv
YWRpbmdQZXJmVGVzdC50ZXN0X3J1bik6CisKIDIwMTItMTAtMDEgIFJhcGhhZWwgS3VibyBkYSBD
b3N0YSAgPHJhcGhhZWwua3Viby5kYS5jb3N0YUBpbnRlbC5jb20+CiAKICAgICAgICAgd2Via2l0
cHkgc2hvdWxkIGFjY2VwdCBhIGRpZmZlcmVudCBodHRwZC5jb25mIHNwZWNpZmllZCBieSB0aGUg
dXNlcgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wZXJmb3JtYW5jZV90ZXN0cy9wZXJm
dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BlcmZvcm1hbmNl
X3Rlc3RzL3BlcmZ0ZXN0LnB5CShyZXZpc2lvbiAxMjk5NTkpCisrKyBUb29scy9TY3JpcHRzL3dl
YmtpdHB5L3BlcmZvcm1hbmNlX3Rlc3RzL3BlcmZ0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0y
MTgsMTUgKzIxOCwxNCBAQCBjbGFzcyBQYWdlTG9hZGluZ1BlcmZUZXN0KFBlcmZUZXN0KToKIAog
ICAgICAgICBzb3J0ZWRfdGVzdF90aW1lcyA9IHNvcnRlZCh0ZXN0X3RpbWVzKQogCi0gICAgICAg
ICMgQ29tcHV0ZSB0aGUgbWVhbiBhbmQgdmFyaWFuY2UgdXNpbmcgYSBudW1lcmljYWxseSBzdGFi
bGUgYWxnb3JpdGhtLgorICAgICAgICAjIENvbXB1dGUgdGhlIG1lYW4gYW5kIHZhcmlhbmNlIHVz
aW5nIEtudXRoJ3Mgb25saW5lIGFsZ29yaXRobSAoaGFzIGdvb2QgbnVtZXJpY2FsIHN0YWJpbGl0
eSkuCiAgICAgICAgIHNxdWFyZVN1bSA9IDAKICAgICAgICAgbWVhbiA9IDAKLSAgICAgICAgdmFs
dWVTdW0gPSBzdW0oc29ydGVkX3Rlc3RfdGltZXMpCiAgICAgICAgIGZvciBpLCB0aW1lIGluIGVu
dW1lcmF0ZShzb3J0ZWRfdGVzdF90aW1lcyk6CiAgICAgICAgICAgICBkZWx0YSA9IHRpbWUgLSBt
ZWFuCiAgICAgICAgICAgICBzd2VlcCA9IGkgKyAxLjAKICAgICAgICAgICAgIG1lYW4gKz0gZGVs
dGEgLyBzd2VlcAotICAgICAgICAgICAgc3F1YXJlU3VtICs9IGRlbHRhICogZGVsdGEgKiAoaSAv
IHN3ZWVwKQorICAgICAgICAgICAgc3F1YXJlU3VtICs9IGRlbHRhICogKHRpbWUgLSBtZWFuKQog
CiAgICAgICAgIG1pZGRsZSA9IGludChsZW4odGVzdF90aW1lcykgLyAyKQogICAgICAgICByZXN1
bHRzID0geyd2YWx1ZXMnOiB0ZXN0X3RpbWVzLApAQCAtMjM0LDcgKzIzMyw3IEBAIGNsYXNzIFBh
Z2VMb2FkaW5nUGVyZlRlc3QoUGVyZlRlc3QpOgogICAgICAgICAgICAgJ21pbic6IHNvcnRlZF90
ZXN0X3RpbWVzWzBdLAogICAgICAgICAgICAgJ21heCc6IHNvcnRlZF90ZXN0X3RpbWVzWy0xXSwK
ICAgICAgICAgICAgICdtZWRpYW4nOiBzb3J0ZWRfdGVzdF90aW1lc1ttaWRkbGVdIGlmIGxlbihz
b3J0ZWRfdGVzdF90aW1lcykgJSAyIGVsc2UgKHNvcnRlZF90ZXN0X3RpbWVzW21pZGRsZSAtIDFd
ICsgc29ydGVkX3Rlc3RfdGltZXNbbWlkZGxlXSkgLyAyLAotICAgICAgICAgICAgJ3N0ZGV2Jzog
bWF0aC5zcXJ0KHNxdWFyZVN1bSksCisgICAgICAgICAgICAnc3RkZXYnOiBtYXRoLnNxcnQoc3F1
YXJlU3VtIC8gKGxlbihzb3J0ZWRfdGVzdF90aW1lcykgLSAxKSksCiAgICAgICAgICAgICAndW5p
dCc6ICdtcyd9CiAgICAgICAgIHNlbGYub3V0cHV0X3N0YXRpc3RpY3Moc2VsZi50ZXN0X25hbWUo
KSwgcmVzdWx0cywgJycpCiAgICAgICAgIHJldHVybiB7c2VsZi50ZXN0X25hbWUoKTogcmVzdWx0
c30KSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcGVyZm9ybWFuY2VfdGVzdHMvcGVyZnRl
c3RfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wZXJm
b3JtYW5jZV90ZXN0cy9wZXJmdGVzdF91bml0dGVzdC5weQkocmV2aXNpb24gMTI5OTU5KQorKysg
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9wZXJmb3JtYW5jZV90ZXN0cy9wZXJmdGVzdF91bml0dGVz
dC5weQkod29ya2luZyBjb3B5KQpAQCAtMTE3LDEzICsxMTcsMTMgQEAgY2xhc3MgVGVzdFBhZ2VM
b2FkaW5nUGVyZlRlc3QodW5pdHRlc3QuVAogICAgICAgICBvdXRwdXRfY2FwdHVyZS5jYXB0dXJl
X291dHB1dCgpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGVz
dC5ydW4oZHJpdmVyLCBOb25lKSwKLSAgICAgICAgICAgICAgICB7J3NvbWUtdGVzdCc6IHsnbWF4
JzogMjAwMDAsICdhdmcnOiAxMTAwMC4wLCAnbWVkaWFuJzogMTEwMDAsICdzdGRldic6IG1hdGgu
c3FydCg1NzAgKiAxMDAwICogMTAwMCksICdtaW4nOiAyMDAwLCAndW5pdCc6ICdtcycsCisgICAg
ICAgICAgICAgICAgeydzb21lLXRlc3QnOiB7J21heCc6IDIwMDAwLCAnYXZnJzogMTEwMDAuMCwg
J21lZGlhbic6IDExMDAwLCAnc3RkZXYnOiA1NjI3LjMxNDMzODcxMTM3OCwgJ21pbic6IDIwMDAs
ICd1bml0JzogJ21zJywKICAgICAgICAgICAgICAgICAgICAgJ3ZhbHVlcyc6IFtpICogMTAwMCBm
b3IgaSBpbiByYW5nZSgyLCAyMSldfX0pCiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBh
Y3R1YWxfc3Rkb3V0LCBhY3R1YWxfc3RkZXJyLCBhY3R1YWxfbG9ncyA9IG91dHB1dF9jYXB0dXJl
LnJlc3RvcmVfb3V0cHV0KCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhY3R1YWxfc3Rkb3V0
LCAnJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhY3R1YWxfc3RkZXJyLCAnJykKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChhY3R1YWxfbG9ncywgJ1JFU1VMVCBzb21lLXRlc3Q9IDExMDAw
LjAgbXNcbm1lZGlhbj0gMTEwMDAgbXMsIHN0ZGV2PSAyMzg3NC42NzI3NzI2IG1zLCBtaW49IDIw
MDAgbXMsIG1heD0gMjAwMDAgbXNcbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWN0dWFs
X2xvZ3MsICdSRVNVTFQgc29tZS10ZXN0PSAxMTAwMC4wIG1zXG5tZWRpYW49IDExMDAwIG1zLCBz
dGRldj0gNTYyNy4zMTQzMzg3MSBtcywgbWluPSAyMDAwIG1zLCBtYXg9IDIwMDAwIG1zXG4nKQog
CiAgICAgZGVmIHRlc3RfcnVuX3dpdGhfYmFkX291dHB1dChzZWxmKToKICAgICAgICAgb3V0cHV0
X2NhcHR1cmUgPSBPdXRwdXRDYXB0dXJlKCkKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzMDEyNSkKKysr
IExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBACisy
MDEyLTEwLTAxICBQaGlsaXAgUm9nZXJzICA8cGRyQGdvb2dsZS5jb20+CisKKyAgICAgICAgRml4
IFBlcmZUZXN0IHN0YW5kYXJkIGRldmlhdGlvbiBjYWxjdWxhdGlvbi4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4MTE1CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUHJldmlvdXNseSBvdXIgc3RhbmRhcmQg
ZGV2aWF0aW9uIGNhbGN1bGF0aW9uIHdhcyBpbmNvcnJlY3QuIFRoaXMgcGF0Y2gKKyAgICAgICAg
dXBkYXRlcyBwZXJmdGVzdC5weSdzIGFsZ29yaXRobSB0byBjYWxjdWxhdGUgdGhlIHNhbXBsZSBz
dGFuZGFyZCBkZXZpYXRpb24KKyAgICAgICAgKHdpdGggQmVzc2VsJ3MgY29ycmVjdGlvbikuIEFu
IGV4aXN0aW5nIHRlc3QgaGFzIGJlZW4gbW9kaWZpZWQgdG8gcHJvdmUKKyAgICAgICAgb3VyIG5l
dyByZXN1bHRzLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWxzbyB1cGRhdGVzIHJ1bm5lci5qcyB0
byB1c2UgQmVzc2VsJ3MgY29ycmVjdGlvbiBpbgorICAgICAgICBpdHMgc2FtcGxlIHN0YW5kYXJk
IGRldmlhdGlvbiBjYWxjdWxhdGlvbiwgd2hpY2ggaXMgbW9yZSBhY2N1cmF0ZQorICAgICAgICBm
b3Igc21hbGwgc2FtcGxlIHNpemVzLgorCisgICAgICAgIEFkZGl0aW9uYWxseSwgcnVubmVyLmpz
IGhhcyBiZWVuIG1vZGlmaWVkIHRvIG5vdCBjYWxjdWxhdGUKKyAgICAgICAgdGhlICdzdW0nIHN0
YXRpc3RpYywgd2hpY2ggd2FzIG5vdCB2ZXJ5IHVzZWZ1bC4KKworICAgICAgICAqIGZhc3QvaGFy
bmVzcy9wZXJmdGVzdHMvcGVyZi1ydW5uZXItY29tcHV0ZS1zdGF0aXN0aWNzLWV4cGVjdGVkLnR4
dDoKKyAgICAgICAgKiBmYXN0L2hhcm5lc3MvcGVyZnRlc3RzL3BlcmYtcnVubmVyLWNvbXB1dGUt
c3RhdGlzdGljcy5odG1sOgorICAgICAgICAqIGZhc3QvaGFybmVzcy9wZXJmdGVzdHMvcnVucy1w
ZXItc2Vjb25kLWxvZy1leHBlY3RlZC50eHQ6CisKIDIwMTItMTAtMDEgIFBhdmVsIEZlbGRtYW4g
IDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogbW92ZSBj
b21wbGV0aW9ucyBjYWxjdWxhdGlvbiBpbnRvIFJ1bnRpbWVNb2RlbCAocGFydCAxKQpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9oYXJuZXNzL3BlcmZ0ZXN0cy9wZXJmLXJ1bm5lci1jb21wdXRlLXN0
YXRpc3RpY3MtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvaGFy
bmVzcy9wZXJmdGVzdHMvcGVyZi1ydW5uZXItY29tcHV0ZS1zdGF0aXN0aWNzLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMTI5OTU5KQorKysgTGF5b3V0VGVzdHMvZmFzdC9oYXJuZXNzL3BlcmZ0ZXN0
cy9wZXJmLXJ1bm5lci1jb21wdXRlLXN0YXRpc3RpY3MtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNv
cHkpCkBAIC0xLDQgKzEsNCBAQAotVGhpcyB0ZXN0IHZlcmlmaWVzIFBlcmZUZXN0UnVubmVyLmNv
bXB1dGVTdGF0aXN0aWNzKCksIGluY2x1ZGluZzogbWluLCBtYXgsIG1lZGlhbiwgbWVhbiwgc3Vt
LCB2YXJpYW5jZSwgYW5kIHN0ZGV2LgorVGhpcyB0ZXN0IHZlcmlmaWVzIFBlcmZUZXN0UnVubmVy
LmNvbXB1dGVTdGF0aXN0aWNzKCksIGluY2x1ZGluZzogbWluLCBtYXgsIG1lZGlhbiwgbWVhbiwg
dmFyaWFuY2UsIGFuZCBzdGRldi4KIAogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgogCkBAIC04
LDcgKzgsNiBAQCBQQVNTIHN0YXRzLm1pbiBpcyAwCiBQQVNTIHN0YXRzLm1heCBpcyAwCiBQQVNT
IHN0YXRzLm1lZGlhbiBpcyAwCiBQQVNTIHN0YXRzLm1lYW4gaXMgMAotUEFTUyBzdGF0cy5zdW0g
aXMgMAogUEFTUyBzdGF0cy52YXJpYW5jZSBpcyAwCiBQQVNTIHN0YXRzLnN0ZGV2IGlzIDAKIApA
QCAtMjAsMTQgKzE5LDEyIEBAIFBBU1Mgc3RhdHMubWluIGlzIDEKIFBBU1Mgc3RhdHMubWF4IGlz
IDIwCiBQQVNTIHN0YXRzLm1lZGlhbiBpcyA1CiBQQVNTIHN0YXRzLm1lYW4gaXMgNy42Ci1QQVNT
IHN0YXRzLnN1bSBpcyAzOAogUEFTUyBzdGF0cy5taW4gaXMgMQogUEFTUyBzdGF0cy5tYXggaXMg
MjAKIFBBU1Mgc3RhdHMubWVkaWFuIGlzIDUKIFBBU1Mgc3RhdHMubWVhbiBpcyA3LjYKLVBBU1Mg
c3RhdHMuc3VtIGlzIDM4Ci1QQVNTIHN0YXRzLnZhcmlhbmNlIGlzIHdpdGhpbiAwLjAwMDEgb2Yg
NDguMjM5OTk5OTk5OTk5OTk1Ci1QQVNTIHN0YXRzLnN0ZGV2IGlzIHdpdGhpbiAwLjAwMDEgb2Yg
Ni45NDU1MDIxNDE2NzQxMzUKK1BBU1Mgc3RhdHMudmFyaWFuY2UgaXMgd2l0aGluIDAuMDAwMSBv
ZiA2MC4zCitQQVNTIHN0YXRzLnN0ZGV2IGlzIHdpdGhpbiAwLjAwMDEgb2YgNy43NjUzMDc0NjMz
MjY4NwogCiBUaGlzIHRlc3Qgd2lsbCBjYXRjaCBpZiBhbnkgb3JkZXIgZGVwZW5kZW5jaWVzIGlu
IHRoZSBkYXRhLCBzdWNoIGFzCiBuZWVkaW5nIHRvIGJlIG51bWVyaWNhbGx5IHNvcnRlZCwgYXJl
IG5vdCByZXNvbHZlZCBieSB0aGUgYWxnb3JpdGhtLgpAQCAtMzcsMTQgKzM0LDEyIEBAIFBBU1Mg
c3RhdHMubWluIGlzIC0yMAogUEFTUyBzdGF0cy5tYXggaXMgLTEKIFBBU1Mgc3RhdHMubWVkaWFu
IGlzIC01CiBQQVNTIHN0YXRzLm1lYW4gaXMgLTcuNgotUEFTUyBzdGF0cy5zdW0gaXMgLTM4CiBQ
QVNTIHN0YXRzLm1pbiBpcyAtMjAKIFBBU1Mgc3RhdHMubWF4IGlzIC0xCiBQQVNTIHN0YXRzLm1l
ZGlhbiBpcyAtNQogUEFTUyBzdGF0cy5tZWFuIGlzIC03LjYKLVBBU1Mgc3RhdHMuc3VtIGlzIC0z
OAotUEFTUyBzdGF0cy52YXJpYW5jZSBpcyB3aXRoaW4gMC4wMDAxIG9mIDQ4LjIzOTk5OTk5OTk5
OTk5NQotUEFTUyBzdGF0cy5zdGRldiBpcyB3aXRoaW4gMC4wMDAxIG9mIDYuOTQ1NTAyMTQxNjc0
MTM1CitQQVNTIHN0YXRzLnZhcmlhbmNlIGlzIHdpdGhpbiAwLjAwMDEgb2YgNjAuMworUEFTUyBz
dGF0cy5zdGRldiBpcyB3aXRoaW4gMC4wMDAxIG9mIDcuNzY1MzA3NDYzMzI2ODcKIAogRW5zdXJl
IG5vIGxhdGVudCBkaXZpZGUgYnkgMCdzIGZvciBhbiBldmVuIG51bWJlciBvZiBlbGVtZW50cy4K
IGRhdGEgPSBbMCwwLDAsMF0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvaGFybmVzcy9wZXJmdGVz
dHMvcGVyZi1ydW5uZXItY29tcHV0ZS1zdGF0aXN0aWNzLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9oYXJuZXNzL3BlcmZ0ZXN0cy9wZXJmLXJ1bm5lci1jb21wdXRlLXN0YXRp
c3RpY3MuaHRtbAkocmV2aXNpb24gMTI5OTU5KQorKysgTGF5b3V0VGVzdHMvZmFzdC9oYXJuZXNz
L3BlcmZ0ZXN0cy9wZXJmLXJ1bm5lci1jb21wdXRlLXN0YXRpc3RpY3MuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtMzIsMTMgKzMyLDEyIEBAIHZhciBhbHRlcm5hdGVDb21wdXRlU3RhdGlzdGljcyA9
IHsKICAgICB9LAogICAgIHZhcmlhbmNlOiBmdW5jdGlvbihhcnJheSkgewogICAgICAgICB2YXIg
bWVhbiA9IGFsdGVybmF0ZUNvbXB1dGVTdGF0aXN0aWNzLm1lYW4oYXJyYXkpOwotICAgICAgICB2
YXIgYXJyYXlPZlNxdWFyZWREaWZmcyA9IFtdOworICAgICAgICB2YXIgc3VtT2ZTcXVhcmVkRGlm
ZnMgPSAwOwogICAgICAgICBmb3IgKHZhciBpbmRleCBpbiBhcnJheSkgewogICAgICAgICAgICAg
dmFyIHNxdWFyZWREaWZmID0gYXJyYXlbaW5kZXhdIC0gbWVhbjsKLSAgICAgICAgICAgIHNxdWFy
ZWREaWZmICo9IHNxdWFyZWREaWZmOwotICAgICAgICAgICAgYXJyYXlPZlNxdWFyZWREaWZmcy5w
dXNoKHNxdWFyZWREaWZmKTsKKyAgICAgICAgICAgIHN1bU9mU3F1YXJlZERpZmZzICs9IHNxdWFy
ZWREaWZmICogc3F1YXJlZERpZmY7CiAgICAgICAgIH07Ci0gICAgICAgIHJldHVybiBhbHRlcm5h
dGVDb21wdXRlU3RhdGlzdGljcy5tZWFuKGFycmF5T2ZTcXVhcmVkRGlmZnMpOworICAgICAgICBy
ZXR1cm4gc3VtT2ZTcXVhcmVkRGlmZnMgLyAoYXJyYXkubGVuZ3RoIC0gMSk7CiAgICAgfSwKICAg
ICBzdGRldjogZnVuY3Rpb24oYXJyYXkpIHsKICAgICAgICAgcmV0dXJuIE1hdGguc3FydChhbHRl
cm5hdGVDb21wdXRlU3RhdGlzdGljcy52YXJpYW5jZShhcnJheSkpOwpAQCAtNTIsNyArNTEsNyBA
QCB2YXIgYWx0ZXJuYXRlQ29tcHV0ZVN0YXRpc3RpY3MgPSB7CiAKIDxzY3JpcHQgdHlwZT0idGV4
dC9qYXZhc2NyaXB0Ij4KIGRlc2NyaXB0aW9uKCJUaGlzIHRlc3QgdmVyaWZpZXMgUGVyZlRlc3RS
dW5uZXIuY29tcHV0ZVN0YXRpc3RpY3MoKSwgIiArCi0gICAgICAgICAgICAiaW5jbHVkaW5nOiBt
aW4sIG1heCwgbWVkaWFuLCBtZWFuLCBzdW0sIHZhcmlhbmNlLCBhbmQgc3RkZXYuIik7CisgICAg
ICAgICAgICAiaW5jbHVkaW5nOiBtaW4sIG1heCwgbWVkaWFuLCBtZWFuLCB2YXJpYW5jZSwgYW5k
IHN0ZGV2LiIpOwogPC9zY3JpcHQ+CiAKIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgpAQCAtNjks
NyArNjgsNiBAQCBzaG91bGRFdmFsdWF0ZVRvKCJzdGF0cy5taW4iLCAwKTsKIHNob3VsZEV2YWx1
YXRlVG8oInN0YXRzLm1heCIsIDApOwogc2hvdWxkRXZhbHVhdGVUbygic3RhdHMubWVkaWFuIiwg
MCk7CiBzaG91bGRFdmFsdWF0ZVRvKCJzdGF0cy5tZWFuIiwgMCk7Ci1zaG91bGRFdmFsdWF0ZVRv
KCJzdGF0cy5zdW0iLCAwKTsKIHNob3VsZEV2YWx1YXRlVG8oInN0YXRzLnZhcmlhbmNlIiwgMCk7
CiBzaG91bGRFdmFsdWF0ZVRvKCJzdGF0cy5zdGRldiIsIDApOwogZGVidWcoIiIpOwpAQCAtODUs
MTMgKzgzLDExIEBAIHNob3VsZEV2YWx1YXRlVG8oInN0YXRzLm1pbiIsIDEpOwogc2hvdWxkRXZh
bHVhdGVUbygic3RhdHMubWF4IiwgMjApOwogc2hvdWxkRXZhbHVhdGVUbygic3RhdHMubWVkaWFu
IiwgNSk7CiBzaG91bGRFdmFsdWF0ZVRvKCJzdGF0cy5tZWFuIiwgKDM4LzUpKTsKLXNob3VsZEV2
YWx1YXRlVG8oInN0YXRzLnN1bSIsICgxKzIrNSsxMCsyMCkpOwogLy8gdXNpbmcgYWx0ZXJuYXRl
IGltcGxlbWVudGF0aW9uCiBzaG91bGRFdmFsdWF0ZVRvKCJzdGF0cy5taW4iLCBhbHRlcm5hdGVD
b21wdXRlU3RhdGlzdGljcy5taW4oZGF0YSkpOwogc2hvdWxkRXZhbHVhdGVUbygic3RhdHMubWF4
IiwgYWx0ZXJuYXRlQ29tcHV0ZVN0YXRpc3RpY3MubWF4KGRhdGEpKTsKIHNob3VsZEV2YWx1YXRl
VG8oInN0YXRzLm1lZGlhbiIsIGFsdGVybmF0ZUNvbXB1dGVTdGF0aXN0aWNzLm1lZGlhbihkYXRh
KSk7CiBzaG91bGRFdmFsdWF0ZVRvKCJzdGF0cy5tZWFuIiwgYWx0ZXJuYXRlQ29tcHV0ZVN0YXRp
c3RpY3MubWVhbihkYXRhKSk7Ci1zaG91bGRFdmFsdWF0ZVRvKCJzdGF0cy5zdW0iLCBhbHRlcm5h
dGVDb21wdXRlU3RhdGlzdGljcy5zdW0oZGF0YSkpOwogc2hvdWxkQmVDbG9zZVRvKCJzdGF0cy52
YXJpYW5jZSIsIGFsdGVybmF0ZUNvbXB1dGVTdGF0aXN0aWNzLnZhcmlhbmNlKGRhdGEpLCAwLjAw
MDEpOwogc2hvdWxkQmVDbG9zZVRvKCJzdGF0cy5zdGRldiIsIGFsdGVybmF0ZUNvbXB1dGVTdGF0
aXN0aWNzLnN0ZGV2KGRhdGEpLCAwLjAwMDEpOwogZGVidWcoIiIpOwpAQCAtMTA3LDEzICsxMDMs
MTEgQEAgc2hvdWxkRXZhbHVhdGVUbygic3RhdHMubWluIiwgLTIwKTsKIHNob3VsZEV2YWx1YXRl
VG8oInN0YXRzLm1heCIsIC0xKTsKIHNob3VsZEV2YWx1YXRlVG8oInN0YXRzLm1lZGlhbiIsIC01
KTsKIHNob3VsZEV2YWx1YXRlVG8oInN0YXRzLm1lYW4iLCAoLTM4LzUpKTsKLXNob3VsZEV2YWx1
YXRlVG8oInN0YXRzLnN1bSIsICgtMS0yLTUtMTAtMjApKTsKIC8vIHVzaW5nIGFsdGVybmF0ZSBp
bXBsZW1lbnRhdGlvbgogc2hvdWxkRXZhbHVhdGVUbygic3RhdHMubWluIiwgYWx0ZXJuYXRlQ29t
cHV0ZVN0YXRpc3RpY3MubWluKGRhdGEpKTsKIHNob3VsZEV2YWx1YXRlVG8oInN0YXRzLm1heCIs
IGFsdGVybmF0ZUNvbXB1dGVTdGF0aXN0aWNzLm1heChkYXRhKSk7CiBzaG91bGRFdmFsdWF0ZVRv
KCJzdGF0cy5tZWRpYW4iLCBhbHRlcm5hdGVDb21wdXRlU3RhdGlzdGljcy5tZWRpYW4oZGF0YSkp
Owogc2hvdWxkRXZhbHVhdGVUbygic3RhdHMubWVhbiIsIGFsdGVybmF0ZUNvbXB1dGVTdGF0aXN0
aWNzLm1lYW4oZGF0YSkpOwotc2hvdWxkRXZhbHVhdGVUbygic3RhdHMuc3VtIiwgYWx0ZXJuYXRl
Q29tcHV0ZVN0YXRpc3RpY3Muc3VtKGRhdGEpKTsKIHNob3VsZEJlQ2xvc2VUbygic3RhdHMudmFy
aWFuY2UiLCBhbHRlcm5hdGVDb21wdXRlU3RhdGlzdGljcy52YXJpYW5jZShkYXRhKSwgMC4wMDAx
KTsKIHNob3VsZEJlQ2xvc2VUbygic3RhdHMuc3RkZXYiLCBhbHRlcm5hdGVDb21wdXRlU3RhdGlz
dGljcy5zdGRldihkYXRhKSwgMC4wMDAxKTsKIGRlYnVnKCIiKTsKSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvaGFybmVzcy9wZXJmdGVzdHMvcnVucy1wZXItc2Vjb25kLWxvZy1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9oYXJuZXNzL3BlcmZ0ZXN0cy9ydW5zLXBl
ci1zZWNvbmQtbG9nLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTI5OTU5KQorKysgTGF5b3V0VGVz
dHMvZmFzdC9oYXJuZXNzL3BlcmZ0ZXN0cy9ydW5zLXBlci1zZWNvbmQtbG9nLWV4cGVjdGVkLnR4
dAkod29ya2luZyBjb3B5KQpAQCAtMTIsNyArMTIsNyBAQCBUaW1lOgogdmFsdWVzIDEsIDIsIDMs
IDQsIDUgcnVucy9zCiBhdmcgMyBydW5zL3MKIG1lZGlhbiAzIHJ1bnMvcwotc3RkZXYgMS40MSBy
dW5zL3MKK3N0ZGV2IDEuNTggcnVucy9zCiBtaW4gMSBydW5zL3MKIG1heCA1IHJ1bnMvcwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>166623</attachid>
            <date>2012-10-02 00:04:58 -0700</date>
            <delta_ts>2012-10-02 00:17:26 -0700</delta_ts>
            <desc>Rebaselined</desc>
            <filename>98115.3.patch</filename>
            <type>text/plain</type>
            <size>14100</size>
            <attacher name="Philip Rogers">pdr</attacher>
            
              <data encoding="base64">SW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1h
bmNlVGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMzAxMjUpCisrKyBQZXJmb3JtYW5jZVRlc3Rz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1IEBACisyMDEyLTEwLTAxICBQ
aGlsaXAgUm9nZXJzICA8cGRyQGdvb2dsZS5jb20+CisKKyAgICAgICAgRml4IFBlcmZUZXN0IHN0
YW5kYXJkIGRldmlhdGlvbiBjYWxjdWxhdGlvbi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTk4MTE1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgUHJldmlvdXNseSBvdXIgc3RhbmRhcmQgZGV2aWF0aW9uIGNh
bGN1bGF0aW9uIHdhcyBpbmNvcnJlY3QuIFRoaXMgcGF0Y2gKKyAgICAgICAgdXBkYXRlcyBwZXJm
dGVzdC5weSdzIGFsZ29yaXRobSB0byBjYWxjdWxhdGUgdGhlIHNhbXBsZSBzdGFuZGFyZCBkZXZp
YXRpb24KKyAgICAgICAgKHdpdGggQmVzc2VsJ3MgY29ycmVjdGlvbikuIEFuIGV4aXN0aW5nIHRl
c3QgaGFzIGJlZW4gbW9kaWZpZWQgdG8gcHJvdmUKKyAgICAgICAgb3VyIG5ldyByZXN1bHRzLgor
CisgICAgICAgIFRoaXMgcGF0Y2ggYWxzbyB1cGRhdGVzIHJ1bm5lci5qcyB0byB1c2UgQmVzc2Vs
J3MgY29ycmVjdGlvbiBpbgorICAgICAgICBpdHMgc2FtcGxlIHN0YW5kYXJkIGRldmlhdGlvbiBj
YWxjdWxhdGlvbiwgd2hpY2ggaXMgbW9yZSBhY2N1cmF0ZQorICAgICAgICBmb3Igc21hbGwgc2Ft
cGxlIHNpemVzLgorCisgICAgICAgIEFkZGl0aW9uYWxseSwgcnVubmVyLmpzIGhhcyBiZWVuIG1v
ZGlmaWVkIHRvIG5vdCBjYWxjdWxhdGUKKyAgICAgICAgdGhlICdzdW0nIHN0YXRpc3RpYywgd2hp
Y2ggd2FzIG5vdCB2ZXJ5IHVzZWZ1bC4KKworICAgICAgICAqIHJlc291cmNlcy9ydW5uZXIuanM6
CisgICAgICAgIChQZXJmVGVzdFJ1bm5lci5jb21wdXRlU3RhdGlzdGljcyk6CisKIDIwMTItMTAt
MDEgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUGVyZlRlc3RS
dW5uZXI6IE1vdmUgYWxsIGZ1bmN0aW9ucyBpbnRvIHRoZSBjbG9zdXJlIGFuZCBhbHdheXMgdXNl
IGRvdWJsZSBxdW90YXRpb24gZm9yIHN0cmluZyBsaXRlcmFscwpJbmRleDogUGVyZm9ybWFuY2VU
ZXN0cy9yZXNvdXJjZXMvcnVubmVyLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMv
cmVzb3VyY2VzL3J1bm5lci5qcwkocmV2aXNpb24gMTMwMTI3KQorKysgUGVyZm9ybWFuY2VUZXN0
cy9yZXNvdXJjZXMvcnVubmVyLmpzCSh3b3JraW5nIGNvcHkpCkBAIC02OSwyMCArNjksMTggQEAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CiAgICAgICAgICAgICBtZWRpYW46IGRhdGEubGVuZ3Ro
ICUgMiA/IGRhdGFbbWlkZGxlXSA6IChkYXRhW21pZGRsZSAtIDFdICsgZGF0YVttaWRkbGVdKSAv
IDIsCiAgICAgICAgIH07CiAKLSAgICAgICAgLy8gQ29tcHV0ZSB0aGUgbWVhbiBhbmQgdmFyaWFu
Y2UgdXNpbmcgYSBudW1lcmljYWxseSBzdGFibGUgYWxnb3JpdGhtLgorICAgICAgICAvLyBDb21w
dXRlIHRoZSBtZWFuIGFuZCB2YXJpYW5jZSB1c2luZyBLbnV0aCdzIG9ubGluZSBhbGdvcml0aG0g
KGhhcyBnb29kIG51bWVyaWNhbCBzdGFiaWxpdHkpLgogICAgICAgICB2YXIgc3F1YXJlU3VtID0g
MDsKICAgICAgICAgcmVzdWx0LnZhbHVlcyA9IHRpbWVzOwotICAgICAgICByZXN1bHQubWVhbiA9
IGRhdGFbMF07Ci0gICAgICAgIHJlc3VsdC5zdW0gPSBkYXRhWzBdOwotICAgICAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IGRhdGEubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgcmVzdWx0Lm1lYW4gPSAw
OworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRhdGEubGVuZ3RoOyArK2kpIHsKICAgICAg
ICAgICAgIHZhciB4ID0gZGF0YVtpXTsKICAgICAgICAgICAgIHZhciBkZWx0YSA9IHggLSByZXN1
bHQubWVhbjsKICAgICAgICAgICAgIHZhciBzd2VlcCA9IGkgKyAxLjA7CiAgICAgICAgICAgICBy
ZXN1bHQubWVhbiArPSBkZWx0YSAvIHN3ZWVwOwotICAgICAgICAgICAgcmVzdWx0LnN1bSArPSB4
OwotICAgICAgICAgICAgc3F1YXJlU3VtICs9IGRlbHRhICogZGVsdGEgKiAoaSAvIHN3ZWVwKTsK
KyAgICAgICAgICAgIHNxdWFyZVN1bSArPSBkZWx0YSAqICh4IC0gcmVzdWx0Lm1lYW4pOwogICAg
ICAgICB9Ci0gICAgICAgIHJlc3VsdC52YXJpYW5jZSA9IHNxdWFyZVN1bSAvIGRhdGEubGVuZ3Ro
OworICAgICAgICByZXN1bHQudmFyaWFuY2UgPSBzcXVhcmVTdW0gLyAoZGF0YS5sZW5ndGggLSAx
KTsKICAgICAgICAgcmVzdWx0LnN0ZGV2ID0gTWF0aC5zcXJ0KHJlc3VsdC52YXJpYW5jZSk7CiAg
ICAgICAgIHJlc3VsdC51bml0ID0gdW5pdCB8fCAibXMiOwogCkluZGV4OiBUb29scy9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMzAxMjUpCisrKyBU
b29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzNCBAQAorMjAxMi0xMC0w
MSAgUGhpbGlwIFJvZ2VycyAgPHBkckBnb29nbGUuY29tPgorCisgICAgICAgIEZpeCBQZXJmVGVz
dCBzdGFuZGFyZCBkZXZpYXRpb24gY2FsY3VsYXRpb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODExNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFByZXZpb3VzbHkgb3VyIHN0YW5kYXJkIGRldmlhdGlv
biBjYWxjdWxhdGlvbiB3YXMgaW5jb3JyZWN0LiBUaGlzIHBhdGNoCisgICAgICAgIHVwZGF0ZXMg
cGVyZnRlc3QucHkncyBhbGdvcml0aG0gdG8gY2FsY3VsYXRlIHRoZSBzYW1wbGUgc3RhbmRhcmQg
ZGV2aWF0aW9uCisgICAgICAgICh3aXRoIEJlc3NlbCdzIGNvcnJlY3Rpb24pLiBBbiBleGlzdGlu
ZyB0ZXN0IGhhcyBiZWVuIG1vZGlmaWVkIHRvIHByb3ZlCisgICAgICAgIG91ciBuZXcgcmVzdWx0
cy4KKworICAgICAgICBUaGlzIHBhdGNoIGFsc28gdXBkYXRlcyBydW5uZXIuanMgdG8gdXNlIEJl
c3NlbCdzIGNvcnJlY3Rpb24gaW4KKyAgICAgICAgaXRzIHNhbXBsZSBzdGFuZGFyZCBkZXZpYXRp
b24gY2FsY3VsYXRpb24sIHdoaWNoIGlzIG1vcmUgYWNjdXJhdGUKKyAgICAgICAgZm9yIHNtYWxs
IHNhbXBsZSBzaXplcy4KKworICAgICAgICBBZGRpdGlvbmFsbHksIHJ1bm5lci5qcyBoYXMgYmVl
biBtb2RpZmllZCB0byBub3QgY2FsY3VsYXRlCisgICAgICAgIHRoZSAnc3VtJyBzdGF0aXN0aWMs
IHdoaWNoIHdhcyBub3QgdmVyeSB1c2VmdWwuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L3BlcmZvcm1hbmNlX3Rlc3RzL3BlcmZ0ZXN0LnB5OgorCisgICAgICAgICAgICBUaGUgdW51c2Vk
IHZhcmlhYmxlIHZhbHVlU3VtIGhhcyBhbHNvIGJlZW4gcmVtb3ZlZC4KKworICAgICAgICAoUGFn
ZUxvYWRpbmdQZXJmVGVzdC5ydW4pOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcGVyZm9y
bWFuY2VfdGVzdHMvcGVyZnRlc3RfdW5pdHRlc3QucHk6CisKKyAgICAgICAgICAgIFRoaXMgdGVz
dCBjYWxjdWxhdGVzIHRoZSBzdGRldiBvZiB7MjAwMCwgMzAwMCwgLi4uLCAyMDAwMH0gd2hpY2gK
KyAgICAgICAgICAgIHdhcyBoYW5kLWNhbGN1bGF0ZWQgdXNpbmcgYSBzcHJlYWRzaGVldC4KKwor
ICAgICAgICAoVGVzdFBhZ2VMb2FkaW5nUGVyZlRlc3QudGVzdF9ydW4pOgorCiAyMDEyLTEwLTAx
ICBSYXBoYWVsIEt1Ym8gZGEgQ29zdGEgIDxyYXBoYWVsLmt1Ym8uZGEuY29zdGFAaW50ZWwuY29t
PgogCiAgICAgICAgIHdlYmtpdHB5IHNob3VsZCBhY2NlcHQgYSBkaWZmZXJlbnQgaHR0cGQuY29u
ZiBzcGVjaWZpZWQgYnkgdGhlIHVzZXIKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcGVy
Zm9ybWFuY2VfdGVzdHMvcGVyZnRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9wZXJmb3JtYW5jZV90ZXN0cy9wZXJmdGVzdC5weQkocmV2aXNpb24gMTI5OTU5KQor
KysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wZXJmb3JtYW5jZV90ZXN0cy9wZXJmdGVzdC5weQko
d29ya2luZyBjb3B5KQpAQCAtMjE4LDE1ICsyMTgsMTQgQEAgY2xhc3MgUGFnZUxvYWRpbmdQZXJm
VGVzdChQZXJmVGVzdCk6CiAKICAgICAgICAgc29ydGVkX3Rlc3RfdGltZXMgPSBzb3J0ZWQodGVz
dF90aW1lcykKIAotICAgICAgICAjIENvbXB1dGUgdGhlIG1lYW4gYW5kIHZhcmlhbmNlIHVzaW5n
IGEgbnVtZXJpY2FsbHkgc3RhYmxlIGFsZ29yaXRobS4KKyAgICAgICAgIyBDb21wdXRlIHRoZSBt
ZWFuIGFuZCB2YXJpYW5jZSB1c2luZyBLbnV0aCdzIG9ubGluZSBhbGdvcml0aG0gKGhhcyBnb29k
IG51bWVyaWNhbCBzdGFiaWxpdHkpLgogICAgICAgICBzcXVhcmVTdW0gPSAwCiAgICAgICAgIG1l
YW4gPSAwCi0gICAgICAgIHZhbHVlU3VtID0gc3VtKHNvcnRlZF90ZXN0X3RpbWVzKQogICAgICAg
ICBmb3IgaSwgdGltZSBpbiBlbnVtZXJhdGUoc29ydGVkX3Rlc3RfdGltZXMpOgogICAgICAgICAg
ICAgZGVsdGEgPSB0aW1lIC0gbWVhbgogICAgICAgICAgICAgc3dlZXAgPSBpICsgMS4wCiAgICAg
ICAgICAgICBtZWFuICs9IGRlbHRhIC8gc3dlZXAKLSAgICAgICAgICAgIHNxdWFyZVN1bSArPSBk
ZWx0YSAqIGRlbHRhICogKGkgLyBzd2VlcCkKKyAgICAgICAgICAgIHNxdWFyZVN1bSArPSBkZWx0
YSAqICh0aW1lIC0gbWVhbikKIAogICAgICAgICBtaWRkbGUgPSBpbnQobGVuKHRlc3RfdGltZXMp
IC8gMikKICAgICAgICAgcmVzdWx0cyA9IHsndmFsdWVzJzogdGVzdF90aW1lcywKQEAgLTIzNCw3
ICsyMzMsNyBAQCBjbGFzcyBQYWdlTG9hZGluZ1BlcmZUZXN0KFBlcmZUZXN0KToKICAgICAgICAg
ICAgICdtaW4nOiBzb3J0ZWRfdGVzdF90aW1lc1swXSwKICAgICAgICAgICAgICdtYXgnOiBzb3J0
ZWRfdGVzdF90aW1lc1stMV0sCiAgICAgICAgICAgICAnbWVkaWFuJzogc29ydGVkX3Rlc3RfdGlt
ZXNbbWlkZGxlXSBpZiBsZW4oc29ydGVkX3Rlc3RfdGltZXMpICUgMiBlbHNlIChzb3J0ZWRfdGVz
dF90aW1lc1ttaWRkbGUgLSAxXSArIHNvcnRlZF90ZXN0X3RpbWVzW21pZGRsZV0pIC8gMiwKLSAg
ICAgICAgICAgICdzdGRldic6IG1hdGguc3FydChzcXVhcmVTdW0pLAorICAgICAgICAgICAgJ3N0
ZGV2JzogbWF0aC5zcXJ0KHNxdWFyZVN1bSAvIChsZW4oc29ydGVkX3Rlc3RfdGltZXMpIC0gMSkp
LAogICAgICAgICAgICAgJ3VuaXQnOiAnbXMnfQogICAgICAgICBzZWxmLm91dHB1dF9zdGF0aXN0
aWNzKHNlbGYudGVzdF9uYW1lKCksIHJlc3VsdHMsICcnKQogICAgICAgICByZXR1cm4ge3NlbGYu
dGVzdF9uYW1lKCk6IHJlc3VsdHN9CkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BlcmZv
cm1hbmNlX3Rlc3RzL3BlcmZ0ZXN0X3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvcGVyZm9ybWFuY2VfdGVzdHMvcGVyZnRlc3RfdW5pdHRlc3QucHkJKHJl
dmlzaW9uIDEyOTk1OSkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcGVyZm9ybWFuY2VfdGVz
dHMvcGVyZnRlc3RfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTExNywxMyArMTE3LDEz
IEBAIGNsYXNzIFRlc3RQYWdlTG9hZGluZ1BlcmZUZXN0KHVuaXR0ZXN0LlQKICAgICAgICAgb3V0
cHV0X2NhcHR1cmUuY2FwdHVyZV9vdXRwdXQoKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHRlc3QucnVuKGRyaXZlciwgTm9uZSksCi0gICAgICAgICAgICAgICAg
eydzb21lLXRlc3QnOiB7J21heCc6IDIwMDAwLCAnYXZnJzogMTEwMDAuMCwgJ21lZGlhbic6IDEx
MDAwLCAnc3RkZXYnOiBtYXRoLnNxcnQoNTcwICogMTAwMCAqIDEwMDApLCAnbWluJzogMjAwMCwg
J3VuaXQnOiAnbXMnLAorICAgICAgICAgICAgICAgIHsnc29tZS10ZXN0JzogeydtYXgnOiAyMDAw
MCwgJ2F2Zyc6IDExMDAwLjAsICdtZWRpYW4nOiAxMTAwMCwgJ3N0ZGV2JzogNTYyNy4zMTQzMzg3
MTEzNzgsICdtaW4nOiAyMDAwLCAndW5pdCc6ICdtcycsCiAgICAgICAgICAgICAgICAgICAgICd2
YWx1ZXMnOiBbaSAqIDEwMDAgZm9yIGkgaW4gcmFuZ2UoMiwgMjEpXX19KQogICAgICAgICBmaW5h
bGx5OgogICAgICAgICAgICAgYWN0dWFsX3N0ZG91dCwgYWN0dWFsX3N0ZGVyciwgYWN0dWFsX2xv
Z3MgPSBvdXRwdXRfY2FwdHVyZS5yZXN0b3JlX291dHB1dCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoYWN0dWFsX3N0ZG91dCwgJycpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWN0dWFs
X3N0ZGVyciwgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWN0dWFsX2xvZ3MsICdSRVNV
TFQgc29tZS10ZXN0PSAxMTAwMC4wIG1zXG5tZWRpYW49IDExMDAwIG1zLCBzdGRldj0gMjM4NzQu
NjcyNzcyNiBtcywgbWluPSAyMDAwIG1zLCBtYXg9IDIwMDAwIG1zXG4nKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGFjdHVhbF9sb2dzLCAnUkVTVUxUIHNvbWUtdGVzdD0gMTEwMDAuMCBtc1xu
bWVkaWFuPSAxMTAwMCBtcywgc3RkZXY9IDU2MjcuMzE0MzM4NzEgbXMsIG1pbj0gMjAwMCBtcywg
bWF4PSAyMDAwMCBtc1xuJykKIAogICAgIGRlZiB0ZXN0X3J1bl93aXRoX2JhZF9vdXRwdXQoc2Vs
Zik6CiAgICAgICAgIG91dHB1dF9jYXB0dXJlID0gT3V0cHV0Q2FwdHVyZSgpCkluZGV4OiBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAxMzAxMjUpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwyNiBAQAorMjAxMi0xMC0wMSAgUGhpbGlwIFJvZ2VycyAgPHBkckBnb29nbGUu
Y29tPgorCisgICAgICAgIEZpeCBQZXJmVGVzdCBzdGFuZGFyZCBkZXZpYXRpb24gY2FsY3VsYXRp
b24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODEx
NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFByZXZp
b3VzbHkgb3VyIHN0YW5kYXJkIGRldmlhdGlvbiBjYWxjdWxhdGlvbiB3YXMgaW5jb3JyZWN0LiBU
aGlzIHBhdGNoCisgICAgICAgIHVwZGF0ZXMgcGVyZnRlc3QucHkncyBhbGdvcml0aG0gdG8gY2Fs
Y3VsYXRlIHRoZSBzYW1wbGUgc3RhbmRhcmQgZGV2aWF0aW9uCisgICAgICAgICh3aXRoIEJlc3Nl
bCdzIGNvcnJlY3Rpb24pLiBBbiBleGlzdGluZyB0ZXN0IGhhcyBiZWVuIG1vZGlmaWVkIHRvIHBy
b3ZlCisgICAgICAgIG91ciBuZXcgcmVzdWx0cy4KKworICAgICAgICBUaGlzIHBhdGNoIGFsc28g
dXBkYXRlcyBydW5uZXIuanMgdG8gdXNlIEJlc3NlbCdzIGNvcnJlY3Rpb24gaW4KKyAgICAgICAg
aXRzIHNhbXBsZSBzdGFuZGFyZCBkZXZpYXRpb24gY2FsY3VsYXRpb24sIHdoaWNoIGlzIG1vcmUg
YWNjdXJhdGUKKyAgICAgICAgZm9yIHNtYWxsIHNhbXBsZSBzaXplcy4KKworICAgICAgICBBZGRp
dGlvbmFsbHksIHJ1bm5lci5qcyBoYXMgYmVlbiBtb2RpZmllZCB0byBub3QgY2FsY3VsYXRlCisg
ICAgICAgIHRoZSAnc3VtJyBzdGF0aXN0aWMsIHdoaWNoIHdhcyBub3QgdmVyeSB1c2VmdWwuCisK
KyAgICAgICAgKiBmYXN0L2hhcm5lc3MvcGVyZnRlc3RzL3BlcmYtcnVubmVyLWNvbXB1dGUtc3Rh
dGlzdGljcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9oYXJuZXNzL3BlcmZ0ZXN0cy9w
ZXJmLXJ1bm5lci1jb21wdXRlLXN0YXRpc3RpY3MuaHRtbDoKKyAgICAgICAgKiBmYXN0L2hhcm5l
c3MvcGVyZnRlc3RzL3J1bnMtcGVyLXNlY29uZC1sb2ctZXhwZWN0ZWQudHh0OgorCiAyMDEyLTEw
LTAxICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdl
YiBJbnNwZWN0b3I6IG1vdmUgY29tcGxldGlvbnMgY2FsY3VsYXRpb24gaW50byBSdW50aW1lTW9k
ZWwgKHBhcnQgMSkKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvaGFybmVzcy9wZXJmdGVzdHMvcGVy
Zi1ydW5uZXItY29tcHV0ZS1zdGF0aXN0aWNzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2hhcm5lc3MvcGVyZnRlc3RzL3BlcmYtcnVubmVyLWNvbXB1dGUtc3Rh
dGlzdGljcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDEzMDEyNykKKysrIExheW91dFRlc3RzL2Zh
c3QvaGFybmVzcy9wZXJmdGVzdHMvcGVyZi1ydW5uZXItY29tcHV0ZS1zdGF0aXN0aWNzLWV4cGVj
dGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDQgQEAKLVRoaXMgdGVzdCB2ZXJpZmll
cyBQZXJmVGVzdFJ1bm5lci5jb21wdXRlU3RhdGlzdGljcygpLCBpbmNsdWRpbmc6IG1pbiwgbWF4
LCBtZWRpYW4sIG1lYW4sIHN1bSwgdmFyaWFuY2UsIGFuZCBzdGRldi4KK1RoaXMgdGVzdCB2ZXJp
ZmllcyBQZXJmVGVzdFJ1bm5lci5jb21wdXRlU3RhdGlzdGljcygpLCBpbmNsdWRpbmc6IG1pbiwg
bWF4LCBtZWRpYW4sIG1lYW4sIHZhcmlhbmNlLCBhbmQgc3RkZXYuCiAKIE9uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4KIApAQCAtOCw3ICs4LDYgQEAgUEFTUyBzdGF0cy5taW4gaXMgMAogUEFTUyBz
dGF0cy5tYXggaXMgMAogUEFTUyBzdGF0cy5tZWRpYW4gaXMgMAogUEFTUyBzdGF0cy5tZWFuIGlz
IDAKLVBBU1Mgc3RhdHMuc3VtIGlzIDAKIFBBU1Mgc3RhdHMudmFyaWFuY2UgaXMgMAogUEFTUyBz
dGF0cy5zdGRldiBpcyAwCiAKQEAgLTIwLDE0ICsxOSwxMiBAQCBQQVNTIHN0YXRzLm1pbiBpcyAx
CiBQQVNTIHN0YXRzLm1heCBpcyAyMAogUEFTUyBzdGF0cy5tZWRpYW4gaXMgNQogUEFTUyBzdGF0
cy5tZWFuIGlzIDcuNgotUEFTUyBzdGF0cy5zdW0gaXMgMzgKIFBBU1Mgc3RhdHMubWluIGlzIDEK
IFBBU1Mgc3RhdHMubWF4IGlzIDIwCiBQQVNTIHN0YXRzLm1lZGlhbiBpcyA1CiBQQVNTIHN0YXRz
Lm1lYW4gaXMgNy42Ci1QQVNTIHN0YXRzLnN1bSBpcyAzOAotUEFTUyBzdGF0cy52YXJpYW5jZSBp
cyB3aXRoaW4gMC4wMDAxIG9mIDQ4LjIzOTk5OTk5OTk5OTk5NQotUEFTUyBzdGF0cy5zdGRldiBp
cyB3aXRoaW4gMC4wMDAxIG9mIDYuOTQ1NTAyMTQxNjc0MTM1CitQQVNTIHN0YXRzLnZhcmlhbmNl
IGlzIHdpdGhpbiAwLjAwMDEgb2YgNjAuMworUEFTUyBzdGF0cy5zdGRldiBpcyB3aXRoaW4gMC4w
MDAxIG9mIDcuNzY1MzA3NDYzMzI2ODcKIAogVGhpcyB0ZXN0IHdpbGwgY2F0Y2ggaWYgYW55IG9y
ZGVyIGRlcGVuZGVuY2llcyBpbiB0aGUgZGF0YSwgc3VjaCBhcwogbmVlZGluZyB0byBiZSBudW1l
cmljYWxseSBzb3J0ZWQsIGFyZSBub3QgcmVzb2x2ZWQgYnkgdGhlIGFsZ29yaXRobS4KQEAgLTM3
LDE0ICszNCwxMiBAQCBQQVNTIHN0YXRzLm1pbiBpcyAtMjAKIFBBU1Mgc3RhdHMubWF4IGlzIC0x
CiBQQVNTIHN0YXRzLm1lZGlhbiBpcyAtNQogUEFTUyBzdGF0cy5tZWFuIGlzIC03LjYKLVBBU1Mg
c3RhdHMuc3VtIGlzIC0zOAogUEFTUyBzdGF0cy5taW4gaXMgLTIwCiBQQVNTIHN0YXRzLm1heCBp
cyAtMQogUEFTUyBzdGF0cy5tZWRpYW4gaXMgLTUKIFBBU1Mgc3RhdHMubWVhbiBpcyAtNy42Ci1Q
QVNTIHN0YXRzLnN1bSBpcyAtMzgKLVBBU1Mgc3RhdHMudmFyaWFuY2UgaXMgd2l0aGluIDAuMDAw
MSBvZiA0OC4yMzk5OTk5OTk5OTk5OTUKLVBBU1Mgc3RhdHMuc3RkZXYgaXMgd2l0aGluIDAuMDAw
MSBvZiA2Ljk0NTUwMjE0MTY3NDEzNQorUEFTUyBzdGF0cy52YXJpYW5jZSBpcyB3aXRoaW4gMC4w
MDAxIG9mIDYwLjMKK1BBU1Mgc3RhdHMuc3RkZXYgaXMgd2l0aGluIDAuMDAwMSBvZiA3Ljc2NTMw
NzQ2MzMyNjg3CiAKIEVuc3VyZSBubyBsYXRlbnQgZGl2aWRlIGJ5IDAncyBmb3IgYW4gZXZlbiBu
dW1iZXIgb2YgZWxlbWVudHMuCiBkYXRhID0gWzAsMCwwLDBdCkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2hhcm5lc3MvcGVyZnRlc3RzL3BlcmYtcnVubmVyLWNvbXB1dGUtc3RhdGlzdGljcy5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvaGFybmVzcy9wZXJmdGVzdHMvcGVyZi1y
dW5uZXItY29tcHV0ZS1zdGF0aXN0aWNzLmh0bWwJKHJldmlzaW9uIDEzMDEyNykKKysrIExheW91
dFRlc3RzL2Zhc3QvaGFybmVzcy9wZXJmdGVzdHMvcGVyZi1ydW5uZXItY29tcHV0ZS1zdGF0aXN0
aWNzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTMyLDEzICszMiwxMiBAQCB2YXIgYWx0ZXJuYXRl
Q29tcHV0ZVN0YXRpc3RpY3MgPSB7CiAgICAgfSwKICAgICB2YXJpYW5jZTogZnVuY3Rpb24oYXJy
YXkpIHsKICAgICAgICAgdmFyIG1lYW4gPSBhbHRlcm5hdGVDb21wdXRlU3RhdGlzdGljcy5tZWFu
KGFycmF5KTsKLSAgICAgICAgdmFyIGFycmF5T2ZTcXVhcmVkRGlmZnMgPSBbXTsKKyAgICAgICAg
dmFyIHN1bU9mU3F1YXJlZERpZmZzID0gMDsKICAgICAgICAgZm9yICh2YXIgaW5kZXggaW4gYXJy
YXkpIHsKICAgICAgICAgICAgIHZhciBzcXVhcmVkRGlmZiA9IGFycmF5W2luZGV4XSAtIG1lYW47
Ci0gICAgICAgICAgICBzcXVhcmVkRGlmZiAqPSBzcXVhcmVkRGlmZjsKLSAgICAgICAgICAgIGFy
cmF5T2ZTcXVhcmVkRGlmZnMucHVzaChzcXVhcmVkRGlmZik7CisgICAgICAgICAgICBzdW1PZlNx
dWFyZWREaWZmcyArPSBzcXVhcmVkRGlmZiAqIHNxdWFyZWREaWZmOwogICAgICAgICB9OwotICAg
ICAgICByZXR1cm4gYWx0ZXJuYXRlQ29tcHV0ZVN0YXRpc3RpY3MubWVhbihhcnJheU9mU3F1YXJl
ZERpZmZzKTsKKyAgICAgICAgcmV0dXJuIHN1bU9mU3F1YXJlZERpZmZzIC8gKGFycmF5Lmxlbmd0
aCAtIDEpOwogICAgIH0sCiAgICAgc3RkZXY6IGZ1bmN0aW9uKGFycmF5KSB7CiAgICAgICAgIHJl
dHVybiBNYXRoLnNxcnQoYWx0ZXJuYXRlQ29tcHV0ZVN0YXRpc3RpY3MudmFyaWFuY2UoYXJyYXkp
KTsKQEAgLTUyLDcgKzUxLDcgQEAgdmFyIGFsdGVybmF0ZUNvbXB1dGVTdGF0aXN0aWNzID0gewog
CiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CiBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0
IHZlcmlmaWVzIFBlcmZUZXN0UnVubmVyLmNvbXB1dGVTdGF0aXN0aWNzKCksICIgKwotICAgICAg
ICAgICAgImluY2x1ZGluZzogbWluLCBtYXgsIG1lZGlhbiwgbWVhbiwgc3VtLCB2YXJpYW5jZSwg
YW5kIHN0ZGV2LiIpOworICAgICAgICAgICAgImluY2x1ZGluZzogbWluLCBtYXgsIG1lZGlhbiwg
bWVhbiwgdmFyaWFuY2UsIGFuZCBzdGRldi4iKTsKIDwvc2NyaXB0PgogCiA8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KQEAgLTY5LDcgKzY4LDYgQEAgc2hvdWxkRXZhbHVhdGVUbygic3RhdHMubWlu
IiwgMCk7CiBzaG91bGRFdmFsdWF0ZVRvKCJzdGF0cy5tYXgiLCAwKTsKIHNob3VsZEV2YWx1YXRl
VG8oInN0YXRzLm1lZGlhbiIsIDApOwogc2hvdWxkRXZhbHVhdGVUbygic3RhdHMubWVhbiIsIDAp
Owotc2hvdWxkRXZhbHVhdGVUbygic3RhdHMuc3VtIiwgMCk7CiBzaG91bGRFdmFsdWF0ZVRvKCJz
dGF0cy52YXJpYW5jZSIsIDApOwogc2hvdWxkRXZhbHVhdGVUbygic3RhdHMuc3RkZXYiLCAwKTsK
IGRlYnVnKCIiKTsKQEAgLTg1LDEzICs4MywxMSBAQCBzaG91bGRFdmFsdWF0ZVRvKCJzdGF0cy5t
aW4iLCAxKTsKIHNob3VsZEV2YWx1YXRlVG8oInN0YXRzLm1heCIsIDIwKTsKIHNob3VsZEV2YWx1
YXRlVG8oInN0YXRzLm1lZGlhbiIsIDUpOwogc2hvdWxkRXZhbHVhdGVUbygic3RhdHMubWVhbiIs
ICgzOC81KSk7Ci1zaG91bGRFdmFsdWF0ZVRvKCJzdGF0cy5zdW0iLCAoMSsyKzUrMTArMjApKTsK
IC8vIHVzaW5nIGFsdGVybmF0ZSBpbXBsZW1lbnRhdGlvbgogc2hvdWxkRXZhbHVhdGVUbygic3Rh
dHMubWluIiwgYWx0ZXJuYXRlQ29tcHV0ZVN0YXRpc3RpY3MubWluKGRhdGEpKTsKIHNob3VsZEV2
YWx1YXRlVG8oInN0YXRzLm1heCIsIGFsdGVybmF0ZUNvbXB1dGVTdGF0aXN0aWNzLm1heChkYXRh
KSk7CiBzaG91bGRFdmFsdWF0ZVRvKCJzdGF0cy5tZWRpYW4iLCBhbHRlcm5hdGVDb21wdXRlU3Rh
dGlzdGljcy5tZWRpYW4oZGF0YSkpOwogc2hvdWxkRXZhbHVhdGVUbygic3RhdHMubWVhbiIsIGFs
dGVybmF0ZUNvbXB1dGVTdGF0aXN0aWNzLm1lYW4oZGF0YSkpOwotc2hvdWxkRXZhbHVhdGVUbygi
c3RhdHMuc3VtIiwgYWx0ZXJuYXRlQ29tcHV0ZVN0YXRpc3RpY3Muc3VtKGRhdGEpKTsKIHNob3Vs
ZEJlQ2xvc2VUbygic3RhdHMudmFyaWFuY2UiLCBhbHRlcm5hdGVDb21wdXRlU3RhdGlzdGljcy52
YXJpYW5jZShkYXRhKSwgMC4wMDAxKTsKIHNob3VsZEJlQ2xvc2VUbygic3RhdHMuc3RkZXYiLCBh
bHRlcm5hdGVDb21wdXRlU3RhdGlzdGljcy5zdGRldihkYXRhKSwgMC4wMDAxKTsKIGRlYnVnKCIi
KTsKQEAgLTEwNywxMyArMTAzLDExIEBAIHNob3VsZEV2YWx1YXRlVG8oInN0YXRzLm1pbiIsIC0y
MCk7CiBzaG91bGRFdmFsdWF0ZVRvKCJzdGF0cy5tYXgiLCAtMSk7CiBzaG91bGRFdmFsdWF0ZVRv
KCJzdGF0cy5tZWRpYW4iLCAtNSk7CiBzaG91bGRFdmFsdWF0ZVRvKCJzdGF0cy5tZWFuIiwgKC0z
OC81KSk7Ci1zaG91bGRFdmFsdWF0ZVRvKCJzdGF0cy5zdW0iLCAoLTEtMi01LTEwLTIwKSk7CiAv
LyB1c2luZyBhbHRlcm5hdGUgaW1wbGVtZW50YXRpb24KIHNob3VsZEV2YWx1YXRlVG8oInN0YXRz
Lm1pbiIsIGFsdGVybmF0ZUNvbXB1dGVTdGF0aXN0aWNzLm1pbihkYXRhKSk7CiBzaG91bGRFdmFs
dWF0ZVRvKCJzdGF0cy5tYXgiLCBhbHRlcm5hdGVDb21wdXRlU3RhdGlzdGljcy5tYXgoZGF0YSkp
Owogc2hvdWxkRXZhbHVhdGVUbygic3RhdHMubWVkaWFuIiwgYWx0ZXJuYXRlQ29tcHV0ZVN0YXRp
c3RpY3MubWVkaWFuKGRhdGEpKTsKIHNob3VsZEV2YWx1YXRlVG8oInN0YXRzLm1lYW4iLCBhbHRl
cm5hdGVDb21wdXRlU3RhdGlzdGljcy5tZWFuKGRhdGEpKTsKLXNob3VsZEV2YWx1YXRlVG8oInN0
YXRzLnN1bSIsIGFsdGVybmF0ZUNvbXB1dGVTdGF0aXN0aWNzLnN1bShkYXRhKSk7CiBzaG91bGRC
ZUNsb3NlVG8oInN0YXRzLnZhcmlhbmNlIiwgYWx0ZXJuYXRlQ29tcHV0ZVN0YXRpc3RpY3MudmFy
aWFuY2UoZGF0YSksIDAuMDAwMSk7CiBzaG91bGRCZUNsb3NlVG8oInN0YXRzLnN0ZGV2IiwgYWx0
ZXJuYXRlQ29tcHV0ZVN0YXRpc3RpY3Muc3RkZXYoZGF0YSksIDAuMDAwMSk7CiBkZWJ1ZygiIik7
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2hhcm5lc3MvcGVyZnRlc3RzL3J1bnMtcGVyLXNlY29u
ZC1sb2ctZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvaGFybmVz
cy9wZXJmdGVzdHMvcnVucy1wZXItc2Vjb25kLWxvZy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDEz
MDEyNykKKysrIExheW91dFRlc3RzL2Zhc3QvaGFybmVzcy9wZXJmdGVzdHMvcnVucy1wZXItc2Vj
b25kLWxvZy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEyLDcgKzEyLDcgQEAgVGlt
ZToKIHZhbHVlcyAyLCA0LCA1LCA4LCAxMCBydW5zL3MKIGF2ZyA1LjggcnVucy9zCiBtZWRpYW4g
NSBydW5zL3MKLXN0ZGV2IDIuODYgcnVucy9zCitzdGRldiAzLjE5IHJ1bnMvcwogbWluIDIgcnVu
cy9zCiBtYXggMTAgcnVucy9zCiAK
</data>
<flag name="review"
          id="179012"
          type_id="1"
          status="+"
          setter="rniwa"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>166626</attachid>
            <date>2012-10-02 00:17:26 -0700</date>
            <delta_ts>2012-10-02 01:10:40 -0700</delta_ts>
            <desc>Added link to algorithm in the ChangeLog</desc>
            <filename>98115.4.patch</filename>
            <type>text/plain</type>
            <size>14466</size>
            <attacher name="Philip Rogers">pdr</attacher>
            
              <data encoding="base64">SW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1h
bmNlVGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMzAxMjUpCisrKyBQZXJmb3JtYW5jZVRlc3Rz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBACisyMDEyLTEwLTAxICBQ
aGlsaXAgUm9nZXJzICA8cGRyQGdvb2dsZS5jb20+CisKKyAgICAgICAgRml4IFBlcmZUZXN0IHN0
YW5kYXJkIGRldmlhdGlvbiBjYWxjdWxhdGlvbi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTk4MTE1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgUHJldmlvdXNseSBvdXIgc3RhbmRhcmQgZGV2aWF0aW9uIGNh
bGN1bGF0aW9uIHdhcyBpbmNvcnJlY3QuIFRoaXMgcGF0Y2gKKyAgICAgICAgdXBkYXRlcyBwZXJm
dGVzdC5weSdzIGFsZ29yaXRobSB0byBjYWxjdWxhdGUgdGhlIHNhbXBsZSBzdGFuZGFyZCBkZXZp
YXRpb24KKyAgICAgICAgKHdpdGggQmVzc2VsJ3MgY29ycmVjdGlvbikgdXNpbmcgS251dGgncyBv
bmxpbmUgYWxnb3JpdGhtOgorICAgICAgICBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0Fs
Z29yaXRobXNfZm9yX2NhbGN1bGF0aW5nX3ZhcmlhbmNlI09ubGluZV9hbGdvcml0aG0KKyAgICAg
ICAgQW4gZXhpc3RpbmcgdGVzdCBoYXMgYmVlbiBtb2RpZmllZCB0byBwcm92ZSBvdXIgbmV3IHJl
c3VsdHMuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhbHNvIHVwZGF0ZXMgcnVubmVyLmpzIHRvIHVz
ZSBCZXNzZWwncyBjb3JyZWN0aW9uIGluCisgICAgICAgIGl0cyBzYW1wbGUgc3RhbmRhcmQgZGV2
aWF0aW9uIGNhbGN1bGF0aW9uLCB3aGljaCBpcyBtb3JlIGFjY3VyYXRlCisgICAgICAgIGZvciBz
bWFsbCBzYW1wbGUgc2l6ZXMuCisKKyAgICAgICAgQWRkaXRpb25hbGx5LCBydW5uZXIuanMgaGFz
IGJlZW4gbW9kaWZpZWQgdG8gbm90IGNhbGN1bGF0ZQorICAgICAgICB0aGUgJ3N1bScgc3RhdGlz
dGljLCB3aGljaCB3YXMgbm90IHZlcnkgdXNlZnVsLgorCisgICAgICAgICogcmVzb3VyY2VzL3J1
bm5lci5qczoKKyAgICAgICAgKFBlcmZUZXN0UnVubmVyLmNvbXB1dGVTdGF0aXN0aWNzKToKKwog
MjAxMi0xMC0wMSAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBQ
ZXJmVGVzdFJ1bm5lcjogTW92ZSBhbGwgZnVuY3Rpb25zIGludG8gdGhlIGNsb3N1cmUgYW5kIGFs
d2F5cyB1c2UgZG91YmxlIHF1b3RhdGlvbiBmb3Igc3RyaW5nIGxpdGVyYWxzCkluZGV4OiBQZXJm
b3JtYW5jZVRlc3RzL3Jlc291cmNlcy9ydW5uZXIuanMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFu
Y2VUZXN0cy9yZXNvdXJjZXMvcnVubmVyLmpzCShyZXZpc2lvbiAxMzAxMjcpCisrKyBQZXJmb3Jt
YW5jZVRlc3RzL3Jlc291cmNlcy9ydW5uZXIuanMJKHdvcmtpbmcgY29weSkKQEAgLTY5LDIwICs2
OSwxOCBAQCBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKICAgICAgICAgICAgIG1lZGlhbjogZGF0
YS5sZW5ndGggJSAyID8gZGF0YVttaWRkbGVdIDogKGRhdGFbbWlkZGxlIC0gMV0gKyBkYXRhW21p
ZGRsZV0pIC8gMiwKICAgICAgICAgfTsKIAotICAgICAgICAvLyBDb21wdXRlIHRoZSBtZWFuIGFu
ZCB2YXJpYW5jZSB1c2luZyBhIG51bWVyaWNhbGx5IHN0YWJsZSBhbGdvcml0aG0uCisgICAgICAg
IC8vIENvbXB1dGUgdGhlIG1lYW4gYW5kIHZhcmlhbmNlIHVzaW5nIEtudXRoJ3Mgb25saW5lIGFs
Z29yaXRobSAoaGFzIGdvb2QgbnVtZXJpY2FsIHN0YWJpbGl0eSkuCiAgICAgICAgIHZhciBzcXVh
cmVTdW0gPSAwOwogICAgICAgICByZXN1bHQudmFsdWVzID0gdGltZXM7Ci0gICAgICAgIHJlc3Vs
dC5tZWFuID0gZGF0YVswXTsKLSAgICAgICAgcmVzdWx0LnN1bSA9IGRhdGFbMF07Ci0gICAgICAg
IGZvciAodmFyIGkgPSAxOyBpIDwgZGF0YS5sZW5ndGg7ICsraSkgeworICAgICAgICByZXN1bHQu
bWVhbiA9IDA7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGF0YS5sZW5ndGg7ICsraSkg
ewogICAgICAgICAgICAgdmFyIHggPSBkYXRhW2ldOwogICAgICAgICAgICAgdmFyIGRlbHRhID0g
eCAtIHJlc3VsdC5tZWFuOwogICAgICAgICAgICAgdmFyIHN3ZWVwID0gaSArIDEuMDsKICAgICAg
ICAgICAgIHJlc3VsdC5tZWFuICs9IGRlbHRhIC8gc3dlZXA7Ci0gICAgICAgICAgICByZXN1bHQu
c3VtICs9IHg7Ci0gICAgICAgICAgICBzcXVhcmVTdW0gKz0gZGVsdGEgKiBkZWx0YSAqIChpIC8g
c3dlZXApOworICAgICAgICAgICAgc3F1YXJlU3VtICs9IGRlbHRhICogKHggLSByZXN1bHQubWVh
bik7CiAgICAgICAgIH0KLSAgICAgICAgcmVzdWx0LnZhcmlhbmNlID0gc3F1YXJlU3VtIC8gZGF0
YS5sZW5ndGg7CisgICAgICAgIHJlc3VsdC52YXJpYW5jZSA9IHNxdWFyZVN1bSAvIChkYXRhLmxl
bmd0aCAtIDEpOwogICAgICAgICByZXN1bHQuc3RkZXYgPSBNYXRoLnNxcnQocmVzdWx0LnZhcmlh
bmNlKTsKICAgICAgICAgcmVzdWx0LnVuaXQgPSB1bml0IHx8ICJtcyI7CiAKSW5kZXg6IFRvb2xz
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzMDEy
NSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM1IEBACisy
MDEyLTEwLTAxICBQaGlsaXAgUm9nZXJzICA8cGRyQGdvb2dsZS5jb20+CisKKyAgICAgICAgRml4
IFBlcmZUZXN0IHN0YW5kYXJkIGRldmlhdGlvbiBjYWxjdWxhdGlvbi4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4MTE1CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUHJldmlvdXNseSBvdXIgc3RhbmRhcmQg
ZGV2aWF0aW9uIGNhbGN1bGF0aW9uIHdhcyBpbmNvcnJlY3QuIFRoaXMgcGF0Y2gKKyAgICAgICAg
dXBkYXRlcyBwZXJmdGVzdC5weSdzIGFsZ29yaXRobSB0byBjYWxjdWxhdGUgdGhlIHNhbXBsZSBz
dGFuZGFyZCBkZXZpYXRpb24KKyAgICAgICAgKHdpdGggQmVzc2VsJ3MgY29ycmVjdGlvbikgdXNp
bmcgS251dGgncyBvbmxpbmUgYWxnb3JpdGhtOgorICAgICAgICBodHRwOi8vZW4ud2lraXBlZGlh
Lm9yZy93aWtpL0FsZ29yaXRobXNfZm9yX2NhbGN1bGF0aW5nX3ZhcmlhbmNlI09ubGluZV9hbGdv
cml0aG0KKyAgICAgICAgQW4gZXhpc3RpbmcgdGVzdCBoYXMgYmVlbiBtb2RpZmllZCB0byBwcm92
ZSBvdXIgbmV3IHJlc3VsdHMuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhbHNvIHVwZGF0ZXMgcnVu
bmVyLmpzIHRvIHVzZSBCZXNzZWwncyBjb3JyZWN0aW9uIGluCisgICAgICAgIGl0cyBzYW1wbGUg
c3RhbmRhcmQgZGV2aWF0aW9uIGNhbGN1bGF0aW9uLCB3aGljaCBpcyBtb3JlIGFjY3VyYXRlCisg
ICAgICAgIGZvciBzbWFsbCBzYW1wbGUgc2l6ZXMuCisKKyAgICAgICAgQWRkaXRpb25hbGx5LCBy
dW5uZXIuanMgaGFzIGJlZW4gbW9kaWZpZWQgdG8gbm90IGNhbGN1bGF0ZQorICAgICAgICB0aGUg
J3N1bScgc3RhdGlzdGljLCB3aGljaCB3YXMgbm90IHZlcnkgdXNlZnVsLgorCisgICAgICAgICog
U2NyaXB0cy93ZWJraXRweS9wZXJmb3JtYW5jZV90ZXN0cy9wZXJmdGVzdC5weToKKworICAgICAg
ICAgICAgVGhlIHVudXNlZCB2YXJpYWJsZSB2YWx1ZVN1bSBoYXMgYWxzbyBiZWVuIHJlbW92ZWQu
CisKKyAgICAgICAgKFBhZ2VMb2FkaW5nUGVyZlRlc3QucnVuKToKKyAgICAgICAgKiBTY3JpcHRz
L3dlYmtpdHB5L3BlcmZvcm1hbmNlX3Rlc3RzL3BlcmZ0ZXN0X3VuaXR0ZXN0LnB5OgorCisgICAg
ICAgICAgICBUaGlzIHRlc3QgY2FsY3VsYXRlcyB0aGUgc3RkZXYgb2YgezIwMDAsIDMwMDAsIC4u
LiwgMjAwMDB9IHdoaWNoCisgICAgICAgICAgICB3YXMgaGFuZC1jYWxjdWxhdGVkIHVzaW5nIGEg
c3ByZWFkc2hlZXQuCisKKyAgICAgICAgKFRlc3RQYWdlTG9hZGluZ1BlcmZUZXN0LnRlc3RfcnVu
KToKKwogMjAxMi0xMC0wMSAgUmFwaGFlbCBLdWJvIGRhIENvc3RhICA8cmFwaGFlbC5rdWJvLmRh
LmNvc3RhQGludGVsLmNvbT4KIAogICAgICAgICB3ZWJraXRweSBzaG91bGQgYWNjZXB0IGEgZGlm
ZmVyZW50IGh0dHBkLmNvbmYgc3BlY2lmaWVkIGJ5IHRoZSB1c2VyCkluZGV4OiBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L3BlcmZvcm1hbmNlX3Rlc3RzL3BlcmZ0ZXN0LnB5Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcGVyZm9ybWFuY2VfdGVzdHMvcGVyZnRlc3QucHkJKHJl
dmlzaW9uIDEyOTk1OSkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcGVyZm9ybWFuY2VfdGVz
dHMvcGVyZnRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTIxOCwxNSArMjE4LDE0IEBAIGNsYXNz
IFBhZ2VMb2FkaW5nUGVyZlRlc3QoUGVyZlRlc3QpOgogCiAgICAgICAgIHNvcnRlZF90ZXN0X3Rp
bWVzID0gc29ydGVkKHRlc3RfdGltZXMpCiAKLSAgICAgICAgIyBDb21wdXRlIHRoZSBtZWFuIGFu
ZCB2YXJpYW5jZSB1c2luZyBhIG51bWVyaWNhbGx5IHN0YWJsZSBhbGdvcml0aG0uCisgICAgICAg
ICMgQ29tcHV0ZSB0aGUgbWVhbiBhbmQgdmFyaWFuY2UgdXNpbmcgS251dGgncyBvbmxpbmUgYWxn
b3JpdGhtIChoYXMgZ29vZCBudW1lcmljYWwgc3RhYmlsaXR5KS4KICAgICAgICAgc3F1YXJlU3Vt
ID0gMAogICAgICAgICBtZWFuID0gMAotICAgICAgICB2YWx1ZVN1bSA9IHN1bShzb3J0ZWRfdGVz
dF90aW1lcykKICAgICAgICAgZm9yIGksIHRpbWUgaW4gZW51bWVyYXRlKHNvcnRlZF90ZXN0X3Rp
bWVzKToKICAgICAgICAgICAgIGRlbHRhID0gdGltZSAtIG1lYW4KICAgICAgICAgICAgIHN3ZWVw
ID0gaSArIDEuMAogICAgICAgICAgICAgbWVhbiArPSBkZWx0YSAvIHN3ZWVwCi0gICAgICAgICAg
ICBzcXVhcmVTdW0gKz0gZGVsdGEgKiBkZWx0YSAqIChpIC8gc3dlZXApCisgICAgICAgICAgICBz
cXVhcmVTdW0gKz0gZGVsdGEgKiAodGltZSAtIG1lYW4pCiAKICAgICAgICAgbWlkZGxlID0gaW50
KGxlbih0ZXN0X3RpbWVzKSAvIDIpCiAgICAgICAgIHJlc3VsdHMgPSB7J3ZhbHVlcyc6IHRlc3Rf
dGltZXMsCkBAIC0yMzQsNyArMjMzLDcgQEAgY2xhc3MgUGFnZUxvYWRpbmdQZXJmVGVzdChQZXJm
VGVzdCk6CiAgICAgICAgICAgICAnbWluJzogc29ydGVkX3Rlc3RfdGltZXNbMF0sCiAgICAgICAg
ICAgICAnbWF4Jzogc29ydGVkX3Rlc3RfdGltZXNbLTFdLAogICAgICAgICAgICAgJ21lZGlhbic6
IHNvcnRlZF90ZXN0X3RpbWVzW21pZGRsZV0gaWYgbGVuKHNvcnRlZF90ZXN0X3RpbWVzKSAlIDIg
ZWxzZSAoc29ydGVkX3Rlc3RfdGltZXNbbWlkZGxlIC0gMV0gKyBzb3J0ZWRfdGVzdF90aW1lc1tt
aWRkbGVdKSAvIDIsCi0gICAgICAgICAgICAnc3RkZXYnOiBtYXRoLnNxcnQoc3F1YXJlU3VtKSwK
KyAgICAgICAgICAgICdzdGRldic6IG1hdGguc3FydChzcXVhcmVTdW0gLyAobGVuKHNvcnRlZF90
ZXN0X3RpbWVzKSAtIDEpKSwKICAgICAgICAgICAgICd1bml0JzogJ21zJ30KICAgICAgICAgc2Vs
Zi5vdXRwdXRfc3RhdGlzdGljcyhzZWxmLnRlc3RfbmFtZSgpLCByZXN1bHRzLCAnJykKICAgICAg
ICAgcmV0dXJuIHtzZWxmLnRlc3RfbmFtZSgpOiByZXN1bHRzfQpJbmRleDogVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9wZXJmb3JtYW5jZV90ZXN0cy9wZXJmdGVzdF91bml0dGVzdC5weQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BlcmZvcm1hbmNlX3Rlc3RzL3BlcmZ0ZXN0
X3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAxMjk5NTkpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5
L3BlcmZvcm1hbmNlX3Rlc3RzL3BlcmZ0ZXN0X3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBA
IC0xMTcsMTMgKzExNywxMyBAQCBjbGFzcyBUZXN0UGFnZUxvYWRpbmdQZXJmVGVzdCh1bml0dGVz
dC5UCiAgICAgICAgIG91dHB1dF9jYXB0dXJlLmNhcHR1cmVfb3V0cHV0KCkKICAgICAgICAgdHJ5
OgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXN0LnJ1bihkcml2ZXIsIE5vbmUpLAot
ICAgICAgICAgICAgICAgIHsnc29tZS10ZXN0JzogeydtYXgnOiAyMDAwMCwgJ2F2Zyc6IDExMDAw
LjAsICdtZWRpYW4nOiAxMTAwMCwgJ3N0ZGV2JzogbWF0aC5zcXJ0KDU3MCAqIDEwMDAgKiAxMDAw
KSwgJ21pbic6IDIwMDAsICd1bml0JzogJ21zJywKKyAgICAgICAgICAgICAgICB7J3NvbWUtdGVz
dCc6IHsnbWF4JzogMjAwMDAsICdhdmcnOiAxMTAwMC4wLCAnbWVkaWFuJzogMTEwMDAsICdzdGRl
dic6IDU2MjcuMzE0MzM4NzExMzc4LCAnbWluJzogMjAwMCwgJ3VuaXQnOiAnbXMnLAogICAgICAg
ICAgICAgICAgICAgICAndmFsdWVzJzogW2kgKiAxMDAwIGZvciBpIGluIHJhbmdlKDIsIDIxKV19
fSkKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIGFjdHVhbF9zdGRvdXQsIGFjdHVhbF9z
dGRlcnIsIGFjdHVhbF9sb2dzID0gb3V0cHV0X2NhcHR1cmUucmVzdG9yZV9vdXRwdXQoKQogICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKGFjdHVhbF9zdGRvdXQsICcnKQogICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGFjdHVhbF9zdGRlcnIsICcnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFj
dHVhbF9sb2dzLCAnUkVTVUxUIHNvbWUtdGVzdD0gMTEwMDAuMCBtc1xubWVkaWFuPSAxMTAwMCBt
cywgc3RkZXY9IDIzODc0LjY3Mjc3MjYgbXMsIG1pbj0gMjAwMCBtcywgbWF4PSAyMDAwMCBtc1xu
JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhY3R1YWxfbG9ncywgJ1JFU1VMVCBzb21lLXRl
c3Q9IDExMDAwLjAgbXNcbm1lZGlhbj0gMTEwMDAgbXMsIHN0ZGV2PSA1NjI3LjMxNDMzODcxIG1z
LCBtaW49IDIwMDAgbXMsIG1heD0gMjAwMDAgbXNcbicpCiAKICAgICBkZWYgdGVzdF9ydW5fd2l0
aF9iYWRfb3V0cHV0KHNlbGYpOgogICAgICAgICBvdXRwdXRfY2FwdHVyZSA9IE91dHB1dENhcHR1
cmUoKQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTMwMTI1KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTItMTAtMDEgIFBoaWxpcCBSb2dl
cnMgIDxwZHJAZ29vZ2xlLmNvbT4KKworICAgICAgICBGaXggUGVyZlRlc3Qgc3RhbmRhcmQgZGV2
aWF0aW9uIGNhbGN1bGF0aW9uLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9OTgxMTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBQcmV2aW91c2x5IG91ciBzdGFuZGFyZCBkZXZpYXRpb24gY2FsY3VsYXRpb24g
d2FzIGluY29ycmVjdC4gVGhpcyBwYXRjaAorICAgICAgICB1cGRhdGVzIHBlcmZ0ZXN0LnB5J3Mg
YWxnb3JpdGhtIHRvIGNhbGN1bGF0ZSB0aGUgc2FtcGxlIHN0YW5kYXJkIGRldmlhdGlvbgorICAg
ICAgICAod2l0aCBCZXNzZWwncyBjb3JyZWN0aW9uKSB1c2luZyBLbnV0aCdzIG9ubGluZSBhbGdv
cml0aG06CisgICAgICAgIGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQWxnb3JpdGhtc19m
b3JfY2FsY3VsYXRpbmdfdmFyaWFuY2UjT25saW5lX2FsZ29yaXRobQorICAgICAgICBBbiBleGlz
dGluZyB0ZXN0IGhhcyBiZWVuIG1vZGlmaWVkIHRvIHByb3ZlIG91ciBuZXcgcmVzdWx0cy4KKwor
ICAgICAgICBUaGlzIHBhdGNoIGFsc28gdXBkYXRlcyBydW5uZXIuanMgdG8gdXNlIEJlc3NlbCdz
IGNvcnJlY3Rpb24gaW4KKyAgICAgICAgaXRzIHNhbXBsZSBzdGFuZGFyZCBkZXZpYXRpb24gY2Fs
Y3VsYXRpb24sIHdoaWNoIGlzIG1vcmUgYWNjdXJhdGUKKyAgICAgICAgZm9yIHNtYWxsIHNhbXBs
ZSBzaXplcy4KKworICAgICAgICBBZGRpdGlvbmFsbHksIHJ1bm5lci5qcyBoYXMgYmVlbiBtb2Rp
ZmllZCB0byBub3QgY2FsY3VsYXRlCisgICAgICAgIHRoZSAnc3VtJyBzdGF0aXN0aWMsIHdoaWNo
IHdhcyBub3QgdmVyeSB1c2VmdWwuCisKKyAgICAgICAgKiBmYXN0L2hhcm5lc3MvcGVyZnRlc3Rz
L3BlcmYtcnVubmVyLWNvbXB1dGUtc3RhdGlzdGljcy1leHBlY3RlZC50eHQ6CisgICAgICAgICog
ZmFzdC9oYXJuZXNzL3BlcmZ0ZXN0cy9wZXJmLXJ1bm5lci1jb21wdXRlLXN0YXRpc3RpY3MuaHRt
bDoKKyAgICAgICAgKiBmYXN0L2hhcm5lc3MvcGVyZnRlc3RzL3J1bnMtcGVyLXNlY29uZC1sb2ct
ZXhwZWN0ZWQudHh0OgorCiAyMDEyLTEwLTAxICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IG1vdmUgY29tcGxldGlvbnMgY2Fs
Y3VsYXRpb24gaW50byBSdW50aW1lTW9kZWwgKHBhcnQgMSkKSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvaGFybmVzcy9wZXJmdGVzdHMvcGVyZi1ydW5uZXItY29tcHV0ZS1zdGF0aXN0aWNzLWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2hhcm5lc3MvcGVyZnRlc3Rz
L3BlcmYtcnVubmVyLWNvbXB1dGUtc3RhdGlzdGljcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDEz
MDEyNykKKysrIExheW91dFRlc3RzL2Zhc3QvaGFybmVzcy9wZXJmdGVzdHMvcGVyZi1ydW5uZXIt
Y29tcHV0ZS1zdGF0aXN0aWNzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsx
LDQgQEAKLVRoaXMgdGVzdCB2ZXJpZmllcyBQZXJmVGVzdFJ1bm5lci5jb21wdXRlU3RhdGlzdGlj
cygpLCBpbmNsdWRpbmc6IG1pbiwgbWF4LCBtZWRpYW4sIG1lYW4sIHN1bSwgdmFyaWFuY2UsIGFu
ZCBzdGRldi4KK1RoaXMgdGVzdCB2ZXJpZmllcyBQZXJmVGVzdFJ1bm5lci5jb21wdXRlU3RhdGlz
dGljcygpLCBpbmNsdWRpbmc6IG1pbiwgbWF4LCBtZWRpYW4sIG1lYW4sIHZhcmlhbmNlLCBhbmQg
c3RkZXYuCiAKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVz
c2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIApAQCAtOCw3ICs4LDYgQEAgUEFT
UyBzdGF0cy5taW4gaXMgMAogUEFTUyBzdGF0cy5tYXggaXMgMAogUEFTUyBzdGF0cy5tZWRpYW4g
aXMgMAogUEFTUyBzdGF0cy5tZWFuIGlzIDAKLVBBU1Mgc3RhdHMuc3VtIGlzIDAKIFBBU1Mgc3Rh
dHMudmFyaWFuY2UgaXMgMAogUEFTUyBzdGF0cy5zdGRldiBpcyAwCiAKQEAgLTIwLDE0ICsxOSwx
MiBAQCBQQVNTIHN0YXRzLm1pbiBpcyAxCiBQQVNTIHN0YXRzLm1heCBpcyAyMAogUEFTUyBzdGF0
cy5tZWRpYW4gaXMgNQogUEFTUyBzdGF0cy5tZWFuIGlzIDcuNgotUEFTUyBzdGF0cy5zdW0gaXMg
MzgKIFBBU1Mgc3RhdHMubWluIGlzIDEKIFBBU1Mgc3RhdHMubWF4IGlzIDIwCiBQQVNTIHN0YXRz
Lm1lZGlhbiBpcyA1CiBQQVNTIHN0YXRzLm1lYW4gaXMgNy42Ci1QQVNTIHN0YXRzLnN1bSBpcyAz
OAotUEFTUyBzdGF0cy52YXJpYW5jZSBpcyB3aXRoaW4gMC4wMDAxIG9mIDQ4LjIzOTk5OTk5OTk5
OTk5NQotUEFTUyBzdGF0cy5zdGRldiBpcyB3aXRoaW4gMC4wMDAxIG9mIDYuOTQ1NTAyMTQxNjc0
MTM1CitQQVNTIHN0YXRzLnZhcmlhbmNlIGlzIHdpdGhpbiAwLjAwMDEgb2YgNjAuMworUEFTUyBz
dGF0cy5zdGRldiBpcyB3aXRoaW4gMC4wMDAxIG9mIDcuNzY1MzA3NDYzMzI2ODcKIAogVGhpcyB0
ZXN0IHdpbGwgY2F0Y2ggaWYgYW55IG9yZGVyIGRlcGVuZGVuY2llcyBpbiB0aGUgZGF0YSwgc3Vj
aCBhcwogbmVlZGluZyB0byBiZSBudW1lcmljYWxseSBzb3J0ZWQsIGFyZSBub3QgcmVzb2x2ZWQg
YnkgdGhlIGFsZ29yaXRobS4KQEAgLTM3LDE0ICszNCwxMiBAQCBQQVNTIHN0YXRzLm1pbiBpcyAt
MjAKIFBBU1Mgc3RhdHMubWF4IGlzIC0xCiBQQVNTIHN0YXRzLm1lZGlhbiBpcyAtNQogUEFTUyBz
dGF0cy5tZWFuIGlzIC03LjYKLVBBU1Mgc3RhdHMuc3VtIGlzIC0zOAogUEFTUyBzdGF0cy5taW4g
aXMgLTIwCiBQQVNTIHN0YXRzLm1heCBpcyAtMQogUEFTUyBzdGF0cy5tZWRpYW4gaXMgLTUKIFBB
U1Mgc3RhdHMubWVhbiBpcyAtNy42Ci1QQVNTIHN0YXRzLnN1bSBpcyAtMzgKLVBBU1Mgc3RhdHMu
dmFyaWFuY2UgaXMgd2l0aGluIDAuMDAwMSBvZiA0OC4yMzk5OTk5OTk5OTk5OTUKLVBBU1Mgc3Rh
dHMuc3RkZXYgaXMgd2l0aGluIDAuMDAwMSBvZiA2Ljk0NTUwMjE0MTY3NDEzNQorUEFTUyBzdGF0
cy52YXJpYW5jZSBpcyB3aXRoaW4gMC4wMDAxIG9mIDYwLjMKK1BBU1Mgc3RhdHMuc3RkZXYgaXMg
d2l0aGluIDAuMDAwMSBvZiA3Ljc2NTMwNzQ2MzMyNjg3CiAKIEVuc3VyZSBubyBsYXRlbnQgZGl2
aWRlIGJ5IDAncyBmb3IgYW4gZXZlbiBudW1iZXIgb2YgZWxlbWVudHMuCiBkYXRhID0gWzAsMCww
LDBdCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2hhcm5lc3MvcGVyZnRlc3RzL3BlcmYtcnVubmVy
LWNvbXB1dGUtc3RhdGlzdGljcy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
aGFybmVzcy9wZXJmdGVzdHMvcGVyZi1ydW5uZXItY29tcHV0ZS1zdGF0aXN0aWNzLmh0bWwJKHJl
dmlzaW9uIDEzMDEyNykKKysrIExheW91dFRlc3RzL2Zhc3QvaGFybmVzcy9wZXJmdGVzdHMvcGVy
Zi1ydW5uZXItY29tcHV0ZS1zdGF0aXN0aWNzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTMyLDEz
ICszMiwxMiBAQCB2YXIgYWx0ZXJuYXRlQ29tcHV0ZVN0YXRpc3RpY3MgPSB7CiAgICAgfSwKICAg
ICB2YXJpYW5jZTogZnVuY3Rpb24oYXJyYXkpIHsKICAgICAgICAgdmFyIG1lYW4gPSBhbHRlcm5h
dGVDb21wdXRlU3RhdGlzdGljcy5tZWFuKGFycmF5KTsKLSAgICAgICAgdmFyIGFycmF5T2ZTcXVh
cmVkRGlmZnMgPSBbXTsKKyAgICAgICAgdmFyIHN1bU9mU3F1YXJlZERpZmZzID0gMDsKICAgICAg
ICAgZm9yICh2YXIgaW5kZXggaW4gYXJyYXkpIHsKICAgICAgICAgICAgIHZhciBzcXVhcmVkRGlm
ZiA9IGFycmF5W2luZGV4XSAtIG1lYW47Ci0gICAgICAgICAgICBzcXVhcmVkRGlmZiAqPSBzcXVh
cmVkRGlmZjsKLSAgICAgICAgICAgIGFycmF5T2ZTcXVhcmVkRGlmZnMucHVzaChzcXVhcmVkRGlm
Zik7CisgICAgICAgICAgICBzdW1PZlNxdWFyZWREaWZmcyArPSBzcXVhcmVkRGlmZiAqIHNxdWFy
ZWREaWZmOwogICAgICAgICB9OwotICAgICAgICByZXR1cm4gYWx0ZXJuYXRlQ29tcHV0ZVN0YXRp
c3RpY3MubWVhbihhcnJheU9mU3F1YXJlZERpZmZzKTsKKyAgICAgICAgcmV0dXJuIHN1bU9mU3F1
YXJlZERpZmZzIC8gKGFycmF5Lmxlbmd0aCAtIDEpOwogICAgIH0sCiAgICAgc3RkZXY6IGZ1bmN0
aW9uKGFycmF5KSB7CiAgICAgICAgIHJldHVybiBNYXRoLnNxcnQoYWx0ZXJuYXRlQ29tcHV0ZVN0
YXRpc3RpY3MudmFyaWFuY2UoYXJyYXkpKTsKQEAgLTUyLDcgKzUxLDcgQEAgdmFyIGFsdGVybmF0
ZUNvbXB1dGVTdGF0aXN0aWNzID0gewogCiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+
CiBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IHZlcmlmaWVzIFBlcmZUZXN0UnVubmVyLmNvbXB1dGVT
dGF0aXN0aWNzKCksICIgKwotICAgICAgICAgICAgImluY2x1ZGluZzogbWluLCBtYXgsIG1lZGlh
biwgbWVhbiwgc3VtLCB2YXJpYW5jZSwgYW5kIHN0ZGV2LiIpOworICAgICAgICAgICAgImluY2x1
ZGluZzogbWluLCBtYXgsIG1lZGlhbiwgbWVhbiwgdmFyaWFuY2UsIGFuZCBzdGRldi4iKTsKIDwv
c2NyaXB0PgogCiA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KQEAgLTY5LDcgKzY4LDYgQEAgc2hv
dWxkRXZhbHVhdGVUbygic3RhdHMubWluIiwgMCk7CiBzaG91bGRFdmFsdWF0ZVRvKCJzdGF0cy5t
YXgiLCAwKTsKIHNob3VsZEV2YWx1YXRlVG8oInN0YXRzLm1lZGlhbiIsIDApOwogc2hvdWxkRXZh
bHVhdGVUbygic3RhdHMubWVhbiIsIDApOwotc2hvdWxkRXZhbHVhdGVUbygic3RhdHMuc3VtIiwg
MCk7CiBzaG91bGRFdmFsdWF0ZVRvKCJzdGF0cy52YXJpYW5jZSIsIDApOwogc2hvdWxkRXZhbHVh
dGVUbygic3RhdHMuc3RkZXYiLCAwKTsKIGRlYnVnKCIiKTsKQEAgLTg1LDEzICs4MywxMSBAQCBz
aG91bGRFdmFsdWF0ZVRvKCJzdGF0cy5taW4iLCAxKTsKIHNob3VsZEV2YWx1YXRlVG8oInN0YXRz
Lm1heCIsIDIwKTsKIHNob3VsZEV2YWx1YXRlVG8oInN0YXRzLm1lZGlhbiIsIDUpOwogc2hvdWxk
RXZhbHVhdGVUbygic3RhdHMubWVhbiIsICgzOC81KSk7Ci1zaG91bGRFdmFsdWF0ZVRvKCJzdGF0
cy5zdW0iLCAoMSsyKzUrMTArMjApKTsKIC8vIHVzaW5nIGFsdGVybmF0ZSBpbXBsZW1lbnRhdGlv
bgogc2hvdWxkRXZhbHVhdGVUbygic3RhdHMubWluIiwgYWx0ZXJuYXRlQ29tcHV0ZVN0YXRpc3Rp
Y3MubWluKGRhdGEpKTsKIHNob3VsZEV2YWx1YXRlVG8oInN0YXRzLm1heCIsIGFsdGVybmF0ZUNv
bXB1dGVTdGF0aXN0aWNzLm1heChkYXRhKSk7CiBzaG91bGRFdmFsdWF0ZVRvKCJzdGF0cy5tZWRp
YW4iLCBhbHRlcm5hdGVDb21wdXRlU3RhdGlzdGljcy5tZWRpYW4oZGF0YSkpOwogc2hvdWxkRXZh
bHVhdGVUbygic3RhdHMubWVhbiIsIGFsdGVybmF0ZUNvbXB1dGVTdGF0aXN0aWNzLm1lYW4oZGF0
YSkpOwotc2hvdWxkRXZhbHVhdGVUbygic3RhdHMuc3VtIiwgYWx0ZXJuYXRlQ29tcHV0ZVN0YXRp
c3RpY3Muc3VtKGRhdGEpKTsKIHNob3VsZEJlQ2xvc2VUbygic3RhdHMudmFyaWFuY2UiLCBhbHRl
cm5hdGVDb21wdXRlU3RhdGlzdGljcy52YXJpYW5jZShkYXRhKSwgMC4wMDAxKTsKIHNob3VsZEJl
Q2xvc2VUbygic3RhdHMuc3RkZXYiLCBhbHRlcm5hdGVDb21wdXRlU3RhdGlzdGljcy5zdGRldihk
YXRhKSwgMC4wMDAxKTsKIGRlYnVnKCIiKTsKQEAgLTEwNywxMyArMTAzLDExIEBAIHNob3VsZEV2
YWx1YXRlVG8oInN0YXRzLm1pbiIsIC0yMCk7CiBzaG91bGRFdmFsdWF0ZVRvKCJzdGF0cy5tYXgi
LCAtMSk7CiBzaG91bGRFdmFsdWF0ZVRvKCJzdGF0cy5tZWRpYW4iLCAtNSk7CiBzaG91bGRFdmFs
dWF0ZVRvKCJzdGF0cy5tZWFuIiwgKC0zOC81KSk7Ci1zaG91bGRFdmFsdWF0ZVRvKCJzdGF0cy5z
dW0iLCAoLTEtMi01LTEwLTIwKSk7CiAvLyB1c2luZyBhbHRlcm5hdGUgaW1wbGVtZW50YXRpb24K
IHNob3VsZEV2YWx1YXRlVG8oInN0YXRzLm1pbiIsIGFsdGVybmF0ZUNvbXB1dGVTdGF0aXN0aWNz
Lm1pbihkYXRhKSk7CiBzaG91bGRFdmFsdWF0ZVRvKCJzdGF0cy5tYXgiLCBhbHRlcm5hdGVDb21w
dXRlU3RhdGlzdGljcy5tYXgoZGF0YSkpOwogc2hvdWxkRXZhbHVhdGVUbygic3RhdHMubWVkaWFu
IiwgYWx0ZXJuYXRlQ29tcHV0ZVN0YXRpc3RpY3MubWVkaWFuKGRhdGEpKTsKIHNob3VsZEV2YWx1
YXRlVG8oInN0YXRzLm1lYW4iLCBhbHRlcm5hdGVDb21wdXRlU3RhdGlzdGljcy5tZWFuKGRhdGEp
KTsKLXNob3VsZEV2YWx1YXRlVG8oInN0YXRzLnN1bSIsIGFsdGVybmF0ZUNvbXB1dGVTdGF0aXN0
aWNzLnN1bShkYXRhKSk7CiBzaG91bGRCZUNsb3NlVG8oInN0YXRzLnZhcmlhbmNlIiwgYWx0ZXJu
YXRlQ29tcHV0ZVN0YXRpc3RpY3MudmFyaWFuY2UoZGF0YSksIDAuMDAwMSk7CiBzaG91bGRCZUNs
b3NlVG8oInN0YXRzLnN0ZGV2IiwgYWx0ZXJuYXRlQ29tcHV0ZVN0YXRpc3RpY3Muc3RkZXYoZGF0
YSksIDAuMDAwMSk7CiBkZWJ1ZygiIik7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2hhcm5lc3Mv
cGVyZnRlc3RzL3J1bnMtcGVyLXNlY29uZC1sb2ctZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvaGFybmVzcy9wZXJmdGVzdHMvcnVucy1wZXItc2Vjb25kLWxvZy1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDEzMDEyNykKKysrIExheW91dFRlc3RzL2Zhc3QvaGFybmVz
cy9wZXJmdGVzdHMvcnVucy1wZXItc2Vjb25kLWxvZy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29w
eSkKQEAgLTEyLDcgKzEyLDcgQEAgVGltZToKIHZhbHVlcyAyLCA0LCA1LCA4LCAxMCBydW5zL3MK
IGF2ZyA1LjggcnVucy9zCiBtZWRpYW4gNSBydW5zL3MKLXN0ZGV2IDIuODYgcnVucy9zCitzdGRl
diAzLjE5IHJ1bnMvcwogbWluIDIgcnVucy9zCiBtYXggMTAgcnVucy9zCiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>