<?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>27442</bug_id>
          
          <creation_ts>2009-07-20 04:00:26 -0700</creation_ts>
          <short_desc>[GTK] Fully separate Pango and FreeType font backends</short_desc>
          <delta_ts>2010-09-17 11:02:25 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKitGTK</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Gtk</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jan Alonzo">jmalonzo</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>bfulgham</cc>
    
    <cc>eric</cc>
    
    <cc>gustavo</cc>
    
    <cc>mrobinson</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>133108</commentid>
    <comment_count>0</comment_count>
    <who name="Jan Alonzo">jmalonzo</who>
    <bug_when>2009-07-20 04:00:26 -0700</bug_when>
    <thetext>The split will make the respective files clean of #ifdefs and it makes it easier to update the respective Gtk font backends.

Patch coming next..</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>133110</commentid>
    <comment_count>1</comment_count>
      <attachid>33078</attachid>
    <who name="Jan Alonzo">jmalonzo</who>
    <bug_when>2009-07-20 04:03:52 -0700</bug_when>
    <thetext>Created attachment 33078
patch to split FontPlatformData into a Gtk and Pango variant</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>138057</commentid>
    <comment_count>2</comment_count>
      <attachid>33078</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-07 12:51:41 -0700</bug_when>
    <thetext>Comment on attachment 33078
patch to split FontPlatformData into a Gtk and Pango variant

Your changelog needs more detail.  You need to say &quot;why&quot;.  What are these files used for?  Is the gtk one used anymore?  Why do we have 2 just for one port?  Why isn&apos;t the gtk one called FontPlatformDataFreeType?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>279226</commentid>
    <comment_count>3</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-09-14 15:57:26 -0700</bug_when>
    <thetext>This change has become important as work begins once again on the FreeType backend. I&apos;d like to make sure that any changes made there do not break the Pango backend. Additionally, the GTK+ port may deprecate or remove the Pango backend entirely and this change also prepares for that eventuality. Finally, this change takes a big machete to the confusing #ifdef jungle living in platform/graphics/cairo.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>279239</commentid>
    <comment_count>4</comment_count>
      <attachid>67617</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-09-14 16:14:14 -0700</bug_when>
    <thetext>Created attachment 67617
Separate the font backends</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>279240</commentid>
    <comment_count>5</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-09-14 16:15:47 -0700</bug_when>
    <thetext>Here&apos;s some overview of the current font situation for Cairo and WebKitGTK+: http://trac.webkit.org/wiki/WebKitGTKFonts</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>279656</commentid>
    <comment_count>6</comment_count>
      <attachid>67617</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2010-09-15 12:30:15 -0700</bug_when>
    <thetext>Comment on attachment 67617
Separate the font backends

OK, this seems sane.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>279667</commentid>
    <comment_count>7</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-09-15 12:53:19 -0700</bug_when>
    <thetext>Committed r67567: &lt;http://trac.webkit.org/changeset/67567&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>279680</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-09-15 13:44:10 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/67567 might have broken GTK Linux 32-bit Release</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>33078</attachid>
            <date>2009-07-20 04:03:52 -0700</date>
            <delta_ts>2010-09-14 16:14:11 -0700</delta_ts>
            <desc>patch to split FontPlatformData into a Gtk and Pango variant</desc>
            <filename>bug-27442-20090720210350.patch</filename>
            <type>text/plain</type>
            <size>13565</size>
            <attacher name="Jan Alonzo">jmalonzo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MTM0MDA5OC4uZWNkNmZkMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAwOS0wNy0yMCAgSmFuIE1pY2hhZWwg
QWxvbnpvICA8am1hbG9uem9Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBbR3RrXSBTcGxpdCBGb250UGxhdGZvcm1EYXRhIGludG8g
Rm9udFBsYXRmb3JtRGF0YUd0ayBhbmQgRm9udFBsYXRmb3JtRGF0YVBhbmdvCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzQ0MgorCisgICAgICAgICog
R05VbWFrZWZpbGUuYW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0ZvbnRQbGF0
Zm9ybURhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ndGsvRm9udFBsYXRmb3Jt
RGF0YUd0ay5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0ZvbnRQbGF0Zm9y
bURhdGFHdGsuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpG
b250UGxhdGZvcm1EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6OnNp
emUpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6c3ludGhldGljQm9sZCk6
CisgICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpzeW50aGV0aWNPYmxpcXVlKToK
KyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6Omhhc2gpOgorICAgICAgICAoV2Vi
Q29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6aXNIYXNoVGFibGVEZWxldGVkVmFsdWUpOgorICAgICAg
ICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6aGFzaFRhYmxlRGVsZXRlZEZvbnRWYWx1ZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0ZvbnRQbGF0Zm9ybURhdGFQYW5nby5j
cHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0ZvbnRQbGF0Zm9ybURhdGFQYW5n
by5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6OkZvbnRQbGF0
Zm9ybURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6c2l6ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpzeW50aGV0aWNCb2xkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6OnN5bnRoZXRpY09ibGlxdWUpOgorICAgICAg
ICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6aGFzaCk6CisgICAgICAgIChXZWJDb3JlOjpG
b250UGxhdGZvcm1EYXRhOjppc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSk6CisgICAgICAgIChXZWJD
b3JlOjpGb250UGxhdGZvcm1EYXRhOjpoYXNoVGFibGVEZWxldGVkRm9udFZhbHVlKToKKwogMjAw
OS0wNy0yMCAgTGFzemxvIEdvbWJvcyAgPGxhc3psby4xLmdvbWJvc0Bub2tpYS5jb20+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgSG9sZ2VyIEZyZXl0aGVyLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9H
TlVtYWtlZmlsZS5hbSBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXggOTUzMWExOC4uOWFi
ZjhiNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQorKysgYi9XZWJDb3JlL0dO
VW1ha2VmaWxlLmFtCkBAIC0xOTQyLDYgKzE5NDIsNyBAQCB3ZWJjb3JlZ3RrX2NwcGZsYWdzICs9
IFwKIHdlYmNvcmVndGtfc291cmNlcyArPSBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
dGsvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAgXAogCVdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3RrL0ZvbnRQbGF0Zm9ybURhdGFHdGsuY3BwIFwKKwlXZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2d0ay9Gb250UGxhdGZvcm1EYXRhR3RrLmggXAogCVdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3RrL0dseXBoUGFnZVRyZWVOb2RlR3RrLmNwcCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ndGsvU2ltcGxlRm9udERhdGFHdGsuY3BwCiBlbmRpZiAjIEVORCBVU0VfRlJFRVRZUEUK
QEAgLTE5NTYsNiArMTk1Nyw3IEBAIHdlYmNvcmVndGtfY3BwZmxhZ3MgKz0gXAogd2ViY29yZWd0
a19zb3VyY2VzICs9IFwKIAlXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9Gb250Q3VzdG9t
UGxhdGZvcm1EYXRhUGFuZ28uY3BwIFwKIAlXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9G
b250UGxhdGZvcm1EYXRhUGFuZ28uY3BwIFwKKwlXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0
ay9Gb250UGxhdGZvcm1EYXRhUGFuZ28uaCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
dGsvR2x5cGhQYWdlVHJlZU5vZGVQYW5nby5jcHAgXAogCVdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3RrL1NpbXBsZUZvbnREYXRhUGFuZ28uY3BwCiBlbmRpZiAjIEVORCBVU0VfUEFOR08KZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0ZvbnRQbGF0Zm9ybURhdGEu
aCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0ZvbnRQbGF0Zm9ybURhdGEuaAppbmRl
eCBhZTFmMTM0Li45YTVjMzcwIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2d0ay9Gb250UGxhdGZvcm1EYXRhLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
dGsvRm9udFBsYXRmb3JtRGF0YS5oCkBAIC0yOCwxMDkgKzI4LDEyIEBACiAjaWZuZGVmIEZvbnRQ
bGF0Zm9ybURhdGFfaAogI2RlZmluZSBGb250UGxhdGZvcm1EYXRhX2gKIAotI2luY2x1ZGUgIkds
eXBoQnVmZmVyLmgiCi0jaW5jbHVkZSAiRm9udERlc2NyaXB0aW9uLmgiCi0jaW5jbHVkZSA8Y2Fp
cm8uaD4KICNpZiBkZWZpbmVkKFVTRV9GUkVFVFlQRSkKLSNpbmNsdWRlIDxjYWlyby1mdC5oPgot
I2luY2x1ZGUgPGZvbnRjb25maWcvZmNmcmVldHlwZS5oPgorI2luY2x1ZGUgIkZvbnRQbGF0Zm9y
bURhdGFHdGsuaCIKICNlbGlmIGRlZmluZWQoVVNFX1BBTkdPKQotI2luY2x1ZGUgPHBhbmdvL3Bh
bmdvY2Fpcm8uaD4KKyNpbmNsdWRlICJGb250UGxhdGZvcm1EYXRhUGFuZ28uaCIKICNlbHNlCi0j
ZXJyb3IgIk11c3QgZGVmaW5lZCBhIGZvbnQgYmFja2VuZCIKKyNlcnJvciAiTXVzdCBkZWZpbmUg
YSBmb250IGJhY2tlbmQiCiAjZW5kaWYKIAotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBG
b250UGxhdGZvcm1EYXRhIHsKLXB1YmxpYzoKLSAgICBGb250UGxhdGZvcm1EYXRhKFdURjo6SGFz
aFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkKLSNpZiBkZWZpbmVkKFVTRV9GUkVFVFlQRSkKLSAgICAg
ICAgOiBtX3BhdHRlcm4oaGFzaFRhYmxlRGVsZXRlZEZvbnRWYWx1ZSgpKQotICAgICAgICAsIG1f
ZmFsbGJhY2tzKDApCi0jZWxpZiBkZWZpbmVkKFVTRV9QQU5HTykKLSAgICAgICAgOiBtX2NvbnRl
eHQoMCkKLSAgICAgICAgLCBtX2ZvbnQoaGFzaFRhYmxlRGVsZXRlZEZvbnRWYWx1ZSgpKQotI2Vs
c2UKLSNlcnJvciAiTXVzdCBkZWZpbmVkIGEgZm9udCBiYWNrZW5kIgotI2VuZGlmCi0gICAgICAg
ICwgbV9zY2FsZWRGb250KDApCi0gICAgICAgIHsgfQotCi0gICAgRm9udFBsYXRmb3JtRGF0YSgp
Ci0jaWYgZGVmaW5lZChVU0VfRlJFRVRZUEUpCi0gICAgICAgIDogbV9wYXR0ZXJuKDApCi0gICAg
ICAgICwgbV9mYWxsYmFja3MoMCkKLSNlbGlmIGRlZmluZWQoVVNFX1BBTkdPKQotICAgICAgICA6
IG1fY29udGV4dCgwKQotICAgICAgICAsIG1fZm9udCgwKQotI2Vsc2UKLSNlcnJvciAiTXVzdCBk
ZWZpbmVkIGEgZm9udCBiYWNrZW5kIgotI2VuZGlmCi0gICAgICAgICwgbV9zY2FsZWRGb250KDAp
Ci0gICAgICAgIHsgfQotCi0gICAgRm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250RGVzY3JpcHRp
b24mLCBjb25zdCBBdG9taWNTdHJpbmcmIGZhbWlseSk7Ci0KLSAgICBGb250UGxhdGZvcm1EYXRh
KGZsb2F0IHNpemUsIGJvb2wgYm9sZCwgYm9vbCBpdGFsaWMpOwotICAgIEZvbnRQbGF0Zm9ybURh
dGEoY2Fpcm9fZm9udF9mYWNlX3QqIGZvbnRGYWNlLCBpbnQgc2l6ZSwgYm9vbCBib2xkLCBib29s
IGl0YWxpYyk7Ci0gICAgRm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250UGxhdGZvcm1EYXRhJik7
Ci0KLSAgICB+Rm9udFBsYXRmb3JtRGF0YSgpOwotCi0gICAgc3RhdGljIGJvb2wgaW5pdCgpOwot
Ci0gICAgYm9vbCBpc0ZpeGVkUGl0Y2goKTsKLSAgICBmbG9hdCBzaXplKCkgY29uc3QgeyByZXR1
cm4gbV9zaXplOyB9Ci0gICAgYm9vbCBzeW50aGV0aWNCb2xkKCkgY29uc3QgeyByZXR1cm4gbV9z
eW50aGV0aWNCb2xkOyB9Ci0gICAgYm9vbCBzeW50aGV0aWNPYmxpcXVlKCkgY29uc3QgeyByZXR1
cm4gbV9zeW50aGV0aWNPYmxpcXVlOyB9Ci0KLSAgICB2b2lkIHNldEZvbnQoY2Fpcm9fdCopIGNv
bnN0OwotCi0gICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0Ci0gICAgewotI2lmIGRlZmluZWQoVVNF
X0ZSRUVUWVBFKQotICAgICAgICBpZiAobV9wYXR0ZXJuKQotICAgICAgICAgICAgcmV0dXJuIEZj
UGF0dGVybkhhc2gobV9wYXR0ZXJuKTsKLSNlbmRpZgotICAgICAgICB1aW50cHRyX3QgaGFzaENv
ZGVzWzFdID0geyByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4obV9zY2FsZWRGb250KSB9Owot
ICAgICAgICByZXR1cm4gU3RyaW5nSW1wbDo6Y29tcHV0ZUhhc2gocmVpbnRlcnByZXRfY2FzdDxV
Q2hhcio+KGhhc2hDb2RlcyksIHNpemVvZihoYXNoQ29kZXMpIC8gc2l6ZW9mKFVDaGFyKSk7Ci0g
ICAgfQotCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmKSBjb25z
dDsKLSAgICBGb250UGxhdGZvcm1EYXRhJiBvcGVyYXRvcj0oY29uc3QgRm9udFBsYXRmb3JtRGF0
YSYpOwotICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdCB7Ci0jaWYgZGVm
aW5lZChVU0VfRlJFRVRZUEUpCi0gICAgICAgIHJldHVybiBtX3BhdHRlcm4gPT0gaGFzaFRhYmxl
RGVsZXRlZEZvbnRWYWx1ZSgpOwotI2VsaWYgZGVmaW5lZChVU0VfUEFOR08pCi0gICAgICAgIHJl
dHVybiBtX2ZvbnQgPT0gaGFzaFRhYmxlRGVsZXRlZEZvbnRWYWx1ZSgpOwotI2VuZGlmCi0gICAg
fTsKLQotI2lmIGRlZmluZWQoVVNFX0ZSRUVUWVBFKQotICAgIEZjUGF0dGVybiogbV9wYXR0ZXJu
OwotICAgIEZjRm9udFNldCogbV9mYWxsYmFja3M7Ci0jZWxpZiBkZWZpbmVkKFVTRV9QQU5HTykK
LSAgICBzdGF0aWMgUGFuZ29Gb250TWFwKiBtX2ZvbnRNYXA7Ci0gICAgc3RhdGljIEdIYXNoVGFi
bGUqIG1faGFzaFRhYmxlOwotCi0gICAgUGFuZ29Db250ZXh0KiBtX2NvbnRleHQ7Ci0gICAgUGFu
Z29Gb250KiBtX2ZvbnQ7Ci0jZWxzZQotI2Vycm9yICJNdXN0IGRlZmluZWQgYSBmb250IGJhY2tl
bmQiCi0jZW5kaWYKLSAgICBmbG9hdCBtX3NpemU7Ci0gICAgYm9vbCBtX3N5bnRoZXRpY0JvbGQ7
Ci0gICAgYm9vbCBtX3N5bnRoZXRpY09ibGlxdWU7Ci0gICAgY2Fpcm9fc2NhbGVkX2ZvbnRfdCog
bV9zY2FsZWRGb250OwotcHJpdmF0ZToKLSNpZiBkZWZpbmVkKFVTRV9GUkVFVFlQRSkKLSAgICBz
dGF0aWMgRmNQYXR0ZXJuICpoYXNoVGFibGVEZWxldGVkRm9udFZhbHVlKCkgeyByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDxGY1BhdHRlcm4qPigtMSk7IH0KLSNlbGlmIGRlZmluZWQoVVNFX1BBTkdP
KQotICAgIHN0YXRpYyBQYW5nb0ZvbnQgKmhhc2hUYWJsZURlbGV0ZWRGb250VmFsdWUoKSB7IHJl
dHVybiByZWludGVycHJldF9jYXN0PFBhbmdvRm9udCo+KC0xKTsgfQotI2VuZGlmCi19OwotCi19
Ci0KLSNlbmRpZgorI2VuZGlmIC8vIEVuZCBGb250UGxhdGZvcm1EYXRhX2gKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0ZvbnRQbGF0Zm9ybURhdGFHdGsuY3BwIGIv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvRm9udFBsYXRmb3JtRGF0YUd0ay5jcHAKaW5k
ZXggZjBmMGRkNS4uNzE0YzhlYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ndGsvRm9udFBsYXRmb3JtRGF0YUd0ay5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ndGsvRm9udFBsYXRmb3JtRGF0YUd0ay5jcHAKQEAgLTIzLDcgKzIzLDcgQEAKICAqLwog
CiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiRm9udFBsYXRmb3JtRGF0YS5oIgorI2lu
Y2x1ZGUgIkZvbnRQbGF0Zm9ybURhdGFHdGsuaCIKIAogI2luY2x1ZGUgIkNTdHJpbmcuaCIKICNp
bmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ndGsvRm9udFBsYXRmb3JtRGF0YUd0ay5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ndGsvRm9udFBsYXRmb3JtRGF0YUd0ay5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLjZiZTBiYzEKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2d0ay9Gb250UGxhdGZvcm1EYXRhR3RrLmgKQEAgLTAsMCArMSw5NiBAQAorLyoKKyAq
IFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBpbnRlcm5hbCBmb250IGltcGxlbWVudGF0aW9uLiAg
SXQgc2hvdWxkIG5vdCBiZSBpbmNsdWRlZCBieSBhbnlvbmUgb3RoZXIgdGhhbgorICogRm9udE1h
Yy5jcHAsIEZvbnRXaW4uY3BwIGFuZCBGb250LmNwcC4KKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBNaWNoYWVsIEVt
bWVsIG1pa2UuZW1tZWxAZ21haWwuY29tCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgSG9sZ2VyIEhh
bnMgUGV0ZXIgRnJleXRoZXIKKyAqIENvcHlyaWdodCAoQykgMjAwNyBQaW9uZWVyIFJlc2VhcmNo
IENlbnRlciBVU0EsIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgor
ICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv
cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
c2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v
ciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworCisjaWZuZGVmIEZv
bnRQbGF0Zm9ybURhdGFHdGtfaAorI2RlZmluZSBGb250UGxhdGZvcm1EYXRhR3RrX2gKKworI2lu
Y2x1ZGUgIkdseXBoQnVmZmVyLmgiCisjaW5jbHVkZSAiRm9udERlc2NyaXB0aW9uLmgiCisjaW5j
bHVkZSA8Y2Fpcm8uaD4KKyNpbmNsdWRlIDxjYWlyby1mdC5oPgorI2luY2x1ZGUgPGZvbnRjb25m
aWcvZmNmcmVldHlwZS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEZvbnRQbGF0
Zm9ybURhdGEgeworcHVibGljOgorICAgIEZvbnRQbGF0Zm9ybURhdGEoV1RGOjpIYXNoVGFibGVE
ZWxldGVkVmFsdWVUeXBlKQorICAgICAgICA6IG1fcGF0dGVybihoYXNoVGFibGVEZWxldGVkRm9u
dFZhbHVlKCkpCisgICAgICAgICwgbV9mYWxsYmFja3MoMCkKKyAgICAgICAgLCBtX3NjYWxlZEZv
bnQoMCkKKyAgICAgICAgeyB9CisKKyAgICBGb250UGxhdGZvcm1EYXRhKCkKKyAgICAgICAgOiBt
X3BhdHRlcm4oMCkKKyAgICAgICAgLCBtX2ZhbGxiYWNrcygwKQorICAgICAgICAsIG1fc2NhbGVk
Rm9udCgwKQorICAgICAgICB7IH0KKworICAgIEZvbnRQbGF0Zm9ybURhdGEoY29uc3QgRm9udERl
c2NyaXB0aW9uJiwgY29uc3QgQXRvbWljU3RyaW5nJiBmYW1pbHkpOworCisgICAgRm9udFBsYXRm
b3JtRGF0YShmbG9hdCBzaXplLCBib29sIGJvbGQsIGJvb2wgaXRhbGljKTsKKyAgICBGb250UGxh
dGZvcm1EYXRhKGNhaXJvX2ZvbnRfZmFjZV90KiBmb250RmFjZSwgaW50IHNpemUsIGJvb2wgYm9s
ZCwgYm9vbCBpdGFsaWMpOworICAgIEZvbnRQbGF0Zm9ybURhdGEoY29uc3QgRm9udFBsYXRmb3Jt
RGF0YSYpOworCisgICAgfkZvbnRQbGF0Zm9ybURhdGEoKTsKKworICAgIHN0YXRpYyBib29sIGlu
aXQoKTsKKworICAgIGJvb2wgaXNGaXhlZFBpdGNoKCk7CisgICAgZmxvYXQgc2l6ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fc2l6ZTsgfQorICAgIGJvb2wgc3ludGhldGljQm9sZCgpIGNvbnN0IHsgcmV0
dXJuIG1fc3ludGhldGljQm9sZDsgfQorICAgIGJvb2wgc3ludGhldGljT2JsaXF1ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fc3ludGhldGljT2JsaXF1ZTsgfQorCisgICAgdm9pZCBzZXRGb250KGNhaXJv
X3QqKSBjb25zdDsKKworICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdAorICAgIHsKKyAgICAgICAg
aWYgKG1fcGF0dGVybikKKyAgICAgICAgICAgIHJldHVybiBGY1BhdHRlcm5IYXNoKG1fcGF0dGVy
bik7CisgICAgICAgIHVpbnRwdHJfdCBoYXNoQ29kZXNbMV0gPSB7IHJlaW50ZXJwcmV0X2Nhc3Q8
dWludHB0cl90PihtX3NjYWxlZEZvbnQpIH07CisgICAgICAgIHJldHVybiBTdHJpbmdJbXBsOjpj
b21wdXRlSGFzaChyZWludGVycHJldF9jYXN0PFVDaGFyKj4oaGFzaENvZGVzKSwgc2l6ZW9mKGhh
c2hDb2RlcykgLyBzaXplb2YoVUNoYXIpKTsKKyAgICB9CisKKyAgICBib29sIG9wZXJhdG9yPT0o
Y29uc3QgRm9udFBsYXRmb3JtRGF0YSYpIGNvbnN0OworICAgIEZvbnRQbGF0Zm9ybURhdGEmIG9w
ZXJhdG9yPShjb25zdCBGb250UGxhdGZvcm1EYXRhJik7CisgICAgYm9vbCBpc0hhc2hUYWJsZURl
bGV0ZWRWYWx1ZSgpIGNvbnN0IHsKKyAgICAgICAgcmV0dXJuIG1fcGF0dGVybiA9PSBoYXNoVGFi
bGVEZWxldGVkRm9udFZhbHVlKCk7CisgICAgfTsKKworICAgIEZjUGF0dGVybiogbV9wYXR0ZXJu
OworICAgIEZjRm9udFNldCogbV9mYWxsYmFja3M7CisgICAgZmxvYXQgbV9zaXplOworICAgIGJv
b2wgbV9zeW50aGV0aWNCb2xkOworICAgIGJvb2wgbV9zeW50aGV0aWNPYmxpcXVlOworICAgIGNh
aXJvX3NjYWxlZF9mb250X3QqIG1fc2NhbGVkRm9udDsKK3ByaXZhdGU6CisgICAgc3RhdGljIEZj
UGF0dGVybiAqaGFzaFRhYmxlRGVsZXRlZEZvbnRWYWx1ZSgpIHsgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8RmNQYXR0ZXJuKj4oLTEpOyB9Cit9OworCit9CisKKyNlbmRpZiAvLyBFbmQgRm9udFBs
YXRmb3JtRGF0YUd0a19oCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0
ay9Gb250UGxhdGZvcm1EYXRhUGFuZ28uY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
dGsvRm9udFBsYXRmb3JtRGF0YVBhbmdvLmNwcAppbmRleCA4OGJmNDI3Li4wNDI1ZGJkIDEwMDY0
NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9Gb250UGxhdGZvcm1EYXRhUGFu
Z28uY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0ZvbnRQbGF0Zm9ybURh
dGFQYW5nby5jcHAKQEAgLTIzLDcgKzIzLDcgQEAKICAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwg
VVNBLgogICovCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiRm9udFBsYXRmb3JtRGF0
YS5oIgorI2luY2x1ZGUgIkZvbnRQbGF0Zm9ybURhdGFQYW5nby5oIgogCiAjaW5jbHVkZSAiQ1N0
cmluZy5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9Gb250UGxhdGZvcm1EYXRhUGFuZ28uaCBiL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0ZvbnRQbGF0Zm9ybURhdGFQYW5nby5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkwZWNhODMKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9Gb250UGxhdGZvcm1EYXRhUGFuZ28uaApAQCAtMCww
ICsxLDk3IEBACisvKgorICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIGludGVybmFsIGZvbnQg
aW1wbGVtZW50YXRpb24uICBJdCBzaG91bGQgbm90IGJlIGluY2x1ZGVkIGJ5IGFueW9uZSBvdGhl
ciB0aGFuCisgKiBGb250TWFjLmNwcCwgRm9udFdpbi5jcHAgYW5kIEZvbnQuY3BwLgorICoKKyAq
IENvcHlyaWdodCAoQykgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLgorICogQ29weXJpZ2h0IChD
KSAyMDA2IE1pY2hhZWwgRW1tZWwgbWlrZS5lbW1lbEBnbWFpbC5jb20KKyAqIENvcHlyaWdodCAo
QykgMjAwNyBIb2xnZXIgSGFucyBQZXRlciBGcmV5dGhlcgorICogQ29weXJpZ2h0IChDKSAyMDA3
IFBpb25lZXIgUmVzZWFyY2ggQ2VudGVyIFVTQSwgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vu
c2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBs
aWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws
CisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3
YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv
cHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdp
dGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRl
IHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBT
dHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgor
ICovCisKKyNpZm5kZWYgRm9udFBsYXRmb3JtRGF0YVBhbmdvX2gKKyNkZWZpbmUgRm9udFBsYXRm
b3JtRGF0YVBhbmdvX2gKKworI2luY2x1ZGUgIkdseXBoQnVmZmVyLmgiCisjaW5jbHVkZSAiRm9u
dERlc2NyaXB0aW9uLmgiCisjaW5jbHVkZSA8Y2Fpcm8uaD4KKyNpbmNsdWRlIDxwYW5nby9wYW5n
b2NhaXJvLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRm9udFBsYXRmb3JtRGF0
YSB7CitwdWJsaWM6CisgICAgRm9udFBsYXRmb3JtRGF0YShXVEY6Okhhc2hUYWJsZURlbGV0ZWRW
YWx1ZVR5cGUpCisgICAgICAgIDogbV9jb250ZXh0KDApCisgICAgICAgICwgbV9mb250KGhhc2hU
YWJsZURlbGV0ZWRGb250VmFsdWUoKSkKKyAgICAgICAgLCBtX3NjYWxlZEZvbnQoMCkKKyAgICAg
ICAgeyB9CisKKyAgICBGb250UGxhdGZvcm1EYXRhKCkKKyAgICAgICAgOiBtX2NvbnRleHQoMCkK
KyAgICAgICAgLCBtX2ZvbnQoMCkKKyAgICAgICAgLCBtX3NjYWxlZEZvbnQoMCkKKyAgICAgICAg
eyB9CisKKyAgICBGb250UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIGNvbnN0
IEF0b21pY1N0cmluZyYgZmFtaWx5KTsKKworICAgIEZvbnRQbGF0Zm9ybURhdGEoZmxvYXQgc2l6
ZSwgYm9vbCBib2xkLCBib29sIGl0YWxpYyk7CisgICAgRm9udFBsYXRmb3JtRGF0YShjYWlyb19m
b250X2ZhY2VfdCogZm9udEZhY2UsIGludCBzaXplLCBib29sIGJvbGQsIGJvb2wgaXRhbGljKTsK
KyAgICBGb250UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmKTsKKworICAgIH5G
b250UGxhdGZvcm1EYXRhKCk7CisKKyAgICBzdGF0aWMgYm9vbCBpbml0KCk7CisKKyAgICBib29s
IGlzRml4ZWRQaXRjaCgpOworICAgIGZsb2F0IHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7
IH0KKyAgICBib29sIHN5bnRoZXRpY0JvbGQoKSBjb25zdCB7IHJldHVybiBtX3N5bnRoZXRpY0Jv
bGQ7IH0KKyAgICBib29sIHN5bnRoZXRpY09ibGlxdWUoKSBjb25zdCB7IHJldHVybiBtX3N5bnRo
ZXRpY09ibGlxdWU7IH0KKworICAgIHZvaWQgc2V0Rm9udChjYWlyb190KikgY29uc3Q7CisKKyAg
ICB1bnNpZ25lZCBoYXNoKCkgY29uc3QKKyAgICB7CisgICAgICAgIHVpbnRwdHJfdCBoYXNoQ29k
ZXNbMV0gPSB7IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihtX3NjYWxlZEZvbnQpIH07Cisg
ICAgICAgIHJldHVybiBTdHJpbmdJbXBsOjpjb21wdXRlSGFzaChyZWludGVycHJldF9jYXN0PFVD
aGFyKj4oaGFzaENvZGVzKSwgc2l6ZW9mKGhhc2hDb2RlcykgLyBzaXplb2YoVUNoYXIpKTsKKyAg
ICB9CisKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRm9udFBsYXRmb3JtRGF0YSYpIGNvbnN0
OworICAgIEZvbnRQbGF0Zm9ybURhdGEmIG9wZXJhdG9yPShjb25zdCBGb250UGxhdGZvcm1EYXRh
Jik7CisgICAgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0IHsKKyAgICAgICAg
cmV0dXJuIG1fZm9udCA9PSBoYXNoVGFibGVEZWxldGVkRm9udFZhbHVlKCk7CisgICAgfTsKKwor
ICAgIHN0YXRpYyBQYW5nb0ZvbnRNYXAqIG1fZm9udE1hcDsKKyAgICBzdGF0aWMgR0hhc2hUYWJs
ZSogbV9oYXNoVGFibGU7CisKKyAgICBQYW5nb0NvbnRleHQqIG1fY29udGV4dDsKKyAgICBQYW5n
b0ZvbnQqIG1fZm9udDsKKworICAgIGZsb2F0IG1fc2l6ZTsKKyAgICBib29sIG1fc3ludGhldGlj
Qm9sZDsKKyAgICBib29sIG1fc3ludGhldGljT2JsaXF1ZTsKKyAgICBjYWlyb19zY2FsZWRfZm9u
dF90KiBtX3NjYWxlZEZvbnQ7Citwcml2YXRlOgorICAgIHN0YXRpYyBQYW5nb0ZvbnQgKmhhc2hU
YWJsZURlbGV0ZWRGb250VmFsdWUoKSB7IHJldHVybiByZWludGVycHJldF9jYXN0PFBhbmdvRm9u
dCo+KC0xKTsgfQorfTsKKworfQorCisjZW5kaWYgLy8gRm9udFBsYXRmb3JtRGF0YVBhbmdvX2g=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>67617</attachid>
            <date>2010-09-14 16:14:14 -0700</date>
            <delta_ts>2010-09-17 11:02:25 -0700</delta_ts>
            <desc>Separate the font backends</desc>
            <filename>bug-27442-20100914161416.patch</filename>
            <type>text/plain</type>
            <size>27350</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ01ha2VMaXN0c0VmbC50eHQgYi9XZWJDb3JlL0NNYWtlTGlz
dHNFZmwudHh0CmluZGV4IDUzMGFjZjMyNTdlNDUxZTI1ZmQwYmMyYzdlZGJhNzIzNmQxNTZhZDEu
LjY2ZmI0ODUyZDdmNWJmY2JkOGY3NzhjODNlY2ZkM2Y1ZDgxNTAxZmUgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvQ01ha2VMaXN0c0VmbC50eHQKKysrIGIvV2ViQ29yZS9DTWFrZUxpc3RzRWZsLnR4dApA
QCAtNjYsOSArNjYsOSBAQCBJRiAoV1RGX1BMQVRGT1JNX0NBSVJPKQogICApCiAgIExJU1QoQVBQ
RU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWNo
ZUNhaXJvLmNwcAotICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyby5jcHAKKyAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q2Fpcm9GcmVlVHlwZS5jcHAKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAotICAgIHBsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRQbGF0Zm9ybURhdGFDYWlyby5jcHAKKyAgICBwbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9Gb250UGxhdGZvcm1EYXRhRnJlZVR5cGUuY3BwCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vT3duUHRyQ2Fpcm8uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vUGxhdGZvcm1SZWZQdHJDYWlyby5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9HbHlwaFBhZ2VUcmVlTm9kZUNhaXJvLmNwcApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VM
b2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4N2I3NDcyODc0YjhkN2U3NWU5MzUzZjU1MTA5
NzUwYTdjNDM1ZjUzLi5lOTBlZDFjM2M1NTJiMzQwMDljNjBkOTllZmY4MjI3ZGE4ZTY1ZWE1IDEw
MDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDc5IEBACisyMDEwLTA5LTE0ICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdh
bGlhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBbR1RLXSBGdWxseSBzZXBhcmF0ZSBQYW5nbyBhbmQgRnJlZVR5cGUgZm9udCBiYWNrZW5kcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjc0NDIKKwor
ICAgICAgICBTcGxpdCBGb250UGxhdGZvcm1EYXRhLmggaW50byBzZXBhcmF0ZSB2ZXJzaW9ucyBm
b3IgUGFuZ28sIEZyZWVUeXBlIGFuZCBXaW5DYWlyby4KKyAgICAgICAgSW5jbHVkZSB0aGUgY29y
cmVjdCBmaWxlIHZpYSAjaWZkZWYnZCBpbmNsdWRlcywgbGlrZSB0aGUgQ2hyb21pdW0gcG9ydC4g
QWxzbyBzcGxpdAorICAgICAgICBGb250Q2FjaGVDYWlyby5jcHAgaW50byBQYW5nbyBhbmQgRnJl
ZVR5cGUgdmVyc2lvbnMsIGFzIHRoZXkgaGFkIGFsbW9zdCBubyBjb2RlIGluCisgICAgICAgIGNv
bW1vbi4gRmluYWxseSwgcmVuYW1lIEZvbnRQbGF0Zm9ybURhdGFDYWlybyB0byBGb250UGxhdGZv
cm1EYXRhRnJlZVR5cGUsIGFzIHRoaXMKKyAgICAgICAgY29tcGlsYXRpb24gdW5pdCBpcyB1c2Vk
IG9ubHkgYnkgdGhlIEZyZWVUeXBlIGJhY2tlbmQuIFRoaXMgY2hhbmdlIGlzIGltcG9ydGFudCB0
bworICAgICAgICBwcmV2ZW50IHVwY29taW5nIGZpeGVzIHRvIHRoZSBGcmVlVHlwZSBiYWNrZW5k
IGZyb20gYWZmZWN0aW5nIG90aGVyIGJhY2tlbmRzLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBh
cyBmdW5jdGlvbmFsaXR5IGhhcyBub3QgY2hhbmdlZC4KKworICAgICAgICAqIENNYWtlTGlzdHNF
ZmwudHh0OiBVcGRhdGUgc291cmNlIGxpc3RzLgorICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOiBV
cGRhdGUgc291cmNlIGxpc3RzLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0Zv
bnRDYWNoZUNhaXJvLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9Gb250Q2FjaGVGcmVlVHlwZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Rm9u
dENhY2hlOjpwbGF0Zm9ybUluaXQpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hlOjpnZXRG
b250RGF0YUZvckNoYXJhY3RlcnMpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hlOjpnZXRT
aW1pbGFyRm9udFBsYXRmb3JtRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FjaGU6Omdl
dExhc3RSZXNvcnRGYWxsYmFja0ZvbnQpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hlOjpn
ZXRUcmFpdHNJbkZhbWlseSk6CisgICAgICAgIChXZWJDb3JlOjppc1dlbGxLbm93bkZvbnROYW1l
KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYWNoZTo6Y3JlYXRlRm9udFBsYXRmb3JtRGF0YSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udFBsYXRmb3JtRGF0YS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlw
ZS5jcHA6IFJlbmFtZWQgZnJvbSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRQ
bGF0Zm9ybURhdGFDYWlyby5jcHAuCisgICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRh
OjpGb250UGxhdGZvcm1EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6
Om9wZXJhdG9yPSk6CisgICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjppbml0KToK
KyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6On5Gb250UGxhdGZvcm1EYXRhKToK
KyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6OmlzRml4ZWRQaXRjaCk6CisgICAg
ICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdl
YkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6OmRlc2NyaXB0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9Gb250UGxhdGZvcm1EYXRhRnJlZVR5cGUuaDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpGb250UGxhdGZvcm1EYXRhKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6OnNpemUpOgorICAgICAgICAoV2ViQ29yZTo6
Rm9udFBsYXRmb3JtRGF0YTo6c2V0U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZv
cm1EYXRhOjpzeW50aGV0aWNCb2xkKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURh
dGE6OnN5bnRoZXRpY09ibGlxdWUpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0
YTo6c2NhbGVkRm9udCk6CisgICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpoYXNo
KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6OmlzSGFzaFRhYmxlRGVsZXRl
ZFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6Omhhc2hUYWJsZURl
bGV0ZWRGb250VmFsdWUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2d0ay9Gb250Q2Fj
aGVQYW5nby5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hlOjpwbGF0Zm9y
bUluaXQpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hlOjpnZXRGb250RGF0YUZvckNoYXJh
Y3RlcnMpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hlOjpnZXRTaW1pbGFyRm9udFBsYXRm
b3JtRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FjaGU6OmdldExhc3RSZXNvcnRGYWxs
YmFja0ZvbnQpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hlOjpnZXRUcmFpdHNJbkZhbWls
eSk6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FjaGU6OmNyZWF0ZUZvbnRQbGF0Zm9ybURhdGEp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2d0ay9Gb250UGxhdGZvcm1EYXRhUGFuZ28u
aDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpGb250UGxhdGZv
cm1EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6OnNpemUpOgorICAg
ICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6c2V0U2l6ZSk6CisgICAgICAgIChXZWJD
b3JlOjpGb250UGxhdGZvcm1EYXRhOjpzeW50aGV0aWNCb2xkKToKKyAgICAgICAgKFdlYkNvcmU6
OkZvbnRQbGF0Zm9ybURhdGE6OnN5bnRoZXRpY09ibGlxdWUpOgorICAgICAgICAoV2ViQ29yZTo6
Rm9udFBsYXRmb3JtRGF0YTo6c2NhbGVkRm9udCk6CisgICAgICAgIChXZWJDb3JlOjpGb250UGxh
dGZvcm1EYXRhOjpoYXNoKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6Omlz
SGFzaFRhYmxlRGVsZXRlZFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURh
dGE6Omhhc2hUYWJsZURlbGV0ZWRGb250VmFsdWUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhQ2Fpcm9XaW4uaDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpGb250UGxhdGZvcm1EYXRhOjpGb250UGxhdGZvcm1EYXRhKToKKyAgICAgICAgKFdlYkNv
cmU6OkZvbnRQbGF0Zm9ybURhdGE6Omhmb250KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0
Zm9ybURhdGE6OnVzZUdESSk6CisgICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpm
b250RmFjZSk6CisgICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpzaXplKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6OnNldFNpemUpOgorICAgICAgICAoV2Vi
Q29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6c3ludGhldGljQm9sZCk6CisgICAgICAgIChXZWJDb3Jl
OjpGb250UGxhdGZvcm1EYXRhOjpzeW50aGV0aWNPYmxpcXVlKToKKyAgICAgICAgKFdlYkNvcmU6
OkZvbnRQbGF0Zm9ybURhdGE6OnNjYWxlZEZvbnQpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBs
YXRmb3JtRGF0YTo6aGFzaCk6CisgICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpp
c0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSk6CisKIDIwMTAtMDktMTQgIEFuZHJlYXMgS2xpbmcgIDxh
bmRyZWFzLmtsaW5nQG5va2lhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbnRvbmlvIEdv
bWVzLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbSBiL1dlYkNvcmUvR05VbWFr
ZWZpbGUuYW0KaW5kZXggYWI2ODUyN2QwNzc0Y2MyODk5MTliMTdiODhkN2IzNmFjNDg4YTUxYS4u
OWQxM2I3NTRlNGZmOGVjODMzZWIzMjdjYzMxYzc0NDE3ZTYzZTJmYyAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9HTlVtYWtlZmlsZS5hbQorKysgYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCkBAIC0zMzQz
LDcgKzMzNDMsNiBAQCB3ZWJjb3JlZ3RrX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvcGFnZS9ndGsv
RXZlbnRIYW5kbGVyR3RrLmNwcCBcCiAJV2ViQ29yZS9wYWdlL2d0ay9GcmFtZUd0ay5jcHAgXAog
CVdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9QYXRoLmggXAotCVdlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udENhY2hlQ2Fpcm8uY3BwIFwKIAlXZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyby5jcHAgXAogCVdlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oIFwKIAlXZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRQbGF0Zm9ybURhdGEuaCBcCkBAIC0zNTMxLDEzICszNTMw
LDE0IEBAIHdlYmNvcmVfY3BwZmxhZ3MgKz0gLURFTkFCTEVfRkFTVF9NT0JJTEVfU0NST0xMSU5H
PTEKIGVuZGlmICMgRU5EIEVOQUJMRV9GQVNUX01PQklMRV9TQ1JPTExJTkcKIAogIyAtLS0KLSMg
RnJlZXR5cGUgZm9udCBiYWNrZW5kCisjIEZyZWVUeXBlIGZvbnQgYmFja2VuZAogIyAtLS0KIGlm
IFVTRV9GUkVFVFlQRQogd2ViY29yZWd0a19jcHBmbGFncyArPSAtRFVTRV9GUkVFVFlQRT0xCiB3
ZWJjb3JlZ3RrX3NvdXJjZXMgKz0gXAorCVdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
Rm9udENhY2hlRnJlZVR5cGUuY3BwIFwKIAlXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwIFwKLQlXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0ZvbnRQbGF0Zm9ybURhdGFDYWlyby5jcHAgXAorCVdlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vRm9udFBsYXRmb3JtRGF0YUZyZWVUeXBlLmNwcCBcCiAJV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9HbHlwaFBhZ2VUcmVlTm9kZUNhaXJvLmNwcCBcCiAJV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9TaW1wbGVGb250RGF0YUNhaXJvLmNwcAogZW5kaWYg
IyBFTkQgVVNFX0ZSRUVUWVBFCkBAIC0zNTQ4LDYgKzM1NDgsNyBAQCBlbmRpZiAjIEVORCBVU0Vf
RlJFRVRZUEUKIGlmIFVTRV9QQU5HTwogd2ViY29yZWd0a19jcHBmbGFncyArPSAtRFVTRV9QQU5H
Tz0xCiB3ZWJjb3JlZ3RrX3NvdXJjZXMgKz0gXAorCVdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3RrL0ZvbnRDYWNoZVBhbmdvLmNwcCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsv
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YVBhbmdvLmNwcCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ndGsvRm9udFBsYXRmb3JtRGF0YVBhbmdvLmNwcCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ndGsvR2x5cGhQYWdlVHJlZU5vZGVQYW5nby5jcHAgXApkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q2FjaGVDYWlyby5jcHAgYi9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWNoZUZyZWVUeXBlLmNwcApzaW1pbGFyaXR5
IGluZGV4IDk4JQpyZW5hbWUgZnJvbSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0Zv
bnRDYWNoZUNhaXJvLmNwcApyZW5hbWUgdG8gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9Gb250Q2FjaGVGcmVlVHlwZS5jcHAKaW5kZXggNWQzMjYzZTk5NTFmOWQ0OTE3YTgwNmU0ZWIy
N2Y5NDFiMjA3M2JlMC4uZjUwN2FkM2EyMzRjNTRjOWIzZDg5NzgzYjFkMWFmMjY3MGFhMzA5YyAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q2FjaGVDYWly
by5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q2FjaGVGcmVl
VHlwZS5jcHAKQEAgLTM3LDcgKzM3LDYgQEAgdm9pZCBGb250Q2FjaGU6OnBsYXRmb3JtSW5pdCgp
CiAKIGNvbnN0IFNpbXBsZUZvbnREYXRhKiBGb250Q2FjaGU6OmdldEZvbnREYXRhRm9yQ2hhcmFj
dGVycyhjb25zdCBGb250JiBmb250LCBjb25zdCBVQ2hhciogY2hhcmFjdGVycywgaW50IGxlbmd0
aCkKIHsKLSNpZiBkZWZpbmVkKFVTRV9GUkVFVFlQRSkKICAgICBGY1Jlc3VsdCBmcmVzdWx0Owog
ICAgIEZvbnRQbGF0Zm9ybURhdGEqIHByaW0gPSBjb25zdF9jYXN0PEZvbnRQbGF0Zm9ybURhdGEq
PigmZm9udC5wcmltYXJ5Rm9udCgpLT5wbGF0Zm9ybURhdGEoKSk7CiAKQEAgLTYxLDcgKzYwLDYg
QEAgY29uc3QgU2ltcGxlRm9udERhdGEqIEZvbnRDYWNoZTo6Z2V0Rm9udERhdGFGb3JDaGFyYWN0
ZXJzKGNvbnN0IEZvbnQmIGZvbnQsIGNvbnMKICAgICAgICAgaWYgKHNmZC0+Y29udGFpbnNDaGFy
YWN0ZXJzKGNoYXJhY3RlcnMsIGxlbmd0aCkpCiAgICAgICAgICAgICByZXR1cm4gc2ZkOwogICAg
IH0KLSNlbmRpZgogCiAgICAgcmV0dXJuIDA7CiB9CkBAIC0xMDMsNyArMTAxLDYgQEAgc3RhdGlj
IGJvb2wgaXNXZWxsS25vd25Gb250TmFtZShjb25zdCBBdG9taWNTdHJpbmcgZmFtaWx5KQogCiBG
b250UGxhdGZvcm1EYXRhKiBGb250Q2FjaGU6OmNyZWF0ZUZvbnRQbGF0Zm9ybURhdGEoY29uc3Qg
Rm9udERlc2NyaXB0aW9uJiBmb250RGVzY3JpcHRpb24sIGNvbnN0IEF0b21pY1N0cmluZyYgZmFt
aWx5KQogewotI2lmIGRlZmluZWQoVVNFX0ZSRUVUWVBFKQogICAgIC8vIEhhbmRsZSBnZW5lcmlj
IGZhbWlseSB0eXBlcyBzcGVjaWFsbHksIGJlY2F1c2UgZm9udGNvbmZpZyBkb2VzIG5vdCBrbm93
IHRoZW0sIGJ1dCB3ZSBoYXZlCiAgICAgLy8gY29kZSB0byBmYWxsYmFjayBjb3JyZWN0bHkgaW4g
b3VyIHBsYXRmb3JtIGRhdGEgaW1wbGVtZW50YXRpb24uCiAgICAgaWYgKCFmYW1pbHkubGVuZ3Ro
KCkgfHwgZmFtaWx5LnN0YXJ0c1dpdGgoIi13ZWJraXQtIikKQEAgLTEzMCw3ICsxMjcsNiBAQCBG
b250UGxhdGZvcm1EYXRhKiBGb250Q2FjaGU6OmNyZWF0ZUZvbnRQbGF0Zm9ybURhdGEoY29uc3Qg
Rm9udERlc2NyaXB0aW9uJiBmb250RAogCiAgICAgaWYgKCFmb250U2V0LT5mb250cykKICAgICAg
ICAgcmV0dXJuIDA7Ci0jZW5kaWYKIAogICAgIHJldHVybiBuZXcgRm9udFBsYXRmb3JtRGF0YShm
b250RGVzY3JpcHRpb24sIGZhbWlseSk7CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0ZvbnRQbGF0Zm9ybURhdGEuaCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vRm9udFBsYXRmb3JtRGF0YS5oCmluZGV4IGZjNmI5ZjFmNGZlNWQzM2FhZjc1
NDhkOTU4ZjhlZGFiODBjOGNhYTQuLmU1ZmZlZjIyYzBhMzkyNmE5MTA0ZTljY2VkNDQ5NDM3NmZh
ODc5Y2UgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udFBs
YXRmb3JtRGF0YS5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udFBs
YXRmb3JtRGF0YS5oCkBAIC0xLDExICsxLDUgQEAKIC8qCi0gKiBUaGlzIGZpbGUgaXMgcGFydCBv
ZiB0aGUgaW50ZXJuYWwgZm9udCBpbXBsZW1lbnRhdGlvbi4gIEl0IHNob3VsZCBub3QgYmUgaW5j
bHVkZWQgYnkgYW55b25lIG90aGVyIHRoYW4KLSAqIEZvbnRNYWMuY3BwLCBGb250V2luLmNwcCBh
bmQgRm9udC5jcHAuCi0gKgotICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4IEFwcGxl
IEluYy4KLSAqIENvcHlyaWdodCAoQykgMjAwNiBNaWNoYWVsIEVtbWVsIG1pa2UuZW1tZWxAZ21h
aWwuY29tCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgSG9sZ2VyIEhhbnMgUGV0ZXIgRnJleXRoZXIK
LSAqIENvcHlyaWdodCAoQykgMjAwNyBQaW9uZWVyIFJlc2VhcmNoIENlbnRlciBVU0EsIEluYy4K
KyAqIENvcHlyaWdodCAoQykgMjAxMCBJZ2FsaWEgUy5MLgogICogQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCkBAIC0yOCwxNjAgKzIyLDEyIEBACiAjaWZuZGVmIEZvbnRQbGF0Zm9y
bURhdGFfaAogI2RlZmluZSBGb250UGxhdGZvcm1EYXRhX2gKIAotI2luY2x1ZGUgPHd0Zi9Gb3J3
YXJkLmg+Ci0jaW5jbHVkZSA8Y2Fpcm8uaD4KLSNpbmNsdWRlICJGb250RGVzY3JpcHRpb24uaCIK
LSNpbmNsdWRlICJHbHlwaEJ1ZmZlci5oIgotCi0jaWYgZGVmaW5lZChVU0VfRlJFRVRZUEUpCi0j
aW5jbHVkZSA8Y2Fpcm8tZnQuaD4KLSNpbmNsdWRlIDxmb250Y29uZmlnL2ZjZnJlZXR5cGUuaD4K
LSNlbGlmIGRlZmluZWQoVVNFX1BBTkdPKQotI2luY2x1ZGUgPHBhbmdvL3BhbmdvY2Fpcm8uaD4K
LSNlbGlmIFBMQVRGT1JNKFdJTikKLSNpbmNsdWRlIDxjYWlyby13aW4zMi5oPgotI2luY2x1ZGUg
IlJlZkNvdW50ZWRHRElIYW5kbGUuaCIKLSNpbmNsdWRlICJTdHJpbmdJbXBsLmgiCi0jZWxzZQot
I2Vycm9yICJNdXN0IGRlZmluZWQgYSBmb250IGJhY2tlbmQiCi0jZW5kaWYKLQotI2lmIFBMQVRG
T1JNKFdJTikKLXR5cGVkZWYgc3RydWN0IEhGT05UX18qIEhGT05UOwotI2VuZGlmCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEZvbnRQbGF0Zm9ybURhdGEgewotcHVibGljOgotICAgIEZv
bnRQbGF0Zm9ybURhdGEoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlKQogI2lmIGRlZmlu
ZWQoVVNFX0ZSRUVUWVBFKQotICAgICAgICA6IG1fcGF0dGVybihoYXNoVGFibGVEZWxldGVkRm9u
dFZhbHVlKCkpCi0gICAgICAgICwgbV9mYWxsYmFja3MoMCkKKyNpbmNsdWRlICJGb250UGxhdGZv
cm1EYXRhRnJlZVR5cGUuaCIKICNlbGlmIGRlZmluZWQoVVNFX1BBTkdPKQotICAgICAgICA6IG1f
Y29udGV4dCgwKQotICAgICAgICAsIG1fZm9udChoYXNoVGFibGVEZWxldGVkRm9udFZhbHVlKCkp
CisjaW5jbHVkZSAiRm9udFBsYXRmb3JtRGF0YVBhbmdvLmgiCiAjZWxpZiBQTEFURk9STShXSU4p
Ci0gICAgICAgIDogbV9mb250RmFjZSgwKQotICAgICAgICAsIG1fdXNlR0RJKGZhbHNlKQotICAg
ICAgICAsIG1fZm9udChXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZSkKLSNlbHNlCi0jZXJyb3Ig
Ik11c3QgZGVmaW5lZCBhIGZvbnQgYmFja2VuZCIKKyNpbmNsdWRlICJGb250UGxhdGZvcm1EYXRh
Q2Fpcm9XaW4uaCIKICNlbmRpZgotICAgICAgICAsIG1fc2l6ZSgwKQotICAgICAgICAsIG1fc3lu
dGhldGljQm9sZChmYWxzZSkKLSAgICAgICAgLCBtX3N5bnRoZXRpY09ibGlxdWUoZmFsc2UpCi0g
ICAgICAgICwgbV9zY2FsZWRGb250KDApCi0gICAgICAgIHsgfQogCi0gICAgRm9udFBsYXRmb3Jt
RGF0YSgpCi0jaWYgZGVmaW5lZChVU0VfRlJFRVRZUEUpCi0gICAgICAgIDogbV9wYXR0ZXJuKDAp
Ci0gICAgICAgICwgbV9mYWxsYmFja3MoMCkKLSNlbGlmIGRlZmluZWQoVVNFX1BBTkdPKQotICAg
ICAgICA6IG1fY29udGV4dCgwKQotICAgICAgICAsIG1fZm9udCgwKQotI2VsaWYgUExBVEZPUk0o
V0lOKQotICAgICAgICA6IG1fZm9udEZhY2UoMCkKLSAgICAgICAgLCBtX3VzZUdESShmYWxzZSkK
LSNlbHNlCi0jZXJyb3IgIk11c3QgZGVmaW5lZCBhIGZvbnQgYmFja2VuZCIKLSNlbmRpZgotICAg
ICAgICAsIG1fc2l6ZSgwKQotICAgICAgICAsIG1fc3ludGhldGljQm9sZChmYWxzZSkKLSAgICAg
ICAgLCBtX3N5bnRoZXRpY09ibGlxdWUoZmFsc2UpCi0gICAgICAgICwgbV9zY2FsZWRGb250KDAp
Ci0gICAgICAgIHsgfQotCi0jaWYgUExBVEZPUk0oV0lOKQotICAgIEZvbnRQbGF0Zm9ybURhdGEo
SEZPTlQsIGZsb2F0IHNpemUsIGJvb2wgYm9sZCwgYm9vbCBvYmxpcXVlLCBib29sIHVzZUdESSk7
Ci0jZWxzZQotICAgIEZvbnRQbGF0Zm9ybURhdGEoY29uc3QgRm9udERlc2NyaXB0aW9uJiwgY29u
c3QgQXRvbWljU3RyaW5nJiBmYW1pbHkpOwotI2VuZGlmCi0KLSAgICBGb250UGxhdGZvcm1EYXRh
KGNhaXJvX2ZvbnRfZmFjZV90KiBmb250RmFjZSwgZmxvYXQgc2l6ZSwgYm9vbCBib2xkLCBib29s
IGl0YWxpYyk7Ci0gICAgRm9udFBsYXRmb3JtRGF0YShmbG9hdCBzaXplLCBib29sIGJvbGQsIGJv
b2wgaXRhbGljKTsKLSAgICBGb250UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEm
KTsKLQotICAgIH5Gb250UGxhdGZvcm1EYXRhKCk7Ci0KLSNpZiAhUExBVEZPUk0oV0lOKQotICAg
IHN0YXRpYyBib29sIGluaXQoKTsKLSNlbHNlCi0gICAgSEZPTlQgaGZvbnQoKSBjb25zdCB7IHJl
dHVybiBtX2ZvbnQtPmhhbmRsZSgpOyB9Ci0gICAgYm9vbCB1c2VHREkoKSBjb25zdCB7IHJldHVy
biBtX3VzZUdESTsgfQotICAgIGNhaXJvX2ZvbnRfZmFjZV90KiBmb250RmFjZSgpIGNvbnN0IHsg
cmV0dXJuIG1fZm9udEZhY2U7IH0KLSNlbmRpZgotCi0gICAgYm9vbCBpc0ZpeGVkUGl0Y2goKTsK
LSAgICBmbG9hdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9Ci0gICAgdm9pZCBzZXRT
aXplKGZsb2F0IHNpemUpIHsgbV9zaXplID0gc2l6ZTsgfQotICAgIGJvb2wgc3ludGhldGljQm9s
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3ludGhldGljQm9sZDsgfQotICAgIGJvb2wgc3ludGhldGlj
T2JsaXF1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3ludGhldGljT2JsaXF1ZTsgfQotCi0gICAgY2Fp
cm9fc2NhbGVkX2ZvbnRfdCogc2NhbGVkRm9udCgpIGNvbnN0IHsgcmV0dXJuIG1fc2NhbGVkRm9u
dDsgfQotCi0gICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0Ci0gICAgewotI2lmIFBMQVRGT1JNKFdJ
TikKLSAgICAgICAgcmV0dXJuIG1fZm9udC0+aGFzaCgpOwotI2Vsc2UKLSNpZiBkZWZpbmVkKFVT
RV9GUkVFVFlQRSkKLSAgICAgICAgaWYgKG1fcGF0dGVybikKLSAgICAgICAgICAgIHJldHVybiBG
Y1BhdHRlcm5IYXNoKG1fcGF0dGVybik7Ci0jZW5kaWYKLSAgICAgICAgdWludHB0cl90IGhhc2hD
b2Rlc1sxXSA9IHsgcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KG1fc2NhbGVkRm9udCkgfTsK
LSAgICAgICAgcmV0dXJuIFN0cmluZ0ltcGw6OmNvbXB1dGVIYXNoKHJlaW50ZXJwcmV0X2Nhc3Q8
VUNoYXIqPihoYXNoQ29kZXMpLCBzaXplb2YoaGFzaENvZGVzKSAvIHNpemVvZihVQ2hhcikpOwot
I2VuZGlmCi0gICAgfQotCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZvbnRQbGF0Zm9ybURh
dGEmKSBjb25zdDsKLSAgICBGb250UGxhdGZvcm1EYXRhJiBvcGVyYXRvcj0oY29uc3QgRm9udFBs
YXRmb3JtRGF0YSYpOwotICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdAot
ICAgIHsKLSNpZiBkZWZpbmVkKFVTRV9GUkVFVFlQRSkKLSAgICAgICAgcmV0dXJuIG1fcGF0dGVy
biA9PSBoYXNoVGFibGVEZWxldGVkRm9udFZhbHVlKCk7Ci0jZWxpZiBkZWZpbmVkKFVTRV9QQU5H
TykKLSAgICAgICAgcmV0dXJuIG1fZm9udCA9PSBoYXNoVGFibGVEZWxldGVkRm9udFZhbHVlKCk7
Ci0jZWxpZiBQTEFURk9STShXSU4pCi0gICAgICAgIHJldHVybiBtX2ZvbnQuaXNIYXNoVGFibGVE
ZWxldGVkVmFsdWUoKTsKLSNlbmRpZgotICAgIH0KLQotI2lmbmRlZiBOREVCVUcKLSAgICBTdHJp
bmcgZGVzY3JpcHRpb24oKSBjb25zdDsKLSNlbmRpZgotCi0jaWYgZGVmaW5lZChVU0VfRlJFRVRZ
UEUpCi0gICAgRmNQYXR0ZXJuKiBtX3BhdHRlcm47Ci0gICAgRmNGb250U2V0KiBtX2ZhbGxiYWNr
czsKLSNlbGlmIGRlZmluZWQoVVNFX1BBTkdPKQotICAgIHN0YXRpYyBQYW5nb0ZvbnRNYXAqIG1f
Zm9udE1hcDsKLSAgICBzdGF0aWMgR0hhc2hUYWJsZSogbV9oYXNoVGFibGU7Ci0KLSAgICBQYW5n
b0NvbnRleHQqIG1fY29udGV4dDsKLSAgICBQYW5nb0ZvbnQqIG1fZm9udDsKLSNlbGlmIFBMQVRG
T1JNKFdJTikKLXByaXZhdGU6Ci0gICAgdm9pZCBwbGF0Zm9ybURhdGFJbml0KEhGT05ULCBmbG9h
dCBzaXplLCBIREMsIFdDSEFSKiBmYWNlTmFtZSk7Ci0KLSAgICBSZWZQdHI8UmVmQ291bnRlZEdE
SUhhbmRsZTxIRk9OVD4gPiBtX2ZvbnQ7Ci0gICAgY2Fpcm9fZm9udF9mYWNlX3QqIG1fZm9udEZh
Y2U7Ci0gICAgYm9vbCBtX3VzZUdESTsKLSNlbHNlCi0jZXJyb3IgIk11c3QgZGVmaW5lZCBhIGZv
bnQgYmFja2VuZCIKLSNlbmRpZgotICAgIGZsb2F0IG1fc2l6ZTsKLSAgICBib29sIG1fc3ludGhl
dGljQm9sZDsKLSAgICBib29sIG1fc3ludGhldGljT2JsaXF1ZTsKLSAgICBjYWlyb19zY2FsZWRf
Zm9udF90KiBtX3NjYWxlZEZvbnQ7Ci1wcml2YXRlOgotI2lmIGRlZmluZWQoVVNFX0ZSRUVUWVBF
KQotICAgIHN0YXRpYyBGY1BhdHRlcm4gKmhhc2hUYWJsZURlbGV0ZWRGb250VmFsdWUoKSB7IHJl
dHVybiByZWludGVycHJldF9jYXN0PEZjUGF0dGVybio+KC0xKTsgfQotI2VsaWYgZGVmaW5lZChV
U0VfUEFOR08pCi0gICAgc3RhdGljIFBhbmdvRm9udCAqaGFzaFRhYmxlRGVsZXRlZEZvbnRWYWx1
ZSgpIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8UGFuZ29Gb250Kj4oLTEpOyB9Ci0jZW5kaWYK
LX07Ci0KLX0KLQotI2VuZGlmCisjZW5kaWYgLy8gRm9udFBsYXRmb3JtRGF0YV9oCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRQbGF0Zm9ybURhdGFDYWly
by5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRQbGF0Zm9ybURhdGFG
cmVlVHlwZS5jcHAKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIFdlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udFBsYXRmb3JtRGF0YUNhaXJvLmNwcApyZW5hbWUgdG8g
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250UGxhdGZvcm1EYXRhRnJlZVR5cGUu
Y3BwCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRQbGF0
Zm9ybURhdGFGcmVlVHlwZS5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250
UGxhdGZvcm1EYXRhRnJlZVR5cGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMGNmOWNkNjAxN2QzN2ZmMjA5MWFh
MTdlNWI2NzgzZDVkMjRlYzA1Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9Gb250UGxhdGZvcm1EYXRhRnJlZVR5cGUuaApAQCAtMCwwICsxLDEwMyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOCBBcHBsZSBJbmMuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDYgTWljaGFlbCBFbW1lbCBtaWtlLmVtbWVsQGdtYWlsLmNvbQorICog
Q29weXJpZ2h0IChDKSAyMDA3IEhvbGdlciBIYW5zIFBldGVyIEZyZXl0aGVyCisgKiBDb3B5cmln
aHQgKEMpIDIwMDcgUGlvbmVlciBSZXNlYXJjaCBDZW50ZXIgVVNBLCBJbmMuCisgKiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAq
CisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQor
ICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElm
IG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUx
IEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEs
IFVTQS4KKyAqCisgKi8KKworI2lmbmRlZiBGb250UGxhdGZvcm1EYXRhRnJlZVR5cGVfaAorI2Rl
ZmluZSBGb250UGxhdGZvcm1EYXRhRnJlZVR5cGVfaAorCisjaW5jbHVkZSAiRm9udERlc2NyaXB0
aW9uLmgiCisjaW5jbHVkZSAiR2x5cGhCdWZmZXIuaCIKKyNpbmNsdWRlIDxjYWlyby1mdC5oPgor
I2luY2x1ZGUgPGNhaXJvLmg+CisjaW5jbHVkZSA8Zm9udGNvbmZpZy9mY2ZyZWV0eXBlLmg+Cisj
aW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBG
b250UGxhdGZvcm1EYXRhIHsKK3B1YmxpYzoKKyAgICBGb250UGxhdGZvcm1EYXRhKFdURjo6SGFz
aFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkKKyAgICAgICAgOiBtX3BhdHRlcm4oaGFzaFRhYmxlRGVs
ZXRlZEZvbnRWYWx1ZSgpKQorICAgICAgICAsIG1fZmFsbGJhY2tzKDApCisgICAgICAgICwgbV9z
aXplKDApCisgICAgICAgICwgbV9zeW50aGV0aWNCb2xkKGZhbHNlKQorICAgICAgICAsIG1fc3lu
dGhldGljT2JsaXF1ZShmYWxzZSkKKyAgICAgICAgLCBtX3NjYWxlZEZvbnQoMCkKKyAgICAgICAg
eyB9CisKKyAgICBGb250UGxhdGZvcm1EYXRhKCkKKyAgICAgICAgOiBtX3BhdHRlcm4oMCkKKyAg
ICAgICAgLCBtX2ZhbGxiYWNrcygwKQorICAgICAgICAsIG1fc2l6ZSgwKQorICAgICAgICAsIG1f
c3ludGhldGljQm9sZChmYWxzZSkKKyAgICAgICAgLCBtX3N5bnRoZXRpY09ibGlxdWUoZmFsc2Up
CisgICAgICAgICwgbV9zY2FsZWRGb250KDApCisgICAgICAgIHsgfQorCisgICAgRm9udFBsYXRm
b3JtRGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mLCBjb25zdCBBdG9taWNTdHJpbmcmIGZhbWls
eSk7CisgICAgRm9udFBsYXRmb3JtRGF0YShjYWlyb19mb250X2ZhY2VfdCogZm9udEZhY2UsIGZs
b2F0IHNpemUsIGJvb2wgYm9sZCwgYm9vbCBpdGFsaWMpOworICAgIEZvbnRQbGF0Zm9ybURhdGEo
ZmxvYXQgc2l6ZSwgYm9vbCBib2xkLCBib29sIGl0YWxpYyk7CisgICAgRm9udFBsYXRmb3JtRGF0
YShjb25zdCBGb250UGxhdGZvcm1EYXRhJik7CisKKyAgICB+Rm9udFBsYXRmb3JtRGF0YSgpOwor
CisgICAgc3RhdGljIGJvb2wgaW5pdCgpOworICAgIGJvb2wgaXNGaXhlZFBpdGNoKCk7CisgICAg
ZmxvYXQgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQorICAgIHZvaWQgc2V0U2l6ZShm
bG9hdCBzaXplKSB7IG1fc2l6ZSA9IHNpemU7IH0KKyAgICBib29sIHN5bnRoZXRpY0JvbGQoKSBj
b25zdCB7IHJldHVybiBtX3N5bnRoZXRpY0JvbGQ7IH0KKyAgICBib29sIHN5bnRoZXRpY09ibGlx
dWUoKSBjb25zdCB7IHJldHVybiBtX3N5bnRoZXRpY09ibGlxdWU7IH0KKworICAgIGNhaXJvX3Nj
YWxlZF9mb250X3QqIHNjYWxlZEZvbnQoKSBjb25zdCB7IHJldHVybiBtX3NjYWxlZEZvbnQ7IH0K
KworICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKG1fcGF0dGVy
bikKKyAgICAgICAgICAgIHJldHVybiBGY1BhdHRlcm5IYXNoKG1fcGF0dGVybik7CisgICAgfQor
CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmKSBjb25zdDsKKyAg
ICBGb250UGxhdGZvcm1EYXRhJiBvcGVyYXRvcj0oY29uc3QgRm9udFBsYXRmb3JtRGF0YSYpOwor
ICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdAorICAgIHsKKyAgICAgICAg
cmV0dXJuIG1fcGF0dGVybiA9PSBoYXNoVGFibGVEZWxldGVkRm9udFZhbHVlKCk7CisgICAgfQor
CisjaWZuZGVmIE5ERUJVRworICAgIFN0cmluZyBkZXNjcmlwdGlvbigpIGNvbnN0OworI2VuZGlm
CisKKyAgICBGY1BhdHRlcm4qIG1fcGF0dGVybjsKKyAgICBGY0ZvbnRTZXQqIG1fZmFsbGJhY2tz
OworICAgIGZsb2F0IG1fc2l6ZTsKKyAgICBib29sIG1fc3ludGhldGljQm9sZDsKKyAgICBib29s
IG1fc3ludGhldGljT2JsaXF1ZTsKKyAgICBjYWlyb19zY2FsZWRfZm9udF90KiBtX3NjYWxlZEZv
bnQ7CisKK3ByaXZhdGU6CisgICAgc3RhdGljIEZjUGF0dGVybiAqaGFzaFRhYmxlRGVsZXRlZEZv
bnRWYWx1ZSgpIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8RmNQYXR0ZXJuKj4oLTEpOyB9Cit9
OworCit9CisKKyNlbmRpZiAvLyBGb250UGxhdGZvcm1EYXRhRnJlZVR5cGVfaApkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvRm9udENhY2hlUGFuZ28uY3BwIGIvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvRm9udENhY2hlUGFuZ28uY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmZhZDI5ZTBkNjhkZTQ1ZTMwNGEwNDE5NzE2ZWYwMzA3N2I5OWFmMWEKLS0tIC9kZXYvbnVsbAor
KysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9Gb250Q2FjaGVQYW5nby5jcHAKQEAg
LTAsMCArMSw2NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBBbHAgVG9rZXIgPGFscEBh
dG9rZXIuY29tPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0
aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisg
KiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICog
YWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5v
dCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZy
YW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVT
QS4KKyAqCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkZvbnRDYWNoZS5o
IgorCisjaW5jbHVkZSAiQ1N0cmluZy5oIgorI2luY2x1ZGUgIkZvbnQuaCIKKyNpbmNsdWRlICJP
d25QdHJDYWlyby5oIgorI2luY2x1ZGUgIlNpbXBsZUZvbnREYXRhLmgiCisjaW5jbHVkZSA8d3Rm
L0Fzc2VydGlvbnMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIEZvbnRDYWNoZTo6
cGxhdGZvcm1Jbml0KCkKK3sKKyAgICBpZiAoIUZvbnRQbGF0Zm9ybURhdGE6OmluaXQoKSkKKyAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK2NvbnN0IFNpbXBsZUZvbnREYXRhKiBG
b250Q2FjaGU6OmdldEZvbnREYXRhRm9yQ2hhcmFjdGVycyhjb25zdCBGb250JiBmb250LCBjb25z
dCBVQ2hhciogY2hhcmFjdGVycywgaW50IGxlbmd0aCkKK3sKKyAgICByZXR1cm4gMDsKK30KKwor
U2ltcGxlRm9udERhdGEqIEZvbnRDYWNoZTo6Z2V0U2ltaWxhckZvbnRQbGF0Zm9ybURhdGEoY29u
c3QgRm9udCYgZm9udCkKK3sKKyAgICByZXR1cm4gMDsKK30KKworU2ltcGxlRm9udERhdGEqIEZv
bnRDYWNoZTo6Z2V0TGFzdFJlc29ydEZhbGxiYWNrRm9udChjb25zdCBGb250RGVzY3JpcHRpb24m
IGZvbnREZXNjcmlwdGlvbikKK3sKKyAgICAvLyBGSVhNRTogV291bGQgYmUgZXZlbiBiZXR0ZXIg
dG8gc29tZWhvdyBnZXQgdGhlIHVzZXIncyBkZWZhdWx0IGZvbnQgaGVyZS4KKyAgICAvLyBGb3Ig
bm93IHdlJ2xsIHBpY2sgdGhlIGRlZmF1bHQgdGhhdCB0aGUgdXNlciB3b3VsZCBnZXQgd2l0aG91
dCBjaGFuZ2luZyBhbnkgcHJlZnMuCisgICAgc3RhdGljIEF0b21pY1N0cmluZyB0aW1lc1N0cigi
VGltZXMgTmV3IFJvbWFuIik7CisgICAgcmV0dXJuIGdldENhY2hlZEZvbnREYXRhKGZvbnREZXNj
cmlwdGlvbiwgdGltZXNTdHIpOworfQorCit2b2lkIEZvbnRDYWNoZTo6Z2V0VHJhaXRzSW5GYW1p
bHkoY29uc3QgQXRvbWljU3RyaW5nJiBmYW1pbHlOYW1lLCBWZWN0b3I8dW5zaWduZWQ+JiB0cmFp
dHNNYXNrcykKK3sKK30KKworRm9udFBsYXRmb3JtRGF0YSogRm9udENhY2hlOjpjcmVhdGVGb250
UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0aW9uLCBjb25z
dCBBdG9taWNTdHJpbmcmIGZhbWlseSkKK3sKKyAgICByZXR1cm4gbmV3IEZvbnRQbGF0Zm9ybURh
dGEoZm9udERlc2NyaXB0aW9uLCBmYW1pbHkpOworfQorCit9CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9Gb250UGxhdGZvcm1EYXRhUGFuZ28uaCBiL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0ZvbnRQbGF0Zm9ybURhdGFQYW5nby5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjdiMWU1MWYxNThjYzdkZDM1NTU2ODM3NjRlNDBiZmM5OWMwOTg3NzkKLS0tIC9kZXYvbnVsbAor
KysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9Gb250UGxhdGZvcm1EYXRhUGFuZ28u
aApAQCAtMCwwICsxLDEwMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAw
OCBBcHBsZSBJbmMuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgTWljaGFlbCBFbW1lbCBtaWtlLmVt
bWVsQGdtYWlsLmNvbQorICogQ29weXJpZ2h0IChDKSAyMDA3IEhvbGdlciBIYW5zIFBldGVyIEZy
ZXl0aGVyCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgUGlvbmVlciBSZXNlYXJjaCBDZW50ZXIgVVNB
LCBJbmMuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICog
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICog
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0
b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2lmbmRlZiBGb250UGxhdGZvcm1E
YXRhUGFuZ29faAorI2RlZmluZSBGb250UGxhdGZvcm1EYXRhUGFuZ29faAorCisjaW5jbHVkZSAi
Rm9udERlc2NyaXB0aW9uLmgiCisjaW5jbHVkZSAiR2x5cGhCdWZmZXIuaCIKKyNpbmNsdWRlIDxj
YWlyby5oPgorI2luY2x1ZGUgPHBhbmdvL3BhbmdvY2Fpcm8uaD4KKyNpbmNsdWRlIDx3dGYvRm9y
d2FyZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEZvbnRQbGF0Zm9ybURhdGEg
eworcHVibGljOgorICAgIEZvbnRQbGF0Zm9ybURhdGEoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFs
dWVUeXBlKQorICAgICAgICA6IG1fY29udGV4dCgwKQorICAgICAgICAsIG1fZm9udChoYXNoVGFi
bGVEZWxldGVkRm9udFZhbHVlKCkpCisgICAgICAgICwgbV9zaXplKDApCisgICAgICAgICwgbV9z
eW50aGV0aWNCb2xkKGZhbHNlKQorICAgICAgICAsIG1fc3ludGhldGljT2JsaXF1ZShmYWxzZSkK
KyAgICAgICAgLCBtX3NjYWxlZEZvbnQoMCkKKyAgICAgICAgeyB9CisKKyAgICBGb250UGxhdGZv
cm1EYXRhKCkKKyAgICAgICAgOiBtX2NvbnRleHQoMCkKKyAgICAgICAgLCBtX2ZvbnQoMCkKKyAg
ICAgICAgLCBtX3NpemUoMCkKKyAgICAgICAgLCBtX3N5bnRoZXRpY0JvbGQoZmFsc2UpCisgICAg
ICAgICwgbV9zeW50aGV0aWNPYmxpcXVlKGZhbHNlKQorICAgICAgICAsIG1fc2NhbGVkRm9udCgw
KQorICAgICAgICB7IH0KKworICAgIEZvbnRQbGF0Zm9ybURhdGEoY29uc3QgRm9udERlc2NyaXB0
aW9uJiwgY29uc3QgQXRvbWljU3RyaW5nJiBmYW1pbHkpOworICAgIEZvbnRQbGF0Zm9ybURhdGEo
Y2Fpcm9fZm9udF9mYWNlX3QqIGZvbnRGYWNlLCBmbG9hdCBzaXplLCBib29sIGJvbGQsIGJvb2wg
aXRhbGljKTsKKyAgICBGb250UGxhdGZvcm1EYXRhKGZsb2F0IHNpemUsIGJvb2wgYm9sZCwgYm9v
bCBpdGFsaWMpOworICAgIEZvbnRQbGF0Zm9ybURhdGEoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYp
OworICAgIH5Gb250UGxhdGZvcm1EYXRhKCk7CisKKyAgICBzdGF0aWMgYm9vbCBpbml0KCk7Cisg
ICAgYm9vbCBpc0ZpeGVkUGl0Y2goKTsKKyAgICBmbG9hdCBzaXplKCkgY29uc3QgeyByZXR1cm4g
bV9zaXplOyB9CisgICAgdm9pZCBzZXRTaXplKGZsb2F0IHNpemUpIHsgbV9zaXplID0gc2l6ZTsg
fQorICAgIGJvb2wgc3ludGhldGljQm9sZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3ludGhldGljQm9s
ZDsgfQorICAgIGJvb2wgc3ludGhldGljT2JsaXF1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3ludGhl
dGljT2JsaXF1ZTsgfQorCisgICAgY2Fpcm9fc2NhbGVkX2ZvbnRfdCogc2NhbGVkRm9udCgpIGNv
bnN0IHsgcmV0dXJuIG1fc2NhbGVkRm9udDsgfQorCisgICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0
CisgICAgeworICAgICAgICB1aW50cHRyX3QgaGFzaENvZGVzWzFdID0geyByZWludGVycHJldF9j
YXN0PHVpbnRwdHJfdD4obV9zY2FsZWRGb250KSB9OworICAgICAgICByZXR1cm4gU3RyaW5nSW1w
bDo6Y29tcHV0ZUhhc2gocmVpbnRlcnByZXRfY2FzdDxVQ2hhcio+KGhhc2hDb2RlcyksIHNpemVv
ZihoYXNoQ29kZXMpIC8gc2l6ZW9mKFVDaGFyKSk7CisgICAgfQorCisgICAgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmKSBjb25zdDsKKyAgICBGb250UGxhdGZvcm1EYXRh
JiBvcGVyYXRvcj0oY29uc3QgRm9udFBsYXRmb3JtRGF0YSYpOworICAgIGJvb2wgaXNIYXNoVGFi
bGVEZWxldGVkVmFsdWUoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZm9udCA9PSBo
YXNoVGFibGVEZWxldGVkRm9udFZhbHVlKCk7CisgICAgfQorCisjaWZuZGVmIE5ERUJVRworICAg
IFN0cmluZyBkZXNjcmlwdGlvbigpIGNvbnN0OworI2VuZGlmCisKKyAgICBzdGF0aWMgUGFuZ29G
b250TWFwKiBtX2ZvbnRNYXA7CisgICAgc3RhdGljIEdIYXNoVGFibGUqIG1faGFzaFRhYmxlOwor
ICAgIFBhbmdvQ29udGV4dCogbV9jb250ZXh0OworICAgIFBhbmdvRm9udCogbV9mb250OworICAg
IGZsb2F0IG1fc2l6ZTsKKyAgICBib29sIG1fc3ludGhldGljQm9sZDsKKyAgICBib29sIG1fc3lu
dGhldGljT2JsaXF1ZTsKKyAgICBjYWlyb19zY2FsZWRfZm9udF90KiBtX3NjYWxlZEZvbnQ7Citw
cml2YXRlOgorICAgIHN0YXRpYyBQYW5nb0ZvbnQgKmhhc2hUYWJsZURlbGV0ZWRGb250VmFsdWUo
KSB7IHJldHVybiByZWludGVycHJldF9jYXN0PFBhbmdvRm9udCo+KC0xKTsgfQorfTsKKworfQor
CisjZW5kaWYgLy8gRm9udFBsYXRmb3JtRGF0YVBhbmdvX2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFDYWlyb1dpbi5oIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YUNhaXJvV2luLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMDVmOWVhYjg1NGQyMGQwN2NkODU1ZjM3NjA4OGZiOWQzNjA0MDk2YQotLS0gL2Rldi9u
dWxsCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFD
YWlyb1dpbi5oCkBAIC0wLDAgKzEsMTA4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2LCAy
MDA3LCAyMDA4IEFwcGxlIEluYy4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBNaWNoYWVsIEVtbWVs
IG1pa2UuZW1tZWxAZ21haWwuY29tCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgSG9sZ2VyIEhhbnMg
UGV0ZXIgRnJleXRoZXIKKyAqIENvcHlyaWdodCAoQykgMjAwNyBQaW9uZWVyIFJlc2VhcmNoIENl
bnRlciBVU0EsIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICog
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K
KyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2Vl
IHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwK
KyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworCisjaWZuZGVmIEZvbnRQ
bGF0Zm9ybURhdGFDYWlyb1dpbl9oCisjZGVmaW5lIEZvbnRQbGF0Zm9ybURhdGFDYWlyb1dpbl9o
CisKKyNpbmNsdWRlICJGb250RGVzY3JpcHRpb24uaCIKKyNpbmNsdWRlICJHbHlwaEJ1ZmZlci5o
IgorI2luY2x1ZGUgIlJlZkNvdW50ZWRHRElIYW5kbGUuaCIKKyNpbmNsdWRlICJTdHJpbmdJbXBs
LmgiCisjaW5jbHVkZSA8Y2Fpcm8td2luMzIuaD4KKyNpbmNsdWRlIDxjYWlyby5oPgorI2luY2x1
ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKK3R5cGVkZWYgc3RydWN0IEhGT05UX18qIEhGT05UOworCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEZvbnRQbGF0Zm9ybURhdGEgeworcHVibGljOgor
ICAgIEZvbnRQbGF0Zm9ybURhdGEoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlKQorICAg
ICAgICA6IG1fZm9udEZhY2UoMCkKKyAgICAgICAgLCBtX3VzZUdESShmYWxzZSkKKyAgICAgICAg
LCBtX2ZvbnQoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWUpCisgICAgICAgICwgbV9zaXplKDAp
CisgICAgICAgICwgbV9zeW50aGV0aWNCb2xkKGZhbHNlKQorICAgICAgICAsIG1fc3ludGhldGlj
T2JsaXF1ZShmYWxzZSkKKyAgICAgICAgLCBtX3NjYWxlZEZvbnQoMCkKKyAgICAgICAgeyB9CisK
KyAgICBGb250UGxhdGZvcm1EYXRhKCkKKyAgICAgICAgOiBtX2ZvbnRGYWNlKDApCisgICAgICAg
ICwgbV91c2VHREkoZmFsc2UpCisgICAgICAgICwgbV9zaXplKDApCisgICAgICAgICwgbV9zeW50
aGV0aWNCb2xkKGZhbHNlKQorICAgICAgICAsIG1fc3ludGhldGljT2JsaXF1ZShmYWxzZSkKKyAg
ICAgICAgLCBtX3NjYWxlZEZvbnQoMCkKKyAgICAgICAgeyB9CisKKyAgICBGb250UGxhdGZvcm1E
YXRhKEhGT05ULCBmbG9hdCBzaXplLCBib29sIGJvbGQsIGJvb2wgb2JsaXF1ZSwgYm9vbCB1c2VH
REkpOworICAgIEZvbnRQbGF0Zm9ybURhdGEoY2Fpcm9fZm9udF9mYWNlX3QqIGZvbnRGYWNlLCBm
bG9hdCBzaXplLCBib29sIGJvbGQsIGJvb2wgaXRhbGljKTsKKyAgICBGb250UGxhdGZvcm1EYXRh
KGZsb2F0IHNpemUsIGJvb2wgYm9sZCwgYm9vbCBpdGFsaWMpOworICAgIEZvbnRQbGF0Zm9ybURh
dGEoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYpOworICAgIH5Gb250UGxhdGZvcm1EYXRhKCk7CisK
KyAgICBIRk9OVCBoZm9udCgpIGNvbnN0IHsgcmV0dXJuIG1fZm9udC0+aGFuZGxlKCk7IH0KKyAg
ICBib29sIHVzZUdESSgpIGNvbnN0IHsgcmV0dXJuIG1fdXNlR0RJOyB9CisgICAgY2Fpcm9fZm9u
dF9mYWNlX3QqIGZvbnRGYWNlKCkgY29uc3QgeyByZXR1cm4gbV9mb250RmFjZTsgfQorCisgICAg
Ym9vbCBpc0ZpeGVkUGl0Y2goKTsKKyAgICBmbG9hdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9z
aXplOyB9CisgICAgdm9pZCBzZXRTaXplKGZsb2F0IHNpemUpIHsgbV9zaXplID0gc2l6ZTsgfQor
ICAgIGJvb2wgc3ludGhldGljQm9sZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3ludGhldGljQm9sZDsg
fQorICAgIGJvb2wgc3ludGhldGljT2JsaXF1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3ludGhldGlj
T2JsaXF1ZTsgfQorICAgIGNhaXJvX3NjYWxlZF9mb250X3QqIHNjYWxlZEZvbnQoKSBjb25zdCB7
IHJldHVybiBtX3NjYWxlZEZvbnQ7IH0KKworICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdAorICAg
IHsKKyAgICAgICAgcmV0dXJuIG1fZm9udC0+aGFzaCgpOworICAgIH0KKworICAgIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBGb250UGxhdGZvcm1EYXRhJikgY29uc3Q7CisgICAgRm9udFBsYXRmb3Jt
RGF0YSYgb3BlcmF0b3I9KGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmKTsKKyAgICBib29sIGlzSGFz
aFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2ZvbnQu
aXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKTsKKyAgICB9CisKKyNpZm5kZWYgTkRFQlVHCisgICAg
U3RyaW5nIGRlc2NyaXB0aW9uKCkgY29uc3Q7CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICB2b2lk
IHBsYXRmb3JtRGF0YUluaXQoSEZPTlQsIGZsb2F0IHNpemUsIEhEQywgV0NIQVIqIGZhY2VOYW1l
KTsKKworICAgIFJlZlB0cjxSZWZDb3VudGVkR0RJSGFuZGxlPEhGT05UPiA+IG1fZm9udDsKKyAg
ICBjYWlyb19mb250X2ZhY2VfdCogbV9mb250RmFjZTsKKyAgICBib29sIG1fdXNlR0RJOworICAg
IGZsb2F0IG1fc2l6ZTsKKyAgICBib29sIG1fc3ludGhldGljQm9sZDsKKyAgICBib29sIG1fc3lu
dGhldGljT2JsaXF1ZTsKKyAgICBjYWlyb19zY2FsZWRfZm9udF90KiBtX3NjYWxlZEZvbnQ7Cit9
OworCit9CisKKyNlbmRpZiAvLyBGb250UGxhdGZvcm1EYXRhQ2Fpcm9XaW5faAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>