<?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>189311</bug_id>
          
          <creation_ts>2018-09-05 11:20:20 -0700</creation_ts>
          <short_desc>[LFC] LayoutContext::displayBoxForLayoutBox() should return a Display::Box&amp;</short_desc>
          <delta_ts>2018-09-05 11:53:27 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>koivisto</cc>
    
    <cc>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>1456798</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2018-09-05 11:20:20 -0700</bug_when>
    <thetext>instead of Display::Box*
There should always be a valid display box associated with a layout box for layout purposes (it does not necessarily mean that there&apos;s _always_ a display box for every layout box -for example in inline formatting context)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1456803</commentid>
    <comment_count>1</comment_count>
      <attachid>348950</attachid>
    <who name="alan">zalan</who>
    <bug_when>2018-09-05 11:33:17 -0700</bug_when>
    <thetext>Created attachment 348950
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1456808</commentid>
    <comment_count>2</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2018-09-05 11:52:43 -0700</bug_when>
    <thetext>Committed r235681: &lt;https://trac.webkit.org/changeset/235681&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1456809</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-09-05 11:53:27 -0700</bug_when>
    <thetext>&lt;rdar://problem/44147961&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>348950</attachid>
            <date>2018-09-05 11:33:17 -0700</date>
            <delta_ts>2018-09-05 11:37:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-189311-20180905113314.patch</filename>
            <type>text/plain</type>
            <size>48753</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1Njc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTFjYmY0NmY3MGVmYmU1
YzRiMThlNjcwYjk2NWVmYzI5ZjdmZTM0NS4uN2RiNmU1ZTMxZGE1OWUzZjRkNmEyZGNmNGNjYzMy
NTBjNzAzOTZjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDczIEBACisyMDE4LTA5LTA1ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ10gTGF5b3V0Q29udGV4
dDo6ZGlzcGxheUJveEZvckxheW91dEJveCgpIHNob3VsZCByZXR1cm4gYSBEaXNwbGF5OjpCb3gm
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODkzMTEK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaGVuIHRo
ZSBsYXlvdXQgbG9naWMgbmVlZHMgYSBEaXNwbGF5OjpCb3gsIHdlIG11c3QgaGF2ZSBhbHJlYWR5
IGNyZWF0ZWQgb25lIGZvciB0aGUgYXNzb2NpYXRlZCBMYXlvdXQ6OkJveC4KKyAgICAgICAgKEl0
IGRvZXMgbm90IG5lY2Vzc2FyaWx5IG1lYW4gdGhhdCBldmV5IExheW91dDo6Qm94IGhhcyBhIERp
c3BsYXk6OkJveC4gRm9yIGV4YW1wbGUgaW4gY2FzZSBvZiBpbmxpbmUgZm9ybWF0dGluZyBjb250
ZXh0LAorICAgICAgICB3ZSBkb24ndCBjcmVhdGUgYSBEaXNwbGF5OjpCb3ggZm9yIGV2ZXJ5IGlu
bGluZSBib3gsIGJ1dCB0aGUgZm9ybWF0dGluZyBsb2dpYyBkb2VzIG5vdCByZXF1aXJlIHN1Y2gg
cGFpcnMuKQorCisgICAgICAgICogbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVPdXRPZkZsb3dI
b3Jpem9udGFsR2VvbWV0cnkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3Jt
YXR0aW5nQ29udGV4dDo6Y29tcHV0ZU91dE9mRmxvd1ZlcnRpY2FsR2VvbWV0cnkgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZUJvcmRl
ckFuZFBhZGRpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5n
Q29udGV4dDo6bWFwQm94VG9BbmNlc3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZv
cm1hdHRpbmdDb250ZXh0OjptYXBUb3BMZWZ0VG9BbmNlc3Rvcik6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0OjptYXBDb29yZGluYXRlVG9BbmNlc3Rvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0Ojp2YWxpZGF0ZUdlb21l
dHJ5Q29uc3RyYWludHNBZnRlckxheW91dCBjb25zdCk6CisgICAgICAgICogbGF5b3V0L0Zvcm1h
dHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0Ojpjb250
ZW50SGVpZ2h0Rm9yRm9ybWF0dGluZ0NvbnRleHRSb290KToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dDo6c3RhdGljVmVydGljYWxQb3NpdGlvbkZvck91dE9mRmxvd1Bvc2l0aW9uZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0OjpzdGF0aWNIb3Jpem9udGFsUG9zaXRpb25Gb3JPdXRPZkZs
b3dQb3NpdGlvbmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRl
eHQ6Okdlb21ldHJ5OjpzaHJpbmtUb0ZpdFdpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dOb25SZXBsYWNlZFZlcnRp
Y2FsR2VvbWV0cnkpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4
dDo6R2VvbWV0cnk6Om91dE9mRmxvd05vblJlcGxhY2VkSG9yaXpvbnRhbEdlb21ldHJ5KToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRP
ZkZsb3dSZXBsYWNlZFZlcnRpY2FsR2VvbWV0cnkpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
OjpGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Om91dE9mRmxvd1JlcGxhY2VkSG9yaXpvbnRh
bEdlb21ldHJ5KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6
Okdlb21ldHJ5Ojpjb21wbGljYXRlZENhc2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpmbG9hdGluZ05vblJlcGxhY2VkV2lkdGhBbmRN
YXJnaW4pOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6R2Vv
bWV0cnk6OmlubGluZVJlcGxhY2VkSGVpZ2h0QW5kTWFyZ2luKToKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbmxpbmVSZXBsYWNlZFdpZHRo
QW5kTWFyZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6
Okdlb21ldHJ5Ojpjb21wdXRlZFBhZGRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpG
b3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmNvbXB1dGVkTm9uQ29sbGFwc2VkSG9yaXpvbnRh
bE1hcmdpblZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRl
eHQ6Okdlb21ldHJ5Ojpjb21wdXRlZE5vbkNvbGxhcHNlZFZlcnRpY2FsTWFyZ2luVmFsdWUpOgor
ICAgICAgICAqIGxheW91dC9MYXlvdXRDb250ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpMYXlv
dXQ6OkxheW91dENvbnRleHQ6OmRpc3BsYXlCb3hGb3JMYXlvdXRCb3ggY29uc3QpOgorICAgICAg
ICAqIGxheW91dC9WZXJpZmljYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0Ojpv
dXRwdXRNaXNtYXRjaGluZ0Jsb2NrQm94SW5mb3JtYXRpb25JZk5lZWRlZCk6CisgICAgICAgICog
bGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZVN0YXRp
Y1Bvc2l0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0
aW5nQ29udGV4dDo6Y29tcHV0ZUVzdGltYXRlZE1hcmdpblRvcCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVFc3RpbWF0ZWRN
YXJnaW5Ub3BGb3JBbmNlc3RvcnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpC
bG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlRmxvYXRpbmdQb3NpdGlvbiBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVQ
b3NpdGlvblRvQXZvaWRGbG9hdHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpC
bG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlVmVydGljYWxQb3NpdGlvbkZvckZsb2F0Q2xl
YXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250
ZXh0Ojpjb21wdXRlSW5GbG93UG9zaXRpb25lZFBvc2l0aW9uIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZVdpZHRoQW5kTWFy
Z2luIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29u
dGV4dDo6Y29tcHV0ZUhlaWdodEFuZE1hcmdpbiBjb25zdCk6CisgICAgICAgICogbGF5b3V0L2Js
b2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5G
bG93Tm9uUmVwbGFjZWRIZWlnaHRBbmRNYXJnaW4pOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5GbG93Tm9uUmVwbGFjZWRXaWR0
aEFuZE1hcmdpbik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0Nv
bnRleHQ6Okdlb21ldHJ5OjpzdGF0aWNQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpMYXlv
dXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbkZsb3dQb3NpdGlvbmVkUG9z
aXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0
OjpHZW9tZXRyeTo6aW5GbG93SGVpZ2h0QW5kTWFyZ2luKToKKyAgICAgICAgKiBsYXlvdXQvYmxv
Y2tmb3JtYXR0aW5nL0Jsb2NrTWFyZ2luQ29sbGFwc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TGF5b3V0Ojppc01hcmdpblRvcENvbGxhcHNlZFdpdGhQYXJlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0Ojppc01hcmdpbkJvdHRvbUNvbGxhcHNlZFRocm91Z2gpOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6TWFyZ2luQ29s
bGFwc2U6OmlzTWFyZ2luQm90dG9tQ29sbGFwc2VkV2l0aFBhcmVudCk6CisgICAgICAgICogbGF5
b3V0L2Zsb2F0cy9GbG9hdGluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
OjpGbG9hdGluZ0NvbnRleHQ6OnBvc2l0aW9uRm9yRmxvYXQgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0OjpGbG9hdGluZ0NvbnRleHQ6OnZlcnRpY2FsUG9zaXRpb25XaXRoQ2xlYXJh
bmNlIGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvZmxvYXRzL0Zsb2F0aW5nU3RhdGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGbG9hdGluZ1N0YXRlOjphcHBlbmQpOgorICAgICAg
ICAqIGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91
dCBjb25zdCk6CisgICAgICAgICogbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpvdXRwdXRMYXlvdXRUcmVlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dDo6c2hvd0xheW91dFRyZWUpOgorCiAyMDE4LTA5LTA1ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQ10gRHJvcCBEaXNwbGF5
OkJveCBmcm9tIEZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlKiBmdW5jdGlvbnMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHQuY3BwCmluZGV4IDYxNDEyNGMyYTE1OWQx
ZDU5MzAwNGJlN2Y1MTdhY2JmY2RlOGZiZTYuLjkxYjBkMWRlMTIyMmFjMTAyODBkZTI5MWYzY2I4
YjMyZDNjY2M5OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5n
Q29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0
LmNwcApAQCAtNTUsNyArNTUsNyBAQCB2b2lkIEZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlT3V0
T2ZGbG93SG9yaXpvbnRhbEdlb21ldHJ5KExheW91dENvbnRleHQmIGxheW91dAogewogICAgIGF1
dG8gaG9yaXpvbnRhbEdlb21ldHJ5ID0gR2VvbWV0cnk6Om91dE9mRmxvd0hvcml6b250YWxHZW9t
ZXRyeShsYXlvdXRDb250ZXh0LCAqdGhpcywgbGF5b3V0Qm94KTsKIAotICAgIGF1dG8mIGRpc3Bs
YXlCb3ggPSAqbGF5b3V0Q29udGV4dC5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGxheW91dEJveCk7
CisgICAgYXV0byYgZGlzcGxheUJveCA9IGxheW91dENvbnRleHQuZGlzcGxheUJveEZvckxheW91
dEJveChsYXlvdXRCb3gpOwogICAgIGRpc3BsYXlCb3guc2V0TGVmdChob3Jpem9udGFsR2VvbWV0
cnkubGVmdCArIGhvcml6b250YWxHZW9tZXRyeS53aWR0aEFuZE1hcmdpbi5tYXJnaW4ubGVmdCk7
CiAgICAgZGlzcGxheUJveC5zZXRDb250ZW50Qm94V2lkdGgoaG9yaXpvbnRhbEdlb21ldHJ5Lndp
ZHRoQW5kTWFyZ2luLndpZHRoKTsKICAgICBkaXNwbGF5Qm94LnNldEhvcml6b250YWxNYXJnaW4o
aG9yaXpvbnRhbEdlb21ldHJ5LndpZHRoQW5kTWFyZ2luLm1hcmdpbik7CkBAIC02Niw3ICs2Niw3
IEBAIHZvaWQgRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVPdXRPZkZsb3dWZXJ0aWNhbEdlb21l
dHJ5KExheW91dENvbnRleHQmIGxheW91dENvCiB7CiAgICAgYXV0byB2ZXJ0aWNhbEdlb21ldHJ5
ID0gR2VvbWV0cnk6Om91dE9mRmxvd1ZlcnRpY2FsR2VvbWV0cnkobGF5b3V0Q29udGV4dCwgbGF5
b3V0Qm94KTsKIAotICAgIGF1dG8mIGRpc3BsYXlCb3ggPSAqbGF5b3V0Q29udGV4dC5kaXNwbGF5
Qm94Rm9yTGF5b3V0Qm94KGxheW91dEJveCk7CisgICAgYXV0byYgZGlzcGxheUJveCA9IGxheW91
dENvbnRleHQuZGlzcGxheUJveEZvckxheW91dEJveChsYXlvdXRCb3gpOwogICAgIGRpc3BsYXlC
b3guc2V0VG9wKHZlcnRpY2FsR2VvbWV0cnkudG9wICsgdmVydGljYWxHZW9tZXRyeS5oZWlnaHRB
bmRNYXJnaW4ubWFyZ2luLnRvcCk7CiAgICAgZGlzcGxheUJveC5zZXRDb250ZW50Qm94SGVpZ2h0
KHZlcnRpY2FsR2VvbWV0cnkuaGVpZ2h0QW5kTWFyZ2luLmhlaWdodCk7CiAgICAgQVNTRVJUKCF2
ZXJ0aWNhbEdlb21ldHJ5LmhlaWdodEFuZE1hcmdpbi5jb2xsYXBzZWRNYXJnaW4pOwpAQCAtNzYs
NyArNzYsNyBAQCB2b2lkIEZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlT3V0T2ZGbG93VmVydGlj
YWxHZW9tZXRyeShMYXlvdXRDb250ZXh0JiBsYXlvdXRDbwogCiB2b2lkIEZvcm1hdHRpbmdDb250
ZXh0Ojpjb21wdXRlQm9yZGVyQW5kUGFkZGluZyhMYXlvdXRDb250ZXh0JiBsYXlvdXRDb250ZXh0
LCBjb25zdCBCb3gmIGxheW91dEJveCkgY29uc3QKIHsKLSAgICBhdXRvJiBkaXNwbGF5Qm94ID0g
KmxheW91dENvbnRleHQuZGlzcGxheUJveEZvckxheW91dEJveChsYXlvdXRCb3gpOworICAgIGF1
dG8mIGRpc3BsYXlCb3ggPSBsYXlvdXRDb250ZXh0LmRpc3BsYXlCb3hGb3JMYXlvdXRCb3gobGF5
b3V0Qm94KTsKICAgICBkaXNwbGF5Qm94LnNldEJvcmRlcihHZW9tZXRyeTo6Y29tcHV0ZWRCb3Jk
ZXIobGF5b3V0Q29udGV4dCwgbGF5b3V0Qm94KSk7CiAgICAgZGlzcGxheUJveC5zZXRQYWRkaW5n
KEdlb21ldHJ5Ojpjb21wdXRlZFBhZGRpbmcobGF5b3V0Q29udGV4dCwgbGF5b3V0Qm94KSk7CiB9
CkBAIC0xMzMsMjAgKzEzMywxOSBAQCBEaXNwbGF5OjpCb3ggRm9ybWF0dGluZ0NvbnRleHQ6Om1h
cEJveFRvQW5jZXN0b3IoY29uc3QgTGF5b3V0Q29udGV4dCYgbGF5b3V0Q29udAogewogICAgIEFT
U0VSVChsYXlvdXRCb3guaXNEZXNjZW5kYW50T2YoYW5jZXN0b3IpKTsKIAotICAgIGF1dG8qIGRp
c3BsYXlCb3ggPSBsYXlvdXRDb250ZXh0LmRpc3BsYXlCb3hGb3JMYXlvdXRCb3gobGF5b3V0Qm94
KTsKLSAgICBBU1NFUlQoZGlzcGxheUJveCk7Ci0gICAgYXV0byB0b3BMZWZ0ID0gZGlzcGxheUJv
eC0+dG9wTGVmdCgpOworICAgIGF1dG8mIGRpc3BsYXlCb3ggPSBsYXlvdXRDb250ZXh0LmRpc3Bs
YXlCb3hGb3JMYXlvdXRCb3gobGF5b3V0Qm94KTsKKyAgICBhdXRvIHRvcExlZnQgPSBkaXNwbGF5
Qm94LnRvcExlZnQoKTsKIAogICAgIGF1dG8qIGNvbnRhaW5pbmdCbG9jayA9IGxheW91dEJveC5j
b250YWluaW5nQmxvY2soKTsKICAgICBmb3IgKDsgY29udGFpbmluZ0Jsb2NrICYmIGNvbnRhaW5p
bmdCbG9jayAhPSAmYW5jZXN0b3I7IGNvbnRhaW5pbmdCbG9jayA9IGNvbnRhaW5pbmdCbG9jay0+
Y29udGFpbmluZ0Jsb2NrKCkpCi0gICAgICAgIHRvcExlZnQubW92ZUJ5KGxheW91dENvbnRleHQu
ZGlzcGxheUJveEZvckxheW91dEJveCgqY29udGFpbmluZ0Jsb2NrKS0+dG9wTGVmdCgpKTsKKyAg
ICAgICAgdG9wTGVmdC5tb3ZlQnkobGF5b3V0Q29udGV4dC5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94
KCpjb250YWluaW5nQmxvY2spLnRvcExlZnQoKSk7CiAKICAgICBpZiAoIWNvbnRhaW5pbmdCbG9j
aykgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIERpc3Bs
YXk6OkJveCgqZGlzcGxheUJveCk7CisgICAgICAgIHJldHVybiBEaXNwbGF5OjpCb3goZGlzcGxh
eUJveCk7CiAgICAgfQogCi0gICAgYXV0byBtYXBwZWREaXNwbGF5Qm94ID0gRGlzcGxheTo6Qm94
KCpkaXNwbGF5Qm94KTsKKyAgICBhdXRvIG1hcHBlZERpc3BsYXlCb3ggPSBEaXNwbGF5OjpCb3go
ZGlzcGxheUJveCk7CiAgICAgbWFwcGVkRGlzcGxheUJveC5zZXRUb3BMZWZ0KHRvcExlZnQpOwog
ICAgIHJldHVybiBtYXBwZWREaXNwbGF5Qm94OwogfQpAQCAtMTU0LDcgKzE1Myw3IEBAIERpc3Bs
YXk6OkJveCBGb3JtYXR0aW5nQ29udGV4dDo6bWFwQm94VG9BbmNlc3Rvcihjb25zdCBMYXlvdXRD
b250ZXh0JiBsYXlvdXRDb250CiBQb3NpdGlvbiBGb3JtYXR0aW5nQ29udGV4dDo6bWFwVG9wTGVm
dFRvQW5jZXN0b3IoY29uc3QgTGF5b3V0Q29udGV4dCYgbGF5b3V0Q29udGV4dCwgY29uc3QgQm94
JiBsYXlvdXRCb3gsIGNvbnN0IENvbnRhaW5lciYgYW5jZXN0b3IpCiB7CiAgICAgQVNTRVJUKGxh
eW91dEJveC5pc0Rlc2NlbmRhbnRPZihhbmNlc3RvcikpOwotICAgIHJldHVybiBtYXBDb29yZGlu
YXRlVG9BbmNlc3RvcihsYXlvdXRDb250ZXh0LCBsYXlvdXRDb250ZXh0LmRpc3BsYXlCb3hGb3JM
YXlvdXRCb3gobGF5b3V0Qm94KS0+dG9wTGVmdCgpLCAqbGF5b3V0Qm94LmNvbnRhaW5pbmdCbG9j
aygpLCBhbmNlc3Rvcik7CisgICAgcmV0dXJuIG1hcENvb3JkaW5hdGVUb0FuY2VzdG9yKGxheW91
dENvbnRleHQsIGxheW91dENvbnRleHQuZGlzcGxheUJveEZvckxheW91dEJveChsYXlvdXRCb3gp
LnRvcExlZnQoKSwgKmxheW91dEJveC5jb250YWluaW5nQmxvY2soKSwgYW5jZXN0b3IpOwogfQog
CiBQb3NpdGlvbiBGb3JtYXR0aW5nQ29udGV4dDo6bWFwQ29vcmRpbmF0ZVRvQW5jZXN0b3IoY29u
c3QgTGF5b3V0Q29udGV4dCYgbGF5b3V0Q29udGV4dCwgUG9zaXRpb24gcG9zaXRpb24sIGNvbnN0
IENvbnRhaW5lciYgY29udGFpbmluZ0Jsb2NrLCBjb25zdCBDb250YWluZXImIGFuY2VzdG9yKQpA
QCAtMTYyLDcgKzE2MSw3IEBAIFBvc2l0aW9uIEZvcm1hdHRpbmdDb250ZXh0OjptYXBDb29yZGlu
YXRlVG9BbmNlc3Rvcihjb25zdCBMYXlvdXRDb250ZXh0JiBsYXlvdXRDCiAgICAgYXV0byBtYXBw
ZWRQb3NpdGlvbiA9IHBvc2l0aW9uOwogICAgIGF1dG8qIGNvbnRhaW5lciA9ICZjb250YWluaW5n
QmxvY2s7CiAgICAgZm9yICg7IGNvbnRhaW5lciAmJiBjb250YWluZXIgIT0gJmFuY2VzdG9yOyBj
b250YWluZXIgPSBjb250YWluZXItPmNvbnRhaW5pbmdCbG9jaygpKQotICAgICAgICBtYXBwZWRQ
b3NpdGlvbi5tb3ZlQnkobGF5b3V0Q29udGV4dC5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KCpjb250
YWluZXIpLT50b3BMZWZ0KCkpOworICAgICAgICBtYXBwZWRQb3NpdGlvbi5tb3ZlQnkobGF5b3V0
Q29udGV4dC5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KCpjb250YWluZXIpLnRvcExlZnQoKSk7CiAK
ICAgICBpZiAoIWNvbnRhaW5lcikgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAg
LTE4MiwyNSArMTgxLDI0IEBAIHZvaWQgRm9ybWF0dGluZ0NvbnRleHQ6OnZhbGlkYXRlR2VvbWV0
cnlDb25zdHJhaW50c0FmdGVyTGF5b3V0KGNvbnN0IExheW91dENvbnRlCiAgICAgZm9yIChhdXRv
JiBsYXlvdXRCb3ggOiBkZXNjZW5kYW50c09mVHlwZTxCb3g+KGZvcm1hdHRpbmdDb250ZXh0Um9v
dCkpIHsKICAgICAgICAgaWYgKCZsYXlvdXRCb3guZm9ybWF0dGluZ0NvbnRleHRSb290KCkgIT0g
JmZvcm1hdHRpbmdDb250ZXh0Um9vdCkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBh
dXRvJiBjb250YWluaW5nQmxvY2tEaXNwbGF5Qm94ID0gKmxheW91dENvbnRleHQuZGlzcGxheUJv
eEZvckxheW91dEJveCgqbGF5b3V0Qm94LmNvbnRhaW5pbmdCbG9jaygpKTsKLSAgICAgICAgYXV0
byogZGlzcGxheUJveCA9IGxheW91dENvbnRleHQuZGlzcGxheUJveEZvckxheW91dEJveChsYXlv
dXRCb3gpOwotICAgICAgICBBU1NFUlQoZGlzcGxheUJveCk7CisgICAgICAgIGF1dG8mIGNvbnRh
aW5pbmdCbG9ja0Rpc3BsYXlCb3ggPSBsYXlvdXRDb250ZXh0LmRpc3BsYXlCb3hGb3JMYXlvdXRC
b3goKmxheW91dEJveC5jb250YWluaW5nQmxvY2soKSk7CisgICAgICAgIGF1dG8mIGRpc3BsYXlC
b3ggPSBsYXlvdXRDb250ZXh0LmRpc3BsYXlCb3hGb3JMYXlvdXRCb3gobGF5b3V0Qm94KTsKIAog
ICAgICAgICAvLyAxMC4zLjMgQmxvY2stbGV2ZWwsIG5vbi1yZXBsYWNlZCBlbGVtZW50cyBpbiBu
b3JtYWwgZmxvdwogICAgICAgICAvLyAxMC4zLjcgQWJzb2x1dGVseSBwb3NpdGlvbmVkLCBub24t
cmVwbGFjZWQgZWxlbWVudHMKICAgICAgICAgaWYgKChsYXlvdXRCb3guaXNCbG9ja0xldmVsQm94
KCkgfHwgbGF5b3V0Qm94LmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpKSAmJiAhbGF5b3V0Qm94LnJl
cGxhY2VkKCkpIHsKICAgICAgICAgICAgIC8vIG1hcmdpbi1sZWZ0ICsgYm9yZGVyLWxlZnQtd2lk
dGggKyBwYWRkaW5nLWxlZnQgKyB3aWR0aCArIHBhZGRpbmctcmlnaHQgKyBib3JkZXItcmlnaHQt
d2lkdGggKyBtYXJnaW4tcmlnaHQgPSB3aWR0aCBvZiBjb250YWluaW5nIGJsb2NrCiAgICAgICAg
ICAgICBhdXRvIGNvbnRhaW5pbmdCbG9ja1dpZHRoID0gY29udGFpbmluZ0Jsb2NrRGlzcGxheUJv
eC5jb250ZW50Qm94V2lkdGgoKTsKLSAgICAgICAgICAgIEFTU0VSVChkaXNwbGF5Qm94LT5tYXJn
aW5MZWZ0KCkgKyBkaXNwbGF5Qm94LT5ib3JkZXJMZWZ0KCkgKyBkaXNwbGF5Qm94LT5wYWRkaW5n
TGVmdCgpLnZhbHVlX29yKDApICsgZGlzcGxheUJveC0+Y29udGVudEJveFdpZHRoKCkKLSAgICAg
ICAgICAgICAgICArIGRpc3BsYXlCb3gtPnBhZGRpbmdSaWdodCgpLnZhbHVlX29yKDApICsgZGlz
cGxheUJveC0+Ym9yZGVyUmlnaHQoKSArIGRpc3BsYXlCb3gtPm1hcmdpblJpZ2h0KCkgPT0gY29u
dGFpbmluZ0Jsb2NrV2lkdGgpOworICAgICAgICAgICAgQVNTRVJUKGRpc3BsYXlCb3gubWFyZ2lu
TGVmdCgpICsgZGlzcGxheUJveC5ib3JkZXJMZWZ0KCkgKyBkaXNwbGF5Qm94LnBhZGRpbmdMZWZ0
KCkudmFsdWVfb3IoMCkgKyBkaXNwbGF5Qm94LmNvbnRlbnRCb3hXaWR0aCgpCisgICAgICAgICAg
ICAgICAgKyBkaXNwbGF5Qm94LnBhZGRpbmdSaWdodCgpLnZhbHVlX29yKDApICsgZGlzcGxheUJv
eC5ib3JkZXJSaWdodCgpICsgZGlzcGxheUJveC5tYXJnaW5SaWdodCgpID09IGNvbnRhaW5pbmdC
bG9ja1dpZHRoKTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIDEwLjYuNCBBYnNvbHV0ZWx5IHBv
c2l0aW9uZWQsIG5vbi1yZXBsYWNlZCBlbGVtZW50cwogICAgICAgICBpZiAobGF5b3V0Qm94Lmlz
T3V0T2ZGbG93UG9zaXRpb25lZCgpICYmICFsYXlvdXRCb3gucmVwbGFjZWQoKSkgewogICAgICAg
ICAgICAgLy8gdG9wICsgbWFyZ2luLXRvcCArIGJvcmRlci10b3Atd2lkdGggKyBwYWRkaW5nLXRv
cCArIGhlaWdodCArIHBhZGRpbmctYm90dG9tICsgYm9yZGVyLWJvdHRvbS13aWR0aCArIG1hcmdp
bi1ib3R0b20gKyBib3R0b20gPSBoZWlnaHQgb2YgY29udGFpbmluZyBibG9jawogICAgICAgICAg
ICAgYXV0byBjb250YWluaW5nQmxvY2tIZWlnaHQgPSBjb250YWluaW5nQmxvY2tEaXNwbGF5Qm94
LmNvbnRlbnRCb3hIZWlnaHQoKTsKLSAgICAgICAgICAgIEFTU0VSVChkaXNwbGF5Qm94LT50b3Ao
KSArIGRpc3BsYXlCb3gtPm1hcmdpblRvcCgpICsgZGlzcGxheUJveC0+Ym9yZGVyVG9wKCkgKyBk
aXNwbGF5Qm94LT5wYWRkaW5nVG9wKCkudmFsdWVfb3IoMCkgKyBkaXNwbGF5Qm94LT5jb250ZW50
Qm94SGVpZ2h0KCkKLSAgICAgICAgICAgICAgICArIGRpc3BsYXlCb3gtPnBhZGRpbmdCb3R0b20o
KS52YWx1ZV9vcigwKSArIGRpc3BsYXlCb3gtPmJvcmRlckJvdHRvbSgpICsgZGlzcGxheUJveC0+
bWFyZ2luQm90dG9tKCkgPT0gY29udGFpbmluZ0Jsb2NrSGVpZ2h0KTsKKyAgICAgICAgICAgIEFT
U0VSVChkaXNwbGF5Qm94LnRvcCgpICsgZGlzcGxheUJveC5tYXJnaW5Ub3AoKSArIGRpc3BsYXlC
b3guYm9yZGVyVG9wKCkgKyBkaXNwbGF5Qm94LnBhZGRpbmdUb3AoKS52YWx1ZV9vcigwKSArIGRp
c3BsYXlCb3guY29udGVudEJveEhlaWdodCgpCisgICAgICAgICAgICAgICAgKyBkaXNwbGF5Qm94
LnBhZGRpbmdCb3R0b20oKS52YWx1ZV9vcigwKSArIGRpc3BsYXlCb3guYm9yZGVyQm90dG9tKCkg
KyBkaXNwbGF5Qm94Lm1hcmdpbkJvdHRvbSgpID09IGNvbnRhaW5pbmdCbG9ja0hlaWdodCk7CiAg
ICAgICAgIH0KICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9y
bWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0
dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAKaW5kZXggZDExZGI5NjhhODNhYmZhM2I2NmQwNDJmYzE2
MjJmY2Y2NTU5ZmYwOS4uNzdkOTI0MWM0YWIzNmJhYzM1YzQ3MGQxZGU0NTU0NGZlYzBhYmQ3YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0
cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dEdlb21l
dHJ5LmNwcApAQCAtNTQsMTAgKzU0LDEwIEBAIHN0YXRpYyBMYXlvdXRVbml0IGNvbnRlbnRIZWln
aHRGb3JGb3JtYXR0aW5nQ29udGV4dFJvb3QoTGF5b3V0Q29udGV4dCYgbGF5b3V0Q29uCiAgICAg
aWYgKGZvcm1hdHRpbmdSb290Q29udGFpbmVyLmVzdGFibGlzaGVzSW5saW5lRm9ybWF0dGluZ0Nv
bnRleHQoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBhdXRvKiBmaXJzdERpc3BsYXlCb3gg
PSBsYXlvdXRDb250ZXh0LmRpc3BsYXlCb3hGb3JMYXlvdXRCb3goKmZvcm1hdHRpbmdSb290Q29u
dGFpbmVyLmZpcnN0SW5GbG93Q2hpbGQoKSk7Ci0gICAgYXV0byogbGFzdERpc3BsYXlCb3ggPSBs
YXlvdXRDb250ZXh0LmRpc3BsYXlCb3hGb3JMYXlvdXRCb3goKmZvcm1hdHRpbmdSb290Q29udGFp
bmVyLmxhc3RJbkZsb3dDaGlsZCgpKTsKLSAgICBhdXRvIHRvcCA9IGZpcnN0RGlzcGxheUJveC0+
cmVjdFdpdGhNYXJnaW4oKS50b3AoKTsKLSAgICBhdXRvIGJvdHRvbSA9IGxhc3REaXNwbGF5Qm94
LT5yZWN0V2l0aE1hcmdpbigpLmJvdHRvbSgpOworICAgIGF1dG8mIGZpcnN0RGlzcGxheUJveCA9
IGxheW91dENvbnRleHQuZGlzcGxheUJveEZvckxheW91dEJveCgqZm9ybWF0dGluZ1Jvb3RDb250
YWluZXIuZmlyc3RJbkZsb3dDaGlsZCgpKTsKKyAgICBhdXRvJiBsYXN0RGlzcGxheUJveCA9IGxh
eW91dENvbnRleHQuZGlzcGxheUJveEZvckxheW91dEJveCgqZm9ybWF0dGluZ1Jvb3RDb250YWlu
ZXIubGFzdEluRmxvd0NoaWxkKCkpOworICAgIGF1dG8gdG9wID0gZmlyc3REaXNwbGF5Qm94LnJl
Y3RXaXRoTWFyZ2luKCkudG9wKCk7CisgICAgYXV0byBib3R0b20gPSBsYXN0RGlzcGxheUJveC5y
ZWN0V2l0aE1hcmdpbigpLmJvdHRvbSgpOwogCiAgICAgYXV0byogZm9ybWF0dGluZ0NvbnRleHRS
b290ID0gJmxheW91dEJveDsKICAgICAvLyBUT0RPOiBUaGUgZG9jdW1lbnQgcmVuZGVyZXIgaXMg
bm90IGEgZm9ybWF0dGluZyBjb250ZXh0IHJvb3QgYnkgZGVmYXVsdCBhdCBhbGwuIE5lZWQgdG8g
ZmluZCBvdXQgd2hhdCBpdCBpcy4KQEAgLTEwMywxNyArMTAzLDE3IEBAIHN0YXRpYyBMYXlvdXRV
bml0IHN0YXRpY1ZlcnRpY2FsUG9zaXRpb25Gb3JPdXRPZkZsb3dQb3NpdGlvbmVkKGNvbnN0IExh
eW91dENvbnRlCiAgICAgTGF5b3V0VW5pdCB0b3A7CiAgICAgaWYgKGF1dG8qIHByZXZpb3VzSW5G
bG93U2libGluZyA9IGxheW91dEJveC5wcmV2aW91c0luRmxvd1NpYmxpbmcoKSkgewogICAgICAg
ICAvLyBBZGQgc2libGluZyBvZmZzZXQKLSAgICAgICAgYXV0byYgcHJldmlvdXNJbkZsb3dEaXNw
bGF5Qm94ID0gKmxheW91dENvbnRleHQuZGlzcGxheUJveEZvckxheW91dEJveCgqcHJldmlvdXNJ
bkZsb3dTaWJsaW5nKTsKKyAgICAgICAgYXV0byYgcHJldmlvdXNJbkZsb3dEaXNwbGF5Qm94ID0g
bGF5b3V0Q29udGV4dC5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KCpwcmV2aW91c0luRmxvd1NpYmxp
bmcpOwogICAgICAgICB0b3AgKz0gcHJldmlvdXNJbkZsb3dEaXNwbGF5Qm94LmJvdHRvbSgpICsg
cHJldmlvdXNJbkZsb3dEaXNwbGF5Qm94Lm5vbkNvbGxhcHNlZE1hcmdpbkJvdHRvbSgpOwogICAg
IH0gZWxzZSB7CiAgICAgICAgIEFTU0VSVChsYXlvdXRCb3gucGFyZW50KCkpOwotICAgICAgICB0
b3AgPSBsYXlvdXRDb250ZXh0LmRpc3BsYXlCb3hGb3JMYXlvdXRCb3goKmxheW91dEJveC5wYXJl
bnQoKSktPmNvbnRlbnRCb3hUb3AoKTsKKyAgICAgICAgdG9wID0gbGF5b3V0Q29udGV4dC5kaXNw
bGF5Qm94Rm9yTGF5b3V0Qm94KCpsYXlvdXRCb3gucGFyZW50KCkpLmNvbnRlbnRCb3hUb3AoKTsK
ICAgICB9CiAKICAgICAvLyBSZXNvbHZlIHRvcCBhbGwgdGhlIHdheSB1cCB0byB0aGUgY29udGFp
bmluZyBibG9jay4KICAgICBhdXRvKiBjb250YWluaW5nQmxvY2sgPSBsYXlvdXRCb3guY29udGFp
bmluZ0Jsb2NrKCk7CiAgICAgZm9yIChhdXRvKiBjb250YWluZXIgPSBsYXlvdXRCb3gucGFyZW50
KCk7IGNvbnRhaW5lciAhPSBjb250YWluaW5nQmxvY2s7IGNvbnRhaW5lciA9IGNvbnRhaW5lci0+
Y29udGFpbmluZ0Jsb2NrKCkpIHsKLSAgICAgICAgYXV0byYgZGlzcGxheUJveCA9ICpsYXlvdXRD
b250ZXh0LmRpc3BsYXlCb3hGb3JMYXlvdXRCb3goKmNvbnRhaW5lcik7CisgICAgICAgIGF1dG8m
IGRpc3BsYXlCb3ggPSBsYXlvdXRDb250ZXh0LmRpc3BsYXlCb3hGb3JMYXlvdXRCb3goKmNvbnRh
aW5lcik7CiAgICAgICAgIC8vIERpc3BsYXk6OkJveDo6dG9wIGlzIHRoZSBib3JkZXIgYm94IHRv
cCBwb3NpdGlvbiBpbiBpdHMgY29udGFpbmluZyBibG9jaydzIGNvb3JkaW5hdGUgc3lzdGVtLgog
ICAgICAgICB0b3AgKz0gZGlzcGxheUJveC50b3AoKTsKICAgICAgICAgQVNTRVJUKCFjb250YWlu
ZXItPmlzUG9zaXRpb25lZCgpKTsKQEAgLTEyOSwxMiArMTI5LDEyIEBAIHN0YXRpYyBMYXlvdXRV
bml0IHN0YXRpY0hvcml6b250YWxQb3NpdGlvbkZvck91dE9mRmxvd1Bvc2l0aW9uZWQoY29uc3Qg
TGF5b3V0Q29uCiAKICAgICAvLyBTdGFydCB3aXRoIHRoaXMgYm94J3MgYm9yZGVyIGJveCBvZmZz
ZXQgZnJvbSB0aGUgcGFyZW50J3MgYm9yZGVyIGJveC4KICAgICBBU1NFUlQobGF5b3V0Qm94LnBh
cmVudCgpKTsKLSAgICBhdXRvIGxlZnQgPSBsYXlvdXRDb250ZXh0LmRpc3BsYXlCb3hGb3JMYXlv
dXRCb3goKmxheW91dEJveC5wYXJlbnQoKSktPmNvbnRlbnRCb3hMZWZ0KCk7CisgICAgYXV0byBs
ZWZ0ID0gbGF5b3V0Q29udGV4dC5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KCpsYXlvdXRCb3gucGFy
ZW50KCkpLmNvbnRlbnRCb3hMZWZ0KCk7CiAKICAgICAvLyBSZXNvbHZlIGxlZnQgYWxsIHRoZSB3
YXkgdXAgdG8gdGhlIGNvbnRhaW5pbmcgYmxvY2suCiAgICAgYXV0byogY29udGFpbmluZ0Jsb2Nr
ID0gbGF5b3V0Qm94LmNvbnRhaW5pbmdCbG9jaygpOwogICAgIGZvciAoYXV0byogY29udGFpbmVy
ID0gbGF5b3V0Qm94LnBhcmVudCgpOyBjb250YWluZXIgIT0gY29udGFpbmluZ0Jsb2NrOyBjb250
YWluZXIgPSBjb250YWluZXItPmNvbnRhaW5pbmdCbG9jaygpKSB7Ci0gICAgICAgIGF1dG8mIGRp
c3BsYXlCb3ggPSAqbGF5b3V0Q29udGV4dC5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KCpjb250YWlu
ZXIpOworICAgICAgICBhdXRvJiBkaXNwbGF5Qm94ID0gbGF5b3V0Q29udGV4dC5kaXNwbGF5Qm94
Rm9yTGF5b3V0Qm94KCpjb250YWluZXIpOwogICAgICAgICAvLyBEaXNwbGF5OjpCb3g6OmxlZnQg
aXMgdGhlIGJvcmRlciBib3ggbGVmdCBwb3NpdGlvbiBpbiBpdHMgY29udGFpbmluZyBibG9jaydz
IGNvb3JkaW5hdGUgc3lzdGVtLgogICAgICAgICBsZWZ0ICs9IGRpc3BsYXlCb3gubGVmdCgpOwog
ICAgICAgICBBU1NFUlQoIWNvbnRhaW5lci0+aXNQb3NpdGlvbmVkKCkpOwpAQCAtMTUzLDcgKzE1
Myw3IEBAIExheW91dFVuaXQgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpzaHJpbmtUb0Zp
dFdpZHRoKExheW91dENvbnRleHQmIGxheW91dENvCiAgICAgLy8gJ3BhZGRpbmctbGVmdCcsICdw
YWRkaW5nLXJpZ2h0JywgJ2JvcmRlci1yaWdodC13aWR0aCcsICdtYXJnaW4tcmlnaHQnLCBhbmQg
dGhlIHdpZHRocyBvZiBhbnkgcmVsZXZhbnQgc2Nyb2xsIGJhcnMuCiAKICAgICAvLyBUaGVuIHRo
ZSBzaHJpbmstdG8tZml0IHdpZHRoIGlzOiBtaW4obWF4KHByZWZlcnJlZCBtaW5pbXVtIHdpZHRo
LCBhdmFpbGFibGUgd2lkdGgpLCBwcmVmZXJyZWQgd2lkdGgpLgotICAgIGF1dG8gYXZhaWxhYmxl
V2lkdGggPSBsYXlvdXRDb250ZXh0LmRpc3BsYXlCb3hGb3JMYXlvdXRCb3goKmxheW91dEJveC5j
b250YWluaW5nQmxvY2soKSktPndpZHRoKCk7CisgICAgYXV0byBhdmFpbGFibGVXaWR0aCA9IGxh
eW91dENvbnRleHQuZGlzcGxheUJveEZvckxheW91dEJveCgqbGF5b3V0Qm94LmNvbnRhaW5pbmdC
bG9jaygpKS53aWR0aCgpOwogICAgIGF1dG8gaW5zdHJpbnNpY1dpZHRoQ29uc3RyYWludHMgPSBm
b3JtYXR0aW5nQ29udGV4dC5pbnN0cmluc2ljV2lkdGhDb25zdHJhaW50cyhsYXlvdXRDb250ZXh0
LCBsYXlvdXRCb3gpOwogICAgIHJldHVybiBzdGQ6Om1pbihzdGQ6Om1heChpbnN0cmluc2ljV2lk
dGhDb25zdHJhaW50cy5taW5pbXVtLCBhdmFpbGFibGVXaWR0aCksIGluc3RyaW5zaWNXaWR0aENv
bnN0cmFpbnRzLm1heGltdW0pOwogfQpAQCAtMTg3LDggKzE4Nyw4IEBAIFZlcnRpY2FsR2VvbWV0
cnkgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dOb25SZXBsYWNlZFZlcnRp
Y2FsR2VvbWV0CiAgICAgLy8gNi4gJ2JvdHRvbScgaXMgJ2F1dG8nLCAndG9wJyBhbmQgJ2hlaWdo
dCcgYXJlIG5vdCAnYXV0bycsIHRoZW4gc2V0ICdhdXRvJyB2YWx1ZXMgZm9yICdtYXJnaW4tdG9w
JyBhbmQgJ21hcmdpbi1ib3R0b20nIHRvIDAgYW5kIHNvbHZlIGZvciAnYm90dG9tJwogCiAgICAg
YXV0byYgc3R5bGUgPSBsYXlvdXRCb3guc3R5bGUoKTsKLSAgICBhdXRvJiBkaXNwbGF5Qm94ID0g
KmxheW91dENvbnRleHQuZGlzcGxheUJveEZvckxheW91dEJveChsYXlvdXRCb3gpOwotICAgIGF1
dG8mIGNvbnRhaW5pbmdCbG9ja0Rpc3BsYXlCb3ggPSAqbGF5b3V0Q29udGV4dC5kaXNwbGF5Qm94
Rm9yTGF5b3V0Qm94KCpsYXlvdXRCb3guY29udGFpbmluZ0Jsb2NrKCkpOworICAgIGF1dG8mIGRp
c3BsYXlCb3ggPSBsYXlvdXRDb250ZXh0LmRpc3BsYXlCb3hGb3JMYXlvdXRCb3gobGF5b3V0Qm94
KTsKKyAgICBhdXRvJiBjb250YWluaW5nQmxvY2tEaXNwbGF5Qm94ID0gbGF5b3V0Q29udGV4dC5k
aXNwbGF5Qm94Rm9yTGF5b3V0Qm94KCpsYXlvdXRCb3guY29udGFpbmluZ0Jsb2NrKCkpOwogICAg
IGF1dG8gY29udGFpbmluZ0Jsb2NrSGVpZ2h0ID0gY29udGFpbmluZ0Jsb2NrRGlzcGxheUJveC5o
ZWlnaHQoKTsKICAgICBhdXRvIGNvbnRhaW5pbmdCbG9ja1dpZHRoID0gY29udGFpbmluZ0Jsb2Nr
RGlzcGxheUJveC53aWR0aCgpOwogCkBAIC0zMDUsOSArMzA1LDkgQEAgSG9yaXpvbnRhbEdlb21l
dHJ5IEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6b3V0T2ZGbG93Tm9uUmVwbGFjZWRIb3Jp
em9udGFsR2UKICAgICAvLyA2LiAncmlnaHQnIGlzICdhdXRvJywgJ2xlZnQnIGFuZCAnd2lkdGgn
IGFyZSBub3QgJ2F1dG8nLCB0aGVuIHNvbHZlIGZvciAncmlnaHQnCiAKICAgICBhdXRvJiBzdHls
ZSA9IGxheW91dEJveC5zdHlsZSgpOwotICAgIGF1dG8mIGRpc3BsYXlCb3ggPSAqbGF5b3V0Q29u
dGV4dC5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGxheW91dEJveCk7CisgICAgYXV0byYgZGlzcGxh
eUJveCA9IGxheW91dENvbnRleHQuZGlzcGxheUJveEZvckxheW91dEJveChsYXlvdXRCb3gpOwog
ICAgIGF1dG8mIGNvbnRhaW5pbmdCbG9jayA9ICpsYXlvdXRCb3guY29udGFpbmluZ0Jsb2NrKCk7
Ci0gICAgYXV0byBjb250YWluaW5nQmxvY2tXaWR0aCA9IGxheW91dENvbnRleHQuZGlzcGxheUJv
eEZvckxheW91dEJveChjb250YWluaW5nQmxvY2spLT5jb250ZW50Qm94V2lkdGgoKTsKKyAgICBh
dXRvIGNvbnRhaW5pbmdCbG9ja1dpZHRoID0gbGF5b3V0Q29udGV4dC5kaXNwbGF5Qm94Rm9yTGF5
b3V0Qm94KGNvbnRhaW5pbmdCbG9jaykuY29udGVudEJveFdpZHRoKCk7CiAgICAgYXV0byBpc0xl
ZnRUb1JpZ2h0RGlyZWN0aW9uID0gY29udGFpbmluZ0Jsb2NrLnN0eWxlKCkuaXNMZWZ0VG9SaWdo
dERpcmVjdGlvbigpOwogICAgIAogICAgIGF1dG8gbGVmdCA9IGNvbXB1dGVkVmFsdWVJZk5vdEF1
dG8oc3R5bGUubG9naWNhbExlZnQoKSwgY29udGFpbmluZ0Jsb2NrV2lkdGgpOwpAQCAtNDM1LDgg
KzQzNSw4IEBAIFZlcnRpY2FsR2VvbWV0cnkgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5Ojpv
dXRPZkZsb3dSZXBsYWNlZFZlcnRpY2FsR2VvbWV0cnkoCiAgICAgLy8gNS4gSWYgYXQgdGhpcyBw
b2ludCB0aGUgdmFsdWVzIGFyZSBvdmVyLWNvbnN0cmFpbmVkLCBpZ25vcmUgdGhlIHZhbHVlIGZv
ciAnYm90dG9tJyBhbmQgc29sdmUgZm9yIHRoYXQgdmFsdWUuCiAKICAgICBhdXRvJiBzdHlsZSA9
IGxheW91dEJveC5zdHlsZSgpOwotICAgIGF1dG8mIGRpc3BsYXlCb3ggPSAqbGF5b3V0Q29udGV4
dC5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGxheW91dEJveCk7Ci0gICAgYXV0byYgY29udGFpbmlu
Z0Jsb2NrRGlzcGxheUJveCA9ICpsYXlvdXRDb250ZXh0LmRpc3BsYXlCb3hGb3JMYXlvdXRCb3go
KmxheW91dEJveC5jb250YWluaW5nQmxvY2soKSk7CisgICAgYXV0byYgZGlzcGxheUJveCA9IGxh
eW91dENvbnRleHQuZGlzcGxheUJveEZvckxheW91dEJveChsYXlvdXRCb3gpOworICAgIGF1dG8m
IGNvbnRhaW5pbmdCbG9ja0Rpc3BsYXlCb3ggPSBsYXlvdXRDb250ZXh0LmRpc3BsYXlCb3hGb3JM
YXlvdXRCb3goKmxheW91dEJveC5jb250YWluaW5nQmxvY2soKSk7CiAgICAgYXV0byBjb250YWlu
aW5nQmxvY2tIZWlnaHQgPSBjb250YWluaW5nQmxvY2tEaXNwbGF5Qm94LmhlaWdodCgpOwogICAg
IGF1dG8gY29udGFpbmluZ0Jsb2NrV2lkdGggPSBjb250YWluaW5nQmxvY2tEaXNwbGF5Qm94Lndp
ZHRoKCk7CiAKQEAgLTUwOCw5ICs1MDgsOSBAQCBIb3Jpem9udGFsR2VvbWV0cnkgRm9ybWF0dGlu
Z0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dSZXBsYWNlZEhvcml6b250YWxHZW9tZQogICAg
IC8vICAgJ3JpZ2h0JyAoaW4gY2FzZSAnZGlyZWN0aW9uJyBpcyAnbHRyJykgYW5kIHNvbHZlIGZv
ciB0aGF0IHZhbHVlLgogCiAgICAgYXV0byYgc3R5bGUgPSBsYXlvdXRCb3guc3R5bGUoKTsKLSAg
ICBhdXRvJiBkaXNwbGF5Qm94ID0gKmxheW91dENvbnRleHQuZGlzcGxheUJveEZvckxheW91dEJv
eChsYXlvdXRCb3gpOworICAgIGF1dG8mIGRpc3BsYXlCb3ggPSBsYXlvdXRDb250ZXh0LmRpc3Bs
YXlCb3hGb3JMYXlvdXRCb3gobGF5b3V0Qm94KTsKICAgICBhdXRvJiBjb250YWluaW5nQmxvY2sg
PSAqbGF5b3V0Qm94LmNvbnRhaW5pbmdCbG9jaygpOwotICAgIGF1dG8gY29udGFpbmluZ0Jsb2Nr
V2lkdGggPSBsYXlvdXRDb250ZXh0LmRpc3BsYXlCb3hGb3JMYXlvdXRCb3goY29udGFpbmluZ0Js
b2NrKS0+Y29udGVudEJveFdpZHRoKCk7CisgICAgYXV0byBjb250YWluaW5nQmxvY2tXaWR0aCA9
IGxheW91dENvbnRleHQuZGlzcGxheUJveEZvckxheW91dEJveChjb250YWluaW5nQmxvY2spLmNv
bnRlbnRCb3hXaWR0aCgpOwogICAgIGF1dG8gaXNMZWZ0VG9SaWdodERpcmVjdGlvbiA9IGNvbnRh
aW5pbmdCbG9jay5zdHlsZSgpLmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKTsKIAogICAgIGF1dG8g
bGVmdCA9IGNvbXB1dGVkVmFsdWVJZk5vdEF1dG8oc3R5bGUubG9naWNhbExlZnQoKSwgY29udGFp
bmluZ0Jsb2NrV2lkdGgpOwpAQCAtNjA0LDcgKzYwNCw3IEBAIEhlaWdodEFuZE1hcmdpbiBGb3Jt
YXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmNvbXBsaWNhdGVkQ2FzZXMoTGF5b3V0Q29udGV4dCYg
bGF5CiAKICAgICBhdXRvJiBzdHlsZSA9IGxheW91dEJveC5zdHlsZSgpOwogICAgIGF1dG8mIGNv
bnRhaW5pbmdCbG9jayA9ICpsYXlvdXRCb3guY29udGFpbmluZ0Jsb2NrKCk7Ci0gICAgYXV0byYg
Y29udGFpbmluZ0Jsb2NrRGlzcGxheUJveCA9ICpsYXlvdXRDb250ZXh0LmRpc3BsYXlCb3hGb3JM
YXlvdXRCb3goY29udGFpbmluZ0Jsb2NrKTsKKyAgICBhdXRvJiBjb250YWluaW5nQmxvY2tEaXNw
bGF5Qm94ID0gbGF5b3V0Q29udGV4dC5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGNvbnRhaW5pbmdC
bG9jayk7CiAgICAgYXV0byBjb250YWluaW5nQmxvY2tXaWR0aCA9IGNvbnRhaW5pbmdCbG9ja0Rp
c3BsYXlCb3guY29udGVudEJveFdpZHRoKCk7CiAKICAgICBhdXRvIGhlaWdodCA9IGZpeGVkVmFs
dWUoc3R5bGUubG9naWNhbEhlaWdodCgpKTsKQEAgLTY0MCw3ICs2NDAsNyBAQCBXaWR0aEFuZE1h
cmdpbiBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmZsb2F0aW5nTm9uUmVwbGFjZWRXaWR0
aEFuZE1hcmdpbihMYQogICAgIC8vIDIuIElmICd3aWR0aCcgaXMgY29tcHV0ZWQgYXMgJ2F1dG8n
LCB0aGUgdXNlZCB2YWx1ZSBpcyB0aGUgInNocmluay10by1maXQiIHdpZHRoLgogCiAgICAgYXV0
byYgY29udGFpbmluZ0Jsb2NrID0gKmxheW91dEJveC5jb250YWluaW5nQmxvY2soKTsKLSAgICBh
dXRvIGNvbnRhaW5pbmdCbG9ja1dpZHRoID0gbGF5b3V0Q29udGV4dC5kaXNwbGF5Qm94Rm9yTGF5
b3V0Qm94KGNvbnRhaW5pbmdCbG9jayktPmNvbnRlbnRCb3hXaWR0aCgpOworICAgIGF1dG8gY29u
dGFpbmluZ0Jsb2NrV2lkdGggPSBsYXlvdXRDb250ZXh0LmRpc3BsYXlCb3hGb3JMYXlvdXRCb3go
Y29udGFpbmluZ0Jsb2NrKS5jb250ZW50Qm94V2lkdGgoKTsKIAogICAgIC8vICMxCiAgICAgYXV0
byBtYXJnaW4gPSBjb21wdXRlZE5vbkNvbGxhcHNlZEhvcml6b250YWxNYXJnaW5WYWx1ZShsYXlv
dXRDb250ZXh0LCBsYXlvdXRCb3gpOwpAQCAtNzMyLDcgKzczMiw3IEBAIEhlaWdodEFuZE1hcmdp
biBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmlubGluZVJlcGxhY2VkSGVpZ2h0QW5kTWFy
Z2luKExheW91CiAKICAgICBhdXRvJiBzdHlsZSA9IGxheW91dEJveC5zdHlsZSgpOwogICAgIGF1
dG8gcmVwbGFjZWQgPSBsYXlvdXRCb3gucmVwbGFjZWQoKTsKLSAgICBhdXRvJiBjb250YWluaW5n
QmxvY2tEaXNwbGF5Qm94ID0gKmxheW91dENvbnRleHQuZGlzcGxheUJveEZvckxheW91dEJveCgq
bGF5b3V0Qm94LmNvbnRhaW5pbmdCbG9jaygpKTsKKyAgICBhdXRvJiBjb250YWluaW5nQmxvY2tE
aXNwbGF5Qm94ID0gbGF5b3V0Q29udGV4dC5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KCpsYXlvdXRC
b3guY29udGFpbmluZ0Jsb2NrKCkpOwogICAgIGF1dG8gY29udGFpbmluZ0Jsb2NrV2lkdGggPSBj
b250YWluaW5nQmxvY2tEaXNwbGF5Qm94LndpZHRoKCk7CiAKICAgICBhdXRvIGhlaWdodCA9IGZp
eGVkVmFsdWUoc3R5bGUubG9naWNhbEhlaWdodCgpKTsKQEAgLTc4Nyw3ICs3ODcsNyBAQCBXaWR0
aEFuZE1hcmdpbiBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmlubGluZVJlcGxhY2VkV2lk
dGhBbmRNYXJnaW4oTGF5b3V0QwogICAgIC8vICAgIElmIDMwMHB4IGlzIHRvbyB3aWRlIHRvIGZp
dCB0aGUgZGV2aWNlLCBVQXMgc2hvdWxkIHVzZSB0aGUgd2lkdGggb2YgdGhlIGxhcmdlc3QgcmVj
dGFuZ2xlIHRoYXQgaGFzIGEgMjoxIHJhdGlvIGFuZCBmaXRzIHRoZSBkZXZpY2UgaW5zdGVhZC4K
IAogICAgIGF1dG8mIHN0eWxlID0gbGF5b3V0Qm94LnN0eWxlKCk7Ci0gICAgYXV0byYgY29udGFp
bmluZ0Jsb2NrRGlzcGxheUJveCA9ICpsYXlvdXRDb250ZXh0LmRpc3BsYXlCb3hGb3JMYXlvdXRC
b3goKmxheW91dEJveC5jb250YWluaW5nQmxvY2soKSk7CisgICAgYXV0byYgY29udGFpbmluZ0Js
b2NrRGlzcGxheUJveCA9IGxheW91dENvbnRleHQuZGlzcGxheUJveEZvckxheW91dEJveCgqbGF5
b3V0Qm94LmNvbnRhaW5pbmdCbG9jaygpKTsKICAgICBhdXRvIGNvbnRhaW5pbmdCbG9ja1dpZHRo
ID0gY29udGFpbmluZ0Jsb2NrRGlzcGxheUJveC53aWR0aCgpOwogCiAgICAgYXV0byBjb21wdXRl
TWFyZ2luUmlnaHQgPSBbJl0oKSB7CkBAIC04NTksNyArODU5LDcgQEAgc3RkOjpvcHRpb25hbDxF
ZGdlcz4gRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5Ojpjb21wdXRlZFBhZGRpbmcoTGF5b3V0
Q29udGV4dCYKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8mIHN0eWxl
ID0gbGF5b3V0Qm94LnN0eWxlKCk7Ci0gICAgYXV0byBjb250YWluaW5nQmxvY2tXaWR0aCA9IGxh
eW91dENvbnRleHQuZGlzcGxheUJveEZvckxheW91dEJveCgqbGF5b3V0Qm94LmNvbnRhaW5pbmdC
bG9jaygpKS0+Y29udGVudEJveFdpZHRoKCk7CisgICAgYXV0byBjb250YWluaW5nQmxvY2tXaWR0
aCA9IGxheW91dENvbnRleHQuZGlzcGxheUJveEZvckxheW91dEJveCgqbGF5b3V0Qm94LmNvbnRh
aW5pbmdCbG9jaygpKS5jb250ZW50Qm94V2lkdGgoKTsKICAgICBMT0dfV0lUSF9TVFJFQU0oRm9y
bWF0dGluZ0NvbnRleHRMYXlvdXQsIHN0cmVhbSA8PCAiW1BhZGRpbmddIC0+IGxheW91dEJveDog
IiA8PCAmbGF5b3V0Qm94KTsKICAgICByZXR1cm4gRWRnZXMgewogICAgICAgICB7IHZhbHVlRm9y
TGVuZ3RoKHN0eWxlLnBhZGRpbmdMZWZ0KCksIGNvbnRhaW5pbmdCbG9ja1dpZHRoKSwgdmFsdWVG
b3JMZW5ndGgoc3R5bGUucGFkZGluZ1JpZ2h0KCksIGNvbnRhaW5pbmdCbG9ja1dpZHRoKSB9LApA
QCAtODcwLDcgKzg3MCw3IEBAIHN0ZDo6b3B0aW9uYWw8RWRnZXM+IEZvcm1hdHRpbmdDb250ZXh0
OjpHZW9tZXRyeTo6Y29tcHV0ZWRQYWRkaW5nKExheW91dENvbnRleHQmCiBIb3Jpem9udGFsRWRn
ZXMgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5Ojpjb21wdXRlZE5vbkNvbGxhcHNlZEhvcml6
b250YWxNYXJnaW5WYWx1ZShjb25zdCBMYXlvdXRDb250ZXh0JiBsYXlvdXRDb250ZXh0LCBjb25z
dCBCb3gmIGxheW91dEJveCkKIHsKICAgICBhdXRvJiBzdHlsZSA9IGxheW91dEJveC5zdHlsZSgp
OwotICAgIGF1dG8gY29udGFpbmluZ0Jsb2NrV2lkdGggPSBsYXlvdXRDb250ZXh0LmRpc3BsYXlC
b3hGb3JMYXlvdXRCb3goKmxheW91dEJveC5jb250YWluaW5nQmxvY2soKSktPmNvbnRlbnRCb3hX
aWR0aCgpOworICAgIGF1dG8gY29udGFpbmluZ0Jsb2NrV2lkdGggPSBsYXlvdXRDb250ZXh0LmRp
c3BsYXlCb3hGb3JMYXlvdXRCb3goKmxheW91dEJveC5jb250YWluaW5nQmxvY2soKSkuY29udGVu
dEJveFdpZHRoKCk7CiAKICAgICBhdXRvIG1hcmdpbkxlZnQgPSBjb21wdXRlZFZhbHVlSWZOb3RB
dXRvKHN0eWxlLm1hcmdpbkxlZnQoKSwgY29udGFpbmluZ0Jsb2NrV2lkdGgpLnZhbHVlX29yKExh
eW91dFVuaXQgeyAwIH0pOwogICAgIGF1dG8gbWFyZ2luUmlnaHQgPSBjb21wdXRlZFZhbHVlSWZO
b3RBdXRvKHN0eWxlLm1hcmdpblJpZ2h0KCksIGNvbnRhaW5pbmdCbG9ja1dpZHRoKS52YWx1ZV9v
cihMYXlvdXRVbml0IHsgMCB9KTsKQEAgLTg4Miw3ICs4ODIsNyBAQCBIb3Jpem9udGFsRWRnZXMg
Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5Ojpjb21wdXRlZE5vbkNvbGxhcHNlZEhvcml6b250
YWxNYXJnaQogVmVydGljYWxFZGdlcyBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmNvbXB1
dGVkTm9uQ29sbGFwc2VkVmVydGljYWxNYXJnaW5WYWx1ZShjb25zdCBMYXlvdXRDb250ZXh0JiBs
YXlvdXRDb250ZXh0LCBjb25zdCBCb3gmIGxheW91dEJveCkKIHsKICAgICBhdXRvJiBzdHlsZSA9
IGxheW91dEJveC5zdHlsZSgpOwotICAgIGF1dG8gY29udGFpbmluZ0Jsb2NrV2lkdGggPSBsYXlv
dXRDb250ZXh0LmRpc3BsYXlCb3hGb3JMYXlvdXRCb3goKmxheW91dEJveC5jb250YWluaW5nQmxv
Y2soKSktPmNvbnRlbnRCb3hXaWR0aCgpOworICAgIGF1dG8gY29udGFpbmluZ0Jsb2NrV2lkdGgg
PSBsYXlvdXRDb250ZXh0LmRpc3BsYXlCb3hGb3JMYXlvdXRCb3goKmxheW91dEJveC5jb250YWlu
aW5nQmxvY2soKSkuY29udGVudEJveFdpZHRoKCk7CiAKICAgICBhdXRvIG1hcmdpblRvcCA9IGNv
bXB1dGVkVmFsdWVJZk5vdEF1dG8oc3R5bGUubWFyZ2luVG9wKCksIGNvbnRhaW5pbmdCbG9ja1dp
ZHRoKS52YWx1ZV9vcihMYXlvdXRVbml0IHsgMCB9KTsKICAgICBhdXRvIG1hcmdpbkJvdHRvbSA9
IGNvbXB1dGVkVmFsdWVJZk5vdEF1dG8oc3R5bGUubWFyZ2luQm90dG9tKCksIGNvbnRhaW5pbmdC
bG9ja1dpZHRoKS52YWx1ZV9vcihMYXlvdXRVbml0IHsgMCB9KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9MYXlvdXRDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
TGF5b3V0Q29udGV4dC5oCmluZGV4IDA4YjRjMWZjZTMxMGFhMmY2YTNlNTY2NTYzMjQyOGRkNmY1
MWFlMzIuLmNjMDViOTE1MDdjZjE1ZTk5MzliMjk2NjExYjRmY2FkYzhhNjcyNDAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRDb250ZXh0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L0xheW91dENvbnRleHQuaApAQCAtODEsNyArODEsNyBAQCBwdWJsaWM6CiAg
ICAgRm9ybWF0dGluZ1N0YXRlJiBlc3RhYmxpc2hlZEZvcm1hdHRpbmdTdGF0ZShjb25zdCBCb3gm
IGZvcm1hdHRpbmdSb290KTsKIAogICAgIERpc3BsYXk6OkJveCYgY3JlYXRlRGlzcGxheUJveChj
b25zdCBCb3gmKTsKLSAgICBEaXNwbGF5OjpCb3gqIGRpc3BsYXlCb3hGb3JMYXlvdXRCb3goY29u
c3QgQm94JiBsYXlvdXRCb3gpIGNvbnN0IHsgcmV0dXJuIG1fbGF5b3V0VG9EaXNwbGF5Qm94Lmdl
dCgmbGF5b3V0Qm94KTsgfQorICAgIERpc3BsYXk6OkJveCYgZGlzcGxheUJveEZvckxheW91dEJv
eChjb25zdCBCb3gmIGxheW91dEJveCkgY29uc3QgeyByZXR1cm4gKm1fbGF5b3V0VG9EaXNwbGF5
Qm94LmdldCgmbGF5b3V0Qm94KTsgfQogCiAgICAgYm9vbCBpblF1aXJrc01vZGUoKSBjb25zdCB7
IHJldHVybiBtX2luUXVpcmtzTW9kZTsgfQogICAgIC8vIEZvciB0ZXN0aW5nIHB1cnBvc2VzIG9u
bHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9WZXJpZmljYXRpb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L1ZlcmlmaWNhdGlvbi5jcHAKaW5kZXggMDQzZmJkMDY4YmRm
NjA0YWIwZDJjNzc0YTkwZjY3MGJlYzQzOGQ1YS4uZThiYzQzNTM1MmNlMzY4NzBhN2UzY2VlZDlh
Y2U4YTNmNmE2MjU5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L1ZlcmlmaWNh
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L1ZlcmlmaWNhdGlvbi5jcHAKQEAg
LTEzMywzNiArMTMzLDM1IEBAIHN0YXRpYyBib29sIG91dHB1dE1pc21hdGNoaW5nQmxvY2tCb3hJ
bmZvcm1hdGlvbklmTmVlZGVkKFRleHRTdHJlYW0mIHN0cmVhbSwgY29uCiAgICAgICAgIH07CiAg
ICAgfTsKIAotICAgIGF1dG8qIGRpc3BsYXlCb3ggPSBjb250ZXh0LmRpc3BsYXlCb3hGb3JMYXlv
dXRCb3gobGF5b3V0Qm94KTsKLSAgICBBU1NFUlQoZGlzcGxheUJveCk7CisgICAgYXV0byYgZGlz
cGxheUJveCA9IGNvbnRleHQuZGlzcGxheUJveEZvckxheW91dEJveChsYXlvdXRCb3gpOwogCiAg
ICAgYXV0byBmcmFtZVJlY3QgPSByZW5kZXJlci5mcmFtZVJlY3QoKTsKICAgICAvLyByZW5kZXJp
bmcgZG9lcyBub3Qgb2Zmc2V0IGZvciByZWxhdGl2ZSBwb3NpdGlvbmVkIGJveGVzLgogICAgIGlm
IChyZW5kZXJlci5pc0luRmxvd1Bvc2l0aW9uZWQoKSkKICAgICAgICAgZnJhbWVSZWN0Lm1vdmUo
cmVuZGVyZXIub2Zmc2V0Rm9ySW5GbG93UG9zaXRpb24oKSk7CiAKLSAgICBpZiAoZnJhbWVSZWN0
ICE9IGRpc3BsYXlCb3gtPnJlY3QoKSkgewotICAgICAgICBvdXRwdXRSZWN0KCJmcmFtZUJveCIs
IHJlbmRlcmVyLmZyYW1lUmVjdCgpLCBkaXNwbGF5Qm94LT5yZWN0KCkpOworICAgIGlmIChmcmFt
ZVJlY3QgIT0gZGlzcGxheUJveC5yZWN0KCkpIHsKKyAgICAgICAgb3V0cHV0UmVjdCgiZnJhbWVC
b3giLCByZW5kZXJlci5mcmFtZVJlY3QoKSwgZGlzcGxheUJveC5yZWN0KCkpOwogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBpZiAocmVuZGVyZXIubWFyZ2luQm94UmVjdCgpICE9
IHJlbmRlckJveExpa2VNYXJnaW5Cb3goKmRpc3BsYXlCb3gpKSB7Ci0gICAgICAgIG91dHB1dFJl
Y3QoIm1hcmdpbkJveCIsIHJlbmRlcmVyLm1hcmdpbkJveFJlY3QoKSwgcmVuZGVyQm94TGlrZU1h
cmdpbkJveCgqZGlzcGxheUJveCkpOworICAgIGlmIChyZW5kZXJlci5tYXJnaW5Cb3hSZWN0KCkg
IT0gcmVuZGVyQm94TGlrZU1hcmdpbkJveChkaXNwbGF5Qm94KSkgeworICAgICAgICBvdXRwdXRS
ZWN0KCJtYXJnaW5Cb3giLCByZW5kZXJlci5tYXJnaW5Cb3hSZWN0KCksIHJlbmRlckJveExpa2VN
YXJnaW5Cb3goZGlzcGxheUJveCkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAg
ICBpZiAocmVuZGVyZXIuYm9yZGVyQm94UmVjdCgpICE9IGRpc3BsYXlCb3gtPmJvcmRlckJveCgp
KSB7Ci0gICAgICAgIG91dHB1dFJlY3QoImJvcmRlckJveCIsIHJlbmRlcmVyLmJvcmRlckJveFJl
Y3QoKSwgZGlzcGxheUJveC0+Ym9yZGVyQm94KCkpOworICAgIGlmIChyZW5kZXJlci5ib3JkZXJC
b3hSZWN0KCkgIT0gZGlzcGxheUJveC5ib3JkZXJCb3goKSkgeworICAgICAgICBvdXRwdXRSZWN0
KCJib3JkZXJCb3giLCByZW5kZXJlci5ib3JkZXJCb3hSZWN0KCksIGRpc3BsYXlCb3guYm9yZGVy
Qm94KCkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBpZiAocmVuZGVyZXIu
cGFkZGluZ0JveFJlY3QoKSAhPSBkaXNwbGF5Qm94LT5wYWRkaW5nQm94KCkpIHsKLSAgICAgICAg
b3V0cHV0UmVjdCgicGFkZGluZ0JveCIsIHJlbmRlcmVyLnBhZGRpbmdCb3hSZWN0KCksIGRpc3Bs
YXlCb3gtPnBhZGRpbmdCb3goKSk7CisgICAgaWYgKHJlbmRlcmVyLnBhZGRpbmdCb3hSZWN0KCkg
IT0gZGlzcGxheUJveC5wYWRkaW5nQm94KCkpIHsKKyAgICAgICAgb3V0cHV0UmVjdCgicGFkZGlu
Z0JveCIsIHJlbmRlcmVyLnBhZGRpbmdCb3hSZWN0KCksIGRpc3BsYXlCb3gucGFkZGluZ0JveCgp
KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgaWYgKHJlbmRlcmVyLmNvbnRl
bnRCb3hSZWN0KCkgIT0gZGlzcGxheUJveC0+Y29udGVudEJveCgpKSB7Ci0gICAgICAgIG91dHB1
dFJlY3QoImNvbnRlbnRCb3giLCByZW5kZXJlci5jb250ZW50Qm94UmVjdCgpLCBkaXNwbGF5Qm94
LT5jb250ZW50Qm94KCkpOworICAgIGlmIChyZW5kZXJlci5jb250ZW50Qm94UmVjdCgpICE9IGRp
c3BsYXlCb3guY29udGVudEJveCgpKSB7CisgICAgICAgIG91dHB1dFJlY3QoImNvbnRlbnRCb3gi
LCByZW5kZXJlci5jb250ZW50Qm94UmVjdCgpLCBkaXNwbGF5Qm94LmNvbnRlbnRCb3goKSk7CiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5j
cHAKaW5kZXggODk0NjRhY2Y3NDZiZDU5YjRkY2JiNGJmZmU4OWQ3ZmIwNGZhZWJiNS4uYTRjMTlk
ZTQyNmVmOGIyYWQxOWQyODc3ZWQ4MWQyYTVmMzhmMjVkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGlu
Z0NvbnRleHQuY3BwCkBAIC0xNjEsMTQgKzE2MSwxNCBAQCB2b2lkIEJsb2NrRm9ybWF0dGluZ0Nv
bnRleHQ6OmxheW91dEZvcm1hdHRpbmdDb250ZXh0Um9vdChMYXlvdXRDb250ZXh0JiBsYXlvdXRD
bwogCiB2b2lkIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVTdGF0aWNQb3NpdGlvbihM
YXlvdXRDb250ZXh0JiBsYXlvdXRDb250ZXh0LCBjb25zdCBCb3gmIGxheW91dEJveCkgY29uc3QK
IHsKLSAgICBsYXlvdXRDb250ZXh0LmRpc3BsYXlCb3hGb3JMYXlvdXRCb3gobGF5b3V0Qm94KS0+
c2V0VG9wTGVmdChHZW9tZXRyeTo6c3RhdGljUG9zaXRpb24obGF5b3V0Q29udGV4dCwgbGF5b3V0
Qm94KSk7CisgICAgbGF5b3V0Q29udGV4dC5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGxheW91dEJv
eCkuc2V0VG9wTGVmdChHZW9tZXRyeTo6c3RhdGljUG9zaXRpb24obGF5b3V0Q29udGV4dCwgbGF5
b3V0Qm94KSk7CiB9CiAKIHZvaWQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZUVzdGlt
YXRlZE1hcmdpblRvcChMYXlvdXRDb250ZXh0JiBsYXlvdXRDb250ZXh0LCBjb25zdCBCb3gmIGxh
eW91dEJveCkgY29uc3QKIHsKICAgICBhdXRvIGVzdGltYXRlZE1hcmdpblRvcCA9IEdlb21ldHJ5
Ojplc3RpbWF0ZWRNYXJnaW5Ub3AobGF5b3V0Q29udGV4dCwgbGF5b3V0Qm94KTsKIAotICAgIGF1
dG8mIGRpc3BsYXlCb3ggPSAqbGF5b3V0Q29udGV4dC5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGxh
eW91dEJveCk7CisgICAgYXV0byYgZGlzcGxheUJveCA9IGxheW91dENvbnRleHQuZGlzcGxheUJv
eEZvckxheW91dEJveChsYXlvdXRCb3gpOwogICAgIGRpc3BsYXlCb3guc2V0RXN0aW1hdGVkTWFy
Z2luVG9wKGVzdGltYXRlZE1hcmdpblRvcCk7CiAgICAgZGlzcGxheUJveC5tb3ZlVmVydGljYWxs
eShlc3RpbWF0ZWRNYXJnaW5Ub3ApOwogfQpAQCAtMTg5LDEwICsxODksOSBAQCB2b2lkIEJsb2Nr
Rm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVFc3RpbWF0ZWRNYXJnaW5Ub3BGb3JBbmNlc3RvcnMo
TGF5b3V0Q29udGV4dAogICAgIC8vIFRoZSBpZGVhIGhlcmUgaXMgdGhhdCBhcyBsb25nIGFzIHdl
IGRvbid0IGNyb3NzIHRoZSBibG9jayBmb3JtYXR0aW5nIGNvbnRleHQgYm91bmRhcnksIHdlIHNo
b3VsZCBiZSBhYmxlIHRvIHByZS1jb21wdXRlIHRoZSBmaW5hbCB0b3AgbWFyZ2luLgogCiAgICAg
Zm9yIChhdXRvKiBhbmNlc3RvciA9IGxheW91dEJveC5jb250YWluaW5nQmxvY2soKTsgYW5jZXN0
b3IgJiYgIWFuY2VzdG9yLT5lc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQoKTsgYW5j
ZXN0b3IgPSBhbmNlc3Rvci0+Y29udGFpbmluZ0Jsb2NrKCkpIHsKLSAgICAgICAgYXV0byogZGlz
cGxheUJveCA9IGxheW91dENvbnRleHQuZGlzcGxheUJveEZvckxheW91dEJveCgqYW5jZXN0b3Ip
OwotICAgICAgICBBU1NFUlQoZGlzcGxheUJveCk7CisgICAgICAgIGF1dG8mIGRpc3BsYXlCb3gg
PSBsYXlvdXRDb250ZXh0LmRpc3BsYXlCb3hGb3JMYXlvdXRCb3goKmFuY2VzdG9yKTsKICAgICAg
ICAgLy8gRklYTUU6IHdpdGggaW5jcmVtZW50YWwgbGF5b3V0LCB3ZSBtaWdodCBhY3R1YWxseSBo
YXZlIGEgdmFsaWQgKG5vbi1lc3RpbWF0ZWQpIG1hcmdpbiB0b3AgYXMgd2VsbC4KLSAgICAgICAg
aWYgKGRpc3BsYXlCb3gtPmVzdGltYXRlZE1hcmdpblRvcCgpKQorICAgICAgICBpZiAoZGlzcGxh
eUJveC5lc3RpbWF0ZWRNYXJnaW5Ub3AoKSkKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAg
ICBjb21wdXRlRXN0aW1hdGVkTWFyZ2luVG9wKGxheW91dENvbnRleHQsICphbmNlc3Rvcik7CkBA
IC0yMDIsMTIgKzIwMSwxMiBAQCB2b2lkIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVF
c3RpbWF0ZWRNYXJnaW5Ub3BGb3JBbmNlc3RvcnMoTGF5b3V0Q29udGV4dAogdm9pZCBCbG9ja0Zv
cm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlRmxvYXRpbmdQb3NpdGlvbihMYXlvdXRDb250ZXh0JiBs
YXlvdXRDb250ZXh0LCBGbG9hdGluZ0NvbnRleHQmIGZsb2F0aW5nQ29udGV4dCwgY29uc3QgQm94
JiBsYXlvdXRCb3gpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGxheW91dEJveC5pc0Zsb2F0aW5nUG9z
aXRpb25lZCgpKTsKLSAgICBhdXRvJiBkaXNwbGF5Qm94ID0gKmxheW91dENvbnRleHQuZGlzcGxh
eUJveEZvckxheW91dEJveChsYXlvdXRCb3gpOworICAgIGF1dG8mIGRpc3BsYXlCb3ggPSBsYXlv
dXRDb250ZXh0LmRpc3BsYXlCb3hGb3JMYXlvdXRCb3gobGF5b3V0Qm94KTsKICAgICAvLyA4LjMu
MSBDb2xsYXBzaW5nIG1hcmdpbnMKICAgICAvLyBJbiBibG9jayBmb3JtYXR0aW5nIGNvbnRleHQg
bWFyZ2lucyBiZXR3ZWVuIGEgZmxvYXRlZCBib3ggYW5kIGFueSBvdGhlciBib3ggZG8gbm90IGNv
bGxhcHNlLgogICAgIC8vIEFkanVzdCB0aGUgc3RhdGljIHBvc2l0aW9uIGJ5IHVzaW5nIHRoZSBw
cmV2aW91cyBpbmZsb3cgYm94J3Mgbm9uLWNvbGxhcHNlZCBtYXJnaW4uCiAgICAgaWYgKGF1dG8q
IHByZXZpb3VzSW5GbG93Qm94ID0gbGF5b3V0Qm94LnByZXZpb3VzSW5GbG93U2libGluZygpKSB7
Ci0gICAgICAgIGF1dG8mIHByZXZpb3VzRGlzcGxheUJveCA9ICpsYXlvdXRDb250ZXh0LmRpc3Bs
YXlCb3hGb3JMYXlvdXRCb3goKnByZXZpb3VzSW5GbG93Qm94KTsKKyAgICAgICAgYXV0byYgcHJl
dmlvdXNEaXNwbGF5Qm94ID0gbGF5b3V0Q29udGV4dC5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KCpw
cmV2aW91c0luRmxvd0JveCk7CiAgICAgICAgIGRpc3BsYXlCb3gubW92ZVZlcnRpY2FsbHkocHJl
dmlvdXNEaXNwbGF5Qm94Lm5vbkNvbGxhcHNlZE1hcmdpbkJvdHRvbSgpIC0gcHJldmlvdXNEaXNw
bGF5Qm94Lm1hcmdpbkJvdHRvbSgpKTsKICAgICB9CiAgICAgY29tcHV0ZUVzdGltYXRlZE1hcmdp
blRvcEZvckFuY2VzdG9ycyhsYXlvdXRDb250ZXh0LCBsYXlvdXRCb3gpOwpAQCAtMjI3LDcgKzIy
Niw3IEBAIHZvaWQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZVBvc2l0aW9uVG9Bdm9p
ZEZsb2F0cyhMYXlvdXRDb250ZXh0JiBsYXlvdXRDCiAKICAgICBjb21wdXRlRXN0aW1hdGVkTWFy
Z2luVG9wRm9yQW5jZXN0b3JzKGxheW91dENvbnRleHQsIGxheW91dEJveCk7CiAgICAgaWYgKGF1
dG8gYWRqdXN0ZWRQb3NpdGlvbiA9IGZsb2F0aW5nQ29udGV4dC5wb3NpdGlvbkZvckZsb2F0QXZv
aWRpbmcobGF5b3V0Qm94KSkKLSAgICAgICAgbGF5b3V0Q29udGV4dC5kaXNwbGF5Qm94Rm9yTGF5
b3V0Qm94KGxheW91dEJveCktPnNldFRvcExlZnQoKmFkanVzdGVkUG9zaXRpb24pOworICAgICAg
ICBsYXlvdXRDb250ZXh0LmRpc3BsYXlCb3hGb3JMYXlvdXRCb3gobGF5b3V0Qm94KS5zZXRUb3BM
ZWZ0KCphZGp1c3RlZFBvc2l0aW9uKTsKIH0KIAogdm9pZCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0
Ojpjb21wdXRlVmVydGljYWxQb3NpdGlvbkZvckZsb2F0Q2xlYXIoTGF5b3V0Q29udGV4dCYgbGF5
b3V0Q29udGV4dCwgY29uc3QgRmxvYXRpbmdDb250ZXh0JiBmbG9hdGluZ0NvbnRleHQsIGNvbnN0
IEJveCYgbGF5b3V0Qm94KSBjb25zdApAQCAtMjM4LDEyICsyMzcsMTIgQEAgdm9pZCBCbG9ja0Zv
cm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlVmVydGljYWxQb3NpdGlvbkZvckZsb2F0Q2xlYXIoTGF5
b3V0Q29udGV4dCYKIAogICAgIGNvbXB1dGVFc3RpbWF0ZWRNYXJnaW5Ub3BGb3JBbmNlc3RvcnMo
bGF5b3V0Q29udGV4dCwgbGF5b3V0Qm94KTsKICAgICBpZiAoYXV0byB2ZXJ0aWNhbFBvc2l0aW9u
V2l0aENsZWFyYW5jZSA9IGZsb2F0aW5nQ29udGV4dC52ZXJ0aWNhbFBvc2l0aW9uV2l0aENsZWFy
YW5jZShsYXlvdXRCb3gpKQotICAgICAgICBsYXlvdXRDb250ZXh0LmRpc3BsYXlCb3hGb3JMYXlv
dXRCb3gobGF5b3V0Qm94KS0+c2V0VG9wKCp2ZXJ0aWNhbFBvc2l0aW9uV2l0aENsZWFyYW5jZSk7
CisgICAgICAgIGxheW91dENvbnRleHQuZGlzcGxheUJveEZvckxheW91dEJveChsYXlvdXRCb3gp
LnNldFRvcCgqdmVydGljYWxQb3NpdGlvbldpdGhDbGVhcmFuY2UpOwogfQogCiB2b2lkIEJsb2Nr
Rm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVJbkZsb3dQb3NpdGlvbmVkUG9zaXRpb24oTGF5b3V0
Q29udGV4dCYgbGF5b3V0Q29udGV4dCwgY29uc3QgQm94JiBsYXlvdXRCb3gpIGNvbnN0CiB7Ci0g
ICAgbGF5b3V0Q29udGV4dC5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGxheW91dEJveCktPnNldFRv
cExlZnQoR2VvbWV0cnk6OmluRmxvd1Bvc2l0aW9uZWRQb3NpdGlvbihsYXlvdXRDb250ZXh0LCBs
YXlvdXRCb3gpKTsKKyAgICBsYXlvdXRDb250ZXh0LmRpc3BsYXlCb3hGb3JMYXlvdXRCb3gobGF5
b3V0Qm94KS5zZXRUb3BMZWZ0KEdlb21ldHJ5OjppbkZsb3dQb3NpdGlvbmVkUG9zaXRpb24obGF5
b3V0Q29udGV4dCwgbGF5b3V0Qm94KSk7CiB9CiAKIHZvaWQgQmxvY2tGb3JtYXR0aW5nQ29udGV4
dDo6Y29tcHV0ZVdpZHRoQW5kTWFyZ2luKExheW91dENvbnRleHQmIGxheW91dENvbnRleHQsIGNv
bnN0IEJveCYgbGF5b3V0Qm94KSBjb25zdApAQCAtMjU3LDcgKzI1Niw3IEBAIHZvaWQgQmxvY2tG
b3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZVdpZHRoQW5kTWFyZ2luKExheW91dENvbnRleHQmIGxh
eW91dENvbnRleHQsCiAgICAgZWxzZQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIAot
ICAgIGF1dG8mIGRpc3BsYXlCb3ggPSAqbGF5b3V0Q29udGV4dC5kaXNwbGF5Qm94Rm9yTGF5b3V0
Qm94KGxheW91dEJveCk7CisgICAgYXV0byYgZGlzcGxheUJveCA9IGxheW91dENvbnRleHQuZGlz
cGxheUJveEZvckxheW91dEJveChsYXlvdXRCb3gpOwogICAgIGRpc3BsYXlCb3guc2V0Q29udGVu
dEJveFdpZHRoKHdpZHRoQW5kTWFyZ2luLndpZHRoKTsKICAgICBkaXNwbGF5Qm94Lm1vdmVIb3Jp
em9udGFsbHkod2lkdGhBbmRNYXJnaW4ubWFyZ2luLmxlZnQpOwogICAgIGRpc3BsYXlCb3guc2V0
SG9yaXpvbnRhbE1hcmdpbih3aWR0aEFuZE1hcmdpbi5tYXJnaW4pOwpAQCAtMjY4LDcgKzI2Nyw3
IEBAIHZvaWQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZUhlaWdodEFuZE1hcmdpbihM
YXlvdXRDb250ZXh0JiBsYXlvdXRDb250ZXh0CiB7CiAgICAgSGVpZ2h0QW5kTWFyZ2luIGhlaWdo
dEFuZE1hcmdpbjsKICAgICBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IG1hcmdpblRvcE9mZnNl
dDsKLSAgICBhdXRvJiBkaXNwbGF5Qm94ID0gKmxheW91dENvbnRleHQuZGlzcGxheUJveEZvckxh
eW91dEJveChsYXlvdXRCb3gpOworICAgIGF1dG8mIGRpc3BsYXlCb3ggPSBsYXlvdXRDb250ZXh0
LmRpc3BsYXlCb3hGb3JMYXlvdXRCb3gobGF5b3V0Qm94KTsKIAogICAgIGlmIChsYXlvdXRCb3gu
aXNJbkZsb3coKSkgewogICAgICAgICBoZWlnaHRBbmRNYXJnaW4gPSBHZW9tZXRyeTo6aW5GbG93
SGVpZ2h0QW5kTWFyZ2luKGxheW91dENvbnRleHQsIGxheW91dEJveCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRl
eHRHZW9tZXRyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Js
b2NrRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAKaW5kZXggY2YzNjc4ZjQ2Zjk0NjJlOWE5
ZDk0ZWNiMmMwMzBiMGU4N2VhNTM1Yy4uNTQ0MjAzNmYyOGY3MzcyZmUzNzAxNzI3NDA0NTM2ODE3
MWQ1N2ZiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGlu
Zy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNw
cApAQCAtOTgsOCArOTgsOCBAQCBIZWlnaHRBbmRNYXJnaW4gQmxvY2tGb3JtYXR0aW5nQ29udGV4
dDo6R2VvbWV0cnk6OmluRmxvd05vblJlcGxhY2VkSGVpZ2h0QW5kTWFyZwogICAgICAgICAvLyBh
bmQgcmVsYXRpdmVseSBwb3NpdGlvbmVkIGJveGVzIGFyZSBjb25zaWRlcmVkIHdpdGhvdXQgdGhl
aXIgb2Zmc2V0KS4gTm90ZSB0aGF0IHRoZSBjaGlsZCBib3ggbWF5IGJlIGFuIGFub255bW91cyBi
bG9jayBib3guCiAKICAgICAgICAgYXV0byYgc3R5bGUgPSBsYXlvdXRCb3guc3R5bGUoKTsKLSAg
ICAgICAgYXV0byBjb250YWluaW5nQmxvY2tXaWR0aCA9IGxheW91dENvbnRleHQuZGlzcGxheUJv
eEZvckxheW91dEJveCgqbGF5b3V0Qm94LmNvbnRhaW5pbmdCbG9jaygpKS0+Y29udGVudEJveFdp
ZHRoKCk7Ci0gICAgICAgIGF1dG8mIGRpc3BsYXlCb3ggPSAqbGF5b3V0Q29udGV4dC5kaXNwbGF5
Qm94Rm9yTGF5b3V0Qm94KGxheW91dEJveCk7CisgICAgICAgIGF1dG8gY29udGFpbmluZ0Jsb2Nr
V2lkdGggPSBsYXlvdXRDb250ZXh0LmRpc3BsYXlCb3hGb3JMYXlvdXRCb3goKmxheW91dEJveC5j
b250YWluaW5nQmxvY2soKSkuY29udGVudEJveFdpZHRoKCk7CisgICAgICAgIGF1dG8mIGRpc3Bs
YXlCb3ggPSBsYXlvdXRDb250ZXh0LmRpc3BsYXlCb3hGb3JMYXlvdXRCb3gobGF5b3V0Qm94KTsK
IAogICAgICAgICBWZXJ0aWNhbEVkZ2VzIG5vbkNvbGxhcHNlZE1hcmdpbiA9IHsgY29tcHV0ZWRW
YWx1ZUlmTm90QXV0byhzdHlsZS5tYXJnaW5Ub3AoKSwgY29udGFpbmluZ0Jsb2NrV2lkdGgpLnZh
bHVlX29yKDApLAogICAgICAgICAgICAgY29tcHV0ZWRWYWx1ZUlmTm90QXV0byhzdHlsZS5tYXJn
aW5Cb3R0b20oKSwgY29udGFpbmluZ0Jsb2NrV2lkdGgpLnZhbHVlX29yKDApIH07IApAQCAtMTI4
LDkgKzEyOCw4IEBAIEhlaWdodEFuZE1hcmdpbiBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9t
ZXRyeTo6aW5GbG93Tm9uUmVwbGFjZWRIZWlnaHRBbmRNYXJnCiAgICAgICAgIGF1dG8qIGxhc3RJ
bkZsb3dDaGlsZCA9IGRvd25jYXN0PENvbnRhaW5lcj4obGF5b3V0Qm94KS5sYXN0SW5GbG93Q2hp
bGQoKTsKICAgICAgICAgQVNTRVJUKGxhc3RJbkZsb3dDaGlsZCk7CiAgICAgICAgIGlmICghTWFy
Z2luQ29sbGFwc2U6OmlzTWFyZ2luQm90dG9tQ29sbGFwc2VkV2l0aFBhcmVudChsYXlvdXRDb250
ZXh0LCAqbGFzdEluRmxvd0NoaWxkKSkgewotICAgICAgICAgICAgYXV0byogbGFzdEluRmxvd0Rp
c3BsYXlCb3ggPSBsYXlvdXRDb250ZXh0LmRpc3BsYXlCb3hGb3JMYXlvdXRCb3goKmxhc3RJbkZs
b3dDaGlsZCk7Ci0gICAgICAgICAgICBBU1NFUlQobGFzdEluRmxvd0Rpc3BsYXlCb3gpOwotICAg
ICAgICAgICAgcmV0dXJuIHsgbGFzdEluRmxvd0Rpc3BsYXlCb3gtPmJvdHRvbSgpICsgbGFzdElu
Rmxvd0Rpc3BsYXlCb3gtPm1hcmdpbkJvdHRvbSgpIC0gYm9yZGVyQW5kUGFkZGluZ1RvcCwgbm9u
Q29sbGFwc2VkTWFyZ2luLCBjb2xsYXBzZWRNYXJnaW4gfTsKKyAgICAgICAgICAgIGF1dG8mIGxh
c3RJbkZsb3dEaXNwbGF5Qm94ID0gbGF5b3V0Q29udGV4dC5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94
KCpsYXN0SW5GbG93Q2hpbGQpOworICAgICAgICAgICAgcmV0dXJuIHsgbGFzdEluRmxvd0Rpc3Bs
YXlCb3guYm90dG9tKCkgKyBsYXN0SW5GbG93RGlzcGxheUJveC5tYXJnaW5Cb3R0b20oKSAtIGJv
cmRlckFuZFBhZGRpbmdUb3AsIG5vbkNvbGxhcHNlZE1hcmdpbiwgY29sbGFwc2VkTWFyZ2luIH07
CiAgICAgICAgIH0KIAogICAgICAgICAvLyAzLiB0aGUgYm90dG9tIGJvcmRlciBlZGdlIG9mIHRo
ZSBsYXN0IGluLWZsb3cgY2hpbGQgd2hvc2UgdG9wIG1hcmdpbiBkb2Vzbid0IGNvbGxhcHNlIHdp
dGggdGhlIGVsZW1lbnQncyBib3R0b20gbWFyZ2luCkBAIC0xMzgsOSArMTM3LDggQEAgSGVpZ2h0
QW5kTWFyZ2luIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbkZsb3dOb25SZXBs
YWNlZEhlaWdodEFuZE1hcmcKICAgICAgICAgd2hpbGUgKGluRmxvd0NoaWxkICYmIE1hcmdpbkNv
bGxhcHNlOjppc01hcmdpblRvcENvbGxhcHNlZFdpdGhQYXJlbnRNYXJnaW5Cb3R0b20oKmluRmxv
d0NoaWxkKSkKICAgICAgICAgICAgIGluRmxvd0NoaWxkID0gaW5GbG93Q2hpbGQtPnByZXZpb3Vz
SW5GbG93U2libGluZygpOwogICAgICAgICBpZiAoaW5GbG93Q2hpbGQpIHsKLSAgICAgICAgICAg
IGF1dG8qIGluRmxvd0Rpc3BsYXlCb3ggPSBsYXlvdXRDb250ZXh0LmRpc3BsYXlCb3hGb3JMYXlv
dXRCb3goKmluRmxvd0NoaWxkKTsKLSAgICAgICAgICAgIEFTU0VSVChpbkZsb3dEaXNwbGF5Qm94
KTsKLSAgICAgICAgICAgIHJldHVybiB7IGluRmxvd0Rpc3BsYXlCb3gtPnRvcCgpICsgaW5GbG93
RGlzcGxheUJveC0+Ym9yZGVyQm94KCkuaGVpZ2h0KCkgLSBib3JkZXJBbmRQYWRkaW5nVG9wLCBu
b25Db2xsYXBzZWRNYXJnaW4sIGNvbGxhcHNlZE1hcmdpbiB9OworICAgICAgICAgICAgYXV0byYg
aW5GbG93RGlzcGxheUJveCA9IGxheW91dENvbnRleHQuZGlzcGxheUJveEZvckxheW91dEJveCgq
aW5GbG93Q2hpbGQpOworICAgICAgICAgICAgcmV0dXJuIHsgaW5GbG93RGlzcGxheUJveC50b3Ao
KSArIGluRmxvd0Rpc3BsYXlCb3guYm9yZGVyQm94KCkuaGVpZ2h0KCkgLSBib3JkZXJBbmRQYWRk
aW5nVG9wLCBub25Db2xsYXBzZWRNYXJnaW4sIGNvbGxhcHNlZE1hcmdpbiB9OwogICAgICAgICB9
CiAKICAgICAgICAgLy8gNC4gemVybywgb3RoZXJ3aXNlCkBAIC0xODMsOCArMTgxLDggQEAgV2lk
dGhBbmRNYXJnaW4gQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmluRmxvd05vblJl
cGxhY2VkV2lkdGhBbmRNYXJnaW4KIAogICAgICAgICBhdXRvJiBzdHlsZSA9IGxheW91dEJveC5z
dHlsZSgpOwogICAgICAgICBhdXRvKiBjb250YWluaW5nQmxvY2sgPSBsYXlvdXRCb3guY29udGFp
bmluZ0Jsb2NrKCk7Ci0gICAgICAgIGF1dG8gY29udGFpbmluZ0Jsb2NrV2lkdGggPSBsYXlvdXRD
b250ZXh0LmRpc3BsYXlCb3hGb3JMYXlvdXRCb3goKmNvbnRhaW5pbmdCbG9jayktPmNvbnRlbnRC
b3hXaWR0aCgpOwotICAgICAgICBhdXRvJiBkaXNwbGF5Qm94ID0gKmxheW91dENvbnRleHQuZGlz
cGxheUJveEZvckxheW91dEJveChsYXlvdXRCb3gpOworICAgICAgICBhdXRvIGNvbnRhaW5pbmdC
bG9ja1dpZHRoID0gbGF5b3V0Q29udGV4dC5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KCpjb250YWlu
aW5nQmxvY2spLmNvbnRlbnRCb3hXaWR0aCgpOworICAgICAgICBhdXRvJiBkaXNwbGF5Qm94ID0g
bGF5b3V0Q29udGV4dC5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGxheW91dEJveCk7CiAKICAgICAg
ICAgYXV0byB3aWR0aCA9IGNvbXB1dGVkVmFsdWVJZk5vdEF1dG8ocHJlY29tcHV0ZWRXaWR0aCA/
IExlbmd0aCB7IHByZWNvbXB1dGVkV2lkdGgudmFsdWUoKSwgRml4ZWQgfSA6IHN0eWxlLmxvZ2lj
YWxXaWR0aCgpLCBjb250YWluaW5nQmxvY2tXaWR0aCk7CiAgICAgICAgIGF1dG8gbWFyZ2luTGVm
dCA9IGNvbXB1dGVkVmFsdWVJZk5vdEF1dG8oc3R5bGUubWFyZ2luTGVmdCgpLCBjb250YWluaW5n
QmxvY2tXaWR0aCk7CkBAIC0yNDcsNyArMjQ1LDcgQEAgV2lkdGhBbmRNYXJnaW4gQmxvY2tGb3Jt
YXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmluRmxvd05vblJlcGxhY2VkV2lkdGhBbmRNYXJnaW4K
ICAgICAgICAgcmV0dXJuIHdpZHRoQW5kTWFyZ2luOwogICAgIH0KIAotICAgIGF1dG8gaW5pdGlh
bENvbnRhaW5pbmdCbG9ja1dpZHRoID0gbGF5b3V0Q29udGV4dC5kaXNwbGF5Qm94Rm9yTGF5b3V0
Qm94KGluaXRpYWxDb250YWluaW5nQmxvY2sobGF5b3V0Qm94KSktPmNvbnRlbnRCb3hXaWR0aCgp
OworICAgIGF1dG8gaW5pdGlhbENvbnRhaW5pbmdCbG9ja1dpZHRoID0gbGF5b3V0Q29udGV4dC5k
aXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGluaXRpYWxDb250YWluaW5nQmxvY2sobGF5b3V0Qm94KSku
Y29udGVudEJveFdpZHRoKCk7CiAgICAgd2lkdGhBbmRNYXJnaW4gPSBzdHJldGNoV2lkdGhUb0lu
aXRpYWxDb250YWluaW5nQmxvY2sod2lkdGhBbmRNYXJnaW4sIGluaXRpYWxDb250YWluaW5nQmxv
Y2tXaWR0aCk7CiAKICAgICBMT0dfV0lUSF9TVFJFQU0oRm9ybWF0dGluZ0NvbnRleHRMYXlvdXQs
IHN0cmVhbSA8PCAiW1dpZHRoXVtNYXJnaW5dIC0+IGluZmxvdyBub24tcmVwbGFjZWQgLT4gc3Ry
ZWNoZWQgdG8gdmlld3BvcnQtPiB3aWR0aCgiIDw8IHdpZHRoQW5kTWFyZ2luLndpZHRoIDw8ICJw
eCkgbWFyZ2luKCIgPDwgd2lkdGhBbmRNYXJnaW4ubWFyZ2luLmxlZnQgPDwgInB4LCAiIDw8IHdp
ZHRoQW5kTWFyZ2luLm1hcmdpbi5yaWdodCA8PCAicHgpIC0+IGxheW91dEJveCgiIDw8ICZsYXlv
dXRCb3ggPDwgIikiKTsKQEAgLTI4MSw5ICsyNzksOSBAQCBQb3NpdGlvbiBCbG9ja0Zvcm1hdHRp
bmdDb250ZXh0OjpHZW9tZXRyeTo6c3RhdGljUG9zaXRpb24oTGF5b3V0Q29udGV4dCYgbGF5b3V0
QwogICAgIC8vIEluIGEgYmxvY2sgZm9ybWF0dGluZyBjb250ZXh0LCBlYWNoIGJveCdzIGxlZnQg
b3V0ZXIgZWRnZSB0b3VjaGVzIHRoZSBsZWZ0IGVkZ2Ugb2YgdGhlIGNvbnRhaW5pbmcgYmxvY2sg
KGZvciByaWdodC10by1sZWZ0IGZvcm1hdHRpbmcsIHJpZ2h0IGVkZ2VzIHRvdWNoKS4KIAogICAg
IExheW91dFVuaXQgdG9wOwotICAgIGF1dG8mIGNvbnRhaW5pbmdCbG9ja0Rpc3BsYXlCb3ggPSAq
bGF5b3V0Q29udGV4dC5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KCpsYXlvdXRCb3guY29udGFpbmlu
Z0Jsb2NrKCkpOworICAgIGF1dG8mIGNvbnRhaW5pbmdCbG9ja0Rpc3BsYXlCb3ggPSBsYXlvdXRD
b250ZXh0LmRpc3BsYXlCb3hGb3JMYXlvdXRCb3goKmxheW91dEJveC5jb250YWluaW5nQmxvY2so
KSk7CiAgICAgaWYgKGF1dG8qIHByZXZpb3VzSW5GbG93U2libGluZyA9IGxheW91dEJveC5wcmV2
aW91c0luRmxvd1NpYmxpbmcoKSkgewotICAgICAgICBhdXRvJiBwcmV2aW91c0luRmxvd0Rpc3Bs
YXlCb3ggPSAqbGF5b3V0Q29udGV4dC5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KCpwcmV2aW91c0lu
Rmxvd1NpYmxpbmcpOworICAgICAgICBhdXRvJiBwcmV2aW91c0luRmxvd0Rpc3BsYXlCb3ggPSBs
YXlvdXRDb250ZXh0LmRpc3BsYXlCb3hGb3JMYXlvdXRCb3goKnByZXZpb3VzSW5GbG93U2libGlu
Zyk7CiAgICAgICAgIHRvcCA9IHByZXZpb3VzSW5GbG93RGlzcGxheUJveC5ib3R0b20oKSArIHBy
ZXZpb3VzSW5GbG93RGlzcGxheUJveC5tYXJnaW5Cb3R0b20oKTsKICAgICB9IGVsc2UKICAgICAg
ICAgdG9wID0gY29udGFpbmluZ0Jsb2NrRGlzcGxheUJveC5jb250ZW50Qm94VG9wKCk7CkBAIC0z
MDcsOSArMzA1LDkgQEAgUG9zaXRpb24gQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6
OmluRmxvd1Bvc2l0aW9uZWRQb3NpdGlvbihMYXlvdXRDb250ZXgKICAgICAvLyAzLiBJZiBuZWl0
aGVyIGlzICdhdXRvJywgJ2JvdHRvbScgaXMgaWdub3JlZCAoaS5lLiwgdGhlIHVzZWQgdmFsdWUg
b2YgJ2JvdHRvbScgd2lsbCBiZSBtaW51cyB0aGUgdmFsdWUgb2YgJ3RvcCcpLgogCiAgICAgYXV0
byYgc3R5bGUgPSBsYXlvdXRCb3guc3R5bGUoKTsKLSAgICBhdXRvJiBkaXNwbGF5Qm94ID0gKmxh
eW91dENvbnRleHQuZGlzcGxheUJveEZvckxheW91dEJveChsYXlvdXRCb3gpOworICAgIGF1dG8m
IGRpc3BsYXlCb3ggPSBsYXlvdXRDb250ZXh0LmRpc3BsYXlCb3hGb3JMYXlvdXRCb3gobGF5b3V0
Qm94KTsKICAgICBhdXRvJiBjb250YWluaW5nQmxvY2sgPSAqbGF5b3V0Qm94LmNvbnRhaW5pbmdC
bG9jaygpOwotICAgIGF1dG8gY29udGFpbmluZ0Jsb2NrV2lkdGggPSBsYXlvdXRDb250ZXh0LmRp
c3BsYXlCb3hGb3JMYXlvdXRCb3goY29udGFpbmluZ0Jsb2NrKS0+Y29udGVudEJveFdpZHRoKCk7
CisgICAgYXV0byBjb250YWluaW5nQmxvY2tXaWR0aCA9IGxheW91dENvbnRleHQuZGlzcGxheUJv
eEZvckxheW91dEJveChjb250YWluaW5nQmxvY2spLmNvbnRlbnRCb3hXaWR0aCgpOwogCiAgICAg
YXV0byB0b3AgPSBjb21wdXRlZFZhbHVlSWZOb3RBdXRvKHN0eWxlLmxvZ2ljYWxUb3AoKSwgY29u
dGFpbmluZ0Jsb2NrV2lkdGgpOwogICAgIGF1dG8gYm90dG9tID0gY29tcHV0ZWRWYWx1ZUlmTm90
QXV0byhzdHlsZS5sb2dpY2FsQm90dG9tKCksIGNvbnRhaW5pbmdCbG9ja1dpZHRoKTsKQEAgLTM5
Miw3ICszOTAsNyBAQCBIZWlnaHRBbmRNYXJnaW4gQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2Vv
bWV0cnk6OmluRmxvd0hlaWdodEFuZE1hcmdpbihMYXlvdXRDbwogICAgIGlmICghaXNTdHJldGNo
ZWRUb0luaXRpYWxDb250YWluaW5nQmxvY2sobGF5b3V0Q29udGV4dCwgbGF5b3V0Qm94KSkKICAg
ICAgICAgcmV0dXJuIGhlaWdodEFuZE1hcmdpbjsKIAotICAgIGF1dG8gaW5pdGlhbENvbnRhaW5p
bmdCbG9ja0hlaWdodCA9IGxheW91dENvbnRleHQuZGlzcGxheUJveEZvckxheW91dEJveChpbml0
aWFsQ29udGFpbmluZ0Jsb2NrKGxheW91dEJveCkpLT5jb250ZW50Qm94SGVpZ2h0KCk7CisgICAg
YXV0byBpbml0aWFsQ29udGFpbmluZ0Jsb2NrSGVpZ2h0ID0gbGF5b3V0Q29udGV4dC5kaXNwbGF5
Qm94Rm9yTGF5b3V0Qm94KGluaXRpYWxDb250YWluaW5nQmxvY2sobGF5b3V0Qm94KSkuY29udGVu
dEJveEhlaWdodCgpOwogICAgIGhlaWdodEFuZE1hcmdpbiA9IHN0cmV0Y2hIZWlnaHRUb0luaXRp
YWxDb250YWluaW5nQmxvY2soaGVpZ2h0QW5kTWFyZ2luLCBpbml0aWFsQ29udGFpbmluZ0Jsb2Nr
SGVpZ2h0KTsKIAogICAgIExPR19XSVRIX1NUUkVBTShGb3JtYXR0aW5nQ29udGV4dExheW91dCwg
c3RyZWFtIDw8ICJbSGVpZ2h0XVtNYXJnaW5dIC0+IGluZmxvdyBub24tcmVwbGFjZWQgLT4gc3Ry
ZWNoZWQgdG8gdmlld3BvcnQgLT4gaGVpZ2h0KCIgPDwgaGVpZ2h0QW5kTWFyZ2luLmhlaWdodCA8
PCAicHgpIG1hcmdpbigiIDw8IGhlaWdodEFuZE1hcmdpbi5tYXJnaW4udG9wIDw8ICJweCwgIiA8
PCBoZWlnaHRBbmRNYXJnaW4ubWFyZ2luLmJvdHRvbSA8PCAicHgpIC0+IGxheW91dEJveCgiIDw8
ICZsYXlvdXRCb3ggPDwgIikiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9i
bG9ja2Zvcm1hdHRpbmcvQmxvY2tNYXJnaW5Db2xsYXBzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrTWFyZ2luQ29sbGFwc2UuY3BwCmluZGV4IDVmYWE3
MTExNWEzYzI2NmVlZTQ1OTc2YWJhODA0ZTgwMzIxNjQ5MDIuLmNjZjZkY2YzZTlhNzNjMjBlZDU3
NTI3NDcwZjhkMGVlZmNmZjA0NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9i
bG9ja2Zvcm1hdHRpbmcvQmxvY2tNYXJnaW5Db2xsYXBzZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja01hcmdpbkNvbGxhcHNlLmNwcApAQCAtMTA4
LDcgKzEwOCw3IEBAIHN0YXRpYyBib29sIGlzTWFyZ2luVG9wQ29sbGFwc2VkV2l0aFBhcmVudChj
b25zdCBMYXlvdXRDb250ZXh0JiBsYXlvdXRDb250ZXh0LCBjCiAgICAgaWYgKHBhcmVudC5pc0Rv
Y3VtZW50Qm94KCkgfHwgcGFyZW50LmlzSW5pdGlhbENvbnRhaW5pbmdCbG9jaygpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLSAgICBhdXRvJiBwYXJlbnREaXNwbGF5Qm94ID0gKmxheW91dENv
bnRleHQuZGlzcGxheUJveEZvckxheW91dEJveChwYXJlbnQpOworICAgIGF1dG8mIHBhcmVudERp
c3BsYXlCb3ggPSBsYXlvdXRDb250ZXh0LmRpc3BsYXlCb3hGb3JMYXlvdXRCb3gocGFyZW50KTsK
ICAgICBpZiAocGFyZW50RGlzcGxheUJveC5ib3JkZXJUb3AoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCkBAIC0xMjMsNyArMTIzLDcgQEAgc3RhdGljIGJvb2wgaXNNYXJnaW5Cb3R0b21Db2xs
YXBzZWRUaHJvdWdoKGNvbnN0IExheW91dENvbnRleHQmIGxheW91dENvbnRleHQsIGMKICAgICBB
U1NFUlQobGF5b3V0Qm94LmlzQmxvY2tMZXZlbEJveCgpKTsKIAogICAgIC8vIElmIHRoZSB0b3Ag
YW5kIGJvdHRvbSBtYXJnaW5zIG9mIGEgYm94IGFyZSBhZGpvaW5pbmcsIHRoZW4gaXQgaXMgcG9z
c2libGUgZm9yIG1hcmdpbnMgdG8gY29sbGFwc2UgdGhyb3VnaCBpdC4KLSAgICBhdXRvJiBkaXNw
bGF5Qm94ID0gKmxheW91dENvbnRleHQuZGlzcGxheUJveEZvckxheW91dEJveChsYXlvdXRCb3gp
OworICAgIGF1dG8mIGRpc3BsYXlCb3ggPSBsYXlvdXRDb250ZXh0LmRpc3BsYXlCb3hGb3JMYXlv
dXRCb3gobGF5b3V0Qm94KTsKIAogICAgIGlmIChkaXNwbGF5Qm94LmJvcmRlclRvcCgpIHx8IGRp
c3BsYXlCb3guYm9yZGVyQm90dG9tKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTI4NSw3
ICsyODUsNyBAQCBib29sIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpNYXJnaW5D
b2xsYXBzZTo6aXNNYXJnaW5Cb3R0b21Db2xsYXBzZWRXaQogICAgIGlmIChwYXJlbnQuaXNEb2N1
bWVudEJveCgpIHx8IHBhcmVudC5pc0luaXRpYWxDb250YWluaW5nQmxvY2soKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi0gICAgYXV0byYgcGFyZW50RGlzcGxheUJveCA9ICpsYXlvdXRDb250
ZXh0LmRpc3BsYXlCb3hGb3JMYXlvdXRCb3gocGFyZW50KTsKKyAgICBhdXRvJiBwYXJlbnREaXNw
bGF5Qm94ID0gbGF5b3V0Q29udGV4dC5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KHBhcmVudCk7CiAg
ICAgaWYgKHBhcmVudERpc3BsYXlCb3guYm9yZGVyVG9wKCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zsb2F0cy9GbG9hdGluZ0Nv
bnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zsb2F0cy9GbG9hdGluZ0NvbnRleHQu
Y3BwCmluZGV4IDA1ZDQ0NDM0NWMxYTA5YzZkNWZiMTM0Njg2ZjVjODdjMWVkZjU4OGQuLjFmMDM1
ZDgxYTk0MDQ4OTk1NDFjNDY4MzBhZGZmNDljOTI1ZjA4MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mbG9hdHMvRmxvYXRpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZmxvYXRzL0Zsb2F0aW5nQ29udGV4dC5jcHAKQEAgLTEyMSwxMSArMTIxLDEx
IEBAIFBvaW50SW5Db250YWluaW5nQmxvY2sgRmxvYXRpbmdDb250ZXh0Ojpwb3NpdGlvbkZvckZs
b2F0KGNvbnN0IEJveCYgbGF5b3V0Qm94KSBjCiAgICAgQVNTRVJUKGxheW91dEJveC5pc0Zsb2F0
aW5nUG9zaXRpb25lZCgpKTsKIAogICAgIGlmIChtX2Zsb2F0aW5nU3RhdGUuaXNFbXB0eSgpKSB7
Ci0gICAgICAgIGF1dG8mIGRpc3BsYXlCb3ggPSAqbGF5b3V0Q29udGV4dCgpLmRpc3BsYXlCb3hG
b3JMYXlvdXRCb3gobGF5b3V0Qm94KTsKKyAgICAgICAgYXV0byYgZGlzcGxheUJveCA9IGxheW91
dENvbnRleHQoKS5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGxheW91dEJveCk7CiAKICAgICAgICAg
YXV0byBhbGlnbldpdGhDb250YWluaW5nQmxvY2sgPSBbJl0oKSAtPiBQb3NpdGlvbkluQ29udGFp
bmluZ0Jsb2NrIHsKICAgICAgICAgICAgIC8vIElmIHRoZXJlIGlzIG5vIGZsb2F0aW5nIHRvIGFs
aWduIHdpdGgsIHB1c2ggdGhlIGJveCB0byB0aGUgbGVmdC9yaWdodCBlZGdlIG9mIGl0cyBjb250
YWluaW5nIGJsb2NrJ3MgY29udGVudCBib3guCi0gICAgICAgICAgICBhdXRvJiBjb250YWluaW5n
QmxvY2tEaXNwbGF5Qm94ID0gKmxheW91dENvbnRleHQoKS5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94
KCpsYXlvdXRCb3guY29udGFpbmluZ0Jsb2NrKCkpOworICAgICAgICAgICAgYXV0byYgY29udGFp
bmluZ0Jsb2NrRGlzcGxheUJveCA9IGxheW91dENvbnRleHQoKS5kaXNwbGF5Qm94Rm9yTGF5b3V0
Qm94KCpsYXlvdXRCb3guY29udGFpbmluZ0Jsb2NrKCkpOwogCiAgICAgICAgICAgICBpZiAobGF5
b3V0Qm94LmlzTGVmdEZsb2F0aW5nUG9zaXRpb25lZCgpKQogICAgICAgICAgICAgICAgIHJldHVy
biBjb250YWluaW5nQmxvY2tEaXNwbGF5Qm94LmNvbnRlbnRCb3hMZWZ0KCkgKyBkaXNwbGF5Qm94
Lm1hcmdpbkxlZnQoKTsKQEAgLTE3Nyw3ICsxNzcsNyBAQCBzdGQ6Om9wdGlvbmFsPFBvc2l0aW9u
SW5Db250YWluaW5nQmxvY2s+IEZsb2F0aW5nQ29udGV4dDo6dmVydGljYWxQb3NpdGlvbldpdGhD
bAogICAgICAgICAvLyAyLiBUaGUgYW1vdW50IG5lY2Vzc2FyeSB0byBwbGFjZSB0aGUgdG9wIGJv
cmRlciBlZGdlIG9mIHRoZSBibG9jayBhdCBpdHMgaHlwb3RoZXRpY2FsIHBvc2l0aW9uLgogCiAg
ICAgICAgIGF1dG8mIGxheW91dENvbnRleHQgPSB0aGlzLT5sYXlvdXRDb250ZXh0KCk7Ci0gICAg
ICAgIGF1dG8mIGRpc3BsYXlCb3ggPSAqbGF5b3V0Q29udGV4dC5kaXNwbGF5Qm94Rm9yTGF5b3V0
Qm94KGxheW91dEJveCk7CisgICAgICAgIGF1dG8mIGRpc3BsYXlCb3ggPSBsYXlvdXRDb250ZXh0
LmRpc3BsYXlCb3hGb3JMYXlvdXRCb3gobGF5b3V0Qm94KTsKICAgICAgICAgYXV0byByb290UmVs
YXRpdmVUb3AgPSBGb3JtYXR0aW5nQ29udGV4dDo6bWFwVG9wTGVmdFRvQW5jZXN0b3IobGF5b3V0
Q29udGV4dCwgbGF5b3V0Qm94LCBkb3duY2FzdDxDb250YWluZXI+KG1fZmxvYXRpbmdTdGF0ZS5y
b290KCkpKS55OwogICAgICAgICBhdXRvIGNsZWFyYW5jZSA9ICpmbG9hdEJvdHRvbSAtIHJvb3RS
ZWxhdGl2ZVRvcDsKICAgICAgICAgaWYgKGNsZWFyYW5jZSA8PSAwKQpAQCAtMTg1LDcgKzE4NSw3
IEBAIHN0ZDo6b3B0aW9uYWw8UG9zaXRpb25JbkNvbnRhaW5pbmdCbG9jaz4gRmxvYXRpbmdDb250
ZXh0Ojp2ZXJ0aWNhbFBvc2l0aW9uV2l0aENsCiAKICAgICAgICAgLy8gQ2xlYXJhbmNlIGluaGli
aXRzIG1hcmdpbiBjb2xsYXBzaW5nLiBMZXQncyByZXNldCB0aGUgcmVsZXZhbnQgYWRqb2luaW5n
IG1hcmdpbnMuCiAgICAgICAgIGlmIChhdXRvKiBwcmV2aW91c0luRmxvd1NpYmxpbmcgPSBsYXlv
dXRCb3gucHJldmlvdXNJbkZsb3dTaWJsaW5nKCkpIHsKLSAgICAgICAgICAgIGF1dG8mIHByZXZp
b3VzSW5GbG93RGlzcGxheUJveCA9ICpsYXlvdXRDb250ZXh0LmRpc3BsYXlCb3hGb3JMYXlvdXRC
b3goKnByZXZpb3VzSW5GbG93U2libGluZyk7CisgICAgICAgICAgICBhdXRvJiBwcmV2aW91c0lu
Rmxvd0Rpc3BsYXlCb3ggPSBsYXlvdXRDb250ZXh0LmRpc3BsYXlCb3hGb3JMYXlvdXRCb3goKnBy
ZXZpb3VzSW5GbG93U2libGluZyk7CiAKICAgICAgICAgICAgIC8vIFNpbmNlIHRoZSBwcmV2aW91
cyBpbmZsb3cgc2libGluZyBoYXMgYWxyZWFkeSBiZWVuIGxhaWQgb3V0LCBpdHMgbWFyZ2luIGlz
IGNvbGxhcHNlZCBieSBub3cuCiAgICAgICAgICAgICBBU1NFUlQoIXByZXZpb3VzSW5GbG93RGlz
cGxheUJveC5tYXJnaW5Cb3R0b20oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvZmxvYXRzL0Zsb2F0aW5nU3RhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zsb2F0
cy9GbG9hdGluZ1N0YXRlLmNwcAppbmRleCAzMWQ1MmMzZWY1N2RhNmRkMDA2NjJiMzUwM2FiODY4
ZDhkNjYwNTM0Li41YjE3Y2ZiMjZhYjRjNzAzNTc5ZmJhZGVhNjljMTAyOGY3OWFlYTBiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZmxvYXRzL0Zsb2F0aW5nU3RhdGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mbG9hdHMvRmxvYXRpbmdTdGF0ZS5jcHAKQEAgLTgx
LDkgKzgxLDYgQEAgdm9pZCBGbG9hdGluZ1N0YXRlOjphcHBlbmQoY29uc3QgQm94JiBsYXlvdXRC
b3gpCiB7CiAgICAgQVNTRVJUKGlzPENvbnRhaW5lcj4oKm1fZm9ybWF0dGluZ0NvbnRleHRSb290
KSk7CiAgICAgQVNTRVJUKGJlbG9uZ3NUb1RoaXNGbG9hdGluZ0NvbnRleHQobGF5b3V0Qm94LCAq
bV9mb3JtYXR0aW5nQ29udGV4dFJvb3QpKTsKLQotICAgIC8vIEZsb2F0aW5nIHN0YXRlIHNob3Vs
ZCBob2xkIGJveGVzIHdpdGggY29tcHV0ZWQgcG9zaXRpb24vc2l6ZS4KLSAgICBBU1NFUlQobV9s
YXlvdXRDb250ZXh0LmRpc3BsYXlCb3hGb3JMYXlvdXRCb3gobGF5b3V0Qm94KSk7CiAgICAgQVNT
RVJUKGlzPENvbnRhaW5lcj4oKm1fZm9ybWF0dGluZ0NvbnRleHRSb290KSk7CiAKICAgICBtX2Zs
b2F0cy5hcHBlbmQoeyBsYXlvdXRCb3gsICp0aGlzIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGlu
Z0NvbnRleHQuY3BwCmluZGV4IGUxNmMyMjgxY2Q3NjdjZGUxN2FjYjcyZmVlOGRlNzNjNzY2OTVh
ZDkuLjllMjZiNzU1NGU0ODZjNjc5YjZmYTljMzk2NWM4ZmY0YzkyNGM0NzcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdD
b250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9J
bmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAKQEAgLTg2LDcgKzg2LDcgQEAgdm9pZCBJbmxpbmVG
b3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0KExheW91dENvbnRleHQmIGxheW91dENvbnRleHQsIEZv
cm1hdHRpbmdTdGEKICAgICAgICAgQVNTRVJUKCFsYXlvdXRCb3ggfHwgbGF5b3V0Qm94LT5pc0Rl
c2NlbmRhbnRPZihmb3JtYXR0aW5nUm9vdCkpOwogICAgIH0KIAotICAgIGF1dG8mIGZvcm1hdHRp
bmdSb290RGlzcGxheUJveCA9ICpsYXlvdXRDb250ZXh0LmRpc3BsYXlCb3hGb3JMYXlvdXRCb3go
Zm9ybWF0dGluZ1Jvb3QpOworICAgIGF1dG8mIGZvcm1hdHRpbmdSb290RGlzcGxheUJveCA9IGxh
eW91dENvbnRleHQuZGlzcGxheUJveEZvckxheW91dEJveChmb3JtYXR0aW5nUm9vdCk7CiAgICAg
YXV0byBsaW5lTGVmdCA9IGZvcm1hdHRpbmdSb290RGlzcGxheUJveC5jb250ZW50Qm94TGVmdCgp
OwogICAgIGF1dG8gbGluZVJpZ2h0ID0gZm9ybWF0dGluZ1Jvb3REaXNwbGF5Qm94LmNvbnRlbnRC
b3hSaWdodCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJl
ZS9MYXlvdXRUcmVlQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJl
ZS9MYXlvdXRUcmVlQnVpbGRlci5jcHAKaW5kZXggZThhMGVlMjBhNTM4ZmM3MTc4MjZiYzlhODJl
ODQ1NTNiOWJhZjUxOS4uM2E0YWVkZDQzZmQ0MzY4OWI0MGM3M2RhOGEwMzNkZTE1MjkxYTkxNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1
aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dFRy
ZWVCdWlsZGVyLmNwcApAQCAtMTU1LDcgKzE1NSw3IEBAIHN0YXRpYyB2b2lkIG91dHB1dExheW91
dEJveChUZXh0U3RyZWFtJiBzdHJlYW0sIGNvbnN0IEJveCYgbGF5b3V0Qm94LCBjb25zdCBEaXNw
CiBzdGF0aWMgdm9pZCBvdXRwdXRMYXlvdXRUcmVlKGNvbnN0IExheW91dENvbnRleHQqIGxheW91
dENvbnRleHQsIFRleHRTdHJlYW0mIHN0cmVhbSwgY29uc3QgQ29udGFpbmVyJiByb290Q29udGFp
bmVyLCB1bnNpZ25lZCBkZXB0aCkKIHsKICAgICBmb3IgKGF1dG8mIGNoaWxkIDogY2hpbGRyZW5P
ZlR5cGU8Qm94Pihyb290Q29udGFpbmVyKSkgewotICAgICAgICBvdXRwdXRMYXlvdXRCb3goc3Ry
ZWFtLCBjaGlsZCwgbGF5b3V0Q29udGV4dCA/IGxheW91dENvbnRleHQtPmRpc3BsYXlCb3hGb3JM
YXlvdXRCb3goY2hpbGQpIDogbnVsbHB0ciwgZGVwdGgpOworICAgICAgICBvdXRwdXRMYXlvdXRC
b3goc3RyZWFtLCBjaGlsZCwgbGF5b3V0Q29udGV4dCA/ICZsYXlvdXRDb250ZXh0LT5kaXNwbGF5
Qm94Rm9yTGF5b3V0Qm94KGNoaWxkKSA6IG51bGxwdHIsIGRlcHRoKTsKICAgICAgICAgaWYgKGlz
PENvbnRhaW5lcj4oY2hpbGQpKQogICAgICAgICAgICAgb3V0cHV0TGF5b3V0VHJlZShsYXlvdXRD
b250ZXh0LCBzdHJlYW0sIGRvd25jYXN0PENvbnRhaW5lcj4oY2hpbGQpLCBkZXB0aCArIDEpOwog
ICAgIH0KQEAgLTE2Niw3ICsxNjYsNyBAQCB2b2lkIHNob3dMYXlvdXRUcmVlKGNvbnN0IEJveCYg
bGF5b3V0Qm94LCBjb25zdCBMYXlvdXRDb250ZXh0KiBsYXlvdXRDb250ZXh0KQogICAgIFRleHRT
dHJlYW0gc3RyZWFtKFRleHRTdHJlYW06OkxpbmVNb2RlOjpNdWx0aXBsZUxpbmUsIFRleHRTdHJl
YW06OkZvcm1hdHRpbmc6OlNWR1N0eWxlUmVjdCk7CiAKICAgICBhdXRvJiBpbml0aWFsQ29udGFp
bmluZ0Jsb2NrID0gbGF5b3V0Qm94LmluaXRpYWxDb250YWluaW5nQmxvY2soKTsKLSAgICBvdXRw
dXRMYXlvdXRCb3goc3RyZWFtLCBpbml0aWFsQ29udGFpbmluZ0Jsb2NrLCBsYXlvdXRDb250ZXh0
ID8gbGF5b3V0Q29udGV4dC0+ZGlzcGxheUJveEZvckxheW91dEJveChpbml0aWFsQ29udGFpbmlu
Z0Jsb2NrKSA6IG51bGxwdHIsIDApOworICAgIG91dHB1dExheW91dEJveChzdHJlYW0sIGluaXRp
YWxDb250YWluaW5nQmxvY2ssIGxheW91dENvbnRleHQgPyAmbGF5b3V0Q29udGV4dC0+ZGlzcGxh
eUJveEZvckxheW91dEJveChpbml0aWFsQ29udGFpbmluZ0Jsb2NrKSA6IG51bGxwdHIsIDApOwog
ICAgIG91dHB1dExheW91dFRyZWUobGF5b3V0Q29udGV4dCwgc3RyZWFtLCBpbml0aWFsQ29udGFp
bmluZ0Jsb2NrLCAxKTsKICAgICBXVEZMb2dBbHdheXMoIiVzIiwgc3RyZWFtLnJlbGVhc2UoKS51
dGY4KCkuZGF0YSgpKTsKIH0K
</data>
<flag name="review"
          id="366564"
          type_id="1"
          status="+"
          setter="koivisto"
    />
          </attachment>
      

    </bug>

</bugzilla>