<?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>5166</bug_id>
          
          <creation_ts>2005-09-28 07:13:59 -0700</creation_ts>
          <short_desc>Remaining cases where the ATSUI and CG code paths measure and render the same text differently</short_desc>
          <delta_ts>2005-12-21 06:42:49 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</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>
          <dependson>6132</dependson>
    
    <dependson>6137</dependson>
    
    <dependson>6139</dependson>
          <blocked>4844</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter>mitz</reporter>
          <assigned_to name="Dave Hyatt">hyatt</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>20735</commentid>
    <comment_count>0</comment_count>
    <who name="">mitz</who>
    <bug_when>2005-09-28 07:13:59 -0700</bug_when>
    <thetext>This is a follow up to bug 4940. The fix for that bug did not address the following cases where the 
same problem occurs:
1) ATSU applies kerning as specified by the font
2) ATSU uses ligatures (such as &quot;fi&quot;) specified by the font
3) A fallback font is used whose rendering mode is different from that of the WebTextRenderer&apos;s 
original font

The attached testcase demonstrates all 3 problems. The first two lines demonstrate kerning. Notice the 
different width and appearance. Double-click  words in the second line to select them and notice how 
the selection highlight is in the wrong place. The next couple of lines show this in a different font. The 
next couple of lines demonstrate ligatures. The last couple of lines demonstrate the fallback font 
problem. Hebrew is rendered in Lucida Grande in both, but the metrics are different since Times and 
Lucida Grande don&apos;t use the same rendering mode.

Case (3) is probably the easiest to correct. For cases (1) and (2), dumbing down the ATSU code path to 
behave just like the CG code path may defeat that path&apos;s sole purpose, so if done it may have to be 
done carefully and selectively.

Finally, after the synthesized bold/oblique patch is landed, it might add another problematic case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>20736</commentid>
    <comment_count>1</comment_count>
      <attachid>4077</attachid>
    <who name="">mitz</who>
    <bug_when>2005-09-28 07:14:23 -0700</bug_when>
    <thetext>Created attachment 4077
testcase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>21555</commentid>
    <comment_count>2</comment_count>
      <attachid>4240</attachid>
    <who name="">mitz</who>
    <bug_when>2005-10-06 16:21:54 -0700</bug_when>
    <thetext>Created attachment 4240
better testcase

The last part of the previous testcase was rubbish</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>21556</commentid>
    <comment_count>3</comment_count>
      <attachid>4241</attachid>
    <who name="">mitz</who>
    <bug_when>2005-10-06 16:24:47 -0700</bug_when>
    <thetext>Created attachment 4241
match rendering mode for overrides, disable kerning and ligatures in ATSU</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>21557</commentid>
    <comment_count>4</comment_count>
      <attachid>4242</attachid>
    <who name="">mitz</who>
    <bug_when>2005-10-06 17:24:18 -0700</bug_when>
    <thetext>Created attachment 4242
match rendering mode for overrides, disable kerning and ligatures in ATSU

Also use ATSU for highlighting and drawing if any of the characters before to
run.from require it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>21569</commentid>
    <comment_count>5</comment_count>
      <attachid>4247</attachid>
    <who name="">mitz</who>
    <bug_when>2005-10-07 15:12:54 -0700</bug_when>
    <thetext>Created attachment 4247
fix more ATSUI/CG differences</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>21571</commentid>
    <comment_count>6</comment_count>
      <attachid>4247</attachid>
    <who name="">mitz</who>
    <bug_when>2005-10-07 15:25:06 -0700</bug_when>
    <thetext>Comment on attachment 4247
fix more ATSUI/CG differences

Since small caps affect metrics, this patch implements them in the ATSU code
path. Synthetic bold is also taken into account to ensure consistent metrics,
but ATSU still doesn&apos;t &quot;double-strike&quot;. The patch also implements synthetic
oblique (since it practically came for free with the synthetic bold). (I should
add a testcase for these features).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>21583</commentid>
    <comment_count>7</comment_count>
      <attachid>4247</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2005-10-08 11:09:32 -0700</bug_when>
    <thetext>Comment on attachment 4247
fix more ATSUI/CG differences

I think that turning off kerning and ligatures in the ATSU path is actually the
wrong direction -- in the long run I&apos;d like to support kerning and ligatures in
our CG code path, but still keep the code path very fast. That doesn&apos;t mean I
this patch is unacceptable, but I would like to go the other direction as much
as possible in the future.

In disposeATSULayoutParameters, there&apos;s no need for the if before free; free is
defined to do nothing for 0.

Generally we only allocate with calloc when we need the &quot;initialized with 0&quot;
behvior, otherwise, we don&apos;t want to spend the extra time to zero the entire
buffer. So perhaps some of those calloc calls should just be malloc with
multiplication.

There is one place with two spaces after an =, a call to ATSUMatchFontsToText.
Should remove the extra space.

An question unrelated to this patch: can we use ATSUMatchFontsToText in
substituteFontForString in the future? I think ATSU&apos;s subsitute fonts might be
better than the ones we get from AppKit calls, and perhaps could wean us from
AppKit SPI.

I&apos;m concerned about the performance impliciations of checking more characters
in the calls to shouldUseATSU. I understand the check is necessary, but we&apos;ll
need to test that this doesn&apos;t slow down key benchmarks.

Also, perhaps the rule of checking from the beginning of the run could be
inside shouldUseATSU instead of having to repeat it in two places.

Perhaps the attribute arrays should have size declared explicitly as 4; I think
that makes it slighly less likely the sizes will get ouf of sync with the size
parameter to ATSUSetAttributes.

I&apos;m concerned that the heuristic about when to turn off ligatures is not good.
If there&apos;s some great Arabic font that also happens to include Roman characters
in it (perhaps it&apos;s a universal font that covers many characters), then I still
want the ligatures to work properly. We should probably contemplate another
heuristic.

Perhaps for a later patch, not this one: As long as we&apos;re copying the buffer
for the small caps case, we should also copy the buffer for runs that have
&apos;\n&apos;, &apos;\t&apos;, NBSP, or other control characters in them. Then &apos;\n&apos;, &apos;\t&apos;, and
NBSP can just be replaced with spaces; for other control characters perhaps we
can use zero-width spaces as the CG code path does. Or we could adjust offsets
and lengths and remove those other control characters.

Why does this patch omit the &quot;render bold twice&quot; part? It seems we could do
that relatively easily by calling ATSUDrawText twice; do we really need to
stage this in two separate patches?

I think these things should be done separately to make it easier to catch
performance regressions. So ideally one patch should add the multiple renderers
and small caps. A separate one could add synthetic oblique and bold. Still
another could turn off kerning and ligatures. And a final one could turn on the
more-correct check for when to use ATSU. This will make it much easier for the
people who test performance to notice effects of the individual changes.

I&apos;d like to be more clear on which of these suggestions are mandatory and which
are optional, but my thinking on this is not so clear at the moment; instead I
want to get my feedback to you ASAP.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>21609</commentid>
    <comment_count>8</comment_count>
    <who name="">mitz</who>
    <bug_when>2005-10-09 09:59:16 -0700</bug_when>
    <thetext>(In reply to comment #7)

&gt; I think that turning off kerning and ligatures in the ATSU path is actually the
&gt; wrong direction

Once the CG code path supports kerning and/or ligatures, turning them back on in the ATSU
code path should be very easy. Right now this patch is necessary because when the two
code paths don&apos;t match each other in all aspects that affect how text is measured,
it leads to buggy behavior. I also think that supporting features inconsistently (e.g.
one line has ligatures and the next one does not, for no apparent reason) is worse
than not supporting them at all (yet I don&apos;t expect this logic to be applied when it
limits the CG code path, line/word-spacing and justification being an example).

&gt; An question unrelated to this patch: can we use ATSUMatchFontsToText in
&gt; substituteFontForString in the future?

Probably.

&gt; I&apos;m concerned about the performance impliciations of checking more characters
&gt; in the calls to shouldUseATSU. I understand the check is necessary, but we&apos;ll
&gt; need to test that this doesn&apos;t slow down key benchmarks.

In my experience, run-&gt;from != 0 only in two cases: drawing the highlight for
a partially-selected run and drawing the drag image for a partially-selected run. I&apos;ll
be surprised if these code paths are even exercised in the benchmarks.

&gt; Also, perhaps the rule of checking from the beginning of the run could be
&gt; inside shouldUseATSU instead of having to repeat it in two places.

Agreed.

&gt; I&apos;m concerned that the heuristic about when to turn off ligatures is not good.
&gt; If there&apos;s some great Arabic font that also happens to include Roman characters
&gt; in it (perhaps it&apos;s a universal font that covers many characters), then I still
&gt; want the ligatures to work properly. We should probably contemplate another
&gt; heuristic.

I don&apos;t suppose overriding in the character morphing operation
(kATSULayoutOperationMorph) would do any good, since the override proc doesn&apos;t
seem to have any say on the actual morphing process.

&gt; As long as we&apos;re copying the buffer
&gt; for the small caps case

Oh, it&apos;s probably a good idea to merge addDirectionalOverride into
createATSULayoutParameters to avoid copying twice.

Another idea I had was to merge createATSUTextLayoutForRun into
createATSULayoutParameters.

&gt; Why does this patch omit the &quot;render bold twice&quot; part? It seems we could do
&gt; that relatively easily by calling ATSUDrawText twice; do we really need to
&gt; stage this in two separate patches?

Since the ATSUTextLayout may point to several renderers, with only some of
them being synthetic bold, the override should be told when it&apos;s the second pass
and should substitute glyphs coming from a non-synthetic renderer with the space
glyph. It can be done in this patch, then again...

&gt; I think these things should be done separately to make it easier to catch
&gt; performance regressions. So ideally one patch should add the multiple renderers
&gt; and small caps. A separate one could add synthetic oblique and bold. Still
&gt; another could turn off kerning and ligatures. And a final one could turn on the
&gt; more-correct check for when to use ATSU. This will make it much easier for the
&gt; people who test performance to notice effects of the individual changes.

Only one of the above (&quot;the more-correct check for when to use ATSU&quot;) affects
performance on the CG code path (then again, as I said, not really). The rest
affect only ATSU, which I thought goes unnoticed by the benchmark. How about this
order:
1) correct check for when to use ATSU (to fix highlighting bug in lines containing
combining marks)
2) multiple renderers and small caps (to fix more highlighting bugs and a very
noticeable rendering inconsistency)
3) turning off kerning and ligatures (for consistency and to fix more highlighting
bugs; might regress some Arabic)
4) adding synthetic oblique and bold (for consistency)

Optionally, do 2-4 in only one or two patch since they only affect ATSU performance.

You made a few other comments on the code, which I&apos;ll address when I update the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>22507</commentid>
    <comment_count>9</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2005-10-22 10:17:18 -0700</bug_when>
    <thetext>OK, all your comments make sense to me, and I think your plan is good.

The only part that still makes me uncomfortable is the heuristic about when to turn off ligatures. But if you 
think it will cause no actual problems in practice, then I think it&apos;s worth the risk.

Maybe the right thing to do is to investigate fast ways to render ligatures in the CG code path. Then we 
can just turn everything back on and be happy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>22508</commentid>
    <comment_count>10</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2005-10-22 10:17:34 -0700</bug_when>
    <thetext>(Right thing slightly longer term I mean.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>25580</commentid>
    <comment_count>11</comment_count>
      <attachid>4965</attachid>
    <who name="">mitz</who>
    <bug_when>2005-12-05 07:57:37 -0800</bug_when>
    <thetext>Created attachment 4965
1. correct check for when to use ATSU</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>25581</commentid>
    <comment_count>12</comment_count>
      <attachid>4966</attachid>
    <who name="">mitz</who>
    <bug_when>2005-12-05 07:58:27 -0800</bug_when>
    <thetext>Created attachment 4966
2. multiple renderers, small caps and correct metrics for synthetic bold</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>25582</commentid>
    <comment_count>13</comment_count>
      <attachid>4967</attachid>
    <who name="">mitz</who>
    <bug_when>2005-12-05 07:59:20 -0800</bug_when>
    <thetext>Created attachment 4967
3. disable kerning and some ligatures in the ATSUI code path</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>25583</commentid>
    <comment_count>14</comment_count>
      <attachid>4968</attachid>
    <who name="">mitz</who>
    <bug_when>2005-12-05 08:00:06 -0800</bug_when>
    <thetext>Created attachment 4968
4. render synthetic bold and oblique</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>25584</commentid>
    <comment_count>15</comment_count>
    <who name="">mitz</who>
    <bug_when>2005-12-05 08:16:00 -0800</bug_when>
    <thetext>General comment about the patches: the 4 patches are meant to apply to TOT after the patches for bug 
579 and bug 5878 are landed. Each patch is a diff from that with previous patches applied, but will also 
merge independently, except for patch 4 which needs patch 2.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>25585</commentid>
    <comment_count>16</comment_count>
      <attachid>4965</attachid>
    <who name="">mitz</who>
    <bug_when>2005-12-05 08:31:44 -0800</bug_when>
    <thetext>Comment on attachment 4965
1. correct check for when to use ATSU

(see also comment #15)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>25586</commentid>
    <comment_count>17</comment_count>
      <attachid>4966</attachid>
    <who name="">mitz</who>
    <bug_when>2005-12-05 08:31:48 -0800</bug_when>
    <thetext>Comment on attachment 4966
2. multiple renderers, small caps and correct metrics for synthetic bold

(see also comment #15). Merged createATSUTextLayout with
createATSULayoutParameters. Also eliminated applyMirroringToRun.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>25587</commentid>
    <comment_count>18</comment_count>
      <attachid>4967</attachid>
    <who name="">mitz</who>
    <bug_when>2005-12-05 08:31:51 -0800</bug_when>
    <thetext>Comment on attachment 4967
3. disable kerning and some ligatures in the ATSUI code path

(see also comment #15)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>25588</commentid>
    <comment_count>19</comment_count>
      <attachid>4968</attachid>
    <who name="">mitz</who>
    <bug_when>2005-12-05 08:31:55 -0800</bug_when>
    <thetext>Comment on attachment 4968
4. render synthetic bold and oblique

(see also comment #15). Perhaps this should check for the special case where a
single renderer is used for the entire run and that renderer uses synthetic
bold (then a simple &quot;double-strike&quot; will do).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>25643</commentid>
    <comment_count>20</comment_count>
      <attachid>4968</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2005-12-06 15:04:09 -0800</bug_when>
    <thetext>Comment on attachment 4968
4. render synthetic bold and oblique

I think we&apos;ll get uninitialized variable warnings for syntheticBoldOffset and
spaceGlyph with this patch as-is. Otherwise looks fine to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>25644</commentid>
    <comment_count>21</comment_count>
      <attachid>4968</attachid>
    <who name="">mitz</who>
    <bug_when>2005-12-06 15:14:14 -0800</bug_when>
    <thetext>Comment on attachment 4968
4. render synthetic bold and oblique

I verified that the compiler (gcc 4.0) doesn&apos;t warn about those variables. If
it&apos;s still a concern, r- again and I&apos;ll add initializers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>25678</commentid>
    <comment_count>22</comment_count>
      <attachid>4967</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2005-12-07 14:56:18 -0800</bug_when>
    <thetext>Comment on attachment 4967
3. disable kerning and some ligatures in the ATSUI code path

I&apos;m still skeptical about this rule about when to turn off ligatures. I wish we
could figure out a super-fast way of doing ligatures in CG instead.

The &quot;covers the letter a&quot; heuristic seems weak to me. If the makers of the
Geeza fonts chose to revise them to include more characters, then the heuristic
would break.

But I don&apos;t have a better suggestion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>25765</commentid>
    <comment_count>23</comment_count>
      <attachid>4966</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2005-12-10 07:14:25 -0800</bug_when>
    <thetext>Comment on attachment 4966
2. multiple renderers, small caps and correct metrics for synthetic bold

It seems strange to mix &quot;bool&quot; and &quot;NO&quot;. &quot;BOOL&quot; goes with &quot;NO&quot; and &quot;YES&quot;, and
&quot;bool&quot; goes with &quot;true&quot; and &quot;false&quot;, and &quot;Boolean&quot; goes with &quot;TRUE&quot; and
&quot;FALSE&quot;.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>25768</commentid>
    <comment_count>24</comment_count>
    <who name="">mitz</who>
    <bug_when>2005-12-10 08:25:47 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; bug 579

I meant to write bug 5479.

Once that fix is landed, I should split this bug into 3 or 4 separate bugs, each with a testcase and the 
relevant patch in commit-ready form.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>26104</commentid>
    <comment_count>25</comment_count>
      <attachid>4967</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2005-12-18 01:14:39 -0800</bug_when>
    <thetext>Comment on attachment 4967
3. disable kerning and some ligatures in the ATSUI code path

It would be nice to have a radar/bugzilla number with your comment.  Also,
having the test case as a patch is most helpful.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>26116</commentid>
    <comment_count>26</comment_count>
      <attachid>4965</attachid>
    <who name="">mitz</who>
    <bug_when>2005-12-18 09:44:36 -0800</bug_when>
    <thetext>Comment on attachment 4965
1. correct check for when to use ATSU

Now part of attachment 5134 in bug 6132.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>26123</commentid>
    <comment_count>27</comment_count>
      <attachid>4967</attachid>
    <who name="">mitz</who>
    <bug_when>2005-12-18 10:54:32 -0800</bug_when>
    <thetext>Comment on attachment 4967
3. disable kerning and some ligatures in the ATSUI code path

Now part of attachment 5139 in bug 6137.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>26130</commentid>
    <comment_count>28</comment_count>
      <attachid>4966</attachid>
    <who name="">mitz</who>
    <bug_when>2005-12-18 14:09:19 -0800</bug_when>
    <thetext>Comment on attachment 4966
2. multiple renderers, small caps and correct metrics for synthetic bold

Now part of attachment 5140 in bug 6139.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>26131</commentid>
    <comment_count>29</comment_count>
      <attachid>4968</attachid>
    <who name="">mitz</who>
    <bug_when>2005-12-18 14:09:21 -0800</bug_when>
    <thetext>Comment on attachment 4968
4. render synthetic bold and oblique

Now part of attachment 5140 in bug 6139.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>26132</commentid>
    <comment_count>30</comment_count>
      <attachid>4968</attachid>
    <who name="">mitz</who>
    <bug_when>2005-12-18 14:12:03 -0800</bug_when>
    <thetext>Comment on attachment 4968
4. render synthetic bold and oblique

Cleared review flags to remove this bug from the commit queue.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>4077</attachid>
            <date>2005-09-28 07:14:23 -0700</date>
            <delta_ts>2005-10-06 16:21:54 -0700</delta_ts>
            <desc>testcase</desc>
            <filename>more ATSU vs CG.html</filename>
            <type>text/html</type>
            <size>1291</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">PGh0bWw+PGhlYWQ+CjxzdHlsZT4Kc3BhbiB7IGJvcmRlcjogc29saWQgMXB4IHJlZDsgfQo8L3N0
eWxlPgo8L2hlYWQ+Cjxib2R5Pgo8ZGl2IHN0eWxlPSJmb250LWZhbWlseTpUaW1lczsgZm9udC1z
aXplOjIwcHg7Ij4KPHA+CjxzcGFuPgpBVkFWQVZBVGUgQVZBVkFWQVRlIEFWQVZBVkFUZSBBVkFW
QVZBVGUKPC9zcGFuPgo8L3A+CjxwPgo8c3Bhbj4KQVZBVkFWQVRlIEFWQVZBVkFUZSYjeDAzMDA7
IEFWQVZBVkFUZSBBVkFWQVZBVGUKPC9zcGFuPgo8L3A+CjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5
OkhlbHZldGljYTsgZm9udC1zaXplOjIwcHg7Ij4KPHA+CjxzcGFuPgpBVkFWQVZBVGUgQVZBVkFW
QVRlIEFWQVZBVkFUZSBBVkFWQVZBVGUKPC9zcGFuPgo8L3A+CjxwPgo8c3Bhbj4KQVZBVkFWQVRl
IEFWQVZBVkFUZSYjeDAzMDA7IEFWQVZBVkFUZSBBVkFWQVZBVGUKPC9zcGFuPgo8L3A+CjwvZGl2
Pgo8cD4KPHNwYW4+CmZpZmlmaWZpZSBmaWZpZmlmaWUgZmlmaWZpZmllIGZpZmlmaWZpZSBmaWZp
ZmlmaWUKPC9zcGFuPgo8L3A+CjxwPgo8c3Bhbj4KZmlmaWZpZmllIGZpZmlmaWZpZSBmaWZpZmlm
aWUmI3gwMzAwOyBmaWZpZmlmaWUgZmlmaWZpZmllCjwvc3Bhbj4KPC9wPgo8L2Rpdj4KPGRpdj4K
PCEtLSBGYWxsYmFjayBmcm9tIFRpbWVzIHRvIEx1Y2lkYSBHcmFuZGUgLS0+CjxwPgo8c3BhbiBz
dHlsZT0iZm9udC1mYW1pbHk6VGltZXM7IGZvbnQtc2l6ZToyMXB4OyI+CiYjeDA1ZDA7JiN4MDVk
MTsmI3gwNWQyOyYjeDA1ZDM7JiN4MDVkNDsmI3gwNWQ1Oy0tLS0tJiN4MDVkMDsmI3gwNWQxOyYj
eDA1ZDI7JiN4MDVkMzsmI3gwNWQ0OyYjeDA1ZDU7ICYjeDA1ZDA7JiN4MDVkMTsmI3gwNWQyOyYj
eDA1ZDM7JiN4MDVkNDsmI3gwNWQ1OyAmI3gwNWQwOyYjeDA1ZDE7JiN4MDVkMjsmI3gwNWQzOyYj
eDA1ZDQ7JiN4MDVkNTsgYWJjZGVmZwo8L3NwYW4+CjwvcD4KPCEtLSBMdWNpZGEgR3JhbmRlLCBu
byBmYWxsYmFjayAtLT4KPHA+CjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTonTHVjaWRhIEdyYW5k
ZSc7IGZvbnQtc2l6ZToyMXB4OyI+CiYjeDA1ZDA7JiN4MDVkMTsmI3gwNWQyOyYjeDA1ZDM7JiN4
MDVkNDsmI3gwNWQ1Oy0tLS0tJiN4MDVkMDsmI3gwNWQxOyYjeDA1ZDI7JiN4MDVkMzsmI3gwNWQ0
OyYjeDA1ZDU7ICYjeDA1ZDA7JiN4MDVkMTsmI3gwNWQyOyYjeDA1ZDM7JiN4MDVkNDsmI3gwNWQ1
OyAmI3gwNWQwOyYjeDA1ZDE7JiN4MDVkMjsmI3gwNWQzOyYjeDA1ZDQ7JiN4MDVkNTsgYWJjZGVm
Zwo8L3NwYW4+CjwvcD4KPC9kaXY+CjwvYm9keT4KPC9odG1sPg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>4240</attachid>
            <date>2005-10-06 16:21:54 -0700</date>
            <delta_ts>2005-10-06 16:21:54 -0700</delta_ts>
            <desc>better testcase</desc>
            <filename>more ATSU vs CG_r2.html</filename>
            <type>text/html</type>
            <size>2350</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">PGh0bWw+PGhlYWQ+CjxzdHlsZT4Kc3BhbiB7IGJvcmRlcjogc29saWQgMXB4IHJlZDsgfQo8L3N0
eWxlPgo8L2hlYWQ+Cjxib2R5Pgo8ZGl2IHN0eWxlPSJmb250LWZhbWlseTpUaW1lczsgZm9udC1z
aXplOjIwcHg7Ij4KPHA+CjxzcGFuPgplQVZBVCBBVkFWQVZBVGUgQVZBVkFWQVRlCjwvc3Bhbj4K
PC9wPgo8cD4KPHNwYW4+CmUmI3gwMzAwO0FWQVQgQVZBVkFWQVRlIEFWQVZBVkFUZQo8L3NwYW4+
CjwvcD4KPGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6SGVsdmV0aWNhOyBmb250LXNpemU6MjBweDsi
Pgo8cD4KPHNwYW4+CkFWQVZBVkFUZSBBVkFWQVZBVGUgQVZBVkFWQVRlIEFWQVZBVkFUZQo8L3Nw
YW4+CjwvcD4KPHA+CjxzcGFuPgpBVkFWQVZBVGUgQVZBVkFWQVRlJiN4MDMwMDsgQVZBVkFWQVRl
IEFWQVZBVkFUZQo8L3NwYW4+CjwvcD4KPC9kaXY+CjxwPgo8c3Bhbj4KZmlmaWZpZmllIGZpZmlm
aWZpZSBmaWZpZmlmaWUgZmlmaWZpZmllIGZpZmlmaWZpZQo8L3NwYW4+CjwvcD4KPHA+CjxzcGFu
PgpmaWZpZmlmaWUgZmlmaWZpZmllIGZpZmlmaWZpZSYjeDAzMDA7IGZpZmlmaWZpZSBmaWZpZmlm
aWUKPC9zcGFuPgo8L3A+CjwvZGl2Pgo8ZGl2IHN0eWxlPSJmb250LWZhbWlseTonTHVjaWRhIEdy
YW5kZSc7IGZvbnQtc2l6ZToyMHB4OyI+CjxwPgo8c3Bhbj4KQVZBVkFWQVRlIEFWQVZBVkFUZSBB
VkFWQVZBVGUgQVZBVkFWQVRlCjwvc3Bhbj4KPC9wPgo8cD4KPHNwYW4+CkFWQVZBVkFUZSBBVkFW
QVZBVGUmI3gwMzAwOyBBVkFWQVZBVGUgQVZBVkFWQVRlCjwvc3Bhbj4KPC9wPgo8L2Rpdj4KPHA+
CjxzcGFuPgpmaWZpZmlmaWUgZmlmaWZpZmllIGZpZmlmaWZpZSBmaWZpZmlmaWUgZmlmaWZpZmll
Cjwvc3Bhbj4KPC9wPgo8cD4KPHNwYW4+CmZpZmlmaWZpZSBmaWZpZmlmaWUgZmlmaWZpZmllJiN4
MDMwMDsgZmlmaWZpZmllIGZpZmlmaWZpZQo8L3NwYW4+CjwvcD4KPC9kaXY+CjxkaXY+CjwhLS0g
RmFsbGJhY2sgZnJvbSBUaW1lcyB0byBMdWNpZGEgR3JhbmRlIC0tPgo8cD4KPHNwYW4gc3R5bGU9
ImZvbnQtZmFtaWx5OlRpbWVzOyBmb250LXNpemU6MjBweDsiPgomI3gwNWQ1OyYjeDA1ZDU7JiN4
MDVkNTsmI3gwNWQ1OyYjeDA1ZDU7JiN4MDVkNTsmI3gwNWQ1OyYjeDA1ZDU7JiN4MDVkNTsmI3gw
NWQ1OyYjeDA1ZDU7JiN4MDVkNTsmI3gwNWQ1OyYjeDA1ZDU7JiN4MDVkNTsmI3gwNWQ1OyYjeDA1
ZDU7JiN4MDVkNTsmI3gwNWQ1OyYjeDA1ZDU7JiN4MDVkNTsmI3gwNWQ1OyYjeDA1ZDU7JiN4MDVk
NTsmI3gwNWQ1OyYjeDA1ZDU7JiN4MDVkNTsmI3gwNWQ1OyYjeDA1ZDU7JiN4MDVkNTsmI3gwNWQ1
OyYjeDA1ZDU7JiN4MDVkNTsmI3gwNWQ1OyYjeDA1ZDU7JiN4MDVkNTsmI3gwNWQ1OyYjeDA1ZDU7
JiN4MDVkNTsmI3gwNWQ1OyYjeDA1ZDU7JiN4MDVkNTsmI3gwNWQ1OyYjeDA1ZDU7JiN4MDVkNTsm
I3gwNWQ1OyYjeDA1ZDU7JiN4MDVkNTsmI3gwNWQ1OyYjeDA1ZDU7JiN4MDVkNTsmI3gwNWQ1OyYj
eDA1ZDU7JiN4MDVkNTsmI3gwNWQ1OyYjeDA1ZDU7JiN4MDVkNTsmI3gwNWQ1OyYjeDA1ZDU7JiN4
MDVkNTsmI3gwNWQ1OyYjeDA1ZDU7JiN4MDVkNTsmI3gwNWQ1OyYjeDA1ZDU7JiN4MDVkNTsmI3gw
NWQ1OyYjeDA1ZDU7JiN4MDVkNTsmI3gwNWQ1OyYjeDA1ZDU7Cjwvc3Bhbj4KPC9wPgo8IS0tIEx1
Y2lkYSBHcmFuZGUsIG5vIGZhbGxiYWNrIC0tPgo8cD4KPHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5
OidMdWNpZGEgR3JhbmRlJzsgZm9udC1zaXplOjIwcHg7Ij4KJiN4MDVkNTsmI3gwNWQ1OyYjeDA1
ZDU7JiN4MDVkNTsmI3gwNWQ1OyYjeDA1ZDU7JiN4MDVkNTsmI3gwNWQ1OyYjeDA1ZDU7JiN4MDVk
NTsmI3gwNWQ1OyYjeDA1ZDU7JiN4MDVkNTsmI3gwNWQ1OyYjeDA1ZDU7JiN4MDVkNTsmI3gwNWQ1
OyYjeDA1ZDU7JiN4MDVkNTsmI3gwNWQ1OyYjeDA1ZDU7JiN4MDVkNTsmI3gwNWQ1OyYjeDA1ZDU7
JiN4MDVkNTsmI3gwNWQ1OyYjeDA1ZDU7JiN4MDVkNTsmI3gwNWQ1OyYjeDA1ZDU7JiN4MDVkNTsm
I3gwNWQ1OyYjeDA1ZDU7JiN4MDVkNTsmI3gwNWQ1OyYjeDA1ZDU7JiN4MDVkNTsmI3gwNWQ1OyYj
eDA1ZDU7JiN4MDVkNTsmI3gwNWQ1OyYjeDA1ZDU7JiN4MDVkNTsmI3gwNWQ1OyYjeDA1ZDU7JiN4
MDVkNTsmI3gwNWQ1OyYjeDA1ZDU7JiN4MDVkNTsmI3gwNWQ1OyYjeDA1ZDU7JiN4MDVkNTsmI3gw
NWQ1OyYjeDA1ZDU7JiN4MDVkNTsmI3gwNWQ1OyYjeDA1ZDU7JiN4MDVkNTsmI3gwNWQ1OyYjeDA1
ZDU7JiN4MDVkNTsmI3gwNWQ1OyYjeDA1ZDU7JiN4MDVkNTsmI3gwNWQ1OyYjeDA1ZDU7JiN4MDVk
NTsmI3gwNWQ1OyYjeDA1ZDU7JiN4MDVkNTsmI3gwNWQ1Owo8L3NwYW4+CjwvcD4KPC9kaXY+Cjwv
Ym9keT4KPC9odG1sPg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>4241</attachid>
            <date>2005-10-06 16:24:47 -0700</date>
            <delta_ts>2005-10-06 17:24:18 -0700</delta_ts>
            <desc>match rendering mode for overrides, disable kerning and ligatures in ATSU</desc>
            <filename>5166_r1.patch</filename>
            <type>text/plain</type>
            <size>9556</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYlRleHRSZW5kZXJlci5tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9X
ZWJLaXQvV2ViQ29yZVN1cHBvcnQuc3VicHJvai9XZWJUZXh0UmVuZGVyZXIubSx2CnJldHJpZXZp
bmcgcmV2aXNpb24gMS4xOTYKZGlmZiAtcCAtdSAtcjEuMTk2IFdlYlRleHRSZW5kZXJlci5tCi0t
LSBXZWJUZXh0UmVuZGVyZXIubQk2IE9jdCAyMDA1IDIxOjE5OjQ3IC0wMDAwCTEuMTk2CisrKyBX
ZWJUZXh0UmVuZGVyZXIubQk2IE9jdCAyMDA1IDIzOjIzOjU4IC0wMDAwCkBAIC0xMjEsNiArMTIx
LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgQVRTVUxheW91dFBhcmFtZXRlcnMKICAgICBjb25zdCBXZWJD
b3JlVGV4dFJ1biAqcnVuOwogICAgIGNvbnN0IFdlYkNvcmVUZXh0U3R5bGUgKnN0eWxlOwogICAg
IEFUU1VUZXh0TGF5b3V0IGxheW91dDsKKyAgICBOU0ZvbnRSZW5kZXJpbmdNb2RlICpyZW5kZXJp
bmdNb2RlczsKIH0gQVRTVUxheW91dFBhcmFtZXRlcnM7CiAKIEBpbnRlcmZhY2UgV2ViVGV4dFJl
bmRlcmVyIChXZWJJbnRlcm5hbCkKQEAgLTE1Miw3ICsxNTMsNyBAQCB0eXBlZGVmIHN0cnVjdCBB
VFNVTGF5b3V0UGFyYW1ldGVycwogCiAtIChCT09MKXNldFVwRm9udDsKIAotLSAoQVRTVVRleHRM
YXlvdXQpY3JlYXRlQVRTVVRleHRMYXlvdXRGb3JSdW46KGNvbnN0IFdlYkNvcmVUZXh0UnVuICop
cnVuIHN0eWxlOihjb25zdCBXZWJDb3JlVGV4dFN0eWxlICopc3R5bGU7CistIChBVFNVVGV4dExh
eW91dCljcmVhdGVBVFNVVGV4dExheW91dEZvclJ1bjooY29uc3QgV2ViQ29yZVRleHRSdW4gKily
dW4gc3R5bGU6KGNvbnN0IFdlYkNvcmVUZXh0U3R5bGUgKilzdHlsZSByZW5kZXJpbmdNb2Rlczoo
TlNGb250UmVuZGVyaW5nTW9kZSAqKW1vZGVzOwogCiAtIChXZWJUZXh0UmVuZGVyZXIgKilzbWFs
bENhcHNSZW5kZXJlcjsKIApAQCAtMjM5LDMxICsyNDAsMzIgQEAgc3RhdGljIE9TU3RhdHVzIG92
ZXJyaWRlTGF5b3V0T3BlcmF0aW9uKAogICAgICAgICAgICAgcmV0dXJuIHN0YXR1czsKICAgICAg
ICAgfQogICAgICAgICAKLSAgICAgICAgLy8gVGhlIENvcmVHcmFwaGljcyBpbnRlcnByZXRhdGlv
biBvZiBOU0ZvbnRBbnRpYWxpYXNlZEludGVnZXJBZHZhbmNlbWVudHNSZW5kZXJpbmdNb2RlIHNl
ZW1zCi0gICAgICAgIC8vIHRvIGJlICJyb3VuZCBlYWNoIGdseXBoJ3Mgd2lkdGggdG8gdGhlIG5l
YXJlc3QgaW50ZWdlciIuIFRoaXMgaXMgbm90IHRoZSBzYW1lIGFzIEFUU1VJCi0gICAgICAgIC8v
IGRvZXMgaW4gYW55IG9mIGl0cyBkZXZpY2UtbWV0cmljcyBtb2Rlcy4KLSAgICAgICAgQm9vbGVh
biByb3VuZEVhY2hHbHlwaCA9IFtwYXJhbXMtPnJlbmRlcmVyLT5mb250LmZvbnQgcmVuZGVyaW5n
TW9kZV0gPT0gTlNGb250QW50aWFsaWFzZWRJbnRlZ2VyQWR2YW5jZW1lbnRzUmVuZGVyaW5nTW9k
ZTsKICAgICAgICAgRml4ZWQgbGFzdE5hdGl2ZVBvcyA9IDA7CiAgICAgICAgIGZsb2F0IGxhc3RB
ZGp1c3RlZFBvcyA9IDA7CiAgICAgICAgIGNvbnN0IFdlYkNvcmVUZXh0UnVuICpydW4gPSBwYXJh
bXMtPnJ1bjsKICAgICAgICAgY29uc3QgVW5pQ2hhciAqY2hhcmFjdGVycyA9IHJ1bi0+Y2hhcmFj
dGVyczsKICAgICAgICAgV2ViVGV4dFJlbmRlcmVyICpyZW5kZXJlciA9IHBhcmFtcy0+cmVuZGVy
ZXI7CiAgICAgICAgIFVuaUNoYXIgY2gsIG5leHRDaDsKLSAgICAgICAgbmV4dENoID0gKihVbmlD
aGFyICopKCgoY2hhciAqKWNoYXJhY3RlcnMpK2xheW91dFJlY29yZHNbMF0ub3JpZ2luYWxPZmZz
ZXQpOworICAgICAgICBCeXRlQ291bnQgb2Zmc2V0ID0gbGF5b3V0UmVjb3Jkc1swXS5vcmlnaW5h
bE9mZnNldDsKKyAgICAgICAgbmV4dENoID0gKihVbmlDaGFyICopKCgoY2hhciAqKWNoYXJhY3Rl
cnMpK29mZnNldCk7CiAgICAgICAgIC8vIEluIHRoZSBDb3JlR3JhcGhpY3MgY29kZSBwYXRoLCB0
aGUgcm91bmRpbmcgaGFjayBpcyBhcHBsaWVkIGluIGxvZ2ljYWwgb3JkZXIuCiAgICAgICAgIC8v
IEhlcmUgaXQgaXMgYXBwbGllZCBpbiB2aXN1YWwgbGVmdC10by1yaWdodCBvcmRlciwgd2hpY2gg
bWF5IGJlIGJldHRlci4KICAgICAgICAgSXRlbUNvdW50IGk7CiAgICAgICAgIGZvciAoaSA9IDE7
IGkgPCBjb3VudDsgaSsrKSB7CiAgICAgICAgICAgICBCT09MIGlzTGFzdENoYXIgPSBpID09IGNv
dW50IC0gMTsKKyAgICAgICAgICAgIC8vIFRoZSBDb3JlR3JhcGhpY3MgaW50ZXJwcmV0YXRpb24g
b2YgTlNGb250QW50aWFsaWFzZWRJbnRlZ2VyQWR2YW5jZW1lbnRzUmVuZGVyaW5nTW9kZSBzZWVt
cworICAgICAgICAgICAgLy8gdG8gYmUgInJvdW5kIGVhY2ggZ2x5cGgncyB3aWR0aCB0byB0aGUg
bmVhcmVzdCBpbnRlZ2VyIi4gVGhpcyBpcyBub3QgdGhlIHNhbWUgYXMgQVRTVUkKKyAgICAgICAg
ICAgIC8vIGRvZXMgaW4gYW55IG9mIGl0cyBkZXZpY2UtbWV0cmljcyBtb2Rlcy4KKyAgICAgICAg
ICAgIEJPT0wgc2hvdWxkUm91bmQgPSBwYXJhbXMtPnJlbmRlcmluZ01vZGVzW29mZnNldCAvIDJd
ID09IE5TRm9udEFudGlhbGlhc2VkSW50ZWdlckFkdmFuY2VtZW50c1JlbmRlcmluZ01vZGU7CiAg
ICAgICAgICAgICBjaCA9IG5leHRDaDsKLQorICAgICAgICAgICAgb2Zmc2V0ID0gbGF5b3V0UmVj
b3Jkc1tpXS5vcmlnaW5hbE9mZnNldDsKICAgICAgICAgICAgIC8vIFVzZSBzcGFjZSBmb3IgbmV4
dENoIGF0IHRoZSBlbmQgb2YgdGhlIGxvb3Agc28gdGhhdCB3ZSBnZXQgaW5zaWRlIHRoZSByb3Vu
ZGluZyBoYWNrIGNvZGUuCiAgICAgICAgICAgICAvLyBXZSB3b24ndCBhY3R1YWxseSByb3VuZCB1
bmxlc3MgdGhlIG90aGVyIGNvbmRpdGlvbnMgYXJlIHNhdGlzZmllZC4KLSAgICAgICAgICAgIG5l
eHRDaCA9IGlzTGFzdENoYXIgPyAnICcgOiAqKFVuaUNoYXIgKikoKChjaGFyICopY2hhcmFjdGVy
cykrbGF5b3V0UmVjb3Jkc1tpXS5vcmlnaW5hbE9mZnNldCk7CisgICAgICAgICAgICBuZXh0Q2gg
PSBpc0xhc3RDaGFyID8gJyAnIDogKihVbmlDaGFyICopKCgoY2hhciAqKWNoYXJhY3RlcnMpK29m
ZnNldCk7CiAKICAgICAgICAgICAgIGZsb2F0IHdpZHRoID0gRml4ZWRUb0Zsb2F0KGxheW91dFJl
Y29yZHNbaV0ucmVhbFBvcyAtIGxhc3ROYXRpdmVQb3MpOwogICAgICAgICAgICAgbGFzdE5hdGl2
ZVBvcyA9IGxheW91dFJlY29yZHNbaV0ucmVhbFBvczsKLSAgICAgICAgICAgIGlmIChyb3VuZEVh
Y2hHbHlwaCkKKyAgICAgICAgICAgIGlmIChzaG91bGRSb3VuZCkKICAgICAgICAgICAgICAgICB3
aWR0aCA9IHJvdW5kZih3aWR0aCk7CiAgICAgICAgICAgICBpZiAocmVuZGVyZXItPnRyZWF0QXNG
aXhlZFBpdGNoID8gd2lkdGggPT0gcmVuZGVyZXItPnNwYWNlV2lkdGggOiAobGF5b3V0UmVjb3Jk
c1tpLTFdLmZsYWdzICYga0FUU0dseXBoSW5mb0lzV2hpdGVTcGFjZSkpCiAgICAgICAgICAgICAg
ICAgd2lkdGggPSByZW5kZXJlci0+YWRqdXN0ZWRTcGFjZVdpZHRoOwpAQCAtODcxLDYgKzg3Mywx
MSBAQCBzdGF0aWMgdm9pZCBkcmF3R2x5cGhzKE5TRm9udCAqZm9udCwgTlNDCiAgICAgQ2hhcmFj
dGVyV2lkdGhJdGVyYXRvciB3aWR0aEl0ZXJhdG9yOwogICAgIFdlYkNvcmVUZXh0UnVuIGNvbXBs
ZXRlUnVuID0gKnJ1bjsKICAgICBjb21wbGV0ZVJ1bi5mcm9tID0gMDsKKyAgICBjb21wbGV0ZVJ1
bi50byA9IHJ1bi0+ZnJvbTsKKyAgICBpZiAoc2hvdWxkVXNlQVRTVSgmY29tcGxldGVSdW4pKSB7
CisgICAgICAgIFtzZWxmIEFUU1VfZHJhd0hpZ2hsaWdodEZvclJ1bjpydW4gc3R5bGU6c3R5bGUg
Z2VvbWV0cnk6Z2VvbWV0cnldOworICAgICAgICByZXR1cm47CisgICAgfQogICAgIGNvbXBsZXRl
UnVuLnRvID0gcnVuLT5sZW5ndGg7CiAgICAgaW5pdGlhbGl6ZUNoYXJhY3RlcldpZHRoSXRlcmF0
b3IoJndpZHRoSXRlcmF0b3IsIHNlbGYsICZjb21wbGV0ZVJ1biwgc3R5bGUpOwogICAgIApAQCAt
MTIzNiwxMCArMTI0MywxMSBAQCBzdGF0aWMgdm9pZCBkcmF3R2x5cGhzKE5TRm9udCAqZm9udCwg
TlNDCiAgICAgICAgIAogICAgICAgICBDR0FmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm0gPSBDR0Fm
ZmluZVRyYW5zZm9ybU1ha2VTY2FsZSgxLCAtMSk7CiAgICAgICAgIEZpeGVkIGZvbnRTaXplID0g
RmxvYXRUb0ZpeGVkKFtmb250LmZvbnQgcG9pbnRTaXplXSk7Ci0gICAgICAgIEFUU1VBdHRyaWJ1
dGVUYWcgc3R5bGVUYWdzW10gPSB7IGtBVFNVU2l6ZVRhZywga0FUU1VGb250VGFnLCBrQVRTVUZv
bnRNYXRyaXhUYWd9OwotICAgICAgICBCeXRlQ291bnQgc3R5bGVTaXplc1tdID0geyAgc2l6ZW9m
KEZpeGVkKSwgc2l6ZW9mKEFUU1VGb250SUQpLCBzaXplb2YoQ0dBZmZpbmVUcmFuc2Zvcm0pIH07
Ci0gICAgICAgIEFUU1VBdHRyaWJ1dGVWYWx1ZVB0ciBzdHlsZVZhbHVlc1tdID0geyAmZm9udFNp
emUsICZmb250SUQsICZ0cmFuc2Zvcm0gIH07Ci0gICAgICAgIHN0YXR1cyA9IEFUU1VTZXRBdHRy
aWJ1dGVzKF9BVFNVU3R5bGUsIDMsIHN0eWxlVGFncywgc3R5bGVTaXplcywgc3R5bGVWYWx1ZXMp
OworICAgICAgICBGcmFjdCBrZXJuaW5nSW5oaWJpdEZhY3RvciA9IEZsb2F0VG9GcmFjdCgxLjAp
OworICAgICAgICBBVFNVQXR0cmlidXRlVGFnIHN0eWxlVGFnc1tdID0geyBrQVRTVVNpemVUYWcs
IGtBVFNVRm9udFRhZywga0FUU1VGb250TWF0cml4VGFnLCBrQVRTVUtlcm5pbmdJbmhpYml0RmFj
dG9yVGFnIH07CisgICAgICAgIEJ5dGVDb3VudCBzdHlsZVNpemVzW10gPSB7ICBzaXplb2YoRml4
ZWQpLCBzaXplb2YoQVRTVUZvbnRJRCksIHNpemVvZihDR0FmZmluZVRyYW5zZm9ybSksIHNpemVv
ZihGcmFjdCkgfTsKKyAgICAgICAgQVRTVUF0dHJpYnV0ZVZhbHVlUHRyIHN0eWxlVmFsdWVzW10g
PSB7ICZmb250U2l6ZSwgJmZvbnRJRCwgJnRyYW5zZm9ybSwgJmtlcm5pbmdJbmhpYml0RmFjdG9y
IH07CisgICAgICAgIHN0YXR1cyA9IEFUU1VTZXRBdHRyaWJ1dGVzKF9BVFNVU3R5bGUsIDQsIHN0
eWxlVGFncywgc3R5bGVTaXplcywgc3R5bGVWYWx1ZXMpOwogICAgICAgICBpZiAoc3RhdHVzICE9
IG5vRXJyKQogICAgICAgICAgICAgRkFUQUxfQUxXQVlTKCJBVFNVU2V0QXR0cmlidXRlcyBmYWls
ZWQgKCVkKSIsIHN0YXR1cyk7CiAgICAgICAgIHN0YXR1cyA9IEFUU0ZvbnRHZXRUYWJsZShmb250
SUQsICdwcm9wJywgMCwgMCwgMCwgJnByb3BUYWJsZVNpemUpOwpAQCAtMTI1MCwyMCArMTI1OCwy
MSBAQCBzdGF0aWMgdm9pZCBkcmF3R2x5cGhzKE5TRm9udCAqZm9udCwgTlNDCiAgICAgICAgIGVs
c2UKICAgICAgICAgICAgIEZBVEFMX0FMV0FZUygiQVRTRm9udEdldFRhYmxlIGZhaWxlZCAoJWQp
Iiwgc3RhdHVzKTsKIAorICAgICAgICBBVFNVRm9udEZlYXR1cmVUeXBlIGZlYXR1cmVUeXBlc1td
ID0geyBrTGlnYXR1cmVzVHlwZSB9OworICAgICAgICBBVFNVRm9udEZlYXR1cmVTZWxlY3RvciBm
ZWF0dXJlU2VsZWN0b3JzW10gPSB7IGtDb21tb25MaWdhdHVyZXNPZmZTZWxlY3RvciB9OworICAg
ICAgICBzdGF0dXMgPSBBVFNVU2V0Rm9udEZlYXR1cmVzKF9BVFNVU3R5bGUsIDEsIGZlYXR1cmVU
eXBlcywgZmVhdHVyZVNlbGVjdG9ycyk7CisKICAgICAgICAgQVRTVVN0eWxlSW5pdGlhbGl6ZWQg
PSBZRVM7CiAgICAgfQogfQogCi0tIChBVFNVVGV4dExheW91dCljcmVhdGVBVFNVVGV4dExheW91
dEZvclJ1bjooY29uc3QgV2ViQ29yZVRleHRSdW4gKilydW4gc3R5bGU6KGNvbnN0IFdlYkNvcmVU
ZXh0U3R5bGUgKilzdHlsZQorLSAoQVRTVVRleHRMYXlvdXQpY3JlYXRlQVRTVVRleHRMYXlvdXRG
b3JSdW46KGNvbnN0IFdlYkNvcmVUZXh0UnVuICopcnVuIHN0eWxlOihjb25zdCBXZWJDb3JlVGV4
dFN0eWxlICopc3R5bGUgcmVuZGVyaW5nTW9kZXM6KE5TRm9udFJlbmRlcmluZ01vZGUgKiltb2Rl
cwogewogICAgIC8vIFRoZSBvbmx5IENvY29hIGNhbGxzIGhlcmUgYXJlIHRvIE5TR3JhcGhpY3ND
b250ZXh0IGFuZCB0aGUgc2VsZgogICAgIC8vIGNhbGwgdG8gX2luaXRpYWxpemVBVFNVU3R5bGUs
IHdoaWNoIGFyZSBhbGwgZXhjZXB0aW9uLXNhZmUuCiAKICAgICBBVFNVVGV4dExheW91dCBsYXlv
dXQ7CiAgICAgVW5pQ2hhckNvdW50IHJ1bkxlbmd0aDsKLSAgICBBVFNVRm9udElEIEFUU1VTdWJz
dGl0dXRlRm9udDsKLSAgICBVbmlDaGFyQXJyYXlPZmZzZXQgc3Vic3RpdHV0ZU9mZnNldDsKLSAg
ICBVbmlDaGFyQ291bnQgc3Vic3RpdHV0ZUxlbmd0aDsKICAgICBPU1N0YXR1cyBzdGF0dXM7CiAg
ICAgQVRTVUxheW91dE9wZXJhdGlvbk92ZXJyaWRlU3BlY2lmaWVyIG92ZXJyaWRlU3BlY2lmaWVy
OwogICAgIApAQCAtMTMwNiwxOCArMTMxNSwzNSBAQCBzdGF0aWMgdm9pZCBkcmF3R2x5cGhzKE5T
Rm9udCAqZm9udCwgTlNDCiAgICAgaWYgKHN0YXR1cyAhPSBub0VycikKICAgICAgICAgRkFUQUxf
QUxXQVlTKCJBVFNVU2V0VHJhbnNpZW50Rm9udE1hdGNoaW5nIGZhaWxlZCglZCkiLCBzdGF0dXMp
OwogCi0gICAgc3Vic3RpdHV0ZU9mZnNldCA9IHJ1bi0+ZnJvbTsKLSAgICB3aGlsZSAoKHN0YXR1
cyA9IEFUU1VNYXRjaEZvbnRzVG9UZXh0KGxheW91dCwgc3Vic3RpdHV0ZU9mZnNldCwga0FUU1VU
b1RleHRFbmQsICZBVFNVU3Vic3RpdHV0ZUZvbnQsICZzdWJzdGl0dXRlT2Zmc2V0LCAmc3Vic3Rp
dHV0ZUxlbmd0aCkpID09IGtBVFNVRm9udHNNYXRjaGVkIHx8IHN0YXR1cyA9PSBrQVRTVUZvbnRz
Tm90TWF0Y2hlZCkgewotICAgICAgICBXZWJUZXh0UmVuZGVyZXIgKnN1YnN0aXR1dGVSZW5kZXJl
ciA9IFtzZWxmIHN1YnN0aXR1dGVSZW5kZXJlckZvckNoYXJhY3RlcnM6cnVuLT5jaGFyYWN0ZXJz
K3N1YnN0aXR1dGVPZmZzZXQgbGVuZ3RoOnN1YnN0aXR1dGVMZW5ndGggZmFtaWxpZXM6c3R5bGUt
PmZhbWlsaWVzXTsKLSAgICAgICAgaWYgKHN1YnN0aXR1dGVSZW5kZXJlcikgewotICAgICAgICAg
ICAgW3N1YnN0aXR1dGVSZW5kZXJlciBpbml0aWFsaXplQVRTVVN0eWxlXTsKLSAgICAgICAgICAg
IGlmIChzdWJzdGl0dXRlUmVuZGVyZXIgJiYgc3Vic3RpdHV0ZVJlbmRlcmVyLT5fQVRTVVN0eWxl
KQotICAgICAgICAgICAgICAgIEFUU1VTZXRSdW5TdHlsZShsYXlvdXQsIHN1YnN0aXR1dGVSZW5k
ZXJlci0+X0FUU1VTdHlsZSwgc3Vic3RpdHV0ZU9mZnNldCwgc3Vic3RpdHV0ZUxlbmd0aCk7Ci0g
ICAgICAgICAgICAvLyBpZ25vcmluZyBlcnJvcnMKKyAgICBBVFNVRm9udElEIEFUU1VTdWJzdGl0
dXRlRm9udDsKKyAgICBVbmlDaGFyQXJyYXlPZmZzZXQgc3Vic3RpdHV0ZU9mZnNldCA9IHJ1bi0+
ZnJvbTsKKyAgICBVbmlDaGFyQ291bnQgc3Vic3RpdHV0ZUxlbmd0aDsKKyAgICBVbmlDaGFyQXJy
YXlPZmZzZXQgbGFzdE9mZnNldDsKKyAgICBOU0ZvbnRSZW5kZXJpbmdNb2RlIHN1YnN0aXR1dGVN
b2RlOworICAgIE5TRm9udFJlbmRlcmluZ01vZGUgb3JpZ2luYWxNb2RlID0gW2ZvbnQuZm9udCBy
ZW5kZXJpbmdNb2RlXTsKKyAgICBXZWJUZXh0UmVuZGVyZXIgKnN1YnN0aXR1dGVSZW5kZXJlcjsK
KworICAgIHdoaWxlIChzdWJzdGl0dXRlT2Zmc2V0IDwgcnVuLT5sZW5ndGgpIHsKKyAgICAgICAg
bGFzdE9mZnNldCA9IHN1YnN0aXR1dGVPZmZzZXQ7CisgICAgICAgIHN0YXR1cyA9ICBBVFNVTWF0
Y2hGb250c1RvVGV4dChsYXlvdXQsIHN1YnN0aXR1dGVPZmZzZXQsIGtBVFNVVG9UZXh0RW5kLCAm
QVRTVVN1YnN0aXR1dGVGb250LCAmc3Vic3RpdHV0ZU9mZnNldCwgJnN1YnN0aXR1dGVMZW5ndGgp
OworICAgICAgICBpZiAoc3RhdHVzID09IGtBVFNVRm9udHNNYXRjaGVkIHx8IHN0YXR1cyA9PSBr
QVRTVUZvbnRzTm90TWF0Y2hlZCkgeworICAgICAgICAgICAgc3Vic3RpdHV0ZVJlbmRlcmVyID0g
W3NlbGYgc3Vic3RpdHV0ZVJlbmRlcmVyRm9yQ2hhcmFjdGVyczpydW4tPmNoYXJhY3RlcnMrc3Vi
c3RpdHV0ZU9mZnNldCBsZW5ndGg6c3Vic3RpdHV0ZUxlbmd0aCBmYW1pbGllczpzdHlsZS0+ZmFt
aWxpZXNdOworICAgICAgICAgICAgaWYgKHN1YnN0aXR1dGVSZW5kZXJlcikgeworICAgICAgICAg
ICAgICAgIFtzdWJzdGl0dXRlUmVuZGVyZXIgaW5pdGlhbGl6ZUFUU1VTdHlsZV07CisgICAgICAg
ICAgICAgICAgaWYgKHN1YnN0aXR1dGVSZW5kZXJlci0+X0FUU1VTdHlsZSkKKyAgICAgICAgICAg
ICAgICAgICAgQVRTVVNldFJ1blN0eWxlKGxheW91dCwgc3Vic3RpdHV0ZVJlbmRlcmVyLT5fQVRT
VVN0eWxlLCBzdWJzdGl0dXRlT2Zmc2V0LCBzdWJzdGl0dXRlTGVuZ3RoKTsKKyAgICAgICAgICAg
ICAgICBzdWJzdGl0dXRlTW9kZSA9IFtzdWJzdGl0dXRlUmVuZGVyZXItPmZvbnQuZm9udCByZW5k
ZXJpbmdNb2RlXTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIHN1YnN0aXR1
dGVNb2RlID0gb3JpZ2luYWxNb2RlOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgc3Vi
c3RpdHV0ZU9mZnNldCA9IHJ1bi0+bGVuZ3RoOworICAgICAgICAgICAgc3Vic3RpdHV0ZUxlbmd0
aCA9IDA7CiAgICAgICAgIH0KLSAgICAgICAgc3Vic3RpdHV0ZU9mZnNldCArPSBzdWJzdGl0dXRl
TGVuZ3RoOworICAgICAgICB3aGlsZSAobGFzdE9mZnNldCA8IHN1YnN0aXR1dGVPZmZzZXQpCisg
ICAgICAgICAgICBtb2Rlc1tsYXN0T2Zmc2V0KytdID0gb3JpZ2luYWxNb2RlOworICAgICAgICB3
aGlsZSAoc3Vic3RpdHV0ZUxlbmd0aC0tID4gMCkKKyAgICAgICAgICAgIG1vZGVzW3N1YnN0aXR1
dGVPZmZzZXQrK10gPSBzdWJzdGl0dXRlTW9kZTsKICAgICB9Ci0gICAgLy8gaWdub3JpbmcgZXJy
b3JzIGluIGZvbnQgc3Vic3RpdHV0aW9uCiAgICAgICAgIAogICAgIHJldHVybiBsYXlvdXQ7CiB9
CkBAIC0xNzQxLDEzICsxNzY3LDE1IEBAIHN0YXRpYyB2b2lkIGNyZWF0ZUFUU1VMYXlvdXRQYXJh
bWV0ZXJzKEEKICAgICBwYXJhbXMtPnJlbmRlcmVyID0gcmVuZGVyZXI7CiAgICAgcGFyYW1zLT5y
dW4gPSBydW47CiAgICAgcGFyYW1zLT5zdHlsZSA9IHN0eWxlOwotICAgIHBhcmFtcy0+bGF5b3V0
ID0gW3JlbmRlcmVyIGNyZWF0ZUFUU1VUZXh0TGF5b3V0Rm9yUnVuOnJ1biBzdHlsZTpzdHlsZV07
CisgICAgcGFyYW1zLT5yZW5kZXJpbmdNb2RlcyA9IGNhbGxvYyhydW4tPmxlbmd0aCwgc2l6ZW9m
KE5TRm9udFJlbmRlcmluZ01vZGUpKTsKKyAgICBwYXJhbXMtPmxheW91dCA9IFtyZW5kZXJlciBj
cmVhdGVBVFNVVGV4dExheW91dEZvclJ1bjpydW4gc3R5bGU6c3R5bGUgcmVuZGVyaW5nTW9kZXM6
cGFyYW1zLT5yZW5kZXJpbmdNb2Rlc107CiAgICAgQVRTVVNldFRleHRMYXlvdXRSZWZDb24ocGFy
YW1zLT5sYXlvdXQsIChVSW50MzIpcGFyYW1zKTsKIH0KIAogc3RhdGljIHZvaWQgZGlzcG9zZUFU
U1VMYXlvdXRQYXJhbWV0ZXJzKEFUU1VMYXlvdXRQYXJhbWV0ZXJzICpwYXJhbXMpCiB7CiAgICAg
QVRTVURpc3Bvc2VUZXh0TGF5b3V0KHBhcmFtcy0+bGF5b3V0KTsKKyAgICBmcmVlKHBhcmFtcy0+
cmVuZGVyaW5nTW9kZXMpOwogfQogCiBzdGF0aWMgaW5saW5lIGZsb2F0IGNlaWxDdXJyZW50V2lk
dGgoQ2hhcmFjdGVyV2lkdGhJdGVyYXRvciAqaXRlcmF0b3IpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>4242</attachid>
            <date>2005-10-06 17:24:18 -0700</date>
            <delta_ts>2005-10-07 15:12:54 -0700</delta_ts>
            <desc>match rendering mode for overrides, disable kerning and ligatures in ATSU</desc>
            <filename>5166_r2.patch</filename>
            <type>text/plain</type>
            <size>10352</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYlRleHRSZW5kZXJlci5tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9X
ZWJLaXQvV2ViQ29yZVN1cHBvcnQuc3VicHJvai9XZWJUZXh0UmVuZGVyZXIubSx2CnJldHJpZXZp
bmcgcmV2aXNpb24gMS4xOTYKZGlmZiAtcCAtdSAtcjEuMTk2IFdlYlRleHRSZW5kZXJlci5tCi0t
LSBXZWJUZXh0UmVuZGVyZXIubQk2IE9jdCAyMDA1IDIxOjE5OjQ3IC0wMDAwCTEuMTk2CisrKyBX
ZWJUZXh0UmVuZGVyZXIubQk3IE9jdCAyMDA1IDAwOjI0OjMxIC0wMDAwCkBAIC0xMjEsNiArMTIx
LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgQVRTVUxheW91dFBhcmFtZXRlcnMKICAgICBjb25zdCBXZWJD
b3JlVGV4dFJ1biAqcnVuOwogICAgIGNvbnN0IFdlYkNvcmVUZXh0U3R5bGUgKnN0eWxlOwogICAg
IEFUU1VUZXh0TGF5b3V0IGxheW91dDsKKyAgICBOU0ZvbnRSZW5kZXJpbmdNb2RlICpyZW5kZXJp
bmdNb2RlczsKIH0gQVRTVUxheW91dFBhcmFtZXRlcnM7CiAKIEBpbnRlcmZhY2UgV2ViVGV4dFJl
bmRlcmVyIChXZWJJbnRlcm5hbCkKQEAgLTE1Miw3ICsxNTMsNyBAQCB0eXBlZGVmIHN0cnVjdCBB
VFNVTGF5b3V0UGFyYW1ldGVycwogCiAtIChCT09MKXNldFVwRm9udDsKIAotLSAoQVRTVVRleHRM
YXlvdXQpY3JlYXRlQVRTVVRleHRMYXlvdXRGb3JSdW46KGNvbnN0IFdlYkNvcmVUZXh0UnVuICop
cnVuIHN0eWxlOihjb25zdCBXZWJDb3JlVGV4dFN0eWxlICopc3R5bGU7CistIChBVFNVVGV4dExh
eW91dCljcmVhdGVBVFNVVGV4dExheW91dEZvclJ1bjooY29uc3QgV2ViQ29yZVRleHRSdW4gKily
dW4gc3R5bGU6KGNvbnN0IFdlYkNvcmVUZXh0U3R5bGUgKilzdHlsZSByZW5kZXJpbmdNb2Rlczoo
TlNGb250UmVuZGVyaW5nTW9kZSAqKW1vZGVzOwogCiAtIChXZWJUZXh0UmVuZGVyZXIgKilzbWFs
bENhcHNSZW5kZXJlcjsKIApAQCAtMjM5LDMxICsyNDAsMzIgQEAgc3RhdGljIE9TU3RhdHVzIG92
ZXJyaWRlTGF5b3V0T3BlcmF0aW9uKAogICAgICAgICAgICAgcmV0dXJuIHN0YXR1czsKICAgICAg
ICAgfQogICAgICAgICAKLSAgICAgICAgLy8gVGhlIENvcmVHcmFwaGljcyBpbnRlcnByZXRhdGlv
biBvZiBOU0ZvbnRBbnRpYWxpYXNlZEludGVnZXJBZHZhbmNlbWVudHNSZW5kZXJpbmdNb2RlIHNl
ZW1zCi0gICAgICAgIC8vIHRvIGJlICJyb3VuZCBlYWNoIGdseXBoJ3Mgd2lkdGggdG8gdGhlIG5l
YXJlc3QgaW50ZWdlciIuIFRoaXMgaXMgbm90IHRoZSBzYW1lIGFzIEFUU1VJCi0gICAgICAgIC8v
IGRvZXMgaW4gYW55IG9mIGl0cyBkZXZpY2UtbWV0cmljcyBtb2Rlcy4KLSAgICAgICAgQm9vbGVh
biByb3VuZEVhY2hHbHlwaCA9IFtwYXJhbXMtPnJlbmRlcmVyLT5mb250LmZvbnQgcmVuZGVyaW5n
TW9kZV0gPT0gTlNGb250QW50aWFsaWFzZWRJbnRlZ2VyQWR2YW5jZW1lbnRzUmVuZGVyaW5nTW9k
ZTsKICAgICAgICAgRml4ZWQgbGFzdE5hdGl2ZVBvcyA9IDA7CiAgICAgICAgIGZsb2F0IGxhc3RB
ZGp1c3RlZFBvcyA9IDA7CiAgICAgICAgIGNvbnN0IFdlYkNvcmVUZXh0UnVuICpydW4gPSBwYXJh
bXMtPnJ1bjsKICAgICAgICAgY29uc3QgVW5pQ2hhciAqY2hhcmFjdGVycyA9IHJ1bi0+Y2hhcmFj
dGVyczsKICAgICAgICAgV2ViVGV4dFJlbmRlcmVyICpyZW5kZXJlciA9IHBhcmFtcy0+cmVuZGVy
ZXI7CiAgICAgICAgIFVuaUNoYXIgY2gsIG5leHRDaDsKLSAgICAgICAgbmV4dENoID0gKihVbmlD
aGFyICopKCgoY2hhciAqKWNoYXJhY3RlcnMpK2xheW91dFJlY29yZHNbMF0ub3JpZ2luYWxPZmZz
ZXQpOworICAgICAgICBCeXRlQ291bnQgb2Zmc2V0ID0gbGF5b3V0UmVjb3Jkc1swXS5vcmlnaW5h
bE9mZnNldDsKKyAgICAgICAgbmV4dENoID0gKihVbmlDaGFyICopKCgoY2hhciAqKWNoYXJhY3Rl
cnMpK29mZnNldCk7CiAgICAgICAgIC8vIEluIHRoZSBDb3JlR3JhcGhpY3MgY29kZSBwYXRoLCB0
aGUgcm91bmRpbmcgaGFjayBpcyBhcHBsaWVkIGluIGxvZ2ljYWwgb3JkZXIuCiAgICAgICAgIC8v
IEhlcmUgaXQgaXMgYXBwbGllZCBpbiB2aXN1YWwgbGVmdC10by1yaWdodCBvcmRlciwgd2hpY2gg
bWF5IGJlIGJldHRlci4KICAgICAgICAgSXRlbUNvdW50IGk7CiAgICAgICAgIGZvciAoaSA9IDE7
IGkgPCBjb3VudDsgaSsrKSB7CiAgICAgICAgICAgICBCT09MIGlzTGFzdENoYXIgPSBpID09IGNv
dW50IC0gMTsKKyAgICAgICAgICAgIC8vIFRoZSBDb3JlR3JhcGhpY3MgaW50ZXJwcmV0YXRpb24g
b2YgTlNGb250QW50aWFsaWFzZWRJbnRlZ2VyQWR2YW5jZW1lbnRzUmVuZGVyaW5nTW9kZSBzZWVt
cworICAgICAgICAgICAgLy8gdG8gYmUgInJvdW5kIGVhY2ggZ2x5cGgncyB3aWR0aCB0byB0aGUg
bmVhcmVzdCBpbnRlZ2VyIi4gVGhpcyBpcyBub3QgdGhlIHNhbWUgYXMgQVRTVUkKKyAgICAgICAg
ICAgIC8vIGRvZXMgaW4gYW55IG9mIGl0cyBkZXZpY2UtbWV0cmljcyBtb2Rlcy4KKyAgICAgICAg
ICAgIEJPT0wgc2hvdWxkUm91bmQgPSBwYXJhbXMtPnJlbmRlcmluZ01vZGVzW29mZnNldCAvIDJd
ID09IE5TRm9udEFudGlhbGlhc2VkSW50ZWdlckFkdmFuY2VtZW50c1JlbmRlcmluZ01vZGU7CiAg
ICAgICAgICAgICBjaCA9IG5leHRDaDsKLQorICAgICAgICAgICAgb2Zmc2V0ID0gbGF5b3V0UmVj
b3Jkc1tpXS5vcmlnaW5hbE9mZnNldDsKICAgICAgICAgICAgIC8vIFVzZSBzcGFjZSBmb3IgbmV4
dENoIGF0IHRoZSBlbmQgb2YgdGhlIGxvb3Agc28gdGhhdCB3ZSBnZXQgaW5zaWRlIHRoZSByb3Vu
ZGluZyBoYWNrIGNvZGUuCiAgICAgICAgICAgICAvLyBXZSB3b24ndCBhY3R1YWxseSByb3VuZCB1
bmxlc3MgdGhlIG90aGVyIGNvbmRpdGlvbnMgYXJlIHNhdGlzZmllZC4KLSAgICAgICAgICAgIG5l
eHRDaCA9IGlzTGFzdENoYXIgPyAnICcgOiAqKFVuaUNoYXIgKikoKChjaGFyICopY2hhcmFjdGVy
cykrbGF5b3V0UmVjb3Jkc1tpXS5vcmlnaW5hbE9mZnNldCk7CisgICAgICAgICAgICBuZXh0Q2gg
PSBpc0xhc3RDaGFyID8gJyAnIDogKihVbmlDaGFyICopKCgoY2hhciAqKWNoYXJhY3RlcnMpK29m
ZnNldCk7CiAKICAgICAgICAgICAgIGZsb2F0IHdpZHRoID0gRml4ZWRUb0Zsb2F0KGxheW91dFJl
Y29yZHNbaV0ucmVhbFBvcyAtIGxhc3ROYXRpdmVQb3MpOwogICAgICAgICAgICAgbGFzdE5hdGl2
ZVBvcyA9IGxheW91dFJlY29yZHNbaV0ucmVhbFBvczsKLSAgICAgICAgICAgIGlmIChyb3VuZEVh
Y2hHbHlwaCkKKyAgICAgICAgICAgIGlmIChzaG91bGRSb3VuZCkKICAgICAgICAgICAgICAgICB3
aWR0aCA9IHJvdW5kZih3aWR0aCk7CiAgICAgICAgICAgICBpZiAocmVuZGVyZXItPnRyZWF0QXNG
aXhlZFBpdGNoID8gd2lkdGggPT0gcmVuZGVyZXItPnNwYWNlV2lkdGggOiAobGF5b3V0UmVjb3Jk
c1tpLTFdLmZsYWdzICYga0FUU0dseXBoSW5mb0lzV2hpdGVTcGFjZSkpCiAgICAgICAgICAgICAg
ICAgd2lkdGggPSByZW5kZXJlci0+YWRqdXN0ZWRTcGFjZVdpZHRoOwpAQCAtNDgyLDcgKzQ4NCwx
MSBAQCBzdGF0aWMgQk9PTCBhbHdheXNVc2VBVFNVID0gTk87CiAKIC0gKHZvaWQpZHJhd1J1bjoo
Y29uc3QgV2ViQ29yZVRleHRSdW4gKilydW4gc3R5bGU6KGNvbnN0IFdlYkNvcmVUZXh0U3R5bGUg
KilzdHlsZSBnZW9tZXRyeTooY29uc3QgV2ViQ29yZVRleHRHZW9tZXRyeSAqKWdlb21ldHJ5CiB7
Ci0gICAgaWYgKHNob3VsZFVzZUFUU1UocnVuKSkKKyAgICAvLyBFdmVuIGlmIHRoZSBjaGFyYWN0
ZXJzIGluIHRoZSByYW5nZSBkbyBub3QgcmVxdWlyZSBBVFNVLCBkcmF3aW5nIHJlcXVpcmVzIG1l
YXN1cmluZworICAgIC8vIGFsbCBjaGFyYWN0ZXJzIGJlZm9yZSB0aGUgcmFuZ2UsIHNvIGNoZWNr
IHRoZW0gdG9vLgorICAgIFdlYkNvcmVUZXh0UnVuIHJ1blRvQ2hlY2sgPSAqcnVuOworICAgIHJ1
blRvQ2hlY2suZnJvbSA9IDA7CisgICAgaWYgKHNob3VsZFVzZUFUU1UoJnJ1blRvQ2hlY2spKQog
ICAgICAgICBbc2VsZiBBVFNVX2RyYXdSdW46cnVuIHN0eWxlOnN0eWxlIGdlb21ldHJ5Omdlb21l
dHJ5XTsKICAgICBlbHNlCiAgICAgICAgIFtzZWxmIENHX2RyYXdSdW46cnVuIHN0eWxlOnN0eWxl
IGdlb21ldHJ5Omdlb21ldHJ5XTsKQEAgLTU0OCw3ICs1NTQsMTEgQEAgc3RhdGljIEJPT0wgYWx3
YXlzVXNlQVRTVSA9IE5POwogCiAtICh2b2lkKWRyYXdIaWdobGlnaHRGb3JSdW46KGNvbnN0IFdl
YkNvcmVUZXh0UnVuICopcnVuIHN0eWxlOihjb25zdCBXZWJDb3JlVGV4dFN0eWxlICopc3R5bGUg
Z2VvbWV0cnk6KGNvbnN0IFdlYkNvcmVUZXh0R2VvbWV0cnkgKilnZW9tZXRyeQogewotICAgIGlm
IChzaG91bGRVc2VBVFNVKHJ1bikpCisgICAgLy8gRXZlbiBpZiB0aGUgY2hhcmFjdGVycyBpbiB0
aGUgcmFuZ2UgZG8gbm90IHJlcXVpcmUgQVRTVSwgZHJhd2luZyB0aGUgaGlnaGxpZ2h0IHJlcXVp
cmVzIG1lYXN1cmluZworICAgIC8vIGFsbCBjaGFyYWN0ZXJzIGJlZm9yZSB0aGUgcmFuZ2UsIHNv
IGNoZWNrIHRoZW0gdG9vLgorICAgIFdlYkNvcmVUZXh0UnVuIHJ1blRvQ2hlY2sgPSAqcnVuOwor
ICAgIHJ1blRvQ2hlY2suZnJvbSA9IDA7CisgICAgaWYgKHNob3VsZFVzZUFUU1UoJnJ1blRvQ2hl
Y2spKQogICAgICAgICBbc2VsZiBBVFNVX2RyYXdIaWdobGlnaHRGb3JSdW46cnVuIHN0eWxlOnN0
eWxlIGdlb21ldHJ5Omdlb21ldHJ5XTsKICAgICBlbHNlCiAgICAgICAgIFtzZWxmIENHX2RyYXdI
aWdobGlnaHRGb3JSdW46cnVuIHN0eWxlOnN0eWxlIGdlb21ldHJ5Omdlb21ldHJ5XTsKQEAgLTEy
MzYsMTAgKzEyNDYsMTEgQEAgc3RhdGljIHZvaWQgZHJhd0dseXBocyhOU0ZvbnQgKmZvbnQsIE5T
QwogICAgICAgICAKICAgICAgICAgQ0dBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtID0gQ0dBZmZp
bmVUcmFuc2Zvcm1NYWtlU2NhbGUoMSwgLTEpOwogICAgICAgICBGaXhlZCBmb250U2l6ZSA9IEZs
b2F0VG9GaXhlZChbZm9udC5mb250IHBvaW50U2l6ZV0pOwotICAgICAgICBBVFNVQXR0cmlidXRl
VGFnIHN0eWxlVGFnc1tdID0geyBrQVRTVVNpemVUYWcsIGtBVFNVRm9udFRhZywga0FUU1VGb250
TWF0cml4VGFnfTsKLSAgICAgICAgQnl0ZUNvdW50IHN0eWxlU2l6ZXNbXSA9IHsgIHNpemVvZihG
aXhlZCksIHNpemVvZihBVFNVRm9udElEKSwgc2l6ZW9mKENHQWZmaW5lVHJhbnNmb3JtKSB9Owot
ICAgICAgICBBVFNVQXR0cmlidXRlVmFsdWVQdHIgc3R5bGVWYWx1ZXNbXSA9IHsgJmZvbnRTaXpl
LCAmZm9udElELCAmdHJhbnNmb3JtICB9OwotICAgICAgICBzdGF0dXMgPSBBVFNVU2V0QXR0cmli
dXRlcyhfQVRTVVN0eWxlLCAzLCBzdHlsZVRhZ3MsIHN0eWxlU2l6ZXMsIHN0eWxlVmFsdWVzKTsK
KyAgICAgICAgRnJhY3Qga2VybmluZ0luaGliaXRGYWN0b3IgPSBGbG9hdFRvRnJhY3QoMS4wKTsK
KyAgICAgICAgQVRTVUF0dHJpYnV0ZVRhZyBzdHlsZVRhZ3NbXSA9IHsga0FUU1VTaXplVGFnLCBr
QVRTVUZvbnRUYWcsIGtBVFNVRm9udE1hdHJpeFRhZywga0FUU1VLZXJuaW5nSW5oaWJpdEZhY3Rv
clRhZyB9OworICAgICAgICBCeXRlQ291bnQgc3R5bGVTaXplc1tdID0geyAgc2l6ZW9mKEZpeGVk
KSwgc2l6ZW9mKEFUU1VGb250SUQpLCBzaXplb2YoQ0dBZmZpbmVUcmFuc2Zvcm0pLCBzaXplb2Yo
RnJhY3QpIH07CisgICAgICAgIEFUU1VBdHRyaWJ1dGVWYWx1ZVB0ciBzdHlsZVZhbHVlc1tdID0g
eyAmZm9udFNpemUsICZmb250SUQsICZ0cmFuc2Zvcm0sICZrZXJuaW5nSW5oaWJpdEZhY3RvciB9
OworICAgICAgICBzdGF0dXMgPSBBVFNVU2V0QXR0cmlidXRlcyhfQVRTVVN0eWxlLCA0LCBzdHls
ZVRhZ3MsIHN0eWxlU2l6ZXMsIHN0eWxlVmFsdWVzKTsKICAgICAgICAgaWYgKHN0YXR1cyAhPSBu
b0VycikKICAgICAgICAgICAgIEZBVEFMX0FMV0FZUygiQVRTVVNldEF0dHJpYnV0ZXMgZmFpbGVk
ICglZCkiLCBzdGF0dXMpOwogICAgICAgICBzdGF0dXMgPSBBVFNGb250R2V0VGFibGUoZm9udElE
LCAncHJvcCcsIDAsIDAsIDAsICZwcm9wVGFibGVTaXplKTsKQEAgLTEyNTAsMjAgKzEyNjEsMjEg
QEAgc3RhdGljIHZvaWQgZHJhd0dseXBocyhOU0ZvbnQgKmZvbnQsIE5TQwogICAgICAgICBlbHNl
CiAgICAgICAgICAgICBGQVRBTF9BTFdBWVMoIkFUU0ZvbnRHZXRUYWJsZSBmYWlsZWQgKCVkKSIs
IHN0YXR1cyk7CiAKKyAgICAgICAgQVRTVUZvbnRGZWF0dXJlVHlwZSBmZWF0dXJlVHlwZXNbXSA9
IHsga0xpZ2F0dXJlc1R5cGUgfTsKKyAgICAgICAgQVRTVUZvbnRGZWF0dXJlU2VsZWN0b3IgZmVh
dHVyZVNlbGVjdG9yc1tdID0geyBrQ29tbW9uTGlnYXR1cmVzT2ZmU2VsZWN0b3IgfTsKKyAgICAg
ICAgc3RhdHVzID0gQVRTVVNldEZvbnRGZWF0dXJlcyhfQVRTVVN0eWxlLCAxLCBmZWF0dXJlVHlw
ZXMsIGZlYXR1cmVTZWxlY3RvcnMpOworCiAgICAgICAgIEFUU1VTdHlsZUluaXRpYWxpemVkID0g
WUVTOwogICAgIH0KIH0KIAotLSAoQVRTVVRleHRMYXlvdXQpY3JlYXRlQVRTVVRleHRMYXlvdXRG
b3JSdW46KGNvbnN0IFdlYkNvcmVUZXh0UnVuICopcnVuIHN0eWxlOihjb25zdCBXZWJDb3JlVGV4
dFN0eWxlICopc3R5bGUKKy0gKEFUU1VUZXh0TGF5b3V0KWNyZWF0ZUFUU1VUZXh0TGF5b3V0Rm9y
UnVuOihjb25zdCBXZWJDb3JlVGV4dFJ1biAqKXJ1biBzdHlsZTooY29uc3QgV2ViQ29yZVRleHRT
dHlsZSAqKXN0eWxlIHJlbmRlcmluZ01vZGVzOihOU0ZvbnRSZW5kZXJpbmdNb2RlICopbW9kZXMK
IHsKICAgICAvLyBUaGUgb25seSBDb2NvYSBjYWxscyBoZXJlIGFyZSB0byBOU0dyYXBoaWNzQ29u
dGV4dCBhbmQgdGhlIHNlbGYKICAgICAvLyBjYWxsIHRvIF9pbml0aWFsaXplQVRTVVN0eWxlLCB3
aGljaCBhcmUgYWxsIGV4Y2VwdGlvbi1zYWZlLgogCiAgICAgQVRTVVRleHRMYXlvdXQgbGF5b3V0
OwogICAgIFVuaUNoYXJDb3VudCBydW5MZW5ndGg7Ci0gICAgQVRTVUZvbnRJRCBBVFNVU3Vic3Rp
dHV0ZUZvbnQ7Ci0gICAgVW5pQ2hhckFycmF5T2Zmc2V0IHN1YnN0aXR1dGVPZmZzZXQ7Ci0gICAg
VW5pQ2hhckNvdW50IHN1YnN0aXR1dGVMZW5ndGg7CiAgICAgT1NTdGF0dXMgc3RhdHVzOwogICAg
IEFUU1VMYXlvdXRPcGVyYXRpb25PdmVycmlkZVNwZWNpZmllciBvdmVycmlkZVNwZWNpZmllcjsK
ICAgICAKQEAgLTEzMDYsMTggKzEzMTgsMzUgQEAgc3RhdGljIHZvaWQgZHJhd0dseXBocyhOU0Zv
bnQgKmZvbnQsIE5TQwogICAgIGlmIChzdGF0dXMgIT0gbm9FcnIpCiAgICAgICAgIEZBVEFMX0FM
V0FZUygiQVRTVVNldFRyYW5zaWVudEZvbnRNYXRjaGluZyBmYWlsZWQoJWQpIiwgc3RhdHVzKTsK
IAotICAgIHN1YnN0aXR1dGVPZmZzZXQgPSBydW4tPmZyb207Ci0gICAgd2hpbGUgKChzdGF0dXMg
PSBBVFNVTWF0Y2hGb250c1RvVGV4dChsYXlvdXQsIHN1YnN0aXR1dGVPZmZzZXQsIGtBVFNVVG9U
ZXh0RW5kLCAmQVRTVVN1YnN0aXR1dGVGb250LCAmc3Vic3RpdHV0ZU9mZnNldCwgJnN1YnN0aXR1
dGVMZW5ndGgpKSA9PSBrQVRTVUZvbnRzTWF0Y2hlZCB8fCBzdGF0dXMgPT0ga0FUU1VGb250c05v
dE1hdGNoZWQpIHsKLSAgICAgICAgV2ViVGV4dFJlbmRlcmVyICpzdWJzdGl0dXRlUmVuZGVyZXIg
PSBbc2VsZiBzdWJzdGl0dXRlUmVuZGVyZXJGb3JDaGFyYWN0ZXJzOnJ1bi0+Y2hhcmFjdGVycytz
dWJzdGl0dXRlT2Zmc2V0IGxlbmd0aDpzdWJzdGl0dXRlTGVuZ3RoIGZhbWlsaWVzOnN0eWxlLT5m
YW1pbGllc107Ci0gICAgICAgIGlmIChzdWJzdGl0dXRlUmVuZGVyZXIpIHsKLSAgICAgICAgICAg
IFtzdWJzdGl0dXRlUmVuZGVyZXIgaW5pdGlhbGl6ZUFUU1VTdHlsZV07Ci0gICAgICAgICAgICBp
ZiAoc3Vic3RpdHV0ZVJlbmRlcmVyICYmIHN1YnN0aXR1dGVSZW5kZXJlci0+X0FUU1VTdHlsZSkK
LSAgICAgICAgICAgICAgICBBVFNVU2V0UnVuU3R5bGUobGF5b3V0LCBzdWJzdGl0dXRlUmVuZGVy
ZXItPl9BVFNVU3R5bGUsIHN1YnN0aXR1dGVPZmZzZXQsIHN1YnN0aXR1dGVMZW5ndGgpOwotICAg
ICAgICAgICAgLy8gaWdub3JpbmcgZXJyb3JzCisgICAgQVRTVUZvbnRJRCBBVFNVU3Vic3RpdHV0
ZUZvbnQ7CisgICAgVW5pQ2hhckFycmF5T2Zmc2V0IHN1YnN0aXR1dGVPZmZzZXQgPSBydW4tPmZy
b207CisgICAgVW5pQ2hhckNvdW50IHN1YnN0aXR1dGVMZW5ndGg7CisgICAgVW5pQ2hhckFycmF5
T2Zmc2V0IGxhc3RPZmZzZXQ7CisgICAgTlNGb250UmVuZGVyaW5nTW9kZSBzdWJzdGl0dXRlTW9k
ZTsKKyAgICBOU0ZvbnRSZW5kZXJpbmdNb2RlIG9yaWdpbmFsTW9kZSA9IFtmb250LmZvbnQgcmVu
ZGVyaW5nTW9kZV07CisgICAgV2ViVGV4dFJlbmRlcmVyICpzdWJzdGl0dXRlUmVuZGVyZXI7CisK
KyAgICB3aGlsZSAoc3Vic3RpdHV0ZU9mZnNldCA8IHJ1bi0+bGVuZ3RoKSB7CisgICAgICAgIGxh
c3RPZmZzZXQgPSBzdWJzdGl0dXRlT2Zmc2V0OworICAgICAgICBzdGF0dXMgPSAgQVRTVU1hdGNo
Rm9udHNUb1RleHQobGF5b3V0LCBzdWJzdGl0dXRlT2Zmc2V0LCBrQVRTVVRvVGV4dEVuZCwgJkFU
U1VTdWJzdGl0dXRlRm9udCwgJnN1YnN0aXR1dGVPZmZzZXQsICZzdWJzdGl0dXRlTGVuZ3RoKTsK
KyAgICAgICAgaWYgKHN0YXR1cyA9PSBrQVRTVUZvbnRzTWF0Y2hlZCB8fCBzdGF0dXMgPT0ga0FU
U1VGb250c05vdE1hdGNoZWQpIHsKKyAgICAgICAgICAgIHN1YnN0aXR1dGVSZW5kZXJlciA9IFtz
ZWxmIHN1YnN0aXR1dGVSZW5kZXJlckZvckNoYXJhY3RlcnM6cnVuLT5jaGFyYWN0ZXJzK3N1YnN0
aXR1dGVPZmZzZXQgbGVuZ3RoOnN1YnN0aXR1dGVMZW5ndGggZmFtaWxpZXM6c3R5bGUtPmZhbWls
aWVzXTsKKyAgICAgICAgICAgIGlmIChzdWJzdGl0dXRlUmVuZGVyZXIpIHsKKyAgICAgICAgICAg
ICAgICBbc3Vic3RpdHV0ZVJlbmRlcmVyIGluaXRpYWxpemVBVFNVU3R5bGVdOworICAgICAgICAg
ICAgICAgIGlmIChzdWJzdGl0dXRlUmVuZGVyZXItPl9BVFNVU3R5bGUpCisgICAgICAgICAgICAg
ICAgICAgIEFUU1VTZXRSdW5TdHlsZShsYXlvdXQsIHN1YnN0aXR1dGVSZW5kZXJlci0+X0FUU1VT
dHlsZSwgc3Vic3RpdHV0ZU9mZnNldCwgc3Vic3RpdHV0ZUxlbmd0aCk7CisgICAgICAgICAgICAg
ICAgc3Vic3RpdHV0ZU1vZGUgPSBbc3Vic3RpdHV0ZVJlbmRlcmVyLT5mb250LmZvbnQgcmVuZGVy
aW5nTW9kZV07CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBzdWJzdGl0dXRl
TW9kZSA9IG9yaWdpbmFsTW9kZTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHN1YnN0
aXR1dGVPZmZzZXQgPSBydW4tPmxlbmd0aDsKKyAgICAgICAgICAgIHN1YnN0aXR1dGVMZW5ndGgg
PSAwOwogICAgICAgICB9Ci0gICAgICAgIHN1YnN0aXR1dGVPZmZzZXQgKz0gc3Vic3RpdHV0ZUxl
bmd0aDsKKyAgICAgICAgd2hpbGUgKGxhc3RPZmZzZXQgPCBzdWJzdGl0dXRlT2Zmc2V0KQorICAg
ICAgICAgICAgbW9kZXNbbGFzdE9mZnNldCsrXSA9IG9yaWdpbmFsTW9kZTsKKyAgICAgICAgd2hp
bGUgKHN1YnN0aXR1dGVMZW5ndGgtLSA+IDApCisgICAgICAgICAgICBtb2Rlc1tzdWJzdGl0dXRl
T2Zmc2V0KytdID0gc3Vic3RpdHV0ZU1vZGU7CiAgICAgfQotICAgIC8vIGlnbm9yaW5nIGVycm9y
cyBpbiBmb250IHN1YnN0aXR1dGlvbgogICAgICAgICAKICAgICByZXR1cm4gbGF5b3V0OwogfQpA
QCAtMTc0MSwxMyArMTc3MCwxNSBAQCBzdGF0aWMgdm9pZCBjcmVhdGVBVFNVTGF5b3V0UGFyYW1l
dGVycyhBCiAgICAgcGFyYW1zLT5yZW5kZXJlciA9IHJlbmRlcmVyOwogICAgIHBhcmFtcy0+cnVu
ID0gcnVuOwogICAgIHBhcmFtcy0+c3R5bGUgPSBzdHlsZTsKLSAgICBwYXJhbXMtPmxheW91dCA9
IFtyZW5kZXJlciBjcmVhdGVBVFNVVGV4dExheW91dEZvclJ1bjpydW4gc3R5bGU6c3R5bGVdOwor
ICAgIHBhcmFtcy0+cmVuZGVyaW5nTW9kZXMgPSBjYWxsb2MocnVuLT5sZW5ndGgsIHNpemVvZihO
U0ZvbnRSZW5kZXJpbmdNb2RlKSk7CisgICAgcGFyYW1zLT5sYXlvdXQgPSBbcmVuZGVyZXIgY3Jl
YXRlQVRTVVRleHRMYXlvdXRGb3JSdW46cnVuIHN0eWxlOnN0eWxlIHJlbmRlcmluZ01vZGVzOnBh
cmFtcy0+cmVuZGVyaW5nTW9kZXNdOwogICAgIEFUU1VTZXRUZXh0TGF5b3V0UmVmQ29uKHBhcmFt
cy0+bGF5b3V0LCAoVUludDMyKXBhcmFtcyk7CiB9CiAKIHN0YXRpYyB2b2lkIGRpc3Bvc2VBVFNV
TGF5b3V0UGFyYW1ldGVycyhBVFNVTGF5b3V0UGFyYW1ldGVycyAqcGFyYW1zKQogewogICAgIEFU
U1VEaXNwb3NlVGV4dExheW91dChwYXJhbXMtPmxheW91dCk7CisgICAgZnJlZShwYXJhbXMtPnJl
bmRlcmluZ01vZGVzKTsKIH0KIAogc3RhdGljIGlubGluZSBmbG9hdCBjZWlsQ3VycmVudFdpZHRo
KENoYXJhY3RlcldpZHRoSXRlcmF0b3IgKml0ZXJhdG9yKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>4247</attachid>
            <date>2005-10-07 15:12:54 -0700</date>
            <delta_ts>2005-12-05 07:57:37 -0800</delta_ts>
            <desc>fix more ATSUI/CG differences</desc>
            <filename>5166_r4.patch</filename>
            <type>text/plain</type>
            <size>14755</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYlRleHRSZW5kZXJlci5tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9X
ZWJLaXQvV2ViQ29yZVN1cHBvcnQuc3VicHJvai9XZWJUZXh0UmVuZGVyZXIubSx2CnJldHJpZXZp
bmcgcmV2aXNpb24gMS4xOTYKZGlmZiAtcCAtdSAtcjEuMTk2IFdlYlRleHRSZW5kZXJlci5tCi0t
LSBXZWJUZXh0UmVuZGVyZXIubQk2IE9jdCAyMDA1IDIxOjE5OjQ3IC0wMDAwCTEuMTk2CisrKyBX
ZWJUZXh0UmVuZGVyZXIubQk3IE9jdCAyMDA1IDIyOjEyOjQ2IC0wMDAwCkBAIC00Niw2ICs0Niw3
IEBACiAvLyBGSVhNRTogRkFUQUxfQUxXQVlTIHNlZW1zIGxpa2UgYSBiYWQgaWRlYTsgbGV0cyBz
dG9wIHVzaW5nIGl0LgogCiAjZGVmaW5lIFNNQUxMQ0FQU19GT05UU0laRV9NVUxUSVBMSUVSIDAu
N2YKKyNkZWZpbmUgU1lOVEhFVElDX09CTElRVUVfQU5HTEUgMTQKIAogLy8gU2hvdWxkIGJlIG1v
cmUgdGhhbiBlbm91Z2ggZm9yIG5vcm1hbCB1c2FnZS4KICNkZWZpbmUgTlVNX1NVQlNUSVRVVEVf
Rk9OVF9NQVBTIDEwCkBAIC0xMTcsMTAgKzExOCwxMSBAQCB0eXBlZGVmIHN0cnVjdCBDaGFyYWN0
ZXJXaWR0aEl0ZXJhdG9yIHsKIAogdHlwZWRlZiBzdHJ1Y3QgQVRTVUxheW91dFBhcmFtZXRlcnMK
IHsKLSAgICBXZWJUZXh0UmVuZGVyZXIgKnJlbmRlcmVyOwogICAgIGNvbnN0IFdlYkNvcmVUZXh0
UnVuICpydW47CiAgICAgY29uc3QgV2ViQ29yZVRleHRTdHlsZSAqc3R5bGU7CiAgICAgQVRTVVRl
eHRMYXlvdXQgbGF5b3V0OworICAgIFdlYlRleHRSZW5kZXJlciAqKnJlbmRlcmVyczsKKyAgICBV
bmlDaGFyICpjYXBzQnVmZmVyOwogfSBBVFNVTGF5b3V0UGFyYW1ldGVyczsKIAogQGludGVyZmFj
ZSBXZWJUZXh0UmVuZGVyZXIgKFdlYkludGVybmFsKQpAQCAtMTUyLDcgKzE1NCw3IEBAIHR5cGVk
ZWYgc3RydWN0IEFUU1VMYXlvdXRQYXJhbWV0ZXJzCiAKIC0gKEJPT0wpc2V0VXBGb250OwogCi0t
IChBVFNVVGV4dExheW91dCljcmVhdGVBVFNVVGV4dExheW91dEZvclJ1bjooY29uc3QgV2ViQ29y
ZVRleHRSdW4gKilydW4gc3R5bGU6KGNvbnN0IFdlYkNvcmVUZXh0U3R5bGUgKilzdHlsZTsKKy0g
KEFUU1VUZXh0TGF5b3V0KWNyZWF0ZUFUU1VUZXh0TGF5b3V0Rm9yUnVuOihjb25zdCBXZWJDb3Jl
VGV4dFJ1biAqKXJ1biBzdHlsZTooY29uc3QgV2ViQ29yZVRleHRTdHlsZSAqKXN0eWxlIHJlbmRl
cmVyczooV2ViVGV4dFJlbmRlcmVyICoqKXJlbmRlcmVycyBjYXBpdGFsaXplZENoYXJhY3RlcnM6
KFVuaUNoYXIgKiljYXBzQnVmZmVyOwogCiAtIChXZWJUZXh0UmVuZGVyZXIgKilzbWFsbENhcHNS
ZW5kZXJlcjsKIApAQCAtMjM5LDMyICsyNDEsNDAgQEAgc3RhdGljIE9TU3RhdHVzIG92ZXJyaWRl
TGF5b3V0T3BlcmF0aW9uKAogICAgICAgICAgICAgcmV0dXJuIHN0YXR1czsKICAgICAgICAgfQog
ICAgICAgICAKLSAgICAgICAgLy8gVGhlIENvcmVHcmFwaGljcyBpbnRlcnByZXRhdGlvbiBvZiBO
U0ZvbnRBbnRpYWxpYXNlZEludGVnZXJBZHZhbmNlbWVudHNSZW5kZXJpbmdNb2RlIHNlZW1zCi0g
ICAgICAgIC8vIHRvIGJlICJyb3VuZCBlYWNoIGdseXBoJ3Mgd2lkdGggdG8gdGhlIG5lYXJlc3Qg
aW50ZWdlciIuIFRoaXMgaXMgbm90IHRoZSBzYW1lIGFzIEFUU1VJCi0gICAgICAgIC8vIGRvZXMg
aW4gYW55IG9mIGl0cyBkZXZpY2UtbWV0cmljcyBtb2Rlcy4KLSAgICAgICAgQm9vbGVhbiByb3Vu
ZEVhY2hHbHlwaCA9IFtwYXJhbXMtPnJlbmRlcmVyLT5mb250LmZvbnQgcmVuZGVyaW5nTW9kZV0g
PT0gTlNGb250QW50aWFsaWFzZWRJbnRlZ2VyQWR2YW5jZW1lbnRzUmVuZGVyaW5nTW9kZTsKICAg
ICAgICAgRml4ZWQgbGFzdE5hdGl2ZVBvcyA9IDA7CiAgICAgICAgIGZsb2F0IGxhc3RBZGp1c3Rl
ZFBvcyA9IDA7CiAgICAgICAgIGNvbnN0IFdlYkNvcmVUZXh0UnVuICpydW4gPSBwYXJhbXMtPnJ1
bjsKICAgICAgICAgY29uc3QgVW5pQ2hhciAqY2hhcmFjdGVycyA9IHJ1bi0+Y2hhcmFjdGVyczsK
LSAgICAgICAgV2ViVGV4dFJlbmRlcmVyICpyZW5kZXJlciA9IHBhcmFtcy0+cmVuZGVyZXI7Cisg
ICAgICAgIFdlYlRleHRSZW5kZXJlciAqcmVuZGVyZXI7CisgICAgICAgIFdlYlRleHRSZW5kZXJl
ciAqbGFzdFJlbmRlcmVyID0gMDsKICAgICAgICAgVW5pQ2hhciBjaCwgbmV4dENoOwotICAgICAg
ICBuZXh0Q2ggPSAqKFVuaUNoYXIgKikoKChjaGFyICopY2hhcmFjdGVycykrbGF5b3V0UmVjb3Jk
c1swXS5vcmlnaW5hbE9mZnNldCk7CisgICAgICAgIEJ5dGVDb3VudCBvZmZzZXQgPSBsYXlvdXRS
ZWNvcmRzWzBdLm9yaWdpbmFsT2Zmc2V0OworICAgICAgICBuZXh0Q2ggPSAqKFVuaUNoYXIgKiko
KChjaGFyICopY2hhcmFjdGVycykrb2Zmc2V0KTsKKyAgICAgICAgQk9PTCBzaG91bGRSb3VuZDsK
ICAgICAgICAgLy8gSW4gdGhlIENvcmVHcmFwaGljcyBjb2RlIHBhdGgsIHRoZSByb3VuZGluZyBo
YWNrIGlzIGFwcGxpZWQgaW4gbG9naWNhbCBvcmRlci4KICAgICAgICAgLy8gSGVyZSBpdCBpcyBh
cHBsaWVkIGluIHZpc3VhbCBsZWZ0LXRvLXJpZ2h0IG9yZGVyLCB3aGljaCBtYXkgYmUgYmV0dGVy
LgogICAgICAgICBJdGVtQ291bnQgaTsKICAgICAgICAgZm9yIChpID0gMTsgaSA8IGNvdW50OyBp
KyspIHsKICAgICAgICAgICAgIEJPT0wgaXNMYXN0Q2hhciA9IGkgPT0gY291bnQgLSAxOworICAg
ICAgICAgICAgcmVuZGVyZXIgPSBwYXJhbXMtPnJlbmRlcmVyc1tvZmZzZXQgLyAyXTsKKyAgICAg
ICAgICAgIGlmIChyZW5kZXJlciAhPSBsYXN0UmVuZGVyZXIpIHsKKyAgICAgICAgICAgICAgICBs
YXN0UmVuZGVyZXIgPSByZW5kZXJlcjsKKyAgICAgICAgICAgICAgICAvLyBUaGUgQ29yZUdyYXBo
aWNzIGludGVycHJldGF0aW9uIG9mIE5TRm9udEFudGlhbGlhc2VkSW50ZWdlckFkdmFuY2VtZW50
c1JlbmRlcmluZ01vZGUgc2VlbXMKKyAgICAgICAgICAgICAgICAvLyB0byBiZSAicm91bmQgZWFj
aCBnbHlwaCdzIHdpZHRoIHRvIHRoZSBuZWFyZXN0IGludGVnZXIiLiBUaGlzIGlzIG5vdCB0aGUg
c2FtZSBhcyBBVFNVSQorICAgICAgICAgICAgICAgIC8vIGRvZXMgaW4gYW55IG9mIGl0cyBkZXZp
Y2UtbWV0cmljcyBtb2Rlcy4KKyAgICAgICAgICAgICAgICBzaG91bGRSb3VuZCA9IFtyZW5kZXJl
ci0+Zm9udC5mb250IHJlbmRlcmluZ01vZGVdID09IE5TRm9udEFudGlhbGlhc2VkSW50ZWdlckFk
dmFuY2VtZW50c1JlbmRlcmluZ01vZGU7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBjaCA9
IG5leHRDaDsKLQorICAgICAgICAgICAgb2Zmc2V0ID0gbGF5b3V0UmVjb3Jkc1tpXS5vcmlnaW5h
bE9mZnNldDsKICAgICAgICAgICAgIC8vIFVzZSBzcGFjZSBmb3IgbmV4dENoIGF0IHRoZSBlbmQg
b2YgdGhlIGxvb3Agc28gdGhhdCB3ZSBnZXQgaW5zaWRlIHRoZSByb3VuZGluZyBoYWNrIGNvZGUu
CiAgICAgICAgICAgICAvLyBXZSB3b24ndCBhY3R1YWxseSByb3VuZCB1bmxlc3MgdGhlIG90aGVy
IGNvbmRpdGlvbnMgYXJlIHNhdGlzZmllZC4KLSAgICAgICAgICAgIG5leHRDaCA9IGlzTGFzdENo
YXIgPyAnICcgOiAqKFVuaUNoYXIgKikoKChjaGFyICopY2hhcmFjdGVycykrbGF5b3V0UmVjb3Jk
c1tpXS5vcmlnaW5hbE9mZnNldCk7CisgICAgICAgICAgICBuZXh0Q2ggPSBpc0xhc3RDaGFyID8g
JyAnIDogKihVbmlDaGFyICopKCgoY2hhciAqKWNoYXJhY3RlcnMpK29mZnNldCk7CiAKICAgICAg
ICAgICAgIGZsb2F0IHdpZHRoID0gRml4ZWRUb0Zsb2F0KGxheW91dFJlY29yZHNbaV0ucmVhbFBv
cyAtIGxhc3ROYXRpdmVQb3MpOwogICAgICAgICAgICAgbGFzdE5hdGl2ZVBvcyA9IGxheW91dFJl
Y29yZHNbaV0ucmVhbFBvczsKLSAgICAgICAgICAgIGlmIChyb3VuZEVhY2hHbHlwaCkKKyAgICAg
ICAgICAgIGlmIChzaG91bGRSb3VuZCkKICAgICAgICAgICAgICAgICB3aWR0aCA9IHJvdW5kZih3
aWR0aCk7CisgICAgICAgICAgICB3aWR0aCArPSByZW5kZXJlci0+c3ludGhldGljQm9sZE9mZnNl
dDsKICAgICAgICAgICAgIGlmIChyZW5kZXJlci0+dHJlYXRBc0ZpeGVkUGl0Y2ggPyB3aWR0aCA9
PSByZW5kZXJlci0+c3BhY2VXaWR0aCA6IChsYXlvdXRSZWNvcmRzW2ktMV0uZmxhZ3MgJiBrQVRT
R2x5cGhJbmZvSXNXaGl0ZVNwYWNlKSkKICAgICAgICAgICAgICAgICB3aWR0aCA9IHJlbmRlcmVy
LT5hZGp1c3RlZFNwYWNlV2lkdGg7CiAgICAgICAgICAgICBpZiAoaXNSb3VuZGluZ0hhY2tDaGFy
YWN0ZXIoY2gpKQpAQCAtNDgyLDcgKzQ5MiwxMSBAQCBzdGF0aWMgQk9PTCBhbHdheXNVc2VBVFNV
ID0gTk87CiAKIC0gKHZvaWQpZHJhd1J1bjooY29uc3QgV2ViQ29yZVRleHRSdW4gKilydW4gc3R5
bGU6KGNvbnN0IFdlYkNvcmVUZXh0U3R5bGUgKilzdHlsZSBnZW9tZXRyeTooY29uc3QgV2ViQ29y
ZVRleHRHZW9tZXRyeSAqKWdlb21ldHJ5CiB7Ci0gICAgaWYgKHNob3VsZFVzZUFUU1UocnVuKSkK
KyAgICAvLyBFdmVuIGlmIHRoZSBjaGFyYWN0ZXJzIGluIHRoZSByYW5nZSBkbyBub3QgcmVxdWly
ZSBBVFNVLCBkcmF3aW5nIHJlcXVpcmVzIG1lYXN1cmluZworICAgIC8vIGFsbCBjaGFyYWN0ZXJz
IGJlZm9yZSB0aGUgcmFuZ2UsIHNvIGNoZWNrIHRoZW0gdG9vLgorICAgIFdlYkNvcmVUZXh0UnVu
IHJ1blRvQ2hlY2sgPSAqcnVuOworICAgIHJ1blRvQ2hlY2suZnJvbSA9IDA7CisgICAgaWYgKHNo
b3VsZFVzZUFUU1UoJnJ1blRvQ2hlY2spKQogICAgICAgICBbc2VsZiBBVFNVX2RyYXdSdW46cnVu
IHN0eWxlOnN0eWxlIGdlb21ldHJ5Omdlb21ldHJ5XTsKICAgICBlbHNlCiAgICAgICAgIFtzZWxm
IENHX2RyYXdSdW46cnVuIHN0eWxlOnN0eWxlIGdlb21ldHJ5Omdlb21ldHJ5XTsKQEAgLTU0OCw3
ICs1NjIsMTEgQEAgc3RhdGljIEJPT0wgYWx3YXlzVXNlQVRTVSA9IE5POwogCiAtICh2b2lkKWRy
YXdIaWdobGlnaHRGb3JSdW46KGNvbnN0IFdlYkNvcmVUZXh0UnVuICopcnVuIHN0eWxlOihjb25z
dCBXZWJDb3JlVGV4dFN0eWxlICopc3R5bGUgZ2VvbWV0cnk6KGNvbnN0IFdlYkNvcmVUZXh0R2Vv
bWV0cnkgKilnZW9tZXRyeQogewotICAgIGlmIChzaG91bGRVc2VBVFNVKHJ1bikpCisgICAgLy8g
RXZlbiBpZiB0aGUgY2hhcmFjdGVycyBpbiB0aGUgcmFuZ2UgZG8gbm90IHJlcXVpcmUgQVRTVSwg
ZHJhd2luZyB0aGUgaGlnaGxpZ2h0IHJlcXVpcmVzIG1lYXN1cmluZworICAgIC8vIGFsbCBjaGFy
YWN0ZXJzIGJlZm9yZSB0aGUgcmFuZ2UsIHNvIGNoZWNrIHRoZW0gdG9vLgorICAgIFdlYkNvcmVU
ZXh0UnVuIHJ1blRvQ2hlY2sgPSAqcnVuOworICAgIHJ1blRvQ2hlY2suZnJvbSA9IDA7CisgICAg
aWYgKHNob3VsZFVzZUFUU1UoJnJ1blRvQ2hlY2spKQogICAgICAgICBbc2VsZiBBVFNVX2RyYXdI
aWdobGlnaHRGb3JSdW46cnVuIHN0eWxlOnN0eWxlIGdlb21ldHJ5Omdlb21ldHJ5XTsKICAgICBl
bHNlCiAgICAgICAgIFtzZWxmIENHX2RyYXdIaWdobGlnaHRGb3JSdW46cnVuIHN0eWxlOnN0eWxl
IGdlb21ldHJ5Omdlb21ldHJ5XTsKQEAgLTg0NSw3ICs4NjMsNyBAQCBzdGF0aWMgdm9pZCBkcmF3
R2x5cGhzKE5TRm9udCAqZm9udCwgTlNDCiAgICAgICAgIG1hdHJpeC5kID0gLW1hdHJpeC5kOwog
ICAgIH0KICAgICBpZiAoc3ludGhldGljT2JsaXF1ZSkKLSAgICAgICAgbWF0cml4ID0gQ0dBZmZp
bmVUcmFuc2Zvcm1Db25jYXQobWF0cml4LCBDR0FmZmluZVRyYW5zZm9ybU1ha2UoMSwgMCwgLXRh
bmYoMTQgKiBhY29zZigwKSAvIDkwKSwgMSwgMCwgMCkpOyAKKyAgICAgICAgbWF0cml4ID0gQ0dB
ZmZpbmVUcmFuc2Zvcm1Db25jYXQobWF0cml4LCBDR0FmZmluZVRyYW5zZm9ybU1ha2UoMSwgMCwg
LXRhbmYoU1lOVEhFVElDX09CTElRVUVfQU5HTEUgKiBhY29zZigwKSAvIDkwKSwgMSwgMCwgMCkp
OyAKICAgICBDR0NvbnRleHRTZXRUZXh0TWF0cml4KGNnQ29udGV4dCwgbWF0cml4KTsKIAogICAg
IFdLU2V0Q0dGb250UmVuZGVyaW5nTW9kZShjZ0NvbnRleHQsIGRyYXdGb250KTsKQEAgLTEyMzUs
MTEgKzEyNTMsMTQgQEAgc3RhdGljIHZvaWQgZHJhd0dseXBocyhOU0ZvbnQgKmZvbnQsIE5TQwog
ICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBDR0FmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm0g
PSBDR0FmZmluZVRyYW5zZm9ybU1ha2VTY2FsZSgxLCAtMSk7CisgICAgICAgIGlmIChmb250LnN5
bnRoZXRpY09ibGlxdWUpCisgICAgICAgICAgICB0cmFuc2Zvcm0gPSBDR0FmZmluZVRyYW5zZm9y
bUNvbmNhdCh0cmFuc2Zvcm0sIENHQWZmaW5lVHJhbnNmb3JtTWFrZSgxLCAwLCAtdGFuZihTWU5U
SEVUSUNfT0JMSVFVRV9BTkdMRSAqIGFjb3NmKDApIC8gOTApLCAxLCAwLCAwKSk7IAogICAgICAg
ICBGaXhlZCBmb250U2l6ZSA9IEZsb2F0VG9GaXhlZChbZm9udC5mb250IHBvaW50U2l6ZV0pOwot
ICAgICAgICBBVFNVQXR0cmlidXRlVGFnIHN0eWxlVGFnc1tdID0geyBrQVRTVVNpemVUYWcsIGtB
VFNVRm9udFRhZywga0FUU1VGb250TWF0cml4VGFnfTsKLSAgICAgICAgQnl0ZUNvdW50IHN0eWxl
U2l6ZXNbXSA9IHsgIHNpemVvZihGaXhlZCksIHNpemVvZihBVFNVRm9udElEKSwgc2l6ZW9mKENH
QWZmaW5lVHJhbnNmb3JtKSB9OwotICAgICAgICBBVFNVQXR0cmlidXRlVmFsdWVQdHIgc3R5bGVW
YWx1ZXNbXSA9IHsgJmZvbnRTaXplLCAmZm9udElELCAmdHJhbnNmb3JtICB9OwotICAgICAgICBz
dGF0dXMgPSBBVFNVU2V0QXR0cmlidXRlcyhfQVRTVVN0eWxlLCAzLCBzdHlsZVRhZ3MsIHN0eWxl
U2l6ZXMsIHN0eWxlVmFsdWVzKTsKKyAgICAgICAgRnJhY3Qga2VybmluZ0luaGliaXRGYWN0b3Ig
PSBGbG9hdFRvRnJhY3QoMS4wKTsKKyAgICAgICAgQVRTVUF0dHJpYnV0ZVRhZyBzdHlsZVRhZ3Nb
XSA9IHsga0FUU1VTaXplVGFnLCBrQVRTVUZvbnRUYWcsIGtBVFNVRm9udE1hdHJpeFRhZywga0FU
U1VLZXJuaW5nSW5oaWJpdEZhY3RvclRhZyB9OworICAgICAgICBCeXRlQ291bnQgc3R5bGVTaXpl
c1tdID0geyAgc2l6ZW9mKEZpeGVkKSwgc2l6ZW9mKEFUU1VGb250SUQpLCBzaXplb2YoQ0dBZmZp
bmVUcmFuc2Zvcm0pLCBzaXplb2YoRnJhY3QpIH07CisgICAgICAgIEFUU1VBdHRyaWJ1dGVWYWx1
ZVB0ciBzdHlsZVZhbHVlc1tdID0geyAmZm9udFNpemUsICZmb250SUQsICZ0cmFuc2Zvcm0sICZr
ZXJuaW5nSW5oaWJpdEZhY3RvciB9OworICAgICAgICBzdGF0dXMgPSBBVFNVU2V0QXR0cmlidXRl
cyhfQVRTVVN0eWxlLCA0LCBzdHlsZVRhZ3MsIHN0eWxlU2l6ZXMsIHN0eWxlVmFsdWVzKTsKICAg
ICAgICAgaWYgKHN0YXR1cyAhPSBub0VycikKICAgICAgICAgICAgIEZBVEFMX0FMV0FZUygiQVRT
VVNldEF0dHJpYnV0ZXMgZmFpbGVkICglZCkiLCBzdGF0dXMpOwogICAgICAgICBzdGF0dXMgPSBB
VFNGb250R2V0VGFibGUoZm9udElELCAncHJvcCcsIDAsIDAsIDAsICZwcm9wVGFibGVTaXplKTsK
QEAgLTEyNTAsMjAgKzEyNzEsMjYgQEAgc3RhdGljIHZvaWQgZHJhd0dseXBocyhOU0ZvbnQgKmZv
bnQsIE5TQwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBGQVRBTF9BTFdBWVMoIkFUU0ZvbnRH
ZXRUYWJsZSBmYWlsZWQgKCVkKSIsIHN0YXR1cyk7CiAKKyAgICAgICAgLy8gVHVybiBvZmYgbGln
YXR1cmVzIHN1Y2ggYXMgJ2ZpJyB0byBtYXRjaCB0aGUgQ0cgY29kZSBwYXRoJ3MgYmVoYXZpb3Is
IGJ1dCBkb24ndCBkbyBpdCB0b28KKyAgICAgICAgLy8gYWdncmVzc2l2ZWx5OiBpZiB0aGUgZm9u
dCBkb2Vzbid0IGNvbnRhaW4gJ2EnLCB0aGVuIGFzc3VtZSB0aGF0IGFueSBsaWdhdHVyZXMgaXQg
Y29udGFpbnMgYXJlCisgICAgICAgIC8vIGluIGNoYXJhY3RlcnMgdGhhdCBhbHdheXMgZ28gdGhy
b3VnaCBBVFNVSSwgYW5kIHRoZXJlZm9yZSBhbGxvdyB0aGVtLiBHZWV6YSBQcm8gaXMgYW4gZXhh
bXBsZS4KKyAgICAgICAgaWYgKFtbZm9udC5mb250IGNvdmVyZWRDaGFyYWN0ZXJTZXRdIGNoYXJh
Y3RlcklzTWVtYmVyOidhJ10pIHsKKyAgICAgICAgICAgIEFUU1VGb250RmVhdHVyZVR5cGUgZmVh
dHVyZVR5cGVzW10gPSB7IGtMaWdhdHVyZXNUeXBlIH07CisgICAgICAgICAgICBBVFNVRm9udEZl
YXR1cmVTZWxlY3RvciBmZWF0dXJlU2VsZWN0b3JzW10gPSB7IGtDb21tb25MaWdhdHVyZXNPZmZT
ZWxlY3RvciB9OworICAgICAgICAgICAgc3RhdHVzID0gQVRTVVNldEZvbnRGZWF0dXJlcyhfQVRT
VVN0eWxlLCAxLCBmZWF0dXJlVHlwZXMsIGZlYXR1cmVTZWxlY3RvcnMpOworICAgICAgICB9CisK
ICAgICAgICAgQVRTVVN0eWxlSW5pdGlhbGl6ZWQgPSBZRVM7CiAgICAgfQogfQogCi0tIChBVFNV
VGV4dExheW91dCljcmVhdGVBVFNVVGV4dExheW91dEZvclJ1bjooY29uc3QgV2ViQ29yZVRleHRS
dW4gKilydW4gc3R5bGU6KGNvbnN0IFdlYkNvcmVUZXh0U3R5bGUgKilzdHlsZQorLSAoQVRTVVRl
eHRMYXlvdXQpY3JlYXRlQVRTVVRleHRMYXlvdXRGb3JSdW46KGNvbnN0IFdlYkNvcmVUZXh0UnVu
ICopcnVuIHN0eWxlOihjb25zdCBXZWJDb3JlVGV4dFN0eWxlICopc3R5bGUgcmVuZGVyZXJzOihX
ZWJUZXh0UmVuZGVyZXIgKiopcmVuZGVyZXJzIGNhcGl0YWxpemVkQ2hhcmFjdGVyczooVW5pQ2hh
ciAqKWNhcHNCdWZmZXIKIHsKICAgICAvLyBUaGUgb25seSBDb2NvYSBjYWxscyBoZXJlIGFyZSB0
byBOU0dyYXBoaWNzQ29udGV4dCBhbmQgdGhlIHNlbGYKICAgICAvLyBjYWxsIHRvIF9pbml0aWFs
aXplQVRTVVN0eWxlLCB3aGljaCBhcmUgYWxsIGV4Y2VwdGlvbi1zYWZlLgogCiAgICAgQVRTVVRl
eHRMYXlvdXQgbGF5b3V0OwogICAgIFVuaUNoYXJDb3VudCBydW5MZW5ndGg7Ci0gICAgQVRTVUZv
bnRJRCBBVFNVU3Vic3RpdHV0ZUZvbnQ7Ci0gICAgVW5pQ2hhckFycmF5T2Zmc2V0IHN1YnN0aXR1
dGVPZmZzZXQ7Ci0gICAgVW5pQ2hhckNvdW50IHN1YnN0aXR1dGVMZW5ndGg7CiAgICAgT1NTdGF0
dXMgc3RhdHVzOwogICAgIEFUU1VMYXlvdXRPcGVyYXRpb25PdmVycmlkZVNwZWNpZmllciBvdmVy
cmlkZVNwZWNpZmllcjsKICAgICAKQEAgLTEyNzIsMTMgKzEyOTksMTMgQEAgc3RhdGljIHZvaWQg
ZHJhd0dseXBocyhOU0ZvbnQgKmZvbnQsIE5TQwogICAgIC8vIEZJWE1FOiBUaGlzIGlzIGN1cnJl
bnRseSBtaXNzaW5nIHRoZSBmb2xsb3dpbmcgcmVxdWlyZWQgZmVhdHVyZXMgdGhhdCB0aGUgQ29y
ZUdyYXBoaWNzIGNvZGUgcGF0aCBoYXM6CiAgICAgLy8gLSBcbiwgXHQsIGFuZCBub25icmVha2lu
ZyBzcGFjZSByZW5kZXIgYXMgYSBzcGFjZS4KICAgICAvLyAtIE90aGVyIGNvbnRyb2wgY2hhcmFj
dGVycyBkbyBub3QgcmVuZGVyIChvdGhlciBjb2RlIHBhdGggdXNlcyB6ZXJvLXdpZHRoIHNwYWNl
cykuCi0gICAgLy8gLSBTbWFsbCBjYXBzLgogICAgIC8vIC0gU3ludGhlc2l6ZWQgYm9sZC4KLSAg
ICAvLyAtIFN5bnRoZXNpemVkIG9ibGlxdWUuCiAKICAgICBydW5MZW5ndGggPSBydW4tPnRvIC0g
cnVuLT5mcm9tOworICAgIGlmIChzdHlsZS0+c21hbGxDYXBzKQorICAgICAgICBtZW1jcHkoY2Fw
c0J1ZmZlciwgcnVuLT5jaGFyYWN0ZXJzLCBydW4tPmxlbmd0aCAqIHNpemVvZihVbmlDaGFyKSk7
CiAgICAgc3RhdHVzID0gQVRTVUNyZWF0ZVRleHRMYXlvdXRXaXRoVGV4dFB0cigKLSAgICAgICAg
ICAgIHJ1bi0+Y2hhcmFjdGVycywKKyAgICAgICAgICAgIChzdHlsZS0+c21hbGxDYXBzID8gY2Fw
c0J1ZmZlciA6IHJ1bi0+Y2hhcmFjdGVycyksCiAgICAgICAgICAgICBydW4tPmZyb20sICAgICAg
Ly8gb2Zmc2V0CiAgICAgICAgICAgICBydW5MZW5ndGgsICAgICAgLy8gbGVuZ3RoCiAgICAgICAg
ICAgICBydW4tPmxlbmd0aCwgICAgLy8gdG90YWwgbGVuZ3RoCkBAIC0xMzA2LDE5ICsxMzMzLDY5
IEBAIHN0YXRpYyB2b2lkIGRyYXdHbHlwaHMoTlNGb250ICpmb250LCBOU0MKICAgICBpZiAoc3Rh
dHVzICE9IG5vRXJyKQogICAgICAgICBGQVRBTF9BTFdBWVMoIkFUU1VTZXRUcmFuc2llbnRGb250
TWF0Y2hpbmcgZmFpbGVkKCVkKSIsIHN0YXR1cyk7CiAKLSAgICBzdWJzdGl0dXRlT2Zmc2V0ID0g
cnVuLT5mcm9tOwotICAgIHdoaWxlICgoc3RhdHVzID0gQVRTVU1hdGNoRm9udHNUb1RleHQobGF5
b3V0LCBzdWJzdGl0dXRlT2Zmc2V0LCBrQVRTVVRvVGV4dEVuZCwgJkFUU1VTdWJzdGl0dXRlRm9u
dCwgJnN1YnN0aXR1dGVPZmZzZXQsICZzdWJzdGl0dXRlTGVuZ3RoKSkgPT0ga0FUU1VGb250c01h
dGNoZWQgfHwgc3RhdHVzID09IGtBVFNVRm9udHNOb3RNYXRjaGVkKSB7Ci0gICAgICAgIFdlYlRl
eHRSZW5kZXJlciAqc3Vic3RpdHV0ZVJlbmRlcmVyID0gW3NlbGYgc3Vic3RpdHV0ZVJlbmRlcmVy
Rm9yQ2hhcmFjdGVyczpydW4tPmNoYXJhY3RlcnMrc3Vic3RpdHV0ZU9mZnNldCBsZW5ndGg6c3Vi
c3RpdHV0ZUxlbmd0aCBmYW1pbGllczpzdHlsZS0+ZmFtaWxpZXNdOwotICAgICAgICBpZiAoc3Vi
c3RpdHV0ZVJlbmRlcmVyKSB7Ci0gICAgICAgICAgICBbc3Vic3RpdHV0ZVJlbmRlcmVyIGluaXRp
YWxpemVBVFNVU3R5bGVdOwotICAgICAgICAgICAgaWYgKHN1YnN0aXR1dGVSZW5kZXJlciAmJiBz
dWJzdGl0dXRlUmVuZGVyZXItPl9BVFNVU3R5bGUpCi0gICAgICAgICAgICAgICAgQVRTVVNldFJ1
blN0eWxlKGxheW91dCwgc3Vic3RpdHV0ZVJlbmRlcmVyLT5fQVRTVVN0eWxlLCBzdWJzdGl0dXRl
T2Zmc2V0LCBzdWJzdGl0dXRlTGVuZ3RoKTsKLSAgICAgICAgICAgIC8vIGlnbm9yaW5nIGVycm9y
cworICAgIEFUU1VGb250SUQgQVRTVVN1YnN0aXR1dGVGb250OworICAgIFVuaUNoYXJBcnJheU9m
ZnNldCBzdWJzdGl0dXRlT2Zmc2V0ID0gMDsKKyAgICBVbmlDaGFyQXJyYXlPZmZzZXQgcnVuVG8g
PSAocnVuLT50byA9PSAtMSA/IHJ1bi0+bGVuZ3RoIDogKHVuc2lnbmVkIGludClydW4tPnRvKTsK
KyAgICBVbmlDaGFyQ291bnQgc3Vic3RpdHV0ZUxlbmd0aDsKKyAgICBVbmlDaGFyQXJyYXlPZmZz
ZXQgbGFzdE9mZnNldDsKKyAgICBXZWJUZXh0UmVuZGVyZXIgKnN1YnN0aXR1dGVSZW5kZXJlcjsK
KworICAgIHdoaWxlIChzdWJzdGl0dXRlT2Zmc2V0IDwgcnVuVG8pIHsKKyAgICAgICAgbGFzdE9m
ZnNldCA9IHN1YnN0aXR1dGVPZmZzZXQ7CisgICAgICAgIHN0YXR1cyA9ICBBVFNVTWF0Y2hGb250
c1RvVGV4dChsYXlvdXQsIHN1YnN0aXR1dGVPZmZzZXQsIGtBVFNVVG9UZXh0RW5kLCAmQVRTVVN1
YnN0aXR1dGVGb250LCAmc3Vic3RpdHV0ZU9mZnNldCwgJnN1YnN0aXR1dGVMZW5ndGgpOworICAg
ICAgICBpZiAoc3RhdHVzID09IGtBVFNVRm9udHNNYXRjaGVkIHx8IHN0YXR1cyA9PSBrQVRTVUZv
bnRzTm90TWF0Y2hlZCkgeworICAgICAgICAgICAgc3Vic3RpdHV0ZVJlbmRlcmVyID0gW3NlbGYg
c3Vic3RpdHV0ZVJlbmRlcmVyRm9yQ2hhcmFjdGVyczpydW4tPmNoYXJhY3RlcnMrc3Vic3RpdHV0
ZU9mZnNldCBsZW5ndGg6c3Vic3RpdHV0ZUxlbmd0aCBmYW1pbGllczpzdHlsZS0+ZmFtaWxpZXNd
OworICAgICAgICAgICAgaWYgKHN1YnN0aXR1dGVSZW5kZXJlcikgeworICAgICAgICAgICAgICAg
IFtzdWJzdGl0dXRlUmVuZGVyZXIgaW5pdGlhbGl6ZUFUU1VTdHlsZV07CisgICAgICAgICAgICAg
ICAgaWYgKHN1YnN0aXR1dGVSZW5kZXJlci0+X0FUU1VTdHlsZSkKKyAgICAgICAgICAgICAgICAg
ICAgQVRTVVNldFJ1blN0eWxlKGxheW91dCwgc3Vic3RpdHV0ZVJlbmRlcmVyLT5fQVRTVVN0eWxl
LCBzdWJzdGl0dXRlT2Zmc2V0LCBzdWJzdGl0dXRlTGVuZ3RoKTsKKyAgICAgICAgICAgIH0gZWxz
ZQorICAgICAgICAgICAgICAgIHN1YnN0aXR1dGVSZW5kZXJlciA9IHNlbGY7CisgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICBzdWJzdGl0dXRlT2Zmc2V0ID0gcnVuVG87CisgICAgICAgICAg
ICBzdWJzdGl0dXRlTGVuZ3RoID0gMDsKKyAgICAgICAgfQorCisgICAgICAgIEJPT0wgaXNTbWFs
bENhcCA9IE5POworICAgICAgICBXZWJUZXh0UmVuZGVyZXIgKnJlbmRlcmVyID0gc2VsZjsKKyAg
ICAgICAgVW5pQ2hhckFycmF5T2Zmc2V0IGk7CisgICAgICAgIGZvciAoaSA9IGxhc3RPZmZzZXQ7
ICA7IGkrKykgeworICAgICAgICAgICAgVW5pQ2hhckFycmF5T2Zmc2V0IGZpcnN0U21hbGxDYXA7
CisgICAgICAgICAgICBpZiAoaSA9PSBzdWJzdGl0dXRlT2Zmc2V0IHx8IGkgPT0gc3Vic3RpdHV0
ZU9mZnNldCArIHN1YnN0aXR1dGVMZW5ndGgpIHsKKyAgICAgICAgICAgICAgICBpZiAoaXNTbWFs
bENhcCkgeworICAgICAgICAgICAgICAgICAgICBpc1NtYWxsQ2FwID0gTk87CisgICAgICAgICAg
ICAgICAgICAgIFtbcmVuZGVyZXIgc21hbGxDYXBzUmVuZGVyZXJdIGluaXRpYWxpemVBVFNVU3R5
bGVdOworICAgICAgICAgICAgICAgICAgICBBVFNVU2V0UnVuU3R5bGUobGF5b3V0LCBbcmVuZGVy
ZXIgc21hbGxDYXBzUmVuZGVyZXJdLT5fQVRTVVN0eWxlLCBmaXJzdFNtYWxsQ2FwLCBpIC0gZmly
c3RTbWFsbENhcCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChpID09
IHN1YnN0aXR1dGVPZmZzZXQgJiYgc3Vic3RpdHV0ZUxlbmd0aCA+IDApCisgICAgICAgICAgICAg
ICAgICAgIHJlbmRlcmVyID0gc3Vic3RpdHV0ZVJlbmRlcmVyOworICAgICAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBpZiAoc3R5bGUtPnNtYWxsQ2FwcykgeworICAgICAgICAgICAgICAgIFVuaUNoYXIgYyA9IHJ1
bi0+Y2hhcmFjdGVyc1tpXTsKKyAgICAgICAgICAgICAgICBVbmlDaGFyIG5ld0M7CisgICAgICAg
ICAgICAgICAgaWYgKCF1X2lzVVVwcGVyY2FzZShjKSAmJiAobmV3QyA9IHVfdG91cHBlcihjKSkg
IT0gYykgeworICAgICAgICAgICAgICAgICAgICBjYXBzQnVmZmVyW2ldID0gbmV3QzsKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKCFpc1NtYWxsQ2FwKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICBpc1NtYWxsQ2FwID0gWUVTOworICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3RTbWFsbENh
cCA9IGk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgcmVuZGVy
ZXJzW2ldID0gW3JlbmRlcmVyIHNtYWxsQ2Fwc1JlbmRlcmVyXTsKKyAgICAgICAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBpZiAoaXNTbWFsbENhcCkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgaXNTbWFsbENhcCA9IE5POworICAgICAgICAgICAgICAgICAgICAgICAg
W1tyZW5kZXJlciBzbWFsbENhcHNSZW5kZXJlcl0gaW5pdGlhbGl6ZUFUU1VTdHlsZV07CisgICAg
ICAgICAgICAgICAgICAgICAgICBBVFNVU2V0UnVuU3R5bGUobGF5b3V0LCBbcmVuZGVyZXIgc21h
bGxDYXBzUmVuZGVyZXJdLT5fQVRTVVN0eWxlLCBmaXJzdFNtYWxsQ2FwLCBpIC0gZmlyc3RTbWFs
bENhcCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgcmVuZGVy
ZXJzW2ldID0gcmVuZGVyZXI7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNl
CisgICAgICAgICAgICAgICAgcmVuZGVyZXJzW2ldID0gcmVuZGVyZXI7CiAgICAgICAgIH0KICAg
ICAgICAgc3Vic3RpdHV0ZU9mZnNldCArPSBzdWJzdGl0dXRlTGVuZ3RoOwogICAgIH0KLSAgICAv
LyBpZ25vcmluZyBlcnJvcnMgaW4gZm9udCBzdWJzdGl0dXRpb24KLSAgICAgICAgCisgICAgCiAg
ICAgcmV0dXJuIGxheW91dDsKIH0KIApAQCAtMTczOCwxNiArMTgxNSwyMCBAQCBzdGF0aWMgdm9p
ZCBpbml0aWFsaXplQ2hhcmFjdGVyV2lkdGhJdGVyCiAKIHN0YXRpYyB2b2lkIGNyZWF0ZUFUU1VM
YXlvdXRQYXJhbWV0ZXJzKEFUU1VMYXlvdXRQYXJhbWV0ZXJzICpwYXJhbXMsIFdlYlRleHRSZW5k
ZXJlciAqcmVuZGVyZXIsIGNvbnN0IFdlYkNvcmVUZXh0UnVuICpydW4gLCBjb25zdCBXZWJDb3Jl
VGV4dFN0eWxlICpzdHlsZSkgCiB7Ci0gICAgcGFyYW1zLT5yZW5kZXJlciA9IHJlbmRlcmVyOwog
ICAgIHBhcmFtcy0+cnVuID0gcnVuOwogICAgIHBhcmFtcy0+c3R5bGUgPSBzdHlsZTsKLSAgICBw
YXJhbXMtPmxheW91dCA9IFtyZW5kZXJlciBjcmVhdGVBVFNVVGV4dExheW91dEZvclJ1bjpydW4g
c3R5bGU6c3R5bGVdOworICAgIHBhcmFtcy0+cmVuZGVyZXJzID0gY2FsbG9jKHJ1bi0+bGVuZ3Ro
LCBzaXplb2YoV2ViVGV4dFJlbmRlcmVyICopKTsKKyAgICBwYXJhbXMtPmNhcHNCdWZmZXIgPSBz
dHlsZS0+c21hbGxDYXBzID8gY2FsbG9jKHJ1bi0+bGVuZ3RoLCBzaXplb2YoVW5pQ2hhcikpIDog
MDsKKyAgICBwYXJhbXMtPmxheW91dCA9IFtyZW5kZXJlciBjcmVhdGVBVFNVVGV4dExheW91dEZv
clJ1bjpydW4gc3R5bGU6c3R5bGUgcmVuZGVyZXJzOnBhcmFtcy0+cmVuZGVyZXJzIGNhcGl0YWxp
emVkQ2hhcmFjdGVyczpwYXJhbXMtPmNhcHNCdWZmZXJdOwogICAgIEFUU1VTZXRUZXh0TGF5b3V0
UmVmQ29uKHBhcmFtcy0+bGF5b3V0LCAoVUludDMyKXBhcmFtcyk7CiB9CiAKIHN0YXRpYyB2b2lk
IGRpc3Bvc2VBVFNVTGF5b3V0UGFyYW1ldGVycyhBVFNVTGF5b3V0UGFyYW1ldGVycyAqcGFyYW1z
KQogewogICAgIEFUU1VEaXNwb3NlVGV4dExheW91dChwYXJhbXMtPmxheW91dCk7CisgICAgaWYg
KHBhcmFtcy0+Y2Fwc0J1ZmZlcikKKyAgICAgICAgZnJlZShwYXJhbXMtPmNhcHNCdWZmZXIpOwor
ICAgIGZyZWUocGFyYW1zLT5yZW5kZXJlcnMpOwogfQogCiBzdGF0aWMgaW5saW5lIGZsb2F0IGNl
aWxDdXJyZW50V2lkdGgoQ2hhcmFjdGVyV2lkdGhJdGVyYXRvciAqaXRlcmF0b3IpCg==
</data>
<flag name="review"
          id="699"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>4965</attachid>
            <date>2005-12-05 07:57:37 -0800</date>
            <delta_ts>2005-12-18 14:11:57 -0800</delta_ts>
            <desc>1. correct check for when to use ATSU</desc>
            <filename>5166_step1.patch</filename>
            <type>text/plain</type>
            <size>576</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">LS0tIFdlYlRleHRSZW5kZXJlci5tCTIwMDUtMTItMDUgMTc6NDQ6MTQuMDAwMDAwMDAwICswMjAw
CisrKyBXZWJUZXh0UmVuZGVyZXItMS5tCTIwMDUtMTEtMjkgMTk6MTY6MDMuMDAwMDAwMDAwICsw
MjAwCkBAIC0xODU5LDcgKzE4NTksOCBAQCBzdGF0aWMgYm9vbCBzaG91bGRVc2VBVFNVKGNvbnN0
IFdlYkNvcmVUCiAgICAgY29uc3QgVW5pQ2hhciAqY2hhcmFjdGVycyA9IHJ1bi0+Y2hhcmFjdGVy
czsKICAgICBpbnQgdG8gPSBydW4tPnRvOwogICAgIGludCBpOwotICAgIGZvciAoaSA9IHJ1bi0+
ZnJvbTsgaSA8IHRvOyBpKyspIHsKKyAgICAvLyBTdGFydCBmcm9tIDAgc2luY2UgZHJhd2luZyBh
bmQgaGlnaGxpZ2h0aW5nIGFsc28gbWVhc3VyZSB0aGUgY2hhcmFjdGVycyBiZWZvcmUgcnVuLT5m
cm9tCisgICAgZm9yIChpID0gMDsgaSA8IHRvOyBpKyspIHsKICAgICAgICAgVW5pQ2hhciBjID0g
Y2hhcmFjdGVyc1tpXTsKICAgICAgICAgaWYgKGMgPCAweDMwMCkgICAgICAvLyBVKzAzMDAgdGhy
b3VnaCBVKzAzNkYgQ29tYmluaW5nIGRpYWNyaXRpY2FsIG1hcmtzCiAgICAgICAgICAgICBjb250
aW51ZTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>4966</attachid>
            <date>2005-12-05 07:58:27 -0800</date>
            <delta_ts>2005-12-18 14:12:00 -0800</delta_ts>
            <desc>2. multiple renderers, small caps and correct metrics for synthetic bold</desc>
            <filename>5166_step2.patch</filename>
            <type>text/plain</type>
            <size>14318</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">LS0tIFdlYlRleHRSZW5kZXJlci0xLm0JMjAwNS0xMS0yOSAxOToxNjowMy4wMDAwMDAwMDAgKzAy
MDAKKysrIFdlYlRleHRSZW5kZXJlci0yLm0JMjAwNS0xMS0yOSAyMToyODoyMS4wMDAwMDAwMDAg
KzAyMDAKQEAgLTEwOSwxMCArMTA5LDExIEBAIHR5cGVkZWYgc3RydWN0IFdpZHRoSXRlcmF0b3Ig
ewogCiB0eXBlZGVmIHN0cnVjdCBBVFNVTGF5b3V0UGFyYW1ldGVycwogewotICAgIFdlYlRleHRS
ZW5kZXJlciAqcmVuZGVyZXI7CiAgICAgY29uc3QgV2ViQ29yZVRleHRSdW4gKnJ1bjsKICAgICBj
b25zdCBXZWJDb3JlVGV4dFN0eWxlICpzdHlsZTsKICAgICBBVFNVVGV4dExheW91dCBsYXlvdXQ7
CisgICAgV2ViVGV4dFJlbmRlcmVyICoqcmVuZGVyZXJzOworICAgIFVuaUNoYXIgKmNoYXJCdWZm
ZXI7CiB9IEFUU1VMYXlvdXRQYXJhbWV0ZXJzOwogCiBzdGF0aWMgV2ViVGV4dFJlbmRlcmVyICpy
ZW5kZXJlckZvckFsdGVybmF0ZUZvbnQoV2ViVGV4dFJlbmRlcmVyICosIFdlYkNvcmVGb250KTsK
QEAgLTIyNywzMiArMjI4LDQxIEBAIHN0YXRpYyBPU1N0YXR1cyBvdmVycmlkZUxheW91dE9wZXJh
dGlvbigKICAgICAgICAgICAgIHJldHVybiBzdGF0dXM7CiAgICAgICAgIH0KICAgICAgICAgCi0g
ICAgICAgIC8vIFRoZSBDb3JlR3JhcGhpY3MgaW50ZXJwcmV0YXRpb24gb2YgTlNGb250QW50aWFs
aWFzZWRJbnRlZ2VyQWR2YW5jZW1lbnRzUmVuZGVyaW5nTW9kZSBzZWVtcwotICAgICAgICAvLyB0
byBiZSAicm91bmQgZWFjaCBnbHlwaCdzIHdpZHRoIHRvIHRoZSBuZWFyZXN0IGludGVnZXIiLiBU
aGlzIGlzIG5vdCB0aGUgc2FtZSBhcyBBVFNVSQotICAgICAgICAvLyBkb2VzIGluIGFueSBvZiBp
dHMgZGV2aWNlLW1ldHJpY3MgbW9kZXMuCi0gICAgICAgIGJvb2wgcm91bmRFYWNoR2x5cGggPSBb
cGFyYW1zLT5yZW5kZXJlci0+Zm9udC5mb250IHJlbmRlcmluZ01vZGVdID09IE5TRm9udEFudGlh
bGlhc2VkSW50ZWdlckFkdmFuY2VtZW50c1JlbmRlcmluZ01vZGU7CiAgICAgICAgIEZpeGVkIGxh
c3ROYXRpdmVQb3MgPSAwOwogICAgICAgICBmbG9hdCBsYXN0QWRqdXN0ZWRQb3MgPSAwOwogICAg
ICAgICBjb25zdCBXZWJDb3JlVGV4dFJ1biAqcnVuID0gcGFyYW1zLT5ydW47CiAgICAgICAgIGNv
bnN0IFVuaUNoYXIgKmNoYXJhY3RlcnMgPSBydW4tPmNoYXJhY3RlcnMgKyBydW4tPmZyb207Ci0g
ICAgICAgIFdlYlRleHRSZW5kZXJlciAqcmVuZGVyZXIgPSBwYXJhbXMtPnJlbmRlcmVyOworICAg
ICAgICBXZWJUZXh0UmVuZGVyZXIgKipyZW5kZXJlcnMgPSBwYXJhbXMtPnJlbmRlcmVycyArIHJ1
bi0+ZnJvbTsKKyAgICAgICAgV2ViVGV4dFJlbmRlcmVyICpyZW5kZXJlcjsKKyAgICAgICAgV2Vi
VGV4dFJlbmRlcmVyICpsYXN0UmVuZGVyZXIgPSAwOwogICAgICAgICBVbmlDaGFyIGNoLCBuZXh0
Q2g7Ci0gICAgICAgIG5leHRDaCA9ICooVW5pQ2hhciAqKSgoKGNoYXIgKiljaGFyYWN0ZXJzKSts
YXlvdXRSZWNvcmRzWzBdLm9yaWdpbmFsT2Zmc2V0KTsKKyAgICAgICAgQnl0ZUNvdW50IG9mZnNl
dCA9IGxheW91dFJlY29yZHNbMF0ub3JpZ2luYWxPZmZzZXQ7CisgICAgICAgIG5leHRDaCA9ICoo
VW5pQ2hhciAqKSgoKGNoYXIgKiljaGFyYWN0ZXJzKStvZmZzZXQpOworICAgICAgICBib29sIHNo
b3VsZFJvdW5kOwogICAgICAgICAvLyBJbiB0aGUgQ29yZUdyYXBoaWNzIGNvZGUgcGF0aCwgdGhl
IHJvdW5kaW5nIGhhY2sgaXMgYXBwbGllZCBpbiBsb2dpY2FsIG9yZGVyLgogICAgICAgICAvLyBI
ZXJlIGl0IGlzIGFwcGxpZWQgaW4gdmlzdWFsIGxlZnQtdG8tcmlnaHQgb3JkZXIsIHdoaWNoIG1h
eSBiZSBiZXR0ZXIuCiAgICAgICAgIEl0ZW1Db3VudCBpOwogICAgICAgICBmb3IgKGkgPSAxOyBp
IDwgY291bnQ7IGkrKykgewotICAgICAgICAgICAgQk9PTCBpc0xhc3RDaGFyID0gaSA9PSBjb3Vu
dCAtIDE7CisgICAgICAgICAgICBib29sIGlzTGFzdENoYXIgPSBpID09IGNvdW50IC0gMTsKKyAg
ICAgICAgICAgIHJlbmRlcmVyID0gcmVuZGVyZXJzW29mZnNldCAvIDJdOworICAgICAgICAgICAg
aWYgKHJlbmRlcmVyICE9IGxhc3RSZW5kZXJlcikgeworICAgICAgICAgICAgICAgIGxhc3RSZW5k
ZXJlciA9IHJlbmRlcmVyOworICAgICAgICAgICAgICAgIC8vIFRoZSBDb3JlR3JhcGhpY3MgaW50
ZXJwcmV0YXRpb24gb2YgTlNGb250QW50aWFsaWFzZWRJbnRlZ2VyQWR2YW5jZW1lbnRzUmVuZGVy
aW5nTW9kZSBzZWVtcworICAgICAgICAgICAgICAgIC8vIHRvIGJlICJyb3VuZCBlYWNoIGdseXBo
J3Mgd2lkdGggdG8gdGhlIG5lYXJlc3QgaW50ZWdlciIuIFRoaXMgaXMgbm90IHRoZSBzYW1lIGFz
IEFUU1VJCisgICAgICAgICAgICAgICAgLy8gZG9lcyBpbiBhbnkgb2YgaXRzIGRldmljZS1tZXRy
aWNzIG1vZGVzLgorICAgICAgICAgICAgICAgIHNob3VsZFJvdW5kID0gW3JlbmRlcmVyLT5mb250
LmZvbnQgcmVuZGVyaW5nTW9kZV0gPT0gTlNGb250QW50aWFsaWFzZWRJbnRlZ2VyQWR2YW5jZW1l
bnRzUmVuZGVyaW5nTW9kZTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNoID0gbmV4dENo
OwotCisgICAgICAgICAgICBvZmZzZXQgPSBsYXlvdXRSZWNvcmRzW2ldLm9yaWdpbmFsT2Zmc2V0
OwogICAgICAgICAgICAgLy8gVXNlIHNwYWNlIGZvciBuZXh0Q2ggYXQgdGhlIGVuZCBvZiB0aGUg
bG9vcCBzbyB0aGF0IHdlIGdldCBpbnNpZGUgdGhlIHJvdW5kaW5nIGhhY2sgY29kZS4KICAgICAg
ICAgICAgIC8vIFdlIHdvbid0IGFjdHVhbGx5IHJvdW5kIHVubGVzcyB0aGUgb3RoZXIgY29uZGl0
aW9ucyBhcmUgc2F0aXNmaWVkLgotICAgICAgICAgICAgbmV4dENoID0gaXNMYXN0Q2hhciA/ICcg
JyA6ICooVW5pQ2hhciAqKSgoKGNoYXIgKiljaGFyYWN0ZXJzKStsYXlvdXRSZWNvcmRzW2ldLm9y
aWdpbmFsT2Zmc2V0KTsKKyAgICAgICAgICAgIG5leHRDaCA9IGlzTGFzdENoYXIgPyAnICcgOiAq
KFVuaUNoYXIgKikoKChjaGFyICopY2hhcmFjdGVycykrb2Zmc2V0KTsKIAogICAgICAgICAgICAg
ZmxvYXQgd2lkdGggPSBGaXhlZFRvRmxvYXQobGF5b3V0UmVjb3Jkc1tpXS5yZWFsUG9zIC0gbGFz
dE5hdGl2ZVBvcyk7CiAgICAgICAgICAgICBsYXN0TmF0aXZlUG9zID0gbGF5b3V0UmVjb3Jkc1tp
XS5yZWFsUG9zOwotICAgICAgICAgICAgaWYgKHJvdW5kRWFjaEdseXBoKQorICAgICAgICAgICAg
aWYgKHNob3VsZFJvdW5kKQogICAgICAgICAgICAgICAgIHdpZHRoID0gcm91bmRmKHdpZHRoKTsK
KyAgICAgICAgICAgIHdpZHRoICs9IHJlbmRlcmVyLT5zeW50aGV0aWNCb2xkT2Zmc2V0OwogICAg
ICAgICAgICAgaWYgKHJlbmRlcmVyLT50cmVhdEFzRml4ZWRQaXRjaCA/IHdpZHRoID09IHJlbmRl
cmVyLT5zcGFjZVdpZHRoIDogKGxheW91dFJlY29yZHNbaS0xXS5mbGFncyAmIGtBVFNHbHlwaElu
Zm9Jc1doaXRlU3BhY2UpKQogICAgICAgICAgICAgICAgIHdpZHRoID0gcmVuZGVyZXItPmFkanVz
dGVkU3BhY2VXaWR0aDsKICAgICAgICAgICAgIGlmIChpc1JvdW5kaW5nSGFja0NoYXJhY3Rlcihj
aCkpCkBAIC0xMTgwLDE1ICsxMTkwLDIwIEBAIHN0YXRpYyB2b2lkIGluaXRpYWxpemVBVFNVU3R5
bGUoV2ViVGV4dFIKICAgICB9CiB9CiAKLXN0YXRpYyBBVFNVVGV4dExheW91dCBjcmVhdGVBVFNV
VGV4dExheW91dChXZWJUZXh0UmVuZGVyZXIgKnJlbmRlcmVyLCBjb25zdCBXZWJDb3JlVGV4dFJ1
biAqcnVuLCBjb25zdCBXZWJDb3JlVGV4dFN0eWxlICpzdHlsZSkKK3N0YXRpYyB2b2lkIGNyZWF0
ZUFUU1VMYXlvdXRQYXJhbWV0ZXJzKEFUU1VMYXlvdXRQYXJhbWV0ZXJzICpwYXJhbXMsIFdlYlRl
eHRSZW5kZXJlciAqcmVuZGVyZXIsIGNvbnN0IFdlYkNvcmVUZXh0UnVuICpydW4sIGNvbnN0IFdl
YkNvcmVUZXh0U3R5bGUgKnN0eWxlKQogeworICAgIHBhcmFtcy0+cnVuID0gcnVuOworICAgIHBh
cmFtcy0+c3R5bGUgPSBzdHlsZTsKKyAgICAvLyBGSVhNRTogSXQgaXMgcHJvYmFibHkgYmVzdCB0
byBhbHdheXMgYWxsb2NhdGUgYSBidWZmZXIgZm9yIFJUTCwgc2luY2UgZXZlbiBpZiBmb3IgdGhp
cworICAgIC8vIHJlbmRlcmVyIEFUU1VNaXJyb3JzIGlzIHRydWUsIGZvciBhIHN1YnN0aXR1dGUg
cmVuZGVyZXIgaXQgbWlnaHQgYmUgZmFsc2UuCisgICAgV2ViVGV4dFJlbmRlcmVyICoqcmVuZGVy
ZXJzID0gbWFsbG9jKHJ1bi0+bGVuZ3RoICogc2l6ZW9mKFdlYlRleHRSZW5kZXJlciAqKSk7Cisg
ICAgcGFyYW1zLT5yZW5kZXJlcnMgPSByZW5kZXJlcnM7CisgICAgVW5pQ2hhciAqY2hhckJ1ZmZl
ciA9IChzdHlsZS0+c21hbGxDYXBzIHx8IChzdHlsZS0+cnRsICYmICFyZW5kZXJlci0+QVRTVU1p
cnJvcnMpKSA/IG1hbGxvYyhydW4tPmxlbmd0aCAqIHNpemVvZihVbmlDaGFyKSkgOiAwOworICAg
IHBhcmFtcy0+Y2hhckJ1ZmZlciA9IGNoYXJCdWZmZXI7CisKICAgICAvLyBUaGUgb25seSBDb2Nv
YSBjYWxscyBoZXJlIGFyZSB0byBOU0dyYXBoaWNzQ29udGV4dCwgd2hpY2ggZG9lcyBub3QgcmFp
c2UgZXhjZXB0aW9ucy4KIAogICAgIEFUU1VUZXh0TGF5b3V0IGxheW91dDsKLSAgICBVbmlDaGFy
Q291bnQgcnVuTGVuZ3RoOwotICAgIEFUU1VGb250SUQgQVRTVVN1YnN0aXR1dGVGb250OwotICAg
IFVuaUNoYXJBcnJheU9mZnNldCBzdWJzdGl0dXRlT2Zmc2V0OwotICAgIFVuaUNoYXJDb3VudCBz
dWJzdGl0dXRlTGVuZ3RoOwogICAgIE9TU3RhdHVzIHN0YXR1czsKICAgICBBVFNVTGF5b3V0T3Bl
cmF0aW9uT3ZlcnJpZGVTcGVjaWZpZXIgb3ZlcnJpZGVTcGVjaWZpZXI7CiAgICAgCkBAIC0xMTk3
LDIyICsxMjEyLDMxIEBAIHN0YXRpYyBBVFNVVGV4dExheW91dCBjcmVhdGVBVFNVVGV4dExheW8K
ICAgICAvLyBGSVhNRTogVGhpcyBpcyBjdXJyZW50bHkgbWlzc2luZyB0aGUgZm9sbG93aW5nIHJl
cXVpcmVkIGZlYXR1cmVzIHRoYXQgdGhlIENvcmVHcmFwaGljcyBjb2RlIHBhdGggaGFzOgogICAg
IC8vIC0gXG4sIFx0LCBhbmQgbm9uYnJlYWtpbmcgc3BhY2UgcmVuZGVyIGFzIGEgc3BhY2UuCiAg
ICAgLy8gLSBPdGhlciBjb250cm9sIGNoYXJhY3RlcnMgZG8gbm90IHJlbmRlciAob3RoZXIgY29k
ZSBwYXRoIHVzZXMgemVyby13aWR0aCBzcGFjZXMpLgotICAgIC8vIC0gU21hbGwgY2Fwcy4KICAg
ICAvLyAtIFN5bnRoZXNpemVkIGJvbGQuCiAgICAgLy8gLSBTeW50aGVzaXplZCBvYmxpcXVlLgog
Ci0gICAgcnVuTGVuZ3RoID0gcnVuLT50byAtIHJ1bi0+ZnJvbTsKKyAgICBVbmlDaGFyQ291bnQg
dG90YWxMZW5ndGggPSBydW4tPmxlbmd0aDsKKyAgICBVbmlDaGFyQXJyYXlPZmZzZXQgcnVuVG8g
PSAocnVuLT50byA9PSAtMSA/IHRvdGFsTGVuZ3RoIDogKHVuc2lnbmVkIGludClydW4tPnRvKTsK
KyAgICBVbmlDaGFyQXJyYXlPZmZzZXQgcnVuRnJvbSA9IHJ1bi0+ZnJvbTsKKyAgICAKKyAgICBp
ZiAoY2hhckJ1ZmZlcikKKyAgICAgICAgbWVtY3B5KGNoYXJCdWZmZXIsIHJ1bi0+Y2hhcmFjdGVy
cywgdG90YWxMZW5ndGggKiBzaXplb2YoVW5pQ2hhcikpOworCisgICAgVW5pQ2hhckNvdW50IHJ1
bkxlbmd0aCA9IHJ1blRvIC0gcnVuRnJvbTsKKyAgICAKICAgICBzdGF0dXMgPSBBVFNVQ3JlYXRl
VGV4dExheW91dFdpdGhUZXh0UHRyKAotICAgICAgICAgICAgcnVuLT5jaGFyYWN0ZXJzLAotICAg
ICAgICAgICAgcnVuLT5mcm9tLCAgICAgIC8vIG9mZnNldAorICAgICAgICAgICAgKGNoYXJCdWZm
ZXIgPyBjaGFyQnVmZmVyIDogcnVuLT5jaGFyYWN0ZXJzKSwKKyAgICAgICAgICAgIHJ1bkZyb20s
ICAgICAgICAvLyBvZmZzZXQKICAgICAgICAgICAgIHJ1bkxlbmd0aCwgICAgICAvLyBsZW5ndGgK
LSAgICAgICAgICAgIHJ1bi0+bGVuZ3RoLCAgICAvLyB0b3RhbCBsZW5ndGgKKyAgICAgICAgICAg
IHRvdGFsTGVuZ3RoLCAgICAvLyB0b3RhbCBsZW5ndGgKICAgICAgICAgICAgIDEsICAgICAgICAg
ICAgICAvLyBzdHlsZVJ1bkNvdW50CiAgICAgICAgICAgICAmcnVuTGVuZ3RoLCAgICAgLy8gbGVu
Z3RoIG9mIHN0eWxlIHJ1bgogICAgICAgICAgICAgJnJlbmRlcmVyLT5fQVRTVVN0eWxlLCAKICAg
ICAgICAgICAgICZsYXlvdXQpOwogICAgIGlmIChzdGF0dXMgIT0gbm9FcnIpCiAgICAgICAgIEZB
VEFMX0FMV0FZUygiQVRTVUNyZWF0ZVRleHRMYXlvdXRXaXRoVGV4dFB0ciBmYWlsZWQoJWQpIiwg
c3RhdHVzKTsKKyAgICBwYXJhbXMtPmxheW91dCA9IGxheW91dDsKKyAgICBBVFNVU2V0VGV4dExh
eW91dFJlZkNvbihsYXlvdXQsIChVSW50MzIpcGFyYW1zKTsKIAogICAgIENHQ29udGV4dFJlZiBj
Z0NvbnRleHQgPSAoQ0dDb250ZXh0UmVmKVtbTlNHcmFwaGljc0NvbnRleHQgY3VycmVudENvbnRl
eHRdIGdyYXBoaWNzUG9ydF07CiAgICAgQVRTTGluZUxheW91dE9wdGlvbnMgbGluZUxheW91dE9w
dGlvbnMgPSBrQVRTTGluZUtlZXBTcGFjZXNPdXRPZk1hcmdpbiB8IGtBVFNMaW5lSGFzTm9IYW5n
ZXJzOwpAQCAtMTIzMSwyMCArMTI1NSw3NiBAQCBzdGF0aWMgQVRTVVRleHRMYXlvdXQgY3JlYXRl
QVRTVVRleHRMYXlvCiAgICAgaWYgKHN0YXR1cyAhPSBub0VycikKICAgICAgICAgRkFUQUxfQUxX
QVlTKCJBVFNVU2V0VHJhbnNpZW50Rm9udE1hdGNoaW5nIGZhaWxlZCglZCkiLCBzdGF0dXMpOwog
Ci0gICAgc3Vic3RpdHV0ZU9mZnNldCA9IHJ1bi0+ZnJvbTsKLSAgICB3aGlsZSAoKHN0YXR1cyA9
IEFUU1VNYXRjaEZvbnRzVG9UZXh0KGxheW91dCwgc3Vic3RpdHV0ZU9mZnNldCwga0FUU1VUb1Rl
eHRFbmQsICZBVFNVU3Vic3RpdHV0ZUZvbnQsICZzdWJzdGl0dXRlT2Zmc2V0LCAmc3Vic3RpdHV0
ZUxlbmd0aCkpID09IGtBVFNVRm9udHNNYXRjaGVkIHx8IHN0YXR1cyA9PSBrQVRTVUZvbnRzTm90
TWF0Y2hlZCkgewotICAgICAgICBXZWJUZXh0UmVuZGVyZXIgKnN1YnN0aXR1dGVSZW5kZXJlciA9
IGZpbmRTdWJzdGl0dXRlUmVuZGVyZXIocmVuZGVyZXIsIHJ1bi0+Y2hhcmFjdGVycyArIHN1YnN0
aXR1dGVPZmZzZXQsIHN1YnN0aXR1dGVMZW5ndGgsIHN0eWxlLT5mYW1pbGllcyk7Ci0gICAgICAg
IGlmIChzdWJzdGl0dXRlUmVuZGVyZXIpIHsKLSAgICAgICAgICAgIGluaXRpYWxpemVBVFNVU3R5
bGUoc3Vic3RpdHV0ZVJlbmRlcmVyKTsKLSAgICAgICAgICAgIGlmIChzdWJzdGl0dXRlUmVuZGVy
ZXItPl9BVFNVU3R5bGUpCi0gICAgICAgICAgICAgICAgQVRTVVNldFJ1blN0eWxlKGxheW91dCwg
c3Vic3RpdHV0ZVJlbmRlcmVyLT5fQVRTVVN0eWxlLCBzdWJzdGl0dXRlT2Zmc2V0LCBzdWJzdGl0
dXRlTGVuZ3RoKTsKLSAgICAgICAgICAgIC8vIGlnbm9yaW5nIGVycm9ycworICAgIEFUU1VGb250
SUQgQVRTVVN1YnN0aXR1dGVGb250OworICAgIFVuaUNoYXJBcnJheU9mZnNldCBzdWJzdGl0dXRl
T2Zmc2V0ID0gcnVuRnJvbTsKKyAgICBVbmlDaGFyQ291bnQgc3Vic3RpdHV0ZUxlbmd0aDsKKyAg
ICBVbmlDaGFyQXJyYXlPZmZzZXQgbGFzdE9mZnNldDsKKyAgICBXZWJUZXh0UmVuZGVyZXIgKnN1
YnN0aXR1dGVSZW5kZXJlcjsKKworICAgIHdoaWxlIChzdWJzdGl0dXRlT2Zmc2V0IDwgcnVuVG8p
IHsKKyAgICAgICAgbGFzdE9mZnNldCA9IHN1YnN0aXR1dGVPZmZzZXQ7CisgICAgICAgIHN0YXR1
cyA9IEFUU1VNYXRjaEZvbnRzVG9UZXh0KGxheW91dCwgc3Vic3RpdHV0ZU9mZnNldCwga0FUU1VU
b1RleHRFbmQsICZBVFNVU3Vic3RpdHV0ZUZvbnQsICZzdWJzdGl0dXRlT2Zmc2V0LCAmc3Vic3Rp
dHV0ZUxlbmd0aCk7CisgICAgICAgIGlmIChzdGF0dXMgPT0ga0FUU1VGb250c01hdGNoZWQgfHwg
c3RhdHVzID09IGtBVFNVRm9udHNOb3RNYXRjaGVkKSB7CisgICAgICAgICAgICBzdWJzdGl0dXRl
UmVuZGVyZXIgPSBmaW5kU3Vic3RpdHV0ZVJlbmRlcmVyKHJlbmRlcmVyLCBydW4tPmNoYXJhY3Rl
cnMrc3Vic3RpdHV0ZU9mZnNldCwgc3Vic3RpdHV0ZUxlbmd0aCwgc3R5bGUtPmZhbWlsaWVzKTsK
KyAgICAgICAgICAgIGlmIChzdWJzdGl0dXRlUmVuZGVyZXIpIHsKKyAgICAgICAgICAgICAgICBp
bml0aWFsaXplQVRTVVN0eWxlKHN1YnN0aXR1dGVSZW5kZXJlcik7CisgICAgICAgICAgICAgICAg
aWYgKHN1YnN0aXR1dGVSZW5kZXJlci0+X0FUU1VTdHlsZSkKKyAgICAgICAgICAgICAgICAgICAg
QVRTVVNldFJ1blN0eWxlKGxheW91dCwgc3Vic3RpdHV0ZVJlbmRlcmVyLT5fQVRTVVN0eWxlLCBz
dWJzdGl0dXRlT2Zmc2V0LCBzdWJzdGl0dXRlTGVuZ3RoKTsKKyAgICAgICAgICAgIH0gZWxzZQor
ICAgICAgICAgICAgICAgIHN1YnN0aXR1dGVSZW5kZXJlciA9IHJlbmRlcmVyOworICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgc3Vic3RpdHV0ZU9mZnNldCA9IHJ1blRvOworICAgICAgICAg
ICAgc3Vic3RpdHV0ZUxlbmd0aCA9IDA7CisgICAgICAgIH0KKworICAgICAgICBib29sIGlzU21h
bGxDYXAgPSBOTzsKKyAgICAgICAgV2ViVGV4dFJlbmRlcmVyICpyID0gcmVuZGVyZXI7CisgICAg
ICAgIFVuaUNoYXJBcnJheU9mZnNldCBpOworICAgICAgICBmb3IgKGkgPSBsYXN0T2Zmc2V0OyAg
OyBpKyspIHsKKyAgICAgICAgICAgIFVuaUNoYXJBcnJheU9mZnNldCBmaXJzdFNtYWxsQ2FwOwor
ICAgICAgICAgICAgaWYgKGkgPT0gc3Vic3RpdHV0ZU9mZnNldCB8fCBpID09IHN1YnN0aXR1dGVP
ZmZzZXQgKyBzdWJzdGl0dXRlTGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgaWYgKGlzU21hbGxD
YXApIHsKKyAgICAgICAgICAgICAgICAgICAgaXNTbWFsbENhcCA9IE5POworICAgICAgICAgICAg
ICAgICAgICBpbml0aWFsaXplQVRTVVN0eWxlKGdldFNtYWxsQ2Fwc1JlbmRlcmVyKHIpKTsKKyAg
ICAgICAgICAgICAgICAgICAgQVRTVVNldFJ1blN0eWxlKGxheW91dCwgZ2V0U21hbGxDYXBzUmVu
ZGVyZXIociktPl9BVFNVU3R5bGUsIGZpcnN0U21hbGxDYXAsIGkgLSBmaXJzdFNtYWxsQ2FwKTsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKGkgPT0gc3Vic3RpdHV0ZU9m
ZnNldCAmJiBzdWJzdGl0dXRlTGVuZ3RoID4gMCkKKyAgICAgICAgICAgICAgICAgICAgciA9IHN1
YnN0aXR1dGVSZW5kZXJlcjsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHJ0bCAmJiBjaGFyQnVm
ZmVyICYmICFyLT5BVFNVTWlycm9ycykKKyAgICAgICAgICAgICAgICBjaGFyQnVmZmVyW2ldID0g
dV9jaGFyTWlycm9yKGNoYXJCdWZmZXJbaV0pOworICAgICAgICAgICAgaWYgKHN0eWxlLT5zbWFs
bENhcHMpIHsKKyAgICAgICAgICAgICAgICBVbmlDaGFyIGMgPSBjaGFyQnVmZmVyW2ldOworICAg
ICAgICAgICAgICAgIFVuaUNoYXIgbmV3QzsKKyAgICAgICAgICAgICAgICBpZiAoIXVfaXNVVXBw
ZXJjYXNlKGMpICYmIChuZXdDID0gdV90b3VwcGVyKGMpKSAhPSBjKSB7CisgICAgICAgICAgICAg
ICAgICAgIGNoYXJCdWZmZXJbaV0gPSBuZXdDOworICAgICAgICAgICAgICAgICAgICBpZiAoIWlz
U21hbGxDYXApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlzU21hbGxDYXAgPSBZRVM7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBmaXJzdFNtYWxsQ2FwID0gaTsKKyAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgICAgICByZW5kZXJlcnNbaV0gPSBnZXRTbWFsbENhcHNS
ZW5kZXJlcihyKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAg
ICBpZiAoaXNTbWFsbENhcCkgeworICAgICAgICAgICAgICAgICAgICAgICAgaXNTbWFsbENhcCA9
IE5POworICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbGl6ZUFUU1VTdHlsZShnZXRTbWFs
bENhcHNSZW5kZXJlcihyKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBBVFNVU2V0UnVuU3R5
bGUobGF5b3V0LCBnZXRTbWFsbENhcHNSZW5kZXJlcihyKS0+X0FUU1VTdHlsZSwgZmlyc3RTbWFs
bENhcCwgaSAtIGZpcnN0U21hbGxDYXApOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgICAgIHJlbmRlcmVyc1tpXSA9IHI7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgcmVuZGVyZXJzW2ldID0gcjsKICAgICAgICAg
fQogICAgICAgICBzdWJzdGl0dXRlT2Zmc2V0ICs9IHN1YnN0aXR1dGVMZW5ndGg7CiAgICAgfQot
ICAgIC8vIGlnbm9yaW5nIGVycm9ycyBpbiBmb250IHN1YnN0aXR1dGlvbgotICAgICAgICAKLSAg
ICByZXR1cm4gbGF5b3V0OworfQorCitzdGF0aWMgdm9pZCBkaXNwb3NlQVRTVUxheW91dFBhcmFt
ZXRlcnMoQVRTVUxheW91dFBhcmFtZXRlcnMgKnBhcmFtcykKK3sKKyAgICBBVFNVRGlzcG9zZVRl
eHRMYXlvdXQocGFyYW1zLT5sYXlvdXQpOworICAgIGZyZWUocGFyYW1zLT5jaGFyQnVmZmVyKTsK
KyAgICBmcmVlKHBhcmFtcy0+cmVuZGVyZXJzKTsKIH0KIAogc3RhdGljIEFUU1RyYXBlem9pZCBn
ZXRUZXh0Qm91bmRzKFdlYlRleHRSZW5kZXJlciAqcmVuZGVyZXIsIGNvbnN0IFdlYkNvcmVUZXh0
UnVuICpydW4sIGNvbnN0IFdlYkNvcmVUZXh0U3R5bGUgKnN0eWxlLCBOU1BvaW50IHApCkBAIC0x
MzA1LDI0ICsxMzg1LDYgQEAgc3RhdGljIFdlYkNvcmVUZXh0UnVuIGFkZERpcmVjdGlvbmFsT3Zl
cgogICAgIHJldHVybiBydW5XaXRoT3ZlcnJpZGU7CiB9CiAKLS8vIEJlIHN1cmUgdG8gZnJlZSB0
aGUgcnVuLmNoYXJhY3RlcnMgYWxsb2NhdGVkIGJ5IHRoaXMgZnVuY3Rpb24uCi1zdGF0aWMgV2Vi
Q29yZVRleHRSdW4gYXBwbHlNaXJyb3JpbmdUb1J1bihjb25zdCBXZWJDb3JlVGV4dFJ1biAqcnVu
KQotewotICAgIFVuaUNoYXIgKm1pcnJvcmVkQ2hhcmFjdGVycyA9IG1hbGxvYyhzaXplb2YoVW5p
Q2hhcikqKHJ1bi0+bGVuZ3RoKSk7Ci0gICAgdW5zaWduZWQgaW50IGk7Ci0gICAgZm9yIChpID0g
MDsgaSA8IHJ1bi0+bGVuZ3RoOyBpKyspCi0gICAgICAgIG1pcnJvcmVkQ2hhcmFjdGVyc1tpXSA9
IHVfY2hhck1pcnJvcihydW4tPmNoYXJhY3RlcnNbaV0pOwotCi0gICAgV2ViQ29yZVRleHRSdW4g
bWlycm9yZWRSdW47Ci0KLSAgICBtaXJyb3JlZFJ1bi5mcm9tID0gcnVuLT5mcm9tOwotICAgIG1p
cnJvcmVkUnVuLnRvID0gcnVuLT50bzsKLSAgICBtaXJyb3JlZFJ1bi5sZW5ndGggPSBydW4tPmxl
bmd0aDsKLSAgICBtaXJyb3JlZFJ1bi5jaGFyYWN0ZXJzID0gbWlycm9yZWRDaGFyYWN0ZXJzOwot
Ci0gICAgcmV0dXJuIG1pcnJvcmVkUnVuOwotfQotCiBzdGF0aWMgdm9pZCBBVFNVX2RyYXdIaWdo
bGlnaHQoV2ViVGV4dFJlbmRlcmVyICpyZW5kZXJlciwgY29uc3QgV2ViQ29yZVRleHRSdW4gKnJ1
biwgY29uc3QgV2ViQ29yZVRleHRTdHlsZSAqc3R5bGUsIGNvbnN0IFdlYkNvcmVUZXh0R2VvbWV0
cnkgKmdlb21ldHJ5KQogewogICAgIC8vIFRoZSBvbmx5IENvY29hIGNhbGxzIG1hZGUgaGVyZSBh
cmUgdG8gTlNDb2xvciBhbmQgTlNCZXppZXJQYXRoLCBhbmQgdGhleSBkbyBub3QgcmFpc2UgZXhj
ZXB0aW9ucy4KQEAgLTEzNDgsMTEgKzE0MTAsNyBAQCBzdGF0aWMgdm9pZCBBVFNVX2RyYXdIaWdo
bGlnaHQoV2ViVGV4dFJlCiAgICAgaWYgKHN0eWxlLT5kaXJlY3Rpb25hbE92ZXJyaWRlKSB7CiAg
ICAgICAgIHN3YXBwZWRSdW4gPSBhZGREaXJlY3Rpb25hbE92ZXJyaWRlKGFSdW4sIHN0eWxlLT5y
dGwpOwogICAgICAgICBhUnVuID0gJnN3YXBwZWRSdW47Ci0gICAgfSBlbHNlIGlmIChzdHlsZS0+
cnRsICYmICFyZW5kZXJlci0+QVRTVU1pcnJvcnMpIHsKLSAgICAgICAgc3dhcHBlZFJ1biA9IGFw
cGx5TWlycm9yaW5nVG9SdW4oYVJ1bik7Ci0gICAgICAgIGFSdW4gPSAmc3dhcHBlZFJ1bjsKICAg
ICB9Ci0KICAgIAogICAgIGZsb2F0IHNlbGVjdGVkTGVmdFg7CiAgICAgZmxvYXQgd2lkdGhXaXRo
TGVhZCA9IEFUU1VfZmxvYXRXaWR0aEZvclJ1bihyZW5kZXJlciwgYVJ1biwgc3R5bGUpOwpAQCAt
MTM3OCw3ICsxNDM2LDcgQEAgc3RhdGljIHZvaWQgQVRTVV9kcmF3SGlnaGxpZ2h0KFdlYlRleHRS
ZQogICAgICAgICA/IHJlbmRlcmVyLT5saW5lU3BhY2luZyA6IGdlb21ldHJ5LT5zZWxlY3Rpb25I
ZWlnaHQ7CiAgICAgW05TQmV6aWVyUGF0aCBmaWxsUmVjdDpOU01ha2VSZWN0KHNlbGVjdGVkTGVm
dFgsIHlQb3MsIGJhY2tncm91bmRXaWR0aCwgaGVpZ2h0KV07CiAKLSAgICBpZiAoc3R5bGUtPmRp
cmVjdGlvbmFsT3ZlcnJpZGUgfHwgKHN0eWxlLT5ydGwgJiYgIXJlbmRlcmVyLT5BVFNVTWlycm9y
cykpCisgICAgaWYgKHN0eWxlLT5kaXJlY3Rpb25hbE92ZXJyaWRlKQogICAgICAgICBmcmVlKCh2
b2lkICopc3dhcHBlZFJ1bi5jaGFyYWN0ZXJzKTsKIH0KIApAQCAtMTM5NSw5ICsxNDUzLDYgQEAg
c3RhdGljIHZvaWQgQVRTVV9kcmF3KFdlYlRleHRSZW5kZXJlciAqcgogICAgIGlmIChzdHlsZS0+
ZGlyZWN0aW9uYWxPdmVycmlkZSkgewogICAgICAgICBzd2FwcGVkUnVuID0gYWRkRGlyZWN0aW9u
YWxPdmVycmlkZShydW4sIHN0eWxlLT5ydGwpOwogICAgICAgICBhUnVuID0gJnN3YXBwZWRSdW47
Ci0gICAgfSBlbHNlIGlmIChzdHlsZS0+cnRsICYmICFyZW5kZXJlci0+QVRTVU1pcnJvcnMpIHsK
LSAgICAgICAgc3dhcHBlZFJ1biA9IGFwcGx5TWlycm9yaW5nVG9SdW4ocnVuKTsKLSAgICAgICAg
YVJ1biA9ICZzd2FwcGVkUnVuOwogICAgIH0KIAogICAgIGZyb20gPSBhUnVuLT5mcm9tOwpAQCAt
MTQ0MSw3ICsxNDk2LDcgQEAgc3RhdGljIHZvaWQgQVRTVV9kcmF3KFdlYlRleHRSZW5kZXJlciAq
cgogCiAgICAgZGlzcG9zZUFUU1VMYXlvdXRQYXJhbWV0ZXJzKCZwYXJhbXMpOwogICAgIAotICAg
IGlmIChzdHlsZS0+ZGlyZWN0aW9uYWxPdmVycmlkZSB8fCAoc3R5bGUtPnJ0bCAmJiAhcmVuZGVy
ZXItPkFUU1VNaXJyb3JzKSkKKyAgICBpZiAoc3R5bGUtPmRpcmVjdGlvbmFsT3ZlcnJpZGUpCiAg
ICAgICAgIGZyZWUoKHZvaWQgKilzd2FwcGVkUnVuLmNoYXJhY3RlcnMpOwogfQogCkBAIC0xNDU1
LDkgKzE1MTAsNiBAQCBzdGF0aWMgaW50IEFUU1VfcG9pbnRUb09mZnNldChXZWJUZXh0UmVuCiAg
ICAgaWYgKHN0eWxlLT5kaXJlY3Rpb25hbE92ZXJyaWRlKSB7CiAgICAgICAgIHN3YXBwZWRSdW4g
PSBhZGREaXJlY3Rpb25hbE92ZXJyaWRlKGFSdW4sIHN0eWxlLT5ydGwpOwogICAgICAgICBhUnVu
ID0gJnN3YXBwZWRSdW47Ci0gICAgfSBlbHNlIGlmIChzdHlsZS0+cnRsICYmICFyZW5kZXJlci0+
QVRTVU1pcnJvcnMpIHsKLSAgICAgICAgc3dhcHBlZFJ1biA9IGFwcGx5TWlycm9yaW5nVG9SdW4o
YVJ1bik7Ci0gICAgICAgIGFSdW4gPSAmc3dhcHBlZFJ1bjsKICAgICB9CiAKICAgICBBVFNVTGF5
b3V0UGFyYW1ldGVycyBwYXJhbXM7CkBAIC0xNDgwLDcgKzE1MzIsNyBAQCBzdGF0aWMgaW50IEFU
U1VfcG9pbnRUb09mZnNldChXZWJUZXh0UmVuCiAKICAgICBkaXNwb3NlQVRTVUxheW91dFBhcmFt
ZXRlcnMoJnBhcmFtcyk7CiAgICAgCi0gICAgaWYgKHN0eWxlLT5kaXJlY3Rpb25hbE92ZXJyaWRl
IHx8IChzdHlsZS0+cnRsICYmICFyZW5kZXJlci0+QVRTVU1pcnJvcnMpKQorICAgIGlmIChzdHls
ZS0+ZGlyZWN0aW9uYWxPdmVycmlkZSkKICAgICAgICAgZnJlZSgodm9pZCAqKXN3YXBwZWRSdW4u
Y2hhcmFjdGVycyk7CiAKICAgICByZXR1cm4gb2Zmc2V0IC0gYVJ1bi0+ZnJvbTsKQEAgLTE2MjQs
MjAgKzE2NzYsNiBAQCBzdGF0aWMgdm9pZCBpbml0aWFsaXplV2lkdGhJdGVyYXRvcihXaWR0CiAg
ICAgfQogfQogCi1zdGF0aWMgdm9pZCBjcmVhdGVBVFNVTGF5b3V0UGFyYW1ldGVycyhBVFNVTGF5
b3V0UGFyYW1ldGVycyAqcGFyYW1zLCBXZWJUZXh0UmVuZGVyZXIgKnJlbmRlcmVyLCBjb25zdCBX
ZWJDb3JlVGV4dFJ1biAqcnVuLCBjb25zdCBXZWJDb3JlVGV4dFN0eWxlICpzdHlsZSkgCi17Ci0g
ICAgcGFyYW1zLT5yZW5kZXJlciA9IHJlbmRlcmVyOwotICAgIHBhcmFtcy0+cnVuID0gcnVuOwot
ICAgIHBhcmFtcy0+c3R5bGUgPSBzdHlsZTsKLSAgICBwYXJhbXMtPmxheW91dCA9IGNyZWF0ZUFU
U1VUZXh0TGF5b3V0KHJlbmRlcmVyLCBydW4sIHN0eWxlKTsKLSAgICBBVFNVU2V0VGV4dExheW91
dFJlZkNvbihwYXJhbXMtPmxheW91dCwgKFVJbnQzMilwYXJhbXMpOwotfQotCi1zdGF0aWMgdm9p
ZCBkaXNwb3NlQVRTVUxheW91dFBhcmFtZXRlcnMoQVRTVUxheW91dFBhcmFtZXRlcnMgKnBhcmFt
cykKLXsKLSAgICBBVFNVRGlzcG9zZVRleHRMYXlvdXQocGFyYW1zLT5sYXlvdXQpOwotfQotCiBz
dGF0aWMgVUNoYXIzMiBub3JtYWxpemVWb2ljaW5nTWFya3MoV2lkdGhJdGVyYXRvciAqaXRlcmF0
b3IpCiB7CiAgICAgdW5zaWduZWQgY3VycmVudENoYXJhY3RlciA9IGl0ZXJhdG9yLT5jdXJyZW50
Q2hhcmFjdGVyOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>4967</attachid>
            <date>2005-12-05 07:59:20 -0800</date>
            <delta_ts>2005-12-18 10:54:32 -0800</delta_ts>
            <desc>3. disable kerning and some ligatures in the ATSUI code path</desc>
            <filename>5166_step3.patch</filename>
            <type>text/plain</type>
            <size>2265</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">LS0tIFdlYlRleHRSZW5kZXJlci0yLm0JMjAwNS0xMS0yOSAyMToyODoyMS4wMDAwMDAwMDAgKzAy
MDAKKysrIFdlYlRleHRSZW5kZXJlci0zLm0JMjAwNS0xMS0yOSAyMToyODoyOS4wMDAwMDAwMDAg
KzAyMDAKQEAgLTExNzIsMTAgKzExNzIsMTEgQEAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZUFUU1VT
dHlsZShXZWJUZXh0UgogICAgICAgICAKICAgICAgICAgQ0dBZmZpbmVUcmFuc2Zvcm0gdHJhbnNm
b3JtID0gQ0dBZmZpbmVUcmFuc2Zvcm1NYWtlU2NhbGUoMSwgLTEpOwogICAgICAgICBGaXhlZCBm
b250U2l6ZSA9IEZsb2F0VG9GaXhlZChbcmVuZGVyZXItPmZvbnQuZm9udCBwb2ludFNpemVdKTsK
LSAgICAgICAgQVRTVUF0dHJpYnV0ZVRhZyBzdHlsZVRhZ3NbXSA9IHsga0FUU1VTaXplVGFnLCBr
QVRTVUZvbnRUYWcsIGtBVFNVRm9udE1hdHJpeFRhZ307Ci0gICAgICAgIEJ5dGVDb3VudCBzdHls
ZVNpemVzW10gPSB7ICBzaXplb2YoRml4ZWQpLCBzaXplb2YoQVRTVUZvbnRJRCksIHNpemVvZihD
R0FmZmluZVRyYW5zZm9ybSkgfTsKLSAgICAgICAgQVRTVUF0dHJpYnV0ZVZhbHVlUHRyIHN0eWxl
VmFsdWVzW10gPSB7ICZmb250U2l6ZSwgJmZvbnRJRCwgJnRyYW5zZm9ybSAgfTsKLSAgICAgICAg
c3RhdHVzID0gQVRTVVNldEF0dHJpYnV0ZXMocmVuZGVyZXItPl9BVFNVU3R5bGUsIDMsIHN0eWxl
VGFncywgc3R5bGVTaXplcywgc3R5bGVWYWx1ZXMpOworICAgICAgICBGcmFjdCBrZXJuaW5nSW5o
aWJpdEZhY3RvciA9IEZsb2F0VG9GcmFjdCgxLjApOworICAgICAgICBBVFNVQXR0cmlidXRlVGFn
IHN0eWxlVGFnc1s0XSA9IHsga0FUU1VTaXplVGFnLCBrQVRTVUZvbnRUYWcsIGtBVFNVRm9udE1h
dHJpeFRhZywga0FUU1VLZXJuaW5nSW5oaWJpdEZhY3RvclRhZyB9OworICAgICAgICBCeXRlQ291
bnQgc3R5bGVTaXplc1s0XSA9IHsgc2l6ZW9mKEZpeGVkKSwgc2l6ZW9mKEFUU1VGb250SUQpLCBz
aXplb2YoQ0dBZmZpbmVUcmFuc2Zvcm0pLCBzaXplb2YoRnJhY3QpIH07CisgICAgICAgIEFUU1VB
dHRyaWJ1dGVWYWx1ZVB0ciBzdHlsZVZhbHVlc1s0XSA9IHsgJmZvbnRTaXplLCAmZm9udElELCAm
dHJhbnNmb3JtLCAma2VybmluZ0luaGliaXRGYWN0b3IgfTsKKyAgICAgICAgc3RhdHVzID0gQVRT
VVNldEF0dHJpYnV0ZXMocmVuZGVyZXItPl9BVFNVU3R5bGUsIDQsIHN0eWxlVGFncywgc3R5bGVT
aXplcywgc3R5bGVWYWx1ZXMpOwogICAgICAgICBpZiAoc3RhdHVzICE9IG5vRXJyKQogICAgICAg
ICAgICAgRkFUQUxfQUxXQVlTKCJBVFNVU2V0QXR0cmlidXRlcyBmYWlsZWQgKCVkKSIsIHN0YXR1
cyk7CiAgICAgICAgIHN0YXR1cyA9IEFUU0ZvbnRHZXRUYWJsZShmb250SUQsICdwcm9wJywgMCwg
MCwgMCwgJnByb3BUYWJsZVNpemUpOwpAQCAtMTE4Niw2ICsxMTg3LDE1IEBAIHN0YXRpYyB2b2lk
IGluaXRpYWxpemVBVFNVU3R5bGUoV2ViVGV4dFIKICAgICAgICAgZWxzZQogICAgICAgICAgICAg
RkFUQUxfQUxXQVlTKCJBVFNGb250R2V0VGFibGUgZmFpbGVkICglZCkiLCBzdGF0dXMpOwogCisg
ICAgICAgIC8vIFR1cm4gb2ZmIGxpZ2F0dXJlcyBzdWNoIGFzICdmaScgdG8gbWF0Y2ggdGhlIENH
IGNvZGUgcGF0aCdzIGJlaGF2aW9yLCBidXQgZG9uJ3QgZG8gaXQgdG9vCisgICAgICAgIC8vIGFn
Z3Jlc3NpdmVseTogaWYgdGhlIGZvbnQgZG9lc24ndCBjb250YWluICdhJywgdGhlbiBhc3N1bWUg
dGhhdCBhbnkgbGlnYXR1cmVzIGl0IGNvbnRhaW5zIGFyZQorICAgICAgICAvLyBpbiBjaGFyYWN0
ZXJzIHRoYXQgYWx3YXlzIGdvIHRocm91Z2ggQVRTVUksIGFuZCB0aGVyZWZvcmUgYWxsb3cgdGhl
bS4gR2VlemEgUHJvIGlzIGFuIGV4YW1wbGUuCisgICAgICAgIGlmIChbW3JlbmRlcmVyLT5mb250
LmZvbnQgY292ZXJlZENoYXJhY3RlclNldF0gY2hhcmFjdGVySXNNZW1iZXI6J2EnXSkgeworICAg
ICAgICAgICAgQVRTVUZvbnRGZWF0dXJlVHlwZSBmZWF0dXJlVHlwZXNbXSA9IHsga0xpZ2F0dXJl
c1R5cGUgfTsKKyAgICAgICAgICAgIEFUU1VGb250RmVhdHVyZVNlbGVjdG9yIGZlYXR1cmVTZWxl
Y3RvcnNbXSA9IHsga0NvbW1vbkxpZ2F0dXJlc09mZlNlbGVjdG9yIH07CisgICAgICAgICAgICBz
dGF0dXMgPSBBVFNVU2V0Rm9udEZlYXR1cmVzKHJlbmRlcmVyLT5fQVRTVVN0eWxlLCAxLCBmZWF0
dXJlVHlwZXMsIGZlYXR1cmVTZWxlY3RvcnMpOworICAgICAgICB9CisKICAgICAgICAgcmVuZGVy
ZXItPkFUU1VTdHlsZUluaXRpYWxpemVkID0gWUVTOwogICAgIH0KIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>4968</attachid>
            <date>2005-12-05 08:00:06 -0800</date>
            <delta_ts>2005-12-18 14:12:03 -0800</delta_ts>
            <desc>4. render synthetic bold and oblique</desc>
            <filename>5166_step4.patch</filename>
            <type>text/plain</type>
            <size>5767</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">LS0tIFdlYlRleHRSZW5kZXJlci0zLm0JMjAwNS0xMS0yOSAyMToyODoyOS4wMDAwMDAwMDAgKzAy
MDAKKysrIFdlYlRleHRSZW5kZXJlci00Lm0JMjAwNS0xMS0yOSAyMToyODozNC4wMDAwMDAwMDAg
KzAyMDAKQEAgLTQ2LDYgKzQ2LDcgQEAKIC8vIEZJWE1FOiBGQVRBTF9BTFdBWVMgc2VlbXMgbGlr
ZSBhIGJhZCBpZGVhOyBsZXRzIHN0b3AgdXNpbmcgaXQuCiAKICNkZWZpbmUgU01BTExDQVBTX0ZP
TlRTSVpFX01VTFRJUExJRVIgMC43ZgorI2RlZmluZSBTWU5USEVUSUNfT0JMSVFVRV9BTkdMRSAx
NAogCiAvLyBTaG91bGQgYmUgbW9yZSB0aGFuIGVub3VnaCBmb3Igbm9ybWFsIHVzYWdlLgogI2Rl
ZmluZSBOVU1fU1VCU1RJVFVURV9GT05UX01BUFMgMTAKQEAgLTExNCw2ICsxMTUsOCBAQCB0eXBl
ZGVmIHN0cnVjdCBBVFNVTGF5b3V0UGFyYW1ldGVycwogICAgIEFUU1VUZXh0TGF5b3V0IGxheW91
dDsKICAgICBXZWJUZXh0UmVuZGVyZXIgKipyZW5kZXJlcnM7CiAgICAgVW5pQ2hhciAqY2hhckJ1
ZmZlcjsKKyAgICBib29sIGhhc1N5bnRoZXRpY0JvbGQ7CisgICAgYm9vbCBzeW50aGV0aWNCb2xk
UGFzczsKIH0gQVRTVUxheW91dFBhcmFtZXRlcnM7CiAKIHN0YXRpYyBXZWJUZXh0UmVuZGVyZXIg
KnJlbmRlcmVyRm9yQWx0ZXJuYXRlRm9udChXZWJUZXh0UmVuZGVyZXIgKiwgV2ViQ29yZUZvbnQp
OwpAQCAtMjM5LDYgKzI0Miw5IEBAIHN0YXRpYyBPU1N0YXR1cyBvdmVycmlkZUxheW91dE9wZXJh
dGlvbigKICAgICAgICAgQnl0ZUNvdW50IG9mZnNldCA9IGxheW91dFJlY29yZHNbMF0ub3JpZ2lu
YWxPZmZzZXQ7CiAgICAgICAgIG5leHRDaCA9ICooVW5pQ2hhciAqKSgoKGNoYXIgKiljaGFyYWN0
ZXJzKStvZmZzZXQpOwogICAgICAgICBib29sIHNob3VsZFJvdW5kOworICAgICAgICBib29sIHN5
bnRoZXRpY0JvbGRQYXNzID0gcGFyYW1zLT5zeW50aGV0aWNCb2xkUGFzczsKKyAgICAgICAgRml4
ZWQgc3ludGhldGljQm9sZE9mZnNldDsKKyAgICAgICAgQVRTR2x5cGhSZWYgc3BhY2VHbHlwaDsK
ICAgICAgICAgLy8gSW4gdGhlIENvcmVHcmFwaGljcyBjb2RlIHBhdGgsIHRoZSByb3VuZGluZyBo
YWNrIGlzIGFwcGxpZWQgaW4gbG9naWNhbCBvcmRlci4KICAgICAgICAgLy8gSGVyZSBpdCBpcyBh
cHBsaWVkIGluIHZpc3VhbCBsZWZ0LXRvLXJpZ2h0IG9yZGVyLCB3aGljaCBtYXkgYmUgYmV0dGVy
LgogICAgICAgICBJdGVtQ291bnQgaTsKQEAgLTI1MSw2ICsyNTcsMTAgQEAgc3RhdGljIE9TU3Rh
dHVzIG92ZXJyaWRlTGF5b3V0T3BlcmF0aW9uKAogICAgICAgICAgICAgICAgIC8vIHRvIGJlICJy
b3VuZCBlYWNoIGdseXBoJ3Mgd2lkdGggdG8gdGhlIG5lYXJlc3QgaW50ZWdlciIuIFRoaXMgaXMg
bm90IHRoZSBzYW1lIGFzIEFUU1VJCiAgICAgICAgICAgICAgICAgLy8gZG9lcyBpbiBhbnkgb2Yg
aXRzIGRldmljZS1tZXRyaWNzIG1vZGVzLgogICAgICAgICAgICAgICAgIHNob3VsZFJvdW5kID0g
W3JlbmRlcmVyLT5mb250LmZvbnQgcmVuZGVyaW5nTW9kZV0gPT0gTlNGb250QW50aWFsaWFzZWRJ
bnRlZ2VyQWR2YW5jZW1lbnRzUmVuZGVyaW5nTW9kZTsKKyAgICAgICAgICAgICAgICBpZiAoc3lu
dGhldGljQm9sZFBhc3MpIHsKKyAgICAgICAgICAgICAgICAgICAgc3ludGhldGljQm9sZE9mZnNl
dCA9IEZsb2F0VG9GaXhlZChyZW5kZXJlci0+c3ludGhldGljQm9sZE9mZnNldCk7CisgICAgICAg
ICAgICAgICAgICAgIHNwYWNlR2x5cGggPSByZW5kZXJlci0+c3BhY2VHbHlwaDsKKyAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBjaCA9IG5leHRDaDsKICAgICAg
ICAgICAgIG9mZnNldCA9IGxheW91dFJlY29yZHNbaV0ub3JpZ2luYWxPZmZzZXQ7CkBAIC0yNzMs
NiArMjgzLDEyIEBAIHN0YXRpYyBPU1N0YXR1cyBvdmVycmlkZUxheW91dE9wZXJhdGlvbigKICAg
ICAgICAgICAgICAgICAgICAgICAgIHx8IHN0eWxlLT5hcHBseVJ1blJvdW5kaW5nCiAgICAgICAg
ICAgICAgICAgICAgICAgICB8fCAocnVuLT50byA8IChpbnQpcnVuLT5sZW5ndGggJiYgaXNSb3Vu
ZGluZ0hhY2tDaGFyYWN0ZXIoY2hhcmFjdGVyc1tydW4tPnRvIC0gcnVuLT5mcm9tXSkpKQogICAg
ICAgICAgICAgICAgICAgICBsYXN0QWRqdXN0ZWRQb3MgPSBjZWlsZihsYXN0QWRqdXN0ZWRQb3Mp
OworICAgICAgICAgICAgaWYgKHN5bnRoZXRpY0JvbGRQYXNzKSB7CisgICAgICAgICAgICAgICAg
aWYgKHN5bnRoZXRpY0JvbGRPZmZzZXQpCisgICAgICAgICAgICAgICAgICAgIGxheW91dFJlY29y
ZHNbaS0xXS5yZWFsUG9zICs9IHN5bnRoZXRpY0JvbGRPZmZzZXQ7CisgICAgICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgICAgICBsYXlvdXRSZWNvcmRzW2ktMV0uZ2x5cGhJRCA9IHNw
YWNlR2x5cGg7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBsYXlvdXRSZWNvcmRzW2ldLnJl
YWxQb3MgPSBGbG9hdFRvRml4ZWQobGFzdEFkanVzdGVkUG9zKTsKICAgICAgICAgfQogICAgICAg
ICAKQEAgLTgwNiw3ICs4MjIsNyBAQCBzdGF0aWMgdm9pZCBkcmF3R2x5cGhzKE5TRm9udCAqZm9u
dCwgTlNDCiAgICAgICAgIG1hdHJpeC5kID0gLW1hdHJpeC5kOwogICAgIH0KICAgICBpZiAoc3lu
dGhldGljT2JsaXF1ZSkKLSAgICAgICAgbWF0cml4ID0gQ0dBZmZpbmVUcmFuc2Zvcm1Db25jYXQo
bWF0cml4LCBDR0FmZmluZVRyYW5zZm9ybU1ha2UoMSwgMCwgLXRhbmYoMTQgKiBhY29zZigwKSAv
IDkwKSwgMSwgMCwgMCkpOyAKKyAgICAgICAgbWF0cml4ID0gQ0dBZmZpbmVUcmFuc2Zvcm1Db25j
YXQobWF0cml4LCBDR0FmZmluZVRyYW5zZm9ybU1ha2UoMSwgMCwgLXRhbmYoU1lOVEhFVElDX09C
TElRVUVfQU5HTEUgKiBhY29zZigwKSAvIDkwKSwgMSwgMCwgMCkpOyAKICAgICBDR0NvbnRleHRT
ZXRUZXh0TWF0cml4KGNnQ29udGV4dCwgbWF0cml4KTsKIAogICAgIFdLU2V0Q0dGb250UmVuZGVy
aW5nTW9kZShjZ0NvbnRleHQsIGRyYXdGb250KTsKQEAgLTExNzEsNiArMTE4Nyw4IEBAIHN0YXRp
YyB2b2lkIGluaXRpYWxpemVBVFNVU3R5bGUoV2ViVGV4dFIKICAgICAgICAgfQogICAgICAgICAK
ICAgICAgICAgQ0dBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtID0gQ0dBZmZpbmVUcmFuc2Zvcm1N
YWtlU2NhbGUoMSwgLTEpOworICAgICAgICBpZiAocmVuZGVyZXItPmZvbnQuc3ludGhldGljT2Js
aXF1ZSkKKyAgICAgICAgICAgIHRyYW5zZm9ybSA9IENHQWZmaW5lVHJhbnNmb3JtQ29uY2F0KHRy
YW5zZm9ybSwgQ0dBZmZpbmVUcmFuc2Zvcm1NYWtlKDEsIDAsIC10YW5mKFNZTlRIRVRJQ19PQkxJ
UVVFX0FOR0xFICogYWNvc2YoMCkgLyA5MCksIDEsIDAsIDApKTsgCiAgICAgICAgIEZpeGVkIGZv
bnRTaXplID0gRmxvYXRUb0ZpeGVkKFtyZW5kZXJlci0+Zm9udC5mb250IHBvaW50U2l6ZV0pOwog
ICAgICAgICBGcmFjdCBrZXJuaW5nSW5oaWJpdEZhY3RvciA9IEZsb2F0VG9GcmFjdCgxLjApOwog
ICAgICAgICBBVFNVQXR0cmlidXRlVGFnIHN0eWxlVGFnc1s0XSA9IHsga0FUU1VTaXplVGFnLCBr
QVRTVUZvbnRUYWcsIGtBVFNVRm9udE1hdHJpeFRhZywga0FUU1VLZXJuaW5nSW5oaWJpdEZhY3Rv
clRhZyB9OwpAQCAtMTIxMCw2ICsxMjI4LDcgQEAgc3RhdGljIHZvaWQgY3JlYXRlQVRTVUxheW91
dFBhcmFtZXRlcnMoQQogICAgIHBhcmFtcy0+cmVuZGVyZXJzID0gcmVuZGVyZXJzOwogICAgIFVu
aUNoYXIgKmNoYXJCdWZmZXIgPSAoc3R5bGUtPnNtYWxsQ2FwcyB8fCAoc3R5bGUtPnJ0bCAmJiAh
cmVuZGVyZXItPkFUU1VNaXJyb3JzKSkgPyBtYWxsb2MocnVuLT5sZW5ndGggKiBzaXplb2YoVW5p
Q2hhcikpIDogMDsKICAgICBwYXJhbXMtPmNoYXJCdWZmZXIgPSBjaGFyQnVmZmVyOworICAgIHBh
cmFtcy0+c3ludGhldGljQm9sZFBhc3MgPSBOTzsKIAogICAgIC8vIFRoZSBvbmx5IENvY29hIGNh
bGxzIGhlcmUgYXJlIHRvIE5TR3JhcGhpY3NDb250ZXh0LCB3aGljaCBkb2VzIG5vdCByYWlzZSBl
eGNlcHRpb25zLgogCkBAIC0xMjIyLDggKzEyNDEsNiBAQCBzdGF0aWMgdm9pZCBjcmVhdGVBVFNV
TGF5b3V0UGFyYW1ldGVycyhBCiAgICAgLy8gRklYTUU6IFRoaXMgaXMgY3VycmVudGx5IG1pc3Np
bmcgdGhlIGZvbGxvd2luZyByZXF1aXJlZCBmZWF0dXJlcyB0aGF0IHRoZSBDb3JlR3JhcGhpY3Mg
Y29kZSBwYXRoIGhhczoKICAgICAvLyAtIFxuLCBcdCwgYW5kIG5vbmJyZWFraW5nIHNwYWNlIHJl
bmRlciBhcyBhIHNwYWNlLgogICAgIC8vIC0gT3RoZXIgY29udHJvbCBjaGFyYWN0ZXJzIGRvIG5v
dCByZW5kZXIgKG90aGVyIGNvZGUgcGF0aCB1c2VzIHplcm8td2lkdGggc3BhY2VzKS4KLSAgICAv
LyAtIFN5bnRoZXNpemVkIGJvbGQuCi0gICAgLy8gLSBTeW50aGVzaXplZCBvYmxpcXVlLgogCiAg
ICAgVW5pQ2hhckNvdW50IHRvdGFsTGVuZ3RoID0gcnVuLT5sZW5ndGg7CiAgICAgVW5pQ2hhckFy
cmF5T2Zmc2V0IHJ1blRvID0gKHJ1bi0+dG8gPT0gLTEgPyB0b3RhbExlbmd0aCA6ICh1bnNpZ25l
ZCBpbnQpcnVuLT50byk7CkBAIC0xMjY1LDYgKzEyODIsNyBAQCBzdGF0aWMgdm9pZCBjcmVhdGVB
VFNVTGF5b3V0UGFyYW1ldGVycyhBCiAgICAgaWYgKHN0YXR1cyAhPSBub0VycikKICAgICAgICAg
RkFUQUxfQUxXQVlTKCJBVFNVU2V0VHJhbnNpZW50Rm9udE1hdGNoaW5nIGZhaWxlZCglZCkiLCBz
dGF0dXMpOwogCisgICAgcGFyYW1zLT5oYXNTeW50aGV0aWNCb2xkID0gTk87CiAgICAgQVRTVUZv
bnRJRCBBVFNVU3Vic3RpdHV0ZUZvbnQ7CiAgICAgVW5pQ2hhckFycmF5T2Zmc2V0IHN1YnN0aXR1
dGVPZmZzZXQgPSBydW5Gcm9tOwogICAgIFVuaUNoYXJDb3VudCBzdWJzdGl0dXRlTGVuZ3RoOwpA
QCAtMTMyNSw2ICsxMzQzLDggQEAgc3RhdGljIHZvaWQgY3JlYXRlQVRTVUxheW91dFBhcmFtZXRl
cnMoQQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAg
ICAgIHJlbmRlcmVyc1tpXSA9IHI7CisgICAgICAgICAgICBpZiAocmVuZGVyZXJzW2ldLT5zeW50
aGV0aWNCb2xkT2Zmc2V0KQorICAgICAgICAgICAgICAgIHBhcmFtcy0+aGFzU3ludGhldGljQm9s
ZCA9IFlFUzsKICAgICAgICAgfQogICAgICAgICBzdWJzdGl0dXRlT2Zmc2V0ICs9IHN1YnN0aXR1
dGVMZW5ndGg7CiAgICAgfQpAQCAtMTQ5NSw2ICsxNTE1LDEyIEBAIHN0YXRpYyB2b2lkIEFUU1Vf
ZHJhdyhXZWJUZXh0UmVuZGVyZXIgKnIKICAgICBpZiAoIWZsaXBwZWQpCiAgICAgICAgIENHQ29u
dGV4dFNjYWxlQ1RNKGNvbnRleHQsIDEuMCwgLTEuMCk7CiAgICAgc3RhdHVzID0gQVRTVURyYXdU
ZXh0KHBhcmFtcy5sYXlvdXQsIGFSdW4tPmZyb20sIHJ1bkxlbmd0aCwgMCwgMCk7CisgICAgaWYg
KHN0YXR1cyA9PSBub0VyciAmJiBwYXJhbXMuaGFzU3ludGhldGljQm9sZCkgeworICAgICAgICAv
LyBGb3JjZSByZWxheW91dCBmb3IgdGhlIGJvbGQgcGFzcworICAgICAgICBBVFNVQ2xlYXJMYXlv
dXRDYWNoZShwYXJhbXMubGF5b3V0LCAwKTsKKyAgICAgICAgcGFyYW1zLnN5bnRoZXRpY0JvbGRQ
YXNzID0gWUVTOworICAgICAgICBzdGF0dXMgPSBBVFNVRHJhd1RleHQocGFyYW1zLmxheW91dCwg
YVJ1bi0+ZnJvbSwgcnVuTGVuZ3RoLCAwLCAwKTsKKyAgICB9CiAgICAgaWYgKCFmbGlwcGVkKQog
ICAgICAgICBDR0NvbnRleHRTY2FsZUNUTShjb250ZXh0LCAxLjAsIC0xLjApOwogICAgIENHQ29u
dGV4dFRyYW5zbGF0ZUNUTShjb250ZXh0LCAtZ2VvbWV0cnktPnBvaW50LngsIC1nZW9tZXRyeS0+
cG9pbnQueSk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>