<?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>87383</bug_id>
          
          <creation_ts>2012-05-24 06:05:14 -0700</creation_ts>
          <short_desc>[WebSocket] Send requires super linear time against data size</short_desc>
          <delta_ts>2012-06-04 17:52:21 -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>1</everconfirmed>
          <reporter name="Takashi Toyoshima">toyoshim</reporter>
          <assigned_to name="Takashi Toyoshima">toyoshim</assigned_to>
          <cc>apavlov</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>632695</commentid>
    <comment_count>0</comment_count>
    <who name="Takashi Toyoshima">toyoshim</who>
    <bug_when>2012-05-24 06:05:14 -0700</bug_when>
    <thetext>Chromium side issue is here.
http://code.google.com/p/chromium/issues/detail?id=123228

WebSocket send operation requires super liner time to send data against data size.
This is because SocketStreamHandleBase requires O(n^2) time against buffed data size.

My simple investigation results are here.

     |  Chrome  | Chrome with this patch
=====+==========+=======================
  1M |    300ms |    333ms
  2M |    700ms |    660ms
 10M |   4700ms |   3300ms
 20M |  13000ms |   6600ms (x2 faster)
100M | 202000ms |  33000ms (x6 faster)

After applying this patch, sending time becomes linear to data size.

I also notice that receiving and binary handling operations have other bottle necks to be fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>632699</commentid>
    <comment_count>1</comment_count>
      <attachid>143808</attachid>
    <who name="Takashi Toyoshima">toyoshim</who>
    <bug_when>2012-05-24 06:08:57 -0700</bug_when>
    <thetext>Created attachment 143808
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>632765</commentid>
    <comment_count>2</comment_count>
      <attachid>143808</attachid>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2012-05-24 07:23:51 -0700</bug_when>
    <thetext>Comment on attachment 143808
Patch

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

&gt; Source/WebCore/ChangeLog:7
&gt; +

You should explain why the current implementation requires super-linear time and how you resolve that.

&gt; Source/WebCore/platform/network/SocketStreamHandleBase.cpp:39
&gt; +const unsigned int vectorCoalescingSize = 4096;

Looks too small to me, but I might be wrong. I feel like 10KiB or even 100KiB is safe. Ultimately profiling is required to figure out the best value.

If my memory is correct, allocating 4096 bytes tended to be inefficient, because that requires allocating two pages instead of one as malloc needs 4096 bytes plus managing area. But the system has evolved and might have changed since then.

&gt; Source/WebCore/platform/network/SocketStreamHandleBase.h:60
&gt; +        class Block : public Vector&lt;char&gt; {

I&apos;m not particularly a fan of deriving a class that doesn&apos;t have a virtual destructor. This sounds like a sign of poor design to me.

&gt; Source/WebCore/platform/network/SocketStreamHandleBase.h:65
&gt; +            Block* prev() { return m_prev; };
&gt; +            Block* next() { return m_next; };

nit: The last colon isn&apos;t necessary

&gt; Source/WebCore/platform/network/SocketStreamHandleBase.h:83
&gt; +            DoublyLinkedList&lt;Block&gt; m_buffer;

Why do you need DoublyLinkedList and need to manage memory manually? Is there any specific reason you can&apos;t use &quot;Deque&lt;Vector&lt;char&gt; &gt;&quot;? In this way you don&apos;t have to manage Block&apos;s memory by hand.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>633112</commentid>
    <comment_count>3</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-05-24 13:23:04 -0700</bug_when>
    <thetext>This is a whole lot of generic looking code for SocketStreamHandleBase. This looks something that may need to be abstracted out into WTF if we really need it.

&gt; I&apos;m not particularly a fan of deriving a class that doesn&apos;t have a virtual destructor. This sounds like a sign of poor design to me.

Private inheritance is sometimes OK, but public is dangerous.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>633815</commentid>
    <comment_count>4</comment_count>
      <attachid>144041</attachid>
    <who name="Takashi Toyoshima">toyoshim</who>
    <bug_when>2012-05-25 04:09:47 -0700</bug_when>
    <thetext>Created attachment 144041
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>633854</commentid>
    <comment_count>5</comment_count>
      <attachid>144050</attachid>
    <who name="Takashi Toyoshima">toyoshim</who>
    <bug_when>2012-05-25 05:54:41 -0700</bug_when>
    <thetext>Created attachment 144050
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>633859</commentid>
    <comment_count>6</comment_count>
    <who name="Takashi Toyoshima">toyoshim</who>
    <bug_when>2012-05-25 05:59:53 -0700</bug_when>
    <thetext>4KiB is clearly small for this.
Third patch applies 128KiB for block size.

Deque size will be 128MiB/128KiB &lt; 1000 and it looks enough small to be kept per WebSocket object.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>634943</commentid>
    <comment_count>7</comment_count>
      <attachid>144284</attachid>
    <who name="Takashi Toyoshima">toyoshim</who>
    <bug_when>2012-05-28 00:02:06 -0700</bug_when>
    <thetext>Created attachment 144284
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>634948</commentid>
    <comment_count>8</comment_count>
    <who name="Takashi Toyoshima">toyoshim</who>
    <bug_when>2012-05-28 00:07:39 -0700</bug_when>
    <thetext>After some performance tests, I notice that 128kB is still small.

     |  Chrome  | w/1st CL | 128kB blk | 1MB blk
=====+==========+==========+===========+--------
  1M |    300ms |    333ms |     333ms |   330ms
  2M |    700ms |    660ms |     666ms |   660ms
 10M |   4700ms |   3300ms |    3500ms |  3300ms
 20M |  13000ms |   6600ms |    7500ms |  6600ms
100M | 202000ms |  33000ms |   60100ms | 36000ms

Kent-san, could you look my 4th patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>634965</commentid>
    <comment_count>9</comment_count>
      <attachid>144284</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-05-28 00:56:36 -0700</bug_when>
    <thetext>Comment on attachment 144284
Patch

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

&gt; Source/WebCore/platform/network/SocketStreamHandleBase.h:67
&gt; +        StreamBuffer&lt;char, 1024 * 1024&gt; m_buffer;

Does this mean we allocate 1MB even if we&apos;d like to send a few octets?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>634976</commentid>
    <comment_count>10</comment_count>
      <attachid>144284</attachid>
    <who name="Takashi Toyoshima">toyoshim</who>
    <bug_when>2012-05-28 01:09:33 -0700</bug_when>
    <thetext>Comment on attachment 144284
Patch

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

&gt;&gt; Source/WebCore/platform/network/SocketStreamHandleBase.h:67
&gt;&gt; +        StreamBuffer&lt;char, 1024 * 1024&gt; m_buffer;
&gt; 
&gt; Does this mean we allocate 1MB even if we&apos;d like to send a few octets?

Yes. And following sending data might be coalesced to the previous buffer.
When the pending data is sent, the buffer is released.
I think Vector&lt;char&gt; could be alternative to FixedArray&lt;char, 1024 * 1024&gt;.
But, it might cause performance regression on small but many payloads.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>635530</commentid>
    <comment_count>11</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-05-28 20:10:33 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; After some performance tests, I notice that 128kB is still small.
&gt; 
&gt;      |  Chrome  | w/1st CL | 128kB blk | 1MB blk
&gt; =====+==========+==========+===========+--------
&gt;   1M |    300ms |    333ms |     333ms |   330ms
&gt;   2M |    700ms |    660ms |     666ms |   660ms
&gt;  10M |   4700ms |   3300ms |    3500ms |  3300ms
&gt;  20M |  13000ms |   6600ms |    7500ms |  6600ms
&gt; 100M | 202000ms |  33000ms |   60100ms | 36000ms
&gt; 
&gt; Kent-san, could you look my 4th patch?

I feel 128KiB is enough.  Sending 100MB frame sounds not realistic.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>635538</commentid>
    <comment_count>12</comment_count>
      <attachid>144284</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-05-28 20:25:20 -0700</bug_when>
    <thetext>Comment on attachment 144284
Patch

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

&gt; Source/WTF/wtf/StreamBuffer.h:50
&gt; +    }
&gt; +    ~StreamBuffer()

nit: Please add a blank line between function definitions.

&gt; Source/WTF/wtf/StreamBuffer.h:54
&gt; +    }
&gt; +    bool isEmpty() const { return !size(); }
&gt; +    void append(const T* data, size_t size)

ditto.

&gt; Source/WTF/wtf/StreamBuffer.h:63
&gt; +                OwnPtr&lt;Block&gt; block = adoptPtr(new Block);
&gt; +                m_buffer.append(block.release());

nit: You can omit the variable &apos;block&apos;.

&gt; Source/WTF/wtf/StreamBuffer.h:75
&gt; +    }
&gt; +    void consume(size_t size)

Please add a blank line.
We should add a comment that we can&apos;t specify size which is &gt;= firstBlockSize().

&gt; Source/WTF/wtf/StreamBuffer.h:81
&gt; +        if (m_readOffset == BlockSize) {

We had better use &gt;= for safety.

&gt; Source/WTF/wtf/StreamBuffer.h:87
&gt; +    }
&gt; +    size_t size() const { return m_size; }
&gt; +    const T* firstBlockData() const

Please add blank lines.

&gt; Source/WTF/wtf/StreamBuffer.h:93
&gt; +    }
&gt; +    size_t firstBlockSize() const

Please add a blank line.

&gt; Source/WebCore/platform/network/SocketStreamHandleBase.cpp:2
&gt; - * Copyright (C) 2009, 2011 Google Inc.  All rights reserved.
&gt; + * Copyright (C) 2012 Google Inc.  All rights reserved.

We don&apos;t replace existing years in WebKit.

&gt; Source/WebCore/platform/network/SocketStreamHandleBase.h:3
&gt; - * Copyright (C) 2009 Google Inc.  All rights reserved.
&gt; + * Copyright (C) 2012 Google Inc.  All rights reserved.

ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>635666</commentid>
    <comment_count>13</comment_count>
      <attachid>144465</attachid>
    <who name="Takashi Toyoshima">toyoshim</who>
    <bug_when>2012-05-29 00:19:44 -0700</bug_when>
    <thetext>Created attachment 144465
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>635667</commentid>
    <comment_count>14</comment_count>
    <who name="Takashi Toyoshima">toyoshim</who>
    <bug_when>2012-05-29 00:22:27 -0700</bug_when>
    <thetext>After an offline chatting with Kent, I decide to use Vector&lt;char&gt; instead of FixedArray. Actually, we have no idea how does 1MB allocation affect mobile platforms like iPhone. But, 100MB sending is also important for binary communication. In small size communication, using Vector&lt;char&gt; is equivalent to current implementation and introduced StreamBuffer achieve x6 times performance improvement. I believe this approach keep or improve performance for all types of communication usages. It never causes regression.

Alexey,
I think you are familiar with mobile platform use cases. Any thoughts?

Kent,
I fixed points you make comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>640344</commentid>
    <comment_count>15</comment_count>
    <who name="Takashi Toyoshima">toyoshim</who>
    <bug_when>2012-06-03 23:19:37 -0700</bug_when>
    <thetext>Kent-san,
There is no objection on this change for a week.
Could you review my last patch again?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>641037</commentid>
    <comment_count>16</comment_count>
      <attachid>144465</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-06-04 17:36:38 -0700</bug_when>
    <thetext>Comment on attachment 144465
Patch

ok</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>641053</commentid>
    <comment_count>17</comment_count>
      <attachid>144465</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-04 17:52:14 -0700</bug_when>
    <thetext>Comment on attachment 144465
Patch

Clearing flags on attachment: 144465

Committed r119446: &lt;http://trac.webkit.org/changeset/119446&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>641054</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-04 17:52:21 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>143808</attachid>
            <date>2012-05-24 06:08:57 -0700</date>
            <delta_ts>2012-05-25 04:09:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-87383-20120524220856.patch</filename>
            <type>text/plain</type>
            <size>6976</size>
            <attacher name="Takashi Toyoshima">toyoshim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE3NjAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmVlZjE4YzFlOThkMDYw
YWZkZmEzMDlkOTJkYTZlYzgzM2JlMmUyOC4uNGVhZWE3NzE5MDEwMzMxN2RjZTM0NGJhNWE1NDJj
NmRkMThiOTM5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDEyLTA1LTI0ICBUYWth
c2hpIFRveW9zaGltYSAgPHRveW9zaGltQGNocm9taXVtLm9yZz4KKworICAgICAgICBbV2ViU29j
a2V0XSBTZW5kIHJlcXVpcmVzIHN1cGVyIGxpbmVhciB0aW1lIGFnYWluc3QgZGF0YSBzaXplCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NzM4MworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2gg
aXMgb25seSBmb3Igb3B0aW1pemF0aW9uLiBObyBuZXcgdGVzdHMgYXJlIG5lZWRlZC4KKyAgICAg
ICAgSW1wbGVtZW50IGN1c3RvbSBidWZmZXIgY2xhc3MgYW5kIHVzZSBpdCBpbnN0ZWFkIG9mIFZl
Y3RvcjxjaGFyPi4KKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFu
ZGxlQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlNvY2tl
dFN0cmVhbUhhbmRsZUJhc2U6OkJ1ZmZlcjo6QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNv
Y2tldFN0cmVhbUhhbmRsZUJhc2U6OkJ1ZmZlcjo6fkJ1ZmZlcik6CisgICAgICAgIChXZWJDb3Jl
OjpTb2NrZXRTdHJlYW1IYW5kbGVCYXNlOjpCdWZmZXI6OmFwcGVuZCk6CisgICAgICAgIChXZWJD
b3JlOjpTb2NrZXRTdHJlYW1IYW5kbGVCYXNlOjpCdWZmZXI6OmNvbnN1bWUpOgorICAgICAgICAo
V2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlQmFzZTo6QnVmZmVyOjpoZWFkRGF0YSk6CisgICAg
ICAgIChXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGVCYXNlOjpCdWZmZXI6OmhlYWRTaXplKToK
KyAgICAgICAgKFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZUJhc2U6OnNlbmRQZW5kaW5nRGF0
YSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGVCYXNlLmg6
CisgICAgICAgIChCbG9jayk6CisgICAgICAgIChXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGVC
YXNlOjpCbG9jazo6c2V0UHJldik6CisgICAgICAgIChXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5k
bGVCYXNlOjpCbG9jazo6c2V0TmV4dCk6CisgICAgICAgIChXZWJDb3JlOjpTb2NrZXRTdHJlYW1I
YW5kbGVCYXNlOjpCbG9jazo6cHJldik6CisgICAgICAgIChXZWJDb3JlOjpTb2NrZXRTdHJlYW1I
YW5kbGVCYXNlOjpCbG9jazo6bmV4dCk6CisgICAgICAgIChCdWZmZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6U29ja2V0U3RyZWFtSGFuZGxlQmFzZTo6QnVmZmVyOjppc0VtcHR5KToKKyAgICAgICAg
KFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZUJhc2U6OkJ1ZmZlcjo6c2l6ZSk6CisgICAgICAg
IChTb2NrZXRTdHJlYW1IYW5kbGVCYXNlKToKKwogMjAxMi0wNS0xOCAgVnNldm9sb2QgVmxhc292
ICA8dnNldmlrQGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBBZGQgcmVz
b3VyY2UgdG8gVUlTb3VyY2VDb2RlIGNvbnN0cnVjdG9yLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGVCYXNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5jcHAKaW5k
ZXggM2JhMzNmMzhkYjY5OTEzYTBkOTMyN2JkZWRlNmJmYjVhZTQyNjBhMC4uZDAwZmJhZTJiNDg4
ODhkNDkyMWY0YWZiNDQ1NGQ2YWI3OGRiNDQ4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGVCYXNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZUJhc2UuY3BwCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxMSBHb29nbGUgSW5jLiAg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiAg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
QEAgLTM2LDggKzM2LDYyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY29uc3QgdW5zaWdu
ZWQgaW50IHZlY3RvckNvYWxlc2NpbmdTaXplID0gNDA5NjsKIGNvbnN0IHVuc2lnbmVkIGludCBi
dWZmZXJTaXplID0gMTAwICogMTAyNCAqIDEwMjQ7CiAKK1NvY2tldFN0cmVhbUhhbmRsZUJhc2U6
OkJ1ZmZlcjo6QnVmZmVyKCkKKyAgICA6IG1fc2l6ZSgwKQorICAgICwgbV9vZmZzZXQoMCkKK3sK
K30KKworU29ja2V0U3RyZWFtSGFuZGxlQmFzZTo6QnVmZmVyOjp+QnVmZmVyKCkKK3sKKyAgICB3
aGlsZSAoQmxvY2sqIGJsb2NrID0gbV9idWZmZXIucmVtb3ZlSGVhZCgpKQorICAgICAgICBkZWxl
dGUgYmxvY2s7Cit9CisKK3ZvaWQgU29ja2V0U3RyZWFtSGFuZGxlQmFzZTo6QnVmZmVyOjphcHBl
bmQoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKK3sKKyAgICBCbG9jayogdGFpbCA9IG1f
YnVmZmVyLnRhaWwoKTsKKyAgICBpZiAodGFpbCAmJiB0YWlsLT5zaXplKCkgKyBsZW5ndGggPD0g
dmVjdG9yQ29hbGVzY2luZ1NpemUpCisgICAgICAgIHRhaWwtPmFwcGVuZChkYXRhLCBsZW5ndGgp
OworICAgIGVsc2UgeworICAgICAgICBCbG9jayogYmxvY2sgPSBuZXcgQmxvY2soKTsKKyAgICAg
ICAgYmxvY2stPmFwcGVuZChkYXRhLCBsZW5ndGgpOworICAgICAgICBtX2J1ZmZlci5hcHBlbmQo
YmxvY2spOworICAgIH0KKyAgICBtX3NpemUgKz0gbGVuZ3RoOworfQorCit2b2lkIFNvY2tldFN0
cmVhbUhhbmRsZUJhc2U6OkJ1ZmZlcjo6Y29uc3VtZShpbnQgbGVuZ3RoKQoreworICAgIEJsb2Nr
KiBoZWFkID0gbV9idWZmZXIuaGVhZCgpOworICAgIEFTU0VSVChoZWFkKTsKKyAgICBtX3NpemUg
LT0gbGVuZ3RoOworICAgIG1fb2Zmc2V0ICs9IGxlbmd0aDsKKyAgICBBU1NFUlQobV9vZmZzZXQg
PD0gaGVhZC0+c2l6ZSgpKTsKKyAgICBpZiAobV9vZmZzZXQgPT0gaGVhZC0+c2l6ZSgpKSB7Cisg
ICAgICAgIG1fb2Zmc2V0ID0gMDsKKyAgICAgICAgZGVsZXRlIG1fYnVmZmVyLnJlbW92ZUhlYWQo
KTsKKyAgICB9Cit9CisKK2NvbnN0IGNoYXIqIFNvY2tldFN0cmVhbUhhbmRsZUJhc2U6OkJ1ZmZl
cjo6aGVhZERhdGEoKSBjb25zdAoreworICAgIEJsb2NrKiBoZWFkID0gbV9idWZmZXIuaGVhZCgp
OworICAgIEFTU0VSVChoZWFkKTsKKyAgICByZXR1cm4gaGVhZC0+ZGF0YSgpICsgbV9vZmZzZXQ7
Cit9CisKK3NpemVfdCBTb2NrZXRTdHJlYW1IYW5kbGVCYXNlOjpCdWZmZXI6OmhlYWRTaXplKCkg
Y29uc3QKK3sKKyAgICBCbG9jayogaGVhZCA9IG1fYnVmZmVyLmhlYWQoKTsKKyAgICBBU1NFUlQo
aGVhZCk7CisgICAgcmV0dXJuIGhlYWQtPnNpemUoKSAtIG1fb2Zmc2V0OworfQorCisKIFNvY2tl
dFN0cmVhbUhhbmRsZUJhc2U6OlNvY2tldFN0cmVhbUhhbmRsZUJhc2UoY29uc3QgS1VSTCYgdXJs
LCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQqIGNsaWVudCkKICAgICA6IG1fdXJsKHVybCkKICAg
ICAsIG1fY2xpZW50KGNsaWVudCkKQEAgLTExNywxMyArMTcxLDE1IEBAIGJvb2wgU29ja2V0U3Ry
ZWFtSGFuZGxlQmFzZTo6c2VuZFBlbmRpbmdEYXRhKCkKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgfQogICAgIH0KLSAgICBpbnQgYnl0ZXNXcml0dGVuID0gcGxhdGZvcm1TZW5k
KG1fYnVmZmVyLmRhdGEoKSwgbV9idWZmZXIuc2l6ZSgpKTsKLSAgICBpZiAoYnl0ZXNXcml0dGVu
IDw9IDApCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBWZWN0b3I8Y2hhcj4gcmVtYWluaW5n
RGF0YTsKLSAgICBBU1NFUlQobV9idWZmZXIuc2l6ZSgpIC0gYnl0ZXNXcml0dGVuIDw9IGJ1ZmZl
clNpemUpOwotICAgIHJlbWFpbmluZ0RhdGEuYXBwZW5kKG1fYnVmZmVyLmRhdGEoKSArIGJ5dGVz
V3JpdHRlbiwgbV9idWZmZXIuc2l6ZSgpIC0gYnl0ZXNXcml0dGVuKTsKLSAgICBtX2J1ZmZlci5z
d2FwKHJlbWFpbmluZ0RhdGEpOworICAgIGJvb2wgcGVuZGluZzsKKyAgICBkbyB7CisgICAgICAg
IGludCBieXRlc1dyaXR0ZW4gPSBwbGF0Zm9ybVNlbmQobV9idWZmZXIuaGVhZERhdGEoKSwgbV9i
dWZmZXIuaGVhZFNpemUoKSk7CisgICAgICAgIHBlbmRpbmcgPSBieXRlc1dyaXR0ZW4gIT0gc3Rh
dGljX2Nhc3Q8aW50PihtX2J1ZmZlci5oZWFkU2l6ZSgpKTsKKyAgICAgICAgaWYgKGJ5dGVzV3Jp
dHRlbiA8PSAwKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBBU1NFUlQobV9i
dWZmZXIuc2l6ZSgpIC0gYnl0ZXNXcml0dGVuIDw9IGJ1ZmZlclNpemUpOworICAgICAgICBtX2J1
ZmZlci5jb25zdW1lKGJ5dGVzV3JpdHRlbik7CisgICAgfSB3aGlsZSAoIXBlbmRpbmcgJiYgIW1f
YnVmZmVyLmlzRW1wdHkoKSk7CiAgICAgaWYgKG1fY2xpZW50KQogICAgICAgICBtX2NsaWVudC0+
ZGlkVXBkYXRlQnVmZmVyZWRBbW91bnQoc3RhdGljX2Nhc3Q8U29ja2V0U3RyZWFtSGFuZGxlKj4o
dGhpcyksIGJ1ZmZlcmVkQW1vdW50KCkpOwogICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGVCYXNlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZUJhc2Uu
aAppbmRleCBlZjc2MmIyMmI5OGM4NTJmMGZlMTFhZWRlNmRhYTQ2YTE0YTNkMTU4Li5jMTkwMWE1
MGFjNjgyY2FjNGQyMTYzMzkyMjM3NTFmYWFkZjQ0OTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZUJhc2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZUJhc2UuaApAQCAt
MSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuICBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuICBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtMzQs
NiArMzQsNyBAQAogCiAjaW5jbHVkZSAiS1VSTC5oIgogCisjaW5jbHVkZSA8d3RmL0RvdWJseUxp
bmtlZExpc3QuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKQEAgLTU2LDYgKzU3LDMyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBz
ZXRDbGllbnQoU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50Kik7CiAKICAgICBwcm90ZWN0ZWQ6Cisg
ICAgICAgIGNsYXNzIEJsb2NrIDogcHVibGljIFZlY3RvcjxjaGFyPiB7CisgICAgICAgIHB1Ymxp
YzoKKyAgICAgICAgICAgIHZvaWQgc2V0UHJldihCbG9jayogcHJldikgeyBtX3ByZXYgPSBwcmV2
OyB9CisgICAgICAgICAgICB2b2lkIHNldE5leHQoQmxvY2sqIG5leHQpIHsgbV9uZXh0ID0gbmV4
dDsgfQorICAgICAgICAgICAgQmxvY2sqIHByZXYoKSB7IHJldHVybiBtX3ByZXY7IH07CisgICAg
ICAgICAgICBCbG9jayogbmV4dCgpIHsgcmV0dXJuIG1fbmV4dDsgfTsKKyAgICAgICAgcHJpdmF0
ZToKKyAgICAgICAgICAgIEJsb2NrKiBtX3ByZXY7CisgICAgICAgICAgICBCbG9jayogbV9uZXh0
OworICAgICAgICB9OworICAgICAgICBjbGFzcyBCdWZmZXIgeworICAgICAgICBwdWJsaWM6Cisg
ICAgICAgICAgICBCdWZmZXIoKTsKKyAgICAgICAgICAgIH5CdWZmZXIoKTsKKyAgICAgICAgICAg
IGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFzaXplKCk7IH0KKyAgICAgICAgICAgIHZv
aWQgYXBwZW5kKGNvbnN0IGNoYXIqLCBpbnQpOworICAgICAgICAgICAgdm9pZCBjb25zdW1lKGlu
dCk7CisgICAgICAgICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQor
ICAgICAgICAgICAgY29uc3QgY2hhciogaGVhZERhdGEoKSBjb25zdDsKKyAgICAgICAgICAgIHNp
emVfdCBoZWFkU2l6ZSgpIGNvbnN0OworICAgICAgICBwcml2YXRlOgorICAgICAgICAgICAgc2l6
ZV90IG1fc2l6ZTsKKyAgICAgICAgICAgIHNpemVfdCBtX29mZnNldDsKKyAgICAgICAgICAgIERv
dWJseUxpbmtlZExpc3Q8QmxvY2s+IG1fYnVmZmVyOworICAgICAgICB9OworCiAgICAgICAgIFNv
Y2tldFN0cmVhbUhhbmRsZUJhc2UoY29uc3QgS1VSTCYsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVu
dCopOwogCiAgICAgICAgIGJvb2wgc2VuZFBlbmRpbmdEYXRhKCk7CkBAIC02NCw3ICs5MSw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBLVVJMIG1fdXJsOwogICAgICAgICBTb2Nr
ZXRTdHJlYW1IYW5kbGVDbGllbnQqIG1fY2xpZW50OwotICAgICAgICBWZWN0b3I8Y2hhcj4gbV9i
dWZmZXI7CisgICAgICAgIEJ1ZmZlciBtX2J1ZmZlcjsKICAgICAgICAgU29ja2V0U3RyZWFtU3Rh
dGUgbV9zdGF0ZTsKICAgICB9OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>144041</attachid>
            <date>2012-05-25 04:09:47 -0700</date>
            <delta_ts>2012-05-25 05:54:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-87383-20120525200946.patch</filename>
            <type>text/plain</type>
            <size>8778</size>
            <attacher name="Takashi Toyoshima">toyoshim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE3NjAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDE4OThhMmFhNzljMzZjM2QwNTVlOGY3
NTk0OWE1ZGI1NDJiNWZkZGMuLjI3NjdlNGVhZTkyOGVjNWJjMmZjZTg2YzM2MzI4MzdmNmU2ZjE1
ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTItMDUtMjUgIFRha2FzaGkgVG95b3NoaW1hICA8
dG95b3NoaW1AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtXZWJTb2NrZXRdIFNlbmQgcmVxdWly
ZXMgc3VwZXIgbGluZWFyIHRpbWUgYWdhaW5zdCBkYXRhIHNpemUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg3MzgzCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvU3RyZWFtQnVmZmVyLmg6IEFkZGVk
LgorICAgICAgICAoV1RGKToKKyAgICAgICAgKFN0cmVhbUJ1ZmZlcik6CisgICAgICAgIChXVEY6
OlN0cmVhbUJ1ZmZlcjo6U3RyZWFtQnVmZmVyKToKKyAgICAgICAgKFdURjo6U3RyZWFtQnVmZmVy
Ojp+U3RyZWFtQnVmZmVyKToKKyAgICAgICAgKFdURjo6U3RyZWFtQnVmZmVyOjppc0VtcHR5KToK
KyAgICAgICAgKFdURjo6U3RyZWFtQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAoV1RGOjpTdHJl
YW1CdWZmZXI6OmNvbnN1bWUpOgorICAgICAgICAoV1RGOjpTdHJlYW1CdWZmZXI6OnNpemUpOgor
ICAgICAgICAoV1RGOjpTdHJlYW1CdWZmZXI6OmZpcnN0QmxvY2tEYXRhKToKKyAgICAgICAgKFdU
Rjo6U3RyZWFtQnVmZmVyOjpmaXJzdEJsb2NrU2l6ZSk6CisKIDIwMTItMDUtMTYgIEdlb2ZmcmV5
IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBUaGlzIGlzIG5vdCBhIGpva2U6
IDMuN1ggc3BlZWR1cCBmcm9tIHJlbW92aW5nIGEgY2FsbCB0byBzbGVlcApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4
IDZlZWYxOGMxZTk4ZDA2MGFmZGZhMzA5ZDkyZGE2ZWM4MzNiZTJlMjguLjcwNGRhMjEwNGI2NTAx
ZmI1Yjg3Yjg2ZDY0YThmYTZhNGQ0ZjM0NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAor
MjAxMi0wNS0yNSAgVGFrYXNoaSBUb3lvc2hpbWEgIDx0b3lvc2hpbUBjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgW1dlYlNvY2tldF0gU2VuZCByZXF1aXJlcyBzdXBlciBsaW5lYXIgdGltZSBhZ2Fp
bnN0IGRhdGEgc2l6ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9ODczODMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBXZWJTb2NrZXQgc2VuZCBvcGVyYXRpb24gcmVxdWlyZXMgc3VwZXIgbGluZWFyIHRpbWUg
dG8gc2VuZCBkYXRhCisgICAgICAgIGFnYWluc3QgZGF0YSBzaXplLiBUaGlzIGlzIGJlY2F1c2Ug
cmVtb3Zpbmcgc2VudCBkYXRhIGluIFZlY3RvcjxjaGFyPgorICAgICAgICBhbHdheXMgcmVxdWly
ZXMgZGF0YSBjb3B5LgorICAgICAgICBJbnRyb2R1Y2VkIHd0Zi9TdHJlYW1CdWZmZXIgcmVhbGl6
ZXMgTyhuKSBidWZmZXIgb3BlcmF0aW9ucy4KKyAgICAgICAgVGhpcyBwYXRjaCBpcyBvbmx5IGZv
ciBvcHRpbWl6YXRpb24uIE5vIG5ldyB0ZXN0cyBhcmUgbmVlZGVkLgorCisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGVCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNvY2tldFN0cmVhbUhhbmRsZUJhc2U6OnNlbmRQZW5kaW5nRGF0YSk6CisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGVCYXNlLmg6CisgICAgICAgIChTb2Nr
ZXRTdHJlYW1IYW5kbGVCYXNlKToKKwogMjAxMi0wNS0xOCAgVnNldm9sb2QgVmxhc292ICA8dnNl
dmlrQGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBBZGQgcmVzb3VyY2Ug
dG8gVUlTb3VyY2VDb2RlIGNvbnN0cnVjdG9yLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
U3RyZWFtQnVmZmVyLmggYi9Tb3VyY2UvV1RGL3d0Zi9TdHJlYW1CdWZmZXIuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li41YjcyYzIwZmFlNjlhZDhmNzQ3ZWQwZTBkODhmZjg4ZWMzYWFhY2U0Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dURi93dGYvU3RyZWFtQnVmZmVyLmgKQEAgLTAsMCArMSwxMTMgQEAKKy8q
CisqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
KgorKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorKiBtZXQ6CisqCisqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQorKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisqIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyogZGlzdHJpYnV0aW9u
LgorKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCisqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisqCisqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyog
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorKiBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisq
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyovCisKKyNpZm5kZWYgV1RGX1N0cmVhbUJ1ZmZlcl9oCisjZGVm
aW5lIFdURl9TdHJlYW1CdWZmZXJfaAorCisjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CisjaW5jbHVk
ZSA8d3RmL0ZpeGVkQXJyYXkuaD4KKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8
d3RmL1Bhc3NPd25QdHIuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBULCBzaXplX3QgQmxvY2tTaXplPiBjbGFzcyBTdHJlYW1CdWZmZXIgeworcHVibGljOgorICAg
IHR5cGVkZWYgRml4ZWRBcnJheTxULCBCbG9ja1NpemU+IEJsb2NrOworICAgIFN0cmVhbUJ1ZmZl
cigpCisgICAgICAgIDogbV9zaXplKDApCisgICAgICAgICwgbV9yZWFkT2Zmc2V0KDApCisgICAg
ICAgICwgbV93cml0ZU9mZnNldCgwKQorICAgIHsKKyAgICB9CisgICAgflN0cmVhbUJ1ZmZlcigp
CisgICAgeworICAgIH0KKyAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhc2l6ZSgp
OyB9CisgICAgdm9pZCBhcHBlbmQoY29uc3QgVCogZGF0YSwgc2l6ZV90IHNpemUpCisgICAgewor
ICAgICAgICBpZiAoIXNpemUpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgbV9zaXpl
ICs9IHNpemU7CisgICAgICAgIHdoaWxlIChzaXplKSB7CisgICAgICAgICAgICBpZiAoIW1fd3Jp
dGVPZmZzZXQpIHsKKyAgICAgICAgICAgICAgICBPd25QdHI8QmxvY2s+IGJsb2NrID0gYWRvcHRQ
dHIobmV3IEJsb2NrKTsKKyAgICAgICAgICAgICAgICBtX2J1ZmZlci5hcHBlbmQoYmxvY2sucmVs
ZWFzZSgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHNpemVfdCBjb3B5U2l6ZSA9IG1p
bihCbG9ja1NpemUgLSBtX3dyaXRlT2Zmc2V0LCBzaXplKTsKKyAgICAgICAgICAgIFQqIGJ1ZmZl
ciA9IG1fYnVmZmVyLmxhc3QoKS0+ZGF0YSgpOworICAgICAgICAgICAgbWVtY3B5KCZidWZmZXJb
bV93cml0ZU9mZnNldF0sIGRhdGEsIGNvcHlTaXplICogc2l6ZW9mKFQpKTsKKyAgICAgICAgICAg
IG1fd3JpdGVPZmZzZXQgKz0gY29weVNpemU7CisgICAgICAgICAgICBpZiAobV93cml0ZU9mZnNl
dCA9PSBCbG9ja1NpemUpCisgICAgICAgICAgICAgICAgbV93cml0ZU9mZnNldCA9IDA7CisgICAg
ICAgICAgICBkYXRhICs9IGNvcHlTaXplOworICAgICAgICAgICAgc2l6ZSAtPSBjb3B5U2l6ZTsK
KyAgICAgICAgfQorICAgIH0KKyAgICB2b2lkIGNvbnN1bWUoc2l6ZV90IHNpemUpCisgICAgewor
ICAgICAgICBBU1NFUlQobV9zaXplID49IHNpemUpOworICAgICAgICBBU1NFUlQobV9yZWFkT2Zm
c2V0ICsgc2l6ZSA8PSBCbG9ja1NpemUpOworICAgICAgICBtX3JlYWRPZmZzZXQgKz0gc2l6ZTsK
KyAgICAgICAgbV9zaXplIC09IHNpemU7CisgICAgICAgIGlmIChtX3JlYWRPZmZzZXQgPT0gQmxv
Y2tTaXplKSB7CisgICAgICAgICAgICBtX3JlYWRPZmZzZXQgPSAwOworICAgICAgICAgICAgbV9i
dWZmZXIucmVtb3ZlRmlyc3QoKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBzaXplX3Qgc2l6ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQorICAgIGNvbnN0IFQqIGZpcnN0QmxvY2tEYXRhKCkg
Y29uc3QKKyAgICB7CisgICAgICAgIGlmIChtX3NpemUpCisgICAgICAgICAgICByZXR1cm4gJm1f
YnVmZmVyLmZpcnN0KCktPmRhdGEoKVttX3JlYWRPZmZzZXRdOworICAgICAgICByZXR1cm4gMDsK
KyAgICB9CisgICAgc2l6ZV90IGZpcnN0QmxvY2tTaXplKCkgY29uc3QKKyAgICB7CisgICAgICAg
IGlmICghbV9zaXplKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIGlmIChtX2J1ZmZl
ci5zaXplKCkgPT0gMSkKKyAgICAgICAgICAgIHJldHVybiBtX3dyaXRlT2Zmc2V0IC0gbV9yZWFk
T2Zmc2V0OworICAgICAgICByZXR1cm4gQmxvY2tTaXplIC0gbV9yZWFkT2Zmc2V0OworICAgIH0K
KworcHJpdmF0ZToKKyAgICBzaXplX3QgbV9zaXplOworICAgIHNpemVfdCBtX3JlYWRPZmZzZXQ7
CisgICAgc2l6ZV90IG1fd3JpdGVPZmZzZXQ7CisgICAgRGVxdWU8T3duUHRyPEJsb2NrPiA+IG1f
YnVmZmVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKK3VzaW5nIFdURjo6U3RyZWFtQnVm
ZmVyOworCisjZW5kaWYgLy8gV1RGX1N0cmVhbUJ1ZmZlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZUJhc2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGVCYXNlLmNwcApp
bmRleCAzYmEzM2YzOGRiNjk5MTNhMGQ5MzI3YmRlZGU2YmZiNWFlNDI2MGEwLi5jMGZjMWE3Zjk3
ZmY5NDJlMDAwM2QyNmYyODgxNjQ3M2FjN2ZkMDZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZUJhc2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5jcHAKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDExIEdvb2dsZSBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQpAQCAtMTE3LDEzICsxMTcsMTUgQEAgYm9vbCBTb2NrZXRTdHJlYW1IYW5kbGVCYXNlOjpzZW5k
UGVuZGluZ0RhdGEoKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAg
fQotICAgIGludCBieXRlc1dyaXR0ZW4gPSBwbGF0Zm9ybVNlbmQobV9idWZmZXIuZGF0YSgpLCBt
X2J1ZmZlci5zaXplKCkpOwotICAgIGlmIChieXRlc1dyaXR0ZW4gPD0gMCkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIFZlY3RvcjxjaGFyPiByZW1haW5pbmdEYXRhOwotICAgIEFTU0VSVCht
X2J1ZmZlci5zaXplKCkgLSBieXRlc1dyaXR0ZW4gPD0gYnVmZmVyU2l6ZSk7Ci0gICAgcmVtYWlu
aW5nRGF0YS5hcHBlbmQobV9idWZmZXIuZGF0YSgpICsgYnl0ZXNXcml0dGVuLCBtX2J1ZmZlci5z
aXplKCkgLSBieXRlc1dyaXR0ZW4pOwotICAgIG1fYnVmZmVyLnN3YXAocmVtYWluaW5nRGF0YSk7
CisgICAgYm9vbCBwZW5kaW5nOworICAgIGRvIHsKKyAgICAgICAgaW50IGJ5dGVzV3JpdHRlbiA9
IHBsYXRmb3JtU2VuZChtX2J1ZmZlci5maXJzdEJsb2NrRGF0YSgpLCBtX2J1ZmZlci5maXJzdEJs
b2NrU2l6ZSgpKTsKKyAgICAgICAgcGVuZGluZyA9IGJ5dGVzV3JpdHRlbiAhPSBzdGF0aWNfY2Fz
dDxpbnQ+KG1fYnVmZmVyLmZpcnN0QmxvY2tTaXplKCkpOworICAgICAgICBpZiAoYnl0ZXNXcml0
dGVuIDw9IDApCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIEFTU0VSVChtX2J1
ZmZlci5zaXplKCkgLSBieXRlc1dyaXR0ZW4gPD0gYnVmZmVyU2l6ZSk7CisgICAgICAgIG1fYnVm
ZmVyLmNvbnN1bWUoYnl0ZXNXcml0dGVuKTsKKyAgICB9IHdoaWxlICghcGVuZGluZyAmJiAhbV9i
dWZmZXIuaXNFbXB0eSgpKTsKICAgICBpZiAobV9jbGllbnQpCiAgICAgICAgIG1fY2xpZW50LT5k
aWRVcGRhdGVCdWZmZXJlZEFtb3VudChzdGF0aWNfY2FzdDxTb2NrZXRTdHJlYW1IYW5kbGUqPih0
aGlzKSwgYnVmZmVyZWRBbW91bnQoKSk7CiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZUJhc2UuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5o
CmluZGV4IGVmNzYyYjIyYjk4Yzg1MmYwZmUxMWFlZGU2ZGFhNDZhMTRhM2QxNTguLjNmZWI0YjJm
ZDc5Y2NiNzljNzY5YmFkZmM1ZDExYmM4YzViZjUyYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5oCkBAIC0x
LDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0zNCw3
ICszNCw3IEBACiAKICNpbmNsdWRlICJLVVJMLmgiCiAKLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CisjaW5jbHVkZSA8d3RmL1N0cmVhbUJ1ZmZlci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
QEAgLTY0LDcgKzY0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIEtVUkwgbV91
cmw7CiAgICAgICAgIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCogbV9jbGllbnQ7Ci0gICAgICAg
IFZlY3RvcjxjaGFyPiBtX2J1ZmZlcjsKKyAgICAgICAgU3RyZWFtQnVmZmVyPGNoYXIsIDQwOTY+
IG1fYnVmZmVyOwogICAgICAgICBTb2NrZXRTdHJlYW1TdGF0ZSBtX3N0YXRlOwogICAgIH07CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>144050</attachid>
            <date>2012-05-25 05:54:41 -0700</date>
            <delta_ts>2012-05-28 00:02:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-87383-20120525215440.patch</filename>
            <type>text/plain</type>
            <size>8784</size>
            <attacher name="Takashi Toyoshima">toyoshim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE3NjAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDE4OThhMmFhNzljMzZjM2QwNTVlOGY3
NTk0OWE1ZGI1NDJiNWZkZGMuLjI3NjdlNGVhZTkyOGVjNWJjMmZjZTg2YzM2MzI4MzdmNmU2ZjE1
ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTItMDUtMjUgIFRha2FzaGkgVG95b3NoaW1hICA8
dG95b3NoaW1AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtXZWJTb2NrZXRdIFNlbmQgcmVxdWly
ZXMgc3VwZXIgbGluZWFyIHRpbWUgYWdhaW5zdCBkYXRhIHNpemUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg3MzgzCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvU3RyZWFtQnVmZmVyLmg6IEFkZGVk
LgorICAgICAgICAoV1RGKToKKyAgICAgICAgKFN0cmVhbUJ1ZmZlcik6CisgICAgICAgIChXVEY6
OlN0cmVhbUJ1ZmZlcjo6U3RyZWFtQnVmZmVyKToKKyAgICAgICAgKFdURjo6U3RyZWFtQnVmZmVy
Ojp+U3RyZWFtQnVmZmVyKToKKyAgICAgICAgKFdURjo6U3RyZWFtQnVmZmVyOjppc0VtcHR5KToK
KyAgICAgICAgKFdURjo6U3RyZWFtQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAoV1RGOjpTdHJl
YW1CdWZmZXI6OmNvbnN1bWUpOgorICAgICAgICAoV1RGOjpTdHJlYW1CdWZmZXI6OnNpemUpOgor
ICAgICAgICAoV1RGOjpTdHJlYW1CdWZmZXI6OmZpcnN0QmxvY2tEYXRhKToKKyAgICAgICAgKFdU
Rjo6U3RyZWFtQnVmZmVyOjpmaXJzdEJsb2NrU2l6ZSk6CisKIDIwMTItMDUtMTYgIEdlb2ZmcmV5
IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBUaGlzIGlzIG5vdCBhIGpva2U6
IDMuN1ggc3BlZWR1cCBmcm9tIHJlbW92aW5nIGEgY2FsbCB0byBzbGVlcApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4
IDZlZWYxOGMxZTk4ZDA2MGFmZGZhMzA5ZDkyZGE2ZWM4MzNiZTJlMjguLjcwNGRhMjEwNGI2NTAx
ZmI1Yjg3Yjg2ZDY0YThmYTZhNGQ0ZjM0NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAor
MjAxMi0wNS0yNSAgVGFrYXNoaSBUb3lvc2hpbWEgIDx0b3lvc2hpbUBjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgW1dlYlNvY2tldF0gU2VuZCByZXF1aXJlcyBzdXBlciBsaW5lYXIgdGltZSBhZ2Fp
bnN0IGRhdGEgc2l6ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9ODczODMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBXZWJTb2NrZXQgc2VuZCBvcGVyYXRpb24gcmVxdWlyZXMgc3VwZXIgbGluZWFyIHRpbWUg
dG8gc2VuZCBkYXRhCisgICAgICAgIGFnYWluc3QgZGF0YSBzaXplLiBUaGlzIGlzIGJlY2F1c2Ug
cmVtb3Zpbmcgc2VudCBkYXRhIGluIFZlY3RvcjxjaGFyPgorICAgICAgICBhbHdheXMgcmVxdWly
ZXMgZGF0YSBjb3B5LgorICAgICAgICBJbnRyb2R1Y2VkIHd0Zi9TdHJlYW1CdWZmZXIgcmVhbGl6
ZXMgTyhuKSBidWZmZXIgb3BlcmF0aW9ucy4KKyAgICAgICAgVGhpcyBwYXRjaCBpcyBvbmx5IGZv
ciBvcHRpbWl6YXRpb24uIE5vIG5ldyB0ZXN0cyBhcmUgbmVlZGVkLgorCisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGVCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNvY2tldFN0cmVhbUhhbmRsZUJhc2U6OnNlbmRQZW5kaW5nRGF0YSk6CisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGVCYXNlLmg6CisgICAgICAgIChTb2Nr
ZXRTdHJlYW1IYW5kbGVCYXNlKToKKwogMjAxMi0wNS0xOCAgVnNldm9sb2QgVmxhc292ICA8dnNl
dmlrQGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBBZGQgcmVzb3VyY2Ug
dG8gVUlTb3VyY2VDb2RlIGNvbnN0cnVjdG9yLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
U3RyZWFtQnVmZmVyLmggYi9Tb3VyY2UvV1RGL3d0Zi9TdHJlYW1CdWZmZXIuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li41YjcyYzIwZmFlNjlhZDhmNzQ3ZWQwZTBkODhmZjg4ZWMzYWFhY2U0Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dURi93dGYvU3RyZWFtQnVmZmVyLmgKQEAgLTAsMCArMSwxMTMgQEAKKy8q
CisqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
KgorKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorKiBtZXQ6CisqCisqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQorKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisqIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyogZGlzdHJpYnV0aW9u
LgorKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCisqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisqCisqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyog
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorKiBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisq
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyovCisKKyNpZm5kZWYgV1RGX1N0cmVhbUJ1ZmZlcl9oCisjZGVm
aW5lIFdURl9TdHJlYW1CdWZmZXJfaAorCisjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CisjaW5jbHVk
ZSA8d3RmL0ZpeGVkQXJyYXkuaD4KKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8
d3RmL1Bhc3NPd25QdHIuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBULCBzaXplX3QgQmxvY2tTaXplPiBjbGFzcyBTdHJlYW1CdWZmZXIgeworcHVibGljOgorICAg
IHR5cGVkZWYgRml4ZWRBcnJheTxULCBCbG9ja1NpemU+IEJsb2NrOworICAgIFN0cmVhbUJ1ZmZl
cigpCisgICAgICAgIDogbV9zaXplKDApCisgICAgICAgICwgbV9yZWFkT2Zmc2V0KDApCisgICAg
ICAgICwgbV93cml0ZU9mZnNldCgwKQorICAgIHsKKyAgICB9CisgICAgflN0cmVhbUJ1ZmZlcigp
CisgICAgeworICAgIH0KKyAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhc2l6ZSgp
OyB9CisgICAgdm9pZCBhcHBlbmQoY29uc3QgVCogZGF0YSwgc2l6ZV90IHNpemUpCisgICAgewor
ICAgICAgICBpZiAoIXNpemUpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgbV9zaXpl
ICs9IHNpemU7CisgICAgICAgIHdoaWxlIChzaXplKSB7CisgICAgICAgICAgICBpZiAoIW1fd3Jp
dGVPZmZzZXQpIHsKKyAgICAgICAgICAgICAgICBPd25QdHI8QmxvY2s+IGJsb2NrID0gYWRvcHRQ
dHIobmV3IEJsb2NrKTsKKyAgICAgICAgICAgICAgICBtX2J1ZmZlci5hcHBlbmQoYmxvY2sucmVs
ZWFzZSgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHNpemVfdCBjb3B5U2l6ZSA9IG1p
bihCbG9ja1NpemUgLSBtX3dyaXRlT2Zmc2V0LCBzaXplKTsKKyAgICAgICAgICAgIFQqIGJ1ZmZl
ciA9IG1fYnVmZmVyLmxhc3QoKS0+ZGF0YSgpOworICAgICAgICAgICAgbWVtY3B5KCZidWZmZXJb
bV93cml0ZU9mZnNldF0sIGRhdGEsIGNvcHlTaXplICogc2l6ZW9mKFQpKTsKKyAgICAgICAgICAg
IG1fd3JpdGVPZmZzZXQgKz0gY29weVNpemU7CisgICAgICAgICAgICBpZiAobV93cml0ZU9mZnNl
dCA9PSBCbG9ja1NpemUpCisgICAgICAgICAgICAgICAgbV93cml0ZU9mZnNldCA9IDA7CisgICAg
ICAgICAgICBkYXRhICs9IGNvcHlTaXplOworICAgICAgICAgICAgc2l6ZSAtPSBjb3B5U2l6ZTsK
KyAgICAgICAgfQorICAgIH0KKyAgICB2b2lkIGNvbnN1bWUoc2l6ZV90IHNpemUpCisgICAgewor
ICAgICAgICBBU1NFUlQobV9zaXplID49IHNpemUpOworICAgICAgICBBU1NFUlQobV9yZWFkT2Zm
c2V0ICsgc2l6ZSA8PSBCbG9ja1NpemUpOworICAgICAgICBtX3JlYWRPZmZzZXQgKz0gc2l6ZTsK
KyAgICAgICAgbV9zaXplIC09IHNpemU7CisgICAgICAgIGlmIChtX3JlYWRPZmZzZXQgPT0gQmxv
Y2tTaXplKSB7CisgICAgICAgICAgICBtX3JlYWRPZmZzZXQgPSAwOworICAgICAgICAgICAgbV9i
dWZmZXIucmVtb3ZlRmlyc3QoKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBzaXplX3Qgc2l6ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQorICAgIGNvbnN0IFQqIGZpcnN0QmxvY2tEYXRhKCkg
Y29uc3QKKyAgICB7CisgICAgICAgIGlmIChtX3NpemUpCisgICAgICAgICAgICByZXR1cm4gJm1f
YnVmZmVyLmZpcnN0KCktPmRhdGEoKVttX3JlYWRPZmZzZXRdOworICAgICAgICByZXR1cm4gMDsK
KyAgICB9CisgICAgc2l6ZV90IGZpcnN0QmxvY2tTaXplKCkgY29uc3QKKyAgICB7CisgICAgICAg
IGlmICghbV9zaXplKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIGlmIChtX2J1ZmZl
ci5zaXplKCkgPT0gMSkKKyAgICAgICAgICAgIHJldHVybiBtX3dyaXRlT2Zmc2V0IC0gbV9yZWFk
T2Zmc2V0OworICAgICAgICByZXR1cm4gQmxvY2tTaXplIC0gbV9yZWFkT2Zmc2V0OworICAgIH0K
KworcHJpdmF0ZToKKyAgICBzaXplX3QgbV9zaXplOworICAgIHNpemVfdCBtX3JlYWRPZmZzZXQ7
CisgICAgc2l6ZV90IG1fd3JpdGVPZmZzZXQ7CisgICAgRGVxdWU8T3duUHRyPEJsb2NrPiA+IG1f
YnVmZmVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKK3VzaW5nIFdURjo6U3RyZWFtQnVm
ZmVyOworCisjZW5kaWYgLy8gV1RGX1N0cmVhbUJ1ZmZlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZUJhc2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGVCYXNlLmNwcApp
bmRleCAzYmEzM2YzOGRiNjk5MTNhMGQ5MzI3YmRlZGU2YmZiNWFlNDI2MGEwLi5jMGZjMWE3Zjk3
ZmY5NDJlMDAwM2QyNmYyODgxNjQ3M2FjN2ZkMDZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZUJhc2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5jcHAKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDExIEdvb2dsZSBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQpAQCAtMTE3LDEzICsxMTcsMTUgQEAgYm9vbCBTb2NrZXRTdHJlYW1IYW5kbGVCYXNlOjpzZW5k
UGVuZGluZ0RhdGEoKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAg
fQotICAgIGludCBieXRlc1dyaXR0ZW4gPSBwbGF0Zm9ybVNlbmQobV9idWZmZXIuZGF0YSgpLCBt
X2J1ZmZlci5zaXplKCkpOwotICAgIGlmIChieXRlc1dyaXR0ZW4gPD0gMCkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIFZlY3RvcjxjaGFyPiByZW1haW5pbmdEYXRhOwotICAgIEFTU0VSVCht
X2J1ZmZlci5zaXplKCkgLSBieXRlc1dyaXR0ZW4gPD0gYnVmZmVyU2l6ZSk7Ci0gICAgcmVtYWlu
aW5nRGF0YS5hcHBlbmQobV9idWZmZXIuZGF0YSgpICsgYnl0ZXNXcml0dGVuLCBtX2J1ZmZlci5z
aXplKCkgLSBieXRlc1dyaXR0ZW4pOwotICAgIG1fYnVmZmVyLnN3YXAocmVtYWluaW5nRGF0YSk7
CisgICAgYm9vbCBwZW5kaW5nOworICAgIGRvIHsKKyAgICAgICAgaW50IGJ5dGVzV3JpdHRlbiA9
IHBsYXRmb3JtU2VuZChtX2J1ZmZlci5maXJzdEJsb2NrRGF0YSgpLCBtX2J1ZmZlci5maXJzdEJs
b2NrU2l6ZSgpKTsKKyAgICAgICAgcGVuZGluZyA9IGJ5dGVzV3JpdHRlbiAhPSBzdGF0aWNfY2Fz
dDxpbnQ+KG1fYnVmZmVyLmZpcnN0QmxvY2tTaXplKCkpOworICAgICAgICBpZiAoYnl0ZXNXcml0
dGVuIDw9IDApCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIEFTU0VSVChtX2J1
ZmZlci5zaXplKCkgLSBieXRlc1dyaXR0ZW4gPD0gYnVmZmVyU2l6ZSk7CisgICAgICAgIG1fYnVm
ZmVyLmNvbnN1bWUoYnl0ZXNXcml0dGVuKTsKKyAgICB9IHdoaWxlICghcGVuZGluZyAmJiAhbV9i
dWZmZXIuaXNFbXB0eSgpKTsKICAgICBpZiAobV9jbGllbnQpCiAgICAgICAgIG1fY2xpZW50LT5k
aWRVcGRhdGVCdWZmZXJlZEFtb3VudChzdGF0aWNfY2FzdDxTb2NrZXRTdHJlYW1IYW5kbGUqPih0
aGlzKSwgYnVmZmVyZWRBbW91bnQoKSk7CiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZUJhc2UuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5o
CmluZGV4IGVmNzYyYjIyYjk4Yzg1MmYwZmUxMWFlZGU2ZGFhNDZhMTRhM2QxNTguLjUzNzIyNmMy
YWM0NDA0N2Y3MGI5ZDM3YjlmMWMxNzQzNTNmZGJhM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5oCkBAIC0x
LDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0zNCw3
ICszNCw3IEBACiAKICNpbmNsdWRlICJLVVJMLmgiCiAKLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CisjaW5jbHVkZSA8d3RmL1N0cmVhbUJ1ZmZlci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
QEAgLTY0LDcgKzY0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIEtVUkwgbV91
cmw7CiAgICAgICAgIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCogbV9jbGllbnQ7Ci0gICAgICAg
IFZlY3RvcjxjaGFyPiBtX2J1ZmZlcjsKKyAgICAgICAgU3RyZWFtQnVmZmVyPGNoYXIsIDEyOCAq
IDEwMjQ+IG1fYnVmZmVyOwogICAgICAgICBTb2NrZXRTdHJlYW1TdGF0ZSBtX3N0YXRlOwogICAg
IH07CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>144284</attachid>
            <date>2012-05-28 00:02:06 -0700</date>
            <delta_ts>2012-05-29 00:19:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-87383-20120528160205.patch</filename>
            <type>text/plain</type>
            <size>8785</size>
            <attacher name="Takashi Toyoshima">toyoshim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE3NjAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDE4OThhMmFhNzljMzZjM2QwNTVlOGY3
NTk0OWE1ZGI1NDJiNWZkZGMuLjI3NjdlNGVhZTkyOGVjNWJjMmZjZTg2YzM2MzI4MzdmNmU2ZjE1
ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTItMDUtMjUgIFRha2FzaGkgVG95b3NoaW1hICA8
dG95b3NoaW1AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtXZWJTb2NrZXRdIFNlbmQgcmVxdWly
ZXMgc3VwZXIgbGluZWFyIHRpbWUgYWdhaW5zdCBkYXRhIHNpemUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg3MzgzCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvU3RyZWFtQnVmZmVyLmg6IEFkZGVk
LgorICAgICAgICAoV1RGKToKKyAgICAgICAgKFN0cmVhbUJ1ZmZlcik6CisgICAgICAgIChXVEY6
OlN0cmVhbUJ1ZmZlcjo6U3RyZWFtQnVmZmVyKToKKyAgICAgICAgKFdURjo6U3RyZWFtQnVmZmVy
Ojp+U3RyZWFtQnVmZmVyKToKKyAgICAgICAgKFdURjo6U3RyZWFtQnVmZmVyOjppc0VtcHR5KToK
KyAgICAgICAgKFdURjo6U3RyZWFtQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAoV1RGOjpTdHJl
YW1CdWZmZXI6OmNvbnN1bWUpOgorICAgICAgICAoV1RGOjpTdHJlYW1CdWZmZXI6OnNpemUpOgor
ICAgICAgICAoV1RGOjpTdHJlYW1CdWZmZXI6OmZpcnN0QmxvY2tEYXRhKToKKyAgICAgICAgKFdU
Rjo6U3RyZWFtQnVmZmVyOjpmaXJzdEJsb2NrU2l6ZSk6CisKIDIwMTItMDUtMTYgIEdlb2ZmcmV5
IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBUaGlzIGlzIG5vdCBhIGpva2U6
IDMuN1ggc3BlZWR1cCBmcm9tIHJlbW92aW5nIGEgY2FsbCB0byBzbGVlcApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4
IDZlZWYxOGMxZTk4ZDA2MGFmZGZhMzA5ZDkyZGE2ZWM4MzNiZTJlMjguLjcwNGRhMjEwNGI2NTAx
ZmI1Yjg3Yjg2ZDY0YThmYTZhNGQ0ZjM0NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAor
MjAxMi0wNS0yNSAgVGFrYXNoaSBUb3lvc2hpbWEgIDx0b3lvc2hpbUBjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgW1dlYlNvY2tldF0gU2VuZCByZXF1aXJlcyBzdXBlciBsaW5lYXIgdGltZSBhZ2Fp
bnN0IGRhdGEgc2l6ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9ODczODMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBXZWJTb2NrZXQgc2VuZCBvcGVyYXRpb24gcmVxdWlyZXMgc3VwZXIgbGluZWFyIHRpbWUg
dG8gc2VuZCBkYXRhCisgICAgICAgIGFnYWluc3QgZGF0YSBzaXplLiBUaGlzIGlzIGJlY2F1c2Ug
cmVtb3Zpbmcgc2VudCBkYXRhIGluIFZlY3RvcjxjaGFyPgorICAgICAgICBhbHdheXMgcmVxdWly
ZXMgZGF0YSBjb3B5LgorICAgICAgICBJbnRyb2R1Y2VkIHd0Zi9TdHJlYW1CdWZmZXIgcmVhbGl6
ZXMgTyhuKSBidWZmZXIgb3BlcmF0aW9ucy4KKyAgICAgICAgVGhpcyBwYXRjaCBpcyBvbmx5IGZv
ciBvcHRpbWl6YXRpb24uIE5vIG5ldyB0ZXN0cyBhcmUgbmVlZGVkLgorCisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGVCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNvY2tldFN0cmVhbUhhbmRsZUJhc2U6OnNlbmRQZW5kaW5nRGF0YSk6CisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGVCYXNlLmg6CisgICAgICAgIChTb2Nr
ZXRTdHJlYW1IYW5kbGVCYXNlKToKKwogMjAxMi0wNS0xOCAgVnNldm9sb2QgVmxhc292ICA8dnNl
dmlrQGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBBZGQgcmVzb3VyY2Ug
dG8gVUlTb3VyY2VDb2RlIGNvbnN0cnVjdG9yLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
U3RyZWFtQnVmZmVyLmggYi9Tb3VyY2UvV1RGL3d0Zi9TdHJlYW1CdWZmZXIuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li41YjcyYzIwZmFlNjlhZDhmNzQ3ZWQwZTBkODhmZjg4ZWMzYWFhY2U0Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dURi93dGYvU3RyZWFtQnVmZmVyLmgKQEAgLTAsMCArMSwxMTMgQEAKKy8q
CisqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
KgorKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorKiBtZXQ6CisqCisqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQorKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisqIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyogZGlzdHJpYnV0aW9u
LgorKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCisqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisqCisqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyog
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorKiBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisq
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyovCisKKyNpZm5kZWYgV1RGX1N0cmVhbUJ1ZmZlcl9oCisjZGVm
aW5lIFdURl9TdHJlYW1CdWZmZXJfaAorCisjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CisjaW5jbHVk
ZSA8d3RmL0ZpeGVkQXJyYXkuaD4KKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8
d3RmL1Bhc3NPd25QdHIuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBULCBzaXplX3QgQmxvY2tTaXplPiBjbGFzcyBTdHJlYW1CdWZmZXIgeworcHVibGljOgorICAg
IHR5cGVkZWYgRml4ZWRBcnJheTxULCBCbG9ja1NpemU+IEJsb2NrOworICAgIFN0cmVhbUJ1ZmZl
cigpCisgICAgICAgIDogbV9zaXplKDApCisgICAgICAgICwgbV9yZWFkT2Zmc2V0KDApCisgICAg
ICAgICwgbV93cml0ZU9mZnNldCgwKQorICAgIHsKKyAgICB9CisgICAgflN0cmVhbUJ1ZmZlcigp
CisgICAgeworICAgIH0KKyAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhc2l6ZSgp
OyB9CisgICAgdm9pZCBhcHBlbmQoY29uc3QgVCogZGF0YSwgc2l6ZV90IHNpemUpCisgICAgewor
ICAgICAgICBpZiAoIXNpemUpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgbV9zaXpl
ICs9IHNpemU7CisgICAgICAgIHdoaWxlIChzaXplKSB7CisgICAgICAgICAgICBpZiAoIW1fd3Jp
dGVPZmZzZXQpIHsKKyAgICAgICAgICAgICAgICBPd25QdHI8QmxvY2s+IGJsb2NrID0gYWRvcHRQ
dHIobmV3IEJsb2NrKTsKKyAgICAgICAgICAgICAgICBtX2J1ZmZlci5hcHBlbmQoYmxvY2sucmVs
ZWFzZSgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHNpemVfdCBjb3B5U2l6ZSA9IG1p
bihCbG9ja1NpemUgLSBtX3dyaXRlT2Zmc2V0LCBzaXplKTsKKyAgICAgICAgICAgIFQqIGJ1ZmZl
ciA9IG1fYnVmZmVyLmxhc3QoKS0+ZGF0YSgpOworICAgICAgICAgICAgbWVtY3B5KCZidWZmZXJb
bV93cml0ZU9mZnNldF0sIGRhdGEsIGNvcHlTaXplICogc2l6ZW9mKFQpKTsKKyAgICAgICAgICAg
IG1fd3JpdGVPZmZzZXQgKz0gY29weVNpemU7CisgICAgICAgICAgICBpZiAobV93cml0ZU9mZnNl
dCA9PSBCbG9ja1NpemUpCisgICAgICAgICAgICAgICAgbV93cml0ZU9mZnNldCA9IDA7CisgICAg
ICAgICAgICBkYXRhICs9IGNvcHlTaXplOworICAgICAgICAgICAgc2l6ZSAtPSBjb3B5U2l6ZTsK
KyAgICAgICAgfQorICAgIH0KKyAgICB2b2lkIGNvbnN1bWUoc2l6ZV90IHNpemUpCisgICAgewor
ICAgICAgICBBU1NFUlQobV9zaXplID49IHNpemUpOworICAgICAgICBBU1NFUlQobV9yZWFkT2Zm
c2V0ICsgc2l6ZSA8PSBCbG9ja1NpemUpOworICAgICAgICBtX3JlYWRPZmZzZXQgKz0gc2l6ZTsK
KyAgICAgICAgbV9zaXplIC09IHNpemU7CisgICAgICAgIGlmIChtX3JlYWRPZmZzZXQgPT0gQmxv
Y2tTaXplKSB7CisgICAgICAgICAgICBtX3JlYWRPZmZzZXQgPSAwOworICAgICAgICAgICAgbV9i
dWZmZXIucmVtb3ZlRmlyc3QoKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBzaXplX3Qgc2l6ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQorICAgIGNvbnN0IFQqIGZpcnN0QmxvY2tEYXRhKCkg
Y29uc3QKKyAgICB7CisgICAgICAgIGlmIChtX3NpemUpCisgICAgICAgICAgICByZXR1cm4gJm1f
YnVmZmVyLmZpcnN0KCktPmRhdGEoKVttX3JlYWRPZmZzZXRdOworICAgICAgICByZXR1cm4gMDsK
KyAgICB9CisgICAgc2l6ZV90IGZpcnN0QmxvY2tTaXplKCkgY29uc3QKKyAgICB7CisgICAgICAg
IGlmICghbV9zaXplKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIGlmIChtX2J1ZmZl
ci5zaXplKCkgPT0gMSkKKyAgICAgICAgICAgIHJldHVybiBtX3dyaXRlT2Zmc2V0IC0gbV9yZWFk
T2Zmc2V0OworICAgICAgICByZXR1cm4gQmxvY2tTaXplIC0gbV9yZWFkT2Zmc2V0OworICAgIH0K
KworcHJpdmF0ZToKKyAgICBzaXplX3QgbV9zaXplOworICAgIHNpemVfdCBtX3JlYWRPZmZzZXQ7
CisgICAgc2l6ZV90IG1fd3JpdGVPZmZzZXQ7CisgICAgRGVxdWU8T3duUHRyPEJsb2NrPiA+IG1f
YnVmZmVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKK3VzaW5nIFdURjo6U3RyZWFtQnVm
ZmVyOworCisjZW5kaWYgLy8gV1RGX1N0cmVhbUJ1ZmZlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZUJhc2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGVCYXNlLmNwcApp
bmRleCAzYmEzM2YzOGRiNjk5MTNhMGQ5MzI3YmRlZGU2YmZiNWFlNDI2MGEwLi5jMGZjMWE3Zjk3
ZmY5NDJlMDAwM2QyNmYyODgxNjQ3M2FjN2ZkMDZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZUJhc2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5jcHAKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDExIEdvb2dsZSBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQpAQCAtMTE3LDEzICsxMTcsMTUgQEAgYm9vbCBTb2NrZXRTdHJlYW1IYW5kbGVCYXNlOjpzZW5k
UGVuZGluZ0RhdGEoKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAg
fQotICAgIGludCBieXRlc1dyaXR0ZW4gPSBwbGF0Zm9ybVNlbmQobV9idWZmZXIuZGF0YSgpLCBt
X2J1ZmZlci5zaXplKCkpOwotICAgIGlmIChieXRlc1dyaXR0ZW4gPD0gMCkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIFZlY3RvcjxjaGFyPiByZW1haW5pbmdEYXRhOwotICAgIEFTU0VSVCht
X2J1ZmZlci5zaXplKCkgLSBieXRlc1dyaXR0ZW4gPD0gYnVmZmVyU2l6ZSk7Ci0gICAgcmVtYWlu
aW5nRGF0YS5hcHBlbmQobV9idWZmZXIuZGF0YSgpICsgYnl0ZXNXcml0dGVuLCBtX2J1ZmZlci5z
aXplKCkgLSBieXRlc1dyaXR0ZW4pOwotICAgIG1fYnVmZmVyLnN3YXAocmVtYWluaW5nRGF0YSk7
CisgICAgYm9vbCBwZW5kaW5nOworICAgIGRvIHsKKyAgICAgICAgaW50IGJ5dGVzV3JpdHRlbiA9
IHBsYXRmb3JtU2VuZChtX2J1ZmZlci5maXJzdEJsb2NrRGF0YSgpLCBtX2J1ZmZlci5maXJzdEJs
b2NrU2l6ZSgpKTsKKyAgICAgICAgcGVuZGluZyA9IGJ5dGVzV3JpdHRlbiAhPSBzdGF0aWNfY2Fz
dDxpbnQ+KG1fYnVmZmVyLmZpcnN0QmxvY2tTaXplKCkpOworICAgICAgICBpZiAoYnl0ZXNXcml0
dGVuIDw9IDApCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIEFTU0VSVChtX2J1
ZmZlci5zaXplKCkgLSBieXRlc1dyaXR0ZW4gPD0gYnVmZmVyU2l6ZSk7CisgICAgICAgIG1fYnVm
ZmVyLmNvbnN1bWUoYnl0ZXNXcml0dGVuKTsKKyAgICB9IHdoaWxlICghcGVuZGluZyAmJiAhbV9i
dWZmZXIuaXNFbXB0eSgpKTsKICAgICBpZiAobV9jbGllbnQpCiAgICAgICAgIG1fY2xpZW50LT5k
aWRVcGRhdGVCdWZmZXJlZEFtb3VudChzdGF0aWNfY2FzdDxTb2NrZXRTdHJlYW1IYW5kbGUqPih0
aGlzKSwgYnVmZmVyZWRBbW91bnQoKSk7CiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZUJhc2UuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5o
CmluZGV4IGVmNzYyYjIyYjk4Yzg1MmYwZmUxMWFlZGU2ZGFhNDZhMTRhM2QxNTguLmI2MjVmZjVm
ZWNmNzQ1NjI5ODljMzA5ZWNmZTY5YjM0OWU2MDU5NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5oCkBAIC0x
LDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0zNCw3
ICszNCw3IEBACiAKICNpbmNsdWRlICJLVVJMLmgiCiAKLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CisjaW5jbHVkZSA8d3RmL1N0cmVhbUJ1ZmZlci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
QEAgLTY0LDcgKzY0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIEtVUkwgbV91
cmw7CiAgICAgICAgIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCogbV9jbGllbnQ7Ci0gICAgICAg
IFZlY3RvcjxjaGFyPiBtX2J1ZmZlcjsKKyAgICAgICAgU3RyZWFtQnVmZmVyPGNoYXIsIDEwMjQg
KiAxMDI0PiBtX2J1ZmZlcjsKICAgICAgICAgU29ja2V0U3RyZWFtU3RhdGUgbV9zdGF0ZTsKICAg
ICB9OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>144465</attachid>
            <date>2012-05-29 00:19:44 -0700</date>
            <delta_ts>2012-06-04 17:52:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-87383-20120529161943.patch</filename>
            <type>text/plain</type>
            <size>8765</size>
            <attacher name="Takashi Toyoshima">toyoshim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE4NTYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGRmODQ0NzE3N2Q3OTZhYWJjOTcyMjgy
Mjg1ODE1YzhhNjE4MmM0MTQuLmE3NDk2MTM1ZjE5ZTQ4YTE0NzE4N2U4YmJhYmY0YzliMzNjODhh
MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTItMDUtMjUgIFRha2FzaGkgVG95b3NoaW1hICA8
dG95b3NoaW1AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtXZWJTb2NrZXRdIFNlbmQgcmVxdWly
ZXMgc3VwZXIgbGluZWFyIHRpbWUgYWdhaW5zdCBkYXRhIHNpemUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg3MzgzCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvU3RyZWFtQnVmZmVyLmg6IEFkZGVk
LgorICAgICAgICAoV1RGKToKKyAgICAgICAgKFN0cmVhbUJ1ZmZlcik6CisgICAgICAgIChXVEY6
OlN0cmVhbUJ1ZmZlcjo6U3RyZWFtQnVmZmVyKToKKyAgICAgICAgKFdURjo6U3RyZWFtQnVmZmVy
Ojp+U3RyZWFtQnVmZmVyKToKKyAgICAgICAgKFdURjo6U3RyZWFtQnVmZmVyOjppc0VtcHR5KToK
KyAgICAgICAgKFdURjo6U3RyZWFtQnVmZmVyOjphcHBlbmQpOgorICAgICAgICAoV1RGOjpTdHJl
YW1CdWZmZXI6OmNvbnN1bWUpOgorICAgICAgICAoV1RGOjpTdHJlYW1CdWZmZXI6OnNpemUpOgor
ICAgICAgICAoV1RGOjpTdHJlYW1CdWZmZXI6OmZpcnN0QmxvY2tEYXRhKToKKyAgICAgICAgKFdU
Rjo6U3RyZWFtQnVmZmVyOjpmaXJzdEJsb2NrU2l6ZSk6CisKIDIwMTItMDUtMjQgIEFsbGFuIFNh
bmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBub2tpYS5jb20+CiAKICAgICAgICAgY3RpX3Zt
X3Rocm93IGdldHMga2lja2VkIG91dCBieSBnY2MgNC42IC1mbHRvCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzRi
NTAyNjEwMWFkNzc2NzlmNjgwOGM0NzgyODc4ODZjYjIzNWMwMi4uMjU4MTA0OWRkOGRjMmVjM2Q0
ZDM3YWZlZGYxNzE2MGJkYTcyOTlhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEy
LTA1LTI1ICBUYWthc2hpIFRveW9zaGltYSAgPHRveW9zaGltQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBbV2ViU29ja2V0XSBTZW5kIHJlcXVpcmVzIHN1cGVyIGxpbmVhciB0aW1lIGFnYWluc3Qg
ZGF0YSBzaXplCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD04NzM4MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFdlYlNvY2tldCBzZW5kIG9wZXJhdGlvbiByZXF1aXJlcyBzdXBlciBsaW5lYXIgdGltZSB0byBz
ZW5kIGRhdGEKKyAgICAgICAgYWdhaW5zdCBkYXRhIHNpemUuIFRoaXMgaXMgYmVjYXVzZSByZW1v
dmluZyBzZW50IGRhdGEgaW4gVmVjdG9yPGNoYXI+CisgICAgICAgIGFsd2F5cyByZXF1aXJlcyBk
YXRhIGNvcHkuCisgICAgICAgIEludHJvZHVjZWQgd3RmL1N0cmVhbUJ1ZmZlciByZWFsaXplcyBP
KG4pIGJ1ZmZlciBvcGVyYXRpb25zLgorICAgICAgICBUaGlzIHBhdGNoIGlzIG9ubHkgZm9yIG9w
dGltaXphdGlvbi4gTm8gbmV3IHRlc3RzIGFyZSBuZWVkZWQuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZUJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U29ja2V0U3RyZWFtSGFuZGxlQmFzZTo6c2VuZFBlbmRpbmdEYXRhKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZUJhc2UuaDoKKyAgICAgICAgKFNvY2tldFN0
cmVhbUhhbmRsZUJhc2UpOgorCiAyMDEyLTA1LTI1ICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxl
LmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTEyMTU1LgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvU3RyZWFtQnVmZmVyLmggYi9Tb3VyY2UvV1RGL3d0Zi9TdHJl
YW1CdWZmZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZGQyNTQ5ZDZjYWVkOTg4MTcyZmE3NjhkYTRjMzMyMzM3
NjM2NjY0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvU3RyZWFtQnVmZmVyLmgK
QEAgLTAsMCArMSwxMTkgQEAKKy8qCisqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorKgorKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorKiBt
ZXQ6CisqCisqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyogICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorKiBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisq
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKKyogZGlzdHJpYnV0aW9uLgorKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisqIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisqCisqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKyogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKKyogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisqIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisqIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAorKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCisqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyogVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyovCisKKyNpZm5kZWYgV1RG
X1N0cmVhbUJ1ZmZlcl9oCisjZGVmaW5lIFdURl9TdHJlYW1CdWZmZXJfaAorCisjaW5jbHVkZSA8
d3RmL0RlcXVlLmg+CisjaW5jbHVkZSA8d3RmL0ZpeGVkQXJyYXkuaD4KKyNpbmNsdWRlIDx3dGYv
T3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKworbmFtZXNwYWNlIFdURiB7
CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCBzaXplX3QgQmxvY2tTaXplPiBjbGFzcyBTdHJlYW1C
dWZmZXIgeworcHJpdmF0ZToKKyAgICB0eXBlZGVmIFZlY3RvcjxUPiBCbG9jazsKK3B1YmxpYzoK
KyAgICBTdHJlYW1CdWZmZXIoKQorICAgICAgICA6IG1fc2l6ZSgwKQorICAgICAgICAsIG1fcmVh
ZE9mZnNldCgwKQorICAgIHsKKyAgICB9CisKKyAgICB+U3RyZWFtQnVmZmVyKCkKKyAgICB7Cisg
ICAgfQorCisgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIXNpemUoKTsgfQorCisg
ICAgdm9pZCBhcHBlbmQoY29uc3QgVCogZGF0YSwgc2l6ZV90IHNpemUpCisgICAgeworICAgICAg
ICBpZiAoIXNpemUpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgbV9zaXplICs9IHNp
emU7CisgICAgICAgIHdoaWxlIChzaXplKSB7CisgICAgICAgICAgICBpZiAoIW1fYnVmZmVyLnNp
emUoKSB8fCBtX2J1ZmZlci5sYXN0KCktPnNpemUoKSA9PSBCbG9ja1NpemUpCisgICAgICAgICAg
ICAgICAgbV9idWZmZXIuYXBwZW5kKGFkb3B0UHRyKG5ldyBCbG9jaykpOworICAgICAgICAgICAg
c2l6ZV90IGFwcGVuZFNpemUgPSBtaW4oQmxvY2tTaXplIC0gbV9idWZmZXIubGFzdCgpLT5zaXpl
KCksIHNpemUpOworICAgICAgICAgICAgbV9idWZmZXIubGFzdCgpLT5hcHBlbmQoZGF0YSwgYXBw
ZW5kU2l6ZSk7CisgICAgICAgICAgICBkYXRhICs9IGFwcGVuZFNpemU7CisgICAgICAgICAgICBz
aXplIC09IGFwcGVuZFNpemU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBUaGlzIGZ1bmN0
aW9uIGNvbnN1bWUgZGF0YSBpbiB0aGUgZmlzdCBibG9jay4KKyAgICAvLyBTcGVjaWZpZWQgc2l6
ZSBtdXN0IGJlIGxlc3MgdGhhbiBvdmVyIGVxdWFsIHRvIGZpcnN0QmxvY2tTaXplKCkuCisgICAg
dm9pZCBjb25zdW1lKHNpemVfdCBzaXplKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fc2l6ZSA+
PSBzaXplKTsKKyAgICAgICAgaWYgKCFtX3NpemUpCisgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgQVNTRVJUKG1fYnVmZmVyLnNpemUoKSA+IDApOworICAgICAgICBBU1NFUlQobV9yZWFk
T2Zmc2V0ICsgc2l6ZSA8PSBtX2J1ZmZlci5maXJzdCgpLT5zaXplKCkpOworICAgICAgICBtX3Jl
YWRPZmZzZXQgKz0gc2l6ZTsKKyAgICAgICAgbV9zaXplIC09IHNpemU7CisgICAgICAgIGlmICht
X3JlYWRPZmZzZXQgPj0gbV9idWZmZXIuZmlyc3QoKS0+c2l6ZSgpKSB7CisgICAgICAgICAgICBt
X3JlYWRPZmZzZXQgPSAwOworICAgICAgICAgICAgbV9idWZmZXIucmVtb3ZlRmlyc3QoKTsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXpl
OyB9CisKKyAgICBjb25zdCBUKiBmaXJzdEJsb2NrRGF0YSgpIGNvbnN0CisgICAgeworICAgICAg
ICBpZiAoIW1fc2l6ZSkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBBU1NFUlQobV9i
dWZmZXIuc2l6ZSgpID4gMCk7CisgICAgICAgIHJldHVybiAmbV9idWZmZXIuZmlyc3QoKS0+ZGF0
YSgpW21fcmVhZE9mZnNldF07CisgICAgfQorCisgICAgc2l6ZV90IGZpcnN0QmxvY2tTaXplKCkg
Y29uc3QKKyAgICB7CisgICAgICAgIGlmICghbV9zaXplKQorICAgICAgICAgICAgcmV0dXJuIDA7
CisgICAgICAgIEFTU0VSVChtX2J1ZmZlci5zaXplKCkgPiAwKTsKKyAgICAgICAgcmV0dXJuIG1f
YnVmZmVyLmZpcnN0KCktPnNpemUoKSAtIG1fcmVhZE9mZnNldDsKKyAgICB9CisKK3ByaXZhdGU6
CisgICAgc2l6ZV90IG1fc2l6ZTsKKyAgICBzaXplX3QgbV9yZWFkT2Zmc2V0OworICAgIERlcXVl
PE93blB0cjxCbG9jaz4gPiBtX2J1ZmZlcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdURgorCit1
c2luZyBXVEY6OlN0cmVhbUJ1ZmZlcjsKKworI2VuZGlmIC8vIFdURl9TdHJlYW1CdWZmZXJfaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1I
YW5kbGVCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3Ry
ZWFtSGFuZGxlQmFzZS5jcHAKaW5kZXggM2JhMzNmMzhkYjY5OTEzYTBkOTMyN2JkZWRlNmJmYjVh
ZTQyNjBhMC4uYzAwNjZlNWRlNmM2NmZlOGZiY2Q1M2RmNWU0MjNhMGYyMzc1ZDkzNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGVC
YXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVh
bUhhbmRsZUJhc2UuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAw
OSwgMjAxMSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAwOSwgMjAxMSwgMjAxMiBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTExNywxMyArMTE3LDE1IEBAIGJv
b2wgU29ja2V0U3RyZWFtSGFuZGxlQmFzZTo6c2VuZFBlbmRpbmdEYXRhKCkKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgIH0KLSAgICBpbnQgYnl0ZXNXcml0dGVuID0g
cGxhdGZvcm1TZW5kKG1fYnVmZmVyLmRhdGEoKSwgbV9idWZmZXIuc2l6ZSgpKTsKLSAgICBpZiAo
Ynl0ZXNXcml0dGVuIDw9IDApCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBWZWN0b3I8Y2hh
cj4gcmVtYWluaW5nRGF0YTsKLSAgICBBU1NFUlQobV9idWZmZXIuc2l6ZSgpIC0gYnl0ZXNXcml0
dGVuIDw9IGJ1ZmZlclNpemUpOwotICAgIHJlbWFpbmluZ0RhdGEuYXBwZW5kKG1fYnVmZmVyLmRh
dGEoKSArIGJ5dGVzV3JpdHRlbiwgbV9idWZmZXIuc2l6ZSgpIC0gYnl0ZXNXcml0dGVuKTsKLSAg
ICBtX2J1ZmZlci5zd2FwKHJlbWFpbmluZ0RhdGEpOworICAgIGJvb2wgcGVuZGluZzsKKyAgICBk
byB7CisgICAgICAgIGludCBieXRlc1dyaXR0ZW4gPSBwbGF0Zm9ybVNlbmQobV9idWZmZXIuZmly
c3RCbG9ja0RhdGEoKSwgbV9idWZmZXIuZmlyc3RCbG9ja1NpemUoKSk7CisgICAgICAgIHBlbmRp
bmcgPSBieXRlc1dyaXR0ZW4gIT0gc3RhdGljX2Nhc3Q8aW50PihtX2J1ZmZlci5maXJzdEJsb2Nr
U2l6ZSgpKTsKKyAgICAgICAgaWYgKGJ5dGVzV3JpdHRlbiA8PSAwKQorICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICBBU1NFUlQobV9idWZmZXIuc2l6ZSgpIC0gYnl0ZXNXcml0dGVu
IDw9IGJ1ZmZlclNpemUpOworICAgICAgICBtX2J1ZmZlci5jb25zdW1lKGJ5dGVzV3JpdHRlbik7
CisgICAgfSB3aGlsZSAoIXBlbmRpbmcgJiYgIW1fYnVmZmVyLmlzRW1wdHkoKSk7CiAgICAgaWYg
KG1fY2xpZW50KQogICAgICAgICBtX2NsaWVudC0+ZGlkVXBkYXRlQnVmZmVyZWRBbW91bnQoc3Rh
dGljX2Nhc3Q8U29ja2V0U3RyZWFtSGFuZGxlKj4odGhpcyksIGJ1ZmZlcmVkQW1vdW50KCkpOwog
ICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9Tb2NrZXRTdHJlYW1IYW5kbGVCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZUJhc2UuaAppbmRleCBlZjc2MmIyMmI5OGM4NTJmMGZl
MTFhZWRlNmRhYTQ2YTE0YTNkMTU4Li43ZGVkNGRjYjIyNjZkZTNhZWMwYTUwODY5YTE5ZDhmNDUz
ZmEzZjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tl
dFN0cmVhbUhhbmRsZUJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1NvY2tldFN0cmVhbUhhbmRsZUJhc2UuaApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmln
aHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0
IChDKSAyMDA5IEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDA5LCAyMDEyIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtMzQsNyArMzQsNyBAQAogCiAjaW5jbHVk
ZSAiS1VSTC5oIgogCi0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi9TdHJl
YW1CdWZmZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC02NCw3ICs2NCw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBLVVJMIG1fdXJsOwogICAgICAgICBTb2NrZXRT
dHJlYW1IYW5kbGVDbGllbnQqIG1fY2xpZW50OwotICAgICAgICBWZWN0b3I8Y2hhcj4gbV9idWZm
ZXI7CisgICAgICAgIFN0cmVhbUJ1ZmZlcjxjaGFyLCAxMDI0ICogMTAyND4gbV9idWZmZXI7CiAg
ICAgICAgIFNvY2tldFN0cmVhbVN0YXRlIG1fc3RhdGU7CiAgICAgfTsKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>