<?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>79216</bug_id>
          
          <creation_ts>2012-02-22 02:43:19 -0800</creation_ts>
          <short_desc>[BlackBerry] Upstream helper classes for skia</short_desc>
          <delta_ts>2012-02-24 05:03:34 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>Other</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>73119</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Robin Cao">robin.webkit</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>charles.wei</cc>
    
    <cc>leo.yang</cc>
    
    <cc>rwlbuis</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>561790</commentid>
    <comment_count>0</comment_count>
    <who name="Robin Cao">robin.webkit</who>
    <bug_when>2012-02-22 02:43:19 -0800</bug_when>
    <thetext>Add helper classes in platform/graphics/blackberry/skia
    ImageBufferData.h
    PlatformSupport.cpp
    PlatformSupport.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561795</commentid>
    <comment_count>1</comment_count>
      <attachid>128166</attachid>
    <who name="Robin Cao">robin.webkit</who>
    <bug_when>2012-02-22 02:49:55 -0800</bug_when>
    <thetext>Created attachment 128166
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563837</commentid>
    <comment_count>2</comment_count>
      <attachid>128166</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2012-02-23 19:24:32 -0800</bug_when>
    <thetext>Comment on attachment 128166
patch

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

&gt; Source/WebCore/platform/graphics/blackberry/skia/PlatformSupport.cpp:100
&gt; +    FcBool b;
&gt; +    int i;

b and i does not make it easy to understand their use.

&gt; Source/WebCore/platform/graphics/blackberry/skia/PlatformSupport.cpp:114
&gt; +#if 0
&gt; +    // FIXME: Fontconfig tells us to use aggressive hinting, but FreeType breaks with our Adobe fonts
&gt; +    if (FcPatternGetInteger(match, FC_HINT_STYLE, 0, &amp;i) == FcResultMatch)
&gt; +         out-&gt;hintStyle = i;
&gt; +#endif

up to drop this comment?

&gt; Source/WebCore/platform/graphics/blackberry/skia/PlatformSupport.cpp:147
&gt; +        if (U16_IS_SURROGATE(characters[i])
&gt; +         &amp;&amp; U16_IS_SURROGATE_LEAD(characters[i])
&gt; +         &amp;&amp; i != numCharacters - 1
&gt; +         &amp;&amp; U16_IS_TRAIL(characters[i + 1])) {
&gt; +              FcCharSetAddChar(cset, U16_GET_SUPPLEMENTARY(characters[i], characters[i+1]));
&gt; +          i++;
&gt; +        } else
&gt; +              FcCharSetAddChar(cset, characters[i]);

wrong code style (indentation)

&gt; Source/WebCore/platform/graphics/blackberry/skia/PlatformSupport.cpp:198
&gt; +        }
&gt; +        int weight;

add blank line between these two

&gt; Source/WebCore/platform/graphics/blackberry/skia/PlatformSupport.cpp:203
&gt; +            family-&gt;isBold = false;
&gt; +        int slant;

ditto

&gt; Source/WebCore/platform/graphics/blackberry/skia/PlatformSupport.cpp:208
&gt; +            family-&gt;isItalic = false;
&gt; +        FcFontSetDestroy(fontSet);

ditto

&gt; Source/WebCore/platform/graphics/blackberry/skia/PlatformSupport.h:43
&gt; +// This is a minimal version of the Chromium PlatformSupport/WebFontInfo classes used for font support
&gt; +
&gt; +class PlatformSupport {

drop blank line, add &quot;.&quot; at the end</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563951</commentid>
    <comment_count>3</comment_count>
    <who name="Robin Cao">robin.webkit</who>
    <bug_when>2012-02-23 22:50:12 -0800</bug_when>
    <thetext>Thanks for the review. Will address your comments before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563973</commentid>
    <comment_count>4</comment_count>
      <attachid>128660</attachid>
    <who name="Robin Cao">robin.webkit</who>
    <bug_when>2012-02-23 23:13:24 -0800</bug_when>
    <thetext>Created attachment 128660
Updated patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563981</commentid>
    <comment_count>5</comment_count>
      <attachid>128660</attachid>
    <who name="Leo Yang">leo.yang</who>
    <bug_when>2012-02-23 23:23:24 -0800</bug_when>
    <thetext>Comment on attachment 128660
Updated patch for landing

Sending to cq...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564215</commentid>
    <comment_count>6</comment_count>
      <attachid>128660</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-24 05:03:29 -0800</bug_when>
    <thetext>Comment on attachment 128660
Updated patch for landing

Clearing flags on attachment: 128660

Committed r108775: &lt;http://trac.webkit.org/changeset/108775&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564216</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-24 05:03:34 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128166</attachid>
            <date>2012-02-22 02:49:55 -0800</date>
            <delta_ts>2012-02-23 23:13:16 -0800</delta_ts>
            <desc>patch</desc>
            <filename>bug-79216-20120222185000.patch</filename>
            <type>text/plain</type>
            <size>14348</size>
            <attacher name="Robin Cao">robin.webkit</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4NDYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzExOTI1NDczNmNmNDNm
NmU2MzRmMjc4NGQyZWZmN2Y0NjFjNTlkYy4uNGNlNDZhYzQxNjMxNWM1MDVmNWJlNjgyYzhkZWQx
ZTQ1ZTU4MWM1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDEyLTAyLTIyICBSb2Jp
biBDYW8gIDxyb2Jpbi5jYW9AdG9yY2htb2JpbGUuY29tLmNuPgorCisgICAgICAgIFtCbGFja0Jl
cnJ5XSBVcHN0cmVhbSBoZWxwZXIgY2xhc3NlcyBmb3Igc2tpYQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzkyMTYKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbml0aWFsIHVwc3RyZWFtaW5nLCBubyBuZXcg
dGVzdHMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L3NraWEvSW1h
Z2VCdWZmZXJEYXRhLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChJbWFn
ZUJ1ZmZlckRhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvc2tp
YS9QbGF0Zm9ybVN1cHBvcnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6c2V0Rm9udFJlbmRlclN0eWxlRGVmYXVsdHMpOgorICAgICAgICAoV2ViQ29y
ZTo6UGxhdGZvcm1TdXBwb3J0OjpnZXRSZW5kZXJTdHlsZUZvclN0cmlrZSk6CisgICAgICAgIChX
ZWJDb3JlOjpQbGF0Zm9ybVN1cHBvcnQ6OmdldEZvbnRGYW1pbHlGb3JDaGFyYWN0ZXJzKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L3NraWEvUGxhdGZvcm1TdXBwb3J0
Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChQbGF0Zm9ybVN1cHBvcnQp
OgorICAgICAgICAoRm9udEZhbWlseSk6CisKIDIwMTItMDItMjIgIFJ5b3N1a2UgTml3YSAgPHJu
aXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmVtb3ZlIHRoZSByZW1haW5pbmcgdXNlcyBvZiBD
U1NTdHlsZURlY2xhcmF0aW9uIGluIEVkaXRvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9za2lhL0ltYWdlQnVmZmVyRGF0YS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9za2lhL0ltYWdlQnVmZmVy
RGF0YS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmUyZTE0NDgyZjkwZjhhNzMzNDMyOGJiNjNjNzA5MzZhMDdhZmNj
ZDUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9i
bGFja2JlcnJ5L3NraWEvSW1hZ2VCdWZmZXJEYXRhLmgKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAq
IENvcHlyaWdodCAoYykgMjAwOCwgMjAwOSwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIAorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKiAKKyAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
CisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqIAorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAq
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIEltYWdlQnVmZmVyRGF0YV9oCisjZGVmaW5lIEltYWdlQnVmZmVyRGF0YV9oCisK
KyNpbmNsdWRlICJCbGFja0JlcnJ5UGxhdGZvcm1HcmFwaGljcy5oIgorI2luY2x1ZGUgIlBsYXRm
b3JtQ29udGV4dFNraWEuaCIKKworI2luY2x1ZGUgInNraWEvZXh0L3BsYXRmb3JtX2NhbnZhcy5o
IgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEltYWdlQnVmZmVyRGF0YSB7CitwdWJs
aWM6CisgICAgSW1hZ2VCdWZmZXJEYXRhKGNvbnN0IEludFNpemUmKTsKKworICAgIE93blB0cjxT
a0NhbnZhcz4gbV9jYW52YXM7CisgICAgUGxhdGZvcm1Db250ZXh0U2tpYSBtX3BsYXRmb3JtQ29u
dGV4dDsKKyAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6R3JhcGhpY3M6OkJ1ZmZlciogbV9idWZm
ZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBJbWFnZUJ1ZmZl
ckRhdGFfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxh
Y2tiZXJyeS9za2lhL1BsYXRmb3JtU3VwcG9ydC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ibGFja2JlcnJ5L3NraWEvUGxhdGZvcm1TdXBwb3J0LmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4zYmY1MWM0MjFlOWMxZmZhZDk4YmU1MWU2NjY1NGE5NjUxMjc3ZDFlCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9za2lhL1Bs
YXRmb3JtU3VwcG9ydC5jcHAKQEAgLTAsMCArMSwyMTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMp
IDIwMDktMjAxMCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoYykgMjAxMSwgUmVzZWFyY2ggSW4gTW90aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0
cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisg
KiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVN1cHBvcnQuaCIKKworI2luY2x1ZGUgIkZv
bnRSZW5kZXJTdHlsZS5oIgorCisjaW5jbHVkZSA8Zm9udGNvbmZpZy9mb250Y29uZmlnLmg+Cisj
aW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8dW5pY29kZS91dGYxNi5oPgorI2luY2x1ZGUg
PHd0Zi90ZXh0L0NTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgdm9p
ZCBzZXRGb250UmVuZGVyU3R5bGVEZWZhdWx0cyhGb250UmVuZGVyU3R5bGUqIHN0eWxlKQorewor
ICAgIHN0eWxlLT51c2VCaXRtYXBzID0gMjsKKyAgICBzdHlsZS0+dXNlQXV0b0hpbnQgPSAyOwor
ICAgIHN0eWxlLT51c2VIaW50aW5nID0gMjsKKyAgICBzdHlsZS0+aGludFN0eWxlID0gMDsKKyAg
ICBzdHlsZS0+dXNlQW50aUFsaWFzID0gMjsKKyAgICBzdHlsZS0+dXNlU3VicGl4ZWwgPSAyOwor
fQorCit2b2lkIFBsYXRmb3JtU3VwcG9ydDo6Z2V0UmVuZGVyU3R5bGVGb3JTdHJpa2UoY29uc3Qg
Y2hhciogZmFtaWx5LCBpbnQgc2l6ZUFuZFN0eWxlLCBGb250UmVuZGVyU3R5bGUqIG91dCkKK3sK
KyAgICBib29sIGlzQm9sZCA9IHNpemVBbmRTdHlsZSAmIDE7CisgICAgYm9vbCBpc0l0YWxpYyA9
IHNpemVBbmRTdHlsZSAmIDI7CisgICAgaW50IHBpeGVsU2l6ZSA9IHNpemVBbmRTdHlsZSA+PiAy
OworCisgICAgRmNQYXR0ZXJuKiBwYXR0ZXJuID0gRmNQYXR0ZXJuQ3JlYXRlKCk7CisgICAgRmNW
YWx1ZSBmY3ZhbHVlOworCisgICAgZmN2YWx1ZS50eXBlID0gRmNUeXBlU3RyaW5nOworICAgIGZj
dmFsdWUudS5zID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBGY0NoYXI4ICo+KGZhbWlseSk7Cisg
ICAgRmNQYXR0ZXJuQWRkKHBhdHRlcm4sIEZDX0ZBTUlMWSwgZmN2YWx1ZSwgRmNGYWxzZSk7CisK
KyAgICBmY3ZhbHVlLnR5cGUgPSBGY1R5cGVJbnRlZ2VyOworICAgIGZjdmFsdWUudS5pID0gaXNC
b2xkID8gRkNfV0VJR0hUX0JPTEQgOiBGQ19XRUlHSFRfTk9STUFMOworICAgIEZjUGF0dGVybkFk
ZChwYXR0ZXJuLCBGQ19XRUlHSFQsIGZjdmFsdWUsIEZjRmFsc2UpOworCisgICAgZmN2YWx1ZS50
eXBlID0gRmNUeXBlSW50ZWdlcjsKKyAgICBmY3ZhbHVlLnUuaSA9IGlzSXRhbGljID8gRkNfU0xB
TlRfSVRBTElDIDogRkNfU0xBTlRfUk9NQU47CisgICAgRmNQYXR0ZXJuQWRkKHBhdHRlcm4sIEZD
X1NMQU5ULCBmY3ZhbHVlLCBGY0ZhbHNlKTsKKworICAgIGZjdmFsdWUudHlwZSA9IEZjVHlwZUJv
b2w7CisgICAgZmN2YWx1ZS51LmIgPSBGY1RydWU7CisgICAgRmNQYXR0ZXJuQWRkKHBhdHRlcm4s
IEZDX1NDQUxBQkxFLCBmY3ZhbHVlLCBGY0ZhbHNlKTsKKworICAgIGZjdmFsdWUudHlwZSA9IEZj
VHlwZURvdWJsZTsKKyAgICBmY3ZhbHVlLnUuZCA9IHBpeGVsU2l6ZTsKKyAgICBGY1BhdHRlcm5B
ZGQocGF0dGVybiwgRkNfU0laRSwgZmN2YWx1ZSwgRmNGYWxzZSk7CisKKyAgICBGY0NvbmZpZ1N1
YnN0aXR1dGUoMCwgcGF0dGVybiwgRmNNYXRjaFBhdHRlcm4pOworICAgIEZjRGVmYXVsdFN1YnN0
aXR1dGUocGF0dGVybik7CisKKyAgICBGY1Jlc3VsdCByZXN1bHQ7CisgICAgLy8gU29tZSB2ZXJz
aW9ucyBvZiBmb250Y29uZmlnIGRvbid0IGFjdHVhbGx5IHdyaXRlIGEgdmFsdWUgaW50byByZXN1
bHQuCisgICAgLy8gSG93ZXZlciwgaXQncyBub3QgY2xlYXIgZnJvbSB0aGUgZG9jdW1lbnRhdGlv
biBpZiByZXN1bHQgc2hvdWxkIGJlIGEKKyAgICAvLyBub24tMCBwb2ludGVyOiBmdXR1cmUgdmVy
c2lvbnMgbWlnaHQgZXhwZWN0IHRvIGJlIGFibGUgdG8gd3JpdGUgdG8KKyAgICAvLyBpdC4gU28g
d2UgcGFzcyBpbiBhIHZhbGlkIHBvaW50ZXIgYW5kIGlnbm9yZSBpdC4KKyAgICBGY1BhdHRlcm4q
IG1hdGNoID0gRmNGb250TWF0Y2goMCwgcGF0dGVybiwgJnJlc3VsdCk7CisgICAgRmNQYXR0ZXJu
RGVzdHJveShwYXR0ZXJuKTsKKworICAgIHNldEZvbnRSZW5kZXJTdHlsZURlZmF1bHRzKG91dCk7
CisKKyAgICBpZiAoIW1hdGNoKQorICAgICAgICByZXR1cm47CisKKyAgICBGY0Jvb2wgYjsKKyAg
ICBpbnQgaTsKKworICAgIGlmIChGY1BhdHRlcm5HZXRCb29sKG1hdGNoLCBGQ19BTlRJQUxJQVMs
IDAsICZiKSA9PSBGY1Jlc3VsdE1hdGNoKQorICAgICAgICBvdXQtPnVzZUFudGlBbGlhcyA9IGI7
CisgICAgaWYgKEZjUGF0dGVybkdldEJvb2wobWF0Y2gsIEZDX0VNQkVEREVEX0JJVE1BUCwgMCwg
JmIpID09IEZjUmVzdWx0TWF0Y2gpCisgICAgICAgIG91dC0+dXNlQml0bWFwcyA9IGI7CisgICAg
aWYgKEZjUGF0dGVybkdldEJvb2wobWF0Y2gsIEZDX0FVVE9ISU5ULCAwLCAmYikgPT0gRmNSZXN1
bHRNYXRjaCkKKyAgICAgICAgb3V0LT51c2VBdXRvSGludCA9IGI7CisgICAgaWYgKEZjUGF0dGVy
bkdldEJvb2wobWF0Y2gsIEZDX0hJTlRJTkcsIDAsICZiKSA9PSBGY1Jlc3VsdE1hdGNoKQorICAg
ICAgICBvdXQtPnVzZUhpbnRpbmcgPSBiOworI2lmIDAKKyAgICAvLyBGSVhNRTogRm9udGNvbmZp
ZyB0ZWxscyB1cyB0byB1c2UgYWdncmVzc2l2ZSBoaW50aW5nLCBidXQgRnJlZVR5cGUgYnJlYWtz
IHdpdGggb3VyIEFkb2JlIGZvbnRzCisgICAgaWYgKEZjUGF0dGVybkdldEludGVnZXIobWF0Y2gs
IEZDX0hJTlRfU1RZTEUsIDAsICZpKSA9PSBGY1Jlc3VsdE1hdGNoKQorICAgICAgICAgb3V0LT5o
aW50U3R5bGUgPSBpOworI2VuZGlmCisgICAgaWYgKEZjUGF0dGVybkdldEludGVnZXIobWF0Y2gs
IEZDX1JHQkEsIDAsICZpKSA9PSBGY1Jlc3VsdE1hdGNoKSB7CisgICAgICAgIHN3aXRjaCAoaSkg
eworICAgICAgICBjYXNlIEZDX1JHQkFfTk9ORToKKyAgICAgICAgICAgIG91dC0+dXNlU3VicGl4
ZWwgPSAwOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRkNfUkdCQV9SR0I6Cisg
ICAgICAgIGNhc2UgRkNfUkdCQV9CR1I6CisgICAgICAgIGNhc2UgRkNfUkdCQV9WUkdCOgorICAg
ICAgICBjYXNlIEZDX1JHQkFfVkJHUjoKKyAgICAgICAgICAgIG91dC0+dXNlU3VicGl4ZWwgPSAx
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAvLyBU
aGlzIGluY2x1ZGVzIEZDX1JHQkFfVU5LTk9XTi4KKyAgICAgICAgICAgIG91dC0+dXNlU3VicGl4
ZWwgPSAyOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBGY1Bh
dHRlcm5EZXN0cm95KG1hdGNoKTsKK30KKwordm9pZCBQbGF0Zm9ybVN1cHBvcnQ6OmdldEZvbnRG
YW1pbHlGb3JDaGFyYWN0ZXJzKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCBzaXplX3QgbnVtQ2hh
cmFjdGVycywgY29uc3QgY2hhciosIEZvbnRGYW1pbHkqIGZhbWlseSkKK3sKKyAgICBGY0NoYXJT
ZXQqIGNzZXQgPSBGY0NoYXJTZXRDcmVhdGUoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG51bUNoYXJhY3RlcnM7ICsraSkgeworICAgICAgICBpZiAoVTE2X0lTX1NVUlJPR0FURShjaGFy
YWN0ZXJzW2ldKQorICAgICAgICAgJiYgVTE2X0lTX1NVUlJPR0FURV9MRUFEKGNoYXJhY3RlcnNb
aV0pCisgICAgICAgICAmJiBpICE9IG51bUNoYXJhY3RlcnMgLSAxCisgICAgICAgICAmJiBVMTZf
SVNfVFJBSUwoY2hhcmFjdGVyc1tpICsgMV0pKSB7CisgICAgICAgICAgICAgIEZjQ2hhclNldEFk
ZENoYXIoY3NldCwgVTE2X0dFVF9TVVBQTEVNRU5UQVJZKGNoYXJhY3RlcnNbaV0sIGNoYXJhY3Rl
cnNbaSsxXSkpOworICAgICAgICAgIGkrKzsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAg
IEZjQ2hhclNldEFkZENoYXIoY3NldCwgY2hhcmFjdGVyc1tpXSk7CisgICAgfQorICAgIEZjUGF0
dGVybiogcGF0dGVybiA9IEZjUGF0dGVybkNyZWF0ZSgpOworCisgICAgRmNWYWx1ZSBmY3ZhbHVl
OworICAgIGZjdmFsdWUudHlwZSA9IEZjVHlwZUNoYXJTZXQ7CisgICAgZmN2YWx1ZS51LmMgPSBj
c2V0OworICAgIEZjUGF0dGVybkFkZChwYXR0ZXJuLCBGQ19DSEFSU0VULCBmY3ZhbHVlLCBGY0Zh
bHNlKTsKKworICAgIGZjdmFsdWUudHlwZSA9IEZjVHlwZUJvb2w7CisgICAgZmN2YWx1ZS51LmIg
PSBGY1RydWU7CisgICAgRmNQYXR0ZXJuQWRkKHBhdHRlcm4sIEZDX1NDQUxBQkxFLCBmY3ZhbHVl
LCBGY0ZhbHNlKTsKKworICAgIEZjQ29uZmlnU3Vic3RpdHV0ZSgwLCBwYXR0ZXJuLCBGY01hdGNo
UGF0dGVybik7CisgICAgRmNEZWZhdWx0U3Vic3RpdHV0ZShwYXR0ZXJuKTsKKworICAgIEZjUmVz
dWx0IHJlc3VsdDsKKyAgICBGY0ZvbnRTZXQqIGZvbnRTZXQgPSBGY0ZvbnRTb3J0KDAsIHBhdHRl
cm4sIDAsIDAsICZyZXN1bHQpOworICAgIEZjUGF0dGVybkRlc3Ryb3kocGF0dGVybik7CisgICAg
RmNDaGFyU2V0RGVzdHJveShjc2V0KTsKKworICAgIGlmICghZm9udFNldCkgeworICAgICAgICBm
YW1pbHktPm5hbWUgPSBTdHJpbmcoKTsKKyAgICAgICAgZmFtaWx5LT5pc0JvbGQgPSBmYWxzZTsK
KyAgICAgICAgZmFtaWx5LT5pc0l0YWxpYyA9IGZhbHNlOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgLy8gT2xkZXIgdmVyc2lvbnMgb2YgZm9udGNvbmZpZyBoYXZlIGEgYnVnIHdoZXJl
IHRoZXkgY2Fubm90IHNlbGVjdAorICAgIC8vIG9ubHkgc2NhbGFibGUgZm9udHMgc28gd2UgaGF2
ZSB0byBtYW51YWxseSBmaWx0ZXIgdGhlIHJlc3VsdHMuCisgICAgZm9yIChpbnQgaSA9IDA7IGkg
PCBmb250U2V0LT5uZm9udDsgKytpKSB7CisgICAgICAgIEZjUGF0dGVybiogY3VycmVudCA9IGZv
bnRTZXQtPmZvbnRzW2ldOworICAgICAgICBGY0Jvb2wgaXNTY2FsYWJsZTsKKworICAgICAgICBp
ZiAoRmNQYXR0ZXJuR2V0Qm9vbChjdXJyZW50LCBGQ19TQ0FMQUJMRSwgMCwgJmlzU2NhbGFibGUp
ICE9IEZjUmVzdWx0TWF0Y2gKKyAgICAgICAgICAgIHx8ICFpc1NjYWxhYmxlKQorICAgICAgICAg
ICAgY29udGludWU7CisKKyAgICAgICAgLy8gZm9udGNvbmZpZyBjYW4gYWxzbyByZXR1cm4gZm9u
dHMgd2hpY2ggYXJlIHVucmVhZGFibGUKKyAgICAgICAgRmNDaGFyOCogY0ZpbGVuYW1lOworICAg
ICAgICBpZiAoRmNQYXR0ZXJuR2V0U3RyaW5nKGN1cnJlbnQsIEZDX0ZJTEUsIDAsICZjRmlsZW5h
bWUpICE9IEZjUmVzdWx0TWF0Y2gpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBp
ZiAoYWNjZXNzKHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNGaWxlbmFtZSksIFJfT0spKQorICAg
ICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgRmNDaGFyOCogZmFtaWx5TmFtZTsKKyAgICAg
ICAgaWYgKEZjUGF0dGVybkdldFN0cmluZyhjdXJyZW50LCBGQ19GQU1JTFksIDAsICZmYW1pbHlO
YW1lKSA9PSBGY1Jlc3VsdE1hdGNoKSB7CisgICAgICAgICAgICBjb25zdCBjaGFyKiBjaGFyRmFt
aWx5ID0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oZmFtaWx5TmFtZSk7CisgICAgICAgICAgICBm
YW1pbHktPm5hbWUgPSBTdHJpbmc6OmZyb21VVEY4KGNoYXJGYW1pbHksIHN0cmxlbihjaGFyRmFt
aWx5KSk7CisgICAgICAgIH0KKyAgICAgICAgaW50IHdlaWdodDsKKyAgICAgICAgaWYgKEZjUGF0
dGVybkdldEludGVnZXIoY3VycmVudCwgRkNfV0VJR0hULCAwLCAmd2VpZ2h0KSA9PSBGY1Jlc3Vs
dE1hdGNoKQorICAgICAgICAgICAgZmFtaWx5LT5pc0JvbGQgPSB3ZWlnaHQgPj0gRkNfV0VJR0hU
X0JPTEQ7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGZhbWlseS0+aXNCb2xkID0gZmFsc2U7
CisgICAgICAgIGludCBzbGFudDsKKyAgICAgICAgaWYgKEZjUGF0dGVybkdldEludGVnZXIoY3Vy
cmVudCwgRkNfU0xBTlQsIDAsICZzbGFudCkgPT0gRmNSZXN1bHRNYXRjaCkKKyAgICAgICAgICAg
IGZhbWlseS0+aXNJdGFsaWMgPSBzbGFudCAhPSBGQ19TTEFOVF9ST01BTjsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgZmFtaWx5LT5pc0l0YWxpYyA9IGZhbHNlOworICAgICAgICBGY0ZvbnRT
ZXREZXN0cm95KGZvbnRTZXQpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgRmNGb250
U2V0RGVzdHJveShmb250U2V0KTsKK30KKworfTsgLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvc2tpYS9Q
bGF0Zm9ybVN1cHBvcnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNr
YmVycnkvc2tpYS9QbGF0Zm9ybVN1cHBvcnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xZGIxYWRiYWU3NzNmMTY0
ODJjMjIwNDEwMjZkNzJhM2NiZjhmYmFjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9za2lhL1BsYXRmb3JtU3VwcG9ydC5oCkBA
IC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTAsIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKGMpIDIwMTEsIFJlc2VhcmNoIEluIE1v
dGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICog
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFBsYXRmb3JtU3VwcG9ydF9oCisjZGVmaW5l
IFBsYXRmb3JtU3VwcG9ydF9oCisKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK3N0cnVjdCBGb250UmVuZGVyU3R5bGU7CisKKy8vIFRoaXMgaXMg
YSBtaW5pbWFsIHZlcnNpb24gb2YgdGhlIENocm9taXVtIFBsYXRmb3JtU3VwcG9ydC9XZWJGb250
SW5mbyBjbGFzc2VzIHVzZWQgZm9yIGZvbnQgc3VwcG9ydAorCitjbGFzcyBQbGF0Zm9ybVN1cHBv
cnQgeworcHVibGljOgorICAgIHN0YXRpYyB2b2lkIGdldFJlbmRlclN0eWxlRm9yU3RyaWtlKGNv
bnN0IGNoYXIqIGZhbWlseSwgaW50IHNpemVBbmRTdHlsZSwgRm9udFJlbmRlclN0eWxlKiByZXN1
bHQpOworICAgIHN0cnVjdCBGb250RmFtaWx5IHsKKyAgICAgICAgU3RyaW5nIG5hbWU7CisgICAg
ICAgIGJvb2wgaXNCb2xkOworICAgICAgICBib29sIGlzSXRhbGljOworICAgIH07CisgICAgc3Rh
dGljIHZvaWQgZ2V0Rm9udEZhbWlseUZvckNoYXJhY3RlcnMoY29uc3QgVUNoYXIqLCBzaXplX3Qg
bnVtQ2hhcmFjdGVycywgY29uc3QgY2hhciogcHJlZmVycmVkTG9jYWxlLCBGb250RmFtaWx5Kik7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128660</attachid>
            <date>2012-02-23 23:13:24 -0800</date>
            <delta_ts>2012-02-24 05:03:29 -0800</delta_ts>
            <desc>Updated patch for landing</desc>
            <filename>bug-79216-20120224151327.patch</filename>
            <type>text/plain</type>
            <size>14309</size>
            <attacher name="Robin Cao">robin.webkit</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4NTg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmJiZWY1YmVjOTZhZTg0
NzNlYjQ1NWE2ZDMyZDhmZGE5NDU1MmQ2Mi4uNjczODM4NjZlOTViZDVlZGYzMDQzNDI5ZTJhNzU5
YjRjZWEyZGJjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDEyLTAyLTIzICBSb2Jp
biBDYW8gIDxyb2Jpbi5jYW9AdG9yY2htb2JpbGUuY29tLmNuPgorCisgICAgICAgIFtCbGFja0Jl
cnJ5XSBVcHN0cmVhbSBoZWxwZXIgY2xhc3NlcyBmb3Igc2tpYQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzkyMTYKKworICAgICAgICBSZXZpZXdlZCBi
eSBBbnRvbmlvIEdvbWVzLgorCisgICAgICAgIEluaXRpYWwgdXBzdHJlYW1pbmcsIG5vIG5ldyB0
ZXN0cy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvc2tpYS9JbWFn
ZUJ1ZmZlckRhdGEuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKEltYWdl
QnVmZmVyRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9za2lh
L1BsYXRmb3JtU3VwcG9ydC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJDb3JlOjpzZXRGb250UmVuZGVyU3R5bGVEZWZhdWx0cyk6CisgICAgICAgIChXZWJDb3Jl
OjpQbGF0Zm9ybVN1cHBvcnQ6OmdldFJlbmRlclN0eWxlRm9yU3RyaWtlKToKKyAgICAgICAgKFdl
YkNvcmU6OlBsYXRmb3JtU3VwcG9ydDo6Z2V0Rm9udEZhbWlseUZvckNoYXJhY3RlcnMpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvc2tpYS9QbGF0Zm9ybVN1cHBvcnQu
aDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFBsYXRmb3JtU3VwcG9ydCk6
CisgICAgICAgIChGb250RmFtaWx5KToKKwogMjAxMi0wMi0yMiAgQW5kcmVhcyBLbGluZyAgPGF3
ZXNvbWVrbGluZ0BhcHBsZS5jb20+CiAKICAgICAgICAgTWFrZSBwYXJzaW5nIGNvbG9yIHByZXNl
bnRhdGlvbiBhdHRyaWJ1dGVzIGRvIGxlc3MgcG9pbnRsZXNzIHdvcmsuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L3NraWEvSW1hZ2VCdWZm
ZXJEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L3Nr
aWEvSW1hZ2VCdWZmZXJEYXRhLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDA5MTk3ZWE2NTcxODVhYzMyYjFhMDkw
NjQ0ZmI1MDZhMzYyZjc5MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvc2tpYS9JbWFnZUJ1ZmZlckRhdGEuaApAQCAtMCwwICsx
LDUzIEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDA4LCAyMDA5LCBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChjKSAyMDExLCBSZXNlYXJjaCBJbiBNb3Rp
b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
KyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBJbWFnZUJ1ZmZlckRhdGFfaAorI2RlZmluZSBJ
bWFnZUJ1ZmZlckRhdGFfaAorCisjaW5jbHVkZSAiQmxhY2tCZXJyeVBsYXRmb3JtR3JhcGhpY3Mu
aCIKKyNpbmNsdWRlICJQbGF0Zm9ybUNvbnRleHRTa2lhLmgiCisKKyNpbmNsdWRlICJza2lhL2V4
dC9wbGF0Zm9ybV9jYW52YXMuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBJbWFn
ZUJ1ZmZlckRhdGEgeworcHVibGljOgorICAgIEltYWdlQnVmZmVyRGF0YShjb25zdCBJbnRTaXpl
Jik7CisKKyAgICBPd25QdHI8U2tDYW52YXM+IG1fY2FudmFzOworICAgIFBsYXRmb3JtQ29udGV4
dFNraWEgbV9wbGF0Zm9ybUNvbnRleHQ7CisgICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06OkdyYXBo
aWNzOjpCdWZmZXIqIG1fYnVmZmVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gSW1hZ2VCdWZmZXJEYXRhX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvc2tpYS9QbGF0Zm9ybVN1cHBvcnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9za2lhL1BsYXRmb3JtU3Vw
cG9ydC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNDA4ZmU0NTNiZjJmOTA0MWE3N2UzZjMwODVlNzY2OTU3NzYy
ZjcwNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2JsYWNrYmVycnkvc2tpYS9QbGF0Zm9ybVN1cHBvcnQuY3BwCkBAIC0wLDAgKzEsMjE0IEBACisv
KgorICogQ29weXJpZ2h0IChjKSAyMDA5LTIwMTAsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKGMpIDIwMTEsIFJlc2VhcmNoIEluIE1vdGlvbi4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1l
dDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1TdXBwb3J0
LmgiCisKKyNpbmNsdWRlICJGb250UmVuZGVyU3R5bGUuaCIKKworI2luY2x1ZGUgPGZvbnRjb25m
aWcvZm9udGNvbmZpZy5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHVuaWNvZGUv
dXRmMTYuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworc3RhdGljIHZvaWQgc2V0Rm9udFJlbmRlclN0eWxlRGVmYXVsdHMoRm9udFJlbmRl
clN0eWxlKiBzdHlsZSkKK3sKKyAgICBzdHlsZS0+dXNlQml0bWFwcyA9IDI7CisgICAgc3R5bGUt
PnVzZUF1dG9IaW50ID0gMjsKKyAgICBzdHlsZS0+dXNlSGludGluZyA9IDI7CisgICAgc3R5bGUt
PmhpbnRTdHlsZSA9IDA7CisgICAgc3R5bGUtPnVzZUFudGlBbGlhcyA9IDI7CisgICAgc3R5bGUt
PnVzZVN1YnBpeGVsID0gMjsKK30KKwordm9pZCBQbGF0Zm9ybVN1cHBvcnQ6OmdldFJlbmRlclN0
eWxlRm9yU3RyaWtlKGNvbnN0IGNoYXIqIGZhbWlseSwgaW50IHNpemVBbmRTdHlsZSwgRm9udFJl
bmRlclN0eWxlKiBvdXQpCit7CisgICAgYm9vbCBpc0JvbGQgPSBzaXplQW5kU3R5bGUgJiAxOwor
ICAgIGJvb2wgaXNJdGFsaWMgPSBzaXplQW5kU3R5bGUgJiAyOworICAgIGludCBwaXhlbFNpemUg
PSBzaXplQW5kU3R5bGUgPj4gMjsKKworICAgIEZjUGF0dGVybiogcGF0dGVybiA9IEZjUGF0dGVy
bkNyZWF0ZSgpOworICAgIEZjVmFsdWUgZmN2YWx1ZTsKKworICAgIGZjdmFsdWUudHlwZSA9IEZj
VHlwZVN0cmluZzsKKyAgICBmY3ZhbHVlLnUucyA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgRmND
aGFyOCAqPihmYW1pbHkpOworICAgIEZjUGF0dGVybkFkZChwYXR0ZXJuLCBGQ19GQU1JTFksIGZj
dmFsdWUsIEZjRmFsc2UpOworCisgICAgZmN2YWx1ZS50eXBlID0gRmNUeXBlSW50ZWdlcjsKKyAg
ICBmY3ZhbHVlLnUuaSA9IGlzQm9sZCA/IEZDX1dFSUdIVF9CT0xEIDogRkNfV0VJR0hUX05PUk1B
TDsKKyAgICBGY1BhdHRlcm5BZGQocGF0dGVybiwgRkNfV0VJR0hULCBmY3ZhbHVlLCBGY0ZhbHNl
KTsKKworICAgIGZjdmFsdWUudHlwZSA9IEZjVHlwZUludGVnZXI7CisgICAgZmN2YWx1ZS51Lmkg
PSBpc0l0YWxpYyA/IEZDX1NMQU5UX0lUQUxJQyA6IEZDX1NMQU5UX1JPTUFOOworICAgIEZjUGF0
dGVybkFkZChwYXR0ZXJuLCBGQ19TTEFOVCwgZmN2YWx1ZSwgRmNGYWxzZSk7CisKKyAgICBmY3Zh
bHVlLnR5cGUgPSBGY1R5cGVCb29sOworICAgIGZjdmFsdWUudS5iID0gRmNUcnVlOworICAgIEZj
UGF0dGVybkFkZChwYXR0ZXJuLCBGQ19TQ0FMQUJMRSwgZmN2YWx1ZSwgRmNGYWxzZSk7CisKKyAg
ICBmY3ZhbHVlLnR5cGUgPSBGY1R5cGVEb3VibGU7CisgICAgZmN2YWx1ZS51LmQgPSBwaXhlbFNp
emU7CisgICAgRmNQYXR0ZXJuQWRkKHBhdHRlcm4sIEZDX1NJWkUsIGZjdmFsdWUsIEZjRmFsc2Up
OworCisgICAgRmNDb25maWdTdWJzdGl0dXRlKDAsIHBhdHRlcm4sIEZjTWF0Y2hQYXR0ZXJuKTsK
KyAgICBGY0RlZmF1bHRTdWJzdGl0dXRlKHBhdHRlcm4pOworCisgICAgRmNSZXN1bHQgcmVzdWx0
OworICAgIC8vIFNvbWUgdmVyc2lvbnMgb2YgZm9udGNvbmZpZyBkb24ndCBhY3R1YWxseSB3cml0
ZSBhIHZhbHVlIGludG8gcmVzdWx0LgorICAgIC8vIEhvd2V2ZXIsIGl0J3Mgbm90IGNsZWFyIGZy
b20gdGhlIGRvY3VtZW50YXRpb24gaWYgcmVzdWx0IHNob3VsZCBiZSBhCisgICAgLy8gbm9uLTAg
cG9pbnRlcjogZnV0dXJlIHZlcnNpb25zIG1pZ2h0IGV4cGVjdCB0byBiZSBhYmxlIHRvIHdyaXRl
IHRvCisgICAgLy8gaXQuIFNvIHdlIHBhc3MgaW4gYSB2YWxpZCBwb2ludGVyIGFuZCBpZ25vcmUg
aXQuCisgICAgRmNQYXR0ZXJuKiBtYXRjaCA9IEZjRm9udE1hdGNoKDAsIHBhdHRlcm4sICZyZXN1
bHQpOworICAgIEZjUGF0dGVybkRlc3Ryb3kocGF0dGVybik7CisKKyAgICBzZXRGb250UmVuZGVy
U3R5bGVEZWZhdWx0cyhvdXQpOworCisgICAgaWYgKCFtYXRjaCkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgRmNCb29sIGJvb2xWYWx1ZTsKKyAgICBpbnQgaW50VmFsdWU7CisKKyAgICBpZiAoRmNQ
YXR0ZXJuR2V0Qm9vbChtYXRjaCwgRkNfQU5USUFMSUFTLCAwLCAmYm9vbFZhbHVlKSA9PSBGY1Jl
c3VsdE1hdGNoKQorICAgICAgICBvdXQtPnVzZUFudGlBbGlhcyA9IGJvb2xWYWx1ZTsKKyAgICBp
ZiAoRmNQYXR0ZXJuR2V0Qm9vbChtYXRjaCwgRkNfRU1CRURERURfQklUTUFQLCAwLCAmYm9vbFZh
bHVlKSA9PSBGY1Jlc3VsdE1hdGNoKQorICAgICAgICBvdXQtPnVzZUJpdG1hcHMgPSBib29sVmFs
dWU7CisgICAgaWYgKEZjUGF0dGVybkdldEJvb2wobWF0Y2gsIEZDX0FVVE9ISU5ULCAwLCAmYm9v
bFZhbHVlKSA9PSBGY1Jlc3VsdE1hdGNoKQorICAgICAgICBvdXQtPnVzZUF1dG9IaW50ID0gYm9v
bFZhbHVlOworICAgIGlmIChGY1BhdHRlcm5HZXRCb29sKG1hdGNoLCBGQ19ISU5USU5HLCAwLCAm
Ym9vbFZhbHVlKSA9PSBGY1Jlc3VsdE1hdGNoKQorICAgICAgICBvdXQtPnVzZUhpbnRpbmcgPSBi
b29sVmFsdWU7CisKKyAgICBpZiAoRmNQYXR0ZXJuR2V0SW50ZWdlcihtYXRjaCwgRkNfUkdCQSwg
MCwgJmludFZhbHVlKSA9PSBGY1Jlc3VsdE1hdGNoKSB7CisgICAgICAgIHN3aXRjaCAoaW50VmFs
dWUpIHsKKyAgICAgICAgY2FzZSBGQ19SR0JBX05PTkU6CisgICAgICAgICAgICBvdXQtPnVzZVN1
YnBpeGVsID0gMDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEZDX1JHQkFfUkdC
OgorICAgICAgICBjYXNlIEZDX1JHQkFfQkdSOgorICAgICAgICBjYXNlIEZDX1JHQkFfVlJHQjoK
KyAgICAgICAgY2FzZSBGQ19SR0JBX1ZCR1I6CisgICAgICAgICAgICBvdXQtPnVzZVN1YnBpeGVs
ID0gMTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
Ly8gVGhpcyBpbmNsdWRlcyBGQ19SR0JBX1VOS05PV04uCisgICAgICAgICAgICBvdXQtPnVzZVN1
YnBpeGVsID0gMjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgICAg
RmNQYXR0ZXJuRGVzdHJveShtYXRjaCk7Cit9CisKK3ZvaWQgUGxhdGZvcm1TdXBwb3J0OjpnZXRG
b250RmFtaWx5Rm9yQ2hhcmFjdGVycyhjb25zdCBVQ2hhciogY2hhcmFjdGVycywgc2l6ZV90IG51
bUNoYXJhY3RlcnMsIGNvbnN0IGNoYXIqLCBGb250RmFtaWx5KiBmYW1pbHkpCit7CisgICAgRmND
aGFyU2V0KiBjc2V0ID0gRmNDaGFyU2V0Q3JlYXRlKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBudW1DaGFyYWN0ZXJzOyArK2kpIHsKKyAgICAgICAgaWYgKFUxNl9JU19TVVJST0dBVEUo
Y2hhcmFjdGVyc1tpXSkKKyAgICAgICAgICAgICYmIFUxNl9JU19TVVJST0dBVEVfTEVBRChjaGFy
YWN0ZXJzW2ldKQorICAgICAgICAgICAgJiYgaSAhPSBudW1DaGFyYWN0ZXJzIC0gMQorICAgICAg
ICAgICAgJiYgVTE2X0lTX1RSQUlMKGNoYXJhY3RlcnNbaSArIDFdKSkgeworICAgICAgICAgICAg
RmNDaGFyU2V0QWRkQ2hhcihjc2V0LCBVMTZfR0VUX1NVUFBMRU1FTlRBUlkoY2hhcmFjdGVyc1tp
XSwgY2hhcmFjdGVyc1tpKzFdKSk7CisgICAgICAgICAgICBpKys7CisgICAgICAgIH0gZWxzZQor
ICAgICAgICAgICAgICBGY0NoYXJTZXRBZGRDaGFyKGNzZXQsIGNoYXJhY3RlcnNbaV0pOworICAg
IH0KKyAgICBGY1BhdHRlcm4qIHBhdHRlcm4gPSBGY1BhdHRlcm5DcmVhdGUoKTsKKworICAgIEZj
VmFsdWUgZmN2YWx1ZTsKKyAgICBmY3ZhbHVlLnR5cGUgPSBGY1R5cGVDaGFyU2V0OworICAgIGZj
dmFsdWUudS5jID0gY3NldDsKKyAgICBGY1BhdHRlcm5BZGQocGF0dGVybiwgRkNfQ0hBUlNFVCwg
ZmN2YWx1ZSwgRmNGYWxzZSk7CisKKyAgICBmY3ZhbHVlLnR5cGUgPSBGY1R5cGVCb29sOworICAg
IGZjdmFsdWUudS5iID0gRmNUcnVlOworICAgIEZjUGF0dGVybkFkZChwYXR0ZXJuLCBGQ19TQ0FM
QUJMRSwgZmN2YWx1ZSwgRmNGYWxzZSk7CisKKyAgICBGY0NvbmZpZ1N1YnN0aXR1dGUoMCwgcGF0
dGVybiwgRmNNYXRjaFBhdHRlcm4pOworICAgIEZjRGVmYXVsdFN1YnN0aXR1dGUocGF0dGVybik7
CisKKyAgICBGY1Jlc3VsdCByZXN1bHQ7CisgICAgRmNGb250U2V0KiBmb250U2V0ID0gRmNGb250
U29ydCgwLCBwYXR0ZXJuLCAwLCAwLCAmcmVzdWx0KTsKKyAgICBGY1BhdHRlcm5EZXN0cm95KHBh
dHRlcm4pOworICAgIEZjQ2hhclNldERlc3Ryb3koY3NldCk7CisKKyAgICBpZiAoIWZvbnRTZXQp
IHsKKyAgICAgICAgZmFtaWx5LT5uYW1lID0gU3RyaW5nKCk7CisgICAgICAgIGZhbWlseS0+aXNC
b2xkID0gZmFsc2U7CisgICAgICAgIGZhbWlseS0+aXNJdGFsaWMgPSBmYWxzZTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIC8vIE9sZGVyIHZlcnNpb25zIG9mIGZvbnRjb25maWcgaGF2
ZSBhIGJ1ZyB3aGVyZSB0aGV5IGNhbm5vdCBzZWxlY3QKKyAgICAvLyBvbmx5IHNjYWxhYmxlIGZv
bnRzIHNvIHdlIGhhdmUgdG8gbWFudWFsbHkgZmlsdGVyIHRoZSByZXN1bHRzLgorICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgZm9udFNldC0+bmZvbnQ7ICsraSkgeworICAgICAgICBGY1BhdHRlcm4q
IGN1cnJlbnQgPSBmb250U2V0LT5mb250c1tpXTsKKyAgICAgICAgRmNCb29sIGlzU2NhbGFibGU7
CisKKyAgICAgICAgaWYgKEZjUGF0dGVybkdldEJvb2woY3VycmVudCwgRkNfU0NBTEFCTEUsIDAs
ICZpc1NjYWxhYmxlKSAhPSBGY1Jlc3VsdE1hdGNoCisgICAgICAgICAgICB8fCAhaXNTY2FsYWJs
ZSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIC8vIGZvbnRjb25maWcgY2FuIGFs
c28gcmV0dXJuIGZvbnRzIHdoaWNoIGFyZSB1bnJlYWRhYmxlCisgICAgICAgIEZjQ2hhcjgqIGNG
aWxlbmFtZTsKKyAgICAgICAgaWYgKEZjUGF0dGVybkdldFN0cmluZyhjdXJyZW50LCBGQ19GSUxF
LCAwLCAmY0ZpbGVuYW1lKSAhPSBGY1Jlc3VsdE1hdGNoKQorICAgICAgICAgICAgY29udGludWU7
CisKKyAgICAgICAgaWYgKGFjY2VzcyhyZWludGVycHJldF9jYXN0PGNoYXIqPihjRmlsZW5hbWUp
LCBSX09LKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIEZjQ2hhcjgqIGZhbWls
eU5hbWU7CisgICAgICAgIGlmIChGY1BhdHRlcm5HZXRTdHJpbmcoY3VycmVudCwgRkNfRkFNSUxZ
LCAwLCAmZmFtaWx5TmFtZSkgPT0gRmNSZXN1bHRNYXRjaCkgeworICAgICAgICAgICAgY29uc3Qg
Y2hhciogY2hhckZhbWlseSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGZhbWlseU5hbWUpOwor
ICAgICAgICAgICAgZmFtaWx5LT5uYW1lID0gU3RyaW5nOjpmcm9tVVRGOChjaGFyRmFtaWx5LCBz
dHJsZW4oY2hhckZhbWlseSkpOworICAgICAgICB9CisKKyAgICAgICAgaW50IHdlaWdodDsKKyAg
ICAgICAgaWYgKEZjUGF0dGVybkdldEludGVnZXIoY3VycmVudCwgRkNfV0VJR0hULCAwLCAmd2Vp
Z2h0KSA9PSBGY1Jlc3VsdE1hdGNoKQorICAgICAgICAgICAgZmFtaWx5LT5pc0JvbGQgPSB3ZWln
aHQgPj0gRkNfV0VJR0hUX0JPTEQ7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGZhbWlseS0+
aXNCb2xkID0gZmFsc2U7CisKKyAgICAgICAgaW50IHNsYW50OworICAgICAgICBpZiAoRmNQYXR0
ZXJuR2V0SW50ZWdlcihjdXJyZW50LCBGQ19TTEFOVCwgMCwgJnNsYW50KSA9PSBGY1Jlc3VsdE1h
dGNoKQorICAgICAgICAgICAgZmFtaWx5LT5pc0l0YWxpYyA9IHNsYW50ICE9IEZDX1NMQU5UX1JP
TUFOOworICAgICAgICBlbHNlCisgICAgICAgICAgICBmYW1pbHktPmlzSXRhbGljID0gZmFsc2U7
CisKKyAgICAgICAgRmNGb250U2V0RGVzdHJveShmb250U2V0KTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIEZjRm9udFNldERlc3Ryb3koZm9udFNldCk7Cit9CisKK307IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ibGFja2JlcnJ5L3NraWEvUGxhdGZvcm1TdXBwb3J0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L3NraWEvUGxhdGZvcm1TdXBwb3J0LmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYmQyMmQ4NmQ3NTliZjllZGU1NjM0NjM1MGFkODFkMDVjMzJkMmU0YwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvc2tpYS9Q
bGF0Zm9ybVN1cHBvcnQuaApAQCAtMCwwICsxLDU1IEBACisvKgorICogQ29weXJpZ2h0IChjKSAy
MDEwLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChjKSAy
MDExLCBSZXNlYXJjaCBJbiBNb3Rpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlv
bi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAq
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBQbGF0Zm9y
bVN1cHBvcnRfaAorI2RlZmluZSBQbGF0Zm9ybVN1cHBvcnRfaAorCisjaW5jbHVkZSAiUGxhdGZv
cm1TdHJpbmcuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdHJ1Y3QgRm9udFJlbmRlclN0
eWxlOworCisvLyBUaGlzIGlzIGEgbWluaW1hbCB2ZXJzaW9uIG9mIHRoZSBDaHJvbWl1bSBQbGF0
Zm9ybVN1cHBvcnQvV2ViRm9udEluZm8gY2xhc3NlcyB1c2VkIGZvciBmb250IHN1cHBvcnQuCitj
bGFzcyBQbGF0Zm9ybVN1cHBvcnQgeworcHVibGljOgorICAgIHN0YXRpYyB2b2lkIGdldFJlbmRl
clN0eWxlRm9yU3RyaWtlKGNvbnN0IGNoYXIqIGZhbWlseSwgaW50IHNpemVBbmRTdHlsZSwgRm9u
dFJlbmRlclN0eWxlKiByZXN1bHQpOworICAgIHN0cnVjdCBGb250RmFtaWx5IHsKKyAgICAgICAg
U3RyaW5nIG5hbWU7CisgICAgICAgIGJvb2wgaXNCb2xkOworICAgICAgICBib29sIGlzSXRhbGlj
OworICAgIH07CisgICAgc3RhdGljIHZvaWQgZ2V0Rm9udEZhbWlseUZvckNoYXJhY3RlcnMoY29u
c3QgVUNoYXIqLCBzaXplX3QgbnVtQ2hhcmFjdGVycywgY29uc3QgY2hhciogcHJlZmVycmVkTG9j
YWxlLCBGb250RmFtaWx5Kik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
Zgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>