<?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>44726</bug_id>
          
          <creation_ts>2010-08-26 15:35:12 -0700</creation_ts>
          <short_desc>WebFrameProxies aren&apos;t destroyed until a page is destroyed</short_desc>
          <delta_ts>2010-08-26 16:04:04 -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>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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="Alexey Proskuryakov">ap</reporter>
          <assigned_to name="Alexey Proskuryakov">ap</assigned_to>
          <cc>abarth</cc>
    
    <cc>aroben</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>270162</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-08-26 15:35:12 -0700</bug_when>
    <thetext>There is no code that would destroy WebFrameProxies earlier than the page they were created in goes away.

&lt;rdar://problem/8359858&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270167</commentid>
    <comment_count>1</comment_count>
      <attachid>65633</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-08-26 15:41:39 -0700</bug_when>
    <thetext>Created attachment 65633
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270175</commentid>
    <comment_count>2</comment_count>
      <attachid>65633</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-08-26 15:52:51 -0700</bug_when>
    <thetext>Comment on attachment 65633
proposed patch

Nice. I was kind of assuming we were going to use the detachFromParent FrameLoaderClient functions, but I like this approach. Are we going to need/want a way to signal that a Frame has changed Pages in the WebKit2 API?

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270186</commentid>
    <comment_count>3</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-08-26 16:02:00 -0700</bug_when>
    <thetext>&gt; Are we going to need/want a way to signal that a Frame has changed Pages in the WebKit2 API?

I don&apos;t know, but there is a special FrameLoaderClient call for changing documents, which we need to implement anyway - didTransferChildFrameToNewDocument().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270188</commentid>
    <comment_count>4</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-08-26 16:04:04 -0700</bug_when>
    <thetext>Committed &lt;http://trac.webkit.org/changeset/66146&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>65633</attachid>
            <date>2010-08-26 15:41:39 -0700</date>
            <delta_ts>2010-08-26 15:52:51 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>WebFrameProxy.txt</filename>
            <type>text/plain</type>
            <size>25090</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NjE0MikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMTAtMDgtMjYgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBs
ZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ0NzI2CisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS83OTM1NTE4PiBXZWJGcmFtZVByb3hpZXMgYXJlbid0IGRlc3Ryb3llZCB1
bnRpbCBhIHBhZ2UgaXMgZGVzdHJveWVkCisKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmNsb3NlQW5kUmVtb3ZlQ2hpbGQp
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmRldGFjaEZyb21QYXJlbnQpOgorICAg
ICAgICBBZGRlZCBhIGZldyBGSVhNRSBjb21tZW50cy4gVGhlIGxvZ2ljIHdlIGhhdmUgdG8gdHJh
Y2sgZnJhbWVzIGlzIGV4dHJlbWVseSBjb252b2x1dGVkLgorCiAyMDEwLTA4LTI2ICBTaW1vbiBG
cmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERh
dmUgSHlhdHQuCkluZGV4OiBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCShyZXZpc2lvbiA2NjAyMikKKysr
IFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUwMCw2
ICsyNTAwLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6Y2xvc2VBbmRSZW1vdmVDaGlsZChGcgogICAg
IGNoaWxkLT5zZXRWaWV3KDApOwogICAgIGlmIChjaGlsZC0+b3duZXJFbGVtZW50KCkgJiYgY2hp
bGQtPnBhZ2UoKSkKICAgICAgICAgY2hpbGQtPnBhZ2UoKS0+ZGVjcmVtZW50RnJhbWVDb3VudCgp
OworICAgIC8vIEZJWE1FOiBUaGUgcGFnZSBpc24ndCBiZWluZyBkZXN0cm95ZWQsIHNvIGl0J3Mg
bm90IHJpZ2h0IHRvIGNhbGwgYSBmdW5jdGlvbiBuYW1lZCBwYWdlRGVzdHJveWVkKCkuCiAgICAg
Y2hpbGQtPnBhZ2VEZXN0cm95ZWQoKTsKIAogICAgIG1fZnJhbWUtPnRyZWUoKS0+cmVtb3ZlQ2hp
bGQoY2hpbGQpOwpAQCAtMjU4OCw2ICsyNTg5LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6ZGV0YWNo
RnJvbVBhcmVudCgpCiAgICAgICAgIHBhcmVudC0+bG9hZGVyKCktPnNjaGVkdWxlQ2hlY2tDb21w
bGV0ZWQoKTsKICAgICB9IGVsc2UgewogICAgICAgICBtX2ZyYW1lLT5zZXRWaWV3KDApOworICAg
ICAgICAvLyBGSVhNRTogVGhlIHBhZ2UgaXNuJ3QgYmVpbmcgZGVzdHJveWVkLCBzbyBpdCdzIG5v
dCByaWdodCB0byBjYWxsIGEgZnVuY3Rpb24gbmFtZWQgcGFnZURlc3Ryb3llZCgpLgogICAgICAg
ICBtX2ZyYW1lLT5wYWdlRGVzdHJveWVkKCk7CiAgICAgfQogfQpJbmRleDogV2ViS2l0Mi9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDY2MTQyKQor
KysgV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0NiBAQAorMjAx
MC0wOC0yNiAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDQ3MjYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzc5MzU1
MTg+IFdlYkZyYW1lUHJveGllcyBhcmVuJ3QgZGVzdHJveWVkIHVudGlsIGEgcGFnZSBpcyBkZXN0
cm95ZWQKKworICAgICAgICBTaW5jZSBmcmFtZXMgY2FuIGJlIG1vdmVkIGFjcm9zcyBkb2N1bWVu
dHMsIHRoZXkgYXJlIG5vdCByZWFsbHkgYSBQQWdlIGxldmVsIGNvbmNlcHQuCisgICAgICAgIE1v
dmVkIGZyYW1lIHRyYWNraW5nIHRvIFdlYlByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LgorCisgICAg
ICAgICogU2hhcmVkL0NvcmVJUENTdXBwb3J0L1dlYlByb2Nlc3NQcm94eU1lc3NhZ2VLaW5kcy5o
OgorICAgICAgICAoV2ViUHJvY2Vzc1Byb3h5TWVzc2FnZTo6KToKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjbG9z
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0U3RhdGlzdGljcyk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVTeW5jTWVzc2FnZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkQ3JlYXRlTWFpbkZyYW1lKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpkaWRDcmVhdGVTdWJGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6cHJvY2Vzc0RpZEV4aXQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpkaWRSZWNlaXZlTWVzc2FnZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpkaWRDbG9zZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3NQcm94eTo6d2ViRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
UHJveHk6OmZyYW1lQ3JlYXRlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6
ZnJhbWVEZXN0cm95ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmRpc2Nv
bm5lY3RGcmFtZXNGcm9tUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6
ZnJhbWVDb3VudEluUGFnZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYkZyYW1lOjpXZWJGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lOjpp
bnZhbGlkYXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OndlYkZyYW1lKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6YWRkV2ViRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzOjpyZW1vdmVXZWJGcmFtZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmg6CisKIDIwMTAtMDgtMjYgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KSW5kZXg6IFdlYktpdDIvU2hhcmVkL0NvcmVJ
UENTdXBwb3J0L1dlYlByb2Nlc3NQcm94eU1lc3NhZ2VLaW5kcy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdDIvU2hhcmVkL0NvcmVJUENTdXBwb3J0L1dlYlByb2Nlc3NQcm94eU1lc3NhZ2VLaW5kcy5o
CShyZXZpc2lvbiA2NjAyMikKKysrIFdlYktpdDIvU2hhcmVkL0NvcmVJUENTdXBwb3J0L1dlYlBy
b2Nlc3NQcm94eU1lc3NhZ2VLaW5kcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSw3IEBA
IGVudW0gS2luZCB7CiAgICAgRGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0LAogICAgIERpZFBlcmZv
cm1TZXJ2ZXJSZWRpcmVjdCwKICAgICBEaWRVcGRhdGVIaXN0b3J5VGl0bGUsCisgICAgRGlkRGVz
dHJveUZyYW1lLAogICAgIEdldFBsdWdpbkhvc3RDb25uZWN0aW9uLAogICAgIEdldFBsdWdpbnMK
IH07CkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDY2MDIyKQor
KysgV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTY3LDExICsxNjcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y2xvc2UoKQogCiAgICAgbV9jbG9z
ZWQgPSB0cnVlOwogCi0gICAgVmVjdG9yPFJlZlB0cjxXZWJGcmFtZVByb3h5PiA+IGZyYW1lczsK
LSAgICBjb3B5VmFsdWVzVG9WZWN0b3IobV9mcmFtZU1hcCwgZnJhbWVzKTsKLSAgICBmb3IgKHNp
emVfdCBpID0gMCwgc2l6ZSA9IGZyYW1lcy5zaXplKCk7IGkgPCBzaXplOyArK2kpCi0gICAgICAg
IGZyYW1lc1tpXS0+ZGlzY29ubmVjdCgpOwotICAgIG1fZnJhbWVNYXAuY2xlYXIoKTsKKyAgICBw
cm9jZXNzKCktPmRpc2Nvbm5lY3RGcmFtZXNGcm9tUGFnZSh0aGlzKTsKICAgICBtX21haW5GcmFt
ZSA9IDA7CiAKICAgICBtX3BhZ2VUaXRsZSA9IFN0cmluZygpOwpAQCAtNDAzLDE1ICszOTksMTAg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OnByZWZlcmVuY2VzRGlkQ2hhbmdlKAogCiB2b2lkIFdlYlBh
Z2VQcm94eTo6Z2V0U3RhdGlzdGljcyhXS0NvbnRleHRTdGF0aXN0aWNzKiBzdGF0aXN0aWNzKQog
ewotICAgIHN0YXRpc3RpY3MtPm51bWJlck9mV0tGcmFtZXMgKz0gbV9mcmFtZU1hcC5zaXplKCk7
CisgICAgc3RhdGlzdGljcy0+bnVtYmVyT2ZXS0ZyYW1lcyArPSBwcm9jZXNzKCktPmZyYW1lQ291
bnRJblBhZ2UodGhpcyk7CiB9CiAKIAotV2ViRnJhbWVQcm94eSogV2ViUGFnZVByb3h5Ojp3ZWJG
cmFtZSh1aW50NjRfdCBmcmFtZUlEKSBjb25zdAotewotICAgIHJldHVybiBtX2ZyYW1lTWFwLmdl
dChmcmFtZUlEKS5nZXQoKTsKLX0KLQogdm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVNZXNz
YWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIENvcmVJUEM6Ok1lc3NhZ2VJRCBt
ZXNzYWdlSUQsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciogYXJndW1lbnRzKQogewogICAgIGlm
IChtZXNzYWdlSUQuaXM8Q29yZUlQQzo6TWVzc2FnZUNsYXNzRHJhd2luZ0FyZWFQcm94eT4oKSkg
ewpAQCAtNDM5LDQyICs0MzAsNDIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVNZXNz
YWdlKENvcgogICAgICAgICAgICAgU3RyaW5nIHVybDsKICAgICAgICAgICAgIGlmICghYXJndW1l
bnRzLT5kZWNvZGUoQ29yZUlQQzo6T3V0KGZyYW1lSUQsIHVybCkpKQogICAgICAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgICAgIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUod2Vi
RnJhbWUoZnJhbWVJRCksIHVybCk7CisgICAgICAgICAgICBkaWRTdGFydFByb3Zpc2lvbmFsTG9h
ZEZvckZyYW1lKHByb2Nlc3MoKS0+d2ViRnJhbWUoZnJhbWVJRCksIHVybCk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIFdlYlBhZ2VQcm94eU1lc3NhZ2U6OkRp
ZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lOiB7CiAgICAg
ICAgICAgICB1aW50NjRfdCBmcmFtZUlEOwogICAgICAgICAgICAgaWYgKCFhcmd1bWVudHMtPmRl
Y29kZShmcmFtZUlEKSkKICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBkaWRS
ZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZSh3ZWJGcmFtZShm
cmFtZUlEKSk7CisgICAgICAgICAgICBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNp
b25hbExvYWRGb3JGcmFtZShwcm9jZXNzKCktPndlYkZyYW1lKGZyYW1lSUQpKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgV2ViUGFnZVByb3h5TWVzc2FnZTo6
RGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lOiB7CiAgICAgICAgICAgICB1aW50NjRfdCBm
cmFtZUlEOwogICAgICAgICAgICAgaWYgKCFhcmd1bWVudHMtPmRlY29kZShmcmFtZUlEKSkKICAg
ICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBkaWRGYWlsUHJvdmlzaW9uYWxMb2Fk
Rm9yRnJhbWUod2ViRnJhbWUoZnJhbWVJRCkpOworICAgICAgICAgICAgZGlkRmFpbFByb3Zpc2lv
bmFsTG9hZEZvckZyYW1lKHByb2Nlc3MoKS0+d2ViRnJhbWUoZnJhbWVJRCkpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBXZWJQYWdlUHJveHlNZXNzYWdlOjpE
aWRDb21taXRMb2FkRm9yRnJhbWU6IHsKICAgICAgICAgICAgIHVpbnQ2NF90IGZyYW1lSUQ7CiAg
ICAgICAgICAgICBpZiAoIWFyZ3VtZW50cy0+ZGVjb2RlKGZyYW1lSUQpKQogICAgICAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgICAgIGRpZENvbW1pdExvYWRGb3JGcmFtZSh3ZWJGcmFtZShm
cmFtZUlEKSk7CisgICAgICAgICAgICBkaWRDb21taXRMb2FkRm9yRnJhbWUocHJvY2VzcygpLT53
ZWJGcmFtZShmcmFtZUlEKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAg
ICBjYXNlIFdlYlBhZ2VQcm94eU1lc3NhZ2U6OkRpZEZpbmlzaExvYWRGb3JGcmFtZTogewogICAg
ICAgICAgICAgdWludDY0X3QgZnJhbWVJRDsKICAgICAgICAgICAgIGlmICghYXJndW1lbnRzLT5k
ZWNvZGUoZnJhbWVJRCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgZGlk
RmluaXNoTG9hZEZvckZyYW1lKHdlYkZyYW1lKGZyYW1lSUQpKTsKKyAgICAgICAgICAgIGRpZEZp
bmlzaExvYWRGb3JGcmFtZShwcm9jZXNzKCktPndlYkZyYW1lKGZyYW1lSUQpKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgV2ViUGFnZVByb3h5TWVzc2FnZTo6
RGlkRmFpbExvYWRGb3JGcmFtZTogewogICAgICAgICAgICAgdWludDY0X3QgZnJhbWVJRDsKICAg
ICAgICAgICAgIGlmICghYXJndW1lbnRzLT5kZWNvZGUoZnJhbWVJRCkpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICAgICAgZGlkRmFpbExvYWRGb3JGcmFtZSh3ZWJGcmFtZShmcmFt
ZUlEKSk7CisgICAgICAgICAgICBkaWRGYWlsTG9hZEZvckZyYW1lKHByb2Nlc3MoKS0+d2ViRnJh
bWUoZnJhbWVJRCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2Fz
ZSBXZWJQYWdlUHJveHlNZXNzYWdlOjpEaWRSZWNlaXZlVGl0bGVGb3JGcmFtZTogewpAQCAtNDgy
LDIxICs0NzMsMjEgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVNZXNzYWdlKENvcgog
ICAgICAgICAgICAgU3RyaW5nIHRpdGxlOwogICAgICAgICAgICAgaWYgKCFhcmd1bWVudHMtPmRl
Y29kZShDb3JlSVBDOjpPdXQoZnJhbWVJRCwgdGl0bGUpKSkKICAgICAgICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgICAgICBkaWRSZWNlaXZlVGl0bGVGb3JGcmFtZSh3ZWJGcmFtZShmcmFtZUlE
KSwgdGl0bGUpOworICAgICAgICAgICAgZGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWUocHJvY2Vzcygp
LT53ZWJGcmFtZShmcmFtZUlEKSwgdGl0bGUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KICAgICAgICAgY2FzZSBXZWJQYWdlUHJveHlNZXNzYWdlOjpEaWRGaXJzdExheW91dEZvckZy
YW1lOiB7CiAgICAgICAgICAgICB1aW50NjRfdCBmcmFtZUlEOwogICAgICAgICAgICAgaWYgKCFh
cmd1bWVudHMtPmRlY29kZShmcmFtZUlEKSkKICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgICAgICBkaWRGaXJzdExheW91dEZvckZyYW1lKHdlYkZyYW1lKGZyYW1lSUQpKTsKKyAgICAg
ICAgICAgIGRpZEZpcnN0TGF5b3V0Rm9yRnJhbWUocHJvY2VzcygpLT53ZWJGcmFtZShmcmFtZUlE
KSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIFdlYlBhZ2VQ
cm94eU1lc3NhZ2U6OkRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckZyYW1lOiB7CiAg
ICAgICAgICAgICB1aW50NjRfdCBmcmFtZUlEOwogICAgICAgICAgICAgaWYgKCFhcmd1bWVudHMt
PmRlY29kZShmcmFtZUlEKSkKICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBk
aWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JGcmFtZSh3ZWJGcmFtZShmcmFtZUlEKSk7
CisgICAgICAgICAgICBkaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JGcmFtZShwcm9j
ZXNzKCktPndlYkZyYW1lKGZyYW1lSUQpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAgICAgICAgIGNhc2UgV2ViUGFnZVByb3h5TWVzc2FnZTo6RGlkU3RhcnRQcm9ncmVzczoKQEAg
LTUzNSw3ICs1MjYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZU1lc3NhZ2UoQ29y
CiAgICAgICAgICAgICB1aW50NjRfdCBsaXN0ZW5lcklEOwogICAgICAgICAgICAgaWYgKCFhcmd1
bWVudHMtPmRlY29kZShDb3JlSVBDOjpPdXQoZnJhbWVJRCwgbmF2aWdhdGlvblR5cGUsIG1vZGlm
aWVycywgdXJsLCBsaXN0ZW5lcklEKSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICAgICAgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbih3ZWJGcmFtZShmcmFtZUlEKSwg
c3RhdGljX2Nhc3Q8TmF2aWdhdGlvblR5cGU+KG5hdmlnYXRpb25UeXBlKSwgc3RhdGljX2Nhc3Q8
V2ViRXZlbnQ6Ok1vZGlmaWVycz4obW9kaWZpZXJzKSwgdXJsLCBsaXN0ZW5lcklEKTsKKyAgICAg
ICAgICAgIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24ocHJvY2VzcygpLT53ZWJGcmFt
ZShmcmFtZUlEKSwgc3RhdGljX2Nhc3Q8TmF2aWdhdGlvblR5cGU+KG5hdmlnYXRpb25UeXBlKSwg
c3RhdGljX2Nhc3Q8V2ViRXZlbnQ6Ok1vZGlmaWVycz4obW9kaWZpZXJzKSwgdXJsLCBsaXN0ZW5l
cklEKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgV2ViUGFn
ZVByb3h5TWVzc2FnZTo6RGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uOiB7CkBAIC01NDYs
NyArNTM3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVNZXNzYWdlKENvcgogICAg
ICAgICAgICAgdWludDY0X3QgbGlzdGVuZXJJRDsKICAgICAgICAgICAgIGlmICghYXJndW1lbnRz
LT5kZWNvZGUoQ29yZUlQQzo6T3V0KGZyYW1lSUQsIG5hdmlnYXRpb25UeXBlLCBtb2RpZmllcnMs
IHVybCwgbGlzdGVuZXJJRCkpKQogICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAg
IGRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbih3ZWJGcmFtZShmcmFtZUlEKSwgc3RhdGlj
X2Nhc3Q8TmF2aWdhdGlvblR5cGU+KG5hdmlnYXRpb25UeXBlKSwgc3RhdGljX2Nhc3Q8V2ViRXZl
bnQ6Ok1vZGlmaWVycz4obW9kaWZpZXJzKSwgdXJsLCBsaXN0ZW5lcklEKTsKKyAgICAgICAgICAg
IGRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihwcm9jZXNzKCktPndlYkZyYW1lKGZyYW1l
SUQpLCBzdGF0aWNfY2FzdDxOYXZpZ2F0aW9uVHlwZT4obmF2aWdhdGlvblR5cGUpLCBzdGF0aWNf
Y2FzdDxXZWJFdmVudDo6TW9kaWZpZXJzPihtb2RpZmllcnMpLCB1cmwsIGxpc3RlbmVySUQpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBXZWJQYWdlUHJveHlN
ZXNzYWdlOjpEZWNpZGVQb2xpY3lGb3JNSU1FVHlwZTogewpAQCAtNTU2LDcgKzU0Nyw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlTWVzc2FnZShDb3IKICAgICAgICAgICAgIHVpbnQ2
NF90IGxpc3RlbmVySUQ7CiAgICAgICAgICAgICBpZiAoIWFyZ3VtZW50cy0+ZGVjb2RlKENvcmVJ
UEM6Ok91dChmcmFtZUlELCBNSU1FVHlwZSwgdXJsLCBsaXN0ZW5lcklEKSkpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICAgICAgZGVjaWRlUG9saWN5Rm9yTUlNRVR5cGUod2ViRnJh
bWUoZnJhbWVJRCksIE1JTUVUeXBlLCB1cmwsIGxpc3RlbmVySUQpOworICAgICAgICAgICAgZGVj
aWRlUG9saWN5Rm9yTUlNRVR5cGUocHJvY2VzcygpLT53ZWJGcmFtZShmcmFtZUlEKSwgTUlNRVR5
cGUsIHVybCwgbGlzdGVuZXJJRCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAg
ICAgICBjYXNlIFdlYlBhZ2VQcm94eU1lc3NhZ2U6OldpbGxTdWJtaXRGb3JtOiB7CkBAIC01NjYs
NyArNTU3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVNZXNzYWdlKENvcgogICAg
ICAgICAgICAgdWludDY0X3QgbGlzdGVuZXJJRDsKICAgICAgICAgICAgIGlmICghYXJndW1lbnRz
LT5kZWNvZGUoQ29yZUlQQzo6T3V0KGZyYW1lSUQsIHNvdXJjZUZyYW1lSUQsIHRleHRGaWVsZFZh
bHVlcywgbGlzdGVuZXJJRCkpKQogICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAg
IHdpbGxTdWJtaXRGb3JtKHdlYkZyYW1lKGZyYW1lSUQpLCB3ZWJGcmFtZShzb3VyY2VGcmFtZUlE
KSwgdGV4dEZpZWxkVmFsdWVzLCBsaXN0ZW5lcklEKTsKKyAgICAgICAgICAgIHdpbGxTdWJtaXRG
b3JtKHByb2Nlc3MoKS0+d2ViRnJhbWUoZnJhbWVJRCksIHByb2Nlc3MoKS0+d2ViRnJhbWUoc291
cmNlRnJhbWVJRCksIHRleHRGaWVsZFZhbHVlcywgbGlzdGVuZXJJRCk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogICAgICAgICAKQEAgLTYyOSw3ICs2MjAsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6ZGlkUmVjZWl2ZU1lc3NhZ2UoQ29yCiAgICAgICAgICAgICB1aW50NjRfdCBmcmFt
ZUlEOwogICAgICAgICAgICAgaWYgKCFhcmd1bWVudHMtPmRlY29kZShDb3JlSVBDOjpPdXQoZnJh
bWVJRCwgc2l6ZSkpKQogICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIGNvbnRl
bnRzU2l6ZUNoYW5nZWQod2ViRnJhbWUoZnJhbWVJRCksIHNpemUpOworICAgICAgICAgICAgY29u
dGVudHNTaXplQ2hhbmdlZChwcm9jZXNzKCktPndlYkZyYW1lKGZyYW1lSUQpLCBzaXplKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGRlZmF1bHQ6CkBAIC02NjMsNyAr
NjU0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVTeW5jTWVzc2FnZQogICAgICAg
ICAgICAgU3RyaW5nIG1lc3NhZ2U7CiAgICAgICAgICAgICBpZiAoIWFyZ3VtZW50cy0+ZGVjb2Rl
KENvcmVJUEM6Ok91dChmcmFtZUlELCBtZXNzYWdlKSkpCiAgICAgICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICAgICAgcnVuSmF2YVNjcmlwdEFsZXJ0KHdlYkZyYW1lKGZyYW1lSUQpLCBtZXNz
YWdlKTsKKyAgICAgICAgICAgIHJ1bkphdmFTY3JpcHRBbGVydChwcm9jZXNzKCktPndlYkZyYW1l
KGZyYW1lSUQpLCBtZXNzYWdlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAg
ICAgIGNhc2UgV2ViUGFnZVByb3h5TWVzc2FnZTo6UnVuSmF2YVNjcmlwdENvbmZpcm06IHsKQEAg
LTY3Myw3ICs2NjQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdl
CiAgICAgICAgICAgICBpZiAoIWFyZ3VtZW50cy0+ZGVjb2RlKENvcmVJUEM6Ok91dChmcmFtZUlE
LCBtZXNzYWdlKSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgICAgICBib29s
IHJlc3VsdCA9IHJ1bkphdmFTY3JpcHRDb25maXJtKHdlYkZyYW1lKGZyYW1lSUQpLCBtZXNzYWdl
KTsKKyAgICAgICAgICAgIGJvb2wgcmVzdWx0ID0gcnVuSmF2YVNjcmlwdENvbmZpcm0ocHJvY2Vz
cygpLT53ZWJGcmFtZShmcmFtZUlEKSwgbWVzc2FnZSk7CiAgICAgICAgICAgICByZXBseS0+ZW5j
b2RlKENvcmVJUEM6OkluKHJlc3VsdCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
QEAgLTY4NSw3ICs2NzYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZVN5bmNNZXNz
YWdlCiAgICAgICAgICAgICBpZiAoIWFyZ3VtZW50cy0+ZGVjb2RlKENvcmVJUEM6Ok91dChmcmFt
ZUlELCBtZXNzYWdlLCBkZWZhdWx0VmFsdWUpKSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAK
LSAgICAgICAgICAgIFN0cmluZyByZXN1bHQgPSBydW5KYXZhU2NyaXB0UHJvbXB0KHdlYkZyYW1l
KGZyYW1lSUQpLCBtZXNzYWdlLCBkZWZhdWx0VmFsdWUpOworICAgICAgICAgICAgU3RyaW5nIHJl
c3VsdCA9IHJ1bkphdmFTY3JpcHRQcm9tcHQocHJvY2VzcygpLT53ZWJGcmFtZShmcmFtZUlEKSwg
bWVzc2FnZSwgZGVmYXVsdFZhbHVlKTsKICAgICAgICAgICAgIHJlcGx5LT5lbmNvZGUoQ29yZUlQ
Qzo6SW4ocmVzdWx0KSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtNzQ5LDE5
ICs3NDAsMTUgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVTeW5jTWVzc2FnZQogdm9p
ZCBXZWJQYWdlUHJveHk6OmRpZENyZWF0ZU1haW5GcmFtZSh1aW50NjRfdCBmcmFtZUlEKQogewog
ICAgIEFTU0VSVCghbV9tYWluRnJhbWUpOwotICAgIEFTU0VSVChtX2ZyYW1lTWFwLmlzRW1wdHko
KSk7CiAKICAgICBtX21haW5GcmFtZSA9IFdlYkZyYW1lUHJveHk6OmNyZWF0ZSh0aGlzLCBmcmFt
ZUlEKTsKLSAgICBtX2ZyYW1lTWFwLnNldChmcmFtZUlELCBtX21haW5GcmFtZSk7CisgICAgcHJv
Y2VzcygpLT5mcmFtZUNyZWF0ZWQoZnJhbWVJRCwgbV9tYWluRnJhbWUuZ2V0KCkpOwogfQogCiB2
b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ3JlYXRlU3ViRnJhbWUodWludDY0X3QgZnJhbWVJRCkKIHsK
ICAgICBBU1NFUlQobV9tYWluRnJhbWUpOwotICAgIEFTU0VSVCghbV9mcmFtZU1hcC5pc0VtcHR5
KCkpOwotICAgIEFTU0VSVCghbV9mcmFtZU1hcC5jb250YWlucyhmcmFtZUlEKSk7Ci0KLSAgICBt
X2ZyYW1lTWFwLnNldChmcmFtZUlELCBXZWJGcmFtZVByb3h5OjpjcmVhdGUodGhpcywgZnJhbWVJ
RCkpOworICAgIHByb2Nlc3MoKS0+ZnJhbWVDcmVhdGVkKGZyYW1lSUQsIFdlYkZyYW1lUHJveHk6
OmNyZWF0ZSh0aGlzLCBmcmFtZUlEKS5nZXQoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpk
aWRTdGFydFByb2dyZXNzKCkKQEAgLTEwMDgsMTEgKzk5NSw2IEBAIHZvaWQgV2ViUGFnZVByb3h5
Ojpwcm9jZXNzRGlkRXhpdCgpCiAgICAgaWYgKG1fbWFpbkZyYW1lKQogICAgICAgICBtX3VybEF0
UHJvY2Vzc0V4aXQgPSBtX21haW5GcmFtZS0+dXJsKCk7CiAKLSAgICBWZWN0b3I8UmVmUHRyPFdl
YkZyYW1lUHJveHk+ID4gZnJhbWVzOwotICAgIGNvcHlWYWx1ZXNUb1ZlY3RvcihtX2ZyYW1lTWFw
LCBmcmFtZXMpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwLCBzaXplID0gZnJhbWVzLnNpemUoKTsg
aSA8IHNpemU7ICsraSkKLSAgICAgICAgZnJhbWVzW2ldLT5kaXNjb25uZWN0KCk7Ci0gICAgbV9m
cmFtZU1hcC5jbGVhcigpOwogICAgIG1fbWFpbkZyYW1lID0gMDsKIAogICAgIG1fcGFnZVRpdGxl
ID0gU3RyaW5nKCk7CkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkocmV2aXNpb24gNjYw
MjIpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkod29ya2luZyBjb3B5KQpA
QCAtODQsNyArODQsNiBAQCBwdWJsaWM6CiAKICAgICB1aW50NjRfdCBwYWdlSUQoKSBjb25zdCB7
IHJldHVybiBtX3BhZ2VJRDsgfQogCi0gICAgV2ViRnJhbWVQcm94eSogd2ViRnJhbWUodWludDY0
X3QpIGNvbnN0OwogICAgIFdlYkZyYW1lUHJveHkqIG1haW5GcmFtZSgpIGNvbnN0IHsgcmV0dXJu
IG1fbWFpbkZyYW1lLmdldCgpOyB9CiAKICAgICBEcmF3aW5nQXJlYVByb3h5KiBkcmF3aW5nQXJl
YSgpIHsgcmV0dXJuIG1fZHJhd2luZ0FyZWEuZ2V0KCk7IH0KQEAgLTIzMSw3ICsyMzAsNiBAQCBw
cml2YXRlOgogICAgIE93blB0cjxEcmF3aW5nQXJlYVByb3h5PiBtX2RyYXdpbmdBcmVhOwogICAg
IFJlZlB0cjxXZWJQYWdlTmFtZXNwYWNlPiBtX3BhZ2VOYW1lc3BhY2U7CiAgICAgUmVmUHRyPFdl
YkZyYW1lUHJveHk+IG1fbWFpbkZyYW1lOwotICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxX
ZWJGcmFtZVByb3h5PiA+IG1fZnJhbWVNYXA7CiAgICAgV1RGOjpTdHJpbmcgbV9wYWdlVGl0bGU7
CiAKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8U2NyaXB0UmV0dXJuVmFsdWVDYWxsYmFj
az4gPiBtX3NjcmlwdFJldHVyblZhbHVlQ2FsbGJhY2tzOwpJbmRleDogV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUHJveHkuY3BwCShyZXZpc2lvbiA2NjAyMikKKysrIFdlYktpdDIvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1MywxMSArMjUzLDcgQEAg
dm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZFJlY2VpdmVNZXNzYWdlKAogICAgICAgICAgICAgICAg
IGlmICghYXJndW1lbnRzLT5kZWNvZGUoQ29yZUlQQzo6T3V0KHBhZ2VJRCwgc3RvcmUsIGZyYW1l
SUQpKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgICAgICAgICAgV2Vi
UGFnZVByb3h5KiBwYWdlID0gd2ViUGFnZShwYWdlSUQpOwotICAgICAgICAgICAgICAgIGlmICgh
cGFnZSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIAotICAg
ICAgICAgICAgICAgIG1fY29udGV4dC0+ZGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGEocGFn
ZS0+d2ViRnJhbWUoZnJhbWVJRCksIHN0b3JlKTsKKyAgICAgICAgICAgICAgICBtX2NvbnRleHQt
PmRpZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRhKHdlYkZyYW1lKGZyYW1lSUQpLCBzdG9yZSk7
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBjYXNl
IFdlYlByb2Nlc3NQcm94eU1lc3NhZ2U6OkRpZFBlcmZvcm1DbGllbnRSZWRpcmVjdDogewpAQCAt
MjY4LDExICsyNjQsNyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlkUmVjZWl2ZU1lc3NhZ2Uo
CiAgICAgICAgICAgICAgICAgaWYgKCFhcmd1bWVudHMtPmRlY29kZShDb3JlSVBDOjpPdXQocGFn
ZUlELCBzb3VyY2VVUkxTdHJpbmcsIGRlc3RpbmF0aW9uVVJMU3RyaW5nLCBmcmFtZUlEKSkpCiAg
ICAgICAgICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICAgICAgICAgIFdlYlBhZ2VQcm94
eSogcGFnZSA9IHdlYlBhZ2UocGFnZUlEKTsKLSAgICAgICAgICAgICAgICBpZiAoIXBhZ2UpCi0g
ICAgICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgICAgIG1fY29udGV4dC0+
ZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0KHBhZ2UtPndlYkZyYW1lKGZyYW1lSUQpLCBzb3VyY2VV
UkxTdHJpbmcsIGRlc3RpbmF0aW9uVVJMU3RyaW5nKTsKKyAgICAgICAgICAgICAgICBtX2NvbnRl
eHQtPmRpZFBlcmZvcm1DbGllbnRSZWRpcmVjdCh3ZWJGcmFtZShmcmFtZUlEKSwgc291cmNlVVJM
U3RyaW5nLCBkZXN0aW5hdGlvblVSTFN0cmluZyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICBjYXNlIFdlYlByb2Nlc3NQcm94eU1lc3NhZ2U6OkRp
ZFBlcmZvcm1TZXJ2ZXJSZWRpcmVjdDogewpAQCAtMjgzLDExICsyNzUsNyBAQCB2b2lkIFdlYlBy
b2Nlc3NQcm94eTo6ZGlkUmVjZWl2ZU1lc3NhZ2UoCiAgICAgICAgICAgICAgICAgaWYgKCFhcmd1
bWVudHMtPmRlY29kZShDb3JlSVBDOjpPdXQocGFnZUlELCBzb3VyY2VVUkxTdHJpbmcsIGRlc3Rp
bmF0aW9uVVJMU3RyaW5nLCBmcmFtZUlEKSkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsK
IAotICAgICAgICAgICAgICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9IHdlYlBhZ2UocGFnZUlEKTsK
LSAgICAgICAgICAgICAgICBpZiAoIXBhZ2UpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybjsK
LQotICAgICAgICAgICAgICAgIG1fY29udGV4dC0+ZGlkUGVyZm9ybVNlcnZlclJlZGlyZWN0KHBh
Z2UtPndlYkZyYW1lKGZyYW1lSUQpLCBzb3VyY2VVUkxTdHJpbmcsIGRlc3RpbmF0aW9uVVJMU3Ry
aW5nKTsKKyAgICAgICAgICAgICAgICBtX2NvbnRleHQtPmRpZFBlcmZvcm1TZXJ2ZXJSZWRpcmVj
dCh3ZWJGcmFtZShmcmFtZUlEKSwgc291cmNlVVJMU3RyaW5nLCBkZXN0aW5hdGlvblVSTFN0cmlu
Zyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBj
YXNlIFdlYlByb2Nlc3NQcm94eU1lc3NhZ2U6OkRpZFVwZGF0ZUhpc3RvcnlUaXRsZTogewpAQCAt
Mjk4LDExICsyODYsMTUgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZFJlY2VpdmVNZXNzYWdl
KAogICAgICAgICAgICAgICAgIGlmICghYXJndW1lbnRzLT5kZWNvZGUoQ29yZUlQQzo6T3V0KHBh
Z2VJRCwgdGl0bGUsIHVybCwgZnJhbWVJRCkpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm47
CiAKLSAgICAgICAgICAgICAgICBXZWJQYWdlUHJveHkqIHBhZ2UgPSB3ZWJQYWdlKHBhZ2VJRCk7
Ci0gICAgICAgICAgICAgICAgaWYgKCFwYWdlKQorICAgICAgICAgICAgICAgIG1fY29udGV4dC0+
ZGlkVXBkYXRlSGlzdG9yeVRpdGxlKHdlYkZyYW1lKGZyYW1lSUQpLCB0aXRsZSwgdXJsKTsKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhc2UgV2Vi
UHJvY2Vzc1Byb3h5TWVzc2FnZTo6RGlkRGVzdHJveUZyYW1lOiB7CisgICAgICAgICAgICAgICAg
dWludDY0X3QgZnJhbWVJRDsKKyAgICAgICAgICAgICAgICBpZiAoIWFyZ3VtZW50cy0+ZGVjb2Rl
KENvcmVJUEM6Ok91dChmcmFtZUlEKSkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKIAot
ICAgICAgICAgICAgICAgIG1fY29udGV4dC0+ZGlkVXBkYXRlSGlzdG9yeVRpdGxlKHBhZ2UtPndl
YkZyYW1lKGZyYW1lSUQpLCB0aXRsZSwgdXJsKTsKKyAgICAgICAgICAgICAgICBmcmFtZURlc3Ry
b3llZChmcmFtZUlEKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KIApA
QCAtMzY3LDYgKzM1OSw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWRSZWNlaXZlU3luY01l
c3MKICAgICAgICAgICAgIGNhc2UgV2ViUHJvY2Vzc1Byb3h5TWVzc2FnZTo6RGlkVXBkYXRlSGlz
dG9yeVRpdGxlOgogICAgICAgICAgICAgY2FzZSBXZWJQcm9jZXNzUHJveHlNZXNzYWdlOjpBZGRC
YWNrRm9yd2FyZEl0ZW06CiAgICAgICAgICAgICBjYXNlIFdlYlByb2Nlc3NQcm94eU1lc3NhZ2U6
OkFkZFZpc2l0ZWRMaW5rOgorICAgICAgICAgICAgY2FzZSBXZWJQcm9jZXNzUHJveHlNZXNzYWdl
OjpEaWREZXN0cm95RnJhbWU6CiAgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTM4OCw2ICszODEsMTMgQEAg
dm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZENsb3NlKENvcmVJUEM6OgogICAgIG1fY29ubmVjdGlv
biA9IDA7CiAgICAgbV9yZXNwb25zaXZlbmVzc1RpbWVyLnN0b3AoKTsKIAorICAgIFZlY3RvcjxS
ZWZQdHI8V2ViRnJhbWVQcm94eT4gPiBmcmFtZXM7CisgICAgY29weVZhbHVlc1RvVmVjdG9yKG1f
ZnJhbWVNYXAsIGZyYW1lcyk7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMCwgc2l6ZSA9IGZyYW1l
cy5zaXplKCk7IGkgPCBzaXplOyArK2kpCisgICAgICAgIGZyYW1lc1tpXS0+ZGlzY29ubmVjdCgp
OworICAgIG1fZnJhbWVNYXAuY2xlYXIoKTsKKwogICAgIFZlY3RvcjxSZWZQdHI8V2ViUGFnZVBy
b3h5PiA+IHBhZ2VzOwogICAgIGNvcHlWYWx1ZXNUb1ZlY3RvcihtX3BhZ2VNYXAsIHBhZ2VzKTsK
IApAQCAtNDQwLDQgKzQ0MCw0MSBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlkRmluaXNoTGF1
bmNoaW5nCiAgICAgbV9jb250ZXh0LT5wcm9jZXNzRGlkRmluaXNoTGF1bmNoaW5nKHRoaXMpOwog
fQogCitXZWJGcmFtZVByb3h5KiBXZWJQcm9jZXNzUHJveHk6OndlYkZyYW1lKHVpbnQ2NF90IGZy
YW1lSUQpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZnJhbWVNYXAuZ2V0KGZyYW1lSUQpLmdldCgp
OworfQorCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZnJhbWVDcmVhdGVkKHVpbnQ2NF90IGZyYW1l
SUQsIFdlYkZyYW1lUHJveHkqIGZyYW1lUHJveHkpCit7CisgICAgQVNTRVJUKCFtX2ZyYW1lTWFw
LmNvbnRhaW5zKGZyYW1lSUQpKTsKKyAgICBtX2ZyYW1lTWFwLnNldChmcmFtZUlELCBmcmFtZVBy
b3h5KTsKK30KKwordm9pZCBXZWJQcm9jZXNzUHJveHk6OmZyYW1lRGVzdHJveWVkKHVpbnQ2NF90
IGZyYW1lSUQpCit7CisgICAgQVNTRVJUKG1fZnJhbWVNYXAuY29udGFpbnMoZnJhbWVJRCkpOwor
ICAgIG1fZnJhbWVNYXAucmVtb3ZlKGZyYW1lSUQpOworfQorCit2b2lkIFdlYlByb2Nlc3NQcm94
eTo6ZGlzY29ubmVjdEZyYW1lc0Zyb21QYWdlKFdlYlBhZ2VQcm94eSogcGFnZSkKK3sKKyAgICBW
ZWN0b3I8UmVmUHRyPFdlYkZyYW1lUHJveHk+ID4gZnJhbWVzOworICAgIGNvcHlWYWx1ZXNUb1Zl
Y3RvcihtX2ZyYW1lTWFwLCBmcmFtZXMpOworICAgIGZvciAoc2l6ZV90IGkgPSAwLCBzaXplID0g
ZnJhbWVzLnNpemUoKTsgaSA8IHNpemU7ICsraSkgeworICAgICAgICBpZiAoZnJhbWVzW2ldLT5w
YWdlKCkgPT0gcGFnZSkKKyAgICAgICAgICAgIGZyYW1lc1tpXS0+ZGlzY29ubmVjdCgpOworICAg
IH0KK30KKworc2l6ZV90IFdlYlByb2Nlc3NQcm94eTo6ZnJhbWVDb3VudEluUGFnZShXZWJQYWdl
UHJveHkqIHBhZ2UpIGNvbnN0Cit7CisgICAgc2l6ZV90IHJlc3VsdCA9IDA7CisgICAgZm9yIChI
YXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8V2ViRnJhbWVQcm94eT4gPjo6Y29uc3RfaXRlcmF0b3Ig
aXRlciA9IG1fZnJhbWVNYXAuYmVnaW4oKTsgaXRlciAhPSBtX2ZyYW1lTWFwLmVuZCgpOyArK2l0
ZXIpIHsKKyAgICAgICAgaWYgKGl0ZXItPnNlY29uZC0+cGFnZSgpID09IHBhZ2UpCisgICAgICAg
ICAgICArK3Jlc3VsdDsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAkocmV2aXNp
b24gNjYwMjIpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAkod29ya2lu
ZyBjb3B5KQpAQCAtODcsNiArODcsMTIgQEAgcHVibGljOgogICAgIGJvb2wgaXNWYWxpZCgpIGNv
bnN0IHsgcmV0dXJuIG1fY29ubmVjdGlvbjsgfQogICAgIGJvb2wgaXNMYXVuY2hpbmcoKSBjb25z
dCB7IHJldHVybiBtX3Byb2Nlc3NMYXVuY2hlciAmJiBtX3Byb2Nlc3NMYXVuY2hlci0+aXNMYXVu
Y2hpbmcoKTsgfQogCisgICAgV2ViRnJhbWVQcm94eSogd2ViRnJhbWUodWludDY0X3QpIGNvbnN0
OworICAgIHZvaWQgZnJhbWVDcmVhdGVkKHVpbnQ2NF90LCBXZWJGcmFtZVByb3h5Kik7CisgICAg
dm9pZCBmcmFtZURlc3Ryb3llZCh1aW50NjRfdCk7CisgICAgdm9pZCBkaXNjb25uZWN0RnJhbWVz
RnJvbVBhZ2UoV2ViUGFnZVByb3h5Kik7IC8vIEluY2x1ZGluZyBtYWluIGZyYW1lLgorICAgIHNp
emVfdCBmcmFtZUNvdW50SW5QYWdlKFdlYlBhZ2VQcm94eSopIGNvbnN0OyAvLyBJbmNsdWRpbmcg
bWFpbiBmcmFtZS4KKwogcHJpdmF0ZToKICAgICBleHBsaWNpdCBXZWJQcm9jZXNzUHJveHkoV2Vi
Q29udGV4dCopOwogCkBAIC0xMjksNiArMTM1LDggQEAgcHJpdmF0ZToKIAogICAgIC8vIE5PVEU6
IFRoaXMgbWFwIGlzIGZvciBXZWJCYWNrRm9yd2FyZExpc3RJdGVtcyBpbiBhbGwgV2ViUGFnZU5h
bWVzcGFjZXMgYW5kIFdlYlBhZ2VQcm94aWVzIHRoYXQgdXNlIHRoaXMgcHJvY2Vzcy4KICAgICBX
ZWJCYWNrRm9yd2FyZExpc3RJdGVtTWFwIG1fYmFja0ZvcndhcmRMaXN0SXRlbU1hcDsKKworICAg
IEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxXZWJGcmFtZVByb3h5PiA+IG1fZnJhbWVNYXA7CiB9
OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBFLCB0eXBlbmFtZSBUPgpJbmRleDogV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmNwcAkocmV2aXNpb24gNjYwMjIpCisrKyBXZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1MCw0ICszNTAsMjAgQEAgdm9pZCBXZWJQ
cm9jZXNzOjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZwogICAgIC8vIHdlJ2xsIGxldCBpdCBzbGlk
ZS4KIH0KIAorV2ViRnJhbWUqIFdlYlByb2Nlc3M6OndlYkZyYW1lKHVpbnQ2NF90IGZyYW1lSUQp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZnJhbWVNYXAuZ2V0KGZyYW1lSUQpOworfQorCit2b2lk
IFdlYlByb2Nlc3M6OmFkZFdlYkZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIFdlYkZyYW1lKiBmcmFt
ZSkKK3sKKyAgICBtX2ZyYW1lTWFwLnNldChmcmFtZUlELCBmcmFtZSk7Cit9CisKK3ZvaWQgV2Vi
UHJvY2Vzczo6cmVtb3ZlV2ViRnJhbWUodWludDY0X3QgZnJhbWVJRCkKK3sKKyAgICBtX2ZyYW1l
TWFwLnJlbW92ZShmcmFtZUlEKTsKKyAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoV2ViUHJvY2Vzc1By
b3h5TWVzc2FnZTo6RGlkRGVzdHJveUZyYW1lLCAwLCBDb3JlSVBDOjpJbihmcmFtZUlEKSk7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCShy
ZXZpc2lvbiA2NjAyMikKKysrIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTQxLDYgKzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNl
IFdlYktpdCB7CiAKIGNsYXNzIEluamVjdGVkQnVuZGxlOworY2xhc3MgV2ViRnJhbWU7CiBjbGFz
cyBXZWJQYWdlOwogc3RydWN0IFdlYlByZWZlcmVuY2VzU3RvcmU7CiAKQEAgLTY4LDYgKzY5LDEw
IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZFZpc2l0ZWRMaW5rKFdlYkNvcmU6OkxpbmtIYXNoKTsK
ICAgICBib29sIGlzTGlua1Zpc2l0ZWQoV2ViQ29yZTo6TGlua0hhc2gpIGNvbnN0OwogCisgICAg
V2ViRnJhbWUqIHdlYkZyYW1lKHVpbnQ2NF90KSBjb25zdDsKKyAgICB2b2lkIGFkZFdlYkZyYW1l
KHVpbnQ2NF90LCBXZWJGcmFtZSopOworICAgIHZvaWQgcmVtb3ZlV2ViRnJhbWUodWludDY0X3Qp
OworCiBwcml2YXRlOgogICAgIFdlYlByb2Nlc3MoKTsKICAgICB2b2lkIHNodXRkb3duKCk7CkBA
IC0xMDMsNiArMTA4LDggQEAgcHJpdmF0ZToKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJ
TkcpICYmIFBMQVRGT1JNKE1BQykKICAgICBtYWNoX3BvcnRfdCBtX2NvbXBvc2l0aW5nUmVuZGVy
U2VydmVyUG9ydDsKICNlbmRpZgorCisgICAgSGFzaE1hcDx1aW50NjRfdCwgV2ViRnJhbWUqPiBt
X2ZyYW1lTWFwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBXZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCShyZXZpc2lvbiA2NjAyMikKKysrIFdlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNiAr
MjksNyBAQAogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQuaCIKICNpbmNsdWRl
ICJXZWJDaHJvbWVDbGllbnQuaCIKICNpbmNsdWRlICJXZWJQYWdlLmgiCisjaW5jbHVkZSAiV2Vi
UHJvY2Vzcy5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0FQSUNhc3QuaD4KICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9KU0xvY2suaD4KICNpbmNsdWRlIDxXZWJDb3JlL0FuaW1hdGlvbkNv
bnRyb2xsZXIuaD4KQEAgLTk0LDcgKzk1LDcgQEAgV2ViRnJhbWU6OldlYkZyYW1lKFdlYlBhZ2Uq
IHBhZ2UsIGNvbnN0IAogICAgICwgbV9sb2FkTGlzdGVuZXIoMCkKICAgICAsIG1fZnJhbWVJRChn
ZW5lcmF0ZUZyYW1lSUQoKSkKIHsKLSAgICBwYWdlLT5hZGRXZWJGcmFtZShtX2ZyYW1lSUQsIHRo
aXMpOworICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmFkZFdlYkZyYW1lKG1fZnJhbWVJRCwgdGhp
cyk7CiAKICAgICBSZWZQdHI8RnJhbWU+IGZyYW1lID0gRnJhbWU6OmNyZWF0ZShwYWdlLT5jb3Jl
UGFnZSgpLCBvd25lckVsZW1lbnQsICZtX2ZyYW1lTG9hZGVyQ2xpZW50KTsKICAgICBtX2NvcmVG
cmFtZSA9IGZyYW1lLmdldCgpOwpAQCAtMTM1LDggKzEzNiw3IEBAIFdlYlBhZ2UqIFdlYkZyYW1l
OjpwYWdlKCkgY29uc3QKIAogdm9pZCBXZWJGcmFtZTo6aW52YWxpZGF0ZSgpCiB7Ci0gICAgaWYg
KFdlYlBhZ2UqIHAgPSBwYWdlKCkpCi0gICAgICAgIHAtPnJlbW92ZVdlYkZyYW1lKG1fZnJhbWVJ
RCk7CisgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkucmVtb3ZlV2ViRnJhbWUobV9mcmFtZUlEKTsK
ICAgICBtX2NvcmVGcmFtZSA9IDA7CiB9CiAKSW5kZXg6IFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwCShyZXZpc2lvbiA2NjAyMikKKysrIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDgsMjEgKzIwOCw2IEBAIHZvaWQg
V2ViUGFnZTo6ZXhpdEFjY2VsZXJhdGVkQ29tcG9zaXRpbmcKIH0KICNlbmRpZgogCi1XZWJGcmFt
ZSogV2ViUGFnZTo6d2ViRnJhbWUodWludDY0X3QgZnJhbWVJRCkgY29uc3QKLXsKLSAgICByZXR1
cm4gbV9mcmFtZU1hcC5nZXQoZnJhbWVJRCk7Ci19Ci0KLXZvaWQgV2ViUGFnZTo6YWRkV2ViRnJh
bWUodWludDY0X3QgZnJhbWVJRCwgV2ViRnJhbWUqIGZyYW1lKQotewotICAgIG1fZnJhbWVNYXAu
c2V0KGZyYW1lSUQsIGZyYW1lKTsKLX0KLQotdm9pZCBXZWJQYWdlOjpyZW1vdmVXZWJGcmFtZSh1
aW50NjRfdCBmcmFtZUlEKQotewotICAgIG1fZnJhbWVNYXAucmVtb3ZlKGZyYW1lSUQpOwotfQot
CiB2b2lkIFdlYlBhZ2U6OmNsb3NlKCkKIHsKICAgICBpZiAoV2ViUHJvY2Vzczo6c2hhcmVkKCku
aW5qZWN0ZWRCdW5kbGUoKSkKQEAgLTY1Niw3ICs2NDEsNyBAQCB2b2lkIFdlYlBhZ2U6OmRpZFJl
Y2VpdmVNZXNzYWdlKENvcmVJUEM6CiAgICAgICAgICAgICB1aW50MzJfdCBwb2xpY3lBY3Rpb247
CiAgICAgICAgICAgICBpZiAoIWFyZ3VtZW50cy0+ZGVjb2RlKENvcmVJUEM6Ok91dChmcmFtZUlE
LCBsaXN0ZW5lcklELCBwb2xpY3lBY3Rpb24pKSkKICAgICAgICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgICAgICBkaWRSZWNlaXZlUG9saWN5RGVjaXNpb24od2ViRnJhbWUoZnJhbWVJRCksIGxp
c3RlbmVySUQsIChXZWJDb3JlOjpQb2xpY3lBY3Rpb24pcG9saWN5QWN0aW9uKTsKKyAgICAgICAg
ICAgIGRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihXZWJQcm9jZXNzOjpzaGFyZWQoKS53ZWJGcmFt
ZShmcmFtZUlEKSwgbGlzdGVuZXJJRCwgKFdlYkNvcmU6OlBvbGljeUFjdGlvbilwb2xpY3lBY3Rp
b24pOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgV2ViUGFn
ZU1lc3NhZ2U6OlJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZTogewpJbmRleDogV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaAkocmV2aXNpb24gNjYwMjIpCisrKyBXZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTgxLDEwICs4MSw2IEBAIHB1
YmxpYzoKICAgICBXZWJDb3JlOjpQYWdlKiBjb3JlUGFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFn
ZTsgfQogICAgIHVpbnQ2NF90IHBhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUlEOyB9CiAK
LSAgICBXZWJGcmFtZSogd2ViRnJhbWUodWludDY0X3QpIGNvbnN0OwotICAgIHZvaWQgYWRkV2Vi
RnJhbWUodWludDY0X3QsIFdlYkZyYW1lKik7Ci0gICAgdm9pZCByZW1vdmVXZWJGcmFtZSh1aW50
NjRfdCk7Ci0KICAgICB2b2lkIHNldFNpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpOwogICAg
IGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3ZpZXdTaXpl
OyB9CiAKQEAgLTE3MCw3ICsxNjYsNiBAQCBwcml2YXRlOgogCiAgICAgV2ViQ29yZTo6UGFnZSog
bV9wYWdlOwogICAgIFJlZlB0cjxXZWJGcmFtZT4gbV9tYWluRnJhbWU7Ci0gICAgSGFzaE1hcDx1
aW50NjRfdCwgV2ViRnJhbWUqPiBtX2ZyYW1lTWFwOwogCiAgICAgU3RyaW5nIG1fY3VzdG9tVXNl
ckFnZW50OwogCg==
</data>
<flag name="review"
          id="54456"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>