<?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>188380</bug_id>
          
          <creation_ts>2018-08-07 10:48:04 -0700</creation_ts>
          <short_desc>StorageManager should stop ref&apos;ing IPC::Connections as this is leak-prone</short_desc>
          <delta_ts>2018-08-07 12:10:20 -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>WebKit2</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>
          <dependson>188321</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>commit-queue</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1448493</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-08-07 10:48:04 -0700</bug_when>
    <thetext>StorageManager should stop ref&apos;ing IPC::Connections as this is leak-prone.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1448494</commentid>
    <comment_count>1</comment_count>
      <attachid>346715</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-08-07 10:49:43 -0700</bug_when>
    <thetext>Created attachment 346715
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1448513</commentid>
    <comment_count>2</comment_count>
      <attachid>346715</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-08-07 11:48:50 -0700</bug_when>
    <thetext>Comment on attachment 346715
Patch

This feels like a problem that could also be solved with WeakPtr.  Would that make the Connections too big?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1448519</commentid>
    <comment_count>3</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-08-07 11:53:45 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #2)
&gt; Comment on attachment 346715 [details]
&gt; Patch
&gt; 
&gt; This feels like a problem that could also be solved with WeakPtr.  Would
&gt; that make the Connections too big?

No, but you cannot use WeakPtr as key in a HashMap since its value changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1448530</commentid>
    <comment_count>4</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-08-07 12:09:29 -0700</bug_when>
    <thetext>http://trac.webkit.org/r234664</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1448531</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-08-07 12:10:20 -0700</bug_when>
    <thetext>&lt;rdar://problem/43013954&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>346715</attachid>
            <date>2018-08-07 10:49:43 -0700</date>
            <delta_ts>2018-08-07 12:06:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-188380-20180807104943.patch</filename>
            <type>text/plain</type>
            <size>27278</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM0NjMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGMxNjQ5MzFmZDhhNjYyY2Jj
NWNmM2Y0MjZmZTQ1NDA2ZWNjNjk2MzYuLmQ4ZmMxYTUzYmU2N2Y0MmVmYTdjMTZjZDM1ZTRmNzhi
OGMzMmQyNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDMgQEAKKzIwMTgtMDgtMDcgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBTdG9yYWdlTWFuYWdlciBzaG91bGQg
c3RvcCByZWYnaW5nIElQQzo6Q29ubmVjdGlvbnMgYXMgdGhpcyBpcyBsZWFrLXByb25lCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODgzODAKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTdG9yYWdlTWFuYWdl
ciBzaG91bGQgc3RvcCByZWYnaW5nIElQQzo6Q29ubmVjdGlvbnMgYXMgdGhpcyBpcyBsZWFrLXBy
b25lLiBJbnN0ZWFkLCBhc3NpZ24gYSB1bmlxdWUgaWRlbnRpZmllcgorICAgICAgICB0byBlYWNo
IElQQzo6Q29ubmVjdGlvbiBhbmQgc3RvcmUgdGhpcyBpZGVudGlmaWVyIGludGVhZCBvZiBhIFJl
ZlB0cjxJUEM6OkNvbm5lY3Rpb24+LiBXaGVuIHRoZSBTdG9yYWdlTWFuYWdlcgorICAgICAgICBu
ZWVkcyBhbiBhY3R1YWwgSVBDOjpDb25uZWN0aW9uLCBpdCBjYW4gbG9vayBpdCB1cCBmcm9tIHRo
ZSBpZGVudGlmaWVyLgorCisgICAgICAgICogUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwOgor
ICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpDb25uZWN0aW9uKToKKyAgICAgICAgKElQQzo6Q29u
bmVjdGlvbjo6fkNvbm5lY3Rpb24pOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpjb25uZWN0
aW9uKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oOgorICAgICAgICAoSVBD
OjpDb25uZWN0aW9uOjp1bmlxdWVJRCBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlN0
b3JhZ2UvU3RvcmFnZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdl
cjo6U3RvcmFnZUFyZWE6OmFkZExpc3RlbmVyKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1h
bmFnZXI6OlN0b3JhZ2VBcmVhOjpyZW1vdmVMaXN0ZW5lcik6CisgICAgICAgIChXZWJLaXQ6OlN0
b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQXJlYTo6aGFzTGlzdGVuZXIgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUFyZWE6OnNldEl0ZW0pOgorICAgICAgICAo
V2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUFyZWE6OnJlbW92ZUl0ZW0pOgorICAgICAg
ICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUFyZWE6OmNsZWFyKToKKyAgICAgICAg
KFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VBcmVhOjpkaXNwYXRjaEV2ZW50cyBjb25z
dCk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpTZXNzaW9uU3RvcmFnZU5hbWVz
cGFjZTo6YWxsb3dlZENvbm5lY3Rpb24gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdl
TWFuYWdlcjo6U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2U6OnNldEFsbG93ZWRDb25uZWN0aW9uKToK
KyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6OnNldEFsbG93ZWRTZXNzaW9uU3RvcmFn
ZU5hbWVzcGFjZUNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6
cHJvY2Vzc0RpZENsb3NlQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5h
Z2VyOjpjcmVhdGVMb2NhbFN0b3JhZ2VNYXApOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFu
YWdlcjo6Y3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTWFwKToKKyAgICAgICAgKFdlYktpdDo6
U3RvcmFnZU1hbmFnZXI6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTWFwKToKKyAgICAgICAgKFdlYktp
dDo6U3RvcmFnZU1hbmFnZXI6OmRlc3Ryb3lTdG9yYWdlTWFwKToKKyAgICAgICAgKFdlYktpdDo6
U3RvcmFnZU1hbmFnZXI6OnNldEl0ZW0pOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdl
cjo6cmVtb3ZlSXRlbSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpjbGVhcik6
CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjphcHBsaWNhdGlvbldpbGxUZXJtaW5h
dGUpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6ZmluZFN0b3JhZ2VBcmVhIGNv
bnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5oOgor
CiAyMDE4LTA4LTA2ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAg
UmVncmVzc2lvbihOZXR3b3JrTG9hZENoZWNrZXIpOiBDT1JTIHByZWZsaWdodHMgYXJlIG5vIGxv
bmdlciBhYmxlIHRvIGRlYWwgd2l0aCBjbGllbnQgY2VydGlmaWNhdGUgYXV0aGVudGljYXRpb24K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAKaW5kZXggMmExNTJiODUz
MzJhMjNmZjdjOGJmOWY2NjE3NjFkM2UzZjgyZjY1OC4uMzE1NWMwNjAzYjdhN2IxNTgyMGI0YjM1
OTk0ZTMzNmMxOGIzYjQwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
Q29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlv
bi5jcHAKQEAgLTIzMSw4ICsyMzEsMTUgQEAgUmVmPENvbm5lY3Rpb24+IENvbm5lY3Rpb246OmNy
ZWF0ZUNsaWVudENvbm5lY3Rpb24oSWRlbnRpZmllciBpZGVudGlmaWVyLCBDbGllbnQKICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBDb25uZWN0aW9uKGlkZW50aWZpZXIsIGZhbHNlLCBjbGllbnQp
KTsKIH0KIAorc3RhdGljIEhhc2hNYXA8SVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCwgQ29ubmVj
dGlvbio+JiBhbGxDb25uZWN0aW9ucygpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhh
c2hNYXA8SVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCwgQ29ubmVjdGlvbio+PiBtYXA7CisgICAg
cmV0dXJuIG1hcDsKK30KKwogQ29ubmVjdGlvbjo6Q29ubmVjdGlvbihJZGVudGlmaWVyIGlkZW50
aWZpZXIsIGJvb2wgaXNTZXJ2ZXIsIENsaWVudCYgY2xpZW50KQogICAgIDogbV9jbGllbnQoY2xp
ZW50KQorICAgICwgbV91bmlxdWVJRChnZW5lcmF0ZU9iamVjdElkZW50aWZpZXI8VW5pcXVlSURU
eXBlPigpKQogICAgICwgbV9pc1NlcnZlcihpc1NlcnZlcikKICAgICAsIG1fc3luY1JlcXVlc3RJ
RCgwKQogICAgICwgbV9vbmx5U2VuZE1lc3NhZ2VzQXNEaXNwYXRjaFdoZW5XYWl0aW5nRm9yU3lu
Y1JlcGx5V2hlblByb2Nlc3NpbmdTdWNoQU1lc3NhZ2UoZmFsc2UpCkBAIC0yNDgsNiArMjU1LDcg
QEAgQ29ubmVjdGlvbjo6Q29ubmVjdGlvbihJZGVudGlmaWVyIGlkZW50aWZpZXIsIGJvb2wgaXNT
ZXJ2ZXIsIENsaWVudCYgY2xpZW50KQogICAgICwgbV9zaG91bGRXYWl0Rm9yU3luY1JlcGxpZXMo
dHJ1ZSkKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworICAgIGFsbENvbm5lY3Rp
b25zKCkuYWRkKG1fdW5pcXVlSUQsIHRoaXMpOwogCiAgICAgcGxhdGZvcm1Jbml0aWFsaXplKGlk
ZW50aWZpZXIpOwogCkBAIC0yNTksNyArMjY3LDE2IEBAIENvbm5lY3Rpb246OkNvbm5lY3Rpb24o
SWRlbnRpZmllciBpZGVudGlmaWVyLCBib29sIGlzU2VydmVyLCBDbGllbnQmIGNsaWVudCkKIAog
Q29ubmVjdGlvbjo6fkNvbm5lY3Rpb24oKQogeworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4o
KSk7CiAgICAgQVNTRVJUKCFpc1ZhbGlkKCkpOworCisgICAgYWxsQ29ubmVjdGlvbnMoKS5yZW1v
dmUobV91bmlxdWVJRCk7Cit9CisKK0Nvbm5lY3Rpb24qIENvbm5lY3Rpb246OmNvbm5lY3Rpb24o
VW5pcXVlSUQgdW5pcXVlSUQpCit7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAg
ICByZXR1cm4gYWxsQ29ubmVjdGlvbnMoKS5nZXQodW5pcXVlSUQpOwogfQogCiB2b2lkIENvbm5l
Y3Rpb246OnNldE9ubHlTZW5kTWVzc2FnZXNBc0Rpc3BhdGNoV2hlbldhaXRpbmdGb3JTeW5jUmVw
bHlXaGVuUHJvY2Vzc2luZ1N1Y2hBTWVzc2FnZShib29sIGZsYWcpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9Db25uZWN0aW9uLmgKaW5kZXggYTA4MjE2YTdmOWY3MDk4MzA5NzgwMmM0ZjFjMzQ5
NGVjZWQzMTUwNi4uNzk1NjVhZmI3MDUxZjA5MjFiNjg5NTJjZjQzZjgzNmJmM2U1MGQ4MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaApAQCAtMzksNiArMzksNyBAQAog
I2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNs
dWRlIDx3dGYvTG9jay5oPgorI2luY2x1ZGUgPHd0Zi9PYmplY3RJZGVudGlmaWVyLmg+CiAjaW5j
bHVkZSA8d3RmL09wdGlvblNldC5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAjaW5jbHVk
ZSA8d3RmL1dvcmtRdWV1ZS5oPgpAQCAtODYsNyArODcsNyBAQCB3aGlsZSAoMCkKIGNsYXNzIE1h
Y2hNZXNzYWdlOwogY2xhc3MgVW5peE1lc3NhZ2U7CiAKLWNsYXNzIENvbm5lY3Rpb24gOiBwdWJs
aWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Q29ubmVjdGlvbj4geworY2xhc3MgQ29ubmVjdGlvbiA6
IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxDb25uZWN0aW9uLCBXVEY6OkRlc3RydWN0aW9u
VGhyZWFkOjpNYWluPiB7CiBwdWJsaWM6CiAgICAgY2xhc3MgQ2xpZW50IDogcHVibGljIE1lc3Nh
Z2VSZWNlaXZlciB7CiAgICAgcHVibGljOgpAQCAtMTUxLDYgKzE1MiwxMiBAQCBwdWJsaWM6CiAK
ICAgICBDbGllbnQmIGNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50OyB9CiAKKyAgICBl
bnVtIFVuaXF1ZUlEVHlwZSB7IH07CisgICAgdXNpbmcgVW5pcXVlSUQgPSBPYmplY3RJZGVudGlm
aWVyPFVuaXF1ZUlEVHlwZT47CisKKyAgICBzdGF0aWMgQ29ubmVjdGlvbiogY29ubmVjdGlvbihV
bmlxdWVJRCk7CisgICAgVW5pcXVlSUQgdW5pcXVlSUQoKSBjb25zdCB7IHJldHVybiBtX3VuaXF1
ZUlEOyB9CisKICAgICB2b2lkIHNldE9ubHlTZW5kTWVzc2FnZXNBc0Rpc3BhdGNoV2hlbldhaXRp
bmdGb3JTeW5jUmVwbHlXaGVuUHJvY2Vzc2luZ1N1Y2hBTWVzc2FnZShib29sKTsKICAgICB2b2lk
IHNldFNob3VsZEV4aXRPblN5bmNNZXNzYWdlU2VuZEZhaWx1cmUoYm9vbCk7CiAKQEAgLTI3MSw2
ICsyNzgsNyBAQCBwcml2YXRlOgogICAgIH07CiAKICAgICBDbGllbnQmIG1fY2xpZW50OworICAg
IFVuaXF1ZUlEIG1fdW5pcXVlSUQ7CiAgICAgYm9vbCBtX2lzU2VydmVyOwogICAgIHN0ZDo6YXRv
bWljPGJvb2w+IG1faXNWYWxpZCB7IHRydWUgfTsKICAgICBzdGQ6OmF0b21pYzx1aW50NjRfdD4g
bV9zeW5jUmVxdWVzdElEOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
U3RvcmFnZS9TdG9yYWdlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJT
dG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmNwcAppbmRleCBjNzZiNzNhZjBlMjg0YTQ1N2VmNGY4NGQ2
MTNhMzM3OGM4YjUzNmE2Li4yMTUyZWQ3ZDgwMjBmMGFjNWYyNmNhMGEyMGRkZmE2ZTg2YjNjNWI3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VN
YW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3Jh
Z2VNYW5hZ2VyLmNwcApAQCAtNDksMTUgKzQ5LDE1IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4oKSBjb25zdCB7IHJldHVy
biBtX3NlY3VyaXR5T3JpZ2luOyB9CiAKLSAgICB2b2lkIGFkZExpc3RlbmVyKElQQzo6Q29ubmVj
dGlvbiYsIHVpbnQ2NF90IHN0b3JhZ2VNYXBJRCk7Ci0gICAgdm9pZCByZW1vdmVMaXN0ZW5lcihJ
UEM6OkNvbm5lY3Rpb24mLCB1aW50NjRfdCBzdG9yYWdlTWFwSUQpOwotICAgIGJvb2wgaGFzTGlz
dGVuZXIoSVBDOjpDb25uZWN0aW9uJiwgdWludDY0X3Qgc3RvcmFnZU1hcElEKSBjb25zdDsKKyAg
ICB2b2lkIGFkZExpc3RlbmVyKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQsIHVpbnQ2NF90IHN0
b3JhZ2VNYXBJRCk7CisgICAgdm9pZCByZW1vdmVMaXN0ZW5lcihJUEM6OkNvbm5lY3Rpb246OlVu
aXF1ZUlELCB1aW50NjRfdCBzdG9yYWdlTWFwSUQpOworICAgIGJvb2wgaGFzTGlzdGVuZXIoSVBD
OjpDb25uZWN0aW9uOjpVbmlxdWVJRCwgdWludDY0X3Qgc3RvcmFnZU1hcElEKSBjb25zdDsKIAog
ICAgIFJlZjxTdG9yYWdlQXJlYT4gY2xvbmUoKSBjb25zdDsKIAotICAgIHZvaWQgc2V0SXRlbShJ
UEM6OkNvbm5lY3Rpb24qIHNvdXJjZUNvbm5lY3Rpb24sIHVpbnQ2NF90IHNvdXJjZVN0b3JhZ2VB
cmVhSUQsIGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIHZhbHVlLCBjb25zdCBTdHJp
bmcmIHVybFN0cmluZywgYm9vbCYgcXVvdGFFeGNlcHRpb24pOwotICAgIHZvaWQgcmVtb3ZlSXRl
bShJUEM6OkNvbm5lY3Rpb24qIHNvdXJjZUNvbm5lY3Rpb24sIHVpbnQ2NF90IHNvdXJjZVN0b3Jh
Z2VBcmVhSUQsIGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIHVybFN0cmluZyk7Ci0g
ICAgdm9pZCBjbGVhcihJUEM6OkNvbm5lY3Rpb24qIHNvdXJjZUNvbm5lY3Rpb24sIHVpbnQ2NF90
IHNvdXJjZVN0b3JhZ2VBcmVhSUQsIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKTsKKyAgICB2b2lk
IHNldEl0ZW0oSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBzb3VyY2VDb25uZWN0aW9uLCB1aW50
NjRfdCBzb3VyY2VTdG9yYWdlQXJlYUlELCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5n
JiB2YWx1ZSwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGJvb2wmIHF1b3RhRXhjZXB0aW9uKTsK
KyAgICB2b2lkIHJlbW92ZUl0ZW0oSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBzb3VyY2VDb25u
ZWN0aW9uLCB1aW50NjRfdCBzb3VyY2VTdG9yYWdlQXJlYUlELCBjb25zdCBTdHJpbmcmIGtleSwg
Y29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpOworICAgIHZvaWQgY2xlYXIoSVBDOjpDb25uZWN0aW9u
OjpVbmlxdWVJRCBzb3VyY2VDb25uZWN0aW9uLCB1aW50NjRfdCBzb3VyY2VTdG9yYWdlQXJlYUlE
LCBjb25zdCBTdHJpbmcmIHVybFN0cmluZyk7CiAKICAgICBjb25zdCBIYXNoTWFwPFN0cmluZywg
U3RyaW5nPiYgaXRlbXMoKSBjb25zdDsKICAgICB2b2lkIGNsZWFyKCk7CkBAIC02OSw3ICs2OSw3
IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIG9wZW5EYXRhYmFzZUFuZEltcG9ydEl0ZW1zSWZOZWVk
ZWQoKSBjb25zdDsKIAotICAgIHZvaWQgZGlzcGF0Y2hFdmVudHMoSVBDOjpDb25uZWN0aW9uKiBz
b3VyY2VDb25uZWN0aW9uLCB1aW50NjRfdCBzb3VyY2VTdG9yYWdlQXJlYUlELCBjb25zdCBTdHJp
bmcmIGtleSwgY29uc3QgU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgU3RyaW5nJiBuZXdWYWx1ZSwg
Y29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpIGNvbnN0OworICAgIHZvaWQgZGlzcGF0Y2hFdmVudHMo
SVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBzb3VyY2VDb25uZWN0aW9uLCB1aW50NjRfdCBzb3Vy
Y2VTdG9yYWdlQXJlYUlELCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBvbGRWYWx1
ZSwgY29uc3QgU3RyaW5nJiBuZXdWYWx1ZSwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpIGNvbnN0
OwogCiAgICAgLy8gV2lsbCBiZSBudWxsIGlmIHRoZSBzdG9yYWdlIGFyZWEgYmVsb25ncyB0byBh
IHNlc3Npb24gc3RvcmFnZSBuYW1lc3BhY2UuCiAgICAgTG9jYWxTdG9yYWdlTmFtZXNwYWNlKiBt
X2xvY2FsU3RvcmFnZU5hbWVzcGFjZTsKQEAgLTgwLDcgKzgwLDcgQEAgcHJpdmF0ZToKICAgICB1
bnNpZ25lZCBtX3F1b3RhSW5CeXRlczsKIAogICAgIFJlZlB0cjxTdG9yYWdlTWFwPiBtX3N0b3Jh
Z2VNYXA7Ci0gICAgSGFzaFNldDxzdGQ6OnBhaXI8UmVmUHRyPElQQzo6Q29ubmVjdGlvbj4sIHVp
bnQ2NF90Pj4gbV9ldmVudExpc3RlbmVyczsKKyAgICBIYXNoU2V0PHN0ZDo6cGFpcjxJUEM6OkNv
bm5lY3Rpb246OlVuaXF1ZUlELCB1aW50NjRfdD4+IG1fZXZlbnRMaXN0ZW5lcnM7CiB9OwogCiBj
bGFzcyBTdG9yYWdlTWFuYWdlcjo6TG9jYWxTdG9yYWdlTmFtZXNwYWNlIDogcHVibGljIFRocmVh
ZFNhZmVSZWZDb3VudGVkPExvY2FsU3RvcmFnZU5hbWVzcGFjZT4gewpAQCAtMTg1LDIxICsxODUs
MjEgQEAgU3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VBcmVhOjp+U3RvcmFnZUFyZWEoKQogICAgICAg
ICBtX2xvY2FsU3RvcmFnZU5hbWVzcGFjZS0+ZGlkRGVzdHJveVN0b3JhZ2VBcmVhKHRoaXMpOwog
fQogCi12b2lkIFN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQXJlYTo6YWRkTGlzdGVuZXIoSVBDOjpD
b25uZWN0aW9uJiBjb25uZWN0aW9uLCB1aW50NjRfdCBzdG9yYWdlTWFwSUQpCit2b2lkIFN0b3Jh
Z2VNYW5hZ2VyOjpTdG9yYWdlQXJlYTo6YWRkTGlzdGVuZXIoSVBDOjpDb25uZWN0aW9uOjpVbmlx
dWVJRCBjb25uZWN0aW9uSUQsIHVpbnQ2NF90IHN0b3JhZ2VNYXBJRCkKIHsKLSAgICBBU1NFUlQo
IW1fZXZlbnRMaXN0ZW5lcnMuY29udGFpbnMoc3RkOjptYWtlX3BhaXIoJmNvbm5lY3Rpb24sIHN0
b3JhZ2VNYXBJRCkpKTsKLSAgICBtX2V2ZW50TGlzdGVuZXJzLmFkZChzdGQ6Om1ha2VfcGFpcigm
Y29ubmVjdGlvbiwgc3RvcmFnZU1hcElEKSk7CisgICAgQVNTRVJUKCFtX2V2ZW50TGlzdGVuZXJz
LmNvbnRhaW5zKHN0ZDo6bWFrZV9wYWlyKGNvbm5lY3Rpb25JRCwgc3RvcmFnZU1hcElEKSkpOwor
ICAgIG1fZXZlbnRMaXN0ZW5lcnMuYWRkKHN0ZDo6bWFrZV9wYWlyKGNvbm5lY3Rpb25JRCwgc3Rv
cmFnZU1hcElEKSk7CiB9CiAKLXZvaWQgU3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VBcmVhOjpyZW1v
dmVMaXN0ZW5lcihJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIHVpbnQ2NF90IHN0b3JhZ2VN
YXBJRCkKK3ZvaWQgU3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VBcmVhOjpyZW1vdmVMaXN0ZW5lcihJ
UEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEIGNvbm5lY3Rpb25JRCwgdWludDY0X3Qgc3RvcmFnZU1h
cElEKQogewotICAgIEFTU0VSVChpc1Nlc3Npb25TdG9yYWdlKCkgfHwgbV9ldmVudExpc3RlbmVy
cy5jb250YWlucyhzdGQ6Om1ha2VfcGFpcigmY29ubmVjdGlvbiwgc3RvcmFnZU1hcElEKSkpOwot
ICAgIG1fZXZlbnRMaXN0ZW5lcnMucmVtb3ZlKHN0ZDo6bWFrZV9wYWlyKCZjb25uZWN0aW9uLCBz
dG9yYWdlTWFwSUQpKTsKKyAgICBBU1NFUlQoaXNTZXNzaW9uU3RvcmFnZSgpIHx8IG1fZXZlbnRM
aXN0ZW5lcnMuY29udGFpbnMoc3RkOjptYWtlX3BhaXIoY29ubmVjdGlvbklELCBzdG9yYWdlTWFw
SUQpKSk7CisgICAgbV9ldmVudExpc3RlbmVycy5yZW1vdmUoc3RkOjptYWtlX3BhaXIoY29ubmVj
dGlvbklELCBzdG9yYWdlTWFwSUQpKTsKIH0KIAotYm9vbCBTdG9yYWdlTWFuYWdlcjo6U3RvcmFn
ZUFyZWE6Omhhc0xpc3RlbmVyKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgdWludDY0X3Qg
c3RvcmFnZU1hcElEKSBjb25zdAorYm9vbCBTdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUFyZWE6Omhh
c0xpc3RlbmVyKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQgY29ubmVjdGlvbklELCB1aW50NjRf
dCBzdG9yYWdlTWFwSUQpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fZXZlbnRMaXN0ZW5lcnMuY29u
dGFpbnMoc3RkOjptYWtlX3BhaXIoJmNvbm5lY3Rpb24sIHN0b3JhZ2VNYXBJRCkpOworICAgIHJl
dHVybiBtX2V2ZW50TGlzdGVuZXJzLmNvbnRhaW5zKHN0ZDo6bWFrZV9wYWlyKGNvbm5lY3Rpb25J
RCwgc3RvcmFnZU1hcElEKSk7CiB9CiAKIFJlZjxTdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUFyZWE+
IFN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQXJlYTo6Y2xvbmUoKSBjb25zdApAQCAtMjEyLDcgKzIx
Miw3IEBAIFJlZjxTdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUFyZWE+IFN0b3JhZ2VNYW5hZ2VyOjpT
dG9yYWdlQXJlYTo6Y2xvbmUoKSBjb25zdAogICAgIHJldHVybiBzdG9yYWdlQXJlYTsKIH0KIAot
dm9pZCBTdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUFyZWE6OnNldEl0ZW0oSVBDOjpDb25uZWN0aW9u
KiBzb3VyY2VDb25uZWN0aW9uLCB1aW50NjRfdCBzb3VyY2VTdG9yYWdlQXJlYUlELCBjb25zdCBT
dHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcs
IGJvb2wmIHF1b3RhRXhjZXB0aW9uKQordm9pZCBTdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUFyZWE6
OnNldEl0ZW0oSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBzb3VyY2VDb25uZWN0aW9uLCB1aW50
NjRfdCBzb3VyY2VTdG9yYWdlQXJlYUlELCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5n
JiB2YWx1ZSwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGJvb2wmIHF1b3RhRXhjZXB0aW9uKQog
ewogICAgIG9wZW5EYXRhYmFzZUFuZEltcG9ydEl0ZW1zSWZOZWVkZWQoKTsKIApAQCAtMjMxLDcg
KzIzMSw3IEBAIHZvaWQgU3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VBcmVhOjpzZXRJdGVtKElQQzo6
Q29ubmVjdGlvbiogc291cmNlQ29ubmVjdGlvbiwgdWluCiAgICAgZGlzcGF0Y2hFdmVudHMoc291
cmNlQ29ubmVjdGlvbiwgc291cmNlU3RvcmFnZUFyZWFJRCwga2V5LCBvbGRWYWx1ZSwgdmFsdWUs
IHVybFN0cmluZyk7CiB9CiAKLXZvaWQgU3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VBcmVhOjpyZW1v
dmVJdGVtKElQQzo6Q29ubmVjdGlvbiogc291cmNlQ29ubmVjdGlvbiwgdWludDY0X3Qgc291cmNl
U3RvcmFnZUFyZWFJRCwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5n
KQordm9pZCBTdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUFyZWE6OnJlbW92ZUl0ZW0oSVBDOjpDb25u
ZWN0aW9uOjpVbmlxdWVJRCBzb3VyY2VDb25uZWN0aW9uLCB1aW50NjRfdCBzb3VyY2VTdG9yYWdl
QXJlYUlELCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpCiB7CiAg
ICAgb3BlbkRhdGFiYXNlQW5kSW1wb3J0SXRlbXNJZk5lZWRlZCgpOwogCkBAIC0yNDksNyArMjQ5
LDcgQEAgdm9pZCBTdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUFyZWE6OnJlbW92ZUl0ZW0oSVBDOjpD
b25uZWN0aW9uKiBzb3VyY2VDb25uZWN0aW9uLAogICAgIGRpc3BhdGNoRXZlbnRzKHNvdXJjZUNv
bm5lY3Rpb24sIHNvdXJjZVN0b3JhZ2VBcmVhSUQsIGtleSwgb2xkVmFsdWUsIFN0cmluZygpLCB1
cmxTdHJpbmcpOwogfQogCi12b2lkIFN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQXJlYTo6Y2xlYXIo
SVBDOjpDb25uZWN0aW9uKiBzb3VyY2VDb25uZWN0aW9uLCB1aW50NjRfdCBzb3VyY2VTdG9yYWdl
QXJlYUlELCBjb25zdCBTdHJpbmcmIHVybFN0cmluZykKK3ZvaWQgU3RvcmFnZU1hbmFnZXI6OlN0
b3JhZ2VBcmVhOjpjbGVhcihJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEIHNvdXJjZUNvbm5lY3Rp
b24sIHVpbnQ2NF90IHNvdXJjZVN0b3JhZ2VBcmVhSUQsIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5n
KQogewogICAgIG9wZW5EYXRhYmFzZUFuZEltcG9ydEl0ZW1zSWZOZWVkZWQoKTsKIApAQCAtMjgw
LDggKzI4MCwxMiBAQCB2b2lkIFN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQXJlYTo6Y2xlYXIoKQog
ICAgICAgICBtX2xvY2FsU3RvcmFnZURhdGFiYXNlID0gbnVsbHB0cjsKICAgICB9CiAKLSAgICBm
b3IgKGF1dG8gaXQgPSBtX2V2ZW50TGlzdGVuZXJzLmJlZ2luKCksIGVuZCA9IG1fZXZlbnRMaXN0
ZW5lcnMuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAgaXQtPmZpcnN0LT5zZW5kKE1l
c3NhZ2VzOjpTdG9yYWdlQXJlYU1hcDo6Q2xlYXJDYWNoZSgpLCBpdC0+c2Vjb25kKTsKKyAgICBm
b3IgKGF1dG8gaXQgPSBtX2V2ZW50TGlzdGVuZXJzLmJlZ2luKCksIGVuZCA9IG1fZXZlbnRMaXN0
ZW5lcnMuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICBSdW5Mb29wOjptYWluKCku
ZGlzcGF0Y2goW2Nvbm5lY3Rpb25JRCA9IGl0LT5maXJzdCwgZGVzdGluYXRpb25TdG9yYWdlQXJl
YUlEID0gaXQtPnNlY29uZF0geworICAgICAgICAgICAgaWYgKGF1dG8qIGNvbm5lY3Rpb24gPSBJ
UEM6OkNvbm5lY3Rpb246OmNvbm5lY3Rpb24oY29ubmVjdGlvbklEKSkKKyAgICAgICAgICAgICAg
ICBjb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdlQXJlYU1hcDo6Q2xlYXJDYWNoZSgp
LCBkZXN0aW5hdGlvblN0b3JhZ2VBcmVhSUQpOworICAgICAgICB9KTsKKyAgICB9CiB9CiAKIHZv
aWQgU3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VBcmVhOjpvcGVuRGF0YWJhc2VBbmRJbXBvcnRJdGVt
c0lmTmVlZGVkKCkgY29uc3QKQEAgLTMwMCwxMiArMzA0LDE1IEBAIHZvaWQgU3RvcmFnZU1hbmFn
ZXI6OlN0b3JhZ2VBcmVhOjpvcGVuRGF0YWJhc2VBbmRJbXBvcnRJdGVtc0lmTmVlZGVkKCkgY29u
c3QKICAgICBtX2RpZEltcG9ydEl0ZW1zRnJvbURhdGFiYXNlID0gdHJ1ZTsKIH0KIAotdm9pZCBT
dG9yYWdlTWFuYWdlcjo6U3RvcmFnZUFyZWE6OmRpc3BhdGNoRXZlbnRzKElQQzo6Q29ubmVjdGlv
biogc291cmNlQ29ubmVjdGlvbiwgdWludDY0X3Qgc291cmNlU3RvcmFnZUFyZWFJRCwgY29uc3Qg
U3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgb2xkVmFsdWUsIGNvbnN0IFN0cmluZyYgbmV3VmFs
dWUsIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKSBjb25zdAordm9pZCBTdG9yYWdlTWFuYWdlcjo6
U3RvcmFnZUFyZWE6OmRpc3BhdGNoRXZlbnRzKElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQgc291
cmNlQ29ubmVjdGlvbiwgdWludDY0X3Qgc291cmNlU3RvcmFnZUFyZWFJRCwgY29uc3QgU3RyaW5n
JiBrZXksIGNvbnN0IFN0cmluZyYgb2xkVmFsdWUsIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUsIGNv
bnN0IFN0cmluZyYgdXJsU3RyaW5nKSBjb25zdAogewotICAgIGZvciAoSGFzaFNldDxzdGQ6OnBh
aXI8UmVmUHRyPElQQzo6Q29ubmVjdGlvbj4sIHVpbnQ2NF90Pj46OmNvbnN0X2l0ZXJhdG9yIGl0
ID0gbV9ldmVudExpc3RlbmVycy5iZWdpbigpLCBlbmQgPSBtX2V2ZW50TGlzdGVuZXJzLmVuZCgp
OyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgdWludDY0X3Qgc3RvcmFnZUFyZWFJRCA9IGl0
LT5maXJzdCA9PSBzb3VyY2VDb25uZWN0aW9uID8gc291cmNlU3RvcmFnZUFyZWFJRCA6IDA7Cisg
ICAgZm9yIChhdXRvIGl0ID0gbV9ldmVudExpc3RlbmVycy5iZWdpbigpLCBlbmQgPSBtX2V2ZW50
TGlzdGVuZXJzLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgc291cmNlU3RvcmFn
ZUFyZWFJRCA9IGl0LT5maXJzdCA9PSBzb3VyY2VDb25uZWN0aW9uID8gc291cmNlU3RvcmFnZUFy
ZWFJRCA6IDA7CiAKLSAgICAgICAgaXQtPmZpcnN0LT5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdlQXJl
YU1hcDo6RGlzcGF0Y2hTdG9yYWdlRXZlbnQoc3RvcmFnZUFyZWFJRCwga2V5LCBvbGRWYWx1ZSwg
bmV3VmFsdWUsIHVybFN0cmluZyksIGl0LT5zZWNvbmQpOworICAgICAgICBSdW5Mb29wOjptYWlu
KCkuZGlzcGF0Y2goW2Nvbm5lY3Rpb25JRCA9IGl0LT5maXJzdCwgc291cmNlU3RvcmFnZUFyZWFJ
RCwgZGVzdGluYXRpb25TdG9yYWdlQXJlYUlEID0gaXQtPnNlY29uZCwga2V5ID0ga2V5Lmlzb2xh
dGVkQ29weSgpLCBvbGRWYWx1ZSA9IG9sZFZhbHVlLmlzb2xhdGVkQ29weSgpLCBuZXdWYWx1ZSA9
IG5ld1ZhbHVlLmlzb2xhdGVkQ29weSgpLCB1cmxTdHJpbmcgPSB1cmxTdHJpbmcuaXNvbGF0ZWRD
b3B5KCldIHsKKyAgICAgICAgICAgIGlmIChhdXRvKiBjb25uZWN0aW9uID0gSVBDOjpDb25uZWN0
aW9uOjpjb25uZWN0aW9uKGNvbm5lY3Rpb25JRCkpCisgICAgICAgICAgICAgICAgY29ubmVjdGlv
bi0+c2VuZChNZXNzYWdlczo6U3RvcmFnZUFyZWFNYXA6OkRpc3BhdGNoU3RvcmFnZUV2ZW50KHNv
dXJjZVN0b3JhZ2VBcmVhSUQsIGtleSwgb2xkVmFsdWUsIG5ld1ZhbHVlLCB1cmxTdHJpbmcpLCBk
ZXN0aW5hdGlvblN0b3JhZ2VBcmVhSUQpOworICAgICAgICB9KTsKICAgICB9CiB9CiAKQEAgLTM3
Myw4ICszODAsOCBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVy
biBtX3N0b3JhZ2VBcmVhTWFwLmlzRW1wdHkoKTsgfQogCi0gICAgSVBDOjpDb25uZWN0aW9uKiBh
bGxvd2VkQ29ubmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fYWxsb3dlZENvbm5lY3Rpb24uZ2V0
KCk7IH0KLSAgICB2b2lkIHNldEFsbG93ZWRDb25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbiopOwor
ICAgIElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQgYWxsb3dlZENvbm5lY3Rpb24oKSBjb25zdCB7
IHJldHVybiBtX2FsbG93ZWRDb25uZWN0aW9uOyB9CisgICAgdm9pZCBzZXRBbGxvd2VkQ29ubmVj
dGlvbihJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlEKTsKIAogICAgIFJlZjxTdG9yYWdlQXJlYT4g
Z2V0T3JDcmVhdGVTdG9yYWdlQXJlYShTZWN1cml0eU9yaWdpbkRhdGEmJik7CiAKQEAgLTQwOSw3
ICs0MTYsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFNlc3Npb25TdG9yYWdl
TmFtZXNwYWNlKHVuc2lnbmVkIHF1b3RhSW5CeXRlcyk7CiAKLSAgICBSZWZQdHI8SVBDOjpDb25u
ZWN0aW9uPiBtX2FsbG93ZWRDb25uZWN0aW9uOworICAgIElQQzo6Q29ubmVjdGlvbjo6VW5pcXVl
SUQgbV9hbGxvd2VkQ29ubmVjdGlvbjsKICAgICB1bnNpZ25lZCBtX3F1b3RhSW5CeXRlczsKIAog
ICAgIEhhc2hNYXA8U2VjdXJpdHlPcmlnaW5EYXRhLCBSZWZQdHI8U3RvcmFnZUFyZWE+PiBtX3N0
b3JhZ2VBcmVhTWFwOwpAQCAtNDI5LDcgKzQzNiw3IEBAIFN0b3JhZ2VNYW5hZ2VyOjpTZXNzaW9u
U3RvcmFnZU5hbWVzcGFjZTo6flNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKCkKIHsKIH0KIAotdm9p
ZCBTdG9yYWdlTWFuYWdlcjo6U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2U6OnNldEFsbG93ZWRDb25u
ZWN0aW9uKElQQzo6Q29ubmVjdGlvbiogYWxsb3dlZENvbm5lY3Rpb24pCit2b2lkIFN0b3JhZ2VN
YW5hZ2VyOjpTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZTo6c2V0QWxsb3dlZENvbm5lY3Rpb24oSVBD
OjpDb25uZWN0aW9uOjpVbmlxdWVJRCBhbGxvd2VkQ29ubmVjdGlvbikKIHsKICAgICBtX2FsbG93
ZWRDb25uZWN0aW9uID0gYWxsb3dlZENvbm5lY3Rpb247CiB9CkBAIC00ODUsMTAgKzQ5MiwxMSBA
QCB2b2lkIFN0b3JhZ2VNYW5hZ2VyOjpkZXN0cm95U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UodWlu
dDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlEKQogCiB2b2lkIFN0b3JhZ2VNYW5hZ2VyOjpzZXRBbGxv
d2VkU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VDb25uZWN0aW9uKHVpbnQ2NF90IHN0b3JhZ2VOYW1l
c3BhY2VJRCwgSVBDOjpDb25uZWN0aW9uKiBhbGxvd2VkQ29ubmVjdGlvbikKIHsKLSAgICBtX3F1
ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb25u
ZWN0aW9uID0gUmVmUHRyPElQQzo6Q29ubmVjdGlvbj4oYWxsb3dlZENvbm5lY3Rpb24pLCBzdG9y
YWdlTmFtZXNwYWNlSURdKCkgbXV0YWJsZSB7CisgICAgYXV0byBhbGxvd2VkQ29ubmVjdGlvbklE
ID0gYWxsb3dlZENvbm5lY3Rpb24gPyBhbGxvd2VkQ29ubmVjdGlvbi0+dW5pcXVlSUQoKSA6IElQ
Qzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQgeyB9OworICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGFsbG93ZWRDb25uZWN0aW9uSUQsIHN0
b3JhZ2VOYW1lc3BhY2VJRF0oKSBtdXRhYmxlIHsKICAgICAgICAgQVNTRVJUKG1fc2Vzc2lvblN0
b3JhZ2VOYW1lc3BhY2VzLmNvbnRhaW5zKHN0b3JhZ2VOYW1lc3BhY2VJRCkpOwogCi0gICAgICAg
IG1fc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VzLmdldChzdG9yYWdlTmFtZXNwYWNlSUQpLT5zZXRB
bGxvd2VkQ29ubmVjdGlvbihjb25uZWN0aW9uLmdldCgpKTsKKyAgICAgICAgbV9zZXNzaW9uU3Rv
cmFnZU5hbWVzcGFjZXMuZ2V0KHN0b3JhZ2VOYW1lc3BhY2VJRCktPnNldEFsbG93ZWRDb25uZWN0
aW9uKGFsbG93ZWRDb25uZWN0aW9uSUQpOwogICAgIH0pOwogfQogCkBAIC01MTksMTMgKzUyNywx
MyBAQCB2b2lkIFN0b3JhZ2VNYW5hZ2VyOjpwcm9jZXNzRGlkQ2xvc2VDb25uZWN0aW9uKFdlYlBy
b2Nlc3NQcm94eSYsIElQQzo6Q29ubmVjdGlvbgogewogICAgIGNvbm5lY3Rpb24ucmVtb3ZlV29y
a1F1ZXVlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpTdG9yYWdlTWFuYWdlcjo6bWVzc2FnZVJl
Y2VpdmVyTmFtZSgpKTsKIAotICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gbWFrZVJlZigqdGhpcyksIGNvbm5lY3Rpb24gPSBSZWY8SVBDOjpDb25uZWN0aW9uPihj
b25uZWN0aW9uKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgVmVjdG9yPHN0ZDo6cGFpcjxSZWZQdHI8
SVBDOjpDb25uZWN0aW9uPiwgdWludDY0X3Q+PiBjb25uZWN0aW9uQW5kU3RvcmFnZU1hcElEUGFp
cnNUb1JlbW92ZTsKKyAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpLCBjb25uZWN0aW9uSUQgPSBjb25uZWN0aW9uLnVuaXF1ZUlEKCldKCkg
bXV0YWJsZSB7CisgICAgICAgIFZlY3RvcjxzdGQ6OnBhaXI8SVBDOjpDb25uZWN0aW9uOjpVbmlx
dWVJRCwgdWludDY0X3Q+PiBjb25uZWN0aW9uQW5kU3RvcmFnZU1hcElEUGFpcnNUb1JlbW92ZTsK
ICAgICAgICAgZm9yIChhdXRvJiBzdG9yYWdlQXJlYSA6IG1fc3RvcmFnZUFyZWFzQnlDb25uZWN0
aW9uKSB7Ci0gICAgICAgICAgICBpZiAoc3RvcmFnZUFyZWEua2V5LmZpcnN0ICE9IGNvbm5lY3Rp
b24ucHRyKCkpCisgICAgICAgICAgICBpZiAoc3RvcmFnZUFyZWEua2V5LmZpcnN0ICE9IGNvbm5l
Y3Rpb25JRCkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICAgICAgc3RvcmFn
ZUFyZWEudmFsdWUtPnJlbW92ZUxpc3RlbmVyKCpzdG9yYWdlQXJlYS5rZXkuZmlyc3QsIHN0b3Jh
Z2VBcmVhLmtleS5zZWNvbmQpOworICAgICAgICAgICAgc3RvcmFnZUFyZWEudmFsdWUtPnJlbW92
ZUxpc3RlbmVyKHN0b3JhZ2VBcmVhLmtleS5maXJzdCwgc3RvcmFnZUFyZWEua2V5LnNlY29uZCk7
CiAgICAgICAgICAgICBjb25uZWN0aW9uQW5kU3RvcmFnZU1hcElEUGFpcnNUb1JlbW92ZS5hcHBl
bmQoc3RvcmFnZUFyZWEua2V5KTsKICAgICAgICAgfQogCkBAIC02NjUsMTIgKzY3MywxMiBAQCB2
b2lkIFN0b3JhZ2VNYW5hZ2VyOjpkZWxldGVMb2NhbFN0b3JhZ2VFbnRyaWVzRm9yT3JpZ2lucyhj
b25zdCBWZWN0b3I8V2ViQ29yZTo6UwogCiB2b2lkIFN0b3JhZ2VNYW5hZ2VyOjpjcmVhdGVMb2Nh
bFN0b3JhZ2VNYXAoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCB1aW50NjRfdCBzdG9yYWdl
TWFwSUQsIHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwgU2VjdXJpdHlPcmlnaW5EYXRhJiYg
c2VjdXJpdHlPcmlnaW5EYXRhKQogewotICAgIHN0ZDo6cGFpcjxSZWZQdHI8SVBDOjpDb25uZWN0
aW9uPiwgdWludDY0X3Q+IGNvbm5lY3Rpb25BbmRTdG9yYWdlTWFwSURQYWlyKCZjb25uZWN0aW9u
LCBzdG9yYWdlTWFwSUQpOworICAgIHN0ZDo6cGFpcjxJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlE
LCB1aW50NjRfdD4gY29ubmVjdGlvbkFuZFN0b3JhZ2VNYXBJRFBhaXIoY29ubmVjdGlvbi51bmlx
dWVJRCgpLCBzdG9yYWdlTWFwSUQpOwogCiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIGEg
bWVzc2FnZSBjaGVjay4KLSAgICBBU1NFUlQoKEhhc2hNYXA8c3RkOjpwYWlyPFJlZlB0cjxJUEM6
OkNvbm5lY3Rpb24+LCB1aW50NjRfdD4sIFJlZlB0cjxTdG9yYWdlQXJlYT4+Ojppc1ZhbGlkS2V5
KGNvbm5lY3Rpb25BbmRTdG9yYWdlTWFwSURQYWlyKSkpOworICAgIEFTU0VSVCgoSGFzaE1hcDxz
dGQ6OnBhaXI8SVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCwgdWludDY0X3Q+LCBSZWZQdHI8U3Rv
cmFnZUFyZWE+Pjo6aXNWYWxpZEtleShjb25uZWN0aW9uQW5kU3RvcmFnZU1hcElEUGFpcikpKTsK
IAotICAgIEhhc2hNYXA8c3RkOjpwYWlyPFJlZlB0cjxJUEM6OkNvbm5lY3Rpb24+LCB1aW50NjRf
dD4sIFJlZlB0cjxTdG9yYWdlQXJlYT4+OjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9zdG9yYWdlQXJl
YXNCeUNvbm5lY3Rpb24uYWRkKGNvbm5lY3Rpb25BbmRTdG9yYWdlTWFwSURQYWlyLCBudWxscHRy
KTsKKyAgICBhdXRvIHJlc3VsdCA9IG1fc3RvcmFnZUFyZWFzQnlDb25uZWN0aW9uLmFkZChjb25u
ZWN0aW9uQW5kU3RvcmFnZU1hcElEUGFpciwgbnVsbHB0cik7CiAKICAgICAvLyBGSVhNRTogVGhl
c2Ugc2hvdWxkIGJlIGEgbWVzc2FnZSBjaGVja3MuCiAgICAgQVNTRVJUKHJlc3VsdC5pc05ld0Vu
dHJ5KTsKQEAgLTY4Miw3ICs2OTAsNyBAQCB2b2lkIFN0b3JhZ2VNYW5hZ2VyOjpjcmVhdGVMb2Nh
bFN0b3JhZ2VNYXAoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCB1aW50NjRfdAogICAgIEFT
U0VSVChsb2NhbFN0b3JhZ2VOYW1lc3BhY2UpOwogCiAgICAgYXV0byBzdG9yYWdlQXJlYSA9IGxv
Y2FsU3RvcmFnZU5hbWVzcGFjZS0+Z2V0T3JDcmVhdGVTdG9yYWdlQXJlYShXVEZNb3ZlKHNlY3Vy
aXR5T3JpZ2luRGF0YSkpOwotICAgIHN0b3JhZ2VBcmVhLT5hZGRMaXN0ZW5lcihjb25uZWN0aW9u
LCBzdG9yYWdlTWFwSUQpOworICAgIHN0b3JhZ2VBcmVhLT5hZGRMaXN0ZW5lcihjb25uZWN0aW9u
LnVuaXF1ZUlEKCksIHN0b3JhZ2VNYXBJRCk7CiAKICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVl
ID0gV1RGTW92ZShzdG9yYWdlQXJlYSk7CiB9CkBAIC02OTAsMzAgKzY5OCwzMCBAQCB2b2lkIFN0
b3JhZ2VNYW5hZ2VyOjpjcmVhdGVMb2NhbFN0b3JhZ2VNYXAoSVBDOjpDb25uZWN0aW9uJiBjb25u
ZWN0aW9uLCB1aW50NjRfdAogdm9pZCBTdG9yYWdlTWFuYWdlcjo6Y3JlYXRlVHJhbnNpZW50TG9j
YWxTdG9yYWdlTWFwKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgdWludDY0X3Qgc3RvcmFn
ZU1hcElELCB1aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQsIFNlY3VyaXR5T3JpZ2luRGF0YSYm
IHRvcExldmVsT3JpZ2luRGF0YSwgU2VjdXJpdHlPcmlnaW5EYXRhJiYgb3JpZ2luKQogewogICAg
IC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBhIG1lc3NhZ2UgY2hlY2suCi0gICAgQVNTRVJUKG1f
c3RvcmFnZUFyZWFzQnlDb25uZWN0aW9uLmlzVmFsaWRLZXkoeyAmY29ubmVjdGlvbiwgc3RvcmFn
ZU1hcElEIH0pKTsKKyAgICBBU1NFUlQobV9zdG9yYWdlQXJlYXNCeUNvbm5lY3Rpb24uaXNWYWxp
ZEtleSh7IGNvbm5lY3Rpb24udW5pcXVlSUQoKSwgc3RvcmFnZU1hcElEIH0pKTsKIAogICAgIC8v
IFNlZSBpZiB3ZSBhbHJlYWR5IGhhdmUgc2Vzc2lvbiBzdG9yYWdlIGZvciB0aGlzIGNvbm5lY3Rp
b24vb3JpZ2luIGNvbWJvLgogICAgIC8vIElmIHNvLCB1cGRhdGUgdGhlIG1hcCB3aXRoIHRoZSBu
ZXcgSUQsIG90aGVyd2lzZSBrZWVwIG9uIHRydWNraW5nLgogICAgIGZvciAoYXV0byBpdCA9IG1f
c3RvcmFnZUFyZWFzQnlDb25uZWN0aW9uLmJlZ2luKCksIGVuZCA9IG1fc3RvcmFnZUFyZWFzQnlD
b25uZWN0aW9uLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgaWYgKGl0LT5rZXku
Zmlyc3QgIT0gJmNvbm5lY3Rpb24pCisgICAgICAgIGlmIChpdC0+a2V5LmZpcnN0ICE9IGNvbm5l
Y3Rpb24udW5pcXVlSUQoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBSZWY8U3Rv
cmFnZUFyZWE+IGFyZWEgPSAqaXQtPnZhbHVlOwogICAgICAgICBpZiAoIWFyZWEtPmlzU2Vzc2lv
blN0b3JhZ2UoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBpZiAoIW9yaWdpbi5z
ZWN1cml0eU9yaWdpbigpLT5pc1NhbWVTY2hlbWVIb3N0UG9ydChhcmVhLT5zZWN1cml0eU9yaWdp
bigpLnNlY3VyaXR5T3JpZ2luKCkuZ2V0KCkpKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAg
ICAgIGFyZWEtPmFkZExpc3RlbmVyKGNvbm5lY3Rpb24sIHN0b3JhZ2VNYXBJRCk7CisgICAgICAg
IGFyZWEtPmFkZExpc3RlbmVyKGNvbm5lY3Rpb24udW5pcXVlSUQoKSwgc3RvcmFnZU1hcElEKTsK
ICAgICAgICAgLy8gSWYgdGhlIHN0b3JhZ2VNYXBJRCB1c2VkIGFzIGtleSBpbiBtX3N0b3JhZ2VB
cmVhc0J5Q29ubmVjdGlvbiBpcyBubyBsb25nZXIgb25lIG9mIHRoZSBTdG9yYWdlQXJlYSdzIGxp
c3RlbmVycywgdGhlbiB0aGlzIG1lYW5zCiAgICAgICAgIC8vIHRoYXQgZGVzdHJveVN0b3JhZ2VN
YXAoKSB3YXMgYWxyZWFkeSBjYWxsZWQgZm9yIHRoYXQgc3RvcmFnZU1hcElEIGJ1dCBpdCBkZWNp
ZGVkIG5vdCB0byByZW1vdmUgaXQgZnJvbSBtX3N0b3JhZ2VBcmVhc0J5Q29ubmVjdGlvbgogICAg
ICAgICAvLyBzbyB0aGF0IHdlIGNvdWxkIHJldXNlIGl0IGxhdGVyIG9uIGZvciB0aGUgc2FtZSBj
b25uZWN0aW9uL29yaWdpbiBjb21iby4gSW4gdGhpcyBjYXNlLCBpdCBpcyBzYWZlIHRvIHJlbW92
ZSB0aGUgcHJldmlvdXMKICAgICAgICAgLy8gc3RvcmFnZU1hcElEIGZyb20gbV9zdG9yYWdlQXJl
YXNCeUNvbm5lY3Rpb24uCi0gICAgICAgIGlmICghYXJlYS0+aGFzTGlzdGVuZXIoY29ubmVjdGlv
biwgaXQtPmtleS5zZWNvbmQpKQorICAgICAgICBpZiAoIWFyZWEtPmhhc0xpc3RlbmVyKGNvbm5l
Y3Rpb24udW5pcXVlSUQoKSwgaXQtPmtleS5zZWNvbmQpKQogICAgICAgICAgICAgbV9zdG9yYWdl
QXJlYXNCeUNvbm5lY3Rpb24ucmVtb3ZlKGl0KTsKLSAgICAgICAgbV9zdG9yYWdlQXJlYXNCeUNv
bm5lY3Rpb24uYWRkKHsgJmNvbm5lY3Rpb24sIHN0b3JhZ2VNYXBJRCB9LCBXVEZNb3ZlKGFyZWEp
KTsKKyAgICAgICAgbV9zdG9yYWdlQXJlYXNCeUNvbm5lY3Rpb24uYWRkKHsgY29ubmVjdGlvbi51
bmlxdWVJRCgpLCBzdG9yYWdlTWFwSUQgfSwgV1RGTW92ZShhcmVhKSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBhdXRvJiBzbG90ID0gbV9zdG9yYWdlQXJlYXNCeUNvbm5lY3Rpb24u
YWRkKHsgJmNvbm5lY3Rpb24sIHN0b3JhZ2VNYXBJRCB9LCBudWxscHRyKS5pdGVyYXRvci0+dmFs
dWU7CisgICAgYXV0byYgc2xvdCA9IG1fc3RvcmFnZUFyZWFzQnlDb25uZWN0aW9uLmFkZCh7IGNv
bm5lY3Rpb24udW5pcXVlSUQoKSwgc3RvcmFnZU1hcElEIH0sIG51bGxwdHIpLml0ZXJhdG9yLT52
YWx1ZTsKIAogICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBhIG1lc3NhZ2UgY2hlY2suCiAg
ICAgQVNTRVJUKCFzbG90KTsKQEAgLTcyMSw3ICs3MjksNyBAQCB2b2lkIFN0b3JhZ2VNYW5hZ2Vy
OjpjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VNYXAoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0
aW9uLAogICAgIFRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZSogdHJhbnNpZW50TG9jYWxT
dG9yYWdlTmFtZXNwYWNlID0gZ2V0T3JDcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3Bh
Y2Uoc3RvcmFnZU5hbWVzcGFjZUlELCBXVEZNb3ZlKHRvcExldmVsT3JpZ2luRGF0YSkpOwogCiAg
ICAgYXV0byBzdG9yYWdlQXJlYSA9IHRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZS0+Z2V0
T3JDcmVhdGVTdG9yYWdlQXJlYShXVEZNb3ZlKG9yaWdpbikpOwotICAgIHN0b3JhZ2VBcmVhLT5h
ZGRMaXN0ZW5lcihjb25uZWN0aW9uLCBzdG9yYWdlTWFwSUQpOworICAgIHN0b3JhZ2VBcmVhLT5h
ZGRMaXN0ZW5lcihjb25uZWN0aW9uLnVuaXF1ZUlEKCksIHN0b3JhZ2VNYXBJRCk7CiAKICAgICBz
bG90ID0gV1RGTW92ZShzdG9yYWdlQXJlYSk7CiB9CkBAIC03MzksMjUgKzc0NywyNSBAQCB2b2lk
IFN0b3JhZ2VNYW5hZ2VyOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU1hcChJUEM6OkNvbm5lY3Rpb24m
IGNvbm5lY3Rpb24sIHVpbnQ2NAogICAgIH0KIAogICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBi
ZSBhIG1lc3NhZ2UgY2hlY2suCi0gICAgQVNTRVJUKG1fc3RvcmFnZUFyZWFzQnlDb25uZWN0aW9u
LmlzVmFsaWRLZXkoeyAmY29ubmVjdGlvbiwgc3RvcmFnZU1hcElEIH0pKTsKKyAgICBBU1NFUlQo
bV9zdG9yYWdlQXJlYXNCeUNvbm5lY3Rpb24uaXNWYWxpZEtleSh7IGNvbm5lY3Rpb24udW5pcXVl
SUQoKSwgc3RvcmFnZU1hcElEIH0pKTsKIAotICAgIGF1dG8mIHNsb3QgPSBtX3N0b3JhZ2VBcmVh
c0J5Q29ubmVjdGlvbi5hZGQoeyAmY29ubmVjdGlvbiwgc3RvcmFnZU1hcElEIH0sIG51bGxwdHIp
Lml0ZXJhdG9yLT52YWx1ZTsKKyAgICBhdXRvJiBzbG90ID0gbV9zdG9yYWdlQXJlYXNCeUNvbm5l
Y3Rpb24uYWRkKHsgY29ubmVjdGlvbi51bmlxdWVJRCgpLCBzdG9yYWdlTWFwSUQgfSwgbnVsbHB0
cikuaXRlcmF0b3ItPnZhbHVlOwogCiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIGEgbWVz
c2FnZSBjaGVjay4KICAgICBBU1NFUlQoIXNsb3QpOwogCiAgICAgLy8gRklYTUU6IFRoaXMgc2hv
dWxkIGJlIGEgbWVzc2FnZSBjaGVjay4KLSAgICBBU1NFUlQoJmNvbm5lY3Rpb24gPT0gc2Vzc2lv
blN0b3JhZ2VOYW1lc3BhY2UtPmFsbG93ZWRDb25uZWN0aW9uKCkpOworICAgIEFTU0VSVChjb25u
ZWN0aW9uLnVuaXF1ZUlEKCkgPT0gc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UtPmFsbG93ZWRDb25u
ZWN0aW9uKCkpOwogCiAgICAgYXV0byBzdG9yYWdlQXJlYSA9IHNlc3Npb25TdG9yYWdlTmFtZXNw
YWNlLT5nZXRPckNyZWF0ZVN0b3JhZ2VBcmVhKFdURk1vdmUoc2VjdXJpdHlPcmlnaW5EYXRhKSk7
Ci0gICAgc3RvcmFnZUFyZWEtPmFkZExpc3RlbmVyKGNvbm5lY3Rpb24sIHN0b3JhZ2VNYXBJRCk7
CisgICAgc3RvcmFnZUFyZWEtPmFkZExpc3RlbmVyKGNvbm5lY3Rpb24udW5pcXVlSUQoKSwgc3Rv
cmFnZU1hcElEKTsKIAogICAgIHNsb3QgPSBXVEZNb3ZlKHN0b3JhZ2VBcmVhKTsKIH0KIAogdm9p
ZCBTdG9yYWdlTWFuYWdlcjo6ZGVzdHJveVN0b3JhZ2VNYXAoSVBDOjpDb25uZWN0aW9uJiBjb25u
ZWN0aW9uLCB1aW50NjRfdCBzdG9yYWdlTWFwSUQpCiB7Ci0gICAgc3RkOjpwYWlyPFJlZlB0cjxJ
UEM6OkNvbm5lY3Rpb24+LCB1aW50NjRfdD4gY29ubmVjdGlvbkFuZFN0b3JhZ2VNYXBJRFBhaXIo
JmNvbm5lY3Rpb24sIHN0b3JhZ2VNYXBJRCk7CisgICAgc3RkOjpwYWlyPElQQzo6Q29ubmVjdGlv
bjo6VW5pcXVlSUQsIHVpbnQ2NF90PiBjb25uZWN0aW9uQW5kU3RvcmFnZU1hcElEUGFpcihjb25u
ZWN0aW9uLnVuaXF1ZUlEKCksIHN0b3JhZ2VNYXBJRCk7CiAKICAgICAvLyBGSVhNRTogVGhpcyBz
aG91bGQgYmUgYSBtZXNzYWdlIGNoZWNrLgogICAgIEFTU0VSVChtX3N0b3JhZ2VBcmVhc0J5Q29u
bmVjdGlvbi5pc1ZhbGlkS2V5KGNvbm5lY3Rpb25BbmRTdG9yYWdlTWFwSURQYWlyKSk7CkBAIC03
NjgsNyArNzc2LDcgQEAgdm9pZCBTdG9yYWdlTWFuYWdlcjo6ZGVzdHJveVN0b3JhZ2VNYXAoSVBD
OjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCB1aW50NjRfdCBzdG8KICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIGl0LT52YWx1ZS0+cmVtb3ZlTGlzdGVuZXIoY29ubmVjdGlvbiwgc3RvcmFn
ZU1hcElEKTsKKyAgICBpdC0+dmFsdWUtPnJlbW92ZUxpc3RlbmVyKGNvbm5lY3Rpb24udW5pcXVl
SUQoKSwgc3RvcmFnZU1hcElEKTsKIAogICAgIC8vIERvbid0IHJlbW92ZSBzZXNzaW9uIHN0b3Jh
Z2UgbWFwcy4gVGhlIHdlYiBwcm9jZXNzIG1heSByZWNvbm5lY3QgYW5kIGV4cGVjdCB0aGUgZGF0
YSB0byBzdGlsbCBiZSBhcm91bmQuCiAgICAgaWYgKGl0LT52YWx1ZS0+aXNTZXNzaW9uU3RvcmFn
ZSgpKQpAQCAtNzk4LDcgKzgwNiw3IEBAIHZvaWQgU3RvcmFnZU1hbmFnZXI6OnNldEl0ZW0oSVBD
OjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCB1aW50NjRfdCBzdG9yYWdlTWFwSUQsCiAgICAgfQog
CiAgICAgYm9vbCBxdW90YUVycm9yOwotICAgIHN0b3JhZ2VBcmVhLT5zZXRJdGVtKCZjb25uZWN0
aW9uLCBzb3VyY2VTdG9yYWdlQXJlYUlELCBrZXksIHZhbHVlLCB1cmxTdHJpbmcsIHF1b3RhRXJy
b3IpOworICAgIHN0b3JhZ2VBcmVhLT5zZXRJdGVtKGNvbm5lY3Rpb24udW5pcXVlSUQoKSwgc291
cmNlU3RvcmFnZUFyZWFJRCwga2V5LCB2YWx1ZSwgdXJsU3RyaW5nLCBxdW90YUVycm9yKTsKICAg
ICBjb25uZWN0aW9uLnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VBcmVhTWFwOjpEaWRTZXRJdGVtKHN0
b3JhZ2VNYXBTZWVkLCBrZXksIHF1b3RhRXJyb3IpLCBzdG9yYWdlTWFwSUQpOwogfQogCkBAIC04
MTAsNyArODE4LDcgQEAgdm9pZCBTdG9yYWdlTWFuYWdlcjo6cmVtb3ZlSXRlbShJUEM6OkNvbm5l
Y3Rpb24mIGNvbm5lY3Rpb24sIHVpbnQ2NF90IHN0b3JhZ2VNYXAKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIHN0b3JhZ2VBcmVhLT5yZW1vdmVJdGVtKCZjb25uZWN0aW9uLCBzb3VyY2VT
dG9yYWdlQXJlYUlELCBrZXksIHVybFN0cmluZyk7CisgICAgc3RvcmFnZUFyZWEtPnJlbW92ZUl0
ZW0oY29ubmVjdGlvbi51bmlxdWVJRCgpLCBzb3VyY2VTdG9yYWdlQXJlYUlELCBrZXksIHVybFN0
cmluZyk7CiAgICAgY29ubmVjdGlvbi5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdlQXJlYU1hcDo6RGlk
UmVtb3ZlSXRlbShzdG9yYWdlTWFwU2VlZCwga2V5KSwgc3RvcmFnZU1hcElEKTsKIH0KIApAQCAt
ODIyLDcgKzgzMCw3IEBAIHZvaWQgU3RvcmFnZU1hbmFnZXI6OmNsZWFyKElQQzo6Q29ubmVjdGlv
biYgY29ubmVjdGlvbiwgdWludDY0X3Qgc3RvcmFnZU1hcElELCB1CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBzdG9yYWdlQXJlYS0+Y2xlYXIoJmNvbm5lY3Rpb24sIHNvdXJjZVN0b3Jh
Z2VBcmVhSUQsIHVybFN0cmluZyk7CisgICAgc3RvcmFnZUFyZWEtPmNsZWFyKGNvbm5lY3Rpb24u
dW5pcXVlSUQoKSwgc291cmNlU3RvcmFnZUFyZWFJRCwgdXJsU3RyaW5nKTsKICAgICBjb25uZWN0
aW9uLnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VBcmVhTWFwOjpEaWRDbGVhcihzdG9yYWdlTWFwU2Vl
ZCksIHN0b3JhZ2VNYXBJRCk7CiB9CiAKQEAgLTgzMCw5ICs4MzgsOSBAQCB2b2lkIFN0b3JhZ2VN
YW5hZ2VyOjphcHBsaWNhdGlvbldpbGxUZXJtaW5hdGUoKQogewogICAgIEJpbmFyeVNlbWFwaG9y
ZSBzZW1hcGhvcmU7CiAgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsICZzZW1hcGhvcmVdIHsK
LSAgICAgICAgVmVjdG9yPHN0ZDo6cGFpcjxSZWZQdHI8SVBDOjpDb25uZWN0aW9uPiwgdWludDY0
X3Q+PiBjb25uZWN0aW9uQW5kU3RvcmFnZU1hcElEUGFpcnNUb1JlbW92ZTsKKyAgICAgICAgVmVj
dG9yPHN0ZDo6cGFpcjxJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlELCB1aW50NjRfdD4+IGNvbm5l
Y3Rpb25BbmRTdG9yYWdlTWFwSURQYWlyc1RvUmVtb3ZlOwogICAgICAgICBmb3IgKGF1dG8mIGNv
bm5lY3Rpb25TdG9yYWdlQXJlYVBhaXIgOiBtX3N0b3JhZ2VBcmVhc0J5Q29ubmVjdGlvbikgewot
ICAgICAgICAgICAgY29ubmVjdGlvblN0b3JhZ2VBcmVhUGFpci52YWx1ZS0+cmVtb3ZlTGlzdGVu
ZXIoKmNvbm5lY3Rpb25TdG9yYWdlQXJlYVBhaXIua2V5LmZpcnN0LCBjb25uZWN0aW9uU3RvcmFn
ZUFyZWFQYWlyLmtleS5zZWNvbmQpOworICAgICAgICAgICAgY29ubmVjdGlvblN0b3JhZ2VBcmVh
UGFpci52YWx1ZS0+cmVtb3ZlTGlzdGVuZXIoY29ubmVjdGlvblN0b3JhZ2VBcmVhUGFpci5rZXku
Zmlyc3QsIGNvbm5lY3Rpb25TdG9yYWdlQXJlYVBhaXIua2V5LnNlY29uZCk7CiAgICAgICAgICAg
ICBjb25uZWN0aW9uQW5kU3RvcmFnZU1hcElEUGFpcnNUb1JlbW92ZS5hcHBlbmQoY29ubmVjdGlv
blN0b3JhZ2VBcmVhUGFpci5rZXkpOwogICAgICAgICB9CiAKQEAgLTg0Niw3ICs4NTQsNyBAQCB2
b2lkIFN0b3JhZ2VNYW5hZ2VyOjphcHBsaWNhdGlvbldpbGxUZXJtaW5hdGUoKQogCiBTdG9yYWdl
TWFuYWdlcjo6U3RvcmFnZUFyZWEqIFN0b3JhZ2VNYW5hZ2VyOjpmaW5kU3RvcmFnZUFyZWEoSVBD
OjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCB1aW50NjRfdCBzdG9yYWdlTWFwSUQpIGNvbnN0CiB7
Ci0gICAgc3RkOjpwYWlyPElQQzo6Q29ubmVjdGlvbiosIHVpbnQ2NF90PiBjb25uZWN0aW9uQW5k
U3RvcmFnZU1hcElEUGFpcigmY29ubmVjdGlvbiwgc3RvcmFnZU1hcElEKTsKKyAgICBzdGQ6OnBh
aXI8SVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCwgdWludDY0X3Q+IGNvbm5lY3Rpb25BbmRTdG9y
YWdlTWFwSURQYWlyKGNvbm5lY3Rpb24udW5pcXVlSUQoKSwgc3RvcmFnZU1hcElEKTsKIAogICAg
IGlmICghbV9zdG9yYWdlQXJlYXNCeUNvbm5lY3Rpb24uaXNWYWxpZEtleShjb25uZWN0aW9uQW5k
U3RvcmFnZU1hcElEUGFpcikpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5oCmluZGV4IGI2
YmEwYWE1NjQ4YmI0Y2ZiNDRjNmFmMjNiMjNiYmNmNTQwYzdiMDMuLjY5NTg1YzgzZjY2NDgzMTZl
YmQ5ZDQ4MWI4YmUyYmZiNWFiMmJlNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmgKQEAgLTEwNSw3ICsxMDUsNyBAQCBwcml2
YXRlOgogICAgIGNsYXNzIFNlc3Npb25TdG9yYWdlTmFtZXNwYWNlOwogICAgIEhhc2hNYXA8dWlu
dDY0X3QsIFJlZlB0cjxTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZT4+IG1fc2Vzc2lvblN0b3JhZ2VO
YW1lc3BhY2VzOwogCi0gICAgSGFzaE1hcDxzdGQ6OnBhaXI8UmVmUHRyPElQQzo6Q29ubmVjdGlv
bj4sIHVpbnQ2NF90PiwgUmVmUHRyPFN0b3JhZ2VBcmVhPj4gbV9zdG9yYWdlQXJlYXNCeUNvbm5l
Y3Rpb247CisgICAgSGFzaE1hcDxzdGQ6OnBhaXI8SVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCwg
dWludDY0X3Q+LCBSZWZQdHI8U3RvcmFnZUFyZWE+PiBtX3N0b3JhZ2VBcmVhc0J5Q29ubmVjdGlv
bjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAo=
</data>
<flag name="review"
          id="364552"
          type_id="1"
          status="+"
          setter="achristensen"
    />
          </attachment>
      

    </bug>

</bugzilla>