<?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>66153</bug_id>
          
          <creation_ts>2011-08-12 12:19:18 -0700</creation_ts>
          <short_desc>Abandoned Memory: Temporary CSS Fonts May Never Be Purged</short_desc>
          <delta_ts>2011-08-16 15:03:18 -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>WebCore Misc.</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Joseph Pecoraro">joepeck</reporter>
          <assigned_to name="Joseph Pecoraro">joepeck</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>ggaren</cc>
    
    <cc>joepeck</cc>
    
    <cc>mitz</cc>
    
    <cc>msaboff</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>450551</commentid>
    <comment_count>0</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2011-08-12 12:19:18 -0700</bug_when>
    <thetext>For CSS Fonts I&apos;m seeing a null FontPlatformData entry inside of gFontPlatformDataCache,
which can never be purged. In this case, the hash key contains the dataURI for the
CSS Font, so this can be a rather large leak depending on the size of the dataURI.

Also, mitz pointed out that the temporary FontData itself is not being &quot;released&quot;
after a previous change. Better to not put the &quot;temporary&quot; font into the cache at all.

Patch to follow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>450576</commentid>
    <comment_count>1</comment_count>
      <attachid>103796</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2011-08-12 12:41:33 -0700</bug_when>
    <thetext>Created attachment 103796
[PATCH] Proposed Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>450581</commentid>
    <comment_count>2</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2011-08-12 12:43:50 -0700</bug_when>
    <thetext>I&apos;m open to splitting this up to separate patches. Also, instead of exposing the enum maybe
I should create a new FontCache function getNonRetainedCachedFont which internally send
the DoNotRetain.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>450616</commentid>
    <comment_count>3</comment_count>
      <attachid>103796</attachid>
    <who name="">mitz</who>
    <bug_when>2011-08-12 13:25:36 -0700</bug_when>
    <thetext>Comment on attachment 103796
[PATCH] Proposed Fix

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

&gt; Source/WebCore/css/CSSFontFaceSource.cpp:191
&gt; -        SimpleFontData* tempData = fontCache()-&gt;getCachedFontData(fontDescription, m_string);
&gt; +        SimpleFontData* tempData = fontCache()-&gt;getCachedFontData(fontDescription, m_string, false, FontCache::DoNotRetain);
&gt;          if (!tempData)
&gt;              tempData = fontCache()-&gt;getLastResortFallbackFont(fontDescription);

This is not an ideal fix, since it still creates a cache entry. If we can’t (why?) go back to what this code looked like before, i.e. just getting a FontPlatformData from the cache and creating a SimpleFontData here, maybe we should add a FontCache function that takes a fontDescription and a family name (or not, given the FIXME) and returns a newly-created, non-cached SimpleFontData.

&gt; Source/WebCore/platform/graphics/FontCache.cpp:200
&gt;          result = createFontPlatformData(fontDescription, familyName);
&gt; -        gFontPlatformDataCache-&gt;set(key, result);
&gt; +        if (result)
&gt; +            gFontPlatformDataCache-&gt;set(key, result);
&gt;          foundResult = result;

This looks wrong. We want to cache the fact that there is no platform font for the description and family name we were passed, so that we don’t have to call createFontPlatformData() over and over.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>450659</commentid>
    <comment_count>4</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2011-08-12 14:09:49 -0700</bug_when>
    <thetext>&gt; &gt; Source/WebCore/css/CSSFontFaceSource.cpp:191
&gt; &gt; -        SimpleFontData* tempData = fontCache()-&gt;getCachedFontData(fontDescription, m_string);
&gt; &gt; +        SimpleFontData* tempData = fontCache()-&gt;getCachedFontData(fontDescription, m_string, false, FontCache::DoNotRetain);
&gt; &gt;          if (!tempData)
&gt; &gt;              tempData = fontCache()-&gt;getLastResortFallbackFont(fontDescription);
&gt; 
&gt; This is not an ideal fix, since it still creates a cache entry. If we can’t (why?) go back to what this code looked
&gt; like before, i.e. just getting a FontPlatformData from the cache and creating a SimpleFontData here, maybe
&gt; we should add a FontCache function that takes a fontDescription and a family name (or not, given the FIXME)
&gt; and returns a newly-created, non-cached SimpleFontData.

This sounds like what getLastResortFallbackFont does. Can we just remove the getCachedFontData()
completely here? It looks to me like this temporary font case only ever happens:

  • for remote fonts (have a CachedFont that !isLoaded)
  • when m_string is a complete URL

So would we ever expect getCachedFontPlatformData to return something valid for a URI?
Maybe I&apos;m missing where this cache entry could be overwritten later on.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>450661</commentid>
    <comment_count>5</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2011-08-12 14:14:35 -0700</bug_when>
    <thetext>&gt; &gt; Source/WebCore/platform/graphics/FontCache.cpp:200
&gt; &gt;          result = createFontPlatformData(fontDescription, familyName);
&gt; &gt; -        gFontPlatformDataCache-&gt;set(key, result);
&gt; &gt; +        if (result)
&gt; &gt; +            gFontPlatformDataCache-&gt;set(key, result);
&gt; &gt;          foundResult = result;
&gt; 
&gt; This looks wrong. We want to cache the fact that there is no platform font for the
&gt; description and family name we were passed, so that we don’t have to call
&gt; createFontPlatformData() over and over.

Gotcha that makes sense. In this case it was bad because the HashKey for
gFontPlatformDataCache contained a very large string which we would never
release. This sounds like a case of unbounded growth but if we can avoid
creating such entries entirely we should be fine for the most part. We can
revisit possibly pruning the &quot;0x0&quot; platform font data&apos;s in this list for
another time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>450736</commentid>
    <comment_count>6</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2011-08-12 16:01:55 -0700</bug_when>
    <thetext>&gt; Can we just remove the getCachedFontData() completely here?
&gt; So would we ever expect getCachedFontPlatformData to return something valid for a URI?

I guess we can try passing the lastPathComponent of this URL.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>450755</commentid>
    <comment_count>7</comment_count>
    <who name="">mitz</who>
    <bug_when>2011-08-12 16:38:47 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; &gt; &gt; Source/WebCore/css/CSSFontFaceSource.cpp:191
&gt; &gt; &gt; -        SimpleFontData* tempData = fontCache()-&gt;getCachedFontData(fontDescription, m_string);
&gt; &gt; &gt; +        SimpleFontData* tempData = fontCache()-&gt;getCachedFontData(fontDescription, m_string, false, FontCache::DoNotRetain);
&gt; &gt; &gt;          if (!tempData)
&gt; &gt; &gt;              tempData = fontCache()-&gt;getLastResortFallbackFont(fontDescription);
&gt; &gt; 
&gt; &gt; This is not an ideal fix, since it still creates a cache entry. If we can’t (why?) go back to what this code looked
&gt; &gt; like before, i.e. just getting a FontPlatformData from the cache and creating a SimpleFontData here, maybe
&gt; &gt; we should add a FontCache function that takes a fontDescription and a family name (or not, given the FIXME)
&gt; &gt; and returns a newly-created, non-cached SimpleFontData.
&gt; 
&gt; This sounds like what getLastResortFallbackFont does. Can we just remove the getCachedFontData()
&gt; completely here? It looks to me like this temporary font case only ever happens:
&gt; 
&gt;   • for remote fonts (have a CachedFont that !isLoaded)
&gt;   • when m_string is a complete URL
&gt; 
&gt; So would we ever expect getCachedFontPlatformData to return something valid for a URI?
&gt; Maybe I&apos;m missing where this cache entry could be overwritten later on.

I think you’re right and that first call to the font cache practically always returns 0 (unless you happen to have a local font whose name is equal to the URI), but at the cost of creating an uninteresting negative cache entry. So the right thing to do would be to just remove it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>450760</commentid>
    <comment_count>8</comment_count>
      <attachid>103843</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2011-08-12 16:50:39 -0700</bug_when>
    <thetext>Created attachment 103843
[PATCH] Take 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>450783</commentid>
    <comment_count>9</comment_count>
      <attachid>103843</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-12 18:44:15 -0700</bug_when>
    <thetext>Comment on attachment 103843
[PATCH] Take 2

Clearing flags on attachment: 103843

Committed r93011: &lt;http://trac.webkit.org/changeset/93011&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>450784</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-12 18:44:20 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>451487</commentid>
    <comment_count>11</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2011-08-15 21:48:04 -0700</bug_when>
    <thetext>&gt; &gt; we should add a FontCache function that takes a fontDescription and a family name (or not, given the FIXME)
&gt; &gt; and returns a newly-created, non-cached SimpleFontData.
&gt; 
&gt; This sounds like what getLastResortFallbackFont does.

Actually I was incorrect. getLastResortFallbackFont does not return an uncached font.
Threading a ShouldRetain parameter through all the ports is ugly too. Although this
patch was an improvement, because this retains it actually didn&apos;t entirely fix the
original problem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>451493</commentid>
    <comment_count>12</comment_count>
      <attachid>104004</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2011-08-15 22:13:47 -0700</bug_when>
    <thetext>Created attachment 104004
[PATCH] Add FontCache::getNonRetainedLastResortFallbackFont(...)

This goes with mitz&apos;s suggestion. Its messy though =(.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>451495</commentid>
    <comment_count>13</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2011-08-15 22:14:24 -0700</bug_when>
    <thetext>Reopening because the original problem, although improved, was not entirely fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>451497</commentid>
    <comment_count>14</comment_count>
      <attachid>104004</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-15 22:17:59 -0700</bug_when>
    <thetext>Comment on attachment 104004
[PATCH] Add FontCache::getNonRetainedLastResortFallbackFont(...)

Attachment 104004 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/9379968</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>451500</commentid>
    <comment_count>15</comment_count>
      <attachid>104004</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-08-15 22:21:18 -0700</bug_when>
    <thetext>Comment on attachment 104004
[PATCH] Add FontCache::getNonRetainedLastResortFallbackFont(...)

Attachment 104004 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/9401083</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>451501</commentid>
    <comment_count>16</comment_count>
      <attachid>104006</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2011-08-15 22:28:10 -0700</bug_when>
    <thetext>Created attachment 104006
[PATCH] Fix Builds</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>451792</commentid>
    <comment_count>17</comment_count>
      <attachid>104006</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-16 12:18:25 -0700</bug_when>
    <thetext>Comment on attachment 104006
[PATCH] Fix Builds

Clearing flags on attachment: 104006

Committed r93140: &lt;http://trac.webkit.org/changeset/93140&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>451793</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-16 12:18:31 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>451811</commentid>
    <comment_count>19</comment_count>
      <attachid>104079</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2011-08-16 13:03:19 -0700</bug_when>
    <thetext>Created attachment 104079
[PATCH] Attempt at Windows Build Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>451814</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-16 13:06:34 -0700</bug_when>
    <thetext>Attachment 104079 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1

Source/WebCore/platform/graphics/FontCache.h:102:  The parameter name &quot;font&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/platform/graphics/FontCache.h:104:  The parameter name &quot;font&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 2 in 4 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>451818</commentid>
    <comment_count>21</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2011-08-16 13:12:10 -0700</bug_when>
    <thetext>Attempted a Windows Build Fix in: &lt;http://trac.webkit.org/changeset/93147&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>451824</commentid>
    <comment_count>22</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2011-08-16 13:29:27 -0700</bug_when>
    <thetext>Attempted a Chromium Windows Build Fix in: &lt;http://trac.webkit.org/changeset/93149&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>451830</commentid>
    <comment_count>23</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2011-08-16 13:41:02 -0700</bug_when>
    <thetext>Grr. I&apos;m going to try just making ShouldRetain public and if that fixes the
issue file a follow-up bug to make it private again or mark the Chromium
GetLastResortFallbackFontProcData struct a friend so that it can use the enum.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>451897</commentid>
    <comment_count>24</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2011-08-16 15:03:18 -0700</bug_when>
    <thetext>Took a while, but I was able to fix chromium-win:
&lt;http://trac.webkit.org/changeset/93151&gt;
&lt;http://trac.webkit.org/changeset/93156&gt;
&lt;http://trac.webkit.org/changeset/93160&gt;

Filing a bug to cleanup after these changes.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103796</attachid>
            <date>2011-08-12 12:41:33 -0700</date>
            <delta_ts>2011-08-12 16:50:39 -0700</delta_ts>
            <desc>[PATCH] Proposed Fix</desc>
            <filename>proposed.patch</filename>
            <type>text/plain</type>
            <size>3372</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA2Y2JhYjhmNC4uNWY0YTQwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1
IEBACisyMDExLTA4LTEyICBKb3NlcGggUGVjb3Jhcm8gIDxqb2VwZWNrQHdlYmtpdC5vcmc+CisK
KyAgICAgICAgQWJhbmRvbmVkIE1lbW9yeTogVGVtcG9yYXJ5IENTUyBGb250cyBNYXkgTmV2ZXIg
QmUgUHVyZ2VkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD02NjE1MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IE5vIG5ldyB0ZXN0cywgdGhpcyBpcyBub3QgYSBmdW5jdGlvbmFsIGNoYW5nZS4KKworICAgICAg
ICAqIGNzcy9DU1NGb250RmFjZVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250
RmFjZVNvdXJjZTo6Z2V0Rm9udERhdGEpOgorICAgICAgICBDYWxsaW5nIGdldENhY2hlZEZvbnRE
YXRhIHB1dHMgdGhlIHJlcXVlc3RlZCBmb250IGludG8gdGhlCisgICAgICAgIGNhY2hlLiBIb3dl
dmVyLCBmb3IgdGhpcyB0ZW1wb3JhcnkgZm9udCB3ZSBkb24ndCB3YW50IHRvCisgICAgICAgIHB1
dCBpdCBpbnRvIHRoZSBjYWNoZSwgc28gdGhhdCBpdCBjYW4gYmUgcHVyZ2VkIHNvb24gYWZ0ZXIu
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaDoKKyAgICAgICAgRXhw
b3NlIHRoZSBlbnVtIHNvIGNhbGxlcnMgb3V0c2lkZSBvZiB0aGUgRm9udENhY2hlIGNhbiB1c2Ug
aXQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Rm9udENhY2hlOjpnZXRDYWNoZWRGb250UGxhdGZvcm1EYXRhKToKKyAgICAg
ICAgTmV2ZXIgcHV0IGEgbnVsbCBmb250IGludG8gdGhlIGNhY2hlLCBpdCB3aWxsIG5ldmVyIGJl
IHJlbW92ZWQuCisKIDIwMTEtMDgtMTIgIEFsZXhhbmRydSBDaGljdWxpdGEgIDxhY2hpY3VAYWRv
YmUuY29tPgogCiAgICAgICAgIE9yaWdpbmFsIHBhdGNoIGJ5IE1paG5lYSBPdmlkZW5pZSA8bWlo
bmVhQGFkb2JlLmNvbT4uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZh
Y2VTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcApp
bmRleCBkNzdmY2RhLi5hNTRmZGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Rm9udEZhY2VTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNv
dXJjZS5jcHAKQEAgLTE4Niw3ICsxODYsNyBAQCBTaW1wbGVGb250RGF0YSogQ1NTRm9udEZhY2VT
b3VyY2U6OmdldEZvbnREYXRhKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm9udERlc2NyaQogICAg
ICAgICAgICAgbV9sb2FkU3RhcnRUaW1lci5zdGFydE9uZVNob3QoMCk7CiAKICAgICAgICAgLy8g
RklYTUU6IG1fc3RyaW5nIGlzIGEgVVJMIHNvIGl0IG1ha2VzIG5vIHNlbnNlIHRvIHBhc3MgaXQg
YXMgYSBmYW1pbHkgbmFtZS4KLSAgICAgICAgU2ltcGxlRm9udERhdGEqIHRlbXBEYXRhID0gZm9u
dENhY2hlKCktPmdldENhY2hlZEZvbnREYXRhKGZvbnREZXNjcmlwdGlvbiwgbV9zdHJpbmcpOwor
ICAgICAgICBTaW1wbGVGb250RGF0YSogdGVtcERhdGEgPSBmb250Q2FjaGUoKS0+Z2V0Q2FjaGVk
Rm9udERhdGEoZm9udERlc2NyaXB0aW9uLCBtX3N0cmluZywgZmFsc2UsIEZvbnRDYWNoZTo6RG9O
b3RSZXRhaW4pOwogICAgICAgICBpZiAoIXRlbXBEYXRhKQogICAgICAgICAgICAgdGVtcERhdGEg
PSBmb250Q2FjaGUoKS0+Z2V0TGFzdFJlc29ydEZhbGxiYWNrRm9udChmb250RGVzY3JpcHRpb24p
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2Fj
aGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcApp
bmRleCAxYzU5Y2I3ZC4uMDdhOTU3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Gb250Q2FjaGUuY3BwCkBAIC0xOTUsNyArMTk1LDggQEAgRm9udFBsYXRmb3JtRGF0
YSogRm9udENhY2hlOjpnZXRDYWNoZWRGb250UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnREZXNjcmlw
dGlvbiYgZm8KICAgICBGb250UGxhdGZvcm1EYXRhQ2FjaGU6Oml0ZXJhdG9yIGl0ID0gZ0ZvbnRQ
bGF0Zm9ybURhdGFDYWNoZS0+ZmluZChrZXkpOwogICAgIGlmIChpdCA9PSBnRm9udFBsYXRmb3Jt
RGF0YUNhY2hlLT5lbmQoKSkgewogICAgICAgICByZXN1bHQgPSBjcmVhdGVGb250UGxhdGZvcm1E
YXRhKGZvbnREZXNjcmlwdGlvbiwgZmFtaWx5TmFtZSk7Ci0gICAgICAgIGdGb250UGxhdGZvcm1E
YXRhQ2FjaGUtPnNldChrZXksIHJlc3VsdCk7CisgICAgICAgIGlmIChyZXN1bHQpCisgICAgICAg
ICAgICBnRm9udFBsYXRmb3JtRGF0YUNhY2hlLT5zZXQoa2V5LCByZXN1bHQpOwogICAgICAgICBm
b3VuZFJlc3VsdCA9IHJlc3VsdDsKICAgICB9IGVsc2UgewogICAgICAgICByZXN1bHQgPSBpdC0+
c2Vjb25kOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9u
dENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaApp
bmRleCA1MGEyOWFlLi5iN2EwZWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Gb250Q2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Gb250Q2FjaGUuaApAQCAtNTMsMTIgKzUzLDEyIEBAIGNsYXNzIFNpbXBsZUZvbnREYXRh
OwogY2xhc3MgRm9udENhY2hlIHsKICAgICBmcmllbmQgY2xhc3MgRm9udENhY2hlUHVyZ2VQcmV2
ZW50ZXI7CiAKLSAgICBlbnVtIFNob3VsZFJldGFpbiB7IFJldGFpbiwgRG9Ob3RSZXRhaW4gfTsK
LQogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEZvbnRDYWNoZSk7IFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgogICAgIGZyaWVuZCBGb250Q2FjaGUqIGZvbnRDYWNoZSgpOwogCisg
ICAgZW51bSBTaG91bGRSZXRhaW4geyBSZXRhaW4sIERvTm90UmV0YWluIH07CisKICAgICBjb25z
dCBGb250RGF0YSogZ2V0Rm9udERhdGEoY29uc3QgRm9udCYsIGludCYgZmFtaWx5SW5kZXgsIEZv
bnRTZWxlY3RvciopOwogICAgIHZvaWQgcmVsZWFzZUZvbnREYXRhKGNvbnN0IFNpbXBsZUZvbnRE
YXRhKik7CiAK
</data>
<flag name="review"
          id="99500"
          type_id="1"
          status="-"
          setter="mitz"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103843</attachid>
            <date>2011-08-12 16:50:39 -0700</date>
            <delta_ts>2011-08-15 22:13:47 -0700</delta_ts>
            <desc>[PATCH] Take 2</desc>
            <filename>take2.patch</filename>
            <type>text/plain</type>
            <size>1803</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA2Y2JhYjhmNC4uZDYxN2JkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5
IEBACisyMDExLTA4LTEyICBKb3NlcGggUGVjb3Jhcm8gIDxqb2VwZWNrQHdlYmtpdC5vcmc+CisK
KyAgICAgICAgQWJhbmRvbmVkIE1lbW9yeTogVGVtcG9yYXJ5IENTUyBGb250cyBNYXkgTmV2ZXIg
QmUgUHVyZ2VkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD02NjE1MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IE5vIG5ldyB0ZXN0cywgdGhpcyBpcyBub3QgYSBmdW5jdGlvbmFsIGNoYW5nZS4KKworICAgICAg
ICAqIGNzcy9DU1NGb250RmFjZVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250
RmFjZVNvdXJjZTo6Z2V0Rm9udERhdGEpOgorICAgICAgICBJZiB0aGUgQ1NTIGZvbnQtZmFjZSBp
cyBsb2FkaW5nIGZyb20gYSBVUkwgdGhlbiBpbW1lZGlhdGVseQorICAgICAgICBmYWxsYmFjayB0
byBhIHN5c3RlbSBmb250IG1hdGNoaW5nIHRoZSBkZXNjcmlwdGlvbiwgc2luY2Ugd2UKKyAgICAg
ICAgY2Fubm90IGRldGVybWluZSBhIHJlYXNvbmFibGUgZmFtaWx5IG5hbWUgZnJvbSB0aGUgbV9z
dHJpbmcKKyAgICAgICAgVVJMLiBUaGUgVVJMIGNvdWxkIGJlIGEgZGF0YVVSSS4KKwogMjAxMS0w
OC0xMiAgQWxleGFuZHJ1IENoaWN1bGl0YSAgPGFjaGljdUBhZG9iZS5jb20+CiAKICAgICAgICAg
T3JpZ2luYWwgcGF0Y2ggYnkgTWlobmVhIE92aWRlbmllIDxtaWhuZWFAYWRvYmUuY29tPi4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwCmluZGV4IGQ3N2ZjZGEuLjVkYjM0
MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcApAQCAtMTg1LDEx
ICsxODUsNyBAQCBTaW1wbGVGb250RGF0YSogQ1NTRm9udEZhY2VTb3VyY2U6OmdldEZvbnREYXRh
KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm9udERlc2NyaQogICAgICAgICBpZiAoIW1fbG9hZFN0
YXJ0VGltZXIuaXNBY3RpdmUoKSkKICAgICAgICAgICAgIG1fbG9hZFN0YXJ0VGltZXIuc3RhcnRP
bmVTaG90KDApOwogCi0gICAgICAgIC8vIEZJWE1FOiBtX3N0cmluZyBpcyBhIFVSTCBzbyBpdCBt
YWtlcyBubyBzZW5zZSB0byBwYXNzIGl0IGFzIGEgZmFtaWx5IG5hbWUuCi0gICAgICAgIFNpbXBs
ZUZvbnREYXRhKiB0ZW1wRGF0YSA9IGZvbnRDYWNoZSgpLT5nZXRDYWNoZWRGb250RGF0YShmb250
RGVzY3JpcHRpb24sIG1fc3RyaW5nKTsKLSAgICAgICAgaWYgKCF0ZW1wRGF0YSkKLSAgICAgICAg
ICAgIHRlbXBEYXRhID0gZm9udENhY2hlKCktPmdldExhc3RSZXNvcnRGYWxsYmFja0ZvbnQoZm9u
dERlc2NyaXB0aW9uKTsKLQorICAgICAgICBTaW1wbGVGb250RGF0YSogdGVtcERhdGEgPSBmb250
Q2FjaGUoKS0+Z2V0TGFzdFJlc29ydEZhbGxiYWNrRm9udChmb250RGVzY3JpcHRpb24pOwogICAg
ICAgICBmb250RGF0YSA9IGFkb3B0UHRyKG5ldyBTaW1wbGVGb250RGF0YSh0ZW1wRGF0YS0+cGxh
dGZvcm1EYXRhKCksIHRydWUsIHRydWUpKTsKICAgICB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104004</attachid>
            <date>2011-08-15 22:13:47 -0700</date>
            <delta_ts>2011-08-15 22:28:10 -0700</delta_ts>
            <desc>[PATCH] Add FontCache::getNonRetainedLastResortFallbackFont(...)</desc>
            <filename>proposed-patch-3.patch</filename>
            <type>text/plain</type>
            <size>26114</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA3YWZkYmEyLi44YzJkOTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDgg
QEAKKzIwMTEtMDgtMTUgIEpvc2VwaCBQZWNvcmFybyAgPGpvZXBlY2tAd2Via2l0Lm9yZz4KKwor
ICAgICAgICBBYmFuZG9uZWQgTWVtb3J5OiBUZW1wb3JhcnkgQ1NTIEZvbnRzIE1heSBOZXZlciBC
ZSBQdXJnZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTY2MTUzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
V2hpbGUgYSByZW1vdGUgQ1NTIGZvbnQgZmFjZSBpcyBsb2FkaW5nIHdlIGZhbGxiYWNrIHRvIGEK
KyAgICAgICAgdGVtcG9yYXJ5IGZvbnQuIFdlIGRvbid0IHdhbnQgdG8gcmV0YWluIHRoZSBmYWxs
YmFjayBmb250CisgICAgICAgIGJlY2F1c2Ugbm9vbmUgdGFrZXMgb3duZXJzaGlwIG9mIHRoZSB0
ZW1wb3JhcnkgZm9udC4gVGhpcworICAgICAgICBwYXRjaCBhZGRzIGEgd2F5IHRvIGdldCBhbiB1
bmNhY2hlZCBmYWxsYmFjayBmb250LCB3aGljaAorICAgICAgICBwbHVtYnMgdGhlIFNob3VsZFJl
dGFpbiBlbnVtIHRocm91Z2ggdGhlIGRpZmZlcmVudCBwbGF0Zm9ybQorICAgICAgICBpbXBsZW1l
bnRhdGlvbnMgb2YgZ2V0TGFzdFJlc29ydEZhbGxiYWNrRm9udC4KKworICAgICAgICBObyBuZXcg
dGVzdHMsIG5vIGZ1bmN0aW9uYWwgY2hhbmdlLgorCisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNl
U291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU291cmNlOjpnZXRGb250
RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZvbnRDYWNoZTo6Z2V0Tm9uUmV0YWluZWRMYXN0UmVzb3J0RmFsbGJhY2tG
b250KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250Q2FjaGVDaHJvbWl1bVdpbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpmb250RGF0YUZyb21EZXNjcmlwdGlvbkFuZExvZ0ZvbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6R2V0TGFzdFJlc29ydEZhbGxiYWNrRm9udFByb2NEYXRhOjpHZXRMYXN0
UmVzb3J0RmFsbGJhY2tGb250UHJvY0RhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0TGFzdFJl
c29ydEZhbGxiYWNrRm9udFByb2MpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hlOjpnZXRM
YXN0UmVzb3J0RmFsbGJhY2tGb250KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9Gb250Q2FjaGVMaW51eC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FjaGU6Omdl
dExhc3RSZXNvcnRGYWxsYmFja0ZvbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Zy
ZWV0eXBlL0ZvbnRDYWNoZUZyZWVUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYWNo
ZTo6Z2V0TGFzdFJlc29ydEZhbGxiYWNrRm9udCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvaGFpa3UvRm9udENhY2hlSGFpa3UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hl
OjpnZXRMYXN0UmVzb3J0RmFsbGJhY2tGb250KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvRm9udENhY2hlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hlOjpnZXRM
YXN0UmVzb3J0RmFsbGJhY2tGb250KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9wYW5n
by9Gb250Q2FjaGVQYW5nby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FjaGU6OmdldExh
c3RSZXNvcnRGYWxsYmFja0ZvbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0Zv
bnRDYWNoZVF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYWNoZTo6Z2V0TGFzdFJlc29y
dEZhbGxiYWNrRm9udCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDYWNo
ZVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpmb250RGF0YUZyb21EZXNjcmlwdGlvbkFuZExv
Z0ZvbnQpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hlOjpnZXRMYXN0UmVzb3J0RmFsbGJh
Y2tGb250KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9Gb250Q2FjaGVXaW5D
RS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd3gvRm9udENhY2hlV3guY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hlOjpnZXRMYXN0UmVzb3J0RmFsbGJhY2tGb250KToK
KwogMjAxMS0wOC0xMyAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJl
bW92ZSBmb3J3YXJkIGRlY2xhcmF0aW9uIG9mIC1bV2ViVW5kZWZpbmVkIGRlYWxsb2NdIHRvIGFw
cGVhc2UgdGhlIGJvdCBnb2RzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Zv
bnRGYWNlU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5j
cHAKaW5kZXggNWRiMzQwZS4uMmM3MmM3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0ZvbnRGYWNlU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZh
Y2VTb3VyY2UuY3BwCkBAIC0xODUsNyArMTg1LDcgQEAgU2ltcGxlRm9udERhdGEqIENTU0ZvbnRG
YWNlU291cmNlOjpnZXRGb250RGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmkK
ICAgICAgICAgaWYgKCFtX2xvYWRTdGFydFRpbWVyLmlzQWN0aXZlKCkpCiAgICAgICAgICAgICBt
X2xvYWRTdGFydFRpbWVyLnN0YXJ0T25lU2hvdCgwKTsKIAotICAgICAgICBTaW1wbGVGb250RGF0
YSogdGVtcERhdGEgPSBmb250Q2FjaGUoKS0+Z2V0TGFzdFJlc29ydEZhbGxiYWNrRm9udChmb250
RGVzY3JpcHRpb24pOworICAgICAgICBTaW1wbGVGb250RGF0YSogdGVtcERhdGEgPSBmb250Q2Fj
aGUoKS0+Z2V0Tm9uUmV0YWluZWRMYXN0UmVzb3J0RmFsbGJhY2tGb250KGZvbnREZXNjcmlwdGlv
bik7CiAgICAgICAgIGZvbnREYXRhID0gYWRvcHRQdHIobmV3IFNpbXBsZUZvbnREYXRhKHRlbXBE
YXRhLT5wbGF0Zm9ybURhdGEoKSwgdHJ1ZSwgdHJ1ZSkpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAKaW5kZXggMWM1OWNiN2QuLmZl
ZTQ3MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRD
YWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hl
LmNwcApAQCAtMzA5LDYgKzMwOSwxMSBAQCBTaW1wbGVGb250RGF0YSogRm9udENhY2hlOjpnZXRD
YWNoZWRGb250RGF0YShjb25zdCBGb250UGxhdGZvcm1EYXRhKiBwbGF0Zm9ybURhdAogICAgIHJl
dHVybiByZXN1bHQuZ2V0KCktPnNlY29uZC5maXJzdDsKIH0KIAorU2ltcGxlRm9udERhdGEqIEZv
bnRDYWNoZTo6Z2V0Tm9uUmV0YWluZWRMYXN0UmVzb3J0RmFsbGJhY2tGb250KGNvbnN0IEZvbnRE
ZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0aW9uKQoreworICAgIHJldHVybiBnZXRMYXN0UmVzb3J0
RmFsbGJhY2tGb250KGZvbnREZXNjcmlwdGlvbiwgRG9Ob3RSZXRhaW4pOworfQorCiB2b2lkIEZv
bnRDYWNoZTo6cmVsZWFzZUZvbnREYXRhKGNvbnN0IFNpbXBsZUZvbnREYXRhKiBmb250RGF0YSkK
IHsKICAgICBBU1NFUlQoZ0ZvbnREYXRhQ2FjaGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Gb250Q2FjaGUuaAppbmRleCA1MGEyOWFlLi40NjUzMjBiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaApAQCAtODQsNyArODQsOCBA
QCBwdWJsaWM6CiAgICAgdm9pZCBnZXRUcmFpdHNJbkZhbWlseShjb25zdCBBdG9taWNTdHJpbmcm
LCBWZWN0b3I8dW5zaWduZWQ+Jik7CiAKICAgICBTaW1wbGVGb250RGF0YSogZ2V0Q2FjaGVkRm9u
dERhdGEoY29uc3QgRm9udERlc2NyaXB0aW9uJiwgY29uc3QgQXRvbWljU3RyaW5nJiwgYm9vbCBj
aGVja2luZ0FsdGVybmF0ZU5hbWUgPSBmYWxzZSwgU2hvdWxkUmV0YWluID0gUmV0YWluKTsKLSAg
ICBTaW1wbGVGb250RGF0YSogZ2V0TGFzdFJlc29ydEZhbGxiYWNrRm9udChjb25zdCBGb250RGVz
Y3JpcHRpb24mKTsKKyAgICBTaW1wbGVGb250RGF0YSogZ2V0TGFzdFJlc29ydEZhbGxiYWNrRm9u
dChjb25zdCBGb250RGVzY3JpcHRpb24mLCBTaG91bGRSZXRhaW4gPSBSZXRhaW4pOworICAgIFNp
bXBsZUZvbnREYXRhKiBnZXROb25SZXRhaW5lZExhc3RSZXNvcnRGYWxsYmFja0ZvbnQoY29uc3Qg
Rm9udERlc2NyaXB0aW9uJik7CiAKICAgICB2b2lkIGFkZENsaWVudChGb250U2VsZWN0b3IqKTsK
ICAgICB2b2lkIHJlbW92ZUNsaWVudChGb250U2VsZWN0b3IqKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRDYWNoZUNocm9taXVtV2lu
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRDYWNo
ZUNocm9taXVtV2luLmNwcAppbmRleCBiM2JlMmE1Li43NjQzY2IzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250Q2FjaGVDaHJvbWl1bVdp
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9u
dENhY2hlQ2hyb21pdW1XaW4uY3BwCkBAIC0zMjUsOSArMzI1LDkgQEAgc3RhdGljIGJvb2wgZm9u
dENvbnRhaW5zQ2hhcmFjdGVyKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEqIGZvbnREYXRhLAogfQog
CiAvLyBUcmllcyB0aGUgZ2l2ZW4gZm9udCBhbmQgc2F2ZSBpdCB8b3V0Rm9udEZhbWlseU5hbWV8
IGlmIGl0IHN1Y2NlZWRzLgotc3RhdGljIFNpbXBsZUZvbnREYXRhKiBmb250RGF0YUZyb21EZXNj
cmlwdGlvbkFuZExvZ0ZvbnQoRm9udENhY2hlKiBmb250Q2FjaGUsIGNvbnN0IEZvbnREZXNjcmlw
dGlvbiYgZm9udERlc2NyaXB0aW9uLCBjb25zdCBMT0dGT05UJiBmb250LCB3Y2hhcl90KiBvdXRG
b250RmFtaWx5TmFtZSkKK3N0YXRpYyBTaW1wbGVGb250RGF0YSogZm9udERhdGFGcm9tRGVzY3Jp
cHRpb25BbmRMb2dGb250KEZvbnRDYWNoZSogZm9udENhY2hlLCBjb25zdCBGb250RGVzY3JpcHRp
b24mIGZvbnREZXNjcmlwdGlvbiwgU2hvdWxkUmV0YWluIHNob3VsZFJldGFpbiwgY29uc3QgTE9H
Rk9OVCYgZm9udCwgd2NoYXJfdCogb3V0Rm9udEZhbWlseU5hbWUpCiB7Ci0gICAgU2ltcGxlRm9u
dERhdGEqIGZvbnREYXRhID0gZm9udENhY2hlLT5nZXRDYWNoZWRGb250RGF0YShmb250RGVzY3Jp
cHRpb24sIGZvbnQubGZGYWNlTmFtZSk7CisgICAgU2ltcGxlRm9udERhdGEqIGZvbnREYXRhID0g
Zm9udENhY2hlLT5nZXRDYWNoZWRGb250RGF0YShmb250RGVzY3JpcHRpb24sIGZvbnQubGZGYWNl
TmFtZSwgZmFsc2UsIHNob3VsZFJldGFpbik7CiAgICAgaWYgKGZvbnREYXRhKQogICAgICAgICBt
ZW1jcHkob3V0Rm9udEZhbWlseU5hbWUsIGZvbnQubGZGYWNlTmFtZSwgc2l6ZW9mKGZvbnQubGZG
YWNlTmFtZSkpOwogICAgIHJldHVybiBmb250RGF0YTsKQEAgLTQwMCw5ICs0MDAsMTAgQEAgc3Rh
dGljIGludCBDQUxMQkFDSyB0cmFpdHNJbkZhbWlseUVudW1Qcm9jKENPTlNUIExPR0ZPTlQqIGxv
Z0ZvbnQsIENPTlNUIFRFWFRNRVQKIH0KIAogc3RydWN0IEdldExhc3RSZXNvcnRGYWxsYmFja0Zv
bnRQcm9jRGF0YSB7Ci0gICAgR2V0TGFzdFJlc29ydEZhbGxiYWNrRm9udFByb2NEYXRhKEZvbnRD
YWNoZSogZm9udENhY2hlLCBjb25zdCBGb250RGVzY3JpcHRpb24qIGZvbnREZXNjcmlwdGlvbiwg
d2NoYXJfdCogZm9udE5hbWUpCisgICAgR2V0TGFzdFJlc29ydEZhbGxiYWNrRm9udFByb2NEYXRh
KEZvbnRDYWNoZSogZm9udENhY2hlLCBjb25zdCBGb250RGVzY3JpcHRpb24qIGZvbnREZXNjcmlw
dGlvbiwgU2hvdWxkUmV0YWluIHNob3VsZFJldGFpbiwgd2NoYXJfdCogZm9udE5hbWUpCiAgICAg
ICAgIDogbV9mb250Q2FjaGUoZm9udENhY2hlKQogICAgICAgICAsIG1fZm9udERlc2NyaXB0aW9u
KGZvbnREZXNjcmlwdGlvbikKKyAgICAgICAgLCBtX3Nob3VsZFJldGFpbihzaG91bGRSZXRhaW4p
CiAgICAgICAgICwgbV9mb250TmFtZShmb250TmFtZSkKICAgICAgICAgLCBtX2ZvbnREYXRhKDAp
CiAgICAgewpAQCAtNDEwLDYgKzQxMSw3IEBAIHN0cnVjdCBHZXRMYXN0UmVzb3J0RmFsbGJhY2tG
b250UHJvY0RhdGEgewogCiAgICAgRm9udENhY2hlKiBtX2ZvbnRDYWNoZTsKICAgICBjb25zdCBG
b250RGVzY3JpcHRpb24qIG1fZm9udERlc2NyaXB0aW9uOworICAgIFNob3VsZFJldGFpbiBtX3No
b3VsZFJldGFpbjsKICAgICB3Y2hhcl90KiBtX2ZvbnROYW1lOwogICAgIFNpbXBsZUZvbnREYXRh
KiBtX2ZvbnREYXRhOwogfTsKQEAgLTQxNyw3ICs0MTksNyBAQCBzdHJ1Y3QgR2V0TGFzdFJlc29y
dEZhbGxiYWNrRm9udFByb2NEYXRhIHsKIHN0YXRpYyBpbnQgQ0FMTEJBQ0sgZ2V0TGFzdFJlc29y
dEZhbGxiYWNrRm9udFByb2MoY29uc3QgTE9HRk9OVCogbG9nRm9udCwgY29uc3QgVEVYVE1FVFJJ
QyogbWV0cmljcywgRFdPUkQgZm9udFR5cGUsIExQQVJBTSBsUGFyYW0pCiB7CiAgICAgR2V0TGFz
dFJlc29ydEZhbGxiYWNrRm9udFByb2NEYXRhKiBwcm9jRGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8
R2V0TGFzdFJlc29ydEZhbGxiYWNrRm9udFByb2NEYXRhKj4obFBhcmFtKTsKLSAgICBwcm9jRGF0
YS0+bV9mb250RGF0YSA9IGZvbnREYXRhRnJvbURlc2NyaXB0aW9uQW5kTG9nRm9udChwcm9jRGF0
YS0+bV9mb250Q2FjaGUsICpwcm9jRGF0YS0+bV9mb250RGVzY3JpcHRpb24sICpsb2dGb250LCBw
cm9jRGF0YS0+bV9mb250TmFtZSk7CisgICAgcHJvY0RhdGEtPm1fZm9udERhdGEgPSBmb250RGF0
YUZyb21EZXNjcmlwdGlvbkFuZExvZ0ZvbnQocHJvY0RhdGEtPm1fZm9udENhY2hlLCAqcHJvY0Rh
dGEtPm1fZm9udERlc2NyaXB0aW9uLCAqcHJvY0RhdGEtPm1fc2hvdWxkUmV0YWluLCAqbG9nRm9u
dCwgcHJvY0RhdGEtPm1fZm9udE5hbWUpOwogICAgIHJldHVybiAhcHJvY0RhdGEtPm1fZm9udERh
dGE7CiB9CiAKQEAgLTUxOCw3ICs1MjAsNyBAQCBTaW1wbGVGb250RGF0YSogRm9udENhY2hlOjpn
ZXRTaW1pbGFyRm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250JiBmb250KQogICAgIHJldHVybiAw
OwogfQogCi1TaW1wbGVGb250RGF0YSogRm9udENhY2hlOjpnZXRMYXN0UmVzb3J0RmFsbGJhY2tG
b250KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24pCitTaW1wbGVGb250RGF0YSog
Rm9udENhY2hlOjpnZXRMYXN0UmVzb3J0RmFsbGJhY2tGb250KGNvbnN0IEZvbnREZXNjcmlwdGlv
biYgZGVzY3JpcHRpb24sIFNob3VsZFJldGFpbiBzaG91bGRSZXRhaW4pCiB7CiAgICAgRm9udERl
c2NyaXB0aW9uOjpHZW5lcmljRmFtaWx5VHlwZSBnZW5lcmljID0gZGVzY3JpcHRpb24uZ2VuZXJp
Y0ZhbWlseSgpOwogCkBAIC01MzUsNyArNTM3LDcgQEAgU2ltcGxlRm9udERhdGEqIEZvbnRDYWNo
ZTo6Z2V0TGFzdFJlc29ydEZhbGxiYWNrRm9udChjb25zdCBGb250RGVzY3JpcHRpb24mIGRlc2MK
ICAgICBlbHNlIGlmIChnZW5lcmljID09IEZvbnREZXNjcmlwdGlvbjo6TW9ub3NwYWNlRmFtaWx5
KQogICAgICAgICBmb250U3RyID0gY291cmllclN0cjsKIAotICAgIFNpbXBsZUZvbnREYXRhKiBz
aW1wbGVGb250ID0gZ2V0Q2FjaGVkRm9udERhdGEoZGVzY3JpcHRpb24sIGZvbnRTdHIpOworICAg
IFNpbXBsZUZvbnREYXRhKiBzaW1wbGVGb250ID0gZ2V0Q2FjaGVkRm9udERhdGEoZGVzY3JpcHRp
b24sIGZvbnRTdHIsIGZhbHNlLCBzaG91bGRSZXRhaW4pOwogICAgIGlmIChzaW1wbGVGb250KQog
ICAgICAgICByZXR1cm4gc2ltcGxlRm9udDsKIApAQCAtNTQ0LDEzICs1NDYsMTMgQEAgU2ltcGxl
Rm9udERhdGEqIEZvbnRDYWNoZTo6Z2V0TGFzdFJlc29ydEZhbGxiYWNrRm9udChjb25zdCBGb250
RGVzY3JpcHRpb24mIGRlc2MKICAgICAvLyB0byBhIHN0YXRpYyB2YXJpYWJsZSBhbmQgdXNlIGl0
IHRvIHByZXZlbnQgdHJ5aW5nIHN5c3RlbSBmb250cyBhZ2Fpbi4KICAgICBzdGF0aWMgd2NoYXJf
dCBmYWxsYmFja0ZvbnROYW1lW0xGX0ZBQ0VTSVpFXSA9IHswfTsKICAgICBpZiAoZmFsbGJhY2tG
b250TmFtZVswXSkKLSAgICAgICAgcmV0dXJuIGdldENhY2hlZEZvbnREYXRhKGRlc2NyaXB0aW9u
LCBmYWxsYmFja0ZvbnROYW1lKTsKKyAgICAgICAgcmV0dXJuIGdldENhY2hlZEZvbnREYXRhKGRl
c2NyaXB0aW9uLCBmYWxsYmFja0ZvbnROYW1lLCBmYWxzZSwgc2hvdWxkUmV0YWluKTsKIAogICAg
IC8vIEZhbGwgYmFjayB0byB0aGUgREVGQVVMVF9HVUlfRk9OVCBpZiBubyBrbm93biBVbmljb2Rl
IGZvbnRzIGFyZSBhdmFpbGFibGUuCiAgICAgaWYgKEhGT05UIGRlZmF1bHRHVUlGb250ID0gc3Rh
dGljX2Nhc3Q8SEZPTlQ+KEdldFN0b2NrT2JqZWN0KERFRkFVTFRfR1VJX0ZPTlQpKSkgewogICAg
ICAgICBMT0dGT05UIGRlZmF1bHRHVUlMb2dGb250OwogICAgICAgICBHZXRPYmplY3QoZGVmYXVs
dEdVSUZvbnQsIHNpemVvZihkZWZhdWx0R1VJTG9nRm9udCksICZkZWZhdWx0R1VJTG9nRm9udCk7
Ci0gICAgICAgIGlmIChzaW1wbGVGb250ID0gZm9udERhdGFGcm9tRGVzY3JpcHRpb25BbmRMb2dG
b250KHRoaXMsIGRlc2NyaXB0aW9uLCBkZWZhdWx0R1VJTG9nRm9udCwgZmFsbGJhY2tGb250TmFt
ZSkpCisgICAgICAgIGlmIChzaW1wbGVGb250ID0gZm9udERhdGFGcm9tRGVzY3JpcHRpb25BbmRM
b2dGb250KHRoaXMsIGRlc2NyaXB0aW9uLCBzaG91bGRSZXRhaW4sIGRlZmF1bHRHVUlMb2dGb250
LCBmYWxsYmFja0ZvbnROYW1lKSkKICAgICAgICAgICAgIHJldHVybiBzaW1wbGVGb250OwogICAg
IH0KIApAQCAtNTU4LDE1ICs1NjAsMTUgQEAgU2ltcGxlRm9udERhdGEqIEZvbnRDYWNoZTo6Z2V0
TGFzdFJlc29ydEZhbGxiYWNrRm9udChjb25zdCBGb250RGVzY3JpcHRpb24mIGRlc2MKICAgICBO
T05DTElFTlRNRVRSSUNTIG5vbkNsaWVudE1ldHJpY3MgPSB7MH07CiAgICAgbm9uQ2xpZW50TWV0
cmljcy5jYlNpemUgPSBzaXplb2Yobm9uQ2xpZW50TWV0cmljcyk7CiAgICAgaWYgKFN5c3RlbVBh
cmFtZXRlcnNJbmZvKFNQSV9HRVROT05DTElFTlRNRVRSSUNTLCBzaXplb2Yobm9uQ2xpZW50TWV0
cmljcyksICZub25DbGllbnRNZXRyaWNzLCAwKSkgewotICAgICAgICBpZiAoc2ltcGxlRm9udCA9
IGZvbnREYXRhRnJvbURlc2NyaXB0aW9uQW5kTG9nRm9udCh0aGlzLCBkZXNjcmlwdGlvbiwgbm9u
Q2xpZW50TWV0cmljcy5sZk1lc3NhZ2VGb250LCBmYWxsYmFja0ZvbnROYW1lKSkKKyAgICAgICAg
aWYgKHNpbXBsZUZvbnQgPSBmb250RGF0YUZyb21EZXNjcmlwdGlvbkFuZExvZ0ZvbnQodGhpcywg
ZGVzY3JpcHRpb24sIHNob3VsZFJldGFpbiwgbm9uQ2xpZW50TWV0cmljcy5sZk1lc3NhZ2VGb250
LCBmYWxsYmFja0ZvbnROYW1lKSkKICAgICAgICAgICAgIHJldHVybiBzaW1wbGVGb250OwotICAg
ICAgICBpZiAoc2ltcGxlRm9udCA9IGZvbnREYXRhRnJvbURlc2NyaXB0aW9uQW5kTG9nRm9udCh0
aGlzLCBkZXNjcmlwdGlvbiwgbm9uQ2xpZW50TWV0cmljcy5sZk1lbnVGb250LCBmYWxsYmFja0Zv
bnROYW1lKSkKKyAgICAgICAgaWYgKHNpbXBsZUZvbnQgPSBmb250RGF0YUZyb21EZXNjcmlwdGlv
bkFuZExvZ0ZvbnQodGhpcywgZGVzY3JpcHRpb24sIHNob3VsZFJldGFpbiwgbm9uQ2xpZW50TWV0
cmljcy5sZk1lbnVGb250LCBmYWxsYmFja0ZvbnROYW1lKSkKICAgICAgICAgICAgIHJldHVybiBz
aW1wbGVGb250OwotICAgICAgICBpZiAoc2ltcGxlRm9udCA9IGZvbnREYXRhRnJvbURlc2NyaXB0
aW9uQW5kTG9nRm9udCh0aGlzLCBkZXNjcmlwdGlvbiwgbm9uQ2xpZW50TWV0cmljcy5sZlN0YXR1
c0ZvbnQsIGZhbGxiYWNrRm9udE5hbWUpKQorICAgICAgICBpZiAoc2ltcGxlRm9udCA9IGZvbnRE
YXRhRnJvbURlc2NyaXB0aW9uQW5kTG9nRm9udCh0aGlzLCBkZXNjcmlwdGlvbiwgc2hvdWxkUmV0
YWluLCBub25DbGllbnRNZXRyaWNzLmxmU3RhdHVzRm9udCwgZmFsbGJhY2tGb250TmFtZSkpCiAg
ICAgICAgICAgICByZXR1cm4gc2ltcGxlRm9udDsKLSAgICAgICAgaWYgKHNpbXBsZUZvbnQgPSBm
b250RGF0YUZyb21EZXNjcmlwdGlvbkFuZExvZ0ZvbnQodGhpcywgZGVzY3JpcHRpb24sIG5vbkNs
aWVudE1ldHJpY3MubGZDYXB0aW9uRm9udCwgZmFsbGJhY2tGb250TmFtZSkpCisgICAgICAgIGlm
IChzaW1wbGVGb250ID0gZm9udERhdGFGcm9tRGVzY3JpcHRpb25BbmRMb2dGb250KHRoaXMsIGRl
c2NyaXB0aW9uLCBzaG91bGRSZXRhaW4sIG5vbkNsaWVudE1ldHJpY3MubGZDYXB0aW9uRm9udCwg
ZmFsbGJhY2tGb250TmFtZSkpCiAgICAgICAgICAgICByZXR1cm4gc2ltcGxlRm9udDsKLSAgICAg
ICAgaWYgKHNpbXBsZUZvbnQgPSBmb250RGF0YUZyb21EZXNjcmlwdGlvbkFuZExvZ0ZvbnQodGhp
cywgZGVzY3JpcHRpb24sIG5vbkNsaWVudE1ldHJpY3MubGZTbUNhcHRpb25Gb250LCBmYWxsYmFj
a0ZvbnROYW1lKSkKKyAgICAgICAgaWYgKHNpbXBsZUZvbnQgPSBmb250RGF0YUZyb21EZXNjcmlw
dGlvbkFuZExvZ0ZvbnQodGhpcywgZGVzY3JpcHRpb24sIHNob3VsZFJldGFpbiwgbm9uQ2xpZW50
TWV0cmljcy5sZlNtQ2FwdGlvbkZvbnQsIGZhbGxiYWNrRm9udE5hbWUpKQogICAgICAgICAgICAg
cmV0dXJuIHNpbXBsZUZvbnQ7CiAgICAgfQogCkBAIC01NzcsNyArNTc5LDcgQEAgU2ltcGxlRm9u
dERhdGEqIEZvbnRDYWNoZTo6Z2V0TGFzdFJlc29ydEZhbGxiYWNrRm9udChjb25zdCBGb250RGVz
Y3JpcHRpb24mIGRlc2MKICAgICAvLyByZXR1cm5lZCBieSB0aGlzIEVudW1Gb250RmFtaWxpZXMo
KSBjYWxsLgogICAgIEhEQyBkYyA9IEdldERDKDApOwogICAgIGlmIChkYykgewotICAgICAgICBH
ZXRMYXN0UmVzb3J0RmFsbGJhY2tGb250UHJvY0RhdGEgcHJvY0RhdGEodGhpcywgJmRlc2NyaXB0
aW9uLCBmYWxsYmFja0ZvbnROYW1lKTsKKyAgICAgICAgR2V0TGFzdFJlc29ydEZhbGxiYWNrRm9u
dFByb2NEYXRhIHByb2NEYXRhKHRoaXMsICZkZXNjcmlwdGlvbiwgc2hvdWxkUmV0YWluLCBmYWxs
YmFja0ZvbnROYW1lKTsKICAgICAgICAgRW51bUZvbnRGYW1pbGllcyhkYywgMCwgZ2V0TGFzdFJl
c29ydEZhbGxiYWNrRm9udFByb2MsIHJlaW50ZXJwcmV0X2Nhc3Q8TFBBUkFNPigmcHJvY0RhdGEp
KTsKICAgICAgICAgUmVsZWFzZURDKDAsIGRjKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udENhY2hlTGludXguY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udENhY2hlTGludXguY3BwCmlu
ZGV4IGFkMjE4ZDcuLjdjZTZkN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRDYWNoZUxpbnV4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250Q2FjaGVMaW51eC5jcHAKQEAgLTcyLDcg
KzcyLDcgQEAgU2ltcGxlRm9udERhdGEqIEZvbnRDYWNoZTo6Z2V0U2ltaWxhckZvbnRQbGF0Zm9y
bURhdGEoY29uc3QgRm9udCYgZm9udCkKICAgICByZXR1cm4gMDsKIH0KIAotU2ltcGxlRm9udERh
dGEqIEZvbnRDYWNoZTo6Z2V0TGFzdFJlc29ydEZhbGxiYWNrRm9udChjb25zdCBGb250RGVzY3Jp
cHRpb24mIGRlc2NyaXB0aW9uKQorU2ltcGxlRm9udERhdGEqIEZvbnRDYWNoZTo6Z2V0TGFzdFJl
c29ydEZhbGxiYWNrRm9udChjb25zdCBGb250RGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uLCBTaG91
bGRSZXRhaW4gc2hvdWxkUmV0YWluKQogewogICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcg
c2Fuc1N0cigiU2FucyIpOwogICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcgc2VyaWZTdHIo
IlNlcmlmIik7CkBAIC04MSwxNCArODEsMTQgQEAgU2ltcGxlRm9udERhdGEqIEZvbnRDYWNoZTo6
Z2V0TGFzdFJlc29ydEZhbGxiYWNrRm9udChjb25zdCBGb250RGVzY3JpcHRpb24mIGRlc2MKICAg
ICBGb250UGxhdGZvcm1EYXRhKiBmb250UGxhdGZvcm1EYXRhID0gMDsKICAgICBzd2l0Y2ggKGRl
c2NyaXB0aW9uLmdlbmVyaWNGYW1pbHkoKSkgewogICAgIGNhc2UgRm9udERlc2NyaXB0aW9uOjpT
ZXJpZkZhbWlseToKLSAgICAgICAgZm9udFBsYXRmb3JtRGF0YSA9IGdldENhY2hlZEZvbnRQbGF0
Zm9ybURhdGEoZGVzY3JpcHRpb24sIHNlcmlmU3RyKTsKKyAgICAgICAgZm9udFBsYXRmb3JtRGF0
YSA9IGdldENhY2hlZEZvbnRQbGF0Zm9ybURhdGEoZGVzY3JpcHRpb24sIHNlcmlmU3RyLCBmYWxz
ZSwgc2hvdWxkUmV0YWluKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBGb250RGVzY3JpcHRp
b246Ok1vbm9zcGFjZUZhbWlseToKLSAgICAgICAgZm9udFBsYXRmb3JtRGF0YSA9IGdldENhY2hl
ZEZvbnRQbGF0Zm9ybURhdGEoZGVzY3JpcHRpb24sIG1vbm9zcGFjZVN0cik7CisgICAgICAgIGZv
bnRQbGF0Zm9ybURhdGEgPSBnZXRDYWNoZWRGb250UGxhdGZvcm1EYXRhKGRlc2NyaXB0aW9uLCBt
b25vc3BhY2VTdHIsIGZhbHNlLCBzaG91bGRSZXRhaW4pOwogICAgICAgICBicmVhazsKICAgICBj
YXNlIEZvbnREZXNjcmlwdGlvbjo6U2Fuc1NlcmlmRmFtaWx5OgogICAgIGRlZmF1bHQ6Ci0gICAg
ICAgIGZvbnRQbGF0Zm9ybURhdGEgPSBnZXRDYWNoZWRGb250UGxhdGZvcm1EYXRhKGRlc2NyaXB0
aW9uLCBzYW5zU3RyKTsKKyAgICAgICAgZm9udFBsYXRmb3JtRGF0YSA9IGdldENhY2hlZEZvbnRQ
bGF0Zm9ybURhdGEoZGVzY3JpcHRpb24sIHNhbnNTdHIsIGZhbHNlLCBzaG91bGRSZXRhaW4pOwog
ICAgICAgICBicmVhazsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDYWNoZUZyZWVUeXBlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDYWNoZUZyZWVUeXBlLmNwcAppbmRl
eCAzYmEzZWM1Li40ZTJkZDg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9mcmVldHlwZS9Gb250Q2FjaGVGcmVlVHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udENhY2hlRnJlZVR5cGUuY3BwCkBAIC0x
MDUsMTIgKzEwNSwxMiBAQCBTaW1wbGVGb250RGF0YSogRm9udENhY2hlOjpnZXRTaW1pbGFyRm9u
dFBsYXRmb3JtRGF0YShjb25zdCBGb250JiBmb250KQogICAgIHJldHVybiAwOwogfQogCi1TaW1w
bGVGb250RGF0YSogRm9udENhY2hlOjpnZXRMYXN0UmVzb3J0RmFsbGJhY2tGb250KGNvbnN0IEZv
bnREZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0aW9uKQorU2ltcGxlRm9udERhdGEqIEZvbnRDYWNo
ZTo6Z2V0TGFzdFJlc29ydEZhbGxiYWNrRm9udChjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnRE
ZXNjcmlwdGlvbiwgU2hvdWxkUmV0YWluIHNob3VsZFJldGFpbikKIHsKICAgICAvLyBXZSB3YW50
IHRvIHJldHVybiBhIGZhbGxiYWNrIGZvbnQgaGVyZSwgb3RoZXJ3aXNlIHRoZSBsb2dpYyBwcmV2
ZW50aW5nIEZvbnRDb25maWcKICAgICAvLyBtYXRjaGVzIGZvciBub24tZmFsbGJhY2sgZm9udHMg
bWlnaHQgcmV0dXJuIDAuIFNlZSBpc0ZhbGxiYWNrRm9udEFsbG93ZWQuCiAgICAgc3RhdGljIEF0
b21pY1N0cmluZyB0aW1lc1N0cigic2VyaWYiKTsKLSAgICByZXR1cm4gZ2V0Q2FjaGVkRm9udERh
dGEoZm9udERlc2NyaXB0aW9uLCB0aW1lc1N0cik7CisgICAgcmV0dXJuIGdldENhY2hlZEZvbnRE
YXRhKGZvbnREZXNjcmlwdGlvbiwgdGltZXNTdHIsIGZhbHNlLCBzaG91bGRSZXRhaW4pOwogfQog
CiB2b2lkIEZvbnRDYWNoZTo6Z2V0VHJhaXRzSW5GYW1pbHkoY29uc3QgQXRvbWljU3RyaW5nJiBm
YW1pbHlOYW1lLCBWZWN0b3I8dW5zaWduZWQ+JiB0cmFpdHNNYXNrcykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hhaWt1L0ZvbnRDYWNoZUhhaWt1LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hhaWt1L0ZvbnRDYWNoZUhhaWt1LmNw
cAppbmRleCBkMDM4OGYwLi4wM2E5NDU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9oYWlrdS9Gb250Q2FjaGVIYWlrdS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFpa3UvRm9udENhY2hlSGFpa3UuY3BwCkBAIC01OCwxMyAr
NTgsMTMgQEAgU2ltcGxlRm9udERhdGEqIEZvbnRDYWNoZTo6Z2V0U2ltaWxhckZvbnRQbGF0Zm9y
bURhdGEoY29uc3QgRm9udCYgZm9udCkKICAgICByZXR1cm4gMDsKIH0KIAotU2ltcGxlRm9udERh
dGEqIEZvbnRDYWNoZTo6Z2V0TGFzdFJlc29ydEZhbGxiYWNrRm9udChjb25zdCBGb250RGVzY3Jp
cHRpb24mIGZvbnREZXNjcmlwdGlvbikKK1NpbXBsZUZvbnREYXRhKiBGb250Q2FjaGU6OmdldExh
c3RSZXNvcnRGYWxsYmFja0ZvbnQoY29uc3QgRm9udERlc2NyaXB0aW9uJiBmb250RGVzY3JpcHRp
b24sIFNob3VsZFJldGFpbiBzaG91bGRSZXRhaW4pCiB7CiAgICAgZm9udF9mYW1pbHkgZmFtaWx5
OwogICAgIGZvbnRfc3R5bGUgc3R5bGU7CiAgICAgYmVfcGxhaW5fZm9udC0+R2V0RmFtaWx5QW5k
U3R5bGUoJmZhbWlseSwgJnN0eWxlKTsKICAgICBBdG9taWNTdHJpbmcgcGxhaW5Gb250RmFtaWx5
KGZhbWlseSk7Ci0gICAgcmV0dXJuIGdldENhY2hlZEZvbnREYXRhKGZvbnREZXNjcmlwdGlvbiwg
cGxhaW5Gb250RmFtaWx5KTsKKyAgICByZXR1cm4gZ2V0Q2FjaGVkRm9udERhdGEoZm9udERlc2Ny
aXB0aW9uLCBwbGFpbkZvbnRGYW1pbHksIGZhbHNlLCBzaG91bGRSZXRhaW4pOwogfQogCiBGb250
UGxhdGZvcm1EYXRhKiBGb250Q2FjaGU6OmNyZWF0ZUZvbnRQbGF0Zm9ybURhdGEoY29uc3QgRm9u
dERlc2NyaXB0aW9uJiBmb250RGVzY3JpcHRpb24sIGNvbnN0IEF0b21pY1N0cmluZyYgZmFtaWx5
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRD
YWNoZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q2Fj
aGVNYWMubW0KaW5kZXggMzRiNWQ3MS4uNWE5YjUwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDYWNoZU1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udENhY2hlTWFjLm1tCkBAIC0xNzcsMTMgKzE3
NywxMyBAQCBTaW1wbGVGb250RGF0YSogRm9udENhY2hlOjpnZXRTaW1pbGFyRm9udFBsYXRmb3Jt
RGF0YShjb25zdCBGb250JiBmb250KQogICAgIHJldHVybiBzaW1wbGVGb250RGF0YTsKIH0KIAot
U2ltcGxlRm9udERhdGEqIEZvbnRDYWNoZTo6Z2V0TGFzdFJlc29ydEZhbGxiYWNrRm9udChjb25z
dCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbikKK1NpbXBsZUZvbnREYXRhKiBGb250
Q2FjaGU6OmdldExhc3RSZXNvcnRGYWxsYmFja0ZvbnQoY29uc3QgRm9udERlc2NyaXB0aW9uJiBm
b250RGVzY3JpcHRpb24sIFNob3VsZFJldGFpbiBzaG91bGRSZXRhaW4pCiB7CiAgICAgREVGSU5F
X1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHRpbWVzU3RyLCAoIlRpbWVzIikpOwogCiAgICAg
Ly8gRklYTUU6IFdvdWxkIGJlIGV2ZW4gYmV0dGVyIHRvIHNvbWVob3cgZ2V0IHRoZSB1c2VyJ3Mg
ZGVmYXVsdCBmb250IGhlcmUuICBGb3Igbm93IHdlJ2xsIHBpY2sKICAgICAvLyB0aGUgZGVmYXVs
dCB0aGF0IHRoZSB1c2VyIHdvdWxkIGdldCB3aXRob3V0IGNoYW5naW5nIGFueSBwcmVmcy4KLSAg
ICBTaW1wbGVGb250RGF0YSogc2ltcGxlRm9udERhdGEgPSBnZXRDYWNoZWRGb250RGF0YShmb250
RGVzY3JpcHRpb24sIHRpbWVzU3RyKTsKKyAgICBTaW1wbGVGb250RGF0YSogc2ltcGxlRm9udERh
dGEgPSBnZXRDYWNoZWRGb250RGF0YShmb250RGVzY3JpcHRpb24sIHRpbWVzU3RyLCBmYWxzZSwg
c2hvdWxkUmV0YWluKTsKICAgICBpZiAoc2ltcGxlRm9udERhdGEpCiAgICAgICAgIHJldHVybiBz
aW1wbGVGb250RGF0YTsKIApAQCAtMTkyLDcgKzE5Miw3IEBAIFNpbXBsZUZvbnREYXRhKiBGb250
Q2FjaGU6OmdldExhc3RSZXNvcnRGYWxsYmFja0ZvbnQoY29uc3QgRm9udERlc2NyaXB0aW9uJiBm
b250CiAgICAgLy8gZ3VhcmFudGVlZCB0byBiZSB0aGVyZSwgYWNjb3JkaW5nIHRvIE5hdGhhbiBU
YXlsb3IuIFRoaXMgaXMgZ29vZCBlbm91Z2gKICAgICAvLyB0byBhdm9pZCBhIGNyYXNoIGF0IGxl
YXN0LgogICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBsdWNpZGFHcmFuZGVT
dHIsICgiTHVjaWRhIEdyYW5kZSIpKTsKLSAgICByZXR1cm4gZ2V0Q2FjaGVkRm9udERhdGEoZm9u
dERlc2NyaXB0aW9uLCBsdWNpZGFHcmFuZGVTdHIpOworICAgIHJldHVybiBnZXRDYWNoZWRGb250
RGF0YShmb250RGVzY3JpcHRpb24sIGx1Y2lkYUdyYW5kZVN0ciwgZmFsc2UsIHNob3VsZFJldGFp
bik7CiB9CiAKIHZvaWQgRm9udENhY2hlOjpnZXRUcmFpdHNJbkZhbWlseShjb25zdCBBdG9taWNT
dHJpbmcmIGZhbWlseU5hbWUsIFZlY3Rvcjx1bnNpZ25lZD4mIHRyYWl0c01hc2tzKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcGFuZ28vRm9udENhY2hlUGFu
Z28uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcGFuZ28vRm9udENhY2hl
UGFuZ28uY3BwCmluZGV4IDM3ZDQ4MzUuLjJiMTJjMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3BhbmdvL0ZvbnRDYWNoZVBhbmdvLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9wYW5nby9Gb250Q2FjaGVQYW5nby5jcHAKQEAg
LTQ1LDEyICs0NSwxMiBAQCBTaW1wbGVGb250RGF0YSogRm9udENhY2hlOjpnZXRTaW1pbGFyRm9u
dFBsYXRmb3JtRGF0YShjb25zdCBGb250JiBmb250KQogICAgIHJldHVybiAwOwogfQogCi1TaW1w
bGVGb250RGF0YSogRm9udENhY2hlOjpnZXRMYXN0UmVzb3J0RmFsbGJhY2tGb250KGNvbnN0IEZv
bnREZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0aW9uKQorU2ltcGxlRm9udERhdGEqIEZvbnRDYWNo
ZTo6Z2V0TGFzdFJlc29ydEZhbGxiYWNrRm9udChjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnRE
ZXNjcmlwdGlvbiwgU2hvdWxkUmV0YWluIHNob3VsZFJldGFpbikKIHsKICAgICAvLyBGSVhNRTog
V291bGQgYmUgZXZlbiBiZXR0ZXIgdG8gc29tZWhvdyBnZXQgdGhlIHVzZXIncyBkZWZhdWx0IGZv
bnQgaGVyZS4KICAgICAvLyBGb3Igbm93IHdlJ2xsIHBpY2sgdGhlIGRlZmF1bHQgdGhhdCB0aGUg
dXNlciB3b3VsZCBnZXQgd2l0aG91dCBjaGFuZ2luZyBhbnkgcHJlZnMuCiAgICAgc3RhdGljIEF0
b21pY1N0cmluZyB0aW1lc1N0cigiVGltZXMgTmV3IFJvbWFuIik7Ci0gICAgcmV0dXJuIGdldENh
Y2hlZEZvbnREYXRhKGZvbnREZXNjcmlwdGlvbiwgdGltZXNTdHIpOworICAgIHJldHVybiBnZXRD
YWNoZWRGb250RGF0YShmb250RGVzY3JpcHRpb24sIHRpbWVzU3RyLCBmYWxzZSwgc2hvdWxkUmV0
YWluKTsKIH0KIAogdm9pZCBGb250Q2FjaGU6OmdldFRyYWl0c0luRmFtaWx5KGNvbnN0IEF0b21p
Y1N0cmluZyYgZmFtaWx5TmFtZSwgVmVjdG9yPHVuc2lnbmVkPiYgdHJhaXRzTWFza3MpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9Gb250Q2FjaGVRdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9Gb250Q2FjaGVRdC5jcHAK
aW5kZXggNzFjZjNlYS4uM2Y1N2FhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvcXQvRm9udENhY2hlUXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3F0L0ZvbnRDYWNoZVF0LmNwcApAQCAtOTQsMTAgKzk0LDEwIEBAIFNpbXBs
ZUZvbnREYXRhKiBGb250Q2FjaGU6OmdldFNpbWlsYXJGb250UGxhdGZvcm1EYXRhKGNvbnN0IEZv
bnQmIGZvbnQpCiAgICAgcmV0dXJuIDA7CiB9CiAKLVNpbXBsZUZvbnREYXRhKiBGb250Q2FjaGU6
OmdldExhc3RSZXNvcnRGYWxsYmFja0ZvbnQoY29uc3QgRm9udERlc2NyaXB0aW9uJiBmb250RGVz
Y3JpcHRpb24pCitTaW1wbGVGb250RGF0YSogRm9udENhY2hlOjpnZXRMYXN0UmVzb3J0RmFsbGJh
Y2tGb250KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0aW9uLiBTaG91bGRSZXRh
aW4gc2hvdWxkUmV0YWluKQogewogICAgIGNvbnN0IEF0b21pY1N0cmluZyBmYWxsYmFja0ZhbWls
eSA9IFFGb250KGZvbnREZXNjcmlwdGlvbi5mYW1pbHkoKS5mYW1pbHkoKSkubGFzdFJlc29ydEZh
bWlseSgpOwotICAgIHJldHVybiBnZXRDYWNoZWRGb250RGF0YShuZXcgRm9udFBsYXRmb3JtRGF0
YShmb250RGVzY3JpcHRpb24sIGZhbGxiYWNrRmFtaWx5KSk7CisgICAgcmV0dXJuIGdldENhY2hl
ZEZvbnREYXRhKG5ldyBGb250UGxhdGZvcm1EYXRhKGZvbnREZXNjcmlwdGlvbiwgZmFsbGJhY2tG
YW1pbHkpLCBzaG91bGRSZXRhaW4pOwogfQogCiB2b2lkIEZvbnRDYWNoZTo6Z2V0VHJhaXRzSW5G
YW1pbHkoY29uc3QgQXRvbWljU3RyaW5nJiwgVmVjdG9yPHVuc2lnbmVkPiYpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENhY2hlV2luLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q2FjaGVXaW4uY3BwCmlu
ZGV4IDkzYmY1OWEuLjUxNTM0ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9Gb250Q2FjaGVXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9Gb250Q2FjaGVXaW4uY3BwCkBAIC0zMDEsMjAgKzMwMSwyMCBAQCBT
aW1wbGVGb250RGF0YSogRm9udENhY2hlOjpnZXRTaW1pbGFyRm9udFBsYXRmb3JtRGF0YShjb25z
dCBGb250JiBmb250KQogICAgIHJldHVybiAwOwogfQogCi1zdGF0aWMgU2ltcGxlRm9udERhdGEq
IGZvbnREYXRhRnJvbURlc2NyaXB0aW9uQW5kTG9nRm9udChGb250Q2FjaGUqIGZvbnRDYWNoZSwg
Y29uc3QgRm9udERlc2NyaXB0aW9uJiBmb250RGVzY3JpcHRpb24sIGNvbnN0IExPR0ZPTlQmIGZv
bnQsIEF0b21pY1N0cmluZyYgb3V0Rm9udEZhbWlseU5hbWUpCitzdGF0aWMgU2ltcGxlRm9udERh
dGEqIGZvbnREYXRhRnJvbURlc2NyaXB0aW9uQW5kTG9nRm9udChGb250Q2FjaGUqIGZvbnRDYWNo
ZSwgY29uc3QgRm9udERlc2NyaXB0aW9uJiBmb250RGVzY3JpcHRpb24sIFNob3VsZFJldGFpbiBz
aG91bGRSZXRhaW4sIGNvbnN0IExPR0ZPTlQmIGZvbnQsIEF0b21pY1N0cmluZyYgb3V0Rm9udEZh
bWlseU5hbWUpCiB7CiAgICAgQXRvbWljU3RyaW5nIGZhbWlseU5hbWUgPSBTdHJpbmcoZm9udC5s
ZkZhY2VOYW1lLCB3Y3NubGVuKGZvbnQubGZGYWNlTmFtZSwgTEZfRkFDRVNJWkUpKTsKLSAgICBT
aW1wbGVGb250RGF0YSogZm9udERhdGEgPSBmb250Q2FjaGUtPmdldENhY2hlZEZvbnREYXRhKGZv
bnREZXNjcmlwdGlvbiwgZmFtaWx5TmFtZSk7CisgICAgU2ltcGxlRm9udERhdGEqIGZvbnREYXRh
ID0gZm9udENhY2hlLT5nZXRDYWNoZWRGb250RGF0YShmb250RGVzY3JpcHRpb24sIGZhbWlseU5h
bWUsIGZhbHNlLCBzaG91bGRSZXRhaW4pOwogICAgIGlmIChmb250RGF0YSkKICAgICAgICAgb3V0
Rm9udEZhbWlseU5hbWUgPSBmYW1pbHlOYW1lOwogICAgIHJldHVybiBmb250RGF0YTsKIH0KIAot
U2ltcGxlRm9udERhdGEqIEZvbnRDYWNoZTo6Z2V0TGFzdFJlc29ydEZhbGxiYWNrRm9udChjb25z
dCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbikKK1NpbXBsZUZvbnREYXRhKiBGb250
Q2FjaGU6OmdldExhc3RSZXNvcnRGYWxsYmFja0ZvbnQoY29uc3QgRm9udERlc2NyaXB0aW9uJiBm
b250RGVzY3JpcHRpb24sIFNob3VsZFJldGFpbiBzaG91bGRSZXRhaW4pCiB7CiAgICAgREVGSU5F
X1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGZhbGxiYWNrRm9udE5hbWUsICgpKTsKICAgICBp
ZiAoIWZhbGxiYWNrRm9udE5hbWUuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gZ2V0Q2FjaGVk
Rm9udERhdGEoZm9udERlc2NyaXB0aW9uLCBmYWxsYmFja0ZvbnROYW1lKTsKKyAgICAgICAgcmV0
dXJuIGdldENhY2hlZEZvbnREYXRhKGZvbnREZXNjcmlwdGlvbiwgZmFsbGJhY2tGb250TmFtZSwg
ZmFsc2UsIHNob3VsZFJldGFpbik7CiAKICAgICAvLyBGSVhNRTogV291bGQgYmUgZXZlbiBiZXR0
ZXIgdG8gc29tZWhvdyBnZXQgdGhlIHVzZXIncyBkZWZhdWx0IGZvbnQgaGVyZS4gIEZvciBub3cg
d2UnbGwgcGljawogICAgIC8vIHRoZSBkZWZhdWx0IHRoYXQgdGhlIHVzZXIgd291bGQgZ2V0IHdp
dGhvdXQgY2hhbmdpbmcgYW55IHByZWZzLgpAQCAtMzMxLDcgKzMzMSw3IEBAIFNpbXBsZUZvbnRE
YXRhKiBGb250Q2FjaGU6OmdldExhc3RSZXNvcnRGYWxsYmFja0ZvbnQoY29uc3QgRm9udERlc2Ny
aXB0aW9uJiBmb250CiAgICAgfTsKICAgICBTaW1wbGVGb250RGF0YSogc2ltcGxlRm9udDsKICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IFdURl9BUlJBWV9MRU5HVEgoZmFsbGJhY2tGb250cyk7
ICsraSkgewotICAgICAgICBpZiAoc2ltcGxlRm9udCA9IGdldENhY2hlZEZvbnREYXRhKGZvbnRE
ZXNjcmlwdGlvbiwgZmFsbGJhY2tGb250c1tpXSkpIHsKKyAgICAgICAgaWYgKHNpbXBsZUZvbnQg
PSBnZXRDYWNoZWRGb250RGF0YShmb250RGVzY3JpcHRpb24sIGZhbGxiYWNrRm9udHNbaV0pLCBm
YWxzZSwgc2hvdWxkUmV0YWluKSB7CiAgICAgICAgICAgICBmYWxsYmFja0ZvbnROYW1lID0gZmFs
bGJhY2tGb250c1tpXTsKICAgICAgICAgICAgIHJldHVybiBzaW1wbGVGb250OwogICAgICAgICB9
CkBAIC0zNDEsNyArMzQxLDcgQEAgU2ltcGxlRm9udERhdGEqIEZvbnRDYWNoZTo6Z2V0TGFzdFJl
c29ydEZhbGxiYWNrRm9udChjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnQKICAgICBpZiAoSEZP
TlQgZGVmYXVsdEdVSUZvbnQgPSBzdGF0aWNfY2FzdDxIRk9OVD4oR2V0U3RvY2tPYmplY3QoREVG
QVVMVF9HVUlfRk9OVCkpKSB7CiAgICAgICAgIExPR0ZPTlQgZGVmYXVsdEdVSUxvZ0ZvbnQ7CiAg
ICAgICAgIEdldE9iamVjdChkZWZhdWx0R1VJRm9udCwgc2l6ZW9mKGRlZmF1bHRHVUlMb2dGb250
KSwgJmRlZmF1bHRHVUlMb2dGb250KTsKLSAgICAgICAgaWYgKHNpbXBsZUZvbnQgPSBmb250RGF0
YUZyb21EZXNjcmlwdGlvbkFuZExvZ0ZvbnQodGhpcywgZm9udERlc2NyaXB0aW9uLCBkZWZhdWx0
R1VJTG9nRm9udCwgZmFsbGJhY2tGb250TmFtZSkpCisgICAgICAgIGlmIChzaW1wbGVGb250ID0g
Zm9udERhdGFGcm9tRGVzY3JpcHRpb25BbmRMb2dGb250KHRoaXMsIGZvbnREZXNjcmlwdGlvbiwg
c2hvdWxkUmV0YWluLCBkZWZhdWx0R1VJTG9nRm9udCwgZmFsbGJhY2tGb250TmFtZSkpCiAgICAg
ICAgICAgICByZXR1cm4gc2ltcGxlRm9udDsKICAgICB9CiAKQEAgLTM0OSwxNSArMzQ5LDE1IEBA
IFNpbXBsZUZvbnREYXRhKiBGb250Q2FjaGU6OmdldExhc3RSZXNvcnRGYWxsYmFja0ZvbnQoY29u
c3QgRm9udERlc2NyaXB0aW9uJiBmb250CiAgICAgTk9OQ0xJRU5UTUVUUklDUyBub25DbGllbnRN
ZXRyaWNzID0gezB9OwogICAgIG5vbkNsaWVudE1ldHJpY3MuY2JTaXplID0gc2l6ZW9mKG5vbkNs
aWVudE1ldHJpY3MpOwogICAgIGlmIChTeXN0ZW1QYXJhbWV0ZXJzSW5mbyhTUElfR0VUTk9OQ0xJ
RU5UTUVUUklDUywgc2l6ZW9mKG5vbkNsaWVudE1ldHJpY3MpLCAmbm9uQ2xpZW50TWV0cmljcywg
MCkpIHsKLSAgICAgICAgaWYgKHNpbXBsZUZvbnQgPSBmb250RGF0YUZyb21EZXNjcmlwdGlvbkFu
ZExvZ0ZvbnQodGhpcywgZm9udERlc2NyaXB0aW9uLCBub25DbGllbnRNZXRyaWNzLmxmTWVzc2Fn
ZUZvbnQsIGZhbGxiYWNrRm9udE5hbWUpKQorICAgICAgICBpZiAoc2ltcGxlRm9udCA9IGZvbnRE
YXRhRnJvbURlc2NyaXB0aW9uQW5kTG9nRm9udCh0aGlzLCBmb250RGVzY3JpcHRpb24sIHNob3Vs
ZFJldGFpbiwgbm9uQ2xpZW50TWV0cmljcy5sZk1lc3NhZ2VGb250LCBmYWxsYmFja0ZvbnROYW1l
KSkKICAgICAgICAgICAgIHJldHVybiBzaW1wbGVGb250OwotICAgICAgICBpZiAoc2ltcGxlRm9u
dCA9IGZvbnREYXRhRnJvbURlc2NyaXB0aW9uQW5kTG9nRm9udCh0aGlzLCBmb250RGVzY3JpcHRp
b24sIG5vbkNsaWVudE1ldHJpY3MubGZNZW51Rm9udCwgZmFsbGJhY2tGb250TmFtZSkpCisgICAg
ICAgIGlmIChzaW1wbGVGb250ID0gZm9udERhdGFGcm9tRGVzY3JpcHRpb25BbmRMb2dGb250KHRo
aXMsIGZvbnREZXNjcmlwdGlvbiwgc2hvdWxkUmV0YWluLCBub25DbGllbnRNZXRyaWNzLmxmTWVu
dUZvbnQsIGZhbGxiYWNrRm9udE5hbWUpKQogICAgICAgICAgICAgcmV0dXJuIHNpbXBsZUZvbnQ7
Ci0gICAgICAgIGlmIChzaW1wbGVGb250ID0gZm9udERhdGFGcm9tRGVzY3JpcHRpb25BbmRMb2dG
b250KHRoaXMsIGZvbnREZXNjcmlwdGlvbiwgbm9uQ2xpZW50TWV0cmljcy5sZlN0YXR1c0ZvbnQs
IGZhbGxiYWNrRm9udE5hbWUpKQorICAgICAgICBpZiAoc2ltcGxlRm9udCA9IGZvbnREYXRhRnJv
bURlc2NyaXB0aW9uQW5kTG9nRm9udCh0aGlzLCBmb250RGVzY3JpcHRpb24sIHNob3VsZFJldGFp
biwgbm9uQ2xpZW50TWV0cmljcy5sZlN0YXR1c0ZvbnQsIGZhbGxiYWNrRm9udE5hbWUpKQogICAg
ICAgICAgICAgcmV0dXJuIHNpbXBsZUZvbnQ7Ci0gICAgICAgIGlmIChzaW1wbGVGb250ID0gZm9u
dERhdGFGcm9tRGVzY3JpcHRpb25BbmRMb2dGb250KHRoaXMsIGZvbnREZXNjcmlwdGlvbiwgbm9u
Q2xpZW50TWV0cmljcy5sZkNhcHRpb25Gb250LCBmYWxsYmFja0ZvbnROYW1lKSkKKyAgICAgICAg
aWYgKHNpbXBsZUZvbnQgPSBmb250RGF0YUZyb21EZXNjcmlwdGlvbkFuZExvZ0ZvbnQodGhpcywg
Zm9udERlc2NyaXB0aW9uLCBzaG91bGRSZXRhaW4sIG5vbkNsaWVudE1ldHJpY3MubGZDYXB0aW9u
Rm9udCwgZmFsbGJhY2tGb250TmFtZSkpCiAgICAgICAgICAgICByZXR1cm4gc2ltcGxlRm9udDsK
LSAgICAgICAgaWYgKHNpbXBsZUZvbnQgPSBmb250RGF0YUZyb21EZXNjcmlwdGlvbkFuZExvZ0Zv
bnQodGhpcywgZm9udERlc2NyaXB0aW9uLCBub25DbGllbnRNZXRyaWNzLmxmU21DYXB0aW9uRm9u
dCwgZmFsbGJhY2tGb250TmFtZSkpCisgICAgICAgIGlmIChzaW1wbGVGb250ID0gZm9udERhdGFG
cm9tRGVzY3JpcHRpb25BbmRMb2dGb250KHRoaXMsIGZvbnREZXNjcmlwdGlvbiwgc2hvdWxkUmV0
YWluLCBub25DbGllbnRNZXRyaWNzLmxmU21DYXB0aW9uRm9udCwgZmFsbGJhY2tGb250TmFtZSkp
CiAgICAgICAgICAgICByZXR1cm4gc2ltcGxlRm9udDsKICAgICB9CiAgICAgCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9Gb250Q2FjaGVXaW5DRS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9Gb250Q2FjaGVXaW5D
RS5jcHAKaW5kZXggMmQ3MjAwOC4uODZjNjE0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvRm9udENhY2hlV2luQ0UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0ZvbnRDYWNoZVdpbkNFLmNwcApAQCAtMzIx
LDExICszMjEsMTEgQEAgU2ltcGxlRm9udERhdGEqIEZvbnRDYWNoZTo6Z2V0U2ltaWxhckZvbnRQ
bGF0Zm9ybURhdGEoY29uc3QgRm9udCYgZm9udCkKICAgICByZXR1cm4gMDsKIH0KIAotU2ltcGxl
Rm9udERhdGEqIEZvbnRDYWNoZTo6Z2V0TGFzdFJlc29ydEZhbGxiYWNrRm9udChjb25zdCBGb250
RGVzY3JpcHRpb24mIGZvbnREZXNjKQorU2ltcGxlRm9udERhdGEqIEZvbnRDYWNoZTo6Z2V0TGFz
dFJlc29ydEZhbGxiYWNrRm9udChjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjLCBTaG91
bGRSZXRhaW4gc2hvdWxkUmV0YWluKQogewogICAgIC8vIEZJWE1FOiBXb3VsZCBiZSBldmVuIGJl
dHRlciB0byBzb21laG93IGdldCB0aGUgdXNlcidzIGRlZmF1bHQgZm9udCBoZXJlLiAgRm9yIG5v
dyB3ZSdsbCBwaWNrCiAgICAgLy8gdGhlIGRlZmF1bHQgdGhhdCB0aGUgdXNlciB3b3VsZCBnZXQg
d2l0aG91dCBjaGFuZ2luZyBhbnkgcHJlZnMuCi0gICAgcmV0dXJuIGdldENhY2hlZEZvbnREYXRh
KGZvbnREZXNjLCBGb250UGxhdGZvcm1EYXRhOjpkZWZhdWx0Rm9udEZhbWlseSgpKTsKKyAgICBy
ZXR1cm4gZ2V0Q2FjaGVkRm9udERhdGEoZm9udERlc2MsIEZvbnRQbGF0Zm9ybURhdGE6OmRlZmF1
bHRGb250RmFtaWx5KCksIGZhbHNlLCBzaG91bGRSZXRhaW4pOwogfQogCiBGb250UGxhdGZvcm1E
YXRhKiBGb250Q2FjaGU6OmNyZWF0ZUZvbnRQbGF0Zm9ybURhdGEoY29uc3QgRm9udERlc2NyaXB0
aW9uJiBmb250RGVzY3JpcHRpb24sIGNvbnN0IEF0b21pY1N0cmluZyYgZmFtaWx5KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd3gvRm9udENhY2hlV3guY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd3gvRm9udENhY2hlV3guY3BwCmlu
ZGV4IGI3N2YxNTUuLmIwMjc3OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3d4L0ZvbnRDYWNoZVd4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93eC9Gb250Q2FjaGVXeC5jcHAKQEAgLTc3LDcgKzc3LDcgQEAgU2ltcGxlRm9u
dERhdGEqIEZvbnRDYWNoZTo6Z2V0U2ltaWxhckZvbnRQbGF0Zm9ybURhdGEoY29uc3QgRm9udCYg
Zm9udCkKICAgICByZXR1cm4gc2ltcGxlRm9udERhdGE7CiB9CiAKLVNpbXBsZUZvbnREYXRhKiBG
b250Q2FjaGU6OmdldExhc3RSZXNvcnRGYWxsYmFja0ZvbnQoY29uc3QgRm9udERlc2NyaXB0aW9u
JiBmb250RGVzY3JpcHRpb24pCitTaW1wbGVGb250RGF0YSogRm9udENhY2hlOjpnZXRMYXN0UmVz
b3J0RmFsbGJhY2tGb250KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0aW9uLCBT
aG91bGRSZXRhaW4gc2hvdWxkUmV0YWluKQogewogICAgIC8vIEZJWE1FOiBXb3VsZCBiZSBldmVu
IGJldHRlciB0byBzb21laG93IGdldCB0aGUgdXNlcidzIGRlZmF1bHQgZm9udCBoZXJlLiAgRm9y
IG5vdyB3ZSdsbCBwaWNrCiAgICAgLy8gdGhlIGRlZmF1bHQgdGhhdCB0aGUgdXNlciB3b3VsZCBn
ZXQgd2l0aG91dCBjaGFuZ2luZyBhbnkgcHJlZnMuCkBAIC04Nyw3ICs4Nyw3IEBAIFNpbXBsZUZv
bnREYXRhKiBGb250Q2FjaGU6OmdldExhc3RSZXNvcnRGYWxsYmFja0ZvbnQoY29uc3QgRm9udERl
c2NyaXB0aW9uJiBmb250CiAjZWxzZQogICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgZmFsbGJhY2tO
YW1lKCJUaW1lcyBOZXcgUm9tYW4iKTsKICNlbmRpZgotICAgIGZhbGxiYWNrID0gZ2V0Q2FjaGVk
Rm9udERhdGEoZm9udERlc2NyaXB0aW9uLCBmYWxsYmFja05hbWUpOworICAgIGZhbGxiYWNrID0g
Z2V0Q2FjaGVkRm9udERhdGEoZm9udERlc2NyaXB0aW9uLCBmYWxsYmFja05hbWUsIGZhbHNlLCBz
aG91bGRSZXRhaW4pOwogICAgIEFTU0VSVChmYWxsYmFjayk7CiAgICAgCiAgICAgcmV0dXJuIGZh
bGxiYWNrOwo=
</data>
<flag name="commit-queue"
          id="99725"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104006</attachid>
            <date>2011-08-15 22:28:10 -0700</date>
            <delta_ts>2011-08-16 12:18:25 -0700</delta_ts>
            <desc>[PATCH] Fix Builds</desc>
            <filename>proposed-fix-4.patch</filename>
            <type>text/plain</type>
            <size>25510</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA3YWZkYmEyLi44YzJkOTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDgg
QEAKKzIwMTEtMDgtMTUgIEpvc2VwaCBQZWNvcmFybyAgPGpvZXBlY2tAd2Via2l0Lm9yZz4KKwor
ICAgICAgICBBYmFuZG9uZWQgTWVtb3J5OiBUZW1wb3JhcnkgQ1NTIEZvbnRzIE1heSBOZXZlciBC
ZSBQdXJnZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTY2MTUzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
V2hpbGUgYSByZW1vdGUgQ1NTIGZvbnQgZmFjZSBpcyBsb2FkaW5nIHdlIGZhbGxiYWNrIHRvIGEK
KyAgICAgICAgdGVtcG9yYXJ5IGZvbnQuIFdlIGRvbid0IHdhbnQgdG8gcmV0YWluIHRoZSBmYWxs
YmFjayBmb250CisgICAgICAgIGJlY2F1c2Ugbm9vbmUgdGFrZXMgb3duZXJzaGlwIG9mIHRoZSB0
ZW1wb3JhcnkgZm9udC4gVGhpcworICAgICAgICBwYXRjaCBhZGRzIGEgd2F5IHRvIGdldCBhbiB1
bmNhY2hlZCBmYWxsYmFjayBmb250LCB3aGljaAorICAgICAgICBwbHVtYnMgdGhlIFNob3VsZFJl
dGFpbiBlbnVtIHRocm91Z2ggdGhlIGRpZmZlcmVudCBwbGF0Zm9ybQorICAgICAgICBpbXBsZW1l
bnRhdGlvbnMgb2YgZ2V0TGFzdFJlc29ydEZhbGxiYWNrRm9udC4KKworICAgICAgICBObyBuZXcg
dGVzdHMsIG5vIGZ1bmN0aW9uYWwgY2hhbmdlLgorCisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNl
U291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU291cmNlOjpnZXRGb250
RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZvbnRDYWNoZTo6Z2V0Tm9uUmV0YWluZWRMYXN0UmVzb3J0RmFsbGJhY2tG
b250KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250Q2FjaGVDaHJvbWl1bVdpbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpmb250RGF0YUZyb21EZXNjcmlwdGlvbkFuZExvZ0ZvbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6R2V0TGFzdFJlc29ydEZhbGxiYWNrRm9udFByb2NEYXRhOjpHZXRMYXN0
UmVzb3J0RmFsbGJhY2tGb250UHJvY0RhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0TGFzdFJl
c29ydEZhbGxiYWNrRm9udFByb2MpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hlOjpnZXRM
YXN0UmVzb3J0RmFsbGJhY2tGb250KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9Gb250Q2FjaGVMaW51eC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FjaGU6Omdl
dExhc3RSZXNvcnRGYWxsYmFja0ZvbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Zy
ZWV0eXBlL0ZvbnRDYWNoZUZyZWVUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYWNo
ZTo6Z2V0TGFzdFJlc29ydEZhbGxiYWNrRm9udCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvaGFpa3UvRm9udENhY2hlSGFpa3UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hl
OjpnZXRMYXN0UmVzb3J0RmFsbGJhY2tGb250KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvRm9udENhY2hlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hlOjpnZXRM
YXN0UmVzb3J0RmFsbGJhY2tGb250KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9wYW5n
by9Gb250Q2FjaGVQYW5nby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FjaGU6OmdldExh
c3RSZXNvcnRGYWxsYmFja0ZvbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0Zv
bnRDYWNoZVF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYWNoZTo6Z2V0TGFzdFJlc29y
dEZhbGxiYWNrRm9udCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDYWNo
ZVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpmb250RGF0YUZyb21EZXNjcmlwdGlvbkFuZExv
Z0ZvbnQpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hlOjpnZXRMYXN0UmVzb3J0RmFsbGJh
Y2tGb250KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9Gb250Q2FjaGVXaW5D
RS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd3gvRm9udENhY2hlV3guY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hlOjpnZXRMYXN0UmVzb3J0RmFsbGJhY2tGb250KToK
KwogMjAxMS0wOC0xMyAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJl
bW92ZSBmb3J3YXJkIGRlY2xhcmF0aW9uIG9mIC1bV2ViVW5kZWZpbmVkIGRlYWxsb2NdIHRvIGFw
cGVhc2UgdGhlIGJvdCBnb2RzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Zv
bnRGYWNlU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5j
cHAKaW5kZXggNWRiMzQwZS4uMmM3MmM3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0ZvbnRGYWNlU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZh
Y2VTb3VyY2UuY3BwCkBAIC0xODUsNyArMTg1LDcgQEAgU2ltcGxlRm9udERhdGEqIENTU0ZvbnRG
YWNlU291cmNlOjpnZXRGb250RGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmkK
ICAgICAgICAgaWYgKCFtX2xvYWRTdGFydFRpbWVyLmlzQWN0aXZlKCkpCiAgICAgICAgICAgICBt
X2xvYWRTdGFydFRpbWVyLnN0YXJ0T25lU2hvdCgwKTsKIAotICAgICAgICBTaW1wbGVGb250RGF0
YSogdGVtcERhdGEgPSBmb250Q2FjaGUoKS0+Z2V0TGFzdFJlc29ydEZhbGxiYWNrRm9udChmb250
RGVzY3JpcHRpb24pOworICAgICAgICBTaW1wbGVGb250RGF0YSogdGVtcERhdGEgPSBmb250Q2Fj
aGUoKS0+Z2V0Tm9uUmV0YWluZWRMYXN0UmVzb3J0RmFsbGJhY2tGb250KGZvbnREZXNjcmlwdGlv
bik7CiAgICAgICAgIGZvbnREYXRhID0gYWRvcHRQdHIobmV3IFNpbXBsZUZvbnREYXRhKHRlbXBE
YXRhLT5wbGF0Zm9ybURhdGEoKSwgdHJ1ZSwgdHJ1ZSkpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAKaW5kZXggMWM1OWNiN2QuLmZl
ZTQ3MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRD
YWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hl
LmNwcApAQCAtMzA5LDYgKzMwOSwxMSBAQCBTaW1wbGVGb250RGF0YSogRm9udENhY2hlOjpnZXRD
YWNoZWRGb250RGF0YShjb25zdCBGb250UGxhdGZvcm1EYXRhKiBwbGF0Zm9ybURhdAogICAgIHJl
dHVybiByZXN1bHQuZ2V0KCktPnNlY29uZC5maXJzdDsKIH0KIAorU2ltcGxlRm9udERhdGEqIEZv
bnRDYWNoZTo6Z2V0Tm9uUmV0YWluZWRMYXN0UmVzb3J0RmFsbGJhY2tGb250KGNvbnN0IEZvbnRE
ZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0aW9uKQoreworICAgIHJldHVybiBnZXRMYXN0UmVzb3J0
RmFsbGJhY2tGb250KGZvbnREZXNjcmlwdGlvbiwgRG9Ob3RSZXRhaW4pOworfQorCiB2b2lkIEZv
bnRDYWNoZTo6cmVsZWFzZUZvbnREYXRhKGNvbnN0IFNpbXBsZUZvbnREYXRhKiBmb250RGF0YSkK
IHsKICAgICBBU1NFUlQoZ0ZvbnREYXRhQ2FjaGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Gb250Q2FjaGUuaAppbmRleCA1MGEyOWFlLi40NjUzMjBiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaApAQCAtODQsNyArODQsOCBA
QCBwdWJsaWM6CiAgICAgdm9pZCBnZXRUcmFpdHNJbkZhbWlseShjb25zdCBBdG9taWNTdHJpbmcm
LCBWZWN0b3I8dW5zaWduZWQ+Jik7CiAKICAgICBTaW1wbGVGb250RGF0YSogZ2V0Q2FjaGVkRm9u
dERhdGEoY29uc3QgRm9udERlc2NyaXB0aW9uJiwgY29uc3QgQXRvbWljU3RyaW5nJiwgYm9vbCBj
aGVja2luZ0FsdGVybmF0ZU5hbWUgPSBmYWxzZSwgU2hvdWxkUmV0YWluID0gUmV0YWluKTsKLSAg
ICBTaW1wbGVGb250RGF0YSogZ2V0TGFzdFJlc29ydEZhbGxiYWNrRm9udChjb25zdCBGb250RGVz
Y3JpcHRpb24mKTsKKyAgICBTaW1wbGVGb250RGF0YSogZ2V0TGFzdFJlc29ydEZhbGxiYWNrRm9u
dChjb25zdCBGb250RGVzY3JpcHRpb24mLCBTaG91bGRSZXRhaW4gPSBSZXRhaW4pOworICAgIFNp
bXBsZUZvbnREYXRhKiBnZXROb25SZXRhaW5lZExhc3RSZXNvcnRGYWxsYmFja0ZvbnQoY29uc3Qg
Rm9udERlc2NyaXB0aW9uJik7CiAKICAgICB2b2lkIGFkZENsaWVudChGb250U2VsZWN0b3IqKTsK
ICAgICB2b2lkIHJlbW92ZUNsaWVudChGb250U2VsZWN0b3IqKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRDYWNoZUNocm9taXVtV2lu
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRDYWNo
ZUNocm9taXVtV2luLmNwcAppbmRleCBiM2JlMmE1Li5mMTNkMmExIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250Q2FjaGVDaHJvbWl1bVdp
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9u
dENhY2hlQ2hyb21pdW1XaW4uY3BwCkBAIC0zMjUsOSArMzI1LDkgQEAgc3RhdGljIGJvb2wgZm9u
dENvbnRhaW5zQ2hhcmFjdGVyKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEqIGZvbnREYXRhLAogfQog
CiAvLyBUcmllcyB0aGUgZ2l2ZW4gZm9udCBhbmQgc2F2ZSBpdCB8b3V0Rm9udEZhbWlseU5hbWV8
IGlmIGl0IHN1Y2NlZWRzLgotc3RhdGljIFNpbXBsZUZvbnREYXRhKiBmb250RGF0YUZyb21EZXNj
cmlwdGlvbkFuZExvZ0ZvbnQoRm9udENhY2hlKiBmb250Q2FjaGUsIGNvbnN0IEZvbnREZXNjcmlw
dGlvbiYgZm9udERlc2NyaXB0aW9uLCBjb25zdCBMT0dGT05UJiBmb250LCB3Y2hhcl90KiBvdXRG
b250RmFtaWx5TmFtZSkKK3N0YXRpYyBTaW1wbGVGb250RGF0YSogZm9udERhdGFGcm9tRGVzY3Jp
cHRpb25BbmRMb2dGb250KEZvbnRDYWNoZSogZm9udENhY2hlLCBjb25zdCBGb250RGVzY3JpcHRp
b24mIGZvbnREZXNjcmlwdGlvbiwgU2hvdWxkUmV0YWluIHNob3VsZFJldGFpbiwgY29uc3QgTE9H
Rk9OVCYgZm9udCwgd2NoYXJfdCogb3V0Rm9udEZhbWlseU5hbWUpCiB7Ci0gICAgU2ltcGxlRm9u
dERhdGEqIGZvbnREYXRhID0gZm9udENhY2hlLT5nZXRDYWNoZWRGb250RGF0YShmb250RGVzY3Jp
cHRpb24sIGZvbnQubGZGYWNlTmFtZSk7CisgICAgU2ltcGxlRm9udERhdGEqIGZvbnREYXRhID0g
Zm9udENhY2hlLT5nZXRDYWNoZWRGb250RGF0YShmb250RGVzY3JpcHRpb24sIGZvbnQubGZGYWNl
TmFtZSwgZmFsc2UsIHNob3VsZFJldGFpbik7CiAgICAgaWYgKGZvbnREYXRhKQogICAgICAgICBt
ZW1jcHkob3V0Rm9udEZhbWlseU5hbWUsIGZvbnQubGZGYWNlTmFtZSwgc2l6ZW9mKGZvbnQubGZG
YWNlTmFtZSkpOwogICAgIHJldHVybiBmb250RGF0YTsKQEAgLTQwMCw5ICs0MDAsMTAgQEAgc3Rh
dGljIGludCBDQUxMQkFDSyB0cmFpdHNJbkZhbWlseUVudW1Qcm9jKENPTlNUIExPR0ZPTlQqIGxv
Z0ZvbnQsIENPTlNUIFRFWFRNRVQKIH0KIAogc3RydWN0IEdldExhc3RSZXNvcnRGYWxsYmFja0Zv
bnRQcm9jRGF0YSB7Ci0gICAgR2V0TGFzdFJlc29ydEZhbGxiYWNrRm9udFByb2NEYXRhKEZvbnRD
YWNoZSogZm9udENhY2hlLCBjb25zdCBGb250RGVzY3JpcHRpb24qIGZvbnREZXNjcmlwdGlvbiwg
d2NoYXJfdCogZm9udE5hbWUpCisgICAgR2V0TGFzdFJlc29ydEZhbGxiYWNrRm9udFByb2NEYXRh
KEZvbnRDYWNoZSogZm9udENhY2hlLCBjb25zdCBGb250RGVzY3JpcHRpb24qIGZvbnREZXNjcmlw
dGlvbiwgU2hvdWxkUmV0YWluIHNob3VsZFJldGFpbiwgd2NoYXJfdCogZm9udE5hbWUpCiAgICAg
ICAgIDogbV9mb250Q2FjaGUoZm9udENhY2hlKQogICAgICAgICAsIG1fZm9udERlc2NyaXB0aW9u
KGZvbnREZXNjcmlwdGlvbikKKyAgICAgICAgLCBtX3Nob3VsZFJldGFpbihzaG91bGRSZXRhaW4p
CiAgICAgICAgICwgbV9mb250TmFtZShmb250TmFtZSkKICAgICAgICAgLCBtX2ZvbnREYXRhKDAp
CiAgICAgewpAQCAtNDEwLDYgKzQxMSw3IEBAIHN0cnVjdCBHZXRMYXN0UmVzb3J0RmFsbGJhY2tG
b250UHJvY0RhdGEgewogCiAgICAgRm9udENhY2hlKiBtX2ZvbnRDYWNoZTsKICAgICBjb25zdCBG
b250RGVzY3JpcHRpb24qIG1fZm9udERlc2NyaXB0aW9uOworICAgIFNob3VsZFJldGFpbiBtX3No
b3VsZFJldGFpbjsKICAgICB3Y2hhcl90KiBtX2ZvbnROYW1lOwogICAgIFNpbXBsZUZvbnREYXRh
KiBtX2ZvbnREYXRhOwogfTsKQEAgLTQxNyw3ICs0MTksNyBAQCBzdHJ1Y3QgR2V0TGFzdFJlc29y
dEZhbGxiYWNrRm9udFByb2NEYXRhIHsKIHN0YXRpYyBpbnQgQ0FMTEJBQ0sgZ2V0TGFzdFJlc29y
dEZhbGxiYWNrRm9udFByb2MoY29uc3QgTE9HRk9OVCogbG9nRm9udCwgY29uc3QgVEVYVE1FVFJJ
QyogbWV0cmljcywgRFdPUkQgZm9udFR5cGUsIExQQVJBTSBsUGFyYW0pCiB7CiAgICAgR2V0TGFz
dFJlc29ydEZhbGxiYWNrRm9udFByb2NEYXRhKiBwcm9jRGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8
R2V0TGFzdFJlc29ydEZhbGxiYWNrRm9udFByb2NEYXRhKj4obFBhcmFtKTsKLSAgICBwcm9jRGF0
YS0+bV9mb250RGF0YSA9IGZvbnREYXRhRnJvbURlc2NyaXB0aW9uQW5kTG9nRm9udChwcm9jRGF0
YS0+bV9mb250Q2FjaGUsICpwcm9jRGF0YS0+bV9mb250RGVzY3JpcHRpb24sICpsb2dGb250LCBw
cm9jRGF0YS0+bV9mb250TmFtZSk7CisgICAgcHJvY0RhdGEtPm1fZm9udERhdGEgPSBmb250RGF0
YUZyb21EZXNjcmlwdGlvbkFuZExvZ0ZvbnQocHJvY0RhdGEtPm1fZm9udENhY2hlLCAqcHJvY0Rh
dGEtPm1fZm9udERlc2NyaXB0aW9uLCBwcm9jRGF0YS0+bV9zaG91bGRSZXRhaW4sICpsb2dGb250
LCBwcm9jRGF0YS0+bV9mb250TmFtZSk7CiAgICAgcmV0dXJuICFwcm9jRGF0YS0+bV9mb250RGF0
YTsKIH0KIApAQCAtNTE4LDcgKzUyMCw3IEBAIFNpbXBsZUZvbnREYXRhKiBGb250Q2FjaGU6Omdl
dFNpbWlsYXJGb250UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnQmIGZvbnQpCiAgICAgcmV0dXJuIDA7
CiB9CiAKLVNpbXBsZUZvbnREYXRhKiBGb250Q2FjaGU6OmdldExhc3RSZXNvcnRGYWxsYmFja0Zv
bnQoY29uc3QgRm9udERlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbikKK1NpbXBsZUZvbnREYXRhKiBG
b250Q2FjaGU6OmdldExhc3RSZXNvcnRGYWxsYmFja0ZvbnQoY29uc3QgRm9udERlc2NyaXB0aW9u
JiBkZXNjcmlwdGlvbiwgU2hvdWxkUmV0YWluIHNob3VsZFJldGFpbikKIHsKICAgICBGb250RGVz
Y3JpcHRpb246OkdlbmVyaWNGYW1pbHlUeXBlIGdlbmVyaWMgPSBkZXNjcmlwdGlvbi5nZW5lcmlj
RmFtaWx5KCk7CiAKQEAgLTUzNSw3ICs1MzcsNyBAQCBTaW1wbGVGb250RGF0YSogRm9udENhY2hl
OjpnZXRMYXN0UmVzb3J0RmFsbGJhY2tGb250KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZGVzYwog
ICAgIGVsc2UgaWYgKGdlbmVyaWMgPT0gRm9udERlc2NyaXB0aW9uOjpNb25vc3BhY2VGYW1pbHkp
CiAgICAgICAgIGZvbnRTdHIgPSBjb3VyaWVyU3RyOwogCi0gICAgU2ltcGxlRm9udERhdGEqIHNp
bXBsZUZvbnQgPSBnZXRDYWNoZWRGb250RGF0YShkZXNjcmlwdGlvbiwgZm9udFN0cik7CisgICAg
U2ltcGxlRm9udERhdGEqIHNpbXBsZUZvbnQgPSBnZXRDYWNoZWRGb250RGF0YShkZXNjcmlwdGlv
biwgZm9udFN0ciwgZmFsc2UsIHNob3VsZFJldGFpbik7CiAgICAgaWYgKHNpbXBsZUZvbnQpCiAg
ICAgICAgIHJldHVybiBzaW1wbGVGb250OwogCkBAIC01NDQsMTMgKzU0NiwxMyBAQCBTaW1wbGVG
b250RGF0YSogRm9udENhY2hlOjpnZXRMYXN0UmVzb3J0RmFsbGJhY2tGb250KGNvbnN0IEZvbnRE
ZXNjcmlwdGlvbiYgZGVzYwogICAgIC8vIHRvIGEgc3RhdGljIHZhcmlhYmxlIGFuZCB1c2UgaXQg
dG8gcHJldmVudCB0cnlpbmcgc3lzdGVtIGZvbnRzIGFnYWluLgogICAgIHN0YXRpYyB3Y2hhcl90
IGZhbGxiYWNrRm9udE5hbWVbTEZfRkFDRVNJWkVdID0gezB9OwogICAgIGlmIChmYWxsYmFja0Zv
bnROYW1lWzBdKQotICAgICAgICByZXR1cm4gZ2V0Q2FjaGVkRm9udERhdGEoZGVzY3JpcHRpb24s
IGZhbGxiYWNrRm9udE5hbWUpOworICAgICAgICByZXR1cm4gZ2V0Q2FjaGVkRm9udERhdGEoZGVz
Y3JpcHRpb24sIGZhbGxiYWNrRm9udE5hbWUsIGZhbHNlLCBzaG91bGRSZXRhaW4pOwogCiAgICAg
Ly8gRmFsbCBiYWNrIHRvIHRoZSBERUZBVUxUX0dVSV9GT05UIGlmIG5vIGtub3duIFVuaWNvZGUg
Zm9udHMgYXJlIGF2YWlsYWJsZS4KICAgICBpZiAoSEZPTlQgZGVmYXVsdEdVSUZvbnQgPSBzdGF0
aWNfY2FzdDxIRk9OVD4oR2V0U3RvY2tPYmplY3QoREVGQVVMVF9HVUlfRk9OVCkpKSB7CiAgICAg
ICAgIExPR0ZPTlQgZGVmYXVsdEdVSUxvZ0ZvbnQ7CiAgICAgICAgIEdldE9iamVjdChkZWZhdWx0
R1VJRm9udCwgc2l6ZW9mKGRlZmF1bHRHVUlMb2dGb250KSwgJmRlZmF1bHRHVUlMb2dGb250KTsK
LSAgICAgICAgaWYgKHNpbXBsZUZvbnQgPSBmb250RGF0YUZyb21EZXNjcmlwdGlvbkFuZExvZ0Zv
bnQodGhpcywgZGVzY3JpcHRpb24sIGRlZmF1bHRHVUlMb2dGb250LCBmYWxsYmFja0ZvbnROYW1l
KSkKKyAgICAgICAgaWYgKHNpbXBsZUZvbnQgPSBmb250RGF0YUZyb21EZXNjcmlwdGlvbkFuZExv
Z0ZvbnQodGhpcywgZGVzY3JpcHRpb24sIHNob3VsZFJldGFpbiwgZGVmYXVsdEdVSUxvZ0ZvbnQs
IGZhbGxiYWNrRm9udE5hbWUpKQogICAgICAgICAgICAgcmV0dXJuIHNpbXBsZUZvbnQ7CiAgICAg
fQogCkBAIC01NTgsMTUgKzU2MCwxNSBAQCBTaW1wbGVGb250RGF0YSogRm9udENhY2hlOjpnZXRM
YXN0UmVzb3J0RmFsbGJhY2tGb250KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZGVzYwogICAgIE5P
TkNMSUVOVE1FVFJJQ1Mgbm9uQ2xpZW50TWV0cmljcyA9IHswfTsKICAgICBub25DbGllbnRNZXRy
aWNzLmNiU2l6ZSA9IHNpemVvZihub25DbGllbnRNZXRyaWNzKTsKICAgICBpZiAoU3lzdGVtUGFy
YW1ldGVyc0luZm8oU1BJX0dFVE5PTkNMSUVOVE1FVFJJQ1MsIHNpemVvZihub25DbGllbnRNZXRy
aWNzKSwgJm5vbkNsaWVudE1ldHJpY3MsIDApKSB7Ci0gICAgICAgIGlmIChzaW1wbGVGb250ID0g
Zm9udERhdGFGcm9tRGVzY3JpcHRpb25BbmRMb2dGb250KHRoaXMsIGRlc2NyaXB0aW9uLCBub25D
bGllbnRNZXRyaWNzLmxmTWVzc2FnZUZvbnQsIGZhbGxiYWNrRm9udE5hbWUpKQorICAgICAgICBp
ZiAoc2ltcGxlRm9udCA9IGZvbnREYXRhRnJvbURlc2NyaXB0aW9uQW5kTG9nRm9udCh0aGlzLCBk
ZXNjcmlwdGlvbiwgc2hvdWxkUmV0YWluLCBub25DbGllbnRNZXRyaWNzLmxmTWVzc2FnZUZvbnQs
IGZhbGxiYWNrRm9udE5hbWUpKQogICAgICAgICAgICAgcmV0dXJuIHNpbXBsZUZvbnQ7Ci0gICAg
ICAgIGlmIChzaW1wbGVGb250ID0gZm9udERhdGFGcm9tRGVzY3JpcHRpb25BbmRMb2dGb250KHRo
aXMsIGRlc2NyaXB0aW9uLCBub25DbGllbnRNZXRyaWNzLmxmTWVudUZvbnQsIGZhbGxiYWNrRm9u
dE5hbWUpKQorICAgICAgICBpZiAoc2ltcGxlRm9udCA9IGZvbnREYXRhRnJvbURlc2NyaXB0aW9u
QW5kTG9nRm9udCh0aGlzLCBkZXNjcmlwdGlvbiwgc2hvdWxkUmV0YWluLCBub25DbGllbnRNZXRy
aWNzLmxmTWVudUZvbnQsIGZhbGxiYWNrRm9udE5hbWUpKQogICAgICAgICAgICAgcmV0dXJuIHNp
bXBsZUZvbnQ7Ci0gICAgICAgIGlmIChzaW1wbGVGb250ID0gZm9udERhdGFGcm9tRGVzY3JpcHRp
b25BbmRMb2dGb250KHRoaXMsIGRlc2NyaXB0aW9uLCBub25DbGllbnRNZXRyaWNzLmxmU3RhdHVz
Rm9udCwgZmFsbGJhY2tGb250TmFtZSkpCisgICAgICAgIGlmIChzaW1wbGVGb250ID0gZm9udERh
dGFGcm9tRGVzY3JpcHRpb25BbmRMb2dGb250KHRoaXMsIGRlc2NyaXB0aW9uLCBzaG91bGRSZXRh
aW4sIG5vbkNsaWVudE1ldHJpY3MubGZTdGF0dXNGb250LCBmYWxsYmFja0ZvbnROYW1lKSkKICAg
ICAgICAgICAgIHJldHVybiBzaW1wbGVGb250OwotICAgICAgICBpZiAoc2ltcGxlRm9udCA9IGZv
bnREYXRhRnJvbURlc2NyaXB0aW9uQW5kTG9nRm9udCh0aGlzLCBkZXNjcmlwdGlvbiwgbm9uQ2xp
ZW50TWV0cmljcy5sZkNhcHRpb25Gb250LCBmYWxsYmFja0ZvbnROYW1lKSkKKyAgICAgICAgaWYg
KHNpbXBsZUZvbnQgPSBmb250RGF0YUZyb21EZXNjcmlwdGlvbkFuZExvZ0ZvbnQodGhpcywgZGVz
Y3JpcHRpb24sIHNob3VsZFJldGFpbiwgbm9uQ2xpZW50TWV0cmljcy5sZkNhcHRpb25Gb250LCBm
YWxsYmFja0ZvbnROYW1lKSkKICAgICAgICAgICAgIHJldHVybiBzaW1wbGVGb250OwotICAgICAg
ICBpZiAoc2ltcGxlRm9udCA9IGZvbnREYXRhRnJvbURlc2NyaXB0aW9uQW5kTG9nRm9udCh0aGlz
LCBkZXNjcmlwdGlvbiwgbm9uQ2xpZW50TWV0cmljcy5sZlNtQ2FwdGlvbkZvbnQsIGZhbGxiYWNr
Rm9udE5hbWUpKQorICAgICAgICBpZiAoc2ltcGxlRm9udCA9IGZvbnREYXRhRnJvbURlc2NyaXB0
aW9uQW5kTG9nRm9udCh0aGlzLCBkZXNjcmlwdGlvbiwgc2hvdWxkUmV0YWluLCBub25DbGllbnRN
ZXRyaWNzLmxmU21DYXB0aW9uRm9udCwgZmFsbGJhY2tGb250TmFtZSkpCiAgICAgICAgICAgICBy
ZXR1cm4gc2ltcGxlRm9udDsKICAgICB9CiAKQEAgLTU3Nyw3ICs1NzksNyBAQCBTaW1wbGVGb250
RGF0YSogRm9udENhY2hlOjpnZXRMYXN0UmVzb3J0RmFsbGJhY2tGb250KGNvbnN0IEZvbnREZXNj
cmlwdGlvbiYgZGVzYwogICAgIC8vIHJldHVybmVkIGJ5IHRoaXMgRW51bUZvbnRGYW1pbGllcygp
IGNhbGwuCiAgICAgSERDIGRjID0gR2V0REMoMCk7CiAgICAgaWYgKGRjKSB7Ci0gICAgICAgIEdl
dExhc3RSZXNvcnRGYWxsYmFja0ZvbnRQcm9jRGF0YSBwcm9jRGF0YSh0aGlzLCAmZGVzY3JpcHRp
b24sIGZhbGxiYWNrRm9udE5hbWUpOworICAgICAgICBHZXRMYXN0UmVzb3J0RmFsbGJhY2tGb250
UHJvY0RhdGEgcHJvY0RhdGEodGhpcywgJmRlc2NyaXB0aW9uLCBzaG91bGRSZXRhaW4sIGZhbGxi
YWNrRm9udE5hbWUpOwogICAgICAgICBFbnVtRm9udEZhbWlsaWVzKGRjLCAwLCBnZXRMYXN0UmVz
b3J0RmFsbGJhY2tGb250UHJvYywgcmVpbnRlcnByZXRfY2FzdDxMUEFSQU0+KCZwcm9jRGF0YSkp
OwogICAgICAgICBSZWxlYXNlREMoMCwgZGMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250Q2FjaGVMaW51eC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250Q2FjaGVMaW51eC5jcHAKaW5k
ZXggYWQyMThkNy4uMzUwZTdmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vRm9udENhY2hlTGludXguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRDYWNoZUxpbnV4LmNwcApAQCAtNzIsNyAr
NzIsNyBAQCBTaW1wbGVGb250RGF0YSogRm9udENhY2hlOjpnZXRTaW1pbGFyRm9udFBsYXRmb3Jt
RGF0YShjb25zdCBGb250JiBmb250KQogICAgIHJldHVybiAwOwogfQogCi1TaW1wbGVGb250RGF0
YSogRm9udENhY2hlOjpnZXRMYXN0UmVzb3J0RmFsbGJhY2tGb250KGNvbnN0IEZvbnREZXNjcmlw
dGlvbiYgZGVzY3JpcHRpb24pCitTaW1wbGVGb250RGF0YSogRm9udENhY2hlOjpnZXRMYXN0UmVz
b3J0RmFsbGJhY2tGb250KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24sIFNob3Vs
ZFJldGFpbiBzaG91bGRSZXRhaW4pCiB7CiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyBz
YW5zU3RyKCJTYW5zIik7CiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyBzZXJpZlN0cigi
U2VyaWYiKTsKQEAgLTkzLDcgKzkzLDcgQEAgU2ltcGxlRm9udERhdGEqIEZvbnRDYWNoZTo6Z2V0
TGFzdFJlc29ydEZhbGxiYWNrRm9udChjb25zdCBGb250RGVzY3JpcHRpb24mIGRlc2MKICAgICB9
CiAKICAgICBBU1NFUlQoZm9udFBsYXRmb3JtRGF0YSk7Ci0gICAgcmV0dXJuIGdldENhY2hlZEZv
bnREYXRhKGZvbnRQbGF0Zm9ybURhdGEpOworICAgIHJldHVybiBnZXRDYWNoZWRGb250RGF0YShm
b250UGxhdGZvcm1EYXRhLCBzaG91bGRSZXRhaW4pOwogfQogCiB2b2lkIEZvbnRDYWNoZTo6Z2V0
VHJhaXRzSW5GYW1pbHkoY29uc3QgQXRvbWljU3RyaW5nJiBmYW1pbHlOYW1lLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udENhY2hlRnJl
ZVR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9u
dENhY2hlRnJlZVR5cGUuY3BwCmluZGV4IDNiYTNlYzUuLjRlMmRkODUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDYWNoZUZyZWVUeXBl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250
Q2FjaGVGcmVlVHlwZS5jcHAKQEAgLTEwNSwxMiArMTA1LDEyIEBAIFNpbXBsZUZvbnREYXRhKiBG
b250Q2FjaGU6OmdldFNpbWlsYXJGb250UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnQmIGZvbnQpCiAg
ICAgcmV0dXJuIDA7CiB9CiAKLVNpbXBsZUZvbnREYXRhKiBGb250Q2FjaGU6OmdldExhc3RSZXNv
cnRGYWxsYmFja0ZvbnQoY29uc3QgRm9udERlc2NyaXB0aW9uJiBmb250RGVzY3JpcHRpb24pCitT
aW1wbGVGb250RGF0YSogRm9udENhY2hlOjpnZXRMYXN0UmVzb3J0RmFsbGJhY2tGb250KGNvbnN0
IEZvbnREZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0aW9uLCBTaG91bGRSZXRhaW4gc2hvdWxkUmV0
YWluKQogewogICAgIC8vIFdlIHdhbnQgdG8gcmV0dXJuIGEgZmFsbGJhY2sgZm9udCBoZXJlLCBv
dGhlcndpc2UgdGhlIGxvZ2ljIHByZXZlbnRpbmcgRm9udENvbmZpZwogICAgIC8vIG1hdGNoZXMg
Zm9yIG5vbi1mYWxsYmFjayBmb250cyBtaWdodCByZXR1cm4gMC4gU2VlIGlzRmFsbGJhY2tGb250
QWxsb3dlZC4KICAgICBzdGF0aWMgQXRvbWljU3RyaW5nIHRpbWVzU3RyKCJzZXJpZiIpOwotICAg
IHJldHVybiBnZXRDYWNoZWRGb250RGF0YShmb250RGVzY3JpcHRpb24sIHRpbWVzU3RyKTsKKyAg
ICByZXR1cm4gZ2V0Q2FjaGVkRm9udERhdGEoZm9udERlc2NyaXB0aW9uLCB0aW1lc1N0ciwgZmFs
c2UsIHNob3VsZFJldGFpbik7CiB9CiAKIHZvaWQgRm9udENhY2hlOjpnZXRUcmFpdHNJbkZhbWls
eShjb25zdCBBdG9taWNTdHJpbmcmIGZhbWlseU5hbWUsIFZlY3Rvcjx1bnNpZ25lZD4mIHRyYWl0
c01hc2tzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFp
a3UvRm9udENhY2hlSGFpa3UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
aGFpa3UvRm9udENhY2hlSGFpa3UuY3BwCmluZGV4IGQwMzg4ZjAuLjAzYTk0NTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hhaWt1L0ZvbnRDYWNoZUhhaWt1
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYWlrdS9Gb250Q2Fj
aGVIYWlrdS5jcHAKQEAgLTU4LDEzICs1OCwxMyBAQCBTaW1wbGVGb250RGF0YSogRm9udENhY2hl
OjpnZXRTaW1pbGFyRm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250JiBmb250KQogICAgIHJldHVy
biAwOwogfQogCi1TaW1wbGVGb250RGF0YSogRm9udENhY2hlOjpnZXRMYXN0UmVzb3J0RmFsbGJh
Y2tGb250KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0aW9uKQorU2ltcGxlRm9u
dERhdGEqIEZvbnRDYWNoZTo6Z2V0TGFzdFJlc29ydEZhbGxiYWNrRm9udChjb25zdCBGb250RGVz
Y3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbiwgU2hvdWxkUmV0YWluIHNob3VsZFJldGFpbikKIHsK
ICAgICBmb250X2ZhbWlseSBmYW1pbHk7CiAgICAgZm9udF9zdHlsZSBzdHlsZTsKICAgICBiZV9w
bGFpbl9mb250LT5HZXRGYW1pbHlBbmRTdHlsZSgmZmFtaWx5LCAmc3R5bGUpOwogICAgIEF0b21p
Y1N0cmluZyBwbGFpbkZvbnRGYW1pbHkoZmFtaWx5KTsKLSAgICByZXR1cm4gZ2V0Q2FjaGVkRm9u
dERhdGEoZm9udERlc2NyaXB0aW9uLCBwbGFpbkZvbnRGYW1pbHkpOworICAgIHJldHVybiBnZXRD
YWNoZWRGb250RGF0YShmb250RGVzY3JpcHRpb24sIHBsYWluRm9udEZhbWlseSwgZmFsc2UsIHNo
b3VsZFJldGFpbik7CiB9CiAKIEZvbnRQbGF0Zm9ybURhdGEqIEZvbnRDYWNoZTo6Y3JlYXRlRm9u
dFBsYXRmb3JtRGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbiwgY29u
c3QgQXRvbWljU3RyaW5nJiBmYW1pbHkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9tYWMvRm9udENhY2hlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL0ZvbnRDYWNoZU1hYy5tbQppbmRleCAzNGI1ZDcxLi41YTliNTBjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udENhY2hl
TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q2Fj
aGVNYWMubW0KQEAgLTE3NywxMyArMTc3LDEzIEBAIFNpbXBsZUZvbnREYXRhKiBGb250Q2FjaGU6
OmdldFNpbWlsYXJGb250UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnQmIGZvbnQpCiAgICAgcmV0dXJu
IHNpbXBsZUZvbnREYXRhOwogfQogCi1TaW1wbGVGb250RGF0YSogRm9udENhY2hlOjpnZXRMYXN0
UmVzb3J0RmFsbGJhY2tGb250KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0aW9u
KQorU2ltcGxlRm9udERhdGEqIEZvbnRDYWNoZTo6Z2V0TGFzdFJlc29ydEZhbGxiYWNrRm9udChj
b25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbiwgU2hvdWxkUmV0YWluIHNob3Vs
ZFJldGFpbikKIHsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgdGltZXNT
dHIsICgiVGltZXMiKSk7CiAKICAgICAvLyBGSVhNRTogV291bGQgYmUgZXZlbiBiZXR0ZXIgdG8g
c29tZWhvdyBnZXQgdGhlIHVzZXIncyBkZWZhdWx0IGZvbnQgaGVyZS4gIEZvciBub3cgd2UnbGwg
cGljawogICAgIC8vIHRoZSBkZWZhdWx0IHRoYXQgdGhlIHVzZXIgd291bGQgZ2V0IHdpdGhvdXQg
Y2hhbmdpbmcgYW55IHByZWZzLgotICAgIFNpbXBsZUZvbnREYXRhKiBzaW1wbGVGb250RGF0YSA9
IGdldENhY2hlZEZvbnREYXRhKGZvbnREZXNjcmlwdGlvbiwgdGltZXNTdHIpOworICAgIFNpbXBs
ZUZvbnREYXRhKiBzaW1wbGVGb250RGF0YSA9IGdldENhY2hlZEZvbnREYXRhKGZvbnREZXNjcmlw
dGlvbiwgdGltZXNTdHIsIGZhbHNlLCBzaG91bGRSZXRhaW4pOwogICAgIGlmIChzaW1wbGVGb250
RGF0YSkKICAgICAgICAgcmV0dXJuIHNpbXBsZUZvbnREYXRhOwogCkBAIC0xOTIsNyArMTkyLDcg
QEAgU2ltcGxlRm9udERhdGEqIEZvbnRDYWNoZTo6Z2V0TGFzdFJlc29ydEZhbGxiYWNrRm9udChj
b25zdCBGb250RGVzY3JpcHRpb24mIGZvbnQKICAgICAvLyBndWFyYW50ZWVkIHRvIGJlIHRoZXJl
LCBhY2NvcmRpbmcgdG8gTmF0aGFuIFRheWxvci4gVGhpcyBpcyBnb29kIGVub3VnaAogICAgIC8v
IHRvIGF2b2lkIGEgY3Jhc2ggYXQgbGVhc3QuCiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9t
aWNTdHJpbmcsIGx1Y2lkYUdyYW5kZVN0ciwgKCJMdWNpZGEgR3JhbmRlIikpOwotICAgIHJldHVy
biBnZXRDYWNoZWRGb250RGF0YShmb250RGVzY3JpcHRpb24sIGx1Y2lkYUdyYW5kZVN0cik7Cisg
ICAgcmV0dXJuIGdldENhY2hlZEZvbnREYXRhKGZvbnREZXNjcmlwdGlvbiwgbHVjaWRhR3JhbmRl
U3RyLCBmYWxzZSwgc2hvdWxkUmV0YWluKTsKIH0KIAogdm9pZCBGb250Q2FjaGU6OmdldFRyYWl0
c0luRmFtaWx5KGNvbnN0IEF0b21pY1N0cmluZyYgZmFtaWx5TmFtZSwgVmVjdG9yPHVuc2lnbmVk
PiYgdHJhaXRzTWFza3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9wYW5nby9Gb250Q2FjaGVQYW5nby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9wYW5nby9Gb250Q2FjaGVQYW5nby5jcHAKaW5kZXggMzdkNDgzNS4uMmIxMmMzNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcGFuZ28vRm9udENh
Y2hlUGFuZ28uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Bhbmdv
L0ZvbnRDYWNoZVBhbmdvLmNwcApAQCAtNDUsMTIgKzQ1LDEyIEBAIFNpbXBsZUZvbnREYXRhKiBG
b250Q2FjaGU6OmdldFNpbWlsYXJGb250UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnQmIGZvbnQpCiAg
ICAgcmV0dXJuIDA7CiB9CiAKLVNpbXBsZUZvbnREYXRhKiBGb250Q2FjaGU6OmdldExhc3RSZXNv
cnRGYWxsYmFja0ZvbnQoY29uc3QgRm9udERlc2NyaXB0aW9uJiBmb250RGVzY3JpcHRpb24pCitT
aW1wbGVGb250RGF0YSogRm9udENhY2hlOjpnZXRMYXN0UmVzb3J0RmFsbGJhY2tGb250KGNvbnN0
IEZvbnREZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0aW9uLCBTaG91bGRSZXRhaW4gc2hvdWxkUmV0
YWluKQogewogICAgIC8vIEZJWE1FOiBXb3VsZCBiZSBldmVuIGJldHRlciB0byBzb21laG93IGdl
dCB0aGUgdXNlcidzIGRlZmF1bHQgZm9udCBoZXJlLgogICAgIC8vIEZvciBub3cgd2UnbGwgcGlj
ayB0aGUgZGVmYXVsdCB0aGF0IHRoZSB1c2VyIHdvdWxkIGdldCB3aXRob3V0IGNoYW5naW5nIGFu
eSBwcmVmcy4KICAgICBzdGF0aWMgQXRvbWljU3RyaW5nIHRpbWVzU3RyKCJUaW1lcyBOZXcgUm9t
YW4iKTsKLSAgICByZXR1cm4gZ2V0Q2FjaGVkRm9udERhdGEoZm9udERlc2NyaXB0aW9uLCB0aW1l
c1N0cik7CisgICAgcmV0dXJuIGdldENhY2hlZEZvbnREYXRhKGZvbnREZXNjcmlwdGlvbiwgdGlt
ZXNTdHIsIGZhbHNlLCBzaG91bGRSZXRhaW4pOwogfQogCiB2b2lkIEZvbnRDYWNoZTo6Z2V0VHJh
aXRzSW5GYW1pbHkoY29uc3QgQXRvbWljU3RyaW5nJiBmYW1pbHlOYW1lLCBWZWN0b3I8dW5zaWdu
ZWQ+JiB0cmFpdHNNYXNrcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3F0L0ZvbnRDYWNoZVF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3F0L0ZvbnRDYWNoZVF0LmNwcAppbmRleCA3MWNmM2VhLi4zOGUwMjM1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9Gb250Q2FjaGVRdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvRm9udENhY2hlUXQuY3BwCkBA
IC05NCwxMCArOTQsMTAgQEAgU2ltcGxlRm9udERhdGEqIEZvbnRDYWNoZTo6Z2V0U2ltaWxhckZv
bnRQbGF0Zm9ybURhdGEoY29uc3QgRm9udCYgZm9udCkKICAgICByZXR1cm4gMDsKIH0KIAotU2lt
cGxlRm9udERhdGEqIEZvbnRDYWNoZTo6Z2V0TGFzdFJlc29ydEZhbGxiYWNrRm9udChjb25zdCBG
b250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbikKK1NpbXBsZUZvbnREYXRhKiBGb250Q2Fj
aGU6OmdldExhc3RSZXNvcnRGYWxsYmFja0ZvbnQoY29uc3QgRm9udERlc2NyaXB0aW9uJiBmb250
RGVzY3JpcHRpb24sIFNob3VsZFJldGFpbiBzaG91bGRSZXRhaW4pCiB7CiAgICAgY29uc3QgQXRv
bWljU3RyaW5nIGZhbGxiYWNrRmFtaWx5ID0gUUZvbnQoZm9udERlc2NyaXB0aW9uLmZhbWlseSgp
LmZhbWlseSgpKS5sYXN0UmVzb3J0RmFtaWx5KCk7Ci0gICAgcmV0dXJuIGdldENhY2hlZEZvbnRE
YXRhKG5ldyBGb250UGxhdGZvcm1EYXRhKGZvbnREZXNjcmlwdGlvbiwgZmFsbGJhY2tGYW1pbHkp
KTsKKyAgICByZXR1cm4gZ2V0Q2FjaGVkRm9udERhdGEobmV3IEZvbnRQbGF0Zm9ybURhdGEoZm9u
dERlc2NyaXB0aW9uLCBmYWxsYmFja0ZhbWlseSksIHNob3VsZFJldGFpbik7CiB9CiAKIHZvaWQg
Rm9udENhY2hlOjpnZXRUcmFpdHNJbkZhbWlseShjb25zdCBBdG9taWNTdHJpbmcmLCBWZWN0b3I8
dW5zaWduZWQ+JikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9Gb250Q2FjaGVXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ZvbnRDYWNoZVdpbi5jcHAKaW5kZXggOTNiZjU5YS4uNTE1MzRmYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDYWNoZVdpbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDYWNoZVdpbi5jcHAK
QEAgLTMwMSwyMCArMzAxLDIwIEBAIFNpbXBsZUZvbnREYXRhKiBGb250Q2FjaGU6OmdldFNpbWls
YXJGb250UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnQmIGZvbnQpCiAgICAgcmV0dXJuIDA7CiB9CiAK
LXN0YXRpYyBTaW1wbGVGb250RGF0YSogZm9udERhdGFGcm9tRGVzY3JpcHRpb25BbmRMb2dGb250
KEZvbnRDYWNoZSogZm9udENhY2hlLCBjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlw
dGlvbiwgY29uc3QgTE9HRk9OVCYgZm9udCwgQXRvbWljU3RyaW5nJiBvdXRGb250RmFtaWx5TmFt
ZSkKK3N0YXRpYyBTaW1wbGVGb250RGF0YSogZm9udERhdGFGcm9tRGVzY3JpcHRpb25BbmRMb2dG
b250KEZvbnRDYWNoZSogZm9udENhY2hlLCBjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNj
cmlwdGlvbiwgU2hvdWxkUmV0YWluIHNob3VsZFJldGFpbiwgY29uc3QgTE9HRk9OVCYgZm9udCwg
QXRvbWljU3RyaW5nJiBvdXRGb250RmFtaWx5TmFtZSkKIHsKICAgICBBdG9taWNTdHJpbmcgZmFt
aWx5TmFtZSA9IFN0cmluZyhmb250LmxmRmFjZU5hbWUsIHdjc25sZW4oZm9udC5sZkZhY2VOYW1l
LCBMRl9GQUNFU0laRSkpOwotICAgIFNpbXBsZUZvbnREYXRhKiBmb250RGF0YSA9IGZvbnRDYWNo
ZS0+Z2V0Q2FjaGVkRm9udERhdGEoZm9udERlc2NyaXB0aW9uLCBmYW1pbHlOYW1lKTsKKyAgICBT
aW1wbGVGb250RGF0YSogZm9udERhdGEgPSBmb250Q2FjaGUtPmdldENhY2hlZEZvbnREYXRhKGZv
bnREZXNjcmlwdGlvbiwgZmFtaWx5TmFtZSwgZmFsc2UsIHNob3VsZFJldGFpbik7CiAgICAgaWYg
KGZvbnREYXRhKQogICAgICAgICBvdXRGb250RmFtaWx5TmFtZSA9IGZhbWlseU5hbWU7CiAgICAg
cmV0dXJuIGZvbnREYXRhOwogfQogCi1TaW1wbGVGb250RGF0YSogRm9udENhY2hlOjpnZXRMYXN0
UmVzb3J0RmFsbGJhY2tGb250KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0aW9u
KQorU2ltcGxlRm9udERhdGEqIEZvbnRDYWNoZTo6Z2V0TGFzdFJlc29ydEZhbGxiYWNrRm9udChj
b25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbiwgU2hvdWxkUmV0YWluIHNob3Vs
ZFJldGFpbikKIHsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgZmFsbGJh
Y2tGb250TmFtZSwgKCkpOwogICAgIGlmICghZmFsbGJhY2tGb250TmFtZS5pc0VtcHR5KCkpCi0g
ICAgICAgIHJldHVybiBnZXRDYWNoZWRGb250RGF0YShmb250RGVzY3JpcHRpb24sIGZhbGxiYWNr
Rm9udE5hbWUpOworICAgICAgICByZXR1cm4gZ2V0Q2FjaGVkRm9udERhdGEoZm9udERlc2NyaXB0
aW9uLCBmYWxsYmFja0ZvbnROYW1lLCBmYWxzZSwgc2hvdWxkUmV0YWluKTsKIAogICAgIC8vIEZJ
WE1FOiBXb3VsZCBiZSBldmVuIGJldHRlciB0byBzb21laG93IGdldCB0aGUgdXNlcidzIGRlZmF1
bHQgZm9udCBoZXJlLiAgRm9yIG5vdyB3ZSdsbCBwaWNrCiAgICAgLy8gdGhlIGRlZmF1bHQgdGhh
dCB0aGUgdXNlciB3b3VsZCBnZXQgd2l0aG91dCBjaGFuZ2luZyBhbnkgcHJlZnMuCkBAIC0zMzEs
NyArMzMxLDcgQEAgU2ltcGxlRm9udERhdGEqIEZvbnRDYWNoZTo6Z2V0TGFzdFJlc29ydEZhbGxi
YWNrRm9udChjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnQKICAgICB9OwogICAgIFNpbXBsZUZv
bnREYXRhKiBzaW1wbGVGb250OwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgV1RGX0FSUkFZ
X0xFTkdUSChmYWxsYmFja0ZvbnRzKTsgKytpKSB7Ci0gICAgICAgIGlmIChzaW1wbGVGb250ID0g
Z2V0Q2FjaGVkRm9udERhdGEoZm9udERlc2NyaXB0aW9uLCBmYWxsYmFja0ZvbnRzW2ldKSkgewor
ICAgICAgICBpZiAoc2ltcGxlRm9udCA9IGdldENhY2hlZEZvbnREYXRhKGZvbnREZXNjcmlwdGlv
biwgZmFsbGJhY2tGb250c1tpXSksIGZhbHNlLCBzaG91bGRSZXRhaW4pIHsKICAgICAgICAgICAg
IGZhbGxiYWNrRm9udE5hbWUgPSBmYWxsYmFja0ZvbnRzW2ldOwogICAgICAgICAgICAgcmV0dXJu
IHNpbXBsZUZvbnQ7CiAgICAgICAgIH0KQEAgLTM0MSw3ICszNDEsNyBAQCBTaW1wbGVGb250RGF0
YSogRm9udENhY2hlOjpnZXRMYXN0UmVzb3J0RmFsbGJhY2tGb250KGNvbnN0IEZvbnREZXNjcmlw
dGlvbiYgZm9udAogICAgIGlmIChIRk9OVCBkZWZhdWx0R1VJRm9udCA9IHN0YXRpY19jYXN0PEhG
T05UPihHZXRTdG9ja09iamVjdChERUZBVUxUX0dVSV9GT05UKSkpIHsKICAgICAgICAgTE9HRk9O
VCBkZWZhdWx0R1VJTG9nRm9udDsKICAgICAgICAgR2V0T2JqZWN0KGRlZmF1bHRHVUlGb250LCBz
aXplb2YoZGVmYXVsdEdVSUxvZ0ZvbnQpLCAmZGVmYXVsdEdVSUxvZ0ZvbnQpOwotICAgICAgICBp
ZiAoc2ltcGxlRm9udCA9IGZvbnREYXRhRnJvbURlc2NyaXB0aW9uQW5kTG9nRm9udCh0aGlzLCBm
b250RGVzY3JpcHRpb24sIGRlZmF1bHRHVUlMb2dGb250LCBmYWxsYmFja0ZvbnROYW1lKSkKKyAg
ICAgICAgaWYgKHNpbXBsZUZvbnQgPSBmb250RGF0YUZyb21EZXNjcmlwdGlvbkFuZExvZ0ZvbnQo
dGhpcywgZm9udERlc2NyaXB0aW9uLCBzaG91bGRSZXRhaW4sIGRlZmF1bHRHVUlMb2dGb250LCBm
YWxsYmFja0ZvbnROYW1lKSkKICAgICAgICAgICAgIHJldHVybiBzaW1wbGVGb250OwogICAgIH0K
IApAQCAtMzQ5LDE1ICszNDksMTUgQEAgU2ltcGxlRm9udERhdGEqIEZvbnRDYWNoZTo6Z2V0TGFz
dFJlc29ydEZhbGxiYWNrRm9udChjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnQKICAgICBOT05D
TElFTlRNRVRSSUNTIG5vbkNsaWVudE1ldHJpY3MgPSB7MH07CiAgICAgbm9uQ2xpZW50TWV0cmlj
cy5jYlNpemUgPSBzaXplb2Yobm9uQ2xpZW50TWV0cmljcyk7CiAgICAgaWYgKFN5c3RlbVBhcmFt
ZXRlcnNJbmZvKFNQSV9HRVROT05DTElFTlRNRVRSSUNTLCBzaXplb2Yobm9uQ2xpZW50TWV0cmlj
cyksICZub25DbGllbnRNZXRyaWNzLCAwKSkgewotICAgICAgICBpZiAoc2ltcGxlRm9udCA9IGZv
bnREYXRhRnJvbURlc2NyaXB0aW9uQW5kTG9nRm9udCh0aGlzLCBmb250RGVzY3JpcHRpb24sIG5v
bkNsaWVudE1ldHJpY3MubGZNZXNzYWdlRm9udCwgZmFsbGJhY2tGb250TmFtZSkpCisgICAgICAg
IGlmIChzaW1wbGVGb250ID0gZm9udERhdGFGcm9tRGVzY3JpcHRpb25BbmRMb2dGb250KHRoaXMs
IGZvbnREZXNjcmlwdGlvbiwgc2hvdWxkUmV0YWluLCBub25DbGllbnRNZXRyaWNzLmxmTWVzc2Fn
ZUZvbnQsIGZhbGxiYWNrRm9udE5hbWUpKQogICAgICAgICAgICAgcmV0dXJuIHNpbXBsZUZvbnQ7
Ci0gICAgICAgIGlmIChzaW1wbGVGb250ID0gZm9udERhdGFGcm9tRGVzY3JpcHRpb25BbmRMb2dG
b250KHRoaXMsIGZvbnREZXNjcmlwdGlvbiwgbm9uQ2xpZW50TWV0cmljcy5sZk1lbnVGb250LCBm
YWxsYmFja0ZvbnROYW1lKSkKKyAgICAgICAgaWYgKHNpbXBsZUZvbnQgPSBmb250RGF0YUZyb21E
ZXNjcmlwdGlvbkFuZExvZ0ZvbnQodGhpcywgZm9udERlc2NyaXB0aW9uLCBzaG91bGRSZXRhaW4s
IG5vbkNsaWVudE1ldHJpY3MubGZNZW51Rm9udCwgZmFsbGJhY2tGb250TmFtZSkpCiAgICAgICAg
ICAgICByZXR1cm4gc2ltcGxlRm9udDsKLSAgICAgICAgaWYgKHNpbXBsZUZvbnQgPSBmb250RGF0
YUZyb21EZXNjcmlwdGlvbkFuZExvZ0ZvbnQodGhpcywgZm9udERlc2NyaXB0aW9uLCBub25DbGll
bnRNZXRyaWNzLmxmU3RhdHVzRm9udCwgZmFsbGJhY2tGb250TmFtZSkpCisgICAgICAgIGlmIChz
aW1wbGVGb250ID0gZm9udERhdGFGcm9tRGVzY3JpcHRpb25BbmRMb2dGb250KHRoaXMsIGZvbnRE
ZXNjcmlwdGlvbiwgc2hvdWxkUmV0YWluLCBub25DbGllbnRNZXRyaWNzLmxmU3RhdHVzRm9udCwg
ZmFsbGJhY2tGb250TmFtZSkpCiAgICAgICAgICAgICByZXR1cm4gc2ltcGxlRm9udDsKLSAgICAg
ICAgaWYgKHNpbXBsZUZvbnQgPSBmb250RGF0YUZyb21EZXNjcmlwdGlvbkFuZExvZ0ZvbnQodGhp
cywgZm9udERlc2NyaXB0aW9uLCBub25DbGllbnRNZXRyaWNzLmxmQ2FwdGlvbkZvbnQsIGZhbGxi
YWNrRm9udE5hbWUpKQorICAgICAgICBpZiAoc2ltcGxlRm9udCA9IGZvbnREYXRhRnJvbURlc2Ny
aXB0aW9uQW5kTG9nRm9udCh0aGlzLCBmb250RGVzY3JpcHRpb24sIHNob3VsZFJldGFpbiwgbm9u
Q2xpZW50TWV0cmljcy5sZkNhcHRpb25Gb250LCBmYWxsYmFja0ZvbnROYW1lKSkKICAgICAgICAg
ICAgIHJldHVybiBzaW1wbGVGb250OwotICAgICAgICBpZiAoc2ltcGxlRm9udCA9IGZvbnREYXRh
RnJvbURlc2NyaXB0aW9uQW5kTG9nRm9udCh0aGlzLCBmb250RGVzY3JpcHRpb24sIG5vbkNsaWVu
dE1ldHJpY3MubGZTbUNhcHRpb25Gb250LCBmYWxsYmFja0ZvbnROYW1lKSkKKyAgICAgICAgaWYg
KHNpbXBsZUZvbnQgPSBmb250RGF0YUZyb21EZXNjcmlwdGlvbkFuZExvZ0ZvbnQodGhpcywgZm9u
dERlc2NyaXB0aW9uLCBzaG91bGRSZXRhaW4sIG5vbkNsaWVudE1ldHJpY3MubGZTbUNhcHRpb25G
b250LCBmYWxsYmFja0ZvbnROYW1lKSkKICAgICAgICAgICAgIHJldHVybiBzaW1wbGVGb250Owog
ICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbmNlL0ZvbnRDYWNoZVdpbkNFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbmNlL0ZvbnRDYWNoZVdpbkNFLmNwcAppbmRleCAyZDcyMDA4Li44NmM2MTQ1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9Gb250Q2FjaGVX
aW5DRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvRm9u
dENhY2hlV2luQ0UuY3BwCkBAIC0zMjEsMTEgKzMyMSwxMSBAQCBTaW1wbGVGb250RGF0YSogRm9u
dENhY2hlOjpnZXRTaW1pbGFyRm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250JiBmb250KQogICAg
IHJldHVybiAwOwogfQogCi1TaW1wbGVGb250RGF0YSogRm9udENhY2hlOjpnZXRMYXN0UmVzb3J0
RmFsbGJhY2tGb250KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm9udERlc2MpCitTaW1wbGVGb250
RGF0YSogRm9udENhY2hlOjpnZXRMYXN0UmVzb3J0RmFsbGJhY2tGb250KGNvbnN0IEZvbnREZXNj
cmlwdGlvbiYgZm9udERlc2MsIFNob3VsZFJldGFpbiBzaG91bGRSZXRhaW4pCiB7CiAgICAgLy8g
RklYTUU6IFdvdWxkIGJlIGV2ZW4gYmV0dGVyIHRvIHNvbWVob3cgZ2V0IHRoZSB1c2VyJ3MgZGVm
YXVsdCBmb250IGhlcmUuICBGb3Igbm93IHdlJ2xsIHBpY2sKICAgICAvLyB0aGUgZGVmYXVsdCB0
aGF0IHRoZSB1c2VyIHdvdWxkIGdldCB3aXRob3V0IGNoYW5naW5nIGFueSBwcmVmcy4KLSAgICBy
ZXR1cm4gZ2V0Q2FjaGVkRm9udERhdGEoZm9udERlc2MsIEZvbnRQbGF0Zm9ybURhdGE6OmRlZmF1
bHRGb250RmFtaWx5KCkpOworICAgIHJldHVybiBnZXRDYWNoZWRGb250RGF0YShmb250RGVzYywg
Rm9udFBsYXRmb3JtRGF0YTo6ZGVmYXVsdEZvbnRGYW1pbHkoKSwgZmFsc2UsIHNob3VsZFJldGFp
bik7CiB9CiAKIEZvbnRQbGF0Zm9ybURhdGEqIEZvbnRDYWNoZTo6Y3JlYXRlRm9udFBsYXRmb3Jt
RGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbiwgY29uc3QgQXRvbWlj
U3RyaW5nJiBmYW1pbHkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93eC9Gb250Q2FjaGVXeC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93eC9Gb250Q2FjaGVXeC5jcHAKaW5kZXggYjc3ZjE1NS4uYjAyNzc5NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd3gvRm9udENhY2hlV3guY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3d4L0ZvbnRDYWNoZVd4LmNwcApAQCAt
NzcsNyArNzcsNyBAQCBTaW1wbGVGb250RGF0YSogRm9udENhY2hlOjpnZXRTaW1pbGFyRm9udFBs
YXRmb3JtRGF0YShjb25zdCBGb250JiBmb250KQogICAgIHJldHVybiBzaW1wbGVGb250RGF0YTsK
IH0KIAotU2ltcGxlRm9udERhdGEqIEZvbnRDYWNoZTo6Z2V0TGFzdFJlc29ydEZhbGxiYWNrRm9u
dChjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbikKK1NpbXBsZUZvbnREYXRh
KiBGb250Q2FjaGU6OmdldExhc3RSZXNvcnRGYWxsYmFja0ZvbnQoY29uc3QgRm9udERlc2NyaXB0
aW9uJiBmb250RGVzY3JpcHRpb24sIFNob3VsZFJldGFpbiBzaG91bGRSZXRhaW4pCiB7CiAgICAg
Ly8gRklYTUU6IFdvdWxkIGJlIGV2ZW4gYmV0dGVyIHRvIHNvbWVob3cgZ2V0IHRoZSB1c2VyJ3Mg
ZGVmYXVsdCBmb250IGhlcmUuICBGb3Igbm93IHdlJ2xsIHBpY2sKICAgICAvLyB0aGUgZGVmYXVs
dCB0aGF0IHRoZSB1c2VyIHdvdWxkIGdldCB3aXRob3V0IGNoYW5naW5nIGFueSBwcmVmcy4KQEAg
LTg3LDcgKzg3LDcgQEAgU2ltcGxlRm9udERhdGEqIEZvbnRDYWNoZTo6Z2V0TGFzdFJlc29ydEZh
bGxiYWNrRm9udChjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnQKICNlbHNlCiAgICAgc3RhdGlj
IEF0b21pY1N0cmluZyBmYWxsYmFja05hbWUoIlRpbWVzIE5ldyBSb21hbiIpOwogI2VuZGlmCi0g
ICAgZmFsbGJhY2sgPSBnZXRDYWNoZWRGb250RGF0YShmb250RGVzY3JpcHRpb24sIGZhbGxiYWNr
TmFtZSk7CisgICAgZmFsbGJhY2sgPSBnZXRDYWNoZWRGb250RGF0YShmb250RGVzY3JpcHRpb24s
IGZhbGxiYWNrTmFtZSwgZmFsc2UsIHNob3VsZFJldGFpbik7CiAgICAgQVNTRVJUKGZhbGxiYWNr
KTsKICAgICAKICAgICByZXR1cm4gZmFsbGJhY2s7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104079</attachid>
            <date>2011-08-16 13:03:19 -0700</date>
            <delta_ts>2011-08-16 13:03:19 -0700</delta_ts>
            <desc>[PATCH] Attempt at Windows Build Fix</desc>
            <filename>build-fix.patch</filename>
            <type>text/plain</type>
            <size>9774</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA3Y2FhMGM1Li5kYmVlMWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYg
QEAKKzIwMTEtMDgtMTYgIEpvc2VwaCBQZWNvcmFybyAgPGpvZXBlY2tAd2Via2l0Lm9yZz4KKwor
ICAgICAgICBVbnJldmlld2VkIFdpbmRvd3MgYW5kIENocm9taXVtIFdpbmRvd3MgYnVpbGQgZml4
IGFmdGVyIHI5MzE0MC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRDYWNoZUNocm9taXVt
V2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYWNoZTo6Zm9udERhdGFGcm9tRGVzY3Jp
cHRpb25BbmRMb2dGb250KToKKyAgICAgICAgKFdlYkNvcmU6OmdldExhc3RSZXNvcnRGYWxsYmFj
a0ZvbnRQcm9jKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYWNoZTo6Z2V0TGFzdFJlc29ydEZh
bGxiYWNrRm9udCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDYWNoZVdp
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FjaGU6OmZvbnREYXRhRnJvbURlc2NyaXB0
aW9uQW5kTG9nRm9udCk6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FjaGU6OmdldExhc3RSZXNv
cnRGYWxsYmFja0ZvbnQpOgorCiAyMDExLTA4LTE2ICBEYXZpZCBIeWF0dCAgPGh5YXR0QGFwcGxl
LmNvbT4KIAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NjYyNTQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRD
YWNoZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmgKaW5k
ZXggNDY1MzIwYi4uNGI3ZWYwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udENhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udENhY2hlLmgKQEAgLTk3LDYgKzk3LDE0IEBAIHB1YmxpYzoKICAgICBzaXplX3QgaW5h
Y3RpdmVGb250RGF0YUNvdW50KCk7CiAgICAgdm9pZCBwdXJnZUluYWN0aXZlRm9udERhdGEoaW50
IGNvdW50ID0gSU5UX01BWCk7CiAKKyNpZiBQTEFURk9STShXSU4pCisjaWYgIVBMQVRGT1JNKENI
Uk9NSVVNKQorICAgIFNpbXBsZUZvbnREYXRhKiBmb250RGF0YUZyb21EZXNjcmlwdGlvbkFuZExv
Z0ZvbnQoY29uc3QgRm9udERlc2NyaXB0aW9uJiwgU2hvdWxkUmV0YWluLCBjb25zdCBMT0dGT05U
JiBmb250LCBBdG9taWNTdHJpbmcmIG91dEZvbnRGYW1pbHlOYW1lKTsKKyNlbHNlCisgICAgU2lt
cGxlRm9udERhdGEqIGZvbnREYXRhRnJvbURlc2NyaXB0aW9uQW5kTG9nRm9udChjb25zdCBGb250
RGVzY3JpcHRpb24mLCBTaG91bGRSZXRhaW4sIGNvbnN0IExPR0ZPTlQmIGZvbnQsIHdjaGFyX3Qq
IG91dEZvbnRGYW1pbHlOYW1lKTsKKyNlbmRpZiAvLyBQTEFURk9STShDSFJPTUlVTSkKKyNlbmRp
ZiAvLyBQTEFURk9STShXSU4pCisKIHByaXZhdGU6CiAgICAgRm9udENhY2hlKCk7CiAgICAgfkZv
bnRDYWNoZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vRm9udENhY2hlQ2hyb21pdW1XaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udENhY2hlQ2hyb21pdW1XaW4uY3BwCmluZGV4IGYxM2Qy
YTEuLmEyM2NlNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0ZvbnRDYWNoZUNocm9taXVtV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250Q2FjaGVDaHJvbWl1bVdpbi5jcHAKQEAgLTMy
NSw5ICszMjUsOSBAQCBzdGF0aWMgYm9vbCBmb250Q29udGFpbnNDaGFyYWN0ZXIoY29uc3QgRm9u
dFBsYXRmb3JtRGF0YSogZm9udERhdGEsCiB9CiAKIC8vIFRyaWVzIHRoZSBnaXZlbiBmb250IGFu
ZCBzYXZlIGl0IHxvdXRGb250RmFtaWx5TmFtZXwgaWYgaXQgc3VjY2VlZHMuCi1zdGF0aWMgU2lt
cGxlRm9udERhdGEqIGZvbnREYXRhRnJvbURlc2NyaXB0aW9uQW5kTG9nRm9udChGb250Q2FjaGUq
IGZvbnRDYWNoZSwgY29uc3QgRm9udERlc2NyaXB0aW9uJiBmb250RGVzY3JpcHRpb24sIFNob3Vs
ZFJldGFpbiBzaG91bGRSZXRhaW4sIGNvbnN0IExPR0ZPTlQmIGZvbnQsIHdjaGFyX3QqIG91dEZv
bnRGYW1pbHlOYW1lKQorU2ltcGxlRm9udERhdGEqIEZvbnRDYWNoZTo6Zm9udERhdGFGcm9tRGVz
Y3JpcHRpb25BbmRMb2dGb250KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0aW9u
LCBTaG91bGRSZXRhaW4gc2hvdWxkUmV0YWluLCBjb25zdCBMT0dGT05UJiBmb250LCB3Y2hhcl90
KiBvdXRGb250RmFtaWx5TmFtZSkKIHsKLSAgICBTaW1wbGVGb250RGF0YSogZm9udERhdGEgPSBm
b250Q2FjaGUtPmdldENhY2hlZEZvbnREYXRhKGZvbnREZXNjcmlwdGlvbiwgZm9udC5sZkZhY2VO
YW1lLCBmYWxzZSwgc2hvdWxkUmV0YWluKTsKKyAgICBTaW1wbGVGb250RGF0YSogZm9udERhdGEg
PSBnZXRDYWNoZWRGb250RGF0YShmb250RGVzY3JpcHRpb24sIGZvbnQubGZGYWNlTmFtZSwgZmFs
c2UsIHNob3VsZFJldGFpbik7CiAgICAgaWYgKGZvbnREYXRhKQogICAgICAgICBtZW1jcHkob3V0
Rm9udEZhbWlseU5hbWUsIGZvbnQubGZGYWNlTmFtZSwgc2l6ZW9mKGZvbnQubGZGYWNlTmFtZSkp
OwogICAgIHJldHVybiBmb250RGF0YTsKQEAgLTQxOSw3ICs0MTksNyBAQCBzdHJ1Y3QgR2V0TGFz
dFJlc29ydEZhbGxiYWNrRm9udFByb2NEYXRhIHsKIHN0YXRpYyBpbnQgQ0FMTEJBQ0sgZ2V0TGFz
dFJlc29ydEZhbGxiYWNrRm9udFByb2MoY29uc3QgTE9HRk9OVCogbG9nRm9udCwgY29uc3QgVEVY
VE1FVFJJQyogbWV0cmljcywgRFdPUkQgZm9udFR5cGUsIExQQVJBTSBsUGFyYW0pCiB7CiAgICAg
R2V0TGFzdFJlc29ydEZhbGxiYWNrRm9udFByb2NEYXRhKiBwcm9jRGF0YSA9IHJlaW50ZXJwcmV0
X2Nhc3Q8R2V0TGFzdFJlc29ydEZhbGxiYWNrRm9udFByb2NEYXRhKj4obFBhcmFtKTsKLSAgICBw
cm9jRGF0YS0+bV9mb250RGF0YSA9IGZvbnREYXRhRnJvbURlc2NyaXB0aW9uQW5kTG9nRm9udChw
cm9jRGF0YS0+bV9mb250Q2FjaGUsICpwcm9jRGF0YS0+bV9mb250RGVzY3JpcHRpb24sIHByb2NE
YXRhLT5tX3Nob3VsZFJldGFpbiwgKmxvZ0ZvbnQsIHByb2NEYXRhLT5tX2ZvbnROYW1lKTsKKyAg
ICBwcm9jRGF0YS0+bV9mb250RGF0YSA9IHByb2NEYXRhLT5tX2ZvbnRDYWNoZS0+Zm9udERhdGFG
cm9tRGVzY3JpcHRpb25BbmRMb2dGb250KCpwcm9jRGF0YS0+bV9mb250RGVzY3JpcHRpb24sIHBy
b2NEYXRhLT5tX3Nob3VsZFJldGFpbiwgKmxvZ0ZvbnQsIHByb2NEYXRhLT5tX2ZvbnROYW1lKTsK
ICAgICByZXR1cm4gIXByb2NEYXRhLT5tX2ZvbnREYXRhOwogfQogCkBAIC01NTIsNyArNTUyLDcg
QEAgU2ltcGxlRm9udERhdGEqIEZvbnRDYWNoZTo6Z2V0TGFzdFJlc29ydEZhbGxiYWNrRm9udChj
b25zdCBGb250RGVzY3JpcHRpb24mIGRlc2MKICAgICBpZiAoSEZPTlQgZGVmYXVsdEdVSUZvbnQg
PSBzdGF0aWNfY2FzdDxIRk9OVD4oR2V0U3RvY2tPYmplY3QoREVGQVVMVF9HVUlfRk9OVCkpKSB7
CiAgICAgICAgIExPR0ZPTlQgZGVmYXVsdEdVSUxvZ0ZvbnQ7CiAgICAgICAgIEdldE9iamVjdChk
ZWZhdWx0R1VJRm9udCwgc2l6ZW9mKGRlZmF1bHRHVUlMb2dGb250KSwgJmRlZmF1bHRHVUlMb2dG
b250KTsKLSAgICAgICAgaWYgKHNpbXBsZUZvbnQgPSBmb250RGF0YUZyb21EZXNjcmlwdGlvbkFu
ZExvZ0ZvbnQodGhpcywgZGVzY3JpcHRpb24sIHNob3VsZFJldGFpbiwgZGVmYXVsdEdVSUxvZ0Zv
bnQsIGZhbGxiYWNrRm9udE5hbWUpKQorICAgICAgICBpZiAoc2ltcGxlRm9udCA9IGZvbnREYXRh
RnJvbURlc2NyaXB0aW9uQW5kTG9nRm9udChkZXNjcmlwdGlvbiwgc2hvdWxkUmV0YWluLCBkZWZh
dWx0R1VJTG9nRm9udCwgZmFsbGJhY2tGb250TmFtZSkpCiAgICAgICAgICAgICByZXR1cm4gc2lt
cGxlRm9udDsKICAgICB9CiAKQEAgLTU2MCwxNSArNTYwLDE1IEBAIFNpbXBsZUZvbnREYXRhKiBG
b250Q2FjaGU6OmdldExhc3RSZXNvcnRGYWxsYmFja0ZvbnQoY29uc3QgRm9udERlc2NyaXB0aW9u
JiBkZXNjCiAgICAgTk9OQ0xJRU5UTUVUUklDUyBub25DbGllbnRNZXRyaWNzID0gezB9OwogICAg
IG5vbkNsaWVudE1ldHJpY3MuY2JTaXplID0gc2l6ZW9mKG5vbkNsaWVudE1ldHJpY3MpOwogICAg
IGlmIChTeXN0ZW1QYXJhbWV0ZXJzSW5mbyhTUElfR0VUTk9OQ0xJRU5UTUVUUklDUywgc2l6ZW9m
KG5vbkNsaWVudE1ldHJpY3MpLCAmbm9uQ2xpZW50TWV0cmljcywgMCkpIHsKLSAgICAgICAgaWYg
KHNpbXBsZUZvbnQgPSBmb250RGF0YUZyb21EZXNjcmlwdGlvbkFuZExvZ0ZvbnQodGhpcywgZGVz
Y3JpcHRpb24sIHNob3VsZFJldGFpbiwgbm9uQ2xpZW50TWV0cmljcy5sZk1lc3NhZ2VGb250LCBm
YWxsYmFja0ZvbnROYW1lKSkKKyAgICAgICAgaWYgKHNpbXBsZUZvbnQgPSBmb250RGF0YUZyb21E
ZXNjcmlwdGlvbkFuZExvZ0ZvbnQoZGVzY3JpcHRpb24sIHNob3VsZFJldGFpbiwgbm9uQ2xpZW50
TWV0cmljcy5sZk1lc3NhZ2VGb250LCBmYWxsYmFja0ZvbnROYW1lKSkKICAgICAgICAgICAgIHJl
dHVybiBzaW1wbGVGb250OwotICAgICAgICBpZiAoc2ltcGxlRm9udCA9IGZvbnREYXRhRnJvbURl
c2NyaXB0aW9uQW5kTG9nRm9udCh0aGlzLCBkZXNjcmlwdGlvbiwgc2hvdWxkUmV0YWluLCBub25D
bGllbnRNZXRyaWNzLmxmTWVudUZvbnQsIGZhbGxiYWNrRm9udE5hbWUpKQorICAgICAgICBpZiAo
c2ltcGxlRm9udCA9IGZvbnREYXRhRnJvbURlc2NyaXB0aW9uQW5kTG9nRm9udChkZXNjcmlwdGlv
biwgc2hvdWxkUmV0YWluLCBub25DbGllbnRNZXRyaWNzLmxmTWVudUZvbnQsIGZhbGxiYWNrRm9u
dE5hbWUpKQogICAgICAgICAgICAgcmV0dXJuIHNpbXBsZUZvbnQ7Ci0gICAgICAgIGlmIChzaW1w
bGVGb250ID0gZm9udERhdGFGcm9tRGVzY3JpcHRpb25BbmRMb2dGb250KHRoaXMsIGRlc2NyaXB0
aW9uLCBzaG91bGRSZXRhaW4sIG5vbkNsaWVudE1ldHJpY3MubGZTdGF0dXNGb250LCBmYWxsYmFj
a0ZvbnROYW1lKSkKKyAgICAgICAgaWYgKHNpbXBsZUZvbnQgPSBmb250RGF0YUZyb21EZXNjcmlw
dGlvbkFuZExvZ0ZvbnQoZGVzY3JpcHRpb24sIHNob3VsZFJldGFpbiwgbm9uQ2xpZW50TWV0cmlj
cy5sZlN0YXR1c0ZvbnQsIGZhbGxiYWNrRm9udE5hbWUpKQogICAgICAgICAgICAgcmV0dXJuIHNp
bXBsZUZvbnQ7Ci0gICAgICAgIGlmIChzaW1wbGVGb250ID0gZm9udERhdGFGcm9tRGVzY3JpcHRp
b25BbmRMb2dGb250KHRoaXMsIGRlc2NyaXB0aW9uLCBzaG91bGRSZXRhaW4sIG5vbkNsaWVudE1l
dHJpY3MubGZDYXB0aW9uRm9udCwgZmFsbGJhY2tGb250TmFtZSkpCisgICAgICAgIGlmIChzaW1w
bGVGb250ID0gZm9udERhdGFGcm9tRGVzY3JpcHRpb25BbmRMb2dGb250KGRlc2NyaXB0aW9uLCBz
aG91bGRSZXRhaW4sIG5vbkNsaWVudE1ldHJpY3MubGZDYXB0aW9uRm9udCwgZmFsbGJhY2tGb250
TmFtZSkpCiAgICAgICAgICAgICByZXR1cm4gc2ltcGxlRm9udDsKLSAgICAgICAgaWYgKHNpbXBs
ZUZvbnQgPSBmb250RGF0YUZyb21EZXNjcmlwdGlvbkFuZExvZ0ZvbnQodGhpcywgZGVzY3JpcHRp
b24sIHNob3VsZFJldGFpbiwgbm9uQ2xpZW50TWV0cmljcy5sZlNtQ2FwdGlvbkZvbnQsIGZhbGxi
YWNrRm9udE5hbWUpKQorICAgICAgICBpZiAoc2ltcGxlRm9udCA9IGZvbnREYXRhRnJvbURlc2Ny
aXB0aW9uQW5kTG9nRm9udChkZXNjcmlwdGlvbiwgc2hvdWxkUmV0YWluLCBub25DbGllbnRNZXRy
aWNzLmxmU21DYXB0aW9uRm9udCwgZmFsbGJhY2tGb250TmFtZSkpCiAgICAgICAgICAgICByZXR1
cm4gc2ltcGxlRm9udDsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9Gb250Q2FjaGVXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0ZvbnRDYWNoZVdpbi5jcHAKaW5kZXggNTE1MzRmYS4uM2ViNzQzNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDYWNo
ZVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRD
YWNoZVdpbi5jcHAKQEAgLTMwMSwxMCArMzAxLDEwIEBAIFNpbXBsZUZvbnREYXRhKiBGb250Q2Fj
aGU6OmdldFNpbWlsYXJGb250UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnQmIGZvbnQpCiAgICAgcmV0
dXJuIDA7CiB9CiAKLXN0YXRpYyBTaW1wbGVGb250RGF0YSogZm9udERhdGFGcm9tRGVzY3JpcHRp
b25BbmRMb2dGb250KEZvbnRDYWNoZSogZm9udENhY2hlLCBjb25zdCBGb250RGVzY3JpcHRpb24m
IGZvbnREZXNjcmlwdGlvbiwgU2hvdWxkUmV0YWluIHNob3VsZFJldGFpbiwgY29uc3QgTE9HRk9O
VCYgZm9udCwgQXRvbWljU3RyaW5nJiBvdXRGb250RmFtaWx5TmFtZSkKK1NpbXBsZUZvbnREYXRh
KiBGb250Q2FjaGU6OmZvbnREYXRhRnJvbURlc2NyaXB0aW9uQW5kTG9nRm9udChjb25zdCBGb250
RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbiwgU2hvdWxkUmV0YWluIHNob3VsZFJldGFpbiwg
Y29uc3QgTE9HRk9OVCYgZm9udCwgQXRvbWljU3RyaW5nJiBvdXRGb250RmFtaWx5TmFtZSkKIHsK
ICAgICBBdG9taWNTdHJpbmcgZmFtaWx5TmFtZSA9IFN0cmluZyhmb250LmxmRmFjZU5hbWUsIHdj
c25sZW4oZm9udC5sZkZhY2VOYW1lLCBMRl9GQUNFU0laRSkpOwotICAgIFNpbXBsZUZvbnREYXRh
KiBmb250RGF0YSA9IGZvbnRDYWNoZS0+Z2V0Q2FjaGVkRm9udERhdGEoZm9udERlc2NyaXB0aW9u
LCBmYW1pbHlOYW1lLCBmYWxzZSwgc2hvdWxkUmV0YWluKTsKKyAgICBTaW1wbGVGb250RGF0YSog
Zm9udERhdGEgPSBnZXRDYWNoZWRGb250RGF0YShmb250RGVzY3JpcHRpb24sIGZhbWlseU5hbWUs
IGZhbHNlLCBzaG91bGRSZXRhaW4pOwogICAgIGlmIChmb250RGF0YSkKICAgICAgICAgb3V0Rm9u
dEZhbWlseU5hbWUgPSBmYW1pbHlOYW1lOwogICAgIHJldHVybiBmb250RGF0YTsKQEAgLTM0MSw3
ICszNDEsNyBAQCBTaW1wbGVGb250RGF0YSogRm9udENhY2hlOjpnZXRMYXN0UmVzb3J0RmFsbGJh
Y2tGb250KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm9udAogICAgIGlmIChIRk9OVCBkZWZhdWx0
R1VJRm9udCA9IHN0YXRpY19jYXN0PEhGT05UPihHZXRTdG9ja09iamVjdChERUZBVUxUX0dVSV9G
T05UKSkpIHsKICAgICAgICAgTE9HRk9OVCBkZWZhdWx0R1VJTG9nRm9udDsKICAgICAgICAgR2V0
T2JqZWN0KGRlZmF1bHRHVUlGb250LCBzaXplb2YoZGVmYXVsdEdVSUxvZ0ZvbnQpLCAmZGVmYXVs
dEdVSUxvZ0ZvbnQpOwotICAgICAgICBpZiAoc2ltcGxlRm9udCA9IGZvbnREYXRhRnJvbURlc2Ny
aXB0aW9uQW5kTG9nRm9udCh0aGlzLCBmb250RGVzY3JpcHRpb24sIHNob3VsZFJldGFpbiwgZGVm
YXVsdEdVSUxvZ0ZvbnQsIGZhbGxiYWNrRm9udE5hbWUpKQorICAgICAgICBpZiAoc2ltcGxlRm9u
dCA9IGZvbnREYXRhRnJvbURlc2NyaXB0aW9uQW5kTG9nRm9udChmb250RGVzY3JpcHRpb24sIHNo
b3VsZFJldGFpbiwgZGVmYXVsdEdVSUxvZ0ZvbnQsIGZhbGxiYWNrRm9udE5hbWUpKQogICAgICAg
ICAgICAgcmV0dXJuIHNpbXBsZUZvbnQ7CiAgICAgfQogCkBAIC0zNDksMTUgKzM0OSwxNSBAQCBT
aW1wbGVGb250RGF0YSogRm9udENhY2hlOjpnZXRMYXN0UmVzb3J0RmFsbGJhY2tGb250KGNvbnN0
IEZvbnREZXNjcmlwdGlvbiYgZm9udAogICAgIE5PTkNMSUVOVE1FVFJJQ1Mgbm9uQ2xpZW50TWV0
cmljcyA9IHswfTsKICAgICBub25DbGllbnRNZXRyaWNzLmNiU2l6ZSA9IHNpemVvZihub25DbGll
bnRNZXRyaWNzKTsKICAgICBpZiAoU3lzdGVtUGFyYW1ldGVyc0luZm8oU1BJX0dFVE5PTkNMSUVO
VE1FVFJJQ1MsIHNpemVvZihub25DbGllbnRNZXRyaWNzKSwgJm5vbkNsaWVudE1ldHJpY3MsIDAp
KSB7Ci0gICAgICAgIGlmIChzaW1wbGVGb250ID0gZm9udERhdGFGcm9tRGVzY3JpcHRpb25BbmRM
b2dGb250KHRoaXMsIGZvbnREZXNjcmlwdGlvbiwgc2hvdWxkUmV0YWluLCBub25DbGllbnRNZXRy
aWNzLmxmTWVzc2FnZUZvbnQsIGZhbGxiYWNrRm9udE5hbWUpKQorICAgICAgICBpZiAoc2ltcGxl
Rm9udCA9IGZvbnREYXRhRnJvbURlc2NyaXB0aW9uQW5kTG9nRm9udChmb250RGVzY3JpcHRpb24s
IHNob3VsZFJldGFpbiwgbm9uQ2xpZW50TWV0cmljcy5sZk1lc3NhZ2VGb250LCBmYWxsYmFja0Zv
bnROYW1lKSkKICAgICAgICAgICAgIHJldHVybiBzaW1wbGVGb250OwotICAgICAgICBpZiAoc2lt
cGxlRm9udCA9IGZvbnREYXRhRnJvbURlc2NyaXB0aW9uQW5kTG9nRm9udCh0aGlzLCBmb250RGVz
Y3JpcHRpb24sIHNob3VsZFJldGFpbiwgbm9uQ2xpZW50TWV0cmljcy5sZk1lbnVGb250LCBmYWxs
YmFja0ZvbnROYW1lKSkKKyAgICAgICAgaWYgKHNpbXBsZUZvbnQgPSBmb250RGF0YUZyb21EZXNj
cmlwdGlvbkFuZExvZ0ZvbnQoZm9udERlc2NyaXB0aW9uLCBzaG91bGRSZXRhaW4sIG5vbkNsaWVu
dE1ldHJpY3MubGZNZW51Rm9udCwgZmFsbGJhY2tGb250TmFtZSkpCiAgICAgICAgICAgICByZXR1
cm4gc2ltcGxlRm9udDsKLSAgICAgICAgaWYgKHNpbXBsZUZvbnQgPSBmb250RGF0YUZyb21EZXNj
cmlwdGlvbkFuZExvZ0ZvbnQodGhpcywgZm9udERlc2NyaXB0aW9uLCBzaG91bGRSZXRhaW4sIG5v
bkNsaWVudE1ldHJpY3MubGZTdGF0dXNGb250LCBmYWxsYmFja0ZvbnROYW1lKSkKKyAgICAgICAg
aWYgKHNpbXBsZUZvbnQgPSBmb250RGF0YUZyb21EZXNjcmlwdGlvbkFuZExvZ0ZvbnQoZm9udERl
c2NyaXB0aW9uLCBzaG91bGRSZXRhaW4sIG5vbkNsaWVudE1ldHJpY3MubGZTdGF0dXNGb250LCBm
YWxsYmFja0ZvbnROYW1lKSkKICAgICAgICAgICAgIHJldHVybiBzaW1wbGVGb250OwotICAgICAg
ICBpZiAoc2ltcGxlRm9udCA9IGZvbnREYXRhRnJvbURlc2NyaXB0aW9uQW5kTG9nRm9udCh0aGlz
LCBmb250RGVzY3JpcHRpb24sIHNob3VsZFJldGFpbiwgbm9uQ2xpZW50TWV0cmljcy5sZkNhcHRp
b25Gb250LCBmYWxsYmFja0ZvbnROYW1lKSkKKyAgICAgICAgaWYgKHNpbXBsZUZvbnQgPSBmb250
RGF0YUZyb21EZXNjcmlwdGlvbkFuZExvZ0ZvbnQoZm9udERlc2NyaXB0aW9uLCBzaG91bGRSZXRh
aW4sIG5vbkNsaWVudE1ldHJpY3MubGZDYXB0aW9uRm9udCwgZmFsbGJhY2tGb250TmFtZSkpCiAg
ICAgICAgICAgICByZXR1cm4gc2ltcGxlRm9udDsKLSAgICAgICAgaWYgKHNpbXBsZUZvbnQgPSBm
b250RGF0YUZyb21EZXNjcmlwdGlvbkFuZExvZ0ZvbnQodGhpcywgZm9udERlc2NyaXB0aW9uLCBz
aG91bGRSZXRhaW4sIG5vbkNsaWVudE1ldHJpY3MubGZTbUNhcHRpb25Gb250LCBmYWxsYmFja0Zv
bnROYW1lKSkKKyAgICAgICAgaWYgKHNpbXBsZUZvbnQgPSBmb250RGF0YUZyb21EZXNjcmlwdGlv
bkFuZExvZ0ZvbnQoZm9udERlc2NyaXB0aW9uLCBzaG91bGRSZXRhaW4sIG5vbkNsaWVudE1ldHJp
Y3MubGZTbUNhcHRpb25Gb250LCBmYWxsYmFja0ZvbnROYW1lKSkKICAgICAgICAgICAgIHJldHVy
biBzaW1wbGVGb250OwogICAgIH0KICAgICAK
</data>

          </attachment>
      

    </bug>

</bugzilla>