<?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>52403</bug_id>
          
          <creation_ts>2011-01-13 15:29:59 -0800</creation_ts>
          <short_desc>[chromium] drop backwards iteration in Linux complex text code</short_desc>
          <delta_ts>2011-01-13 16:49:05 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</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="Evan Martin">evan</reporter>
          <assigned_to name="Evan Martin">evan</assigned_to>
          <cc>agl</cc>
    
    <cc>tony</cc>
    
    <cc>xji</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>333980</commentid>
    <comment_count>0</comment_count>
    <who name="Evan Martin">evan</who>
    <bug_when>2011-01-13 15:29:59 -0800</bug_when>
    <thetext>[chromium] drop backwards iteration in Linux complex text code</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>333982</commentid>
    <comment_count>1</comment_count>
      <attachid>78866</attachid>
    <who name="Evan Martin">evan</who>
    <bug_when>2011-01-13 15:32:42 -0800</bug_when>
    <thetext>Created attachment 78866
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>334007</commentid>
    <comment_count>2</comment_count>
      <attachid>78866</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-01-13 16:07:50 -0800</bug_when>
    <thetext>Comment on attachment 78866
Patch

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

&gt; Source/WebCore/platform/graphics/chromium/FontLinux.cpp:247
&gt; +    for (int glyphIndex = 0; static_cast&lt;unsigned&gt;(glyphIndex) &lt; controller.length(); ++glyphIndex) {
&gt; +        int advance = truncateFixedPointToInteger(controller.advances()[glyphIndex]);
&gt; +        int nextX = static_cast&lt;int&gt;(controller.xPositions()[glyphIndex]);
&gt; +        nextX += advance / 2;
&gt; +        if (std::min(nextX, lastX) &lt;= targetX &amp;&amp; targetX &lt;= std::max(nextX, lastX))
&gt; +            return glyphIndex;
&gt; +        lastX = nextX;

A comment explaining this loop sounds like it would be worthwhile.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>334008</commentid>
    <comment_count>3</comment_count>
      <attachid>78866</attachid>
    <who name="Adam Langley">agl</who>
    <bug_when>2011-01-13 16:13:32 -0800</bug_when>
    <thetext>Comment on attachment 78866
Patch

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

&gt; Source/WebCore/platform/graphics/chromium/ComplexTextControllerLinux.cpp:163
&gt; +        const SimpleFontData* nextFontData = m_font-&gt;glyphDataForCharacter(m_item.string[m_item.item.pos + endOfRun], false).fontData;

If this is a UTF16 string, will this not consider surrogate-pairs as two code points?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>334012</commentid>
    <comment_count>4</comment_count>
      <attachid>78866</attachid>
    <who name="Evan Martin">evan</who>
    <bug_when>2011-01-13 16:20:01 -0800</bug_when>
    <thetext>Comment on attachment 78866
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/chromium/ComplexTextControllerLinux.cpp:163
&gt;&gt; +        const SimpleFontData* nextFontData = m_font-&gt;glyphDataForCharacter(m_item.string[m_item.item.pos + endOfRun], false).fontData;
&gt; 
&gt; If this is a UTF16 string, will this not consider surrogate-pairs as two code points?

Probably.  This is just a reindent of L184 in the previous code, so at least I don&apos;t think I&apos;m regressing anything.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>334017</commentid>
    <comment_count>5</comment_count>
      <attachid>78875</attachid>
    <who name="Evan Martin">evan</who>
    <bug_when>2011-01-13 16:24:37 -0800</bug_when>
    <thetext>Created attachment 78875
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>334018</commentid>
    <comment_count>6</comment_count>
    <who name="Evan Martin">evan</who>
    <bug_when>2011-01-13 16:25:19 -0800</bug_when>
    <thetext>BTW, this is a good page for thinking about the logic with respect to glyphIndexForXPositionInScriptRun:
http://www.aestheticallyloyal.com/public/optimize-legibility/

With this patch, selection in the non-complex case matches the complex case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>334031</commentid>
    <comment_count>7</comment_count>
    <who name="Evan Martin">evan</who>
    <bug_when>2011-01-13 16:49:05 -0800</bug_when>
    <thetext>Committed r75756: &lt;http://trac.webkit.org/changeset/75756&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>78866</attachid>
            <date>2011-01-13 15:32:42 -0800</date>
            <delta_ts>2011-01-13 16:24:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-52403-20110113153219.patch</filename>
            <type>text/plain</type>
            <size>12815</size>
            <attacher name="Evan Martin">evan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBiMjdmYTM3MGFlYTU2MzcxNDM5NjhkODFkNWFmOWM4ZGNkYTAyN2JkLi44
NzU0NmM0MjdiNmUxMTRhNzQ3ZjhkOWVkNTA5NmMzMDgwZDhlNDkzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjYgQEAKKzIwMTEtMDEtMTMgIEV2YW4gTWFydGluICA8ZXZhbkBjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW2Nocm9t
aXVtXSBkcm9wIGJhY2t3YXJkcyBpdGVyYXRpb24gaW4gTGludXggY29tcGxleCB0ZXh0IGNvZGUK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUyNDAzCisK
KyAgICAgICAgQ29tcGxleFRleHRDb250cm9sbGVyIHByZXZpb3VzbHkgc3VwcG9ydGVkIGl0ZXJh
dGluZyB0aHJvdWdoIHRoZSB0ZXh0IGluCisgICAgICAgIGJvdGggZGlyZWN0aW9ucywgYnV0IHRo
aXMgcmVzdWx0ZWQgaW4gZHVwbGljYXRlIGNvZGUgZm9yIGVhY2ggcGF0aC4KKyAgICAgICAgSW5z
dGVhZCwgYnkgYmVpbmcgbW9yZSBjYXJlZnVsIGFib3V0IGZsaXBwaW5nIHNpZ25zIHdoZXJlIGFw
cHJvcHJpYXRlLAorICAgICAgICB3ZSBjYW4gcmVmYWN0b3IgdGhlIGNvZGUgaW50byBvbmUgY29k
ZSBwYXRoLgorCisgICAgICAgIE5vIHRlc3RzLCBqdXN0IGEgcmVmYWN0b3Jpbmc7IHNob3VsZCBi
ZSBjb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vQ29tcGxleFRleHRDb250cm9sbGVyTGludXguY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q29tcGxleFRleHRDb250cm9sbGVyOjpDb21wbGV4VGV4dENvbnRyb2xsZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6Q29tcGxleFRleHRDb250cm9sbGVyOjpyZXNldCk6CisgICAgICAgIChX
ZWJDb3JlOjpDb21wbGV4VGV4dENvbnRyb2xsZXI6Om5leHRTY3JpcHRSdW4pOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbXBsZXhUZXh0Q29udHJvbGxlckxpbnV4Lmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udExpbnV4LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmdseXBoSW5kZXhGb3JYUG9zaXRpb25JblNjcmlwdFJ1bik6CisgICAg
ICAgIChXZWJDb3JlOjpGb250OjpzZWxlY3Rpb25SZWN0Rm9yQ29tcGxleFRleHQpOgorCiAyMDEx
LTAxLTEyICBSb2JlcnQgSG9nYW4gIDxyb2JlcnRAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbXBsZXhUZXh0Q29udHJvbGxlckxp
bnV4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbXBs
ZXhUZXh0Q29udHJvbGxlckxpbnV4LmNwcAppbmRleCBlOWFkY2MzOTBlNDUyMjhiMmU2MTQxN2Iw
NzZiZTM5YmExYjczZWRmLi45OTE1OWU2ZWUxYzkwYWI1NmUwMTBhNjU4OWM0OWQ5NmU5NWQ1NDY5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9D
b21wbGV4VGV4dENvbnRyb2xsZXJMaW51eC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29tcGxleFRleHRDb250cm9sbGVyTGludXguY3BwCkBAIC01
MCw3ICs1MCw2IEBAIENvbXBsZXhUZXh0Q29udHJvbGxlcjo6Q29tcGxleFRleHRDb250cm9sbGVy
KGNvbnN0IFRleHRSdW4mIHJ1biwgdW5zaWduZWQgc3RhcnRpCiAgICAgLCBtX3N0YXJ0aW5nWChz
dGFydGluZ1gpCiAgICAgLCBtX29mZnNldFgobV9zdGFydGluZ1gpCiAgICAgLCBtX3J1bihnZXRO
b3JtYWxpemVkVGV4dFJ1bihydW4sIG1fbm9ybWFsaXplZFJ1biwgbV9ub3JtYWxpemVkQnVmZmVy
KSkKLSAgICAsIG1faXRlcmF0ZUJhY2t3YXJkcyhtX3J1bi5ydGwoKSkKICAgICAsIG1fd29yZFNw
YWNpbmdBZGp1c3RtZW50KDApCiAgICAgLCBtX3BhZGRpbmcoMCkKICAgICAsIG1fcGFkUGVyV29y
ZEJyZWFrKDApCkBAIC0xNDAsNTQgKzEzOSwzMyBAQCB2b2lkIENvbXBsZXhUZXh0Q29udHJvbGxl
cjo6c2V0UGFkZGluZyhpbnQgcGFkZGluZykKIAogdm9pZCBDb21wbGV4VGV4dENvbnRyb2xsZXI6
OnJlc2V0KCkKIHsKLSAgICBpZiAobV9pdGVyYXRlQmFja3dhcmRzKQotICAgICAgICBtX2luZGV4
T2ZOZXh0U2NyaXB0UnVuID0gbV9ydW4ubGVuZ3RoKCkgLSAxOwotICAgIGVsc2UKLSAgICAgICAg
bV9pbmRleE9mTmV4dFNjcmlwdFJ1biA9IDA7CisgICAgbV9pbmRleE9mTmV4dFNjcmlwdFJ1biA9
IDA7CiAgICAgbV9vZmZzZXRYID0gbV9zdGFydGluZ1g7CiB9CiAKLXZvaWQgQ29tcGxleFRleHRD
b250cm9sbGVyOjpzZXRCYWNrd2FyZHNJdGVyYXRpb24oYm9vbCBpc0JhY2t3YXJkcykKLXsKLSAg
ICBtX2l0ZXJhdGVCYWNrd2FyZHMgPSBpc0JhY2t3YXJkczsKLSAgICByZXNldCgpOwotfQotCiAv
LyBBZHZhbmNlIHRvIHRoZSBuZXh0IHNjcmlwdCBydW4sIHJldHVybmluZyBmYWxzZSB3aGVuIHRo
ZSBlbmQgb2YgdGhlCiAvLyBUZXh0UnVuIGhhcyBiZWVuIHJlYWNoZWQuCiBib29sIENvbXBsZXhU
ZXh0Q29udHJvbGxlcjo6bmV4dFNjcmlwdFJ1bigpCiB7Ci0gICAgaWYgKG1faXRlcmF0ZUJhY2t3
YXJkcykgewotICAgICAgICAvLyBJbiByaWdodC10by1sZWZ0IG1vZGUgd2UgbmVlZCB0byByZW5k
ZXIgdGhlIHNoYXBlZCBnbHlwaCBiYWNrd2FyZHMgYW5kCi0gICAgICAgIC8vIGFsc28gcmVuZGVy
IHRoZSBzY3JpcHQgcnVucyB0aGVtc2VsdmVzIGJhY2t3YXJkcy4gU28gZ2l2ZW4gYSBUZXh0UnVu
OgotICAgICAgICAvLyAgICBBQUFBQUFBQ1RUVFRUVFQgICAoQSA9IEFyYWJpYywgQyA9IENvbW1v
biwgVCA9IFRoYWkpCi0gICAgICAgIC8vIHdlIHJlbmRlcjoKLSAgICAgICAgLy8gICAgVFRUVFRU
Q0FBQUFBQUEKLSAgICAgICAgLy8gKGFuZCB0aGUgZ2x5cGhzIGluIGVhY2ggQSwgQyBhbmQgVCBz
ZWN0aW9uIGFyZSBiYWNrd2FyZHMgdG9vKQotICAgICAgICBpZiAoIWhiX3V0ZjE2X3NjcmlwdF9y
dW5fcHJldigmbV9udW1Db2RlUG9pbnRzLCAmbV9pdGVtLml0ZW0sIG1fcnVuLmNoYXJhY3RlcnMo
KSwgbV9ydW4ubGVuZ3RoKCksICZtX2luZGV4T2ZOZXh0U2NyaXB0UnVuKSkKLSAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAgICAgbV9jdXJyZW50Rm9udERhdGEgPSBtX2ZvbnQtPmdseXBo
RGF0YUZvckNoYXJhY3RlcihtX2l0ZW0uc3RyaW5nW21faXRlbS5pdGVtLnBvc10sIGZhbHNlKS5m
b250RGF0YTsKLSAgICB9IGVsc2UgewotICAgICAgICBpZiAoIWhiX3V0ZjE2X3NjcmlwdF9ydW5f
bmV4dCgmbV9udW1Db2RlUG9pbnRzLCAmbV9pdGVtLml0ZW0sIG1fcnVuLmNoYXJhY3RlcnMoKSwg
bV9ydW4ubGVuZ3RoKCksICZtX2luZGV4T2ZOZXh0U2NyaXB0UnVuKSkKLSAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLQotICAgICAgICAvLyBJdCBpcyBhY3R1YWxseSB3cm9uZyB0byBjb25zaWRl
ciBzY3JpcHQgcnVucyBhdCBhbGwgaW4gdGhpcyBjb2RlLgotICAgICAgICAvLyBPdGhlciBXZWJL
aXQgY29kZSAoZS5nLiBNYWMpIHNlZ21lbnRzIGNvbXBsZXggdGV4dCBqdXN0IGJ5IGZpbmRpbmcK
LSAgICAgICAgLy8gdGhlIGxvbmdlc3Qgc3BhbiBvZiB0ZXh0IGNvdmVyZWQgYnkgYSBzaW5nbGUg
Zm9udC4KLSAgICAgICAgLy8gQnV0IHdlIGN1cnJlbnRseSBuZWVkIHRvIGNhbGwgaGJfdXRmMTZf
c2NyaXB0X3J1bl9uZXh0IGFueXdheSB0byBmaWxsCi0gICAgICAgIC8vIGluIHRoZSBoYXJmYnV6
eiBkYXRhIHN0cnVjdHVyZXMgdG8gZS5nLiBwaWNrIHRoZSBjb3JyZWN0IHNjcmlwdCdzIHNoYXBl
ci4KLSAgICAgICAgLy8gU28gd2UgYWxsb3cgdGhhdCB0byBydW4gZmlyc3QsIHRoZW4gZG8gYSBz
ZWNvbmQgcGFzcyBvdmVyIHRoZSByYW5nZSBpdAotICAgICAgICAvLyBmb3VuZCBhbmQgdGFrZSB0
aGUgbGFyZ2VzdCBzdWJyZWdpb24gdGhhdCBzdGF5cyB3aXRoaW4gYSBzaW5nbGUgZm9udC4KLSAg
ICAgICAgbV9jdXJyZW50Rm9udERhdGEgPSBtX2ZvbnQtPmdseXBoRGF0YUZvckNoYXJhY3Rlciht
X2l0ZW0uc3RyaW5nW21faXRlbS5pdGVtLnBvc10sIGZhbHNlKS5mb250RGF0YTsKLSAgICAgICAg
dW5zaWduZWQgZW5kT2ZSdW47Ci0gICAgICAgIGZvciAoZW5kT2ZSdW4gPSAxOyBlbmRPZlJ1biA8
IG1faXRlbS5pdGVtLmxlbmd0aDsgKytlbmRPZlJ1bikgewotICAgICAgICAgICAgY29uc3QgU2lt
cGxlRm9udERhdGEqIG5leHRGb250RGF0YSA9IG1fZm9udC0+Z2x5cGhEYXRhRm9yQ2hhcmFjdGVy
KG1faXRlbS5zdHJpbmdbbV9pdGVtLml0ZW0ucG9zICsgZW5kT2ZSdW5dLCBmYWxzZSkuZm9udERh
dGE7Ci0gICAgICAgICAgICBpZiAobmV4dEZvbnREYXRhICE9IG1fY3VycmVudEZvbnREYXRhKQot
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIG1faXRlbS5pdGVtLmxl
bmd0aCA9IGVuZE9mUnVuOwotICAgICAgICBtX2luZGV4T2ZOZXh0U2NyaXB0UnVuID0gbV9pdGVt
Lml0ZW0ucG9zICsgZW5kT2ZSdW47CisgICAgaWYgKCFoYl91dGYxNl9zY3JpcHRfcnVuX25leHQo
Jm1fbnVtQ29kZVBvaW50cywgJm1faXRlbS5pdGVtLCBtX3J1bi5jaGFyYWN0ZXJzKCksIG1fcnVu
Lmxlbmd0aCgpLCAmbV9pbmRleE9mTmV4dFNjcmlwdFJ1bikpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIC8vIEl0IGlzIGFjdHVhbGx5IHdyb25nIHRvIGNvbnNpZGVyIHNjcmlwdCBydW5z
IGF0IGFsbCBpbiB0aGlzIGNvZGUuCisgICAgLy8gT3RoZXIgV2ViS2l0IGNvZGUgKGUuZy4gTWFj
KSBzZWdtZW50cyBjb21wbGV4IHRleHQganVzdCBieSBmaW5kaW5nCisgICAgLy8gdGhlIGxvbmdl
c3Qgc3BhbiBvZiB0ZXh0IGNvdmVyZWQgYnkgYSBzaW5nbGUgZm9udC4KKyAgICAvLyBCdXQgd2Ug
Y3VycmVudGx5IG5lZWQgdG8gY2FsbCBoYl91dGYxNl9zY3JpcHRfcnVuX25leHQgYW55d2F5IHRv
IGZpbGwKKyAgICAvLyBpbiB0aGUgaGFyZmJ1enogZGF0YSBzdHJ1Y3R1cmVzIHRvIGUuZy4gcGlj
ayB0aGUgY29ycmVjdCBzY3JpcHQncyBzaGFwZXIuCisgICAgLy8gU28gd2UgYWxsb3cgdGhhdCB0
byBydW4gZmlyc3QsIHRoZW4gZG8gYSBzZWNvbmQgcGFzcyBvdmVyIHRoZSByYW5nZSBpdAorICAg
IC8vIGZvdW5kIGFuZCB0YWtlIHRoZSBsYXJnZXN0IHN1YnJlZ2lvbiB0aGF0IHN0YXlzIHdpdGhp
biBhIHNpbmdsZSBmb250LgorICAgIG1fY3VycmVudEZvbnREYXRhID0gbV9mb250LT5nbHlwaERh
dGFGb3JDaGFyYWN0ZXIobV9pdGVtLnN0cmluZ1ttX2l0ZW0uaXRlbS5wb3NdLCBmYWxzZSkuZm9u
dERhdGE7CisgICAgdW5zaWduZWQgZW5kT2ZSdW47CisgICAgZm9yIChlbmRPZlJ1biA9IDE7IGVu
ZE9mUnVuIDwgbV9pdGVtLml0ZW0ubGVuZ3RoOyArK2VuZE9mUnVuKSB7CisgICAgICAgIGNvbnN0
IFNpbXBsZUZvbnREYXRhKiBuZXh0Rm9udERhdGEgPSBtX2ZvbnQtPmdseXBoRGF0YUZvckNoYXJh
Y3RlcihtX2l0ZW0uc3RyaW5nW21faXRlbS5pdGVtLnBvcyArIGVuZE9mUnVuXSwgZmFsc2UpLmZv
bnREYXRhOworICAgICAgICBpZiAobmV4dEZvbnREYXRhICE9IG1fY3VycmVudEZvbnREYXRhKQor
ICAgICAgICAgICAgYnJlYWs7CiAgICAgfQorICAgIG1faXRlbS5pdGVtLmxlbmd0aCA9IGVuZE9m
UnVuOworICAgIG1faW5kZXhPZk5leHRTY3JpcHRSdW4gPSBtX2l0ZW0uaXRlbS5wb3MgKyBlbmRP
ZlJ1bjsKIAogICAgIHNldHVwRm9udEZvclNjcmlwdFJ1bigpOwogICAgIHNoYXBlR2x5cGhzKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9D
b21wbGV4VGV4dENvbnRyb2xsZXJMaW51eC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vQ29tcGxleFRleHRDb250cm9sbGVyTGludXguaAppbmRleCA0ZWJiZDg5
OWQxMzIxNDFhODcwYzBiN2M0YWY4MDBiZmNjNDYyMGZmLi5lMjY0Yjk5MjVmNzY4ZjUzZmZiYjI4
MjcyZDczNGQxNTI0ZDQ0NmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9Db21wbGV4VGV4dENvbnRyb2xsZXJMaW51eC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbXBsZXhUZXh0Q29udHJvbGxl
ckxpbnV4LmgKQEAgLTUyLDkgKzUyLDggQEAgY2xhc3MgU2ltcGxlRm9udERhdGE7CiAvLyBvbmx5
IGV2ZXIgZG9uZSB3aXRoIHNjcmlwdCBydW5zIHNpbmNlIHRoZSBzaGFwZXJzIG9ubHkga25vdyBo
b3cgdG8gZGVhbCB3aXRoCiAvLyBhIHNpbmdsZSBzY3JpcHQuCiAvLwotLy8gQWZ0ZXIgY3JlYXRp
bmcgaXQsIHRoZSBzY3JpcHQgcnVucyBhcmUgZWl0aGVyIGl0ZXJhdGVkIGJhY2t3YXJkcyBvciBm
b3J3YXJkcy4KLS8vIEl0IGRlZmF1bHRzIHRvIGJhY2t3YXJkcyBmb3IgUlRMIGFuZCBmb3J3YXJk
cyBvdGhlcndpc2UgKHdoaWNoIG1hdGNoZXMgdGhlCi0vLyBwcmVzZW50YXRpb24gb3JkZXIpLCBo
b3dldmVyIHlvdSBjYW4gc2V0IGl0IHdpdGggfHNldEJhY2t3YXJkc0l0ZXJhdGlvbnwuCisvLyBJ
dGVyYXRpb24gaXMgYWx3YXlzIGluIGxvZ2ljYWwgKGFrYSByZWFkaW5nKSBvcmRlci4gIEZvciBS
VEwgdGV4dCB0aGF0IG1lYW5zCisvLyB0aGUgcmlnaHRtb3N0IHBhcnQgb2YgdGhlIHRleHQgd2ls
bCBiZSBmaXJzdC4KIC8vCiAvLyBPbmNlIHlvdSBoYXZlIHNldHVwIHRoZSBvYmplY3QsIGNhbGwg
fG5leHRTY3JpcHRSdW58IHRvIGdldCB0aGUgZmlyc3Qgc2NyaXB0CiAvLyBydW4uIFRoaXMgd2ls
bCByZXR1cm4gZmFsc2Ugd2hlbiB0aGUgaXRlcmF0aW9uIGlzIGNvbXBsZXRlLiBBdCBhbnkgdGlt
ZSB5b3UKQEAgLTcwLDcgKzY5LDYgQEAgcHVibGljOgogICAgIC8vIFdlYktpdCB1c2VzIHRoaXMg
dG8ganVzdGlmeSB0ZXh0LgogICAgIHZvaWQgc2V0UGFkZGluZyhpbnQpOwogICAgIHZvaWQgcmVz
ZXQoKTsKLSAgICB2b2lkIHNldEJhY2t3YXJkc0l0ZXJhdGlvbihib29sKTsKICAgICAvLyBBZHZh
bmNlIHRvIHRoZSBuZXh0IHNjcmlwdCBydW4sIHJldHVybmluZyBmYWxzZSB3aGVuIHRoZSBlbmQg
b2YgdGhlCiAgICAgLy8gVGV4dFJ1biBoYXMgYmVlbiByZWFjaGVkLgogICAgIGJvb2wgbmV4dFNj
cmlwdFJ1bigpOwpAQCAtMTQ4LDcgKzE0Niw2IEBAIHByaXZhdGU6CiAgICAgT3duUHRyPFRleHRS
dW4+IG1fbm9ybWFsaXplZFJ1bjsKICAgICBPd25BcnJheVB0cjxVQ2hhcj4gbV9ub3JtYWxpemVk
QnVmZmVyOyAvLyBBIGJ1ZmZlciBmb3Igbm9ybWFsaXplZCBydW4uCiAgICAgY29uc3QgVGV4dFJ1
biYgbV9ydW47Ci0gICAgYm9vbCBtX2l0ZXJhdGVCYWNrd2FyZHM7CiAgICAgaW50IG1fd29yZFNw
YWNpbmdBZGp1c3RtZW50OyAvLyBkZWx0YSBhZGp1c3RtZW50IChwaXhlbHMpIGZvciBlYWNoIHdv
cmQgYnJlYWsuCiAgICAgZmxvYXQgbV9wYWRkaW5nOyAvLyBwaXhlbHMgdG8gYmUgZGlzdHJpYnV0
ZWQgb3ZlciB0aGUgbGluZSBhdCB3b3JkIGJyZWFrcy4KICAgICBmbG9hdCBtX3BhZFBlcldvcmRC
cmVhazsgLy8gcGl4ZWxzIHRvIGJlIGFkZGVkIHRvIGVhY2ggd29yZCBicmVhay4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRMaW51eC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250TGludXgu
Y3BwCmluZGV4IGIyNTZlNzBlMjBjNTljZTIwODliYzYwZTJhOTdlZTZiZDE0OTZiZDMuLmU0NTQx
YWExZTJiYmU1NjBhNjliZDNlMGEyMTYxOWFmOWEzZjQzMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRMaW51eC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udExpbnV4LmNwcApAQCAt
MjM0LDI4ICsyMzQsMjAgQEAgZmxvYXQgRm9udDo6ZmxvYXRXaWR0aEZvckNvbXBsZXhUZXh0KGNv
bnN0IFRleHRSdW4mIHJ1biwgSGFzaFNldDxjb25zdCBTaW1wbGVGb24KICAgICByZXR1cm4gY29u
dHJvbGxlci53aWR0aE9mRnVsbFJ1bigpOwogfQogCi1zdGF0aWMgaW50IGdseXBoSW5kZXhGb3JY
UG9zaXRpb25JblNjcmlwdFJ1bihjb25zdCBDb21wbGV4VGV4dENvbnRyb2xsZXImIGNvbnRyb2xs
ZXIsIGludCB4KQorc3RhdGljIGludCBnbHlwaEluZGV4Rm9yWFBvc2l0aW9uSW5TY3JpcHRSdW4o
Y29uc3QgQ29tcGxleFRleHRDb250cm9sbGVyJiBjb250cm9sbGVyLCBpbnQgdGFyZ2V0WCkKIHsK
LSAgICBjb25zdCBIQl9GaXhlZCogYWR2YW5jZXMgPSBjb250cm9sbGVyLmFkdmFuY2VzKCk7Ci0g
ICAgaW50IGxldHRlclNwYWNpbmcgPSBjb250cm9sbGVyLmxldHRlclNwYWNpbmcoKTsKLSAgICBp
bnQgZ2x5cGhJbmRleDsKLSAgICBpZiAoY29udHJvbGxlci5ydGwoKSkgewotICAgICAgICBmb3Ig
KGdseXBoSW5kZXggPSBjb250cm9sbGVyLmxlbmd0aCgpIC0gMTsgZ2x5cGhJbmRleCA+PSAwOyAt
LWdseXBoSW5kZXgpIHsKLSAgICAgICAgICAgIC8vIFdoZW4gaXRlcmF0aW5nIExUUiBvdmVyIFJU
TCB0ZXh0LCB3ZSBtdXN0IGluY2x1ZGUgdGhlIHdoaXRlc3BhY2UKLSAgICAgICAgICAgIC8vIF9i
ZWZvcmVfIHRoZSBnbHlwaCwgc28gbm8gKyAxIGhlcmUuCi0gICAgICAgICAgICBpZiAoeCA8IChz
dGF0aWNfY2FzdDxpbnQ+KGNvbnRyb2xsZXIubGVuZ3RoKCkpIC0gZ2x5cGhJbmRleCkgKiBsZXR0
ZXJTcGFjaW5nICsgdHJ1bmNhdGVGaXhlZFBvaW50VG9JbnRlZ2VyKGFkdmFuY2VzW2dseXBoSW5k
ZXhdKSkKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIHggLT0gdHJ1bmNhdGVG
aXhlZFBvaW50VG9JbnRlZ2VyKGFkdmFuY2VzW2dseXBoSW5kZXhdKTsKLSAgICAgICAgfQotICAg
IH0gZWxzZSB7Ci0gICAgICAgIGZvciAoZ2x5cGhJbmRleCA9IDA7IHN0YXRpY19jYXN0PHVuc2ln
bmVkPihnbHlwaEluZGV4KSA8IGNvbnRyb2xsZXIubGVuZ3RoKCk7ICsrZ2x5cGhJbmRleCkgewot
ICAgICAgICAgICAgaWYgKHggPCAoZ2x5cGhJbmRleCAqIGxldHRlclNwYWNpbmcgKyB0cnVuY2F0
ZUZpeGVkUG9pbnRUb0ludGVnZXIoYWR2YW5jZXNbZ2x5cGhJbmRleF0pKSkKLSAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgIHggLT0gdHJ1bmNhdGVGaXhlZFBvaW50VG9JbnRlZ2Vy
KGFkdmFuY2VzW2dseXBoSW5kZXhdKTsKLSAgICAgICAgfQorICAgIC8vIEZJWE1FOiB0aGlzIGNv
ZGUgcHJvYmFibHkgYmVsb25ncyBpbiBDb21wbGV4VGV4dENvbnRyb2xsZXIuCisgICAgaW50IGxh
c3RYID0gY29udHJvbGxlci5ydGwoKSA/IGNvbnRyb2xsZXIud2lkdGgoKSA6IDA7CisgICAgZm9y
IChpbnQgZ2x5cGhJbmRleCA9IDA7IHN0YXRpY19jYXN0PHVuc2lnbmVkPihnbHlwaEluZGV4KSA8
IGNvbnRyb2xsZXIubGVuZ3RoKCk7ICsrZ2x5cGhJbmRleCkgeworICAgICAgICBpbnQgYWR2YW5j
ZSA9IHRydW5jYXRlRml4ZWRQb2ludFRvSW50ZWdlcihjb250cm9sbGVyLmFkdmFuY2VzKClbZ2x5
cGhJbmRleF0pOworICAgICAgICBpbnQgbmV4dFggPSBzdGF0aWNfY2FzdDxpbnQ+KGNvbnRyb2xs
ZXIueFBvc2l0aW9ucygpW2dseXBoSW5kZXhdKTsKKyAgICAgICAgbmV4dFggKz0gYWR2YW5jZSAv
IDI7CisgICAgICAgIGlmIChzdGQ6Om1pbihuZXh0WCwgbGFzdFgpIDw9IHRhcmdldFggJiYgdGFy
Z2V0WCA8PSBzdGQ6Om1heChuZXh0WCwgbGFzdFgpKQorICAgICAgICAgICAgcmV0dXJuIGdseXBo
SW5kZXg7CisgICAgICAgIGxhc3RYID0gbmV4dFg7CiAgICAgfQogCi0gICAgcmV0dXJuIGdseXBo
SW5kZXg7CisgICAgcmV0dXJuIGNvbnRyb2xsZXIubGVuZ3RoKCkgLSAxOwogfQogCiAvLyBSZXR1
cm4gdGhlIGNvZGUgcG9pbnQgaW5kZXggZm9yIHRoZSBnaXZlbiB8eHwgb2Zmc2V0IGludG8gdGhl
IHRleHQgcnVuLgpAQCAtMzQ1LDIwICszMzcsMTYgQEAgRmxvYXRSZWN0IEZvbnQ6OnNlbGVjdGlv
blJlY3RGb3JDb21wbGV4VGV4dChjb25zdCBUZXh0UnVuJiBydW4sCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBpbnQg
aGVpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQg
ZnJvbSwgaW50IHRvKSBjb25zdAogewotICAgIGludCBmcm9tWCA9IC0xLCB0b1ggPSAtMSwgZnJv
bUFkdmFuY2UgPSAtMSwgdG9BZHZhbmNlID0gLTE7CisgICAgaW50IGZyb21YID0gLTEsIHRvWCA9
IC0xOwogICAgIENvbXBsZXhUZXh0Q29udHJvbGxlciBjb250cm9sbGVyKHJ1biwgMCwgdGhpcyk7
CiAgICAgY29udHJvbGxlci5zZXRXb3JkU3BhY2luZ0FkanVzdG1lbnQod29yZFNwYWNpbmcoKSk7
CiAgICAgY29udHJvbGxlci5zZXRMZXR0ZXJTcGFjaW5nQWRqdXN0bWVudChsZXR0ZXJTcGFjaW5n
KCkpOwogCi0gICAgLy8gQmFzZSB3aWxsIHBvaW50IHRvIHRoZSB4IG9mZnNldCBmb3IgdGhlIGN1
cnJlbnQgc2NyaXB0IHJ1bi4gTm90ZSB0aGF0LCBpbgorICAgIC8vIEJhc2Ugd2lsbCBwb2ludCB0
byB0aGUgeCBvZmZzZXQgZm9yIHRoZSBzdGFydCBvZiB0aGUgY3VycmVudCBzY3JpcHQgcnVuLiBO
b3RlIHRoYXQsIGluCiAgICAgLy8gdGhlIExUUiBjYXNlLCB3aWR0aCB3aWxsIGJlIDAuCiAgICAg
aW50IGJhc2UgPSBjb250cm9sbGVyLnJ0bCgpID8gY29udHJvbGxlci53aWR0aE9mRnVsbFJ1bigp
IDogMDsKLSAgICBjb25zdCBpbnQgbGVmdEVkZ2UgPSBiYXNlOwotCi0gICAgLy8gV2Ugd2FudCB0
byBlbnVtZXJhdGUgdGhlIHNjcmlwdCBydW5zIGluIGNvZGUgcG9pbnQgb3JkZXIgaW4gdGhlIGZv
bGxvd2luZwotICAgIC8vIGNvZGUuIFRoaXMgY2FsbCBhbHNvIHJlc2V0cyB8Y29udHJvbGxlcnwu
Ci0gICAgY29udHJvbGxlci5zZXRCYWNrd2FyZHNJdGVyYXRpb24oZmFsc2UpOwogCisgICAgY29u
dHJvbGxlci5yZXNldCgpOwogICAgIHdoaWxlIChjb250cm9sbGVyLm5leHRTY3JpcHRSdW4oKSAm
JiAoZnJvbVggPT0gLTEgfHwgdG9YID09IC0xKSkgewogICAgICAgICAvLyBDb21wbGV4VGV4dENv
bnRyb2xsZXIgd2lsbCBoZWxwZnVsbHkgYWNjdWx1bGF0ZSB0aGUgeCBvZmZzZXRzIGZvciBkaWZm
ZXJlbnQKICAgICAgICAgLy8gc2NyaXB0IHJ1bnMgZm9yIHVzLiBGb3IgdGhpcyBjb2RlLCBob3dl
dmVyLCB3ZSBhbHdheXMgd2FudCB0aGUgeCBvZmZzZXRzCkBAIC0zNzQsMTQgKzM2MiwxNiBAQCBG
bG9hdFJlY3QgRm9udDo6c2VsZWN0aW9uUmVjdEZvckNvbXBsZXhUZXh0KGNvbnN0IFRleHRSdW4m
IHJ1biwKICAgICAgICAgICAgIC8vIHBvc2l0aW9uLgogICAgICAgICAgICAgaW50IGdseXBoID0g
Y29udHJvbGxlci5sb2dDbHVzdGVycygpW2Zyb21dOwogICAgICAgICAgICAgZnJvbVggPSBiYXNl
ICsgY29udHJvbGxlci54UG9zaXRpb25zKClbZ2x5cGhdOwotICAgICAgICAgICAgZnJvbUFkdmFu
Y2UgPSBjb250cm9sbGVyLmFkdmFuY2VzKClbZ2x5cGhdOworICAgICAgICAgICAgaWYgKGNvbnRy
b2xsZXIucnRsKCkpCisgICAgICAgICAgICAgICAgZnJvbVggKz0gdHJ1bmNhdGVGaXhlZFBvaW50
VG9JbnRlZ2VyKGNvbnRyb2xsZXIuYWR2YW5jZXMoKVtnbHlwaF0pOwogICAgICAgICB9IGVsc2UK
ICAgICAgICAgICAgIGZyb20gLT0gY29udHJvbGxlci5udW1Db2RlUG9pbnRzKCk7CiAKICAgICAg
ICAgaWYgKHRvWCA9PSAtMSAmJiB0byA+PSAwICYmIHN0YXRpY19jYXN0PHVuc2lnbmVkPih0bykg
PCBjb250cm9sbGVyLm51bUNvZGVQb2ludHMoKSkgewogICAgICAgICAgICAgaW50IGdseXBoID0g
Y29udHJvbGxlci5sb2dDbHVzdGVycygpW3RvXTsKICAgICAgICAgICAgIHRvWCA9IGJhc2UgKyBj
b250cm9sbGVyLnhQb3NpdGlvbnMoKVtnbHlwaF07Ci0gICAgICAgICAgICB0b0FkdmFuY2UgPSBj
b250cm9sbGVyLmFkdmFuY2VzKClbZ2x5cGhdOworICAgICAgICAgICAgaWYgKGNvbnRyb2xsZXIu
cnRsKCkpCisgICAgICAgICAgICAgICAgdG9YICs9IHRydW5jYXRlRml4ZWRQb2ludFRvSW50ZWdl
cihjb250cm9sbGVyLmFkdmFuY2VzKClbZ2x5cGhdKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAg
ICAgICB0byAtPSBjb250cm9sbGVyLm51bUNvZGVQb2ludHMoKTsKIApAQCAtMzkwLDE0ICszODAs
MTEgQEAgRmxvYXRSZWN0IEZvbnQ6OnNlbGVjdGlvblJlY3RGb3JDb21wbGV4VGV4dChjb25zdCBU
ZXh0UnVuJiBydW4sCiAgICAgfQogCiAgICAgLy8gVGhlIHBvc2l0aW9uIGluIHF1ZXN0aW9uIG1p
Z2h0IGJlIGp1c3QgYWZ0ZXIgdGhlIHRleHQuCi0gICAgY29uc3QgaW50IHJpZ2h0RWRnZSA9IGJh
c2U7CisgICAgY29uc3QgaW50IGVuZEVkZ2UgPSBiYXNlOwogICAgIGlmIChmcm9tWCA9PSAtMSAm
JiAhZnJvbSkKLSAgICAgICAgZnJvbVggPSBsZWZ0RWRnZTsKLSAgICBlbHNlIGlmIChjb250cm9s
bGVyLnJ0bCgpKQotICAgICAgIGZyb21YICs9IHRydW5jYXRlRml4ZWRQb2ludFRvSW50ZWdlcihm
cm9tQWR2YW5jZSk7Ci0KKyAgICAgICAgZnJvbVggPSBlbmRFZGdlOwogICAgIGlmICh0b1ggPT0g
LTEgJiYgIXRvKQotICAgICAgICB0b1ggPSByaWdodEVkZ2U7CisgICAgICAgIHRvWCA9IGVuZEVk
Z2U7CiAKICAgICBBU1NFUlQoZnJvbVggIT0gLTEgJiYgdG9YICE9IC0xKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>78875</attachid>
            <date>2011-01-13 16:24:37 -0800</date>
            <delta_ts>2011-01-13 16:25:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-52403-20110113162413.patch</filename>
            <type>text/plain</type>
            <size>12957</size>
            <attacher name="Evan Martin">evan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBiMjdmYTM3MGFlYTU2MzcxNDM5NjhkODFkNWFmOWM4ZGNkYTAyN2JkLi44
NzU0NmM0MjdiNmUxMTRhNzQ3ZjhkOWVkNTA5NmMzMDgwZDhlNDkzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjYgQEAKKzIwMTEtMDEtMTMgIEV2YW4gTWFydGluICA8ZXZhbkBjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW2Nocm9t
aXVtXSBkcm9wIGJhY2t3YXJkcyBpdGVyYXRpb24gaW4gTGludXggY29tcGxleCB0ZXh0IGNvZGUK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUyNDAzCisK
KyAgICAgICAgQ29tcGxleFRleHRDb250cm9sbGVyIHByZXZpb3VzbHkgc3VwcG9ydGVkIGl0ZXJh
dGluZyB0aHJvdWdoIHRoZSB0ZXh0IGluCisgICAgICAgIGJvdGggZGlyZWN0aW9ucywgYnV0IHRo
aXMgcmVzdWx0ZWQgaW4gZHVwbGljYXRlIGNvZGUgZm9yIGVhY2ggcGF0aC4KKyAgICAgICAgSW5z
dGVhZCwgYnkgYmVpbmcgbW9yZSBjYXJlZnVsIGFib3V0IGZsaXBwaW5nIHNpZ25zIHdoZXJlIGFw
cHJvcHJpYXRlLAorICAgICAgICB3ZSBjYW4gcmVmYWN0b3IgdGhlIGNvZGUgaW50byBvbmUgY29k
ZSBwYXRoLgorCisgICAgICAgIE5vIHRlc3RzLCBqdXN0IGEgcmVmYWN0b3Jpbmc7IHNob3VsZCBi
ZSBjb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vQ29tcGxleFRleHRDb250cm9sbGVyTGludXguY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q29tcGxleFRleHRDb250cm9sbGVyOjpDb21wbGV4VGV4dENvbnRyb2xsZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6Q29tcGxleFRleHRDb250cm9sbGVyOjpyZXNldCk6CisgICAgICAgIChX
ZWJDb3JlOjpDb21wbGV4VGV4dENvbnRyb2xsZXI6Om5leHRTY3JpcHRSdW4pOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbXBsZXhUZXh0Q29udHJvbGxlckxpbnV4Lmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udExpbnV4LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmdseXBoSW5kZXhGb3JYUG9zaXRpb25JblNjcmlwdFJ1bik6CisgICAg
ICAgIChXZWJDb3JlOjpGb250OjpzZWxlY3Rpb25SZWN0Rm9yQ29tcGxleFRleHQpOgorCiAyMDEx
LTAxLTEyICBSb2JlcnQgSG9nYW4gIDxyb2JlcnRAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbXBsZXhUZXh0Q29udHJvbGxlckxp
bnV4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbXBs
ZXhUZXh0Q29udHJvbGxlckxpbnV4LmNwcAppbmRleCBlOWFkY2MzOTBlNDUyMjhiMmU2MTQxN2Iw
NzZiZTM5YmExYjczZWRmLi45OTE1OWU2ZWUxYzkwYWI1NmUwMTBhNjU4OWM0OWQ5NmU5NWQ1NDY5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9D
b21wbGV4VGV4dENvbnRyb2xsZXJMaW51eC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29tcGxleFRleHRDb250cm9sbGVyTGludXguY3BwCkBAIC01
MCw3ICs1MCw2IEBAIENvbXBsZXhUZXh0Q29udHJvbGxlcjo6Q29tcGxleFRleHRDb250cm9sbGVy
KGNvbnN0IFRleHRSdW4mIHJ1biwgdW5zaWduZWQgc3RhcnRpCiAgICAgLCBtX3N0YXJ0aW5nWChz
dGFydGluZ1gpCiAgICAgLCBtX29mZnNldFgobV9zdGFydGluZ1gpCiAgICAgLCBtX3J1bihnZXRO
b3JtYWxpemVkVGV4dFJ1bihydW4sIG1fbm9ybWFsaXplZFJ1biwgbV9ub3JtYWxpemVkQnVmZmVy
KSkKLSAgICAsIG1faXRlcmF0ZUJhY2t3YXJkcyhtX3J1bi5ydGwoKSkKICAgICAsIG1fd29yZFNw
YWNpbmdBZGp1c3RtZW50KDApCiAgICAgLCBtX3BhZGRpbmcoMCkKICAgICAsIG1fcGFkUGVyV29y
ZEJyZWFrKDApCkBAIC0xNDAsNTQgKzEzOSwzMyBAQCB2b2lkIENvbXBsZXhUZXh0Q29udHJvbGxl
cjo6c2V0UGFkZGluZyhpbnQgcGFkZGluZykKIAogdm9pZCBDb21wbGV4VGV4dENvbnRyb2xsZXI6
OnJlc2V0KCkKIHsKLSAgICBpZiAobV9pdGVyYXRlQmFja3dhcmRzKQotICAgICAgICBtX2luZGV4
T2ZOZXh0U2NyaXB0UnVuID0gbV9ydW4ubGVuZ3RoKCkgLSAxOwotICAgIGVsc2UKLSAgICAgICAg
bV9pbmRleE9mTmV4dFNjcmlwdFJ1biA9IDA7CisgICAgbV9pbmRleE9mTmV4dFNjcmlwdFJ1biA9
IDA7CiAgICAgbV9vZmZzZXRYID0gbV9zdGFydGluZ1g7CiB9CiAKLXZvaWQgQ29tcGxleFRleHRD
b250cm9sbGVyOjpzZXRCYWNrd2FyZHNJdGVyYXRpb24oYm9vbCBpc0JhY2t3YXJkcykKLXsKLSAg
ICBtX2l0ZXJhdGVCYWNrd2FyZHMgPSBpc0JhY2t3YXJkczsKLSAgICByZXNldCgpOwotfQotCiAv
LyBBZHZhbmNlIHRvIHRoZSBuZXh0IHNjcmlwdCBydW4sIHJldHVybmluZyBmYWxzZSB3aGVuIHRo
ZSBlbmQgb2YgdGhlCiAvLyBUZXh0UnVuIGhhcyBiZWVuIHJlYWNoZWQuCiBib29sIENvbXBsZXhU
ZXh0Q29udHJvbGxlcjo6bmV4dFNjcmlwdFJ1bigpCiB7Ci0gICAgaWYgKG1faXRlcmF0ZUJhY2t3
YXJkcykgewotICAgICAgICAvLyBJbiByaWdodC10by1sZWZ0IG1vZGUgd2UgbmVlZCB0byByZW5k
ZXIgdGhlIHNoYXBlZCBnbHlwaCBiYWNrd2FyZHMgYW5kCi0gICAgICAgIC8vIGFsc28gcmVuZGVy
IHRoZSBzY3JpcHQgcnVucyB0aGVtc2VsdmVzIGJhY2t3YXJkcy4gU28gZ2l2ZW4gYSBUZXh0UnVu
OgotICAgICAgICAvLyAgICBBQUFBQUFBQ1RUVFRUVFQgICAoQSA9IEFyYWJpYywgQyA9IENvbW1v
biwgVCA9IFRoYWkpCi0gICAgICAgIC8vIHdlIHJlbmRlcjoKLSAgICAgICAgLy8gICAgVFRUVFRU
Q0FBQUFBQUEKLSAgICAgICAgLy8gKGFuZCB0aGUgZ2x5cGhzIGluIGVhY2ggQSwgQyBhbmQgVCBz
ZWN0aW9uIGFyZSBiYWNrd2FyZHMgdG9vKQotICAgICAgICBpZiAoIWhiX3V0ZjE2X3NjcmlwdF9y
dW5fcHJldigmbV9udW1Db2RlUG9pbnRzLCAmbV9pdGVtLml0ZW0sIG1fcnVuLmNoYXJhY3RlcnMo
KSwgbV9ydW4ubGVuZ3RoKCksICZtX2luZGV4T2ZOZXh0U2NyaXB0UnVuKSkKLSAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAgICAgbV9jdXJyZW50Rm9udERhdGEgPSBtX2ZvbnQtPmdseXBo
RGF0YUZvckNoYXJhY3RlcihtX2l0ZW0uc3RyaW5nW21faXRlbS5pdGVtLnBvc10sIGZhbHNlKS5m
b250RGF0YTsKLSAgICB9IGVsc2UgewotICAgICAgICBpZiAoIWhiX3V0ZjE2X3NjcmlwdF9ydW5f
bmV4dCgmbV9udW1Db2RlUG9pbnRzLCAmbV9pdGVtLml0ZW0sIG1fcnVuLmNoYXJhY3RlcnMoKSwg
bV9ydW4ubGVuZ3RoKCksICZtX2luZGV4T2ZOZXh0U2NyaXB0UnVuKSkKLSAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLQotICAgICAgICAvLyBJdCBpcyBhY3R1YWxseSB3cm9uZyB0byBjb25zaWRl
ciBzY3JpcHQgcnVucyBhdCBhbGwgaW4gdGhpcyBjb2RlLgotICAgICAgICAvLyBPdGhlciBXZWJL
aXQgY29kZSAoZS5nLiBNYWMpIHNlZ21lbnRzIGNvbXBsZXggdGV4dCBqdXN0IGJ5IGZpbmRpbmcK
LSAgICAgICAgLy8gdGhlIGxvbmdlc3Qgc3BhbiBvZiB0ZXh0IGNvdmVyZWQgYnkgYSBzaW5nbGUg
Zm9udC4KLSAgICAgICAgLy8gQnV0IHdlIGN1cnJlbnRseSBuZWVkIHRvIGNhbGwgaGJfdXRmMTZf
c2NyaXB0X3J1bl9uZXh0IGFueXdheSB0byBmaWxsCi0gICAgICAgIC8vIGluIHRoZSBoYXJmYnV6
eiBkYXRhIHN0cnVjdHVyZXMgdG8gZS5nLiBwaWNrIHRoZSBjb3JyZWN0IHNjcmlwdCdzIHNoYXBl
ci4KLSAgICAgICAgLy8gU28gd2UgYWxsb3cgdGhhdCB0byBydW4gZmlyc3QsIHRoZW4gZG8gYSBz
ZWNvbmQgcGFzcyBvdmVyIHRoZSByYW5nZSBpdAotICAgICAgICAvLyBmb3VuZCBhbmQgdGFrZSB0
aGUgbGFyZ2VzdCBzdWJyZWdpb24gdGhhdCBzdGF5cyB3aXRoaW4gYSBzaW5nbGUgZm9udC4KLSAg
ICAgICAgbV9jdXJyZW50Rm9udERhdGEgPSBtX2ZvbnQtPmdseXBoRGF0YUZvckNoYXJhY3Rlciht
X2l0ZW0uc3RyaW5nW21faXRlbS5pdGVtLnBvc10sIGZhbHNlKS5mb250RGF0YTsKLSAgICAgICAg
dW5zaWduZWQgZW5kT2ZSdW47Ci0gICAgICAgIGZvciAoZW5kT2ZSdW4gPSAxOyBlbmRPZlJ1biA8
IG1faXRlbS5pdGVtLmxlbmd0aDsgKytlbmRPZlJ1bikgewotICAgICAgICAgICAgY29uc3QgU2lt
cGxlRm9udERhdGEqIG5leHRGb250RGF0YSA9IG1fZm9udC0+Z2x5cGhEYXRhRm9yQ2hhcmFjdGVy
KG1faXRlbS5zdHJpbmdbbV9pdGVtLml0ZW0ucG9zICsgZW5kT2ZSdW5dLCBmYWxzZSkuZm9udERh
dGE7Ci0gICAgICAgICAgICBpZiAobmV4dEZvbnREYXRhICE9IG1fY3VycmVudEZvbnREYXRhKQot
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIG1faXRlbS5pdGVtLmxl
bmd0aCA9IGVuZE9mUnVuOwotICAgICAgICBtX2luZGV4T2ZOZXh0U2NyaXB0UnVuID0gbV9pdGVt
Lml0ZW0ucG9zICsgZW5kT2ZSdW47CisgICAgaWYgKCFoYl91dGYxNl9zY3JpcHRfcnVuX25leHQo
Jm1fbnVtQ29kZVBvaW50cywgJm1faXRlbS5pdGVtLCBtX3J1bi5jaGFyYWN0ZXJzKCksIG1fcnVu
Lmxlbmd0aCgpLCAmbV9pbmRleE9mTmV4dFNjcmlwdFJ1bikpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIC8vIEl0IGlzIGFjdHVhbGx5IHdyb25nIHRvIGNvbnNpZGVyIHNjcmlwdCBydW5z
IGF0IGFsbCBpbiB0aGlzIGNvZGUuCisgICAgLy8gT3RoZXIgV2ViS2l0IGNvZGUgKGUuZy4gTWFj
KSBzZWdtZW50cyBjb21wbGV4IHRleHQganVzdCBieSBmaW5kaW5nCisgICAgLy8gdGhlIGxvbmdl
c3Qgc3BhbiBvZiB0ZXh0IGNvdmVyZWQgYnkgYSBzaW5nbGUgZm9udC4KKyAgICAvLyBCdXQgd2Ug
Y3VycmVudGx5IG5lZWQgdG8gY2FsbCBoYl91dGYxNl9zY3JpcHRfcnVuX25leHQgYW55d2F5IHRv
IGZpbGwKKyAgICAvLyBpbiB0aGUgaGFyZmJ1enogZGF0YSBzdHJ1Y3R1cmVzIHRvIGUuZy4gcGlj
ayB0aGUgY29ycmVjdCBzY3JpcHQncyBzaGFwZXIuCisgICAgLy8gU28gd2UgYWxsb3cgdGhhdCB0
byBydW4gZmlyc3QsIHRoZW4gZG8gYSBzZWNvbmQgcGFzcyBvdmVyIHRoZSByYW5nZSBpdAorICAg
IC8vIGZvdW5kIGFuZCB0YWtlIHRoZSBsYXJnZXN0IHN1YnJlZ2lvbiB0aGF0IHN0YXlzIHdpdGhp
biBhIHNpbmdsZSBmb250LgorICAgIG1fY3VycmVudEZvbnREYXRhID0gbV9mb250LT5nbHlwaERh
dGFGb3JDaGFyYWN0ZXIobV9pdGVtLnN0cmluZ1ttX2l0ZW0uaXRlbS5wb3NdLCBmYWxzZSkuZm9u
dERhdGE7CisgICAgdW5zaWduZWQgZW5kT2ZSdW47CisgICAgZm9yIChlbmRPZlJ1biA9IDE7IGVu
ZE9mUnVuIDwgbV9pdGVtLml0ZW0ubGVuZ3RoOyArK2VuZE9mUnVuKSB7CisgICAgICAgIGNvbnN0
IFNpbXBsZUZvbnREYXRhKiBuZXh0Rm9udERhdGEgPSBtX2ZvbnQtPmdseXBoRGF0YUZvckNoYXJh
Y3RlcihtX2l0ZW0uc3RyaW5nW21faXRlbS5pdGVtLnBvcyArIGVuZE9mUnVuXSwgZmFsc2UpLmZv
bnREYXRhOworICAgICAgICBpZiAobmV4dEZvbnREYXRhICE9IG1fY3VycmVudEZvbnREYXRhKQor
ICAgICAgICAgICAgYnJlYWs7CiAgICAgfQorICAgIG1faXRlbS5pdGVtLmxlbmd0aCA9IGVuZE9m
UnVuOworICAgIG1faW5kZXhPZk5leHRTY3JpcHRSdW4gPSBtX2l0ZW0uaXRlbS5wb3MgKyBlbmRP
ZlJ1bjsKIAogICAgIHNldHVwRm9udEZvclNjcmlwdFJ1bigpOwogICAgIHNoYXBlR2x5cGhzKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9D
b21wbGV4VGV4dENvbnRyb2xsZXJMaW51eC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vQ29tcGxleFRleHRDb250cm9sbGVyTGludXguaAppbmRleCA0ZWJiZDg5
OWQxMzIxNDFhODcwYzBiN2M0YWY4MDBiZmNjNDYyMGZmLi5lMjY0Yjk5MjVmNzY4ZjUzZmZiYjI4
MjcyZDczNGQxNTI0ZDQ0NmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9Db21wbGV4VGV4dENvbnRyb2xsZXJMaW51eC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbXBsZXhUZXh0Q29udHJvbGxl
ckxpbnV4LmgKQEAgLTUyLDkgKzUyLDggQEAgY2xhc3MgU2ltcGxlRm9udERhdGE7CiAvLyBvbmx5
IGV2ZXIgZG9uZSB3aXRoIHNjcmlwdCBydW5zIHNpbmNlIHRoZSBzaGFwZXJzIG9ubHkga25vdyBo
b3cgdG8gZGVhbCB3aXRoCiAvLyBhIHNpbmdsZSBzY3JpcHQuCiAvLwotLy8gQWZ0ZXIgY3JlYXRp
bmcgaXQsIHRoZSBzY3JpcHQgcnVucyBhcmUgZWl0aGVyIGl0ZXJhdGVkIGJhY2t3YXJkcyBvciBm
b3J3YXJkcy4KLS8vIEl0IGRlZmF1bHRzIHRvIGJhY2t3YXJkcyBmb3IgUlRMIGFuZCBmb3J3YXJk
cyBvdGhlcndpc2UgKHdoaWNoIG1hdGNoZXMgdGhlCi0vLyBwcmVzZW50YXRpb24gb3JkZXIpLCBo
b3dldmVyIHlvdSBjYW4gc2V0IGl0IHdpdGggfHNldEJhY2t3YXJkc0l0ZXJhdGlvbnwuCisvLyBJ
dGVyYXRpb24gaXMgYWx3YXlzIGluIGxvZ2ljYWwgKGFrYSByZWFkaW5nKSBvcmRlci4gIEZvciBS
VEwgdGV4dCB0aGF0IG1lYW5zCisvLyB0aGUgcmlnaHRtb3N0IHBhcnQgb2YgdGhlIHRleHQgd2ls
bCBiZSBmaXJzdC4KIC8vCiAvLyBPbmNlIHlvdSBoYXZlIHNldHVwIHRoZSBvYmplY3QsIGNhbGwg
fG5leHRTY3JpcHRSdW58IHRvIGdldCB0aGUgZmlyc3Qgc2NyaXB0CiAvLyBydW4uIFRoaXMgd2ls
bCByZXR1cm4gZmFsc2Ugd2hlbiB0aGUgaXRlcmF0aW9uIGlzIGNvbXBsZXRlLiBBdCBhbnkgdGlt
ZSB5b3UKQEAgLTcwLDcgKzY5LDYgQEAgcHVibGljOgogICAgIC8vIFdlYktpdCB1c2VzIHRoaXMg
dG8ganVzdGlmeSB0ZXh0LgogICAgIHZvaWQgc2V0UGFkZGluZyhpbnQpOwogICAgIHZvaWQgcmVz
ZXQoKTsKLSAgICB2b2lkIHNldEJhY2t3YXJkc0l0ZXJhdGlvbihib29sKTsKICAgICAvLyBBZHZh
bmNlIHRvIHRoZSBuZXh0IHNjcmlwdCBydW4sIHJldHVybmluZyBmYWxzZSB3aGVuIHRoZSBlbmQg
b2YgdGhlCiAgICAgLy8gVGV4dFJ1biBoYXMgYmVlbiByZWFjaGVkLgogICAgIGJvb2wgbmV4dFNj
cmlwdFJ1bigpOwpAQCAtMTQ4LDcgKzE0Niw2IEBAIHByaXZhdGU6CiAgICAgT3duUHRyPFRleHRS
dW4+IG1fbm9ybWFsaXplZFJ1bjsKICAgICBPd25BcnJheVB0cjxVQ2hhcj4gbV9ub3JtYWxpemVk
QnVmZmVyOyAvLyBBIGJ1ZmZlciBmb3Igbm9ybWFsaXplZCBydW4uCiAgICAgY29uc3QgVGV4dFJ1
biYgbV9ydW47Ci0gICAgYm9vbCBtX2l0ZXJhdGVCYWNrd2FyZHM7CiAgICAgaW50IG1fd29yZFNw
YWNpbmdBZGp1c3RtZW50OyAvLyBkZWx0YSBhZGp1c3RtZW50IChwaXhlbHMpIGZvciBlYWNoIHdv
cmQgYnJlYWsuCiAgICAgZmxvYXQgbV9wYWRkaW5nOyAvLyBwaXhlbHMgdG8gYmUgZGlzdHJpYnV0
ZWQgb3ZlciB0aGUgbGluZSBhdCB3b3JkIGJyZWFrcy4KICAgICBmbG9hdCBtX3BhZFBlcldvcmRC
cmVhazsgLy8gcGl4ZWxzIHRvIGJlIGFkZGVkIHRvIGVhY2ggd29yZCBicmVhay4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRMaW51eC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250TGludXgu
Y3BwCmluZGV4IGIyNTZlNzBlMjBjNTljZTIwODliYzYwZTJhOTdlZTZiZDE0OTZiZDMuLmYxZWFk
ZjI4NDJiMjFhNmVkYmJkN2Q2MmRiYTUxNGQ4Mjk2ODMzMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRMaW51eC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udExpbnV4LmNwcApAQCAt
MjM0LDI4ICsyMzQsMjEgQEAgZmxvYXQgRm9udDo6ZmxvYXRXaWR0aEZvckNvbXBsZXhUZXh0KGNv
bnN0IFRleHRSdW4mIHJ1biwgSGFzaFNldDxjb25zdCBTaW1wbGVGb24KICAgICByZXR1cm4gY29u
dHJvbGxlci53aWR0aE9mRnVsbFJ1bigpOwogfQogCi1zdGF0aWMgaW50IGdseXBoSW5kZXhGb3JY
UG9zaXRpb25JblNjcmlwdFJ1bihjb25zdCBDb21wbGV4VGV4dENvbnRyb2xsZXImIGNvbnRyb2xs
ZXIsIGludCB4KQorc3RhdGljIGludCBnbHlwaEluZGV4Rm9yWFBvc2l0aW9uSW5TY3JpcHRSdW4o
Y29uc3QgQ29tcGxleFRleHRDb250cm9sbGVyJiBjb250cm9sbGVyLCBpbnQgdGFyZ2V0WCkKIHsK
LSAgICBjb25zdCBIQl9GaXhlZCogYWR2YW5jZXMgPSBjb250cm9sbGVyLmFkdmFuY2VzKCk7Ci0g
ICAgaW50IGxldHRlclNwYWNpbmcgPSBjb250cm9sbGVyLmxldHRlclNwYWNpbmcoKTsKLSAgICBp
bnQgZ2x5cGhJbmRleDsKLSAgICBpZiAoY29udHJvbGxlci5ydGwoKSkgewotICAgICAgICBmb3Ig
KGdseXBoSW5kZXggPSBjb250cm9sbGVyLmxlbmd0aCgpIC0gMTsgZ2x5cGhJbmRleCA+PSAwOyAt
LWdseXBoSW5kZXgpIHsKLSAgICAgICAgICAgIC8vIFdoZW4gaXRlcmF0aW5nIExUUiBvdmVyIFJU
TCB0ZXh0LCB3ZSBtdXN0IGluY2x1ZGUgdGhlIHdoaXRlc3BhY2UKLSAgICAgICAgICAgIC8vIF9i
ZWZvcmVfIHRoZSBnbHlwaCwgc28gbm8gKyAxIGhlcmUuCi0gICAgICAgICAgICBpZiAoeCA8IChz
dGF0aWNfY2FzdDxpbnQ+KGNvbnRyb2xsZXIubGVuZ3RoKCkpIC0gZ2x5cGhJbmRleCkgKiBsZXR0
ZXJTcGFjaW5nICsgdHJ1bmNhdGVGaXhlZFBvaW50VG9JbnRlZ2VyKGFkdmFuY2VzW2dseXBoSW5k
ZXhdKSkKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIHggLT0gdHJ1bmNhdGVG
aXhlZFBvaW50VG9JbnRlZ2VyKGFkdmFuY2VzW2dseXBoSW5kZXhdKTsKLSAgICAgICAgfQotICAg
IH0gZWxzZSB7Ci0gICAgICAgIGZvciAoZ2x5cGhJbmRleCA9IDA7IHN0YXRpY19jYXN0PHVuc2ln
bmVkPihnbHlwaEluZGV4KSA8IGNvbnRyb2xsZXIubGVuZ3RoKCk7ICsrZ2x5cGhJbmRleCkgewot
ICAgICAgICAgICAgaWYgKHggPCAoZ2x5cGhJbmRleCAqIGxldHRlclNwYWNpbmcgKyB0cnVuY2F0
ZUZpeGVkUG9pbnRUb0ludGVnZXIoYWR2YW5jZXNbZ2x5cGhJbmRleF0pKSkKLSAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgIHggLT0gdHJ1bmNhdGVGaXhlZFBvaW50VG9JbnRlZ2Vy
KGFkdmFuY2VzW2dseXBoSW5kZXhdKTsKLSAgICAgICAgfQorICAgIC8vIEl0ZXJhdGUgdGhyb3Vn
aCB0aGUgZ2x5cGhzIGluIGxvZ2ljYWwgb3JkZXIsIHNlZWluZyB3aGV0aGVyIHRhcmdldFggZmFs
bHMgYmV0d2VlbiB0aGUgcHJldmlvdXMKKyAgICAvLyBwb3NpdGlvbiBhbmQgaGFsZndheSB0aHJv
dWdoIHRoZSBjdXJyZW50IGdseXBoLgorICAgIC8vIEZJWE1FOiB0aGlzIGNvZGUgcHJvYmFibHkg
YmVsb25ncyBpbiBDb21wbGV4VGV4dENvbnRyb2xsZXIuCisgICAgaW50IGxhc3RYID0gY29udHJv
bGxlci5ydGwoKSA/IGNvbnRyb2xsZXIud2lkdGgoKSA6IDA7CisgICAgZm9yIChpbnQgZ2x5cGhJ
bmRleCA9IDA7IHN0YXRpY19jYXN0PHVuc2lnbmVkPihnbHlwaEluZGV4KSA8IGNvbnRyb2xsZXIu
bGVuZ3RoKCk7ICsrZ2x5cGhJbmRleCkgeworICAgICAgICBpbnQgYWR2YW5jZSA9IHRydW5jYXRl
Rml4ZWRQb2ludFRvSW50ZWdlcihjb250cm9sbGVyLmFkdmFuY2VzKClbZ2x5cGhJbmRleF0pOwor
ICAgICAgICBpbnQgbmV4dFggPSBzdGF0aWNfY2FzdDxpbnQ+KGNvbnRyb2xsZXIueFBvc2l0aW9u
cygpW2dseXBoSW5kZXhdKSArIGFkdmFuY2UgLyAyOworICAgICAgICBpZiAoc3RkOjptaW4obmV4
dFgsIGxhc3RYKSA8PSB0YXJnZXRYICYmIHRhcmdldFggPD0gc3RkOjptYXgobmV4dFgsIGxhc3RY
KSkKKyAgICAgICAgICAgIHJldHVybiBnbHlwaEluZGV4OworICAgICAgICBsYXN0WCA9IG5leHRY
OwogICAgIH0KIAotICAgIHJldHVybiBnbHlwaEluZGV4OworICAgIHJldHVybiBjb250cm9sbGVy
Lmxlbmd0aCgpIC0gMTsKIH0KIAogLy8gUmV0dXJuIHRoZSBjb2RlIHBvaW50IGluZGV4IGZvciB0
aGUgZ2l2ZW4gfHh8IG9mZnNldCBpbnRvIHRoZSB0ZXh0IHJ1bi4KQEAgLTM0NSwyMCArMzM4LDE2
IEBAIEZsb2F0UmVjdCBGb250OjpzZWxlY3Rpb25SZWN0Rm9yQ29tcGxleFRleHQoY29uc3QgVGV4
dFJ1biYgcnVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBGbG9hdFBvaW50JiBwb2ludCwgaW50IGhlaWdodCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZyb20sIGludCB0bykgY29uc3QKIHsKLSAgICBp
bnQgZnJvbVggPSAtMSwgdG9YID0gLTEsIGZyb21BZHZhbmNlID0gLTEsIHRvQWR2YW5jZSA9IC0x
OworICAgIGludCBmcm9tWCA9IC0xLCB0b1ggPSAtMTsKICAgICBDb21wbGV4VGV4dENvbnRyb2xs
ZXIgY29udHJvbGxlcihydW4sIDAsIHRoaXMpOwogICAgIGNvbnRyb2xsZXIuc2V0V29yZFNwYWNp
bmdBZGp1c3RtZW50KHdvcmRTcGFjaW5nKCkpOwogICAgIGNvbnRyb2xsZXIuc2V0TGV0dGVyU3Bh
Y2luZ0FkanVzdG1lbnQobGV0dGVyU3BhY2luZygpKTsKIAotICAgIC8vIEJhc2Ugd2lsbCBwb2lu
dCB0byB0aGUgeCBvZmZzZXQgZm9yIHRoZSBjdXJyZW50IHNjcmlwdCBydW4uIE5vdGUgdGhhdCwg
aW4KKyAgICAvLyBCYXNlIHdpbGwgcG9pbnQgdG8gdGhlIHggb2Zmc2V0IGZvciB0aGUgc3RhcnQg
b2YgdGhlIGN1cnJlbnQgc2NyaXB0IHJ1bi4gTm90ZSB0aGF0LCBpbgogICAgIC8vIHRoZSBMVFIg
Y2FzZSwgd2lkdGggd2lsbCBiZSAwLgogICAgIGludCBiYXNlID0gY29udHJvbGxlci5ydGwoKSA/
IGNvbnRyb2xsZXIud2lkdGhPZkZ1bGxSdW4oKSA6IDA7Ci0gICAgY29uc3QgaW50IGxlZnRFZGdl
ID0gYmFzZTsKLQotICAgIC8vIFdlIHdhbnQgdG8gZW51bWVyYXRlIHRoZSBzY3JpcHQgcnVucyBp
biBjb2RlIHBvaW50IG9yZGVyIGluIHRoZSBmb2xsb3dpbmcKLSAgICAvLyBjb2RlLiBUaGlzIGNh
bGwgYWxzbyByZXNldHMgfGNvbnRyb2xsZXJ8LgotICAgIGNvbnRyb2xsZXIuc2V0QmFja3dhcmRz
SXRlcmF0aW9uKGZhbHNlKTsKIAorICAgIGNvbnRyb2xsZXIucmVzZXQoKTsKICAgICB3aGlsZSAo
Y29udHJvbGxlci5uZXh0U2NyaXB0UnVuKCkgJiYgKGZyb21YID09IC0xIHx8IHRvWCA9PSAtMSkp
IHsKICAgICAgICAgLy8gQ29tcGxleFRleHRDb250cm9sbGVyIHdpbGwgaGVscGZ1bGx5IGFjY3Vs
dWxhdGUgdGhlIHggb2Zmc2V0cyBmb3IgZGlmZmVyZW50CiAgICAgICAgIC8vIHNjcmlwdCBydW5z
IGZvciB1cy4gRm9yIHRoaXMgY29kZSwgaG93ZXZlciwgd2UgYWx3YXlzIHdhbnQgdGhlIHggb2Zm
c2V0cwpAQCAtMzc0LDE0ICszNjMsMTYgQEAgRmxvYXRSZWN0IEZvbnQ6OnNlbGVjdGlvblJlY3RG
b3JDb21wbGV4VGV4dChjb25zdCBUZXh0UnVuJiBydW4sCiAgICAgICAgICAgICAvLyBwb3NpdGlv
bi4KICAgICAgICAgICAgIGludCBnbHlwaCA9IGNvbnRyb2xsZXIubG9nQ2x1c3RlcnMoKVtmcm9t
XTsKICAgICAgICAgICAgIGZyb21YID0gYmFzZSArIGNvbnRyb2xsZXIueFBvc2l0aW9ucygpW2ds
eXBoXTsKLSAgICAgICAgICAgIGZyb21BZHZhbmNlID0gY29udHJvbGxlci5hZHZhbmNlcygpW2ds
eXBoXTsKKyAgICAgICAgICAgIGlmIChjb250cm9sbGVyLnJ0bCgpKQorICAgICAgICAgICAgICAg
IGZyb21YICs9IHRydW5jYXRlRml4ZWRQb2ludFRvSW50ZWdlcihjb250cm9sbGVyLmFkdmFuY2Vz
KClbZ2x5cGhdKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBmcm9tIC09IGNvbnRyb2xs
ZXIubnVtQ29kZVBvaW50cygpOwogCiAgICAgICAgIGlmICh0b1ggPT0gLTEgJiYgdG8gPj0gMCAm
JiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odG8pIDwgY29udHJvbGxlci5udW1Db2RlUG9pbnRzKCkp
IHsKICAgICAgICAgICAgIGludCBnbHlwaCA9IGNvbnRyb2xsZXIubG9nQ2x1c3RlcnMoKVt0b107
CiAgICAgICAgICAgICB0b1ggPSBiYXNlICsgY29udHJvbGxlci54UG9zaXRpb25zKClbZ2x5cGhd
OwotICAgICAgICAgICAgdG9BZHZhbmNlID0gY29udHJvbGxlci5hZHZhbmNlcygpW2dseXBoXTsK
KyAgICAgICAgICAgIGlmIChjb250cm9sbGVyLnJ0bCgpKQorICAgICAgICAgICAgICAgIHRvWCAr
PSB0cnVuY2F0ZUZpeGVkUG9pbnRUb0ludGVnZXIoY29udHJvbGxlci5hZHZhbmNlcygpW2dseXBo
XSk7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgdG8gLT0gY29udHJvbGxlci5udW1Db2Rl
UG9pbnRzKCk7CiAKQEAgLTM5MCwxNCArMzgxLDExIEBAIEZsb2F0UmVjdCBGb250OjpzZWxlY3Rp
b25SZWN0Rm9yQ29tcGxleFRleHQoY29uc3QgVGV4dFJ1biYgcnVuLAogICAgIH0KIAogICAgIC8v
IFRoZSBwb3NpdGlvbiBpbiBxdWVzdGlvbiBtaWdodCBiZSBqdXN0IGFmdGVyIHRoZSB0ZXh0Lgot
ICAgIGNvbnN0IGludCByaWdodEVkZ2UgPSBiYXNlOworICAgIGNvbnN0IGludCBlbmRFZGdlID0g
YmFzZTsKICAgICBpZiAoZnJvbVggPT0gLTEgJiYgIWZyb20pCi0gICAgICAgIGZyb21YID0gbGVm
dEVkZ2U7Ci0gICAgZWxzZSBpZiAoY29udHJvbGxlci5ydGwoKSkKLSAgICAgICBmcm9tWCArPSB0
cnVuY2F0ZUZpeGVkUG9pbnRUb0ludGVnZXIoZnJvbUFkdmFuY2UpOwotCisgICAgICAgIGZyb21Y
ID0gZW5kRWRnZTsKICAgICBpZiAodG9YID09IC0xICYmICF0bykKLSAgICAgICAgdG9YID0gcmln
aHRFZGdlOworICAgICAgICB0b1ggPSBlbmRFZGdlOwogCiAgICAgQVNTRVJUKGZyb21YICE9IC0x
ICYmIHRvWCAhPSAtMSk7CiAK
</data>
<flag name="review"
          id="70246"
          type_id="1"
          status="+"
          setter="tony"
    />
          </attachment>
      

    </bug>

</bugzilla>