<?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>186019</bug_id>
          
          <creation_ts>2018-05-27 09:11:21 -0700</creation_ts>
          <short_desc>[LFC] Add Rect interface to Display::Box</short_desc>
          <delta_ts>2018-05-28 13:40:15 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</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="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>koivisto</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1427814</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2018-05-27 09:11:21 -0700</bug_when>
    <thetext>so that we do contentBox().left() without having a fully computed contentBox()

-also it makes more sense to use top/left/bottom/right in the context of layout.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1427820</commentid>
    <comment_count>1</comment_count>
      <attachid>341423</attachid>
    <who name="alan">zalan</who>
    <bug_when>2018-05-27 09:21:27 -0700</bug_when>
    <thetext>Created attachment 341423
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1427950</commentid>
    <comment_count>2</comment_count>
      <attachid>341423</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-05-28 10:06:36 -0700</bug_when>
    <thetext>Comment on attachment 341423
Patch

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

&gt; Source/WebCore/layout/displaytree/DisplayBox.h:114
&gt; +    LayoutUnit top() const { return m_rect.top(); }
&gt; +    LayoutUnit left() const { return m_rect.left(); }
&gt; +    LayoutUnit bottom() const { return m_rect.bottom(); }
&gt; +    LayoutUnit right() const { return m_rect.right(); }

I guess these helpers are used a lot? box.top() is not that much more compact than box.rect().top().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1427964</commentid>
    <comment_count>3</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2018-05-28 13:12:27 -0700</bug_when>
    <thetext>(In reply to Antti Koivisto from comment #2)
&gt; Comment on attachment 341423 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=341423&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/layout/displaytree/DisplayBox.h:114
&gt; &gt; +    LayoutUnit top() const { return m_rect.top(); }
&gt; &gt; +    LayoutUnit left() const { return m_rect.left(); }
&gt; &gt; +    LayoutUnit bottom() const { return m_rect.bottom(); }
&gt; &gt; +    LayoutUnit right() const { return m_rect.right(); }
&gt; 
&gt; I guess these helpers are used a lot? box.top() is not that much more
&gt; compact than box.rect().top().
They are (or will be) used a lot and from layout logic correctness&apos;s point of view displayBox.rect().top() is rather different from displayBox.top() where rect().top() assumes a computed rect() (including width() and height()) even if you only access its top value.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1427966</commentid>
    <comment_count>4</comment_count>
      <attachid>341423</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-05-28 13:39:20 -0700</bug_when>
    <thetext>Comment on attachment 341423
Patch

Clearing flags on attachment: 341423

Committed r232250: &lt;https://trac.webkit.org/changeset/232250&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1427967</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-05-28 13:39:21 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1427968</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-05-28 13:40:15 -0700</bug_when>
    <thetext>&lt;rdar://problem/40601769&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>341423</attachid>
            <date>2018-05-27 09:21:27 -0700</date>
            <delta_ts>2018-05-28 13:39:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-186019-20180527092126.patch</filename>
            <type>text/plain</type>
            <size>19424</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMyMjI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmIwODhiOWQ4MzRlM2Uw
NTY1OTczZWNjMTE0MTA3MWQ4OWUwNTJkMy4uYjYwN2VhODJlZmZmNDEwNjI3M2IwYWM3MGRiYzJk
YTY1ZThhZDJmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc4IEBACisyMDE4LTA1LTI3ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ10gQWRkIFJlY3QgaW50
ZXJmYWNlIHRvIERpc3BsYXk6OkJveAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTg2MDE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgSGF2aW5nIGEgZGVkaWNhdGVkIFJlY3QgY2xhc3MgYW5kIG1vdmluZyB0
aGUgZ2VvbWV0cnkgaW52YWxpZGF0aW9uIHRvIGl0IGVuYWJsZXMgdXMgdG8gY2FsbAorICAgICAg
ICBkaXNwbGF5Qm94LmNvbnRlbnRCb3goKS5sZWZ0KCkgZXZlbiB3aGVuIHRoZSB3aWRodC9oZWln
aHQgYXJlIG5vdCBjb21wdXRlZCB5ZXQuCisgICAgICAgIEFsc28gaGF2aW5nIFJlY3Qgd2l0aCB0
b3AvbGVmdC9ib3R0b20vcmlnaHQgaW50ZXJmYWNlIGlzIG1vcmUgYWxpZ25lZCB3aXRoIHRoZSBy
ZXN0IG9mIHRoZSBsYXlvdXQgY29kZSB0aGFuIHgveS9tYXhYL21heFkuCisKKyAgICAgICAgKiBs
YXlvdXQvRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpM
YXlvdXQ6OmNvbnRlbnRIZWlnaHRGb3JGb3JtYXR0aW5nQ29udGV4dFJvb3QpOgorICAgICAgICAq
IGxheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2Vv
bWV0cnk6OnN0YXRpY1Bvc2l0aW9uKToKKyAgICAgICAgKiBsYXlvdXQvZGlzcGxheXRyZWUvRGlz
cGxheUJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpCb3g6Om1hcmdpbkJveCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpCb3g6OmJvcmRlckJveCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpCb3g6OnBhZGRpbmdCb3ggY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheTo6Qm94Ojpjb250ZW50Qm94IGNvbnN0KToKKyAgICAgICAg
KiBsYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheUJveC5oOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheTo6Qm94OjpSZWN0OjppbnZhbGlkYXRlVG9wKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXk6OkJveDo6UmVjdDo6aW52YWxpZGF0ZUxlZnQpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eTo6Qm94OjpSZWN0OjppbnZhbGlkYXRlV2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eTo6Qm94OjpSZWN0OjppbnZhbGlkYXRlSGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXk6OkJveDo6UmVjdDo6aGFzVmFsaWRQb3NpdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5OjpCb3g6OlJlY3Q6Omhhc1ZhbGlkU2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5OjpCb3g6OlJlY3Q6Omhhc1ZhbGlkR2VvbWV0cnkgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheTo6Qm94OjpyZWN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXk6OkJveDo6dG9wIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkJv
eDo6bGVmdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpCb3g6OmJvdHRvbSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpCb3g6OnJpZ2h0IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkJveDo6dG9wTGVmdCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5OjpCb3g6OmJvdHRvbVJpZ2h0IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXk6OkJveDo6c2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
OjpCb3g6OndpZHRoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkJveDo6aGVp
Z2h0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkJveDo6c2V0VG9wTGVmdCk6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpCb3g6OnNldFRvcCk6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5OjpCb3g6OnNldExlZnQpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6
Qm94OjpzZXRXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpCb3g6OnNldEhlaWdo
dCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpCb3g6OlJlY3Q6OmludmFsaWRhdGVQb3Np
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpCb3g6OlJlY3Q6OnNldEhhc1ZhbGlk
UG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6Qm94OjpSZWN0OjpSZWN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkJveDo6UmVjdDo6dG9wIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXk6OkJveDo6UmVjdDo6bGVmdCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5OjpCb3g6OlJlY3Q6OmJvdHRvbSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5OjpCb3g6OlJlY3Q6OnJpZ2h0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXk6OkJveDo6UmVjdDo6dG9wTGVmdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5OjpCb3g6OlJlY3Q6OmJvdHRvbVJpZ2h0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXk6OkJveDo6UmVjdDo6c2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5OjpCb3g6OlJlY3Q6OndpZHRoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6
OkJveDo6UmVjdDo6aGVpZ2h0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkJv
eDo6UmVjdDo6c2V0VG9wTGVmdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpCb3g6OlJl
Y3Q6OnNldFRvcCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpCb3g6OlJlY3Q6OnNldExl
ZnQpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6Qm94OjpSZWN0OjpzZXRXaWR0aCk6Cisg
ICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpCb3g6OlJlY3Q6OnNldEhlaWdodCk6CisgICAgICAg
IChXZWJDb3JlOjpEaXNwbGF5OjpCb3g6OlJlY3Q6OnNoaWZ0TGVmdFRvKToKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXk6OkJveDo6UmVjdDo6c2hpZnRSaWdodFRvKToKKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXk6OkJveDo6UmVjdDo6c2hpZnRUb3BUbyk6CisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5OjpCb3g6OlJlY3Q6OnNoaWZ0Qm90dG9tVG8pOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheTo6Qm94OjpSZWN0OjpleHBhbmQpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6Qm94
OjppbnZhbGlkYXRlVG9wKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkJv
eDo6aW52YWxpZGF0ZUxlZnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6
Qm94OjppbnZhbGlkYXRlV2lkdGgpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eTo6Qm94OjppbnZhbGlkYXRlSGVpZ2h0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXk6OkJveDo6aGFzVmFsaWRQb3NpdGlvbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5OjpCb3g6Omhhc1ZhbGlkU2l6ZSBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5OjpCb3g6Omhhc1ZhbGlkR2VvbWV0cnkgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6Qm94OjppbnZhbGlkYXRlUG9zaXRpb24p
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6Qm94OjpzZXRIYXNWYWxpZFBv
c2l0aW9uKTogRGVsZXRlZC4KKwogMjAxOC0wNS0yNiAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBw
bGUuY29tPgogCiAgICAgICAgIFtMRkNdIEltcGxlbWVudCBtYXJnaW4gY29tcHV0YXRpb24KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNw
cAppbmRleCAyZjNjOTU0ZmNmZGUzMTYyNzE0MTY3ZDI4ZmU0MWZkMzAwYzIyMDNkLi44Yzc0ZWM1
NDE4MTdlZDA5ODgzYTA2ZjA3OTJkNmM3YjNjYTczMDkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwCkBAIC01Myw4ICs1Myw4
IEBAIHN0YXRpYyBMYXlvdXRVbml0IGNvbnRlbnRIZWlnaHRGb3JGb3JtYXR0aW5nQ29udGV4dFJv
b3QoTGF5b3V0Q29udGV4dCYgbGF5b3V0Q29uCiAgICAgYXV0byogZmlyc3REaXNwbGF5Qm94ID0g
bGF5b3V0Q29udGV4dC5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KCpmb3JtYXR0aW5nUm9vdENvbnRh
aW5lci5maXJzdEluRmxvd0NoaWxkKCkpOwogICAgIGF1dG8qIGxhc3REaXNwbGF5Qm94ID0gbGF5
b3V0Q29udGV4dC5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KCpmb3JtYXR0aW5nUm9vdENvbnRhaW5l
ci5sYXN0SW5GbG93Q2hpbGQoKSk7CiAKLSAgICBhdXRvIHRvcCA9IGZpcnN0RGlzcGxheUJveC0+
bWFyZ2luQm94KCkueSgpOwotICAgIGF1dG8gYm90dG9tID0gbGFzdERpc3BsYXlCb3gtPm1hcmdp
bkJveCgpLm1heFkoKTsKKyAgICBhdXRvIHRvcCA9IGZpcnN0RGlzcGxheUJveC0+bWFyZ2luQm94
KCkudG9wKCk7CisgICAgYXV0byBib3R0b20gPSBsYXN0RGlzcGxheUJveC0+bWFyZ2luQm94KCku
Ym90dG9tKCk7CiAgICAgLy8gRklYTUU6IGFkZCBmbG9hdGluZyBzdXBwb3J0LgogICAgIHJldHVy
biBib3R0b20gLSB0b3A7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxv
Y2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRHZW9t
ZXRyeS5jcHAKaW5kZXggZDViZTZkZGI5YzFhNjk5Y2Y0YjdlMzVhM2MwYzVkOTQyNDYyNjVkYi4u
MjUzMWU5MDM2MzljODQ0ZGFmNWZiYWE0NTAyY2RkY2ZhN2EyMWE2YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0
R2VvbWV0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcv
QmxvY2tGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcApAQCAtMTI1LDggKzEyNSw4IEBAIExh
eW91dFBvaW50IEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpzdGF0aWNQb3NpdGlv
bihMYXlvdXRDb250ZXh0JiBsYXlvCiAgICAgLy8gSW4gYSBibG9jayBmb3JtYXR0aW5nIGNvbnRl
eHQsIGVhY2ggYm94J3MgbGVmdCBvdXRlciBlZGdlIHRvdWNoZXMgdGhlIGxlZnQgZWRnZSBvZiB0
aGUgY29udGFpbmluZyBibG9jayAoZm9yIHJpZ2h0LXRvLWxlZnQgZm9ybWF0dGluZywgcmlnaHQg
ZWRnZXMgdG91Y2gpLgogICAgIGF1dG8gY29udGFpbmluZ0Jsb2NrQ29udGVudEJveCA9IGxheW91
dENvbnRleHQuZGlzcGxheUJveEZvckxheW91dEJveCgqbGF5b3V0Qm94LmNvbnRhaW5pbmdCbG9j
aygpKS0+Y29udGVudEJveCgpOwogICAgIC8vIFN0YXJ0IGZyb20gdGhlIHRvcCBvZiB0aGUgY29u
dGFpbmVyJ3MgY29udGVudCBib3guCi0gICAgYXV0byB0b3AgPSBjb250YWluaW5nQmxvY2tDb250
ZW50Qm94LnkoKTsKLSAgICBhdXRvIGxlZnQgPSBjb250YWluaW5nQmxvY2tDb250ZW50Qm94Lngo
KTsKKyAgICBhdXRvIHRvcCA9IGNvbnRhaW5pbmdCbG9ja0NvbnRlbnRCb3gudG9wKCk7CisgICAg
YXV0byBsZWZ0ID0gY29udGFpbmluZ0Jsb2NrQ29udGVudEJveC5sZWZ0KCk7CiAgICAgaWYgKGF1
dG8qIHByZXZpb3VzSW5GbG93U2libGluZyA9IGxheW91dEJveC5wcmV2aW91c0luRmxvd1NpYmxp
bmcoKSkgewogICAgICAgICBhdXRvJiBwcmV2aW91c0luRmxvd0Rpc3BsYXlCb3ggPSAqbGF5b3V0
Q29udGV4dC5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KCpwcmV2aW91c0luRmxvd1NpYmxpbmcpOwog
ICAgICAgICB0b3AgPSBwcmV2aW91c0luRmxvd0Rpc3BsYXlCb3guYm90dG9tKCkgKyBwcmV2aW91
c0luRmxvd0Rpc3BsYXlCb3gubWFyZ2luQm90dG9tKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheUJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheUJveC5jcHAKaW5kZXggODY2NGU2NGNkNjQ2ZGUwZTg1
OThkZGRiY2QyOWEwZjY3YWUzYjA4Zi4uZjRmMzczOTM1MTM1ZjY5YzU5YmNiYTgyZThlYmNiODA2
ZjUyZDliZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rp
c3BsYXlCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNw
bGF5Qm94LmNwcApAQCAtNTEsNTggKzUxLDU4IEBAIEJveDo6U3R5bGU6OlN0eWxlKGNvbnN0IFJl
bmRlclN0eWxlJiBzdHlsZSkKIAogfQogCi1MYXlvdXRSZWN0IEJveDo6bWFyZ2luQm94KCkgY29u
c3QKK0JveDo6UmVjdCBCb3g6Om1hcmdpbkJveCgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKG1faGFz
VmFsaWRNYXJnaW4pOwogICAgIGF1dG8gbWFyZ2luQm94ID0gYm9yZGVyQm94KCk7CiAKLSAgICBt
YXJnaW5Cb3guc2hpZnRYRWRnZVRvKG1hcmdpbkJveC54KCkgKyBtX21hcmdpbi5sZWZ0KTsKLSAg
ICBtYXJnaW5Cb3guc2hpZnRZRWRnZVRvKG1hcmdpbkJveC55KCkgKyBtX21hcmdpbi50b3ApOwot
ICAgIG1hcmdpbkJveC5zaGlmdE1heFhFZGdlVG8obWFyZ2luQm94Lm1heFgoKSAtIG1fbWFyZ2lu
LnJpZ2h0KTsKLSAgICBtYXJnaW5Cb3guc2hpZnRNYXhZRWRnZVRvKG1hcmdpbkJveC5tYXhZKCkg
LSBtX21hcmdpbi5ib3R0b20pOworICAgIG1hcmdpbkJveC5zaGlmdExlZnRUbyhtYXJnaW5Cb3gu
bGVmdCgpICsgbV9tYXJnaW4ubGVmdCk7CisgICAgbWFyZ2luQm94LnNoaWZ0Qm90dG9tVG8obWFy
Z2luQm94LnRvcCgpICsgbV9tYXJnaW4udG9wKTsKKyAgICBtYXJnaW5Cb3guc2hpZnRSaWdodFRv
KG1hcmdpbkJveC5yaWdodCgpIC0gbV9tYXJnaW4ucmlnaHQpOworICAgIG1hcmdpbkJveC5zaGlm
dEJvdHRvbVRvKG1hcmdpbkJveC5ib3R0b20oKSAtIG1fbWFyZ2luLmJvdHRvbSk7CiAKICAgICBy
ZXR1cm4gbWFyZ2luQm94OwogfQogCi1MYXlvdXRSZWN0IEJveDo6Ym9yZGVyQm94KCkgY29uc3QK
K0JveDo6UmVjdCBCb3g6OmJvcmRlckJveCgpIGNvbnN0CiB7CiAgICAgaWYgKG1fc3R5bGUuYm94
U2l6aW5nID09IEJveFNpemluZzo6Qm9yZGVyQm94KQotICAgICAgICByZXR1cm4gTGF5b3V0UmVj
dCggeyB9LCBzaXplKCkpOworICAgICAgICByZXR1cm4gQm94OjpSZWN0KCB7IH0sIHNpemUoKSk7
CiAKICAgICAvLyBXaWR0aCBpcyBjb250ZW50IGJveC4KICAgICBBU1NFUlQobV9oYXNWYWxpZEJv
cmRlcik7CiAgICAgQVNTRVJUKG1faGFzVmFsaWRQYWRkaW5nKTsKICAgICBhdXRvIGJvcmRlckJv
eFNpemUgPSBzaXplKCk7Ci0gICAgYm9yZGVyQm94U2l6ZS5leHBhbmQoYm9yZGVyTGVmdCgpICsg
cGFkZGluZ0xlZnQoKSArIHBhZGRpbmdSaWdodCgpICsgYm9yZGVyUmlnaHQoKSAsIGJvcmRlclRv
cCgpICsgcGFkZGluZ1RvcCgpICsgcGFkZGluZ0JvdHRvbSgpICsgYm9yZGVyQm90dG9tKCkpOwot
ICAgIHJldHVybiBMYXlvdXRSZWN0KCB7IH0sIGJvcmRlckJveFNpemUpOworICAgIGJvcmRlckJv
eFNpemUuZXhwYW5kKGJvcmRlckxlZnQoKSArIHBhZGRpbmdMZWZ0KCkgKyBwYWRkaW5nUmlnaHQo
KSArIGJvcmRlclJpZ2h0KCksIGJvcmRlclRvcCgpICsgcGFkZGluZ1RvcCgpICsgcGFkZGluZ0Jv
dHRvbSgpICsgYm9yZGVyQm90dG9tKCkpOworICAgIHJldHVybiBCb3g6OlJlY3QoIHsgfSwgYm9y
ZGVyQm94U2l6ZSk7CiB9CiAKLUxheW91dFJlY3QgQm94OjpwYWRkaW5nQm94KCkgY29uc3QKK0Jv
eDo6UmVjdCBCb3g6OnBhZGRpbmdCb3goKSBjb25zdAogewogICAgIEFTU0VSVChtX2hhc1ZhbGlk
Qm9yZGVyKTsKICAgICBhdXRvIHBhZGRpbmdCb3ggPSBib3JkZXJCb3goKTsKIAotICAgIHBhZGRp
bmdCb3guc2hpZnRYRWRnZVRvKHBhZGRpbmdCb3gueCgpICsgbV9ib3JkZXIubGVmdCk7Ci0gICAg
cGFkZGluZ0JveC5zaGlmdFlFZGdlVG8ocGFkZGluZ0JveC55KCkgKyBtX2JvcmRlci50b3ApOwot
ICAgIHBhZGRpbmdCb3guc2hpZnRNYXhYRWRnZVRvKHBhZGRpbmdCb3gubWF4WCgpIC0gbV9ib3Jk
ZXIucmlnaHQpOwotICAgIHBhZGRpbmdCb3guc2hpZnRNYXhZRWRnZVRvKHBhZGRpbmdCb3gubWF4
WSgpIC0gbV9ib3JkZXIuYm90dG9tKTsKKyAgICBwYWRkaW5nQm94LnNoaWZ0TGVmdFRvKHBhZGRp
bmdCb3gubGVmdCgpICsgbV9ib3JkZXIubGVmdCk7CisgICAgcGFkZGluZ0JveC5zaGlmdFRvcFRv
KHBhZGRpbmdCb3gudG9wKCkgKyBtX2JvcmRlci50b3ApOworICAgIHBhZGRpbmdCb3guc2hpZnRS
aWdodFRvKHBhZGRpbmdCb3gubGVmdCgpIC0gbV9ib3JkZXIucmlnaHQpOworICAgIHBhZGRpbmdC
b3guc2hpZnRCb3R0b21UbyhwYWRkaW5nQm94LmJvdHRvbSgpIC0gbV9ib3JkZXIuYm90dG9tKTsK
IAogICAgIHJldHVybiBwYWRkaW5nQm94OwogfQogCi1MYXlvdXRSZWN0IEJveDo6Y29udGVudEJv
eCgpIGNvbnN0CitCb3g6OlJlY3QgQm94Ojpjb250ZW50Qm94KCkgY29uc3QKIHsKICAgICBpZiAo
bV9zdHlsZS5ib3hTaXppbmcgPT0gQm94U2l6aW5nOjpDb250ZW50Qm94KQotICAgICAgICByZXR1
cm4gTGF5b3V0UmVjdChMYXlvdXRQb2ludCgwLCAwKSwgc2l6ZSgpKTsKKyAgICAgICAgcmV0dXJu
IEJveDo6UmVjdChMYXlvdXRQb2ludCgwLCAwKSwgc2l6ZSgpKTsKIAogICAgIC8vIFdpZHRoIGlz
IGJvcmRlciBib3guCiAgICAgQVNTRVJUKG1faGFzVmFsaWRQYWRkaW5nKTsKICAgICBhdXRvIGNv
bnRlbnRCb3ggPSBwYWRkaW5nQm94KCk7CiAKLSAgICBjb250ZW50Qm94LnNoaWZ0WEVkZ2VUbyhj
b250ZW50Qm94LngoKSArIG1fcGFkZGluZy5sZWZ0KTsKLSAgICBjb250ZW50Qm94LnNoaWZ0WUVk
Z2VUbyhjb250ZW50Qm94LnkoKSArIG1fcGFkZGluZy50b3ApOwotICAgIGNvbnRlbnRCb3guc2hp
ZnRNYXhYRWRnZVRvKGNvbnRlbnRCb3gubWF4WCgpIC0gbV9wYWRkaW5nLnJpZ2h0KTsKLSAgICBj
b250ZW50Qm94LnNoaWZ0TWF4WUVkZ2VUbyhjb250ZW50Qm94Lm1heFkoKSAtIG1fcGFkZGluZy5i
b3R0b20pOworICAgIGNvbnRlbnRCb3guc2hpZnRMZWZ0VG8oY29udGVudEJveC5sZWZ0KCkgKyBt
X3BhZGRpbmcubGVmdCk7CisgICAgY29udGVudEJveC5zaGlmdFRvcFRvKGNvbnRlbnRCb3gudG9w
KCkgKyBtX3BhZGRpbmcudG9wKTsKKyAgICBjb250ZW50Qm94LnNoaWZ0Qm90dG9tVG8oY29udGVu
dEJveC5ib3R0b20oKSAtIG1fcGFkZGluZy5ib3R0b20pOworICAgIGNvbnRlbnRCb3guc2hpZnRS
aWdodFRvKGNvbnRlbnRCb3gucmlnaHQoKSAtIG1fcGFkZGluZy5yaWdodCk7CiAKICAgICByZXR1
cm4gY29udGVudEJveDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNw
bGF5dHJlZS9EaXNwbGF5Qm94LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRyZWUv
RGlzcGxheUJveC5oCmluZGV4IGU1NmVjNzNmYzE2NjU0NTgwYTY4Y2Y4NTY2ZWVjYjg1MWUyYmQ2
N2EuLjNmYTEyMzE4Nzk4MmQ3NzQ1ZDNkMTAxNTVkNTE0ZTkyYTQyOWY2NDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5Qm94LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlCb3guaApAQCAtNTIsMjEgKzUy
LDczIEBAIHB1YmxpYzoKICAgICBmcmllbmQgY2xhc3MgTGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4
dDsKICAgICBmcmllbmQgY2xhc3MgTGF5b3V0OjpMYXlvdXRDb250ZXh0OwogCisgICAgY2xhc3Mg
UmVjdCB7CisgICAgcHVibGljOgorICAgICAgICBSZWN0KCkgPSBkZWZhdWx0OworICAgICAgICBS
ZWN0KGNvbnN0IExheW91dFBvaW50JiwgY29uc3QgTGF5b3V0U2l6ZSYpOworICAgICAgICAKKyAg
ICAgICAgTGF5b3V0VW5pdCB0b3AoKSBjb25zdDsKKyAgICAgICAgTGF5b3V0VW5pdCBsZWZ0KCkg
Y29uc3Q7CisgICAgICAgIExheW91dFBvaW50IHRvcExlZnQoKSBjb25zdDsKKworICAgICAgICBM
YXlvdXRVbml0IGJvdHRvbSgpIGNvbnN0OworICAgICAgICBMYXlvdXRVbml0IHJpZ2h0KCkgY29u
c3Q7ICAgICAgICAKKyAgICAgICAgTGF5b3V0UG9pbnQgYm90dG9tUmlnaHQoKSBjb25zdDsKKwor
ICAgICAgICBMYXlvdXRVbml0IHdpZHRoKCkgY29uc3Q7CisgICAgICAgIExheW91dFVuaXQgaGVp
Z2h0KCkgY29uc3Q7CisgICAgICAgIExheW91dFNpemUgc2l6ZSgpIGNvbnN0OworCisgICAgICAg
IHZvaWQgc2V0VG9wKExheW91dFVuaXQpOworICAgICAgICB2b2lkIHNldExlZnQoTGF5b3V0VW5p
dCk7CisgICAgICAgIHZvaWQgc2V0VG9wTGVmdChjb25zdCBMYXlvdXRQb2ludCYpOworICAgICAg
ICB2b2lkIHNldFdpZHRoKExheW91dFVuaXQpOworICAgICAgICB2b2lkIHNldEhlaWdodChMYXlv
dXRVbml0KTsKKworICAgICAgICB2b2lkIHNoaWZ0TGVmdFRvKExheW91dFVuaXQpOworICAgICAg
ICB2b2lkIHNoaWZ0UmlnaHRUbyhMYXlvdXRVbml0KTsKKyAgICAgICAgdm9pZCBzaGlmdFRvcFRv
KExheW91dFVuaXQpOworICAgICAgICB2b2lkIHNoaWZ0Qm90dG9tVG8oTGF5b3V0VW5pdCk7CisK
KyAgICAgICAgdm9pZCBleHBhbmQoTGF5b3V0VW5pdCwgTGF5b3V0VW5pdCk7CisKKyAgICBwcml2
YXRlOgorI2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICAgICAgdm9pZCBpbnZhbGlkYXRlVG9wKCkg
eyBtX2hhc1ZhbGlkVG9wID0gZmFsc2U7IH0KKyAgICAgICAgdm9pZCBpbnZhbGlkYXRlTGVmdCgp
IHsgbV9oYXNWYWxpZExlZnQgPSBmYWxzZTsgfQorICAgICAgICB2b2lkIGludmFsaWRhdGVXaWR0
aCgpIHsgbV9oYXNWYWxpZFdpZHRoID0gZmFsc2U7IH0KKyAgICAgICAgdm9pZCBpbnZhbGlkYXRl
SGVpZ2h0KCkgeyBtX2hhc1ZhbGlkSGVpZ2h0ID0gZmFsc2U7IH0KKyAgICAgICAgdm9pZCBpbnZh
bGlkYXRlUG9zaXRpb24oKTsKKworICAgICAgICBib29sIGhhc1ZhbGlkUG9zaXRpb24oKSBjb25z
dCB7IHJldHVybiBtX2hhc1ZhbGlkVG9wICYmIG1faGFzVmFsaWRMZWZ0OyB9CisgICAgICAgIGJv
b2wgaGFzVmFsaWRTaXplKCkgY29uc3QgeyByZXR1cm4gbV9oYXNWYWxpZFdpZHRoICYmIG1faGFz
VmFsaWRIZWlnaHQ7IH0KKyAgICAgICAgYm9vbCBoYXNWYWxpZEdlb21ldHJ5KCkgY29uc3QgeyBy
ZXR1cm4gaGFzVmFsaWRQb3NpdGlvbigpICYmIGhhc1ZhbGlkU2l6ZSgpOyB9CisgICAgCisgICAg
ICAgIHZvaWQgc2V0SGFzVmFsaWRQb3NpdGlvbigpOworCisgICAgICAgIGJvb2wgbV9oYXNWYWxp
ZFRvcCB7IGZhbHNlIH07CisgICAgICAgIGJvb2wgbV9oYXNWYWxpZExlZnQgeyBmYWxzZSB9Owor
ICAgICAgICBib29sIG1faGFzVmFsaWRXaWR0aCB7IGZhbHNlIH07CisgICAgICAgIGJvb2wgbV9o
YXNWYWxpZEhlaWdodCB7IGZhbHNlIH07CisjZW5kaWYKKyAgICAgICAgTGF5b3V0UmVjdCBtX3Jl
Y3Q7CisgICAgfTsKKwogICAgIH5Cb3goKTsKIAotICAgIExheW91dFJlY3QgcmVjdCgpIGNvbnN0
OworICAgIFJlY3QgcmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdDsgfQogCi0gICAgTGF5b3V0
VW5pdCB0b3AoKSBjb25zdDsKLSAgICBMYXlvdXRVbml0IGxlZnQoKSBjb25zdDsKLSAgICBMYXlv
dXRVbml0IGJvdHRvbSgpIGNvbnN0OwotICAgIExheW91dFVuaXQgcmlnaHQoKSBjb25zdDsKKyAg
ICBMYXlvdXRVbml0IHRvcCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdC50b3AoKTsgfQorICAgIExh
eW91dFVuaXQgbGVmdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdC5sZWZ0KCk7IH0KKyAgICBMYXlv
dXRVbml0IGJvdHRvbSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdC5ib3R0b20oKTsgfQorICAgIExh
eW91dFVuaXQgcmlnaHQoKSBjb25zdCB7IHJldHVybiBtX3JlY3QucmlnaHQoKTsgfQogCi0gICAg
TGF5b3V0UG9pbnQgdG9wTGVmdCgpIGNvbnN0OwotICAgIExheW91dFBvaW50IGJvdHRvbVJpZ2h0
KCkgY29uc3Q7CisgICAgTGF5b3V0UG9pbnQgdG9wTGVmdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVj
dC50b3BMZWZ0KCk7IH0KKyAgICBMYXlvdXRQb2ludCBib3R0b21SaWdodCgpIGNvbnN0IHsgcmV0
dXJuIG1fcmVjdC5ib3R0b21SaWdodCgpOyB9CiAKLSAgICBMYXlvdXRTaXplIHNpemUoKSBjb25z
dDsKLSAgICBMYXlvdXRVbml0IHdpZHRoKCkgY29uc3Q7Ci0gICAgTGF5b3V0VW5pdCBoZWlnaHQo
KSBjb25zdDsKKyAgICBMYXlvdXRTaXplIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3JlY3Quc2l6
ZSgpOyB9CisgICAgTGF5b3V0VW5pdCB3aWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdC53aWR0
aCgpOyB9CisgICAgTGF5b3V0VW5pdCBoZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX3JlY3QuaGVp
Z2h0KCk7IH0KIAogICAgIExheW91dFVuaXQgbWFyZ2luVG9wKCkgY29uc3Q7CiAgICAgTGF5b3V0
VW5pdCBtYXJnaW5MZWZ0KCkgY29uc3Q7CkBAIC04MywxMCArMTM1LDEwIEBAIHB1YmxpYzoKICAg
ICBMYXlvdXRVbml0IHBhZGRpbmdCb3R0b20oKSBjb25zdDsKICAgICBMYXlvdXRVbml0IHBhZGRp
bmdSaWdodCgpIGNvbnN0OwogCi0gICAgTGF5b3V0UmVjdCBtYXJnaW5Cb3goKSBjb25zdDsKLSAg
ICBMYXlvdXRSZWN0IGJvcmRlckJveCgpIGNvbnN0OwotICAgIExheW91dFJlY3QgcGFkZGluZ0Jv
eCgpIGNvbnN0OwotICAgIExheW91dFJlY3QgY29udGVudEJveCgpIGNvbnN0OworICAgIFJlY3Qg
bWFyZ2luQm94KCkgY29uc3Q7CisgICAgUmVjdCBib3JkZXJCb3goKSBjb25zdDsKKyAgICBSZWN0
IHBhZGRpbmdCb3goKSBjb25zdDsKKyAgICBSZWN0IGNvbnRlbnRCb3goKSBjb25zdDsKIAogcHJp
dmF0ZToKICAgICBCb3goY29uc3QgUmVuZGVyU3R5bGUmKTsKQEAgLTk3LDExICsxNDksMTEgQEAg
cHJpdmF0ZToKICAgICAgICAgQm94U2l6aW5nIGJveFNpemluZyB7IEJveFNpemluZzo6Q29udGVu
dEJveCB9OwogICAgIH07CiAKLSAgICB2b2lkIHNldFRvcExlZnQoY29uc3QgTGF5b3V0UG9pbnQm
KTsKLSAgICB2b2lkIHNldFRvcChMYXlvdXRVbml0KTsKLSAgICB2b2lkIHNldExlZnQoTGF5b3V0
VW5pdCk7Ci0gICAgdm9pZCBzZXRXaWR0aChMYXlvdXRVbml0KTsKLSAgICB2b2lkIHNldEhlaWdo
dChMYXlvdXRVbml0KTsKKyAgICB2b2lkIHNldFRvcExlZnQoY29uc3QgTGF5b3V0UG9pbnQmIHRv
cExlZnQpIHsgbV9yZWN0LnNldFRvcExlZnQodG9wTGVmdCk7IH0KKyAgICB2b2lkIHNldFRvcChM
YXlvdXRVbml0IHRvcCkgeyBtX3JlY3Quc2V0VG9wKHRvcCk7IH0KKyAgICB2b2lkIHNldExlZnQo
TGF5b3V0VW5pdCBsZWZ0KSB7IG1fcmVjdC5zZXRMZWZ0KGxlZnQpOyB9CisgICAgdm9pZCBzZXRX
aWR0aChMYXlvdXRVbml0IHdpZHRoKSB7IG1fcmVjdC5zZXRXaWR0aCh3aWR0aCk7IH0KKyAgICB2
b2lkIHNldEhlaWdodChMYXlvdXRVbml0IGhlaWdodCkgeyBtX3JlY3Quc2V0SGVpZ2h0KGhlaWdo
dCk7IH0KIAogICAgIHN0cnVjdCBFZGdlcyB7CiAgICAgICAgIEVkZ2VzKCkgPSBkZWZhdWx0OwpA
QCAtMTIyLDIxICsxNzQsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldFBhZGRpbmcoRWRnZXMp
OwogCiAjaWYgIUFTU0VSVF9ESVNBQkxFRAotICAgIHZvaWQgaW52YWxpZGF0ZVRvcCgpIHsgbV9o
YXNWYWxpZFRvcCA9IGZhbHNlOyB9Ci0gICAgdm9pZCBpbnZhbGlkYXRlTGVmdCgpIHsgbV9oYXNW
YWxpZExlZnQgPSBmYWxzZTsgfQotICAgIHZvaWQgaW52YWxpZGF0ZVdpZHRoKCkgeyBtX2hhc1Zh
bGlkV2lkdGggPSBmYWxzZTsgfQotICAgIHZvaWQgaW52YWxpZGF0ZUhlaWdodCgpIHsgbV9oYXNW
YWxpZEhlaWdodCA9IGZhbHNlOyB9Ci0gICAgdm9pZCBpbnZhbGlkYXRlUG9zaXRpb24oKTsKICAg
ICB2b2lkIGludmFsaWRhdGVNYXJnaW4oKSB7IG1faGFzVmFsaWRNYXJnaW4gPSBmYWxzZTsgfQog
ICAgIHZvaWQgaW52YWxpZGF0ZUJvcmRlcigpIHsgbV9oYXNWYWxpZEJvcmRlciA9IGZhbHNlOyB9
CiAgICAgdm9pZCBpbnZhbGlkYXRlUGFkZGluZygpIHsgbV9oYXNWYWxpZFBhZGRpbmcgPSBmYWxz
ZTsgfQogCi0gICAgYm9vbCBoYXNWYWxpZFBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9oYXNW
YWxpZFRvcCAmJiBtX2hhc1ZhbGlkTGVmdDsgfQotICAgIGJvb2wgaGFzVmFsaWRTaXplKCkgY29u
c3QgeyByZXR1cm4gbV9oYXNWYWxpZFdpZHRoICYmIG1faGFzVmFsaWRIZWlnaHQ7IH0KLSAgICBi
b29sIGhhc1ZhbGlkR2VvbWV0cnkoKSBjb25zdCB7IHJldHVybiBoYXNWYWxpZFBvc2l0aW9uKCkg
JiYgaGFzVmFsaWRTaXplKCk7IH0KLSAgICAKLSAgICB2b2lkIHNldEhhc1ZhbGlkUG9zaXRpb24o
KTsKLSAgICAKICAgICB2b2lkIHNldEhhc1ZhbGlkTWFyZ2luKCk7CiAgICAgdm9pZCBzZXRIYXNW
YWxpZEJvcmRlcigpOwogICAgIHZvaWQgc2V0SGFzVmFsaWRQYWRkaW5nKCk7CkBAIC0xNDQsMTcg
KzE4NSwxMyBAQCBwcml2YXRlOgogCiAgICAgY29uc3QgU3R5bGUgbV9zdHlsZTsKIAotICAgIExh
eW91dFJlY3QgbV9yZWN0OworICAgIFJlY3QgbV9yZWN0OwogCiAgICAgRWRnZXMgbV9tYXJnaW47
CiAgICAgRWRnZXMgbV9ib3JkZXI7CiAgICAgRWRnZXMgbV9wYWRkaW5nOwogCiAjaWYgIUFTU0VS
VF9ESVNBQkxFRAotICAgIGJvb2wgbV9oYXNWYWxpZFRvcCB7IGZhbHNlIH07Ci0gICAgYm9vbCBt
X2hhc1ZhbGlkTGVmdCB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX2hhc1ZhbGlkV2lkdGggeyBmYWxz
ZSB9OwotICAgIGJvb2wgbV9oYXNWYWxpZEhlaWdodCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2hh
c1ZhbGlkTWFyZ2luIHsgZmFsc2UgfTsKICAgICBib29sIG1faGFzVmFsaWRCb3JkZXIgeyBmYWxz
ZSB9OwogICAgIGJvb2wgbV9oYXNWYWxpZFBhZGRpbmcgeyBmYWxzZSB9OwpAQCAtMTYyLDgwICsx
OTksODAgQEAgcHJpdmF0ZToKIH07CiAKICNpZiAhQVNTRVJUX0RJU0FCTEVECi1pbmxpbmUgdm9p
ZCBCb3g6OmludmFsaWRhdGVQb3NpdGlvbigpCitpbmxpbmUgdm9pZCBCb3g6OlJlY3Q6OmludmFs
aWRhdGVQb3NpdGlvbigpCiB7CiAgICAgaW52YWxpZGF0ZVRvcCgpOwogICAgIGludmFsaWRhdGVM
ZWZ0KCk7CiB9CiAKLWlubGluZSB2b2lkIEJveDo6c2V0SGFzVmFsaWRQb3NpdGlvbigpCitpbmxp
bmUgdm9pZCBCb3g6OlJlY3Q6OnNldEhhc1ZhbGlkUG9zaXRpb24oKQogewogICAgIG1faGFzVmFs
aWRUb3AgPSB0cnVlOwogICAgIG1faGFzVmFsaWRMZWZ0ID0gdHJ1ZTsKIH0KICNlbmRpZgogCi1p
bmxpbmUgTGF5b3V0UmVjdCBCb3g6OnJlY3QoKSBjb25zdAoraW5saW5lIEJveDo6UmVjdDo6UmVj
dChjb25zdCBMYXlvdXRQb2ludCYgdG9wTGVmdCwgY29uc3QgTGF5b3V0U2l6ZSYgc2l6ZSkKKyAg
ICA6IG1fcmVjdCh0b3BMZWZ0LCBzaXplKQogewotICAgIEFTU0VSVChoYXNWYWxpZEdlb21ldHJ5
KCkpOwotICAgIHJldHVybiBtX3JlY3Q7CisKIH0KIAotaW5saW5lIExheW91dFVuaXQgQm94Ojp0
b3AoKSBjb25zdAoraW5saW5lIExheW91dFVuaXQgQm94OjpSZWN0Ojp0b3AoKSBjb25zdAogewog
ICAgIEFTU0VSVChtX2hhc1ZhbGlkVG9wKTsKICAgICByZXR1cm4gbV9yZWN0LnkoKTsKIH0KIAot
aW5saW5lIExheW91dFVuaXQgQm94OjpsZWZ0KCkgY29uc3QKK2lubGluZSBMYXlvdXRVbml0IEJv
eDo6UmVjdDo6bGVmdCgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKG1faGFzVmFsaWRMZWZ0KTsKICAg
ICByZXR1cm4gbV9yZWN0LngoKTsKIH0KIAotaW5saW5lIExheW91dFVuaXQgQm94Ojpib3R0b20o
KSBjb25zdAoraW5saW5lIExheW91dFVuaXQgQm94OjpSZWN0Ojpib3R0b20oKSBjb25zdAogewog
ICAgIEFTU0VSVChtX2hhc1ZhbGlkVG9wICYmIG1faGFzVmFsaWRIZWlnaHQpOwogICAgIHJldHVy
biBtX3JlY3QubWF4WSgpOwogfQogCi1pbmxpbmUgTGF5b3V0VW5pdCBCb3g6OnJpZ2h0KCkgY29u
c3QKK2lubGluZSBMYXlvdXRVbml0IEJveDo6UmVjdDo6cmlnaHQoKSBjb25zdAogewogICAgIEFT
U0VSVChtX2hhc1ZhbGlkTGVmdCAmJiBtX2hhc1ZhbGlkV2lkdGgpOwogICAgIHJldHVybiBtX3Jl
Y3QubWF4WCgpOwogfQogCi1pbmxpbmUgTGF5b3V0UG9pbnQgQm94Ojp0b3BMZWZ0KCkgY29uc3QK
K2lubGluZSBMYXlvdXRQb2ludCBCb3g6OlJlY3Q6OnRvcExlZnQoKSBjb25zdAogewogICAgIEFT
U0VSVChoYXNWYWxpZFBvc2l0aW9uKCkpOwotICAgIHJldHVybiBtX3JlY3QubG9jYXRpb24oKTsK
KyAgICByZXR1cm4gbV9yZWN0Lm1pblhNaW5ZQ29ybmVyKCk7CiB9CiAKLWlubGluZSBMYXlvdXRQ
b2ludCBCb3g6OmJvdHRvbVJpZ2h0KCkgY29uc3QKK2lubGluZSBMYXlvdXRQb2ludCBCb3g6OlJl
Y3Q6OmJvdHRvbVJpZ2h0KCkgY29uc3QKIHsKICAgICBBU1NFUlQoaGFzVmFsaWRHZW9tZXRyeSgp
KTsKICAgICByZXR1cm4gbV9yZWN0Lm1heFhNYXhZQ29ybmVyKCk7CiB9CiAKLWlubGluZSBMYXlv
dXRTaXplIEJveDo6c2l6ZSgpIGNvbnN0CitpbmxpbmUgTGF5b3V0U2l6ZSBCb3g6OlJlY3Q6OnNp
emUoKSBjb25zdAogewogICAgIEFTU0VSVChoYXNWYWxpZFNpemUoKSk7CiAgICAgcmV0dXJuIG1f
cmVjdC5zaXplKCk7CiB9CiAKLWlubGluZSBMYXlvdXRVbml0IEJveDo6d2lkdGgoKSBjb25zdAor
aW5saW5lIExheW91dFVuaXQgQm94OjpSZWN0Ojp3aWR0aCgpIGNvbnN0CiB7CiAgICAgQVNTRVJU
KG1faGFzVmFsaWRXaWR0aCk7CiAgICAgcmV0dXJuIG1fcmVjdC53aWR0aCgpOwogfQogCi1pbmxp
bmUgTGF5b3V0VW5pdCBCb3g6OmhlaWdodCgpIGNvbnN0CitpbmxpbmUgTGF5b3V0VW5pdCBCb3g6
OlJlY3Q6OmhlaWdodCgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKG1faGFzVmFsaWRIZWlnaHQpOwog
ICAgIHJldHVybiBtX3JlY3QuaGVpZ2h0KCk7CiB9CiAKLWlubGluZSB2b2lkIEJveDo6c2V0VG9w
TGVmdChjb25zdCBMYXlvdXRQb2ludCYgdG9wTGVmdCkKK2lubGluZSB2b2lkIEJveDo6UmVjdDo6
c2V0VG9wTGVmdChjb25zdCBMYXlvdXRQb2ludCYgdG9wTGVmdCkKIHsKICNpZiAhQVNTRVJUX0RJ
U0FCTEVECiAgICAgc2V0SGFzVmFsaWRQb3NpdGlvbigpOwpAQCAtMjQzLDcgKzI4MCw3IEBAIGlu
bGluZSB2b2lkIEJveDo6c2V0VG9wTGVmdChjb25zdCBMYXlvdXRQb2ludCYgdG9wTGVmdCkKICAg
ICBtX3JlY3Quc2V0TG9jYXRpb24odG9wTGVmdCk7CiB9CiAKLWlubGluZSB2b2lkIEJveDo6c2V0
VG9wKExheW91dFVuaXQgdG9wKQoraW5saW5lIHZvaWQgQm94OjpSZWN0OjpzZXRUb3AoTGF5b3V0
VW5pdCB0b3ApCiB7CiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgIG1faGFzVmFsaWRUb3AgPSB0
cnVlOwpAQCAtMjUxLDcgKzI4OCw3IEBAIGlubGluZSB2b2lkIEJveDo6c2V0VG9wKExheW91dFVu
aXQgdG9wKQogICAgIG1fcmVjdC5zZXRZKHRvcCk7CiB9CiAKLWlubGluZSB2b2lkIEJveDo6c2V0
TGVmdChMYXlvdXRVbml0IGxlZnQpCitpbmxpbmUgdm9pZCBCb3g6OlJlY3Q6OnNldExlZnQoTGF5
b3V0VW5pdCBsZWZ0KQogewogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICBtX2hhc1ZhbGlkTGVm
dCA9IHRydWU7CkBAIC0yNTksNyArMjk2LDcgQEAgaW5saW5lIHZvaWQgQm94OjpzZXRMZWZ0KExh
eW91dFVuaXQgbGVmdCkKICAgICBtX3JlY3Quc2V0WChsZWZ0KTsKIH0KIAotaW5saW5lIHZvaWQg
Qm94OjpzZXRXaWR0aChMYXlvdXRVbml0IHdpZHRoKQoraW5saW5lIHZvaWQgQm94OjpSZWN0Ojpz
ZXRXaWR0aChMYXlvdXRVbml0IHdpZHRoKQogewogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICBt
X2hhc1ZhbGlkV2lkdGggPSB0cnVlOwpAQCAtMjY4LDcgKzMwNSw3IEBAIGlubGluZSB2b2lkIEJv
eDo6c2V0V2lkdGgoTGF5b3V0VW5pdCB3aWR0aCkKICAgICBtX3JlY3Quc2V0V2lkdGgod2lkdGgp
OwogfQogCi1pbmxpbmUgdm9pZCBCb3g6OnNldEhlaWdodChMYXlvdXRVbml0IGhlaWdodCkKK2lu
bGluZSB2b2lkIEJveDo6UmVjdDo6c2V0SGVpZ2h0KExheW91dFVuaXQgaGVpZ2h0KQogewogI2lm
ICFBU1NFUlRfRElTQUJMRUQKICAgICBtX2hhc1ZhbGlkSGVpZ2h0ID0gdHJ1ZTsKQEAgLTI3Nyw2
ICszMTQsMzYgQEAgaW5saW5lIHZvaWQgQm94OjpzZXRIZWlnaHQoTGF5b3V0VW5pdCBoZWlnaHQp
CiAgICAgbV9yZWN0LnNldEhlaWdodChoZWlnaHQpOwogfQogCitpbmxpbmUgdm9pZCBCb3g6OlJl
Y3Q6OnNoaWZ0TGVmdFRvKExheW91dFVuaXQgbGVmdCkKK3sKKyAgICBBU1NFUlQobV9oYXNWYWxp
ZExlZnQpOworICAgIG1fcmVjdC5zaGlmdFhFZGdlVG8obGVmdCk7Cit9CisKK2lubGluZSB2b2lk
IEJveDo6UmVjdDo6c2hpZnRSaWdodFRvKExheW91dFVuaXQgcmlnaHQpCit7CisgICAgQVNTRVJU
KG1faGFzVmFsaWRMZWZ0ICYmIG1faGFzVmFsaWRXaWR0aCk7CisgICAgbV9yZWN0LnNoaWZ0TWF4
WEVkZ2VUbyhyaWdodCk7Cit9CisKK2lubGluZSB2b2lkIEJveDo6UmVjdDo6c2hpZnRUb3BUbyhM
YXlvdXRVbml0IHRvcCkKK3sKKyAgICBBU1NFUlQobV9oYXNWYWxpZFRvcCk7CisgICAgbV9yZWN0
LnNoaWZ0WUVkZ2VUbyh0b3ApOworfQorCitpbmxpbmUgdm9pZCBCb3g6OlJlY3Q6OnNoaWZ0Qm90
dG9tVG8oTGF5b3V0VW5pdCBib3R0b20pCit7CisgICAgQVNTRVJUKG1faGFzVmFsaWRUb3AgJiYg
bV9oYXNWYWxpZEhlaWdodCk7CisgICAgbV9yZWN0LnNoaWZ0TWF4WUVkZ2VUbyhib3R0b20pOwor
fQorCitpbmxpbmUgdm9pZCBCb3g6OlJlY3Q6OmV4cGFuZChMYXlvdXRVbml0IHdpZHRoLCBMYXlv
dXRVbml0IGhlaWdodCkKK3sKKyAgICBBU1NFUlQoaGFzVmFsaWRHZW9tZXRyeSgpKTsKKyAgICBt
X3JlY3QuZXhwYW5kKHdpZHRoLCBoZWlnaHQpOworfQorCiBpbmxpbmUgdm9pZCBCb3g6OnNldE1h
cmdpbihFZGdlcyBtYXJnaW4pCiB7CiAjaWYgIUFTU0VSVF9ESVNBQkxFRAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>