<?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>78638</bug_id>
          
          <creation_ts>2012-02-14 14:57:05 -0800</creation_ts>
          <short_desc>Don&apos;t clear IntentRequest callback pointers on stop()</short_desc>
          <delta_ts>2012-03-28 11:09:03 -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>
          
          <blocked>75123</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Greg Billock">gbillock</reporter>
          <assigned_to name="Greg Billock">gbillock</assigned_to>
          <cc>abarth</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>556645</commentid>
    <comment_count>0</comment_count>
    <who name="Greg Billock">gbillock</who>
    <bug_when>2012-02-14 14:57:05 -0800</bug_when>
    <thetext>Don&apos;t clear IntentRequest callback pointers on stop()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556647</commentid>
    <comment_count>1</comment_count>
      <attachid>127053</attachid>
    <who name="Greg Billock">gbillock</who>
    <bug_when>2012-02-14 14:58:48 -0800</bug_when>
    <thetext>Created attachment 127053
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556655</commentid>
    <comment_count>2</comment_count>
      <attachid>127053</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-02-14 15:06:07 -0800</bug_when>
    <thetext>Comment on attachment 127053
Patch

Please add a test that triggers this crash.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>557408</commentid>
    <comment_count>3</comment_count>
      <attachid>127201</attachid>
    <who name="Greg Billock">gbillock</who>
    <bug_when>2012-02-15 11:21:29 -0800</bug_when>
    <thetext>Created attachment 127201
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>557412</commentid>
    <comment_count>4</comment_count>
      <attachid>127201</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-02-15 11:24:57 -0800</bug_when>
    <thetext>Comment on attachment 127201
Patch

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

&gt; LayoutTests/webintents/resources/web-intents-reload-new.html:6
&gt; +      window.setTimeout(1000, function() {
&gt; +        });

This is probably not the right way to test this.

&gt; LayoutTests/webintents/web-intents-reload.html:20
&gt; +        window.setTimeout(1000, function() {
&gt; +          debug(&quot;* survived&quot;);
&gt; +        });

You shouldn&apos;t need any timeouts.  Maybe try using an iframe and triggering the crash in side the iframe.  You can have the parent frame grab a pointer to the iframe&apos;s document to prevent the document from getting deleted while the test is running.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>557417</commentid>
    <comment_count>5</comment_count>
    <who name="Greg Billock">gbillock</who>
    <bug_when>2012-02-15 11:29:07 -0800</bug_when>
    <thetext>Uploaded a new patch with a test.

Here&apos;s the situation now: a couple of days ago, the bug reliably happened on any page reloaded after an intent had been triggered. I also got chromium to reproduce the crash on the test pretty much as submitted here a couple of times.

However DumpRenderTree never triggered the crash, and now ToT chromium doesn&apos;t reproduce the crash at all either, on the test or on the original bug report reproduction case.

I still think the fix is an appropriate one, but either the stopActiveDOMObjects call context has changed a bit, or it was always racy with destruction of these objects, and something in my environment makes it now very unlikely to trigger.

I think the fix in IntentRequest is the right one, but given the flakiness, I&apos;m not sure the test actually prevents regression. Is there a way a test can trigger ScriptExecutionController::stopActiveDOMObjects directly? If so, that should prove it explicitly. I&apos;m currently doing that with a page load (which is what happened in the original bug report).

Background: the diagnosis of the problem is that the crash happened with IntentRequest::stop() was called, which led to derefs of the IntentResultCallback objects, which then wanted to delete themselves. But the V8 implementation uses ActiveDOMObject internally for these callbacks, which on delete call ScriptExecutionContext::willDestroyActiveDOMObject and crash there, since the iteration was in process.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>557421</commentid>
    <comment_count>6</comment_count>
    <who name="Greg Billock">gbillock</who>
    <bug_when>2012-02-15 11:32:02 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 127201 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=127201&amp;action=review
&gt; 
&gt; &gt; LayoutTests/webintents/resources/web-intents-reload-new.html:6
&gt; &gt; +      window.setTimeout(1000, function() {
&gt; &gt; +        });
&gt; 
&gt; This is probably not the right way to test this.
&gt; 
&gt; &gt; LayoutTests/webintents/web-intents-reload.html:20
&gt; &gt; +        window.setTimeout(1000, function() {
&gt; &gt; +          debug(&quot;* survived&quot;);
&gt; &gt; +        });
&gt; 
&gt; You shouldn&apos;t need any timeouts.  Maybe try using an iframe and triggering the crash in side the iframe.  You can have the parent frame grab a pointer to the iframe&apos;s document to prevent the document from getting deleted while the test is running.

Yeah, the timeouts were an attempt to keep the SEC alive to defeat whatever race might be going on. So the theory is that if I keep a document pointer to an iframe, then setting the location of the iframe should cause the stopActiveDOMObjects before any deletions? If that&apos;ll be different than the sequencing when using the main frame, it might work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>557493</commentid>
    <comment_count>7</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-02-15 13:15:08 -0800</bug_when>
    <thetext>&gt; Yeah, the timeouts were an attempt to keep the SEC alive to defeat whatever race might be going on. So the theory is that if I keep a document pointer to an iframe, then setting the location of the iframe should cause the stopActiveDOMObjects before any deletions?

Yes.  More specifically, you should keep a pointer to the frame&apos;s document (e.g., frames[0].document).

&gt; If that&apos;ll be different than the sequencing when using the main frame, it might work.

If you need to use a main frame, you can use window.open to create one.  However, using an iframe is better for testing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>559672</commentid>
    <comment_count>8</comment_count>
      <attachid>127680</attachid>
    <who name="Greg Billock">gbillock</who>
    <bug_when>2012-02-17 17:39:03 -0800</bug_when>
    <thetext>Created attachment 127680
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>559673</commentid>
    <comment_count>9</comment_count>
    <who name="Greg Billock">gbillock</who>
    <bug_when>2012-02-17 17:40:11 -0800</bug_when>
    <thetext>OK, This needed some test infrastructure to pass, but that will be useful in other tests of the feature. Test now crashes repeatably without fix and passes with the fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>559932</commentid>
    <comment_count>10</comment_count>
      <attachid>127680</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-02-19 12:39:02 -0800</bug_when>
    <thetext>Comment on attachment 127680
Patch

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

&gt; Source/WebCore/ChangeLog:-3004
&gt; -&gt;&gt;&gt;&gt;&gt;&gt;&gt; .r108008

This change looks spurious.

&gt; LayoutTests/webintents/resources/web-intents-reload-new.html:7
&gt; +&lt;html&gt;
&gt; +  &lt;head&gt;
&gt; +  &lt;/head&gt;
&gt; +  &lt;body&gt;
&gt; +    &lt;p&gt;No crash is pass.&lt;/p&gt;
&gt; +  &lt;/body&gt;
&gt; +&lt;/html&gt;

You can also just call this &quot;pass.html&quot; and just have the text PASS (so it can be reused by other tests).

&gt; LayoutTests/webintents/resources/web-intents-reload-orig.html:23
&gt; +        // This should not crash.
&gt; +        window.location = &quot;resources/web-intents-reload-new.html&quot;;

Are you use this shouldn&apos;t be &quot;web-intents-reload-new.html&quot; ?  The URL should be relative to this document.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561019</commentid>
    <comment_count>11</comment_count>
      <attachid>127997</attachid>
    <who name="Greg Billock">gbillock</who>
    <bug_when>2012-02-21 10:48:07 -0800</bug_when>
    <thetext>Created attachment 127997
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561020</commentid>
    <comment_count>12</comment_count>
      <attachid>127680</attachid>
    <who name="Greg Billock">gbillock</who>
    <bug_when>2012-02-21 10:50:16 -0800</bug_when>
    <thetext>Comment on attachment 127680
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:-3004
&gt;&gt; -&gt;&gt;&gt;&gt;&gt;&gt;&gt; .r108008
&gt; 
&gt; This change looks spurious.

I figured this was accidental and part of a merge. Shall I put it back?

&gt;&gt; LayoutTests/webintents/resources/web-intents-reload-new.html:7
&gt;&gt; +&lt;/html&gt;
&gt; 
&gt; You can also just call this &quot;pass.html&quot; and just have the text PASS (so it can be reused by other tests).

Done.

&gt;&gt; LayoutTests/webintents/resources/web-intents-reload-orig.html:23
&gt;&gt; +        window.location = &quot;resources/web-intents-reload-new.html&quot;;
&gt; 
&gt; Are you use this shouldn&apos;t be &quot;web-intents-reload-new.html&quot; ?  The URL should be relative to this document.

I tried it that way when I first wrote the test, but it didn&apos;t work. I think there&apos;s something about the DumpRenderTree test environment I don&apos;t grok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561035</commentid>
    <comment_count>13</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-02-21 10:59:29 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; (From update of attachment 127680 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=127680&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/ChangeLog:-3004
&gt; &gt;&gt; -&gt;&gt;&gt;&gt;&gt;&gt;&gt; .r108008
&gt; &gt; 
&gt; &gt; This change looks spurious.
&gt; 
&gt; I figured this was accidental and part of a merge. Shall I put it back?

We can clean up the ChangeLog file, but we should do that in a separate patch.

&gt; &gt;&gt; LayoutTests/webintents/resources/web-intents-reload-orig.html:23
&gt; &gt;&gt; +        window.location = &quot;resources/web-intents-reload-new.html&quot;;
&gt; &gt; 
&gt; &gt; Are you use this shouldn&apos;t be &quot;web-intents-reload-new.html&quot; ?  The URL should be relative to this document.
&gt; 
&gt; I tried it that way when I first wrote the test, but it didn&apos;t work. I think there&apos;s something about the DumpRenderTree test environment I don&apos;t grok.

Ah, probably because you&apos;re calling between frames and window.location (insanely) uses the first script to resolve relative URLs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561036</commentid>
    <comment_count>14</comment_count>
      <attachid>127997</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-02-21 11:00:06 -0800</bug_when>
    <thetext>Comment on attachment 127997
Patch

Looks great.  Thanks for working on the test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561086</commentid>
    <comment_count>15</comment_count>
      <attachid>127680</attachid>
    <who name="Greg Billock">gbillock</who>
    <bug_when>2012-02-21 11:34:16 -0800</bug_when>
    <thetext>Comment on attachment 127680
Patch

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

&gt;&gt;&gt;&gt; Source/WebCore/ChangeLog:-3004
&gt;&gt;&gt;&gt; -&gt;&gt;&gt;&gt;&gt;&gt;&gt; .r108008
&gt;&gt;&gt; 
&gt;&gt;&gt; This change looks spurious.
&gt;&gt; 
&gt;&gt; I figured this was accidental and part of a merge. Shall I put it back?
&gt; 
&gt; We can clean up the ChangeLog file, but we should do that in a separate patch.

ok

&gt;&gt;&gt;&gt; LayoutTests/webintents/resources/web-intents-reload-orig.html:23
&gt;&gt;&gt;&gt; +        window.location = &quot;resources/web-intents-reload-new.html&quot;;
&gt;&gt;&gt; 
&gt;&gt;&gt; Are you use this shouldn&apos;t be &quot;web-intents-reload-new.html&quot; ?  The URL should be relative to this document.
&gt;&gt; 
&gt;&gt; I tried it that way when I first wrote the test, but it didn&apos;t work. I think there&apos;s something about the DumpRenderTree test environment I don&apos;t grok.
&gt; 
&gt; Ah, probably because you&apos;re calling between frames and window.location (insanely) uses the first script to resolve relative URLs.

That explains it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561092</commentid>
    <comment_count>16</comment_count>
      <attachid>128012</attachid>
    <who name="Greg Billock">gbillock</who>
    <bug_when>2012-02-21 11:41:59 -0800</bug_when>
    <thetext>Created attachment 128012
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561104</commentid>
    <comment_count>17</comment_count>
    <who name="Greg Billock">gbillock</who>
    <bug_when>2012-02-21 11:55:40 -0800</bug_when>
    <thetext>ok, should be ready to go.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563303</commentid>
    <comment_count>18</comment_count>
      <attachid>128012</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-02-23 11:39:20 -0800</bug_when>
    <thetext>Comment on attachment 128012
Patch

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

&gt; Tools/DumpRenderTree/chromium/WebViewHost.h:239
&gt; +    virtual void dispatchIntent(WebKit::WebFrame* source, const WebKit::WebIntentRequest&amp;) OVERRIDE;

We actually don&apos;t use OVERRIDE in for the WebKit API to make it easier to change.  That&apos;s mostly a concern for cross-repository OVERRIDE declarations though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563311</commentid>
    <comment_count>19</comment_count>
      <attachid>128012</attachid>
    <who name="Greg Billock">gbillock</who>
    <bug_when>2012-02-23 11:42:55 -0800</bug_when>
    <thetext>Comment on attachment 128012
Patch

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

&gt;&gt; Tools/DumpRenderTree/chromium/WebViewHost.h:239
&gt;&gt; +    virtual void dispatchIntent(WebKit::WebFrame* source, const WebKit::WebIntentRequest&amp;) OVERRIDE;
&gt; 
&gt; We actually don&apos;t use OVERRIDE in for the WebKit API to make it easier to change.  That&apos;s mostly a concern for cross-repository OVERRIDE declarations though.

Removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563312</commentid>
    <comment_count>20</comment_count>
      <attachid>128518</attachid>
    <who name="Greg Billock">gbillock</who>
    <bug_when>2012-02-23 11:44:01 -0800</bug_when>
    <thetext>Created attachment 128518
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563891</commentid>
    <comment_count>21</comment_count>
      <attachid>128518</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-23 20:58:15 -0800</bug_when>
    <thetext>Comment on attachment 128518
Patch

Clearing flags on attachment: 128518

Committed r108724: &lt;http://trac.webkit.org/changeset/108724&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563892</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-23 20:58:21 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127053</attachid>
            <date>2012-02-14 14:58:48 -0800</date>
            <delta_ts>2012-02-15 11:21:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78638-20120214145847.patch</filename>
            <type>text/plain</type>
            <size>2877</size>
            <attacher name="Greg Billock">gbillock</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA3NTYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGJlYzViYTYzMWUzNDc5
NGVkZWJjMDAxMjhkZTljYWZiODQ1OTgxMy4uNzAyOTg0MjVhMzg4YTJhNTU5MTVmYmU4M2Y0NTI1
NjllNmIyM2FkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDEyLTAyLTE0ICBHcmVn
IEJpbGxvY2sgIDxnYmlsbG9ja0Bnb29nbGUuY29tPgorCisgICAgICAgIERvbid0IGNsZWFyIElu
dGVudFJlcXVlc3QgY2FsbGJhY2sgcG9pbnRlcnMgb24gc3RvcCgpCisKKyAgICAgICAgVGhpcyBj
YXVzZXMgcmUtZW50cnkgaW50byBTY3JpcHRFeGVjdXRpb25Db250ZXh0IHdoZW4KKyAgICAgICAg
dGhlIEFjdGl2ZURPTUNhbGxiYWNrIG9iamVjdHMgZ2V0IGRlbGV0ZWQsIHdoaWNoIGNyYXNoZXMu
CisgICAgICAgIEluc3RlYWQsIGp1c3QgZGUtYWN0aXZhdGUgdGhlIG9iamVjdCBhbmQgd2FpdCBm
b3IKKyAgICAgICAgY29udGV4dCBkZXN0cnVjdGlvbiB0byBjbGVhbiB1cC4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc4NjM4CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNb2R1bGVzL2ludGVudHMvSW50
ZW50UmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlbnRSZXF1ZXN0OjpJbnRlbnRS
ZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkludGVudFJlcXVlc3Q6OnN0b3ApOgorICAgICAg
ICAoV2ViQ29yZTo6SW50ZW50UmVxdWVzdDo6cG9zdFJlc3VsdCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnRlbnRSZXF1ZXN0Ojpwb3N0RmFpbHVyZSk6CisgICAgICAgICogTW9kdWxlcy9pbnRlbnRz
L0ludGVudFJlcXVlc3QuaDoKKyAgICAgICAgKEludGVudFJlcXVlc3QpOgorCiAyMDEyLTAyLTEz
ICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AZ29vZ2xlLmNvbT4KIAogICAgICAgICBXZWIgSW5z
cGVjdG9yOiB3cmFwIHNldHRpbmdzIHNlbGVjdG9yIHRleHQgYW5kIGFkZGluZyBhIHJ1bGUgd2l0
aCB1bmRvYWJsZSBhY3Rpb25zLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bnRlbnRzL0ludGVudFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbnRlbnRz
L0ludGVudFJlcXVlc3QuY3BwCmluZGV4IDQ2OGI1MWY0M2NlODc4NGY3MDNjODAyNDdmYjA0ZGY4
OGYyYjBmMmEuLmNjMmIyZGY4ZTc2Nzk2MjNmYTFkMTkwN2U2NzM0MzU4Yzg1YTc2M2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW50ZW50cy9JbnRlbnRSZXF1ZXN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ludGVudHMvSW50ZW50UmVxdWVzdC5jcHAKQEAg
LTU0LDYgKzU0LDcgQEAgSW50ZW50UmVxdWVzdDo6SW50ZW50UmVxdWVzdChTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0LAogICAgICwgbV9pbnRlbnQoaW50ZW50KQogICAgICwgbV9zdWNj
ZXNzQ2FsbGJhY2soc3VjY2Vzc0NhbGxiYWNrKQogICAgICwgbV9lcnJvckNhbGxiYWNrKGVycm9y
Q2FsbGJhY2spCisgICAgLCBtX3N0b3BwZWQoZmFsc2UpCiB7CiB9CiAKQEAgLTY2LDEyICs2Nywx
NCBAQCB2b2lkIEludGVudFJlcXVlc3Q6OmNvbnRleHREZXN0cm95ZWQoKQogCiB2b2lkIEludGVu
dFJlcXVlc3Q6OnN0b3AoKQogewotICAgIG1fc3VjY2Vzc0NhbGxiYWNrLmNsZWFyKCk7Ci0gICAg
bV9lcnJvckNhbGxiYWNrLmNsZWFyKCk7CisgICAgbV9zdG9wcGVkID0gdHJ1ZTsKIH0KIAogdm9p
ZCBJbnRlbnRSZXF1ZXN0Ojpwb3N0UmVzdWx0KFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogZGF0YSkK
IHsKKyAgICBpZiAobV9zdG9wcGVkKQorICAgICAgICByZXR1cm47CisKICAgICAvLyBDYWxsYmFj
ayBjb3VsZCBsZWFkIHRvIGRlbGV0aW9uIG9mIHRoaXMuCiAgICAgUmVmUHRyPEludGVudFJlcXVl
c3Q+IHByb3RlY3Rvcih0aGlzKTsKIApAQCAtODYsNiArODksOSBAQCB2b2lkIEludGVudFJlcXVl
c3Q6OnBvc3RSZXN1bHQoU2VyaWFsaXplZFNjcmlwdFZhbHVlKiBkYXRhKQogCiB2b2lkIEludGVu
dFJlcXVlc3Q6OnBvc3RGYWlsdXJlKFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogZGF0YSkKIHsKKyAg
ICBpZiAobV9zdG9wcGVkKQorICAgICAgICByZXR1cm47CisKICAgICAvLyBDYWxsYmFjayBjb3Vs
ZCBsZWFkIHRvIGRlbGV0aW9uIG9mIHRoaXMuCiAgICAgUmVmUHRyPEludGVudFJlcXVlc3Q+IHBy
b3RlY3Rvcih0aGlzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbnRl
bnRzL0ludGVudFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW50ZW50cy9JbnRl
bnRSZXF1ZXN0LmgKaW5kZXggN2E4MDlhOThlNzYwMTc4OGU0MzNmNzc1NzVhOGI3ZDBkYTZlZjNk
OS4uM2VkYzBjZWRkZjZjY2Q0MDljNTBhOWMyMjgyNzlkNTQxYTNhZWEzZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbnRlbnRzL0ludGVudFJlcXVlc3QuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ludGVudHMvSW50ZW50UmVxdWVzdC5oCkBAIC02MCw2ICs2MCw3
IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPEludGVudD4gbV9pbnRlbnQ7CiAgICAgUmVmUHRyPElu
dGVudFJlc3VsdENhbGxiYWNrPiBtX3N1Y2Nlc3NDYWxsYmFjazsKICAgICBSZWZQdHI8SW50ZW50
UmVzdWx0Q2FsbGJhY2s+IG1fZXJyb3JDYWxsYmFjazsKKyAgICBib29sIG1fc3RvcHBlZDsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127201</attachid>
            <date>2012-02-15 11:21:29 -0800</date>
            <delta_ts>2012-02-17 17:39:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78638-20120215112128.patch</filename>
            <type>text/plain</type>
            <size>5553</size>
            <attacher name="Greg Billock">gbillock</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA3NTYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGJlYzViYTYzMWUzNDc5
NGVkZWJjMDAxMjhkZTljYWZiODQ1OTgxMy4uNzAyOTg0MjVhMzg4YTJhNTU5MTVmYmU4M2Y0NTI1
NjllNmIyM2FkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDEyLTAyLTE0ICBHcmVn
IEJpbGxvY2sgIDxnYmlsbG9ja0Bnb29nbGUuY29tPgorCisgICAgICAgIERvbid0IGNsZWFyIElu
dGVudFJlcXVlc3QgY2FsbGJhY2sgcG9pbnRlcnMgb24gc3RvcCgpCisKKyAgICAgICAgVGhpcyBj
YXVzZXMgcmUtZW50cnkgaW50byBTY3JpcHRFeGVjdXRpb25Db250ZXh0IHdoZW4KKyAgICAgICAg
dGhlIEFjdGl2ZURPTUNhbGxiYWNrIG9iamVjdHMgZ2V0IGRlbGV0ZWQsIHdoaWNoIGNyYXNoZXMu
CisgICAgICAgIEluc3RlYWQsIGp1c3QgZGUtYWN0aXZhdGUgdGhlIG9iamVjdCBhbmQgd2FpdCBm
b3IKKyAgICAgICAgY29udGV4dCBkZXN0cnVjdGlvbiB0byBjbGVhbiB1cC4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc4NjM4CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNb2R1bGVzL2ludGVudHMvSW50
ZW50UmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlbnRSZXF1ZXN0OjpJbnRlbnRS
ZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkludGVudFJlcXVlc3Q6OnN0b3ApOgorICAgICAg
ICAoV2ViQ29yZTo6SW50ZW50UmVxdWVzdDo6cG9zdFJlc3VsdCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnRlbnRSZXF1ZXN0Ojpwb3N0RmFpbHVyZSk6CisgICAgICAgICogTW9kdWxlcy9pbnRlbnRz
L0ludGVudFJlcXVlc3QuaDoKKyAgICAgICAgKEludGVudFJlcXVlc3QpOgorCiAyMDEyLTAyLTEz
ICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AZ29vZ2xlLmNvbT4KIAogICAgICAgICBXZWIgSW5z
cGVjdG9yOiB3cmFwIHNldHRpbmdzIHNlbGVjdG9yIHRleHQgYW5kIGFkZGluZyBhIHJ1bGUgd2l0
aCB1bmRvYWJsZSBhY3Rpb25zLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bnRlbnRzL0ludGVudFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbnRlbnRz
L0ludGVudFJlcXVlc3QuY3BwCmluZGV4IDQ2OGI1MWY0M2NlODc4NGY3MDNjODAyNDdmYjA0ZGY4
OGYyYjBmMmEuLjQ4NmNhZWZhYjMxZWI0MTlkZmI2MTRkYjk2ZDJjYmI2MTY3ZDA4MjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW50ZW50cy9JbnRlbnRSZXF1ZXN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ludGVudHMvSW50ZW50UmVxdWVzdC5jcHAKQEAg
LTU0LDI0ICs1NCwyNiBAQCBJbnRlbnRSZXF1ZXN0OjpJbnRlbnRSZXF1ZXN0KFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQsCiAgICAgLCBtX2ludGVudChpbnRlbnQpCiAgICAgLCBtX3N1
Y2Nlc3NDYWxsYmFjayhzdWNjZXNzQ2FsbGJhY2spCiAgICAgLCBtX2Vycm9yQ2FsbGJhY2soZXJy
b3JDYWxsYmFjaykKKyAgICAsIG1fc3RvcHBlZChmYWxzZSkKIHsKIH0KIAogdm9pZCBJbnRlbnRS
ZXF1ZXN0Ojpjb250ZXh0RGVzdHJveWVkKCkKIHsKICAgICBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNl
cnZlcjo6Y29udGV4dERlc3Ryb3llZCgpOwotICAgIG1fc3VjY2Vzc0NhbGxiYWNrLmNsZWFyKCk7
Ci0gICAgbV9lcnJvckNhbGxiYWNrLmNsZWFyKCk7CisgICAgbV9zdG9wcGVkID0gdHJ1ZTsKIH0K
IAogdm9pZCBJbnRlbnRSZXF1ZXN0OjpzdG9wKCkKIHsKLSAgICBtX3N1Y2Nlc3NDYWxsYmFjay5j
bGVhcigpOwotICAgIG1fZXJyb3JDYWxsYmFjay5jbGVhcigpOworICAgIG1fc3RvcHBlZCA9IHRy
dWU7CiB9CiAKIHZvaWQgSW50ZW50UmVxdWVzdDo6cG9zdFJlc3VsdChTZXJpYWxpemVkU2NyaXB0
VmFsdWUqIGRhdGEpCiB7CisgICAgaWYgKG1fc3RvcHBlZCkKKyAgICAgICAgcmV0dXJuOworCiAg
ICAgLy8gQ2FsbGJhY2sgY291bGQgbGVhZCB0byBkZWxldGlvbiBvZiB0aGlzLgogICAgIFJlZlB0
cjxJbnRlbnRSZXF1ZXN0PiBwcm90ZWN0b3IodGhpcyk7CiAKQEAgLTg2LDYgKzg4LDkgQEAgdm9p
ZCBJbnRlbnRSZXF1ZXN0Ojpwb3N0UmVzdWx0KFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogZGF0YSkK
IAogdm9pZCBJbnRlbnRSZXF1ZXN0Ojpwb3N0RmFpbHVyZShTZXJpYWxpemVkU2NyaXB0VmFsdWUq
IGRhdGEpCiB7CisgICAgaWYgKG1fc3RvcHBlZCkKKyAgICAgICAgcmV0dXJuOworCiAgICAgLy8g
Q2FsbGJhY2sgY291bGQgbGVhZCB0byBkZWxldGlvbiBvZiB0aGlzLgogICAgIFJlZlB0cjxJbnRl
bnRSZXF1ZXN0PiBwcm90ZWN0b3IodGhpcyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW50ZW50cy9JbnRlbnRSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ludGVudHMvSW50ZW50UmVxdWVzdC5oCmluZGV4IDdhODA5YTk4ZTc2MDE3ODhlNDMzZjc3NTc1
YThiN2QwZGE2ZWYzZDkuLjNlZGMwY2VkZGY2Y2NkNDA5YzUwYTljMjI4Mjc5ZDU0MWEzYWVhM2Qg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW50ZW50cy9JbnRlbnRSZXF1ZXN0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbnRlbnRzL0ludGVudFJlcXVlc3QuaApA
QCAtNjAsNiArNjAsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxJbnRlbnQ+IG1faW50ZW50Owog
ICAgIFJlZlB0cjxJbnRlbnRSZXN1bHRDYWxsYmFjaz4gbV9zdWNjZXNzQ2FsbGJhY2s7CiAgICAg
UmVmUHRyPEludGVudFJlc3VsdENhbGxiYWNrPiBtX2Vycm9yQ2FsbGJhY2s7CisgICAgYm9vbCBt
X3N0b3BwZWQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJpbnRlbnRzL3Jlc291cmNlcy93ZWItaW50ZW50cy1yZWxvYWQtbmV3Lmh0bWwg
Yi9MYXlvdXRUZXN0cy93ZWJpbnRlbnRzL3Jlc291cmNlcy93ZWItaW50ZW50cy1yZWxvYWQtbmV3
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMDk2Y2M1NDEzMjQ0YWFhNWU5MmZjNDY3YmMyN2UyM2YwMWU4ZWEx
OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmludGVudHMvcmVzb3VyY2VzL3dl
Yi1pbnRlbnRzLXJlbG9hZC1uZXcuaHRtbApAQCAtMCwwICsxLDE3IEBACis8aHRtbD4KKyAgPGhl
YWQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKyAgICA8c2NyaXB0PgorICAgICAgd2luZG93LnNldFRpbWVvdXQoMTAwMCwg
ZnVuY3Rpb24oKSB7CisgICAgICAgIH0pOworICAgIDwvc2NyaXB0PgorICA8L2hlYWQ+CisgIDxi
b2R5PgorICAgIDxwPk5vIGNyYXNoIGlzIHBhc3MuPC9wPgorICAgIDxzY3JpcHQ+CisgICAgICBp
ZiAobGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
bm90aWZ5RG9uZSgpOworICAgICAgfQorICAgIDwvc2NyaXB0PgorICA8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJpbnRlbnRzL3dlYi1pbnRlbnRzLXJlbG9hZC1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJpbnRlbnRzL3dlYi1pbnRlbnRzLXJlbG9hZC1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDcxZDU3NzQyYmFmMmYyYWU3OWQzMWI4M2Y0Y2MyNTFk
NTc3YTE3YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmludGVudHMvd2ViLWlu
dGVudHMtcmVsb2FkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxIEBACitObyBjcmFzaCBpcyBwYXNz
LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViaW50ZW50cy93ZWItaW50ZW50cy1yZWxvYWQu
aHRtbCBiL0xheW91dFRlc3RzL3dlYmludGVudHMvd2ViLWludGVudHMtcmVsb2FkLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZTRkYmQxNjBlMjk3YzJmMDI4ZThhMzVjZjJlMDE3NzYzMmE0Y2JkYQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmludGVudHMvd2ViLWludGVudHMtcmVsb2FkLmh0
bWwKQEAgLTAsMCArMSw0MCBAQAorPGh0bWw+CisgIDxoZWFkPgorICAgIDxzY3JpcHQgc3JjPSIu
Li9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlw
dD4KKyAgICAgIGZ1bmN0aW9uIGJ1dHRvbkNsaWNrZWQoKSB7CisgICAgICAgIHZhciBpbnRlbnQg
PSBuZXcgSW50ZW50KCJhY3Rpb24iLCAidHlwZSIpOworICAgICAgICB0cnkgeworICAgICAgICAg
IG5hdmlnYXRvci5zdGFydEFjdGl2aXR5KGludGVudCk7CisgICAgICAgIH0gY2F0Y2ggKGUpIHsK
KyAgICAgICAgICB0ZXN0RmFpbGVkKCJzdGFydEFjdGl2aXR5IHNob3VsZCBub3QgdGhyb3cgZXhj
ZXB0aW9uIik7CisgICAgICAgIH0KKworICAgICAgICBkZWJ1ZygiKiBuYXZpZ2F0aW5nIGFmdGVy
IHN0YXJ0QWN0aXZpdHkiKTsKKworICAgICAgICAvLyBUaGlzIHNob3VsZCBub3QgY3Jhc2guCisg
ICAgICAgIHdpbmRvdy5sb2NhdGlvbiA9ICJyZXNvdXJjZXMvd2ViLWludGVudHMtcmVsb2FkLW5l
dy5odG1sIjsKKworICAgICAgICB3aW5kb3cuc2V0VGltZW91dCgxMDAwLCBmdW5jdGlvbigpIHsK
KyAgICAgICAgICBkZWJ1ZygiKiBzdXJ2aXZlZCIpOworICAgICAgICB9KTsKKyAgICAgIH0KKwor
ICAgICAgZnVuY3Rpb24gYXV0b21hdGVUZXN0KCkgeworICAgICAgICBpZiAobGF5b3V0VGVzdENv
bnRyb2xsZXIpIHsKKyAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25l
KCk7CisgICAgICAgIH0KKyAgICAgICAgZGVidWcoIiogY2xpY2tpbmcgYnV0dG9uIik7CisgICAg
ICAgIHZhciBidXR0b24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYnV0dG9uIik7CisgICAg
ICAgIGlmIChldmVudFNlbmRlcikgeworICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRv
KGJ1dHRvbi5vZmZzZXRMZWZ0ICsgNSwgYnV0dG9uLm9mZnNldFRvcCArIDUpOworICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOworICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAo
KTsKKyAgICAgICAgfQorICAgICAgfQorICAgIDwvc2NyaXB0PgorICA8L2hlYWQ+CisgIDxib2R5
IG9ubG9hZD0iYXV0b21hdGVUZXN0KCkiPgorICAgIDxpbnB1dCB0eXBlPSJidXR0b24iIGlkPSJi
dXR0b24iIHZhbHVlPSJTdGFydCBXZWIgSW50ZW50IiBvbm1vdXNldXA9ImJ1dHRvbkNsaWNrZWQo
KSI+CisgIDwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127680</attachid>
            <date>2012-02-17 17:39:03 -0800</date>
            <delta_ts>2012-02-21 11:34:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78638-20120217173902.patch</filename>
            <type>text/plain</type>
            <size>9602</size>
            <attacher name="Greg Billock">gbillock</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4MDk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDlmMmEyMGI5NzYxNDUy
YmJjZGZkMzE3NjBkNTJhZDBmYzQ2YmY5Zi4uOThlNDQ5NzUwNWYxMjZlYWJkYjUyYWZmNjkzNmI4
ZTMzNGM5NTM5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDEyLTAyLTE0ICBHcmVn
IEJpbGxvY2sgIDxnYmlsbG9ja0Bnb29nbGUuY29tPgorCisgICAgICAgIERvbid0IGNsZWFyIElu
dGVudFJlcXVlc3QgY2FsbGJhY2sgcG9pbnRlcnMgb24gc3RvcCgpCisKKyAgICAgICAgVGhpcyBj
YXVzZXMgcmUtZW50cnkgaW50byBTY3JpcHRFeGVjdXRpb25Db250ZXh0IHdoZW4KKyAgICAgICAg
dGhlIEFjdGl2ZURPTUNhbGxiYWNrIG9iamVjdHMgZ2V0IGRlbGV0ZWQsIHdoaWNoIGNyYXNoZXMu
CisgICAgICAgIEluc3RlYWQsIGp1c3QgZGUtYWN0aXZhdGUgdGhlIG9iamVjdCBhbmQgd2FpdCBm
b3IKKyAgICAgICAgY29udGV4dCBkZXN0cnVjdGlvbiB0byBjbGVhbiB1cC4KKworICAgICAgICBU
ZXN0IGNyYXNoZXMgY29uc2lzdGVudGx5IHdpdGhvdXQgZml4IGFuZCBwYXNzZXMgd2l0aCBmaXgu
CisgICAgICAgIEFkZGVkIHNvbWUgdGVzdCBpbmZyYXN0cnVjdHVyZSB0byBzdXBwb3J0IHRoaXMg
dGVzdC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc4
NjM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBN
b2R1bGVzL2ludGVudHMvSW50ZW50UmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRl
bnRSZXF1ZXN0OjpJbnRlbnRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkludGVudFJlcXVl
c3Q6OnN0b3ApOgorICAgICAgICAoV2ViQ29yZTo6SW50ZW50UmVxdWVzdDo6cG9zdFJlc3VsdCk6
CisgICAgICAgIChXZWJDb3JlOjpJbnRlbnRSZXF1ZXN0Ojpwb3N0RmFpbHVyZSk6CisgICAgICAg
ICogTW9kdWxlcy9pbnRlbnRzL0ludGVudFJlcXVlc3QuaDoKKyAgICAgICAgKEludGVudFJlcXVl
c3QpOgorCiAyMDEyLTAyLTE3ICBUaW0gRHJlc3NlciAgPHRkcmVzc2VyQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBbY2hyb21pdW1dIFJlZmFjdG9yIHZpZGVvIGRyYXdpbmcgdG8gYmUgbW9yZSBk
YXRhIGRyaXZlbgpAQCAtMzAwMSw3ICszMDI0LDYgQEAKICAgICAgICAgKiBwbGF0Zm9ybS9TY3Jv
bGxWaWV3Lmg6CiAgICAgICAgIE1vdmUgd2hlZWxFdmVudCB0byBGcmFtZVZpZXcuCiAKLT4+Pj4+
Pj4gLnIxMDgwMDgKIDIwMTItMDItMTUgIE1hcmsgSGFobmVuYmVyZyAgPG1oYWhuZW5iZXJnQGFw
cGxlLmNvbT4KIAogICAgICAgICBSb290T2JqZWN0OjpmaW5hbGl6ZSBjYW4gY2F1c2UgYSBjcmFz
aCBpbiBvYmplY3QtPmludmFsaWRhdGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbnRlbnRzL0ludGVudFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bnRlbnRzL0ludGVudFJlcXVlc3QuY3BwCmluZGV4IDQ2OGI1MWY0M2NlODc4NGY3MDNjODAyNDdm
YjA0ZGY4OGYyYjBmMmEuLjQ4NmNhZWZhYjMxZWI0MTlkZmI2MTRkYjk2ZDJjYmI2MTY3ZDA4Mjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW50ZW50cy9JbnRlbnRSZXF1ZXN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ludGVudHMvSW50ZW50UmVxdWVzdC5j
cHAKQEAgLTU0LDI0ICs1NCwyNiBAQCBJbnRlbnRSZXF1ZXN0OjpJbnRlbnRSZXF1ZXN0KFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsCiAgICAgLCBtX2ludGVudChpbnRlbnQpCiAgICAg
LCBtX3N1Y2Nlc3NDYWxsYmFjayhzdWNjZXNzQ2FsbGJhY2spCiAgICAgLCBtX2Vycm9yQ2FsbGJh
Y2soZXJyb3JDYWxsYmFjaykKKyAgICAsIG1fc3RvcHBlZChmYWxzZSkKIHsKIH0KIAogdm9pZCBJ
bnRlbnRSZXF1ZXN0Ojpjb250ZXh0RGVzdHJveWVkKCkKIHsKICAgICBDb250ZXh0RGVzdHJ1Y3Rp
b25PYnNlcnZlcjo6Y29udGV4dERlc3Ryb3llZCgpOwotICAgIG1fc3VjY2Vzc0NhbGxiYWNrLmNs
ZWFyKCk7Ci0gICAgbV9lcnJvckNhbGxiYWNrLmNsZWFyKCk7CisgICAgbV9zdG9wcGVkID0gdHJ1
ZTsKIH0KIAogdm9pZCBJbnRlbnRSZXF1ZXN0OjpzdG9wKCkKIHsKLSAgICBtX3N1Y2Nlc3NDYWxs
YmFjay5jbGVhcigpOwotICAgIG1fZXJyb3JDYWxsYmFjay5jbGVhcigpOworICAgIG1fc3RvcHBl
ZCA9IHRydWU7CiB9CiAKIHZvaWQgSW50ZW50UmVxdWVzdDo6cG9zdFJlc3VsdChTZXJpYWxpemVk
U2NyaXB0VmFsdWUqIGRhdGEpCiB7CisgICAgaWYgKG1fc3RvcHBlZCkKKyAgICAgICAgcmV0dXJu
OworCiAgICAgLy8gQ2FsbGJhY2sgY291bGQgbGVhZCB0byBkZWxldGlvbiBvZiB0aGlzLgogICAg
IFJlZlB0cjxJbnRlbnRSZXF1ZXN0PiBwcm90ZWN0b3IodGhpcyk7CiAKQEAgLTg2LDYgKzg4LDkg
QEAgdm9pZCBJbnRlbnRSZXF1ZXN0Ojpwb3N0UmVzdWx0KFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSog
ZGF0YSkKIAogdm9pZCBJbnRlbnRSZXF1ZXN0Ojpwb3N0RmFpbHVyZShTZXJpYWxpemVkU2NyaXB0
VmFsdWUqIGRhdGEpCiB7CisgICAgaWYgKG1fc3RvcHBlZCkKKyAgICAgICAgcmV0dXJuOworCiAg
ICAgLy8gQ2FsbGJhY2sgY291bGQgbGVhZCB0byBkZWxldGlvbiBvZiB0aGlzLgogICAgIFJlZlB0
cjxJbnRlbnRSZXF1ZXN0PiBwcm90ZWN0b3IodGhpcyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW50ZW50cy9JbnRlbnRSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ludGVudHMvSW50ZW50UmVxdWVzdC5oCmluZGV4IDdhODA5YTk4ZTc2MDE3ODhlNDMz
Zjc3NTc1YThiN2QwZGE2ZWYzZDkuLjNlZGMwY2VkZGY2Y2NkNDA5YzUwYTljMjI4Mjc5ZDU0MWEz
YWVhM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW50ZW50cy9JbnRlbnRS
ZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbnRlbnRzL0ludGVudFJlcXVl
c3QuaApAQCAtNjAsNiArNjAsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxJbnRlbnQ+IG1faW50
ZW50OwogICAgIFJlZlB0cjxJbnRlbnRSZXN1bHRDYWxsYmFjaz4gbV9zdWNjZXNzQ2FsbGJhY2s7
CiAgICAgUmVmUHRyPEludGVudFJlc3VsdENhbGxiYWNrPiBtX2Vycm9yQ2FsbGJhY2s7CisgICAg
Ym9vbCBtX3N0b3BwZWQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAKaW5kZXggYmVmYTNiNzE4MDI0
YWMxNWE4MjdjNDlmNThmYWUwNmY1NTBiNjYzZS4uY2UzYzY1MzI5MTM0NTNlMTk5MDkwZDdkMTRk
NjczMzU2MDUwMDcxYiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
V2ViVmlld0hvc3QuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZp
ZXdIb3N0LmNwcApAQCAtNDcsNiArNDcsNyBAQAogI2luY2x1ZGUgIldlYkZyYW1lLmgiCiAjaW5j
bHVkZSAiV2ViR2VvbG9jYXRpb25DbGllbnRNb2NrLmgiCiAjaW5jbHVkZSAiV2ViSGlzdG9yeUl0
ZW0uaCIKKyNpbmNsdWRlICJXZWJJbnRlbnQuaCIKICNpbmNsdWRlICJXZWJLaXQuaCIKICNpbmNs
dWRlICJXZWJOb2RlLmgiCiAjaW5jbHVkZSAiV2ViUGx1Z2luUGFyYW1zLmgiCkBAIC0xMjk0LDYg
KzEyOTUsMTQgQEAgYm9vbCBXZWJWaWV3SG9zdDo6d2lsbENoZWNrQW5kRGlzcGF0Y2hNZXNzYWdl
RXZlbnQoV2ViRnJhbWUqIHNvdXJjZSwgV2ViU2VjdXJpdHkKICAgICByZXR1cm4gZmFsc2U7CiB9
CiAKK3ZvaWQgV2ViVmlld0hvc3Q6OmRpc3BhdGNoSW50ZW50KFdlYkZyYW1lKiBzb3VyY2UsIGNv
bnN0IFdlYkludGVudFJlcXVlc3QmIHJlcXVlc3QpCit7CisgICAgcHJpbnRmKCJSZWNlaXZlZCBX
ZWIgSW50ZW50OiBhY3Rpb249JXMgdHlwZT0lc1xuIiwKKyAgICAgICAgICAgcmVxdWVzdC5pbnRl
bnQoKS5hY3Rpb24oKS51dGY4KCkuZGF0YSgpLAorICAgICAgICAgICByZXF1ZXN0LmludGVudCgp
LnR5cGUoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBtX2N1cnJlbnRSZXF1ZXN0ID0gcmVxdWVzdDsK
K30KKwogLy8gUHVibGljIGZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBXZWJWaWV3SG9zdDo6V2ViVmlld0hvc3Qo
VGVzdFNoZWxsKiBzaGVsbCkKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1dlYlZpZXdIb3N0LmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3
SG9zdC5oCmluZGV4IDZmNzU5NzI4ZjAxODkzNjE1YWMwOTE1MWE5NTM3NjMxYzU3YjQyNGUuLjJl
NmM3MWUwNDc3MGQ0NTFlNTliY2RlYmMwMjA1Mjg4NmNkMjIzZTcgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmgKKysrIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuaApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1
ZGUgIldlYkFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb24uaCIKICNpbmNsdWRlICJXZWJDdXJzb3JJ
bmZvLmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVDbGllbnQuaCIKKyNpbmNsdWRlICJXZWJJbnRlbnRS
ZXF1ZXN0LmgiCiAjaW5jbHVkZSAiV2ViU3BlbGxDaGVja0NsaWVudC5oIgogI2luY2x1ZGUgIldl
YlZpZXdDbGllbnQuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAtMjM1LDYgKzIzNiw3
IEBAIGNsYXNzIFdlYlZpZXdIb3N0IDogcHVibGljIFdlYktpdDo6V2ViU3BlbGxDaGVja0NsaWVu
dCwgcHVibGljIFdlYktpdDo6V2ViVmlld0NsCiAgICAgdmlydHVhbCB2b2lkIGRpZERldGVjdFhT
UyhXZWJLaXQ6OldlYkZyYW1lKiwgY29uc3QgV2ViS2l0OjpXZWJVUkwmLCBib29sIGRpZEJsb2Nr
RW50aXJlUGFnZSk7CiAgICAgdmlydHVhbCB2b2lkIG9wZW5GaWxlU3lzdGVtKFdlYktpdDo6V2Vi
RnJhbWUqLCBXZWJLaXQ6OldlYkZpbGVTeXN0ZW06OlR5cGUsIGxvbmcgbG9uZyBzaXplLCBib29s
IGNyZWF0ZSwgV2ViS2l0OjpXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzKik7CiAgICAgdmlydHVhbCBi
b29sIHdpbGxDaGVja0FuZERpc3BhdGNoTWVzc2FnZUV2ZW50KFdlYktpdDo6V2ViRnJhbWUqIHNv
dXJjZSwgV2ViS2l0OjpXZWJTZWN1cml0eU9yaWdpbiB0YXJnZXQsIFdlYktpdDo6V2ViRE9NTWVz
c2FnZUV2ZW50KTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hJbnRlbnQoV2ViS2l0OjpXZWJG
cmFtZSogc291cmNlLCBjb25zdCBXZWJLaXQ6OldlYkludGVudFJlcXVlc3QmKSBPVkVSUklERTsK
IAogICAgIFdlYktpdDo6V2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrKiBkZXZpY2VPcmll
bnRhdGlvbkNsaWVudE1vY2soKTsKICAgICAKQEAgLTQwNCw2ICs0MDYsOSBAQCBwcml2YXRlOgog
ICAgICAgICBQb2ludGVyTG9ja1dpbGxGYWlsU3luYwogICAgIH0gbV9wb2ludGVyTG9ja1BsYW5u
ZWRSZXN1bHQ7CiAjZW5kaWYKKworICAgIC8vIEZvciB3ZWIgaW50ZW50czogaG9sZHMgdGhlIGN1
cnJlbnQgcmVxdWVzdCwgaWYgYW55LgorICAgIFdlYktpdDo6V2ViSW50ZW50UmVxdWVzdCBtX2N1
cnJlbnRSZXF1ZXN0OwogfTsKIAogI2VuZGlmIC8vIFdlYlZpZXdIb3N0X2gKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmludGVudHMvcmVzb3VyY2VzL3dlYi1pbnRlbnRzLXJlbG9hZC1uZXcu
aHRtbCBiL0xheW91dFRlc3RzL3dlYmludGVudHMvcmVzb3VyY2VzL3dlYi1pbnRlbnRzLXJlbG9h
ZC1uZXcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMmI1MmRkY2Y4ZTZkNzlmNzEwMmYzM2ZkZjViY2JiNTlm
ZTgyMDBjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViaW50ZW50cy9yZXNvdXJj
ZXMvd2ViLWludGVudHMtcmVsb2FkLW5ldy5odG1sCkBAIC0wLDAgKzEsNyBAQAorPGh0bWw+Cisg
IDxoZWFkPgorICA8L2hlYWQ+CisgIDxib2R5PgorICAgIDxwPk5vIGNyYXNoIGlzIHBhc3MuPC9w
PgorICA8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJpbnRlbnRz
L3Jlc291cmNlcy93ZWItaW50ZW50cy1yZWxvYWQtb3JpZy5odG1sIGIvTGF5b3V0VGVzdHMvd2Vi
aW50ZW50cy9yZXNvdXJjZXMvd2ViLWludGVudHMtcmVsb2FkLW9yaWcuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li41YzM3NGM4OTFjNDcxYWVhZDQ2ZWRmYjExZWQ3MTc3YjM5NGVjOTIxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvd2ViaW50ZW50cy9yZXNvdXJjZXMvd2ViLWludGVudHMtcmVsb2Fk
LW9yaWcuaHRtbApAQCAtMCwwICsxLDMwIEBACis8aHRtbD4KKyAgPGhlYWQ+CisgICAgPHNjcmlw
dCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KyAgICA8c2NyaXB0PgorICAgICAgZnVuY3Rpb24gb25TdWNjZXNzKCkgeworICAgICAgfQorCisg
ICAgICBmdW5jdGlvbiBvbkZhaWx1cmUoKSB7CisgICAgICB9CisKKyAgICAgIGZ1bmN0aW9uIHN0
YXJ0SW50ZW50KCkgeworICAgICAgICBkZWJ1ZygiKiBsYXVuY2hpbmcgaW50ZW50IGFjdGlvbi90
eXBlIik7CisgICAgICAgIHZhciBpbnRlbnQgPSBuZXcgSW50ZW50KCJhY3Rpb24iLCAidHlwZSIp
OworICAgICAgICB0cnkgeworICAgICAgICAgIG5hdmlnYXRvci5zdGFydEFjdGl2aXR5KGludGVu
dCwgb25TdWNjZXNzLCBvbkZhaWx1cmUpOworICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAg
ICAgdGVzdEZhaWxlZCgic3RhcnRBY3Rpdml0eSBzaG91bGQgbm90IHRocm93IGV4Y2VwdGlvbiIp
OworICAgICAgICB9CisKKyAgICAgICAgZGVidWcoIiogbmF2aWdhdGluZyBhZnRlciBzdGFydEFj
dGl2aXR5Iik7CisKKyAgICAgICAgLy8gVGhpcyBzaG91bGQgbm90IGNyYXNoLgorICAgICAgICB3
aW5kb3cubG9jYXRpb24gPSAicmVzb3VyY2VzL3dlYi1pbnRlbnRzLXJlbG9hZC1uZXcuaHRtbCI7
CisgICAgICB9CisgICAgPC9zY3JpcHQ+CisgIDwvaGVhZD4KKyAgPGJvZHk+CisgICAgPHA+T3Jp
Z2luYWwgY29udGVudDwvcD4KKyAgPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViaW50ZW50cy93ZWItaW50ZW50cy1yZWxvYWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvd2ViaW50ZW50cy93ZWItaW50ZW50cy1yZWxvYWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjliOGRmZTgxNTY4OGEyMjA0YTZkYTY2YzBkMmE5NzQzN2FkMmViOGQKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy93ZWJpbnRlbnRzL3dlYi1pbnRlbnRzLXJlbG9hZC1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwxMCBAQAorUmVjZWl2ZWQgV2ViIEludGVudDogYWN0aW9uPWFjdGlv
biB0eXBlPXR5cGUKKyogbG9hZGVkCisqIHNlbnQgbW91c2V1cAorKiBsb2FkZWQgcmVwbGFjZW1l
bnQgcGFnZQorIAorCistLS0tLS0tLQorRnJhbWU6ICdmcmFtZScKKy0tLS0tLS0tCitObyBjcmFz
aCBpcyBwYXNzLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViaW50ZW50cy93ZWItaW50ZW50
cy1yZWxvYWQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmludGVudHMvd2ViLWludGVudHMtcmVsb2Fk
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZTIzZTEzNjA2MjYxODc4OWYxY2VhMDE5MGVjOWEyNWY5ZjFhM2M1
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmludGVudHMvd2ViLWludGVudHMt
cmVsb2FkLmh0bWwKQEAgLTAsMCArMSw0OSBAQAorPGh0bWw+CisgIDxoZWFkPgorICAgIDxzY3Jp
cHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cisg
ICAgPHNjcmlwdD4KKyAgICAgIHZhciBsYXRjaCA9IHRydWU7CisKKyAgICAgIGZ1bmN0aW9uIGJ1
dHRvbkNsaWNrZWQoKSB7CisgICAgICAgIGZyYW1lc1swXS5zdGFydEludGVudCgpOworICAgICAg
fQorCisgICAgICBmdW5jdGlvbiBmcmFtZWxvYWRlZCgpIHsKKyAgICAgICAgaWYgKGxhdGNoKSB7
CisgICAgICAgICAgbGF0Y2ggPSBmYWxzZTsKKyAgICAgICAgICBzdGFydFRlc3QoKTsKKyAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBkZWJ1ZygiKiBsb2FkZWQgcmVwbGFj
ZW1lbnQgcGFnZSIpOworCisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
IHsKKyAgICAgICAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwor
ICAgICAgICB9CisgICAgICB9CisKKyAgICAgIGZ1bmN0aW9uIHN0YXJ0VGVzdCgpIHsKKyAgICAg
ICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICAgIHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgICAgICAgd2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBDaGlsZEZyYW1lc0FzVGV4dCgpOworICAgICAgICB9CisK
KyAgICAgICAgZGVidWcoIiogbG9hZGVkIik7CisKKyAgICAgICAgLy8gV2UgbXVzdCBzaW11bGF0
ZSBhIGJ1dHRvbiBwcmVzcyB3aXRoIGV2ZW50U2VuZGVyIGJlY2F1c2UgaW50ZW50cworICAgICAg
ICAvLyByZXF1aXJlIGEgdXNlciBnZXN0dXJlLgorICAgICAgICB2YXIgYnV0dG9uID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoImJ1dHRvbiIpOworICAgICAgICBpZiAoZXZlbnRTZW5kZXIpIHsK
KyAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhidXR0b24uZ2V0Qm91bmRpbmdDbGll
bnRSZWN0KCkubGVmdCArIDIsIGJ1dHRvbi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AgKyAx
Mik7CisgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7CisgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VVcCgpOworICAgICAgICAgIGRlYnVnKCIqIHNlbnQgbW91c2V1cCIpOworICAg
ICAgICB9CisgICAgICB9CisgICAgPC9zY3JpcHQ+CisgIDwvaGVhZD4KKzxib2R5PgorPGlucHV0
IHR5cGU9ImJ1dHRvbiIgaWQ9ImJ1dHRvbiIgdmFsdWU9IlN0YXJ0IFdlYiBJbnRlbnQiIG9ubW91
c2V1cD0iYnV0dG9uQ2xpY2tlZCgpIj4KKzxpZnJhbWUgaWQ9ImZyYW1lIiBvbmxvYWQ9ImZyYW1l
bG9hZGVkKCkiIHNyYz0icmVzb3VyY2VzL3dlYi1pbnRlbnRzLXJlbG9hZC1vcmlnLmh0bWwiPjwv
aWZyYW1lPgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127997</attachid>
            <date>2012-02-21 10:48:07 -0800</date>
            <delta_ts>2012-02-21 11:41:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78638-20120221104806.patch</filename>
            <type>text/plain</type>
            <size>9504</size>
            <attacher name="Greg Billock">gbillock</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4MDk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDlmMmEyMGI5NzYxNDUy
YmJjZGZkMzE3NjBkNTJhZDBmYzQ2YmY5Zi4uOThlNDQ5NzUwNWYxMjZlYWJkYjUyYWZmNjkzNmI4
ZTMzNGM5NTM5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDEyLTAyLTE0ICBHcmVn
IEJpbGxvY2sgIDxnYmlsbG9ja0Bnb29nbGUuY29tPgorCisgICAgICAgIERvbid0IGNsZWFyIElu
dGVudFJlcXVlc3QgY2FsbGJhY2sgcG9pbnRlcnMgb24gc3RvcCgpCisKKyAgICAgICAgVGhpcyBj
YXVzZXMgcmUtZW50cnkgaW50byBTY3JpcHRFeGVjdXRpb25Db250ZXh0IHdoZW4KKyAgICAgICAg
dGhlIEFjdGl2ZURPTUNhbGxiYWNrIG9iamVjdHMgZ2V0IGRlbGV0ZWQsIHdoaWNoIGNyYXNoZXMu
CisgICAgICAgIEluc3RlYWQsIGp1c3QgZGUtYWN0aXZhdGUgdGhlIG9iamVjdCBhbmQgd2FpdCBm
b3IKKyAgICAgICAgY29udGV4dCBkZXN0cnVjdGlvbiB0byBjbGVhbiB1cC4KKworICAgICAgICBU
ZXN0IGNyYXNoZXMgY29uc2lzdGVudGx5IHdpdGhvdXQgZml4IGFuZCBwYXNzZXMgd2l0aCBmaXgu
CisgICAgICAgIEFkZGVkIHNvbWUgdGVzdCBpbmZyYXN0cnVjdHVyZSB0byBzdXBwb3J0IHRoaXMg
dGVzdC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc4
NjM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBN
b2R1bGVzL2ludGVudHMvSW50ZW50UmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRl
bnRSZXF1ZXN0OjpJbnRlbnRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkludGVudFJlcXVl
c3Q6OnN0b3ApOgorICAgICAgICAoV2ViQ29yZTo6SW50ZW50UmVxdWVzdDo6cG9zdFJlc3VsdCk6
CisgICAgICAgIChXZWJDb3JlOjpJbnRlbnRSZXF1ZXN0Ojpwb3N0RmFpbHVyZSk6CisgICAgICAg
ICogTW9kdWxlcy9pbnRlbnRzL0ludGVudFJlcXVlc3QuaDoKKyAgICAgICAgKEludGVudFJlcXVl
c3QpOgorCiAyMDEyLTAyLTE3ICBUaW0gRHJlc3NlciAgPHRkcmVzc2VyQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBbY2hyb21pdW1dIFJlZmFjdG9yIHZpZGVvIGRyYXdpbmcgdG8gYmUgbW9yZSBk
YXRhIGRyaXZlbgpAQCAtMzAwMSw3ICszMDI0LDYgQEAKICAgICAgICAgKiBwbGF0Zm9ybS9TY3Jv
bGxWaWV3Lmg6CiAgICAgICAgIE1vdmUgd2hlZWxFdmVudCB0byBGcmFtZVZpZXcuCiAKLT4+Pj4+
Pj4gLnIxMDgwMDgKIDIwMTItMDItMTUgIE1hcmsgSGFobmVuYmVyZyAgPG1oYWhuZW5iZXJnQGFw
cGxlLmNvbT4KIAogICAgICAgICBSb290T2JqZWN0OjpmaW5hbGl6ZSBjYW4gY2F1c2UgYSBjcmFz
aCBpbiBvYmplY3QtPmludmFsaWRhdGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbnRlbnRzL0ludGVudFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bnRlbnRzL0ludGVudFJlcXVlc3QuY3BwCmluZGV4IDQ2OGI1MWY0M2NlODc4NGY3MDNjODAyNDdm
YjA0ZGY4OGYyYjBmMmEuLjQ4NmNhZWZhYjMxZWI0MTlkZmI2MTRkYjk2ZDJjYmI2MTY3ZDA4Mjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW50ZW50cy9JbnRlbnRSZXF1ZXN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ludGVudHMvSW50ZW50UmVxdWVzdC5j
cHAKQEAgLTU0LDI0ICs1NCwyNiBAQCBJbnRlbnRSZXF1ZXN0OjpJbnRlbnRSZXF1ZXN0KFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsCiAgICAgLCBtX2ludGVudChpbnRlbnQpCiAgICAg
LCBtX3N1Y2Nlc3NDYWxsYmFjayhzdWNjZXNzQ2FsbGJhY2spCiAgICAgLCBtX2Vycm9yQ2FsbGJh
Y2soZXJyb3JDYWxsYmFjaykKKyAgICAsIG1fc3RvcHBlZChmYWxzZSkKIHsKIH0KIAogdm9pZCBJ
bnRlbnRSZXF1ZXN0Ojpjb250ZXh0RGVzdHJveWVkKCkKIHsKICAgICBDb250ZXh0RGVzdHJ1Y3Rp
b25PYnNlcnZlcjo6Y29udGV4dERlc3Ryb3llZCgpOwotICAgIG1fc3VjY2Vzc0NhbGxiYWNrLmNs
ZWFyKCk7Ci0gICAgbV9lcnJvckNhbGxiYWNrLmNsZWFyKCk7CisgICAgbV9zdG9wcGVkID0gdHJ1
ZTsKIH0KIAogdm9pZCBJbnRlbnRSZXF1ZXN0OjpzdG9wKCkKIHsKLSAgICBtX3N1Y2Nlc3NDYWxs
YmFjay5jbGVhcigpOwotICAgIG1fZXJyb3JDYWxsYmFjay5jbGVhcigpOworICAgIG1fc3RvcHBl
ZCA9IHRydWU7CiB9CiAKIHZvaWQgSW50ZW50UmVxdWVzdDo6cG9zdFJlc3VsdChTZXJpYWxpemVk
U2NyaXB0VmFsdWUqIGRhdGEpCiB7CisgICAgaWYgKG1fc3RvcHBlZCkKKyAgICAgICAgcmV0dXJu
OworCiAgICAgLy8gQ2FsbGJhY2sgY291bGQgbGVhZCB0byBkZWxldGlvbiBvZiB0aGlzLgogICAg
IFJlZlB0cjxJbnRlbnRSZXF1ZXN0PiBwcm90ZWN0b3IodGhpcyk7CiAKQEAgLTg2LDYgKzg4LDkg
QEAgdm9pZCBJbnRlbnRSZXF1ZXN0Ojpwb3N0UmVzdWx0KFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSog
ZGF0YSkKIAogdm9pZCBJbnRlbnRSZXF1ZXN0Ojpwb3N0RmFpbHVyZShTZXJpYWxpemVkU2NyaXB0
VmFsdWUqIGRhdGEpCiB7CisgICAgaWYgKG1fc3RvcHBlZCkKKyAgICAgICAgcmV0dXJuOworCiAg
ICAgLy8gQ2FsbGJhY2sgY291bGQgbGVhZCB0byBkZWxldGlvbiBvZiB0aGlzLgogICAgIFJlZlB0
cjxJbnRlbnRSZXF1ZXN0PiBwcm90ZWN0b3IodGhpcyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW50ZW50cy9JbnRlbnRSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ludGVudHMvSW50ZW50UmVxdWVzdC5oCmluZGV4IDdhODA5YTk4ZTc2MDE3ODhlNDMz
Zjc3NTc1YThiN2QwZGE2ZWYzZDkuLjNlZGMwY2VkZGY2Y2NkNDA5YzUwYTljMjI4Mjc5ZDU0MWEz
YWVhM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW50ZW50cy9JbnRlbnRS
ZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbnRlbnRzL0ludGVudFJlcXVl
c3QuaApAQCAtNjAsNiArNjAsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxJbnRlbnQ+IG1faW50
ZW50OwogICAgIFJlZlB0cjxJbnRlbnRSZXN1bHRDYWxsYmFjaz4gbV9zdWNjZXNzQ2FsbGJhY2s7
CiAgICAgUmVmUHRyPEludGVudFJlc3VsdENhbGxiYWNrPiBtX2Vycm9yQ2FsbGJhY2s7CisgICAg
Ym9vbCBtX3N0b3BwZWQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAKaW5kZXggYmVmYTNiNzE4MDI0
YWMxNWE4MjdjNDlmNThmYWUwNmY1NTBiNjYzZS4uY2UzYzY1MzI5MTM0NTNlMTk5MDkwZDdkMTRk
NjczMzU2MDUwMDcxYiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
V2ViVmlld0hvc3QuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZp
ZXdIb3N0LmNwcApAQCAtNDcsNiArNDcsNyBAQAogI2luY2x1ZGUgIldlYkZyYW1lLmgiCiAjaW5j
bHVkZSAiV2ViR2VvbG9jYXRpb25DbGllbnRNb2NrLmgiCiAjaW5jbHVkZSAiV2ViSGlzdG9yeUl0
ZW0uaCIKKyNpbmNsdWRlICJXZWJJbnRlbnQuaCIKICNpbmNsdWRlICJXZWJLaXQuaCIKICNpbmNs
dWRlICJXZWJOb2RlLmgiCiAjaW5jbHVkZSAiV2ViUGx1Z2luUGFyYW1zLmgiCkBAIC0xMjk0LDYg
KzEyOTUsMTQgQEAgYm9vbCBXZWJWaWV3SG9zdDo6d2lsbENoZWNrQW5kRGlzcGF0Y2hNZXNzYWdl
RXZlbnQoV2ViRnJhbWUqIHNvdXJjZSwgV2ViU2VjdXJpdHkKICAgICByZXR1cm4gZmFsc2U7CiB9
CiAKK3ZvaWQgV2ViVmlld0hvc3Q6OmRpc3BhdGNoSW50ZW50KFdlYkZyYW1lKiBzb3VyY2UsIGNv
bnN0IFdlYkludGVudFJlcXVlc3QmIHJlcXVlc3QpCit7CisgICAgcHJpbnRmKCJSZWNlaXZlZCBX
ZWIgSW50ZW50OiBhY3Rpb249JXMgdHlwZT0lc1xuIiwKKyAgICAgICAgICAgcmVxdWVzdC5pbnRl
bnQoKS5hY3Rpb24oKS51dGY4KCkuZGF0YSgpLAorICAgICAgICAgICByZXF1ZXN0LmludGVudCgp
LnR5cGUoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBtX2N1cnJlbnRSZXF1ZXN0ID0gcmVxdWVzdDsK
K30KKwogLy8gUHVibGljIGZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBXZWJWaWV3SG9zdDo6V2ViVmlld0hvc3Qo
VGVzdFNoZWxsKiBzaGVsbCkKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1dlYlZpZXdIb3N0LmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3
SG9zdC5oCmluZGV4IDZmNzU5NzI4ZjAxODkzNjE1YWMwOTE1MWE5NTM3NjMxYzU3YjQyNGUuLjJl
NmM3MWUwNDc3MGQ0NTFlNTliY2RlYmMwMjA1Mjg4NmNkMjIzZTcgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmgKKysrIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuaApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1
ZGUgIldlYkFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb24uaCIKICNpbmNsdWRlICJXZWJDdXJzb3JJ
bmZvLmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVDbGllbnQuaCIKKyNpbmNsdWRlICJXZWJJbnRlbnRS
ZXF1ZXN0LmgiCiAjaW5jbHVkZSAiV2ViU3BlbGxDaGVja0NsaWVudC5oIgogI2luY2x1ZGUgIldl
YlZpZXdDbGllbnQuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAtMjM1LDYgKzIzNiw3
IEBAIGNsYXNzIFdlYlZpZXdIb3N0IDogcHVibGljIFdlYktpdDo6V2ViU3BlbGxDaGVja0NsaWVu
dCwgcHVibGljIFdlYktpdDo6V2ViVmlld0NsCiAgICAgdmlydHVhbCB2b2lkIGRpZERldGVjdFhT
UyhXZWJLaXQ6OldlYkZyYW1lKiwgY29uc3QgV2ViS2l0OjpXZWJVUkwmLCBib29sIGRpZEJsb2Nr
RW50aXJlUGFnZSk7CiAgICAgdmlydHVhbCB2b2lkIG9wZW5GaWxlU3lzdGVtKFdlYktpdDo6V2Vi
RnJhbWUqLCBXZWJLaXQ6OldlYkZpbGVTeXN0ZW06OlR5cGUsIGxvbmcgbG9uZyBzaXplLCBib29s
IGNyZWF0ZSwgV2ViS2l0OjpXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzKik7CiAgICAgdmlydHVhbCBi
b29sIHdpbGxDaGVja0FuZERpc3BhdGNoTWVzc2FnZUV2ZW50KFdlYktpdDo6V2ViRnJhbWUqIHNv
dXJjZSwgV2ViS2l0OjpXZWJTZWN1cml0eU9yaWdpbiB0YXJnZXQsIFdlYktpdDo6V2ViRE9NTWVz
c2FnZUV2ZW50KTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hJbnRlbnQoV2ViS2l0OjpXZWJG
cmFtZSogc291cmNlLCBjb25zdCBXZWJLaXQ6OldlYkludGVudFJlcXVlc3QmKSBPVkVSUklERTsK
IAogICAgIFdlYktpdDo6V2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrKiBkZXZpY2VPcmll
bnRhdGlvbkNsaWVudE1vY2soKTsKICAgICAKQEAgLTQwNCw2ICs0MDYsOSBAQCBwcml2YXRlOgog
ICAgICAgICBQb2ludGVyTG9ja1dpbGxGYWlsU3luYwogICAgIH0gbV9wb2ludGVyTG9ja1BsYW5u
ZWRSZXN1bHQ7CiAjZW5kaWYKKworICAgIC8vIEZvciB3ZWIgaW50ZW50czogaG9sZHMgdGhlIGN1
cnJlbnQgcmVxdWVzdCwgaWYgYW55LgorICAgIFdlYktpdDo6V2ViSW50ZW50UmVxdWVzdCBtX2N1
cnJlbnRSZXF1ZXN0OwogfTsKIAogI2VuZGlmIC8vIFdlYlZpZXdIb3N0X2gKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmludGVudHMvcmVzb3VyY2VzL3Bhc3MuaHRtbCBiL0xheW91dFRlc3Rz
L3dlYmludGVudHMvcmVzb3VyY2VzL3Bhc3MuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZGUyMWUwOTI4Yjhi
MzhhZWYxOGRjNzcwMjY2YzYxYzhmY2FmNzY3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvd2ViaW50ZW50cy9yZXNvdXJjZXMvcGFzcy5odG1sCkBAIC0wLDAgKzEsNyBAQAorPGh0bWw+
CisgIDxoZWFkPgorICA8L2hlYWQ+CisgIDxib2R5PgorICAgIDxwPlBBU1M8L3A+CisgIDwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmludGVudHMvcmVzb3VyY2Vz
L3dlYi1pbnRlbnRzLXJlbG9hZC1vcmlnLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJpbnRlbnRzL3Jl
c291cmNlcy93ZWItaW50ZW50cy1yZWxvYWQtb3JpZy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ3YzgwZjAw
ZDYwMTRhNDY5YWNkMzIwYzVlMDNiZTk1ZTU2NmI2ODcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy93ZWJpbnRlbnRzL3Jlc291cmNlcy93ZWItaW50ZW50cy1yZWxvYWQtb3JpZy5odG1s
CkBAIC0wLDAgKzEsMzAgQEAKKzxodG1sPgorICA8aGVhZD4KKyAgICA8c2NyaXB0IHNyYz0iLi4v
Li4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorICAgIDxzY3Jp
cHQ+CisgICAgICBmdW5jdGlvbiBvblN1Y2Nlc3MoKSB7CisgICAgICB9CisKKyAgICAgIGZ1bmN0
aW9uIG9uRmFpbHVyZSgpIHsKKyAgICAgIH0KKworICAgICAgZnVuY3Rpb24gc3RhcnRJbnRlbnQo
KSB7CisgICAgICAgIGRlYnVnKCIqIGxhdW5jaGluZyBpbnRlbnQgYWN0aW9uL3R5cGUiKTsKKyAg
ICAgICAgdmFyIGludGVudCA9IG5ldyBJbnRlbnQoImFjdGlvbiIsICJ0eXBlIik7CisgICAgICAg
IHRyeSB7CisgICAgICAgICAgbmF2aWdhdG9yLnN0YXJ0QWN0aXZpdHkoaW50ZW50LCBvblN1Y2Nl
c3MsIG9uRmFpbHVyZSk7CisgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICB0ZXN0RmFp
bGVkKCJzdGFydEFjdGl2aXR5IHNob3VsZCBub3QgdGhyb3cgZXhjZXB0aW9uIik7CisgICAgICAg
IH0KKworICAgICAgICBkZWJ1ZygiKiBuYXZpZ2F0aW5nIGFmdGVyIHN0YXJ0QWN0aXZpdHkiKTsK
KworICAgICAgICAvLyBUaGlzIHNob3VsZCBub3QgY3Jhc2guCisgICAgICAgIHdpbmRvdy5sb2Nh
dGlvbiA9ICJyZXNvdXJjZXMvcGFzcy5odG1sIjsKKyAgICAgIH0KKyAgICA8L3NjcmlwdD4KKyAg
PC9oZWFkPgorICA8Ym9keT4KKyAgICA8cD5PcmlnaW5hbCBjb250ZW50PC9wPgorICA8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJpbnRlbnRzL3dlYi1pbnRlbnRz
LXJlbG9hZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJpbnRlbnRzL3dlYi1pbnRlbnRz
LXJlbG9hZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzgyZWM1YTVmNTM2OGE5N2Y0M2VhN2Zm
M2MwNjMwMWFkZTc2MDBjMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmludGVu
dHMvd2ViLWludGVudHMtcmVsb2FkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwIEBACitSZWNl
aXZlZCBXZWIgSW50ZW50OiBhY3Rpb249YWN0aW9uIHR5cGU9dHlwZQorKiBsb2FkZWQKKyogc2Vu
dCBtb3VzZXVwCisqIGxvYWRlZCByZXBsYWNlbWVudCBwYWdlCisgCisKKy0tLS0tLS0tCitGcmFt
ZTogJ2ZyYW1lJworLS0tLS0tLS0KK1BBU1MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmlu
dGVudHMvd2ViLWludGVudHMtcmVsb2FkLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJpbnRlbnRzL3dl
Yi1pbnRlbnRzLXJlbG9hZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUyM2UxMzYwNjI2MTg3ODlmMWNlYTAx
OTBlYzlhMjVmOWYxYTNjNTUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJpbnRl
bnRzL3dlYi1pbnRlbnRzLXJlbG9hZC5odG1sCkBAIC0wLDAgKzEsNDkgQEAKKzxodG1sPgorICA8
aGVhZD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQ+CisgICAgICB2YXIgbGF0Y2ggPSB0cnVlOworCisg
ICAgICBmdW5jdGlvbiBidXR0b25DbGlja2VkKCkgeworICAgICAgICBmcmFtZXNbMF0uc3RhcnRJ
bnRlbnQoKTsKKyAgICAgIH0KKworICAgICAgZnVuY3Rpb24gZnJhbWVsb2FkZWQoKSB7CisgICAg
ICAgIGlmIChsYXRjaCkgeworICAgICAgICAgIGxhdGNoID0gZmFsc2U7CisgICAgICAgICAgc3Rh
cnRUZXN0KCk7CisgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgZGVidWco
IiogbG9hZGVkIHJlcGxhY2VtZW50IHBhZ2UiKTsKKworICAgICAgICBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgICAgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
Lm5vdGlmeURvbmUoKTsKKyAgICAgICAgfQorICAgICAgfQorCisgICAgICBmdW5jdGlvbiBzdGFy
dFRlc3QoKSB7CisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAg
ICAgICAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAg
ICAgICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQ2hpbGRGcmFtZXNBc1RleHQo
KTsKKyAgICAgICAgfQorCisgICAgICAgIGRlYnVnKCIqIGxvYWRlZCIpOworCisgICAgICAgIC8v
IFdlIG11c3Qgc2ltdWxhdGUgYSBidXR0b24gcHJlc3Mgd2l0aCBldmVudFNlbmRlciBiZWNhdXNl
IGludGVudHMKKyAgICAgICAgLy8gcmVxdWlyZSBhIHVzZXIgZ2VzdHVyZS4KKyAgICAgICAgdmFy
IGJ1dHRvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJidXR0b24iKTsKKyAgICAgICAgaWYg
KGV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oYnV0dG9u
LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQgKyAyLCBidXR0b24uZ2V0Qm91bmRpbmdDbGll
bnRSZWN0KCkudG9wICsgMTIpOworICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOwor
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKKyAgICAgICAgICBkZWJ1ZygiKiBzZW50
IG1vdXNldXAiKTsKKyAgICAgICAgfQorICAgICAgfQorICAgIDwvc2NyaXB0PgorICA8L2hlYWQ+
Cis8Ym9keT4KKzxpbnB1dCB0eXBlPSJidXR0b24iIGlkPSJidXR0b24iIHZhbHVlPSJTdGFydCBX
ZWIgSW50ZW50IiBvbm1vdXNldXA9ImJ1dHRvbkNsaWNrZWQoKSI+Cis8aWZyYW1lIGlkPSJmcmFt
ZSIgb25sb2FkPSJmcmFtZWxvYWRlZCgpIiBzcmM9InJlc291cmNlcy93ZWItaW50ZW50cy1yZWxv
YWQtb3JpZy5odG1sIj48L2lmcmFtZT4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128012</attachid>
            <date>2012-02-21 11:41:59 -0800</date>
            <delta_ts>2012-02-23 11:43:58 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78638-20120221114158.patch</filename>
            <type>text/plain</type>
            <size>9292</size>
            <attacher name="Greg Billock">gbillock</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4MzU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzBkNzc3YTI1ZTFhNTll
NWJjNTc0ZmFjODliOTczOWE4MmRjMmQ1Ny4uYzcwZTQ2ZTQ1NDk1YmQ1NTU5NzZkMmZlOTJlNjRk
ZTQ3NjNiYWI5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDEyLTAyLTE0ICBHcmVn
IEJpbGxvY2sgIDxnYmlsbG9ja0Bnb29nbGUuY29tPgorCisgICAgICAgIERvbid0IGNsZWFyIElu
dGVudFJlcXVlc3QgY2FsbGJhY2sgcG9pbnRlcnMgb24gc3RvcCgpCisKKyAgICAgICAgVGhpcyBj
YXVzZXMgcmUtZW50cnkgaW50byBTY3JpcHRFeGVjdXRpb25Db250ZXh0IHdoZW4KKyAgICAgICAg
dGhlIEFjdGl2ZURPTUNhbGxiYWNrIG9iamVjdHMgZ2V0IGRlbGV0ZWQsIHdoaWNoIGNyYXNoZXMu
CisgICAgICAgIEluc3RlYWQsIGp1c3QgZGUtYWN0aXZhdGUgdGhlIG9iamVjdCBhbmQgd2FpdCBm
b3IKKyAgICAgICAgY29udGV4dCBkZXN0cnVjdGlvbiB0byBjbGVhbiB1cC4KKworICAgICAgICBU
ZXN0IGNyYXNoZXMgY29uc2lzdGVudGx5IHdpdGhvdXQgZml4IGFuZCBwYXNzZXMgd2l0aCBmaXgu
CisgICAgICAgIEFkZGVkIHNvbWUgdGVzdCBpbmZyYXN0cnVjdHVyZSB0byBzdXBwb3J0IHRoaXMg
dGVzdC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc4
NjM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBN
b2R1bGVzL2ludGVudHMvSW50ZW50UmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRl
bnRSZXF1ZXN0OjpJbnRlbnRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkludGVudFJlcXVl
c3Q6OnN0b3ApOgorICAgICAgICAoV2ViQ29yZTo6SW50ZW50UmVxdWVzdDo6cG9zdFJlc3VsdCk6
CisgICAgICAgIChXZWJDb3JlOjpJbnRlbnRSZXF1ZXN0Ojpwb3N0RmFpbHVyZSk6CisgICAgICAg
ICogTW9kdWxlcy9pbnRlbnRzL0ludGVudFJlcXVlc3QuaDoKKyAgICAgICAgKEludGVudFJlcXVl
c3QpOgorCiAyMDEyLTAyLTIxICBBbGV4YW5kZXIgUGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogW1N1Z2dlc3RCb3hdIHRleHRQcm9tcHQuY3Nz
IGRpc2FibGVtZW50IGRpc3BsYXlzIGdhcmJsZWQgc3VnZ2VzdCBib3gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW50ZW50cy9JbnRlbnRSZXF1ZXN0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW50ZW50cy9JbnRlbnRSZXF1ZXN0LmNwcAppbmRleCA0NjhiNTFmNDNj
ZTg3ODRmNzAzYzgwMjQ3ZmIwNGRmODhmMmIwZjJhLi40ODZjYWVmYWIzMWViNDE5ZGZiNjE0ZGI5
NmQyY2JiNjE2N2QwODI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ludGVu
dHMvSW50ZW50UmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbnRlbnRz
L0ludGVudFJlcXVlc3QuY3BwCkBAIC01NCwyNCArNTQsMjYgQEAgSW50ZW50UmVxdWVzdDo6SW50
ZW50UmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LAogICAgICwgbV9pbnRl
bnQoaW50ZW50KQogICAgICwgbV9zdWNjZXNzQ2FsbGJhY2soc3VjY2Vzc0NhbGxiYWNrKQogICAg
ICwgbV9lcnJvckNhbGxiYWNrKGVycm9yQ2FsbGJhY2spCisgICAgLCBtX3N0b3BwZWQoZmFsc2Up
CiB7CiB9CiAKIHZvaWQgSW50ZW50UmVxdWVzdDo6Y29udGV4dERlc3Ryb3llZCgpCiB7CiAgICAg
Q29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXI6OmNvbnRleHREZXN0cm95ZWQoKTsKLSAgICBtX3N1
Y2Nlc3NDYWxsYmFjay5jbGVhcigpOwotICAgIG1fZXJyb3JDYWxsYmFjay5jbGVhcigpOworICAg
IG1fc3RvcHBlZCA9IHRydWU7CiB9CiAKIHZvaWQgSW50ZW50UmVxdWVzdDo6c3RvcCgpCiB7Ci0g
ICAgbV9zdWNjZXNzQ2FsbGJhY2suY2xlYXIoKTsKLSAgICBtX2Vycm9yQ2FsbGJhY2suY2xlYXIo
KTsKKyAgICBtX3N0b3BwZWQgPSB0cnVlOwogfQogCiB2b2lkIEludGVudFJlcXVlc3Q6OnBvc3RS
ZXN1bHQoU2VyaWFsaXplZFNjcmlwdFZhbHVlKiBkYXRhKQogeworICAgIGlmIChtX3N0b3BwZWQp
CisgICAgICAgIHJldHVybjsKKwogICAgIC8vIENhbGxiYWNrIGNvdWxkIGxlYWQgdG8gZGVsZXRp
b24gb2YgdGhpcy4KICAgICBSZWZQdHI8SW50ZW50UmVxdWVzdD4gcHJvdGVjdG9yKHRoaXMpOwog
CkBAIC04Niw2ICs4OCw5IEBAIHZvaWQgSW50ZW50UmVxdWVzdDo6cG9zdFJlc3VsdChTZXJpYWxp
emVkU2NyaXB0VmFsdWUqIGRhdGEpCiAKIHZvaWQgSW50ZW50UmVxdWVzdDo6cG9zdEZhaWx1cmUo
U2VyaWFsaXplZFNjcmlwdFZhbHVlKiBkYXRhKQogeworICAgIGlmIChtX3N0b3BwZWQpCisgICAg
ICAgIHJldHVybjsKKwogICAgIC8vIENhbGxiYWNrIGNvdWxkIGxlYWQgdG8gZGVsZXRpb24gb2Yg
dGhpcy4KICAgICBSZWZQdHI8SW50ZW50UmVxdWVzdD4gcHJvdGVjdG9yKHRoaXMpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ludGVudHMvSW50ZW50UmVxdWVzdC5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbnRlbnRzL0ludGVudFJlcXVlc3QuaAppbmRleCA3YTgw
OWE5OGU3NjAxNzg4ZTQzM2Y3NzU3NWE4YjdkMGRhNmVmM2Q5Li4zZWRjMGNlZGRmNmNjZDQwOWM1
MGE5YzIyODI3OWQ1NDFhM2FlYTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ludGVudHMvSW50ZW50UmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW50
ZW50cy9JbnRlbnRSZXF1ZXN0LmgKQEAgLTYwLDYgKzYwLDcgQEAgcHJpdmF0ZToKICAgICBSZWZQ
dHI8SW50ZW50PiBtX2ludGVudDsKICAgICBSZWZQdHI8SW50ZW50UmVzdWx0Q2FsbGJhY2s+IG1f
c3VjY2Vzc0NhbGxiYWNrOwogICAgIFJlZlB0cjxJbnRlbnRSZXN1bHRDYWxsYmFjaz4gbV9lcnJv
ckNhbGxiYWNrOworICAgIGJvb2wgbV9zdG9wcGVkOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hv
c3QuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwCmlu
ZGV4IDBlNGM4M2RiNTI4ZTA4OTIwYTkxYjk0ZmUzMDIzYTc5ZWJlYjBlMWIuLjI1OGVhMDUzOTgw
Yjg0OWIyNGI3MmUzMTJlNzMzMDlmMjY1YzY0ZGQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAKQEAgLTQ3LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJX
ZWJGcmFtZS5oIgogI2luY2x1ZGUgIldlYkdlb2xvY2F0aW9uQ2xpZW50TW9jay5oIgogI2luY2x1
ZGUgIldlYkhpc3RvcnlJdGVtLmgiCisjaW5jbHVkZSAiV2ViSW50ZW50LmgiCiAjaW5jbHVkZSAi
V2ViS2l0LmgiCiAjaW5jbHVkZSAiV2ViTm9kZS5oIgogI2luY2x1ZGUgIldlYlBsdWdpblBhcmFt
cy5oIgpAQCAtMTMwNCw2ICsxMzA1LDE0IEBAIGJvb2wgV2ViVmlld0hvc3Q6OndpbGxDaGVja0Fu
ZERpc3BhdGNoTWVzc2FnZUV2ZW50KFdlYkZyYW1lKiBzb3VyY2UsIFdlYlNlY3VyaXR5CiAgICAg
cmV0dXJuIGZhbHNlOwogfQogCit2b2lkIFdlYlZpZXdIb3N0OjpkaXNwYXRjaEludGVudChXZWJG
cmFtZSogc291cmNlLCBjb25zdCBXZWJJbnRlbnRSZXF1ZXN0JiByZXF1ZXN0KQoreworICAgIHBy
aW50ZigiUmVjZWl2ZWQgV2ViIEludGVudDogYWN0aW9uPSVzIHR5cGU9JXNcbiIsCisgICAgICAg
ICAgIHJlcXVlc3QuaW50ZW50KCkuYWN0aW9uKCkudXRmOCgpLmRhdGEoKSwKKyAgICAgICAgICAg
cmVxdWVzdC5pbnRlbnQoKS50eXBlKCkudXRmOCgpLmRhdGEoKSk7CisgICAgbV9jdXJyZW50UmVx
dWVzdCA9IHJlcXVlc3Q7Cit9CisKIC8vIFB1YmxpYyBmdW5jdGlvbnMgLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogV2ViVmlld0hv
c3Q6OldlYlZpZXdIb3N0KFRlc3RTaGVsbCogc2hlbGwpCmRpZmYgLS1naXQgYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vV2ViVmlld0hvc3QuaAppbmRleCA2Zjc1OTcyOGYwMTg5MzYxNWFjMDkxNTFhOTUz
NzYzMWM1N2I0MjRlLi4yZTZjNzFlMDQ3NzBkNDUxZTU5YmNkZWJjMDIwNTI4ODZjZDIyM2U3IDEw
MDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5oCisr
KyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmgKQEAgLTM3LDYg
KzM3LDcgQEAKICNpbmNsdWRlICJXZWJBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uLmgiCiAjaW5j
bHVkZSAiV2ViQ3Vyc29ySW5mby5oIgogI2luY2x1ZGUgIldlYkZyYW1lQ2xpZW50LmgiCisjaW5j
bHVkZSAiV2ViSW50ZW50UmVxdWVzdC5oIgogI2luY2x1ZGUgIldlYlNwZWxsQ2hlY2tDbGllbnQu
aCIKICNpbmNsdWRlICJXZWJWaWV3Q2xpZW50LmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4K
QEAgLTIzNSw2ICsyMzYsNyBAQCBjbGFzcyBXZWJWaWV3SG9zdCA6IHB1YmxpYyBXZWJLaXQ6Oldl
YlNwZWxsQ2hlY2tDbGllbnQsIHB1YmxpYyBXZWJLaXQ6OldlYlZpZXdDbAogICAgIHZpcnR1YWwg
dm9pZCBkaWREZXRlY3RYU1MoV2ViS2l0OjpXZWJGcmFtZSosIGNvbnN0IFdlYktpdDo6V2ViVVJM
JiwgYm9vbCBkaWRCbG9ja0VudGlyZVBhZ2UpOwogICAgIHZpcnR1YWwgdm9pZCBvcGVuRmlsZVN5
c3RlbShXZWJLaXQ6OldlYkZyYW1lKiwgV2ViS2l0OjpXZWJGaWxlU3lzdGVtOjpUeXBlLCBsb25n
IGxvbmcgc2l6ZSwgYm9vbCBjcmVhdGUsIFdlYktpdDo6V2ViRmlsZVN5c3RlbUNhbGxiYWNrcyop
OwogICAgIHZpcnR1YWwgYm9vbCB3aWxsQ2hlY2tBbmREaXNwYXRjaE1lc3NhZ2VFdmVudChXZWJL
aXQ6OldlYkZyYW1lKiBzb3VyY2UsIFdlYktpdDo6V2ViU2VjdXJpdHlPcmlnaW4gdGFyZ2V0LCBX
ZWJLaXQ6OldlYkRPTU1lc3NhZ2VFdmVudCk7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoSW50
ZW50KFdlYktpdDo6V2ViRnJhbWUqIHNvdXJjZSwgY29uc3QgV2ViS2l0OjpXZWJJbnRlbnRSZXF1
ZXN0JikgT1ZFUlJJREU7CiAKICAgICBXZWJLaXQ6OldlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50
TW9jayogZGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrKCk7CiAgICAgCkBAIC00MDQsNiArNDA2
LDkgQEAgcHJpdmF0ZToKICAgICAgICAgUG9pbnRlckxvY2tXaWxsRmFpbFN5bmMKICAgICB9IG1f
cG9pbnRlckxvY2tQbGFubmVkUmVzdWx0OwogI2VuZGlmCisKKyAgICAvLyBGb3Igd2ViIGludGVu
dHM6IGhvbGRzIHRoZSBjdXJyZW50IHJlcXVlc3QsIGlmIGFueS4KKyAgICBXZWJLaXQ6OldlYklu
dGVudFJlcXVlc3QgbV9jdXJyZW50UmVxdWVzdDsKIH07CiAKICNlbmRpZiAvLyBXZWJWaWV3SG9z
dF9oCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJpbnRlbnRzL3Jlc291cmNlcy9wYXNzLmh0
bWwgYi9MYXlvdXRUZXN0cy93ZWJpbnRlbnRzL3Jlc291cmNlcy9wYXNzLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGRlMjFlMDkyOGI4YjM4YWVmMThkYzc3MDI2NmM2MWM4ZmNhZjc2NwotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3dlYmludGVudHMvcmVzb3VyY2VzL3Bhc3MuaHRtbApAQCAtMCww
ICsxLDcgQEAKKzxodG1sPgorICA8aGVhZD4KKyAgPC9oZWFkPgorICA8Ym9keT4KKyAgICA8cD5Q
QVNTPC9wPgorICA8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJp
bnRlbnRzL3Jlc291cmNlcy93ZWItaW50ZW50cy1yZWxvYWQtb3JpZy5odG1sIGIvTGF5b3V0VGVz
dHMvd2ViaW50ZW50cy9yZXNvdXJjZXMvd2ViLWludGVudHMtcmVsb2FkLW9yaWcuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5kN2M4MGYwMGQ2MDE0YTQ2OWFjZDMyMGM1ZTAzYmU5NWU1NjZiNjg3Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViaW50ZW50cy9yZXNvdXJjZXMvd2ViLWludGVudHMt
cmVsb2FkLW9yaWcuaHRtbApAQCAtMCwwICsxLDMwIEBACis8aHRtbD4KKyAgPGhlYWQ+CisgICAg
PHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKyAgICA8c2NyaXB0PgorICAgICAgZnVuY3Rpb24gb25TdWNjZXNzKCkgeworICAgICAg
fQorCisgICAgICBmdW5jdGlvbiBvbkZhaWx1cmUoKSB7CisgICAgICB9CisKKyAgICAgIGZ1bmN0
aW9uIHN0YXJ0SW50ZW50KCkgeworICAgICAgICBkZWJ1ZygiKiBsYXVuY2hpbmcgaW50ZW50IGFj
dGlvbi90eXBlIik7CisgICAgICAgIHZhciBpbnRlbnQgPSBuZXcgSW50ZW50KCJhY3Rpb24iLCAi
dHlwZSIpOworICAgICAgICB0cnkgeworICAgICAgICAgIG5hdmlnYXRvci5zdGFydEFjdGl2aXR5
KGludGVudCwgb25TdWNjZXNzLCBvbkZhaWx1cmUpOworICAgICAgICB9IGNhdGNoIChlKSB7Cisg
ICAgICAgICAgdGVzdEZhaWxlZCgic3RhcnRBY3Rpdml0eSBzaG91bGQgbm90IHRocm93IGV4Y2Vw
dGlvbiIpOworICAgICAgICB9CisKKyAgICAgICAgZGVidWcoIiogbmF2aWdhdGluZyBhZnRlciBz
dGFydEFjdGl2aXR5Iik7CisKKyAgICAgICAgLy8gVGhpcyBzaG91bGQgbm90IGNyYXNoLgorICAg
ICAgICB3aW5kb3cubG9jYXRpb24gPSAicmVzb3VyY2VzL3Bhc3MuaHRtbCI7CisgICAgICB9Cisg
ICAgPC9zY3JpcHQ+CisgIDwvaGVhZD4KKyAgPGJvZHk+CisgICAgPHA+T3JpZ2luYWwgY29udGVu
dDwvcD4KKyAgPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViaW50
ZW50cy93ZWItaW50ZW50cy1yZWxvYWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViaW50
ZW50cy93ZWItaW50ZW50cy1yZWxvYWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc4MmVjNWE1
ZjUzNjhhOTdmNDNlYTdmZjNjMDYzMDFhZGU3NjAwYzEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy93ZWJpbnRlbnRzL3dlYi1pbnRlbnRzLXJlbG9hZC1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSwxMCBAQAorUmVjZWl2ZWQgV2ViIEludGVudDogYWN0aW9uPWFjdGlvbiB0eXBlPXR5cGUK
KyogbG9hZGVkCisqIHNlbnQgbW91c2V1cAorKiBsb2FkZWQgcmVwbGFjZW1lbnQgcGFnZQorIAor
CistLS0tLS0tLQorRnJhbWU6ICdmcmFtZScKKy0tLS0tLS0tCitQQVNTCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJpbnRlbnRzL3dlYi1pbnRlbnRzLXJlbG9hZC5odG1sIGIvTGF5b3V0VGVz
dHMvd2ViaW50ZW50cy93ZWItaW50ZW50cy1yZWxvYWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMjNlMTM2
MDYyNjE4Nzg5ZjFjZWEwMTkwZWM5YTI1ZjlmMWEzYzU1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvd2ViaW50ZW50cy93ZWItaW50ZW50cy1yZWxvYWQuaHRtbApAQCAtMCwwICsxLDQ5
IEBACis8aHRtbD4KKyAgPGhlYWQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0PgorICAgICAgdmFyIGxh
dGNoID0gdHJ1ZTsKKworICAgICAgZnVuY3Rpb24gYnV0dG9uQ2xpY2tlZCgpIHsKKyAgICAgICAg
ZnJhbWVzWzBdLnN0YXJ0SW50ZW50KCk7CisgICAgICB9CisKKyAgICAgIGZ1bmN0aW9uIGZyYW1l
bG9hZGVkKCkgeworICAgICAgICBpZiAobGF0Y2gpIHsKKyAgICAgICAgICBsYXRjaCA9IGZhbHNl
OworICAgICAgICAgIHN0YXJ0VGVzdCgpOworICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
CisgICAgICAgIGRlYnVnKCIqIGxvYWRlZCByZXBsYWNlbWVudCBwYWdlIik7CisKKyAgICAgICAg
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICAgIHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgIH0KKyAgICAgIH0KKworICAg
ICAgZnVuY3Rpb24gc3RhcnRUZXN0KCkgeworICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKSB7CisgICAgICAgICAgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLndhaXRV
bnRpbERvbmUoKTsKKyAgICAgICAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcENo
aWxkRnJhbWVzQXNUZXh0KCk7CisgICAgICAgIH0KKworICAgICAgICBkZWJ1ZygiKiBsb2FkZWQi
KTsKKworICAgICAgICAvLyBXZSBtdXN0IHNpbXVsYXRlIGEgYnV0dG9uIHByZXNzIHdpdGggZXZl
bnRTZW5kZXIgYmVjYXVzZSBpbnRlbnRzCisgICAgICAgIC8vIHJlcXVpcmUgYSB1c2VyIGdlc3R1
cmUuCisgICAgICAgIHZhciBidXR0b24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYnV0dG9u
Iik7CisgICAgICAgIGlmIChldmVudFNlbmRlcikgeworICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlTW92ZVRvKGJ1dHRvbi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0ICsgMiwgYnV0dG9u
LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCArIDEyKTsKKyAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZURvd24oKTsKKyAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7CisgICAgICAg
ICAgZGVidWcoIiogc2VudCBtb3VzZXVwIik7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICA8L3Nj
cmlwdD4KKyAgPC9oZWFkPgorPGJvZHk+Cis8aW5wdXQgdHlwZT0iYnV0dG9uIiBpZD0iYnV0dG9u
IiB2YWx1ZT0iU3RhcnQgV2ViIEludGVudCIgb25tb3VzZXVwPSJidXR0b25DbGlja2VkKCkiPgor
PGlmcmFtZSBpZD0iZnJhbWUiIG9ubG9hZD0iZnJhbWVsb2FkZWQoKSIgc3JjPSJyZXNvdXJjZXMv
d2ViLWludGVudHMtcmVsb2FkLW9yaWcuaHRtbCI+PC9pZnJhbWU+Cis8L2JvZHk+Cis8L2h0bWw+
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128518</attachid>
            <date>2012-02-23 11:44:01 -0800</date>
            <delta_ts>2012-02-23 20:58:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78638-20120223114400.patch</filename>
            <type>text/plain</type>
            <size>9283</size>
            <attacher name="Greg Billock">gbillock</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4MzU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzBkNzc3YTI1ZTFhNTll
NWJjNTc0ZmFjODliOTczOWE4MmRjMmQ1Ny4uYzcwZTQ2ZTQ1NDk1YmQ1NTU5NzZkMmZlOTJlNjRk
ZTQ3NjNiYWI5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDEyLTAyLTE0ICBHcmVn
IEJpbGxvY2sgIDxnYmlsbG9ja0Bnb29nbGUuY29tPgorCisgICAgICAgIERvbid0IGNsZWFyIElu
dGVudFJlcXVlc3QgY2FsbGJhY2sgcG9pbnRlcnMgb24gc3RvcCgpCisKKyAgICAgICAgVGhpcyBj
YXVzZXMgcmUtZW50cnkgaW50byBTY3JpcHRFeGVjdXRpb25Db250ZXh0IHdoZW4KKyAgICAgICAg
dGhlIEFjdGl2ZURPTUNhbGxiYWNrIG9iamVjdHMgZ2V0IGRlbGV0ZWQsIHdoaWNoIGNyYXNoZXMu
CisgICAgICAgIEluc3RlYWQsIGp1c3QgZGUtYWN0aXZhdGUgdGhlIG9iamVjdCBhbmQgd2FpdCBm
b3IKKyAgICAgICAgY29udGV4dCBkZXN0cnVjdGlvbiB0byBjbGVhbiB1cC4KKworICAgICAgICBU
ZXN0IGNyYXNoZXMgY29uc2lzdGVudGx5IHdpdGhvdXQgZml4IGFuZCBwYXNzZXMgd2l0aCBmaXgu
CisgICAgICAgIEFkZGVkIHNvbWUgdGVzdCBpbmZyYXN0cnVjdHVyZSB0byBzdXBwb3J0IHRoaXMg
dGVzdC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc4
NjM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBN
b2R1bGVzL2ludGVudHMvSW50ZW50UmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRl
bnRSZXF1ZXN0OjpJbnRlbnRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkludGVudFJlcXVl
c3Q6OnN0b3ApOgorICAgICAgICAoV2ViQ29yZTo6SW50ZW50UmVxdWVzdDo6cG9zdFJlc3VsdCk6
CisgICAgICAgIChXZWJDb3JlOjpJbnRlbnRSZXF1ZXN0Ojpwb3N0RmFpbHVyZSk6CisgICAgICAg
ICogTW9kdWxlcy9pbnRlbnRzL0ludGVudFJlcXVlc3QuaDoKKyAgICAgICAgKEludGVudFJlcXVl
c3QpOgorCiAyMDEyLTAyLTIxICBBbGV4YW5kZXIgUGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogW1N1Z2dlc3RCb3hdIHRleHRQcm9tcHQuY3Nz
IGRpc2FibGVtZW50IGRpc3BsYXlzIGdhcmJsZWQgc3VnZ2VzdCBib3gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW50ZW50cy9JbnRlbnRSZXF1ZXN0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW50ZW50cy9JbnRlbnRSZXF1ZXN0LmNwcAppbmRleCA0NjhiNTFmNDNj
ZTg3ODRmNzAzYzgwMjQ3ZmIwNGRmODhmMmIwZjJhLi40ODZjYWVmYWIzMWViNDE5ZGZiNjE0ZGI5
NmQyY2JiNjE2N2QwODI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ludGVu
dHMvSW50ZW50UmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbnRlbnRz
L0ludGVudFJlcXVlc3QuY3BwCkBAIC01NCwyNCArNTQsMjYgQEAgSW50ZW50UmVxdWVzdDo6SW50
ZW50UmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LAogICAgICwgbV9pbnRl
bnQoaW50ZW50KQogICAgICwgbV9zdWNjZXNzQ2FsbGJhY2soc3VjY2Vzc0NhbGxiYWNrKQogICAg
ICwgbV9lcnJvckNhbGxiYWNrKGVycm9yQ2FsbGJhY2spCisgICAgLCBtX3N0b3BwZWQoZmFsc2Up
CiB7CiB9CiAKIHZvaWQgSW50ZW50UmVxdWVzdDo6Y29udGV4dERlc3Ryb3llZCgpCiB7CiAgICAg
Q29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXI6OmNvbnRleHREZXN0cm95ZWQoKTsKLSAgICBtX3N1
Y2Nlc3NDYWxsYmFjay5jbGVhcigpOwotICAgIG1fZXJyb3JDYWxsYmFjay5jbGVhcigpOworICAg
IG1fc3RvcHBlZCA9IHRydWU7CiB9CiAKIHZvaWQgSW50ZW50UmVxdWVzdDo6c3RvcCgpCiB7Ci0g
ICAgbV9zdWNjZXNzQ2FsbGJhY2suY2xlYXIoKTsKLSAgICBtX2Vycm9yQ2FsbGJhY2suY2xlYXIo
KTsKKyAgICBtX3N0b3BwZWQgPSB0cnVlOwogfQogCiB2b2lkIEludGVudFJlcXVlc3Q6OnBvc3RS
ZXN1bHQoU2VyaWFsaXplZFNjcmlwdFZhbHVlKiBkYXRhKQogeworICAgIGlmIChtX3N0b3BwZWQp
CisgICAgICAgIHJldHVybjsKKwogICAgIC8vIENhbGxiYWNrIGNvdWxkIGxlYWQgdG8gZGVsZXRp
b24gb2YgdGhpcy4KICAgICBSZWZQdHI8SW50ZW50UmVxdWVzdD4gcHJvdGVjdG9yKHRoaXMpOwog
CkBAIC04Niw2ICs4OCw5IEBAIHZvaWQgSW50ZW50UmVxdWVzdDo6cG9zdFJlc3VsdChTZXJpYWxp
emVkU2NyaXB0VmFsdWUqIGRhdGEpCiAKIHZvaWQgSW50ZW50UmVxdWVzdDo6cG9zdEZhaWx1cmUo
U2VyaWFsaXplZFNjcmlwdFZhbHVlKiBkYXRhKQogeworICAgIGlmIChtX3N0b3BwZWQpCisgICAg
ICAgIHJldHVybjsKKwogICAgIC8vIENhbGxiYWNrIGNvdWxkIGxlYWQgdG8gZGVsZXRpb24gb2Yg
dGhpcy4KICAgICBSZWZQdHI8SW50ZW50UmVxdWVzdD4gcHJvdGVjdG9yKHRoaXMpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ludGVudHMvSW50ZW50UmVxdWVzdC5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbnRlbnRzL0ludGVudFJlcXVlc3QuaAppbmRleCA3YTgw
OWE5OGU3NjAxNzg4ZTQzM2Y3NzU3NWE4YjdkMGRhNmVmM2Q5Li4zZWRjMGNlZGRmNmNjZDQwOWM1
MGE5YzIyODI3OWQ1NDFhM2FlYTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ludGVudHMvSW50ZW50UmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW50
ZW50cy9JbnRlbnRSZXF1ZXN0LmgKQEAgLTYwLDYgKzYwLDcgQEAgcHJpdmF0ZToKICAgICBSZWZQ
dHI8SW50ZW50PiBtX2ludGVudDsKICAgICBSZWZQdHI8SW50ZW50UmVzdWx0Q2FsbGJhY2s+IG1f
c3VjY2Vzc0NhbGxiYWNrOwogICAgIFJlZlB0cjxJbnRlbnRSZXN1bHRDYWxsYmFjaz4gbV9lcnJv
ckNhbGxiYWNrOworICAgIGJvb2wgbV9zdG9wcGVkOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hv
c3QuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwCmlu
ZGV4IDBlNGM4M2RiNTI4ZTA4OTIwYTkxYjk0ZmUzMDIzYTc5ZWJlYjBlMWIuLjI1OGVhMDUzOTgw
Yjg0OWIyNGI3MmUzMTJlNzMzMDlmMjY1YzY0ZGQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAKQEAgLTQ3LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJX
ZWJGcmFtZS5oIgogI2luY2x1ZGUgIldlYkdlb2xvY2F0aW9uQ2xpZW50TW9jay5oIgogI2luY2x1
ZGUgIldlYkhpc3RvcnlJdGVtLmgiCisjaW5jbHVkZSAiV2ViSW50ZW50LmgiCiAjaW5jbHVkZSAi
V2ViS2l0LmgiCiAjaW5jbHVkZSAiV2ViTm9kZS5oIgogI2luY2x1ZGUgIldlYlBsdWdpblBhcmFt
cy5oIgpAQCAtMTMwNCw2ICsxMzA1LDE0IEBAIGJvb2wgV2ViVmlld0hvc3Q6OndpbGxDaGVja0Fu
ZERpc3BhdGNoTWVzc2FnZUV2ZW50KFdlYkZyYW1lKiBzb3VyY2UsIFdlYlNlY3VyaXR5CiAgICAg
cmV0dXJuIGZhbHNlOwogfQogCit2b2lkIFdlYlZpZXdIb3N0OjpkaXNwYXRjaEludGVudChXZWJG
cmFtZSogc291cmNlLCBjb25zdCBXZWJJbnRlbnRSZXF1ZXN0JiByZXF1ZXN0KQoreworICAgIHBy
aW50ZigiUmVjZWl2ZWQgV2ViIEludGVudDogYWN0aW9uPSVzIHR5cGU9JXNcbiIsCisgICAgICAg
ICAgIHJlcXVlc3QuaW50ZW50KCkuYWN0aW9uKCkudXRmOCgpLmRhdGEoKSwKKyAgICAgICAgICAg
cmVxdWVzdC5pbnRlbnQoKS50eXBlKCkudXRmOCgpLmRhdGEoKSk7CisgICAgbV9jdXJyZW50UmVx
dWVzdCA9IHJlcXVlc3Q7Cit9CisKIC8vIFB1YmxpYyBmdW5jdGlvbnMgLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogV2ViVmlld0hv
c3Q6OldlYlZpZXdIb3N0KFRlc3RTaGVsbCogc2hlbGwpCmRpZmYgLS1naXQgYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vV2ViVmlld0hvc3QuaAppbmRleCA2Zjc1OTcyOGYwMTg5MzYxNWFjMDkxNTFhOTUz
NzYzMWM1N2I0MjRlLi5hN2U0MmFlNzFkMDMwOTc0ZDk4MmYwMGMyNjBhYmQyOThhOTQzMGE2IDEw
MDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5oCisr
KyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmgKQEAgLTM3LDYg
KzM3LDcgQEAKICNpbmNsdWRlICJXZWJBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uLmgiCiAjaW5j
bHVkZSAiV2ViQ3Vyc29ySW5mby5oIgogI2luY2x1ZGUgIldlYkZyYW1lQ2xpZW50LmgiCisjaW5j
bHVkZSAiV2ViSW50ZW50UmVxdWVzdC5oIgogI2luY2x1ZGUgIldlYlNwZWxsQ2hlY2tDbGllbnQu
aCIKICNpbmNsdWRlICJXZWJWaWV3Q2xpZW50LmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4K
QEAgLTIzNSw2ICsyMzYsNyBAQCBjbGFzcyBXZWJWaWV3SG9zdCA6IHB1YmxpYyBXZWJLaXQ6Oldl
YlNwZWxsQ2hlY2tDbGllbnQsIHB1YmxpYyBXZWJLaXQ6OldlYlZpZXdDbAogICAgIHZpcnR1YWwg
dm9pZCBkaWREZXRlY3RYU1MoV2ViS2l0OjpXZWJGcmFtZSosIGNvbnN0IFdlYktpdDo6V2ViVVJM
JiwgYm9vbCBkaWRCbG9ja0VudGlyZVBhZ2UpOwogICAgIHZpcnR1YWwgdm9pZCBvcGVuRmlsZVN5
c3RlbShXZWJLaXQ6OldlYkZyYW1lKiwgV2ViS2l0OjpXZWJGaWxlU3lzdGVtOjpUeXBlLCBsb25n
IGxvbmcgc2l6ZSwgYm9vbCBjcmVhdGUsIFdlYktpdDo6V2ViRmlsZVN5c3RlbUNhbGxiYWNrcyop
OwogICAgIHZpcnR1YWwgYm9vbCB3aWxsQ2hlY2tBbmREaXNwYXRjaE1lc3NhZ2VFdmVudChXZWJL
aXQ6OldlYkZyYW1lKiBzb3VyY2UsIFdlYktpdDo6V2ViU2VjdXJpdHlPcmlnaW4gdGFyZ2V0LCBX
ZWJLaXQ6OldlYkRPTU1lc3NhZ2VFdmVudCk7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoSW50
ZW50KFdlYktpdDo6V2ViRnJhbWUqIHNvdXJjZSwgY29uc3QgV2ViS2l0OjpXZWJJbnRlbnRSZXF1
ZXN0Jik7CiAKICAgICBXZWJLaXQ6OldlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jayogZGV2
aWNlT3JpZW50YXRpb25DbGllbnRNb2NrKCk7CiAgICAgCkBAIC00MDQsNiArNDA2LDkgQEAgcHJp
dmF0ZToKICAgICAgICAgUG9pbnRlckxvY2tXaWxsRmFpbFN5bmMKICAgICB9IG1fcG9pbnRlckxv
Y2tQbGFubmVkUmVzdWx0OwogI2VuZGlmCisKKyAgICAvLyBGb3Igd2ViIGludGVudHM6IGhvbGRz
IHRoZSBjdXJyZW50IHJlcXVlc3QsIGlmIGFueS4KKyAgICBXZWJLaXQ6OldlYkludGVudFJlcXVl
c3QgbV9jdXJyZW50UmVxdWVzdDsKIH07CiAKICNlbmRpZiAvLyBXZWJWaWV3SG9zdF9oCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJpbnRlbnRzL3Jlc291cmNlcy9wYXNzLmh0bWwgYi9MYXlv
dXRUZXN0cy93ZWJpbnRlbnRzL3Jlc291cmNlcy9wYXNzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGRlMjFl
MDkyOGI4YjM4YWVmMThkYzc3MDI2NmM2MWM4ZmNhZjc2NwotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3dlYmludGVudHMvcmVzb3VyY2VzL3Bhc3MuaHRtbApAQCAtMCwwICsxLDcgQEAK
KzxodG1sPgorICA8aGVhZD4KKyAgPC9oZWFkPgorICA8Ym9keT4KKyAgICA8cD5QQVNTPC9wPgor
ICA8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJpbnRlbnRzL3Jl
c291cmNlcy93ZWItaW50ZW50cy1yZWxvYWQtb3JpZy5odG1sIGIvTGF5b3V0VGVzdHMvd2ViaW50
ZW50cy9yZXNvdXJjZXMvd2ViLWludGVudHMtcmVsb2FkLW9yaWcuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5k
N2M4MGYwMGQ2MDE0YTQ2OWFjZDMyMGM1ZTAzYmU5NWU1NjZiNjg3Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvd2ViaW50ZW50cy9yZXNvdXJjZXMvd2ViLWludGVudHMtcmVsb2FkLW9y
aWcuaHRtbApAQCAtMCwwICsxLDMwIEBACis8aHRtbD4KKyAgPGhlYWQ+CisgICAgPHNjcmlwdCBz
cmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKyAg
ICA8c2NyaXB0PgorICAgICAgZnVuY3Rpb24gb25TdWNjZXNzKCkgeworICAgICAgfQorCisgICAg
ICBmdW5jdGlvbiBvbkZhaWx1cmUoKSB7CisgICAgICB9CisKKyAgICAgIGZ1bmN0aW9uIHN0YXJ0
SW50ZW50KCkgeworICAgICAgICBkZWJ1ZygiKiBsYXVuY2hpbmcgaW50ZW50IGFjdGlvbi90eXBl
Iik7CisgICAgICAgIHZhciBpbnRlbnQgPSBuZXcgSW50ZW50KCJhY3Rpb24iLCAidHlwZSIpOwor
ICAgICAgICB0cnkgeworICAgICAgICAgIG5hdmlnYXRvci5zdGFydEFjdGl2aXR5KGludGVudCwg
b25TdWNjZXNzLCBvbkZhaWx1cmUpOworICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAg
dGVzdEZhaWxlZCgic3RhcnRBY3Rpdml0eSBzaG91bGQgbm90IHRocm93IGV4Y2VwdGlvbiIpOwor
ICAgICAgICB9CisKKyAgICAgICAgZGVidWcoIiogbmF2aWdhdGluZyBhZnRlciBzdGFydEFjdGl2
aXR5Iik7CisKKyAgICAgICAgLy8gVGhpcyBzaG91bGQgbm90IGNyYXNoLgorICAgICAgICB3aW5k
b3cubG9jYXRpb24gPSAicmVzb3VyY2VzL3Bhc3MuaHRtbCI7CisgICAgICB9CisgICAgPC9zY3Jp
cHQ+CisgIDwvaGVhZD4KKyAgPGJvZHk+CisgICAgPHA+T3JpZ2luYWwgY29udGVudDwvcD4KKyAg
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViaW50ZW50cy93ZWIt
aW50ZW50cy1yZWxvYWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViaW50ZW50cy93ZWIt
aW50ZW50cy1yZWxvYWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc4MmVjNWE1ZjUzNjhhOTdm
NDNlYTdmZjNjMDYzMDFhZGU3NjAwYzEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93
ZWJpbnRlbnRzL3dlYi1pbnRlbnRzLXJlbG9hZC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBA
QAorUmVjZWl2ZWQgV2ViIEludGVudDogYWN0aW9uPWFjdGlvbiB0eXBlPXR5cGUKKyogbG9hZGVk
CisqIHNlbnQgbW91c2V1cAorKiBsb2FkZWQgcmVwbGFjZW1lbnQgcGFnZQorIAorCistLS0tLS0t
LQorRnJhbWU6ICdmcmFtZScKKy0tLS0tLS0tCitQQVNTCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJpbnRlbnRzL3dlYi1pbnRlbnRzLXJlbG9hZC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViaW50
ZW50cy93ZWItaW50ZW50cy1yZWxvYWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMjNlMTM2MDYyNjE4Nzg5
ZjFjZWEwMTkwZWM5YTI1ZjlmMWEzYzU1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
d2ViaW50ZW50cy93ZWItaW50ZW50cy1yZWxvYWQuaHRtbApAQCAtMCwwICsxLDQ5IEBACis8aHRt
bD4KKyAgPGhlYWQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0PgorICAgICAgdmFyIGxhdGNoID0gdHJ1
ZTsKKworICAgICAgZnVuY3Rpb24gYnV0dG9uQ2xpY2tlZCgpIHsKKyAgICAgICAgZnJhbWVzWzBd
LnN0YXJ0SW50ZW50KCk7CisgICAgICB9CisKKyAgICAgIGZ1bmN0aW9uIGZyYW1lbG9hZGVkKCkg
eworICAgICAgICBpZiAobGF0Y2gpIHsKKyAgICAgICAgICBsYXRjaCA9IGZhbHNlOworICAgICAg
ICAgIHN0YXJ0VGVzdCgpOworICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAg
IGRlYnVnKCIqIGxvYWRlZCByZXBsYWNlbWVudCBwYWdlIik7CisKKyAgICAgICAgaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgIH0KKyAgICAgIH0KKworICAgICAgZnVuY3Rp
b24gc3RhcnRUZXN0KCkgeworICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KSB7CisgICAgICAgICAgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUo
KTsKKyAgICAgICAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcENoaWxkRnJhbWVz
QXNUZXh0KCk7CisgICAgICAgIH0KKworICAgICAgICBkZWJ1ZygiKiBsb2FkZWQiKTsKKworICAg
ICAgICAvLyBXZSBtdXN0IHNpbXVsYXRlIGEgYnV0dG9uIHByZXNzIHdpdGggZXZlbnRTZW5kZXIg
YmVjYXVzZSBpbnRlbnRzCisgICAgICAgIC8vIHJlcXVpcmUgYSB1c2VyIGdlc3R1cmUuCisgICAg
ICAgIHZhciBidXR0b24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYnV0dG9uIik7CisgICAg
ICAgIGlmIChldmVudFNlbmRlcikgeworICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRv
KGJ1dHRvbi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0ICsgMiwgYnV0dG9uLmdldEJvdW5k
aW5nQ2xpZW50UmVjdCgpLnRvcCArIDEyKTsKKyAgICAgICAgICBldmVudFNlbmRlci5tb3VzZURv
d24oKTsKKyAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7CisgICAgICAgICAgZGVidWco
Iiogc2VudCBtb3VzZXVwIik7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICA8L3NjcmlwdD4KKyAg
PC9oZWFkPgorPGJvZHk+Cis8aW5wdXQgdHlwZT0iYnV0dG9uIiBpZD0iYnV0dG9uIiB2YWx1ZT0i
U3RhcnQgV2ViIEludGVudCIgb25tb3VzZXVwPSJidXR0b25DbGlja2VkKCkiPgorPGlmcmFtZSBp
ZD0iZnJhbWUiIG9ubG9hZD0iZnJhbWVsb2FkZWQoKSIgc3JjPSJyZXNvdXJjZXMvd2ViLWludGVu
dHMtcmVsb2FkLW9yaWcuaHRtbCI+PC9pZnJhbWU+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>