<?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>55873</bug_id>
          
          <creation_ts>2011-03-07 06:00:39 -0800</creation_ts>
          <short_desc>Use HashMaps for caching primitive values</short_desc>
          <delta_ts>2011-03-07 11:10:49 -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>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>eric</cc>
    
    <cc>mitz</cc>
    
    <cc>oliver</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>363319</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2011-03-07 06:00:39 -0800</bug_when>
    <thetext>Both the memory efficiency and sharing efficiency of CSSPrimitiveValueCache can be improved by using HashMaps instead of fixed size arrays.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>363320</commentid>
    <comment_count>1</comment_count>
      <attachid>84939</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2011-03-07 06:20:59 -0800</bug_when>
    <thetext>Created attachment 84939
use HashMaps instead of fixed size arrays for caching

This removes the fixed per-document cost of empty cache (was ~10kb on 32bit)  while also somewhat improving caching efficiency (~5% from expanded integer range which more than pays for itself). Caches usually cover only a fraction of possible values so increased per-item cost from the hash table is ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>363323</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-03-07 06:24:03 -0800</bug_when>
    <thetext>Attachment 84939 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1

Source/WebCore/css/CSSPrimitiveValueCache.cpp:97:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Source/WebCore/css/CSSPrimitiveValueCache.cpp:102:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Source/WebCore/css/CSSPrimitiveValueCache.cpp:107:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Total errors found: 3 in 3 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>363355</commentid>
    <comment_count>3</comment_count>
      <attachid>84939</attachid>
    <who name="">mitz</who>
    <bug_when>2011-03-07 08:22:09 -0800</bug_when>
    <thetext>Comment on attachment 84939
use HashMaps instead of fixed size arrays for caching

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

&gt; Source/WebCore/css/CSSPrimitiveValueCache.cpp:53
&gt; +        m_identifierValueCache.add(ident, primitiveValue);

A get() followed by an add() means two cache lookups. You can do this with a single add().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>363363</commentid>
    <comment_count>4</comment_count>
      <attachid>84939</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-03-07 09:00:35 -0800</bug_when>
    <thetext>Comment on attachment 84939
use HashMaps instead of fixed size arrays for caching

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

&gt; Source/WebCore/css/CSSPrimitiveValueCache.cpp:119
&gt; +    RefPtr&lt;CSSPrimitiveValue&gt; primitiveValue = cache-&gt;get(intValue);
&gt;      if (!primitiveValue) {
&gt;          primitiveValue = CSSPrimitiveValue::create(value, type);
&gt; -        m_integerValueCache[intValue][type] = primitiveValue;
&gt; +        cache-&gt;add(intValue, primitiveValue);
&gt;      }

Same comment as the the one mitz gave above. This can be done with one hash lookup.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>363409</commentid>
    <comment_count>5</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2011-03-07 10:54:10 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/80477 (with single hash lookups)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>363421</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-03-07 11:10:49 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/80477 might have broken Qt Linux Release</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>84939</attachid>
            <date>2011-03-07 06:20:59 -0800</date>
            <delta_ts>2011-03-07 09:00:35 -0800</delta_ts>
            <desc>use HashMaps instead of fixed size arrays for caching</desc>
            <filename>primitive-value-cache-hash.patch</filename>
            <type>text/plain</type>
            <size>6322</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgwNDY2KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTEtMDMtMDcgIEFudHRpIEtv
aXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFVzZSBIYXNoTWFwcyBmb3IgY2FjaGluZyBwcmltaXRpdmUgdmFs
dWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NTg3
MworICAgICAgICAKKyAgICAgICAgTW9zdCBkb2N1bWVudHMgdXNlIG9ubHkgc21hbGwgc3Vic2V0
IG9mIGNhY2hlYWJsZSBwcmltaXRpdmUgdmFsdWVzLiBCeSByZXBsYWNpbmcKKyAgICAgICAgZml4
ZWQgc2l6ZSBjYWNoZSBhcnJheXMgd2l0aCBIYXNoTWFwcyB3ZSBjYW4gcmVkdWNlIHRoZSBjb25z
dGFudCBtZW1vcnkgdXNhZ2Ugd2hpbGUgYWxzbworICAgICAgICBleHBhbmRpbmcgdGhlIHJhbmdl
IG9mIGNhY2hlYWJsZSB2YWx1ZXMuCisKKyAgICAgICAgKiBjc3MvQ1NTUHJpbWl0aXZlVmFsdWVD
YWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZUNhY2hlOjpDU1NQ
cmltaXRpdmVWYWx1ZUNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVl
Q2FjaGU6OmNyZWF0ZUlkZW50aWZpZXJWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmlt
aXRpdmVWYWx1ZUNhY2hlOjpjcmVhdGVDb2xvclZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNT
U1ByaW1pdGl2ZVZhbHVlQ2FjaGU6OmNyZWF0ZVZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NTUHJp
bWl0aXZlVmFsdWVDYWNoZS5oOgorCiAyMDExLTAzLTA3ICBBbnR0aSBLb2l2aXN0byAgPGFudHRp
QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBPbGl2ZXIgSHVudC4KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZUNhY2hlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWVDYWNoZS5jcHAJKHJldmlzaW9u
IDgwNDYzKQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlQ2FjaGUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw5IEBAIENTU1ByaW1pdGl2ZVZhbHVlQ2FjaGU6
OkNTU1ByaW1pdGl2ZVZhbHUKICAgICA6IG1fY29sb3JUcmFuc3BhcmVudChDU1NQcmltaXRpdmVW
YWx1ZTo6Y3JlYXRlQ29sb3IoQ29sb3I6OnRyYW5zcGFyZW50KSkKICAgICAsIG1fY29sb3JXaGl0
ZShDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlQ29sb3IoQ29sb3I6OndoaXRlKSkKICAgICAsIG1f
Y29sb3JCbGFjayhDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlQ29sb3IoQ29sb3I6OmJsYWNrKSkK
KyAgICAsIG1fcGl4ZWxaZXJvKENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoMCwgQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU19QWCkpCisgICAgLCBtX3BlcmNlbnRaZXJvKENTU1ByaW1pdGl2ZVZhbHVl
OjpjcmVhdGUoMCwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFKSkKKyAgICAsIG1f
bnVtYmVyWmVybyhDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKDAsIENTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NfTlVNQkVSKSkKIHsKIH0KIApAQCAtNDEsMTMgKzQ0LDEzIEBAIENTU1ByaW1pdGl2ZVZh
bHVlQ2FjaGU6On5DU1NQcmltaXRpdmVWYWwKIAogUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1
ZT4gQ1NTUHJpbWl0aXZlVmFsdWVDYWNoZTo6Y3JlYXRlSWRlbnRpZmllclZhbHVlKGludCBpZGVu
dCkKIHsKLSAgICBpZiAoaWRlbnQgPCAwIHx8IGlkZW50ID49IG51bUNTU1ZhbHVlS2V5d29yZHMp
CisgICAgaWYgKGlkZW50IDw9IDAgfHwgaWRlbnQgPj0gbnVtQ1NTVmFsdWVLZXl3b3JkcykKICAg
ICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKGlkZW50KTsK
LQotICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gcHJpbWl0aXZlVmFsdWUgPSBtX2lkZW50
aWZpZXJWYWx1ZUNhY2hlW2lkZW50XTsKKyAgICAKKyAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFs
dWU+IHByaW1pdGl2ZVZhbHVlID0gbV9pZGVudGlmaWVyVmFsdWVDYWNoZS5nZXQoaWRlbnQpOwog
ICAgIGlmICghcHJpbWl0aXZlVmFsdWUpIHsKICAgICAgICAgcHJpbWl0aXZlVmFsdWUgPSBDU1NQ
cmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihpZGVudCk7Ci0gICAgICAgIG1faWRlbnRp
ZmllclZhbHVlQ2FjaGVbaWRlbnRdID0gcHJpbWl0aXZlVmFsdWU7CisgICAgICAgIG1faWRlbnRp
ZmllclZhbHVlQ2FjaGUuYWRkKGlkZW50LCBwcmltaXRpdmVWYWx1ZSk7CiAgICAgfQogICAgIHJl
dHVybiBwcmltaXRpdmVWYWx1ZS5yZWxlYXNlKCk7CiB9CkBAIC02NiwxMCArNjksMTEgQEAgUGFz
c1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gQ1NTUHJpbWl0aQogICAgIFJlZlB0cjxDU1NQcmlt
aXRpdmVWYWx1ZT4gcHJpbWl0aXZlVmFsdWUgPSBtX2NvbG9yVmFsdWVDYWNoZS5nZXQocmdiVmFs
dWUpOwogICAgIGlmIChwcmltaXRpdmVWYWx1ZSkKICAgICAgICAgcmV0dXJuIHByaW1pdGl2ZVZh
bHVlLnJlbGVhc2UoKTsKKwogICAgIHByaW1pdGl2ZVZhbHVlID0gQ1NTUHJpbWl0aXZlVmFsdWU6
OmNyZWF0ZUNvbG9yKHJnYlZhbHVlKTsKICAgICAvLyBKdXN0IHdpcGUgb3V0IHRoZSBjYWNoZSBh
bmQgc3RhcnQgcmVidWlsZGluZyBpZiBpdCBnZXRzIHRvbyBiaWcuCi0gICAgY29uc3QgaW50IG1h
eENvbG9yQ2FjaGVTaXplID0gNTEyOwotICAgIGlmIChtX2NvbG9yVmFsdWVDYWNoZS5zaXplKCkg
Pj0gbWF4Q29sb3JDYWNoZVNpemUpCisgICAgY29uc3QgaW50IG1heGltdW1Db2xvckNhY2hlU2l6
ZSA9IDUxMjsKKyAgICBpZiAobV9jb2xvclZhbHVlQ2FjaGUuc2l6ZSgpID49IG1heGltdW1Db2xv
ckNhY2hlU2l6ZSkKICAgICAgICAgbV9jb2xvclZhbHVlQ2FjaGUuY2xlYXIoKTsKICAgICBtX2Nv
bG9yVmFsdWVDYWNoZS5hZGQocmdiVmFsdWUsIHByaW1pdGl2ZVZhbHVlKTsKICAgICAKQEAgLTc4
LDE3ICs4Miw0MiBAQCBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBDU1NQcmltaXRpCiAK
IFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IENTU1ByaW1pdGl2ZVZhbHVlQ2FjaGU6OmNy
ZWF0ZVZhbHVlKGRvdWJsZSB2YWx1ZSwgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlcyB0eXBl
KQogewotICAgIGlmICh0eXBlID4gbWF4Q2FjaGVkVW5pdFR5cGUgfHwgdmFsdWUgPCAwIHx8IHZh
bHVlID49IGNhY2hlZEludGVnZXJDb3VudCkKKyAgICAvLyBTbWFsbCBwb3NpdGl2ZSBpbnRlZ2Vy
cyByZXBlYXQgb2Z0ZW4uCisgICAgc3RhdGljIGNvbnN0IGludCBtYXhpbXVtQ2FjaGVhYmxlVmFs
dWUgPSAyNTY7CisgICAgaWYgKHZhbHVlIDwgMCB8fCB2YWx1ZSA+IG1heGltdW1DYWNoZWFibGVW
YWx1ZSkKICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUodmFsdWUsIHR5
cGUpOwogCiAgICAgaW50IGludFZhbHVlID0gc3RhdGljX2Nhc3Q8aW50Pih2YWx1ZSk7CiAgICAg
aWYgKHZhbHVlICE9IGludFZhbHVlKQogICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6
OmNyZWF0ZSh2YWx1ZSwgdHlwZSk7Ci0gICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBwcmlt
aXRpdmVWYWx1ZSA9IG1faW50ZWdlclZhbHVlQ2FjaGVbaW50VmFsdWVdW3R5cGVdOworICAgIAor
ICAgIEludGVnZXJWYWx1ZUNhY2hlKiBjYWNoZTsKKyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBj
YXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFg6CisgICAgICAgIGlmIChpbnRWYWx1ZSA9PSAw
KQorICAgICAgICAgICAgcmV0dXJuIG1fcGl4ZWxaZXJvOworICAgICAgICBjYWNoZSA9ICZtX3Bp
eGVsVmFsdWVDYWNoZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTX1BFUkNFTlRBR0U6CisgICAgICAgIGlmIChpbnRWYWx1ZSA9PSAwKQorICAgICAgICAg
ICAgcmV0dXJuIG1fcGVyY2VudFplcm87CisgICAgICAgIGNhY2hlID0gJm1fcGVyY2VudFZhbHVl
Q2FjaGU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19O
VU1CRVI6CisgICAgICAgIGlmIChpbnRWYWx1ZSA9PSAwKQorICAgICAgICAgICAgcmV0dXJuIG1f
bnVtYmVyWmVybzsKKyAgICAgICAgY2FjaGUgPSAmbV9udW1iZXJWYWx1ZUNhY2hlOworICAgICAg
ICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6
OmNyZWF0ZSh2YWx1ZSwgdHlwZSk7CisgICAgfQorCisgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZh
bHVlPiBwcmltaXRpdmVWYWx1ZSA9IGNhY2hlLT5nZXQoaW50VmFsdWUpOwogICAgIGlmICghcHJp
bWl0aXZlVmFsdWUpIHsKICAgICAgICAgcHJpbWl0aXZlVmFsdWUgPSBDU1NQcmltaXRpdmVWYWx1
ZTo6Y3JlYXRlKHZhbHVlLCB0eXBlKTsKLSAgICAgICAgbV9pbnRlZ2VyVmFsdWVDYWNoZVtpbnRW
YWx1ZV1bdHlwZV0gPSBwcmltaXRpdmVWYWx1ZTsKKyAgICAgICAgY2FjaGUtPmFkZChpbnRWYWx1
ZSwgcHJpbWl0aXZlVmFsdWUpOwogICAgIH0KKyAgICAKICAgICByZXR1cm4gcHJpbWl0aXZlVmFs
dWUucmVsZWFzZSgpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZl
VmFsdWVDYWNoZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRp
dmVWYWx1ZUNhY2hlLmgJKHJldmlzaW9uIDgwNDYzKQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NT
U1ByaW1pdGl2ZVZhbHVlQ2FjaGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDksNyArNDksNyBAQCBw
dWJsaWM6CiBwcml2YXRlOgogICAgIENTU1ByaW1pdGl2ZVZhbHVlQ2FjaGUoKTsKIAotICAgIHR5
cGVkZWYgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBJZGVudGlmaWVyVmFsdWVDYWNoZVtudW1D
U1NWYWx1ZUtleXdvcmRzXTsKKyAgICB0eXBlZGVmIEhhc2hNYXA8aW50LCBSZWZQdHI8Q1NTUHJp
bWl0aXZlVmFsdWU+ID4gSWRlbnRpZmllclZhbHVlQ2FjaGU7CiAgICAgSWRlbnRpZmllclZhbHVl
Q2FjaGUgbV9pZGVudGlmaWVyVmFsdWVDYWNoZTsKIAogICAgIHR5cGVkZWYgSGFzaE1hcDx1bnNp
Z25lZCwgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiA+IENvbG9yVmFsdWVDYWNoZTsKQEAgLTU4
LDEyICs1OCwxMyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gbV9j
b2xvcldoaXRlOwogICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gbV9jb2xvckJsYWNrOwog
ICAgIAotICAgIC8vIFNtYWxsIGludGVnZXJzIGFyZSB2ZXJ5IGNvbW1vbi4gU2hhcmUgdGhlbS4K
LSAgICBzdGF0aWMgY29uc3QgaW50IGNhY2hlZEludGVnZXJDb3VudCA9IDEyODsKLSAgICAvLyBP
dGhlciBjb21tb24gcHJpbWl0aXZlIHR5cGVzIGhhdmUgVW5pdFR5cGVzIHNtYWxsZXIgdGhhbiB0
aGlzLgotICAgIHN0YXRpYyBjb25zdCBpbnQgbWF4Q2FjaGVkVW5pdFR5cGUgPSBDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTX1BYOwotICAgIHR5cGVkZWYgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBJ
bnRlZ2VyVmFsdWVDYWNoZVtjYWNoZWRJbnRlZ2VyQ291bnRdW21heENhY2hlZFVuaXRUeXBlICsg
MV07Ci0gICAgSW50ZWdlclZhbHVlQ2FjaGUgbV9pbnRlZ2VyVmFsdWVDYWNoZTsKKyAgICB0eXBl
ZGVmIEhhc2hNYXA8aW50LCBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+ID4gSW50ZWdlclZhbHVl
Q2FjaGU7CisgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBtX3BpeGVsWmVybzsKKyAgICBS
ZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IG1fcGVyY2VudFplcm87CisgICAgUmVmUHRyPENTU1By
aW1pdGl2ZVZhbHVlPiBtX251bWJlclplcm87CisgICAgSW50ZWdlclZhbHVlQ2FjaGUgbV9waXhl
bFZhbHVlQ2FjaGU7CisgICAgSW50ZWdlclZhbHVlQ2FjaGUgbV9wZXJjZW50VmFsdWVDYWNoZTsK
KyAgICBJbnRlZ2VyVmFsdWVDYWNoZSBtX251bWJlclZhbHVlQ2FjaGU7CiB9OwogCiB9Cg==
</data>
<flag name="review"
          id="76988"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>