<?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>13490</bug_id>
          
          <creation_ts>2007-04-25 12:39:23 -0700</creation_ts>
          <short_desc>Implement execCommand(&quot;styleWithCSS&quot;, ...)</short_desc>
          <delta_ts>2009-02-07 09:30:23 -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>HTML Editing</component>
          <version>523.x (Safari 3)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>GoogleBug, InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexey Proskuryakov">ap</reporter>
          <assigned_to name="Justin Garcia">justin.garcia</assigned_to>
          <cc>danny.bloemendaal</cc>
    
    <cc>dpopa</cc>
    
    <cc>dwood</cc>
    
    <cc>fuck</cc>
    
    <cc>futurama</cc>
    
    <cc>grahamperrin</cc>
    
    <cc>jaap.lous</cc>
    
    <cc>jparent</cc>
    
    <cc>justin.garcia</cc>
    
    <cc>mike</cc>
    
    <cc>ojan</cc>
    
    <cc>ono</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>12470</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2007-04-25 12:39:23 -0700</bug_when>
    <thetext>From bug 12198 comment 1.

Consider implementing document.execCommand(&quot;styleWithCSS&quot;, false, bool) as in
Gecko. Depending on the boolean value, formatting commands should use tags or styled spans.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>64942</commentid>
    <comment_count>1</comment_count>
    <who name="Danny Bloemendaal">danny.bloemendaal</who>
    <bug_when>2007-12-21 04:04:20 -0800</bug_when>
    <thetext>I think that this support is absolutely vital for webkit to be used in cms environments that expect symantically correct content. Without this, webkit inserts spans instead of &lt;em&gt;s etc. Any postprocessing is impossible in this case to work around this omission.

Here you can see more information about this and other problems:

http://www.quirksmode.org/dom/execCommand.html
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>67086</commentid>
    <comment_count>2</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2008-01-12 19:11:31 -0800</bug_when>
    <thetext>&lt;rdar://problem/5685604&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>69088</commentid>
    <comment_count>3</comment_count>
    <who name="Justin Garcia">justin.garcia</who>
    <bug_when>2008-02-01 12:58:25 -0800</bug_when>
    <thetext>*** Bug 12321 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>69517</commentid>
    <comment_count>4</comment_count>
    <who name="Justin Garcia">justin.garcia</who>
    <bug_when>2008-02-05 14:49:54 -0800</bug_when>
    <thetext>(In reply to comment #1)
&gt; I think that this support is absolutely vital for webkit to be used in cms
&gt; environments that expect symantically correct content. Without this, webkit
&gt; inserts spans instead of &lt;em&gt;s etc.

You write that without this feature, Safari inserts spans &quot;instead of &lt;em&gt;s&quot;, but both the Quirksmode document that you sited and Mozillas documentation on styleWithCSS say that when styleWithCSS is off, Bold applies a &lt;b&gt; tag.  This is how FF behaves.  Is there a browser that inserts &lt;em&gt;s on Bold?

Justin</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>69602</commentid>
    <comment_count>5</comment_count>
      <attachid>18968</attachid>
    <who name="Justin Garcia">justin.garcia</who>
    <bug_when>2008-02-06 13:22:18 -0800</bug_when>
    <thetext>Created attachment 18968
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>69993</commentid>
    <comment_count>6</comment_count>
    <who name="Anders Jenbo">fuck</who>
    <bug_when>2008-02-09 22:52:19 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #1)
&gt; &gt; I think that this support is absolutely vital for webkit to be used in cms
&gt; &gt; environments that expect symantically correct content. Without this, webkit
&gt; &gt; inserts spans instead of &lt;em&gt;s etc.
&gt; You write that without this feature, Safari inserts spans &quot;instead of &lt;em&gt;s&quot;,
&gt; but both the Quirksmode document that you sited and Mozillas documentation on
&gt; styleWithCSS say that when styleWithCSS is off, Bold applies a &lt;b&gt; tag.  This
&gt; is how FF behaves.  Is there a browser that inserts &lt;em&gt;s on Bold?
&gt; Justin

No there is no browser that sees &lt;em&gt; as bold, but italic (&lt;em&gt;), underlined (&lt;u&gt;), strikethrew (&lt;strike&gt;), subscript (&lt;sub&gt;) and supperscript (&lt;sup&gt;) are also affected by this issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>69995</commentid>
    <comment_count>7</comment_count>
    <who name="Anders Jenbo">fuck</who>
    <bug_when>2008-02-09 23:21:17 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; Created an attachment (id=18968) [edit]
&gt; patch

I took a look at your patch and I just want to make something clear.
Semantically correct tagging helps Google prioritize a document and allows for better use of external style sheets to easily redesign a page, as well as hint screen readers to alter it&apos;s tone, this is why it is so important to use them instead of just using span and style on every thing.

Semantically correct tags are part of HTML 2-5 and XHTML 1-2 so it&apos;s not legacy, it&apos;s just not css.

&lt;font&gt; tag on the other hand is legacy as they are not semantical and are missing from XHTML and HTML 5.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>70374</commentid>
    <comment_count>8</comment_count>
    <who name="Adam Strzelecki">ono</who>
    <bug_when>2008-02-12 03:07:57 -0800</bug_when>
    <thetext>Any chance to have this done before 3.1, currently WebKit (Safari) is useless for CMS editing with WordPress, MODx, etc. just because it inserts Apple-style-span and lot of messy unstylable code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>70551</commentid>
    <comment_count>9</comment_count>
    <who name="Justin Garcia">justin.garcia</who>
    <bug_when>2008-02-13 11:38:39 -0800</bug_when>
    <thetext>&gt; Semantically correct tags are part of HTML 2-5 and XHTML 1-2 so it&apos;s not
&gt; legacy, it&apos;s just not css.

You&apos;re right.  I&apos;ll be taking another look at this bug soon.  Although, I must say, FF doesn&apos;t appear to behave in the way you describe (using &lt;em&gt;, &lt;strong&gt;, etc.).  Am I missing something?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>70560</commentid>
    <comment_count>10</comment_count>
    <who name="Dan POPA">dpopa</who>
    <bug_when>2008-02-13 13:49:24 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; &gt; Semantically correct tags are part of HTML 2-5 and XHTML 1-2 so it&apos;s not
&gt; &gt; legacy, it&apos;s just not css.
&gt; You&apos;re right.  I&apos;ll be taking another look at this bug soon.  Although, I must
&gt; say, FF doesn&apos;t appear to behave in the way you describe (using &lt;em&gt;, &lt;strong&gt;,
&gt; etc.).  Am I missing something?

FF uses B and I, IE uses STRONG and EM, both versions are valid in HTML 4.01 transitional and Strict, in XHTML 1.0 Transitional and Strict and also in HTML 5.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>70568</commentid>
    <comment_count>11</comment_count>
    <who name="Justin Garcia">justin.garcia</who>
    <bug_when>2008-02-13 14:30:37 -0800</bug_when>
    <thetext>&gt; FF uses B and I, IE uses STRONG and EM, both versions are valid in HTML 4.01
&gt; transitional and Strict, in XHTML 1.0 Transitional and Strict and also in HTML
&gt; 5.

But &lt;b&gt;, &lt;i&gt;, and &lt;font&gt;, which FF uses, are not semantical.  So I&apos;m curious as to why this issue is a showstopper for Safari but not FF.

Justin</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>70600</commentid>
    <comment_count>12</comment_count>
    <who name="Anders Jenbo">fuck</who>
    <bug_when>2008-02-13 22:32:38 -0800</bug_when>
    <thetext>&gt; But &lt;b&gt;, &lt;i&gt;, and &lt;font&gt;, which FF uses, are not semantical.  So I&apos;m curious as
&gt; to why this issue is a showstopper for Safari but not FF.
&gt; Justin

The difference between &lt;b&gt; and &lt;strong&gt;, is that &lt;b&gt; is highlighting with out making the word important.
As it is very hard to know if the users sees a word as &quot;should be highlighted&quot; or &quot;has importance&quot; and both provide roughly the same function and most software renders them the same, both are acceptable. It would be fine if Safari used either, but it uses a span with a style witch is as generic as it can get, and to provide any function the software would have to understand CSS and not just HTML.
That said I am in favor of &lt;strong&gt; as the users is likely to mark a word in bold because it has importance.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>70603</commentid>
    <comment_count>13</comment_count>
    <who name="Anders Jenbo">fuck</who>
    <bug_when>2008-02-13 22:53:08 -0800</bug_when>
    <thetext>p.s, IE and FF&apos;s use of &lt;font&gt; is an issue as it forces every thing they generate to use either XHTML 1.0 transitional or HTML 4 and it has no value over CSS. FF in CSS mode is just as much a show stopper as the current Safari implementation.

Opera has chosen to use &lt;strong&gt; and &lt;i&gt; and also uses &lt;font&gt;.

One benefit of &lt;font&gt; is that the content will be compatible with IE, but I would much rather see IE change there implementation to support CSS styling instead of &lt;font&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>90926</commentid>
    <comment_count>14</comment_count>
    <who name="Graham Perrin">grahamperrin</who>
    <bug_when>2008-09-12 07:37:03 -0700</bug_when>
    <thetext>I am referred to this bug 13490 in connection with 
http://dev.plone.org/plone/ticket/7446 and 
http://dev.plone.org/plone/ticket/8085 

In the context of Kupu, I have a sense that 
&lt;span class=&quot;Apple-style-span&quot;&gt; is most problematic. 

Please, how can we progress here? </thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>90933</commentid>
    <comment_count>15</comment_count>
    <who name="Julie Parent">jparent</who>
    <bug_when>2008-09-12 09:36:18 -0700</bug_when>
    <thetext>Just to chime in with a couple additional reasons why support for this command is important:

* The size of the html generated by contentEditable in Webkit is always much larger than that generated by IE or FF (with styleWithCSS false).  For large documents, there are a lot of bytes consisting of &quot;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: bold;&quot;&gt;&quot; that could be replaced with &quot;&lt;b&gt;&quot;.  These bytes really add up: for applications doing auto-save, this is a lot of extra network bandwidth being used up.  But even more practically, this slows down the initial load of a page that has html generated with Webkit since there are so many more bytes to download and parse.  So in a way, it does lead to a poorer user experience in Webkit based browsers.

* For rich text editing apps that need to work across different browsers (for instance for collaboration), having markup that is this different leads to a number of issues where the other browsers can&apos;t undo formatting created in Webkit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>97591</commentid>
    <comment_count>16</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2008-11-04 11:19:50 -0800</bug_when>
    <thetext>I&apos;d say we should use &lt;b&gt; and &lt;i&gt;, not &lt;strong&gt; and &lt;em&gt;. First of all this matches Firefox. Second, Bold and Italic are presentational commands, and it is appropriate to use presentational markup. If a user hit a button labeled [I] or hit Cmd-I, it would be wrong to infer that he meant to emphasize, since there are many other valid uses of italics. It whoudl be good to get this fix in since we have a patch that looks reasonable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>97629</commentid>
    <comment_count>17</comment_count>
    <who name="Anders Jenbo">fuck</who>
    <bug_when>2008-11-04 15:55:42 -0800</bug_when>
    <thetext>Sounds like a good idea.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>107306</commentid>
    <comment_count>18</comment_count>
    <who name="Danny Bloemendaal">danny.bloemendaal</who>
    <bug_when>2009-01-28 01:59:26 -0800</bug_when>
    <thetext>Is there any progress regarding this issue? It seems that webkit still creates horrible html in combination with content editors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>108149</commentid>
    <comment_count>19</comment_count>
      <attachid>27285</attachid>
    <who name="Justin Garcia">justin.garcia</who>
    <bug_when>2009-02-03 13:18:51 -0800</bug_when>
    <thetext>Created attachment 27285
patch

updated patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>108163</commentid>
    <comment_count>20</comment_count>
      <attachid>27285</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-02-03 14:02:32 -0800</bug_when>
    <thetext>Comment on attachment 27285
patch

&gt; +    if (value != &quot;false&quot; &amp;&amp; value != &quot;true&quot;)
&gt; +        return false;

Would be good to have test cases that involve strings like &quot;0&quot; and &quot;1&quot; and &quot;undefined&quot; to check how this compares with other browsers&apos; behavior.

&gt; +    void setStyleWithCSS(bool flag) { m_styleWithCSS = flag; }
&gt; +    bool styleWithCSS() const { return m_styleWithCSS; }

Maybe add &quot;should&quot; to this name?

&gt; +    if (position.node())
&gt; +        if (Document* document = position.node()-&gt;document())
&gt; +            m_usesLegacyFormattingTags = !document-&gt;frame()-&gt;editor()-&gt;styleWithCSS();

Should have braces around this.

&gt; -StyleChange::ELegacyHTMLStyles StyleChange::styleModeForParseMode(bool isQuirksMode)
&gt; -{
&gt; -    return isQuirksMode ? UseLegacyHTMLStyles : DoNotUseLegacyHTMLStyles;
&gt; -}

Do we want to preserve the non-quirks mode rule here? If so, then the style with CSS flag should default to true for non-quirks documents. We should at least have a test case for this.

I&apos;m going to say r=me for now, but it seems this is under-tested.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>108176</commentid>
    <comment_count>21</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2009-02-03 14:54:50 -0800</bug_when>
    <thetext>I don&apos;t think it makes sense to tie this to quirks vs standards modes. We can default this to true and match FF behavior or default it to false and match IE behavior (although IE doesn&apos;t have this command, so it&apos;s effectively always false there).

Either default seems fine to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>108189</commentid>
    <comment_count>22</comment_count>
    <who name="Justin Garcia">justin.garcia</who>
    <bug_when>2009-02-03 15:28:13 -0800</bug_when>
    <thetext>(In reply to comment #20)
&gt; (From update of attachment 27285 [review])
&gt; &gt; +    if (value != &quot;false&quot; &amp;&amp; value != &quot;true&quot;)
&gt; &gt; +        return false;
&gt; 
&gt; Would be good to have test cases that involve strings like &quot;0&quot; and &quot;1&quot; and
&gt; &quot;undefined&quot; to check how this compares with other browsers&apos; behavior.

FF seems to activate the feature for undefined, null, number values and strings other than &quot;false&quot;, as well as the boolean true.  Besides honoring &quot;true&quot; and &quot;false&quot;, which we already do, I&apos;m not sure that mimicking that behavior is that useful.


&gt; &gt; +    void setStyleWithCSS(bool flag) { m_styleWithCSS = flag; }
&gt; &gt; +    bool styleWithCSS() const { return m_styleWithCSS; }
&gt; 
&gt; Maybe add &quot;should&quot; to this name?

That sounds better, will fix.


&gt; &gt; +    if (position.node())
&gt; &gt; +        if (Document* document = position.node()-&gt;document())
&gt; &gt; +            m_usesLegacyFormattingTags = !document-&gt;frame()-&gt;editor()-&gt;styleWithCSS();
&gt; 
&gt; Should have braces around this.

OK.


&gt; &gt; -StyleChange::ELegacyHTMLStyles StyleChange::styleModeForParseMode(bool isQuirksMode)
&gt; &gt; -{
&gt; &gt; -    return isQuirksMode ? UseLegacyHTMLStyles : DoNotUseLegacyHTMLStyles;
&gt; &gt; -}
&gt; 
&gt; Do we want to preserve the non-quirks mode rule here? If so, then the style
&gt; with CSS flag should default to true for non-quirks documents. We should at
&gt; least have a test case for this.

Most of our big clients (Mail, GMail, Yahoo) appear to use documents in quirks mode by default, so I&apos;m not sure that preserving non-quirks mode behavior would be useful to that many people, especially since it sounds like most people don&apos;t want CSS styling.

Justin</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>108191</commentid>
    <comment_count>23</comment_count>
    <who name="Justin Garcia">justin.garcia</who>
    <bug_when>2009-02-03 15:31:29 -0800</bug_when>
    <thetext>(In reply to comment #21)
&gt; or default it to false and match IE behavior (although IE doesn&apos;t have this command, 
&gt; so it&apos;s effectively always false there).  Either default seems fine to me.

I think I want to match IE and default it to false, to make it easier to preserve behavior in Mail, which currently gets HTML formatting tags b/c they use a document in quirks mode.

Justin</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>108215</commentid>
    <comment_count>24</comment_count>
    <who name="Justin Garcia">justin.garcia</who>
    <bug_when>2009-02-03 17:19:21 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/40560</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>18968</attachid>
            <date>2008-02-06 13:22:18 -0800</date>
            <delta_ts>2009-02-03 13:18:51 -0800</delta_ts>
            <desc>patch</desc>
            <filename>5685604.txt</filename>
            <type>text/plain</type>
            <size>11677</size>
            <attacher name="Justin Garcia">justin.garcia</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzMDA0OCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjkgQEAKKzIwMDgtMDItMDYgIEp1c3RpbiBHYXJjaWEgIDxqdXN0aW4uZ2FyY2lh
QGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vNTY4NTYwND4gSW1wbGVtZW50IGV4ZWNDb21tYW5kKCJzdHls
ZVdpdGhDU1MiLCAuLi4pICgxMzQ5MCkKKworICAgICAgICAqIGVkaXRpbmcvQXBwbHlTdHlsZUNv
bW1hbmQuY3BwOiBSZW1vdmVkIGFuIHVudXNlZCBjb25zdHJ1Y3RvciBhbmQgZW51bS4KKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlQ2hhbmdlOjpTdHlsZUNoYW5nZSk6IENvbnN0cnVjdG9yIG5vIGxv
bmdlciB0YWtlcyBhIHVzZUxlZ2FjeVN0eWxlcyBmbGFnLAorICAgICAgICBzaW5jZSB0aGlzIGlz
IGRldGVybWluZWQgaW4gU3R5bGVDaGFuZ2U6OmluaXQoKS4KKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlQ2hhbmdlOjppbml0KTogU2V0IG1fdXNlTGVnYWN5U3R5bGVzIGZsYWcuICBJdCBubyBsb25n
ZXIgZGVwZW5kcworICAgICAgICBvbiB0aGUgRE9DVFlQRSwgdG8gbWF0Y2ggRmlyZWZveC4KKyAg
ICAgICAgKFdlYkNvcmU6OkFwcGx5U3R5bGVDb21tYW5kOjphcHBseUJsb2NrU3R5bGUpOiBVc2Ug
dGhlIG5ldyBTdHlsZUNoYW5nZSBjb250cnVjdG9yLgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlT
dHlsZUNvbW1hbmQ6OmFwcGx5VGV4dERlY29yYXRpb25TdHlsZSk6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6QXBwbHlTdHlsZUNvbW1hbmQ6OmFkZElubGluZVN0eWxlSWZOZWVkZWQpOiBEaXR0
by4KKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0
b3I6OkVkaXRvcik6IFNldCBtX3N0eWxlV2l0aENTUyB0byB0cnVlIGJ5IGRlZmF1bHQuCisgICAg
ICAgIChXZWJDb3JlOjpFZGl0b3I6OmNsZWFyKTogUmVzZXQgbV9zdHlsZVdpdGhDU1MuCisgICAg
ICAgICogZWRpdGluZy9FZGl0b3IuaDogQWRkIG1fc3R5bGVXaXRoQ1NTLgorICAgICAgICAoV2Vi
Q29yZTo6RWRpdG9yOjpzZXRTdHlsZVdpdGhDU1MpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkVkaXRvcjo6c3R5bGVXaXRoQ1NTKTogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9FZGl0b3JD
b21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVTdHlsZVdpdGhDU1MpOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OnN0YXRlU3R5bGVXaXRoQ1NTKTogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpDb21tYW5kRW50cnk6Oik6CisKIDIwMDgtMDItMDYgIERhcmluIEFkbGVyICA8
ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFRpbSBIYXRjaGVyLgpJbmRl
eDogV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcAkocmV2aXNpb24gMzAwMzcpCisrKyBXZWJDb3Jl
L2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg2OCw2ICs4Njgs
MTUgQEAKICAgICByZXR1cm4gZXhlY3V0ZVRvZ2dsZVN0eWxlKGZyYW1lLCBzb3VyY2UsIEVkaXRB
Y3Rpb25DaGFuZ2VBdHRyaWJ1dGVzLCBDU1NfUFJPUF9fV0VCS0lUX1RFWFRfREVDT1JBVElPTlNf
SU5fRUZGRUNULCAibm9uZSIsICJsaW5lLXRocm91Z2giKTsKIH0KIAorc3RhdGljIGJvb2wgZXhl
Y3V0ZVN0eWxlV2l0aENTUyhGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJj
ZSBzb3VyY2UsIGNvbnN0IFN0cmluZyYgdmFsdWUpCit7CisgICAgaWYgKHZhbHVlICE9ICJmYWxz
ZSIgJiYgdmFsdWUgIT0gInRydWUiKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAg
ZnJhbWUtPmVkaXRvcigpLT5zZXRTdHlsZVdpdGhDU1ModmFsdWUgPT0gInRydWUiID8gdHJ1ZSA6
IGZhbHNlKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogc3RhdGljIGJvb2wgZXhlY3V0ZVN1YnNj
cmlwdChGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSBzb3VyY2UsIGNv
bnN0IFN0cmluZyYpCiB7CiAgICAgcmV0dXJuIGV4ZWN1dGVBcHBseVN0eWxlKGZyYW1lLCBzb3Vy
Y2UsIEVkaXRBY3Rpb25TdWJzY3JpcHQsIENTU19QUk9QX1ZFUlRJQ0FMX0FMSUdOLCAic3ViIik7
CkBAIC0xMDg4LDYgKzEwOTcsMTEgQEAKICAgICByZXR1cm4gc3RhdGVTdHlsZShmcmFtZSwgQ1NT
X1BST1BfVEVYVF9ERUNPUkFUSU9OLCAibGluZS10aHJvdWdoIik7CiB9CiAKK3N0YXRpYyBUcmlT
dGF0ZSBzdGF0ZVN0eWxlV2l0aENTUyhGcmFtZSogZnJhbWUsIEV2ZW50KikKK3sKKyAgICByZXR1
cm4gZnJhbWUtPmVkaXRvcigpLT5zdHlsZVdpdGhDU1MoKSA/IFRydWVUcmlTdGF0ZSA6IEZhbHNl
VHJpU3RhdGU7Cit9CisKIHN0YXRpYyBUcmlTdGF0ZSBzdGF0ZVN1YnNjcmlwdChGcmFtZSogZnJh
bWUsIEV2ZW50KikKIHsKICAgICByZXR1cm4gc3RhdGVTdHlsZShmcmFtZSwgQ1NTX1BST1BfVkVS
VElDQUxfQUxJR04sICJzdWIiKTsKQEAgLTEyNTEsNiArMTI2NSw3IEBACiAgICAgICAgIHsgIlNl
bGVjdFdvcmQiLCB7IGV4ZWN1dGVTZWxlY3RXb3JkLCBzdXBwb3J0ZWRGcm9tTWVudU9yS2V5Qmlu
ZGluZywgZW5hYmxlZEluRWRpdGFibGVUZXh0LCBzdGF0ZU5vbmUsIHZhbHVlTnVsbCwgbm90VGV4
dEluc2VydGlvbiB9IH0sCiAgICAgICAgIHsgIlNldE1hcmsiLCB7IGV4ZWN1dGVTZXRNYXJrLCBz
dXBwb3J0ZWRGcm9tTWVudU9yS2V5QmluZGluZywgZW5hYmxlZEFueVNlbGVjdGlvbiwgc3RhdGVO
b25lLCB2YWx1ZU51bGwsIG5vdFRleHRJbnNlcnRpb24gfSB9LAogICAgICAgICB7ICJTdHJpa2V0
aHJvdWdoIiwgeyBleGVjdXRlU3RyaWtldGhyb3VnaCwgc3VwcG9ydGVkLCBlbmFibGVkSW5SaWNo
bHlFZGl0YWJsZVRleHQsIHN0YXRlU3RyaWtldGhyb3VnaCwgdmFsdWVOdWxsLCBub3RUZXh0SW5z
ZXJ0aW9uIH0gfSwKKyAgICAgICAgeyAiU3R5bGVXaXRoQ1NTIiwgeyBleGVjdXRlU3R5bGVXaXRo
Q1NTLCBzdXBwb3J0ZWQsIGVuYWJsZWRJblJpY2hseUVkaXRhYmxlVGV4dCwgc3RhdGVTdHlsZVdp
dGhDU1MsIHZhbHVlTnVsbCwgbm90VGV4dEluc2VydGlvbiB9IH0sCiAgICAgICAgIHsgIlN1YnNj
cmlwdCIsIHsgZXhlY3V0ZVN1YnNjcmlwdCwgc3VwcG9ydGVkLCBlbmFibGVkSW5SaWNobHlFZGl0
YWJsZVRleHQsIHN0YXRlU3Vic2NyaXB0LCB2YWx1ZU51bGwsIG5vdFRleHRJbnNlcnRpb24gfSB9
LAogICAgICAgICB7ICJTdXBlcnNjcmlwdCIsIHsgZXhlY3V0ZVN1cGVyc2NyaXB0LCBzdXBwb3J0
ZWQsIGVuYWJsZWRJblJpY2hseUVkaXRhYmxlVGV4dCwgc3RhdGVTdXBlcnNjcmlwdCwgdmFsdWVO
dWxsLCBub3RUZXh0SW5zZXJ0aW9uIH0gfSwKICAgICAgICAgeyAiU3dhcFdpdGhNYXJrIiwgeyBl
eGVjdXRlU3dhcFdpdGhNYXJrLCBzdXBwb3J0ZWRGcm9tTWVudU9yS2V5QmluZGluZywgZW5hYmxl
ZEFueVNlbGVjdGlvbkFuZE1hcmssIHN0YXRlTm9uZSwgdmFsdWVOdWxsLCBub3RUZXh0SW5zZXJ0
aW9uIH0gfSwKSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCShyZXZpc2lvbiAzMDAzNykKKysrIFdlYkNvcmUv
ZWRpdGluZy9FZGl0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MjgsNiArODI4LDcgQEAKICAg
ICAsIG1fZGVsZXRlQnV0dG9uQ29udHJvbGxlcihuZXcgRGVsZXRlQnV0dG9uQ29udHJvbGxlcihm
cmFtZSkpCiAgICAgLCBtX2lnbm9yZUNvbXBvc2l0aW9uU2VsZWN0aW9uQ2hhbmdlKGZhbHNlKQog
ICAgICwgbV9zaG91bGRTdGFydE5ld0tpbGxSaW5nU2VxdWVuY2UoZmFsc2UpCisgICAgLCBtX3N0
eWxlV2l0aENTUyh0cnVlKQogeyAKIH0KIApAQCAtODM5LDYgKzg0MCw3IEBACiB7CiAgICAgbV9j
b21wb3NpdGlvbk5vZGUgPSAwOwogICAgIG1fY3VzdG9tQ29tcG9zaXRpb25VbmRlcmxpbmVzLmNs
ZWFyKCk7CisgICAgbV9zdHlsZVdpdGhDU1MgPSB0cnVlOwogfQogCiBib29sIEVkaXRvcjo6aW5z
ZXJ0VGV4dChjb25zdCBTdHJpbmcmIHRleHQsIEV2ZW50KiB0cmlnZ2VyaW5nRXZlbnQpCkluZGV4
OiBXZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5n
L0VkaXRvci5oCShyZXZpc2lvbiAzMDAzNykKKysrIFdlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAko
d29ya2luZyBjb3B5KQpAQCAtMTYxLDYgKzE2MSw5IEBACiAgICAgYm9vbCBzZWxlY3Rpb25TdGFy
dEhhc1N0eWxlKENTU1N0eWxlRGVjbGFyYXRpb24qKSBjb25zdDsKIAogICAgIGJvb2wgY2xpZW50
SXNFZGl0YWJsZSgpIGNvbnN0OworICAgIAorICAgIHZvaWQgc2V0U3R5bGVXaXRoQ1NTKGJvb2wg
ZmxhZykgeyBtX3N0eWxlV2l0aENTUyA9IGZsYWc7IH0KKyAgICBib29sIHN0eWxlV2l0aENTUygp
IGNvbnN0IHsgcmV0dXJuIG1fc3R5bGVXaXRoQ1NTOyB9CiAKICAgICBjbGFzcyBDb21tYW5kIHsK
ICAgICBwdWJsaWM6CkBAIC0yODEsNiArMjg0LDcgQEAKICAgICBWZWN0b3I8Q29tcG9zaXRpb25V
bmRlcmxpbmU+IG1fY3VzdG9tQ29tcG9zaXRpb25VbmRlcmxpbmVzOwogICAgIGJvb2wgbV9pZ25v
cmVDb21wb3NpdGlvblNlbGVjdGlvbkNoYW5nZTsKICAgICBib29sIG1fc2hvdWxkU3RhcnROZXdL
aWxsUmluZ1NlcXVlbmNlOworICAgIGJvb2wgbV9zdHlsZVdpdGhDU1M7CiAKICAgICBib29sIGNh
bkRlbGV0ZVJhbmdlKFJhbmdlKikgY29uc3Q7CiAgICAgYm9vbCBjYW5TbWFydFJlcGxhY2VXaXRo
UGFzdGVib2FyZChQYXN0ZWJvYXJkKik7CkluZGV4OiBXZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHls
ZUNvbW1hbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29t
bWFuZC5jcHAJKHJldmlzaW9uIDMwMDM3KQorKysgV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVD
b21tYW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsOCBAQAogI2luY2x1ZGUgIkNT
U1Byb3BlcnR5LmgiCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgogI2luY2x1ZGUgIkRv
Y3VtZW50LmgiCisjaW5jbHVkZSAiRWRpdG9yLmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNs
dWRlICJIVE1MRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxJbnRlcmNoYW5nZS5oIgogI2luY2x1
ZGUgIkhUTUxOYW1lcy5oIgpAQCAtNDgsMTMgKzUwLDggQEAKIAogY2xhc3MgU3R5bGVDaGFuZ2Ug
ewogcHVibGljOgotICAgIGVudW0gRUxlZ2FjeUhUTUxTdHlsZXMgeyBEb05vdFVzZUxlZ2FjeUhU
TUxTdHlsZXMsIFVzZUxlZ2FjeUhUTUxTdHlsZXMgfTsKKyAgICBTdHlsZUNoYW5nZShDU1NTdHls
ZURlY2xhcmF0aW9uKiwgY29uc3QgUG9zaXRpb24mKTsKIAotICAgIGV4cGxpY2l0IFN0eWxlQ2hh
bmdlKENTU1N0eWxlRGVjbGFyYXRpb24gKiwgRUxlZ2FjeUhUTUxTdHlsZXMgdXNlc0xlZ2FjeVN0
eWxlcz1Vc2VMZWdhY3lIVE1MU3R5bGVzKTsKLSAgICBTdHlsZUNoYW5nZShDU1NTdHlsZURlY2xh
cmF0aW9uICosIGNvbnN0IFBvc2l0aW9uICYsIEVMZWdhY3lIVE1MU3R5bGVzIHVzZXNMZWdhY3lT
dHlsZXM9VXNlTGVnYWN5SFRNTFN0eWxlcyk7Ci0KLSAgICBzdGF0aWMgRUxlZ2FjeUhUTUxTdHls
ZXMgc3R5bGVNb2RlRm9yUGFyc2VNb2RlKGJvb2wpOwotCiAgICAgU3RyaW5nIGNzc1N0eWxlKCkg
Y29uc3QgeyByZXR1cm4gbV9jc3NTdHlsZTsgfQogICAgIGJvb2wgYXBwbHlCb2xkKCkgY29uc3Qg
eyByZXR1cm4gbV9hcHBseUJvbGQ7IH0KICAgICBib29sIGFwcGx5SXRhbGljKCkgY29uc3QgeyBy
ZXR1cm4gbV9hcHBseUl0YWxpYzsgfQpAQCAtODMsMjEgKzgwLDE4IEBACiB9OwogCiAKLQotU3R5
bGVDaGFuZ2U6OlN0eWxlQ2hhbmdlKENTU1N0eWxlRGVjbGFyYXRpb24gKnN0eWxlLCBFTGVnYWN5
SFRNTFN0eWxlcyB1c2VzTGVnYWN5U3R5bGVzKQotICAgIDogbV9hcHBseUJvbGQoZmFsc2UpLCBt
X2FwcGx5SXRhbGljKGZhbHNlKSwgbV91c2VzTGVnYWN5U3R5bGVzKHVzZXNMZWdhY3lTdHlsZXMp
CitTdHlsZUNoYW5nZTo6U3R5bGVDaGFuZ2UoQ1NTU3R5bGVEZWNsYXJhdGlvbiAqc3R5bGUsIGNv
bnN0IFBvc2l0aW9uICZwb3NpdGlvbikKKyAgICA6IG1fYXBwbHlCb2xkKGZhbHNlKSwgbV9hcHBs
eUl0YWxpYyhmYWxzZSksIG1fdXNlc0xlZ2FjeVN0eWxlcyhmYWxzZSkKIHsKLSAgICBpbml0KHN0
eWxlLCBQb3NpdGlvbigpKTsKLX0KLQotU3R5bGVDaGFuZ2U6OlN0eWxlQ2hhbmdlKENTU1N0eWxl
RGVjbGFyYXRpb24gKnN0eWxlLCBjb25zdCBQb3NpdGlvbiAmcG9zaXRpb24sIEVMZWdhY3lIVE1M
U3R5bGVzIHVzZXNMZWdhY3lTdHlsZXMpCi0gICAgOiBtX2FwcGx5Qm9sZChmYWxzZSksIG1fYXBw
bHlJdGFsaWMoZmFsc2UpLCBtX3VzZXNMZWdhY3lTdHlsZXModXNlc0xlZ2FjeVN0eWxlcykKLXsK
ICAgICBpbml0KHN0eWxlLCBwb3NpdGlvbik7CiB9CiAKLXZvaWQgU3R5bGVDaGFuZ2U6OmluaXQo
UGFzc1JlZlB0cjxDU1NTdHlsZURlY2xhcmF0aW9uPiBzdHlsZSwgY29uc3QgUG9zaXRpb24gJnBv
c2l0aW9uKQordm9pZCBTdHlsZUNoYW5nZTo6aW5pdChQYXNzUmVmUHRyPENTU1N0eWxlRGVjbGFy
YXRpb24+IHN0eWxlLCBjb25zdCBQb3NpdGlvbiYgcG9zaXRpb24pCiB7CisgICAgaWYgKHBvc2l0
aW9uLm5vZGUoKSkKKyAgICAgICAgaWYgKERvY3VtZW50KiBkb2N1bWVudCA9IHBvc2l0aW9uLm5v
ZGUoKS0+ZG9jdW1lbnQoKSkKKyAgICAgICAgICAgIG1fdXNlc0xlZ2FjeVN0eWxlcyA9ICFkb2N1
bWVudC0+ZnJhbWUoKS0+ZWRpdG9yKCktPnN0eWxlV2l0aENTUygpOworICAgIAogICAgIFJlZlB0
cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gbXV0YWJsZVN0eWxlID0gc3R5bGUtPm1ha2VN
dXRhYmxlKCk7CiAgICAgCiAgICAgU3RyaW5nIHN0eWxlVGV4dCgiIik7CkBAIC0xMzMsMTEgKzEy
Nyw2IEBACiAgICAgbV9jc3NTdHlsZSA9IHN0eWxlVGV4dC5zdHJpcFdoaXRlU3BhY2UoKTsKIH0K
IAotU3R5bGVDaGFuZ2U6OkVMZWdhY3lIVE1MU3R5bGVzIFN0eWxlQ2hhbmdlOjpzdHlsZU1vZGVG
b3JQYXJzZU1vZGUoYm9vbCBpc1F1aXJrc01vZGUpCi17Ci0gICAgcmV0dXJuIGlzUXVpcmtzTW9k
ZSA/IFVzZUxlZ2FjeUhUTUxTdHlsZXMgOiBEb05vdFVzZUxlZ2FjeUhUTUxTdHlsZXM7Ci19Ci0K
IGJvb2wgU3R5bGVDaGFuZ2U6OmNoZWNrRm9yTGVnYWN5SFRNTFN0eWxlQ2hhbmdlKGNvbnN0IENT
U1Byb3BlcnR5ICpwcm9wZXJ0eSkKIHsKICAgICBpZiAoIXByb3BlcnR5IHx8ICFwcm9wZXJ0eS0+
dmFsdWUoKSkgewpAQCAtMzk2LDcgKzM4NSw3IEBACiAgICAgVmlzaWJsZVBvc2l0aW9uIG5leHRQ
YXJhZ3JhcGhTdGFydChlbmRPZlBhcmFncmFwaChwYXJhZ3JhcGhTdGFydCkubmV4dCgpKTsKICAg
ICBWaXNpYmxlUG9zaXRpb24gYmV5b25kRW5kKGVuZE9mUGFyYWdyYXBoKHZpc2libGVFbmQpLm5l
eHQoKSk7CiAgICAgd2hpbGUgKHBhcmFncmFwaFN0YXJ0LmlzTm90TnVsbCgpICYmIHBhcmFncmFw
aFN0YXJ0ICE9IGJleW9uZEVuZCkgewotICAgICAgICBTdHlsZUNoYW5nZSBzdHlsZUNoYW5nZShz
dHlsZSwgcGFyYWdyYXBoU3RhcnQuZGVlcEVxdWl2YWxlbnQoKSwgU3R5bGVDaGFuZ2U6OnN0eWxl
TW9kZUZvclBhcnNlTW9kZShkb2N1bWVudCgpLT5pbkNvbXBhdE1vZGUoKSkpOworICAgICAgICBT
dHlsZUNoYW5nZSBzdHlsZUNoYW5nZShzdHlsZSwgcGFyYWdyYXBoU3RhcnQuZGVlcEVxdWl2YWxl
bnQoKSk7CiAgICAgICAgIGlmIChzdHlsZUNoYW5nZS5jc3NTdHlsZSgpLmxlbmd0aCgpID4gMCB8
fCBtX3JlbW92ZU9ubHkpIHsKICAgICAgICAgICAgIE5vZGUqIGJsb2NrID0gZW5jbG9zaW5nQmxv
Y2socGFyYWdyYXBoU3RhcnQuZGVlcEVxdWl2YWxlbnQoKS5ub2RlKCkpOwogICAgICAgICAgICAg
Tm9kZSogbmV3QmxvY2sgPSBtb3ZlUGFyYWdyYXBoQ29udGVudHNUb05ld0Jsb2NrSWZOZWNlc3Nh
cnkocGFyYWdyYXBoU3RhcnQuZGVlcEVxdWl2YWxlbnQoKSk7CkBAIC04ODYsNyArODc1LDcgQEAK
IAogICAgIEhUTUxFbGVtZW50ICplbGVtZW50ID0gc3RhdGljX2Nhc3Q8SFRNTEVsZW1lbnQgKj4o
bm9kZSk7CiAgICAgICAgIAotICAgIFN0eWxlQ2hhbmdlIHN0eWxlQ2hhbmdlKHN0eWxlLCBQb3Np
dGlvbihlbGVtZW50LCAwKSwgU3R5bGVDaGFuZ2U6OnN0eWxlTW9kZUZvclBhcnNlTW9kZShkb2N1
bWVudCgpLT5pbkNvbXBhdE1vZGUoKSkpOworICAgIFN0eWxlQ2hhbmdlIHN0eWxlQ2hhbmdlKHN0
eWxlLCBQb3NpdGlvbihlbGVtZW50LCAwKSk7CiAgICAgaWYgKHN0eWxlQ2hhbmdlLmNzc1N0eWxl
KCkubGVuZ3RoKCkgPiAwKSB7CiAgICAgICAgIFN0cmluZyBjc3NUZXh0ID0gc3R5bGVDaGFuZ2Uu
Y3NzU3R5bGUoKTsKICAgICAgICAgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24gKmRlY2wgPSBl
bGVtZW50LT5pbmxpbmVTdHlsZURlY2woKTsKQEAgLTEyNTEsNyArMTI0MCw3IEBACiAgICAgaWYg
KG1fcmVtb3ZlT25seSkKICAgICAgICAgcmV0dXJuOwogICAgICAgICAKLSAgICBTdHlsZUNoYW5n
ZSBzdHlsZUNoYW5nZShzdHlsZSwgUG9zaXRpb24oc3RhcnROb2RlLCAwKSwgU3R5bGVDaGFuZ2U6
OnN0eWxlTW9kZUZvclBhcnNlTW9kZShkb2N1bWVudCgpLT5pbkNvbXBhdE1vZGUoKSkpOworICAg
IFN0eWxlQ2hhbmdlIHN0eWxlQ2hhbmdlKHN0eWxlLCBQb3NpdGlvbihzdGFydE5vZGUsIDApKTsK
ICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICAKICAgICAvLwpJbmRleDogTGF5b3V0VGVz
dHMvZWRpdGluZy9leGVjQ29tbWFuZC81Njg1NjA0LTEtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvNTY4NTYwNC0xLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvNTY4NTYw
NC0xLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyIEBACitTdWNjZXNzLiBl
eGVjQ29tbWFuZCgic3R5bGVXaXRoQ1NTIiwgLi4uKSBpcyBzdXBwb3J0ZWQuCitTdWNjZXNzLiBD
U1Mgd2FzIHVzZWQgZm9yIHN0eWxpbmcgYnkgZGVmYXVsdCwgYW5kIGV4ZWNDb21tYW5kKCJzdHls
ZVdpdGhDU1MiLCAuLi4sIGZhbHNlKSBhY3RpdmF0ZWQgdGhlIHVzZSBvZiBsZWdhY3kgdGFncy4K
SW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvNTY4NTYwNC0xLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC81Njg1NjA0LTEuaHRt
bAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvNTY4NTYw
NC0xLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzggQEAKKzxib2R5PgorPHA+VGhpcyB0
ZXN0cyB0byBtYWtlIHN1cmUgdGhhdCBleGVjQ29tbWFuZCgic3R5bGVXaXRoQ1NTIiwgLi4uKSBp
cyBzdXBwb3J0ZWQgYW5kIHR1cm5zIG9uIHRoZSB1c2Ugb2YgbGVnYWN5IHRhZ3MgaW4gbGV1IG9m
IENTUy1zdHlsZWQgc3BhbnMgZm9yIGZvcm1hdHRpbmcgY2hhbmdlcy48L3A+Cis8ZGl2IGNvbnRl
bnRlZGl0YWJsZT0idHJ1ZSIgaWQ9ImRpdiI+VGhlIHNlY29uZCBhbmQgbGFzdCB3b3JkcyBpbiB0
aGlzIHNlbnRlbmNlIHNob3VsZCBiZSBib2xkLjwvZGl2PgorPHVsIGlkPSJjb25zb2xlIj48L3Vs
PgorPHNjcmlwdD4KK2Z1bmN0aW9uIGxvZyhtc2cpIHsKKyAgICBjb25zb2xlID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKTsKKyAgICB0ZXh0ID0gZG9jdW1lbnQuY3JlYXRlVGV4
dE5vZGUobXNnKTsKKyAgICBsaSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxpIik7CisgICAg
Y29uc29sZS5hcHBlbmRDaGlsZChsaSk7CisgICAgbGkuYXBwZW5kQ2hpbGQodGV4dCk7Cit9City
ID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKK2RpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJkaXYiKTsKK3RleHQgPSBkaXYuZmlyc3RDaGlsZDsKK3dpbmRvdy5nZXRTZWxlY3Rpb24oKS5z
ZXRCYXNlQW5kRXh0ZW50KHRleHQsIDQsIHRleHQsIDEwKTsKK2RvY3VtZW50LmV4ZWNDb21tYW5k
KCJib2xkIiwgZmFsc2UsICIiKTsKK3dpbmRvdy5nZXRTZWxlY3Rpb24oKS5zZXRCYXNlQW5kRXh0
ZW50KHRleHQsIHRleHQubGVuZ3RoIC0gNSwgdGV4dCwgdGV4dC5sZW5ndGggLSAxKTsKKworaWYg
KGRvY3VtZW50LnF1ZXJ5Q29tbWFuZFN1cHBvcnRlZCgic3R5bGVXaXRoQ1NTIikpCisgICAgbG9n
KCJTdWNjZXNzLiBleGVjQ29tbWFuZChcInN0eWxlV2l0aENTU1wiLCAuLi4pIGlzIHN1cHBvcnRl
ZC4iKTsKK2Vsc2UKKyAgICBsb2coIkZhaWx1cmUuIGV4ZWNDb21tYW5kKFwic3R5bGVXaXRoQ1NT
XCIsIC4uLikgaXMgbm90IHN1cHBvcnRlZC4iKTsKKyAgICAKK2RvY3VtZW50LmV4ZWNDb21tYW5k
KCJzdHlsZVdpdGhDU1MiLCBmYWxzZSwgZmFsc2UpOworZG9jdW1lbnQuZXhlY0NvbW1hbmQoImJv
bGQiLCBmYWxzZSwgIiIpOworCitpZiAoZGl2LmlubmVySFRNTCA9PSAiVGhlIDxzcGFuIGNsYXNz
PVwiQXBwbGUtc3R5bGUtc3BhblwiIHN0eWxlPVwiZm9udC13ZWlnaHQ6IGJvbGQ7XCI+c2Vjb25k
PC9zcGFuPiBhbmQgbGFzdCB3b3JkcyBpbiB0aGlzIHNlbnRlbmNlIHNob3VsZCBiZSA8Yj5ib2xk
PC9iPi4iKQorICAgIGxvZygiU3VjY2Vzcy4gQ1NTIHdhcyB1c2VkIGZvciBzdHlsaW5nIGJ5IGRl
ZmF1bHQsIGFuZCBleGVjQ29tbWFuZChcInN0eWxlV2l0aENTU1wiLCAuLi4sIGZhbHNlKSBhY3Rp
dmF0ZWQgdGhlIHVzZSBvZiBsZWdhY3kgdGFncy4iKTsKK2Vsc2UKKyAgICBsb2coIkZhaWx1cmUu
IEV4cGVjdGVkOiBUaGUgPHNwYW4gY2xhc3M9XCJBcHBsZS1zdHlsZS1zcGFuXCIgc3R5bGU9XCJm
b250LXdlaWdodDogYm9sZDtcIj5zZWNvbmQ8L3NwYW4+IGFuZCBsYXN0IHdvcmRzIGluIHRoaXMg
c2VudGVuY2Ugc2hvdWxkIGJlIDxiPmJvbGQ8L2I+LiIpOworCitpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKSB7CisgICAgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1Rl
eHQoKTsKKyAgICBkb2N1bWVudC5ib2R5LmlubmVyVGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJjb25zb2xlIikuaW5uZXJUZXh0OworfQorPC9zY3JpcHQ+Cis8L2JvZHk+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>27285</attachid>
            <date>2009-02-03 13:18:51 -0800</date>
            <delta_ts>2009-02-03 14:02:32 -0800</delta_ts>
            <desc>patch</desc>
            <filename>css.txt</filename>
            <type>text/plain</type>
            <size>12891</size>
            <attacher name="Justin Garcia">justin.garcia</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAJKHJldmlzaW9uIDQwNDMxKQorKysgV2Vi
Q29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MTQsNiAr
OTE0LDE1IEBACiAgICAgcmV0dXJuIGV4ZWN1dGVUb2dnbGVTdHlsZShmcmFtZSwgc291cmNlLCBF
ZGl0QWN0aW9uQ2hhbmdlQXR0cmlidXRlcywgQ1NTUHJvcGVydHlXZWJraXRUZXh0RGVjb3JhdGlv
bnNJbkVmZmVjdCwgIm5vbmUiLCAibGluZS10aHJvdWdoIik7CiB9CiAKK3N0YXRpYyBib29sIGV4
ZWN1dGVTdHlsZVdpdGhDU1MoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3Vy
Y2UsIGNvbnN0IFN0cmluZyYgdmFsdWUpCit7CisgICAgaWYgKHZhbHVlICE9ICJmYWxzZSIgJiYg
dmFsdWUgIT0gInRydWUiKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgZnJhbWUt
PmVkaXRvcigpLT5zZXRTdHlsZVdpdGhDU1ModmFsdWUgPT0gInRydWUiID8gdHJ1ZSA6IGZhbHNl
KTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogc3RhdGljIGJvb2wgZXhlY3V0ZVN1YnNjcmlwdChG
cmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSBzb3VyY2UsIGNvbnN0IFN0
cmluZyYpCiB7CiAgICAgcmV0dXJuIGV4ZWN1dGVUb2dnbGVTdHlsZShmcmFtZSwgc291cmNlLCBF
ZGl0QWN0aW9uU3Vic2NyaXB0LCBDU1NQcm9wZXJ0eVZlcnRpY2FsQWxpZ24sICJiYXNlbGluZSIs
ICJzdWIiKTsKQEAgLTExMzgsNiArMTE0NywxMSBAQAogICAgIHJldHVybiBzdGF0ZVN0eWxlKGZy
YW1lLCBDU1NQcm9wZXJ0eVRleHREZWNvcmF0aW9uLCAibGluZS10aHJvdWdoIik7CiB9CiAKK3N0
YXRpYyBUcmlTdGF0ZSBzdGF0ZVN0eWxlV2l0aENTUyhGcmFtZSogZnJhbWUsIEV2ZW50KikKK3sK
KyAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLT5zdHlsZVdpdGhDU1MoKSA/IFRydWVUcmlTdGF0
ZSA6IEZhbHNlVHJpU3RhdGU7Cit9CisKIHN0YXRpYyBUcmlTdGF0ZSBzdGF0ZVN1YnNjcmlwdChG
cmFtZSogZnJhbWUsIEV2ZW50KikKIHsKICAgICByZXR1cm4gc3RhdGVTdHlsZShmcmFtZSwgQ1NT
UHJvcGVydHlWZXJ0aWNhbEFsaWduLCAic3ViIik7CkBAIC0xMzIwLDYgKzEzMzQsNyBAQAogICAg
ICAgICB7ICJTZWxlY3RXb3JkIiwgeyBleGVjdXRlU2VsZWN0V29yZCwgc3VwcG9ydGVkRnJvbU1l
bnVPcktleUJpbmRpbmcsIGVuYWJsZWRWaXNpYmxlU2VsZWN0aW9uLCBzdGF0ZU5vbmUsIHZhbHVl
TnVsbCwgbm90VGV4dEluc2VydGlvbiwgZG9Ob3RBbGxvd0V4ZWN1dGlvbldoZW5EaXNhYmxlZCB9
IH0sCiAgICAgICAgIHsgIlNldE1hcmsiLCB7IGV4ZWN1dGVTZXRNYXJrLCBzdXBwb3J0ZWRGcm9t
TWVudU9yS2V5QmluZGluZywgZW5hYmxlZFZpc2libGVTZWxlY3Rpb24sIHN0YXRlTm9uZSwgdmFs
dWVOdWxsLCBub3RUZXh0SW5zZXJ0aW9uLCBkb05vdEFsbG93RXhlY3V0aW9uV2hlbkRpc2FibGVk
IH0gfSwKICAgICAgICAgeyAiU3RyaWtldGhyb3VnaCIsIHsgZXhlY3V0ZVN0cmlrZXRocm91Z2gs
IHN1cHBvcnRlZCwgZW5hYmxlZEluUmljaGx5RWRpdGFibGVUZXh0LCBzdGF0ZVN0cmlrZXRocm91
Z2gsIHZhbHVlTnVsbCwgbm90VGV4dEluc2VydGlvbiwgZG9Ob3RBbGxvd0V4ZWN1dGlvbldoZW5E
aXNhYmxlZCB9IH0sCisgICAgICAgIHsgIlN0eWxlV2l0aENTUyIsIHsgZXhlY3V0ZVN0eWxlV2l0
aENTUywgc3VwcG9ydGVkLCBlbmFibGVkSW5SaWNobHlFZGl0YWJsZVRleHQsIHN0YXRlU3R5bGVX
aXRoQ1NTLCB2YWx1ZU51bGwsIG5vdFRleHRJbnNlcnRpb24sIGRvTm90QWxsb3dFeGVjdXRpb25X
aGVuRGlzYWJsZWQgfSB9LAogICAgICAgICB7ICJTdWJzY3JpcHQiLCB7IGV4ZWN1dGVTdWJzY3Jp
cHQsIHN1cHBvcnRlZCwgZW5hYmxlZEluUmljaGx5RWRpdGFibGVUZXh0LCBzdGF0ZVN1YnNjcmlw
dCwgdmFsdWVOdWxsLCBub3RUZXh0SW5zZXJ0aW9uLCBkb05vdEFsbG93RXhlY3V0aW9uV2hlbkRp
c2FibGVkIH0gfSwKICAgICAgICAgeyAiU3VwZXJzY3JpcHQiLCB7IGV4ZWN1dGVTdXBlcnNjcmlw
dCwgc3VwcG9ydGVkLCBlbmFibGVkSW5SaWNobHlFZGl0YWJsZVRleHQsIHN0YXRlU3VwZXJzY3Jp
cHQsIHZhbHVlTnVsbCwgbm90VGV4dEluc2VydGlvbiwgZG9Ob3RBbGxvd0V4ZWN1dGlvbldoZW5E
aXNhYmxlZCB9IH0sCiAgICAgICAgIHsgIlN3YXBXaXRoTWFyayIsIHsgZXhlY3V0ZVN3YXBXaXRo
TWFyaywgc3VwcG9ydGVkRnJvbU1lbnVPcktleUJpbmRpbmcsIGVuYWJsZWRWaXNpYmxlU2VsZWN0
aW9uQW5kTWFyaywgc3RhdGVOb25lLCB2YWx1ZU51bGwsIG5vdFRleHRJbnNlcnRpb24sIGRvTm90
QWxsb3dFeGVjdXRpb25XaGVuRGlzYWJsZWQgfSB9LApJbmRleDogV2ViQ29yZS9lZGl0aW5nL0Vk
aXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAJKHJldmlz
aW9uIDQwNDMxKQorKysgV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTkzNiw2ICs5MzYsNyBAQAogICAgICwgbV9kZWxldGVCdXR0b25Db250cm9sbGVyKG5ldyBE
ZWxldGVCdXR0b25Db250cm9sbGVyKGZyYW1lKSkKICAgICAsIG1faWdub3JlQ29tcG9zaXRpb25T
ZWxlY3Rpb25DaGFuZ2UoZmFsc2UpCiAgICAgLCBtX3Nob3VsZFN0YXJ0TmV3S2lsbFJpbmdTZXF1
ZW5jZShmYWxzZSkKKyAgICAsIG1fc3R5bGVXaXRoQ1NTKGZhbHNlKQogeyAKIH0KIApAQCAtOTQ3
LDYgKzk0OCw3IEBACiB7CiAgICAgbV9jb21wb3NpdGlvbk5vZGUgPSAwOwogICAgIG1fY3VzdG9t
Q29tcG9zaXRpb25VbmRlcmxpbmVzLmNsZWFyKCk7CisgICAgbV9zdHlsZVdpdGhDU1MgPSBmYWxz
ZTsKIH0KIAogYm9vbCBFZGl0b3I6Omluc2VydFRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBFdmVu
dCogdHJpZ2dlcmluZ0V2ZW50KQpJbmRleDogV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAkocmV2aXNpb24gNDA0MzEpCisrKyBX
ZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTE1MSw2ICsxNTEsOSBA
QAogICAgIGJvb2wgc2VsZWN0aW9uU3RhcnRIYXNTdHlsZShDU1NTdHlsZURlY2xhcmF0aW9uKikg
Y29uc3Q7CiAKICAgICBib29sIGNsaWVudElzRWRpdGFibGUoKSBjb25zdDsKKyAgICAKKyAgICB2
b2lkIHNldFN0eWxlV2l0aENTUyhib29sIGZsYWcpIHsgbV9zdHlsZVdpdGhDU1MgPSBmbGFnOyB9
CisgICAgYm9vbCBzdHlsZVdpdGhDU1MoKSBjb25zdCB7IHJldHVybiBtX3N0eWxlV2l0aENTUzsg
fQogCiAgICAgY2xhc3MgQ29tbWFuZCB7CiAgICAgcHVibGljOgpAQCAtMjc4LDYgKzI4MSw3IEBA
CiAgICAgVmVjdG9yPENvbXBvc2l0aW9uVW5kZXJsaW5lPiBtX2N1c3RvbUNvbXBvc2l0aW9uVW5k
ZXJsaW5lczsKICAgICBib29sIG1faWdub3JlQ29tcG9zaXRpb25TZWxlY3Rpb25DaGFuZ2U7CiAg
ICAgYm9vbCBtX3Nob3VsZFN0YXJ0TmV3S2lsbFJpbmdTZXF1ZW5jZTsKKyAgICBib29sIG1fc3R5
bGVXaXRoQ1NTOwogCiAgICAgYm9vbCBjYW5EZWxldGVSYW5nZShSYW5nZSopIGNvbnN0OwogICAg
IGJvb2wgY2FuU21hcnRSZXBsYWNlV2l0aFBhc3RlYm9hcmQoUGFzdGVib2FyZCopOwpJbmRleDog
V2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCShyZXZpc2lvbiA0MDQzMSkKKysrIFdl
YkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMy
LDYgKzMyLDggQEAKICNpbmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgiCiAjaW5jbHVkZSAiQ1NT
VmFsdWVLZXl3b3Jkcy5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRWRpdG9y
LmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgogI2luY2x1
ZGUgIkhUTUxJbnRlcmNoYW5nZS5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgpAQCAtNTAsMTMg
KzUyLDggQEAKIAogY2xhc3MgU3R5bGVDaGFuZ2UgewogcHVibGljOgotICAgIGVudW0gRUxlZ2Fj
eUhUTUxTdHlsZXMgeyBEb05vdFVzZUxlZ2FjeUhUTUxTdHlsZXMsIFVzZUxlZ2FjeUhUTUxTdHls
ZXMgfTsKKyAgICBleHBsaWNpdCBTdHlsZUNoYW5nZShDU1NTdHlsZURlY2xhcmF0aW9uKiwgY29u
c3QgUG9zaXRpb24mKTsKIAotICAgIGV4cGxpY2l0IFN0eWxlQ2hhbmdlKENTU1N0eWxlRGVjbGFy
YXRpb24qLCBFTGVnYWN5SFRNTFN0eWxlcyB1c2VzTGVnYWN5U3R5bGVzPVVzZUxlZ2FjeUhUTUxT
dHlsZXMpOwotICAgIFN0eWxlQ2hhbmdlKENTU1N0eWxlRGVjbGFyYXRpb24qLCBjb25zdCBQb3Np
dGlvbiYsIEVMZWdhY3lIVE1MU3R5bGVzIHVzZXNMZWdhY3lTdHlsZXM9VXNlTGVnYWN5SFRNTFN0
eWxlcyk7Ci0KLSAgICBzdGF0aWMgRUxlZ2FjeUhUTUxTdHlsZXMgc3R5bGVNb2RlRm9yUGFyc2VN
b2RlKGJvb2wpOwotCiAgICAgU3RyaW5nIGNzc1N0eWxlKCkgY29uc3QgeyByZXR1cm4gbV9jc3NT
dHlsZTsgfQogICAgIGJvb2wgYXBwbHlCb2xkKCkgY29uc3QgeyByZXR1cm4gbV9hcHBseUJvbGQ7
IH0KICAgICBib29sIGFwcGx5SXRhbGljKCkgY29uc3QgeyByZXR1cm4gbV9hcHBseUl0YWxpYzsg
fQpAQCAtNzAsNyArNjcsNyBAQAogICAgIFN0cmluZyBmb250RmFjZSgpIHsgcmV0dXJuIG1fYXBw
bHlGb250RmFjZTsgfQogICAgIFN0cmluZyBmb250U2l6ZSgpIHsgcmV0dXJuIG1fYXBwbHlGb250
U2l6ZTsgfQogCi0gICAgYm9vbCB1c2VzTGVnYWN5U3R5bGVzKCkgY29uc3QgeyByZXR1cm4gbV91
c2VzTGVnYWN5U3R5bGVzOyB9CisgICAgYm9vbCB1c2VzTGVnYWN5Rm9ybWF0dGluZ1RhZ3MoKSBj
b25zdCB7IHJldHVybiBtX3VzZXNMZWdhY3lGb3JtYXR0aW5nVGFnczsgfQogCiBwcml2YXRlOgog
ICAgIHZvaWQgaW5pdChQYXNzUmVmUHRyPENTU1N0eWxlRGVjbGFyYXRpb24+LCBjb25zdCBQb3Np
dGlvbiYpOwpAQCAtODUsMzMgKzgyLDI2IEBACiAgICAgU3RyaW5nIG1fYXBwbHlGb250Q29sb3I7
CiAgICAgU3RyaW5nIG1fYXBwbHlGb250RmFjZTsKICAgICBTdHJpbmcgbV9hcHBseUZvbnRTaXpl
OwotICAgIGJvb2wgbV91c2VzTGVnYWN5U3R5bGVzOworICAgIGJvb2wgbV91c2VzTGVnYWN5Rm9y
bWF0dGluZ1RhZ3M7CiB9OwogCiAKLQotU3R5bGVDaGFuZ2U6OlN0eWxlQ2hhbmdlKENTU1N0eWxl
RGVjbGFyYXRpb24qIHN0eWxlLCBFTGVnYWN5SFRNTFN0eWxlcyB1c2VzTGVnYWN5U3R5bGVzKQor
U3R5bGVDaGFuZ2U6OlN0eWxlQ2hhbmdlKENTU1N0eWxlRGVjbGFyYXRpb24qIHN0eWxlLCBjb25z
dCBQb3NpdGlvbiYgcG9zaXRpb24pCiAgICAgOiBtX2FwcGx5Qm9sZChmYWxzZSkKICAgICAsIG1f
YXBwbHlJdGFsaWMoZmFsc2UpCiAgICAgLCBtX2FwcGx5U3Vic2NyaXB0KGZhbHNlKQogICAgICwg
bV9hcHBseVN1cGVyc2NyaXB0KGZhbHNlKQotICAgICwgbV91c2VzTGVnYWN5U3R5bGVzKHVzZXNM
ZWdhY3lTdHlsZXMpCisgICAgLCBtX3VzZXNMZWdhY3lGb3JtYXR0aW5nVGFncyhmYWxzZSkKIHsK
LSAgICBpbml0KHN0eWxlLCBQb3NpdGlvbigpKTsKLX0KLQotU3R5bGVDaGFuZ2U6OlN0eWxlQ2hh
bmdlKENTU1N0eWxlRGVjbGFyYXRpb24qIHN0eWxlLCBjb25zdCBQb3NpdGlvbiYgcG9zaXRpb24s
IEVMZWdhY3lIVE1MU3R5bGVzIHVzZXNMZWdhY3lTdHlsZXMpCi0gICAgOiBtX2FwcGx5Qm9sZChm
YWxzZSkKLSAgICAsIG1fYXBwbHlJdGFsaWMoZmFsc2UpCi0gICAgLCBtX2FwcGx5U3Vic2NyaXB0
KGZhbHNlKQotICAgICwgbV9hcHBseVN1cGVyc2NyaXB0KGZhbHNlKQotICAgICwgbV91c2VzTGVn
YWN5U3R5bGVzKHVzZXNMZWdhY3lTdHlsZXMpCi17CiAgICAgaW5pdChzdHlsZSwgcG9zaXRpb24p
OwogfQogCi12b2lkIFN0eWxlQ2hhbmdlOjppbml0KFBhc3NSZWZQdHI8Q1NTU3R5bGVEZWNsYXJh
dGlvbj4gc3R5bGUsIGNvbnN0IFBvc2l0aW9uICZwb3NpdGlvbikKK3ZvaWQgU3R5bGVDaGFuZ2U6
OmluaXQoUGFzc1JlZlB0cjxDU1NTdHlsZURlY2xhcmF0aW9uPiBzdHlsZSwgY29uc3QgUG9zaXRp
b24mIHBvc2l0aW9uKQogeworICAgIGlmIChwb3NpdGlvbi5ub2RlKCkpCisgICAgICAgIGlmIChE
b2N1bWVudCogZG9jdW1lbnQgPSBwb3NpdGlvbi5ub2RlKCktPmRvY3VtZW50KCkpCisgICAgICAg
ICAgICBtX3VzZXNMZWdhY3lGb3JtYXR0aW5nVGFncyA9ICFkb2N1bWVudC0+ZnJhbWUoKS0+ZWRp
dG9yKCktPnN0eWxlV2l0aENTUygpOworICAgICAgICAgICAgCiAgICAgUmVmUHRyPENTU011dGFi
bGVTdHlsZURlY2xhcmF0aW9uPiBtdXRhYmxlU3R5bGUgPSBzdHlsZS0+bWFrZU11dGFibGUoKTsK
ICAgICAKICAgICBTdHJpbmcgc3R5bGVUZXh0KCIiKTsKQEAgLTEzMSw3ICsxMjEsNyBAQAogICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgIAogICAgICAgICAvLyBJZiBuZWVkZWQsIGZpZ3Vy
ZSBvdXQgaWYgdGhpcyBjaGFuZ2UgaXMgYSBsZWdhY3kgSFRNTCBzdHlsZSBjaGFuZ2UuCi0gICAg
ICAgIGlmIChtX3VzZXNMZWdhY3lTdHlsZXMgJiYgY2hlY2tGb3JMZWdhY3lIVE1MU3R5bGVDaGFu
Z2UocHJvcGVydHkpKQorICAgICAgICBpZiAobV91c2VzTGVnYWN5Rm9ybWF0dGluZ1RhZ3MgJiYg
Y2hlY2tGb3JMZWdhY3lIVE1MU3R5bGVDaGFuZ2UocHJvcGVydHkpKQogICAgICAgICAgICAgY29u
dGludWU7CiAKICAgICAgICAgaWYgKHByb3BlcnR5LT5pZCgpID09IENTU1Byb3BlcnR5RGlyZWN0
aW9uKSB7CkBAIC0xNjAsMTEgKzE1MCw2IEBACiAgICAgbV9jc3NTdHlsZSA9IHN0eWxlVGV4dC5z
dHJpcFdoaXRlU3BhY2UoKTsKIH0KIAotU3R5bGVDaGFuZ2U6OkVMZWdhY3lIVE1MU3R5bGVzIFN0
eWxlQ2hhbmdlOjpzdHlsZU1vZGVGb3JQYXJzZU1vZGUoYm9vbCBpc1F1aXJrc01vZGUpCi17Ci0g
ICAgcmV0dXJuIGlzUXVpcmtzTW9kZSA/IFVzZUxlZ2FjeUhUTUxTdHlsZXMgOiBEb05vdFVzZUxl
Z2FjeUhUTUxTdHlsZXM7Ci19Ci0KIC8vIFRoaXMgZnVuY3Rpb24gaXMgdGhlIG1hcHBpbmcgZnJv
bSBDU1Mgc3R5bGVzIHRvIHN0eWxpbmcgdGFncyAobGlrZSBmb250LXdlaWdodDogYm9sZCB0byA8
Yj4pCiBib29sIFN0eWxlQ2hhbmdlOjpjaGVja0ZvckxlZ2FjeUhUTUxTdHlsZUNoYW5nZShjb25z
dCBDU1NQcm9wZXJ0eSogcHJvcGVydHkpCiB7CkBAIC00NDIsNyArNDI3LDcgQEAKICAgICBWaXNp
YmxlUG9zaXRpb24gbmV4dFBhcmFncmFwaFN0YXJ0KGVuZE9mUGFyYWdyYXBoKHBhcmFncmFwaFN0
YXJ0KS5uZXh0KCkpOwogICAgIFZpc2libGVQb3NpdGlvbiBiZXlvbmRFbmQoZW5kT2ZQYXJhZ3Jh
cGgodmlzaWJsZUVuZCkubmV4dCgpKTsKICAgICB3aGlsZSAocGFyYWdyYXBoU3RhcnQuaXNOb3RO
dWxsKCkgJiYgcGFyYWdyYXBoU3RhcnQgIT0gYmV5b25kRW5kKSB7Ci0gICAgICAgIFN0eWxlQ2hh
bmdlIHN0eWxlQ2hhbmdlKHN0eWxlLCBwYXJhZ3JhcGhTdGFydC5kZWVwRXF1aXZhbGVudCgpLCBT
dHlsZUNoYW5nZTo6c3R5bGVNb2RlRm9yUGFyc2VNb2RlKGRvY3VtZW50KCktPmluQ29tcGF0TW9k
ZSgpKSk7CisgICAgICAgIFN0eWxlQ2hhbmdlIHN0eWxlQ2hhbmdlKHN0eWxlLCBwYXJhZ3JhcGhT
dGFydC5kZWVwRXF1aXZhbGVudCgpKTsKICAgICAgICAgaWYgKHN0eWxlQ2hhbmdlLmNzc1N0eWxl
KCkubGVuZ3RoKCkgPiAwIHx8IG1fcmVtb3ZlT25seSkgewogICAgICAgICAgICAgUmVmUHRyPE5v
ZGU+IGJsb2NrID0gZW5jbG9zaW5nQmxvY2socGFyYWdyYXBoU3RhcnQuZGVlcEVxdWl2YWxlbnQo
KS5ub2RlKCkpOwogICAgICAgICAgICAgUmVmUHRyPE5vZGU+IG5ld0Jsb2NrID0gbW92ZVBhcmFn
cmFwaENvbnRlbnRzVG9OZXdCbG9ja0lmTmVjZXNzYXJ5KHBhcmFncmFwaFN0YXJ0LmRlZXBFcXVp
dmFsZW50KCkpOwpAQCAtMTE0Nyw3ICsxMTMyLDcgQEAKIAogICAgIEhUTUxFbGVtZW50ICplbGVt
ZW50ID0gc3RhdGljX2Nhc3Q8SFRNTEVsZW1lbnQgKj4obm9kZSk7CiAgICAgICAgIAotICAgIFN0
eWxlQ2hhbmdlIHN0eWxlQ2hhbmdlKHN0eWxlLCBQb3NpdGlvbihlbGVtZW50LCAwKSwgU3R5bGVD
aGFuZ2U6OnN0eWxlTW9kZUZvclBhcnNlTW9kZShkb2N1bWVudCgpLT5pbkNvbXBhdE1vZGUoKSkp
OworICAgIFN0eWxlQ2hhbmdlIHN0eWxlQ2hhbmdlKHN0eWxlLCBQb3NpdGlvbihlbGVtZW50LCAw
KSk7CiAgICAgaWYgKHN0eWxlQ2hhbmdlLmNzc1N0eWxlKCkubGVuZ3RoKCkgPiAwKSB7CiAgICAg
ICAgIFN0cmluZyBjc3NUZXh0ID0gc3R5bGVDaGFuZ2UuY3NzU3R5bGUoKTsKICAgICAgICAgQ1NT
TXV0YWJsZVN0eWxlRGVjbGFyYXRpb24gKmRlY2wgPSBlbGVtZW50LT5pbmxpbmVTdHlsZURlY2wo
KTsKQEAgLTE1NDYsNyArMTUzMSw3IEBACiAgICAgaWYgKG1fcmVtb3ZlT25seSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgU3R5bGVDaGFuZ2Ugc3R5bGVDaGFuZ2Uoc3R5bGUsIFBvc2l0aW9uKHN0
YXJ0Tm9kZSwgMCksIFN0eWxlQ2hhbmdlOjpzdHlsZU1vZGVGb3JQYXJzZU1vZGUoZG9jdW1lbnQo
KS0+aW5Db21wYXRNb2RlKCkpKTsKKyAgICBTdHlsZUNoYW5nZSBzdHlsZUNoYW5nZShzdHlsZSwg
UG9zaXRpb24oc3RhcnROb2RlLCAwKSk7CiAKICAgICAvLwogICAgIC8vIEZvbnQgdGFncyBuZWVk
IHRvIGdvIG91dHNpZGUgb2YgQ1NTIHNvIHRoYXQgQ1NTIGZvbnQgc2l6ZXMgb3ZlcnJpZGUgbGVh
Z2N5IGZvbnQgc2l6ZXMuCkluZGV4OiBXZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gNDA1NDUpCisrKyBXZWJDb3JlL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBACisyMDA5LTAyLTAzICBKdXN0aW4gR2FyY2lh
ICA8anVzdGluLmdhcmNpYUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEzNDkwCisgICAgICAgIEltcGxlbWVudCBleGVjQ29tbWFuZCgic3R5bGVXaXRoQ1NTIiwg
Li4uKQorICAgICAgICAKKyAgICAgICAgRGV0ZXJtaW5lIHdoZXRoZXIgb3Igbm90IHRvIHVzZSBI
VE1MIGZvcm1hdHRpbmcgdGFncyBmb3Igc3R5bGluZyBvbiB0aGUgbmV3CisgICAgICAgIGJvb2xl
YW4gb24gRWRpdG9yIGluc3RlYWQgb2Ygd2hldGhlciBvciBub3QgdGhlIGRvY3VtZW50IGlzIHF1
aXJrc21vZGUuCisKKyAgICAgICAgKiBlZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlQ2hhbmdlOjp1c2VzTGVnYWN5Rm9ybWF0dGluZ1RhZ3MpOiAK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQ2hhbmdlOjpTdHlsZUNoYW5nZSk6IAorICAgICAgICAo
V2ViQ29yZTo6U3R5bGVDaGFuZ2U6OmluaXQpOiAKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5U3R5
bGVDb21tYW5kOjphcHBseUJsb2NrU3R5bGUpOiAKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5U3R5
bGVDb21tYW5kOjphcHBseVRleHREZWNvcmF0aW9uU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6
QXBwbHlTdHlsZUNvbW1hbmQ6OmFkZElubGluZVN0eWxlSWZOZWVkZWQpOiAKKyAgICAgICAgKiBl
ZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OkVkaXRvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmNsZWFyKTogCisgICAgICAgICogZWRpdGluZy9FZGl0
b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6c2V0U3R5bGVXaXRoQ1NTKToKKyAgICAg
ICAgKFdlYkNvcmU6OkVkaXRvcjo6c3R5bGVXaXRoQ1NTKToKKyAgICAgICAgKiBlZGl0aW5nL0Vk
aXRvckNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZVN0eWxlV2l0aENTUyk6
CisgICAgICAgIChXZWJDb3JlOjpzdGF0ZVN0eWxlV2l0aENTUyk6CisgICAgICAgIChXZWJDb3Jl
OjpDb21tYW5kRW50cnk6Oik6CisKIDIwMDktMDItMDMgIEVyaWMgUm9tYW4gIDxlcm9tYW5AY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEhvbGdlciBGcmV5dGhlci4KSW5kZXg6
IExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvNTY4NTYwNC0xLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kLzU2ODU2MDQtMS1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21t
YW5kLzU2ODU2MDQtMS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMiBAQAor
U3VjY2Vzcy4gZXhlY0NvbW1hbmQoInN0eWxlV2l0aENTUyIsIC4uLikgaXMgc3VwcG9ydGVkLgor
U3VjY2Vzcy4gQSBsZWdhY3kgZm9ybWF0dGluZyB0YWcgd2FzIHVzZWQgZm9yIHN0eWxpbmcgYnkg
ZGVmYXVsdCwgYW5kIGV4ZWNDb21tYW5kKCJzdHlsZVdpdGhDU1MiLCAuLi4sIHRydWUpIGFjdGl2
YXRlZCB0aGUgdXNlIG9mIENTUyBzdHlsaW5nLgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9l
eGVjQ29tbWFuZC81Njg1NjA0LTEuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0
aW5nL2V4ZWNDb21tYW5kLzU2ODU2MDQtMS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvZWRpdGluZy9leGVjQ29tbWFuZC81Njg1NjA0LTEuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw0MCBAQAorPGJvZHk+Cis8cD5UaGlzIHRlc3RzIHRvIG1ha2Ugc3VyZSB0aGF0IGV4ZWND
b21tYW5kKCJzdHlsZVdpdGhDU1MiLCAuLi4pIGlzIHN1cHBvcnRlZCBhbmQgdHVybnMgb24gdGhl
IHVzZSBvZiBsZWdhY3kgdGFncyBpbiBsZXUgb2YgQ1NTLXN0eWxlZCBzcGFucyBmb3IgZm9ybWF0
dGluZyBjaGFuZ2VzLjwvcD4KKzxkaXYgY29udGVudGVkaXRhYmxlPSJ0cnVlIiBpZD0iZGl2Ij5U
aGUgc2Vjb25kIGFuZCBsYXN0IHdvcmRzIGluIHRoaXMgc2VudGVuY2Ugc2hvdWxkIGJlIGJvbGQu
PC9kaXY+Cis8dWwgaWQ9ImNvbnNvbGUiPjwvdWw+Cis8c2NyaXB0PgorZnVuY3Rpb24gbG9nKG1z
ZykgeworICAgIGNvbnNvbGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpOwor
ICAgIHRleHQgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShtc2cpOworICAgIGxpID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgibGkiKTsKKyAgICBjb25zb2xlLmFwcGVuZENoaWxkKGxpKTsKKyAg
ICBsaS5hcHBlbmRDaGlsZCh0ZXh0KTsKK30KK3IgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOwor
ZGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRpdiIpOwordGV4dCA9IGRpdi5maXJzdENo
aWxkOword2luZG93LmdldFNlbGVjdGlvbigpLnNldEJhc2VBbmRFeHRlbnQodGV4dCwgNCwgdGV4
dCwgMTApOworZG9jdW1lbnQuZXhlY0NvbW1hbmQoImJvbGQiLCBmYWxzZSwgIiIpOword2luZG93
LmdldFNlbGVjdGlvbigpLnNldEJhc2VBbmRFeHRlbnQodGV4dCwgdGV4dC5sZW5ndGggLSA1LCB0
ZXh0LCB0ZXh0Lmxlbmd0aCAtIDEpOworCitpZiAoZG9jdW1lbnQucXVlcnlDb21tYW5kU3VwcG9y
dGVkKCJzdHlsZVdpdGhDU1MiKSkKKyAgICBsb2coIlN1Y2Nlc3MuIGV4ZWNDb21tYW5kKFwic3R5
bGVXaXRoQ1NTXCIsIC4uLikgaXMgc3VwcG9ydGVkLiIpOworZWxzZQorICAgIGxvZygiRmFpbHVy
ZS4gZXhlY0NvbW1hbmQoXCJzdHlsZVdpdGhDU1NcIiwgLi4uKSBpcyBub3Qgc3VwcG9ydGVkLiIp
OworICAgIAorZG9jdW1lbnQuZXhlY0NvbW1hbmQoInN0eWxlV2l0aENTUyIsIGZhbHNlLCB0cnVl
KTsKK2RvY3VtZW50LmV4ZWNDb21tYW5kKCJib2xkIiwgZmFsc2UsICIiKTsKKworZXhwZWN0ZWRI
VE1MID0gIlRoZSA8Yj5zZWNvbmQ8L2I+IGFuZCBsYXN0IHdvcmRzIGluIHRoaXMgc2VudGVuY2Ug
c2hvdWxkIGJlIDxzcGFuIGNsYXNzPVwiQXBwbGUtc3R5bGUtc3BhblwiIHN0eWxlPVwiZm9udC13
ZWlnaHQ6IGJvbGQ7XCI+Ym9sZDwvc3Bhbj4uIjsKKworaWYgKGRpdi5pbm5lckhUTUwgPT0gZXhw
ZWN0ZWRIVE1MKQorICAgIGxvZygiU3VjY2Vzcy4gQSBsZWdhY3kgZm9ybWF0dGluZyB0YWcgd2Fz
IHVzZWQgZm9yIHN0eWxpbmcgYnkgZGVmYXVsdCwgYW5kIGV4ZWNDb21tYW5kKFwic3R5bGVXaXRo
Q1NTXCIsIC4uLiwgdHJ1ZSkgYWN0aXZhdGVkIHRoZSB1c2Ugb2YgQ1NTIHN0eWxpbmcuIik7Citl
bHNlCisgICAgbG9nKCJGYWlsdXJlLiBFeHBlY3RlZDogIiArIGV4cGVjdGVkSFRNTCk7CisKK2lm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICB3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGRvY3VtZW50LmJvZHkuaW5uZXJUZXh0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5pbm5lclRleHQ7Cit9Cis8L3NjcmlwdD4K
KzwvYm9keT4K
</data>
<flag name="review"
          id="13155"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>