<?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>233814</bug_id>
          
          <creation_ts>2021-12-03 08:16:17 -0800</creation_ts>
          <short_desc>[css-flexbox] Account for captions when flexing tables with specified sizes</short_desc>
          <delta_ts>2021-12-07 02:21:40 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sergio Villar Senin">svillar</reporter>
          <assigned_to name="Sergio Villar Senin">svillar</assigned_to>
          <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>darin</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>pdr</cc>
    
    <cc>rbuis</cc>
    
    <cc>svillar</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1820137</commentid>
    <comment_count>0</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2021-12-03 08:16:17 -0800</bug_when>
    <thetext>[css-flexbox] Account for captions when flexing tables with specified sizes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820147</commentid>
    <comment_count>1</comment_count>
      <attachid>445860</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2021-12-03 08:39:35 -0800</bug_when>
    <thetext>Created attachment 445860
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820221</commentid>
    <comment_count>2</comment_count>
      <attachid>445860</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-12-03 10:56:43 -0800</bug_when>
    <thetext>Comment on attachment 445860
Patch

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

&gt; Source/WebCore/ChangeLog:8
&gt; +        Flexing tables is complex because of the particularities of the table layout algorithms. There are

Word mistake: &quot;particularities&quot; is not a word. Maybe you mean &quot;peculiarities&quot; or you could just say &quot;details&quot; or &quot;specifics&quot;.

&gt; Source/WebCore/ChangeLog:11
&gt; +        The first one is that tables interpretate overriding sizes (flexed sizes) as the sizes of rows + captions.

Word error here: &quot;interpret&quot;, not &quot;interpretate&quot;.

&gt; Source/WebCore/rendering/RenderFlexibleBox.cpp:653
&gt;          std::optional&lt;LayoutUnit&gt; height = child.computeContentLogicalHeight(sizeType, size, cachedChildIntrinsicContentLogicalHeight(child));

Would be nice to say &quot;auto&quot; instead of writing out the std::optional.

&gt; Source/WebCore/rendering/RenderFlexibleBox.cpp:655
&gt;              return height;

This should say return std::nullopt for clarity.

&gt; Source/WebCore/rendering/RenderFlexibleBox.cpp:656
&gt; +        // Tables interpretate overriding sizes as the size of captions + rows. However the specified height of a table

Word error here: &quot;interpret&quot;, not &quot;interpretate&quot;.

&gt; Source/WebCore/rendering/RenderFlexibleBox.cpp:662
&gt; +        if (is&lt;RenderTable&gt;(child) &amp;&amp; childMainSizeIsDefinite(child, size))
&gt; +            height = height.value() + downcast&lt;RenderTable&gt;(child).computeCaptionsLogicalHeight();
&gt; +
&gt;          return height.value() + child.scrollbarLogicalHeight();

I think this is a cleaner pattern you might prefer:

    LayoutUnit captionsHeight;
    if (is&lt;RenderTable&gt;(child) &amp;&amp; childMainSizeIsDefinite(child, size)) 
        captionsHeight = downcast&lt;RenderTable&gt;(child).computeCaptionsLogicalHeight();

    return *height + child.scrollbarLogicalHeight() + captionsHeight;

&gt; Source/WebCore/rendering/RenderTable.cpp:422
&gt; +LayoutUnit RenderTable::computeCaptionsLogicalHeight() const

Not 100% sure we need to include &quot;compute&quot; in the name here. True, it’s a loop, not just a getter, but I think it’s OK to just name it without the verb. Or could include the word &quot;total&quot; or &quot;sum&quot; or something to make it more the way you’d talk about it.

&gt; Source/WebCore/rendering/RenderTable.cpp:517
&gt; +            computedLogicalHeight = std::max(computedLogicalHeight, overridingLogicalHeight() - borderAndPaddingAfter - computeCaptionsLogicalHeight());

Change log doesn’t mention the additional borderAndPaddingAfter that was missing here, presumably you needed to add it to pass the WPT tests.

The change log makes it sound like you just refactored this function, and doesn’t mention the bug fix.

&gt; Source/WebCore/rendering/RenderTable.cpp:540
&gt; +            setLogicalHeight(hasOverridingLogicalHeight() ? overridingLogicalHeight() - borderAndPaddingAfter : logicalHeight() + computedLogicalHeight);

And here it is again, good fix but not mentioned.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820925</commentid>
    <comment_count>3</comment_count>
      <attachid>445860</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2021-12-07 00:31:39 -0800</bug_when>
    <thetext>Comment on attachment 445860
Patch

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

&gt;&gt; Source/WebCore/rendering/RenderFlexibleBox.cpp:655
&gt;&gt;              return height;
&gt; 
&gt; This should say return std::nullopt for clarity.

I agree with these two changes, but since the patch does not need them, I&apos;d prefer to change them in a follow up patch.

&gt;&gt; Source/WebCore/rendering/RenderFlexibleBox.cpp:662
&gt;&gt;          return height.value() + child.scrollbarLogicalHeight();
&gt; 
&gt; I think this is a cleaner pattern you might prefer:
&gt; 
&gt;     LayoutUnit captionsHeight;
&gt;     if (is&lt;RenderTable&gt;(child) &amp;&amp; childMainSizeIsDefinite(child, size)) 
&gt;         captionsHeight = downcast&lt;RenderTable&gt;(child).computeCaptionsLogicalHeight();
&gt; 
&gt;     return *height + child.scrollbarLogicalHeight() + captionsHeight;

Changed.

&gt;&gt; Source/WebCore/rendering/RenderTable.cpp:422
&gt;&gt; +LayoutUnit RenderTable::computeCaptionsLogicalHeight() const
&gt; 
&gt; Not 100% sure we need to include &quot;compute&quot; in the name here. True, it’s a loop, not just a getter, but I think it’s OK to just name it without the verb. Or could include the word &quot;total&quot; or &quot;sum&quot; or something to make it more the way you’d talk about it.

OK, I&apos;ll use another prefix. I think it&apos;s important to have something since as you say, it isn&apos;t just a getter.

&gt;&gt; Source/WebCore/rendering/RenderTable.cpp:517
&gt;&gt; +            computedLogicalHeight = std::max(computedLogicalHeight, overridingLogicalHeight() - borderAndPaddingAfter - computeCaptionsLogicalHeight());
&gt; 
&gt; Change log doesn’t mention the additional borderAndPaddingAfter that was missing here, presumably you needed to add it to pass the WPT tests.
&gt; 
&gt; The change log makes it sound like you just refactored this function, and doesn’t mention the bug fix.

I actually did mention it, there is a whole paragraph in the ChangeLog explaining the issue with the border after the table.

&gt;&gt; Source/WebCore/rendering/RenderTable.cpp:540
&gt;&gt; +            setLogicalHeight(hasOverridingLogicalHeight() ? overridingLogicalHeight() - borderAndPaddingAfter : logicalHeight() + computedLogicalHeight);
&gt; 
&gt; And here it is again, good fix but not mentioned.

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820949</commentid>
    <comment_count>4</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2021-12-07 02:20:40 -0800</bug_when>
    <thetext>Committed r286593 (?): &lt;https://commits.webkit.org/r286593&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820950</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-12-07 02:21:40 -0800</bug_when>
    <thetext>&lt;rdar://problem/86147134&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445860</attachid>
            <date>2021-12-03 08:39:35 -0800</date>
            <delta_ts>2021-12-03 10:56:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233814-20211203173933.patch</filename>
            <type>text/plain</type>
            <size>8284</size>
            <attacher name="Sergio Villar Senin">svillar</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NDkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTJhOTdmNDdmNzFlN2Ni
NWUyYTQ2MzVhNmVmOTYwNDAxMzIzOWEyMS4uY2Y5YmQ0ZTU2ZTAwZDYxOTQ1NmU4YTgzZWRkYTIw
NDk5OWVmMmQ3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDIxLTEyLTAzICBTZXJn
aW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgorCisgICAgICAgIFtjc3MtZmxl
eGJveF0gQWNjb3VudCBmb3IgY2FwdGlvbnMgd2hlbiBmbGV4aW5nIHRhYmxlcyB3aXRoIHNwZWNp
ZmllZCBzaXplcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjMzODE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgRmxleGluZyB0YWJsZXMgaXMgY29tcGxleCBiZWNhdXNlIG9mIHRoZSBwYXJ0aWN1bGFyaXRp
ZXMgb2YgdGhlIHRhYmxlIGxheW91dCBhbGdvcml0aG1zLiBUaGVyZSBhcmUKKyAgICAgICAgdHdv
IGludGVycmVsYXRlZCBpc3N1ZXMgdGhhdCB3ZXJlIGNhdXNpbmcgc29tZSBmYWlsdXJlcyBpbiBm
bGV4Ym94IFdQVCB0ZXN0cy4KKworICAgICAgICBUaGUgZmlyc3Qgb25lIGlzIHRoYXQgdGFibGVz
IGludGVycHJldGF0ZSBvdmVycmlkaW5nIHNpemVzIChmbGV4ZWQgc2l6ZXMpIGFzIHRoZSBzaXpl
cyBvZiByb3dzICsgY2FwdGlvbnMuCisgICAgICAgIEhvd2V2ZXIgdGhlIHNwZWNpZmllZCBoZWln
aHQgb2YgYSB0YWJsZSBvbmx5IGFjY291bnRzIGZvciB0aGUgaGVpZ2h0cyBvZiB0aGUgcm93cywg
bm90IHRoZSBjYXB0aW9ucy4gVGhhdCdzCisgICAgICAgIHdoeSB3aGVuIHNldHRpbmcgdGhlIGZs
ZXhlZCBoZWlnaHQgb2YgYSB0YWJsZSB3ZSBtdXN0IGFkZCB1cCB0aGUgc3BlY2lmaWVkIGhlaWdo
dCBvZiB0aGUgdGFibGUgYW5kIHRoZSBoZWlnaHQKKyAgICAgICAgb2YgdGhlIGNhcHRpb25zLiBU
aGUgdGFibGUgYWxnb3JpdGhtIHdpbGwgcHJvcGVybHkgc3Vic3RyYWN0IHRoZSBjYXB0aW9ucycg
c2l6ZSBpbiBvcmRlciB0byBjb21wdXRlIHRoZQorICAgICAgICBhdmFpbGFibGUgaGVpZ2h0IGZv
ciByb3dzLgorCisgICAgICAgIFRoZSBzZWNvbmQgaXNzdWUgaXMgdGhhdCB0aGUgdGFibGUgbGF5
b3V0IGFsZ29yaXRobSBhZGRzIHRoZSBzaXplIG9mIHRoZSBib3R0b20gYm9yZGVyIGF0IHRoZSB2
ZXJ5IGVuZAorICAgICAgICBvZiBpdHMgZXhlY3V0aW9uIGFmdGVyIHBlcmZvcm1pbmcgYWxsIHRo
ZSBjb21wdXRhdGlvbnMgYW5kIGl0IGRvZXMgaXQgdW5jb25kaXRpb25hbGx5LiBUaGUgdGhpbmcg
aXMgdGhhdAorICAgICAgICB0aGUgZmxleGJveCBjb2RlIGFscmVhZHkgdGFrZXMgaW50byBhY2Nv
dW50IHRoZSBib3JkZXJzIGFuZCBwYWRkaW5ncyBzbyB3ZSBiYXNpY2FsbHkgaGF2ZSB0byBzdWJz
dHJhY3QgdGhhdAorICAgICAgICBib3JkZXIgd2hlbiBzZXR0aW5nIHRoZSBoZWlnaHQgb2YgdGhl
IHRhYmxlLCBiZWNhdXNlIHRoZSB0YWJsZSBsYXlvdXQgd2lsbCBhZGQgaXQgbGF0ZXIuCisKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyRmxleGlibGVCb3g6OmNvbXB1dGVNYWluQXhpc0V4dGVudEZvckNoaWxkKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVGFibGU6OmNvbXB1dGVDYXB0aW9uc0xvZ2ljYWxIZWlnaHQgY29uc3QpOiBOZXcgbWV0aG9k
IHJlZmFjdG9yZWQgZnJvbSBjdXJyZW50IGNvZGUuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJU
YWJsZTo6bGF5b3V0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGUuaDogRXhwb3Nl
IGNvbXB1dGVDYXB0aW9uc0xvZ2ljYWxIZWlnaHQuCisKIDIwMjEtMTItMDMgIEFsYW4gQnVqdGFz
ICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdW0lGQ10gTW92ZSB0aGUgKGJpZGkp
ZGlzcGxheSBib3hlcyBob3Jpem9udGFsbHkgYnkgdGhlIGlubGluZSBib3ggbWFyZ2luLCBib3Jk
ZXIgYW5kIHBhZGRpbmcgc3RhcnQgYXMgbmVlZGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcAppbmRleCA5YzFmMmQ0MjE5ZWQ3NDkzY2Q0MWFiYjJj
YWRiYzhkYTg5ZWEyMDNmLi4yNzI3YjJkOWE4NGY1ZGE4YTI1MTcyMjFjMWFkNDZkZTRmNjRkNWQ4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3gu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAK
QEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJSZW5kZXJPYmplY3RFbnVtcy5oIgogI2luY2x1
ZGUgIlJlbmRlclJlcGxhY2VkLmgiCiAjaW5jbHVkZSAiUmVuZGVyU3R5bGVDb25zdGFudHMuaCIK
KyNpbmNsdWRlICJSZW5kZXJUYWJsZS5oIgogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNs
dWRlICJXcml0aW5nTW9kZS5oIgogI2luY2x1ZGUgPGxpbWl0cz4KQEAgLTY1Miw2ICs2NTMsMTIg
QEAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJGbGV4aWJsZUJveDo6Y29tcHV0ZU1h
aW5BeGlzRXh0ZW50Rm9yQ2hpbGQoUmVuZGUKICAgICAgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRV
bml0PiBoZWlnaHQgPSBjaGlsZC5jb21wdXRlQ29udGVudExvZ2ljYWxIZWlnaHQoc2l6ZVR5cGUs
IHNpemUsIGNhY2hlZENoaWxkSW50cmluc2ljQ29udGVudExvZ2ljYWxIZWlnaHQoY2hpbGQpKTsK
ICAgICAgICAgaWYgKCFoZWlnaHQpCiAgICAgICAgICAgICByZXR1cm4gaGVpZ2h0OworICAgICAg
ICAvLyBUYWJsZXMgaW50ZXJwcmV0YXRlIG92ZXJyaWRpbmcgc2l6ZXMgYXMgdGhlIHNpemUgb2Yg
Y2FwdGlvbnMgKyByb3dzLiBIb3dldmVyIHRoZSBzcGVjaWZpZWQgaGVpZ2h0IG9mIGEgdGFibGUK
KyAgICAgICAgLy8gb25seSBpbmNsdWRlcyB0aGUgc2l6ZSBvZiB0aGUgcm93cy4gVGhhdCdzIHdo
eSB3ZSBuZWVkIHRvIGFkZCB0aGUgc2l6ZSBvZiB0aGUgY2FwdGlvbnMgaGVyZSBzbyB0aGF0IHRo
ZSB0YWJsZQorICAgICAgICAvLyBsYXlvdXQgYWxnb3JpdGhtIGJlaGF2ZXMgYXBwcm9waWF0ZWx5
LgorICAgICAgICBpZiAoaXM8UmVuZGVyVGFibGU+KGNoaWxkKSAmJiBjaGlsZE1haW5TaXplSXNE
ZWZpbml0ZShjaGlsZCwgc2l6ZSkpCisgICAgICAgICAgICBoZWlnaHQgPSBoZWlnaHQudmFsdWUo
KSArIGRvd25jYXN0PFJlbmRlclRhYmxlPihjaGlsZCkuY29tcHV0ZUNhcHRpb25zTG9naWNhbEhl
aWdodCgpOworCiAgICAgICAgIHJldHVybiBoZWlnaHQudmFsdWUoKSArIGNoaWxkLnNjcm9sbGJh
ckxvZ2ljYWxIZWlnaHQoKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUYWJsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGFibGUuY3BwCmluZGV4IGJlOWMxNWZmNDhjM2Q4MTFiMjIyODNkYmVlYzgxMzMxNWVjM2M0ZWUu
LmNkOTI3ZGQzZDA3NWFmNTFkZmVjNGQ3YWNiNjc2NGY3ODUyODRiMTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcApAQCAtNDE5LDYgKzQxOSwxNCBAQCB2b2lkIFJl
bmRlclRhYmxlOjpzaW1wbGlmaWVkTm9ybWFsRmxvd0xheW91dCgpCiAgICAgfQogfQogCitMYXlv
dXRVbml0IFJlbmRlclRhYmxlOjpjb21wdXRlQ2FwdGlvbnNMb2dpY2FsSGVpZ2h0KCkgY29uc3QK
K3sKKyAgICBMYXlvdXRVbml0IGhlaWdodDsKKyAgICBmb3IgKGF1dG8mIGNhcHRpb24gOiBtX2Nh
cHRpb25zKQorICAgICAgICBoZWlnaHQgKz0gY2FwdGlvbi0+bG9naWNhbEhlaWdodCgpICsgY2Fw
dGlvbi0+bWFyZ2luQmVmb3JlKCkgKyBjYXB0aW9uLT5tYXJnaW5BZnRlcigpOworICAgIHJldHVy
biBoZWlnaHQ7Cit9CisKIHZvaWQgUmVuZGVyVGFibGU6OmxheW91dCgpCiB7CiAgICAgU3RhY2tT
dGF0czo6TGF5b3V0Q2hlY2tQb2ludCBsYXlvdXRDaGVja1BvaW50OwpAQCAtNTA1LDEyICs1MTMs
OCBAQCB2b2lkIFJlbmRlclRhYmxlOjpsYXlvdXQoKQogICAgICAgICBpZiAobG9naWNhbEhlaWdo
dExlbmd0aC5pc0ludHJpbnNpYygpIHx8IChsb2dpY2FsSGVpZ2h0TGVuZ3RoLmlzU3BlY2lmaWVk
KCkgJiYgbG9naWNhbEhlaWdodExlbmd0aC5pc1Bvc2l0aXZlKCkpKQogICAgICAgICAgICAgY29t
cHV0ZWRMb2dpY2FsSGVpZ2h0ID0gY29udmVydFN0eWxlTG9naWNhbEhlaWdodFRvQ29tcHV0ZWRI
ZWlnaHQobG9naWNhbEhlaWdodExlbmd0aCk7CiAKLSAgICAgICAgaWYgKGhhc092ZXJyaWRpbmdM
b2dpY2FsSGVpZ2h0KCkpIHsKLSAgICAgICAgICAgIExheW91dFVuaXQgY2FwdGlvbkxvZ2ljYWxI
ZWlnaHQ7Ci0gICAgICAgICAgICBmb3IgKGF1dG8mIGNhcHRpb24gOiBtX2NhcHRpb25zKQotICAg
ICAgICAgICAgICAgIGNhcHRpb25Mb2dpY2FsSGVpZ2h0ICs9IGNhcHRpb24tPmxvZ2ljYWxIZWln
aHQoKSArIGNhcHRpb24tPm1hcmdpbkJlZm9yZSgpICsgY2FwdGlvbi0+bWFyZ2luQWZ0ZXIoKTsK
LSAgICAgICAgICAgIGNvbXB1dGVkTG9naWNhbEhlaWdodCA9IHN0ZDo6bWF4KGNvbXB1dGVkTG9n
aWNhbEhlaWdodCwgb3ZlcnJpZGluZ0xvZ2ljYWxIZWlnaHQoKSAtIGNhcHRpb25Mb2dpY2FsSGVp
Z2h0KTsKLSAgICAgICAgfQorICAgICAgICBpZiAoaGFzT3ZlcnJpZGluZ0xvZ2ljYWxIZWlnaHQo
KSkKKyAgICAgICAgICAgIGNvbXB1dGVkTG9naWNhbEhlaWdodCA9IHN0ZDo6bWF4KGNvbXB1dGVk
TG9naWNhbEhlaWdodCwgb3ZlcnJpZGluZ0xvZ2ljYWxIZWlnaHQoKSAtIGJvcmRlckFuZFBhZGRp
bmdBZnRlciAtIGNvbXB1dGVDYXB0aW9uc0xvZ2ljYWxIZWlnaHQoKSk7CiAKICAgICAgICAgTGVu
Z3RoIGxvZ2ljYWxNYXhIZWlnaHRMZW5ndGggPSBzdHlsZSgpLmxvZ2ljYWxNYXhIZWlnaHQoKTsK
ICAgICAgICAgaWYgKGxvZ2ljYWxNYXhIZWlnaHRMZW5ndGguaXNJbnRyaW5zaWMoKSB8fCAobG9n
aWNhbE1heEhlaWdodExlbmd0aC5pc1NwZWNpZmllZCgpICYmICFsb2dpY2FsTWF4SGVpZ2h0TGVu
Z3RoLmlzTmVnYXRpdmUoKSkpIHsKQEAgLTUzMyw3ICs1MzcsNyBAQCB2b2lkIFJlbmRlclRhYmxl
OjpsYXlvdXQoKQogICAgICAgICAgICAgLy8gQ29tcGxldGVseSBlbXB0eSB0YWJsZXMgKHdpdGgg
bm8gc2VjdGlvbnMgb3IgYW55dGhpbmcpIHNob3VsZCBhdCBsZWFzdCBob25vciB0aGVpcgogICAg
ICAgICAgICAgLy8gb3ZlcnJpZGluZyBvciBzcGVjaWZpZWQgaGVpZ2h0IGluIHN0cmljdCBtb2Rl
LCBidXQgdGhpcyB2YWx1ZSB3aWxsIG5vdCBiZSBjYWNoZWQuCiAgICAgICAgICAgICBzaG91bGRD
YWNoZUludHJpbnNpY0NvbnRlbnRMb2dpY2FsSGVpZ2h0Rm9yRmxleEl0ZW0gPSBmYWxzZTsKLSAg
ICAgICAgICAgIHNldExvZ2ljYWxIZWlnaHQoaGFzT3ZlcnJpZGluZ0xvZ2ljYWxIZWlnaHQoKSA/
IG92ZXJyaWRpbmdMb2dpY2FsSGVpZ2h0KCkgOiBsb2dpY2FsSGVpZ2h0KCkgKyBjb21wdXRlZExv
Z2ljYWxIZWlnaHQpOworICAgICAgICAgICAgc2V0TG9naWNhbEhlaWdodChoYXNPdmVycmlkaW5n
TG9naWNhbEhlaWdodCgpID8gb3ZlcnJpZGluZ0xvZ2ljYWxIZWlnaHQoKSAtIGJvcmRlckFuZFBh
ZGRpbmdBZnRlciA6IGxvZ2ljYWxIZWlnaHQoKSArIGNvbXB1dGVkTG9naWNhbEhlaWdodCk7CiAg
ICAgICAgIH0KIAogICAgICAgICBMYXlvdXRVbml0IHNlY3Rpb25Mb2dpY2FsTGVmdCA9IHN0eWxl
KCkuaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpID8gYm9yZGVyU3RhcnQoKSA6IGJvcmRlckVuZCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuaAppbmRleCA2M2IxNzk4MGE0YTJk
NGM1MTVhY2RjNzlhZjRkMmY5MzdmMDJmNWE5Li4yZDI2MGRiZDZkYmM5OWI5NWNiNmU3YjdhNmMw
OThmNjhlMmY1ZTU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGFibGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuaApAQCAt
MjcxLDYgKzI3MSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHdpbGxJbnNlcnRUYWJsZUNvbHVtbihS
ZW5kZXJUYWJsZUNvbCYgY2hpbGQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQpOwogICAgIHZv
aWQgd2lsbEluc2VydFRhYmxlU2VjdGlvbihSZW5kZXJUYWJsZVNlY3Rpb24mIGNoaWxkLCBSZW5k
ZXJPYmplY3QqIGJlZm9yZUNoaWxkKTsKIAorICAgIExheW91dFVuaXQgY29tcHV0ZUNhcHRpb25z
TG9naWNhbEhlaWdodCgpIGNvbnN0OworCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBzdHlsZURpZENo
YW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSkgZmluYWw7
CiAgICAgdm9pZCBzaW1wbGlmaWVkTm9ybWFsRmxvd0xheW91dCgpIGZpbmFsOwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDQw
ZmFhOWY5MGUyMWUyZWI1MjFkMDk3NTgyMWIwZmU4YzEzMGVlMGIuLjNiZWJkM2Y3M2NiMmRkYjJm
Y2UyN2VkMjQ2NGI1ZTgwNmJjYjg5MzEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAyMS0xMi0w
MyAgU2VyZ2lvIFZpbGxhciBTZW5pbiAgPHN2aWxsYXJAaWdhbGlhLmNvbT4KKworICAgICAgICBb
Y3NzLWZsZXhib3hdIEFjY291bnQgZm9yIGNhcHRpb25zIHdoZW4gZmxleGluZyB0YWJsZXMgd2l0
aCBzcGVjaWZpZWQgc2l6ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzMzgxNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogVGVzdEV4cGVjdGF0aW9uczogVW5za2lwcGVkIHR3byB0ZXN0cyB0aGF0IGFy
ZSBub3cgcGFzc2luZworCiAyMDIxLTEyLTAzICBTZXJnaW8gVmlsbGFyIFNlbmluICA8c3ZpbGxh
ckBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtjc3MtZmxleGJveF0gV1BUIGltcG9ydC4gRGVjZW1i
ZXIgMjAyMSBlZGl0aW9uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25z
IGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA0ZDVhZWU0MTBjYjUyZGY4Yzgw
NjRiNTc0MjNkOGI1ZGM5ZGQ4OWExLi4xYWM4MDMyYjVjNTc5ZjQ3ZmViMjhhNDkxMTNhMjkyZGM4
ZTdhM2U3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xh
eW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTQyMjgsOCArNDIyOCw2IEBAIHdlYmtpdC5v
cmcvYi8yMjE0NzIgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWZsZXhi
b3gvYWJzcG9zL2ZsZXgtCiB3ZWJraXQub3JnL2IvMjIxNDcyIGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY3NzL2Nzcy1mbGV4Ym94L2Fic3Bvcy9mbGV4LWFic3Bvcy1zdGF0aWNwb3Mt
bWFyZ2luLTAwMi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiAKICMgVGFibGVzIGFzIGZsZXgg
aXRlbXMuCi13ZWJraXQub3JnL2IvMjIxNDczIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvY3NzL2Nzcy1mbGV4Ym94L3RhYmxlLWFzLWl0ZW0taW5mbGV4aWJsZS1pbi1jb2x1bW4tMS5o
dG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMjIxNDczIGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1mbGV4Ym94L3RhYmxlLWFzLWl0ZW0taW5mbGV4
aWJsZS1pbi1jb2x1bW4tMi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQub3JnL2Iv
MjIxNDczIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1mbGV4Ym94L3Rh
YmxlLWFzLWl0ZW0tbWluLWhlaWdodC0xLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIAogIyBT
VkdzIGFzIGZsZXggaXRlbXMuCg==
</data>
<flag name="review"
          id="471144"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>