<?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>51861</bug_id>
          
          <creation_ts>2011-01-03 18:09:35 -0800</creation_ts>
          <short_desc>DataView.getInt8() returns unsigned value on ARM platform</short_desc>
          <delta_ts>2011-01-04 12:44:15 -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>Canvas</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Android</rep_platform>
          <op_sys>Android</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>0</everconfirmed>
          <reporter name="Xianzhu Wang">wangxianzhu</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>eric</cc>
    
    <cc>mdelaney7</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>328866</commentid>
    <comment_count>0</comment_count>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2011-01-03 18:09:35 -0800</bug_when>
    <thetext>LayoutTests/fast/canvas/webgl/data-view-test.html fails on ARM platform:

FAIL view.getInt8(8) should be -128. Was 128.
FAIL view.getInt8(15) should be -1. Was 255.

ARM&apos;s &apos;char&apos; is &apos;unsigned char&apos; by default because it is more efficient on ARM. &apos;Man g++&apos; says &quot;a portable program should always use &apos;signed char&apos; or &apos;unsigned char&apos; when it depends on the signedness of an object.&quot; Here is the case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>328873</commentid>
    <comment_count>1</comment_count>
      <attachid>77863</attachid>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2011-01-03 18:30:53 -0800</bug_when>
    <thetext>Created attachment 77863
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>328907</commentid>
    <comment_count>2</comment_count>
      <attachid>77863</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-01-03 23:48:36 -0800</bug_when>
    <thetext>Comment on attachment 77863
patch

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

&gt; WebCore/bindings/js/JSDataViewCustom.cpp:139
&gt; +        imp-&gt;setInt8(byteOffset, static_cast&lt;signed char&gt;(value), ec);

Does setInt8 take a signed char explictly?  it seems it should.  Does the compiler warn about this sign conversion?  Again, it seems it should.

&gt; WebCore/html/canvas/DataView.h:59
&gt; +    void setInt8(unsigned byteOffset, signed char value, ExceptionCode&amp;);

Ah, I see you&apos;re making ti signed here.  don&apos;t we have a less-verbose type to use than &quot;signed char&quot;?  int8_t or similar?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>328925</commentid>
    <comment_count>3</comment_count>
      <attachid>77871</attachid>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2011-01-04 02:05:55 -0800</bug_when>
    <thetext>Created attachment 77871
patch v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>328926</commentid>
    <comment_count>4</comment_count>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2011-01-04 02:06:46 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 77863 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=77863&amp;action=review
&gt; 
&gt; &gt; WebCore/bindings/js/JSDataViewCustom.cpp:139
&gt; &gt; +        imp-&gt;setInt8(byteOffset, static_cast&lt;signed char&gt;(value), ec);
&gt; 
&gt; Does setInt8 take a signed char explictly?  it seems it should.  Does the compiler warn about this sign conversion?  Again, it seems it should.
&gt; 
&gt; &gt; WebCore/html/canvas/DataView.h:59
&gt; &gt; +    void setInt8(unsigned byteOffset, signed char value, ExceptionCode&amp;);
&gt; 
&gt; Ah, I see you&apos;re making ti signed here.  don&apos;t we have a less-verbose type to use than &quot;signed char&quot;?  int8_t or similar?

Thanks for review.
Changed signed char to int8_t, and also types of other methods to more precise integer types.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>329138</commentid>
    <comment_count>5</comment_count>
      <attachid>77871</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-01-04 12:44:10 -0800</bug_when>
    <thetext>Comment on attachment 77871
patch v2

Clearing flags on attachment: 77871

Committed r74994: &lt;http://trac.webkit.org/changeset/74994&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>329139</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-01-04 12:44:15 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>77863</attachid>
            <date>2011-01-03 18:30:53 -0800</date>
            <delta_ts>2011-01-04 02:05:55 -0800</delta_ts>
            <desc>patch</desc>
            <filename>patch51861</filename>
            <type>text/plain</type>
            <size>6462</size>
            <attacher name="Xianzhu Wang">wangxianzhu</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3NDk1MykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjIgQEAKKzIwMTEtMDEtMDMgIFhpYW56aHUgV2FuZyAgPHdhbmd4aWFuemh1QGdv
b2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgTGV0IERhdGFWaWV3LmdldEludDgoKSBhbmQgRGF0YVZpZXcuc2V0SW50OCgpIHVzZSBleHBs
aWNpdCAnc2lnbmVkIGNoYXInCisgICAgICAgIHRvIGZpeCBmYXN0L2NhbnZhcy93ZWJnbC9kYXRh
LXZpZXctdGVzdC5odG1sIGZhaWx1cmUgb24gQVJNLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTE4NjEKKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
RGF0YVZpZXdDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2V0RGF0YVZpZXdNZW1iZXIp
OgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOERhdGFWaWV3Q3VzdG9tLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlY4RGF0YVZpZXc6OmdldEludDhDYWxsYmFjayk6CisgICAgICAgIChX
ZWJDb3JlOjpWOERhdGFWaWV3OjpzZXRJbnQ4Q2FsbGJhY2spOgorICAgICAgICAqIGh0bWwvY2Fu
dmFzL0RhdGFWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFWaWV3OjpnZXRJbnQ4KToK
KyAgICAgICAgKFdlYkNvcmU6OkRhdGFWaWV3OjpzZXRJbnQ4KToKKyAgICAgICAgKiBodG1sL2Nh
bnZhcy9EYXRhVmlldy5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL0RhdGFWaWV3LmlkbDoKKwog
MjAxMS0wMS0wMyAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNEYXRh
Vmlld0N1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RhdGFW
aWV3Q3VzdG9tLmNwcAkocmV2aXNpb24gNzQ3NzgpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RGF0YVZpZXdDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzYsNyArMTM2LDcgQEAgc3Rh
dGljIEpTVmFsdWUgc2V0RGF0YVZpZXdNZW1iZXIoRXhlY1N0YQogICAgICAgICAKICAgICBzd2l0
Y2ggKHR5cGUpIHsKICAgICBjYXNlIEFjY2Vzc0RhdGFWaWV3TWVtYmVyQXNJbnQ4OgotICAgICAg
ICBpbXAtPnNldEludDgoYnl0ZU9mZnNldCwgc3RhdGljX2Nhc3Q8Y2hhcj4odmFsdWUpLCBlYyk7
CisgICAgICAgIGltcC0+c2V0SW50OChieXRlT2Zmc2V0LCBzdGF0aWNfY2FzdDxzaWduZWQgY2hh
cj4odmFsdWUpLCBlYyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQWNjZXNzRGF0YVZpZXdN
ZW1iZXJBc1VpbnQ4OgogICAgICAgICBpbXAtPnNldFVpbnQ4KGJ5dGVPZmZzZXQsIHN0YXRpY19j
YXN0PHVuc2lnbmVkIGNoYXI+KHZhbHVlKSwgZWMpOwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhEYXRhVmlld0N1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhEYXRhVmlld0N1c3RvbS5jcHAJKHJldmlzaW9uIDc0Nzc4KQorKysg
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEYXRhVmlld0N1c3RvbS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTYyLDcgKzYyLDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RGF0YVZpZXc6
OmdldEludAogICAgIERhdGFWaWV3KiBpbXAgPSBWOERhdGFWaWV3Ojp0b05hdGl2ZShhcmdzLkhv
bGRlcigpKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBFWENFUFRJT05fQkxPQ0so
dW5zaWduZWQsIGJ5dGVPZmZzZXQsIHRvVUludDMyKGFyZ3NbMF0pKTsKLSAgICBjaGFyIHJlc3Vs
dCA9IGltcC0+Z2V0SW50OChieXRlT2Zmc2V0LCBlYyk7CisgICAgc2lnbmVkIGNoYXIgcmVzdWx0
ID0gaW1wLT5nZXRJbnQ4KGJ5dGVPZmZzZXQsIGVjKTsKICAgICBpZiAoVU5MSUtFTFkoZWMpKSB7
CiAgICAgICAgIFY4UHJveHk6OnNldERPTUV4Y2VwdGlvbihlYyk7CiAgICAgICAgIHJldHVybiB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKTsKQEAgLTk3LDcgKzk3LDcgQEAgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IFY4RGF0YVZpZXc6OnNldEludAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAg
IEVYQ0VQVElPTl9CTE9DSyh1bnNpZ25lZCwgYnl0ZU9mZnNldCwgdG9VSW50MzIoYXJnc1swXSkp
OwogICAgIEVYQ0VQVElPTl9CTE9DSyhpbnQsIHZhbHVlLCB0b0ludDMyKGFyZ3NbMV0pKTsKLSAg
ICBpbXAtPnNldEludDgoYnl0ZU9mZnNldCwgc3RhdGljX2Nhc3Q8Y2hhcj4odmFsdWUpLCBlYyk7
CisgICAgaW1wLT5zZXRJbnQ4KGJ5dGVPZmZzZXQsIHN0YXRpY19jYXN0PHNpZ25lZCBjaGFyPih2
YWx1ZSksIGVjKTsKICAgICBpZiAoVU5MSUtFTFkoZWMpKQogICAgICAgICBWOFByb3h5OjpzZXRE
T01FeGNlcHRpb24oZWMpOwogICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKTsKSW5k
ZXg6IFdlYkNvcmUvaHRtbC9jYW52YXMvRGF0YVZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvaHRtbC9jYW52YXMvRGF0YVZpZXcuY3BwCShyZXZpc2lvbiA3NDc3OCkKKysrIFdlYkNvcmUv
aHRtbC9jYW52YXMvRGF0YVZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTAsOSArMTUwLDkg
QEAgdm9pZCBEYXRhVmlldzo6c2V0RGF0YSh1bnNpZ25lZCBieXRlT2ZmcwogICAgIG1lbWNweShz
dGF0aWNfY2FzdDxjaGFyKj4obV9iYXNlQWRkcmVzcykgKyBieXRlT2Zmc2V0LCB0ZW1wVmFsdWUu
Ynl0ZXMsIHNpemVvZihUKSk7CiB9CiAKLWNoYXIgRGF0YVZpZXc6OmdldEludDgodW5zaWduZWQg
Ynl0ZU9mZnNldCwgRXhjZXB0aW9uQ29kZSYgZWMpCitzaWduZWQgY2hhciBEYXRhVmlldzo6Z2V0
SW50OCh1bnNpZ25lZCBieXRlT2Zmc2V0LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICByZXR1
cm4gZ2V0RGF0YTxjaGFyPihieXRlT2Zmc2V0LCBmYWxzZSwgZWMpOworICAgIHJldHVybiBnZXRE
YXRhPHNpZ25lZCBjaGFyPihieXRlT2Zmc2V0LCBmYWxzZSwgZWMpOwogfQogCiB1bnNpZ25lZCBj
aGFyIERhdGFWaWV3OjpnZXRVaW50OCh1bnNpZ25lZCBieXRlT2Zmc2V0LCBFeGNlcHRpb25Db2Rl
JiBlYykKQEAgLTE5MCw5ICsxOTAsOSBAQCBkb3VibGUgRGF0YVZpZXc6OmdldEZsb2F0NjQodW5z
aWduZWQgYnl0CiAgICAgcmV0dXJuIGdldERhdGE8ZG91YmxlPihieXRlT2Zmc2V0LCBsaXR0bGVF
bmRpYW4sIGVjKTsKIH0KIAotdm9pZCBEYXRhVmlldzo6c2V0SW50OCh1bnNpZ25lZCBieXRlT2Zm
c2V0LCBjaGFyIHZhbHVlLCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgRGF0YVZpZXc6OnNldElu
dDgodW5zaWduZWQgYnl0ZU9mZnNldCwgc2lnbmVkIGNoYXIgdmFsdWUsIEV4Y2VwdGlvbkNvZGUm
IGVjKQogewotICAgIHNldERhdGE8Y2hhcj4oYnl0ZU9mZnNldCwgdmFsdWUsIGZhbHNlLCBlYyk7
CisgICAgc2V0RGF0YTxzaWduZWQgY2hhcj4oYnl0ZU9mZnNldCwgdmFsdWUsIGZhbHNlLCBlYyk7
CiB9CiAKIHZvaWQgRGF0YVZpZXc6OnNldFVpbnQ4KHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2ln
bmVkIGNoYXIgdmFsdWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQpJbmRleDogV2ViQ29yZS9odG1sL2Nh
bnZhcy9EYXRhVmlldy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9jYW52YXMvRGF0YVZp
ZXcuaAkocmV2aXNpb24gNzQ3NzgpCisrKyBXZWJDb3JlL2h0bWwvY2FudmFzL0RhdGFWaWV3LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdW5z
aWduZWQgYnl0ZUxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fYnl0ZUxlbmd0aDsgfQogICAgIHZp
cnR1YWwgUGFzc1JlZlB0cjxBcnJheUJ1ZmZlclZpZXc+IHNsaWNlKGludCwgaW50KSBjb25zdCB7
IHJldHVybiAwOyB9CiAKLSAgICBjaGFyIGdldEludDgodW5zaWduZWQgYnl0ZU9mZnNldCwgRXhj
ZXB0aW9uQ29kZSYpOworICAgIHNpZ25lZCBjaGFyIGdldEludDgodW5zaWduZWQgYnl0ZU9mZnNl
dCwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHVuc2lnbmVkIGNoYXIgZ2V0VWludDgodW5zaWduZWQg
Ynl0ZU9mZnNldCwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHNob3J0IGdldEludDE2KHVuc2lnbmVk
IGJ5dGVPZmZzZXQsIEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJldHVybiBnZXRJbnQxNihieXRlT2Zm
c2V0LCBmYWxzZSwgZWMpOyB9CiAgICAgc2hvcnQgZ2V0SW50MTYodW5zaWduZWQgYnl0ZU9mZnNl
dCwgYm9vbCBsaXR0bGVFbmRpYW4sIEV4Y2VwdGlvbkNvZGUmKTsKQEAgLTU2LDcgKzU2LDcgQEAg
cHVibGljOgogICAgIGRvdWJsZSBnZXRGbG9hdDY0KHVuc2lnbmVkIGJ5dGVPZmZzZXQsIEV4Y2Vw
dGlvbkNvZGUmIGVjKSB7IHJldHVybiBnZXRGbG9hdDY0KGJ5dGVPZmZzZXQsIGZhbHNlLCBlYyk7
IH0KICAgICBkb3VibGUgZ2V0RmxvYXQ2NCh1bnNpZ25lZCBieXRlT2Zmc2V0LCBib29sIGxpdHRs
ZUVuZGlhbiwgRXhjZXB0aW9uQ29kZSYpOwogCi0gICAgdm9pZCBzZXRJbnQ4KHVuc2lnbmVkIGJ5
dGVPZmZzZXQsIGNoYXIgdmFsdWUsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIHNldEludDgo
dW5zaWduZWQgYnl0ZU9mZnNldCwgc2lnbmVkIGNoYXIgdmFsdWUsIEV4Y2VwdGlvbkNvZGUmKTsK
ICAgICB2b2lkIHNldFVpbnQ4KHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGNoYXIgdmFs
dWUsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIHNldEludDE2KHVuc2lnbmVkIGJ5dGVPZmZz
ZXQsIHNob3J0IHZhbHVlLCBFeGNlcHRpb25Db2RlJiBlYykgeyBzZXRJbnQxNihieXRlT2Zmc2V0
LCB2YWx1ZSwgZmFsc2UsIGVjKTsgfQogICAgIHZvaWQgc2V0SW50MTYodW5zaWduZWQgYnl0ZU9m
ZnNldCwgc2hvcnQgdmFsdWUsIGJvb2wgbGl0dGxlRW5kaWFuLCBFeGNlcHRpb25Db2RlJik7Cklu
ZGV4OiBXZWJDb3JlL2h0bWwvY2FudmFzL0RhdGFWaWV3LmlkbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2h0bWwvY2FudmFzL0RhdGFWaWV3LmlkbAkocmV2aXNpb24gNzQ3NzgpCisrKyBXZWJDb3Jl
L2h0bWwvY2FudmFzL0RhdGFWaWV3LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBA
QCBtb2R1bGUgaHRtbCB7CiAgICAgICAgIC8vIEFsbCB0aGVzZSBtZXRob2RzIHJhaXNlIGFuIGV4
Y2VwdGlvbiBpZiB0aGV5IHdvdWxkIHJlYWQgb3Igd3JpdGUgYmV5b25kIHRoZSBlbmQgb2YgdGhl
IHZpZXcuCiAKICAgICAgICAgLy8gV2UgaGF2ZSB0byB1c2UgY3VzdG9tIGNvZGUgYmVjYXVzZSBv
dXIgY29kZSBnZW5lcmF0b3IgZG9lcyBub3Qgc3VwcG9ydCBjaGFyIHR5cGUuCi0gICAgICAgIC8v
IGNoYXIgZ2V0SW50OChpbiB1bnNpZ25lZCBsb25nIGJ5dGVPZmZzZXQpOworICAgICAgICAvLyBz
aWduZWQgY2hhciBnZXRJbnQ4KGluIHVuc2lnbmVkIGxvbmcgYnl0ZU9mZnNldCk7CiAgICAgICAg
IC8vIHVuc2lnbmVkIGNoYXIgZ2V0VWludDgoaW4gdW5zaWduZWQgbG9uZyBieXRlT2Zmc2V0KTsK
ICAgICAgICAgW0N1c3RvbV0gRE9NT2JqZWN0IGdldEludDgoKQogICAgICAgICAgICAgcmFpc2Vz
IChET01FeGNlcHRpb24pOwpAQCAtNTksNyArNTksNyBAQCBtb2R1bGUgaHRtbCB7CiAgICAgICAg
ICAgICByYWlzZXMgKERPTUV4Y2VwdGlvbik7CiAKICAgICAgICAgLy8gV2UgaGF2ZSB0byB1c2Ug
Y3VzdG9tIGNvZGUgYmVjYXVzZSBvdXIgY29kZSBnZW5lcmF0b3IgZG9lcyBub3Qgc3VwcG9ydCBj
aGFyIHR5cGUuCi0gICAgICAgIC8vIHZvaWQgc2V0SW50OChpbiB1bnNpZ25lZCBsb25nIGJ5dGVP
ZmZzZXQsIGluIGJ5dGUgdmFsdWUpOworICAgICAgICAvLyB2b2lkIHNldEludDgoaW4gdW5zaWdu
ZWQgbG9uZyBieXRlT2Zmc2V0LCBpbiBzaWduZWQgYnl0ZSB2YWx1ZSk7CiAgICAgICAgIC8vIHZv
aWQgc2V0VWludDgoaW4gdW5zaWduZWQgbG9uZyBieXRlT2Zmc2V0LCBpbiB1bnNpZ25lZCBieXRl
IHZhbHVlKTsKICAgICAgICAgW0N1c3RvbV0gdm9pZCBzZXRJbnQ4KCkKICAgICAgICAgICAgIHJh
aXNlcyAoRE9NRXhjZXB0aW9uKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>77871</attachid>
            <date>2011-01-04 02:05:55 -0800</date>
            <delta_ts>2011-01-04 12:44:10 -0800</delta_ts>
            <desc>patch v2</desc>
            <filename>patch51861a</filename>
            <type>text/plain</type>
            <size>14574</size>
            <attacher name="Xianzhu Wang">wangxianzhu</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3NDk1MykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjYgQEAKKzIwMTEtMDEtMDMgIFhpYW56aHUgV2FuZyAgPHdhbmd4aWFuemh1QGdv
b2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgTGV0IERhdGFWaWV3LmdldEludDgoKSBhbmQgRGF0YVZpZXcuc2V0SW50OCgpIHVzZSBpbnQ4
X3QgaW5zdGVhZCBvZgorICAgICAgICBhbWJpZ3VvdXMgJ2NoYXInIHRvIGZpeCBmYXN0L2NhbnZh
cy93ZWJnbC9kYXRhLXZpZXctdGVzdC5odG1sIGZhaWx1cmUKKyAgICAgICAgb24gQVJNLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTE4NjEKKworICAg
ICAgICBCeSB0aGUgd2F5LCBjaGFuZ2VkIG90aGVyIGdldEludFhYKCkgYW5kIHNldEludFhYKCkg
bWV0aG9kcyB0byB1c2UKKyAgICAgICAgbW9yZSBwcmVjaXNlIGludGVnZXIgdHlwZXMuCisKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0RhdGFWaWV3Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OnNldERhdGFWaWV3TWVtYmVyKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhE
YXRhVmlld0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOERhdGFWaWV3OjpnZXRJbnQ4
Q2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VjhEYXRhVmlldzo6c2V0SW50OENhbGxiYWNr
KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9EYXRhVmlldy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEYXRhVmlldzo6Z2V0SW50OCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVmlldzo6c2V0SW50
OCk6CisgICAgICAgICogaHRtbC9jYW52YXMvRGF0YVZpZXcuaDoKKyAgICAgICAgKiBodG1sL2Nh
bnZhcy9EYXRhVmlldy5pZGw6CisKIDIwMTEtMDEtMDMgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFw
cGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCkluZGV4OiBXZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRGF0YVZpZXdDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvYmluZGluZ3MvanMvSlNEYXRhVmlld0N1c3RvbS5jcHAJKHJldmlzaW9uIDc0Nzc4KQorKysg
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RhdGFWaWV3Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTM2LDEwICsxMzYsMTAgQEAgc3RhdGljIEpTVmFsdWUgc2V0RGF0YVZpZXdNZW1iZXIoRXhl
Y1N0YQogICAgICAgICAKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICBjYXNlIEFjY2Vzc0RhdGFW
aWV3TWVtYmVyQXNJbnQ4OgotICAgICAgICBpbXAtPnNldEludDgoYnl0ZU9mZnNldCwgc3RhdGlj
X2Nhc3Q8Y2hhcj4odmFsdWUpLCBlYyk7CisgICAgICAgIGltcC0+c2V0SW50OChieXRlT2Zmc2V0
LCBzdGF0aWNfY2FzdDxpbnQ4X3Q+KHZhbHVlKSwgZWMpOwogICAgICAgICBicmVhazsKICAgICBj
YXNlIEFjY2Vzc0RhdGFWaWV3TWVtYmVyQXNVaW50ODoKLSAgICAgICAgaW1wLT5zZXRVaW50OChi
eXRlT2Zmc2V0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPih2YWx1ZSksIGVjKTsKKyAgICAg
ICAgaW1wLT5zZXRVaW50OChieXRlT2Zmc2V0LCBzdGF0aWNfY2FzdDx1aW50OF90Pih2YWx1ZSks
IGVjKTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERhdGFWaWV3Q3Vz
dG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERhdGFW
aWV3Q3VzdG9tLmNwcAkocmV2aXNpb24gNzQ3NzgpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOERhdGFWaWV3Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjIsNyArNjIsNyBA
QCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhEYXRhVmlldzo6Z2V0SW50CiAgICAgRGF0YVZpZXcq
IGltcCA9IFY4RGF0YVZpZXc6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwogICAgIEV4Y2VwdGlv
bkNvZGUgZWMgPSAwOwogICAgIEVYQ0VQVElPTl9CTE9DSyh1bnNpZ25lZCwgYnl0ZU9mZnNldCwg
dG9VSW50MzIoYXJnc1swXSkpOwotICAgIGNoYXIgcmVzdWx0ID0gaW1wLT5nZXRJbnQ4KGJ5dGVP
ZmZzZXQsIGVjKTsKKyAgICBpbnQ4X3QgcmVzdWx0ID0gaW1wLT5nZXRJbnQ4KGJ5dGVPZmZzZXQs
IGVjKTsKICAgICBpZiAoVU5MSUtFTFkoZWMpKSB7CiAgICAgICAgIFY4UHJveHk6OnNldERPTUV4
Y2VwdGlvbihlYyk7CiAgICAgICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKTsKQEAg
LTc5LDcgKzc5LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RGF0YVZpZXc6OmdldFVpbgog
ICAgIERhdGFWaWV3KiBpbXAgPSBWOERhdGFWaWV3Ojp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsK
ICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBFWENFUFRJT05fQkxPQ0sodW5zaWduZWQs
IGJ5dGVPZmZzZXQsIHRvVUludDMyKGFyZ3NbMF0pKTsKLSAgICB1bnNpZ25lZCBjaGFyIHJlc3Vs
dCA9IGltcC0+Z2V0VWludDgoYnl0ZU9mZnNldCwgZWMpOworICAgIHVpbnQ4X3QgcmVzdWx0ID0g
aW1wLT5nZXRVaW50OChieXRlT2Zmc2V0LCBlYyk7CiAgICAgaWYgKFVOTElLRUxZKGVjKSkgewog
ICAgICAgICBWOFByb3h5OjpzZXRET01FeGNlcHRpb24oZWMpOwogICAgICAgICByZXR1cm4gdjg6
OkhhbmRsZTx2ODo6VmFsdWU+KCk7CkBAIC05Nyw3ICs5Nyw3IEBAIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBWOERhdGFWaWV3OjpzZXRJbnQKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBF
WENFUFRJT05fQkxPQ0sodW5zaWduZWQsIGJ5dGVPZmZzZXQsIHRvVUludDMyKGFyZ3NbMF0pKTsK
ICAgICBFWENFUFRJT05fQkxPQ0soaW50LCB2YWx1ZSwgdG9JbnQzMihhcmdzWzFdKSk7Ci0gICAg
aW1wLT5zZXRJbnQ4KGJ5dGVPZmZzZXQsIHN0YXRpY19jYXN0PGNoYXI+KHZhbHVlKSwgZWMpOwor
ICAgIGltcC0+c2V0SW50OChieXRlT2Zmc2V0LCBzdGF0aWNfY2FzdDxpbnQ4X3Q+KHZhbHVlKSwg
ZWMpOwogICAgIGlmIChVTkxJS0VMWShlYykpCiAgICAgICAgIFY4UHJveHk6OnNldERPTUV4Y2Vw
dGlvbihlYyk7CiAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpOwpAQCAtMTEzLDcg
KzExMyw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERhdGFWaWV3OjpzZXRVaW4KICAgICBF
eGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBFWENFUFRJT05fQkxPQ0sodW5zaWduZWQsIGJ5dGVP
ZmZzZXQsIHRvVUludDMyKGFyZ3NbMF0pKTsKICAgICBFWENFUFRJT05fQkxPQ0soaW50LCB2YWx1
ZSwgdG9JbnQzMihhcmdzWzFdKSk7Ci0gICAgaW1wLT5zZXRVaW50OChieXRlT2Zmc2V0LCBzdGF0
aWNfY2FzdDx1bnNpZ25lZCBjaGFyPih2YWx1ZSksIGVjKTsKKyAgICBpbXAtPnNldFVpbnQ4KGJ5
dGVPZmZzZXQsIHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHZhbHVlKSwgZWMpOwogICAgIGlmIChVTkxJ
S0VMWShlYykpCiAgICAgICAgIFY4UHJveHk6OnNldERPTUV4Y2VwdGlvbihlYyk7CiAgICAgcmV0
dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpOwpJbmRleDogV2ViQ29yZS9odG1sL2NhbnZhcy9E
YXRhVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL2NhbnZhcy9EYXRhVmlldy5j
cHAJKHJldmlzaW9uIDc0Nzc4KQorKysgV2ViQ29yZS9odG1sL2NhbnZhcy9EYXRhVmlldy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE1MCwzNCArMTUwLDM0IEBAIHZvaWQgRGF0YVZpZXc6OnNldERh
dGEodW5zaWduZWQgYnl0ZU9mZnMKICAgICBtZW1jcHkoc3RhdGljX2Nhc3Q8Y2hhcio+KG1fYmFz
ZUFkZHJlc3MpICsgYnl0ZU9mZnNldCwgdGVtcFZhbHVlLmJ5dGVzLCBzaXplb2YoVCkpOwogfQog
Ci1jaGFyIERhdGFWaWV3OjpnZXRJbnQ4KHVuc2lnbmVkIGJ5dGVPZmZzZXQsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQoraW50OF90IERhdGFWaWV3OjpnZXRJbnQ4KHVuc2lnbmVkIGJ5dGVPZmZzZXQsIEV4
Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIHJldHVybiBnZXREYXRhPGNoYXI+KGJ5dGVPZmZzZXQs
IGZhbHNlLCBlYyk7CisgICAgcmV0dXJuIGdldERhdGE8aW50OF90PihieXRlT2Zmc2V0LCBmYWxz
ZSwgZWMpOwogfQogCi11bnNpZ25lZCBjaGFyIERhdGFWaWV3OjpnZXRVaW50OCh1bnNpZ25lZCBi
eXRlT2Zmc2V0LCBFeGNlcHRpb25Db2RlJiBlYykKK3VpbnQ4X3QgRGF0YVZpZXc6OmdldFVpbnQ4
KHVuc2lnbmVkIGJ5dGVPZmZzZXQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIHJldHVybiBn
ZXREYXRhPHVuc2lnbmVkIGNoYXI+KGJ5dGVPZmZzZXQsIGZhbHNlLCBlYyk7CisgICAgcmV0dXJu
IGdldERhdGE8dWludDhfdD4oYnl0ZU9mZnNldCwgZmFsc2UsIGVjKTsKIH0KIAotc2hvcnQgRGF0
YVZpZXc6OmdldEludDE2KHVuc2lnbmVkIGJ5dGVPZmZzZXQsIGJvb2wgbGl0dGxlRW5kaWFuLCBF
eGNlcHRpb25Db2RlJiBlYykKK2ludDE2X3QgRGF0YVZpZXc6OmdldEludDE2KHVuc2lnbmVkIGJ5
dGVPZmZzZXQsIGJvb2wgbGl0dGxlRW5kaWFuLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBy
ZXR1cm4gZ2V0RGF0YTxzaG9ydD4oYnl0ZU9mZnNldCwgbGl0dGxlRW5kaWFuLCBlYyk7CisgICAg
cmV0dXJuIGdldERhdGE8aW50MTZfdD4oYnl0ZU9mZnNldCwgbGl0dGxlRW5kaWFuLCBlYyk7CiB9
CiAKLXVuc2lnbmVkIHNob3J0IERhdGFWaWV3OjpnZXRVaW50MTYodW5zaWduZWQgYnl0ZU9mZnNl
dCwgYm9vbCBsaXR0bGVFbmRpYW4sIEV4Y2VwdGlvbkNvZGUmIGVjKQordWludDE2X3QgRGF0YVZp
ZXc6OmdldFVpbnQxNih1bnNpZ25lZCBieXRlT2Zmc2V0LCBib29sIGxpdHRsZUVuZGlhbiwgRXhj
ZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgcmV0dXJuIGdldERhdGE8dW5zaWduZWQgc2hvcnQ+KGJ5
dGVPZmZzZXQsIGxpdHRsZUVuZGlhbiwgZWMpOworICAgIHJldHVybiBnZXREYXRhPHVpbnQxNl90
PihieXRlT2Zmc2V0LCBsaXR0bGVFbmRpYW4sIGVjKTsKIH0KIAotaW50IERhdGFWaWV3OjpnZXRJ
bnQzMih1bnNpZ25lZCBieXRlT2Zmc2V0LCBib29sIGxpdHRsZUVuZGlhbiwgRXhjZXB0aW9uQ29k
ZSYgZWMpCitpbnQzMl90IERhdGFWaWV3OjpnZXRJbnQzMih1bnNpZ25lZCBieXRlT2Zmc2V0LCBi
b29sIGxpdHRsZUVuZGlhbiwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgcmV0dXJuIGdldERh
dGE8aW50PihieXRlT2Zmc2V0LCBsaXR0bGVFbmRpYW4sIGVjKTsKKyAgICByZXR1cm4gZ2V0RGF0
YTxpbnQzMl90PihieXRlT2Zmc2V0LCBsaXR0bGVFbmRpYW4sIGVjKTsKIH0KIAotdW5zaWduZWQg
RGF0YVZpZXc6OmdldFVpbnQzMih1bnNpZ25lZCBieXRlT2Zmc2V0LCBib29sIGxpdHRsZUVuZGlh
biwgRXhjZXB0aW9uQ29kZSYgZWMpCit1aW50MzJfdCBEYXRhVmlldzo6Z2V0VWludDMyKHVuc2ln
bmVkIGJ5dGVPZmZzZXQsIGJvb2wgbGl0dGxlRW5kaWFuLCBFeGNlcHRpb25Db2RlJiBlYykKIHsK
LSAgICByZXR1cm4gZ2V0RGF0YTx1bnNpZ25lZD4oYnl0ZU9mZnNldCwgbGl0dGxlRW5kaWFuLCBl
Yyk7CisgICAgcmV0dXJuIGdldERhdGE8dWludDMyX3Q+KGJ5dGVPZmZzZXQsIGxpdHRsZUVuZGlh
biwgZWMpOwogfQogCiBmbG9hdCBEYXRhVmlldzo6Z2V0RmxvYXQzMih1bnNpZ25lZCBieXRlT2Zm
c2V0LCBib29sIGxpdHRsZUVuZGlhbiwgRXhjZXB0aW9uQ29kZSYgZWMpCkBAIC0xOTAsMzQgKzE5
MCwzNCBAQCBkb3VibGUgRGF0YVZpZXc6OmdldEZsb2F0NjQodW5zaWduZWQgYnl0CiAgICAgcmV0
dXJuIGdldERhdGE8ZG91YmxlPihieXRlT2Zmc2V0LCBsaXR0bGVFbmRpYW4sIGVjKTsKIH0KIAot
dm9pZCBEYXRhVmlldzo6c2V0SW50OCh1bnNpZ25lZCBieXRlT2Zmc2V0LCBjaGFyIHZhbHVlLCBF
eGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgRGF0YVZpZXc6OnNldEludDgodW5zaWduZWQgYnl0ZU9m
ZnNldCwgaW50OF90IHZhbHVlLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBzZXREYXRhPGNo
YXI+KGJ5dGVPZmZzZXQsIHZhbHVlLCBmYWxzZSwgZWMpOworICAgIHNldERhdGE8aW50OF90Pihi
eXRlT2Zmc2V0LCB2YWx1ZSwgZmFsc2UsIGVjKTsKIH0KIAotdm9pZCBEYXRhVmlldzo6c2V0VWlu
dDgodW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgY2hhciB2YWx1ZSwgRXhjZXB0aW9uQ29k
ZSYgZWMpCit2b2lkIERhdGFWaWV3OjpzZXRVaW50OCh1bnNpZ25lZCBieXRlT2Zmc2V0LCB1aW50
OF90IHZhbHVlLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBzZXREYXRhPHVuc2lnbmVkIGNo
YXI+KGJ5dGVPZmZzZXQsIHZhbHVlLCBmYWxzZSwgZWMpOworICAgIHNldERhdGE8dWludDhfdD4o
Ynl0ZU9mZnNldCwgdmFsdWUsIGZhbHNlLCBlYyk7CiB9CiAKIHZvaWQgRGF0YVZpZXc6OnNldElu
dDE2KHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHNob3J0IHZhbHVlLCBib29sIGxpdHRsZUVuZGlhbiwg
RXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgc2V0RGF0YTxzaG9ydD4oYnl0ZU9mZnNldCwgdmFs
dWUsIGxpdHRsZUVuZGlhbiwgZWMpOworICAgIHNldERhdGE8aW50MTZfdD4oYnl0ZU9mZnNldCwg
dmFsdWUsIGxpdHRsZUVuZGlhbiwgZWMpOwogfQogCi12b2lkIERhdGFWaWV3OjpzZXRVaW50MTYo
dW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgc2hvcnQgdmFsdWUsIGJvb2wgbGl0dGxlRW5k
aWFuLCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgRGF0YVZpZXc6OnNldFVpbnQxNih1bnNpZ25l
ZCBieXRlT2Zmc2V0LCB1aW50MTZfdCB2YWx1ZSwgYm9vbCBsaXR0bGVFbmRpYW4sIEV4Y2VwdGlv
bkNvZGUmIGVjKQogewotICAgIHNldERhdGE8dW5zaWduZWQgc2hvcnQ+KGJ5dGVPZmZzZXQsIHZh
bHVlLCBsaXR0bGVFbmRpYW4sIGVjKTsKKyAgICBzZXREYXRhPHVpbnQxNl90PihieXRlT2Zmc2V0
LCB2YWx1ZSwgbGl0dGxlRW5kaWFuLCBlYyk7CiB9CiAKLXZvaWQgRGF0YVZpZXc6OnNldEludDMy
KHVuc2lnbmVkIGJ5dGVPZmZzZXQsIGludCB2YWx1ZSwgYm9vbCBsaXR0bGVFbmRpYW4sIEV4Y2Vw
dGlvbkNvZGUmIGVjKQordm9pZCBEYXRhVmlldzo6c2V0SW50MzIodW5zaWduZWQgYnl0ZU9mZnNl
dCwgaW50MzJfdCB2YWx1ZSwgYm9vbCBsaXR0bGVFbmRpYW4sIEV4Y2VwdGlvbkNvZGUmIGVjKQog
ewotICAgIHNldERhdGE8aW50PihieXRlT2Zmc2V0LCB2YWx1ZSwgbGl0dGxlRW5kaWFuLCBlYyk7
CisgICAgc2V0RGF0YTxpbnQzMl90PihieXRlT2Zmc2V0LCB2YWx1ZSwgbGl0dGxlRW5kaWFuLCBl
Yyk7CiB9CiAKLXZvaWQgRGF0YVZpZXc6OnNldFVpbnQzMih1bnNpZ25lZCBieXRlT2Zmc2V0LCB1
bnNpZ25lZCB2YWx1ZSwgYm9vbCBsaXR0bGVFbmRpYW4sIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9p
ZCBEYXRhVmlldzo6c2V0VWludDMyKHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVpbnQzMl90IHZhbHVl
LCBib29sIGxpdHRsZUVuZGlhbiwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgc2V0RGF0YTx1
bnNpZ25lZD4oYnl0ZU9mZnNldCwgdmFsdWUsIGxpdHRsZUVuZGlhbiwgZWMpOworICAgIHNldERh
dGE8dWludDMyX3Q+KGJ5dGVPZmZzZXQsIHZhbHVlLCBsaXR0bGVFbmRpYW4sIGVjKTsKIH0KIAog
dm9pZCBEYXRhVmlldzo6c2V0RmxvYXQzMih1bnNpZ25lZCBieXRlT2Zmc2V0LCBmbG9hdCB2YWx1
ZSwgYm9vbCBsaXR0bGVFbmRpYW4sIEV4Y2VwdGlvbkNvZGUmIGVjKQpJbmRleDogV2ViQ29yZS9o
dG1sL2NhbnZhcy9EYXRhVmlldy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9jYW52YXMv
RGF0YVZpZXcuaAkocmV2aXNpb24gNzQ3NzgpCisrKyBXZWJDb3JlL2h0bWwvY2FudmFzL0RhdGFW
aWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDMxICs0MSwzMSBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB1bnNpZ25lZCBieXRlTGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9ieXRlTGVuZ3RoOyB9
CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEFycmF5QnVmZmVyVmlldz4gc2xpY2UoaW50LCBpbnQp
IGNvbnN0IHsgcmV0dXJuIDA7IH0KIAotICAgIGNoYXIgZ2V0SW50OCh1bnNpZ25lZCBieXRlT2Zm
c2V0LCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdW5zaWduZWQgY2hhciBnZXRVaW50OCh1bnNpZ25l
ZCBieXRlT2Zmc2V0LCBFeGNlcHRpb25Db2RlJik7Ci0gICAgc2hvcnQgZ2V0SW50MTYodW5zaWdu
ZWQgYnl0ZU9mZnNldCwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIGdldEludDE2KGJ5dGVP
ZmZzZXQsIGZhbHNlLCBlYyk7IH0KLSAgICBzaG9ydCBnZXRJbnQxNih1bnNpZ25lZCBieXRlT2Zm
c2V0LCBib29sIGxpdHRsZUVuZGlhbiwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHVuc2lnbmVkIHNo
b3J0IGdldFVpbnQxNih1bnNpZ25lZCBieXRlT2Zmc2V0LCBFeGNlcHRpb25Db2RlJiBlYykgeyBy
ZXR1cm4gZ2V0VWludDE2KGJ5dGVPZmZzZXQsIGZhbHNlLCBlYyk7IH0KLSAgICB1bnNpZ25lZCBz
aG9ydCBnZXRVaW50MTYodW5zaWduZWQgYnl0ZU9mZnNldCwgYm9vbCBsaXR0bGVFbmRpYW4sIEV4
Y2VwdGlvbkNvZGUmKTsKLSAgICBpbnQgZ2V0SW50MzIodW5zaWduZWQgYnl0ZU9mZnNldCwgRXhj
ZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIGdldEludDMyKGJ5dGVPZmZzZXQsIGZhbHNlLCBlYyk7
IH0KLSAgICBpbnQgZ2V0SW50MzIodW5zaWduZWQgYnl0ZU9mZnNldCwgYm9vbCBsaXR0bGVFbmRp
YW4sIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB1bnNpZ25lZCBnZXRVaW50MzIodW5zaWduZWQgYnl0
ZU9mZnNldCwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIGdldFVpbnQzMihieXRlT2Zmc2V0
LCBmYWxzZSwgZWMpOyB9Ci0gICAgdW5zaWduZWQgZ2V0VWludDMyKHVuc2lnbmVkIGJ5dGVPZmZz
ZXQsIGJvb2wgbGl0dGxlRW5kaWFuLCBFeGNlcHRpb25Db2RlJik7CisgICAgaW50OF90IGdldElu
dDgodW5zaWduZWQgYnl0ZU9mZnNldCwgRXhjZXB0aW9uQ29kZSYpOworICAgIHVpbnQ4X3QgZ2V0
VWludDgodW5zaWduZWQgYnl0ZU9mZnNldCwgRXhjZXB0aW9uQ29kZSYpOworICAgIGludDE2X3Qg
Z2V0SW50MTYodW5zaWduZWQgYnl0ZU9mZnNldCwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJu
IGdldEludDE2KGJ5dGVPZmZzZXQsIGZhbHNlLCBlYyk7IH0KKyAgICBpbnQxNl90IGdldEludDE2
KHVuc2lnbmVkIGJ5dGVPZmZzZXQsIGJvb2wgbGl0dGxlRW5kaWFuLCBFeGNlcHRpb25Db2RlJik7
CisgICAgdWludDE2X3QgZ2V0VWludDE2KHVuc2lnbmVkIGJ5dGVPZmZzZXQsIEV4Y2VwdGlvbkNv
ZGUmIGVjKSB7IHJldHVybiBnZXRVaW50MTYoYnl0ZU9mZnNldCwgZmFsc2UsIGVjKTsgfQorICAg
IHVpbnQxNl90IGdldFVpbnQxNih1bnNpZ25lZCBieXRlT2Zmc2V0LCBib29sIGxpdHRsZUVuZGlh
biwgRXhjZXB0aW9uQ29kZSYpOworICAgIGludDMyX3QgZ2V0SW50MzIodW5zaWduZWQgYnl0ZU9m
ZnNldCwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgcmV0dXJuIGdldEludDMyKGJ5dGVPZmZzZXQsIGZh
bHNlLCBlYyk7IH0KKyAgICBpbnQzMl90IGdldEludDMyKHVuc2lnbmVkIGJ5dGVPZmZzZXQsIGJv
b2wgbGl0dGxlRW5kaWFuLCBFeGNlcHRpb25Db2RlJik7CisgICAgdWludDMyX3QgZ2V0VWludDMy
KHVuc2lnbmVkIGJ5dGVPZmZzZXQsIEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHJldHVybiBnZXRVaW50
MzIoYnl0ZU9mZnNldCwgZmFsc2UsIGVjKTsgfQorICAgIHVpbnQzMl90IGdldFVpbnQzMih1bnNp
Z25lZCBieXRlT2Zmc2V0LCBib29sIGxpdHRsZUVuZGlhbiwgRXhjZXB0aW9uQ29kZSYpOwogICAg
IGZsb2F0IGdldEZsb2F0MzIodW5zaWduZWQgYnl0ZU9mZnNldCwgRXhjZXB0aW9uQ29kZSYgZWMp
IHsgcmV0dXJuIGdldEZsb2F0MzIoYnl0ZU9mZnNldCwgZmFsc2UsIGVjKTsgfQogICAgIGZsb2F0
IGdldEZsb2F0MzIodW5zaWduZWQgYnl0ZU9mZnNldCwgYm9vbCBsaXR0bGVFbmRpYW4sIEV4Y2Vw
dGlvbkNvZGUmKTsKICAgICBkb3VibGUgZ2V0RmxvYXQ2NCh1bnNpZ25lZCBieXRlT2Zmc2V0LCBF
eGNlcHRpb25Db2RlJiBlYykgeyByZXR1cm4gZ2V0RmxvYXQ2NChieXRlT2Zmc2V0LCBmYWxzZSwg
ZWMpOyB9CiAgICAgZG91YmxlIGdldEZsb2F0NjQodW5zaWduZWQgYnl0ZU9mZnNldCwgYm9vbCBs
aXR0bGVFbmRpYW4sIEV4Y2VwdGlvbkNvZGUmKTsKIAotICAgIHZvaWQgc2V0SW50OCh1bnNpZ25l
ZCBieXRlT2Zmc2V0LCBjaGFyIHZhbHVlLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdm9pZCBzZXRV
aW50OCh1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBjaGFyIHZhbHVlLCBFeGNlcHRpb25D
b2RlJik7Ci0gICAgdm9pZCBzZXRJbnQxNih1bnNpZ25lZCBieXRlT2Zmc2V0LCBzaG9ydCB2YWx1
ZSwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgc2V0SW50MTYoYnl0ZU9mZnNldCwgdmFsdWUsIGZhbHNl
LCBlYyk7IH0KLSAgICB2b2lkIHNldEludDE2KHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHNob3J0IHZh
bHVlLCBib29sIGxpdHRsZUVuZGlhbiwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZvaWQgc2V0VWlu
dDE2KHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIHNob3J0IHZhbHVlLCBFeGNlcHRpb25D
b2RlJiBlYykgeyBzZXRVaW50MTYoYnl0ZU9mZnNldCwgdmFsdWUsIGZhbHNlLCBlYyk7IH0KLSAg
ICB2b2lkIHNldFVpbnQxNih1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBzaG9ydCB2YWx1
ZSwgYm9vbCBsaXR0bGVFbmRpYW4sIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lkIHNldEludDMy
KHVuc2lnbmVkIGJ5dGVPZmZzZXQsIGludCB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgc2V0
SW50MzIoYnl0ZU9mZnNldCwgdmFsdWUsIGZhbHNlLCBlYyk7IH0gCi0gICAgdm9pZCBzZXRJbnQz
Mih1bnNpZ25lZCBieXRlT2Zmc2V0LCBpbnQgdmFsdWUsIGJvb2wgbGl0dGxlRW5kaWFuLCBFeGNl
cHRpb25Db2RlJik7Ci0gICAgdm9pZCBzZXRVaW50MzIodW5zaWduZWQgYnl0ZU9mZnNldCwgdW5z
aWduZWQgdmFsdWUsIEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHNldFVpbnQzMihieXRlT2Zmc2V0LCB2
YWx1ZSwgZmFsc2UsIGVjKTsgfQotICAgIHZvaWQgc2V0VWludDMyKHVuc2lnbmVkIGJ5dGVPZmZz
ZXQsIHVuc2lnbmVkIHZhbHVlLCBib29sIGxpdHRsZUVuZGlhbiwgRXhjZXB0aW9uQ29kZSYpOwor
ICAgIHZvaWQgc2V0SW50OCh1bnNpZ25lZCBieXRlT2Zmc2V0LCBpbnQ4X3QgdmFsdWUsIEV4Y2Vw
dGlvbkNvZGUmKTsKKyAgICB2b2lkIHNldFVpbnQ4KHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVpbnQ4
X3QgdmFsdWUsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIHNldEludDE2KHVuc2lnbmVkIGJ5
dGVPZmZzZXQsIGludDE2X3QgdmFsdWUsIEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHNldEludDE2KGJ5
dGVPZmZzZXQsIHZhbHVlLCBmYWxzZSwgZWMpOyB9CisgICAgdm9pZCBzZXRJbnQxNih1bnNpZ25l
ZCBieXRlT2Zmc2V0LCBpbnQxNl90IHZhbHVlLCBib29sIGxpdHRsZUVuZGlhbiwgRXhjZXB0aW9u
Q29kZSYpOworICAgIHZvaWQgc2V0VWludDE2KHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVpbnQxNl90
IHZhbHVlLCBFeGNlcHRpb25Db2RlJiBlYykgeyBzZXRVaW50MTYoYnl0ZU9mZnNldCwgdmFsdWUs
IGZhbHNlLCBlYyk7IH0KKyAgICB2b2lkIHNldFVpbnQxNih1bnNpZ25lZCBieXRlT2Zmc2V0LCB1
aW50MTZfdCB2YWx1ZSwgYm9vbCBsaXR0bGVFbmRpYW4sIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2
b2lkIHNldEludDMyKHVuc2lnbmVkIGJ5dGVPZmZzZXQsIGludDMyX3QgdmFsdWUsIEV4Y2VwdGlv
bkNvZGUmIGVjKSB7IHNldEludDMyKGJ5dGVPZmZzZXQsIHZhbHVlLCBmYWxzZSwgZWMpOyB9IAor
ICAgIHZvaWQgc2V0SW50MzIodW5zaWduZWQgYnl0ZU9mZnNldCwgaW50MzJfdCB2YWx1ZSwgYm9v
bCBsaXR0bGVFbmRpYW4sIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIHNldFVpbnQzMih1bnNp
Z25lZCBieXRlT2Zmc2V0LCB1aW50MzJfdCB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgc2V0
VWludDMyKGJ5dGVPZmZzZXQsIHZhbHVlLCBmYWxzZSwgZWMpOyB9CisgICAgdm9pZCBzZXRVaW50
MzIodW5zaWduZWQgYnl0ZU9mZnNldCwgdWludDMyX3QgdmFsdWUsIGJvb2wgbGl0dGxlRW5kaWFu
LCBFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBzZXRGbG9hdDMyKHVuc2lnbmVkIGJ5dGVPZmZz
ZXQsIGZsb2F0IHZhbHVlLCBFeGNlcHRpb25Db2RlJiBlYykgeyBzZXRGbG9hdDMyKGJ5dGVPZmZz
ZXQsIHZhbHVlLCBmYWxzZSwgZWMpOyB9CiAgICAgdm9pZCBzZXRGbG9hdDMyKHVuc2lnbmVkIGJ5
dGVPZmZzZXQsIGZsb2F0IHZhbHVlLCBib29sIGxpdHRsZUVuZGlhbiwgRXhjZXB0aW9uQ29kZSYp
OwogICAgIHZvaWQgc2V0RmxvYXQ2NCh1bnNpZ25lZCBieXRlT2Zmc2V0LCBkb3VibGUgdmFsdWUs
IEV4Y2VwdGlvbkNvZGUmIGVjKSB7IHNldEZsb2F0NjQoYnl0ZU9mZnNldCwgdmFsdWUsIGZhbHNl
LCBlYyk7IH0KSW5kZXg6IFdlYkNvcmUvaHRtbC9jYW52YXMvRGF0YVZpZXcuaWRsCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvaHRtbC9jYW52YXMvRGF0YVZpZXcuaWRsCShyZXZpc2lvbiA3NDc3OCkK
KysrIFdlYkNvcmUvaHRtbC9jYW52YXMvRGF0YVZpZXcuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0z
NSw5ICszNSw5IEBAIG1vZHVsZSBodG1sIHsKICAgICBdIERhdGFWaWV3IDogQXJyYXlCdWZmZXJW
aWV3IHsKICAgICAgICAgLy8gQWxsIHRoZXNlIG1ldGhvZHMgcmFpc2UgYW4gZXhjZXB0aW9uIGlm
IHRoZXkgd291bGQgcmVhZCBvciB3cml0ZSBiZXlvbmQgdGhlIGVuZCBvZiB0aGUgdmlldy4KIAot
ICAgICAgICAvLyBXZSBoYXZlIHRvIHVzZSBjdXN0b20gY29kZSBiZWNhdXNlIG91ciBjb2RlIGdl
bmVyYXRvciBkb2VzIG5vdCBzdXBwb3J0IGNoYXIgdHlwZS4KLSAgICAgICAgLy8gY2hhciBnZXRJ
bnQ4KGluIHVuc2lnbmVkIGxvbmcgYnl0ZU9mZnNldCk7Ci0gICAgICAgIC8vIHVuc2lnbmVkIGNo
YXIgZ2V0VWludDgoaW4gdW5zaWduZWQgbG9uZyBieXRlT2Zmc2V0KTsKKyAgICAgICAgLy8gV2Ug
aGF2ZSB0byB1c2UgY3VzdG9tIGNvZGUgYmVjYXVzZSBvdXIgY29kZSBnZW5lcmF0b3IgZG9lcyBu
b3Qgc3VwcG9ydCBpbnQ4X3QgdHlwZS4KKyAgICAgICAgLy8gaW50OF90IGdldEludDgoaW4gdW5z
aWduZWQgbG9uZyBieXRlT2Zmc2V0KTsKKyAgICAgICAgLy8gdWludDhfdCBnZXRVaW50OChpbiB1
bnNpZ25lZCBsb25nIGJ5dGVPZmZzZXQpOwogICAgICAgICBbQ3VzdG9tXSBET01PYmplY3QgZ2V0
SW50OCgpCiAgICAgICAgICAgICByYWlzZXMgKERPTUV4Y2VwdGlvbik7CiAgICAgICAgIFtDdXN0
b21dIERPTU9iamVjdCBnZXRVaW50OCgpCkBAIC01OCw5ICs1OCw5IEBAIG1vZHVsZSBodG1sIHsK
ICAgICAgICAgW0pTQ0N1c3RvbSwgU3RyaWN0VHlwZUNoZWNraW5nLCBSZXF1aXJlc0FsbEFyZ3Vt
ZW50cz1SYWlzZV0gZG91YmxlIGdldEZsb2F0NjQoaW4gdW5zaWduZWQgbG9uZyBieXRlT2Zmc2V0
LCBpbiBbT3B0aW9uYWxdIGJvb2xlYW4gbGl0dGxlRW5kaWFuKQogICAgICAgICAgICAgcmFpc2Vz
IChET01FeGNlcHRpb24pOwogCi0gICAgICAgIC8vIFdlIGhhdmUgdG8gdXNlIGN1c3RvbSBjb2Rl
IGJlY2F1c2Ugb3VyIGNvZGUgZ2VuZXJhdG9yIGRvZXMgbm90IHN1cHBvcnQgY2hhciB0eXBlLgot
ICAgICAgICAvLyB2b2lkIHNldEludDgoaW4gdW5zaWduZWQgbG9uZyBieXRlT2Zmc2V0LCBpbiBi
eXRlIHZhbHVlKTsKLSAgICAgICAgLy8gdm9pZCBzZXRVaW50OChpbiB1bnNpZ25lZCBsb25nIGJ5
dGVPZmZzZXQsIGluIHVuc2lnbmVkIGJ5dGUgdmFsdWUpOworICAgICAgICAvLyBXZSBoYXZlIHRv
IHVzZSBjdXN0b20gY29kZSBiZWNhdXNlIG91ciBjb2RlIGdlbmVyYXRvciBkb2VzIG5vdCBzdXBw
b3J0IHVpbnQ4X3QgdHlwZS4KKyAgICAgICAgLy8gdm9pZCBzZXRJbnQ4KGluIHVuc2lnbmVkIGxv
bmcgYnl0ZU9mZnNldCwgaW4gaW50OF90IHZhbHVlKTsKKyAgICAgICAgLy8gdm9pZCBzZXRVaW50
OChpbiB1bnNpZ25lZCBsb25nIGJ5dGVPZmZzZXQsIGluIHVpbnQ4X3QgdmFsdWUpOwogICAgICAg
ICBbQ3VzdG9tXSB2b2lkIHNldEludDgoKQogICAgICAgICAgICAgcmFpc2VzIChET01FeGNlcHRp
b24pOwogICAgICAgICBbQ3VzdG9tXSB2b2lkIHNldFVpbnQ4KCkK
</data>

          </attachment>
      

    </bug>

</bugzilla>