<?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>92223</bug_id>
          
          <creation_ts>2012-07-25 00:20:38 -0700</creation_ts>
          <short_desc>getChannelData should raise exception when index is more than numberOfChannels.</short_desc>
          <delta_ts>2012-07-29 22:29:06 -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>Web Audio</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Li Yin">li.yin</reporter>
          <assigned_to name="Li Yin">li.yin</assigned_to>
          <cc>abarth</cc>
    
    <cc>crogers</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>haraken</cc>
    
    <cc>ojan</cc>
    
    <cc>rtoy</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>677728</commentid>
    <comment_count>0</comment_count>
    <who name="Li Yin">li.yin</who>
    <bug_when>2012-07-25 00:20:38 -0700</bug_when>
    <thetext>Spec: https://dvcs.w3.org/hg/audio/raw-file/tip/webaudio/specification.html#AudioBuffer-section
This index value MUST be less than numberOfChannels or an exception will be thrown.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>678027</commentid>
    <comment_count>1</comment_count>
      <attachid>154349</attachid>
    <who name="Li Yin">li.yin</who>
    <bug_when>2012-07-25 07:30:09 -0700</bug_when>
    <thetext>Created attachment 154349
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>678029</commentid>
    <comment_count>2</comment_count>
    <who name="Li Yin">li.yin</who>
    <bug_when>2012-07-25 07:34:32 -0700</bug_when>
    <thetext>Keep the old interface &quot;getChannelData(unsigned channelIndex)&quot;, because it has been used in other codes.
So I just add a new interface &quot;getChannelData(unsigned channelIndex, ExceptionCode&amp;)&quot; for Web App.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>680354</commentid>
    <comment_count>3</comment_count>
      <attachid>154349</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-07-27 02:39:15 -0700</bug_when>
    <thetext>Comment on attachment 154349
Patch

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

The implementation and test cases look good. Marking r- for the test format.

&gt; Source/WebCore/ChangeLog:3
&gt; +        getChannelData should raise exception when index is more than numberOfChannels.

Let&apos; s confirm AudioContext folks if this change is allowed in terms of compatibility.

&gt; LayoutTests/webaudio/audiobuffer.html:8
&gt; +&lt;div id=&quot;description&quot;&gt;&lt;/div&gt;
&gt; +&lt;div id=&quot;console&quot;&gt;&lt;/div&gt;

Nit: These lines are not needed. They are automatically added by js-test-pre.js.

&gt; LayoutTests/webaudio/audiobuffer.html:23
&gt; +    if (window.testRunner) {
&gt; +        testRunner.dumpAsText();
&gt; +        testRunner.waitUntilDone();
&gt; +    }
&gt; +    
&gt; +    window.jsTestIsAsync = true;

Why do you need to make this test asynchronous?

&gt; LayoutTests/webaudio/audiobuffer.html:31
&gt; +    if (buffer.sampleRate === sampleRate)
&gt; +        testPassed(&quot;sampleRate has been set correctly.&quot;);
&gt; +    else
&gt; +        testFailed(&quot;sampleRate should be set correctly.&quot;);

I don&apos;t know the culture of AudioContext, recently we normally write the test like this:

  shouldBe(&apos;buffer.sampleRate&apos;, &apos;sampleRate&apos;);

The same comment for all other test cases in your patch.

&gt; LayoutTests/webaudio/audiobuffer.html:65
&gt; +runTest();

Nit: Instead of calling runTest(), you can just write all test cases in a global scope.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>681611</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2012-07-29 15:43:28 -0700</bug_when>
    <thetext>Looks good from my point of view, other than Kentaro&apos;s comments...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>681616</commentid>
    <comment_count>5</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-07-29 16:53:33 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Let&apos; s ask AudioContext folks if this change is allowed in terms of compatibility.

Chris: I just want to confirm if there is no practical compatibility concern, because the patch is going to throw exception for the existing code that has not so far thrown exception. Would it be OK in this case?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>681631</commentid>
    <comment_count>6</comment_count>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2012-07-29 18:11:00 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #3)
&gt; &gt; Let&apos; s ask AudioContext folks if this change is allowed in terms of compatibility.
&gt; 
&gt; Chris: I just want to confirm if there is no practical compatibility concern, because the patch is going to throw exception for the existing code that has not so far thrown exception. Would it be OK in this case?

It should be fine.  Any case where the index was out-of-bounds wouldn&apos;t have worked before anyway, and the spec states that the exception must be thrown.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>681657</commentid>
    <comment_count>7</comment_count>
      <attachid>155199</attachid>
    <who name="Li Yin">li.yin</who>
    <bug_when>2012-07-29 20:02:51 -0700</bug_when>
    <thetext>Created attachment 155199
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>681660</commentid>
    <comment_count>8</comment_count>
    <who name="Li Yin">li.yin</who>
    <bug_when>2012-07-29 20:21:04 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; &gt; LayoutTests/webaudio/audiobuffer.html:8
&gt; &gt; +&lt;div id=&quot;description&quot;&gt;&lt;/div&gt;
&gt; &gt; +&lt;div id=&quot;console&quot;&gt;&lt;/div&gt;
&gt; 
&gt; Nit: These lines are not needed. They are automatically added by js-test-pre.js.

Done.

&gt; 
&gt; &gt; LayoutTests/webaudio/audiobuffer.html:23
&gt; &gt; +    if (window.testRunner) {
&gt; &gt; +        testRunner.dumpAsText();
&gt; &gt; +        testRunner.waitUntilDone();
&gt; &gt; +    }
&gt; &gt; +    
&gt; &gt; +    window.jsTestIsAsync = true;
&gt; 
&gt; Why do you need to make this test asynchronous?
&gt; 

Avoid time out. All of the webaudio tests set isTestIsAsync to be True.

&gt; &gt; LayoutTests/webaudio/audiobuffer.html:31
&gt; &gt; +    if (buffer.sampleRate === sampleRate)
&gt; &gt; +        testPassed(&quot;sampleRate has been set correctly.&quot;);
&gt; &gt; +    else
&gt; &gt; +        testFailed(&quot;sampleRate should be set correctly.&quot;);
&gt; 
&gt; I don&apos;t know the culture of AudioContext, recently we normally write the test like this:
&gt; 
&gt;   shouldBe(&apos;buffer.sampleRate&apos;, &apos;sampleRate&apos;);
&gt; 
&gt; The same comment for all other test cases in your patch.

WebAudio tests use to testPassed or testFailed, I think the advantage is that the information is more detailed.
And we can get the places the error occurs through only reading the expected.txt, no need to read the JavaScript source code.

&gt; 
&gt; &gt; LayoutTests/webaudio/audiobuffer.html:65
&gt; &gt; +runTest();
&gt; 
&gt; Nit: Instead of calling runTest(), you can just write all test cases in a global scope.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>681663</commentid>
    <comment_count>9</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-07-29 20:29:25 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; &gt; &gt; LayoutTests/webaudio/audiobuffer.html:23
&gt; &gt; &gt; +    if (window.testRunner) {
&gt; &gt; &gt; +        testRunner.dumpAsText();
&gt; &gt; &gt; +        testRunner.waitUntilDone();
&gt; &gt; &gt; +    }
&gt; &gt; &gt; +    
&gt; &gt; &gt; +    window.jsTestIsAsync = true;
&gt; &gt; 
&gt; &gt; Why do you need to make this test asynchronous?
&gt; &gt; 
&gt; 
&gt; Avoid time out. All of the webaudio tests set isTestIsAsync to be True.

How is this test asynchronous? There are no even handlers, setTimeout() etc in this test. I guess you can remove dumpAsText(), waitUntilDone(), finishJSTest(), and jsTestIsAsunc.

&gt; WebAudio tests use to testPassed or testFailed, I think the advantage is that the information is more detailed.
&gt; And we can get the places the error occurs through only reading the expected.txt, no need to read the JavaScript source code.

OK. (I do not have a strong opinion here, but WebKit is likely to use shouldBe() style for newly created tests. The advantage is conciseness of the test code.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>681678</commentid>
    <comment_count>10</comment_count>
      <attachid>155207</attachid>
    <who name="Li Yin">li.yin</who>
    <bug_when>2012-07-29 21:38:23 -0700</bug_when>
    <thetext>Created attachment 155207
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>681679</commentid>
    <comment_count>11</comment_count>
    <who name="Li Yin">li.yin</who>
    <bug_when>2012-07-29 21:39:48 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #8)
&gt; &gt; &gt; &gt; LayoutTests/webaudio/audiobuffer.html:23
&gt; &gt; &gt; &gt; +    if (window.testRunner) {
&gt; &gt; &gt; &gt; +        testRunner.dumpAsText();
&gt; &gt; &gt; &gt; +        testRunner.waitUntilDone();
&gt; &gt; &gt; &gt; +    }
&gt; &gt; &gt; &gt; +    
&gt; &gt; &gt; &gt; +    window.jsTestIsAsync = true;
&gt; &gt; &gt; 
&gt; &gt; &gt; Why do you need to make this test asynchronous?
&gt; &gt; &gt; 
&gt; &gt; 
&gt; &gt; Avoid time out. All of the webaudio tests set isTestIsAsync to be True.
&gt; 
&gt; How is this test asynchronous? There are no even handlers, setTimeout() etc in this test. I guess you can remove dumpAsText(), waitUntilDone(), finishJSTest(), and jsTestIsAsunc.

Done.

Thanks for your comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>681680</commentid>
    <comment_count>12</comment_count>
      <attachid>155207</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-07-29 21:40:24 -0700</bug_when>
    <thetext>Comment on attachment 155207
Patch

OK. Thanks for the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>681693</commentid>
    <comment_count>13</comment_count>
      <attachid>155207</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-29 22:29:01 -0700</bug_when>
    <thetext>Comment on attachment 155207
Patch

Clearing flags on attachment: 155207

Committed r123996: &lt;http://trac.webkit.org/changeset/123996&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>681694</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-29 22:29:06 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>154349</attachid>
            <date>2012-07-25 07:30:09 -0700</date>
            <delta_ts>2012-07-29 20:02:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-92223-20120726223439.patch</filename>
            <type>text/plain</type>
            <size>7688</size>
            <attacher name="Li Yin">li.yin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzNTgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzRhMTAzNjMzNzdhMzU3
ZTkzNTRlOGY3ZDNjNTZiZjAwZjVkMTI4Zi4uNmNmODk3ZjAxMjg0ZTJiMGMxMDNkZmEwMjQ3NjNh
Mjc2YzA3ODRjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDEyLTA3LTI2ICBMaSBZ
aW4gIDxsaS55aW5AaW50ZWwuY29tPgorCisgICAgICAgIGdldENoYW5uZWxEYXRhIHNob3VsZCBy
YWlzZSBleGNlcHRpb24gd2hlbiBpbmRleCBpcyBtb3JlIHRoYW4gbnVtYmVyT2ZDaGFubmVscy4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkyMjIzCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU3BlYzogaHR0
cHM6Ly9kdmNzLnczLm9yZy9oZy9hdWRpby9yYXctZmlsZS90aXAvd2ViYXVkaW8vc3BlY2lmaWNh
dGlvbi5odG1sI0F1ZGlvQnVmZmVyLXNlY3Rpb24KKyAgICAgICAgSW4gZ2V0Q2hhbm5lbERhdGEg
ZnVuY3Rpb24sIHRoZSBpbmRleCB2YWx1ZSBNVVNUIGJlIGxlc3MgdGhhbiBudW1iZXJPZkNoYW5u
ZWxzCisgICAgICAgIG9yIGFuIGV4Y2VwdGlvbiB3aWxsIGJlIHRocm93bi4KKworICAgICAgICBU
ZXN0OiB3ZWJhdWRpby9hdWRpb2J1ZmZlci5odG1sCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVmZmVyOjpnZXRD
aGFubmVsRGF0YSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKEF1ZGlvQnVm
ZmVyKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyLmlkbDogcmFpc2Ug
ZXhjZXB0aW9uIHdoZW4gaW5kZXggaXMgbm90IGxlc3MgdGhhbiBudW1iZXJPZkNoYW5uZWxzLgor
CiAyMDEyLTA3LTI0ICBLd2FuZyBZdWwgU2VvICA8c2t5dWxAY29tcGFueTEwMC5uZXQ+CiAKICAg
ICAgICAgUmVtb3ZlIGFub255bW91cyBuYW1lc3BhY2UgYW5kIG1ha2UgZnVuY3Rpb25zIHN0YXRp
Yy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZm
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlci5jcHAK
aW5kZXggMDQ1M2ZiYzVkYTllZjFkMWEwMGIzOWZhZGJlODI2ZTdhM2FiMGI0Zi4uMmMyN2EzYzhk
N2NmNDM5OTZjYzg1MDBlNGNlNjY0YjQyYTQ5ZTliMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlci5jcHAKQEAgLTkwLDYgKzkwLDE2IEBAIHZvaWQg
QXVkaW9CdWZmZXI6OnJlbGVhc2VNZW1vcnkoKQogICAgIG1fY2hhbm5lbHMuY2xlYXIoKTsKIH0K
IAorRmxvYXQzMkFycmF5KiBBdWRpb0J1ZmZlcjo6Z2V0Q2hhbm5lbERhdGEodW5zaWduZWQgY2hh
bm5lbEluZGV4LCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBpZiAoY2hhbm5lbEluZGV4ID49
IG1fY2hhbm5lbHMuc2l6ZSgpKSB7CisgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKKyAgICAgICAg
cmV0dXJuIDA7CisgICAgfQorCisgICAgcmV0dXJuIG1fY2hhbm5lbHNbY2hhbm5lbEluZGV4XS5n
ZXQoKTsKK30KKwogRmxvYXQzMkFycmF5KiBBdWRpb0J1ZmZlcjo6Z2V0Q2hhbm5lbERhdGEodW5z
aWduZWQgY2hhbm5lbEluZGV4KQogewogICAgIGlmIChjaGFubmVsSW5kZXggPj0gbV9jaGFubmVs
cy5zaXplKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVy
LmgKaW5kZXggNGFlYWRjYTU3NzQwM2U2OWMyZGQxMmUxZTE1NWFkYjFmNTQzM2Y0OS4uYzQ3YmQ5
ZTI0YjZjNjE0OTQ0ZjdhZGM5NmQyODk2YWMxYmZlZTllYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXIuaApAQCAtMzgsNyArMzgsOSBAQAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBBdWRpb0J1czsKLSAgICAKKwordHlwZWRlZiBpbnQgRXhj
ZXB0aW9uQ29kZTsKKwogY2xhc3MgQXVkaW9CdWZmZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxBdWRp
b0J1ZmZlcj4gewogcHVibGljOiAgIAogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEF1ZGlvQnVmZmVy
PiBjcmVhdGUodW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscywgc2l6ZV90IG51bWJlck9mRnJhbWVz
LCBmbG9hdCBzYW1wbGVSYXRlKTsKQEAgLTUzLDYgKzU1LDcgQEAgcHVibGljOgogCiAgICAgLy8g
Q2hhbm5lbCBkYXRhIGFjY2VzcwogICAgIHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMoKSBjb25z
dCB7IHJldHVybiBtX2NoYW5uZWxzLnNpemUoKTsgfQorICAgIEZsb2F0MzJBcnJheSogZ2V0Q2hh
bm5lbERhdGEodW5zaWduZWQgY2hhbm5lbEluZGV4LCBFeGNlcHRpb25Db2RlJik7CiAgICAgRmxv
YXQzMkFycmF5KiBnZXRDaGFubmVsRGF0YSh1bnNpZ25lZCBjaGFubmVsSW5kZXgpOwogICAgIHZv
aWQgemVybygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvQnVmZmVyLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9C
dWZmZXIuaWRsCmluZGV4IDhhNzM0ZTI4ZjFhNjk0Y2Q5M2Y2Y2EwNGVjZWI4M2VjYzM2OGUxYWYu
LjkyZDgzODQ5N2UzMzhiZjUxZWY5MjNjMzQxZTQ2YzZhYjY2N2UzNzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXIuaWRsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXIuaWRsCkBAIC0zOCw2ICszOCw3
IEBAIG1vZHVsZSBhdWRpbyB7CiAKICAgICAgICAgLy8gQ2hhbm5lbCBhY2Nlc3MKICAgICAgICAg
cmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZDaGFubmVsczsKLSAgICAg
ICAgRmxvYXQzMkFycmF5IGdldENoYW5uZWxEYXRhKGluIHVuc2lnbmVkIGxvbmcgY2hhbm5lbElu
ZGV4KTsKKyAgICAgICAgRmxvYXQzMkFycmF5IGdldENoYW5uZWxEYXRhKGluIHVuc2lnbmVkIGxv
bmcgY2hhbm5lbEluZGV4KQorICAgICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAgICAg
fTsKIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwppbmRleCAzYjZkOGYyODBlYTg1OGYxZTQ1MTViMmE5NWZkNWI5YmEwMzc0MWRlLi5h
MTgzNGQyZmZhYWQ2Mzg2Yzg0YjYxODhhZGE3ZTY0OWE0NjkzNTM1IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTYgQEAKKzIwMTItMDctMjYgIExpIFlpbiAgPGxpLnlpbkBpbnRlbC5jb20+CisKKyAgICAgICAg
Z2V0Q2hhbm5lbERhdGEgc2hvdWxkIHJhaXNlIGV4Y2VwdGlvbiB3aGVuIGluZGV4IGlzIG1vcmUg
dGhhbiBudW1iZXJPZkNoYW5uZWxzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTIyMjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBTcGVjOiBodHRwczovL2R2Y3MudzMub3JnL2hnL2F1ZGlvL3Jhdy1maWxl
L3RpcC93ZWJhdWRpby9zcGVjaWZpY2F0aW9uLmh0bWwjQXVkaW9CdWZmZXItc2VjdGlvbgorICAg
ICAgICBBZGQgdGVzdCB0byBjb3ZlciBiYXNpYyBhdHRyaWJ1dGVzIG9mIEF1ZGlvQnVmZmVyLgor
CisgICAgICAgICogd2ViYXVkaW8vYXVkaW9idWZmZXItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiB3ZWJhdWRpby9hdWRpb2J1ZmZlci5odG1sOiBBZGRlZC4KKwogMjAxMi0wNy0yNCAg
WW9zaGlmdW1pIElub3VlICA8eW9zaW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtUZXN0c10g
Q29weSBmYXN0L2Zvcm1zL251bWJlci9udW1iZXItc3BpbmJ1dHRvbi1jaGFuZ2UtYW5kLWlucHV0
LWV2ZW50cy5odG1sIHRvIGZhc3QvZm9ybXMvanMvcmVzb3VyY2VzCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJhdWRpby9hdWRpb2J1ZmZlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93
ZWJhdWRpby9hdWRpb2J1ZmZlci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWE4YjViM2NlZmNi
OGEyNDBjNjg2ZjY0MDU3OGY3ODNjZjA3NGI2ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3dlYmF1ZGlvL2F1ZGlvYnVmZmVyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE3IEBACitC
YXNpYyB0ZXN0cyBmb3IgQXVkaW9CdWZmZXIuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
KworUEFTUyBzYW1wbGVSYXRlIGhhcyBiZWVuIHNldCBjb3JyZWN0bHkuCitQQVNTIGxlbmd0aCBo
YXMgYmVlbiBzZXQgY29ycmVjdGx5LgorUEFTUyBkdXJhdGlvbiBoYXMgYmVlbiBzZXQgY29ycmVj
dGx5LgorUEFTUyBudW1iZXJPZkNoYW5uZWxzIGhhcyBiZWVuIHNldCBjb3JyZWN0bHkuCitQQVNT
IGdldENoYW5uZWxEYXRhKDApIHJldHVybnMgYSBGbG9hdDMyQXJyYXkgb2JqZWN0LgorUEFTUyBn
ZXRDaGFubmVsRGF0YSgxKSByZXR1cm5zIGEgRmxvYXQzMkFycmF5IG9iamVjdC4KK1BBU1MgZ2V0
Q2hhbm5lbERhdGEoMikgcmV0dXJucyBhIEZsb2F0MzJBcnJheSBvYmplY3QuCitQQVNTIGdldENo
YW5uZWxEYXRhKDMpIHJldHVybnMgYSBGbG9hdDMyQXJyYXkgb2JqZWN0LgorUEFTUyBFeGNlcHRp
b24gaGFzIGJlZW4gdGhyb3duIGNvcnJlY3RseSB3aGVuIGluZGV4IGlzIG5vdCBsZXNzIHRoYW4g
bnVtYmVyT2ZDaGFubmVscy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJhdWRpby9hdWRpb2J1ZmZl
ci5odG1sIGIvTGF5b3V0VGVzdHMvd2ViYXVkaW8vYXVkaW9idWZmZXIuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZDNhMmVmNDJmNDM5NmIxOGVmOWUxY2Y5MThmMDNiM2Q2MWJhMjhjCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvd2ViYXVkaW8vYXVkaW9idWZmZXIuaHRtbApAQCAtMCwwICsxLDcx
IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vZmFz
dC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+
Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4K
KworPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJCYXNpYyB0ZXN0cyBmb3IgQXVkaW9CdWZmZXIuIik7
CisKK2Z1bmN0aW9uIHJ1blRlc3QoKSB7ICAgIAorICAgIHZhciBzYW1wbGVSYXRlID0gNDQxMDAu
MAorICAgIHZhciBsZW5ndGhJblNlY29uZHMgPSAyOworICAgIHZhciBudW1iZXJPZkNoYW5uZWxz
ID0gNDsKKyAgICAKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1
bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwor
ICAgIH0KKyAgICAKKyAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICB2YXIg
Y29udGV4dCA9IG5ldyB3ZWJraXRBdWRpb0NvbnRleHQoKTsKKyAgICB2YXIgYnVmZmVyID0gY29u
dGV4dC5jcmVhdGVCdWZmZXIobnVtYmVyT2ZDaGFubmVscywgc2FtcGxlUmF0ZSAqIGxlbmd0aElu
U2Vjb25kcywgc2FtcGxlUmF0ZSk7CisgICAKKyAgICBpZiAoYnVmZmVyLnNhbXBsZVJhdGUgPT09
IHNhbXBsZVJhdGUpCisgICAgICAgIHRlc3RQYXNzZWQoInNhbXBsZVJhdGUgaGFzIGJlZW4gc2V0
IGNvcnJlY3RseS4iKTsKKyAgICBlbHNlCisgICAgICAgIHRlc3RGYWlsZWQoInNhbXBsZVJhdGUg
c2hvdWxkIGJlIHNldCBjb3JyZWN0bHkuIik7CisKKyAgICBpZiAoYnVmZmVyLmxlbmd0aCA9PT0g
c2FtcGxlUmF0ZSAqIGxlbmd0aEluU2Vjb25kcykKKyAgICAgICAgdGVzdFBhc3NlZCgibGVuZ3Ro
IGhhcyBiZWVuIHNldCBjb3JyZWN0bHkuIik7CisgICAgZWxzZQorICAgICAgICB0ZXN0RmFpbGVk
KCJsZW5ndGggc2hvdWxkIGJlIHNldCBjb3JyZWN0bHkiKTsKKworICAgIGlmIChidWZmZXIuZHVy
YXRpb24gPT09IGxlbmd0aEluU2Vjb25kcykKKyAgICAgICAgdGVzdFBhc3NlZCgiZHVyYXRpb24g
aGFzIGJlZW4gc2V0IGNvcnJlY3RseS4iKTsKKyAgICBlbHNlCisgICAgICAgIHRlc3RGYWlsZWQo
ImR1cmF0aW9uIHNob3VsZCBiZSBzZXQgY29ycmVjdGx5LiIpOworCisgICAgaWYgKGJ1ZmZlci5u
dW1iZXJPZkNoYW5uZWxzID09PSBudW1iZXJPZkNoYW5uZWxzKQorICAgICAgICB0ZXN0UGFzc2Vk
KCJudW1iZXJPZkNoYW5uZWxzIGhhcyBiZWVuIHNldCBjb3JyZWN0bHkuIik7CisgICAgZWxzZQor
ICAgICAgICB0ZXN0RmFpbGVkKCJudW1iZXJPZkNoYW5uZWxzIHNob3VsZCBiZSBzZXQgY29ycmVj
dGx5LiIpOworCisgICAgZm9yICh2YXIgaW5kZXggPSAwOyBpbmRleCA8IGJ1ZmZlci5udW1iZXJP
ZkNoYW5uZWxzOyArK2luZGV4KSB7CisgICAgICAgIGlmIChidWZmZXIuZ2V0Q2hhbm5lbERhdGEo
aW5kZXgpIGluc3RhbmNlb2Ygd2luZG93LkZsb2F0MzJBcnJheSkKKyAgICAgICAgICAgIHRlc3RQ
YXNzZWQoImdldENoYW5uZWxEYXRhKCIgKyBpbmRleCArICIpIHJldHVybnMgYSBGbG9hdDMyQXJy
YXkgb2JqZWN0LiIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICB0ZXN0RmFpbGVkKCJnZXRD
aGFubmVsRGF0YSgiICsgaW5kZXggKyAiKSBzaG91bGQgcmV0dXJuIGEgRmxvYXQzMkFycmF5IG9i
amVjdC4iKTsKKyAgICB9CisKKyAgICB0cnkgeworICAgICAgICBidWZmZXIuZ2V0Q2hhbm5lbERh
dGEoYnVmZmVyLm51bWJlck9mQ2hhbm5lbHMpOworICAgICAgICB0ZXN0RmFpbGVkKCJFeGNlcHRp
b24gc2hvdWxkIGJlIHRocm93biB3aGVuIGluZGV4IGlzIG5vdCBsZXNzIHRoYW4gbnVtYmVyT2ZD
aGFubmVscy4iKTsKKyAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgdGVzdFBhc3NlZCgiRXhjZXB0
aW9uIGhhcyBiZWVuIHRocm93biBjb3JyZWN0bHkgd2hlbiBpbmRleCBpcyBub3QgbGVzcyB0aGFu
IG51bWJlck9mQ2hhbm5lbHMuIik7CisgICAgfQorCisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisK
K3J1blRlc3QoKTsKKworPC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>155199</attachid>
            <date>2012-07-29 20:02:51 -0700</date>
            <delta_ts>2012-07-29 21:38:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-92223-20120731110723.patch</filename>
            <type>text/plain</type>
            <size>7445</size>
            <attacher name="Li Yin">li.yin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzOTkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGUwNGE1Yjc5NGNjNjkz
YWEyZDdmNzdhZjc2ODdjOTRlODFhMzNmYi4uNjFiMzM5MjJkMzBlOGNiZGI2OTlmOWI2Zjc3YjAw
N2M4MmEwYWJkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDEyLTA3LTMwICBMaSBZ
aW4gIDxsaS55aW5AaW50ZWwuY29tPgorCisgICAgICAgIGdldENoYW5uZWxEYXRhIHNob3VsZCBy
YWlzZSBleGNlcHRpb24gd2hlbiBpbmRleCBpcyBtb3JlIHRoYW4gbnVtYmVyT2ZDaGFubmVscy4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkyMjIzCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU3BlYzogaHR0
cHM6Ly9kdmNzLnczLm9yZy9oZy9hdWRpby9yYXctZmlsZS90aXAvd2ViYXVkaW8vc3BlY2lmaWNh
dGlvbi5odG1sI0F1ZGlvQnVmZmVyLXNlY3Rpb24KKyAgICAgICAgSW4gZ2V0Q2hhbm5lbERhdGEg
ZnVuY3Rpb24sIHRoZSBpbmRleCB2YWx1ZSBNVVNUIGJlIGxlc3MgdGhhbiBudW1iZXJPZkNoYW5u
ZWxzCisgICAgICAgIG9yIGFuIGV4Y2VwdGlvbiB3aWxsIGJlIHRocm93bi4KKworICAgICAgICBU
ZXN0OiB3ZWJhdWRpby9hdWRpb2J1ZmZlci5odG1sCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVmZmVyOjpnZXRD
aGFubmVsRGF0YSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKEF1ZGlvQnVm
ZmVyKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyLmlkbDogcmFpc2Ug
ZXhjZXB0aW9uIHdoZW4gaW5kZXggaXMgbm90IGxlc3MgdGhhbiBudW1iZXJPZkNoYW5uZWxzLgor
CiAyMDEyLTA3LTI5ICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKICAgICAgICAg
SGl0IHRlc3RpbmcgaW4gdGhlIGdhcCBiZXR3ZWVuIHBhZ2VzIHJldHVybnMgaW5jb3JyZWN0IHJl
c3VsdHMgaW4gZmxpcHBlZCBibG9ja3Mgd3JpdGluZyBtb2RlcwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyLmNwcAppbmRleCAwNDUzZmJjNWRhOWVmMWQx
YTAwYjM5ZmFkYmU4MjZlN2EzYWIwYjRmLi4yYzI3YTNjOGQ3Y2Y0Mzk5NmNjODUwMGU0Y2U2NjRi
NDJhNDllOWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
QnVmZmVyLmNwcApAQCAtOTAsNiArOTAsMTYgQEAgdm9pZCBBdWRpb0J1ZmZlcjo6cmVsZWFzZU1l
bW9yeSgpCiAgICAgbV9jaGFubmVscy5jbGVhcigpOwogfQogCitGbG9hdDMyQXJyYXkqIEF1ZGlv
QnVmZmVyOjpnZXRDaGFubmVsRGF0YSh1bnNpZ25lZCBjaGFubmVsSW5kZXgsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQoreworICAgIGlmIChjaGFubmVsSW5kZXggPj0gbV9jaGFubmVscy5zaXplKCkpIHsK
KyAgICAgICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAg
ICByZXR1cm4gbV9jaGFubmVsc1tjaGFubmVsSW5kZXhdLmdldCgpOworfQorCiBGbG9hdDMyQXJy
YXkqIEF1ZGlvQnVmZmVyOjpnZXRDaGFubmVsRGF0YSh1bnNpZ25lZCBjaGFubmVsSW5kZXgpCiB7
CiAgICAgaWYgKGNoYW5uZWxJbmRleCA+PSBtX2NoYW5uZWxzLnNpemUoKSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXIuaAppbmRleCA1OTE3NzMzZGU2YzY0
YWYzMDI4NzQ2MTFjMmZhY2FiNGY0OWJhODMzLi5kMjFjZWU0OTUxY2I4OWMzZDU0Mjg0MjNkN2M3
Y2RkZDU1MGJiMjU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b0J1ZmZlci5oCkBAIC0zOCw3ICszOCw5IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IEF1ZGlvQnVzOwotICAgIAorCit0eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOworCiBjbGFzcyBB
dWRpb0J1ZmZlciA6IHB1YmxpYyBSZWZDb3VudGVkPEF1ZGlvQnVmZmVyPiB7CiBwdWJsaWM6ICAg
CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8QXVkaW9CdWZmZXI+IGNyZWF0ZSh1bnNpZ25lZCBudW1i
ZXJPZkNoYW5uZWxzLCBzaXplX3QgbnVtYmVyT2ZGcmFtZXMsIGZsb2F0IHNhbXBsZVJhdGUpOwpA
QCAtNTMsNiArNTUsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBDaGFubmVsIGRhdGEgYWNjZXNzCiAg
ICAgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscygpIGNvbnN0IHsgcmV0dXJuIG1fY2hhbm5lbHMu
c2l6ZSgpOyB9CisgICAgRmxvYXQzMkFycmF5KiBnZXRDaGFubmVsRGF0YSh1bnNpZ25lZCBjaGFu
bmVsSW5kZXgsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBGbG9hdDMyQXJyYXkqIGdldENoYW5uZWxE
YXRhKHVuc2lnbmVkIGNoYW5uZWxJbmRleCk7CiAgICAgdm9pZCB6ZXJvKCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXIuaWRsIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlci5pZGwKaW5kZXggOGE3MzRl
MjhmMWE2OTRjZDkzZjZjYTA0ZWNlYjgzZWNjMzY4ZTFhZi4uOTJkODM4NDk3ZTMzOGJmNTFlZjky
M2MzNDFlNDZjNmFiNjY3ZTM3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb0J1ZmZlci5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9BdWRpb0J1ZmZlci5pZGwKQEAgLTM4LDYgKzM4LDcgQEAgbW9kdWxlIGF1ZGlvIHsKIAog
ICAgICAgICAvLyBDaGFubmVsIGFjY2VzcwogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5z
aWduZWQgbG9uZyBudW1iZXJPZkNoYW5uZWxzOwotICAgICAgICBGbG9hdDMyQXJyYXkgZ2V0Q2hh
bm5lbERhdGEoaW4gdW5zaWduZWQgbG9uZyBjaGFubmVsSW5kZXgpOworICAgICAgICBGbG9hdDMy
QXJyYXkgZ2V0Q2hhbm5lbERhdGEoaW4gdW5zaWduZWQgbG9uZyBjaGFubmVsSW5kZXgpCisgICAg
ICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKICAgICB9OwogfQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDNkMzQwZjM1
ZjA1MGFjNjQwMDE5MTAzMzE1NWJiZjRjZjExOTRlMjYuLmY2NWI0NGE1NmU1NDI3NGEyZTg2ODUy
OGRjZGZkYTFiZjI4YzFhOTcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMi0wNy0zMCAgTGkg
WWluICA8bGkueWluQGludGVsLmNvbT4KKworICAgICAgICBnZXRDaGFubmVsRGF0YSBzaG91bGQg
cmFpc2UgZXhjZXB0aW9uIHdoZW4gaW5kZXggaXMgbW9yZSB0aGFuIG51bWJlck9mQ2hhbm5lbHMu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MjIyMwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNwZWM6IGh0
dHBzOi8vZHZjcy53My5vcmcvaGcvYXVkaW8vcmF3LWZpbGUvdGlwL3dlYmF1ZGlvL3NwZWNpZmlj
YXRpb24uaHRtbCNBdWRpb0J1ZmZlci1zZWN0aW9uCisgICAgICAgIEFkZCB0ZXN0IHRvIGNvdmVy
IGJhc2ljIGF0dHJpYnV0ZXMgb2YgQXVkaW9CdWZmZXIuCisKKyAgICAgICAgKiB3ZWJhdWRpby9h
dWRpb2J1ZmZlci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYmF1ZGlvL2F1ZGlv
YnVmZmVyLmh0bWw6IEFkZGVkLgorCiAyMDEyLTA3LTI5ICBEYW4gQmVybnN0ZWluICA8bWl0ekBh
cHBsZS5jb20+CiAKICAgICAgICAgSGl0IHRlc3RpbmcgaW4gdGhlIGdhcCBiZXR3ZWVuIHBhZ2Vz
IHJldHVybnMgaW5jb3JyZWN0IHJlc3VsdHMgaW4gZmxpcHBlZCBibG9ja3Mgd3JpdGluZyBtb2Rl
cwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViYXVkaW8vYXVkaW9idWZmZXItZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvd2ViYXVkaW8vYXVkaW9idWZmZXItZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmRiZmJiYzQzY2U3YTY0ZDQzZjNlZTVkMDA2NzY5Mzk4ZDdjNTAxNWIKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJhdWRpby9hdWRpb2J1ZmZlci1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSwxOCBAQAorQmFzaWMgdGVzdHMgZm9yIEF1ZGlvQnVmZmVyLgorCitPbiBzdWNj
ZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBi
eSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBzYW1wbGVSYXRlIGhhcyBiZWVuIHNldCBjb3Jy
ZWN0bHkuCitQQVNTIGxlbmd0aCBoYXMgYmVlbiBzZXQgY29ycmVjdGx5LgorUEFTUyBkdXJhdGlv
biBoYXMgYmVlbiBzZXQgY29ycmVjdGx5LgorUEFTUyBudW1iZXJPZkNoYW5uZWxzIGhhcyBiZWVu
IHNldCBjb3JyZWN0bHkuCitQQVNTIGdldENoYW5uZWxEYXRhKDApIHJldHVybnMgYSBGbG9hdDMy
QXJyYXkgb2JqZWN0LgorUEFTUyBnZXRDaGFubmVsRGF0YSgxKSByZXR1cm5zIGEgRmxvYXQzMkFy
cmF5IG9iamVjdC4KK1BBU1MgZ2V0Q2hhbm5lbERhdGEoMikgcmV0dXJucyBhIEZsb2F0MzJBcnJh
eSBvYmplY3QuCitQQVNTIGdldENoYW5uZWxEYXRhKDMpIHJldHVybnMgYSBGbG9hdDMyQXJyYXkg
b2JqZWN0LgorUEFTUyBFeGNlcHRpb24gaGFzIGJlZW4gdGhyb3duIGNvcnJlY3RseSB3aGVuIGlu
ZGV4IGlzIG5vdCBsZXNzIHRoYW4gbnVtYmVyT2ZDaGFubmVscy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJhdWRpby9hdWRpb2J1ZmZlci5odG1sIGIvTGF5b3V0VGVzdHMvd2ViYXVkaW8vYXVkaW9i
dWZmZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44Njc2Nzc4ZmVhZDcxOWYwMGI0YWFmMDliYmFlNmQ2MTdl
M2IzNGM4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViYXVkaW8vYXVkaW9idWZm
ZXIuaHRtbApAQCAtMCwwICsxLDY0IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+
Cis8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIkJhc2ljIHRlc3Rz
IGZvciBBdWRpb0J1ZmZlci4iKTsKKwordmFyIHNhbXBsZVJhdGUgPSA0NDEwMC4wCit2YXIgbGVu
Z3RoSW5TZWNvbmRzID0gMjsKK3ZhciBudW1iZXJPZkNoYW5uZWxzID0gNDsKKyAgICAKK2lmICh3
aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRl
c3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworfQorCit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRy
dWU7CisKK3ZhciBjb250ZXh0ID0gbmV3IHdlYmtpdEF1ZGlvQ29udGV4dCgpOwordmFyIGJ1ZmZl
ciA9IGNvbnRleHQuY3JlYXRlQnVmZmVyKG51bWJlck9mQ2hhbm5lbHMsIHNhbXBsZVJhdGUgKiBs
ZW5ndGhJblNlY29uZHMsIHNhbXBsZVJhdGUpOworCitpZiAoYnVmZmVyLnNhbXBsZVJhdGUgPT09
IHNhbXBsZVJhdGUpCisgICAgdGVzdFBhc3NlZCgic2FtcGxlUmF0ZSBoYXMgYmVlbiBzZXQgY29y
cmVjdGx5LiIpOworZWxzZQorICAgIHRlc3RGYWlsZWQoInNhbXBsZVJhdGUgc2hvdWxkIGJlIHNl
dCBjb3JyZWN0bHkuIik7CisKK2lmIChidWZmZXIubGVuZ3RoID09PSBzYW1wbGVSYXRlICogbGVu
Z3RoSW5TZWNvbmRzKQorICAgIHRlc3RQYXNzZWQoImxlbmd0aCBoYXMgYmVlbiBzZXQgY29ycmVj
dGx5LiIpOworZWxzZQorICAgIHRlc3RGYWlsZWQoImxlbmd0aCBzaG91bGQgYmUgc2V0IGNvcnJl
Y3RseSIpOworCitpZiAoYnVmZmVyLmR1cmF0aW9uID09PSBsZW5ndGhJblNlY29uZHMpCisgICAg
dGVzdFBhc3NlZCgiZHVyYXRpb24gaGFzIGJlZW4gc2V0IGNvcnJlY3RseS4iKTsKK2Vsc2UKKyAg
ICB0ZXN0RmFpbGVkKCJkdXJhdGlvbiBzaG91bGQgYmUgc2V0IGNvcnJlY3RseS4iKTsKKworaWYg
KGJ1ZmZlci5udW1iZXJPZkNoYW5uZWxzID09PSBudW1iZXJPZkNoYW5uZWxzKQorICAgIHRlc3RQ
YXNzZWQoIm51bWJlck9mQ2hhbm5lbHMgaGFzIGJlZW4gc2V0IGNvcnJlY3RseS4iKTsKK2Vsc2UK
KyAgICB0ZXN0RmFpbGVkKCJudW1iZXJPZkNoYW5uZWxzIHNob3VsZCBiZSBzZXQgY29ycmVjdGx5
LiIpOworCitmb3IgKHZhciBpbmRleCA9IDA7IGluZGV4IDwgYnVmZmVyLm51bWJlck9mQ2hhbm5l
bHM7ICsraW5kZXgpIHsKKyAgICBpZiAoYnVmZmVyLmdldENoYW5uZWxEYXRhKGluZGV4KSBpbnN0
YW5jZW9mIHdpbmRvdy5GbG9hdDMyQXJyYXkpCisgICAgICAgIHRlc3RQYXNzZWQoImdldENoYW5u
ZWxEYXRhKCIgKyBpbmRleCArICIpIHJldHVybnMgYSBGbG9hdDMyQXJyYXkgb2JqZWN0LiIpOwor
ICAgIGVsc2UKKyAgICAgICAgdGVzdEZhaWxlZCgiZ2V0Q2hhbm5lbERhdGEoIiArIGluZGV4ICsg
Iikgc2hvdWxkIHJldHVybiBhIEZsb2F0MzJBcnJheSBvYmplY3QuIik7Cit9CisKK3RyeSB7Cisg
ICAgYnVmZmVyLmdldENoYW5uZWxEYXRhKGJ1ZmZlci5udW1iZXJPZkNoYW5uZWxzKTsKKyAgICB0
ZXN0RmFpbGVkKCJFeGNlcHRpb24gc2hvdWxkIGJlIHRocm93biB3aGVuIGluZGV4IGlzIG5vdCBs
ZXNzIHRoYW4gbnVtYmVyT2ZDaGFubmVscy4iKTsKK30gY2F0Y2goZSkgeworICAgIHRlc3RQYXNz
ZWQoIkV4Y2VwdGlvbiBoYXMgYmVlbiB0aHJvd24gY29ycmVjdGx5IHdoZW4gaW5kZXggaXMgbm90
IGxlc3MgdGhhbiBudW1iZXJPZkNoYW5uZWxzLiIpOworfQorCitmaW5pc2hKU1Rlc3QoKTsKKwor
PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBv
c3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>155207</attachid>
            <date>2012-07-29 21:38:23 -0700</date>
            <delta_ts>2012-07-29 22:29:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-92223-20120731124256.patch</filename>
            <type>text/plain</type>
            <size>7296</size>
            <attacher name="Li Yin">li.yin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzOTkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGUwNGE1Yjc5NGNjNjkz
YWEyZDdmNzdhZjc2ODdjOTRlODFhMzNmYi4uNjFiMzM5MjJkMzBlOGNiZGI2OTlmOWI2Zjc3YjAw
N2M4MmEwYWJkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDEyLTA3LTMwICBMaSBZ
aW4gIDxsaS55aW5AaW50ZWwuY29tPgorCisgICAgICAgIGdldENoYW5uZWxEYXRhIHNob3VsZCBy
YWlzZSBleGNlcHRpb24gd2hlbiBpbmRleCBpcyBtb3JlIHRoYW4gbnVtYmVyT2ZDaGFubmVscy4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkyMjIzCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU3BlYzogaHR0
cHM6Ly9kdmNzLnczLm9yZy9oZy9hdWRpby9yYXctZmlsZS90aXAvd2ViYXVkaW8vc3BlY2lmaWNh
dGlvbi5odG1sI0F1ZGlvQnVmZmVyLXNlY3Rpb24KKyAgICAgICAgSW4gZ2V0Q2hhbm5lbERhdGEg
ZnVuY3Rpb24sIHRoZSBpbmRleCB2YWx1ZSBNVVNUIGJlIGxlc3MgdGhhbiBudW1iZXJPZkNoYW5u
ZWxzCisgICAgICAgIG9yIGFuIGV4Y2VwdGlvbiB3aWxsIGJlIHRocm93bi4KKworICAgICAgICBU
ZXN0OiB3ZWJhdWRpby9hdWRpb2J1ZmZlci5odG1sCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVmZmVyOjpnZXRD
aGFubmVsRGF0YSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKEF1ZGlvQnVm
ZmVyKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyLmlkbDogcmFpc2Ug
ZXhjZXB0aW9uIHdoZW4gaW5kZXggaXMgbm90IGxlc3MgdGhhbiBudW1iZXJPZkNoYW5uZWxzLgor
CiAyMDEyLTA3LTI5ICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKICAgICAgICAg
SGl0IHRlc3RpbmcgaW4gdGhlIGdhcCBiZXR3ZWVuIHBhZ2VzIHJldHVybnMgaW5jb3JyZWN0IHJl
c3VsdHMgaW4gZmxpcHBlZCBibG9ja3Mgd3JpdGluZyBtb2RlcwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyLmNwcAppbmRleCAwNDUzZmJjNWRhOWVmMWQx
YTAwYjM5ZmFkYmU4MjZlN2EzYWIwYjRmLi4yYzI3YTNjOGQ3Y2Y0Mzk5NmNjODUwMGU0Y2U2NjRi
NDJhNDllOWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
QnVmZmVyLmNwcApAQCAtOTAsNiArOTAsMTYgQEAgdm9pZCBBdWRpb0J1ZmZlcjo6cmVsZWFzZU1l
bW9yeSgpCiAgICAgbV9jaGFubmVscy5jbGVhcigpOwogfQogCitGbG9hdDMyQXJyYXkqIEF1ZGlv
QnVmZmVyOjpnZXRDaGFubmVsRGF0YSh1bnNpZ25lZCBjaGFubmVsSW5kZXgsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQoreworICAgIGlmIChjaGFubmVsSW5kZXggPj0gbV9jaGFubmVscy5zaXplKCkpIHsK
KyAgICAgICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAg
ICByZXR1cm4gbV9jaGFubmVsc1tjaGFubmVsSW5kZXhdLmdldCgpOworfQorCiBGbG9hdDMyQXJy
YXkqIEF1ZGlvQnVmZmVyOjpnZXRDaGFubmVsRGF0YSh1bnNpZ25lZCBjaGFubmVsSW5kZXgpCiB7
CiAgICAgaWYgKGNoYW5uZWxJbmRleCA+PSBtX2NoYW5uZWxzLnNpemUoKSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXIuaAppbmRleCA1OTE3NzMzZGU2YzY0
YWYzMDI4NzQ2MTFjMmZhY2FiNGY0OWJhODMzLi5kMjFjZWU0OTUxY2I4OWMzZDU0Mjg0MjNkN2M3
Y2RkZDU1MGJiMjU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b0J1ZmZlci5oCkBAIC0zOCw3ICszOCw5IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IEF1ZGlvQnVzOwotICAgIAorCit0eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOworCiBjbGFzcyBB
dWRpb0J1ZmZlciA6IHB1YmxpYyBSZWZDb3VudGVkPEF1ZGlvQnVmZmVyPiB7CiBwdWJsaWM6ICAg
CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8QXVkaW9CdWZmZXI+IGNyZWF0ZSh1bnNpZ25lZCBudW1i
ZXJPZkNoYW5uZWxzLCBzaXplX3QgbnVtYmVyT2ZGcmFtZXMsIGZsb2F0IHNhbXBsZVJhdGUpOwpA
QCAtNTMsNiArNTUsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBDaGFubmVsIGRhdGEgYWNjZXNzCiAg
ICAgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscygpIGNvbnN0IHsgcmV0dXJuIG1fY2hhbm5lbHMu
c2l6ZSgpOyB9CisgICAgRmxvYXQzMkFycmF5KiBnZXRDaGFubmVsRGF0YSh1bnNpZ25lZCBjaGFu
bmVsSW5kZXgsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBGbG9hdDMyQXJyYXkqIGdldENoYW5uZWxE
YXRhKHVuc2lnbmVkIGNoYW5uZWxJbmRleCk7CiAgICAgdm9pZCB6ZXJvKCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXIuaWRsIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlci5pZGwKaW5kZXggOGE3MzRl
MjhmMWE2OTRjZDkzZjZjYTA0ZWNlYjgzZWNjMzY4ZTFhZi4uOTJkODM4NDk3ZTMzOGJmNTFlZjky
M2MzNDFlNDZjNmFiNjY3ZTM3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb0J1ZmZlci5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9BdWRpb0J1ZmZlci5pZGwKQEAgLTM4LDYgKzM4LDcgQEAgbW9kdWxlIGF1ZGlvIHsKIAog
ICAgICAgICAvLyBDaGFubmVsIGFjY2VzcwogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5z
aWduZWQgbG9uZyBudW1iZXJPZkNoYW5uZWxzOwotICAgICAgICBGbG9hdDMyQXJyYXkgZ2V0Q2hh
bm5lbERhdGEoaW4gdW5zaWduZWQgbG9uZyBjaGFubmVsSW5kZXgpOworICAgICAgICBGbG9hdDMy
QXJyYXkgZ2V0Q2hhbm5lbERhdGEoaW4gdW5zaWduZWQgbG9uZyBjaGFubmVsSW5kZXgpCisgICAg
ICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKICAgICB9OwogfQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDNkMzQwZjM1
ZjA1MGFjNjQwMDE5MTAzMzE1NWJiZjRjZjExOTRlMjYuLmY2NWI0NGE1NmU1NDI3NGEyZTg2ODUy
OGRjZGZkYTFiZjI4YzFhOTcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMi0wNy0zMCAgTGkg
WWluICA8bGkueWluQGludGVsLmNvbT4KKworICAgICAgICBnZXRDaGFubmVsRGF0YSBzaG91bGQg
cmFpc2UgZXhjZXB0aW9uIHdoZW4gaW5kZXggaXMgbW9yZSB0aGFuIG51bWJlck9mQ2hhbm5lbHMu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MjIyMwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNwZWM6IGh0
dHBzOi8vZHZjcy53My5vcmcvaGcvYXVkaW8vcmF3LWZpbGUvdGlwL3dlYmF1ZGlvL3NwZWNpZmlj
YXRpb24uaHRtbCNBdWRpb0J1ZmZlci1zZWN0aW9uCisgICAgICAgIEFkZCB0ZXN0IHRvIGNvdmVy
IGJhc2ljIGF0dHJpYnV0ZXMgb2YgQXVkaW9CdWZmZXIuCisKKyAgICAgICAgKiB3ZWJhdWRpby9h
dWRpb2J1ZmZlci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYmF1ZGlvL2F1ZGlv
YnVmZmVyLmh0bWw6IEFkZGVkLgorCiAyMDEyLTA3LTI5ICBEYW4gQmVybnN0ZWluICA8bWl0ekBh
cHBsZS5jb20+CiAKICAgICAgICAgSGl0IHRlc3RpbmcgaW4gdGhlIGdhcCBiZXR3ZWVuIHBhZ2Vz
IHJldHVybnMgaW5jb3JyZWN0IHJlc3VsdHMgaW4gZmxpcHBlZCBibG9ja3Mgd3JpdGluZyBtb2Rl
cwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViYXVkaW8vYXVkaW9idWZmZXItZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvd2ViYXVkaW8vYXVkaW9idWZmZXItZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmRiZmJiYzQzY2U3YTY0ZDQzZjNlZTVkMDA2NzY5Mzk4ZDdjNTAxNWIKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJhdWRpby9hdWRpb2J1ZmZlci1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSwxOCBAQAorQmFzaWMgdGVzdHMgZm9yIEF1ZGlvQnVmZmVyLgorCitPbiBzdWNj
ZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBi
eSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBzYW1wbGVSYXRlIGhhcyBiZWVuIHNldCBjb3Jy
ZWN0bHkuCitQQVNTIGxlbmd0aCBoYXMgYmVlbiBzZXQgY29ycmVjdGx5LgorUEFTUyBkdXJhdGlv
biBoYXMgYmVlbiBzZXQgY29ycmVjdGx5LgorUEFTUyBudW1iZXJPZkNoYW5uZWxzIGhhcyBiZWVu
IHNldCBjb3JyZWN0bHkuCitQQVNTIGdldENoYW5uZWxEYXRhKDApIHJldHVybnMgYSBGbG9hdDMy
QXJyYXkgb2JqZWN0LgorUEFTUyBnZXRDaGFubmVsRGF0YSgxKSByZXR1cm5zIGEgRmxvYXQzMkFy
cmF5IG9iamVjdC4KK1BBU1MgZ2V0Q2hhbm5lbERhdGEoMikgcmV0dXJucyBhIEZsb2F0MzJBcnJh
eSBvYmplY3QuCitQQVNTIGdldENoYW5uZWxEYXRhKDMpIHJldHVybnMgYSBGbG9hdDMyQXJyYXkg
b2JqZWN0LgorUEFTUyBFeGNlcHRpb24gaGFzIGJlZW4gdGhyb3duIGNvcnJlY3RseSB3aGVuIGlu
ZGV4IGlzIG5vdCBsZXNzIHRoYW4gbnVtYmVyT2ZDaGFubmVscy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJhdWRpby9hdWRpb2J1ZmZlci5odG1sIGIvTGF5b3V0VGVzdHMvd2ViYXVkaW8vYXVkaW9i
dWZmZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMTE4MWQ3ODU5MDUzM2U5NmViMzllYzljNDI0M2JiMDNk
MDE4ZmY4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViYXVkaW8vYXVkaW9idWZm
ZXIuaHRtbApAQCAtMCwwICsxLDU1IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+
Cis8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIkJhc2ljIHRlc3Rz
IGZvciBBdWRpb0J1ZmZlci4iKTsKKwordmFyIHNhbXBsZVJhdGUgPSA0NDEwMC4wCit2YXIgbGVu
Z3RoSW5TZWNvbmRzID0gMjsKK3ZhciBudW1iZXJPZkNoYW5uZWxzID0gNDsKKwordmFyIGNvbnRl
eHQgPSBuZXcgd2Via2l0QXVkaW9Db250ZXh0KCk7Cit2YXIgYnVmZmVyID0gY29udGV4dC5jcmVh
dGVCdWZmZXIobnVtYmVyT2ZDaGFubmVscywgc2FtcGxlUmF0ZSAqIGxlbmd0aEluU2Vjb25kcywg
c2FtcGxlUmF0ZSk7CisKK2lmIChidWZmZXIuc2FtcGxlUmF0ZSA9PT0gc2FtcGxlUmF0ZSkKKyAg
ICB0ZXN0UGFzc2VkKCJzYW1wbGVSYXRlIGhhcyBiZWVuIHNldCBjb3JyZWN0bHkuIik7CitlbHNl
CisgICAgdGVzdEZhaWxlZCgic2FtcGxlUmF0ZSBzaG91bGQgYmUgc2V0IGNvcnJlY3RseS4iKTsK
KworaWYgKGJ1ZmZlci5sZW5ndGggPT09IHNhbXBsZVJhdGUgKiBsZW5ndGhJblNlY29uZHMpCisg
ICAgdGVzdFBhc3NlZCgibGVuZ3RoIGhhcyBiZWVuIHNldCBjb3JyZWN0bHkuIik7CitlbHNlCisg
ICAgdGVzdEZhaWxlZCgibGVuZ3RoIHNob3VsZCBiZSBzZXQgY29ycmVjdGx5Iik7CisKK2lmIChi
dWZmZXIuZHVyYXRpb24gPT09IGxlbmd0aEluU2Vjb25kcykKKyAgICB0ZXN0UGFzc2VkKCJkdXJh
dGlvbiBoYXMgYmVlbiBzZXQgY29ycmVjdGx5LiIpOworZWxzZQorICAgIHRlc3RGYWlsZWQoImR1
cmF0aW9uIHNob3VsZCBiZSBzZXQgY29ycmVjdGx5LiIpOworCitpZiAoYnVmZmVyLm51bWJlck9m
Q2hhbm5lbHMgPT09IG51bWJlck9mQ2hhbm5lbHMpCisgICAgdGVzdFBhc3NlZCgibnVtYmVyT2ZD
aGFubmVscyBoYXMgYmVlbiBzZXQgY29ycmVjdGx5LiIpOworZWxzZQorICAgIHRlc3RGYWlsZWQo
Im51bWJlck9mQ2hhbm5lbHMgc2hvdWxkIGJlIHNldCBjb3JyZWN0bHkuIik7CisKK2ZvciAodmFy
IGluZGV4ID0gMDsgaW5kZXggPCBidWZmZXIubnVtYmVyT2ZDaGFubmVsczsgKytpbmRleCkgewor
ICAgIGlmIChidWZmZXIuZ2V0Q2hhbm5lbERhdGEoaW5kZXgpIGluc3RhbmNlb2Ygd2luZG93LkZs
b2F0MzJBcnJheSkKKyAgICAgICAgdGVzdFBhc3NlZCgiZ2V0Q2hhbm5lbERhdGEoIiArIGluZGV4
ICsgIikgcmV0dXJucyBhIEZsb2F0MzJBcnJheSBvYmplY3QuIik7CisgICAgZWxzZQorICAgICAg
ICB0ZXN0RmFpbGVkKCJnZXRDaGFubmVsRGF0YSgiICsgaW5kZXggKyAiKSBzaG91bGQgcmV0dXJu
IGEgRmxvYXQzMkFycmF5IG9iamVjdC4iKTsKK30KKwordHJ5IHsKKyAgICBidWZmZXIuZ2V0Q2hh
bm5lbERhdGEoYnVmZmVyLm51bWJlck9mQ2hhbm5lbHMpOworICAgIHRlc3RGYWlsZWQoIkV4Y2Vw
dGlvbiBzaG91bGQgYmUgdGhyb3duIHdoZW4gaW5kZXggaXMgbm90IGxlc3MgdGhhbiBudW1iZXJP
ZkNoYW5uZWxzLiIpOworfSBjYXRjaChlKSB7CisgICAgdGVzdFBhc3NlZCgiRXhjZXB0aW9uIGhh
cyBiZWVuIHRocm93biBjb3JyZWN0bHkgd2hlbiBpbmRleCBpcyBub3QgbGVzcyB0aGFuIG51bWJl
ck9mQ2hhbm5lbHMuIik7Cit9CisKKzwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vZmFzdC9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>