<?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>194376</bug_id>
          
          <creation_ts>2019-02-06 21:54:32 -0800</creation_ts>
          <short_desc>[LFC] Use dedicated data structures for optional used values (input to geometry functions)</short_desc>
          <delta_ts>2019-02-07 08:34:29 -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>1503630</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2019-02-06 21:54:32 -0800</bug_when>
    <thetext>ssia</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1503633</commentid>
    <comment_count>1</comment_count>
      <attachid>361377</attachid>
    <who name="alan">zalan</who>
    <bug_when>2019-02-06 21:58:19 -0800</bug_when>
    <thetext>Created attachment 361377
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1503736</commentid>
    <comment_count>2</comment_count>
      <attachid>361377</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-02-07 08:33:12 -0800</bug_when>
    <thetext>Comment on attachment 361377
Patch

Clearing flags on attachment: 361377

Committed r241122: &lt;https://trac.webkit.org/changeset/241122&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1503737</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-02-07 08:33:14 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1503738</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-02-07 08:34:29 -0800</bug_when>
    <thetext>&lt;rdar://problem/47884161&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>361377</attachid>
            <date>2019-02-06 21:58:19 -0800</date>
            <delta_ts>2019-02-07 08:33:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-194376-20190206215800.patch</filename>
            <type>text/plain</type>
            <size>47992</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQxMDQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjA4NDBjNjBkYWZhNzA2
ZDUxNDU1MDgxZmM2MTg5NGY5MGZjZmM3OS4uNjUwNDQ2ZDE5ZGQxMWMwNWU5NTJjODMzYTkwODY4
MjEwNTg4YmU4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcyIEBACisyMDE5LTAyLTA2ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ10gVXNlIGRlZGljYXRl
ZCBkYXRhIHN0cnVjdHVyZXMgZm9yIG9wdGlvbmFsIHVzZWQgdmFsdWVzIChpbnB1dCB0byBnZW9t
ZXRyeSBmdW5jdGlvbnMpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xOTQzNzYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUaGlzIGlzIGluIHByZXBhcmF0aW9uIGZvciBiZWluZyBhYmxlIHRvIHBhc3MgaW4g
dGhlIGNvbnRhaW5pbmcgYmxvY2sncyB3aWR0aCBhcyBhbiBvcHRpb25hbCB1c2VkIHZhbHVlLgor
ICAgICAgICBEdXJpbmcgbGF5b3V0IHdlIGFsd2F5cyBoYXZlIGEgdmFsaWQgd2lkdGggZm9yIHRo
ZSBjb250YWluaW5nIGJsb2NrLCBob3dldmVyIGl0J3Mgbm90IHRoZSBjYXNlIHdoaWxlIGNvbXB1
dGluZyB0aGUgcHJlZmVycmVkIHdpZHRoLgorCisgICAgICAgICogbGF5b3V0L0Zvcm1hdHRpbmdD
b250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6
OmNvbXB1dGVPdXRPZkZsb3dIb3Jpem9udGFsR2VvbWV0cnkgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZU91dE9mRmxvd1ZlcnRpY2Fs
R2VvbWV0cnkgY29uc3QpOgorICAgICAgICAqIGxheW91dC9Gb3JtYXR0aW5nQ29udGV4dC5oOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Om91
dE9mRmxvd1ZlcnRpY2FsR2VvbWV0cnkpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5
b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Om91dE9mRmxvd0hvcml6b250YWxHZW9t
ZXRyeSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250
ZXh0OjpHZW9tZXRyeTo6ZmxvYXRpbmdIZWlnaHRBbmRNYXJnaW4pOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmZsb2F0aW5n
V2lkdGhBbmRNYXJnaW4pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3Jt
YXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmlubGluZVJlcGxhY2VkSGVpZ2h0QW5kTWFyZ2luKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Okdl
b21ldHJ5OjppbmxpbmVSZXBsYWNlZFdpZHRoQW5kTWFyZ2luKTogRGVsZXRlZC4KKyAgICAgICAg
KCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0
OjpHZW9tZXRyeTo6Y29tcGxpY2F0ZWRDYXNlcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6b3V0T2ZGbG93UmVwbGFjZWRW
ZXJ0aWNhbEdlb21ldHJ5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9y
bWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dSZXBsYWNlZEhvcml6b250YWxHZW9t
ZXRyeSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250
ZXh0OjpHZW9tZXRyeTo6b3V0T2ZGbG93Tm9uUmVwbGFjZWRWZXJ0aWNhbEdlb21ldHJ5KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21l
dHJ5OjpvdXRPZkZsb3dOb25SZXBsYWNlZEhvcml6b250YWxHZW9tZXRyeSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6Zmxv
YXRpbmdSZXBsYWNlZEhlaWdodEFuZE1hcmdpbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6ZmxvYXRpbmdSZXBsYWNlZFdp
ZHRoQW5kTWFyZ2luKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0
dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpmbG9hdGluZ05vblJlcGxhY2VkV2lkdGhBbmRNYXJnaW4p
OiBEZWxldGVkLgorICAgICAgICAqIGxheW91dC9Gb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5
OjpvdXRPZkZsb3dOb25SZXBsYWNlZFZlcnRpY2FsR2VvbWV0cnkpOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Om91dE9mRmxvd05vblJlcGxh
Y2VkSG9yaXpvbnRhbEdlb21ldHJ5KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0
dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dSZXBsYWNlZFZlcnRpY2FsR2VvbWV0cnkp
OgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6
Om91dE9mRmxvd1JlcGxhY2VkSG9yaXpvbnRhbEdlb21ldHJ5KToKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5Ojpjb21wbGljYXRlZENhc2VzKToK
KyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5Ojpm
bG9hdGluZ05vblJlcGxhY2VkV2lkdGhBbmRNYXJnaW4pOgorICAgICAgICAoV2ViQ29yZTo6TGF5
b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmZsb2F0aW5nUmVwbGFjZWRIZWlnaHRB
bmRNYXJnaW4pOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6
R2VvbWV0cnk6OmZsb2F0aW5nUmVwbGFjZWRXaWR0aEFuZE1hcmdpbik6CisgICAgICAgIChXZWJD
b3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6b3V0T2ZGbG93VmVydGlj
YWxHZW9tZXRyeSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0
OjpHZW9tZXRyeTo6b3V0T2ZGbG93SG9yaXpvbnRhbEdlb21ldHJ5KToKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpmbG9hdGluZ0hlaWdodEFu
ZE1hcmdpbik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0OjpH
ZW9tZXRyeTo6ZmxvYXRpbmdXaWR0aEFuZE1hcmdpbik6CisgICAgICAgIChXZWJDb3JlOjpMYXlv
dXQ6OkZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5saW5lUmVwbGFjZWRIZWlnaHRBbmRN
YXJnaW4pOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6R2Vv
bWV0cnk6OmlubGluZVJlcGxhY2VkV2lkdGhBbmRNYXJnaW4pOgorICAgICAgICAqIGxheW91dC9M
YXlvdXRVbml0cy5oOgorICAgICAgICAqIGxheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3Jt
YXR0aW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0
dGluZ0NvbnRleHQ6OmNvbXB1dGVXaWR0aEFuZE1hcmdpbiBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVIZWlnaHRBbmRNYXJn
aW4gY29uc3QpOgorICAgICAgICAqIGxheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0
aW5nQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdD
b250ZXh0OjpHZW9tZXRyeTo6aW5GbG93SGVpZ2h0QW5kTWFyZ2luKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Omlu
Rmxvd1dpZHRoQW5kTWFyZ2luKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmluRmxvd05vblJlcGxhY2VkSGVpZ2h0
QW5kTWFyZ2luKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3Jt
YXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmluRmxvd05vblJlcGxhY2VkV2lkdGhBbmRNYXJnaW4p
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250
ZXh0OjpHZW9tZXRyeTo6aW5GbG93UmVwbGFjZWRXaWR0aEFuZE1hcmdpbik6IERlbGV0ZWQuCisg
ICAgICAgICogbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0R2Vv
bWV0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250
ZXh0OjpHZW9tZXRyeTo6aW5GbG93Tm9uUmVwbGFjZWRIZWlnaHRBbmRNYXJnaW4pOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5G
bG93Tm9uUmVwbGFjZWRXaWR0aEFuZE1hcmdpbik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6
OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbkZsb3dSZXBsYWNlZFdpZHRoQW5k
TWFyZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4
dDo6R2VvbWV0cnk6OmluRmxvd0hlaWdodEFuZE1hcmdpbik6CisgICAgICAgIChXZWJDb3JlOjpM
YXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbkZsb3dXaWR0aEFuZE1h
cmdpbik6CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGlu
Z0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5n
Q29udGV4dDo6Y29tcHV0ZVdpZHRoQW5kTWFyZ2luIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVIZWlnaHRBbmRNYXJnaW4g
Y29uc3QpOgorICAgICAgICAqIGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRp
bmdDb250ZXh0R2VvbWV0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVG
b3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmlubGluZUJsb2NrV2lkdGhBbmRNYXJnaW4pOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0
cnk6OmlubGluZUJsb2NrSGVpZ2h0QW5kTWFyZ2luKToKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmll
d0xheW91dENvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bGF5b3V0VXNpbmdGb3JtYXR0
aW5nQ29udGV4dCk6CisKIDIwMTktMDItMDYgIEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRlckBhcHBs
ZS5jb20+CiAKICAgICAgICAgRm9yd2FyZCBBZCBDbGljayBBdHRyaWJ1dGlvbiBkYXRhIGZyb20g
SFRNTEFuY2hvckVsZW1lbnQ6OmhhbmRsZUNsaWNrKCkgdG8gV2ViS2l0OjpOYXZpZ2F0aW9uQWN0
aW9uRGF0YQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250
ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dC5jcHAKaW5k
ZXggMWIwZGE4MjFkMDViNDUzOWM2ZTBmMmZkYWQ4MjM1ODEyOGYwOWM4Mi4uODJhNzk5YTUzZmEz
NzEzMzM1YzViNTgwOTE5OGRkMTMyOTZiZDM4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
Rm9ybWF0dGluZ0NvbnRleHQuY3BwCkBAIC02OCwyMSArNjgsMjEgQEAgdm9pZCBGb3JtYXR0aW5n
Q29udGV4dDo6Y29tcHV0ZU91dE9mRmxvd0hvcml6b250YWxHZW9tZXRyeShjb25zdCBCb3gmIGxh
eW91dEJveCkKIHsKICAgICBhdXRvJiBsYXlvdXRTdGF0ZSA9IHRoaXMtPmxheW91dFN0YXRlKCk7
CiAKLSAgICBhdXRvIGNvbXB1dGUgPSBbJl0oT3B0aW9uYWw8TGF5b3V0VW5pdD4gdXNlZFdpZHRo
KSB7Ci0gICAgICAgIHJldHVybiBHZW9tZXRyeTo6b3V0T2ZGbG93SG9yaXpvbnRhbEdlb21ldHJ5
KGxheW91dFN0YXRlLCBsYXlvdXRCb3gsIHVzZWRXaWR0aCk7CisgICAgYXV0byBjb21wdXRlID0g
WyZdKFVzZWRIb3Jpem9udGFsVmFsdWVzIHVzZWRWYWx1ZXMpIHsKKyAgICAgICAgcmV0dXJuIEdl
b21ldHJ5OjpvdXRPZkZsb3dIb3Jpem9udGFsR2VvbWV0cnkobGF5b3V0U3RhdGUsIGxheW91dEJv
eCwgdXNlZFZhbHVlcyk7CiAgICAgfTsKIAogICAgIGF1dG8gaG9yaXpvbnRhbEdlb21ldHJ5ID0g
Y29tcHV0ZSh7IH0pOwogICAgIGF1dG8gY29udGFpbmluZ0Jsb2NrV2lkdGggPSBsYXlvdXRTdGF0
ZS5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KCpsYXlvdXRCb3guY29udGFpbmluZ0Jsb2NrKCkpLmNv
bnRlbnRCb3hXaWR0aCgpOwogCiAgICAgaWYgKGF1dG8gbWF4V2lkdGggPSBHZW9tZXRyeTo6Y29t
cHV0ZWRWYWx1ZUlmTm90QXV0byhsYXlvdXRCb3guc3R5bGUoKS5sb2dpY2FsTWF4V2lkdGgoKSwg
Y29udGFpbmluZ0Jsb2NrV2lkdGgpKSB7Ci0gICAgICAgIGF1dG8gbWF4SG9yaXpvbnRhbEdlb21l
dHJ5ID0gY29tcHV0ZShtYXhXaWR0aCk7CisgICAgICAgIGF1dG8gbWF4SG9yaXpvbnRhbEdlb21l
dHJ5ID0gY29tcHV0ZSh7ICptYXhXaWR0aCwgeyB9IH0pOwogICAgICAgICBpZiAoaG9yaXpvbnRh
bEdlb21ldHJ5LndpZHRoQW5kTWFyZ2luLndpZHRoID4gbWF4SG9yaXpvbnRhbEdlb21ldHJ5Lndp
ZHRoQW5kTWFyZ2luLndpZHRoKQogICAgICAgICAgICAgaG9yaXpvbnRhbEdlb21ldHJ5ID0gbWF4
SG9yaXpvbnRhbEdlb21ldHJ5OwogICAgIH0KIAogICAgIGlmIChhdXRvIG1pbldpZHRoID0gR2Vv
bWV0cnk6OmNvbXB1dGVkVmFsdWVJZk5vdEF1dG8obGF5b3V0Qm94LnN0eWxlKCkubG9naWNhbE1p
bldpZHRoKCksIGNvbnRhaW5pbmdCbG9ja1dpZHRoKSkgewotICAgICAgICBhdXRvIG1pbkhvcml6
b250YWxHZW9tZXRyeSA9IGNvbXB1dGUobWluV2lkdGgpOworICAgICAgICBhdXRvIG1pbkhvcml6
b250YWxHZW9tZXRyeSA9IGNvbXB1dGUoeyAqbWluV2lkdGgsIHsgfSB9KTsKICAgICAgICAgaWYg
KGhvcml6b250YWxHZW9tZXRyeS53aWR0aEFuZE1hcmdpbi53aWR0aCA8IG1pbkhvcml6b250YWxH
ZW9tZXRyeS53aWR0aEFuZE1hcmdpbi53aWR0aCkKICAgICAgICAgICAgIGhvcml6b250YWxHZW9t
ZXRyeSA9IG1pbkhvcml6b250YWxHZW9tZXRyeTsKICAgICB9CkBAIC05OCwxOSArOTgsMTkgQEAg
dm9pZCBGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZU91dE9mRmxvd1ZlcnRpY2FsR2VvbWV0cnko
Y29uc3QgQm94JiBsYXlvdXRCb3gpIGMKIHsKICAgICBhdXRvJiBsYXlvdXRTdGF0ZSA9IHRoaXMt
PmxheW91dFN0YXRlKCk7CiAKLSAgICBhdXRvIGNvbXB1dGUgPSBbJl0oT3B0aW9uYWw8TGF5b3V0
VW5pdD4gdXNlZEhlaWdodCkgewotICAgICAgICByZXR1cm4gR2VvbWV0cnk6Om91dE9mRmxvd1Zl
cnRpY2FsR2VvbWV0cnkobGF5b3V0U3RhdGUsIGxheW91dEJveCwgdXNlZEhlaWdodCk7CisgICAg
YXV0byBjb21wdXRlID0gWyZdKFVzZWRWZXJ0aWNhbFZhbHVlcyB1c2VkVmFsdWVzKSB7CisgICAg
ICAgIHJldHVybiBHZW9tZXRyeTo6b3V0T2ZGbG93VmVydGljYWxHZW9tZXRyeShsYXlvdXRTdGF0
ZSwgbGF5b3V0Qm94LCB1c2VkVmFsdWVzKTsKICAgICB9OwogCiAgICAgYXV0byB2ZXJ0aWNhbEdl
b21ldHJ5ID0gY29tcHV0ZSh7IH0pOwogICAgIGlmIChhdXRvIG1heEhlaWdodCA9IEdlb21ldHJ5
Ojpjb21wdXRlZE1heEhlaWdodChsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KSkgewotICAgICAgICBh
dXRvIG1heFZlcnRpY2FsR2VvbWV0cnkgPSBjb21wdXRlKG1heEhlaWdodCk7CisgICAgICAgIGF1
dG8gbWF4VmVydGljYWxHZW9tZXRyeSA9IGNvbXB1dGUoeyAqbWF4SGVpZ2h0IH0pOwogICAgICAg
ICBpZiAodmVydGljYWxHZW9tZXRyeS5oZWlnaHRBbmRNYXJnaW4uaGVpZ2h0ID4gbWF4VmVydGlj
YWxHZW9tZXRyeS5oZWlnaHRBbmRNYXJnaW4uaGVpZ2h0KQogICAgICAgICAgICAgdmVydGljYWxH
ZW9tZXRyeSA9IG1heFZlcnRpY2FsR2VvbWV0cnk7CiAgICAgfQogCiAgICAgaWYgKGF1dG8gbWlu
SGVpZ2h0ID0gR2VvbWV0cnk6OmNvbXB1dGVkTWluSGVpZ2h0KGxheW91dFN0YXRlLCBsYXlvdXRC
b3gpKSB7Ci0gICAgICAgIGF1dG8gbWluVmVydGljYWxHZW9tZXRyeSA9IGNvbXB1dGUobWluSGVp
Z2h0KTsKKyAgICAgICAgYXV0byBtaW5WZXJ0aWNhbEdlb21ldHJ5ID0gY29tcHV0ZSh7ICptaW5I
ZWlnaHQgfSk7CiAgICAgICAgIGlmICh2ZXJ0aWNhbEdlb21ldHJ5LmhlaWdodEFuZE1hcmdpbi5o
ZWlnaHQgPCBtaW5WZXJ0aWNhbEdlb21ldHJ5LmhlaWdodEFuZE1hcmdpbi5oZWlnaHQpCiAgICAg
ICAgICAgICB2ZXJ0aWNhbEdlb21ldHJ5ID0gbWluVmVydGljYWxHZW9tZXRyeTsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dC5oCmluZGV4IGNjYjI3OTBjMmE1
NTU1YzBkMzZiMTQwYzE2ZWU0ODNhYjQ5NTAzMDguLjgyNzBkYThjYzRhZTdiYWZiYzY0YmRkZGQ5
NDk1MjBhZmJlZmYyNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0
aW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4
dC5oCkBAIC03OCwxOSArNzgsMTggQEAgcHJvdGVjdGVkOgogICAgIC8vIFRoaXMgY2xhc3MgaW1w
bGVtZW50cyBnZW5lcmljIHBvc2l0aW9uaW5nIGFuZCBzaXppbmcuCiAgICAgY2xhc3MgR2VvbWV0
cnkgewogICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFZlcnRpY2FsR2VvbWV0cnkgb3V0T2ZG
bG93VmVydGljYWxHZW9tZXRyeShjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYsIE9wdGlv
bmFsPExheW91dFVuaXQ+IHVzZWRIZWlnaHQgPSB7IH0pOwotICAgICAgICBzdGF0aWMgSG9yaXpv
bnRhbEdlb21ldHJ5IG91dE9mRmxvd0hvcml6b250YWxHZW9tZXRyeShMYXlvdXRTdGF0ZSYsIGNv
bnN0IEJveCYsIE9wdGlvbmFsPExheW91dFVuaXQ+IHVzZWRXaWR0aCA9IHsgfSk7CisgICAgICAg
IHN0YXRpYyBWZXJ0aWNhbEdlb21ldHJ5IG91dE9mRmxvd1ZlcnRpY2FsR2VvbWV0cnkoY29uc3Qg
TGF5b3V0U3RhdGUmLCBjb25zdCBCb3gmLCBVc2VkVmVydGljYWxWYWx1ZXMpOworICAgICAgICBz
dGF0aWMgSG9yaXpvbnRhbEdlb21ldHJ5IG91dE9mRmxvd0hvcml6b250YWxHZW9tZXRyeShMYXlv
dXRTdGF0ZSYsIGNvbnN0IEJveCYsIFVzZWRIb3Jpem9udGFsVmFsdWVzKTsKIAotICAgICAgICBz
dGF0aWMgSGVpZ2h0QW5kTWFyZ2luIGZsb2F0aW5nSGVpZ2h0QW5kTWFyZ2luKGNvbnN0IExheW91
dFN0YXRlJiwgY29uc3QgQm94JiwgT3B0aW9uYWw8TGF5b3V0VW5pdD4gdXNlZEhlaWdodCA9IHsg
fSk7Ci0gICAgICAgIHN0YXRpYyBXaWR0aEFuZE1hcmdpbiBmbG9hdGluZ1dpZHRoQW5kTWFyZ2lu
KExheW91dFN0YXRlJiwgY29uc3QgQm94JiwgT3B0aW9uYWw8TGF5b3V0VW5pdD4gdXNlZFdpZHRo
ID0geyB9KTsKKyAgICAgICAgc3RhdGljIEhlaWdodEFuZE1hcmdpbiBmbG9hdGluZ0hlaWdodEFu
ZE1hcmdpbihjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYsIFVzZWRWZXJ0aWNhbFZhbHVl
cyk7CisgICAgICAgIHN0YXRpYyBXaWR0aEFuZE1hcmdpbiBmbG9hdGluZ1dpZHRoQW5kTWFyZ2lu
KExheW91dFN0YXRlJiwgY29uc3QgQm94JiwgVXNlZEhvcml6b250YWxWYWx1ZXMpOwogCi0gICAg
ICAgIHN0YXRpYyBIZWlnaHRBbmRNYXJnaW4gaW5saW5lUmVwbGFjZWRIZWlnaHRBbmRNYXJnaW4o
Y29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBCb3gmLCBPcHRpb25hbDxMYXlvdXRVbml0PiB1c2Vk
SGVpZ2h0ID0geyB9KTsKLSAgICAgICAgc3RhdGljIFdpZHRoQW5kTWFyZ2luIGlubGluZVJlcGxh
Y2VkV2lkdGhBbmRNYXJnaW4oY29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBCb3gmLCBPcHRpb25h
bDxMYXlvdXRVbml0PiB1c2VkV2lkdGggPSB7IH0sIAotICAgICAgICAgICAgT3B0aW9uYWw8TGF5
b3V0VW5pdD4gcHJlY29tcHV0ZWRNYXJnaW5TdGFydCA9IHsgfSwgT3B0aW9uYWw8TGF5b3V0VW5p
dD4gcHJlY29tcHV0ZWRNYXJnaW5FbmQgPSB7IH0pOworICAgICAgICBzdGF0aWMgSGVpZ2h0QW5k
TWFyZ2luIGlubGluZVJlcGxhY2VkSGVpZ2h0QW5kTWFyZ2luKGNvbnN0IExheW91dFN0YXRlJiwg
Y29uc3QgQm94JiwgVXNlZFZlcnRpY2FsVmFsdWVzKTsKKyAgICAgICAgc3RhdGljIFdpZHRoQW5k
TWFyZ2luIGlubGluZVJlcGxhY2VkV2lkdGhBbmRNYXJnaW4oY29uc3QgTGF5b3V0U3RhdGUmLCBj
b25zdCBCb3gmLCBVc2VkSG9yaXpvbnRhbFZhbHVlcyk7CiAKICAgICAgICAgc3RhdGljIExheW91
dFNpemUgaW5GbG93UG9zaXRpb25lZFBvc2l0aW9uT2Zmc2V0KGNvbnN0IExheW91dFN0YXRlJiwg
Y29uc3QgQm94Jik7CiAKLSAgICAgICAgc3RhdGljIEhlaWdodEFuZE1hcmdpbiBjb21wbGljYXRl
ZENhc2VzKGNvbnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94JiwgT3B0aW9uYWw8TGF5b3V0VW5p
dD4gdXNlZEhlaWdodCA9IHsgfSk7CisgICAgICAgIHN0YXRpYyBIZWlnaHRBbmRNYXJnaW4gY29t
cGxpY2F0ZWRDYXNlcyhjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYsIFVzZWRWZXJ0aWNh
bFZhbHVlcyk7CiAgICAgICAgIHN0YXRpYyBMYXlvdXRVbml0IHNocmlua1RvRml0V2lkdGgoTGF5
b3V0U3RhdGUmLCBjb25zdCBCb3gmKTsKIAogICAgICAgICBzdGF0aWMgRWRnZXMgY29tcHV0ZWRC
b3JkZXIoY29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBCb3gmKTsKQEAgLTExMCwxNiArMTA5LDE2
IEBAIHByb3RlY3RlZDoKICAgICAgICAgc3RhdGljIE9wdGlvbmFsPExheW91dFVuaXQ+IGNvbXB1
dGVkSGVpZ2h0VmFsdWUoY29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBCb3gmLCBIZWlnaHRUeXBl
KTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHN0YXRpYyBWZXJ0aWNhbEdlb21ldHJ5IG91dE9m
Rmxvd1JlcGxhY2VkVmVydGljYWxHZW9tZXRyeShjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJv
eCYsIE9wdGlvbmFsPExheW91dFVuaXQ+IHVzZWRIZWlnaHQgPSB7IH0pOwotICAgICAgICBzdGF0
aWMgSG9yaXpvbnRhbEdlb21ldHJ5IG91dE9mRmxvd1JlcGxhY2VkSG9yaXpvbnRhbEdlb21ldHJ5
KGNvbnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94JiwgT3B0aW9uYWw8TGF5b3V0VW5pdD4gdXNl
ZFdpZHRoID0geyB9KTsKKyAgICAgICAgc3RhdGljIFZlcnRpY2FsR2VvbWV0cnkgb3V0T2ZGbG93
UmVwbGFjZWRWZXJ0aWNhbEdlb21ldHJ5KGNvbnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94Jiwg
VXNlZFZlcnRpY2FsVmFsdWVzKTsKKyAgICAgICAgc3RhdGljIEhvcml6b250YWxHZW9tZXRyeSBv
dXRPZkZsb3dSZXBsYWNlZEhvcml6b250YWxHZW9tZXRyeShjb25zdCBMYXlvdXRTdGF0ZSYsIGNv
bnN0IEJveCYsIFVzZWRIb3Jpem9udGFsVmFsdWVzKTsKIAotICAgICAgICBzdGF0aWMgVmVydGlj
YWxHZW9tZXRyeSBvdXRPZkZsb3dOb25SZXBsYWNlZFZlcnRpY2FsR2VvbWV0cnkoY29uc3QgTGF5
b3V0U3RhdGUmLCBjb25zdCBCb3gmLCBPcHRpb25hbDxMYXlvdXRVbml0PiB1c2VkSGVpZ2h0ID0g
eyB9KTsKLSAgICAgICAgc3RhdGljIEhvcml6b250YWxHZW9tZXRyeSBvdXRPZkZsb3dOb25SZXBs
YWNlZEhvcml6b250YWxHZW9tZXRyeShMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYsIE9wdGlvbmFs
PExheW91dFVuaXQ+IHVzZWRXaWR0aCA9IHsgfSk7CisgICAgICAgIHN0YXRpYyBWZXJ0aWNhbEdl
b21ldHJ5IG91dE9mRmxvd05vblJlcGxhY2VkVmVydGljYWxHZW9tZXRyeShjb25zdCBMYXlvdXRT
dGF0ZSYsIGNvbnN0IEJveCYsIFVzZWRWZXJ0aWNhbFZhbHVlcyk7CisgICAgICAgIHN0YXRpYyBI
b3Jpem9udGFsR2VvbWV0cnkgb3V0T2ZGbG93Tm9uUmVwbGFjZWRIb3Jpem9udGFsR2VvbWV0cnko
TGF5b3V0U3RhdGUmLCBjb25zdCBCb3gmLCBVc2VkSG9yaXpvbnRhbFZhbHVlcyk7CiAKLSAgICAg
ICAgc3RhdGljIEhlaWdodEFuZE1hcmdpbiBmbG9hdGluZ1JlcGxhY2VkSGVpZ2h0QW5kTWFyZ2lu
KGNvbnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94JiwgT3B0aW9uYWw8TGF5b3V0VW5pdD4gdXNl
ZEhlaWdodCA9IHsgfSk7Ci0gICAgICAgIHN0YXRpYyBXaWR0aEFuZE1hcmdpbiBmbG9hdGluZ1Jl
cGxhY2VkV2lkdGhBbmRNYXJnaW4oY29uc3QgTGF5b3V0U3RhdGUmLCBjb25zdCBCb3gmLCBPcHRp
b25hbDxMYXlvdXRVbml0PiB1c2VkV2lkdGggPSB7IH0pOworICAgICAgICBzdGF0aWMgSGVpZ2h0
QW5kTWFyZ2luIGZsb2F0aW5nUmVwbGFjZWRIZWlnaHRBbmRNYXJnaW4oY29uc3QgTGF5b3V0U3Rh
dGUmLCBjb25zdCBCb3gmLCBVc2VkVmVydGljYWxWYWx1ZXMpOworICAgICAgICBzdGF0aWMgV2lk
dGhBbmRNYXJnaW4gZmxvYXRpbmdSZXBsYWNlZFdpZHRoQW5kTWFyZ2luKGNvbnN0IExheW91dFN0
YXRlJiwgY29uc3QgQm94JiwgVXNlZEhvcml6b250YWxWYWx1ZXMpOwogCi0gICAgICAgIHN0YXRp
YyBXaWR0aEFuZE1hcmdpbiBmbG9hdGluZ05vblJlcGxhY2VkV2lkdGhBbmRNYXJnaW4oTGF5b3V0
U3RhdGUmLCBjb25zdCBCb3gmLCBPcHRpb25hbDxMYXlvdXRVbml0PiB1c2VkV2lkdGggPSB7IH0p
OworICAgICAgICBzdGF0aWMgV2lkdGhBbmRNYXJnaW4gZmxvYXRpbmdOb25SZXBsYWNlZFdpZHRo
QW5kTWFyZ2luKExheW91dFN0YXRlJiwgY29uc3QgQm94JiwgVXNlZEhvcml6b250YWxWYWx1ZXMp
OwogICAgIH07CiAKICAgICBjbGFzcyBRdWlya3MgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwCmluZGV4IGY4MDljMzZhMDVmOWFh
ZjkzOTAxZDIyYWY3MWE1Njk1YWIxN2ZkMTYuLmM4NDYxMjI4ZjQxMDM5Y2RiOTU4MjA2ZjZlOGY5
NWQ5ZWExOGM3ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5n
Q29udGV4dEdlb21ldHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGlu
Z0NvbnRleHRHZW9tZXRyeS5jcHAKQEAgLTI1MSw3ICsyNTEsNyBAQCBMYXlvdXRVbml0IEZvcm1h
dHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6c2hyaW5rVG9GaXRXaWR0aChMYXlvdXRTdGF0ZSYgbGF5
b3V0U3RhdAogICAgIHJldHVybiBzdGQ6Om1pbihzdGQ6Om1heChpbnN0cmluc2ljV2lkdGhDb25z
dHJhaW50cy5taW5pbXVtLCBhdmFpbGFibGVXaWR0aCksIGluc3RyaW5zaWNXaWR0aENvbnN0cmFp
bnRzLm1heGltdW0pOwogfQogCi1WZXJ0aWNhbEdlb21ldHJ5IEZvcm1hdHRpbmdDb250ZXh0OjpH
ZW9tZXRyeTo6b3V0T2ZGbG93Tm9uUmVwbGFjZWRWZXJ0aWNhbEdlb21ldHJ5KGNvbnN0IExheW91
dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgQm94JiBsYXlvdXRCb3gsIE9wdGlvbmFsPExheW91
dFVuaXQ+IHVzZWRIZWlnaHQpCitWZXJ0aWNhbEdlb21ldHJ5IEZvcm1hdHRpbmdDb250ZXh0OjpH
ZW9tZXRyeTo6b3V0T2ZGbG93Tm9uUmVwbGFjZWRWZXJ0aWNhbEdlb21ldHJ5KGNvbnN0IExheW91
dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgQm94JiBsYXlvdXRCb3gsIFVzZWRWZXJ0aWNhbFZh
bHVlcyB1c2VkVmFsdWVzKQogewogICAgIEFTU0VSVChsYXlvdXRCb3guaXNPdXRPZkZsb3dQb3Np
dGlvbmVkKCkgJiYgIWxheW91dEJveC5yZXBsYWNlZCgpKTsKIApAQCAtMjg4LDcgKzI4OCw3IEBA
IFZlcnRpY2FsR2VvbWV0cnkgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dO
b25SZXBsYWNlZFZlcnRpY2FsR2VvbWV0CiAgICAgYXV0byB0b3AgPSBjb21wdXRlZFZhbHVlSWZO
b3RBdXRvKHN0eWxlLmxvZ2ljYWxUb3AoKSwgY29udGFpbmluZ0Jsb2NrV2lkdGgpOwogICAgIGF1
dG8gYm90dG9tID0gY29tcHV0ZWRWYWx1ZUlmTm90QXV0byhzdHlsZS5sb2dpY2FsQm90dG9tKCks
IGNvbnRhaW5pbmdCbG9ja1dpZHRoKTsKICAgICBhdXRvIGlzU3RhdGljYWxseVBvc2l0aW9uZWQg
PSAhdG9wICYmICFib3R0b207Ci0gICAgYXV0byBoZWlnaHQgPSB1c2VkSGVpZ2h0ID8gdXNlZEhl
aWdodC52YWx1ZSgpIDogY29tcHV0ZWRIZWlnaHRWYWx1ZShsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94
LCBIZWlnaHRUeXBlOjpOb3JtYWwpOworICAgIGF1dG8gaGVpZ2h0ID0gdXNlZFZhbHVlcy5oZWln
aHQgPyB1c2VkVmFsdWVzLmhlaWdodC52YWx1ZSgpIDogY29tcHV0ZWRIZWlnaHRWYWx1ZShsYXlv
dXRTdGF0ZSwgbGF5b3V0Qm94LCBIZWlnaHRUeXBlOjpOb3JtYWwpOwogICAgIGF1dG8gY29tcHV0
ZWRWZXJ0aWNhbE1hcmdpbiA9IEdlb21ldHJ5Ojpjb21wdXRlZFZlcnRpY2FsTWFyZ2luKGxheW91
dFN0YXRlLCBsYXlvdXRCb3gpOwogICAgIFVzZWRWZXJ0aWNhbE1hcmdpbjo6Tm9uQ29sbGFwc2Vk
VmFsdWVzIHVzZWRWZXJ0aWNhbE1hcmdpbjsgCiAgICAgYXV0byBwYWRkaW5nVG9wID0gZGlzcGxh
eUJveC5wYWRkaW5nVG9wKCkudmFsdWVPcigwKTsKQEAgLTM3Niw3ICszNzYsNyBAQCBWZXJ0aWNh
bEdlb21ldHJ5IEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6b3V0T2ZGbG93Tm9uUmVwbGFj
ZWRWZXJ0aWNhbEdlb21ldAogICAgIHJldHVybiB7ICp0b3AsICpib3R0b20sIHsgY29udGVudEhl
aWdodCgpLCB1c2VkVmVydGljYWxNYXJnaW4gfSB9OwogfQogCi1Ib3Jpem9udGFsR2VvbWV0cnkg
Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dOb25SZXBsYWNlZEhvcml6b250
YWxHZW9tZXRyeShMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEJveCYgbGF5b3V0Qm94
LCBPcHRpb25hbDxMYXlvdXRVbml0PiB1c2VkV2lkdGgpCitIb3Jpem9udGFsR2VvbWV0cnkgRm9y
bWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dOb25SZXBsYWNlZEhvcml6b250YWxH
ZW9tZXRyeShMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEJveCYgbGF5b3V0Qm94LCBV
c2VkSG9yaXpvbnRhbFZhbHVlcyB1c2VkVmFsdWVzKQogewogICAgIEFTU0VSVChsYXlvdXRCb3gu
aXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkgJiYgIWxheW91dEJveC5yZXBsYWNlZCgpKTsKICAgICAK
QEAgLTQxNiw3ICs0MTYsNyBAQCBIb3Jpem9udGFsR2VvbWV0cnkgRm9ybWF0dGluZ0NvbnRleHQ6
Okdlb21ldHJ5OjpvdXRPZkZsb3dOb25SZXBsYWNlZEhvcml6b250YWxHZQogICAgIGF1dG8gbGVm
dCA9IGNvbXB1dGVkVmFsdWVJZk5vdEF1dG8oc3R5bGUubG9naWNhbExlZnQoKSwgY29udGFpbmlu
Z0Jsb2NrV2lkdGgpOwogICAgIGF1dG8gcmlnaHQgPSBjb21wdXRlZFZhbHVlSWZOb3RBdXRvKHN0
eWxlLmxvZ2ljYWxSaWdodCgpLCBjb250YWluaW5nQmxvY2tXaWR0aCk7CiAgICAgYXV0byBpc1N0
YXRpY2FsbHlQb3NpdGlvbmVkID0gIWxlZnQgJiYgIXJpZ2h0OwotICAgIGF1dG8gd2lkdGggPSBj
b21wdXRlZFZhbHVlSWZOb3RBdXRvKHVzZWRXaWR0aCA/IExlbmd0aCB7IHVzZWRXaWR0aC52YWx1
ZSgpLCBGaXhlZCB9IDogc3R5bGUubG9naWNhbFdpZHRoKCksIGNvbnRhaW5pbmdCbG9ja1dpZHRo
KTsKKyAgICBhdXRvIHdpZHRoID0gY29tcHV0ZWRWYWx1ZUlmTm90QXV0byh1c2VkVmFsdWVzLndp
ZHRoID8gTGVuZ3RoIHsgdXNlZFZhbHVlcy53aWR0aC52YWx1ZSgpLCBGaXhlZCB9IDogc3R5bGUu
bG9naWNhbFdpZHRoKCksIGNvbnRhaW5pbmdCbG9ja1dpZHRoKTsKICAgICBhdXRvIGNvbXB1dGVk
SG9yaXpvbnRhbE1hcmdpbiA9IEdlb21ldHJ5Ojpjb21wdXRlZEhvcml6b250YWxNYXJnaW4obGF5
b3V0U3RhdGUsIGxheW91dEJveCk7CiAgICAgVXNlZEhvcml6b250YWxNYXJnaW4gdXNlZEhvcml6
b250YWxNYXJnaW47CiAgICAgYXV0byBwYWRkaW5nTGVmdCA9IGRpc3BsYXlCb3gucGFkZGluZ0xl
ZnQoKS52YWx1ZU9yKDApOwpAQCAtNTMwLDcgKzUzMCw3IEBAIEhvcml6b250YWxHZW9tZXRyeSBG
b3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Om91dE9mRmxvd05vblJlcGxhY2VkSG9yaXpvbnRh
bEdlCiAgICAgcmV0dXJuIHsgKmxlZnQsICpyaWdodCwgeyBjb250ZW50V2lkdGgoKSwgdXNlZEhv
cml6b250YWxNYXJnaW4sIGNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbiB9IH07CiB9CiAKLVZlcnRp
Y2FsR2VvbWV0cnkgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dSZXBsYWNl
ZFZlcnRpY2FsR2VvbWV0cnkoY29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBC
b3gmIGxheW91dEJveCwgT3B0aW9uYWw8TGF5b3V0VW5pdD4gdXNlZEhlaWdodCkKK1ZlcnRpY2Fs
R2VvbWV0cnkgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dSZXBsYWNlZFZl
cnRpY2FsR2VvbWV0cnkoY29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBCb3gm
IGxheW91dEJveCwgVXNlZFZlcnRpY2FsVmFsdWVzIHVzZWRWYWx1ZXMpCiB7CiAgICAgQVNTRVJU
KGxheW91dEJveC5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSAmJiBsYXlvdXRCb3gucmVwbGFjZWQo
KSk7CiAKQEAgLTU1Myw3ICs1NTMsNyBAQCBWZXJ0aWNhbEdlb21ldHJ5IEZvcm1hdHRpbmdDb250
ZXh0OjpHZW9tZXRyeTo6b3V0T2ZGbG93UmVwbGFjZWRWZXJ0aWNhbEdlb21ldHJ5KAogICAgIGF1
dG8gdG9wID0gY29tcHV0ZWRWYWx1ZUlmTm90QXV0byhzdHlsZS5sb2dpY2FsVG9wKCksIGNvbnRh
aW5pbmdCbG9ja1dpZHRoKTsKICAgICBhdXRvIGJvdHRvbSA9IGNvbXB1dGVkVmFsdWVJZk5vdEF1
dG8oc3R5bGUubG9naWNhbEJvdHRvbSgpLCBjb250YWluaW5nQmxvY2tXaWR0aCk7CiAgICAgYXV0
byBpc1N0YXRpY2FsbHlQb3NpdGlvbmVkID0gIXRvcCAmJiAhYm90dG9tOwotICAgIGF1dG8gaGVp
Z2h0ID0gaW5saW5lUmVwbGFjZWRIZWlnaHRBbmRNYXJnaW4obGF5b3V0U3RhdGUsIGxheW91dEJv
eCwgdXNlZEhlaWdodCkuaGVpZ2h0OworICAgIGF1dG8gaGVpZ2h0ID0gaW5saW5lUmVwbGFjZWRI
ZWlnaHRBbmRNYXJnaW4obGF5b3V0U3RhdGUsIGxheW91dEJveCwgdXNlZFZhbHVlcykuaGVpZ2h0
OwogICAgIGF1dG8gY29tcHV0ZWRWZXJ0aWNhbE1hcmdpbiA9IEdlb21ldHJ5Ojpjb21wdXRlZFZl
cnRpY2FsTWFyZ2luKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpOwogICAgIE9wdGlvbmFsPExheW91
dFVuaXQ+IHVzZWRNYXJnaW5CZWZvcmUgPSBjb21wdXRlZFZlcnRpY2FsTWFyZ2luLmJlZm9yZTsK
ICAgICBPcHRpb25hbDxMYXlvdXRVbml0PiB1c2VkTWFyZ2luQWZ0ZXIgPSBjb21wdXRlZFZlcnRp
Y2FsTWFyZ2luLmFmdGVyOwpAQCAtNjE0LDcgKzYxNCw3IEBAIFZlcnRpY2FsR2VvbWV0cnkgRm9y
bWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dSZXBsYWNlZFZlcnRpY2FsR2VvbWV0
cnkoCiAgICAgcmV0dXJuIHsgKnRvcCwgKmJvdHRvbSwgeyBoZWlnaHQsIHsgKnVzZWRNYXJnaW5C
ZWZvcmUsICp1c2VkTWFyZ2luQWZ0ZXIgfSB9IH07CiB9CiAKLUhvcml6b250YWxHZW9tZXRyeSBG
b3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Om91dE9mRmxvd1JlcGxhY2VkSG9yaXpvbnRhbEdl
b21ldHJ5KGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgQm94JiBsYXlvdXRC
b3gsIE9wdGlvbmFsPExheW91dFVuaXQ+IHVzZWRXaWR0aCkKK0hvcml6b250YWxHZW9tZXRyeSBG
b3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Om91dE9mRmxvd1JlcGxhY2VkSG9yaXpvbnRhbEdl
b21ldHJ5KGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgQm94JiBsYXlvdXRC
b3gsIFVzZWRIb3Jpem9udGFsVmFsdWVzIHVzZWRWYWx1ZXMpCiB7CiAgICAgQVNTRVJUKGxheW91
dEJveC5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSAmJiBsYXlvdXRCb3gucmVwbGFjZWQoKSk7CiAK
QEAgLTY0NSw3ICs2NDUsNyBAQCBIb3Jpem9udGFsR2VvbWV0cnkgRm9ybWF0dGluZ0NvbnRleHQ6
Okdlb21ldHJ5OjpvdXRPZkZsb3dSZXBsYWNlZEhvcml6b250YWxHZW9tZQogICAgIGF1dG8gY29t
cHV0ZWRIb3Jpem9udGFsTWFyZ2luID0gR2VvbWV0cnk6OmNvbXB1dGVkSG9yaXpvbnRhbE1hcmdp
bihsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KTsKICAgICBPcHRpb25hbDxMYXlvdXRVbml0PiB1c2Vk
TWFyZ2luU3RhcnQgPSBjb21wdXRlZEhvcml6b250YWxNYXJnaW4uc3RhcnQ7CiAgICAgT3B0aW9u
YWw8TGF5b3V0VW5pdD4gdXNlZE1hcmdpbkVuZCA9IGNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbi5l
bmQ7Ci0gICAgYXV0byB3aWR0aCA9IGlubGluZVJlcGxhY2VkV2lkdGhBbmRNYXJnaW4obGF5b3V0
U3RhdGUsIGxheW91dEJveCwgdXNlZFdpZHRoKS53aWR0aDsKKyAgICBhdXRvIHdpZHRoID0gaW5s
aW5lUmVwbGFjZWRXaWR0aEFuZE1hcmdpbihsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94LCB1c2VkVmFs
dWVzKS53aWR0aDsKICAgICBhdXRvIHBhZGRpbmdMZWZ0ID0gZGlzcGxheUJveC5wYWRkaW5nTGVm
dCgpLnZhbHVlT3IoMCk7CiAgICAgYXV0byBwYWRkaW5nUmlnaHQgPSBkaXNwbGF5Qm94LnBhZGRp
bmdSaWdodCgpLnZhbHVlT3IoMCk7CiAgICAgYXV0byBib3JkZXJMZWZ0ID0gZGlzcGxheUJveC5i
b3JkZXJMZWZ0KCk7CkBAIC03MjIsNyArNzIyLDcgQEAgSG9yaXpvbnRhbEdlb21ldHJ5IEZvcm1h
dHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6b3V0T2ZGbG93UmVwbGFjZWRIb3Jpem9udGFsR2VvbWUK
ICAgICByZXR1cm4geyAqbGVmdCwgKnJpZ2h0LCB7IHdpZHRoLCB7ICp1c2VkTWFyZ2luU3RhcnQs
ICp1c2VkTWFyZ2luRW5kIH0sIGNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbiB9IH07CiB9CiAKLUhl
aWdodEFuZE1hcmdpbiBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmNvbXBsaWNhdGVkQ2Fz
ZXMoY29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBCb3gmIGxheW91dEJveCwg
T3B0aW9uYWw8TGF5b3V0VW5pdD4gdXNlZEhlaWdodCkKK0hlaWdodEFuZE1hcmdpbiBGb3JtYXR0
aW5nQ29udGV4dDo6R2VvbWV0cnk6OmNvbXBsaWNhdGVkQ2FzZXMoY29uc3QgTGF5b3V0U3RhdGUm
IGxheW91dFN0YXRlLCBjb25zdCBCb3gmIGxheW91dEJveCwgVXNlZFZlcnRpY2FsVmFsdWVzIHVz
ZWRWYWx1ZXMpCiB7CiAgICAgQVNTRVJUKCFsYXlvdXRCb3gucmVwbGFjZWQoKSk7CiAgICAgLy8g
VE9ETzogVXNlIGNvbXBsaWNhdGVkLWNhc2UgZm9yIGRvY3VtZW50IHJlbmRlcmVyIGZvciBub3cg
KHNlZSBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5GbG93SGVpZ2h0QW5kTWFy
Z2luKS4KQEAgLTczNyw3ICs3MzcsNyBAQCBIZWlnaHRBbmRNYXJnaW4gRm9ybWF0dGluZ0NvbnRl
eHQ6Okdlb21ldHJ5Ojpjb21wbGljYXRlZENhc2VzKGNvbnN0IExheW91dFN0YXRlJgogICAgIC8v
IDEuIElmICdtYXJnaW4tdG9wJywgb3IgJ21hcmdpbi1ib3R0b20nIGFyZSAnYXV0bycsIHRoZWly
IHVzZWQgdmFsdWUgaXMgMC4KICAgICAvLyAyLiBJZiAnaGVpZ2h0JyBpcyAnYXV0bycsIHRoZSBo
ZWlnaHQgZGVwZW5kcyBvbiB0aGUgZWxlbWVudCdzIGRlc2NlbmRhbnRzIHBlciAxMC42LjcuCiAK
LSAgICBhdXRvIGhlaWdodCA9IHVzZWRIZWlnaHQgPyB1c2VkSGVpZ2h0LnZhbHVlKCkgOiBjb21w
dXRlZEhlaWdodFZhbHVlKGxheW91dFN0YXRlLCBsYXlvdXRCb3gsIEhlaWdodFR5cGU6Ok5vcm1h
bCk7CisgICAgYXV0byBoZWlnaHQgPSB1c2VkVmFsdWVzLmhlaWdodCA/IHVzZWRWYWx1ZXMuaGVp
Z2h0LnZhbHVlKCkgOiBjb21wdXRlZEhlaWdodFZhbHVlKGxheW91dFN0YXRlLCBsYXlvdXRCb3gs
IEhlaWdodFR5cGU6Ok5vcm1hbCk7CiAgICAgYXV0byBjb21wdXRlZFZlcnRpY2FsTWFyZ2luID0g
R2VvbWV0cnk6OmNvbXB1dGVkVmVydGljYWxNYXJnaW4obGF5b3V0U3RhdGUsIGxheW91dEJveCk7
CiAgICAgLy8gIzEKICAgICBhdXRvIHVzZWRWZXJ0aWNhbE1hcmdpbiA9IFVzZWRWZXJ0aWNhbE1h
cmdpbjo6Tm9uQ29sbGFwc2VkVmFsdWVzIHsgY29tcHV0ZWRWZXJ0aWNhbE1hcmdpbi5iZWZvcmUu
dmFsdWVPcigwKSwgY29tcHV0ZWRWZXJ0aWNhbE1hcmdpbi5hZnRlci52YWx1ZU9yKDApIH07IApA
QCAtNzUzLDcgKzc1Myw3IEBAIEhlaWdodEFuZE1hcmdpbiBGb3JtYXR0aW5nQ29udGV4dDo6R2Vv
bWV0cnk6OmNvbXBsaWNhdGVkQ2FzZXMoY29uc3QgTGF5b3V0U3RhdGUmCiAgICAgcmV0dXJuIEhl
aWdodEFuZE1hcmdpbiB7ICpoZWlnaHQsIHVzZWRWZXJ0aWNhbE1hcmdpbiB9OwogfQogCi1XaWR0
aEFuZE1hcmdpbiBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmZsb2F0aW5nTm9uUmVwbGFj
ZWRXaWR0aEFuZE1hcmdpbihMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEJveCYgbGF5
b3V0Qm94LCBPcHRpb25hbDxMYXlvdXRVbml0PiB1c2VkV2lkdGgpCitXaWR0aEFuZE1hcmdpbiBG
b3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmZsb2F0aW5nTm9uUmVwbGFjZWRXaWR0aEFuZE1h
cmdpbihMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEJveCYgbGF5b3V0Qm94LCBVc2Vk
SG9yaXpvbnRhbFZhbHVlcyB1c2VkVmFsdWVzKQogewogICAgIEFTU0VSVChsYXlvdXRCb3guaXNG
bG9hdGluZ1Bvc2l0aW9uZWQoKSAmJiAhbGF5b3V0Qm94LnJlcGxhY2VkKCkpOwogCkBAIC03Njks
NyArNzY5LDcgQEAgV2lkdGhBbmRNYXJnaW4gRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5Ojpm
bG9hdGluZ05vblJlcGxhY2VkV2lkdGhBbmRNYXJnaW4oTGEKICAgICAvLyAjMQogICAgIGF1dG8g
dXNlZEhvcml6b250YWxsTWFyZ2luID0gVXNlZEhvcml6b250YWxNYXJnaW4geyBjb21wdXRlZEhv
cml6b250YWxNYXJnaW4uc3RhcnQudmFsdWVPcigwKSwgY29tcHV0ZWRIb3Jpem9udGFsTWFyZ2lu
LmVuZC52YWx1ZU9yKDApIH07CiAgICAgLy8gIzIKLSAgICBhdXRvIHdpZHRoID0gY29tcHV0ZWRW
YWx1ZUlmTm90QXV0byh1c2VkV2lkdGggPyBMZW5ndGggeyB1c2VkV2lkdGgudmFsdWUoKSwgRml4
ZWQgfSA6IGxheW91dEJveC5zdHlsZSgpLmxvZ2ljYWxXaWR0aCgpLCBjb250YWluaW5nQmxvY2tX
aWR0aCk7CisgICAgYXV0byB3aWR0aCA9IGNvbXB1dGVkVmFsdWVJZk5vdEF1dG8odXNlZFZhbHVl
cy53aWR0aCA/IExlbmd0aCB7IHVzZWRWYWx1ZXMud2lkdGgudmFsdWUoKSwgRml4ZWQgfSA6IGxh
eW91dEJveC5zdHlsZSgpLmxvZ2ljYWxXaWR0aCgpLCBjb250YWluaW5nQmxvY2tXaWR0aCk7CiAg
ICAgaWYgKCF3aWR0aCkKICAgICAgICAgd2lkdGggPSBzaHJpbmtUb0ZpdFdpZHRoKGxheW91dFN0
YXRlLCBsYXlvdXRCb3gpOwogCkBAIC03NzcsMTcgKzc3NywxNyBAQCBXaWR0aEFuZE1hcmdpbiBG
b3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmZsb2F0aW5nTm9uUmVwbGFjZWRXaWR0aEFuZE1h
cmdpbihMYQogICAgIHJldHVybiBXaWR0aEFuZE1hcmdpbiB7ICp3aWR0aCwgdXNlZEhvcml6b250
YWxsTWFyZ2luLCBjb21wdXRlZEhvcml6b250YWxNYXJnaW4gfTsKIH0KIAotSGVpZ2h0QW5kTWFy
Z2luIEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6ZmxvYXRpbmdSZXBsYWNlZEhlaWdodEFu
ZE1hcmdpbihjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEJveCYgbGF5b3V0
Qm94LCBPcHRpb25hbDxMYXlvdXRVbml0PiB1c2VkSGVpZ2h0KQorSGVpZ2h0QW5kTWFyZ2luIEZv
cm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6ZmxvYXRpbmdSZXBsYWNlZEhlaWdodEFuZE1hcmdp
bihjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEJveCYgbGF5b3V0Qm94LCBV
c2VkVmVydGljYWxWYWx1ZXMgdXNlZFZhbHVlcykKIHsKICAgICBBU1NFUlQobGF5b3V0Qm94Lmlz
RmxvYXRpbmdQb3NpdGlvbmVkKCkgJiYgbGF5b3V0Qm94LnJlcGxhY2VkKCkpOwogCiAgICAgLy8g
MTAuNi4yIElubGluZSByZXBsYWNlZCBlbGVtZW50cywgYmxvY2stbGV2ZWwgcmVwbGFjZWQgZWxl
bWVudHMgaW4gbm9ybWFsIGZsb3csICdpbmxpbmUtYmxvY2snCiAgICAgLy8gcmVwbGFjZWQgZWxl
bWVudHMgaW4gbm9ybWFsIGZsb3cgYW5kIGZsb2F0aW5nIHJlcGxhY2VkIGVsZW1lbnRzCiAgICAg
TE9HX1dJVEhfU1RSRUFNKEZvcm1hdHRpbmdDb250ZXh0TGF5b3V0LCBzdHJlYW0gPDwgIltIZWln
aHRdW01hcmdpbl0gLT4gZmxvYXRpbmcgcmVwbGFjZWQgLT4gcmVkaXJlY3RlZCB0byBpbmxpbmUg
cmVwbGFjZWQiKTsKLSAgICByZXR1cm4gaW5saW5lUmVwbGFjZWRIZWlnaHRBbmRNYXJnaW4obGF5
b3V0U3RhdGUsIGxheW91dEJveCwgdXNlZEhlaWdodCk7CisgICAgcmV0dXJuIGlubGluZVJlcGxh
Y2VkSGVpZ2h0QW5kTWFyZ2luKGxheW91dFN0YXRlLCBsYXlvdXRCb3gsIHVzZWRWYWx1ZXMpOwog
fQogCi1XaWR0aEFuZE1hcmdpbiBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmZsb2F0aW5n
UmVwbGFjZWRXaWR0aEFuZE1hcmdpbihjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNv
bnN0IEJveCYgbGF5b3V0Qm94LCBPcHRpb25hbDxMYXlvdXRVbml0PiB1c2VkV2lkdGgpCitXaWR0
aEFuZE1hcmdpbiBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmZsb2F0aW5nUmVwbGFjZWRX
aWR0aEFuZE1hcmdpbihjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEJveCYg
bGF5b3V0Qm94LCBVc2VkSG9yaXpvbnRhbFZhbHVlcyB1c2VkVmFsdWVzKQogewogICAgIEFTU0VS
VChsYXlvdXRCb3guaXNGbG9hdGluZ1Bvc2l0aW9uZWQoKSAmJiBsYXlvdXRCb3gucmVwbGFjZWQo
KSk7CiAKQEAgLTc5OCw0NiArNzk4LDQ2IEBAIFdpZHRoQW5kTWFyZ2luIEZvcm1hdHRpbmdDb250
ZXh0OjpHZW9tZXRyeTo6ZmxvYXRpbmdSZXBsYWNlZFdpZHRoQW5kTWFyZ2luKGNvbnN0CiAgICAg
YXV0byBjb21wdXRlZEhvcml6b250YWxNYXJnaW4gPSBHZW9tZXRyeTo6Y29tcHV0ZWRIb3Jpem9u
dGFsTWFyZ2luKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpOwogCiAgICAgTE9HX1dJVEhfU1RSRUFN
KEZvcm1hdHRpbmdDb250ZXh0TGF5b3V0LCBzdHJlYW0gPDwgIltIZWlnaHRdW01hcmdpbl0gLT4g
ZmxvYXRpbmcgcmVwbGFjZWQgLT4gcmVkaXJlY3RlZCB0byBpbmxpbmUgcmVwbGFjZWQiKTsKLSAg
ICByZXR1cm4gaW5saW5lUmVwbGFjZWRXaWR0aEFuZE1hcmdpbihsYXlvdXRTdGF0ZSwgbGF5b3V0
Qm94LCB1c2VkV2lkdGgsIGNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbi5zdGFydCwgY29tcHV0ZWRI
b3Jpem9udGFsTWFyZ2luLmVuZCk7CisgICAgcmV0dXJuIGlubGluZVJlcGxhY2VkV2lkdGhBbmRN
YXJnaW4obGF5b3V0U3RhdGUsIGxheW91dEJveCwgeyB1c2VkVmFsdWVzLndpZHRoLCBVc2VkSG9y
aXpvbnRhbE1hcmdpbiB7IGNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbi5zdGFydC52YWx1ZU9yKDAp
LCBjb21wdXRlZEhvcml6b250YWxNYXJnaW4uZW5kLnZhbHVlT3IoMCkgfSB9KTsKIH0KIAotVmVy
dGljYWxHZW9tZXRyeSBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Om91dE9mRmxvd1ZlcnRp
Y2FsR2VvbWV0cnkoY29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBCb3gmIGxh
eW91dEJveCwgT3B0aW9uYWw8TGF5b3V0VW5pdD4gdXNlZEhlaWdodCkKK1ZlcnRpY2FsR2VvbWV0
cnkgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dWZXJ0aWNhbEdlb21ldHJ5
KGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgQm94JiBsYXlvdXRCb3gsIFVz
ZWRWZXJ0aWNhbFZhbHVlcyB1c2VkVmFsdWVzKQogewogICAgIEFTU0VSVChsYXlvdXRCb3guaXNP
dXRPZkZsb3dQb3NpdGlvbmVkKCkpOwogCiAgICAgaWYgKCFsYXlvdXRCb3gucmVwbGFjZWQoKSkK
LSAgICAgICAgcmV0dXJuIG91dE9mRmxvd05vblJlcGxhY2VkVmVydGljYWxHZW9tZXRyeShsYXlv
dXRTdGF0ZSwgbGF5b3V0Qm94LCB1c2VkSGVpZ2h0KTsKLSAgICByZXR1cm4gb3V0T2ZGbG93UmVw
bGFjZWRWZXJ0aWNhbEdlb21ldHJ5KGxheW91dFN0YXRlLCBsYXlvdXRCb3gsIHVzZWRIZWlnaHQp
OworICAgICAgICByZXR1cm4gb3V0T2ZGbG93Tm9uUmVwbGFjZWRWZXJ0aWNhbEdlb21ldHJ5KGxh
eW91dFN0YXRlLCBsYXlvdXRCb3gsIHVzZWRWYWx1ZXMpOworICAgIHJldHVybiBvdXRPZkZsb3dS
ZXBsYWNlZFZlcnRpY2FsR2VvbWV0cnkobGF5b3V0U3RhdGUsIGxheW91dEJveCwgdXNlZFZhbHVl
cyk7CiB9CiAKLUhvcml6b250YWxHZW9tZXRyeSBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6
Om91dE9mRmxvd0hvcml6b250YWxHZW9tZXRyeShMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNv
bnN0IEJveCYgbGF5b3V0Qm94LCBPcHRpb25hbDxMYXlvdXRVbml0PiB1c2VkV2lkdGgpCitIb3Jp
em9udGFsR2VvbWV0cnkgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dIb3Jp
em9udGFsR2VvbWV0cnkoTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBCb3gmIGxheW91
dEJveCwgVXNlZEhvcml6b250YWxWYWx1ZXMgdXNlZFZhbHVlcykKIHsKICAgICBBU1NFUlQobGF5
b3V0Qm94LmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpKTsKIAogICAgIGlmICghbGF5b3V0Qm94LnJl
cGxhY2VkKCkpCi0gICAgICAgIHJldHVybiBvdXRPZkZsb3dOb25SZXBsYWNlZEhvcml6b250YWxH
ZW9tZXRyeShsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94LCB1c2VkV2lkdGgpOwotICAgIHJldHVybiBv
dXRPZkZsb3dSZXBsYWNlZEhvcml6b250YWxHZW9tZXRyeShsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94
LCB1c2VkV2lkdGgpOworICAgICAgICByZXR1cm4gb3V0T2ZGbG93Tm9uUmVwbGFjZWRIb3Jpem9u
dGFsR2VvbWV0cnkobGF5b3V0U3RhdGUsIGxheW91dEJveCwgdXNlZFZhbHVlcyk7CisgICAgcmV0
dXJuIG91dE9mRmxvd1JlcGxhY2VkSG9yaXpvbnRhbEdlb21ldHJ5KGxheW91dFN0YXRlLCBsYXlv
dXRCb3gsIHVzZWRWYWx1ZXMpOwogfQogCi1IZWlnaHRBbmRNYXJnaW4gRm9ybWF0dGluZ0NvbnRl
eHQ6Okdlb21ldHJ5OjpmbG9hdGluZ0hlaWdodEFuZE1hcmdpbihjb25zdCBMYXlvdXRTdGF0ZSYg
bGF5b3V0U3RhdGUsIGNvbnN0IEJveCYgbGF5b3V0Qm94LCBPcHRpb25hbDxMYXlvdXRVbml0PiB1
c2VkSGVpZ2h0KQorSGVpZ2h0QW5kTWFyZ2luIEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6
ZmxvYXRpbmdIZWlnaHRBbmRNYXJnaW4oY29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBj
b25zdCBCb3gmIGxheW91dEJveCwgVXNlZFZlcnRpY2FsVmFsdWVzIHVzZWRWYWx1ZXMpCiB7CiAg
ICAgQVNTRVJUKGxheW91dEJveC5pc0Zsb2F0aW5nUG9zaXRpb25lZCgpKTsKIAogICAgIGlmICgh
bGF5b3V0Qm94LnJlcGxhY2VkKCkpCi0gICAgICAgIHJldHVybiBjb21wbGljYXRlZENhc2VzKGxh
eW91dFN0YXRlLCBsYXlvdXRCb3gsIHVzZWRIZWlnaHQpOwotICAgIHJldHVybiBmbG9hdGluZ1Jl
cGxhY2VkSGVpZ2h0QW5kTWFyZ2luKGxheW91dFN0YXRlLCBsYXlvdXRCb3gsIHVzZWRIZWlnaHQp
OworICAgICAgICByZXR1cm4gY29tcGxpY2F0ZWRDYXNlcyhsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94
LCB1c2VkVmFsdWVzKTsKKyAgICByZXR1cm4gZmxvYXRpbmdSZXBsYWNlZEhlaWdodEFuZE1hcmdp
bihsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94LCB1c2VkVmFsdWVzKTsKIH0KIAotV2lkdGhBbmRNYXJn
aW4gRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpmbG9hdGluZ1dpZHRoQW5kTWFyZ2luKExh
eW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgQm94JiBsYXlvdXRCb3gsIE9wdGlvbmFsPExh
eW91dFVuaXQ+IHVzZWRXaWR0aCkKK1dpZHRoQW5kTWFyZ2luIEZvcm1hdHRpbmdDb250ZXh0OjpH
ZW9tZXRyeTo6ZmxvYXRpbmdXaWR0aEFuZE1hcmdpbihMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUs
IGNvbnN0IEJveCYgbGF5b3V0Qm94LCBVc2VkSG9yaXpvbnRhbFZhbHVlcyB1c2VkVmFsdWVzKQog
ewogICAgIEFTU0VSVChsYXlvdXRCb3guaXNGbG9hdGluZ1Bvc2l0aW9uZWQoKSk7CiAKICAgICBp
ZiAoIWxheW91dEJveC5yZXBsYWNlZCgpKQotICAgICAgICByZXR1cm4gZmxvYXRpbmdOb25SZXBs
YWNlZFdpZHRoQW5kTWFyZ2luKGxheW91dFN0YXRlLCBsYXlvdXRCb3gsIHVzZWRXaWR0aCk7Ci0g
ICAgcmV0dXJuIGZsb2F0aW5nUmVwbGFjZWRXaWR0aEFuZE1hcmdpbihsYXlvdXRTdGF0ZSwgbGF5
b3V0Qm94LCB1c2VkV2lkdGgpOworICAgICAgICByZXR1cm4gZmxvYXRpbmdOb25SZXBsYWNlZFdp
ZHRoQW5kTWFyZ2luKGxheW91dFN0YXRlLCBsYXlvdXRCb3gsIHVzZWRWYWx1ZXMpOworICAgIHJl
dHVybiBmbG9hdGluZ1JlcGxhY2VkV2lkdGhBbmRNYXJnaW4obGF5b3V0U3RhdGUsIGxheW91dEJv
eCwgdXNlZFZhbHVlcyk7CiB9CiAKLUhlaWdodEFuZE1hcmdpbiBGb3JtYXR0aW5nQ29udGV4dDo6
R2VvbWV0cnk6OmlubGluZVJlcGxhY2VkSGVpZ2h0QW5kTWFyZ2luKGNvbnN0IExheW91dFN0YXRl
JiBsYXlvdXRTdGF0ZSwgY29uc3QgQm94JiBsYXlvdXRCb3gsIE9wdGlvbmFsPExheW91dFVuaXQ+
IHVzZWRIZWlnaHQpCitIZWlnaHRBbmRNYXJnaW4gRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5
OjppbmxpbmVSZXBsYWNlZEhlaWdodEFuZE1hcmdpbihjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0
U3RhdGUsIGNvbnN0IEJveCYgbGF5b3V0Qm94LCBVc2VkVmVydGljYWxWYWx1ZXMgdXNlZFZhbHVl
cykKIHsKICAgICBBU1NFUlQoKGxheW91dEJveC5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSB8fCBs
YXlvdXRCb3guaXNGbG9hdGluZ1Bvc2l0aW9uZWQoKSB8fCBsYXlvdXRCb3guaXNJbkZsb3coKSkg
JiYgbGF5b3V0Qm94LnJlcGxhY2VkKCkpOwogCkBAIC04NTcsOCArODU3LDggQEAgSGVpZ2h0QW5k
TWFyZ2luIEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5saW5lUmVwbGFjZWRIZWlnaHRB
bmRNYXJnaW4oY29uc3QKICAgICBhdXRvJiBzdHlsZSA9IGxheW91dEJveC5zdHlsZSgpOwogICAg
IGF1dG8gcmVwbGFjZWQgPSBsYXlvdXRCb3gucmVwbGFjZWQoKTsKIAotICAgIGF1dG8gaGVpZ2h0
ID0gdXNlZEhlaWdodCA/IHVzZWRIZWlnaHQudmFsdWUoKSA6IGNvbXB1dGVkSGVpZ2h0VmFsdWUo
bGF5b3V0U3RhdGUsIGxheW91dEJveCwgSGVpZ2h0VHlwZTo6Tm9ybWFsKTsKLSAgICBhdXRvIGhl
aWdodElzQXV0byA9ICF1c2VkSGVpZ2h0ICYmIGlzSGVpZ2h0QXV0byhsYXlvdXRCb3gpOworICAg
IGF1dG8gaGVpZ2h0ID0gdXNlZFZhbHVlcy5oZWlnaHQgPyB1c2VkVmFsdWVzLmhlaWdodC52YWx1
ZSgpIDogY29tcHV0ZWRIZWlnaHRWYWx1ZShsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94LCBIZWlnaHRU
eXBlOjpOb3JtYWwpOworICAgIGF1dG8gaGVpZ2h0SXNBdXRvID0gIXVzZWRWYWx1ZXMuaGVpZ2h0
ICYmIGlzSGVpZ2h0QXV0byhsYXlvdXRCb3gpOwogICAgIGF1dG8gd2lkdGhJc0F1dG8gPSBzdHls
ZS5sb2dpY2FsV2lkdGgoKS5pc0F1dG8oKTsKIAogICAgIGlmIChoZWlnaHRJc0F1dG8gJiYgd2lk
dGhJc0F1dG8gJiYgcmVwbGFjZWQtPmhhc0ludHJpbnNpY0hlaWdodCgpKSB7CkBAIC04ODIsOCAr
ODgyLDcgQEAgSGVpZ2h0QW5kTWFyZ2luIEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5s
aW5lUmVwbGFjZWRIZWlnaHRBbmRNYXJnaW4oY29uc3QKICAgICByZXR1cm4geyAqaGVpZ2h0LCB1
c2VkVmVydGljYWxNYXJnaW4gfTsKIH0KIAotV2lkdGhBbmRNYXJnaW4gRm9ybWF0dGluZ0NvbnRl
eHQ6Okdlb21ldHJ5OjppbmxpbmVSZXBsYWNlZFdpZHRoQW5kTWFyZ2luKGNvbnN0IExheW91dFN0
YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgQm94JiBsYXlvdXRCb3gsCi0gICAgT3B0aW9uYWw8TGF5
b3V0VW5pdD4gdXNlZFdpZHRoLCBPcHRpb25hbDxMYXlvdXRVbml0PiBwcmVjb21wdXRlZE1hcmdp
blN0YXJ0LCBPcHRpb25hbDxMYXlvdXRVbml0PiBwcmVjb21wdXRlZE1hcmdpbkVuZCkKK1dpZHRo
QW5kTWFyZ2luIEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5saW5lUmVwbGFjZWRXaWR0
aEFuZE1hcmdpbihjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEJveCYgbGF5
b3V0Qm94LCBVc2VkSG9yaXpvbnRhbFZhbHVlcyB1c2VkVmFsdWVzKQogewogICAgIEFTU0VSVCgo
bGF5b3V0Qm94LmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpIHx8IGxheW91dEJveC5pc0Zsb2F0aW5n
UG9zaXRpb25lZCgpIHx8IGxheW91dEJveC5pc0luRmxvdygpKSAmJiBsYXlvdXRCb3gucmVwbGFj
ZWQoKSk7CiAKQEAgLTkxMiwxNyArOTExLDIxIEBAIFdpZHRoQW5kTWFyZ2luIEZvcm1hdHRpbmdD
b250ZXh0OjpHZW9tZXRyeTo6aW5saW5lUmVwbGFjZWRXaWR0aEFuZE1hcmdpbihjb25zdCBMCiAg
ICAgYXV0byBjb21wdXRlZEhvcml6b250YWxNYXJnaW4gPSBHZW9tZXRyeTo6Y29tcHV0ZWRIb3Jp
em9udGFsTWFyZ2luKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpOwogCiAgICAgYXV0byB1c2VkTWFy
Z2luU3RhcnQgPSBbJl0gewotICAgICAgICByZXR1cm4gcHJlY29tcHV0ZWRNYXJnaW5TdGFydC52
YWx1ZU9yKGNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbi5zdGFydC52YWx1ZU9yKDBfbHUpKTsKKyAg
ICAgICAgaWYgKHVzZWRWYWx1ZXMubWFyZ2luKQorICAgICAgICAgICAgcmV0dXJuIHVzZWRWYWx1
ZXMubWFyZ2luLT5zdGFydDsKKyAgICAgICAgcmV0dXJuIGNvbXB1dGVkSG9yaXpvbnRhbE1hcmdp
bi5zdGFydC52YWx1ZU9yKDBfbHUpOwogICAgIH07CiAKICAgICBhdXRvIHVzZWRNYXJnaW5FbmQg
PSBbJl0gewotICAgICAgICByZXR1cm4gcHJlY29tcHV0ZWRNYXJnaW5FbmQudmFsdWVPcihjb21w
dXRlZEhvcml6b250YWxNYXJnaW4uZW5kLnZhbHVlT3IoMF9sdSkpOworICAgICAgICBpZiAodXNl
ZFZhbHVlcy5tYXJnaW4pCisgICAgICAgICAgICByZXR1cm4gdXNlZFZhbHVlcy5tYXJnaW4tPmVu
ZDsKKyAgICAgICAgcmV0dXJuIGNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbi5lbmQudmFsdWVPcigw
X2x1KTsKICAgICB9OwogCiAgICAgYXV0byByZXBsYWNlZCA9IGxheW91dEJveC5yZXBsYWNlZCgp
OwogICAgIEFTU0VSVChyZXBsYWNlZCk7CiAKLSAgICBhdXRvIHdpZHRoID0gY29tcHV0ZWRWYWx1
ZUlmTm90QXV0byh1c2VkV2lkdGggPyBMZW5ndGggeyB1c2VkV2lkdGgudmFsdWUoKSwgRml4ZWQg
fSA6IHN0eWxlLmxvZ2ljYWxXaWR0aCgpLCBjb250YWluaW5nQmxvY2tXaWR0aCk7CisgICAgYXV0
byB3aWR0aCA9IGNvbXB1dGVkVmFsdWVJZk5vdEF1dG8odXNlZFZhbHVlcy53aWR0aCA/IExlbmd0
aCB7IHVzZWRWYWx1ZXMud2lkdGgudmFsdWUoKSwgRml4ZWQgfSA6IHN0eWxlLmxvZ2ljYWxXaWR0
aCgpLCBjb250YWluaW5nQmxvY2tXaWR0aCk7CiAgICAgYXV0byBoZWlnaHRJc0F1dG8gPSBpc0hl
aWdodEF1dG8obGF5b3V0Qm94KTsKICAgICBhdXRvIGhlaWdodCA9IGNvbXB1dGVkSGVpZ2h0VmFs
dWUobGF5b3V0U3RhdGUsIGxheW91dEJveCwgSGVpZ2h0VHlwZTo6Tm9ybWFsKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dFVuaXRzLmggYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvTGF5b3V0VW5pdHMuaAppbmRleCBlYTFiZTkwYTlmNjU2ODE4OTJkNTA1NDY1ZGFi
NjBlYTYzOTFhNDg0Li44M2MxYjZlYjNkNGZhMTIwNWMzMmMyNDhmZjU1YjgxMDUyNGY5MWUyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0VW5pdHMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0VW5pdHMuaApAQCAtMTI0LDYgKzEyNCwxNSBAQCBzdHJ1
Y3QgVmVydGljYWxHZW9tZXRyeSB7CiAgICAgSGVpZ2h0QW5kTWFyZ2luIGhlaWdodEFuZE1hcmdp
bjsKIH07CiAKK3N0cnVjdCBVc2VkSG9yaXpvbnRhbFZhbHVlcyB7CisgICAgT3B0aW9uYWw8TGF5
b3V0VW5pdD4gd2lkdGg7CisgICAgT3B0aW9uYWw8VXNlZEhvcml6b250YWxNYXJnaW4+IG1hcmdp
bjsKK307CisKK3N0cnVjdCBVc2VkVmVydGljYWxWYWx1ZXMgeworICAgIE9wdGlvbmFsPExheW91
dFVuaXQ+IGhlaWdodDsKK307CisKIH0KIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29u
dGV4dC5jcHAKaW5kZXggMTc5ZGVmYjcxYzJlOTBlNDU4ZTk1OTUwY2U3NmI4YTFmOWFjYTU0OC4u
OGFhYzQ5MjVhMzI0MDBhZDgxMzA2NmM2NmRjNmI5ZDBhMGEyNzA5MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9y
bWF0dGluZ0NvbnRleHQuY3BwCkBAIC0yOTksMTMgKzI5OSwxMyBAQCB2b2lkIEJsb2NrRm9ybWF0
dGluZ0NvbnRleHQ6OmNvbXB1dGVXaWR0aEFuZE1hcmdpbihjb25zdCBCb3gmIGxheW91dEJveCkg
Y29uc3QKIHsKICAgICBhdXRvJiBsYXlvdXRTdGF0ZSA9IHRoaXMtPmxheW91dFN0YXRlKCk7CiAK
LSAgICBhdXRvIGNvbXB1dGUgPSBbJl0oT3B0aW9uYWw8TGF5b3V0VW5pdD4gdXNlZFdpZHRoKSAt
PiBXaWR0aEFuZE1hcmdpbiB7CisgICAgYXV0byBjb21wdXRlID0gWyZdKFVzZWRIb3Jpem9udGFs
VmFsdWVzIHVzZWRWYWx1ZXMpIC0+IFdpZHRoQW5kTWFyZ2luIHsKIAogICAgICAgICBpZiAobGF5
b3V0Qm94LmlzSW5GbG93KCkpCi0gICAgICAgICAgICByZXR1cm4gR2VvbWV0cnk6OmluRmxvd1dp
ZHRoQW5kTWFyZ2luKGxheW91dFN0YXRlLCBsYXlvdXRCb3gsIHVzZWRXaWR0aCk7CisgICAgICAg
ICAgICByZXR1cm4gR2VvbWV0cnk6OmluRmxvd1dpZHRoQW5kTWFyZ2luKGxheW91dFN0YXRlLCBs
YXlvdXRCb3gsIHVzZWRWYWx1ZXMpOwogCiAgICAgICAgIGlmIChsYXlvdXRCb3guaXNGbG9hdGlu
Z1Bvc2l0aW9uZWQoKSkKLSAgICAgICAgICAgIHJldHVybiBHZW9tZXRyeTo6ZmxvYXRpbmdXaWR0
aEFuZE1hcmdpbihsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94LCB1c2VkV2lkdGgpOworICAgICAgICAg
ICAgcmV0dXJuIEdlb21ldHJ5OjpmbG9hdGluZ1dpZHRoQW5kTWFyZ2luKGxheW91dFN0YXRlLCBs
YXlvdXRCb3gsIHVzZWRWYWx1ZXMpOwogCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
ICAgICAgICByZXR1cm4geyB9OwpAQCAtMzE1LDEzICszMTUsMTMgQEAgdm9pZCBCbG9ja0Zvcm1h
dHRpbmdDb250ZXh0Ojpjb21wdXRlV2lkdGhBbmRNYXJnaW4oY29uc3QgQm94JiBsYXlvdXRCb3gp
IGNvbnN0CiAgICAgYXV0byBjb250YWluaW5nQmxvY2tXaWR0aCA9IGxheW91dFN0YXRlLmRpc3Bs
YXlCb3hGb3JMYXlvdXRCb3goKmxheW91dEJveC5jb250YWluaW5nQmxvY2soKSkuY29udGVudEJv
eFdpZHRoKCk7CiAKICAgICBpZiAoYXV0byBtYXhXaWR0aCA9IEdlb21ldHJ5Ojpjb21wdXRlZFZh
bHVlSWZOb3RBdXRvKGxheW91dEJveC5zdHlsZSgpLmxvZ2ljYWxNYXhXaWR0aCgpLCBjb250YWlu
aW5nQmxvY2tXaWR0aCkpIHsKLSAgICAgICAgYXV0byBtYXhXaWR0aEFuZE1hcmdpbiA9IGNvbXB1
dGUobWF4V2lkdGgpOworICAgICAgICBhdXRvIG1heFdpZHRoQW5kTWFyZ2luID0gY29tcHV0ZSh7
ICptYXhXaWR0aCwgeyB9IH0pOwogICAgICAgICBpZiAod2lkdGhBbmRNYXJnaW4ud2lkdGggPiBt
YXhXaWR0aEFuZE1hcmdpbi53aWR0aCkKICAgICAgICAgICAgIHdpZHRoQW5kTWFyZ2luID0gbWF4
V2lkdGhBbmRNYXJnaW47CiAgICAgfQogCiAgICAgYXV0byBtaW5XaWR0aCA9IEdlb21ldHJ5Ojpj
b21wdXRlZFZhbHVlSWZOb3RBdXRvKGxheW91dEJveC5zdHlsZSgpLmxvZ2ljYWxNaW5XaWR0aCgp
LCBjb250YWluaW5nQmxvY2tXaWR0aCkudmFsdWVPcigwKTsKLSAgICBhdXRvIG1pbldpZHRoQW5k
TWFyZ2luID0gY29tcHV0ZShtaW5XaWR0aCk7CisgICAgYXV0byBtaW5XaWR0aEFuZE1hcmdpbiA9
IGNvbXB1dGUoeyBtaW5XaWR0aCwgeyB9IH0pOwogICAgIGlmICh3aWR0aEFuZE1hcmdpbi53aWR0
aCA8IG1pbldpZHRoQW5kTWFyZ2luLndpZHRoKQogICAgICAgICB3aWR0aEFuZE1hcmdpbiA9IG1p
bldpZHRoQW5kTWFyZ2luOwogCkBAIC0zMzUsMTMgKzMzNSwxMyBAQCB2b2lkIEJsb2NrRm9ybWF0
dGluZ0NvbnRleHQ6OmNvbXB1dGVIZWlnaHRBbmRNYXJnaW4oY29uc3QgQm94JiBsYXlvdXRCb3gp
IGNvbnN0CiB7CiAgICAgYXV0byYgbGF5b3V0U3RhdGUgPSB0aGlzLT5sYXlvdXRTdGF0ZSgpOwog
Ci0gICAgYXV0byBjb21wdXRlID0gWyZdKE9wdGlvbmFsPExheW91dFVuaXQ+IHVzZWRIZWlnaHQp
IC0+IEhlaWdodEFuZE1hcmdpbiB7CisgICAgYXV0byBjb21wdXRlID0gWyZdKFVzZWRWZXJ0aWNh
bFZhbHVlcyB1c2VkVmFsdWVzKSAtPiBIZWlnaHRBbmRNYXJnaW4gewogCiAgICAgICAgIGlmIChs
YXlvdXRCb3guaXNJbkZsb3coKSkKLSAgICAgICAgICAgIHJldHVybiBHZW9tZXRyeTo6aW5GbG93
SGVpZ2h0QW5kTWFyZ2luKGxheW91dFN0YXRlLCBsYXlvdXRCb3gsIHVzZWRIZWlnaHQpOworICAg
ICAgICAgICAgcmV0dXJuIEdlb21ldHJ5OjppbkZsb3dIZWlnaHRBbmRNYXJnaW4obGF5b3V0U3Rh
dGUsIGxheW91dEJveCwgdXNlZFZhbHVlcyk7CiAKICAgICAgICAgaWYgKGxheW91dEJveC5pc0Zs
b2F0aW5nUG9zaXRpb25lZCgpKQotICAgICAgICAgICAgcmV0dXJuIEdlb21ldHJ5OjpmbG9hdGlu
Z0hlaWdodEFuZE1hcmdpbihsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94LCB1c2VkSGVpZ2h0KTsKKyAg
ICAgICAgICAgIHJldHVybiBHZW9tZXRyeTo6ZmxvYXRpbmdIZWlnaHRBbmRNYXJnaW4obGF5b3V0
U3RhdGUsIGxheW91dEJveCwgdXNlZFZhbHVlcyk7CiAKICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgICAgIHJldHVybiB7IH07CkBAIC0zNTAsNyArMzUwLDcgQEAgdm9pZCBCbG9j
a0Zvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlSGVpZ2h0QW5kTWFyZ2luKGNvbnN0IEJveCYgbGF5
b3V0Qm94KSBjb25zdAogICAgIGF1dG8gaGVpZ2h0QW5kTWFyZ2luID0gY29tcHV0ZSh7IH0pOwog
ICAgIGlmIChhdXRvIG1heEhlaWdodCA9IEdlb21ldHJ5Ojpjb21wdXRlZE1heEhlaWdodChsYXlv
dXRTdGF0ZSwgbGF5b3V0Qm94KSkgewogICAgICAgICBpZiAoaGVpZ2h0QW5kTWFyZ2luLmhlaWdo
dCA+ICptYXhIZWlnaHQpIHsKLSAgICAgICAgICAgIGF1dG8gbWF4SGVpZ2h0QW5kTWFyZ2luID0g
Y29tcHV0ZShtYXhIZWlnaHQpOworICAgICAgICAgICAgYXV0byBtYXhIZWlnaHRBbmRNYXJnaW4g
PSBjb21wdXRlKHsgKm1heEhlaWdodCB9KTsKICAgICAgICAgICAgIC8vIFVzZWQgaGVpZ2h0IHNo
b3VsZCByZW1haW4gdGhlIHNhbWUuCiAgICAgICAgICAgICBBU1NFUlQoKGxheW91dFN0YXRlLmlu
UXVpcmtzTW9kZSgpICYmIChsYXlvdXRCb3guaXNCb2R5Qm94KCkgfHwgbGF5b3V0Qm94LmlzRG9j
dW1lbnRCb3goKSkpIHx8IG1heEhlaWdodEFuZE1hcmdpbi5oZWlnaHQgPT0gKm1heEhlaWdodCk7
CiAgICAgICAgICAgICBoZWlnaHRBbmRNYXJnaW4gPSB7ICptYXhIZWlnaHQsIG1heEhlaWdodEFu
ZE1hcmdpbi5ub25Db2xsYXBzZWRNYXJnaW4gfTsKQEAgLTM1OSw3ICszNTksNyBAQCB2b2lkIEJs
b2NrRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVIZWlnaHRBbmRNYXJnaW4oY29uc3QgQm94JiBs
YXlvdXRCb3gpIGNvbnN0CiAKICAgICBpZiAoYXV0byBtaW5IZWlnaHQgPSBHZW9tZXRyeTo6Y29t
cHV0ZWRNaW5IZWlnaHQobGF5b3V0U3RhdGUsIGxheW91dEJveCkpIHsKICAgICAgICAgaWYgKGhl
aWdodEFuZE1hcmdpbi5oZWlnaHQgPCAqbWluSGVpZ2h0KSB7Ci0gICAgICAgICAgICBhdXRvIG1p
bkhlaWdodEFuZE1hcmdpbiA9IGNvbXB1dGUobWluSGVpZ2h0KTsKKyAgICAgICAgICAgIGF1dG8g
bWluSGVpZ2h0QW5kTWFyZ2luID0gY29tcHV0ZSh7ICptaW5IZWlnaHQgfSk7CiAgICAgICAgICAg
ICAvLyBVc2VkIGhlaWdodCBzaG91bGQgcmVtYWluIHRoZSBzYW1lLgogICAgICAgICAgICAgQVNT
RVJUKChsYXlvdXRTdGF0ZS5pblF1aXJrc01vZGUoKSAmJiAobGF5b3V0Qm94LmlzQm9keUJveCgp
IHx8IGxheW91dEJveC5pc0RvY3VtZW50Qm94KCkpKSB8fCBtaW5IZWlnaHRBbmRNYXJnaW4uaGVp
Z2h0ID09ICptaW5IZWlnaHQpOwogICAgICAgICAgICAgaGVpZ2h0QW5kTWFyZ2luID0geyAqbWlu
SGVpZ2h0LCBtaW5IZWlnaHRBbmRNYXJnaW4ubm9uQ29sbGFwc2VkTWFyZ2luIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGlu
Z0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tG
b3JtYXR0aW5nQ29udGV4dC5oCmluZGV4IGY0Y2M3MDFmNWM0Y2YyM2IxN2ExZDlmZTk3NGJlYzU4
MDQ2YTMzYWQuLjdkOTVjYjRkYzQ5YWQ1NDc1OTRkNGNjOGI5YTRmMDZkNDBhNDQwY2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0
aW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcv
QmxvY2tGb3JtYXR0aW5nQ29udGV4dC5oCkBAIC03Myw4ICs3Myw4IEBAIHByaXZhdGU6CiAgICAg
Ly8gVGhpcyBjbGFzcyBpbXBsZW1lbnRzIHBvc2l0aW9uaW5nIGFuZCBzaXppbmcgZm9yIGJveGVz
IHBhcnRpY2lwYXRpbmcgaW4gYSBibG9jayBmb3JtYXR0aW5nIGNvbnRleHQuCiAgICAgY2xhc3Mg
R2VvbWV0cnkgOiBwdWJsaWMgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5IHsKICAgICBwdWJs
aWM6Ci0gICAgICAgIHN0YXRpYyBIZWlnaHRBbmRNYXJnaW4gaW5GbG93SGVpZ2h0QW5kTWFyZ2lu
KGNvbnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94JiwgT3B0aW9uYWw8TGF5b3V0VW5pdD4gdXNl
ZEhlaWdodCA9IHsgfSk7Ci0gICAgICAgIHN0YXRpYyBXaWR0aEFuZE1hcmdpbiBpbkZsb3dXaWR0
aEFuZE1hcmdpbihjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYsIE9wdGlvbmFsPExheW91
dFVuaXQ+IHVzZWRXaWR0aCA9IHsgfSk7CisgICAgICAgIHN0YXRpYyBIZWlnaHRBbmRNYXJnaW4g
aW5GbG93SGVpZ2h0QW5kTWFyZ2luKGNvbnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94JiwgVXNl
ZFZlcnRpY2FsVmFsdWVzKTsKKyAgICAgICAgc3RhdGljIFdpZHRoQW5kTWFyZ2luIGluRmxvd1dp
ZHRoQW5kTWFyZ2luKGNvbnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94JiwgVXNlZEhvcml6b250
YWxWYWx1ZXMpOwogCiAgICAgICAgIHN0YXRpYyBQb2ludCBzdGF0aWNQb3NpdGlvbihjb25zdCBM
YXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYpOwogCkBAIC04Miw5ICs4Miw5IEBAIHByaXZhdGU6CiAg
ICAgICAgIHN0YXRpYyBJbnN0cmluc2ljV2lkdGhDb25zdHJhaW50cyBpbnN0cmluc2ljV2lkdGhD
b25zdHJhaW50cyhjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYpOwogCiAgICAgcHJpdmF0
ZToKLSAgICAgICAgc3RhdGljIEhlaWdodEFuZE1hcmdpbiBpbkZsb3dOb25SZXBsYWNlZEhlaWdo
dEFuZE1hcmdpbihjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYsIE9wdGlvbmFsPExheW91
dFVuaXQ+IHVzZWRIZWlnaHQgPSB7IH0pOwotICAgICAgICBzdGF0aWMgV2lkdGhBbmRNYXJnaW4g
aW5GbG93Tm9uUmVwbGFjZWRXaWR0aEFuZE1hcmdpbihjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0
IEJveCYsIE9wdGlvbmFsPExheW91dFVuaXQ+IHVzZWRXaWR0aCA9IHsgfSk7Ci0gICAgICAgIHN0
YXRpYyBXaWR0aEFuZE1hcmdpbiBpbkZsb3dSZXBsYWNlZFdpZHRoQW5kTWFyZ2luKGNvbnN0IExh
eW91dFN0YXRlJiwgY29uc3QgQm94JiwgT3B0aW9uYWw8TGF5b3V0VW5pdD4gdXNlZFdpZHRoID0g
eyB9KTsKKyAgICAgICAgc3RhdGljIEhlaWdodEFuZE1hcmdpbiBpbkZsb3dOb25SZXBsYWNlZEhl
aWdodEFuZE1hcmdpbihjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYsIFVzZWRWZXJ0aWNh
bFZhbHVlcyk7CisgICAgICAgIHN0YXRpYyBXaWR0aEFuZE1hcmdpbiBpbkZsb3dOb25SZXBsYWNl
ZFdpZHRoQW5kTWFyZ2luKGNvbnN0IExheW91dFN0YXRlJiwgY29uc3QgQm94JiwgVXNlZEhvcml6
b250YWxWYWx1ZXMpOworICAgICAgICBzdGF0aWMgV2lkdGhBbmRNYXJnaW4gaW5GbG93UmVwbGFj
ZWRXaWR0aEFuZE1hcmdpbihjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYsIFVzZWRIb3Jp
em9udGFsVmFsdWVzKTsKICAgICAgICAgc3RhdGljIFBvaW50IHN0YXRpY1Bvc2l0aW9uRm9yT3V0
T2ZGbG93UG9zaXRpb25lZChjb25zdCBMYXlvdXRTdGF0ZSYsIGNvbnN0IEJveCYpOwogICAgIH07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxv
Y2tGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9i
bG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcAppbmRleCAw
NWYwN2E2Y2ZjM2ExOGZiNWYzNTI1NGFjOTE2YjM4MzdkZThiNWI4Li4zNDQyYzBjZTc1ZDI2MDE4
MGY0MjYzNzc0ZjNkMTM4YmUwNzhhYWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdD
b250ZXh0R2VvbWV0cnkuY3BwCkBAIC0zNyw3ICszNyw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBuYW1lc3BhY2UgTGF5b3V0IHsKIAotSGVpZ2h0QW5kTWFyZ2luIEJsb2NrRm9ybWF0dGluZ0Nv
bnRleHQ6Okdlb21ldHJ5OjppbkZsb3dOb25SZXBsYWNlZEhlaWdodEFuZE1hcmdpbihjb25zdCBM
YXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEJveCYgbGF5b3V0Qm94LCBPcHRpb25hbDxM
YXlvdXRVbml0PiB1c2VkSGVpZ2h0KQorSGVpZ2h0QW5kTWFyZ2luIEJsb2NrRm9ybWF0dGluZ0Nv
bnRleHQ6Okdlb21ldHJ5OjppbkZsb3dOb25SZXBsYWNlZEhlaWdodEFuZE1hcmdpbihjb25zdCBM
YXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEJveCYgbGF5b3V0Qm94LCBVc2VkVmVydGlj
YWxWYWx1ZXMgdXNlZFZhbHVlcykKIHsKICAgICBBU1NFUlQobGF5b3V0Qm94LmlzSW5GbG93KCkg
JiYgIWxheW91dEJveC5yZXBsYWNlZCgpKTsKICAgICBBU1NFUlQobGF5b3V0Qm94LmlzT3ZlcmZs
b3dWaXNpYmxlKCkpOwpAQCAtNjEsNyArNjEsNyBAQCBIZWlnaHRBbmRNYXJnaW4gQmxvY2tGb3Jt
YXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmluRmxvd05vblJlcGxhY2VkSGVpZ2h0QW5kTWFyZwog
ICAgICAgICBhdXRvIGNvbXB1dGVkVmVydGljYWxNYXJnaW4gPSBHZW9tZXRyeTo6Y29tcHV0ZWRW
ZXJ0aWNhbE1hcmdpbihsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KTsKICAgICAgICAgYXV0byBub25D
b2xsYXBzZWRNYXJnaW4gPSBVc2VkVmVydGljYWxNYXJnaW46Ok5vbkNvbGxhcHNlZFZhbHVlcyB7
IGNvbXB1dGVkVmVydGljYWxNYXJnaW4uYmVmb3JlLnZhbHVlT3IoMCksIGNvbXB1dGVkVmVydGlj
YWxNYXJnaW4uYWZ0ZXIudmFsdWVPcigwKSB9OyAKICAgICAgICAgYXV0byBib3JkZXJBbmRQYWRk
aW5nVG9wID0gZGlzcGxheUJveC5ib3JkZXJUb3AoKSArIGRpc3BsYXlCb3gucGFkZGluZ1RvcCgp
LnZhbHVlT3IoMCk7Ci0gICAgICAgIGF1dG8gaGVpZ2h0ID0gdXNlZEhlaWdodCA/IHVzZWRIZWln
aHQudmFsdWUoKSA6IGNvbXB1dGVkSGVpZ2h0VmFsdWUobGF5b3V0U3RhdGUsIGxheW91dEJveCwg
SGVpZ2h0VHlwZTo6Tm9ybWFsKTsKKyAgICAgICAgYXV0byBoZWlnaHQgPSB1c2VkVmFsdWVzLmhl
aWdodCA/IHVzZWRWYWx1ZXMuaGVpZ2h0LnZhbHVlKCkgOiBjb21wdXRlZEhlaWdodFZhbHVlKGxh
eW91dFN0YXRlLCBsYXlvdXRCb3gsIEhlaWdodFR5cGU6Ok5vcm1hbCk7CiAKICAgICAgICAgaWYg
KGhlaWdodCkgewogICAgICAgICAgICAgYXV0byBib3JkZXJBbmRQYWRkaW5nQm90dG9tID0gZGlz
cGxheUJveC5ib3JkZXJCb3R0b20oKSArIGRpc3BsYXlCb3gucGFkZGluZ0JvdHRvbSgpLnZhbHVl
T3IoMCk7CkBAIC0xMDcsNyArMTA3LDcgQEAgSGVpZ2h0QW5kTWFyZ2luIEJsb2NrRm9ybWF0dGlu
Z0NvbnRleHQ6Okdlb21ldHJ5OjppbkZsb3dOb25SZXBsYWNlZEhlaWdodEFuZE1hcmcKICAgICBy
ZXR1cm4gaGVpZ2h0QW5kTWFyZ2luOwogfQogCi1XaWR0aEFuZE1hcmdpbiBCbG9ja0Zvcm1hdHRp
bmdDb250ZXh0OjpHZW9tZXRyeTo6aW5GbG93Tm9uUmVwbGFjZWRXaWR0aEFuZE1hcmdpbihjb25z
dCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEJveCYgbGF5b3V0Qm94LCBPcHRpb25h
bDxMYXlvdXRVbml0PiB1c2VkV2lkdGgpCitXaWR0aEFuZE1hcmdpbiBCbG9ja0Zvcm1hdHRpbmdD
b250ZXh0OjpHZW9tZXRyeTo6aW5GbG93Tm9uUmVwbGFjZWRXaWR0aEFuZE1hcmdpbihjb25zdCBM
YXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEJveCYgbGF5b3V0Qm94LCBVc2VkSG9yaXpv
bnRhbFZhbHVlcyB1c2VkVmFsdWVzKQogewogICAgIEFTU0VSVChsYXlvdXRCb3guaXNJbkZsb3co
KSk7CiAKQEAgLTEzOSw3ICsxMzksNyBAQCBXaWR0aEFuZE1hcmdpbiBCbG9ja0Zvcm1hdHRpbmdD
b250ZXh0OjpHZW9tZXRyeTo6aW5GbG93Tm9uUmVwbGFjZWRXaWR0aEFuZE1hcmdpbgogICAgICAg
ICBhdXRvIGNvbnRhaW5pbmdCbG9ja1dpZHRoID0gbGF5b3V0U3RhdGUuZGlzcGxheUJveEZvckxh
eW91dEJveCgqY29udGFpbmluZ0Jsb2NrKS5jb250ZW50Qm94V2lkdGgoKTsKICAgICAgICAgYXV0
byYgZGlzcGxheUJveCA9IGxheW91dFN0YXRlLmRpc3BsYXlCb3hGb3JMYXlvdXRCb3gobGF5b3V0
Qm94KTsKIAotICAgICAgICBhdXRvIHdpZHRoID0gY29tcHV0ZWRWYWx1ZUlmTm90QXV0byh1c2Vk
V2lkdGggPyBMZW5ndGggeyB1c2VkV2lkdGgudmFsdWUoKSwgRml4ZWQgfSA6IHN0eWxlLmxvZ2lj
YWxXaWR0aCgpLCBjb250YWluaW5nQmxvY2tXaWR0aCk7CisgICAgICAgIGF1dG8gd2lkdGggPSBj
b21wdXRlZFZhbHVlSWZOb3RBdXRvKHVzZWRWYWx1ZXMud2lkdGggPyBMZW5ndGggeyB1c2VkVmFs
dWVzLndpZHRoLnZhbHVlKCksIEZpeGVkIH0gOiBzdHlsZS5sb2dpY2FsV2lkdGgoKSwgY29udGFp
bmluZ0Jsb2NrV2lkdGgpOwogICAgICAgICBhdXRvIGNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbiA9
IEdlb21ldHJ5Ojpjb21wdXRlZEhvcml6b250YWxNYXJnaW4obGF5b3V0U3RhdGUsIGxheW91dEJv
eCk7CiAgICAgICAgIFVzZWRIb3Jpem9udGFsTWFyZ2luIHVzZWRIb3Jpem9udGFsTWFyZ2luOwog
ICAgICAgICBhdXRvIGJvcmRlckxlZnQgPSBkaXNwbGF5Qm94LmJvcmRlckxlZnQoKTsKQEAgLTIw
Myw3ICsyMDMsNyBAQCBXaWR0aEFuZE1hcmdpbiBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9t
ZXRyeTo6aW5GbG93Tm9uUmVwbGFjZWRXaWR0aEFuZE1hcmdpbgogICAgIHJldHVybiB3aWR0aEFu
ZE1hcmdpbjsKIH0KIAotV2lkdGhBbmRNYXJnaW4gQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2Vv
bWV0cnk6OmluRmxvd1JlcGxhY2VkV2lkdGhBbmRNYXJnaW4oY29uc3QgTGF5b3V0U3RhdGUmIGxh
eW91dFN0YXRlLCBjb25zdCBCb3gmIGxheW91dEJveCwgT3B0aW9uYWw8TGF5b3V0VW5pdD4gdXNl
ZFdpZHRoKQorV2lkdGhBbmRNYXJnaW4gQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6
OmluRmxvd1JlcGxhY2VkV2lkdGhBbmRNYXJnaW4oY29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0
YXRlLCBjb25zdCBCb3gmIGxheW91dEJveCwgVXNlZEhvcml6b250YWxWYWx1ZXMgdXNlZFZhbHVl
cykKIHsKICAgICBBU1NFUlQobGF5b3V0Qm94LmlzSW5GbG93KCkgJiYgbGF5b3V0Qm94LnJlcGxh
Y2VkKCkpOwogCkBAIC0yMTMsMTIgKzIxMywxMiBAQCBXaWR0aEFuZE1hcmdpbiBCbG9ja0Zvcm1h
dHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5GbG93UmVwbGFjZWRXaWR0aEFuZE1hcmdpbihjbwog
ICAgIC8vIDIuIFRoZW4gdGhlIHJ1bGVzIGZvciBub24tcmVwbGFjZWQgYmxvY2stbGV2ZWwgZWxl
bWVudHMgYXJlIGFwcGxpZWQgdG8gZGV0ZXJtaW5lIHRoZSBtYXJnaW5zLgogCiAgICAgLy8gIzEK
LSAgICBhdXRvIHdpZHRoID0gaW5saW5lUmVwbGFjZWRXaWR0aEFuZE1hcmdpbihsYXlvdXRTdGF0
ZSwgbGF5b3V0Qm94LCB1c2VkV2lkdGgpLndpZHRoOworICAgIHVzZWRWYWx1ZXMud2lkdGggPSBp
bmxpbmVSZXBsYWNlZFdpZHRoQW5kTWFyZ2luKGxheW91dFN0YXRlLCBsYXlvdXRCb3gsIHVzZWRW
YWx1ZXMpLndpZHRoOwogICAgIC8vICMyCi0gICAgYXV0byBub25SZXBsYWNlZFdpZHRoQW5kTWFy
Z2luID0gaW5GbG93Tm9uUmVwbGFjZWRXaWR0aEFuZE1hcmdpbihsYXlvdXRTdGF0ZSwgbGF5b3V0
Qm94LCB3aWR0aCk7CisgICAgYXV0byBub25SZXBsYWNlZFdpZHRoQW5kTWFyZ2luID0gaW5GbG93
Tm9uUmVwbGFjZWRXaWR0aEFuZE1hcmdpbihsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94LCB1c2VkVmFs
dWVzKTsKIAotICAgIExPR19XSVRIX1NUUkVBTShGb3JtYXR0aW5nQ29udGV4dExheW91dCwgc3Ry
ZWFtIDw8ICJbV2lkdGhdW01hcmdpbl0gLT4gaW5mbG93IHJlcGxhY2VkIC0+IHdpZHRoKCIgPDwg
d2lkdGggPDwgInB4KSBtYXJnaW4oIiA8PCBub25SZXBsYWNlZFdpZHRoQW5kTWFyZ2luLnVzZWRN
YXJnaW4uc3RhcnQgPDwgInB4LCAiIDw8IG5vblJlcGxhY2VkV2lkdGhBbmRNYXJnaW4udXNlZE1h
cmdpbi5lbmQgPDwgInB4KSAtPiBsYXlvdXRCb3goIiA8PCAmbGF5b3V0Qm94IDw8ICIpIik7Ci0g
ICAgcmV0dXJuIHsgd2lkdGgsIG5vblJlcGxhY2VkV2lkdGhBbmRNYXJnaW4udXNlZE1hcmdpbiwg
bm9uUmVwbGFjZWRXaWR0aEFuZE1hcmdpbi5jb21wdXRlZE1hcmdpbiB9OworICAgIExPR19XSVRI
X1NUUkVBTShGb3JtYXR0aW5nQ29udGV4dExheW91dCwgc3RyZWFtIDw8ICJbV2lkdGhdW01hcmdp
bl0gLT4gaW5mbG93IHJlcGxhY2VkIC0+IHdpZHRoKCIgPDwgKnVzZWRWYWx1ZXMud2lkdGggPDwg
InB4KSBtYXJnaW4oIiA8PCBub25SZXBsYWNlZFdpZHRoQW5kTWFyZ2luLnVzZWRNYXJnaW4uc3Rh
cnQgPDwgInB4LCAiIDw8IG5vblJlcGxhY2VkV2lkdGhBbmRNYXJnaW4udXNlZE1hcmdpbi5lbmQg
PDwgInB4KSAtPiBsYXlvdXRCb3goIiA8PCAmbGF5b3V0Qm94IDw8ICIpIik7CisgICAgcmV0dXJu
IHsgKnVzZWRWYWx1ZXMud2lkdGgsIG5vblJlcGxhY2VkV2lkdGhBbmRNYXJnaW4udXNlZE1hcmdp
biwgbm9uUmVwbGFjZWRXaWR0aEFuZE1hcmdpbi5jb21wdXRlZE1hcmdpbiB9OwogfQogCiBQb2lu
dCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6c3RhdGljUG9zaXRpb24oY29uc3Qg
TGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBCb3gmIGxheW91dEJveCkKQEAgLTI0Miwy
MyArMjQyLDIzIEBAIFBvaW50IEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpzdGF0
aWNQb3NpdGlvbihjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0CiAgICAgcmV0dXJuIHsgbGVmdCwg
dG9wIH07CiB9CiAKLUhlaWdodEFuZE1hcmdpbiBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9t
ZXRyeTo6aW5GbG93SGVpZ2h0QW5kTWFyZ2luKGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0
ZSwgY29uc3QgQm94JiBsYXlvdXRCb3gsIE9wdGlvbmFsPExheW91dFVuaXQ+IHVzZWRIZWlnaHQp
CitIZWlnaHRBbmRNYXJnaW4gQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmluRmxv
d0hlaWdodEFuZE1hcmdpbihjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IEJv
eCYgbGF5b3V0Qm94LCBVc2VkVmVydGljYWxWYWx1ZXMgdXNlZFZhbHVlcykKIHsKICAgICBBU1NF
UlQobGF5b3V0Qm94LmlzSW5GbG93KCkpOwogCiAgICAgLy8gMTAuNi4yIElubGluZSByZXBsYWNl
ZCBlbGVtZW50cywgYmxvY2stbGV2ZWwgcmVwbGFjZWQgZWxlbWVudHMgaW4gbm9ybWFsIGZsb3cs
ICdpbmxpbmUtYmxvY2snCiAgICAgLy8gcmVwbGFjZWQgZWxlbWVudHMgaW4gbm9ybWFsIGZsb3cg
YW5kIGZsb2F0aW5nIHJlcGxhY2VkIGVsZW1lbnRzCiAgICAgaWYgKGxheW91dEJveC5yZXBsYWNl
ZCgpKQotICAgICAgICByZXR1cm4gaW5saW5lUmVwbGFjZWRIZWlnaHRBbmRNYXJnaW4obGF5b3V0
U3RhdGUsIGxheW91dEJveCwgdXNlZEhlaWdodCk7CisgICAgICAgIHJldHVybiBpbmxpbmVSZXBs
YWNlZEhlaWdodEFuZE1hcmdpbihsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94LCB1c2VkVmFsdWVzKTsK
IAogICAgIEhlaWdodEFuZE1hcmdpbiBoZWlnaHRBbmRNYXJnaW47CiAgICAgLy8gVE9ETzogRmln
dXJlIG91dCB0aGUgY2FzZSBmb3IgdGhlIGRvY3VtZW50IGVsZW1lbnQuIExldCdzIGp1c3QgY29t
cGxpY2F0ZWQtY2FzZSBpdCBmb3Igbm93LgogICAgIGlmIChsYXlvdXRCb3guaXNPdmVyZmxvd1Zp
c2libGUoKSAmJiAhbGF5b3V0Qm94LmlzRG9jdW1lbnRCb3goKSkKLSAgICAgICAgaGVpZ2h0QW5k
TWFyZ2luID0gaW5GbG93Tm9uUmVwbGFjZWRIZWlnaHRBbmRNYXJnaW4obGF5b3V0U3RhdGUsIGxh
eW91dEJveCwgdXNlZEhlaWdodCk7CisgICAgICAgIGhlaWdodEFuZE1hcmdpbiA9IGluRmxvd05v
blJlcGxhY2VkSGVpZ2h0QW5kTWFyZ2luKGxheW91dFN0YXRlLCBsYXlvdXRCb3gsIHVzZWRWYWx1
ZXMpOwogICAgIGVsc2UgewogICAgICAgICAvLyAxMC42LjYgQ29tcGxpY2F0ZWQgY2FzZXMKICAg
ICAgICAgLy8gQmxvY2stbGV2ZWwsIG5vbi1yZXBsYWNlZCBlbGVtZW50cyBpbiBub3JtYWwgZmxv
dyB3aGVuICdvdmVyZmxvdycgZG9lcyBub3QgY29tcHV0ZSB0byAndmlzaWJsZScgKGV4Y2VwdCBp
ZiB0aGUgJ292ZXJmbG93JyBwcm9wZXJ0eSdzIHZhbHVlIGhhcyBiZWVuIHByb3BhZ2F0ZWQgdG8g
dGhlIHZpZXdwb3J0KS4KLSAgICAgICAgaGVpZ2h0QW5kTWFyZ2luID0gY29tcGxpY2F0ZWRDYXNl
cyhsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94LCB1c2VkSGVpZ2h0KTsKKyAgICAgICAgaGVpZ2h0QW5k
TWFyZ2luID0gY29tcGxpY2F0ZWRDYXNlcyhsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94LCB1c2VkVmFs
dWVzKTsKICAgICB9CiAKICAgICBpZiAoIVF1aXJrczo6bmVlZHNTdHJldGNoaW5nKGxheW91dFN0
YXRlLCBsYXlvdXRCb3gpKQpAQCAtMjcwLDEzICsyNzAsMTMgQEAgSGVpZ2h0QW5kTWFyZ2luIEJs
b2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbkZsb3dIZWlnaHRBbmRNYXJnaW4oY29u
c3QgTGEKICAgICByZXR1cm4gaGVpZ2h0QW5kTWFyZ2luOwogfQogCi1XaWR0aEFuZE1hcmdpbiBC
bG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5GbG93V2lkdGhBbmRNYXJnaW4oY29u
c3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBCb3gmIGxheW91dEJveCwgT3B0aW9u
YWw8TGF5b3V0VW5pdD4gdXNlZFdpZHRoKQorV2lkdGhBbmRNYXJnaW4gQmxvY2tGb3JtYXR0aW5n
Q29udGV4dDo6R2VvbWV0cnk6OmluRmxvd1dpZHRoQW5kTWFyZ2luKGNvbnN0IExheW91dFN0YXRl
JiBsYXlvdXRTdGF0ZSwgY29uc3QgQm94JiBsYXlvdXRCb3gsIFVzZWRIb3Jpem9udGFsVmFsdWVz
IHVzZWRWYWx1ZXMpCiB7CiAgICAgQVNTRVJUKGxheW91dEJveC5pc0luRmxvdygpKTsKIAogICAg
IGlmICghbGF5b3V0Qm94LnJlcGxhY2VkKCkpCi0gICAgICAgIHJldHVybiBpbkZsb3dOb25SZXBs
YWNlZFdpZHRoQW5kTWFyZ2luKGxheW91dFN0YXRlLCBsYXlvdXRCb3gsIHVzZWRXaWR0aCk7Ci0g
ICAgcmV0dXJuIGluRmxvd1JlcGxhY2VkV2lkdGhBbmRNYXJnaW4obGF5b3V0U3RhdGUsIGxheW91
dEJveCwgdXNlZFdpZHRoKTsKKyAgICAgICAgcmV0dXJuIGluRmxvd05vblJlcGxhY2VkV2lkdGhB
bmRNYXJnaW4obGF5b3V0U3RhdGUsIGxheW91dEJveCwgdXNlZFZhbHVlcyk7CisgICAgcmV0dXJu
IGluRmxvd1JlcGxhY2VkV2lkdGhBbmRNYXJnaW4obGF5b3V0U3RhdGUsIGxheW91dEJveCwgdXNl
ZFZhbHVlcyk7CiB9CiAKIGJvb2wgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Omlu
c3RyaW5zaWNXaWR0aENvbnN0cmFpbnRzTmVlZENoaWxkcmVuV2lkdGgoY29uc3QgQm94JiBsYXlv
dXRCb3gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGlu
Zy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5s
aW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAKaW5kZXggNGIzYjMxNmQ0
NjEzYjU5ODFmNjIyZTdjNjAwYjA4ZjU4Nzc3YWM0Zi4uNmU0MTMxYmMzODhhYmJjNDZlMmZiNGUy
YjhjYWFhNmY4MDc0OTMwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGlu
ZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcApA
QCAtMTA4LDExICsxMDgsMTEgQEAgdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0
ZVdpZHRoQW5kTWFyZ2luKGNvbnN0IEJveCYgbGF5b3V0Qm94KSBjb25zdAogCiAgICAgV2lkdGhB
bmRNYXJnaW4gd2lkdGhBbmRNYXJnaW47CiAgICAgaWYgKGxheW91dEJveC5pc0Zsb2F0aW5nUG9z
aXRpb25lZCgpKQotICAgICAgICB3aWR0aEFuZE1hcmdpbiA9IEdlb21ldHJ5OjpmbG9hdGluZ1dp
ZHRoQW5kTWFyZ2luKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpOworICAgICAgICB3aWR0aEFuZE1h
cmdpbiA9IEdlb21ldHJ5OjpmbG9hdGluZ1dpZHRoQW5kTWFyZ2luKGxheW91dFN0YXRlLCBsYXlv
dXRCb3gsIHsgfSk7CiAgICAgZWxzZSBpZiAobGF5b3V0Qm94LmlzSW5saW5lQmxvY2tCb3goKSkK
ICAgICAgICAgd2lkdGhBbmRNYXJnaW4gPSBHZW9tZXRyeTo6aW5saW5lQmxvY2tXaWR0aEFuZE1h
cmdpbihsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KTsKICAgICBlbHNlIGlmIChsYXlvdXRCb3gucmVw
bGFjZWQoKSkKLSAgICAgICAgd2lkdGhBbmRNYXJnaW4gPSBHZW9tZXRyeTo6aW5saW5lUmVwbGFj
ZWRXaWR0aEFuZE1hcmdpbihsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KTsKKyAgICAgICAgd2lkdGhB
bmRNYXJnaW4gPSBHZW9tZXRyeTo6aW5saW5lUmVwbGFjZWRXaWR0aEFuZE1hcmdpbihsYXlvdXRT
dGF0ZSwgbGF5b3V0Qm94LCB7IH0pOwogICAgIGVsc2UKICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAKQEAgLTEyOCwxMSArMTI4LDExIEBAIHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRl
eHQ6OmNvbXB1dGVIZWlnaHRBbmRNYXJnaW4oY29uc3QgQm94JiBsYXlvdXRCb3gpIGNvbnN0CiAK
ICAgICBIZWlnaHRBbmRNYXJnaW4gaGVpZ2h0QW5kTWFyZ2luOwogICAgIGlmIChsYXlvdXRCb3gu
aXNGbG9hdGluZ1Bvc2l0aW9uZWQoKSkKLSAgICAgICAgaGVpZ2h0QW5kTWFyZ2luID0gR2VvbWV0
cnk6OmZsb2F0aW5nSGVpZ2h0QW5kTWFyZ2luKGxheW91dFN0YXRlLCBsYXlvdXRCb3gpOworICAg
ICAgICBoZWlnaHRBbmRNYXJnaW4gPSBHZW9tZXRyeTo6ZmxvYXRpbmdIZWlnaHRBbmRNYXJnaW4o
bGF5b3V0U3RhdGUsIGxheW91dEJveCwgeyB9KTsKICAgICBlbHNlIGlmIChsYXlvdXRCb3guaXNJ
bmxpbmVCbG9ja0JveCgpKQogICAgICAgICBoZWlnaHRBbmRNYXJnaW4gPSBHZW9tZXRyeTo6aW5s
aW5lQmxvY2tIZWlnaHRBbmRNYXJnaW4obGF5b3V0U3RhdGUsIGxheW91dEJveCk7CiAgICAgZWxz
ZSBpZiAobGF5b3V0Qm94LnJlcGxhY2VkKCkpCi0gICAgICAgIGhlaWdodEFuZE1hcmdpbiA9IEdl
b21ldHJ5OjppbmxpbmVSZXBsYWNlZEhlaWdodEFuZE1hcmdpbihsYXlvdXRTdGF0ZSwgbGF5b3V0
Qm94KTsKKyAgICAgICAgaGVpZ2h0QW5kTWFyZ2luID0gR2VvbWV0cnk6OmlubGluZVJlcGxhY2Vk
SGVpZ2h0QW5kTWFyZ2luKGxheW91dFN0YXRlLCBsYXlvdXRCb3gsIHsgfSk7CiAgICAgZWxzZQog
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRy
eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3Jt
YXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcAppbmRleCBjZjZiZGQwNzQ1NGI3NmEzNThkYzg4OGM5
M2E1YzcyY2UxZmUyNmE2Li43NTdhOTIxZjIwNDYzMTBiNjI1OTA0ZjFiMGRlOTNlMzQyZTU3NWM0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9Jbmxp
bmVGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcApA
QCAtNDYsNyArNDYsNyBAQCBXaWR0aEFuZE1hcmdpbiBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6
R2VvbWV0cnk6OmlubGluZUJsb2NrV2lkdGhBbmRNYXJnaW4oTGF5bwogCiAgICAgLy8gRXhhY3Rs
eSBhcyBpbmxpbmUgcmVwbGFjZWQgZWxlbWVudHMuCiAgICAgaWYgKGZvcm1hdHRpbmdDb250ZXh0
Um9vdC5yZXBsYWNlZCgpKQotICAgICAgICByZXR1cm4gaW5saW5lUmVwbGFjZWRXaWR0aEFuZE1h
cmdpbihsYXlvdXRTdGF0ZSwgZm9ybWF0dGluZ0NvbnRleHRSb290KTsKKyAgICAgICAgcmV0dXJu
IGlubGluZVJlcGxhY2VkV2lkdGhBbmRNYXJnaW4obGF5b3V0U3RhdGUsIGZvcm1hdHRpbmdDb250
ZXh0Um9vdCwgeyB9KTsKIAogICAgIC8vIDEwLjMuOSAnSW5saW5lLWJsb2NrJywgbm9uLXJlcGxh
Y2VkIGVsZW1lbnRzIGluIG5vcm1hbCBmbG93CiAKQEAgLTcxLDExICs3MSwxMSBAQCBIZWlnaHRB
bmRNYXJnaW4gSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbmxpbmVCbG9ja0hl
aWdodEFuZE1hcmdpbihjbwogCiAgICAgLy8gMTAuNi4yIElubGluZSByZXBsYWNlZCBlbGVtZW50
cywgYmxvY2stbGV2ZWwgcmVwbGFjZWQgZWxlbWVudHMgaW4gbm9ybWFsIGZsb3csICdpbmxpbmUt
YmxvY2snIHJlcGxhY2VkIGVsZW1lbnRzIGluIG5vcm1hbCBmbG93IGFuZCBmbG9hdGluZyByZXBs
YWNlZCBlbGVtZW50cwogICAgIGlmIChsYXlvdXRCb3gucmVwbGFjZWQoKSkKLSAgICAgICAgcmV0
dXJuIGlubGluZVJlcGxhY2VkSGVpZ2h0QW5kTWFyZ2luKGxheW91dFN0YXRlLCBsYXlvdXRCb3gp
OworICAgICAgICByZXR1cm4gaW5saW5lUmVwbGFjZWRIZWlnaHRBbmRNYXJnaW4obGF5b3V0U3Rh
dGUsIGxheW91dEJveCwgeyB9KTsKIAogICAgIC8vIDEwLjYuNiBDb21wbGljYXRlZCBjYXNlcwog
ICAgIC8vIC0gJ0lubGluZS1ibG9jaycsIG5vbi1yZXBsYWNlZCBlbGVtZW50cy4KLSAgICByZXR1
cm4gY29tcGxpY2F0ZWRDYXNlcyhsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94KTsKKyAgICByZXR1cm4g
Y29tcGxpY2F0ZWRDYXNlcyhsYXlvdXRTdGF0ZSwgbGF5b3V0Qm94LCB7IH0pOwogfQogCiB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>