<?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>82307</bug_id>
          
          <creation_ts>2012-03-27 01:26:45 -0700</creation_ts>
          <short_desc>[WebSocket]Browser must fail connection if Sec-WebSocket-Protocol mismatched.</short_desc>
          <delta_ts>2012-03-28 21:22:36 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>0</everconfirmed>
          <reporter name="Li Yin">li.yin</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>benjamin</cc>
    
    <cc>tkent</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yutak</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>588642</commentid>
    <comment_count>0</comment_count>
    <who name="Li Yin">li.yin</who>
    <bug_when>2012-03-27 01:26:45 -0700</bug_when>
    <thetext>From RFC 6455: 
http://tools.ietf.org/html/rfc6455#section-4.1
If the response includes a |Sec-WebSocket-Protocol| header field
and this header field indicates the use of a subprotocol that was
not present in the client&apos;s handshake (the server has indicated a
subprotocol not requested by the client), the client MUST _Fail
the WebSocket Connection_.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>588652</commentid>
    <comment_count>1</comment_count>
      <attachid>134001</attachid>
    <who name="Li Yin">li.yin</who>
    <bug_when>2012-03-27 01:49:41 -0700</bug_when>
    <thetext>Created attachment 134001
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>588688</commentid>
    <comment_count>2</comment_count>
      <attachid>134001</attachid>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2012-03-27 02:37:59 -0700</bug_when>
    <thetext>Comment on attachment 134001
Patch

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

&gt; Source/WebCore/Modules/websockets/WebSocketHandshake.cpp:737
&gt; +            size_t i;
&gt; +            for (i = 0; i &lt; result.size(); ++i) {
&gt; +                if (serverWebSocketProtocol == result[i])
&gt; +                    break;
&gt; +            }
&gt; +            if (i == result.size()) {
&gt; +                m_failureReason = &quot;Error during WebSocket handshake: Sec-WebSocket-Protocol mismatch&quot;;
&gt; +                return false;
&gt; +            }

Use Vector&lt;&gt;::contains().

&gt; LayoutTests/http/tests/websocket/tests/hybi/handshake-fail-by-mismatch-protocol-header.html:21
&gt; +function doTest(curTestNumber)

nit: We usually don&apos;t prefer abbreviated names like &quot;cur&quot;.

&gt; LayoutTests/http/tests/websocket/tests/hybi/handshake-fail-by-mismatch-protocol-header.html:40
&gt; +            return ;

nit: The space before semicolon is not necessary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>588691</commentid>
    <comment_count>3</comment_count>
      <attachid>134001</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-03-27 02:39:25 -0700</bug_when>
    <thetext>Comment on attachment 134001
Patch

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

As for the previous patches. I do not know enough about the state of WebSocket to r+ so I&apos;ll leave the final review to a more knowledgeable reviewer.

&gt; Source/WebCore/ChangeLog:9
&gt; +        From RFC6455, if the WebSocket openhanding respond included the mismatched
&gt; +        Sec-WebSocket-Protocol header field, the client must fail the WebSocket Connection.

I think it is useful when you also add a link to the spec.

&gt; Source/WebCore/Modules/websockets/WebSocketHandshake.cpp:729
&gt; +            size_t i;

The variable name &quot;i&quot; is a bad name in this context. We use &quot;i&quot; when it is stopped an obvious what it is.

Here, you should use something like serverWebSocketProtocolIndex or better.

&gt; LayoutTests/http/tests/websocket/tests/hybi/handshake-fail-by-mismatch-protocol-header.html:24
&gt; +    if (protocolCase[curTestNumber] === &quot;&quot;)
&gt; +        ws = new WebSocket(url);

How does this case happen?

All the tests are run with integers. The strict equality does not seems to mach any of the invocation.

&gt; LayoutTests/http/tests/websocket/tests/hybi/handshake-fail-by-mismatch-protocol-header_wsh.py:13
&gt; +    raise handshake.AbortedByUserException(&apos;Abort the connection&apos;) # Prevents pywebsocket from sending its own handshake message.

The comment should probably be on the above line if you want to follow python&apos;s style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>588693</commentid>
    <comment_count>4</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-03-27 02:41:13 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Use Vector&lt;&gt;::contains().

Hahaha, good point. I missed the obvious :-D</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>588802</commentid>
    <comment_count>5</comment_count>
    <who name="Li Yin">li.yin</who>
    <bug_when>2012-03-27 05:32:33 -0700</bug_when>
    <thetext>
(In reply to comment #4)
&gt; (In reply to comment #2)
&gt; &gt; Use Vector&lt;&gt;::contains().
&gt; 
&gt; Hahaha, good point. I missed the obvious :-D
Yeah, good point, thank you!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>588827</commentid>
    <comment_count>6</comment_count>
    <who name="Li Yin">li.yin</who>
    <bug_when>2012-03-27 06:38:39 -0700</bug_when>
    <thetext>
(In reply to comment #3)
&gt; &gt; Source/WebCore/ChangeLog:9
&gt; &gt; +        From RFC6455, if the WebSocket openhanding respond included the mismatched
&gt; &gt; +        Sec-WebSocket-Protocol header field, the client must fail the WebSocket Connection.
&gt; 
&gt; I think it is useful when you also add a link to the spec.
Yeah, I will add the linked address in the ChangeLog

&gt; &gt; LayoutTests/http/tests/websocket/tests/hybi/handshake-fail-by-mismatch-protocol-header.html:24
&gt; &gt; +    if (protocolCase[curTestNumber] === &quot;&quot;)
&gt; &gt; +        ws = new WebSocket(url);
&gt; 
&gt; How does this case happen?
&gt; 
&gt; All the tests are run with integers. The strict equality does not seems to mach any of the invocation.
When the curTestNumber is 0, the protocolCase[curTestNumber] equals &quot;&quot;, protocolCase[curTestNumber] === &quot;&quot; returns true.
 
&gt; &gt; +    raise handshake.AbortedByUserException(&apos;Abort the connection&apos;) # Prevents pywebsocket from sending its own handshake message.
&gt; 
&gt; The comment should probably be on the above line if you want to follow python&apos;s style.
This style should be accepted, many current test case used this style, such as long-invalid-header_wsh.py, unmasked-frames_wsh.py etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>588838</commentid>
    <comment_count>7</comment_count>
      <attachid>134047</attachid>
    <who name="Li Yin">li.yin</who>
    <bug_when>2012-03-27 06:52:43 -0700</bug_when>
    <thetext>Created attachment 134047
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>589555</commentid>
    <comment_count>8</comment_count>
      <attachid>134047</attachid>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2012-03-27 18:43:04 -0700</bug_when>
    <thetext>Comment on attachment 134047
Patch

Thanks for doing this. This patch looks OK to me. Please wait for comments from a WebKit reviewer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>589736</commentid>
    <comment_count>9</comment_count>
      <attachid>134047</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-03-28 01:22:22 -0700</bug_when>
    <thetext>Comment on attachment 134047
Patch

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

&gt; Source/WebCore/Modules/websockets/WebSocketHandshake.cpp:728
&gt; +            m_clientProtocol.split(String(&quot;, &quot;), result);

Using a string literal &quot;, &quot; looks dangerous.  If we changed the protocol string generation code so that it used &quot; , &quot;, this check would not work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>589748</commentid>
    <comment_count>10</comment_count>
    <who name="Li Yin">li.yin</who>
    <bug_when>2012-03-28 01:48:02 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 134047 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=134047&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/Modules/websockets/WebSocketHandshake.cpp:728
&gt; &gt; +            m_clientProtocol.split(String(&quot;, &quot;), result);
&gt; 
&gt; Using a string literal &quot;, &quot; looks dangerous.  If we changed the protocol string generation code so that it used &quot; , &quot;, this check would not work.

It should be matched with joinStrings(protocols, &quot;, &quot;), which can be found in WebSocket::connect.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>589753</commentid>
    <comment_count>11</comment_count>
    <who name="Li Yin">li.yin</who>
    <bug_when>2012-03-28 01:53:55 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; 
&gt; &gt; Source/WebCore/Modules/websockets/WebSocketHandshake.cpp:728
&gt; &gt; +            m_clientProtocol.split(String(&quot;, &quot;), result);
&gt; 
&gt; Using a string literal &quot;, &quot; looks dangerous.  If we changed the protocol string generation code so that it used &quot; , &quot;, this check would not work.

This String was constructed by browser itself, not from network. So it would be safe.
In addition, if the protocol spec will be updated, the constructing methods also need be improved.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>589764</commentid>
    <comment_count>12</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-03-28 02:11:32 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (In reply to comment #9)
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/Modules/websockets/WebSocketHandshake.cpp:728
&gt; &gt; &gt; +            m_clientProtocol.split(String(&quot;, &quot;), result);
&gt; &gt; 
&gt; &gt; Using a string literal &quot;, &quot; looks dangerous.  If we changed the protocol string generation code so that it used &quot; , &quot;, this check would not work.
&gt; 
&gt; This String was constructed by browser itself, not from network. So it would be safe.
&gt; In addition, if the protocol spec will be updated, the constructing methods also need be improved.

Yeah, I know.  Someone might want to change &quot;, &quot; in WebSocket::connect() in the future.
We should have a constant variable for the separator, or WebSocket should pass unjoined protocol tokens to WebSocketHandshake.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>590749</commentid>
    <comment_count>13</comment_count>
      <attachid>134479</attachid>
    <who name="Li Yin">li.yin</who>
    <bug_when>2012-03-28 19:09:21 -0700</bug_when>
    <thetext>Created attachment 134479
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>590757</commentid>
    <comment_count>14</comment_count>
      <attachid>134479</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-03-28 19:14:39 -0700</bug_when>
    <thetext>Comment on attachment 134479
Patch

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

&gt; Source/WebCore/Modules/websockets/WebSocket.cpp:154
&gt; +static const char* webSocketSubProtocolSeperator = &quot;, &quot;;
&gt; +
&gt; +const char* WebSocket::getSubProtocolSeperator()
&gt; +{
&gt; +    return webSocketSubProtocolSeperator;

We don&apos;t need webSocketSubProtocolSeparator const variable.
return &quot;, &quot;; is ok.

We don&apos;t add &quot;get&quot; prefix for such function.  This should be named as subProtocolSeparator().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>590764</commentid>
    <comment_count>15</comment_count>
      <attachid>134481</attachid>
    <who name="Li Yin">li.yin</who>
    <bug_when>2012-03-28 19:31:06 -0700</bug_when>
    <thetext>Created attachment 134481
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>590778</commentid>
    <comment_count>16</comment_count>
      <attachid>134481</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-03-28 20:05:40 -0700</bug_when>
    <thetext>Comment on attachment 134481
Patch

ok</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>590826</commentid>
    <comment_count>17</comment_count>
      <attachid>134481</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-28 21:22:29 -0700</bug_when>
    <thetext>Comment on attachment 134481
Patch

Clearing flags on attachment: 134481

Committed r112499: &lt;http://trac.webkit.org/changeset/112499&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>590827</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-28 21:22:36 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>134001</attachid>
            <date>2012-03-27 01:49:41 -0700</date>
            <delta_ts>2012-03-27 06:52:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-82307-20120328165154.patch</filename>
            <type>text/plain</type>
            <size>7626</size>
            <attacher name="Li Yin">li.yin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyMDQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2ZkNTkzNWMwMGEzNjMw
NmYxMDlkMzg2Y2Y5Mjc1OTc4YmUxNGM1OS4uMDUzNWFjY2VkOWI5ZjQzMWI3MDdmZTk5ZjcxN2Rj
MWQwYzVhN2Y5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDEyLTAzLTI4ICBMaSBZ
aW4gIDxsaS55aW5AaW50ZWwuY29tPgorCisgICAgICAgIFtXZWJTb2NrZXRdQnJvd3NlciBtdXN0
IGZhaWwgY29ubmVjdGlvbiBpZiBTZWMtV2ViU29ja2V0LVByb3RvY29sIG1pc21hdGNoZWQuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MjMwNworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZyb20gUkZDNjQ1
NSwgaWYgdGhlIFdlYlNvY2tldCBvcGVuaGFuZGluZyByZXNwb25kIGluY2x1ZGVkIHRoZSBtaXNt
YXRjaGVkCisgICAgICAgIFNlYy1XZWJTb2NrZXQtUHJvdG9jb2wgaGVhZGVyIGZpZWxkLCB0aGUg
Y2xpZW50IG11c3QgZmFpbCB0aGUgV2ViU29ja2V0IENvbm5lY3Rpb24uCisKKyAgICAgICAgVGVz
dDogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9oYW5kc2hha2UtZmFpbC1ieS1taXNt
YXRjaC1wcm90b2NvbC1oZWFkZXIuaHRtbAorCisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRz
L1dlYlNvY2tldEhhbmRzaGFrZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRIYW5k
c2hha2U6OmNoZWNrUmVzcG9uc2VIZWFkZXJzKToKKwogMjAxMi0wMy0yNSAgQW50dGkgS29pdmlz
dG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgRG9uJ3QgdXNlIENTU1J1bGVMaXN0IGZv
ciBjaGlsZCBydWxlIG93bmVyc2hpcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcAppbmRleCBlMjIxYTlkYzgyMWU0
NjgwNDczZDhlZjdhOWVjMjc4MDE1NmJiMDZlLi44NDAwMGFmMDQyNWYxZjg5MTRkYTk5Y2VlNzMx
NjczMjFhOWNjMDFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tl
dHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcApAQCAtNzE5LDYgKzcxOSwyMyBAQCBib29s
IFdlYlNvY2tldEhhbmRzaGFrZTo6Y2hlY2tSZXNwb25zZUhlYWRlcnMoKQogICAgICAgICAgICAg
bV9mYWlsdXJlUmVhc29uID0gIkVycm9yIGR1cmluZyBXZWJTb2NrZXQgaGFuZHNoYWtlOiBTZWMt
V2ViU29ja2V0LUFjY2VwdCBtaXNtYXRjaCI7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgIH0KKyAgICAgICAgaWYgKCFzZXJ2ZXJXZWJTb2NrZXRQcm90b2NvbC5pc051bGwoKSkg
eworICAgICAgICAgICAgaWYgKG1fY2xpZW50UHJvdG9jb2wuaXNFbXB0eSgpKSB7CisgICAgICAg
ICAgICAgICAgbV9mYWlsdXJlUmVhc29uID0gIkVycm9yIGR1cmluZyBXZWJTb2NrZXQgaGFuZHNo
YWtlOiBTZWMtV2ViU29ja2V0LVByb3RvY29sIG1pc21hdGNoIjsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBWZWN0b3I8U3RyaW5nPiBy
ZXN1bHQ7CisgICAgICAgICAgICBtX2NsaWVudFByb3RvY29sLnNwbGl0KFN0cmluZygiLCAiKSwg
cmVzdWx0KTsKKyAgICAgICAgICAgIHNpemVfdCBpOworICAgICAgICAgICAgZm9yIChpID0gMDsg
aSA8IHJlc3VsdC5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgICAgIGlmIChzZXJ2ZXJXZWJT
b2NrZXRQcm90b2NvbCA9PSByZXN1bHRbaV0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGkgPT0gcmVzdWx0LnNpemUoKSkgeworICAg
ICAgICAgICAgICAgIG1fZmFpbHVyZVJlYXNvbiA9ICJFcnJvciBkdXJpbmcgV2ViU29ja2V0IGhh
bmRzaGFrZTogU2VjLVdlYlNvY2tldC1Qcm90b2NvbCBtaXNtYXRjaCI7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgfQogICAgIHJl
dHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDY5NGIyZWM0OTk1MjZmYjYzOGE3MzVmZWQ1NTliMTI0OWY0
MWQ2ZDQuLjE1YzdlM2ZlYmJjYjA2N2UwZWU5MDZiYzE4ZGJhYjg4YmJlZTU2MWQgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwyMyBAQAorMjAxMi0wMy0yOCAgTGkgWWluICA8bGkueWluQGludGVsLmNvbT4KKwor
ICAgICAgICBbV2ViU29ja2V0XUJyb3dzZXIgbXVzdCBmYWlsIGNvbm5lY3Rpb24gaWYgU2VjLVdl
YlNvY2tldC1Qcm90b2NvbCBtaXNtYXRjaGVkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODIzMDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBGcm9tIFJGQzY0NTUKKyAgICAgICAgSWYgdGhlIHJlc3BvbnNl
IGluY2x1ZGVzIGEgfFNlYy1XZWJTb2NrZXQtUHJvdG9jb2x8IGhlYWRlciBmaWVsZAorICAgICAg
ICBhbmQgdGhpcyBoZWFkZXIgZmllbGQgaW5kaWNhdGVzIHRoZSB1c2Ugb2YgYSBzdWJwcm90b2Nv
bCB0aGF0IHdhcworICAgICAgICBub3QgcHJlc2VudCBpbiB0aGUgY2xpZW50J3MgaGFuZHNoYWtl
ICh0aGUgc2VydmVyIGhhcyBpbmRpY2F0ZWQgYQorICAgICAgICBzdWJwcm90b2NvbCBub3QgcmVx
dWVzdGVkIGJ5IHRoZSBjbGllbnQpLCB0aGUgY2xpZW50IE1VU1QgX0ZhaWwKKyAgICAgICAgdGhl
IFdlYlNvY2tldCBDb25uZWN0aW9uXy4KKworICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0
L3Rlc3RzL2h5YmkvaGFuZHNoYWtlLWZhaWwtYnktbWlzbWF0Y2gtcHJvdG9jb2wtaGVhZGVyLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMv
aHliaS9oYW5kc2hha2UtZmFpbC1ieS1taXNtYXRjaC1wcm90b2NvbC1oZWFkZXIuaHRtbDogQWRk
ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9oYW5kc2hha2Ut
ZmFpbC1ieS1taXNtYXRjaC1wcm90b2NvbC1oZWFkZXJfd3NoLnB5OiBBZGRlZC4KKyAgICAgICAg
KHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKToKKyAgICAgICAgKHdlYl9zb2NrZXRfdHJh
bnNmZXJfZGF0YSk6CisKIDIwMTItMDMtMjUgIFJhcGhhZWwgS3VibyBkYSBDb3N0YSAgPHJha3Vj
b0BGcmVlQlNELm9yZz4KIAogICAgICAgICBbRUZMXSBVbnJldmlld2VkIGdhcmRlbmluZy4gVXBk
YXRlIHNvbWUgdGFibGVzL2xheWVyaW5nLyBiYXNlbGluZXMuCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2hhbmRzaGFrZS1mYWlsLWJ5LW1p
c21hdGNoLXByb3RvY29sLWhlYWRlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2hhbmRzaGFrZS1mYWlsLWJ5LW1pc21hdGNoLXByb3Rv
Y29sLWhlYWRlci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjMzNzEzNGQzMDNiMzNlMDI0Njcy
ZjNlYjQ4ZTQ4ODA0MDU3NGVkNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvaGFuZHNoYWtlLWZhaWwtYnktbWlzbWF0Y2gtcHJv
dG9jb2wtaGVhZGVyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitDT05TT0xFIE1FU1NB
R0U6IEVycm9yIGR1cmluZyBXZWJTb2NrZXQgaGFuZHNoYWtlOiBTZWMtV2ViU29ja2V0LVByb3Rv
Y29sIG1pc21hdGNoCitDT05TT0xFIE1FU1NBR0U6IEVycm9yIGR1cmluZyBXZWJTb2NrZXQgaGFu
ZHNoYWtlOiBTZWMtV2ViU29ja2V0LVByb3RvY29sIG1pc21hdGNoCitDT05TT0xFIE1FU1NBR0U6
IEVycm9yIGR1cmluZyBXZWJTb2NrZXQgaGFuZHNoYWtlOiBTZWMtV2ViU29ja2V0LVByb3RvY29s
IG1pc21hdGNoCitUZXN0IHdoZXRoZXIgV2ViU29ja2V0IGhhbmRzaGFrZSBmYWlscyBpZiB0aGUg
c2VydmVyIHNlbmRzIG1pc21hdGNoZWQgU2VjLVdlYlNvY2tldC1Qcm90b2NvbCBoZWFkZXIuCisK
K09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZv
bGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworUEFTUyBjbG9zZUV2ZW50Lndhc0NsZWFuIGlz
IGZhbHNlCitQQVNTIGNsb3NlRXZlbnQud2FzQ2xlYW4gaXMgZmFsc2UKK1BBU1MgY2xvc2VFdmVu
dC53YXNDbGVhbiBpcyBmYWxzZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitU
RVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29j
a2V0L3Rlc3RzL2h5YmkvaGFuZHNoYWtlLWZhaWwtYnktbWlzbWF0Y2gtcHJvdG9jb2wtaGVhZGVy
Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2hhbmRz
aGFrZS1mYWlsLWJ5LW1pc21hdGNoLXByb3RvY29sLWhlYWRlci5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ0
YWY3YWI2ZDJjZGVjMWVjOWJiYTAyZjE4MTM0YmEyYzQxNTY4YjgKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2hhbmRzaGFrZS1m
YWlsLWJ5LW1pc21hdGNoLXByb3RvY29sLWhlYWRlci5odG1sCkBAIC0wLDAgKzEsNTEgQEAKKzwh
RE9DVFlQRSBIVE1MPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9q
cy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUZXN0IHdoZXRoZXIgV2ViU29ja2V0IGhhbmRzaGFr
ZSBmYWlscyBpZiB0aGUgc2VydmVyIHNlbmRzIG1pc21hdGNoZWQgU2VjLVdlYlNvY2tldC1Qcm90
b2NvbCBoZWFkZXIuIik7CisKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKK2lmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJp
ZGVQcmVmZXJlbmNlKCJXZWJLaXRIaXhpZTc2V2ViU29ja2V0UHJvdG9jb2xFbmFibGVkIiwgMCk7
CisKK3ZhciB1cmwgPSAid3M6Ly9sb2NhbGhvc3Q6ODg4MC93ZWJzb2NrZXQvdGVzdHMvaHliaS9o
YW5kc2hha2UtZmFpbC1ieS1taXNtYXRjaC1wcm90b2NvbC1oZWFkZXIiOwordmFyIGNsb3NlRXZl
bnQ7Cit2YXIgd3M7Cit2YXIgcHJvdG9jb2xDYXNlID0gWyIiLCAiTWF0Y2hQcm90b2NvbCIsIFsi
TWF0Y2hQcm90b2NvbDEiLCAiTWF0Y2hQcm90b2NvbDIiXV07CisKK2Z1bmN0aW9uIGRvVGVzdChj
dXJUZXN0TnVtYmVyKQoreworICAgIGlmIChwcm90b2NvbENhc2VbY3VyVGVzdE51bWJlcl0gPT09
ICIiKQorICAgICAgICB3cyA9IG5ldyBXZWJTb2NrZXQodXJsKTsKKyAgICBlbHNlCisgICAgICAg
IHdzID0gbmV3IFdlYlNvY2tldCh1cmwsIHByb3RvY29sQ2FzZVtjdXJUZXN0TnVtYmVyXSk7CisK
KyAgICB3cy5vbm9wZW4gPSBmdW5jdGlvbigpCisgICAgeworICAgICAgICB0ZXN0RmFpbGVkKCJD
b25uZWN0aW9uIGVzdGFibGlzaGVkLiIpOworICAgICAgICB3cy5jbG9zZSgpOworICAgIH07CisK
KyAgICB3cy5vbmNsb3NlID0gZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICBjbG9zZUV2
ZW50ID0gZXZlbnQ7CisgICAgICAgIHNob3VsZEJlRmFsc2UoImNsb3NlRXZlbnQud2FzQ2xlYW4i
KTsKKyAgICAgICAgaWYgKGN1clRlc3ROdW1iZXIgPT09IHByb3RvY29sQ2FzZS5sZW5ndGggLSAx
KSB7CisgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgICAgIHJldHVybiA7Cisg
ICAgICAgIH0KKyAgICAgICAgZG9UZXN0KGN1clRlc3ROdW1iZXIgKyAxKTsgICAgICAgIAorICAg
IH07Cit9CisKK2RvVGVzdCgwKTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
Li4vanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rl
c3RzL2h5YmkvaGFuZHNoYWtlLWZhaWwtYnktbWlzbWF0Y2gtcHJvdG9jb2wtaGVhZGVyX3dzaC5w
eSBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvaGFuZHNoYWtl
LWZhaWwtYnktbWlzbWF0Y2gtcHJvdG9jb2wtaGVhZGVyX3dzaC5weQpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMzVj
NTdiYmNhMDY0N2MyMThkZGI1NWZhYmM2ODg0MjRiYTcyZTcxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9oYW5kc2hha2UtZmFp
bC1ieS1taXNtYXRjaC1wcm90b2NvbC1oZWFkZXJfd3NoLnB5CkBAIC0wLDAgKzEsMTcgQEAKK2Zy
b20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBoYW5kc2hha2UKK2Zyb20gbW9kX3B5d2Vic29ja2V0
LmhhbmRzaGFrZS5oeWJpIGltcG9ydCBjb21wdXRlX2FjY2VwdAorCisKK2RlZiB3ZWJfc29ja2V0
X2RvX2V4dHJhX2hhbmRzaGFrZShyZXF1ZXN0KToKKyAgICBtc2cgPSAnSFRUUC8xLjEgMTAxIFN3
aXRjaGluZyBQcm90b2NvbHNcclxuJworICAgIG1zZyArPSAnVXBncmFkZTogd2Vic29ja2V0XHJc
bicKKyAgICBtc2cgKz0gJ0Nvbm5lY3Rpb246IFVwZ3JhZGVcclxuJworICAgIG1zZyArPSAnU2Vj
LVdlYlNvY2tldC1BY2NlcHQ6ICVzXHJcbicgJSBjb21wdXRlX2FjY2VwdChyZXF1ZXN0LmhlYWRl
cnNfaW5bJ1NlYy1XZWJTb2NrZXQtS2V5J10pWzBdCisgICAgbXNnICs9ICdTZWMtV2ViU29ja2V0
LVByb3RvY29sOiBNaXNtYXRjaFByb3RvY29sXHJcbicgCisgICAgbXNnICs9ICdcclxuJworICAg
IHJlcXVlc3QuY29ubmVjdGlvbi53cml0ZShtc2cpCisgICAgcmFpc2UgaGFuZHNoYWtlLkFib3J0
ZWRCeVVzZXJFeGNlcHRpb24oJ0Fib3J0IHRoZSBjb25uZWN0aW9uJykgIyBQcmV2ZW50cyBweXdl
YnNvY2tldCBmcm9tIHNlbmRpbmcgaXRzIG93biBoYW5kc2hha2UgbWVzc2FnZS4KKworCitkZWYg
d2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhKHJlcXVlc3QpOgorICAgIHBhc3MK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>134047</attachid>
            <date>2012-03-27 06:52:43 -0700</date>
            <delta_ts>2012-03-28 19:09:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-82307-20120328215457.patch</filename>
            <type>text/plain</type>
            <size>7536</size>
            <attacher name="Li Yin">li.yin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyMDQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2ZkNTkzNWMwMGEzNjMw
NmYxMDlkMzg2Y2Y5Mjc1OTc4YmUxNGM1OS4uNTNlMjY4ZTM3NGNjMWM1NDgxZTQ1ZDI1OGY2MWRm
MDcwYTYwNzk1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEyLTAzLTI4ICBMaSBZ
aW4gIDxsaS55aW5AaW50ZWwuY29tPgorCisgICAgICAgIFtXZWJTb2NrZXRdQnJvd3NlciBtdXN0
IGZhaWwgY29ubmVjdGlvbiBpZiBTZWMtV2ViU29ja2V0LVByb3RvY29sIG1pc21hdGNoZWQuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MjMwNworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZyb20gUkZDNjQ1
NTogaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNjQ1NSNzZWN0aW9uLTQuMQorICAgICAg
ICBJZiB0aGUgV2ViU29ja2V0IG9wZW5oYW5kaW5nIHJlc3BvbmQgaW5jbHVkZWQgdGhlIG1pc21h
dGNoZWQKKyAgICAgICAgU2VjLVdlYlNvY2tldC1Qcm90b2NvbCBoZWFkZXIgZmllbGQsIHRoZSBj
bGllbnQgbXVzdCBmYWlsIHRoZSBXZWJTb2NrZXQgQ29ubmVjdGlvbi4KKworICAgICAgICBUZXN0
OiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2hhbmRzaGFrZS1mYWlsLWJ5LW1pc21h
dGNoLXByb3RvY29sLWhlYWRlci5odG1sCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMv
V2ViU29ja2V0SGFuZHNoYWtlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEhhbmRz
aGFrZTo6Y2hlY2tSZXNwb25zZUhlYWRlcnMpOgorCiAyMDEyLTAzLTI1ICBBbnR0aSBLb2l2aXN0
byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBEb24ndCB1c2UgQ1NTUnVsZUxpc3QgZm9y
IGNoaWxkIHJ1bGUgb3duZXJzaGlwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwCmluZGV4IGUyMjFhOWRjODIxZTQ2
ODA0NzNkOGVmN2E5ZWMyNzgwMTU2YmIwNmUuLjIzYTBlOTcwNmZjNTAxNmY1ZjJmNDcxNDhkNzg2
YTUyOTc4N2UxZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0
cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
c29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwCkBAIC03MTksNiArNzE5LDE4IEBAIGJvb2wg
V2ViU29ja2V0SGFuZHNoYWtlOjpjaGVja1Jlc3BvbnNlSGVhZGVycygpCiAgICAgICAgICAgICBt
X2ZhaWx1cmVSZWFzb24gPSAiRXJyb3IgZHVyaW5nIFdlYlNvY2tldCBoYW5kc2hha2U6IFNlYy1X
ZWJTb2NrZXQtQWNjZXB0IG1pc21hdGNoIjsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgfQorICAgICAgICBpZiAoIXNlcnZlcldlYlNvY2tldFByb3RvY29sLmlzTnVsbCgpKSB7
CisgICAgICAgICAgICBpZiAobV9jbGllbnRQcm90b2NvbC5pc0VtcHR5KCkpIHsKKyAgICAgICAg
ICAgICAgICBtX2ZhaWx1cmVSZWFzb24gPSAiRXJyb3IgZHVyaW5nIFdlYlNvY2tldCBoYW5kc2hh
a2U6IFNlYy1XZWJTb2NrZXQtUHJvdG9jb2wgbWlzbWF0Y2giOworICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFZlY3RvcjxTdHJpbmc+IHJl
c3VsdDsKKyAgICAgICAgICAgIG1fY2xpZW50UHJvdG9jb2wuc3BsaXQoU3RyaW5nKCIsICIpLCBy
ZXN1bHQpOworICAgICAgICAgICAgaWYgKCFyZXN1bHQuY29udGFpbnMoc2VydmVyV2ViU29ja2V0
UHJvdG9jb2wpKSB7CisgICAgICAgICAgICAgICAgbV9mYWlsdXJlUmVhc29uID0gIkVycm9yIGR1
cmluZyBXZWJTb2NrZXQgaGFuZHNoYWtlOiBTZWMtV2ViU29ja2V0LVByb3RvY29sIG1pc21hdGNo
IjsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KICAgICB9CiAgICAgcmV0dXJuIHRydWU7CiB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNjk0YjJlYzQ5OTUyNmZiNjM4
YTczNWZlZDU1OWIxMjQ5ZjQxZDZkNC4uMWYzMzAzODM4OGUwMGU1Nzg3ODUxNGE4NjA2NTZkMjhk
ZTRlZDU4MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDEyLTAzLTI4ICBMaSBZaW4gIDxsaS55
aW5AaW50ZWwuY29tPgorCisgICAgICAgIFtXZWJTb2NrZXRdQnJvd3NlciBtdXN0IGZhaWwgY29u
bmVjdGlvbiBpZiBTZWMtV2ViU29ja2V0LVByb3RvY29sIG1pc21hdGNoZWQuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MjMwNworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZyb20gUkZDNjQ1NTogaHR0cDov
L3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNjQ1NSNzZWN0aW9uLTQuMQorICAgICAgICBJZiB0aGUg
cmVzcG9uc2UgaW5jbHVkZXMgYSB8U2VjLVdlYlNvY2tldC1Qcm90b2NvbHwgaGVhZGVyIGZpZWxk
CisgICAgICAgIGFuZCB0aGlzIGhlYWRlciBmaWVsZCBpbmRpY2F0ZXMgdGhlIHVzZSBvZiBhIHN1
YnByb3RvY29sIHRoYXQgd2FzCisgICAgICAgIG5vdCBwcmVzZW50IGluIHRoZSBjbGllbnQncyBo
YW5kc2hha2UgKHRoZSBzZXJ2ZXIgaGFzIGluZGljYXRlZCBhCisgICAgICAgIHN1YnByb3RvY29s
IG5vdCByZXF1ZXN0ZWQgYnkgdGhlIGNsaWVudCksIHRoZSBjbGllbnQgTVVTVCBfRmFpbAorICAg
ICAgICB0aGUgV2ViU29ja2V0IENvbm5lY3Rpb25fLgorCisgICAgICAgICogaHR0cC90ZXN0cy93
ZWJzb2NrZXQvdGVzdHMvaHliaS9oYW5kc2hha2UtZmFpbC1ieS1taXNtYXRjaC1wcm90b2NvbC1o
ZWFkZXItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tl
dC90ZXN0cy9oeWJpL2hhbmRzaGFrZS1mYWlsLWJ5LW1pc21hdGNoLXByb3RvY29sLWhlYWRlci5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2hh
bmRzaGFrZS1mYWlsLWJ5LW1pc21hdGNoLXByb3RvY29sLWhlYWRlcl93c2gucHk6IEFkZGVkLgor
ICAgICAgICAod2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2UpOgorICAgICAgICAod2ViX3Nv
Y2tldF90cmFuc2Zlcl9kYXRhKToKKwogMjAxMi0wMy0yNSAgUmFwaGFlbCBLdWJvIGRhIENvc3Rh
ICA8cmFrdWNvQEZyZWVCU0Qub3JnPgogCiAgICAgICAgIFtFRkxdIFVucmV2aWV3ZWQgZ2FyZGVu
aW5nLiBVcGRhdGUgc29tZSB0YWJsZXMvbGF5ZXJpbmcvIGJhc2VsaW5lcy4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvaGFuZHNoYWtlLWZh
aWwtYnktbWlzbWF0Y2gtcHJvdG9jb2wtaGVhZGVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvaGFuZHNoYWtlLWZhaWwtYnktbWlzbWF0
Y2gtcHJvdG9jb2wtaGVhZGVyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMzM3MTM0ZDMwM2Iz
M2UwMjQ2NzJmM2ViNDhlNDg4MDQwNTc0ZWQ2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9oYW5kc2hha2UtZmFpbC1ieS1taXNt
YXRjaC1wcm90b2NvbC1oZWFkZXItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK0NPTlNP
TEUgTUVTU0FHRTogRXJyb3IgZHVyaW5nIFdlYlNvY2tldCBoYW5kc2hha2U6IFNlYy1XZWJTb2Nr
ZXQtUHJvdG9jb2wgbWlzbWF0Y2gKK0NPTlNPTEUgTUVTU0FHRTogRXJyb3IgZHVyaW5nIFdlYlNv
Y2tldCBoYW5kc2hha2U6IFNlYy1XZWJTb2NrZXQtUHJvdG9jb2wgbWlzbWF0Y2gKK0NPTlNPTEUg
TUVTU0FHRTogRXJyb3IgZHVyaW5nIFdlYlNvY2tldCBoYW5kc2hha2U6IFNlYy1XZWJTb2NrZXQt
UHJvdG9jb2wgbWlzbWF0Y2gKK1Rlc3Qgd2hldGhlciBXZWJTb2NrZXQgaGFuZHNoYWtlIGZhaWxz
IGlmIHRoZSBzZXJ2ZXIgc2VuZHMgbWlzbWF0Y2hlZCBTZWMtV2ViU29ja2V0LVByb3RvY29sIGhl
YWRlci4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNz
YWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCitQQVNTIGNsb3NlRXZlbnQud2Fz
Q2xlYW4gaXMgZmFsc2UKK1BBU1MgY2xvc2VFdmVudC53YXNDbGVhbiBpcyBmYWxzZQorUEFTUyBj
bG9zZUV2ZW50Lndhc0NsZWFuIGlzIGZhbHNlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9oYW5kc2hha2UtZmFpbC1ieS1taXNtYXRjaC1wcm90b2Nv
bC1oZWFkZXIuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5
YmkvaGFuZHNoYWtlLWZhaWwtYnktbWlzbWF0Y2gtcHJvdG9jb2wtaGVhZGVyLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZDY1OTY5YThkZTcwZGY3ZGFmNWY4NDJhNDk0MWUyZjZmZGRhZDUwMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvaGFu
ZHNoYWtlLWZhaWwtYnktbWlzbWF0Y2gtcHJvdG9jb2wtaGVhZGVyLmh0bWwKQEAgLTAsMCArMSw1
MSBAQAorPCFET0NUWVBFIEhUTUw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uLy4uL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRlc3Qgd2hldGhlciBXZWJTb2NrZXQg
aGFuZHNoYWtlIGZhaWxzIGlmIHRoZSBzZXJ2ZXIgc2VuZHMgbWlzbWF0Y2hlZCBTZWMtV2ViU29j
a2V0LVByb3RvY29sIGhlYWRlci4iKTsKKword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwor
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdEhpeGllNzZXZWJTb2NrZXRQcm90b2NvbEVuYWJs
ZWQiLCAwKTsKKwordmFyIHVybCA9ICJ3czovL2xvY2FsaG9zdDo4ODgwL3dlYnNvY2tldC90ZXN0
cy9oeWJpL2hhbmRzaGFrZS1mYWlsLWJ5LW1pc21hdGNoLXByb3RvY29sLWhlYWRlciI7Cit2YXIg
Y2xvc2VFdmVudDsKK3ZhciB3czsKK3ZhciBwcm90b2NvbENhc2UgPSBbIiIsICJNYXRjaFByb3Rv
Y29sIiwgWyJNYXRjaFByb3RvY29sMSIsICJNYXRjaFByb3RvY29sMiJdXTsKKworZnVuY3Rpb24g
ZG9UZXN0KGluZGV4KQoreworICAgIGlmIChwcm90b2NvbENhc2VbaW5kZXhdID09PSAiIikKKyAg
ICAgICAgd3MgPSBuZXcgV2ViU29ja2V0KHVybCk7CisgICAgZWxzZQorICAgICAgICB3cyA9IG5l
dyBXZWJTb2NrZXQodXJsLCBwcm90b2NvbENhc2VbaW5kZXhdKTsKKworICAgIHdzLm9ub3BlbiA9
IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRlc3RGYWlsZWQoIkNvbm5lY3Rpb24gZXN0YWJs
aXNoZWQuIik7CisgICAgICAgIHdzLmNsb3NlKCk7CisgICAgfTsKKworICAgIHdzLm9uY2xvc2Ug
PSBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIGNsb3NlRXZlbnQgPSBldmVudDsKKyAg
ICAgICAgc2hvdWxkQmVGYWxzZSgiY2xvc2VFdmVudC53YXNDbGVhbiIpOworICAgICAgICBpZiAo
aW5kZXggPT09IHByb3RvY29sQ2FzZS5sZW5ndGggLSAxKSB7CisgICAgICAgICAgICBmaW5pc2hK
U1Rlc3QoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBkb1Rlc3Qo
aW5kZXggKyAxKTsgICAgICAgIAorICAgIH07Cit9CisKK2RvVGVzdCgwKTsKKworPC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1wb3N0
LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvaGFuZHNoYWtlLWZhaWwtYnktbWlzbWF0
Y2gtcHJvdG9jb2wtaGVhZGVyX3dzaC5weSBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29j
a2V0L3Rlc3RzL2h5YmkvaGFuZHNoYWtlLWZhaWwtYnktbWlzbWF0Y2gtcHJvdG9jb2wtaGVhZGVy
X3dzaC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5kMzVjNTdiYmNhMDY0N2MyMThkZGI1NWZhYmM2ODg0MjRiYTcy
ZTcxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQv
dGVzdHMvaHliaS9oYW5kc2hha2UtZmFpbC1ieS1taXNtYXRjaC1wcm90b2NvbC1oZWFkZXJfd3No
LnB5CkBAIC0wLDAgKzEsMTcgQEAKK2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBoYW5kc2hh
a2UKK2Zyb20gbW9kX3B5d2Vic29ja2V0LmhhbmRzaGFrZS5oeWJpIGltcG9ydCBjb21wdXRlX2Fj
Y2VwdAorCisKK2RlZiB3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZShyZXF1ZXN0KToKKyAg
ICBtc2cgPSAnSFRUUC8xLjEgMTAxIFN3aXRjaGluZyBQcm90b2NvbHNcclxuJworICAgIG1zZyAr
PSAnVXBncmFkZTogd2Vic29ja2V0XHJcbicKKyAgICBtc2cgKz0gJ0Nvbm5lY3Rpb246IFVwZ3Jh
ZGVcclxuJworICAgIG1zZyArPSAnU2VjLVdlYlNvY2tldC1BY2NlcHQ6ICVzXHJcbicgJSBjb21w
dXRlX2FjY2VwdChyZXF1ZXN0LmhlYWRlcnNfaW5bJ1NlYy1XZWJTb2NrZXQtS2V5J10pWzBdCisg
ICAgbXNnICs9ICdTZWMtV2ViU29ja2V0LVByb3RvY29sOiBNaXNtYXRjaFByb3RvY29sXHJcbicg
CisgICAgbXNnICs9ICdcclxuJworICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0ZShtc2cpCisg
ICAgcmFpc2UgaGFuZHNoYWtlLkFib3J0ZWRCeVVzZXJFeGNlcHRpb24oJ0Fib3J0IHRoZSBjb25u
ZWN0aW9uJykgIyBQcmV2ZW50cyBweXdlYnNvY2tldCBmcm9tIHNlbmRpbmcgaXRzIG93biBoYW5k
c2hha2UgbWVzc2FnZS4KKworCitkZWYgd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhKHJlcXVlc3Qp
OgorICAgIHBhc3MK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>134479</attachid>
            <date>2012-03-28 19:09:21 -0700</date>
            <delta_ts>2012-03-28 19:30:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-82307-20120330101137.patch</filename>
            <type>text/plain</type>
            <size>10072</size>
            <attacher name="Li Yin">li.yin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyMDQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2ZkNTkzNWMwMGEzNjMw
NmYxMDlkMzg2Y2Y5Mjc1OTc4YmUxNGM1OS4uNTNlMjY4ZTM3NGNjMWM1NDgxZTQ1ZDI1OGY2MWRm
MDcwYTYwNzk1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEyLTAzLTI4ICBMaSBZ
aW4gIDxsaS55aW5AaW50ZWwuY29tPgorCisgICAgICAgIFtXZWJTb2NrZXRdQnJvd3NlciBtdXN0
IGZhaWwgY29ubmVjdGlvbiBpZiBTZWMtV2ViU29ja2V0LVByb3RvY29sIG1pc21hdGNoZWQuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MjMwNworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZyb20gUkZDNjQ1
NTogaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNjQ1NSNzZWN0aW9uLTQuMQorICAgICAg
ICBJZiB0aGUgV2ViU29ja2V0IG9wZW5oYW5kaW5nIHJlc3BvbmQgaW5jbHVkZWQgdGhlIG1pc21h
dGNoZWQKKyAgICAgICAgU2VjLVdlYlNvY2tldC1Qcm90b2NvbCBoZWFkZXIgZmllbGQsIHRoZSBj
bGllbnQgbXVzdCBmYWlsIHRoZSBXZWJTb2NrZXQgQ29ubmVjdGlvbi4KKworICAgICAgICBUZXN0
OiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2hhbmRzaGFrZS1mYWlsLWJ5LW1pc21h
dGNoLXByb3RvY29sLWhlYWRlci5odG1sCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMv
V2ViU29ja2V0SGFuZHNoYWtlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEhhbmRz
aGFrZTo6Y2hlY2tSZXNwb25zZUhlYWRlcnMpOgorCiAyMDEyLTAzLTI1ICBBbnR0aSBLb2l2aXN0
byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBEb24ndCB1c2UgQ1NTUnVsZUxpc3QgZm9y
IGNoaWxkIHJ1bGUgb3duZXJzaGlwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29j
a2V0cy9XZWJTb2NrZXQuY3BwCmluZGV4IDc4MTgzZjFmYmQ0OWZiMmEyYjk2YzNiYTQ3M2JiNTg5
Y2I3ODU5MjkuLjQ3YzhmMmI0ZWExNjdjZDJmNDBkNTQ4NzU4ZWVjNDRkODBiZDBjODEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCkBAIC0x
NDcsNiArMTQ3LDEzIEBAIGJvb2wgV2ViU29ja2V0Ojppc0F2YWlsYWJsZSgpCiAgICAgcmV0dXJu
IHdlYlNvY2tldHNBdmFpbGFibGU7CiB9CiAKK3N0YXRpYyBjb25zdCBjaGFyKiB3ZWJTb2NrZXRT
dWJQcm90b2NvbFNlcGVyYXRvciA9ICIsICI7CisKK2NvbnN0IGNoYXIqIFdlYlNvY2tldDo6Z2V0
U3ViUHJvdG9jb2xTZXBlcmF0b3IoKQoreworICAgIHJldHVybiB3ZWJTb2NrZXRTdWJQcm90b2Nv
bFNlcGVyYXRvcjsKK30KKwogV2ViU29ja2V0OjpXZWJTb2NrZXQoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCkKICAgICA6IEFjdGl2ZURPTU9iamVjdChjb250ZXh0LCB0aGlzKQogICAg
ICwgbV9zdGF0ZShDT05ORUNUSU5HKQpAQCAtMjMxLDcgKzIzOCw3IEBAIHZvaWQgV2ViU29ja2V0
Ojpjb25uZWN0KGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcHJvdG9j
b2xzLCBFeGNlCiAgICAgaWYgKG1fdXNlSGl4aWU3NlByb3RvY29sKSB7CiAgICAgICAgIGlmICgh
cHJvdG9jb2xzLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgLy8gRW11bGF0ZSBKYXZhU2NyaXB0
J3MgQXJyYXkudG9TdHJpbmcoKSBiZWhhdmlvci4KLSAgICAgICAgICAgIHByb3RvY29sU3RyaW5n
ID0gam9pblN0cmluZ3MocHJvdG9jb2xzLCAiLCIpOworICAgICAgICAgICAgcHJvdG9jb2xTdHJp
bmcgPSBqb2luU3RyaW5ncyhwcm90b2NvbHMsIGdldFN1YlByb3RvY29sU2VwZXJhdG9yKCkpOwog
ICAgICAgICB9CiAgICAgICAgIGlmICghaXNWYWxpZFByb3RvY29sU3RyaW5nSGl4aWU3Nihwcm90
b2NvbFN0cmluZykpIHsKICAgICAgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+YWRk
Q29uc29sZU1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNz
YWdlTGV2ZWwsICJXcm9uZyBwcm90b2NvbCBmb3IgV2ViU29ja2V0ICciICsgZW5jb2RlUHJvdG9j
b2xTdHJpbmcocHJvdG9jb2xTdHJpbmcpICsgIiciLCBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkt
PnNlY3VyaXR5T3JpZ2luKCktPnRvU3RyaW5nKCkpOwpAQCAtMjY3LDcgKzI3NCw3IEBAIHZvaWQg
V2ViU29ja2V0Ojpjb25uZWN0KGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBWZWN0b3I8U3RyaW5n
PiYgcHJvdG9jb2xzLCBFeGNlCiAgICAgICAgIH0KIAogICAgICAgICBpZiAoIXByb3RvY29scy5p
c0VtcHR5KCkpCi0gICAgICAgICAgICBwcm90b2NvbFN0cmluZyA9IGpvaW5TdHJpbmdzKHByb3Rv
Y29scywgIiwgIik7CisgICAgICAgICAgICBwcm90b2NvbFN0cmluZyA9IGpvaW5TdHJpbmdzKHBy
b3RvY29scywgZ2V0U3ViUHJvdG9jb2xTZXBlcmF0b3IoKSk7CiAgICAgfQogCiAgICAgbV9jaGFu
bmVsLT5jb25uZWN0KG1fdXJsLCBwcm90b2NvbFN0cmluZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmgKaW5kZXggMWU0NDI0NWU4YTFjOWZhYWI3OTgx
YWVmZTU3MGQ1ZjUxNjZlNTM1NS4uNjAyZGY0ODM1NmM4MjFiYTIxOTQ3YWQyNGMzMjdjYzBmNDY2
ODlhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNv
Y2tldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQu
aApAQCAtNTMsNiArNTMsNyBAQCBjbGFzcyBXZWJTb2NrZXQgOiBwdWJsaWMgUmVmQ291bnRlZDxX
ZWJTb2NrZXQ+LCBwdWJsaWMgRXZlbnRUYXJnZXQsIHB1YmxpYyBBY3RpdgogcHVibGljOgogICAg
IHN0YXRpYyB2b2lkIHNldElzQXZhaWxhYmxlKGJvb2wpOwogICAgIHN0YXRpYyBib29sIGlzQXZh
aWxhYmxlKCk7CisgICAgc3RhdGljIGNvbnN0IGNoYXIqIGdldFN1YlByb3RvY29sU2VwZXJhdG9y
KCk7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViU29ja2V0PiBjcmVhdGUoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCopOwogICAgIHZpcnR1YWwgfldlYlNvY2tldCgpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3Bw
CmluZGV4IGUyMjFhOWRjODIxZTQ2ODA0NzNkOGVmN2E5ZWMyNzgwMTU2YmIwNmUuLmNmNTVjZGVk
NjgxNzJiZjlkZDgyYzY0ZjcyNTBlYWM0N2UzN2U3NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwCkBAIC0z
NCw2ICszNCw3IEBACiAjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQogCiAjaW5jbHVkZSAiV2ViU29j
a2V0SGFuZHNoYWtlLmgiCisjaW5jbHVkZSAiV2ViU29ja2V0LmgiCiAKICNpbmNsdWRlICJCYXNl
NjQuaCIKICNpbmNsdWRlICJDb29raWUuaCIKQEAgLTcxOSw2ICs3MjAsMTggQEAgYm9vbCBXZWJT
b2NrZXRIYW5kc2hha2U6OmNoZWNrUmVzcG9uc2VIZWFkZXJzKCkKICAgICAgICAgICAgIG1fZmFp
bHVyZVJlYXNvbiA9ICJFcnJvciBkdXJpbmcgV2ViU29ja2V0IGhhbmRzaGFrZTogU2VjLVdlYlNv
Y2tldC1BY2NlcHQgbWlzbWF0Y2giOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICB9CisgICAgICAgIGlmICghc2VydmVyV2ViU29ja2V0UHJvdG9jb2wuaXNOdWxsKCkpIHsKKyAg
ICAgICAgICAgIGlmIChtX2NsaWVudFByb3RvY29sLmlzRW1wdHkoKSkgeworICAgICAgICAgICAg
ICAgIG1fZmFpbHVyZVJlYXNvbiA9ICJFcnJvciBkdXJpbmcgV2ViU29ja2V0IGhhbmRzaGFrZTog
U2VjLVdlYlNvY2tldC1Qcm90b2NvbCBtaXNtYXRjaCI7CisgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgVmVjdG9yPFN0cmluZz4gcmVzdWx0
OworICAgICAgICAgICAgbV9jbGllbnRQcm90b2NvbC5zcGxpdChTdHJpbmcoV2ViU29ja2V0Ojpn
ZXRTdWJQcm90b2NvbFNlcGVyYXRvcigpKSwgcmVzdWx0KTsKKyAgICAgICAgICAgIGlmICghcmVz
dWx0LmNvbnRhaW5zKHNlcnZlcldlYlNvY2tldFByb3RvY29sKSkgeworICAgICAgICAgICAgICAg
IG1fZmFpbHVyZVJlYXNvbiA9ICJFcnJvciBkdXJpbmcgV2ViU29ja2V0IGhhbmRzaGFrZTogU2Vj
LVdlYlNvY2tldC1Qcm90b2NvbCBtaXNtYXRjaCI7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiB0cnVlOwog
fQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCmluZGV4IDY5NGIyZWM0OTk1MjZmYjYzOGE3MzVmZWQ1NTliMTI0OWY0MWQ2ZDQuLjFmMzMw
MzgzODhlMDBlNTc4Nzg1MTRhODYwNjU2ZDI4ZGU0ZWQ1ODIgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBA
QAorMjAxMi0wMy0yOCAgTGkgWWluICA8bGkueWluQGludGVsLmNvbT4KKworICAgICAgICBbV2Vi
U29ja2V0XUJyb3dzZXIgbXVzdCBmYWlsIGNvbm5lY3Rpb24gaWYgU2VjLVdlYlNvY2tldC1Qcm90
b2NvbCBtaXNtYXRjaGVkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9ODIzMDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBGcm9tIFJGQzY0NTU6IGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzY0NTUj
c2VjdGlvbi00LjEKKyAgICAgICAgSWYgdGhlIHJlc3BvbnNlIGluY2x1ZGVzIGEgfFNlYy1XZWJT
b2NrZXQtUHJvdG9jb2x8IGhlYWRlciBmaWVsZAorICAgICAgICBhbmQgdGhpcyBoZWFkZXIgZmll
bGQgaW5kaWNhdGVzIHRoZSB1c2Ugb2YgYSBzdWJwcm90b2NvbCB0aGF0IHdhcworICAgICAgICBu
b3QgcHJlc2VudCBpbiB0aGUgY2xpZW50J3MgaGFuZHNoYWtlICh0aGUgc2VydmVyIGhhcyBpbmRp
Y2F0ZWQgYQorICAgICAgICBzdWJwcm90b2NvbCBub3QgcmVxdWVzdGVkIGJ5IHRoZSBjbGllbnQp
LCB0aGUgY2xpZW50IE1VU1QgX0ZhaWwKKyAgICAgICAgdGhlIFdlYlNvY2tldCBDb25uZWN0aW9u
Xy4KKworICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvaGFuZHNoYWtl
LWZhaWwtYnktbWlzbWF0Y2gtcHJvdG9jb2wtaGVhZGVyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9oYW5kc2hha2UtZmFpbC1i
eS1taXNtYXRjaC1wcm90b2NvbC1oZWFkZXIuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90
ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9oYW5kc2hha2UtZmFpbC1ieS1taXNtYXRjaC1wcm90
b2NvbC1oZWFkZXJfd3NoLnB5OiBBZGRlZC4KKyAgICAgICAgKHdlYl9zb2NrZXRfZG9fZXh0cmFf
aGFuZHNoYWtlKToKKyAgICAgICAgKHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YSk6CisKIDIwMTIt
MDMtMjUgIFJhcGhhZWwgS3VibyBkYSBDb3N0YSAgPHJha3Vjb0BGcmVlQlNELm9yZz4KIAogICAg
ICAgICBbRUZMXSBVbnJldmlld2VkIGdhcmRlbmluZy4gVXBkYXRlIHNvbWUgdGFibGVzL2xheWVy
aW5nLyBiYXNlbGluZXMuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNv
Y2tldC90ZXN0cy9oeWJpL2hhbmRzaGFrZS1mYWlsLWJ5LW1pc21hdGNoLXByb3RvY29sLWhlYWRl
ci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9o
eWJpL2hhbmRzaGFrZS1mYWlsLWJ5LW1pc21hdGNoLXByb3RvY29sLWhlYWRlci1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZjMzNzEzNGQzMDNiMzNlMDI0NjcyZjNlYjQ4ZTQ4ODA0MDU3NGVkNgot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3Rz
L2h5YmkvaGFuZHNoYWtlLWZhaWwtYnktbWlzbWF0Y2gtcHJvdG9jb2wtaGVhZGVyLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDE0IEBACitDT05TT0xFIE1FU1NBR0U6IEVycm9yIGR1cmluZyBXZWJT
b2NrZXQgaGFuZHNoYWtlOiBTZWMtV2ViU29ja2V0LVByb3RvY29sIG1pc21hdGNoCitDT05TT0xF
IE1FU1NBR0U6IEVycm9yIGR1cmluZyBXZWJTb2NrZXQgaGFuZHNoYWtlOiBTZWMtV2ViU29ja2V0
LVByb3RvY29sIG1pc21hdGNoCitDT05TT0xFIE1FU1NBR0U6IEVycm9yIGR1cmluZyBXZWJTb2Nr
ZXQgaGFuZHNoYWtlOiBTZWMtV2ViU29ja2V0LVByb3RvY29sIG1pc21hdGNoCitUZXN0IHdoZXRo
ZXIgV2ViU29ja2V0IGhhbmRzaGFrZSBmYWlscyBpZiB0aGUgc2VydmVyIHNlbmRzIG1pc21hdGNo
ZWQgU2VjLVdlYlNvY2tldC1Qcm90b2NvbCBoZWFkZXIuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxs
IHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBM
RVRFIi4KKworUEFTUyBjbG9zZUV2ZW50Lndhc0NsZWFuIGlzIGZhbHNlCitQQVNTIGNsb3NlRXZl
bnQud2FzQ2xlYW4gaXMgZmFsc2UKK1BBU1MgY2xvc2VFdmVudC53YXNDbGVhbiBpcyBmYWxzZQor
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvaGFuZHNo
YWtlLWZhaWwtYnktbWlzbWF0Y2gtcHJvdG9jb2wtaGVhZGVyLmh0bWwgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2hhbmRzaGFrZS1mYWlsLWJ5LW1pc21hdGNo
LXByb3RvY29sLWhlYWRlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ2NTk2OWE4ZGU3MGRmN2RhZjVmODQy
YTQ5NDFlMmY2ZmRkYWQ1MDEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2hhbmRzaGFrZS1mYWlsLWJ5LW1pc21hdGNoLXByb3Rv
Y29sLWhlYWRlci5odG1sCkBAIC0wLDAgKzEsNTEgQEAKKzwhRE9DVFlQRSBIVE1MPgorPGh0bWw+
Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy10ZXN0LXJlc291cmNlcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0
aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KK2Rlc2NyaXB0
aW9uKCJUZXN0IHdoZXRoZXIgV2ViU29ja2V0IGhhbmRzaGFrZSBmYWlscyBpZiB0aGUgc2VydmVy
IHNlbmRzIG1pc21hdGNoZWQgU2VjLVdlYlNvY2tldC1Qcm90b2NvbCBoZWFkZXIuIik7CisKK3dp
bmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRI
aXhpZTc2V2ViU29ja2V0UHJvdG9jb2xFbmFibGVkIiwgMCk7CisKK3ZhciB1cmwgPSAid3M6Ly9s
b2NhbGhvc3Q6ODg4MC93ZWJzb2NrZXQvdGVzdHMvaHliaS9oYW5kc2hha2UtZmFpbC1ieS1taXNt
YXRjaC1wcm90b2NvbC1oZWFkZXIiOwordmFyIGNsb3NlRXZlbnQ7Cit2YXIgd3M7Cit2YXIgcHJv
dG9jb2xDYXNlID0gWyIiLCAiTWF0Y2hQcm90b2NvbCIsIFsiTWF0Y2hQcm90b2NvbDEiLCAiTWF0
Y2hQcm90b2NvbDIiXV07CisKK2Z1bmN0aW9uIGRvVGVzdChpbmRleCkKK3sKKyAgICBpZiAocHJv
dG9jb2xDYXNlW2luZGV4XSA9PT0gIiIpCisgICAgICAgIHdzID0gbmV3IFdlYlNvY2tldCh1cmwp
OworICAgIGVsc2UKKyAgICAgICAgd3MgPSBuZXcgV2ViU29ja2V0KHVybCwgcHJvdG9jb2xDYXNl
W2luZGV4XSk7CisKKyAgICB3cy5vbm9wZW4gPSBmdW5jdGlvbigpCisgICAgeworICAgICAgICB0
ZXN0RmFpbGVkKCJDb25uZWN0aW9uIGVzdGFibGlzaGVkLiIpOworICAgICAgICB3cy5jbG9zZSgp
OworICAgIH07CisKKyAgICB3cy5vbmNsb3NlID0gZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAg
ICAgICBjbG9zZUV2ZW50ID0gZXZlbnQ7CisgICAgICAgIHNob3VsZEJlRmFsc2UoImNsb3NlRXZl
bnQud2FzQ2xlYW4iKTsKKyAgICAgICAgaWYgKGluZGV4ID09PSBwcm90b2NvbENhc2UubGVuZ3Ro
IC0gMSkgeworICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKyAgICAgICAgZG9UZXN0KGluZGV4ICsgMSk7ICAgICAgICAKKyAgICB9Owor
fQorCitkb1Rlc3QoMCk7CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pz
LXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9o
eWJpL2hhbmRzaGFrZS1mYWlsLWJ5LW1pc21hdGNoLXByb3RvY29sLWhlYWRlcl93c2gucHkgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2hhbmRzaGFrZS1mYWls
LWJ5LW1pc21hdGNoLXByb3RvY29sLWhlYWRlcl93c2gucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDM1YzU3YmJj
YTA2NDdjMjE4ZGRiNTVmYWJjNjg4NDI0YmE3MmU3MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvaGFuZHNoYWtlLWZhaWwtYnkt
bWlzbWF0Y2gtcHJvdG9jb2wtaGVhZGVyX3dzaC5weQpAQCAtMCwwICsxLDE3IEBACitmcm9tIG1v
ZF9weXdlYnNvY2tldCBpbXBvcnQgaGFuZHNoYWtlCitmcm9tIG1vZF9weXdlYnNvY2tldC5oYW5k
c2hha2UuaHliaSBpbXBvcnQgY29tcHV0ZV9hY2NlcHQKKworCitkZWYgd2ViX3NvY2tldF9kb19l
eHRyYV9oYW5kc2hha2UocmVxdWVzdCk6CisgICAgbXNnID0gJ0hUVFAvMS4xIDEwMSBTd2l0Y2hp
bmcgUHJvdG9jb2xzXHJcbicKKyAgICBtc2cgKz0gJ1VwZ3JhZGU6IHdlYnNvY2tldFxyXG4nCisg
ICAgbXNnICs9ICdDb25uZWN0aW9uOiBVcGdyYWRlXHJcbicKKyAgICBtc2cgKz0gJ1NlYy1XZWJT
b2NrZXQtQWNjZXB0OiAlc1xyXG4nICUgY29tcHV0ZV9hY2NlcHQocmVxdWVzdC5oZWFkZXJzX2lu
WydTZWMtV2ViU29ja2V0LUtleSddKVswXQorICAgIG1zZyArPSAnU2VjLVdlYlNvY2tldC1Qcm90
b2NvbDogTWlzbWF0Y2hQcm90b2NvbFxyXG4nIAorICAgIG1zZyArPSAnXHJcbicKKyAgICByZXF1
ZXN0LmNvbm5lY3Rpb24ud3JpdGUobXNnKQorICAgIHJhaXNlIGhhbmRzaGFrZS5BYm9ydGVkQnlV
c2VyRXhjZXB0aW9uKCdBYm9ydCB0aGUgY29ubmVjdGlvbicpICMgUHJldmVudHMgcHl3ZWJzb2Nr
ZXQgZnJvbSBzZW5kaW5nIGl0cyBvd24gaGFuZHNoYWtlIG1lc3NhZ2UuCisKKworZGVmIHdlYl9z
b2NrZXRfdHJhbnNmZXJfZGF0YShyZXF1ZXN0KToKKyAgICBwYXNzCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>134481</attachid>
            <date>2012-03-28 19:31:06 -0700</date>
            <delta_ts>2012-03-28 21:22:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-82307-20120330103322.patch</filename>
            <type>text/plain</type>
            <size>9282</size>
            <attacher name="Li Yin">li.yin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyMDQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2ZkNTkzNWMwMGEzNjMw
NmYxMDlkMzg2Y2Y5Mjc1OTc4YmUxNGM1OS4uNTNlMjY4ZTM3NGNjMWM1NDgxZTQ1ZDI1OGY2MWRm
MDcwYTYwNzk1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEyLTAzLTI4ICBMaSBZ
aW4gIDxsaS55aW5AaW50ZWwuY29tPgorCisgICAgICAgIFtXZWJTb2NrZXRdQnJvd3NlciBtdXN0
IGZhaWwgY29ubmVjdGlvbiBpZiBTZWMtV2ViU29ja2V0LVByb3RvY29sIG1pc21hdGNoZWQuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MjMwNworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZyb20gUkZDNjQ1
NTogaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNjQ1NSNzZWN0aW9uLTQuMQorICAgICAg
ICBJZiB0aGUgV2ViU29ja2V0IG9wZW5oYW5kaW5nIHJlc3BvbmQgaW5jbHVkZWQgdGhlIG1pc21h
dGNoZWQKKyAgICAgICAgU2VjLVdlYlNvY2tldC1Qcm90b2NvbCBoZWFkZXIgZmllbGQsIHRoZSBj
bGllbnQgbXVzdCBmYWlsIHRoZSBXZWJTb2NrZXQgQ29ubmVjdGlvbi4KKworICAgICAgICBUZXN0
OiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2hhbmRzaGFrZS1mYWlsLWJ5LW1pc21h
dGNoLXByb3RvY29sLWhlYWRlci5odG1sCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMv
V2ViU29ja2V0SGFuZHNoYWtlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEhhbmRz
aGFrZTo6Y2hlY2tSZXNwb25zZUhlYWRlcnMpOgorCiAyMDEyLTAzLTI1ICBBbnR0aSBLb2l2aXN0
byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBEb24ndCB1c2UgQ1NTUnVsZUxpc3QgZm9y
IGNoaWxkIHJ1bGUgb3duZXJzaGlwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29j
a2V0cy9XZWJTb2NrZXQuY3BwCmluZGV4IDc4MTgzZjFmYmQ0OWZiMmEyYjk2YzNiYTQ3M2JiNTg5
Y2I3ODU5MjkuLjNmMzgzZTdkNjVkNTUyYmY2NGZlNjQ4MTk4YWU4ZDdkYmM3ZGMwN2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCkBAIC0x
NDcsNiArMTQ3LDExIEBAIGJvb2wgV2ViU29ja2V0Ojppc0F2YWlsYWJsZSgpCiAgICAgcmV0dXJu
IHdlYlNvY2tldHNBdmFpbGFibGU7CiB9CiAKK2NvbnN0IGNoYXIqIFdlYlNvY2tldDo6c3ViUHJv
dG9jb2xTZXBlcmF0b3IoKQoreworICAgIHJldHVybiAiLCAiOworfQorCiBXZWJTb2NrZXQ6Oldl
YlNvY2tldChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogICAgIDogQWN0aXZlRE9N
T2JqZWN0KGNvbnRleHQsIHRoaXMpCiAgICAgLCBtX3N0YXRlKENPTk5FQ1RJTkcpCkBAIC0yNjcs
NyArMjcyLDcgQEAgdm9pZCBXZWJTb2NrZXQ6OmNvbm5lY3QoY29uc3QgU3RyaW5nJiB1cmwsIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBwcm90b2NvbHMsIEV4Y2UKICAgICAgICAgfQogCiAgICAgICAg
IGlmICghcHJvdG9jb2xzLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHByb3RvY29sU3RyaW5nID0g
am9pblN0cmluZ3MocHJvdG9jb2xzLCAiLCAiKTsKKyAgICAgICAgICAgIHByb3RvY29sU3RyaW5n
ID0gam9pblN0cmluZ3MocHJvdG9jb2xzLCBzdWJQcm90b2NvbFNlcGVyYXRvcigpKTsKICAgICB9
CiAKICAgICBtX2NoYW5uZWwtPmNvbm5lY3QobV91cmwsIHByb3RvY29sU3RyaW5nKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuaAppbmRleCAxZTQ0MjQ1
ZThhMWM5ZmFhYjc5ODFhZWZlNTcwZDVmNTE2NmU1MzU1Li5mMjVjNTVjMzg2NTcwODRlYTU3OTA5
MDIwM2RlYmFkMzg0ODJhNWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YnNvY2tldHMvV2ViU29ja2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2Nr
ZXRzL1dlYlNvY2tldC5oCkBAIC01Myw2ICs1Myw3IEBAIGNsYXNzIFdlYlNvY2tldCA6IHB1Ymxp
YyBSZWZDb3VudGVkPFdlYlNvY2tldD4sIHB1YmxpYyBFdmVudFRhcmdldCwgcHVibGljIEFjdGl2
CiBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgc2V0SXNBdmFpbGFibGUoYm9vbCk7CiAgICAgc3Rh
dGljIGJvb2wgaXNBdmFpbGFibGUoKTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciogc3ViUHJvdG9j
b2xTZXBlcmF0b3IoKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJTb2NrZXQ+IGNyZWF0ZShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CiAgICAgdmlydHVhbCB+V2ViU29ja2V0KCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5k
c2hha2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEhh
bmRzaGFrZS5jcHAKaW5kZXggZTIyMWE5ZGM4MjFlNDY4MDQ3M2Q4ZWY3YTllYzI3ODAxNTZiYjA2
ZS4uYjNiYmFkNGQ2YzBjNWJlNGM3MDFlNzQ4ZmM4OGMzOTU4N2VjNmQ5ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFr
ZS5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCiAKICNpbmNs
dWRlICJXZWJTb2NrZXRIYW5kc2hha2UuaCIKKyNpbmNsdWRlICJXZWJTb2NrZXQuaCIKIAogI2lu
Y2x1ZGUgIkJhc2U2NC5oIgogI2luY2x1ZGUgIkNvb2tpZS5oIgpAQCAtNzE5LDYgKzcyMCwxOCBA
QCBib29sIFdlYlNvY2tldEhhbmRzaGFrZTo6Y2hlY2tSZXNwb25zZUhlYWRlcnMoKQogICAgICAg
ICAgICAgbV9mYWlsdXJlUmVhc29uID0gIkVycm9yIGR1cmluZyBXZWJTb2NrZXQgaGFuZHNoYWtl
OiBTZWMtV2ViU29ja2V0LUFjY2VwdCBtaXNtYXRjaCI7CiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgICAgIH0KKyAgICAgICAgaWYgKCFzZXJ2ZXJXZWJTb2NrZXRQcm90b2NvbC5pc051
bGwoKSkgeworICAgICAgICAgICAgaWYgKG1fY2xpZW50UHJvdG9jb2wuaXNFbXB0eSgpKSB7Cisg
ICAgICAgICAgICAgICAgbV9mYWlsdXJlUmVhc29uID0gIkVycm9yIGR1cmluZyBXZWJTb2NrZXQg
aGFuZHNoYWtlOiBTZWMtV2ViU29ja2V0LVByb3RvY29sIG1pc21hdGNoIjsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBWZWN0b3I8U3Ry
aW5nPiByZXN1bHQ7CisgICAgICAgICAgICBtX2NsaWVudFByb3RvY29sLnNwbGl0KFN0cmluZyhX
ZWJTb2NrZXQ6OnN1YlByb3RvY29sU2VwZXJhdG9yKCkpLCByZXN1bHQpOworICAgICAgICAgICAg
aWYgKCFyZXN1bHQuY29udGFpbnMoc2VydmVyV2ViU29ja2V0UHJvdG9jb2wpKSB7CisgICAgICAg
ICAgICAgICAgbV9mYWlsdXJlUmVhc29uID0gIkVycm9yIGR1cmluZyBXZWJTb2NrZXQgaGFuZHNo
YWtlOiBTZWMtV2ViU29ja2V0LVByb3RvY29sIG1pc21hdGNoIjsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJu
IHRydWU7CiB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKaW5kZXggNjk0YjJlYzQ5OTUyNmZiNjM4YTczNWZlZDU1OWIxMjQ5ZjQxZDZk
NC4uMWYzMzAzODM4OGUwMGU1Nzg3ODUxNGE4NjA2NTZkMjhkZTRlZDU4MiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDIzIEBACisyMDEyLTAzLTI4ICBMaSBZaW4gIDxsaS55aW5AaW50ZWwuY29tPgorCisgICAg
ICAgIFtXZWJTb2NrZXRdQnJvd3NlciBtdXN0IGZhaWwgY29ubmVjdGlvbiBpZiBTZWMtV2ViU29j
a2V0LVByb3RvY29sIG1pc21hdGNoZWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD04MjMwNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEZyb20gUkZDNjQ1NTogaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwv
cmZjNjQ1NSNzZWN0aW9uLTQuMQorICAgICAgICBJZiB0aGUgcmVzcG9uc2UgaW5jbHVkZXMgYSB8
U2VjLVdlYlNvY2tldC1Qcm90b2NvbHwgaGVhZGVyIGZpZWxkCisgICAgICAgIGFuZCB0aGlzIGhl
YWRlciBmaWVsZCBpbmRpY2F0ZXMgdGhlIHVzZSBvZiBhIHN1YnByb3RvY29sIHRoYXQgd2FzCisg
ICAgICAgIG5vdCBwcmVzZW50IGluIHRoZSBjbGllbnQncyBoYW5kc2hha2UgKHRoZSBzZXJ2ZXIg
aGFzIGluZGljYXRlZCBhCisgICAgICAgIHN1YnByb3RvY29sIG5vdCByZXF1ZXN0ZWQgYnkgdGhl
IGNsaWVudCksIHRoZSBjbGllbnQgTVVTVCBfRmFpbAorICAgICAgICB0aGUgV2ViU29ja2V0IENv
bm5lY3Rpb25fLgorCisgICAgICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9o
YW5kc2hha2UtZmFpbC1ieS1taXNtYXRjaC1wcm90b2NvbC1oZWFkZXItZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2hhbmRzaGFr
ZS1mYWlsLWJ5LW1pc21hdGNoLXByb3RvY29sLWhlYWRlci5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2hhbmRzaGFrZS1mYWlsLWJ5LW1pc21h
dGNoLXByb3RvY29sLWhlYWRlcl93c2gucHk6IEFkZGVkLgorICAgICAgICAod2ViX3NvY2tldF9k
b19leHRyYV9oYW5kc2hha2UpOgorICAgICAgICAod2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhKToK
KwogMjAxMi0wMy0yNSAgUmFwaGFlbCBLdWJvIGRhIENvc3RhICA8cmFrdWNvQEZyZWVCU0Qub3Jn
PgogCiAgICAgICAgIFtFRkxdIFVucmV2aWV3ZWQgZ2FyZGVuaW5nLiBVcGRhdGUgc29tZSB0YWJs
ZXMvbGF5ZXJpbmcvIGJhc2VsaW5lcy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvaGFuZHNoYWtlLWZhaWwtYnktbWlzbWF0Y2gtcHJvdG9j
b2wtaGVhZGVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0
L3Rlc3RzL2h5YmkvaGFuZHNoYWtlLWZhaWwtYnktbWlzbWF0Y2gtcHJvdG9jb2wtaGVhZGVyLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMzM3MTM0ZDMwM2IzM2UwMjQ2NzJmM2ViNDhlNDg4MDQw
NTc0ZWQ2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2Nr
ZXQvdGVzdHMvaHliaS9oYW5kc2hha2UtZmFpbC1ieS1taXNtYXRjaC1wcm90b2NvbC1oZWFkZXIt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK0NPTlNPTEUgTUVTU0FHRTogRXJyb3IgZHVy
aW5nIFdlYlNvY2tldCBoYW5kc2hha2U6IFNlYy1XZWJTb2NrZXQtUHJvdG9jb2wgbWlzbWF0Y2gK
K0NPTlNPTEUgTUVTU0FHRTogRXJyb3IgZHVyaW5nIFdlYlNvY2tldCBoYW5kc2hha2U6IFNlYy1X
ZWJTb2NrZXQtUHJvdG9jb2wgbWlzbWF0Y2gKK0NPTlNPTEUgTUVTU0FHRTogRXJyb3IgZHVyaW5n
IFdlYlNvY2tldCBoYW5kc2hha2U6IFNlYy1XZWJTb2NrZXQtUHJvdG9jb2wgbWlzbWF0Y2gKK1Rl
c3Qgd2hldGhlciBXZWJTb2NrZXQgaGFuZHNoYWtlIGZhaWxzIGlmIHRoZSBzZXJ2ZXIgc2VuZHMg
bWlzbWF0Y2hlZCBTZWMtV2ViU29ja2V0LVByb3RvY29sIGhlYWRlci4KKworT24gc3VjY2Vzcywg
eW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRF
U1QgQ09NUExFVEUiLgorCitQQVNTIGNsb3NlRXZlbnQud2FzQ2xlYW4gaXMgZmFsc2UKK1BBU1Mg
Y2xvc2VFdmVudC53YXNDbGVhbiBpcyBmYWxzZQorUEFTUyBjbG9zZUV2ZW50Lndhc0NsZWFuIGlz
IGZhbHNlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHli
aS9oYW5kc2hha2UtZmFpbC1ieS1taXNtYXRjaC1wcm90b2NvbC1oZWFkZXIuaHRtbCBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvaGFuZHNoYWtlLWZhaWwtYnkt
bWlzbWF0Y2gtcHJvdG9jb2wtaGVhZGVyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDY1OTY5YThkZTcwZGY3
ZGFmNWY4NDJhNDk0MWUyZjZmZGRhZDUwMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvaGFuZHNoYWtlLWZhaWwtYnktbWlzbWF0
Y2gtcHJvdG9jb2wtaGVhZGVyLmh0bWwKQEAgLTAsMCArMSw1MSBAQAorPCFET0NUWVBFIEhUTUw+
Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzLXRlc3QtcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0i
ZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0Pgor
ZGVzY3JpcHRpb24oIlRlc3Qgd2hldGhlciBXZWJTb2NrZXQgaGFuZHNoYWtlIGZhaWxzIGlmIHRo
ZSBzZXJ2ZXIgc2VuZHMgbWlzbWF0Y2hlZCBTZWMtV2ViU29ja2V0LVByb3RvY29sIGhlYWRlci4i
KTsKKword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2Uo
IldlYktpdEhpeGllNzZXZWJTb2NrZXRQcm90b2NvbEVuYWJsZWQiLCAwKTsKKwordmFyIHVybCA9
ICJ3czovL2xvY2FsaG9zdDo4ODgwL3dlYnNvY2tldC90ZXN0cy9oeWJpL2hhbmRzaGFrZS1mYWls
LWJ5LW1pc21hdGNoLXByb3RvY29sLWhlYWRlciI7Cit2YXIgY2xvc2VFdmVudDsKK3ZhciB3czsK
K3ZhciBwcm90b2NvbENhc2UgPSBbIiIsICJNYXRjaFByb3RvY29sIiwgWyJNYXRjaFByb3RvY29s
MSIsICJNYXRjaFByb3RvY29sMiJdXTsKKworZnVuY3Rpb24gZG9UZXN0KGluZGV4KQoreworICAg
IGlmIChwcm90b2NvbENhc2VbaW5kZXhdID09PSAiIikKKyAgICAgICAgd3MgPSBuZXcgV2ViU29j
a2V0KHVybCk7CisgICAgZWxzZQorICAgICAgICB3cyA9IG5ldyBXZWJTb2NrZXQodXJsLCBwcm90
b2NvbENhc2VbaW5kZXhdKTsKKworICAgIHdzLm9ub3BlbiA9IGZ1bmN0aW9uKCkKKyAgICB7Cisg
ICAgICAgIHRlc3RGYWlsZWQoIkNvbm5lY3Rpb24gZXN0YWJsaXNoZWQuIik7CisgICAgICAgIHdz
LmNsb3NlKCk7CisgICAgfTsKKworICAgIHdzLm9uY2xvc2UgPSBmdW5jdGlvbihldmVudCkKKyAg
ICB7CisgICAgICAgIGNsb3NlRXZlbnQgPSBldmVudDsKKyAgICAgICAgc2hvdWxkQmVGYWxzZSgi
Y2xvc2VFdmVudC53YXNDbGVhbiIpOworICAgICAgICBpZiAoaW5kZXggPT09IHByb3RvY29sQ2Fz
ZS5sZW5ndGggLSAxKSB7CisgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBkb1Rlc3QoaW5kZXggKyAxKTsgICAgICAgIAor
ICAgIH07Cit9CisKK2RvVGVzdCgwKTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vLi4vanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0
L3Rlc3RzL2h5YmkvaGFuZHNoYWtlLWZhaWwtYnktbWlzbWF0Y2gtcHJvdG9jb2wtaGVhZGVyX3dz
aC5weSBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvaGFuZHNo
YWtlLWZhaWwtYnktbWlzbWF0Y2gtcHJvdG9jb2wtaGVhZGVyX3dzaC5weQpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5k
MzVjNTdiYmNhMDY0N2MyMThkZGI1NWZhYmM2ODg0MjRiYTcyZTcxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9oYW5kc2hha2Ut
ZmFpbC1ieS1taXNtYXRjaC1wcm90b2NvbC1oZWFkZXJfd3NoLnB5CkBAIC0wLDAgKzEsMTcgQEAK
K2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBoYW5kc2hha2UKK2Zyb20gbW9kX3B5d2Vic29j
a2V0LmhhbmRzaGFrZS5oeWJpIGltcG9ydCBjb21wdXRlX2FjY2VwdAorCisKK2RlZiB3ZWJfc29j
a2V0X2RvX2V4dHJhX2hhbmRzaGFrZShyZXF1ZXN0KToKKyAgICBtc2cgPSAnSFRUUC8xLjEgMTAx
IFN3aXRjaGluZyBQcm90b2NvbHNcclxuJworICAgIG1zZyArPSAnVXBncmFkZTogd2Vic29ja2V0
XHJcbicKKyAgICBtc2cgKz0gJ0Nvbm5lY3Rpb246IFVwZ3JhZGVcclxuJworICAgIG1zZyArPSAn
U2VjLVdlYlNvY2tldC1BY2NlcHQ6ICVzXHJcbicgJSBjb21wdXRlX2FjY2VwdChyZXF1ZXN0Lmhl
YWRlcnNfaW5bJ1NlYy1XZWJTb2NrZXQtS2V5J10pWzBdCisgICAgbXNnICs9ICdTZWMtV2ViU29j
a2V0LVByb3RvY29sOiBNaXNtYXRjaFByb3RvY29sXHJcbicgCisgICAgbXNnICs9ICdcclxuJwor
ICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0ZShtc2cpCisgICAgcmFpc2UgaGFuZHNoYWtlLkFi
b3J0ZWRCeVVzZXJFeGNlcHRpb24oJ0Fib3J0IHRoZSBjb25uZWN0aW9uJykgIyBQcmV2ZW50cyBw
eXdlYnNvY2tldCBmcm9tIHNlbmRpbmcgaXRzIG93biBoYW5kc2hha2UgbWVzc2FnZS4KKworCitk
ZWYgd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhKHJlcXVlc3QpOgorICAgIHBhc3MK
</data>

          </attachment>
      

    </bug>

</bugzilla>