<?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>83302</bug_id>
          
          <creation_ts>2012-04-05 11:51:22 -0700</creation_ts>
          <short_desc>IndexedDB: Refactor cursor iteration to remove duplicate code</short_desc>
          <delta_ts>2012-04-12 15:19:40 -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>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>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Alec Flett">alecflett</reporter>
          <assigned_to name="Alec Flett">alecflett</assigned_to>
          <cc>abarth</cc>
    
    <cc>dgrogan</cc>
    
    <cc>dpranke</cc>
    
    <cc>jsbell</cc>
    
    <cc>levin</cc>
    
    <cc>ojan</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>596762</commentid>
    <comment_count>0</comment_count>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-04-05 11:51:22 -0700</bug_when>
    <thetext>IndexedDB: Refactor cursor iteration to remove duplicate code</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>596765</commentid>
    <comment_count>1</comment_count>
      <attachid>135871</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-04-05 11:56:54 -0700</bug_when>
    <thetext>Created attachment 135871
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>596769</commentid>
    <comment_count>2</comment_count>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-04-05 11:59:40 -0700</bug_when>
    <thetext>dgrogan@ mind taking a look - this is in preparation for my first actual fix..</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>596795</commentid>
    <comment_count>3</comment_count>
      <attachid>135871</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-04-05 12:28:55 -0700</bug_when>
    <thetext>Comment on attachment 135871
Patch

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

&gt; Source/WebCore/Modules/indexeddb/IDBLevelDBBackingStore.cpp:1018
&gt; +    bool checkCurrentBoundaries() const;

Boundaries don&apos;t change, so is &quot;Current&quot; needed? Maybe rename to &quot;isInBounds&quot;? But it also only checks the end boundary - can that be captured in the name?

&gt; Source/WebCore/Modules/indexeddb/IDBLevelDBBackingStore.cpp:1042
&gt; +        // in the very first seek, we&apos;re already in the right

I don&apos;t think this comment is necessary; the behavior it&apos;s describing is implied by the code.

&gt; Source/WebCore/Modules/indexeddb/IDBLevelDBBackingStore.cpp:1060
&gt; +        // check if we&apos;ve advanced past the range

Unnecessary comment, if the method name can be clarified.

&gt; Source/WebCore/Modules/indexeddb/IDBLevelDBBackingStore.cpp:1064
&gt; +        // check if haven&apos;t yet *entered* the range

Nit: Capitalization, grammar, and punctuation.

&gt; Source/WebCore/Modules/indexeddb/IDBLevelDBBackingStore.cpp:1079
&gt; +        // we&apos;ll need more information from the current row to continue

Looking at loadCurrentRow(), it returns false if the row fails to load. So the behavior is to keep iterating if the data is invalid. Can this comment be improved?

&gt; Source/WebCore/Modules/indexeddb/IDBLevelDBBackingStore.cpp:1102
&gt; +// return true if we&apos;re still within the upper/lower bounds of this range

Don&apos;t need this comment.

&gt; Source/WebCore/Modules/indexeddb/IDBLevelDBBackingStore.cpp:1107
&gt; +            // high key not included in range

Nit: capitalize, add period.

&gt; Source/WebCore/Modules/indexeddb/IDBLevelDBBackingStore.cpp:1116
&gt; +            // low key not included in range

Nit: capitalize, add period.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>596884</commentid>
    <comment_count>4</comment_count>
      <attachid>135896</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-04-05 13:54:34 -0700</bug_when>
    <thetext>Created attachment 135896
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>596906</commentid>
    <comment_count>5</comment_count>
      <attachid>135871</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-04-05 14:18:44 -0700</bug_when>
    <thetext>Comment on attachment 135871
Patch

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

&gt;&gt; Source/WebCore/Modules/indexeddb/IDBLevelDBBackingStore.cpp:1018
&gt;&gt; +    bool checkCurrentBoundaries() const;
&gt; 
&gt; Boundaries don&apos;t change, so is &quot;Current&quot; needed? Maybe rename to &quot;isInBounds&quot;? But it also only checks the end boundary - can that be captured in the name?

I reversed it to isPastBounds() and added a clarifying comment (hoping that will make it by the webkit guidelines)

&gt;&gt; Source/WebCore/Modules/indexeddb/IDBLevelDBBackingStore.cpp:1079
&gt;&gt; +        // we&apos;ll need more information from the current row to continue
&gt; 
&gt; Looking at loadCurrentRow(), it returns false if the row fails to load. So the behavior is to keep iterating if the data is invalid. Can this comment be improved?

The semantics of this aren&apos;t great, but this is what was there before - It looks like it&apos;s not really fatal, because sometimes indexes have stale entries and you just have to keep iterating until you find a non-stale entry.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>596965</commentid>
    <comment_count>6</comment_count>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-04-05 15:31:53 -0700</bug_when>
    <thetext>LGTM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>597014</commentid>
    <comment_count>7</comment_count>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-04-05 16:37:31 -0700</bug_when>
    <thetext>tony@ - r? cq?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>597032</commentid>
    <comment_count>8</comment_count>
      <attachid>135896</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-04-05 16:53:34 -0700</bug_when>
    <thetext>Comment on attachment 135896
Patch

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

&gt; Source/WebCore/Modules/indexeddb/IDBLevelDBBackingStore.cpp:1034
&gt; +    return continueFunction(0, true);

Please declare and use an enum rather than a bool.  There are other examples of this in the code base.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>597476</commentid>
    <comment_count>9</comment_count>
      <attachid>136042</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-04-06 10:50:12 -0700</bug_when>
    <thetext>Created attachment 136042
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>597477</commentid>
    <comment_count>10</comment_count>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-04-06 10:51:25 -0700</bug_when>
    <thetext>Comments addressed, enum added.

tony@ - r? cq?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>597486</commentid>
    <comment_count>11</comment_count>
      <attachid>136042</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-04-06 10:58:37 -0700</bug_when>
    <thetext>Comment on attachment 136042
Patch

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

&gt; Source/WebCore/Modules/indexeddb/IDBBackingStore.h:105
&gt; +

Nit: Extra newline?

&gt; Source/WebCore/Modules/indexeddb/IDBLevelDBBackingStore.cpp:983
&gt; +    virtual bool continueFunction(const IDBKey*, IteratorState nextState);

Remove the argument name |nextState|.

&gt; Source/WebCore/Modules/indexeddb/IDBLevelDBBackingStore.cpp:1048
&gt; +        } else
&gt; +            nextState = Seek;

Why do we set nextState here?  It doesn&apos;t look like we use it later on.

&gt; Tools/Scripts/webkitpy/style/checkers/cpp.py:1565
&gt; +        print &quot;parameter: &quot;, canonical_parameter_name
&gt; +        print &quot;Acronym: &quot;, acronym
&gt; +        print &quot;In text: &quot;, canonical_text

Did you mean to include this change?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>597977</commentid>
    <comment_count>12</comment_count>
      <attachid>136132</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-04-07 09:50:06 -0700</bug_when>
    <thetext>Created attachment 136132
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>597979</commentid>
    <comment_count>13</comment_count>
      <attachid>136042</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-04-07 09:53:54 -0700</bug_when>
    <thetext>Comment on attachment 136042
Patch

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

&gt;&gt; Source/WebCore/Modules/indexeddb/IDBBackingStore.h:105
&gt;&gt; +
&gt; 
&gt; Nit: Extra newline?

Done.

&gt;&gt; Source/WebCore/Modules/indexeddb/IDBLevelDBBackingStore.cpp:983
&gt;&gt; +    virtual bool continueFunction(const IDBKey*, IteratorState nextState);
&gt; 
&gt; Remove the argument name |nextState|.

Done.

&gt;&gt; Source/WebCore/Modules/indexeddb/IDBLevelDBBackingStore.cpp:1048
&gt;&gt; +            nextState = Seek;
&gt; 
&gt; Why do we set nextState here?  It doesn&apos;t look like we use it later on.

Added a comment to explain - it&apos;s for the next iteration

&gt;&gt; Tools/Scripts/webkitpy/style/checkers/cpp.py:1565
&gt;&gt; +        print &quot;In text: &quot;, canonical_text
&gt; 
&gt; Did you mean to include this change?

oops! good ol&apos; -a flag :)
Removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>597980</commentid>
    <comment_count>14</comment_count>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-04-07 09:54:28 -0700</bug_when>
    <thetext>Comments addressed

tony@ - r? cq?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>599465</commentid>
    <comment_count>15</comment_count>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-04-10 12:05:41 -0700</bug_when>
    <thetext>tony@ - ping?  r? cq?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>599483</commentid>
    <comment_count>16</comment_count>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-04-10 12:18:33 -0700</bug_when>
    <thetext>oops.. tony is on vacation

ojan@ - r? cr?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600497</commentid>
    <comment_count>17</comment_count>
      <attachid>136132</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-04-11 12:39:09 -0700</bug_when>
    <thetext>Comment on attachment 136132
Patch

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

Mostly a bunch of style nits. I know some of this is copy-pasted from the old code, but I think deleting comments is a small enough change from the old code that it&apos;s OK. :)

&gt; Source/WebCore/Modules/indexeddb/IDBBackingStore.h:93
&gt; +            Ready = 0, // Already in position, don&apos;t advance.
&gt; +            Seek // Seek into position before use.

Nit: Typically we don&apos;t include &quot;what&quot; comments in WebKit code. More &quot;why&quot; comments, e.g. an explanation of why we&apos;re doing something non-obvious. &quot;what&quot; comments tend to get stale and inaccurate and can usually be easily understood by reading the code.

&gt; Source/WebCore/Modules/indexeddb/IDBLevelDBBackingStore.cpp:1060
&gt; +        // Make sure we have *entered* the range.

Instead of adding a comment, you could add a helper function, e.g., haveEnteredRange. Then this code would be:
if (!haveEnteredRange(...))
    continue;

Which is self-describing.

&gt; Source/WebCore/Modules/indexeddb/IDBLevelDBBackingStore.cpp:1063
&gt; +                // lowKey not included in the range.

Ditto re &quot;what&quot; comments here and below.

&gt; Source/WebCore/Modules/indexeddb/IDBLevelDBBackingStore.cpp:1076
&gt; +        // The row may not load because there&apos;s a stale entry in the
&gt; +        // index. This is not fatal.

Good &quot;why&quot; comment. :)

&gt; Source/WebCore/Modules/indexeddb/IDBLevelDBBackingStore.cpp:1100
&gt; +// Returns true if the cursor has gone beyond the bounds, but only in
&gt; +// the direction of the iterator.

&quot;what&quot; comment.

&gt; Source/WebCore/Modules/indexeddb/IDBLevelDBBackingStore.cpp:1119
&gt; +            // High key not included in range.
&gt; +            if (compareIndexKeys(m_iterator-&gt;key(), m_cursorOptions.highKey) &gt;= 0)
&gt; +                return true;
&gt; +        } else {
&gt; +            if (compareIndexKeys(m_iterator-&gt;key(), m_cursorOptions.highKey) &gt; 0)
&gt; +                return true;
&gt; +        }
&gt; +    } else {
&gt; +        if (m_cursorOptions.lowOpen) {
&gt; +            // Low key not included in range.
&gt; +            if (compareIndexKeys(m_iterator-&gt;key(), m_cursorOptions.lowKey) &lt;= 0)
&gt; +                return true;
&gt; +        } else {
&gt; +            if (compareIndexKeys(m_iterator-&gt;key(), m_cursorOptions.lowKey) &lt; 0)
&gt; +                return true;

This is a stylistic thing, but I&apos;d prefer if you returned the comparisons instead of true, e.g.,

if (m_cursorOptions.forward) {
    if (m_cursorPoptions.highOpen)
        return compareIndexKeys(m_iterator-&gt;key(), m_cursorOptions.highKey) &gt;= 0;
    else
        return compareIndexKeys(m_iterator-&gt;key(), m_cursorOptions.highKey) &gt; 0;
} else {

etc.

Makes the logic a bit more clear (and concise) since you don&apos;t have to keep track of what happens after each return.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>601370</commentid>
    <comment_count>18</comment_count>
      <attachid>136934</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-04-12 11:11:30 -0700</bug_when>
    <thetext>Created attachment 136934
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>601375</commentid>
    <comment_count>19</comment_count>
      <attachid>136132</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-04-12 11:13:22 -0700</bug_when>
    <thetext>Comment on attachment 136132
Patch

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

&gt;&gt; Source/WebCore/Modules/indexeddb/IDBLevelDBBackingStore.cpp:1060
&gt;&gt; +        // Make sure we have *entered* the range.
&gt; 
&gt; Instead of adding a comment, you could add a helper function, e.g., haveEnteredRange. Then this code would be:
&gt; if (!haveEnteredRange(...))
&gt;     continue;
&gt; 
&gt; Which is self-describing.

that is nicer. done.

&gt;&gt; Source/WebCore/Modules/indexeddb/IDBLevelDBBackingStore.cpp:1119
&gt;&gt; +                return true;
&gt; 
&gt; This is a stylistic thing, but I&apos;d prefer if you returned the comparisons instead of true, e.g.,
&gt; 
&gt; if (m_cursorOptions.forward) {
&gt;     if (m_cursorPoptions.highOpen)
&gt;         return compareIndexKeys(m_iterator-&gt;key(), m_cursorOptions.highKey) &gt;= 0;
&gt;     else
&gt;         return compareIndexKeys(m_iterator-&gt;key(), m_cursorOptions.highKey) &gt; 0;
&gt; } else {
&gt; 
&gt; etc.
&gt; 
&gt; Makes the logic a bit more clear (and concise) since you don&apos;t have to keep track of what happens after each return.

Not sure I agree with the clarity, but I&apos;ve made the change and applied the same style in the new haveEnteredRange()

All other comments addressed... new patch coming up...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>601377</commentid>
    <comment_count>20</comment_count>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-04-12 11:14:04 -0700</bug_when>
    <thetext>ojan@ can you take another shot at this one r? cq?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>601552</commentid>
    <comment_count>21</comment_count>
      <attachid>136934</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-04-12 14:35:04 -0700</bug_when>
    <thetext>Comment on attachment 136934
Patch

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

Nice cleanup!

&gt; Source/WebCore/Modules/indexeddb/IDBLevelDBBackingStore.cpp:1099
&gt; +
&gt; +        return compareIndexKeys(m_iterator-&gt;key(), m_cursorOptions.lowKey) &gt;= 0;
&gt; +    }
&gt; +    if (m_cursorOptions.highOpen)
&gt; +        return compareIndexKeys(m_iterator-&gt;key(), m_cursorOptions.highKey) &lt; 0;
&gt; +
&gt; +    return compareIndexKeys(m_iterator-&gt;key(), m_cursorOptions.highKey) &lt;= 0;

nit: typically, webkit code wouldn&apos;t have these extra line-breaks. there&apos;s no official style here though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>601575</commentid>
    <comment_count>22</comment_count>
      <attachid>136934</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-12 15:19:33 -0700</bug_when>
    <thetext>Comment on attachment 136934
Patch

Clearing flags on attachment: 136934

Committed r114041: &lt;http://trac.webkit.org/changeset/114041&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>601576</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-12 15:19:40 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>135871</attachid>
            <date>2012-04-05 11:56:54 -0700</date>
            <delta_ts>2012-04-05 14:18:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-83302-20120405115653.patch</filename>
            <type>text/plain</type>
            <size>8095</size>
            <attacher name="Alec Flett">alecflett</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEzMzE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWFhMjQzYTJjMDExZjc0
YmJkNTNlNDY4NGQ2ODEwNjI2MGNkODE1ZS4uMzMxOGM1MGIyNzg0YjM2NDE2YWY3YzFiOTI4Mjgz
NjIwNGMxMGFkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTA0LTA1ICBBbGVj
IEZsZXR0ICA8YWxlY2ZsZXR0QGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IFJl
ZmFjdG9yIGN1cnNvciBpdGVyYXRpb24gdG8gcmVtb3ZlIGR1cGxpY2F0ZSBjb2RlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MzMwMgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgbm8g
YmVoYXZpb3IgY2hhbmdlcy4KKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tp
bmdTdG9yZS5oOgorICAgICAgICAoQ3Vyc29yKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRk
Yi9JREJMZXZlbERCQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorCiAyMDEy
LTA0LTA1ICBQZXRlciBSeWJpbiAgPHBldGVyLnJ5YmluQGdtYWlsLmNvbT4KIAogICAgICAgICBX
ZWIgSW5zcGVjdG9yOiBDb2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5OiBzd2l0Y2ggRmlsZVN5c3Rl
bSwgUHJvZmlsZXIgYW5kIFdvcmtlciBkb21haW5zIHRvIHR5cGVkIEFQSQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuaAppbmRleCBiNWZj
YjNhZDcwN2JmN2NhMTIwNGViZjYxOWRlNzQ3YWEyYmM3YjllLi42ZTgxMTE2NmE4YzcwNGRkNTAw
OTcwM2ExMDllM2ZkNDIxYjgyNTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuaApAQCAtODksNyArODksNyBAQCBwdWJsaWM6CiAg
ICAgY2xhc3MgQ3Vyc29yIDogcHVibGljIFJlZkNvdW50ZWQ8Q3Vyc29yPiB7CiAgICAgcHVibGlj
OgogICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q3Vyc29yPiBjbG9uZSgpID0gMDsKLSAgICAg
ICAgdmlydHVhbCBib29sIGNvbnRpbnVlRnVuY3Rpb24oY29uc3QgSURCS2V5KiA9IDApID0gMDsK
KyAgICAgICAgdmlydHVhbCBib29sIGNvbnRpbnVlRnVuY3Rpb24oY29uc3QgSURCS2V5KiA9IDAs
IGJvb2wgZmlyc3RTZWVrID0gZmFsc2UpID0gMDsKICAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRy
PElEQktleT4ga2V5KCkgPSAwOwogICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCS2V5PiBw
cmltYXJ5S2V5KCkgPSAwOwogICAgICAgICB2aXJ0dWFsIFN0cmluZyB2YWx1ZSgpID0gMDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJCYWNr
aW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxE
QkJhY2tpbmdTdG9yZS5jcHAKaW5kZXggZjFmNmVkNTE0ODIzNWUxMDc4YTUzNDM4NzMxOTE0ZTAw
MzNiMDQ5NC4uZDFlZDMzYjFhZmRhZmJhMDJmZWVmYzI4ZmE2MTU0ZTRmOWNlYzdhOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tpbmdT
dG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxE
QkJhY2tpbmdTdG9yZS5jcHAKQEAgLTk4MCw3ICs5ODAsNyBAQCBzdHJ1Y3QgQ3Vyc29yT3B0aW9u
cyB7CiBjbGFzcyBDdXJzb3JJbXBsQ29tbW9uIDogcHVibGljIElEQkJhY2tpbmdTdG9yZTo6Q3Vy
c29yIHsKIHB1YmxpYzoKICAgICAvLyBJREJCYWNraW5nU3RvcmU6OkN1cnNvcgotICAgIHZpcnR1
YWwgYm9vbCBjb250aW51ZUZ1bmN0aW9uKGNvbnN0IElEQktleSopOworICAgIHZpcnR1YWwgYm9v
bCBjb250aW51ZUZ1bmN0aW9uKGNvbnN0IElEQktleSosIGJvb2wgZmlyc3RTZWVrKTsKICAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8SURCS2V5PiBrZXkoKSB7IHJldHVybiBtX2N1cnJlbnRLZXk7IH0K
ICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCS2V5PiBwcmltYXJ5S2V5KCkgeyByZXR1cm4gbV9j
dXJyZW50S2V5OyB9CiAgICAgdmlydHVhbCBTdHJpbmcgdmFsdWUoKSA9IDA7CkBAIC0xMDE1LDYg
KzEwMTUsOCBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2aXJ0dWFsIH5DdXJzb3JJbXBsQ29tbW9uKCkg
e30KIAorICAgIGJvb2wgY2hlY2tDdXJyZW50Qm91bmRhcmllcygpIGNvbnN0OworCiAgICAgTGV2
ZWxEQlRyYW5zYWN0aW9uKiBtX3RyYW5zYWN0aW9uOwogICAgIEN1cnNvck9wdGlvbnMgbV9jdXJz
b3JPcHRpb25zOwogICAgIE93blB0cjxMZXZlbERCSXRlcmF0b3I+IG1faXRlcmF0b3I7CkBAIC0x
MDI0LDYzICsxMDI2LDMwIEBAIHByb3RlY3RlZDoKIGJvb2wgQ3Vyc29ySW1wbENvbW1vbjo6Zmly
c3RTZWVrKCkKIHsKICAgICBtX2l0ZXJhdG9yID0gbV90cmFuc2FjdGlvbi0+Y3JlYXRlSXRlcmF0
b3IoKTsKLQogICAgIGlmIChtX2N1cnNvck9wdGlvbnMuZm9yd2FyZCkKICAgICAgICAgbV9pdGVy
YXRvci0+c2VlayhtX2N1cnNvck9wdGlvbnMubG93S2V5KTsKICAgICBlbHNlCiAgICAgICAgIG1f
aXRlcmF0b3ItPnNlZWsobV9jdXJzb3JPcHRpb25zLmhpZ2hLZXkpOwogCi0gICAgZm9yICg7Oykg
ewotICAgICAgICBpZiAoIW1faXRlcmF0b3ItPmlzVmFsaWQoKSkKLSAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLQotICAgICAgICBpZiAobV9jdXJzb3JPcHRpb25zLmZvcndhcmQgJiYgbV9jdXJz
b3JPcHRpb25zLmhpZ2hPcGVuICYmIGNvbXBhcmVJbmRleEtleXMobV9pdGVyYXRvci0+a2V5KCks
IG1fY3Vyc29yT3B0aW9ucy5oaWdoS2V5KSA+PSAwKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgICAgICBpZiAobV9jdXJzb3JPcHRpb25zLmZvcndhcmQgJiYgIW1fY3Vyc29yT3B0aW9u
cy5oaWdoT3BlbiAmJiBjb21wYXJlSW5kZXhLZXlzKG1faXRlcmF0b3ItPmtleSgpLCBtX2N1cnNv
ck9wdGlvbnMuaGlnaEtleSkgPiAwKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAg
ICBpZiAoIW1fY3Vyc29yT3B0aW9ucy5mb3J3YXJkICYmIG1fY3Vyc29yT3B0aW9ucy5sb3dPcGVu
ICYmIGNvbXBhcmVJbmRleEtleXMobV9pdGVyYXRvci0+a2V5KCksIG1fY3Vyc29yT3B0aW9ucy5s
b3dLZXkpIDw9IDApCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGlmICghbV9j
dXJzb3JPcHRpb25zLmZvcndhcmQgJiYgIW1fY3Vyc29yT3B0aW9ucy5sb3dPcGVuICYmIGNvbXBh
cmVJbmRleEtleXMobV9pdGVyYXRvci0+a2V5KCksIG1fY3Vyc29yT3B0aW9ucy5sb3dLZXkpIDwg
MCkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gY29udGludWVGdW5jdGlv
bigwLCB0cnVlKTsKK30KIAotICAgICAgICBpZiAobV9jdXJzb3JPcHRpb25zLmZvcndhcmQgJiYg
bV9jdXJzb3JPcHRpb25zLmxvd09wZW4pIHsKLSAgICAgICAgICAgIC8vIGxvd0tleSBub3QgaW5j
bHVkZWQgaW4gdGhlIHJhbmdlLgotICAgICAgICAgICAgaWYgKGNvbXBhcmVJbmRleEtleXMobV9p
dGVyYXRvci0+a2V5KCksIG1fY3Vyc29yT3B0aW9ucy5sb3dLZXkpIDw9IDApIHsKLSAgICAgICAg
ICAgICAgICBtX2l0ZXJhdG9yLT5uZXh0KCk7Ci0gICAgICAgICAgICAgICAgY29udGludWU7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCFtX2N1cnNvck9wdGlvbnMuZm9y
d2FyZCAmJiBtX2N1cnNvck9wdGlvbnMuaGlnaE9wZW4pIHsKLSAgICAgICAgICAgIC8vIGhpZ2hL
ZXkgbm90IGluY2x1ZGVkIGluIHRoZSByYW5nZS4KLSAgICAgICAgICAgIGlmIChjb21wYXJlSW5k
ZXhLZXlzKG1faXRlcmF0b3ItPmtleSgpLCBtX2N1cnNvck9wdGlvbnMuaGlnaEtleSkgPj0gMCkg
ewotICAgICAgICAgICAgICAgIG1faXRlcmF0b3ItPnByZXYoKTsKLSAgICAgICAgICAgICAgICBj
b250aW51ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQorYm9vbCBDdXJzb3JJbXBsQ29tbW9u
Ojpjb250aW51ZUZ1bmN0aW9uKGNvbnN0IElEQktleSoga2V5LCBib29sIGZpcnN0U2VlaykKK3sK
KyAgICBSZWZQdHI8SURCS2V5PiBwcmV2aW91c0tleSA9IG1fY3VycmVudEtleTsKIAotICAgICAg
ICBpZiAoIWxvYWRDdXJyZW50Um93KCkpIHsKKyAgICBmb3IgKDs7KSB7CisgICAgICAgIC8vIGlu
IHRoZSB2ZXJ5IGZpcnN0IHNlZWssIHdlJ3JlIGFscmVhZHkgaW4gdGhlIHJpZ2h0CisgICAgICAg
IC8vIHBvc2l0aW9uLiBBZnRlciB0aGF0IHdlIGNhbiBhZHZhbmNlIGFzIG5vcm1hbC4KKyAgICAg
ICAgaWYgKCFmaXJzdFNlZWspIHsKICAgICAgICAgICAgIGlmIChtX2N1cnNvck9wdGlvbnMuZm9y
d2FyZCkKICAgICAgICAgICAgICAgICBtX2l0ZXJhdG9yLT5uZXh0KCk7CiAgICAgICAgICAgICBl
bHNlCiAgICAgICAgICAgICAgICAgbV9pdGVyYXRvci0+cHJldigpOwotICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBmaXJzdFNlZWsgPSBmYWxzZTsK
ICAgICAgICAgfQogCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLX0KLQotYm9vbCBDdXJz
b3JJbXBsQ29tbW9uOjpjb250aW51ZUZ1bmN0aW9uKGNvbnN0IElEQktleSoga2V5KQotewotICAg
IC8vIEZJWE1FOiBUaGlzIHNoYXJlcyBhIGxvdCBvZiBjb2RlIHdpdGggZmlyc3RTZWVrLgotICAg
IFJlZlB0cjxJREJLZXk+IHByZXZpb3VzS2V5ID0gbV9jdXJyZW50S2V5OwotCi0gICAgZm9yICg7
OykgewotICAgICAgICBpZiAobV9jdXJzb3JPcHRpb25zLmZvcndhcmQpCi0gICAgICAgICAgICBt
X2l0ZXJhdG9yLT5uZXh0KCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1faXRlcmF0b3It
PnByZXYoKTsKLQogICAgICAgICBpZiAoIW1faXRlcmF0b3ItPmlzVmFsaWQoKSkKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKIApAQCAtMTA4OCwxNSArMTA1NywyNiBAQCBib29sIEN1cnNvcklt
cGxDb21tb246OmNvbnRpbnVlRnVuY3Rpb24oY29uc3QgSURCS2V5KiBrZXkpCiAgICAgICAgIGlm
ICghbV90cmFuc2FjdGlvbi0+Z2V0KG1faXRlcmF0b3ItPmtleSgpLCB0cmFzaCkpCiAgICAgICAg
ICAgICAgY29udGludWU7CiAKLSAgICAgICAgaWYgKG1fY3Vyc29yT3B0aW9ucy5mb3J3YXJkICYm
IG1fY3Vyc29yT3B0aW9ucy5oaWdoT3BlbiAmJiBjb21wYXJlSW5kZXhLZXlzKG1faXRlcmF0b3It
PmtleSgpLCBtX2N1cnNvck9wdGlvbnMuaGlnaEtleSkgPj0gMCkgLy8gaGlnaCBrZXkgbm90IGlu
Y2x1ZGVkIGluIHJhbmdlCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGlmICht
X2N1cnNvck9wdGlvbnMuZm9yd2FyZCAmJiAhbV9jdXJzb3JPcHRpb25zLmhpZ2hPcGVuICYmIGNv
bXBhcmVJbmRleEtleXMobV9pdGVyYXRvci0+a2V5KCksIG1fY3Vyc29yT3B0aW9ucy5oaWdoS2V5
KSA+IDApCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGlmICghbV9jdXJzb3JP
cHRpb25zLmZvcndhcmQgJiYgbV9jdXJzb3JPcHRpb25zLmxvd09wZW4gJiYgY29tcGFyZUluZGV4
S2V5cyhtX2l0ZXJhdG9yLT5rZXkoKSwgbV9jdXJzb3JPcHRpb25zLmxvd0tleSkgPD0gMCkgLy8g
bG93IGtleSBub3QgaW5jbHVkZWQgaW4gcmFuZ2UKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgICAgaWYgKCFtX2N1cnNvck9wdGlvbnMuZm9yd2FyZCAmJiAhbV9jdXJzb3JPcHRpb25z
Lmxvd09wZW4gJiYgY29tcGFyZUluZGV4S2V5cyhtX2l0ZXJhdG9yLT5rZXkoKSwgbV9jdXJzb3JP
cHRpb25zLmxvd0tleSkgPCAwKQorICAgICAgICAvLyBjaGVjayBpZiB3ZSd2ZSBhZHZhbmNlZCBw
YXN0IHRoZSByYW5nZQorICAgICAgICBpZiAoIWNoZWNrQ3VycmVudEJvdW5kYXJpZXMoKSkKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKIAorICAgICAgICAvLyBjaGVjayBpZiBoYXZlbid0IHll
dCAqZW50ZXJlZCogdGhlIHJhbmdlCisgICAgICAgIGlmIChtX2N1cnNvck9wdGlvbnMuZm9yd2Fy
ZCkgeworICAgICAgICAgICAgaWYgKG1fY3Vyc29yT3B0aW9ucy5sb3dPcGVuKSB7CisgICAgICAg
ICAgICAgICAgLy8gbG93S2V5IG5vdCBpbmNsdWRlZCBpbiB0aGUgcmFuZ2UuCisgICAgICAgICAg
ICAgICAgaWYgKGNvbXBhcmVJbmRleEtleXMobV9pdGVyYXRvci0+a2V5KCksIG1fY3Vyc29yT3B0
aW9ucy5sb3dLZXkpIDw9IDApCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKG1fY3Vyc29yT3B0aW9u
cy5oaWdoT3BlbikgeworICAgICAgICAgICAgICAgIC8vIGhpZ2hLZXkgbm90IGluY2x1ZGVkIGlu
IHRoZSByYW5nZS4KKyAgICAgICAgICAgICAgICBpZiAoY29tcGFyZUluZGV4S2V5cyhtX2l0ZXJh
dG9yLT5rZXkoKSwgbV9jdXJzb3JPcHRpb25zLmhpZ2hLZXkpID49IDApCisgICAgICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8g
d2UnbGwgbmVlZCBtb3JlIGluZm9ybWF0aW9uIGZyb20gdGhlIGN1cnJlbnQgcm93IHRvIGNvbnRp
bnVlCiAgICAgICAgIGlmICghbG9hZEN1cnJlbnRSb3coKSkKICAgICAgICAgICAgIGNvbnRpbnVl
OwogCkBAIC0xMTE5LDYgKzEwOTksMzEgQEAgYm9vbCBDdXJzb3JJbXBsQ29tbW9uOjpjb250aW51
ZUZ1bmN0aW9uKGNvbnN0IElEQktleSoga2V5KQogICAgIHJldHVybiB0cnVlOwogfQogCisvLyBy
ZXR1cm4gdHJ1ZSBpZiB3ZSdyZSBzdGlsbCB3aXRoaW4gdGhlIHVwcGVyL2xvd2VyIGJvdW5kcyBv
ZiB0aGlzIHJhbmdlCitib29sIEN1cnNvckltcGxDb21tb246OmNoZWNrQ3VycmVudEJvdW5kYXJp
ZXMoKSBjb25zdAoreworICAgIGlmIChtX2N1cnNvck9wdGlvbnMuZm9yd2FyZCkgeworICAgICAg
ICBpZiAobV9jdXJzb3JPcHRpb25zLmhpZ2hPcGVuKSB7CisgICAgICAgICAgICAvLyBoaWdoIGtl
eSBub3QgaW5jbHVkZWQgaW4gcmFuZ2UKKyAgICAgICAgICAgIGlmIChjb21wYXJlSW5kZXhLZXlz
KG1faXRlcmF0b3ItPmtleSgpLCBtX2N1cnNvck9wdGlvbnMuaGlnaEtleSkgPj0gMCkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBp
ZiAoY29tcGFyZUluZGV4S2V5cyhtX2l0ZXJhdG9yLT5rZXkoKSwgbV9jdXJzb3JPcHRpb25zLmhp
Z2hLZXkpID4gMCkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAg
ICB9IGVsc2UgeworICAgICAgICBpZiAobV9jdXJzb3JPcHRpb25zLmxvd09wZW4pIHsKKyAgICAg
ICAgICAgIC8vIGxvdyBrZXkgbm90IGluY2x1ZGVkIGluIHJhbmdlCisgICAgICAgICAgICBpZiAo
Y29tcGFyZUluZGV4S2V5cyhtX2l0ZXJhdG9yLT5rZXkoKSwgbV9jdXJzb3JPcHRpb25zLmxvd0tl
eSkgPD0gMCkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICBpZiAoY29tcGFyZUluZGV4S2V5cyhtX2l0ZXJhdG9yLT5rZXkoKSwgbV9j
dXJzb3JPcHRpb25zLmxvd0tleSkgPCAwKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogY2xhc3MgT2JqZWN0U3Rv
cmVDdXJzb3JJbXBsIDogcHVibGljIEN1cnNvckltcGxDb21tb24gewogcHVibGljOgogICAgIHN0
YXRpYyBQYXNzUmVmUHRyPE9iamVjdFN0b3JlQ3Vyc29ySW1wbD4gY3JlYXRlKExldmVsREJUcmFu
c2FjdGlvbiogdHJhbnNhY3Rpb24sIGNvbnN0IEN1cnNvck9wdGlvbnMmIGN1cnNvck9wdGlvbnMp
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>135896</attachid>
            <date>2012-04-05 13:54:34 -0700</date>
            <delta_ts>2012-04-06 10:50:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-83302-20120405135433.patch</filename>
            <type>text/plain</type>
            <size>7954</size>
            <attacher name="Alec Flett">alecflett</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEzMzE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWFhMjQzYTJjMDExZjc0
YmJkNTNlNDY4NGQ2ODEwNjI2MGNkODE1ZS4uMzMxOGM1MGIyNzg0YjM2NDE2YWY3YzFiOTI4Mjgz
NjIwNGMxMGFkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTA0LTA1ICBBbGVj
IEZsZXR0ICA8YWxlY2ZsZXR0QGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IFJl
ZmFjdG9yIGN1cnNvciBpdGVyYXRpb24gdG8gcmVtb3ZlIGR1cGxpY2F0ZSBjb2RlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MzMwMgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgbm8g
YmVoYXZpb3IgY2hhbmdlcy4KKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tp
bmdTdG9yZS5oOgorICAgICAgICAoQ3Vyc29yKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRk
Yi9JREJMZXZlbERCQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorCiAyMDEy
LTA0LTA1ICBQZXRlciBSeWJpbiAgPHBldGVyLnJ5YmluQGdtYWlsLmNvbT4KIAogICAgICAgICBX
ZWIgSW5zcGVjdG9yOiBDb2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5OiBzd2l0Y2ggRmlsZVN5c3Rl
bSwgUHJvZmlsZXIgYW5kIFdvcmtlciBkb21haW5zIHRvIHR5cGVkIEFQSQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuaAppbmRleCBiNWZj
YjNhZDcwN2JmN2NhMTIwNGViZjYxOWRlNzQ3YWEyYmM3YjllLi42ZTgxMTE2NmE4YzcwNGRkNTAw
OTcwM2ExMDllM2ZkNDIxYjgyNTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuaApAQCAtODksNyArODksNyBAQCBwdWJsaWM6CiAg
ICAgY2xhc3MgQ3Vyc29yIDogcHVibGljIFJlZkNvdW50ZWQ8Q3Vyc29yPiB7CiAgICAgcHVibGlj
OgogICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q3Vyc29yPiBjbG9uZSgpID0gMDsKLSAgICAg
ICAgdmlydHVhbCBib29sIGNvbnRpbnVlRnVuY3Rpb24oY29uc3QgSURCS2V5KiA9IDApID0gMDsK
KyAgICAgICAgdmlydHVhbCBib29sIGNvbnRpbnVlRnVuY3Rpb24oY29uc3QgSURCS2V5KiA9IDAs
IGJvb2wgZmlyc3RTZWVrID0gZmFsc2UpID0gMDsKICAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRy
PElEQktleT4ga2V5KCkgPSAwOwogICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCS2V5PiBw
cmltYXJ5S2V5KCkgPSAwOwogICAgICAgICB2aXJ0dWFsIFN0cmluZyB2YWx1ZSgpID0gMDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJCYWNr
aW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxE
QkJhY2tpbmdTdG9yZS5jcHAKaW5kZXggZjFmNmVkNTE0ODIzNWUxMDc4YTUzNDM4NzMxOTE0ZTAw
MzNiMDQ5NC4uZWY0MWIyZThjMTM3ZTAzZDQ4M2I0MTNiMjQ3ZmUyNGU2MDViNmM2MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tpbmdT
dG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxE
QkJhY2tpbmdTdG9yZS5jcHAKQEAgLTk4MCw3ICs5ODAsNyBAQCBzdHJ1Y3QgQ3Vyc29yT3B0aW9u
cyB7CiBjbGFzcyBDdXJzb3JJbXBsQ29tbW9uIDogcHVibGljIElEQkJhY2tpbmdTdG9yZTo6Q3Vy
c29yIHsKIHB1YmxpYzoKICAgICAvLyBJREJCYWNraW5nU3RvcmU6OkN1cnNvcgotICAgIHZpcnR1
YWwgYm9vbCBjb250aW51ZUZ1bmN0aW9uKGNvbnN0IElEQktleSopOworICAgIHZpcnR1YWwgYm9v
bCBjb250aW51ZUZ1bmN0aW9uKGNvbnN0IElEQktleSosIGJvb2wgZmlyc3RTZWVrKTsKICAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8SURCS2V5PiBrZXkoKSB7IHJldHVybiBtX2N1cnJlbnRLZXk7IH0K
ICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCS2V5PiBwcmltYXJ5S2V5KCkgeyByZXR1cm4gbV9j
dXJyZW50S2V5OyB9CiAgICAgdmlydHVhbCBTdHJpbmcgdmFsdWUoKSA9IDA7CkBAIC0xMDE1LDYg
KzEwMTUsOCBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2aXJ0dWFsIH5DdXJzb3JJbXBsQ29tbW9uKCkg
e30KIAorICAgIGJvb2wgaXNQYXN0Qm91bmRzKCkgY29uc3Q7CisKICAgICBMZXZlbERCVHJhbnNh
Y3Rpb24qIG1fdHJhbnNhY3Rpb247CiAgICAgQ3Vyc29yT3B0aW9ucyBtX2N1cnNvck9wdGlvbnM7
CiAgICAgT3duUHRyPExldmVsREJJdGVyYXRvcj4gbV9pdGVyYXRvcjsKQEAgLTEwMjQsNjMgKzEw
MjYsMjggQEAgcHJvdGVjdGVkOgogYm9vbCBDdXJzb3JJbXBsQ29tbW9uOjpmaXJzdFNlZWsoKQog
ewogICAgIG1faXRlcmF0b3IgPSBtX3RyYW5zYWN0aW9uLT5jcmVhdGVJdGVyYXRvcigpOwotCiAg
ICAgaWYgKG1fY3Vyc29yT3B0aW9ucy5mb3J3YXJkKQogICAgICAgICBtX2l0ZXJhdG9yLT5zZWVr
KG1fY3Vyc29yT3B0aW9ucy5sb3dLZXkpOwogICAgIGVsc2UKICAgICAgICAgbV9pdGVyYXRvci0+
c2VlayhtX2N1cnNvck9wdGlvbnMuaGlnaEtleSk7CiAKLSAgICBmb3IgKDs7KSB7Ci0gICAgICAg
IGlmICghbV9pdGVyYXRvci0+aXNWYWxpZCgpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
Ci0gICAgICAgIGlmIChtX2N1cnNvck9wdGlvbnMuZm9yd2FyZCAmJiBtX2N1cnNvck9wdGlvbnMu
aGlnaE9wZW4gJiYgY29tcGFyZUluZGV4S2V5cyhtX2l0ZXJhdG9yLT5rZXkoKSwgbV9jdXJzb3JP
cHRpb25zLmhpZ2hLZXkpID49IDApCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
IGlmIChtX2N1cnNvck9wdGlvbnMuZm9yd2FyZCAmJiAhbV9jdXJzb3JPcHRpb25zLmhpZ2hPcGVu
ICYmIGNvbXBhcmVJbmRleEtleXMobV9pdGVyYXRvci0+a2V5KCksIG1fY3Vyc29yT3B0aW9ucy5o
aWdoS2V5KSA+IDApCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGlmICghbV9j
dXJzb3JPcHRpb25zLmZvcndhcmQgJiYgbV9jdXJzb3JPcHRpb25zLmxvd09wZW4gJiYgY29tcGFy
ZUluZGV4S2V5cyhtX2l0ZXJhdG9yLT5rZXkoKSwgbV9jdXJzb3JPcHRpb25zLmxvd0tleSkgPD0g
MCkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgaWYgKCFtX2N1cnNvck9wdGlv
bnMuZm9yd2FyZCAmJiAhbV9jdXJzb3JPcHRpb25zLmxvd09wZW4gJiYgY29tcGFyZUluZGV4S2V5
cyhtX2l0ZXJhdG9yLT5rZXkoKSwgbV9jdXJzb3JPcHRpb25zLmxvd0tleSkgPCAwKQotICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBjb250aW51ZUZ1bmN0aW9uKDAsIHRydWUp
OworfQogCi0gICAgICAgIGlmIChtX2N1cnNvck9wdGlvbnMuZm9yd2FyZCAmJiBtX2N1cnNvck9w
dGlvbnMubG93T3BlbikgewotICAgICAgICAgICAgLy8gbG93S2V5IG5vdCBpbmNsdWRlZCBpbiB0
aGUgcmFuZ2UuCi0gICAgICAgICAgICBpZiAoY29tcGFyZUluZGV4S2V5cyhtX2l0ZXJhdG9yLT5r
ZXkoKSwgbV9jdXJzb3JPcHRpb25zLmxvd0tleSkgPD0gMCkgewotICAgICAgICAgICAgICAgIG1f
aXRlcmF0b3ItPm5leHQoKTsKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgfQotICAgICAgICBpZiAoIW1fY3Vyc29yT3B0aW9ucy5mb3J3YXJkICYmIG1f
Y3Vyc29yT3B0aW9ucy5oaWdoT3BlbikgewotICAgICAgICAgICAgLy8gaGlnaEtleSBub3QgaW5j
bHVkZWQgaW4gdGhlIHJhbmdlLgotICAgICAgICAgICAgaWYgKGNvbXBhcmVJbmRleEtleXMobV9p
dGVyYXRvci0+a2V5KCksIG1fY3Vyc29yT3B0aW9ucy5oaWdoS2V5KSA+PSAwKSB7Ci0gICAgICAg
ICAgICAgICAgbV9pdGVyYXRvci0+cHJldigpOwotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwot
ICAgICAgICAgICAgfQotICAgICAgICB9Citib29sIEN1cnNvckltcGxDb21tb246OmNvbnRpbnVl
RnVuY3Rpb24oY29uc3QgSURCS2V5KiBrZXksIGJvb2wgZmlyc3RTZWVrKQoreworICAgIFJlZlB0
cjxJREJLZXk+IHByZXZpb3VzS2V5ID0gbV9jdXJyZW50S2V5OwogCi0gICAgICAgIGlmICghbG9h
ZEN1cnJlbnRSb3coKSkgeworICAgIGZvciAoOzspIHsKKyAgICAgICAgaWYgKCFmaXJzdFNlZWsp
IHsKICAgICAgICAgICAgIGlmIChtX2N1cnNvck9wdGlvbnMuZm9yd2FyZCkKICAgICAgICAgICAg
ICAgICBtX2l0ZXJhdG9yLT5uZXh0KCk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAg
ICAgbV9pdGVyYXRvci0+cHJldigpOwotICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICBmaXJzdFNlZWsgPSBmYWxzZTsKICAgICAgICAgfQogCi0gICAg
ICAgIHJldHVybiB0cnVlOwotICAgIH0KLX0KLQotYm9vbCBDdXJzb3JJbXBsQ29tbW9uOjpjb250
aW51ZUZ1bmN0aW9uKGNvbnN0IElEQktleSoga2V5KQotewotICAgIC8vIEZJWE1FOiBUaGlzIHNo
YXJlcyBhIGxvdCBvZiBjb2RlIHdpdGggZmlyc3RTZWVrLgotICAgIFJlZlB0cjxJREJLZXk+IHBy
ZXZpb3VzS2V5ID0gbV9jdXJyZW50S2V5OwotCi0gICAgZm9yICg7OykgewotICAgICAgICBpZiAo
bV9jdXJzb3JPcHRpb25zLmZvcndhcmQpCi0gICAgICAgICAgICBtX2l0ZXJhdG9yLT5uZXh0KCk7
Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1faXRlcmF0b3ItPnByZXYoKTsKLQogICAgICAg
ICBpZiAoIW1faXRlcmF0b3ItPmlzVmFsaWQoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
IApAQCAtMTA4OCwxNSArMTA1NSwyNiBAQCBib29sIEN1cnNvckltcGxDb21tb246OmNvbnRpbnVl
RnVuY3Rpb24oY29uc3QgSURCS2V5KiBrZXkpCiAgICAgICAgIGlmICghbV90cmFuc2FjdGlvbi0+
Z2V0KG1faXRlcmF0b3ItPmtleSgpLCB0cmFzaCkpCiAgICAgICAgICAgICAgY29udGludWU7CiAK
LSAgICAgICAgaWYgKG1fY3Vyc29yT3B0aW9ucy5mb3J3YXJkICYmIG1fY3Vyc29yT3B0aW9ucy5o
aWdoT3BlbiAmJiBjb21wYXJlSW5kZXhLZXlzKG1faXRlcmF0b3ItPmtleSgpLCBtX2N1cnNvck9w
dGlvbnMuaGlnaEtleSkgPj0gMCkgLy8gaGlnaCBrZXkgbm90IGluY2x1ZGVkIGluIHJhbmdlCi0g
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGlmIChtX2N1cnNvck9wdGlvbnMuZm9y
d2FyZCAmJiAhbV9jdXJzb3JPcHRpb25zLmhpZ2hPcGVuICYmIGNvbXBhcmVJbmRleEtleXMobV9p
dGVyYXRvci0+a2V5KCksIG1fY3Vyc29yT3B0aW9ucy5oaWdoS2V5KSA+IDApCi0gICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGlmICghbV9jdXJzb3JPcHRpb25zLmZvcndhcmQgJiYg
bV9jdXJzb3JPcHRpb25zLmxvd09wZW4gJiYgY29tcGFyZUluZGV4S2V5cyhtX2l0ZXJhdG9yLT5r
ZXkoKSwgbV9jdXJzb3JPcHRpb25zLmxvd0tleSkgPD0gMCkgLy8gbG93IGtleSBub3QgaW5jbHVk
ZWQgaW4gcmFuZ2UKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgaWYgKCFtX2N1
cnNvck9wdGlvbnMuZm9yd2FyZCAmJiAhbV9jdXJzb3JPcHRpb25zLmxvd09wZW4gJiYgY29tcGFy
ZUluZGV4S2V5cyhtX2l0ZXJhdG9yLT5rZXkoKSwgbV9jdXJzb3JPcHRpb25zLmxvd0tleSkgPCAw
KQorICAgICAgICBpZiAoaXNQYXN0Qm91bmRzKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAKKyAgICAgICAgLy8gTWFrZSBzdXJlIHdlIGhhdmUgKmVudGVyZWQqIHRoZSByYW5nZS4KKyAg
ICAgICAgaWYgKG1fY3Vyc29yT3B0aW9ucy5mb3J3YXJkKSB7CisgICAgICAgICAgICBpZiAobV9j
dXJzb3JPcHRpb25zLmxvd09wZW4pIHsKKyAgICAgICAgICAgICAgICAvLyBsb3dLZXkgbm90IGlu
Y2x1ZGVkIGluIHRoZSByYW5nZS4KKyAgICAgICAgICAgICAgICBpZiAoY29tcGFyZUluZGV4S2V5
cyhtX2l0ZXJhdG9yLT5rZXkoKSwgbV9jdXJzb3JPcHRpb25zLmxvd0tleSkgPD0gMCkKKyAgICAg
ICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICBpZiAobV9jdXJzb3JPcHRpb25zLmhpZ2hPcGVuKSB7CisgICAgICAgICAg
ICAgICAgLy8gaGlnaEtleSBub3QgaW5jbHVkZWQgaW4gdGhlIHJhbmdlLgorICAgICAgICAgICAg
ICAgIGlmIChjb21wYXJlSW5kZXhLZXlzKG1faXRlcmF0b3ItPmtleSgpLCBtX2N1cnNvck9wdGlv
bnMuaGlnaEtleSkgPj0gMCkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBUaGUgcm93IG1heSBub3QgbG9hZCBiZWNh
dXNlIHRoZXJlJ3MgYSBzdGFsZSBlbnRyeSBpbiB0aGUKKyAgICAgICAgLy8gaW5kZXguIFRoaXMg
aXMgbm90IGZhdGFsLgogICAgICAgICBpZiAoIWxvYWRDdXJyZW50Um93KCkpCiAgICAgICAgICAg
ICBjb250aW51ZTsKIApAQCAtMTExOSw2ICsxMDk3LDMyIEBAIGJvb2wgQ3Vyc29ySW1wbENvbW1v
bjo6Y29udGludWVGdW5jdGlvbihjb25zdCBJREJLZXkqIGtleSkKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAorLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBjdXJzb3IgaGFzIGdvbmUgYmV5b25kIHRoZSBi
b3VuZHMsIGJ1dCBvbmx5IGluCisvLyB0aGUgZGlyZWN0aW9uIG9mIHRoZSBpdGVyYXRvci4KK2Jv
b2wgQ3Vyc29ySW1wbENvbW1vbjo6aXNQYXN0Qm91bmRzKCkgY29uc3QKK3sKKyAgICBpZiAobV9j
dXJzb3JPcHRpb25zLmZvcndhcmQpIHsKKyAgICAgICAgaWYgKG1fY3Vyc29yT3B0aW9ucy5oaWdo
T3BlbikgeworICAgICAgICAgICAgLy8gSGlnaCBrZXkgbm90IGluY2x1ZGVkIGluIHJhbmdlLgor
ICAgICAgICAgICAgaWYgKGNvbXBhcmVJbmRleEtleXMobV9pdGVyYXRvci0+a2V5KCksIG1fY3Vy
c29yT3B0aW9ucy5oaWdoS2V5KSA+PSAwKQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKGNvbXBhcmVJbmRleEtleXMobV9pdGVy
YXRvci0+a2V5KCksIG1fY3Vyc29yT3B0aW9ucy5oaWdoS2V5KSA+IDApCisgICAgICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBpZiAobV9j
dXJzb3JPcHRpb25zLmxvd09wZW4pIHsKKyAgICAgICAgICAgIC8vIExvdyBrZXkgbm90IGluY2x1
ZGVkIGluIHJhbmdlLgorICAgICAgICAgICAgaWYgKGNvbXBhcmVJbmRleEtleXMobV9pdGVyYXRv
ci0+a2V5KCksIG1fY3Vyc29yT3B0aW9ucy5sb3dLZXkpIDw9IDApCisgICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAoY29tcGFyZUlu
ZGV4S2V5cyhtX2l0ZXJhdG9yLT5rZXkoKSwgbV9jdXJzb3JPcHRpb25zLmxvd0tleSkgPCAwKQor
ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgfQorICAgIHJldHVy
biBmYWxzZTsKK30KKwogY2xhc3MgT2JqZWN0U3RvcmVDdXJzb3JJbXBsIDogcHVibGljIEN1cnNv
ckltcGxDb21tb24gewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPE9iamVjdFN0b3Jl
Q3Vyc29ySW1wbD4gY3JlYXRlKExldmVsREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGNvbnN0
IEN1cnNvck9wdGlvbnMmIGN1cnNvck9wdGlvbnMpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>136042</attachid>
            <date>2012-04-06 10:50:12 -0700</date>
            <delta_ts>2012-04-07 09:53:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-83302-20120406105009.patch</filename>
            <type>text/plain</type>
            <size>9425</size>
            <attacher name="Alec Flett">alecflett</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEzMzE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWFhMjQzYTJjMDExZjc0
YmJkNTNlNDY4NGQ2ODEwNjI2MGNkODE1ZS4uMzMxOGM1MGIyNzg0YjM2NDE2YWY3YzFiOTI4Mjgz
NjIwNGMxMGFkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTA0LTA1ICBBbGVj
IEZsZXR0ICA8YWxlY2ZsZXR0QGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IFJl
ZmFjdG9yIGN1cnNvciBpdGVyYXRpb24gdG8gcmVtb3ZlIGR1cGxpY2F0ZSBjb2RlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MzMwMgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgbm8g
YmVoYXZpb3IgY2hhbmdlcy4KKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tp
bmdTdG9yZS5oOgorICAgICAgICAoQ3Vyc29yKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRk
Yi9JREJMZXZlbERCQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorCiAyMDEy
LTA0LTA1ICBQZXRlciBSeWJpbiAgPHBldGVyLnJ5YmluQGdtYWlsLmNvbT4KIAogICAgICAgICBX
ZWIgSW5zcGVjdG9yOiBDb2RlR2VuZXJhdG9ySW5zcGVjdG9yLnB5OiBzd2l0Y2ggRmlsZVN5c3Rl
bSwgUHJvZmlsZXIgYW5kIFdvcmtlciBkb21haW5zIHRvIHR5cGVkIEFQSQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuaAppbmRleCBiNWZj
YjNhZDcwN2JmN2NhMTIwNGViZjYxOWRlNzQ3YWEyYmM3YjllLi5mMGU1YzI3OTMyNDY5ZWI4MDk1
ZjRkMTI3YjFmMzU4NmMwMWYyMWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuaApAQCAtODgsOCArODgsMTMgQEAgcHVibGljOgog
CiAgICAgY2xhc3MgQ3Vyc29yIDogcHVibGljIFJlZkNvdW50ZWQ8Q3Vyc29yPiB7CiAgICAgcHVi
bGljOgorICAgICAgICBlbnVtIEl0ZXJhdG9yU3RhdGUgeworICAgICAgICAgICAgUmVhZHkgPSAw
LCAvLyBBbHJlYWR5IGluIHBvc2l0aW9uLCBkb24ndCBhZHZhbmNlLgorICAgICAgICAgICAgU2Vl
ayAvLyBTZWVrIGludG8gcG9zaXRpb24gYmVmb3JlIHVzZS4KKyAgICAgICAgfTsKKwogICAgICAg
ICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q3Vyc29yPiBjbG9uZSgpID0gMDsKLSAgICAgICAgdmlydHVh
bCBib29sIGNvbnRpbnVlRnVuY3Rpb24oY29uc3QgSURCS2V5KiA9IDApID0gMDsKKyAgICAgICAg
dmlydHVhbCBib29sIGNvbnRpbnVlRnVuY3Rpb24oY29uc3QgSURCS2V5KiA9IDAsIEl0ZXJhdG9y
U3RhdGUgbmV4dFN0YXRlID0gU2VlaykgPSAwOwogICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8
SURCS2V5PiBrZXkoKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJLZXk+IHBy
aW1hcnlLZXkoKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgU3RyaW5nIHZhbHVlKCkgPSAwOwpAQCAt
OTcsNiArMTAyLDcgQEAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIGludDY0X3QgaW5kZXhEYXRh
SWQoKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBjbG9zZSgpID0gMDsKICAgICAgICAgdmly
dHVhbCB+Q3Vyc29yKCkgeyB9OworCiAgICAgfTsKIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxD
dXJzb3I+IG9wZW5PYmplY3RTdG9yZUN1cnNvcihpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qg
b2JqZWN0U3RvcmVJZCwgY29uc3QgSURCS2V5UmFuZ2UqLCBJREJDdXJzb3I6OkRpcmVjdGlvbikg
PSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2
ZWxEQkJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJMZXZlbERCQmFja2luZ1N0b3JlLmNwcAppbmRleCBmMWY2ZWQ1MTQ4MjM1ZTEwNzhhNTM0Mzg3
MzE5MTRlMDAzM2IwNDk0Li40YzIyNGY5YWZkMGY4YmE5NjlhOTJlYjNlMzQzM2VmZTJmOGQ5NmE4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERC
QmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJMZXZlbERCQmFja2luZ1N0b3JlLmNwcApAQCAtOTgwLDcgKzk4MCw3IEBAIHN0cnVjdCBDdXJz
b3JPcHRpb25zIHsKIGNsYXNzIEN1cnNvckltcGxDb21tb24gOiBwdWJsaWMgSURCQmFja2luZ1N0
b3JlOjpDdXJzb3IgewogcHVibGljOgogICAgIC8vIElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yCi0g
ICAgdmlydHVhbCBib29sIGNvbnRpbnVlRnVuY3Rpb24oY29uc3QgSURCS2V5Kik7CisgICAgdmly
dHVhbCBib29sIGNvbnRpbnVlRnVuY3Rpb24oY29uc3QgSURCS2V5KiwgSXRlcmF0b3JTdGF0ZSBu
ZXh0U3RhdGUpOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJLZXk+IGtleSgpIHsgcmV0dXJu
IG1fY3VycmVudEtleTsgfQogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJLZXk+IHByaW1hcnlL
ZXkoKSB7IHJldHVybiBtX2N1cnJlbnRLZXk7IH0KICAgICB2aXJ0dWFsIFN0cmluZyB2YWx1ZSgp
ID0gMDsKQEAgLTEwMTUsNiArMTAxNSw4IEBAIHByb3RlY3RlZDoKIAogICAgIHZpcnR1YWwgfkN1
cnNvckltcGxDb21tb24oKSB7fQogCisgICAgYm9vbCBpc1Bhc3RCb3VuZHMoKSBjb25zdDsKKwog
ICAgIExldmVsREJUcmFuc2FjdGlvbiogbV90cmFuc2FjdGlvbjsKICAgICBDdXJzb3JPcHRpb25z
IG1fY3Vyc29yT3B0aW9uczsKICAgICBPd25QdHI8TGV2ZWxEQkl0ZXJhdG9yPiBtX2l0ZXJhdG9y
OwpAQCAtMTAyNCw2MiArMTAyNiwyNiBAQCBwcm90ZWN0ZWQ6CiBib29sIEN1cnNvckltcGxDb21t
b246OmZpcnN0U2VlaygpCiB7CiAgICAgbV9pdGVyYXRvciA9IG1fdHJhbnNhY3Rpb24tPmNyZWF0
ZUl0ZXJhdG9yKCk7Ci0KICAgICBpZiAobV9jdXJzb3JPcHRpb25zLmZvcndhcmQpCiAgICAgICAg
IG1faXRlcmF0b3ItPnNlZWsobV9jdXJzb3JPcHRpb25zLmxvd0tleSk7CiAgICAgZWxzZQogICAg
ICAgICBtX2l0ZXJhdG9yLT5zZWVrKG1fY3Vyc29yT3B0aW9ucy5oaWdoS2V5KTsKIAotICAgIGZv
ciAoOzspIHsKLSAgICAgICAgaWYgKCFtX2l0ZXJhdG9yLT5pc1ZhbGlkKCkpCi0gICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgaWYgKG1fY3Vyc29yT3B0aW9ucy5mb3J3YXJkICYm
IG1fY3Vyc29yT3B0aW9ucy5oaWdoT3BlbiAmJiBjb21wYXJlSW5kZXhLZXlzKG1faXRlcmF0b3It
PmtleSgpLCBtX2N1cnNvck9wdGlvbnMuaGlnaEtleSkgPj0gMCkKLSAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAgICAgaWYgKG1fY3Vyc29yT3B0aW9ucy5mb3J3YXJkICYmICFtX2N1cnNv
ck9wdGlvbnMuaGlnaE9wZW4gJiYgY29tcGFyZUluZGV4S2V5cyhtX2l0ZXJhdG9yLT5rZXkoKSwg
bV9jdXJzb3JPcHRpb25zLmhpZ2hLZXkpID4gMCkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgICAgaWYgKCFtX2N1cnNvck9wdGlvbnMuZm9yd2FyZCAmJiBtX2N1cnNvck9wdGlvbnMu
bG93T3BlbiAmJiBjb21wYXJlSW5kZXhLZXlzKG1faXRlcmF0b3ItPmtleSgpLCBtX2N1cnNvck9w
dGlvbnMubG93S2V5KSA8PSAwKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBp
ZiAoIW1fY3Vyc29yT3B0aW9ucy5mb3J3YXJkICYmICFtX2N1cnNvck9wdGlvbnMubG93T3BlbiAm
JiBjb21wYXJlSW5kZXhLZXlzKG1faXRlcmF0b3ItPmtleSgpLCBtX2N1cnNvck9wdGlvbnMubG93
S2V5KSA8IDApCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgaWYgKG1fY3Vy
c29yT3B0aW9ucy5mb3J3YXJkICYmIG1fY3Vyc29yT3B0aW9ucy5sb3dPcGVuKSB7Ci0gICAgICAg
ICAgICAvLyBsb3dLZXkgbm90IGluY2x1ZGVkIGluIHRoZSByYW5nZS4KLSAgICAgICAgICAgIGlm
IChjb21wYXJlSW5kZXhLZXlzKG1faXRlcmF0b3ItPmtleSgpLCBtX2N1cnNvck9wdGlvbnMubG93
S2V5KSA8PSAwKSB7Ci0gICAgICAgICAgICAgICAgbV9pdGVyYXRvci0+bmV4dCgpOwotICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGlm
ICghbV9jdXJzb3JPcHRpb25zLmZvcndhcmQgJiYgbV9jdXJzb3JPcHRpb25zLmhpZ2hPcGVuKSB7
Ci0gICAgICAgICAgICAvLyBoaWdoS2V5IG5vdCBpbmNsdWRlZCBpbiB0aGUgcmFuZ2UuCi0gICAg
ICAgICAgICBpZiAoY29tcGFyZUluZGV4S2V5cyhtX2l0ZXJhdG9yLT5rZXkoKSwgbV9jdXJzb3JP
cHRpb25zLmhpZ2hLZXkpID49IDApIHsKLSAgICAgICAgICAgICAgICBtX2l0ZXJhdG9yLT5wcmV2
KCk7Ci0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0K
LQotICAgICAgICBpZiAoIWxvYWRDdXJyZW50Um93KCkpIHsKLSAgICAgICAgICAgIGlmIChtX2N1
cnNvck9wdGlvbnMuZm9yd2FyZCkKLSAgICAgICAgICAgICAgICBtX2l0ZXJhdG9yLT5uZXh0KCk7
Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgbV9pdGVyYXRvci0+cHJldigpOwot
ICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICB9CisgICAgcmV0dXJuIGNvbnRpbnVlRnVuY3Rpb24oMCwgUmVhZHkpOwogfQogCi1ib29s
IEN1cnNvckltcGxDb21tb246OmNvbnRpbnVlRnVuY3Rpb24oY29uc3QgSURCS2V5KiBrZXkpCiti
b29sIEN1cnNvckltcGxDb21tb246OmNvbnRpbnVlRnVuY3Rpb24oY29uc3QgSURCS2V5KiBrZXks
IEl0ZXJhdG9yU3RhdGUgbmV4dFN0YXRlKQogewotICAgIC8vIEZJWE1FOiBUaGlzIHNoYXJlcyBh
IGxvdCBvZiBjb2RlIHdpdGggZmlyc3RTZWVrLgogICAgIFJlZlB0cjxJREJLZXk+IHByZXZpb3Vz
S2V5ID0gbV9jdXJyZW50S2V5OwogCiAgICAgZm9yICg7OykgewotICAgICAgICBpZiAobV9jdXJz
b3JPcHRpb25zLmZvcndhcmQpCi0gICAgICAgICAgICBtX2l0ZXJhdG9yLT5uZXh0KCk7Ci0gICAg
ICAgIGVsc2UKLSAgICAgICAgICAgIG1faXRlcmF0b3ItPnByZXYoKTsKKyAgICAgICAgaWYgKG5l
eHRTdGF0ZSA9PSBTZWVrKSB7CisgICAgICAgICAgICBpZiAobV9jdXJzb3JPcHRpb25zLmZvcndh
cmQpCisgICAgICAgICAgICAgICAgbV9pdGVyYXRvci0+bmV4dCgpOworICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgIG1faXRlcmF0b3ItPnByZXYoKTsKKyAgICAgICAgfSBlbHNlCisg
ICAgICAgICAgICBuZXh0U3RhdGUgPSBTZWVrOwogCiAgICAgICAgIGlmICghbV9pdGVyYXRvci0+
aXNWYWxpZCgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTA4OCwxNSArMTA1NCwy
NiBAQCBib29sIEN1cnNvckltcGxDb21tb246OmNvbnRpbnVlRnVuY3Rpb24oY29uc3QgSURCS2V5
KiBrZXkpCiAgICAgICAgIGlmICghbV90cmFuc2FjdGlvbi0+Z2V0KG1faXRlcmF0b3ItPmtleSgp
LCB0cmFzaCkpCiAgICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgaWYgKG1fY3Vyc29y
T3B0aW9ucy5mb3J3YXJkICYmIG1fY3Vyc29yT3B0aW9ucy5oaWdoT3BlbiAmJiBjb21wYXJlSW5k
ZXhLZXlzKG1faXRlcmF0b3ItPmtleSgpLCBtX2N1cnNvck9wdGlvbnMuaGlnaEtleSkgPj0gMCkg
Ly8gaGlnaCBrZXkgbm90IGluY2x1ZGVkIGluIHJhbmdlCi0gICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgICAgIGlmIChtX2N1cnNvck9wdGlvbnMuZm9yd2FyZCAmJiAhbV9jdXJzb3JPcHRp
b25zLmhpZ2hPcGVuICYmIGNvbXBhcmVJbmRleEtleXMobV9pdGVyYXRvci0+a2V5KCksIG1fY3Vy
c29yT3B0aW9ucy5oaWdoS2V5KSA+IDApCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
ICAgIGlmICghbV9jdXJzb3JPcHRpb25zLmZvcndhcmQgJiYgbV9jdXJzb3JPcHRpb25zLmxvd09w
ZW4gJiYgY29tcGFyZUluZGV4S2V5cyhtX2l0ZXJhdG9yLT5rZXkoKSwgbV9jdXJzb3JPcHRpb25z
Lmxvd0tleSkgPD0gMCkgLy8gbG93IGtleSBub3QgaW5jbHVkZWQgaW4gcmFuZ2UKLSAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgaWYgKCFtX2N1cnNvck9wdGlvbnMuZm9yd2FyZCAm
JiAhbV9jdXJzb3JPcHRpb25zLmxvd09wZW4gJiYgY29tcGFyZUluZGV4S2V5cyhtX2l0ZXJhdG9y
LT5rZXkoKSwgbV9jdXJzb3JPcHRpb25zLmxvd0tleSkgPCAwKQorICAgICAgICBpZiAoaXNQYXN0
Qm91bmRzKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKKyAgICAgICAgLy8gTWFrZSBz
dXJlIHdlIGhhdmUgKmVudGVyZWQqIHRoZSByYW5nZS4KKyAgICAgICAgaWYgKG1fY3Vyc29yT3B0
aW9ucy5mb3J3YXJkKSB7CisgICAgICAgICAgICBpZiAobV9jdXJzb3JPcHRpb25zLmxvd09wZW4p
IHsKKyAgICAgICAgICAgICAgICAvLyBsb3dLZXkgbm90IGluY2x1ZGVkIGluIHRoZSByYW5nZS4K
KyAgICAgICAgICAgICAgICBpZiAoY29tcGFyZUluZGV4S2V5cyhtX2l0ZXJhdG9yLT5rZXkoKSwg
bV9jdXJzb3JPcHRpb25zLmxvd0tleSkgPD0gMCkKKyAgICAgICAgICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAobV9j
dXJzb3JPcHRpb25zLmhpZ2hPcGVuKSB7CisgICAgICAgICAgICAgICAgLy8gaGlnaEtleSBub3Qg
aW5jbHVkZWQgaW4gdGhlIHJhbmdlLgorICAgICAgICAgICAgICAgIGlmIChjb21wYXJlSW5kZXhL
ZXlzKG1faXRlcmF0b3ItPmtleSgpLCBtX2N1cnNvck9wdGlvbnMuaGlnaEtleSkgPj0gMCkKKyAg
ICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKwor
ICAgICAgICAvLyBUaGUgcm93IG1heSBub3QgbG9hZCBiZWNhdXNlIHRoZXJlJ3MgYSBzdGFsZSBl
bnRyeSBpbiB0aGUKKyAgICAgICAgLy8gaW5kZXguIFRoaXMgaXMgbm90IGZhdGFsLgogICAgICAg
ICBpZiAoIWxvYWRDdXJyZW50Um93KCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIApAQCAtMTEx
OSw2ICsxMDk2LDMyIEBAIGJvb2wgQ3Vyc29ySW1wbENvbW1vbjo6Y29udGludWVGdW5jdGlvbihj
b25zdCBJREJLZXkqIGtleSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorLy8gUmV0dXJucyB0cnVl
IGlmIHRoZSBjdXJzb3IgaGFzIGdvbmUgYmV5b25kIHRoZSBib3VuZHMsIGJ1dCBvbmx5IGluCisv
LyB0aGUgZGlyZWN0aW9uIG9mIHRoZSBpdGVyYXRvci4KK2Jvb2wgQ3Vyc29ySW1wbENvbW1vbjo6
aXNQYXN0Qm91bmRzKCkgY29uc3QKK3sKKyAgICBpZiAobV9jdXJzb3JPcHRpb25zLmZvcndhcmQp
IHsKKyAgICAgICAgaWYgKG1fY3Vyc29yT3B0aW9ucy5oaWdoT3BlbikgeworICAgICAgICAgICAg
Ly8gSGlnaCBrZXkgbm90IGluY2x1ZGVkIGluIHJhbmdlLgorICAgICAgICAgICAgaWYgKGNvbXBh
cmVJbmRleEtleXMobV9pdGVyYXRvci0+a2V5KCksIG1fY3Vyc29yT3B0aW9ucy5oaWdoS2V5KSA+
PSAwKQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgaWYgKGNvbXBhcmVJbmRleEtleXMobV9pdGVyYXRvci0+a2V5KCksIG1fY3Vyc29y
T3B0aW9ucy5oaWdoS2V5KSA+IDApCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBpZiAobV9jdXJzb3JPcHRpb25zLmxvd09wZW4p
IHsKKyAgICAgICAgICAgIC8vIExvdyBrZXkgbm90IGluY2x1ZGVkIGluIHJhbmdlLgorICAgICAg
ICAgICAgaWYgKGNvbXBhcmVJbmRleEtleXMobV9pdGVyYXRvci0+a2V5KCksIG1fY3Vyc29yT3B0
aW9ucy5sb3dLZXkpIDw9IDApCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICBpZiAoY29tcGFyZUluZGV4S2V5cyhtX2l0ZXJhdG9yLT5r
ZXkoKSwgbV9jdXJzb3JPcHRpb25zLmxvd0tleSkgPCAwKQorICAgICAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKwogY2xhc3Mg
T2JqZWN0U3RvcmVDdXJzb3JJbXBsIDogcHVibGljIEN1cnNvckltcGxDb21tb24gewogcHVibGlj
OgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPE9iamVjdFN0b3JlQ3Vyc29ySW1wbD4gY3JlYXRlKExl
dmVsREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGNvbnN0IEN1cnNvck9wdGlvbnMmIGN1cnNv
ck9wdGlvbnMpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNr
ZXJzL2NwcC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY3BwLnB5
CmluZGV4IGY4OTg3MGNlZDE3NzA2OWZlZDUzZmQwN2MyNDJkMDVkYWE0YjBkNDguLmZkOWI1MGNk
MWI2NjJlNWRiNjQ4NGZjNTgyN2RjMTc2ZmEwMzA5MTkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY3BwLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvc3R5bGUvY2hlY2tlcnMvY3BwLnB5CkBAIC0xNTYwLDYgKzE1NjAsOSBAQCBkZWYgX2No
ZWNrX3BhcmFtZXRlcl9uYW1lX2FnYWluc3RfdGV4dChwYXJhbWV0ZXIsIHRleHQsIGVycm9yKToK
ICAgICAjIFVzZWQgdG8gZGV0ZWN0IGNhc2VzIGxpa2UgZWMgZm9yIEV4Y2VwdGlvbkNvZGUuCiAg
ICAgYWNyb255bSA9IF9jcmVhdGVfYWNyb255bSh0ZXh0KS5sb3dlcigpCiAgICAgaWYgY2Fub25p
Y2FsX3RleHQuZmluZChjYW5vbmljYWxfcGFyYW1ldGVyX25hbWUpICE9IC0xIG9yIGFjcm9ueW0u
ZmluZChjYW5vbmljYWxfcGFyYW1ldGVyX25hbWUpICE9IC0xOgorICAgICAgICBwcmludCAicGFy
YW1ldGVyOiAiLCBjYW5vbmljYWxfcGFyYW1ldGVyX25hbWUKKyAgICAgICAgcHJpbnQgIkFjcm9u
eW06ICIsIGFjcm9ueW0KKyAgICAgICAgcHJpbnQgIkluIHRleHQ6ICIsIGNhbm9uaWNhbF90ZXh0
CiAgICAgICAgIGVycm9yKHBhcmFtZXRlci5yb3csICdyZWFkYWJpbGl0eS9wYXJhbWV0ZXJfbmFt
ZScsIDUsCiAgICAgICAgICAgICAgICdUaGUgcGFyYW1ldGVyIG5hbWUgIiVzIiBhZGRzIG5vIGlu
Zm9ybWF0aW9uLCBzbyBpdCBzaG91bGQgYmUgcmVtb3ZlZC4nICUgcGFyYW1ldGVyLm5hbWUpCiAg
ICAgICAgIHJldHVybiBGYWxzZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>136132</attachid>
            <date>2012-04-07 09:50:06 -0700</date>
            <delta_ts>2012-04-12 11:13:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-83302-20120407095005.patch</filename>
            <type>text/plain</type>
            <size>8182</size>
            <attacher name="Alec Flett">alecflett</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEzNTIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzI3OGQ2MmJiOGZmYzMz
ZjM3NGZhNTU1ZGQwMzYxNWFmYzczODU0NC4uMzUxYjUxMzI1ZGIzMDBjYjNlZTIxZmQ5OTRlNTMy
YTNlNDNmN2EzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTA0LTA1ICBBbGVj
IEZsZXR0ICA8YWxlY2ZsZXR0QGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IFJl
ZmFjdG9yIGN1cnNvciBpdGVyYXRpb24gdG8gcmVtb3ZlIGR1cGxpY2F0ZSBjb2RlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MzMwMgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgbm8g
YmVoYXZpb3IgY2hhbmdlcy4KKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tp
bmdTdG9yZS5oOgorICAgICAgICAoQ3Vyc29yKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRk
Yi9JREJMZXZlbERCQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorCiAyMDEy
LTA0LTA2ICBBbGV4YW5kcmUgRWxpYXMgIDxhZWxpYXNAZ29vZ2xlLmNvbT4KIAogICAgICAgICBG
aXggYnVnIGluIENvbnRhaW5lck5vZGU6OmdldFJlY3Qgd2l0aCBzY2FsZSB0cmFuc2Zvcm1zCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3Rv
cmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5o
CmluZGV4IGI1ZmNiM2FkNzA3YmY3Y2ExMjA0ZWJmNjE5ZGU3NDdhYTJiYzdiOWUuLmQ1ZjY0MmVm
ZTZmMGEwMmNmNDk3OTg3ODUzOThhNTg5Zjg4M2U4NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5oCkBAIC04OCw4ICs4OCwxMyBA
QCBwdWJsaWM6CiAKICAgICBjbGFzcyBDdXJzb3IgOiBwdWJsaWMgUmVmQ291bnRlZDxDdXJzb3I+
IHsKICAgICBwdWJsaWM6CisgICAgICAgIGVudW0gSXRlcmF0b3JTdGF0ZSB7CisgICAgICAgICAg
ICBSZWFkeSA9IDAsIC8vIEFscmVhZHkgaW4gcG9zaXRpb24sIGRvbid0IGFkdmFuY2UuCisgICAg
ICAgICAgICBTZWVrIC8vIFNlZWsgaW50byBwb3NpdGlvbiBiZWZvcmUgdXNlLgorICAgICAgICB9
OworCiAgICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxDdXJzb3I+IGNsb25lKCkgPSAwOwotICAg
ICAgICB2aXJ0dWFsIGJvb2wgY29udGludWVGdW5jdGlvbihjb25zdCBJREJLZXkqID0gMCkgPSAw
OworICAgICAgICB2aXJ0dWFsIGJvb2wgY29udGludWVGdW5jdGlvbihjb25zdCBJREJLZXkqID0g
MCwgSXRlcmF0b3JTdGF0ZSBuZXh0U3RhdGUgPSBTZWVrKSA9IDA7CiAgICAgICAgIHZpcnR1YWwg
UGFzc1JlZlB0cjxJREJLZXk+IGtleSgpID0gMDsKICAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRy
PElEQktleT4gcHJpbWFyeUtleSgpID0gMDsKICAgICAgICAgdmlydHVhbCBTdHJpbmcgdmFsdWUo
KSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJM
ZXZlbERCQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkxldmVsREJCYWNraW5nU3RvcmUuY3BwCmluZGV4IGYxZjZlZDUxNDgyMzVlMTA3OGE1MzQz
ODczMTkxNGUwMDMzYjA0OTQuLmRmNjg5MDExYzkwMjBkMzMxNjljNTZmYjg4ZDYzNzE4MjdmMTQ3
MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVs
REJCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkxldmVsREJCYWNraW5nU3RvcmUuY3BwCkBAIC05ODAsNyArOTgwLDcgQEAgc3RydWN0IEN1
cnNvck9wdGlvbnMgewogY2xhc3MgQ3Vyc29ySW1wbENvbW1vbiA6IHB1YmxpYyBJREJCYWNraW5n
U3RvcmU6OkN1cnNvciB7CiBwdWJsaWM6CiAgICAgLy8gSURCQmFja2luZ1N0b3JlOjpDdXJzb3IK
LSAgICB2aXJ0dWFsIGJvb2wgY29udGludWVGdW5jdGlvbihjb25zdCBJREJLZXkqKTsKKyAgICB2
aXJ0dWFsIGJvb2wgY29udGludWVGdW5jdGlvbihjb25zdCBJREJLZXkqLCBJdGVyYXRvclN0YXRl
KTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCS2V5PiBrZXkoKSB7IHJldHVybiBtX2N1cnJl
bnRLZXk7IH0KICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCS2V5PiBwcmltYXJ5S2V5KCkgeyBy
ZXR1cm4gbV9jdXJyZW50S2V5OyB9CiAgICAgdmlydHVhbCBTdHJpbmcgdmFsdWUoKSA9IDA7CkBA
IC0xMDE1LDYgKzEwMTUsOCBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2aXJ0dWFsIH5DdXJzb3JJbXBs
Q29tbW9uKCkge30KIAorICAgIGJvb2wgaXNQYXN0Qm91bmRzKCkgY29uc3Q7CisKICAgICBMZXZl
bERCVHJhbnNhY3Rpb24qIG1fdHJhbnNhY3Rpb247CiAgICAgQ3Vyc29yT3B0aW9ucyBtX2N1cnNv
ck9wdGlvbnM7CiAgICAgT3duUHRyPExldmVsREJJdGVyYXRvcj4gbV9pdGVyYXRvcjsKQEAgLTEw
MjQsNjIgKzEwMjYsMjYgQEAgcHJvdGVjdGVkOgogYm9vbCBDdXJzb3JJbXBsQ29tbW9uOjpmaXJz
dFNlZWsoKQogewogICAgIG1faXRlcmF0b3IgPSBtX3RyYW5zYWN0aW9uLT5jcmVhdGVJdGVyYXRv
cigpOwotCiAgICAgaWYgKG1fY3Vyc29yT3B0aW9ucy5mb3J3YXJkKQogICAgICAgICBtX2l0ZXJh
dG9yLT5zZWVrKG1fY3Vyc29yT3B0aW9ucy5sb3dLZXkpOwogICAgIGVsc2UKICAgICAgICAgbV9p
dGVyYXRvci0+c2VlayhtX2N1cnNvck9wdGlvbnMuaGlnaEtleSk7CiAKLSAgICBmb3IgKDs7KSB7
Ci0gICAgICAgIGlmICghbV9pdGVyYXRvci0+aXNWYWxpZCgpKQotICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotCi0gICAgICAgIGlmIChtX2N1cnNvck9wdGlvbnMuZm9yd2FyZCAmJiBtX2N1cnNv
ck9wdGlvbnMuaGlnaE9wZW4gJiYgY29tcGFyZUluZGV4S2V5cyhtX2l0ZXJhdG9yLT5rZXkoKSwg
bV9jdXJzb3JPcHRpb25zLmhpZ2hLZXkpID49IDApCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgICAgIGlmIChtX2N1cnNvck9wdGlvbnMuZm9yd2FyZCAmJiAhbV9jdXJzb3JPcHRpb25z
LmhpZ2hPcGVuICYmIGNvbXBhcmVJbmRleEtleXMobV9pdGVyYXRvci0+a2V5KCksIG1fY3Vyc29y
T3B0aW9ucy5oaWdoS2V5KSA+IDApCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
IGlmICghbV9jdXJzb3JPcHRpb25zLmZvcndhcmQgJiYgbV9jdXJzb3JPcHRpb25zLmxvd09wZW4g
JiYgY29tcGFyZUluZGV4S2V5cyhtX2l0ZXJhdG9yLT5rZXkoKSwgbV9jdXJzb3JPcHRpb25zLmxv
d0tleSkgPD0gMCkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgaWYgKCFtX2N1
cnNvck9wdGlvbnMuZm9yd2FyZCAmJiAhbV9jdXJzb3JPcHRpb25zLmxvd09wZW4gJiYgY29tcGFy
ZUluZGV4S2V5cyhtX2l0ZXJhdG9yLT5rZXkoKSwgbV9jdXJzb3JPcHRpb25zLmxvd0tleSkgPCAw
KQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgIGlmIChtX2N1cnNvck9wdGlv
bnMuZm9yd2FyZCAmJiBtX2N1cnNvck9wdGlvbnMubG93T3BlbikgewotICAgICAgICAgICAgLy8g
bG93S2V5IG5vdCBpbmNsdWRlZCBpbiB0aGUgcmFuZ2UuCi0gICAgICAgICAgICBpZiAoY29tcGFy
ZUluZGV4S2V5cyhtX2l0ZXJhdG9yLT5rZXkoKSwgbV9jdXJzb3JPcHRpb25zLmxvd0tleSkgPD0g
MCkgewotICAgICAgICAgICAgICAgIG1faXRlcmF0b3ItPm5leHQoKTsKLSAgICAgICAgICAgICAg
ICBjb250aW51ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBpZiAoIW1fY3Vy
c29yT3B0aW9ucy5mb3J3YXJkICYmIG1fY3Vyc29yT3B0aW9ucy5oaWdoT3BlbikgewotICAgICAg
ICAgICAgLy8gaGlnaEtleSBub3QgaW5jbHVkZWQgaW4gdGhlIHJhbmdlLgotICAgICAgICAgICAg
aWYgKGNvbXBhcmVJbmRleEtleXMobV9pdGVyYXRvci0+a2V5KCksIG1fY3Vyc29yT3B0aW9ucy5o
aWdoS2V5KSA+PSAwKSB7Ci0gICAgICAgICAgICAgICAgbV9pdGVyYXRvci0+cHJldigpOwotICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAg
ICAgaWYgKCFsb2FkQ3VycmVudFJvdygpKSB7Ci0gICAgICAgICAgICBpZiAobV9jdXJzb3JPcHRp
b25zLmZvcndhcmQpCi0gICAgICAgICAgICAgICAgbV9pdGVyYXRvci0+bmV4dCgpOwotICAgICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgICAgIG1faXRlcmF0b3ItPnByZXYoKTsKLSAgICAgICAg
ICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQor
ICAgIHJldHVybiBjb250aW51ZUZ1bmN0aW9uKDAsIFJlYWR5KTsKIH0KIAotYm9vbCBDdXJzb3JJ
bXBsQ29tbW9uOjpjb250aW51ZUZ1bmN0aW9uKGNvbnN0IElEQktleSoga2V5KQorYm9vbCBDdXJz
b3JJbXBsQ29tbW9uOjpjb250aW51ZUZ1bmN0aW9uKGNvbnN0IElEQktleSoga2V5LCBJdGVyYXRv
clN0YXRlIG5leHRTdGF0ZSkKIHsKLSAgICAvLyBGSVhNRTogVGhpcyBzaGFyZXMgYSBsb3Qgb2Yg
Y29kZSB3aXRoIGZpcnN0U2Vlay4KICAgICBSZWZQdHI8SURCS2V5PiBwcmV2aW91c0tleSA9IG1f
Y3VycmVudEtleTsKIAogICAgIGZvciAoOzspIHsKLSAgICAgICAgaWYgKG1fY3Vyc29yT3B0aW9u
cy5mb3J3YXJkKQotICAgICAgICAgICAgbV9pdGVyYXRvci0+bmV4dCgpOwotICAgICAgICBlbHNl
Ci0gICAgICAgICAgICBtX2l0ZXJhdG9yLT5wcmV2KCk7CisgICAgICAgIGlmIChuZXh0U3RhdGUg
PT0gU2VlaykgeworICAgICAgICAgICAgaWYgKG1fY3Vyc29yT3B0aW9ucy5mb3J3YXJkKQorICAg
ICAgICAgICAgICAgIG1faXRlcmF0b3ItPm5leHQoKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICBtX2l0ZXJhdG9yLT5wcmV2KCk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAg
ICAgbmV4dFN0YXRlID0gU2VlazsgLy8gZm9yIHN1YnNlcXVlbnQgaXRlcmF0aW9ucwogCiAgICAg
ICAgIGlmICghbV9pdGVyYXRvci0+aXNWYWxpZCgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwpAQCAtMTA4OCwxNSArMTA1NCwyNiBAQCBib29sIEN1cnNvckltcGxDb21tb246OmNvbnRpbnVl
RnVuY3Rpb24oY29uc3QgSURCS2V5KiBrZXkpCiAgICAgICAgIGlmICghbV90cmFuc2FjdGlvbi0+
Z2V0KG1faXRlcmF0b3ItPmtleSgpLCB0cmFzaCkpCiAgICAgICAgICAgICAgY29udGludWU7CiAK
LSAgICAgICAgaWYgKG1fY3Vyc29yT3B0aW9ucy5mb3J3YXJkICYmIG1fY3Vyc29yT3B0aW9ucy5o
aWdoT3BlbiAmJiBjb21wYXJlSW5kZXhLZXlzKG1faXRlcmF0b3ItPmtleSgpLCBtX2N1cnNvck9w
dGlvbnMuaGlnaEtleSkgPj0gMCkgLy8gaGlnaCBrZXkgbm90IGluY2x1ZGVkIGluIHJhbmdlCi0g
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGlmIChtX2N1cnNvck9wdGlvbnMuZm9y
d2FyZCAmJiAhbV9jdXJzb3JPcHRpb25zLmhpZ2hPcGVuICYmIGNvbXBhcmVJbmRleEtleXMobV9p
dGVyYXRvci0+a2V5KCksIG1fY3Vyc29yT3B0aW9ucy5oaWdoS2V5KSA+IDApCi0gICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGlmICghbV9jdXJzb3JPcHRpb25zLmZvcndhcmQgJiYg
bV9jdXJzb3JPcHRpb25zLmxvd09wZW4gJiYgY29tcGFyZUluZGV4S2V5cyhtX2l0ZXJhdG9yLT5r
ZXkoKSwgbV9jdXJzb3JPcHRpb25zLmxvd0tleSkgPD0gMCkgLy8gbG93IGtleSBub3QgaW5jbHVk
ZWQgaW4gcmFuZ2UKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgaWYgKCFtX2N1
cnNvck9wdGlvbnMuZm9yd2FyZCAmJiAhbV9jdXJzb3JPcHRpb25zLmxvd09wZW4gJiYgY29tcGFy
ZUluZGV4S2V5cyhtX2l0ZXJhdG9yLT5rZXkoKSwgbV9jdXJzb3JPcHRpb25zLmxvd0tleSkgPCAw
KQorICAgICAgICBpZiAoaXNQYXN0Qm91bmRzKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAKKyAgICAgICAgLy8gTWFrZSBzdXJlIHdlIGhhdmUgKmVudGVyZWQqIHRoZSByYW5nZS4KKyAg
ICAgICAgaWYgKG1fY3Vyc29yT3B0aW9ucy5mb3J3YXJkKSB7CisgICAgICAgICAgICBpZiAobV9j
dXJzb3JPcHRpb25zLmxvd09wZW4pIHsKKyAgICAgICAgICAgICAgICAvLyBsb3dLZXkgbm90IGlu
Y2x1ZGVkIGluIHRoZSByYW5nZS4KKyAgICAgICAgICAgICAgICBpZiAoY29tcGFyZUluZGV4S2V5
cyhtX2l0ZXJhdG9yLT5rZXkoKSwgbV9jdXJzb3JPcHRpb25zLmxvd0tleSkgPD0gMCkKKyAgICAg
ICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICBpZiAobV9jdXJzb3JPcHRpb25zLmhpZ2hPcGVuKSB7CisgICAgICAgICAg
ICAgICAgLy8gaGlnaEtleSBub3QgaW5jbHVkZWQgaW4gdGhlIHJhbmdlLgorICAgICAgICAgICAg
ICAgIGlmIChjb21wYXJlSW5kZXhLZXlzKG1faXRlcmF0b3ItPmtleSgpLCBtX2N1cnNvck9wdGlv
bnMuaGlnaEtleSkgPj0gMCkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBUaGUgcm93IG1heSBub3QgbG9hZCBiZWNh
dXNlIHRoZXJlJ3MgYSBzdGFsZSBlbnRyeSBpbiB0aGUKKyAgICAgICAgLy8gaW5kZXguIFRoaXMg
aXMgbm90IGZhdGFsLgogICAgICAgICBpZiAoIWxvYWRDdXJyZW50Um93KCkpCiAgICAgICAgICAg
ICBjb250aW51ZTsKIApAQCAtMTExOSw2ICsxMDk2LDMyIEBAIGJvb2wgQ3Vyc29ySW1wbENvbW1v
bjo6Y29udGludWVGdW5jdGlvbihjb25zdCBJREJLZXkqIGtleSkKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAorLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBjdXJzb3IgaGFzIGdvbmUgYmV5b25kIHRoZSBi
b3VuZHMsIGJ1dCBvbmx5IGluCisvLyB0aGUgZGlyZWN0aW9uIG9mIHRoZSBpdGVyYXRvci4KK2Jv
b2wgQ3Vyc29ySW1wbENvbW1vbjo6aXNQYXN0Qm91bmRzKCkgY29uc3QKK3sKKyAgICBpZiAobV9j
dXJzb3JPcHRpb25zLmZvcndhcmQpIHsKKyAgICAgICAgaWYgKG1fY3Vyc29yT3B0aW9ucy5oaWdo
T3BlbikgeworICAgICAgICAgICAgLy8gSGlnaCBrZXkgbm90IGluY2x1ZGVkIGluIHJhbmdlLgor
ICAgICAgICAgICAgaWYgKGNvbXBhcmVJbmRleEtleXMobV9pdGVyYXRvci0+a2V5KCksIG1fY3Vy
c29yT3B0aW9ucy5oaWdoS2V5KSA+PSAwKQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKGNvbXBhcmVJbmRleEtleXMobV9pdGVy
YXRvci0+a2V5KCksIG1fY3Vyc29yT3B0aW9ucy5oaWdoS2V5KSA+IDApCisgICAgICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBpZiAobV9j
dXJzb3JPcHRpb25zLmxvd09wZW4pIHsKKyAgICAgICAgICAgIC8vIExvdyBrZXkgbm90IGluY2x1
ZGVkIGluIHJhbmdlLgorICAgICAgICAgICAgaWYgKGNvbXBhcmVJbmRleEtleXMobV9pdGVyYXRv
ci0+a2V5KCksIG1fY3Vyc29yT3B0aW9ucy5sb3dLZXkpIDw9IDApCisgICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAoY29tcGFyZUlu
ZGV4S2V5cyhtX2l0ZXJhdG9yLT5rZXkoKSwgbV9jdXJzb3JPcHRpb25zLmxvd0tleSkgPCAwKQor
ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgfQorICAgIHJldHVy
biBmYWxzZTsKK30KKwogY2xhc3MgT2JqZWN0U3RvcmVDdXJzb3JJbXBsIDogcHVibGljIEN1cnNv
ckltcGxDb21tb24gewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPE9iamVjdFN0b3Jl
Q3Vyc29ySW1wbD4gY3JlYXRlKExldmVsREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGNvbnN0
IEN1cnNvck9wdGlvbnMmIGN1cnNvck9wdGlvbnMpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>136934</attachid>
            <date>2012-04-12 11:11:30 -0700</date>
            <delta_ts>2012-04-12 15:19:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-83302-20120412111129.patch</filename>
            <type>text/plain</type>
            <size>7700</size>
            <attacher name="Alec Flett">alecflett</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEzOTYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGI1NGY5NDA0YTBkZGFm
YzM2ZDc3NmY0YWIwYWNkNzE5ZmQxZmFmNC4uMmFlY2M5NzFhMjQ1ZmM5NDMzYjNhY2Y1ZDJhYjgx
ZGQ5ZDA2YjllNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTA0LTA1ICBBbGVj
IEZsZXR0ICA8YWxlY2ZsZXR0QGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IFJl
ZmFjdG9yIGN1cnNvciBpdGVyYXRpb24gdG8gcmVtb3ZlIGR1cGxpY2F0ZSBjb2RlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MzMwMgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgbm8g
YmVoYXZpb3IgY2hhbmdlcy4KKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tp
bmdTdG9yZS5oOgorICAgICAgICAoQ3Vyc29yKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRk
Yi9JREJMZXZlbERCQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorCiAyMDEy
LTA0LTEyICBab2x0YW4gSG9ydmF0aCAgPHpvbHRhbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFtR
dF0gVHdvIGNhbnZhcyB0ZXN0cyBmYWlsIHdpdGggUVRfSU1BR0VfREVDT0RFUj0wIHNldHVwCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3Rv
cmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5o
CmluZGV4IGI1ZmNiM2FkNzA3YmY3Y2ExMjA0ZWJmNjE5ZGU3NDdhYTJiYzdiOWUuLjU1MWI4MjY4
OTViNmMzMmQ5N2IwNzdmMmEyN2E1MmMyN2ZmZDJmYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5oCkBAIC04OCw4ICs4OCwxMyBA
QCBwdWJsaWM6CiAKICAgICBjbGFzcyBDdXJzb3IgOiBwdWJsaWMgUmVmQ291bnRlZDxDdXJzb3I+
IHsKICAgICBwdWJsaWM6CisgICAgICAgIGVudW0gSXRlcmF0b3JTdGF0ZSB7CisgICAgICAgICAg
ICBSZWFkeSA9IDAsCisgICAgICAgICAgICBTZWVrCisgICAgICAgIH07CisKICAgICAgICAgdmly
dHVhbCBQYXNzUmVmUHRyPEN1cnNvcj4gY2xvbmUoKSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgYm9v
bCBjb250aW51ZUZ1bmN0aW9uKGNvbnN0IElEQktleSogPSAwKSA9IDA7CisgICAgICAgIHZpcnR1
YWwgYm9vbCBjb250aW51ZUZ1bmN0aW9uKGNvbnN0IElEQktleSogPSAwLCBJdGVyYXRvclN0YXRl
IG5leHRTdGF0ZSA9IFNlZWspID0gMDsKICAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQktl
eT4ga2V5KCkgPSAwOwogICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCS2V5PiBwcmltYXJ5
S2V5KCkgPSAwOwogICAgICAgICB2aXJ0dWFsIFN0cmluZyB2YWx1ZSgpID0gMDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJCYWNraW5nU3Rv
cmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tp
bmdTdG9yZS5jcHAKaW5kZXggZjFmNmVkNTE0ODIzNWUxMDc4YTUzNDM4NzMxOTE0ZTAwMzNiMDQ5
NC4uOGQ1NzAyMjYwNTdiYTkyM2ZkM2ViMWY0ZmYyZTNkMGY5NjRkNzBkYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tp
bmdTdG9yZS5jcHAKQEAgLTk4MCw3ICs5ODAsNyBAQCBzdHJ1Y3QgQ3Vyc29yT3B0aW9ucyB7CiBj
bGFzcyBDdXJzb3JJbXBsQ29tbW9uIDogcHVibGljIElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yIHsK
IHB1YmxpYzoKICAgICAvLyBJREJCYWNraW5nU3RvcmU6OkN1cnNvcgotICAgIHZpcnR1YWwgYm9v
bCBjb250aW51ZUZ1bmN0aW9uKGNvbnN0IElEQktleSopOworICAgIHZpcnR1YWwgYm9vbCBjb250
aW51ZUZ1bmN0aW9uKGNvbnN0IElEQktleSosIEl0ZXJhdG9yU3RhdGUpOwogICAgIHZpcnR1YWwg
UGFzc1JlZlB0cjxJREJLZXk+IGtleSgpIHsgcmV0dXJuIG1fY3VycmVudEtleTsgfQogICAgIHZp
cnR1YWwgUGFzc1JlZlB0cjxJREJLZXk+IHByaW1hcnlLZXkoKSB7IHJldHVybiBtX2N1cnJlbnRL
ZXk7IH0KICAgICB2aXJ0dWFsIFN0cmluZyB2YWx1ZSgpID0gMDsKQEAgLTEwMTUsNiArMTAxNSw5
IEBAIHByb3RlY3RlZDoKIAogICAgIHZpcnR1YWwgfkN1cnNvckltcGxDb21tb24oKSB7fQogCisg
ICAgYm9vbCBpc1Bhc3RCb3VuZHMoKSBjb25zdDsKKyAgICBib29sIGhhdmVFbnRlcmVkUmFuZ2Uo
KSBjb25zdDsKKwogICAgIExldmVsREJUcmFuc2FjdGlvbiogbV90cmFuc2FjdGlvbjsKICAgICBD
dXJzb3JPcHRpb25zIG1fY3Vyc29yT3B0aW9uczsKICAgICBPd25QdHI8TGV2ZWxEQkl0ZXJhdG9y
PiBtX2l0ZXJhdG9yOwpAQCAtMTAyNCw2MiArMTAyNywyNiBAQCBwcm90ZWN0ZWQ6CiBib29sIEN1
cnNvckltcGxDb21tb246OmZpcnN0U2VlaygpCiB7CiAgICAgbV9pdGVyYXRvciA9IG1fdHJhbnNh
Y3Rpb24tPmNyZWF0ZUl0ZXJhdG9yKCk7Ci0KICAgICBpZiAobV9jdXJzb3JPcHRpb25zLmZvcndh
cmQpCiAgICAgICAgIG1faXRlcmF0b3ItPnNlZWsobV9jdXJzb3JPcHRpb25zLmxvd0tleSk7CiAg
ICAgZWxzZQogICAgICAgICBtX2l0ZXJhdG9yLT5zZWVrKG1fY3Vyc29yT3B0aW9ucy5oaWdoS2V5
KTsKIAotICAgIGZvciAoOzspIHsKLSAgICAgICAgaWYgKCFtX2l0ZXJhdG9yLT5pc1ZhbGlkKCkp
Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgaWYgKG1fY3Vyc29yT3B0aW9u
cy5mb3J3YXJkICYmIG1fY3Vyc29yT3B0aW9ucy5oaWdoT3BlbiAmJiBjb21wYXJlSW5kZXhLZXlz
KG1faXRlcmF0b3ItPmtleSgpLCBtX2N1cnNvck9wdGlvbnMuaGlnaEtleSkgPj0gMCkKLSAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgaWYgKG1fY3Vyc29yT3B0aW9ucy5mb3J3YXJk
ICYmICFtX2N1cnNvck9wdGlvbnMuaGlnaE9wZW4gJiYgY29tcGFyZUluZGV4S2V5cyhtX2l0ZXJh
dG9yLT5rZXkoKSwgbV9jdXJzb3JPcHRpb25zLmhpZ2hLZXkpID4gMCkKLSAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICAgICAgaWYgKCFtX2N1cnNvck9wdGlvbnMuZm9yd2FyZCAmJiBtX2N1
cnNvck9wdGlvbnMubG93T3BlbiAmJiBjb21wYXJlSW5kZXhLZXlzKG1faXRlcmF0b3ItPmtleSgp
LCBtX2N1cnNvck9wdGlvbnMubG93S2V5KSA8PSAwKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgICAgICBpZiAoIW1fY3Vyc29yT3B0aW9ucy5mb3J3YXJkICYmICFtX2N1cnNvck9wdGlv
bnMubG93T3BlbiAmJiBjb21wYXJlSW5kZXhLZXlzKG1faXRlcmF0b3ItPmtleSgpLCBtX2N1cnNv
ck9wdGlvbnMubG93S2V5KSA8IDApCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAg
ICAgaWYgKG1fY3Vyc29yT3B0aW9ucy5mb3J3YXJkICYmIG1fY3Vyc29yT3B0aW9ucy5sb3dPcGVu
KSB7Ci0gICAgICAgICAgICAvLyBsb3dLZXkgbm90IGluY2x1ZGVkIGluIHRoZSByYW5nZS4KLSAg
ICAgICAgICAgIGlmIChjb21wYXJlSW5kZXhLZXlzKG1faXRlcmF0b3ItPmtleSgpLCBtX2N1cnNv
ck9wdGlvbnMubG93S2V5KSA8PSAwKSB7Ci0gICAgICAgICAgICAgICAgbV9pdGVyYXRvci0+bmV4
dCgpOwotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgfQotICAgICAgICB9
Ci0gICAgICAgIGlmICghbV9jdXJzb3JPcHRpb25zLmZvcndhcmQgJiYgbV9jdXJzb3JPcHRpb25z
LmhpZ2hPcGVuKSB7Ci0gICAgICAgICAgICAvLyBoaWdoS2V5IG5vdCBpbmNsdWRlZCBpbiB0aGUg
cmFuZ2UuCi0gICAgICAgICAgICBpZiAoY29tcGFyZUluZGV4S2V5cyhtX2l0ZXJhdG9yLT5rZXko
KSwgbV9jdXJzb3JPcHRpb25zLmhpZ2hLZXkpID49IDApIHsKLSAgICAgICAgICAgICAgICBtX2l0
ZXJhdG9yLT5wcmV2KCk7Ci0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoIWxvYWRDdXJyZW50Um93KCkpIHsKLSAgICAgICAg
ICAgIGlmIChtX2N1cnNvck9wdGlvbnMuZm9yd2FyZCkKLSAgICAgICAgICAgICAgICBtX2l0ZXJh
dG9yLT5uZXh0KCk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgbV9pdGVyYXRv
ci0+cHJldigpOwotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLQotICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICB9CisgICAgcmV0dXJuIGNvbnRpbnVlRnVuY3Rpb24oMCwgUmVhZHkp
OwogfQogCi1ib29sIEN1cnNvckltcGxDb21tb246OmNvbnRpbnVlRnVuY3Rpb24oY29uc3QgSURC
S2V5KiBrZXkpCitib29sIEN1cnNvckltcGxDb21tb246OmNvbnRpbnVlRnVuY3Rpb24oY29uc3Qg
SURCS2V5KiBrZXksIEl0ZXJhdG9yU3RhdGUgbmV4dFN0YXRlKQogewotICAgIC8vIEZJWE1FOiBU
aGlzIHNoYXJlcyBhIGxvdCBvZiBjb2RlIHdpdGggZmlyc3RTZWVrLgogICAgIFJlZlB0cjxJREJL
ZXk+IHByZXZpb3VzS2V5ID0gbV9jdXJyZW50S2V5OwogCiAgICAgZm9yICg7OykgewotICAgICAg
ICBpZiAobV9jdXJzb3JPcHRpb25zLmZvcndhcmQpCi0gICAgICAgICAgICBtX2l0ZXJhdG9yLT5u
ZXh0KCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1faXRlcmF0b3ItPnByZXYoKTsKKyAg
ICAgICAgaWYgKG5leHRTdGF0ZSA9PSBTZWVrKSB7CisgICAgICAgICAgICBpZiAobV9jdXJzb3JP
cHRpb25zLmZvcndhcmQpCisgICAgICAgICAgICAgICAgbV9pdGVyYXRvci0+bmV4dCgpOworICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIG1faXRlcmF0b3ItPnByZXYoKTsKKyAgICAg
ICAgfSBlbHNlCisgICAgICAgICAgICBuZXh0U3RhdGUgPSBTZWVrOyAvLyBmb3Igc3Vic2VxdWVu
dCBpdGVyYXRpb25zCiAKICAgICAgICAgaWYgKCFtX2l0ZXJhdG9yLT5pc1ZhbGlkKCkpCiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMDg4LDE1ICsxMDU1LDE0IEBAIGJvb2wgQ3Vyc29y
SW1wbENvbW1vbjo6Y29udGludWVGdW5jdGlvbihjb25zdCBJREJLZXkqIGtleSkKICAgICAgICAg
aWYgKCFtX3RyYW5zYWN0aW9uLT5nZXQobV9pdGVyYXRvci0+a2V5KCksIHRyYXNoKSkKICAgICAg
ICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBpZiAobV9jdXJzb3JPcHRpb25zLmZvcndhcmQg
JiYgbV9jdXJzb3JPcHRpb25zLmhpZ2hPcGVuICYmIGNvbXBhcmVJbmRleEtleXMobV9pdGVyYXRv
ci0+a2V5KCksIG1fY3Vyc29yT3B0aW9ucy5oaWdoS2V5KSA+PSAwKSAvLyBoaWdoIGtleSBub3Qg
aW5jbHVkZWQgaW4gcmFuZ2UKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgaWYg
KG1fY3Vyc29yT3B0aW9ucy5mb3J3YXJkICYmICFtX2N1cnNvck9wdGlvbnMuaGlnaE9wZW4gJiYg
Y29tcGFyZUluZGV4S2V5cyhtX2l0ZXJhdG9yLT5rZXkoKSwgbV9jdXJzb3JPcHRpb25zLmhpZ2hL
ZXkpID4gMCkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgaWYgKCFtX2N1cnNv
ck9wdGlvbnMuZm9yd2FyZCAmJiBtX2N1cnNvck9wdGlvbnMubG93T3BlbiAmJiBjb21wYXJlSW5k
ZXhLZXlzKG1faXRlcmF0b3ItPmtleSgpLCBtX2N1cnNvck9wdGlvbnMubG93S2V5KSA8PSAwKSAv
LyBsb3cga2V5IG5vdCBpbmNsdWRlZCBpbiByYW5nZQotICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgICAgICBpZiAoIW1fY3Vyc29yT3B0aW9ucy5mb3J3YXJkICYmICFtX2N1cnNvck9wdGlv
bnMubG93T3BlbiAmJiBjb21wYXJlSW5kZXhLZXlzKG1faXRlcmF0b3ItPmtleSgpLCBtX2N1cnNv
ck9wdGlvbnMubG93S2V5KSA8IDApCisgICAgICAgIGlmIChpc1Bhc3RCb3VuZHMoKSkKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAorICAgICAgICBpZiAoIWhhdmVFbnRlcmVkUmFuZ2UoKSkK
KyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIC8vIFRoZSByb3cgbWF5IG5vdCBsb2Fk
IGJlY2F1c2UgdGhlcmUncyBhIHN0YWxlIGVudHJ5IGluIHRoZQorICAgICAgICAvLyBpbmRleC4g
VGhpcyBpcyBub3QgZmF0YWwuCiAgICAgICAgIGlmICghbG9hZEN1cnJlbnRSb3coKSkKICAgICAg
ICAgICAgIGNvbnRpbnVlOwogCkBAIC0xMTE5LDYgKzEwODUsMzMgQEAgYm9vbCBDdXJzb3JJbXBs
Q29tbW9uOjpjb250aW51ZUZ1bmN0aW9uKGNvbnN0IElEQktleSoga2V5KQogICAgIHJldHVybiB0
cnVlOwogfQogCitib29sIEN1cnNvckltcGxDb21tb246OmhhdmVFbnRlcmVkUmFuZ2UoKSBjb25z
dAoreworICAgIGlmIChtX2N1cnNvck9wdGlvbnMuZm9yd2FyZCkgeworICAgICAgICBpZiAobV9j
dXJzb3JPcHRpb25zLmxvd09wZW4pCisgICAgICAgICAgICByZXR1cm4gY29tcGFyZUluZGV4S2V5
cyhtX2l0ZXJhdG9yLT5rZXkoKSwgbV9jdXJzb3JPcHRpb25zLmxvd0tleSkgPiAwOworCisgICAg
ICAgIHJldHVybiBjb21wYXJlSW5kZXhLZXlzKG1faXRlcmF0b3ItPmtleSgpLCBtX2N1cnNvck9w
dGlvbnMubG93S2V5KSA+PSAwOworICAgIH0KKyAgICBpZiAobV9jdXJzb3JPcHRpb25zLmhpZ2hP
cGVuKQorICAgICAgICByZXR1cm4gY29tcGFyZUluZGV4S2V5cyhtX2l0ZXJhdG9yLT5rZXkoKSwg
bV9jdXJzb3JPcHRpb25zLmhpZ2hLZXkpIDwgMDsKKworICAgIHJldHVybiBjb21wYXJlSW5kZXhL
ZXlzKG1faXRlcmF0b3ItPmtleSgpLCBtX2N1cnNvck9wdGlvbnMuaGlnaEtleSkgPD0gMDsKK30K
KworYm9vbCBDdXJzb3JJbXBsQ29tbW9uOjppc1Bhc3RCb3VuZHMoKSBjb25zdAoreworICAgIGlm
IChtX2N1cnNvck9wdGlvbnMuZm9yd2FyZCkgeworICAgICAgICBpZiAobV9jdXJzb3JPcHRpb25z
LmhpZ2hPcGVuKQorICAgICAgICAgICAgcmV0dXJuIGNvbXBhcmVJbmRleEtleXMobV9pdGVyYXRv
ci0+a2V5KCksIG1fY3Vyc29yT3B0aW9ucy5oaWdoS2V5KSA+PSAwOworICAgICAgICByZXR1cm4g
Y29tcGFyZUluZGV4S2V5cyhtX2l0ZXJhdG9yLT5rZXkoKSwgbV9jdXJzb3JPcHRpb25zLmhpZ2hL
ZXkpID4gMDsKKyAgICB9CisKKyAgICBpZiAobV9jdXJzb3JPcHRpb25zLmxvd09wZW4pCisgICAg
ICAgIHJldHVybiBjb21wYXJlSW5kZXhLZXlzKG1faXRlcmF0b3ItPmtleSgpLCBtX2N1cnNvck9w
dGlvbnMubG93S2V5KSA8PSAwOworICAgIHJldHVybiBjb21wYXJlSW5kZXhLZXlzKG1faXRlcmF0
b3ItPmtleSgpLCBtX2N1cnNvck9wdGlvbnMubG93S2V5KSA8IDA7Cit9CisKIGNsYXNzIE9iamVj
dFN0b3JlQ3Vyc29ySW1wbCA6IHB1YmxpYyBDdXJzb3JJbXBsQ29tbW9uIHsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxPYmplY3RTdG9yZUN1cnNvckltcGw+IGNyZWF0ZShMZXZlbERC
VHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBjb25zdCBDdXJzb3JPcHRpb25zJiBjdXJzb3JPcHRp
b25zKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>