<?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>131685</bug_id>
          
          <creation_ts>2014-04-15 11:57:00 -0700</creation_ts>
          <short_desc>std::bitset&lt;&gt;::test() does unnecessary bounds checks on CSSPropertyID bitsets</short_desc>
          <delta_ts>2014-04-28 02:19:14 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Zan Dobersek">zan</reporter>
          <assigned_to name="Zan Dobersek">zan</assigned_to>
          <cc>allan.jensen</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1000913</commentid>
    <comment_count>0</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-04-15 11:57:00 -0700</bug_when>
    <thetext>std::bitset&lt;&gt;::test() does unnecessary bounds checks on CSSPropertyID bitsets</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1000920</commentid>
    <comment_count>1</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-04-15 12:19:54 -0700</bug_when>
    <thetext>This popped up on the WHATWG spec single-page load, where StyleResolver::CascadedProperties::hasProperty() gets quite hot.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1000925</commentid>
    <comment_count>2</comment_count>
      <attachid>229392</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-04-15 12:38:40 -0700</bug_when>
    <thetext>Created attachment 229392
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1001194</commentid>
    <comment_count>3</comment_count>
      <attachid>229392</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-04-16 10:26:04 -0700</bug_when>
    <thetext>Comment on attachment 229392
Patch

Should we add some assertions that these properties are in-range?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1004192</commentid>
    <comment_count>4</comment_count>
      <attachid>230197</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-04-25 14:04:06 -0700</bug_when>
    <thetext>Created attachment 230197
Patch

Uploaded another iteration for review, now includes bounds checks in ASSERTs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1004395</commentid>
    <comment_count>5</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2014-04-27 02:39:59 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; This popped up on the WHATWG spec single-page load, where StyleResolver::CascadedProperties::hasProperty() gets quite hot.

Another way to make hasProperty() less hot would be to make StyleResolver::CascadedProperties a separate list of property ID&apos;s that are present. Then StyleResolver::applyCascadedProperties() wouldn&apos;t have to iterate over every property ID, checking if each one is present in the set.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1004467</commentid>
    <comment_count>6</comment_count>
      <attachid>230197</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-04-27 19:58:56 -0700</bug_when>
    <thetext>Comment on attachment 230197
Patch

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

&gt; Source/WebCore/css/StyleProperties.cpp:928
&gt; +        ASSERT(!shorthandPropertyID || shortPropertyIndex &lt; shorthandPropertyUsed.size());

Wouldn’t it be better to put this assertion inside the if just below to avoid the &quot;||&quot; here?

&gt; Source/WebCore/css/StyleResolver.cpp:191
&gt; -    bool hasProperty(CSSPropertyID id) const { return m_propertyIsPresent.test(id); }
&gt; +    bool hasProperty(CSSPropertyID id) const
&gt; +    {
&gt; +        ASSERT(id &lt; m_propertyIsPresent.size());
&gt; +        return m_propertyIsPresent[id];
&gt; +    }

Normally when a function body grows to be nontrivial like this we like to put it in the header after the class definition, with the inline keyword, rather than leaving it inside the class definition.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1004503</commentid>
    <comment_count>7</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-04-28 01:16:50 -0700</bug_when>
    <thetext>Committed r167878: &lt;http://trac.webkit.org/changeset/167878&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1004510</commentid>
    <comment_count>8</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-04-28 02:19:14 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Committed r167878: &lt;http://trac.webkit.org/changeset/167878&gt;

This actually landed in r167877.
http://trac.webkit.org/changeset/167877

r167878 landed as a follow-up to bug #132228, but the Perl tools messed up Carlos&apos; commit.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>229392</attachid>
            <date>2014-04-15 12:38:40 -0700</date>
            <delta_ts>2014-04-25 14:03:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-131685-20140415123817.patch</filename>
            <type>text/plain</type>
            <size>4628</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2NzMxOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDE0LTA0LTE1ICBaYW4gRG9i
ZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBzdGQ6OmJpdHNldDw+Ojp0
ZXN0KCkgZG9lcyB1bm5lY2Vzc2FyeSBib3VuZHMgY2hlY2tzIG9uIENTU1Byb3BlcnR5SUQgYml0
c2V0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMx
Njg1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNl
IHN0ZDo6Yml0c2V0PD46Om9wZXJhdG9yW10oKSBpbnN0ZWFkIG9mIHN0ZDo6Yml0c2V0PD46OnRl
c3QoKSB0byBhdm9pZAorICAgICAgICBib3VuZHMgY2hlY2tzIHdoaWNoIGFyZSBub3QgbmVjZXNz
YXJ5IGFzIGxvbmcgYXMgYSBDU1NQcm9wZXJ0eUlEIHZhbHVlIGlzIHVzZWQuCisKKyAgICAgICAg
KiBjc3MvQ1NTUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZpbHRlclByb3BlcnRpZXMp
OgorICAgICAgICAqIGNzcy9TdHlsZVByb3BlcnRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGVQcm9wZXJ0aWVzOjphc1RleHQpOgorICAgICAgICAqIGNzcy9TdHlsZVJlc29sdmVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OkNhc2NhZGVkUHJvcGVydGllczo6
aGFzUHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6Q2FzY2FkZWRQ
cm9wZXJ0aWVzOjpzZXQpOgorCiAyMDE0LTA0LTE1ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFz
ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIExheWVyVHJlZUFzVGV4dEJlaGF2aW9yIHNob3VsZCBi
ZSBpbiB0aGUgV2ViQ29yZSBuYW1lc3BhY2UKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQ
YXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3Bw
CShyZXZpc2lvbiAxNjczMTcpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTQ3Niw3ICsxNDc2LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGZp
bHRlclByb3BlcnRpZXMoYm9vbAogICAgICAgICBpZiAocHJvcGVydHkuaXNJbXBvcnRhbnQoKSAh
PSBpbXBvcnRhbnQpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgY29uc3QgdW5zaWdu
ZWQgcHJvcGVydHlJREluZGV4ID0gcHJvcGVydHkuaWQoKSAtIGZpcnN0Q1NTUHJvcGVydHk7Ci0g
ICAgICAgIGlmIChzZWVuUHJvcGVydGllcy50ZXN0KHByb3BlcnR5SURJbmRleCkpCisgICAgICAg
IGlmIChzZWVuUHJvcGVydGllc1twcm9wZXJ0eUlESW5kZXhdKQogICAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgIHNlZW5Qcm9wZXJ0aWVzLnNldChwcm9wZXJ0eUlESW5kZXgpOwogICAgICAg
ICBvdXRwdXRbLS11bnVzZWRFbnRyaWVzXSA9IHByb3BlcnR5OwpJbmRleDogU291cmNlL1dlYkNv
cmUvY3NzL1N0eWxlUHJvcGVydGllcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlUHJvcGVydGllcy5jcHAJKHJldmlzaW9uIDE2NzMxNykKKysrIFNvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MjQsMTMgKzgy
NCwxMyBAQCBTdHJpbmcgU3R5bGVQcm9wZXJ0aWVzOjphc1RleHQoKSBjb25zdAogICAgICAgICAg
ICAgICAgIGJvcmRlckZhbGxiYWNrU2hvcnRoYW5kUHJvcGVydHkgPSBDU1NQcm9wZXJ0eUJvcmRl
ckNvbG9yOwogCiAgICAgICAgICAgICAvLyBGSVhNRTogRGVhbCB3aXRoIGNhc2VzIHdoZXJlIG9u
bHkgc29tZSBvZiBib3JkZXItKHRvcHxyaWdodHxib3R0b218bGVmdCkgYXJlIHNwZWNpZmllZC4K
LSAgICAgICAgICAgIGlmICghc2hvcnRoYW5kUHJvcGVydHlBcHBlYXJlZC50ZXN0KENTU1Byb3Bl
cnR5Qm9yZGVyIC0gZmlyc3RDU1NQcm9wZXJ0eSkpIHsKKyAgICAgICAgICAgIGlmICghc2hvcnRo
YW5kUHJvcGVydHlBcHBlYXJlZFtDU1NQcm9wZXJ0eUJvcmRlciAtIGZpcnN0Q1NTUHJvcGVydHld
KSB7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBib3JkZXJQcm9wZXJ0eVZhbHVlKFJldHVybk51
bGxPblVuY29tbW9uVmFsdWVzKTsKICAgICAgICAgICAgICAgICBpZiAodmFsdWUuaXNOdWxsKCkp
CiAgICAgICAgICAgICAgICAgICAgIHNob3J0aGFuZFByb3BlcnR5QXBwZWFyZWQuc2V0KENTU1By
b3BlcnR5Qm9yZGVyIC0gZmlyc3RDU1NQcm9wZXJ0eSk7CiAgICAgICAgICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgICAgICAgICBzaG9ydGhhbmRQcm9wZXJ0eUlEID0gQ1NTUHJvcGVydHlCb3Jk
ZXI7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKHNob3J0aGFuZFByb3BlcnR5VXNlZC50ZXN0KENT
U1Byb3BlcnR5Qm9yZGVyIC0gZmlyc3RDU1NQcm9wZXJ0eSkpCisgICAgICAgICAgICB9IGVsc2Ug
aWYgKHNob3J0aGFuZFByb3BlcnR5VXNlZFtDU1NQcm9wZXJ0eUJvcmRlciAtIGZpcnN0Q1NTUHJv
cGVydHldKQogICAgICAgICAgICAgICAgIHNob3J0aGFuZFByb3BlcnR5SUQgPSBDU1NQcm9wZXJ0
eUJvcmRlcjsKICAgICAgICAgICAgIGlmICghc2hvcnRoYW5kUHJvcGVydHlJRCkKICAgICAgICAg
ICAgICAgICBzaG9ydGhhbmRQcm9wZXJ0eUlEID0gYm9yZGVyRmFsbGJhY2tTaG9ydGhhbmRQcm9w
ZXJ0eTsKQEAgLTkyNSw5ICs5MjUsOSBAQCBTdHJpbmcgU3R5bGVQcm9wZXJ0aWVzOjphc1RleHQo
KSBjb25zdAogCiAgICAgICAgIHVuc2lnbmVkIHNob3J0UHJvcGVydHlJbmRleCA9IHNob3J0aGFu
ZFByb3BlcnR5SUQgLSBmaXJzdENTU1Byb3BlcnR5OwogICAgICAgICBpZiAoc2hvcnRoYW5kUHJv
cGVydHlJRCkgewotICAgICAgICAgICAgaWYgKHNob3J0aGFuZFByb3BlcnR5VXNlZC50ZXN0KHNo
b3J0UHJvcGVydHlJbmRleCkpCisgICAgICAgICAgICBpZiAoc2hvcnRoYW5kUHJvcGVydHlVc2Vk
W3Nob3J0UHJvcGVydHlJbmRleF0pCiAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAg
ICAgICBpZiAoIXNob3J0aGFuZFByb3BlcnR5QXBwZWFyZWQudGVzdChzaG9ydFByb3BlcnR5SW5k
ZXgpICYmIHZhbHVlLmlzTnVsbCgpKQorICAgICAgICAgICAgaWYgKCFzaG9ydGhhbmRQcm9wZXJ0
eUFwcGVhcmVkW3Nob3J0UHJvcGVydHlJbmRleF0gJiYgdmFsdWUuaXNOdWxsKCkpCiAgICAgICAg
ICAgICAgICAgdmFsdWUgPSBnZXRQcm9wZXJ0eVZhbHVlKHNob3J0aGFuZFByb3BlcnR5SUQpOwog
ICAgICAgICAgICAgc2hvcnRoYW5kUHJvcGVydHlBcHBlYXJlZC5zZXQoc2hvcnRQcm9wZXJ0eUlu
ZGV4KTsKICAgICAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAko
cmV2aXNpb24gMTY3MzE3KQorKysgU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xODQsNyArMTg0LDcgQEAgcHVibGljOgogICAgICAgICBDU1NW
YWx1ZSogY3NzVmFsdWVbM107CiAgICAgfTsKIAotICAgIGJvb2wgaGFzUHJvcGVydHkoQ1NTUHJv
cGVydHlJRCBpZCkgY29uc3QgeyByZXR1cm4gbV9wcm9wZXJ0eUlzUHJlc2VudC50ZXN0KGlkKTsg
fQorICAgIGJvb2wgaGFzUHJvcGVydHkoQ1NTUHJvcGVydHlJRCBpZCkgY29uc3QgeyByZXR1cm4g
bV9wcm9wZXJ0eUlzUHJlc2VudFtpZF07IH0KICAgICBQcm9wZXJ0eSYgcHJvcGVydHkoQ1NTUHJv
cGVydHlJRCk7CiAgICAgYm9vbCBhZGRNYXRjaGVzKGNvbnN0IE1hdGNoUmVzdWx0JiwgYm9vbCBp
bXBvcnRhbnQsIGludCBzdGFydEluZGV4LCBpbnQgZW5kSW5kZXgsIGJvb2wgaW5oZXJpdGVkT25s
eSA9IGZhbHNlKTsKIApAQCAtMzY4OCw3ICszNjg4LDcgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjpD
YXNjYWRlZFByb3BlcnRpZXM6OgogICAgIEFTU0VSVCghc2hvdWxkQXBwbHlQcm9wZXJ0eUluUGFy
c2VPcmRlcihpZCkpOwogCiAgICAgYXV0byYgcHJvcGVydHkgPSBtX3Byb3BlcnRpZXNbaWRdOwot
ICAgIGlmICghbV9wcm9wZXJ0eUlzUHJlc2VudC50ZXN0KGlkKSkKKyAgICBpZiAoIW1fcHJvcGVy
dHlJc1ByZXNlbnRbaWRdKQogICAgICAgICBtZW1zZXQocHJvcGVydHkuY3NzVmFsdWUsIDAsIHNp
emVvZihwcm9wZXJ0eS5jc3NWYWx1ZSkpOwogICAgIG1fcHJvcGVydHlJc1ByZXNlbnQuc2V0KGlk
KTsKICAgICBzZXRQcm9wZXJ0eUludGVybmFsKHByb3BlcnR5LCBpZCwgY3NzVmFsdWUsIGxpbmtN
YXRjaFR5cGUpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>230197</attachid>
            <date>2014-04-25 14:04:06 -0700</date>
            <delta_ts>2014-04-27 19:58:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-131685-20140425140343.patch</filename>
            <type>text/plain</type>
            <size>4984</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2NzcwOCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDE0LTA0LTI1ICBaYW4gRG9i
ZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBzdGQ6OmJpdHNldDw+Ojp0
ZXN0KCkgZG9lcyB1bm5lY2Vzc2FyeSBib3VuZHMgY2hlY2tzIG9uIENTU1Byb3BlcnR5SUQgYml0
c2V0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMx
Njg1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgVXNlIHN0
ZDo6Yml0c2V0PD46Om9wZXJhdG9yW10oKSBpbnN0ZWFkIG9mIHN0ZDo6Yml0c2V0PD46OnRlc3Qo
KSB0byBhdm9pZAorICAgICAgICBib3VuZHMgY2hlY2tzIHdoaWNoIGFyZSBub3QgbmVjZXNzYXJ5
IGFzIGxvbmcgYXMgYSBDU1NQcm9wZXJ0eUlEIHZhbHVlIGlzIHVzZWQuCisKKyAgICAgICAgKiBj
c3MvQ1NTUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZpbHRlclByb3BlcnRpZXMpOgor
ICAgICAgICAqIGNzcy9TdHlsZVByb3BlcnRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5
bGVQcm9wZXJ0aWVzOjphc1RleHQpOgorICAgICAgICAqIGNzcy9TdHlsZVJlc29sdmVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OkNhc2NhZGVkUHJvcGVydGllczo6aGFz
UHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6Q2FzY2FkZWRQcm9w
ZXJ0aWVzOjpzZXQpOgorCiAyMDE0LTA0LTIzICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRA
aWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBTaGFkb3dSb290IEFQSSB3YXMgcmVtb3ZlZCBp
biByMTY0MTMxCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAkocmV2aXNpb24gMTY3NzA4
KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE0NzUsNyArMTQ3NSw4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBmaWx0ZXJQcm9wZXJ0aWVzKGJv
b2wKICAgICAgICAgaWYgKHByb3BlcnR5LmlzSW1wb3J0YW50KCkgIT0gaW1wb3J0YW50KQogICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgIGNvbnN0IHVuc2lnbmVkIHByb3BlcnR5SURJbmRl
eCA9IHByb3BlcnR5LmlkKCkgLSBmaXJzdENTU1Byb3BlcnR5OwotICAgICAgICBpZiAoc2VlblBy
b3BlcnRpZXMudGVzdChwcm9wZXJ0eUlESW5kZXgpKQorICAgICAgICBBU1NFUlQocHJvcGVydHlJ
REluZGV4IDwgc2VlblByb3BlcnRpZXMuc2l6ZSgpKTsKKyAgICAgICAgaWYgKHNlZW5Qcm9wZXJ0
aWVzW3Byb3BlcnR5SURJbmRleF0pCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgc2Vl
blByb3BlcnRpZXMuc2V0KHByb3BlcnR5SURJbmRleCk7CiAgICAgICAgIG91dHB1dFstLXVudXNl
ZEVudHJpZXNdID0gcHJvcGVydHk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9w
ZXJ0aWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0
aWVzLmNwcAkocmV2aXNpb24gMTY3NzA4KQorKysgU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJv
cGVydGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgyNCwxMyArODI0LDE0IEBAIFN0cmluZyBT
dHlsZVByb3BlcnRpZXM6OmFzVGV4dCgpIGNvbnN0CiAgICAgICAgICAgICAgICAgYm9yZGVyRmFs
bGJhY2tTaG9ydGhhbmRQcm9wZXJ0eSA9IENTU1Byb3BlcnR5Qm9yZGVyQ29sb3I7CiAKICAgICAg
ICAgICAgIC8vIEZJWE1FOiBEZWFsIHdpdGggY2FzZXMgd2hlcmUgb25seSBzb21lIG9mIGJvcmRl
ci0odG9wfHJpZ2h0fGJvdHRvbXxsZWZ0KSBhcmUgc3BlY2lmaWVkLgotICAgICAgICAgICAgaWYg
KCFzaG9ydGhhbmRQcm9wZXJ0eUFwcGVhcmVkLnRlc3QoQ1NTUHJvcGVydHlCb3JkZXIgLSBmaXJz
dENTU1Byb3BlcnR5KSkgeworICAgICAgICAgICAgQVNTRVJUKENTU1Byb3BlcnR5Qm9yZGVyIC0g
Zmlyc3RDU1NQcm9wZXJ0eSA8IHNob3J0aGFuZFByb3BlcnR5QXBwZWFyZWQuc2l6ZSgpKTsKKyAg
ICAgICAgICAgIGlmICghc2hvcnRoYW5kUHJvcGVydHlBcHBlYXJlZFtDU1NQcm9wZXJ0eUJvcmRl
ciAtIGZpcnN0Q1NTUHJvcGVydHldKSB7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBib3JkZXJQ
cm9wZXJ0eVZhbHVlKFJldHVybk51bGxPblVuY29tbW9uVmFsdWVzKTsKICAgICAgICAgICAgICAg
ICBpZiAodmFsdWUuaXNOdWxsKCkpCiAgICAgICAgICAgICAgICAgICAgIHNob3J0aGFuZFByb3Bl
cnR5QXBwZWFyZWQuc2V0KENTU1Byb3BlcnR5Qm9yZGVyIC0gZmlyc3RDU1NQcm9wZXJ0eSk7CiAg
ICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBzaG9ydGhhbmRQcm9wZXJ0
eUlEID0gQ1NTUHJvcGVydHlCb3JkZXI7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKHNob3J0aGFu
ZFByb3BlcnR5VXNlZC50ZXN0KENTU1Byb3BlcnR5Qm9yZGVyIC0gZmlyc3RDU1NQcm9wZXJ0eSkp
CisgICAgICAgICAgICB9IGVsc2UgaWYgKHNob3J0aGFuZFByb3BlcnR5VXNlZFtDU1NQcm9wZXJ0
eUJvcmRlciAtIGZpcnN0Q1NTUHJvcGVydHldKQogICAgICAgICAgICAgICAgIHNob3J0aGFuZFBy
b3BlcnR5SUQgPSBDU1NQcm9wZXJ0eUJvcmRlcjsKICAgICAgICAgICAgIGlmICghc2hvcnRoYW5k
UHJvcGVydHlJRCkKICAgICAgICAgICAgICAgICBzaG9ydGhhbmRQcm9wZXJ0eUlEID0gYm9yZGVy
RmFsbGJhY2tTaG9ydGhhbmRQcm9wZXJ0eTsKQEAgLTkyNCwxMCArOTI1LDExIEBAIFN0cmluZyBT
dHlsZVByb3BlcnRpZXM6OmFzVGV4dCgpIGNvbnN0CiAgICAgICAgIH0KIAogICAgICAgICB1bnNp
Z25lZCBzaG9ydFByb3BlcnR5SW5kZXggPSBzaG9ydGhhbmRQcm9wZXJ0eUlEIC0gZmlyc3RDU1NQ
cm9wZXJ0eTsKKyAgICAgICAgQVNTRVJUKCFzaG9ydGhhbmRQcm9wZXJ0eUlEIHx8IHNob3J0UHJv
cGVydHlJbmRleCA8IHNob3J0aGFuZFByb3BlcnR5VXNlZC5zaXplKCkpOwogICAgICAgICBpZiAo
c2hvcnRoYW5kUHJvcGVydHlJRCkgewotICAgICAgICAgICAgaWYgKHNob3J0aGFuZFByb3BlcnR5
VXNlZC50ZXN0KHNob3J0UHJvcGVydHlJbmRleCkpCisgICAgICAgICAgICBpZiAoc2hvcnRoYW5k
UHJvcGVydHlVc2VkW3Nob3J0UHJvcGVydHlJbmRleF0pCiAgICAgICAgICAgICAgICAgY29udGlu
dWU7Ci0gICAgICAgICAgICBpZiAoIXNob3J0aGFuZFByb3BlcnR5QXBwZWFyZWQudGVzdChzaG9y
dFByb3BlcnR5SW5kZXgpICYmIHZhbHVlLmlzTnVsbCgpKQorICAgICAgICAgICAgaWYgKCFzaG9y
dGhhbmRQcm9wZXJ0eUFwcGVhcmVkW3Nob3J0UHJvcGVydHlJbmRleF0gJiYgdmFsdWUuaXNOdWxs
KCkpCiAgICAgICAgICAgICAgICAgdmFsdWUgPSBnZXRQcm9wZXJ0eVZhbHVlKHNob3J0aGFuZFBy
b3BlcnR5SUQpOwogICAgICAgICAgICAgc2hvcnRoYW5kUHJvcGVydHlBcHBlYXJlZC5zZXQoc2hv
cnRQcm9wZXJ0eUluZGV4KTsKICAgICAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL1N0
eWxlUmVzb2x2ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJl
c29sdmVyLmNwcAkocmV2aXNpb24gMTY3NzA4KQorKysgU291cmNlL1dlYkNvcmUvY3NzL1N0eWxl
UmVzb2x2ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODQsNyArMTg0LDExIEBAIHB1YmxpYzoK
ICAgICAgICAgQ1NTVmFsdWUqIGNzc1ZhbHVlWzNdOwogICAgIH07CiAKLSAgICBib29sIGhhc1By
b3BlcnR5KENTU1Byb3BlcnR5SUQgaWQpIGNvbnN0IHsgcmV0dXJuIG1fcHJvcGVydHlJc1ByZXNl
bnQudGVzdChpZCk7IH0KKyAgICBib29sIGhhc1Byb3BlcnR5KENTU1Byb3BlcnR5SUQgaWQpIGNv
bnN0CisgICAgeworICAgICAgICBBU1NFUlQoaWQgPCBtX3Byb3BlcnR5SXNQcmVzZW50LnNpemUo
KSk7CisgICAgICAgIHJldHVybiBtX3Byb3BlcnR5SXNQcmVzZW50W2lkXTsKKyAgICB9CiAgICAg
UHJvcGVydHkmIHByb3BlcnR5KENTU1Byb3BlcnR5SUQpOwogICAgIGJvb2wgYWRkTWF0Y2hlcyhj
b25zdCBNYXRjaFJlc3VsdCYsIGJvb2wgaW1wb3J0YW50LCBpbnQgc3RhcnRJbmRleCwgaW50IGVu
ZEluZGV4LCBib29sIGluaGVyaXRlZE9ubHkgPSBmYWxzZSk7CiAKQEAgLTM2ODgsNyArMzY5Miw4
IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6Q2FzY2FkZWRQcm9wZXJ0aWVzOjoKICAgICBBU1NFUlQo
IXNob3VsZEFwcGx5UHJvcGVydHlJblBhcnNlT3JkZXIoaWQpKTsKIAogICAgIGF1dG8mIHByb3Bl
cnR5ID0gbV9wcm9wZXJ0aWVzW2lkXTsKLSAgICBpZiAoIW1fcHJvcGVydHlJc1ByZXNlbnQudGVz
dChpZCkpCisgICAgQVNTRVJUKGlkIDwgbV9wcm9wZXJ0eUlzUHJlc2VudC5zaXplKCkpOworICAg
IGlmICghbV9wcm9wZXJ0eUlzUHJlc2VudFtpZF0pCiAgICAgICAgIG1lbXNldChwcm9wZXJ0eS5j
c3NWYWx1ZSwgMCwgc2l6ZW9mKHByb3BlcnR5LmNzc1ZhbHVlKSk7CiAgICAgbV9wcm9wZXJ0eUlz
UHJlc2VudC5zZXQoaWQpOwogICAgIHNldFByb3BlcnR5SW50ZXJuYWwocHJvcGVydHksIGlkLCBj
c3NWYWx1ZSwgbGlua01hdGNoVHlwZSk7Cg==
</data>
<flag name="review"
          id="254591"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>