<?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>40764</bug_id>
          
          <creation_ts>2010-06-17 02:01:19 -0700</creation_ts>
          <short_desc>REGRESSION(HTML5 parser): editing/selection/leave-requested-block.html can fail or crash</short_desc>
          <delta_ts>2010-06-17 21:14:26 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</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>39259</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Nikolas Zimmermann">zimmermann</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>eric</cc>
    
    <cc>tonyg</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>239302</commentid>
    <comment_count>0</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-06-17 02:01:19 -0700</bug_when>
    <thetext>Just ran DRT (old-run-webkit-tests) and it gave me:
editing/selection/leave-requested-block.html -&gt; crashed

Exception Type:  EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x00000000bbadbeef
Crashed Thread:  0

Thread 0 Crashed:
0   com.apple.WebCore             	0x04209531 WebCore::CachedResource::addClientToSet(WebCore::CachedResourceClient*) + 75 (CachedResource.cpp:209)
1   com.apple.WebCore             	0x042099e8 WebCore::CachedResource::addClient(WebCore::CachedResourceClient*) + 24 (CachedResource.cpp:204)
2   com.apple.WebCore             	0x0454c1c8 WebCore::CachedScriptSourceProvider::CachedScriptSourceProvider(WebCore::CachedScript*) + 180
3   com.apple.WebCore             	0x0454c1fb WebCore::CachedScriptSourceProvider::create(WebCore::CachedScript*) + 43 (CachedScriptSourceProvider.h:40)
4   com.apple.WebCore             	0x0454c434 WebCore::ScriptSourceCode::ScriptSourceCode(WebCore::CachedScript*) + 24
5   com.apple.WebCore             	0x0454b7f8 WebCore::HTML5ScriptRunner::sourceFromPendingScript(WebCore::HTML5ScriptRunner::PendingScript const&amp;, bool&amp;) + 190 (HTML5ScriptRunner.cpp:85)
6   com.apple.WebCore             	0x0454b9a9 WebCore::HTML5ScriptRunner::executePendingScript() + 295 (HTML5ScriptRunner.cpp:107)
7   com.apple.WebCore             	0x0454bbb6 WebCore::HTML5ScriptRunner::executeParsingBlockingScripts() + 56 (HTML5ScriptRunner.cpp:184)
8   com.apple.WebCore             	0x0454bcca WebCore::HTML5ScriptRunner::executeScriptsWaitingForStylesheets() + 248 (HTML5ScriptRunner.cpp:208)
9   com.apple.WebCore             	0x0454d618 WebCore::HTML5DocumentParser::executeScriptsWaitingForStylesheets() + 284 (HTML5DocumentParser.cpp:430)
10  com.apple.WebCore             	0x04382b87 WebCore::Document::removePendingSheet() + 201 (Document.cpp:2577)
11  com.apple.WebCore             	0x0459979c WebCore::HTMLLinkElement::sheetLoaded() + 106 (HTMLLinkElement.cpp:330)
12  com.apple.WebCore             	0x04329e19 WebCore::CSSStyleSheet::checkLoaded() + 137 (CSSStyleSheet.cpp:213)
13  com.apple.WebCore             	0x0459adc7 WebCore::HTMLLinkElement::setCSSStyleSheet(WebCore::String const&amp;, WebCore::KURL const&amp;, WebCore::String const&amp;, WebCore::CachedCSSStyleSheet const*) + 1327 (HTMLLinkElement.cpp:314)
14  com.apple.WebCore             	0x04202002 WebCore::CachedCSSStyleSheet::checkNotify() + 176 (CachedCSSStyleSheet.cpp:116)
15  com.apple.WebCore             	0x042021df WebCore::CachedCSSStyleSheet::data(WTF::PassRefPtr&lt;WebCore::SharedBuffer&gt;, bool) + 385 (CachedCSSStyleSheet.cpp:106)
16  com.apple.WebCore             	0x0497aefa WebCore::Loader::Host::didFinishLoading(WebCore::SubresourceLoader*) + 464 (loader.cpp:406)
17  com.apple.WebCore             	0x04c22286 WebCore::SubresourceLoader::didFinishLoading() + 176 (SubresourceLoader.cpp:196)
18  com.apple.WebCore             	0x04b7a670 WebCore::ResourceLoader::didFinishLoading(WebCore::ResourceHandle*) + 24 (ResourceLoader.cpp:444)
19  com.apple.WebCore             	0x04b76aa9 -[WebCoreResourceHandleAsDelegate connectionDidFinishLoading:] + 215 (ResourceHandleMac.mm:862)
20  com.apple.Foundation          	0x96688497 -[NSURLConnection(NSURLConnectionReallyInternal) sendDidFinishLoading] + 87

I&apos;m not sure if it&apos;s HTML5 related, but I thought it&apos;s a good idea to let you guys know.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>239573</commentid>
    <comment_count>1</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-17 14:21:39 -0700</bug_when>
    <thetext>Bug 40754 is likely the same issue.

We&apos;ve seen this ASSERT before.  Somehow we&apos;re trying to ref a dead CachedResource node.  This may be related to Tony&apos;s proposed CachedResourceHandler fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>239581</commentid>
    <comment_count>2</comment_count>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2010-06-17 14:28:45 -0700</bug_when>
    <thetext>I think this bug is different(In reply to comment #1)
&gt; Bug 40754 is likely the same issue.
&gt; 
&gt; We&apos;ve seen this ASSERT before.  Somehow we&apos;re trying to ref a dead CachedResource node.  This may be related to Tony&apos;s proposed CachedResourceHandler fix.

I think this bug is different. My patch was in the HTMLDocumentParser which is now unused.
http://trac.webkit.org/changeset/61306

This stack is in the HTML5DocumentParser/ScriptRunner.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>239595</commentid>
    <comment_count>3</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-17 15:02:07 -0700</bug_when>
    <thetext>Looking at this now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>239623</commentid>
    <comment_count>4</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-17 16:21:23 -0700</bug_when>
    <thetext>This is hitting:

void CachedResource::addClientToSet(CachedResourceClient* client)
{
    ASSERT(!isPurgeable());

Trying to add itself as a client to a cachedResource which is purgeable because it has no clients.

We would hit this case when we encounter a &lt;script&gt; tag which is already in our cache, but we can&apos;t execute it because a .css file is blocking it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>239626</commentid>
    <comment_count>5</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-17 16:31:06 -0700</bug_when>
    <thetext>I need to find out how to make a CachedResource with an m_purgeableData.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>239638</commentid>
    <comment_count>6</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-17 16:51:07 -0700</bug_when>
    <thetext>OK.  So here is what&apos;s going on:

CachedResource::addClient has this strange (IMO) behavior of immediately calling notifyFinished() on the newly added client, if the resource is already loaded.  This can cause unexpected reentrancy.  Lots of places in the code do a dance around this.  HTML5ScriptRunner&apos;s chosen dance was not to call addClient() if the CachedResource was already fully loaded.

For simplicity, void HTML5ScriptRunner::requestScript(Element* script) always makes the newly requested script the m_parsingBlockingScript, whether it&apos;s about to run it or not.  When requestScript returns, the caller HTML5ScriptRunner::execute will execute any pending scripts (including the one we just requested).  This allows us to have one place for handling &quot;don&apos;t run while loading CSS&quot; as well as &quot;unwrap to the outermost HTML5ScriptRunner::execute caller before executing any pending scripts&quot; logic, as required by HTML5.

However, this don&apos;t-addClient-if-fully-loaded dance gets us in trouble, if we&apos;re waiting on CSS loads.  As we&apos;ll return from requestScript w/o calling addClient, and then when HTML5ScriptRunner::execute decides it can&apos;t execute any scripts right now due to waiting for a CSS load, then we return to the run loop w/o calling addClient.  This is fine, except that CachedResource decides if data is purgeable not by its ref count, but rather by its count of clients (which is still 0).

So once the CSS file finally loads, we go to execute the script.  ScriptSourceCode tries to sign itself up as a client (not sure why, but doesn&apos;t really matter), and if the data is gone, then in Release builds we&apos;ll execute an empty script, or in Debug builds we&apos;ll crash on the ASSERT that WildFox hit in this bug.

There are multiple fixes we could consider.  The &quot;easiest&quot; would be to add a hack to requestScript to addClient ourselves in the case where we&apos;re blocked on CSS loads.  That would cause immediate reentrancy through notifyFinished, but that would immediately exit again due to waiting on the CSS load.  That&apos;s very close to how the old parser would work in this situation, but is a total horribly grose hack.

Better would be to add a new flavor of &quot;addClient&quot; which doesn&apos;t notify and call it that instead.  There are probably lots of places in the code which want this.  The danger there is that such an addClient could get you into trouble as you would never be called if the resource was already loaded.  Normally it might be OK to ASSERT in such an addClientButDontNotify call that the resource wasn&apos;t loaded, but due to our current requestScript design, we&apos;d hit that ASSERT.

Still considering my options.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>239643</commentid>
    <comment_count>7</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-17 16:53:55 -0700</bug_when>
    <thetext>*** Bug 40754 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>239697</commentid>
    <comment_count>8</comment_count>
      <attachid>59058</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-17 18:33:10 -0700</bug_when>
    <thetext>Created attachment 59058
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>239711</commentid>
    <comment_count>9</comment_count>
      <attachid>59060</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-17 19:34:53 -0700</bug_when>
    <thetext>Created attachment 59060
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>239716</commentid>
    <comment_count>10</comment_count>
      <attachid>59060</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-17 19:39:40 -0700</bug_when>
    <thetext>Comment on attachment 59060
Patch

okiedokes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>239725</commentid>
    <comment_count>11</comment_count>
      <attachid>59065</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-17 20:11:26 -0700</bug_when>
    <thetext>Created attachment 59065
After feedback from Adam</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>239726</commentid>
    <comment_count>12</comment_count>
      <attachid>59065</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-17 20:14:29 -0700</bug_when>
    <thetext>Comment on attachment 59065
After feedback from Adam

thanks.  this is much nicer.  :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>239737</commentid>
    <comment_count>13</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-17 21:14:26 -0700</bug_when>
    <thetext>Committed r61374: &lt;http://trac.webkit.org/changeset/61374&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59058</attachid>
            <date>2010-06-17 18:33:10 -0700</date>
            <delta_ts>2010-06-17 19:34:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-40764-20100617183309.patch</filename>
            <type>text/plain</type>
            <size>7450</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZDU5ZDJlYTcxNzdjNDU2NzZmMTcxOWZhNmEzMjMzODA0M2RhZWUzNC4uZWM5Yzc4ZjVhYzRjNzAw
ZmI5MWZlNjFkOGU0NjA1YTM1MjkzZDE1ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0OSBAQAorMjAxMC0wNi0xNyAgRXJp
YyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgUkVHUkVTU0lPTihIVE1MNSBwYXJzZXIpOiBlZGl0aW5nL3Nl
bGVjdGlvbi9sZWF2ZS1yZXF1ZXN0ZWQtYmxvY2suaHRtbCBjYW4gZmFpbCBvciBjcmFzaAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDA3NjQKKworICAg
ICAgICBIVE1MNVNjcmlwdFJ1bm5lciB3YXMgY2FyZWZ1bCB0byBvbmx5IGNhbGwgQ2FjaGVkUmVz
b3VyY2U6OmFkZENsaWVudAorICAgICAgICBmb3IgY2FzZXMgd2hlcmUgdGhlIHJlc291cmNlIHdh
cyBub3QgYWxyZWFkeSBsb2FkZWQuICBUaGlzIHdhcyB0bworICAgICAgICBhdm9pZCBnZXR0aW5n
IHN5bmNocm9ub3VzIG5vdGlmeUZpbmlzaGVkIGNhbGxiYWNrcyBmcm9tIGluc2lkZQorICAgICAg
ICBhZGRDbGllbnQuICAoVGhlIG9sZCBIVE1MRG9jdW1lbnRQYXJzZXIgYWxzbyBoYXMgaGFja3Mg
dG8gd29yayBhcm91bmQKKyAgICAgICAgYWRkQ2xpZW50J3Mgc3luY2hyb25vdXMgbm90aWZ5Rmlu
aXNoZWQgYmVoYXZpb3IgZm9yIGFscmVhZHktbG9hZGVkCisgICAgICAgIHJlc291cmNlcyBhcyB3
ZWxsLikKKworICAgICAgICBJdCB0dXJucyBvdXQgdGhhdCBDYWNoZWRSZXNvdXJjZSB3aWxsIG1h
cmsgaXRzZWxmIGFzIHB1cmdlYWJsZSBpZiBpdAorICAgICAgICBoYXMgbm8gY2xpZW50cywgdGh1
cyBpdCBjb3VsZCBoYXZlIGl0cyBkYXRhIGNsZWFyZWQgKGJ1dCBpdHNlbGYgbm90CisgICAgICAg
IGRlbGV0ZWQpIGluIHRoZSBjYXNlIHdoZXJlIHdlIHlpZWxkIGJhY2sgdG8gdGhlIHJ1bmxvb3Ag
dG8gd2FpdCBmb3IKKyAgICAgICAgQ1NTIHRvIGxvYWQgYmVmb3JlIGV4ZWN1dGluZyB0aGUgbG9h
ZGVkIHNjcmlwdC4KKworICAgICAgICBUaGUgZml4IGlzIHRvIGFjdCBtb3JlIGxpa2UgdGhlIG9s
ZCBwYXJzZXIgYW5kIGFsd2F5cyBjYWxsIGFkZENsaWVudAorICAgICAgICBvbiBldmVyeSBDYWNo
ZWRTY3JpcHQgd2UgbG9hZC4gIEJ1dCB1bmxpa2UgdGhlIG9sZCBwYXJzZXIsIHdlJ3JlCisgICAg
ICAgIGNhcmVmdWwgbm90IHRvIHJlLWVudGVyIGZyb20gYWRkQ2xpZW50IC0+IG5vdGlmeUZpbmlz
aGVkCisgICAgICAgIHVzaW5nIGd1YXJkcyBpbiBIVE1MNURvY3VtZW50UGFyc2VyOjp3YXRjaEZv
ckxvYWQuCisKKyAgICAgICAgQW5vdGhlciBmaXggd291bGQgaGF2ZSBiZWVuIHRvIGFkZCBhIHZl
cnNpb24gb2YKKyAgICAgICAgQ2FjaGVkUmVzb3VyY2U6OmFkZENsaWVudCB3aGljaCBkaWRuJ3Qg
Y2FsbCBub3RpZnlGaW5pc2hlZC4gIEkgZGlkIG5vdAorICAgICAgICBkbyB0aGF0IGFzIEkgd29y
cmllZCBzdWNoIGEgbWV0aG9kIHdvdWxkIGJlIGVhc3kgdG8gdXNlIGluY29ycmVjdGx5LgorCisg
ICAgICAgIEkgZG8gbm90IGtub3cgaG93IHRvIG1ha2UgYSBDYWNoZWRSZXNvdXJjZSBwdXJnZSBp
dHNlbGYKKyAgICAgICAgZnJvbSBhIExheW91dFRlc3QsIHNvIHRoaXMgaXMgbm90IGN1cnJlbnRs
eSB0ZXN0YWJsZS4KKyAgICAgICAgSWYgYW55b25lIGtub3dzIGhvdyBJJ20gaGFwcHkgdG8gbWFr
ZSBhIHRlc3QuCisKKyAgICAgICAgKiBodG1sL0hUTUw1RG9jdW1lbnRQYXJzZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTDVEb2N1bWVudFBhcnNlcjo6d2F0Y2hGb3JMb2FkKToKKyAgICAg
ICAgIC0gU2V0IG1faW5XYXRjaEZvckxvYWQgc28gdGhhdCBub3RpZnlGaW5pc2hlZCBjYW4gaWdu
b3JlIHRoZQorICAgICAgICAgICBjYWxsYmFjaywgc2FmZWx5IGtub3dpbmcgdGhhdCBjYWxsZXJz
IHdpbGwgaGFuZGxlIGV4ZWN1dGlvbgorICAgICAgICAgICBvZiB0aGlzIGFscmVhZHktbG9hZGVk
IHNjcmlwdC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUw1RG9jdW1lbnRQYXJzZXI6Om5vdGlmeUZp
bmlzaGVkKToKKyAgICAgICAgIC0gSWdub3JlIGNhbGxiYWNrIGlmIG1faW5XYXRjaEZvckxvYWQg
aXMgc2V0LgorICAgICAgICAqIGh0bWwvSFRNTDVEb2N1bWVudFBhcnNlci5oOgorICAgICAgICAq
IGh0bWwvSFRNTDVTY3JpcHRSdW5uZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTDVTY3Jp
cHRSdW5uZXI6OnJlcXVlc3RTY3JpcHQpOgorICAgICAgICAgLSBFeHBsYWluIGhvdyBhcmUgd2F0
Y2hGb3JMb2FkIGRhbmNlIHdvcmtzLgorICAgICAgICAqIGh0bWwvSFRNTDVTY3JpcHRSdW5uZXJI
b3N0Lmg6CisgICAgICAgICAtIERvY3VtZW50IHRoZSBuZXcgZXhwZWN0YXRpb25zIG9mIHdhdGNo
Rm9yTG9hZAorCiAyMDEwLTA2LTE3ICBLaW51a28gWWFzdWRhICA8a2ludWtvQGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBSZXZpZXdlZCBieSBKaWFuIExpLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9o
dG1sL0hUTUw1RG9jdW1lbnRQYXJzZXIuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUw1RG9jdW1lbnRQ
YXJzZXIuY3BwCmluZGV4IGExYzkwNTkzNjc2MGI2OTBkYjlhOWMxMjUyZjUwMDIzN2RmNTI2ZDYu
LjcxOWRhNzNkZDA0M2ZjOWMzZTVkZGM1MjliZGYxMjhjNThjOGY3ZWQgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvaHRtbC9IVE1MNURvY3VtZW50UGFyc2VyLmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRN
TDVEb2N1bWVudFBhcnNlci5jcHAKQEAgLTM3OSwxMSArMzc5LDE1IEBAIHZvaWQgSFRNTDVEb2N1
bWVudFBhcnNlcjo6cmVzdW1lUGFyc2luZ0FmdGVyU2NyaXB0RXhlY3V0aW9uKCkKIAogdm9pZCBI
VE1MNURvY3VtZW50UGFyc2VyOjp3YXRjaEZvckxvYWQoQ2FjaGVkUmVzb3VyY2UqIGNhY2hlZFNj
cmlwdCkKIHsKLSAgICBBU1NFUlQoIWNhY2hlZFNjcmlwdC0+aXNMb2FkZWQoKSk7Ci0gICAgLy8g
YWRkQ2xpZW50IHdvdWxkIGNhbGwgbm90aWZ5RmluaXNoZWQgaWYgdGhlIGxvYWQgd2VyZSBjb21w
bGV0ZS4KLSAgICAvLyBDYWxsZXJzIGRvIG5vdCBleHBlY3QgdG8gYmUgcmUtZW50ZXJlZCBmcm9t
IHRoaXMgY2FsbCwgc28gdGhleSBzaG91bGQKLSAgICAvLyBub3QgYW4gYWxyZWFkeS1sb2FkZWQg
Q2FjaGVkUmVzb3VyY2UuCisgICAgLy8gYWRkQ2xpZW50IHdpbGwgY2FsbCBub3RpZnlGaW5pc2hl
ZCBpZiB0aGUgbG9hZCBpcyBjb21wbGV0ZS4KKyAgICAvLyBDYWxsZXJzIGRvIG5vdCBleHBlY3Qg
dG8gYmUgcmUtZW50ZXJlZCBmcm9tIHRoaXMgY2FsbCwgc28gc2V0CisgICAgLy8gbV9pbldhdGNo
Rm9yTG9hZCBhbmQgaWdub3JlIGFueSBub3RpZnlGaW5pc2hlZCBjYWxsYmFja3MuIENhbGxlcnMg
YXJlCisgICAgLy8gcmVzcG9uc2libGUgZm9yIG5vdGljaW5nIGlmIGNhY2hlZFNjcmlwdCBpcyBh
bHJlYWR5IGxvYWRlZC4KKyAgICAvLyBOT1RFOiBXZSB3b3VsZCBub3QgbmVlZCB0aGUgbV9pbldh
dGNoRm9yTG9hZCBoYWNrLCBpZiBDYWNoZWRSZXNvdXJjZQorICAgIC8vIGhhZCBhbiBhZGRDbGll
bnQgQVBJIHdoaWNoIGFsbG93ZWQgdXMgdG8gZGlzYWJsZSBub3RpZnlGaW5pc2hlZCBjYWxsYmFj
a3MuCisgICAgbV9pbldhdGNoRm9yTG9hZCA9IHRydWU7CiAgICAgY2FjaGVkU2NyaXB0LT5hZGRD
bGllbnQodGhpcyk7CisgICAgbV9pbldhdGNoRm9yTG9hZCA9IGZhbHNlOwogfQogCiB2b2lkIEhU
TUw1RG9jdW1lbnRQYXJzZXI6OnN0b3BXYXRjaGluZ0ZvckxvYWQoQ2FjaGVkUmVzb3VyY2UqIGNh
Y2hlZFNjcmlwdCkKQEAgLTQwOSw2ICs0MTMsOSBAQCB2b2lkIEhUTUw1RG9jdW1lbnRQYXJzZXI6
OmV4ZWN1dGVTY3JpcHQoY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29kZSkKIAogdm9p
ZCBIVE1MNURvY3VtZW50UGFyc2VyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSogY2Fj
aGVkUmVzb3VyY2UpCiB7CisgICAgaWYgKG1faW5XYXRjaEZvckxvYWQpCisgICAgICAgIHJldHVy
bjsKKwogICAgIEFTU0VSVCghbV9zY3JpcHRSdW5uZXItPmluU2NyaXB0RXhlY3V0aW9uKCkpOwog
ICAgIEFTU0VSVChtX3RyZWVDb25zdHJ1Y3Rvci0+aXNQYXVzZWQoKSk7CiAgICAgLy8gTm90ZTog
V2Ugb25seSBldmVyIHdhaXQgb24gb25lIHNjcmlwdCBhdCBhIHRpbWUsIHNvIHdlIGFsd2F5cyBr
bm93IHRoaXMKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MNURvY3VtZW50UGFyc2VyLmgg
Yi9XZWJDb3JlL2h0bWwvSFRNTDVEb2N1bWVudFBhcnNlci5oCmluZGV4IGZmZjFjZTFkNjgxMjZm
MmVmNWZlOTA1NTM2NDU1NzU2OTYwZjEzOGIuLmU4OGRlMDMyYzIyZDllYzQ5ZjE2MTdhOGU4ODlh
MTc5MmNkMGQ4ZDUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MNURvY3VtZW50UGFyc2Vy
LmgKKysrIGIvV2ViQ29yZS9odG1sL0hUTUw1RG9jdW1lbnRQYXJzZXIuaApAQCAtMTk4LDkgKzE5
OCwxNSBAQCBwcml2YXRlOgogICAgIE93blB0cjxIVE1MNVNjcmlwdFJ1bm5lcj4gbV9zY3JpcHRS
dW5uZXI7CiAgICAgT3duUHRyPEhUTUw1VHJlZUJ1aWxkZXI+IG1fdHJlZUNvbnN0cnVjdG9yOwog
ICAgIE93blB0cjxIVE1MNVByZWxvYWRTY2FubmVyPiBtX3ByZWxvYWRTY2FubmVyOworCiAgICAg
Ym9vbCBtX2VuZFdhc0RlbGF5ZWQ7CiAgICAgaW50IG1fd3JpdGVOZXN0aW5nTGV2ZWw7CiAKKyAg
ICAvLyBVc2VkIHRvIGRpc2FibGUgbm90aWZ5Q29tcGxldGVkIGhhbmRsaW5nIGR1cmluZyB3YXRj
aEZvckxvYWQoKS4KKyAgICBib29sIG1faW5XYXRjaEZvckxvYWQ7CisKKyAgICAvLyBVc2VkIGZv
ciB5aWVsZGluZyB0aGUgcGFyc2VyIHRvIG1ha2UgV2ViS2l0IGFwcGxpY2F0aW9ucyBtb3JlIHJl
c3BvbnNpdmUuCisgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGEgc2VwYXJhdGUgY2xhc3MsIHVz
ZWQgYnkgSFRNTDVEb2N1bWVudFBhcnNlci4KICAgICBkb3VibGUgbV9wYXJzZXJUaW1lTGltaXQ7
CiAgICAgaW50IG1fcGFyc2VyQ2h1bmtTaXplOwogICAgIFRpbWVyPEhUTUw1RG9jdW1lbnRQYXJz
ZXI+IG1fY29udGludWVOZXh0Q2h1bmtUaW1lcjsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9I
VE1MNVNjcmlwdFJ1bm5lci5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTDVTY3JpcHRSdW5uZXIuY3Bw
CmluZGV4IGFlZjVjZTQ1MWQ0NmQ5ZWI1N2Y5YTQwZmRkM2FjNWFlY2VlM2FlZWYuLmUyZmU1NGRl
YzA5ZDZmYjBhZGQ3ZDQ1ZWFjNjZjYTJhMGM4ZmI4NTUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRt
bC9IVE1MNVNjcmlwdFJ1bm5lci5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUw1U2NyaXB0UnVu
bmVyLmNwcApAQCAtMjI4LDExICsyMjgsMTQgQEAgdm9pZCBIVE1MNVNjcmlwdFJ1bm5lcjo6cmVx
dWVzdFNjcmlwdChFbGVtZW50KiBzY3JpcHQpCiAgICAgfQogICAgIG1fcGFyc2luZ0Jsb2NraW5n
U2NyaXB0LmNhY2hlZFNjcmlwdCA9IGNhY2hlZFNjcmlwdDsKIAotICAgIC8vIFdlIG9ubHkgY2Fy
ZSBhYm91dCBhIGxvYWQgY2FsbGJhY2sgaWYgY2FjaGVkU2NyaXB0IGlzIG5vdCBhbHJlYWR5Ci0g
ICAgLy8gaW4gdGhlIGNhY2hlLiAgQ2FsbGVycyB3aWxsIGF0dGVtcHQgdG8gcnVuIHRoZSBtX3Bh
cnNpbmdCbG9ja2luZ1NjcmlwdAotICAgIC8vIGlmIHBvc3NpYmxlIGJlZm9yZSByZXR1cm5pbmcg
Y29udHJvbCB0byB0aGUgcGFyc2VyLgotICAgIGlmICghbV9wYXJzaW5nQmxvY2tpbmdTY3JpcHQu
Y2FjaGVkU2NyaXB0LT5pc0xvYWRlZCgpKQotICAgICAgICB3YXRjaEZvckxvYWQobV9wYXJzaW5n
QmxvY2tpbmdTY3JpcHQpOworICAgIC8vIEFsd2F5cyBjYWxsIHdhdGNoRm9yTG9hZCwgZXZlbiBp
ZiB0aGUgc2NyaXB0IGlzIGFscmVhZHkgbG9hZGVkLgorICAgIC8vIENhY2hlZFJlc291cmNlIG1h
eSBwdXJnZSBpdHMgZGF0YSBpZiBpdCBoYXMgbm8gY2xpZW50cywgd2hpY2ggd291bGQgY2F1c2UK
KyAgICAvLyBsYXRlciBzY3JpcHQgZXhlY3V0aW9uIHRvIGZhaWwuICBIVE1MNVNjcmlwdFJ1bm5l
ckhvc3QgaXMgcmVxdWlyZWQgdG8KKyAgICAvLyBOT1QgYWxsb3cgQ2FjaGVkUmVzb3VyY2U6OmFk
ZENsaWVudCB0byBjYXVzZSByZWN1cnNpb24gYnkgaWdub3JpbmcKKyAgICAvLyBhbnkgbm90aWZ5
RmluaXNoZWQoKSBjYWxsYmFja3MgZHVyaW5nIHdhdGNoRm9yTG9hZCgpLgorICAgIC8vIENhbGxl
cnMgd2lsbCBhdHRlbXB0IHRvIHJ1biB0aGUgbV9wYXJzaW5nQmxvY2tpbmdTY3JpcHQgaWYgcG9z
c2libGUKKyAgICAvLyBiZWZvcmUgcmV0dXJuaW5nIGNvbnRyb2wgdG8gdGhlIHBhcnNlci4KKyAg
ICB3YXRjaEZvckxvYWQobV9wYXJzaW5nQmxvY2tpbmdTY3JpcHQpOwogfQogCiAvLyBUaGlzIG1l
dGhvZCBpcyBtZWFudCB0byBtYXRjaCB0aGUgSFRNTDUgZGVmaW5pdGlvbiBvZiAicnVubmluZyBh
IHNjcmlwdCIKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MNVNjcmlwdFJ1bm5lckhvc3Qu
aCBiL1dlYkNvcmUvaHRtbC9IVE1MNVNjcmlwdFJ1bm5lckhvc3QuaAppbmRleCA5YTc3Mzg1NTUy
Mzg4OTcxMjdlNGFmZGZiMmE5N2ZhNWQ0NjRkZDA2Li5mYWRiYjNmYWU5MmQ0ZDBjZDBhYjkwY2Y5
MGNkNzk3ZTgzYTBkMTBhIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTDVTY3JpcHRSdW5u
ZXJIb3N0LmgKKysrIGIvV2ViQ29yZS9odG1sL0hUTUw1U2NyaXB0UnVubmVySG9zdC5oCkBAIC0z
Niw3ICszNiwxMCBAQCBjbGFzcyBIVE1MNVNjcmlwdFJ1bm5lckhvc3QgewogcHVibGljOgogICAg
IHZpcnR1YWwgfkhUTUw1U2NyaXB0UnVubmVySG9zdCgpIHsgfQogCi0gICAgLy8gSW1wbGVtZW50
b3JzIHNob3VsZCBjYWxsIGNhY2hlZFJlc291cmNlLT5hZGRDbGllbnQoKSBoZXJlIG9yIHNvb24g
YWZ0ZXIuCisgICAgLy8gSW1wbGVtZW50b3JzIHNob3VsZCBjYWxsIGNhY2hlZFJlc291cmNlLT5h
ZGRDbGllbnQoKSwgYnV0IHNob3VsZCBOT1QKKyAgICAvLyBhbGxvdyByZWVudHJ5IGludG8gdGhl
IFNjcmlwdFJ1bm5lciBmcm9tIHN1Y2ggYSBjYWxsLiAgSFRNTDVTY3JpcHRSdW5uZXIKKyAgICAv
LyBpcyByZXNwb25zaWJsZSBmb3IgZGV0ZWN0aW5nIGFuZCBleGVjdXRpbmcgYWxyZWFkeS1sb2Fk
ZWQgc2NyaXB0cyBhbmQKKyAgICAvLyBvbmx5IHdhbnRzIGNhbGxiYWNrcyBhYm91dCBub3QteWV0
LWZ1bGx5LWxvYWRlZCBzY3JpcHRzLgogICAgIHZpcnR1YWwgdm9pZCB3YXRjaEZvckxvYWQoQ2Fj
aGVkUmVzb3VyY2UqKSA9IDA7CiAgICAgLy8gSW1wbGVtZW50b3JzIG11c3QgY2FsbCBjYWNoZWRS
ZXNvdXJjZS0+cmVtb3ZlQ2xpZW50KCkgaW1tZWRpYXRlbHkuCiAgICAgdmlydHVhbCB2b2lkIHN0
b3BXYXRjaGluZ0ZvckxvYWQoQ2FjaGVkUmVzb3VyY2UqKSA9IDA7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59060</attachid>
            <date>2010-06-17 19:34:53 -0700</date>
            <delta_ts>2010-06-17 20:11:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-40764-20100617193451.patch</filename>
            <type>text/plain</type>
            <size>12114</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZDU5ZDJlYTcxNzdjNDU2NzZmMTcxOWZhNmEzMjMzODA0M2RhZWUzNC4uMTg2MzYzZDM3MzA1NGEz
NWQwMTc4ZDMxZDBiNGM3Yzk5ZjlmMzRiMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2NCBAQAorMjAxMC0wNi0xNyAgRXJp
YyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgUkVHUkVTU0lPTihIVE1MNSBwYXJzZXIpOiBlZGl0aW5nL3Nl
bGVjdGlvbi9sZWF2ZS1yZXF1ZXN0ZWQtYmxvY2suaHRtbCBjYW4gZmFpbCBvciBjcmFzaAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDA3NjQKKworICAg
ICAgICBIVE1MNVNjcmlwdFJ1bm5lciB3YXMgY2FyZWZ1bCB0byBvbmx5IGNhbGwgQ2FjaGVkUmVz
b3VyY2U6OmFkZENsaWVudAorICAgICAgICBmb3IgY2FzZXMgd2hlcmUgdGhlIHJlc291cmNlIHdh
cyBub3QgYWxyZWFkeSBsb2FkZWQuICBUaGlzIHdhcyB0bworICAgICAgICBhdm9pZCBnZXR0aW5n
IHN5bmNocm9ub3VzIG5vdGlmeUZpbmlzaGVkIGNhbGxiYWNrcyBmcm9tIGluc2lkZQorICAgICAg
ICBhZGRDbGllbnQuICAoVGhlIG9sZCBIVE1MRG9jdW1lbnRQYXJzZXIgYWxzbyBoYXMgaGFja3Mg
dG8gd29yayBhcm91bmQKKyAgICAgICAgYWRkQ2xpZW50J3Mgc3luY2hyb25vdXMgbm90aWZ5Rmlu
aXNoZWQgYmVoYXZpb3IgZm9yIGFscmVhZHktbG9hZGVkCisgICAgICAgIHJlc291cmNlcyBhcyB3
ZWxsLikKKworICAgICAgICBJdCB0dXJucyBvdXQgdGhhdCBDYWNoZWRSZXNvdXJjZSB3aWxsIG1h
cmsgaXRzZWxmIGFzIHB1cmdlYWJsZSBpZiBpdAorICAgICAgICBoYXMgbm8gY2xpZW50cywgdGh1
cyBpdCBjb3VsZCBoYXZlIGl0cyBkYXRhIGNsZWFyZWQgKGJ1dCBpdHNlbGYgbm90CisgICAgICAg
IGRlbGV0ZWQpIGluIHRoZSBjYXNlIHdoZXJlIHdlIHlpZWxkIGJhY2sgdG8gdGhlIHJ1bmxvb3Ag
dG8gd2FpdCBmb3IKKyAgICAgICAgQ1NTIHRvIGxvYWQgYmVmb3JlIGV4ZWN1dGluZyB0aGUgbG9h
ZGVkIHNjcmlwdC4KKworICAgICAgICBUaGUgZml4IGlzIHRvIGFjdCBtb3JlIGxpa2UgdGhlIG9s
ZCBwYXJzZXIgYW5kIGFsd2F5cyBjYWxsIGFkZENsaWVudAorICAgICAgICBvbiBldmVyeSBDYWNo
ZWRTY3JpcHQgd2UgbG9hZC4gIEJ1dCB1bmxpa2UgdGhlIG9sZCBwYXJzZXIsIHdlJ3JlCisgICAg
ICAgIGNhcmVmdWwgbm90IHRvIHJlLWVudGVyIGZyb20gYWRkQ2xpZW50IC0+IG5vdGlmeUZpbmlz
aGVkCisgICAgICAgIHVzaW5nIGd1YXJkcyBpbiBIVE1MNURvY3VtZW50UGFyc2VyOjp3YXRjaEZv
ckxvYWQuCisKKyAgICAgICAgQW5vdGhlciBmaXggd291bGQgaGF2ZSBiZWVuIHRvIGFkZCBhIHZl
cnNpb24gb2YKKyAgICAgICAgQ2FjaGVkUmVzb3VyY2U6OmFkZENsaWVudCB3aGljaCBkaWRuJ3Qg
Y2FsbCBub3RpZnlGaW5pc2hlZC4gIEkgZGlkIG5vdAorICAgICAgICBkbyB0aGF0IGFzIEkgd29y
cmllZCBzdWNoIGEgbWV0aG9kIHdvdWxkIGJlIGVhc3kgdG8gdXNlIGluY29ycmVjdGx5LgorCisg
ICAgICAgIEkgZG8gbm90IGtub3cgaG93IHRvIG1ha2UgYSBDYWNoZWRSZXNvdXJjZSBwdXJnZSBp
dHNlbGYKKyAgICAgICAgZnJvbSBhIExheW91dFRlc3QsIHNvIHRoaXMgaXMgbm90IGN1cnJlbnRs
eSB0ZXN0YWJsZS4KKyAgICAgICAgSWYgYW55b25lIGtub3dzIGhvdyBJJ20gaGFwcHkgdG8gbWFr
ZSBhIHRlc3QuCisKKyAgICAgICAgKiBodG1sL0hUTUw1RG9jdW1lbnRQYXJzZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTDVEb2N1bWVudFBhcnNlcjo6d2F0Y2hGb3JMb2FkKToKKyAgICAg
ICAgIC0gSXQgaXMgbm93IGV4cGVjdGVkIHRvIGNhbGwgd2F0Y2hGb3JMb2FkIHdpdGggYSBsb2Fk
ZWQgc2NyaXB0LgorICAgICAgICAoV2ViQ29yZTo6SFRNTDVEb2N1bWVudFBhcnNlcjo6bm90aWZ5
RmluaXNoZWQpOgorICAgICAgICAgLSBOb3cgdGhhdCB3YXRjaEZvckxvYWQgaXMgY2FsbGVkIHdp
dGggbG9hZGVkIHNjcmlwdHMsIG5vdGlmeUZpbmlzaGVkCisgICAgICAgICAgIG1heSBiZSBiZSBj
YWxsZWQgZnJvbSBhZGRDbGllbnQsIHRodXMgd2UgbWF5IGJlIGluIHRoZSBtaWRkbGUgb2YKKyAg
ICAgICAgICAgc2NyaXB0IGV4ZWN1dGlvbiB3aGVuIGl0J3MgY2FsbGVkLiAgSXQncyBPSy4gIFdl
IHBhc3MgdGhlIGNhbGwKKyAgICAgICAgICAgYWxvbmcgdG8gSFRNTDVTY3JpcHRSdW5uZXI6OmV4
ZWN1dGVTY3JpcHRzV2FpdGluZ0ZvckxvYWQKKyAgICAgICAgICAgYW5kIGl0IGtub3dzIGhvdyB0
byBpZ25vcmUgdGhlIGNhbGwgaW4gdGhhdCBjYXNlLgorICAgICAgICAqIGh0bWwvSFRNTDVEb2N1
bWVudFBhcnNlci5oOgorICAgICAgICAgLSBEb2N1bWVudCB0aGVzZSBtZW1iZXIgdmFyaWFibGVz
IG1vcmUuCisgICAgICAgICogaHRtbC9IVE1MNVNjcmlwdFJ1bm5lci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MNVNjcmlwdFJ1bm5lcjo6fkhUTUw1U2NyaXB0UnVubmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUw1U2NyaXB0UnVubmVyOjpleGVjdXRlUGVuZGluZ1NjcmlwdCk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MNVNjcmlwdFJ1bm5lcjo6d2F0Y2hGb3JMb2FkKToKKyAgICAgICAg
IC0gU2V0IHRoZSBwZW5kaW5nIHNjcmlwdCB0byBSZWdpc3RlcmluZ0ZvcldhdGNoIHN0YXRlIGJl
Zm9yZQorICAgICAgICAgICB3YXRjaGluZyBhbmQgV2F0Y2hpbmdGb3JMb2FkIGFmdGVyLgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTDVTY3JpcHRSdW5uZXI6OnN0b3BXYXRjaGluZ0ZvckxvYWQpOgor
ICAgICAgICAgLSBTZXQgdGhlIHBlbmRpbmcgc2NyaXB0IHRvIE5vdFdhdGNoaW5nRm9yTG9hZC4K
KyAgICAgICAgKFdlYkNvcmU6OkhUTUw1U2NyaXB0UnVubmVyOjpleGVjdXRlU2NyaXB0c1dhaXRp
bmdGb3JMb2FkKToKKyAgICAgICAgIC0gSWdub3JlIGxvYWQgbm90aWZpY2F0aW9ucyBpZiB0aGUg
c2NyaXB0IGlzIFJlZ2lzdGVyaW5nRm9yV2F0Y2guCisgICAgICAgIChXZWJDb3JlOjpIVE1MNVNj
cmlwdFJ1bm5lcjo6cmVxdWVzdFNjcmlwdCk6CisgICAgICAgICogaHRtbC9IVE1MNVNjcmlwdFJ1
bm5lci5oOgorICAgICAgICAoV2ViQ29yZTo6SFRNTDVTY3JpcHRSdW5uZXI6OlBlbmRpbmdTY3Jp
cHQ6Oik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MNVNjcmlwdFJ1bm5lcjo6UGVuZGluZ1Njcmlw
dDo6UGVuZGluZ1NjcmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MNVNjcmlwdFJ1bm5lcjo6
UGVuZGluZ1NjcmlwdDo6d2F0Y2hpbmdGb3JMb2FkKToKKyAgICAgICAgKiBodG1sL0hUTUw1U2Ny
aXB0UnVubmVySG9zdC5oOgorICAgICAgICAgLSBEb2N1bWVudCB0aGUgbmV3IGV4cGVjdGF0aW9u
cyBvZiB3YXRjaEZvckxvYWQKKwogMjAxMC0wNi0xNyAgS2ludWtvIFlhc3VkYSAgPGtpbnVrb0Bj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgSmlhbiBMaS4KZGlmZiAtLWdpdCBh
L1dlYkNvcmUvaHRtbC9IVE1MNURvY3VtZW50UGFyc2VyLmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1M
NURvY3VtZW50UGFyc2VyLmNwcAppbmRleCBhMWM5MDU5MzY3NjBiNjkwZGI5YTljMTI1MmY1MDAy
MzdkZjUyNmQ2Li4wZGU0YWY3ZTdlNTgwYjM2Njc2Yzg2ZjViNzlhOTZkMzFhOGJiMTQzIDEwMDY0
NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTDVEb2N1bWVudFBhcnNlci5jcHAKKysrIGIvV2ViQ29y
ZS9odG1sL0hUTUw1RG9jdW1lbnRQYXJzZXIuY3BwCkBAIC0zNzksMTAgKzM3OSw2IEBAIHZvaWQg
SFRNTDVEb2N1bWVudFBhcnNlcjo6cmVzdW1lUGFyc2luZ0FmdGVyU2NyaXB0RXhlY3V0aW9uKCkK
IAogdm9pZCBIVE1MNURvY3VtZW50UGFyc2VyOjp3YXRjaEZvckxvYWQoQ2FjaGVkUmVzb3VyY2Uq
IGNhY2hlZFNjcmlwdCkKIHsKLSAgICBBU1NFUlQoIWNhY2hlZFNjcmlwdC0+aXNMb2FkZWQoKSk7
Ci0gICAgLy8gYWRkQ2xpZW50IHdvdWxkIGNhbGwgbm90aWZ5RmluaXNoZWQgaWYgdGhlIGxvYWQg
d2VyZSBjb21wbGV0ZS4KLSAgICAvLyBDYWxsZXJzIGRvIG5vdCBleHBlY3QgdG8gYmUgcmUtZW50
ZXJlZCBmcm9tIHRoaXMgY2FsbCwgc28gdGhleSBzaG91bGQKLSAgICAvLyBub3QgYW4gYWxyZWFk
eS1sb2FkZWQgQ2FjaGVkUmVzb3VyY2UuCiAgICAgY2FjaGVkU2NyaXB0LT5hZGRDbGllbnQodGhp
cyk7CiB9CiAKQEAgLTQwOSw3ICs0MDUsNiBAQCB2b2lkIEhUTUw1RG9jdW1lbnRQYXJzZXI6OmV4
ZWN1dGVTY3JpcHQoY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29kZSkKIAogdm9pZCBI
VE1MNURvY3VtZW50UGFyc2VyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSogY2FjaGVk
UmVzb3VyY2UpCiB7Ci0gICAgQVNTRVJUKCFtX3NjcmlwdFJ1bm5lci0+aW5TY3JpcHRFeGVjdXRp
b24oKSk7CiAgICAgQVNTRVJUKG1fdHJlZUNvbnN0cnVjdG9yLT5pc1BhdXNlZCgpKTsKICAgICAv
LyBOb3RlOiBXZSBvbmx5IGV2ZXIgd2FpdCBvbiBvbmUgc2NyaXB0IGF0IGEgdGltZSwgc28gd2Ug
YWx3YXlzIGtub3cgdGhpcwogICAgIC8vIGlzIHRoZSBvbmUgd2Ugd2VyZSB3YWl0aW5nIG9uIGFu
ZCBjYW4gdW4tcGF1c2UgdGhlIHRyZWUgYnVpbGRlci4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRt
bC9IVE1MNURvY3VtZW50UGFyc2VyLmggYi9XZWJDb3JlL2h0bWwvSFRNTDVEb2N1bWVudFBhcnNl
ci5oCmluZGV4IGZmZjFjZTFkNjgxMjZmMmVmNWZlOTA1NTM2NDU1NzU2OTYwZjEzOGIuLjhiM2Rj
MzIzOTY4YjU1NDlhOTE5NmZjYWM1MTM4NTFjMGFiYmVkMWQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
aHRtbC9IVE1MNURvY3VtZW50UGFyc2VyLmgKKysrIGIvV2ViQ29yZS9odG1sL0hUTUw1RG9jdW1l
bnRQYXJzZXIuaApAQCAtMTk4LDkgKzE5OCwxMiBAQCBwcml2YXRlOgogICAgIE93blB0cjxIVE1M
NVNjcmlwdFJ1bm5lcj4gbV9zY3JpcHRSdW5uZXI7CiAgICAgT3duUHRyPEhUTUw1VHJlZUJ1aWxk
ZXI+IG1fdHJlZUNvbnN0cnVjdG9yOwogICAgIE93blB0cjxIVE1MNVByZWxvYWRTY2FubmVyPiBt
X3ByZWxvYWRTY2FubmVyOworCiAgICAgYm9vbCBtX2VuZFdhc0RlbGF5ZWQ7CiAgICAgaW50IG1f
d3JpdGVOZXN0aW5nTGV2ZWw7CiAKKyAgICAvLyBVc2VkIGZvciB5aWVsZGluZyB0aGUgcGFyc2Vy
IHRvIG1ha2UgV2ViS2l0IGFwcGxpY2F0aW9ucyBtb3JlIHJlc3BvbnNpdmUuCisgICAgLy8gRklY
TUU6IFRoaXMgc2hvdWxkIGEgc2VwYXJhdGUgY2xhc3MsIHVzZWQgYnkgSFRNTDVEb2N1bWVudFBh
cnNlci4KICAgICBkb3VibGUgbV9wYXJzZXJUaW1lTGltaXQ7CiAgICAgaW50IG1fcGFyc2VyQ2h1
bmtTaXplOwogICAgIFRpbWVyPEhUTUw1RG9jdW1lbnRQYXJzZXI+IG1fY29udGludWVOZXh0Q2h1
bmtUaW1lcjsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MNVNjcmlwdFJ1bm5lci5jcHAg
Yi9XZWJDb3JlL2h0bWwvSFRNTDVTY3JpcHRSdW5uZXIuY3BwCmluZGV4IGFlZjVjZTQ1MWQ0NmQ5
ZWI1N2Y5YTQwZmRkM2FjNWFlY2VlM2FlZWYuLmYyOGNhY2UyNDdmYjZhNWI2MjhlZGU3MzE4MmRl
NGRjNTk0MmQzNzAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MNVNjcmlwdFJ1bm5lci5j
cHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUw1U2NyaXB0UnVubmVyLmNwcApAQCAtNTQsNyArNTQs
NyBAQCBIVE1MNVNjcmlwdFJ1bm5lcjo6SFRNTDVTY3JpcHRSdW5uZXIoRG9jdW1lbnQqIGRvY3Vt
ZW50LCBIVE1MNVNjcmlwdFJ1bm5lckhvc3QqCiBIVE1MNVNjcmlwdFJ1bm5lcjo6fkhUTUw1U2Ny
aXB0UnVubmVyKCkKIHsKICAgICAvLyBGSVhNRTogU2hvdWxkIHdlIGJlIHBhc3NlZCBhICJkb25l
IGxvYWRpbmcvcGFyc2luZyIgY2FsbGJhY2sgc29vbmVyIHRoYW4gZGVzdHJ1Y3Rpb24/Ci0gICAg
aWYgKG1fcGFyc2luZ0Jsb2NraW5nU2NyaXB0LmNhY2hlZFNjcmlwdCAmJiBtX3BhcnNpbmdCbG9j
a2luZ1NjcmlwdC53YXRjaGluZ0ZvckxvYWQpCisgICAgaWYgKG1fcGFyc2luZ0Jsb2NraW5nU2Ny
aXB0LmNhY2hlZFNjcmlwdCAmJiBtX3BhcnNpbmdCbG9ja2luZ1NjcmlwdC53YXRjaGluZ0Zvckxv
YWQoKSkKICAgICAgICAgc3RvcFdhdGNoaW5nRm9yTG9hZChtX3BhcnNpbmdCbG9ja2luZ1Njcmlw
dCk7CiB9CiAKQEAgLTEwNyw3ICsxMDcsNyBAQCB2b2lkIEhUTUw1U2NyaXB0UnVubmVyOjpleGVj
dXRlUGVuZGluZ1NjcmlwdCgpCiAgICAgU2NyaXB0U291cmNlQ29kZSBzb3VyY2VDb2RlID0gc291
cmNlRnJvbVBlbmRpbmdTY3JpcHQobV9wYXJzaW5nQmxvY2tpbmdTY3JpcHQsIGVycm9yT2NjdXJy
ZWQpOwogCiAgICAgLy8gU3RvcCB3YXRjaGluZyBsb2FkcyBiZWZvcmUgZXhlY3V0ZVNjcmlwdCB0
byBwcmV2ZW50IHJlY3Vyc2lvbiBpZiB0aGUgc2NyaXB0IHJlbG9hZHMgaXRzZWxmLgotICAgIGlm
IChtX3BhcnNpbmdCbG9ja2luZ1NjcmlwdC5jYWNoZWRTY3JpcHQgJiYgbV9wYXJzaW5nQmxvY2tp
bmdTY3JpcHQud2F0Y2hpbmdGb3JMb2FkKQorICAgIGlmIChtX3BhcnNpbmdCbG9ja2luZ1Njcmlw
dC5jYWNoZWRTY3JpcHQgJiYgbV9wYXJzaW5nQmxvY2tpbmdTY3JpcHQud2F0Y2hpbmdGb3JMb2Fk
KCkpCiAgICAgICAgIHN0b3BXYXRjaGluZ0ZvckxvYWQobV9wYXJzaW5nQmxvY2tpbmdTY3JpcHQp
OwogCiAgICAgLy8gQ2xlYXIgdGhlIHBlbmRpbmcgc2NyaXB0IGJlZm9yZSBwb3NzaWJsZSByZW50
cmFuY3kgZnJvbSBleGVjdXRlU2NyaXB0KCkKQEAgLTE0MywxNiArMTQzLDIwIEBAIHZvaWQgSFRN
TDVTY3JpcHRSdW5uZXI6OmV4ZWN1dGVTY3JpcHQoRWxlbWVudCogZWxlbWVudCwgY29uc3QgU2Ny
aXB0U291cmNlQ29kZSYKIAogdm9pZCBIVE1MNVNjcmlwdFJ1bm5lcjo6d2F0Y2hGb3JMb2FkKFBl
bmRpbmdTY3JpcHQmIHBlbmRpbmdTY3JpcHQpCiB7Ci0gICAgQVNTRVJUKCFwZW5kaW5nU2NyaXB0
LndhdGNoaW5nRm9yTG9hZCk7CisgICAgQVNTRVJUKCFwZW5kaW5nU2NyaXB0LndhdGNoaW5nRm9y
TG9hZCgpKTsKKyAgICAvLyBDYWNoZWRSZXNvdXJjZTo6YWRkQ2xpZW50IHdpbGwgY2FsbCBub3Rp
ZnlGaW5pc2hlZCBpZiB0aGUgbG9hZCBpcyBhbHJlYWR5CisgICAgLy8gY29tcGxldGUuICBXZSBz
ZXQgd2F0Y2hpbmdGb3JMb2FkU3RhdGUgdG8gUmVnaXN0ZXJpbmdGb3JXYXRjaCBzbyB0aGF0IHdl
CisgICAgLy8ga25vdyB0byBpZ25vcmUgYW55IG5vdGlmeUZpbmlzaGVkIGNhbGwgZHVyaW5nIGFk
ZENsaWVudC4KKyAgICBwZW5kaW5nU2NyaXB0LndhdGNoaW5nRm9yTG9hZFN0YXRlID0gUGVuZGlu
Z1NjcmlwdDo6UmVnaXN0ZXJpbmdGb3JXYXRjaDsKICAgICBtX2hvc3QtPndhdGNoRm9yTG9hZChw
ZW5kaW5nU2NyaXB0LmNhY2hlZFNjcmlwdC5nZXQoKSk7Ci0gICAgcGVuZGluZ1NjcmlwdC53YXRj
aGluZ0ZvckxvYWQgPSB0cnVlOworICAgIHBlbmRpbmdTY3JpcHQud2F0Y2hpbmdGb3JMb2FkU3Rh
dGUgPSBQZW5kaW5nU2NyaXB0OjpXYXRjaGluZ0ZvckxvYWQ7CiB9CiAKIHZvaWQgSFRNTDVTY3Jp
cHRSdW5uZXI6OnN0b3BXYXRjaGluZ0ZvckxvYWQoUGVuZGluZ1NjcmlwdCYgcGVuZGluZ1Njcmlw
dCkKIHsKLSAgICBBU1NFUlQocGVuZGluZ1NjcmlwdC53YXRjaGluZ0ZvckxvYWQpOworICAgIEFT
U0VSVChwZW5kaW5nU2NyaXB0LndhdGNoaW5nRm9yTG9hZCgpKTsKICAgICBtX2hvc3QtPnN0b3BX
YXRjaGluZ0ZvckxvYWQocGVuZGluZ1NjcmlwdC5jYWNoZWRTY3JpcHQuZ2V0KCkpOwotICAgIHBl
bmRpbmdTY3JpcHQud2F0Y2hpbmdGb3JMb2FkID0gZmFsc2U7CisgICAgcGVuZGluZ1NjcmlwdC53
YXRjaGluZ0ZvckxvYWRTdGF0ZSA9IFBlbmRpbmdTY3JpcHQ6Ok5vdFdhdGNoaW5nRm9yTG9hZDsK
IH0KIAogLy8gVGhpcyBmdW5jdGlvbiBzaG91bGQgbWF0Y2ggMTAuMi41LjExICJBbiBlbmQgdGFn
IHdob3NlIHRhZyBuYW1lIGlzICdzY3JpcHQnIgpAQCAtMTkwLDExICsxOTQsMTggQEAgYm9vbCBI
VE1MNVNjcmlwdFJ1bm5lcjo6ZXhlY3V0ZVBhcnNpbmdCbG9ja2luZ1NjcmlwdHMoKQogICAgIHJl
dHVybiB0cnVlOwogfQogCi1ib29sIEhUTUw1U2NyaXB0UnVubmVyOjpleGVjdXRlU2NyaXB0c1dh
aXRpbmdGb3JMb2FkKENhY2hlZFJlc291cmNlKikKK2Jvb2wgSFRNTDVTY3JpcHRSdW5uZXI6OmV4
ZWN1dGVTY3JpcHRzV2FpdGluZ0ZvckxvYWQoQ2FjaGVkUmVzb3VyY2UqIGNhY2hlZFNjcmlwdCkK
IHsKLSAgICBBU1NFUlQoIW1fc2NyaXB0TmVzdGluZ0xldmVsKTsKICAgICBBU1NFUlQoaGF2ZVBh
cnNpbmdCbG9ja2luZ1NjcmlwdCgpKTsKKyAgICBBU1NFUlRfVU5VU0VEKGNhY2hlZFNjcmlwdCwg
bV9wYXJzaW5nQmxvY2tpbmdTY3JpcHQuY2FjaGVkU2NyaXB0ID09IGNhY2hlZFNjcmlwdCk7CiAg
ICAgQVNTRVJUKG1fcGFyc2luZ0Jsb2NraW5nU2NyaXB0LmNhY2hlZFNjcmlwdC0+aXNMb2FkZWQo
KSk7CisKKyAgICAvLyBUaGlzIHdhcyBhIHN5bmNocm9ub3VzIGNhbGxiYWNrIGZyb20gQ2FjaGVk
U2NyaXB0OjpkaWRBZGRDbGllbnQncyBjYWxsIHRvCisgICAgLy8gbm90aWZ5RmluaXNoZWQgYW5k
IHNob3VsZCBiZSBpZ25vcmVkLiAgVGhlIHBhcnNlciBzaG91bGQgcmVtYWluIHBhdXNlZC4KKyAg
ICBpZiAobV9wYXJzaW5nQmxvY2tpbmdTY3JpcHQud2F0Y2hpbmdGb3JMb2FkU3RhdGUgPT0gUGVu
ZGluZ1NjcmlwdDo6UmVnaXN0ZXJpbmdGb3JXYXRjaCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgQVNTRVJUKCFtX3NjcmlwdE5lc3RpbmdMZXZlbCk7CiAgICAgcmV0dXJuIGV4ZWN1dGVQ
YXJzaW5nQmxvY2tpbmdTY3JpcHRzKCk7CiB9CiAKQEAgLTIyOCwxMSArMjM5LDE0IEBAIHZvaWQg
SFRNTDVTY3JpcHRSdW5uZXI6OnJlcXVlc3RTY3JpcHQoRWxlbWVudCogc2NyaXB0KQogICAgIH0K
ICAgICBtX3BhcnNpbmdCbG9ja2luZ1NjcmlwdC5jYWNoZWRTY3JpcHQgPSBjYWNoZWRTY3JpcHQ7
CiAKLSAgICAvLyBXZSBvbmx5IGNhcmUgYWJvdXQgYSBsb2FkIGNhbGxiYWNrIGlmIGNhY2hlZFNj
cmlwdCBpcyBub3QgYWxyZWFkeQotICAgIC8vIGluIHRoZSBjYWNoZS4gIENhbGxlcnMgd2lsbCBh
dHRlbXB0IHRvIHJ1biB0aGUgbV9wYXJzaW5nQmxvY2tpbmdTY3JpcHQKLSAgICAvLyBpZiBwb3Nz
aWJsZSBiZWZvcmUgcmV0dXJuaW5nIGNvbnRyb2wgdG8gdGhlIHBhcnNlci4KLSAgICBpZiAoIW1f
cGFyc2luZ0Jsb2NraW5nU2NyaXB0LmNhY2hlZFNjcmlwdC0+aXNMb2FkZWQoKSkKLSAgICAgICAg
d2F0Y2hGb3JMb2FkKG1fcGFyc2luZ0Jsb2NraW5nU2NyaXB0KTsKKyAgICAvLyBBbHdheXMgY2Fs
bCB3YXRjaEZvckxvYWQsIGV2ZW4gaWYgdGhlIHNjcmlwdCBpcyBhbHJlYWR5IGxvYWRlZC4KKyAg
ICAvLyBDYWNoZWRSZXNvdXJjZSBtYXkgcHVyZ2UgaXRzIGRhdGEgaWYgaXQgaGFzIG5vIGNsaWVu
dHMsIHdoaWNoIHdvdWxkIGNhdXNlCisgICAgLy8gbGF0ZXIgc2NyaXB0IGV4ZWN1dGlvbiB0byBm
YWlsLiAgd2F0Y2hGb3JMb2FkIHNldHMgbV9wYXJzaW5nQmxvY2tpbmdTY3JpcHQKKyAgICAvLyB0
byB0aGUgUmVnaXN0ZXJpbmdGb3JXYXRjaCBzdGF0ZSBzbyB3ZSBrbm93IHRvIGlnbm9yZSBhbnkK
KyAgICAvLyBleGVjdXRlU2NyaXB0c1dhaXRpbmdGb3JMb2FkIGNhbGxiYWNrcyBkdXJpbmcgdGhl
IHdhdGNoRm9yTG9hZCBjYWxsLgorICAgIHdhdGNoRm9yTG9hZChtX3BhcnNpbmdCbG9ja2luZ1Nj
cmlwdCk7CisgICAgLy8gQ2FsbGVycyB3aWxsIGF0dGVtcHQgdG8gcnVuIHRoZSBtX3BhcnNpbmdC
bG9ja2luZ1NjcmlwdCBpZiBwb3NzaWJsZQorICAgIC8vIGJlZm9yZSByZXR1cm5pbmcgY29udHJv
bCB0byB0aGUgcGFyc2VyLgogfQogCiAvLyBUaGlzIG1ldGhvZCBpcyBtZWFudCB0byBtYXRjaCB0
aGUgSFRNTDUgZGVmaW5pdGlvbiBvZiAicnVubmluZyBhIHNjcmlwdCIKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvaHRtbC9IVE1MNVNjcmlwdFJ1bm5lci5oIGIvV2ViQ29yZS9odG1sL0hUTUw1U2NyaXB0
UnVubmVyLmgKaW5kZXggMTllNzBhNmE2NDI1MWQwMzg0Y2Q5ZTlmMjA2YzQzMDAyYjU3OGY3ZC4u
MTFmOWFlMTgwYTVjNTU4MWU4YzY5NGM2NjQ5NGRiZGE2ZjRjMjNiNSAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9odG1sL0hUTUw1U2NyaXB0UnVubmVyLmgKKysrIGIvV2ViQ29yZS9odG1sL0hUTUw1U2Ny
aXB0UnVubmVyLmgKQEAgLTU3LDE1ICs1NywyOSBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAg
c3RydWN0IFBlbmRpbmdTY3JpcHQgeworICAgICAgICAvLyBUaGlzIHN0YXRlIGNvbnRyb2xzIHdo
ZXRoZXIgd2UgbmVlZCB0byBkbyBhbnl0aGluZyB3aXRoIHRoaXMgc2NyaXB0CisgICAgICAgIC8v
IHdoZW4gd2UgZ2V0IGEgZXhlY3V0ZVNjcmlwdHNXYWl0aW5nRm9yTG9hZCBjYWxsYmFjay4KKyAg
ICAgICAgLy8gV2UgaWdub3JlIGNhbGxiYWNrcyBkdXJpbmcgUmVnaXN0ZXJpbmdGb3JXYXRjaC4K
KyAgICAgICAgZW51bSBXYXRjaGluZ0ZvckxvYWRTdGF0ZSB7CisgICAgICAgICAgICBOb3RXYXRj
aGluZ0ZvckxvYWQsCisgICAgICAgICAgICBSZWdpc3RlcmluZ0ZvcldhdGNoLAorICAgICAgICAg
ICAgV2F0Y2hpbmdGb3JMb2FkLAorICAgICAgICB9OworCiAgICAgICAgIFBlbmRpbmdTY3JpcHQo
KQotICAgICAgICAgICAgOiB3YXRjaGluZ0ZvckxvYWQoZmFsc2UpCisgICAgICAgICAgICA6IHdh
dGNoaW5nRm9yTG9hZFN0YXRlKE5vdFdhdGNoaW5nRm9yTG9hZCkKICAgICAgICAgICAgICwgc3Rh
cnRpbmdMaW5lTnVtYmVyKDApCiAgICAgICAgIHsKICAgICAgICAgfQogCisgICAgICAgIGJvb2wg
d2F0Y2hpbmdGb3JMb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIHdhdGNoaW5n
Rm9yTG9hZFN0YXRlICE9IE5vdFdhdGNoaW5nRm9yTG9hZDsKKyAgICAgICAgfQorCiAgICAgICAg
IFJlZlB0cjxFbGVtZW50PiBlbGVtZW50OwogICAgICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxD
YWNoZWRTY3JpcHQ+IGNhY2hlZFNjcmlwdDsKLSAgICAgICAgYm9vbCB3YXRjaGluZ0ZvckxvYWQ7
IC8vIERpZCB3ZSBwYXNzIHRoZSBjYWNoZWRTY3JpcHQgdG8gdGhlIEhUTUw1U2NyaXB0UnVubmVy
SG9zdC4KKyAgICAgICAgV2F0Y2hpbmdGb3JMb2FkU3RhdGUgd2F0Y2hpbmdGb3JMb2FkU3RhdGU7
CiAgICAgICAgIGludCBzdGFydGluZ0xpbmVOdW1iZXI7IC8vIE9ubHkgdXNlZCBmb3IgaW5saW5l
IHNjcmlwdCB0YWdzLgogICAgICAgICAvLyBIVE1MNSBoYXMgYW4gaXNSZWFkeSBwYXJhbWV0ZXIs
IGhvd2V2ZXIgaXNSZWFkeSBlbmRzIHVwIGVxdWl2YWxlbnQgdG8KICAgICAgICAgLy8gbV9kb2N1
bWVudC0+aGF2ZVN0eWxlc2hlZXRzTG9hZGVkKCkgJiYgY2FjaGVkU2NyaXB0LT5pc0xvYWRlZCgp
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTDVTY3JpcHRSdW5uZXJIb3N0LmggYi9XZWJD
b3JlL2h0bWwvSFRNTDVTY3JpcHRSdW5uZXJIb3N0LmgKaW5kZXggOWE3NzM4NTU1MjM4ODk3MTI3
ZTRhZmRmYjJhOTdmYTVkNDY0ZGQwNi4uNjhmMTAwZTdmYjQyZGNkMzNlMGVlMzhmMTZhOWIxNDZj
NjMzMTE1ZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUw1U2NyaXB0UnVubmVySG9zdC5o
CisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MNVNjcmlwdFJ1bm5lckhvc3QuaApAQCAtMzYsNyArMzYs
NyBAQCBjbGFzcyBIVE1MNVNjcmlwdFJ1bm5lckhvc3QgewogcHVibGljOgogICAgIHZpcnR1YWwg
fkhUTUw1U2NyaXB0UnVubmVySG9zdCgpIHsgfQogCi0gICAgLy8gSW1wbGVtZW50b3JzIHNob3Vs
ZCBjYWxsIGNhY2hlZFJlc291cmNlLT5hZGRDbGllbnQoKSBoZXJlIG9yIHNvb24gYWZ0ZXIuCisg
ICAgLy8gSW1wbGVtZW50b3JzIG11c3QgY2FsbCBjYWNoZWRSZXNvdXJjZS0+YWRkQ2xpZW50KCkg
aW1tZWRpYXRlbHkuCiAgICAgdmlydHVhbCB2b2lkIHdhdGNoRm9yTG9hZChDYWNoZWRSZXNvdXJj
ZSopID0gMDsKICAgICAvLyBJbXBsZW1lbnRvcnMgbXVzdCBjYWxsIGNhY2hlZFJlc291cmNlLT5y
ZW1vdmVDbGllbnQoKSBpbW1lZGlhdGVseS4KICAgICB2aXJ0dWFsIHZvaWQgc3RvcFdhdGNoaW5n
Rm9yTG9hZChDYWNoZWRSZXNvdXJjZSopID0gMDsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59065</attachid>
            <date>2010-06-17 20:11:26 -0700</date>
            <delta_ts>2010-06-17 20:14:29 -0700</delta_ts>
            <desc>After feedback from Adam</desc>
            <filename>bug-40764-20100617201125.patch</filename>
            <type>text/plain</type>
            <size>14072</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZDU5ZDJlYTcxNzdjNDU2NzZmMTcxOWZhNmEzMjMzODA0M2RhZWUzNC4uMWYxMzI1Mjg0ZTA2MjBi
ZTIxM2U2ODIwM2I3N2YzYzMwMmY0NzU2MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2MSBAQAorMjAxMC0wNi0xNyAgRXJp
YyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgUkVHUkVTU0lPTihIVE1MNSBwYXJzZXIpOiBlZGl0aW5nL3Nl
bGVjdGlvbi9sZWF2ZS1yZXF1ZXN0ZWQtYmxvY2suaHRtbCBjYW4gZmFpbCBvciBjcmFzaAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDA3NjQKKworICAg
ICAgICBIVE1MNVNjcmlwdFJ1bm5lciB3YXMgY2FyZWZ1bCB0byBvbmx5IGNhbGwgQ2FjaGVkUmVz
b3VyY2U6OmFkZENsaWVudAorICAgICAgICBmb3IgY2FzZXMgd2hlcmUgdGhlIHJlc291cmNlIHdh
cyBub3QgYWxyZWFkeSBsb2FkZWQuICBUaGlzIHdhcyB0bworICAgICAgICBhdm9pZCBnZXR0aW5n
IHN5bmNocm9ub3VzIG5vdGlmeUZpbmlzaGVkIGNhbGxiYWNrcyBmcm9tIGluc2lkZQorICAgICAg
ICBhZGRDbGllbnQuICAoVGhlIG9sZCBIVE1MRG9jdW1lbnRQYXJzZXIgYWxzbyBoYXMgaGFja3Mg
dG8gd29yayBhcm91bmQKKyAgICAgICAgYWRkQ2xpZW50J3Mgc3luY2hyb25vdXMgbm90aWZ5Rmlu
aXNoZWQgYmVoYXZpb3IgZm9yIGFscmVhZHktbG9hZGVkCisgICAgICAgIHJlc291cmNlcyBhcyB3
ZWxsLikKKworICAgICAgICBJdCB0dXJucyBvdXQgdGhhdCBDYWNoZWRSZXNvdXJjZSB3aWxsIG1h
cmsgaXRzZWxmIGFzIHB1cmdlYWJsZSBpZiBpdAorICAgICAgICBoYXMgbm8gY2xpZW50cywgdGh1
cyBpdCBjb3VsZCBoYXZlIGl0cyBkYXRhIGNsZWFyZWQgKGJ1dCBpdHNlbGYgbm90CisgICAgICAg
IGRlbGV0ZWQpIGluIHRoZSBjYXNlIHdoZXJlIHdlIHlpZWxkIGJhY2sgdG8gdGhlIHJ1bmxvb3Ag
dG8gd2FpdCBmb3IKKyAgICAgICAgQ1NTIHRvIGxvYWQgYmVmb3JlIGV4ZWN1dGluZyB0aGUgbG9h
ZGVkIHNjcmlwdC4KKworICAgICAgICBUaGUgZml4IGlzIHRvIGFjdCBtb3JlIGxpa2UgdGhlIG9s
ZCBwYXJzZXIgYW5kIGFsd2F5cyBjYWxsIGFkZENsaWVudAorICAgICAgICBvbiBldmVyeSBDYWNo
ZWRTY3JpcHQgd2UgbG9hZC4gIEJ1dCB1bmxpa2UgdGhlIG9sZCBwYXJzZXIsIHdlJ3JlCisgICAg
ICAgIGNhcmVmdWwgbm90IHRvIHJlLWVudGVyIGZyb20gYWRkQ2xpZW50IC0+IG5vdGlmeUZpbmlz
aGVkCisgICAgICAgIHVzaW5nIGd1YXJkcyBpbiBIVE1MNURvY3VtZW50UGFyc2VyOjp3YXRjaEZv
ckxvYWQuCisKKyAgICAgICAgSSBkbyBub3Qga25vdyBob3cgdG8gbWFrZSBhIENhY2hlZFJlc291
cmNlIHB1cmdlIGl0c2VsZgorICAgICAgICBmcm9tIGEgTGF5b3V0VGVzdCwgc28gdGhpcyBpcyBu
b3QgY3VycmVudGx5IHRlc3RhYmxlLgorICAgICAgICBJZiBhbnlvbmUga25vd3MgaG93IEknbSBo
YXBweSB0byBtYWtlIGEgdGVzdC4KKworICAgICAgICAqIGh0bWwvSFRNTDVEb2N1bWVudFBhcnNl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MNURvY3VtZW50UGFyc2VyOjp3YXRjaEZvckxv
YWQpOgorICAgICAgICAgLSBJdCBpcyBub3cgZXhwZWN0ZWQgdG8gY2FsbCB3YXRjaEZvckxvYWQg
d2l0aCBhIGxvYWRlZCBzY3JpcHQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MNURvY3VtZW50UGFy
c2VyOjpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICAtIE5vdyB0aGF0IHdhdGNoRm9yTG9hZCBp
cyBjYWxsZWQgd2l0aCBsb2FkZWQgc2NyaXB0cywgbm90aWZ5RmluaXNoZWQKKyAgICAgICAgICAg
bWF5IGJlIGJlIGNhbGxlZCBmcm9tIGFkZENsaWVudCwgdGh1cyB3ZSBtYXkgYmUgaW4gdGhlIG1p
ZGRsZSBvZgorICAgICAgICAgICBzY3JpcHQgZXhlY3V0aW9uIHdoZW4gaXQncyBjYWxsZWQuICBJ
dCdzIE9LLiAgV2UgcGFzcyB0aGUgY2FsbAorICAgICAgICAgICBhbG9uZyB0byBIVE1MNVNjcmlw
dFJ1bm5lcjo6ZXhlY3V0ZVNjcmlwdHNXYWl0aW5nRm9yTG9hZAorICAgICAgICAgICBhbmQgaXQg
a25vd3MgaG93IHRvIGlnbm9yZSB0aGUgY2FsbCBpbiB0aGF0IGNhc2UuCisgICAgICAgICogaHRt
bC9IVE1MNURvY3VtZW50UGFyc2VyLmg6CisgICAgICAgICAtIERvY3VtZW50IHRoZXNlIG1lbWJl
ciB2YXJpYWJsZXMgbW9yZS4KKyAgICAgICAgKiBodG1sL0hUTUw1U2NyaXB0UnVubmVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUw1U2NyaXB0UnVubmVyOjp+SFRNTDVTY3JpcHRSdW5uZXIp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTDVTY3JpcHRSdW5uZXI6OmV4ZWN1dGVQZW5kaW5nU2Ny
aXB0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUw1U2NyaXB0UnVubmVyOjpoYXNTY3JpcHRzV2Fp
dGluZ0ZvckxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTDVTY3JpcHRSdW5uZXI6OndhdGNo
Rm9yTG9hZCk6CisgICAgICAgICAtIFNldCB0aGUgcGVuZGluZyBzY3JpcHQgdG8gUmVnaXN0ZXJp
bmdGb3JXYXRjaCBzdGF0ZSBiZWZvcmUKKyAgICAgICAgICAgd2F0Y2hpbmcgYW5kIFdhdGNoaW5n
Rm9yTG9hZCBhZnRlci4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUw1U2NyaXB0UnVubmVyOjpzdG9w
V2F0Y2hpbmdGb3JMb2FkKToKKyAgICAgICAgIC0gU2V0IHRoZSBwZW5kaW5nIHNjcmlwdCB0byBO
b3RXYXRjaGluZ0ZvckxvYWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MNVNjcmlwdFJ1bm5lcjo6
ZXhlY3V0ZVNjcmlwdHNXYWl0aW5nRm9yTG9hZCk6CisgICAgICAgICAtIEFzc2VydCB0aGF0IGNh
bGxlcnMgY2hlY2tlZCBoYXNTY3JpcHRzV2FpdGluZ0ZvckxvYWQoKQorICAgICAgICAoV2ViQ29y
ZTo6SFRNTDVTY3JpcHRSdW5uZXI6OnJlcXVlc3RTY3JpcHQpOgorICAgICAgICAqIGh0bWwvSFRN
TDVTY3JpcHRSdW5uZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUw1U2NyaXB0UnVubmVyOjpQ
ZW5kaW5nU2NyaXB0OjopOgorICAgICAgICAoV2ViQ29yZTo6SFRNTDVTY3JpcHRSdW5uZXI6OlBl
bmRpbmdTY3JpcHQ6OlBlbmRpbmdTY3JpcHQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTDVTY3Jp
cHRSdW5uZXI6OlBlbmRpbmdTY3JpcHQ6OndhdGNoaW5nRm9yTG9hZCk6CisgICAgICAgICogaHRt
bC9IVE1MNVNjcmlwdFJ1bm5lckhvc3QuaDoKKyAgICAgICAgIC0gRG9jdW1lbnQgdGhlIG5ldyBl
eHBlY3RhdGlvbnMgb2Ygd2F0Y2hGb3JMb2FkCisKIDIwMTAtMDYtMTcgIEtpbnVrbyBZYXN1ZGEg
IDxraW51a29AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEppYW4gTGkuCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTDVEb2N1bWVudFBhcnNlci5jcHAgYi9XZWJDb3Jl
L2h0bWwvSFRNTDVEb2N1bWVudFBhcnNlci5jcHAKaW5kZXggYTFjOTA1OTM2NzYwYjY5MGRiOWE5
YzEyNTJmNTAwMjM3ZGY1MjZkNi4uNjA2ZjZiZGVhZDc4OTFlZTQ5NTY5YzFhYmVjYTVmZDIyNDAw
NjA3OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUw1RG9jdW1lbnRQYXJzZXIuY3BwCisr
KyBiL1dlYkNvcmUvaHRtbC9IVE1MNURvY3VtZW50UGFyc2VyLmNwcApAQCAtMzc5LDEwICszNzks
NiBAQCB2b2lkIEhUTUw1RG9jdW1lbnRQYXJzZXI6OnJlc3VtZVBhcnNpbmdBZnRlclNjcmlwdEV4
ZWN1dGlvbigpCiAKIHZvaWQgSFRNTDVEb2N1bWVudFBhcnNlcjo6d2F0Y2hGb3JMb2FkKENhY2hl
ZFJlc291cmNlKiBjYWNoZWRTY3JpcHQpCiB7Ci0gICAgQVNTRVJUKCFjYWNoZWRTY3JpcHQtPmlz
TG9hZGVkKCkpOwotICAgIC8vIGFkZENsaWVudCB3b3VsZCBjYWxsIG5vdGlmeUZpbmlzaGVkIGlm
IHRoZSBsb2FkIHdlcmUgY29tcGxldGUuCi0gICAgLy8gQ2FsbGVycyBkbyBub3QgZXhwZWN0IHRv
IGJlIHJlLWVudGVyZWQgZnJvbSB0aGlzIGNhbGwsIHNvIHRoZXkgc2hvdWxkCi0gICAgLy8gbm90
IGFuIGFscmVhZHktbG9hZGVkIENhY2hlZFJlc291cmNlLgogICAgIGNhY2hlZFNjcmlwdC0+YWRk
Q2xpZW50KHRoaXMpOwogfQogCkBAIC00MDksNiArNDA1LDE0IEBAIHZvaWQgSFRNTDVEb2N1bWVu
dFBhcnNlcjo6ZXhlY3V0ZVNjcmlwdChjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VDb2Rl
KQogCiB2b2lkIEhUTUw1RG9jdW1lbnRQYXJzZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291
cmNlKiBjYWNoZWRSZXNvdXJjZSkKIHsKKyAgICAvLyBJZ25vcmUgY2FsbHMgdW5sZXNzIHdlIGhh
dmUgYSBzY3JpcHQgYmxvY2tpbmcgdGhlIHBhcnNlciB3YWl0aW5nCisgICAgLy8gZm9yIGl0cyBv
d24gbG9hZC4gIE90aGVyd2lzZSB0aGlzIG1heSBiZSBhIGxvYWQgY2FsbGJhY2sgZnJvbQorICAg
IC8vIENhY2hlZFJlc291cmNlOjphZGRDbGllbnQgYmVjYXVzZSB0aGUgc2NyaXB0IHdhcyBhbHJl
YWR5IGluIHRoZSBjYWNoZS4KKyAgICAvLyBIVE1MNVNjcmlwdFJ1bm5lciBtYXkgbm90IGJlIHJl
YWR5IHRvIGhhbmRsZSBydW5uaW5nIHRoYXQgc2NyaXB0IHlldC4KKyAgICBpZiAoIW1fc2NyaXB0
UnVubmVyLT5oYXNTY3JpcHRzV2FpdGluZ0ZvckxvYWQoKSkgeworICAgICAgICBBU1NFUlQobV9z
Y3JpcHRSdW5uZXItPmluU2NyaXB0RXhlY3V0aW9uKCkpOworICAgICAgICByZXR1cm47CisgICAg
fQogICAgIEFTU0VSVCghbV9zY3JpcHRSdW5uZXItPmluU2NyaXB0RXhlY3V0aW9uKCkpOwogICAg
IEFTU0VSVChtX3RyZWVDb25zdHJ1Y3Rvci0+aXNQYXVzZWQoKSk7CiAgICAgLy8gTm90ZTogV2Ug
b25seSBldmVyIHdhaXQgb24gb25lIHNjcmlwdCBhdCBhIHRpbWUsIHNvIHdlIGFsd2F5cyBrbm93
IHRoaXMKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MNURvY3VtZW50UGFyc2VyLmggYi9X
ZWJDb3JlL2h0bWwvSFRNTDVEb2N1bWVudFBhcnNlci5oCmluZGV4IGZmZjFjZTFkNjgxMjZmMmVm
NWZlOTA1NTM2NDU1NzU2OTYwZjEzOGIuLjhiM2RjMzIzOTY4YjU1NDlhOTE5NmZjYWM1MTM4NTFj
MGFiYmVkMWQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MNURvY3VtZW50UGFyc2VyLmgK
KysrIGIvV2ViQ29yZS9odG1sL0hUTUw1RG9jdW1lbnRQYXJzZXIuaApAQCAtMTk4LDkgKzE5OCwx
MiBAQCBwcml2YXRlOgogICAgIE93blB0cjxIVE1MNVNjcmlwdFJ1bm5lcj4gbV9zY3JpcHRSdW5u
ZXI7CiAgICAgT3duUHRyPEhUTUw1VHJlZUJ1aWxkZXI+IG1fdHJlZUNvbnN0cnVjdG9yOwogICAg
IE93blB0cjxIVE1MNVByZWxvYWRTY2FubmVyPiBtX3ByZWxvYWRTY2FubmVyOworCiAgICAgYm9v
bCBtX2VuZFdhc0RlbGF5ZWQ7CiAgICAgaW50IG1fd3JpdGVOZXN0aW5nTGV2ZWw7CiAKKyAgICAv
LyBVc2VkIGZvciB5aWVsZGluZyB0aGUgcGFyc2VyIHRvIG1ha2UgV2ViS2l0IGFwcGxpY2F0aW9u
cyBtb3JlIHJlc3BvbnNpdmUuCisgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGEgc2VwYXJhdGUg
Y2xhc3MsIHVzZWQgYnkgSFRNTDVEb2N1bWVudFBhcnNlci4KICAgICBkb3VibGUgbV9wYXJzZXJU
aW1lTGltaXQ7CiAgICAgaW50IG1fcGFyc2VyQ2h1bmtTaXplOwogICAgIFRpbWVyPEhUTUw1RG9j
dW1lbnRQYXJzZXI+IG1fY29udGludWVOZXh0Q2h1bmtUaW1lcjsKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvaHRtbC9IVE1MNVNjcmlwdFJ1bm5lci5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTDVTY3JpcHRS
dW5uZXIuY3BwCmluZGV4IGFlZjVjZTQ1MWQ0NmQ5ZWI1N2Y5YTQwZmRkM2FjNWFlY2VlM2FlZWYu
LjQwZjQ0NjU0NDBlMGU4Njk3ZGNjNzI4MzAwNTBkMWY2NWVkODY2NjggMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvaHRtbC9IVE1MNVNjcmlwdFJ1bm5lci5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUw1
U2NyaXB0UnVubmVyLmNwcApAQCAtNTQsNyArNTQsNyBAQCBIVE1MNVNjcmlwdFJ1bm5lcjo6SFRN
TDVTY3JpcHRSdW5uZXIoRG9jdW1lbnQqIGRvY3VtZW50LCBIVE1MNVNjcmlwdFJ1bm5lckhvc3Qq
CiBIVE1MNVNjcmlwdFJ1bm5lcjo6fkhUTUw1U2NyaXB0UnVubmVyKCkKIHsKICAgICAvLyBGSVhN
RTogU2hvdWxkIHdlIGJlIHBhc3NlZCBhICJkb25lIGxvYWRpbmcvcGFyc2luZyIgY2FsbGJhY2sg
c29vbmVyIHRoYW4gZGVzdHJ1Y3Rpb24/Ci0gICAgaWYgKG1fcGFyc2luZ0Jsb2NraW5nU2NyaXB0
LmNhY2hlZFNjcmlwdCAmJiBtX3BhcnNpbmdCbG9ja2luZ1NjcmlwdC53YXRjaGluZ0ZvckxvYWQp
CisgICAgaWYgKG1fcGFyc2luZ0Jsb2NraW5nU2NyaXB0LmNhY2hlZFNjcmlwdCAmJiBtX3BhcnNp
bmdCbG9ja2luZ1NjcmlwdC53YXRjaGluZ0ZvckxvYWQoKSkKICAgICAgICAgc3RvcFdhdGNoaW5n
Rm9yTG9hZChtX3BhcnNpbmdCbG9ja2luZ1NjcmlwdCk7CiB9CiAKQEAgLTEwNyw3ICsxMDcsNyBA
QCB2b2lkIEhUTUw1U2NyaXB0UnVubmVyOjpleGVjdXRlUGVuZGluZ1NjcmlwdCgpCiAgICAgU2Ny
aXB0U291cmNlQ29kZSBzb3VyY2VDb2RlID0gc291cmNlRnJvbVBlbmRpbmdTY3JpcHQobV9wYXJz
aW5nQmxvY2tpbmdTY3JpcHQsIGVycm9yT2NjdXJyZWQpOwogCiAgICAgLy8gU3RvcCB3YXRjaGlu
ZyBsb2FkcyBiZWZvcmUgZXhlY3V0ZVNjcmlwdCB0byBwcmV2ZW50IHJlY3Vyc2lvbiBpZiB0aGUg
c2NyaXB0IHJlbG9hZHMgaXRzZWxmLgotICAgIGlmIChtX3BhcnNpbmdCbG9ja2luZ1NjcmlwdC5j
YWNoZWRTY3JpcHQgJiYgbV9wYXJzaW5nQmxvY2tpbmdTY3JpcHQud2F0Y2hpbmdGb3JMb2FkKQor
ICAgIGlmIChtX3BhcnNpbmdCbG9ja2luZ1NjcmlwdC5jYWNoZWRTY3JpcHQgJiYgbV9wYXJzaW5n
QmxvY2tpbmdTY3JpcHQud2F0Y2hpbmdGb3JMb2FkKCkpCiAgICAgICAgIHN0b3BXYXRjaGluZ0Zv
ckxvYWQobV9wYXJzaW5nQmxvY2tpbmdTY3JpcHQpOwogCiAgICAgLy8gQ2xlYXIgdGhlIHBlbmRp
bmcgc2NyaXB0IGJlZm9yZSBwb3NzaWJsZSByZW50cmFuY3kgZnJvbSBleGVjdXRlU2NyaXB0KCkK
QEAgLTE0MSwxOCArMTQxLDMwIEBAIHZvaWQgSFRNTDVTY3JpcHRSdW5uZXI6OmV4ZWN1dGVTY3Jp
cHQoRWxlbWVudCogZWxlbWVudCwgY29uc3QgU2NyaXB0U291cmNlQ29kZSYKICAgICBtX2hvc3Qt
PmV4ZWN1dGVTY3JpcHQoc291cmNlQ29kZSk7CiB9CiAKK2Jvb2wgSFRNTDVTY3JpcHRSdW5uZXI6
Omhhc1NjcmlwdHNXYWl0aW5nRm9yTG9hZCgpIGNvbnN0Cit7CisgICAgLy8gV2UncmUgb25seSBh
Y3R1YWxseSB3YWl0aW5nIGZvciBhIGxvYWQuICBUaGlzIGFsbG93cyB1cyB0byBpZ25vcmUgbG9h
ZAorICAgIC8vIGNhbGxiYWNrcyB3aGVuIENhY2hlZFJlc291cmNlOjphZGRDbGllbnQgY2FsbHMg
bm90aWZ5RmluaXNoZWQgYmVjYXVzZQorICAgIC8vIG9mIGEgY2FjaGUgaGl0IChub3QgYmVjYXVz
ZSBvZiBhIGxvYWQgd2Ugd2VyZSBzZXQgdXAgdG8gd2FpdCBmb3IpLgorICAgIHJldHVybiBtX3Bh
cnNpbmdCbG9ja2luZ1NjcmlwdC53YXRjaGluZ0ZvckxvYWRTdGF0ZSA9PSBQZW5kaW5nU2NyaXB0
OjpXYXRjaGluZ0ZvckxvYWQ7Cit9CisKIHZvaWQgSFRNTDVTY3JpcHRSdW5uZXI6OndhdGNoRm9y
TG9hZChQZW5kaW5nU2NyaXB0JiBwZW5kaW5nU2NyaXB0KQogewotICAgIEFTU0VSVCghcGVuZGlu
Z1NjcmlwdC53YXRjaGluZ0ZvckxvYWQpOworICAgIEFTU0VSVCghcGVuZGluZ1NjcmlwdC53YXRj
aGluZ0ZvckxvYWQoKSk7CisgICAgLy8gQ2FjaGVkUmVzb3VyY2U6OmFkZENsaWVudCB3aWxsIGNh
bGwgbm90aWZ5RmluaXNoZWQgaWYgdGhlIGxvYWQgaXMgYWxyZWFkeQorICAgIC8vIGNvbXBsZXRl
LiAgV2Ugc2V0IHdhdGNoaW5nRm9yTG9hZFN0YXRlIHRvIFJlZ2lzdGVyaW5nRm9yV2F0Y2ggc28g
dGhhdCB3ZQorICAgIC8vIGtub3cgdG8gaWdub3JlIGFueSBub3RpZnlGaW5pc2hlZCBjYWxsIGR1
cmluZyBhZGRDbGllbnQuCisgICAgcGVuZGluZ1NjcmlwdC53YXRjaGluZ0ZvckxvYWRTdGF0ZSA9
IFBlbmRpbmdTY3JpcHQ6OlJlZ2lzdGVyaW5nRm9yV2F0Y2g7CiAgICAgbV9ob3N0LT53YXRjaEZv
ckxvYWQocGVuZGluZ1NjcmlwdC5jYWNoZWRTY3JpcHQuZ2V0KCkpOwotICAgIHBlbmRpbmdTY3Jp
cHQud2F0Y2hpbmdGb3JMb2FkID0gdHJ1ZTsKKyAgICBwZW5kaW5nU2NyaXB0LndhdGNoaW5nRm9y
TG9hZFN0YXRlID0gUGVuZGluZ1NjcmlwdDo6V2F0Y2hpbmdGb3JMb2FkOwogfQogCiB2b2lkIEhU
TUw1U2NyaXB0UnVubmVyOjpzdG9wV2F0Y2hpbmdGb3JMb2FkKFBlbmRpbmdTY3JpcHQmIHBlbmRp
bmdTY3JpcHQpCiB7Ci0gICAgQVNTRVJUKHBlbmRpbmdTY3JpcHQud2F0Y2hpbmdGb3JMb2FkKTsK
KyAgICBBU1NFUlQocGVuZGluZ1NjcmlwdC53YXRjaGluZ0ZvckxvYWQoKSk7CiAgICAgbV9ob3N0
LT5zdG9wV2F0Y2hpbmdGb3JMb2FkKHBlbmRpbmdTY3JpcHQuY2FjaGVkU2NyaXB0LmdldCgpKTsK
LSAgICBwZW5kaW5nU2NyaXB0LndhdGNoaW5nRm9yTG9hZCA9IGZhbHNlOworICAgIHBlbmRpbmdT
Y3JpcHQud2F0Y2hpbmdGb3JMb2FkU3RhdGUgPSBQZW5kaW5nU2NyaXB0OjpOb3RXYXRjaGluZ0Zv
ckxvYWQ7CiB9CiAKIC8vIFRoaXMgZnVuY3Rpb24gc2hvdWxkIG1hdGNoIDEwLjIuNS4xMSAiQW4g
ZW5kIHRhZyB3aG9zZSB0YWcgbmFtZSBpcyAnc2NyaXB0JyIKQEAgLTE5MCwxMCArMjAyLDE1IEBA
IGJvb2wgSFRNTDVTY3JpcHRSdW5uZXI6OmV4ZWN1dGVQYXJzaW5nQmxvY2tpbmdTY3JpcHRzKCkK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBIVE1MNVNjcmlwdFJ1bm5lcjo6ZXhlY3V0ZVNj
cmlwdHNXYWl0aW5nRm9yTG9hZChDYWNoZWRSZXNvdXJjZSopCitib29sIEhUTUw1U2NyaXB0UnVu
bmVyOjpleGVjdXRlU2NyaXB0c1dhaXRpbmdGb3JMb2FkKENhY2hlZFJlc291cmNlKiBjYWNoZWRT
Y3JpcHQpCiB7CisgICAgLy8gQ2FsbGVycyBzaG91bGQgY2hlY2sgaGFzU2NyaXB0c1dhaXRpbmdG
b3JMb2FkKCkgYmVmb3JlIGNhbGxpbmcKKyAgICAvLyB0byBwcmV2ZW50IHBhcnNlciBvciBzY3Jp
cHQgcmUtZW50cnkgZHVyaW5nIGR1ZSB0bworICAgIC8vIENhY2hlZFJlc291cmNlOjphZGRDbGll
bnQgY2FsbGluZyBub3RpZnlGaW5pc2hlZCBvbiBjYWNoZS1oaXRzLgorICAgIEFTU0VSVChoYXNT
Y3JpcHRzV2FpdGluZ0ZvckxvYWQoKSk7CiAgICAgQVNTRVJUKCFtX3NjcmlwdE5lc3RpbmdMZXZl
bCk7CiAgICAgQVNTRVJUKGhhdmVQYXJzaW5nQmxvY2tpbmdTY3JpcHQoKSk7CisgICAgQVNTRVJU
X1VOVVNFRChjYWNoZWRTY3JpcHQsIG1fcGFyc2luZ0Jsb2NraW5nU2NyaXB0LmNhY2hlZFNjcmlw
dCA9PSBjYWNoZWRTY3JpcHQpOwogICAgIEFTU0VSVChtX3BhcnNpbmdCbG9ja2luZ1NjcmlwdC5j
YWNoZWRTY3JpcHQtPmlzTG9hZGVkKCkpOwogICAgIHJldHVybiBleGVjdXRlUGFyc2luZ0Jsb2Nr
aW5nU2NyaXB0cygpOwogfQpAQCAtMjAyLDcgKzIxOSw3IEBAIGJvb2wgSFRNTDVTY3JpcHRSdW5u
ZXI6OmV4ZWN1dGVTY3JpcHRzV2FpdGluZ0ZvclN0eWxlc2hlZXRzKCkKIHsKICAgICAvLyBDYWxs
ZXJzIHNob3VsZCBjaGVjayBoYXNTY3JpcHRzV2FpdGluZ0ZvclN0eWxlc2hlZXRzKCkgYmVmb3Jl
IGNhbGxpbmcKICAgICAvLyB0byBwcmV2ZW50IHBhcnNlciBvciBzY3JpcHQgcmUtZW50cnkgZHVy
aW5nIDwvc3R5bGU+IHBhcnNpbmcuCi0gICAgQVNTRVJUKG1faGFzU2NyaXB0c1dhaXRpbmdGb3JT
dHlsZXNoZWV0cyk7CisgICAgQVNTRVJUKGhhc1NjcmlwdHNXYWl0aW5nRm9yU3R5bGVzaGVldHMo
KSk7CiAgICAgQVNTRVJUKCFtX3NjcmlwdE5lc3RpbmdMZXZlbCk7CiAgICAgQVNTRVJUKG1fZG9j
dW1lbnQtPmhhdmVTdHlsZXNoZWV0c0xvYWRlZCgpKTsKICAgICByZXR1cm4gZXhlY3V0ZVBhcnNp
bmdCbG9ja2luZ1NjcmlwdHMoKTsKQEAgLTIyOCwxMSArMjQ1LDE0IEBAIHZvaWQgSFRNTDVTY3Jp
cHRSdW5uZXI6OnJlcXVlc3RTY3JpcHQoRWxlbWVudCogc2NyaXB0KQogICAgIH0KICAgICBtX3Bh
cnNpbmdCbG9ja2luZ1NjcmlwdC5jYWNoZWRTY3JpcHQgPSBjYWNoZWRTY3JpcHQ7CiAKLSAgICAv
LyBXZSBvbmx5IGNhcmUgYWJvdXQgYSBsb2FkIGNhbGxiYWNrIGlmIGNhY2hlZFNjcmlwdCBpcyBu
b3QgYWxyZWFkeQotICAgIC8vIGluIHRoZSBjYWNoZS4gIENhbGxlcnMgd2lsbCBhdHRlbXB0IHRv
IHJ1biB0aGUgbV9wYXJzaW5nQmxvY2tpbmdTY3JpcHQKLSAgICAvLyBpZiBwb3NzaWJsZSBiZWZv
cmUgcmV0dXJuaW5nIGNvbnRyb2wgdG8gdGhlIHBhcnNlci4KLSAgICBpZiAoIW1fcGFyc2luZ0Js
b2NraW5nU2NyaXB0LmNhY2hlZFNjcmlwdC0+aXNMb2FkZWQoKSkKLSAgICAgICAgd2F0Y2hGb3JM
b2FkKG1fcGFyc2luZ0Jsb2NraW5nU2NyaXB0KTsKKyAgICAvLyBBbHdheXMgY2FsbCB3YXRjaEZv
ckxvYWQsIGV2ZW4gaWYgdGhlIHNjcmlwdCBpcyBhbHJlYWR5IGxvYWRlZC4KKyAgICAvLyBDYWNo
ZWRSZXNvdXJjZSBtYXkgcHVyZ2UgaXRzIGRhdGEgaWYgaXQgaGFzIG5vIGNsaWVudHMsIHdoaWNo
IHdvdWxkIGNhdXNlCisgICAgLy8gbGF0ZXIgc2NyaXB0IGV4ZWN1dGlvbiB0byBmYWlsLiAgd2F0
Y2hGb3JMb2FkIHNldHMgbV9wYXJzaW5nQmxvY2tpbmdTY3JpcHQKKyAgICAvLyB0byB0aGUgUmVn
aXN0ZXJpbmdGb3JXYXRjaCBzdGF0ZSBzbyB3ZSBrbm93IHRvIGlnbm9yZSBhbnkKKyAgICAvLyBl
eGVjdXRlU2NyaXB0c1dhaXRpbmdGb3JMb2FkIGNhbGxiYWNrcyBkdXJpbmcgdGhlIHdhdGNoRm9y
TG9hZCBjYWxsLgorICAgIHdhdGNoRm9yTG9hZChtX3BhcnNpbmdCbG9ja2luZ1NjcmlwdCk7Cisg
ICAgLy8gQ2FsbGVycyB3aWxsIGF0dGVtcHQgdG8gcnVuIHRoZSBtX3BhcnNpbmdCbG9ja2luZ1Nj
cmlwdCBpZiBwb3NzaWJsZQorICAgIC8vIGJlZm9yZSByZXR1cm5pbmcgY29udHJvbCB0byB0aGUg
cGFyc2VyLgogfQogCiAvLyBUaGlzIG1ldGhvZCBpcyBtZWFudCB0byBtYXRjaCB0aGUgSFRNTDUg
ZGVmaW5pdGlvbiBvZiAicnVubmluZyBhIHNjcmlwdCIKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRt
bC9IVE1MNVNjcmlwdFJ1bm5lci5oIGIvV2ViQ29yZS9odG1sL0hUTUw1U2NyaXB0UnVubmVyLmgK
aW5kZXggMTllNzBhNmE2NDI1MWQwMzg0Y2Q5ZTlmMjA2YzQzMDAyYjU3OGY3ZC4uMzEwOTcyMDk2
ZmI2YjI4YjI4OTYxMzFlNTQ0Yzk1ZjZiN2U4NTFlZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1s
L0hUTUw1U2NyaXB0UnVubmVyLmgKKysrIGIvV2ViQ29yZS9odG1sL0hUTUw1U2NyaXB0UnVubmVy
LmgKQEAgLTQ4LDggKzQ4LDEwIEBAIHB1YmxpYzoKIAogICAgIC8vIFByb2Nlc3NlcyB0aGUgcGFz
c2VkIGluIHNjcmlwdCBhbmQgYW55IHBlbmRpbmcgc2NyaXB0cyBpZiBwb3NzaWJsZS4KICAgICBi
b29sIGV4ZWN1dGUoUGFzc1JlZlB0cjxFbGVtZW50PiBzY3JpcHRUb1Byb2Nlc3MsIGludCBzY3Jp
cHRTdGFydExpbmUpOwotICAgIC8vIFByb2Nlc3NlcyBhbnkgcGVuZGluZyBzY3JpcHRzLgorCisg
ICAgYm9vbCBoYXNTY3JpcHRzV2FpdGluZ0ZvckxvYWQoKSBjb25zdDsKICAgICBib29sIGV4ZWN1
dGVTY3JpcHRzV2FpdGluZ0ZvckxvYWQoQ2FjaGVkUmVzb3VyY2UqKTsKKwogICAgIGJvb2wgaGFz
U2NyaXB0c1dhaXRpbmdGb3JTdHlsZXNoZWV0cygpIGNvbnN0IHsgcmV0dXJuIG1faGFzU2NyaXB0
c1dhaXRpbmdGb3JTdHlsZXNoZWV0czsgfQogICAgIGJvb2wgZXhlY3V0ZVNjcmlwdHNXYWl0aW5n
Rm9yU3R5bGVzaGVldHMoKTsKIApAQCAtNTcsMTUgKzU5LDI5IEBAIHB1YmxpYzoKIAogcHJpdmF0
ZToKICAgICBzdHJ1Y3QgUGVuZGluZ1NjcmlwdCB7CisgICAgICAgIC8vIFRoaXMgc3RhdGUgY29u
dHJvbHMgd2hldGhlciB3ZSBuZWVkIHRvIGRvIGFueXRoaW5nIHdpdGggdGhpcyBzY3JpcHQKKyAg
ICAgICAgLy8gd2hlbiB3ZSBnZXQgYSBleGVjdXRlU2NyaXB0c1dhaXRpbmdGb3JMb2FkIGNhbGxi
YWNrLgorICAgICAgICAvLyBXZSBpZ25vcmUgY2FsbGJhY2tzIGR1cmluZyBSZWdpc3RlcmluZ0Zv
cldhdGNoLgorICAgICAgICBlbnVtIFdhdGNoaW5nRm9yTG9hZFN0YXRlIHsKKyAgICAgICAgICAg
IE5vdFdhdGNoaW5nRm9yTG9hZCwKKyAgICAgICAgICAgIFJlZ2lzdGVyaW5nRm9yV2F0Y2gsCisg
ICAgICAgICAgICBXYXRjaGluZ0ZvckxvYWQsCisgICAgICAgIH07CisKICAgICAgICAgUGVuZGlu
Z1NjcmlwdCgpCi0gICAgICAgICAgICA6IHdhdGNoaW5nRm9yTG9hZChmYWxzZSkKKyAgICAgICAg
ICAgIDogd2F0Y2hpbmdGb3JMb2FkU3RhdGUoTm90V2F0Y2hpbmdGb3JMb2FkKQogICAgICAgICAg
ICAgLCBzdGFydGluZ0xpbmVOdW1iZXIoMCkKICAgICAgICAgewogICAgICAgICB9CiAKKyAgICAg
ICAgYm9vbCB3YXRjaGluZ0ZvckxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4g
d2F0Y2hpbmdGb3JMb2FkU3RhdGUgIT0gTm90V2F0Y2hpbmdGb3JMb2FkOworICAgICAgICB9CisK
ICAgICAgICAgUmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQ7CiAgICAgICAgIENhY2hlZFJlc291cmNl
SGFuZGxlPENhY2hlZFNjcmlwdD4gY2FjaGVkU2NyaXB0OwotICAgICAgICBib29sIHdhdGNoaW5n
Rm9yTG9hZDsgLy8gRGlkIHdlIHBhc3MgdGhlIGNhY2hlZFNjcmlwdCB0byB0aGUgSFRNTDVTY3Jp
cHRSdW5uZXJIb3N0LgorICAgICAgICBXYXRjaGluZ0ZvckxvYWRTdGF0ZSB3YXRjaGluZ0Zvckxv
YWRTdGF0ZTsKICAgICAgICAgaW50IHN0YXJ0aW5nTGluZU51bWJlcjsgLy8gT25seSB1c2VkIGZv
ciBpbmxpbmUgc2NyaXB0IHRhZ3MuCiAgICAgICAgIC8vIEhUTUw1IGhhcyBhbiBpc1JlYWR5IHBh
cmFtZXRlciwgaG93ZXZlciBpc1JlYWR5IGVuZHMgdXAgZXF1aXZhbGVudCB0bwogICAgICAgICAv
LyBtX2RvY3VtZW50LT5oYXZlU3R5bGVzaGVldHNMb2FkZWQoKSAmJiBjYWNoZWRTY3JpcHQtPmlz
TG9hZGVkKCkKQEAgLTk1LDcgKzExMSw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBXZSBvbmx5IHdh
bnQgc3R5bGVzaGVldCBsb2FkcyB0byB0cmlnZ2VyIHNjcmlwdCBleGVjdXRpb24gaWYgc2NyaXB0
CiAgICAgLy8gZXhlY3V0aW9uIGlzIGN1cnJlbnRseSBzdG9wcGVkIGR1ZSB0byBzdHlsZXNoZWV0
IGxvYWRzLCBvdGhlcndpc2Ugd2UnZAotICAgIC8vIGNhdXNlIG5lc3RlZCBzcmlwdCBleGVjdXRp
b24gd2hlbiBwYXJzaW5nIDxzdHlsZT4gdGFncyBzaW5jZSA8L3N0eWxlPgorICAgIC8vIGNhdXNl
IG5lc3RlZCBzY3JpcHQgZXhlY3V0aW9uIHdoZW4gcGFyc2luZyA8c3R5bGU+IHRhZ3Mgc2luY2Ug
PC9zdHlsZT4KICAgICAvLyB0YWdzIGNhbiBjYXVzZSBEb2N1bWVudCB0byBjYWxsIGV4ZWN1dGVT
Y3JpcHRzV2FpdGluZ0ZvclN0eWxlc2hlZXRzLgogICAgIGJvb2wgbV9oYXNTY3JpcHRzV2FpdGlu
Z0ZvclN0eWxlc2hlZXRzOwogfTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MNVNjcmlw
dFJ1bm5lckhvc3QuaCBiL1dlYkNvcmUvaHRtbC9IVE1MNVNjcmlwdFJ1bm5lckhvc3QuaAppbmRl
eCA5YTc3Mzg1NTUyMzg4OTcxMjdlNGFmZGZiMmE5N2ZhNWQ0NjRkZDA2Li42OGYxMDBlN2ZiNDJk
Y2QzM2UwZWUzOGYxNmE5YjE0NmM2MzMxMTVkIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRN
TDVTY3JpcHRSdW5uZXJIb3N0LmgKKysrIGIvV2ViQ29yZS9odG1sL0hUTUw1U2NyaXB0UnVubmVy
SG9zdC5oCkBAIC0zNiw3ICszNiw3IEBAIGNsYXNzIEhUTUw1U2NyaXB0UnVubmVySG9zdCB7CiBw
dWJsaWM6CiAgICAgdmlydHVhbCB+SFRNTDVTY3JpcHRSdW5uZXJIb3N0KCkgeyB9CiAKLSAgICAv
LyBJbXBsZW1lbnRvcnMgc2hvdWxkIGNhbGwgY2FjaGVkUmVzb3VyY2UtPmFkZENsaWVudCgpIGhl
cmUgb3Igc29vbiBhZnRlci4KKyAgICAvLyBJbXBsZW1lbnRvcnMgbXVzdCBjYWxsIGNhY2hlZFJl
c291cmNlLT5hZGRDbGllbnQoKSBpbW1lZGlhdGVseS4KICAgICB2aXJ0dWFsIHZvaWQgd2F0Y2hG
b3JMb2FkKENhY2hlZFJlc291cmNlKikgPSAwOwogICAgIC8vIEltcGxlbWVudG9ycyBtdXN0IGNh
bGwgY2FjaGVkUmVzb3VyY2UtPnJlbW92ZUNsaWVudCgpIGltbWVkaWF0ZWx5LgogICAgIHZpcnR1
YWwgdm9pZCBzdG9wV2F0Y2hpbmdGb3JMb2FkKENhY2hlZFJlc291cmNlKikgPSAwOwo=
</data>
<flag name="review"
          id="45680"
          type_id="1"
          status="+"
          setter="abarth"
    />
    <flag name="commit-queue"
          id="45681"
          type_id="3"
          status="+"
          setter="abarth"
    />
          </attachment>
      

    </bug>

</bugzilla>