<?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>203544</bug_id>
          
          <creation_ts>2019-10-28 17:21:04 -0700</creation_ts>
          <short_desc>[FreeType] Too slow running encoding/legacy-mb-korean/euc-kr WPT tests</short_desc>
          <delta_ts>2019-11-05 00:18: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>WebKitGTK</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=183210</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=183285</see_also>
          <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="Carlos Alberto Lopez Perez">clopez</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bugs-noreply</cc>
    
    <cc>cgarcia</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1584761</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2019-10-28 17:21:04 -0700</bug_when>
    <thetext>The WPT tests encoding/legacy-mb-korean/euc-kr take too much in WebKitGTK. Like 5x more times than with other browsers.

An example of such test is: https://w3c-test.org/encoding/legacy-mb-korean/euc-kr/euckr-decode-ksc5601.html

On the WebKitGTK MiniBrowser it takes around 2 minutes to execute, but on other browsers (firefox, chrome) it executes in less than 15 seconds.

Note that the issue is only reproducible from a cold run. If the page is reloaded, then the second time it loads faster.


Related: https://github.com/web-platform-tests/wpt/issues/19961#issuecomment-547200149</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1584776</commentid>
    <comment_count>1</comment_count>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2019-10-28 18:03:19 -0700</bug_when>
    <thetext>I have run perf over the WebProcess and it seems the biggest issue is by far the call to FcFontMatch inside FontCache::systemFallbackForCharacters()

Another test is just loading this page https://w3c-test.org/encoding/legacy-mb-korean/euc-kr/euckr_chars-ksc5601.html and checking that it draws the characters correctly and the time it takes to load.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1584795</commentid>
    <comment_count>2</comment_count>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2019-10-28 18:57:51 -0700</bug_when>
    <thetext>Looking at the blame log it looked like r229164 could be related. So I checked to build WebKitGTK on r229163 and r229164
and check the load times of https://w3c-test.org/encoding/legacy-mb-korean/euc-kr/euckr_chars-ksc5601.html
(from a cold start and loading the html from disk to avoid network latencies)


r229163  7 seconds
r229164 13 seconds
r251384 30 seconds


So, r229164 caused the first regression of almost a 100%, and this further regressed more after that.
I still don&apos;t know which revision(s) caused the second regression, probably its worth bisecting.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1584828</commentid>
    <comment_count>3</comment_count>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2019-10-28 21:15:54 -0700</bug_when>
    <thetext>(In reply to Carlos Alberto Lopez Perez from comment #2)
&gt; I still don&apos;t know which revision(s) caused the second regression, probably
&gt; its worth bisecting.

The one that caused this second regression (from 13 seconds to 30 seconds) it seems it was r230559

I can get the 13 seconds performance back by running minibrowser (on r251384) with the env var WEBKIT_FORCE_COMPLEX_TEXT=0</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1585828</commentid>
    <comment_count>4</comment_count>
      <attachid>382440</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-10-31 01:54:51 -0700</bug_when>
    <thetext>Created attachment 382440
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1585930</commentid>
    <comment_count>5</comment_count>
      <attachid>382440</attachid>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2019-10-31 08:46:44 -0700</bug_when>
    <thetext>Comment on attachment 382440
Patch

r=me
Amazing patch! Now the test takes just only 3 seconds. At least a 10x improvement! :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1587326</commentid>
    <comment_count>6</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-11-05 00:18:05 -0800</bug_when>
    <thetext>Committed r252044: &lt;https://trac.webkit.org/changeset/252044&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382440</attachid>
            <date>2019-10-31 01:54:51 -0700</date>
            <delta_ts>2019-10-31 08:46:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wcore-system-fallbacks-cache.diff</filename>
            <type>text/plain</type>
            <size>10619</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBkY2QyYmNiYmUxNy4uNzc4MmNlMzE5M2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOSBAQAorMjAxOS0xMC0zMSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGln
YWxpYS5jb20+CisKKyAgICAgICAgW0ZyZWVUeXBlXSBUb28gc2xvdyBydW5uaW5nIGVuY29kaW5n
L2xlZ2FjeS1tYi1rb3JlYW4vZXVjLWtyIFdQVCB0ZXN0cworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAzNTQ0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIGEgY2FjaGUgZm9yIHN5c3RlbSBmYWxsYmFj
a3MgdG8ga2VlcCB0aGUgZm9udHMgc29ydGVkIGJ5IGZvbnQgZGVzY3JpcHRpb24uIFdoZW4gYSBz
eXN0ZW0gZmFsbGJhY2sgaXMgbmVlZGVkCisgICAgICAgIGFnYWluIGZvciB0aGUgc2FtZSBmb250
IGRlc2NyaXB0aW9uLCBidXQgZGlmZmVyZW50IGNoYXJhY3RlcnMsIHdlIGp1c3QgaXRlcmF0ZSB0
aGUgY2FjaGVkIGZvbnQgc2V0IGNvbXBhcmluZyB0aGUKKyAgICAgICAgY2hhcnNldHMgdG8gZ2V0
IHRoZSBiZXN0IG9uZS4gVGhpcyBhdm9pZHMgdXNpbmcgRmNGb250TWF0Y2ggYW5kIEZjRm9udFNv
cnQgaXMgb25seSBjYWxsZWQgb25jZSBwZXIgZm9udCBkZXNjcmlwdGlvbi4KKworICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2ZyZWV0eXBlL0ZvbnRDYWNoZUZyZWVUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNh
Y2hlZEZvbnRTZXQ6OkNhY2hlZEZvbnRTZXQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkRm9u
dFNldDo6YmVzdEZvckNoYXJhY3RlcnMpOgorICAgICAgICAoV2ViQ29yZTo6RmFsbGJhY2tGb250
RGVzY3JpcHRpb25LZXk6OkZhbGxiYWNrRm9udERlc2NyaXB0aW9uS2V5KToKKyAgICAgICAgKFdl
YkNvcmU6OkZhbGxiYWNrRm9udERlc2NyaXB0aW9uS2V5OjpvcGVyYXRvcj09IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkZhbGxiYWNrRm9udERlc2NyaXB0aW9uS2V5OjpvcGVyYXRvciE9IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZhbGxiYWNrRm9udERlc2NyaXB0aW9uS2V5Ojppc0hh
c2hUYWJsZURlbGV0ZWRWYWx1ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGYWxsYmFja0Zv
bnREZXNjcmlwdGlvbktleTo6Y29tcHV0ZUhhc2ggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
RmFsbGJhY2tGb250RGVzY3JpcHRpb25LZXlIYXNoOjpoYXNoKToKKyAgICAgICAgKFdlYkNvcmU6
OkZhbGxiYWNrRm9udERlc2NyaXB0aW9uS2V5SGFzaDo6ZXF1YWwpOgorICAgICAgICAoV2ViQ29y
ZTo6c3lzdGVtRmFsbGJhY2tDYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FjaGU6OnN5
c3RlbUZhbGxiYWNrRm9yQ2hhcmFjdGVycyk6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FjaGU6
OnBsYXRmb3JtUHVyZ2VJbmFjdGl2ZUZvbnREYXRhKToKKwogMjAxOS0xMC0yOSAgQ2FybG9zIEdh
cmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS11bV1BFXSBJ
bWFnZURlY29kZXJzOiB1c2UgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCBpbnN0ZWFkIG9mIFNo
YXJlZEJ1ZmZlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Rm9udENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUu
aAppbmRleCAxN2QzMjU3NzIwYi4uYjA1NGE4Y2ZiOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oCkBAIC0yOTIsNyArMjkyLDcgQEAgaW5saW5lIHN0
ZDo6dW5pcXVlX3B0cjxGb250UGxhdGZvcm1EYXRhPiBGb250Q2FjaGU6OmNyZWF0ZUZvbnRQbGF0
Zm9ybURhdGFGb3JUZXMKICAgICByZXR1cm4gY3JlYXRlRm9udFBsYXRmb3JtRGF0YShmb250RGVz
Y3JpcHRpb24sIGZhbWlseSwgbnVsbHB0ciwgbnVsbHB0ciwgeyB9KTsKIH0KIAotI2lmICFQTEFU
Rk9STShDT0NPQSkKKyNpZiAhUExBVEZPUk0oQ09DT0EpICYmICFVU0UoRlJFRVRZUEUpCiAKIGlu
bGluZSB2b2lkIEZvbnRDYWNoZTo6cGxhdGZvcm1QdXJnZUluYWN0aXZlRm9udERhdGEoKQogewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9u
dENhY2hlRnJlZVR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJl
ZXR5cGUvRm9udENhY2hlRnJlZVR5cGUuY3BwCmluZGV4IDcxYTRhYjJmNDgyLi5mMWFlOTRkMGFm
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUv
Rm9udENhY2hlRnJlZVR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZyZWV0eXBlL0ZvbnRDYWNoZUZyZWVUeXBlLmNwcApAQCAtMjQsNiArMjQsNyBAQAogCiAj
aW5jbHVkZSAiQ2Fpcm9VbmlxdWVQdHIuaCIKICNpbmNsdWRlICJDYWlyb1V0aWxpdGllcy5oIgor
I2luY2x1ZGUgIkNoYXJhY3RlclByb3BlcnRpZXMuaCIKICNpbmNsdWRlICJGY1VuaXF1ZVB0ci5o
IgogI2luY2x1ZGUgIkZsb2F0Q29udmVyc2lvbi5oIgogI2luY2x1ZGUgIkZvbnQuaCIKQEAgLTM2
LDYgKzM3LDggQEAKICNpbmNsdWRlIDxjYWlyby5oPgogI2luY2x1ZGUgPGZvbnRjb25maWcvZmNm
cmVldHlwZS5oPgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVkZSA8d3RmL0hh
c2hGdW5jdGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L0NTdHJpbmcuaD4KIAogI2lmIFBMQVRGT1JNKEdUSykKQEAgLTExOCwzNCArMTIxLDE1MCBA
QCBzdGF0aWMgdm9pZCBnZXRGb250UHJvcGVydGllc0Zyb21QYXR0ZXJuKEZjUGF0dGVybiogcGF0
dGVybiwgY29uc3QgRm9udERlc2NyaXB0aQogICAgIH0KIH0KIAotUmVmUHRyPEZvbnQ+IEZvbnRD
YWNoZTo6c3lzdGVtRmFsbGJhY2tGb3JDaGFyYWN0ZXJzKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYg
ZGVzY3JpcHRpb24sIGNvbnN0IEZvbnQqLCBJc0ZvclBsYXRmb3JtRm9udCwgUHJlZmVyQ29sb3Jl
ZEZvbnQgcHJlZmVyQ29sb3JlZEZvbnQsIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25l
ZCBsZW5ndGgpCi17Ci0gICAgRmNVbmlxdWVQdHI8RmNDaGFyU2V0PiBmb250Q29uZmlnQ2hhclNl
dChGY0NoYXJTZXRDcmVhdGUoKSk7Ci0gICAgVVRGMTZVQ2hhcjMySXRlcmF0b3IgaXRlcmF0b3Io
Y2hhcmFjdGVycywgbGVuZ3RoKTsKLSAgICBVQ2hhcjMyIGNoYXJhY3RlciA9IGl0ZXJhdG9yLm5l
eHQoKTsKLSAgICB3aGlsZSAoY2hhcmFjdGVyICE9IGl0ZXJhdG9yLmVuZCgpKSB7Ci0gICAgICAg
IEZjQ2hhclNldEFkZENoYXIoZm9udENvbmZpZ0NoYXJTZXQuZ2V0KCksIGNoYXJhY3Rlcik7Ci0g
ICAgICAgIGNoYXJhY3RlciA9IGl0ZXJhdG9yLm5leHQoKTsKK3N0cnVjdCBDYWNoZWRQYXR0ZXJu
IHsKKyAgICAvLyBUaGUgcGF0dGVybiBpcyBvd25lZCBieSB0aGUgQ2FjaGVkRm9udFNldC4KKyAg
ICBGY1BhdHRlcm4qIHBhdHRlcm4geyBudWxscHRyIH07CisgICAgRmNDaGFyU2V0KiBjaGFyU2V0
IHsgbnVsbHB0ciB9OworfTsKKworY2xhc3MgQ2FjaGVkRm9udFNldCB7CisgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoQ2FjaGVkRm9udFNldCk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVi
bGljOgorICAgIGV4cGxpY2l0IENhY2hlZEZvbnRTZXQoUmVmUHRyPEZjUGF0dGVybj4mJiBwYXR0
ZXJuKQorICAgICAgICA6IG1fcGF0dGVybihXVEZNb3ZlKHBhdHRlcm4pKQorICAgIHsKKyAgICAg
ICAgRmNSZXN1bHQgcmVzdWx0OworICAgICAgICBtX2ZvbnRTZXQucmVzZXQoRmNGb250U29ydChu
dWxscHRyLCBtX3BhdHRlcm4uZ2V0KCksIEZjVHJ1ZSwgbnVsbHB0ciwgJnJlc3VsdCkpOworICAg
ICAgICBmb3IgKGludCBpID0gMDsgaSA8IG1fZm9udFNldC0+bmZvbnQ7ICsraSkgeworICAgICAg
ICAgICAgRmNQYXR0ZXJuKiBwYXR0ZXJuID0gbV9mb250U2V0LT5mb250c1tpXTsKKyAgICAgICAg
ICAgIEZjQ2hhclNldCogY2hhclNldDsKKworICAgICAgICAgICAgaWYgKEZjUGF0dGVybkdldENo
YXJTZXQocGF0dGVybiwgRkNfQ0hBUlNFVCwgMCwgJmNoYXJTZXQpID09IEZjUmVzdWx0TWF0Y2gp
CisgICAgICAgICAgICAgICAgbV9wYXR0ZXJucy5hcHBlbmQoeyBwYXR0ZXJuLCBjaGFyU2V0IH0p
OworICAgICAgICB9CiAgICAgfQogCi0gICAgUmVmUHRyPEZjUGF0dGVybj4gcGF0dGVybiA9IGFk
b3B0UmVmKEZjUGF0dGVybkNyZWF0ZSgpKTsKLSAgICBGY1BhdHRlcm5BZGRDaGFyU2V0KHBhdHRl
cm4uZ2V0KCksIEZDX0NIQVJTRVQsIGZvbnRDb25maWdDaGFyU2V0LmdldCgpKTsKKyAgICBSZWZQ
dHI8RmNQYXR0ZXJuPiBiZXN0Rm9yQ2hhcmFjdGVycyhjb25zdCBVQ2hhciogY2hhcmFjdGVycywg
dW5zaWduZWQgbGVuZ3RoKQorICAgIHsKKyAgICAgICAgaWYgKG1fcGF0dGVybnMuaXNFbXB0eSgp
KSB7CisgICAgICAgICAgICBGY1Jlc3VsdCByZXN1bHQ7CisgICAgICAgICAgICByZXR1cm4gYWRv
cHRSZWYoRmNGb250TWF0Y2gobnVsbHB0ciwgbV9wYXR0ZXJuLmdldCgpLCAmcmVzdWx0KSk7Cisg
ICAgICAgIH0KIAotICAgIEZjUGF0dGVybkFkZEJvb2wocGF0dGVybi5nZXQoKSwgRkNfU0NBTEFC
TEUsIEZjVHJ1ZSk7CisgICAgICAgIEZjVW5pcXVlUHRyPEZjQ2hhclNldD4gZm9udENvbmZpZ0No
YXJTZXQoRmNDaGFyU2V0Q3JlYXRlKCkpOworICAgICAgICBVVEYxNlVDaGFyMzJJdGVyYXRvciBp
dGVyYXRvcihjaGFyYWN0ZXJzLCBsZW5ndGgpOworICAgICAgICBVQ2hhcjMyIGNoYXJhY3RlciA9
IGl0ZXJhdG9yLm5leHQoKTsKKyAgICAgICAgYm9vbCBoYXNOb25JZ25vcmFibGVDaGFyYWN0ZXJz
ID0gZmFsc2U7CisgICAgICAgIHdoaWxlIChjaGFyYWN0ZXIgIT0gaXRlcmF0b3IuZW5kKCkpIHsK
KyAgICAgICAgICAgIGlmICghaXNEZWZhdWx0SWdub3JhYmxlQ29kZVBvaW50KGNoYXJhY3Rlcikp
IHsKKyAgICAgICAgICAgICAgICBGY0NoYXJTZXRBZGRDaGFyKGZvbnRDb25maWdDaGFyU2V0Lmdl
dCgpLCBjaGFyYWN0ZXIpOworICAgICAgICAgICAgICAgIGhhc05vbklnbm9yYWJsZUNoYXJhY3Rl
cnMgPSB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY2hhcmFjdGVyID0gaXRlcmF0
b3IubmV4dCgpOworICAgICAgICB9CisKKyAgICAgICAgRmNQYXR0ZXJuKiBiZXN0UGF0dGVybiA9
IG51bGxwdHI7CisgICAgICAgIGludCBtaW5TY29yZSA9IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50
Pjo6bWF4KCk7CisgICAgICAgIGlmIChoYXNOb25JZ25vcmFibGVDaGFyYWN0ZXJzKSB7CisgICAg
ICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGNhY2hlZFBhdHRlcm4gOiBtX3BhdHRlcm5zKSB7Cisg
ICAgICAgICAgICAgICAgaWYgKCFjYWNoZWRQYXR0ZXJuLmNoYXJTZXQpCisgICAgICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICAgICAgaW50IHNjb3JlID0gRmNDaGFyU2V0
U3VidHJhY3RDb3VudChmb250Q29uZmlnQ2hhclNldC5nZXQoKSwgY2FjaGVkUGF0dGVybi5jaGFy
U2V0KTsKKyAgICAgICAgICAgICAgICBpZiAoIXNjb3JlKQorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoRmNGb250UmVuZGVyUHJlcGFyZShudWxscHRyLCBtX3BhdHRlcm4uZ2V0
KCksIGNhY2hlZFBhdHRlcm4ucGF0dGVybikpOworCisgICAgICAgICAgICAgICAgaWYgKHNjb3Jl
IDwgbWluU2NvcmUpIHsKKyAgICAgICAgICAgICAgICAgICAgYmVzdFBhdHRlcm4gPSBjYWNoZWRQ
YXR0ZXJuLnBhdHRlcm47CisgICAgICAgICAgICAgICAgICAgIG1pblNjb3JlID0gc2NvcmU7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYg
KGJlc3RQYXR0ZXJuKQorICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKEZjRm9udFJlbmRlclBy
ZXBhcmUobnVsbHB0ciwgbV9wYXR0ZXJuLmdldCgpLCBiZXN0UGF0dGVybikpOworCisgICAgICAg
IC8vIElmIHRoZXJlIGFyZW4ndCBmb250cyB3aXRoIHRoZSBnaXZlbiBjaGFyYWN0ZXJzIG9yIGFs
bCBjaGFyYWN0ZXJzIGFyZSBpZ25vcmFibGUsIHRoZSBmaXJzdCBvbmUgaXMgdGhlIGJlc3QgbWF0
Y2guCisgICAgICAgIHJldHVybiBhZG9wdFJlZihGY0ZvbnRSZW5kZXJQcmVwYXJlKG51bGxwdHIs
IG1fcGF0dGVybi5nZXQoKSwgbV9wYXR0ZXJuc1swXS5wYXR0ZXJuKSk7CisgICAgfQorCitwcml2
YXRlOgorICAgIFJlZlB0cjxGY1BhdHRlcm4+IG1fcGF0dGVybjsKKyAgICBGY1VuaXF1ZVB0cjxG
Y0ZvbnRTZXQ+IG1fZm9udFNldDsKKyAgICBWZWN0b3I8Q2FjaGVkUGF0dGVybj4gbV9wYXR0ZXJu
czsKK307CisKK3N0cnVjdCBGYWxsYmFja0ZvbnREZXNjcmlwdGlvbktleSB7CisgICAgRmFsbGJh
Y2tGb250RGVzY3JpcHRpb25LZXkoKSA9IGRlZmF1bHQ7CisKKyAgICBGYWxsYmFja0ZvbnREZXNj
cmlwdGlvbktleShjb25zdCBGb250RGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uLCBGb250Q2FjaGU6
OlByZWZlckNvbG9yZWRGb250IHByZWZlckNvbG9yZWRGb250KQorICAgICAgICA6IGRlc2NyaXB0
aW9uS2V5KGRlc2NyaXB0aW9uKQorICAgICAgICAsIGNvbG9yZWRGb250KHByZWZlckNvbG9yZWRG
b250ID09IEZvbnRDYWNoZTo6UHJlZmVyQ29sb3JlZEZvbnQ6OlllcykKKyAgICB7CisgICAgfQor
CisgICAgZXhwbGljaXQgRmFsbGJhY2tGb250RGVzY3JpcHRpb25LZXkoV1RGOjpIYXNoVGFibGVE
ZWxldGVkVmFsdWVUeXBlIGRlbGV0ZWRWYWx1ZSkKKyAgICAgICAgOiBkZXNjcmlwdGlvbktleShk
ZWxldGVkVmFsdWUpCisgICAgeworICAgIH0KKworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBG
YWxsYmFja0ZvbnREZXNjcmlwdGlvbktleSYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICBy
ZXR1cm4gZGVzY3JpcHRpb25LZXkgPT0gb3RoZXIuZGVzY3JpcHRpb25LZXkgJiYgY29sb3JlZEZv
bnQgPT0gb3RoZXIuY29sb3JlZEZvbnQ7CisgICAgfQorCisgICAgYm9vbCBvcGVyYXRvciE9KGNv
bnN0IEZhbGxiYWNrRm9udERlc2NyaXB0aW9uS2V5JiBvdGhlcikgY29uc3QKKyAgICB7CisgICAg
ICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKKyAgICB9CisKKyAgICBib29sIGlzSGFzaFRh
YmxlRGVsZXRlZFZhbHVlKCkgY29uc3QgeyByZXR1cm4gZGVzY3JpcHRpb25LZXkuaXNIYXNoVGFi
bGVEZWxldGVkVmFsdWUoKTsgfQorCisgICAgdW5zaWduZWQgY29tcHV0ZUhhc2goKSBjb25zdAor
ICAgIHsKKyAgICAgICAgcmV0dXJuIFdURjo6cGFpckludEhhc2goZGVzY3JpcHRpb25LZXkuY29t
cHV0ZUhhc2goKSwgV1RGOjpEZWZhdWx0SGFzaDxib29sPjo6SGFzaDo6aGFzaChjb2xvcmVkRm9u
dCkpOworICAgIH0KKworICAgIEZvbnREZXNjcmlwdGlvbktleSBkZXNjcmlwdGlvbktleTsKKyAg
ICBib29sIGNvbG9yZWRGb250IHsgZmFsc2UgfTsKK307CisKK3N0cnVjdCBGYWxsYmFja0ZvbnRE
ZXNjcmlwdGlvbktleUhhc2ggeworICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IEZhbGxi
YWNrRm9udERlc2NyaXB0aW9uS2V5JiBrZXkpIHsgcmV0dXJuIGtleS5jb21wdXRlSGFzaCgpOyB9
CisgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgRmFsbGJhY2tGb250RGVzY3JpcHRpb25LZXkm
IGEsIGNvbnN0IEZhbGxiYWNrRm9udERlc2NyaXB0aW9uS2V5JiBiKSB7IHJldHVybiBhID09IGI7
IH0KKyAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9
IHRydWU7Cit9OworCit1c2luZyBTeXN0ZW1GYWxsYmFja0NhY2hlID0gSGFzaE1hcDxGYWxsYmFj
a0ZvbnREZXNjcmlwdGlvbktleSwgc3RkOjp1bmlxdWVfcHRyPENhY2hlZEZvbnRTZXQ+LCBGYWxs
YmFja0ZvbnREZXNjcmlwdGlvbktleUhhc2gsIFNpbXBsZUNsYXNzSGFzaFRyYWl0czxGYWxsYmFj
a0ZvbnREZXNjcmlwdGlvbktleT4+Oworc3RhdGljIFN5c3RlbUZhbGxiYWNrQ2FjaGUmIHN5c3Rl
bUZhbGxiYWNrQ2FjaGUoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTeXN0ZW1GYWxs
YmFja0NhY2hlPiBjYWNoZTsKKyAgICByZXR1cm4gY2FjaGUuZ2V0KCk7Cit9CisKK1JlZlB0cjxG
b250PiBGb250Q2FjaGU6OnN5c3RlbUZhbGxiYWNrRm9yQ2hhcmFjdGVycyhjb25zdCBGb250RGVz
Y3JpcHRpb24mIGRlc2NyaXB0aW9uLCBjb25zdCBGb250KiwgSXNGb3JQbGF0Zm9ybUZvbnQsIFBy
ZWZlckNvbG9yZWRGb250IHByZWZlckNvbG9yZWRGb250LCBjb25zdCBVQ2hhciogY2hhcmFjdGVy
cywgdW5zaWduZWQgbGVuZ3RoKQoreworICAgIGF1dG8gYWRkUmVzdWx0ID0gc3lzdGVtRmFsbGJh
Y2tDYWNoZSgpLmVuc3VyZShGYWxsYmFja0ZvbnREZXNjcmlwdGlvbktleShkZXNjcmlwdGlvbiwg
cHJlZmVyQ29sb3JlZEZvbnQpLCBbJmRlc2NyaXB0aW9uLCBwcmVmZXJDb2xvcmVkRm9udF0oKSAt
PiBzdGQ6OnVuaXF1ZV9wdHI8Q2FjaGVkRm9udFNldD4geworICAgICAgICBSZWZQdHI8RmNQYXR0
ZXJuPiBwYXR0ZXJuID0gYWRvcHRSZWYoRmNQYXR0ZXJuQ3JlYXRlKCkpOworICAgICAgICBGY1Bh
dHRlcm5BZGRCb29sKHBhdHRlcm4uZ2V0KCksIEZDX1NDQUxBQkxFLCBGY1RydWUpOwogI2lmZGVm
IEZDX0NPTE9SCi0gICAgaWYgKHByZWZlckNvbG9yZWRGb250ID09IFByZWZlckNvbG9yZWRGb250
OjpZZXMpCi0gICAgICAgIEZjUGF0dGVybkFkZEJvb2wocGF0dGVybi5nZXQoKSwgRkNfQ09MT1Is
IEZjVHJ1ZSk7CisgICAgICAgIGlmIChwcmVmZXJDb2xvcmVkRm9udCA9PSBQcmVmZXJDb2xvcmVk
Rm9udDo6WWVzKQorICAgICAgICAgICAgRmNQYXR0ZXJuQWRkQm9vbChwYXR0ZXJuLmdldCgpLCBG
Q19DT0xPUiwgRmNUcnVlKTsKICNlbmRpZgorICAgICAgICBpZiAoIWNvbmZpZ3VyZVBhdHRlcm5G
b3JGb250RGVzY3JpcHRpb24ocGF0dGVybi5nZXQoKSwgZGVzY3JpcHRpb24pKQorICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBpZiAoIWNvbmZpZ3VyZVBhdHRlcm5Gb3JGb250RGVz
Y3JpcHRpb24ocGF0dGVybi5nZXQoKSwgZGVzY3JpcHRpb24pKQotICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICAgICAgRmNDb25maWdTdWJzdGl0dXRlKG51bGxwdHIsIHBhdHRlcm4uZ2V0KCks
IEZjTWF0Y2hQYXR0ZXJuKTsKKyAgICAgICAgY2Fpcm9fZnRfZm9udF9vcHRpb25zX3N1YnN0aXR1
dGUoZ2V0RGVmYXVsdENhaXJvRm9udE9wdGlvbnMoKSwgcGF0dGVybi5nZXQoKSk7CisgICAgICAg
IEZjRGVmYXVsdFN1YnN0aXR1dGUocGF0dGVybi5nZXQoKSk7CiAKLSAgICBGY0NvbmZpZ1N1YnN0
aXR1dGUobnVsbHB0ciwgcGF0dGVybi5nZXQoKSwgRmNNYXRjaFBhdHRlcm4pOwotICAgIGNhaXJv
X2Z0X2ZvbnRfb3B0aW9uc19zdWJzdGl0dXRlKGdldERlZmF1bHRDYWlyb0ZvbnRPcHRpb25zKCks
IHBhdHRlcm4uZ2V0KCkpOwotICAgIEZjRGVmYXVsdFN1YnN0aXR1dGUocGF0dGVybi5nZXQoKSk7
CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPENhY2hlZEZvbnRTZXQ+KFdURk1vdmUocGF0dGVy
bikpOworICAgIH0pOwogCi0gICAgRmNSZXN1bHQgZm9udENvbmZpZ1Jlc3VsdDsKLSAgICBSZWZQ
dHI8RmNQYXR0ZXJuPiByZXN1bHRQYXR0ZXJuID0gYWRvcHRSZWYoRmNGb250TWF0Y2gobnVsbHB0
ciwgcGF0dGVybi5nZXQoKSwgJmZvbnRDb25maWdSZXN1bHQpKTsKKyAgICBpZiAoIWFkZFJlc3Vs
dC5pdGVyYXRvci0+dmFsdWUpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgUmVmUHRy
PEZjUGF0dGVybj4gcmVzdWx0UGF0dGVybiA9IGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUtPmJl
c3RGb3JDaGFyYWN0ZXJzKGNoYXJhY3RlcnMsIGxlbmd0aCk7CiAgICAgaWYgKCFyZXN1bHRQYXR0
ZXJuKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtMTU3LDYgKzI3NiwxMSBAQCBSZWZQ
dHI8Rm9udD4gRm9udENhY2hlOjpzeXN0ZW1GYWxsYmFja0ZvckNoYXJhY3RlcnMoY29uc3QgRm9u
dERlc2NyaXB0aW9uJiBkZXNjcgogICAgIHJldHVybiBmb250Rm9yUGxhdGZvcm1EYXRhKGFsdGVy
bmF0ZUZvbnREYXRhKTsKIH0KIAordm9pZCBGb250Q2FjaGU6OnBsYXRmb3JtUHVyZ2VJbmFjdGl2
ZUZvbnREYXRhKCkKK3sKKyAgICBzeXN0ZW1GYWxsYmFja0NhY2hlKCkuY2xlYXIoKTsKK30KKwog
c3RhdGljIFZlY3RvcjxTdHJpbmc+IHBhdHRlcm5Ub0ZhbWlsaWVzKEZjUGF0dGVybiYgcGF0dGVy
bikKIHsKICAgICBjaGFyKiBwYXR0ZXJuQ2hhcnMgPSByZWludGVycHJldF9jYXN0PGNoYXIqPihG
Y1BhdHRlcm5Gb3JtYXQoJnBhdHRlcm4sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgRmNDaGFyOCo+
KCIle2ZhbWlseX0iKSkpOwo=
</data>
<flag name="review"
          id="398173"
          type_id="1"
          status="+"
          setter="clopez"
    />
          </attachment>
      

    </bug>

</bugzilla>