<?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>82816</bug_id>
          
          <creation_ts>2012-03-30 19:20:16 -0700</creation_ts>
          <short_desc>presentationAttributeCacheMaximumSize is set too low</short_desc>
          <delta_ts>2012-04-03 15:39:34 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>78070</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Julien Chaffraix">jchaffraix</reporter>
          <assigned_to name="Julien Chaffraix">jchaffraix</assigned_to>
          <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>592740</commentid>
    <comment_count>0</comment_count>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-03-30 19:20:16 -0700</bug_when>
    <thetext>Before bug 77204, the presentation attribute style (called matched declaration at the time) cache used to grow unbounded. Bug 80707 re-introduced the missing cache and set the limit to 128 which gave around a 75% hit rate. This is however a regression from the original caching for a few reasons:
- the hit rate on the previous cache was higher in the 85% range (beware it&apos;s not an apple-to-apple comparison due to the different modeling used for attribute styles, see 2nd point)
- due to the new mapping (several attributes to one style vs 1 attribute to 1 style before), there is a combinatorial explosion compared to the previous (more simple) model.

Any cache miss in this cache, unfortunately means that we *will* miss in our matched property cache as we are doing pointer comparisons. This bug proposes to bump the cache size to get back some of the performance.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>592745</commentid>
    <comment_count>1</comment_count>
      <attachid>134932</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-03-30 19:36:40 -0700</bug_when>
    <thetext>Created attachment 134932
Proposed change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>592858</commentid>
    <comment_count>2</comment_count>
      <attachid>134932</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-03-31 06:58:00 -0700</bug_when>
    <thetext>Comment on attachment 134932
Proposed change.

Any long running process will now gather 4096 cache entries wasting non-trivial amount of memory (in ballpark of ~1MB). I don&apos;t think thats acceptable.

I think you should also add a timer based clearing mechanism. If there are no cache hits for some period of time the cache will get wiped.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>593930</commentid>
    <comment_count>3</comment_count>
      <attachid>135207</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-04-02 15:34:59 -0700</bug_when>
    <thetext>Created attachment 135207
Updated change. Add a timer based clearing mechanism per Antti&apos;s suggestion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>594777</commentid>
    <comment_count>4</comment_count>
      <attachid>135207</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-04-03 12:59:23 -0700</bug_when>
    <thetext>Comment on attachment 135207
Updated change. Add a timer based clearing mechanism per Antti&apos;s suggestion.

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

r=me but please consider the comments

&gt; Source/WebCore/dom/StyledElement.cpp:77
&gt; +class PresentationAttributeCacheClearTimer : public TimerBase {
&gt; +public:

I think it would be nicer to have-a-timer than be-a-timer.

&gt; Source/WebCore/dom/StyledElement.cpp:79
&gt; +    static void didHitPresentationAttributeCache()
&gt; +    {

The usual style is to have a singleton instance, something like

static PresentationAttributeCacheCleaner&amp; presentationAttributeCacheCleaner()
{
    DEFINE_STATIC_LOCAL(PresentationAttributeCacheCleaner, cleaner, ());
    return cleaner;
}

and use non-static methods on that.

&gt; Source/WebCore/dom/StyledElement.cpp:83
&gt; +        static PresentationAttributeCacheClearTimer timer;

Should use DEFINE_STATIC_LOCAL() (unless refactored as above).

&gt; Source/WebCore/dom/StyledElement.cpp:93
&gt; +    static const unsigned presentationAttributeCacheCleanTimeInSeconds = 60;
&gt; +    static const int minPresentationAttributeCacheSizeForCleaning = 100;
&gt; +    static const unsigned minPresentationAttributeCacheHitCountPerMinute = (100 * presentationAttributeCacheCleanTimeInSeconds) / 60;

How did you come up with these values?

min -&gt; minimum</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>594831</commentid>
    <comment_count>5</comment_count>
      <attachid>135207</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-04-03 13:38:30 -0700</bug_when>
    <thetext>Comment on attachment 135207
Updated change. Add a timer based clearing mechanism per Antti&apos;s suggestion.

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

The rest of the comments are good calls that I somewhat missed and will be updated.

&gt;&gt; Source/WebCore/dom/StyledElement.cpp:93
&gt;&gt; +    static const unsigned minPresentationAttributeCacheHitCountPerMinute = (100 * presentationAttributeCacheCleanTimeInSeconds) / 60;
&gt; 
&gt; How did you come up with these values?
&gt; 
&gt; min -&gt; minimum

I wanted to avoid poking the timer too often as it involves updating the timer heap. I though 1 minute for presentationAttributeCacheCleanTimeInSeconds was a good time.

minPresentationAttributeCacheHitCountPerMinute and minPresentationAttributeCacheSizeForCleaning were chosen together to keep our maximum size around the original size before this patch (128) if we don&apos;t see a lot of presentation attribute.

Also we don&apos;t want to clear our cache if it&apos;s hit too much as we will kill our hit rate. I thought something between once and twice a second was a good value for an average hit rate.

Now most of what I say is hand waving and not backed by any peculiar data if that was the question.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>594897</commentid>
    <comment_count>6</comment_count>
      <attachid>135430</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-04-03 14:31:16 -0700</bug_when>
    <thetext>Created attachment 135430
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>594968</commentid>
    <comment_count>7</comment_count>
      <attachid>135430</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-03 15:39:30 -0700</bug_when>
    <thetext>Comment on attachment 135430
Patch for landing

Clearing flags on attachment: 135430

Committed r113098: &lt;http://trac.webkit.org/changeset/113098&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>594969</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-03 15:39:34 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>134932</attachid>
            <date>2012-03-30 19:36:40 -0700</date>
            <delta_ts>2012-04-02 15:34:56 -0700</delta_ts>
            <desc>Proposed change.</desc>
            <filename>bug-82816-20120330193639.patch</filename>
            <type>text/plain</type>
            <size>2618</size>
            <attacher name="Julien Chaffraix">jchaffraix</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyNzU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWY3ZjI4ZjAyZGQxNTJh
OTBhZDQzYTk4MzFkYWIzY2NlOGI3NGY2MC4uMDcwNjQ3MGFkYWUwMWQxYTZhMTZhMzcyZjNkM2Ix
YzRlYTNkZWZlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDEyLTAzLTMwICBKdWxp
ZW4gQ2hhZmZyYWl4ICA8amNoYWZmcmFpeEB3ZWJraXQub3JnPgorCisgICAgICAgIHByZXNlbnRh
dGlvbkF0dHJpYnV0ZUNhY2hlTWF4aW11bVNpemUgaXMgc2V0IHRvbyBsb3cKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgyODE2CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUGVyZm9ybWFuY2UgY2hhbmdlLCBu
byBzaWRlIGVmZmVjdHMgYW50aWNpcGF0ZWQuCisKKyAgICAgICAgUHJpb3IgdG8gcjEwNjc0MCwg
dGhlIHByZXNlbnRhdGlvbiBhdHRyaWJ1dGUgc3R5bGUgY2FjaGUgdXNlZCB0byBncm93IHVuYm91
bmRlZC4gQXMgcGFydCBvZiByMTEwMzE2LAorICAgICAgICBhIGRpZmZlcmVudCB2ZXJzaW9uIG9m
IHRoZSBjYWNoZSB3YXMgaW50cm9kdWNlZCB3aXRoIGEgbWF4aW11bSBzaXplIG9mIDEyOC4gVGhp
cyBzaXplIGdhdmUgYSA3NSUgaGl0IHJhdGUuCisKKyAgICAgICAgSG93ZXZlciB0aGlzIGlzIGJh
ZCBhcyB0aGUgcHJldmlvdXMgY2FjaGUgaGFkIGEgODUlIGhpdCByYXRlKiogYW5kIGVhY2ggbWlz
cyBwcm9wYWdhdGUgZG93biB0byB0aGUgbWF0Y2hlZAorICAgICAgICBwcm9wZXJ0aWVzIGNhY2hl
IGFzIHdlIHVzZSBwb2ludGVyIGNvbXBhcmlzb25zLgorCisgICAgICAgIFRoaXMgY2hhbmdlIGJ1
bXBzIHRoZSBzaXplIHRvIDQwOTYuIFRoaXMgc2l6ZSB3YXMgY2hvc2VuIHRvIGJyaW5nIHVzIGJh
Y2sgdG8gdGhlIHByZXZpb3VzIGhpdCByYXRlIHdoaWxlCisgICAgICAgIGJlaW5nIGEgcG93ZXIg
b2YgMiAoaXQgaXMgdGhlIEhhc2hNYXAgbWF4aW11bSBzaXplKS4gVGhlIHN0ZWVwIGluY3JlYXNl
IGlzIGR1ZSB0byB0aGUgY29tYmluYXRpb25hbCBjb21wZXhpdHkKKyAgICAgICAgb2YgdGhlIG5l
dyBjYWNoZSBtb2RlbDogd2UgbmVlZCB0byBtYXRjaCBhbGwgb3VyIGF0dHJpYnV0ZXMnIG5hbWUs
IHZhbHVlIGFuZCB0YWcgbmFtZSB0byBnZXQgYSBoaXQgdnMKKyAgICAgICAgb25lIGF0dHJpYnV0
ZSBuYW1lLCB2YWx1ZSBhbmQgYSBjYXRlZ29yeSBpbiB0aGUgcHJldmlvdXMgY2FjaGUuCisgICAg
ICAgIAorICAgICAgICBUaGUgbWVhc3VyZWQgaGl0IHJhdGUgaXMgYWN0dWFsbHkgYmV0dGVyIG5v
dyAtIGluIHRoZSA5MCUgcmFuZ2Ugb24gbW9zdCBwYWdlIGN5Y2xlcnMuIFRoaXMgdXBzIHRoZSBt
YXRjaGVkCisgICAgICAgIHByb3BlcnRpZXMgaGl0IHJhdGUgYnkgMSBwZXJjZW50IHBvaW50IG9u
IHByZXNlbnRhdGlvbiBhdHRyaWJ1dGVzLgorCisgICAgICAgICoqIFRoaXMgaXMgbm90IGEgdHJ1
ZSBhcHBsZS10by1hcHBsZSBjb21wYXJpc29uIGFzIHRoZSBjYWNoZSBtb2RlbCB3YXMgY2hhbmdl
ZC4KKworICAgICAgICAqIGRvbS9TdHlsZWRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlZEVsZW1lbnQ6OnVwZGF0ZUF0dHJpYnV0ZVN0eWxlKToKKwogMjAxMi0wMy0zMCAgRW1p
bCBBIEVrbHVuZCAgPGVhZUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQ2hhbmdlIFdlYktpdC9X
ZWJLaXQyIHBsYXRmb3JtIGNvZGUgdG8gdXNlIHBpeGVsIHNuYXBwZWQgdmFsdWVzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vU3R5bGVkRWxlbWVudC5jcHAKaW5kZXggMjI4YWE4NmUzNWFhNjMxMzg4MDhmOTBlY2M5
NjljMjZkYWNjNDAxMy4uODlhYTdiZmE0MWJkYWQxYWYwYjIwNGZjMzgwMDI3NzU1OGE1NmI4OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmNwcApAQCAtMjY5LDcgKzI2OSw3IEBAIHZv
aWQgU3R5bGVkRWxlbWVudDo6dXBkYXRlQXR0cmlidXRlU3R5bGUoKQogICAgIG5ld0VudHJ5LT5r
ZXkgPSBjYWNoZUtleTsKICAgICBuZXdFbnRyeS0+dmFsdWUgPSBzdHlsZS5yZWxlYXNlKCk7CiAK
LSAgICBzdGF0aWMgY29uc3QgaW50IHByZXNlbnRhdGlvbkF0dHJpYnV0ZUNhY2hlTWF4aW11bVNp
emUgPSAxMjg7CisgICAgc3RhdGljIGNvbnN0IGludCBwcmVzZW50YXRpb25BdHRyaWJ1dGVDYWNo
ZU1heGltdW1TaXplID0gNDA5NjsKICAgICBpZiAocHJlc2VudGF0aW9uQXR0cmlidXRlQ2FjaGUo
KS5zaXplKCkgPiBwcmVzZW50YXRpb25BdHRyaWJ1dGVDYWNoZU1heGltdW1TaXplKSB7CiAgICAg
ICAgIC8vIFN0YXJ0IGJ1aWxkaW5nIGZyb20gc2NyYXRjaCBpZiB0aGUgY2FjaGUgZXZlciBnZXRz
IGJpZy4KICAgICAgICAgcHJlc2VudGF0aW9uQXR0cmlidXRlQ2FjaGUoKS5jbGVhcigpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>135207</attachid>
            <date>2012-04-02 15:34:59 -0700</date>
            <delta_ts>2012-04-03 14:31:12 -0700</delta_ts>
            <desc>Updated change. Add a timer based clearing mechanism per Antti&apos;s suggestion.</desc>
            <filename>bug-82816-20120402153458.patch</filename>
            <type>text/plain</type>
            <size>4850</size>
            <attacher name="Julien Chaffraix">jchaffraix</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyOTM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTBhMmZlZjE0MzM5Nzg4
YTlmODBhZGRhNjhlNTM2NDU2NWYyYmExNC4uMzlhODZhMmU0YjllZmY3N2NkNzk5MjQ5YWY5ZGUz
OGJiNmRlNDk3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDEyLTA0LTAyICBKdWxp
ZW4gQ2hhZmZyYWl4ICA8amNoYWZmcmFpeEB3ZWJraXQub3JnPgorCisgICAgICAgIHByZXNlbnRh
dGlvbkF0dHJpYnV0ZUNhY2hlTWF4aW11bVNpemUgaXMgc2V0IHRvbyBsb3cKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgyODE2CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUGVyZm9ybWFuY2UgY2hhbmdlLCBu
byBzaWRlIGVmZmVjdHMgYW50aWNpcGF0ZWQuCisKKyAgICAgICAgUHJpb3IgdG8gcjEwNjc0MCwg
dGhlIHByZXNlbnRhdGlvbiBhdHRyaWJ1dGUgc3R5bGUgY2FjaGUgdXNlZCB0byBncm93IHVuYm91
bmRlZC4gQXMgcGFydCBvZiByMTEwMzE2LAorICAgICAgICBhIGRpZmZlcmVudCB2ZXJzaW9uIG9m
IHRoZSBjYWNoZSB3YXMgaW50cm9kdWNlZCB3aXRoIGEgbWF4aW11bSBzaXplIG9mIDEyOC4gVGhp
cyBzaXplIGdhdmUgYSA3NSUgaGl0IHJhdGUuCisKKyAgICAgICAgSG93ZXZlciB0aGlzIGlzIGJh
ZCBhcyB0aGUgcHJldmlvdXMgY2FjaGUgaGFkIGEgODUlIGhpdCByYXRlKiogYW5kIGVhY2ggbWlz
cyBwcm9wYWdhdGUgZG93biB0byB0aGUgbWF0Y2hlZAorICAgICAgICBwcm9wZXJ0aWVzIGNhY2hl
IGFzIHdlIHVzZSBwb2ludGVyIGNvbXBhcmlzb25zLgorCisgICAgICAgIFRoaXMgY2hhbmdlIGJ1
bXBzIHRoZSBzaXplIHRvIDQwOTYuIFRoaXMgc2l6ZSB3YXMgY2hvc2VuIHRvIGJyaW5nIHVzIGJh
Y2sgdG8gdGhlIHByZXZpb3VzIGhpdCByYXRlIHdoaWxlCisgICAgICAgIGJlaW5nIGEgcG93ZXIg
b2YgMiAoaXQgaXMgdGhlIEhhc2hNYXAgbWF4aW11bSBzaXplKS4gVGhlIHN0ZWVwIGluY3JlYXNl
IGlzIGR1ZSB0byB0aGUgY29tYmluYXRpb25hbCBjb21wZXhpdHkKKyAgICAgICAgb2YgdGhlIG5l
dyBjYWNoZSBtb2RlbDogd2UgbmVlZCB0byBtYXRjaCBhbGwgb3VyIGF0dHJpYnV0ZXMnIG5hbWUs
IHZhbHVlIGFuZCB0YWcgbmFtZSB0byBnZXQgYSBoaXQgdnMKKyAgICAgICAgb25lIGF0dHJpYnV0
ZSBuYW1lLCB2YWx1ZSBhbmQgYSBjYXRlZ29yeSBpbiB0aGUgcHJldmlvdXMgY2FjaGUuIFRvIGF2
b2lkIGJsb3dpbmcgdXAgdGhlIG1lbW9yeSwgd2UgaW50cm9kdWNlZAorICAgICAgICBhIHRpbWVy
IHRvIGNsZWFyIHRoZSBjYWNoZSBpZiB0aGUgaGl0IHJhdGUgaXMgdG9vIGxvdy4KKworICAgICAg
ICBUaGUgbWVhc3VyZWQgaGl0IHJhdGUgaXMgYWN0dWFsbHkgYmV0dGVyIG5vdyAtIGluIHRoZSA5
MCUgcmFuZ2Ugb24gbW9zdCBwYWdlIGN5Y2xlcnMuIFRoaXMgdXBzIHRoZSBtYXRjaGVkCisgICAg
ICAgIHByb3BlcnRpZXMgaGl0IHJhdGUgYnkgMSBwZXJjZW50IHBvaW50IG9uIHByZXNlbnRhdGlv
biBhdHRyaWJ1dGVzLgorCisgICAgICAgICoqIFRoaXMgaXMgbm90IGEgdHJ1ZSBhcHBsZS10by1h
cHBsZSBjb21wYXJpc29uIGFzIHRoZSBjYWNoZSBtb2RlbCB3YXMgY2hhbmdlZC4KKworICAgICAg
ICAqIGRvbS9TdHlsZWRFbGVtZW50LmNwcDoKKyAgICAgICAgKFByZXNlbnRhdGlvbkF0dHJpYnV0
ZUNhY2hlQ2xlYXJUaW1lcik6CisgICAgICAgIChXZWJDb3JlOjpQcmVzZW50YXRpb25BdHRyaWJ1
dGVDYWNoZUNsZWFyVGltZXI6OmRpZEhpdFByZXNlbnRhdGlvbkF0dHJpYnV0ZUNhY2hlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlByZXNlbnRhdGlvbkF0dHJpYnV0ZUNhY2hlQ2xlYXJUaW1lcjo6Zmly
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVkRWxlbWVudDo6dXBkYXRlQXR0cmlidXRlU3R5
bGUpOgorICAgICAgICBBZGRlZCB0aGUgbG9naWMgdG8gY2xlYW4gdGhlIHByZXNlbnRhdGlvbiBh
dHRyaWJ1dGUgY2FjaGUgaWYgd2UgZHJvcCBiZWxvdyAxMDAgaGl0cyBwZXIgbWludXRlcy4KKwog
MjAxMi0wNC0wMiAgU2VvIFNhbmdoeWVvbiAgPHNoNC5zZW9Ac2Ftc3VuZy5jb20+CiAKICAgICAg
ICAgQWxpZ24gSURMIHRvIFR5cGVkIEFycmF5IFNwZWNpZmljYXRpb24KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9T
dHlsZWRFbGVtZW50LmNwcAppbmRleCA1NWJjNDFkNDM1MWNhNjgzNmJiNTQ0ZTE3NTQyNTBkOTQx
ZGFjNzExLi42MTU3ZjAyZDIxODRmOGFiNTYzMWEyNmRiZjEyNTc4Y2FkOTIzYzg1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuY3BwCkBAIC03Myw2ICs3MywzNyBAQCBzdGF0aWMgUHJl
c2VudGF0aW9uQXR0cmlidXRlQ2FjaGUmIHByZXNlbnRhdGlvbkF0dHJpYnV0ZUNhY2hlKCkKICAg
ICByZXR1cm4gY2FjaGU7CiB9CiAKK2NsYXNzIFByZXNlbnRhdGlvbkF0dHJpYnV0ZUNhY2hlQ2xl
YXJUaW1lciA6IHB1YmxpYyBUaW1lckJhc2UgeworcHVibGljOgorICAgIHN0YXRpYyB2b2lkIGRp
ZEhpdFByZXNlbnRhdGlvbkF0dHJpYnV0ZUNhY2hlKCkKKyAgICB7CisgICAgICAgIGlmIChwcmVz
ZW50YXRpb25BdHRyaWJ1dGVDYWNoZSgpLnNpemUoKSA8IG1pblByZXNlbnRhdGlvbkF0dHJpYnV0
ZUNhY2hlU2l6ZUZvckNsZWFuaW5nKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHN0
YXRpYyBQcmVzZW50YXRpb25BdHRyaWJ1dGVDYWNoZUNsZWFyVGltZXIgdGltZXI7CisgICAgICAg
IHRpbWVyLm1faGl0Q291bnQrKzsKKworICAgICAgICBpZiAoIXRpbWVyLmlzQWN0aXZlKCkpCisg
ICAgICAgICAgICB0aW1lci5zdGFydE9uZVNob3QocHJlc2VudGF0aW9uQXR0cmlidXRlQ2FjaGVD
bGVhblRpbWVJblNlY29uZHMpOworICAgICB9CisKK3ByaXZhdGU6CisgICAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIHByZXNlbnRhdGlvbkF0dHJpYnV0ZUNhY2hlQ2xlYW5UaW1lSW5TZWNvbmRzID0g
NjA7CisgICAgc3RhdGljIGNvbnN0IGludCBtaW5QcmVzZW50YXRpb25BdHRyaWJ1dGVDYWNoZVNp
emVGb3JDbGVhbmluZyA9IDEwMDsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbWluUHJlc2Vu
dGF0aW9uQXR0cmlidXRlQ2FjaGVIaXRDb3VudFBlck1pbnV0ZSA9ICgxMDAgKiBwcmVzZW50YXRp
b25BdHRyaWJ1dGVDYWNoZUNsZWFuVGltZUluU2Vjb25kcykgLyA2MDsKKworICAgIHZpcnR1YWwg
dm9pZCBmaXJlZCgpCisgICAgeworICAgICAgICB1bnNpZ25lZCBoaXRDb3VudCA9IG1faGl0Q291
bnQ7CisgICAgICAgIG1faGl0Q291bnQgPSAwOworICAgICAgICBpZiAoaGl0Q291bnQgPiBtaW5Q
cmVzZW50YXRpb25BdHRyaWJ1dGVDYWNoZUhpdENvdW50UGVyTWludXRlKQorICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICBwcmVzZW50YXRpb25BdHRyaWJ1dGVDYWNoZSgpLmNsZWFyKCk7Cisg
ICAgfQorCisgICAgdW5zaWduZWQgbV9oaXRDb3VudDsKK307CisKIHZvaWQgU3R5bGVkRWxlbWVu
dDo6dXBkYXRlU3R5bGVBdHRyaWJ1dGUoKSBjb25zdAogewogICAgIEFTU0VSVCghaXNTdHlsZUF0
dHJpYnV0ZVZhbGlkKCkpOwpAQCAtMjQzLDkgKzI3NCwxMCBAQCB2b2lkIFN0eWxlZEVsZW1lbnQ6
OnVwZGF0ZUF0dHJpYnV0ZVN0eWxlKCkKICAgICAgICAgY2FjaGVJdGVyYXRvciA9IHByZXNlbnRh
dGlvbkF0dHJpYnV0ZUNhY2hlKCkuZW5kKCk7CiAKICAgICBSZWZQdHI8U3R5bGVQcm9wZXJ0eVNl
dD4gc3R5bGU7Ci0gICAgaWYgKGNhY2hlSGFzaCAmJiBjYWNoZUl0ZXJhdG9yLT5zZWNvbmQpIAor
ICAgIGlmIChjYWNoZUhhc2ggJiYgY2FjaGVJdGVyYXRvci0+c2Vjb25kKSB7CiAgICAgICAgIHN0
eWxlID0gY2FjaGVJdGVyYXRvci0+c2Vjb25kLT52YWx1ZTsKLSAgICBlbHNlIHsKKyAgICAgICAg
UHJlc2VudGF0aW9uQXR0cmlidXRlQ2FjaGVDbGVhclRpbWVyOjpkaWRIaXRQcmVzZW50YXRpb25B
dHRyaWJ1dGVDYWNoZSgpOworICAgIH0gZWxzZSB7CiAgICAgICAgIHN0eWxlID0gU3R5bGVQcm9w
ZXJ0eVNldDo6Y3JlYXRlKGlzU1ZHRWxlbWVudCgpID8gU1ZHQXR0cmlidXRlTW9kZSA6IENTU1F1
aXJrc01vZGUpOwogICAgICAgICB1bnNpZ25lZCBzaXplID0gYXR0cmlidXRlQ291bnQoKTsKICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7ICsraSkgewpAQCAtMjY5LDcgKzMw
MSw3IEBAIHZvaWQgU3R5bGVkRWxlbWVudDo6dXBkYXRlQXR0cmlidXRlU3R5bGUoKQogICAgIG5l
d0VudHJ5LT5rZXkgPSBjYWNoZUtleTsKICAgICBuZXdFbnRyeS0+dmFsdWUgPSBzdHlsZS5yZWxl
YXNlKCk7CiAKLSAgICBzdGF0aWMgY29uc3QgaW50IHByZXNlbnRhdGlvbkF0dHJpYnV0ZUNhY2hl
TWF4aW11bVNpemUgPSAxMjg7CisgICAgc3RhdGljIGNvbnN0IGludCBwcmVzZW50YXRpb25BdHRy
aWJ1dGVDYWNoZU1heGltdW1TaXplID0gNDA5NjsKICAgICBpZiAocHJlc2VudGF0aW9uQXR0cmli
dXRlQ2FjaGUoKS5zaXplKCkgPiBwcmVzZW50YXRpb25BdHRyaWJ1dGVDYWNoZU1heGltdW1TaXpl
KSB7CiAgICAgICAgIC8vIFN0YXJ0IGJ1aWxkaW5nIGZyb20gc2NyYXRjaCBpZiB0aGUgY2FjaGUg
ZXZlciBnZXRzIGJpZy4KICAgICAgICAgcHJlc2VudGF0aW9uQXR0cmlidXRlQ2FjaGUoKS5jbGVh
cigpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>135430</attachid>
            <date>2012-04-03 14:31:16 -0700</date>
            <delta_ts>2012-04-03 15:39:30 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-82816-20120403143115.patch</filename>
            <type>text/plain</type>
            <size>5515</size>
            <attacher name="Julien Chaffraix">jchaffraix</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEzMDcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjBhODdhZmIwYzA1M2Ew
OGM0MGE0MWMxNzgyN2Y2M2M2NjZhMGI4Yi4uNzRjM2E4ZGM5YTE1Y2EwMmJkNGFiOTU4YzA0ZGE1
NTg4NDFmYzQ5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDEyLTA0LTAzICBKdWxp
ZW4gQ2hhZmZyYWl4ICA8amNoYWZmcmFpeEB3ZWJraXQub3JnPgorCisgICAgICAgIHByZXNlbnRh
dGlvbkF0dHJpYnV0ZUNhY2hlTWF4aW11bVNpemUgaXMgc2V0IHRvbyBsb3cKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgyODE2CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgQW50dGkgS29pdmlzdG8uCisKKyAgICAgICAgUGVyZm9ybWFuY2UgY2hhbmdlLCBu
byBzaWRlIGVmZmVjdHMgYW50aWNpcGF0ZWQuCisKKyAgICAgICAgUHJpb3IgdG8gcjEwNjc0MCwg
dGhlIHByZXNlbnRhdGlvbiBhdHRyaWJ1dGUgc3R5bGUgY2FjaGUgdXNlZCB0byBncm93IHVuYm91
bmRlZC4gQXMgcGFydCBvZiByMTEwMzE2LAorICAgICAgICBhIGRpZmZlcmVudCB2ZXJzaW9uIG9m
IHRoZSBjYWNoZSB3YXMgaW50cm9kdWNlZCB3aXRoIGEgbWF4aW11bSBzaXplIG9mIDEyOC4gVGhp
cyBzaXplIGdhdmUgYSA3NSUgaGl0IHJhdGUuCisKKyAgICAgICAgSG93ZXZlciB0aGlzIGlzIGJh
ZCBhcyB0aGUgcHJldmlvdXMgY2FjaGUgaGFkIGEgODUlIGhpdCByYXRlKiogYW5kIGVhY2ggbWlz
cyBwcm9wYWdhdGUgZG93biB0byB0aGUgbWF0Y2hlZAorICAgICAgICBwcm9wZXJ0aWVzIGNhY2hl
IGFzIHdlIHVzZSBwb2ludGVyIGNvbXBhcmlzb25zLgorCisgICAgICAgIFRoaXMgY2hhbmdlIGJ1
bXBzIHRoZSBzaXplIHRvIDQwOTYuIFRoaXMgc2l6ZSB3YXMgY2hvc2VuIHRvIGJyaW5nIHVzIGJh
Y2sgdG8gdGhlIHByZXZpb3VzIGhpdCByYXRlIHdoaWxlCisgICAgICAgIGJlaW5nIGEgcG93ZXIg
b2YgMiAoaXQgaXMgdGhlIEhhc2hNYXAgbWF4aW11bSBzaXplKS4gVGhlIHN0ZWVwIGluY3JlYXNl
IGlzIGR1ZSB0byB0aGUgY29tYmluYXRpb25hbCBjb21wZXhpdHkKKyAgICAgICAgb2YgdGhlIG5l
dyBjYWNoZSBtb2RlbDogd2UgbmVlZCB0byBtYXRjaCBhbGwgb3VyIGF0dHJpYnV0ZXMnIG5hbWUs
IHZhbHVlIGFuZCB0YWcgbmFtZSB0byBnZXQgYSBoaXQgdnMKKyAgICAgICAgb25lIGF0dHJpYnV0
ZSBuYW1lLCB2YWx1ZSBhbmQgYSBjYXRlZ29yeSBpbiB0aGUgcHJldmlvdXMgY2FjaGUuIFRvIGF2
b2lkIGJsb3dpbmcgdXAgdGhlIG1lbW9yeSwgd2UgaW50cm9kdWNlZAorICAgICAgICBhIHRpbWVy
IHRvIGNsZWFyIHRoZSBjYWNoZSBpZiB0aGUgaGl0IHJhdGUgaXMgdG9vIGxvdy4KKworICAgICAg
ICBUaGUgbWVhc3VyZWQgaGl0IHJhdGUgaXMgYWN0dWFsbHkgYmV0dGVyIG5vdyAtIGluIHRoZSA5
MCUgcmFuZ2Ugb24gbW9zdCBwYWdlIGN5Y2xlcnMuIFRoaXMgdXBzIHRoZSBtYXRjaGVkCisgICAg
ICAgIHByb3BlcnRpZXMgaGl0IHJhdGUgYnkgMSBwZXJjZW50IHBvaW50IG9uIHByZXNlbnRhdGlv
biBhdHRyaWJ1dGVzLgorCisgICAgICAgICoqIFRoaXMgaXMgbm90IGEgdHJ1ZSBhcHBsZS10by1h
cHBsZSBjb21wYXJpc29uIGFzIHRoZSBjYWNoZSBtb2RlbCB3YXMgY2hhbmdlZC4KKworICAgICAg
ICAqIGRvbS9TdHlsZWRFbGVtZW50LmNwcDoKKyAgICAgICAgKFByZXNlbnRhdGlvbkF0dHJpYnV0
ZUNhY2hlQ2xlYW5lcik6CisgICAgICAgIChXZWJDb3JlOjpQcmVzZW50YXRpb25BdHRyaWJ1dGVD
YWNoZUNsZWFuZXI6OlByZXNlbnRhdGlvbkF0dHJpYnV0ZUNhY2hlQ2xlYW5lcik6CisgICAgICAg
IChXZWJDb3JlOjpQcmVzZW50YXRpb25BdHRyaWJ1dGVDYWNoZUNsZWFuZXI6OmRpZEhpdFByZXNl
bnRhdGlvbkF0dHJpYnV0ZUNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6OlByZXNlbnRhdGlvbkF0
dHJpYnV0ZUNhY2hlQ2xlYW5lcjo6Y2xlYW5DYWNoZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OnByZXNlbnRhdGlvbkF0dHJpYnV0ZUNhY2hlQ2xlYW5lcik6CisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZWRFbGVtZW50Ojp1cGRhdGVBdHRyaWJ1dGVTdHlsZSk6CisgICAg
ICAgIEFkZGVkIHRoZSBsb2dpYyB0byBjbGVhbiB0aGUgcHJlc2VudGF0aW9uIGF0dHJpYnV0ZSBj
YWNoZSBpZiB3ZSBkcm9wIGJlbG93IDEwMCBoaXRzIHBlciBtaW51dGVzLgorCiAyMDEyLTA0LTAz
ICBTaGF3biBTaW5naCAgPHNoYXduc2luZ2hAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJv
bWl1bV0gcmVtb3ZlIGRlYWQgZnVuY3Rpb24gZGVjbGFyYXRpb25zIGluIFJlbmRlclN1cmZhY2Vj
aHJvbWl1bQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuY3BwCmluZGV4IDY0MjkyMDRiZDI3
ZjE2NmQzZTM4NWZmOWM0YjdiOGQyZjBhNWJiNTEuLjE5NDg4NzJhY2MzYWJkYzM4YTM2NTcxZTlm
Zjg2ZjI5YWVmOTYyY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5jcHAKQEAgLTc0
LDYgKzc0LDUwIEBAIHN0YXRpYyBQcmVzZW50YXRpb25BdHRyaWJ1dGVDYWNoZSYgcHJlc2VudGF0
aW9uQXR0cmlidXRlQ2FjaGUoKQogICAgIHJldHVybiBjYWNoZTsKIH0KIAorY2xhc3MgUHJlc2Vu
dGF0aW9uQXR0cmlidXRlQ2FjaGVDbGVhbmVyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQ
cmVzZW50YXRpb25BdHRyaWJ1dGVDYWNoZUNsZWFuZXIpOworcHVibGljOgorICAgIFByZXNlbnRh
dGlvbkF0dHJpYnV0ZUNhY2hlQ2xlYW5lcigpCisgICAgICAgIDogbV9jbGVhblRpbWVyKHRoaXMs
ICZQcmVzZW50YXRpb25BdHRyaWJ1dGVDYWNoZUNsZWFuZXI6OmNsZWFuQ2FjaGUpCisgICAgewor
ICAgIH0KKworICAgIHZvaWQgZGlkSGl0UHJlc2VudGF0aW9uQXR0cmlidXRlQ2FjaGUoKQorICAg
IHsKKyAgICAgICAgaWYgKHByZXNlbnRhdGlvbkF0dHJpYnV0ZUNhY2hlKCkuc2l6ZSgpIDwgbWlu
aW11bVByZXNlbnRhdGlvbkF0dHJpYnV0ZUNhY2hlU2l6ZUZvckNsZWFuaW5nKQorICAgICAgICAg
ICAgcmV0dXJuOworCisgICAgICAgIG1faGl0Q291bnQrKzsKKworICAgICAgICBpZiAoIW1fY2xl
YW5UaW1lci5pc0FjdGl2ZSgpKQorICAgICAgICAgICAgbV9jbGVhblRpbWVyLnN0YXJ0T25lU2hv
dChwcmVzZW50YXRpb25BdHRyaWJ1dGVDYWNoZUNsZWFuVGltZUluU2Vjb25kcyk7CisgICAgIH0K
KworcHJpdmF0ZToKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgcHJlc2VudGF0aW9uQXR0cmli
dXRlQ2FjaGVDbGVhblRpbWVJblNlY29uZHMgPSA2MDsKKyAgICBzdGF0aWMgY29uc3QgaW50IG1p
bmltdW1QcmVzZW50YXRpb25BdHRyaWJ1dGVDYWNoZVNpemVGb3JDbGVhbmluZyA9IDEwMDsKKyAg
ICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbWluaW11bVByZXNlbnRhdGlvbkF0dHJpYnV0ZUNhY2hl
SGl0Q291bnRQZXJNaW51dGUgPSAoMTAwICogcHJlc2VudGF0aW9uQXR0cmlidXRlQ2FjaGVDbGVh
blRpbWVJblNlY29uZHMpIC8gNjA7CisKKyAgICB2b2lkIGNsZWFuQ2FjaGUoVGltZXI8UHJlc2Vu
dGF0aW9uQXR0cmlidXRlQ2FjaGVDbGVhbmVyPiogdGltZXIpCisgICAgeworICAgICAgICBBU1NF
UlRfVU5VU0VEKHRpbWVyLCB0aW1lciA9PSAmbV9jbGVhblRpbWVyKTsKKyAgICAgICAgdW5zaWdu
ZWQgaGl0Q291bnQgPSBtX2hpdENvdW50OworICAgICAgICBtX2hpdENvdW50ID0gMDsKKyAgICAg
ICAgaWYgKGhpdENvdW50ID4gbWluaW11bVByZXNlbnRhdGlvbkF0dHJpYnV0ZUNhY2hlSGl0Q291
bnRQZXJNaW51dGUpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHByZXNlbnRhdGlvbkF0
dHJpYnV0ZUNhY2hlKCkuY2xlYXIoKTsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBtX2hpdENvdW50
OworICAgIFRpbWVyPFByZXNlbnRhdGlvbkF0dHJpYnV0ZUNhY2hlQ2xlYW5lcj4gbV9jbGVhblRp
bWVyOworfTsKKworc3RhdGljIFByZXNlbnRhdGlvbkF0dHJpYnV0ZUNhY2hlQ2xlYW5lciYgcHJl
c2VudGF0aW9uQXR0cmlidXRlQ2FjaGVDbGVhbmVyKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xP
Q0FMKFByZXNlbnRhdGlvbkF0dHJpYnV0ZUNhY2hlQ2xlYW5lciwgY2xlYW5lciwgKCkpOworICAg
IHJldHVybiBjbGVhbmVyOworfQorCiB2b2lkIFN0eWxlZEVsZW1lbnQ6OnVwZGF0ZVN0eWxlQXR0
cmlidXRlKCkgY29uc3QKIHsKICAgICBBU1NFUlQoIWlzU3R5bGVBdHRyaWJ1dGVWYWxpZCgpKTsK
QEAgLTI0NCw5ICsyODgsMTAgQEAgdm9pZCBTdHlsZWRFbGVtZW50Ojp1cGRhdGVBdHRyaWJ1dGVT
dHlsZSgpCiAgICAgICAgIGNhY2hlSXRlcmF0b3IgPSBwcmVzZW50YXRpb25BdHRyaWJ1dGVDYWNo
ZSgpLmVuZCgpOwogCiAgICAgUmVmUHRyPFN0eWxlUHJvcGVydHlTZXQ+IHN0eWxlOwotICAgIGlm
IChjYWNoZUhhc2ggJiYgY2FjaGVJdGVyYXRvci0+c2Vjb25kKSAKKyAgICBpZiAoY2FjaGVIYXNo
ICYmIGNhY2hlSXRlcmF0b3ItPnNlY29uZCkgewogICAgICAgICBzdHlsZSA9IGNhY2hlSXRlcmF0
b3ItPnNlY29uZC0+dmFsdWU7Ci0gICAgZWxzZSB7CisgICAgICAgIHByZXNlbnRhdGlvbkF0dHJp
YnV0ZUNhY2hlQ2xlYW5lcigpLmRpZEhpdFByZXNlbnRhdGlvbkF0dHJpYnV0ZUNhY2hlKCk7Cisg
ICAgfSBlbHNlIHsKICAgICAgICAgc3R5bGUgPSBTdHlsZVByb3BlcnR5U2V0OjpjcmVhdGUoaXNT
VkdFbGVtZW50KCkgPyBTVkdBdHRyaWJ1dGVNb2RlIDogQ1NTUXVpcmtzTW9kZSk7CiAgICAgICAg
IHVuc2lnbmVkIHNpemUgPSBhdHRyaWJ1dGVDb3VudCgpOwogICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CkBAIC0yNzAsNyArMzE1LDcgQEAgdm9pZCBTdHlsZWRF
bGVtZW50Ojp1cGRhdGVBdHRyaWJ1dGVTdHlsZSgpCiAgICAgbmV3RW50cnktPmtleSA9IGNhY2hl
S2V5OwogICAgIG5ld0VudHJ5LT52YWx1ZSA9IHN0eWxlLnJlbGVhc2UoKTsKIAotICAgIHN0YXRp
YyBjb25zdCBpbnQgcHJlc2VudGF0aW9uQXR0cmlidXRlQ2FjaGVNYXhpbXVtU2l6ZSA9IDEyODsK
KyAgICBzdGF0aWMgY29uc3QgaW50IHByZXNlbnRhdGlvbkF0dHJpYnV0ZUNhY2hlTWF4aW11bVNp
emUgPSA0MDk2OwogICAgIGlmIChwcmVzZW50YXRpb25BdHRyaWJ1dGVDYWNoZSgpLnNpemUoKSA+
IHByZXNlbnRhdGlvbkF0dHJpYnV0ZUNhY2hlTWF4aW11bVNpemUpIHsKICAgICAgICAgLy8gU3Rh
cnQgYnVpbGRpbmcgZnJvbSBzY3JhdGNoIGlmIHRoZSBjYWNoZSBldmVyIGdldHMgYmlnLgogICAg
ICAgICBwcmVzZW50YXRpb25BdHRyaWJ1dGVDYWNoZSgpLmNsZWFyKCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>