<?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>73452</bug_id>
          
          <creation_ts>2011-11-30 08:36:26 -0800</creation_ts>
          <short_desc>[Chromium] Add the FontCache implementation for Android</short_desc>
          <delta_ts>2011-12-01 14:08:35 -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>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</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>
          
          <blocked>66687</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Peter Beverloo">peter</reporter>
          <assigned_to name="Peter Beverloo">peter</assigned_to>
          <cc>abarth</cc>
    
    <cc>cc-bugs</cc>
    
    <cc>jamesr</cc>
    
    <cc>jrg</cc>
    
    <cc>steveblock</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>511776</commentid>
    <comment_count>0</comment_count>
    <who name="Peter Beverloo">peter</who>
    <bug_when>2011-11-30 08:36:26 -0800</bug_when>
    <thetext>Add the FontCache implementation specific for the Chromium WebKit port on Android, and include various font-related files intended for Linux which can be re-used by us.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>511777</commentid>
    <comment_count>1</comment_count>
      <attachid>117200</attachid>
    <who name="Peter Beverloo">peter</who>
    <bug_when>2011-11-30 08:37:37 -0800</bug_when>
    <thetext>Created attachment 117200
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>511857</commentid>
    <comment_count>2</comment_count>
      <attachid>117200</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-30 10:24:06 -0800</bug_when>
    <thetext>Comment on attachment 117200
Patch

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

&gt; Source/WebCore/platform/graphics/chromium/FontCacheAndroid.cpp:103
&gt; +const SimpleFontData* FontCache::getFontDataForCharacters(const Font&amp; font,
&gt; +                                                          const UChar* characters,
&gt; +                                                          int length)

One line, please.

&gt; Source/WebCore/platform/graphics/chromium/FontCacheAndroid.cpp:124
&gt; +    DEFINE_STATIC_LOCAL(const AtomicString, sansStr, (&quot;Sans&quot;));
&gt; +    DEFINE_STATIC_LOCAL(const AtomicString, serifStr, (&quot;Serif&quot;));
&gt; +    DEFINE_STATIC_LOCAL(const AtomicString, monospaceStr, (&quot;Monospace&quot;));

Please use complete words in variable names.

&gt; Source/WebCore/platform/graphics/chromium/FontCacheAndroid.cpp:145
&gt; +void FontCache::getTraitsInFamily(const AtomicString&amp; familyName,
&gt; +                                  Vector&lt;unsigned&gt;&amp; traitsMasks)

One line.

&gt; Source/WebCore/platform/graphics/chromium/FontCacheAndroid.cpp:151
&gt; +FontPlatformData* FontCache::createFontPlatformData(const FontDescription&amp; fontDescription,
&gt; +                                                    const AtomicString&amp; family)

One line.

&gt; Source/WebCore/platform/graphics/chromium/FontCacheAndroid.cpp:183
&gt; +            typeface-&gt;unref();

Can typeface be a RefPtr?

&gt; Source/WebCore/platform/graphics/chromium/FontCacheAndroid.cpp:191
&gt; +                             (style &amp; SkTypeface::kBold) &amp;&amp; !typeface-&gt;isBold(),
&gt; +                             (style &amp; SkTypeface::kItalic) &amp;&amp; !typeface-&gt;isItalic(),
&gt; +                             fontDescription.orientation(),
&gt; +                             fontDescription.textOrientation());

I would indent this to match the (</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>512663</commentid>
    <comment_count>3</comment_count>
      <attachid>117389</attachid>
    <who name="Peter Beverloo">peter</who>
    <bug_when>2011-12-01 03:10:27 -0800</bug_when>
    <thetext>Created attachment 117389
Patch for landing

Thank you for the review!

(In reply to comment #2)
&gt; (From update of attachment 117200 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=117200&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/FontCacheAndroid.cpp:103
&gt; &gt; +const SimpleFontData* FontCache::getFontDataForCharacters(const Font&amp; font,
&gt; &gt; +                                                          const UChar* characters,
&gt; &gt; +                                                          int length)
&gt; 
&gt; One line, please.

Done

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/FontCacheAndroid.cpp:124
&gt; &gt; +    DEFINE_STATIC_LOCAL(const AtomicString, sansStr, (&quot;Sans&quot;));
&gt; &gt; +    DEFINE_STATIC_LOCAL(const AtomicString, serifStr, (&quot;Serif&quot;));
&gt; &gt; +    DEFINE_STATIC_LOCAL(const AtomicString, monospaceStr, (&quot;Monospace&quot;));
&gt; 
&gt; Please use complete words in variable names.

Done, also sorted them by their time of usage.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/FontCacheAndroid.cpp:145
&gt; &gt; +void FontCache::getTraitsInFamily(const AtomicString&amp; familyName,
&gt; &gt; +                                  Vector&lt;unsigned&gt;&amp; traitsMasks)
&gt; 
&gt; One line.

Done

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/FontCacheAndroid.cpp:151
&gt; &gt; +FontPlatformData* FontCache::createFontPlatformData(const FontDescription&amp; fontDescription,
&gt; &gt; +                                                    const AtomicString&amp; family)
&gt; 
&gt; One line.

Done

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/FontCacheAndroid.cpp:183
&gt; &gt; +            typeface-&gt;unref();
&gt; 
&gt; Can typeface be a RefPtr?

I don&apos;t think so, as the reference counting is already being managed by Skia in SkRefCnt (which SkTypeface extends from).

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/FontCacheAndroid.cpp:191
&gt; &gt; +                             (style &amp; SkTypeface::kBold) &amp;&amp; !typeface-&gt;isBold(),
&gt; &gt; +                             (style &amp; SkTypeface::kItalic) &amp;&amp; !typeface-&gt;isItalic(),
&gt; &gt; +                             fontDescription.orientation(),
&gt; &gt; +                             fontDescription.textOrientation());
&gt; 
&gt; I would indent this to match the (

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>513088</commentid>
    <comment_count>4</comment_count>
      <attachid>117389</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-01 14:08:30 -0800</bug_when>
    <thetext>Comment on attachment 117389
Patch for landing

Clearing flags on attachment: 117389

Committed r101704: &lt;http://trac.webkit.org/changeset/101704&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>513089</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-01 14:08:35 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>117200</attachid>
            <date>2011-11-30 08:37:37 -0800</date>
            <delta_ts>2011-12-01 03:10:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>webkit-font.patch</filename>
            <type>text/plain</type>
            <size>12123</size>
            <attacher name="Peter Beverloo">peter</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBiYTliMWFiLi45MzJiNWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYg
QEAKKzIwMTEtMTEtMzAgIFBldGVyIEJldmVybG9vICA8cGV0ZXJAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIFtDaHJvbWl1bV0gQWRkIHRoZSBGb250Q2FjaGUgaW1wbGVtZW50YXRpb24gZm9yIEFu
ZHJvaWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcz
NDUyCisKKyAgICAgICAgQWRkIHRoZSBGb250Q2FjaGUgaW1wbGVtZW50YXRpb24gc3BlY2lmaWMg
Zm9yIHRoZSBDaHJvbWl1bSBXZWJLaXQKKyAgICAgICAgcG9ydCBvbiBBbmRyb2lkLCBhbmQgaW5j
bHVkZSB2YXJpb3VzIGZvbnQtcmVsYXRlZCBmaWxlcyBpbnRlbmRlZCBmb3IKKyAgICAgICAgTGlu
dXggd2hpY2ggY2FuIGJlIHJlLXVzZWQuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlLmd5cC9XZWJDb3JlLmd5cDoKKyAgICAgICAgKiBX
ZWJDb3JlLmd5cGk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udENh
Y2hlQW5kcm9pZC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Z2V0RmFsbGJhY2tGb250
TmFtZSk6CisgICAgICAgIChXZWJDb3JlOjppc0ZhbGxiYWNrRmFtaWx5KToKKyAgICAgICAgKFdl
YkNvcmU6OkZvbnRDYWNoZTo6cGxhdGZvcm1Jbml0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRD
YWNoZTo6Z2V0Rm9udERhdGFGb3JDaGFyYWN0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRD
YWNoZTo6Z2V0U2ltaWxhckZvbnRQbGF0Zm9ybURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Rm9u
dENhY2hlOjpnZXRMYXN0UmVzb3J0RmFsbGJhY2tGb250KToKKyAgICAgICAgKFdlYkNvcmU6OkZv
bnRDYWNoZTo6Z2V0VHJhaXRzSW5GYW1pbHkpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hl
OjpjcmVhdGVGb250UGxhdGZvcm1EYXRhKToKKwogMjAxMS0xMS0zMCAgS2VuaWNoaSBJc2hpYmFz
aGkgIDxiYXNoaUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQGZvbnQtZmFjZTogdW5xdW90ZWQg
bG9jYWwgZm9udCBuYW1lcyBjb250YWluaW5nIHNwYWNlcyBkb24ndCB3b3JrCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cC9XZWJDb3JlLmd5cCBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwCmluZGV4IDVmZTBjZTEuLjIyYTQ4YzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwCkBAIC0xNDcxLDcgKzE0NzEsOCBAQAogICAg
ICAgICAgICdzb3VyY2VzLyc6IFsKICAgICAgICAgICAgIFsnaW5jbHVkZScsICdwbGF0Zm9ybS9n
cmFwaGljcy9vcGVudHlwZS9PcGVuVHlwZVNhbml0aXplclxcLmNwcCQnXSwKICAgICAgICAgICBd
LAotICAgICAgICB9XSxbJ09TPT0ibWFjIiBhbmQgdXNlX3NraWE9PTAnLCB7CisgICAgICAgIH1d
LAorICAgICAgICBbJ09TPT0ibWFjIiBhbmQgdXNlX3NraWE9PTAnLCB7CiAgICAgICAgICAgJ3Nv
dXJjZXMvJzogWwogICAgICAgICAgICAgIyBUaGUgTWFjIGJ1aWxkIGlzIFBMQVRGT1JNX0NHIHRv
by4gIHBsYXRmb3JtL2dyYXBoaWNzL2NnIGlzIHRoZQogICAgICAgICAgICAgIyBvbmx5IHBsYWNl
IHRoYXQgQ0cgZmlsZXMgd2Ugd2FudCB0byBidWlsZCBhcmUgbG9jYXRlZCwgYW5kIG5vdApAQCAt
MTQ3OSw3ICsxNDgwLDggQEAKICAgICAgICAgICAgICMgcmVnZXhwIG1hdGNoaW5nIHRoZWlyIGRp
cmVjdG9yeS4KICAgICAgICAgICAgIFsnaW5jbHVkZScsICdwbGF0Zm9ybS9ncmFwaGljcy9jZy9b
Xi9dKig/PCFXaW4pP1xcLihjcHB8bW0/KSQnXSwKICAgICAgICAgICBdLAotICAgICAgICB9XSxb
J09TPT0ibWFjIicsIHsKKyAgICAgICAgfV0sCisgICAgICAgIFsnT1M9PSJtYWMiJywgewogICAg
ICAgICAgICMgTmVjZXNzYXJ5IGZvciBNYWMgLm1tIHN0dWZmLgogICAgICAgICAgICdpbmNsdWRl
X2RpcnMnOiBbCiAgICAgICAgICAgICAnPChjaHJvbWl1bV9zcmNfZGlyKS90aGlyZF9wYXJ0eS9h
cHBsZV93ZWJraXQnLApAQCAtMTYzOSw2ICsxNjQxLDIxIEBACiAgICAgICAgICAgICBbJ2luY2x1
ZGUnLCAncGxhdGZvcm0vd2luL1N5c3RlbUluZm9cXC5jcHAkJ10sCiAgICAgICAgICAgXSwKICAg
ICAgICAgfV0sCisgICAgICAgIFsnT1M9PSJhbmRyb2lkIicsIHsKKyAgICAgICAgICAnc291cmNl
cy8nOiBbCisgICAgICAgICAgICBbJ2luY2x1ZGUnLCAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vQ29tcGxleFRleHRDb250cm9sbGVyTGludXhcXC5jcHAkJ10sCisgICAgICAgICAgICBbJ2lu
Y2x1ZGUnLCAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udExpbnV4XFwuY3BwJCddLAor
ICAgICAgICAgICAgWydpbmNsdWRlJywgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRQ
bGF0Zm9ybURhdGFMaW51eFxcLmNwcCQnXSwKKyAgICAgICAgICAgIFsnaW5jbHVkZScsICdwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HbHlwaFBhZ2VUcmVlTm9kZUxpbnV4XFwuY3BwJCddLAor
ICAgICAgICAgICAgWydpbmNsdWRlJywgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NpbXBs
ZUZvbnREYXRhTGludXhcXC5jcHAkJ10sCisgICAgICAgICAgICBbJ2luY2x1ZGUnLCAncGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vSGFyZmJ1enpTa2lhXFwuY3BwJCddLAorICAgICAgICAgICAg
WydpbmNsdWRlJywgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZETVhQYXJzZXJcXC5jcHAk
J10sCisgICAgICAgICAgXSwKKyAgICAgICAgfSwgeyAjIE9TIT0iYW5kcm9pZCIKKyAgICAgICAg
ICAnc291cmNlcy8nOiBbCisgICAgICAgICAgICBbJ2V4Y2x1ZGUnLCAnQW5kcm9pZFxcLmNwcCQn
XSwKKyAgICAgICAgICBdLAorICAgICAgICB9XSwKICAgICAgIF0sCiAgICAgfSwKICAgICAjIFRo
ZSAqTkVPTi5jcHAgZmlsZXMgZmFpbCB0byBjb21waWxlIHdoZW4gLW10aHVtYiBpcyBwYXNzZWQu
IEZvcmNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggMjM3NDlhZi4uODhiNzM2NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaQpAQCAtMzQ5NSw2ICszNDk1LDcgQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9Dcm9zc1Byb2Nlc3NGb250TG9hZGluZy5tbScsCiAgICAgICAgICAgICAncGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRHJhd2luZ0J1ZmZlckNocm9taXVtLmNwcCcsCiAgICAg
ICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRXh0ZW5zaW9uczNEQ2hyb21pdW0u
aCcsCisgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udENhY2hlQW5k
cm9pZC5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRD
YWNoZUNocm9taXVtV2luLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vRm9udENhY2hlTGludXguY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9Gb250Q2hyb21pdW1XaW4uY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRDYWNoZUFuZHJvaWQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udENhY2hlQW5kcm9pZC5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTg5ODg4MwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRD
YWNoZUFuZHJvaWQuY3BwCkBAIC0wLDAgKzEsMTk4IEBACisvKgorICogQ29weXJpZ2h0IChjKSAy
MDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
KyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkZvbnRDYWNoZS5oIgorCisjaW5jbHVkZSAiRm9udC5oIgorI2luY2x1ZGUgIkZvbnRE
ZXNjcmlwdGlvbi5oIgorI2luY2x1ZGUgIkZvbnRQbGF0Zm9ybURhdGEuaCIKKyNpbmNsdWRlICJO
b3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIlBsYXRmb3JtU3VwcG9ydC5oIgorI2luY2x1ZGUg
IlNpbXBsZUZvbnREYXRhLmgiCisKKyNpbmNsdWRlICJTa1BhaW50LmgiCisjaW5jbHVkZSAiU2tU
eXBlZmFjZS5oIgorI2luY2x1ZGUgIlNrVXRpbHMuaCIKKworI2luY2x1ZGUgPHVuaWNvZGUvbG9j
aWQuaD4KKyNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0
b21pY1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitzdGF0aWMgY29uc3QgY2hhciogZ2V0RmFsbGJhY2tGb250TmFtZShjb25z
dCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbikKK3sKKyAgICBzd2l0Y2ggKGZvbnRE
ZXNjcmlwdGlvbi5nZW5lcmljRmFtaWx5KCkpIHsKKyAgICBjYXNlIEZvbnREZXNjcmlwdGlvbjo6
U3RhbmRhcmRGYW1pbHk6CisgICAgY2FzZSBGb250RGVzY3JpcHRpb246OlNlcmlmRmFtaWx5Ogor
ICAgICAgICByZXR1cm4gInNlcmlmIjsKKyAgICBjYXNlIEZvbnREZXNjcmlwdGlvbjo6U2Fuc1Nl
cmlmRmFtaWx5OgorICAgICAgICByZXR1cm4gInNhbnMtc2VyaWYiOworICAgIGNhc2UgRm9udERl
c2NyaXB0aW9uOjpNb25vc3BhY2VGYW1pbHk6CisgICAgICAgIHJldHVybiAibW9ub3NwYWNlIjsK
KyAgICBjYXNlIEZvbnREZXNjcmlwdGlvbjo6Q3Vyc2l2ZUZhbWlseToKKyAgICAgICAgcmV0dXJu
ICJjdXJzaXZlIjsKKyAgICBjYXNlIEZvbnREZXNjcmlwdGlvbjo6RmFudGFzeUZhbWlseToKKyAg
ICAgICAgcmV0dXJuICJmYW50YXN5IjsKKyAgICBjYXNlIEZvbnREZXNjcmlwdGlvbjo6Tm9GYW1p
bHk6CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuICIiOworICAgIH0KK30KKworc3RhdGlj
IGJvb2wgaXNGYWxsYmFja0ZhbWlseShTdHJpbmcgZmFtaWx5KQoreworICAgIHJldHVybiBmYW1p
bHkuc3RhcnRzV2l0aCgiLXdlYmtpdC0iKQorICAgICAgICB8fCBlcXVhbElnbm9yaW5nQ2FzZShm
YW1pbHksICJzZXJpZiIpCisgICAgICAgIHx8IGVxdWFsSWdub3JpbmdDYXNlKGZhbWlseSwgInNh
bnMtc2VyaWYiKQorICAgICAgICB8fCBlcXVhbElnbm9yaW5nQ2FzZShmYW1pbHksICJzYW5zIikK
KyAgICAgICAgfHwgZXF1YWxJZ25vcmluZ0Nhc2UoZmFtaWx5LCAibW9ub3NwYWNlIikKKyAgICAg
ICAgfHwgZXF1YWxJZ25vcmluZ0Nhc2UoZmFtaWx5LCAiY3Vyc2l2ZSIpCisgICAgICAgIHx8IGVx
dWFsSWdub3JpbmdDYXNlKGZhbWlseSwgImZhbnRhc3kiKQorICAgICAgICB8fCBlcXVhbElnbm9y
aW5nQ2FzZShmYW1pbHksICJ0aW1lcyIpIC8vIFNraWEgYWxpYXNlcyBmb3Igc2VyaWYKKyAgICAg
ICAgfHwgZXF1YWxJZ25vcmluZ0Nhc2UoZmFtaWx5LCAidGltZXMgbmV3IHJvbWFuIikKKyAgICAg
ICAgfHwgZXF1YWxJZ25vcmluZ0Nhc2UoZmFtaWx5LCAicGFsYXRpbm8iKQorICAgICAgICB8fCBl
cXVhbElnbm9yaW5nQ2FzZShmYW1pbHksICJnZW9yZ2lhIikKKyAgICAgICAgfHwgZXF1YWxJZ25v
cmluZ0Nhc2UoZmFtaWx5LCAiYmFza2VydmlsbGUiKQorICAgICAgICB8fCBlcXVhbElnbm9yaW5n
Q2FzZShmYW1pbHksICJnb3VkeSIpCisgICAgICAgIHx8IGVxdWFsSWdub3JpbmdDYXNlKGZhbWls
eSwgIklUQyBTdG9uZSBTZXJpZiIpCisgICAgICAgIHx8IGVxdWFsSWdub3JpbmdDYXNlKGZhbWls
eSwgImFyaWFsIikgLy8gU2tpYSBhbGlhc2VzIGZvciBzYW5zLXNlcmlmCisgICAgICAgIHx8IGVx
dWFsSWdub3JpbmdDYXNlKGZhbWlseSwgImhlbHZldGljYSIpCisgICAgICAgIHx8IGVxdWFsSWdu
b3JpbmdDYXNlKGZhbWlseSwgInRhaG9tYSIpCisgICAgICAgIHx8IGVxdWFsSWdub3JpbmdDYXNl
KGZhbWlseSwgInZlcmRhbmEiKQorICAgICAgICB8fCBlcXVhbElnbm9yaW5nQ2FzZShmYW1pbHks
ICJjb3VyaWVyIikgLy8gU2tpYSBhbGlhc2VzIGZvciBtb25vc3BhY2UKKyAgICAgICAgfHwgZXF1
YWxJZ25vcmluZ0Nhc2UoZmFtaWx5LCAiY291cmllciBuZXciKQorICAgICAgICB8fCBlcXVhbEln
bm9yaW5nQ2FzZShmYW1pbHksICJtb25hY28iKTsKK30KKwordm9pZCBGb250Q2FjaGU6OnBsYXRm
b3JtSW5pdCgpCit7Cit9CisKK2NvbnN0IFNpbXBsZUZvbnREYXRhKiBGb250Q2FjaGU6OmdldEZv
bnREYXRhRm9yQ2hhcmFjdGVycyhjb25zdCBGb250JiBmb250LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFVDaGFyKiBjaGFy
YWN0ZXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludCBsZW5ndGgpCit7CisgICAgaWN1OjpMb2NhbGUgbG9jYWxlID0gaWN1OjpM
b2NhbGU6OmdldERlZmF1bHQoKTsKKyAgICBQbGF0Zm9ybVN1cHBvcnQ6OkZvbnRGYW1pbHkgZmFt
aWx5OworICAgIFBsYXRmb3JtU3VwcG9ydDo6Z2V0Rm9udEZhbWlseUZvckNoYXJhY3RlcnMoY2hh
cmFjdGVycywgbGVuZ3RoLCBsb2NhbGUuZ2V0TGFuZ3VhZ2UoKSwgJmZhbWlseSk7CisgICAgaWYg
KGZhbWlseS5uYW1lLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBBdG9taWNT
dHJpbmcgYXRvbWljRmFtaWx5KGZhbWlseS5uYW1lKTsKKyAgICByZXR1cm4gZ2V0Q2FjaGVkRm9u
dERhdGEoZ2V0Q2FjaGVkRm9udFBsYXRmb3JtRGF0YShmb250LmZvbnREZXNjcmlwdGlvbigpLCBh
dG9taWNGYW1pbHksIERvTm90UmV0YWluKSwgRG9Ob3RSZXRhaW4pOworfQorCitTaW1wbGVGb250
RGF0YSogRm9udENhY2hlOjpnZXRTaW1pbGFyRm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250JiBm
b250KQoreworICAgIHJldHVybiAwOworfQorCitTaW1wbGVGb250RGF0YSogRm9udENhY2hlOjpn
ZXRMYXN0UmVzb3J0RmFsbGJhY2tGb250KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZGVzY3JpcHRp
b24sIFNob3VsZFJldGFpbiBzaG91bGRSZXRhaW4pCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NB
TChjb25zdCBBdG9taWNTdHJpbmcsIHNhbnNTdHIsICgiU2FucyIpKTsKKyAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKGNvbnN0IEF0b21pY1N0cmluZywgc2VyaWZTdHIsICgiU2VyaWYiKSk7CisgICAg
REVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIG1vbm9zcGFjZVN0ciwgKCJN
b25vc3BhY2UiKSk7CisKKyAgICBGb250UGxhdGZvcm1EYXRhKiBmb250UGxhdGZvcm1EYXRhID0g
MDsKKyAgICBzd2l0Y2ggKGRlc2NyaXB0aW9uLmdlbmVyaWNGYW1pbHkoKSkgeworICAgIGNhc2Ug
Rm9udERlc2NyaXB0aW9uOjpTZXJpZkZhbWlseToKKyAgICAgICAgZm9udFBsYXRmb3JtRGF0YSA9
IGdldENhY2hlZEZvbnRQbGF0Zm9ybURhdGEoZGVzY3JpcHRpb24sIHNlcmlmU3RyKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBGb250RGVzY3JpcHRpb246Ok1vbm9zcGFjZUZhbWlseToKKyAg
ICAgICAgZm9udFBsYXRmb3JtRGF0YSA9IGdldENhY2hlZEZvbnRQbGF0Zm9ybURhdGEoZGVzY3Jp
cHRpb24sIG1vbm9zcGFjZVN0cik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRm9udERlc2Ny
aXB0aW9uOjpTYW5zU2VyaWZGYW1pbHk6CisgICAgZGVmYXVsdDoKKyAgICAgICAgZm9udFBsYXRm
b3JtRGF0YSA9IGdldENhY2hlZEZvbnRQbGF0Zm9ybURhdGEoZGVzY3JpcHRpb24sIHNhbnNTdHIp
OworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBBU1NFUlQoZm9udFBsYXRmb3JtRGF0YSk7
CisgICAgcmV0dXJuIGdldENhY2hlZEZvbnREYXRhKGZvbnRQbGF0Zm9ybURhdGEsIHNob3VsZFJl
dGFpbik7Cit9CisKK3ZvaWQgRm9udENhY2hlOjpnZXRUcmFpdHNJbkZhbWlseShjb25zdCBBdG9t
aWNTdHJpbmcmIGZhbWlseU5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VmVjdG9yPHVuc2lnbmVkPiYgdHJhaXRzTWFza3MpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
K30KKworRm9udFBsYXRmb3JtRGF0YSogRm9udENhY2hlOjpjcmVhdGVGb250UGxhdGZvcm1EYXRh
KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0aW9uLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYg
ZmFtaWx5KQoreworICAgIGNvbnN0IGNoYXIqIG5hbWUgPSAwOworCisgICAgLy8gSWYgYSBmYWxs
YmFjayBmb250IGlzIGJlaW5nIGNyZWF0ZWQgKGUuZy4gIi13ZWJraXQtbW9ub3NwYWNlIiksIGNv
bnZlcnQKKyAgICAvLyBpdCBpbiB0byB0aGUgZmFsbGJhY2sgbmFtZSAoZS5nLiAibW9ub3NwYWNl
IikuCisgICAgaWYgKCFmYW1pbHkubGVuZ3RoKCkgfHwgZmFtaWx5LnN0YXJ0c1dpdGgoIi13ZWJr
aXQtIikpCisgICAgICAgIG5hbWUgPSBnZXRGYWxsYmFja0ZvbnROYW1lKGZvbnREZXNjcmlwdGlv
bik7CisgICAgZWxzZQorICAgICAgICBuYW1lID0gZmFtaWx5LnN0cmluZygpLnV0ZjgoKS5kYXRh
KCk7CisKKyAgICBpbnQgc3R5bGUgPSBTa1R5cGVmYWNlOjprTm9ybWFsOworICAgIGlmIChmb250
RGVzY3JpcHRpb24ud2VpZ2h0KCkgPj0gRm9udFdlaWdodEJvbGQpCisgICAgICAgIHN0eWxlIHw9
IFNrVHlwZWZhY2U6OmtCb2xkOworICAgIGlmIChmb250RGVzY3JpcHRpb24uaXRhbGljKCkpCisg
ICAgICAgIHN0eWxlIHw9IFNrVHlwZWZhY2U6OmtJdGFsaWM7CisKKyAgICBTa1R5cGVmYWNlKiB0
eXBlZmFjZSA9IFNrVHlwZWZhY2U6OkNyZWF0ZUZyb21OYW1lKG5hbWUsIFNrVHlwZWZhY2U6OmtO
b3JtYWwpOworICAgIEZvbnRQbGF0Zm9ybURhdGEqIHJlc3VsdCA9IDA7CisKKyAgICAvLyBDcmVh
dGVGcm9tTmFtZSBhbHdheXMgcmV0dXJucyBhIHR5cGVmYWNlLCBmYWxsaW5nIGJhY2sgdG8gYSBk
ZWZhdWx0IGZvbnQKKyAgICAvLyBpZiB0aGUgb25lIHJlcXVlc3RlZCBjb3VsZCBub3QgYmUgZm91
bmQuIENhbGxpbmcgRXF1YWwoKSB3aXRoIGEgbnVsbAorICAgIC8vIHBvaW50ZXIgd2lsbCBjb21w
YXJlIHRoZSByZXR1cm5lZCBmb250IGFnYWluc3QgdGhlIGRlZmF1bHQsIHdpdGggdGhlCisgICAg
Ly8gY2F2ZWF0IHRoYXQgdGhlIGRlZmF1bHQgaXMgYWx3YXlzIG9mIG5vcm1hbCBzdHlsZS4gV2hl
biB0aGF0IGhhcHBlbnMsCisgICAgLy8gaWdub3JlIHRoZSBkZWZhdWx0IGZvbnQgYW5kIGFsbG93
IFdlYkNvcmUgdG8gcHJvdmlkZSB0aGUgbmV4dCBmb250IG9uIHRoZQorICAgIC8vIENTUyBmYWxs
YmFjayBsaXN0LiBUaGUgb25seSBleGNlcHRpb24gdG8gdGhpcyBvY2N1cnMgd2hlbiB0aGUgZmFt
aWx5IG5hbWUKKyAgICAvLyBpcyBhIGNvbW1vbmx5IHVzZWQgZ2VuZXJpYyBmYW1pbHksIHdoaWNo
IGlzIHRoZSBjYXNlIHdoZW4gY2FsbGVkIGJ5CisgICAgLy8gZ2V0U2ltaWxhckZvbnRQbGF0Zm9y
bURhdGEoKSBvciBnZXRMYXN0UmVzb3J0RmFsbGJhY2tGb250KCkuIEluIHRoYXQgY2FzZQorICAg
IC8vIHRoZSBkZWZhdWx0IGZvbnQgaXMgYW4gYWNjZXB0YWJsZSByZXN1bHQuCisKKyAgICBpZiAo
IVNrVHlwZWZhY2U6OkVxdWFsKHR5cGVmYWNlLCAwKSB8fCBpc0ZhbGxiYWNrRmFtaWx5KGZhbWls
eS5zdHJpbmcoKSkpIHsKKyAgICAgICAgaWYgKHN0eWxlICE9IFNrVHlwZWZhY2U6OmtOb3JtYWwp
IHsKKyAgICAgICAgICAgIHR5cGVmYWNlLT51bnJlZigpOworICAgICAgICAgICAgdHlwZWZhY2Ug
PSBTa1R5cGVmYWNlOjpDcmVhdGVGcm9tTmFtZShuYW1lLCBzdGF0aWNfY2FzdDxTa1R5cGVmYWNl
OjpTdHlsZT4oc3R5bGUpKTsKKyAgICAgICAgfQorCisgICAgICAgIHJlc3VsdCA9IG5ldyBGb250
UGxhdGZvcm1EYXRhKHR5cGVmYWNlLCBuYW1lLCBmb250RGVzY3JpcHRpb24uY29tcHV0ZWRTaXpl
KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdHlsZSAmIFNrVHlwZWZhY2U6OmtC
b2xkKSAmJiAhdHlwZWZhY2UtPmlzQm9sZCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAoc3R5bGUgJiBTa1R5cGVmYWNlOjprSXRhbGljKSAmJiAhdHlwZWZhY2UtPmlzSXRhbGljKCks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5vcmllbnRhdGlv
bigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250RGVzY3JpcHRpb24udGV4dE9y
aWVudGF0aW9uKCkpOworICAgIH0KKworICAgIHR5cGVmYWNlLT51bnJlZigpOworICAgIHJldHVy
biByZXN1bHQ7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>
<flag name="review"
          id="116560"
          type_id="1"
          status="+"
          setter="abarth"
    />
    <flag name="commit-queue"
          id="116561"
          type_id="3"
          status="-"
          setter="abarth"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>117389</attachid>
            <date>2011-12-01 03:10:27 -0800</date>
            <delta_ts>2011-12-01 14:08:30 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>webkit-font-2.patch</filename>
            <type>text/plain</type>
            <size>11915</size>
            <attacher name="Peter Beverloo">peter</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAxNzhkNWYzLi40MjNhMDE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYg
QEAKKzIwMTEtMTEtMzAgIFBldGVyIEJldmVybG9vICA8cGV0ZXJAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIFtDaHJvbWl1bV0gQWRkIHRoZSBGb250Q2FjaGUgaW1wbGVtZW50YXRpb24gZm9yIEFu
ZHJvaWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcz
NDUyCisKKyAgICAgICAgQWRkIHRoZSBGb250Q2FjaGUgaW1wbGVtZW50YXRpb24gc3BlY2lmaWMg
Zm9yIHRoZSBDaHJvbWl1bSBXZWJLaXQKKyAgICAgICAgcG9ydCBvbiBBbmRyb2lkLCBhbmQgaW5j
bHVkZSB2YXJpb3VzIGZvbnQtcmVsYXRlZCBmaWxlcyBpbnRlbmRlZCBmb3IKKyAgICAgICAgTGlu
dXggd2hpY2ggY2FuIGJlIHJlLXVzZWQuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0
aC4KKworICAgICAgICAqIFdlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwOgorICAgICAgICAqIFdlYkNv
cmUuZ3lwaToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250Q2FjaGVB
bmRyb2lkLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpnZXRGYWxsYmFja0ZvbnROYW1l
KToKKyAgICAgICAgKFdlYkNvcmU6OmlzRmFsbGJhY2tGYW1pbHkpOgorICAgICAgICAoV2ViQ29y
ZTo6Rm9udENhY2hlOjpwbGF0Zm9ybUluaXQpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hl
OjpnZXRGb250RGF0YUZvckNoYXJhY3RlcnMpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hl
OjpnZXRTaW1pbGFyRm9udFBsYXRmb3JtRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2Fj
aGU6OmdldExhc3RSZXNvcnRGYWxsYmFja0ZvbnQpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENh
Y2hlOjpnZXRUcmFpdHNJbkZhbWlseSk6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FjaGU6OmNy
ZWF0ZUZvbnRQbGF0Zm9ybURhdGEpOgorCiAyMDExLTEyLTAxICBQaGlsaXBwZSBOb3JtYW5kICA8
cG5vcm1hbmRAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBXZWJBdWRpbyB3YXYgcmVzb3Vy
Y2VzIGFjY2VzcyBhbmQgbWFuYWdlbWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5neXAvV2ViQ29yZS5neXAgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cC9XZWJDb3Jl
Lmd5cAppbmRleCA1ZmUwY2UxLi4yMmE0OGMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cC9XZWJDb3JlLmd5cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cC9X
ZWJDb3JlLmd5cApAQCAtMTQ3MSw3ICsxNDcxLDggQEAKICAgICAgICAgICAnc291cmNlcy8nOiBb
CiAgICAgICAgICAgICBbJ2luY2x1ZGUnLCAncGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3Bl
blR5cGVTYW5pdGl6ZXJcXC5jcHAkJ10sCiAgICAgICAgICAgXSwKLSAgICAgICAgfV0sWydPUz09
Im1hYyIgYW5kIHVzZV9za2lhPT0wJywgeworICAgICAgICB9XSwKKyAgICAgICAgWydPUz09Im1h
YyIgYW5kIHVzZV9za2lhPT0wJywgewogICAgICAgICAgICdzb3VyY2VzLyc6IFsKICAgICAgICAg
ICAgICMgVGhlIE1hYyBidWlsZCBpcyBQTEFURk9STV9DRyB0b28uICBwbGF0Zm9ybS9ncmFwaGlj
cy9jZyBpcyB0aGUKICAgICAgICAgICAgICMgb25seSBwbGFjZSB0aGF0IENHIGZpbGVzIHdlIHdh
bnQgdG8gYnVpbGQgYXJlIGxvY2F0ZWQsIGFuZCBub3QKQEAgLTE0NzksNyArMTQ4MCw4IEBACiAg
ICAgICAgICAgICAjIHJlZ2V4cCBtYXRjaGluZyB0aGVpciBkaXJlY3RvcnkuCiAgICAgICAgICAg
ICBbJ2luY2x1ZGUnLCAncGxhdGZvcm0vZ3JhcGhpY3MvY2cvW14vXSooPzwhV2luKT9cXC4oY3Bw
fG1tPykkJ10sCiAgICAgICAgICAgXSwKLSAgICAgICAgfV0sWydPUz09Im1hYyInLCB7CisgICAg
ICAgIH1dLAorICAgICAgICBbJ09TPT0ibWFjIicsIHsKICAgICAgICAgICAjIE5lY2Vzc2FyeSBm
b3IgTWFjIC5tbSBzdHVmZi4KICAgICAgICAgICAnaW5jbHVkZV9kaXJzJzogWwogICAgICAgICAg
ICAgJzwoY2hyb21pdW1fc3JjX2RpcikvdGhpcmRfcGFydHkvYXBwbGVfd2Via2l0JywKQEAgLTE2
MzksNiArMTY0MSwyMSBAQAogICAgICAgICAgICAgWydpbmNsdWRlJywgJ3BsYXRmb3JtL3dpbi9T
eXN0ZW1JbmZvXFwuY3BwJCddLAogICAgICAgICAgIF0sCiAgICAgICAgIH1dLAorICAgICAgICBb
J09TPT0iYW5kcm9pZCInLCB7CisgICAgICAgICAgJ3NvdXJjZXMvJzogWworICAgICAgICAgICAg
WydpbmNsdWRlJywgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbXBsZXhUZXh0Q29udHJv
bGxlckxpbnV4XFwuY3BwJCddLAorICAgICAgICAgICAgWydpbmNsdWRlJywgJ3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0ZvbnRMaW51eFxcLmNwcCQnXSwKKyAgICAgICAgICAgIFsnaW5jbHVk
ZScsICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250UGxhdGZvcm1EYXRhTGludXhcXC5j
cHAkJ10sCisgICAgICAgICAgICBbJ2luY2x1ZGUnLCAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vR2x5cGhQYWdlVHJlZU5vZGVMaW51eFxcLmNwcCQnXSwKKyAgICAgICAgICAgIFsnaW5jbHVk
ZScsICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TaW1wbGVGb250RGF0YUxpbnV4XFwuY3Bw
JCddLAorICAgICAgICAgICAgWydpbmNsdWRlJywgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0hhcmZidXp6U2tpYVxcLmNwcCQnXSwKKyAgICAgICAgICAgIFsnaW5jbHVkZScsICdwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9WRE1YUGFyc2VyXFwuY3BwJCddLAorICAgICAgICAgIF0sCisg
ICAgICAgIH0sIHsgIyBPUyE9ImFuZHJvaWQiCisgICAgICAgICAgJ3NvdXJjZXMvJzogWworICAg
ICAgICAgICAgWydleGNsdWRlJywgJ0FuZHJvaWRcXC5jcHAkJ10sCisgICAgICAgICAgXSwKKyAg
ICAgICAgfV0sCiAgICAgICBdLAogICAgIH0sCiAgICAgIyBUaGUgKk5FT04uY3BwIGZpbGVzIGZh
aWwgdG8gY29tcGlsZSB3aGVuIC1tdGh1bWIgaXMgcGFzc2VkLiBGb3JjZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBp
CmluZGV4IDdjZmY0OTAuLjIzNDI2ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTM1MDAsNiArMzUw
MCw3IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ3Jvc3NQcm9j
ZXNzRm9udExvYWRpbmcubW0nLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0RyYXdpbmdCdWZmZXJDaHJvbWl1bS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0V4dGVuc2lvbnMzRENocm9taXVtLmgnLAorICAgICAgICAgICAgJ3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRDYWNoZUFuZHJvaWQuY3BwJywKICAgICAgICAg
ICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250Q2FjaGVDaHJvbWl1bVdpbi5jcHAn
LAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRDYWNoZUxpbnV4
LmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udENocm9t
aXVtV2luLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9Gb250Q2FjaGVBbmRyb2lkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRDYWNoZUFuZHJvaWQuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjgyNTg5YmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250Q2FjaGVBbmRyb2lkLmNwcApAQCAt
MCwwICsxLDE5NCBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxMSBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICog
bWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICog
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAq
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJGb250Q2FjaGUuaCIK
KworI2luY2x1ZGUgIkZvbnQuaCIKKyNpbmNsdWRlICJGb250RGVzY3JpcHRpb24uaCIKKyNpbmNs
dWRlICJGb250UGxhdGZvcm1EYXRhLmgiCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNp
bmNsdWRlICJQbGF0Zm9ybVN1cHBvcnQuaCIKKyNpbmNsdWRlICJTaW1wbGVGb250RGF0YS5oIgor
CisjaW5jbHVkZSAiU2tQYWludC5oIgorI2luY2x1ZGUgIlNrVHlwZWZhY2UuaCIKKyNpbmNsdWRl
ICJTa1V0aWxzLmgiCisKKyNpbmNsdWRlIDx1bmljb2RlL2xvY2lkLmg+CisjaW5jbHVkZSA8d3Rm
L0Fzc2VydGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGlj
IGNvbnN0IGNoYXIqIGdldEZhbGxiYWNrRm9udE5hbWUoY29uc3QgRm9udERlc2NyaXB0aW9uJiBm
b250RGVzY3JpcHRpb24pCit7CisgICAgc3dpdGNoIChmb250RGVzY3JpcHRpb24uZ2VuZXJpY0Zh
bWlseSgpKSB7CisgICAgY2FzZSBGb250RGVzY3JpcHRpb246OlN0YW5kYXJkRmFtaWx5OgorICAg
IGNhc2UgRm9udERlc2NyaXB0aW9uOjpTZXJpZkZhbWlseToKKyAgICAgICAgcmV0dXJuICJzZXJp
ZiI7CisgICAgY2FzZSBGb250RGVzY3JpcHRpb246OlNhbnNTZXJpZkZhbWlseToKKyAgICAgICAg
cmV0dXJuICJzYW5zLXNlcmlmIjsKKyAgICBjYXNlIEZvbnREZXNjcmlwdGlvbjo6TW9ub3NwYWNl
RmFtaWx5OgorICAgICAgICByZXR1cm4gIm1vbm9zcGFjZSI7CisgICAgY2FzZSBGb250RGVzY3Jp
cHRpb246OkN1cnNpdmVGYW1pbHk6CisgICAgICAgIHJldHVybiAiY3Vyc2l2ZSI7CisgICAgY2Fz
ZSBGb250RGVzY3JpcHRpb246OkZhbnRhc3lGYW1pbHk6CisgICAgICAgIHJldHVybiAiZmFudGFz
eSI7CisgICAgY2FzZSBGb250RGVzY3JpcHRpb246Ok5vRmFtaWx5OgorICAgIGRlZmF1bHQ6Cisg
ICAgICAgIHJldHVybiAiIjsKKyAgICB9Cit9CisKK3N0YXRpYyBib29sIGlzRmFsbGJhY2tGYW1p
bHkoU3RyaW5nIGZhbWlseSkKK3sKKyAgICByZXR1cm4gZmFtaWx5LnN0YXJ0c1dpdGgoIi13ZWJr
aXQtIikKKyAgICAgICAgfHwgZXF1YWxJZ25vcmluZ0Nhc2UoZmFtaWx5LCAic2VyaWYiKQorICAg
ICAgICB8fCBlcXVhbElnbm9yaW5nQ2FzZShmYW1pbHksICJzYW5zLXNlcmlmIikKKyAgICAgICAg
fHwgZXF1YWxJZ25vcmluZ0Nhc2UoZmFtaWx5LCAic2FucyIpCisgICAgICAgIHx8IGVxdWFsSWdu
b3JpbmdDYXNlKGZhbWlseSwgIm1vbm9zcGFjZSIpCisgICAgICAgIHx8IGVxdWFsSWdub3JpbmdD
YXNlKGZhbWlseSwgImN1cnNpdmUiKQorICAgICAgICB8fCBlcXVhbElnbm9yaW5nQ2FzZShmYW1p
bHksICJmYW50YXN5IikKKyAgICAgICAgfHwgZXF1YWxJZ25vcmluZ0Nhc2UoZmFtaWx5LCAidGlt
ZXMiKSAvLyBTa2lhIGFsaWFzZXMgZm9yIHNlcmlmCisgICAgICAgIHx8IGVxdWFsSWdub3JpbmdD
YXNlKGZhbWlseSwgInRpbWVzIG5ldyByb21hbiIpCisgICAgICAgIHx8IGVxdWFsSWdub3JpbmdD
YXNlKGZhbWlseSwgInBhbGF0aW5vIikKKyAgICAgICAgfHwgZXF1YWxJZ25vcmluZ0Nhc2UoZmFt
aWx5LCAiZ2VvcmdpYSIpCisgICAgICAgIHx8IGVxdWFsSWdub3JpbmdDYXNlKGZhbWlseSwgImJh
c2tlcnZpbGxlIikKKyAgICAgICAgfHwgZXF1YWxJZ25vcmluZ0Nhc2UoZmFtaWx5LCAiZ291ZHki
KQorICAgICAgICB8fCBlcXVhbElnbm9yaW5nQ2FzZShmYW1pbHksICJJVEMgU3RvbmUgU2VyaWYi
KQorICAgICAgICB8fCBlcXVhbElnbm9yaW5nQ2FzZShmYW1pbHksICJhcmlhbCIpIC8vIFNraWEg
YWxpYXNlcyBmb3Igc2Fucy1zZXJpZgorICAgICAgICB8fCBlcXVhbElnbm9yaW5nQ2FzZShmYW1p
bHksICJoZWx2ZXRpY2EiKQorICAgICAgICB8fCBlcXVhbElnbm9yaW5nQ2FzZShmYW1pbHksICJ0
YWhvbWEiKQorICAgICAgICB8fCBlcXVhbElnbm9yaW5nQ2FzZShmYW1pbHksICJ2ZXJkYW5hIikK
KyAgICAgICAgfHwgZXF1YWxJZ25vcmluZ0Nhc2UoZmFtaWx5LCAiY291cmllciIpIC8vIFNraWEg
YWxpYXNlcyBmb3IgbW9ub3NwYWNlCisgICAgICAgIHx8IGVxdWFsSWdub3JpbmdDYXNlKGZhbWls
eSwgImNvdXJpZXIgbmV3IikKKyAgICAgICAgfHwgZXF1YWxJZ25vcmluZ0Nhc2UoZmFtaWx5LCAi
bW9uYWNvIik7Cit9CisKK3ZvaWQgRm9udENhY2hlOjpwbGF0Zm9ybUluaXQoKQoreworfQorCitj
b25zdCBTaW1wbGVGb250RGF0YSogRm9udENhY2hlOjpnZXRGb250RGF0YUZvckNoYXJhY3RlcnMo
Y29uc3QgRm9udCYgZm9udCwgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIGludCBsZW5ndGgpCit7
CisgICAgaWN1OjpMb2NhbGUgbG9jYWxlID0gaWN1OjpMb2NhbGU6OmdldERlZmF1bHQoKTsKKyAg
ICBQbGF0Zm9ybVN1cHBvcnQ6OkZvbnRGYW1pbHkgZmFtaWx5OworICAgIFBsYXRmb3JtU3VwcG9y
dDo6Z2V0Rm9udEZhbWlseUZvckNoYXJhY3RlcnMoY2hhcmFjdGVycywgbGVuZ3RoLCBsb2NhbGUu
Z2V0TGFuZ3VhZ2UoKSwgJmZhbWlseSk7CisgICAgaWYgKGZhbWlseS5uYW1lLmlzRW1wdHkoKSkK
KyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBBdG9taWNTdHJpbmcgYXRvbWljRmFtaWx5KGZhbWls
eS5uYW1lKTsKKyAgICByZXR1cm4gZ2V0Q2FjaGVkRm9udERhdGEoZ2V0Q2FjaGVkRm9udFBsYXRm
b3JtRGF0YShmb250LmZvbnREZXNjcmlwdGlvbigpLCBhdG9taWNGYW1pbHksIERvTm90UmV0YWlu
KSwgRG9Ob3RSZXRhaW4pOworfQorCitTaW1wbGVGb250RGF0YSogRm9udENhY2hlOjpnZXRTaW1p
bGFyRm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250JiBmb250KQoreworICAgIHJldHVybiAwOwor
fQorCitTaW1wbGVGb250RGF0YSogRm9udENhY2hlOjpnZXRMYXN0UmVzb3J0RmFsbGJhY2tGb250
KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24sIFNob3VsZFJldGFpbiBzaG91bGRS
ZXRhaW4pCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIHNl
cmlmLCAoIlNlcmlmIikpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3Ry
aW5nLCBtb25vc3BhY2UsICgiTW9ub3NwYWNlIikpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwo
Y29uc3QgQXRvbWljU3RyaW5nLCBzYW5zLCAoIlNhbnMiKSk7CisKKyAgICBGb250UGxhdGZvcm1E
YXRhKiBmb250UGxhdGZvcm1EYXRhID0gMDsKKyAgICBzd2l0Y2ggKGRlc2NyaXB0aW9uLmdlbmVy
aWNGYW1pbHkoKSkgeworICAgIGNhc2UgRm9udERlc2NyaXB0aW9uOjpTZXJpZkZhbWlseToKKyAg
ICAgICAgZm9udFBsYXRmb3JtRGF0YSA9IGdldENhY2hlZEZvbnRQbGF0Zm9ybURhdGEoZGVzY3Jp
cHRpb24sIHNlcmlmKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBGb250RGVzY3JpcHRpb246
Ok1vbm9zcGFjZUZhbWlseToKKyAgICAgICAgZm9udFBsYXRmb3JtRGF0YSA9IGdldENhY2hlZEZv
bnRQbGF0Zm9ybURhdGEoZGVzY3JpcHRpb24sIG1vbm9zcGFjZSk7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgRm9udERlc2NyaXB0aW9uOjpTYW5zU2VyaWZGYW1pbHk6CisgICAgZGVmYXVsdDoK
KyAgICAgICAgZm9udFBsYXRmb3JtRGF0YSA9IGdldENhY2hlZEZvbnRQbGF0Zm9ybURhdGEoZGVz
Y3JpcHRpb24sIHNhbnMpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBBU1NFUlQoZm9u
dFBsYXRmb3JtRGF0YSk7CisgICAgcmV0dXJuIGdldENhY2hlZEZvbnREYXRhKGZvbnRQbGF0Zm9y
bURhdGEsIHNob3VsZFJldGFpbik7Cit9CisKK3ZvaWQgRm9udENhY2hlOjpnZXRUcmFpdHNJbkZh
bWlseShjb25zdCBBdG9taWNTdHJpbmcmIGZhbWlseU5hbWUsIFZlY3Rvcjx1bnNpZ25lZD4mIHRy
YWl0c01hc2tzKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK0ZvbnRQbGF0Zm9ybURh
dGEqIEZvbnRDYWNoZTo6Y3JlYXRlRm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250RGVzY3JpcHRp
b24mIGZvbnREZXNjcmlwdGlvbiwgY29uc3QgQXRvbWljU3RyaW5nJiBmYW1pbHkpCit7CisgICAg
Y29uc3QgY2hhciogbmFtZSA9IDA7CisKKyAgICAvLyBJZiBhIGZhbGxiYWNrIGZvbnQgaXMgYmVp
bmcgY3JlYXRlZCAoZS5nLiAiLXdlYmtpdC1tb25vc3BhY2UiKSwgY29udmVydAorICAgIC8vIGl0
IGluIHRvIHRoZSBmYWxsYmFjayBuYW1lIChlLmcuICJtb25vc3BhY2UiKS4KKyAgICBpZiAoIWZh
bWlseS5sZW5ndGgoKSB8fCBmYW1pbHkuc3RhcnRzV2l0aCgiLXdlYmtpdC0iKSkKKyAgICAgICAg
bmFtZSA9IGdldEZhbGxiYWNrRm9udE5hbWUoZm9udERlc2NyaXB0aW9uKTsKKyAgICBlbHNlCisg
ICAgICAgIG5hbWUgPSBmYW1pbHkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKTsKKworICAgIGludCBz
dHlsZSA9IFNrVHlwZWZhY2U6OmtOb3JtYWw7CisgICAgaWYgKGZvbnREZXNjcmlwdGlvbi53ZWln
aHQoKSA+PSBGb250V2VpZ2h0Qm9sZCkKKyAgICAgICAgc3R5bGUgfD0gU2tUeXBlZmFjZTo6a0Jv
bGQ7CisgICAgaWYgKGZvbnREZXNjcmlwdGlvbi5pdGFsaWMoKSkKKyAgICAgICAgc3R5bGUgfD0g
U2tUeXBlZmFjZTo6a0l0YWxpYzsKKworICAgIFNrVHlwZWZhY2UqIHR5cGVmYWNlID0gU2tUeXBl
ZmFjZTo6Q3JlYXRlRnJvbU5hbWUobmFtZSwgU2tUeXBlZmFjZTo6a05vcm1hbCk7CisgICAgRm9u
dFBsYXRmb3JtRGF0YSogcmVzdWx0ID0gMDsKKworICAgIC8vIENyZWF0ZUZyb21OYW1lIGFsd2F5
cyByZXR1cm5zIGEgdHlwZWZhY2UsIGZhbGxpbmcgYmFjayB0byBhIGRlZmF1bHQgZm9udAorICAg
IC8vIGlmIHRoZSBvbmUgcmVxdWVzdGVkIGNvdWxkIG5vdCBiZSBmb3VuZC4gQ2FsbGluZyBFcXVh
bCgpIHdpdGggYSBudWxsCisgICAgLy8gcG9pbnRlciB3aWxsIGNvbXBhcmUgdGhlIHJldHVybmVk
IGZvbnQgYWdhaW5zdCB0aGUgZGVmYXVsdCwgd2l0aCB0aGUKKyAgICAvLyBjYXZlYXQgdGhhdCB0
aGUgZGVmYXVsdCBpcyBhbHdheXMgb2Ygbm9ybWFsIHN0eWxlLiBXaGVuIHRoYXQgaGFwcGVucywK
KyAgICAvLyBpZ25vcmUgdGhlIGRlZmF1bHQgZm9udCBhbmQgYWxsb3cgV2ViQ29yZSB0byBwcm92
aWRlIHRoZSBuZXh0IGZvbnQgb24gdGhlCisgICAgLy8gQ1NTIGZhbGxiYWNrIGxpc3QuIFRoZSBv
bmx5IGV4Y2VwdGlvbiB0byB0aGlzIG9jY3VycyB3aGVuIHRoZSBmYW1pbHkgbmFtZQorICAgIC8v
IGlzIGEgY29tbW9ubHkgdXNlZCBnZW5lcmljIGZhbWlseSwgd2hpY2ggaXMgdGhlIGNhc2Ugd2hl
biBjYWxsZWQgYnkKKyAgICAvLyBnZXRTaW1pbGFyRm9udFBsYXRmb3JtRGF0YSgpIG9yIGdldExh
c3RSZXNvcnRGYWxsYmFja0ZvbnQoKS4gSW4gdGhhdCBjYXNlCisgICAgLy8gdGhlIGRlZmF1bHQg
Zm9udCBpcyBhbiBhY2NlcHRhYmxlIHJlc3VsdC4KKworICAgIGlmICghU2tUeXBlZmFjZTo6RXF1
YWwodHlwZWZhY2UsIDApIHx8IGlzRmFsbGJhY2tGYW1pbHkoZmFtaWx5LnN0cmluZygpKSkgewor
ICAgICAgICBpZiAoc3R5bGUgIT0gU2tUeXBlZmFjZTo6a05vcm1hbCkgeworICAgICAgICAgICAg
dHlwZWZhY2UtPnVucmVmKCk7CisgICAgICAgICAgICB0eXBlZmFjZSA9IFNrVHlwZWZhY2U6OkNy
ZWF0ZUZyb21OYW1lKG5hbWUsIHN0YXRpY19jYXN0PFNrVHlwZWZhY2U6OlN0eWxlPihzdHlsZSkp
OworICAgICAgICB9CisKKyAgICAgICAgcmVzdWx0ID0gbmV3IEZvbnRQbGF0Zm9ybURhdGEodHlw
ZWZhY2UsIG5hbWUsIGZvbnREZXNjcmlwdGlvbi5jb21wdXRlZFNpemUoKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0eWxlICYgU2tUeXBlZmFjZTo6a0JvbGQpICYm
ICF0eXBlZmFjZS0+aXNCb2xkKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIChzdHlsZSAmIFNrVHlwZWZhY2U6OmtJdGFsaWMpICYmICF0eXBlZmFjZS0+aXNJdGFsaWMo
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udERlc2NyaXB0aW9u
Lm9yaWVudGF0aW9uKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZv
bnREZXNjcmlwdGlvbi50ZXh0T3JpZW50YXRpb24oKSk7CisgICAgfQorCisgICAgdHlwZWZhY2Ut
PnVucmVmKCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>