<?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>55011</bug_id>
          
          <creation_ts>2011-02-22 17:38:50 -0800</creation_ts>
          <short_desc>Fragment parsing does not need to use HTMLSourceTracker</short_desc>
          <delta_ts>2011-02-24 23:24:16 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>48719</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>aestes</cc>
    
    <cc>commit-queue</cc>
    
    <cc>tonyg</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>355731</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-02-22 17:38:50 -0800</bug_when>
    <thetext>Fragment parsing does not need to use HTMLSourceTracker

Fragment parsing still calls m_sourceTracker.start() and end() even though the data isn&apos;t needed.

This is most noticable due to the malloc it causes.  However that malloc will go away if bug 55005 is fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>355776</commentid>
    <comment_count>1</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-02-22 19:31:06 -0800</bug_when>
    <thetext>I&apos;m not sure I believe it, but this patch seems to make our tiny-innerHTML benchmark twice as fast:

Before patch:
avg 5586.1
median 5594
stdev 41.295157101045135
min 5425
max 5633

After Patch:
avg 2603.9
median 2609.5
stdev 32.500615378789355
min 2475
max 2649

I suspect (if those numbers are to be believed!) that&apos;s all due to avoiding bug 55005.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>355779</commentid>
    <comment_count>2</comment_count>
      <attachid>83429</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-02-22 19:35:15 -0800</bug_when>
    <thetext>Created attachment 83429
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>355787</commentid>
    <comment_count>3</comment_count>
      <attachid>83429</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-02-22 19:42:30 -0800</bug_when>
    <thetext>Comment on attachment 83429
Patch

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

&gt; Source/WebCore/html/parser/HTMLDocumentParser.h:155
&gt; +    bool m_isParsingFragment;

Can this class ask someone else whether we&apos;re parsing a fragment?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>355791</commentid>
    <comment_count>4</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-02-22 19:46:26 -0800</bug_when>
    <thetext>The reason why we don&apos;t see the same thing with PerformanceTests/Parser/html-parser.html, is that html-parser and tiny-innerHTML are totally different benchmarks.

tiny-innerHTML doesn&apos;t really even make sense as a benchmark, and was only created to model Peacekeeper (which I believe to be a broken benchmark!).  tiny-innerHTML (and peacekeeper) are just taking very tiny numbers (the time it takes to innerHTML a single text node) and multiplying them by very very large numbers.  In the real world, we don&apos;t care if innerHTML of a single text string takes .5 miliseconds or .2 miliseconds. :)  Both are well beyond what any website uses.

html-parser.html on the other hand is a very useful benchmark.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>355794</commentid>
    <comment_count>5</comment_count>
      <attachid>83436</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-02-22 19:50:03 -0800</bug_when>
    <thetext>Created attachment 83436
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>355796</commentid>
    <comment_count>6</comment_count>
      <attachid>83436</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-02-22 19:50:55 -0800</bug_when>
    <thetext>Comment on attachment 83436
Patch

Yay.  This seems like a much less invasive way to get this performance.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>355797</commentid>
    <comment_count>7</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-02-22 19:57:13 -0800</bug_when>
    <thetext>I&apos;ve looked at the next hottest section and it is again caused by bug 55005.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>355837</commentid>
    <comment_count>8</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2011-02-22 21:34:39 -0800</bug_when>
    <thetext>(In reply to comment #1)
&gt; I&apos;m not sure I believe it, but this patch seems to make our tiny-innerHTML benchmark twice as fast:
&gt; 
&gt; Before patch:
&gt; avg 5586.1
&gt; median 5594
&gt; stdev 41.295157101045135
&gt; min 5425
&gt; max 5633
&gt; 
&gt; After Patch:
&gt; avg 2603.9
&gt; median 2609.5
&gt; stdev 32.500615378789355
&gt; min 2475
&gt; max 2649
&gt; 
&gt; I suspect (if those numbers are to be believed!) that&apos;s all due to avoiding bug 55005.

I&apos;m not able to reproduce as much of a speedup as you&apos;re seeing. Here are the numbers I&apos;m getting on tiny-innerHTML:

Before:
avg 2990.85
median 2967
stdev 68.55382921471272
min 2907
max 3198

After:
avg 2562
median 2569
stdev 33.406586176980134
min 2420
max 2582

Is it possible that you were testing with debug builds? That would explain why your before numbers are so high since malloc() is much more expensive in debug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>355841</commentid>
    <comment_count>9</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2011-02-22 21:37:22 -0800</bug_when>
    <thetext>Here are the peacekeeper numbers:

Before:
domDynamicCreationCreateElement 21691.973969631235 ops
domDynamicCreationInnerHTML 13333.333333333334 ops
domJQueryAttributeFilters 5047.955577990913 ops
domJQueryBasics 4191.5 ops
domJQueryContentFilters 1056 ops
domJQueryHierarchy 1692.5 ops

After:
domDynamicCreationCreateElement 21739.130434782608 ops
domDynamicCreationInnerHTML 14164.3059490085 ops
domJQueryAttributeFilters 4954.5 ops
domJQueryBasics 4182.5 ops
domJQueryContentFilters 1080 ops
domJQueryHierarchy 1713.5 ops</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>355879</commentid>
    <comment_count>10</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2011-02-22 22:43:05 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; The reason why we don&apos;t see the same thing with PerformanceTests/Parser/html-parser.html, is that html-parser and tiny-innerHTML are totally different benchmarks.
&gt; 
&gt; tiny-innerHTML doesn&apos;t really even make sense as a benchmark, and was only created to model Peacekeeper (which I believe to be a broken benchmark!).  tiny-innerHTML (and peacekeeper) are just taking very tiny numbers (the time it takes to innerHTML a single text node) and multiplying them by very very large numbers.  In the real world, we don&apos;t care if innerHTML of a single text string takes .5 miliseconds or .2 miliseconds. :)  Both are well beyond what any website uses.
&gt; 
&gt; html-parser.html on the other hand is a very useful benchmark.

I don&apos;t think we should discount the prevalence of repeated calls to innerHTML as a content generation technique. For instance, here&apos;s a benchmark from quirksmode comparing DOM API to innerHTML for creating a 50x50 table:

http://www.quirksmode.org/dom/innerhtml.html

One interesting thing this benchmark demonstrates is that, especially in IE, innerHTML is significantly faster than using DOM API. It seems likely that at least some content authors have used this as a rule of thumb and designed pages that rely on innerHTML to generate dynamic content. That convinces me that improving fragment parsing performance is an important task regardless of our opinions of Peacekeeper as a benchmark.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>355946</commentid>
    <comment_count>11</comment_count>
      <attachid>83436</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-02-23 02:07:50 -0800</bug_when>
    <thetext>Comment on attachment 83436
Patch

Rejecting attachment 83436 from commit-queue.

Failed to run &quot;[&apos;./Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;--bot-id=cr-jail-3&apos;, &apos;build-...&quot; exit_code: 2

Last 500 characters of output:
URL ...........................
http/tests/security/listener .......
http/tests/security/mixedContent ................
http/tests/security/originHeader .....
http/tests/security/postMessage .......
http/tests/security/xssAuditor ................
http/tests/security/xssAuditor/dom-write-innerHTML.html -&gt; failed

Exiting early after 1 failures. 22353 tests run.
618.34s total testing time

22352 test cases (99%) succeeded
1 test case (&lt;1%) had incorrect layout
14 test cases (&lt;1%) had stderr output

Full output: http://queues.webkit.org/results/7982076</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>355954</commentid>
    <comment_count>12</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-02-23 02:17:43 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; Is it possible that you were testing with debug builds? That would explain why your before numbers are so high since malloc() is much more expensive in debug.

It&apos;s not possible to run the benchmark in a Debug build (slow script dialog), so no. :)  I suspect that this benchmark is so tight that we&apos;re hitting hardware caching differences, and that the improvements aren&apos;t necessarily real.  It&apos;s also possible malloc is more expensive (relatively speaking) on my machine (due to locking) because it&apos;s a 16 core machine instead of whatever you&apos;re testing on.  Given that Peacekeeper didn&apos;t impove as much as we saw tiny-innerHTML, perhaps the reduced benchmark is too reduced.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>355971</commentid>
    <comment_count>13</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-02-23 03:13:03 -0800</bug_when>
    <thetext>@abarth: I&apos;ve removed support for XSSFiltering innerHTML content as per our discussion.  Please re-confirm that this is OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>355973</commentid>
    <comment_count>14</comment_count>
      <attachid>83463</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-02-23 03:13:44 -0800</bug_when>
    <thetext>Created attachment 83463
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>355981</commentid>
    <comment_count>15</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-02-23 03:28:26 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; (In reply to comment #4)
&gt; &gt; The reason why we don&apos;t see the same thing with PerformanceTests/Parser/html-parser.html, is that html-parser and tiny-innerHTML are totally different benchmarks.
&gt; &gt; 
&gt; &gt; tiny-innerHTML doesn&apos;t really even make sense as a benchmark, and was only created to model Peacekeeper (which I believe to be a broken benchmark!).  tiny-innerHTML (and peacekeeper) are just taking very tiny numbers (the time it takes to innerHTML a single text node) and multiplying them by very very large numbers.  In the real world, we don&apos;t care if innerHTML of a single text string takes .5 miliseconds or .2 miliseconds. :)  Both are well beyond what any website uses.
&gt; &gt; 
&gt; &gt; html-parser.html on the other hand is a very useful benchmark.
&gt; 
&gt; I don&apos;t think we should discount the prevalence of repeated calls to innerHTML as a content generation technique. For instance, here&apos;s a benchmark from quirksmode comparing DOM API to innerHTML for creating a 50x50 table:
&gt;
&gt; http://www.quirksmode.org/dom/innerhtml.html

Sure.  It&apos;s just that the bechmark does 100k innerHTMLs, each of which takes only 0.056 milliseconds!  The fact that we&apos;re fretting about reducing each to 0.026 milliseconds is silly IMO. :)  Shaving 0.03ms per innerHTML does not seem worth our time (which is why I continue to believe the benchmark is crap).

It&apos;s more interesting that we can parse an entire 5MB HTML file in 800ms, and continuing to make that number smaller seems useful.

&gt; One interesting thing this benchmark demonstrates is that, especially in IE, innerHTML is significantly faster than using DOM API. It seems likely that at least some content authors have used this as a rule of thumb and designed pages that rely on innerHTML to generate dynamic content.

Cool.  I&apos;ll take a look at http://www.quirksmode.org/dom/innerhtml.html and see if there is anything useful there.

&gt; That convinces me that improving fragment parsing performance is an important task regardless of our opinions of Peacekeeper as a benchmark.

Yes, but peacekeeper (or at lest tiny-innerHTML) does not actually test fragment parsing performance since total time to parse the example fragment is counted in microseconds. :)

We could continue to improve our longer-running parser benchmarks and probably see further improvements to the PLT score (which is also basically useless due to being too small a set these days) and other &quot;more real&quot; pages.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>355984</commentid>
    <comment_count>16</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-02-23 03:29:53 -0800</bug_when>
    <thetext>I think we mostly agree, btw.  And are just re-stating the same things back and forth. :)  I&apos;m interested in improving perf here and will spend another day looking at this tomorrow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>356935</commentid>
    <comment_count>17</comment_count>
      <attachid>83463</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-02-24 06:34:26 -0800</bug_when>
    <thetext>Comment on attachment 83463
Patch

Clearing flags on attachment: 83463

Committed r79554: &lt;http://trac.webkit.org/changeset/79554&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>356936</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-02-24 06:34:30 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>83429</attachid>
            <date>2011-02-22 19:35:15 -0800</date>
            <delta_ts>2011-02-22 19:49:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-55011-20110222193514.patch</filename>
            <type>text/plain</type>
            <size>3879</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogNzkzNzMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA0MGJmNjQzMDBlMjkxYTNi
MDViNjRlZDZiMDYxNzYyNDFkZTc2NmUzLi40ODRhM2ViNTcwODFhNDZmOWIyZjZlODZkYzAzM2M2
ZjMzODIyYjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMTEtMDItMjIgIEVyaWMg
U2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEZyYWdtZW50IHBhcnNpbmcgZG9lcyBub3QgbmVlZCB0byB1c2Ug
SFRNTFNvdXJjZVRyYWNrZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTU1MDExCisKKyAgICAgICAgQW55IHBlcmZvcm1hbmNlIGdhaW5zIGZyb20gdGhp
cyBwYXRjaCBhcmUgbGlrZWx5CisgICAgICAgIHRoZSByZXN1bHQgb2Ygd29ya2luZyBhcm91bmQ6
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NTAwNQor
ICAgICAgICAoV2hpY2ggc3VnZ2VzdHMgdGhhdCBmaXhpbmcgYnVnIDU1MDA1IHdpbGwgc3BlZWQK
KyAgICAgICAgdXAgbm9ybWFsIEhUTUwgcGFyc2luZyBzdWJzdGFudGlhbGx5LikKKworICAgICAg
ICBBc3N1bWluZyBJIHJhbiB0aGUgbnVtYmVycyBjb3JyZWN0LCBoZXJlIGlzIHRoZQorICAgICAg
ICBjaGFuZ2UgZnJvbSBQZXJmb3JtYW5jZVRlc3RzL1BhcnNlci90aW55LWlubmVySFRNTDoKKyAg
ICAgICAgQmVmb3JlIHBhdGNoOgorICAgICAgICBhdmcgNTU4Ni4xCisgICAgICAgIG1lZGlhbiA1
NTk0CisgICAgICAgIHN0ZGV2IDQxLjI5NTE1NzEwMTA0NTEzNQorICAgICAgICBtaW4gNTQyNQor
ICAgICAgICBtYXggNTYzMworCisgICAgICAgIEFmdGVyIFBhdGNoOgorICAgICAgICBhdmcgMjYw
My45CisgICAgICAgIG1lZGlhbiAyNjA5LjUKKyAgICAgICAgc3RkZXYgMzIuNTAwNjE1Mzc4Nzg5
MzU1CisgICAgICAgIG1pbiAyNDc1CisgICAgICAgIG1heCAyNjQ5CisKKyAgICAgICAgQXMgeW91
IGNhbiBzZWUsIHRoYXQgbWFsbG9jIChmcm9tIGJ1ZyA1NTAwNSkgYW5kIHByb2JhYmx5CisgICAg
ICAgIHRvIGEgbGVzc2VyIGV4dGVudCBhbGwgdGhlIGV4dHJhIGNvZGUgZXhlY3V0aW9uIGluIHNv
dXJjZQorICAgICAgICB0cmFja2luZyBhbmQgWFNTIGZpbHRlcmluZyB3YXMga2lsbGluZyB1cy4K
KworICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MRG9jdW1lbnRQYXJzZXI6OkhUTUxEb2N1bWVudFBhcnNlcik6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnRQYXJzZXI6OnB1bXBUb2tlbml6ZXIpOgorICAgICAg
ICAqIGh0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5oOgorCiAyMDExLTAyLTIyICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbmRl
cnMgQ2FybHNzb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1M
RG9jdW1lbnRQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3Vt
ZW50UGFyc2VyLmNwcAppbmRleCBkZmJhOTU5NDNmZjU2NjNkNGIyOWI1YWJmYzRiYmVhM2MxNGI2
MDVmLi43YTA1ODM0YzNmYTMxMGE1MWVhNDllN2ZkZTAyOTMzYWQwNjZjMDhmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAKQEAgLTgy
LDYgKzgyLDcgQEAgSFRNTERvY3VtZW50UGFyc2VyOjpIVE1MRG9jdW1lbnRQYXJzZXIoSFRNTERv
Y3VtZW50KiBkb2N1bWVudCwgYm9vbCByZXBvcnRFcnJvcnMKICAgICAsIG1fcGFyc2VyU2NoZWR1
bGVyKEhUTUxQYXJzZXJTY2hlZHVsZXI6OmNyZWF0ZSh0aGlzKSkKICAgICAsIG1feHNzRmlsdGVy
KHRoaXMpCiAgICAgLCBtX2VuZFdhc0RlbGF5ZWQoZmFsc2UpCisgICAgLCBtX2lzUGFyc2luZ0Zy
YWdtZW50KGZhbHNlKQogICAgICwgbV93cml0ZU5lc3RpbmdMZXZlbCgwKQogewogfQpAQCAtOTQs
NiArOTUsNyBAQCBIVE1MRG9jdW1lbnRQYXJzZXI6OkhUTUxEb2N1bWVudFBhcnNlcihEb2N1bWVu
dEZyYWdtZW50KiBmcmFnbWVudCwgRWxlbWVudCogY29udAogICAgICwgbV90cmVlQnVpbGRlcihI
VE1MVHJlZUJ1aWxkZXI6OmNyZWF0ZSh0aGlzLCBmcmFnbWVudCwgY29udGV4dEVsZW1lbnQsIHNj
cmlwdGluZ1Blcm1pc3Npb24sIHVzZVByZUhUTUw1UGFyc2VyUXVpcmtzKGZyYWdtZW50LT5kb2N1
bWVudCgpKSkpCiAgICAgLCBtX3hzc0ZpbHRlcih0aGlzKQogICAgICwgbV9lbmRXYXNEZWxheWVk
KGZhbHNlKQorICAgICwgbV9pc1BhcnNpbmdGcmFnbWVudCh0cnVlKQogICAgICwgbV93cml0ZU5l
c3RpbmdMZXZlbCgwKQogewogICAgIGJvb2wgcmVwb3J0RXJyb3JzID0gZmFsc2U7IC8vIEZvciBu
b3cgZG9jdW1lbnQgZnJhZ21lbnQgcGFyc2luZyBuZXZlciByZXBvcnRzIGVycm9ycy4KQEAgLTI0
NywxMiArMjQ5LDE2IEBAIHZvaWQgSFRNTERvY3VtZW50UGFyc2VyOjpwdW1wVG9rZW5pemVyKFN5
bmNocm9ub3VzTW9kZSBtb2RlKQogCiAgICAgUHVtcFNlc3Npb24gc2Vzc2lvbjsKICAgICB3aGls
ZSAoY2FuVGFrZU5leHRUb2tlbihtb2RlLCBzZXNzaW9uKSAmJiAhc2Vzc2lvbi5uZWVkc1lpZWxk
KSB7Ci0gICAgICAgIG1fc291cmNlVHJhY2tlci5zdGFydChtX2lucHV0LCBtX3Rva2VuKTsKKyAg
ICAgICAgaWYgKCFtX2lzUGFyc2luZ0ZyYWdtZW50KQorICAgICAgICAgICAgbV9zb3VyY2VUcmFj
a2VyLnN0YXJ0KG1faW5wdXQsIG1fdG9rZW4pOworCiAgICAgICAgIGlmICghbV90b2tlbml6ZXIt
Pm5leHRUb2tlbihtX2lucHV0LmN1cnJlbnQoKSwgbV90b2tlbikpCiAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgbV9zb3VyY2VUcmFja2VyLmVuZChtX2lucHV0LCBtX3Rva2VuKTsKIAotICAg
ICAgICBtX3hzc0ZpbHRlci5maWx0ZXJUb2tlbihtX3Rva2VuKTsKKyAgICAgICAgaWYgKCFtX2lz
UGFyc2luZ0ZyYWdtZW50KSB7CisgICAgICAgICAgICBtX3NvdXJjZVRyYWNrZXIuZW5kKG1faW5w
dXQsIG1fdG9rZW4pOworICAgICAgICAgICAgbV94c3NGaWx0ZXIuZmlsdGVyVG9rZW4obV90b2tl
bik7CisgICAgICAgIH0KIAogICAgICAgICBtX3RyZWVCdWlsZGVyLT5jb25zdHJ1Y3RUcmVlRnJv
bVRva2VuKG1fdG9rZW4pOwogICAgICAgICBtX3Rva2VuLmNsZWFyKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5oCmluZGV4IDIzYzMxYTA5MDg5
OTE2M2M4YjBkODM4OWY4ZjA4MjQ5ZmQwZDNjNzAuLjM5ZDQyZTZmZjUwOTYwMzkzYjVmNDQ3YTU3
NjEyNGRkOTk0MDI5NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hU
TUxEb2N1bWVudFBhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxE
b2N1bWVudFBhcnNlci5oCkBAIC0xNTIsNiArMTUyLDcgQEAgcHJpdmF0ZToKICAgICBYU1NGaWx0
ZXIgbV94c3NGaWx0ZXI7CiAKICAgICBib29sIG1fZW5kV2FzRGVsYXllZDsKKyAgICBib29sIG1f
aXNQYXJzaW5nRnJhZ21lbnQ7CiAgICAgdW5zaWduZWQgbV93cml0ZU5lc3RpbmdMZXZlbDsKIH07
CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>83436</attachid>
            <date>2011-02-22 19:50:03 -0800</date>
            <delta_ts>2011-02-23 03:13:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-55011-20110222195001.patch</filename>
            <type>text/plain</type>
            <size>4103</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogNzkzNzMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA0MGJmNjQzMDBlMjkxYTNi
MDViNjRlZDZiMDYxNzYyNDFkZTc2NmUzLi40ODRhM2ViNTcwODFhNDZmOWIyZjZlODZkYzAzM2M2
ZjMzODIyYjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMTEtMDItMjIgIEVyaWMg
U2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEZyYWdtZW50IHBhcnNpbmcgZG9lcyBub3QgbmVlZCB0byB1c2Ug
SFRNTFNvdXJjZVRyYWNrZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTU1MDExCisKKyAgICAgICAgQW55IHBlcmZvcm1hbmNlIGdhaW5zIGZyb20gdGhp
cyBwYXRjaCBhcmUgbGlrZWx5CisgICAgICAgIHRoZSByZXN1bHQgb2Ygd29ya2luZyBhcm91bmQ6
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NTAwNQor
ICAgICAgICAoV2hpY2ggc3VnZ2VzdHMgdGhhdCBmaXhpbmcgYnVnIDU1MDA1IHdpbGwgc3BlZWQK
KyAgICAgICAgdXAgbm9ybWFsIEhUTUwgcGFyc2luZyBzdWJzdGFudGlhbGx5LikKKworICAgICAg
ICBBc3N1bWluZyBJIHJhbiB0aGUgbnVtYmVycyBjb3JyZWN0LCBoZXJlIGlzIHRoZQorICAgICAg
ICBjaGFuZ2UgZnJvbSBQZXJmb3JtYW5jZVRlc3RzL1BhcnNlci90aW55LWlubmVySFRNTDoKKyAg
ICAgICAgQmVmb3JlIHBhdGNoOgorICAgICAgICBhdmcgNTU4Ni4xCisgICAgICAgIG1lZGlhbiA1
NTk0CisgICAgICAgIHN0ZGV2IDQxLjI5NTE1NzEwMTA0NTEzNQorICAgICAgICBtaW4gNTQyNQor
ICAgICAgICBtYXggNTYzMworCisgICAgICAgIEFmdGVyIFBhdGNoOgorICAgICAgICBhdmcgMjYw
My45CisgICAgICAgIG1lZGlhbiAyNjA5LjUKKyAgICAgICAgc3RkZXYgMzIuNTAwNjE1Mzc4Nzg5
MzU1CisgICAgICAgIG1pbiAyNDc1CisgICAgICAgIG1heCAyNjQ5CisKKyAgICAgICAgQXMgeW91
IGNhbiBzZWUsIHRoYXQgbWFsbG9jIChmcm9tIGJ1ZyA1NTAwNSkgYW5kIHByb2JhYmx5CisgICAg
ICAgIHRvIGEgbGVzc2VyIGV4dGVudCBhbGwgdGhlIGV4dHJhIGNvZGUgZXhlY3V0aW9uIGluIHNv
dXJjZQorICAgICAgICB0cmFja2luZyBhbmQgWFNTIGZpbHRlcmluZyB3YXMga2lsbGluZyB1cy4K
KworICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MRG9jdW1lbnRQYXJzZXI6OkhUTUxEb2N1bWVudFBhcnNlcik6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnRQYXJzZXI6OnB1bXBUb2tlbml6ZXIpOgorICAgICAg
ICAqIGh0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5oOgorCiAyMDExLTAyLTIyICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbmRl
cnMgQ2FybHNzb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1M
RG9jdW1lbnRQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3Vt
ZW50UGFyc2VyLmNwcAppbmRleCBkZmJhOTU5NDNmZjU2NjNkNGIyOWI1YWJmYzRiYmVhM2MxNGI2
MDVmLi4zNDZkNGRhZjI2NmM1MjU5MThjNWQ3YzIyZGU0ODI0ZWIyMTdjNDNiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAKQEAgLTE1
MSw2ICsxNTEsMTEgQEAgdm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6OnByZXBhcmVUb1N0b3BQYXJz
aW5nKCkKICAgICBhdHRlbXB0VG9SdW5EZWZlcnJlZFNjcmlwdHNBbmRFbmQoKTsKIH0KIAorYm9v
bCBIVE1MRG9jdW1lbnRQYXJzZXI6OmlzUGFyc2luZ0ZyYWdtZW50KCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV90cmVlQnVpbGRlci0+aXNQYXJzaW5nRnJhZ21lbnQoKTsKK30KKwogYm9vbCBIVE1M
RG9jdW1lbnRQYXJzZXI6OnByb2Nlc3NpbmdEYXRhKCkgY29uc3QKIHsKICAgICByZXR1cm4gaXNT
Y2hlZHVsZWRGb3JSZXN1bWUoKSB8fCBpbldyaXRlKCk7CkBAIC0yMjAsNyArMjI1LDcgQEAgYm9v
bCBIVE1MRG9jdW1lbnRQYXJzZXI6OmNhblRha2VOZXh0VG9rZW4oU3luY2hyb25vdXNNb2RlIG1v
ZGUsIFB1bXBTZXNzaW9uJiBzZXMKICAgICAvLyAgICAgICAgc2hvdWxkIGhhcHBlbiBpcyB0aGF0
IGFzc2lnbmluZyB3aW5kb3cubG9jYXRpb24gY2F1c2VzIHRoZQogICAgIC8vICAgICAgICBwYXJz
ZXIgdG8gc3RvcCBwYXJzaW5nIGNsZWFubHkuICBUaGUgcHJvYmxlbSBpcyB3ZSdyZSBub3QKICAg
ICAvLyAgICAgICAgcGVycGFyZWQgdG8gZG8gdGhhdCBhdCBldmVyeSBwb2ludCB3aGVyZSB3ZSBy
dW4gSmF2YVNjcmlwdC4KLSAgICBpZiAoIW1fdHJlZUJ1aWxkZXItPmlzUGFyc2luZ0ZyYWdtZW50
KCkKKyAgICBpZiAoIWlzUGFyc2luZ0ZyYWdtZW50KCkKICAgICAgICAgJiYgZG9jdW1lbnQoKS0+
ZnJhbWUoKSAmJiBkb2N1bWVudCgpLT5mcmFtZSgpLT5uYXZpZ2F0aW9uU2NoZWR1bGVyKCktPmxv
Y2F0aW9uQ2hhbmdlUGVuZGluZygpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTI0Nywx
MiArMjUyLDE2IEBAIHZvaWQgSFRNTERvY3VtZW50UGFyc2VyOjpwdW1wVG9rZW5pemVyKFN5bmNo
cm9ub3VzTW9kZSBtb2RlKQogCiAgICAgUHVtcFNlc3Npb24gc2Vzc2lvbjsKICAgICB3aGlsZSAo
Y2FuVGFrZU5leHRUb2tlbihtb2RlLCBzZXNzaW9uKSAmJiAhc2Vzc2lvbi5uZWVkc1lpZWxkKSB7
Ci0gICAgICAgIG1fc291cmNlVHJhY2tlci5zdGFydChtX2lucHV0LCBtX3Rva2VuKTsKKyAgICAg
ICAgaWYgKCFpc1BhcnNpbmdGcmFnbWVudCgpKQorICAgICAgICAgICAgbV9zb3VyY2VUcmFja2Vy
LnN0YXJ0KG1faW5wdXQsIG1fdG9rZW4pOworCiAgICAgICAgIGlmICghbV90b2tlbml6ZXItPm5l
eHRUb2tlbihtX2lucHV0LmN1cnJlbnQoKSwgbV90b2tlbikpCiAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgbV9zb3VyY2VUcmFja2VyLmVuZChtX2lucHV0LCBtX3Rva2VuKTsKIAotICAgICAg
ICBtX3hzc0ZpbHRlci5maWx0ZXJUb2tlbihtX3Rva2VuKTsKKyAgICAgICAgaWYgKCFpc1BhcnNp
bmdGcmFnbWVudCgpKSB7CisgICAgICAgICAgICBtX3NvdXJjZVRyYWNrZXIuZW5kKG1faW5wdXQs
IG1fdG9rZW4pOworICAgICAgICAgICAgbV94c3NGaWx0ZXIuZmlsdGVyVG9rZW4obV90b2tlbik7
CisgICAgICAgIH0KIAogICAgICAgICBtX3RyZWVCdWlsZGVyLT5jb25zdHJ1Y3RUcmVlRnJvbVRv
a2VuKG1fdG9rZW4pOwogICAgICAgICBtX3Rva2VuLmNsZWFyKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5oCmluZGV4IDIzYzMxYTA5MDg5OTE2
M2M4YjBkODM4OWY4ZjA4MjQ5ZmQwZDNjNzAuLmMxYTZiNjQ0OWI5YzExMjFiMmNmNTE1YTgyZDZi
ZjVmM2NhYzgxZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxE
b2N1bWVudFBhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1
bWVudFBhcnNlci5oCkBAIC0xMzEsNiArMTMxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGF0dGVt
cHRUb1J1bkRlZmVycmVkU2NyaXB0c0FuZEVuZCgpOwogICAgIHZvaWQgZW5kKCk7CiAKKyAgICBi
b29sIGlzUGFyc2luZ0ZyYWdtZW50KCkgY29uc3Q7CiAgICAgYm9vbCBpc1NjaGVkdWxlZEZvclJl
c3VtZSgpIGNvbnN0OwogICAgIGJvb2wgaW5TY3JpcHRFeGVjdXRpb24oKSBjb25zdDsKICAgICBi
b29sIGluV3JpdGUoKSBjb25zdCB7IHJldHVybiBtX3dyaXRlTmVzdGluZ0xldmVsID4gMDsgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>83463</attachid>
            <date>2011-02-23 03:13:44 -0800</date>
            <delta_ts>2011-02-24 06:34:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-55011-20110223031342.patch</filename>
            <type>text/plain</type>
            <size>5486</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogNzk0MzAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBmMjg4MjMyZmNjNTFjZDA5YjliM2Iw
ZjI0ODZmODI4ODllOWQ0MzBkLi4zNmYxMmY0MjA2Mzc1OTZkM2VjNTc1NGQ5YjgxNzIzNzdiOTg0
MmQ5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMDItMjMgIEVyaWMgU2VpZGVsICA8ZXJp
Y0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEZyYWdtZW50IHBhcnNpbmcgZG9lcyBub3QgbmVlZCB0byB1c2UgSFRNTFNvdXJjZVRy
YWNrZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU1
MDExCisKKyAgICAgICAgUmVtb3ZlIHN1cHBvcnQgb2YgWFNTLWZpbHRlcmluZyBpbm5lckhUTUwg
Y29udGVudC4KKworICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9kb20t
d3JpdGUtaW5uZXJIVE1MLWV4cGVjdGVkLnR4dDoKKwogMjAxMS0wMi0yMyAgWXV6byBGdWppc2hp
bWEgIDx5dXpvQGdvb2dsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCBhdHRlbXB0IHRvIGZp
eCBhIGZsYWt5IHRlc3QuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3Vy
aXR5L3hzc0F1ZGl0b3IvZG9tLXdyaXRlLWlubmVySFRNTC1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvZG9tLXdyaXRlLWlubmVySFRNTC1l
eHBlY3RlZC50eHQKaW5kZXggNTEzZTJmOGQwM2Y3NDIwM2EzNWUwYmVlZDFmZDQzYjQzMjkyZGMy
Zi4uMzE1ZjEwNjFiYWQyYjEwNjJlOTE0ZWUwMzlhMjE0OTczZWNmOTdhNCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL2RvbS13cml0ZS1pbm5l
ckhUTUwtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkv
eHNzQXVkaXRvci9kb20td3JpdGUtaW5uZXJIVE1MLWV4cGVjdGVkLnR4dApAQCAtMSwzICsxLDIg
QEAKLUNPTlNPTEUgTUVTU0FHRTogbGluZSAxOiBSZWZ1c2VkIHRvIGV4ZWN1dGUgYSBKYXZhU2Ny
aXB0IHNjcmlwdC4gU291cmNlIGNvZGUgb2Ygc2NyaXB0IGZvdW5kIHdpdGhpbiByZXF1ZXN0Lgot
CitBTEVSVDogL1hTUy8KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDQzMGNjYjUxMmJkOGFjMzA5YTgzMDYzYzRk
OGIyYWEzYjYwN2U3M2QuLjk2NGIzYjA1NTg4NWVkMDRjMGE3YzRmMDM1MWUyYjVkNzIwMmM1ZGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MSBAQAorMjAxMS0wMi0yMyAgRXJpYyBTZWlkZWwgIDxl
cmljQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KKworICAg
ICAgICBGcmFnbWVudCBwYXJzaW5nIGRvZXMgbm90IG5lZWQgdG8gdXNlIEhUTUxTb3VyY2VUcmFj
a2VyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NTAx
MQorCisgICAgICAgIEFueSBwZXJmb3JtYW5jZSBnYWlucyBmcm9tIHRoaXMgcGF0Y2ggYXJlIGxp
a2VseQorICAgICAgICB0aGUgcmVzdWx0IG9mIHdvcmtpbmcgYXJvdW5kOgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTUwMDUKKyAgICAgICAgKFdoaWNo
IHN1Z2dlc3RzIHRoYXQgZml4aW5nIGJ1ZyA1NTAwNSB3aWxsIHNwZWVkCisgICAgICAgIHVwIG5v
cm1hbCBIVE1MIHBhcnNpbmcgc3Vic3RhbnRpYWxseS4pCisKKyAgICAgICAgQXNzdW1pbmcgSSBy
YW4gdGhlIG51bWJlcnMgY29ycmVjdCwgaGVyZSBpcyB0aGUKKyAgICAgICAgY2hhbmdlIGZyb20g
UGVyZm9ybWFuY2VUZXN0cy9QYXJzZXIvdGlueS1pbm5lckhUTUw6CisgICAgICAgIEJlZm9yZSBw
YXRjaDoKKyAgICAgICAgYXZnIDU1ODYuMQorICAgICAgICBtZWRpYW4gNTU5NAorICAgICAgICBz
dGRldiA0MS4yOTUxNTcxMDEwNDUxMzUKKyAgICAgICAgbWluIDU0MjUKKyAgICAgICAgbWF4IDU2
MzMKKworICAgICAgICBBZnRlciBQYXRjaDoKKyAgICAgICAgYXZnIDI2MDMuOQorICAgICAgICBt
ZWRpYW4gMjYwOS41CisgICAgICAgIHN0ZGV2IDMyLjUwMDYxNTM3ODc4OTM1NQorICAgICAgICBt
aW4gMjQ3NQorICAgICAgICBtYXggMjY0OQorCisgICAgICAgIFJlbW92aW5nIGp1c3QgdGhlIEhU
TUxTb3VyY2VUcmFja2VyIGNhbGxzIGJyb3VnaHQgb3VyCisgICAgICAgIHNjb3JlIGZyb20gNTUw
MCB0byA1MjAwLCByZW1vdmluZyB0aGUgWFNTRmlsdGVyIGFzIHdlbGwKKyAgICAgICAgYnJvdWdo
dCBpdCB0byAyNjAwIG9uIG15IG1hY2hpbmUuCisKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1M
RG9jdW1lbnRQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTERvY3VtZW50UGFyc2Vy
OjpIVE1MRG9jdW1lbnRQYXJzZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTERvY3VtZW50UGFy
c2VyOjpwdW1wVG9rZW5pemVyKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQ
YXJzZXIuaDoKKwogMjAxMS0wMi0yMyAgQmVuamFtaW4gS2FsbWFuICA8a2FsbWFuQGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBPamFuIFZhZmFpLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAKaW5kZXggZGZiYTk1OTQz
ZmY1NjYzZDRiMjliNWFiZmM0YmJlYTNjMTRiNjA1Zi4uYmFlZGNjYTEzYzEzMTE3YzIyNmEwZTE0
OGM2NWFiZDk3MDg4ZjA5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIv
SFRNTERvY3VtZW50UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9I
VE1MRG9jdW1lbnRQYXJzZXIuY3BwCkBAIC0xNTEsNiArMTUxLDExIEBAIHZvaWQgSFRNTERvY3Vt
ZW50UGFyc2VyOjpwcmVwYXJlVG9TdG9wUGFyc2luZygpCiAgICAgYXR0ZW1wdFRvUnVuRGVmZXJy
ZWRTY3JpcHRzQW5kRW5kKCk7CiB9CiAKK2Jvb2wgSFRNTERvY3VtZW50UGFyc2VyOjppc1BhcnNp
bmdGcmFnbWVudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fdHJlZUJ1aWxkZXItPmlzUGFyc2lu
Z0ZyYWdtZW50KCk7Cit9CisKIGJvb2wgSFRNTERvY3VtZW50UGFyc2VyOjpwcm9jZXNzaW5nRGF0
YSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGlzU2NoZWR1bGVkRm9yUmVzdW1lKCkgfHwgaW5Xcml0
ZSgpOwpAQCAtMjIwLDcgKzIyNSw3IEBAIGJvb2wgSFRNTERvY3VtZW50UGFyc2VyOjpjYW5UYWtl
TmV4dFRva2VuKFN5bmNocm9ub3VzTW9kZSBtb2RlLCBQdW1wU2Vzc2lvbiYgc2VzCiAgICAgLy8g
ICAgICAgIHNob3VsZCBoYXBwZW4gaXMgdGhhdCBhc3NpZ25pbmcgd2luZG93LmxvY2F0aW9uIGNh
dXNlcyB0aGUKICAgICAvLyAgICAgICAgcGFyc2VyIHRvIHN0b3AgcGFyc2luZyBjbGVhbmx5LiAg
VGhlIHByb2JsZW0gaXMgd2UncmUgbm90CiAgICAgLy8gICAgICAgIHBlcnBhcmVkIHRvIGRvIHRo
YXQgYXQgZXZlcnkgcG9pbnQgd2hlcmUgd2UgcnVuIEphdmFTY3JpcHQuCi0gICAgaWYgKCFtX3Ry
ZWVCdWlsZGVyLT5pc1BhcnNpbmdGcmFnbWVudCgpCisgICAgaWYgKCFpc1BhcnNpbmdGcmFnbWVu
dCgpCiAgICAgICAgICYmIGRvY3VtZW50KCktPmZyYW1lKCkgJiYgZG9jdW1lbnQoKS0+ZnJhbWUo
KS0+bmF2aWdhdGlvblNjaGVkdWxlcigpLT5sb2NhdGlvbkNoYW5nZVBlbmRpbmcoKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCkBAIC0yNDcsMTIgKzI1MiwxOSBAQCB2b2lkIEhUTUxEb2N1bWVu
dFBhcnNlcjo6cHVtcFRva2VuaXplcihTeW5jaHJvbm91c01vZGUgbW9kZSkKIAogICAgIFB1bXBT
ZXNzaW9uIHNlc3Npb247CiAgICAgd2hpbGUgKGNhblRha2VOZXh0VG9rZW4obW9kZSwgc2Vzc2lv
bikgJiYgIXNlc3Npb24ubmVlZHNZaWVsZCkgewotICAgICAgICBtX3NvdXJjZVRyYWNrZXIuc3Rh
cnQobV9pbnB1dCwgbV90b2tlbik7CisgICAgICAgIGlmICghaXNQYXJzaW5nRnJhZ21lbnQoKSkK
KyAgICAgICAgICAgIG1fc291cmNlVHJhY2tlci5zdGFydChtX2lucHV0LCBtX3Rva2VuKTsKKwog
ICAgICAgICBpZiAoIW1fdG9rZW5pemVyLT5uZXh0VG9rZW4obV9pbnB1dC5jdXJyZW50KCksIG1f
dG9rZW4pKQogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIG1fc291cmNlVHJhY2tlci5lbmQo
bV9pbnB1dCwgbV90b2tlbik7CiAKLSAgICAgICAgbV94c3NGaWx0ZXIuZmlsdGVyVG9rZW4obV90
b2tlbik7CisgICAgICAgIGlmICghaXNQYXJzaW5nRnJhZ21lbnQoKSkgeworICAgICAgICAgICAg
bV9zb3VyY2VUcmFja2VyLmVuZChtX2lucHV0LCBtX3Rva2VuKTsKKworICAgICAgICAgICAgLy8g
V2UgZG8gbm90IFhTUyBmaWx0ZXIgaW5uZXJIVE1MLCB3aGljaCBtZWFucyB3ZSAoaW50ZW50aW9u
YWxseSkgZmFpbAorICAgICAgICAgICAgLy8gaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9y
L2RvbS13cml0ZS1pbm5lckhUTUwuaHRtbAorICAgICAgICAgICAgbV94c3NGaWx0ZXIuZmlsdGVy
VG9rZW4obV90b2tlbik7CisgICAgICAgIH0KIAogICAgICAgICBtX3RyZWVCdWlsZGVyLT5jb25z
dHJ1Y3RUcmVlRnJvbVRva2VuKG1fdG9rZW4pOwogICAgICAgICBtX3Rva2VuLmNsZWFyKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5oCmluZGV4
IDIzYzMxYTA5MDg5OTE2M2M4YjBkODM4OWY4ZjA4MjQ5ZmQwZDNjNzAuLmMxYTZiNjQ0OWI5YzEx
MjFiMmNmNTE1YTgyZDZiZjVmM2NhYzgxZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5oCkBAIC0xMzEsNiArMTMxLDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGF0dGVtcHRUb1J1bkRlZmVycmVkU2NyaXB0c0FuZEVuZCgpOwogICAgIHZvaWQg
ZW5kKCk7CiAKKyAgICBib29sIGlzUGFyc2luZ0ZyYWdtZW50KCkgY29uc3Q7CiAgICAgYm9vbCBp
c1NjaGVkdWxlZEZvclJlc3VtZSgpIGNvbnN0OwogICAgIGJvb2wgaW5TY3JpcHRFeGVjdXRpb24o
KSBjb25zdDsKICAgICBib29sIGluV3JpdGUoKSBjb25zdCB7IHJldHVybiBtX3dyaXRlTmVzdGlu
Z0xldmVsID4gMDsgfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>