<?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>140883</bug_id>
          
          <creation_ts>2015-01-26 03:25:16 -0800</creation_ts>
          <short_desc>[CSS Grid Layout] Tracks growing beyond limits when they should not</short_desc>
          <delta_ts>2015-02-25 02:54:21 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</component>
          <version>528+ (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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>140763</dependson>
          <blocked>60731</blocked>
    
    <blocked>141422</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Sergio Villar Senin">svillar</reporter>
          <assigned_to name="Sergio Villar Senin">svillar</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>hyatt</cc>
    
    <cc>jfernandez</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>rego</cc>
    
    <cc>rniwa</cc>
    
    <cc>svillar</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1064125</commentid>
    <comment_count>0</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2015-01-26 03:25:16 -0800</bug_when>
    <thetext>The problem is that we&apos;re using a vector of indexes pointing to the vector with the list of affected tracks. Those indexes become easily incorrect because the first thing we do in distributeSpaceToTracks() is to sort the vector with the affected tracks by growth potential.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1069408</commentid>
    <comment_count>1</comment_count>
      <attachid>246644</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2015-02-16 04:28:42 -0800</bug_when>
    <thetext>Created attachment 246644
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1071658</commentid>
    <comment_count>2</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2015-02-24 08:03:56 -0800</bug_when>
    <thetext>Ping reviewers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1071685</commentid>
    <comment_count>3</comment_count>
      <attachid>246644</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-02-24 09:13:55 -0800</bug_when>
    <thetext>Comment on attachment 246644
Patch

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

&gt; Source/WebCore/rendering/RenderGrid.cpp:82
&gt; +    LayoutUnit m_plannedSize { 0 };

Public data members are an anti-pattern we should strive to avoid. Is there some way to do this without having it be public? Even an accessor function that returns a reference is considered slightly better.

&gt; Source/WebCore/rendering/RenderGrid.cpp:685
&gt; +        Vector&lt;GridTrack*&gt;* tracksToGrowBeyondGrowthLimits = sizingData.growBeyondGrowthLimitsTracks.isEmpty() ? &amp;sizingData.filteredTracks : &amp;sizingData.growBeyondGrowthLimitsTracks;

Seems we should use auto* or auto here instead of Vector&lt;GridTrack*&gt;*.

&gt; Source/WebCore/rendering/RenderGrid.h:58
&gt; +    typedef void (GridTrack::* AccumulatorGrowFunction)(LayoutUnit);

I don’t see anything in this patch that requires that this type be public. What did I miss?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1072022</commentid>
    <comment_count>4</comment_count>
      <attachid>246644</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2015-02-25 02:11:00 -0800</bug_when>
    <thetext>Comment on attachment 246644
Patch

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

&gt;&gt; Source/WebCore/rendering/RenderGrid.cpp:82
&gt;&gt; +    LayoutUnit m_plannedSize { 0 };
&gt; 
&gt; Public data members are an anti-pattern we should strive to avoid. Is there some way to do this without having it be public? Even an accessor function that returns a reference is considered slightly better.

I know but the code with getters/setters was full of boilerplate. I thought about returning a reference but didn&apos;t consider it was specially better.

&gt;&gt; Source/WebCore/rendering/RenderGrid.cpp:685
&gt;&gt; +        Vector&lt;GridTrack*&gt;* tracksToGrowBeyondGrowthLimits = sizingData.growBeyondGrowthLimitsTracks.isEmpty() ? &amp;sizingData.filteredTracks : &amp;sizingData.growBeyondGrowthLimitsTracks;
&gt; 
&gt; Seems we should use auto* or auto here instead of Vector&lt;GridTrack*&gt;*.

Yep.

&gt;&gt; Source/WebCore/rendering/RenderGrid.h:58
&gt;&gt; +    typedef void (GridTrack::* AccumulatorGrowFunction)(LayoutUnit);
&gt; 
&gt; I don’t see anything in this patch that requires that this type be public. What did I miss?

You&apos;re right. Somehow I slipped it in.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1072030</commentid>
    <comment_count>5</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2015-02-25 02:54:21 -0800</bug_when>
    <thetext>Committed r180623: &lt;http://trac.webkit.org/changeset/180623&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>246644</attachid>
            <date>2015-02-16 04:28:42 -0800</date>
            <delta_ts>2015-02-24 09:13:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-140883-20150216132836.patch</filename>
            <type>text/plain</type>
            <size>20869</size>
            <attacher name="Sergio Villar Senin">svillar</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgwMTQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjQ5YjY5ZGExMjViY2Fk
ZWZmYmE2NzU3NTE2ZTUxM2M0OWNmNmE5MS4uYjFkYmVmMjZiOGY4OGJhYmU1OTRjZDY0OGRjMmQ1
NmVjNDRjZjY1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQ0IEBACiAyMDE1LTAyLTEzICBTZXJn
aW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgogCisgICAgICAgIFtDU1MgR3Jp
ZCBMYXlvdXRdIFRyYWNrcyBncm93aW5nIGJleW9uZCBsaW1pdHMgd2hlbiB0aGV5IHNob3VsZCBu
b3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MDg4
MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE91ciB0
cmFjayBzaXppbmcgYWxnb3JpdGhtIGltcGxlbWVudGF0aW9uIGluY29ycmVjdGx5IGdyZXcgc29t
ZQorICAgICAgICB0cmFja3MgYmV5b25kIGxpbWl0cyB3aGVuIGhhbmRsaW5nIG1pbi1jb250ZW50
IGFuZCBtYXgtY29udGVudAorICAgICAgICBiYXNlIHNpemVzLiBJbiB0aG9zZSBjYXNlcyB3ZSBz
aG91bGQgb25seSBncm93ICJhbnkgYWZmZWN0ZWQgdHJhY2sKKyAgICAgICAgdGhhdCBoYXBwZW5z
IHRvIGFsc28gaGF2ZSBhbiBpbnRyaW5zaWMgbWF4IHRyYWNrIHNpemluZyBmdW5jdGlvbiIKKyAg
ICAgICAgb3IgYWxsIG9mIHRoZW0gaWYgdGhlcmUgYXJlIG5vbmUuCisKKyAgICAgICAgVGhlIHBy
b2JsZW0gd2FzIHRoYXQgd2UncmUgdXNpbmcgYSB2ZWN0b3Igb2YgaW5kZXhlcyBwb2ludGluZyB0
bworICAgICAgICB0aGUgdmVjdG9yIHdpdGggdGhlIGxpc3Qgb2YgYWZmZWN0ZWQgdHJhY2tzLiBU
aG9zZSBpbmRleGVzIGJlY29tZQorICAgICAgICBlYXNpbHkgaW5jb3JyZWN0IGJlY2F1c2UgdGhl
IGZpcnN0IHRoaW5nIHdlIGRvIGluCisgICAgICAgIGRpc3RyaWJ1dGVTcGFjZVRvVHJhY2tzKCkg
aXMgdG8gc29ydCB0aGUgdmVjdG9yIHdpdGggdGhlIGFmZmVjdGVkCisgICAgICAgIHRyYWNrcyBi
eSBncm93dGggcG90ZW50aWFsLgorCisgICAgICAgIEluc3RlYWQgb2YgdGhhdCB3ZSBub3cgcGFz
cyBhIHZlY3RvciB3aXRoIHBvaW50ZXJzIHRvIHRoZSBsaXN0IG9mCisgICAgICAgIHRyYWNrcyBh
bGxvd2VkIHRvIGdyb3cgb3ZlciB0aGUgbGltaXRzLiBUaGUgc2l6ZSBjaGFuZ2VzIGFyZSBub3cK
KyAgICAgICAgZGlyZWN0bHkgc3RvcmVkIGluIHRoZSBHcmlkVHJhY2tzIChpdCdzIGNhbGxlZCBw
bGFubmVkU2l6ZSkKKyAgICAgICAgaW5zdGVhZCBvZiBpbiBhIHNlcGFyYXRlIHZlY3Rvciwgc28g
d2UgZG9uJ3QgbmVlZCB0byB3b3JyeSBhYm91dAorICAgICAgICB0cmFja3MgYmVpbmcgcmVhcnJh
bmdlZCAoYW5kIHdlIGFsc28gZ2V0IHJpZCBvZiB0aGUgdWdseSB2ZWN0b3Igb2YKKyAgICAgICAg
aW5kZXhlcyBwb2ludGluZyB0byBhbm90aGVyIHZlY3RvcikuCisKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyR3JpZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjpjb21wdXRl
VXNlZEJyZWFkdGhPZkdyaWRUcmFja3MpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6
cmVzb2x2ZUNvbnRlbnRCYXNlZFRyYWNrU2l6aW5nRnVuY3Rpb25zKToKKyAgICAgICAgUGFzcyBh
IHNldFhYWCgpIGZ1bmN0aW9uIGluc3RlYWQgb2YgYSBncm93WFhYKCkgb25lIHRvIEZvckl0ZW1z
KCkuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjpyZXNvbHZlQ29udGVudEJhc2VkVHJh
Y2tTaXppbmdGdW5jdGlvbnNGb3JJdGVtcyk6CisgICAgICAgIFJlbmFtZWQgYWRkaXRpb25hbEJy
ZWFkdGhTcGFjZSB0byBleHRyYVNwYWNlIHdoaWNoIGlzIHRoZSB0ZXJtCisgICAgICAgIHVzZWQg
Ynkgc3BlY3MuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjpkaXN0cmlidXRlU3BhY2VU
b1RyYWNrcyk6IFVzZSBHcmlkVHJhY2sncworICAgICAgICBwbGFubmVkU2l6ZSBpbnN0ZWFkIG9m
IHRoZSBvbGQgZGlzdHJpYnV0aW9uIHZlY3Rvci4KKyAgICAgICAgKFdlYkNvcmU6OkdyaWRUcmFj
azo6Z3Jvd0Jhc2VTaXplKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyaWRUcmFjazo6
Z3Jvd0dyb3d0aExpbWl0KTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyR3Jp
ZC5oOgorCisyMDE1LTAyLTEzICBTZXJnaW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEu
Y29tPgorCiAgICAgICAgIFtDU1MgR3JpZCBMYXlvdXRdIEludmFsaWQgaW5pdGlhbGl6YXRpb24g
b2YgdHJhY2sgc2l6ZXMgd2l0aCBub24gc3Bhbm5pbmcgZ3JpZCBpdGVtcwogICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQwNzYzCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcAppbmRleCA4NjdiM2UzNTNiODBjNDc2ZTk2ODJlMjk0
M2I2OGU1OGY5NGQ3ZTNkLi5kMzJmN2JmZWNkOTJkZjJjMDFmNmZhNzg1OGJhMDkyNGZhZGNhYjEy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCkBAIC02OCwyNCArNjgs
NiBAQCBwdWJsaWM6CiAgICAgICAgIGVuc3VyZUdyb3d0aExpbWl0SXNCaWdnZXJUaGFuQmFzZVNp
emUoKTsKICAgICB9CiAKLSAgICB2b2lkIGdyb3dCYXNlU2l6ZShMYXlvdXRVbml0IGdyb3d0aCkK
LSAgICB7Ci0gICAgICAgIEFTU0VSVChncm93dGggPj0gMCk7Ci0gICAgICAgIG1fYmFzZVNpemUg
Kz0gZ3Jvd3RoOwotICAgICAgICBlbnN1cmVHcm93dGhMaW1pdElzQmlnZ2VyVGhhbkJhc2VTaXpl
KCk7Ci0gICAgfQotCi0gICAgdm9pZCBncm93R3Jvd3RoTGltaXQoTGF5b3V0VW5pdCBncm93dGgp
Ci0gICAgewotICAgICAgICBBU1NFUlQoZ3Jvd3RoID49IDApOwotICAgICAgICBpZiAobV9ncm93
dGhMaW1pdCA9PSBpbmZpbml0eSkKLSAgICAgICAgICAgIG1fZ3Jvd3RoTGltaXQgPSBtX2Jhc2VT
aXplICsgZ3Jvd3RoOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2dyb3d0aExpbWl0ICs9
IGdyb3d0aDsKLQotICAgICAgICBBU1NFUlQobV9ncm93dGhMaW1pdCA+PSBtX2Jhc2VTaXplKTsK
LSAgICB9Ci0KICAgICBib29sIGdyb3d0aExpbWl0SXNJbmZpbml0ZSgpIGNvbnN0CiAgICAgewog
ICAgICAgICByZXR1cm4gbV9ncm93dGhMaW1pdCA9PSBpbmZpbml0eTsKQEAgLTk3LDYgKzc5LDgg
QEAgcHVibGljOgogICAgICAgICByZXR1cm4gKG1fZ3Jvd3RoTGltaXQgPT0gaW5maW5pdHkpID8g
bV9iYXNlU2l6ZSA6IG1fZ3Jvd3RoTGltaXQ7CiAgICAgfQogCisgICAgTGF5b3V0VW5pdCBtX3Bs
YW5uZWRTaXplIHsgMCB9OworCiBwcml2YXRlOgogICAgIGJvb2wgaXNHcm93dGhMaW1pdEJpZ2dl
clRoYW5CYXNlU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIGdyb3d0aExpbWl0SXNJbmZpbml0ZSgpIHx8
IG1fZ3Jvd3RoTGltaXQgPj0gbV9iYXNlU2l6ZTsgfQogCkBAIC0yMTksOSArMjAzLDggQEAgcHVi
bGljOgogICAgIFZlY3Rvcjx1bnNpZ25lZD4gY29udGVudFNpemVkVHJhY2tzSW5kZXg7CiAKICAg
ICAvLyBQZXJmb3JtYW5jZSBvcHRpbWl6YXRpb246IGhvbGQgb250byB0aGVzZSBWZWN0b3JzIHVu
dGlsIHRoZSBlbmQgb2YgTGF5b3V0IHRvIGF2b2lkIHJlcGVhdGVkIG1hbGxvYyAvIGZyZWUuCi0g
ICAgVmVjdG9yPExheW91dFVuaXQ+IGRpc3RyaWJ1dGVUcmFja1ZlY3RvcjsKICAgICBWZWN0b3I8
R3JpZFRyYWNrKj4gZmlsdGVyZWRUcmFja3M7Ci0gICAgVmVjdG9yPHVuc2lnbmVkPiBncm93QWJv
dmVNYXhCcmVhZHRoVHJhY2tJbmRleGVzOworICAgIFZlY3RvcjxHcmlkVHJhY2sqPiBncm93QmV5
b25kR3Jvd3RoTGltaXRzVHJhY2tzOwogICAgIFZlY3RvcjxHcmlkSXRlbVdpdGhTcGFuPiBpdGVt
c1NvcnRlZEJ5SW5jcmVhc2luZ1NwYW47CiB9OwogCkBAIC0zNzgsNyArMzYxLDcgQEAgdm9pZCBS
ZW5kZXJHcmlkOjpjb21wdXRlVXNlZEJyZWFkdGhPZkdyaWRUcmFja3MoR3JpZFRyYWNrU2l6aW5n
RGlyZWN0aW9uIGRpcmVjdGkKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRyYWNr
c1NpemU7ICsraSkKICAgICAgICAgICAgIHRyYWNrc0ZvckRpc3RyaWJ1dGlvbltpXSA9IHRyYWNr
cy5kYXRhKCkgKyBpOwogCi0gICAgICAgIGRpc3RyaWJ1dGVTcGFjZVRvVHJhY2tzKHRyYWNrc0Zv
ckRpc3RyaWJ1dGlvbiwgbnVsbHB0ciwgJkdyaWRUcmFjazo6YmFzZVNpemUsICZHcmlkVHJhY2s6
Omdyb3dCYXNlU2l6ZSwgc2l6aW5nRGF0YSwgYXZhaWxhYmxlTG9naWNhbFNwYWNlKTsKKyAgICAg
ICAgZGlzdHJpYnV0ZVNwYWNlVG9UcmFja3ModHJhY2tzRm9yRGlzdHJpYnV0aW9uLCBudWxscHRy
LCAmR3JpZFRyYWNrOjpiYXNlU2l6ZSwgJkdyaWRUcmFjazo6c2V0QmFzZVNpemUsIGF2YWlsYWJs
ZUxvZ2ljYWxTcGFjZSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgZm9yIChhdXRvJiB0cmFjayA6
IHRyYWNrcykKICAgICAgICAgICAgIHRyYWNrLnNldEJhc2VTaXplKHRyYWNrLmdyb3d0aExpbWl0
KCkpOwpAQCAtNjM3LDEwICs2MjAsMTAgQEAgdm9pZCBSZW5kZXJHcmlkOjpyZXNvbHZlQ29udGVu
dEJhc2VkVHJhY2tTaXppbmdGdW5jdGlvbnMoR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW8KICAgICBz
dGQ6OnNvcnQoc2l6aW5nRGF0YS5pdGVtc1NvcnRlZEJ5SW5jcmVhc2luZ1NwYW4uYmVnaW4oKSwg
c2l6aW5nRGF0YS5pdGVtc1NvcnRlZEJ5SW5jcmVhc2luZ1NwYW4uZW5kKCkpOwogCiAgICAgZm9y
IChhdXRvJiBpdGVtV2l0aFNwYW4gOiBzaXppbmdEYXRhLml0ZW1zU29ydGVkQnlJbmNyZWFzaW5n
U3BhbikgewotICAgICAgICByZXNvbHZlQ29udGVudEJhc2VkVHJhY2tTaXppbmdGdW5jdGlvbnNG
b3JJdGVtcyhkaXJlY3Rpb24sIHNpemluZ0RhdGEsIGl0ZW1XaXRoU3BhbiwgJkdyaWRUcmFja1Np
emU6Omhhc01pbk9yTWF4Q29udGVudE1pblRyYWNrQnJlYWR0aCwgJlJlbmRlckdyaWQ6Om1pbkNv
bnRlbnRGb3JDaGlsZCwgJkdyaWRUcmFjazo6YmFzZVNpemUsICZHcmlkVHJhY2s6Omdyb3dCYXNl
U2l6ZSwgJkdyaWRUcmFja1NpemU6Omhhc01pbkNvbnRlbnRNaW5UcmFja0JyZWFkdGhBbmRNaW5P
ck1heENvbnRlbnRNYXhUcmFja0JyZWFkdGgpOwotICAgICAgICByZXNvbHZlQ29udGVudEJhc2Vk
VHJhY2tTaXppbmdGdW5jdGlvbnNGb3JJdGVtcyhkaXJlY3Rpb24sIHNpemluZ0RhdGEsIGl0ZW1X
aXRoU3BhbiwgJkdyaWRUcmFja1NpemU6Omhhc01heENvbnRlbnRNaW5UcmFja0JyZWFkdGgsICZS
ZW5kZXJHcmlkOjptYXhDb250ZW50Rm9yQ2hpbGQsICZHcmlkVHJhY2s6OmJhc2VTaXplLCAmR3Jp
ZFRyYWNrOjpncm93QmFzZVNpemUsICZHcmlkVHJhY2tTaXplOjpoYXNNYXhDb250ZW50TWluVHJh
Y2tCcmVhZHRoQW5kTWF4Q29udGVudE1heFRyYWNrQnJlYWR0aCk7Ci0gICAgICAgIHJlc29sdmVD
b250ZW50QmFzZWRUcmFja1NpemluZ0Z1bmN0aW9uc0Zvckl0ZW1zKGRpcmVjdGlvbiwgc2l6aW5n
RGF0YSwgaXRlbVdpdGhTcGFuLCAmR3JpZFRyYWNrU2l6ZTo6aGFzTWluT3JNYXhDb250ZW50TWF4
VHJhY2tCcmVhZHRoLCAmUmVuZGVyR3JpZDo6bWluQ29udGVudEZvckNoaWxkLCAmR3JpZFRyYWNr
Ojpncm93dGhMaW1pdElmTm90SW5maW5pdGUsICZHcmlkVHJhY2s6Omdyb3dHcm93dGhMaW1pdCk7
Ci0gICAgICAgIHJlc29sdmVDb250ZW50QmFzZWRUcmFja1NpemluZ0Z1bmN0aW9uc0Zvckl0ZW1z
KGRpcmVjdGlvbiwgc2l6aW5nRGF0YSwgaXRlbVdpdGhTcGFuLCAmR3JpZFRyYWNrU2l6ZTo6aGFz
TWF4Q29udGVudE1heFRyYWNrQnJlYWR0aCwgJlJlbmRlckdyaWQ6Om1heENvbnRlbnRGb3JDaGls
ZCwgJkdyaWRUcmFjazo6Z3Jvd3RoTGltaXRJZk5vdEluZmluaXRlLCAmR3JpZFRyYWNrOjpncm93
R3Jvd3RoTGltaXQpOworICAgICAgICByZXNvbHZlQ29udGVudEJhc2VkVHJhY2tTaXppbmdGdW5j
dGlvbnNGb3JJdGVtcyhkaXJlY3Rpb24sIHNpemluZ0RhdGEsIGl0ZW1XaXRoU3BhbiwgJkdyaWRU
cmFja1NpemU6Omhhc01pbk9yTWF4Q29udGVudE1pblRyYWNrQnJlYWR0aCwgJlJlbmRlckdyaWQ6
Om1pbkNvbnRlbnRGb3JDaGlsZCwgJkdyaWRUcmFjazo6YmFzZVNpemUsICZHcmlkVHJhY2s6OnNl
dEJhc2VTaXplLCAmR3JpZFRyYWNrU2l6ZTo6aGFzTWluQ29udGVudE1pblRyYWNrQnJlYWR0aEFu
ZE1pbk9yTWF4Q29udGVudE1heFRyYWNrQnJlYWR0aCk7CisgICAgICAgIHJlc29sdmVDb250ZW50
QmFzZWRUcmFja1NpemluZ0Z1bmN0aW9uc0Zvckl0ZW1zKGRpcmVjdGlvbiwgc2l6aW5nRGF0YSwg
aXRlbVdpdGhTcGFuLCAmR3JpZFRyYWNrU2l6ZTo6aGFzTWF4Q29udGVudE1pblRyYWNrQnJlYWR0
aCwgJlJlbmRlckdyaWQ6Om1heENvbnRlbnRGb3JDaGlsZCwgJkdyaWRUcmFjazo6YmFzZVNpemUs
ICZHcmlkVHJhY2s6OnNldEJhc2VTaXplLCAmR3JpZFRyYWNrU2l6ZTo6aGFzTWF4Q29udGVudE1p
blRyYWNrQnJlYWR0aEFuZE1heENvbnRlbnRNYXhUcmFja0JyZWFkdGgpOworICAgICAgICByZXNv
bHZlQ29udGVudEJhc2VkVHJhY2tTaXppbmdGdW5jdGlvbnNGb3JJdGVtcyhkaXJlY3Rpb24sIHNp
emluZ0RhdGEsIGl0ZW1XaXRoU3BhbiwgJkdyaWRUcmFja1NpemU6Omhhc01pbk9yTWF4Q29udGVu
dE1heFRyYWNrQnJlYWR0aCwgJlJlbmRlckdyaWQ6Om1pbkNvbnRlbnRGb3JDaGlsZCwgJkdyaWRU
cmFjazo6Z3Jvd3RoTGltaXRJZk5vdEluZmluaXRlLCAmR3JpZFRyYWNrOjpzZXRHcm93dGhMaW1p
dCk7CisgICAgICAgIHJlc29sdmVDb250ZW50QmFzZWRUcmFja1NpemluZ0Z1bmN0aW9uc0Zvckl0
ZW1zKGRpcmVjdGlvbiwgc2l6aW5nRGF0YSwgaXRlbVdpdGhTcGFuLCAmR3JpZFRyYWNrU2l6ZTo6
aGFzTWF4Q29udGVudE1heFRyYWNrQnJlYWR0aCwgJlJlbmRlckdyaWQ6Om1heENvbnRlbnRGb3JD
aGlsZCwgJkdyaWRUcmFjazo6Z3Jvd3RoTGltaXRJZk5vdEluZmluaXRlLCAmR3JpZFRyYWNrOjpz
ZXRHcm93dGhMaW1pdCk7CiAgICAgfQogCiAgICAgZm9yIChhdXRvIHRyYWNrSW5kZXggOiBzaXpp
bmdEYXRhLmNvbnRlbnRTaXplZFRyYWNrc0luZGV4KSB7CkBAIC02NzQsNyArNjU3LDcgQEAgdm9p
ZCBSZW5kZXJHcmlkOjpyZXNvbHZlQ29udGVudEJhc2VkVHJhY2tTaXppbmdGdW5jdGlvbnNGb3JJ
dGVtcyhHcmlkVHJhY2tTaXppbmcKICAgICBjb25zdCBHcmlkUmVzb2x2ZWRQb3NpdGlvbiBmaW5h
bFRyYWNrUG9zaXRpb24gPSAoZGlyZWN0aW9uID09IEZvckNvbHVtbnMpID8gY29vcmRpbmF0ZS5j
b2x1bW5zLnJlc29sdmVkRmluYWxQb3NpdGlvbiA6IGNvb3JkaW5hdGUucm93cy5yZXNvbHZlZEZp
bmFsUG9zaXRpb247CiAKICAgICBzaXppbmdEYXRhLmZpbHRlcmVkVHJhY2tzLnNocmluaygwKTsK
LSAgICBzaXppbmdEYXRhLmdyb3dBYm92ZU1heEJyZWFkdGhUcmFja0luZGV4ZXMuc2hyaW5rKDAp
OworICAgIHNpemluZ0RhdGEuZ3Jvd0JleW9uZEdyb3d0aExpbWl0c1RyYWNrcy5zaHJpbmsoMCk7
CiAgICAgZm9yIChHcmlkUmVzb2x2ZWRQb3NpdGlvbiB0cmFja0luZGV4ID0gaW5pdGlhbFRyYWNr
UG9zaXRpb247IHRyYWNrSW5kZXggPD0gZmluYWxUcmFja1Bvc2l0aW9uOyArK3RyYWNrSW5kZXgp
IHsKICAgICAgICAgY29uc3QgR3JpZFRyYWNrU2l6ZSYgdHJhY2tTaXplID0gZ3JpZFRyYWNrU2l6
ZShkaXJlY3Rpb24sIHRyYWNrSW5kZXgudG9JbnQoKSk7CiAgICAgICAgIGlmICghKHRyYWNrU2l6
ZS4qZmlsdGVyRnVuY3Rpb24pKCkpCkBAIC02ODMsMjMgKzY2NiwyNSBAQCB2b2lkIFJlbmRlckdy
aWQ6OnJlc29sdmVDb250ZW50QmFzZWRUcmFja1NpemluZ0Z1bmN0aW9uc0Zvckl0ZW1zKEdyaWRU
cmFja1NpemluZwogICAgICAgICBHcmlkVHJhY2smIHRyYWNrID0gKGRpcmVjdGlvbiA9PSBGb3JD
b2x1bW5zKSA/IHNpemluZ0RhdGEuY29sdW1uVHJhY2tzW3RyYWNrSW5kZXgudG9JbnQoKV0gOiBz
aXppbmdEYXRhLnJvd1RyYWNrc1t0cmFja0luZGV4LnRvSW50KCldOwogICAgICAgICBzaXppbmdE
YXRhLmZpbHRlcmVkVHJhY2tzLmFwcGVuZCgmdHJhY2spOwogCi0gICAgICAgIGlmIChncm93QWJv
dmVNYXhCcmVhZHRoRmlsdGVyRnVuY3Rpb24gJiYgKHRyYWNrU2l6ZS4qZ3Jvd0Fib3ZlTWF4QnJl
YWR0aEZpbHRlckZ1bmN0aW9uKSgpKQotICAgICAgICAgICAgc2l6aW5nRGF0YS5ncm93QWJvdmVN
YXhCcmVhZHRoVHJhY2tJbmRleGVzLmFwcGVuZChzaXppbmdEYXRhLmZpbHRlcmVkVHJhY2tzLnNp
emUoKSAtIDEpOworICAgICAgICBpZiAoIWdyb3dBYm92ZU1heEJyZWFkdGhGaWx0ZXJGdW5jdGlv
biB8fCAodHJhY2tTaXplLipncm93QWJvdmVNYXhCcmVhZHRoRmlsdGVyRnVuY3Rpb24pKCkpCisg
ICAgICAgICAgICBzaXppbmdEYXRhLmdyb3dCZXlvbmRHcm93dGhMaW1pdHNUcmFja3MuYXBwZW5k
KCZ0cmFjayk7CiAgICAgfQogCiAgICAgaWYgKHNpemluZ0RhdGEuZmlsdGVyZWRUcmFja3MuaXNF
bXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBMYXlvdXRVbml0IGFkZGl0aW9uYWxCcmVh
ZHRoU3BhY2UgPSAodGhpcy0+KnNpemluZ0Z1bmN0aW9uKShncmlkSXRlbVdpdGhTcGFuLmdyaWRJ
dGVtKCksIGRpcmVjdGlvbiwgc2l6aW5nRGF0YS5jb2x1bW5UcmFja3MpOworICAgIExheW91dFVu
aXQgZXh0cmFTcGFjZSA9ICh0aGlzLT4qc2l6aW5nRnVuY3Rpb24pKGdyaWRJdGVtV2l0aFNwYW4u
Z3JpZEl0ZW0oKSwgZGlyZWN0aW9uLCBzaXppbmdEYXRhLmNvbHVtblRyYWNrcyk7CiAgICAgZm9y
IChHcmlkUmVzb2x2ZWRQb3NpdGlvbiB0cmFja1Bvc2l0aW9uRm9yU3BhY2UgPSBpbml0aWFsVHJh
Y2tQb3NpdGlvbjsgdHJhY2tQb3NpdGlvbkZvclNwYWNlIDw9IGZpbmFsVHJhY2tQb3NpdGlvbjsg
Kyt0cmFja1Bvc2l0aW9uRm9yU3BhY2UpIHsKICAgICAgICAgR3JpZFRyYWNrJiB0cmFjayA9IChk
aXJlY3Rpb24gPT0gRm9yQ29sdW1ucykgPyBzaXppbmdEYXRhLmNvbHVtblRyYWNrc1t0cmFja1Bv
c2l0aW9uRm9yU3BhY2UudG9JbnQoKV0gOiBzaXppbmdEYXRhLnJvd1RyYWNrc1t0cmFja1Bvc2l0
aW9uRm9yU3BhY2UudG9JbnQoKV07Ci0gICAgICAgIGFkZGl0aW9uYWxCcmVhZHRoU3BhY2UgLT0g
KHRyYWNrLip0cmFja0dldHRlcikoKTsKKyAgICAgICAgZXh0cmFTcGFjZSAtPSAodHJhY2suKnRy
YWNrR2V0dGVyKSgpOwogICAgIH0KIAotICAgIC8vIFNwZWNzIG1hbmRhdGUgdG8gZmxvb3IgYWRk
aXRpb25hbEJyZWFkdGhTcGFjZSAoZXh0cmEtc3BhY2UgaW4gc3BlY3MpIHRvIDAuIEluc3RlYWQg
d2UgZGlyZWN0bHkgYXZvaWQgdGhlIGZ1bmN0aW9uCi0gICAgLy8gY2FsbCBpbiB0aG9zZSBjYXNl
cyBhcyBpdCB3aWxsIGJlIGEgbm9vcCBpbiB0ZXJtcyBvZiB0cmFjayBzaXppbmcuCi0gICAgaWYg
KGFkZGl0aW9uYWxCcmVhZHRoU3BhY2UgPiAwKQotICAgICAgICBkaXN0cmlidXRlU3BhY2VUb1Ry
YWNrcyhzaXppbmdEYXRhLmZpbHRlcmVkVHJhY2tzLCAmc2l6aW5nRGF0YS5ncm93QWJvdmVNYXhC
cmVhZHRoVHJhY2tJbmRleGVzLCB0cmFja0dldHRlciwgdHJhY2tHcm93dGhGdW5jdGlvbiwgc2l6
aW5nRGF0YSwgYWRkaXRpb25hbEJyZWFkdGhTcGFjZSk7CisgICAgLy8gU3BlY3MgbWFuZGF0ZSB0
byBmbG9vciBleHRyYVNwYWNlIHRvIDAuIEluc3RlYWQgd2UgZGlyZWN0bHkgYXZvaWQgdGhlIGZ1
bmN0aW9uIGNhbGwgaW4gdGhvc2UgY2FzZXMgYXMgaXQgd2lsbCBiZQorICAgIC8vIGEgbm9vcCBp
biB0ZXJtcyBvZiB0cmFjayBzaXppbmcuCisgICAgaWYgKGV4dHJhU3BhY2UgPiAwKSB7CisgICAg
ICAgIFZlY3RvcjxHcmlkVHJhY2sqPiogdHJhY2tzVG9Hcm93QmV5b25kR3Jvd3RoTGltaXRzID0g
c2l6aW5nRGF0YS5ncm93QmV5b25kR3Jvd3RoTGltaXRzVHJhY2tzLmlzRW1wdHkoKSA/ICZzaXpp
bmdEYXRhLmZpbHRlcmVkVHJhY2tzIDogJnNpemluZ0RhdGEuZ3Jvd0JleW9uZEdyb3d0aExpbWl0
c1RyYWNrczsKKyAgICAgICAgZGlzdHJpYnV0ZVNwYWNlVG9UcmFja3Moc2l6aW5nRGF0YS5maWx0
ZXJlZFRyYWNrcywgdHJhY2tzVG9Hcm93QmV5b25kR3Jvd3RoTGltaXRzLCB0cmFja0dldHRlciwg
dHJhY2tHcm93dGhGdW5jdGlvbiwgZXh0cmFTcGFjZSk7CisgICAgfQogfQogCiBzdGF0aWMgYm9v
bCBzb3J0QnlHcmlkVHJhY2tHcm93dGhQb3RlbnRpYWwoY29uc3QgR3JpZFRyYWNrKiB0cmFjazEs
IGNvbnN0IEdyaWRUcmFjayogdHJhY2syKQpAQCAtNzE1LDQ4ICs3MDAsNDEgQEAgc3RhdGljIGJv
b2wgc29ydEJ5R3JpZFRyYWNrR3Jvd3RoUG90ZW50aWFsKGNvbnN0IEdyaWRUcmFjayogdHJhY2sx
LCBjb25zdCBHcmlkVHIKICAgICByZXR1cm4gKHRyYWNrMS0+Z3Jvd3RoTGltaXQoKSAtIHRyYWNr
MS0+YmFzZVNpemUoKSkgPCAodHJhY2syLT5ncm93dGhMaW1pdCgpIC0gdHJhY2syLT5iYXNlU2l6
ZSgpKTsKIH0KIAotdm9pZCBSZW5kZXJHcmlkOjpkaXN0cmlidXRlU3BhY2VUb1RyYWNrcyhWZWN0
b3I8R3JpZFRyYWNrKj4mIHRyYWNrcywgVmVjdG9yPHVuc2lnbmVkPiogZ3Jvd0Fib3ZlTWF4QnJl
YWR0aFRyYWNrSW5kZXhlcywgQWNjdW11bGF0b3JHZXR0ZXIgdHJhY2tHZXR0ZXIsIEFjY3VtdWxh
dG9yR3Jvd0Z1bmN0aW9uIHRyYWNrR3Jvd3RoRnVuY3Rpb24sIEdyaWRTaXppbmdEYXRhJiBzaXpp
bmdEYXRhLCBMYXlvdXRVbml0JiBhdmFpbGFibGVMb2dpY2FsU3BhY2UpCit2b2lkIFJlbmRlckdy
aWQ6OmRpc3RyaWJ1dGVTcGFjZVRvVHJhY2tzKFZlY3RvcjxHcmlkVHJhY2sqPiYgdHJhY2tzLCBj
b25zdCBWZWN0b3I8R3JpZFRyYWNrKj4qIGdyb3dCZXlvbmRHcm93dGhMaW1pdHNUcmFja3MsIEFj
Y3VtdWxhdG9yR2V0dGVyIHRyYWNrR2V0dGVyLCBBY2N1bXVsYXRvckdyb3dGdW5jdGlvbiB0cmFj
a0dyb3d0aEZ1bmN0aW9uLCBMYXlvdXRVbml0JiBhdmFpbGFibGVMb2dpY2FsU3BhY2UpCiB7CiAg
ICAgQVNTRVJUKGF2YWlsYWJsZUxvZ2ljYWxTcGFjZSA+IDApOwogICAgIHN0ZDo6c29ydCh0cmFj
a3MuYmVnaW4oKSwgdHJhY2tzLmVuZCgpLCBzb3J0QnlHcmlkVHJhY2tHcm93dGhQb3RlbnRpYWwp
OwogCiAgICAgdW5zaWduZWQgdHJhY2tzU2l6ZSA9IHRyYWNrcy5zaXplKCk7Ci0gICAgc2l6aW5n
RGF0YS5kaXN0cmlidXRlVHJhY2tWZWN0b3IucmVzaXplKHRyYWNrc1NpemUpOwogCiAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IHRyYWNrc1NpemU7ICsraSkgewogICAgICAgICBHcmlkVHJh
Y2smIHRyYWNrID0gKnRyYWNrc1tpXTsKLSAgICAgICAgY29uc3QgTGF5b3V0VW5pdCYgdHJhY2tC
cmVhZHRoID0gKHRyYWNrc1tpXS0+KnRyYWNrR2V0dGVyKSgpOworICAgICAgICBjb25zdCBMYXlv
dXRVbml0JiB0cmFja0JyZWFkdGggPSAodHJhY2suKnRyYWNrR2V0dGVyKSgpOwogICAgICAgICBi
b29sIGluZmluaXRlR3Jvd3RoUG90ZW50aWFsID0gdHJhY2suZ3Jvd3RoTGltaXRJc0luZmluaXRl
KCk7CiAgICAgICAgIExheW91dFVuaXQgdHJhY2tHcm93dGhQb3RlbnRpYWwgPSBpbmZpbml0ZUdy
b3d0aFBvdGVudGlhbCA/IHRyYWNrLmdyb3d0aExpbWl0KCkgOiB0cmFjay5ncm93dGhMaW1pdCgp
IC0gdHJhY2tCcmVhZHRoOwotICAgICAgICBzaXppbmdEYXRhLmRpc3RyaWJ1dGVUcmFja1ZlY3Rv
cltpXSA9IHRyYWNrQnJlYWR0aDsKKyAgICAgICAgdHJhY2subV9wbGFubmVkU2l6ZSA9IHRyYWNr
QnJlYWR0aDsKICAgICAgICAgLy8gTGV0J3MgYXZvaWQgY29tcHV0aW5nIGF2YWlsYWJsZUxvZ2lj
YWxTcGFjZVNoYXJlIGFzIG11Y2ggYXMgcG9zc2libGUgYXMgaXQncyBhIGhvdCBzcG90IGluIHBl
cmZvcm1hbmNlIHRlc3RzLgogICAgICAgICBpZiAodHJhY2tHcm93dGhQb3RlbnRpYWwgPiAwIHx8
IGluZmluaXRlR3Jvd3RoUG90ZW50aWFsKSB7CiAgICAgICAgICAgICBMYXlvdXRVbml0IGF2YWls
YWJsZUxvZ2ljYWxTcGFjZVNoYXJlID0gYXZhaWxhYmxlTG9naWNhbFNwYWNlIC8gKHRyYWNrc1Np
emUgLSBpKTsKICAgICAgICAgICAgIExheW91dFVuaXQgZ3Jvd3RoU2hhcmUgPSBpbmZpbml0ZUdy
b3d0aFBvdGVudGlhbCA/IGF2YWlsYWJsZUxvZ2ljYWxTcGFjZVNoYXJlIDogc3RkOjptaW4oYXZh
aWxhYmxlTG9naWNhbFNwYWNlU2hhcmUsIHRyYWNrR3Jvd3RoUG90ZW50aWFsKTsKICAgICAgICAg
ICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoZ3Jvd3RoU2hhcmUgPj0gMCwgIldlIHNob3VsZCBuZXZl
ciBzaHJpbmsgYW55IGdyaWQgdHJhY2sgb3IgZWxzZSB3ZSBjYW4ndCBndWFyYW50ZWUgd2UgYWJp
ZGUgYnkgb3VyIG1pbi1zaXppbmcgZnVuY3Rpb24uIFdlIGNhbiBzdGlsbCBoYXZlIDAgYXMgZ3Jv
d3RoU2hhcmUgaWYgdGhlIGFtb3VudCBvZiB0cmFja3MgZ3JlYXRseSBleGNlZWRzIHRoZSBhdmFp
bGFibGVMb2dpY2FsU3BhY2UuIik7Ci0gICAgICAgICAgICBzaXppbmdEYXRhLmRpc3RyaWJ1dGVU
cmFja1ZlY3RvcltpXSArPSBncm93dGhTaGFyZTsKKyAgICAgICAgICAgIHRyYWNrLm1fcGxhbm5l
ZFNpemUgKz0gZ3Jvd3RoU2hhcmU7CiAgICAgICAgICAgICBhdmFpbGFibGVMb2dpY2FsU3BhY2Ug
LT0gZ3Jvd3RoU2hhcmU7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAoYXZhaWxhYmxlTG9n
aWNhbFNwYWNlID4gMCAmJiBncm93QWJvdmVNYXhCcmVhZHRoVHJhY2tJbmRleGVzKSB7Ci0gICAg
ICAgIHVuc2lnbmVkIGluZGV4ZXNTaXplID0gZ3Jvd0Fib3ZlTWF4QnJlYWR0aFRyYWNrSW5kZXhl
cy0+c2l6ZSgpOwotICAgICAgICB1bnNpZ25lZCB0cmFja3NHcm93aW5nQWJvdmVNYXhCcmVhZHRo
U2l6ZSA9IGluZGV4ZXNTaXplID8gaW5kZXhlc1NpemUgOiB0cmFja3NTaXplOwotICAgICAgICAv
LyBJZiB3ZSBoYXZlIGEgbm9uLW51bGwgZW1wdHkgdmVjdG9yIG9mIHRyYWNrIGluZGV4ZXMgdG8g
Z3JvdyBhYm92ZSBtYXggYnJlYWR0aCBtZWFucyB0aGF0IHdlIHNob3VsZCBncm93IGFsbAotICAg
ICAgICAvLyBhZmZlY3RlZCB0cmFja3MuCi0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCB0cmFja3NHcm93aW5nQWJvdmVNYXhCcmVhZHRoU2l6ZTsgKytpKSB7Ci0gICAgICAgICAgICBM
YXlvdXRVbml0IGdyb3d0aFNoYXJlID0gYXZhaWxhYmxlTG9naWNhbFNwYWNlIC8gKHRyYWNrc0dy
b3dpbmdBYm92ZU1heEJyZWFkdGhTaXplIC0gaSk7Ci0gICAgICAgICAgICB1bnNpZ25lZCBkaXN0
cmlidXRlVHJhY2tJbmRleCA9IGluZGV4ZXNTaXplID8gZ3Jvd0Fib3ZlTWF4QnJlYWR0aFRyYWNr
SW5kZXhlcy0+YXQoaSkgOiBpOwotICAgICAgICAgICAgc2l6aW5nRGF0YS5kaXN0cmlidXRlVHJh
Y2tWZWN0b3JbZGlzdHJpYnV0ZVRyYWNrSW5kZXhdICs9IGdyb3d0aFNoYXJlOworICAgIGlmIChh
dmFpbGFibGVMb2dpY2FsU3BhY2UgPiAwICYmIGdyb3dCZXlvbmRHcm93dGhMaW1pdHNUcmFja3Mp
IHsKKyAgICAgICAgdW5zaWduZWQgdHJhY2tzR3Jvd2luZ0JleW9uZEdyb3d0aExpbWl0c1NpemUg
PSBncm93QmV5b25kR3Jvd3RoTGltaXRzVHJhY2tzLT5zaXplKCk7CisgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCB0cmFja3NHcm93aW5nQmV5b25kR3Jvd3RoTGltaXRzU2l6ZTsgKytp
KSB7CisgICAgICAgICAgICBHcmlkVHJhY2sqIHRyYWNrID0gZ3Jvd0JleW9uZEdyb3d0aExpbWl0
c1RyYWNrcy0+YXQoaSk7CisgICAgICAgICAgICBMYXlvdXRVbml0IGdyb3d0aFNoYXJlID0gYXZh
aWxhYmxlTG9naWNhbFNwYWNlIC8gKHRyYWNrc0dyb3dpbmdCZXlvbmRHcm93dGhMaW1pdHNTaXpl
IC0gaSk7CisgICAgICAgICAgICB0cmFjay0+bV9wbGFubmVkU2l6ZSArPSBncm93dGhTaGFyZTsK
ICAgICAgICAgICAgIGF2YWlsYWJsZUxvZ2ljYWxTcGFjZSAtPSBncm93dGhTaGFyZTsKICAgICAg
ICAgfQogICAgIH0KIAotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0cmFja3NTaXplOyAr
K2kpIHsKLSAgICAgICAgTGF5b3V0VW5pdCBncm93dGggPSBzaXppbmdEYXRhLmRpc3RyaWJ1dGVU
cmFja1ZlY3RvcltpXSAtICh0cmFja3NbaV0tPip0cmFja0dldHRlcikoKTsKLSAgICAgICAgaWYg
KGdyb3d0aCA+PSAwKQotICAgICAgICAgICAgKHRyYWNrc1tpXS0+KnRyYWNrR3Jvd3RoRnVuY3Rp
b24pKGdyb3d0aCk7Ci0gICAgfQorICAgIGZvciAoYXV0byogdHJhY2sgOiB0cmFja3MpCisgICAg
ICAgICh0cmFjay0+KnRyYWNrR3Jvd3RoRnVuY3Rpb24pKHRyYWNrLT5tX3BsYW5uZWRTaXplKTsK
IH0KIAogI2lmbmRlZiBOREVCVUcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJHcmlkLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5oCmlu
ZGV4IDExZTRmMTI2ZTBmMGM3ODdjMTMyMDMzOTU4ZDY1MWVhYzk5MDZkMTIuLjBhZWVhYzQwOTAx
MWM4YzVkNzJkYWQxNTY2NmFiZDk3ZTAzYzlkNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJHcmlkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckdyaWQuaApAQCAtNTUsNiArNTUsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgVmVjdG9yPExh
eW91dFVuaXQ+JiBjb2x1bW5Qb3NpdGlvbnMoKSBjb25zdCB7IHJldHVybiBtX2NvbHVtblBvc2l0
aW9uczsgfQogICAgIGNvbnN0IFZlY3RvcjxMYXlvdXRVbml0PiYgcm93UG9zaXRpb25zKCkgY29u
c3QgeyByZXR1cm4gbV9yb3dQb3NpdGlvbnM7IH0KIAorICAgIHR5cGVkZWYgdm9pZCAoR3JpZFRy
YWNrOjoqIEFjY3VtdWxhdG9yR3Jvd0Z1bmN0aW9uKShMYXlvdXRVbml0KTsKIHByaXZhdGU6CiAg
ICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAg
dmlydHVhbCBib29sIGlzUmVuZGVyR3JpZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7
IH0KQEAgLTg5LDExICs5MCwxMCBAQCBwcml2YXRlOgogCiAgICAgdHlwZWRlZiBMYXlvdXRVbml0
IChSZW5kZXJHcmlkOjoqIFNpemluZ0Z1bmN0aW9uKShSZW5kZXJCb3gmLCBHcmlkVHJhY2tTaXpp
bmdEaXJlY3Rpb24sIFZlY3RvcjxHcmlkVHJhY2s+Jik7CiAgICAgdHlwZWRlZiBjb25zdCBMYXlv
dXRVbml0JiAoR3JpZFRyYWNrOjoqIEFjY3VtdWxhdG9yR2V0dGVyKSgpIGNvbnN0OwotICAgIHR5
cGVkZWYgdm9pZCAoR3JpZFRyYWNrOjoqIEFjY3VtdWxhdG9yR3Jvd0Z1bmN0aW9uKShMYXlvdXRV
bml0KTsKICAgICB0eXBlZGVmIGJvb2wgKEdyaWRUcmFja1NpemU6OiogRmlsdGVyRnVuY3Rpb24p
KCkgY29uc3Q7CiAgICAgdm9pZCByZXNvbHZlQ29udGVudEJhc2VkVHJhY2tTaXppbmdGdW5jdGlv
bnNGb3JOb25TcGFubmluZ0l0ZW1zKEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiwgY29uc3QgR3Jp
ZENvb3JkaW5hdGUmLCBSZW5kZXJCb3gmIGdyaWRJdGVtLCBHcmlkVHJhY2smLCBWZWN0b3I8R3Jp
ZFRyYWNrPiYgY29sdW1uVHJhY2tzKTsKICAgICB2b2lkIHJlc29sdmVDb250ZW50QmFzZWRUcmFj
a1NpemluZ0Z1bmN0aW9uc0Zvckl0ZW1zKEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiwgR3JpZFNp
emluZ0RhdGEmLCBHcmlkSXRlbVdpdGhTcGFuJiwgRmlsdGVyRnVuY3Rpb24sIFNpemluZ0Z1bmN0
aW9uLCBBY2N1bXVsYXRvckdldHRlciwgQWNjdW11bGF0b3JHcm93RnVuY3Rpb24sIEZpbHRlckZ1
bmN0aW9uIGdyb3dBYm92ZU1heEJyZWFkdGhGaWx0ZXJGdW5jdGlvbiA9IG51bGxwdHIpOwotICAg
IHZvaWQgZGlzdHJpYnV0ZVNwYWNlVG9UcmFja3MoVmVjdG9yPEdyaWRUcmFjayo+JiwgVmVjdG9y
PHVuc2lnbmVkPiogZ3Jvd0Fib3ZlTWF4QnJlYWR0aFRyYWNrSW5kZXhlcywgQWNjdW11bGF0b3JH
ZXR0ZXIsIEFjY3VtdWxhdG9yR3Jvd0Z1bmN0aW9uLCBHcmlkU2l6aW5nRGF0YSYsIExheW91dFVu
aXQmIGF2YWlsYWJsZUxvZ2ljYWxTcGFjZSk7CisgICAgdm9pZCBkaXN0cmlidXRlU3BhY2VUb1Ry
YWNrcyhWZWN0b3I8R3JpZFRyYWNrKj4mLCBjb25zdCBWZWN0b3I8R3JpZFRyYWNrKj4qIGdyb3dC
ZXlvbmRHcm93dGhMaW1pdHNUcmFja3MsIEFjY3VtdWxhdG9yR2V0dGVyLCBBY2N1bXVsYXRvckdy
b3dGdW5jdGlvbiwgTGF5b3V0VW5pdCYgYXZhaWxhYmxlTG9naWNhbFNwYWNlKTsKIAogICAgIGRv
dWJsZSBjb21wdXRlTm9ybWFsaXplZEZyYWN0aW9uQnJlYWR0aChWZWN0b3I8R3JpZFRyYWNrPiYs
IGNvbnN0IEdyaWRTcGFuJiB0cmFja3NTcGFuLCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24sIExh
eW91dFVuaXQgYXZhaWxhYmxlTG9naWNhbFNwYWNlKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGZlN2VlNzUx
OGUxN2U5NDY0YzUyMzA3M2ZiNDI3YjhjYmY0OTdhODEuLjI3Njg3NmNiMmJlODg4Y2VlNjhhYzEx
N2MyMjg3ZjUwNzMwNzI3YjggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxNS0wMS0yNiAgU2Vy
Z2lvIFZpbGxhciBTZW5pbiAgPHN2aWxsYXJAaWdhbGlhLmNvbT4KKworICAgICAgICBbQ1NTIEdy
aWQgTGF5b3V0XSBUcmFja3MgZ3Jvd2luZyBiZXlvbmQgbGltaXRzIHdoZW4gdGhleSBzaG91bGQg
bm90CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDA4
ODMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZh
c3QvY3NzLWdyaWQtbGF5b3V0L2dyaWQtY29udGVudC1zaXplZC1jb2x1bW5zLXJlc29sdXRpb24t
ZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvY3NzLWdyaWQtbGF5b3V0L2dyaWQtY29udGVu
dC1zaXplZC1jb2x1bW5zLXJlc29sdXRpb24uaHRtbDoKKwogMjAxNS0wMi0xMyAgU2VyZ2lvIFZp
bGxhciBTZW5pbiAgPHN2aWxsYXJAaWdhbGlhLmNvbT4KIAogICAgICAgICBbQ1NTIEdyaWQgTGF5
b3V0XSBJbnZhbGlkIGluaXRpYWxpemF0aW9uIG9mIHRyYWNrIHNpemVzIHdpdGggbm9uIHNwYW5u
aW5nIGdyaWQgaXRlbXMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzLWdyaWQtbGF5
b3V0L2dyaWQtY29udGVudC1zaXplZC1jb2x1bW5zLXJlc29sdXRpb24tZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvZmFzdC9jc3MtZ3JpZC1sYXlvdXQvZ3JpZC1jb250ZW50LXNpemVkLWNvbHVt
bnMtcmVzb2x1dGlvbi1leHBlY3RlZC50eHQKaW5kZXggNTYwNzI0NTY0OWQ3ZjM1ZjNjMjkyNTcy
NTFlMDg2YTRiOTBkNTQ0Yi4uN2UyMWQ4NDQ2ZmU3MDdhMDViMjllY2RkYWNlNDljZGU5N2YwMDBm
YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MtZ3JpZC1sYXlvdXQvZ3JpZC1jb250
ZW50LXNpemVkLWNvbHVtbnMtcmVzb2x1dGlvbi1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9jc3MtZ3JpZC1sYXlvdXQvZ3JpZC1jb250ZW50LXNpemVkLWNvbHVtbnMtcmVzb2x1
dGlvbi1leHBlY3RlZC50eHQKQEAgLTQyLDYgKzQyLDggQEAgUEFTUyB3aW5kb3cuZ2V0Q29tcHV0
ZWRTdHlsZShncmlkTWluQ29udGVudEZpeGVkQW5kQXV0b0Fib3ZlTGltaXRzLCAnJykuZ2V0UHJv
cGUKIFBBU1Mgd2luZG93LmdldENvbXB1dGVkU3R5bGUoZ3JpZE1heENvbnRlbnRGaXhlZEFuZEF1
dG9BYm92ZUxpbWl0cywgJycpLmdldFByb3BlcnR5VmFsdWUoJy13ZWJraXQtZ3JpZC10ZW1wbGF0
ZS1jb2x1bW5zJykgaXMgIjY1cHggODVweCIKIFBBU1Mgd2luZG93LmdldENvbXB1dGVkU3R5bGUo
Z3JpZE1pbkNvbnRlbnRGaXhlZEFuZEZpeGVkRml4ZWRBbmRBdXRvLCAnJykuZ2V0UHJvcGVydHlW
YWx1ZSgnLXdlYmtpdC1ncmlkLXRlbXBsYXRlLWNvbHVtbnMnKSBpcyAiMjBweCAyMHB4IDYwcHgi
CiBQQVNTIHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGdyaWRBdXRvQW5kRml4ZWRGaXhlZEFuZE1h
eENvbnRlbnRGaXhlZCwgJycpLmdldFByb3BlcnR5VmFsdWUoJy13ZWJraXQtZ3JpZC10ZW1wbGF0
ZS1jb2x1bW5zJykgaXMgIjcwcHggMjBweCA2MHB4IgorUEFTUyB3aW5kb3cuZ2V0Q29tcHV0ZWRT
dHlsZShncmlkTWF4Q29udGVudEFuZE1heENvbnRlbnRGaXhlZEFuZE1heENvbnRlbnQsICcnKS5n
ZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0LWdyaWQtdGVtcGxhdGUtY29sdW1ucycpIGlzICI3MHB4
IDIwcHggNTBweCIKK1BBU1Mgd2luZG93LmdldENvbXB1dGVkU3R5bGUoZ3JpZEF1dG9BbmRNaW5D
b250ZW50Rml4ZWRBbmRNaW5Db250ZW50LCAnJykuZ2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC1n
cmlkLXRlbXBsYXRlLWNvbHVtbnMnKSBpcyAiNTVweCAzMHB4IDY1cHgiCiBQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKQEAgLTEyOSwzICsxMzEsOSBAQCBY
WFhYIFhYWFgKIFhYWFhYWFhYWFgKIFhYWFggWFhYWAogWFhYWFhYWFhYWFhYWFhYCitYIFggWAor
WCBYCitYWCBYWCBYWCBYWCBYWAorWFgKK1hYWFhYWFhYWFhYWFhYWAorWFhYIFhYWApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MtZ3JpZC1sYXlvdXQvZ3JpZC1jb250ZW50LXNpemVk
LWNvbHVtbnMtcmVzb2x1dGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtZ3JpZC1sYXlv
dXQvZ3JpZC1jb250ZW50LXNpemVkLWNvbHVtbnMtcmVzb2x1dGlvbi5odG1sCmluZGV4IGFmZjQy
OTU1Nzk5ZDYwYzhmOTY4MDRhZWI4YTk2ZTE2MzRhYTUzNmMuLjQxMjZlYTk2ZTYyY2VkY2VlMDNi
NDZhMTBlMmQ0MzkxY2M1MmMzZjcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvY3NzLWdy
aWQtbGF5b3V0L2dyaWQtY29udGVudC1zaXplZC1jb2x1bW5zLXJlc29sdXRpb24uaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1ncmlkLWxheW91dC9ncmlkLWNvbnRlbnQtc2l6ZWQtY29s
dW1ucy1yZXNvbHV0aW9uLmh0bWwKQEAgLTQ3LDYgKzQ3LDEzIEBACiAuZ3JpZEF1dG9BbmRGaXhl
ZEZpeGVkQW5kTWF4Q29udGVudEZpeGVkIHsKICAgICAtd2Via2l0LWdyaWQtdGVtcGxhdGUtY29s
dW1uczogYXV0byBtaW5tYXgoMjBweCwgMzBweCkgbWlubWF4KC13ZWJraXQtbWF4LWNvbnRlbnQs
IDIwcHgpOwogfQorLmdyaWRNYXhDb250ZW50QW5kTWF4Q29udGVudEZpeGVkQW5kTWF4Q29udGVu
dCB7CisgICAgLXdlYmtpdC1ncmlkLXRlbXBsYXRlLWNvbHVtbnM6IC13ZWJraXQtbWF4LWNvbnRl
bnQgbWlubWF4KC13ZWJraXQtbWF4LWNvbnRlbnQsIDIwcHgpIC13ZWJraXQtbWF4LWNvbnRlbnQ7
Cit9CisuZ3JpZEF1dG9BbmRNaW5Db250ZW50Rml4ZWRBbmRNaW5Db250ZW50IHsKKyAgICAtd2Vi
a2l0LWdyaWQtdGVtcGxhdGUtY29sdW1uczogYXV0byBtaW5tYXgoLXdlYmtpdC1taW4tY29udGVu
dCwgMzBweCkgLXdlYmtpdC1taW4tY29udGVudDsKK30KKwogPC9zdHlsZT4KIDxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CkBAIC0yOTQs
NiArMzAxLDE4IEBACiAgICAgPC9kaXY+CiA8L2Rpdj4KIAorPGRpdiBjbGFzcz0iZ3JpZCBncmlk
TWF4Q29udGVudEFuZE1heENvbnRlbnRGaXhlZEFuZE1heENvbnRlbnQiIGlkPSJncmlkTWF4Q29u
dGVudEFuZE1heENvbnRlbnRGaXhlZEFuZE1heENvbnRlbnQiPgorICAgIDxkaXYgY2xhc3M9ImZp
cnN0Um93Rmlyc3RDb2x1bW4iPlggWCBYPC9kaXY+CisgICAgPGRpdiBzdHlsZT0iLXdlYmtpdC1n
cmlkLXJvdzogMTsgLXdlYmtpdC1ncmlkLWNvbHVtbjogMzsiPlggWDwvZGl2PgorICAgIDxkaXYg
Y2xhc3M9ImZpcnN0Um93Qm90aENvbHVtbiI+WFggWFggWFggWFggWFg8L2Rpdj4KKzwvZGl2Pgor
Cis8ZGl2IGNsYXNzPSJncmlkIGdyaWRBdXRvQW5kTWluQ29udGVudEZpeGVkQW5kTWluQ29udGVu
dCIgaWQ9ImdyaWRBdXRvQW5kTWluQ29udGVudEZpeGVkQW5kTWluQ29udGVudCI+CisgICAgPGRp
diBjbGFzcz0iZmlyc3RSb3dGaXJzdENvbHVtbiI+WFg8L2Rpdj4KKyAgICA8ZGl2IGNsYXNzPSJm
aXJzdFJvd0JvdGhDb2x1bW4iPlhYWFhYWFhYWFhYWFhYWDwvZGl2PgorICAgIDxkaXYgc3R5bGU9
Ii13ZWJraXQtZ3JpZC1yb3c6IDE7IC13ZWJraXQtZ3JpZC1jb2x1bW46IDM7Ij5YWFggWFhYPC9k
aXY+Cis8L2Rpdj4KKwogPHNjcmlwdD4KIGZ1bmN0aW9uIHRlc3RHcmlkQ29sdW1uc1ZhbHVlcyhp
ZCwgY29tcHV0ZWRDb2x1bW5WYWx1ZSkKIHsKQEAgLTM0Nyw2ICszNjYsOCBAQCB0ZXN0R3JpZENv
bHVtbnNWYWx1ZXMoImdyaWRNaW5Db250ZW50Rml4ZWRBbmRBdXRvQWJvdmVMaW1pdHMiLCAiMTVw
eCA5NXB4Iik7CiB0ZXN0R3JpZENvbHVtbnNWYWx1ZXMoImdyaWRNYXhDb250ZW50Rml4ZWRBbmRB
dXRvQWJvdmVMaW1pdHMiLCAiNjVweCA4NXB4Iik7CiB0ZXN0R3JpZENvbHVtbnNWYWx1ZXMoImdy
aWRNaW5Db250ZW50Rml4ZWRBbmRGaXhlZEZpeGVkQW5kQXV0byIsICIyMHB4IDIwcHggNjBweCIp
OwogdGVzdEdyaWRDb2x1bW5zVmFsdWVzKCJncmlkQXV0b0FuZEZpeGVkRml4ZWRBbmRNYXhDb250
ZW50Rml4ZWQiLCAiNzBweCAyMHB4IDYwcHgiKTsKK3Rlc3RHcmlkQ29sdW1uc1ZhbHVlcygiZ3Jp
ZE1heENvbnRlbnRBbmRNYXhDb250ZW50Rml4ZWRBbmRNYXhDb250ZW50IiwgIjcwcHggMjBweCA1
MHB4Iik7Cit0ZXN0R3JpZENvbHVtbnNWYWx1ZXMoImdyaWRBdXRvQW5kTWluQ29udGVudEZpeGVk
QW5kTWluQ29udGVudCIsICI1NXB4IDMwcHggNjVweCIpOwogPC9zY3JpcHQ+CiA8L2JvZHk+CiA8
L2h0bWw+Cg==
</data>
<flag name="review"
          id="271580"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>