<?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>68598</bug_id>
          
          <creation_ts>2011-09-22 00:48:02 -0700</creation_ts>
          <short_desc>[chromium] HDC leak in Uniscribe Helper</short_desc>
          <delta_ts>2011-11-23 22:24:54 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Daniel Cheng">dcheng</reporter>
          <assigned_to name="Marc-André Decoste">mad</assigned_to>
          <cc>brettw</cc>
    
    <cc>cc-bugs</cc>
    
    <cc>dcheng</cc>
    
    <cc>dglazkov</cc>
    
    <cc>jamesr</cc>
    
    <cc>verdy_p</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>471409</commentid>
    <comment_count>0</comment_count>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2011-09-22 00:48:02 -0700</bug_when>
    <thetext>Interesting details are at crbug.com/96021, but in summary, if something interesting happens and we start spinning in the loop, we&apos;ll leak DCs. A lot of them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>471417</commentid>
    <comment_count>1</comment_count>
      <attachid>108291</attachid>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2011-09-22 01:13:38 -0700</bug_when>
    <thetext>Created attachment 108291
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>471420</commentid>
    <comment_count>2</comment_count>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2011-09-22 01:15:12 -0700</bug_when>
    <thetext>I&apos;m not actually able to run layout tests on my machine at the moment for some reason (new-run-webkit-tests gets stuck, and it also complains about a lot of unexpected expected result not found). I will consult with the oracles on #webkit tomorrow to see if I can fix it so I can see if my patch horribly breaks things.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>471549</commentid>
    <comment_count>3</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-09-22 07:36:36 -0700</bug_when>
    <thetext>Brett needs to look at this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>471664</commentid>
    <comment_count>4</comment_count>
      <attachid>108291</attachid>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2011-09-22 10:22:24 -0700</bug_when>
    <thetext>Comment on attachment 108291
Patch

mad has a version with a test as well, so I&apos;m deferring this bug to him.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>478506</commentid>
    <comment_count>5</comment_count>
      <attachid>109822</attachid>
    <who name="Marc-André Decoste">mad</who>
    <bug_when>2011-10-05 10:53:00 -0700</bug_when>
    <thetext>Created attachment 109822
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>478509</commentid>
    <comment_count>6</comment_count>
    <who name="Marc-André Decoste">mad</who>
    <bug_when>2011-10-05 10:57:20 -0700</bug_when>
    <thetext>Actually, I couldn&apos;t get the test to fail using WebKit only. I have HTML that reproduces the problem in Chrome, but not in test_shell...

So if we accept this patch without a new test, I&apos;ll add a browser test to Chrome once this is rolled into the Chrome DEPS... if you agree with the fix of course...

Thanks!

BYE
MAD</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>482482</commentid>
    <comment_count>7</comment_count>
    <who name="Brett Wilson (Google)">brettw</who>
    <bug_when>2011-10-12 10:03:49 -0700</bug_when>
    <thetext>The thing with passing a NULL DC the first time is an optimization. ScriptShape normally can have a nice cache of some script parameters and it doesn&apos;t need a DC every time. So you can avoid creating one unless it asks.

I guess I&apos;m OK leaking a DC for this. If a user encounters complex scripts, the&apos;re likely to encounter more, and the overhead of keeping this one around is probably less than the overhead of constantly recreating it.

But in that case, we shouldn&apos;t be passing a NULL DC to ScriptShape at all. If we have a DC, we should always be passing it, since that will save us another try. And I think we&apos;ll always need to create a DC the first time since the cache is empty.

So this says to me we should ensure the DC is created up front, and remove the &quot;retry with a DC&quot; logic completely (we still need some retry logic for the &quot;need a bigger buffer&quot; case).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>482520</commentid>
    <comment_count>8</comment_count>
    <who name="Marc-André Decoste">mad</who>
    <bug_when>2011-10-12 10:51:25 -0700</bug_when>
    <thetext>We still create the DC only when it&apos;s needed. So for the cases where we don&apos;t need it (most cases where special international fonts are not needed), it won&apos;t be created at all and thus won&apos;t leak.

As for the optimization, we still save the SelectObject, but I agree that it&apos;s not as expensive as the HDC creation...

So do you still want me to change the code to always use the HDC with a selected font in it, instead of trying with a NULL DC beforehand?

Thanks!

BYE
MAD</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>482811</commentid>
    <comment_count>9</comment_count>
    <who name="Brett Wilson (Google)">brettw</who>
    <bug_when>2011-10-12 15:50:02 -0700</bug_when>
    <thetext>Okay, but I guess if we already have created the DC, we should be passing it into the ScriptShape the first time we call it so we don&apos;t have to re-call it again. Probably just initializing tempDC to be the (possibly NULL) cached one should be sufficient.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>483152</commentid>
    <comment_count>10</comment_count>
    <who name="Marc-André Decoste">mad</who>
    <bug_when>2011-10-13 06:04:36 -0700</bug_when>
    <thetext>We would also need to conditionally select the font object when non-NULL, but I guess it&apos;s OK...

A new patch is coming...

Thanks again!

BYE
MAD</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>483209</commentid>
    <comment_count>11</comment_count>
      <attachid>110852</attachid>
    <who name="Marc-André Decoste">mad</who>
    <bug_when>2011-10-13 08:42:34 -0700</bug_when>
    <thetext>Created attachment 110852
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>483212</commentid>
    <comment_count>12</comment_count>
    <who name="Marc-André Decoste">mad</who>
    <bug_when>2011-10-13 08:46:52 -0700</bug_when>
    <thetext>How about this new version of the patch?

I don&apos;t use a tempDC anymore, and only loop back where we already potentially loop back for other reasons... Removing the annoying for loop of 2 turns...

BYE
MAD</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>486928</commentid>
    <comment_count>13</comment_count>
      <attachid>110852</attachid>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2011-10-19 12:42:45 -0700</bug_when>
    <thetext>Comment on attachment 110852
Patch

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

Some drive-by comments. I&apos;d personally love to see this bug fixed; I&apos;ve encountered this issue a fair number of times myself, and it bugs me a lot.

&gt; Source/WebCore/platform/graphics/chromium/UniscribeHelper.cpp:802
&gt; +      return;

Indent four spaces.

&gt; Source/WebCore/platform/graphics/chromium/UniscribeHelper.h:43
&gt; +class UniscribeTest_TooBig_Test; // A gunit test for UniscribeHelper.

Is the test supposed to be in this patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>494051</commentid>
    <comment_count>14</comment_count>
      <attachid>110852</attachid>
    <who name="Marc-André Decoste">mad</who>
    <bug_when>2011-11-01 11:46:58 -0700</bug_when>
    <thetext>Comment on attachment 110852
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/chromium/UniscribeHelper.cpp:802
&gt;&gt; +      return;
&gt; 
&gt; Indent four spaces.

Done... Thanks!

&gt;&gt; Source/WebCore/platform/graphics/chromium/UniscribeHelper.h:43
&gt;&gt; +class UniscribeTest_TooBig_Test; // A gunit test for UniscribeHelper.
&gt; 
&gt; Is the test supposed to be in this patch?

It was already there, I only changed the comment spacing, based on lint warnings...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>494184</commentid>
    <comment_count>15</comment_count>
      <attachid>113229</attachid>
    <who name="Marc-André Decoste">mad</who>
    <bug_when>2011-11-01 14:59:44 -0700</bug_when>
    <thetext>Created attachment 113229
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>494187</commentid>
    <comment_count>16</comment_count>
      <attachid>113229</attachid>
    <who name="Marc-André Decoste">mad</who>
    <bug_when>2011-11-01 15:00:41 -0700</bug_when>
    <thetext>Comment on attachment 113229
Patch

How about this now?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>494802</commentid>
    <comment_count>17</comment_count>
    <who name="Philippe Verdy">verdy_p</who>
    <bug_when>2011-11-02 12:22:16 -0700</bug_when>
    <thetext>You still perform a test to use ScriptItemizeOpenType() and ScriptShapeOpenType() instead of ScriptItemize() and ScriptShape(); but not to replace ScriptPlace() by ScriptPlaceOpenType().
Mising the legacy Script*() API with the extended Script*OpenType() API is clearly NOT supported by Microsoft and can cause havoc that may be explaining why the last loop over ScriptPlace() hangs by returning a failure infinitely (causing the initial detected issue on massive leakage of DC ressources allocated by GetDC(0) and immediately modified by SelectObject(hFont) making it unique and not reusable for the next GetDC(0) call...)
Note that the DC returned by GetDC(0) is shared between all processes on the same desktop, but if any process modifies its state, the share is converted to a new allocation with the modified state.  Such internal reallocation of the DC does not occur in Windows when the DC is not shared, owned by a private process creating its own window. The default shared DC is initialized from the window class defined in the process creting its first window event handler. The window class specifies the default font, default background color, default pen color which is used to preallocate a DC owned and shared by the process creating the window class. But GetDC(0) returns the DC of the desktop window, which is created by the session manager when it creates a console (initially it was created by the shell in older versions of Windows, but it&apos;s safer now in the session manager as it allows the shell to exit and be restarted, saving other infos like notification icons in the system status bar, and preserving OLE handles and some other resources not created by the shell itself but to communicate between other processes)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507640</commentid>
    <comment_count>18</comment_count>
      <attachid>113229</attachid>
    <who name="Brett Wilson (Google)">brettw</who>
    <bug_when>2011-11-22 09:34:12 -0800</bug_when>
    <thetext>Comment on attachment 113229
Patch

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

Looks Good To Me (I&apos;m not a WebKit reviewer)

&gt; Source/WebCore/platform/graphics/chromium/UniscribeHelper.h:400
&gt; +    // We use this DC if we can&apos;t get ScriptShape/ScriptPlace to succeed without

This comment isn&apos;t quite accurate. The DC is always created for ScriptShape in your patch, and the font isn&apos;t selected for ScriptShape. Probably a less specific comment would be fine here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507649</commentid>
    <comment_count>19</comment_count>
      <attachid>113229</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-11-22 09:44:25 -0800</bug_when>
    <thetext>Comment on attachment 113229
Patch

This patch is missing a ChangeLog.  The ChangeLog should say which test covers this change.  Why didn&apos;t the test fail without this change (maybe put that in the ChangeLog too)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507809</commentid>
    <comment_count>20</comment_count>
      <attachid>116272</attachid>
    <who name="Marc-André Decoste">mad</who>
    <bug_when>2011-11-22 14:06:18 -0800</bug_when>
    <thetext>Created attachment 116272
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507925</commentid>
    <comment_count>21</comment_count>
    <who name="Philippe Verdy">verdy_p</who>
    <bug_when>2011-11-22 20:52:10 -0800</bug_when>
    <thetext>The last patfh contains the comment:
&quot; For some reason the Script functions on Windows sometimes return
E_PENDING even with a non-NULL DC, so we must handle that case.&quot;

I can explain when this occurs: this does not seem to occur during the itemization or shaping steps, but only in the final placement step, because you have mixed the &quot;OpenType&quot; API in the first two steps with the non-OpenType API in the last step. This is where the API can fail as it has not been prepared consistantly with non-OpenType API for the itemization and shaping steps.

Please fix it, because Microsoft clearly says that it DOES NOT support such mixes of API, and it says it *bold* in MSDN documentation. Given that you need the OpenType API for the first step, you MUST use the OpenType API too for the last placement step.

I reformulate my request to use ScriptPlaceOpenType() instead of ScriptPlace() if you have already used ScriptItemizeOpenType() and ScriptShapeOpenType() instead of ScriptItemize() and ScriptShape(). Because this is clearly a bug. You should not mix these APIs even if it *may* have worked someday in some configuration or OS version or service pack, or with some fonts. Microsoft clearly has no intention of supporting the mix you still use today.

And this is confirmed on my experience with Chrome on Windows XP: the infinite loop leaking lost of HDC&apos;s *never* occurs because Windows XP does not have Uniscribe 1.1 but only Uniscribe 1.0 (without the extended &quot;OpenType&quot; API); but it always occurs on Windows Vista, Seven, Server 2003, and even in Windows Eight Beta (that all have Uniscribe 1.1 with OpenType support).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507932</commentid>
    <comment_count>22</comment_count>
    <who name="Philippe Verdy">verdy_p</who>
    <bug_when>2011-11-22 21:06:23 -0800</bug_when>
    <thetext>Also please tag this bug as *critical* (yes it is a critical bug, as it severely impacts the whole system, putting it to the knees, only when rendering normal multilingual pages, notably pages on Wikimedia that very frequently display texts in various scripts, just to link the other languages available.

The bug for example affects now the *HOME* page of Meta-Wiki (meta.wikimedia.org), which you cannot visit with Chrome or Safari on Windows Vista/Seven/Server 2003: you need to use XP (for example in a VM) or another browser (Firefox, IE, Opera).

The patch using your own DC instead of modifying the state of the desktop DC makes this bug less critical (because it no longer affects other applications and allows to kill or debug Chrome or Safari easily), but the rendering bug is still there and text does not render as it should (now with the patch, the complex scripts no longer render at all or displays square boxes, if there&apos;s any E_PENDING occuring using your own DC: this visibly occurs when glyphs can&apos;t be placed at the final step, see my comment above about the incorrect mix of OpenType/non-Opentype APIs).

But for now, none of your patches are applied in the core distribution, and the bug is still extremely critical for Chrome (this bug has been signaled since 2 years and a half, starting in Chrome 4, and forgotten for too long, it has caused lots of users abandonning Chrome on Windows and returning to IE or Firefox, after too many system crashes that they could not explain).

You should put this bug in the list of critical bugs to solve with much more people involved to fix it completely and correctly in a faster way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508017</commentid>
    <comment_count>23</comment_count>
      <attachid>116272</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-23 02:10:44 -0800</bug_when>
    <thetext>Comment on attachment 116272
Patch

Clearing flags on attachment: 116272

Committed r101059: &lt;http://trac.webkit.org/changeset/101059&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508018</commentid>
    <comment_count>24</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-23 02:10:50 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508025</commentid>
    <comment_count>25</comment_count>
    <who name="Philippe Verdy">verdy_p</who>
    <bug_when>2011-11-23 02:32:53 -0800</bug_when>
    <thetext>Please reopen for the incorrect use of ScriptPlace() instead of ScriptPlaceOpenType() which is incoherent and unsupported !
Yes the issue is still there and still causes a failure (even if you detect this failure) causing incorrect or missing rendering.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508033</commentid>
    <comment_count>26</comment_count>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2011-11-23 02:52:05 -0800</bug_when>
    <thetext>(In reply to comment #25)
&gt; Please reopen for the incorrect use of ScriptPlace() instead of ScriptPlaceOpenType() which is incoherent and unsupported !
&gt; Yes the issue is still there and still causes a failure (even if you detect this failure) causing incorrect or missing rendering.

Webkit doesn&apos;t reuse bugs. Since it sounds like you hit this issue fairly often, please file a bug with a repro case attached that triggers faulty glyph rendering--ideally, with some screenshots to compare expected vs actual. I would also link to the MSDN page that discourages mixing and matching OpenType and legacy Uniscribe calls--I&apos;m assuming you&apos;re referring to http://msdn.microsoft.com/en-us/library/windows/desktop/dd317792(v=vs.85).aspx</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508039</commentid>
    <comment_count>27</comment_count>
    <who name="Philippe Verdy">verdy_p</who>
    <bug_when>2011-11-23 03:12:47 -0800</bug_when>
    <thetext>I don&apos;r reuse bugs. In fact the critical bug occured exactly in the last step, but not on Windows XP (Uniscribe 1.0 only). I.e. with the call of ScriptPlace that caused the infinite loop as it always returned E_PENDING, even if you had selected a font.

The E_PENDING bug still occurs today, and has NOT been solved for the long term.
And yes, the MSDN article was what I was referencing (I had already cited it several times). The code cannot continue to live this way as it is clearly unsupported by Microsoft.

If you only use ScriptPlace instead of ScriptPlaceOpenType, it won&apos;t be able to correctly place *all* the glyphs that have been substituted by ScriptShapeOpenType, because ScriptShapeOpenType will have modified the glyphs cache using OpenType features that are completely ignored by ScriptPlace, but only considered coherently by ScriptPlaceOpenType.

Anyway you&apos;ll need ScriptPlaceOpenType for any coming necessary support of OpenType GPOS tables. For now the code can only support GSUB tables, but some OpenType GPOS are only meaningful in association with the GSUB table for the same feature; using only one will create incoherent glyphs. The case will very likely occur in South Asian scripts (e.g. Repha forms), but as well with advanced Latin typography, and for correct display of cursive scripts (which cannot work without correct positioning, e.g. in Urdu).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508040</commentid>
    <comment_count>28</comment_count>
    <who name="Philippe Verdy">verdy_p</who>
    <bug_when>2011-11-23 03:18:47 -0800</bug_when>
    <thetext>Note that Microsoft still says &quot;should&quot; and &quot;should not&quot;; in the Microsoft terminology, this has always meant that there will be soon incompatibilities and absence of support. This is already the case with the equivalent .Net APIs that ONLY use the OpenType API, and completely deprecate the pre-1.6 version implemented separately in Uniscribe for the Win32 API. And with Windows 8, this is already causing problems: the legacy API has severe limitations that cannot render all the scripts supported now. The legacy API for example cannot render Urdu correctly wit hthe expected Nasthalik style, cannot render Tibetan correctly, cannot render correctly Asian texts in the vertical style, cannot render the Mongolian script...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508606</commentid>
    <comment_count>29</comment_count>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2011-11-23 21:10:00 -0800</bug_when>
    <thetext>Like I said, please file a new bug in WebKit, as the general policy is that each WebKit commit is tied to a unique WebKit bug for that commit. In addition, please attach a test case that demonstrates flawed glyph rendering with screenshots comparing what it should look like to the broken rendering in Windows Chrome.

While I agree that we should avoid mixing OpenType and non-OpenType Uniscribe calls, I also can&apos;t see any rendering artifacts that result from this--the Urdu wikipedia appears to render without problems on Windows 7.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508629</commentid>
    <comment_count>30</comment_count>
    <who name="Philippe Verdy">verdy_p</who>
    <bug_when>2011-11-23 22:24:54 -0800</bug_when>
    <thetext>At least one documented OpenType required positioning feature is not working properly if not using the OpenType API for glyph placement:

Tag: &apos;blwm&apos;

Friendly name: Below-base Mark Positioning
Registered by: Microsoft
Function: Positions marks below base glyphs.
Example: In complex scripts like Gujarati (Indic), the vowel sign U needs to be positioned below base consonant/conjuncts that form the base glyph. This position can vary depending on the base glyph, as well as the presence/absence of other marks below the base glyph.
Recommended implementation: The blwm table provides positioning information (x,y) to enable mark positioning (GPOS lookup type 4, 5).
Application interface: The application must define the GIDs of the base glyphs below which marks need to be positioned, and the marks themselves. If these are located in the coverage table, the application passes the sequence to the blwm table and gets the positioning values (x,y) or positioning adjustments for the mark in return.
UI suggestion: This feature should be on by default.
Script/language sensitivity: Required in Indic scripts.
Feature interaction: Can be used to position default marks; or those that have been selected from a number of alternates based on contextual requirement using a feature like blws.

There are more complex case than this Gujarati vowel sign U, notably in Tibetan, and in the Eastern style of Arabic (used for Persian, Pashto, or Urdu): when cursive glyphs have been substituted to adopt the angular joins, these joins will only align correctly if the substituted glyphs (with the enabled OpenType feature) are later repositioned vertically (within the same enabled OpenType feature) using a GPOS lookup, which is still not enabled by default and will not be enabled by the non-OpenType API. There are other more complex cases involving special ligatures that adjust metrics (notably for the advance width which may need to be adjusted if ever the glyph substitution has occured, and also requiring other surrounding glyphs to be contextually repositioned (to avoid superpositions, or incorrect/missing joining). Arabic Kashidas will also not work correctly when using text justification, breaking mandatory joins.

In East-Asian scripts (Han/Kanji/Hanja, Yi, Hangul, Bopomofo, Hiragana, Katakana, ...), the traditional vertical style will not render correctly (see the OpenType features whose name start be &apos;v&apos;), notably for punctuations signs that are still rotated 90° (despite most characters are not rotated, but possibly repositioned such as the ideographic full stop or comma), however I wonder if Webkit still has support for the alternate vertical layout (or if it even supports the traditional Mongolian script, which is vertical only). Vertical layout style is only enabled if you have full support of the OpenType GPOS feature. The Win32 API may consider that, because you have used the OpenType API for the substitution, it will substitute glyphs and then assume that repositioning will occur in ScriptPlaceOpenType(), but ScriptPlace() alone assumes that some optional substituions have *not* occured, and position glyphs accoring to their default intended placement: ScriptPlace() only assumes that the OpenType features that are *on by default* have been used by ScriptShape(), but it does not use any language-specific rules (for example the Czech-specific variants of diacritics like the acute accent, which have distinct metrics and require repositioning other surrounding diacritics: ScriptPlace() will assume that these diacritics have the default metrics, where ScriptPlaceOpenType() will detect that those metrics need to be adjusted).

ScriptPlaceOpenType() also uses different metrics for computing advance widths. It also adjust the positions more precisely for hinting and for other enhanced readability on screen. When you&apos;lll finally draw the glyphs, with GDI+, you&apos;ll see the differences, but ScriptPlace() alone does not precomputes the adjustments needed, so characters tend to have unbalanced spacing, and the result layout is poorer

When printing, I can already see the effects of incorrect metrics in Chrome, where text layout supposed to be correct on screen is completely garbled when printing, with right margins exceeded or irregular when using text justification, or with lines colliding each other; but may be this is a bug in Chrome, not in WebKit itself, unless it incorrectly uses the printing device context and mixes it with the display context and partly honors the &quot;@media&quot; CSS rules in an inconsistant way. But I&apos;ll file a separate bug later for printing (or for videoprojectors which use slightly different measurement units than for screen display, and that must avoid subpixel rendering like ClearType to avoid very visible color artefacts, or for narrow or low-resolution displays) if I can isolate the cases; for now, it is impossible to isolate these numerous bugs correctly due to the other fundamental bugs.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>108291</attachid>
            <date>2011-09-22 01:13:38 -0700</date>
            <delta_ts>2011-09-22 10:22:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68598-20110922011337.patch</filename>
            <type>text/plain</type>
            <size>3330</size>
            <attacher name="Daniel Cheng">dcheng</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTU2NjkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2YzI1M2MzODYwYWM2MGIw
MzY4NmMyNDg4ODk4NDI5YWNiNDgzOTJkLi5hZmJlMjczNjcwODQ0N2EyZGQzZDQ5MTI0YjliN2I4
NjE3NDdmZmRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTEtMDktMjIgIERhbmll
bCBDaGVuZyAgPGRjaGVuZ0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBIREMg
bGVhayBpbiBVbmlzY3JpYmUgSGVscGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD02ODU5OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEl0J3Mgbm90IGNsZWFyIGhvdyB0aGlzIGNhbiBoYXBwZW4uIE1TRE4g
aW5kaWNhdGVzIHRoYXQgRV9QRU5ESU5HIGlzIG9ubHkgcmV0dXJuZWQgd2hlbiBhCisgICAgICAg
IFVuaXNjcmliZSBmdW5jdGlvbiBuZWVkcyBhIG5vbi1udWxsIERDIHRvIHNoYXBlL3BsYWNlIGEg
c3RyaW5nLCBzbyB3ZSBzaG91bGQgbmV2ZXIgZ28KKyAgICAgICAgdGhyb3VnaCB0aGUgbG9vcCBt
b3JlIHRoYW4gb25jZSB3aXRoIGhyID09IEVfUEVORElORy4gSXQgc2VlbXMgdG8gYmUgaGFwcGVu
aW5nIHRob3VnaCwgc28KKyAgICAgICAgaWYgd2UgZ2V0IGhyID09IEVfUEVORElORyBhbmQgdGhl
IERDIGlzIGFscmVhZHkgYWxsb2NhdGVkLCBqdXN0IGV4aXQgdGhlIGxvb3AuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9VbmlzY3JpYmVIZWxwZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VW5pc2NyaWJlSGVscGVyOjpzaGFwZSk6CisgICAgICAgIChXZWJDb3JlOjpV
bmlzY3JpYmVIZWxwZXI6OmZpbGxTaGFwZXMpOgorCiAyMDExLTA5LTIxICBKYW1lcyBSb2JpbnNv
biAgPGphbWVzckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBTaGFyZWRHcmFw
aGljc0NvbnRleHQzRCdzIGNvbnRleHQgc2hvdWxkIG5vdCBiZSBkZXN0cm95ZWQgZHVyaW5nIGF0
ZXhpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vVW5pc2NyaWJlSGVscGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL1VuaXNjcmliZUhlbHBlci5jcHAKaW5kZXggNzQyYjhiN2UzZGE5ODM3NzRlZTZk
MzlhZDUxMGM5NTFmODQ0ZmRiMy4uYjhmMGVhM2VjZDliOTcwNjRjOWMyOTFmOTdhMzQ3ZGU2NDVi
NTU4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vVW5pc2NyaWJlSGVscGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9VbmlzY3JpYmVIZWxwZXIuY3BwCkBAIC01MDIsNyArNTAyLDcgQEAgYm9v
bCBVbmlzY3JpYmVIZWxwZXI6OnNoYXBlKGNvbnN0IFVDaGFyKiBpbnB1dCwKICAgICBTQ1JJUFRf
Rk9OVFBST1BFUlRJRVMqIGZvbnRQcm9wZXJ0aWVzID0gbV9mb250UHJvcGVydGllczsKICAgICBp
bnQgYXNjZW50ID0gbV9hc2NlbnQ7CiAgICAgV09SRCBzcGFjZUdseXBoID0gbV9zcGFjZUdseXBo
OwotICAgIEhEQyB0ZW1wREMgPSAwOworICAgIEhEQyB0ZW1wREMgPSAwOyAvLyBMYXppbHkgaW5p
dGlhbGl6ZWQKICAgICBIR0RJT0JKIG9sZEZvbnQgPSAwOwogICAgIEhSRVNVTFQgaHI7CiAgICAg
Ly8gV2hlbiB1c2VkIHRvIGZpbGwgdXAgZ2x5cGggcGFnZXMgZm9yIHNpbXBsZSBzY3JpcHRzIGlu
IG5vbi1CTVAsCkBAIC01NDksMTUgKzU0OSwxNiBAQCBib29sIFVuaXNjcmliZUhlbHBlcjo6c2hh
cGUoY29uc3QgVUNoYXIqIGlucHV0LAogICAgICAgICAgICAgICAgICAgICAgICAgIG51bUdseXBo
cywgJnJ1bi5hLAogICAgICAgICAgICAgICAgICAgICAgICAgICZzaGFwaW5nLm1fZ2x5cGhzWzBd
LCAmc2hhcGluZy5tX2xvZ3NbMF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgJnNoYXBpbmcu
bV92aXN1YWxBdHRyaWJ1dGVzWzBdLCAmZ2VuZXJhdGVkR2x5cGhzKTsKLSAgICAgICAgaWYgKGhy
ID09IEVfUEVORElORykgewotICAgICAgICAgICAgLy8gQWxsb2NhdGUgdGhlIERDLgorICAgICAg
ICBpZiAoaHIgPT0gRV9QRU5ESU5HICYmICF0ZW1wREMpIHsKICAgICAgICAgICAgIHRlbXBEQyA9
IEdldERDKDApOwogICAgICAgICAgICAgb2xkRm9udCA9IFNlbGVjdE9iamVjdCh0ZW1wREMsIGhm
b250KTsKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9IGVsc2UgaWYgKGhyID09IEVf
T1VUT0ZNRU1PUlkpIHsKKyAgICAgICAgfQorICAgICAgICBpZiAoaHIgPT0gRV9PVVRPRk1FTU9S
WSkgewogICAgICAgICAgICAgbnVtR2x5cGhzICo9IDI7CiAgICAgICAgICAgICBjb250aW51ZTsK
LSAgICAgICAgfSBlbHNlIGlmIChTVUNDRUVERUQoaHIpICYmIChsYXN0RmFsbGJhY2tUcmllZCB8
fCAhY29udGFpbnNNaXNzaW5nR2x5cGhzKHNoYXBpbmcsIHJ1biwgZm9udFByb3BlcnRpZXMpKSkK
KyAgICAgICAgfQorICAgICAgICBpZiAoU1VDQ0VFREVEKGhyKSAmJiAobGFzdEZhbGxiYWNrVHJp
ZWQgfHwgIWNvbnRhaW5zTWlzc2luZ0dseXBocyhzaGFwaW5nLCBydW4sIGZvbnRQcm9wZXJ0aWVz
KSkpCiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICAvLyBUaGUgY3VycmVudCBmb250IGNh
bid0IHJlbmRlciB0aGlzIHJ1bi4gY2xlYXIgREMgYW5kIHRyeQpAQCAtNzE2LDggKzcxNywxMSBA
QCB2b2lkIFVuaXNjcmliZUhlbHBlcjo6ZmlsbFNoYXBlcygpCiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAKICAgICAgICAgICAgIC8vIEFsbG9jYXRlIHRoZSBEQyBhbmQgcnVuIHRoZSBsb29wIGFn
YWluLgotICAgICAgICAgICAgdGVtcERDID0gR2V0REMoMCk7Ci0gICAgICAgICAgICBvbGRGb250
ID0gU2VsZWN0T2JqZWN0KHRlbXBEQywgc2hhcGluZy5tX2hmb250KTsKKyAgICAgICAgICAgIGlm
ICghdGVtcERDKSB7CisgICAgICAgICAgICAgICAgdGVtcERDID0gR2V0REMoMCk7CisgICAgICAg
ICAgICAgICAgb2xkRm9udCA9IFNlbGVjdE9iamVjdCh0ZW1wREMsIHNoYXBpbmcubV9oZm9udCk7
CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBicmVhazsgLy8gSnVzdCBleGl0
LCBzaW5jZSBsb29waW5nIGFnYWluIHdvbid0IGhlbHAgdXMgbm93LgogICAgICAgICB9CiAKICAg
ICAgICAgaWYgKEZBSUxFRChocikpIHsK
</data>
<flag name="review"
          id="105227"
          type_id="1"
          status="-"
          setter="dcheng"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>109822</attachid>
            <date>2011-10-05 10:53:00 -0700</date>
            <delta_ts>2011-10-13 08:42:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68598-20111005135258.patch</filename>
            <type>text/plain</type>
            <size>8432</size>
            <attacher name="Marc-André Decoste">mad</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk2NzIyKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTEtMTAtMDUgIE1hcmMtQW5k
cmUgRGVjb3N0ZSAgPG1hZEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBIREMg
bGVhayBpbiBVbmlzY3JpYmUgSGVscGVyLCBhbmQgYmFkIHVzYWdlIG9mIHNjcmVlbiBEQy4gTm93
IHVzZXMgYSBjYWNoZWQgY29tcGF0aWJsZSBjb3B5IGFuZCBvbmx5IHJldHJ5IG9uY2UuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02ODU5OAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4g
KE9PUFMhKQorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVW5pc2NyaWJl
SGVscGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlVuaXNjcmliZUhlbHBlcjo6ZHJhdyk6Cisg
ICAgICAgIChXZWJDb3JlOjpVbmlzY3JpYmVIZWxwZXI6OnNoYXBlKToKKyAgICAgICAgKFdlYkNv
cmU6OlVuaXNjcmliZUhlbHBlcjo6RW5zdXJlQ2FjaGVkRENDcmVhdGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OlVuaXNjcmliZUhlbHBlcjo6ZmlsbFNoYXBlcyk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vVW5pc2NyaWJlSGVscGVyLmg6CisKIDIwMTEtMTAtMDUgIFNhY2hp
biBQdXJhbmlrICA8amNxdDQzQG1vdG9yb2xhLmNvbT4KIAogICAgICAgICBTcGVjIGNoYW5nZSAt
IG9wdGlvbi5sYWJlbCBzaG91bGQgYmUgcmVmbGVjdGVkIGxpa2Ugb3B0aW9uLnZhbHVlCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9VbmlzY3JpYmVIZWxw
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1VuaXNjcmliZUhlbHBlci5jcHAJKHJldmlzaW9uIDk2Njg3KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVW5pc2NyaWJlSGVscGVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTA2LDYgKzEwNiwxMCBAQCBzdGF0aWMgdm9pZCBzZXRMb2dGb250QW5k
U3R5bGUoSEZPTlQgaGZvCiAgICAgICAgICpzdHlsZSA9IGdldFN0eWxlRnJvbUxvZ2ZvbnQobG9n
Zm9udCk7CiB9CiAKKy8vIFRoaXMgbWVtb3J5IERDIHdpbGwgTk9UIGJlIHJlbGVhc2VkIGJ1dCBp
dCdzIE9LCisvLyBzaW5jZSB3ZSB3YW50IHRvIGtlZXAgaXQgZm9yIHRoZSB3aG9sZSBsaWZlIHNw
YW4gb2YgdGhlIHByb2Nlc3MuCitIREMgVW5pc2NyaWJlSGVscGVyOjptX2NhY2hlZERDID0gMDsK
KwogVW5pc2NyaWJlSGVscGVyOjpVbmlzY3JpYmVIZWxwZXIoY29uc3QgVUNoYXIqIGlucHV0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW5wdXRMZW5ndGgsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNSdGwsCkBAIC0zMDYsNyArMzEwLDYgQEAg
aW50IFVuaXNjcmliZUhlbHBlcjo6eFRvQ2hhcmFjdGVyKGludCB4KQogdm9pZCBVbmlzY3JpYmVI
ZWxwZXI6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBIREMgZGMsIGludCB4LCBpbnQgeSwgaW50IGZyb20sIGludCB0bykK
IHsKLSAgICBIR0RJT0JKIG9sZEZvbnQgPSAwOwogICAgIGludCBjdXJYID0geDsKICAgICBib29s
IGZpcnN0UnVuID0gdHJ1ZTsKIApAQCAtNDIyLDkgKzQyNSw2IEBAIHZvaWQgVW5pc2NyaWJlSGVs
cGVyOjpkcmF3KEdyYXBoaWNzQ29udGUKIAogICAgICAgICBjdXJYICs9IGFkdmFuY2VGb3JJdGVt
KGl0ZW1JbmRleCk7CiAgICAgfQotCi0gICAgaWYgKG9sZEZvbnQpCi0gICAgICAgIFNlbGVjdE9i
amVjdChkYywgb2xkRm9udCk7CiB9CiAKIFdPUkQgVW5pc2NyaWJlSGVscGVyOjpmaXJzdEdseXBo
Rm9yQ2hhcmFjdGVyKGludCBjaGFyT2Zmc2V0KSBjb25zdApAQCAtNTcyLDggKzU3Miw2IEBAIGJv
b2wgVW5pc2NyaWJlSGVscGVyOjpzaGFwZShjb25zdCBVQ2hhcioKICAgICBWZWN0b3I8U0NSSVBU
X0dMWVBIUFJPUCwgY1VuaXNjcmliZUhlbHBlclN0YWNrQ2hhcnM+IGdseXBoUHJvcHM7CiAgICAg
aW50IGFzY2VudCA9IG1fYXNjZW50OwogICAgIFdPUkQgc3BhY2VHbHlwaCA9IG1fc3BhY2VHbHlw
aDsKLSAgICBIREMgdGVtcERDID0gMDsKLSAgICBIR0RJT0JKIG9sZEZvbnQgPSAwOwogICAgIEhS
RVNVTFQgaHI7CiAgICAgLy8gV2hlbiB1c2VkIHRvIGZpbGwgdXAgZ2x5cGggcGFnZXMgZm9yIHNp
bXBsZSBzY3JpcHRzIGluIG5vbi1CTVAsCiAgICAgLy8gd2UgZG9uJ3Qgd2FudCBhbnkgZm9udCBm
YWxsYmFjayBpbiB0aGlzIGNsYXNzLiBUaGUgc2ltcGxlIHNjcmlwdApAQCAtNTg4LDYgKzU4Niw3
IEBAIGJvb2wgVW5pc2NyaWJlSGVscGVyOjpzaGFwZShjb25zdCBVQ2hhcioKICAgICByZXNldEZv
bnRJbmRleCgpOwogCiAgICAgLy8gQ29tcHV0ZSBzaGFwZXMuCisgICAgSERDIHRlbXBEQyA9IDA7
CiAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAgc2hhcGluZy5tX2xvZ3MucmVzaXplKGl0ZW1M
ZW5ndGgpOwogICAgICAgICBzaGFwaW5nLm1fZ2x5cGhzLnJlc2l6ZShudW1HbHlwaHMpOwpAQCAt
NjMxLDI0ICs2MzAsMjMgQEAgYm9vbCBVbmlzY3JpYmVIZWxwZXI6OnNoYXBlKGNvbnN0IFVDaGFy
KgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc2hhcGluZy5tX2dseXBoc1swXSwgJnNo
YXBpbmcubV9sb2dzWzBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc2hhcGluZy5t
X3Zpc3VhbEF0dHJpYnV0ZXNbMF0sICZnZW5lcmF0ZWRHbHlwaHMpOwogICAgICAgICB9Ci0gICAg
ICAgIGlmIChociA9PSBFX1BFTkRJTkcpIHsKLSAgICAgICAgICAgIC8vIEFsbG9jYXRlIHRoZSBE
Qy4KLSAgICAgICAgICAgIHRlbXBEQyA9IEdldERDKDApOwotICAgICAgICAgICAgb2xkRm9udCA9
IFNlbGVjdE9iamVjdCh0ZW1wREMsIGhmb250KTsKKyAgICAgICAgLy8gV2UgcmVjZWl2ZSBFX1BF
TkRJTkcgd2hlbiB3ZSBuZWVkIHRvIHRyeSBhZ2FpbiB3aXRoIGEgRHJhd2luZyBDb250ZXh0LAor
ICAgICAgICAvLyBidXQgd2UgZG9uJ3Qgd2FudCB0byByZXRyeSBhZ2FpbiBpZiB3ZSBhbHJlYWR5
IHJldHJpZWQgd2l0aCBub24temVybyBEQy4KKyAgICAgICAgaWYgKGhyID09IEVfUEVORElORyAm
JiAhdGVtcERDKSB7CisgICAgICAgICAgICBFbnN1cmVDYWNoZWREQ0NyZWF0ZWQoKTsKKyAgICAg
ICAgICAgIHRlbXBEQyA9IG1fY2FjaGVkREM7CisgICAgICAgICAgICA6OlNlbGVjdE9iamVjdCht
X2NhY2hlZERDLCBoZm9udCk7CiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfSBlbHNl
IGlmIChociA9PSBFX09VVE9GTUVNT1JZKSB7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGhyID09
IEVfT1VUT0ZNRU1PUlkpIHsKICAgICAgICAgICAgIG51bUdseXBocyAqPSAyOwogICAgICAgICAg
ICAgY29udGludWU7Ci0gICAgICAgIH0gZWxzZSBpZiAoU1VDQ0VFREVEKGhyKSAmJiAobGFzdEZh
bGxiYWNrVHJpZWQgfHwgIWNvbnRhaW5zTWlzc2luZ0dseXBocyhzaGFwaW5nLCBydW4sIGZvbnRQ
cm9wZXJ0aWVzKSkpCisgICAgICAgIH0KKyAgICAgICAgaWYgKFNVQ0NFRURFRChocikgJiYgKGxh
c3RGYWxsYmFja1RyaWVkIHx8ICFjb250YWluc01pc3NpbmdHbHlwaHMoc2hhcGluZywgcnVuLCBm
b250UHJvcGVydGllcykpKQogICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgLy8gVGhlIGN1
cnJlbnQgZm9udCBjYW4ndCByZW5kZXIgdGhpcyBydW4uIGNsZWFyIERDIGFuZCB0cnkKLSAgICAg
ICAgLy8gbmV4dCBmb250LgotICAgICAgICBpZiAodGVtcERDKSB7Ci0gICAgICAgICAgICBTZWxl
Y3RPYmplY3QodGVtcERDLCBvbGRGb250KTsKLSAgICAgICAgICAgIFJlbGVhc2VEQygwLCB0ZW1w
REMpOwotICAgICAgICAgICAgdGVtcERDID0gMDsKLSAgICAgICAgfQorICAgICAgICAvLyBUaGUg
Y3VycmVudCBmb250IGNhbid0IHJlbmRlciB0aGlzIHJ1biwgY2xlYXIgREMgYW5kIHRyeSBuZXh0
IGZvbnQuCisgICAgICAgIHRlbXBEQyA9IDA7CiAKICAgICAgICAgaWYgKCFtX2Rpc2FibGVGb250
RmFsbGJhY2sgJiYKICAgICAgICAgICAgIG5leHRXaW5Gb250RGF0YSgmaGZvbnQsICZzY3JpcHRD
YWNoZSwgJmZvbnRQcm9wZXJ0aWVzLCAmYXNjZW50KSkgewpAQCAtNzM1LDEwICs3MzMsNyBAQCBi
b29sIFVuaXNjcmliZUhlbHBlcjo6c2hhcGUoY29uc3QgVUNoYXIqCiAgICAgfQogICAgIHNoYXBp
bmcubV9hZHZhbmNlLnJlc2l6ZShnZW5lcmF0ZWRHbHlwaHMpOwogICAgIHNoYXBpbmcubV9vZmZz
ZXRzLnJlc2l6ZShnZW5lcmF0ZWRHbHlwaHMpOwotICAgIGlmICh0ZW1wREMpIHsKLSAgICAgICAg
U2VsZWN0T2JqZWN0KHRlbXBEQywgb2xkRm9udCk7Ci0gICAgICAgIFJlbGVhc2VEQygwLCB0ZW1w
REMpOwotICAgIH0KKwogICAgIC8vIE9uIGZhaWx1cmUsIG91ciBsb2dzIGRvbid0IG1lYW4gYW55
dGhpbmcsIHNvIHplcm8gdGhvc2Ugb3V0LgogICAgIGlmICghcmVzdWx0KQogICAgICAgICBzaGFw
aW5nLm1fbG9ncy5jbGVhcigpOwpAQCAtNzQ2LDYgKzc0MSwyMCBAQCBib29sIFVuaXNjcmliZUhl
bHBlcjo6c2hhcGUoY29uc3QgVUNoYXIqCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAordm9pZCBV
bmlzY3JpYmVIZWxwZXI6OkVuc3VyZUNhY2hlZERDQ3JlYXRlZCgpCit7CisgICAgaWYgKG1fY2Fj
aGVkREMpCisgICAgICByZXR1cm47CisgICAgLy8gQWxsb2NhdGUgYSBtZW1vcnkgREMgdGhhdCBp
cyBjb21wYXRpYmxlIHdpdGggdGhlIERlc2t0b3AgREMgc2luY2Ugd2UgZG9uJ3QgaGF2ZSBhbnkg
d2luZG93LAorICAgIC8vIGFuZCB3ZSBkb24ndCB3YW50IHRvIHVzZSB0aGUgRGVza3RvcCBEQyBk
aXJlY3RseSBzaW5jZSBpdCBjYW4gaGF2ZSBuYXN0eSBzaWRlIGVmZmVjdHMKKyAgICAvLyBhcyBp
ZGVudGlmaWVkIGluIENocm9tZSBJc3N1ZSBodHRwOi8vY3JidWcuY29tLzU5MzE1LgorICAgIEhE
QyBzY3JlZW5EQyA9IDo6R2V0REMoMCk7CisgICAgbV9jYWNoZWREQyA9IDo6Q3JlYXRlQ29tcGF0
aWJsZURDKHNjcmVlbkRDKTsKKyAgICBBU1NFUlQobV9jYWNoZWREQyk7CisKKyAgICBpbnQgcmVz
dWx0ID0gOjpSZWxlYXNlREMoMCwgc2NyZWVuREMpOworICAgIEFTU0VSVChyZXN1bHQgPT0gMSk7
Cit9CiB2b2lkIFVuaXNjcmliZUhlbHBlcjo6ZmlsbFNoYXBlcygpCiB7CiAgICAgbV9zaGFwZXMu
cmVzaXplKG1fcnVucy5zaXplKCkpOwpAQCAtNzg2LDEzICs3OTUsMTIgQEAgdm9pZCBVbmlzY3Jp
YmVIZWxwZXI6OmZpbGxTaGFwZXMoKQogICAgICAgICAvLyBDb21wdXRlIHBsYWNlbWVudHMuIE5v
dGUgdGhhdCBvZmZzZXRzIGlzIGRvY3VtZW50ZWQgaW5jb3JyZWN0bHkKICAgICAgICAgLy8gYW5k
IGlzIGFjdHVhbGx5IGFuIGFycmF5LgogCi0gICAgICAgIC8vIERDIHRoYXQgd2UgbGF6aWx5IGNy
ZWF0ZSBpZiBVbmlzY3JpYmUgY29tbWFuZHMgdXMgdG8uCi0gICAgICAgIC8vICh0aGlzIGRvZXMg
bm90IGhhcHBlbiBvZnRlbiBiZWNhdXNlIHNjcmlwdENhY2hlIGlzIGFscmVhZHkKLSAgICAgICAg
Ly8gIHVwZGF0ZWQgd2hlbiBjYWxsaW5nIFNjcmlwdFNoYXBlKS4KLSAgICAgICAgSERDIHRlbXBE
QyA9IDA7CiAgICAgICAgIEhHRElPQkogb2xkRm9udCA9IDA7CisgICAgICAgIEhEQyB0ZW1wREMg
PSAwOwogICAgICAgICBIUkVTVUxUIGhyOwotICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAg
ICAvLyBXZSBtYXkgbmVlZCB0byByZXRyeSBvbmNlIGlmIHdlIHJlY2VpdmUgRV9QRU5ESU5HLCBi
dXQgaWYgd2UgYWxyZWFkeSByZXRyaWVkCisgICAgICAgIC8vIHdpdGggYSB2YWxpZCBEcmF3aW5n
IENvbnRleHQsIHRoZXJlIGlzIG5vIG5lZWQgdG8ga2VlcCByZXRyeWluZy4uLgorICAgICAgICBm
b3IgKGludCB0cmllcyA9IDA7IHRyaWVzIDwgMjsgdHJpZXMrKykgewogICAgICAgICAgICAgc2hh
cGluZy5tX3ByZVBhZGRpbmcgPSAwOwogICAgICAgICAgICAgaHIgPSBTY3JpcHRQbGFjZSh0ZW1w
REMsIHNoYXBpbmcubV9zY3JpcHRDYWNoZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
JnNoYXBpbmcubV9nbHlwaHNbMF0sCkBAIC04MDMsOSArODExLDkgQEAgdm9pZCBVbmlzY3JpYmVI
ZWxwZXI6OmZpbGxTaGFwZXMoKQogICAgICAgICAgICAgaWYgKGhyICE9IEVfUEVORElORykKICAg
ICAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICAgICAgLy8gQWxsb2NhdGUgdGhlIERDIGFu
ZCBydW4gdGhlIGxvb3AgYWdhaW4uCi0gICAgICAgICAgICB0ZW1wREMgPSBHZXREQygwKTsKLSAg
ICAgICAgICAgIG9sZEZvbnQgPSBTZWxlY3RPYmplY3QodGVtcERDLCBzaGFwaW5nLm1faGZvbnQp
OworICAgICAgICAgICAgRW5zdXJlQ2FjaGVkRENDcmVhdGVkKCk7CisgICAgICAgICAgICB0ZW1w
REMgPSBtX2NhY2hlZERDOworICAgICAgICAgICAgOjpTZWxlY3RPYmplY3QobV9jYWNoZWREQywg
c2hhcGluZy5tX2hmb250KTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChGQUlMRUQoaHIpKSB7
CkBAIC04MTYsMTEgKzgyNCw2IEBAIHZvaWQgVW5pc2NyaWJlSGVscGVyOjpmaWxsU2hhcGVzKCkK
ICAgICAgICAgICAgIG1fc2hhcGVzLmNsZWFyKCk7CiAgICAgICAgICAgICBtX3NjcmVlbk9yZGVy
LmNsZWFyKCk7CiAgICAgICAgIH0KLQotICAgICAgICBpZiAodGVtcERDKSB7Ci0gICAgICAgICAg
ICBTZWxlY3RPYmplY3QodGVtcERDLCBvbGRGb250KTsKLSAgICAgICAgICAgIFJlbGVhc2VEQygw
LCB0ZW1wREMpOwotICAgICAgICB9CiAgICAgfQogCiAgICAgYWRqdXN0U3BhY2VBZHZhbmNlcygp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVW5pc2Ny
aWJlSGVscGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vVW5pc2NyaWJlSGVscGVyLmgJKHJldmlzaW9uIDk2Njg3KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVW5pc2NyaWJlSGVscGVyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDcgQEAKICNpbmNsdWRlIDx1bmljb2RlL3VjaGFyLmg+
CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCi1jbGFzcyBVbmlzY3JpYmVUZXN0X1Rvb0JpZ19U
ZXN0OyAgLy8gQSBndW5pdCB0ZXN0IGZvciBVbmlzY3JpYmVIZWxwZXIuCitjbGFzcyBVbmlzY3Jp
YmVUZXN0X1Rvb0JpZ19UZXN0OyAvLyBBIGd1bml0IHRlc3QgZm9yIFVuaXNjcmliZUhlbHBlci4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zODAsNiArMzgwLDkgQEAgcHJpdmF0ZToKICAg
ICAvLyBOZXh0V2luRm9udERhdGEgc2NhbnMgZmFsbGJhY2sgZm9udHMgZnJvbSB0aGUgYmVnaW5u
aW5nLgogICAgIHZpcnR1YWwgdm9pZCByZXNldEZvbnRJbmRleCgpIHt9CiAKKyAgICAvLyBJZiBt
X2NhY2hlZERDIGlzIDAsIGNyZWF0ZXMgb25lIHRoYXQgaXMgY29tcGF0aWJsZSB3aXRoIHRoZSBz
Y3JlZW4gREMuCisgICAgdm9pZCBFbnN1cmVDYWNoZWREQ0NyZWF0ZWQoKTsKKwogICAgIC8vIFRo
ZSBpbnB1dCBkYXRhIGZvciB0aGlzIHJ1biBvZiBVbmlzY3JpYmUuIFNlZSB0aGUgY29uc3RydWN0
b3IuCiAgICAgY29uc3QgVUNoYXIqIG1faW5wdXQ7CiAgICAgY29uc3QgaW50IG1faW5wdXRMZW5n
dGg7CkBAIC0zOTQsNiArMzk3LDkgQEAgcHJpdmF0ZToKICAgICAvLyBtX2hlaWdodCBhbmQgbV9z
dHlsZSBpZiB0aGV5J3JlIGtub3duLiBHZXR0ZXJzIGZvciB0aGVtIHdvdWxkIGhhdmUgdG8KICAg
ICAvLyAnaW5mZXInIHRoZWlyIHZhbHVlcyBmcm9tIG1faGZvbnQgT05MWSB3aGVuIHRoZXkncmUg
bm90IHNldC4KICAgICBIRk9OVCBtX2hmb250OworICAgIC8vIFdlIHVzZSB0aGlzIERDIGlmIHdl
IGNhbid0IGdldCBTY3JpcHRTaGFwZS9TY3JpcHRQbGFjZSB0byBzdWNjZWVkIHdpdGhvdXQKKyAg
ICAvLyBwYXNzaW5nIGEgREMgd2l0aCBhIHNlbGVjdGVkIGZvbnQuCisgICAgc3RhdGljIEhEQyBt
X2NhY2hlZERDOwogICAgIFNDUklQVF9DQUNIRSogbV9zY3JpcHRDYWNoZTsKICAgICBTQ1JJUFRf
Rk9OVFBST1BFUlRJRVMqIG1fZm9udFByb3BlcnRpZXM7CiAgICAgaW50IG1fYXNjZW50Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>110852</attachid>
            <date>2011-10-13 08:42:34 -0700</date>
            <delta_ts>2011-11-01 14:59:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68598-20111013114232.patch</filename>
            <type>text/plain</type>
            <size>9558</size>
            <attacher name="Marc-André Decoste">mad</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk3MzY2KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTEtMTAtMTMgIE1hcmMtQW5k
cmUgRGVjb3N0ZSAgPG1hZEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBIREMg
bGVhayBpbiBVbmlzY3JpYmUgSGVscGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD02ODU5OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gKE9PUFMhKQorCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vVW5pc2NyaWJlSGVscGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlVuaXNjcmliZUhlbHBlcjo6c2hhcGUpOgorICAgICAgICAoV2ViQ29yZTo6VW5pc2NyaWJl
SGVscGVyOjpFbnN1cmVDYWNoZWREQ0NyZWF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6VW5pc2Ny
aWJlSGVscGVyOjpmaWxsU2hhcGVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9VbmlzY3JpYmVIZWxwZXIuaDoKKwogMjAxMS0xMC0xMyAgTWlraGFpbCBOYWdhbm92ICA8
bW5hZ2Fub3ZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFtDaHJvbWl1
bV0gQWRkIGFuIGFiaWxpdHkgdG8gbG9vayB1cCBhbmQgZXhwbG9yZSBhbiBvYmplY3QgZnJvbSBh
IGhlYXAgcHJvZmlsZS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1VuaXNjcmliZUhlbHBlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVW5pc2NyaWJlSGVscGVyLmNwcAkocmV2aXNpb24g
OTcyNTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Vbmlz
Y3JpYmVIZWxwZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDYsNiArMTA2LDEwIEBAIHN0YXRp
YyB2b2lkIHNldExvZ0ZvbnRBbmRTdHlsZShIRk9OVCBoZm8KICAgICAgICAgKnN0eWxlID0gZ2V0
U3R5bGVGcm9tTG9nZm9udChsb2dmb250KTsKIH0KIAorLy8gVGhpcyBtZW1vcnkgREMgd2lsbCBO
T1QgYmUgcmVsZWFzZWQgYnV0IGl0J3MgT0sKKy8vIHNpbmNlIHdlIHdhbnQgdG8ga2VlcCBpdCBm
b3IgdGhlIHdob2xlIGxpZmUgc3BhbiBvZiB0aGUgcHJvY2Vzcy4KK0hEQyBVbmlzY3JpYmVIZWxw
ZXI6Om1fY2FjaGVkREMgPSAwOworCiBzdGF0aWMgYm9vbCBjYW5Vc2VHbHlwaEluZGV4KGNvbnN0
IFNDUklQVF9JVEVNJiBydW4pCiB7CiAgICAgLy8gT24gZWFybHkgdmVyc2lvbiBvZiBVbmlzY3Jp
YmUsIFNjcmlwdFNoYXBlKCkgc2V0cyBydW4uYS5mTm9HbHlwaEluZGV4CkBAIC02MjIsOCArNjI2
LDYgQEAgYm9vbCBVbmlzY3JpYmVIZWxwZXI6OnNoYXBlKGNvbnN0IFVDaGFyKgogICAgIFZlY3Rv
cjxTQ1JJUFRfR0xZUEhQUk9QLCBjVW5pc2NyaWJlSGVscGVyU3RhY2tDaGFycz4gZ2x5cGhQcm9w
czsKICAgICBpbnQgYXNjZW50ID0gbV9hc2NlbnQ7CiAgICAgV09SRCBzcGFjZUdseXBoID0gbV9z
cGFjZUdseXBoOwotICAgIEhEQyB0ZW1wREMgPSAwOwotICAgIEhHRElPQkogb2xkRm9udCA9IDA7
CiAgICAgSFJFU1VMVCBocjsKICAgICAvLyBXaGVuIHVzZWQgdG8gZmlsbCB1cCBnbHlwaCBwYWdl
cyBmb3Igc2ltcGxlIHNjcmlwdHMgaW4gbm9uLUJNUCwKICAgICAvLyB3ZSBkb24ndCB3YW50IGFu
eSBmb250IGZhbGxiYWNrIGluIHRoaXMgY2xhc3MuIFRoZSBzaW1wbGUgc2NyaXB0CkBAIC02NjUs
MTEgKzY2NywxNiBAQCBib29sIFVuaXNjcmliZUhlbHBlcjo6c2hhcGUoY29uc3QgVUNoYXIqCiAg
ICAgICAgIFplcm9NZW1vcnkoJnNoYXBpbmcubV9nbHlwaHNbMF0sCiAgICAgICAgICAgICAgICAg
ICAgc2l6ZW9mKHNoYXBpbmcubV9nbHlwaHNbMF0pICogc2hhcGluZy5tX2dseXBocy5zaXplKCkp
OwogI2VuZGlmCisgICAgICAgIC8vIElmIG91ciBEQyBpcyBhbHJlYWR5IGNyZWF0ZWQsIHNlbGVj
dCB0aGUgZm9udCBpbiBpdCBzbyB3ZSBjYW4gdXNlIGl0IG5vdy4KKyAgICAgICAgLy8gT3RoZXJ3
aXNlLCB3ZSdsbCBjcmVhdGUgaXQgYXMgbmVlZGVkIGFmdGVyd2FyZC4uLgorICAgICAgICBpZiAo
bV9jYWNoZWREQykKKyAgICAgICAgICAgIFNlbGVjdE9iamVjdChtX2NhY2hlZERDLCBoZm9udCk7
CisKICAgICAgICAgLy8gRmlyZWZveCBzZXRzIFNDUklQVF9BTkFMWVNJUy5TQ1JJUFRfU1RBVEUu
ZkRpc3BsYXlaV0cgdG8gdHJ1ZQogICAgICAgICAvLyBoZXJlLiBJcyB0aGF0IHdoYXQgd2Ugd2Fu
dD8gSXQgd2lsbCBkaXNwbGF5IGNvbnRyb2wgY2hhcmFjdGVycy4KICAgICAgICAgaWYgKGdTY3Jp
cHRTaGFwZU9wZW5UeXBlRnVuYykgewogICAgICAgICAgICAgVEVYVFJBTkdFX1BST1BFUlRJRVMq
IHJhbmdlUHJvcHMgPSBtX2ZlYXR1cmVSZWNvcmRzLnNpemUoKSA/ICZtX3JhbmdlUHJvcGVydGll
cyA6IDA7Ci0gICAgICAgICAgICBociA9IGdTY3JpcHRTaGFwZU9wZW5UeXBlRnVuYyh0ZW1wREMs
IHNjcmlwdENhY2hlLCAmcnVuLmEsCisgICAgICAgICAgICBociA9IGdTY3JpcHRTaGFwZU9wZW5U
eXBlRnVuYyhtX2NhY2hlZERDLCBzY3JpcHRDYWNoZSwgJnJ1bi5hLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NyaXB0VGFnLCAwLCAmaXRlbUxlbmd0aCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZyYW5nZVByb3BzLCByYW5n
ZVByb3BzID8gMSA6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnB1dCwgaXRlbUxlbmd0aCwgbnVtR2x5cGhzLApAQCAtNjc3LDMwICs2ODQsMjUgQEAgYm9v
bCBVbmlzY3JpYmVIZWxwZXI6OnNoYXBlKGNvbnN0IFVDaGFyKgogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJnNoYXBpbmcubV9nbHlwaHNbMF0sICZnbHlwaFByb3Bz
WzBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmdlbmVyYXRl
ZEdseXBocyk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBociA9IFNjcmlwdFNoYXBl
KHRlbXBEQywgc2NyaXB0Q2FjaGUsIGlucHV0LCBpdGVtTGVuZ3RoLAorICAgICAgICAgICAgaHIg
PSBTY3JpcHRTaGFwZShtX2NhY2hlZERDLCBzY3JpcHRDYWNoZSwgaW5wdXQsIGl0ZW1MZW5ndGgs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bUdseXBocywgJnJ1bi5hLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAmc2hhcGluZy5tX2dseXBoc1swXSwgJnNoYXBpbmcubV9s
b2dzWzBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc2hhcGluZy5tX3Zpc3VhbEF0
dHJpYnV0ZXNbMF0sICZnZW5lcmF0ZWRHbHlwaHMpOwogICAgICAgICB9Ci0gICAgICAgIGlmICho
ciA9PSBFX1BFTkRJTkcpIHsKLSAgICAgICAgICAgIC8vIEFsbG9jYXRlIHRoZSBEQy4KLSAgICAg
ICAgICAgIHRlbXBEQyA9IEdldERDKDApOwotICAgICAgICAgICAgb2xkRm9udCA9IFNlbGVjdE9i
amVjdCh0ZW1wREMsIGhmb250KTsKKyAgICAgICAgLy8gV2UgcmVjZWl2ZSBFX1BFTkRJTkcgd2hl
biB3ZSBuZWVkIHRvIHRyeSBhZ2FpbiB3aXRoIGEgRHJhd2luZyBDb250ZXh0LAorICAgICAgICAv
LyBidXQgd2UgZG9uJ3Qgd2FudCB0byByZXRyeSBhZ2FpbiBpZiB3ZSBhbHJlYWR5IHRyaWVkIHdp
dGggbm9uLXplcm8gREMuCisgICAgICAgIGlmIChociA9PSBFX1BFTkRJTkcgJiYgIW1fY2FjaGVk
REMpIHsKKyAgICAgICAgICAgIEVuc3VyZUNhY2hlZERDQ3JlYXRlZCgpOwogICAgICAgICAgICAg
Y29udGludWU7Ci0gICAgICAgIH0gZWxzZSBpZiAoaHIgPT0gRV9PVVRPRk1FTU9SWSkgeworICAg
ICAgICB9CisgICAgICAgIGlmIChociA9PSBFX09VVE9GTUVNT1JZKSB7CiAgICAgICAgICAgICBu
dW1HbHlwaHMgKj0gMjsKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9IGVsc2UgaWYg
KFNVQ0NFRURFRChocikgJiYgKGxhc3RGYWxsYmFja1RyaWVkIHx8ICFjb250YWluc01pc3NpbmdH
bHlwaHMoc2hhcGluZywgcnVuLCBmb250UHJvcGVydGllcykgJiYgY2FuVXNlR2x5cGhJbmRleChy
dW4pKSkKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIC8vIFRoZSBjdXJyZW50IGZvbnQg
Y2FuJ3QgcmVuZGVyIHRoaXMgcnVuLiBjbGVhciBEQyBhbmQgdHJ5Ci0gICAgICAgIC8vIG5leHQg
Zm9udC4KLSAgICAgICAgaWYgKHRlbXBEQykgewotICAgICAgICAgICAgU2VsZWN0T2JqZWN0KHRl
bXBEQywgb2xkRm9udCk7Ci0gICAgICAgICAgICBSZWxlYXNlREMoMCwgdGVtcERDKTsKLSAgICAg
ICAgICAgIHRlbXBEQyA9IDA7CiAgICAgICAgIH0KKyAgICAgICAgaWYgKFNVQ0NFRURFRChocikg
JiYgKGxhc3RGYWxsYmFja1RyaWVkIHx8ICFjb250YWluc01pc3NpbmdHbHlwaHMoc2hhcGluZywg
cnVuLCBmb250UHJvcGVydGllcykgJiYgY2FuVXNlR2x5cGhJbmRleChydW4pKSkKKyAgICAgICAg
ICAgIGJyZWFrOwogCisgICAgICAgIC8vIFRoZSBjdXJyZW50IGZvbnQgY2FuJ3QgcmVuZGVyIHRo
aXMgcnVuLCB0cnkgbmV4dCBmb250LgogICAgICAgICBpZiAoIW1fZGlzYWJsZUZvbnRGYWxsYmFj
ayAmJgogICAgICAgICAgICAgbmV4dFdpbkZvbnREYXRhKCZoZm9udCwgJnNjcmlwdENhY2hlLCAm
Zm9udFByb3BlcnRpZXMsICZhc2NlbnQpKSB7CiAgICAgICAgICAgICAvLyBUaGUgcHJpbWFyeSBm
b250IGRvZXMgbm90IHN1cHBvcnQgdGhpcyBydW4uIFRyeSBuZXh0IGZvbnQuCkBAIC03ODYsMTAg
Kzc4OCw3IEBAIGJvb2wgVW5pc2NyaWJlSGVscGVyOjpzaGFwZShjb25zdCBVQ2hhcioKICAgICB9
CiAgICAgc2hhcGluZy5tX2FkdmFuY2UucmVzaXplKGdlbmVyYXRlZEdseXBocyk7CiAgICAgc2hh
cGluZy5tX29mZnNldHMucmVzaXplKGdlbmVyYXRlZEdseXBocyk7Ci0gICAgaWYgKHRlbXBEQykg
ewotICAgICAgICBTZWxlY3RPYmplY3QodGVtcERDLCBvbGRGb250KTsKLSAgICAgICAgUmVsZWFz
ZURDKDAsIHRlbXBEQyk7Ci0gICAgfQorCiAgICAgLy8gT24gZmFpbHVyZSwgb3VyIGxvZ3MgZG9u
J3QgbWVhbiBhbnl0aGluZywgc28gemVybyB0aG9zZSBvdXQuCiAgICAgaWYgKCFyZXN1bHQpCiAg
ICAgICAgIHNoYXBpbmcubV9sb2dzLmNsZWFyKCk7CkBAIC03OTcsNiArNzk2LDIwIEBAIGJvb2wg
VW5pc2NyaWJlSGVscGVyOjpzaGFwZShjb25zdCBVQ2hhcioKICAgICByZXR1cm4gcmVzdWx0Owog
fQogCit2b2lkIFVuaXNjcmliZUhlbHBlcjo6RW5zdXJlQ2FjaGVkRENDcmVhdGVkKCkKK3sKKyAg
ICBpZiAobV9jYWNoZWREQykKKyAgICAgIHJldHVybjsKKyAgICAvLyBBbGxvY2F0ZSBhIG1lbW9y
eSBEQyB0aGF0IGlzIGNvbXBhdGlibGUgd2l0aCB0aGUgRGVza3RvcCBEQyBzaW5jZSB3ZSBkb24n
dCBoYXZlIGFueSB3aW5kb3csCisgICAgLy8gYW5kIHdlIGRvbid0IHdhbnQgdG8gdXNlIHRoZSBE
ZXNrdG9wIERDIGRpcmVjdGx5IHNpbmNlIGl0IGNhbiBoYXZlIG5hc3R5IHNpZGUgZWZmZWN0cwor
ICAgIC8vIGFzIGlkZW50aWZpZWQgaW4gQ2hyb21lIElzc3VlIGh0dHA6Ly9jcmJ1Zy5jb20vNTkz
MTUuCisgICAgSERDIHNjcmVlbkRDID0gOjpHZXREQygwKTsKKyAgICBtX2NhY2hlZERDID0gOjpD
cmVhdGVDb21wYXRpYmxlREMoc2NyZWVuREMpOworICAgIEFTU0VSVChtX2NhY2hlZERDKTsKKwor
ICAgIGludCByZXN1bHQgPSA6OlJlbGVhc2VEQygwLCBzY3JlZW5EQyk7CisgICAgQVNTRVJUKHJl
c3VsdCA9PSAxKTsKK30KIHZvaWQgVW5pc2NyaWJlSGVscGVyOjpmaWxsU2hhcGVzKCkKIHsKICAg
ICBtX3NoYXBlcy5yZXNpemUobV9ydW5zLnNpemUoKSk7CkBAIC04MzYsMzAgKzg0OSwxNSBAQCB2
b2lkIFVuaXNjcmliZUhlbHBlcjo6ZmlsbFNoYXBlcygpCiAKICAgICAgICAgLy8gQ29tcHV0ZSBw
bGFjZW1lbnRzLiBOb3RlIHRoYXQgb2Zmc2V0cyBpcyBkb2N1bWVudGVkIGluY29ycmVjdGx5CiAg
ICAgICAgIC8vIGFuZCBpcyBhY3R1YWxseSBhbiBhcnJheS4KLQotICAgICAgICAvLyBEQyB0aGF0
IHdlIGxhemlseSBjcmVhdGUgaWYgVW5pc2NyaWJlIGNvbW1hbmRzIHVzIHRvLgotICAgICAgICAv
LyAodGhpcyBkb2VzIG5vdCBoYXBwZW4gb2Z0ZW4gYmVjYXVzZSBzY3JpcHRDYWNoZSBpcyBhbHJl
YWR5Ci0gICAgICAgIC8vICB1cGRhdGVkIHdoZW4gY2FsbGluZyBTY3JpcHRTaGFwZSkuCi0gICAg
ICAgIEhEQyB0ZW1wREMgPSAwOwotICAgICAgICBIR0RJT0JKIG9sZEZvbnQgPSAwOwotICAgICAg
ICBIUkVTVUxUIGhyOwotICAgICAgICB3aGlsZSAodHJ1ZSkgewotICAgICAgICAgICAgc2hhcGlu
Zy5tX3ByZVBhZGRpbmcgPSAwOwotICAgICAgICAgICAgaHIgPSBTY3JpcHRQbGFjZSh0ZW1wREMs
IHNoYXBpbmcubV9zY3JpcHRDYWNoZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnNo
YXBpbmcubV9nbHlwaHNbMF0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19j
YXN0PGludD4oc2hhcGluZy5tX2dseXBocy5zaXplKCkpLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAmc2hhcGluZy5tX3Zpc3VhbEF0dHJpYnV0ZXNbMF0sICZtX3J1bnNbaV0uYSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJnNoYXBpbmcubV9hZHZhbmNlWzBdLCAmc2hhcGlu
Zy5tX29mZnNldHNbMF0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzaGFwaW5nLm1f
YWJjKTsKLSAgICAgICAgICAgIGlmIChociAhPSBFX1BFTkRJTkcpCi0gICAgICAgICAgICAgICAg
YnJlYWs7Ci0KLSAgICAgICAgICAgIC8vIEFsbG9jYXRlIHRoZSBEQyBhbmQgcnVuIHRoZSBsb29w
IGFnYWluLgotICAgICAgICAgICAgdGVtcERDID0gR2V0REMoMCk7Ci0gICAgICAgICAgICBvbGRG
b250ID0gU2VsZWN0T2JqZWN0KHRlbXBEQywgc2hhcGluZy5tX2hmb250KTsKLSAgICAgICAgfQot
Ci0gICAgICAgIGlmIChGQUlMRUQoaHIpKSB7CisgICAgICAgIEVuc3VyZUNhY2hlZERDQ3JlYXRl
ZCgpOworICAgICAgICBTZWxlY3RPYmplY3QobV9jYWNoZWREQywgc2hhcGluZy5tX2hmb250KTsK
KyAgICAgICAgc2hhcGluZy5tX3ByZVBhZGRpbmcgPSAwOworICAgICAgICBpZiAoRkFJTEVEKFNj
cmlwdFBsYWNlKG1fY2FjaGVkREMsIHNoYXBpbmcubV9zY3JpcHRDYWNoZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAmc2hhcGluZy5tX2dseXBoc1swXSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnQ+KHNoYXBpbmcubV9nbHlwaHMuc2l6ZSgp
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc2hhcGluZy5tX3Zpc3VhbEF0dHJp
YnV0ZXNbMF0sICZtX3J1bnNbaV0uYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAm
c2hhcGluZy5tX2FkdmFuY2VbMF0sICZzaGFwaW5nLm1fb2Zmc2V0c1swXSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAmc2hhcGluZy5tX2FiYykpKSB7CiAgICAgICAgICAgICAvLyBT
b21lIGVycm9yIHdlIGRvbid0IGtub3cgaG93IHRvIGhhbmRsZS4gTnVrZSBhbGwgb2Ygb3VyIGRh
dGEKICAgICAgICAgICAgIC8vIHNpbmNlIHdlIGNhbid0IGRlYWwgd2l0aCBwYXJ0aWFsbHkgdmFs
aWQgZGF0YSBsYXRlci4KICAgICAgICAgICAgIG1fcnVucy5jbGVhcigpOwpAQCAtODY3LDExICs4
NjUsNiBAQCB2b2lkIFVuaXNjcmliZUhlbHBlcjo6ZmlsbFNoYXBlcygpCiAgICAgICAgICAgICBt
X3NoYXBlcy5jbGVhcigpOwogICAgICAgICAgICAgbV9zY3JlZW5PcmRlci5jbGVhcigpOwogICAg
ICAgICB9Ci0KLSAgICAgICAgaWYgKHRlbXBEQykgewotICAgICAgICAgICAgU2VsZWN0T2JqZWN0
KHRlbXBEQywgb2xkRm9udCk7Ci0gICAgICAgICAgICBSZWxlYXNlREMoMCwgdGVtcERDKTsKLSAg
ICAgICAgfQogICAgIH0KIAogICAgIGFkanVzdFNwYWNlQWR2YW5jZXMoKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1VuaXNjcmliZUhlbHBlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Vu
aXNjcmliZUhlbHBlci5oCShyZXZpc2lvbiA5NzI1MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1VuaXNjcmliZUhlbHBlci5oCSh3b3JraW5nIGNvcHkpCkBA
IC00MCw3ICs0MCw3IEBACiAjaW5jbHVkZSA8dW5pY29kZS91Y2hhci5oPgogI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KIAotY2xhc3MgVW5pc2NyaWJlVGVzdF9Ub29CaWdfVGVzdDsgIC8vIEEgZ3Vu
aXQgdGVzdCBmb3IgVW5pc2NyaWJlSGVscGVyLgorY2xhc3MgVW5pc2NyaWJlVGVzdF9Ub29CaWdf
VGVzdDsgLy8gQSBndW5pdCB0ZXN0IGZvciBVbmlzY3JpYmVIZWxwZXIuCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIApAQCAtMzgwLDYgKzM4MCw5IEBAIHByaXZhdGU6CiAgICAgLy8gTmV4dFdpbkZv
bnREYXRhIHNjYW5zIGZhbGxiYWNrIGZvbnRzIGZyb20gdGhlIGJlZ2lubmluZy4KICAgICB2aXJ0
dWFsIHZvaWQgcmVzZXRGb250SW5kZXgoKSB7fQogCisgICAgLy8gSWYgbV9jYWNoZWREQyBpcyAw
LCBjcmVhdGVzIG9uZSB0aGF0IGlzIGNvbXBhdGlibGUgd2l0aCB0aGUgc2NyZWVuIERDLgorICAg
IHZvaWQgRW5zdXJlQ2FjaGVkRENDcmVhdGVkKCk7CisKICAgICAvLyBUaGUgaW5wdXQgZGF0YSBm
b3IgdGhpcyBydW4gb2YgVW5pc2NyaWJlLiBTZWUgdGhlIGNvbnN0cnVjdG9yLgogICAgIGNvbnN0
IFVDaGFyKiBtX2lucHV0OwogICAgIGNvbnN0IGludCBtX2lucHV0TGVuZ3RoOwpAQCAtMzk0LDYg
KzM5Nyw5IEBAIHByaXZhdGU6CiAgICAgLy8gbV9oZWlnaHQgYW5kIG1fc3R5bGUgaWYgdGhleSdy
ZSBrbm93bi4gR2V0dGVycyBmb3IgdGhlbSB3b3VsZCBoYXZlIHRvCiAgICAgLy8gJ2luZmVyJyB0
aGVpciB2YWx1ZXMgZnJvbSBtX2hmb250IE9OTFkgd2hlbiB0aGV5J3JlIG5vdCBzZXQuCiAgICAg
SEZPTlQgbV9oZm9udDsKKyAgICAvLyBXZSB1c2UgdGhpcyBEQyBpZiB3ZSBjYW4ndCBnZXQgU2Ny
aXB0U2hhcGUvU2NyaXB0UGxhY2UgdG8gc3VjY2VlZCB3aXRob3V0CisgICAgLy8gcGFzc2luZyBh
IERDIHdpdGggYSBzZWxlY3RlZCBmb250LgorICAgIHN0YXRpYyBIREMgbV9jYWNoZWREQzsKICAg
ICBTQ1JJUFRfQ0FDSEUqIG1fc2NyaXB0Q2FjaGU7CiAgICAgU0NSSVBUX0ZPTlRQUk9QRVJUSUVT
KiBtX2ZvbnRQcm9wZXJ0aWVzOwogICAgIGludCBtX2FzY2VudDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113229</attachid>
            <date>2011-11-01 14:59:44 -0700</date>
            <delta_ts>2011-11-22 14:06:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68598-20111101175943.patch</filename>
            <type>text/plain</type>
            <size>8690</size>
            <attacher name="Marc-André Decoste">mad</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1VuaXNjcmli
ZUhlbHBlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vVW5pc2NyaWJlSGVscGVyLmNwcAkocmV2aXNpb24gOTg5OTcpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9VbmlzY3JpYmVIZWxwZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDYsNiArMTA2LDEwIEBAIHN0YXRpYyB2b2lkIHNldExvZ0Zv
bnRBbmRTdHlsZShIRk9OVCBoZm8KICAgICAgICAgKnN0eWxlID0gZ2V0U3R5bGVGcm9tTG9nZm9u
dChsb2dmb250KTsKIH0KIAorLy8gVGhpcyBtZW1vcnkgREMgd2lsbCBOT1QgYmUgcmVsZWFzZWQg
YnV0IGl0J3MgT0sKKy8vIHNpbmNlIHdlIHdhbnQgdG8ga2VlcCBpdCBmb3IgdGhlIHdob2xlIGxp
ZmUgc3BhbiBvZiB0aGUgcHJvY2Vzcy4KK0hEQyBVbmlzY3JpYmVIZWxwZXI6Om1fY2FjaGVkREMg
PSAwOworCiBzdGF0aWMgYm9vbCBjYW5Vc2VHbHlwaEluZGV4KGNvbnN0IFNDUklQVF9JVEVNJiBy
dW4pCiB7CiAgICAgLy8gT24gZWFybHkgdmVyc2lvbiBvZiBVbmlzY3JpYmUsIFNjcmlwdFNoYXBl
KCkgc2V0cyBydW4uYS5mTm9HbHlwaEluZGV4CkBAIC02MjIsOCArNjI2LDYgQEAgYm9vbCBVbmlz
Y3JpYmVIZWxwZXI6OnNoYXBlKGNvbnN0IFVDaGFyKgogICAgIFZlY3RvcjxTQ1JJUFRfR0xZUEhQ
Uk9QLCBjVW5pc2NyaWJlSGVscGVyU3RhY2tDaGFycz4gZ2x5cGhQcm9wczsKICAgICBpbnQgYXNj
ZW50ID0gbV9hc2NlbnQ7CiAgICAgV09SRCBzcGFjZUdseXBoID0gbV9zcGFjZUdseXBoOwotICAg
IEhEQyB0ZW1wREMgPSAwOwotICAgIEhHRElPQkogb2xkRm9udCA9IDA7CiAgICAgSFJFU1VMVCBo
cjsKICAgICAvLyBXaGVuIHVzZWQgdG8gZmlsbCB1cCBnbHlwaCBwYWdlcyBmb3Igc2ltcGxlIHNj
cmlwdHMgaW4gbm9uLUJNUCwKICAgICAvLyB3ZSBkb24ndCB3YW50IGFueSBmb250IGZhbGxiYWNr
IGluIHRoaXMgY2xhc3MuIFRoZSBzaW1wbGUgc2NyaXB0CkBAIC02NjUsMTEgKzY2NywxNiBAQCBi
b29sIFVuaXNjcmliZUhlbHBlcjo6c2hhcGUoY29uc3QgVUNoYXIqCiAgICAgICAgIFplcm9NZW1v
cnkoJnNoYXBpbmcubV9nbHlwaHNbMF0sCiAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHNoYXBp
bmcubV9nbHlwaHNbMF0pICogc2hhcGluZy5tX2dseXBocy5zaXplKCkpOwogI2VuZGlmCisgICAg
ICAgIC8vIElmIG91ciBEQyBpcyBhbHJlYWR5IGNyZWF0ZWQsIHNlbGVjdCB0aGUgZm9udCBpbiBp
dCBzbyB3ZSBjYW4gdXNlIGl0IG5vdy4KKyAgICAgICAgLy8gT3RoZXJ3aXNlLCB3ZSdsbCBjcmVh
dGUgaXQgYXMgbmVlZGVkIGFmdGVyd2FyZC4uLgorICAgICAgICBpZiAobV9jYWNoZWREQykKKyAg
ICAgICAgICAgIFNlbGVjdE9iamVjdChtX2NhY2hlZERDLCBoZm9udCk7CisKICAgICAgICAgLy8g
RmlyZWZveCBzZXRzIFNDUklQVF9BTkFMWVNJUy5TQ1JJUFRfU1RBVEUuZkRpc3BsYXlaV0cgdG8g
dHJ1ZQogICAgICAgICAvLyBoZXJlLiBJcyB0aGF0IHdoYXQgd2Ugd2FudD8gSXQgd2lsbCBkaXNw
bGF5IGNvbnRyb2wgY2hhcmFjdGVycy4KICAgICAgICAgaWYgKGdTY3JpcHRTaGFwZU9wZW5UeXBl
RnVuYykgewogICAgICAgICAgICAgVEVYVFJBTkdFX1BST1BFUlRJRVMqIHJhbmdlUHJvcHMgPSBt
X2ZlYXR1cmVSZWNvcmRzLnNpemUoKSA/ICZtX3JhbmdlUHJvcGVydGllcyA6IDA7Ci0gICAgICAg
ICAgICBociA9IGdTY3JpcHRTaGFwZU9wZW5UeXBlRnVuYyh0ZW1wREMsIHNjcmlwdENhY2hlLCAm
cnVuLmEsCisgICAgICAgICAgICBociA9IGdTY3JpcHRTaGFwZU9wZW5UeXBlRnVuYyhtX2NhY2hl
ZERDLCBzY3JpcHRDYWNoZSwgJnJ1bi5hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2NyaXB0VGFnLCAwLCAmaXRlbUxlbmd0aCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICZyYW5nZVByb3BzLCByYW5nZVByb3BzID8gMSA6IDAs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dCwgaXRlbUxl
bmd0aCwgbnVtR2x5cGhzLApAQCAtNjc3LDMwICs2ODQsMjUgQEAgYm9vbCBVbmlzY3JpYmVIZWxw
ZXI6OnNoYXBlKGNvbnN0IFVDaGFyKgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJnNoYXBpbmcubV9nbHlwaHNbMF0sICZnbHlwaFByb3BzWzBdLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmdlbmVyYXRlZEdseXBocyk7CiAgICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBociA9IFNjcmlwdFNoYXBlKHRlbXBEQywgc2NyaXB0
Q2FjaGUsIGlucHV0LCBpdGVtTGVuZ3RoLAorICAgICAgICAgICAgaHIgPSBTY3JpcHRTaGFwZSht
X2NhY2hlZERDLCBzY3JpcHRDYWNoZSwgaW5wdXQsIGl0ZW1MZW5ndGgsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG51bUdseXBocywgJnJ1bi5hLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAmc2hhcGluZy5tX2dseXBoc1swXSwgJnNoYXBpbmcubV9sb2dzWzBdLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAmc2hhcGluZy5tX3Zpc3VhbEF0dHJpYnV0ZXNbMF0sICZn
ZW5lcmF0ZWRHbHlwaHMpOwogICAgICAgICB9Ci0gICAgICAgIGlmIChociA9PSBFX1BFTkRJTkcp
IHsKLSAgICAgICAgICAgIC8vIEFsbG9jYXRlIHRoZSBEQy4KLSAgICAgICAgICAgIHRlbXBEQyA9
IEdldERDKDApOwotICAgICAgICAgICAgb2xkRm9udCA9IFNlbGVjdE9iamVjdCh0ZW1wREMsIGhm
b250KTsKKyAgICAgICAgLy8gV2UgcmVjZWl2ZSBFX1BFTkRJTkcgd2hlbiB3ZSBuZWVkIHRvIHRy
eSBhZ2FpbiB3aXRoIGEgRHJhd2luZyBDb250ZXh0LAorICAgICAgICAvLyBidXQgd2UgZG9uJ3Qg
d2FudCB0byByZXRyeSBhZ2FpbiBpZiB3ZSBhbHJlYWR5IHRyaWVkIHdpdGggbm9uLXplcm8gREMu
CisgICAgICAgIGlmIChociA9PSBFX1BFTkRJTkcgJiYgIW1fY2FjaGVkREMpIHsKKyAgICAgICAg
ICAgIEVuc3VyZUNhY2hlZERDQ3JlYXRlZCgpOwogICAgICAgICAgICAgY29udGludWU7Ci0gICAg
ICAgIH0gZWxzZSBpZiAoaHIgPT0gRV9PVVRPRk1FTU9SWSkgeworICAgICAgICB9CisgICAgICAg
IGlmIChociA9PSBFX09VVE9GTUVNT1JZKSB7CiAgICAgICAgICAgICBudW1HbHlwaHMgKj0gMjsK
ICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9IGVsc2UgaWYgKFNVQ0NFRURFRChocikg
JiYgKGxhc3RGYWxsYmFja1RyaWVkIHx8ICFjb250YWluc01pc3NpbmdHbHlwaHMoc2hhcGluZywg
cnVuLCBmb250UHJvcGVydGllcykgJiYgY2FuVXNlR2x5cGhJbmRleChydW4pKSkKLSAgICAgICAg
ICAgIGJyZWFrOwotCi0gICAgICAgIC8vIFRoZSBjdXJyZW50IGZvbnQgY2FuJ3QgcmVuZGVyIHRo
aXMgcnVuLiBjbGVhciBEQyBhbmQgdHJ5Ci0gICAgICAgIC8vIG5leHQgZm9udC4KLSAgICAgICAg
aWYgKHRlbXBEQykgewotICAgICAgICAgICAgU2VsZWN0T2JqZWN0KHRlbXBEQywgb2xkRm9udCk7
Ci0gICAgICAgICAgICBSZWxlYXNlREMoMCwgdGVtcERDKTsKLSAgICAgICAgICAgIHRlbXBEQyA9
IDA7CiAgICAgICAgIH0KKyAgICAgICAgaWYgKFNVQ0NFRURFRChocikgJiYgKGxhc3RGYWxsYmFj
a1RyaWVkIHx8ICFjb250YWluc01pc3NpbmdHbHlwaHMoc2hhcGluZywgcnVuLCBmb250UHJvcGVy
dGllcykgJiYgY2FuVXNlR2x5cGhJbmRleChydW4pKSkKKyAgICAgICAgICAgIGJyZWFrOwogCisg
ICAgICAgIC8vIFRoZSBjdXJyZW50IGZvbnQgY2FuJ3QgcmVuZGVyIHRoaXMgcnVuLCB0cnkgbmV4
dCBmb250LgogICAgICAgICBpZiAoIW1fZGlzYWJsZUZvbnRGYWxsYmFjayAmJgogICAgICAgICAg
ICAgbmV4dFdpbkZvbnREYXRhKCZoZm9udCwgJnNjcmlwdENhY2hlLCAmZm9udFByb3BlcnRpZXMs
ICZhc2NlbnQpKSB7CiAgICAgICAgICAgICAvLyBUaGUgcHJpbWFyeSBmb250IGRvZXMgbm90IHN1
cHBvcnQgdGhpcyBydW4uIFRyeSBuZXh0IGZvbnQuCkBAIC03ODYsMTAgKzc4OCw3IEBAIGJvb2wg
VW5pc2NyaWJlSGVscGVyOjpzaGFwZShjb25zdCBVQ2hhcioKICAgICB9CiAgICAgc2hhcGluZy5t
X2FkdmFuY2UucmVzaXplKGdlbmVyYXRlZEdseXBocyk7CiAgICAgc2hhcGluZy5tX29mZnNldHMu
cmVzaXplKGdlbmVyYXRlZEdseXBocyk7Ci0gICAgaWYgKHRlbXBEQykgewotICAgICAgICBTZWxl
Y3RPYmplY3QodGVtcERDLCBvbGRGb250KTsKLSAgICAgICAgUmVsZWFzZURDKDAsIHRlbXBEQyk7
Ci0gICAgfQorCiAgICAgLy8gT24gZmFpbHVyZSwgb3VyIGxvZ3MgZG9uJ3QgbWVhbiBhbnl0aGlu
Zywgc28gemVybyB0aG9zZSBvdXQuCiAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHNoYXBpbmcu
bV9sb2dzLmNsZWFyKCk7CkBAIC03OTcsNiArNzk2LDIwIEBAIGJvb2wgVW5pc2NyaWJlSGVscGVy
OjpzaGFwZShjb25zdCBVQ2hhcioKICAgICByZXR1cm4gcmVzdWx0OwogfQogCit2b2lkIFVuaXNj
cmliZUhlbHBlcjo6RW5zdXJlQ2FjaGVkRENDcmVhdGVkKCkKK3sKKyAgICBpZiAobV9jYWNoZWRE
QykKKyAgICAgICAgcmV0dXJuOworICAgIC8vIEFsbG9jYXRlIGEgbWVtb3J5IERDIHRoYXQgaXMg
Y29tcGF0aWJsZSB3aXRoIHRoZSBEZXNrdG9wIERDIHNpbmNlIHdlIGRvbid0IGhhdmUgYW55IHdp
bmRvdywKKyAgICAvLyBhbmQgd2UgZG9uJ3Qgd2FudCB0byB1c2UgdGhlIERlc2t0b3AgREMgZGly
ZWN0bHkgc2luY2UgaXQgY2FuIGhhdmUgbmFzdHkgc2lkZSBlZmZlY3RzCisgICAgLy8gYXMgaWRl
bnRpZmllZCBpbiBDaHJvbWUgSXNzdWUgaHR0cDovL2NyYnVnLmNvbS81OTMxNS4KKyAgICBIREMg
c2NyZWVuREMgPSA6OkdldERDKDApOworICAgIG1fY2FjaGVkREMgPSA6OkNyZWF0ZUNvbXBhdGli
bGVEQyhzY3JlZW5EQyk7CisgICAgQVNTRVJUKG1fY2FjaGVkREMpOworCisgICAgaW50IHJlc3Vs
dCA9IDo6UmVsZWFzZURDKDAsIHNjcmVlbkRDKTsKKyAgICBBU1NFUlQocmVzdWx0ID09IDEpOwor
fQogdm9pZCBVbmlzY3JpYmVIZWxwZXI6OmZpbGxTaGFwZXMoKQogewogICAgIG1fc2hhcGVzLnJl
c2l6ZShtX3J1bnMuc2l6ZSgpKTsKQEAgLTgzNiwzMCArODQ5LDE1IEBAIHZvaWQgVW5pc2NyaWJl
SGVscGVyOjpmaWxsU2hhcGVzKCkKIAogICAgICAgICAvLyBDb21wdXRlIHBsYWNlbWVudHMuIE5v
dGUgdGhhdCBvZmZzZXRzIGlzIGRvY3VtZW50ZWQgaW5jb3JyZWN0bHkKICAgICAgICAgLy8gYW5k
IGlzIGFjdHVhbGx5IGFuIGFycmF5LgotCi0gICAgICAgIC8vIERDIHRoYXQgd2UgbGF6aWx5IGNy
ZWF0ZSBpZiBVbmlzY3JpYmUgY29tbWFuZHMgdXMgdG8uCi0gICAgICAgIC8vICh0aGlzIGRvZXMg
bm90IGhhcHBlbiBvZnRlbiBiZWNhdXNlIHNjcmlwdENhY2hlIGlzIGFscmVhZHkKLSAgICAgICAg
Ly8gIHVwZGF0ZWQgd2hlbiBjYWxsaW5nIFNjcmlwdFNoYXBlKS4KLSAgICAgICAgSERDIHRlbXBE
QyA9IDA7Ci0gICAgICAgIEhHRElPQkogb2xkRm9udCA9IDA7Ci0gICAgICAgIEhSRVNVTFQgaHI7
Ci0gICAgICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAgICAgICBzaGFwaW5nLm1fcHJlUGFkZGlu
ZyA9IDA7Ci0gICAgICAgICAgICBociA9IFNjcmlwdFBsYWNlKHRlbXBEQywgc2hhcGluZy5tX3Nj
cmlwdENhY2hlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc2hhcGluZy5tX2dseXBo
c1swXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50PihzaGFw
aW5nLm1fZ2x5cGhzLnNpemUoKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzaGFw
aW5nLm1fdmlzdWFsQXR0cmlidXRlc1swXSwgJm1fcnVuc1tpXS5hLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAmc2hhcGluZy5tX2FkdmFuY2VbMF0sICZzaGFwaW5nLm1fb2Zmc2V0c1sw
XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnNoYXBpbmcubV9hYmMpOwotICAgICAg
ICAgICAgaWYgKGhyICE9IEVfUEVORElORykKLSAgICAgICAgICAgICAgICBicmVhazsKLQotICAg
ICAgICAgICAgLy8gQWxsb2NhdGUgdGhlIERDIGFuZCBydW4gdGhlIGxvb3AgYWdhaW4uCi0gICAg
ICAgICAgICB0ZW1wREMgPSBHZXREQygwKTsKLSAgICAgICAgICAgIG9sZEZvbnQgPSBTZWxlY3RP
YmplY3QodGVtcERDLCBzaGFwaW5nLm1faGZvbnQpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYg
KEZBSUxFRChocikpIHsKKyAgICAgICAgRW5zdXJlQ2FjaGVkRENDcmVhdGVkKCk7CisgICAgICAg
IFNlbGVjdE9iamVjdChtX2NhY2hlZERDLCBzaGFwaW5nLm1faGZvbnQpOworICAgICAgICBzaGFw
aW5nLm1fcHJlUGFkZGluZyA9IDA7CisgICAgICAgIGlmIChGQUlMRUQoU2NyaXB0UGxhY2UobV9j
YWNoZWREQywgc2hhcGluZy5tX3NjcmlwdENhY2hlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICZzaGFwaW5nLm1fZ2x5cGhzWzBdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0YXRpY19jYXN0PGludD4oc2hhcGluZy5tX2dseXBocy5zaXplKCkpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICZzaGFwaW5nLm1fdmlzdWFsQXR0cmlidXRlc1swXSwgJm1f
cnVuc1tpXS5hLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzaGFwaW5nLm1fYWR2
YW5jZVswXSwgJnNoYXBpbmcubV9vZmZzZXRzWzBdLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICZzaGFwaW5nLm1fYWJjKSkpIHsKICAgICAgICAgICAgIC8vIFNvbWUgZXJyb3Igd2Ug
ZG9uJ3Qga25vdyBob3cgdG8gaGFuZGxlLiBOdWtlIGFsbCBvZiBvdXIgZGF0YQogICAgICAgICAg
ICAgLy8gc2luY2Ugd2UgY2FuJ3QgZGVhbCB3aXRoIHBhcnRpYWxseSB2YWxpZCBkYXRhIGxhdGVy
LgogICAgICAgICAgICAgbV9ydW5zLmNsZWFyKCk7CkBAIC04NjcsMTEgKzg2NSw2IEBAIHZvaWQg
VW5pc2NyaWJlSGVscGVyOjpmaWxsU2hhcGVzKCkKICAgICAgICAgICAgIG1fc2hhcGVzLmNsZWFy
KCk7CiAgICAgICAgICAgICBtX3NjcmVlbk9yZGVyLmNsZWFyKCk7CiAgICAgICAgIH0KLQotICAg
ICAgICBpZiAodGVtcERDKSB7Ci0gICAgICAgICAgICBTZWxlY3RPYmplY3QodGVtcERDLCBvbGRG
b250KTsKLSAgICAgICAgICAgIFJlbGVhc2VEQygwLCB0ZW1wREMpOwotICAgICAgICB9CiAgICAg
fQogCiAgICAgYWRqdXN0U3BhY2VBZHZhbmNlcygpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVW5pc2NyaWJlSGVscGVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVW5pc2NyaWJlSGVscGVy
LmgJKHJldmlzaW9uIDk4OTk3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vVW5pc2NyaWJlSGVscGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDcg
QEAKICNpbmNsdWRlIDx1bmljb2RlL3VjaGFyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgog
Ci1jbGFzcyBVbmlzY3JpYmVUZXN0X1Rvb0JpZ19UZXN0OyAgLy8gQSBndW5pdCB0ZXN0IGZvciBV
bmlzY3JpYmVIZWxwZXIuCitjbGFzcyBVbmlzY3JpYmVUZXN0X1Rvb0JpZ19UZXN0OyAvLyBBIGd1
bml0IHRlc3QgZm9yIFVuaXNjcmliZUhlbHBlci4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBA
IC0zODAsNiArMzgwLDkgQEAgcHJpdmF0ZToKICAgICAvLyBOZXh0V2luRm9udERhdGEgc2NhbnMg
ZmFsbGJhY2sgZm9udHMgZnJvbSB0aGUgYmVnaW5uaW5nLgogICAgIHZpcnR1YWwgdm9pZCByZXNl
dEZvbnRJbmRleCgpIHt9CiAKKyAgICAvLyBJZiBtX2NhY2hlZERDIGlzIDAsIGNyZWF0ZXMgb25l
IHRoYXQgaXMgY29tcGF0aWJsZSB3aXRoIHRoZSBzY3JlZW4gREMuCisgICAgdm9pZCBFbnN1cmVD
YWNoZWREQ0NyZWF0ZWQoKTsKKwogICAgIC8vIFRoZSBpbnB1dCBkYXRhIGZvciB0aGlzIHJ1biBv
ZiBVbmlzY3JpYmUuIFNlZSB0aGUgY29uc3RydWN0b3IuCiAgICAgY29uc3QgVUNoYXIqIG1faW5w
dXQ7CiAgICAgY29uc3QgaW50IG1faW5wdXRMZW5ndGg7CkBAIC0zOTQsNiArMzk3LDkgQEAgcHJp
dmF0ZToKICAgICAvLyBtX2hlaWdodCBhbmQgbV9zdHlsZSBpZiB0aGV5J3JlIGtub3duLiBHZXR0
ZXJzIGZvciB0aGVtIHdvdWxkIGhhdmUgdG8KICAgICAvLyAnaW5mZXInIHRoZWlyIHZhbHVlcyBm
cm9tIG1faGZvbnQgT05MWSB3aGVuIHRoZXkncmUgbm90IHNldC4KICAgICBIRk9OVCBtX2hmb250
OworICAgIC8vIFdlIHVzZSB0aGlzIERDIGlmIHdlIGNhbid0IGdldCBTY3JpcHRTaGFwZS9TY3Jp
cHRQbGFjZSB0byBzdWNjZWVkIHdpdGhvdXQKKyAgICAvLyBwYXNzaW5nIGEgREMgd2l0aCBhIHNl
bGVjdGVkIGZvbnQuCisgICAgc3RhdGljIEhEQyBtX2NhY2hlZERDOwogICAgIFNDUklQVF9DQUNI
RSogbV9zY3JpcHRDYWNoZTsKICAgICBTQ1JJUFRfRk9OVFBST1BFUlRJRVMqIG1fZm9udFByb3Bl
cnRpZXM7CiAgICAgaW50IG1fYXNjZW50Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116272</attachid>
            <date>2011-11-22 14:06:18 -0800</date>
            <delta_ts>2011-11-23 02:10:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68598-20111122170616.patch</filename>
            <type>text/plain</type>
            <size>9991</size>
            <attacher name="Marc-André Decoste">mad</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMTAyNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBACisyMDExLTExLTIyICBNYXJjLUFu
ZHJlIERlY29zdGUgIDxtYWRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gSERD
IGxlYWsgaW4gVW5pc2NyaWJlIEhlbHBlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9Njg1OTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBGb3Igc29tZSByZWFzb24gdGhlIFNjcmlwdCBmdW5jdGlvbnMgb24g
V2luZG93cyBzb21ldGltZXMgcmV0dXJuCisgICAgICAgIEVfUEVORElORyBldmVuIHdpdGggYSBu
b24tTlVMTCBEQywgc28gd2UgbXVzdCBoYW5kbGUgdGhhdCBjYXNlLgorICAgICAgICBBbHNvLCB3
ZSBzaG91bGQgbm90IHVzZSB0aGUgc2NyZWVuIERDIHRvIHNlbGVjdCBmb250IHNpbmNlIHRoaXMK
KyAgICAgICAgcmVmcmVzaGVzIHRoZSB3aG9sZSBkZXNrdG9wLCBzbyBJIGFkZGVkIGEgY2FjaGVk
IGNvbXBhdGlibGUgREMuCisKKyAgICAgICAgTm90ZSB0aGF0IHRoaXMgZG9lc24ndCByZXByb2R1
Y2Ugd2l0aCBXZWJLaXQgYWxvbmUsIGl0IG9ubHkgcmVwcm9kdWNlcworICAgICAgICB3aXRoaW4g
Q2hyb21lLCBzbyB3ZSBjYW4ndCB3cml0ZSBhIFdlYktpdCB0ZXN0IGZvciBpdC4gQSBjaHJvbWl1
bQorICAgICAgICBicm93c2VyIHRlc3Qgd2lsbCBiZSBhZGRlZCBvbmNlIHRoaXMgY2hhbmdlIGdl
dHMgcm9sbGVkIGluIHRoZQorICAgICAgICBjaHJvbWl1bSBERVBTIGZpbGUuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9VbmlzY3JpYmVIZWxwZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VW5pc2NyaWJlSGVscGVyOjpzaGFwZSk6CisgICAgICAgIChXZWJDb3JlOjpV
bmlzY3JpYmVIZWxwZXI6OkVuc3VyZUNhY2hlZERDQ3JlYXRlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpVbmlzY3JpYmVIZWxwZXI6OmZpbGxTaGFwZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL1VuaXNjcmliZUhlbHBlci5oOgorCiAyMDExLTExLTIyICBBbmRyZXkgS29z
eWFrb3YgIDxjYXNlcUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgTGF5b3V0IFRlc3QgaW5zcGVj
dG9yL2V4dGVuc2lvbnMvZXh0ZW5zaW9ucy1ldmVudHMuaHRtbCBpcyB0aW1pbmcgb3V0CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9VbmlzY3JpYmVIZWxw
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1VuaXNjcmliZUhlbHBlci5jcHAJKHJldmlzaW9uIDEwMDk3NykKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1VuaXNjcmliZUhlbHBlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEwNiw2ICsxMDYsMTAgQEAgc3RhdGljIHZvaWQgc2V0TG9nRm9udEFu
ZFN0eWxlKEhGT05UIGhmbwogICAgICAgICAqc3R5bGUgPSBnZXRTdHlsZUZyb21Mb2dmb250KGxv
Z2ZvbnQpOwogfQogCisvLyBUaGlzIG1lbW9yeSBEQyB3aWxsIE5PVCBiZSByZWxlYXNlZCBidXQg
aXQncyBPSworLy8gc2luY2Ugd2Ugd2FudCB0byBrZWVwIGl0IGZvciB0aGUgd2hvbGUgbGlmZSBz
cGFuIG9mIHRoZSBwcm9jZXNzLgorSERDIFVuaXNjcmliZUhlbHBlcjo6bV9jYWNoZWREQyA9IDA7
CisKIHN0YXRpYyBib29sIGNhblVzZUdseXBoSW5kZXgoY29uc3QgU0NSSVBUX0lURU0mIHJ1bikK
IHsKICAgICAvLyBPbiBlYXJseSB2ZXJzaW9uIG9mIFVuaXNjcmliZSwgU2NyaXB0U2hhcGUoKSBz
ZXRzIHJ1bi5hLmZOb0dseXBoSW5kZXgKQEAgLTYyMiw4ICs2MjYsNiBAQCBib29sIFVuaXNjcmli
ZUhlbHBlcjo6c2hhcGUoY29uc3QgVUNoYXIqCiAgICAgVmVjdG9yPFNDUklQVF9HTFlQSFBST1As
IGNVbmlzY3JpYmVIZWxwZXJTdGFja0NoYXJzPiBnbHlwaFByb3BzOwogICAgIGludCBhc2NlbnQg
PSBtX2FzY2VudDsKICAgICBXT1JEIHNwYWNlR2x5cGggPSBtX3NwYWNlR2x5cGg7Ci0gICAgSERD
IHRlbXBEQyA9IDA7Ci0gICAgSEdESU9CSiBvbGRGb250ID0gMDsKICAgICBIUkVTVUxUIGhyOwog
ICAgIC8vIFdoZW4gdXNlZCB0byBmaWxsIHVwIGdseXBoIHBhZ2VzIGZvciBzaW1wbGUgc2NyaXB0
cyBpbiBub24tQk1QLAogICAgIC8vIHdlIGRvbid0IHdhbnQgYW55IGZvbnQgZmFsbGJhY2sgaW4g
dGhpcyBjbGFzcy4gVGhlIHNpbXBsZSBzY3JpcHQKQEAgLTY2NSwxMSArNjY3LDE2IEBAIGJvb2wg
VW5pc2NyaWJlSGVscGVyOjpzaGFwZShjb25zdCBVQ2hhcioKICAgICAgICAgWmVyb01lbW9yeSgm
c2hhcGluZy5tX2dseXBoc1swXSwKICAgICAgICAgICAgICAgICAgICBzaXplb2Yoc2hhcGluZy5t
X2dseXBoc1swXSkgKiBzaGFwaW5nLm1fZ2x5cGhzLnNpemUoKSk7CiAjZW5kaWYKKyAgICAgICAg
Ly8gSWYgb3VyIERDIGlzIGFscmVhZHkgY3JlYXRlZCwgc2VsZWN0IHRoZSBmb250IGluIGl0IHNv
IHdlIGNhbiB1c2UgaXQgbm93LgorICAgICAgICAvLyBPdGhlcndpc2UsIHdlJ2xsIGNyZWF0ZSBp
dCBhcyBuZWVkZWQgYWZ0ZXJ3YXJkLi4uCisgICAgICAgIGlmIChtX2NhY2hlZERDKQorICAgICAg
ICAgICAgU2VsZWN0T2JqZWN0KG1fY2FjaGVkREMsIGhmb250KTsKKwogICAgICAgICAvLyBGaXJl
Zm94IHNldHMgU0NSSVBUX0FOQUxZU0lTLlNDUklQVF9TVEFURS5mRGlzcGxheVpXRyB0byB0cnVl
CiAgICAgICAgIC8vIGhlcmUuIElzIHRoYXQgd2hhdCB3ZSB3YW50PyBJdCB3aWxsIGRpc3BsYXkg
Y29udHJvbCBjaGFyYWN0ZXJzLgogICAgICAgICBpZiAoZ1NjcmlwdFNoYXBlT3BlblR5cGVGdW5j
KSB7CiAgICAgICAgICAgICBURVhUUkFOR0VfUFJPUEVSVElFUyogcmFuZ2VQcm9wcyA9IG1fZmVh
dHVyZVJlY29yZHMuc2l6ZSgpID8gJm1fcmFuZ2VQcm9wZXJ0aWVzIDogMDsKLSAgICAgICAgICAg
IGhyID0gZ1NjcmlwdFNoYXBlT3BlblR5cGVGdW5jKHRlbXBEQywgc2NyaXB0Q2FjaGUsICZydW4u
YSwKKyAgICAgICAgICAgIGhyID0gZ1NjcmlwdFNoYXBlT3BlblR5cGVGdW5jKG1fY2FjaGVkREMs
IHNjcmlwdENhY2hlLCAmcnVuLmEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzY3JpcHRUYWcsIDAsICZpdGVtTGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJnJhbmdlUHJvcHMsIHJhbmdlUHJvcHMgPyAxIDogMCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0LCBpdGVtTGVuZ3Ro
LCBudW1HbHlwaHMsCkBAIC02NzcsMzAgKzY4NCwyNSBAQCBib29sIFVuaXNjcmliZUhlbHBlcjo6
c2hhcGUoY29uc3QgVUNoYXIqCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAmc2hhcGluZy5tX2dseXBoc1swXSwgJmdseXBoUHJvcHNbMF0sCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZ2VuZXJhdGVkR2x5cGhzKTsKICAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgIGhyID0gU2NyaXB0U2hhcGUodGVtcERDLCBzY3JpcHRDYWNo
ZSwgaW5wdXQsIGl0ZW1MZW5ndGgsCisgICAgICAgICAgICBociA9IFNjcmlwdFNoYXBlKG1fY2Fj
aGVkREMsIHNjcmlwdENhY2hlLCBpbnB1dCwgaXRlbUxlbmd0aCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbnVtR2x5cGhzLCAmcnVuLmEsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICZzaGFwaW5nLm1fZ2x5cGhzWzBdLCAmc2hhcGluZy5tX2xvZ3NbMF0sCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICZzaGFwaW5nLm1fdmlzdWFsQXR0cmlidXRlc1swXSwgJmdlbmVy
YXRlZEdseXBocyk7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKGhyID09IEVfUEVORElORykgewot
ICAgICAgICAgICAgLy8gQWxsb2NhdGUgdGhlIERDLgotICAgICAgICAgICAgdGVtcERDID0gR2V0
REMoMCk7Ci0gICAgICAgICAgICBvbGRGb250ID0gU2VsZWN0T2JqZWN0KHRlbXBEQywgaGZvbnQp
OworICAgICAgICAvLyBXZSByZWNlaXZlIEVfUEVORElORyB3aGVuIHdlIG5lZWQgdG8gdHJ5IGFn
YWluIHdpdGggYSBEcmF3aW5nIENvbnRleHQsCisgICAgICAgIC8vIGJ1dCB3ZSBkb24ndCB3YW50
IHRvIHJldHJ5IGFnYWluIGlmIHdlIGFscmVhZHkgdHJpZWQgd2l0aCBub24temVybyBEQy4KKyAg
ICAgICAgaWYgKGhyID09IEVfUEVORElORyAmJiAhbV9jYWNoZWREQykgeworICAgICAgICAgICAg
RW5zdXJlQ2FjaGVkRENDcmVhdGVkKCk7CiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAg
fSBlbHNlIGlmIChociA9PSBFX09VVE9GTUVNT1JZKSB7CisgICAgICAgIH0KKyAgICAgICAgaWYg
KGhyID09IEVfT1VUT0ZNRU1PUlkpIHsKICAgICAgICAgICAgIG51bUdseXBocyAqPSAyOwogICAg
ICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0gZWxzZSBpZiAoU1VDQ0VFREVEKGhyKSAmJiAo
bGFzdEZhbGxiYWNrVHJpZWQgfHwgIWNvbnRhaW5zTWlzc2luZ0dseXBocyhzaGFwaW5nLCBydW4s
IGZvbnRQcm9wZXJ0aWVzKSAmJiBjYW5Vc2VHbHlwaEluZGV4KHJ1bikpKQotICAgICAgICAgICAg
YnJlYWs7Ci0KLSAgICAgICAgLy8gVGhlIGN1cnJlbnQgZm9udCBjYW4ndCByZW5kZXIgdGhpcyBy
dW4uIGNsZWFyIERDIGFuZCB0cnkKLSAgICAgICAgLy8gbmV4dCBmb250LgotICAgICAgICBpZiAo
dGVtcERDKSB7Ci0gICAgICAgICAgICBTZWxlY3RPYmplY3QodGVtcERDLCBvbGRGb250KTsKLSAg
ICAgICAgICAgIFJlbGVhc2VEQygwLCB0ZW1wREMpOwotICAgICAgICAgICAgdGVtcERDID0gMDsK
ICAgICAgICAgfQorICAgICAgICBpZiAoU1VDQ0VFREVEKGhyKSAmJiAobGFzdEZhbGxiYWNrVHJp
ZWQgfHwgIWNvbnRhaW5zTWlzc2luZ0dseXBocyhzaGFwaW5nLCBydW4sIGZvbnRQcm9wZXJ0aWVz
KSAmJiBjYW5Vc2VHbHlwaEluZGV4KHJ1bikpKQorICAgICAgICAgICAgYnJlYWs7CiAKKyAgICAg
ICAgLy8gVGhlIGN1cnJlbnQgZm9udCBjYW4ndCByZW5kZXIgdGhpcyBydW4sIHRyeSBuZXh0IGZv
bnQuCiAgICAgICAgIGlmICghbV9kaXNhYmxlRm9udEZhbGxiYWNrICYmCiAgICAgICAgICAgICBu
ZXh0V2luRm9udERhdGEoJmhmb250LCAmc2NyaXB0Q2FjaGUsICZmb250UHJvcGVydGllcywgJmFz
Y2VudCkpIHsKICAgICAgICAgICAgIC8vIFRoZSBwcmltYXJ5IGZvbnQgZG9lcyBub3Qgc3VwcG9y
dCB0aGlzIHJ1bi4gVHJ5IG5leHQgZm9udC4KQEAgLTc4NiwxMCArNzg4LDcgQEAgYm9vbCBVbmlz
Y3JpYmVIZWxwZXI6OnNoYXBlKGNvbnN0IFVDaGFyKgogICAgIH0KICAgICBzaGFwaW5nLm1fYWR2
YW5jZS5yZXNpemUoZ2VuZXJhdGVkR2x5cGhzKTsKICAgICBzaGFwaW5nLm1fb2Zmc2V0cy5yZXNp
emUoZ2VuZXJhdGVkR2x5cGhzKTsKLSAgICBpZiAodGVtcERDKSB7Ci0gICAgICAgIFNlbGVjdE9i
amVjdCh0ZW1wREMsIG9sZEZvbnQpOwotICAgICAgICBSZWxlYXNlREMoMCwgdGVtcERDKTsKLSAg
ICB9CisKICAgICAvLyBPbiBmYWlsdXJlLCBvdXIgbG9ncyBkb24ndCBtZWFuIGFueXRoaW5nLCBz
byB6ZXJvIHRob3NlIG91dC4KICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgc2hhcGluZy5tX2xv
Z3MuY2xlYXIoKTsKQEAgLTc5Nyw2ICs3OTYsMjAgQEAgYm9vbCBVbmlzY3JpYmVIZWxwZXI6OnNo
YXBlKGNvbnN0IFVDaGFyKgogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK3ZvaWQgVW5pc2NyaWJl
SGVscGVyOjpFbnN1cmVDYWNoZWREQ0NyZWF0ZWQoKQoreworICAgIGlmIChtX2NhY2hlZERDKQor
ICAgICAgICByZXR1cm47CisgICAgLy8gQWxsb2NhdGUgYSBtZW1vcnkgREMgdGhhdCBpcyBjb21w
YXRpYmxlIHdpdGggdGhlIERlc2t0b3AgREMgc2luY2Ugd2UgZG9uJ3QgaGF2ZSBhbnkgd2luZG93
LAorICAgIC8vIGFuZCB3ZSBkb24ndCB3YW50IHRvIHVzZSB0aGUgRGVza3RvcCBEQyBkaXJlY3Rs
eSBzaW5jZSBpdCBjYW4gaGF2ZSBuYXN0eSBzaWRlIGVmZmVjdHMKKyAgICAvLyBhcyBpZGVudGlm
aWVkIGluIENocm9tZSBJc3N1ZSBodHRwOi8vY3JidWcuY29tLzU5MzE1LgorICAgIEhEQyBzY3Jl
ZW5EQyA9IDo6R2V0REMoMCk7CisgICAgbV9jYWNoZWREQyA9IDo6Q3JlYXRlQ29tcGF0aWJsZURD
KHNjcmVlbkRDKTsKKyAgICBBU1NFUlQobV9jYWNoZWREQyk7CisKKyAgICBpbnQgcmVzdWx0ID0g
OjpSZWxlYXNlREMoMCwgc2NyZWVuREMpOworICAgIEFTU0VSVChyZXN1bHQgPT0gMSk7Cit9CiB2
b2lkIFVuaXNjcmliZUhlbHBlcjo6ZmlsbFNoYXBlcygpCiB7CiAgICAgbV9zaGFwZXMucmVzaXpl
KG1fcnVucy5zaXplKCkpOwpAQCAtODM2LDMwICs4NDksMTUgQEAgdm9pZCBVbmlzY3JpYmVIZWxw
ZXI6OmZpbGxTaGFwZXMoKQogCiAgICAgICAgIC8vIENvbXB1dGUgcGxhY2VtZW50cy4gTm90ZSB0
aGF0IG9mZnNldHMgaXMgZG9jdW1lbnRlZCBpbmNvcnJlY3RseQogICAgICAgICAvLyBhbmQgaXMg
YWN0dWFsbHkgYW4gYXJyYXkuCi0KLSAgICAgICAgLy8gREMgdGhhdCB3ZSBsYXppbHkgY3JlYXRl
IGlmIFVuaXNjcmliZSBjb21tYW5kcyB1cyB0by4KLSAgICAgICAgLy8gKHRoaXMgZG9lcyBub3Qg
aGFwcGVuIG9mdGVuIGJlY2F1c2Ugc2NyaXB0Q2FjaGUgaXMgYWxyZWFkeQotICAgICAgICAvLyAg
dXBkYXRlZCB3aGVuIGNhbGxpbmcgU2NyaXB0U2hhcGUpLgotICAgICAgICBIREMgdGVtcERDID0g
MDsKLSAgICAgICAgSEdESU9CSiBvbGRGb250ID0gMDsKLSAgICAgICAgSFJFU1VMVCBocjsKLSAg
ICAgICAgd2hpbGUgKHRydWUpIHsKLSAgICAgICAgICAgIHNoYXBpbmcubV9wcmVQYWRkaW5nID0g
MDsKLSAgICAgICAgICAgIGhyID0gU2NyaXB0UGxhY2UodGVtcERDLCBzaGFwaW5nLm1fc2NyaXB0
Q2FjaGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzaGFwaW5nLm1fZ2x5cGhzWzBd
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnQ+KHNoYXBpbmcu
bV9nbHlwaHMuc2l6ZSgpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnNoYXBpbmcu
bV92aXN1YWxBdHRyaWJ1dGVzWzBdLCAmbV9ydW5zW2ldLmEsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICZzaGFwaW5nLm1fYWR2YW5jZVswXSwgJnNoYXBpbmcubV9vZmZzZXRzWzBdLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc2hhcGluZy5tX2FiYyk7Ci0gICAgICAgICAg
ICBpZiAoaHIgIT0gRV9QRU5ESU5HKQotICAgICAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAg
ICAgICAvLyBBbGxvY2F0ZSB0aGUgREMgYW5kIHJ1biB0aGUgbG9vcCBhZ2Fpbi4KLSAgICAgICAg
ICAgIHRlbXBEQyA9IEdldERDKDApOwotICAgICAgICAgICAgb2xkRm9udCA9IFNlbGVjdE9iamVj
dCh0ZW1wREMsIHNoYXBpbmcubV9oZm9udCk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoRkFJ
TEVEKGhyKSkgeworICAgICAgICBFbnN1cmVDYWNoZWREQ0NyZWF0ZWQoKTsKKyAgICAgICAgU2Vs
ZWN0T2JqZWN0KG1fY2FjaGVkREMsIHNoYXBpbmcubV9oZm9udCk7CisgICAgICAgIHNoYXBpbmcu
bV9wcmVQYWRkaW5nID0gMDsKKyAgICAgICAgaWYgKEZBSUxFRChTY3JpcHRQbGFjZShtX2NhY2hl
ZERDLCBzaGFwaW5nLm1fc2NyaXB0Q2FjaGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJnNoYXBpbmcubV9nbHlwaHNbMF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3RhdGljX2Nhc3Q8aW50PihzaGFwaW5nLm1fZ2x5cGhzLnNpemUoKSksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJnNoYXBpbmcubV92aXN1YWxBdHRyaWJ1dGVzWzBdLCAmbV9ydW5z
W2ldLmEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnNoYXBpbmcubV9hZHZhbmNl
WzBdLCAmc2hhcGluZy5tX29mZnNldHNbMF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJnNoYXBpbmcubV9hYmMpKSkgewogICAgICAgICAgICAgLy8gU29tZSBlcnJvciB3ZSBkb24n
dCBrbm93IGhvdyB0byBoYW5kbGUuIE51a2UgYWxsIG9mIG91ciBkYXRhCiAgICAgICAgICAgICAv
LyBzaW5jZSB3ZSBjYW4ndCBkZWFsIHdpdGggcGFydGlhbGx5IHZhbGlkIGRhdGEgbGF0ZXIuCiAg
ICAgICAgICAgICBtX3J1bnMuY2xlYXIoKTsKQEAgLTg2NywxMSArODY1LDYgQEAgdm9pZCBVbmlz
Y3JpYmVIZWxwZXI6OmZpbGxTaGFwZXMoKQogICAgICAgICAgICAgbV9zaGFwZXMuY2xlYXIoKTsK
ICAgICAgICAgICAgIG1fc2NyZWVuT3JkZXIuY2xlYXIoKTsKICAgICAgICAgfQotCi0gICAgICAg
IGlmICh0ZW1wREMpIHsKLSAgICAgICAgICAgIFNlbGVjdE9iamVjdCh0ZW1wREMsIG9sZEZvbnQp
OwotICAgICAgICAgICAgUmVsZWFzZURDKDAsIHRlbXBEQyk7Ci0gICAgICAgIH0KICAgICB9CiAK
ICAgICBhZGp1c3RTcGFjZUFkdmFuY2VzKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9VbmlzY3JpYmVIZWxwZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9VbmlzY3JpYmVIZWxwZXIuaAko
cmV2aXNpb24gMTAwOTc3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vVW5pc2NyaWJlSGVscGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDcgQEAK
ICNpbmNsdWRlIDx1bmljb2RlL3VjaGFyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCi1j
bGFzcyBVbmlzY3JpYmVUZXN0X1Rvb0JpZ19UZXN0OyAgLy8gQSBndW5pdCB0ZXN0IGZvciBVbmlz
Y3JpYmVIZWxwZXIuCitjbGFzcyBVbmlzY3JpYmVUZXN0X1Rvb0JpZ19UZXN0OyAvLyBBIGd1bml0
IHRlc3QgZm9yIFVuaXNjcmliZUhlbHBlci4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0z
ODAsNiArMzgwLDkgQEAgcHJpdmF0ZToKICAgICAvLyBOZXh0V2luRm9udERhdGEgc2NhbnMgZmFs
bGJhY2sgZm9udHMgZnJvbSB0aGUgYmVnaW5uaW5nLgogICAgIHZpcnR1YWwgdm9pZCByZXNldEZv
bnRJbmRleCgpIHt9CiAKKyAgICAvLyBJZiBtX2NhY2hlZERDIGlzIDAsIGNyZWF0ZXMgb25lIHRo
YXQgaXMgY29tcGF0aWJsZSB3aXRoIHRoZSBzY3JlZW4gREMuCisgICAgdm9pZCBFbnN1cmVDYWNo
ZWREQ0NyZWF0ZWQoKTsKKwogICAgIC8vIFRoZSBpbnB1dCBkYXRhIGZvciB0aGlzIHJ1biBvZiBV
bmlzY3JpYmUuIFNlZSB0aGUgY29uc3RydWN0b3IuCiAgICAgY29uc3QgVUNoYXIqIG1faW5wdXQ7
CiAgICAgY29uc3QgaW50IG1faW5wdXRMZW5ndGg7CkBAIC0zOTQsNiArMzk3LDggQEAgcHJpdmF0
ZToKICAgICAvLyBtX2hlaWdodCBhbmQgbV9zdHlsZSBpZiB0aGV5J3JlIGtub3duLiBHZXR0ZXJz
IGZvciB0aGVtIHdvdWxkIGhhdmUgdG8KICAgICAvLyAnaW5mZXInIHRoZWlyIHZhbHVlcyBmcm9t
IG1faGZvbnQgT05MWSB3aGVuIHRoZXkncmUgbm90IHNldC4KICAgICBIRk9OVCBtX2hmb250Owor
ICAgIC8vIFdlIGNhY2hlIHRoZSBEQyB0byB1c2Ugd2l0aCBTY3JpcHRTaGFwZS9TY3JpcHRQbGFj
ZS4KKyAgICBzdGF0aWMgSERDIG1fY2FjaGVkREM7CiAgICAgU0NSSVBUX0NBQ0hFKiBtX3Njcmlw
dENhY2hlOwogICAgIFNDUklQVF9GT05UUFJPUEVSVElFUyogbV9mb250UHJvcGVydGllczsKICAg
ICBpbnQgbV9hc2NlbnQ7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>