<?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>186649</bug_id>
          
          <creation_ts>2018-06-14 22:36:56 -0700</creation_ts>
          <short_desc>[LFC] Align compute functions styles.</short_desc>
          <delta_ts>2018-06-15 09:02:40 -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>koivisto</cc>
    
    <cc>sam</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>1433251</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2018-06-14 22:36:56 -0700</bug_when>
    <thetext>To make them look uniform.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1433252</commentid>
    <comment_count>1</comment_count>
      <attachid>342793</attachid>
    <who name="alan">zalan</who>
    <bug_when>2018-06-14 22:39:22 -0700</bug_when>
    <thetext>Created attachment 342793
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1433369</commentid>
    <comment_count>2</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2018-06-15 09:01:02 -0700</bug_when>
    <thetext>Committed r232871: &lt;https://trac.webkit.org/changeset/232871&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1433373</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-06-15 09:02:40 -0700</bug_when>
    <thetext>&lt;rdar://problem/41161044&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>342793</attachid>
            <date>2018-06-14 22:39:22 -0700</date>
            <delta_ts>2018-06-15 08:05:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-186649-20180614223921.patch</filename>
            <type>text/plain</type>
            <size>26337</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMyODM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWEwMTJjMTkzYzQ0NGQy
NTdmNDQ1YzZhYzEyOTMzZDliNjY1N2ZlNi4uYjE2ZWNjMzU0NTMxZDFmNjMyMGM0YWFkMmIzNzkw
OGMzZTUxZDE4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDE4LTA2LTE0ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ10gQWxpZ24gY29tcHV0
ZSBmdW5jdGlvbnMgc3R5bGVzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTg2NjQ5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgSW1wcm92ZSBjb2RlIHJlYWRhYmlsaXR5LgorCisgICAgICAgICogbGF5b3V0
L0Zvcm1hdHRpbmdDb250ZXh0Lmg6CisgICAgICAgICogbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0
R2VvbWV0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0Ojpjb250ZW50SGVpZ2h0Rm9y
Rm9ybWF0dGluZ0NvbnRleHRSb290KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0
dGluZ0NvbnRleHQ6Okdlb21ldHJ5Ojpjb21wdXRlZFZhbHVlSWZOb3RBdXRvKToKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dS
ZXBsYWNlZFZlcnRpY2FsR2VvbWV0cnkpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3Jt
YXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Om91dE9mRmxvd1JlcGxhY2VkSG9yaXpvbnRhbEdlb21l
dHJ5KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21l
dHJ5OjpmbG9hdGluZ05vblJlcGxhY2VkV2lkdGhBbmRNYXJnaW4pOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmZsb2F0aW5nUmVwbGFjZWRI
ZWlnaHRBbmRNYXJnaW4pOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29u
dGV4dDo6R2VvbWV0cnk6OmZsb2F0aW5nUmVwbGFjZWRXaWR0aEFuZE1hcmdpbik6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5saW5lUmVw
bGFjZWRIZWlnaHRBbmRNYXJnaW4pOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0
aW5nQ29udGV4dDo6R2VvbWV0cnk6OmlubGluZVJlcGxhY2VkV2lkdGhBbmRNYXJnaW4pOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmNvbXB1
dGVkTm9uQ29sbGFwc2VkSG9yaXpvbnRhbE1hcmdpblZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5Ojpjb21wdXRlZE5vbkNvbGxhcHNl
ZFZlcnRpY2FsTWFyZ2luVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0Ojpjb21wdXRl
ZFZhbHVlSWZOb3RBdXRvKTogRGVsZXRlZC4KKyAgICAgICAgKiBsYXlvdXQvYmxvY2tmb3JtYXR0
aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbkZsb3dOb25SZXBs
YWNlZEhlaWdodEFuZE1hcmdpbik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9y
bWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbkZsb3dOb25SZXBsYWNlZFdpZHRoQW5kTWFyZ2lu
KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2Vv
bWV0cnk6OmluRmxvd1JlcGxhY2VkV2lkdGhBbmRNYXJnaW4pOgorICAgICAgICAoV2ViQ29yZTo6
TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6c3RhdGljUG9zaXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9t
ZXRyeTo6aW5GbG93UG9zaXRpb25lZFBvc2l0aW9uKToKKwogMjAxOC0wNi0xMyAgWmFsYW4gQnVq
dGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdIE1pc2NlbGxhbmVvdXMgZml4
ZXMgdG8gYmUgYWJsZSB0byBsYXlvdXQgPGRpdj4gd2l0aCBmaXhlZCB3aWR0aC9oZWlnaHQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dC5oIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmgKaW5kZXggNTNlMmMxZTk5N2Uw
OWRkMTNhYTE0MDE5NmExZjMyZjM4MTI0ODczMy4uNWFmZmY3NDQyYjc2OWZlNTEyYWYzMDhmOGI2
MTJlMTkwMjNkOTk2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRp
bmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0
LmgKQEAgLTExOSw2ICsxMTksOCBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIHN0YXRpYyBEaXNwbGF5
OjpCb3g6Okhvcml6b250YWxFZGdlcyBjb21wdXRlZE5vbkNvbGxhcHNlZEhvcml6b250YWxNYXJn
aW5WYWx1ZShjb25zdCBMYXlvdXRDb250ZXh0JiwgY29uc3QgQm94Jik7CiAgICAgICAgIHN0YXRp
YyBEaXNwbGF5OjpCb3g6OlZlcnRpY2FsRWRnZXMgY29tcHV0ZWROb25Db2xsYXBzZWRWZXJ0aWNh
bE1hcmdpblZhbHVlKGNvbnN0IExheW91dENvbnRleHQmLCBjb25zdCBCb3gmKTsKIAorICAgICAg
ICBzdGF0aWMgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBjb21wdXRlZFZhbHVlSWZOb3RBdXRv
KGNvbnN0IExlbmd0aCYgZ2VvbWV0cnlQcm9wZXJ0eSwgTGF5b3V0VW5pdCBjb250YWluaW5nQmxv
Y2tXaWR0aCk7CisKICAgICBwcml2YXRlOgogICAgICAgICBzdGF0aWMgVmVydGljYWxHZW9tZXRy
eSBvdXRPZkZsb3dSZXBsYWNlZFZlcnRpY2FsR2VvbWV0cnkoTGF5b3V0Q29udGV4dCYsIGNvbnN0
IEJveCYpOwogICAgICAgICBzdGF0aWMgSG9yaXpvbnRhbEdlb21ldHJ5IG91dE9mRmxvd1JlcGxh
Y2VkSG9yaXpvbnRhbEdlb21ldHJ5KExheW91dENvbnRleHQmLCBjb25zdCBCb3gmKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcApp
bmRleCA1NWQ1Y2VkNzQyOWZmMmQyNGNkMWI3MmQ4MWEzYzNlMjgwMTRhMGI3Li5jZTUwNDQ0NTdh
MWJmZTY0NzYwZjJmODhkNTY4NmQ5ZTVmNjYyMzIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwCkBAIC0zNCw2ICszNCw3IEBA
IG5hbWVzcGFjZSBMYXlvdXQgewogc3RhdGljIExheW91dFVuaXQgY29udGVudEhlaWdodEZvckZv
cm1hdHRpbmdDb250ZXh0Um9vdChMYXlvdXRDb250ZXh0JiBsYXlvdXRDb250ZXh0LCBjb25zdCBC
b3gmIGxheW91dEJveCkKIHsKICAgICBBU1NFUlQobGF5b3V0Qm94LnN0eWxlKCkubG9naWNhbEhl
aWdodCgpLmlzQXV0bygpICYmIGxheW91dEJveC5lc3RhYmxpc2hlc0Zvcm1hdHRpbmdDb250ZXh0
KCkpOworCiAgICAgLy8gMTAuNi43ICdBdXRvJyBoZWlnaHRzIGZvciBibG9jayBmb3JtYXR0aW5n
IGNvbnRleHQgcm9vdHMKIAogICAgIC8vIElmIGl0IG9ubHkgaGFzIGlubGluZS1sZXZlbCBjaGls
ZHJlbiwgdGhlIGhlaWdodCBpcyB0aGUgZGlzdGFuY2UgYmV0d2VlbiB0aGUgdG9wIG9mIHRoZSB0
b3Btb3N0IGxpbmUgYm94IGFuZCB0aGUgYm90dG9tIG9mIHRoZSBib3R0b21tb3N0IGxpbmUgYm94
LgpAQCAtNjQsNyArNjUsNyBAQCBzdGF0aWMgTGF5b3V0VW5pdCBzaHJpbmtUb0ZpdFdpZHRoKExh
eW91dENvbnRleHQmLCBjb25zdCBCb3gmKQogICAgIHJldHVybiB7IH07CiB9CiAKLXN0YXRpYyBz
dGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGNvbXB1dGVkVmFsdWVJZk5vdEF1dG8oY29uc3QgTGVu
Z3RoJiBnZW9tZXRyeVByb3BlcnR5LCBMYXlvdXRVbml0IGNvbnRhaW5pbmdCbG9ja1dpZHRoKQor
c3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmNv
bXB1dGVkVmFsdWVJZk5vdEF1dG8oY29uc3QgTGVuZ3RoJiBnZW9tZXRyeVByb3BlcnR5LCBMYXlv
dXRVbml0IGNvbnRhaW5pbmdCbG9ja1dpZHRoKQogewogICAgIGlmIChnZW9tZXRyeVByb3BlcnR5
LmlzQXV0bygpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMzMwLDYgKzMzMSw3
IEBAIEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6SG9yaXpvbnRhbEdlb21ldHJ5IEZvcm1h
dHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6b3V0CiBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6
OlZlcnRpY2FsR2VvbWV0cnkgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dS
ZXBsYWNlZFZlcnRpY2FsR2VvbWV0cnkoTGF5b3V0Q29udGV4dCYgbGF5b3V0Q29udGV4dCwgY29u
c3QgQm94JiBsYXlvdXRCb3gpCiB7CiAgICAgQVNTRVJUKGxheW91dEJveC5pc091dE9mRmxvd1Bv
c2l0aW9uZWQoKSAmJiBsYXlvdXRCb3gucmVwbGFjZWQoKSk7CisKICAgICAvLyAxMC42LjUgQWJz
b2x1dGVseSBwb3NpdGlvbmVkLCByZXBsYWNlZCBlbGVtZW50cwogICAgIC8vCiAgICAgLy8gVGhl
IHVzZWQgdmFsdWUgb2YgJ2hlaWdodCcgaXMgZGV0ZXJtaW5lZCBhcyBmb3IgaW5saW5lIHJlcGxh
Y2VkIGVsZW1lbnRzLgpAQCAtMzk3LDYgKzM5OSw3IEBAIEZvcm1hdHRpbmdDb250ZXh0OjpHZW9t
ZXRyeTo6VmVydGljYWxHZW9tZXRyeSBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Om91dE9m
CiBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Okhvcml6b250YWxHZW9tZXRyeSBGb3JtYXR0
aW5nQ29udGV4dDo6R2VvbWV0cnk6Om91dE9mRmxvd1JlcGxhY2VkSG9yaXpvbnRhbEdlb21ldHJ5
KExheW91dENvbnRleHQmIGxheW91dENvbnRleHQsIGNvbnN0IEJveCYgbGF5b3V0Qm94KQogewog
ICAgIEFTU0VSVChsYXlvdXRCb3guaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkgJiYgbGF5b3V0Qm94
LnJlcGxhY2VkKCkpOworCiAgICAgLy8gMTAuMy44IEFic29sdXRlbHkgcG9zaXRpb25lZCwgcmVw
bGFjZWQgZWxlbWVudHMKICAgICAvLyBJbiB0aGlzIGNhc2UsIHNlY3Rpb24gMTAuMy43IGFwcGxp
ZXMgdXAgdGhyb3VnaCBhbmQgaW5jbHVkaW5nIHRoZSBjb25zdHJhaW50IGVxdWF0aW9uLCBidXQg
dGhlIHJlc3Qgb2Ygc2VjdGlvbiAxMC4zLjcgaXMgcmVwbGFjZWQgYnkgdGhlIGZvbGxvd2luZyBy
dWxlczoKICAgICAvLwpAQCAtNTI2LDE4ICs1MjksMjIgQEAgRm9ybWF0dGluZ0NvbnRleHQ6Okdl
b21ldHJ5OjpXaWR0aEFuZE1hcmdpbiBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmZsb2F0
aW4KICAgICAvLyAxLiBJZiAnbWFyZ2luLWxlZnQnLCBvciAnbWFyZ2luLXJpZ2h0JyBhcmUgY29t
cHV0ZWQgYXMgJ2F1dG8nLCB0aGVpciB1c2VkIHZhbHVlIGlzICcwJy4KICAgICAvLyAyLiBJZiAn
d2lkdGgnIGlzIGNvbXB1dGVkIGFzICdhdXRvJywgdGhlIHVzZWQgdmFsdWUgaXMgdGhlICJzaHJp
bmstdG8tZml0IiB3aWR0aC4KIAotICAgIGF1dG8mIHN0eWxlID0gbGF5b3V0Qm94LnN0eWxlKCk7
Ci0gICAgYXV0byB3aWR0aCA9IHN0eWxlLmxvZ2ljYWxXaWR0aCgpOworICAgIGF1dG8mIGNvbnRh
aW5pbmdCbG9jayA9ICpsYXlvdXRCb3guY29udGFpbmluZ0Jsb2NrKCk7CisgICAgYXV0byYgY29u
dGFpbmluZ0Jsb2NrRGlzcGxheUJveCA9ICpsYXlvdXRDb250ZXh0LmRpc3BsYXlCb3hGb3JMYXlv
dXRCb3goY29udGFpbmluZ0Jsb2NrKTsKKwogICAgIC8vICMxCi0gICAgYXV0byBjb21wdXRlZE5v
bkNvbGxhcHNlZEhvcml6b250YWxNYXJnaW5WYWx1ZXMgPSBjb21wdXRlZE5vbkNvbGxhcHNlZEhv
cml6b250YWxNYXJnaW5WYWx1ZShsYXlvdXRDb250ZXh0LCBsYXlvdXRCb3gpOworICAgIGF1dG8g
bWFyZ2luID0gY29tcHV0ZWROb25Db2xsYXBzZWRIb3Jpem9udGFsTWFyZ2luVmFsdWUobGF5b3V0
Q29udGV4dCwgbGF5b3V0Qm94KTsKICAgICAvLyAjMgotICAgIGF1dG8gY29tcHV0ZWRXaWR0aFZh
bHVlID0gd2lkdGguaXNBdXRvKCkgPyBzaHJpbmtUb0ZpdFdpZHRoKGxheW91dENvbnRleHQsIGxh
eW91dEJveCkgOiBMYXlvdXRVbml0KHdpZHRoLnZhbHVlKCkpOwotICAgIHJldHVybiBGb3JtYXR0
aW5nQ29udGV4dDo6R2VvbWV0cnk6OldpZHRoQW5kTWFyZ2luIHsgY29tcHV0ZWRXaWR0aFZhbHVl
LCBjb21wdXRlZE5vbkNvbGxhcHNlZEhvcml6b250YWxNYXJnaW5WYWx1ZXMgfTsKKyAgICBhdXRv
IHdpZHRoID0gY29tcHV0ZWRWYWx1ZUlmTm90QXV0byhsYXlvdXRCb3guc3R5bGUoKS5sb2dpY2Fs
V2lkdGgoKSwgY29udGFpbmluZ0Jsb2NrRGlzcGxheUJveC53aWR0aCgpKTsKKyAgICBpZiAoIXdp
ZHRoKQorICAgICAgICB3aWR0aCA9IHNocmlua1RvRml0V2lkdGgobGF5b3V0Q29udGV4dCwgbGF5
b3V0Qm94KTsKKyAgICByZXR1cm4gRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpXaWR0aEFu
ZE1hcmdpbiB7ICp3aWR0aCwgbWFyZ2luIH07CiB9CiAKIEZvcm1hdHRpbmdDb250ZXh0OjpHZW9t
ZXRyeTo6SGVpZ2h0QW5kTWFyZ2luIEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6ZmxvYXRp
bmdSZXBsYWNlZEhlaWdodEFuZE1hcmdpbihMYXlvdXRDb250ZXh0JiBsYXlvdXRDb250ZXh0LCBj
b25zdCBCb3gmIGxheW91dEJveCkKIHsKICAgICBBU1NFUlQobGF5b3V0Qm94LmlzRmxvYXRpbmdQ
b3NpdGlvbmVkKCkgJiYgbGF5b3V0Qm94LnJlcGxhY2VkKCkpOworCiAgICAgLy8gMTAuNi4yIElu
bGluZSByZXBsYWNlZCBlbGVtZW50cywgYmxvY2stbGV2ZWwgcmVwbGFjZWQgZWxlbWVudHMgaW4g
bm9ybWFsIGZsb3csICdpbmxpbmUtYmxvY2snCiAgICAgLy8gcmVwbGFjZWQgZWxlbWVudHMgaW4g
bm9ybWFsIGZsb3cgYW5kIGZsb2F0aW5nIHJlcGxhY2VkIGVsZW1lbnRzCiAgICAgcmV0dXJuIGlu
bGluZVJlcGxhY2VkSGVpZ2h0QW5kTWFyZ2luKGxheW91dENvbnRleHQsIGxheW91dEJveCk7CkBA
IC01NDYsMTIgKzU1MywxMyBAQCBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OkhlaWdodEFu
ZE1hcmdpbiBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmZsb2F0aQogRm9ybWF0dGluZ0Nv
bnRleHQ6Okdlb21ldHJ5OjpXaWR0aEFuZE1hcmdpbiBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0
cnk6OmZsb2F0aW5nUmVwbGFjZWRXaWR0aEFuZE1hcmdpbihMYXlvdXRDb250ZXh0JiBsYXlvdXRD
b250ZXh0LCBjb25zdCBCb3gmIGxheW91dEJveCkKIHsKICAgICBBU1NFUlQobGF5b3V0Qm94Lmlz
RmxvYXRpbmdQb3NpdGlvbmVkKCkgJiYgbGF5b3V0Qm94LnJlcGxhY2VkKCkpOworCiAgICAgLy8g
MTAuMy42IEZsb2F0aW5nLCByZXBsYWNlZCBlbGVtZW50cwogICAgIC8vCiAgICAgLy8gMS4gSWYg
J21hcmdpbi1sZWZ0JyBvciAnbWFyZ2luLXJpZ2h0JyBhcmUgY29tcHV0ZWQgYXMgJ2F1dG8nLCB0
aGVpciB1c2VkIHZhbHVlIGlzICcwJy4KICAgICAvLyAyLiBUaGUgdXNlZCB2YWx1ZSBvZiAnd2lk
dGgnIGlzIGRldGVybWluZWQgYXMgZm9yIGlubGluZSByZXBsYWNlZCBlbGVtZW50cy4KLSAgICBh
dXRvIGNvbXB1dGVkTm9uQ29sbGFwc2VkSG9yaXpvbnRhbE1hcmdpblZhbHVlcyA9IGNvbXB1dGVk
Tm9uQ29sbGFwc2VkSG9yaXpvbnRhbE1hcmdpblZhbHVlKGxheW91dENvbnRleHQsIGxheW91dEJv
eCk7Ci0gICAgcmV0dXJuIGlubGluZVJlcGxhY2VkV2lkdGhBbmRNYXJnaW4obGF5b3V0Q29udGV4
dCwgbGF5b3V0Qm94LCBjb21wdXRlZE5vbkNvbGxhcHNlZEhvcml6b250YWxNYXJnaW5WYWx1ZXMu
bGVmdCwgY29tcHV0ZWROb25Db2xsYXBzZWRIb3Jpem9udGFsTWFyZ2luVmFsdWVzLnJpZ2h0KTsK
KyAgICBhdXRvIG1hcmdpbiA9IGNvbXB1dGVkTm9uQ29sbGFwc2VkSG9yaXpvbnRhbE1hcmdpblZh
bHVlKGxheW91dENvbnRleHQsIGxheW91dEJveCk7CisgICAgcmV0dXJuIGlubGluZVJlcGxhY2Vk
V2lkdGhBbmRNYXJnaW4obGF5b3V0Q29udGV4dCwgbGF5b3V0Qm94LCBtYXJnaW4ubGVmdCwgbWFy
Z2luLnJpZ2h0KTsKIH0KIAogRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpWZXJ0aWNhbEdl
b21ldHJ5IEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6b3V0T2ZGbG93VmVydGljYWxHZW9t
ZXRyeShMYXlvdXRDb250ZXh0JiBsYXlvdXRDb250ZXh0LCBjb25zdCBCb3gmIGxheW91dEJveCkK
QEAgLTU5Myw2ICs2MDEsNyBAQCBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OldpZHRoQW5k
TWFyZ2luIEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6ZmxvYXRpbgogRm9ybWF0dGluZ0Nv
bnRleHQ6Okdlb21ldHJ5OjpIZWlnaHRBbmRNYXJnaW4gRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21l
dHJ5OjppbmxpbmVSZXBsYWNlZEhlaWdodEFuZE1hcmdpbihMYXlvdXRDb250ZXh0JiBsYXlvdXRD
b250ZXh0LCBjb25zdCBCb3gmIGxheW91dEJveCkKIHsKICAgICBBU1NFUlQoKGxheW91dEJveC5p
c091dE9mRmxvd1Bvc2l0aW9uZWQoKSB8fCBsYXlvdXRCb3guaXNGbG9hdGluZ1Bvc2l0aW9uZWQo
KSB8fCBsYXlvdXRCb3guaXNJbkZsb3coKSkgJiYgbGF5b3V0Qm94LnJlcGxhY2VkKCkpOworCiAg
ICAgLy8gMTAuNi4yIElubGluZSByZXBsYWNlZCBlbGVtZW50cywgYmxvY2stbGV2ZWwgcmVwbGFj
ZWQgZWxlbWVudHMgaW4gbm9ybWFsIGZsb3csICdpbmxpbmUtYmxvY2snIHJlcGxhY2VkIGVsZW1l
bnRzIGluIG5vcm1hbCBmbG93IGFuZCBmbG9hdGluZyByZXBsYWNlZCBlbGVtZW50cwogICAgIC8v
CiAgICAgLy8gMS4gSWYgJ21hcmdpbi10b3AnLCBvciAnbWFyZ2luLWJvdHRvbScgYXJlICdhdXRv
JywgdGhlaXIgdXNlZCB2YWx1ZSBpcyAwLgpAQCAtNjA0LDM4ICs2MTMsMzkgQEAgRm9ybWF0dGlu
Z0NvbnRleHQ6Okdlb21ldHJ5OjpIZWlnaHRBbmRNYXJnaW4gRm9ybWF0dGluZ0NvbnRleHQ6Okdl
b21ldHJ5OjppbmxpbmUKICAgICAvLyAgICB0aGUgaGVpZ2h0IG9mIHRoZSBsYXJnZXN0IHJlY3Rh
bmdsZSB0aGF0IGhhcyBhIDI6MSByYXRpbywgaGFzIGEgaGVpZ2h0IG5vdCBncmVhdGVyIHRoYW4g
MTUwcHgsIGFuZCBoYXMgYSB3aWR0aCBub3QgZ3JlYXRlciB0aGFuIHRoZSBkZXZpY2Ugd2lkdGgu
CiAKICAgICAvLyAjMQotICAgIGF1dG8gY29tcHV0ZWROb25Db2xsYXBzZWRWZXJ0aWNhbE1hcmdp
blZhbHVlcyA9IGNvbXB1dGVkTm9uQ29sbGFwc2VkVmVydGljYWxNYXJnaW5WYWx1ZShsYXlvdXRD
b250ZXh0LCBsYXlvdXRCb3gpOworICAgIGF1dG8gbWFyZ2luID0gY29tcHV0ZWROb25Db2xsYXBz
ZWRWZXJ0aWNhbE1hcmdpblZhbHVlKGxheW91dENvbnRleHQsIGxheW91dEJveCk7CiAKICAgICBh
dXRvJiBzdHlsZSA9IGxheW91dEJveC5zdHlsZSgpOwotICAgIGF1dG8gaGVpZ2h0ID0gc3R5bGUu
bG9naWNhbEhlaWdodCgpOwotICAgIExheW91dFVuaXQgY29tcHV0ZWRIZWlnaHRWYWx1ZTsKLSAg
ICBpZiAoaGVpZ2h0LmlzQXV0bygpKSB7Ci0gICAgICAgIGF1dG8gd2lkdGggPSBzdHlsZS5sb2dp
Y2FsV2lkdGgoKTsKLSAgICAgICAgYXV0byByZXBsYWNlZCA9IGxheW91dEJveC5yZXBsYWNlZCgp
OwotCi0gICAgICAgIGlmICh3aWR0aC5pc0F1dG8oKSAmJiByZXBsYWNlZC0+aGFzSW50cmluc2lj
SGVpZ2h0KCkpIHsKLSAgICAgICAgICAgIC8vICMyCi0gICAgICAgICAgICBjb21wdXRlZEhlaWdo
dFZhbHVlID0gcmVwbGFjZWQtPmludHJpbnNpY0hlaWdodCgpOwotICAgICAgICB9IGVsc2UgaWYg
KHJlcGxhY2VkLT5oYXNJbnRyaW5zaWNSYXRpbygpKSB7Ci0gICAgICAgICAgICAvLyAjMwotICAg
ICAgICAgICAgY29tcHV0ZWRIZWlnaHRWYWx1ZSA9IHdpZHRoLnZhbHVlKCkgLyByZXBsYWNlZC0+
aW50cmluc2ljUmF0aW8oKTsKLSAgICAgICAgfSBlbHNlIGlmIChyZXBsYWNlZC0+aGFzSW50cmlu
c2ljSGVpZ2h0KCkpIHsKLSAgICAgICAgICAgIC8vICM0Ci0gICAgICAgICAgICBjb21wdXRlZEhl
aWdodFZhbHVlID0gcmVwbGFjZWQtPmludHJpbnNpY0hlaWdodCgpOwotICAgICAgICB9IGVsc2Ug
ewotICAgICAgICAgICAgLy8gIzUKLSAgICAgICAgICAgIGNvbXB1dGVkSGVpZ2h0VmFsdWUgPSAx
NTA7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UKLSAgICAgICAgY29tcHV0ZWRIZWlnaHRWYWx1ZSA9
IGhlaWdodC52YWx1ZSgpOworICAgIGF1dG8gcmVwbGFjZWQgPSBsYXlvdXRCb3gucmVwbGFjZWQo
KTsKKyAgICBhdXRvJiBjb250YWluaW5nQmxvY2sgPSAqbGF5b3V0Qm94LmNvbnRhaW5pbmdCbG9j
aygpOworICAgIGF1dG8mIGNvbnRhaW5pbmdCbG9ja0Rpc3BsYXlCb3ggPSAqbGF5b3V0Q29udGV4
dC5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGNvbnRhaW5pbmdCbG9jayk7CisgICAgYXV0byBoZWln
aHQgPSBjb21wdXRlZFZhbHVlSWZOb3RBdXRvKHN0eWxlLmxvZ2ljYWxIZWlnaHQoKSwgY29udGFp
bmluZ0Jsb2NrRGlzcGxheUJveC5oZWlnaHQoKSk7CisgICAgYXV0byB3aWR0aCA9IGNvbXB1dGVk
VmFsdWVJZk5vdEF1dG8oc3R5bGUubG9naWNhbFdpZHRoKCksIGNvbnRhaW5pbmdCbG9ja0Rpc3Bs
YXlCb3gud2lkdGgoKSk7CisKKyAgICBpZiAoIWhlaWdodCAmJiAhd2lkdGggJiYgcmVwbGFjZWQt
Pmhhc0ludHJpbnNpY0hlaWdodCgpKSB7CisgICAgICAgIC8vICMyCisgICAgICAgIGhlaWdodCA9
IHJlcGxhY2VkLT5pbnRyaW5zaWNIZWlnaHQoKTsKKyAgICB9IGVsc2UgaWYgKCFoZWlnaHQgJiYg
cmVwbGFjZWQtPmhhc0ludHJpbnNpY1JhdGlvKCkpIHsKKyAgICAgICAgLy8gIzMKKyAgICAgICAg
aGVpZ2h0ID0gKndpZHRoIC8gcmVwbGFjZWQtPmludHJpbnNpY1JhdGlvKCk7CisgICAgfSBlbHNl
IGlmICghaGVpZ2h0ICYmIHJlcGxhY2VkLT5oYXNJbnRyaW5zaWNIZWlnaHQoKSkgeworICAgICAg
ICAvLyAjNAorICAgICAgICBoZWlnaHQgPSByZXBsYWNlZC0+aW50cmluc2ljSGVpZ2h0KCk7Cisg
ICAgfSBlbHNlIGlmICghaGVpZ2h0KSB7CisgICAgICAgIC8vICM1CisgICAgICAgIGhlaWdodCA9
IHsgMTUwIH07CisgICAgfQorCisgICAgQVNTRVJUKGhlaWdodCk7CiAKLSAgICByZXR1cm4geyBj
b21wdXRlZEhlaWdodFZhbHVlLCBjb21wdXRlZE5vbkNvbGxhcHNlZFZlcnRpY2FsTWFyZ2luVmFs
dWVzIH07CisgICAgcmV0dXJuIHsgKmhlaWdodCwgbWFyZ2luIH07CiB9CiAKIEZvcm1hdHRpbmdD
b250ZXh0OjpHZW9tZXRyeTo6V2lkdGhBbmRNYXJnaW4gRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21l
dHJ5OjppbmxpbmVSZXBsYWNlZFdpZHRoQW5kTWFyZ2luKExheW91dENvbnRleHQmIGxheW91dENv
bnRleHQsIGNvbnN0IEJveCYgbGF5b3V0Qm94LAogICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5p
dD4gcHJlY29tcHV0ZWRNYXJnaW5MZWZ0LCBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IHByZWNv
bXB1dGVkTWFyZ2luUmlnaHQpCiB7CiAgICAgQVNTRVJUKChsYXlvdXRCb3guaXNPdXRPZkZsb3dQ
b3NpdGlvbmVkKCkgfHwgbGF5b3V0Qm94LmlzRmxvYXRpbmdQb3NpdGlvbmVkKCkgfHwgbGF5b3V0
Qm94LmlzSW5GbG93KCkpICYmIGxheW91dEJveC5yZXBsYWNlZCgpKTsKKwogICAgIC8vIDEwLjMu
MiBJbmxpbmUsIHJlcGxhY2VkIGVsZW1lbnRzCiAgICAgLy8KICAgICAvLyBBIGNvbXB1dGVkIHZh
bHVlIG9mICdhdXRvJyBmb3IgJ21hcmdpbi1sZWZ0JyBvciAnbWFyZ2luLXJpZ2h0JyBiZWNvbWVz
IGEgdXNlZCB2YWx1ZSBvZiAnMCcuCkBAIC02NTQsNTIgKzY2NCw1NSBAQCBGb3JtYXR0aW5nQ29u
dGV4dDo6R2VvbWV0cnk6OldpZHRoQW5kTWFyZ2luIEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRy
eTo6aW5saW5lUgogICAgIC8vCiAgICAgLy8gNS4gT3RoZXJ3aXNlLCBpZiAnd2lkdGgnIGhhcyBh
IGNvbXB1dGVkIHZhbHVlIG9mICdhdXRvJywgYnV0IG5vbmUgb2YgdGhlIGNvbmRpdGlvbnMgYWJv
dmUgYXJlIG1ldCwgdGhlbiB0aGUgdXNlZCB2YWx1ZSBvZiAnd2lkdGgnIGJlY29tZXMgMzAwcHgu
CiAgICAgLy8gICAgSWYgMzAwcHggaXMgdG9vIHdpZGUgdG8gZml0IHRoZSBkZXZpY2UsIFVBcyBz
aG91bGQgdXNlIHRoZSB3aWR0aCBvZiB0aGUgbGFyZ2VzdCByZWN0YW5nbGUgdGhhdCBoYXMgYSAy
OjEgcmF0aW8gYW5kIGZpdHMgdGhlIGRldmljZSBpbnN0ZWFkLgorCiAgICAgYXV0byYgc3R5bGUg
PSBsYXlvdXRCb3guc3R5bGUoKTsKLSAgICBhdXRvIGNvbnRhaW5pbmdCbG9ja1dpZHRoID0gbGF5
b3V0Q29udGV4dC5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KCpsYXlvdXRCb3guY29udGFpbmluZ0Js
b2NrKCkpLT53aWR0aCgpOworICAgIGF1dG8mIGNvbnRhaW5pbmdCbG9jayA9ICpsYXlvdXRCb3gu
Y29udGFpbmluZ0Jsb2NrKCk7CisgICAgYXV0byYgY29udGFpbmluZ0Jsb2NrRGlzcGxheUJveCA9
ICpsYXlvdXRDb250ZXh0LmRpc3BsYXlCb3hGb3JMYXlvdXRCb3goY29udGFpbmluZ0Jsb2NrKTsK
IAogICAgIGF1dG8gY29tcHV0ZU1hcmdpblJpZ2h0ID0gWyZdKCkgewogICAgICAgICBpZiAocHJl
Y29tcHV0ZWRNYXJnaW5SaWdodCkKICAgICAgICAgICAgIHJldHVybiBwcmVjb21wdXRlZE1hcmdp
blJpZ2h0LnZhbHVlKCk7Ci0gICAgICAgIGF1dG8gbWFyZ2luUmlnaHQgPSBzdHlsZS5tYXJnaW5S
aWdodCgpOwotICAgICAgICByZXR1cm4gbWFyZ2luUmlnaHQuaXNBdXRvKCkgPyBMYXlvdXRVbml0
IHsgMCB9IDogdmFsdWVGb3JMZW5ndGgobWFyZ2luUmlnaHQsIGNvbnRhaW5pbmdCbG9ja1dpZHRo
KTsKKyAgICAgICAgYXV0byBtYXJnaW5SaWdodCA9IGNvbXB1dGVkVmFsdWVJZk5vdEF1dG8oc3R5
bGUubWFyZ2luUmlnaHQoKSwgY29udGFpbmluZ0Jsb2NrRGlzcGxheUJveC53aWR0aCgpKTsKKyAg
ICAgICAgcmV0dXJuIG1hcmdpblJpZ2h0LnZhbHVlX29yKExheW91dFVuaXQgeyAwIH0pOwogICAg
IH07CiAKICAgICBhdXRvIGNvbXB1dGVNYXJnaW5MZWZ0ID0gWyZdKCkgewogICAgICAgICBpZiAo
cHJlY29tcHV0ZWRNYXJnaW5MZWZ0KQogICAgICAgICAgICAgcmV0dXJuIHByZWNvbXB1dGVkTWFy
Z2luTGVmdC52YWx1ZSgpOwotICAgICAgICBhdXRvIG1hcmdpbkxlZnQgPSBzdHlsZS5tYXJnaW5M
ZWZ0KCk7Ci0gICAgICAgIHJldHVybiBtYXJnaW5MZWZ0LmlzQXV0bygpID8gTGF5b3V0VW5pdCB7
IDAgfSA6IHZhbHVlRm9yTGVuZ3RoKG1hcmdpbkxlZnQsIGNvbnRhaW5pbmdCbG9ja1dpZHRoKTsK
KyAgICAgICAgYXV0byBtYXJnaW5MZWZ0ID0gY29tcHV0ZWRWYWx1ZUlmTm90QXV0byhzdHlsZS5t
YXJnaW5MZWZ0KCksIGNvbnRhaW5pbmdCbG9ja0Rpc3BsYXlCb3gud2lkdGgoKSk7CisgICAgICAg
IHJldHVybiBtYXJnaW5MZWZ0LnZhbHVlX29yKExheW91dFVuaXQgeyAwIH0pOwogICAgIH07CiAK
LSAgICBMYXlvdXRVbml0IGNvbXB1dGVkTWFyZ2luTGVmdFZhbHVlID0gY29tcHV0ZU1hcmdpbkxl
ZnQoKTsKLSAgICBMYXlvdXRVbml0IGNvbXB1dGVkTWFyZ2luUmlnaHRWYWx1ZSA9IGNvbXB1dGVN
YXJnaW5SaWdodCgpOworICAgIExheW91dFVuaXQgbWFyZ2luTGVmdCA9IGNvbXB1dGVNYXJnaW5M
ZWZ0KCk7CisgICAgTGF5b3V0VW5pdCBtYXJnaW5SaWdodCA9IGNvbXB1dGVNYXJnaW5SaWdodCgp
OwogCi0gICAgTGF5b3V0VW5pdCBjb21wdXRlZFdpZHRoVmFsdWU7Ci0gICAgYXV0byB3aWR0aCA9
IHN0eWxlLmxvZ2ljYWxXaWR0aCgpOwotICAgIGF1dG8gaGVpZ2h0ID0gc3R5bGUubG9naWNhbEhl
aWdodCgpOwogICAgIGF1dG8gcmVwbGFjZWQgPSBsYXlvdXRCb3gucmVwbGFjZWQoKTsKKyAgICBh
dXRvIGhlaWdodCA9IGNvbXB1dGVkVmFsdWVJZk5vdEF1dG8oc3R5bGUubG9naWNhbEhlaWdodCgp
LCBjb250YWluaW5nQmxvY2tEaXNwbGF5Qm94LmhlaWdodCgpKTsKKyAgICBhdXRvIHdpZHRoID0g
Y29tcHV0ZWRWYWx1ZUlmTm90QXV0byhzdHlsZS5sb2dpY2FsV2lkdGgoKSwgY29udGFpbmluZ0Js
b2NrRGlzcGxheUJveC53aWR0aCgpKTsKKwogICAgIEFTU0VSVChyZXBsYWNlZCk7CiAKLSAgICBp
ZiAod2lkdGguaXNBdXRvKCkgJiYgaGVpZ2h0LmlzQXV0bygpICYmIHJlcGxhY2VkLT5oYXNJbnRy
aW5zaWNXaWR0aCgpKSB7CisgICAgaWYgKCF3aWR0aCAmJiAhaGVpZ2h0ICYmIHJlcGxhY2VkLT5o
YXNJbnRyaW5zaWNXaWR0aCgpKSB7CiAgICAgICAgIC8vICMxCi0gICAgICAgIGNvbXB1dGVkV2lk
dGhWYWx1ZSA9IHJlcGxhY2VkLT5pbnRyaW5zaWNXaWR0aCgpOwotICAgIH0gZWxzZSBpZiAod2lk
dGguaXNBdXRvKCkgJiYgKGhlaWdodC5pc0NhbGN1bGF0ZWQoKSB8fCByZXBsYWNlZC0+aGFzSW50
cmluc2ljSGVpZ2h0KCkpICYmIHJlcGxhY2VkLT5oYXNJbnRyaW5zaWNSYXRpbygpKSB7CisgICAg
ICAgIHdpZHRoID0gcmVwbGFjZWQtPmludHJpbnNpY1dpZHRoKCk7CisgICAgfSBlbHNlIGlmICgo
IXdpZHRoICYmICFoZWlnaHQgJiYgIXJlcGxhY2VkLT5oYXNJbnRyaW5zaWNXaWR0aCgpICYmIHJl
cGxhY2VkLT5oYXNJbnRyaW5zaWNIZWlnaHQoKSAmJiByZXBsYWNlZC0+aGFzSW50cmluc2ljUmF0
aW8oKSkKKyAgICAgICAgfHwgKCF3aWR0aCAmJiBoZWlnaHQgJiYgcmVwbGFjZWQtPmhhc0ludHJp
bnNpY1JhdGlvKCkpKSB7IAogICAgICAgICAvLyAjMgotICAgICAgICBhdXRvIHVzZWRIZWlnaHQg
PSBoZWlnaHQuaXNDYWxjdWxhdGVkKCkgPyBMYXlvdXRVbml0KGhlaWdodC52YWx1ZSgpKSA6IHJl
cGxhY2VkLT5pbnRyaW5zaWNIZWlnaHQoKTsKLSAgICAgICAgY29tcHV0ZWRXaWR0aFZhbHVlID0g
dXNlZEhlaWdodCAqIHJlcGxhY2VkLT5pbnRyaW5zaWNSYXRpbygpOwotICAgIH0gZWxzZSBpZiAo
d2lkdGguaXNBdXRvKCkgJiYgaGVpZ2h0LmlzQXV0bygpICYmIHJlcGxhY2VkLT5oYXNJbnRyaW5z
aWNSYXRpbygpKSB7CisgICAgICAgIGF1dG8gdXNlZEhlaWdodCA9IGhlaWdodC52YWx1ZV9vcihy
ZXBsYWNlZC0+aW50cmluc2ljSGVpZ2h0KCkpOworICAgICAgICB3aWR0aCA9IHVzZWRIZWlnaHQg
KiByZXBsYWNlZC0+aW50cmluc2ljUmF0aW8oKTsKKyAgICB9IGVsc2UgaWYgKCF3aWR0aCAmJiAh
aGVpZ2h0ICYmIHJlcGxhY2VkLT5oYXNJbnRyaW5zaWNSYXRpbygpICYmICFyZXBsYWNlZC0+aGFz
SW50cmluc2ljV2lkdGgoKSAmJiAhcmVwbGFjZWQtPmhhc0ludHJpbnNpY0hlaWdodCgpKSB7CiAg
ICAgICAgIC8vICMzCiAgICAgICAgIC8vIEZJWE1FOiB1bmRlZmluZWQgYnV0IHN1cmVseSBkb2Fi
bGUuCiAgICAgICAgIEFTU0VSVF9OT1RfSU1QTEVNRU5URURfWUVUKCk7Ci0gICAgfSBlbHNlIGlm
ICh3aWR0aC5pc0F1dG8oKSAmJiByZXBsYWNlZC0+aGFzSW50cmluc2ljV2lkdGgoKSkgeworICAg
IH0gZWxzZSBpZiAoIXdpZHRoICYmIHJlcGxhY2VkLT5oYXNJbnRyaW5zaWNXaWR0aCgpKSB7CiAg
ICAgICAgIC8vICM0Ci0gICAgICAgIGNvbXB1dGVkV2lkdGhWYWx1ZSA9IHJlcGxhY2VkLT5pbnRy
aW5zaWNXaWR0aCgpOworICAgICAgICB3aWR0aCA9IHJlcGxhY2VkLT5pbnRyaW5zaWNXaWR0aCgp
OwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vICM1Ci0gICAgICAgIGNvbXB1dGVkV2lkdGhWYWx1
ZSA9IDMwMDsKKyAgICAgICAgd2lkdGggPSB7IDMwMCB9OwogICAgIH0KIAotICAgIHJldHVybiB7
IGNvbXB1dGVkV2lkdGhWYWx1ZSwgeyBjb21wdXRlZE1hcmdpbkxlZnRWYWx1ZSwgY29tcHV0ZWRN
YXJnaW5SaWdodFZhbHVlIH0gfTsKKyAgICByZXR1cm4geyAqd2lkdGgsIHsgbWFyZ2luTGVmdCwg
bWFyZ2luUmlnaHQgfSB9OwogfQogCiBEaXNwbGF5OjpCb3g6OkVkZ2VzIEZvcm1hdHRpbmdDb250
ZXh0OjpHZW9tZXRyeTo6Y29tcHV0ZWRCb3JkZXIoTGF5b3V0Q29udGV4dCYsIGNvbnN0IEJveCYg
bGF5b3V0Qm94KQpAQCAtNzI3LDI3ICs3NDAsMjEgQEAgc3RkOjpvcHRpb25hbDxEaXNwbGF5OjpC
b3g6OkVkZ2VzPiBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmNvbXB1dGVkUGFkZGluZygK
IERpc3BsYXk6OkJveDo6SG9yaXpvbnRhbEVkZ2VzIEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRy
eTo6Y29tcHV0ZWROb25Db2xsYXBzZWRIb3Jpem9udGFsTWFyZ2luVmFsdWUoY29uc3QgTGF5b3V0
Q29udGV4dCYgbGF5b3V0Q29udGV4dCwgY29uc3QgQm94JiBsYXlvdXRCb3gpCiB7CiAgICAgYXV0
byYgc3R5bGUgPSBsYXlvdXRCb3guc3R5bGUoKTsKLSAgICBhdXRvIG1hcmdpbkxlZnQgPSBzdHls
ZS5tYXJnaW5MZWZ0KCk7Ci0gICAgYXV0byBtYXJnaW5SaWdodCA9IHN0eWxlLm1hcmdpblJpZ2h0
KCk7Ci0KICAgICBhdXRvIGNvbnRhaW5pbmdCbG9ja1dpZHRoID0gbGF5b3V0Q29udGV4dC5kaXNw
bGF5Qm94Rm9yTGF5b3V0Qm94KCpsYXlvdXRCb3guY29udGFpbmluZ0Jsb2NrKCkpLT53aWR0aCgp
OwotICAgIHJldHVybiB7Ci0gICAgICAgIG1hcmdpbkxlZnQuaXNBdXRvKCkgPyBMYXlvdXRVbml0
IHsgMCB9IDogdmFsdWVGb3JMZW5ndGgobWFyZ2luTGVmdCwgY29udGFpbmluZ0Jsb2NrV2lkdGgp
LAotICAgICAgICBtYXJnaW5SaWdodC5pc0F1dG8oKSA/IExheW91dFVuaXQgeyAwIH0gOiB2YWx1
ZUZvckxlbmd0aChtYXJnaW5SaWdodCwgY29udGFpbmluZ0Jsb2NrV2lkdGgpCi0gICAgfTsKKwor
ICAgIGF1dG8gbWFyZ2luTGVmdCA9IGNvbXB1dGVkVmFsdWVJZk5vdEF1dG8oc3R5bGUubWFyZ2lu
TGVmdCgpLCBjb250YWluaW5nQmxvY2tXaWR0aCkudmFsdWVfb3IoTGF5b3V0VW5pdCB7IDAgfSk7
CisgICAgYXV0byBtYXJnaW5SaWdodCA9IGNvbXB1dGVkVmFsdWVJZk5vdEF1dG8oc3R5bGUubWFy
Z2luUmlnaHQoKSwgY29udGFpbmluZ0Jsb2NrV2lkdGgpLnZhbHVlX29yKExheW91dFVuaXQgeyAw
IH0pOworICAgIHJldHVybiB7IG1hcmdpbkxlZnQsIG1hcmdpblJpZ2h0IH07CiB9CiAKIERpc3Bs
YXk6OkJveDo6VmVydGljYWxFZGdlcyBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmNvbXB1
dGVkTm9uQ29sbGFwc2VkVmVydGljYWxNYXJnaW5WYWx1ZShjb25zdCBMYXlvdXRDb250ZXh0JiBs
YXlvdXRDb250ZXh0LCBjb25zdCBCb3gmIGxheW91dEJveCkKIHsKICAgICBhdXRvJiBzdHlsZSA9
IGxheW91dEJveC5zdHlsZSgpOwotICAgIGF1dG8gbWFyZ2luVG9wID0gc3R5bGUubWFyZ2luVG9w
KCk7Ci0gICAgYXV0byBtYXJnaW5Cb3R0b20gPSBzdHlsZS5tYXJnaW5Cb3R0b20oKTsKLQogICAg
IGF1dG8gY29udGFpbmluZ0Jsb2NrV2lkdGggPSBsYXlvdXRDb250ZXh0LmRpc3BsYXlCb3hGb3JM
YXlvdXRCb3goKmxheW91dEJveC5jb250YWluaW5nQmxvY2soKSktPndpZHRoKCk7Ci0gICAgcmV0
dXJuIHsKLSAgICAgICAgbWFyZ2luVG9wLmlzQXV0bygpID8gTGF5b3V0VW5pdCB7IDAgfSA6IHZh
bHVlRm9yTGVuZ3RoKG1hcmdpblRvcCwgY29udGFpbmluZ0Jsb2NrV2lkdGgpLAotICAgICAgICBt
YXJnaW5Cb3R0b20uaXNBdXRvKCkgPyBMYXlvdXRVbml0IHsgMCB9IDogdmFsdWVGb3JMZW5ndGgo
bWFyZ2luQm90dG9tLCBjb250YWluaW5nQmxvY2tXaWR0aCkKLSAgICB9OworCisgICAgYXV0byBt
YXJnaW5Ub3AgPSBjb21wdXRlZFZhbHVlSWZOb3RBdXRvKHN0eWxlLm1hcmdpblRvcCgpLCBjb250
YWluaW5nQmxvY2tXaWR0aCkudmFsdWVfb3IoTGF5b3V0VW5pdCB7IDAgfSk7CisgICAgYXV0byBt
YXJnaW5Cb3R0b20gPSBjb21wdXRlZFZhbHVlSWZOb3RBdXRvKHN0eWxlLm1hcmdpbkJvdHRvbSgp
LCBjb250YWluaW5nQmxvY2tXaWR0aCkudmFsdWVfb3IoTGF5b3V0VW5pdCB7IDAgfSk7CisgICAg
cmV0dXJuIHsgbWFyZ2luVG9wLCBtYXJnaW5Cb3R0b20gfTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250
ZXh0R2VvbWV0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9C
bG9ja0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwCmluZGV4IDM4NDQ1ZWFjMzU1NDgyYjVi
OGVhZWMyMDRmZjI5NDgzN2E1N2ZiOGQuLmQ4ZTNhZmQ3MTM1MzMwMzVhOGMwMWI2NzhkNzMzYzU3
OWU4OTQyOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRp
bmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5j
cHAKQEAgLTcxLDYgKzcxLDcgQEAgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpIZWlnaHRB
bmRNYXJnaW4gQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmkKICAgICAgICAgLy8g
NC4gemVybywgb3RoZXJ3aXNlCiAgICAgICAgIC8vIE9ubHkgY2hpbGRyZW4gaW4gdGhlIG5vcm1h
bCBmbG93IGFyZSB0YWtlbiBpbnRvIGFjY291bnQgKGkuZS4sIGZsb2F0aW5nIGJveGVzIGFuZCBh
YnNvbHV0ZWx5IHBvc2l0aW9uZWQgYm94ZXMgYXJlIGlnbm9yZWQsCiAgICAgICAgIC8vIGFuZCBy
ZWxhdGl2ZWx5IHBvc2l0aW9uZWQgYm94ZXMgYXJlIGNvbnNpZGVyZWQgd2l0aG91dCB0aGVpciBv
ZmZzZXQpLiBOb3RlIHRoYXQgdGhlIGNoaWxkIGJveCBtYXkgYmUgYW4gYW5vbnltb3VzIGJsb2Nr
IGJveC4KKwogICAgICAgICBpZiAoIWxheW91dEJveC5zdHlsZSgpLmxvZ2ljYWxIZWlnaHQoKS5p
c0F1dG8oKSkgewogICAgICAgICAgICAgLy8gRklYTUU6IE9ubHkgZml4ZWQgdmFsdWVzIHlldC4K
ICAgICAgICAgICAgIHJldHVybiBsYXlvdXRCb3guc3R5bGUoKS5sb2dpY2FsSGVpZ2h0KCkudmFs
dWUoKTsKQEAgLTIyMiwxNyArMjIzLDE3IEBAIEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6
V2lkdGhBbmRNYXJnaW4gQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmluCiAgICAg
ICAgIHJldHVybiBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OldpZHRoQW5kTWFyZ2luIHsg
Y29tcHV0ZWRXaWR0aFZhbHVlLCB7ICpjb21wdXRlZE1hcmdpbkxlZnRWYWx1ZSwgKmNvbXB1dGVk
TWFyZ2luUmlnaHRWYWx1ZSB9IH07CiAgICAgfTsKIAotICAgIGF1dG8gY29tcHV0ZWRXaWR0aEFu
ZE1hcmdpblZhbHVlID0gY29tcHV0ZSgpOworICAgIGF1dG8gd2lkdGhBbmRNYXJnaW4gPSBjb21w
dXRlKCk7CiAgICAgaWYgKCFpc1N0cmV0Y2hlZFRvVmlld3BvcnQobGF5b3V0Q29udGV4dCwgbGF5
b3V0Qm94KSkKLSAgICAgICAgcmV0dXJuIGNvbXB1dGVkV2lkdGhBbmRNYXJnaW5WYWx1ZTsKKyAg
ICAgICAgcmV0dXJuIHdpZHRoQW5kTWFyZ2luOwogCiAgICAgYXV0byBpbml0aWFsQ29udGFpbmlu
Z0Jsb2NrV2lkdGggPSBsYXlvdXRDb250ZXh0LmRpc3BsYXlCb3hGb3JMYXlvdXRCb3goaW5pdGlh
bENvbnRhaW5pbmdCbG9jayhsYXlvdXRCb3gpKS0+Y29udGVudEJveCgpLndpZHRoKCk7Ci0gICAg
YXV0byBob3Jpem9udGFsTWFyZ2lucyA9IGNvbXB1dGVkV2lkdGhBbmRNYXJnaW5WYWx1ZS5tYXJn
aW4ubGVmdCArIGNvbXB1dGVkV2lkdGhBbmRNYXJnaW5WYWx1ZS5tYXJnaW4ucmlnaHQ7CisgICAg
YXV0byBob3Jpem9udGFsTWFyZ2lucyA9IHdpZHRoQW5kTWFyZ2luLm1hcmdpbi5sZWZ0ICsgd2lk
dGhBbmRNYXJnaW4ubWFyZ2luLnJpZ2h0OwogICAgIC8vIFN0cmV0Y2ggYnV0IG5ldmVyIG92ZXJz
dHJldGNoIHdpdGggdGhlIG1hcmdpbnMuCi0gICAgaWYgKGNvbXB1dGVkV2lkdGhBbmRNYXJnaW5W
YWx1ZS53aWR0aCArIGhvcml6b250YWxNYXJnaW5zIDwgaW5pdGlhbENvbnRhaW5pbmdCbG9ja1dp
ZHRoKQotICAgICAgICBjb21wdXRlZFdpZHRoQW5kTWFyZ2luVmFsdWUud2lkdGggPSBpbml0aWFs
Q29udGFpbmluZ0Jsb2NrV2lkdGggLSBob3Jpem9udGFsTWFyZ2luczsKKyAgICBpZiAod2lkdGhB
bmRNYXJnaW4ud2lkdGggKyBob3Jpem9udGFsTWFyZ2lucyA8IGluaXRpYWxDb250YWluaW5nQmxv
Y2tXaWR0aCkKKyAgICAgICAgd2lkdGhBbmRNYXJnaW4ud2lkdGggPSBpbml0aWFsQ29udGFpbmlu
Z0Jsb2NrV2lkdGggLSBob3Jpem9udGFsTWFyZ2luczsKIAotICAgIHJldHVybiB7IGNvbXB1dGVk
V2lkdGhBbmRNYXJnaW5WYWx1ZS53aWR0aCwgY29tcHV0ZWRXaWR0aEFuZE1hcmdpblZhbHVlLm1h
cmdpbiB9OworICAgIHJldHVybiB3aWR0aEFuZE1hcmdpbjsKIH0KIAogRm9ybWF0dGluZ0NvbnRl
eHQ6Okdlb21ldHJ5OjpXaWR0aEFuZE1hcmdpbiBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9t
ZXRyeTo6aW5GbG93UmVwbGFjZWRXaWR0aEFuZE1hcmdpbihMYXlvdXRDb250ZXh0JiBsYXlvdXRD
b250ZXh0LCBjb25zdCBCb3gmIGxheW91dEJveCkKQEAgLTI0NSwxMSArMjQ2LDEwIEBAIEZvcm1h
dHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6V2lkdGhBbmRNYXJnaW4gQmxvY2tGb3JtYXR0aW5nQ29u
dGV4dDo6R2VvbWV0cnk6OmluCiAgICAgLy8gMi4gVGhlbiB0aGUgcnVsZXMgZm9yIG5vbi1yZXBs
YWNlZCBibG9jay1sZXZlbCBlbGVtZW50cyBhcmUgYXBwbGllZCB0byBkZXRlcm1pbmUgdGhlIG1h
cmdpbnMuCiAKICAgICAvLyAjMQotICAgIGF1dG8gaW5saW5lUmVwbGFjZWRXaWR0aEFuZE1hcmdp
biA9IEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5saW5lUmVwbGFjZWRXaWR0aEFuZE1h
cmdpbihsYXlvdXRDb250ZXh0LCBsYXlvdXRCb3gpOworICAgIGF1dG8gd2lkdGggPSBGb3JtYXR0
aW5nQ29udGV4dDo6R2VvbWV0cnk6OmlubGluZVJlcGxhY2VkV2lkdGhBbmRNYXJnaW4obGF5b3V0
Q29udGV4dCwgbGF5b3V0Qm94KS53aWR0aDsKICAgICAvLyAjMgotICAgIGF1dG8gaW5saW5lUmVw
bGFjZWRXaWR0aEFuZEJsb2NrTm9uUmVwbGFjZWRNYXJnaW4gPSBpbkZsb3dOb25SZXBsYWNlZFdp
ZHRoQW5kTWFyZ2luKGxheW91dENvbnRleHQsIGxheW91dEJveCwgaW5saW5lUmVwbGFjZWRXaWR0
aEFuZE1hcmdpbi53aWR0aCk7Ci0gICAgQVNTRVJUKGlubGluZVJlcGxhY2VkV2lkdGhBbmRNYXJn
aW4ud2lkdGggPT0gaW5saW5lUmVwbGFjZWRXaWR0aEFuZEJsb2NrTm9uUmVwbGFjZWRNYXJnaW4u
d2lkdGgpOwotICAgIHJldHVybiBpbmxpbmVSZXBsYWNlZFdpZHRoQW5kQmxvY2tOb25SZXBsYWNl
ZE1hcmdpbjsKKyAgICBhdXRvIG1hcmdpbiA9IGluRmxvd05vblJlcGxhY2VkV2lkdGhBbmRNYXJn
aW4obGF5b3V0Q29udGV4dCwgbGF5b3V0Qm94LCB3aWR0aCkubWFyZ2luOworICAgIHJldHVybiB7
IHdpZHRoLCBtYXJnaW4gfTsKIH0KIAogTGF5b3V0UG9pbnQgQmxvY2tGb3JtYXR0aW5nQ29udGV4
dDo6R2VvbWV0cnk6OnN0YXRpY1Bvc2l0aW9uKExheW91dENvbnRleHQmIGxheW91dENvbnRleHQs
IGNvbnN0IEJveCYgbGF5b3V0Qm94KQpAQCAtMjU5LDYgKzI1OSw3IEBAIExheW91dFBvaW50IEJs
b2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpzdGF0aWNQb3NpdGlvbihMYXlvdXRDb250
ZXh0JiBsYXlvCiAgICAgLy8gVGhlIHZlcnRpY2FsIGRpc3RhbmNlIGJldHdlZW4gdHdvIHNpYmxp
bmcgYm94ZXMgaXMgZGV0ZXJtaW5lZCBieSB0aGUgJ21hcmdpbicgcHJvcGVydGllcy4KICAgICAv
LyBWZXJ0aWNhbCBtYXJnaW5zIGJldHdlZW4gYWRqYWNlbnQgYmxvY2stbGV2ZWwgYm94ZXMgaW4g
YSBibG9jayBmb3JtYXR0aW5nIGNvbnRleHQgY29sbGFwc2UuCiAgICAgLy8gSW4gYSBibG9jayBm
b3JtYXR0aW5nIGNvbnRleHQsIGVhY2ggYm94J3MgbGVmdCBvdXRlciBlZGdlIHRvdWNoZXMgdGhl
IGxlZnQgZWRnZSBvZiB0aGUgY29udGFpbmluZyBibG9jayAoZm9yIHJpZ2h0LXRvLWxlZnQgZm9y
bWF0dGluZywgcmlnaHQgZWRnZXMgdG91Y2gpLgorCiAgICAgYXV0byBjb250YWluaW5nQmxvY2tD
b250ZW50Qm94ID0gbGF5b3V0Q29udGV4dC5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KCpsYXlvdXRC
b3guY29udGFpbmluZ0Jsb2NrKCkpLT5jb250ZW50Qm94KCk7CiAgICAgLy8gU3RhcnQgZnJvbSB0
aGUgdG9wIG9mIHRoZSBjb250YWluZXIncyBjb250ZW50IGJveC4KICAgICBhdXRvIHRvcCA9IGNv
bnRhaW5pbmdCbG9ja0NvbnRlbnRCb3gudG9wKCk7CkBAIC0yNzMsNiArMjc0LDcgQEAgTGF5b3V0
UG9pbnQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OnN0YXRpY1Bvc2l0aW9uKExh
eW91dENvbnRleHQmIGxheW8KIExheW91dFBvaW50IEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdl
b21ldHJ5OjppbkZsb3dQb3NpdGlvbmVkUG9zaXRpb24oTGF5b3V0Q29udGV4dCYgbGF5b3V0Q29u
dGV4dCwgY29uc3QgQm94JiBsYXlvdXRCb3gpCiB7CiAgICAgQVNTRVJUKGxheW91dEJveC5pc0lu
Rmxvd1Bvc2l0aW9uZWQoKSk7CisKICAgICAvLyA5LjQuMyBSZWxhdGl2ZSBwb3NpdGlvbmluZwog
ICAgIC8vCiAgICAgLy8gVGhlICd0b3AnIGFuZCAnYm90dG9tJyBwcm9wZXJ0aWVzIG1vdmUgcmVs
YXRpdmVseSBwb3NpdGlvbmVkIGVsZW1lbnQocykgdXAgb3IgZG93biB3aXRob3V0IGNoYW5naW5n
IHRoZWlyIHNpemUuCkBAIC0yODEsMjIgKzI4MywyOCBAQCBMYXlvdXRQb2ludCBCbG9ja0Zvcm1h
dHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5GbG93UG9zaXRpb25lZFBvc2l0aW9uKExheW91dENv
bgogICAgIC8vIDEuIElmIGJvdGggYXJlICdhdXRvJywgdGhlaXIgdXNlZCB2YWx1ZXMgYXJlIGJv
dGggJzAnLgogICAgIC8vIDIuIElmIG9uZSBvZiB0aGVtIGlzICdhdXRvJywgaXQgYmVjb21lcyB0
aGUgbmVnYXRpdmUgb2YgdGhlIG90aGVyLgogICAgIC8vIDMuIElmIG5laXRoZXIgaXMgJ2F1dG8n
LCAnYm90dG9tJyBpcyBpZ25vcmVkIChpLmUuLCB0aGUgdXNlZCB2YWx1ZSBvZiAnYm90dG9tJyB3
aWxsIGJlIG1pbnVzIHRoZSB2YWx1ZSBvZiAndG9wJykuCi0gICAgYXV0byYgZGlzcGxheUJveCA9
ICpsYXlvdXRDb250ZXh0LmRpc3BsYXlCb3hGb3JMYXlvdXRCb3gobGF5b3V0Qm94KTsKKwogICAg
IGF1dG8mIHN0eWxlID0gbGF5b3V0Qm94LnN0eWxlKCk7CisgICAgYXV0byYgZGlzcGxheUJveCA9
ICpsYXlvdXRDb250ZXh0LmRpc3BsYXlCb3hGb3JMYXlvdXRCb3gobGF5b3V0Qm94KTsKKyAgICBh
dXRvJiBjb250YWluaW5nQmxvY2sgPSAqbGF5b3V0Qm94LmNvbnRhaW5pbmdCbG9jaygpOworICAg
IGF1dG8mIGNvbnRhaW5pbmdCbG9ja0Rpc3BsYXlCb3ggPSAqbGF5b3V0Q29udGV4dC5kaXNwbGF5
Qm94Rm9yTGF5b3V0Qm94KGNvbnRhaW5pbmdCbG9jayk7CisgICAgYXV0byBjb250YWluaW5nQmxv
Y2tXaWR0aCA9IGNvbnRhaW5pbmdCbG9ja0Rpc3BsYXlCb3gud2lkdGgoKTsKIAotICAgIGF1dG8g
dG9wID0gc3R5bGUubG9naWNhbFRvcCgpOwotICAgIGF1dG8gYm90dG9tID0gc3R5bGUubG9naWNh
bEJvdHRvbSgpOwotICAgIExheW91dFVuaXQgdG9wRGVsdGE7CisgICAgYXV0byB0b3AgPSBGb3Jt
YXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmNvbXB1dGVkVmFsdWVJZk5vdEF1dG8oc3R5bGUubG9n
aWNhbFRvcCgpLCBjb250YWluaW5nQmxvY2tXaWR0aCk7CisgICAgYXV0byBib3R0b20gPSBGb3Jt
YXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmNvbXB1dGVkVmFsdWVJZk5vdEF1dG8oc3R5bGUubG9n
aWNhbEJvdHRvbSgpLCBjb250YWluaW5nQmxvY2tXaWR0aCk7CiAKLSAgICBpZiAodG9wLmlzQXV0
bygpICYmIGJvdHRvbS5pc0F1dG8oKSkgeworICAgIGlmICghdG9wICYmICFib3R0b20pIHsKICAg
ICAgICAgLy8gIzEKLSAgICAgICAgdG9wRGVsdGEgPSAwOwotICAgIH0gZWxzZSBpZiAodG9wLmlz
QXV0bygpKSB7CisgICAgICAgIHRvcCA9IGJvdHRvbSA9IHsgMCB9OworICAgIH0gZWxzZSBpZiAo
IXRvcCkgewogICAgICAgICAvLyAjMgotICAgICAgICB0b3BEZWx0YSA9IC1ib3R0b20udmFsdWUo
KTsKLSAgICB9IGVsc2UgaWYgKGJvdHRvbS5pc0F1dG8oKSkgewotICAgICAgICAvLyAjMyAjNAot
ICAgICAgICB0b3BEZWx0YSA9IHRvcC52YWx1ZSgpOworICAgICAgICB0b3AgPSAtKmJvdHRvbTsK
KyAgICB9IGVsc2UgaWYgKCFib3R0b20pIHsKKyAgICAgICAgLy8gIzMKKyAgICAgICAgYm90dG9t
ID0gLSp0b3A7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gIzQKKyAgICAgICAgYm90dG9tID0g
c3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIC8vIEZvciByZWxhdGl2ZWx5IHBvc2l0aW9uZWQg
ZWxlbWVudHMsICdsZWZ0JyBhbmQgJ3JpZ2h0JyBtb3ZlIHRoZSBib3goZXMpIGhvcml6b250YWxs
eSwgd2l0aG91dCBjaGFuZ2luZyB0aGVpciBzaXplLgpAQCAtMzA5LDI3ICszMTcsMzUgQEAgTGF5
b3V0UG9pbnQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmluRmxvd1Bvc2l0aW9u
ZWRQb3NpdGlvbihMYXlvdXRDb24KICAgICAvLyA0LiBJZiBuZWl0aGVyICdsZWZ0JyBub3IgJ3Jp
Z2h0JyBpcyAnYXV0bycsIHRoZSBwb3NpdGlvbiBpcyBvdmVyLWNvbnN0cmFpbmVkLCBhbmQgb25l
IG9mIHRoZW0gaGFzIHRvIGJlIGlnbm9yZWQuCiAgICAgLy8gICAgSWYgdGhlICdkaXJlY3Rpb24n
IHByb3BlcnR5IG9mIHRoZSBjb250YWluaW5nIGJsb2NrIGlzICdsdHInLCB0aGUgdmFsdWUgb2Yg
J2xlZnQnIHdpbnMgYW5kICdyaWdodCcgYmVjb21lcyAtJ2xlZnQnLgogICAgIC8vICAgIElmICdk
aXJlY3Rpb24nIG9mIHRoZSBjb250YWluaW5nIGJsb2NrIGlzICdydGwnLCAncmlnaHQnIHdpbnMg
YW5kICdsZWZ0JyBpcyBpZ25vcmVkLgotICAgIC8vCi0gICAgYXV0byBsZWZ0ID0gc3R5bGUubG9n
aWNhbExlZnQoKTsKLSAgICBhdXRvIHJpZ2h0ID0gc3R5bGUubG9naWNhbFJpZ2h0KCk7Ci0gICAg
TGF5b3V0VW5pdCBsZWZ0RGVsdGE7CiAKLSAgICBpZiAobGVmdC5pc0F1dG8oKSAmJiByaWdodC5p
c0F1dG8oKSkgeworICAgIGF1dG8gbGVmdCA9IEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6
Y29tcHV0ZWRWYWx1ZUlmTm90QXV0byhzdHlsZS5sb2dpY2FsTGVmdCgpLCBjb250YWluaW5nQmxv
Y2tXaWR0aCk7CisgICAgYXV0byByaWdodCA9IEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6
Y29tcHV0ZWRWYWx1ZUlmTm90QXV0byhzdHlsZS5sb2dpY2FsUmlnaHQoKSwgY29udGFpbmluZ0Js
b2NrV2lkdGgpOworCisgICAgaWYgKCFsZWZ0ICYmICFyaWdodCkgewogICAgICAgICAvLyAjMQot
ICAgICAgICBsZWZ0RGVsdGEgPSAwOwotICAgIH0gZWxzZSBpZiAobGVmdC5pc0F1dG8oKSkgewor
ICAgICAgICBsZWZ0ID0gcmlnaHQgPSB7IDAgfTsKKyAgICB9IGVsc2UgaWYgKCFsZWZ0KSB7CiAg
ICAgICAgIC8vICMyCi0gICAgICAgIGxlZnREZWx0YSA9IC1yaWdodC52YWx1ZSgpOwotICAgIH0g
ZWxzZSBpZiAocmlnaHQuaXNBdXRvKCkpIHsKKyAgICAgICAgbGVmdCA9IC0qcmlnaHQ7CisgICAg
fSBlbHNlIGlmICghcmlnaHQpIHsKICAgICAgICAgLy8gIzMKLSAgICAgICAgbGVmdERlbHRhID0g
bGVmdC52YWx1ZSgpOworICAgICAgICByaWdodCA9IC0qbGVmdDsKICAgICB9IGVsc2UgewogICAg
ICAgICAvLyAjNAotICAgICAgICAvLyBGSVhNRTogdGFrZSBkaXJlY3Rpb24gaW50byBhY2NvdW50
Ci0gICAgICAgIGxlZnREZWx0YSA9IGxlZnQudmFsdWUoKTsKKyAgICAgICAgYXV0byBpc0xlZnRU
b1JpZ2h0RGlyZWN0aW9uID0gY29udGFpbmluZ0Jsb2NrLnN0eWxlKCkuaXNMZWZ0VG9SaWdodERp
cmVjdGlvbigpOworICAgICAgICBpZiAoaXNMZWZ0VG9SaWdodERpcmVjdGlvbikKKyAgICAgICAg
ICAgIHJpZ2h0ID0gLSpsZWZ0OworICAgICAgICBlbHNlCisgICAgICAgICAgICBsZWZ0ID0gc3Rk
OjpudWxsb3B0OwogICAgIH0KIAotICAgIHJldHVybiB7IGRpc3BsYXlCb3gubGVmdCgpICsgbGVm
dERlbHRhLCBkaXNwbGF5Qm94LnRvcCgpICsgdG9wRGVsdGEgfTsKKyAgICBBU1NFUlQoIWJvdHRv
bSB8fCAqdG9wID09IC0qYm90dG9tKTsKKyAgICBBU1NFUlQoIWxlZnQgfHwgKmxlZnQgPT0gLSpy
aWdodCk7CisKKyAgICBhdXRvIG5ld1RvcFBvc2l0aW9uID0gZGlzcGxheUJveC50b3AoKSArICp0
b3A7ICAKKyAgICBhdXRvIG5ld0xlZnRQb3NpdGlvbiA9IGRpc3BsYXlCb3gubGVmdCgpICsgbGVm
dC52YWx1ZV9vcigtKnJpZ2h0KTsKKworICAgIHJldHVybiB7IG5ld1RvcFBvc2l0aW9uLCBuZXdM
ZWZ0UG9zaXRpb24gfTsKIH0KIAogRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpIZWlnaHRB
bmRNYXJnaW4gQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmluRmxvd0hlaWdodEFu
ZE1hcmdpbihMYXlvdXRDb250ZXh0JiBsYXlvdXRDb250ZXh0LCBjb25zdCBCb3gmIGxheW91dEJv
eCkK
</data>
<flag name="review"
          id="360883"
          type_id="1"
          status="+"
          setter="koivisto"
    />
          </attachment>
      

    </bug>

</bugzilla>