<?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>31266</bug_id>
          
          <creation_ts>2009-11-09 11:20:49 -0800</creation_ts>
          <short_desc>[Qt] QWebSettings::setMaximumPagesInCache(int pages) does not enable the Page Cache</short_desc>
          <delta_ts>2009-11-13 05:49:43 -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>WebKit Qt</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Qt</keywords>
          <priority>P3</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andras Becsi">abecsi</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abecsi</cc>
    
    <cc>commit-queue</cc>
    
    <cc>hausmann</cc>
    
    <cc>kenneth</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>vestbo</cc>
    
    <cc>zecke</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>161660</commentid>
    <comment_count>0</comment_count>
      <attachid>42772</attachid>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2009-11-09 11:20:49 -0800</bug_when>
    <thetext>Created attachment 42772
proposed patch for further discussion

Calling setMaximumPagesInCache(somePositiveInt) does not enable the Page Cache (http://webkit.org/blog/427/webkit-page-cache-i-the-basics/) which is disabled by default in QtWebKit.
Further more QWebSettings::setMaximumPagesInCache(int pages) is static, so calling d-&gt;settings-setUsesPageCache(true) if pages&gt;0 is not an option.
To support page caching in a comparative way and quality as the other ports do, we would need a nice cross platform way to measure the available system memory and calculate the page cache capacity in a similar way as the Mac and Win ports do:

Eg.: WebKit/win/WebView.cpp:502:
        // Page cache capacity (in pages)
        // (Research indicates that value / page drops substantially after 3 pages.)
        if (memSize &gt;= 2048)
            pageCacheCapacity = 5;
        else if (memSize &gt;= 1024)
            pageCacheCapacity = 4;
        else if (memSize &gt;= 512)
            pageCacheCapacity = 3;
        else if (memSize &gt;= 256)
            pageCacheCapacity = 2;
        else
            pageCacheCapacity = 1;

But in embedded devices memory is a precious resource, so there may be situations where caching has to be disabled completely. 
So we would have to guess somehow which setting would be best, or leave the whole decision to the programmer? 

The attached patch tries the second approach and adds methods to qwebsetting and documents the usage and co-relation to setMaximumPagesInCache().
 
It would be nice to get some input on that issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161664</commentid>
    <comment_count>1</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2009-11-09 11:25:33 -0800</bug_when>
    <thetext>Well, the heuristics could be implemented by the browser or app using WebKit.
Remember QtWebKit is not just for creating browsers :-), so I think the current
API is OK.

setMaximumPagesInCache was introduced before 4.6 right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161671</commentid>
    <comment_count>2</comment_count>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2009-11-09 11:28:46 -0800</bug_when>
    <thetext>(In reply to comment #1)
&gt; Well, the heuristics could be implemented by the browser or app using WebKit.
&gt; Remember QtWebKit is not just for creating browsers :-), so I think the current
&gt; API is OK.
&gt; 
&gt; setMaximumPagesInCache was introduced before 4.6 right?
Yes I think so.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161686</commentid>
    <comment_count>3</comment_count>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2009-11-09 11:51:41 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (In reply to comment #1)
&gt; &gt; Well, the heuristics could be implemented by the browser or app using WebKit.
&gt; &gt; Remember QtWebKit is not just for creating browsers :-), so I think the current
&gt; &gt; API is OK.

Further investigation showed that in qwebsettings.cpp:91:QWebSettingsPrivate::apply()) the attributes QHash (which is a member of QWebSettingsPrivate) is completely empty in approx. 5900 layout tests (from 6100 running), and has maximally 1 element in the other ~200, so it seems that updating the whole QWebSettings enum every time apply() is called might be a performance regression.

&gt; &gt; 
&gt; &gt; setMaximumPagesInCache was introduced before 4.6 right?
&gt; Yes I think so.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161688</commentid>
    <comment_count>4</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2009-11-09 11:55:28 -0800</bug_when>
    <thetext>cool.

i&apos;d block qt 4.6 on it, since it make an important feature (pageCache) to actually work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>162388</commentid>
    <comment_count>5</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2009-11-11 00:56:58 -0800</bug_when>
    <thetext>We cannot add new functions to Qt 4.6 anymore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>162391</commentid>
    <comment_count>6</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2009-11-11 01:02:27 -0800</bug_when>
    <thetext>Oops, the last comment was incomplete. But as it said, we cannot add new functions to Qt 4.6 anymore :(

You are right that it seems that we are currently not enabling the page cache in WebCore::Settings. I&apos;m not sure if that was introduced afterwards or if it&apos;s been missing since then.

My guts feeling is that it&apos;s probably best for now to keep it a global setting, i.e. to enable the page cache in all settings objects if there is a maximum set for pages in the page cache. Similarly we should disable it if the maximum is 0.

That can be done without adding new API and I think it gives us a sensible default. The only thing we&apos;re missing is the ability to turn off the page cache _per QWebPage_, but it is debatable whether that makes sense in the first place.

It is however a feature we can also introduce later on.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>162394</commentid>
    <comment_count>7</comment_count>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2009-11-11 01:08:12 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; Oops, the last comment was incomplete. But as it said, we cannot add new
&gt; functions to Qt 4.6 anymore :(
&gt; 
&gt; You are right that it seems that we are currently not enabling the page cache
&gt; in WebCore::Settings. I&apos;m not sure if that was introduced afterwards or if it&apos;s
&gt; been missing since then.
&gt; 
&gt; My guts feeling is that it&apos;s probably best for now to keep it a global setting,
&gt; i.e. to enable the page cache in all settings objects if there is a maximum set
&gt; for pages in the page cache. Similarly we should disable it if the maximum is
&gt; 0.
&gt; 
&gt; That can be done without adding new API and I think it gives us a sensible
&gt; default. The only thing we&apos;re missing is the ability to turn off the page cache
&gt; _per QWebPage_, but it is debatable whether that makes sense in the first
&gt; place.
&gt; 
&gt; It is however a feature we can also introduce later on.

I understand and that&apos;s why I am experimenting with the globalSettings singleton now which can be reached to enable and disable the page cache in setMaximumPagesInCache as needed. This could work out. Shortly I will add a new attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>162472</commentid>
    <comment_count>8</comment_count>
      <attachid>42961</attachid>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2009-11-11 07:41:14 -0800</bug_when>
    <thetext>Created attachment 42961
proposed patch

Without adding a new QWebSetting enum value it did not enable the global cache, so I needed to add one, but there are no new functions so no API change.
There are two known tests which are skipped because of Page Cache. As implemented they do not time-out and crash any more, but revealed another bug which causes a JS console message:

&quot;CONSOLE MESSAGE: ReferenceError: Trying to access object from destroyed plug-in.&quot;

which is a different issue, and tonikitoo will hopefully comfirm that my patch is actually making Page Cache to work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>162475</commentid>
    <comment_count>9</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2009-11-11 07:51:30 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; Created an attachment (id=42961) [details]
&gt; proposed patch
&gt; 
&gt; Without adding a new QWebSetting enum value it did not enable the global cache,
&gt; so I needed to add one, but there are no new functions so no API change.

Unfortunately adding a new enum is an API change (although admitadely not on a binary level).

Can&apos;t we simply enable the cache if there is a maximum set and disable it if the maximum is zero?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>162482</commentid>
    <comment_count>10</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2009-11-11 08:29:40 -0800</bug_when>
    <thetext>&gt; but revealed another bug which causes a JS console message:
&gt; 
&gt; &quot;CONSOLE MESSAGE: ReferenceError: Trying to access object from destroyed
&gt; plug-in.&quot;
&gt; 
&gt; which is a different issue, and tonikitoo will hopefully comfirm that my patch
&gt; is actually making Page Cache to work.

I can confirm it made pageCache to work. In a layout test I am doing I was getting &quot;onLoad&quot; called for back/forward navigations. W/ the patch in I am getting it called once and then just pageShow/Hide.

About the CONSOLE MESSAGE, I am able to reproduce it too even w/ JIT off.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>162487</commentid>
    <comment_count>11</comment_count>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2009-11-11 08:34:46 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #8)
&gt; &gt; Created an attachment (id=42961) [details] [details]
&gt; &gt; proposed patch
&gt; &gt; 
&gt; &gt; Without adding a new QWebSetting enum value it did not enable the global cache,
&gt; &gt; so I needed to add one, but there are no new functions so no API change.
&gt; 
&gt; Unfortunately adding a new enum is an API change (although admitadely not on a
&gt; binary level).
&gt; 
&gt; Can&apos;t we simply enable the cache if there is a maximum set and disable it if
&gt; the maximum is zero?

Well, I experimented with it for two days now and the only way we can access the platform independent global Settings object now is through QWebSettings::globalSettings()-&gt;d which is a QWebSettingsPrivate* and has a WebCore::Settings* member named settings. I tried to set the page cache directly with QWebSettings::globalSettings()-&gt;d-&gt;settings-&gt;setUsesPage(qMax(0, pages)) but this caused DRT to crash on tests which want to override the usage of the cache, because setMaximumPagesInCache is static and the settings member of the singleton didn&apos;t get initialized. So I suppose settings was not meant to be called directly but indirectly through d-&gt;apply(). This probably will need a refactoring soon since it seems to be much of hiding which might cause performance issues. 
I will try to work around this for Qt 4.6, it will probably be ugly but policy is policy.
After release I will try to refactor this apply in a more elegant way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>162489</commentid>
    <comment_count>12</comment_count>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2009-11-11 08:35:36 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; &gt; but revealed another bug which causes a JS console message:
&gt; &gt; 
&gt; &gt; &quot;CONSOLE MESSAGE: ReferenceError: Trying to access object from destroyed
&gt; &gt; plug-in.&quot;
&gt; &gt; 
&gt; &gt; which is a different issue, and tonikitoo will hopefully comfirm that my patch
&gt; &gt; is actually making Page Cache to work.
&gt; 
&gt; I can confirm it made pageCache to work. In a layout test I am doing I was
&gt; getting &quot;onLoad&quot; called for back/forward navigations. W/ the patch in I am
&gt; getting it called once and then just pageShow/Hide.
&gt; 
&gt; About the CONSOLE MESSAGE, I am able to reproduce it too even w/ JIT off.

Thank you very much for testing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>162637</commentid>
    <comment_count>13</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2009-11-11 13:05:21 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; (In reply to comment #9)
&gt; &gt; (In reply to comment #8)
&gt; &gt; &gt; Created an attachment (id=42961) [details] [details] [details]
&gt; &gt; &gt; proposed patch
&gt; &gt; &gt; 
&gt; &gt; &gt; Without adding a new QWebSetting enum value it did not enable the global cache,
&gt; &gt; &gt; so I needed to add one, but there are no new functions so no API change.
&gt; &gt; 
&gt; &gt; Unfortunately adding a new enum is an API change (although admitadely not on a
&gt; &gt; binary level).
&gt; &gt; 
&gt; &gt; Can&apos;t we simply enable the cache if there is a maximum set and disable it if
&gt; &gt; the maximum is zero?
&gt; 
&gt; Well, I experimented with it for two days now and the only way we can access
&gt; the platform independent global Settings object now is through
&gt; QWebSettings::globalSettings()-&gt;d which is a QWebSettingsPrivate* and has a
&gt; WebCore::Settings* member named settings. I tried to set the page cache
&gt; directly with QWebSettings::globalSettings()-&gt;d-&gt;settings-&gt;setUsesPage(qMax(0,
&gt; pages)) but this caused DRT to crash on tests which want to override the usage
&gt; of the cache, because setMaximumPagesInCache is static and the settings member
&gt; of the singleton didn&apos;t get initialized. So I suppose settings was not meant to
&gt; be called directly but indirectly through d-&gt;apply(). This probably will need a
&gt; refactoring soon since it seems to be much of hiding which might cause
&gt; performance issues. 
&gt; I will try to work around this for Qt 4.6, it will probably be ugly but policy
&gt; is policy.
&gt; After release I will try to refactor this apply in a more elegant way.

Thanks Andras!

I agree it&apos;s ugly. I would suggest in apply() to simply look at WebCore::pageCache()-&gt;capacity() to decide whether to enable or disable the page cache in the WebCore::Settings object.

Then you can call apply() from setMaximumPagesInCache.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>162638</commentid>
    <comment_count>14</comment_count>
      <attachid>42961</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2009-11-11 13:06:33 -0800</bug_when>
    <thetext>Comment on attachment 42961
proposed patch

r- due to the earlier comments. For now we should enable/disable the cache only depending on the maximumPagesInCache value, i.e. the cache capacity.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>162670</commentid>
    <comment_count>15</comment_count>
      <attachid>42998</attachid>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2009-11-11 14:06:04 -0800</bug_when>
    <thetext>Created attachment 42998
simlified patch

Antonio, could you please test this one if it works in your test? It works on the pagehide tests here, if somebody reviews it you can also land it, or I will set the cq+ tomorrow.
Thanks for the hint, Simon. I had a similar concept but this is simpler and not-so-ugly as I thougth :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>163274</commentid>
    <comment_count>16</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2009-11-13 03:55:43 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; Created an attachment (id=42998) [details]
&gt; simlified patch
&gt; 
&gt; Antonio, could you please test this one if it works in your test? 

thx, bbandix. It works for me too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>163275</commentid>
    <comment_count>17</comment_count>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2009-11-13 04:07:10 -0800</bug_when>
    <thetext>(In reply to comment #16)
&gt; (In reply to comment #15)
&gt; &gt; Created an attachment (id=42998) [details] [details]
&gt; &gt; simlified patch
&gt; &gt; 
&gt; &gt; Antonio, could you please test this one if it works in your test? 
&gt; 
&gt; thx, bbandix. It works for me too.

Thanks for testing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>163276</commentid>
    <comment_count>18</comment_count>
      <attachid>42998</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2009-11-13 04:19:32 -0800</bug_when>
    <thetext>Comment on attachment 42998
simlified patch

The patch looks good to me, except for this piece:

&gt; +    settings()-&gt;setMaximumPagesInCache(0); // reset to default
&gt;  }
[...]  
&gt; +    else if (name == &quot;WebKitUsesPageCachePreferenceKey&quot;)
&gt; +        settings-&gt;setMaximumPagesInCache(value.toInt());
&gt;  }

setMaximumPagesInCache is a class method of QWebSettings, so the code should read

QWebSettings::setMaximumPagesInCache()

It is currently not possible to specify this per settings object after all, only globally.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>163282</commentid>
    <comment_count>19</comment_count>
      <attachid>43151</attachid>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2009-11-13 05:19:57 -0800</bug_when>
    <thetext>Created attachment 43151
also change DRT to set the cache globally</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>163290</commentid>
    <comment_count>20</comment_count>
      <attachid>43151</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-11-13 05:49:37 -0800</bug_when>
    <thetext>Comment on attachment 43151
also change DRT to set the cache globally

Clearing flags on attachment: 43151

Committed r50938: &lt;http://trac.webkit.org/changeset/50938&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>163291</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-11-13 05:49:43 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>42772</attachid>
            <date>2009-11-09 11:20:49 -0800</date>
            <delta_ts>2009-11-11 07:41:14 -0800</delta_ts>
            <desc>proposed patch for further discussion</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>6632</size>
            <attacher name="Andras Becsi">abecsi</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9xdC9BcGkvcXdlYnNldHRpbmdzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
L3F0L0FwaS9xd2Vic2V0dGluZ3MuaAkocmV2aXNpb24gNTA2NjcpCisrKyBXZWJLaXQvcXQvQXBp
L3F3ZWJzZXR0aW5ncy5oCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw3ICs2Nyw4IEBACiAgICAgICAg
IExvY2FsU3RvcmFnZURhdGFiYXNlRW5hYmxlZCA9IExvY2FsU3RvcmFnZUVuYWJsZWQsCiAjZW5k
aWYKICAgICAgICAgTG9jYWxDb250ZW50Q2FuQWNjZXNzUmVtb3RlVXJscywKLSAgICAgICAgRG5z
UHJlZmV0Y2hFbmFibGVkCisgICAgICAgIERuc1ByZWZldGNoRW5hYmxlZCwKKyAgICAgICAgUGFn
ZUNhY2hlRW5hYmxlZAogICAgIH07CiAgICAgZW51bSBXZWJHcmFwaGljIHsKICAgICAgICAgTWlz
c2luZ0ltYWdlR3JhcGhpYywKQEAgLTkyLDYgKzkzLDkgQEAKICAgICBpbnQgZm9udFNpemUoRm9u
dFNpemUgdHlwZSkgY29uc3Q7CiAgICAgdm9pZCByZXNldEZvbnRTaXplKEZvbnRTaXplIHR5cGUp
OwogCisgICAgdm9pZCBlbmFibGVQYWdlQ2FjaGUoYm9vbCBvbiA9IHRydWUpOworICAgIGJvb2wg
dXNlc1BhZ2VDYWNoZSgpIGNvbnN0OworCiAgICAgdm9pZCBzZXRBdHRyaWJ1dGUoV2ViQXR0cmli
dXRlIGF0dHIsIGJvb2wgb24pOwogICAgIGJvb2wgdGVzdEF0dHJpYnV0ZShXZWJBdHRyaWJ1dGUg
YXR0cikgY29uc3Q7CiAgICAgdm9pZCByZXNldEF0dHJpYnV0ZShXZWJBdHRyaWJ1dGUgYXR0cik7
CkluZGV4OiBXZWJLaXQvcXQvQXBpL3F3ZWJzZXR0aW5ncy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0L3F0L0FwaS9xd2Vic2V0dGluZ3MuY3BwCShyZXZpc2lvbiA1MDY2NykKKysrIFdlYktpdC9x
dC9BcGkvcXdlYnNldHRpbmdzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjA2LDYgKzIwNiwxMCBA
QAogICAgICAgICB2YWx1ZSA9IGF0dHJpYnV0ZXMudmFsdWUoUVdlYlNldHRpbmdzOjpMb2NhbENv
bnRlbnRDYW5BY2Nlc3NSZW1vdGVVcmxzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBnbG9iYWwtPmF0dHJpYnV0ZXMudmFsdWUoUVdlYlNldHRpbmdzOjpMb2NhbENvbnRl
bnRDYW5BY2Nlc3NSZW1vdGVVcmxzKSk7CiAgICAgICAgIHNldHRpbmdzLT5zZXRBbGxvd1VuaXZl
cnNhbEFjY2Vzc0Zyb21GaWxlVVJMcyh2YWx1ZSk7CisKKyAgICAgICAgdmFsdWUgPSBhdHRyaWJ1
dGVzLnZhbHVlKFFXZWJTZXR0aW5nczo6UGFnZUNhY2hlRW5hYmxlZCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGdsb2JhbC0+YXR0cmlidXRlcy52YWx1ZShRV2ViU2V0dGlu
Z3M6OlBhZ2VDYWNoZUVuYWJsZWQpKTsKKyAgICAgICAgc2V0dGluZ3MtPnNldFVzZXNQYWdlQ2Fj
aGUodmFsdWUpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIFFMaXN0PFFXZWJTZXR0aW5nc1ByaXZh
dGUqPiBzZXR0aW5ncyA9ICo6OmFsbFNldHRpbmdzKCk7CiAgICAgICAgIGZvciAoaW50IGkgPSAw
OyBpIDwgc2V0dGluZ3MuY291bnQoKTsgKytpKQpAQCAtMzQ3LDYgKzM1MSw4IEBACiAgICAgXHZh
bHVlIExvY2FsU3RvcmFnZUVuYWJsZWQgU3BlY2lmaWVzIHdoZXRoZXIgc3VwcG9ydCBmb3IgdGhl
IEhUTUwgNQogICAgICAgICBsb2NhbCBzdG9yYWdlIGZlYXR1cmUgaXMgZW5hYmxlZCBvciBub3Qu
IERpc2FibGVkIGJ5IGRlZmF1bHQuCiAgICAgXHZhbHVlIExvY2FsQ29udGVudENhbkFjY2Vzc1Jl
bW90ZVVybHMgU3BlY2lmaWVzIHdoZXRoZXIgbG9jYWxseSBsb2FkZWQgZG9jdW1lbnRzIGFyZSBh
bGxvd2VkIHRvIGFjY2VzcyByZW1vdGUgdXJscy4KKyAgICBcdmFsdWUgUGFnZUNhY2hlRW5hYmxl
ZCBTcGVjaWZpZXMgd2hldGhlciB0aGUgYXNzb2NpYXRlZCBXZWJWaWV3cyB1c2UgdGhlIHNoYXJl
ZAorICAgICAgICBwYWdlIGNhY2hlLiBEaXNhYmxlZCBieSBkZWZhdWx0LgogKi8KIAogLyohCkBA
IC0zNzcsNiArMzgzLDcgQEAKICAgICBkLT5hdHRyaWJ1dGVzLmluc2VydChRV2ViU2V0dGluZ3M6
Ok9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZCwgZmFsc2UpOwogICAgIGQtPmF0dHJp
YnV0ZXMuaW5zZXJ0KFFXZWJTZXR0aW5nczo6TG9jYWxTdG9yYWdlRW5hYmxlZCwgZmFsc2UpOwog
ICAgIGQtPmF0dHJpYnV0ZXMuaW5zZXJ0KFFXZWJTZXR0aW5nczo6TG9jYWxDb250ZW50Q2FuQWNj
ZXNzUmVtb3RlVXJscywgZmFsc2UpOworICAgIGQtPmF0dHJpYnV0ZXMuaW5zZXJ0KFFXZWJTZXR0
aW5nczo6UGFnZUNhY2hlRW5hYmxlZCwgZmFsc2UpOwogICAgIGQtPm9mZmxpbmVTdG9yYWdlRGVm
YXVsdFF1b3RhID0gNSAqIDEwMjQgKiAxMDI0OwogICAgIGQtPmRlZmF1bHRUZXh0RW5jb2Rpbmcg
PSBRTGF0aW4xU3RyaW5nKCJpc28tODg1OS0xIik7CiAgICAgZC0+cHJpbnRpbmdNaW5pbXVtU2hy
aW5rRmFjdG9yID0gMC4wZjsKQEAgLTY5Myw2ICs3MDAsOCBAQAogCiAvKiEKICAgICBTZXRzIHRo
ZSBtYXhpbXVtIG51bWJlciBvZiBwYWdlcyB0byBob2xkIGluIHRoZSBtZW1vcnkgcGFnZSBjYWNo
ZSB0byBcYSBwYWdlcy4KKyAgICBGb3Igbm93IHBhZ2UgY2FjaGluZyBpcyBvbmx5IGVuYWJsZWQg
aWYgZXhwbGljaXRseSBzd2l0Y2hlZCBvbiBzbyBpZiB5b3Ugd2FudAorICAgIHRvIHVzZSBpdCB5
b3UgaGF2ZSB0byBjYWxsIFFXZWJTZXR0aW5nczo6ZW5hYmxlUGFnZUNhY2hlKCkgYWZ0ZXIgc2V0
dGluZyB0aGUgY2FwYWNpdHkuCiAKICAgICBUaGUgUGFnZSBDYWNoZSBhbGxvd3MgZm9yIGEgbmlj
ZXIgdXNlciBleHBlcmllbmNlIHdoZW4gbmF2aWdhdGluZyBmb3J0aCBvciBiYWNrCiAgICAgdG8g
cGFnZXMgaW4gdGhlIGZvcndhcmQvYmFjayBoaXN0b3J5LCBieSBwYXVzaW5nIGFuZCByZXN1bWlu
ZyB1cCB0byBcYSBwYWdlcwpAQCAtODIzLDYgKzgzMiw0OSBAQAogfQogCiAvKiEKKyAgICBcZm4g
dm9pZCBRV2ViU2V0dGluZ3M6OmVuYWJsZVBhZ2VDYWNoZShib29sIG9uPXRydWUpCisKKyAgICBT
ZXRzIHRoZSB1c2FnZSBvZiBXZWJDb3JlOjpwYWdlQ2FjaGUoKSB0byBcYSBvbi4KKyAgICBUaGlz
IGZ1bmN0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIGdsb2JhbCBRV2ViU2V0dGluZ3MgaW5zdGFu
Y2UuCisKKyAgICBGb3Igbm93IHBhZ2UgY2FjaGluZyBpcyBvbmx5IGVuYWJsZWQgaWYgZXhwbGlj
aXRseSBzd2l0Y2hlZCBvbi4KKyAgICBJZiB5b3Ugd2FudCB0byBoYXZlIGEgY2FjaGUgY2FwYWNp
dHkgPiAxIHRoZW4geW91IGhhdmUgdG8KKyAgICBjYWxsIFFXZWJTZXR0aW5nczo6c2V0TWF4aW11
bVBhZ2VzSW5DYWNoZShpbnQgcGFnZXMpIGJlZm9yZQorICAgIHN3aXRjaGluZyB0aGUgcGFnZSBj
YWNoZSBvbi4KKworICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBwYWdlIGNhY2hl
IGZlYXR1cmUsIHBsZWFzZSByZWZlciB0bzoKKworICAgIGh0dHA6Ly93ZWJraXQub3JnL2Jsb2cv
NDI3L3dlYmtpdC1wYWdlLWNhY2hlLWktdGhlLWJhc2ljcy8KKworICAgIFxzYSBnbG9iYWxTZXR0
aW5ncygpCisgICAgXHNhIHNldE1heGltdW1QYWdlc0luQ2FjaGUoaW50IHBhZ2VzKQorKi8KK3Zv
aWQgUVdlYlNldHRpbmdzOjplbmFibGVQYWdlQ2FjaGUoYm9vbCBvbikKK3sKKyAgICAvKiBXZSB3
b3VsZCBuZWVkIGEgbmljZSBjcm9zcyBwbGF0Zm9ybSB3YXkgdG8gbWVhc3VyZSB0aGUgYXZhaWxh
YmxlIHN5c3RlbSBtZW1vcnkgdG8KKyAgICAgKiBzZXQgdGhlIHBhZ2UgY2FjaGUgY2FwYWNpdHkg
aW4gYSBzaW1pbGFyIHdheSBhcyB0aGUgTWFjIGFuZCBXaW4gcG9ydHMgZG8uCisgICAgICogRm9y
IG5vdyBwYWdlIGNhY2hpbmcgaXMgb25seSBlbmFibGVkIGlmIGV4cGxpY2l0bHkgc3dpdGNoZWQg
b24uCisgICAgICovCisgICAgaWYgKG9uICYmICFtYXhpbXVtUGFnZXNJbkNhY2hlKCkpCisgICAg
ICAgIHNldE1heGltdW1QYWdlc0luQ2FjaGUoMSk7CisgICAgZWxzZSBpZiAoIW9uICYmIG1heGlt
dW1QYWdlc0luQ2FjaGUoKSkKKyAgICAgICAgc2V0TWF4aW11bVBhZ2VzSW5DYWNoZSgwKTsKKwor
ICAgIGQtPmF0dHJpYnV0ZXMuaW5zZXJ0KFFXZWJTZXR0aW5nczo6UGFnZUNhY2hlRW5hYmxlZCwg
b24pOworICAgIGQtPmFwcGx5KCk7Cit9CisKK2Jvb2wgUVdlYlNldHRpbmdzOjp1c2VzUGFnZUNh
Y2hlKCkgY29uc3QKK3sKKyAgICBib29sIGRlZmF1bHRWYWx1ZSA9IGZhbHNlOworICAgIGlmIChk
LT5zZXR0aW5ncykgeworICAgICAgICBRV2ViU2V0dGluZ3NQcml2YXRlKiBnbG9iYWwgPSBRV2Vi
U2V0dGluZ3M6Omdsb2JhbFNldHRpbmdzKCktPmQ7CisgICAgICAgIGRlZmF1bHRWYWx1ZSA9IGds
b2JhbC0+YXR0cmlidXRlcy52YWx1ZShRV2ViU2V0dGluZ3M6OlBhZ2VDYWNoZUVuYWJsZWQpOwor
ICAgIH0KKyAgICByZXR1cm4gZC0+YXR0cmlidXRlcy52YWx1ZShRV2ViU2V0dGluZ3M6OlBhZ2VD
YWNoZUVuYWJsZWQsIGRlZmF1bHRWYWx1ZSk7Cit9CisKKy8qIQogICAgIFxzaW5jZSA0LjUKIAog
ICAgIFNldHMgdGhlIHBhdGggZm9yIEhUTUw1IG9mZmxpbmUgc3RvcmFnZSB0byBcYSBwYXRoLgpJ
bmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvRHVtcFJlbmRlclRyZWUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0R1bXBSZW5kZXJUcmVl
LmNwcAkocmV2aXNpb24gNTA2NjcpCisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9E
dW1wUmVuZGVyVHJlZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNiw2ICsxMjYsNyBAQAogICAg
IGdsb2JhbFNldHRpbmdzLT5zZXRBdHRyaWJ1dGUoUVdlYlNldHRpbmdzOjpKYXZhc2NyaXB0RW5h
YmxlZCwgdHJ1ZSk7CiAgICAgZ2xvYmFsU2V0dGluZ3MtPnNldEF0dHJpYnV0ZShRV2ViU2V0dGlu
Z3M6OlByaXZhdGVCcm93c2luZ0VuYWJsZWQsIGZhbHNlKTsKICAgICBnbG9iYWxTZXR0aW5ncy0+
c2V0QXR0cmlidXRlKFFXZWJTZXR0aW5nczo6T2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVFbmFi
bGVkLCBmYWxzZSk7CisgICAgZ2xvYmFsU2V0dGluZ3MtPnNldEF0dHJpYnV0ZShRV2ViU2V0dGlu
Z3M6OlBhZ2VDYWNoZUVuYWJsZWQsIGZhbHNlKTsKIAogICAgIGNvbm5lY3QodGhpcywgU0lHTkFM
KGdlb21ldHJ5Q2hhbmdlUmVxdWVzdGVkKGNvbnN0IFFSZWN0ICYpKSwKICAgICAgICAgICAgIHRo
aXMsIFNMT1Qoc2V0Vmlld0dlb21ldHJ5KGNvbnN0IFFSZWN0ICYgKSkpOwpAQCAtMTM5LDEyICsx
NDAsMTIgQEAKICAgICAvLyBsYXlvdXRUZXN0Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2Uo
KSBvciBzaW1pbGFyLgogCiAgICAgc2V0dGluZ3MoKS0+cmVzZXRGb250U2l6ZShRV2ViU2V0dGlu
Z3M6OkRlZmF1bHRGb250U2l6ZSk7Ci0KICAgICBzZXR0aW5ncygpLT5yZXNldEF0dHJpYnV0ZShR
V2ViU2V0dGluZ3M6OkphdmFzY3JpcHRDYW5PcGVuV2luZG93cyk7CiAgICAgc2V0dGluZ3MoKS0+
cmVzZXRBdHRyaWJ1dGUoUVdlYlNldHRpbmdzOjpKYXZhc2NyaXB0RW5hYmxlZCk7CiAgICAgc2V0
dGluZ3MoKS0+cmVzZXRBdHRyaWJ1dGUoUVdlYlNldHRpbmdzOjpQcml2YXRlQnJvd3NpbmdFbmFi
bGVkKTsKICAgICBzZXR0aW5ncygpLT5yZXNldEF0dHJpYnV0ZShRV2ViU2V0dGluZ3M6Okxpbmtz
SW5jbHVkZWRJbkZvY3VzQ2hhaW4pOwogICAgIHNldHRpbmdzKCktPnJlc2V0QXR0cmlidXRlKFFX
ZWJTZXR0aW5nczo6T2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkKTsKKyAgICBzZXR0
aW5ncygpLT5yZXNldEF0dHJpYnV0ZShRV2ViU2V0dGluZ3M6OlBhZ2VDYWNoZUVuYWJsZWQpOwog
fQogCiBRV2ViUGFnZSAqV2ViUGFnZTo6Y3JlYXRlV2luZG93KFFXZWJQYWdlOjpXZWJXaW5kb3dU
eXBlKQpJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRy
b2xsZXJRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQv
TGF5b3V0VGVzdENvbnRyb2xsZXJRdC5jcHAJKHJldmlzaW9uIDUwNjY3KQorKysgV2ViS2l0VG9v
bHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTMyNiw0ICszMjYsNiBAQAogICAgICAgICBzZXR0aW5ncy0+c2V0QXR0cmlidXRl
KFFXZWJTZXR0aW5nczo6T2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkLCB2YWx1ZS50
b0Jvb2woKSk7CiAgICAgZWxzZSBpZiAobmFtZSA9PSAiV2ViS2l0RGVmYXVsdEZvbnRTaXplIikK
ICAgICAgICAgc2V0dGluZ3MtPnNldEZvbnRTaXplKFFXZWJTZXR0aW5nczo6RGVmYXVsdEZvbnRT
aXplLCB2YWx1ZS50b0ludCgpKTsKKyAgICBlbHNlIGlmIChuYW1lID09ICJXZWJLaXRVc2VzUGFn
ZUNhY2hlUHJlZmVyZW5jZUtleSIpCisgICAgICAgIHNldHRpbmdzLT5lbmFibGVQYWdlQ2FjaGUo
dmFsdWUudG9Cb29sKCkpOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>42961</attachid>
            <date>2009-11-11 07:41:14 -0800</date>
            <delta_ts>2009-11-11 14:06:04 -0800</delta_ts>
            <desc>proposed patch</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>6064</size>
            <attacher name="Andras Becsi">abecsi</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9xdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3F0L0NoYW5n
ZUxvZwkocmV2aXNpb24gNTA4MDYpCisrKyBXZWJLaXQvcXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMDktMTEtMTEgIEFuZHJhcyBCZWNzaSAgPGJlY3NpLmFu
ZHJhc0BzdHVkLnUtc3plZ2VkLmh1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFtRdF0gQWRkIHN1cHBvcnQgZm9yIGdsb2JhbCBQYWdlIENhY2hlIHNl
dHRpbmcgdGhyb3VnaCBRV2ViU2V0dGluZ3M6OnNldE1heGltdW1QYWdlc0luQ2FjaGUuCisgICAg
ICAgIFByZXZpb3VzbHkgc2V0TWF4aW11bVBhZ2VzSW5DYWNoZShpbnQgcGFnZXMpIGRpZG4ndCBl
bmFibGUgdGhlIHBhZ2UgY2FjaGUgaWYgcGFnZXM+MC4KKyAgICAgICAgVGhpcyBmaXhlcyBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzEyNjYuCisKKyAgICAgICAgKiBB
cGkvcXdlYnNldHRpbmdzLmNwcDoKKyAgICAgICAgKFFXZWJTZXR0aW5nc1ByaXZhdGU6OmFwcGx5
KToKKyAgICAgICAgKFFXZWJTZXR0aW5nczo6UVdlYlNldHRpbmdzKToKKyAgICAgICAgKFFXZWJT
ZXR0aW5nczo6c2V0TWF4aW11bVBhZ2VzSW5DYWNoZSk6CisgICAgICAgICogQXBpL3F3ZWJzZXR0
aW5ncy5oOgorCiAyMDA5LTExLTExICBMYXN6bG8gR29tYm9zICA8bGFzemxvLjEuZ29tYm9zQG5v
a2lhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNl
bi4KSW5kZXg6IFdlYktpdC9xdC9BcGkvcXdlYnNldHRpbmdzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQvcXQvQXBpL3F3ZWJzZXR0aW5ncy5jcHAJKHJldmlzaW9uIDUwODAyKQorKysgV2ViS2l0
L3F0L0FwaS9xd2Vic2V0dGluZ3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDYsNiArMjA2LDEw
IEBAIHZvaWQgUVdlYlNldHRpbmdzUHJpdmF0ZTo6YXBwbHkoKQogICAgICAgICB2YWx1ZSA9IGF0
dHJpYnV0ZXMudmFsdWUoUVdlYlNldHRpbmdzOjpMb2NhbENvbnRlbnRDYW5BY2Nlc3NSZW1vdGVV
cmxzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbG9iYWwtPmF0dHJp
YnV0ZXMudmFsdWUoUVdlYlNldHRpbmdzOjpMb2NhbENvbnRlbnRDYW5BY2Nlc3NSZW1vdGVVcmxz
KSk7CiAgICAgICAgIHNldHRpbmdzLT5zZXRBbGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJM
cyh2YWx1ZSk7CisKKyAgICAgICAgdmFsdWUgPSBhdHRyaWJ1dGVzLnZhbHVlKFFXZWJTZXR0aW5n
czo6UGFnZUNhY2hlRW5hYmxlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZ2xvYmFsLT5hdHRyaWJ1dGVzLnZhbHVlKFFXZWJTZXR0aW5nczo6UGFnZUNhY2hlRW5hYmxl
ZCkpOworICAgICAgICBzZXR0aW5ncy0+c2V0VXNlc1BhZ2VDYWNoZSh2YWx1ZSk7CiAgICAgfSBl
bHNlIHsKICAgICAgICAgUUxpc3Q8UVdlYlNldHRpbmdzUHJpdmF0ZSo+IHNldHRpbmdzID0gKjo6
YWxsU2V0dGluZ3MoKTsKICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzZXR0aW5ncy5jb3Vu
dCgpOyArK2kpCkBAIC0zNDYsNyArMzUwLDEwIEBAIFFXZWJTZXR0aW5ncyogUVdlYlNldHRpbmdz
OjpnbG9iYWxTZXR0aW4KICAgICAgICAgd2ViIGFwcGxpY2F0aW9uIGNhY2hlIGZlYXR1cmUgaXMg
ZW5hYmxlZCBvciBub3QuIERpc2FibGVkIGJ5IGRlZmF1bHQuCiAgICAgXHZhbHVlIExvY2FsU3Rv
cmFnZUVuYWJsZWQgU3BlY2lmaWVzIHdoZXRoZXIgc3VwcG9ydCBmb3IgdGhlIEhUTUwgNQogICAg
ICAgICBsb2NhbCBzdG9yYWdlIGZlYXR1cmUgaXMgZW5hYmxlZCBvciBub3QuIERpc2FibGVkIGJ5
IGRlZmF1bHQuCi0gICAgXHZhbHVlIExvY2FsQ29udGVudENhbkFjY2Vzc1JlbW90ZVVybHMgU3Bl
Y2lmaWVzIHdoZXRoZXIgbG9jYWxseSBsb2FkZWQgZG9jdW1lbnRzIGFyZSBhbGxvd2VkIHRvIGFj
Y2VzcyByZW1vdGUgdXJscy4KKyAgICBcdmFsdWUgTG9jYWxDb250ZW50Q2FuQWNjZXNzUmVtb3Rl
VXJscyBTcGVjaWZpZXMgd2hldGhlciBsb2NhbGx5CisgICAgICAgIGxvYWRlZCBkb2N1bWVudHMg
YXJlIGFsbG93ZWQgdG8gYWNjZXNzIHJlbW90ZSB1cmxzLgorICAgIFx2YWx1ZSBQYWdlQ2FjaGVF
bmFibGVkIFNwZWNpZmllcyB3aGV0aGVyIHRoZSBhc3NvY2lhdGVkIFdlYlZpZXdzCisgICAgICAg
IHVzZSB0aGUgc2hhcmVkIHBhZ2UgY2FjaGUuIERpc2FibGVkIGJ5IGRlZmF1bHQuCiAqLwogCiAv
KiEKQEAgLTM3Nyw2ICszODQsNyBAQCBRV2ViU2V0dGluZ3M6OlFXZWJTZXR0aW5ncygpCiAgICAg
ZC0+YXR0cmlidXRlcy5pbnNlcnQoUVdlYlNldHRpbmdzOjpPZmZsaW5lV2ViQXBwbGljYXRpb25D
YWNoZUVuYWJsZWQsIGZhbHNlKTsKICAgICBkLT5hdHRyaWJ1dGVzLmluc2VydChRV2ViU2V0dGlu
Z3M6OkxvY2FsU3RvcmFnZUVuYWJsZWQsIGZhbHNlKTsKICAgICBkLT5hdHRyaWJ1dGVzLmluc2Vy
dChRV2ViU2V0dGluZ3M6OkxvY2FsQ29udGVudENhbkFjY2Vzc1JlbW90ZVVybHMsIGZhbHNlKTsK
KyAgICBkLT5hdHRyaWJ1dGVzLmluc2VydChRV2ViU2V0dGluZ3M6OlBhZ2VDYWNoZUVuYWJsZWQs
IGZhbHNlKTsKICAgICBkLT5vZmZsaW5lU3RvcmFnZURlZmF1bHRRdW90YSA9IDUgKiAxMDI0ICog
MTAyNDsKICAgICBkLT5kZWZhdWx0VGV4dEVuY29kaW5nID0gUUxhdGluMVN0cmluZygiaXNvLTg4
NTktMSIpOwogICAgIGQtPnByaW50aW5nTWluaW11bVNocmlua0ZhY3RvciA9IDAuMGY7CkBAIC03
MDQsNiArNzEyLDkgQEAgdm9pZCBRV2ViU2V0dGluZ3M6OmNsZWFyTWVtb3J5Q2FjaGVzKCkKICov
CiB2b2lkIFFXZWJTZXR0aW5nczo6c2V0TWF4aW11bVBhZ2VzSW5DYWNoZShpbnQgcGFnZXMpCiB7
CisgICAgUVdlYlNldHRpbmdzUHJpdmF0ZSogZ2xvYmFsID0gUVdlYlNldHRpbmdzOjpnbG9iYWxT
ZXR0aW5ncygpLT5kOworICAgIGdsb2JhbC0+YXR0cmlidXRlcy5pbnNlcnQoUVdlYlNldHRpbmdz
OjpQYWdlQ2FjaGVFbmFibGVkLCBxTWF4KDAsIHBhZ2VzKSk7CisgICAgZ2xvYmFsLT5hcHBseSgp
OwogICAgIFdlYkNvcmU6OnBhZ2VDYWNoZSgpLT5zZXRDYXBhY2l0eShxTWF4KDAsIHBhZ2VzKSk7
CiB9CiAKSW5kZXg6IFdlYktpdC9xdC9BcGkvcXdlYnNldHRpbmdzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0L3F0L0FwaS9xd2Vic2V0dGluZ3MuaAkocmV2aXNpb24gNTA4MDIpCisrKyBXZWJLaXQv
cXQvQXBpL3F3ZWJzZXR0aW5ncy5oCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw3ICs2Nyw4IEBAIHB1
YmxpYzoKICAgICAgICAgTG9jYWxTdG9yYWdlRGF0YWJhc2VFbmFibGVkID0gTG9jYWxTdG9yYWdl
RW5hYmxlZCwKICNlbmRpZgogICAgICAgICBMb2NhbENvbnRlbnRDYW5BY2Nlc3NSZW1vdGVVcmxz
LAotICAgICAgICBEbnNQcmVmZXRjaEVuYWJsZWQKKyAgICAgICAgRG5zUHJlZmV0Y2hFbmFibGVk
LAorICAgICAgICBQYWdlQ2FjaGVFbmFibGVkCiAgICAgfTsKICAgICBlbnVtIFdlYkdyYXBoaWMg
ewogICAgICAgICBNaXNzaW5nSW1hZ2VHcmFwaGljLApJbmRleDogV2ViS2l0VG9vbHMvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gNTA4MDYp
CisrKyBXZWJLaXRUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBA
QAorMjAwOS0xMS0xMSAgQW5kcmFzIEJlY3NpICA8YmVjc2kuYW5kcmFzQHN0dWQudS1zemVnZWQu
aHU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW1F0
XSBBZGQgV2ViS2l0VXNlc1BhZ2VDYWNoZVByZWZlcmVuY2VLZXkgb3ZlcnJpZGluZyBzdXBwb3J0
IHRvIERSVCdzIExheW91dFRlc3RDb250cm9sbGVyLgorCisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvcXQvRHVtcFJlbmRlclRyZWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViUGFnZTo6cmVz
ZXRTZXR0aW5ncyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRy
b2xsZXJRdC5jcHA6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6b3ZlcnJpZGVQcmVm
ZXJlbmNlKToKKwogMjAwOS0xMS0xMSAgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4gIDxrZW5u
ZXRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTWFyayBSb3dlLgpJbmRleDog
V2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvRHVtcFJlbmRlclRyZWUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0R1bXBSZW5kZXJUcmVlLmNwcAko
cmV2aXNpb24gNTA4MDIpCisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9EdW1wUmVu
ZGVyVHJlZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzOSwxMiArMTM5LDEyIEBAIHZvaWQgV2Vi
UGFnZTo6cmVzZXRTZXR0aW5ncygpCiAgICAgLy8gbGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJp
ZGVQcmVmZXJlbmNlKCkgb3Igc2ltaWxhci4KIAogICAgIHNldHRpbmdzKCktPnJlc2V0Rm9udFNp
emUoUVdlYlNldHRpbmdzOjpEZWZhdWx0Rm9udFNpemUpOwotCiAgICAgc2V0dGluZ3MoKS0+cmVz
ZXRBdHRyaWJ1dGUoUVdlYlNldHRpbmdzOjpKYXZhc2NyaXB0Q2FuT3BlbldpbmRvd3MpOwogICAg
IHNldHRpbmdzKCktPnJlc2V0QXR0cmlidXRlKFFXZWJTZXR0aW5nczo6SmF2YXNjcmlwdEVuYWJs
ZWQpOwogICAgIHNldHRpbmdzKCktPnJlc2V0QXR0cmlidXRlKFFXZWJTZXR0aW5nczo6UHJpdmF0
ZUJyb3dzaW5nRW5hYmxlZCk7CiAgICAgc2V0dGluZ3MoKS0+cmVzZXRBdHRyaWJ1dGUoUVdlYlNl
dHRpbmdzOjpMaW5rc0luY2x1ZGVkSW5Gb2N1c0NoYWluKTsKICAgICBzZXR0aW5ncygpLT5yZXNl
dEF0dHJpYnV0ZShRV2ViU2V0dGluZ3M6Ok9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlRW5hYmxl
ZCk7CisgICAgc2V0dGluZ3MoKS0+c2V0TWF4aW11bVBhZ2VzSW5DYWNoZSgwKTsgLy8gcmVzZXQg
dG8gZGVmYXVsdAogfQogCiBRV2ViUGFnZSAqV2ViUGFnZTo6Y3JlYXRlV2luZG93KFFXZWJQYWdl
OjpXZWJXaW5kb3dUeXBlKQpJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5
b3V0VGVzdENvbnRyb2xsZXJRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5jcHAJKHJldmlzaW9uIDUwODAyKQor
KysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMyNiw0ICszMjYsNiBAQCB2b2lkIExheW91dFRlc3RDb250
cm9sbGVyOjpvdmVycmlkZVByZWZlCiAgICAgICAgIHNldHRpbmdzLT5zZXRBdHRyaWJ1dGUoUVdl
YlNldHRpbmdzOjpPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZUVuYWJsZWQsIHZhbHVlLnRvQm9v
bCgpKTsKICAgICBlbHNlIGlmIChuYW1lID09ICJXZWJLaXREZWZhdWx0Rm9udFNpemUiKQogICAg
ICAgICBzZXR0aW5ncy0+c2V0Rm9udFNpemUoUVdlYlNldHRpbmdzOjpEZWZhdWx0Rm9udFNpemUs
IHZhbHVlLnRvSW50KCkpOworICAgIGVsc2UgaWYgKG5hbWUgPT0gIldlYktpdFVzZXNQYWdlQ2Fj
aGVQcmVmZXJlbmNlS2V5IikKKyAgICAgICAgc2V0dGluZ3MtPnNldE1heGltdW1QYWdlc0luQ2Fj
aGUodmFsdWUudG9JbnQoKSk7CiB9Cg==
</data>
<flag name="review"
          id="24596"
          type_id="1"
          status="-"
          setter="hausmann"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>42998</attachid>
            <date>2009-11-11 14:06:04 -0800</date>
            <delta_ts>2009-11-13 04:22:38 -0800</delta_ts>
            <desc>simlified patch</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>3986</size>
            <attacher name="Andras Becsi">abecsi</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9xdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3F0L0NoYW5n
ZUxvZwkocmV2aXNpb24gNTA4NDApCisrKyBXZWJLaXQvcXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMDktMTEtMTEgIEFuZHJhcyBCZWNzaSAgPGJlY3NpLmFu
ZHJhc0BzdHVkLnUtc3plZ2VkLmh1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFtRdF0gRW5hYmxlIFBhZ2UgQ2FjaGUgaWYgc2V0TWF4aW11bVBhZ2Vz
SW5DYWNoZSBuZWVkcyBpdC4KKyAgICAgICAgVGhpcyBmaXhlcyBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzEyNjYuCisKKyAgICAgICAgKiBBcGkvcXdlYnNldHRpbmdz
LmNwcDoKKyAgICAgICAgKFFXZWJTZXR0aW5nc1ByaXZhdGU6OmFwcGx5KToKKyAgICAgICAgKFFX
ZWJTZXR0aW5nczo6c2V0TWF4aW11bVBhZ2VzSW5DYWNoZSk6CisKIDIwMDktMTEtMTEgIEtlbm5l
dGggUm9oZGUgQ2hyaXN0aWFuc2VuICA8a2VubmV0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIFVu
cmV2aWV3ZWQgYnVpbGRib3QgZml4LgpJbmRleDogV2ViS2l0L3F0L0FwaS9xd2Vic2V0dGluZ3Mu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9xdC9BcGkvcXdlYnNldHRpbmdzLmNwcAkocmV2aXNp
b24gNTA4MDIpCisrKyBXZWJLaXQvcXQvQXBpL3F3ZWJzZXR0aW5ncy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTIwNiw2ICsyMDYsNyBAQCB2b2lkIFFXZWJTZXR0aW5nc1ByaXZhdGU6OmFwcGx5KCkK
ICAgICAgICAgdmFsdWUgPSBhdHRyaWJ1dGVzLnZhbHVlKFFXZWJTZXR0aW5nczo6TG9jYWxDb250
ZW50Q2FuQWNjZXNzUmVtb3RlVXJscywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZ2xvYmFsLT5hdHRyaWJ1dGVzLnZhbHVlKFFXZWJTZXR0aW5nczo6TG9jYWxDb250ZW50
Q2FuQWNjZXNzUmVtb3RlVXJscykpOwogICAgICAgICBzZXR0aW5ncy0+c2V0QWxsb3dVbml2ZXJz
YWxBY2Nlc3NGcm9tRmlsZVVSTHModmFsdWUpOworICAgICAgICBzZXR0aW5ncy0+c2V0VXNlc1Bh
Z2VDYWNoZShXZWJDb3JlOjpwYWdlQ2FjaGUoKS0+Y2FwYWNpdHkoKSk7CiAgICAgfSBlbHNlIHsK
ICAgICAgICAgUUxpc3Q8UVdlYlNldHRpbmdzUHJpdmF0ZSo+IHNldHRpbmdzID0gKjo6YWxsU2V0
dGluZ3MoKTsKICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzZXR0aW5ncy5jb3VudCgpOyAr
K2kpCkBAIC03MDQsNyArNzA1LDkgQEAgdm9pZCBRV2ViU2V0dGluZ3M6OmNsZWFyTWVtb3J5Q2Fj
aGVzKCkKICovCiB2b2lkIFFXZWJTZXR0aW5nczo6c2V0TWF4aW11bVBhZ2VzSW5DYWNoZShpbnQg
cGFnZXMpCiB7CisgICAgUVdlYlNldHRpbmdzUHJpdmF0ZSogZ2xvYmFsID0gUVdlYlNldHRpbmdz
OjpnbG9iYWxTZXR0aW5ncygpLT5kOwogICAgIFdlYkNvcmU6OnBhZ2VDYWNoZSgpLT5zZXRDYXBh
Y2l0eShxTWF4KDAsIHBhZ2VzKSk7CisgICAgZ2xvYmFsLT5hcHBseSgpOwogfQogCiAvKiEKSW5k
ZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9DaGFu
Z2VMb2cJKHJldmlzaW9uIDUwODQwKQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMDktMTEtMTEgIEFuZHJhcyBCZWNzaSAgPGJlY3Np
LmFuZHJhc0BzdHVkLnUtc3plZ2VkLmh1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFtRdF0gQWRkIFdlYktpdFVzZXNQYWdlQ2FjaGVQcmVmZXJlbmNl
S2V5IG92ZXJyaWRpbmcgc3VwcG9ydCB0byBEUlQncyBMYXlvdXRUZXN0Q29udHJvbGxlci4KKwor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3F0L0R1bXBSZW5kZXJUcmVlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OldlYlBhZ2U6OnJlc2V0U2V0dGluZ3MpOgorICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENv
bnRyb2xsZXI6Om92ZXJyaWRlUHJlZmVyZW5jZSk6CisKIDIwMDktMTEtMTEgIEd1c3Rhdm8gTm9y
b25oYSBTaWx2YSAgPGd1c3Rhdm8ubm9yb25oYUBjb2xsYWJvcmEuY28udWs+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgSmFuIEFsb256by4KSW5kZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVl
L3F0L0R1bXBSZW5kZXJUcmVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVu
ZGVyVHJlZS9xdC9EdW1wUmVuZGVyVHJlZS5jcHAJKHJldmlzaW9uIDUwODAyKQorKysgV2ViS2l0
VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvRHVtcFJlbmRlclRyZWUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMzksMTIgKzEzOSwxMiBAQCB2b2lkIFdlYlBhZ2U6OnJlc2V0U2V0dGluZ3MoKQogICAg
IC8vIGxheW91dFRlc3RDb250cm9sbGVyLm92ZXJyaWRlUHJlZmVyZW5jZSgpIG9yIHNpbWlsYXIu
CiAKICAgICBzZXR0aW5ncygpLT5yZXNldEZvbnRTaXplKFFXZWJTZXR0aW5nczo6RGVmYXVsdEZv
bnRTaXplKTsKLQogICAgIHNldHRpbmdzKCktPnJlc2V0QXR0cmlidXRlKFFXZWJTZXR0aW5nczo6
SmF2YXNjcmlwdENhbk9wZW5XaW5kb3dzKTsKICAgICBzZXR0aW5ncygpLT5yZXNldEF0dHJpYnV0
ZShRV2ViU2V0dGluZ3M6OkphdmFzY3JpcHRFbmFibGVkKTsKICAgICBzZXR0aW5ncygpLT5yZXNl
dEF0dHJpYnV0ZShRV2ViU2V0dGluZ3M6OlByaXZhdGVCcm93c2luZ0VuYWJsZWQpOwogICAgIHNl
dHRpbmdzKCktPnJlc2V0QXR0cmlidXRlKFFXZWJTZXR0aW5nczo6TGlua3NJbmNsdWRlZEluRm9j
dXNDaGFpbik7CiAgICAgc2V0dGluZ3MoKS0+cmVzZXRBdHRyaWJ1dGUoUVdlYlNldHRpbmdzOjpP
ZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZUVuYWJsZWQpOworICAgIHNldHRpbmdzKCktPnNldE1h
eGltdW1QYWdlc0luQ2FjaGUoMCk7IC8vIHJlc2V0IHRvIGRlZmF1bHQKIH0KIAogUVdlYlBhZ2Ug
KldlYlBhZ2U6OmNyZWF0ZVdpbmRvdyhRV2ViUGFnZTo6V2ViV2luZG93VHlwZSkKSW5kZXg6IFdl
YktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250
cm9sbGVyUXQuY3BwCShyZXZpc2lvbiA1MDgwMikKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJU
cmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjYs
NCArMzI2LDYgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6b3ZlcnJpZGVQcmVmZQogICAg
ICAgICBzZXR0aW5ncy0+c2V0QXR0cmlidXRlKFFXZWJTZXR0aW5nczo6T2ZmbGluZVdlYkFwcGxp
Y2F0aW9uQ2FjaGVFbmFibGVkLCB2YWx1ZS50b0Jvb2woKSk7CiAgICAgZWxzZSBpZiAobmFtZSA9
PSAiV2ViS2l0RGVmYXVsdEZvbnRTaXplIikKICAgICAgICAgc2V0dGluZ3MtPnNldEZvbnRTaXpl
KFFXZWJTZXR0aW5nczo6RGVmYXVsdEZvbnRTaXplLCB2YWx1ZS50b0ludCgpKTsKKyAgICBlbHNl
IGlmIChuYW1lID09ICJXZWJLaXRVc2VzUGFnZUNhY2hlUHJlZmVyZW5jZUtleSIpCisgICAgICAg
IHNldHRpbmdzLT5zZXRNYXhpbXVtUGFnZXNJbkNhY2hlKHZhbHVlLnRvSW50KCkpOwogfQo=
</data>
<flag name="review"
          id="24653"
          type_id="1"
          status="-"
          setter="hausmann"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>43151</attachid>
            <date>2009-11-13 05:19:57 -0800</date>
            <delta_ts>2009-11-13 05:49:37 -0800</delta_ts>
            <desc>also change DRT to set the cache globally</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>3958</size>
            <attacher name="Andras Becsi">abecsi</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9xdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3F0L0NoYW5n
ZUxvZwkocmV2aXNpb24gNTA5MzUpCisrKyBXZWJLaXQvcXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMDktMTEtMTMgIEFuZHJhcyBCZWNzaSAgPGJlY3NpLmFu
ZHJhc0BzdHVkLnUtc3plZ2VkLmh1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFtRdF0gRW5hYmxlIFBhZ2UgQ2FjaGUgaWYgc2V0TWF4aW11bVBhZ2Vz
SW5DYWNoZSBuZWVkcyBpdC4KKyAgICAgICAgVGhpcyBmaXhlcyBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzEyNjYuCisKKyAgICAgICAgKiBBcGkvcXdlYnNldHRpbmdz
LmNwcDoKKyAgICAgICAgKFFXZWJTZXR0aW5nc1ByaXZhdGU6OmFwcGx5KToKKyAgICAgICAgKFFX
ZWJTZXR0aW5nczo6c2V0TWF4aW11bVBhZ2VzSW5DYWNoZSk6CisKIDIwMDktMTEtMTIgIFNoaW5p
Y2hpcm8gSGFtYWppICA8aGFtYWppQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBEYXJpbiBBZGxlci4KSW5kZXg6IFdlYktpdC9xdC9BcGkvcXdlYnNldHRpbmdzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQvcXQvQXBpL3F3ZWJzZXR0aW5ncy5jcHAJKHJldmlzaW9uIDUwOTM1
KQorKysgV2ViS2l0L3F0L0FwaS9xd2Vic2V0dGluZ3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
OTgsNiArMTk4LDcgQEAgdm9pZCBRV2ViU2V0dGluZ3NQcml2YXRlOjphcHBseSgpCiAgICAgICAg
IHZhbHVlID0gYXR0cmlidXRlcy52YWx1ZShRV2ViU2V0dGluZ3M6OkxvY2FsQ29udGVudENhbkFj
Y2Vzc1JlbW90ZVVybHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGds
b2JhbC0+YXR0cmlidXRlcy52YWx1ZShRV2ViU2V0dGluZ3M6OkxvY2FsQ29udGVudENhbkFjY2Vz
c1JlbW90ZVVybHMpKTsKICAgICAgICAgc2V0dGluZ3MtPnNldEFsbG93VW5pdmVyc2FsQWNjZXNz
RnJvbUZpbGVVUkxzKHZhbHVlKTsKKyAgICAgICAgc2V0dGluZ3MtPnNldFVzZXNQYWdlQ2FjaGUo
V2ViQ29yZTo6cGFnZUNhY2hlKCktPmNhcGFjaXR5KCkpOwogICAgIH0gZWxzZSB7CiAgICAgICAg
IFFMaXN0PFFXZWJTZXR0aW5nc1ByaXZhdGUqPiBzZXR0aW5ncyA9ICo6OmFsbFNldHRpbmdzKCk7
CiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2V0dGluZ3MuY291bnQoKTsgKytpKQpAQCAt
NjQwLDcgKzY0MSw5IEBAIHZvaWQgUVdlYlNldHRpbmdzOjpjbGVhck1lbW9yeUNhY2hlcygpCiAq
Lwogdm9pZCBRV2ViU2V0dGluZ3M6OnNldE1heGltdW1QYWdlc0luQ2FjaGUoaW50IHBhZ2VzKQog
eworICAgIFFXZWJTZXR0aW5nc1ByaXZhdGUqIGdsb2JhbCA9IFFXZWJTZXR0aW5nczo6Z2xvYmFs
U2V0dGluZ3MoKS0+ZDsKICAgICBXZWJDb3JlOjpwYWdlQ2FjaGUoKS0+c2V0Q2FwYWNpdHkocU1h
eCgwLCBwYWdlcykpOworICAgIGdsb2JhbC0+YXBwbHkoKTsKIH0KIAogLyohCkluZGV4OiBXZWJL
aXRUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCShy
ZXZpc2lvbiA1MDkzNSkKKysrIFdlYktpdFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE0IEBACisyMDA5LTExLTEzICBBbmRyYXMgQmVjc2kgIDxiZWNzaS5hbmRyYXNA
c3R1ZC51LXN6ZWdlZC5odT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBbUXRdIEFkZCBXZWJLaXRVc2VzUGFnZUNhY2hlUHJlZmVyZW5jZUtleSBvdmVy
cmlkaW5nIHN1cHBvcnQgdG8gRFJUJ3MgTGF5b3V0VGVzdENvbnRyb2xsZXIuCisKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9xdC9EdW1wUmVuZGVyVHJlZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJQYWdlOjpyZXNldFNldHRpbmdzKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9xdC9M
YXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVy
OjpvdmVycmlkZVByZWZlcmVuY2UpOgorCiAyMDA5LTExLTEzICBFcmljIFNlaWRlbCAgPGVyaWNA
d2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgpJbmRleDogV2Vi
S2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvRHVtcFJlbmRlclRyZWUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0R1bXBSZW5kZXJUcmVlLmNwcAkocmV2
aXNpb24gNTA5MzUpCisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9EdW1wUmVuZGVy
VHJlZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0MCwxMiArMTQwLDEyIEBAIHZvaWQgV2ViUGFn
ZTo6cmVzZXRTZXR0aW5ncygpCiAgICAgLy8gbGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQ
cmVmZXJlbmNlKCkgb3Igc2ltaWxhci4KIAogICAgIHNldHRpbmdzKCktPnJlc2V0Rm9udFNpemUo
UVdlYlNldHRpbmdzOjpEZWZhdWx0Rm9udFNpemUpOwotCiAgICAgc2V0dGluZ3MoKS0+cmVzZXRB
dHRyaWJ1dGUoUVdlYlNldHRpbmdzOjpKYXZhc2NyaXB0Q2FuT3BlbldpbmRvd3MpOwogICAgIHNl
dHRpbmdzKCktPnJlc2V0QXR0cmlidXRlKFFXZWJTZXR0aW5nczo6SmF2YXNjcmlwdEVuYWJsZWQp
OwogICAgIHNldHRpbmdzKCktPnJlc2V0QXR0cmlidXRlKFFXZWJTZXR0aW5nczo6UHJpdmF0ZUJy
b3dzaW5nRW5hYmxlZCk7CiAgICAgc2V0dGluZ3MoKS0+cmVzZXRBdHRyaWJ1dGUoUVdlYlNldHRp
bmdzOjpMaW5rc0luY2x1ZGVkSW5Gb2N1c0NoYWluKTsKICAgICBzZXR0aW5ncygpLT5yZXNldEF0
dHJpYnV0ZShRV2ViU2V0dGluZ3M6Ok9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZCk7
CisgICAgUVdlYlNldHRpbmdzOjpzZXRNYXhpbXVtUGFnZXNJbkNhY2hlKDApOyAvLyByZXNldCB0
byBkZWZhdWx0CiB9CiAKIFFXZWJQYWdlICpXZWJQYWdlOjpjcmVhdGVXaW5kb3coUVdlYlBhZ2U6
OldlYldpbmRvd1R5cGUpCkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlv
dXRUZXN0Q29udHJvbGxlclF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVu
ZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcAkocmV2aXNpb24gNTA5MzUpCisr
KyBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzI2LDQgKzMyNiw2IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRy
b2xsZXI6Om92ZXJyaWRlUHJlZmUKICAgICAgICAgc2V0dGluZ3MtPnNldEF0dHJpYnV0ZShRV2Vi
U2V0dGluZ3M6Ok9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZCwgdmFsdWUudG9Cb29s
KCkpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gIldlYktpdERlZmF1bHRGb250U2l6ZSIpCiAgICAg
ICAgIHNldHRpbmdzLT5zZXRGb250U2l6ZShRV2ViU2V0dGluZ3M6OkRlZmF1bHRGb250U2l6ZSwg
dmFsdWUudG9JbnQoKSk7CisgICAgZWxzZSBpZiAobmFtZSA9PSAiV2ViS2l0VXNlc1BhZ2VDYWNo
ZVByZWZlcmVuY2VLZXkiKQorICAgICAgICBRV2ViU2V0dGluZ3M6OnNldE1heGltdW1QYWdlc0lu
Q2FjaGUodmFsdWUudG9JbnQoKSk7CiB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>