<?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>110556</bug_id>
          
          <creation_ts>2013-02-21 22:06:42 -0800</creation_ts>
          <short_desc>Update FileReaderLoader to allow specifying a range and reading as a blob.</short_desc>
          <delta_ts>2013-02-26 09:50:07 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>110194</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Zachary Kuznia">zork</reporter>
          <assigned_to name="Zachary Kuznia">zork</assigned_to>
          <cc>ap</cc>
    
    <cc>jberlin</cc>
    
    <cc>kinuko</cc>
    
    <cc>morrita</cc>
    
    <cc>sam</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>839227</commentid>
    <comment_count>0</comment_count>
    <who name="Zachary Kuznia">zork</who>
    <bug_when>2013-02-21 22:06:42 -0800</bug_when>
    <thetext>Update FileReaderLoader to allow specifying a range and reading as a blob.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>839230</commentid>
    <comment_count>1</comment_count>
      <attachid>189681</attachid>
    <who name="Zachary Kuznia">zork</who>
    <bug_when>2013-02-21 22:07:24 -0800</bug_when>
    <thetext>Created attachment 189681
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>839231</commentid>
    <comment_count>2</comment_count>
    <who name="Zachary Kuznia">zork</who>
    <bug_when>2013-02-21 22:08:30 -0800</bug_when>
    <thetext>This is to allow support of the Stream API.  The complete version is at:
https://bugs.webkit.org/show_bug.cgi?id=110194</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>839257</commentid>
    <comment_count>3</comment_count>
      <attachid>189681</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2013-02-21 22:41:43 -0800</bug_when>
    <thetext>Comment on attachment 189681
Patch

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

&gt; Source/WebCore/ChangeLog:3
&gt; +        Update FileReaderLoader to allow specifying a range and reading as a blob.

If this is a part of big change, it is worth mentioning here.

&gt; Source/WebCore/ChangeLog:8
&gt; +        No new tests (OOPS!).

Say something about this or just remove this line. The repo reject this patch otherwise.

&gt; Source/WebCore/fileapi/FileReaderLoader.cpp:57
&gt; +const int kDefaultBufferLength = 32768;

WebKit doesn&apos;t prefix &quot;k&quot; for constants.
Usually it names each global variable like a local variable, but with more verbose name.

&gt; Source/WebCore/fileapi/FileReaderLoader.cpp:95
&gt; +        request.setHTTPHeaderField(&quot;Range&quot;, String(&quot;bytes=&quot;) + String::number(m_rangeStart) + (&quot;-&quot;) + String::number(m_rangeEnd));

There is printf-like method called String::format() which you could use. See Source/WTF/wtf/text/WTFString.h.

&gt; Source/WebCore/fileapi/FileReaderLoader.cpp:147
&gt;      if (length &gt; numeric_limits&lt;unsigned&gt;::max()) {

Does this means that we&apos;re going to allocate numeric_limits&lt;unsigned&gt;::max() bytes of the array before switching to variable-length approach?

&gt; Source/WebCore/fileapi/FileReaderLoader.cpp:285
&gt; +}

Looks like wre&apos;re going to create new Blob instance and copy the data into it  for each blobResult() call, which seems wasteful.
Is this intentional?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>839262</commentid>
    <comment_count>4</comment_count>
      <attachid>189690</attachid>
    <who name="Zachary Kuznia">zork</who>
    <bug_when>2013-02-21 22:57:00 -0800</bug_when>
    <thetext>Created attachment 189690
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>839264</commentid>
    <comment_count>5</comment_count>
    <who name="Zachary Kuznia">zork</who>
    <bug_when>2013-02-21 22:59:31 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 189681 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=189681&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:3
&gt; &gt; +        Update FileReaderLoader to allow specifying a range and reading as a blob.
&gt; 
&gt; If this is a part of big change, it is worth mentioning here.
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:8
&gt; &gt; +        No new tests (OOPS!).
&gt; 
&gt; Say something about this or just remove this line. The repo reject this patch otherwise.

Done.

&gt; 
&gt; &gt; Source/WebCore/fileapi/FileReaderLoader.cpp:57
&gt; &gt; +const int kDefaultBufferLength = 32768;
&gt; 
&gt; WebKit doesn&apos;t prefix &quot;k&quot; for constants.
&gt; Usually it names each global variable like a local variable, but with more verbose name.

Changed to defaultBufferLength

&gt; 
&gt; &gt; Source/WebCore/fileapi/FileReaderLoader.cpp:95
&gt; &gt; +        request.setHTTPHeaderField(&quot;Range&quot;, String(&quot;bytes=&quot;) + String::number(m_rangeStart) + (&quot;-&quot;) + String::number(m_rangeEnd));
&gt; 
&gt; There is printf-like method called String::format() which you could use. See Source/WTF/wtf/text/WTFString.h.

Done.

&gt; 
&gt; &gt; Source/WebCore/fileapi/FileReaderLoader.cpp:147
&gt; &gt;      if (length &gt; numeric_limits&lt;unsigned&gt;::max()) {
&gt; 
&gt; Does this means that we&apos;re going to allocate numeric_limits&lt;unsigned&gt;::max() bytes of the array before switching to variable-length approach?

No.  The variable length method is used if a content length header isn&apos;t received.  The internal buffer can&apos;t be larger than numeric_limits&lt;unsigned&gt;::max(), and so the read fails if that is exceeded.

&gt; 
&gt; &gt; Source/WebCore/fileapi/FileReaderLoader.cpp:285
&gt; &gt; +}
&gt; 
&gt; Looks like wre&apos;re going to create new Blob instance and copy the data into it  for each blobResult() call, which seems wasteful.
&gt; Is this intentional?

Changed it to cache the value.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>839270</commentid>
    <comment_count>6</comment_count>
      <attachid>189690</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2013-02-21 23:09:09 -0800</bug_when>
    <thetext>Comment on attachment 189690
Patch

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

&gt; Source/WebCore/ChangeLog:7
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=110194

It&apos;s better to explicitly say you&apos;ll add tests.

&gt; Source/WebCore/fileapi/FileReaderLoader.cpp:-141
&gt; -        return;

(As we chatted offline) when length &gt; unsigned max we&apos;not returning here but may fail at line 183. This feels weird without the comment why we&apos;re triggering &apos;variableLength&apos; mode. If we have some comments and/or compare the length to the special value when we should trigger &apos;variable&apos; mode that&apos;d be more understandable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>839290</commentid>
    <comment_count>7</comment_count>
      <attachid>189695</attachid>
    <who name="Zachary Kuznia">zork</who>
    <bug_when>2013-02-21 23:25:47 -0800</bug_when>
    <thetext>Created attachment 189695
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>839291</commentid>
    <comment_count>8</comment_count>
    <who name="Zachary Kuznia">zork</who>
    <bug_when>2013-02-21 23:26:17 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 189690 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=189690&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:7
&gt; &gt; +        https://bugs.webkit.org/show_bug.cgi?id=110194
&gt; 
&gt; It&apos;s better to explicitly say you&apos;ll add tests.

Done.

&gt; 
&gt; &gt; Source/WebCore/fileapi/FileReaderLoader.cpp:-141
&gt; &gt; -        return;
&gt; 
&gt; (As we chatted offline) when length &gt; unsigned max we&apos;not returning here but may fail at line 183. This feels weird without the comment why we&apos;re triggering &apos;variableLength&apos; mode. If we have some comments and/or compare the length to the special value when we should trigger &apos;variable&apos; mode that&apos;d be more understandable.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>839292</commentid>
    <comment_count>9</comment_count>
      <attachid>189695</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2013-02-21 23:30:13 -0800</bug_when>
    <thetext>Comment on attachment 189695
Patch

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

&gt; Source/WebCore/fileapi/FileReaderLoader.cpp:189
&gt; +        if (m_variableLength &gt;= numeric_limits&lt;unsigned&gt;::max()) {

This looks wrong?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>839294</commentid>
    <comment_count>10</comment_count>
      <attachid>189697</attachid>
    <who name="Zachary Kuznia">zork</who>
    <bug_when>2013-02-21 23:35:07 -0800</bug_when>
    <thetext>Created attachment 189697
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>839297</commentid>
    <comment_count>11</comment_count>
    <who name="Zachary Kuznia">zork</who>
    <bug_when>2013-02-21 23:35:56 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 189695 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=189695&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/fileapi/FileReaderLoader.cpp:189
&gt; &gt; +        if (m_variableLength &gt;= numeric_limits&lt;unsigned&gt;::max()) {
&gt; 
&gt; This looks wrong?

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>839307</commentid>
    <comment_count>12</comment_count>
      <attachid>189697</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2013-02-21 23:45:37 -0800</bug_when>
    <thetext>Comment on attachment 189697
Patch

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

&gt; Source/WebCore/fileapi/FileReaderLoader.cpp:224
&gt; +        memcpy(static_cast&lt;char*&gt;(newData-&gt;data()), static_cast&lt;char*&gt;(m_rawData-&gt;data()), m_bytesLoaded);

Can we use m_rawData-&gt;slice() instead to create newData?

&gt; Source/WebCore/fileapi/FileReaderLoader.cpp:293
&gt; +        blobData-&gt;appendData(rawData, 0, BlobDataItem::toEndOfFile);

toEndOfFile -&gt; size? (Or is it intentional?)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>839311</commentid>
    <comment_count>13</comment_count>
      <attachid>189702</attachid>
    <who name="Zachary Kuznia">zork</who>
    <bug_when>2013-02-21 23:59:23 -0800</bug_when>
    <thetext>Created attachment 189702
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>839312</commentid>
    <comment_count>14</comment_count>
    <who name="Zachary Kuznia">zork</who>
    <bug_when>2013-02-21 23:59:45 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; (From update of attachment 189697 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=189697&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/fileapi/FileReaderLoader.cpp:224
&gt; &gt; +        memcpy(static_cast&lt;char*&gt;(newData-&gt;data()), static_cast&lt;char*&gt;(m_rawData-&gt;data()), m_bytesLoaded);

Done.

&gt; 
&gt; Can we use m_rawData-&gt;slice() instead to create newData?
&gt; 
&gt; &gt; Source/WebCore/fileapi/FileReaderLoader.cpp:293
&gt; &gt; +        blobData-&gt;appendData(rawData, 0, BlobDataItem::toEndOfFile);
&gt; 
&gt; toEndOfFile -&gt; size? (Or is it intentional?)

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>839313</commentid>
    <comment_count>15</comment_count>
      <attachid>189702</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2013-02-22 00:04:49 -0800</bug_when>
    <thetext>Comment on attachment 189702
Patch

This looks good/reasonable to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>839320</commentid>
    <comment_count>16</comment_count>
      <attachid>189702</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2013-02-22 00:22:19 -0800</bug_when>
    <thetext>Comment on attachment 189702
Patch

Let me stamp this then.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>839337</commentid>
    <comment_count>17</comment_count>
      <attachid>189702</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-22 00:53:19 -0800</bug_when>
    <thetext>Comment on attachment 189702
Patch

Rejecting attachment 189702 from commit-queue.

zork@chromium.org does not have committer permissions according to http://trac.webkit.org/browser/trunk/Tools/Scripts/webkitpy/common/config/committers.py.

- If you do not have committer rights please read http://webkit.org/coding/contributing.html for instructions on how to use bugzilla flags.

- If you have committer rights please correct the error in Tools/Scripts/webkitpy/common/config/committers.py by adding yourself to the file (no review needed).  The commit-queue restarts itself every 2 hours.  After restart the commit-queue will correctly respect your committer rights.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>839346</commentid>
    <comment_count>18</comment_count>
      <attachid>189702</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2013-02-22 01:02:04 -0800</bug_when>
    <thetext>Comment on attachment 189702
Patch

Oops sorry for that. I should&apos;ve set the cq+.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>839396</commentid>
    <comment_count>19</comment_count>
      <attachid>189702</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-22 02:05:25 -0800</bug_when>
    <thetext>Comment on attachment 189702
Patch

Clearing flags on attachment: 189702

Committed r143706: &lt;http://trac.webkit.org/changeset/143706&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>839397</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-22 02:05:30 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>839609</commentid>
    <comment_count>21</comment_count>
    <who name="Jessie Berlin">jberlin</who>
    <bug_when>2013-02-22 08:45:24 -0800</bug_when>
    <thetext>(In reply to comment #20)
&gt; All reviewed patches have been landed.  Closing bug.

I landed a 32 bit build fix in http://trac.webkit.org/changeset/143733.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>839723</commentid>
    <comment_count>22</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-02-22 10:41:02 -0800</bug_when>
    <thetext>&gt; This is to allow support of the Stream API.

This adds a ton of code. Why is it not behind an ENABLE ifdef?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>840338</commentid>
    <comment_count>23</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2013-02-23 01:56:36 -0800</bug_when>
    <thetext>(In reply to comment #22)
&gt; &gt; This is to allow support of the Stream API.
&gt; 

&gt; This adds a ton of code. Why is it not behind an ENABLE ifdef?
Good point. Which flag should we use though.
Is this specific for the stream API? Or is this applicable for non-Stream use?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>841582</commentid>
    <comment_count>24</comment_count>
    <who name="Zachary Kuznia">zork</who>
    <bug_when>2013-02-25 20:42:37 -0800</bug_when>
    <thetext>(In reply to comment #23)
&gt; (In reply to comment #22)
&gt; &gt; &gt; This is to allow support of the Stream API.
&gt; &gt; 
&gt; 
&gt; &gt; This adds a ton of code. Why is it not behind an ENABLE ifdef?
&gt; Good point. Which flag should we use though.
&gt; Is this specific for the stream API? Or is this applicable for non-Stream use?

I&apos;m putting the Stream code behind the ENABLE_STREAM flag.  I deferred the changes to this class that are Stream specific, and will have them protected by the STREAM flag.

Would you like me to wrap setRange() and blobResult() with the flag as well?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>842117</commentid>
    <comment_count>25</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2013-02-26 09:50:07 -0800</bug_when>
    <thetext>&gt; I&apos;m putting the Stream code behind the ENABLE_STREAM flag.  I deferred the changes to this class that are Stream specific, and will have them protected by the STREAM flag.
&gt; 
&gt; Would you like me to wrap setRange() and blobResult() with the flag as well?

Let&apos;s do so. It will clarify that the API is used from the Stream implementation.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>189681</attachid>
            <date>2013-02-21 22:07:24 -0800</date>
            <delta_ts>2013-02-21 22:56:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110556-20130222150344.patch</filename>
            <type>text/plain</type>
            <size>6954</size>
            <attacher name="Zachary Kuznia">zork</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQzNjg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTZlOGEwOGJlZTM4Mjgw
NzJjMjA1MzFmZDFhNGY4ZTc4YmFhNjFkNS4uOWJlYWE2NjliMjNkNGY0YjZjODEzNjczZjEyNWZi
NTZhOWNjZGE4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEzLTAyLTIxICBaYWNo
IEt1em5pYSAgPHpvcmtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFVwZGF0ZSBGaWxlUmVhZGVy
TG9hZGVyIHRvIGFsbG93IHNwZWNpZnlpbmcgYSByYW5nZSBhbmQgcmVhZGluZyBhcyBhIGJsb2Iu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTA1NTYK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcg
dGVzdHMgKE9PUFMhKS4KKworICAgICAgICAqIGZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5jcHA6
CisgICAgICAgICogZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmg6CisKIDIwMTMtMDItMjEgIERp
bWl0cmkgR2xhemtvdiAgPGRnbGF6a292QGNocm9taXVtLm9yZz4KIAogICAgICAgICBTcGxpdCBT
ZWxlY3RvckNoZWNrZXIncyBmYXN0LWNoZWNraW5nIGxvZ2ljIGludG8gaXRzIG93biBjbGFzcy4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuY3BwCmluZGV4IGYyNGNk
YzgyZmJjMjIzMTJhNDQ5N2ZjYjJjMTdjNjRhYmM3YmU4NjMuLjlhOTlkOWU0Y2M5NTQzYzBhMGMx
ODFiNzA0OTViZmNkNjZiYTc2MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkv
RmlsZVJlYWRlckxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVh
ZGVyTG9hZGVyLmNwcApAQCAtNTQsMTMgKzU0LDE5IEBAIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY29uc3QgaW50IGtEZWZhdWx0QnVmZmVyTGVuZ3RoID0g
MzI3Njg7CisKIEZpbGVSZWFkZXJMb2FkZXI6OkZpbGVSZWFkZXJMb2FkZXIoUmVhZFR5cGUgcmVh
ZFR5cGUsIEZpbGVSZWFkZXJMb2FkZXJDbGllbnQqIGNsaWVudCkKICAgICA6IG1fcmVhZFR5cGUo
cmVhZFR5cGUpCiAgICAgLCBtX2NsaWVudChjbGllbnQpCiAgICAgLCBtX2lzUmF3RGF0YUNvbnZl
cnRlZChmYWxzZSkKICAgICAsIG1fc3RyaW5nUmVzdWx0KCIiKQorICAgICwgbV92YXJpYWJsZUxl
bmd0aChmYWxzZSkKICAgICAsIG1fYnl0ZXNMb2FkZWQoMCkKICAgICAsIG1fdG90YWxCeXRlcygw
KQorICAgICwgbV9oYXNSYW5nZShmYWxzZSkKKyAgICAsIG1fcmFuZ2VTdGFydCgwKQorICAgICwg
bV9yYW5nZUVuZCgwKQogICAgICwgbV9lcnJvckNvZGUoMCkKIHsKIH0KQEAgLTg1LDYgKzkxLDgg
QEAgdm9pZCBGaWxlUmVhZGVyTG9hZGVyOjpzdGFydChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0LCBCbG8KICAgICAvLyBDb25zdHJ1Y3QgYW5kIGxvYWQgdGhl
IHJlcXVlc3QuCiAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QobV91cmxGb3JSZWFkaW5nKTsK
ICAgICByZXF1ZXN0LnNldEhUVFBNZXRob2QoIkdFVCIpOworICAgIGlmIChtX2hhc1JhbmdlKQor
ICAgICAgICByZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZCgiUmFuZ2UiLCBTdHJpbmcoImJ5dGVz
PSIpICsgU3RyaW5nOjpudW1iZXIobV9yYW5nZVN0YXJ0KSArICgiLSIpICsgU3RyaW5nOjpudW1i
ZXIobV9yYW5nZUVuZCkpOwogCiAgICAgVGhyZWFkYWJsZUxvYWRlck9wdGlvbnMgb3B0aW9uczsK
ICAgICBvcHRpb25zLnNlbmRMb2FkQ2FsbGJhY2tzID0gU2VuZENhbGxiYWNrczsKQEAgLTEzNyw4
ICsxNDUsMTEgQEAgdm9pZCBGaWxlUmVhZGVyTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UodW5z
aWduZWQgbG9uZywgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYKICAgICAvLyBzbyB0byBjYWxsIEFy
cmF5QnVmZmVyJ3MgY3JlYXRlIGZ1bmN0aW9uLgogICAgIC8vIEZJWE1FOiBTdXBwb3J0IHJlYWRp
bmcgbW9yZSB0aGFuIHRoZSBjdXJyZW50IHNpemUgbGltaXQgb2YgQXJyYXlCdWZmZXIuCiAgICAg
aWYgKGxlbmd0aCA+IG51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpIHsKLSAgICAgICAg
ZmFpbGVkKEZpbGVFcnJvcjo6Tk9UX1JFQURBQkxFX0VSUik7Ci0gICAgICAgIHJldHVybjsKKyAg
ICAgICAgbV92YXJpYWJsZUxlbmd0aCA9IHRydWU7CisgICAgICAgIGlmIChtX2hhc1JhbmdlKQor
ICAgICAgICAgICAgbGVuZ3RoID0gMSArIG1fcmFuZ2VFbmQgLSBtX3JhbmdlU3RhcnQ7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIGxlbmd0aCA9IGtEZWZhdWx0QnVmZmVyTGVuZ3RoOwogICAg
IH0KIAogICAgIEFTU0VSVCghbV9yYXdEYXRhKTsKQEAgLTE2Niw4ICsxNzcsMjIgQEAgdm9pZCBG
aWxlUmVhZGVyTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0
YUxlbmd0aCkKIAogICAgIGludCBsZW5ndGggPSBkYXRhTGVuZ3RoOwogICAgIHVuc2lnbmVkIHJl
bWFpbmluZ0J1ZmZlclNwYWNlID0gbV90b3RhbEJ5dGVzIC0gbV9ieXRlc0xvYWRlZDsKLSAgICBp
ZiAobGVuZ3RoID4gc3RhdGljX2Nhc3Q8bG9uZyBsb25nPihyZW1haW5pbmdCdWZmZXJTcGFjZSkp
Ci0gICAgICAgIGxlbmd0aCA9IHN0YXRpY19jYXN0PGludD4ocmVtYWluaW5nQnVmZmVyU3BhY2Up
OworICAgIGlmIChsZW5ndGggPiBzdGF0aWNfY2FzdDxsb25nIGxvbmc+KHJlbWFpbmluZ0J1ZmZl
clNwYWNlKSkgeworICAgICAgICBpZiAobV92YXJpYWJsZUxlbmd0aCkgeworICAgICAgICAgICAg
dW5zaWduZWQgbG9uZyBsb25nIG5ld0xlbmd0aCA9IG1fdG90YWxCeXRlcyAqIDI7CisgICAgICAg
ICAgICBpZiAobmV3TGVuZ3RoID4gbnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkgewor
ICAgICAgICAgICAgICAgIGZhaWxlZChGaWxlRXJyb3I6Ok5PVF9SRUFEQUJMRV9FUlIpOworICAg
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFJlZlB0cjxB
cnJheUJ1ZmZlcj4gbmV3RGF0YSA9CisgICAgICAgICAgICAgICAgQXJyYXlCdWZmZXI6OmNyZWF0
ZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4obmV3TGVuZ3RoKSwgMSk7CisgICAgICAgICAgICBtZW1j
cHkoc3RhdGljX2Nhc3Q8Y2hhcio+KG5ld0RhdGEtPmRhdGEoKSksIHN0YXRpY19jYXN0PGNoYXIq
PihtX3Jhd0RhdGEtPmRhdGEoKSksIG1fYnl0ZXNMb2FkZWQpOworCisgICAgICAgICAgICBtX3Jh
d0RhdGEgPSBuZXdEYXRhOworICAgICAgICAgICAgbV90b3RhbEJ5dGVzID0gbmV3TGVuZ3RoOwor
ICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGxlbmd0aCA9IHJlbWFpbmluZ0J1ZmZlclNwYWNl
OworICAgIH0KIAogICAgIGlmIChsZW5ndGggPD0gMCkKICAgICAgICAgcmV0dXJuOwpAQCAtMTgz
LDYgKzIwOCwxNCBAQCB2b2lkIEZpbGVSZWFkZXJMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0
IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQogCiB2b2lkIEZpbGVSZWFkZXJMb2FkZXI6OmRp
ZEZpbmlzaExvYWRpbmcodW5zaWduZWQgbG9uZywgZG91YmxlKQogeworICAgIGlmIChtX3Zhcmlh
YmxlTGVuZ3RoICYmIG1fdG90YWxCeXRlcyA+IG1fYnl0ZXNMb2FkZWQpIHsKKyAgICAgICAgUmVm
UHRyPEFycmF5QnVmZmVyPiBuZXdEYXRhID0KKyAgICAgICAgICAgIEFycmF5QnVmZmVyOjpjcmVh
dGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fYnl0ZXNMb2FkZWQpLCAxKTsKKyAgICAgICAgbWVt
Y3B5KHN0YXRpY19jYXN0PGNoYXIqPihuZXdEYXRhLT5kYXRhKCkpLCBzdGF0aWNfY2FzdDxjaGFy
Kj4obV9yYXdEYXRhLT5kYXRhKCkpLCBtX2J5dGVzTG9hZGVkKTsKKworICAgICAgICBtX3Jhd0Rh
dGEgPSBuZXdEYXRhOworICAgICAgICBtX3RvdGFsQnl0ZXMgPSBtX2J5dGVzTG9hZGVkOworICAg
IH0KICAgICBjbGVhbnVwKCk7CiAgICAgaWYgKG1fY2xpZW50KQogICAgICAgICBtX2NsaWVudC0+
ZGlkRmluaXNoTG9hZGluZygpOwpAQCAtMjMzLDkgKzI2NiwyNyBAQCBQYXNzUmVmUHRyPEFycmF5
QnVmZmVyPiBGaWxlUmVhZGVyTG9hZGVyOjphcnJheUJ1ZmZlclJlc3VsdCgpIGNvbnN0CiAgICAg
cmV0dXJuIEFycmF5QnVmZmVyOjpjcmVhdGUobV9yYXdEYXRhLmdldCgpKTsKIH0KIAorUGFzc1Jl
ZlB0cjxCbG9iPiBGaWxlUmVhZGVyTG9hZGVyOjpibG9iUmVzdWx0KCkgY29uc3QKK3sKKyAgICBB
U1NFUlQobV9yZWFkVHlwZSA9PSBSZWFkQXNCbG9iKTsKKworICAgIC8vIElmIHRoZSBsb2FkaW5n
IGlzIG5vdCBzdGFydGVkIG9yIGFuIGVycm9yIG9jY3VycywgcmV0dXJuIGFuIGVtcHR5IHJlc3Vs
dC4KKyAgICBpZiAoIW1fcmF3RGF0YSB8fCBtX2Vycm9yQ29kZSkKKyAgICAgICAgcmV0dXJuIDA7
CisKKyAgICBPd25QdHI8QmxvYkRhdGE+IGJsb2JEYXRhID0gQmxvYkRhdGE6OmNyZWF0ZSgpOwor
ICAgIHNpemVfdCBzaXplID0gMDsKKyAgICBSZWZQdHI8UmF3RGF0YT4gcmF3RGF0YSA9IFJhd0Rh
dGE6OmNyZWF0ZSgpOworICAgIHNpemUgPSBtX3Jhd0RhdGEtPmJ5dGVMZW5ndGgoKTsKKyAgICBy
YXdEYXRhLT5tdXRhYmxlRGF0YSgpLT5hcHBlbmQoc3RhdGljX2Nhc3Q8Y2hhcio+KG1fcmF3RGF0
YS0+ZGF0YSgpKSwgc2l6ZSk7CisgICAgYmxvYkRhdGEtPmFwcGVuZERhdGEocmF3RGF0YSwgMCwg
QmxvYkRhdGFJdGVtOjp0b0VuZE9mRmlsZSk7CisgICAgYmxvYkRhdGEtPnNldENvbnRlbnRUeXBl
KG1fZGF0YVR5cGUpOworICAgIHJldHVybiBCbG9iOjpjcmVhdGUoYmxvYkRhdGEucmVsZWFzZSgp
LCBzaXplKTsKK30KKwogU3RyaW5nIEZpbGVSZWFkZXJMb2FkZXI6OnN0cmluZ1Jlc3VsdCgpCiB7
Ci0gICAgQVNTRVJUKG1fcmVhZFR5cGUgIT0gUmVhZEFzQXJyYXlCdWZmZXIpOworICAgIEFTU0VS
VChtX3JlYWRUeXBlICE9IFJlYWRBc0FycmF5QnVmZmVyICYmIG1fcmVhZFR5cGUgIT0gUmVhZEFz
QmxvYik7CiAKICAgICAvLyBJZiB0aGUgbG9hZGluZyBpcyBub3Qgc3RhcnRlZCBvciBhbiBlcnJv
ciBvY2N1cnMsIHJldHVybiBhbiBlbXB0eSByZXN1bHQuCiAgICAgaWYgKCFtX3Jhd0RhdGEgfHwg
bV9lcnJvckNvZGUpCkBAIC0zMjAsNiArMzcxLDE0IEBAIHZvaWQgRmlsZVJlYWRlckxvYWRlcjo6
c2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJiBlbmNvZGluZykKICAgICAgICAgbV9lbmNvZGluZyA9
IFRleHRFbmNvZGluZyhlbmNvZGluZyk7CiB9CiAKK3ZvaWQgRmlsZVJlYWRlckxvYWRlcjo6c2V0
UmFuZ2UodW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAgICBBU1NFUlQobGVu
Z3RoID4gMCk7CisgICAgbV9oYXNSYW5nZSA9IHRydWU7CisgICAgbV9yYW5nZVN0YXJ0ID0gc3Rh
cnQ7CisgICAgbV9yYW5nZUVuZCA9IHN0YXJ0ICsgbGVuZ3RoIC0gMTsKK30KKwogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogIAogI2VuZGlmIC8vIEVOQUJMRShCTE9CKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9m
aWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuaAppbmRleCAzNGY1NDM4N2IyZTMwMzRhN2U4MzI1OWQx
MjYwNzdlNDNjOGI3N2RkLi4xZTM1NWZkM2E2ZGE1Y2YxODkyMWJjYzE0MTI5NDI1N2UzMzE1Mjc3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuaApAQCAtNTMsNiAr
NTMsNyBAQCBwdWJsaWM6CiAgICAgZW51bSBSZWFkVHlwZSB7CiAgICAgICAgIFJlYWRBc0FycmF5
QnVmZmVyLAogICAgICAgICBSZWFkQXNCaW5hcnlTdHJpbmcsCisgICAgICAgIFJlYWRBc0Jsb2Is
CiAgICAgICAgIFJlYWRBc1RleHQsCiAgICAgICAgIFJlYWRBc0RhdGFVUkwKICAgICB9OwpAQCAt
NzIsMTMgKzczLDE1IEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyBzdHJpbmdSZXN1bHQoKTsKICAg
ICBQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlclJlc3VsdCgpIGNvbnN0OworICAg
IFBhc3NSZWZQdHI8QmxvYj4gYmxvYlJlc3VsdCgpIGNvbnN0OwogICAgIHVuc2lnbmVkIGJ5dGVz
TG9hZGVkKCkgY29uc3QgeyByZXR1cm4gbV9ieXRlc0xvYWRlZDsgfQogICAgIHVuc2lnbmVkIHRv
dGFsQnl0ZXMoKSBjb25zdCB7IHJldHVybiBtX3RvdGFsQnl0ZXM7IH0KICAgICBpbnQgZXJyb3JD
b2RlKCkgY29uc3QgeyByZXR1cm4gbV9lcnJvckNvZGU7IH0KIAogICAgIHZvaWQgc2V0RW5jb2Rp
bmcoY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBzZXREYXRhVHlwZShjb25zdCBTdHJpbmcmIGRh
dGFUeXBlKSB7IG1fZGF0YVR5cGUgPSBkYXRhVHlwZTsgfQotICAgIAorICAgIHZvaWQgc2V0UmFu
Z2UodW5zaWduZWQsIHVuc2lnbmVkKTsKKwogcHJpdmF0ZToKICAgICB2b2lkIHRlcm1pbmF0ZSgp
OwogICAgIHZvaWQgY2xlYW51cCgpOwpAQCAtMTA2LDggKzEwOSwxNCBAQCBwcml2YXRlOgogICAg
IC8vIFRoZSBkZWNvZGVyIHVzZWQgdG8gZGVjb2RlIHRoZSB0ZXh0IGRhdGEuCiAgICAgUmVmUHRy
PFRleHRSZXNvdXJjZURlY29kZXI+IG1fZGVjb2RlcjsKIAorICAgIGJvb2wgbV92YXJpYWJsZUxl
bmd0aDsKICAgICB1bnNpZ25lZCBtX2J5dGVzTG9hZGVkOwogICAgIHVuc2lnbmVkIG1fdG90YWxC
eXRlczsKKworICAgIGJvb2wgbV9oYXNSYW5nZTsKKyAgICB1bnNpZ25lZCBtX3JhbmdlU3RhcnQ7
CisgICAgdW5zaWduZWQgbV9yYW5nZUVuZDsKKwogICAgIGludCBtX2Vycm9yQ29kZTsKIH07CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>189690</attachid>
            <date>2013-02-21 22:57:00 -0800</date>
            <delta_ts>2013-02-21 23:25:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110556-20130222155320.patch</filename>
            <type>text/plain</type>
            <size>7231</size>
            <attacher name="Zachary Kuznia">zork</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQzNjg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTZlOGEwOGJlZTM4Mjgw
NzJjMjA1MzFmZDFhNGY4ZTc4YmFhNjFkNS4uN2Q5MjI2Nzg2OTI3NDlmN2FkNTQyZjZiNGM3ZTRh
MmU3YWMyNzBkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEzLTAyLTIxICBaYWNo
IEt1em5pYSAgPHpvcmtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFVwZGF0ZSBGaWxlUmVhZGVy
TG9hZGVyIHRvIGFsbG93IHNwZWNpZnlpbmcgYSByYW5nZSBhbmQgcmVhZGluZyBhcyBhIGJsb2Iu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTA1NTYK
KworICAgICAgICBUaGlzIGlzIHBhcnQgb2YgYSBzZXJpZXMgb2YgcGF0Y2hlcyB0byBpbXBsZW1l
bnQgU3RyZWFtIHN1cHBvcnQuICBTZWU6CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMTAxOTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIGZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5jcHA6CisgICAgICAg
ICogZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmg6CisKIDIwMTMtMDItMjEgIERpbWl0cmkgR2xh
emtvdiAgPGRnbGF6a292QGNocm9taXVtLm9yZz4KIAogICAgICAgICBTcGxpdCBTZWxlY3RvckNo
ZWNrZXIncyBmYXN0LWNoZWNraW5nIGxvZ2ljIGludG8gaXRzIG93biBjbGFzcy4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuY3BwCmluZGV4IGYyNGNkYzgyZmJjMjIz
MTJhNDQ5N2ZjYjJjMTdjNjRhYmM3YmU4NjMuLjQxNzQzYmUxYWMwYWRlOGIzNjRkYTc3YjA2ZjRm
ODM0ZDQyYzk2ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRl
ckxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVy
LmNwcApAQCAtNTQsMTMgKzU0LDE5IEBAIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAorY29uc3QgaW50IGRlZmF1bHRCdWZmZXJMZW5ndGggPSAzMjc2ODsKKwog
RmlsZVJlYWRlckxvYWRlcjo6RmlsZVJlYWRlckxvYWRlcihSZWFkVHlwZSByZWFkVHlwZSwgRmls
ZVJlYWRlckxvYWRlckNsaWVudCogY2xpZW50KQogICAgIDogbV9yZWFkVHlwZShyZWFkVHlwZSkK
ICAgICAsIG1fY2xpZW50KGNsaWVudCkKICAgICAsIG1faXNSYXdEYXRhQ29udmVydGVkKGZhbHNl
KQogICAgICwgbV9zdHJpbmdSZXN1bHQoIiIpCisgICAgLCBtX3ZhcmlhYmxlTGVuZ3RoKGZhbHNl
KQogICAgICwgbV9ieXRlc0xvYWRlZCgwKQogICAgICwgbV90b3RhbEJ5dGVzKDApCisgICAgLCBt
X2hhc1JhbmdlKGZhbHNlKQorICAgICwgbV9yYW5nZVN0YXJ0KDApCisgICAgLCBtX3JhbmdlRW5k
KDApCiAgICAgLCBtX2Vycm9yQ29kZSgwKQogewogfQpAQCAtODUsNiArOTEsOCBAQCB2b2lkIEZp
bGVSZWFkZXJMb2FkZXI6OnN0YXJ0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQsIEJsbwogICAgIC8vIENvbnN0cnVjdCBhbmQgbG9hZCB0aGUgcmVxdWVzdC4K
ICAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChtX3VybEZvclJlYWRpbmcpOwogICAgIHJlcXVl
c3Quc2V0SFRUUE1ldGhvZCgiR0VUIik7CisgICAgaWYgKG1faGFzUmFuZ2UpCisgICAgICAgIHJl
cXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKCJSYW5nZSIsIFN0cmluZzo6Zm9ybWF0KCJieXRlcz0l
ZC0lZCIsIG1fcmFuZ2VTdGFydCwgbV9yYW5nZUVuZCkpOwogCiAgICAgVGhyZWFkYWJsZUxvYWRl
ck9wdGlvbnMgb3B0aW9uczsKICAgICBvcHRpb25zLnNlbmRMb2FkQ2FsbGJhY2tzID0gU2VuZENh
bGxiYWNrczsKQEAgLTEzNyw4ICsxNDUsMTEgQEAgdm9pZCBGaWxlUmVhZGVyTG9hZGVyOjpkaWRS
ZWNlaXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZywgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYKICAg
ICAvLyBzbyB0byBjYWxsIEFycmF5QnVmZmVyJ3MgY3JlYXRlIGZ1bmN0aW9uLgogICAgIC8vIEZJ
WE1FOiBTdXBwb3J0IHJlYWRpbmcgbW9yZSB0aGFuIHRoZSBjdXJyZW50IHNpemUgbGltaXQgb2Yg
QXJyYXlCdWZmZXIuCiAgICAgaWYgKGxlbmd0aCA+IG51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6
bWF4KCkpIHsKLSAgICAgICAgZmFpbGVkKEZpbGVFcnJvcjo6Tk9UX1JFQURBQkxFX0VSUik7Ci0g
ICAgICAgIHJldHVybjsKKyAgICAgICAgbV92YXJpYWJsZUxlbmd0aCA9IHRydWU7CisgICAgICAg
IGlmIChtX2hhc1JhbmdlKQorICAgICAgICAgICAgbGVuZ3RoID0gMSArIG1fcmFuZ2VFbmQgLSBt
X3JhbmdlU3RhcnQ7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGxlbmd0aCA9IGRlZmF1bHRC
dWZmZXJMZW5ndGg7CiAgICAgfQogCiAgICAgQVNTRVJUKCFtX3Jhd0RhdGEpOwpAQCAtMTY2LDgg
KzE3NywyMiBAQCB2b2lkIEZpbGVSZWFkZXJMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IGNo
YXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQogCiAgICAgaW50IGxlbmd0aCA9IGRhdGFMZW5ndGg7
CiAgICAgdW5zaWduZWQgcmVtYWluaW5nQnVmZmVyU3BhY2UgPSBtX3RvdGFsQnl0ZXMgLSBtX2J5
dGVzTG9hZGVkOwotICAgIGlmIChsZW5ndGggPiBzdGF0aWNfY2FzdDxsb25nIGxvbmc+KHJlbWFp
bmluZ0J1ZmZlclNwYWNlKSkKLSAgICAgICAgbGVuZ3RoID0gc3RhdGljX2Nhc3Q8aW50PihyZW1h
aW5pbmdCdWZmZXJTcGFjZSk7CisgICAgaWYgKGxlbmd0aCA+IHN0YXRpY19jYXN0PGxvbmcgbG9u
Zz4ocmVtYWluaW5nQnVmZmVyU3BhY2UpKSB7CisgICAgICAgIGlmIChtX3ZhcmlhYmxlTGVuZ3Ro
KSB7CisgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgbmV3TGVuZ3RoID0gbV90b3RhbEJ5
dGVzICogMjsKKyAgICAgICAgICAgIGlmIChuZXdMZW5ndGggPiBudW1lcmljX2xpbWl0czx1bnNp
Z25lZD46Om1heCgpKSB7CisgICAgICAgICAgICAgICAgZmFpbGVkKEZpbGVFcnJvcjo6Tk9UX1JF
QURBQkxFX0VSUik7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBuZXdEYXRhID0KKyAgICAgICAgICAgICAgICBB
cnJheUJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PHVuc2lnbmVkPihuZXdMZW5ndGgpLCAxKTsK
KyAgICAgICAgICAgIG1lbWNweShzdGF0aWNfY2FzdDxjaGFyKj4obmV3RGF0YS0+ZGF0YSgpKSwg
c3RhdGljX2Nhc3Q8Y2hhcio+KG1fcmF3RGF0YS0+ZGF0YSgpKSwgbV9ieXRlc0xvYWRlZCk7CisK
KyAgICAgICAgICAgIG1fcmF3RGF0YSA9IG5ld0RhdGE7CisgICAgICAgICAgICBtX3RvdGFsQnl0
ZXMgPSBuZXdMZW5ndGg7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgbGVuZ3RoID0gcmVt
YWluaW5nQnVmZmVyU3BhY2U7CisgICAgfQogCiAgICAgaWYgKGxlbmd0aCA8PSAwKQogICAgICAg
ICByZXR1cm47CkBAIC0xODMsNiArMjA4LDE0IEBAIHZvaWQgRmlsZVJlYWRlckxvYWRlcjo6ZGlk
UmVjZWl2ZURhdGEoY29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgpCiAKIHZvaWQgRmls
ZVJlYWRlckxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBsb25nLCBkb3VibGUpCiB7
CisgICAgaWYgKG1fdmFyaWFibGVMZW5ndGggJiYgbV90b3RhbEJ5dGVzID4gbV9ieXRlc0xvYWRl
ZCkgeworICAgICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IG5ld0RhdGEgPQorICAgICAgICAgICAg
QXJyYXlCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9ieXRlc0xvYWRlZCks
IDEpOworICAgICAgICBtZW1jcHkoc3RhdGljX2Nhc3Q8Y2hhcio+KG5ld0RhdGEtPmRhdGEoKSks
IHN0YXRpY19jYXN0PGNoYXIqPihtX3Jhd0RhdGEtPmRhdGEoKSksIG1fYnl0ZXNMb2FkZWQpOwor
CisgICAgICAgIG1fcmF3RGF0YSA9IG5ld0RhdGE7CisgICAgICAgIG1fdG90YWxCeXRlcyA9IG1f
Ynl0ZXNMb2FkZWQ7CisgICAgfQogICAgIGNsZWFudXAoKTsKICAgICBpZiAobV9jbGllbnQpCiAg
ICAgICAgIG1fY2xpZW50LT5kaWRGaW5pc2hMb2FkaW5nKCk7CkBAIC0yMzMsOSArMjY2LDMwIEBA
IFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IEZpbGVSZWFkZXJMb2FkZXI6OmFycmF5QnVmZmVyUmVz
dWx0KCkgY29uc3QKICAgICByZXR1cm4gQXJyYXlCdWZmZXI6OmNyZWF0ZShtX3Jhd0RhdGEuZ2V0
KCkpOwogfQogCitQYXNzUmVmUHRyPEJsb2I+IEZpbGVSZWFkZXJMb2FkZXI6OmJsb2JSZXN1bHQo
KQoreworICAgIEFTU0VSVChtX3JlYWRUeXBlID09IFJlYWRBc0Jsb2IpOworCisgICAgLy8gSWYg
dGhlIGxvYWRpbmcgaXMgbm90IGZpbmlzaGVkIG9yIGFuIGVycm9yIG9jY3VycywgcmV0dXJuIGFu
IGVtcHR5IHJlc3VsdC4KKyAgICBpZiAoIW1fcmF3RGF0YSB8fCBtX2Vycm9yQ29kZSB8fCAhaXND
b21wbGV0ZWQoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpZiAoIW1fYmxvYlJlc3VsdCkg
eworICAgICAgICBPd25QdHI8QmxvYkRhdGE+IGJsb2JEYXRhID0gQmxvYkRhdGE6OmNyZWF0ZSgp
OworICAgICAgICBzaXplX3Qgc2l6ZSA9IDA7CisgICAgICAgIFJlZlB0cjxSYXdEYXRhPiByYXdE
YXRhID0gUmF3RGF0YTo6Y3JlYXRlKCk7CisgICAgICAgIHNpemUgPSBtX3Jhd0RhdGEtPmJ5dGVM
ZW5ndGgoKTsKKyAgICAgICAgcmF3RGF0YS0+bXV0YWJsZURhdGEoKS0+YXBwZW5kKHN0YXRpY19j
YXN0PGNoYXIqPihtX3Jhd0RhdGEtPmRhdGEoKSksIHNpemUpOworICAgICAgICBibG9iRGF0YS0+
YXBwZW5kRGF0YShyYXdEYXRhLCAwLCBCbG9iRGF0YUl0ZW06OnRvRW5kT2ZGaWxlKTsKKyAgICAg
ICAgYmxvYkRhdGEtPnNldENvbnRlbnRUeXBlKG1fZGF0YVR5cGUpOworICAgICAgICBtX2Jsb2JS
ZXN1bHQgPSBCbG9iOjpjcmVhdGUoYmxvYkRhdGEucmVsZWFzZSgpLCBzaXplKTsKKyAgICB9Cisg
ICAgcmV0dXJuIG1fYmxvYlJlc3VsdDsKK30KKwogU3RyaW5nIEZpbGVSZWFkZXJMb2FkZXI6OnN0
cmluZ1Jlc3VsdCgpCiB7Ci0gICAgQVNTRVJUKG1fcmVhZFR5cGUgIT0gUmVhZEFzQXJyYXlCdWZm
ZXIpOworICAgIEFTU0VSVChtX3JlYWRUeXBlICE9IFJlYWRBc0FycmF5QnVmZmVyICYmIG1fcmVh
ZFR5cGUgIT0gUmVhZEFzQmxvYik7CiAKICAgICAvLyBJZiB0aGUgbG9hZGluZyBpcyBub3Qgc3Rh
cnRlZCBvciBhbiBlcnJvciBvY2N1cnMsIHJldHVybiBhbiBlbXB0eSByZXN1bHQuCiAgICAgaWYg
KCFtX3Jhd0RhdGEgfHwgbV9lcnJvckNvZGUpCkBAIC0zMjAsNiArMzc0LDE0IEBAIHZvaWQgRmls
ZVJlYWRlckxvYWRlcjo6c2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJiBlbmNvZGluZykKICAgICAg
ICAgbV9lbmNvZGluZyA9IFRleHRFbmNvZGluZyhlbmNvZGluZyk7CiB9CiAKK3ZvaWQgRmlsZVJl
YWRlckxvYWRlcjo6c2V0UmFuZ2UodW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGxlbmd0aCkKK3sK
KyAgICBBU1NFUlQobGVuZ3RoID4gMCk7CisgICAgbV9oYXNSYW5nZSA9IHRydWU7CisgICAgbV9y
YW5nZVN0YXJ0ID0gc3RhcnQ7CisgICAgbV9yYW5nZUVuZCA9IHN0YXJ0ICsgbGVuZ3RoIC0gMTsK
K30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogIAogI2VuZGlmIC8vIEVOQUJMRShCTE9CKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuaAppbmRleCAzNGY1NDM4N2Iy
ZTMwMzRhN2U4MzI1OWQxMjYwNzdlNDNjOGI3N2RkLi5kNDhiNmI4ZDg0ZDRkZmRlNTg4ZWQ4YzRj
OTQ2ODBiODM4OTdmY2JiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVS
ZWFkZXJMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2Fk
ZXIuaApAQCAtNTMsNiArNTMsNyBAQCBwdWJsaWM6CiAgICAgZW51bSBSZWFkVHlwZSB7CiAgICAg
ICAgIFJlYWRBc0FycmF5QnVmZmVyLAogICAgICAgICBSZWFkQXNCaW5hcnlTdHJpbmcsCisgICAg
ICAgIFJlYWRBc0Jsb2IsCiAgICAgICAgIFJlYWRBc1RleHQsCiAgICAgICAgIFJlYWRBc0RhdGFV
UkwKICAgICB9OwpAQCAtNzIsMTMgKzczLDE1IEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyBzdHJp
bmdSZXN1bHQoKTsKICAgICBQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlclJlc3Vs
dCgpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8QmxvYj4gYmxvYlJlc3VsdCgpOwogICAgIHVuc2ln
bmVkIGJ5dGVzTG9hZGVkKCkgY29uc3QgeyByZXR1cm4gbV9ieXRlc0xvYWRlZDsgfQogICAgIHVu
c2lnbmVkIHRvdGFsQnl0ZXMoKSBjb25zdCB7IHJldHVybiBtX3RvdGFsQnl0ZXM7IH0KICAgICBp
bnQgZXJyb3JDb2RlKCkgY29uc3QgeyByZXR1cm4gbV9lcnJvckNvZGU7IH0KIAogICAgIHZvaWQg
c2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBzZXREYXRhVHlwZShjb25zdCBT
dHJpbmcmIGRhdGFUeXBlKSB7IG1fZGF0YVR5cGUgPSBkYXRhVHlwZTsgfQotICAgIAorICAgIHZv
aWQgc2V0UmFuZ2UodW5zaWduZWQsIHVuc2lnbmVkKTsKKwogcHJpdmF0ZToKICAgICB2b2lkIHRl
cm1pbmF0ZSgpOwogICAgIHZvaWQgY2xlYW51cCgpOwpAQCAtMTAyLDEyICsxMDUsMTkgQEAgcHJp
dmF0ZToKICAgICBib29sIG1faXNSYXdEYXRhQ29udmVydGVkOwogCiAgICAgU3RyaW5nIG1fc3Ry
aW5nUmVzdWx0OworICAgIFJlZlB0cjxCbG9iPiBtX2Jsb2JSZXN1bHQ7CiAKICAgICAvLyBUaGUg
ZGVjb2RlciB1c2VkIHRvIGRlY29kZSB0aGUgdGV4dCBkYXRhLgogICAgIFJlZlB0cjxUZXh0UmVz
b3VyY2VEZWNvZGVyPiBtX2RlY29kZXI7CiAKKyAgICBib29sIG1fdmFyaWFibGVMZW5ndGg7CiAg
ICAgdW5zaWduZWQgbV9ieXRlc0xvYWRlZDsKICAgICB1bnNpZ25lZCBtX3RvdGFsQnl0ZXM7CisK
KyAgICBib29sIG1faGFzUmFuZ2U7CisgICAgdW5zaWduZWQgbV9yYW5nZVN0YXJ0OworICAgIHVu
c2lnbmVkIG1fcmFuZ2VFbmQ7CisKICAgICBpbnQgbV9lcnJvckNvZGU7CiB9OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>189695</attachid>
            <date>2013-02-21 23:25:47 -0800</date>
            <delta_ts>2013-02-21 23:35:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110556-20130222162207.patch</filename>
            <type>text/plain</type>
            <size>7644</size>
            <attacher name="Zachary Kuznia">zork</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQzNjg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTZlOGEwOGJlZTM4Mjgw
NzJjMjA1MzFmZDFhNGY4ZTc4YmFhNjFkNS4uMzY2ZDYzZmQzNWZjZDc5NWNmY2Y0NTJiYjVhZjgz
ZGNmOGM4YTE0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDEzLTAyLTIxICBaYWNo
IEt1em5pYSAgPHpvcmtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFVwZGF0ZSBGaWxlUmVhZGVy
TG9hZGVyIHRvIGFsbG93IHNwZWNpZnlpbmcgYSByYW5nZSBhbmQgcmVhZGluZyBhcyBhIGJsb2Iu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTA1NTYK
KworICAgICAgICBUaGlzIGlzIHBhcnQgb2YgYSBzZXJpZXMgb2YgcGF0Y2hlcyB0byBpbXBsZW1l
bnQgU3RyZWFtIHN1cHBvcnQuICBTZWU6CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMTAxOTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBUZXN0czogd2lsbCBiZSBhZGRlZCB3aGVuIGpzIGJpbmRpbmcgaXMg
YWRkZWQuCisKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuY3BwOgorICAgICAg
ICAqIGZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5oOgorCiAyMDEzLTAyLTIxICBEaW1pdHJpIEds
YXprb3YgIDxkZ2xhemtvdkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgU3BsaXQgU2VsZWN0b3JD
aGVja2VyJ3MgZmFzdC1jaGVja2luZyBsb2dpYyBpbnRvIGl0cyBvd24gY2xhc3MuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmNwcAppbmRleCBmMjRjZGM4MmZiYzIy
MzEyYTQ0OTdmY2IyYzE3YzY0YWJjN2JlODYzLi5iZjlmZjgwYmJkYTAyYzE5Yjg5YzFlNDNiNWUy
ZTg5YTkxNjE4OWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFk
ZXJMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRl
ci5jcHAKQEAgLTU0LDEzICs1NCwxOSBAQCB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKK2NvbnN0IGludCBkZWZhdWx0QnVmZmVyTGVuZ3RoID0gMzI3Njg7CisK
IEZpbGVSZWFkZXJMb2FkZXI6OkZpbGVSZWFkZXJMb2FkZXIoUmVhZFR5cGUgcmVhZFR5cGUsIEZp
bGVSZWFkZXJMb2FkZXJDbGllbnQqIGNsaWVudCkKICAgICA6IG1fcmVhZFR5cGUocmVhZFR5cGUp
CiAgICAgLCBtX2NsaWVudChjbGllbnQpCiAgICAgLCBtX2lzUmF3RGF0YUNvbnZlcnRlZChmYWxz
ZSkKICAgICAsIG1fc3RyaW5nUmVzdWx0KCIiKQorICAgICwgbV92YXJpYWJsZUxlbmd0aChmYWxz
ZSkKICAgICAsIG1fYnl0ZXNMb2FkZWQoMCkKICAgICAsIG1fdG90YWxCeXRlcygwKQorICAgICwg
bV9oYXNSYW5nZShmYWxzZSkKKyAgICAsIG1fcmFuZ2VTdGFydCgwKQorICAgICwgbV9yYW5nZUVu
ZCgwKQogICAgICwgbV9lcnJvckNvZGUoMCkKIHsKIH0KQEAgLTg1LDYgKzkxLDggQEAgdm9pZCBG
aWxlUmVhZGVyTG9hZGVyOjpzdGFydChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVj
dXRpb25Db250ZXh0LCBCbG8KICAgICAvLyBDb25zdHJ1Y3QgYW5kIGxvYWQgdGhlIHJlcXVlc3Qu
CiAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QobV91cmxGb3JSZWFkaW5nKTsKICAgICByZXF1
ZXN0LnNldEhUVFBNZXRob2QoIkdFVCIpOworICAgIGlmIChtX2hhc1JhbmdlKQorICAgICAgICBy
ZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZCgiUmFuZ2UiLCBTdHJpbmc6OmZvcm1hdCgiYnl0ZXM9
JWQtJWQiLCBtX3JhbmdlU3RhcnQsIG1fcmFuZ2VFbmQpKTsKIAogICAgIFRocmVhZGFibGVMb2Fk
ZXJPcHRpb25zIG9wdGlvbnM7CiAgICAgb3B0aW9ucy5zZW5kTG9hZENhbGxiYWNrcyA9IFNlbmRD
YWxsYmFja3M7CkBAIC0xMzMsNiArMTQxLDE2IEBAIHZvaWQgRmlsZVJlYWRlckxvYWRlcjo6ZGlk
UmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmCiAK
ICAgICB1bnNpZ25lZCBsb25nIGxvbmcgbGVuZ3RoID0gcmVzcG9uc2UuZXhwZWN0ZWRDb250ZW50
TGVuZ3RoKCk7CiAKKyAgICAvLyBBIHZhbHVlIGxhcmdlciB0aGFuIElOVF9NQVggbWVhbnMgdGhh
dCB0aGUgY29udGVudCBsZW5ndGggd2Fzbid0CisgICAgLy8gc3BlY2lmaWVkLCBzbyB0aGUgYnVm
ZmVyIHdpbGwgbmVlZCB0byBiZSBkeW5hbWljYWxseSBncm93bi4KKyAgICBpZiAobGVuZ3RoID4g
SU5UX01BWCkgeworICAgICAgICBtX3ZhcmlhYmxlTGVuZ3RoID0gdHJ1ZTsKKyAgICAgICAgaWYg
KG1faGFzUmFuZ2UpCisgICAgICAgICAgICBsZW5ndGggPSAxICsgbV9yYW5nZUVuZCAtIG1fcmFu
Z2VTdGFydDsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbGVuZ3RoID0gZGVmYXVsdEJ1ZmZl
ckxlbmd0aDsKKyAgICB9CisKICAgICAvLyBDaGVjayB0aGF0IHdlIGNhbiBjYXN0IHRvIHVuc2ln
bmVkIHNpbmNlIHdlIGhhdmUgdG8gZG8KICAgICAvLyBzbyB0byBjYWxsIEFycmF5QnVmZmVyJ3Mg
Y3JlYXRlIGZ1bmN0aW9uLgogICAgIC8vIEZJWE1FOiBTdXBwb3J0IHJlYWRpbmcgbW9yZSB0aGFu
IHRoZSBjdXJyZW50IHNpemUgbGltaXQgb2YgQXJyYXlCdWZmZXIuCkBAIC0xNjYsOCArMTg0LDI1
IEBAIHZvaWQgRmlsZVJlYWRlckxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogZGF0
YSwgaW50IGRhdGFMZW5ndGgpCiAKICAgICBpbnQgbGVuZ3RoID0gZGF0YUxlbmd0aDsKICAgICB1
bnNpZ25lZCByZW1haW5pbmdCdWZmZXJTcGFjZSA9IG1fdG90YWxCeXRlcyAtIG1fYnl0ZXNMb2Fk
ZWQ7Ci0gICAgaWYgKGxlbmd0aCA+IHN0YXRpY19jYXN0PGxvbmcgbG9uZz4ocmVtYWluaW5nQnVm
ZmVyU3BhY2UpKQotICAgICAgICBsZW5ndGggPSBzdGF0aWNfY2FzdDxpbnQ+KHJlbWFpbmluZ0J1
ZmZlclNwYWNlKTsKKyAgICBpZiAobGVuZ3RoID4gc3RhdGljX2Nhc3Q8bG9uZyBsb25nPihyZW1h
aW5pbmdCdWZmZXJTcGFjZSkpIHsKKyAgICAgICAgLy8gSWYgdGhlIGJ1ZmZlciBoYXMgaGl0IG1h
eGltdW0gc2l6ZSwgaXQgY2FuJ3QgYmUgZ3Jvd24gYW55IG1vcmUuCisgICAgICAgIGlmIChtX3Zh
cmlhYmxlTGVuZ3RoID49IG51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpIHsKKyAgICAg
ICAgICAgIGZhaWxlZChGaWxlRXJyb3I6Ok5PVF9SRUFEQUJMRV9FUlIpOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlmIChtX3ZhcmlhYmxlTGVuZ3RoKSB7CisgICAg
ICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgbmV3TGVuZ3RoID0gbV90b3RhbEJ5dGVzICogMjsK
KyAgICAgICAgICAgIGlmIChuZXdMZW5ndGggPiBudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1h
eCgpKQorICAgICAgICAgICAgICAgIG5ld0xlbmd0aCA9IG51bWVyaWNfbGltaXRzPHVuc2lnbmVk
Pjo6bWF4KCk7CisgICAgICAgICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IG5ld0RhdGEgPQorICAg
ICAgICAgICAgICAgIEFycmF5QnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG5l
d0xlbmd0aCksIDEpOworICAgICAgICAgICAgbWVtY3B5KHN0YXRpY19jYXN0PGNoYXIqPihuZXdE
YXRhLT5kYXRhKCkpLCBzdGF0aWNfY2FzdDxjaGFyKj4obV9yYXdEYXRhLT5kYXRhKCkpLCBtX2J5
dGVzTG9hZGVkKTsKKworICAgICAgICAgICAgbV9yYXdEYXRhID0gbmV3RGF0YTsKKyAgICAgICAg
ICAgIG1fdG90YWxCeXRlcyA9IG5ld0xlbmd0aDsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAg
ICBsZW5ndGggPSByZW1haW5pbmdCdWZmZXJTcGFjZTsKKyAgICB9CiAKICAgICBpZiAobGVuZ3Ro
IDw9IDApCiAgICAgICAgIHJldHVybjsKQEAgLTE4Myw2ICsyMTgsMTQgQEAgdm9pZCBGaWxlUmVh
ZGVyTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0
aCkKIAogdm9pZCBGaWxlUmVhZGVyTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxv
bmcsIGRvdWJsZSkKIHsKKyAgICBpZiAobV92YXJpYWJsZUxlbmd0aCAmJiBtX3RvdGFsQnl0ZXMg
PiBtX2J5dGVzTG9hZGVkKSB7CisgICAgICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gbmV3RGF0YSA9
CisgICAgICAgICAgICBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PHVuc2lnbmVkPiht
X2J5dGVzTG9hZGVkKSwgMSk7CisgICAgICAgIG1lbWNweShzdGF0aWNfY2FzdDxjaGFyKj4obmV3
RGF0YS0+ZGF0YSgpKSwgc3RhdGljX2Nhc3Q8Y2hhcio+KG1fcmF3RGF0YS0+ZGF0YSgpKSwgbV9i
eXRlc0xvYWRlZCk7CisKKyAgICAgICAgbV9yYXdEYXRhID0gbmV3RGF0YTsKKyAgICAgICAgbV90
b3RhbEJ5dGVzID0gbV9ieXRlc0xvYWRlZDsKKyAgICB9CiAgICAgY2xlYW51cCgpOwogICAgIGlm
IChtX2NsaWVudCkKICAgICAgICAgbV9jbGllbnQtPmRpZEZpbmlzaExvYWRpbmcoKTsKQEAgLTIz
Myw5ICsyNzYsMzAgQEAgUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gRmlsZVJlYWRlckxvYWRlcjo6
YXJyYXlCdWZmZXJSZXN1bHQoKSBjb25zdAogICAgIHJldHVybiBBcnJheUJ1ZmZlcjo6Y3JlYXRl
KG1fcmF3RGF0YS5nZXQoKSk7CiB9CiAKK1Bhc3NSZWZQdHI8QmxvYj4gRmlsZVJlYWRlckxvYWRl
cjo6YmxvYlJlc3VsdCgpCit7CisgICAgQVNTRVJUKG1fcmVhZFR5cGUgPT0gUmVhZEFzQmxvYik7
CisKKyAgICAvLyBJZiB0aGUgbG9hZGluZyBpcyBub3QgZmluaXNoZWQgb3IgYW4gZXJyb3Igb2Nj
dXJzLCByZXR1cm4gYW4gZW1wdHkgcmVzdWx0LgorICAgIGlmICghbV9yYXdEYXRhIHx8IG1fZXJy
b3JDb2RlIHx8ICFpc0NvbXBsZXRlZCgpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGlmICgh
bV9ibG9iUmVzdWx0KSB7CisgICAgICAgIE93blB0cjxCbG9iRGF0YT4gYmxvYkRhdGEgPSBCbG9i
RGF0YTo6Y3JlYXRlKCk7CisgICAgICAgIHNpemVfdCBzaXplID0gMDsKKyAgICAgICAgUmVmUHRy
PFJhd0RhdGE+IHJhd0RhdGEgPSBSYXdEYXRhOjpjcmVhdGUoKTsKKyAgICAgICAgc2l6ZSA9IG1f
cmF3RGF0YS0+Ynl0ZUxlbmd0aCgpOworICAgICAgICByYXdEYXRhLT5tdXRhYmxlRGF0YSgpLT5h
cHBlbmQoc3RhdGljX2Nhc3Q8Y2hhcio+KG1fcmF3RGF0YS0+ZGF0YSgpKSwgc2l6ZSk7CisgICAg
ICAgIGJsb2JEYXRhLT5hcHBlbmREYXRhKHJhd0RhdGEsIDAsIEJsb2JEYXRhSXRlbTo6dG9FbmRP
ZkZpbGUpOworICAgICAgICBibG9iRGF0YS0+c2V0Q29udGVudFR5cGUobV9kYXRhVHlwZSk7Cisg
ICAgICAgIG1fYmxvYlJlc3VsdCA9IEJsb2I6OmNyZWF0ZShibG9iRGF0YS5yZWxlYXNlKCksIHNp
emUpOworICAgIH0KKyAgICByZXR1cm4gbV9ibG9iUmVzdWx0OworfQorCiBTdHJpbmcgRmlsZVJl
YWRlckxvYWRlcjo6c3RyaW5nUmVzdWx0KCkKIHsKLSAgICBBU1NFUlQobV9yZWFkVHlwZSAhPSBS
ZWFkQXNBcnJheUJ1ZmZlcik7CisgICAgQVNTRVJUKG1fcmVhZFR5cGUgIT0gUmVhZEFzQXJyYXlC
dWZmZXIgJiYgbV9yZWFkVHlwZSAhPSBSZWFkQXNCbG9iKTsKIAogICAgIC8vIElmIHRoZSBsb2Fk
aW5nIGlzIG5vdCBzdGFydGVkIG9yIGFuIGVycm9yIG9jY3VycywgcmV0dXJuIGFuIGVtcHR5IHJl
c3VsdC4KICAgICBpZiAoIW1fcmF3RGF0YSB8fCBtX2Vycm9yQ29kZSkKQEAgLTMyMCw2ICszODQs
MTQgQEAgdm9pZCBGaWxlUmVhZGVyTG9hZGVyOjpzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmIGVu
Y29kaW5nKQogICAgICAgICBtX2VuY29kaW5nID0gVGV4dEVuY29kaW5nKGVuY29kaW5nKTsKIH0K
IAordm9pZCBGaWxlUmVhZGVyTG9hZGVyOjpzZXRSYW5nZSh1bnNpZ25lZCBzdGFydCwgdW5zaWdu
ZWQgbGVuZ3RoKQoreworICAgIEFTU0VSVChsZW5ndGggPiAwKTsKKyAgICBtX2hhc1JhbmdlID0g
dHJ1ZTsKKyAgICBtX3JhbmdlU3RhcnQgPSBzdGFydDsKKyAgICBtX3JhbmdlRW5kID0gc3RhcnQg
KyBsZW5ndGggLSAxOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAgCiAjZW5kaWYgLy8g
RU5BQkxFKEJMT0IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFk
ZXJMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5oCmlu
ZGV4IDM0ZjU0Mzg3YjJlMzAzNGE3ZTgzMjU5ZDEyNjA3N2U0M2M4Yjc3ZGQuLmQ0OGI2YjhkODRk
NGRmZGU1ODhlZDhjNGM5NDY4MGI4Mzg5N2ZjYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkv
RmlsZVJlYWRlckxvYWRlci5oCkBAIC01Myw2ICs1Myw3IEBAIHB1YmxpYzoKICAgICBlbnVtIFJl
YWRUeXBlIHsKICAgICAgICAgUmVhZEFzQXJyYXlCdWZmZXIsCiAgICAgICAgIFJlYWRBc0JpbmFy
eVN0cmluZywKKyAgICAgICAgUmVhZEFzQmxvYiwKICAgICAgICAgUmVhZEFzVGV4dCwKICAgICAg
ICAgUmVhZEFzRGF0YVVSTAogICAgIH07CkBAIC03MiwxMyArNzMsMTUgQEAgcHVibGljOgogCiAg
ICAgU3RyaW5nIHN0cmluZ1Jlc3VsdCgpOwogICAgIFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGFy
cmF5QnVmZmVyUmVzdWx0KCkgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxCbG9iPiBibG9iUmVzdWx0
KCk7CiAgICAgdW5zaWduZWQgYnl0ZXNMb2FkZWQoKSBjb25zdCB7IHJldHVybiBtX2J5dGVzTG9h
ZGVkOyB9CiAgICAgdW5zaWduZWQgdG90YWxCeXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fdG90YWxC
eXRlczsgfQogICAgIGludCBlcnJvckNvZGUoKSBjb25zdCB7IHJldHVybiBtX2Vycm9yQ29kZTsg
fQogCiAgICAgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHNldERh
dGFUeXBlKGNvbnN0IFN0cmluZyYgZGF0YVR5cGUpIHsgbV9kYXRhVHlwZSA9IGRhdGFUeXBlOyB9
Ci0gICAgCisgICAgdm9pZCBzZXRSYW5nZSh1bnNpZ25lZCwgdW5zaWduZWQpOworCiBwcml2YXRl
OgogICAgIHZvaWQgdGVybWluYXRlKCk7CiAgICAgdm9pZCBjbGVhbnVwKCk7CkBAIC0xMDIsMTIg
KzEwNSwxOSBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc1Jhd0RhdGFDb252ZXJ0ZWQ7CiAKICAg
ICBTdHJpbmcgbV9zdHJpbmdSZXN1bHQ7CisgICAgUmVmUHRyPEJsb2I+IG1fYmxvYlJlc3VsdDsK
IAogICAgIC8vIFRoZSBkZWNvZGVyIHVzZWQgdG8gZGVjb2RlIHRoZSB0ZXh0IGRhdGEuCiAgICAg
UmVmUHRyPFRleHRSZXNvdXJjZURlY29kZXI+IG1fZGVjb2RlcjsKIAorICAgIGJvb2wgbV92YXJp
YWJsZUxlbmd0aDsKICAgICB1bnNpZ25lZCBtX2J5dGVzTG9hZGVkOwogICAgIHVuc2lnbmVkIG1f
dG90YWxCeXRlczsKKworICAgIGJvb2wgbV9oYXNSYW5nZTsKKyAgICB1bnNpZ25lZCBtX3Jhbmdl
U3RhcnQ7CisgICAgdW5zaWduZWQgbV9yYW5nZUVuZDsKKwogICAgIGludCBtX2Vycm9yQ29kZTsK
IH07CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>189697</attachid>
            <date>2013-02-21 23:35:07 -0800</date>
            <delta_ts>2013-02-21 23:59:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110556-20130222163127.patch</filename>
            <type>text/plain</type>
            <size>7640</size>
            <attacher name="Zachary Kuznia">zork</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQzNjg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTZlOGEwOGJlZTM4Mjgw
NzJjMjA1MzFmZDFhNGY4ZTc4YmFhNjFkNS4uMzY2ZDYzZmQzNWZjZDc5NWNmY2Y0NTJiYjVhZjgz
ZGNmOGM4YTE0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDEzLTAyLTIxICBaYWNo
IEt1em5pYSAgPHpvcmtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFVwZGF0ZSBGaWxlUmVhZGVy
TG9hZGVyIHRvIGFsbG93IHNwZWNpZnlpbmcgYSByYW5nZSBhbmQgcmVhZGluZyBhcyBhIGJsb2Iu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTA1NTYK
KworICAgICAgICBUaGlzIGlzIHBhcnQgb2YgYSBzZXJpZXMgb2YgcGF0Y2hlcyB0byBpbXBsZW1l
bnQgU3RyZWFtIHN1cHBvcnQuICBTZWU6CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMTAxOTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBUZXN0czogd2lsbCBiZSBhZGRlZCB3aGVuIGpzIGJpbmRpbmcgaXMg
YWRkZWQuCisKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuY3BwOgorICAgICAg
ICAqIGZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5oOgorCiAyMDEzLTAyLTIxICBEaW1pdHJpIEds
YXprb3YgIDxkZ2xhemtvdkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgU3BsaXQgU2VsZWN0b3JD
aGVja2VyJ3MgZmFzdC1jaGVja2luZyBsb2dpYyBpbnRvIGl0cyBvd24gY2xhc3MuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmNwcAppbmRleCBmMjRjZGM4MmZiYzIy
MzEyYTQ0OTdmY2IyYzE3YzY0YWJjN2JlODYzLi44Y2NlNjNiMTAxZjZkNmJjNmZlYWFkYzMzODA0
YWUwODEzMzg2YWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFk
ZXJMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRl
ci5jcHAKQEAgLTU0LDEzICs1NCwxOSBAQCB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKK2NvbnN0IGludCBkZWZhdWx0QnVmZmVyTGVuZ3RoID0gMzI3Njg7CisK
IEZpbGVSZWFkZXJMb2FkZXI6OkZpbGVSZWFkZXJMb2FkZXIoUmVhZFR5cGUgcmVhZFR5cGUsIEZp
bGVSZWFkZXJMb2FkZXJDbGllbnQqIGNsaWVudCkKICAgICA6IG1fcmVhZFR5cGUocmVhZFR5cGUp
CiAgICAgLCBtX2NsaWVudChjbGllbnQpCiAgICAgLCBtX2lzUmF3RGF0YUNvbnZlcnRlZChmYWxz
ZSkKICAgICAsIG1fc3RyaW5nUmVzdWx0KCIiKQorICAgICwgbV92YXJpYWJsZUxlbmd0aChmYWxz
ZSkKICAgICAsIG1fYnl0ZXNMb2FkZWQoMCkKICAgICAsIG1fdG90YWxCeXRlcygwKQorICAgICwg
bV9oYXNSYW5nZShmYWxzZSkKKyAgICAsIG1fcmFuZ2VTdGFydCgwKQorICAgICwgbV9yYW5nZUVu
ZCgwKQogICAgICwgbV9lcnJvckNvZGUoMCkKIHsKIH0KQEAgLTg1LDYgKzkxLDggQEAgdm9pZCBG
aWxlUmVhZGVyTG9hZGVyOjpzdGFydChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVj
dXRpb25Db250ZXh0LCBCbG8KICAgICAvLyBDb25zdHJ1Y3QgYW5kIGxvYWQgdGhlIHJlcXVlc3Qu
CiAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QobV91cmxGb3JSZWFkaW5nKTsKICAgICByZXF1
ZXN0LnNldEhUVFBNZXRob2QoIkdFVCIpOworICAgIGlmIChtX2hhc1JhbmdlKQorICAgICAgICBy
ZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZCgiUmFuZ2UiLCBTdHJpbmc6OmZvcm1hdCgiYnl0ZXM9
JWQtJWQiLCBtX3JhbmdlU3RhcnQsIG1fcmFuZ2VFbmQpKTsKIAogICAgIFRocmVhZGFibGVMb2Fk
ZXJPcHRpb25zIG9wdGlvbnM7CiAgICAgb3B0aW9ucy5zZW5kTG9hZENhbGxiYWNrcyA9IFNlbmRD
YWxsYmFja3M7CkBAIC0xMzMsNiArMTQxLDE2IEBAIHZvaWQgRmlsZVJlYWRlckxvYWRlcjo6ZGlk
UmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmCiAK
ICAgICB1bnNpZ25lZCBsb25nIGxvbmcgbGVuZ3RoID0gcmVzcG9uc2UuZXhwZWN0ZWRDb250ZW50
TGVuZ3RoKCk7CiAKKyAgICAvLyBBIHZhbHVlIGxhcmdlciB0aGFuIElOVF9NQVggbWVhbnMgdGhh
dCB0aGUgY29udGVudCBsZW5ndGggd2Fzbid0CisgICAgLy8gc3BlY2lmaWVkLCBzbyB0aGUgYnVm
ZmVyIHdpbGwgbmVlZCB0byBiZSBkeW5hbWljYWxseSBncm93bi4KKyAgICBpZiAobGVuZ3RoID4g
SU5UX01BWCkgeworICAgICAgICBtX3ZhcmlhYmxlTGVuZ3RoID0gdHJ1ZTsKKyAgICAgICAgaWYg
KG1faGFzUmFuZ2UpCisgICAgICAgICAgICBsZW5ndGggPSAxICsgbV9yYW5nZUVuZCAtIG1fcmFu
Z2VTdGFydDsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbGVuZ3RoID0gZGVmYXVsdEJ1ZmZl
ckxlbmd0aDsKKyAgICB9CisKICAgICAvLyBDaGVjayB0aGF0IHdlIGNhbiBjYXN0IHRvIHVuc2ln
bmVkIHNpbmNlIHdlIGhhdmUgdG8gZG8KICAgICAvLyBzbyB0byBjYWxsIEFycmF5QnVmZmVyJ3Mg
Y3JlYXRlIGZ1bmN0aW9uLgogICAgIC8vIEZJWE1FOiBTdXBwb3J0IHJlYWRpbmcgbW9yZSB0aGFu
IHRoZSBjdXJyZW50IHNpemUgbGltaXQgb2YgQXJyYXlCdWZmZXIuCkBAIC0xNjYsOCArMTg0LDI1
IEBAIHZvaWQgRmlsZVJlYWRlckxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogZGF0
YSwgaW50IGRhdGFMZW5ndGgpCiAKICAgICBpbnQgbGVuZ3RoID0gZGF0YUxlbmd0aDsKICAgICB1
bnNpZ25lZCByZW1haW5pbmdCdWZmZXJTcGFjZSA9IG1fdG90YWxCeXRlcyAtIG1fYnl0ZXNMb2Fk
ZWQ7Ci0gICAgaWYgKGxlbmd0aCA+IHN0YXRpY19jYXN0PGxvbmcgbG9uZz4ocmVtYWluaW5nQnVm
ZmVyU3BhY2UpKQotICAgICAgICBsZW5ndGggPSBzdGF0aWNfY2FzdDxpbnQ+KHJlbWFpbmluZ0J1
ZmZlclNwYWNlKTsKKyAgICBpZiAobGVuZ3RoID4gc3RhdGljX2Nhc3Q8bG9uZyBsb25nPihyZW1h
aW5pbmdCdWZmZXJTcGFjZSkpIHsKKyAgICAgICAgLy8gSWYgdGhlIGJ1ZmZlciBoYXMgaGl0IG1h
eGltdW0gc2l6ZSwgaXQgY2FuJ3QgYmUgZ3Jvd24gYW55IG1vcmUuCisgICAgICAgIGlmIChtX3Rv
dGFsQnl0ZXMgPj0gbnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkgeworICAgICAgICAg
ICAgZmFpbGVkKEZpbGVFcnJvcjo6Tk9UX1JFQURBQkxFX0VSUik7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKyAgICAgICAgaWYgKG1fdmFyaWFibGVMZW5ndGgpIHsKKyAgICAgICAg
ICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBuZXdMZW5ndGggPSBtX3RvdGFsQnl0ZXMgKiAyOworICAg
ICAgICAgICAgaWYgKG5ld0xlbmd0aCA+IG51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkp
CisgICAgICAgICAgICAgICAgbmV3TGVuZ3RoID0gbnVtZXJpY19saW1pdHM8dW5zaWduZWQ+Ojpt
YXgoKTsKKyAgICAgICAgICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gbmV3RGF0YSA9CisgICAgICAg
ICAgICAgICAgQXJyYXlCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4obmV3TGVu
Z3RoKSwgMSk7CisgICAgICAgICAgICBtZW1jcHkoc3RhdGljX2Nhc3Q8Y2hhcio+KG5ld0RhdGEt
PmRhdGEoKSksIHN0YXRpY19jYXN0PGNoYXIqPihtX3Jhd0RhdGEtPmRhdGEoKSksIG1fYnl0ZXNM
b2FkZWQpOworCisgICAgICAgICAgICBtX3Jhd0RhdGEgPSBuZXdEYXRhOworICAgICAgICAgICAg
bV90b3RhbEJ5dGVzID0gbmV3TGVuZ3RoOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGxl
bmd0aCA9IHJlbWFpbmluZ0J1ZmZlclNwYWNlOworICAgIH0KIAogICAgIGlmIChsZW5ndGggPD0g
MCkKICAgICAgICAgcmV0dXJuOwpAQCAtMTgzLDYgKzIxOCwxNCBAQCB2b2lkIEZpbGVSZWFkZXJM
b2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQog
CiB2b2lkIEZpbGVSZWFkZXJMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcodW5zaWduZWQgbG9uZywg
ZG91YmxlKQogeworICAgIGlmIChtX3ZhcmlhYmxlTGVuZ3RoICYmIG1fdG90YWxCeXRlcyA+IG1f
Ynl0ZXNMb2FkZWQpIHsKKyAgICAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBuZXdEYXRhID0KKyAg
ICAgICAgICAgIEFycmF5QnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fYnl0
ZXNMb2FkZWQpLCAxKTsKKyAgICAgICAgbWVtY3B5KHN0YXRpY19jYXN0PGNoYXIqPihuZXdEYXRh
LT5kYXRhKCkpLCBzdGF0aWNfY2FzdDxjaGFyKj4obV9yYXdEYXRhLT5kYXRhKCkpLCBtX2J5dGVz
TG9hZGVkKTsKKworICAgICAgICBtX3Jhd0RhdGEgPSBuZXdEYXRhOworICAgICAgICBtX3RvdGFs
Qnl0ZXMgPSBtX2J5dGVzTG9hZGVkOworICAgIH0KICAgICBjbGVhbnVwKCk7CiAgICAgaWYgKG1f
Y2xpZW50KQogICAgICAgICBtX2NsaWVudC0+ZGlkRmluaXNoTG9hZGluZygpOwpAQCAtMjMzLDkg
KzI3NiwzMCBAQCBQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBGaWxlUmVhZGVyTG9hZGVyOjphcnJh
eUJ1ZmZlclJlc3VsdCgpIGNvbnN0CiAgICAgcmV0dXJuIEFycmF5QnVmZmVyOjpjcmVhdGUobV9y
YXdEYXRhLmdldCgpKTsKIH0KIAorUGFzc1JlZlB0cjxCbG9iPiBGaWxlUmVhZGVyTG9hZGVyOjpi
bG9iUmVzdWx0KCkKK3sKKyAgICBBU1NFUlQobV9yZWFkVHlwZSA9PSBSZWFkQXNCbG9iKTsKKwor
ICAgIC8vIElmIHRoZSBsb2FkaW5nIGlzIG5vdCBmaW5pc2hlZCBvciBhbiBlcnJvciBvY2N1cnMs
IHJldHVybiBhbiBlbXB0eSByZXN1bHQuCisgICAgaWYgKCFtX3Jhd0RhdGEgfHwgbV9lcnJvckNv
ZGUgfHwgIWlzQ29tcGxldGVkKCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgaWYgKCFtX2Js
b2JSZXN1bHQpIHsKKyAgICAgICAgT3duUHRyPEJsb2JEYXRhPiBibG9iRGF0YSA9IEJsb2JEYXRh
OjpjcmVhdGUoKTsKKyAgICAgICAgc2l6ZV90IHNpemUgPSAwOworICAgICAgICBSZWZQdHI8UmF3
RGF0YT4gcmF3RGF0YSA9IFJhd0RhdGE6OmNyZWF0ZSgpOworICAgICAgICBzaXplID0gbV9yYXdE
YXRhLT5ieXRlTGVuZ3RoKCk7CisgICAgICAgIHJhd0RhdGEtPm11dGFibGVEYXRhKCktPmFwcGVu
ZChzdGF0aWNfY2FzdDxjaGFyKj4obV9yYXdEYXRhLT5kYXRhKCkpLCBzaXplKTsKKyAgICAgICAg
YmxvYkRhdGEtPmFwcGVuZERhdGEocmF3RGF0YSwgMCwgQmxvYkRhdGFJdGVtOjp0b0VuZE9mRmls
ZSk7CisgICAgICAgIGJsb2JEYXRhLT5zZXRDb250ZW50VHlwZShtX2RhdGFUeXBlKTsKKyAgICAg
ICAgbV9ibG9iUmVzdWx0ID0gQmxvYjo6Y3JlYXRlKGJsb2JEYXRhLnJlbGVhc2UoKSwgc2l6ZSk7
CisgICAgfQorICAgIHJldHVybiBtX2Jsb2JSZXN1bHQ7Cit9CisKIFN0cmluZyBGaWxlUmVhZGVy
TG9hZGVyOjpzdHJpbmdSZXN1bHQoKQogewotICAgIEFTU0VSVChtX3JlYWRUeXBlICE9IFJlYWRB
c0FycmF5QnVmZmVyKTsKKyAgICBBU1NFUlQobV9yZWFkVHlwZSAhPSBSZWFkQXNBcnJheUJ1ZmZl
ciAmJiBtX3JlYWRUeXBlICE9IFJlYWRBc0Jsb2IpOwogCiAgICAgLy8gSWYgdGhlIGxvYWRpbmcg
aXMgbm90IHN0YXJ0ZWQgb3IgYW4gZXJyb3Igb2NjdXJzLCByZXR1cm4gYW4gZW1wdHkgcmVzdWx0
LgogICAgIGlmICghbV9yYXdEYXRhIHx8IG1fZXJyb3JDb2RlKQpAQCAtMzIwLDYgKzM4NCwxNCBA
QCB2b2lkIEZpbGVSZWFkZXJMb2FkZXI6OnNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYgZW5jb2Rp
bmcpCiAgICAgICAgIG1fZW5jb2RpbmcgPSBUZXh0RW5jb2RpbmcoZW5jb2RpbmcpOwogfQogCit2
b2lkIEZpbGVSZWFkZXJMb2FkZXI6OnNldFJhbmdlKHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBs
ZW5ndGgpCit7CisgICAgQVNTRVJUKGxlbmd0aCA+IDApOworICAgIG1faGFzUmFuZ2UgPSB0cnVl
OworICAgIG1fcmFuZ2VTdGFydCA9IHN0YXJ0OworICAgIG1fcmFuZ2VFbmQgPSBzdGFydCArIGxl
bmd0aCAtIDE7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKICAKICNlbmRpZiAvLyBFTkFC
TEUoQkxPQikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxv
YWRlci5oIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmgKaW5kZXgg
MzRmNTQzODdiMmUzMDM0YTdlODMyNTlkMTI2MDc3ZTQzYzhiNzdkZC4uZDQ4YjZiOGQ4NGQ0ZGZk
ZTU4OGVkOGM0Yzk0NjgwYjgzODk3ZmNiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxl
UmVhZGVyTG9hZGVyLmgKQEAgLTUzLDYgKzUzLDcgQEAgcHVibGljOgogICAgIGVudW0gUmVhZFR5
cGUgewogICAgICAgICBSZWFkQXNBcnJheUJ1ZmZlciwKICAgICAgICAgUmVhZEFzQmluYXJ5U3Ry
aW5nLAorICAgICAgICBSZWFkQXNCbG9iLAogICAgICAgICBSZWFkQXNUZXh0LAogICAgICAgICBS
ZWFkQXNEYXRhVVJMCiAgICAgfTsKQEAgLTcyLDEzICs3MywxNSBAQCBwdWJsaWM6CiAKICAgICBT
dHJpbmcgc3RyaW5nUmVzdWx0KCk7CiAgICAgUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlC
dWZmZXJSZXN1bHQoKSBjb25zdDsKKyAgICBQYXNzUmVmUHRyPEJsb2I+IGJsb2JSZXN1bHQoKTsK
ICAgICB1bnNpZ25lZCBieXRlc0xvYWRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYnl0ZXNMb2FkZWQ7
IH0KICAgICB1bnNpZ25lZCB0b3RhbEJ5dGVzKCkgY29uc3QgeyByZXR1cm4gbV90b3RhbEJ5dGVz
OyB9CiAgICAgaW50IGVycm9yQ29kZSgpIGNvbnN0IHsgcmV0dXJuIG1fZXJyb3JDb2RlOyB9CiAK
ICAgICB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgc2V0RGF0YVR5
cGUoY29uc3QgU3RyaW5nJiBkYXRhVHlwZSkgeyBtX2RhdGFUeXBlID0gZGF0YVR5cGU7IH0KLSAg
ICAKKyAgICB2b2lkIHNldFJhbmdlKHVuc2lnbmVkLCB1bnNpZ25lZCk7CisKIHByaXZhdGU6CiAg
ICAgdm9pZCB0ZXJtaW5hdGUoKTsKICAgICB2b2lkIGNsZWFudXAoKTsKQEAgLTEwMiwxMiArMTA1
LDE5IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzUmF3RGF0YUNvbnZlcnRlZDsKIAogICAgIFN0
cmluZyBtX3N0cmluZ1Jlc3VsdDsKKyAgICBSZWZQdHI8QmxvYj4gbV9ibG9iUmVzdWx0OwogCiAg
ICAgLy8gVGhlIGRlY29kZXIgdXNlZCB0byBkZWNvZGUgdGhlIHRleHQgZGF0YS4KICAgICBSZWZQ
dHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gbV9kZWNvZGVyOwogCisgICAgYm9vbCBtX3ZhcmlhYmxl
TGVuZ3RoOwogICAgIHVuc2lnbmVkIG1fYnl0ZXNMb2FkZWQ7CiAgICAgdW5zaWduZWQgbV90b3Rh
bEJ5dGVzOworCisgICAgYm9vbCBtX2hhc1JhbmdlOworICAgIHVuc2lnbmVkIG1fcmFuZ2VTdGFy
dDsKKyAgICB1bnNpZ25lZCBtX3JhbmdlRW5kOworCiAgICAgaW50IG1fZXJyb3JDb2RlOwogfTsK
IAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>189702</attachid>
            <date>2013-02-21 23:59:23 -0800</date>
            <delta_ts>2013-02-22 02:05:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110556-20130222165543.patch</filename>
            <type>text/plain</type>
            <size>7472</size>
            <attacher name="Zachary Kuznia">zork</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQzNjg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTZlOGEwOGJlZTM4Mjgw
NzJjMjA1MzFmZDFhNGY4ZTc4YmFhNjFkNS4uMzY2ZDYzZmQzNWZjZDc5NWNmY2Y0NTJiYjVhZjgz
ZGNmOGM4YTE0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDEzLTAyLTIxICBaYWNo
IEt1em5pYSAgPHpvcmtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFVwZGF0ZSBGaWxlUmVhZGVy
TG9hZGVyIHRvIGFsbG93IHNwZWNpZnlpbmcgYSByYW5nZSBhbmQgcmVhZGluZyBhcyBhIGJsb2Iu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTA1NTYK
KworICAgICAgICBUaGlzIGlzIHBhcnQgb2YgYSBzZXJpZXMgb2YgcGF0Y2hlcyB0byBpbXBsZW1l
bnQgU3RyZWFtIHN1cHBvcnQuICBTZWU6CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMTAxOTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBUZXN0czogd2lsbCBiZSBhZGRlZCB3aGVuIGpzIGJpbmRpbmcgaXMg
YWRkZWQuCisKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuY3BwOgorICAgICAg
ICAqIGZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5oOgorCiAyMDEzLTAyLTIxICBEaW1pdHJpIEds
YXprb3YgIDxkZ2xhemtvdkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgU3BsaXQgU2VsZWN0b3JD
aGVja2VyJ3MgZmFzdC1jaGVja2luZyBsb2dpYyBpbnRvIGl0cyBvd24gY2xhc3MuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmNwcAppbmRleCBmMjRjZGM4MmZiYzIy
MzEyYTQ0OTdmY2IyYzE3YzY0YWJjN2JlODYzLi5jOTRiMWU2NzBlNzk1NmRiYjI2NmFhNDQzNWYy
NTgxMThhZjIyN2VlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFk
ZXJMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRl
ci5jcHAKQEAgLTU0LDEzICs1NCwxOSBAQCB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKK2NvbnN0IGludCBkZWZhdWx0QnVmZmVyTGVuZ3RoID0gMzI3Njg7CisK
IEZpbGVSZWFkZXJMb2FkZXI6OkZpbGVSZWFkZXJMb2FkZXIoUmVhZFR5cGUgcmVhZFR5cGUsIEZp
bGVSZWFkZXJMb2FkZXJDbGllbnQqIGNsaWVudCkKICAgICA6IG1fcmVhZFR5cGUocmVhZFR5cGUp
CiAgICAgLCBtX2NsaWVudChjbGllbnQpCiAgICAgLCBtX2lzUmF3RGF0YUNvbnZlcnRlZChmYWxz
ZSkKICAgICAsIG1fc3RyaW5nUmVzdWx0KCIiKQorICAgICwgbV92YXJpYWJsZUxlbmd0aChmYWxz
ZSkKICAgICAsIG1fYnl0ZXNMb2FkZWQoMCkKICAgICAsIG1fdG90YWxCeXRlcygwKQorICAgICwg
bV9oYXNSYW5nZShmYWxzZSkKKyAgICAsIG1fcmFuZ2VTdGFydCgwKQorICAgICwgbV9yYW5nZUVu
ZCgwKQogICAgICwgbV9lcnJvckNvZGUoMCkKIHsKIH0KQEAgLTg1LDYgKzkxLDggQEAgdm9pZCBG
aWxlUmVhZGVyTG9hZGVyOjpzdGFydChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVj
dXRpb25Db250ZXh0LCBCbG8KICAgICAvLyBDb25zdHJ1Y3QgYW5kIGxvYWQgdGhlIHJlcXVlc3Qu
CiAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QobV91cmxGb3JSZWFkaW5nKTsKICAgICByZXF1
ZXN0LnNldEhUVFBNZXRob2QoIkdFVCIpOworICAgIGlmIChtX2hhc1JhbmdlKQorICAgICAgICBy
ZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZCgiUmFuZ2UiLCBTdHJpbmc6OmZvcm1hdCgiYnl0ZXM9
JWQtJWQiLCBtX3JhbmdlU3RhcnQsIG1fcmFuZ2VFbmQpKTsKIAogICAgIFRocmVhZGFibGVMb2Fk
ZXJPcHRpb25zIG9wdGlvbnM7CiAgICAgb3B0aW9ucy5zZW5kTG9hZENhbGxiYWNrcyA9IFNlbmRD
YWxsYmFja3M7CkBAIC0xMzMsNiArMTQxLDE2IEBAIHZvaWQgRmlsZVJlYWRlckxvYWRlcjo6ZGlk
UmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmCiAK
ICAgICB1bnNpZ25lZCBsb25nIGxvbmcgbGVuZ3RoID0gcmVzcG9uc2UuZXhwZWN0ZWRDb250ZW50
TGVuZ3RoKCk7CiAKKyAgICAvLyBBIHZhbHVlIGxhcmdlciB0aGFuIElOVF9NQVggbWVhbnMgdGhh
dCB0aGUgY29udGVudCBsZW5ndGggd2Fzbid0CisgICAgLy8gc3BlY2lmaWVkLCBzbyB0aGUgYnVm
ZmVyIHdpbGwgbmVlZCB0byBiZSBkeW5hbWljYWxseSBncm93bi4KKyAgICBpZiAobGVuZ3RoID4g
SU5UX01BWCkgeworICAgICAgICBtX3ZhcmlhYmxlTGVuZ3RoID0gdHJ1ZTsKKyAgICAgICAgaWYg
KG1faGFzUmFuZ2UpCisgICAgICAgICAgICBsZW5ndGggPSAxICsgbV9yYW5nZUVuZCAtIG1fcmFu
Z2VTdGFydDsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbGVuZ3RoID0gZGVmYXVsdEJ1ZmZl
ckxlbmd0aDsKKyAgICB9CisKICAgICAvLyBDaGVjayB0aGF0IHdlIGNhbiBjYXN0IHRvIHVuc2ln
bmVkIHNpbmNlIHdlIGhhdmUgdG8gZG8KICAgICAvLyBzbyB0byBjYWxsIEFycmF5QnVmZmVyJ3Mg
Y3JlYXRlIGZ1bmN0aW9uLgogICAgIC8vIEZJWE1FOiBTdXBwb3J0IHJlYWRpbmcgbW9yZSB0aGFu
IHRoZSBjdXJyZW50IHNpemUgbGltaXQgb2YgQXJyYXlCdWZmZXIuCkBAIC0xNjYsOCArMTg0LDI1
IEBAIHZvaWQgRmlsZVJlYWRlckxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogZGF0
YSwgaW50IGRhdGFMZW5ndGgpCiAKICAgICBpbnQgbGVuZ3RoID0gZGF0YUxlbmd0aDsKICAgICB1
bnNpZ25lZCByZW1haW5pbmdCdWZmZXJTcGFjZSA9IG1fdG90YWxCeXRlcyAtIG1fYnl0ZXNMb2Fk
ZWQ7Ci0gICAgaWYgKGxlbmd0aCA+IHN0YXRpY19jYXN0PGxvbmcgbG9uZz4ocmVtYWluaW5nQnVm
ZmVyU3BhY2UpKQotICAgICAgICBsZW5ndGggPSBzdGF0aWNfY2FzdDxpbnQ+KHJlbWFpbmluZ0J1
ZmZlclNwYWNlKTsKKyAgICBpZiAobGVuZ3RoID4gc3RhdGljX2Nhc3Q8bG9uZyBsb25nPihyZW1h
aW5pbmdCdWZmZXJTcGFjZSkpIHsKKyAgICAgICAgLy8gSWYgdGhlIGJ1ZmZlciBoYXMgaGl0IG1h
eGltdW0gc2l6ZSwgaXQgY2FuJ3QgYmUgZ3Jvd24gYW55IG1vcmUuCisgICAgICAgIGlmIChtX3Rv
dGFsQnl0ZXMgPj0gbnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkgeworICAgICAgICAg
ICAgZmFpbGVkKEZpbGVFcnJvcjo6Tk9UX1JFQURBQkxFX0VSUik7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKyAgICAgICAgaWYgKG1fdmFyaWFibGVMZW5ndGgpIHsKKyAgICAgICAg
ICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBuZXdMZW5ndGggPSBtX3RvdGFsQnl0ZXMgKiAyOworICAg
ICAgICAgICAgaWYgKG5ld0xlbmd0aCA+IG51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkp
CisgICAgICAgICAgICAgICAgbmV3TGVuZ3RoID0gbnVtZXJpY19saW1pdHM8dW5zaWduZWQ+Ojpt
YXgoKTsKKyAgICAgICAgICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gbmV3RGF0YSA9CisgICAgICAg
ICAgICAgICAgQXJyYXlCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4obmV3TGVu
Z3RoKSwgMSk7CisgICAgICAgICAgICBtZW1jcHkoc3RhdGljX2Nhc3Q8Y2hhcio+KG5ld0RhdGEt
PmRhdGEoKSksIHN0YXRpY19jYXN0PGNoYXIqPihtX3Jhd0RhdGEtPmRhdGEoKSksIG1fYnl0ZXNM
b2FkZWQpOworCisgICAgICAgICAgICBtX3Jhd0RhdGEgPSBuZXdEYXRhOworICAgICAgICAgICAg
bV90b3RhbEJ5dGVzID0gbmV3TGVuZ3RoOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGxl
bmd0aCA9IHJlbWFpbmluZ0J1ZmZlclNwYWNlOworICAgIH0KIAogICAgIGlmIChsZW5ndGggPD0g
MCkKICAgICAgICAgcmV0dXJuOwpAQCAtMTgzLDYgKzIxOCwxMiBAQCB2b2lkIEZpbGVSZWFkZXJM
b2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQog
CiB2b2lkIEZpbGVSZWFkZXJMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcodW5zaWduZWQgbG9uZywg
ZG91YmxlKQogeworICAgIGlmIChtX3ZhcmlhYmxlTGVuZ3RoICYmIG1fdG90YWxCeXRlcyA+IG1f
Ynl0ZXNMb2FkZWQpIHsKKyAgICAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBuZXdEYXRhID0gbV9y
YXdEYXRhLT5zbGljZSgwLCBtX2J5dGVzTG9hZGVkKTsKKworICAgICAgICBtX3Jhd0RhdGEgPSBu
ZXdEYXRhOworICAgICAgICBtX3RvdGFsQnl0ZXMgPSBtX2J5dGVzTG9hZGVkOworICAgIH0KICAg
ICBjbGVhbnVwKCk7CiAgICAgaWYgKG1fY2xpZW50KQogICAgICAgICBtX2NsaWVudC0+ZGlkRmlu
aXNoTG9hZGluZygpOwpAQCAtMjMzLDkgKzI3NCwzMCBAQCBQYXNzUmVmUHRyPEFycmF5QnVmZmVy
PiBGaWxlUmVhZGVyTG9hZGVyOjphcnJheUJ1ZmZlclJlc3VsdCgpIGNvbnN0CiAgICAgcmV0dXJu
IEFycmF5QnVmZmVyOjpjcmVhdGUobV9yYXdEYXRhLmdldCgpKTsKIH0KIAorUGFzc1JlZlB0cjxC
bG9iPiBGaWxlUmVhZGVyTG9hZGVyOjpibG9iUmVzdWx0KCkKK3sKKyAgICBBU1NFUlQobV9yZWFk
VHlwZSA9PSBSZWFkQXNCbG9iKTsKKworICAgIC8vIElmIHRoZSBsb2FkaW5nIGlzIG5vdCBmaW5p
c2hlZCBvciBhbiBlcnJvciBvY2N1cnMsIHJldHVybiBhbiBlbXB0eSByZXN1bHQuCisgICAgaWYg
KCFtX3Jhd0RhdGEgfHwgbV9lcnJvckNvZGUgfHwgIWlzQ29tcGxldGVkKCkpCisgICAgICAgIHJl
dHVybiAwOworCisgICAgaWYgKCFtX2Jsb2JSZXN1bHQpIHsKKyAgICAgICAgT3duUHRyPEJsb2JE
YXRhPiBibG9iRGF0YSA9IEJsb2JEYXRhOjpjcmVhdGUoKTsKKyAgICAgICAgc2l6ZV90IHNpemUg
PSAwOworICAgICAgICBSZWZQdHI8UmF3RGF0YT4gcmF3RGF0YSA9IFJhd0RhdGE6OmNyZWF0ZSgp
OworICAgICAgICBzaXplID0gbV9yYXdEYXRhLT5ieXRlTGVuZ3RoKCk7CisgICAgICAgIHJhd0Rh
dGEtPm11dGFibGVEYXRhKCktPmFwcGVuZChzdGF0aWNfY2FzdDxjaGFyKj4obV9yYXdEYXRhLT5k
YXRhKCkpLCBzaXplKTsKKyAgICAgICAgYmxvYkRhdGEtPmFwcGVuZERhdGEocmF3RGF0YSwgMCwg
c2l6ZSk7CisgICAgICAgIGJsb2JEYXRhLT5zZXRDb250ZW50VHlwZShtX2RhdGFUeXBlKTsKKyAg
ICAgICAgbV9ibG9iUmVzdWx0ID0gQmxvYjo6Y3JlYXRlKGJsb2JEYXRhLnJlbGVhc2UoKSwgc2l6
ZSk7CisgICAgfQorICAgIHJldHVybiBtX2Jsb2JSZXN1bHQ7Cit9CisKIFN0cmluZyBGaWxlUmVh
ZGVyTG9hZGVyOjpzdHJpbmdSZXN1bHQoKQogewotICAgIEFTU0VSVChtX3JlYWRUeXBlICE9IFJl
YWRBc0FycmF5QnVmZmVyKTsKKyAgICBBU1NFUlQobV9yZWFkVHlwZSAhPSBSZWFkQXNBcnJheUJ1
ZmZlciAmJiBtX3JlYWRUeXBlICE9IFJlYWRBc0Jsb2IpOwogCiAgICAgLy8gSWYgdGhlIGxvYWRp
bmcgaXMgbm90IHN0YXJ0ZWQgb3IgYW4gZXJyb3Igb2NjdXJzLCByZXR1cm4gYW4gZW1wdHkgcmVz
dWx0LgogICAgIGlmICghbV9yYXdEYXRhIHx8IG1fZXJyb3JDb2RlKQpAQCAtMzIwLDYgKzM4Miwx
NCBAQCB2b2lkIEZpbGVSZWFkZXJMb2FkZXI6OnNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYgZW5j
b2RpbmcpCiAgICAgICAgIG1fZW5jb2RpbmcgPSBUZXh0RW5jb2RpbmcoZW5jb2RpbmcpOwogfQog
Cit2b2lkIEZpbGVSZWFkZXJMb2FkZXI6OnNldFJhbmdlKHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25l
ZCBsZW5ndGgpCit7CisgICAgQVNTRVJUKGxlbmd0aCA+IDApOworICAgIG1faGFzUmFuZ2UgPSB0
cnVlOworICAgIG1fcmFuZ2VTdGFydCA9IHN0YXJ0OworICAgIG1fcmFuZ2VFbmQgPSBzdGFydCAr
IGxlbmd0aCAtIDE7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKICAKICNlbmRpZiAvLyBF
TkFCTEUoQkxPQikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRl
ckxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmgKaW5k
ZXggMzRmNTQzODdiMmUzMDM0YTdlODMyNTlkMTI2MDc3ZTQzYzhiNzdkZC4uZDQ4YjZiOGQ4NGQ0
ZGZkZTU4OGVkOGM0Yzk0NjgwYjgzODk3ZmNiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9G
aWxlUmVhZGVyTG9hZGVyLmgKQEAgLTUzLDYgKzUzLDcgQEAgcHVibGljOgogICAgIGVudW0gUmVh
ZFR5cGUgewogICAgICAgICBSZWFkQXNBcnJheUJ1ZmZlciwKICAgICAgICAgUmVhZEFzQmluYXJ5
U3RyaW5nLAorICAgICAgICBSZWFkQXNCbG9iLAogICAgICAgICBSZWFkQXNUZXh0LAogICAgICAg
ICBSZWFkQXNEYXRhVVJMCiAgICAgfTsKQEAgLTcyLDEzICs3MywxNSBAQCBwdWJsaWM6CiAKICAg
ICBTdHJpbmcgc3RyaW5nUmVzdWx0KCk7CiAgICAgUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gYXJy
YXlCdWZmZXJSZXN1bHQoKSBjb25zdDsKKyAgICBQYXNzUmVmUHRyPEJsb2I+IGJsb2JSZXN1bHQo
KTsKICAgICB1bnNpZ25lZCBieXRlc0xvYWRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYnl0ZXNMb2Fk
ZWQ7IH0KICAgICB1bnNpZ25lZCB0b3RhbEJ5dGVzKCkgY29uc3QgeyByZXR1cm4gbV90b3RhbEJ5
dGVzOyB9CiAgICAgaW50IGVycm9yQ29kZSgpIGNvbnN0IHsgcmV0dXJuIG1fZXJyb3JDb2RlOyB9
CiAKICAgICB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgc2V0RGF0
YVR5cGUoY29uc3QgU3RyaW5nJiBkYXRhVHlwZSkgeyBtX2RhdGFUeXBlID0gZGF0YVR5cGU7IH0K
LSAgICAKKyAgICB2b2lkIHNldFJhbmdlKHVuc2lnbmVkLCB1bnNpZ25lZCk7CisKIHByaXZhdGU6
CiAgICAgdm9pZCB0ZXJtaW5hdGUoKTsKICAgICB2b2lkIGNsZWFudXAoKTsKQEAgLTEwMiwxMiAr
MTA1LDE5IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzUmF3RGF0YUNvbnZlcnRlZDsKIAogICAg
IFN0cmluZyBtX3N0cmluZ1Jlc3VsdDsKKyAgICBSZWZQdHI8QmxvYj4gbV9ibG9iUmVzdWx0Owog
CiAgICAgLy8gVGhlIGRlY29kZXIgdXNlZCB0byBkZWNvZGUgdGhlIHRleHQgZGF0YS4KICAgICBS
ZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gbV9kZWNvZGVyOwogCisgICAgYm9vbCBtX3Zhcmlh
YmxlTGVuZ3RoOwogICAgIHVuc2lnbmVkIG1fYnl0ZXNMb2FkZWQ7CiAgICAgdW5zaWduZWQgbV90
b3RhbEJ5dGVzOworCisgICAgYm9vbCBtX2hhc1JhbmdlOworICAgIHVuc2lnbmVkIG1fcmFuZ2VT
dGFydDsKKyAgICB1bnNpZ25lZCBtX3JhbmdlRW5kOworCiAgICAgaW50IG1fZXJyb3JDb2RlOwog
fTsKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>