<?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>73404</bug_id>
          
          <creation_ts>2011-11-29 23:36:41 -0800</creation_ts>
          <short_desc>[WebSocket] bufferedAmount calculation is wrong in CLOSING and CLOSED state</short_desc>
          <delta_ts>2011-12-01 17:59:18 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>
          <dependson>73290</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Takashi Toyoshima">toyoshim</reporter>
          <assigned_to name="Takashi Toyoshima">toyoshim</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</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>511428</commentid>
    <comment_count>0</comment_count>
    <who name="Takashi Toyoshima">toyoshim</who>
    <bug_when>2011-11-29 23:36:41 -0800</bug_when>
    <thetext>In WebSocket::close(), m_bufferedAmountAfterClose is set to m_channel-&gt;bufferedAmount() and state is changed to CLOSING.
On the other hand, WebSocket:bufferedAmount() returns m_channel-&gt;bufferedAmount() + m_bufferedAmountAfterClose in CLOSING state.
That means bufferedAmount is double counted in CLOSING state.
Also, in didClose(), we just added unhandledBufferedAmount to m_bufferedAmountAfterClose.
In CLOSE state, WebSocket::bufferedAmount() just returns m_bufferedAmountAfterClose. But still it contains previously added bufferedAmount() in addition to unhandledBufferedAmount.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>511471</commentid>
    <comment_count>1</comment_count>
      <attachid>117138</attachid>
    <who name="Takashi Toyoshima">toyoshim</who>
    <bug_when>2011-11-30 00:43:20 -0800</bug_when>
    <thetext>Created attachment 117138
Patch

Has dependency on https://bugs.webkit.org/show_bug.cgi?id=73290
So not ready for review yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>511475</commentid>
    <comment_count>2</comment_count>
    <who name="Takashi Toyoshima">toyoshim</who>
    <bug_when>2011-11-30 00:45:34 -0800</bug_when>
    <thetext>FYI, on going chromium side&apos;s bufferedAmount implementation for Pepper API.
http://codereview.chromium.org/8748002/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>511524</commentid>
    <comment_count>3</comment_count>
      <attachid>117138</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-11-30 01:47:50 -0800</bug_when>
    <thetext>Comment on attachment 117138
Patch

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

&gt; Source/WebCore/websockets/WebSocket.cpp:571
&gt; +    unsigned long c = a + b;
&gt; +    if (c &lt; a || c &lt; b)
&gt; +        return std::numeric_limits&lt;unsigned long&gt;::max();

I think this code is correct according to the C99 standard, but I guess some people might be afraid that this code is not correct on some platforms.
I recommend changing this to
  if (numeric_limits&lt;unsigned long&gt;::max() - a &lt; b) ...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>512444</commentid>
    <comment_count>4</comment_count>
      <attachid>117331</attachid>
    <who name="Takashi Toyoshima">toyoshim</who>
    <bug_when>2011-11-30 21:41:31 -0800</bug_when>
    <thetext>Created attachment 117331
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>512448</commentid>
    <comment_count>5</comment_count>
      <attachid>117138</attachid>
    <who name="Takashi Toyoshima">toyoshim</who>
    <bug_when>2011-11-30 21:43:35 -0800</bug_when>
    <thetext>Comment on attachment 117138
Patch

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

&gt;&gt; Source/WebCore/websockets/WebSocket.cpp:571
&gt;&gt; +        return std::numeric_limits&lt;unsigned long&gt;::max();
&gt; 
&gt; I think this code is correct according to the C99 standard, but I guess some people might be afraid that this code is not correct on some platforms.
&gt; I recommend changing this to
&gt;   if (numeric_limits&lt;unsigned long&gt;::max() - a &lt; b) ...

Thank you.
I fix this code and Chromium side code, too.

Then, I change this method as a static function out of class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>512564</commentid>
    <comment_count>6</comment_count>
      <attachid>117331</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-12-01 00:19:50 -0800</bug_when>
    <thetext>Comment on attachment 117331
Patch

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

&gt; Source/WebCore/ChangeLog:8
&gt; +        No new tests because this change contains no functional update.

Correcting bufferedAmount calculation must be a functional change.

&gt; Source/WebCore/ChangeLog:10
&gt; +        * websockets/WebSocket.cpp: Change bufferedAmount calculation logic.

Please explain what is changed concretely.

&gt; Source/WebCore/websockets/WebSocket.cpp:132
&gt; +    if (std::numeric_limits&lt;unsigned long&gt;::max() - a &lt; b)
&gt; +        return std::numeric_limits&lt;unsigned long&gt;::max();

We usually declare &quot;using namespace std;&quot; and don&apos;t prepend &quot;std::&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>512602</commentid>
    <comment_count>7</comment_count>
      <attachid>117331</attachid>
    <who name="Takashi Toyoshima">toyoshim</who>
    <bug_when>2011-12-01 01:03:45 -0800</bug_when>
    <thetext>Comment on attachment 117331
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:8
&gt;&gt; +        No new tests because this change contains no functional update.
&gt; 
&gt; Correcting bufferedAmount calculation must be a functional change.

I see.
Actually, layout tests cover failure situation, but seems not to catch any errors until now.
http://test-results.appspot.com/dashboards/flakiness_dashboard.html#tests=http%2Ftests%2Fwebsocket%2Ftests%2Fhybi%2FbufferedAmount-after-close.html

So I&apos;ll try to add new test which will reproduce the error cases.
The test must close Websocket with over 32K buffered data, then query the bufferedAmount value as soon as possible.

Thank you.

&gt;&gt; Source/WebCore/ChangeLog:10
&gt;&gt; +        * websockets/WebSocket.cpp: Change bufferedAmount calculation logic.
&gt; 
&gt; Please explain what is changed concretely.

OK. I&apos;ll do in the next patch.

&gt;&gt; Source/WebCore/websockets/WebSocket.cpp:132
&gt;&gt; +        return std::numeric_limits&lt;unsigned long&gt;::max();
&gt; 
&gt; We usually declare &quot;using namespace std;&quot; and don&apos;t prepend &quot;std::&quot;.

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>512683</commentid>
    <comment_count>8</comment_count>
      <attachid>117396</attachid>
    <who name="Takashi Toyoshima">toyoshim</who>
    <bug_when>2011-12-01 04:23:53 -0800</bug_when>
    <thetext>Created attachment 117396
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>513318</commentid>
    <comment_count>9</comment_count>
      <attachid>117396</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-12-01 17:23:51 -0800</bug_when>
    <thetext>Comment on attachment 117396
Patch

Looks ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>513356</commentid>
    <comment_count>10</comment_count>
      <attachid>117396</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-01 17:59:08 -0800</bug_when>
    <thetext>Comment on attachment 117396
Patch

Clearing flags on attachment: 117396

Committed r101730: &lt;http://trac.webkit.org/changeset/101730&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>513357</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-01 17:59:18 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>117138</attachid>
            <date>2011-11-30 00:43:20 -0800</date>
            <delta_ts>2011-11-30 21:43:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>Patch</filename>
            <type>text/plain</type>
            <size>6301</size>
            <attacher name="Takashi Toyoshima">toyoshim</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBlOTQ5NjRkLi4yZDFmODA5IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIg
QEAKKzIwMTEtMTEtMzAgIFRha2FzaGkgVG95b3NoaW1hICA8dG95b3NoaW1AY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIGJ1ZmZlcmVkQW1vdW50IGNhbGN1bGF0aW9uIGlzIHdyb25nIGluIENMT1NJ
TkcgYW5kIENMT1NFRCBzdGF0ZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTczNDA0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgTm8gbmV3IHRlc3RzIGJlY2F1c2UgdGhpcyBjaGFuZ2UgY29udGFpbnMgbm8g
ZnVuY3Rpb25hbCB1cGRhdGUuCisKKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHA6
IENoYW5nZSBidWZmZXJlZEFtb3VudCBjYWxjdWxhdGlvbiBsb2dpYy4KKyAgICAgICAgKFdlYkNv
cmU6OldlYlNvY2tldDo6V2ViU29ja2V0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6
c2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OmNsb3NlKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYlNvY2tldDo6YnVmZmVyZWRBbW91bnQpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
U29ja2V0OjpkaWRVcGRhdGVCdWZmZXJlZEFtb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJT
b2NrZXQ6OmRpZENsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6c2F0dXJhdGVB
ZGQpOgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0Lmg6CisKIDIwMTEtMTEtMjkgIFRh
a2FzaGkgVG95b3NoaW1hICA8dG95b3NoaW1AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEFkZCBk
aWRVcGRhdGVCdWZmZXJlZEFtb3VudCgpIGNhbGxiYWNrIHRvIFNvY2tldFN0cmVhbUhhbmRsZUNs
aWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCmluZGV4IGIwNDQ4M2Qu
LjNkNTUxZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKQEAgLTE0
MSw2ICsxNDEsNyBAQCBib29sIFdlYlNvY2tldDo6aXNBdmFpbGFibGUoKQogV2ViU29ja2V0OjpX
ZWJTb2NrZXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKICAgICA6IEFjdGl2ZURP
TU9iamVjdChjb250ZXh0LCB0aGlzKQogICAgICwgbV9zdGF0ZShDT05ORUNUSU5HKQorICAgICwg
bV9idWZmZXJlZEFtb3VudCgwKQogICAgICwgbV9idWZmZXJlZEFtb3VudEFmdGVyQ2xvc2UoMCkK
ICAgICAsIG1fYmluYXJ5VHlwZShCaW5hcnlUeXBlQmxvYikKICAgICAsIG1fdXNlSGl4aWU3NlBy
b3RvY29sKHRydWUpCkBAIC0yNjYsNyArMjY3LDggQEAgYm9vbCBXZWJTb2NrZXQ6OnNlbmQoY29u
c3QgU3RyaW5nJiBtZXNzYWdlLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICAvLyBObyBleGNlcHRp
b24gaXMgcmFpc2VkIGlmIHRoZSBjb25uZWN0aW9uIHdhcyBvbmNlIGVzdGFibGlzaGVkIGJ1dCBo
YXMgc3Vic2VxdWVudGx5IGJlZW4gY2xvc2VkLgogICAgIGlmIChtX3N0YXRlID09IENMT1NJTkcg
fHwgbV9zdGF0ZSA9PSBDTE9TRUQpIHsKICAgICAgICAgc2l6ZV90IHBheWxvYWRTaXplID0gbWVz
c2FnZS51dGY4KCkubGVuZ3RoKCk7Ci0gICAgICAgIG1fYnVmZmVyZWRBbW91bnRBZnRlckNsb3Nl
ICs9IHBheWxvYWRTaXplICsgZ2V0RnJhbWluZ092ZXJoZWFkKHBheWxvYWRTaXplKTsKKyAgICAg
ICAgbV9idWZmZXJlZEFtb3VudEFmdGVyQ2xvc2UgPSBzYXR1cmF0ZUFkZChtX2J1ZmZlcmVkQW1v
dW50QWZ0ZXJDbG9zZSwgcGF5bG9hZFNpemUpOworICAgICAgICBtX2J1ZmZlcmVkQW1vdW50QWZ0
ZXJDbG9zZSA9IHNhdHVyYXRlQWRkKG1fYnVmZmVyZWRBbW91bnRBZnRlckNsb3NlLCBnZXRGcmFt
aW5nT3ZlcmhlYWQocGF5bG9hZFNpemUpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
ICAgICAvLyBGSVhNRTogY2hlY2sgbWVzc2FnZSBpcyB2YWxpZCB1dGY4LgpAQCAtMjg1LDcgKzI4
Nyw5IEBAIGJvb2wgV2ViU29ja2V0OjpzZW5kKEFycmF5QnVmZmVyKiBiaW5hcnlEYXRhLCBFeGNl
cHRpb25Db2RlJiBlYykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICBpZiAobV9z
dGF0ZSA9PSBDTE9TSU5HIHx8IG1fc3RhdGUgPT0gQ0xPU0VEKSB7Ci0gICAgICAgIG1fYnVmZmVy
ZWRBbW91bnRBZnRlckNsb3NlICs9IGJpbmFyeURhdGEtPmJ5dGVMZW5ndGgoKSArIGdldEZyYW1p
bmdPdmVyaGVhZChiaW5hcnlEYXRhLT5ieXRlTGVuZ3RoKCkpOworICAgICAgICB1bnNpZ25lZCBw
YXlsb2FkU2l6ZSA9IGJpbmFyeURhdGEtPmJ5dGVMZW5ndGgoKTsKKyAgICAgICAgbV9idWZmZXJl
ZEFtb3VudEFmdGVyQ2xvc2UgPSBzYXR1cmF0ZUFkZChtX2J1ZmZlcmVkQW1vdW50QWZ0ZXJDbG9z
ZSwgcGF5bG9hZFNpemUpOworICAgICAgICBtX2J1ZmZlcmVkQW1vdW50QWZ0ZXJDbG9zZSA9IHNh
dHVyYXRlQWRkKG1fYnVmZmVyZWRBbW91bnRBZnRlckNsb3NlLCBnZXRGcmFtaW5nT3ZlcmhlYWQo
cGF5bG9hZFNpemUpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICBBU1NFUlQo
bV9jaGFubmVsKTsKQEAgLTMwNCw3ICszMDgsOCBAQCBib29sIFdlYlNvY2tldDo6c2VuZChCbG9i
KiBiaW5hcnlEYXRhLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICB9CiAgICAgaWYgKG1fc3RhdGUg
PT0gQ0xPU0lORyB8fCBtX3N0YXRlID09IENMT1NFRCkgewogICAgICAgICB1bnNpZ25lZCBsb25n
IHBheWxvYWRTaXplID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4oYmluYXJ5RGF0YS0+c2l6
ZSgpKTsKLSAgICAgICAgbV9idWZmZXJlZEFtb3VudEFmdGVyQ2xvc2UgKz0gcGF5bG9hZFNpemUg
KyBnZXRGcmFtaW5nT3ZlcmhlYWQocGF5bG9hZFNpemUpOworICAgICAgICBtX2J1ZmZlcmVkQW1v
dW50QWZ0ZXJDbG9zZSA9IHNhdHVyYXRlQWRkKG1fYnVmZmVyZWRBbW91bnRBZnRlckNsb3NlLCBw
YXlsb2FkU2l6ZSk7CisgICAgICAgIG1fYnVmZmVyZWRBbW91bnRBZnRlckNsb3NlID0gc2F0dXJh
dGVBZGQobV9idWZmZXJlZEFtb3VudEFmdGVyQ2xvc2UsIGdldEZyYW1pbmdPdmVyaGVhZChwYXls
b2FkU2l6ZSkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIEFTU0VSVChtX2No
YW5uZWwpOwpAQCAtMzM2LDkgKzM0MSw2IEBAIHZvaWQgV2ViU29ja2V0OjpjbG9zZShpbnQgY29k
ZSwgY29uc3QgU3RyaW5nJiByZWFzb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgICAgICByZXR1
cm47CiAgICAgfQogICAgIG1fc3RhdGUgPSBDTE9TSU5HOwotICAgIG1fYnVmZmVyZWRBbW91bnRB
ZnRlckNsb3NlID0gbV9jaGFubmVsLT5idWZmZXJlZEFtb3VudCgpOwotICAgIC8vIGRpZENsb3Nl
IG5vdGlmaWNhdGlvbiBtYXkgYmUgYWxyZWFkeSBxdWV1ZWQsIHdoaWNoIHdlIHdpbGwgaW5hZHZl
cnRlbnRseSBwcm9jZXNzIHdoaWxlIHdhaXRpbmcgZm9yIGJ1ZmZlcmVkQW1vdW50KCkgdG8gcmV0
dXJuLgotICAgIC8vIEluIHRoaXMgY2FzZSBtX2NoYW5uZWwgd2lsbCBiZSBzZXQgdG8gbnVsbCBk
dXJpbmcgZGlkQ2xvc2UoKSBjYWxsLCB0aHVzIHdlIG5lZWQgdG8gdGVzdCB2YWxpZG5lc3Mgb2Yg
bV9jaGFubmVsIGhlcmUuCiAgICAgaWYgKG1fY2hhbm5lbCkKICAgICAgICAgbV9jaGFubmVsLT5j
bG9zZShjb2RlLCByZWFzb24pOwogfQpAQCAtMzU1LDExICszNTcsNyBAQCBXZWJTb2NrZXQ6OlN0
YXRlIFdlYlNvY2tldDo6cmVhZHlTdGF0ZSgpIGNvbnN0CiAKIHVuc2lnbmVkIGxvbmcgV2ViU29j
a2V0OjpidWZmZXJlZEFtb3VudCgpIGNvbnN0CiB7Ci0gICAgaWYgKG1fc3RhdGUgPT0gT1BFTikK
LSAgICAgICAgcmV0dXJuIG1fY2hhbm5lbC0+YnVmZmVyZWRBbW91bnQoKTsKLSAgICBlbHNlIGlm
IChtX3N0YXRlID09IENMT1NJTkcpCi0gICAgICAgIHJldHVybiBtX2NoYW5uZWwtPmJ1ZmZlcmVk
QW1vdW50KCkgKyBtX2J1ZmZlcmVkQW1vdW50QWZ0ZXJDbG9zZTsKLSAgICByZXR1cm4gbV9idWZm
ZXJlZEFtb3VudEFmdGVyQ2xvc2U7CisgICAgcmV0dXJuIHNhdHVyYXRlQWRkKG1fYnVmZmVyZWRB
bW91bnQsIG1fYnVmZmVyZWRBbW91bnRBZnRlckNsb3NlKTsKIH0KIAogU3RyaW5nIFdlYlNvY2tl
dDo6cHJvdG9jb2woKSBjb25zdApAQCAtNTA4LDYgKzUwNiw5IEBAIHZvaWQgV2ViU29ja2V0Ojpk
aWRSZWNlaXZlTWVzc2FnZUVycm9yKCkKIHZvaWQgV2ViU29ja2V0OjpkaWRVcGRhdGVCdWZmZXJl
ZEFtb3VudCh1bnNpZ25lZCBsb25nIGJ1ZmZlcmVkQW1vdW50KQogewogICAgIExPRyhOZXR3b3Jr
LCAiV2ViU29ja2V0ICVwIGRpZFVwZGF0ZUJ1ZmZlcmVkQW1vdW50ICVsdSIsIHRoaXMsIGJ1ZmZl
cmVkQW1vdW50KTsKKyAgICBpZiAobV9zdGF0ZSA9PSBDTE9TRUQpCisgICAgICAgIHJldHVybjsK
KyAgICBtX2J1ZmZlcmVkQW1vdW50ID0gYnVmZmVyZWRBbW91bnQ7CiB9CiAKIHZvaWQgV2ViU29j
a2V0OjpkaWRTdGFydENsb3NpbmdIYW5kc2hha2UoKQpAQCAtNTIzLDcgKzUyNCw3IEBAIHZvaWQg
V2ViU29ja2V0OjpkaWRDbG9zZSh1bnNpZ25lZCBsb25nIHVuaGFuZGxlZEJ1ZmZlcmVkQW1vdW50
LCBDbG9zaW5nSGFuZHNoYWtlCiAgICAgICAgIHJldHVybjsKICAgICBib29sIHdhc0NsZWFuID0g
bV9zdGF0ZSA9PSBDTE9TSU5HICYmICF1bmhhbmRsZWRCdWZmZXJlZEFtb3VudCAmJiBjbG9zaW5n
SGFuZHNoYWtlQ29tcGxldGlvbiA9PSBDbG9zaW5nSGFuZHNoYWtlQ29tcGxldGU7CiAgICAgbV9z
dGF0ZSA9IENMT1NFRDsKLSAgICBtX2J1ZmZlcmVkQW1vdW50QWZ0ZXJDbG9zZSArPSB1bmhhbmRs
ZWRCdWZmZXJlZEFtb3VudDsKKyAgICBtX2J1ZmZlcmVkQW1vdW50ID0gdW5oYW5kbGVkQnVmZmVy
ZWRBbW91bnQ7CiAgICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgUmVm
UHRyPENsb3NlRXZlbnQ+IGV2ZW50ID0gQ2xvc2VFdmVudDo6Y3JlYXRlKHdhc0NsZWFuLCBjb2Rl
LCByZWFzb24pOwogICAgIGRpc3BhdGNoRXZlbnQoZXZlbnQpOwpAQCAtNTYzLDYgKzU2NCwxNCBA
QCBzaXplX3QgV2ViU29ja2V0OjpnZXRGcmFtaW5nT3ZlcmhlYWQoc2l6ZV90IHBheWxvYWRTaXpl
KQogICAgIHJldHVybiBvdmVyaGVhZDsKIH0KIAordW5zaWduZWQgbG9uZyBXZWJTb2NrZXQ6OnNh
dHVyYXRlQWRkKHVuc2lnbmVkIGxvbmcgYSwgdW5zaWduZWQgbG9uZyBiKSBjb25zdAoreworICAg
IHVuc2lnbmVkIGxvbmcgYyA9IGEgKyBiOworICAgIGlmIChjIDwgYSB8fCBjIDwgYikKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQgbG9uZz46Om1heCgpOworICAg
IHJldHVybiBjOworfQorCiB9ICAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmggYi9Tb3VyY2UvV2Vi
Q29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5oCmluZGV4IDcwYzM2NTMuLmFlZjJkNDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuaApAQCAtMTE5LDYgKzExOSw3IEBAIHByaXZh
dGU6CiAgICAgdmlydHVhbCBFdmVudFRhcmdldERhdGEqIGVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgp
OwogCiAgICAgc2l6ZV90IGdldEZyYW1pbmdPdmVyaGVhZChzaXplX3QgcGF5bG9hZFNpemUpOwor
ICAgIHVuc2lnbmVkIGxvbmcgc2F0dXJhdGVBZGQodW5zaWduZWQgbG9uZyBhLCB1bnNpZ25lZCBs
b25nIGIpIGNvbnN0OwogCiAgICAgZW51bSBCaW5hcnlUeXBlIHsKICAgICAgICAgQmluYXJ5VHlw
ZUJsb2IsCkBAIC0xMzAsNiArMTMxLDcgQEAgcHJpdmF0ZToKICAgICBTdGF0ZSBtX3N0YXRlOwog
ICAgIEtVUkwgbV91cmw7CiAgICAgRXZlbnRUYXJnZXREYXRhIG1fZXZlbnRUYXJnZXREYXRhOwor
ICAgIHVuc2lnbmVkIGxvbmcgbV9idWZmZXJlZEFtb3VudDsKICAgICB1bnNpZ25lZCBsb25nIG1f
YnVmZmVyZWRBbW91bnRBZnRlckNsb3NlOwogICAgIEJpbmFyeVR5cGUgbV9iaW5hcnlUeXBlOwog
ICAgIGJvb2wgbV91c2VIaXhpZTc2UHJvdG9jb2w7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>117331</attachid>
            <date>2011-11-30 21:41:31 -0800</date>
            <delta_ts>2011-12-01 04:23:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73404-20111201144129.patch</filename>
            <type>text/plain</type>
            <size>6449</size>
            <attacher name="Takashi Toyoshima">toyoshim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxNTk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGQxNzVmNzc2Y2E3NWMx
ZTQzNzY5NTVjZDNjOGE5ZmQ4NjU2ZGU2Ny4uMTE4NjY0OWExYzFmNTVlZGNjNjkzMTk2ZjBmOTZh
ZDZhYzg3YmQxOSAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI0IEBACiAyMDExLTExLTMwICBUYWth
c2hpIFRveW9zaGltYSAgPHRveW9zaGltQGNocm9taXVtLm9yZz4KIAorICAgICAgICBidWZmZXJl
ZEFtb3VudCBjYWxjdWxhdGlvbiBpcyB3cm9uZyBpbiBDTE9TSU5HIGFuZCBDTE9TRUQgc3RhdGUu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MzQwNAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0
ZXN0cyBiZWNhdXNlIHRoaXMgY2hhbmdlIGNvbnRhaW5zIG5vIGZ1bmN0aW9uYWwgdXBkYXRlLgor
CisgICAgICAgICogd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwOiBDaGFuZ2UgYnVmZmVyZWRBbW91
bnQgY2FsY3VsYXRpb24gbG9naWMuCisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OldlYlNv
Y2tldCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OnNlbmQpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViU29ja2V0OjpjbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OmJ1
ZmZlcmVkQW1vdW50KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6ZGlkVXBkYXRlQnVm
ZmVyZWRBbW91bnQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0OjpkaWRDbG9zZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OnNhdHVyYXRlQWRkKToKKyAgICAgICAgKiB3ZWJz
b2NrZXRzL1dlYlNvY2tldC5oOgorCisyMDExLTExLTMwICBUYWthc2hpIFRveW9zaGltYSAgPHRv
eW9zaGltQGNocm9taXVtLm9yZz4KKwogICAgICAgICBBZGQgT1ZFUlJJREUgdG8gV2ViU29ja2V0
IHJlbGF0ZWQgc291cmNlcyBmb3Igc2FmZSBpbmhlcml0YW5jZXMuCiAgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MzMwOAogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93ZWJz
b2NrZXRzL1dlYlNvY2tldC5jcHAKaW5kZXggZjlmZDJmZWNjZmRiODhkZDg4Y2MyYzJkYmNhOWUy
M2ExOTllZDI4MS4uMDc1M2IwN2U1NmYxMTUwYThjZDQ2MjAyNWJmMWQ1NWMxZmM1MGRhNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcApAQCAtMTI2LDYgKzEyNiwxMyBA
QCBzdGF0aWMgU3RyaW5nIGpvaW5TdHJpbmdzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBzdHJpbmdz
LCBjb25zdCBjaGFyKiBzZXBhcmF0b3IpCiAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsK
IH0KIAorc3RhdGljIHVuc2lnbmVkIGxvbmcgc2F0dXJhdGVBZGQodW5zaWduZWQgbG9uZyBhLCB1
bnNpZ25lZCBsb25nIGIpCit7CisgICAgaWYgKHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQg
bG9uZz46Om1heCgpIC0gYSA8IGIpCisgICAgICAgIHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRz
PHVuc2lnbmVkIGxvbmc+OjptYXgoKTsKKyAgICByZXR1cm4gYSArIGI7Cit9CisKIHN0YXRpYyBi
b29sIHdlYlNvY2tldHNBdmFpbGFibGUgPSBmYWxzZTsKIAogdm9pZCBXZWJTb2NrZXQ6OnNldElz
QXZhaWxhYmxlKGJvb2wgYXZhaWxhYmxlKQpAQCAtMTQxLDYgKzE0OCw3IEBAIGJvb2wgV2ViU29j
a2V0Ojppc0F2YWlsYWJsZSgpCiBXZWJTb2NrZXQ6OldlYlNvY2tldChTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0KQogICAgIDogQWN0aXZlRE9NT2JqZWN0KGNvbnRleHQsIHRoaXMpCiAg
ICAgLCBtX3N0YXRlKENPTk5FQ1RJTkcpCisgICAgLCBtX2J1ZmZlcmVkQW1vdW50KDApCiAgICAg
LCBtX2J1ZmZlcmVkQW1vdW50QWZ0ZXJDbG9zZSgwKQogICAgICwgbV9iaW5hcnlUeXBlKEJpbmFy
eVR5cGVCbG9iKQogICAgICwgbV91c2VIaXhpZTc2UHJvdG9jb2wodHJ1ZSkKQEAgLTI2Niw3ICsy
NzQsOCBAQCBib29sIFdlYlNvY2tldDo6c2VuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQogICAgIC8vIE5vIGV4Y2VwdGlvbiBpcyByYWlzZWQgaWYgdGhlIGNvbm5l
Y3Rpb24gd2FzIG9uY2UgZXN0YWJsaXNoZWQgYnV0IGhhcyBzdWJzZXF1ZW50bHkgYmVlbiBjbG9z
ZWQuCiAgICAgaWYgKG1fc3RhdGUgPT0gQ0xPU0lORyB8fCBtX3N0YXRlID09IENMT1NFRCkgewog
ICAgICAgICBzaXplX3QgcGF5bG9hZFNpemUgPSBtZXNzYWdlLnV0ZjgoKS5sZW5ndGgoKTsKLSAg
ICAgICAgbV9idWZmZXJlZEFtb3VudEFmdGVyQ2xvc2UgKz0gcGF5bG9hZFNpemUgKyBnZXRGcmFt
aW5nT3ZlcmhlYWQocGF5bG9hZFNpemUpOworICAgICAgICBtX2J1ZmZlcmVkQW1vdW50QWZ0ZXJD
bG9zZSA9IHNhdHVyYXRlQWRkKG1fYnVmZmVyZWRBbW91bnRBZnRlckNsb3NlLCBwYXlsb2FkU2l6
ZSk7CisgICAgICAgIG1fYnVmZmVyZWRBbW91bnRBZnRlckNsb3NlID0gc2F0dXJhdGVBZGQobV9i
dWZmZXJlZEFtb3VudEFmdGVyQ2xvc2UsIGdldEZyYW1pbmdPdmVyaGVhZChwYXlsb2FkU2l6ZSkp
OwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIC8vIEZJWE1FOiBjaGVjayBtZXNz
YWdlIGlzIHZhbGlkIHV0ZjguCkBAIC0yODUsNyArMjk0LDkgQEAgYm9vbCBXZWJTb2NrZXQ6OnNl
bmQoQXJyYXlCdWZmZXIqIGJpbmFyeURhdGEsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIGlmIChtX3N0YXRlID09IENMT1NJTkcgfHwgbV9zdGF0
ZSA9PSBDTE9TRUQpIHsKLSAgICAgICAgbV9idWZmZXJlZEFtb3VudEFmdGVyQ2xvc2UgKz0gYmlu
YXJ5RGF0YS0+Ynl0ZUxlbmd0aCgpICsgZ2V0RnJhbWluZ092ZXJoZWFkKGJpbmFyeURhdGEtPmJ5
dGVMZW5ndGgoKSk7CisgICAgICAgIHVuc2lnbmVkIHBheWxvYWRTaXplID0gYmluYXJ5RGF0YS0+
Ynl0ZUxlbmd0aCgpOworICAgICAgICBtX2J1ZmZlcmVkQW1vdW50QWZ0ZXJDbG9zZSA9IHNhdHVy
YXRlQWRkKG1fYnVmZmVyZWRBbW91bnRBZnRlckNsb3NlLCBwYXlsb2FkU2l6ZSk7CisgICAgICAg
IG1fYnVmZmVyZWRBbW91bnRBZnRlckNsb3NlID0gc2F0dXJhdGVBZGQobV9idWZmZXJlZEFtb3Vu
dEFmdGVyQ2xvc2UsIGdldEZyYW1pbmdPdmVyaGVhZChwYXlsb2FkU2l6ZSkpOwogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIEFTU0VSVChtX2NoYW5uZWwpOwpAQCAtMzA0LDcgKzMx
NSw4IEBAIGJvb2wgV2ViU29ja2V0OjpzZW5kKEJsb2IqIGJpbmFyeURhdGEsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQogICAgIH0KICAgICBpZiAobV9zdGF0ZSA9PSBDTE9TSU5HIHx8IG1fc3RhdGUgPT0g
Q0xPU0VEKSB7CiAgICAgICAgIHVuc2lnbmVkIGxvbmcgcGF5bG9hZFNpemUgPSBzdGF0aWNfY2Fz
dDx1bnNpZ25lZCBsb25nPihiaW5hcnlEYXRhLT5zaXplKCkpOwotICAgICAgICBtX2J1ZmZlcmVk
QW1vdW50QWZ0ZXJDbG9zZSArPSBwYXlsb2FkU2l6ZSArIGdldEZyYW1pbmdPdmVyaGVhZChwYXls
b2FkU2l6ZSk7CisgICAgICAgIG1fYnVmZmVyZWRBbW91bnRBZnRlckNsb3NlID0gc2F0dXJhdGVB
ZGQobV9idWZmZXJlZEFtb3VudEFmdGVyQ2xvc2UsIHBheWxvYWRTaXplKTsKKyAgICAgICAgbV9i
dWZmZXJlZEFtb3VudEFmdGVyQ2xvc2UgPSBzYXR1cmF0ZUFkZChtX2J1ZmZlcmVkQW1vdW50QWZ0
ZXJDbG9zZSwgZ2V0RnJhbWluZ092ZXJoZWFkKHBheWxvYWRTaXplKSk7CiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CiAgICAgQVNTRVJUKG1fY2hhbm5lbCk7CkBAIC0zMzYsOSArMzQ4LDYg
QEAgdm9pZCBXZWJTb2NrZXQ6OmNsb3NlKGludCBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbiwg
RXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgbV9zdGF0ZSA9
IENMT1NJTkc7Ci0gICAgbV9idWZmZXJlZEFtb3VudEFmdGVyQ2xvc2UgPSBtX2NoYW5uZWwtPmJ1
ZmZlcmVkQW1vdW50KCk7Ci0gICAgLy8gZGlkQ2xvc2Ugbm90aWZpY2F0aW9uIG1heSBiZSBhbHJl
YWR5IHF1ZXVlZCwgd2hpY2ggd2Ugd2lsbCBpbmFkdmVydGVudGx5IHByb2Nlc3Mgd2hpbGUgd2Fp
dGluZyBmb3IgYnVmZmVyZWRBbW91bnQoKSB0byByZXR1cm4uCi0gICAgLy8gSW4gdGhpcyBjYXNl
IG1fY2hhbm5lbCB3aWxsIGJlIHNldCB0byBudWxsIGR1cmluZyBkaWRDbG9zZSgpIGNhbGwsIHRo
dXMgd2UgbmVlZCB0byB0ZXN0IHZhbGlkbmVzcyBvZiBtX2NoYW5uZWwgaGVyZS4KICAgICBpZiAo
bV9jaGFubmVsKQogICAgICAgICBtX2NoYW5uZWwtPmNsb3NlKGNvZGUsIHJlYXNvbik7CiB9CkBA
IC0zNTUsMTEgKzM2NCw3IEBAIFdlYlNvY2tldDo6U3RhdGUgV2ViU29ja2V0OjpyZWFkeVN0YXRl
KCkgY29uc3QKIAogdW5zaWduZWQgbG9uZyBXZWJTb2NrZXQ6OmJ1ZmZlcmVkQW1vdW50KCkgY29u
c3QKIHsKLSAgICBpZiAobV9zdGF0ZSA9PSBPUEVOKQotICAgICAgICByZXR1cm4gbV9jaGFubmVs
LT5idWZmZXJlZEFtb3VudCgpOwotICAgIGVsc2UgaWYgKG1fc3RhdGUgPT0gQ0xPU0lORykKLSAg
ICAgICAgcmV0dXJuIG1fY2hhbm5lbC0+YnVmZmVyZWRBbW91bnQoKSArIG1fYnVmZmVyZWRBbW91
bnRBZnRlckNsb3NlOwotICAgIHJldHVybiBtX2J1ZmZlcmVkQW1vdW50QWZ0ZXJDbG9zZTsKKyAg
ICByZXR1cm4gc2F0dXJhdGVBZGQobV9idWZmZXJlZEFtb3VudCwgbV9idWZmZXJlZEFtb3VudEFm
dGVyQ2xvc2UpOwogfQogCiBTdHJpbmcgV2ViU29ja2V0Ojpwcm90b2NvbCgpIGNvbnN0CkBAIC01
MDcsOCArNTEyLDEwIEBAIHZvaWQgV2ViU29ja2V0OjpkaWRSZWNlaXZlTWVzc2FnZUVycm9yKCkK
IAogdm9pZCBXZWJTb2NrZXQ6OmRpZFVwZGF0ZUJ1ZmZlcmVkQW1vdW50KHVuc2lnbmVkIGxvbmcg
YnVmZmVyZWRBbW91bnQpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGJ1ZmZlcmVkQW1vdW50KTsKICAg
ICBMT0coTmV0d29yaywgIldlYlNvY2tldCAlcCBkaWRVcGRhdGVCdWZmZXJlZEFtb3VudCAlbHUi
LCB0aGlzLCBidWZmZXJlZEFtb3VudCk7CisgICAgaWYgKG1fc3RhdGUgPT0gQ0xPU0VEKQorICAg
ICAgICByZXR1cm47CisgICAgbV9idWZmZXJlZEFtb3VudCA9IGJ1ZmZlcmVkQW1vdW50OwogfQog
CiB2b2lkIFdlYlNvY2tldDo6ZGlkU3RhcnRDbG9zaW5nSGFuZHNoYWtlKCkKQEAgLTUyNCw3ICs1
MzEsNyBAQCB2b2lkIFdlYlNvY2tldDo6ZGlkQ2xvc2UodW5zaWduZWQgbG9uZyB1bmhhbmRsZWRC
dWZmZXJlZEFtb3VudCwgQ2xvc2luZ0hhbmRzaGFrZQogICAgICAgICByZXR1cm47CiAgICAgYm9v
bCB3YXNDbGVhbiA9IG1fc3RhdGUgPT0gQ0xPU0lORyAmJiAhdW5oYW5kbGVkQnVmZmVyZWRBbW91
bnQgJiYgY2xvc2luZ0hhbmRzaGFrZUNvbXBsZXRpb24gPT0gQ2xvc2luZ0hhbmRzaGFrZUNvbXBs
ZXRlOwogICAgIG1fc3RhdGUgPSBDTE9TRUQ7Ci0gICAgbV9idWZmZXJlZEFtb3VudEFmdGVyQ2xv
c2UgKz0gdW5oYW5kbGVkQnVmZmVyZWRBbW91bnQ7CisgICAgbV9idWZmZXJlZEFtb3VudCA9IHVu
aGFuZGxlZEJ1ZmZlcmVkQW1vdW50OwogICAgIEFTU0VSVChzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCkpOwogICAgIFJlZlB0cjxDbG9zZUV2ZW50PiBldmVudCA9IENsb3NlRXZlbnQ6OmNyZWF0ZSh3
YXNDbGVhbiwgY29kZSwgcmVhc29uKTsKICAgICBkaXNwYXRjaEV2ZW50KGV2ZW50KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmggYi9Tb3VyY2UvV2Vi
Q29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5oCmluZGV4IGMxMzYzZTlhNTg5NTY2NjhhNWMzMDk5
NTJiZDhlN2M0ODA0NTZhYjAuLmI4NjBiNzVjN2E3OWQzYjJlY2I3MzhlMjg3NWU5YzEzNWRhOWI1
MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuaApAQCAtMTMxLDYgKzEzMSw3
IEBAIHByaXZhdGU6CiAgICAgU3RhdGUgbV9zdGF0ZTsKICAgICBLVVJMIG1fdXJsOwogICAgIEV2
ZW50VGFyZ2V0RGF0YSBtX2V2ZW50VGFyZ2V0RGF0YTsKKyAgICB1bnNpZ25lZCBsb25nIG1fYnVm
ZmVyZWRBbW91bnQ7CiAgICAgdW5zaWduZWQgbG9uZyBtX2J1ZmZlcmVkQW1vdW50QWZ0ZXJDbG9z
ZTsKICAgICBCaW5hcnlUeXBlIG1fYmluYXJ5VHlwZTsKICAgICBib29sIG1fdXNlSGl4aWU3NlBy
b3RvY29sOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>117396</attachid>
            <date>2011-12-01 04:23:53 -0800</date>
            <delta_ts>2011-12-01 17:59:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73404-20111201212351.patch</filename>
            <type>text/plain</type>
            <size>15258</size>
            <attacher name="Takashi Toyoshima">toyoshim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxNTk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGQxNzVmNzc2Y2E3NWMx
ZTQzNzY5NTVjZDNjOGE5ZmQ4NjU2ZGU2Ny4uYzVhZGM4Y2RhMzFiZjkyOGM0NDFlN2E1YzM4ZGM0
YWJhYzZhMzU1OSAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDExLTEyLTAxICBUYWth
c2hpIFRveW9zaGltYSAgPHRveW9zaGltQGNocm9taXVtLm9yZz4KKworICAgICAgICBidWZmZXJl
ZEFtb3VudCBjYWxjdWxhdGlvbiBpcyB3cm9uZyBpbiBDTE9TSU5HIGFuZCBDTE9TRUQgc3RhdGUu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MzQwNAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYlNvY2tl
dDo6YnVmZmVyZWRBbW91bnQoKSBtdXN0IHJldHVybiBidWZmZXJlZCBmcmFtZSBzaXplIGluY2x1
ZGluZworICAgICAgICBkaXNwb3NlZCBmcmFtZXMgd2hpY2ggYXJlIHBhc3NlZCB2aWEgc2VuZCgp
IGNhbGxzIGFmdGVyIGNsb3NlKCkuCisKKyAgICAgICAgT2xkIGltcGxlbWVudGF0aW9uIGhhZCBh
IHByb2JsZW0gYXQgQ0xPU0lORyBzdGF0ZS4gQnVmZmVyZWQgZnJhbWUgc2l6ZQorICAgICAgICB3
YXMgYWRkZWQgdG8gbV9idWZmZXJlZEFtb3VudEFmdGVyQ2xvc2UgYXQgY2xvc2UoKS4gQnV0IHRo
ZSBmdW5jdGlvbgorICAgICAgICByZXR1cm5zIHRoZSBzdW0gb2YgbV9idWZmZXJlZEFtb3VudEFm
dGVyQ2xvc2UgYW5kIGludGVybmFsbHkgYnVmZmVyZWQKKyAgICAgICAgZnJhbWUgc2l6ZSwgb3Ig
bV9jaGFubmVsLT5idWZmZXJlZEFtb3VudCgpLiBTbywgYnVmZmVyZWQgZnJhbWVzIHdhcworICAg
ICAgICBkb3VibGUgY291bnRlZC4KKworICAgICAgICBJbiBuZXcgaW1wbGVtZW50YXRpb24sIG1f
YnVmZmVyZWRBbW91bnQgYWx3YXlzIHJlcHJlc2VudHMgYnVmZmVyZWQKKyAgICAgICAgZnJhbWUg
c2l6ZSBhbmQgbV9idWZmZXJlZEFtb3VudEFmdGVyQ2xvc2UgZG9lcyBkaXNwb3NlZCBmcmFtZSBz
aXplLgorICAgICAgICBBcyBhIHJlc3VsdCwgYnVmZmVyZWRBbW91bnQoKSBpbXBsZW1lbnRhdGlv
biBiZWNvbWUganVzdCB0byByZXR1cm4gdGhlCisgICAgICAgIHN1bSBvZiBtX2J1ZmZlcmVkQW1v
dW50IGFuZCBtX2J1ZmZlcmVkQW1vdW50QWZ0ZXJDbG9zZS4KKworICAgICAgICBUZXN0OiBodHRw
L3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2J1ZmZlcmVkQW1vdW50LWFmdGVyLWNsb3NlLWlu
LWJ1c3kuaHRtbAorCisgICAgICAgICogd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwOiBJbXBsZW1l
bnQgbmV3IGJ1ZmZlcmVkQW1vdW50IGhhbmRsaW5nLgorICAgICAgICAoV2ViQ29yZTo6c2F0dXJh
dGVBZGQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0OjpXZWJTb2NrZXQpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViU29ja2V0OjpzZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tl
dDo6Y2xvc2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0OjpidWZmZXJlZEFtb3VudCk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OmRpZFVwZGF0ZUJ1ZmZlcmVkQW1vdW50KToK
KyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6ZGlkQ2xvc2UpOgorICAgICAgICAqIHdlYnNv
Y2tldHMvV2ViU29ja2V0Lmg6CisKIDIwMTEtMTEtMzAgIFRha2FzaGkgVG95b3NoaW1hICA8dG95
b3NoaW1AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEFkZCBPVkVSUklERSB0byBXZWJTb2NrZXQg
cmVsYXRlZCBzb3VyY2VzIGZvciBzYWZlIGluaGVyaXRhbmNlcy4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dlYnNv
Y2tldHMvV2ViU29ja2V0LmNwcAppbmRleCBmOWZkMmZlY2NmZGI4OGRkODhjYzJjMmRiY2E5ZTIz
YTE5OWVkMjgxLi42ODJmYWIxN2YyZDg3MzRmMTI4MGYyODk5ZTFkYWFiNDljMTNiMTBkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCkBAIC01OSw2ICs1OSw4IEBACiAj
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgogCit1c2luZyBuYW1lc3BhY2Ugc3RkOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNvbnN0IHNpemVfdCBtYXhSZWFzb25TaXplSW5CeXRlcyA9IDEyMzsKQEAgLTEyNiw2ICsx
MjgsMTMgQEAgc3RhdGljIFN0cmluZyBqb2luU3RyaW5ncyhjb25zdCBWZWN0b3I8U3RyaW5nPiYg
c3RyaW5ncywgY29uc3QgY2hhciogc2VwYXJhdG9yKQogICAgIHJldHVybiBidWlsZGVyLnRvU3Ry
aW5nKCk7CiB9CiAKK3N0YXRpYyB1bnNpZ25lZCBsb25nIHNhdHVyYXRlQWRkKHVuc2lnbmVkIGxv
bmcgYSwgdW5zaWduZWQgbG9uZyBiKQoreworICAgIGlmIChudW1lcmljX2xpbWl0czx1bnNpZ25l
ZCBsb25nPjo6bWF4KCkgLSBhIDwgYikKKyAgICAgICAgcmV0dXJuIG51bWVyaWNfbGltaXRzPHVu
c2lnbmVkIGxvbmc+OjptYXgoKTsKKyAgICByZXR1cm4gYSArIGI7Cit9CisKIHN0YXRpYyBib29s
IHdlYlNvY2tldHNBdmFpbGFibGUgPSBmYWxzZTsKIAogdm9pZCBXZWJTb2NrZXQ6OnNldElzQXZh
aWxhYmxlKGJvb2wgYXZhaWxhYmxlKQpAQCAtMTQxLDYgKzE1MCw3IEBAIGJvb2wgV2ViU29ja2V0
Ojppc0F2YWlsYWJsZSgpCiBXZWJTb2NrZXQ6OldlYlNvY2tldChTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0KQogICAgIDogQWN0aXZlRE9NT2JqZWN0KGNvbnRleHQsIHRoaXMpCiAgICAg
LCBtX3N0YXRlKENPTk5FQ1RJTkcpCisgICAgLCBtX2J1ZmZlcmVkQW1vdW50KDApCiAgICAgLCBt
X2J1ZmZlcmVkQW1vdW50QWZ0ZXJDbG9zZSgwKQogICAgICwgbV9iaW5hcnlUeXBlKEJpbmFyeVR5
cGVCbG9iKQogICAgICwgbV91c2VIaXhpZTc2UHJvdG9jb2wodHJ1ZSkKQEAgLTI2Niw3ICsyNzYs
OCBAQCBib29sIFdlYlNvY2tldDo6c2VuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIEV4Y2VwdGlv
bkNvZGUmIGVjKQogICAgIC8vIE5vIGV4Y2VwdGlvbiBpcyByYWlzZWQgaWYgdGhlIGNvbm5lY3Rp
b24gd2FzIG9uY2UgZXN0YWJsaXNoZWQgYnV0IGhhcyBzdWJzZXF1ZW50bHkgYmVlbiBjbG9zZWQu
CiAgICAgaWYgKG1fc3RhdGUgPT0gQ0xPU0lORyB8fCBtX3N0YXRlID09IENMT1NFRCkgewogICAg
ICAgICBzaXplX3QgcGF5bG9hZFNpemUgPSBtZXNzYWdlLnV0ZjgoKS5sZW5ndGgoKTsKLSAgICAg
ICAgbV9idWZmZXJlZEFtb3VudEFmdGVyQ2xvc2UgKz0gcGF5bG9hZFNpemUgKyBnZXRGcmFtaW5n
T3ZlcmhlYWQocGF5bG9hZFNpemUpOworICAgICAgICBtX2J1ZmZlcmVkQW1vdW50QWZ0ZXJDbG9z
ZSA9IHNhdHVyYXRlQWRkKG1fYnVmZmVyZWRBbW91bnRBZnRlckNsb3NlLCBwYXlsb2FkU2l6ZSk7
CisgICAgICAgIG1fYnVmZmVyZWRBbW91bnRBZnRlckNsb3NlID0gc2F0dXJhdGVBZGQobV9idWZm
ZXJlZEFtb3VudEFmdGVyQ2xvc2UsIGdldEZyYW1pbmdPdmVyaGVhZChwYXlsb2FkU2l6ZSkpOwog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIC8vIEZJWE1FOiBjaGVjayBtZXNzYWdl
IGlzIHZhbGlkIHV0ZjguCkBAIC0yODUsNyArMjk2LDkgQEAgYm9vbCBXZWJTb2NrZXQ6OnNlbmQo
QXJyYXlCdWZmZXIqIGJpbmFyeURhdGEsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQogICAgIGlmIChtX3N0YXRlID09IENMT1NJTkcgfHwgbV9zdGF0ZSA9
PSBDTE9TRUQpIHsKLSAgICAgICAgbV9idWZmZXJlZEFtb3VudEFmdGVyQ2xvc2UgKz0gYmluYXJ5
RGF0YS0+Ynl0ZUxlbmd0aCgpICsgZ2V0RnJhbWluZ092ZXJoZWFkKGJpbmFyeURhdGEtPmJ5dGVM
ZW5ndGgoKSk7CisgICAgICAgIHVuc2lnbmVkIHBheWxvYWRTaXplID0gYmluYXJ5RGF0YS0+Ynl0
ZUxlbmd0aCgpOworICAgICAgICBtX2J1ZmZlcmVkQW1vdW50QWZ0ZXJDbG9zZSA9IHNhdHVyYXRl
QWRkKG1fYnVmZmVyZWRBbW91bnRBZnRlckNsb3NlLCBwYXlsb2FkU2l6ZSk7CisgICAgICAgIG1f
YnVmZmVyZWRBbW91bnRBZnRlckNsb3NlID0gc2F0dXJhdGVBZGQobV9idWZmZXJlZEFtb3VudEFm
dGVyQ2xvc2UsIGdldEZyYW1pbmdPdmVyaGVhZChwYXlsb2FkU2l6ZSkpOwogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQogICAgIEFTU0VSVChtX2NoYW5uZWwpOwpAQCAtMzA0LDcgKzMxNyw4
IEBAIGJvb2wgV2ViU29ja2V0OjpzZW5kKEJsb2IqIGJpbmFyeURhdGEsIEV4Y2VwdGlvbkNvZGUm
IGVjKQogICAgIH0KICAgICBpZiAobV9zdGF0ZSA9PSBDTE9TSU5HIHx8IG1fc3RhdGUgPT0gQ0xP
U0VEKSB7CiAgICAgICAgIHVuc2lnbmVkIGxvbmcgcGF5bG9hZFNpemUgPSBzdGF0aWNfY2FzdDx1
bnNpZ25lZCBsb25nPihiaW5hcnlEYXRhLT5zaXplKCkpOwotICAgICAgICBtX2J1ZmZlcmVkQW1v
dW50QWZ0ZXJDbG9zZSArPSBwYXlsb2FkU2l6ZSArIGdldEZyYW1pbmdPdmVyaGVhZChwYXlsb2Fk
U2l6ZSk7CisgICAgICAgIG1fYnVmZmVyZWRBbW91bnRBZnRlckNsb3NlID0gc2F0dXJhdGVBZGQo
bV9idWZmZXJlZEFtb3VudEFmdGVyQ2xvc2UsIHBheWxvYWRTaXplKTsKKyAgICAgICAgbV9idWZm
ZXJlZEFtb3VudEFmdGVyQ2xvc2UgPSBzYXR1cmF0ZUFkZChtX2J1ZmZlcmVkQW1vdW50QWZ0ZXJD
bG9zZSwgZ2V0RnJhbWluZ092ZXJoZWFkKHBheWxvYWRTaXplKSk7CiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CiAgICAgQVNTRVJUKG1fY2hhbm5lbCk7CkBAIC0zMzYsOSArMzUwLDYgQEAg
dm9pZCBXZWJTb2NrZXQ6OmNsb3NlKGludCBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbiwgRXhj
ZXB0aW9uQ29kZSYgZWMpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgbV9zdGF0ZSA9IENM
T1NJTkc7Ci0gICAgbV9idWZmZXJlZEFtb3VudEFmdGVyQ2xvc2UgPSBtX2NoYW5uZWwtPmJ1ZmZl
cmVkQW1vdW50KCk7Ci0gICAgLy8gZGlkQ2xvc2Ugbm90aWZpY2F0aW9uIG1heSBiZSBhbHJlYWR5
IHF1ZXVlZCwgd2hpY2ggd2Ugd2lsbCBpbmFkdmVydGVudGx5IHByb2Nlc3Mgd2hpbGUgd2FpdGlu
ZyBmb3IgYnVmZmVyZWRBbW91bnQoKSB0byByZXR1cm4uCi0gICAgLy8gSW4gdGhpcyBjYXNlIG1f
Y2hhbm5lbCB3aWxsIGJlIHNldCB0byBudWxsIGR1cmluZyBkaWRDbG9zZSgpIGNhbGwsIHRodXMg
d2UgbmVlZCB0byB0ZXN0IHZhbGlkbmVzcyBvZiBtX2NoYW5uZWwgaGVyZS4KICAgICBpZiAobV9j
aGFubmVsKQogICAgICAgICBtX2NoYW5uZWwtPmNsb3NlKGNvZGUsIHJlYXNvbik7CiB9CkBAIC0z
NTUsMTEgKzM2Niw3IEBAIFdlYlNvY2tldDo6U3RhdGUgV2ViU29ja2V0OjpyZWFkeVN0YXRlKCkg
Y29uc3QKIAogdW5zaWduZWQgbG9uZyBXZWJTb2NrZXQ6OmJ1ZmZlcmVkQW1vdW50KCkgY29uc3QK
IHsKLSAgICBpZiAobV9zdGF0ZSA9PSBPUEVOKQotICAgICAgICByZXR1cm4gbV9jaGFubmVsLT5i
dWZmZXJlZEFtb3VudCgpOwotICAgIGVsc2UgaWYgKG1fc3RhdGUgPT0gQ0xPU0lORykKLSAgICAg
ICAgcmV0dXJuIG1fY2hhbm5lbC0+YnVmZmVyZWRBbW91bnQoKSArIG1fYnVmZmVyZWRBbW91bnRB
ZnRlckNsb3NlOwotICAgIHJldHVybiBtX2J1ZmZlcmVkQW1vdW50QWZ0ZXJDbG9zZTsKKyAgICBy
ZXR1cm4gc2F0dXJhdGVBZGQobV9idWZmZXJlZEFtb3VudCwgbV9idWZmZXJlZEFtb3VudEFmdGVy
Q2xvc2UpOwogfQogCiBTdHJpbmcgV2ViU29ja2V0Ojpwcm90b2NvbCgpIGNvbnN0CkBAIC01MDcs
OCArNTE0LDEwIEBAIHZvaWQgV2ViU29ja2V0OjpkaWRSZWNlaXZlTWVzc2FnZUVycm9yKCkKIAog
dm9pZCBXZWJTb2NrZXQ6OmRpZFVwZGF0ZUJ1ZmZlcmVkQW1vdW50KHVuc2lnbmVkIGxvbmcgYnVm
ZmVyZWRBbW91bnQpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGJ1ZmZlcmVkQW1vdW50KTsKICAgICBM
T0coTmV0d29yaywgIldlYlNvY2tldCAlcCBkaWRVcGRhdGVCdWZmZXJlZEFtb3VudCAlbHUiLCB0
aGlzLCBidWZmZXJlZEFtb3VudCk7CisgICAgaWYgKG1fc3RhdGUgPT0gQ0xPU0VEKQorICAgICAg
ICByZXR1cm47CisgICAgbV9idWZmZXJlZEFtb3VudCA9IGJ1ZmZlcmVkQW1vdW50OwogfQogCiB2
b2lkIFdlYlNvY2tldDo6ZGlkU3RhcnRDbG9zaW5nSGFuZHNoYWtlKCkKQEAgLTUyNCw3ICs1MzMs
NyBAQCB2b2lkIFdlYlNvY2tldDo6ZGlkQ2xvc2UodW5zaWduZWQgbG9uZyB1bmhhbmRsZWRCdWZm
ZXJlZEFtb3VudCwgQ2xvc2luZ0hhbmRzaGFrZQogICAgICAgICByZXR1cm47CiAgICAgYm9vbCB3
YXNDbGVhbiA9IG1fc3RhdGUgPT0gQ0xPU0lORyAmJiAhdW5oYW5kbGVkQnVmZmVyZWRBbW91bnQg
JiYgY2xvc2luZ0hhbmRzaGFrZUNvbXBsZXRpb24gPT0gQ2xvc2luZ0hhbmRzaGFrZUNvbXBsZXRl
OwogICAgIG1fc3RhdGUgPSBDTE9TRUQ7Ci0gICAgbV9idWZmZXJlZEFtb3VudEFmdGVyQ2xvc2Ug
Kz0gdW5oYW5kbGVkQnVmZmVyZWRBbW91bnQ7CisgICAgbV9idWZmZXJlZEFtb3VudCA9IHVuaGFu
ZGxlZEJ1ZmZlcmVkQW1vdW50OwogICAgIEFTU0VSVChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkp
OwogICAgIFJlZlB0cjxDbG9zZUV2ZW50PiBldmVudCA9IENsb3NlRXZlbnQ6OmNyZWF0ZSh3YXND
bGVhbiwgY29kZSwgcmVhc29uKTsKICAgICBkaXNwYXRjaEV2ZW50KGV2ZW50KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmggYi9Tb3VyY2UvV2ViQ29y
ZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5oCmluZGV4IGMxMzYzZTlhNTg5NTY2NjhhNWMzMDk5NTJi
ZDhlN2M0ODA0NTZhYjAuLmI4NjBiNzVjN2E3OWQzYjJlY2I3MzhlMjg3NWU5YzEzNWRhOWI1MzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuaApAQCAtMTMxLDYgKzEzMSw3IEBA
IHByaXZhdGU6CiAgICAgU3RhdGUgbV9zdGF0ZTsKICAgICBLVVJMIG1fdXJsOwogICAgIEV2ZW50
VGFyZ2V0RGF0YSBtX2V2ZW50VGFyZ2V0RGF0YTsKKyAgICB1bnNpZ25lZCBsb25nIG1fYnVmZmVy
ZWRBbW91bnQ7CiAgICAgdW5zaWduZWQgbG9uZyBtX2J1ZmZlcmVkQW1vdW50QWZ0ZXJDbG9zZTsK
ICAgICBCaW5hcnlUeXBlIG1fYmluYXJ5VHlwZTsKICAgICBib29sIG1fdXNlSGl4aWU3NlByb3Rv
Y29sOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCmluZGV4IGI1MTFiNWZlZGQxZWEyN2Q4MDViYTVjMTQ0N2QwYWUzYjQ5MjUzODQuLmJl
NTM5ZDU5OWVkZTQ4YWZmZDNmYWM0ODg5Njg5YjE1MTJjMzY0MWIgMTAwNzU1Ci0tLSBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
OCBAQAorMjAxMS0xMi0wMSAgVGFrYXNoaSBUb3lvc2hpbWEgIDx0b3lvc2hpbUBjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgYnVmZmVyZWRBbW91bnQgY2FsY3VsYXRpb24gaXMgd3JvbmcgaW4gQ0xP
U0lORyBhbmQgQ0xPU0VEIHN0YXRlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NzM0MDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGQgYSBsYXlvdXQgdGVzdCB0byBjaGVjayB0aGUgV2ViU29ja2V0IGJ1
ZmZlcmVkQW1vdW50IHByb3BlcnR5LgorICAgICAgICBUaGlzIHRlc3QgY2xvc2UgdGhlIHNvY2tl
dCBjaGFubmVsIHdoZW4gaXQgaXMgYnVzeSBhbmQgYnVmZmVyIHNvbWUKKyAgICAgICAgbWVzc2Fn
ZSBmcmFtZXMsIHRoZW4gY2hlY2sgdGhlIHByb3BlcnR5J3MgdmFsdWUgaW4gQ0xPU0lORyBhbmQg
Q0xPU0VECisgICAgICAgIHN0YXRlLgorCisgICAgICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQv
dGVzdHMvaHliaS9idWZmZXJlZEFtb3VudC1hZnRlci1jbG9zZS1pbi1idXN5LWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9idWZm
ZXJlZEFtb3VudC1hZnRlci1jbG9zZS1pbi1idXN5Lmh0bWw6IEFkZGVkLgorCiAyMDExLTExLTMw
ICBIYXlhdG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2Vk
LiBVcGRhdGUgdGVzdCBleHBlY3RhdGlvbnMgYWZ0ZXIgcjEwMTU3Ni4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvYnVmZmVyZWRBbW91bnQt
YWZ0ZXItY2xvc2UtaW4tYnVzeS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3dlYnNvY2tldC90ZXN0cy9oeWJpL2J1ZmZlcmVkQW1vdW50LWFmdGVyLWNsb3NlLWluLWJ1c3kt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM1NDc4MGM3MGZiNDhjM2IyZGUwYTYyMDM4ZjE0ODgw
NmUyMThlNDcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNv
Y2tldC90ZXN0cy9oeWJpL2J1ZmZlcmVkQW1vdW50LWFmdGVyLWNsb3NlLWluLWJ1c3ktZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsNTQgQEAKK1dlYiBTb2NrZXQgYnVmZmVyZWRBbW91bnQgYWZ0ZXIg
Y2xvc2VkIGluIGJ1c3kKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCitDb25uZWN0ZWQu
CitQQVNTIGJ1ZmZlcmVkQW1vdW50QmVmb3JlQ2xvc2UgKyBjbG9zZUZyYW1lU2l6ZSA+PSBidWZm
ZXJlZEFtb3VudEFmdGVyQ2xvc2UgaXMgdHJ1ZQorQ2xvc2VkLgorUEFTUyB3cy5yZWFkeVN0YXRl
IGlzIDMKK1BBU1Mgd3MuYnVmZmVyZWRBbW91bnQgPD0gYnVmZmVyZWRBbW91bnRBZnRlckNsb3Nl
IGlzIHRydWUKK1Rlc3Rpbmcgc2VuZChzdHJpbmcpLi4uCitQQVNTIHdzLnNlbmQobWVzc2FnZVRv
U2VuZCkgaXMgZmFsc2UKK1BBU1MgYnVmZmVyZWRBbW91bnREaWZmZXJlbmNlIGlzIDI3CitQQVNT
IHdzLnNlbmQobWVzc2FnZVRvU2VuZCkgaXMgZmFsc2UKK1BBU1MgYnVmZmVyZWRBbW91bnREaWZm
ZXJlbmNlIGlzIDYKK1BBU1Mgd3Muc2VuZChtZXNzYWdlVG9TZW5kKSBpcyBmYWxzZQorUEFTUyBi
dWZmZXJlZEFtb3VudERpZmZlcmVuY2UgaXMgNworUEFTUyB3cy5zZW5kKG1lc3NhZ2VUb1NlbmQp
IGlzIGZhbHNlCitQQVNTIGJ1ZmZlcmVkQW1vdW50RGlmZmVyZW5jZSBpcyAxMzEKK1BBU1Mgd3Mu
c2VuZChtZXNzYWdlVG9TZW5kKSBpcyBmYWxzZQorUEFTUyBidWZmZXJlZEFtb3VudERpZmZlcmVu
Y2UgaXMgMTM0CitQQVNTIHdzLnNlbmQobWVzc2FnZVRvU2VuZCkgaXMgZmFsc2UKK1BBU1MgYnVm
ZmVyZWRBbW91bnREaWZmZXJlbmNlIGlzIDY1NTQzCitQQVNTIHdzLnNlbmQobWVzc2FnZVRvU2Vu
ZCkgaXMgZmFsc2UKK1BBU1MgYnVmZmVyZWRBbW91bnREaWZmZXJlbmNlIGlzIDY1NTUwCitUZXN0
aW5nIHNlbmQoQXJyYXlCdWZmZXIpLi4uCitQQVNTIHdzLnNlbmQobWVzc2FnZVRvU2VuZCkgaXMg
ZmFsc2UKK1BBU1MgYnVmZmVyZWRBbW91bnREaWZmZXJlbmNlIGlzIDYKK1BBU1Mgd3Muc2VuZCht
ZXNzYWdlVG9TZW5kKSBpcyBmYWxzZQorUEFTUyBidWZmZXJlZEFtb3VudERpZmZlcmVuY2UgaXMg
NworUEFTUyB3cy5zZW5kKG1lc3NhZ2VUb1NlbmQpIGlzIGZhbHNlCitQQVNTIGJ1ZmZlcmVkQW1v
dW50RGlmZmVyZW5jZSBpcyAxMzEKK1BBU1Mgd3Muc2VuZChtZXNzYWdlVG9TZW5kKSBpcyBmYWxz
ZQorUEFTUyBidWZmZXJlZEFtb3VudERpZmZlcmVuY2UgaXMgMTM0CitQQVNTIHdzLnNlbmQobWVz
c2FnZVRvU2VuZCkgaXMgZmFsc2UKK1BBU1MgYnVmZmVyZWRBbW91bnREaWZmZXJlbmNlIGlzIDY1
NTQzCitQQVNTIHdzLnNlbmQobWVzc2FnZVRvU2VuZCkgaXMgZmFsc2UKK1BBU1MgYnVmZmVyZWRB
bW91bnREaWZmZXJlbmNlIGlzIDY1NTUwCitUZXN0aW5nIHNlbmQoQmxvYikuLi4KK1BBU1Mgd3Mu
c2VuZChtZXNzYWdlVG9TZW5kKSBpcyBmYWxzZQorUEFTUyBidWZmZXJlZEFtb3VudERpZmZlcmVu
Y2UgaXMgNgorUEFTUyB3cy5zZW5kKG1lc3NhZ2VUb1NlbmQpIGlzIGZhbHNlCitQQVNTIGJ1ZmZl
cmVkQW1vdW50RGlmZmVyZW5jZSBpcyA3CitQQVNTIHdzLnNlbmQobWVzc2FnZVRvU2VuZCkgaXMg
ZmFsc2UKK1BBU1MgYnVmZmVyZWRBbW91bnREaWZmZXJlbmNlIGlzIDEzMQorUEFTUyB3cy5zZW5k
KG1lc3NhZ2VUb1NlbmQpIGlzIGZhbHNlCitQQVNTIGJ1ZmZlcmVkQW1vdW50RGlmZmVyZW5jZSBp
cyAxMzQKK1BBU1Mgd3Muc2VuZChtZXNzYWdlVG9TZW5kKSBpcyBmYWxzZQorUEFTUyBidWZmZXJl
ZEFtb3VudERpZmZlcmVuY2UgaXMgNjU1NDMKK1BBU1Mgd3Muc2VuZChtZXNzYWdlVG9TZW5kKSBp
cyBmYWxzZQorUEFTUyBidWZmZXJlZEFtb3VudERpZmZlcmVuY2UgaXMgNjU1NTAKK1BBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2J1ZmZlcmVkQW1vdW50
LWFmdGVyLWNsb3NlLWluLWJ1c3kuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29j
a2V0L3Rlc3RzL2h5YmkvYnVmZmVyZWRBbW91bnQtYWZ0ZXItY2xvc2UtaW4tYnVzeS5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjYzNzUyOGJmM2ZkMzA1YzNmYjAyNWI2ZGE2MjY0MTA1MzEyNzBkMjMKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJp
L2J1ZmZlcmVkQW1vdW50LWFmdGVyLWNsb3NlLWluLWJ1c3kuaHRtbApAQCAtMCwwICsxLDExMiBA
QAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+
Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy10ZXN0LXJlc291cmNlcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0
aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCB0eXBlPSJ0ZXh0
L2phdmFzY3JpcHQiPgorZGVzY3JpcHRpb24oIldlYiBTb2NrZXQgYnVmZmVyZWRBbW91bnQgYWZ0
ZXIgY2xvc2VkIGluIGJ1c3kiKTsKKword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5v
dmVycmlkZVByZWZlcmVuY2UoIldlYktpdEhpeGllNzZXZWJTb2NrZXRQcm90b2NvbEVuYWJsZWQi
LCAwKTsKKworZnVuY3Rpb24gY3JlYXRlU3RyaW5nV2l0aExlbmd0aChsZW5ndGgpCit7CisgICAg
dmFyIHN0cmluZyA9ICd4JzsKKyAgICB3aGlsZSAoc3RyaW5nLmxlbmd0aCA8IGxlbmd0aCkKKyAg
ICAgICAgc3RyaW5nID0gc3RyaW5nICsgc3RyaW5nOworICAgIHJldHVybiBzdHJpbmcuc3Vic3Ry
aW5nKDAsIGxlbmd0aCk7Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZUJsb2JXaXRoTGVuZ3RoKGxlbmd0
aCkKK3sKKyAgICB2YXIgYnVpbGRlciA9IG5ldyBXZWJLaXRCbG9iQnVpbGRlcigpOworICAgIGJ1
aWxkZXIuYXBwZW5kKG5ldyBBcnJheUJ1ZmZlcihsZW5ndGgpKTsKKyAgICByZXR1cm4gYnVpbGRl
ci5nZXRCbG9iKCk7Cit9CisKK3ZhciB3cyA9IG5ldyBXZWJTb2NrZXQoIndzOi8vbG9jYWxob3N0
Ojg4ODAvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvc2ltcGxlIik7CisKK3ZhciBidWZmZXJlZEFtb3Vu
dEJlZm9yZUNsb3NlID0gMDsKK3ZhciBidWZmZXJlZEFtb3VudEFmdGVyQ2xvc2UgPSAwOwordmFy
IGJ1ZmZlcmVkQW1vdW50QWZ0ZXJDbG9zZWQgPSAwOwordmFyIGNsb3NlRnJhbWVTaXplID0gNjsK
Kword3Mub25vcGVuID0gZnVuY3Rpb24oKQoreworICAgIGRlYnVnKCJDb25uZWN0ZWQuIik7CisK
KyAgICB2YXIgZGF0YSA9IGNyZWF0ZVN0cmluZ1dpdGhMZW5ndGgoODE5Myk7CisgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCAxMDA7ICsraSkgeworICAgICAgICB3cy5zZW5kKGRhdGEpOworICAgICAg
ICBpZiAod3MuYnVmZmVyZWRBbW91bnQgPiAyNjIxNDQpCisgICAgICAgICAgICBicmVhazsKKyAg
ICB9CisgICAgYnVmZmVyZWRBbW91bnRCZWZvcmVDbG9zZSA9IHdzLmJ1ZmZlcmVkQW1vdW50Owor
ICAgIHdzLmNsb3NlKCk7CisgICAgYnVmZmVyZWRBbW91bnRBZnRlckNsb3NlID0gd3MuYnVmZmVy
ZWRBbW91bnQ7CisgICAgc2hvdWxkQmVUcnVlKCJidWZmZXJlZEFtb3VudEJlZm9yZUNsb3NlICsg
Y2xvc2VGcmFtZVNpemUgPj0gYnVmZmVyZWRBbW91bnRBZnRlckNsb3NlIik7Cit9OworCit3cy5v
bmNsb3NlID0gZnVuY3Rpb24oKQoreworICAgIGRlYnVnKCJDbG9zZWQuIik7CisgICAgc2hvdWxk
QmUoIndzLnJlYWR5U3RhdGUiLCAiMyIpOworICAgIHNob3VsZEJlVHJ1ZSgid3MuYnVmZmVyZWRB
bW91bnQgPD0gYnVmZmVyZWRBbW91bnRBZnRlckNsb3NlIik7CisKKyAgICB2YXIgYmFzZU92ZXJo
ZWFkID0gMiArIDQ7IC8vIEJhc2UgaGVhZGVyIHNpemUgYW5kIG1hc2tpbmcga2V5IHNpemUuCisg
ICAgZGVidWcoIlRlc3Rpbmcgc2VuZChzdHJpbmcpLi4uIik7CisgICAgdGVzdEJ1ZmZlcmVkQW1v
dW50KCdzZW5kIHRvIGNsb3NlZCBzb2NrZXQnLCAyMSArIGJhc2VPdmVyaGVhZCk7CisgICAgdGVz
dEJ1ZmZlcmVkQW1vdW50KCcnLCBiYXNlT3ZlcmhlYWQpOworICAgIHRlc3RCdWZmZXJlZEFtb3Vu
dCgnYScsIDEgKyBiYXNlT3ZlcmhlYWQpOworICAgIHRlc3RCdWZmZXJlZEFtb3VudChjcmVhdGVT
dHJpbmdXaXRoTGVuZ3RoKDEyNSksIDEyNSArIGJhc2VPdmVyaGVhZCk7CisgICAgdGVzdEJ1ZmZl
cmVkQW1vdW50KGNyZWF0ZVN0cmluZ1dpdGhMZW5ndGgoMTI2KSwgMTI2ICsgYmFzZU92ZXJoZWFk
ICsgMik7IC8vIFdpdGggMTYtYml0IGV4dGVuZGVkIHBheWxvYWQgbGVuZ3RoIGZpZWxkLgorICAg
IHRlc3RCdWZmZXJlZEFtb3VudChjcmVhdGVTdHJpbmdXaXRoTGVuZ3RoKDB4RkZGRiksIDB4RkZG
RiArIGJhc2VPdmVyaGVhZCArIDIpOworICAgIHRlc3RCdWZmZXJlZEFtb3VudChjcmVhdGVTdHJp
bmdXaXRoTGVuZ3RoKDB4MTAwMDApLCAweDEwMDAwICsgYmFzZU92ZXJoZWFkICsgOCk7IC8vIFdp
dGggNjQtYml0IGV4dGVuZGVkIHBheWxvYWQgbGVuZ3RoIGZpZWxkLgorCisgICAgZGVidWcoIlRl
c3Rpbmcgc2VuZChBcnJheUJ1ZmZlcikuLi4iKTsKKyAgICB0ZXN0QnVmZmVyZWRBbW91bnQobmV3
IEFycmF5QnVmZmVyKDApLCBiYXNlT3ZlcmhlYWQpOworICAgIHRlc3RCdWZmZXJlZEFtb3VudChu
ZXcgQXJyYXlCdWZmZXIoMSksIDEgKyBiYXNlT3ZlcmhlYWQpOworICAgIHRlc3RCdWZmZXJlZEFt
b3VudChuZXcgQXJyYXlCdWZmZXIoMTI1KSwgMTI1ICsgYmFzZU92ZXJoZWFkKTsKKyAgICB0ZXN0
QnVmZmVyZWRBbW91bnQobmV3IEFycmF5QnVmZmVyKDEyNiksIDEyNiArIGJhc2VPdmVyaGVhZCAr
IDIpOworICAgIHRlc3RCdWZmZXJlZEFtb3VudChuZXcgQXJyYXlCdWZmZXIoMHhGRkZGKSwgMHhG
RkZGICsgYmFzZU92ZXJoZWFkICsgMik7CisgICAgdGVzdEJ1ZmZlcmVkQW1vdW50KG5ldyBBcnJh
eUJ1ZmZlcigweDEwMDAwKSwgMHgxMDAwMCArIGJhc2VPdmVyaGVhZCArIDgpOworCisgICAgZGVi
dWcoIlRlc3Rpbmcgc2VuZChCbG9iKS4uLiIpOworICAgIHRlc3RCdWZmZXJlZEFtb3VudChjcmVh
dGVCbG9iV2l0aExlbmd0aCgwKSwgYmFzZU92ZXJoZWFkKTsKKyAgICB0ZXN0QnVmZmVyZWRBbW91
bnQoY3JlYXRlQmxvYldpdGhMZW5ndGgoMSksIDEgKyBiYXNlT3ZlcmhlYWQpOworICAgIHRlc3RC
dWZmZXJlZEFtb3VudChjcmVhdGVCbG9iV2l0aExlbmd0aCgxMjUpLCAxMjUgKyBiYXNlT3Zlcmhl
YWQpOworICAgIHRlc3RCdWZmZXJlZEFtb3VudChjcmVhdGVCbG9iV2l0aExlbmd0aCgxMjYpLCAx
MjYgKyBiYXNlT3ZlcmhlYWQgKyAyKTsKKyAgICB0ZXN0QnVmZmVyZWRBbW91bnQoY3JlYXRlQmxv
YldpdGhMZW5ndGgoMHhGRkZGKSwgMHhGRkZGICsgYmFzZU92ZXJoZWFkICsgMik7CisgICAgdGVz
dEJ1ZmZlcmVkQW1vdW50KGNyZWF0ZUJsb2JXaXRoTGVuZ3RoKDB4MTAwMDApLCAweDEwMDAwICsg
YmFzZU92ZXJoZWFkICsgOCk7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9OworCit3cy5vbmVycm9y
ID0gZnVuY3Rpb24oKQoreworICAgIGRlYnVnKCJFcnJvci4iKTsKK30KKwordmFyIG1lc3NhZ2VU
b1NlbmQ7Cit2YXIgYnVmZmVyZWRBbW91bnREaWZmZXJlbmNlOworCitmdW5jdGlvbiB0ZXN0QnVm
ZmVyZWRBbW91bnQobWVzc2FnZSwgZXhwZWN0ZWRCdWZmZXJlZEFtb3VudERpZmZlcmVuY2UpCit7
CisgICAgLy8gSWYgdGhlIGNvbm5lY3Rpb24gaXMgY2xvc2VkLCBidWZmZXJlZEFtb3VudCBhdHRy
aWJ1dGUncyB2YWx1ZSB3aWxsIG9ubHkKKyAgICAvLyBpbmNyZWFzZSB3aXRoIGVhY2ggY2FsbCB0
byB0aGUgc2VuZCgpIG1ldGhvZC4KKyAgICAvLyAodGhlIG51bWJlciBkb2VzIG5vdCByZXNldCB0
byB6ZXJvIG9uY2UgdGhlIGNvbm5lY3Rpb24gY2xvc2VzKS4KKyAgICBtZXNzYWdlVG9TZW5kID0g
bWVzc2FnZTsKKyAgICB2YXIgYnVmZmVyZWRBbW91bnRCZWZvcmVTZW5kID0gd3MuYnVmZmVyZWRB
bW91bnQ7CisgICAgc2hvdWxkQmVGYWxzZSgid3Muc2VuZChtZXNzYWdlVG9TZW5kKSIpOworICAg
IHZhciBidWZmZXJlZEFtb3VudEFmdGVyU2VuZCA9IHdzLmJ1ZmZlcmVkQW1vdW50OworICAgIGJ1
ZmZlcmVkQW1vdW50RGlmZmVyZW5jZSA9IGJ1ZmZlcmVkQW1vdW50QWZ0ZXJTZW5kIC0gYnVmZmVy
ZWRBbW91bnRCZWZvcmVTZW5kOworICAgIHNob3VsZEV2YWx1YXRlVG8oImJ1ZmZlcmVkQW1vdW50
RGlmZmVyZW5jZSIsIGV4cGVjdGVkQnVmZmVyZWRBbW91bnREaWZmZXJlbmNlKTsKK30KKworPC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMtdGVzdC1yZXNvdXJjZXMvanMtdGVz
dC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>