<?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>55349</bug_id>
          
          <creation_ts>2011-02-27 21:18:29 -0800</creation_ts>
          <short_desc>WebKit does not merge text decorations in the typing style and the selected element properly</short_desc>
          <delta_ts>2011-03-01 18:11: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>HTML Editing</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>55338</dependson>
    
    <dependson>55452</dependson>
          <blocked>55339</blocked>
    
    <blocked>49956</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>eric</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>358885</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-02-27 21:18:29 -0800</bug_when>
    <thetext>When the typing style and the element that contains the caret has conflicting text decoration values, WebKit does not merge the styles when style is queried.

e.g. When we have a caret in &lt;div style=&quot;text-decoration: underline;&quot;&gt;hello&lt;/div&gt;, and the typing style only has line-through, queryCommandState(&quot;underline&quot;) returns false</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>359754</commentid>
    <comment_count>1</comment_count>
      <attachid>84201</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-03-01 01:56:17 -0800</bug_when>
    <thetext>Created attachment 84201
fixes the bug</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>360003</commentid>
    <comment_count>2</comment_count>
      <attachid>84201</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-03-01 10:26:42 -0800</bug_when>
    <thetext>Comment on attachment 84201
fixes the bug

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

&gt; Source/WebCore/editing/ApplyStyleCommand.cpp:1284
&gt; +    if (node-&gt;isHTMLElement() &amp;&amp; static_cast&lt;HTMLElement*&gt;(node)-&gt;inlineStyleDecl()) {
&gt; +        newInlineStyle = style-&gt;copy();
&gt; +        newInlineStyle-&gt;mergeInlineStyleOfElement(static_cast&lt;HTMLElement*&gt;(node));
&gt;      }

Why is this code specific to HTMLElement? Can’t this be done on a custom element that is technically not an HTML element? This code would treat &lt;subsection&gt;, for example, differently from &lt;section&gt;. I am not sure I understand why we have so much code specific to HTMLElement.

&gt; Source/WebCore/editing/EditingStyle.cpp:714
&gt; +        bool shouldAddTextDecorations = false;
&gt; +
&gt; +        RefPtr&lt;CSSValue&gt; value;

I think it would be clearer to combine these two local variables. The fact that “value” is specifically a text decorations value is unclear given the current name, and I think that the value being a null pointer would be just as good an indicator as the boolean if it had a good name.

Or maybe not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>360328</commentid>
    <comment_count>3</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-03-01 15:54:33 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 84201 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=84201&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/editing/ApplyStyleCommand.cpp:1284
&gt; &gt; +    if (node-&gt;isHTMLElement() &amp;&amp; static_cast&lt;HTMLElement*&gt;(node)-&gt;inlineStyleDecl()) {
&gt; &gt; +        newInlineStyle = style-&gt;copy();
&gt; &gt; +        newInlineStyle-&gt;mergeInlineStyleOfElement(static_cast&lt;HTMLElement*&gt;(node));
&gt; &gt;      }
&gt; 
&gt; Why is this code specific to HTMLElement? Can’t this be done on a custom element that is technically not an HTML element? This code would treat &lt;subsection&gt;, for example, differently from &lt;section&gt;. I am not sure I understand why we have so much code specific to HTMLElement.

It&apos;s only for historical reasons.  We can fix in a separate patch.  Is there a particular test case you&apos;re thinking of?  It&apos;ll be good to have a regression test.

&gt; &gt; Source/WebCore/editing/EditingStyle.cpp:714
&gt; &gt; +        bool shouldAddTextDecorations = false;
&gt; &gt; +
&gt; &gt; +        RefPtr&lt;CSSValue&gt; value;
&gt; 
&gt; I think it would be clearer to combine these two local variables. The fact that “value” is specifically a text decorations value is unclear given the current name, and I think that the value being a null pointer would be just as good an indicator as the boolean if it had a good name.

That&apos;s an excellent point.  I&apos;d just set value = 0 if it was value &amp;&amp; !value-&gt;isValueList().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>360342</commentid>
    <comment_count>4</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-03-01 16:04:37 -0800</bug_when>
    <thetext>Thanks for the review.  I&apos;ll be following up on the bug 51389 now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>360347</commentid>
    <comment_count>5</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-03-01 16:14:49 -0800</bug_when>
    <thetext>Committed r80060: &lt;http://trac.webkit.org/changeset/80060&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>360464</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-03-01 18:11:46 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/80060 might have broken GTK Linux 64-bit Debug
The following tests are not passing:
fast/viewport/viewport-112.html
fast/viewport/viewport-121.html
fast/viewport/viewport-122.html
fast/viewport/viewport-125.html
fast/viewport/viewport-129.html
fast/viewport/viewport-35.html
fast/viewport/viewport-46.html
fast/viewport/viewport-52.html
fast/viewport/viewport-53.html
fast/viewport/viewport-54.html
fast/viewport/viewport-55.html
fast/viewport/viewport-66.html
fast/viewport/viewport-67.html
fast/viewport/viewport-68.html
fast/viewport/viewport-69.html
fast/viewport/viewport-70.html
fast/viewport/viewport-71.html
fast/viewport/viewport-72.html
fast/viewport/viewport-73.html
fast/viewport/viewport-74.html
fast/viewport/viewport-75.html
fast/viewport/viewport-77.html
fast/viewport/viewport-78.html
fast/viewport/viewport-79.html
fast/viewport/viewport-83.html
fast/xsl/xslt-mismatched-tags-in-xslt.xml
fast/xsl/xslt-missing-namespace-in-xslt.xml
http/tests/security/xss-DENIED-xsl-document-redirect.xml
http/tests/security/xss-DENIED-xsl-external-entity-redirect.xml
http/tests/xmlviewer/dumpAsText/wml.xml</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>360465</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-03-01 18:11:54 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/80061 might have broken GTK Linux 64-bit Debug
The following tests are not passing:
fast/viewport/viewport-112.html
fast/viewport/viewport-121.html
fast/viewport/viewport-122.html
fast/viewport/viewport-125.html
fast/viewport/viewport-129.html
fast/viewport/viewport-35.html
fast/viewport/viewport-46.html
fast/viewport/viewport-52.html
fast/viewport/viewport-53.html
fast/viewport/viewport-54.html
fast/viewport/viewport-55.html
fast/viewport/viewport-66.html
fast/viewport/viewport-67.html
fast/viewport/viewport-68.html
fast/viewport/viewport-69.html
fast/viewport/viewport-70.html
fast/viewport/viewport-71.html
fast/viewport/viewport-72.html
fast/viewport/viewport-73.html
fast/viewport/viewport-74.html
fast/viewport/viewport-75.html
fast/viewport/viewport-77.html
fast/viewport/viewport-78.html
fast/viewport/viewport-79.html
fast/viewport/viewport-83.html
fast/xsl/xslt-mismatched-tags-in-xslt.xml
fast/xsl/xslt-missing-namespace-in-xslt.xml
http/tests/security/xss-DENIED-xsl-document-redirect.xml
http/tests/security/xss-DENIED-xsl-external-entity-redirect.xml
http/tests/xmlviewer/dumpAsText/wml.xml</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>84201</attachid>
            <date>2011-03-01 01:56:17 -0800</date>
            <delta_ts>2011-03-01 10:26:42 -0800</delta_ts>
            <desc>fixes the bug</desc>
            <filename>bug-55349-20110301185615.patch</filename>
            <type>text/plain</type>
            <size>20202</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc5OTgzKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjggQEAKKzIwMTEtMDMtMDEgIFJ5b3N1a2Ug
Tml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgV2ViS2l0IGRvZXMgbm90IG1lcmdlIHRleHQgZGVjb3JhdGlvbnMg
aW4gdGhlIHR5cGluZyBzdHlsZSBhbmQgdGhlIHNlbGVjdGVkIGVsZW1lbnQgcHJvcGVybHkKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU1MzQ5CisKKyAg
ICAgICAgVGhlIGJ1ZyB3YXMgY2F1c2VkIGJ5IEVkaXRpbmdTdHlsZTo6bWVyZ2VUeXBpbmdTdHls
ZSdzIG5vdCBwcm9wZXJseSBtZXJnaW5nIHRleHQgZGVjb3JhdGlvbiBwcm9wZXJ0eS4KKyAgICAg
ICAgRml4ZWQgdGhlIGJ1ZyBieSBleHRyYWN0aW5nIGEgZnVuY3Rpb24gZnJvbSBBcHBseVN0eWxl
Q29tbWFuZDo6cHVzaERvd25JbmxpbmVTdHlsZUFyb3VuZE5vZGUgYW5kCisgICAgICAgIGNhbGxp
bmcgaXQgaW4gcHVzaERvd25JbmxpbmVTdHlsZUFyb3VuZE5vZGUgYW5kIGluIG1lcmdlVHlwaW5n
U3R5bGUuCisKKyAgICAgICAgVGVzdDogZWRpdGluZy9leGVjQ29tbWFuZC9tZXJnZS10ZXh0LWRl
Y29yYXRpb24td2l0aC10eXBpbmctc3R5bGUuaHRtbAorCisgICAgICAgICogZWRpdGluZy9BcHBs
eVN0eWxlQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVN0eWxlQ29tbWFuZDo6
YXBwbHlJbmxpbmVTdHlsZVRvUHVzaERvd24pOiBUYWtlcyBFZGl0aW5nU3R5bGUqOworICAgICAg
ICBjYWxscyBtZXJnZUlubGluZVN0eWxlT2ZFbGVtZW50LgorICAgICAgICAoV2ViQ29yZTo6QXBw
bHlTdHlsZUNvbW1hbmQ6OnB1c2hEb3duSW5saW5lU3R5bGVBcm91bmROb2RlKTogQ2FsbHMgYXBw
bHlJbmxpbmVTdHlsZVRvUHVzaERvd24uCisgICAgICAgIChXZWJDb3JlOjpBcHBseVN0eWxlQ29t
bWFuZDo6cmVtb3ZlSW5saW5lU3R5bGUpOiBEaXR0by4KKyAgICAgICAgKiBlZGl0aW5nL0FwcGx5
U3R5bGVDb21tYW5kLmg6CisgICAgICAgICogZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RWRpdGluZ1N0eWxlOjptZXJnZVR5cGluZ1N0eWxlKTogQWRkZWQ7IGNh
bGxzIG1lcmdlU3R5bGUuCisgICAgICAgIChXZWJDb3JlOjpFZGl0aW5nU3R5bGU6Om1lcmdlSW5s
aW5lU3R5bGVPZkVsZW1lbnQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkVkaXRpbmdTdHls
ZTo6bWVyZ2VTdHlsZSk6IEV4dHJhY3RlZCBmcm9tIGFwcGx5SW5saW5lU3R5bGVUb1B1c2hEb3du
LgorICAgICAgICAqIGVkaXRpbmcvRWRpdGluZ1N0eWxlLmg6CisKIDIwMTEtMDMtMDEgIFBoaWxp
cHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQg
R1RLIGJ1aWxkIGZpeCBhZnRlciByNzk5NzgKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
QXBwbHlTdHlsZUNvbW1hbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCShyZXZpc2lvbiA3OTk4MSkKKysrIFNvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjcw
LDUyICsxMjcwLDIzIEBAIEhUTUxFbGVtZW50KiBBcHBseVN0eWxlQ29tbWFuZDo6aGlnaGVzdEEK
ICAgICByZXR1cm4gcmVzdWx0OwogfQogCi12b2lkIEFwcGx5U3R5bGVDb21tYW5kOjphcHBseUlu
bGluZVN0eWxlVG9QdXNoRG93bihOb2RlKiBub2RlLCBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlv
biogc3R5bGUpCit2b2lkIEFwcGx5U3R5bGVDb21tYW5kOjphcHBseUlubGluZVN0eWxlVG9QdXNo
RG93bihOb2RlKiBub2RlLCBFZGl0aW5nU3R5bGUqIHN0eWxlKQogewogICAgIEFTU0VSVChub2Rl
KTsKIAotICAgIGlmICghc3R5bGUgfHwgIXN0eWxlLT5sZW5ndGgoKSB8fCAhbm9kZS0+cmVuZGVy
ZXIoKSkKKyAgICBpZiAoIXN0eWxlIHx8IHN0eWxlLT5pc0VtcHR5KCkgfHwgIW5vZGUtPnJlbmRl
cmVyKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNs
YXJhdGlvbj4gbmV3SW5saW5lU3R5bGUgPSBzdHlsZTsKLSAgICBpZiAobm9kZS0+aXNIVE1MRWxl
bWVudCgpKSB7Ci0gICAgICAgIEhUTUxFbGVtZW50KiBlbGVtZW50ID0gdG9IVE1MRWxlbWVudChu
b2RlKTsKLSAgICAgICAgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qIGV4aXN0aW5nSW5saW5l
U3R5bGUgPSBlbGVtZW50LT5pbmxpbmVTdHlsZURlY2woKTsKLQotICAgICAgICAvLyBBdm9pZCBv
dmVycmlkaW5nIGV4aXN0aW5nIHN0eWxlcyBvZiBub2RlCi0gICAgICAgIGlmIChleGlzdGluZ0lu
bGluZVN0eWxlKSB7Ci0gICAgICAgICAgICBuZXdJbmxpbmVTdHlsZSA9IGV4aXN0aW5nSW5saW5l
U3R5bGUtPmNvcHkoKTsKLSAgICAgICAgICAgIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpj
b25zdF9pdGVyYXRvciBlbmQgPSBzdHlsZS0+ZW5kKCk7Ci0gICAgICAgICAgICBmb3IgKENTU011
dGFibGVTdHlsZURlY2xhcmF0aW9uOjpjb25zdF9pdGVyYXRvciBpdCA9IHN0eWxlLT5iZWdpbigp
OyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgICAgICAgICBFeGNlcHRpb25Db2RlIGVjOwot
ICAgICAgICAgICAgICAgIGlmICghZXhpc3RpbmdJbmxpbmVTdHlsZS0+Z2V0UHJvcGVydHlDU1NW
YWx1ZShpdC0+aWQoKSkpCi0gICAgICAgICAgICAgICAgICAgIG5ld0lubGluZVN0eWxlLT5zZXRQ
cm9wZXJ0eShpdC0+aWQoKSwgaXQtPnZhbHVlKCktPmNzc1RleHQoKSwgaXQtPmlzSW1wb3J0YW50
KCksIGVjKTsKLQotICAgICAgICAgICAgICAgIC8vIHRleHQtZGVjb3JhdGlvbnMgYWRkcyB1cAot
ICAgICAgICAgICAgICAgIGlmIChpdC0+aWQoKSA9PSBDU1NQcm9wZXJ0eVRleHREZWNvcmF0aW9u
ICYmIGl0LT52YWx1ZSgpLT5pc1ZhbHVlTGlzdCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIFJl
ZlB0cjxDU1NWYWx1ZT4gdGV4dERlY29yYXRpb24gPSBuZXdJbmxpbmVTdHlsZS0+Z2V0UHJvcGVy
dHlDU1NWYWx1ZShDU1NQcm9wZXJ0eVRleHREZWNvcmF0aW9uKTsKLSAgICAgICAgICAgICAgICAg
ICAgaWYgKHRleHREZWNvcmF0aW9uICYmIHRleHREZWNvcmF0aW9uLT5pc1ZhbHVlTGlzdCgpKSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBDU1NWYWx1ZUxpc3QqIHRleHREZWNvcmF0aW9uT2ZJ
bmxpbmVTdHlsZSA9IHN0YXRpY19jYXN0PENTU1ZhbHVlTGlzdCo+KHRleHREZWNvcmF0aW9uLmdl
dCgpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIENTU1ZhbHVlTGlzdCogdGV4dERlY29yYXRp
b25PZlN0eWxlQXBwbGllZCA9IHN0YXRpY19jYXN0PENTU1ZhbHVlTGlzdCo+KGl0LT52YWx1ZSgp
KTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChSZWZQdHI8
Q1NTUHJpbWl0aXZlVmFsdWU+LCB1bmRlcmxpbmUsIChDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRl
SWRlbnRpZmllcihDU1NWYWx1ZVVuZGVybGluZSkpKTsKLSAgICAgICAgICAgICAgICAgICAgICAg
IERFRklORV9TVEFUSUNfTE9DQUwoUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiwgbGluZVRocm91
Z2gsIChDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZUxpbmVUaHJv
dWdoKSkpOwotICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAg
ICBpZiAodGV4dERlY29yYXRpb25PZlN0eWxlQXBwbGllZC0+aGFzVmFsdWUodW5kZXJsaW5lLmdl
dCgpKSAmJiAhdGV4dERlY29yYXRpb25PZklubGluZVN0eWxlLT5oYXNWYWx1ZSh1bmRlcmxpbmUu
Z2V0KCkpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHREZWNvcmF0aW9uT2ZJbmxp
bmVTdHlsZS0+YXBwZW5kKHVuZGVybGluZS5nZXQoKSk7Ci0KLSAgICAgICAgICAgICAgICAgICAg
ICAgIGlmICh0ZXh0RGVjb3JhdGlvbk9mU3R5bGVBcHBsaWVkLT5oYXNWYWx1ZShsaW5lVGhyb3Vn
aC5nZXQoKSkgJiYgIXRleHREZWNvcmF0aW9uT2ZJbmxpbmVTdHlsZS0+aGFzVmFsdWUobGluZVRo
cm91Z2guZ2V0KCkpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHREZWNvcmF0aW9u
T2ZJbmxpbmVTdHlsZS0+YXBwZW5kKGxpbmVUaHJvdWdoLmdldCgpKTsKLSAgICAgICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQorICAg
IFJlZlB0cjxFZGl0aW5nU3R5bGU+IG5ld0lubGluZVN0eWxlID0gc3R5bGU7CisgICAgaWYgKG5v
ZGUtPmlzSFRNTEVsZW1lbnQoKSAmJiBzdGF0aWNfY2FzdDxIVE1MRWxlbWVudCo+KG5vZGUpLT5p
bmxpbmVTdHlsZURlY2woKSkgeworICAgICAgICBuZXdJbmxpbmVTdHlsZSA9IHN0eWxlLT5jb3B5
KCk7CisgICAgICAgIG5ld0lubGluZVN0eWxlLT5tZXJnZUlubGluZVN0eWxlT2ZFbGVtZW50KHN0
YXRpY19jYXN0PEhUTUxFbGVtZW50Kj4obm9kZSkpOwogICAgIH0KIAogICAgIC8vIFNpbmNlIGFk
ZElubGluZVN0eWxlSWZOZWVkZWQgY2FuJ3QgYWRkIHN0eWxlcyB0byBibG9jay1mbG93IHJlbmRl
ciBvYmplY3RzLCBhZGQgc3R5bGUgYXR0cmlidXRlIGluc3RlYWQuCiAgICAgLy8gRklYTUU6IGFw
cGx5SW5saW5lU3R5bGVUb1JhbmdlIHNob3VsZCBiZSB1c2VkIGhlcmUgaW5zdGVhZC4KICAgICBp
ZiAoKG5vZGUtPnJlbmRlcmVyKCktPmlzQmxvY2tGbG93KCkgfHwgbm9kZS0+Y2hpbGROb2RlQ291
bnQoKSkgJiYgbm9kZS0+aXNIVE1MRWxlbWVudCgpKSB7Ci0gICAgICAgIHNldE5vZGVBdHRyaWJ1
dGUodG9IVE1MRWxlbWVudChub2RlKSwgc3R5bGVBdHRyLCBuZXdJbmxpbmVTdHlsZS0+Y3NzVGV4
dCgpKTsKKyAgICAgICAgc2V0Tm9kZUF0dHJpYnV0ZSh0b0hUTUxFbGVtZW50KG5vZGUpLCBzdHls
ZUF0dHIsIG5ld0lubGluZVN0eWxlLT5zdHlsZSgpLT5jc3NUZXh0KCkpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCkBAIC0xMzI1LDcgKzEyOTYsNyBAQCB2b2lkIEFwcGx5U3R5bGVDb21tYW5k
OjphcHBseUlubGluZVN0eWxlCiAgICAgLy8gV2UgY2FuJ3Qgd3JhcCBub2RlIHdpdGggdGhlIHN0
eWxlZCBlbGVtZW50IGhlcmUgYmVjYXVzZSBuZXcgc3R5bGVkIGVsZW1lbnQgd2lsbCBuZXZlciBi
ZSByZW1vdmVkIGlmIHdlIGRpZC4KICAgICAvLyBJZiB3ZSBtb2RpZmllZCB0aGUgY2hpbGQgcG9p
bnRlciBpbiBwdXNoRG93bklubGluZVN0eWxlQXJvdW5kTm9kZSB0byBwb2ludCB0byBuZXcgc3R5
bGUgZWxlbWVudAogICAgIC8vIHRoZW4gd2UgZmFsbCBpbnRvIGFuIGluZmluaXRlIGxvb3Agd2hl
cmUgd2Uga2VlcCByZW1vdmluZyBhbmQgYWRkaW5nIHN0eWxlZCBlbGVtZW50IHdyYXBwaW5nIG5v
ZGUuCi0gICAgYWRkSW5saW5lU3R5bGVJZk5lZWRlZChuZXdJbmxpbmVTdHlsZS5nZXQoKSwgbm9k
ZSwgbm9kZSwgRG9Ob3RBZGRTdHlsZWRFbGVtZW50KTsKKyAgICBhZGRJbmxpbmVTdHlsZUlmTmVl
ZGVkKG5ld0lubGluZVN0eWxlLT5zdHlsZSgpLCBub2RlLCBub2RlLCBEb05vdEFkZFN0eWxlZEVs
ZW1lbnQpOwogfQogCiB2b2lkIEFwcGx5U3R5bGVDb21tYW5kOjpwdXNoRG93bklubGluZVN0eWxl
QXJvdW5kTm9kZShFZGl0aW5nU3R5bGUqIHN0eWxlLCBOb2RlKiB0YXJnZXROb2RlKQpAQCAtMTM3
MSw3ICsxMzQyLDcgQEAgdm9pZCBBcHBseVN0eWxlQ29tbWFuZDo6cHVzaERvd25JbmxpbmVTdAog
ICAgICAgICAgICAgLy8gQXBwbHkgdGV4dCBkZWNvcmF0aW9uIHRvIGFsbCBub2RlcyBjb250YWlu
aW5nIHRhcmdldE5vZGUgYW5kIHRoZWlyIHNpYmxpbmdzIGJ1dCBOT1QgdG8gdGFyZ2V0Tm9kZQog
ICAgICAgICAgICAgLy8gQnV0IGlmIHdlJ3ZlIHJlbW92ZWQgc3R5bGVkRWxlbWVudCB0aGVuIGdv
IGFoZWFkIGFuZCBhbHdheXMgYXBwbHkgdGhlIHN0eWxlLgogICAgICAgICAgICAgaWYgKGNoaWxk
ICE9IHRhcmdldE5vZGUgfHwgc3R5bGVkRWxlbWVudCkKLSAgICAgICAgICAgICAgICBhcHBseUlu
bGluZVN0eWxlVG9QdXNoRG93bihjaGlsZCwgc3R5bGVUb1B1c2hEb3duLT5zdHlsZSgpKTsKKyAg
ICAgICAgICAgICAgICBhcHBseUlubGluZVN0eWxlVG9QdXNoRG93bihjaGlsZCwgc3R5bGVUb1B1
c2hEb3duLmdldCgpKTsKIAogICAgICAgICAgICAgLy8gV2UgZm91bmQgdGhlIG5leHQgbm9kZSBm
b3IgdGhlIG91dGVyIGxvb3AgKGNvbnRhaW5zIHRhcmdldE5vZGUpCiAgICAgICAgICAgICAvLyBX
aGVuIHJlYWNoZWQgdGFyZ2V0Tm9kZSwgc3RvcCB0aGUgb3V0ZXIgbG9vcCB1cG9uIHRoZSBjb21w
bGV0aW9uIG9mIHRoZSBjdXJyZW50IGlubmVyIGxvb3AKQEAgLTE0NDgsNyArMTQxOSw3IEBAIHZv
aWQgQXBwbHlTdHlsZUNvbW1hbmQ6OnJlbW92ZUlubGluZVN0eWwKIAogICAgICAgICAgICAgaWYg
KHN0eWxlVG9QdXNoRG93bikgewogICAgICAgICAgICAgICAgIGZvciAoOyBjaGlsZE5vZGU7IGNo
aWxkTm9kZSA9IGNoaWxkTm9kZS0+bmV4dFNpYmxpbmcoKSkKLSAgICAgICAgICAgICAgICAgICAg
YXBwbHlJbmxpbmVTdHlsZVRvUHVzaERvd24oY2hpbGROb2RlLmdldCgpLCBzdHlsZVRvUHVzaERv
d24tPnN0eWxlKCkpOworICAgICAgICAgICAgICAgICAgICBhcHBseUlubGluZVN0eWxlVG9QdXNo
RG93bihjaGlsZE5vZGUuZ2V0KCksIHN0eWxlVG9QdXNoRG93bi5nZXQoKSk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KICAgICAgICAgaWYgKG5vZGUgPT0gZW5kLmRlcHJlY2F0ZWROb2RlKCkp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5oCShyZXZp
c2lvbiA3OTk4MSkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQu
aAkod29ya2luZyBjb3B5KQpAQCAtODQsNyArODQsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgcmVt
b3ZlSW1wbGljaXRseVN0eWxlZEVsZW1lbnQoRWRpdGluZ1N0eWxlKiwgSFRNTEVsZW1lbnQqLCBJ
bmxpbmVTdHlsZVJlbW92YWxNb2RlLCBFZGl0aW5nU3R5bGUqIGV4dHJhY3RlZFN0eWxlKTsKICAg
ICBib29sIHJlbW92ZUNTU1N0eWxlKEVkaXRpbmdTdHlsZSosIEhUTUxFbGVtZW50KiwgSW5saW5l
U3R5bGVSZW1vdmFsTW9kZSA9IFJlbW92ZUlmTmVlZGVkLCBFZGl0aW5nU3R5bGUqIGV4dHJhY3Rl
ZFN0eWxlID0gMCk7CiAgICAgSFRNTEVsZW1lbnQqIGhpZ2hlc3RBbmNlc3RvcldpdGhDb25mbGlj
dGluZ0lubGluZVN0eWxlKEVkaXRpbmdTdHlsZSosIE5vZGUqKTsKLSAgICB2b2lkIGFwcGx5SW5s
aW5lU3R5bGVUb1B1c2hEb3duKE5vZGUqLCBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiopOwor
ICAgIHZvaWQgYXBwbHlJbmxpbmVTdHlsZVRvUHVzaERvd24oTm9kZSosIEVkaXRpbmdTdHlsZSop
OwogICAgIHZvaWQgcHVzaERvd25JbmxpbmVTdHlsZUFyb3VuZE5vZGUoRWRpdGluZ1N0eWxlKiwg
Tm9kZSopOwogICAgIHZvaWQgcmVtb3ZlSW5saW5lU3R5bGUoRWRpdGluZ1N0eWxlKiAsIGNvbnN0
IFBvc2l0aW9uJiBzdGFydCwgY29uc3QgUG9zaXRpb24mIGVuZCk7CiAgICAgYm9vbCBub2RlRnVs
bHlTZWxlY3RlZChOb2RlKiwgY29uc3QgUG9zaXRpb24mIHN0YXJ0LCBjb25zdCBQb3NpdGlvbiYg
ZW5kKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAJ
KHJldmlzaW9uIDc5OTgxKQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC02ODUsMTMgKzY4NSw1NyBAQCB2b2lkIEVkaXRpbmdTdHls
ZTo6bWVyZ2VUeXBpbmdTdHlsZShEb2N1CiAgICAgQVNTRVJUKGRvY3VtZW50KTsKIAogICAgIFJl
ZlB0cjxFZGl0aW5nU3R5bGU+IHR5cGluZ1N0eWxlID0gZG9jdW1lbnQtPmZyYW1lKCktPnNlbGVj
dGlvbigpLT50eXBpbmdTdHlsZSgpOwotICAgIGlmICghdHlwaW5nU3R5bGUgfHwgIXR5cGluZ1N0
eWxlLT5zdHlsZSgpIHx8IHR5cGluZ1N0eWxlID09IHRoaXMpCisgICAgaWYgKCF0eXBpbmdTdHls
ZSB8fCB0eXBpbmdTdHlsZSA9PSB0aGlzKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAobV9t
dXRhYmxlU3R5bGUpCi0gICAgICAgIG1fbXV0YWJsZVN0eWxlLT5tZXJnZSh0eXBpbmdTdHlsZS0+
c3R5bGUoKSwgdHJ1ZSk7Ci0gICAgZWxzZQotICAgICAgICBtX211dGFibGVTdHlsZSA9IHR5cGlu
Z1N0eWxlLT5zdHlsZSgpLT5jb3B5KCk7CisgICAgbWVyZ2VTdHlsZSh0eXBpbmdTdHlsZS0+c3R5
bGUoKSk7CiB9Ci0gICAgCisKK3ZvaWQgRWRpdGluZ1N0eWxlOjptZXJnZUlubGluZVN0eWxlT2ZF
bGVtZW50KFN0eWxlZEVsZW1lbnQqIGVsZW1lbnQpCit7CisgICAgQVNTRVJUKGVsZW1lbnQpOwor
ICAgIG1lcmdlU3R5bGUoZWxlbWVudC0+aW5saW5lU3R5bGVEZWNsKCkpOworfQorCit2b2lkIEVk
aXRpbmdTdHlsZTo6bWVyZ2VTdHlsZShDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiogc3R5bGUp
Cit7CisgICAgaWYgKCFzdHlsZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFtX211dGFi
bGVTdHlsZSkgeworICAgICAgICBtX211dGFibGVTdHlsZSA9IHN0eWxlLT5jb3B5KCk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6Y29u
c3RfaXRlcmF0b3IgZW5kID0gc3R5bGUtPmVuZCgpOworICAgIGZvciAoQ1NTTXV0YWJsZVN0eWxl
RGVjbGFyYXRpb246OmNvbnN0X2l0ZXJhdG9yIGl0ID0gc3R5bGUtPmJlZ2luKCk7IGl0ICE9IGVu
ZDsgKytpdCkgeworICAgICAgICBib29sIHNob3VsZEFkZFRleHREZWNvcmF0aW9ucyA9IGZhbHNl
OworCisgICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4gdmFsdWU7CisgICAgICAgIGlmICgoaXQtPmlk
KCkgPT0gQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvbiB8fCBpdC0+aWQoKSA9PSBDU1NQcm9wZXJ0
eVdlYmtpdFRleHREZWNvcmF0aW9uc0luRWZmZWN0KSAmJiBpdC0+dmFsdWUoKS0+aXNWYWx1ZUxp
c3QoKSkgeworICAgICAgICAgICAgdmFsdWUgPSBtX211dGFibGVTdHlsZS0+Z2V0UHJvcGVydHlD
U1NWYWx1ZShpdC0+aWQoKSk7CisgICAgICAgICAgICBpZiAodmFsdWUgJiYgdmFsdWUtPmlzVmFs
dWVMaXN0KCkpCisgICAgICAgICAgICAgICAgc2hvdWxkQWRkVGV4dERlY29yYXRpb25zID0gdHJ1
ZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghc2hvdWxkQWRkVGV4dERlY29yYXRpb25zKSB7
CisgICAgICAgICAgICBFeGNlcHRpb25Db2RlIGVjOworICAgICAgICAgICAgbV9tdXRhYmxlU3R5
bGUtPnNldFByb3BlcnR5KGl0LT5pZCgpLCBpdC0+dmFsdWUoKS0+Y3NzVGV4dCgpLCBpdC0+aXNJ
bXBvcnRhbnQoKSwgZWMpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAg
ICAgICBDU1NWYWx1ZUxpc3QqIG5ld1RleHREZWNvcmF0aW9ucyA9IHN0YXRpY19jYXN0PENTU1Zh
bHVlTGlzdCo+KGl0LT52YWx1ZSgpKTsKKyAgICAgICAgQ1NTVmFsdWVMaXN0KiB0ZXh0RGVjb3Jh
dGlvbnMgPSBzdGF0aWNfY2FzdDxDU1NWYWx1ZUxpc3QqPih2YWx1ZS5nZXQoKSk7CisKKyAgICAg
ICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+LCB1
bmRlcmxpbmUsIChDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZVVu
ZGVybGluZSkpKTsKKyAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBSZWZQdHI8Q1NT
UHJpbWl0aXZlVmFsdWU+LCBsaW5lVGhyb3VnaCwgKENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJ
ZGVudGlmaWVyKENTU1ZhbHVlTGluZVRocm91Z2gpKSk7CisKKyAgICAgICAgaWYgKG5ld1RleHRE
ZWNvcmF0aW9ucy0+aGFzVmFsdWUodW5kZXJsaW5lLmdldCgpKSAmJiAhdGV4dERlY29yYXRpb25z
LT5oYXNWYWx1ZSh1bmRlcmxpbmUuZ2V0KCkpKQorICAgICAgICAgICAgdGV4dERlY29yYXRpb25z
LT5hcHBlbmQodW5kZXJsaW5lLmdldCgpKTsKKworICAgICAgICBpZiAobmV3VGV4dERlY29yYXRp
b25zLT5oYXNWYWx1ZShsaW5lVGhyb3VnaC5nZXQoKSkgJiYgIXRleHREZWNvcmF0aW9ucy0+aGFz
VmFsdWUobGluZVRocm91Z2guZ2V0KCkpKQorICAgICAgICAgICAgdGV4dERlY29yYXRpb25zLT5h
cHBlbmQobGluZVRocm91Z2guZ2V0KCkpOworICAgIH0KK30KKwogfQpJbmRleDogU291cmNlL1dl
YkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5oCShyZXZpc2lvbiA3OTk4MSkKKysrIFNvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNiw2ICsxMDYs
NyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBWZWN0b3I8UXVhbGlmaWVkTmFtZT4mIGNvbmZsaWN0
aW5nQXR0cmlidXRlcywgU2hvdWxkRXh0cmFjdE1hdGNoaW5nU3R5bGUpIGNvbnN0OwogICAgIHZv
aWQgcHJlcGFyZVRvQXBwbHlBdChjb25zdCBQb3NpdGlvbiYsIFNob3VsZFByZXNlcnZlV3JpdGlu
Z0RpcmVjdGlvbiA9IERvTm90UHJlc2VydmVXcml0aW5nRGlyZWN0aW9uKTsKICAgICB2b2lkIG1l
cmdlVHlwaW5nU3R5bGUoRG9jdW1lbnQqKTsKKyAgICB2b2lkIG1lcmdlSW5saW5lU3R5bGVPZkVs
ZW1lbnQoU3R5bGVkRWxlbWVudCopOwogCiAgICAgZmxvYXQgZm9udFNpemVEZWx0YSgpIGNvbnN0
IHsgcmV0dXJuIG1fZm9udFNpemVEZWx0YTsgfQogICAgIGJvb2wgaGFzRm9udFNpemVEZWx0YSgp
IGNvbnN0IHsgcmV0dXJuIG1fZm9udFNpemVEZWx0YSAhPSBOb0ZvbnREZWx0YTsgfQpAQCAtMTIy
LDYgKzEyMyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZXBsYWNlRm9udFNpemVCeUtleXdvcmRJ
ZlBvc3NpYmxlKFJlbmRlclN0eWxlKiwgQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uKik7CiAg
ICAgdm9pZCBleHRyYWN0Rm9udFNpemVEZWx0YSgpOwogICAgIGJvb2wgY29uZmxpY3RzV2l0aElu
bGluZVN0eWxlT2ZFbGVtZW50KFN0eWxlZEVsZW1lbnQqLCBFZGl0aW5nU3R5bGUqIGV4dHJhY3Rl
ZFN0eWxlLCBWZWN0b3I8Q1NTUHJvcGVydHlJRD4qIGNvbmZsaWN0aW5nUHJvcGVydGllcykgY29u
c3Q7CisgICAgdm9pZCBtZXJnZVN0eWxlKENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKik7CiAK
ICAgICBSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IG1fbXV0YWJsZVN0eWxlOwog
ICAgIGJvb2wgbV9zaG91bGRVc2VGaXhlZERlZmF1bHRGb250U2l6ZTsKSW5kZXg6IExheW91dFRl
c3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlz
aW9uIDc5OTgzKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMTkgQEAKKzIwMTEtMDMtMDEgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViS2l0
IGRvZXMgbm90IG1lcmdlIHRleHQgZGVjb3JhdGlvbnMgaW4gdGhlIHR5cGluZyBzdHlsZSBhbmQg
dGhlIHNlbGVjdGVkIGVsZW1lbnQgcHJvcGVybHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTU1MzQ5CisKKyAgICAgICAgQWRkZWQgYSB0ZXN0IHRvIGVu
c3VyZSBXZWJLaXQgbWVyZ2VzIHRleHQgZGVjb3JhdGlvbnMgaW4gdGhlIHR5cGluZyBzdHlsZSBh
bmQgdGhlIGlubGluZSBzdHlsZQorICAgICAgICBvZiB0aGUgZWxlbWVudCBhcm91bmQgdGhlIGNh
cmV0IHdoZW4gY29tcHV0aW5nIHRoZSBzdHlsZSBhdCB0aGUgc2VsZWN0aW9uIHN0YXJ0LgorCisg
ICAgICAgICogZWRpdGluZy9leGVjQ29tbWFuZC9tZXJnZS10ZXh0LWRlY29yYXRpb24td2l0aC10
eXBpbmctc3R5bGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL2V4ZWND
b21tYW5kL21lcmdlLXRleHQtZGVjb3JhdGlvbi13aXRoLXR5cGluZy1zdHlsZS5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBlZGl0aW5nL3N0eWxlL3B1c2gtZG93bi1pbmxpbmUtc3R5bGVzLWV4cGVj
dGVkLnR4dDogUmViYXNlbGluZWQgZHVlIHRvIHRoZSBjaGFuZ2UgaW4gd2hpY2ggdGV4dCBkZWNv
cmF0aW9uCisgICAgICAgIHZhbHVlcyBhcHBlYXIuCisgICAgICAgICogZWRpdGluZy9zdHlsZS9z
Y3JpcHQtdGVzdHMvcHVzaC1kb3duLWlubGluZS1zdHlsZXMuanM6IERpdHRvLgorCiAyMDExLTAz
LTAxICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIE5v
dCByZXZpZXdlZDogZml4aW5nIGZsYWt5IHNub3cgWE1MVmlld2VyIHRlc3Qgb24gc25vdyBsZW9w
YXJkLgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9tZXJnZS10ZXh0LWRl
Y29yYXRpb24td2l0aC10eXBpbmctc3R5bGUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvbWVyZ2UtdGV4dC1kZWNvcmF0aW9uLXdpdGgt
dHlwaW5nLXN0eWxlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Vk
aXRpbmcvZXhlY0NvbW1hbmQvbWVyZ2UtdGV4dC1kZWNvcmF0aW9uLXdpdGgtdHlwaW5nLXN0eWxl
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMCBAQAorVGhpcyB0ZXN0IGVu
c3VyZXMgV2ViS2l0IG1lcmdlcyB0ZXh0IGRlY29yYXRpb25zIGluIHRoZSB0eXBpbmcgc3R5bGUg
YW5kIHRoZSBmb2N1c2VkIGVsZW1lbnQncyBzdHlsZSBwcm9wZXJ0eS4KKworaGVsbG8gd29ybGQK
K1Rlc3QgdG8gc2V0IHN0cmlrZVRocm91Z2ggYnkgdHlwaW5nIGNvbW1hbmQgYW5kIGFkZCB1bmRl
cmxpbmUgYXMgaW5saW5lIHN0eWxlOgorUEFTUworCitUZXN0IHRvIHNldCB1bmRlcmxpbmUgYnkg
dHlwaW5nIGNvbW1hbmQgYW5kIGFkZCBsaW5lLXRocm91Z2ggYXMgaW5saW5lIHN0eWxlOgorUEFT
UworCisKSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvbWVyZ2UtdGV4dC1k
ZWNvcmF0aW9uLXdpdGgtdHlwaW5nLXN0eWxlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZWRpdGluZy9leGVjQ29tbWFuZC9tZXJnZS10ZXh0LWRlY29yYXRpb24td2l0aC10eXBpbmct
c3R5bGUuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1h
bmQvbWVyZ2UtdGV4dC1kZWNvcmF0aW9uLXdpdGgtdHlwaW5nLXN0eWxlLmh0bWwJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsNDMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKzxw
PlRoaXMgdGVzdCBlbnN1cmVzIFdlYktpdCBtZXJnZXMgdGV4dCBkZWNvcmF0aW9ucyBpbiB0aGUg
dHlwaW5nIHN0eWxlIGFuZCB0aGUgZm9jdXNlZCBlbGVtZW50J3Mgc3R5bGUgcHJvcGVydHkuPC9w
PgorPGRpdiBpZD0idGVzdCIgY29udGVudGVkaXRhYmxlPmhlbGxvIHdvcmxkPC9kaXY+Cis8cHJl
PjxzY3JpcHQ+CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCitmdW5jdGlvbiBxdWVyeVRleHREZWNvcmF0
aW9ucygpIHsKKyAgICB2YXIgcmVzdWx0ID0gJyc7CisgICAgaWYgKGRvY3VtZW50LnF1ZXJ5Q29t
bWFuZFN0YXRlKCd1bmRlcmxpbmUnKSkKKyAgICAgICAgcmVzdWx0ICs9ICd1bmRlcmxpbmUnOwor
ICAgIGlmIChkb2N1bWVudC5xdWVyeUNvbW1hbmRTdGF0ZSgnc3RyaWtlVGhyb3VnaCcpKSB7Cisg
ICAgICAgIGlmIChyZXN1bHQubGVuZ3RoKQorICAgICAgICAgICAgcmVzdWx0ICs9ICcgJzsKKyAg
ICAgICAgcmVzdWx0ICs9ICdzdHJpa2VUaHJvdWdoJzsKKyAgICB9CisgICAgcmV0dXJuIHJlc3Vs
dDsKK30KKworZnVuY3Rpb24gcnVuVGVzdChjb21tYW5kLCBpbmxpbmVTdHlsZSkgeworICAgIGRv
Y3VtZW50LndyaXRlbG4oJ1Rlc3QgdG8gc2V0ICcgKyBjb21tYW5kICsgJyBieSB0eXBpbmcgY29t
bWFuZCBhbmQgYWRkICcgKyBpbmxpbmVTdHlsZSArICcgYXMgaW5saW5lIHN0eWxlOicpOworICAg
IHZhciB0ZXN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlc3QnKTsKKyAgICB0ZXN0LnN0
eWxlLnRleHREZWNvcmF0aW9uID0gbnVsbDsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuc2V0
UG9zaXRpb24odGVzdCwgMCk7CisgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoY29tbWFuZCwgZmFs
c2UsIG51bGwpOworICAgIHRlc3Quc3R5bGUudGV4dERlY29yYXRpb24gPSBpbmxpbmVTdHlsZTsK
KyAgICBpZiAocXVlcnlUZXh0RGVjb3JhdGlvbnMoKSAhPSAndW5kZXJsaW5lIHN0cmlrZVRocm91
Z2gnKQorICAgICAgICBkb2N1bWVudC53cml0ZWxuKCdGQUlMOiBnb3QgIicgKyBxdWVyeVRleHRE
ZWNvcmF0aW9ucygpICsgJyIgYnV0IGV4cGVjdGVkICJ1bmRlcmxpbmUgc3RyaWtlVGhyb3VnaCIn
KTsKKyAgICBlbHNlCisgICAgICAgIGRvY3VtZW50LndyaXRlbG4oJ1BBU1MnKTsKKyAgICBkb2N1
bWVudC53cml0ZWxuKCk7Cit9CisKK3J1blRlc3QoJ3N0cmlrZVRocm91Z2gnLCAndW5kZXJsaW5l
Jyk7Cit3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuc2V0UG9zaXRpb24odGVzdCwgMSk7CitydW5UZXN0
KCd1bmRlcmxpbmUnLCAnbGluZS10aHJvdWdoJyk7CisKKzwvc2NyaXB0PjwvcHJlPgorPC9ib2R5
PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9zdHlsZS9wdXNoLWRvd24taW5s
aW5lLXN0eWxlcy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGlu
Zy9zdHlsZS9wdXNoLWRvd24taW5saW5lLXN0eWxlcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDc5
OTgxKQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9zdHlsZS9wdXNoLWRvd24taW5saW5lLXN0eWxl
cy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTE5LDkgKzE5LDkgQEAgUEFTUyBpdGFs
aWMgY29udmVydGVkIDxzcGFuIHN0eWxlPSJmb250LQogUEFTUyB1bmRlcmxpbmUgY29udmVydGVk
IDxzcGFuIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsiPjxkaXYgaWQ9InRlc3Qi
PmhlbGxvPC9kaXY+d29ybGQ8L3NwYW4+IHRvIDxkaXYgaWQ9InRlc3QiPmhlbGxvPC9kaXY+PHU+
d29ybGQ8L3U+CiBQQVNTIHVuZGVybGluZSBjb252ZXJ0ZWQgPHNwYW4gc3R5bGU9InRleHQtZGVj
b3JhdGlvbjogdW5kZXJsaW5lOyI+PGRpdiBpZD0idGVzdCI+aGVsbG88L2Rpdj48YmxvY2txdW90
ZT53b3JsZDxicj53ZWJraXQ8L2Jsb2NrcXVvdGU+PC9zcGFuPiB0byA8ZGl2IGlkPSJ0ZXN0Ij5o
ZWxsbzwvZGl2PjxibG9ja3F1b3RlIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsg
Ij53b3JsZDxicj53ZWJraXQ8L2Jsb2NrcXVvdGU+CiBQQVNTIHVuZGVybGluZSBjb252ZXJ0ZWQg
PHNwYW4gc3R5bGU9InRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyI+aGVsbG88ZGl2IGlkPSJ0
ZXN0Ij53b3JsZDwvZGl2PndlYmtpdDwvdT4gdG8gPHU+aGVsbG88L3U+PGRpdiBpZD0idGVzdCI+
d29ybGQ8L2Rpdj48dT53ZWJraXQ8L3U+Ci1GQUlMIHVuZGVybGluZSBjb252ZXJ0ZWQgPGRpdiBz
dHlsZT0idGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7Ij48ZGl2PmhlbGxvPC9zcGFuPjwvZGl2
PjxkaXYgaWQ9InRlc3QiPndlYmtpdDwvZGl2PjxzcGFuIHN0eWxlPSJmb250LXN0eWxlOiBpdGFs
aWM7Ij5yb2Nrczwvc3Bhbj4gdG8gPGRpdj48ZGl2IHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246IHVu
ZGVybGluZTsgIj5oZWxsbzwvZGl2PjxkaXYgaWQ9InRlc3QiPndlYmtpdDwvZGl2PjxzcGFuIHN0
eWxlPSJmb250LXN0eWxlOiBpdGFsaWM7IHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyAiPnJv
Y2tzPC9zcGFuPjwvZGl2PiwgZXhwZWN0ZWQgPGRpdj48ZGl2IHN0eWxlPSJ0ZXh0LWRlY29yYXRp
b246IHVuZGVybGluZTsgIj5oZWxsbzwvc3Bhbj48L2Rpdj48ZGl2IGlkPSJ0ZXN0Ij53ZWJraXQ8
L2Rpdj48dT48c3BhbiBzdHlsZT0iZm9udC1zdHlsZTogaXRhbGljOyI+cm9ja3M8L3NwYW4+PC91
PjwvZGl2PgotUEFTUyB1bmRlcmxpbmUgY29udmVydGVkIDxzcGFuIHN0eWxlPSJ0ZXh0LWRlY29y
YXRpb246IHVuZGVybGluZTsiPjxkaXYgc3R5bGU9InRleHQtZGVjb3JhdGlvbjogbGluZS10aHJv
dWdoOyI+aGVsbG88L2Rpdj48ZGl2IGlkPSJ0ZXN0Ij53b3JsZDwvZGl2Pjwvc3Bhbj4gdG8gPGRp
diBzdHlsZT0idGV4dC1kZWNvcmF0aW9uOiBsaW5lLXRocm91Z2ggdW5kZXJsaW5lOyAiPmhlbGxv
PC9kaXY+PGRpdiBpZD0idGVzdCI+d29ybGQ8L2Rpdj4KLVBBU1Mgc3RyaWtlVGhyb3VnaCBjb252
ZXJ0ZWQgPHNwYW4gc3R5bGU9InRleHQtZGVjb3JhdGlvbjogbGluZS10aHJvdWdoOyI+PGRpdiBp
ZD0idGVzdCI+aGVsbG88L2Rpdj48ZGl2IHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246IHVuZGVybGlu
ZTsiPndvcmxkPC9kaXY+PC9zcGFuPiB0byA8ZGl2IGlkPSJ0ZXN0Ij5oZWxsbzwvZGl2PjxkaXYg
c3R5bGU9InRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lIGxpbmUtdGhyb3VnaDsgIj53b3JsZDwv
ZGl2PgorRkFJTCB1bmRlcmxpbmUgY29udmVydGVkIDxkaXYgc3R5bGU9InRleHQtZGVjb3JhdGlv
bjogdW5kZXJsaW5lOyI+PGRpdj5oZWxsbzwvc3Bhbj48L2Rpdj48ZGl2IGlkPSJ0ZXN0Ij53ZWJr
aXQ8L2Rpdj48c3BhbiBzdHlsZT0iZm9udC1zdHlsZTogaXRhbGljOyI+cm9ja3M8L3NwYW4+IHRv
IDxkaXY+PGRpdiBzdHlsZT0idGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7ICI+aGVsbG88L2Rp
dj48ZGl2IGlkPSJ0ZXN0Ij53ZWJraXQ8L2Rpdj48c3BhbiBzdHlsZT0idGV4dC1kZWNvcmF0aW9u
OiB1bmRlcmxpbmU7IGZvbnQtc3R5bGU6IGl0YWxpYzsgIj5yb2Nrczwvc3Bhbj48L2Rpdj4sIGV4
cGVjdGVkIDxkaXY+PGRpdiBzdHlsZT0idGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7ICI+aGVs
bG88L3NwYW4+PC9kaXY+PGRpdiBpZD0idGVzdCI+d2Via2l0PC9kaXY+PHU+PHNwYW4gc3R5bGU9
ImZvbnQtc3R5bGU6IGl0YWxpYzsiPnJvY2tzPC9zcGFuPjwvdT48L2Rpdj4KK1BBU1MgdW5kZXJs
aW5lIGNvbnZlcnRlZCA8c3BhbiBzdHlsZT0idGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7Ij48
ZGl2IHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246IGxpbmUtdGhyb3VnaDsiPmhlbGxvPC9kaXY+PGRp
diBpZD0idGVzdCI+d29ybGQ8L2Rpdj48L3NwYW4+IHRvIDxkaXYgc3R5bGU9InRleHQtZGVjb3Jh
dGlvbjogdW5kZXJsaW5lIGxpbmUtdGhyb3VnaDsgIj5oZWxsbzwvZGl2PjxkaXYgaWQ9InRlc3Qi
PndvcmxkPC9kaXY+CitQQVNTIHN0cmlrZVRocm91Z2ggY29udmVydGVkIDxzcGFuIHN0eWxlPSJ0
ZXh0LWRlY29yYXRpb246IGxpbmUtdGhyb3VnaDsiPjxkaXYgaWQ9InRlc3QiPmhlbGxvPC9kaXY+
PGRpdiBzdHlsZT0idGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7Ij53b3JsZDwvZGl2Pjwvc3Bh
bj4gdG8gPGRpdiBpZD0idGVzdCI+aGVsbG88L2Rpdj48ZGl2IHN0eWxlPSJ0ZXh0LWRlY29yYXRp
b246IGxpbmUtdGhyb3VnaCB1bmRlcmxpbmU7ICI+d29ybGQ8L2Rpdj4KIFBBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpJbmRleDogTGF5b3V0VGVzdHMvZWRp
dGluZy9zdHlsZS9zY3JpcHQtdGVzdHMvcHVzaC1kb3duLWlubGluZS1zdHlsZXMuanMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9zdHlsZS9zY3JpcHQtdGVzdHMvcHVzaC1kb3du
LWlubGluZS1zdHlsZXMuanMJKHJldmlzaW9uIDc5OTgxKQorKysgTGF5b3V0VGVzdHMvZWRpdGlu
Zy9zdHlsZS9zY3JpcHQtdGVzdHMvcHVzaC1kb3duLWlubGluZS1zdHlsZXMuanMJKHdvcmtpbmcg
Y29weSkKQEAgLTQwLDggKzQwLDggQEAgdGVzdFNpbmdsZVRvZ2dsZSgidW5kZXJsaW5lIiwgJzxz
cGFuIHN0eQogdGVzdFNpbmdsZVRvZ2dsZSgidW5kZXJsaW5lIiwKICAgICAnPGRpdiBzdHlsZT0i
dGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7Ij48ZGl2PmhlbGxvPC9zcGFuPjwvZGl2PjxkaXYg
aWQ9InRlc3QiPndlYmtpdDwvZGl2PjxzcGFuIHN0eWxlPSJmb250LXN0eWxlOiBpdGFsaWM7Ij5y
b2Nrczwvc3Bhbj4nLAogICAgICc8ZGl2PjxkaXYgc3R5bGU9InRleHQtZGVjb3JhdGlvbjogdW5k
ZXJsaW5lOyAiPmhlbGxvPC9zcGFuPjwvZGl2PjxkaXYgaWQ9InRlc3QiPndlYmtpdDwvZGl2Pjx1
PjxzcGFuIHN0eWxlPSJmb250LXN0eWxlOiBpdGFsaWM7Ij5yb2Nrczwvc3Bhbj48L3U+PC9kaXY+
Jyk7Ci10ZXN0U2luZ2xlVG9nZ2xlKCJ1bmRlcmxpbmUiLCAnPHNwYW4gc3R5bGU9InRleHQtZGVj
b3JhdGlvbjogdW5kZXJsaW5lOyI+PGRpdiBzdHlsZT0idGV4dC1kZWNvcmF0aW9uOiBsaW5lLXRo
cm91Z2g7Ij5oZWxsbzwvZGl2PjxkaXYgaWQ9InRlc3QiPndvcmxkPC9kaXY+PC9zcGFuPicsICc8
ZGl2IHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246IGxpbmUtdGhyb3VnaCB1bmRlcmxpbmU7ICI+aGVs
bG88L2Rpdj48ZGl2IGlkPSJ0ZXN0Ij53b3JsZDwvZGl2PicpOwotdGVzdFNpbmdsZVRvZ2dsZSgi
c3RyaWtlVGhyb3VnaCIsICc8c3BhbiBzdHlsZT0idGV4dC1kZWNvcmF0aW9uOiBsaW5lLXRocm91
Z2g7Ij48ZGl2IGlkPSJ0ZXN0Ij5oZWxsbzwvZGl2PjxkaXYgc3R5bGU9InRleHQtZGVjb3JhdGlv
bjogdW5kZXJsaW5lOyI+d29ybGQ8L2Rpdj48L3NwYW4+JywgJzxkaXYgaWQ9InRlc3QiPmhlbGxv
PC9kaXY+PGRpdiBzdHlsZT0idGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmUgbGluZS10aHJvdWdo
OyAiPndvcmxkPC9kaXY+Jyk7Cit0ZXN0U2luZ2xlVG9nZ2xlKCJ1bmRlcmxpbmUiLCAnPHNwYW4g
c3R5bGU9InRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyI+PGRpdiBzdHlsZT0idGV4dC1kZWNv
cmF0aW9uOiBsaW5lLXRocm91Z2g7Ij5oZWxsbzwvZGl2PjxkaXYgaWQ9InRlc3QiPndvcmxkPC9k
aXY+PC9zcGFuPicsICc8ZGl2IHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZSBsaW5l
LXRocm91Z2g7ICI+aGVsbG88L2Rpdj48ZGl2IGlkPSJ0ZXN0Ij53b3JsZDwvZGl2PicpOwordGVz
dFNpbmdsZVRvZ2dsZSgic3RyaWtlVGhyb3VnaCIsICc8c3BhbiBzdHlsZT0idGV4dC1kZWNvcmF0
aW9uOiBsaW5lLXRocm91Z2g7Ij48ZGl2IGlkPSJ0ZXN0Ij5oZWxsbzwvZGl2PjxkaXYgc3R5bGU9
InRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyI+d29ybGQ8L2Rpdj48L3NwYW4+JywgJzxkaXYg
aWQ9InRlc3QiPmhlbGxvPC9kaXY+PGRpdiBzdHlsZT0idGV4dC1kZWNvcmF0aW9uOiBsaW5lLXRo
cm91Z2ggdW5kZXJsaW5lOyAiPndvcmxkPC9kaXY+Jyk7CiAKIGRvY3VtZW50LmJvZHkucmVtb3Zl
Q2hpbGQodGVzdENvbnRhaW5lcik7CiAK
</data>
<flag name="review"
          id="76169"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>