<?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>193168</bug_id>
          
          <creation_ts>2019-01-04 22:31:21 -0800</creation_ts>
          <short_desc>[LFC] VerticalMargin should only have the used values.</short_desc>
          <delta_ts>2019-01-05 00:41:07 -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>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>1492052</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2019-01-04 22:31:21 -0800</bug_when>
    <thetext>Move computed values out to a dedicated struct.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1492053</commentid>
    <comment_count>1</comment_count>
      <attachid>358430</attachid>
    <who name="alan">zalan</who>
    <bug_when>2019-01-04 22:34:17 -0800</bug_when>
    <thetext>Created attachment 358430
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1492054</commentid>
    <comment_count>2</comment_count>
      <attachid>358430</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-01-05 00:38:50 -0800</bug_when>
    <thetext>Comment on attachment 358430
Patch

Clearing flags on attachment: 358430

Committed r239655: &lt;https://trac.webkit.org/changeset/239655&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1492055</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-01-05 00:38:51 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1492056</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-01-05 00:41:07 -0800</bug_when>
    <thetext>&lt;rdar://problem/47065366&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>358430</attachid>
            <date>2019-01-04 22:34:17 -0800</date>
            <delta_ts>2019-01-05 00:38:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-193168-20190104223410.patch</filename>
            <type>text/plain</type>
            <size>45622</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5NjA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTJkMTIwMGRjMzNlMmY2
YmQ0ZjhiNmQzY2QyYzFmNmJhMTBjOWU0My4uYjQ3N2YyNzExYjYyMDE5OTNlZDM3MjQ5ZWQzNWQ2
M2ZmYjc1NDM0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxIEBACisyMDE5LTAxLTA0ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ10gVmVydGljYWxNYXJn
aW4gc2hvdWxkIG9ubHkgaGF2ZSB0aGUgdXNlZCB2YWx1ZXMuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTMxNjgKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTcGxpdCBWZXJ0aWNhbE1hcmdpbiBpbnRvIENv
bXB1dGVkVmVydGljYWxNYXJnaW4gYW5kIFVzZWRWZXJ0aWNhbE1hcmdpbi4KKyAgICAgICAgQ29t
cHV0ZWRWZXJ0aWNhbE1hcmdpbiBob2xkcyB0aGUgY29tcHV0ZWQgKG9wdGlvbmFsKSB2YWx1ZXMg
d2hpbGUgVXNlZFZlcnRpY2FsTWFyZ2luIGhvbGRzIGJvdGggdGhlCisgICAgICAgIGNvbGxhcHNl
ZCAob3B0aW9uYWwpIGFuZCB0aGUgbm9uLWNvbGxhcHNlZCB2YWx1ZXMuCisKKyAgICAgICAgKiBs
YXlvdXQvRm9ybWF0dGluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpG
b3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZU91dE9mRmxvd1ZlcnRpY2FsR2VvbWV0cnkgY29uc3Qp
OgorICAgICAgICAqIGxheW91dC9Gb3JtYXR0aW5nQ29udGV4dC5oOgorICAgICAgICAqIGxheW91
dC9Gb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dOb25SZXBsYWNlZFZlcnRp
Y2FsR2VvbWV0cnkpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4
dDo6R2VvbWV0cnk6Om91dE9mRmxvd1JlcGxhY2VkVmVydGljYWxHZW9tZXRyeSk6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6Y29tcGxpY2F0
ZWRDYXNlcyk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0OjpH
ZW9tZXRyeTo6aW5saW5lUmVwbGFjZWRIZWlnaHRBbmRNYXJnaW4pOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmlubGluZVJlcGxhY2VkV2lk
dGhBbmRNYXJnaW4pOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4
dDo6R2VvbWV0cnk6OmNvbXB1dGVkVmVydGljYWxNYXJnaW4pOgorICAgICAgICAoV2ViQ29yZTo6
TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmNvbXB1dGVkTm9uQ29sbGFwc2Vk
VmVydGljYWxNYXJnaW5WYWx1ZSk6IERlbGV0ZWQuCisgICAgICAgICogbGF5b3V0L0Zvcm1hdHRp
bmdDb250ZXh0UXVpcmtzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGlu
Z0NvbnRleHQ6OlF1aXJrczo6aGVpZ2h0VmFsdWVPZk5lYXJlc3RDb250YWluaW5nQmxvY2tXaXRo
Rml4ZWRIZWlnaHQpOgorICAgICAgICAqIGxheW91dC9MYXlvdXRVbml0cy5oOgorICAgICAgICAq
IGxheW91dC9NYXJnaW5UeXBlcy5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpVc2VkVmVy
dGljYWxNYXJnaW46OmJlZm9yZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlVz
ZWRWZXJ0aWNhbE1hcmdpbjo6YWZ0ZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
OjpVc2VkVmVydGljYWxNYXJnaW46Om5vbkNvbGxhcHNlZFZhbHVlcyBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6OlVzZWRWZXJ0aWNhbE1hcmdpbjo6Y29sbGFwc2VkVmFsdWVzIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6VXNlZFZlcnRpY2FsTWFyZ2luOjpoYXND
b2xsYXBzZWRWYWx1ZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpVc2VkVmVy
dGljYWxNYXJnaW46OnNldENvbGxhcHNlZFZhbHVlcyk6CisgICAgICAgIChXZWJDb3JlOjpMYXlv
dXQ6OlVzZWRWZXJ0aWNhbE1hcmdpbjo6VXNlZFZlcnRpY2FsTWFyZ2luKToKKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dDo6VmVydGljYWxNYXJnaW46Om5vbkNvbGxhcHNlZFZhbHVlcyBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlZlcnRpY2FsTWFyZ2luOjpjb2xs
YXBzZWRWYWx1ZXMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpW
ZXJ0aWNhbE1hcmdpbjo6c2V0Q29sbGFwc2VkVmFsdWVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dDo6VmVydGljYWxNYXJnaW46OlZlcnRpY2FsTWFyZ2luKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6VmVydGljYWxNYXJnaW46OnVzZWRWYWx1ZXMgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAqIGxheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3Jt
YXR0aW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0
dGluZ0NvbnRleHQ6OmNvbXB1dGVIZWlnaHRBbmRNYXJnaW4gY29uc3QpOgorICAgICAgICAqIGxh
eW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0
cnk6OmluRmxvd05vblJlcGxhY2VkSGVpZ2h0QW5kTWFyZ2luKToKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmluRmxvd0hlaWdodEFu
ZE1hcmdpbik6CisgICAgICAgICogbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRp
bmdDb250ZXh0UXVpcmtzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3Jt
YXR0aW5nQ29udGV4dDo6UXVpcmtzOjpzdHJldGNoZWRIZWlnaHQpOgorICAgICAgICAqIGxheW91
dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tNYXJnaW5Db2xsYXBzZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpNYXJnaW5Db2xs
YXBzZTo6Y29tcHV0ZWROb25Db2xsYXBzZWRNYXJnaW5CZWZvcmUpOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6TWFyZ2luQ29sbGFw
c2U6OmNvbXB1dGVkTm9uQ29sbGFwc2VkTWFyZ2luQWZ0ZXIpOgorICAgICAgICAqIGxheW91dC9k
aXNwbGF5dHJlZS9EaXNwbGF5Qm94Lmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpCb3g6
OnNldFZlcnRpY2FsTWFyZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkJveDo6dmVy
dGljYWxNYXJnaW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6Qm94OjptYXJn
aW5CZWZvcmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6Qm94OjptYXJnaW5B
ZnRlciBjb25zdCk6CisgICAgICAgICogbGF5b3V0L2Zsb2F0cy9GbG9hdGluZ0NvbnRleHQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGbG9hdGluZ0NvbnRleHQ6OnZlcnRpY2FsUG9z
aXRpb25XaXRoQ2xlYXJhbmNlIGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0
dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlv
dXQ6OklubGluZUZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlSGVpZ2h0QW5kTWFyZ2luIGNvbnN0
KToKKwogMjAxOS0wMS0wNCAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAg
ICAgIFtMRkNdIENvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbiBzaG91bGQgaGF2ZSBvcHRpb25hbCBt
ZW1iZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRl
eHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmNwcAppbmRl
eCA1ZTUzNmE4YmFlNzM1MWMzNWQzYTJmYTQzODUzOWMwNjc0NTgxOGFkLi4wY2NmMmQxOWViMmZi
YTNkZmIxMDc5YTdhNzZmZWYzNTMxYzIwMTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvRm9ybWF0dGluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9G
b3JtYXR0aW5nQ29udGV4dC5jcHAKQEAgLTExNiwxMSArMTE2LDExIEBAIHZvaWQgRm9ybWF0dGlu
Z0NvbnRleHQ6OmNvbXB1dGVPdXRPZkZsb3dWZXJ0aWNhbEdlb21ldHJ5KGNvbnN0IEJveCYgbGF5
b3V0Qm94KSBjCiAKICAgICBhdXRvJiBkaXNwbGF5Qm94ID0gbGF5b3V0U3RhdGUuZGlzcGxheUJv
eEZvckxheW91dEJveChsYXlvdXRCb3gpOwogICAgIC8vIE1hcmdpbnMgb2YgYWJzb2x1dGVseSBw
b3NpdGlvbmVkIGJveGVzIGRvIG5vdCBjb2xsYXBzZQotICAgIEFTU0VSVCghdmVydGljYWxHZW9t
ZXRyeS5oZWlnaHRBbmRNYXJnaW4ubWFyZ2luLmNvbGxhcHNlZFZhbHVlcygpKTsKLSAgICBhdXRv
IG5vbkNvbGxhcHNlZFZlcnRpY2FsTWFyZ2luID0gdmVydGljYWxHZW9tZXRyeS5oZWlnaHRBbmRN
YXJnaW4ubWFyZ2luLm5vbkNvbGxhcHNlZFZhbHVlcygpOworICAgIEFTU0VSVCghdmVydGljYWxH
ZW9tZXRyeS5oZWlnaHRBbmRNYXJnaW4udXNlZE1hcmdpbi5oYXNDb2xsYXBzZWRWYWx1ZXMoKSk7
CisgICAgYXV0byBub25Db2xsYXBzZWRWZXJ0aWNhbE1hcmdpbiA9IHZlcnRpY2FsR2VvbWV0cnku
aGVpZ2h0QW5kTWFyZ2luLnVzZWRNYXJnaW4ubm9uQ29sbGFwc2VkVmFsdWVzKCk7CiAgICAgZGlz
cGxheUJveC5zZXRUb3AodmVydGljYWxHZW9tZXRyeS50b3AgKyBub25Db2xsYXBzZWRWZXJ0aWNh
bE1hcmdpbi5iZWZvcmUpOwogICAgIGRpc3BsYXlCb3guc2V0Q29udGVudEJveEhlaWdodCh2ZXJ0
aWNhbEdlb21ldHJ5LmhlaWdodEFuZE1hcmdpbi5oZWlnaHQpOwotICAgIGRpc3BsYXlCb3guc2V0
VmVydGljYWxNYXJnaW4odmVydGljYWxHZW9tZXRyeS5oZWlnaHRBbmRNYXJnaW4ubWFyZ2luKTsK
KyAgICBkaXNwbGF5Qm94LnNldFZlcnRpY2FsTWFyZ2luKHZlcnRpY2FsR2VvbWV0cnkuaGVpZ2h0
QW5kTWFyZ2luLnVzZWRNYXJnaW4pOwogfQogCiB2b2lkIEZvcm1hdHRpbmdDb250ZXh0Ojpjb21w
dXRlQm9yZGVyQW5kUGFkZGluZyhjb25zdCBCb3gmIGxheW91dEJveCkgY29uc3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dC5oIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmgKaW5kZXggNTBiYmJhNWI2MTgwZTRiN2Qw
NWRiMTViZTYyZjU4MDU4ZmFjNGM2ZS4uNDJkNzI5Yjc1MTcyNzQ3YTkxZTFjZDlmYTBkZmM1MTg4
Y2QwYjljMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250
ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmgKQEAg
LTk3LDcgKzk3LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICBzdGF0aWMgT3B0aW9uYWw8RWRnZXM+
IGNvbXB1dGVkUGFkZGluZyhjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYpOwogCiAgICAg
ICAgIHN0YXRpYyBDb21wdXRlZEhvcml6b250YWxNYXJnaW4gY29tcHV0ZWRIb3Jpem9udGFsTWFy
Z2luKGNvbnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94Jik7Ci0gICAgICAgIHN0YXRpYyBWZXJ0
aWNhbE1hcmdpbjo6Q29tcHV0ZWRWYWx1ZXMgY29tcHV0ZWROb25Db2xsYXBzZWRWZXJ0aWNhbE1h
cmdpblZhbHVlKGNvbnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94Jik7CisgICAgICAgIHN0YXRp
YyBDb21wdXRlZFZlcnRpY2FsTWFyZ2luIGNvbXB1dGVkVmVydGljYWxNYXJnaW4oY29uc3QgTGF5
b3V0U3RhdGUmLCBjb25zdCBCb3gmKTsKIAogICAgICAgICBzdGF0aWMgT3B0aW9uYWw8TGF5b3V0
VW5pdD4gY29tcHV0ZWRWYWx1ZUlmTm90QXV0byhjb25zdCBMZW5ndGgmIGdlb21ldHJ5UHJvcGVy
dHksIExheW91dFVuaXQgY29udGFpbmluZ0Jsb2NrV2lkdGgpOwogICAgICAgICBzdGF0aWMgT3B0
aW9uYWw8TGF5b3V0VW5pdD4gZml4ZWRWYWx1ZShjb25zdCBMZW5ndGgmIGdlb21ldHJ5UHJvcGVy
dHkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0
R2VvbWV0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0R2Vv
bWV0cnkuY3BwCmluZGV4IDk0NzY5OGY1ZmRmNDg3Zjk3NTRkNzg5MDIxMmJlZmE0NGI4ZjdjZmQu
LmNjYTZlZjlhMWQ5MzNlZmEzZjBhZGZmMDNhOGY5OWJlOTZlZTZlNGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAKQEAgLTI4
MCwxMCArMjgwLDggQEAgVmVydGljYWxHZW9tZXRyeSBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0
cnk6Om91dE9mRmxvd05vblJlcGxhY2VkVmVydGljYWxHZW9tZXQKICAgICBhdXRvIHRvcCA9IGNv
bXB1dGVkVmFsdWVJZk5vdEF1dG8oc3R5bGUubG9naWNhbFRvcCgpLCBjb250YWluaW5nQmxvY2tX
aWR0aCk7CiAgICAgYXV0byBib3R0b20gPSBjb21wdXRlZFZhbHVlSWZOb3RBdXRvKHN0eWxlLmxv
Z2ljYWxCb3R0b20oKSwgY29udGFpbmluZ0Jsb2NrV2lkdGgpOwogICAgIGF1dG8gaGVpZ2h0ID0g
dXNlZEhlaWdodCA/IHVzZWRIZWlnaHQudmFsdWUoKSA6IGNvbXB1dGVkSGVpZ2h0VmFsdWUobGF5
b3V0U3RhdGUsIGxheW91dEJveCwgSGVpZ2h0VHlwZTo6Tm9ybWFsKTsKLSAgICBhdXRvIGNvbXB1
dGVkTWFyZ2luQmVmb3JlID0gY29tcHV0ZWRWYWx1ZUlmTm90QXV0byhzdHlsZS5tYXJnaW5CZWZv
cmUoKSwgY29udGFpbmluZ0Jsb2NrV2lkdGgpOwotICAgIGF1dG8gY29tcHV0ZWRNYXJnaW5BZnRl
ciA9IGNvbXB1dGVkVmFsdWVJZk5vdEF1dG8oc3R5bGUubWFyZ2luQWZ0ZXIoKSwgY29udGFpbmlu
Z0Jsb2NrV2lkdGgpOwotICAgIGF1dG8gdXNlZE1hcmdpbkJlZm9yZSA9IGNvbXB1dGVkTWFyZ2lu
QmVmb3JlOwotICAgIGF1dG8gdXNlZE1hcmdpbkFmdGVyID0gY29tcHV0ZWRNYXJnaW5BZnRlcjsK
KyAgICBhdXRvIGNvbXB1dGVkVmVydGljYWxNYXJnaW4gPSBHZW9tZXRyeTo6Y29tcHV0ZWRWZXJ0
aWNhbE1hcmdpbihsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KTsKKyAgICBVc2VkVmVydGljYWxNYXJn
aW46Ok5vbkNvbGxhcHNlZFZhbHVlcyB1c2VkVmVydGljYWxNYXJnaW47IAogICAgIGF1dG8gcGFk
ZGluZ1RvcCA9IGRpc3BsYXlCb3gucGFkZGluZ1RvcCgpLnZhbHVlT3IoMCk7CiAgICAgYXV0byBw
YWRkaW5nQm90dG9tID0gZGlzcGxheUJveC5wYWRkaW5nQm90dG9tKCkudmFsdWVPcigwKTsKICAg
ICBhdXRvIGJvcmRlclRvcCA9IGRpc3BsYXlCb3guYm9yZGVyVG9wKCk7CkBAIC0yOTMsNzIgKzI5
MSw2NyBAQCBWZXJ0aWNhbEdlb21ldHJ5IEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6b3V0
T2ZGbG93Tm9uUmVwbGFjZWRWZXJ0aWNhbEdlb21ldAogICAgICAgICB0b3AgPSBzdGF0aWNWZXJ0
aWNhbFBvc2l0aW9uRm9yT3V0T2ZGbG93UG9zaXRpb25lZChsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94
KTsKIAogICAgIGlmICh0b3AgJiYgaGVpZ2h0ICYmIGJvdHRvbSkgewotICAgICAgICBpZiAoIXVz
ZWRNYXJnaW5CZWZvcmUgJiYgIXVzZWRNYXJnaW5BZnRlcikgeworICAgICAgICBpZiAoIWNvbXB1
dGVkVmVydGljYWxNYXJnaW4uYmVmb3JlICYmICFjb21wdXRlZFZlcnRpY2FsTWFyZ2luLmFmdGVy
KSB7CiAgICAgICAgICAgICBhdXRvIG1hcmdpbkJlZm9yZUFuZEFmdGVyID0gY29udGFpbmluZ0Js
b2NrSGVpZ2h0IC0gKCp0b3AgKyBib3JkZXJUb3AgKyBwYWRkaW5nVG9wICsgKmhlaWdodCArIHBh
ZGRpbmdCb3R0b20gKyBib3JkZXJCb3R0b20gKyAqYm90dG9tKTsKLSAgICAgICAgICAgIHVzZWRN
YXJnaW5CZWZvcmUgPSB1c2VkTWFyZ2luQWZ0ZXIgPSBtYXJnaW5CZWZvcmVBbmRBZnRlciAvIDI7
Ci0gICAgICAgIH0gZWxzZSBpZiAoIXVzZWRNYXJnaW5CZWZvcmUpCi0gICAgICAgICAgICB1c2Vk
TWFyZ2luQmVmb3JlID0gY29udGFpbmluZ0Jsb2NrSGVpZ2h0IC0gKCp0b3AgKyBib3JkZXJUb3Ag
KyBwYWRkaW5nVG9wICsgKmhlaWdodCArIHBhZGRpbmdCb3R0b20gKyBib3JkZXJCb3R0b20gKyAq
dXNlZE1hcmdpbkFmdGVyICsgKmJvdHRvbSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHVz
ZWRNYXJnaW5BZnRlciA9IGNvbnRhaW5pbmdCbG9ja0hlaWdodCAtICgqdG9wICsgKnVzZWRNYXJn
aW5CZWZvcmUgKyBib3JkZXJUb3AgKyBwYWRkaW5nVG9wICsgKmhlaWdodCArIHBhZGRpbmdCb3R0
b20gKyBib3JkZXJCb3R0b20gKyAqYm90dG9tKTsKKyAgICAgICAgICAgIHVzZWRWZXJ0aWNhbE1h
cmdpbiA9IHsgbWFyZ2luQmVmb3JlQW5kQWZ0ZXIgLyAyLCBtYXJnaW5CZWZvcmVBbmRBZnRlciAv
IDIgfTsKKyAgICAgICAgfSBlbHNlIGlmICghY29tcHV0ZWRWZXJ0aWNhbE1hcmdpbi5iZWZvcmUp
IHsKKyAgICAgICAgICAgIHVzZWRWZXJ0aWNhbE1hcmdpbi5hZnRlciA9ICpjb21wdXRlZFZlcnRp
Y2FsTWFyZ2luLmFmdGVyOworICAgICAgICAgICAgdXNlZFZlcnRpY2FsTWFyZ2luLmJlZm9yZSA9
IGNvbnRhaW5pbmdCbG9ja0hlaWdodCAtICgqdG9wICsgYm9yZGVyVG9wICsgcGFkZGluZ1RvcCAr
ICpoZWlnaHQgKyBwYWRkaW5nQm90dG9tICsgYm9yZGVyQm90dG9tICsgdXNlZFZlcnRpY2FsTWFy
Z2luLmFmdGVyICsgKmJvdHRvbSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB1c2Vk
VmVydGljYWxNYXJnaW4uYmVmb3JlID0gKmNvbXB1dGVkVmVydGljYWxNYXJnaW4uYmVmb3JlOwor
ICAgICAgICAgICAgdXNlZFZlcnRpY2FsTWFyZ2luLmFmdGVyID0gY29udGFpbmluZ0Jsb2NrSGVp
Z2h0IC0gKCp0b3AgKyB1c2VkVmVydGljYWxNYXJnaW4uYmVmb3JlICsgYm9yZGVyVG9wICsgcGFk
ZGluZ1RvcCArICpoZWlnaHQgKyBwYWRkaW5nQm90dG9tICsgYm9yZGVyQm90dG9tICsgKmJvdHRv
bSk7CisgICAgICAgIH0KICAgICAgICAgLy8gT3Zlci1jb25zdHJhaW5lZD8KLSAgICAgICAgYXV0
byBib3hIZWlnaHQgPSAqdG9wICsgKnVzZWRNYXJnaW5CZWZvcmUgKyBib3JkZXJUb3AgKyBwYWRk
aW5nVG9wICsgKmhlaWdodCArIHBhZGRpbmdCb3R0b20gKyBib3JkZXJCb3R0b20gKyAqdXNlZE1h
cmdpbkFmdGVyICsgKmJvdHRvbTsKKyAgICAgICAgYXV0byBib3hIZWlnaHQgPSAqdG9wICsgdXNl
ZFZlcnRpY2FsTWFyZ2luLmJlZm9yZSArIGJvcmRlclRvcCArIHBhZGRpbmdUb3AgKyAqaGVpZ2h0
ICsgcGFkZGluZ0JvdHRvbSArIGJvcmRlckJvdHRvbSArIHVzZWRWZXJ0aWNhbE1hcmdpbi5hZnRl
ciArICpib3R0b207CiAgICAgICAgIGlmIChib3hIZWlnaHQgPiBjb250YWluaW5nQmxvY2tIZWln
aHQpCi0gICAgICAgICAgICBib3R0b20gPSBjb250YWluaW5nQmxvY2tIZWlnaHQgLSAoKnRvcCAr
ICp1c2VkTWFyZ2luQmVmb3JlICsgYm9yZGVyVG9wICsgcGFkZGluZ1RvcCArICpoZWlnaHQgKyBw
YWRkaW5nQm90dG9tICsgYm9yZGVyQm90dG9tICsgKnVzZWRNYXJnaW5BZnRlcik7IAorICAgICAg
ICAgICAgYm90dG9tID0gY29udGFpbmluZ0Jsb2NrSGVpZ2h0IC0gKCp0b3AgKyB1c2VkVmVydGlj
YWxNYXJnaW4uYmVmb3JlICsgYm9yZGVyVG9wICsgcGFkZGluZ1RvcCArICpoZWlnaHQgKyBwYWRk
aW5nQm90dG9tICsgYm9yZGVyQm90dG9tICsgdXNlZFZlcnRpY2FsTWFyZ2luLmFmdGVyKTsgCiAg
ICAgfQogCiAgICAgaWYgKCF0b3AgJiYgIWhlaWdodCAmJiBib3R0b20pIHsKICAgICAgICAgLy8g
IzEKICAgICAgICAgaGVpZ2h0ID0gY29udGVudEhlaWdodEZvckZvcm1hdHRpbmdDb250ZXh0Um9v
dChsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KTsKLSAgICAgICAgdXNlZE1hcmdpbkJlZm9yZSA9IHVz
ZWRNYXJnaW5CZWZvcmUudmFsdWVPcigwKTsKLSAgICAgICAgdXNlZE1hcmdpbkFmdGVyID0gdXNl
ZE1hcmdpbkFmdGVyLnZhbHVlT3IoMCk7Ci0gICAgICAgIHRvcCA9IGNvbnRhaW5pbmdCbG9ja0hl
aWdodCAtICgqdXNlZE1hcmdpbkJlZm9yZSArIGJvcmRlclRvcCArIHBhZGRpbmdUb3AgKyAqaGVp
Z2h0ICsgcGFkZGluZ0JvdHRvbSArIGJvcmRlckJvdHRvbSArICp1c2VkTWFyZ2luQWZ0ZXIgKyAq
Ym90dG9tKTsgCisgICAgICAgIHVzZWRWZXJ0aWNhbE1hcmdpbiA9IHsgY29tcHV0ZWRWZXJ0aWNh
bE1hcmdpbi5iZWZvcmUudmFsdWVPcigwKSwgY29tcHV0ZWRWZXJ0aWNhbE1hcmdpbi5hZnRlci52
YWx1ZU9yKDApIH07CisgICAgICAgIHRvcCA9IGNvbnRhaW5pbmdCbG9ja0hlaWdodCAtICh1c2Vk
VmVydGljYWxNYXJnaW4uYmVmb3JlICsgYm9yZGVyVG9wICsgcGFkZGluZ1RvcCArICpoZWlnaHQg
KyBwYWRkaW5nQm90dG9tICsgYm9yZGVyQm90dG9tICsgdXNlZFZlcnRpY2FsTWFyZ2luLmFmdGVy
ICsgKmJvdHRvbSk7IAogICAgIH0KIAogICAgIGlmICghdG9wICYmICFib3R0b20gJiYgaGVpZ2h0
KSB7CiAgICAgICAgIC8vICMyCiAgICAgICAgIHRvcCA9IHN0YXRpY1ZlcnRpY2FsUG9zaXRpb25G
b3JPdXRPZkZsb3dQb3NpdGlvbmVkKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpOwotICAgICAgICB1
c2VkTWFyZ2luQmVmb3JlID0gdXNlZE1hcmdpbkJlZm9yZS52YWx1ZU9yKDApOwotICAgICAgICB1
c2VkTWFyZ2luQWZ0ZXIgPSB1c2VkTWFyZ2luQWZ0ZXIudmFsdWVPcigwKTsKLSAgICAgICAgYm90
dG9tID0gY29udGFpbmluZ0Jsb2NrSGVpZ2h0IC0gKCp0b3AgKyAqdXNlZE1hcmdpbkJlZm9yZSAr
IGJvcmRlclRvcCArIHBhZGRpbmdUb3AgKyAqaGVpZ2h0ICsgcGFkZGluZ0JvdHRvbSArIGJvcmRl
ckJvdHRvbSArICp1c2VkTWFyZ2luQWZ0ZXIpOyAKKyAgICAgICAgdXNlZFZlcnRpY2FsTWFyZ2lu
ID0geyBjb21wdXRlZFZlcnRpY2FsTWFyZ2luLmJlZm9yZS52YWx1ZU9yKDApLCBjb21wdXRlZFZl
cnRpY2FsTWFyZ2luLmFmdGVyLnZhbHVlT3IoMCkgfTsKKyAgICAgICAgYm90dG9tID0gY29udGFp
bmluZ0Jsb2NrSGVpZ2h0IC0gKCp0b3AgKyB1c2VkVmVydGljYWxNYXJnaW4uYmVmb3JlICsgYm9y
ZGVyVG9wICsgcGFkZGluZ1RvcCArICpoZWlnaHQgKyBwYWRkaW5nQm90dG9tICsgYm9yZGVyQm90
dG9tICsgdXNlZFZlcnRpY2FsTWFyZ2luLmFmdGVyKTsgCiAgICAgfQogCiAgICAgaWYgKCFoZWln
aHQgJiYgIWJvdHRvbSAmJiB0b3ApIHsKICAgICAgICAgLy8gIzMKICAgICAgICAgaGVpZ2h0ID0g
Y29udGVudEhlaWdodEZvckZvcm1hdHRpbmdDb250ZXh0Um9vdChsYXlvdXRTdGF0ZSwgbGF5b3V0
Qm94KTsKLSAgICAgICAgdXNlZE1hcmdpbkJlZm9yZSA9IHVzZWRNYXJnaW5CZWZvcmUudmFsdWVP
cigwKTsKLSAgICAgICAgdXNlZE1hcmdpbkFmdGVyID0gdXNlZE1hcmdpbkFmdGVyLnZhbHVlT3Io
MCk7Ci0gICAgICAgIGJvdHRvbSA9IGNvbnRhaW5pbmdCbG9ja0hlaWdodCAtICgqdG9wICsgKnVz
ZWRNYXJnaW5CZWZvcmUgKyBib3JkZXJUb3AgKyBwYWRkaW5nVG9wICsgKmhlaWdodCArIHBhZGRp
bmdCb3R0b20gKyBib3JkZXJCb3R0b20gKyAqdXNlZE1hcmdpbkFmdGVyKTsgCisgICAgICAgIHVz
ZWRWZXJ0aWNhbE1hcmdpbiA9IHsgY29tcHV0ZWRWZXJ0aWNhbE1hcmdpbi5iZWZvcmUudmFsdWVP
cigwKSwgY29tcHV0ZWRWZXJ0aWNhbE1hcmdpbi5hZnRlci52YWx1ZU9yKDApIH07CisgICAgICAg
IGJvdHRvbSA9IGNvbnRhaW5pbmdCbG9ja0hlaWdodCAtICgqdG9wICsgdXNlZFZlcnRpY2FsTWFy
Z2luLmJlZm9yZSArIGJvcmRlclRvcCArIHBhZGRpbmdUb3AgKyAqaGVpZ2h0ICsgcGFkZGluZ0Jv
dHRvbSArIGJvcmRlckJvdHRvbSArIHVzZWRWZXJ0aWNhbE1hcmdpbi5hZnRlcik7IAogICAgIH0K
IAogICAgIGlmICghdG9wICYmIGhlaWdodCAmJiBib3R0b20pIHsKICAgICAgICAgLy8gIzQKLSAg
ICAgICAgdXNlZE1hcmdpbkJlZm9yZSA9IHVzZWRNYXJnaW5CZWZvcmUudmFsdWVPcigwKTsKLSAg
ICAgICAgdXNlZE1hcmdpbkFmdGVyID0gdXNlZE1hcmdpbkFmdGVyLnZhbHVlT3IoMCk7Ci0gICAg
ICAgIHRvcCA9IGNvbnRhaW5pbmdCbG9ja0hlaWdodCAtICgqdXNlZE1hcmdpbkJlZm9yZSArIGJv
cmRlclRvcCArIHBhZGRpbmdUb3AgKyAqaGVpZ2h0ICsgcGFkZGluZ0JvdHRvbSArIGJvcmRlckJv
dHRvbSArICp1c2VkTWFyZ2luQWZ0ZXIgKyAqYm90dG9tKTsgCisgICAgICAgIHVzZWRWZXJ0aWNh
bE1hcmdpbiA9IHsgY29tcHV0ZWRWZXJ0aWNhbE1hcmdpbi5iZWZvcmUudmFsdWVPcigwKSwgY29t
cHV0ZWRWZXJ0aWNhbE1hcmdpbi5hZnRlci52YWx1ZU9yKDApIH07CisgICAgICAgIHRvcCA9IGNv
bnRhaW5pbmdCbG9ja0hlaWdodCAtICh1c2VkVmVydGljYWxNYXJnaW4uYmVmb3JlICsgYm9yZGVy
VG9wICsgcGFkZGluZ1RvcCArICpoZWlnaHQgKyBwYWRkaW5nQm90dG9tICsgYm9yZGVyQm90dG9t
ICsgdXNlZFZlcnRpY2FsTWFyZ2luLmFmdGVyICsgKmJvdHRvbSk7IAogICAgIH0KIAogICAgIGlm
ICghaGVpZ2h0ICYmIHRvcCAmJiBib3R0b20pIHsKICAgICAgICAgLy8gIzUKLSAgICAgICAgdXNl
ZE1hcmdpbkJlZm9yZSA9IHVzZWRNYXJnaW5CZWZvcmUudmFsdWVPcigwKTsKLSAgICAgICAgdXNl
ZE1hcmdpbkFmdGVyID0gdXNlZE1hcmdpbkFmdGVyLnZhbHVlT3IoMCk7Ci0gICAgICAgIGhlaWdo
dCA9IGNvbnRhaW5pbmdCbG9ja0hlaWdodCAtICgqdG9wICsgKnVzZWRNYXJnaW5CZWZvcmUgKyBi
b3JkZXJUb3AgKyBwYWRkaW5nVG9wICsgcGFkZGluZ0JvdHRvbSArIGJvcmRlckJvdHRvbSArICp1
c2VkTWFyZ2luQWZ0ZXIgKyAqYm90dG9tKTsgCisgICAgICAgIHVzZWRWZXJ0aWNhbE1hcmdpbiA9
IHsgY29tcHV0ZWRWZXJ0aWNhbE1hcmdpbi5iZWZvcmUudmFsdWVPcigwKSwgY29tcHV0ZWRWZXJ0
aWNhbE1hcmdpbi5hZnRlci52YWx1ZU9yKDApIH07CisgICAgICAgIGhlaWdodCA9IGNvbnRhaW5p
bmdCbG9ja0hlaWdodCAtICgqdG9wICsgdXNlZFZlcnRpY2FsTWFyZ2luLmJlZm9yZSArIGJvcmRl
clRvcCArIHBhZGRpbmdUb3AgKyBwYWRkaW5nQm90dG9tICsgYm9yZGVyQm90dG9tICsgdXNlZFZl
cnRpY2FsTWFyZ2luLmFmdGVyICsgKmJvdHRvbSk7IAogICAgIH0KIAogICAgIGlmICghYm90dG9t
ICYmIHRvcCAmJiBoZWlnaHQpIHsKICAgICAgICAgLy8gIzYKLSAgICAgICAgdXNlZE1hcmdpbkJl
Zm9yZSA9IHVzZWRNYXJnaW5CZWZvcmUudmFsdWVPcigwKTsKLSAgICAgICAgdXNlZE1hcmdpbkFm
dGVyID0gdXNlZE1hcmdpbkFmdGVyLnZhbHVlT3IoMCk7Ci0gICAgICAgIGJvdHRvbSA9IGNvbnRh
aW5pbmdCbG9ja0hlaWdodCAtICgqdG9wICsgKnVzZWRNYXJnaW5CZWZvcmUgKyBib3JkZXJUb3Ag
KyBwYWRkaW5nVG9wICsgKmhlaWdodCArIHBhZGRpbmdCb3R0b20gKyBib3JkZXJCb3R0b20gKyAq
dXNlZE1hcmdpbkFmdGVyKTsgCisgICAgICAgIHVzZWRWZXJ0aWNhbE1hcmdpbiA9IHsgY29tcHV0
ZWRWZXJ0aWNhbE1hcmdpbi5iZWZvcmUudmFsdWVPcigwKSwgY29tcHV0ZWRWZXJ0aWNhbE1hcmdp
bi5hZnRlci52YWx1ZU9yKDApIH07CisgICAgICAgIGJvdHRvbSA9IGNvbnRhaW5pbmdCbG9ja0hl
aWdodCAtICgqdG9wICsgdXNlZFZlcnRpY2FsTWFyZ2luLmJlZm9yZSArIGJvcmRlclRvcCArIHBh
ZGRpbmdUb3AgKyAqaGVpZ2h0ICsgcGFkZGluZ0JvdHRvbSArIGJvcmRlckJvdHRvbSArIHVzZWRW
ZXJ0aWNhbE1hcmdpbi5hZnRlcik7IAogICAgIH0KIAogICAgIEFTU0VSVCh0b3ApOwogICAgIEFT
U0VSVChib3R0b20pOwogICAgIEFTU0VSVChoZWlnaHQpOwotICAgIEFTU0VSVCh1c2VkTWFyZ2lu
QmVmb3JlKTsKLSAgICBBU1NFUlQodXNlZE1hcmdpbkFmdGVyKTsKIAotICAgIExPR19XSVRIX1NU
UkVBTShGb3JtYXR0aW5nQ29udGV4dExheW91dCwgc3RyZWFtIDw8ICJbUG9zaXRpb25dW0hlaWdo
dF1bTWFyZ2luXSAtPiBvdXQtb2YtZmxvdyBub24tcmVwbGFjZWQgLT4gdG9wKCIgPDwgKnRvcCA8
PCAicHgpIGJvdHRvbSgiICA8PCAqYm90dG9tIDw8ICJweCkgaGVpZ2h0KCIgPDwgKmhlaWdodCA8
PCAicHgpIG1hcmdpbigiIDw8ICp1c2VkTWFyZ2luQmVmb3JlIDw8ICJweCwgIiAgPDwgKnVzZWRN
YXJnaW5BZnRlciA8PCAicHgpIGxheW91dEJveCgiIDw8ICZsYXlvdXRCb3ggPDwgIikiKTsKLSAg
ICByZXR1cm4geyAqdG9wLCAqYm90dG9tLCB7ICpoZWlnaHQsIHsgeyAqdXNlZE1hcmdpbkJlZm9y
ZSwgKnVzZWRNYXJnaW5BZnRlciB9LCB7IH0gfSB9IH07CisgICAgTE9HX1dJVEhfU1RSRUFNKEZv
cm1hdHRpbmdDb250ZXh0TGF5b3V0LCBzdHJlYW0gPDwgIltQb3NpdGlvbl1bSGVpZ2h0XVtNYXJn
aW5dIC0+IG91dC1vZi1mbG93IG5vbi1yZXBsYWNlZCAtPiB0b3AoIiA8PCAqdG9wIDw8ICJweCkg
Ym90dG9tKCIgIDw8ICpib3R0b20gPDwgInB4KSBoZWlnaHQoIiA8PCAqaGVpZ2h0IDw8ICJweCkg
bWFyZ2luKCIgPDwgdXNlZFZlcnRpY2FsTWFyZ2luLmJlZm9yZSA8PCAicHgsICIgIDw8IHVzZWRW
ZXJ0aWNhbE1hcmdpbi5hZnRlciA8PCAicHgpIGxheW91dEJveCgiIDw8ICZsYXlvdXRCb3ggPDwg
IikiKTsKKyAgICByZXR1cm4geyAqdG9wLCAqYm90dG9tLCB7ICpoZWlnaHQsIHsgdXNlZFZlcnRp
Y2FsTWFyZ2luLCB7IH0gfSB9IH07CiB9CiAKIEhvcml6b250YWxHZW9tZXRyeSBGb3JtYXR0aW5n
Q29udGV4dDo6R2VvbWV0cnk6Om91dE9mRmxvd05vblJlcGxhY2VkSG9yaXpvbnRhbEdlb21ldHJ5
KExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgQm94JiBsYXlvdXRCb3gsIE9wdGlvbmFs
PExheW91dFVuaXQ+IHVzZWRXaWR0aCkKQEAgLTUyMywxMCArNTE2LDggQEAgVmVydGljYWxHZW9t
ZXRyeSBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Om91dE9mRmxvd1JlcGxhY2VkVmVydGlj
YWxHZW9tZXRyeSgKICAgICBhdXRvIHRvcCA9IGNvbXB1dGVkVmFsdWVJZk5vdEF1dG8oc3R5bGUu
bG9naWNhbFRvcCgpLCBjb250YWluaW5nQmxvY2tXaWR0aCk7CiAgICAgYXV0byBib3R0b20gPSBj
b21wdXRlZFZhbHVlSWZOb3RBdXRvKHN0eWxlLmxvZ2ljYWxCb3R0b20oKSwgY29udGFpbmluZ0Js
b2NrV2lkdGgpOwogICAgIGF1dG8gaGVpZ2h0ID0gaW5saW5lUmVwbGFjZWRIZWlnaHRBbmRNYXJn
aW4obGF5b3V0U3RhdGUsIGxheW91dEJveCwgdXNlZEhlaWdodCkuaGVpZ2h0OwotICAgIGF1dG8g
Y29tcHV0ZWRNYXJnaW5CZWZvcmUgPSBjb21wdXRlZFZhbHVlSWZOb3RBdXRvKHN0eWxlLm1hcmdp
bkJlZm9yZSgpLCBjb250YWluaW5nQmxvY2tXaWR0aCk7Ci0gICAgYXV0byBjb21wdXRlZE1hcmdp
bkFmdGVyID0gY29tcHV0ZWRWYWx1ZUlmTm90QXV0byhzdHlsZS5tYXJnaW5BZnRlcigpLCBjb250
YWluaW5nQmxvY2tXaWR0aCk7Ci0gICAgYXV0byB1c2VkTWFyZ2luQmVmb3JlID0gY29tcHV0ZWRN
YXJnaW5CZWZvcmU7Ci0gICAgYXV0byB1c2VkTWFyZ2luQWZ0ZXIgPSBjb21wdXRlZE1hcmdpbkFm
dGVyOworICAgIGF1dG8gY29tcHV0ZWRWZXJ0aWNhbE1hcmdpbiA9IEdlb21ldHJ5Ojpjb21wdXRl
ZFZlcnRpY2FsTWFyZ2luKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpOworICAgIFVzZWRWZXJ0aWNh
bE1hcmdpbjo6Tm9uQ29sbGFwc2VkVmFsdWVzIHVzZWRWZXJ0aWNhbE1hcmdpbjsgCiAgICAgYXV0
byBwYWRkaW5nVG9wID0gZGlzcGxheUJveC5wYWRkaW5nVG9wKCkudmFsdWVPcigwKTsKICAgICBh
dXRvIHBhZGRpbmdCb3R0b20gPSBkaXNwbGF5Qm94LnBhZGRpbmdCb3R0b20oKS52YWx1ZU9yKDAp
OwogICAgIGF1dG8gYm9yZGVyVG9wID0gZGlzcGxheUJveC5ib3JkZXJUb3AoKTsKQEAgLTUzOSwz
NiArNTMwLDM1IEBAIFZlcnRpY2FsR2VvbWV0cnkgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5
OjpvdXRPZkZsb3dSZXBsYWNlZFZlcnRpY2FsR2VvbWV0cnkoCiAKICAgICBpZiAoIWJvdHRvbSkg
ewogICAgICAgICAvLyAjMgotICAgICAgICB1c2VkTWFyZ2luQmVmb3JlID0gdXNlZE1hcmdpbkJl
Zm9yZS52YWx1ZU9yKDApOwotICAgICAgICB1c2VkTWFyZ2luQWZ0ZXIgPSB1c2VkTWFyZ2luQWZ0
ZXIudmFsdWVPcigwKTsKKyAgICAgICAgdXNlZFZlcnRpY2FsTWFyZ2luID0geyBjb21wdXRlZFZl
cnRpY2FsTWFyZ2luLmJlZm9yZS52YWx1ZU9yKDApLCBjb21wdXRlZFZlcnRpY2FsTWFyZ2luLmFm
dGVyLnZhbHVlT3IoMCkgfTsKICAgICB9CiAKLSAgICBpZiAoIXVzZWRNYXJnaW5CZWZvcmUgJiYg
IXVzZWRNYXJnaW5BZnRlcikgeworICAgIGlmICghY29tcHV0ZWRWZXJ0aWNhbE1hcmdpbi5iZWZv
cmUgJiYgIWNvbXB1dGVkVmVydGljYWxNYXJnaW4uYWZ0ZXIpIHsKICAgICAgICAgLy8gIzMKICAg
ICAgICAgYXV0byBtYXJnaW5CZWZvcmVBbmRBZnRlciA9IGNvbnRhaW5pbmdCbG9ja0hlaWdodCAt
ICgqdG9wICsgYm9yZGVyVG9wICsgcGFkZGluZ1RvcCArIGhlaWdodCArIHBhZGRpbmdCb3R0b20g
KyBib3JkZXJCb3R0b20gKyAqYm90dG9tKTsKLSAgICAgICAgdXNlZE1hcmdpbkJlZm9yZSA9IHVz
ZWRNYXJnaW5BZnRlciA9IG1hcmdpbkJlZm9yZUFuZEFmdGVyIC8gMjsKKyAgICAgICAgdXNlZFZl
cnRpY2FsTWFyZ2luID0geyBtYXJnaW5CZWZvcmVBbmRBZnRlciAvIDIsIG1hcmdpbkJlZm9yZUFu
ZEFmdGVyIC8gMiB9OwogICAgIH0KIAogICAgIC8vICM0CiAgICAgaWYgKCF0b3ApCi0gICAgICAg
IHRvcCA9IGNvbnRhaW5pbmdCbG9ja0hlaWdodCAtICgqdXNlZE1hcmdpbkJlZm9yZSArIGJvcmRl
clRvcCArIHBhZGRpbmdUb3AgKyBoZWlnaHQgKyBwYWRkaW5nQm90dG9tICsgYm9yZGVyQm90dG9t
ICsgKnVzZWRNYXJnaW5BZnRlciArICpib3R0b20pOworICAgICAgICB0b3AgPSBjb250YWluaW5n
QmxvY2tIZWlnaHQgLSAodXNlZFZlcnRpY2FsTWFyZ2luLmJlZm9yZSArIGJvcmRlclRvcCArIHBh
ZGRpbmdUb3AgKyBoZWlnaHQgKyBwYWRkaW5nQm90dG9tICsgYm9yZGVyQm90dG9tICsgdXNlZFZl
cnRpY2FsTWFyZ2luLmFmdGVyICsgKmJvdHRvbSk7CiAKICAgICBpZiAoIWJvdHRvbSkKLSAgICAg
ICAgYm90dG9tID0gY29udGFpbmluZ0Jsb2NrSGVpZ2h0IC0gKCp0b3AgKyAqdXNlZE1hcmdpbkJl
Zm9yZSArIGJvcmRlclRvcCArIHBhZGRpbmdUb3AgKyBoZWlnaHQgKyBwYWRkaW5nQm90dG9tICsg
Ym9yZGVyQm90dG9tICsgKnVzZWRNYXJnaW5BZnRlcik7CisgICAgICAgIGJvdHRvbSA9IGNvbnRh
aW5pbmdCbG9ja0hlaWdodCAtICgqdG9wICsgdXNlZFZlcnRpY2FsTWFyZ2luLmJlZm9yZSArIGJv
cmRlclRvcCArIHBhZGRpbmdUb3AgKyBoZWlnaHQgKyBwYWRkaW5nQm90dG9tICsgYm9yZGVyQm90
dG9tICsgdXNlZFZlcnRpY2FsTWFyZ2luLmFmdGVyKTsKIAotICAgIGlmICghdXNlZE1hcmdpbkJl
Zm9yZSkKLSAgICAgICAgdXNlZE1hcmdpbkJlZm9yZSA9IGNvbnRhaW5pbmdCbG9ja0hlaWdodCAt
ICgqdG9wICsgYm9yZGVyVG9wICsgcGFkZGluZ1RvcCArIGhlaWdodCArIHBhZGRpbmdCb3R0b20g
KyBib3JkZXJCb3R0b20gKyAqdXNlZE1hcmdpbkFmdGVyICsgKmJvdHRvbSk7CisgICAgaWYgKCFj
b21wdXRlZFZlcnRpY2FsTWFyZ2luLmJlZm9yZSkKKyAgICAgICAgdXNlZFZlcnRpY2FsTWFyZ2lu
LmJlZm9yZSA9IGNvbnRhaW5pbmdCbG9ja0hlaWdodCAtICgqdG9wICsgYm9yZGVyVG9wICsgcGFk
ZGluZ1RvcCArIGhlaWdodCArIHBhZGRpbmdCb3R0b20gKyBib3JkZXJCb3R0b20gKyB1c2VkVmVy
dGljYWxNYXJnaW4uYWZ0ZXIgKyAqYm90dG9tKTsKIAotICAgIGlmICghdXNlZE1hcmdpbkFmdGVy
KQotICAgICAgICB1c2VkTWFyZ2luQWZ0ZXIgPSBjb250YWluaW5nQmxvY2tIZWlnaHQgLSAoKnRv
cCArICp1c2VkTWFyZ2luQmVmb3JlICsgYm9yZGVyVG9wICsgcGFkZGluZ1RvcCArIGhlaWdodCAr
IHBhZGRpbmdCb3R0b20gKyBib3JkZXJCb3R0b20gKyAqYm90dG9tKTsKKyAgICBpZiAoIWNvbXB1
dGVkVmVydGljYWxNYXJnaW4uYWZ0ZXIpCisgICAgICAgIHVzZWRWZXJ0aWNhbE1hcmdpbi5hZnRl
ciA9IGNvbnRhaW5pbmdCbG9ja0hlaWdodCAtICgqdG9wICsgdXNlZFZlcnRpY2FsTWFyZ2luLmJl
Zm9yZSArIGJvcmRlclRvcCArIHBhZGRpbmdUb3AgKyBoZWlnaHQgKyBwYWRkaW5nQm90dG9tICsg
Ym9yZGVyQm90dG9tICsgKmJvdHRvbSk7CiAKICAgICAvLyAjNQotICAgIGF1dG8gYm94SGVpZ2h0
ID0gKnRvcCArICp1c2VkTWFyZ2luQmVmb3JlICsgYm9yZGVyVG9wICsgcGFkZGluZ1RvcCArIGhl
aWdodCArIHBhZGRpbmdCb3R0b20gKyBib3JkZXJCb3R0b20gKyAqdXNlZE1hcmdpbkFmdGVyICsg
KmJvdHRvbTsKKyAgICBhdXRvIGJveEhlaWdodCA9ICp0b3AgKyB1c2VkVmVydGljYWxNYXJnaW4u
YmVmb3JlICsgYm9yZGVyVG9wICsgcGFkZGluZ1RvcCArIGhlaWdodCArIHBhZGRpbmdCb3R0b20g
KyBib3JkZXJCb3R0b20gKyB1c2VkVmVydGljYWxNYXJnaW4uYWZ0ZXIgKyAqYm90dG9tOwogICAg
IGlmIChib3hIZWlnaHQgPiBjb250YWluaW5nQmxvY2tIZWlnaHQpCi0gICAgICAgIGJvdHRvbSA9
IGNvbnRhaW5pbmdCbG9ja0hlaWdodCAtICgqdG9wICsgKnVzZWRNYXJnaW5CZWZvcmUgKyBib3Jk
ZXJUb3AgKyBwYWRkaW5nVG9wICsgaGVpZ2h0ICsgcGFkZGluZ0JvdHRvbSArIGJvcmRlckJvdHRv
bSArICp1c2VkTWFyZ2luQWZ0ZXIpOyAKKyAgICAgICAgYm90dG9tID0gY29udGFpbmluZ0Jsb2Nr
SGVpZ2h0IC0gKCp0b3AgKyB1c2VkVmVydGljYWxNYXJnaW4uYmVmb3JlICsgYm9yZGVyVG9wICsg
cGFkZGluZ1RvcCArIGhlaWdodCArIHBhZGRpbmdCb3R0b20gKyBib3JkZXJCb3R0b20gKyB1c2Vk
VmVydGljYWxNYXJnaW4uYWZ0ZXIpOyAKIAotICAgIExPR19XSVRIX1NUUkVBTShGb3JtYXR0aW5n
Q29udGV4dExheW91dCwgc3RyZWFtIDw8ICJbUG9zaXRpb25dW0hlaWdodF1bTWFyZ2luXSAtPiBv
dXQtb2YtZmxvdyByZXBsYWNlZCAtPiB0b3AoIiA8PCAqdG9wIDw8ICJweCkgYm90dG9tKCIgIDw8
ICpib3R0b20gPDwgInB4KSBoZWlnaHQoIiA8PCBoZWlnaHQgPDwgInB4KSBtYXJnaW4oIiA8PCAq
dXNlZE1hcmdpbkJlZm9yZSA8PCAicHgsICIgIDw8ICp1c2VkTWFyZ2luQWZ0ZXIgPDwgInB4KSBs
YXlvdXRCb3goIiA8PCAmbGF5b3V0Qm94IDw8ICIpIik7Ci0gICAgcmV0dXJuIHsgKnRvcCwgKmJv
dHRvbSwgeyBoZWlnaHQsIHsgeyAqdXNlZE1hcmdpbkJlZm9yZSwgKnVzZWRNYXJnaW5BZnRlciB9
LCB7IH0gfSB9IH07CisgICAgTE9HX1dJVEhfU1RSRUFNKEZvcm1hdHRpbmdDb250ZXh0TGF5b3V0
LCBzdHJlYW0gPDwgIltQb3NpdGlvbl1bSGVpZ2h0XVtNYXJnaW5dIC0+IG91dC1vZi1mbG93IHJl
cGxhY2VkIC0+IHRvcCgiIDw8ICp0b3AgPDwgInB4KSBib3R0b20oIiAgPDwgKmJvdHRvbSA8PCAi
cHgpIGhlaWdodCgiIDw8IGhlaWdodCA8PCAicHgpIG1hcmdpbigiIDw8IHVzZWRWZXJ0aWNhbE1h
cmdpbi5iZWZvcmUgPDwgInB4LCAiICA8PCB1c2VkVmVydGljYWxNYXJnaW4uYWZ0ZXIgPDwgInB4
KSBsYXlvdXRCb3goIiA8PCAmbGF5b3V0Qm94IDw8ICIpIik7CisgICAgcmV0dXJuIHsgKnRvcCwg
KmJvdHRvbSwgeyBoZWlnaHQsIHsgdXNlZFZlcnRpY2FsTWFyZ2luLCB7IH0gfSB9IH07CiB9CiAK
IEhvcml6b250YWxHZW9tZXRyeSBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Om91dE9mRmxv
d1JlcGxhY2VkSG9yaXpvbnRhbEdlb21ldHJ5KGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0
ZSwgY29uc3QgQm94JiBsYXlvdXRCb3gsIE9wdGlvbmFsPExheW91dFVuaXQ+IHVzZWRXaWR0aCkK
QEAgLTY3OSwxOSArNjY5LDEwIEBAIEhlaWdodEFuZE1hcmdpbiBGb3JtYXR0aW5nQ29udGV4dDo6
R2VvbWV0cnk6OmNvbXBsaWNhdGVkQ2FzZXMoY29uc3QgTGF5b3V0U3RhdGUmCiAgICAgLy8gMS4g
SWYgJ21hcmdpbi10b3AnLCBvciAnbWFyZ2luLWJvdHRvbScgYXJlICdhdXRvJywgdGhlaXIgdXNl
ZCB2YWx1ZSBpcyAwLgogICAgIC8vIDIuIElmICdoZWlnaHQnIGlzICdhdXRvJywgdGhlIGhlaWdo
dCBkZXBlbmRzIG9uIHRoZSBlbGVtZW50J3MgZGVzY2VuZGFudHMgcGVyIDEwLjYuNy4KIAotICAg
IGF1dG8mIHN0eWxlID0gbGF5b3V0Qm94LnN0eWxlKCk7Ci0gICAgYXV0byYgY29udGFpbmluZ0Js
b2NrID0gKmxheW91dEJveC5jb250YWluaW5nQmxvY2soKTsKLSAgICBhdXRvJiBjb250YWluaW5n
QmxvY2tEaXNwbGF5Qm94ID0gbGF5b3V0U3RhdGUuZGlzcGxheUJveEZvckxheW91dEJveChjb250
YWluaW5nQmxvY2spOwotICAgIGF1dG8gY29udGFpbmluZ0Jsb2NrV2lkdGggPSBjb250YWluaW5n
QmxvY2tEaXNwbGF5Qm94LmNvbnRlbnRCb3hXaWR0aCgpOwotCiAgICAgYXV0byBoZWlnaHQgPSB1
c2VkSGVpZ2h0ID8gdXNlZEhlaWdodC52YWx1ZSgpIDogY29tcHV0ZWRIZWlnaHRWYWx1ZShsYXlv
dXRTdGF0ZSwgbGF5b3V0Qm94LCBIZWlnaHRUeXBlOjpOb3JtYWwpOwotICAgIGF1dG8gY29tcHV0
ZWRNYXJnaW5CZWZvcmUgPSBjb21wdXRlZFZhbHVlSWZOb3RBdXRvKHN0eWxlLm1hcmdpbkJlZm9y
ZSgpLCBjb250YWluaW5nQmxvY2tXaWR0aCk7Ci0gICAgYXV0byBjb21wdXRlZE1hcmdpbkFmdGVy
ID0gY29tcHV0ZWRWYWx1ZUlmTm90QXV0byhzdHlsZS5tYXJnaW5BZnRlcigpLCBjb250YWluaW5n
QmxvY2tXaWR0aCk7Ci0KKyAgICBhdXRvIGNvbXB1dGVkVmVydGljYWxNYXJnaW4gPSBHZW9tZXRy
eTo6Y29tcHV0ZWRWZXJ0aWNhbE1hcmdpbihsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KTsKICAgICAv
LyAjMQotICAgIGF1dG8gdXNlZE1hcmdpbkJlZm9yZSA9IGNvbXB1dGVkTWFyZ2luQmVmb3JlLnZh
bHVlT3IoMCk7Ci0gICAgYXV0byB1c2VkTWFyZ2luQWZ0ZXIgPSBjb21wdXRlZE1hcmdpbkFmdGVy
LnZhbHVlT3IoMCk7Ci0KKyAgICBhdXRvIHVzZWRWZXJ0aWNhbE1hcmdpbiA9IFVzZWRWZXJ0aWNh
bE1hcmdpbjo6Tm9uQ29sbGFwc2VkVmFsdWVzIHsgY29tcHV0ZWRWZXJ0aWNhbE1hcmdpbi5iZWZv
cmUudmFsdWVPcigwKSwgY29tcHV0ZWRWZXJ0aWNhbE1hcmdpbi5hZnRlci52YWx1ZU9yKDApIH07
IAogICAgIC8vICMyCiAgICAgaWYgKCFoZWlnaHQpIHsKICAgICAgICAgQVNTRVJUKGlzSGVpZ2h0
QXV0byhsYXlvdXRCb3gpKTsKQEAgLTcwMCw4ICs2ODEsOCBAQCBIZWlnaHRBbmRNYXJnaW4gRm9y
bWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5Ojpjb21wbGljYXRlZENhc2VzKGNvbnN0IExheW91dFN0
YXRlJgogCiAgICAgQVNTRVJUKGhlaWdodCk7CiAKLSAgICBMT0dfV0lUSF9TVFJFQU0oRm9ybWF0
dGluZ0NvbnRleHRMYXlvdXQsIHN0cmVhbSA8PCAiW0hlaWdodF1bTWFyZ2luXSAtPiBmbG9hdGlu
ZyBub24tcmVwbGFjZWQgLT4gaGVpZ2h0KCIgPDwgKmhlaWdodCA8PCAicHgpIG1hcmdpbigiIDw8
IHVzZWRNYXJnaW5CZWZvcmUgPDwgInB4LCAiIDw8IHVzZWRNYXJnaW5BZnRlciA8PCAicHgpIC0+
IGxheW91dEJveCgiIDw8ICZsYXlvdXRCb3ggPDwgIikiKTsKLSAgICByZXR1cm4gSGVpZ2h0QW5k
TWFyZ2luIHsgKmhlaWdodCwgeyB7IHVzZWRNYXJnaW5CZWZvcmUsIHVzZWRNYXJnaW5BZnRlciB9
LCB7IH0gfSB9OworICAgIExPR19XSVRIX1NUUkVBTShGb3JtYXR0aW5nQ29udGV4dExheW91dCwg
c3RyZWFtIDw8ICJbSGVpZ2h0XVtNYXJnaW5dIC0+IGZsb2F0aW5nIG5vbi1yZXBsYWNlZCAtPiBo
ZWlnaHQoIiA8PCAqaGVpZ2h0IDw8ICJweCkgbWFyZ2luKCIgPDwgdXNlZFZlcnRpY2FsTWFyZ2lu
LmJlZm9yZSA8PCAicHgsICIgPDwgdXNlZFZlcnRpY2FsTWFyZ2luLmFmdGVyIDw8ICJweCkgLT4g
bGF5b3V0Qm94KCIgPDwgJmxheW91dEJveCA8PCAiKSIpOworICAgIHJldHVybiBIZWlnaHRBbmRN
YXJnaW4geyAqaGVpZ2h0LCB7IHVzZWRWZXJ0aWNhbE1hcmdpbiwgeyB9IH0gfTsKIH0KIAogV2lk
dGhBbmRNYXJnaW4gRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpmbG9hdGluZ05vblJlcGxh
Y2VkV2lkdGhBbmRNYXJnaW4oTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBCb3gmIGxh
eW91dEJveCwgT3B0aW9uYWw8TGF5b3V0VW5pdD4gdXNlZFdpZHRoKQpAQCAtODAyLDggKzc4Myw4
IEBAIEhlaWdodEFuZE1hcmdpbiBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmlubGluZVJl
cGxhY2VkSGVpZ2h0QW5kTWFyZ2luKGNvbnN0CiAgICAgLy8gICAgdGhlIGhlaWdodCBvZiB0aGUg
bGFyZ2VzdCByZWN0YW5nbGUgdGhhdCBoYXMgYSAyOjEgcmF0aW8sIGhhcyBhIGhlaWdodCBub3Qg
Z3JlYXRlciB0aGFuIDE1MHB4LCBhbmQgaGFzIGEgd2lkdGggbm90IGdyZWF0ZXIgdGhhbiB0aGUg
ZGV2aWNlIHdpZHRoLgogCiAgICAgLy8gIzEKLSAgICBhdXRvIG1hcmdpbiA9IGNvbXB1dGVkTm9u
Q29sbGFwc2VkVmVydGljYWxNYXJnaW5WYWx1ZShsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KTsKLQor
ICAgIGF1dG8gY29tcHV0ZWRWZXJ0aWNhbE1hcmdpbiA9IEdlb21ldHJ5Ojpjb21wdXRlZFZlcnRp
Y2FsTWFyZ2luKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpOworICAgIGF1dG8gdXNlZFZlcnRpY2Fs
TWFyZ2luID0gVXNlZFZlcnRpY2FsTWFyZ2luOjpOb25Db2xsYXBzZWRWYWx1ZXMgeyBjb21wdXRl
ZFZlcnRpY2FsTWFyZ2luLmJlZm9yZS52YWx1ZU9yKDApLCBjb21wdXRlZFZlcnRpY2FsTWFyZ2lu
LmFmdGVyLnZhbHVlT3IoMCkgfTsKICAgICBhdXRvJiBzdHlsZSA9IGxheW91dEJveC5zdHlsZSgp
OwogICAgIGF1dG8gcmVwbGFjZWQgPSBsYXlvdXRCb3gucmVwbGFjZWQoKTsKIApAQCAtODI4LDgg
KzgwOSw4IEBAIEhlaWdodEFuZE1hcmdpbiBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Omlu
bGluZVJlcGxhY2VkSGVpZ2h0QW5kTWFyZ2luKGNvbnN0CiAKICAgICBBU1NFUlQoaGVpZ2h0KTsK
IAotICAgIExPR19XSVRIX1NUUkVBTShGb3JtYXR0aW5nQ29udGV4dExheW91dCwgc3RyZWFtIDw8
ICJbSGVpZ2h0XVtNYXJnaW5dIC0+IGluZmxvdyByZXBsYWNlZCAtPiBoZWlnaHQoIiA8PCAqaGVp
Z2h0IDw8ICJweCkgbWFyZ2luKCIgPDwgbWFyZ2luLmJlZm9yZSA8PCAicHgsICIgPDwgbWFyZ2lu
LmFmdGVyIDw8ICJweCkgLT4gbGF5b3V0Qm94KCIgPDwgJmxheW91dEJveCA8PCAiKSIpOwotICAg
IHJldHVybiB7ICpoZWlnaHQsIHsgbWFyZ2luLCB7IH0gfSB9OworICAgIExPR19XSVRIX1NUUkVB
TShGb3JtYXR0aW5nQ29udGV4dExheW91dCwgc3RyZWFtIDw8ICJbSGVpZ2h0XVtNYXJnaW5dIC0+
IGluZmxvdyByZXBsYWNlZCAtPiBoZWlnaHQoIiA8PCAqaGVpZ2h0IDw8ICJweCkgbWFyZ2luKCIg
PDwgdXNlZFZlcnRpY2FsTWFyZ2luLmJlZm9yZSA8PCAicHgsICIgPDwgdXNlZFZlcnRpY2FsTWFy
Z2luLmFmdGVyIDw8ICJweCkgLT4gbGF5b3V0Qm94KCIgPDwgJmxheW91dEJveCA8PCAiKSIpOwor
ICAgIHJldHVybiB7ICpoZWlnaHQsIHsgdXNlZFZlcnRpY2FsTWFyZ2luLCB7IH0gfSB9OwogfQog
CiBXaWR0aEFuZE1hcmdpbiBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmlubGluZVJlcGxh
Y2VkV2lkdGhBbmRNYXJnaW4oY29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBC
b3gmIGxheW91dEJveCwKQEAgLTg1Nyw4ICs4MzgsOCBAQCBXaWR0aEFuZE1hcmdpbiBGb3JtYXR0
aW5nQ29udGV4dDo6R2VvbWV0cnk6OmlubGluZVJlcGxhY2VkV2lkdGhBbmRNYXJnaW4oY29uc3Qg
TAogICAgIC8vICAgIElmIDMwMHB4IGlzIHRvbyB3aWRlIHRvIGZpdCB0aGUgZGV2aWNlLCBVQXMg
c2hvdWxkIHVzZSB0aGUgd2lkdGggb2YgdGhlIGxhcmdlc3QgcmVjdGFuZ2xlIHRoYXQgaGFzIGEg
MjoxIHJhdGlvIGFuZCBmaXRzIHRoZSBkZXZpY2UgaW5zdGVhZC4KIAogICAgIGF1dG8mIHN0eWxl
ID0gbGF5b3V0Qm94LnN0eWxlKCk7Ci0gICAgYXV0byYgY29udGFpbmluZ0Jsb2NrRGlzcGxheUJv
eCA9IGxheW91dFN0YXRlLmRpc3BsYXlCb3hGb3JMYXlvdXRCb3goKmxheW91dEJveC5jb250YWlu
aW5nQmxvY2soKSk7Ci0gICAgYXV0byBjb250YWluaW5nQmxvY2tXaWR0aCA9IGNvbnRhaW5pbmdC
bG9ja0Rpc3BsYXlCb3gud2lkdGgoKTsKKyAgICBhdXRvJiBjb250YWluaW5nQmxvY2sgPSAqbGF5
b3V0Qm94LmNvbnRhaW5pbmdCbG9jaygpOworICAgIGF1dG8gY29udGFpbmluZ0Jsb2NrV2lkdGgg
PSBsYXlvdXRTdGF0ZS5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGNvbnRhaW5pbmdCbG9jaykuY29u
dGVudEJveFdpZHRoKCk7CiAgICAgYXV0byBjb21wdXRlZEhvcml6b250YWxNYXJnaW4gPSBHZW9t
ZXRyeTo6Y29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpOwog
CiAgICAgYXV0byB1c2VkTWFyZ2luU3RhcnQgPSBbJl0gewpAQCAtMTAwOCwxNiArOTg5LDEyIEBA
IENvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbiBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmNv
bXB1dGVkSG9yaXpvbnRhbE1hcmdpbihjCiAgICAgcmV0dXJuIHsgY29tcHV0ZWRWYWx1ZUlmTm90
QXV0byhzdHlsZS5tYXJnaW5TdGFydCgpLCBjb250YWluaW5nQmxvY2tXaWR0aCksIGNvbXB1dGVk
VmFsdWVJZk5vdEF1dG8oc3R5bGUubWFyZ2luRW5kKCksIGNvbnRhaW5pbmdCbG9ja1dpZHRoKSB9
OwogfQogCi1WZXJ0aWNhbE1hcmdpbjo6Q29tcHV0ZWRWYWx1ZXMgRm9ybWF0dGluZ0NvbnRleHQ6
Okdlb21ldHJ5Ojpjb21wdXRlZE5vbkNvbGxhcHNlZFZlcnRpY2FsTWFyZ2luVmFsdWUoY29uc3Qg
TGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBCb3gmIGxheW91dEJveCkKK0NvbXB1dGVk
VmVydGljYWxNYXJnaW4gRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5Ojpjb21wdXRlZFZlcnRp
Y2FsTWFyZ2luKGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgQm94JiBsYXlv
dXRCb3gpCiB7CiAgICAgYXV0byYgc3R5bGUgPSBsYXlvdXRCb3guc3R5bGUoKTsKICAgICBhdXRv
IGNvbnRhaW5pbmdCbG9ja1dpZHRoID0gbGF5b3V0U3RhdGUuZGlzcGxheUJveEZvckxheW91dEJv
eCgqbGF5b3V0Qm94LmNvbnRhaW5pbmdCbG9jaygpKS5jb250ZW50Qm94V2lkdGgoKTsKIAotICAg
IGF1dG8gdXNlZE1hcmdpbkJlZm9yZSA9IGNvbXB1dGVkVmFsdWVJZk5vdEF1dG8oc3R5bGUubWFy
Z2luQmVmb3JlKCksIGNvbnRhaW5pbmdCbG9ja1dpZHRoKS52YWx1ZU9yKDBfbHUpOwotICAgIGF1
dG8gdXNlZE1hcmdpbkFmdGVyID0gY29tcHV0ZWRWYWx1ZUlmTm90QXV0byhzdHlsZS5tYXJnaW5B
ZnRlcigpLCBjb250YWluaW5nQmxvY2tXaWR0aCkudmFsdWVPcigwX2x1KTsKLQotICAgIExPR19X
SVRIX1NUUkVBTShGb3JtYXR0aW5nQ29udGV4dExheW91dCwgc3RyZWFtIDw8ICJbTWFyZ2luXSAt
PiBub24gY29sbGFwc2VkIHZlcnRpY2FsIC0+IG1hcmdpbigiIDw8IHVzZWRNYXJnaW5CZWZvcmUg
PDwgInB4LCAiIDw8IHVzZWRNYXJnaW5BZnRlciA8PCAicHgpIC0+IGxheW91dEJveDogIiA8PCAm
bGF5b3V0Qm94KTsKLSAgICByZXR1cm4geyB1c2VkTWFyZ2luQmVmb3JlLCB1c2VkTWFyZ2luQWZ0
ZXIgfTsKKyAgICByZXR1cm4geyBjb21wdXRlZFZhbHVlSWZOb3RBdXRvKHN0eWxlLm1hcmdpbkJl
Zm9yZSgpLCBjb250YWluaW5nQmxvY2tXaWR0aCksIGNvbXB1dGVkVmFsdWVJZk5vdEF1dG8oc3R5
bGUubWFyZ2luQWZ0ZXIoKSwgY29udGFpbmluZ0Jsb2NrV2lkdGgpIH07CiB9CiAKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dFF1aXJrcy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHRRdWlya3MuY3BwCmluZGV4
IGI0ZjQ0YTgyNWVmM2FhNThhZDJiMzZhMGUyYWQyMTQ3NWYyZTg3ZDUuLjUxMGI5NzA0ZWM3MjEz
NzYxZmIyZWI5ZDBmMDAxNzRhOGMwMmRkNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9Gb3JtYXR0aW5nQ29udGV4dFF1aXJrcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L0Zvcm1hdHRpbmdDb250ZXh0UXVpcmtzLmNwcApAQCAtNTEsMTAgKzUxLDEwIEBAIExheW91
dFVuaXQgRm9ybWF0dGluZ0NvbnRleHQ6OlF1aXJrczo6aGVpZ2h0VmFsdWVPZk5lYXJlc3RDb250
YWluaW5nQmxvY2tXaXRoRml4CiAgICAgICAgIGlmIChjb250YWluaW5nQmxvY2stPmlzQm9keUJv
eCgpIHx8IGNvbnRhaW5pbmdCbG9jay0+aXNEb2N1bWVudEJveCgpKSB7CiAgICAgICAgICAgICBh
dXRvJiBkaXNwbGF5Qm94ID0gbGF5b3V0U3RhdGUuZGlzcGxheUJveEZvckxheW91dEJveCgqY29u
dGFpbmluZ0Jsb2NrKTsKIAotICAgICAgICAgICAgYXV0byB2ZXJ0aWNhbE1hcmdpbiA9IEZvcm1h
dHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6Y29tcHV0ZWROb25Db2xsYXBzZWRWZXJ0aWNhbE1hcmdp
blZhbHVlKGxheW91dFN0YXRlLCAqY29udGFpbmluZ0Jsb2NrKTsKKyAgICAgICAgICAgIGF1dG8g
dmVydGljYWxNYXJnaW4gPSBHZW9tZXRyeTo6Y29tcHV0ZWRWZXJ0aWNhbE1hcmdpbihsYXlvdXRT
dGF0ZSwgKmNvbnRhaW5pbmdCbG9jayk7CiAgICAgICAgICAgICBhdXRvIHZlcnRpY2FsUGFkZGlu
ZyA9IGRpc3BsYXlCb3gucGFkZGluZ1RvcCgpLnZhbHVlT3IoMCkgKyBkaXNwbGF5Qm94LnBhZGRp
bmdCb3R0b20oKS52YWx1ZU9yKDApOwogICAgICAgICAgICAgYXV0byB2ZXJ0aWNhbEJvcmRlciA9
IGRpc3BsYXlCb3guYm9yZGVyVG9wKCkgKyBkaXNwbGF5Qm94LmJvcmRlckJvdHRvbSgpOwotICAg
ICAgICAgICAgYm9keUFuZERvY3VtZW50VmVydGljYWxNYXJnaW5QYWRkaW5nQW5kQm9yZGVyICs9
IHZlcnRpY2FsTWFyZ2luLmJlZm9yZSArIHZlcnRpY2FsTWFyZ2luLmFmdGVyICsgdmVydGljYWxQ
YWRkaW5nICsgdmVydGljYWxCb3JkZXI7CisgICAgICAgICAgICBib2R5QW5kRG9jdW1lbnRWZXJ0
aWNhbE1hcmdpblBhZGRpbmdBbmRCb3JkZXIgKz0gdmVydGljYWxNYXJnaW4uYmVmb3JlLnZhbHVl
T3IoMCkgKyB2ZXJ0aWNhbE1hcmdpbi5hZnRlci52YWx1ZU9yKDApICsgdmVydGljYWxQYWRkaW5n
ICsgdmVydGljYWxCb3JkZXI7CiAgICAgICAgIH0KIAogICAgICAgICBjb250YWluaW5nQmxvY2sg
PSBjb250YWluaW5nQmxvY2stPmNvbnRhaW5pbmdCbG9jaygpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L0xheW91dFVuaXRzLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5
b3V0VW5pdHMuaAppbmRleCAzYjQ4MjlhZmU3MDgxNWQ4MmI1MDA1NDIxNGFjYTVhN2Q2NzQ5NWM1
Li5hNjNkNzIzZDdjY2FkMDE2MzQwNWFkMWRmZTNjNzA0MjllZTkxNGNjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0VW5pdHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvTGF5b3V0VW5pdHMuaApAQCAtMTA5LDcgKzEwOSw3IEBAIHN0cnVjdCBXaWR0aEFuZE1h
cmdpbiB7CiAKIHN0cnVjdCBIZWlnaHRBbmRNYXJnaW4gewogICAgIExheW91dFVuaXQgaGVpZ2h0
OwotICAgIFZlcnRpY2FsTWFyZ2luIG1hcmdpbjsKKyAgICBVc2VkVmVydGljYWxNYXJnaW4gdXNl
ZE1hcmdpbjsKIH07CiAKIHN0cnVjdCBIb3Jpem9udGFsR2VvbWV0cnkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L01hcmdpblR5cGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvTWFyZ2luVHlwZXMuaAppbmRleCBmZTFmYzE4ZmE2OTBiOGQ4YzcxNzUwNGE1ZmRiMzdmNWJi
OWE2YjViLi40ZTFmYzU2ZDU1NjJiMWE3MjZmMjdmZTQ4NThhMWE4NzU1NjQ3NGM5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvTWFyZ2luVHlwZXMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvTWFyZ2luVHlwZXMuaApAQCAtMzIsMjggKzMyLDM2IEBACiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBuYW1lc3BhY2UgTGF5b3V0IHsKIAotc3RydWN0IFZlcnRpY2FsTWFyZ2luIHsK
LSAgICBzdHJ1Y3QgQ29tcHV0ZWRWYWx1ZXMgeworc3RydWN0IENvbXB1dGVkVmVydGljYWxNYXJn
aW4geworICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGJlZm9yZTsKKyAgICBPcHRpb25hbDxMYXlv
dXRVbml0PiBhZnRlcjsKK307CisKK3N0cnVjdCBVc2VkVmVydGljYWxNYXJnaW4geworICAgIExh
eW91dFVuaXQgYmVmb3JlKCkgY29uc3QgeyByZXR1cm4gbV9jb2xsYXBzZWRWYWx1ZXMuYmVmb3Jl
LnZhbHVlT3IobV9ub25Db2xsYXBzZWRWYWx1ZXMuYmVmb3JlKTsgfQorICAgIExheW91dFVuaXQg
YWZ0ZXIoKSBjb25zdCB7IHJldHVybiBtX2NvbGxhcHNlZFZhbHVlcy5hZnRlci52YWx1ZU9yKG1f
bm9uQ29sbGFwc2VkVmFsdWVzLmFmdGVyKTsgfQorCisgICAgc3RydWN0IE5vbkNvbGxhcHNlZFZh
bHVlcyB7CiAgICAgICAgIExheW91dFVuaXQgYmVmb3JlOwogICAgICAgICBMYXlvdXRVbml0IGFm
dGVyOwogICAgIH07Ci0gICAgQ29tcHV0ZWRWYWx1ZXMgdXNlZFZhbHVlcygpIGNvbnN0OwotICAg
IENvbXB1dGVkVmFsdWVzIG5vbkNvbGxhcHNlZFZhbHVlcygpIGNvbnN0IHsgcmV0dXJuIG1fbm9u
Q29sbGFwc2VkOyB9Ci0gICAgCisgICAgTm9uQ29sbGFwc2VkVmFsdWVzIG5vbkNvbGxhcHNlZFZh
bHVlcygpIGNvbnN0IHsgcmV0dXJuIG1fbm9uQ29sbGFwc2VkVmFsdWVzOyB9CisKICAgICBzdHJ1
Y3QgQ29sbGFwc2VkVmFsdWVzIHsKICAgICAgICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gYmVmb3Jl
OwogICAgICAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBhZnRlcjsKICAgICB9OwotICAgIE9wdGlv
bmFsPENvbGxhcHNlZFZhbHVlcz4gY29sbGFwc2VkVmFsdWVzKCkgY29uc3QgeyByZXR1cm4gbV9j
b2xsYXBzZWQ7IH0KLSAgICB2b2lkIHNldENvbGxhcHNlZFZhbHVlcyhDb2xsYXBzZWRWYWx1ZXMg
Y29sbGFwc2VkVmFsdWVzKSB7IG1fY29sbGFwc2VkID0gY29sbGFwc2VkVmFsdWVzOyB9CisgICAg
Q29sbGFwc2VkVmFsdWVzIGNvbGxhcHNlZFZhbHVlcygpIGNvbnN0IHsgcmV0dXJuIG1fY29sbGFw
c2VkVmFsdWVzOyB9CisgICAgYm9vbCBoYXNDb2xsYXBzZWRWYWx1ZXMoKSBjb25zdCB7IHJldHVy
biBtX2NvbGxhcHNlZFZhbHVlcy5iZWZvcmUgfHwgbV9jb2xsYXBzZWRWYWx1ZXMuYWZ0ZXI7IH0K
KyAgICB2b2lkIHNldENvbGxhcHNlZFZhbHVlcyhDb2xsYXBzZWRWYWx1ZXMgY29sbGFwc2VkVmFs
dWVzKSB7IG1fY29sbGFwc2VkVmFsdWVzID0gY29sbGFwc2VkVmFsdWVzOyB9CiAKLSAgICBWZXJ0
aWNhbE1hcmdpbihDb21wdXRlZFZhbHVlcyBub25Db2xsYXBzZWQsIE9wdGlvbmFsPENvbGxhcHNl
ZFZhbHVlcz4pOworICAgIFVzZWRWZXJ0aWNhbE1hcmdpbihOb25Db2xsYXBzZWRWYWx1ZXMsIENv
bGxhcHNlZFZhbHVlcyk7CiAKLSAgICBWZXJ0aWNhbE1hcmdpbigpID0gZGVmYXVsdDsKLSAgICB+
VmVydGljYWxNYXJnaW4oKSA9IGRlZmF1bHQ7CisgICAgVXNlZFZlcnRpY2FsTWFyZ2luKCkgPSBk
ZWZhdWx0OworICAgIH5Vc2VkVmVydGljYWxNYXJnaW4oKSA9IGRlZmF1bHQ7CiBwcml2YXRlOgot
ICAgIENvbXB1dGVkVmFsdWVzIG1fbm9uQ29sbGFwc2VkOwotICAgIE9wdGlvbmFsPENvbGxhcHNl
ZFZhbHVlcz4gbV9jb2xsYXBzZWQ7CisgICAgTm9uQ29sbGFwc2VkVmFsdWVzIG1fbm9uQ29sbGFw
c2VkVmFsdWVzOworICAgIENvbGxhcHNlZFZhbHVlcyBtX2NvbGxhcHNlZFZhbHVlczsKIH07CiAK
IHN0cnVjdCBDb21wdXRlZEhvcml6b250YWxNYXJnaW4gewpAQCAtNzUsMTggKzgzLDEwIEBAIHN0
cnVjdCBQb3NpdGl2ZUFuZE5lZ2F0aXZlVmVydGljYWxNYXJnaW4gewogICAgIFZhbHVlcyBhZnRl
cjsKIH07CiAKLWlubGluZSBWZXJ0aWNhbE1hcmdpbjo6VmVydGljYWxNYXJnaW4oVmVydGljYWxN
YXJnaW46OkNvbXB1dGVkVmFsdWVzIG5vbkNvbGxhcHNlZCwgT3B0aW9uYWw8VmVydGljYWxNYXJn
aW46OkNvbGxhcHNlZFZhbHVlcz4gY29sbGFwc2VkKQotICAgIDogbV9ub25Db2xsYXBzZWQobm9u
Q29sbGFwc2VkKQotICAgICwgbV9jb2xsYXBzZWQoY29sbGFwc2VkKQotewotfQotCi1pbmxpbmUg
VmVydGljYWxNYXJnaW46OkNvbXB1dGVkVmFsdWVzIFZlcnRpY2FsTWFyZ2luOjp1c2VkVmFsdWVz
KCkgY29uc3QKK2lubGluZSBVc2VkVmVydGljYWxNYXJnaW46OlVzZWRWZXJ0aWNhbE1hcmdpbihV
c2VkVmVydGljYWxNYXJnaW46Ok5vbkNvbGxhcHNlZFZhbHVlcyBub25Db2xsYXBzZWRWYWx1ZXMs
IFVzZWRWZXJ0aWNhbE1hcmdpbjo6Q29sbGFwc2VkVmFsdWVzIGNvbGxhcHNlZFZhbHVlcykKKyAg
ICA6IG1fbm9uQ29sbGFwc2VkVmFsdWVzKG5vbkNvbGxhcHNlZFZhbHVlcykKKyAgICAsIG1fY29s
bGFwc2VkVmFsdWVzKGNvbGxhcHNlZFZhbHVlcykKIHsKLSAgICBpZiAoIW1fY29sbGFwc2VkKQot
ICAgICAgICByZXR1cm4gbV9ub25Db2xsYXBzZWQ7Ci0gICAgcmV0dXJuIHsgbV9jb2xsYXBzZWQt
PmJlZm9yZS52YWx1ZU9yKG1fbm9uQ29sbGFwc2VkLmJlZm9yZSksCi0gICAgICAgIG1fY29sbGFw
c2VkLT5hZnRlci52YWx1ZU9yKG1fbm9uQ29sbGFwc2VkLmFmdGVyKSB9OwogfQogCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0
dGluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9C
bG9ja0Zvcm1hdHRpbmdDb250ZXh0LmNwcAppbmRleCBiOGJmYTk5MThhZjUyN2U5MWVlMWE5Yjlh
MmMyODlmMzg1ZGVhNTAyLi5hNzNhNTc3MWMwNDgwZDgzZWZiZTY3MjU3YzgyMjAzNzIxY2RlNmI4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2Nr
Rm9ybWF0dGluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zv
cm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHAKQEAgLTM1OCw3ICszNTgsNyBAQCB2
b2lkIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVIZWlnaHRBbmRNYXJnaW4oY29uc3Qg
Qm94JiBsYXlvdXRCb3gpIGNvbnN0CiAgICAgICAgICAgICBhdXRvIG1heEhlaWdodEFuZE1hcmdp
biA9IGNvbXB1dGUobWF4SGVpZ2h0KTsKICAgICAgICAgICAgIC8vIFVzZWQgaGVpZ2h0IHNob3Vs
ZCByZW1haW4gdGhlIHNhbWUuCiAgICAgICAgICAgICBBU1NFUlQoKGxheW91dFN0YXRlLmluUXVp
cmtzTW9kZSgpICYmIChsYXlvdXRCb3guaXNCb2R5Qm94KCkgfHwgbGF5b3V0Qm94LmlzRG9jdW1l
bnRCb3goKSkpIHx8IG1heEhlaWdodEFuZE1hcmdpbi5oZWlnaHQgPT0gKm1heEhlaWdodCk7Ci0g
ICAgICAgICAgICBoZWlnaHRBbmRNYXJnaW4gPSB7ICptYXhIZWlnaHQsIG1heEhlaWdodEFuZE1h
cmdpbi5tYXJnaW4gfTsKKyAgICAgICAgICAgIGhlaWdodEFuZE1hcmdpbiA9IHsgKm1heEhlaWdo
dCwgbWF4SGVpZ2h0QW5kTWFyZ2luLnVzZWRNYXJnaW4gfTsKICAgICAgICAgfQogICAgIH0KIApA
QCAtMzY3LDE3ICszNjcsMTcgQEAgdm9pZCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRl
SGVpZ2h0QW5kTWFyZ2luKGNvbnN0IEJveCYgbGF5b3V0Qm94KSBjb25zdAogICAgICAgICAgICAg
YXV0byBtaW5IZWlnaHRBbmRNYXJnaW4gPSBjb21wdXRlKG1pbkhlaWdodCk7CiAgICAgICAgICAg
ICAvLyBVc2VkIGhlaWdodCBzaG91bGQgcmVtYWluIHRoZSBzYW1lLgogICAgICAgICAgICAgQVNT
RVJUKChsYXlvdXRTdGF0ZS5pblF1aXJrc01vZGUoKSAmJiAobGF5b3V0Qm94LmlzQm9keUJveCgp
IHx8IGxheW91dEJveC5pc0RvY3VtZW50Qm94KCkpKSB8fCBtaW5IZWlnaHRBbmRNYXJnaW4uaGVp
Z2h0ID09ICptaW5IZWlnaHQpOwotICAgICAgICAgICAgaGVpZ2h0QW5kTWFyZ2luID0geyAqbWlu
SGVpZ2h0LCBtaW5IZWlnaHRBbmRNYXJnaW4ubWFyZ2luIH07CisgICAgICAgICAgICBoZWlnaHRB
bmRNYXJnaW4gPSB7ICptaW5IZWlnaHQsIG1pbkhlaWdodEFuZE1hcmdpbi51c2VkTWFyZ2luIH07
CiAgICAgICAgIH0KICAgICB9CiAKICAgICBhdXRvJiBkaXNwbGF5Qm94ID0gbGF5b3V0U3RhdGUu
ZGlzcGxheUJveEZvckxheW91dEJveChsYXlvdXRCb3gpOwogICAgIGRpc3BsYXlCb3guc2V0Q29u
dGVudEJveEhlaWdodChoZWlnaHRBbmRNYXJnaW4uaGVpZ2h0KTsKLSAgICBkaXNwbGF5Qm94LnNl
dFZlcnRpY2FsTWFyZ2luKGhlaWdodEFuZE1hcmdpbi5tYXJnaW4pOworICAgIGRpc3BsYXlCb3gu
c2V0VmVydGljYWxNYXJnaW4oaGVpZ2h0QW5kTWFyZ2luLnVzZWRNYXJnaW4pOwogCiAgICAgLy8g
SWYgdGhpcyBib3ggaGFzIGFscmVhZHkgYmVlbiBtb3ZlZCBieSB0aGUgZXN0aW1hdGVkIHZlcnRp
Y2FsIG1hcmdpbiwgbm8gbmVlZCB0byBtb3ZlIGl0IGFnYWluLgogICAgIGlmIChsYXlvdXRCb3gu
aXNGbG9hdGluZ1Bvc2l0aW9uZWQoKSB8fCAhZGlzcGxheUJveC5lc3RpbWF0ZWRNYXJnaW5CZWZv
cmUoKSkKLSAgICAgICAgZGlzcGxheUJveC5tb3ZlVmVydGljYWxseShoZWlnaHRBbmRNYXJnaW4u
bWFyZ2luLnVzZWRWYWx1ZXMoKS5iZWZvcmUpOworICAgICAgICBkaXNwbGF5Qm94Lm1vdmVWZXJ0
aWNhbGx5KGhlaWdodEFuZE1hcmdpbi51c2VkTWFyZ2luLmJlZm9yZSgpKTsKIH0KIAogRm9ybWF0
dGluZ0NvbnRleHQ6Okluc3RyaW5zaWNXaWR0aENvbnN0cmFpbnRzIEJsb2NrRm9ybWF0dGluZ0Nv
bnRleHQ6Omluc3RyaW5zaWNXaWR0aENvbnN0cmFpbnRzKCkgY29uc3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4
dEdlb21ldHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxv
Y2tGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcAppbmRleCA2M2UwNjgyZDVlOTJhMDdlZTY3
YjI5N2RiY2ZmNWYzNGVkMDk3ODc2Li5mYzc1YjUzMDdjM2UzNDNmMDI0NDk0Mzg5NmMyOWM3YjE2
MzFiZDlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5n
L0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3Bw
CkBAIC01NywxMyArNTcsMTAgQEAgSGVpZ2h0QW5kTWFyZ2luIEJsb2NrRm9ybWF0dGluZ0NvbnRl
eHQ6Okdlb21ldHJ5OjppbkZsb3dOb25SZXBsYWNlZEhlaWdodEFuZE1hcmcKICAgICAgICAgLy8g
T25seSBjaGlsZHJlbiBpbiB0aGUgbm9ybWFsIGZsb3cgYXJlIHRha2VuIGludG8gYWNjb3VudCAo
aS5lLiwgZmxvYXRpbmcgYm94ZXMgYW5kIGFic29sdXRlbHkgcG9zaXRpb25lZCBib3hlcyBhcmUg
aWdub3JlZCwKICAgICAgICAgLy8gYW5kIHJlbGF0aXZlbHkgcG9zaXRpb25lZCBib3hlcyBhcmUg
Y29uc2lkZXJlZCB3aXRob3V0IHRoZWlyIG9mZnNldCkuIE5vdGUgdGhhdCB0aGUgY2hpbGQgYm94
IG1heSBiZSBhbiBhbm9ueW1vdXMgYmxvY2sgYm94LgogCi0gICAgICAgIGF1dG8mIHN0eWxlID0g
bGF5b3V0Qm94LnN0eWxlKCk7Ci0gICAgICAgIGF1dG8gY29udGFpbmluZ0Jsb2NrV2lkdGggPSBs
YXlvdXRTdGF0ZS5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KCpsYXlvdXRCb3guY29udGFpbmluZ0Js
b2NrKCkpLmNvbnRlbnRCb3hXaWR0aCgpOwogICAgICAgICBhdXRvJiBkaXNwbGF5Qm94ID0gbGF5
b3V0U3RhdGUuZGlzcGxheUJveEZvckxheW91dEJveChsYXlvdXRCb3gpOwotCi0gICAgICAgIGF1
dG8gbm9uQ29sbGFwc2VkTWFyZ2luID0gVmVydGljYWxNYXJnaW46OkNvbXB1dGVkVmFsdWVzIHsg
Y29tcHV0ZWRWYWx1ZUlmTm90QXV0byhzdHlsZS5tYXJnaW5CZWZvcmUoKSwgY29udGFpbmluZ0Js
b2NrV2lkdGgpLnZhbHVlT3IoMCksCi0gICAgICAgICAgICBjb21wdXRlZFZhbHVlSWZOb3RBdXRv
KHN0eWxlLm1hcmdpbkFmdGVyKCksIGNvbnRhaW5pbmdCbG9ja1dpZHRoKS52YWx1ZU9yKDApIH07
IAotICAgICAgICBhdXRvIGNvbGxhcHNlZE1hcmdpbiA9IFZlcnRpY2FsTWFyZ2luOjpDb2xsYXBz
ZWRWYWx1ZXMgeyBNYXJnaW5Db2xsYXBzZTo6bWFyZ2luQmVmb3JlKGxheW91dFN0YXRlLCBsYXlv
dXRCb3gpLCBNYXJnaW5Db2xsYXBzZTo6bWFyZ2luQWZ0ZXIobGF5b3V0U3RhdGUsIGxheW91dEJv
eCkgfTsKKyAgICAgICAgYXV0byBjb21wdXRlZFZlcnRpY2FsTWFyZ2luID0gR2VvbWV0cnk6OmNv
bXB1dGVkVmVydGljYWxNYXJnaW4obGF5b3V0U3RhdGUsIGxheW91dEJveCk7CisgICAgICAgIGF1
dG8gbm9uQ29sbGFwc2VkTWFyZ2luID0gVXNlZFZlcnRpY2FsTWFyZ2luOjpOb25Db2xsYXBzZWRW
YWx1ZXMgeyBjb21wdXRlZFZlcnRpY2FsTWFyZ2luLmJlZm9yZS52YWx1ZU9yKDApLCBjb21wdXRl
ZFZlcnRpY2FsTWFyZ2luLmFmdGVyLnZhbHVlT3IoMCkgfTsgCisgICAgICAgIGF1dG8gY29sbGFw
c2VkTWFyZ2luID0gVXNlZFZlcnRpY2FsTWFyZ2luOjpDb2xsYXBzZWRWYWx1ZXMgeyBNYXJnaW5D
b2xsYXBzZTo6bWFyZ2luQmVmb3JlKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpLCBNYXJnaW5Db2xs
YXBzZTo6bWFyZ2luQWZ0ZXIobGF5b3V0U3RhdGUsIGxheW91dEJveCkgfTsKICAgICAgICAgYXV0
byBib3JkZXJBbmRQYWRkaW5nVG9wID0gZGlzcGxheUJveC5ib3JkZXJUb3AoKSArIGRpc3BsYXlC
b3gucGFkZGluZ1RvcCgpLnZhbHVlT3IoMCk7CiAKICAgICAgICAgYXV0byBoZWlnaHQgPSB1c2Vk
SGVpZ2h0ID8gdXNlZEhlaWdodC52YWx1ZSgpIDogY29tcHV0ZWRIZWlnaHRWYWx1ZShsYXlvdXRT
dGF0ZSwgbGF5b3V0Qm94LCBIZWlnaHRUeXBlOjpOb3JtYWwpOwpAQCAtMTA0LDcgKzEwMSw3IEBA
IEhlaWdodEFuZE1hcmdpbiBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5GbG93
Tm9uUmVwbGFjZWRIZWlnaHRBbmRNYXJnCiAKICAgICBhdXRvIGhlaWdodEFuZE1hcmdpbiA9IGNv
bXB1dGUoKTsKIAotICAgIExPR19XSVRIX1NUUkVBTShGb3JtYXR0aW5nQ29udGV4dExheW91dCwg
c3RyZWFtIDw8ICJbSGVpZ2h0XVtNYXJnaW5dIC0+IGluZmxvdyBub24tcmVwbGFjZWQgLT4gaGVp
Z2h0KCIgPDwgaGVpZ2h0QW5kTWFyZ2luLmhlaWdodCA8PCAicHgpIG1hcmdpbigiIDw8IGhlaWdo
dEFuZE1hcmdpbi5tYXJnaW4udXNlZFZhbHVlcygpLmJlZm9yZSA8PCAicHgsICIgPDwgaGVpZ2h0
QW5kTWFyZ2luLm1hcmdpbi51c2VkVmFsdWVzKCkuYWZ0ZXIgPDwgInB4KSAtPiBsYXlvdXRCb3go
IiA8PCAmbGF5b3V0Qm94IDw8ICIpIik7CisgICAgTE9HX1dJVEhfU1RSRUFNKEZvcm1hdHRpbmdD
b250ZXh0TGF5b3V0LCBzdHJlYW0gPDwgIltIZWlnaHRdW01hcmdpbl0gLT4gaW5mbG93IG5vbi1y
ZXBsYWNlZCAtPiBoZWlnaHQoIiA8PCBoZWlnaHRBbmRNYXJnaW4uaGVpZ2h0IDw8ICJweCkgbWFy
Z2luKCIgPDwgaGVpZ2h0QW5kTWFyZ2luLnVzZWRNYXJnaW4uYmVmb3JlKCkgPDwgInB4LCAiIDw8
IGhlaWdodEFuZE1hcmdpbi51c2VkTWFyZ2luLmFmdGVyKCkgPDwgInB4KSAtPiBsYXlvdXRCb3go
IiA8PCAmbGF5b3V0Qm94IDw8ICIpIik7CiAgICAgcmV0dXJuIGhlaWdodEFuZE1hcmdpbjsKIH0K
IApAQCAtMjYzLDcgKzI2MCw3IEBAIEhlaWdodEFuZE1hcmdpbiBCbG9ja0Zvcm1hdHRpbmdDb250
ZXh0OjpHZW9tZXRyeTo6aW5GbG93SGVpZ2h0QW5kTWFyZ2luKGNvbnN0IExhCiAKICAgICBoZWln
aHRBbmRNYXJnaW4gPSBRdWlya3M6OnN0cmV0Y2hlZEhlaWdodChsYXlvdXRTdGF0ZSwgbGF5b3V0
Qm94LCBoZWlnaHRBbmRNYXJnaW4pOwogCi0gICAgTE9HX1dJVEhfU1RSRUFNKEZvcm1hdHRpbmdD
b250ZXh0TGF5b3V0LCBzdHJlYW0gPDwgIltIZWlnaHRdW01hcmdpbl0gLT4gaW5mbG93IG5vbi1y
ZXBsYWNlZCAtPiBzdHJlY2hlZCB0byB2aWV3cG9ydCAtPiBoZWlnaHQoIiA8PCBoZWlnaHRBbmRN
YXJnaW4uaGVpZ2h0IDw8ICJweCkgbWFyZ2luKCIgPDwgaGVpZ2h0QW5kTWFyZ2luLm1hcmdpbi51
c2VkVmFsdWVzKCkuYmVmb3JlIDw8ICJweCwgIiA8PCBoZWlnaHRBbmRNYXJnaW4ubWFyZ2luLnVz
ZWRWYWx1ZXMoKS5hZnRlciA8PCAicHgpIC0+IGxheW91dEJveCgiIDw8ICZsYXlvdXRCb3ggPDwg
IikiKTsKKyAgICBMT0dfV0lUSF9TVFJFQU0oRm9ybWF0dGluZ0NvbnRleHRMYXlvdXQsIHN0cmVh
bSA8PCAiW0hlaWdodF1bTWFyZ2luXSAtPiBpbmZsb3cgbm9uLXJlcGxhY2VkIC0+IHN0cmVjaGVk
IHRvIHZpZXdwb3J0IC0+IGhlaWdodCgiIDw8IGhlaWdodEFuZE1hcmdpbi5oZWlnaHQgPDwgInB4
KSBtYXJnaW4oIiA8PCBoZWlnaHRBbmRNYXJnaW4udXNlZE1hcmdpbi5iZWZvcmUoKSA8PCAicHgs
ICIgPDwgaGVpZ2h0QW5kTWFyZ2luLnVzZWRNYXJnaW4uYWZ0ZXIoKSA8PCAicHgpIC0+IGxheW91
dEJveCgiIDw8ICZsYXlvdXRCb3ggPDwgIikiKTsKICAgICByZXR1cm4gaGVpZ2h0QW5kTWFyZ2lu
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5n
L0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRRdWlya3MuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0UXVpcmtzLmNwcAppbmRleCA0
NjA2ZjlkYzY2MjhlZTAzZjMwYzdhOTVmNDM5ZmIxM2U3NDA3MDlkLi5mM2ViZDJkN2NmMTM1YTg3
MTMxYWE2NGI0MjhjNjVlZGEwODEwMzcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRRdWlya3MuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29u
dGV4dFF1aXJrcy5jcHAKQEAgLTgwLDEwICs4MCwxMCBAQCBIZWlnaHRBbmRNYXJnaW4gQmxvY2tG
b3JtYXR0aW5nQ29udGV4dDo6UXVpcmtzOjpzdHJldGNoZWRIZWlnaHQoY29uc3QgTGF5b3V0U3Rh
dAogCiAgICAgTGF5b3V0VW5pdCB0b3RhbFZlcnRpY2FsTWFyZ2luOwogICAgIGlmIChsYXlvdXRC
b3guaXNEb2N1bWVudEJveCgpKSB7Ci0gICAgICAgIGF1dG8gdmVydGljYWxNYXJnaW4gPSBoZWln
aHRBbmRNYXJnaW4ubWFyZ2luLnVzZWRWYWx1ZXMoKTsKKyAgICAgICAgYXV0byB2ZXJ0aWNhbE1h
cmdpbiA9IGhlaWdodEFuZE1hcmdpbi51c2VkTWFyZ2luOwogICAgICAgICAvLyBEb2N1bWVudCBi
b3gncyBtYXJnaW5zIGRvIG5vdCBjb2xsYXBzZS4KLSAgICAgICAgQVNTRVJUKCFoZWlnaHRBbmRN
YXJnaW4ubWFyZ2luLmNvbGxhcHNlZFZhbHVlcygpKTsKLSAgICAgICAgdG90YWxWZXJ0aWNhbE1h
cmdpbiA9IHZlcnRpY2FsTWFyZ2luLmJlZm9yZSArIHZlcnRpY2FsTWFyZ2luLmFmdGVyOworICAg
ICAgICBBU1NFUlQoIXZlcnRpY2FsTWFyZ2luLmhhc0NvbGxhcHNlZFZhbHVlcygpKTsKKyAgICAg
ICAgdG90YWxWZXJ0aWNhbE1hcmdpbiA9IHZlcnRpY2FsTWFyZ2luLmJlZm9yZSgpICsgdmVydGlj
YWxNYXJnaW4uYWZ0ZXIoKTsKICAgICB9IGVsc2UgaWYgKGxheW91dEJveC5pc0JvZHlCb3goKSkg
ewogICAgICAgICAvLyBIZXJlIGlzIHRoZSBxdWlya3kgcGFydCBmb3IgYm9keSBib3g6CiAgICAg
ICAgIC8vIFN0cmV0Y2ggdGhlIGJvZHkgdXNpbmcgdGhlIGluaXRpYWwgY29udGFpbmluZyBibG9j
aydzIGhlaWdodCBhbmQgc2hyaW5rIGl0IHdpdGggZG9jdW1lbnQgYm94J3MgbWFyZ2luL2JvcmRl
ci9wYWRkaW5nLgpAQCAtOTMsOCArOTMsMTIgQEAgSGVpZ2h0QW5kTWFyZ2luIEJsb2NrRm9ybWF0
dGluZ0NvbnRleHQ6OlF1aXJrczo6c3RyZXRjaGVkSGVpZ2h0KGNvbnN0IExheW91dFN0YXQKIAog
ICAgICAgICAvLyBUaGlzIHF1aXJrIGhhcHBlbnMgd2hlbiB0aGUgYm9keSBoZWlnaHQgaXMgMCB3
aGljaCBtZWFucyBpdHMgdmVydGljYWwgbWFyZ2lucyBjb2xsYXBzZSB0aHJvdWdoICh0b3AgYW5k
IGJvdHRvbSBtYXJnaW5zIGFyZSBhZGpvaW5pbmcpLgogICAgICAgICAvLyBIb3dldmVyIG5vdyB0
aGF0IHdlIHN0cmV0Y2ggdGhlIGJvZHkgdGhleSBkb24ndCBjb2xsYXBzZSB0aHJvdWdoIGFueW1v
cmUsIHNvIHdlIG5lZWQgdG8gdXNlIHRoZSBub24tY29sbGFwc2VkIHZhbHVlcyBpbnN0ZWFkLgot
ICAgICAgICBhdXRvIGJvZHlCb3hWZXJ0aWNhbE1hcmdpbiA9IGhlaWdodEFuZE1hcmdpbi5oZWln
aHQgPyBoZWlnaHRBbmRNYXJnaW4ubWFyZ2luLnVzZWRWYWx1ZXMoKSA6IGhlaWdodEFuZE1hcmdp
bi5tYXJnaW4ubm9uQ29sbGFwc2VkVmFsdWVzKCk7Ci0gICAgICAgIHRvdGFsVmVydGljYWxNYXJn
aW4gPSBib2R5Qm94VmVydGljYWxNYXJnaW4uYmVmb3JlICsgYm9keUJveFZlcnRpY2FsTWFyZ2lu
LmFmdGVyOworICAgICAgICBpZiAoaGVpZ2h0QW5kTWFyZ2luLmhlaWdodCkKKyAgICAgICAgICAg
IHRvdGFsVmVydGljYWxNYXJnaW4gPSBoZWlnaHRBbmRNYXJnaW4udXNlZE1hcmdpbi5iZWZvcmUo
KSArIGhlaWdodEFuZE1hcmdpbi51c2VkTWFyZ2luLmFmdGVyKCk7CisgICAgICAgIGVsc2Ugewor
ICAgICAgICAgICAgYXV0byBub25Db2xsYXBzZWRWYWx1ZXMgPSBoZWlnaHRBbmRNYXJnaW4udXNl
ZE1hcmdpbi5ub25Db2xsYXBzZWRWYWx1ZXMoKTsKKyAgICAgICAgICAgIHRvdGFsVmVydGljYWxN
YXJnaW4gPSBub25Db2xsYXBzZWRWYWx1ZXMuYmVmb3JlICsgbm9uQ29sbGFwc2VkVmFsdWVzLmFm
dGVyOworICAgICAgICB9CiAgICAgfQogCiAgICAgLy8gU3RyZXRjaCBidXQgbmV2ZXIgb3ZlcnN0
cmV0Y2ggd2l0aCB0aGUgbWFyZ2lucy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tNYXJnaW5Db2xsYXBzZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrTWFyZ2luQ29sbGFwc2UuY3BwCmluZGV4IDU2
NzcwODc0NTM5NGE3ODViODRkOTdjODJmNWY0ODEzNWEzZjhkNTAuLmY3OThhZjNkZWQ4NGJiNzIy
NDJiNTgyNWM4Mjk0NDQ4ZGE2OTE4MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tNYXJnaW5Db2xsYXBzZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja01hcmdpbkNvbGxhcHNlLmNwcApAQCAt
MTA3LDE0ICsxMDcsMTQgQEAgTGF5b3V0VW5pdCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9t
ZXRyeTo6TWFyZ2luQ29sbGFwc2U6OmNvbXB1dGVkTm9uQ29sbGFwc2UKIHsKICAgICBBU1NFUlQo
bGF5b3V0Qm94LmlzQmxvY2tMZXZlbEJveCgpKTsKIAotICAgIHJldHVybiBjb21wdXRlZE5vbkNv
bGxhcHNlZFZlcnRpY2FsTWFyZ2luVmFsdWUobGF5b3V0U3RhdGUsIGxheW91dEJveCkuYmVmb3Jl
OworICAgIHJldHVybiBjb21wdXRlZFZlcnRpY2FsTWFyZ2luKGxheW91dFN0YXRlLCBsYXlvdXRC
b3gpLmJlZm9yZS52YWx1ZU9yKDApOwogfQogCiBMYXlvdXRVbml0IEJsb2NrRm9ybWF0dGluZ0Nv
bnRleHQ6Okdlb21ldHJ5OjpNYXJnaW5Db2xsYXBzZTo6Y29tcHV0ZWROb25Db2xsYXBzZWRNYXJn
aW5BZnRlcihjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEJveCYgbGF5b3V0
Qm94KQogewogICAgIEFTU0VSVChsYXlvdXRCb3guaXNCbG9ja0xldmVsQm94KCkpOwogCi0gICAg
cmV0dXJuIGNvbXB1dGVkTm9uQ29sbGFwc2VkVmVydGljYWxNYXJnaW5WYWx1ZShsYXlvdXRTdGF0
ZSwgbGF5b3V0Qm94KS5hZnRlcjsKKyAgICByZXR1cm4gY29tcHV0ZWRWZXJ0aWNhbE1hcmdpbihs
YXlvdXRTdGF0ZSwgbGF5b3V0Qm94KS5hZnRlci52YWx1ZU9yKDApOwogfQogCiBMYXlvdXRVbml0
IEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpNYXJnaW5Db2xsYXBzZTo6bm9uQ29s
bGFwc2VkTWFyZ2luQmVmb3JlKGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3Qg
Qm94JiBsYXlvdXRCb3gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxh
eXRyZWUvRGlzcGxheUJveC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rp
c3BsYXlCb3guaAppbmRleCA5YmMxYjlmZWIwYzBmM2M1N2Q1ZDRmMmRhZjRhN2MwYWVlMjNiNzky
Li4zMWQ4NmE2YmZkMzNiYjU2ZDYzM2Y4NDQ2NWM2OWFiNmNhNDI5ZWU0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheUJveC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5Qm94LmgKQEAgLTEzOCw3ICsxMzgs
NyBAQCBwdWJsaWM6CiAgICAgUmVjdCByZWN0KCkgY29uc3QgeyByZXR1cm4geyB0b3AoKSwgbGVm
dCgpLCB3aWR0aCgpLCBoZWlnaHQoKSB9OyB9CiAgICAgUmVjdCByZWN0V2l0aE1hcmdpbigpIGNv
bnN0IHsgcmV0dXJuIHsgdG9wKCkgLSBtYXJnaW5CZWZvcmUoKSwgbGVmdCgpIC0gbWFyZ2luU3Rh
cnQoKSwgbWFyZ2luU3RhcnQoKSArIHdpZHRoKCkgKyBtYXJnaW5FbmQoKSwgbWFyZ2luQmVmb3Jl
KCkgKyBoZWlnaHQoKSArIG1hcmdpbkFmdGVyKCkgfTsgfQogCi0gICAgTGF5b3V0OjpWZXJ0aWNh
bE1hcmdpbiB2ZXJ0aWNhbE1hcmdpbigpIGNvbnN0OworICAgIExheW91dDo6VXNlZFZlcnRpY2Fs
TWFyZ2luIHZlcnRpY2FsTWFyZ2luKCkgY29uc3Q7CiAgICAgTGF5b3V0VW5pdCBtYXJnaW5CZWZv
cmUoKSBjb25zdDsKICAgICBMYXlvdXRVbml0IG1hcmdpblN0YXJ0KCkgY29uc3Q7CiAgICAgTGF5
b3V0VW5pdCBtYXJnaW5BZnRlcigpIGNvbnN0OwpAQCAtMTkyLDcgKzE5Miw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBzZXRDb250ZW50Qm94V2lkdGgoTGF5b3V0VW5pdCk7CiAKICAgICB2b2lkIHNl
dEhvcml6b250YWxNYXJnaW4oTGF5b3V0OjpVc2VkSG9yaXpvbnRhbE1hcmdpbik7Ci0gICAgdm9p
ZCBzZXRWZXJ0aWNhbE1hcmdpbihMYXlvdXQ6OlZlcnRpY2FsTWFyZ2luKTsKKyAgICB2b2lkIHNl
dFZlcnRpY2FsTWFyZ2luKExheW91dDo6VXNlZFZlcnRpY2FsTWFyZ2luKTsKICAgICB2b2lkIHNl
dEhvcml6b250YWxDb21wdXRlZE1hcmdpbihMYXlvdXQ6OkNvbXB1dGVkSG9yaXpvbnRhbE1hcmdp
bik7CiAgICAgdm9pZCBzZXRFc3RpbWF0ZWRNYXJnaW5CZWZvcmUoTGF5b3V0VW5pdCBtYXJnaW5C
ZWZvcmUpIHsgbV9lc3RpbWF0ZWRNYXJnaW5CZWZvcmUgPSBtYXJnaW5CZWZvcmU7IH0KIApAQCAt
MjI1LDcgKzIyNSw3IEBAIHByaXZhdGU6CiAgICAgTGF5b3V0VW5pdCBtX2NvbnRlbnRIZWlnaHQ7
CiAKICAgICBMYXlvdXQ6OlVzZWRIb3Jpem9udGFsTWFyZ2luIG1faG9yaXpvbnRhbE1hcmdpbjsK
LSAgICBMYXlvdXQ6OlZlcnRpY2FsTWFyZ2luIG1fdmVydGljYWxNYXJnaW47CisgICAgTGF5b3V0
OjpVc2VkVmVydGljYWxNYXJnaW4gbV92ZXJ0aWNhbE1hcmdpbjsKICAgICBMYXlvdXQ6OkNvbXB1
dGVkSG9yaXpvbnRhbE1hcmdpbiBtX2hvcml6b250YWxDb21wdXRlZE1hcmdpbjsKICAgICBPcHRp
b25hbDxMYXlvdXRVbml0PiBtX2VzdGltYXRlZE1hcmdpbkJlZm9yZTsKIApAQCAtNTE1LDEzICs1
MTUsMTMgQEAgaW5saW5lIHZvaWQgQm94OjpzZXRIb3Jpem9udGFsTWFyZ2luKExheW91dDo6VXNl
ZEhvcml6b250YWxNYXJnaW4gbWFyZ2luKQogICAgIG1faG9yaXpvbnRhbE1hcmdpbiA9IG1hcmdp
bjsKIH0KIAotaW5saW5lIHZvaWQgQm94OjpzZXRWZXJ0aWNhbE1hcmdpbihMYXlvdXQ6OlZlcnRp
Y2FsTWFyZ2luIG1hcmdpbikKK2lubGluZSB2b2lkIEJveDo6c2V0VmVydGljYWxNYXJnaW4oTGF5
b3V0OjpVc2VkVmVydGljYWxNYXJnaW4gbWFyZ2luKQogewogI2lmICFBU1NFUlRfRElTQUJMRUQK
ICAgICBzZXRIYXNWYWxpZFZlcnRpY2FsTWFyZ2luKCk7CiAgICAgc2V0SGFzVmFsaWRWZXJ0aWNh
bE5vbkNvbGxhcHNlZE1hcmdpbigpOwogI2VuZGlmCi0gICAgQVNTRVJUKCFtX2VzdGltYXRlZE1h
cmdpbkJlZm9yZSB8fCAqbV9lc3RpbWF0ZWRNYXJnaW5CZWZvcmUgPT0gbWFyZ2luLnVzZWRWYWx1
ZXMoKS5iZWZvcmUpOworICAgIEFTU0VSVCghbV9lc3RpbWF0ZWRNYXJnaW5CZWZvcmUgfHwgKm1f
ZXN0aW1hdGVkTWFyZ2luQmVmb3JlID09IG1hcmdpbi5iZWZvcmUoKSk7CiAgICAgbV92ZXJ0aWNh
bE1hcmdpbiA9IG1hcmdpbjsKIH0KIApAQCAtNTQ5LDcgKzU0OSw3IEBAIGlubGluZSB2b2lkIEJv
eDo6c2V0UGFkZGluZyhPcHRpb25hbDxMYXlvdXQ6OkVkZ2VzPiBwYWRkaW5nKQogICAgIG1fcGFk
ZGluZyA9IHBhZGRpbmc7CiB9CiAKLWlubGluZSBMYXlvdXQ6OlZlcnRpY2FsTWFyZ2luIEJveDo6
dmVydGljYWxNYXJnaW4oKSBjb25zdAoraW5saW5lIExheW91dDo6VXNlZFZlcnRpY2FsTWFyZ2lu
IEJveDo6dmVydGljYWxNYXJnaW4oKSBjb25zdAogewogICAgIEFTU0VSVChtX2hhc1ZhbGlkVmVy
dGljYWxNYXJnaW4pOwogICAgIHJldHVybiBtX3ZlcnRpY2FsTWFyZ2luOwpAQCAtNTU4LDcgKzU1
OCw3IEBAIGlubGluZSBMYXlvdXQ6OlZlcnRpY2FsTWFyZ2luIEJveDo6dmVydGljYWxNYXJnaW4o
KSBjb25zdAogaW5saW5lIExheW91dFVuaXQgQm94OjptYXJnaW5CZWZvcmUoKSBjb25zdAogewog
ICAgIEFTU0VSVChtX2hhc1ZhbGlkVmVydGljYWxNYXJnaW4pOwotICAgIHJldHVybiBtX3ZlcnRp
Y2FsTWFyZ2luLnVzZWRWYWx1ZXMoKS5iZWZvcmU7CisgICAgcmV0dXJuIG1fdmVydGljYWxNYXJn
aW4uYmVmb3JlKCk7CiB9CiAKIGlubGluZSBMYXlvdXRVbml0IEJveDo6bWFyZ2luU3RhcnQoKSBj
b25zdApAQCAtNTcwLDcgKzU3MCw3IEBAIGlubGluZSBMYXlvdXRVbml0IEJveDo6bWFyZ2luU3Rh
cnQoKSBjb25zdAogaW5saW5lIExheW91dFVuaXQgQm94OjptYXJnaW5BZnRlcigpIGNvbnN0CiB7
CiAgICAgQVNTRVJUKG1faGFzVmFsaWRWZXJ0aWNhbE1hcmdpbik7Ci0gICAgcmV0dXJuIG1fdmVy
dGljYWxNYXJnaW4udXNlZFZhbHVlcygpLmFmdGVyOworICAgIHJldHVybiBtX3ZlcnRpY2FsTWFy
Z2luLmFmdGVyKCk7CiB9CiAKIGlubGluZSBMYXlvdXRVbml0IEJveDo6bWFyZ2luRW5kKCkgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mbG9hdHMvRmxvYXRpbmdDb250
ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mbG9hdHMvRmxvYXRpbmdDb250ZXh0LmNw
cAppbmRleCA3MWZjMDYwNjUyMjc4MGRiYWQyM2E5OGY1OTk0YTg1MzhjYTMyZTM5Li43MWQwNTM5
Nzg4OTg4Zjc0MWYwNGEwYjdkNjNlNjNkNjUxODdmYjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZmxvYXRzL0Zsb2F0aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Zsb2F0cy9GbG9hdGluZ0NvbnRleHQuY3BwCkBAIC0xOTMsMTQgKzE5MywxNCBA
QCBPcHRpb25hbDxQb3NpdGlvbj4gRmxvYXRpbmdDb250ZXh0Ojp2ZXJ0aWNhbFBvc2l0aW9uV2l0
aENsZWFyYW5jZShjb25zdCBCb3gmIGxheQogCiAgICAgICAgICAgICAvLyBSZXNldCBwcmV2aW91
cyBib3R0b20gYW5kIGN1cnJlbnQgdG9wIG1hcmdpbnMgdG8gbm9uLWNvbGxhcHNpbmcuCiAgICAg
ICAgICAgICBhdXRvIHByZXZpb3VzVmVydGljYWxNYXJnaW4gPSBwcmV2aW91c0luRmxvd0Rpc3Bs
YXlCb3gudmVydGljYWxNYXJnaW4oKTsKLSAgICAgICAgICAgIGlmIChwcmV2aW91c1ZlcnRpY2Fs
TWFyZ2luLmNvbGxhcHNlZFZhbHVlcygpICYmIHByZXZpb3VzVmVydGljYWxNYXJnaW4uY29sbGFw
c2VkVmFsdWVzKCktPmFmdGVyKSB7Ci0gICAgICAgICAgICAgICAgcHJldmlvdXNWZXJ0aWNhbE1h
cmdpbi5zZXRDb2xsYXBzZWRWYWx1ZXMoeyBwcmV2aW91c1ZlcnRpY2FsTWFyZ2luLmNvbGxhcHNl
ZFZhbHVlcygpLT5iZWZvcmUsIHsgfSB9KTsKKyAgICAgICAgICAgIGlmIChwcmV2aW91c1ZlcnRp
Y2FsTWFyZ2luLmNvbGxhcHNlZFZhbHVlcygpLmFmdGVyKSB7CisgICAgICAgICAgICAgICAgcHJl
dmlvdXNWZXJ0aWNhbE1hcmdpbi5zZXRDb2xsYXBzZWRWYWx1ZXMoeyBwcmV2aW91c1ZlcnRpY2Fs
TWFyZ2luLmNvbGxhcHNlZFZhbHVlcygpLmJlZm9yZSwgeyB9IH0pOwogICAgICAgICAgICAgICAg
IHByZXZpb3VzSW5GbG93RGlzcGxheUJveC5zZXRWZXJ0aWNhbE1hcmdpbihwcmV2aW91c1ZlcnRp
Y2FsTWFyZ2luKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIC8vIEZJWE1FOiBjaGVjayBp
ZiBjb2xsYXBzaW5nIHRocm91Z2ggaGFzIGFueXRoaW5nIHRvIGRvIHdpdGggdGhpcy4KICAgICAg
ICAgICAgIGF1dG8gdmVydGljYWxNYXJnaW4gPSBkaXNwbGF5Qm94LnZlcnRpY2FsTWFyZ2luKCk7
Ci0gICAgICAgICAgICBpZiAodmVydGljYWxNYXJnaW4uY29sbGFwc2VkVmFsdWVzKCkgJiYgdmVy
dGljYWxNYXJnaW4uY29sbGFwc2VkVmFsdWVzKCktPmJlZm9yZSkgewotICAgICAgICAgICAgICAg
IHZlcnRpY2FsTWFyZ2luLnNldENvbGxhcHNlZFZhbHVlcyh7IHsgfSwgdmVydGljYWxNYXJnaW4u
Y29sbGFwc2VkVmFsdWVzKCktPmFmdGVyIH0pOworICAgICAgICAgICAgaWYgKHZlcnRpY2FsTWFy
Z2luLmNvbGxhcHNlZFZhbHVlcygpLmJlZm9yZSkgeworICAgICAgICAgICAgICAgIHZlcnRpY2Fs
TWFyZ2luLnNldENvbGxhcHNlZFZhbHVlcyh7IHsgfSwgdmVydGljYWxNYXJnaW4uY29sbGFwc2Vk
VmFsdWVzKCkuYWZ0ZXIgfSk7CiAgICAgICAgICAgICAgICAgZGlzcGxheUJveC5zZXRWZXJ0aWNh
bE1hcmdpbih2ZXJ0aWNhbE1hcmdpbik7CiAgICAgICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250
ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZv
cm1hdHRpbmdDb250ZXh0LmNwcAppbmRleCBiMzZlNjhlOGE3ZDI2MjQxMDViNDA5ZWM1MzRiOThi
YmM0ZGNiNGQ3Li5lMGFhZjU5ZGVmZDAzZDVkMzE5M2E5MjRlOTllNTM5OTg1NmFhY2M1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3Jt
YXR0aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1h
dHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwCkBAIC0zNjIsNyArMzYyLDcgQEAgdm9p
ZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZUhlaWdodEFuZE1hcmdpbihjb25zdCBC
b3gmIGxheW91dEJveCkgY29uc3QKIAogICAgIGF1dG8mIGRpc3BsYXlCb3ggPSBsYXlvdXRTdGF0
ZS5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGxheW91dEJveCk7CiAgICAgZGlzcGxheUJveC5zZXRD
b250ZW50Qm94SGVpZ2h0KGhlaWdodEFuZE1hcmdpbi5oZWlnaHQpOwotICAgIGRpc3BsYXlCb3gu
c2V0VmVydGljYWxNYXJnaW4oaGVpZ2h0QW5kTWFyZ2luLm1hcmdpbik7CisgICAgZGlzcGxheUJv
eC5zZXRWZXJ0aWNhbE1hcmdpbihoZWlnaHRBbmRNYXJnaW4udXNlZE1hcmdpbik7CiB9CiAKIHZv
aWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dEZvcm1hdHRpbmdDb250ZXh0Um9vdChj
b25zdCBCb3gmIHJvb3QpIGNvbnN0Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>