<?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>4355</bug_id>
          
          <creation_ts>2005-08-09 10:04:52 -0700</creation_ts>
          <short_desc>CSS1: use small-caps variant font if it&apos;s available</short_desc>
          <delta_ts>2015-12-10 00:47:16 -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>CSS</component>
          <version>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>149774</dup_id>
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Nicholas Shanks">nickshanks</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          <cc>ap</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>emacemac7</cc>
    
    <cc>eric</cc>
    
    <cc>ian</cc>
    
    <cc>justin.garcia</cc>
    
    <cc>mitz</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>robert</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>16265</commentid>
    <comment_count>0</comment_count>
    <who name="Nicholas Shanks">nickshanks</who>
    <bug_when>2005-08-09 10:04:52 -0700</bug_when>
    <thetext>A simple patch which selects a small-caps variant of a parent font if there&apos;s one available, and uses 70% 
reduction otherwise.

There are a couple of relavent issues which all match existing behaviour, and have not been addressed 
by this patch.
• The small-caps font is assumed to have all of the lower-case letters that are present in the parent 
font.
• This patch only uses the small-caps font for rendering lower-case letters of bicameral scripts. Glyphs 
for characters such as parentheses, numbers, currency symbols etc. are still taken from the parent font 
and may be oversized/misaligned as a result.

I intend to address these issues in a future patch. The patch presented here is in the simplest form I 
could provide, as the more thorough patch I have been working on has had problems with mismatching 
glyph repertoires and fallback fonts.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>16266</commentid>
    <comment_count>1</comment_count>
      <attachid>3287</attachid>
    <who name="Nicholas Shanks">nickshanks</who>
    <bug_when>2005-08-09 10:05:57 -0700</bug_when>
    <thetext>Created attachment 3287
small-caps patch 1.0</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>16267</commentid>
    <comment_count>2</comment_count>
      <attachid>3288</attachid>
    <who name="Nicholas Shanks">nickshanks</who>
    <bug_when>2005-08-09 10:38:22 -0700</bug_when>
    <thetext>Created attachment 3288
Sample output before &amp; after

This is a screenshot of the results of applying this patch, before (top three)
and after (bottom three).
The HTML being rendered is reproduced below.
You will see that in the before set, rows 2 and 3 are identical, whereas in the
second set, the lower-case letters on row 2 now match the lower-case letters
from row one, whilst the rest of row 2 remains the same. To demonstrate
fallback, the pound sign (included in Prospero, but not in ProsperoSmallCaps)
and euro sign (not included in either) are shown.

&lt;html&gt;
&lt;style type=&quot;text/css&quot;&gt;
	html { font: 18pt Prospero; }
	.true { font-family: ProsperoSmallCaps; }
	.css { font-variant: small-caps; }
	.simulate &gt; span { text-transform: uppercase; font-size: 70%; }
&lt;/style&gt;
&lt;div class=&quot;true&quot;&gt;This is a sample of Small Caps £€&lt;/div&gt;
&lt;div class=&quot;css&quot;&gt;This is a sample of Small Caps £€&lt;/div&gt;
&lt;div class=&quot;simulate&quot;&gt;T&lt;span&gt;his&lt;/span&gt; &lt;span&gt;is&lt;/span&gt; &lt;span&gt;a&lt;/span&gt;
&lt;span&gt;sample&lt;/span&gt; &lt;span&gt;of&lt;/span&gt; S&lt;span&gt;mall&lt;/span&gt; C&lt;span&gt;aps&lt;/span&gt;
£€&lt;/div&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>16271</commentid>
    <comment_count>3</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2005-08-09 11:48:42 -0700</bug_when>
    <thetext>Looks to me like the test cases will work as layout tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>16272</commentid>
    <comment_count>4</comment_count>
      <attachid>3287</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2005-08-09 11:49:19 -0700</bug_when>
    <thetext>Comment on attachment 3287
small-caps patch 1.0

Please fix formatting. You need a space between the &quot;if&quot; and the &quot;(&quot; on lines
like:

+		 if([renderer _capitalizeSmallCaps])

Also, seems better to just make the capitalizeSmallCaps field @public rather
than calling a method on every character to check that boolean.

Otherwise, looks good, and we can do review+ if we also have a layout test
demonstrating the correct behavior -- they metrics in the layout test will be
the telltale about whether the correct font and glyph was chosen.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>16304</commentid>
    <comment_count>5</comment_count>
    <who name="Nicholas Shanks">nickshanks</who>
    <bug_when>2005-08-09 13:45:33 -0700</bug_when>
    <thetext>Actually, that patch fails miserably for AAT fonts with kLetterCaseType: kSmallCapsSelector available (Big 
Caslon, Didot, Hoefler Text, etc). The returned font is the same, and the regular lowercase glyphs get 
chosen from the unicode glyph map. I have fixed this for the ATSU branch (in 
_createATSUTextLayoutForRun, modifying the _ATSUSstyle object), but am not sure how to go about fixing 
it via CG yet. Since CG is by default used for all characters below U+0300 I had to force the ATSU branch 
to test this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>16323</commentid>
    <comment_count>6</comment_count>
      <attachid>3303</attachid>
    <who name="Nicholas Shanks">nickshanks</who>
    <bug_when>2005-08-09 17:43:52 -0700</bug_when>
    <thetext>Created attachment 3303
small-caps patch 2.0

This adds support for AAT/OpenType small-caps features via the ATSUI codepath,
variant typefaces and 70% simulations still go down the CG path. Maciej
suggested I try setting the style in fillStyleWithAttributes too, I will look
at that tomorrow.

I am wondering what fonts to use in the regression test. There are AAT
small-caps fonts which shipped with the OS (Hoefler Text is striking), and
fonts without small-caps, for the 70% mode, but there doesn&apos;t appear to be any
common font whose small-caps are available via an alternative typeface. The
example I used above, Prospero, is the only one I have.

My current test HTML looks like this:

&lt;html&gt;
&lt;style type=&quot;text/css&quot;&gt;
	.hoefler { font: 36pt &quot;Hoefler Text&quot;; }
	.prospero { font: 36pt &quot;Prospero&quot;; }
	.prospero &gt; .true { font-family: &quot;ProsperoSmallCaps&quot;; }
	.lucidagrande { font: 36pt &quot;Lucida Grande&quot;; }
	.css { font-variant: small-caps; }
	.simulate &gt; span { text-transform: uppercase; font-size: 70%; }
&lt;/style&gt;
&lt;div class=&quot;hoefler&quot;&gt;
	&lt;div class=&quot;css&quot;&gt;This is a sample of Small Caps £€&lt;/div&gt;
	&lt;div class=&quot;simulate&quot;&gt;T&lt;span&gt;his&lt;/span&gt; &lt;span&gt;is&lt;/span&gt; &lt;span&gt;a&lt;/span&gt;
&lt;span&gt;sample&lt;/span&gt; &lt;span&gt;of&lt;/span&gt; S&lt;span&gt;mall&lt;/span&gt; C&lt;span&gt;aps&lt;/span&gt;
£€&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;prospero&quot;&gt;
	&lt;div class=&quot;true&quot;&gt;This is a sample of Small Caps £€&lt;/div&gt;
	&lt;div class=&quot;css&quot;&gt;This is a sample of Small Caps £€&lt;/div&gt;
	&lt;div class=&quot;simulate&quot;&gt;T&lt;span&gt;his&lt;/span&gt; &lt;span&gt;is&lt;/span&gt; &lt;span&gt;a&lt;/span&gt;
&lt;span&gt;sample&lt;/span&gt; &lt;span&gt;of&lt;/span&gt; S&lt;span&gt;mall&lt;/span&gt; C&lt;span&gt;aps&lt;/span&gt;
£€&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;lucidagrande css&quot;&gt;This is a sample of Small Caps £€&lt;/div&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>16324</commentid>
    <comment_count>7</comment_count>
      <attachid>3304</attachid>
    <who name="Nicholas Shanks">nickshanks</who>
    <bug_when>2005-08-09 17:48:43 -0700</bug_when>
    <thetext>Created attachment 3304
small-caps patch 2.0.1

forgot to take out an NSLog() call</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>16335</commentid>
    <comment_count>8</comment_count>
      <attachid>3310</attachid>
    <who name="Nicholas Shanks">nickshanks</who>
    <bug_when>2005-08-10 05:42:28 -0700</bug_when>
    <thetext>Created attachment 3310
small-caps patch 2.0.2

typecast pointer to void* in free() call and other little fixes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>16336</commentid>
    <comment_count>9</comment_count>
    <who name="Nicholas Shanks">nickshanks</who>
    <bug_when>2005-08-10 05:55:11 -0700</bug_when>
    <thetext>I have looked into supporting AAT fonts with small-caps via the CG codepath, but the ATSUStyle object 
that is created for the CG path in fillStyleWithAttributes() is then used to create an &apos;ATSStyleGroup&apos; via 
WKGetATSStyleGroup(), which is passed to WKConvertCharToGlyphs(). One of both of these Apple-internal 
functions from lbWebKitSystemInterface.a ignores AAT/OpenType font features, and thus I have no way to 
get the CG path to return the small-caps glyphs from a font without doing a lot of redundant and probably 
slow legwork myself (i.e. scanning the font for the correct glyphs, something which would require far more 
knowledge of Apple&apos;s AAT and OpenType implementations that I have).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>16358</commentid>
    <comment_count>10</comment_count>
      <attachid>3314</attachid>
    <who name="Nicholas Shanks">nickshanks</who>
    <bug_when>2005-08-10 11:52:39 -0700</bug_when>
    <thetext>Created attachment 3314
small-caps patch 2.1

Swapped algorithm around so that it checks for AAT small-caps first, which
removes an ambiguity when comparing screen and printer fonts for equality.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>16359</commentid>
    <comment_count>11</comment_count>
      <attachid>3315</attachid>
    <who name="Nicholas Shanks">nickshanks</who>
    <bug_when>2005-08-10 11:56:43 -0700</bug_when>
    <thetext>Created attachment 3315
layout-tests/fast/css/009.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>16364</commentid>
    <comment_count>12</comment_count>
      <attachid>3318</attachid>
    <who name="Nicholas Shanks">nickshanks</who>
    <bug_when>2005-08-10 12:06:05 -0700</bug_when>
    <thetext>Created attachment 3318
layout-tests/fast/css/009-expected.txt</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>16365</commentid>
    <comment_count>13</comment_count>
      <attachid>3319</attachid>
    <who name="Nicholas Shanks">nickshanks</who>
    <bug_when>2005-08-10 12:08:24 -0700</bug_when>
    <thetext>Created attachment 3319
ChangeLog entry (edit as appropriate)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>16373</commentid>
    <comment_count>14</comment_count>
      <attachid>3322</attachid>
    <who name="Nicholas Shanks">nickshanks</who>
    <bug_when>2005-08-10 12:20:30 -0700</bug_when>
    <thetext>Created attachment 3322
small-caps patch 2.1.1

more tinkering: removed redundant parameter</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>16379</commentid>
    <comment_count>15</comment_count>
      <attachid>3322</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2005-08-10 13:21:00 -0700</bug_when>
    <thetext>Comment on attachment 3322
small-caps patch 2.1.1

Looking good!

Here are the outstanding issues I see:

1) Still a few cases of &quot;if(&quot; instead of &quot;if (&quot; in this patch.

2) Using the ATSU code path is going to have a number of undesirable effects,
including incorrect handling of &quot;\n&quot; characters -- so we might not want to do
this until we fix those. I think Justin Garcia from WebKit team was just
looking at that recently.

3) I still don&apos;t see this handling cases where the small caps variant doesn&apos;t
cover all the characters needed. Can this result in a mix of two different
fonts on a page? Other browsers don&apos;t do this, so this might cause us to look
broken on pages they look fine on. Is there a reason I should not be worried
about this?

4) This:

+	 // will choke on surrogate pairs?
+//	 if(!u_isUUppercase(run-&gt;characters[i]))

is not a practical issue. I believe the function does the right thing with half
of a surrogate pair (nothing). Also, why land the u_isUUppercase check
commented out? Lets just omit it. I don&apos;t like adding commented-out code.

6) I don&apos;t understand why this patch both triggers the ATSU code path for all
&quot;true small caps&quot; cases, but also still adds true small caps support to the CG
path. We don&apos;t need to do both.

7) A simpler way to do this:

+    if(style-&gt;smallCaps &amp;&amp; simulatedSmallCaps)
+	 free((void *)capsRun.characters);

is to initialize capsRun.characters to NULL and then just leave out the if.

8) Misspelled separate in a comment &quot;variant as seperate font&quot;.

9) Please omit the uneeded cast to (void *) here:

+		 free((void *)selectors);

10) Why does small caps also set old-style numbers? Need a rationale in the
code at least so later contributors will know why we should keep this around.
And I&apos;d like to see the test case include a test of that unless it&apos;s
impossible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>16382</commentid>
    <comment_count>16</comment_count>
      <attachid>3325</attachid>
    <who name="Nicholas Shanks">nickshanks</who>
    <bug_when>2005-08-10 13:30:49 -0700</bug_when>
    <thetext>Created attachment 3325
layout-tests/fast/css/009-expected.txt

Forgot to set DYLD_FRAMEWORK_PATH when running DumpRenderTree to generate this
file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>16387</commentid>
    <comment_count>17</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2005-08-10 15:06:18 -0700</bug_when>
    <thetext>Are we regressing small-caps performance though?  The ATSUI code path is (quite literally) more than 4x 
slower than the CG code path.  If we are forced down the ATSUI code path where we weren&apos;t before, then 
performance could suffer considerably.

That may be acceptable given how rarely small-caps is used though.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>16391</commentid>
    <comment_count>18</comment_count>
    <who name="Nicholas Shanks">nickshanks</who>
    <bug_when>2005-08-10 15:29:12 -0700</bug_when>
    <thetext>In reply to comment #15:

1) Fixed.

2) Fair enough.

3) In the AAT case, the only way to tell is by comparing the glyph IDs that would be drawn before and 
after turning on the feature. And then you can&apos;t even tell if they are small caps, just that a different 
glyph is being drawn. For example Hoefler Text includes Latin small-caps, but not Cyrillic small-caps, 
even though it does have Cyrillic miniscules. The selected (non-substitute) small-caps font has no 
unicode glyph map created for it, it is simply assumed to have all characters present in the Regular 
font. I realise this is a bug and I tried to resolve it by instantiating the small-caps renderer with the 
small-caps font in it&apos;s &apos;font&apos; variable, and doing away with the smallCapsFont variable altogether. This 
however was causing segfaults and I couldn&apos;t figure out why, so I aborted that idea. I think if I tried 
again I might be able to get this idea to work, and the Regular font would be added to the fallback list 
at the top. The unicode mapping is only used on the CG path, so this bug only affects typefaces where 
the Regular and Small Caps versions are in separate fonts, and miniscules present in the Regular but 
absent in the Small Caps (e.g. Cyrilic) are used. In this instance a box is drawn. For other missing 
characters behaviour is to fall back to the Regular font at 100% without capitalisation.

4) I just copied and pasted applyMirroringToRun(), which had that comment, so I left it in as I didn&apos;t 
know the status of it. I wasn&apos;t sure if checking if the letter is not uppercase was worth it or not, I 
presume it&apos;ll be just as quick to attempt to uppercase it than to check in the first place.

5) There is no step 5!

6) The only method/function this touches which is specifically in the CG path is widthForNextCharacter
(), which is to obtain a small-caps version of the substitute font if available. You&apos;re right, I didn&apos;t see 
this as a way that it could jump from simulated/variant (CG-compatible) to AAT small-caps. I will 
change that back to always using a 70% scale for the time being. This removes the need for a separate -
smallCapsFontForFont: method, since we&apos;d no longer need to pass _fontUsed to it. I could leave that 
change in for future use on the CG path when that is possible, or I could return it to the way it was for 
the time being (and avoid a call to objc_msgsend() ).

7) Done.

8) You have keen eyes! Fixed.

9) Done. What about &quot;free((void *)capsRun.characters)&quot; leave that as is, matching syntax elsewhere?

10) Because I thought it would look nice :-) I had thought there were no system-shipped fonts that had 
both small-caps and old-style numbers as separate AAT properties, and where the old-style numbers 
also caused a change to the metrics of the string as would be required for testing. However after 
hunting a bit harder, I have found that Apple Chancery does, lining numbers are a pixel or two wider at 
48pt than the old-style numbers are, and a dollar sign which is significantly wider with lining numbers. 
It&apos;s small-caps also have none of the swashes of the regular caps, so are very visually distinct. As to 
whether the old-style numbers feature should be activated at all, well, I guess it&apos;s 50/50. I like them, 
and think they go well together. Is that enough rationale?

I will hold off from doing further changes until you&apos;ve responded to some of the open points that 
remain.


In response to comment #17:
The ATSUI path is only taken when the font being used has an AAT/OpenType Small Caps feature as 
determined by ATSUGetFontFeatures(), otherwise we stay on CG.
There is also a very small performance hit when first obtaining the font for the small-caps renderer, or 
(presently but about to be removed according to point 6 Darin made above) when attempting to obtain 
a small-caps version of a substitute font for any particular character on the CG path. I&apos;ve just realised 
that no attempt is being made to generate a small-caps variant for substitute fonts on the ATSU path! I 
will look into doing that too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>16392</commentid>
    <comment_count>19</comment_count>
    <who name="Nicholas Shanks">nickshanks</who>
    <bug_when>2005-08-10 16:36:27 -0700</bug_when>
    <thetext>Bad news regarding Apple Chancery: it defaults to old-style figures, meaning turning them on makes no 
change, hence no difference in metrics. Hoefler Text Black, Italic and Black Italic (but not Regular) also 
have both Small Caps and Old-Style Figures but these three, sadly, also have them on by default. I 
conclude that there are no fonts shipping with thee OS suitable for demonstrating whether or not 
activating Old-Style Figures is working, but given that this is set in the same system call as small caps 
itself, I can&apos;t see how anything can break one and not the other. For fonts that don&apos;t support Old-Style 
Figures, the setting is simply ignored. Fonts that support Old-Style Figures, but not Small-Caps are not 
even considered for using in a small-caps run.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>37591</commentid>
    <comment_count>20</comment_count>
    <who name="Nicholas Shanks">nickshanks</who>
    <bug_when>2006-03-26 05:19:17 -0800</bug_when>
    <thetext>Pending since August 2005: response from darin to comment #15 and comment #18.
e.g. Has Justin fixed the /n handling in ATSU?
Suggested course of action for fonts with an incomplete small-caps repertoire?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>44606</commentid>
    <comment_count>21</comment_count>
    <who name="Nicholas Shanks">nickshanks</who>
    <bug_when>2006-06-04 07:50:38 -0700</bug_when>
    <thetext>Justin, could you respond to Darin&apos;s comments on this. It&apos;s been in limbo since August :-/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>44646</commentid>
    <comment_count>22</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2006-06-04 11:31:55 -0700</bug_when>
    <thetext>Text has changed drastically since this patch was last worked on, so it would need to be recoded anyway. :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>480512</commentid>
    <comment_count>23</comment_count>
    <who name="Nicholas Shanks">nickshanks</who>
    <bug_when>2011-10-08 00:21:46 -0700</bug_when>
    <thetext>I&apos;ll have another crack at this in the next month. Reassigning to me since hyatt hasn&apos;t touched it in five years.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1049226</commentid>
    <comment_count>24</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2014-11-17 10:04:12 -0800</bug_when>
    <thetext>Assigning to me because it hasn&apos;t been touched in years</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1148094</commentid>
    <comment_count>25</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-12-10 00:47:16 -0800</bug_when>
    <thetext>

*** This bug has been marked as a duplicate of bug 149774 ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>3287</attachid>
            <date>2005-08-09 10:05:57 -0700</date>
            <delta_ts>2005-08-09 17:43:52 -0700</delta_ts>
            <desc>small-caps patch 1.0</desc>
            <filename>patch-c.diff</filename>
            <type>text/plain</type>
            <size>3157</size>
            <attacher name="Nicholas Shanks">nickshanks</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmVTdXBwb3J0LnN1YnByb2ovV2ViVGV4dFJlbmRlcmVyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQpSQ1MgZmlsZTogL2N2cy9yb290L1dlYktpdC9XZWJDb3JlU3VwcG9ydC5zdWJwcm9qL1dlYlRl
eHRSZW5kZXJlci5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjM4CmRpZmYgLXAgLXUgLXIxLjM4
IFdlYkNvcmVTdXBwb3J0LnN1YnByb2ovV2ViVGV4dFJlbmRlcmVyLmgKLS0tIFdlYkNvcmVTdXBw
b3J0LnN1YnByb2ovV2ViVGV4dFJlbmRlcmVyLmgJMTIgSnVsIDIwMDUgMTc6NDQ6MTAgLTAwMDAJ
MS4zOAorKysgV2ViQ29yZVN1cHBvcnQuc3VicHJvai9XZWJUZXh0UmVuZGVyZXIuaAk5IEF1ZyAy
MDA1IDE2OjQ0OjI4IC0wMDAwCkBAIC02OCw2ICs2OCw3IEBAIHR5cGVkZWYgc3RydWN0IENoYXJh
Y3RlcldpZHRoSXRlcmF0b3IgQ2gKIEBwcml2YXRlCiAgICAgV2ViVGV4dFJlbmRlcmVyICpzbWFs
bENhcHNSZW5kZXJlcjsKICAgICBOU0ZvbnQgKnNtYWxsQ2Fwc0ZvbnQ7CisgICAgQk9PTCBjYXBp
dGFsaXplU21hbGxDYXBzOwogICAgIEFUU1VTdHlsZSBfQVRTVVNzdHlsZTsKICAgICBCT09MIEFU
U1VTdHlsZUluaXRpYWxpemVkOwogICAgIEJPT0wgQVRTVU1pcnJvcnM7CkluZGV4OiBXZWJDb3Jl
U3VwcG9ydC5zdWJwcm9qL1dlYlRleHRSZW5kZXJlci5tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9j
dnMvcm9vdC9XZWJLaXQvV2ViQ29yZVN1cHBvcnQuc3VicHJvai9XZWJUZXh0UmVuZGVyZXIubSx2
CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xODUKZGlmZiAtcCAtdSAtcjEuMTg1IFdlYkNvcmVTdXBw
b3J0LnN1YnByb2ovV2ViVGV4dFJlbmRlcmVyLm0KLS0tIFdlYkNvcmVTdXBwb3J0LnN1YnByb2ov
V2ViVGV4dFJlbmRlcmVyLm0JMSBBdWcgMjAwNSAyMToxOTo0MiAtMDAwMAkxLjE4NQorKysgV2Vi
Q29yZVN1cHBvcnQuc3VicHJvai9XZWJUZXh0UmVuZGVyZXIubQk5IEF1ZyAyMDA1IDE2OjQ0OjMx
IC0wMDAwCkBAIC0xNjUsNiArMTY1LDcgQEAgc3RydWN0IENoYXJhY3RlcldpZHRoSXRlcmF0b3IK
IC8vIFNtYWxsIGNhcHMKIC0gKHZvaWQpX3NldElzU21hbGxDYXBzUmVuZGVyZXI6KEJPT0wpZmxh
ZzsKIC0gKEJPT0wpX2lzU21hbGxDYXBzUmVuZGVyZXI7CistIChCT09MKV9jYXBpdGFsaXplU21h
bGxDYXBzOwogLSAoV2ViVGV4dFJlbmRlcmVyICopX3NtYWxsQ2Fwc1JlbmRlcmVyOwogLSAoTlNG
b250ICopX3NtYWxsQ2Fwc0ZvbnQ7CiAKQEAgLTQ1NCw2ICs0NTUsNyBAQCBzdGF0aWMgQk9PTCBh
bHdheXNVc2VBVFNVID0gTk87CiAjZW5kaWYKICAgICAgCiAgICAgaXNTbWFsbENhcHNSZW5kZXJl
ciA9IE5POworICAgIGNhcGl0YWxpemVTbWFsbENhcHMgPSBOTzsKICAgICAKICAgICByZXR1cm4g
c2VsZjsKIH0KQEAgLTcxNCw2ICs3MTYsMTEgQEAgc3RhdGljIEJPT0wgYWx3YXlzVXNlQVRTVSA9
IE5POwogICAgIHJldHVybiBpc1NtYWxsQ2Fwc1JlbmRlcmVyOwogfQogCistIChCT09MKV9jYXBp
dGFsaXplU21hbGxDYXBzCit7CisgICAgcmV0dXJuIGNhcGl0YWxpemVTbWFsbENhcHM7Cit9CisK
IC0gKFdlYlRleHRSZW5kZXJlciAqKV9zbWFsbENhcHNSZW5kZXJlcgogewogICAgIGlmICghc21h
bGxDYXBzUmVuZGVyZXIpIHsKQEAgLTczNCw4ICs3NDEsMTUgQEAgc3RhdGljIEJPT0wgYWx3YXlz
VXNlQVRTVSA9IE5POwogCiAtIChOU0ZvbnQgKilfc21hbGxDYXBzRm9udAogewotICAgIGlmICgh
c21hbGxDYXBzRm9udCkKLSAgICAgICAgc21hbGxDYXBzRm9udCA9IFtbW05TRm9udE1hbmFnZXIg
c2hhcmVkRm9udE1hbmFnZXJdIGNvbnZlcnRGb250OmZvbnQgdG9TaXplOihbZm9udCBwb2ludFNp
emVdICogU01BTExDQVBTX0ZPTlRTSVpFX01VTFRJUExJRVIpXSBzY3JlZW5Gb250XTsKKyAgICBp
Zighc21hbGxDYXBzRm9udCkgeworICAgICAgICBzbWFsbENhcHNGb250ID0gW1tOU0ZvbnRNYW5h
Z2VyIHNoYXJlZEZvbnRNYW5hZ2VyXSBjb252ZXJ0Rm9udDpmb250IHRvSGF2ZVRyYWl0Ok5TU21h
bGxDYXBzRm9udE1hc2tdOworICAgICAgICBpZihmb250ICE9IHNtYWxsQ2Fwc0ZvbnQpCisgICAg
ICAgICAgICBzbWFsbENhcHNGb250ID0gW3NtYWxsQ2Fwc0ZvbnQgc2NyZWVuRm9udF07CisgICAg
ICAgIGVsc2UgeworICAgICAgICAgICAgc21hbGxDYXBzRm9udCA9IFtbW05TRm9udE1hbmFnZXIg
c2hhcmVkRm9udE1hbmFnZXJdIGNvbnZlcnRGb250OmZvbnQgdG9TaXplOihbZm9udCBwb2ludFNp
emVdICogU01BTExDQVBTX0ZPTlRTSVpFX01VTFRJUExJRVIpXSBzY3JlZW5Gb250XTsKKyAgICAg
ICAgICAgIGNhcGl0YWxpemVTbWFsbENhcHMgPSBZRVM7CisgICAgICAgIH0KKyAgICB9CiAgICAg
cmV0dXJuIHVzaW5nUHJpbnRlckZvbnQgPyBbc21hbGxDYXBzRm9udCBwcmludGVyRm9udF0gOiBz
bWFsbENhcHNGb250OwogfQogCkBAIC0yMDU3LDExICsyMDcxLDEyIEBAIHN0YXRpYyBmbG9hdCB3
aWR0aEZvck5leHRDaGFyYWN0ZXIoQ2hhcmEKICAgICBpZiAocmVuZGVyZXItPmlzU21hbGxDYXBz
UmVuZGVyZXIpIHsKICAgICAgICAgaWYgKCF1X2lzVVVwcGVyY2FzZShjKSkgewogICAgICAgICAg
ICAgLy8gT25seSB1c2Ugc21hbGwgY2FwIGZvbnQgaWYgdGhlIHRoZSB1cHBlcmNhc2UgdmVyc2lv
biBvZiB0aGUgY2hhcmFjdGVyCi0gICAgICAgICAgICAvLyBpcyBkaWZmZXJlbnQgdGhhbiB0aGUg
bG93ZXJjYXNlLgorICAgICAgICAgICAgLy8gaXMgZGlmZmVyZW50IHRoYW4gdGhlIGxvd2VyY2Fz
ZSwgYW5kIG9ubHkgdHJhbnNmb3JtIGlmIHVzaW5nIDcwJSBzeW50aGVzaXMuCiAgICAgICAgICAg
ICBVbmljb2RlQ2hhciBuZXdDID0gdV90b3VwcGVyKGMpOwogICAgICAgICAgICAgaWYgKG5ld0Mg
IT0gYykgewogICAgICAgICAgICAgICAgIHVzZVNtYWxsQ2Fwc0ZvbnQgPSBZRVM7Ci0gICAgICAg
ICAgICAgICAgYyA9IG5ld0M7CisgICAgICAgICAgICAgICAgaWYoW3JlbmRlcmVyIF9jYXBpdGFs
aXplU21hbGxDYXBzXSkKKyAgICAgICAgICAgICAgICAgICAgYyA9IG5ld0M7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KICAgICB9Cg==
</data>
<flag name="review"
          id="338"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>3288</attachid>
            <date>2005-08-09 10:38:22 -0700</date>
            <delta_ts>2005-08-09 10:38:22 -0700</delta_ts>
            <desc>Sample output before &amp; after</desc>
            <filename>sample.png</filename>
            <type>image/png</type>
            <size>20706</size>
            <attacher name="Nicholas Shanks">nickshanks</attacher>
            
              <data encoding="base64">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
Q3cj1O3AbLY3laaH6HGRuU1xyxLDrUYbO0pHjwWX4pckwcJCSdlmrcOkUj9kxSq+Qya+f//+dMvT
4myTUXOJqIpJW0nd0FEwQsz2oTTVGF7XdVer2J49e5IixTVPN3/KVdYKheln20ITi2mLfK6oOuYw
aVK+AfLoXMoK7aGVt1LpTO7/+rAeZVqpEZebT8prDrqjEG2ud+Oa0VXlLtS0Y0p9lGMWSN9xBoN4
Mkw+hF6ae9nNsMKRnvmSMcPUMDzfOfIjtDZ5HgsNpmTS2eWQVzJdMtHZrSJaZbel83APYCKwgZZu
CP/880+yEPKuru2iHWNs8jQ9k5V16mc7oDEXOExa45IVT97F5GXJgZ6IVTCm0iZ3jr63IIwd80XG
oS1dLSxWGCA778yc8Ar9nXeWmbHmHeQUmqYErKHHReY2vsZNhTL4j0Yv8hnn/G4e/DArhZvINJNP
Gc3HO9f496hi0iaDTmXIX+4S/E+h0iWwN2geKyZilLa5yyAv9LtHWp/tJjxlvuyHwUpI880GVue0
mSq1YT3K1N5cpvKa2mK/qUv5FqTm9eUmhtoxpT5PHgP/N+1vm2Zs0ilHGcr3P8bjr8/5uzb3i6UM
0F+f0YwjvGvUFmjjm2mm+TTT1UJ5ZH/sp7uua+e+0y+eTANjoRz1YPCeb7/9NtXddpljjr4nyx47
5rXjUJtuChz5WVnYzbodatH87bff7mj/FJr2uYYeYercdgrosv4wH1yQcg295qYl/nnx4sXEkC0m
LHuImWoRMQ4DgUBghRFMOhAIBFYYwaQDgUBghRFMOhAIBFYYwaQDgUBghfEfAAAA//8DANqAycL3
GO5iAAAAAElFTkSuQmCC
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>3303</attachid>
            <date>2005-08-09 17:43:52 -0700</date>
            <delta_ts>2005-08-09 17:49:21 -0700</delta_ts>
            <desc>small-caps patch 2.0</desc>
            <filename>patch-d.diff</filename>
            <type>text/plain</type>
            <size>13255</size>
            <attacher name="Nicholas Shanks">nickshanks</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmVTdXBwb3J0LnN1YnByb2ovV2ViVGV4dFJlbmRlcmVyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQpSQ1MgZmlsZTogL2N2cy9yb290L1dlYktpdC9XZWJDb3JlU3VwcG9ydC5zdWJwcm9qL1dlYlRl
eHRSZW5kZXJlci5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjM4CmRpZmYgLXAgLXUgLXIxLjM4
IFdlYkNvcmVTdXBwb3J0LnN1YnByb2ovV2ViVGV4dFJlbmRlcmVyLmgKLS0tIFdlYkNvcmVTdXBw
b3J0LnN1YnByb2ovV2ViVGV4dFJlbmRlcmVyLmgJMTIgSnVsIDIwMDUgMTc6NDQ6MTAgLTAwMDAJ
MS4zOAorKysgV2ViQ29yZVN1cHBvcnQuc3VicHJvai9XZWJUZXh0UmVuZGVyZXIuaAkxMCBBdWcg
MjAwNSAwMDozNDo1MCAtMDAwMApAQCAtNjQsNiArNjQsOCBAQCB0eXBlZGVmIHN0cnVjdCBDaGFy
YWN0ZXJXaWR0aEl0ZXJhdG9yIENoCiAgICAgU3Vic3RpdHV0ZUZvbnRXaWR0aE1hcCAqc3Vic3Rp
dHV0ZUZvbnRXaWR0aE1hcHM7CiAgICAgQk9PTCB1c2luZ1ByaW50ZXJGb250OwogICAgIEJPT0wg
aXNTbWFsbENhcHNSZW5kZXJlcjsKKyAgICBCT09MIHNpbXVsYXRlZFNtYWxsQ2FwczsgICAgICAg
IC8vIDcwJSByZWR1Y3Rpb24sIHJlcXVpcmVzIHVwcGVyY2FzaW5nIHRleHQgcnVucworICAgIEJP
T0wgdHJ1ZVNtYWxsQ2FwczsgICAgICAgICAgICAgLy8gc21hbGwtY2FwcyBhdmFpbGFibGUgYXMg
QUFUL09wZW5UeXBlIGZvbnQgZmVhdHVyZQogICAgIAogQHByaXZhdGUKICAgICBXZWJUZXh0UmVu
ZGVyZXIgKnNtYWxsQ2Fwc1JlbmRlcmVyOwpJbmRleDogV2ViQ29yZVN1cHBvcnQuc3VicHJvai9X
ZWJUZXh0UmVuZGVyZXIubQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2ViS2l0L1dl
YkNvcmVTdXBwb3J0LnN1YnByb2ovV2ViVGV4dFJlbmRlcmVyLm0sdgpyZXRyaWV2aW5nIHJldmlz
aW9uIDEuMTg1CmRpZmYgLXAgLXUgLXIxLjE4NSBXZWJDb3JlU3VwcG9ydC5zdWJwcm9qL1dlYlRl
eHRSZW5kZXJlci5tCi0tLSBXZWJDb3JlU3VwcG9ydC5zdWJwcm9qL1dlYlRleHRSZW5kZXJlci5t
CTEgQXVnIDIwMDUgMjE6MTk6NDIgLTAwMDAJMS4xODUKKysrIFdlYkNvcmVTdXBwb3J0LnN1YnBy
b2ovV2ViVGV4dFJlbmRlcmVyLm0JMTAgQXVnIDIwMDUgMDA6MzQ6NTMgLTAwMDAKQEAgLTE2Nyw2
ICsxNjcsNyBAQCBzdHJ1Y3QgQ2hhcmFjdGVyV2lkdGhJdGVyYXRvcgogLSAoQk9PTClfaXNTbWFs
bENhcHNSZW5kZXJlcjsKIC0gKFdlYlRleHRSZW5kZXJlciAqKV9zbWFsbENhcHNSZW5kZXJlcjsK
IC0gKE5TRm9udCAqKV9zbWFsbENhcHNGb250OworLSAoTlNGb250ICopX3NtYWxsQ2Fwc0ZvbnRG
b3JGb250OihOU0ZvbnQgKilmOwogCiBAZW5kCiAKQEAgLTI4Niw5ICsyODcsMTUgQEAgc3RhdGlj
IHZvaWQgaW5pdGlhbGl6ZUNoYXJhY3RlcldpZHRoSXRlcgogc3RhdGljIGZsb2F0IHdpZHRoRm9y
TmV4dENoYXJhY3RlciAoQ2hhcmFjdGVyV2lkdGhJdGVyYXRvciAqaXRlcmF0b3IsIEFUU0dseXBo
UmVmICpnbHlwaFVzZWQsIE5TRm9udCAqKmZvbnRVc2VkKTsKIAogCisvLyBBVFNVIHRleHQgcnVu
IHRyYW5zZm9ybWF0aW9ucworc3RhdGljIFdlYkNvcmVUZXh0UnVuIGNhcGl0YWxpemVDaGFyYWN0
ZXJzSW5SdW4oY29uc3QgV2ViQ29yZVRleHRSdW4gKnJ1bik7CitzdGF0aWMgV2ViQ29yZVRleHRS
dW4gcmV2ZXJzZUNoYXJhY3RlcnNJblJ1bihjb25zdCBXZWJDb3JlVGV4dFJ1biAqcnVuKTsKK3N0
YXRpYyBXZWJDb3JlVGV4dFJ1biBhcHBseU1pcnJvcmluZ1RvUnVuKGNvbnN0IFdlYkNvcmVUZXh0
UnVuICpydW4pOworCisKIC8vIE1pc2MuCiBzdGF0aWMgQk9PTCBmaWxsU3R5bGVXaXRoQXR0cmli
dXRlcyhBVFNVU3R5bGUgc3R5bGUsIE5TRm9udCAqdGhlRm9udCk7Ci1zdGF0aWMgQk9PTCBzaG91
bGRVc2VBVFNVKGNvbnN0IFdlYkNvcmVUZXh0UnVuICpydW4pOworc3RhdGljIEJPT0wgc2hvdWxk
VXNlQVRTVShjb25zdCBXZWJUZXh0UmVuZGVyZXIgKnJlbmRlcmVyLCBjb25zdCBXZWJDb3JlVGV4
dFJ1biAqcnVuLCBjb25zdCBXZWJDb3JlVGV4dFN0eWxlICpzdHlsZSk7CiBzdGF0aWMgTlNTdHJp
bmcgKnBhdGhGcm9tRm9udChOU0ZvbnQgKmZvbnQpOwogCiAKQEAgLTQ1NCw2ICs0NjEsOCBAQCBz
dGF0aWMgQk9PTCBhbHdheXNVc2VBVFNVID0gTk87CiAjZW5kaWYKICAgICAgCiAgICAgaXNTbWFs
bENhcHNSZW5kZXJlciA9IE5POworICAgIHNpbXVsYXRlZFNtYWxsQ2FwcyA9IE5POworICAgIHRy
dWVTbWFsbENhcHMgPSBOTzsKICAgICAKICAgICByZXR1cm4gc2VsZjsKIH0KQEAgLTUzNCw3ICs1
NDMsNyBAQCBzdGF0aWMgQk9PTCBhbHdheXNVc2VBVFNVID0gTk87CiAgICAgICAgIFtbc2VsZiBf
c21hbGxDYXBzUmVuZGVyZXJdIGRyYXdSdW46cnVuIHN0eWxlOnN0eWxlIGdlb21ldHJ5Omdlb21l
dHJ5XTsKICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIGlmIChzaG91bGRVc2VBVFNVKHJ1bikp
CisgICAgICAgIGlmIChzaG91bGRVc2VBVFNVKHNlbGYsIHJ1biwgc3R5bGUpKQogICAgICAgICAg
ICAgW3NlbGYgX0FUU1VfZHJhd1J1bjpydW4gc3R5bGU6c3R5bGUgZ2VvbWV0cnk6Z2VvbWV0cnld
OwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBbc2VsZiBfQ0dfZHJhd1J1bjpydW4gc3R5bGU6
c3R5bGUgZ2VvbWV0cnk6Z2VvbWV0cnldOwpAQCAtNjA4LDcgKzYxNyw3IEBAIHN0YXRpYyBCT09M
IGFsd2F5c1VzZUFUU1UgPSBOTzsKICAgICAgICAgW1tzZWxmIF9zbWFsbENhcHNSZW5kZXJlcl0g
ZHJhd0hpZ2hsaWdodEZvclJ1bjpydW4gc3R5bGU6c3R5bGUgZ2VvbWV0cnk6Z2VvbWV0cnldOwog
ICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgaWYgKHNob3VsZFVzZUFUU1UocnVuKSkKKyAgICAg
ICAgaWYgKHNob3VsZFVzZUFUU1Uoc2VsZiwgcnVuLCBzdHlsZSkpCiAgICAgICAgICAgICBbc2Vs
ZiBfQVRTVV9kcmF3SGlnaGxpZ2h0Rm9yUnVuOnJ1biBzdHlsZTpzdHlsZSBnZW9tZXRyeTpnZW9t
ZXRyeV07CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIFtzZWxmIF9DR19kcmF3SGlnaGxpZ2h0
Rm9yUnVuOnJ1biBzdHlsZTpzdHlsZSBnZW9tZXRyeTpnZW9tZXRyeV07CkBAIC02ODYsNyArNjk1
LDcgQEAgc3RhdGljIEJPT0wgYWx3YXlzVXNlQVRTVSA9IE5POwogICAgICAgICByZXR1cm4gW1tz
ZWxmIF9zbWFsbENhcHNSZW5kZXJlcl0gcG9pbnRUb09mZnNldDpydW4gc3R5bGU6c3R5bGUgcG9z
aXRpb246eCByZXZlcnNlZDpyZXZlcnNlZCBpbmNsdWRlUGFydGlhbEdseXBoczppbmNsdWRlUGFy
dGlhbEdseXBoc107CiAgICAgfQogCi0gICAgaWYgKHNob3VsZFVzZUFUU1UocnVuKSkKKyAgICBp
ZiAoc2hvdWxkVXNlQVRTVShzZWxmLCBydW4sIHN0eWxlKSkKICAgICAgICAgcmV0dXJuIFtzZWxm
IF9BVFNVX3BvaW50VG9PZmZzZXQ6cnVuIHN0eWxlOnN0eWxlIHBvc2l0aW9uOnggcmV2ZXJzZWQ6
cmV2ZXJzZWQgaW5jbHVkZVBhcnRpYWxHbHlwaHM6aW5jbHVkZVBhcnRpYWxHbHlwaHNdOwogICAg
IHJldHVybiBbc2VsZiBfQ0dfcG9pbnRUb09mZnNldDpydW4gc3R5bGU6c3R5bGUgcG9zaXRpb246
eCByZXZlcnNlZDpyZXZlcnNlZCBpbmNsdWRlUGFydGlhbEdseXBoczppbmNsdWRlUGFydGlhbEds
eXBoc107CiB9CkBAIC03MzQsOCArNzQzLDQxIEBAIHN0YXRpYyBCT09MIGFsd2F5c1VzZUFUU1Ug
PSBOTzsKIAogLSAoTlNGb250ICopX3NtYWxsQ2Fwc0ZvbnQKIHsKLSAgICBpZiAoIXNtYWxsQ2Fw
c0ZvbnQpCi0gICAgICAgIHNtYWxsQ2Fwc0ZvbnQgPSBbW1tOU0ZvbnRNYW5hZ2VyIHNoYXJlZEZv
bnRNYW5hZ2VyXSBjb252ZXJ0Rm9udDpmb250IHRvU2l6ZTooW2ZvbnQgcG9pbnRTaXplXSAqIFNN
QUxMQ0FQU19GT05UU0laRV9NVUxUSVBMSUVSKV0gc2NyZWVuRm9udF07CisgICAgcmV0dXJuIFtz
ZWxmIF9zbWFsbENhcHNGb250Rm9yRm9udDpmb250XTsKK30KKworLSAoTlNGb250ICopX3NtYWxs
Q2Fwc0ZvbnRGb3JGb250OihOU0ZvbnQgKilmCit7CisgICAgaWYgKCFzbWFsbENhcHNGb250KSB7
CisgICAgICAgIHNtYWxsQ2Fwc0ZvbnQgPSBbW05TRm9udE1hbmFnZXIgc2hhcmVkRm9udE1hbmFn
ZXJdIGNvbnZlcnRGb250OmYgdG9IYXZlVHJhaXQ6TlNTbWFsbENhcHNGb250TWFza107CisgICAg
ICAgIGlmIChmb250ICE9IHNtYWxsQ2Fwc0ZvbnQpIHsKKyAgICAgICAgICAgIHNtYWxsQ2Fwc0Zv
bnQgPSBbc21hbGxDYXBzRm9udCBzY3JlZW5Gb250XTsKKyAgICAgICAgICAgIAorICAgICAgICAg
ICAgLy8gY2hlY2sgZm9yIExldHRlckNhc2VUeXBlOiBTbWFsbENhcHMgZm9udCBmZWF0dXJlOyBp
ZiBwcmVzZW50LCB3ZQorICAgICAgICAgICAgLy8gaGF2ZSBhbiBBQVQvT3BlblR5cGUgZmVhdHVy
ZSwgb3RoZXJ3aXNlIHdlIGhhdmUgYSB2YXJpYW50IHR5cGVmYWNlCisgICAgICAgICAgICBJdGVt
Q291bnQgY291bnQ7CisgICAgICAgICAgICBBVFNVRm9udElEIGZvbnRJRCA9IFdLR2V0TlNGb250
QVRTVUZvbnRJZChzbWFsbENhcHNGb250KTsKKyAgICAgICAgICAgIE9TU3RhdHVzIHN0YXR1cyA9
IEFUU1VDb3VudEZvbnRGZWF0dXJlU2VsZWN0b3JzKGZvbnRJRCwga0xldHRlckNhc2VUeXBlLCAm
Y291bnQpOworICAgICAgICAgICAgaWYgKHN0YXR1cyA9PSBub0VyciAmJiBjb3VudCA+IDApIHsK
KyAgICAgICAgICAgICAgICBBVFNVRm9udEZlYXR1cmVUeXBlICpzZWxlY3RvcnMgPSAoQVRTVUZv
bnRGZWF0dXJlVHlwZSAqKSBtYWxsb2MoY291bnQgKiBzaXplb2YoQVRTVUZvbnRGZWF0dXJlU2Vs
ZWN0b3IpKTsKKyAgICAgICAgICAgICAgICBpZiAoc2VsZWN0b3JzICE9IE5VTEwpIHsKKyAgICAg
ICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGk7CisgICAgICAgICAgICAgICAgICAgIEFUU1VH
ZXRGb250RmVhdHVyZVNlbGVjdG9ycyhmb250SUQsIGtMZXR0ZXJDYXNlVHlwZSwgY291bnQsIHNl
bGVjdG9ycywgTlVMTCwgTlVMTCwgTlVMTCk7CisgICAgICAgICAgICAgICAgICAgIGZvciAoaSA9
IDA7IGkgPCBjb3VudDsgaSsrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2VsZWN0
b3JzW2ldID09IGtTbWFsbENhcHNTZWxlY3RvcikgeworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHRydWVTbWFsbENhcHMgPSBZRVM7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICAgICAgZnJlZShzZWxlY3RvcnMpOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHNtYWxs
Q2Fwc0ZvbnQgPSBbW1tOU0ZvbnRNYW5hZ2VyIHNoYXJlZEZvbnRNYW5hZ2VyXSBjb252ZXJ0Rm9u
dDpmIHRvU2l6ZTooW2ZvbnQgcG9pbnRTaXplXSAqIFNNQUxMQ0FQU19GT05UU0laRV9NVUxUSVBM
SUVSKV0gc2NyZWVuRm9udF07CisgICAgICAgICAgICBzaW11bGF0ZWRTbWFsbENhcHMgPSBZRVM7
CisgICAgICAgIH0KKyAgICB9CiAgICAgcmV0dXJuIHVzaW5nUHJpbnRlckZvbnQgPyBbc21hbGxD
YXBzRm9udCBwcmludGVyRm9udF0gOiBzbWFsbENhcHNGb250OwogfQogCkBAIC0xMTc1LDcgKzEy
MTcsNyBAQCBzdGF0aWMgY29uc3QgY2hhciAqam9pbmluZ05hbWVzW10gPSB7CiAKIC0gKGZsb2F0
KV9mbG9hdFdpZHRoRm9yUnVuOihjb25zdCBXZWJDb3JlVGV4dFJ1biAqKXJ1biBzdHlsZTooY29u
c3QgV2ViQ29yZVRleHRTdHlsZSAqKXN0eWxlIHdpZHRoczooZmxvYXQgKil3aWR0aEJ1ZmZlciBm
b250czooTlNGb250ICoqKWZvbnRCdWZmZXIgZ2x5cGhzOihDR0dseXBoICopZ2x5cGhCdWZmZXIg
c3RhcnRQb3NpdGlvbjooZmxvYXQgKilzdGFydFBvc2l0aW9uIG51bUdseXBoczooaW50ICopX251
bUdseXBocwogewotICAgIGlmIChzaG91bGRVc2VBVFNVKHJ1bikpCisgICAgaWYgKHNob3VsZFVz
ZUFUU1Uoc2VsZiwgcnVuLCBzdHlsZSkpCiAgICAgICAgIHJldHVybiBbc2VsZiBfQVRTVV9mbG9h
dFdpZHRoRm9yUnVuOnJ1biBzdHlsZTpzdHlsZV07CiAgICAgCiAgICAgcmV0dXJuIFtzZWxmIF9D
R19mbG9hdFdpZHRoRm9yUnVuOnJ1biBzdHlsZTpzdHlsZSB3aWR0aHM6d2lkdGhCdWZmZXIgZm9u
dHM6Zm9udEJ1ZmZlciBnbHlwaHM6Z2x5cGhCdWZmZXIgc3RhcnRQb3NpdGlvbjpzdGFydFBvc2l0
aW9uIG51bUdseXBoczpfbnVtR2x5cGhzXTsKQEAgLTE0NDMsNyArMTQ4NSw3IEBAIHN0YXRpYyBj
b25zdCBjaGFyICpqb2luaW5nTmFtZXNbXSA9IHsKIH0KIAogCi0tICh2b2lkKV9pbml0aWFsaXpl
QVRTVVN0eWxlCistICh2b2lkKV9pbml0aWFsaXplQVRTVVN0eWxlOihjb25zdCBXZWJDb3JlVGV4
dFN0eWxlICopc3R5bGUKIHsKICAgICAvLyBUaGUgdHdvIE5TRm9udCBjYWxscyBpbiB0aGlzIG1l
dGhvZCAocG9pbnRTaXplIGFuZCBfYXRzRm9udElEKQogICAgIC8vIGFyZSBib3RoIGV4Y2VwdGlv
bi1zYWZlLgpAQCAtMTQ1Niw4ICsxNDk4LDEyIEBAIHN0YXRpYyBjb25zdCBjaGFyICpqb2luaW5n
TmFtZXNbXSA9IHsKICAgICAgICAgaWYoc3RhdHVzICE9IG5vRXJyKQogICAgICAgICAgICAgRkFU
QUxfQUxXQVlTICgiQVRTVUNyZWF0ZVN0eWxlIGZhaWxlZCAoJWQpIiwgc3RhdHVzKTsKICAgICAK
LSAgICAgICAgQVRTVUZvbnRJRCBmb250SUQgPSBXS0dldE5TRm9udEFUU1VGb250SWQoZm9udCk7
Ci0gICAgICAgIGlmIChmb250SUQgPT0gMCl7CisgICAgICAgIEFUU1VGb250SUQgZm9udElEOwor
ICAgICAgICBpZiAoc3R5bGUtPnNtYWxsQ2FwcykKKyAgICAgICAgICAgIGZvbnRJRCA9IFdLR2V0
TlNGb250QVRTVUZvbnRJZChbc2VsZiBfc21hbGxDYXBzRm9udF0pOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICBmb250SUQgPSBXS0dldE5TRm9udEFUU1VGb250SWQoZm9udCk7CisgICAgICAg
IGlmIChmb250SUQgPT0gMCkgewogICAgICAgICAgICAgQVRTVURpc3Bvc2VTdHlsZShfQVRTVVNz
dHlsZSk7CiAgICAgICAgICAgICBFUlJPUiAoInVuYWJsZSB0byBnZXQgQVRTVUZvbnRJRCBmb3Ig
JUAiLCBmb250KTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTE0NzEsNiArMTUxNyw3IEBAIHN0
YXRpYyBjb25zdCBjaGFyICpqb2luaW5nTmFtZXNbXSA9IHsKICAgICAgICAgc3RhdHVzID0gQVRT
VVNldEF0dHJpYnV0ZXMgKF9BVFNVU3N0eWxlLCAzLCBzdHlsZVRhZ3MsIHN0eWxlU2l6ZXMsIHN0
eWxlVmFsdWVzKTsKICAgICAgICAgaWYoc3RhdHVzICE9IG5vRXJyKQogICAgICAgICAgICAgRkFU
QUxfQUxXQVlTICgiQVRTVVNldEF0dHJpYnV0ZXMgZmFpbGVkICglZCkiLCBzdGF0dXMpOworICAg
ICAgICAKICAgICAgICAgc3RhdHVzID0gQVRTRm9udEdldFRhYmxlKGZvbnRJRCwgJ3Byb3AnLCAw
LCAwLCAwLCAmcHJvcFRhYmxlU2l6ZSk7CiAgICAgICAgIGlmIChzdGF0dXMgPT0gbm9FcnIpICAg
IC8vIG5haXZlbHkgYXNzdW1lIHRoYXQgaWYgYSAncHJvcCcgdGFibGUgZXhpc3RzIHRoZW4gaXQg
Y29udGFpbnMgbWlycm9yaW5nIGluZm8KICAgICAgICAgICAgIEFUU1VNaXJyb3JzID0gWUVTOwpA
QCAtMTQ3OCw2ICsxNTI1LDEzIEBAIHN0YXRpYyBjb25zdCBjaGFyICpqb2luaW5nTmFtZXNbXSA9
IHsKICAgICAgICAgICAgIEFUU1VNaXJyb3JzID0gTk87CiAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgIEZBVEFMX0FMV0FZUyAoIkFUU0ZvbnRHZXRUYWJsZSBmYWlsZWQgKCVkKSIsIHN0YXR1cyk7
CisgICAgICAgIAorICAgICAgICBpZiAoc3R5bGUtPnNtYWxsQ2FwcyAmJiB0cnVlU21hbGxDYXBz
KSB7CisgICAgICAgICAgICAvLyBhY3RpdmF0ZSBmZWF0dXJlLCB0cnkgYW5kIHNldCBvbGQtc3R5
bGUgbnVtYmVycyB0b28KKyAgICAgICAgICAgIEFUU1VGb250RmVhdHVyZVR5cGUgdHlwZXNbXSA9
IHsga0xldHRlckNhc2VUeXBlLCBrTnVtYmVyQ2FzZVR5cGUgfTsKKyAgICAgICAgICAgIEFUU1VG
b250RmVhdHVyZVNlbGVjdG9yIHNlbGVjdG9yc1tdID0geyBrU21hbGxDYXBzU2VsZWN0b3IsIGtM
b3dlckNhc2VOdW1iZXJzU2VsZWN0b3IgfTsKKyAgICAgICAgICAgIEFUU1VTZXRGb250RmVhdHVy
ZXMoX0FUU1VTc3R5bGUsIDIsIHR5cGVzLCBzZWxlY3RvcnMpOworICAgICAgICB9CiAKICAgICAg
ICAgQVRTVVN0eWxlSW5pdGlhbGl6ZWQgPSBZRVM7CiAgICAgfQpAQCAtMTQ5NSwxMSArMTU0OSwx
OCBAQCBzdGF0aWMgY29uc3QgY2hhciAqam9pbmluZ05hbWVzW10gPSB7CiAgICAgVW5pQ2hhckNv
dW50IHN1YnN0aXR1dGVMZW5ndGg7CiAgICAgT1NTdGF0dXMgc3RhdHVzOwogICAgIAotICAgIFtz
ZWxmIF9pbml0aWFsaXplQVRTVVN0eWxlXTsKKyAgICBbc2VsZiBfaW5pdGlhbGl6ZUFUU1VTdHls
ZTpzdHlsZV07CiAgICAgCiAgICAgLy8gRklYTUU6IFRoaXMgaXMgbWlzc2luZyB0aGUgZm9sbG93
aW5nIGZlYXR1cmVzIHRoYXQgdGhlIENvcmVHcmFwaGljcyBjb2RlIHBhdGggaGFzOgogICAgIC8v
IC0gQm90aCBcbiBhbmQgbm9uYnJlYWtpbmcgc3BhY2UgcmVuZGVyIGFzIGEgc3BhY2UuCiAgICAg
Ly8gLSBBbGwgb3RoZXIgY29udHJvbCBjaGFyYWN0ZXJzIG11c3Qgbm90IHJlbmRlciBhdCBhbGwg
KG90aGVyIGNvZGUgcGF0aCB1c2VzIHplcm8td2lkdGggc3BhY2VzKS4KKyAgICAKKyAgICBXZWJD
b3JlVGV4dFJ1biBjYXBzUnVuOworICAgIGlmKHN0eWxlLT5zbWFsbENhcHMgJiYgc2ltdWxhdGVk
U21hbGxDYXBzKSB7CisgICAgICAgIC8vIHN5bnRoZXNpemVkIHNtYWxsLWNhcHM6IGNhcGl0YWxp
emUgY2hhcmFjdGVycyBpbiBydW4KKyAgICAgICAgY2Fwc1J1biA9IGNhcGl0YWxpemVDaGFyYWN0
ZXJzSW5SdW4ocnVuKTsKKyAgICAgICAgcnVuID0gJmNhcHNSdW47CisgICAgfQogCiAgICAgcnVu
TGVuZ3RoID0gcnVuLT50byAtIHJ1bi0+ZnJvbTsKICAgICBzdGF0dXMgPSBBVFNVQ3JlYXRlVGV4
dExheW91dFdpdGhUZXh0UHRyKApAQCAtMTUzNSw3ICsxNTk2LDcgQEAgc3RhdGljIGNvbnN0IGNo
YXIgKmpvaW5pbmdOYW1lc1tdID0gewogICAgICAgICBOU0ZvbnQgKnN1YnN0aXR1dGVGb250ID0g
W3NlbGYgX3N1YnN0aXR1dGVGb250Rm9yQ2hhcmFjdGVyczpydW4tPmNoYXJhY3RlcnMrc3Vic3Rp
dHV0ZU9mZnNldCBsZW5ndGg6c3Vic3RpdHV0ZUxlbmd0aCBmYW1pbGllczpzdHlsZS0+ZmFtaWxp
ZXNdOwogICAgICAgICBpZiAoc3Vic3RpdHV0ZUZvbnQpIHsKICAgICAgICAgICAgIFdlYlRleHRS
ZW5kZXJlciAqc3Vic3RpdHV0ZVJlbmRlcmVyID0gW1tXZWJUZXh0UmVuZGVyZXJGYWN0b3J5IHNo
YXJlZEZhY3RvcnldIHJlbmRlcmVyV2l0aEZvbnQ6c3Vic3RpdHV0ZUZvbnQgdXNpbmdQcmludGVy
Rm9udDp1c2luZ1ByaW50ZXJGb250XTsKLSAgICAgICAgICAgIFtzdWJzdGl0dXRlUmVuZGVyZXIg
X2luaXRpYWxpemVBVFNVU3R5bGVdOworICAgICAgICAgICAgW3N1YnN0aXR1dGVSZW5kZXJlciBf
aW5pdGlhbGl6ZUFUU1VTdHlsZTpzdHlsZV07CiAgICAgICAgICAgICBpZiAoc3Vic3RpdHV0ZVJl
bmRlcmVyICYmIHN1YnN0aXR1dGVSZW5kZXJlci0+X0FUU1VTc3R5bGUpCiAgICAgICAgICAgICAg
ICAgQVRTVVNldFJ1blN0eWxlKGxheW91dCwgc3Vic3RpdHV0ZVJlbmRlcmVyLT5fQVRTVVNzdHls
ZSwgc3Vic3RpdHV0ZU9mZnNldCwgc3Vic3RpdHV0ZUxlbmd0aCk7CiAgICAgICAgICAgICAvLyBp
Z25vcmluZyBlcnJvcnMKQEAgLTE1NDMsNyArMTYwNCwxMCBAQCBzdGF0aWMgY29uc3QgY2hhciAq
am9pbmluZ05hbWVzW10gPSB7CiAgICAgICAgIHN1YnN0aXR1dGVPZmZzZXQgKz0gc3Vic3RpdHV0
ZUxlbmd0aDsKICAgICB9OwogICAgIC8vIGlnbm9yaW5nIGVycm9ycyBpbiBmb250IHN1YnN0aXR1
dGlvbgotICAgICAgICAKKyAgICAKKyAgICBpZihzdHlsZS0+c21hbGxDYXBzICYmIHNpbXVsYXRl
ZFNtYWxsQ2FwcykKKyAgICAgICAgZnJlZSgodm9pZCAqKWNhcHNSdW4uY2hhcmFjdGVycyk7Cisg
ICAgCiAgICAgcmV0dXJuIGxheW91dDsKIH0KIApAQCAtMTU3OSw5ICsxNjQzLDcgQEAgc3RhdGlj
IGNvbnN0IGNoYXIgKmpvaW5pbmdOYW1lc1tdID0gewogCiAtIChmbG9hdClfQVRTVV9mbG9hdFdp
ZHRoRm9yUnVuOihjb25zdCBXZWJDb3JlVGV4dFJ1biAqKXJ1biBzdHlsZTooY29uc3QgV2ViQ29y
ZVRleHRTdHlsZSAqKXN0eWxlCiB7Ci0gICAgQVRTVHJhcGV6b2lkIG9HbHlwaEJvdW5kczsKLSAg
ICAKLSAgICBvR2x5cGhCb3VuZHMgPSBbc2VsZiBfdHJhcGV6b2lkRm9yUnVuOnJ1biBzdHlsZTpz
dHlsZSBhdFBvaW50Ok5TTWFrZVBvaW50ICgwLDApXTsKKyAgICBBVFNUcmFwZXpvaWQgb0dseXBo
Qm91bmRzID0gW3NlbGYgX3RyYXBlem9pZEZvclJ1bjpydW4gc3R5bGU6c3R5bGUgYXRQb2ludDpO
U01ha2VQb2ludCgwLDApXTsKICAgICAKICAgICBmbG9hdCB3aWR0aCA9IAogICAgICAgICBNQVgo
Rml4ZWRUb0Zsb2F0KG9HbHlwaEJvdW5kcy51cHBlclJpZ2h0LngpLCBGaXhlZFRvRmxvYXQob0ds
eXBoQm91bmRzLmxvd2VyUmlnaHQueCkpIC0gCkBAIC0xNTkxLDYgKzE2NTMsMjYgQEAgc3RhdGlj
IGNvbnN0IGNoYXIgKmpvaW5pbmdOYW1lc1tdID0gewogfQogCiAvLyBCZSBzdXJlIHRvIGZyZWUg
dGhlIHJ1bi5jaGFyYWN0ZXJzIGFsbG9jYXRlZCBieSB0aGlzIGZ1bmN0aW9uLgorc3RhdGljIFdl
YkNvcmVUZXh0UnVuIGNhcGl0YWxpemVDaGFyYWN0ZXJzSW5SdW4oY29uc3QgV2ViQ29yZVRleHRS
dW4gKnJ1bikKK3sKKyAgICBXZWJDb3JlVGV4dFJ1biBzd2FwcGVkUnVuOworICAgIHVuc2lnbmVk
IGludCBpOworICAgIAorICAgIFVuaUNoYXIgKnN3YXBwZWRDaGFyYWN0ZXJzID0gKFVuaUNoYXIg
KiltYWxsb2Moc2l6ZW9mKFVuaUNoYXIpKihydW4tPmxlbmd0aCkpOworICAgIGZvciAoaT0wOyBp
IDwgcnVuLT5sZW5ndGg7IGkrKykgeworICAgICAgICAvLyB3aWxsIGNob2tlIG9uIHN1cnJvZ2F0
ZSBwYWlycz8KKy8vICAgICAgaWYoIXVfaXNVVXBwZXJjYXNlKHJ1bi0+Y2hhcmFjdGVyc1tpXSkp
CisgICAgICAgICAgICBzd2FwcGVkQ2hhcmFjdGVyc1tpXSA9IHVfdG91cHBlcihydW4tPmNoYXJh
Y3RlcnNbaV0pOworICAgIH0KKyAgICBzd2FwcGVkUnVuLmZyb20gPSBydW4tPmZyb207CisgICAg
c3dhcHBlZFJ1bi50byA9IHJ1bi0+dG87CisgICAgc3dhcHBlZFJ1bi5sZW5ndGggPSBydW4tPmxl
bmd0aDsKKyAgICBzd2FwcGVkUnVuLmNoYXJhY3RlcnMgPSBzd2FwcGVkQ2hhcmFjdGVyczsKKwor
ICAgIHJldHVybiBzd2FwcGVkUnVuOworfQorCisvLyBCZSBzdXJlIHRvIGZyZWUgdGhlIHJ1bi5j
aGFyYWN0ZXJzIGFsbG9jYXRlZCBieSB0aGlzIGZ1bmN0aW9uLgogc3RhdGljIFdlYkNvcmVUZXh0
UnVuIHJldmVyc2VDaGFyYWN0ZXJzSW5SdW4oY29uc3QgV2ViQ29yZVRleHRSdW4gKnJ1bikKIHsK
ICAgICBXZWJDb3JlVGV4dFJ1biBzd2FwcGVkUnVuOwpAQCAtMjA1NSwxMyArMjEzNywxNSBAQCBz
dGF0aWMgZmxvYXQgd2lkdGhGb3JOZXh0Q2hhcmFjdGVyKENoYXJhCiAgICAgLy8gSWYgc21hbGwt
Y2FwcyBjb252ZXJ0IGxvd2VyY2FzZSB0byB1cHBlci4KICAgICBCT09MIHVzZVNtYWxsQ2Fwc0Zv
bnQgPSBOTzsKICAgICBpZiAocmVuZGVyZXItPmlzU21hbGxDYXBzUmVuZGVyZXIpIHsKKyAgICAg
ICAgTlNMb2coQCJFcnJvcjogQ0cgcGF0aCBiZWluZyB0YWtlbiB0byByZW5kZXIgc21hbGwtY2Fw
cyEiKTsKICAgICAgICAgaWYgKCF1X2lzVVVwcGVyY2FzZShjKSkgewogICAgICAgICAgICAgLy8g
T25seSB1c2Ugc21hbGwgY2FwIGZvbnQgaWYgdGhlIHRoZSB1cHBlcmNhc2UgdmVyc2lvbiBvZiB0
aGUgY2hhcmFjdGVyCi0gICAgICAgICAgICAvLyBpcyBkaWZmZXJlbnQgdGhhbiB0aGUgbG93ZXJj
YXNlLgorICAgICAgICAgICAgLy8gaXMgZGlmZmVyZW50IHRoYW4gdGhlIGxvd2VyY2FzZSwgYW5k
IG9ubHkgdHJhbnNmb3JtIGlmIHVzaW5nIDcwJSBzeW50aGVzaXMuCiAgICAgICAgICAgICBVbmlj
b2RlQ2hhciBuZXdDID0gdV90b3VwcGVyKGMpOwogICAgICAgICAgICAgaWYgKG5ld0MgIT0gYykg
ewogICAgICAgICAgICAgICAgIHVzZVNtYWxsQ2Fwc0ZvbnQgPSBZRVM7Ci0gICAgICAgICAgICAg
ICAgYyA9IG5ld0M7CisgICAgICAgICAgICAgICAgaWYgKHJlbmRlcmVyLT5zaW11bGF0ZWRTbWFs
bENhcHMpCisgICAgICAgICAgICAgICAgICAgIGMgPSBuZXdDOwogICAgICAgICAgICAgfQogICAg
ICAgICB9CiAgICAgfQpAQCAtMjExNCw3ICsyMTk4LDcgQEAgc3RhdGljIGZsb2F0IHdpZHRoRm9y
TmV4dENoYXJhY3RlcihDaGFyYQogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIC8vIFBvdGVu
dGlhbCBmb3Igb3B0aW1pemF0aW9uLiAgVGhpcyBwYXRoIHNob3VsZCBvbmx5IGJlIHRha2VuIGlm
IHdlJ3JlCiAgICAgICAgICAgICAvLyB1c2luZyBhIGNhY2hlZCBzdWJzdGl0dXRlZCBmb250Lgot
ICAgICAgICAgICAgX2ZvbnRVc2VkID0gW1tOU0ZvbnRNYW5hZ2VyIHNoYXJlZEZvbnRNYW5hZ2Vy
XSBjb252ZXJ0Rm9udDpfZm9udFVzZWQgdG9TaXplOltfZm9udFVzZWQgcG9pbnRTaXplXSAqIFNN
QUxMQ0FQU19GT05UU0laRV9NVUxUSVBMSUVSXTsKKyAgICAgICAgICAgIF9mb250VXNlZCA9IFty
ZW5kZXJlciBfc21hbGxDYXBzRm9udEZvckZvbnQ6X2ZvbnRVc2VkXTsKICAgICAgICAgfQogICAg
IH0KIApAQCAtMjI3NCwxMyArMjM1OCwxMyBAQCBzdGF0aWMgQk9PTCBmaWxsU3R5bGVXaXRoQXR0
cmlidXRlcyhBVFNVCiAgICAgcmV0dXJuIE5POwogfQogCi1zdGF0aWMgQk9PTCBzaG91bGRVc2VB
VFNVKGNvbnN0IFdlYkNvcmVUZXh0UnVuICpydW4pCitzdGF0aWMgQk9PTCBzaG91bGRVc2VBVFNV
KGNvbnN0IFdlYlRleHRSZW5kZXJlciAqcmVuZGVyZXIsIGNvbnN0IFdlYkNvcmVUZXh0UnVuICpy
dW4sIGNvbnN0IFdlYkNvcmVUZXh0U3R5bGUgKnN0eWxlKQogewogICAgIFVuaUNoYXIgYzsKICAg
ICBjb25zdCBVbmlDaGFyICpjaGFyYWN0ZXJzID0gcnVuLT5jaGFyYWN0ZXJzOwogICAgIGludCBp
LCBmcm9tID0gcnVuLT5mcm9tLCB0byA9IHJ1bi0+dG87CiAgICAgCi0gICAgaWYgKGFsd2F5c1Vz
ZUFUU1UpCisgICAgaWYgKGFsd2F5c1VzZUFUU1UgfHwgKHN0eWxlLT5zbWFsbENhcHMgJiYgcmVu
ZGVyZXItPnRydWVTbWFsbENhcHMpKQogICAgICAgICByZXR1cm4gWUVTOwogICAgICAgICAKICAg
ICBmb3IgKGkgPSBmcm9tOyBpIDwgdG87IGkrKyl7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>3304</attachid>
            <date>2005-08-09 17:48:43 -0700</date>
            <delta_ts>2005-08-10 05:44:05 -0700</delta_ts>
            <desc>small-caps patch 2.0.1</desc>
            <filename>patch-e.diff</filename>
            <type>text/plain</type>
            <size>13103</size>
            <attacher name="Nicholas Shanks">nickshanks</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmVTdXBwb3J0LnN1YnByb2ovV2ViVGV4dFJlbmRlcmVyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQpSQ1MgZmlsZTogL2N2cy9yb290L1dlYktpdC9XZWJDb3JlU3VwcG9ydC5zdWJwcm9qL1dlYlRl
eHRSZW5kZXJlci5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjM4CmRpZmYgLXAgLXUgLXIxLjM4
IFdlYkNvcmVTdXBwb3J0LnN1YnByb2ovV2ViVGV4dFJlbmRlcmVyLmgKLS0tIFdlYkNvcmVTdXBw
b3J0LnN1YnByb2ovV2ViVGV4dFJlbmRlcmVyLmgJMTIgSnVsIDIwMDUgMTc6NDQ6MTAgLTAwMDAJ
MS4zOAorKysgV2ViQ29yZVN1cHBvcnQuc3VicHJvai9XZWJUZXh0UmVuZGVyZXIuaAkxMCBBdWcg
MjAwNSAwMDo0OToyMyAtMDAwMApAQCAtNjQsNiArNjQsOCBAQCB0eXBlZGVmIHN0cnVjdCBDaGFy
YWN0ZXJXaWR0aEl0ZXJhdG9yIENoCiAgICAgU3Vic3RpdHV0ZUZvbnRXaWR0aE1hcCAqc3Vic3Rp
dHV0ZUZvbnRXaWR0aE1hcHM7CiAgICAgQk9PTCB1c2luZ1ByaW50ZXJGb250OwogICAgIEJPT0wg
aXNTbWFsbENhcHNSZW5kZXJlcjsKKyAgICBCT09MIHNpbXVsYXRlZFNtYWxsQ2FwczsgICAgICAg
IC8vIDcwJSByZWR1Y3Rpb24sIHJlcXVpcmVzIHVwcGVyY2FzaW5nIHRleHQgcnVucworICAgIEJP
T0wgdHJ1ZVNtYWxsQ2FwczsgICAgICAgICAgICAgLy8gc21hbGwtY2FwcyBhdmFpbGFibGUgYXMg
QUFUL09wZW5UeXBlIGZvbnQgZmVhdHVyZQogICAgIAogQHByaXZhdGUKICAgICBXZWJUZXh0UmVu
ZGVyZXIgKnNtYWxsQ2Fwc1JlbmRlcmVyOwpJbmRleDogV2ViQ29yZVN1cHBvcnQuc3VicHJvai9X
ZWJUZXh0UmVuZGVyZXIubQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2ViS2l0L1dl
YkNvcmVTdXBwb3J0LnN1YnByb2ovV2ViVGV4dFJlbmRlcmVyLm0sdgpyZXRyaWV2aW5nIHJldmlz
aW9uIDEuMTg1CmRpZmYgLXAgLXUgLXIxLjE4NSBXZWJDb3JlU3VwcG9ydC5zdWJwcm9qL1dlYlRl
eHRSZW5kZXJlci5tCi0tLSBXZWJDb3JlU3VwcG9ydC5zdWJwcm9qL1dlYlRleHRSZW5kZXJlci5t
CTEgQXVnIDIwMDUgMjE6MTk6NDIgLTAwMDAJMS4xODUKKysrIFdlYkNvcmVTdXBwb3J0LnN1YnBy
b2ovV2ViVGV4dFJlbmRlcmVyLm0JMTAgQXVnIDIwMDUgMDA6NDk6MjYgLTAwMDAKQEAgLTE2Nyw2
ICsxNjcsNyBAQCBzdHJ1Y3QgQ2hhcmFjdGVyV2lkdGhJdGVyYXRvcgogLSAoQk9PTClfaXNTbWFs
bENhcHNSZW5kZXJlcjsKIC0gKFdlYlRleHRSZW5kZXJlciAqKV9zbWFsbENhcHNSZW5kZXJlcjsK
IC0gKE5TRm9udCAqKV9zbWFsbENhcHNGb250OworLSAoTlNGb250ICopX3NtYWxsQ2Fwc0ZvbnRG
b3JGb250OihOU0ZvbnQgKilmOwogCiBAZW5kCiAKQEAgLTI4Niw5ICsyODcsMTUgQEAgc3RhdGlj
IHZvaWQgaW5pdGlhbGl6ZUNoYXJhY3RlcldpZHRoSXRlcgogc3RhdGljIGZsb2F0IHdpZHRoRm9y
TmV4dENoYXJhY3RlciAoQ2hhcmFjdGVyV2lkdGhJdGVyYXRvciAqaXRlcmF0b3IsIEFUU0dseXBo
UmVmICpnbHlwaFVzZWQsIE5TRm9udCAqKmZvbnRVc2VkKTsKIAogCisvLyBBVFNVIHRleHQgcnVu
IHRyYW5zZm9ybWF0aW9ucworc3RhdGljIFdlYkNvcmVUZXh0UnVuIGNhcGl0YWxpemVDaGFyYWN0
ZXJzSW5SdW4oY29uc3QgV2ViQ29yZVRleHRSdW4gKnJ1bik7CitzdGF0aWMgV2ViQ29yZVRleHRS
dW4gcmV2ZXJzZUNoYXJhY3RlcnNJblJ1bihjb25zdCBXZWJDb3JlVGV4dFJ1biAqcnVuKTsKK3N0
YXRpYyBXZWJDb3JlVGV4dFJ1biBhcHBseU1pcnJvcmluZ1RvUnVuKGNvbnN0IFdlYkNvcmVUZXh0
UnVuICpydW4pOworCisKIC8vIE1pc2MuCiBzdGF0aWMgQk9PTCBmaWxsU3R5bGVXaXRoQXR0cmli
dXRlcyhBVFNVU3R5bGUgc3R5bGUsIE5TRm9udCAqdGhlRm9udCk7Ci1zdGF0aWMgQk9PTCBzaG91
bGRVc2VBVFNVKGNvbnN0IFdlYkNvcmVUZXh0UnVuICpydW4pOworc3RhdGljIEJPT0wgc2hvdWxk
VXNlQVRTVShjb25zdCBXZWJUZXh0UmVuZGVyZXIgKnJlbmRlcmVyLCBjb25zdCBXZWJDb3JlVGV4
dFJ1biAqcnVuLCBjb25zdCBXZWJDb3JlVGV4dFN0eWxlICpzdHlsZSk7CiBzdGF0aWMgTlNTdHJp
bmcgKnBhdGhGcm9tRm9udChOU0ZvbnQgKmZvbnQpOwogCiAKQEAgLTQ1NCw2ICs0NjEsOCBAQCBz
dGF0aWMgQk9PTCBhbHdheXNVc2VBVFNVID0gTk87CiAjZW5kaWYKICAgICAgCiAgICAgaXNTbWFs
bENhcHNSZW5kZXJlciA9IE5POworICAgIHNpbXVsYXRlZFNtYWxsQ2FwcyA9IE5POworICAgIHRy
dWVTbWFsbENhcHMgPSBOTzsKICAgICAKICAgICByZXR1cm4gc2VsZjsKIH0KQEAgLTUzNCw3ICs1
NDMsNyBAQCBzdGF0aWMgQk9PTCBhbHdheXNVc2VBVFNVID0gTk87CiAgICAgICAgIFtbc2VsZiBf
c21hbGxDYXBzUmVuZGVyZXJdIGRyYXdSdW46cnVuIHN0eWxlOnN0eWxlIGdlb21ldHJ5Omdlb21l
dHJ5XTsKICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIGlmIChzaG91bGRVc2VBVFNVKHJ1bikp
CisgICAgICAgIGlmIChzaG91bGRVc2VBVFNVKHNlbGYsIHJ1biwgc3R5bGUpKQogICAgICAgICAg
ICAgW3NlbGYgX0FUU1VfZHJhd1J1bjpydW4gc3R5bGU6c3R5bGUgZ2VvbWV0cnk6Z2VvbWV0cnld
OwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBbc2VsZiBfQ0dfZHJhd1J1bjpydW4gc3R5bGU6
c3R5bGUgZ2VvbWV0cnk6Z2VvbWV0cnldOwpAQCAtNjA4LDcgKzYxNyw3IEBAIHN0YXRpYyBCT09M
IGFsd2F5c1VzZUFUU1UgPSBOTzsKICAgICAgICAgW1tzZWxmIF9zbWFsbENhcHNSZW5kZXJlcl0g
ZHJhd0hpZ2hsaWdodEZvclJ1bjpydW4gc3R5bGU6c3R5bGUgZ2VvbWV0cnk6Z2VvbWV0cnldOwog
ICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgaWYgKHNob3VsZFVzZUFUU1UocnVuKSkKKyAgICAg
ICAgaWYgKHNob3VsZFVzZUFUU1Uoc2VsZiwgcnVuLCBzdHlsZSkpCiAgICAgICAgICAgICBbc2Vs
ZiBfQVRTVV9kcmF3SGlnaGxpZ2h0Rm9yUnVuOnJ1biBzdHlsZTpzdHlsZSBnZW9tZXRyeTpnZW9t
ZXRyeV07CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIFtzZWxmIF9DR19kcmF3SGlnaGxpZ2h0
Rm9yUnVuOnJ1biBzdHlsZTpzdHlsZSBnZW9tZXRyeTpnZW9tZXRyeV07CkBAIC02ODYsNyArNjk1
LDcgQEAgc3RhdGljIEJPT0wgYWx3YXlzVXNlQVRTVSA9IE5POwogICAgICAgICByZXR1cm4gW1tz
ZWxmIF9zbWFsbENhcHNSZW5kZXJlcl0gcG9pbnRUb09mZnNldDpydW4gc3R5bGU6c3R5bGUgcG9z
aXRpb246eCByZXZlcnNlZDpyZXZlcnNlZCBpbmNsdWRlUGFydGlhbEdseXBoczppbmNsdWRlUGFy
dGlhbEdseXBoc107CiAgICAgfQogCi0gICAgaWYgKHNob3VsZFVzZUFUU1UocnVuKSkKKyAgICBp
ZiAoc2hvdWxkVXNlQVRTVShzZWxmLCBydW4sIHN0eWxlKSkKICAgICAgICAgcmV0dXJuIFtzZWxm
IF9BVFNVX3BvaW50VG9PZmZzZXQ6cnVuIHN0eWxlOnN0eWxlIHBvc2l0aW9uOnggcmV2ZXJzZWQ6
cmV2ZXJzZWQgaW5jbHVkZVBhcnRpYWxHbHlwaHM6aW5jbHVkZVBhcnRpYWxHbHlwaHNdOwogICAg
IHJldHVybiBbc2VsZiBfQ0dfcG9pbnRUb09mZnNldDpydW4gc3R5bGU6c3R5bGUgcG9zaXRpb246
eCByZXZlcnNlZDpyZXZlcnNlZCBpbmNsdWRlUGFydGlhbEdseXBoczppbmNsdWRlUGFydGlhbEds
eXBoc107CiB9CkBAIC03MzQsOCArNzQzLDQxIEBAIHN0YXRpYyBCT09MIGFsd2F5c1VzZUFUU1Ug
PSBOTzsKIAogLSAoTlNGb250ICopX3NtYWxsQ2Fwc0ZvbnQKIHsKLSAgICBpZiAoIXNtYWxsQ2Fw
c0ZvbnQpCi0gICAgICAgIHNtYWxsQ2Fwc0ZvbnQgPSBbW1tOU0ZvbnRNYW5hZ2VyIHNoYXJlZEZv
bnRNYW5hZ2VyXSBjb252ZXJ0Rm9udDpmb250IHRvU2l6ZTooW2ZvbnQgcG9pbnRTaXplXSAqIFNN
QUxMQ0FQU19GT05UU0laRV9NVUxUSVBMSUVSKV0gc2NyZWVuRm9udF07CisgICAgcmV0dXJuIFtz
ZWxmIF9zbWFsbENhcHNGb250Rm9yRm9udDpmb250XTsKK30KKworLSAoTlNGb250ICopX3NtYWxs
Q2Fwc0ZvbnRGb3JGb250OihOU0ZvbnQgKilmCit7CisgICAgaWYgKCFzbWFsbENhcHNGb250KSB7
CisgICAgICAgIHNtYWxsQ2Fwc0ZvbnQgPSBbW05TRm9udE1hbmFnZXIgc2hhcmVkRm9udE1hbmFn
ZXJdIGNvbnZlcnRGb250OmYgdG9IYXZlVHJhaXQ6TlNTbWFsbENhcHNGb250TWFza107CisgICAg
ICAgIGlmIChmb250ICE9IHNtYWxsQ2Fwc0ZvbnQpIHsKKyAgICAgICAgICAgIHNtYWxsQ2Fwc0Zv
bnQgPSBbc21hbGxDYXBzRm9udCBzY3JlZW5Gb250XTsKKyAgICAgICAgICAgIAorICAgICAgICAg
ICAgLy8gY2hlY2sgZm9yIExldHRlckNhc2VUeXBlOiBTbWFsbENhcHMgZm9udCBmZWF0dXJlOyBp
ZiBwcmVzZW50LCB3ZQorICAgICAgICAgICAgLy8gaGF2ZSBhbiBBQVQvT3BlblR5cGUgZmVhdHVy
ZSwgb3RoZXJ3aXNlIHdlIGhhdmUgYSB2YXJpYW50IHR5cGVmYWNlCisgICAgICAgICAgICBJdGVt
Q291bnQgY291bnQ7CisgICAgICAgICAgICBBVFNVRm9udElEIGZvbnRJRCA9IFdLR2V0TlNGb250
QVRTVUZvbnRJZChzbWFsbENhcHNGb250KTsKKyAgICAgICAgICAgIE9TU3RhdHVzIHN0YXR1cyA9
IEFUU1VDb3VudEZvbnRGZWF0dXJlU2VsZWN0b3JzKGZvbnRJRCwga0xldHRlckNhc2VUeXBlLCAm
Y291bnQpOworICAgICAgICAgICAgaWYgKHN0YXR1cyA9PSBub0VyciAmJiBjb3VudCA+IDApIHsK
KyAgICAgICAgICAgICAgICBBVFNVRm9udEZlYXR1cmVUeXBlICpzZWxlY3RvcnMgPSAoQVRTVUZv
bnRGZWF0dXJlVHlwZSAqKSBtYWxsb2MoY291bnQgKiBzaXplb2YoQVRTVUZvbnRGZWF0dXJlU2Vs
ZWN0b3IpKTsKKyAgICAgICAgICAgICAgICBpZiAoc2VsZWN0b3JzICE9IE5VTEwpIHsKKyAgICAg
ICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGk7CisgICAgICAgICAgICAgICAgICAgIEFUU1VH
ZXRGb250RmVhdHVyZVNlbGVjdG9ycyhmb250SUQsIGtMZXR0ZXJDYXNlVHlwZSwgY291bnQsIHNl
bGVjdG9ycywgTlVMTCwgTlVMTCwgTlVMTCk7CisgICAgICAgICAgICAgICAgICAgIGZvciAoaSA9
IDA7IGkgPCBjb3VudDsgaSsrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2VsZWN0
b3JzW2ldID09IGtTbWFsbENhcHNTZWxlY3RvcikgeworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHRydWVTbWFsbENhcHMgPSBZRVM7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICAgICAgZnJlZShzZWxlY3RvcnMpOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHNtYWxs
Q2Fwc0ZvbnQgPSBbW1tOU0ZvbnRNYW5hZ2VyIHNoYXJlZEZvbnRNYW5hZ2VyXSBjb252ZXJ0Rm9u
dDpmIHRvU2l6ZTooW2ZvbnQgcG9pbnRTaXplXSAqIFNNQUxMQ0FQU19GT05UU0laRV9NVUxUSVBM
SUVSKV0gc2NyZWVuRm9udF07CisgICAgICAgICAgICBzaW11bGF0ZWRTbWFsbENhcHMgPSBZRVM7
CisgICAgICAgIH0KKyAgICB9CiAgICAgcmV0dXJuIHVzaW5nUHJpbnRlckZvbnQgPyBbc21hbGxD
YXBzRm9udCBwcmludGVyRm9udF0gOiBzbWFsbENhcHNGb250OwogfQogCkBAIC0xMTc1LDcgKzEy
MTcsNyBAQCBzdGF0aWMgY29uc3QgY2hhciAqam9pbmluZ05hbWVzW10gPSB7CiAKIC0gKGZsb2F0
KV9mbG9hdFdpZHRoRm9yUnVuOihjb25zdCBXZWJDb3JlVGV4dFJ1biAqKXJ1biBzdHlsZTooY29u
c3QgV2ViQ29yZVRleHRTdHlsZSAqKXN0eWxlIHdpZHRoczooZmxvYXQgKil3aWR0aEJ1ZmZlciBm
b250czooTlNGb250ICoqKWZvbnRCdWZmZXIgZ2x5cGhzOihDR0dseXBoICopZ2x5cGhCdWZmZXIg
c3RhcnRQb3NpdGlvbjooZmxvYXQgKilzdGFydFBvc2l0aW9uIG51bUdseXBoczooaW50ICopX251
bUdseXBocwogewotICAgIGlmIChzaG91bGRVc2VBVFNVKHJ1bikpCisgICAgaWYgKHNob3VsZFVz
ZUFUU1Uoc2VsZiwgcnVuLCBzdHlsZSkpCiAgICAgICAgIHJldHVybiBbc2VsZiBfQVRTVV9mbG9h
dFdpZHRoRm9yUnVuOnJ1biBzdHlsZTpzdHlsZV07CiAgICAgCiAgICAgcmV0dXJuIFtzZWxmIF9D
R19mbG9hdFdpZHRoRm9yUnVuOnJ1biBzdHlsZTpzdHlsZSB3aWR0aHM6d2lkdGhCdWZmZXIgZm9u
dHM6Zm9udEJ1ZmZlciBnbHlwaHM6Z2x5cGhCdWZmZXIgc3RhcnRQb3NpdGlvbjpzdGFydFBvc2l0
aW9uIG51bUdseXBoczpfbnVtR2x5cGhzXTsKQEAgLTE0NDMsNyArMTQ4NSw3IEBAIHN0YXRpYyBj
b25zdCBjaGFyICpqb2luaW5nTmFtZXNbXSA9IHsKIH0KIAogCi0tICh2b2lkKV9pbml0aWFsaXpl
QVRTVVN0eWxlCistICh2b2lkKV9pbml0aWFsaXplQVRTVVN0eWxlOihjb25zdCBXZWJDb3JlVGV4
dFN0eWxlICopc3R5bGUKIHsKICAgICAvLyBUaGUgdHdvIE5TRm9udCBjYWxscyBpbiB0aGlzIG1l
dGhvZCAocG9pbnRTaXplIGFuZCBfYXRzRm9udElEKQogICAgIC8vIGFyZSBib3RoIGV4Y2VwdGlv
bi1zYWZlLgpAQCAtMTQ1Niw4ICsxNDk4LDEyIEBAIHN0YXRpYyBjb25zdCBjaGFyICpqb2luaW5n
TmFtZXNbXSA9IHsKICAgICAgICAgaWYoc3RhdHVzICE9IG5vRXJyKQogICAgICAgICAgICAgRkFU
QUxfQUxXQVlTICgiQVRTVUNyZWF0ZVN0eWxlIGZhaWxlZCAoJWQpIiwgc3RhdHVzKTsKICAgICAK
LSAgICAgICAgQVRTVUZvbnRJRCBmb250SUQgPSBXS0dldE5TRm9udEFUU1VGb250SWQoZm9udCk7
Ci0gICAgICAgIGlmIChmb250SUQgPT0gMCl7CisgICAgICAgIEFUU1VGb250SUQgZm9udElEOwor
ICAgICAgICBpZiAoc3R5bGUtPnNtYWxsQ2FwcykKKyAgICAgICAgICAgIGZvbnRJRCA9IFdLR2V0
TlNGb250QVRTVUZvbnRJZChbc2VsZiBfc21hbGxDYXBzRm9udF0pOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICBmb250SUQgPSBXS0dldE5TRm9udEFUU1VGb250SWQoZm9udCk7CisgICAgICAg
IGlmIChmb250SUQgPT0gMCkgewogICAgICAgICAgICAgQVRTVURpc3Bvc2VTdHlsZShfQVRTVVNz
dHlsZSk7CiAgICAgICAgICAgICBFUlJPUiAoInVuYWJsZSB0byBnZXQgQVRTVUZvbnRJRCBmb3Ig
JUAiLCBmb250KTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTE0NzEsNiArMTUxNyw3IEBAIHN0
YXRpYyBjb25zdCBjaGFyICpqb2luaW5nTmFtZXNbXSA9IHsKICAgICAgICAgc3RhdHVzID0gQVRT
VVNldEF0dHJpYnV0ZXMgKF9BVFNVU3N0eWxlLCAzLCBzdHlsZVRhZ3MsIHN0eWxlU2l6ZXMsIHN0
eWxlVmFsdWVzKTsKICAgICAgICAgaWYoc3RhdHVzICE9IG5vRXJyKQogICAgICAgICAgICAgRkFU
QUxfQUxXQVlTICgiQVRTVVNldEF0dHJpYnV0ZXMgZmFpbGVkICglZCkiLCBzdGF0dXMpOworICAg
ICAgICAKICAgICAgICAgc3RhdHVzID0gQVRTRm9udEdldFRhYmxlKGZvbnRJRCwgJ3Byb3AnLCAw
LCAwLCAwLCAmcHJvcFRhYmxlU2l6ZSk7CiAgICAgICAgIGlmIChzdGF0dXMgPT0gbm9FcnIpICAg
IC8vIG5haXZlbHkgYXNzdW1lIHRoYXQgaWYgYSAncHJvcCcgdGFibGUgZXhpc3RzIHRoZW4gaXQg
Y29udGFpbnMgbWlycm9yaW5nIGluZm8KICAgICAgICAgICAgIEFUU1VNaXJyb3JzID0gWUVTOwpA
QCAtMTQ3OCw2ICsxNTI1LDEzIEBAIHN0YXRpYyBjb25zdCBjaGFyICpqb2luaW5nTmFtZXNbXSA9
IHsKICAgICAgICAgICAgIEFUU1VNaXJyb3JzID0gTk87CiAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgIEZBVEFMX0FMV0FZUyAoIkFUU0ZvbnRHZXRUYWJsZSBmYWlsZWQgKCVkKSIsIHN0YXR1cyk7
CisgICAgICAgIAorICAgICAgICBpZiAoc3R5bGUtPnNtYWxsQ2FwcyAmJiB0cnVlU21hbGxDYXBz
KSB7CisgICAgICAgICAgICAvLyBhY3RpdmF0ZSBmZWF0dXJlLCB0cnkgYW5kIHNldCBvbGQtc3R5
bGUgbnVtYmVycyB0b28KKyAgICAgICAgICAgIEFUU1VGb250RmVhdHVyZVR5cGUgdHlwZXNbXSA9
IHsga0xldHRlckNhc2VUeXBlLCBrTnVtYmVyQ2FzZVR5cGUgfTsKKyAgICAgICAgICAgIEFUU1VG
b250RmVhdHVyZVNlbGVjdG9yIHNlbGVjdG9yc1tdID0geyBrU21hbGxDYXBzU2VsZWN0b3IsIGtM
b3dlckNhc2VOdW1iZXJzU2VsZWN0b3IgfTsKKyAgICAgICAgICAgIEFUU1VTZXRGb250RmVhdHVy
ZXMoX0FUU1VTc3R5bGUsIDIsIHR5cGVzLCBzZWxlY3RvcnMpOworICAgICAgICB9CiAKICAgICAg
ICAgQVRTVVN0eWxlSW5pdGlhbGl6ZWQgPSBZRVM7CiAgICAgfQpAQCAtMTQ5NSwxMSArMTU0OSwx
OCBAQCBzdGF0aWMgY29uc3QgY2hhciAqam9pbmluZ05hbWVzW10gPSB7CiAgICAgVW5pQ2hhckNv
dW50IHN1YnN0aXR1dGVMZW5ndGg7CiAgICAgT1NTdGF0dXMgc3RhdHVzOwogICAgIAotICAgIFtz
ZWxmIF9pbml0aWFsaXplQVRTVVN0eWxlXTsKKyAgICBbc2VsZiBfaW5pdGlhbGl6ZUFUU1VTdHls
ZTpzdHlsZV07CiAgICAgCiAgICAgLy8gRklYTUU6IFRoaXMgaXMgbWlzc2luZyB0aGUgZm9sbG93
aW5nIGZlYXR1cmVzIHRoYXQgdGhlIENvcmVHcmFwaGljcyBjb2RlIHBhdGggaGFzOgogICAgIC8v
IC0gQm90aCBcbiBhbmQgbm9uYnJlYWtpbmcgc3BhY2UgcmVuZGVyIGFzIGEgc3BhY2UuCiAgICAg
Ly8gLSBBbGwgb3RoZXIgY29udHJvbCBjaGFyYWN0ZXJzIG11c3Qgbm90IHJlbmRlciBhdCBhbGwg
KG90aGVyIGNvZGUgcGF0aCB1c2VzIHplcm8td2lkdGggc3BhY2VzKS4KKyAgICAKKyAgICBXZWJD
b3JlVGV4dFJ1biBjYXBzUnVuOworICAgIGlmKHN0eWxlLT5zbWFsbENhcHMgJiYgc2ltdWxhdGVk
U21hbGxDYXBzKSB7CisgICAgICAgIC8vIHN5bnRoZXNpemVkIHNtYWxsLWNhcHM6IGNhcGl0YWxp
emUgY2hhcmFjdGVycyBpbiBydW4KKyAgICAgICAgY2Fwc1J1biA9IGNhcGl0YWxpemVDaGFyYWN0
ZXJzSW5SdW4ocnVuKTsKKyAgICAgICAgcnVuID0gJmNhcHNSdW47CisgICAgfQogCiAgICAgcnVu
TGVuZ3RoID0gcnVuLT50byAtIHJ1bi0+ZnJvbTsKICAgICBzdGF0dXMgPSBBVFNVQ3JlYXRlVGV4
dExheW91dFdpdGhUZXh0UHRyKApAQCAtMTUzNSw3ICsxNTk2LDcgQEAgc3RhdGljIGNvbnN0IGNo
YXIgKmpvaW5pbmdOYW1lc1tdID0gewogICAgICAgICBOU0ZvbnQgKnN1YnN0aXR1dGVGb250ID0g
W3NlbGYgX3N1YnN0aXR1dGVGb250Rm9yQ2hhcmFjdGVyczpydW4tPmNoYXJhY3RlcnMrc3Vic3Rp
dHV0ZU9mZnNldCBsZW5ndGg6c3Vic3RpdHV0ZUxlbmd0aCBmYW1pbGllczpzdHlsZS0+ZmFtaWxp
ZXNdOwogICAgICAgICBpZiAoc3Vic3RpdHV0ZUZvbnQpIHsKICAgICAgICAgICAgIFdlYlRleHRS
ZW5kZXJlciAqc3Vic3RpdHV0ZVJlbmRlcmVyID0gW1tXZWJUZXh0UmVuZGVyZXJGYWN0b3J5IHNo
YXJlZEZhY3RvcnldIHJlbmRlcmVyV2l0aEZvbnQ6c3Vic3RpdHV0ZUZvbnQgdXNpbmdQcmludGVy
Rm9udDp1c2luZ1ByaW50ZXJGb250XTsKLSAgICAgICAgICAgIFtzdWJzdGl0dXRlUmVuZGVyZXIg
X2luaXRpYWxpemVBVFNVU3R5bGVdOworICAgICAgICAgICAgW3N1YnN0aXR1dGVSZW5kZXJlciBf
aW5pdGlhbGl6ZUFUU1VTdHlsZTpzdHlsZV07CiAgICAgICAgICAgICBpZiAoc3Vic3RpdHV0ZVJl
bmRlcmVyICYmIHN1YnN0aXR1dGVSZW5kZXJlci0+X0FUU1VTc3R5bGUpCiAgICAgICAgICAgICAg
ICAgQVRTVVNldFJ1blN0eWxlKGxheW91dCwgc3Vic3RpdHV0ZVJlbmRlcmVyLT5fQVRTVVNzdHls
ZSwgc3Vic3RpdHV0ZU9mZnNldCwgc3Vic3RpdHV0ZUxlbmd0aCk7CiAgICAgICAgICAgICAvLyBp
Z25vcmluZyBlcnJvcnMKQEAgLTE1NDMsNyArMTYwNCwxMCBAQCBzdGF0aWMgY29uc3QgY2hhciAq
am9pbmluZ05hbWVzW10gPSB7CiAgICAgICAgIHN1YnN0aXR1dGVPZmZzZXQgKz0gc3Vic3RpdHV0
ZUxlbmd0aDsKICAgICB9OwogICAgIC8vIGlnbm9yaW5nIGVycm9ycyBpbiBmb250IHN1YnN0aXR1
dGlvbgotICAgICAgICAKKyAgICAKKyAgICBpZihzdHlsZS0+c21hbGxDYXBzICYmIHNpbXVsYXRl
ZFNtYWxsQ2FwcykKKyAgICAgICAgZnJlZSgodm9pZCAqKWNhcHNSdW4uY2hhcmFjdGVycyk7Cisg
ICAgCiAgICAgcmV0dXJuIGxheW91dDsKIH0KIApAQCAtMTU3OSw5ICsxNjQzLDcgQEAgc3RhdGlj
IGNvbnN0IGNoYXIgKmpvaW5pbmdOYW1lc1tdID0gewogCiAtIChmbG9hdClfQVRTVV9mbG9hdFdp
ZHRoRm9yUnVuOihjb25zdCBXZWJDb3JlVGV4dFJ1biAqKXJ1biBzdHlsZTooY29uc3QgV2ViQ29y
ZVRleHRTdHlsZSAqKXN0eWxlCiB7Ci0gICAgQVRTVHJhcGV6b2lkIG9HbHlwaEJvdW5kczsKLSAg
ICAKLSAgICBvR2x5cGhCb3VuZHMgPSBbc2VsZiBfdHJhcGV6b2lkRm9yUnVuOnJ1biBzdHlsZTpz
dHlsZSBhdFBvaW50Ok5TTWFrZVBvaW50ICgwLDApXTsKKyAgICBBVFNUcmFwZXpvaWQgb0dseXBo
Qm91bmRzID0gW3NlbGYgX3RyYXBlem9pZEZvclJ1bjpydW4gc3R5bGU6c3R5bGUgYXRQb2ludDpO
U01ha2VQb2ludCgwLDApXTsKICAgICAKICAgICBmbG9hdCB3aWR0aCA9IAogICAgICAgICBNQVgo
Rml4ZWRUb0Zsb2F0KG9HbHlwaEJvdW5kcy51cHBlclJpZ2h0LngpLCBGaXhlZFRvRmxvYXQob0ds
eXBoQm91bmRzLmxvd2VyUmlnaHQueCkpIC0gCkBAIC0xNTkxLDYgKzE2NTMsMjYgQEAgc3RhdGlj
IGNvbnN0IGNoYXIgKmpvaW5pbmdOYW1lc1tdID0gewogfQogCiAvLyBCZSBzdXJlIHRvIGZyZWUg
dGhlIHJ1bi5jaGFyYWN0ZXJzIGFsbG9jYXRlZCBieSB0aGlzIGZ1bmN0aW9uLgorc3RhdGljIFdl
YkNvcmVUZXh0UnVuIGNhcGl0YWxpemVDaGFyYWN0ZXJzSW5SdW4oY29uc3QgV2ViQ29yZVRleHRS
dW4gKnJ1bikKK3sKKyAgICBXZWJDb3JlVGV4dFJ1biBzd2FwcGVkUnVuOworICAgIHVuc2lnbmVk
IGludCBpOworICAgIAorICAgIFVuaUNoYXIgKnN3YXBwZWRDaGFyYWN0ZXJzID0gKFVuaUNoYXIg
KiltYWxsb2Moc2l6ZW9mKFVuaUNoYXIpKihydW4tPmxlbmd0aCkpOworICAgIGZvciAoaT0wOyBp
IDwgcnVuLT5sZW5ndGg7IGkrKykgeworICAgICAgICAvLyB3aWxsIGNob2tlIG9uIHN1cnJvZ2F0
ZSBwYWlycz8KKy8vICAgICAgaWYoIXVfaXNVVXBwZXJjYXNlKHJ1bi0+Y2hhcmFjdGVyc1tpXSkp
CisgICAgICAgICAgICBzd2FwcGVkQ2hhcmFjdGVyc1tpXSA9IHVfdG91cHBlcihydW4tPmNoYXJh
Y3RlcnNbaV0pOworICAgIH0KKyAgICBzd2FwcGVkUnVuLmZyb20gPSBydW4tPmZyb207CisgICAg
c3dhcHBlZFJ1bi50byA9IHJ1bi0+dG87CisgICAgc3dhcHBlZFJ1bi5sZW5ndGggPSBydW4tPmxl
bmd0aDsKKyAgICBzd2FwcGVkUnVuLmNoYXJhY3RlcnMgPSBzd2FwcGVkQ2hhcmFjdGVyczsKKwor
ICAgIHJldHVybiBzd2FwcGVkUnVuOworfQorCisvLyBCZSBzdXJlIHRvIGZyZWUgdGhlIHJ1bi5j
aGFyYWN0ZXJzIGFsbG9jYXRlZCBieSB0aGlzIGZ1bmN0aW9uLgogc3RhdGljIFdlYkNvcmVUZXh0
UnVuIHJldmVyc2VDaGFyYWN0ZXJzSW5SdW4oY29uc3QgV2ViQ29yZVRleHRSdW4gKnJ1bikKIHsK
ICAgICBXZWJDb3JlVGV4dFJ1biBzd2FwcGVkUnVuOwpAQCAtMjA1NywxMSArMjEzOSwxMiBAQCBz
dGF0aWMgZmxvYXQgd2lkdGhGb3JOZXh0Q2hhcmFjdGVyKENoYXJhCiAgICAgaWYgKHJlbmRlcmVy
LT5pc1NtYWxsQ2Fwc1JlbmRlcmVyKSB7CiAgICAgICAgIGlmICghdV9pc1VVcHBlcmNhc2UoYykp
IHsKICAgICAgICAgICAgIC8vIE9ubHkgdXNlIHNtYWxsIGNhcCBmb250IGlmIHRoZSB0aGUgdXBw
ZXJjYXNlIHZlcnNpb24gb2YgdGhlIGNoYXJhY3RlcgotICAgICAgICAgICAgLy8gaXMgZGlmZmVy
ZW50IHRoYW4gdGhlIGxvd2VyY2FzZS4KKyAgICAgICAgICAgIC8vIGlzIGRpZmZlcmVudCB0aGFu
IHRoZSBsb3dlcmNhc2UsIGFuZCBvbmx5IHRyYW5zZm9ybSBpZiB1c2luZyA3MCUgc3ludGhlc2lz
LgogICAgICAgICAgICAgVW5pY29kZUNoYXIgbmV3QyA9IHVfdG91cHBlcihjKTsKICAgICAgICAg
ICAgIGlmIChuZXdDICE9IGMpIHsKICAgICAgICAgICAgICAgICB1c2VTbWFsbENhcHNGb250ID0g
WUVTOwotICAgICAgICAgICAgICAgIGMgPSBuZXdDOworICAgICAgICAgICAgICAgIGlmIChyZW5k
ZXJlci0+c2ltdWxhdGVkU21hbGxDYXBzKQorICAgICAgICAgICAgICAgICAgICBjID0gbmV3QzsK
ICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KQEAgLTIxMTQsNyArMjE5Nyw3IEBAIHN0
YXRpYyBmbG9hdCB3aWR0aEZvck5leHRDaGFyYWN0ZXIoQ2hhcmEKICAgICAgICAgZWxzZSB7CiAg
ICAgICAgICAgICAvLyBQb3RlbnRpYWwgZm9yIG9wdGltaXphdGlvbi4gIFRoaXMgcGF0aCBzaG91
bGQgb25seSBiZSB0YWtlbiBpZiB3ZSdyZQogICAgICAgICAgICAgLy8gdXNpbmcgYSBjYWNoZWQg
c3Vic3RpdHV0ZWQgZm9udC4KLSAgICAgICAgICAgIF9mb250VXNlZCA9IFtbTlNGb250TWFuYWdl
ciBzaGFyZWRGb250TWFuYWdlcl0gY29udmVydEZvbnQ6X2ZvbnRVc2VkIHRvU2l6ZTpbX2ZvbnRV
c2VkIHBvaW50U2l6ZV0gKiBTTUFMTENBUFNfRk9OVFNJWkVfTVVMVElQTElFUl07CisgICAgICAg
ICAgICBfZm9udFVzZWQgPSBbcmVuZGVyZXIgX3NtYWxsQ2Fwc0ZvbnRGb3JGb250Ol9mb250VXNl
ZF07CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTIyNzQsMTMgKzIzNTcsMTMgQEAgc3RhdGljIEJP
T0wgZmlsbFN0eWxlV2l0aEF0dHJpYnV0ZXMoQVRTVQogICAgIHJldHVybiBOTzsKIH0KIAotc3Rh
dGljIEJPT0wgc2hvdWxkVXNlQVRTVShjb25zdCBXZWJDb3JlVGV4dFJ1biAqcnVuKQorc3RhdGlj
IEJPT0wgc2hvdWxkVXNlQVRTVShjb25zdCBXZWJUZXh0UmVuZGVyZXIgKnJlbmRlcmVyLCBjb25z
dCBXZWJDb3JlVGV4dFJ1biAqcnVuLCBjb25zdCBXZWJDb3JlVGV4dFN0eWxlICpzdHlsZSkKIHsK
ICAgICBVbmlDaGFyIGM7CiAgICAgY29uc3QgVW5pQ2hhciAqY2hhcmFjdGVycyA9IHJ1bi0+Y2hh
cmFjdGVyczsKICAgICBpbnQgaSwgZnJvbSA9IHJ1bi0+ZnJvbSwgdG8gPSBydW4tPnRvOwogICAg
IAotICAgIGlmIChhbHdheXNVc2VBVFNVKQorICAgIGlmIChhbHdheXNVc2VBVFNVIHx8IChzdHls
ZS0+c21hbGxDYXBzICYmIHJlbmRlcmVyLT50cnVlU21hbGxDYXBzKSkKICAgICAgICAgcmV0dXJu
IFlFUzsKICAgICAgICAgCiAgICAgZm9yIChpID0gZnJvbTsgaSA8IHRvOyBpKyspewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>3310</attachid>
            <date>2005-08-10 05:42:28 -0700</date>
            <delta_ts>2005-08-10 12:06:46 -0700</delta_ts>
            <desc>small-caps patch 2.0.2</desc>
            <filename>patch-a.diff</filename>
            <type>text/plain</type>
            <size>13045</size>
            <attacher name="Nicholas Shanks">nickshanks</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmVTdXBwb3J0LnN1YnByb2ovV2ViVGV4dFJlbmRlcmVyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQpSQ1MgZmlsZTogL2N2cy9yb290L1dlYktpdC9XZWJDb3JlU3VwcG9ydC5zdWJwcm9qL1dlYlRl
eHRSZW5kZXJlci5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjM4CmRpZmYgLXAgLXUgLXIxLjM4
IFdlYkNvcmVTdXBwb3J0LnN1YnByb2ovV2ViVGV4dFJlbmRlcmVyLmgKLS0tIFdlYkNvcmVTdXBw
b3J0LnN1YnByb2ovV2ViVGV4dFJlbmRlcmVyLmgJMTIgSnVsIDIwMDUgMTc6NDQ6MTAgLTAwMDAJ
MS4zOAorKysgV2ViQ29yZVN1cHBvcnQuc3VicHJvai9XZWJUZXh0UmVuZGVyZXIuaAkxMCBBdWcg
MjAwNSAwMDo0OToyMyAtMDAwMApAQCAtNjQsNiArNjQsOCBAQCB0eXBlZGVmIHN0cnVjdCBDaGFy
YWN0ZXJXaWR0aEl0ZXJhdG9yIENoCiAgICAgU3Vic3RpdHV0ZUZvbnRXaWR0aE1hcCAqc3Vic3Rp
dHV0ZUZvbnRXaWR0aE1hcHM7CiAgICAgQk9PTCB1c2luZ1ByaW50ZXJGb250OwogICAgIEJPT0wg
aXNTbWFsbENhcHNSZW5kZXJlcjsKKyAgICBCT09MIHNpbXVsYXRlZFNtYWxsQ2FwczsgICAgICAg
IC8vIDcwJSByZWR1Y3Rpb24sIHJlcXVpcmVzIHVwcGVyY2FzaW5nIHRleHQgcnVucworICAgIEJP
T0wgdHJ1ZVNtYWxsQ2FwczsgICAgICAgICAgICAgLy8gc21hbGwtY2FwcyBhdmFpbGFibGUgYXMg
QUFUL09wZW5UeXBlIGZvbnQgZmVhdHVyZQogICAgIAogQHByaXZhdGUKICAgICBXZWJUZXh0UmVu
ZGVyZXIgKnNtYWxsQ2Fwc1JlbmRlcmVyOwpJbmRleDogV2ViQ29yZVN1cHBvcnQuc3VicHJvai9X
ZWJUZXh0UmVuZGVyZXIubQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2ViS2l0L1dl
YkNvcmVTdXBwb3J0LnN1YnByb2ovV2ViVGV4dFJlbmRlcmVyLm0sdgpyZXRyaWV2aW5nIHJldmlz
aW9uIDEuMTg1CmRpZmYgLXAgLXUgLXIxLjE4NSBXZWJDb3JlU3VwcG9ydC5zdWJwcm9qL1dlYlRl
eHRSZW5kZXJlci5tCi0tLSBXZWJDb3JlU3VwcG9ydC5zdWJwcm9qL1dlYlRleHRSZW5kZXJlci5t
CTEgQXVnIDIwMDUgMjE6MTk6NDIgLTAwMDAJMS4xODUKKysrIFdlYkNvcmVTdXBwb3J0LnN1YnBy
b2ovV2ViVGV4dFJlbmRlcmVyLm0JMTAgQXVnIDIwMDUgMDA6NDk6MjYgLTAwMDAKQEAgLTE2Nyw2
ICsxNjcsNyBAQCBzdHJ1Y3QgQ2hhcmFjdGVyV2lkdGhJdGVyYXRvcgogLSAoQk9PTClfaXNTbWFs
bENhcHNSZW5kZXJlcjsKIC0gKFdlYlRleHRSZW5kZXJlciAqKV9zbWFsbENhcHNSZW5kZXJlcjsK
IC0gKE5TRm9udCAqKV9zbWFsbENhcHNGb250OworLSAoTlNGb250ICopX3NtYWxsQ2Fwc0ZvbnRG
b3JGb250OihOU0ZvbnQgKilmOwogCiBAZW5kCiAKQEAgLTI4Niw5ICsyODcsMTUgQEAgc3RhdGlj
IHZvaWQgaW5pdGlhbGl6ZUNoYXJhY3RlcldpZHRoSXRlcgogc3RhdGljIGZsb2F0IHdpZHRoRm9y
TmV4dENoYXJhY3RlciAoQ2hhcmFjdGVyV2lkdGhJdGVyYXRvciAqaXRlcmF0b3IsIEFUU0dseXBo
UmVmICpnbHlwaFVzZWQsIE5TRm9udCAqKmZvbnRVc2VkKTsKIAogCisvLyBBVFNVIHRleHQgcnVu
IHRyYW5zZm9ybWF0aW9ucworc3RhdGljIFdlYkNvcmVUZXh0UnVuIGNhcGl0YWxpemVDaGFyYWN0
ZXJzSW5SdW4oY29uc3QgV2ViQ29yZVRleHRSdW4gKnJ1bik7CitzdGF0aWMgV2ViQ29yZVRleHRS
dW4gcmV2ZXJzZUNoYXJhY3RlcnNJblJ1bihjb25zdCBXZWJDb3JlVGV4dFJ1biAqcnVuKTsKK3N0
YXRpYyBXZWJDb3JlVGV4dFJ1biBhcHBseU1pcnJvcmluZ1RvUnVuKGNvbnN0IFdlYkNvcmVUZXh0
UnVuICpydW4pOworCisKIC8vIE1pc2MuCiBzdGF0aWMgQk9PTCBmaWxsU3R5bGVXaXRoQXR0cmli
dXRlcyhBVFNVU3R5bGUgc3R5bGUsIE5TRm9udCAqdGhlRm9udCk7Ci1zdGF0aWMgQk9PTCBzaG91
bGRVc2VBVFNVKGNvbnN0IFdlYkNvcmVUZXh0UnVuICpydW4pOworc3RhdGljIEJPT0wgc2hvdWxk
VXNlQVRTVShjb25zdCBXZWJUZXh0UmVuZGVyZXIgKnJlbmRlcmVyLCBjb25zdCBXZWJDb3JlVGV4
dFJ1biAqcnVuKTsKIHN0YXRpYyBOU1N0cmluZyAqcGF0aEZyb21Gb250KE5TRm9udCAqZm9udCk7
CiAKIApAQCAtNDU0LDYgKzQ2MSw4IEBAIHN0YXRpYyBCT09MIGFsd2F5c1VzZUFUU1UgPSBOTzsK
ICNlbmRpZgogICAgICAKICAgICBpc1NtYWxsQ2Fwc1JlbmRlcmVyID0gTk87CisgICAgc2ltdWxh
dGVkU21hbGxDYXBzID0gTk87CisgICAgdHJ1ZVNtYWxsQ2FwcyA9IE5POwogICAgIAogICAgIHJl
dHVybiBzZWxmOwogfQpAQCAtNTM0LDcgKzU0Myw3IEBAIHN0YXRpYyBCT09MIGFsd2F5c1VzZUFU
U1UgPSBOTzsKICAgICAgICAgW1tzZWxmIF9zbWFsbENhcHNSZW5kZXJlcl0gZHJhd1J1bjpydW4g
c3R5bGU6c3R5bGUgZ2VvbWV0cnk6Z2VvbWV0cnldOwogICAgIH0KICAgICBlbHNlIHsKLSAgICAg
ICAgaWYgKHNob3VsZFVzZUFUU1UocnVuKSkKKyAgICAgICAgaWYgKHNob3VsZFVzZUFUU1Uoc2Vs
ZiwgcnVuKSkKICAgICAgICAgICAgIFtzZWxmIF9BVFNVX2RyYXdSdW46cnVuIHN0eWxlOnN0eWxl
IGdlb21ldHJ5Omdlb21ldHJ5XTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgW3NlbGYgX0NH
X2RyYXdSdW46cnVuIHN0eWxlOnN0eWxlIGdlb21ldHJ5Omdlb21ldHJ5XTsKQEAgLTYwOCw3ICs2
MTcsNyBAQCBzdGF0aWMgQk9PTCBhbHdheXNVc2VBVFNVID0gTk87CiAgICAgICAgIFtbc2VsZiBf
c21hbGxDYXBzUmVuZGVyZXJdIGRyYXdIaWdobGlnaHRGb3JSdW46cnVuIHN0eWxlOnN0eWxlIGdl
b21ldHJ5Omdlb21ldHJ5XTsKICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIGlmIChzaG91bGRV
c2VBVFNVKHJ1bikpCisgICAgICAgIGlmIChzaG91bGRVc2VBVFNVKHNlbGYsIHJ1bikpCiAgICAg
ICAgICAgICBbc2VsZiBfQVRTVV9kcmF3SGlnaGxpZ2h0Rm9yUnVuOnJ1biBzdHlsZTpzdHlsZSBn
ZW9tZXRyeTpnZW9tZXRyeV07CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIFtzZWxmIF9DR19k
cmF3SGlnaGxpZ2h0Rm9yUnVuOnJ1biBzdHlsZTpzdHlsZSBnZW9tZXRyeTpnZW9tZXRyeV07CkBA
IC02ODYsNyArNjk1LDcgQEAgc3RhdGljIEJPT0wgYWx3YXlzVXNlQVRTVSA9IE5POwogICAgICAg
ICByZXR1cm4gW1tzZWxmIF9zbWFsbENhcHNSZW5kZXJlcl0gcG9pbnRUb09mZnNldDpydW4gc3R5
bGU6c3R5bGUgcG9zaXRpb246eCByZXZlcnNlZDpyZXZlcnNlZCBpbmNsdWRlUGFydGlhbEdseXBo
czppbmNsdWRlUGFydGlhbEdseXBoc107CiAgICAgfQogCi0gICAgaWYgKHNob3VsZFVzZUFUU1Uo
cnVuKSkKKyAgICBpZiAoc2hvdWxkVXNlQVRTVShzZWxmLCBydW4pKQogICAgICAgICByZXR1cm4g
W3NlbGYgX0FUU1VfcG9pbnRUb09mZnNldDpydW4gc3R5bGU6c3R5bGUgcG9zaXRpb246eCByZXZl
cnNlZDpyZXZlcnNlZCBpbmNsdWRlUGFydGlhbEdseXBoczppbmNsdWRlUGFydGlhbEdseXBoc107
CiAgICAgcmV0dXJuIFtzZWxmIF9DR19wb2ludFRvT2Zmc2V0OnJ1biBzdHlsZTpzdHlsZSBwb3Np
dGlvbjp4IHJldmVyc2VkOnJldmVyc2VkIGluY2x1ZGVQYXJ0aWFsR2x5cGhzOmluY2x1ZGVQYXJ0
aWFsR2x5cGhzXTsKIH0KQEAgLTczNCw4ICs3NDMsNDEgQEAgc3RhdGljIEJPT0wgYWx3YXlzVXNl
QVRTVSA9IE5POwogCiAtIChOU0ZvbnQgKilfc21hbGxDYXBzRm9udAogewotICAgIGlmICghc21h
bGxDYXBzRm9udCkKLSAgICAgICAgc21hbGxDYXBzRm9udCA9IFtbW05TRm9udE1hbmFnZXIgc2hh
cmVkRm9udE1hbmFnZXJdIGNvbnZlcnRGb250OmZvbnQgdG9TaXplOihbZm9udCBwb2ludFNpemVd
ICogU01BTExDQVBTX0ZPTlRTSVpFX01VTFRJUExJRVIpXSBzY3JlZW5Gb250XTsKKyAgICByZXR1
cm4gW3NlbGYgX3NtYWxsQ2Fwc0ZvbnRGb3JGb250OmZvbnRdOworfQorCistIChOU0ZvbnQgKilf
c21hbGxDYXBzRm9udEZvckZvbnQ6KE5TRm9udCAqKWYKK3sKKyAgICBpZiAoIXNtYWxsQ2Fwc0Zv
bnQpIHsKKyAgICAgICAgc21hbGxDYXBzRm9udCA9IFtbTlNGb250TWFuYWdlciBzaGFyZWRGb250
TWFuYWdlcl0gY29udmVydEZvbnQ6ZiB0b0hhdmVUcmFpdDpOU1NtYWxsQ2Fwc0ZvbnRNYXNrXTsK
KyAgICAgICAgaWYgKGZvbnQgIT0gc21hbGxDYXBzRm9udCkgeworICAgICAgICAgICAgc21hbGxD
YXBzRm9udCA9IFtzbWFsbENhcHNGb250IHNjcmVlbkZvbnRdOworICAgICAgICAgICAgCisgICAg
ICAgICAgICAvLyBjaGVjayBmb3IgTGV0dGVyQ2FzZVR5cGU6IFNtYWxsQ2FwcyBmb250IGZlYXR1
cmU7IGlmIHByZXNlbnQsIHdlCisgICAgICAgICAgICAvLyBoYXZlIGFuIEFBVC9PcGVuVHlwZSBm
ZWF0dXJlLCBvdGhlcndpc2Ugd2UgaGF2ZSBhIHZhcmlhbnQgdHlwZWZhY2UKKyAgICAgICAgICAg
IEl0ZW1Db3VudCBjb3VudDsKKyAgICAgICAgICAgIEFUU1VGb250SUQgZm9udElEID0gV0tHZXRO
U0ZvbnRBVFNVRm9udElkKHNtYWxsQ2Fwc0ZvbnQpOworICAgICAgICAgICAgT1NTdGF0dXMgc3Rh
dHVzID0gQVRTVUNvdW50Rm9udEZlYXR1cmVTZWxlY3RvcnMoZm9udElELCBrTGV0dGVyQ2FzZVR5
cGUsICZjb3VudCk7CisgICAgICAgICAgICBpZiAoc3RhdHVzID09IG5vRXJyICYmIGNvdW50ID4g
MCkgeworICAgICAgICAgICAgICAgIEFUU1VGb250RmVhdHVyZVNlbGVjdG9yICpzZWxlY3RvcnMg
PSAoQVRTVUZvbnRGZWF0dXJlU2VsZWN0b3IgKikgbWFsbG9jKGNvdW50ICogc2l6ZW9mKEFUU1VG
b250RmVhdHVyZVNlbGVjdG9yKSk7CisgICAgICAgICAgICAgICAgaWYgKHNlbGVjdG9ycyAhPSBO
VUxMKSB7CisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBpOworICAgICAgICAgICAg
ICAgICAgICBBVFNVR2V0Rm9udEZlYXR1cmVTZWxlY3RvcnMoZm9udElELCBrTGV0dGVyQ2FzZVR5
cGUsIGNvdW50LCBzZWxlY3RvcnMsIE5VTEwsIE5VTEwsIE5VTEwpOworICAgICAgICAgICAgICAg
ICAgICBmb3IgKGkgPSAwOyBpIDwgY291bnQ7IGkrKykgeworICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKHNlbGVjdG9yc1tpXSA9PSBrU21hbGxDYXBzU2VsZWN0b3IpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB0cnVlU21hbGxDYXBzID0gWUVTOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGZyZWUoKHZvaWQgKilzZWxlY3RvcnMpOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgIHNtYWxsQ2Fwc0ZvbnQgPSBbW1tOU0ZvbnRNYW5hZ2VyIHNoYXJlZEZv
bnRNYW5hZ2VyXSBjb252ZXJ0Rm9udDpmIHRvU2l6ZTooW2ZvbnQgcG9pbnRTaXplXSAqIFNNQUxM
Q0FQU19GT05UU0laRV9NVUxUSVBMSUVSKV0gc2NyZWVuRm9udF07CisgICAgICAgICAgICBzaW11
bGF0ZWRTbWFsbENhcHMgPSBZRVM7CisgICAgICAgIH0KKyAgICB9CiAgICAgcmV0dXJuIHVzaW5n
UHJpbnRlckZvbnQgPyBbc21hbGxDYXBzRm9udCBwcmludGVyRm9udF0gOiBzbWFsbENhcHNGb250
OwogfQogCkBAIC0xMTc1LDcgKzEyMTcsNyBAQCBzdGF0aWMgY29uc3QgY2hhciAqam9pbmluZ05h
bWVzW10gPSB7CiAKIC0gKGZsb2F0KV9mbG9hdFdpZHRoRm9yUnVuOihjb25zdCBXZWJDb3JlVGV4
dFJ1biAqKXJ1biBzdHlsZTooY29uc3QgV2ViQ29yZVRleHRTdHlsZSAqKXN0eWxlIHdpZHRoczoo
ZmxvYXQgKil3aWR0aEJ1ZmZlciBmb250czooTlNGb250ICoqKWZvbnRCdWZmZXIgZ2x5cGhzOihD
R0dseXBoICopZ2x5cGhCdWZmZXIgc3RhcnRQb3NpdGlvbjooZmxvYXQgKilzdGFydFBvc2l0aW9u
IG51bUdseXBoczooaW50ICopX251bUdseXBocwogewotICAgIGlmIChzaG91bGRVc2VBVFNVKHJ1
bikpCisgICAgaWYgKHNob3VsZFVzZUFUU1Uoc2VsZiwgcnVuKSkKICAgICAgICAgcmV0dXJuIFtz
ZWxmIF9BVFNVX2Zsb2F0V2lkdGhGb3JSdW46cnVuIHN0eWxlOnN0eWxlXTsKICAgICAKICAgICBy
ZXR1cm4gW3NlbGYgX0NHX2Zsb2F0V2lkdGhGb3JSdW46cnVuIHN0eWxlOnN0eWxlIHdpZHRoczp3
aWR0aEJ1ZmZlciBmb250czpmb250QnVmZmVyIGdseXBoczpnbHlwaEJ1ZmZlciBzdGFydFBvc2l0
aW9uOnN0YXJ0UG9zaXRpb24gbnVtR2x5cGhzOl9udW1HbHlwaHNdOwpAQCAtMTQ0Myw3ICsxNDg1
LDcgQEAgc3RhdGljIGNvbnN0IGNoYXIgKmpvaW5pbmdOYW1lc1tdID0gewogfQogCiAKLS0gKHZv
aWQpX2luaXRpYWxpemVBVFNVU3R5bGUKKy0gKHZvaWQpX0FUU1VfaW5pdGlhbGl6ZVN0eWxlOihj
b25zdCBXZWJDb3JlVGV4dFN0eWxlICopc3R5bGUKIHsKICAgICAvLyBUaGUgdHdvIE5TRm9udCBj
YWxscyBpbiB0aGlzIG1ldGhvZCAocG9pbnRTaXplIGFuZCBfYXRzRm9udElEKQogICAgIC8vIGFy
ZSBib3RoIGV4Y2VwdGlvbi1zYWZlLgpAQCAtMTQ1Niw4ICsxNDk4LDEyIEBAIHN0YXRpYyBjb25z
dCBjaGFyICpqb2luaW5nTmFtZXNbXSA9IHsKICAgICAgICAgaWYoc3RhdHVzICE9IG5vRXJyKQog
ICAgICAgICAgICAgRkFUQUxfQUxXQVlTICgiQVRTVUNyZWF0ZVN0eWxlIGZhaWxlZCAoJWQpIiwg
c3RhdHVzKTsKICAgICAKLSAgICAgICAgQVRTVUZvbnRJRCBmb250SUQgPSBXS0dldE5TRm9udEFU
U1VGb250SWQoZm9udCk7Ci0gICAgICAgIGlmIChmb250SUQgPT0gMCl7CisgICAgICAgIEFUU1VG
b250SUQgZm9udElEOworICAgICAgICBpZiAoc3R5bGUtPnNtYWxsQ2FwcykKKyAgICAgICAgICAg
IGZvbnRJRCA9IFdLR2V0TlNGb250QVRTVUZvbnRJZChbc2VsZiBfc21hbGxDYXBzRm9udF0pOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICBmb250SUQgPSBXS0dldE5TRm9udEFUU1VGb250SWQo
Zm9udCk7CisgICAgICAgIGlmIChmb250SUQgPT0gMCkgewogICAgICAgICAgICAgQVRTVURpc3Bv
c2VTdHlsZShfQVRTVVNzdHlsZSk7CiAgICAgICAgICAgICBFUlJPUiAoInVuYWJsZSB0byBnZXQg
QVRTVUZvbnRJRCBmb3IgJUAiLCBmb250KTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTE0NzEs
NiArMTUxNyw3IEBAIHN0YXRpYyBjb25zdCBjaGFyICpqb2luaW5nTmFtZXNbXSA9IHsKICAgICAg
ICAgc3RhdHVzID0gQVRTVVNldEF0dHJpYnV0ZXMgKF9BVFNVU3N0eWxlLCAzLCBzdHlsZVRhZ3Ms
IHN0eWxlU2l6ZXMsIHN0eWxlVmFsdWVzKTsKICAgICAgICAgaWYoc3RhdHVzICE9IG5vRXJyKQog
ICAgICAgICAgICAgRkFUQUxfQUxXQVlTICgiQVRTVVNldEF0dHJpYnV0ZXMgZmFpbGVkICglZCki
LCBzdGF0dXMpOworICAgICAgICAKICAgICAgICAgc3RhdHVzID0gQVRTRm9udEdldFRhYmxlKGZv
bnRJRCwgJ3Byb3AnLCAwLCAwLCAwLCAmcHJvcFRhYmxlU2l6ZSk7CiAgICAgICAgIGlmIChzdGF0
dXMgPT0gbm9FcnIpICAgIC8vIG5haXZlbHkgYXNzdW1lIHRoYXQgaWYgYSAncHJvcCcgdGFibGUg
ZXhpc3RzIHRoZW4gaXQgY29udGFpbnMgbWlycm9yaW5nIGluZm8KICAgICAgICAgICAgIEFUU1VN
aXJyb3JzID0gWUVTOwpAQCAtMTQ3OCw2ICsxNTI1LDEzIEBAIHN0YXRpYyBjb25zdCBjaGFyICpq
b2luaW5nTmFtZXNbXSA9IHsKICAgICAgICAgICAgIEFUU1VNaXJyb3JzID0gTk87CiAgICAgICAg
IGVsc2UKICAgICAgICAgICAgIEZBVEFMX0FMV0FZUyAoIkFUU0ZvbnRHZXRUYWJsZSBmYWlsZWQg
KCVkKSIsIHN0YXR1cyk7CisgICAgICAgIAorICAgICAgICBpZiAoc3R5bGUtPnNtYWxsQ2FwcyAm
JiB0cnVlU21hbGxDYXBzKSB7CisgICAgICAgICAgICAvLyBhY3RpdmF0ZSBmZWF0dXJlLCB0cnkg
YW5kIHNldCBvbGQtc3R5bGUgbnVtYmVycyB0b28KKyAgICAgICAgICAgIEFUU1VGb250RmVhdHVy
ZVR5cGUgdHlwZXNbXSA9IHsga0xldHRlckNhc2VUeXBlLCBrTnVtYmVyQ2FzZVR5cGUgfTsKKyAg
ICAgICAgICAgIEFUU1VGb250RmVhdHVyZVNlbGVjdG9yIHNlbGVjdG9yc1tdID0geyBrU21hbGxD
YXBzU2VsZWN0b3IsIGtMb3dlckNhc2VOdW1iZXJzU2VsZWN0b3IgfTsKKyAgICAgICAgICAgIEFU
U1VTZXRGb250RmVhdHVyZXMoX0FUU1VTc3R5bGUsIDIsIHR5cGVzLCBzZWxlY3RvcnMpOworICAg
ICAgICB9CiAKICAgICAgICAgQVRTVVN0eWxlSW5pdGlhbGl6ZWQgPSBZRVM7CiAgICAgfQpAQCAt
MTQ5NSwxMSArMTU0OSwxOCBAQCBzdGF0aWMgY29uc3QgY2hhciAqam9pbmluZ05hbWVzW10gPSB7
CiAgICAgVW5pQ2hhckNvdW50IHN1YnN0aXR1dGVMZW5ndGg7CiAgICAgT1NTdGF0dXMgc3RhdHVz
OwogICAgIAotICAgIFtzZWxmIF9pbml0aWFsaXplQVRTVVN0eWxlXTsKKyAgICBbc2VsZiBfQVRT
VV9pbml0aWFsaXplU3R5bGU6c3R5bGVdOwogICAgIAogICAgIC8vIEZJWE1FOiBUaGlzIGlzIG1p
c3NpbmcgdGhlIGZvbGxvd2luZyBmZWF0dXJlcyB0aGF0IHRoZSBDb3JlR3JhcGhpY3MgY29kZSBw
YXRoIGhhczoKICAgICAvLyAtIEJvdGggXG4gYW5kIG5vbmJyZWFraW5nIHNwYWNlIHJlbmRlciBh
cyBhIHNwYWNlLgogICAgIC8vIC0gQWxsIG90aGVyIGNvbnRyb2wgY2hhcmFjdGVycyBtdXN0IG5v
dCByZW5kZXIgYXQgYWxsIChvdGhlciBjb2RlIHBhdGggdXNlcyB6ZXJvLXdpZHRoIHNwYWNlcyku
CisgICAgCisgICAgV2ViQ29yZVRleHRSdW4gY2Fwc1J1bjsKKyAgICBpZihzdHlsZS0+c21hbGxD
YXBzICYmIHNpbXVsYXRlZFNtYWxsQ2FwcykgeworICAgICAgICAvLyBzeW50aGVzaXplZCBzbWFs
bC1jYXBzOiBjYXBpdGFsaXplIGNoYXJhY3RlcnMgaW4gcnVuCisgICAgICAgIGNhcHNSdW4gPSBj
YXBpdGFsaXplQ2hhcmFjdGVyc0luUnVuKHJ1bik7CisgICAgICAgIHJ1biA9ICZjYXBzUnVuOwor
ICAgIH0KIAogICAgIHJ1bkxlbmd0aCA9IHJ1bi0+dG8gLSBydW4tPmZyb207CiAgICAgc3RhdHVz
ID0gQVRTVUNyZWF0ZVRleHRMYXlvdXRXaXRoVGV4dFB0cigKQEAgLTE1MzUsNyArMTU5Niw3IEBA
IHN0YXRpYyBjb25zdCBjaGFyICpqb2luaW5nTmFtZXNbXSA9IHsKICAgICAgICAgTlNGb250ICpz
dWJzdGl0dXRlRm9udCA9IFtzZWxmIF9zdWJzdGl0dXRlRm9udEZvckNoYXJhY3RlcnM6cnVuLT5j
aGFyYWN0ZXJzK3N1YnN0aXR1dGVPZmZzZXQgbGVuZ3RoOnN1YnN0aXR1dGVMZW5ndGggZmFtaWxp
ZXM6c3R5bGUtPmZhbWlsaWVzXTsKICAgICAgICAgaWYgKHN1YnN0aXR1dGVGb250KSB7CiAgICAg
ICAgICAgICBXZWJUZXh0UmVuZGVyZXIgKnN1YnN0aXR1dGVSZW5kZXJlciA9IFtbV2ViVGV4dFJl
bmRlcmVyRmFjdG9yeSBzaGFyZWRGYWN0b3J5XSByZW5kZXJlcldpdGhGb250OnN1YnN0aXR1dGVG
b250IHVzaW5nUHJpbnRlckZvbnQ6dXNpbmdQcmludGVyRm9udF07Ci0gICAgICAgICAgICBbc3Vi
c3RpdHV0ZVJlbmRlcmVyIF9pbml0aWFsaXplQVRTVVN0eWxlXTsKKyAgICAgICAgICAgIFtzdWJz
dGl0dXRlUmVuZGVyZXIgX0FUU1VfaW5pdGlhbGl6ZVN0eWxlOnN0eWxlXTsKICAgICAgICAgICAg
IGlmIChzdWJzdGl0dXRlUmVuZGVyZXIgJiYgc3Vic3RpdHV0ZVJlbmRlcmVyLT5fQVRTVVNzdHls
ZSkKICAgICAgICAgICAgICAgICBBVFNVU2V0UnVuU3R5bGUobGF5b3V0LCBzdWJzdGl0dXRlUmVu
ZGVyZXItPl9BVFNVU3N0eWxlLCBzdWJzdGl0dXRlT2Zmc2V0LCBzdWJzdGl0dXRlTGVuZ3RoKTsK
ICAgICAgICAgICAgIC8vIGlnbm9yaW5nIGVycm9ycwpAQCAtMTU0Myw3ICsxNjA0LDEwIEBAIHN0
YXRpYyBjb25zdCBjaGFyICpqb2luaW5nTmFtZXNbXSA9IHsKICAgICAgICAgc3Vic3RpdHV0ZU9m
ZnNldCArPSBzdWJzdGl0dXRlTGVuZ3RoOwogICAgIH07CiAgICAgLy8gaWdub3JpbmcgZXJyb3Jz
IGluIGZvbnQgc3Vic3RpdHV0aW9uCi0gICAgICAgIAorICAgIAorICAgIGlmKHN0eWxlLT5zbWFs
bENhcHMgJiYgc2ltdWxhdGVkU21hbGxDYXBzKQorICAgICAgICBmcmVlKCh2b2lkICopY2Fwc1J1
bi5jaGFyYWN0ZXJzKTsKKyAgICAKICAgICByZXR1cm4gbGF5b3V0OwogfQogCkBAIC0xNTc5LDkg
KzE2NDMsNyBAQCBzdGF0aWMgY29uc3QgY2hhciAqam9pbmluZ05hbWVzW10gPSB7CiAKIC0gKGZs
b2F0KV9BVFNVX2Zsb2F0V2lkdGhGb3JSdW46KGNvbnN0IFdlYkNvcmVUZXh0UnVuICopcnVuIHN0
eWxlOihjb25zdCBXZWJDb3JlVGV4dFN0eWxlICopc3R5bGUKIHsKLSAgICBBVFNUcmFwZXpvaWQg
b0dseXBoQm91bmRzOwotICAgIAotICAgIG9HbHlwaEJvdW5kcyA9IFtzZWxmIF90cmFwZXpvaWRG
b3JSdW46cnVuIHN0eWxlOnN0eWxlIGF0UG9pbnQ6TlNNYWtlUG9pbnQgKDAsMCldOworICAgIEFU
U1RyYXBlem9pZCBvR2x5cGhCb3VuZHMgPSBbc2VsZiBfdHJhcGV6b2lkRm9yUnVuOnJ1biBzdHls
ZTpzdHlsZSBhdFBvaW50Ok5TTWFrZVBvaW50KDAsMCldOwogICAgIAogICAgIGZsb2F0IHdpZHRo
ID0gCiAgICAgICAgIE1BWChGaXhlZFRvRmxvYXQob0dseXBoQm91bmRzLnVwcGVyUmlnaHQueCks
IEZpeGVkVG9GbG9hdChvR2x5cGhCb3VuZHMubG93ZXJSaWdodC54KSkgLSAKQEAgLTE1OTEsNiAr
MTY1MywyNiBAQCBzdGF0aWMgY29uc3QgY2hhciAqam9pbmluZ05hbWVzW10gPSB7CiB9CiAKIC8v
IEJlIHN1cmUgdG8gZnJlZSB0aGUgcnVuLmNoYXJhY3RlcnMgYWxsb2NhdGVkIGJ5IHRoaXMgZnVu
Y3Rpb24uCitzdGF0aWMgV2ViQ29yZVRleHRSdW4gY2FwaXRhbGl6ZUNoYXJhY3RlcnNJblJ1bihj
b25zdCBXZWJDb3JlVGV4dFJ1biAqcnVuKQoreworICAgIFdlYkNvcmVUZXh0UnVuIHN3YXBwZWRS
dW47CisgICAgdW5zaWduZWQgaW50IGk7CisgICAgCisgICAgVW5pQ2hhciAqc3dhcHBlZENoYXJh
Y3RlcnMgPSAoVW5pQ2hhciAqKW1hbGxvYyhzaXplb2YoVW5pQ2hhcikqKHJ1bi0+bGVuZ3RoKSk7
CisgICAgZm9yIChpPTA7IGkgPCBydW4tPmxlbmd0aDsgaSsrKSB7CisgICAgICAgIC8vIHdpbGwg
Y2hva2Ugb24gc3Vycm9nYXRlIHBhaXJzPworLy8gICAgICBpZighdV9pc1VVcHBlcmNhc2UocnVu
LT5jaGFyYWN0ZXJzW2ldKSkKKyAgICAgICAgICAgIHN3YXBwZWRDaGFyYWN0ZXJzW2ldID0gdV90
b3VwcGVyKHJ1bi0+Y2hhcmFjdGVyc1tpXSk7CisgICAgfQorICAgIHN3YXBwZWRSdW4uZnJvbSA9
IHJ1bi0+ZnJvbTsKKyAgICBzd2FwcGVkUnVuLnRvID0gcnVuLT50bzsKKyAgICBzd2FwcGVkUnVu
Lmxlbmd0aCA9IHJ1bi0+bGVuZ3RoOworICAgIHN3YXBwZWRSdW4uY2hhcmFjdGVycyA9IHN3YXBw
ZWRDaGFyYWN0ZXJzOworCisgICAgcmV0dXJuIHN3YXBwZWRSdW47Cit9CisKKy8vIEJlIHN1cmUg
dG8gZnJlZSB0aGUgcnVuLmNoYXJhY3RlcnMgYWxsb2NhdGVkIGJ5IHRoaXMgZnVuY3Rpb24uCiBz
dGF0aWMgV2ViQ29yZVRleHRSdW4gcmV2ZXJzZUNoYXJhY3RlcnNJblJ1bihjb25zdCBXZWJDb3Jl
VGV4dFJ1biAqcnVuKQogewogICAgIFdlYkNvcmVUZXh0UnVuIHN3YXBwZWRSdW47CkBAIC0yMDU3
LDExICsyMTM5LDEyIEBAIHN0YXRpYyBmbG9hdCB3aWR0aEZvck5leHRDaGFyYWN0ZXIoQ2hhcmEK
ICAgICBpZiAocmVuZGVyZXItPmlzU21hbGxDYXBzUmVuZGVyZXIpIHsKICAgICAgICAgaWYgKCF1
X2lzVVVwcGVyY2FzZShjKSkgewogICAgICAgICAgICAgLy8gT25seSB1c2Ugc21hbGwgY2FwIGZv
bnQgaWYgdGhlIHRoZSB1cHBlcmNhc2UgdmVyc2lvbiBvZiB0aGUgY2hhcmFjdGVyCi0gICAgICAg
ICAgICAvLyBpcyBkaWZmZXJlbnQgdGhhbiB0aGUgbG93ZXJjYXNlLgorICAgICAgICAgICAgLy8g
aXMgZGlmZmVyZW50IHRoYW4gdGhlIGxvd2VyY2FzZSwgYW5kIG9ubHkgdHJhbnNmb3JtIGlmIHVz
aW5nIDcwJSBzeW50aGVzaXMuCiAgICAgICAgICAgICBVbmljb2RlQ2hhciBuZXdDID0gdV90b3Vw
cGVyKGMpOwogICAgICAgICAgICAgaWYgKG5ld0MgIT0gYykgewogICAgICAgICAgICAgICAgIHVz
ZVNtYWxsQ2Fwc0ZvbnQgPSBZRVM7Ci0gICAgICAgICAgICAgICAgYyA9IG5ld0M7CisgICAgICAg
ICAgICAgICAgaWYgKHJlbmRlcmVyLT5zaW11bGF0ZWRTbWFsbENhcHMpCisgICAgICAgICAgICAg
ICAgICAgIGMgPSBuZXdDOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpAQCAtMjEx
NCw3ICsyMTk3LDcgQEAgc3RhdGljIGZsb2F0IHdpZHRoRm9yTmV4dENoYXJhY3RlcihDaGFyYQog
ICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIC8vIFBvdGVudGlhbCBmb3Igb3B0aW1pemF0aW9u
LiAgVGhpcyBwYXRoIHNob3VsZCBvbmx5IGJlIHRha2VuIGlmIHdlJ3JlCiAgICAgICAgICAgICAv
LyB1c2luZyBhIGNhY2hlZCBzdWJzdGl0dXRlZCBmb250LgotICAgICAgICAgICAgX2ZvbnRVc2Vk
ID0gW1tOU0ZvbnRNYW5hZ2VyIHNoYXJlZEZvbnRNYW5hZ2VyXSBjb252ZXJ0Rm9udDpfZm9udFVz
ZWQgdG9TaXplOltfZm9udFVzZWQgcG9pbnRTaXplXSAqIFNNQUxMQ0FQU19GT05UU0laRV9NVUxU
SVBMSUVSXTsKKyAgICAgICAgICAgIF9mb250VXNlZCA9IFtyZW5kZXJlciBfc21hbGxDYXBzRm9u
dEZvckZvbnQ6X2ZvbnRVc2VkXTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMjI3NCwxMyArMjM1
NywxMyBAQCBzdGF0aWMgQk9PTCBmaWxsU3R5bGVXaXRoQXR0cmlidXRlcyhBVFNVCiAgICAgcmV0
dXJuIE5POwogfQogCi1zdGF0aWMgQk9PTCBzaG91bGRVc2VBVFNVKGNvbnN0IFdlYkNvcmVUZXh0
UnVuICpydW4pCitzdGF0aWMgQk9PTCBzaG91bGRVc2VBVFNVKGNvbnN0IFdlYlRleHRSZW5kZXJl
ciAqcmVuZGVyZXIsIGNvbnN0IFdlYkNvcmVUZXh0UnVuICpydW4pCiB7CiAgICAgVW5pQ2hhciBj
OwogICAgIGNvbnN0IFVuaUNoYXIgKmNoYXJhY3RlcnMgPSBydW4tPmNoYXJhY3RlcnM7CiAgICAg
aW50IGksIGZyb20gPSBydW4tPmZyb20sIHRvID0gcnVuLT50bzsKICAgICAKLSAgICBpZiAoYWx3
YXlzVXNlQVRTVSkKKyAgICBpZiAoYWx3YXlzVXNlQVRTVSB8fCAocmVuZGVyZXItPmlzU21hbGxD
YXBzUmVuZGVyZXIgJiYgcmVuZGVyZXItPnRydWVTbWFsbENhcHMpKQogICAgICAgICByZXR1cm4g
WUVTOwogICAgICAgICAKICAgICBmb3IgKGkgPSBmcm9tOyBpIDwgdG87IGkrKyl7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>3314</attachid>
            <date>2005-08-10 11:52:39 -0700</date>
            <delta_ts>2005-08-10 12:20:59 -0700</delta_ts>
            <desc>small-caps patch 2.1</desc>
            <filename>patch-a.diff</filename>
            <type>text/plain</type>
            <size>13201</size>
            <attacher name="Nicholas Shanks">nickshanks</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmVTdXBwb3J0LnN1YnByb2ovV2ViVGV4dFJlbmRlcmVyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQpSQ1MgZmlsZTogL2N2cy9yb290L1dlYktpdC9XZWJDb3JlU3VwcG9ydC5zdWJwcm9qL1dlYlRl
eHRSZW5kZXJlci5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjM4CmRpZmYgLXAgLXUgLXIxLjM4
IFdlYkNvcmVTdXBwb3J0LnN1YnByb2ovV2ViVGV4dFJlbmRlcmVyLmgKLS0tIFdlYkNvcmVTdXBw
b3J0LnN1YnByb2ovV2ViVGV4dFJlbmRlcmVyLmgJMTIgSnVsIDIwMDUgMTc6NDQ6MTAgLTAwMDAJ
MS4zOAorKysgV2ViQ29yZVN1cHBvcnQuc3VicHJvai9XZWJUZXh0UmVuZGVyZXIuaAkxMCBBdWcg
MjAwNSAxODo1MTozOCAtMDAwMApAQCAtNjQsNiArNjQsOCBAQCB0eXBlZGVmIHN0cnVjdCBDaGFy
YWN0ZXJXaWR0aEl0ZXJhdG9yIENoCiAgICAgU3Vic3RpdHV0ZUZvbnRXaWR0aE1hcCAqc3Vic3Rp
dHV0ZUZvbnRXaWR0aE1hcHM7CiAgICAgQk9PTCB1c2luZ1ByaW50ZXJGb250OwogICAgIEJPT0wg
aXNTbWFsbENhcHNSZW5kZXJlcjsKKyAgICBCT09MIHNpbXVsYXRlZFNtYWxsQ2FwczsgICAgICAg
IC8vIDcwJSByZWR1Y3Rpb24sIHJlcXVpcmVzIHVwcGVyY2FzaW5nIHRleHQgcnVucworICAgIEJP
T0wgdHJ1ZVNtYWxsQ2FwczsgICAgICAgICAgICAgLy8gc21hbGwtY2FwcyBhdmFpbGFibGUgYXMg
QUFUL09wZW5UeXBlIGZvbnQgZmVhdHVyZQogICAgIAogQHByaXZhdGUKICAgICBXZWJUZXh0UmVu
ZGVyZXIgKnNtYWxsQ2Fwc1JlbmRlcmVyOwpJbmRleDogV2ViQ29yZVN1cHBvcnQuc3VicHJvai9X
ZWJUZXh0UmVuZGVyZXIubQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2ViS2l0L1dl
YkNvcmVTdXBwb3J0LnN1YnByb2ovV2ViVGV4dFJlbmRlcmVyLm0sdgpyZXRyaWV2aW5nIHJldmlz
aW9uIDEuMTg1CmRpZmYgLXAgLXUgLXIxLjE4NSBXZWJDb3JlU3VwcG9ydC5zdWJwcm9qL1dlYlRl
eHRSZW5kZXJlci5tCi0tLSBXZWJDb3JlU3VwcG9ydC5zdWJwcm9qL1dlYlRleHRSZW5kZXJlci5t
CTEgQXVnIDIwMDUgMjE6MTk6NDIgLTAwMDAJMS4xODUKKysrIFdlYkNvcmVTdXBwb3J0LnN1YnBy
b2ovV2ViVGV4dFJlbmRlcmVyLm0JMTAgQXVnIDIwMDUgMTg6NTE6NDEgLTAwMDAKQEAgLTE2Nyw2
ICsxNjcsNyBAQCBzdHJ1Y3QgQ2hhcmFjdGVyV2lkdGhJdGVyYXRvcgogLSAoQk9PTClfaXNTbWFs
bENhcHNSZW5kZXJlcjsKIC0gKFdlYlRleHRSZW5kZXJlciAqKV9zbWFsbENhcHNSZW5kZXJlcjsK
IC0gKE5TRm9udCAqKV9zbWFsbENhcHNGb250OworLSAoTlNGb250ICopX3NtYWxsQ2Fwc0ZvbnRG
b3JGb250OihOU0ZvbnQgKilmOwogCiBAZW5kCiAKQEAgLTI4Niw5ICsyODcsMTUgQEAgc3RhdGlj
IHZvaWQgaW5pdGlhbGl6ZUNoYXJhY3RlcldpZHRoSXRlcgogc3RhdGljIGZsb2F0IHdpZHRoRm9y
TmV4dENoYXJhY3RlciAoQ2hhcmFjdGVyV2lkdGhJdGVyYXRvciAqaXRlcmF0b3IsIEFUU0dseXBo
UmVmICpnbHlwaFVzZWQsIE5TRm9udCAqKmZvbnRVc2VkKTsKIAogCisvLyBBVFNVIHRleHQgcnVu
IHRyYW5zZm9ybWF0aW9ucworc3RhdGljIFdlYkNvcmVUZXh0UnVuIGNhcGl0YWxpemVDaGFyYWN0
ZXJzSW5SdW4oY29uc3QgV2ViQ29yZVRleHRSdW4gKnJ1bik7CitzdGF0aWMgV2ViQ29yZVRleHRS
dW4gcmV2ZXJzZUNoYXJhY3RlcnNJblJ1bihjb25zdCBXZWJDb3JlVGV4dFJ1biAqcnVuKTsKK3N0
YXRpYyBXZWJDb3JlVGV4dFJ1biBhcHBseU1pcnJvcmluZ1RvUnVuKGNvbnN0IFdlYkNvcmVUZXh0
UnVuICpydW4pOworCisKIC8vIE1pc2MuCiBzdGF0aWMgQk9PTCBmaWxsU3R5bGVXaXRoQXR0cmli
dXRlcyhBVFNVU3R5bGUgc3R5bGUsIE5TRm9udCAqdGhlRm9udCk7Ci1zdGF0aWMgQk9PTCBzaG91
bGRVc2VBVFNVKGNvbnN0IFdlYkNvcmVUZXh0UnVuICpydW4pOworc3RhdGljIEJPT0wgc2hvdWxk
VXNlQVRTVShjb25zdCBXZWJUZXh0UmVuZGVyZXIgKnJlbmRlcmVyLCBjb25zdCBXZWJDb3JlVGV4
dFJ1biAqcnVuKTsKIHN0YXRpYyBOU1N0cmluZyAqcGF0aEZyb21Gb250KE5TRm9udCAqZm9udCk7
CiAKIApAQCAtNDU0LDYgKzQ2MSw4IEBAIHN0YXRpYyBCT09MIGFsd2F5c1VzZUFUU1UgPSBOTzsK
ICNlbmRpZgogICAgICAKICAgICBpc1NtYWxsQ2Fwc1JlbmRlcmVyID0gTk87CisgICAgc2ltdWxh
dGVkU21hbGxDYXBzID0gTk87CisgICAgdHJ1ZVNtYWxsQ2FwcyA9IE5POwogICAgIAogICAgIHJl
dHVybiBzZWxmOwogfQpAQCAtNTM0LDcgKzU0Myw3IEBAIHN0YXRpYyBCT09MIGFsd2F5c1VzZUFU
U1UgPSBOTzsKICAgICAgICAgW1tzZWxmIF9zbWFsbENhcHNSZW5kZXJlcl0gZHJhd1J1bjpydW4g
c3R5bGU6c3R5bGUgZ2VvbWV0cnk6Z2VvbWV0cnldOwogICAgIH0KICAgICBlbHNlIHsKLSAgICAg
ICAgaWYgKHNob3VsZFVzZUFUU1UocnVuKSkKKyAgICAgICAgaWYgKHNob3VsZFVzZUFUU1Uoc2Vs
ZiwgcnVuKSkKICAgICAgICAgICAgIFtzZWxmIF9BVFNVX2RyYXdSdW46cnVuIHN0eWxlOnN0eWxl
IGdlb21ldHJ5Omdlb21ldHJ5XTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgW3NlbGYgX0NH
X2RyYXdSdW46cnVuIHN0eWxlOnN0eWxlIGdlb21ldHJ5Omdlb21ldHJ5XTsKQEAgLTYwOCw3ICs2
MTcsNyBAQCBzdGF0aWMgQk9PTCBhbHdheXNVc2VBVFNVID0gTk87CiAgICAgICAgIFtbc2VsZiBf
c21hbGxDYXBzUmVuZGVyZXJdIGRyYXdIaWdobGlnaHRGb3JSdW46cnVuIHN0eWxlOnN0eWxlIGdl
b21ldHJ5Omdlb21ldHJ5XTsKICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIGlmIChzaG91bGRV
c2VBVFNVKHJ1bikpCisgICAgICAgIGlmIChzaG91bGRVc2VBVFNVKHNlbGYsIHJ1bikpCiAgICAg
ICAgICAgICBbc2VsZiBfQVRTVV9kcmF3SGlnaGxpZ2h0Rm9yUnVuOnJ1biBzdHlsZTpzdHlsZSBn
ZW9tZXRyeTpnZW9tZXRyeV07CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIFtzZWxmIF9DR19k
cmF3SGlnaGxpZ2h0Rm9yUnVuOnJ1biBzdHlsZTpzdHlsZSBnZW9tZXRyeTpnZW9tZXRyeV07CkBA
IC02ODYsNyArNjk1LDcgQEAgc3RhdGljIEJPT0wgYWx3YXlzVXNlQVRTVSA9IE5POwogICAgICAg
ICByZXR1cm4gW1tzZWxmIF9zbWFsbENhcHNSZW5kZXJlcl0gcG9pbnRUb09mZnNldDpydW4gc3R5
bGU6c3R5bGUgcG9zaXRpb246eCByZXZlcnNlZDpyZXZlcnNlZCBpbmNsdWRlUGFydGlhbEdseXBo
czppbmNsdWRlUGFydGlhbEdseXBoc107CiAgICAgfQogCi0gICAgaWYgKHNob3VsZFVzZUFUU1Uo
cnVuKSkKKyAgICBpZiAoc2hvdWxkVXNlQVRTVShzZWxmLCBydW4pKQogICAgICAgICByZXR1cm4g
W3NlbGYgX0FUU1VfcG9pbnRUb09mZnNldDpydW4gc3R5bGU6c3R5bGUgcG9zaXRpb246eCByZXZl
cnNlZDpyZXZlcnNlZCBpbmNsdWRlUGFydGlhbEdseXBoczppbmNsdWRlUGFydGlhbEdseXBoc107
CiAgICAgcmV0dXJuIFtzZWxmIF9DR19wb2ludFRvT2Zmc2V0OnJ1biBzdHlsZTpzdHlsZSBwb3Np
dGlvbjp4IHJldmVyc2VkOnJldmVyc2VkIGluY2x1ZGVQYXJ0aWFsR2x5cGhzOmluY2x1ZGVQYXJ0
aWFsR2x5cGhzXTsKIH0KQEAgLTczNCw4ICs3NDMsNDUgQEAgc3RhdGljIEJPT0wgYWx3YXlzVXNl
QVRTVSA9IE5POwogCiAtIChOU0ZvbnQgKilfc21hbGxDYXBzRm9udAogewotICAgIGlmICghc21h
bGxDYXBzRm9udCkKLSAgICAgICAgc21hbGxDYXBzRm9udCA9IFtbW05TRm9udE1hbmFnZXIgc2hh
cmVkRm9udE1hbmFnZXJdIGNvbnZlcnRGb250OmZvbnQgdG9TaXplOihbZm9udCBwb2ludFNpemVd
ICogU01BTExDQVBTX0ZPTlRTSVpFX01VTFRJUExJRVIpXSBzY3JlZW5Gb250XTsKKyAgICByZXR1
cm4gW3NlbGYgX3NtYWxsQ2Fwc0ZvbnRGb3JGb250OmZvbnRdOworfQorCistIChOU0ZvbnQgKilf
c21hbGxDYXBzRm9udEZvckZvbnQ6KE5TRm9udCAqKWYKK3sKKyAgICBpZiAoIXNtYWxsQ2Fwc0Zv
bnQpIHsKKyAgICAgICAgLy8gZmlyc3QgY2hlY2sgZm9yIHRoZSBrTGV0dGVyQ2FzZVR5cGU6IGtT
bWFsbENhcHNTZWxlY3RvciBmb250IGZlYXR1cmUKKyAgICAgICAgLy8gaWYgcHJlc2VudCwgd2Ug
aGF2ZSBhbiBBQVQvT3BlblR5cGUgZm9udCB3aXRoIHNtYWxsLWNhcHMKKyAgICAgICAgSXRlbUNv
dW50IGNvdW50OworICAgICAgICBBVFNVRm9udElEIGZvbnRJRCA9IFdLR2V0TlNGb250QVRTVUZv
bnRJZChmKTsKKyAgICAgICAgT1NTdGF0dXMgc3RhdHVzID0gQVRTVUNvdW50Rm9udEZlYXR1cmVT
ZWxlY3RvcnMoZm9udElELCBrTGV0dGVyQ2FzZVR5cGUsICZjb3VudCk7CisgICAgICAgIGlmIChz
dGF0dXMgPT0gbm9FcnIgJiYgY291bnQgPiAwKSB7CisgICAgICAgICAgICBBVFNVRm9udEZlYXR1
cmVTZWxlY3RvciAqc2VsZWN0b3JzID0gKEFUU1VGb250RmVhdHVyZVNlbGVjdG9yICopIG1hbGxv
Yyhjb3VudCAqIHNpemVvZihBVFNVRm9udEZlYXR1cmVTZWxlY3RvcikpOworICAgICAgICAgICAg
aWYgKHNlbGVjdG9ycyAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGk7
CisgICAgICAgICAgICAgICAgQVRTVUdldEZvbnRGZWF0dXJlU2VsZWN0b3JzKGZvbnRJRCwga0xl
dHRlckNhc2VUeXBlLCBjb3VudCwgc2VsZWN0b3JzLCBOVUxMLCBOVUxMLCBOVUxMKTsKKyAgICAg
ICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgY291bnQ7IGkrKykgeworICAgICAgICAgICAgICAg
ICAgICBpZiAoc2VsZWN0b3JzW2ldID09IGtTbWFsbENhcHNTZWxlY3RvcikgeworICAgICAgICAg
ICAgICAgICAgICAgICAgc21hbGxDYXBzRm9udCA9IFtmIHNjcmVlbkZvbnRdOworICAgICAgICAg
ICAgICAgICAgICAgICAgdHJ1ZVNtYWxsQ2FwcyA9IFlFUzsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIGZyZWUoKHZvaWQgKilzZWxlY3RvcnMpOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgICAgIAorICAgICAgICBpZighdHJ1ZVNtYWxsQ2FwcykgeworICAgICAgICAg
ICAgZiA9IFtbTlNGb250TWFuYWdlciBzaGFyZWRGb250TWFuYWdlcl0gY29udmVydEZvbnQ6ZiB0
b0hhdmVUcmFpdDpOU1NtYWxsQ2Fwc0ZvbnRNYXNrXTsKKyAgICAgICAgICAgIGlmIChbZm9udCBz
Y3JlZW5Gb250XSAhPSBbZiBzY3JlZW5Gb250XSkKKyAgICAgICAgICAgICAgICAvLyB0eXBlZmFj
ZSBoYXMgc21hbGwtY2FwcyB2YXJpYW50IGFzIHNlcGVyYXRlIGZvbnQKKyAgICAgICAgICAgICAg
ICBzbWFsbENhcHNGb250ID0gW2Ygc2NyZWVuRm9udF07CisgICAgICAgICAgICBlbHNlIHsKKyAg
ICAgICAgICAgICAgICAvLyBpZiBhbGwgZWxzZSBmYWlscywgc3ludGhlc2l6ZSBzbWFsbC1jYXBz
IHdpdGggYSA3MCUgcmVkdWN0aW9uCisgICAgICAgICAgICAgICAgc21hbGxDYXBzRm9udCA9IFtb
W05TRm9udE1hbmFnZXIgc2hhcmVkRm9udE1hbmFnZXJdIGNvbnZlcnRGb250OmYgdG9TaXplOihb
Zm9udCBwb2ludFNpemVdICogU01BTExDQVBTX0ZPTlRTSVpFX01VTFRJUExJRVIpXSBzY3JlZW5G
b250XTsKKyAgICAgICAgICAgICAgICBzaW11bGF0ZWRTbWFsbENhcHMgPSBZRVM7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICB9CiAgICAgcmV0dXJuIHVzaW5nUHJpbnRlckZvbnQgPyBb
c21hbGxDYXBzRm9udCBwcmludGVyRm9udF0gOiBzbWFsbENhcHNGb250OwogfQogCkBAIC0xMTc1
LDcgKzEyMjEsNyBAQCBzdGF0aWMgY29uc3QgY2hhciAqam9pbmluZ05hbWVzW10gPSB7CiAKIC0g
KGZsb2F0KV9mbG9hdFdpZHRoRm9yUnVuOihjb25zdCBXZWJDb3JlVGV4dFJ1biAqKXJ1biBzdHls
ZTooY29uc3QgV2ViQ29yZVRleHRTdHlsZSAqKXN0eWxlIHdpZHRoczooZmxvYXQgKil3aWR0aEJ1
ZmZlciBmb250czooTlNGb250ICoqKWZvbnRCdWZmZXIgZ2x5cGhzOihDR0dseXBoICopZ2x5cGhC
dWZmZXIgc3RhcnRQb3NpdGlvbjooZmxvYXQgKilzdGFydFBvc2l0aW9uIG51bUdseXBoczooaW50
ICopX251bUdseXBocwogewotICAgIGlmIChzaG91bGRVc2VBVFNVKHJ1bikpCisgICAgaWYgKHNo
b3VsZFVzZUFUU1Uoc2VsZiwgcnVuKSkKICAgICAgICAgcmV0dXJuIFtzZWxmIF9BVFNVX2Zsb2F0
V2lkdGhGb3JSdW46cnVuIHN0eWxlOnN0eWxlXTsKICAgICAKICAgICByZXR1cm4gW3NlbGYgX0NH
X2Zsb2F0V2lkdGhGb3JSdW46cnVuIHN0eWxlOnN0eWxlIHdpZHRoczp3aWR0aEJ1ZmZlciBmb250
czpmb250QnVmZmVyIGdseXBoczpnbHlwaEJ1ZmZlciBzdGFydFBvc2l0aW9uOnN0YXJ0UG9zaXRp
b24gbnVtR2x5cGhzOl9udW1HbHlwaHNdOwpAQCAtMTQ0Myw3ICsxNDg5LDcgQEAgc3RhdGljIGNv
bnN0IGNoYXIgKmpvaW5pbmdOYW1lc1tdID0gewogfQogCiAKLS0gKHZvaWQpX2luaXRpYWxpemVB
VFNVU3R5bGUKKy0gKHZvaWQpX0FUU1VfaW5pdGlhbGl6ZVN0eWxlOihjb25zdCBXZWJDb3JlVGV4
dFN0eWxlICopc3R5bGUKIHsKICAgICAvLyBUaGUgdHdvIE5TRm9udCBjYWxscyBpbiB0aGlzIG1l
dGhvZCAocG9pbnRTaXplIGFuZCBfYXRzRm9udElEKQogICAgIC8vIGFyZSBib3RoIGV4Y2VwdGlv
bi1zYWZlLgpAQCAtMTQ1Niw4ICsxNTAyLDEyIEBAIHN0YXRpYyBjb25zdCBjaGFyICpqb2luaW5n
TmFtZXNbXSA9IHsKICAgICAgICAgaWYoc3RhdHVzICE9IG5vRXJyKQogICAgICAgICAgICAgRkFU
QUxfQUxXQVlTICgiQVRTVUNyZWF0ZVN0eWxlIGZhaWxlZCAoJWQpIiwgc3RhdHVzKTsKICAgICAK
LSAgICAgICAgQVRTVUZvbnRJRCBmb250SUQgPSBXS0dldE5TRm9udEFUU1VGb250SWQoZm9udCk7
Ci0gICAgICAgIGlmIChmb250SUQgPT0gMCl7CisgICAgICAgIEFUU1VGb250SUQgZm9udElEOwor
ICAgICAgICBpZiAoc3R5bGUtPnNtYWxsQ2FwcykKKyAgICAgICAgICAgIGZvbnRJRCA9IFdLR2V0
TlNGb250QVRTVUZvbnRJZChbc2VsZiBfc21hbGxDYXBzRm9udF0pOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICBmb250SUQgPSBXS0dldE5TRm9udEFUU1VGb250SWQoZm9udCk7CisgICAgICAg
IGlmIChmb250SUQgPT0gMCkgewogICAgICAgICAgICAgQVRTVURpc3Bvc2VTdHlsZShfQVRTVVNz
dHlsZSk7CiAgICAgICAgICAgICBFUlJPUiAoInVuYWJsZSB0byBnZXQgQVRTVUZvbnRJRCBmb3Ig
JUAiLCBmb250KTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTE0NzEsNiArMTUyMSw3IEBAIHN0
YXRpYyBjb25zdCBjaGFyICpqb2luaW5nTmFtZXNbXSA9IHsKICAgICAgICAgc3RhdHVzID0gQVRT
VVNldEF0dHJpYnV0ZXMgKF9BVFNVU3N0eWxlLCAzLCBzdHlsZVRhZ3MsIHN0eWxlU2l6ZXMsIHN0
eWxlVmFsdWVzKTsKICAgICAgICAgaWYoc3RhdHVzICE9IG5vRXJyKQogICAgICAgICAgICAgRkFU
QUxfQUxXQVlTICgiQVRTVVNldEF0dHJpYnV0ZXMgZmFpbGVkICglZCkiLCBzdGF0dXMpOworICAg
ICAgICAKICAgICAgICAgc3RhdHVzID0gQVRTRm9udEdldFRhYmxlKGZvbnRJRCwgJ3Byb3AnLCAw
LCAwLCAwLCAmcHJvcFRhYmxlU2l6ZSk7CiAgICAgICAgIGlmIChzdGF0dXMgPT0gbm9FcnIpICAg
IC8vIG5haXZlbHkgYXNzdW1lIHRoYXQgaWYgYSAncHJvcCcgdGFibGUgZXhpc3RzIHRoZW4gaXQg
Y29udGFpbnMgbWlycm9yaW5nIGluZm8KICAgICAgICAgICAgIEFUU1VNaXJyb3JzID0gWUVTOwpA
QCAtMTQ3OCw2ICsxNTI5LDEzIEBAIHN0YXRpYyBjb25zdCBjaGFyICpqb2luaW5nTmFtZXNbXSA9
IHsKICAgICAgICAgICAgIEFUU1VNaXJyb3JzID0gTk87CiAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgIEZBVEFMX0FMV0FZUyAoIkFUU0ZvbnRHZXRUYWJsZSBmYWlsZWQgKCVkKSIsIHN0YXR1cyk7
CisgICAgICAgIAorICAgICAgICBpZiAoc3R5bGUtPnNtYWxsQ2FwcyAmJiB0cnVlU21hbGxDYXBz
KSB7CisgICAgICAgICAgICAvLyBhY3RpdmF0ZSBmZWF0dXJlLCB0cnkgYW5kIHNldCBvbGQtc3R5
bGUgbnVtYmVycyB0b28KKyAgICAgICAgICAgIEFUU1VGb250RmVhdHVyZVR5cGUgdHlwZXNbXSA9
IHsga0xldHRlckNhc2VUeXBlLCBrTnVtYmVyQ2FzZVR5cGUgfTsKKyAgICAgICAgICAgIEFUU1VG
b250RmVhdHVyZVNlbGVjdG9yIHNlbGVjdG9yc1tdID0geyBrU21hbGxDYXBzU2VsZWN0b3IsIGtM
b3dlckNhc2VOdW1iZXJzU2VsZWN0b3IgfTsKKyAgICAgICAgICAgIEFUU1VTZXRGb250RmVhdHVy
ZXMoX0FUU1VTc3R5bGUsIDIsIHR5cGVzLCBzZWxlY3RvcnMpOworICAgICAgICB9CiAKICAgICAg
ICAgQVRTVVN0eWxlSW5pdGlhbGl6ZWQgPSBZRVM7CiAgICAgfQpAQCAtMTQ5NSwxMSArMTU1Mywx
OCBAQCBzdGF0aWMgY29uc3QgY2hhciAqam9pbmluZ05hbWVzW10gPSB7CiAgICAgVW5pQ2hhckNv
dW50IHN1YnN0aXR1dGVMZW5ndGg7CiAgICAgT1NTdGF0dXMgc3RhdHVzOwogICAgIAotICAgIFtz
ZWxmIF9pbml0aWFsaXplQVRTVVN0eWxlXTsKKyAgICBbc2VsZiBfQVRTVV9pbml0aWFsaXplU3R5
bGU6c3R5bGVdOwogICAgIAogICAgIC8vIEZJWE1FOiBUaGlzIGlzIG1pc3NpbmcgdGhlIGZvbGxv
d2luZyBmZWF0dXJlcyB0aGF0IHRoZSBDb3JlR3JhcGhpY3MgY29kZSBwYXRoIGhhczoKICAgICAv
LyAtIEJvdGggXG4gYW5kIG5vbmJyZWFraW5nIHNwYWNlIHJlbmRlciBhcyBhIHNwYWNlLgogICAg
IC8vIC0gQWxsIG90aGVyIGNvbnRyb2wgY2hhcmFjdGVycyBtdXN0IG5vdCByZW5kZXIgYXQgYWxs
IChvdGhlciBjb2RlIHBhdGggdXNlcyB6ZXJvLXdpZHRoIHNwYWNlcykuCisgICAgCisgICAgV2Vi
Q29yZVRleHRSdW4gY2Fwc1J1bjsKKyAgICBpZihzdHlsZS0+c21hbGxDYXBzICYmIHNpbXVsYXRl
ZFNtYWxsQ2FwcykgeworICAgICAgICAvLyBzeW50aGVzaXplZCBzbWFsbC1jYXBzOiBjYXBpdGFs
aXplIGNoYXJhY3RlcnMgaW4gcnVuCisgICAgICAgIGNhcHNSdW4gPSBjYXBpdGFsaXplQ2hhcmFj
dGVyc0luUnVuKHJ1bik7CisgICAgICAgIHJ1biA9ICZjYXBzUnVuOworICAgIH0KIAogICAgIHJ1
bkxlbmd0aCA9IHJ1bi0+dG8gLSBydW4tPmZyb207CiAgICAgc3RhdHVzID0gQVRTVUNyZWF0ZVRl
eHRMYXlvdXRXaXRoVGV4dFB0cigKQEAgLTE1MzUsNyArMTYwMCw3IEBAIHN0YXRpYyBjb25zdCBj
aGFyICpqb2luaW5nTmFtZXNbXSA9IHsKICAgICAgICAgTlNGb250ICpzdWJzdGl0dXRlRm9udCA9
IFtzZWxmIF9zdWJzdGl0dXRlRm9udEZvckNoYXJhY3RlcnM6cnVuLT5jaGFyYWN0ZXJzK3N1YnN0
aXR1dGVPZmZzZXQgbGVuZ3RoOnN1YnN0aXR1dGVMZW5ndGggZmFtaWxpZXM6c3R5bGUtPmZhbWls
aWVzXTsKICAgICAgICAgaWYgKHN1YnN0aXR1dGVGb250KSB7CiAgICAgICAgICAgICBXZWJUZXh0
UmVuZGVyZXIgKnN1YnN0aXR1dGVSZW5kZXJlciA9IFtbV2ViVGV4dFJlbmRlcmVyRmFjdG9yeSBz
aGFyZWRGYWN0b3J5XSByZW5kZXJlcldpdGhGb250OnN1YnN0aXR1dGVGb250IHVzaW5nUHJpbnRl
ckZvbnQ6dXNpbmdQcmludGVyRm9udF07Ci0gICAgICAgICAgICBbc3Vic3RpdHV0ZVJlbmRlcmVy
IF9pbml0aWFsaXplQVRTVVN0eWxlXTsKKyAgICAgICAgICAgIFtzdWJzdGl0dXRlUmVuZGVyZXIg
X0FUU1VfaW5pdGlhbGl6ZVN0eWxlOnN0eWxlXTsKICAgICAgICAgICAgIGlmIChzdWJzdGl0dXRl
UmVuZGVyZXIgJiYgc3Vic3RpdHV0ZVJlbmRlcmVyLT5fQVRTVVNzdHlsZSkKICAgICAgICAgICAg
ICAgICBBVFNVU2V0UnVuU3R5bGUobGF5b3V0LCBzdWJzdGl0dXRlUmVuZGVyZXItPl9BVFNVU3N0
eWxlLCBzdWJzdGl0dXRlT2Zmc2V0LCBzdWJzdGl0dXRlTGVuZ3RoKTsKICAgICAgICAgICAgIC8v
IGlnbm9yaW5nIGVycm9ycwpAQCAtMTU0Myw3ICsxNjA4LDEwIEBAIHN0YXRpYyBjb25zdCBjaGFy
ICpqb2luaW5nTmFtZXNbXSA9IHsKICAgICAgICAgc3Vic3RpdHV0ZU9mZnNldCArPSBzdWJzdGl0
dXRlTGVuZ3RoOwogICAgIH07CiAgICAgLy8gaWdub3JpbmcgZXJyb3JzIGluIGZvbnQgc3Vic3Rp
dHV0aW9uCi0gICAgICAgIAorICAgIAorICAgIGlmKHN0eWxlLT5zbWFsbENhcHMgJiYgc2ltdWxh
dGVkU21hbGxDYXBzKQorICAgICAgICBmcmVlKCh2b2lkICopY2Fwc1J1bi5jaGFyYWN0ZXJzKTsK
KyAgICAKICAgICByZXR1cm4gbGF5b3V0OwogfQogCkBAIC0xNTc5LDkgKzE2NDcsNyBAQCBzdGF0
aWMgY29uc3QgY2hhciAqam9pbmluZ05hbWVzW10gPSB7CiAKIC0gKGZsb2F0KV9BVFNVX2Zsb2F0
V2lkdGhGb3JSdW46KGNvbnN0IFdlYkNvcmVUZXh0UnVuICopcnVuIHN0eWxlOihjb25zdCBXZWJD
b3JlVGV4dFN0eWxlICopc3R5bGUKIHsKLSAgICBBVFNUcmFwZXpvaWQgb0dseXBoQm91bmRzOwot
ICAgIAotICAgIG9HbHlwaEJvdW5kcyA9IFtzZWxmIF90cmFwZXpvaWRGb3JSdW46cnVuIHN0eWxl
OnN0eWxlIGF0UG9pbnQ6TlNNYWtlUG9pbnQgKDAsMCldOworICAgIEFUU1RyYXBlem9pZCBvR2x5
cGhCb3VuZHMgPSBbc2VsZiBfdHJhcGV6b2lkRm9yUnVuOnJ1biBzdHlsZTpzdHlsZSBhdFBvaW50
Ok5TTWFrZVBvaW50KDAsMCldOwogICAgIAogICAgIGZsb2F0IHdpZHRoID0gCiAgICAgICAgIE1B
WChGaXhlZFRvRmxvYXQob0dseXBoQm91bmRzLnVwcGVyUmlnaHQueCksIEZpeGVkVG9GbG9hdChv
R2x5cGhCb3VuZHMubG93ZXJSaWdodC54KSkgLSAKQEAgLTE1OTEsNiArMTY1NywyNiBAQCBzdGF0
aWMgY29uc3QgY2hhciAqam9pbmluZ05hbWVzW10gPSB7CiB9CiAKIC8vIEJlIHN1cmUgdG8gZnJl
ZSB0aGUgcnVuLmNoYXJhY3RlcnMgYWxsb2NhdGVkIGJ5IHRoaXMgZnVuY3Rpb24uCitzdGF0aWMg
V2ViQ29yZVRleHRSdW4gY2FwaXRhbGl6ZUNoYXJhY3RlcnNJblJ1bihjb25zdCBXZWJDb3JlVGV4
dFJ1biAqcnVuKQoreworICAgIFdlYkNvcmVUZXh0UnVuIHN3YXBwZWRSdW47CisgICAgdW5zaWdu
ZWQgaW50IGk7CisgICAgCisgICAgVW5pQ2hhciAqc3dhcHBlZENoYXJhY3RlcnMgPSAoVW5pQ2hh
ciAqKW1hbGxvYyhzaXplb2YoVW5pQ2hhcikqKHJ1bi0+bGVuZ3RoKSk7CisgICAgZm9yIChpPTA7
IGkgPCBydW4tPmxlbmd0aDsgaSsrKSB7CisgICAgICAgIC8vIHdpbGwgY2hva2Ugb24gc3Vycm9n
YXRlIHBhaXJzPworLy8gICAgICBpZighdV9pc1VVcHBlcmNhc2UocnVuLT5jaGFyYWN0ZXJzW2ld
KSkKKyAgICAgICAgICAgIHN3YXBwZWRDaGFyYWN0ZXJzW2ldID0gdV90b3VwcGVyKHJ1bi0+Y2hh
cmFjdGVyc1tpXSk7CisgICAgfQorICAgIHN3YXBwZWRSdW4uZnJvbSA9IHJ1bi0+ZnJvbTsKKyAg
ICBzd2FwcGVkUnVuLnRvID0gcnVuLT50bzsKKyAgICBzd2FwcGVkUnVuLmxlbmd0aCA9IHJ1bi0+
bGVuZ3RoOworICAgIHN3YXBwZWRSdW4uY2hhcmFjdGVycyA9IHN3YXBwZWRDaGFyYWN0ZXJzOwor
CisgICAgcmV0dXJuIHN3YXBwZWRSdW47Cit9CisKKy8vIEJlIHN1cmUgdG8gZnJlZSB0aGUgcnVu
LmNoYXJhY3RlcnMgYWxsb2NhdGVkIGJ5IHRoaXMgZnVuY3Rpb24uCiBzdGF0aWMgV2ViQ29yZVRl
eHRSdW4gcmV2ZXJzZUNoYXJhY3RlcnNJblJ1bihjb25zdCBXZWJDb3JlVGV4dFJ1biAqcnVuKQog
ewogICAgIFdlYkNvcmVUZXh0UnVuIHN3YXBwZWRSdW47CkBAIC0yMDU3LDExICsyMTQzLDEyIEBA
IHN0YXRpYyBmbG9hdCB3aWR0aEZvck5leHRDaGFyYWN0ZXIoQ2hhcmEKICAgICBpZiAocmVuZGVy
ZXItPmlzU21hbGxDYXBzUmVuZGVyZXIpIHsKICAgICAgICAgaWYgKCF1X2lzVVVwcGVyY2FzZShj
KSkgewogICAgICAgICAgICAgLy8gT25seSB1c2Ugc21hbGwgY2FwIGZvbnQgaWYgdGhlIHRoZSB1
cHBlcmNhc2UgdmVyc2lvbiBvZiB0aGUgY2hhcmFjdGVyCi0gICAgICAgICAgICAvLyBpcyBkaWZm
ZXJlbnQgdGhhbiB0aGUgbG93ZXJjYXNlLgorICAgICAgICAgICAgLy8gaXMgZGlmZmVyZW50IHRo
YW4gdGhlIGxvd2VyY2FzZSwgYW5kIG9ubHkgdHJhbnNmb3JtIGlmIHVzaW5nIDcwJSBzeW50aGVz
aXMuCiAgICAgICAgICAgICBVbmljb2RlQ2hhciBuZXdDID0gdV90b3VwcGVyKGMpOwogICAgICAg
ICAgICAgaWYgKG5ld0MgIT0gYykgewogICAgICAgICAgICAgICAgIHVzZVNtYWxsQ2Fwc0ZvbnQg
PSBZRVM7Ci0gICAgICAgICAgICAgICAgYyA9IG5ld0M7CisgICAgICAgICAgICAgICAgaWYgKHJl
bmRlcmVyLT5zaW11bGF0ZWRTbWFsbENhcHMpCisgICAgICAgICAgICAgICAgICAgIGMgPSBuZXdD
OwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpAQCAtMjExNCw3ICsyMjAxLDcgQEAg
c3RhdGljIGZsb2F0IHdpZHRoRm9yTmV4dENoYXJhY3RlcihDaGFyYQogICAgICAgICBlbHNlIHsK
ICAgICAgICAgICAgIC8vIFBvdGVudGlhbCBmb3Igb3B0aW1pemF0aW9uLiAgVGhpcyBwYXRoIHNo
b3VsZCBvbmx5IGJlIHRha2VuIGlmIHdlJ3JlCiAgICAgICAgICAgICAvLyB1c2luZyBhIGNhY2hl
ZCBzdWJzdGl0dXRlZCBmb250LgotICAgICAgICAgICAgX2ZvbnRVc2VkID0gW1tOU0ZvbnRNYW5h
Z2VyIHNoYXJlZEZvbnRNYW5hZ2VyXSBjb252ZXJ0Rm9udDpfZm9udFVzZWQgdG9TaXplOltfZm9u
dFVzZWQgcG9pbnRTaXplXSAqIFNNQUxMQ0FQU19GT05UU0laRV9NVUxUSVBMSUVSXTsKKyAgICAg
ICAgICAgIF9mb250VXNlZCA9IFtyZW5kZXJlciBfc21hbGxDYXBzRm9udEZvckZvbnQ6X2ZvbnRV
c2VkXTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMjI3NCwxMyArMjM2MSwxMyBAQCBzdGF0aWMg
Qk9PTCBmaWxsU3R5bGVXaXRoQXR0cmlidXRlcyhBVFNVCiAgICAgcmV0dXJuIE5POwogfQogCi1z
dGF0aWMgQk9PTCBzaG91bGRVc2VBVFNVKGNvbnN0IFdlYkNvcmVUZXh0UnVuICpydW4pCitzdGF0
aWMgQk9PTCBzaG91bGRVc2VBVFNVKGNvbnN0IFdlYlRleHRSZW5kZXJlciAqcmVuZGVyZXIsIGNv
bnN0IFdlYkNvcmVUZXh0UnVuICpydW4pCiB7CiAgICAgVW5pQ2hhciBjOwogICAgIGNvbnN0IFVu
aUNoYXIgKmNoYXJhY3RlcnMgPSBydW4tPmNoYXJhY3RlcnM7CiAgICAgaW50IGksIGZyb20gPSBy
dW4tPmZyb20sIHRvID0gcnVuLT50bzsKICAgICAKLSAgICBpZiAoYWx3YXlzVXNlQVRTVSkKKyAg
ICBpZiAoYWx3YXlzVXNlQVRTVSB8fCAocmVuZGVyZXItPmlzU21hbGxDYXBzUmVuZGVyZXIgJiYg
cmVuZGVyZXItPnRydWVTbWFsbENhcHMpKQogICAgICAgICByZXR1cm4gWUVTOwogICAgICAgICAK
ICAgICBmb3IgKGkgPSBmcm9tOyBpIDwgdG87IGkrKyl7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>3315</attachid>
            <date>2005-08-10 11:56:43 -0700</date>
            <delta_ts>2005-08-10 11:56:43 -0700</delta_ts>
            <desc>layout-tests/fast/css/009.html</desc>
            <filename>009.html</filename>
            <type>text/html</type>
            <size>1440</size>
            <attacher name="Nicholas Shanks">nickshanks</attacher>
            
              <data encoding="base64">77u/PGh0bWw+CjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CgkuaG9lZmxlciB7IGZvbnQ6IDI0cHQg
IkhvZWZsZXIgVGV4dCI7IH0KCS5sdWNpZGFncmFuZGUgeyBmb250OiAyNHB0ICJMdWNpZGEgR3Jh
bmRlIjsgfQoJLmhlbHZldGljYSB7IGZvbnQ6IDI0cHQgIkhlbHZldGljYSIsICJBcmlhbCI7IH0K
CS5jc3MgeyBmb250LXZhcmlhbnQ6IHNtYWxsLWNhcHM7IH0KCS5zaW11bGF0ZSA+IHNwYW4geyB0
ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOyBmb250LXNpemU6IDcwJTsgfQo8L3N0eWxlPgo8cD5I
b2VmbGVyIFRleHQ6IFRoZSB0b3AgbGluZSBpcyB0cnVlIHNtYWxsIGNhcHMgb2J0YWluZWQgdmlh
IEFBVCBmZWF0dXJlcywgdGhlIHNlY29uZCBsaW5lIGlzIGEgSFRNTCBoYWNrIGltbWl0YXRpbmcg
dGhlIDcwJSByZWR1Y3Rpb24gdGhhdCBXZWJLaXQgd291bGQgZG8gaWYgdGhlIEFBVCBzdXBwb3J0
IGdldHMgYnJva2VuLiBUaGVzZSB0d28gbGluZXMgc2hvdWxkIGxvb2sgZGlmZmVyZW50LCB3aXRo
IHRoZSBmaXJzdCBsaW5lIGxvb2tpbmcgJ2JvbGRlcicuIE5laXRoZXIgbGluZSBzaG91bGQgYXBw
ZWFyIHdpdGggbWluaXNjdWxlcy48L3A+CjxkaXYgY2xhc3M9ImhvZWZsZXIgY3NzIj5UaGlzIGlz
IGEgZGVtb25zdHJhdGlvbiBvZiBTbWFsbCBDYXBzPC9kaXY+CjxkaXYgY2xhc3M9ImhvZWZsZXIg
c2ltdWxhdGUiPlQ8c3Bhbj5oaXM8L3NwYW4+IDxzcGFuPmlzPC9zcGFuPiA8c3Bhbj5hPC9zcGFu
PiA8c3Bhbj5kZW1vbnN0cmF0aW9uPC9zcGFuPiA8c3Bhbj5vZjwvc3Bhbj4gUzxzcGFuPm1hbGw8
L3NwYW4+IEM8c3Bhbj5hcHM8L3NwYW4+PC9kaXY+CjxwPkx1Y2lkYSBHcmFuZGUgJmFtcDsgSGVs
dmV0aWNhOiBUaGVzZSBmb250cyBoYXZlIG5vIGJ1aWx0IGluIHNtYWxsIGNhcHMuIFRoZXkgc2hv
dWxkIGFsd2F5cyBiZSByZW5kZXJlZCB1c2luZyB0aGUgNzAlIHJlZHVjdGlvbiBjb2RlIHBhdGgs
IGFuZCBzaG91bGQgbm90IHNob3cgYW55IG1pbmlzY3VsZXMuPC9wPgo8ZGl2IGNsYXNzPSJsdWNp
ZGFncmFuZGUgY3NzIj5UaGlzIGlzIGEgZGVtb25zdHJhdGlvbiBvZiBTbWFsbCBDYXBzPC9kaXY+
CjxkaXYgY2xhc3M9ImhlbHZldGljYSBjc3MiPlRoaXMgaXMgYSBkZW1vbnN0cmF0aW9uIG9mIFNt
YWxsIENhcHM8L2Rpdj4KPHA+VGhlcmUgYXJlIG5vIGZvbnRzIHN1cHBsaWVkIHdpdGggTWFjIE9T
IFggd2hpY2ggaGF2ZSBzZXBlcmF0ZSBSZWd1bGFyIGFuZCBTbWFsbCBDYXBzIHR5cGVmYWNlcywg
YXMgaXMgY29tbW9uIHdpdGggcHJvZmVzc2lvbmFsIGZvbnRzIGluIG5vbi1BQVQtc3VwcG9ydGlu
ZyBlbnZpcm9ubWVudHMuIEFzIHN1Y2ggbm8gdGVzdCBpcyBwcm92aWRlZCBmb3IgdGhpcyBzY2Vu
YXJpbywgYWx0aG91Z2ggaXQgaXMgc3VwcG9ydGVkLCBzaW5jZSBpdCB3b3VsZCBmYWlsIGZvciBt
b3N0IHVzZXJzLjwvcD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>3318</attachid>
            <date>2005-08-10 12:06:05 -0700</date>
            <delta_ts>2005-08-10 13:30:49 -0700</delta_ts>
            <desc>layout-tests/fast/css/009-expected.txt</desc>
            <filename>009-expected.txt</filename>
            <type>text/plain</type>
            <size>3765</size>
            <attacher name="Nicholas Shanks">nickshanks</attacher>
            
              <data encoding="base64">bGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCiAgUmVuZGVyQ2FudmFzIGF0ICgwLDApIHNpemUg
ODAweDYwMApsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKICBSZW5kZXJCbG9jayB7SFRNTH0g
YXQgKDAsMCkgc2l6ZSA4MDB4NjAwCiAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBzaXpl
IDc4NHg1NzYKICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDApIHNpemUgNzg0eDU0CiAgICAg
ICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSA3Njh4NTQKICAgICAgICAgIHRleHQg
cnVuIGF0ICgwLDApIHdpZHRoIDc1MzogIkhvZWZsZXIgVGV4dDogVGhlIHRvcCBsaW5lIGlzIHRy
dWUgc21hbGwgY2FwcyBvYnRhaW5lZCB2aWEgQUFUIGZlYXR1cmVzLCB0aGUgc2Vjb25kIGxpbmUg
aXMgYSBIVE1MIGhhY2sgaW1taXRhdGluZyB0aGUiCiAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwx
OCkgd2lkdGggNzY4OiAiNzAlIHJlZHVjdGlvbiB0aGF0IFdlYktpdCB3b3VsZCBkbyBpZiB0aGUg
QUFUIHN1cHBvcnQgZ2V0cyBicm9rZW4uIFRoZXNlIHR3byBsaW5lcyBzaG91bGQgbG9vayBkaWZm
ZXJlbnQsIHdpdGggdGhlIGZpcnN0IgogICAgICAgICAgdGV4dCBydW4gYXQgKDAsMzYpIHdpZHRo
IDQwNTogImxpbmUgbG9va2luZyAnYm9sZGVyJy4gTmVpdGhlciBsaW5lIHNob3VsZCBhcHBlYXIg
d2l0aCBtaW5pc2N1bGVzLiIKICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsNzApIHNpemUg
Nzg0eDMyCiAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSA1NDN4MzIKICAg
ICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDU0MzogIlRoaXMgaXMgYSBkZW1vbnN0cmF0
aW9uIG9mIFNtYWxsIENhcHMiCiAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDEwMikgc2l6
ZSA3ODR4MzIKICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDIzeDMyCiAg
ICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAyMzogIlQiCiAgICAgICAgUmVuZGVySW5s
aW5lIHtTUEFOfSBhdCAoMCwwKSBzaXplIDQweDIyCiAgICAgICAgICBSZW5kZXJUZXh0IHtURVhU
fSBhdCAoMjMsNykgc2l6ZSA0MHgyMgogICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMjMsNykgd2lk
dGggNDA6ICJISVMiCiAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDYzLDApIHNpemUgOHgz
MgogICAgICAgICAgdGV4dCBydW4gYXQgKDYzLDApIHdpZHRoIDg6ICIgIgogICAgICAgIFJlbmRl
cklubGluZSB7U1BBTn0gYXQgKDAsMCkgc2l6ZSAyMXgyMgogICAgICAgICAgUmVuZGVyVGV4dCB7
VEVYVH0gYXQgKDcxLDcpIHNpemUgMjF4MjIKICAgICAgICAgICAgdGV4dCBydW4gYXQgKDcxLDcp
IHdpZHRoIDIxOiAiSVMiCiAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDkyLDApIHNpemUg
OHgzMgogICAgICAgICAgdGV4dCBydW4gYXQgKDkyLDApIHdpZHRoIDg6ICIgIgogICAgICAgIFJl
bmRlcklubGluZSB7U1BBTn0gYXQgKDAsMCkgc2l6ZSAxNngyMgogICAgICAgICAgUmVuZGVyVGV4
dCB7VEVYVH0gYXQgKDEwMCw3KSBzaXplIDE2eDIyCiAgICAgICAgICAgIHRleHQgcnVuIGF0ICgx
MDAsNykgd2lkdGggMTY6ICJBIgogICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgxMTYsMCkg
c2l6ZSA4eDMyCiAgICAgICAgICB0ZXh0IHJ1biBhdCAoMTE2LDApIHdpZHRoIDg6ICIgIgogICAg
ICAgIFJlbmRlcklubGluZSB7U1BBTn0gYXQgKDAsMCkgc2l6ZSAyMTJ4MjIKICAgICAgICAgIFJl
bmRlclRleHQge1RFWFR9IGF0ICgxMjQsNykgc2l6ZSAyMTJ4MjIKICAgICAgICAgICAgdGV4dCBy
dW4gYXQgKDEyNCw3KSB3aWR0aCAyMTI6ICJERU1PTlNUUkFUSU9OIgogICAgICAgIFJlbmRlclRl
eHQge1RFWFR9IGF0ICgzMzYsMCkgc2l6ZSA4eDMyCiAgICAgICAgICB0ZXh0IHJ1biBhdCAoMzM2
LDApIHdpZHRoIDg6ICIgIgogICAgICAgIFJlbmRlcklubGluZSB7U1BBTn0gYXQgKDAsMCkgc2l6
ZSAzMXgyMgogICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDM0NCw3KSBzaXplIDMxeDIy
CiAgICAgICAgICAgIHRleHQgcnVuIGF0ICgzNDQsNykgd2lkdGggMzE6ICJPRiIKICAgICAgICBS
ZW5kZXJUZXh0IHtURVhUfSBhdCAoMzc1LDApIHNpemUgMjR4MzIKICAgICAgICAgIHRleHQgcnVu
IGF0ICgzNzUsMCkgd2lkdGggMjQ6ICIgUyIKICAgICAgICBSZW5kZXJJbmxpbmUge1NQQU59IGF0
ICgwLDApIHNpemUgNjV4MjIKICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgzOTksNykg
c2l6ZSA2NXgyMgogICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMzk5LDcpIHdpZHRoIDY1OiAiTUFM
TCIKICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoNDY0LDApIHNpemUgMzF4MzIKICAgICAg
ICAgIHRleHQgcnVuIGF0ICg0NjQsMCkgd2lkdGggMzE6ICIgQyIKICAgICAgICBSZW5kZXJJbmxp
bmUge1NQQU59IGF0ICgwLDApIHNpemUgNDF4MjIKICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9
IGF0ICg0OTUsNykgc2l6ZSA0MXgyMgogICAgICAgICAgICB0ZXh0IHJ1biBhdCAoNDk1LDcpIHdp
ZHRoIDQxOiAiQVBTIgogICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsMTUwKSBzaXplIDc4NHgz
NgogICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNpemUgNzM0eDM2CiAgICAgICAg
ICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA3MzQ6ICJMdWNpZGEgR3JhbmRlICYgSGVsdmV0aWNh
OiBUaGVzZSBmb250cyBoYXZlIG5vIGJ1aWx0IGluIHNtYWxsIGNhcHMuIFRoZXkgc2hvdWxkIGFs
d2F5cyBiZSByZW5kZXJlZCB1c2luZyB0aGUgNzAlIgogICAgICAgICAgdGV4dCBydW4gYXQgKDAs
MTgpIHdpZHRoIDM2NDogInJlZHVjdGlvbiBjb2RlIHBhdGgsIGFuZCBzaG91bGQgbm90IHNob3cg
YW55IG1pbmlzY3VsZXMuIgogICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCwyMDIpIHNpemUg
Nzg0eDM4CiAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSA1MTN4MzgKICAg
ICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDUxMzogIlRoaXMgaXMgYSBkZW1vbnN0cmF0
aW9uIG9mIFNtYWxsIENhcHMiCiAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDI0MCkgc2l6
ZSA3ODR4MzcKICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDUyMXgzNwog
ICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggNTIxOiAiVGhpcyBpcyBhIGRlbW9uc3Ry
YXRpb24gb2YgU21hbGwgQ2FwcyIKICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDI5Mykgc2l6
ZSA3ODR4NTQKICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDc1NXg1NAog
ICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggNzU1OiAiVGhlcmUgYXJlIG5vIGZvbnRz
IHN1cHBsaWVkIHdpdGggTWFjIE9TIFggd2hpY2ggaGF2ZSBzZXBlcmF0ZSBSZWd1bGFyIGFuZCBT
bWFsbCBDYXBzIHR5cGVmYWNlcywgYXMgaXMgY29tbW9uIHdpdGgiCiAgICAgICAgICB0ZXh0IHJ1
biBhdCAoMCwxOCkgd2lkdGggNzI2OiAicHJvZmVzc2lvbmFsIGZvbnRzIGluIG5vbi1BQVQtc3Vw
cG9ydGluZyBlbnZpcm9ubWVudHMuIEFzIHN1Y2ggbm8gdGVzdCBpcyBwcm92aWRlZCBmb3IgdGhp
cyBzY2VuYXJpbywgYWx0aG91Z2ggaXQgaXMiCiAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwzNikg
d2lkdGggMjc4OiAic3VwcG9ydGVkLCBzaW5jZSBpdCB3b3VsZCBmYWlsIGZvciBtb3N0IHVzZXJz
LiIK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>3319</attachid>
            <date>2005-08-10 12:08:24 -0700</date>
            <delta_ts>2005-08-10 12:21:47 -0700</delta_ts>
            <desc>ChangeLog entry (edit as appropriate)</desc>
            <filename>ChangeLog</filename>
            <type>text/plain</type>
            <size>562</size>
            <attacher name="Nicholas Shanks">nickshanks</attacher>
            
              <data encoding="base64">MjAwNS0wOC0xMCAgWW91ciBuYW1lIGhlcmUgIDxAYXBwbGUuY29tPgoKICAgICAgICBQYXRjaCBi
eSBOaWNob2xhcyBTaGFua3MgIDxjb250YWN0QG5pY2tzaGFua3MuY29tPgoKICAgICAgICBSZXZp
ZXdlZCBieSBkYXJpbiBwcm9iYWJseQoKICAgICAgICA8aHR0cDovL2J1Z3ppbGxhLm9wZW5kYXJ3
aW4ub3JnL3Nob3dfYnVnLmNnaT9pZD00MzU1PiBUcnVlIHNtYWxsLWNhcHMgc3VwcG9ydAoKICAg
ICAgICBUZXN0IGNhc2VzIGFkZGVkOiBmYXN0L2Nzcy8wMDkKCiAgICAgICAgKiBXZWJLaXQvV2Vi
Q29yZVN1cHBvcnQvV2ViVGV4dFJlbmRlcmVyLntoLGNwcH06CiAgICAgICAgKC1bV2ViVGV4dFJl
bmRlcmVyIF9zbWFsbENhcHNGb250Rm9yRm9udDpdKTogQWRkZWQuCiAgICAgICAgKC1bV2ViVGV4
dFJlbmRlcmVyIF9BVFNVX2luaXRpYWxpemVTdHlsZV0pOiBTZXQgc21hbGwtY2FwcyBzdHlsZS4K
ICAgICAgICAqIGxheW91dC10ZXN0cy9mYXN0L2Nzcy8wMDkuaHRtbDogQWRkZWQuCiAgICAgICAg
KiBsYXlvdXQtdGVzdHMvZmFzdC9jc3MvMDA5LWV4cGVjdGVkLnR4dDogQWRkZWQuCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>3322</attachid>
            <date>2005-08-10 12:20:30 -0700</date>
            <delta_ts>2010-06-10 16:54:39 -0700</delta_ts>
            <desc>small-caps patch 2.1.1</desc>
            <filename>patch-a.diff</filename>
            <type>text/plain</type>
            <size>13163</size>
            <attacher name="Nicholas Shanks">nickshanks</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmVTdXBwb3J0LnN1YnByb2ovV2ViVGV4dFJlbmRlcmVyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQpSQ1MgZmlsZTogL2N2cy9yb290L1dlYktpdC9XZWJDb3JlU3VwcG9ydC5zdWJwcm9qL1dlYlRl
eHRSZW5kZXJlci5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjM4CmRpZmYgLXAgLXUgLXIxLjM4
IFdlYkNvcmVTdXBwb3J0LnN1YnByb2ovV2ViVGV4dFJlbmRlcmVyLmgKLS0tIFdlYkNvcmVTdXBw
b3J0LnN1YnByb2ovV2ViVGV4dFJlbmRlcmVyLmgJMTIgSnVsIDIwMDUgMTc6NDQ6MTAgLTAwMDAJ
MS4zOAorKysgV2ViQ29yZVN1cHBvcnQuc3VicHJvai9XZWJUZXh0UmVuZGVyZXIuaAkxMCBBdWcg
MjAwNSAxOToxOTozNCAtMDAwMApAQCAtNjQsNiArNjQsOCBAQCB0eXBlZGVmIHN0cnVjdCBDaGFy
YWN0ZXJXaWR0aEl0ZXJhdG9yIENoCiAgICAgU3Vic3RpdHV0ZUZvbnRXaWR0aE1hcCAqc3Vic3Rp
dHV0ZUZvbnRXaWR0aE1hcHM7CiAgICAgQk9PTCB1c2luZ1ByaW50ZXJGb250OwogICAgIEJPT0wg
aXNTbWFsbENhcHNSZW5kZXJlcjsKKyAgICBCT09MIHNpbXVsYXRlZFNtYWxsQ2FwczsgICAgICAg
IC8vIDcwJSByZWR1Y3Rpb24sIHJlcXVpcmVzIHVwcGVyY2FzaW5nIHRleHQgcnVucworICAgIEJP
T0wgdHJ1ZVNtYWxsQ2FwczsgICAgICAgICAgICAgLy8gc21hbGwtY2FwcyBhdmFpbGFibGUgYXMg
QUFUL09wZW5UeXBlIGZvbnQgZmVhdHVyZQogICAgIAogQHByaXZhdGUKICAgICBXZWJUZXh0UmVu
ZGVyZXIgKnNtYWxsQ2Fwc1JlbmRlcmVyOwpJbmRleDogV2ViQ29yZVN1cHBvcnQuc3VicHJvai9X
ZWJUZXh0UmVuZGVyZXIubQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2ViS2l0L1dl
YkNvcmVTdXBwb3J0LnN1YnByb2ovV2ViVGV4dFJlbmRlcmVyLm0sdgpyZXRyaWV2aW5nIHJldmlz
aW9uIDEuMTg1CmRpZmYgLXAgLXUgLXIxLjE4NSBXZWJDb3JlU3VwcG9ydC5zdWJwcm9qL1dlYlRl
eHRSZW5kZXJlci5tCi0tLSBXZWJDb3JlU3VwcG9ydC5zdWJwcm9qL1dlYlRleHRSZW5kZXJlci5t
CTEgQXVnIDIwMDUgMjE6MTk6NDIgLTAwMDAJMS4xODUKKysrIFdlYkNvcmVTdXBwb3J0LnN1YnBy
b2ovV2ViVGV4dFJlbmRlcmVyLm0JMTAgQXVnIDIwMDUgMTk6MTk6MzcgLTAwMDAKQEAgLTE2Nyw2
ICsxNjcsNyBAQCBzdHJ1Y3QgQ2hhcmFjdGVyV2lkdGhJdGVyYXRvcgogLSAoQk9PTClfaXNTbWFs
bENhcHNSZW5kZXJlcjsKIC0gKFdlYlRleHRSZW5kZXJlciAqKV9zbWFsbENhcHNSZW5kZXJlcjsK
IC0gKE5TRm9udCAqKV9zbWFsbENhcHNGb250OworLSAoTlNGb250ICopX3NtYWxsQ2Fwc0ZvbnRG
b3JGb250OihOU0ZvbnQgKilmOwogCiBAZW5kCiAKQEAgLTI4Niw5ICsyODcsMTUgQEAgc3RhdGlj
IHZvaWQgaW5pdGlhbGl6ZUNoYXJhY3RlcldpZHRoSXRlcgogc3RhdGljIGZsb2F0IHdpZHRoRm9y
TmV4dENoYXJhY3RlciAoQ2hhcmFjdGVyV2lkdGhJdGVyYXRvciAqaXRlcmF0b3IsIEFUU0dseXBo
UmVmICpnbHlwaFVzZWQsIE5TRm9udCAqKmZvbnRVc2VkKTsKIAogCisvLyBBVFNVIHRleHQgcnVu
IHRyYW5zZm9ybWF0aW9ucworc3RhdGljIFdlYkNvcmVUZXh0UnVuIGNhcGl0YWxpemVDaGFyYWN0
ZXJzSW5SdW4oY29uc3QgV2ViQ29yZVRleHRSdW4gKnJ1bik7CitzdGF0aWMgV2ViQ29yZVRleHRS
dW4gcmV2ZXJzZUNoYXJhY3RlcnNJblJ1bihjb25zdCBXZWJDb3JlVGV4dFJ1biAqcnVuKTsKK3N0
YXRpYyBXZWJDb3JlVGV4dFJ1biBhcHBseU1pcnJvcmluZ1RvUnVuKGNvbnN0IFdlYkNvcmVUZXh0
UnVuICpydW4pOworCisKIC8vIE1pc2MuCiBzdGF0aWMgQk9PTCBmaWxsU3R5bGVXaXRoQXR0cmli
dXRlcyhBVFNVU3R5bGUgc3R5bGUsIE5TRm9udCAqdGhlRm9udCk7Ci1zdGF0aWMgQk9PTCBzaG91
bGRVc2VBVFNVKGNvbnN0IFdlYkNvcmVUZXh0UnVuICpydW4pOworc3RhdGljIEJPT0wgc2hvdWxk
VXNlQVRTVShjb25zdCBXZWJUZXh0UmVuZGVyZXIgKnJlbmRlcmVyLCBjb25zdCBXZWJDb3JlVGV4
dFJ1biAqcnVuKTsKIHN0YXRpYyBOU1N0cmluZyAqcGF0aEZyb21Gb250KE5TRm9udCAqZm9udCk7
CiAKIApAQCAtNDU0LDYgKzQ2MSw4IEBAIHN0YXRpYyBCT09MIGFsd2F5c1VzZUFUU1UgPSBOTzsK
ICNlbmRpZgogICAgICAKICAgICBpc1NtYWxsQ2Fwc1JlbmRlcmVyID0gTk87CisgICAgc2ltdWxh
dGVkU21hbGxDYXBzID0gTk87CisgICAgdHJ1ZVNtYWxsQ2FwcyA9IE5POwogICAgIAogICAgIHJl
dHVybiBzZWxmOwogfQpAQCAtNTM0LDcgKzU0Myw3IEBAIHN0YXRpYyBCT09MIGFsd2F5c1VzZUFU
U1UgPSBOTzsKICAgICAgICAgW1tzZWxmIF9zbWFsbENhcHNSZW5kZXJlcl0gZHJhd1J1bjpydW4g
c3R5bGU6c3R5bGUgZ2VvbWV0cnk6Z2VvbWV0cnldOwogICAgIH0KICAgICBlbHNlIHsKLSAgICAg
ICAgaWYgKHNob3VsZFVzZUFUU1UocnVuKSkKKyAgICAgICAgaWYgKHNob3VsZFVzZUFUU1Uoc2Vs
ZiwgcnVuKSkKICAgICAgICAgICAgIFtzZWxmIF9BVFNVX2RyYXdSdW46cnVuIHN0eWxlOnN0eWxl
IGdlb21ldHJ5Omdlb21ldHJ5XTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgW3NlbGYgX0NH
X2RyYXdSdW46cnVuIHN0eWxlOnN0eWxlIGdlb21ldHJ5Omdlb21ldHJ5XTsKQEAgLTYwOCw3ICs2
MTcsNyBAQCBzdGF0aWMgQk9PTCBhbHdheXNVc2VBVFNVID0gTk87CiAgICAgICAgIFtbc2VsZiBf
c21hbGxDYXBzUmVuZGVyZXJdIGRyYXdIaWdobGlnaHRGb3JSdW46cnVuIHN0eWxlOnN0eWxlIGdl
b21ldHJ5Omdlb21ldHJ5XTsKICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIGlmIChzaG91bGRV
c2VBVFNVKHJ1bikpCisgICAgICAgIGlmIChzaG91bGRVc2VBVFNVKHNlbGYsIHJ1bikpCiAgICAg
ICAgICAgICBbc2VsZiBfQVRTVV9kcmF3SGlnaGxpZ2h0Rm9yUnVuOnJ1biBzdHlsZTpzdHlsZSBn
ZW9tZXRyeTpnZW9tZXRyeV07CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIFtzZWxmIF9DR19k
cmF3SGlnaGxpZ2h0Rm9yUnVuOnJ1biBzdHlsZTpzdHlsZSBnZW9tZXRyeTpnZW9tZXRyeV07CkBA
IC02ODYsNyArNjk1LDcgQEAgc3RhdGljIEJPT0wgYWx3YXlzVXNlQVRTVSA9IE5POwogICAgICAg
ICByZXR1cm4gW1tzZWxmIF9zbWFsbENhcHNSZW5kZXJlcl0gcG9pbnRUb09mZnNldDpydW4gc3R5
bGU6c3R5bGUgcG9zaXRpb246eCByZXZlcnNlZDpyZXZlcnNlZCBpbmNsdWRlUGFydGlhbEdseXBo
czppbmNsdWRlUGFydGlhbEdseXBoc107CiAgICAgfQogCi0gICAgaWYgKHNob3VsZFVzZUFUU1Uo
cnVuKSkKKyAgICBpZiAoc2hvdWxkVXNlQVRTVShzZWxmLCBydW4pKQogICAgICAgICByZXR1cm4g
W3NlbGYgX0FUU1VfcG9pbnRUb09mZnNldDpydW4gc3R5bGU6c3R5bGUgcG9zaXRpb246eCByZXZl
cnNlZDpyZXZlcnNlZCBpbmNsdWRlUGFydGlhbEdseXBoczppbmNsdWRlUGFydGlhbEdseXBoc107
CiAgICAgcmV0dXJuIFtzZWxmIF9DR19wb2ludFRvT2Zmc2V0OnJ1biBzdHlsZTpzdHlsZSBwb3Np
dGlvbjp4IHJldmVyc2VkOnJldmVyc2VkIGluY2x1ZGVQYXJ0aWFsR2x5cGhzOmluY2x1ZGVQYXJ0
aWFsR2x5cGhzXTsKIH0KQEAgLTczNCw4ICs3NDMsNDUgQEAgc3RhdGljIEJPT0wgYWx3YXlzVXNl
QVRTVSA9IE5POwogCiAtIChOU0ZvbnQgKilfc21hbGxDYXBzRm9udAogewotICAgIGlmICghc21h
bGxDYXBzRm9udCkKLSAgICAgICAgc21hbGxDYXBzRm9udCA9IFtbW05TRm9udE1hbmFnZXIgc2hh
cmVkRm9udE1hbmFnZXJdIGNvbnZlcnRGb250OmZvbnQgdG9TaXplOihbZm9udCBwb2ludFNpemVd
ICogU01BTExDQVBTX0ZPTlRTSVpFX01VTFRJUExJRVIpXSBzY3JlZW5Gb250XTsKKyAgICByZXR1
cm4gW3NlbGYgX3NtYWxsQ2Fwc0ZvbnRGb3JGb250OmZvbnRdOworfQorCistIChOU0ZvbnQgKilf
c21hbGxDYXBzRm9udEZvckZvbnQ6KE5TRm9udCAqKWYKK3sKKyAgICBpZiAoIXNtYWxsQ2Fwc0Zv
bnQpIHsKKyAgICAgICAgLy8gZmlyc3QgY2hlY2sgZm9yIHRoZSBrTGV0dGVyQ2FzZVR5cGU6IGtT
bWFsbENhcHNTZWxlY3RvciBmb250IGZlYXR1cmUKKyAgICAgICAgLy8gaWYgcHJlc2VudCwgd2Ug
aGF2ZSBhbiBBQVQvT3BlblR5cGUgZm9udCB3aXRoIHNtYWxsLWNhcHMKKyAgICAgICAgSXRlbUNv
dW50IGNvdW50OworICAgICAgICBBVFNVRm9udElEIGZvbnRJRCA9IFdLR2V0TlNGb250QVRTVUZv
bnRJZChmKTsKKyAgICAgICAgT1NTdGF0dXMgc3RhdHVzID0gQVRTVUNvdW50Rm9udEZlYXR1cmVT
ZWxlY3RvcnMoZm9udElELCBrTGV0dGVyQ2FzZVR5cGUsICZjb3VudCk7CisgICAgICAgIGlmIChz
dGF0dXMgPT0gbm9FcnIgJiYgY291bnQgPiAwKSB7CisgICAgICAgICAgICBBVFNVRm9udEZlYXR1
cmVTZWxlY3RvciAqc2VsZWN0b3JzID0gKEFUU1VGb250RmVhdHVyZVNlbGVjdG9yICopIG1hbGxv
Yyhjb3VudCAqIHNpemVvZihBVFNVRm9udEZlYXR1cmVTZWxlY3RvcikpOworICAgICAgICAgICAg
aWYgKHNlbGVjdG9ycyAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGk7
CisgICAgICAgICAgICAgICAgQVRTVUdldEZvbnRGZWF0dXJlU2VsZWN0b3JzKGZvbnRJRCwga0xl
dHRlckNhc2VUeXBlLCBjb3VudCwgc2VsZWN0b3JzLCBOVUxMLCBOVUxMLCBOVUxMKTsKKyAgICAg
ICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgY291bnQ7IGkrKykgeworICAgICAgICAgICAgICAg
ICAgICBpZiAoc2VsZWN0b3JzW2ldID09IGtTbWFsbENhcHNTZWxlY3RvcikgeworICAgICAgICAg
ICAgICAgICAgICAgICAgc21hbGxDYXBzRm9udCA9IFtmIHNjcmVlbkZvbnRdOworICAgICAgICAg
ICAgICAgICAgICAgICAgdHJ1ZVNtYWxsQ2FwcyA9IFlFUzsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIGZyZWUoKHZvaWQgKilzZWxlY3RvcnMpOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgICAgIAorICAgICAgICBpZighdHJ1ZVNtYWxsQ2FwcykgeworICAgICAgICAg
ICAgZiA9IFtbTlNGb250TWFuYWdlciBzaGFyZWRGb250TWFuYWdlcl0gY29udmVydEZvbnQ6ZiB0
b0hhdmVUcmFpdDpOU1NtYWxsQ2Fwc0ZvbnRNYXNrXTsKKyAgICAgICAgICAgIGlmIChbZm9udCBz
Y3JlZW5Gb250XSAhPSBbZiBzY3JlZW5Gb250XSkKKyAgICAgICAgICAgICAgICAvLyB0eXBlZmFj
ZSBoYXMgc21hbGwtY2FwcyB2YXJpYW50IGFzIHNlcGVyYXRlIGZvbnQKKyAgICAgICAgICAgICAg
ICBzbWFsbENhcHNGb250ID0gW2Ygc2NyZWVuRm9udF07CisgICAgICAgICAgICBlbHNlIHsKKyAg
ICAgICAgICAgICAgICAvLyBpZiBhbGwgZWxzZSBmYWlscywgc3ludGhlc2l6ZSBzbWFsbC1jYXBz
IHdpdGggYSA3MCUgcmVkdWN0aW9uCisgICAgICAgICAgICAgICAgc21hbGxDYXBzRm9udCA9IFtb
W05TRm9udE1hbmFnZXIgc2hhcmVkRm9udE1hbmFnZXJdIGNvbnZlcnRGb250OmYgdG9TaXplOihb
Zm9udCBwb2ludFNpemVdICogU01BTExDQVBTX0ZPTlRTSVpFX01VTFRJUExJRVIpXSBzY3JlZW5G
b250XTsKKyAgICAgICAgICAgICAgICBzaW11bGF0ZWRTbWFsbENhcHMgPSBZRVM7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICB9CiAgICAgcmV0dXJuIHVzaW5nUHJpbnRlckZvbnQgPyBb
c21hbGxDYXBzRm9udCBwcmludGVyRm9udF0gOiBzbWFsbENhcHNGb250OwogfQogCkBAIC0xMTc1
LDcgKzEyMjEsNyBAQCBzdGF0aWMgY29uc3QgY2hhciAqam9pbmluZ05hbWVzW10gPSB7CiAKIC0g
KGZsb2F0KV9mbG9hdFdpZHRoRm9yUnVuOihjb25zdCBXZWJDb3JlVGV4dFJ1biAqKXJ1biBzdHls
ZTooY29uc3QgV2ViQ29yZVRleHRTdHlsZSAqKXN0eWxlIHdpZHRoczooZmxvYXQgKil3aWR0aEJ1
ZmZlciBmb250czooTlNGb250ICoqKWZvbnRCdWZmZXIgZ2x5cGhzOihDR0dseXBoICopZ2x5cGhC
dWZmZXIgc3RhcnRQb3NpdGlvbjooZmxvYXQgKilzdGFydFBvc2l0aW9uIG51bUdseXBoczooaW50
ICopX251bUdseXBocwogewotICAgIGlmIChzaG91bGRVc2VBVFNVKHJ1bikpCisgICAgaWYgKHNo
b3VsZFVzZUFUU1Uoc2VsZiwgcnVuKSkKICAgICAgICAgcmV0dXJuIFtzZWxmIF9BVFNVX2Zsb2F0
V2lkdGhGb3JSdW46cnVuIHN0eWxlOnN0eWxlXTsKICAgICAKICAgICByZXR1cm4gW3NlbGYgX0NH
X2Zsb2F0V2lkdGhGb3JSdW46cnVuIHN0eWxlOnN0eWxlIHdpZHRoczp3aWR0aEJ1ZmZlciBmb250
czpmb250QnVmZmVyIGdseXBoczpnbHlwaEJ1ZmZlciBzdGFydFBvc2l0aW9uOnN0YXJ0UG9zaXRp
b24gbnVtR2x5cGhzOl9udW1HbHlwaHNdOwpAQCAtMTQ0Myw3ICsxNDg5LDcgQEAgc3RhdGljIGNv
bnN0IGNoYXIgKmpvaW5pbmdOYW1lc1tdID0gewogfQogCiAKLS0gKHZvaWQpX2luaXRpYWxpemVB
VFNVU3R5bGUKKy0gKHZvaWQpX0FUU1VfaW5pdGlhbGl6ZVN0eWxlCiB7CiAgICAgLy8gVGhlIHR3
byBOU0ZvbnQgY2FsbHMgaW4gdGhpcyBtZXRob2QgKHBvaW50U2l6ZSBhbmQgX2F0c0ZvbnRJRCkK
ICAgICAvLyBhcmUgYm90aCBleGNlcHRpb24tc2FmZS4KQEAgLTE0NTYsOCArMTUwMiwxMiBAQCBz
dGF0aWMgY29uc3QgY2hhciAqam9pbmluZ05hbWVzW10gPSB7CiAgICAgICAgIGlmKHN0YXR1cyAh
PSBub0VycikKICAgICAgICAgICAgIEZBVEFMX0FMV0FZUyAoIkFUU1VDcmVhdGVTdHlsZSBmYWls
ZWQgKCVkKSIsIHN0YXR1cyk7CiAgICAgCi0gICAgICAgIEFUU1VGb250SUQgZm9udElEID0gV0tH
ZXROU0ZvbnRBVFNVRm9udElkKGZvbnQpOwotICAgICAgICBpZiAoZm9udElEID09IDApeworICAg
ICAgICBBVFNVRm9udElEIGZvbnRJRDsKKyAgICAgICAgaWYgKGlzU21hbGxDYXBzUmVuZGVyZXIp
CisgICAgICAgICAgICBmb250SUQgPSBXS0dldE5TRm9udEFUU1VGb250SWQoW3NlbGYgX3NtYWxs
Q2Fwc0ZvbnRdKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZm9udElEID0gV0tHZXROU0Zv
bnRBVFNVRm9udElkKGZvbnQpOworICAgICAgICBpZiAoZm9udElEID09IDApIHsKICAgICAgICAg
ICAgIEFUU1VEaXNwb3NlU3R5bGUoX0FUU1VTc3R5bGUpOwogICAgICAgICAgICAgRVJST1IgKCJ1
bmFibGUgdG8gZ2V0IEFUU1VGb250SUQgZm9yICVAIiwgZm9udCk7CiAgICAgICAgICAgICByZXR1
cm47CkBAIC0xNDcxLDYgKzE1MjEsNyBAQCBzdGF0aWMgY29uc3QgY2hhciAqam9pbmluZ05hbWVz
W10gPSB7CiAgICAgICAgIHN0YXR1cyA9IEFUU1VTZXRBdHRyaWJ1dGVzIChfQVRTVVNzdHlsZSwg
Mywgc3R5bGVUYWdzLCBzdHlsZVNpemVzLCBzdHlsZVZhbHVlcyk7CiAgICAgICAgIGlmKHN0YXR1
cyAhPSBub0VycikKICAgICAgICAgICAgIEZBVEFMX0FMV0FZUyAoIkFUU1VTZXRBdHRyaWJ1dGVz
IGZhaWxlZCAoJWQpIiwgc3RhdHVzKTsKKyAgICAgICAgCiAgICAgICAgIHN0YXR1cyA9IEFUU0Zv
bnRHZXRUYWJsZShmb250SUQsICdwcm9wJywgMCwgMCwgMCwgJnByb3BUYWJsZVNpemUpOwogICAg
ICAgICBpZiAoc3RhdHVzID09IG5vRXJyKSAgICAvLyBuYWl2ZWx5IGFzc3VtZSB0aGF0IGlmIGEg
J3Byb3AnIHRhYmxlIGV4aXN0cyB0aGVuIGl0IGNvbnRhaW5zIG1pcnJvcmluZyBpbmZvCiAgICAg
ICAgICAgICBBVFNVTWlycm9ycyA9IFlFUzsKQEAgLTE0NzgsNiArMTUyOSwxMyBAQCBzdGF0aWMg
Y29uc3QgY2hhciAqam9pbmluZ05hbWVzW10gPSB7CiAgICAgICAgICAgICBBVFNVTWlycm9ycyA9
IE5POwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBGQVRBTF9BTFdBWVMgKCJBVFNGb250R2V0
VGFibGUgZmFpbGVkICglZCkiLCBzdGF0dXMpOworICAgICAgICAKKyAgICAgICAgaWYgKGlzU21h
bGxDYXBzUmVuZGVyZXIgJiYgdHJ1ZVNtYWxsQ2FwcykgeworICAgICAgICAgICAgLy8gYWN0aXZh
dGUgZmVhdHVyZSwgdHJ5IGFuZCBzZXQgb2xkLXN0eWxlIG51bWJlcnMgdG9vCisgICAgICAgICAg
ICBBVFNVRm9udEZlYXR1cmVUeXBlIHR5cGVzW10gPSB7IGtMZXR0ZXJDYXNlVHlwZSwga051bWJl
ckNhc2VUeXBlIH07CisgICAgICAgICAgICBBVFNVRm9udEZlYXR1cmVTZWxlY3RvciBzZWxlY3Rv
cnNbXSA9IHsga1NtYWxsQ2Fwc1NlbGVjdG9yLCBrTG93ZXJDYXNlTnVtYmVyc1NlbGVjdG9yIH07
CisgICAgICAgICAgICBBVFNVU2V0Rm9udEZlYXR1cmVzKF9BVFNVU3N0eWxlLCAyLCB0eXBlcywg
c2VsZWN0b3JzKTsKKyAgICAgICAgfQogCiAgICAgICAgIEFUU1VTdHlsZUluaXRpYWxpemVkID0g
WUVTOwogICAgIH0KQEAgLTE0OTUsMTEgKzE1NTMsMTggQEAgc3RhdGljIGNvbnN0IGNoYXIgKmpv
aW5pbmdOYW1lc1tdID0gewogICAgIFVuaUNoYXJDb3VudCBzdWJzdGl0dXRlTGVuZ3RoOwogICAg
IE9TU3RhdHVzIHN0YXR1czsKICAgICAKLSAgICBbc2VsZiBfaW5pdGlhbGl6ZUFUU1VTdHlsZV07
CisgICAgW3NlbGYgX0FUU1VfaW5pdGlhbGl6ZVN0eWxlXTsKICAgICAKICAgICAvLyBGSVhNRTog
VGhpcyBpcyBtaXNzaW5nIHRoZSBmb2xsb3dpbmcgZmVhdHVyZXMgdGhhdCB0aGUgQ29yZUdyYXBo
aWNzIGNvZGUgcGF0aCBoYXM6CiAgICAgLy8gLSBCb3RoIFxuIGFuZCBub25icmVha2luZyBzcGFj
ZSByZW5kZXIgYXMgYSBzcGFjZS4KICAgICAvLyAtIEFsbCBvdGhlciBjb250cm9sIGNoYXJhY3Rl
cnMgbXVzdCBub3QgcmVuZGVyIGF0IGFsbCAob3RoZXIgY29kZSBwYXRoIHVzZXMgemVyby13aWR0
aCBzcGFjZXMpLgorICAgIAorICAgIFdlYkNvcmVUZXh0UnVuIGNhcHNSdW47CisgICAgaWYoc3R5
bGUtPnNtYWxsQ2FwcyAmJiBzaW11bGF0ZWRTbWFsbENhcHMpIHsKKyAgICAgICAgLy8gc3ludGhl
c2l6ZWQgc21hbGwtY2FwczogY2FwaXRhbGl6ZSBjaGFyYWN0ZXJzIGluIHJ1bgorICAgICAgICBj
YXBzUnVuID0gY2FwaXRhbGl6ZUNoYXJhY3RlcnNJblJ1bihydW4pOworICAgICAgICBydW4gPSAm
Y2Fwc1J1bjsKKyAgICB9CiAKICAgICBydW5MZW5ndGggPSBydW4tPnRvIC0gcnVuLT5mcm9tOwog
ICAgIHN0YXR1cyA9IEFUU1VDcmVhdGVUZXh0TGF5b3V0V2l0aFRleHRQdHIoCkBAIC0xNTM1LDcg
KzE2MDAsNyBAQCBzdGF0aWMgY29uc3QgY2hhciAqam9pbmluZ05hbWVzW10gPSB7CiAgICAgICAg
IE5TRm9udCAqc3Vic3RpdHV0ZUZvbnQgPSBbc2VsZiBfc3Vic3RpdHV0ZUZvbnRGb3JDaGFyYWN0
ZXJzOnJ1bi0+Y2hhcmFjdGVycytzdWJzdGl0dXRlT2Zmc2V0IGxlbmd0aDpzdWJzdGl0dXRlTGVu
Z3RoIGZhbWlsaWVzOnN0eWxlLT5mYW1pbGllc107CiAgICAgICAgIGlmIChzdWJzdGl0dXRlRm9u
dCkgewogICAgICAgICAgICAgV2ViVGV4dFJlbmRlcmVyICpzdWJzdGl0dXRlUmVuZGVyZXIgPSBb
W1dlYlRleHRSZW5kZXJlckZhY3Rvcnkgc2hhcmVkRmFjdG9yeV0gcmVuZGVyZXJXaXRoRm9udDpz
dWJzdGl0dXRlRm9udCB1c2luZ1ByaW50ZXJGb250OnVzaW5nUHJpbnRlckZvbnRdOwotICAgICAg
ICAgICAgW3N1YnN0aXR1dGVSZW5kZXJlciBfaW5pdGlhbGl6ZUFUU1VTdHlsZV07CisgICAgICAg
ICAgICBbc3Vic3RpdHV0ZVJlbmRlcmVyIF9BVFNVX2luaXRpYWxpemVTdHlsZV07CiAgICAgICAg
ICAgICBpZiAoc3Vic3RpdHV0ZVJlbmRlcmVyICYmIHN1YnN0aXR1dGVSZW5kZXJlci0+X0FUU1VT
c3R5bGUpCiAgICAgICAgICAgICAgICAgQVRTVVNldFJ1blN0eWxlKGxheW91dCwgc3Vic3RpdHV0
ZVJlbmRlcmVyLT5fQVRTVVNzdHlsZSwgc3Vic3RpdHV0ZU9mZnNldCwgc3Vic3RpdHV0ZUxlbmd0
aCk7CiAgICAgICAgICAgICAvLyBpZ25vcmluZyBlcnJvcnMKQEAgLTE1NDMsNyArMTYwOCwxMCBA
QCBzdGF0aWMgY29uc3QgY2hhciAqam9pbmluZ05hbWVzW10gPSB7CiAgICAgICAgIHN1YnN0aXR1
dGVPZmZzZXQgKz0gc3Vic3RpdHV0ZUxlbmd0aDsKICAgICB9OwogICAgIC8vIGlnbm9yaW5nIGVy
cm9ycyBpbiBmb250IHN1YnN0aXR1dGlvbgotICAgICAgICAKKyAgICAKKyAgICBpZihzdHlsZS0+
c21hbGxDYXBzICYmIHNpbXVsYXRlZFNtYWxsQ2FwcykKKyAgICAgICAgZnJlZSgodm9pZCAqKWNh
cHNSdW4uY2hhcmFjdGVycyk7CisgICAgCiAgICAgcmV0dXJuIGxheW91dDsKIH0KIApAQCAtMTU3
OSw5ICsxNjQ3LDcgQEAgc3RhdGljIGNvbnN0IGNoYXIgKmpvaW5pbmdOYW1lc1tdID0gewogCiAt
IChmbG9hdClfQVRTVV9mbG9hdFdpZHRoRm9yUnVuOihjb25zdCBXZWJDb3JlVGV4dFJ1biAqKXJ1
biBzdHlsZTooY29uc3QgV2ViQ29yZVRleHRTdHlsZSAqKXN0eWxlCiB7Ci0gICAgQVRTVHJhcGV6
b2lkIG9HbHlwaEJvdW5kczsKLSAgICAKLSAgICBvR2x5cGhCb3VuZHMgPSBbc2VsZiBfdHJhcGV6
b2lkRm9yUnVuOnJ1biBzdHlsZTpzdHlsZSBhdFBvaW50Ok5TTWFrZVBvaW50ICgwLDApXTsKKyAg
ICBBVFNUcmFwZXpvaWQgb0dseXBoQm91bmRzID0gW3NlbGYgX3RyYXBlem9pZEZvclJ1bjpydW4g
c3R5bGU6c3R5bGUgYXRQb2ludDpOU01ha2VQb2ludCgwLDApXTsKICAgICAKICAgICBmbG9hdCB3
aWR0aCA9IAogICAgICAgICBNQVgoRml4ZWRUb0Zsb2F0KG9HbHlwaEJvdW5kcy51cHBlclJpZ2h0
LngpLCBGaXhlZFRvRmxvYXQob0dseXBoQm91bmRzLmxvd2VyUmlnaHQueCkpIC0gCkBAIC0xNTkx
LDYgKzE2NTcsMjYgQEAgc3RhdGljIGNvbnN0IGNoYXIgKmpvaW5pbmdOYW1lc1tdID0gewogfQog
CiAvLyBCZSBzdXJlIHRvIGZyZWUgdGhlIHJ1bi5jaGFyYWN0ZXJzIGFsbG9jYXRlZCBieSB0aGlz
IGZ1bmN0aW9uLgorc3RhdGljIFdlYkNvcmVUZXh0UnVuIGNhcGl0YWxpemVDaGFyYWN0ZXJzSW5S
dW4oY29uc3QgV2ViQ29yZVRleHRSdW4gKnJ1bikKK3sKKyAgICBXZWJDb3JlVGV4dFJ1biBzd2Fw
cGVkUnVuOworICAgIHVuc2lnbmVkIGludCBpOworICAgIAorICAgIFVuaUNoYXIgKnN3YXBwZWRD
aGFyYWN0ZXJzID0gKFVuaUNoYXIgKiltYWxsb2Moc2l6ZW9mKFVuaUNoYXIpKihydW4tPmxlbmd0
aCkpOworICAgIGZvciAoaT0wOyBpIDwgcnVuLT5sZW5ndGg7IGkrKykgeworICAgICAgICAvLyB3
aWxsIGNob2tlIG9uIHN1cnJvZ2F0ZSBwYWlycz8KKy8vICAgICAgaWYoIXVfaXNVVXBwZXJjYXNl
KHJ1bi0+Y2hhcmFjdGVyc1tpXSkpCisgICAgICAgICAgICBzd2FwcGVkQ2hhcmFjdGVyc1tpXSA9
IHVfdG91cHBlcihydW4tPmNoYXJhY3RlcnNbaV0pOworICAgIH0KKyAgICBzd2FwcGVkUnVuLmZy
b20gPSBydW4tPmZyb207CisgICAgc3dhcHBlZFJ1bi50byA9IHJ1bi0+dG87CisgICAgc3dhcHBl
ZFJ1bi5sZW5ndGggPSBydW4tPmxlbmd0aDsKKyAgICBzd2FwcGVkUnVuLmNoYXJhY3RlcnMgPSBz
d2FwcGVkQ2hhcmFjdGVyczsKKworICAgIHJldHVybiBzd2FwcGVkUnVuOworfQorCisvLyBCZSBz
dXJlIHRvIGZyZWUgdGhlIHJ1bi5jaGFyYWN0ZXJzIGFsbG9jYXRlZCBieSB0aGlzIGZ1bmN0aW9u
Lgogc3RhdGljIFdlYkNvcmVUZXh0UnVuIHJldmVyc2VDaGFyYWN0ZXJzSW5SdW4oY29uc3QgV2Vi
Q29yZVRleHRSdW4gKnJ1bikKIHsKICAgICBXZWJDb3JlVGV4dFJ1biBzd2FwcGVkUnVuOwpAQCAt
MjA1NywxMSArMjE0MywxMiBAQCBzdGF0aWMgZmxvYXQgd2lkdGhGb3JOZXh0Q2hhcmFjdGVyKENo
YXJhCiAgICAgaWYgKHJlbmRlcmVyLT5pc1NtYWxsQ2Fwc1JlbmRlcmVyKSB7CiAgICAgICAgIGlm
ICghdV9pc1VVcHBlcmNhc2UoYykpIHsKICAgICAgICAgICAgIC8vIE9ubHkgdXNlIHNtYWxsIGNh
cCBmb250IGlmIHRoZSB0aGUgdXBwZXJjYXNlIHZlcnNpb24gb2YgdGhlIGNoYXJhY3RlcgotICAg
ICAgICAgICAgLy8gaXMgZGlmZmVyZW50IHRoYW4gdGhlIGxvd2VyY2FzZS4KKyAgICAgICAgICAg
IC8vIGlzIGRpZmZlcmVudCB0aGFuIHRoZSBsb3dlcmNhc2UsIGFuZCBvbmx5IHRyYW5zZm9ybSBp
ZiB1c2luZyA3MCUgc3ludGhlc2lzLgogICAgICAgICAgICAgVW5pY29kZUNoYXIgbmV3QyA9IHVf
dG91cHBlcihjKTsKICAgICAgICAgICAgIGlmIChuZXdDICE9IGMpIHsKICAgICAgICAgICAgICAg
ICB1c2VTbWFsbENhcHNGb250ID0gWUVTOwotICAgICAgICAgICAgICAgIGMgPSBuZXdDOworICAg
ICAgICAgICAgICAgIGlmIChyZW5kZXJlci0+c2ltdWxhdGVkU21hbGxDYXBzKQorICAgICAgICAg
ICAgICAgICAgICBjID0gbmV3QzsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KQEAg
LTIxMTQsNyArMjIwMSw3IEBAIHN0YXRpYyBmbG9hdCB3aWR0aEZvck5leHRDaGFyYWN0ZXIoQ2hh
cmEKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAvLyBQb3RlbnRpYWwgZm9yIG9wdGltaXph
dGlvbi4gIFRoaXMgcGF0aCBzaG91bGQgb25seSBiZSB0YWtlbiBpZiB3ZSdyZQogICAgICAgICAg
ICAgLy8gdXNpbmcgYSBjYWNoZWQgc3Vic3RpdHV0ZWQgZm9udC4KLSAgICAgICAgICAgIF9mb250
VXNlZCA9IFtbTlNGb250TWFuYWdlciBzaGFyZWRGb250TWFuYWdlcl0gY29udmVydEZvbnQ6X2Zv
bnRVc2VkIHRvU2l6ZTpbX2ZvbnRVc2VkIHBvaW50U2l6ZV0gKiBTTUFMTENBUFNfRk9OVFNJWkVf
TVVMVElQTElFUl07CisgICAgICAgICAgICBfZm9udFVzZWQgPSBbcmVuZGVyZXIgX3NtYWxsQ2Fw
c0ZvbnRGb3JGb250Ol9mb250VXNlZF07CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTIyNzQsMTMg
KzIzNjEsMTMgQEAgc3RhdGljIEJPT0wgZmlsbFN0eWxlV2l0aEF0dHJpYnV0ZXMoQVRTVQogICAg
IHJldHVybiBOTzsKIH0KIAotc3RhdGljIEJPT0wgc2hvdWxkVXNlQVRTVShjb25zdCBXZWJDb3Jl
VGV4dFJ1biAqcnVuKQorc3RhdGljIEJPT0wgc2hvdWxkVXNlQVRTVShjb25zdCBXZWJUZXh0UmVu
ZGVyZXIgKnJlbmRlcmVyLCBjb25zdCBXZWJDb3JlVGV4dFJ1biAqcnVuKQogewogICAgIFVuaUNo
YXIgYzsKICAgICBjb25zdCBVbmlDaGFyICpjaGFyYWN0ZXJzID0gcnVuLT5jaGFyYWN0ZXJzOwog
ICAgIGludCBpLCBmcm9tID0gcnVuLT5mcm9tLCB0byA9IHJ1bi0+dG87CiAgICAgCi0gICAgaWYg
KGFsd2F5c1VzZUFUU1UpCisgICAgaWYgKGFsd2F5c1VzZUFUU1UgfHwgKHJlbmRlcmVyLT5pc1Nt
YWxsQ2Fwc1JlbmRlcmVyICYmIHJlbmRlcmVyLT50cnVlU21hbGxDYXBzKSkKICAgICAgICAgcmV0
dXJuIFlFUzsKICAgICAgICAgCiAgICAgZm9yIChpID0gZnJvbTsgaSA8IHRvOyBpKyspewo=
</data>
<flag name="review"
          id="350"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>3325</attachid>
            <date>2005-08-10 13:30:49 -0700</date>
            <delta_ts>2005-08-10 13:30:49 -0700</delta_ts>
            <desc>layout-tests/fast/css/009-expected.txt</desc>
            <filename>009-expected.txt</filename>
            <type>text/plain</type>
            <size>3765</size>
            <attacher name="Nicholas Shanks">nickshanks</attacher>
            
              <data encoding="base64">bGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCiAgUmVuZGVyQ2FudmFzIGF0ICgwLDApIHNpemUg
ODAweDYwMApsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKICBSZW5kZXJCbG9jayB7SFRNTH0g
YXQgKDAsMCkgc2l6ZSA4MDB4NjAwCiAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBzaXpl
IDc4NHg1NzYKICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDApIHNpemUgNzg0eDU0CiAgICAg
ICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSA3Njh4NTQKICAgICAgICAgIHRleHQg
cnVuIGF0ICgwLDApIHdpZHRoIDc1MzogIkhvZWZsZXIgVGV4dDogVGhlIHRvcCBsaW5lIGlzIHRy
dWUgc21hbGwgY2FwcyBvYnRhaW5lZCB2aWEgQUFUIGZlYXR1cmVzLCB0aGUgc2Vjb25kIGxpbmUg
aXMgYSBIVE1MIGhhY2sgaW1taXRhdGluZyB0aGUiCiAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwx
OCkgd2lkdGggNzY4OiAiNzAlIHJlZHVjdGlvbiB0aGF0IFdlYktpdCB3b3VsZCBkbyBpZiB0aGUg
QUFUIHN1cHBvcnQgZ2V0cyBicm9rZW4uIFRoZXNlIHR3byBsaW5lcyBzaG91bGQgbG9vayBkaWZm
ZXJlbnQsIHdpdGggdGhlIGZpcnN0IgogICAgICAgICAgdGV4dCBydW4gYXQgKDAsMzYpIHdpZHRo
IDQwNTogImxpbmUgbG9va2luZyAnYm9sZGVyJy4gTmVpdGhlciBsaW5lIHNob3VsZCBhcHBlYXIg
d2l0aCBtaW5pc2N1bGVzLiIKICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsNzApIHNpemUg
Nzg0eDMyCiAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSA1NjN4MzIKICAg
ICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDU2MzogIlRoaXMgaXMgYSBkZW1vbnN0cmF0
aW9uIG9mIFNtYWxsIENhcHMiCiAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDEwMikgc2l6
ZSA3ODR4MzIKICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDIzeDMyCiAg
ICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAyMzogIlQiCiAgICAgICAgUmVuZGVySW5s
aW5lIHtTUEFOfSBhdCAoMCwwKSBzaXplIDQweDIyCiAgICAgICAgICBSZW5kZXJUZXh0IHtURVhU
fSBhdCAoMjMsNykgc2l6ZSA0MHgyMgogICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMjMsNykgd2lk
dGggNDA6ICJISVMiCiAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDYzLDApIHNpemUgOHgz
MgogICAgICAgICAgdGV4dCBydW4gYXQgKDYzLDApIHdpZHRoIDg6ICIgIgogICAgICAgIFJlbmRl
cklubGluZSB7U1BBTn0gYXQgKDAsMCkgc2l6ZSAyMXgyMgogICAgICAgICAgUmVuZGVyVGV4dCB7
VEVYVH0gYXQgKDcxLDcpIHNpemUgMjF4MjIKICAgICAgICAgICAgdGV4dCBydW4gYXQgKDcxLDcp
IHdpZHRoIDIxOiAiSVMiCiAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDkyLDApIHNpemUg
OHgzMgogICAgICAgICAgdGV4dCBydW4gYXQgKDkyLDApIHdpZHRoIDg6ICIgIgogICAgICAgIFJl
bmRlcklubGluZSB7U1BBTn0gYXQgKDAsMCkgc2l6ZSAxNngyMgogICAgICAgICAgUmVuZGVyVGV4
dCB7VEVYVH0gYXQgKDEwMCw3KSBzaXplIDE2eDIyCiAgICAgICAgICAgIHRleHQgcnVuIGF0ICgx
MDAsNykgd2lkdGggMTY6ICJBIgogICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgxMTYsMCkg
c2l6ZSA4eDMyCiAgICAgICAgICB0ZXh0IHJ1biBhdCAoMTE2LDApIHdpZHRoIDg6ICIgIgogICAg
ICAgIFJlbmRlcklubGluZSB7U1BBTn0gYXQgKDAsMCkgc2l6ZSAyMTJ4MjIKICAgICAgICAgIFJl
bmRlclRleHQge1RFWFR9IGF0ICgxMjQsNykgc2l6ZSAyMTJ4MjIKICAgICAgICAgICAgdGV4dCBy
dW4gYXQgKDEyNCw3KSB3aWR0aCAyMTI6ICJERU1PTlNUUkFUSU9OIgogICAgICAgIFJlbmRlclRl
eHQge1RFWFR9IGF0ICgzMzYsMCkgc2l6ZSA4eDMyCiAgICAgICAgICB0ZXh0IHJ1biBhdCAoMzM2
LDApIHdpZHRoIDg6ICIgIgogICAgICAgIFJlbmRlcklubGluZSB7U1BBTn0gYXQgKDAsMCkgc2l6
ZSAzMXgyMgogICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDM0NCw3KSBzaXplIDMxeDIy
CiAgICAgICAgICAgIHRleHQgcnVuIGF0ICgzNDQsNykgd2lkdGggMzE6ICJPRiIKICAgICAgICBS
ZW5kZXJUZXh0IHtURVhUfSBhdCAoMzc1LDApIHNpemUgMjR4MzIKICAgICAgICAgIHRleHQgcnVu
IGF0ICgzNzUsMCkgd2lkdGggMjQ6ICIgUyIKICAgICAgICBSZW5kZXJJbmxpbmUge1NQQU59IGF0
ICgwLDApIHNpemUgNjV4MjIKICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgzOTksNykg
c2l6ZSA2NXgyMgogICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMzk5LDcpIHdpZHRoIDY1OiAiTUFM
TCIKICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoNDY0LDApIHNpemUgMzF4MzIKICAgICAg
ICAgIHRleHQgcnVuIGF0ICg0NjQsMCkgd2lkdGggMzE6ICIgQyIKICAgICAgICBSZW5kZXJJbmxp
bmUge1NQQU59IGF0ICgwLDApIHNpemUgNDF4MjIKICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9
IGF0ICg0OTUsNykgc2l6ZSA0MXgyMgogICAgICAgICAgICB0ZXh0IHJ1biBhdCAoNDk1LDcpIHdp
ZHRoIDQxOiAiQVBTIgogICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsMTUwKSBzaXplIDc4NHgz
NgogICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNpemUgNzM0eDM2CiAgICAgICAg
ICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA3MzQ6ICJMdWNpZGEgR3JhbmRlICYgSGVsdmV0aWNh
OiBUaGVzZSBmb250cyBoYXZlIG5vIGJ1aWx0IGluIHNtYWxsIGNhcHMuIFRoZXkgc2hvdWxkIGFs
d2F5cyBiZSByZW5kZXJlZCB1c2luZyB0aGUgNzAlIgogICAgICAgICAgdGV4dCBydW4gYXQgKDAs
MTgpIHdpZHRoIDM2NDogInJlZHVjdGlvbiBjb2RlIHBhdGgsIGFuZCBzaG91bGQgbm90IHNob3cg
YW55IG1pbmlzY3VsZXMuIgogICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCwyMDIpIHNpemUg
Nzg0eDM4CiAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSA1MTB4MzgKICAg
ICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDUxMDogIlRoaXMgaXMgYSBkZW1vbnN0cmF0
aW9uIG9mIFNtYWxsIENhcHMiCiAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDI0MCkgc2l6
ZSA3ODR4MzcKICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDUxN3gzNwog
ICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggNTE3OiAiVGhpcyBpcyBhIGRlbW9uc3Ry
YXRpb24gb2YgU21hbGwgQ2FwcyIKICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDI5Mykgc2l6
ZSA3ODR4NTQKICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDc1NXg1NAog
ICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggNzU1OiAiVGhlcmUgYXJlIG5vIGZvbnRz
IHN1cHBsaWVkIHdpdGggTWFjIE9TIFggd2hpY2ggaGF2ZSBzZXBlcmF0ZSBSZWd1bGFyIGFuZCBT
bWFsbCBDYXBzIHR5cGVmYWNlcywgYXMgaXMgY29tbW9uIHdpdGgiCiAgICAgICAgICB0ZXh0IHJ1
biBhdCAoMCwxOCkgd2lkdGggNzI2OiAicHJvZmVzc2lvbmFsIGZvbnRzIGluIG5vbi1BQVQtc3Vw
cG9ydGluZyBlbnZpcm9ubWVudHMuIEFzIHN1Y2ggbm8gdGVzdCBpcyBwcm92aWRlZCBmb3IgdGhp
cyBzY2VuYXJpbywgYWx0aG91Z2ggaXQgaXMiCiAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwzNikg
d2lkdGggMjc4OiAic3VwcG9ydGVkLCBzaW5jZSBpdCB3b3VsZCBmYWlsIGZvciBtb3N0IHVzZXJz
LiIK
</data>

          </attachment>
      

    </bug>

</bugzilla>