<?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>23846</bug_id>
          
          <creation_ts>2009-02-09 06:51:49 -0800</creation_ts>
          <short_desc>[GTK]Enable DNS prefetching</short_desc>
          <delta_ts>2009-12-04 02:19:46 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKitGTK</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Xan Lopez">xan.lopez</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>bugzilla</cc>
    
    <cc>danw</cc>
    
    <cc>eric</cc>
    
    <cc>jmillan</cc>
    
    <cc>laszlo.gombos</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>108969</commentid>
    <comment_count>0</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2009-02-09 06:51:49 -0800</bug_when>
    <thetext>Trivial patch. Brian Dash suggested that we should gather some statistics to see if doing this is a real win and/or outweights the performance penalty.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>108970</commentid>
    <comment_count>1</comment_count>
      <attachid>27483</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2009-02-09 06:53:54 -0800</bug_when>
    <thetext>Created attachment 27483
DNS prefetching</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>108971</commentid>
    <comment_count>2</comment_count>
    <who name="Dan Winship">danw</who>
    <bug_when>2009-02-09 07:12:29 -0800</bug_when>
    <thetext>You can actually just do:

    SoupAddress* address = soup_address_new(hostname.utf8().data(), SOUP_ADDRESS_ANY_PORT);
    soup_address_resolve_async(address, 0, 0, 0, 0);
    g_object_unref(address);

resolve_async() refs the addr when starting the op, and will unref it at the end, and it deals with a NULL callback.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>114296</commentid>
    <comment_count>3</comment_count>
    <who name="Collin Jackson">collinj</who>
    <bug_when>2009-03-19 02:16:17 -0700</bug_when>
    <thetext>I think prefetchDNS gets called a lot with an empty hostname when you move your mouse over non-hyperlink DOM elements:

void Chrome::mouseDidMoveOverElement(const HitTestResult&amp; result, unsigned modifierFlags)
312	{
313	    if (result.innerNode()) {
314	        Document* document = result.innerNode()-&gt;document();
315	        if (document &amp;&amp; document-&gt;isDNSPrefetchEnabled())
316	            prefetchDNS(result.absoluteLinkURL().host());
317	    }

For performance it might make sense to check hostname and see if it&apos;s empty or not before forwarding it on to the network stack.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>154360</commentid>
    <comment_count>4</comment_count>
      <attachid>41108</attachid>
    <who name="José Millán Soto">jmillan</who>
    <bug_when>2009-10-13 09:40:14 -0700</bug_when>
    <thetext>Created attachment 41108
Results of some tests used to know if prefetching is worth it.

ODS file containing the results to some tests done to see if DNS prefetching is worth it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>154362</commentid>
    <comment_count>5</comment_count>
      <attachid>41109</attachid>
    <who name="José Millán Soto">jmillan</who>
    <bug_when>2009-10-13 09:43:20 -0700</bug_when>
    <thetext>Created attachment 41109
DNS prefetch patch

Patch based in previous one (submitted by Xan Lopez), with modifications suggested in comment #2 and comment #3.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>154366</commentid>
    <comment_count>6</comment_count>
    <who name="Dan Winship">danw</who>
    <bug_when>2009-10-13 09:58:27 -0700</bug_when>
    <thetext>Ah, Xan and I were talking about this yesterday.

One tricky bit; SoupAddress no longer caches DNS results itself, so what you are testing here is not &quot;libsoup has to do DNS&quot; vs &quot;libsoup does not have to do DNS&quot;, but rather &quot;libsoup has to do DNS and the upstream caching DNS server has to query the net for the answer&quot; vs &quot;libsoup has to do DNS and the upstream caching DNS server already has the answer cached&quot;.

SoupSession does cache SoupAddresses, so if you could change prefetchDNS() to resolve the session&apos;s SoupAddress for that hostname rather than creating its own, then that would probably improve the results a bit more. There&apos;s no way to do that currently though; this would require some new libsoup API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>154512</commentid>
    <comment_count>7</comment_count>
      <attachid>41109</attachid>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2009-10-13 18:48:53 -0700</bug_when>
    <thetext>Comment on attachment 41109
DNS prefetch patch


&gt;          Reviewed by Simon Hausmann.
&gt; Index: WebCore/page/Chrome.cpp
&gt; ===================================================================
&gt; --- WebCore/page/Chrome.cpp	(revision 49502)
&gt; +++ WebCore/page/Chrome.cpp	(working copy)
&gt; @@ -311,8 +311,11 @@ void Chrome::mouseDidMoveOverElement(con
&gt;  {
&gt;      if (result.innerNode()) {
&gt;          Document* document = result.innerNode()-&gt;document();
&gt; -        if (document &amp;&amp; document-&gt;isDNSPrefetchEnabled())
&gt; -            prefetchDNS(result.absoluteLinkURL().host());
&gt; +        if (document &amp;&amp; document-&gt;isDNSPrefetchEnabled()) {
&gt; +            String host = result.absoluteLinkURL().host();
&gt; +            if (!host.isEmpty())
&gt; +                prefetchDNS(host);
&gt; +        }
&gt;      }

If you move the check from prefetchDNS to here you will have to update the existing prefetchDNS implementations too to not make them check the string twice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>155576</commentid>
    <comment_count>8</comment_count>
      <attachid>41109</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-10-18 23:06:13 -0700</bug_when>
    <thetext>Comment on attachment 41109
DNS prefetch patch

I&apos;m not sure adding the null check to Chrome::mouseDidMoveOverElement is the right thing to do.  In Chrome, these events are queued to a background thread to avoid adding latency to mouseover and to history queries.  The null check and a bunch of other prioritization process is done on the background thread.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>156909</commentid>
    <comment_count>9</comment_count>
      <attachid>41664</attachid>
    <who name="José Millán Soto">jmillan</who>
    <bug_when>2009-10-22 09:46:02 -0700</bug_when>
    <thetext>Created attachment 41664
DNS Prefetch patch

This version of the patch checks that a minute has pased since the last time a host was prefetched before resolving it again, and moves the check if hostname is empty to DNSPrefetch function.
It also includes commented code of the implementation of PrefetchDNS to use if soup_session_prepare_for_uri is implemented (See https://bugzilla.gnome.org/show_bug.cgi?id=598948)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>156934</commentid>
    <comment_count>10</comment_count>
      <attachid>41664</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-10-22 10:54:17 -0700</bug_when>
    <thetext>Comment on attachment 41664
DNS Prefetch patch

There are several style problems here.  Did you try running check-webkit-style?

Two here:
+static bool checkPrefetched(const String &amp;hostname) {

Two more here:
+    if (hostname.isEmpty()) return;
+    if (checkPrefetched(hostname)) return;

Here:
+    /*
+        This may work while soup_session_prepare_for_uri is not avaliable
+    */

no wrapping rules in webkit:
+    SoupAddress* address = soup_address_new(hostname.utf8().data(),
+                            SOUP_ADDRESS_ANY_PORT);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>156935</commentid>
    <comment_count>11</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-10-22 10:54:39 -0700</bug_when>
    <thetext>http://webkit.org/coding/coding-style.html is the style guide.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>157158</commentid>
    <comment_count>12</comment_count>
      <attachid>41724</attachid>
    <who name="José Millán Soto">jmillan</who>
    <bug_when>2009-10-23 07:37:16 -0700</bug_when>
    <thetext>Created attachment 41724
DNS prefetch patch

This patch is like the previous one, but it complies with WebKit coding style.

I&apos;m really sorry for not having checked the style in the previous one :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>157161</commentid>
    <comment_count>13</comment_count>
      <attachid>41725</attachid>
    <who name="José Millán Soto">jmillan</who>
    <bug_when>2009-10-23 07:48:31 -0700</bug_when>
    <thetext>Created attachment 41725
DNS prefetch patch

DNS prefetch patch

This patch is like the previous one, but it complies with WebKit coding style.

I&apos;m really sorry for not having checked the style in the previous one :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>157601</commentid>
    <comment_count>14</comment_count>
      <attachid>41725</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2009-10-25 11:14:50 -0700</bug_when>
    <thetext>Comment on attachment 41725
DNS prefetch patch

&gt; +static bool checkPrefetched(const String&amp; hostname)
&gt; +{
&gt; +    static HashMap&lt;String, double&gt; lastTimePrefetched;
&gt; +    const double ttl = 60;

I would make this a #define. Any reason why you prefer to use a const variable?

&gt; +    /*
&gt; +    soup_session_prepare_for_uri not yet avaliable:
&gt; +        https://bugzilla.gnome.org/show_bug.cgi?id=598948
&gt; +
&gt; +    String uri = &quot;http://&quot;+hostname;
&gt; +    SoupURI* soupUri = soup_uri_new(uri.utf8().data());
&gt; +    soup_session_prepare_for_uri(ResourceHandle::defaultSession(), soupUri);
&gt; +    soup_uri_free(soupUri);
&gt; +    */

We don&apos;t usually keep dead code. I would prefer just mentioning the bug report here.

&gt; +    // This may work while soup_session_prepare_for_uri is not avaliable
&gt; +    SoupAddress* address = soup_address_new(hostname.utf8().data(),
&gt; +        SOUP_ADDRESS_ANY_PORT);

No need to break this line, it is not too long by WebKit standards.

&gt; +    soup_address_resolve_async(address, 0, 0, 0, 0);
&gt; +    g_object_unref(address);

According to my understanding of what was said in #webkit-gtk by danw recently, on newer libsoup versions this would have no effect. Here&apos;s the relevant discussion:

Oct 22 14:11:12 &lt;danw&gt;  xan: pre-GResolver, there was a one hour cache underneath SoupAddress, so if you did soup_address_new(&quot;google.com&quot;), then that might al
ready be resolved. Post-GResolver, that caching layer is gone. However, SoupSession still caches *specific SoupAddresses*. So if you do your own soup_address_n
ew(&quot;google.com&quot;), then you&apos;re going to have to go to the network to resolve it. But if you queue a request for &quot;google.com&quot;, SoupSessino probably
Oct 22 14:11:12 &lt;danw&gt;   already has an already-resolved SoupAddress to use

We may want to have this for older soup versions, but then again, it may be better to queue a NO-OP request? r- for now, for the above. Thanks for working on this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>157604</commentid>
    <comment_count>15</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2009-10-25 12:00:28 -0700</bug_when>
    <thetext>&gt; 
&gt; &gt; +    // This may work while soup_session_prepare_for_uri is not avaliable
&gt; &gt; +    SoupAddress* address = soup_address_new(hostname.utf8().data(),
&gt; &gt; +        SOUP_ADDRESS_ANY_PORT);
&gt; 
&gt; No need to break this line, it is not too long by WebKit standards.
&gt; 
&gt; &gt; +    soup_address_resolve_async(address, 0, 0, 0, 0);
&gt; &gt; +    g_object_unref(address);
&gt; 
&gt; According to my understanding of what was said in #webkit-gtk by danw recently,
&gt; on newer libsoup versions this would have no effect. Here&apos;s the relevant
&gt; discussion:
&gt; 
&gt; Oct 22 14:11:12 &lt;danw&gt;  xan: pre-GResolver, there was a one hour cache
&gt; underneath SoupAddress, so if you did soup_address_new(&quot;google.com&quot;), then that
&gt; might al
&gt; ready be resolved. Post-GResolver, that caching layer is gone. However,
&gt; SoupSession still caches *specific SoupAddresses*. So if you do your own
&gt; soup_address_n
&gt; ew(&quot;google.com&quot;), then you&apos;re going to have to go to the network to resolve it.
&gt; But if you queue a request for &quot;google.com&quot;, SoupSessino probably
&gt; Oct 22 14:11:12 &lt;danw&gt;   already has an already-resolved SoupAddress to use
&gt; 
&gt; We may want to have this for older soup versions, but then again, it may be
&gt; better to queue a NO-OP request? r- for now, for the above. Thanks for working
&gt; on this.

Well, he *is* going to the network to resolve it, right? He explicitly calls the function to resolve the host :)

That being said, I&apos;d prefer to get whatever code dan thinks is OK to handle this (like the prepare function mentioned in the comment), and then just use it. I don&apos;t think this is important enough to land workarounds. Also, same thing for the TTL hashtable, I&apos;d rather have soup handle that automatically if possible, otherwise everyone using that API will probably do something similar.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161164</commentid>
    <comment_count>16</comment_count>
    <who name="José Millán Soto">jmillan</who>
    <bug_when>2009-11-06 10:10:48 -0800</bug_when>
    <thetext>(In reply to comment #14)
&gt; (From update of attachment 41725 [details])
&gt; &gt; +static bool checkPrefetched(const String&amp; hostname)
&gt; &gt; +{
&gt; &gt; +    static HashMap&lt;String, double&gt; lastTimePrefetched;
&gt; &gt; +    const double ttl = 60;
&gt; 
&gt; I would make this a #define. Any reason why you prefer to use a const variable?

I did it that way becouse it&apos;s suggested in WebKit coding style.

&gt; &gt; +    /*
&gt; &gt; +    soup_session_prepare_for_uri not yet avaliable:
&gt; &gt; +        https://bugzilla.gnome.org/show_bug.cgi?id=598948
&gt; &gt; +
&gt; &gt; +    String uri = &quot;http://&quot;+hostname;
&gt; &gt; +    SoupURI* soupUri = soup_uri_new(uri.utf8().data());
&gt; &gt; +    soup_session_prepare_for_uri(ResourceHandle::defaultSession(), soupUri);
&gt; &gt; +    soup_uri_free(soupUri);
&gt; &gt; +    */
&gt; 
&gt; We don&apos;t usually keep dead code. I would prefer just mentioning the bug report
&gt; here.

Then I think the best solution is waiting for soup_session_prepare_for_uri to be commited before changing this file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>166150</commentid>
    <comment_count>17</comment_count>
      <attachid>43782</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2009-11-24 10:26:28 -0800</bug_when>
    <thetext>Created attachment 43782
dnsprefetch.diff

OK, this uses the recently landed soup_session_prepare_from_uri. The TTL hash is gone, since that matter is now handled internally by libsoup. It requires libsoup 2.29.3, so I have updated the requirement accordingly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>167352</commentid>
    <comment_count>18</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-11-30 12:37:40 -0800</bug_when>
    <thetext>Attachment 43782 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebCore/platform/network/soup/DNSSoup.cpp:28:  Found other header before a header this file implements. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Done processing WebCore/platform/network/soup/DNSSoup.cpp
Total errors found: 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168054</commentid>
    <comment_count>19</comment_count>
      <attachid>43782</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2009-12-02 10:20:35 -0800</bug_when>
    <thetext>Comment on attachment 43782
dnsprefetch.diff

&gt;  #include &quot;config.h&quot;
&gt; +#include &quot;CString.h&quot;
&gt;  #include &quot;DNS.h&quot;
&gt; -
&gt; -#include &quot;NotImplemented.h&quot;
&gt; +#include &quot;ResourceHandle.h&quot;

As pointed out by the review queue, the CString.h header should be just before ResourceHandle.h, and there should indeed be a blank line between #include &quot;DNS.h&quot; and the CString include.

&gt;  void prefetchDNS(const String&amp; hostname)
&gt;  {
&gt; -    notImplemented();
&gt; +    String uri = &quot;http://&quot;+hostname;
&gt; +    SoupURI* soupUri = soup_uri_new(uri.utf8().data());
&gt; +    soup_session_prepare_for_uri(ResourceHandle::defaultSession(), soupUri);
&gt; +    soup_uri_free(soupUri);
&gt;  }

How about using GOwnPtr here? r=me with whatever you decide in this regard, and with the style problems fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168700</commentid>
    <comment_count>20</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2009-12-04 02:19:46 -0800</bug_when>
    <thetext>I pushed this with the style issues fixed and with a bump in the required libsoup version to 2.29.3, r51689.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>27483</attachid>
            <date>2009-02-09 06:53:54 -0800</date>
            <delta_ts>2009-02-09 06:53:54 -0800</delta_ts>
            <desc>DNS prefetching</desc>
            <filename>0001-2009-02-09-Xan-Lopez-xan-gnome.org.patch</filename>
            <type>text/plain</type>
            <size>2026</size>
            <attacher name="Xan Lopez">xan.lopez</attacher>
            
              <data encoding="base64">RnJvbSA3YTRhMzdiODBlYmFkMmZhODRiMDVlZTJlODFjODNhZjEwMTY1NmU0IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBYYW4gTG9wZXogPHhhbkBnbm9tZS5vcmc+CkRhdGU6IE1vbiwg
OSBGZWIgMjAwOSAxNjo1MzowNSArMDIwMApTdWJqZWN0OiBbUEFUQ0hdIDIwMDktMDItMDkgIFhh
biBMb3BleiAgPHhhbkBnbm9tZS5vcmc+CgogICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgoKICAgICAgICBbR1RLXUVuYWJsZSBETlMgcHJlZmV0Y2hpbmcKICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4NDYKCiAgICAgICAgRW5hYmxlIERO
UyBwcmVmZXRjaGluZy4KCiAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TU291cC5j
cHA6CiAgICAgICAgKFdlYkNvcmU6OnJlc29sdmVkX2NiKToKICAgICAgICAoV2ViQ29yZTo6cHJl
ZmV0Y2hETlMpOgotLS0KIFdlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAg
IHwgICAxMyArKysrKysrKysrKysrCiBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9ETlNT
b3VwLmNwcCB8ICAgMTEgKysrKysrKysrLS0KIDIgZmlsZXMgY2hhbmdlZCwgMjIgaW5zZXJ0aW9u
cygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dl
YkNvcmUvQ2hhbmdlTG9nCmluZGV4IGYwYjZkM2QuLmU3MDAwYzYgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIw
MDktMDItMDkgIFhhbiBMb3BleiAgPHhhbkBnbm9tZS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0dUS11FbmFibGUgRE5TIHByZWZldGNoaW5n
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzg0Ngor
CisgICAgICAgIEVuYWJsZSBETlMgcHJlZmV0Y2hpbmcuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL3NvdXAvRE5TU291cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZXNvbHZlZF9jYik6
CisgICAgICAgIChXZWJDb3JlOjpwcmVmZXRjaEROUyk6CisKIDIwMDktMDItMDggIERhdmlkIEh5
YXR0ICA8aHlhdHRAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBmb3IgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODM5CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvc291cC9ETlNTb3VwLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9z
b3VwL0ROU1NvdXAuY3BwCmluZGV4IDFmZmUxYTAuLmZkYTYxODMgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1NvdXAuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9zb3VwL0ROU1NvdXAuY3BwCkBAIC0yNCwxNSArMjQsMjIgQEAKICAqLwogCiAj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ1N0cmluZy5oIgogI2luY2x1ZGUgIkROUy5o
IgogCi0jaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlIDxsaWJzb3VwL3NvdXAu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitzdGF0aWMgdm9pZCByZXNvbHZlZF9jYihTb3Vw
QWRkcmVzcyogYWRkcmVzcywgZ3VpbnQgc3RhdHVzLCBncG9pbnRlciB1c2VyX2RhdGEpCit7Cisg
ICAgZ19vYmplY3RfdW5yZWYoYWRkcmVzcyk7Cit9CisKIHZvaWQgcHJlZmV0Y2hETlMoY29uc3Qg
U3RyaW5nJiBob3N0bmFtZSkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIFNvdXBBZGRy
ZXNzKiBhZGRyZXNzID0gc291cF9hZGRyZXNzX25ldyhob3N0bmFtZS51dGY4KCkuZGF0YSgpLCBT
T1VQX0FERFJFU1NfQU5ZX1BPUlQpOworICAgIHNvdXBfYWRkcmVzc19yZXNvbHZlX2FzeW5jKGFk
ZHJlc3MsIDAsIDAsIHJlaW50ZXJwcmV0X2Nhc3Q8U291cEFkZHJlc3NDYWxsYmFjaz4ocmVzb2x2
ZWRfY2IpLCAwKTsKIH0KIAogfQotLSAKMS42LjEKCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>41108</attachid>
            <date>2009-10-13 09:40:14 -0700</date>
            <delta_ts>2009-10-13 10:26:42 -0700</delta_ts>
            <desc>Results of some tests used to know if prefetching is worth it.</desc>
            <filename>testresults.ods</filename>
            <type>application/vnd.oasis.opendocument.spreadsheet</type>
            <size>30421</size>
            <attacher name="José Millán Soto">jmillan</attacher>
            
              <data encoding="base64">UEsDBBQAAAAAAHKETTuFbDmKLgAAAC4AAAAIAAAAbWltZXR5cGVhcHBsaWNhdGlvbi92bmQub2Fz
aXMub3BlbmRvY3VtZW50LnNwcmVhZHNoZWV0UEsDBBQACAAIAHKETTsAAAAAAAAAAAAAAAALAAAA
Y29udGVudC54bWztfWtz2zi27ff7K1Q+NVM91aFIgu/MeLqccbo703E6k0en60x1uSAKkhiThIaE
rLg/nN9+AYKyIVl2AAkg3OfernMm3hDFvUQs4rGwsfG3775U5egaNW2B69MTf+ydjFCd42lRz09P
Pn743klPvvv7//kbns2KHD2f4nxVoZo4Oa4J/XdEv123z/mnpyerpn6OYVu0z2tYofY5yZ/jJao3
33ouXv2888VLWnJTSn+9u1j8NkFfiOyX2bVb34UTec/dxeK3pw1cy36ZXUsfqvj1GZb98pe2dGaY
PvVqCUmxg+JLWdRXpycLQpbPXXe9Xo/XwRg3c9fPssztPr0FnN9et1w1ZXfVNHdRiZiz1vXHvru5
tkIEyuJj14qQ6lU1QY30o4EE3qvVZYNaegn9uYyYcjcSv7PFr+u5NLuu5w885nwBG2medRdvUyWY
ylMlmIrfrSBZPFC/qXtBP+z+5+L1Ha+aStYXu3brUeVNsZT+mfxq8fsY41uo7Av8Ze/gAs8LXW4L
V68fvXzdFAQ1wuX5o5fnsMxvnziu9j00ep3v0iscdM0of/sSsQfRPvAF4PKPby9upw/e+teL1+/z
Barg3cXF1y92irolsL57Mg2rhAd/aeQ2aIkbcvtgZvKNL60tcOtlOoO3buiV7bi7g8O+2PkS7+Cy
t9xlX/mvW6YVqNzQ+hZk7x99WaKmYF+EJa059sjxdEZ/KK1QvHwu3GC7TWyqL0fd8ZbQ/XeFzg2c
/H3Tk3Hmtu5twYz2aM4M5siZorxs//433iLdFo+4zZCcnrwuaPPWNTOj97CmvKDNxubSqihvTk/+
DJe4/evOdbzwZLR1a3a9M0c1/WmU3O26aNutK5YFyenrfw2bgvU/J+7j0M7RZ/jL6nFYwjUykG5a
gqqvYXIfeo59OVwRTBuyIne6+9w+4O5/t35Bjv1bZz3sruel7XK5quqTzTfFQmdJGYAaUqB2NMPP
Jw2CV84EUTLQGzLXmzv2l6+LKWtTwRjESV51+AU4j2EDQ2GLx74P1LAFQ2GLxmkUq2ELh3tuXhSp
YYuGwpaOw0wNWjzcq+CFoRq2ZDi6RarY0gGbELU6bR5q3hq83gFGS0RU/CNWuEDFfEG6+VrM2ojH
Aa9aRHt0UlSwdMRvk2aFVHA/0PQdgNsbh3E2GO4HmsWDcKfpYLAfaDEPokni+4PhfqA1PQg3yOKB
cBO4/7XcFFZ0iooaZwnnyNmMtGZwVZKdHyX8IK4XTIt2WcKbHk9/NzavKeq5U+EpvVPZOGRyHyqf
RfeTaec+5Df+yc5Fo96iQ6/ucVDHOaKzGjoa7j+pirobMM/pHafFvCD0U79zvcfb7d2ZbLIXgOed
bF/UC0PCDe+++0h7jR4a8qGy3HyyhA2Tnjrj0SpgX9ptzXEzpb9qgglh08Ia1+hEKC/RrHu7vYCO
HEYtLovp6L+87j/xsmbTCnzlOoKXD10l34Whh0aaf9xH0vm4nb90xNjG1E0e1v37O8HldGvWwT9w
6AwV1g9/zNSbEn3pL1B43g+Nns08768+sf/3KuChKcL/wgqQfSQPzUwUH8lORQulq5piK4sa8Ruo
I3xognIcwg0V2+J3ejUIl2SLaax4Q8P9H96SsPtY4fc8NKnRSsKOLn56TO/w0ARHE851A5fdqIop
Z8w4kUL/NBuW7Khn1V/BVim2Pqejn2jACve9p/wrzDc0/nFDxEd+v/AD9jo+biD2qOPHH7zw+GBZ
zGunxauGLbTOii+b+zZoieDtuJt+BMv2dppxzW6U04lA93UKHC/vfivFDOf0zV7s1PWdv9OTz6uW
FLOb7uWvYDOns4e+W+SSx9N83/3jhnJWakxrtUg/qOOGXH/8BzVAs6VpCKfQUUu8+0/ujdU0jDT7
lL7KC/vP0fDw9f5zfIxSi5vlAtWQIFUxjv6Q48a3D7dMX+nrDQ4VH3UMjhvdHcLYbgx3sv+SfnFD
lFl3rshxiemAsGNt97d98gPDIuJe8m+Dcx9c7e4/mODpzV0QwrJBcNouECJ//xtXi7v/7ZVjDu/7
ooblqEEtxdie9B+J+Dvlmhcvm+Kuo9y6Zb/Itefr3XJ775Brv/zS1uH9L5qenkSbK6b8WfGns+8h
utteG7ze45Itge2go/dz7xftg8sUh01oByxXyCE3S8ZmQn/7nN2Whfgt//4JTX4qyOj8zfsRfcoz
RPLFiKCWbJ7k6JuXX/JyxQIdRywApv3L39z+q/SPHRwPInvwiQUdN3YehdyzAXuezdcr6GB3wQHu
wG49P1hZqVRlve1r6JAqOMTfp4Is8IrcMmMov68q2qJcd8GWj7rUTpxtsL509SVyjxM39MXKYYuO
f5DZpqlhgVyrEp6e4Nnz039vGOKPz+Pkt72oZiWGZPsTtjwf+V4Q+3dgwTNaEhoD+gYfCjUaJ8CL
o+QOavSMliTGoI7Pw9+cf4//ESqADMbA90AW34EMntGSwCadgRRJP6CeoyP/+Ccq9168QEO+FqlC
NXosuCwJ0zus3jNWMtBroQYVgNgPgQiVlRh8LaLutYgUn2cQZOH28wweb2YMvxaB5lb+AsF6ECJn
Sg8+9TIQ+SBKY9p6ZmIF0E8eb5f0EVoFsj+O0yBJI5AFtOEMozvI/jP6SWqQ2HFH7Fjt+SZhFIQU
aJiCJNp+wPQjuw3/0x3HsOWax4gOlAcyIE2jNBEHMrQkHoDg6lBT4IeBiJQVGOR10vFaBaM3jgKQ
iiC9Z6zkjzSOAf/7xjFAeXDgRX4CtsYxrGSgt0JxyAX8JNweIgCDUMfnafdaKD7PxPP8eOt50hKb
r0X4RxzHAOVxTAJCEEReN4xJs0SsAfbRQIxWHHuBOApTP87CzI9AtDU2oB8ZpHbWUVsNLZ24Bn7g
pazhj8HWSIZ9NCzHTUh5e93JdCkLNPr47nU7IphrpGvUoFGLSpRTSKPJzQiOljdkgesR3zc3Wi+K
fDGi325gdwmhd9gIq3g2mmM8Z/I8gk2+QO1Yq7Qa2nlABDVVu/NkZg2uRp+Kq2KJpgUcfcBLx/e8
0XXRFuxjFizejmB97/kwc/Nwulv+0R/QrCjp82FEwExUZVtrKWemuIJFzcrgkoJrRhWmT48sYD3C
dY5G7DP2JKhzzjs2xvjDk+UVfT1gO2pXyyVuu3cDklFB6GPAVyMQeZRFbcF+PvvtFV7RkRy7Hl+j
pitiG/ZvSdMZ7OO8LPIrNH3aT2dfEx7JjWrpb+0+H7ULvK5HRdv9fFJQatw9Lfqsms2T2H5Wn9Bk
9EuB1qOWQLJqu0f26eWLn159uHz989n55T9+vrh49eHDy/Mhnp9Y8vDC3oeuQaE/aWpkVQ98dc2u
C5TaHVtJLBPqumFw0A2PX/3wpRnJ23w69uhba7ZY2PUAdz1f1wVsGv67rmCrCzjopb0P+itkBAO8
zBIwjlj5fGQpcgeG3FT5/W2l3VUkuVsGeK6hWuQlKC2YweOYBx4VNbBu2cAcNa2iGLHvoclM3YoS
3Yz+cdOs2if0HC5gQ+hQ5vWK9kjN6CdWd/9shngcn4qyLGA1er+AV6hlI6zHB5LDPpZPuClpx0yH
fa9eDfE0fkQNRk+JF29gsyJ4iJ/+se46m/d07POknsCrmvaFQzyA10VJmXZTPyX+n9MOcdGySQ7w
vGyIp/A9bBq4GH0P1zkig0WYSLXb+QKicvRPmF+1WE19O/BZvMN0eEJGbyGhbfPXfA77NF7D6c3o
B/jDIG+G0Ao/oUfwU1O0BNW0xUJr2nse/SDuY+ObG6TaKDrQqhEZXeDrAo3OIb3X15Y6hn1Y7/Nm
NXm8Wdf10iwKWNeP83LgMSYdBBc1JHQU/B6W110urQF7VDaYm+LqKT2QdVGyMOlB2g5I8kWFnlLb
+SPTy4b47bT3ni4xLp/Qbz+b0N6dDvdfFzWddht5Dfav53u+EH3FrCf0UJjkMgQfXsCGDl5GP09g
9ZTax/flqpri+eiCTQVxDQvFtYQDn8Y/YA2nJp7DXglIUYt4PnrHViDmaLPU8j0sy6+0Ypqey9kU
l7PRjwUp0eMKwMDjbzSH9eh7/GWIZ8CE0xd07lM+qanoP+FScdn/wJ//q3NBB7Y/N8Wczjuejz7h
8hrRK57SgPJsRUtgOczU/D2hc48PDbpSfAByiyi3QZhG1lDCQ/c9PXLPr++l6rZxyt8wNgBSZrXh
QK/Hi/9yK4rn3eKzBolfbr/Zx3evNfiSXCxlq6IEj+hgbfoNHQ/nB+1dO8j1zqa54/0CT3I1jq0I
d7EpsB1Ncc0WgxkMqS1chzWv4YHNa43W7ZiHwIzzr0weD7l/n697x01nf/ef0z8BIA6GvgW04M+w
Wv4Vo9PuQIfOWFWnfvdHIZYuylNUd3+h4vTi6vrt+2vH+TH9z0/hvybkC/nhxdm6+7SFp7/yexan
zO3l/OgfuXfmkXhx4gkRk9w+hHRb8WOvvv/m9cvvP3zz7/EL8Ntfo7+c/vk/K0z+2jGa//lX/k9v
/Hv8D/DbX+RDzTTAHjxqhaWmJwJvKqaGmaTvgw5dM1zyoywMt3Zb8AKdbAok2RSosEkLcCt8Kqrp
xDSFNj5cwiZdLiG+F0VBnBliUeBlfiIE53JbJ4dCSQ6FKhzSAHtwBqF6vN7E07DDKEyxaNePyyyX
L+pf8kX9S6YDP7v8Z6MYySP9iseJHwh7Ubitk1WRJKsipZbpeNh6Y4VkBmd4gko6G/wdmeTUthdu
XnZ269IZVI7cEq4aNpVqXT+LQ/eKZYOeFHi8INXjmvPBJANpABJhpwy3dZIsliRZrEIyDbAHb7pa
WrO0N2LRq+24XvPcZiZ7wgcduu0S5QUs3aq8MjWwCryU9rhCM8ALdDIrkWRWotR86QBuZWA1meS0
cserxzW1I0dWt05cOvcmuLlx1yyWYA2bln5O1tgYn7LE36oVZutkUyrJplSNTUfDtsKlTaU6YFwj
tWVlRUJtezI1QA+TIBbm3tzWyZ5Mkj2Z0gD9eNgHs+dQnauouuB280rXPUd9CVe7uginbz/B5ttX
rxS0LqZweddv3+Nm8dP054vPZ7OfFs2P/h6Fq3N2ybZvmRr9x8BLxWE0s3VS1vckOUsvVBr/Hw18
8Cav7oJyx9fF70a12S0vpjrKDGRJ6AnPnxdoZY4vyxxfiTk6oFvpLnGNKljPoWldS/Tj8khyQzQK
PS8Q95tzWyuJZFV2X0lm1wB8cPmBVW0OG4JxTcdAdER0ZZpI97255PqS7bJs+2bKLeop+mJQeUiC
EATCfntua2WYrPLuK0nvGoBbaaRuR0pj1RVwNW6Jfkx1cul20hRua+WOrOLuK0nuGoDbWbSp8wZN
2ennRW1YeX/AnSEmxXHiecIEndtamSSrsvtKMrsG4IPPDa+LKcIDTA13/fACvlubTw+7PWhq88I3
L+m8sPnp1T/J73ReiP41X/4Y75kXdq4ueVqPS1OtXxwmW40Is7VyVla095VUew3Ahx+b5ZOWXBsd
j916cNuSsoePwtj2wDG9E5o0BbkZT7t9g2PgjTPP873U4MAsjEEChNzI3NZKL1nl3leS7jUAH37l
kcVrQVwajwnrfbhsBTsvkcsJ5RS1w5jmLBeYYGfOYuKbGzeMo8BXFJvkO64gBp7YcTFbK71kpXxf
ScvXAPxgekXHiBNNCesp7f5qUtTIKNMecOcitp2SwKJmSe7d2apuyWo2c+mlTo25p56PlIxpx8hn
3rOEKYdZMu642VPT0Co4SEI/FZOT8gKtrJRdIvCV1gi0QLcyp6j4/u/PfPu3aVre92ZqrcmPQSxs
jeO2TiYBWeEeKAn3GoDb4dHnGazzcjUxvVS55cgQe0AYAFG+5LZW9siK90BJvNcA/Am0QmVxbTy+
eb9HQ3zKAi9IhZea21r5JB0tr6TjawBuhU8lnN7MofmlINGPKZXVp4MxX5yv8wKt7JHV6IFaeLwO
6Hbao5t2Cc3GBe64cTdUMjTfC+NEzKvMba0cktXqgZJWrwG4lZXEyrBcdefCrVZtkXeSQks6Gl0y
HvUF48/mNKogDtJMCDLhtlZSycr2QEm21wDcSrN0xXMztTw1k+mR9n1vpro4kCbBVj/BC7QySVZM
B2piug7odrjU1yudTZleSNxxZW4XIQjFnVR9gVYWyWrmQC3cXQd0ay2Ss2khTNNox5chHiUJCFNh
TZfbWlkkK40DJWlcA/DBOQQn+XiOTY6U7jy4fE2vVc/ZJz9fTqPQFxa/uK2VO7ICNlASsDUAt9L+
8Mp0zA+2txyZkomiLIqFtS1u62RPICtaB0qitQbgdrIqGKfNJqSgY0/XALlB7Aduu6oq2NwYDCDw
QZYAsTvoC7TSSVbFDtRC0HVAH5xQ5DYfartJhzqmQ5UaNZMGtyaJ9nXPpuL2kjTIhFVPbmtlmKyu
HSjp2hqAW1GVGkzojJzgilY2Msqp/d7cSiDb5S3bDNEr8qKtuTW3tdJLOi2MkvCtAbgVerW4vlkW
OVk1bK+6WXVp15fbZRlq9zVmhuiVeiAQNzpxWyu9ZDXxQEkT1wDczmCdoOUC1QWq0A1qjI/Y73lz
SZ+h2+CwK/NAJq5XcFsrqWQ18UBJE9cA3M4Yvq9TskDDJEbb48+UEhUDIO5T4bZWLsmq4oGSKq4B
uJX+D1bwd/NBcHde3M2RAc57OIfOC4yvHN+dLl0v8GPPj9JQseWQHqAkIPCFHoTbWpklq5QHSkq5
BuBWWqkZ/mKaVr0Ld8HOYTDVIoHYD4V1Cm5r5Y2sNh6oaePHA7fCm64yx3N8bZI5t06Mre+CLI2E
MLK+QCtvZHXxQEkX1wLdTvKgRUHQIPTZ9mSKQ2GwLdn0BTo5FMqq46FaLhYd0IdPlJdnIR2qoLaE
E5MM2vXjfvj54zsXlvwkHZMCeZxGyVa18AKtjJIVyEM1gVwH9MEZtcAVGkNiNG5J9OH+T/O5xg3B
tdufy5QkJnds+n6UiRsfO1srm2TF8FAtWcvxwIdvnRZ4zY5dZvVc1EbFyj2u3DWauDlLEltcI9d8
UxVmrMMQaqiztVJLVggPlYRwDcDtDJ6GyG59z5GxHQQgCcVccJ2tlT3SmdHV8rQcD9wae0zP9jc+
jC29Bak4X+a2Vs7IytihkoytAfjwnGF1uZqsarIyRpuW8WbbjynqRGGydaJBX6CVPLK6dch06w2S
3Yp9KtXPxTueGYevT5mXCne8uS0/rbK6O6zSFD2yKImF0Sa3tZJDVnoO1aTn44HbWXW9V7ObdSvD
WcofdWxq338Qp2L2GW5rZZesQB0qCdQagNvJa9Lm0PhS/q0Tt/urZq0W7c3qGjWt+92yPp0iAouy
y/5V46qoETrtj9/9E/CEA3ip5dD/f4FaQv95y8NP6F9v+JcMzd5AGIeCWMNtrZyUFb9DJfFbA3Dr
h6XN6f2GPCtt48/Y5pQg9rb2eDBbJ5ciWRE8UhLBNQAfnEs8Im18AxfY6BaVXT+8wPVTL8vCIAyA
SxlWfO3c6oM5FQdp4ItbrDtbK6dkZfBISQbXANxKmAlrI/oaNR7Du+vLZQWu2GI5DT+S3cEzhywo
7bwUKPZOshUGIt8LxDF0X6CVa7IieaQkkmuBbieXBTthvoUDRKBsezKlZnqpF23tuOYFWjkkq4ZH
avlQdEAfvhdkteqwSjW4yLLlxNRulcBP/VTsLpitlTeyOniklgPleOD2Wh5ap1Pa/dwM0viIzozp
V77vCQFB3NbKIukTQdWU8eOBW2HR55qwNOLjz0uT9LnzYmpzb5aEvphKrbO18kZWFI+Ugrk1ALfD
G7ikXcp8VUyNCwA7royFwKWJl4ixiLxAK4dktfNILcGJDujDswhNnK5qjUYBiE7cq2LasuASUwzK
vGwr9z8v0MogWX08UjvDUwd0K+0QXNFSWBbGk1FuOTI1ho6i1BMll87Wyh9ZLTtS0rI1ALfLnkE2
t933ZmrvbZJ6Yhp/buvkUSyrY8dKOrYG4HZOtqPNgqko7nZznh334ZbFpIHNjbtcTcoi77Zwty5Z
IKc7ZtiZwZxMML5y5wi3LmxN7sb1/XRrU2tna6WZrLQd+5YjUXhBvaomqHFyXK6qmmm/SwQJmtLp
4YlWd+5hdPqEm5aMWLjtIZUkwsqRn57sq7yLs1+/Yfmxnqu++joDmxSQnlOk52pIn55YfSAd2EK9
YTa8enMYG/RF1SrgPIALTy2I9kAmXCCoeF6mwsM9++Xlu7MfXh5GhDTNoigae2mYhFESC/ES/JMB
UB9ACzr4pY3CGERpDLxY6CL5BxYHxvb7qfvfPUczuCrJ3sf7cBc2+qZF+V801H+2t/7ZoCL4zfW9
7j+Ffmx8ryN7RksO0pEkgZ4fBBSM7/Vjz2iJxTm/frbc9nADkCU8oA688W4H4j1jJUbJYg3oEycL
6wQH4El00OPnvd2ebtB7Rj86KEZNmjAHIu66uvtdIAXsDbeZdrvDo9eJvV0chXFsv5c80J1YsnXT
zf06l28bNEMkX9w+ChEPgf6meElfBkIrE5Yt2sXYIdrHGhxuvj7lL1r3e5x9b+Du+/rwPaOv3pOy
NVG4YWwApH/ytVoDh3pVEqj2vsqRVHt3jitY6Bj2x1LuPr57rcGX3E/7UFT0LcAj2jJNv1lpatLl
XL/8kperKS0adXrV8X7B/lb33k9eFO2IsPHOGrajKa7RaNUyGMu+AXgUyWGN2aGHpHen9R56Rvre
Z+RLPSPxsGDh6HRm8zPTL4oS3Xz7j5tm1SqcnL4oT1G9OUP9w8fg7fvVh1+/jz69+XyGXjrLOthz
hjrzeTlv8MrUSpIPYmEOwm2d0qz0kXhq60hHw7Z0wiLlTc5oY4PP9xEY2x8RRZmYebCzdbJKOmOw
2u6Io2EPzipUH5Mm4XhO7frvtje7Xft42bWPhmIooiT0IkFP7WydDJNOpqB2xNDRsC0keYFXqKWj
1QbR1oOM0VSxLzqeZHsgmIqsAH4ai0G+na01skI2sEKpPzwetpX+kJ35WyOnLAhqINsFaqtb3AtE
5J2xndJZFgsNAre1Lo3Lroyr7ZM+GvbBfDt0MlFUcI5sTifuAehL+JTiE9sfDatv399xTmFqwSYU
V2xCAbOz8D0I/wXzLP7ROZvfm1BQn4a65CRLAvH0vM7WSWXZqFi1oNjjYQ/edNaT3Mp8mLt1F6jB
yNjALox8cRDeF+jkkWxsrFporA7gVjphS2wSXPeMcq+LKcLmoq5DT4xC6wt0Eks2aFYt+bEO4FaI
VVTTiS1mbXy7pCAlcgnxUj9I/MjUOM73wkDYWcFtndzyZSNpfaUIFA3ArXAr8loCySGnb+nhl+jf
2Fw08gJPnNQxWyunZMNmfbWMEMcD/+NEZx9Jp6Oitlcmo7ajII4DMdNaZ2uln+zagA/+GPkDV+3w
BOr507s2td3aT4AgL3WmVibI6vm+2gmAx8K2wqKyKNfwpkYOF6Vs9XB7YJjq6MIwiAQ1idta+SWr
5vtqKSGOB25nGfKmXcLcGrME9+6GZYbaLS8FkTB14rZWZsnq+b5iAuWjgQ8usHazd4v66q5/XsBT
7HKN9XVRfvuJsU1NWf34Mnj7vgGX560z+3yG4Lr9Md0TqtG5u2yMKWNxmoXi2mFna+Wy7FqBr7RY
oAG4nWzQsGngYgbXOSJkrLqSraep3MVgbHznxaGYlaaztXJLVrz31dJBHw/czlSzPuCASz2U6l27
wPMy9/2PP3968eq/3Q+/uF7sgsjFk4KMe76Z0spiEHjCigu3tZJNVuH31bJDHw/cjsBf29NhN77d
JcLLErlJkrlshwAIEy8xRbAs2jpmkttaCSar9PtKUr8G4IMTrMET1JAlJOxYJnxAkp7jebYHgqnA
xsxPPTFCsLN1MgvIyvxALfHz8cCtNF28ap27uj3gvAQ9Ddl+JKYWK6MMBOlWoGBXoJVpsuI/UDsV
UQd0i1y7rWC76tuDYAwxLswyPxBqjdta+Sa9E0Dt3MTjgds5noyt56xh49ti2BYAUyOxNANAjBPs
bK2skl05AEorBxqA29EsiqYlm5q1xax7IEy1WXGUAGHyz22t7JJdNwBK6wYagFtgVzEui8l4crOy
sQVgx72pcVfKjt0Vg/h4gVZOya4YAKUVAy3QLYWJtTbjxHrnxmaM4daOH25r5ZOsag+UVHsNwO2w
aWKRTBOjXAIgTaNU0If6Aq1sktXpgZJOrwW6FaV+jSa+51kbpN9671JU079dVBM6M4RFXdG/nGrV
FrkD66nDg6cL9mmN6Acsd6wzhRSHcuY+6T4HpLEv7sPuC7QSUlbLB2rh+jqg2wkPgi0Zz+yEBHHX
bkc6992igHVtaDcR8L0kFYO3+gKt1JJV8YGSiq8FupW2rrxpirytYH1ImnRNFNuG4HLbbTjXLrl5
6Ud+YCqUH6RZlgkDH27r5F0gq/EHavlmjwduR3fldbtsIMkXLMzBluS6B4epeSYlcBYI2dn6Aq0s
k9X3AzV9Xwd0OzODesaWoOloyNr8YAuBWyyhe+ax4+eS1GAgfxgnmZgcgNtaqSYr7Qdq0v7xwK0Q
bVo0KCcsHN/SWuUWAFNnRwA/icQ0y52tlVXSSX6UpH0NwK2w6rpoCzJpCjb1s9WA7WIwdUobSINI
mJtxWyu3ZIX9QEnY1wB8+IE/G+5UqOaHzaxhU6Nm0mA7OysfweJOr6duUU/RF4N9ZRqEYShseuO2
VubJyv+BkvyvAbiloAtCUE1wBQm2t5v3Pgq3uiWjqXlmEMZiP8RtrVSTXRkIlFYGNAC3om7ACv6O
rXWdd97dTz2xnLMS1s4Fxg1yp0vXywKPztnp4zRDuDiMwkxYdea2VsLJLh4ESosHGoAPf143bK5R
aYNsd57dVV1co6ZF7jmC0yXGhjrNJI4TMRsYt7USS3YRIFBaBNAA3EqnSeu2yK8tRiduAXCnPbtc
kDlJ7MXGgmLTNBDbgb5AK9FklwQCtRw+OqAfTLXoQKq1yxK2iyWco3FFrm1w7T4Cvm3Ji9j/IZZC
vaVNnLNhoNPiEvdLnzmuZ0VToanT3NButkE3NS6nrQMJgfmCFhPsrHFJG0iW+bFdFrWDZ4YayCT0
U2E3L7d18jaUXVII1bYNHA/cTnDtAq+LsmxXzTWlB/B8YG0Bfy8SUwGRPvBSUTDtbK08k11UCJUW
FTQAt7MWj+sprm3yaxuBseWqcOsAV25r5ZXsCkKotIKgAfjw+bbtNlrDtFRREMZi9A23tTJKdvUg
VEspdDxwKy3VBDYwv8ITWFkL7diBYCx8w0/9WIyCYLZWZkkfDaC0dqABuJ0AyUVB0AKvWmQr99k2
AhdOq6Iu6PVd9jx32aC2mKKaXHbUM9VFAj9MBP2d21ppJ7twEKrtGzgeuKXsLDlimRCtbXIS/LtC
02aIXh5IUvGw2L5AK8FklwtCtfQ/OqAPTrEc1nAKx/N8nCtW6fH0En27C1whk1k+Iz/xxByJna2V
VrKLAqFa5p/jgdvRbnnl2hJub72bGtinCa0JoVo6WyufZNcCQqW1AA3AB+cTO8SNVygd7FwjxSbi
eEbt+jeXut/3M+Fd7wu0skpW+A9Vk/cfD93KsL5dwobAnFZxmy8wLmtE7CVfeRCM+8PLdwuW4b9h
faSpsVeQhrE4fmG2TvJFsup9pKTeawBuhXqT7lQQS1S7de4u6BwSNzf9v0V+OSvmKzqZdDnhLuEU
l7Nxa25s5odhmnli28FsrcSTlfMjtT0CxwO3Qry+xpelxeTIuxjcTSIN4DZFi/CMs+8uEtIM9+I4
AGLCMG5r5Z6s5B+pHQ18PHAr8wKyQBMEadVaC4LcRmBKns3SUJy2cVsrr2SF/0hJ+NcA3AqvbvCK
rCbWmjPBPQ+o/e761Il/SC6uXlz88uWlGZIFMYg9YS7Hba0kk10DiJTWADQAt7O6xNsNOLe4N2UX
g7EotMDzxTrqC7SyS/qQYDWpXwd0K/z64lSopmPweVFb6x53MZja+8SOHxXqiNta2SWr80dKOr8G
4HYObapzOEdTW7QS3BuL3vGzMBZfe16glVOyIn+kdjivDuhWWAWXSzunoGw5d0kDCzpbbN0Z/uLe
RrsaCz9MErGyuK2VZrLaf6Sk/WsAboVkLYENaZC1NXDRv6n5YhSFopTEba2cklX+I7UsQMcDt8op
vgXXMrFuQZjqGr008UIxmQkv0MmvWFbcjxXFfQ3Qh98Whyrc3DiwXC6gjaMidv0b41WcJkBMxsoL
tPJKVruP1bR7HdD18ooX1Ktqghonx+WqqlunQUs64UfT05PoRKs79zBmf8JNS0a5cq7FfZz205N9
lX9x9us3LBvdc9W2QmfiUAWk5xTpuQWkT4EOL5BxNrx6cxgbdB3mq4DyACY8rbN7D2TBBYK1sUd7
9svLd2c/vDyMBAnwvSgaB1GUBQB4wjiCfzIA6gNIQfshEERjL40B7ZWyRETNPvl/upO6/91zNIOr
kkgNkO76r9E3Lcr/ooEA2V4CsBFJ8Jvre91/Cl3D+F7f8IyWHBSIIwn03B7QJ86W2+5tALKEB9SB
N/Z2OhDvGSsxShZrQJ84WVgvOABPooMeP+/u9vSD3jP60UHqpTRhDkXMuro9fSBDPNTht+Bku8ej
14ndXRyFcWy/mzzQnViyddPN/TqXb/DbBs0QyRf+yR5EBN4WL+n7QGh9wrJFuyg7TPuIg5PN16f8
Xet+kbPvJdx9ZR++Z/TVe3aKivwNUwMg/ZOv1Rs41KtS1ODetzmSavLOcQULHUN/OXcf370ezNeH
oqLvAR7Rxmn6zUpTqy7n+iVL+DKlRaNO79IgHu5veO/95EXRjggb8qxhO5riGo3WBVngFRmtWgZn
2TcEjyKyEFPYwLplvQ5q2gP1fMUQwn0OTa020mFSEAvh7X2BTo1V+shKpdVGHcAtndR1yNlKahTa
+HAJi3N2CemGZ3FmikUJSyou1EVn6+SQdBZrJQ4dD3twBqF6vC6uiiWaFges/cizaNePyyz3g9A0
XSrmjJOe+QdRKi6dcFsnmaRTT6gldD0a9uDbNWo8QSUdV/+OTFJp2ws3Lzu7delYNEduCVcNG5S2
rp/FoXtF7+JMCmxwxzbIMrCVJ6SztUZEyAZEqMXPHw17+FRMtGZpJ0ToiLcd1+sWr5pDNgbJ8+1B
h267RHkBS7cqTR3oECTAC8XURn2B1jVr2SVrpaB5HcAP5lZ4aAOG1u14jvH8kDBBhRZs201nf/ef
0z8BcAEbUtTfvl6RBWq+/Yl++dt/NrT8z7Ba/hWj048fvnfSzlhVp373RyGWLspTVHd/oeIUeW8/
vr8Gn87b5PXns9ls+QacvTjrPm3h6a/8noUZ4kZJHHhCblVu66StbHCrWgKL42Hb2etx2O5cxc0c
93bhbrZBtvRzssampgNR4NN+SRhY8wKdbJKNYVULYdUB3E6u1r5iHTCuETFJqm1PpvZvJF4gnpvM
bZ38kY1XVQpX1QB78C60qOAcDdGJ3nPUl/CO9BOj1befYPPtq1cK/SftNWes11zGzcv/nE8+/2v2
+cuqiM7nu73maefsskHtytCMAsR+KPRE3NZJWV82BtZXjBY7GvjgTV4NmxXB4+vid6PDvi0vpmYM
IEsjMQS5L9DKHNkoV18pylULdCvdJa5RBev5ARnE1DpL0Y/7pqOTsW1DoR8I8hO3tZJIVsf31YT8
44FbSkHXEIxrOgaiI6IDNg+pEem+N5dcX7YLvG77ZsrUCZURfanFgx47WyuvZLV9X+2EyuOBWzpg
N2/QtKBfK2rDGv8D7oxlK/diIE7VO1srk2SFfV9J2dcAfHAm8cpkZ9eqBlAoDOgFH8a2AGWpF2+l
ve0KtLJGVqn31fJE6IA++GzwupgiPMBkcNcPL2gRbPIFnxC+YuxSmwnOr+hMcLW6OV/+3H4+Q8B5
+8E5W9+bCXauuplgSS4NTQZ9L83EzdB9gVbeyq4D+GoHU+qAPnziuXzSHnK6lkJneevBbUvKID72
YgdpjemdEDvP+WY8RZAs2jHwxpnHzqQ3echuktL2RBjfdLZWgskq9r6SZK8B+PAL5WwBCOIDjqJU
XGTqfbhsWSkvkcsJ5RS1w5jmLBeYYGcOyxI1Ny47MdZX3HUmP+jxwzgUBz3M1kovWQnfV0tBfTxw
OyeAtLT6DQ/2Nz429OLtl9uiZfcvnM0XTgtSo+lY/TTb0oz6Aq3MkhX3fbU01DqgW5lTVkW+gKj8
DPOr9pDDm9VYdt+bKW3CC2JfmJhxWyeTgKzkDpQkdw3AnwCPyuLaeCz0fo/GcnwlINnK9c0LtDJK
VooHagkndEC3w6nPM1jn5WpieuF6y5GxxLxxFIpBoJ2tlT/S0fRKKrwG4HbODoXTmzk0v5Aj+jF3
+BmgA3rhFeYFWtkjq7UDJa1dC3Q7rc9NuzwoT71i23Pnxt1QyQyLMhB44gZcbmvlkKzKDpRUdg3A
rczbDjrUXZE9ve5Urdoi7+ZuLelodMl41BeMP5ubtIXA97c2ynS2VlLJivBASYTXANxKs3TVErSm
9UpHLKY1gR1Xpjq3LIr9rRMyeYFWDskK4kDt6EUd0O2wqKHtAqr7CjY9vr7vzdjhxB5Ikq1DfrsC
rVyS1b6BkvatBbo1LjmbujXdJO34MsUj30uird1UvEArj2RFbqAkcmuBPjiP4CQfz7HJ0dKdB5ev
z7V5s5oo5jiQn/Vk3laIUV+glT+yUjZQk7J1QLeTWbmrUMf8oHvLkcEWKE7S7deYFuhkUCArYQdq
UeM6oNs5I8w4dTZhAh2DuobIDWI/cNtVVcHmxuS25ph2A6kYvMELtBJKVsEOlBRsLdAHJxRBTVXU
kOCmheU1JAWux3TYUqNm0uADTtmRJ9rXPRs7TADE6dYhbrxAK8dkVe5ATeXWAd2KytRgQudWBFe0
wg853FCtAbvvza0Ewl3eMs5c5vcsjMSzT3mBVopJp5RRk8J1QLdzVjWub5ZFTtjpvKa1gl1fbpfn
qt3XqJnaYRoHW+lauK2VYLI6eaCmkx8P3NKRKGi5QHWBKnSDGuOj93veXLIuymK+IAaHX37geVks
HlTPC7TSSlYpD9TC1XVAtzOe7+uVLNAw6fn2+DPUSMVJ5AfCkJjbWtkkq5kHSpq5BuBW+kBYwd/N
B8jdeXE/9GRy3sM5dF5gfOX47nTpeoEfe36UhpkZZiVJ5osDYW5rZZasgh4oKegagFtppWb4i2la
9S7cBV61pk4nBBnlZZKJgUJdgVbmyGrmgZpmrgO6Fe50Fco22plkz60TU3kO4jCJMyHotS/QyhxZ
tTxQUsu1QLfInBLN2WGABI2rerw6fjXkqyzacWgsXNejFSGk2+kLdDIqlFXPQ7VzB3VAt7NNZVEQ
NEiDtO3JhRO8Iu6yQW0xRTVpaUEDF7AqizrHpSmZIEqAF0fCLt6+QCvHZAX1UElQ1wJ9+GyheRbS
ATJqSzgxybBdP+6Hnz++c2HPJpP7NoPAE/Ubbmvlk6x4HiqJ5xqAD86mBa7QGBKjsU+iD/d/ms81
bgiu3decSUlikEuJn4JQPL+ts7VySVYlD5VUcg3A7aRZHCL1+j1HplJGhSAW93xwWyt7pDOtK0ng
GoBbY49pEWDjw1gcb+yBWJgK9QVaWSOrcIdqCrcO6MPzhtXnarKqycoYdVrGnW0/puQjkCVeJmow
vEArfWQl7ZBJ2hskuxX7VKqf63o8MQ5fvjKvIu54c9tyVU3xvCrKssA1LBpT6qKf+UHoicem8wKt
9JDVpUMlXVoLdDsLs/dqd7OsZTg9+aOOzWlGfiSmm+wLtDJMVr8OlfRrLdAPZlh0BMNwm0PjK/63
Ttzur5q1XrRXq2vUtO53y/p0iggsyi4JWI2rokbo9D1n4J+Ad3FHQmo59P/Z4bz0n7c8SoX+9YZ/
ydRYPEj9JBLHtF2BVl7KquOhkjquBbqdyAHhNKs5vd+QB/tt/JlKjZL6aSgswHNbJ5siWWU8UkuN
cjzwwbnEg9fGN3CBje5u2fXDC1w/pSPoMAgD4FKGFSVqDA3eqZtMXAbrC7SySlYLj9SCy3VAt7Le
wtqJvlaNh/3u+nJZgSu2Wk6DrlE9Rw6eOWRBqeelQHG/k3ScYwICIOxw47ZWrsnq5JGSTq4BuJ1U
GGhOKxoOEKiy7cmU1BB6WboV7sELtDJIVh2PlNRxLdCH7wVZrTqsUg0utmw5MZZWDmSR8AJzWytv
ZHXxSEkX1wDcSh+H2v+s6MTLdLMjuHFp5+WwQAKed/qOVk5nm+FVkNHpunhYXV+glVnSx44qaeda
oFvp1T7XhOUZH39emqTWnRdTulWQpkkkLl7wAq3ckRXOI7X8KTqg2+EOXNJWYb6iTYLptmnHlTFV
IMgCQanhtlYOyarrkVrO8OOBD88gNHG6ajUaKyA6ca+KaUtLjOXdAUESC1sb+wKt/JHVziO12G8d
0K20QXBFS2FZGM9wueXIVAx4BOg0RqiGvkArg2RV7kgtBlwHdLsMGmR33H1vxnKnhEksxpD1BTq5
FMtq3LFi7hQN0K3M1HJ+4JMRArWbo+64D7csJg1sbtzlalIWebcXvO3mbd0JxM4M5mSC8ZU7R7h1
YWswzDKMQRL7Qn31BVqpJit8x77dqBX3wZ8mfvcczeCqJCcPX12vqglqnByXq6pmwvISQYKmtKU9
sYhXhqyfcNOSUQ5bxbXg+15z5Kcn+4hxcfbrNyyp1/O+vq3sV1BAek6RnltA+sSZwmIIDBPl1ZvD
iKLvuGoFnAfQ5KmdTq2fJBcIKh7RqPDcz355+e7sh5eHccRPwsBL/LF4pH1fNgDgA8jix2mQpNEY
ZIHvBVv76/gnfxTe/O/uNkfftCj/iwYKZXspxAZJwW+u73X/KfRI43td0jNaoqPvfAjouT2gT5wt
t13nAGQJD6gDb7zbM3nPWIlRstgDKlFj/N+249XDd37KnGM98QB0iw6oRX/M+92trvgZLTNLuMOg
8r52Tyf8jH4yWK6W7Q6TXif2lvvCmZ92F/3ozzEy4pC7QTeS2//tJzR6MvBbxJKtr2xqqrvlG/y2
QTNE8sVtFYoeCfQ3xUvaGBH6TsGyRbuPoKPSPsA42Xx9yn98h9eReSoP3zP66j3pg0oUbpgaAOmf
fO11A4d6VVJO97IokupvznEFCx1zPzl3H9+9HszXh6Ki7wEe0Q5i+s1KU5cq5/rll7xcTWnRqJNR
j/cL9nd+937yomhHhA1b17AdTXGNRuuCLPCKjFYtg7PsGwID46PwQE2/O3N6jvG8NLowtOOms7/7
z+mfALgoSnTz7T9umlVLrW5zDkanHz9876SdsapO/e6PQixdlKeo7v5CxemHj8Hb96sPv34ffXrz
+Qy9dJZ1cLbuPm3h6a/8nsUp83k5b/DKUICOF/tRIkzJ+gKdawTSRz8qJiw+Hril02gpd3JGHfOn
0IqeDC1oJonnx0LQL7d18kc647VaQsajYQ/OHlQPk8lj10+3y97t2rzLrs0z1BYBPxHzY3BbJ5Ok
83ooniJ6LOzh01Ut4BVq6YizQbSVIGM0Pb5/eShj1X1XptIOp1niC680t7UG6cjG6CglHT4etpV+
jJ1rXiOnLAhqINtsbHyr9D6HIr9MJdPzaIWIqnVna42ikA2iUFqpPh72wbw6dGBfVHCOhhja33PU
l/Dh/Se2rR5W376/45bCMJ8N7q/Y4B5mZ+F7EP4L5ln8o3M2vze4pz4NdaVJEgRCm8JtnZSVDZhW
y0ZyPOzBm8J6khudg/LbuwvUYGRq4JVFfpxspZjqCnTyRTZAWi23iA7gVjpPw6wRXPTM6XeMGSJQ
HCVhJk7GeYFOAsnGR6sdKKkDuBUCFdV0YppBGx8uKUiJXEK81A8SPzI1zsqiWGz9ua2TQ75sYLSv
FBitAbgVDkVel+3cuA4l+jGlQqUgE/OvcFsrd2QjnX2l2C8NwP9/SL0YUr8yGVIfRZkHhNAAbmul
maxa7oM/RhrIVWuOKD1PehfG9g/GiSecOc1trXUuq3D7avk4jgduhTFlUa7hTY0cLviY7p32uDN1
eGMEokDYi8dtrUySVbh9tcMbjwduZ6ntpl3C3DiDBDfuhk2G+p80CFNhvsttrQyS1bh9JZFbA/DB
xchuxjyAFrnrhxfwbMZcj3xdlN9+YqxSUyE/vgzevm/A5XnrzD6fIbhuf0z3hBh07i4bY+pSHIJM
6Ia4rZWzsvq5r5YB5HjgdhJvw6aBixlc54gQwwdn7foylQEkCbNQqApua+WQrKDtq2UAOR64neld
bfw40d6FCzwvc9//+POnF6/+2/3wi+vFLohcPCnIuOeVsbQOaRwIZ3JyWyupZFVvX0n21gDcjuhd
m9csNz7cJcLLErlJkrlsIwAIEy8xdtpamPqiKtDZWokkq377SvK3BuCDE6nBE9SQJSSkqFtsNEvR
HlemFlBA6nuZeIw5L9DJISArfgO1MyF1QLfSHPHqde7q1/jREfs9mjonK4kjcbMlt7UySlYSB0qS
uAbgFvl0W7nDqFcPOjXWUvlZlsXi694VaOWVdMS4Wsi4Duh2TmBj6xxr2PjGj2ETHZlaqvMjX5wS
cVsrf2T1dKB4+uPRwO3oAUXTkk3NGj+Ha9eZMS09iYDQSXBbK4tktXSgqKUfDdwCi4pxWUzGk5uV
yVDxHTemerAoSbyt/d28QCt3ZFV0oHYWpA7olsKV2iHilXonxrJZe2nqiVMdXqCVObJaNlDMZq0B
uh3mTAYgzsQob9LYC8Umn9taWSOrXgM19fp44FbU6zWa+J5nfLB866XLZ03/dlFN6GwMFnVF/3Kq
VVvkDqyn/HgGt2Cf1oh+wJLMOlNIXStn2ZN+48PMywIxNpoXaKWdrL4N1MK6dUC3E7oCWzKemQ1X
4S7cjlzuu0UB69rQLhKQAjrB2U4/zgq0UkhW2QZKyrYW6FbarvKmKfK2grX53Ok7rlxuuw3n1CU3
L+ksNzAV8h14SRCJK1mdrZNfgazqHSip3hqA29Eoed0uG0jyBVuyNy1P7vFnahUu9eJU2IfNba1c
ktW7A7WUwscDtzMyr2dsiZWOYIyPz7c8ucUSumee76VekpoM9vYBEM8l47ZWQskK3YGS0K0BuBVC
TYsG5YSFchteh9tyZCpsHKReJC6u9wVa+SOdGkUtcFwHdCsMui7agkyagk3BTDdKu75MLZd4nheK
iWo6WyuLZIXuQEno1gB8+AE4G6bQuTs/BWYN6Wy9mTTY7A65R3y60+upW9RT9MVgPxcHcRgJbzu3
tTJMVg4P1DKnHA/cUqAAIagmuIIEm999ed+bW92SzlyUQJL4Yuw0L9BKKlmlPFBTynVAt6IcwAr+
jo13e3de3E89iZyzEtbOBcYNcqdL18sCD6QZCBQnX9IrqEkWJsJrz22t1JKV0wMlOV0D8OGPx4bN
NSpNkurOg7uqi2vUtMg9R3C6xNjUwViZl8VCPXBbK4FkhfFASRjXANxKh0frtsivB4iG23LkTnsW
uSBzktiLTQlPPkgSQQvktlY6yYrkgVr49/HAD6bTvkz2MpXdLkvYLpZwjsYVuTbJp/ue+FYVL2L/
h1i65pY2V86GZU6LS9wv7eW4nhVNhaZOc0O7xgbd1Lictg4kBOYLWkyws8YlbexYRrt2WdQOnhka
iiXA35qH9QU6+RnKiuyhWmi5Duh2AjYXeF2UZbtqrilFgOcD44vRez2aCi0HUZgKSUu4rZVRslJ7
qBZafjxwO+vKuJ7ieggebXsypY2GSQCEFQ9ua+WPrLIeKinrGoAPn+t3mEZomJbH9/woBmKXwAu0
ckdWVQ+VVHUt0K20PhPYwPwKT+jU33Tzs+PKVP+VhVkWivMoZmvlkHSqcSVNXQNwOwF5i4KgBV61
yHQuqG1PLpxWRV2ws91Z1jB32aC2mKKaXHYUMxZhnobi2QLc1kovWUE9VIwvPxq4pYwXOWIZ4Ixv
bhH8uEJTZUjnjD3PF6bn3NZKI1kJPVSS0DUAH5xGOazhFI7n+Tg/vjofoJDow13gCpkMXsmC1BNj
QDpbK3lkRfJQSSTXANyOxskr17TAeevFVLhB5AEgPH5ua+WNrDYeKmnjGoAPzht2MBOvUDpAuUbH
NwUPMGfXj6lxT5pl/tYMhxdoZY+sFB6qJQLXAd3K0LpdwobAnFZxmy8wLmtEzCeyeNCp+8PLdwuW
LbxhfZsx9Sjzt0UYauskWSSrZ0dKerYG4FYoNulOEjBMqVsn7oLO13Bz0/9b5JezYr6iEzeXE+sS
TnE5G7fmxk5+GHuiysdtrQSTlbcjJXlbA3ArBOtrfFkOkKx115e7SVYA3KZoEZ5xlt1F3ZnhGNt8
K57OxG2tHJOVwCMlCVwDcCvjc7JAEwRp1RoPuNv2ZGznlA/EMye4rZU/sjJ4pCSDawBuhT83eEVW
E+PNk+CGB2l+d33qxD8kF1cvLn758tKQHh5msZgcgNtaySSrh0dqevjxwO2sqPD2Ac4H2Kew68tU
kgMvisSTlLitlUPSx28qid4agFvh0BenQjUdH8+L2niXtuvLVFKnMPRTUTjubK0cklW8IzXF+3jg
dg5nqXM4R1PT9BHcGNslBVJfPEaps7UyR1bujpTkbg3ArTAHLpdmT0XYcuKSBhZ0Vta6M/zFvY2c
NHbgb+SJif+5rZVMshp4pKSBawBuhUwtgQ1pkPH1W9GPKe5EbLVTqILO1sodWQU8UgsGPx64Ve7w
7ZMDEejWmamBkJ+CWOgVuK2TRbGsxB0rSdwagA+/xQlVuLlxYLlcQJPp5Hf9mOJOloaBsBDKba3c
kVWvYyX1WgNwrdxxH3ww4nfP0QyuSnLy8NX1qpqgxslxuarq1mnQks7I0fT0JDixiFeGuJ9w05JR
rpyj7r7XHPnpyT5aXZz9+g3L7vVclS06k5MpID2nSM8tIH3iTHmBjBPl1ZvDiML2b4fiolhnG8Z5
AE004HziJLlAsDb23M9+efnu7IeXh3EkBcBLs7GYWpkXDQD3AKrQMVUUpmM/zsLMj8AWavbJH4U0
/7v7zNE3Lcr/ooFB2V4GsfFV8Jvre91/Ct3RuOt+hO7oGSswiPPcGs4nzpXbXnMAqoQHVIE33u2U
vGesxChX7AGVqDH+b9vx6uE7P2XOsU54ALpFB9Ui73TFbtijLz04SPmQJtyhUFlPu6cLZoiHS8qx
3V/S68TOcl+ShafdQz/6c4wMOORu0I3j9n/7CQ2eDPwWsYRa/VvQLhsEp+0CIXJXOMHTmztrivNV
lwU/xzXLP/b3/wtQSwcI0GWGruY9AABP3wIAUEsDBBQACAAIAHKETTsAAAAAAAAAAAAAAAAKAAAA
c3R5bGVzLnhtbN1ZzY7bNhC+9ykELRAkQGVK3myzdtbeS1r0kC2CpO2dK1EyG0oUSMo/OfZNeu9b
9E36JB1SIq0fy1bSFmnjBdYr8psffjMcDrV39/uceVsiJOXFyo9moe+RIuYJLbKV/9OP3wW3/v36
qzuepjQmy4THVU4KFUh1YER6IFzIZT258itRLDmWVC4LnBO5VPGSl6SwQss2emlM1SNG2VRxA25L
K7JXU4U1tiOLH6dbNuC2dCLwbqqwxgKnbfGUTxXeSxakPIh5XmJFe17sGS3er/yNUuUSod1uN9td
z7jIULRYLJCZdQ7HDldWghlUEiPCiDYmUTSLkMXmROGp/mls26Wiyh+JmEwNVngQ1VIQCRBYrs7L
aYraMp382maTs2ubjdAcb7CYnGcG3E2V62R6qlwnbdkcq81IfG/RA0yaXw+vj3kl8qm2NLZDVSxo
OXmZNbotzzl3rmqBerMbd+dh+BzVzy307ix8J6giogWPz8JjzGLHOM9PkQa4CAEiIFud8hYt9KJH
Nd8gQUoulHMknV7sgJ25s5Kk2JkBpJwZDYEWNLbaGpDeVUiLXPleUzRbhXrur21VTjlU5BTHJEhI
zOT6rt5Nbtirn7WfK/81ha1ptoj3DhdAAKS8heaUHVb+E1xy+bKHqwd9r6Na44OMFERQCIzcUSk7
iJKqGFJ3iwXVtdNH5117RX7BP1fn3Wphprh0kIrkl3xCYzw24/VhZ31PSIor1hyBVnPjozkigpgw
5lv4cSgoBcRXKAoHp1UV0xzDBAOjcuXPjwyVWOBM4HIzlAKNYJyXQUKlwoU+eSEdbuL8KK3PuaGg
Wd9IFqR8yXCRVTiDWVIPxLwqlIBlffvO76sIIHFx0Y+ZwVg9FvJhv7dTjUY7U/CCDDXr+svI/rxu
Bzqh3c0Z/TrAJyK3vqtPqeaw6oSz5uiH0O+BvOYpp0VAC0UykEtoRhXELjKGTuh0OuJKCOitDqdM
ReH1m9CuY8sZhEY3JkpUZMyJYfKcd8/OZoJXpWnvjHbk1OukWXtuDeZx6Pshf+TM6uqmjMW20mb9
56+/O409JesTEx9DmD+W7SZ1GYcG5CpNQ/j0FxmcXuQXx29NT45Lt0GKhNYd1Razijx99iRTL1cu
8XBZsobtoJOY6GKsxndRFN5MTeHnFyge3WG1waHxV/WO98fLNBoXfkvkeVnPlWp3JQq6ds9kqKl3
zc2HKsxobPUZcFUkREDvTixGckaTEciOJrpFxJXiI4hmPxij5m/f+bAjNNtA9wMZk7SK5QVma3Lm
n8ROl1jd/g9y7lxcvidYX0//mcCcOZ0NhRCYrAgkr4Q+Z1PqDhvoCAnWZEKWFkBfipkkF85voPyo
dOXHIAjd7eip7bKEftBn/Del8scy5+8Fs2E0+iRKbTimUCp4fTsLoK5p9xfh0EnU67qaR53ccBOi
cdBtx0rdDTB84JXqrOmhzCP/BGjolL5kwAKCnCcgx0SgHo8x2cDq+nWmGUs5h/D1AqYL16YJQjh7
cRNBW2bGschgipFUT3QHRQPvjj5ypfQdJnS9HRp3qfHlM7gJjegJH7v+oEEUJkRv/iVFT888cpHo
tyLhLLy9jXPPVHTvKjQfgyhxUr94A0h0a8Vw/F73FEViq/hVHOofx08LAcdpRgapMljr/yCX/quM
Xc5sNFqxmokcS6dCHrs0M6g1nWth2nvhRKGr3V/fmRedZfMtN4TU6PX9/f0d6g82I2WPhF7sdRzt
kU0ltGyHwaFXc+Osv/njN4gq9ppn7Xndtq0ja7I1NvDCauvwftYLNKDyErtvm/c6Z8idD8i1DUCm
TzLt0Efy7T2tcYoq1obUz88GRHQsdYbMNupZh36KjLZW0LA5UGDuAHCxCcNFEIVBBDeq6BpFoX7l
tWi80MD11551GLyPbpfXN8vrF87pUxnU9e9zppWH2kBzd1ovFm1gPfYvpR86vefR6X+orP8CUEsH
CA65BHa9BQAAkBkAAFBLAwQUAAAAAAByhE073K4wI4oDAACKAwAACAAAAG1ldGEueG1sPD94bWwg
dmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPG9mZmljZTpkb2N1bWVudC1tZXRhIHht
bG5zOm9mZmljZT0idXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczpvZmZpY2U6
MS4wIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeG1sbnM6ZGM9
Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIiB4bWxuczptZXRhPSJ1cm46b2FzaXM6
bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOm1ldGE6MS4wIiB4bWxuczpvb289Imh0dHA6Ly9v
cGVub2ZmaWNlLm9yZy8yMDA0L29mZmljZSIgb2ZmaWNlOnZlcnNpb249IjEuMiI+PG9mZmljZTpt
ZXRhPjxkYzpkYXRlPjIwMDktMTAtMTNUMTg6MzU6Mzc8L2RjOmRhdGU+PG1ldGE6Z2VuZXJhdG9y
Pk9wZW5PZmZpY2Uub3JnLzMuMCRVbml4IE9wZW5PZmZpY2Uub3JnX3Byb2plY3QvMzAwbTE1JEJ1
aWxkLTkzNzk8L21ldGE6Z2VuZXJhdG9yPjxtZXRhOmVkaXRpbmctZHVyYXRpb24+UFQwMUgwN00x
MVM8L21ldGE6ZWRpdGluZy1kdXJhdGlvbj48bWV0YTplZGl0aW5nLWN5Y2xlcz42PC9tZXRhOmVk
aXRpbmctY3ljbGVzPjxtZXRhOmRvY3VtZW50LXN0YXRpc3RpYyBtZXRhOnRhYmxlLWNvdW50PSI2
IiBtZXRhOmNlbGwtY291bnQ9IjExMzIiIG1ldGE6b2JqZWN0LWNvdW50PSIwIi8+PG1ldGE6dXNl
ci1kZWZpbmVkIG1ldGE6bmFtZT0iSW5mb3JtYWNpw7NuIDEiLz48bWV0YTp1c2VyLWRlZmluZWQg
bWV0YTpuYW1lPSJJbmZvcm1hY2nDs24gMiIvPjxtZXRhOnVzZXItZGVmaW5lZCBtZXRhOm5hbWU9
IkluZm9ybWFjacOzbiAzIi8+PG1ldGE6dXNlci1kZWZpbmVkIG1ldGE6bmFtZT0iSW5mb3JtYWNp
w7NuIDQiLz48L29mZmljZTptZXRhPjwvb2ZmaWNlOmRvY3VtZW50LW1ldGE+UEsDBBQACAAIAHKE
TTsAAAAAAAAAAAAAAAAYAAAAVGh1bWJuYWlscy90aHVtYm5haWwucG5nnXllVBxbty05hODu7u4E
1+BOkCBBGnd3mkYCwYIGJ2hwgjWNO8HdHYJDGneHhkvOffe973z3vvHGePWnalStvdeuVWvNPeeq
L+pq8ugoJChwcHDoigoymi/nMji4V3BIb16uRmTCPsHB0QYoykh+8Mk8ykL0w5u97g+s+YGVLlWg
DP2iAJJhe/duL2hC4wMdHnzkJyrkkiD1wte4tExIU+zr3VIhWFKcmEmbieoIT1RU33FI6ZMcEh7W
vll4WZ/8WlwJweI584P5LTB7O2ckul5nC0Gho0TwkmmvTkArr4JP8VogSgnbHlF1K67071mI1HNf
G1wfeMYN/Q5L06n7OJOtXKXvvA1aodk+uzAnIG+Z37ZsX/GX5x17TAusUN3xopBv508fzcI9uRRr
gQwhzqoZsBEQLNcLP2wkO94W6KIXnoZxH30cb2o5XVDOMVtuzR6CTOc0WA0HKkubwcCL/eTQbtd2
0la/Y/n+83eboR3rR7rINfq3W92fbJFgjmziTdiRw+GECvnZ94QZDQeMM44CBPIJRYsidc4e8PxO
UFvLluhAYn5BcWIIJ6LtfqsZZ1nFVlb4TdDJ1u3XMIfrPkqNijuuzF/Y9mDzGdTRSVqnt3ahKu+U
ul4DD9f7y1W+GiMQ4BqiRZW2xpkriyi7C8+aQhrCqBxvMhozs19FHaUP7JTbMpffWbBe975WlPT8
vBCUiFhgW3+XCcdZG7AjIQQbtLB7oM32V5nXxT8ydAaChd6E9Ji7nuO1ru9EzdZffLnqMAnMJnPI
QYVy9yln9IVyeToYi3UgbNrPaN1TFWBkAOlVrJmW7k4MC3kTlwUbrHjtZ7yZq8G9+WHzHwzi5oq2
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
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>41109</attachid>
            <date>2009-10-13 09:43:20 -0700</date>
            <delta_ts>2009-10-22 09:46:02 -0700</delta_ts>
            <desc>DNS prefetch patch</desc>
            <filename>20091013_prefetch.patch</filename>
            <type>text/plain</type>
            <size>2306</size>
            <attacher name="José Millán Soto">jmillan</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0OTUwMikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjAgQEAKKzIwMDktMTAtMTMgIEpvc8OpIE1pbGzDoW4gU290byAgPGptaWxsYW5A
aWdhbGlhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBbR1RLXUVuYWJsZSBETlMgcHJlZmV0Y2hpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODQ2CisKKyAgICAgICAgQWxzbyBtb2RpZmllZCBD
aHJvbWU6Om1vdXNlRGlkTW92ZU92ZXJFbGVtZW50IHNvIHByZWZldGNoRE5TIGlzIG9ubHkKKyAg
ICAgICAgY2FsbGVkIHdoZW4gaG9zdCBpcyBkZWZpbmVkLiAoU2VlIGNvbW1lbnQgIzMgb24gYnVn
IFVSTCkKKworICAgICAgICAqIHBhZ2UvQ2hyb21lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNo
cm9tZTo6bW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQpOiBQcmV2ZW50IHByZWZldGNoRE5TIGZyb20K
KyAgICAgICAgYmVpbmcgY2FsbGVkIHdpdGggZW1wdHkgaG9zdC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL3NvdXAvRE5TU291cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwcmVmZXRjaERO
Uyk6IGltcGxlbWVudGVkIHVzaW5nIFNvdXAgYXN5bmNocm9ub3VzIEROUworICAgICAgICByZXNv
bHV0aW9uCisKIDIwMDktMTAtMTMgIEdpcmlzaCBSYW1ha3Jpc2huYW4gIDxnaXJpc2hAZm9yd2Fy
ZGJpYXMuaW4+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCkluZGV4OiBX
ZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvQ2hyb21l
LmNwcAkocmV2aXNpb24gNDk1MDIpCisrKyBXZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzExLDggKzMxMSwxMSBAQCB2b2lkIENocm9tZTo6bW91c2VEaWRNb3ZlT3Zl
ckVsZW1lbnQoY29uCiB7CiAgICAgaWYgKHJlc3VsdC5pbm5lck5vZGUoKSkgewogICAgICAgICBE
b2N1bWVudCogZG9jdW1lbnQgPSByZXN1bHQuaW5uZXJOb2RlKCktPmRvY3VtZW50KCk7Ci0gICAg
ICAgIGlmIChkb2N1bWVudCAmJiBkb2N1bWVudC0+aXNETlNQcmVmZXRjaEVuYWJsZWQoKSkKLSAg
ICAgICAgICAgIHByZWZldGNoRE5TKHJlc3VsdC5hYnNvbHV0ZUxpbmtVUkwoKS5ob3N0KCkpOwor
ICAgICAgICBpZiAoZG9jdW1lbnQgJiYgZG9jdW1lbnQtPmlzRE5TUHJlZmV0Y2hFbmFibGVkKCkp
IHsKKyAgICAgICAgICAgIFN0cmluZyBob3N0ID0gcmVzdWx0LmFic29sdXRlTGlua1VSTCgpLmhv
c3QoKTsKKyAgICAgICAgICAgIGlmICghaG9zdC5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAg
cHJlZmV0Y2hETlMoaG9zdCk7CisgICAgICAgIH0KICAgICB9CiAgICAgbV9jbGllbnQtPm1vdXNl
RGlkTW92ZU92ZXJFbGVtZW50KHJlc3VsdCwgbW9kaWZpZXJGbGFncyk7CiAKSW5kZXg6IFdlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1NvdXAuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1NvdXAuY3BwCShyZXZpc2lvbiA0OTUwMikKKysr
IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1NvdXAuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yNCwxNSArMjQsMTggQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiQ1N0cmluZy5oIgogI2luY2x1ZGUgIkROUy5oIgogCi0jaW5jbHVkZSAiTm90SW1wbGVtZW50
ZWQuaCIKKyNpbmNsdWRlIDxsaWJzb3VwL3NvdXAuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiB2b2lkIHByZWZldGNoRE5TKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCiB7Ci0gICAgbm90SW1w
bGVtZW50ZWQoKTsKKyAgICBTb3VwQWRkcmVzcyogYWRkcmVzcyA9IHNvdXBfYWRkcmVzc19uZXco
aG9zdG5hbWUudXRmOCgpLmRhdGEoKSwgU09VUF9BRERSRVNTX0FOWV9QT1JUKTsKKyAgICBzb3Vw
X2FkZHJlc3NfcmVzb2x2ZV9hc3luYyhhZGRyZXNzLCAwLCAwLCAwLCAwKTsKKyAgICBnX29iamVj
dF91bnJlZihhZGRyZXNzKTsKIH0KIAogfQo=
</data>
<flag name="review"
          id="22428"
          type_id="1"
          status="-"
          setter="abarth"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>41664</attachid>
            <date>2009-10-22 09:46:02 -0700</date>
            <delta_ts>2009-10-23 07:37:16 -0700</delta_ts>
            <desc>DNS Prefetch patch</desc>
            <filename>20091022_prefetch.patch</filename>
            <type>text/plain</type>
            <size>2640</size>
            <attacher name="José Millán Soto">jmillan</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0OTk0MSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjAgQEAKKzIwMDktMTAtMjIgIEpvc8OpIE1pbGzDoW4gU290byAgPGptaWxsYW5A
aWdhbGlhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBbR1RLXUVuYWJsZSBETlMgcHJlZmV0Y2hpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODQ2CisKKyAgICAgICAgQWRkZWQgdGVtcG9yYXJ5
IGltcGxlbWVudGF0aW9uIHdoaWxlIHNvdXBfc2Vzc2lvbl9wcmVwYXJlX3VyaSBvciBhbgorICAg
ICAgICBlcXVpdmFsZW50IGZ1bmN0aW9uIGlzIG5vdCBhdmFsaWFibGUuCisgICAgICAgIEFsc28g
YWRkZWQgY29tbWVudGVkIGltcGxlbWVudGF0aW9uIGZvciB1c2UgaWYgc291cF9zZXNzaW9uX3By
ZXBhcmVfdXJpCisgICAgICAgIGlzIGF2YWxpYWJsZSBhcyBkZXNjcmliZWQgaW4KKyAgICAgICAg
ICAgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD01OTg5NDgKKwor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9ETlNTb3VwLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmNoZWNrUHJlZmV0Y2hlZCk6CisgICAgICAgIChXZWJDb3JlOjpwcmVmZXRjaEROUyk6
CisKIDIwMDktMTAtMjIgIEtlaXNoaSBIYXR0b3JpICA8Y2FzZXkuaGF0dG9yaUBnbWFpbC5jb20+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgUGF2ZWwgRmVsZG1hbi4KSW5kZXg6IFdlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9zb3VwL0ROU1NvdXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9zb3VwL0ROU1NvdXAuY3BwCShyZXZpc2lvbiA0OTc5MCkKKysrIFdlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1NvdXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
NCwxNSArMjQsNTMgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ1N0
cmluZy5oIgogI2luY2x1ZGUgIkROUy5oIgorI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCiAK
LSNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgPGxpYnNvdXAvc291cC5oPgor
CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4K
KyNpbmNsdWRlIDxTb2NrZXRTdHJlYW1IYW5kbGUuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdURjsK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitzdGF0aWMgYm9vbCBjaGVja1ByZWZldGNoZWQoY29u
c3QgU3RyaW5nICZob3N0bmFtZSkgeworICAgIHN0YXRpYyBIYXNoTWFwPFN0cmluZywgZG91Ymxl
PiBsYXN0VGltZVByZWZldGNoZWQ7CisgICAgY29uc3QgZG91YmxlIHR0bCA9IDYwOworICAgIGlm
IChsYXN0VGltZVByZWZldGNoZWQuY29udGFpbnMoaG9zdG5hbWUpKSB7CisgICAgICAgIHRpbWVf
dCBsYXN0ID0gbGFzdFRpbWVQcmVmZXRjaGVkLmdldChob3N0bmFtZSk7CisgICAgICAgIGlmICgo
Y3VycmVudFRpbWUoKSAtIGxhc3QpIDwgdHRsKSAKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIH0KKyAgICBsYXN0VGltZVByZWZldGNoZWQuc2V0KGhvc3RuYW1lLCBjdXJyZW50VGltZSgp
KTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIHZvaWQgcHJlZmV0Y2hETlMoY29uc3QgU3RyaW5n
JiBob3N0bmFtZSkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIGlmIChob3N0bmFtZS5p
c0VtcHR5KCkpIHJldHVybjsKKyAgICBpZiAoY2hlY2tQcmVmZXRjaGVkKGhvc3RuYW1lKSkgcmV0
dXJuOworICAgIC8qCisgICAgc291cF9zZXNzaW9uX3ByZXBhcmVfZm9yX3VyaSBub3QgeWV0IGF2
YWxpYWJsZToKKyAgICAgICAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dp
P2lkPTU5ODk0OAorCisgICAgU3RyaW5nIHVyaSA9ICJodHRwOi8vIitob3N0bmFtZTsKKyAgICBT
b3VwVVJJICpzb3VwVXJpID0gc291cF91cmlfbmV3KHVyaS51dGY4KCkuZGF0YSgpKTsKKyAgICBz
b3VwX3Nlc3Npb25fcHJlcGFyZV9mb3JfdXJpKFJlc291cmNlSGFuZGxlOjpkZWZhdWx0U2Vzc2lv
bigpLCBzb3VwVXJpKTsKKyAgICBzb3VwX3VyaV9mcmVlKHNvdXBVcmkpOworICAgICovCisKKyAg
ICAvKgorICAgICAgICBUaGlzIG1heSB3b3JrIHdoaWxlIHNvdXBfc2Vzc2lvbl9wcmVwYXJlX2Zv
cl91cmkgaXMgbm90IGF2YWxpYWJsZQorICAgICovCisgICAgU291cEFkZHJlc3MqIGFkZHJlc3Mg
PSBzb3VwX2FkZHJlc3NfbmV3KGhvc3RuYW1lLnV0ZjgoKS5kYXRhKCksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgU09VUF9BRERSRVNTX0FOWV9QT1JUKTsKKyAgICBzb3VwX2FkZHJlc3Nf
cmVzb2x2ZV9hc3luYyAoYWRkcmVzcywgMCwgMCwgMCwgMCk7CisgICAgZ19vYmplY3RfdW5yZWYo
YWRkcmVzcyk7CiB9CiAKIH0K
</data>
<flag name="review"
          id="23100"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>41724</attachid>
            <date>2009-10-23 07:37:16 -0700</date>
            <delta_ts>2009-10-23 07:48:31 -0700</delta_ts>
            <desc>DNS prefetch patch</desc>
            <filename>20091023_prefetch.patch</filename>
            <type>text/plain</type>
            <size>1664</size>
            <attacher name="José Millán Soto">jmillan</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1NvdXAuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1NvdXAuY3BwCShyZXZpc2lv
biA0OTc5MCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1NvdXAuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNiwxMyArMjYsNTAgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJETlMuaCIKIAotI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSAi
Q1N0cmluZy5oIgorI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCisjaW5jbHVkZSA8bGlic291
cC9zb3VwLmg+CisjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CisjaW5jbHVkZSA8d3RmL0hh
c2hNYXAuaD4KKworCit1c2luZyBuYW1lc3BhY2UgV1RGOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKK3N0YXRpYyBib29sIGNoZWNrUHJlZmV0Y2hlZChjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQor
eworICAgIHN0YXRpYyBIYXNoTWFwPFN0cmluZywgZG91YmxlPiBsYXN0VGltZVByZWZldGNoZWQ7
CisgICAgY29uc3QgZG91YmxlIHR0bCA9IDYwOworICAgIGlmIChsYXN0VGltZVByZWZldGNoZWQu
Y29udGFpbnMoaG9zdG5hbWUpKSB7CisgICAgICAgIHRpbWVfdCBsYXN0ID0gbGFzdFRpbWVQcmVm
ZXRjaGVkLmdldChob3N0bmFtZSk7CisgICAgICAgIGlmICgoY3VycmVudFRpbWUoKSAtIGxhc3Qp
IDwgdHRsKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIGxhc3RUaW1lUHJl
ZmV0Y2hlZC5zZXQoaG9zdG5hbWUsIGN1cnJlbnRUaW1lKCkpOworICAgIHJldHVybiBmYWxzZTsK
K30KKwogdm9pZCBwcmVmZXRjaEROUyhjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQogewotICAgIG5v
dEltcGxlbWVudGVkKCk7CisgICAgaWYgKGhvc3RuYW1lLmlzRW1wdHkoKSB8fCBjaGVja1ByZWZl
dGNoZWQoaG9zdG5hbWUpKQorICAgICAgICByZXR1cm47CisKKyAgICAvKgorICAgIHNvdXBfc2Vz
c2lvbl9wcmVwYXJlX2Zvcl91cmkgbm90IHlldCBhdmFsaWFibGU6CisgICAgICAgIGh0dHBzOi8v
YnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD01OTg5NDgKKworICAgIFN0cmluZyB1
cmkgPSAiaHR0cDovLyIraG9zdG5hbWU7CisgICAgU291cFVSSSogc291cFVyaSA9IHNvdXBfdXJp
X25ldyh1cmkudXRmOCgpLmRhdGEoKSk7CisgICAgc291cF9zZXNzaW9uX3ByZXBhcmVfZm9yX3Vy
aShSZXNvdXJjZUhhbmRsZTo6ZGVmYXVsdFNlc3Npb24oKSwgc291cFVyaSk7CisgICAgc291cF91
cmlfZnJlZShzb3VwVXJpKTsKKyAgICAqLworCisgICAgLy8gVGhpcyBtYXkgd29yayB3aGlsZSBz
b3VwX3Nlc3Npb25fcHJlcGFyZV9mb3JfdXJpIGlzIG5vdCBhdmFsaWFibGUKKyAgICBTb3VwQWRk
cmVzcyogYWRkcmVzcyA9IHNvdXBfYWRkcmVzc19uZXcoaG9zdG5hbWUudXRmOCgpLmRhdGEoKSwK
KyAgICAgICAgU09VUF9BRERSRVNTX0FOWV9QT1JUKTsKKyAgICBzb3VwX2FkZHJlc3NfcmVzb2x2
ZV9hc3luYyhhZGRyZXNzLCAwLCAwLCAwLCAwKTsKKyAgICBnX29iamVjdF91bnJlZihhZGRyZXNz
KTsKIH0KIAogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>41725</attachid>
            <date>2009-10-23 07:48:31 -0700</date>
            <delta_ts>2009-10-25 11:14:49 -0700</delta_ts>
            <desc>DNS prefetch patch</desc>
            <filename>20091023_prefetch.patch</filename>
            <type>text/plain</type>
            <size>2551</size>
            <attacher name="José Millán Soto">jmillan</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0OTk3NykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjAgQEAKKzIwMDktMTAtMjMgIEpvc8OpIE1pbGzDoW4gU290byAgPGptaWxsYW5A
aWdhbGlhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBbR1RLXUVuYWJsZSBETlMgcHJlZmV0Y2hpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODQ2CisKKyAgICAgICAgQWRkZWQgdGVtcG9yYXJ5
IGltcGxlbWVudGF0aW9uIHdoaWxlIHNvdXBfc2Vzc2lvbl9wcmVwYXJlX3VyaSBvciBhbgorICAg
ICAgICBlcXVpdmFsZW50IGZ1bmN0aW9uIGlzIG5vdCBhdmFsaWFibGUuCisgICAgICAgIEFsc28g
YWRkZWQgY29tbWVudGVkIGltcGxlbWVudGF0aW9uIGZvciB1c2UgaWYgc291cF9zZXNzaW9uX3By
ZXBhcmVfdXJpCisgICAgICAgIGlzIGF2YWxpYWJsZSBhcyBkZXNjcmliZWQgaW4KKyAgICAgICAg
ICAgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD01OTg5NDgKKwor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9ETlNTb3VwLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmNoZWNrUHJlZmV0Y2hlZCk6CisgICAgICAgIChXZWJDb3JlOjpwcmVmZXRjaEROUyk6
CisKIDIwMDktMTAtMjMgIFN0ZXZlIEJsb2NrICA8c3RldmVibG9ja0Bnb29nbGUuY29tPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL3NvdXAvRE5TU291cC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL3NvdXAvRE5TU291cC5jcHAJKHJldmlzaW9uIDQ5NzkwKQorKysgV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3NvdXAvRE5TU291cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDEzICsy
Niw1MCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkROUy5oIgogCi0jaW5jbHVk
ZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlICJDU3RyaW5nLmgiCisjaW5jbHVkZSAiUmVz
b3VyY2VIYW5kbGUuaCIKKyNpbmNsdWRlIDxsaWJzb3VwL3NvdXAuaD4KKyNpbmNsdWRlIDx3dGYv
Q3VycmVudFRpbWUuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorCisKK3VzaW5nIG5hbWVz
cGFjZSBXVEY7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorc3RhdGljIGJvb2wgY2hlY2tQcmVm
ZXRjaGVkKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCit7CisgICAgc3RhdGljIEhhc2hNYXA8U3Ry
aW5nLCBkb3VibGU+IGxhc3RUaW1lUHJlZmV0Y2hlZDsKKyAgICBjb25zdCBkb3VibGUgdHRsID0g
NjA7CisgICAgaWYgKGxhc3RUaW1lUHJlZmV0Y2hlZC5jb250YWlucyhob3N0bmFtZSkpIHsKKyAg
ICAgICAgdGltZV90IGxhc3QgPSBsYXN0VGltZVByZWZldGNoZWQuZ2V0KGhvc3RuYW1lKTsKKyAg
ICAgICAgaWYgKChjdXJyZW50VGltZSgpIC0gbGFzdCkgPCB0dGwpCisgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICB9CisgICAgbGFzdFRpbWVQcmVmZXRjaGVkLnNldChob3N0bmFtZSwgY3Vy
cmVudFRpbWUoKSk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCiB2b2lkIHByZWZldGNoRE5TKGNv
bnN0IFN0cmluZyYgaG9zdG5hbWUpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBpZiAo
aG9zdG5hbWUuaXNFbXB0eSgpIHx8IGNoZWNrUHJlZmV0Y2hlZChob3N0bmFtZSkpCisgICAgICAg
IHJldHVybjsKKworICAgIC8qCisgICAgc291cF9zZXNzaW9uX3ByZXBhcmVfZm9yX3VyaSBub3Qg
eWV0IGF2YWxpYWJsZToKKyAgICAgICAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19i
dWcuY2dpP2lkPTU5ODk0OAorCisgICAgU3RyaW5nIHVyaSA9ICJodHRwOi8vIitob3N0bmFtZTsK
KyAgICBTb3VwVVJJKiBzb3VwVXJpID0gc291cF91cmlfbmV3KHVyaS51dGY4KCkuZGF0YSgpKTsK
KyAgICBzb3VwX3Nlc3Npb25fcHJlcGFyZV9mb3JfdXJpKFJlc291cmNlSGFuZGxlOjpkZWZhdWx0
U2Vzc2lvbigpLCBzb3VwVXJpKTsKKyAgICBzb3VwX3VyaV9mcmVlKHNvdXBVcmkpOworICAgICov
CisKKyAgICAvLyBUaGlzIG1heSB3b3JrIHdoaWxlIHNvdXBfc2Vzc2lvbl9wcmVwYXJlX2Zvcl91
cmkgaXMgbm90IGF2YWxpYWJsZQorICAgIFNvdXBBZGRyZXNzKiBhZGRyZXNzID0gc291cF9hZGRy
ZXNzX25ldyhob3N0bmFtZS51dGY4KCkuZGF0YSgpLAorICAgICAgICBTT1VQX0FERFJFU1NfQU5Z
X1BPUlQpOworICAgIHNvdXBfYWRkcmVzc19yZXNvbHZlX2FzeW5jKGFkZHJlc3MsIDAsIDAsIDAs
IDApOworICAgIGdfb2JqZWN0X3VucmVmKGFkZHJlc3MpOwogfQogCiB9Cg==
</data>
<flag name="review"
          id="23172"
          type_id="1"
          status="-"
          setter="gustavo"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>43782</attachid>
            <date>2009-11-24 10:26:28 -0800</date>
            <delta_ts>2009-12-02 10:20:35 -0800</delta_ts>
            <desc>dnsprefetch.diff</desc>
            <filename>dnsprefetch.diff</filename>
            <type>text/plain</type>
            <size>3720</size>
            <attacher name="Xan Lopez">xan.lopez</attacher>
            
              <data encoding="base64">RnJvbSAzZmM5NWEwMGRlYmMyY2ZmMDdiMjk1MDI2OTNjNzk5ZmU3MDIxMWI4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBYYW4gTG9wZXogPHhsb3BlekBpZ2FsaWEuY29tPgpEYXRlOiBU
dWUsIDI0IE5vdiAyMDA5IDIwOjE2OjI2ICswMjAwClN1YmplY3Q6IFtQQVRDSF0gMjAwOS0xMS0y
NCAgWGFuIExvcGV6ICA8eGxvcGV6QGlnYWxpYS5jb20+Ck1JTUUtVmVyc2lvbjogMS4wCkNvbnRl
bnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOApDb250ZW50LVRyYW5zZmVyLUVuY29k
aW5nOiA4Yml0CgogICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4NDYKICAgICAgICBbR1RL
XUVuYWJsZSBETlMgcHJlZmV0Y2hpbmcKCiAgICAgICAgVXBkYXRlIGxpYnNvdXAgcmVxdWlyZWQg
dmVyc2lvbiB0byAyLjI5LjMuCgogICAgICAgICogY29uZmlndXJlLmFjOgoKV2ViQ29yZToKCjIw
MDktMTEtMjQgIFhhbiBMb3BleiAgPHhsb3BlekBpZ2FsaWEuY29tPgoKICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KCiAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIzODQ2CiAgICAgICAgW0dUS11FbmFibGUgRE5TIHByZWZldGNoaW5nCgog
ICAgICAgIFVzZSBzb3VwX3Nlc3Npb25fcHJlcGFyZV9mb3JfdXJpIHRvIGFsbG93IGxpYnNvdXAg
dG8gcmVzb2x2ZSBhaGVhZAogICAgICAgIG9mIHRpbWUgdGhlIGhvc3RuYW1lcyB3ZSBtaWdodCBw
b3RlbnRpYWxseSB2aXNpdC4KCiAgICAgICAgQmFzZWQgb24gYSBwYXRjaCBieSBKb3PDqSBNaWxs
w6FuIFNvdG8uCgogICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1NvdXAuY3BwOgog
ICAgICAgIChXZWJDb3JlOjpwcmVmZXRjaEROUyk6Ci0tLQogQ2hhbmdlTG9nICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfCAgIDExICsrKysrKysrKysrCiBXZWJDb3JlL0NoYW5nZUxv
ZyAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTUgKysrKysrKysrKysrKysrCiBXZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvc291cC9ETlNTb3VwLmNwcCB8ICAgMTAgKysrKysrKy0tLQogY29u
ZmlndXJlLmFjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAyICstCiA0IGZpbGVz
IGNoYW5nZWQsIDM0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv
Q2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IDc3MDY3ZjUuLmFlZDljZGYgMTAwNjQ0Ci0tLSBh
L0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAwOS0xMS0yNCAg
WGFuIExvcGV6ICA8eGxvcGV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIzODQ2CisgICAgICAgIFtHVEtdRW5hYmxlIEROUyBwcmVmZXRjaGluZworCisgICAg
ICAgIFVwZGF0ZSBsaWJzb3VwIHJlcXVpcmVkIHZlcnNpb24gdG8gMi4yOS4zLgorCisgICAgICAg
ICogY29uZmlndXJlLmFjOgorCiAyMDA5LTExLTA5ICBQcmlpdCBMYWVzICA8cGxhZXNAcGxhZXMu
b3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE9saXZlciBIdW50LgpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4OGQ0N2NiLi42YzliMWUx
IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE4IEBACisyMDA5LTExLTI0ICBYYW4gTG9wZXogIDx4bG9wZXpAaWdhbGlhLmNv
bT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4NDYKKyAgICAgICAgW0dUS11F
bmFibGUgRE5TIHByZWZldGNoaW5nCisKKyAgICAgICAgVXNlIHNvdXBfc2Vzc2lvbl9wcmVwYXJl
X2Zvcl91cmkgdG8gYWxsb3cgbGlic291cCB0byByZXNvbHZlIGFoZWFkCisgICAgICAgIG9mIHRp
bWUgdGhlIGhvc3RuYW1lcyB3ZSBtaWdodCBwb3RlbnRpYWxseSB2aXNpdC4KKworICAgICAgICBC
YXNlZCBvbiBhIHBhdGNoIGJ5IEpvc8OpIE1pbGzDoW4gU290by4KKworICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvc291cC9ETlNTb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnByZWZldGNo
RE5TKToKKwogMjAwOS0xMS0yNCAgTWFyayBSb3dlICA8bXJvd2VAYXBwbGUuY29tPgogCiAgICAg
ICAgIEZpeCBwcm9kdWN0aW9uIGJ1aWxkcyB3aGVyZSB0aGUgc291cmNlIHRyZWUgbWF5IGJlIHJl
YWQtb25seS4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1Nv
dXAuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TU291cC5jcHAKaW5kZXgg
MWZmZTFhMC4uNGM5NmEyMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3Nv
dXAvRE5TU291cC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TU291
cC5jcHAKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIENv
bXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5
IElnYWxpYSBTLkwuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI0LDE1ICsy
NSwxOCBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDU3RyaW5nLmgi
CiAjaW5jbHVkZSAiRE5TLmgiCi0KLSNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1
ZGUgIlJlc291cmNlSGFuZGxlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdm9pZCBwcmVm
ZXRjaEROUyhjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7
CisgICAgU3RyaW5nIHVyaSA9ICJodHRwOi8vIitob3N0bmFtZTsKKyAgICBTb3VwVVJJKiBzb3Vw
VXJpID0gc291cF91cmlfbmV3KHVyaS51dGY4KCkuZGF0YSgpKTsKKyAgICBzb3VwX3Nlc3Npb25f
cHJlcGFyZV9mb3JfdXJpKFJlc291cmNlSGFuZGxlOjpkZWZhdWx0U2Vzc2lvbigpLCBzb3VwVXJp
KTsKKyAgICBzb3VwX3VyaV9mcmVlKHNvdXBVcmkpOwogfQogCiB9CmRpZmYgLS1naXQgYS9jb25m
aWd1cmUuYWMgYi9jb25maWd1cmUuYWMKaW5kZXggNjExM2E5My4uMDk3NGJjOCAxMDA2NDQKLS0t
IGEvY29uZmlndXJlLmFjCisrKyBiL2NvbmZpZ3VyZS5hYwpAQCAtMTkwLDcgKzE5MCw3IEBAIGlm
IHRlc3QgIiR3aXRoX2hpbGRvbiIgPSAieWVzIjsgdGhlbgogZmkKIAogIyBtaW5pbXVtIGJhc2Ug
ZGVwZW5kZW5jaWVzCi1MSUJTT1VQX1JFUVVJUkVEX1ZFUlNJT049Mi4yNy45MQorTElCU09VUF9S
RVFVSVJFRF9WRVJTSU9OPTIuMjkuMwogQ0FJUk9fUkVRVUlSRURfVkVSU0lPTj0xLjYKIEZPTlRD
T05GSUdfUkVRVUlSRURfVkVSU0lPTj0yLjQKIEZSRUVUWVBFMl9SRVFVSVJFRF9WRVJTSU9OPTku
MAotLSAKMS42LjUuMQoK
</data>
<flag name="review"
          id="25509"
          type_id="1"
          status="+"
          setter="gustavo"
    />
    <flag name="commit-queue"
          id="25510"
          type_id="3"
          status="-"
          setter="xan.lopez"
    />
          </attachment>
      

    </bug>

</bugzilla>