<?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>125047</bug_id>
          
          <creation_ts>2013-12-01 14:48:44 -0800</creation_ts>
          <short_desc>[CTTE] The WebPageProxy&apos;s WebProcessProxy is never null so it should be stored in a Ref</short_desc>
          <delta_ts>2013-12-01 16:47:29 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>eflews.bot</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>philn</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>955185</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-12-01 14:48:44 -0800</bug_when>
    <thetext>[CTTE] The WebPageProxy&apos;s WebProcessProxy is never null so it should be stored in a Ref</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>955186</commentid>
    <comment_count>1</comment_count>
      <attachid>218125</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-12-01 14:50:13 -0800</bug_when>
    <thetext>Created attachment 218125
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>955188</commentid>
    <comment_count>2</comment_count>
      <attachid>218125</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-12-01 15:15:03 -0800</bug_when>
    <thetext>Comment on attachment 218125
Patch

Attachment 218125 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/41018022</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>955193</commentid>
    <comment_count>3</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-12-01 16:47:29 -0800</bug_when>
    <thetext>Committed r159903: &lt;http://trac.webkit.org/changeset/159903&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>218125</attachid>
            <date>2013-12-01 14:50:13 -0800</date>
            <delta_ts>2013-12-01 16:46:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-125047-20131201145013.patch</filename>
            <type>text/plain</type>
            <size>93518</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1OTkwMCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQzIEBACisyMDEzLTEyLTAxICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW0NUVEVdIFRoZSBXZWJQYWdlUHJveHkn
cyBXZWJQcm9jZXNzUHJveHkgaXMgbmV2ZXIgbnVsbCBzbyBpdCBzaG91bGQgYmUgc3RvcmVkIGlu
IGEgUmVmCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MjUwNDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9t
YWMvV0tQYWdlUHJpdmF0ZU1hYy5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubW06CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9t
YWMvV0tWaWV3Lm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94
eS5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5Lmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5TWFwLmNwcDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHlNYXAuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL0dlb2xv
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAqIFVJUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTm90
aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHA6
CisgICAgICAgICogVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdl
clByb3h5LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29udGV4dC5jcHA6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYkNvbnRleHQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViRWRpdENv
bW1hbmRQcm94eS5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuY3BwOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5LmNwcDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuY3BwOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQYWdlR3JvdXAuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94
eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9jZi9XZWJQYWdlUHJveHlDRi5jcHA6CisgICAgICAg
ICogVUlQcm9jZXNzL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lm1tOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9tYWMvUmVtb3RlTGF5ZXJUcmVlSG9zdC5tbToKKyAgICAgICAgKiBV
SVByb2Nlc3MvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHkubW06CisgICAg
ICAgICogVUlQcm9jZXNzL21hYy9XZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5TWFjLm1tOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9tYWMvV2ViSW5zcGVjdG9yUHJveHlNYWMubW06CisgICAgICAgICog
VUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW06CisKIDIwMTMtMTItMDEgIFBoaWxpcHBl
IE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQgR1RL
IGJ1aWxkIGZpeCBhZnRlciByMTU5ODk2LgpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0RyYXdpbmdBcmVhUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9EcmF3aW5nQXJlYVByb3h5LmNwcAkocmV2aXNpb24gMTU5OTAwKQorKysgU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
MSwxMiArNDEsMTIgQEAgRHJhd2luZ0FyZWFQcm94eTo6RHJhd2luZ0FyZWFQcm94eShEcmF3aQog
ICAgICwgbV93ZWJQYWdlUHJveHkod2ViUGFnZVByb3h5KQogICAgICwgbV9zaXplKHdlYlBhZ2VQ
cm94eS0+dmlld1NpemUoKSkKIHsKLSAgICBtX3dlYlBhZ2VQcm94eS0+cHJvY2VzcygpLT5hZGRN
ZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OkRyYXdpbmdBcmVhUHJveHk6Om1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSwgd2ViUGFnZVByb3h5LT5wYWdlSUQoKSwgdGhpcyk7CisgICAgbV93ZWJQYWdlUHJv
eHktPnByb2Nlc3MoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OkRyYXdpbmdBcmVhUHJv
eHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgd2ViUGFnZVByb3h5LT5wYWdlSUQoKSwgdGhpcyk7
CiB9CiAKIERyYXdpbmdBcmVhUHJveHk6On5EcmF3aW5nQXJlYVByb3h5KCkKIHsKLSAgICBtX3dl
YlBhZ2VQcm94eS0+cHJvY2VzcygpLT5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OkRy
YXdpbmdBcmVhUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV93ZWJQYWdlUHJveHktPnBh
Z2VJRCgpKTsKKyAgICBtX3dlYlBhZ2VQcm94eS0+cHJvY2VzcygpLnJlbW92ZU1lc3NhZ2VSZWNl
aXZlcihNZXNzYWdlczo6RHJhd2luZ0FyZWFQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBt
X3dlYlBhZ2VQcm94eS0+cGFnZUlEKCkpOwogfQogCiB2b2lkIERyYXdpbmdBcmVhUHJveHk6OnNl
dFNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgY29uc3QgSW50U2l6ZSYgbGF5ZXJQb3NpdGlvbiwg
Y29uc3QgSW50U2l6ZSYgc2Nyb2xsT2Zmc2V0KQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9HZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1
ZXN0TWFuYWdlclByb3h5LmNwcAkocmV2aXNpb24gMTU5OTAwKQorKysgU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC02Miw3ICs2Miw3IEBAIHZvaWQgR2VvbG9jYXRpb25QZXJtaXNzaW9u
UmVxdWVzdE1hbmFnZXIKICAgICAgICAgcmV0dXJuOwogCiAjaWYgRU5BQkxFKEdFT0xPQ0FUSU9O
KQotICAgIG1fcGFnZS5wcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFJlY2Vp
dmVHZW9sb2NhdGlvblBlcm1pc3Npb25EZWNpc2lvbihnZW9sb2NhdGlvbklELCBhbGxvd2VkKSwg
bV9wYWdlLnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OkRpZFJlY2VpdmVHZW9sb2NhdGlvblBlcm1pc3Npb25EZWNpc2lvbihnZW9sb2NhdGlv
bklELCBhbGxvd2VkKSwgbV9wYWdlLnBhZ2VJRCgpKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFN
KGFsbG93ZWQpOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29u
dGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRl
eHQuY3BwCShyZXZpc2lvbiAxNTk5MDApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
Q29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3MCw3ICszNzAsNyBAQCB2b2lkIFdlYkNv
bnRleHQ6OmVuc3VyZU5ldHdvcmtQcm9jZXNzKCkKICAgICBpZiAobV9uZXR3b3JrUHJvY2VzcykK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9uZXR3b3JrUHJvY2VzcyA9IE5ldHdvcmtQcm9jZXNz
UHJveHk6OmNyZWF0ZSh0aGlzKTsKKyAgICBtX25ldHdvcmtQcm9jZXNzID0gTmV0d29ya1Byb2Nl
c3NQcm94eTo6Y3JlYXRlKCp0aGlzKTsKIAogICAgIE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzIHBhcmFtZXRlcnM7CiAKQEAgLTUwNiwyMiArNTA2LDIyIEBAIHZvaWQgV2ViQ29udGV4
dDo6cHJvY2Vzc0RpZENhY2hlUGFnZShXZWIKICAgICBtX3Byb2Nlc3NXaXRoUGFnZUNhY2hlID0g
cHJvY2VzczsKIH0KIAotV2ViUHJvY2Vzc1Byb3h5KiBXZWJDb250ZXh0OjplbnN1cmVTaGFyZWRX
ZWJQcm9jZXNzKCkKK1dlYlByb2Nlc3NQcm94eSYgV2ViQ29udGV4dDo6ZW5zdXJlU2hhcmVkV2Vi
UHJvY2VzcygpCiB7CiAgICAgQVNTRVJUKG1fcHJvY2Vzc01vZGVsID09IFByb2Nlc3NNb2RlbFNo
YXJlZFNlY29uZGFyeVByb2Nlc3MpOwogICAgIGlmIChtX3Byb2Nlc3Nlcy5pc0VtcHR5KCkpCiAg
ICAgICAgIGNyZWF0ZU5ld1dlYlByb2Nlc3MoKTsKLSAgICByZXR1cm4gbV9wcm9jZXNzZXNbMF0u
Z2V0KCk7CisgICAgcmV0dXJuICptX3Byb2Nlc3Nlc1swXTsKIH0KIAotV2ViUHJvY2Vzc1Byb3h5
KiBXZWJDb250ZXh0OjpjcmVhdGVOZXdXZWJQcm9jZXNzKCkKK1dlYlByb2Nlc3NQcm94eSYgV2Vi
Q29udGV4dDo6Y3JlYXRlTmV3V2ViUHJvY2VzcygpCiB7CiAjaWYgRU5BQkxFKE5FVFdPUktfUFJP
Q0VTUykKICAgICBpZiAobV91c2VzTmV0d29ya1Byb2Nlc3MpCiAgICAgICAgIGVuc3VyZU5ldHdv
cmtQcm9jZXNzKCk7CiAjZW5kaWYKIAotICAgIFJlZlB0cjxXZWJQcm9jZXNzUHJveHk+IHByb2Nl
c3MgPSBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZSh0aGlzKTsKKyAgICBSZWZQdHI8V2ViUHJvY2Vz
c1Byb3h5PiBwcm9jZXNzID0gV2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGUoKnRoaXMpOwogCiAgICAg
V2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyBwYXJhbWV0ZXJzOwogCkBAIC02MTUsNyArNjE1
LDcgQEAgV2ViUHJvY2Vzc1Byb3h5KiBXZWJDb250ZXh0OjpjcmVhdGVOZXdXZQogICAgIH0gZWxz
ZQogICAgICAgICBBU1NFUlQobV9tZXNzYWdlc1RvSW5qZWN0ZWRCdW5kbGVQb3N0ZWRUb0VtcHR5
Q29udGV4dC5pc0VtcHR5KCkpOwogCi0gICAgcmV0dXJuIHByb2Nlc3MuZ2V0KCk7CisgICAgcmV0
dXJuICpwcm9jZXNzOwogfQogCiB2b2lkIFdlYkNvbnRleHQ6Ondhcm1Jbml0aWFsUHJvY2Vzcygp
ICAKQEAgLTcyMywxMyArNzIzLDEzIEBAIHZvaWQgV2ViQ29udGV4dDo6ZGlzY29ubmVjdFByb2Nl
c3MoV2ViUHIKICAgICBtX3Byb2Nlc3Nlcy5yZW1vdmUobV9wcm9jZXNzZXMuZmluZChwcm9jZXNz
KSk7CiB9CiAKLVdlYlByb2Nlc3NQcm94eSogV2ViQ29udGV4dDo6Y3JlYXRlTmV3V2ViUHJvY2Vz
c1Jlc3BlY3RpbmdQcm9jZXNzQ291bnRMaW1pdCgpCitXZWJQcm9jZXNzUHJveHkmIFdlYkNvbnRl
eHQ6OmNyZWF0ZU5ld1dlYlByb2Nlc3NSZXNwZWN0aW5nUHJvY2Vzc0NvdW50TGltaXQoKQogewog
ICAgIGlmIChtX3Byb2Nlc3Nlcy5zaXplKCkgPCBtX3dlYlByb2Nlc3NDb3VudExpbWl0KQogICAg
ICAgICByZXR1cm4gY3JlYXRlTmV3V2ViUHJvY2VzcygpOwogCiAgICAgLy8gQ2hvb3NlIGEgcHJv
Y2VzcyB3aXRoIGZld2VzdCBwYWdlcywgdG8gYWNoaWV2ZSBmbGF0IGRpc3RyaWJ1dGlvbi4KLSAg
ICBXZWJQcm9jZXNzUHJveHkqIHJlc3VsdCA9IDA7CisgICAgV2ViUHJvY2Vzc1Byb3h5KiByZXN1
bHQgPSBudWxscHRyOwogICAgIHVuc2lnbmVkIGZld2VzdFBhZ2VzU2VlbiA9IFVJTlRfTUFYOwog
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3Byb2Nlc3Nlcy5zaXplKCk7ICsraSkgewog
ICAgICAgICBpZiAoZmV3ZXN0UGFnZXNTZWVuID4gbV9wcm9jZXNzZXNbaV0tPnBhZ2VzKCkuc2l6
ZSgpKSB7CkBAIC03MzcsMjMgKzczNywyMyBAQCBXZWJQcm9jZXNzUHJveHkqIFdlYkNvbnRleHQ6
OmNyZWF0ZU5ld1dlCiAgICAgICAgICAgICBmZXdlc3RQYWdlc1NlZW4gPSBtX3Byb2Nlc3Nlc1tp
XS0+cGFnZXMoKS5zaXplKCk7CiAgICAgICAgIH0KICAgICB9Ci0gICAgcmV0dXJuIHJlc3VsdDsK
KyAgICByZXR1cm4gKnJlc3VsdDsKIH0KIAogUGFzc1JlZlB0cjxXZWJQYWdlUHJveHk+IFdlYkNv
bnRleHQ6OmNyZWF0ZVdlYlBhZ2UoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUGFnZUdyb3Vw
KiBwYWdlR3JvdXAsIFdlYlBhZ2VQcm94eSogcmVsYXRlZFBhZ2UpCiB7CiAgICAgUmVmUHRyPFdl
YlByb2Nlc3NQcm94eT4gcHJvY2VzczsKICAgICBpZiAobV9wcm9jZXNzTW9kZWwgPT0gUHJvY2Vz
c01vZGVsU2hhcmVkU2Vjb25kYXJ5UHJvY2VzcykgewotICAgICAgICBwcm9jZXNzID0gZW5zdXJl
U2hhcmVkV2ViUHJvY2VzcygpOworICAgICAgICBwcm9jZXNzID0gJmVuc3VyZVNoYXJlZFdlYlBy
b2Nlc3MoKTsKICAgICB9IGVsc2UgewogICAgICAgICBpZiAobV9oYXZlSW5pdGlhbEVtcHR5UHJv
Y2VzcykgewogICAgICAgICAgICAgcHJvY2VzcyA9IG1fcHJvY2Vzc2VzLmxhc3QoKTsKICAgICAg
ICAgICAgIG1faGF2ZUluaXRpYWxFbXB0eVByb2Nlc3MgPSBmYWxzZTsKICAgICAgICAgfSBlbHNl
IGlmIChyZWxhdGVkUGFnZSkgewogICAgICAgICAgICAgLy8gU2hhcmluZyBwcm9jZXNzZXMsIGUu
Zy4gd2hlbiBjcmVhdGluZyB0aGUgcGFnZSB2aWEgd2luZG93Lm9wZW4oKS4KLSAgICAgICAgICAg
IHByb2Nlc3MgPSByZWxhdGVkUGFnZS0+cHJvY2VzcygpOworICAgICAgICAgICAgcHJvY2VzcyA9
ICZyZWxhdGVkUGFnZS0+cHJvY2VzcygpOwogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHBy
b2Nlc3MgPSBjcmVhdGVOZXdXZWJQcm9jZXNzUmVzcGVjdGluZ1Byb2Nlc3NDb3VudExpbWl0KCk7
CisgICAgICAgICAgICBwcm9jZXNzID0gJmNyZWF0ZU5ld1dlYlByb2Nlc3NSZXNwZWN0aW5nUHJv
Y2Vzc0NvdW50TGltaXQoKTsKICAgICB9CiAKICAgICByZXR1cm4gcHJvY2Vzcy0+Y3JlYXRlV2Vi
UGFnZShwYWdlQ2xpZW50LCBwYWdlR3JvdXAgPyAqcGFnZUdyb3VwIDogbV9kZWZhdWx0UGFnZUdy
b3VwLmdldCgpKTsKQEAgLTkxNiw3ICs5MTYsNyBAQCBEb3dubG9hZFByb3h5KiBXZWJDb250ZXh0
OjpjcmVhdGVEb3dubG9hCiAgICAgICAgIHJldHVybiBtX25ldHdvcmtQcm9jZXNzLT5jcmVhdGVE
b3dubG9hZFByb3h5KCk7CiAjZW5kaWYKIAotICAgIHJldHVybiBlbnN1cmVTaGFyZWRXZWJQcm9j
ZXNzKCktPmNyZWF0ZURvd25sb2FkUHJveHkoKTsKKyAgICByZXR1cm4gZW5zdXJlU2hhcmVkV2Vi
UHJvY2VzcygpLmNyZWF0ZURvd25sb2FkUHJveHkoKTsKIH0KIAogdm9pZCBXZWJDb250ZXh0Ojph
ZGRNZXNzYWdlUmVjZWl2ZXIoQ29yZUlQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZl
ck5hbWUsIENvcmVJUEM6Ok1lc3NhZ2VSZWNlaXZlciogbWVzc2FnZVJlY2VpdmVyKQpJbmRleDog
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oCShyZXZpc2lvbiAxNTk5MDApCisrKyBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
NDIsOCArMjQyLDggQEAgcHVibGljOgogCiAgICAgdm9pZCBhbGxvd1NwZWNpZmljSFRUUFNDZXJ0
aWZpY2F0ZUZvckhvc3QoY29uc3QgV2ViQ2VydGlmaWNhdGVJbmZvKiwgY29uc3QgU3RyaW5nJiBo
b3N0KTsKIAotICAgIFdlYlByb2Nlc3NQcm94eSogZW5zdXJlU2hhcmVkV2ViUHJvY2VzcygpOwot
ICAgIFdlYlByb2Nlc3NQcm94eSogY3JlYXRlTmV3V2ViUHJvY2Vzc1Jlc3BlY3RpbmdQcm9jZXNz
Q291bnRMaW1pdCgpOyAvLyBXaWxsIHJldHVybiBhbiBleGlzdGluZyBvbmUgaWYgbGltaXQgaXMg
bWV0LgorICAgIFdlYlByb2Nlc3NQcm94eSYgZW5zdXJlU2hhcmVkV2ViUHJvY2VzcygpOworICAg
IFdlYlByb2Nlc3NQcm94eSYgY3JlYXRlTmV3V2ViUHJvY2Vzc1Jlc3BlY3RpbmdQcm9jZXNzQ291
bnRMaW1pdCgpOyAvLyBXaWxsIHJldHVybiBhbiBleGlzdGluZyBvbmUgaWYgbGltaXQgaXMgbWV0
LgogICAgIHZvaWQgd2FybUluaXRpYWxQcm9jZXNzKCk7CiAKICAgICBib29sIHNob3VsZFRlcm1p
bmF0ZShXZWJQcm9jZXNzUHJveHkqKTsKQEAgLTMyMSw3ICszMjEsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2VzcyhXZWJQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzJik7CiAgICAgdm9pZCBwbGF0Zm9ybUludmFsaWRhdGVDb250ZXh0KCk7CiAKLSAgICBX
ZWJQcm9jZXNzUHJveHkqIGNyZWF0ZU5ld1dlYlByb2Nlc3MoKTsKKyAgICBXZWJQcm9jZXNzUHJv
eHkmIGNyZWF0ZU5ld1dlYlByb2Nlc3MoKTsKIAogICAgIHZvaWQgcmVxdWVzdFdlYkNvbnRlbnRT
dGF0aXN0aWNzKFN0YXRpc3RpY3NSZXF1ZXN0Kik7CiAgICAgdm9pZCByZXF1ZXN0TmV0d29ya2lu
Z1N0YXRpc3RpY3MoU3RhdGlzdGljc1JlcXVlc3QqKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJFZGl0Q29tbWFuZFByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViRWRpdENvbW1hbmRQcm94eS5jcHAJKHJldmlzaW9uIDE1OTkwMCkK
KysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJFZGl0Q29tbWFuZFByb3h5LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTUsNyArNTUsNyBAQCB2b2lkIFdlYkVkaXRDb21tYW5kUHJveHk6OnVu
YXBwbHkoKQogICAgIGlmICghbV9wYWdlIHx8ICFtX3BhZ2UtPmlzVmFsaWQoKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgbV9wYWdlLT5wcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OlVuYXBwbHlFZGl0Q29tbWFuZChtX2NvbW1hbmRJRCksIG1fcGFnZS0+cGFnZUlEKCksIENvcmVJ
UEM6OkRpc3BhdGNoTWVzc2FnZUV2ZW5XaGVuV2FpdGluZ0ZvclN5bmNSZXBseSk7CisgICAgbV9w
YWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VW5hcHBseUVkaXRDb21tYW5k
KG1fY29tbWFuZElEKSwgbV9wYWdlLT5wYWdlSUQoKSwgQ29yZUlQQzo6RGlzcGF0Y2hNZXNzYWdl
RXZlbldoZW5XYWl0aW5nRm9yU3luY1JlcGx5KTsKICAgICBtX3BhZ2UtPnJlZ2lzdGVyRWRpdENv
bW1hbmQodGhpcywgV2ViUGFnZVByb3h5OjpSZWRvKTsKIH0KIApAQCAtNjQsNyArNjQsNyBAQCB2
b2lkIFdlYkVkaXRDb21tYW5kUHJveHk6OnJlYXBwbHkoKQogICAgIGlmICghbV9wYWdlIHx8ICFt
X3BhZ2UtPmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wYWdlLT5wcm9jZXNz
KCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlYXBwbHlFZGl0Q29tbWFuZChtX2NvbW1hbmRJ
RCksIG1fcGFnZS0+cGFnZUlEKCksIENvcmVJUEM6OkRpc3BhdGNoTWVzc2FnZUV2ZW5XaGVuV2Fp
dGluZ0ZvclN5bmNSZXBseSk7CisgICAgbV9wYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6UmVhcHBseUVkaXRDb21tYW5kKG1fY29tbWFuZElEKSwgbV9wYWdlLT5wYWdlSUQo
KSwgQ29yZUlQQzo6RGlzcGF0Y2hNZXNzYWdlRXZlbldoZW5XYWl0aW5nRm9yU3luY1JlcGx5KTsK
ICAgICBtX3BhZ2UtPnJlZ2lzdGVyRWRpdENvbW1hbmQodGhpcywgV2ViUGFnZVByb3h5OjpVbmRv
KTsKIH0KIApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmNw
cAkocmV2aXNpb24gMTU5OTAwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkZyYW1l
UHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OCw3ICs3OCw3IEBAIHZvaWQgV2ViRnJhbWVQ
cm94eTo6bG9hZFVSTChjb25zdCBTdHJpbmcKICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgbV9wYWdlLT5wcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Okxv
YWRVUkxJbkZyYW1lKHVybCwgbV9mcmFtZUlEKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9w
YWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TG9hZFVSTEluRnJhbWUodXJs
LCBtX2ZyYW1lSUQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKIH0KIAogdm9pZCBXZWJGcmFtZVByb3h5
OjpzdG9wTG9hZGluZygpIGNvbnN0CkBAIC04OSw3ICs4OSw3IEBAIHZvaWQgV2ViRnJhbWVQcm94
eTo6c3RvcExvYWRpbmcoKSBjb25zdAogICAgIGlmICghbV9wYWdlLT5pc1ZhbGlkKCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIG1fcGFnZS0+cHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpTdG9wTG9hZGluZ0ZyYW1lKG1fZnJhbWVJRCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAg
IG1fcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlN0b3BMb2FkaW5nRnJh
bWUobV9mcmFtZUlEKSwgbV9wYWdlLT5wYWdlSUQoKSk7CiB9CiAgICAgCiBib29sIFdlYkZyYW1l
UHJveHk6OmNhblByb3ZpZGVTb3VyY2UoKSBjb25zdApJbmRleDogU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5LmNwcAkocmV2aXNp
b24gMTU5OTAwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkZ1bGxTY3JlZW5NYW5h
Z2VyUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Niw3ICs0Niw3IEBAIFdlYkZ1bGxTY3Jl
ZW5NYW5hZ2VyUHJveHk6OldlYkZ1bGxTY3JlZW4KICAgICAsIG1faGFzUmVxdWVzdGVkRnVsbFNj
cmVlbihmYWxzZSkKICNlbmRpZgogewotICAgIG1fcGFnZS0+cHJvY2VzcygpLT5hZGRNZXNzYWdl
UmVjZWl2ZXIoTWVzc2FnZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6Om1lc3NhZ2VSZWNl
aXZlck5hbWUoKSwgbV9wYWdlLT5wYWdlSUQoKSwgdGhpcyk7CisgICAgbV9wYWdlLT5wcm9jZXNz
KCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5
OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZS0+cGFnZUlEKCksIHRoaXMpOwogfQogCiBX
ZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5Ojp+V2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eSgpCkBA
IC02MCwzMiArNjAsMzIgQEAgdm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5OjpzZXRXZWJW
aQogCiB2b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6OndpbGxFbnRlckZ1bGxTY3JlZW4o
KQogewotICAgIG1fcGFnZS0+cHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVu
TWFuYWdlcjo6V2lsbEVudGVyRnVsbFNjcmVlbigpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBt
X3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6V2ls
bEVudGVyRnVsbFNjcmVlbigpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKIH0KIAogdm9pZCBXZWJGdWxs
U2NyZWVuTWFuYWdlclByb3h5OjpkaWRFbnRlckZ1bGxTY3JlZW4oKQogewotICAgIG1fcGFnZS0+
cHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6RGlkRW50ZXJG
dWxsU2NyZWVuKCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+cHJvY2VzcygpLnNl
bmQoTWVzc2FnZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyOjpEaWRFbnRlckZ1bGxTY3JlZW4oKSwg
bV9wYWdlLT5wYWdlSUQoKSk7CiB9CiAKIHZvaWQgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6
d2lsbEV4aXRGdWxsU2NyZWVuKCkKIHsKLSAgICBtX3BhZ2UtPnByb2Nlc3MoKS0+c2VuZChNZXNz
YWdlczo6V2ViRnVsbFNjcmVlbk1hbmFnZXI6OldpbGxFeGl0RnVsbFNjcmVlbigpLCBtX3BhZ2Ut
PnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJGdWxs
U2NyZWVuTWFuYWdlcjo6V2lsbEV4aXRGdWxsU2NyZWVuKCksIG1fcGFnZS0+cGFnZUlEKCkpOwog
fQogCiB2b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6OmRpZEV4aXRGdWxsU2NyZWVuKCkK
IHsKLSAgICBtX3BhZ2UtPnByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2ViRnVsbFNjcmVlbk1h
bmFnZXI6OkRpZEV4aXRGdWxsU2NyZWVuKCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFn
ZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyOjpEaWRFeGl0
RnVsbFNjcmVlbigpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKIH0KIAogdm9pZCBXZWJGdWxsU2NyZWVu
TWFuYWdlclByb3h5OjpzZXRBbmltYXRpbmdGdWxsU2NyZWVuKGJvb2wgYW5pbWF0aW5nKQogewot
ICAgIG1fcGFnZS0+cHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdl
cjo6U2V0QW5pbWF0aW5nRnVsbFNjcmVlbihhbmltYXRpbmcpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsK
KyAgICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdl
cjo6U2V0QW5pbWF0aW5nRnVsbFNjcmVlbihhbmltYXRpbmcpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsK
IH0KIAogdm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5OjpyZXF1ZXN0RXhpdEZ1bGxTY3Jl
ZW4oKQogewotICAgIG1fcGFnZS0+cHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJGdWxsU2Ny
ZWVuTWFuYWdlcjo6UmVxdWVzdEV4aXRGdWxsU2NyZWVuKCksIG1fcGFnZS0+cGFnZUlEKCkpOwor
ICAgIG1fcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2Vy
OjpSZXF1ZXN0RXhpdEZ1bGxTY3JlZW4oKSwgbV9wYWdlLT5wYWdlSUQoKSk7CiB9CiAKIHZvaWQg
V2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6c3VwcG9ydHNGdWxsU2NyZWVuKGJvb2wgd2l0aEtl
eWJvYXJkLCBib29sJiBzdXBwb3J0cykKQEAgLTk1LDEyICs5NSwxMiBAQCB2b2lkIFdlYkZ1bGxT
Y3JlZW5NYW5hZ2VyUHJveHk6OnN1cHBvcnRzCiAKIHZvaWQgV2ViRnVsbFNjcmVlbk1hbmFnZXJQ
cm94eTo6c2F2ZVNjcm9sbFBvc2l0aW9uKCkKIHsKLSAgICBtX3BhZ2UtPnByb2Nlc3MoKS0+c2Vu
ZChNZXNzYWdlczo6V2ViRnVsbFNjcmVlbk1hbmFnZXI6OlNhdmVTY3JvbGxQb3NpdGlvbigpLCBt
X3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpX
ZWJGdWxsU2NyZWVuTWFuYWdlcjo6U2F2ZVNjcm9sbFBvc2l0aW9uKCksIG1fcGFnZS0+cGFnZUlE
KCkpOwogfQogCiB2b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6OnJlc3RvcmVTY3JvbGxQ
b3NpdGlvbigpCiB7Ci0gICAgbV9wYWdlLT5wcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6OldlYkZ1
bGxTY3JlZW5NYW5hZ2VyOjpSZXN0b3JlU2Nyb2xsUG9zaXRpb24oKSwgbV9wYWdlLT5wYWdlSUQo
KSk7CisgICAgbV9wYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViRnVsbFNjcmVlbk1h
bmFnZXI6OlJlc3RvcmVTY3JvbGxQb3NpdGlvbigpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
SW5zcGVjdG9yUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJJbnNwZWN0b3JQcm94eS5jcHAJKHJldmlzaW9uIDE1OTkwMCkKKysrIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0
MCw3ICsxNDAsNyBAQCBXZWJJbnNwZWN0b3JQcm94eTo6V2ViSW5zcGVjdG9yUHJveHkoV2ViCiAj
ZW5kaWYKIHsKICAgICBtX2xldmVsID0gV2ViSW5zcGVjdG9yUGFnZUdyb3Vwczo6c2hhcmVkKCku
aW5zcGVjdG9yTGV2ZWwobV9wYWdlLT5wYWdlR3JvdXAoKSk7Ci0gICAgbV9wYWdlLT5wcm9jZXNz
KCktPmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6Om1lc3Nh
Z2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlLT5wYWdlSUQoKSwgdGhpcyk7CisgICAgbV9wYWdlLT5w
cm9jZXNzKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6
bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2UtPnBhZ2VJRCgpLCB0aGlzKTsKIH0KIAogV2Vi
SW5zcGVjdG9yUHJveHk6On5XZWJJbnNwZWN0b3JQcm94eSgpCkBAIC0xNTksNyArMTU5LDcgQEAg
dm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6aW52YWxpZGF0ZSgpCiAgICAgICAgIFdlYkluc3BlY3Rv
clNlcnZlcjo6c2hhcmVkKCkudW5yZWdpc3RlclBhZ2UobV9yZW1vdGVJbnNwZWN0aW9uUGFnZUlk
KTsKICNlbmRpZgogCi0gICAgbV9wYWdlLT5wcm9jZXNzKCktPnJlbW92ZU1lc3NhZ2VSZWNlaXZl
cihNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9w
YWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5wcm9jZXNzKCkucmVtb3ZlTWVzc2FnZVJlY2Vp
dmVyKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBt
X3BhZ2UtPnBhZ2VJRCgpKTsKIAogICAgIG1fcGFnZS0+Y2xvc2UoKTsKIApAQCAtMTg4LDcgKzE4
OCw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmNvbm5lY3QoKQogICAgIG1fc2hvd01lc3Nh
Z2VTZW50ID0gdHJ1ZTsKICAgICBtX2lnbm9yZUZpcnN0QnJpbmdUb0Zyb250ID0gdHJ1ZTsKIAot
ICAgIG1fcGFnZS0+cHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlNob3co
KSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdl
czo6V2ViSW5zcGVjdG9yOjpTaG93KCksIG1fcGFnZS0+cGFnZUlEKCkpOwogfQogCiB2b2lkIFdl
Ykluc3BlY3RvclByb3h5OjpzaG93KCkKQEAgLTIyMiw3ICsyMjIsNyBAQCB2b2lkIFdlYkluc3Bl
Y3RvclByb3h5OjpjbG9zZSgpCiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIG1fcGFnZS0+cHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OkNsb3Nl
KCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2Fn
ZXM6OldlYkluc3BlY3Rvcjo6Q2xvc2UoKSwgbV9wYWdlLT5wYWdlSUQoKSk7CiAKICAgICBkaWRD
bG9zZSgpOwogfQpAQCAtMjMyLDcgKzIzMiw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnNo
b3dDb25zb2xlKCkKICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9w
YWdlLT5wcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U2hvd0NvbnNvbGUo
KSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdl
czo6V2ViSW5zcGVjdG9yOjpTaG93Q29uc29sZSgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKIH0KIAog
dm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6c2hvd1Jlc291cmNlcygpCkBAIC0yNDAsNyArMjQwLDcg
QEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6c2hvd1Jlc291cmNlcygpCiAgICAgaWYgKCFtX3Bh
Z2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcGFnZS0+cHJvY2VzcygpLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJJbnNwZWN0b3I6OlNob3dSZXNvdXJjZXMoKSwgbV9wYWdlLT5wYWdlSUQoKSk7Cisg
ICAgbV9wYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTaG93UmVz
b3VyY2VzKCksIG1fcGFnZS0+cGFnZUlEKCkpOwogfQogCiB2b2lkIFdlYkluc3BlY3RvclByb3h5
OjpzaG93TWFpblJlc291cmNlRm9yRnJhbWUoV2ViRnJhbWVQcm94eSogZnJhbWUpCkBAIC0yNDgs
NyArMjQ4LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6c2hvd01haW5SZXNvdXJjZQogICAg
IGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3BhZ2UtPnByb2Nlc3MoKS0+
c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTaG93TWFpblJlc291cmNlRm9yRnJhbWUoZnJh
bWUtPmZyYW1lSUQoKSksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+cHJvY2Vzcygp
LnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U2hvd01haW5SZXNvdXJjZUZvckZyYW1lKGZy
YW1lLT5mcmFtZUlEKCkpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0
b3JQcm94eTo6YXR0YWNoQm90dG9tKCkKQEAgLTI3NiwxMSArMjc2LDExIEBAIHZvaWQgV2ViSW5z
cGVjdG9yUHJveHk6OmF0dGFjaChBdHRhY2htZW4KIAogICAgIHN3aXRjaCAobV9hdHRhY2htZW50
U2lkZSkgewogICAgIGNhc2UgQXR0YWNobWVudFNpZGVCb3R0b206Ci0gICAgICAgIG1fcGFnZS0+
cHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OkF0dGFjaGVkQm90dG9tKCks
IG1fcGFnZS0+cGFnZUlEKCkpOworICAgICAgICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3Nh
Z2VzOjpXZWJJbnNwZWN0b3I6OkF0dGFjaGVkQm90dG9tKCksIG1fcGFnZS0+cGFnZUlEKCkpOwog
ICAgICAgICBicmVhazsKIAogICAgIGNhc2UgQXR0YWNobWVudFNpZGVSaWdodDoKLSAgICAgICAg
bV9wYWdlLT5wcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6QXR0YWNoZWRS
aWdodCgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgbV9wYWdlLT5wcm9jZXNzKCkuc2Vu
ZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpBdHRhY2hlZFJpZ2h0KCksIG1fcGFnZS0+cGFnZUlE
KCkpOwogICAgICAgICBicmVhazsKICAgICB9CiAKQEAgLTI5Nyw3ICsyOTcsNyBAQCB2b2lkIFdl
Ykluc3BlY3RvclByb3h5OjpkZXRhY2goKQogICAgIGlmIChtX2lzVmlzaWJsZSkKICAgICAgICAg
aW5zcGVjdG9yUGFnZUdyb3VwKCktPnByZWZlcmVuY2VzKCktPnNldEluc3BlY3RvclN0YXJ0c0F0
dGFjaGVkKGZhbHNlKTsKIAotICAgIG1fcGFnZS0+cHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJJbnNwZWN0b3I6OkRldGFjaGVkKCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+
cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6RGV0YWNoZWQoKSwgbV9wYWdl
LT5wYWdlSUQoKSk7CiAKICAgICBwbGF0Zm9ybURldGFjaCgpOwogfQpAQCAtMzIwLDkgKzMyMCw5
IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnRvZ2dsZUphdmFTY3JpcHQKICAgICAgICAgcmV0
dXJuOwogCiAgICAgaWYgKG1faXNEZWJ1Z2dpbmdKYXZhU2NyaXB0KQotICAgICAgICBtX3BhZ2Ut
PnByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTdG9wSmF2YVNjcmlwdERl
YnVnZ2luZygpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgbV9wYWdlLT5wcm9jZXNzKCku
c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTdG9wSmF2YVNjcmlwdERlYnVnZ2luZygpLCBt
X3BhZ2UtPnBhZ2VJRCgpKTsKICAgICBlbHNlCi0gICAgICAgIG1fcGFnZS0+cHJvY2VzcygpLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlN0YXJ0SmF2YVNjcmlwdERlYnVnZ2luZygpLCBt
X3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgbV9wYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdl
czo6V2ViSW5zcGVjdG9yOjpTdGFydEphdmFTY3JpcHREZWJ1Z2dpbmcoKSwgbV9wYWdlLT5wYWdl
SUQoKSk7CiAKICAgICAvLyBGSVhNRTogaGF2ZSB0aGUgV2ViUHJvY2VzcyBub3RpZnkgdXMgb24g
c3RhdGUgY2hhbmdlcy4KICAgICBtX2lzRGVidWdnaW5nSmF2YVNjcmlwdCA9ICFtX2lzRGVidWdn
aW5nSmF2YVNjcmlwdDsKQEAgLTMzNCw5ICszMzQsOSBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5
Ojp0b2dnbGVKYXZhU2NyaXB0CiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtX2lzUHJvZmls
aW5nSmF2YVNjcmlwdCkKLSAgICAgICAgbV9wYWdlLT5wcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6
OldlYkluc3BlY3Rvcjo6U3RvcEphdmFTY3JpcHRQcm9maWxpbmcoKSwgbV9wYWdlLT5wYWdlSUQo
KSk7CisgICAgICAgIG1fcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rv
cjo6U3RvcEphdmFTY3JpcHRQcm9maWxpbmcoKSwgbV9wYWdlLT5wYWdlSUQoKSk7CiAgICAgZWxz
ZQotICAgICAgICBtX3BhZ2UtPnByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9y
OjpTdGFydEphdmFTY3JpcHRQcm9maWxpbmcoKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgICAg
IG1fcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U3RhcnRKYXZh
U2NyaXB0UHJvZmlsaW5nKCksIG1fcGFnZS0+cGFnZUlEKCkpOwogCiAgICAgLy8gRklYTUU6IGhh
dmUgdGhlIFdlYlByb2Nlc3Mgbm90aWZ5IHVzIG9uIHN0YXRlIGNoYW5nZXMuCiAgICAgbV9pc1By
b2ZpbGluZ0phdmFTY3JpcHQgPSAhbV9pc1Byb2ZpbGluZ0phdmFTY3JpcHQ7CkBAIC0zNDgsOSAr
MzQ4LDkgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6dG9nZ2xlUGFnZVByb2ZpbAogICAgICAg
ICByZXR1cm47CiAKICAgICBpZiAobV9pc1Byb2ZpbGluZ1BhZ2UpCi0gICAgICAgIG1fcGFnZS0+
cHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlN0b3BQYWdlUHJvZmlsaW5n
KCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgICAgICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1l
c3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlN0b3BQYWdlUHJvZmlsaW5nKCksIG1fcGFnZS0+cGFnZUlE
KCkpOwogICAgIGVsc2UKLSAgICAgICAgbV9wYWdlLT5wcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6
OldlYkluc3BlY3Rvcjo6U3RhcnRQYWdlUHJvZmlsaW5nKCksIG1fcGFnZS0+cGFnZUlEKCkpOwor
ICAgICAgICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlN0
YXJ0UGFnZVByb2ZpbGluZygpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKIAogICAgIC8vIEZJWE1FOiBo
YXZlIHRoZSBXZWJQcm9jZXNzIG5vdGlmeSB1cyBvbiBzdGF0ZSBjaGFuZ2VzLgogICAgIG1faXNQ
cm9maWxpbmdQYWdlID0gIW1faXNQcm9maWxpbmdQYWdlOwpAQCAtNDA1LDE3ICs0MDUsMTcgQEAg
dm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6ZW5hYmxlUmVtb3RlSW5zcAogCiB2b2lkIFdlYkluc3Bl
Y3RvclByb3h5OjpyZW1vdGVGcm9udGVuZENvbm5lY3RlZCgpCiB7Ci0gICAgbV9wYWdlLT5wcm9j
ZXNzKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6UmVtb3RlRnJvbnRlbmRDb25uZWN0
ZWQoKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNz
YWdlczo6V2ViSW5zcGVjdG9yOjpSZW1vdGVGcm9udGVuZENvbm5lY3RlZCgpLCBtX3BhZ2UtPnBh
Z2VJRCgpKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6cmVtb3RlRnJvbnRlbmREaXNj
b25uZWN0ZWQoKQogewotICAgIG1fcGFnZS0+cHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJ
bnNwZWN0b3I6OlJlbW90ZUZyb250ZW5kRGlzY29ubmVjdGVkKCksIG1fcGFnZS0+cGFnZUlEKCkp
OworICAgIG1fcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6UmVt
b3RlRnJvbnRlbmREaXNjb25uZWN0ZWQoKSwgbV9wYWdlLT5wYWdlSUQoKSk7CiB9CiAKIHZvaWQg
V2ViSW5zcGVjdG9yUHJveHk6OmRpc3BhdGNoTWVzc2FnZUZyb21SZW1vdGVGcm9udGVuZChjb25z
dCBTdHJpbmcmIG1lc3NhZ2UpCiB7Ci0gICAgbV9wYWdlLT5wcm9jZXNzKCktPnNlbmQoTWVzc2Fn
ZXM6OldlYkluc3BlY3Rvcjo6RGlzcGF0Y2hNZXNzYWdlRnJvbVJlbW90ZUZyb250ZW5kKG1lc3Nh
Z2UpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3Nh
Z2VzOjpXZWJJbnNwZWN0b3I6OkRpc3BhdGNoTWVzc2FnZUZyb21SZW1vdGVGcm9udGVuZChtZXNz
YWdlKSwgbV9wYWdlLT5wYWdlSUQoKSk7CiB9CiAjZW5kaWYKIApAQCAtNDU5LDE3ICs0NTksMTcg
QEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6Y3JlYXRlSW5zcGVjdG9yUAogICAgICAgICBzd2l0
Y2ggKG1fYXR0YWNobWVudFNpZGUpIHsKICAgICAgICAgY2FzZSBBdHRhY2htZW50U2lkZUJvdHRv
bToKICAgICAgICAgICAgIHVybC5hcHBlbmQoImJvdHRvbSIpOwotICAgICAgICAgICAgbV9wYWdl
LT5wcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6QXR0YWNoZWRCb3R0b20o
KSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgICAgICAgICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5k
KE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OkF0dGFjaGVkQm90dG9tKCksIG1fcGFnZS0+cGFnZUlE
KCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQXR0YWNobWVudFNpZGVSaWdo
dDoKICAgICAgICAgICAgIHVybC5hcHBlbmQoInJpZ2h0Iik7Ci0gICAgICAgICAgICBtX3BhZ2Ut
PnByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpBdHRhY2hlZFJpZ2h0KCks
IG1fcGFnZS0+cGFnZUlEKCkpOworICAgICAgICAgICAgbV9wYWdlLT5wcm9jZXNzKCkuc2VuZChN
ZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpBdHRhY2hlZFJpZ2h0KCksIG1fcGFnZS0+cGFnZUlEKCkp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9IGVsc2UKICAgICAgICAgdXJs
LmFwcGVuZCgidW5kb2NrZWQiKTsKIAotICAgIG1fcGFnZS0+cHJvY2VzcygpLT5hc3N1bWVSZWFk
QWNjZXNzVG9CYXNlVVJMKGluc3BlY3RvckJhc2VVUkwoKSk7CisgICAgbV9wYWdlLT5wcm9jZXNz
KCkuYXNzdW1lUmVhZEFjY2Vzc1RvQmFzZVVSTChpbnNwZWN0b3JCYXNlVVJMKCkpOwogCiAgICAg
aW5zcGVjdG9yUGFnZS0+bG9hZFVSTCh1cmwpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUGFnZUdyb3VwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VHcm91cC5oCShyZXZpc2lvbiAxNTk5MDApCisrKyBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZUdyb3VwLmgJKHdvcmtpbmcgY29weSkKQEAgLTcyLDIxICs3MiwxOSBA
QCBwcml2YXRlOgogICAgIG11dGFibGUgUmVmUHRyPFdlYlByZWZlcmVuY2VzPiBtX3ByZWZlcmVu
Y2VzOwogICAgIEhhc2hTZXQ8V2ViUGFnZVByb3h5Kj4gbV9wYWdlczsKIH07Ci0gICAgCisKIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+CiB2b2lkIFdlYlBhZ2VHcm91cDo6c2VuZFRvQWxsUHJvY2Vzc2Vz
SW5Hcm91cChjb25zdCBUJiBtZXNzYWdlLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKQogewogICAg
IEhhc2hTZXQ8V2ViUHJvY2Vzc1Byb3h5Kj4gcHJvY2Vzc2VzU2VlbjsKIAogICAgIGZvciAoV2Vi
UGFnZVByb3h5KiB3ZWJQYWdlUHJveHkgOiBtX3BhZ2VzKSB7Ci0gICAgICAgIFdlYlByb2Nlc3NQ
cm94eSogd2ViUHJvY2Vzc1Byb3h5ID0gd2ViUGFnZVByb3h5LT5wcm9jZXNzKCk7Ci0gICAgICAg
IEFTU0VSVCh3ZWJQcm9jZXNzUHJveHkpOwotCi0gICAgICAgIGlmICghcHJvY2Vzc2VzU2Vlbi5h
ZGQod2ViUHJvY2Vzc1Byb3h5KS5pc05ld0VudHJ5KQorICAgICAgICBXZWJQcm9jZXNzUHJveHkm
IHdlYlByb2Nlc3NQcm94eSA9IHdlYlBhZ2VQcm94eS0+cHJvY2VzcygpOworICAgICAgICBpZiAo
IXByb2Nlc3Nlc1NlZW4uYWRkKCZ3ZWJQcm9jZXNzUHJveHkpLmlzTmV3RW50cnkpCiAgICAgICAg
ICAgICBjb250aW51ZTsKIAotICAgICAgICBpZiAod2ViUHJvY2Vzc1Byb3h5LT5jYW5TZW5kTWVz
c2FnZSgpKQotICAgICAgICAgICAgd2ViUHJvY2Vzc1Byb3h5LT5zZW5kKFQobWVzc2FnZSksIGRl
c3RpbmF0aW9uSUQpOworICAgICAgICBpZiAod2ViUHJvY2Vzc1Byb3h5LmNhblNlbmRNZXNzYWdl
KCkpCisgICAgICAgICAgICB3ZWJQcm9jZXNzUHJveHkuc2VuZChUKG1lc3NhZ2UpLCBkZXN0aW5h
dGlvbklEKTsKICAgICB9CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCShyZXZpc2lvbiAxNTk5MDApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjIyLDEyICsyMjIsMTIgQEAg
c3RhdGljIGNvbnN0IGNoYXIqIHdlYktleWJvYXJkRXZlbnRUeXBlUwogfQogI2VuZGlmIC8vICFM
T0dfRElTQUJMRUQKIAotUGFzc1JlZlB0cjxXZWJQYWdlUHJveHk+IFdlYlBhZ2VQcm94eTo6Y3Jl
YXRlKFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFBhc3NSZWZQdHI8V2ViUHJvY2Vzc1Byb3h5PiBw
cm9jZXNzLCBXZWJQYWdlR3JvdXAmIHBhZ2VHcm91cCwgdWludDY0X3QgcGFnZUlEKQorUGFzc1Jl
ZlB0cjxXZWJQYWdlUHJveHk+IFdlYlBhZ2VQcm94eTo6Y3JlYXRlKFBhZ2VDbGllbnQmIHBhZ2VD
bGllbnQsIFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcywgV2ViUGFnZUdyb3VwJiBwYWdlR3JvdXAs
IHVpbnQ2NF90IHBhZ2VJRCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYlBhZ2VQcm94
eShwYWdlQ2xpZW50LCBwcm9jZXNzLCBwYWdlR3JvdXAsIHBhZ2VJRCkpOwogfQogCi1XZWJQYWdl
UHJveHk6OldlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBQYXNzUmVmUHRyPFdl
YlByb2Nlc3NQcm94eT4gcHJvY2VzcywgV2ViUGFnZUdyb3VwJiBwYWdlR3JvdXAsIHVpbnQ2NF90
IHBhZ2VJRCkKK1dlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmIHBhZ2VDbGll
bnQsIFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcywgV2ViUGFnZUdyb3VwJiBwYWdlR3JvdXAsIHVp
bnQ2NF90IHBhZ2VJRCkKICAgICA6IG1fcGFnZUNsaWVudChwYWdlQ2xpZW50KQogICAgICwgbV9w
cm9jZXNzKHByb2Nlc3MpCiAgICAgLCBtX3BhZ2VHcm91cChwYWdlR3JvdXApCkBAIC0zNDUsNyAr
MzQ1LDcgQEAgV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYgcAogICAgIG1f
cHJvY2Vzcy0+YWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Om1lc3Nh
Z2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlSUQsIHRoaXMpOwogCiAgICAgLy8gRklYTUU6IElmIHdl
IGV2ZXIgZXhwb3NlIHRoZSBzZXNzaW9uIHN0b3JhZ2Ugc2l6ZSBhcyBhIHByZWZlcmVuY2UsIHdl
IG5lZWQgdG8gcGFzcyBpdCBoZXJlLgotICAgIG1fcHJvY2Vzcy0+Y29udGV4dCgpLT5zdG9yYWdl
TWFuYWdlcigpLmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKG1fcGFnZUlELCBtX3Byb2Nl
c3MtPmlzVmFsaWQoKSA/IG1fcHJvY2Vzcy0+Y29ubmVjdGlvbigpIDogMCwgc3RkOjpudW1lcmlj
X2xpbWl0czx1bnNpZ25lZD46Om1heCgpKTsKKyAgICBtX3Byb2Nlc3MtPmNvbnRleHQoKS5zdG9y
YWdlTWFuYWdlcigpLmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKG1fcGFnZUlELCBtX3By
b2Nlc3MtPmlzVmFsaWQoKSA/IG1fcHJvY2Vzcy0+Y29ubmVjdGlvbigpIDogMCwgc3RkOjpudW1l
cmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKTsKIH0KIAogV2ViUGFnZVByb3h5Ojp+V2ViUGFn
ZVByb3h5KCkKQEAgLTM2NSwxMSArMzY1LDYgQEAgV2ViUGFnZVByb3h5Ojp+V2ViUGFnZVByb3h5
KCkKICNlbmRpZgogfQogCi1XZWJQcm9jZXNzUHJveHkqIFdlYlBhZ2VQcm94eTo6cHJvY2Vzcygp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fcHJvY2Vzcy5nZXQoKTsKLX0KLQogUGxhdGZvcm1Qcm9j
ZXNzSWRlbnRpZmllciBXZWJQYWdlUHJveHk6OnByb2Nlc3NJZGVudGlmaWVyKCkgY29uc3QKIHsK
ICAgICBpZiAobV9pc0Nsb3NlZCkKQEAgLTQ2Niw3ICs0NjEsNiBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6aW5pdGlhbGl6ZUNvbnRleHRNZW51CiB2b2lkIFdlYlBhZ2VQcm94eTo6cmVhdHRhY2hUb1dl
YlByb2Nlc3MoKQogewogICAgIEFTU0VSVCghaXNWYWxpZCgpKTsKLSAgICBBU1NFUlQobV9wcm9j
ZXNzKTsKICAgICBBU1NFUlQoIW1fcHJvY2Vzcy0+aXNWYWxpZCgpKTsKICAgICBBU1NFUlQoIW1f
cHJvY2Vzcy0+aXNMYXVuY2hpbmcoKSk7CiAKQEAgLTQ3NCwxMCArNDY4LDEwIEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpyZWF0dGFjaFRvV2ViUHJvY2VzcygKIAogICAgIG1faXNWYWxpZCA9IHRydWU7
CiAKLSAgICBpZiAobV9wcm9jZXNzLT5jb250ZXh0KCktPnByb2Nlc3NNb2RlbCgpID09IFByb2Nl
c3NNb2RlbFNoYXJlZFNlY29uZGFyeVByb2Nlc3MpCi0gICAgICAgIG1fcHJvY2VzcyA9IG1fcHJv
Y2Vzcy0+Y29udGV4dCgpLT5lbnN1cmVTaGFyZWRXZWJQcm9jZXNzKCk7CisgICAgaWYgKG1fcHJv
Y2Vzcy0+Y29udGV4dCgpLnByb2Nlc3NNb2RlbCgpID09IFByb2Nlc3NNb2RlbFNoYXJlZFNlY29u
ZGFyeVByb2Nlc3MpCisgICAgICAgIG1fcHJvY2VzcyA9IG1fcHJvY2Vzcy0+Y29udGV4dCgpLmVu
c3VyZVNoYXJlZFdlYlByb2Nlc3MoKTsKICAgICBlbHNlCi0gICAgICAgIG1fcHJvY2VzcyA9IG1f
cHJvY2Vzcy0+Y29udGV4dCgpLT5jcmVhdGVOZXdXZWJQcm9jZXNzUmVzcGVjdGluZ1Byb2Nlc3ND
b3VudExpbWl0KCk7CisgICAgICAgIG1fcHJvY2VzcyA9IG1fcHJvY2Vzcy0+Y29udGV4dCgpLmNy
ZWF0ZU5ld1dlYlByb2Nlc3NSZXNwZWN0aW5nUHJvY2Vzc0NvdW50TGltaXQoKTsKICAgICBtX3By
b2Nlc3MtPmFkZEV4aXN0aW5nV2ViUGFnZSh0aGlzLCBtX3BhZ2VJRCk7CiAgICAgbV9wcm9jZXNz
LT5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6bWVzc2FnZVJlY2Vp
dmVyTmFtZSgpLCBtX3BhZ2VJRCwgdGhpcyk7CiAKQEAgLTU3Miw4ICs1NjYsOCBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6Y2xvc2UoKQogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6Q2xvc2UoKSwgbV9wYWdlSUQpOwogICAgIG1fcHJvY2Vzcy0+cmVtb3ZlV2ViUGFnZShtX3Bh
Z2VJRCk7CiAgICAgbV9wcm9jZXNzLT5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2VJRCk7Ci0gICAgbV9wcm9j
ZXNzLT5jb250ZXh0KCktPnN0b3JhZ2VNYW5hZ2VyKCkuZGVzdHJveVNlc3Npb25TdG9yYWdlTmFt
ZXNwYWNlKG1fcGFnZUlEKTsKLSAgICBtX3Byb2Nlc3MtPmNvbnRleHQoKS0+c3VwcGxlbWVudDxX
ZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk+KCktPmNsZWFyTm90aWZpY2F0aW9ucyh0aGlzKTsK
KyAgICBtX3Byb2Nlc3MtPmNvbnRleHQoKS5zdG9yYWdlTWFuYWdlcigpLmRlc3Ryb3lTZXNzaW9u
U3RvcmFnZU5hbWVzcGFjZShtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5jb250ZXh0KCkuc3Vw
cGxlbWVudDxXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk+KCktPmNsZWFyTm90aWZpY2F0aW9u
cyh0aGlzKTsKIH0KIAogYm9vbCBXZWJQYWdlUHJveHk6OnRyeUNsb3NlKCkKQEAgLTgyOCw3ICs4
MjIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2hvdWxkR29Ub0JhY2tGb3J3YXJkCiB2b2lkIFdl
YlBhZ2VQcm94eTo6d2lsbEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtKHVpbnQ2NF90IGl0ZW1JRCwg
Q29yZUlQQzo6TWVzc2FnZURlY29kZXImIGRlY29kZXIpCiB7CiAgICAgUmVmUHRyPEFQSTo6T2Jq
ZWN0PiB1c2VyRGF0YTsKLSAgICBXZWJDb250ZXh0VXNlck1lc3NhZ2VEZWNvZGVyIG1lc3NhZ2VE
ZWNvZGVyKHVzZXJEYXRhLCBtX3Byb2Nlc3MuZ2V0KCkpOworICAgIFdlYkNvbnRleHRVc2VyTWVz
c2FnZURlY29kZXIgbWVzc2FnZURlY29kZXIodXNlckRhdGEsICZtX3Byb2Nlc3MuZ2V0KCkpOwog
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUobWVzc2FnZURlY29kZXIpKQogICAgICAgICByZXR1cm47
CiAKQEAgLTgzNiwxNCArODMwLDE0IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp3aWxsR29Ub0JhY2tG
b3J3YXJkTGkKICAgICAgICAgbV9sb2FkZXJDbGllbnQud2lsbEdvVG9CYWNrRm9yd2FyZExpc3RJ
dGVtKHRoaXMsIGl0ZW0sIHVzZXJEYXRhLmdldCgpKTsKIH0KIAotYm9vbCBXZWJQYWdlUHJveHk6
OmNhblNob3dNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKSBjb25zdAorYm9vbCBXZWJQ
YWdlUHJveHk6OmNhblNob3dNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogewogICAg
IGlmIChNSU1FVHlwZVJlZ2lzdHJ5OjpjYW5TaG93TUlNRVR5cGUobWltZVR5cGUpKQogICAgICAg
ICByZXR1cm4gdHJ1ZTsKIAogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogICAgIFN0
cmluZyBuZXdNaW1lVHlwZSA9IG1pbWVUeXBlOwotICAgIFBsdWdpbk1vZHVsZUluZm8gcGx1Z2lu
ID0gbV9wcm9jZXNzLT5jb250ZXh0KCktPnBsdWdpbkluZm9TdG9yZSgpLmZpbmRQbHVnaW4obmV3
TWltZVR5cGUsIFVSTCgpKTsKKyAgICBQbHVnaW5Nb2R1bGVJbmZvIHBsdWdpbiA9IG1fcHJvY2Vz
cy0+Y29udGV4dCgpLnBsdWdpbkluZm9TdG9yZSgpLmZpbmRQbHVnaW4obmV3TWltZVR5cGUsIFVS
TCgpKTsKICAgICBpZiAoIXBsdWdpbi5wYXRoLmlzTnVsbCgpICYmIG1fcGFnZUdyb3VwLT5wcmVm
ZXJlbmNlcygpLT5wbHVnaW5zRW5hYmxlZCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICNlbmRp
ZiAvLyBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKQEAgLTEwNzQsNyArMTA2OCw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5Ojpjb21taXRQYWdlVHJhbnNpdGlvblYKICAgICBpZiAoIWlzVmFsaWQo
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpDb21taXRQYWdlVHJhbnNpdGlvblZpZXdwb3J0KCksIG1fcGFnZUlEKTsKKyAgICBwcm9j
ZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q29tbWl0UGFnZVRyYW5zaXRpb25WaWV3cG9y
dCgpLCBtX3BhZ2VJRCk7CiB9CiAjZW5kaWYKIApAQCAtMTMxOSw3ICsxMzEzLDcgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmZpbmRQbHVnaW4oY29uc3QgU3RyaQogICAgIHBsdWdpbkxvYWRQb2xpY3kg
PSBQbHVnaW5Nb2R1bGVMb2FkTm9ybWFsbHk7CiAKICAgICBQbHVnaW5EYXRhOjpBbGxvd2VkUGx1
Z2luVHlwZXMgYWxsb3dlZFBsdWdpblR5cGVzID0gYWxsb3dPbmx5QXBwbGljYXRpb25QbHVnaW5z
ID8gUGx1Z2luRGF0YTo6T25seUFwcGxpY2F0aW9uUGx1Z2lucyA6IFBsdWdpbkRhdGE6OkFsbFBs
dWdpbnM7Ci0gICAgUGx1Z2luTW9kdWxlSW5mbyBwbHVnaW4gPSBtX3Byb2Nlc3MtPmNvbnRleHQo
KS0+cGx1Z2luSW5mb1N0b3JlKCkuZmluZFBsdWdpbihuZXdNaW1lVHlwZSwgVVJMKFVSTCgpLCB1
cmxTdHJpbmcpLCBhbGxvd2VkUGx1Z2luVHlwZXMpOworICAgIFBsdWdpbk1vZHVsZUluZm8gcGx1
Z2luID0gbV9wcm9jZXNzLT5jb250ZXh0KCkucGx1Z2luSW5mb1N0b3JlKCkuZmluZFBsdWdpbihu
ZXdNaW1lVHlwZSwgVVJMKFVSTCgpLCB1cmxTdHJpbmcpLCBhbGxvd2VkUGx1Z2luVHlwZXMpOwog
ICAgIGlmICghcGx1Z2luLnBhdGgpIHsKICAgICAgICAgcGx1Z2luUHJvY2Vzc1Rva2VuID0gMDsK
ICAgICAgICAgcmV0dXJuOwpAQCAtMTQxNCw3ICsxNDA4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OnJlY2VpdmVkUG9saWN5RGVjaXNpbwogICAgIHVpbnQ2NF90IGRvd25sb2FkSUQgPSAwOwogICAg
IGlmIChhY3Rpb24gPT0gUG9saWN5RG93bmxvYWQpIHsKICAgICAgICAgLy8gQ3JlYXRlIGEgZG93
bmxvYWQgcHJveHkuCi0gICAgICAgIERvd25sb2FkUHJveHkqIGRvd25sb2FkID0gbV9wcm9jZXNz
LT5jb250ZXh0KCktPmNyZWF0ZURvd25sb2FkUHJveHkoKTsKKyAgICAgICAgRG93bmxvYWRQcm94
eSogZG93bmxvYWQgPSBtX3Byb2Nlc3MtPmNvbnRleHQoKS5jcmVhdGVEb3dubG9hZFByb3h5KCk7
CiAgICAgICAgIGRvd25sb2FkSUQgPSBkb3dubG9hZC0+ZG93bmxvYWRJRCgpOwogI2lmIFBMQVRG
T1JNKEVGTCkgfHwgUExBVEZPUk0oR1RLKQogICAgICAgICAvLyBPdXIgZGVzaWduIGRvZXMgbm90
IHN1cHBwb3J0IGRvd25sb2FkcyB3aXRob3V0IGEgV2ViUGFnZS4KQEAgLTIwODEsNyArMjA3NSw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRTdGFydFByb3Zpc2lvbmFsTG8KICAgICBtX3BhZ2VM
b2FkU3RhdGUuY2xlYXJQZW5kaW5nQVBJUmVxdWVzdFVSTCgpOwogCiAgICAgUmVmUHRyPEFQSTo6
T2JqZWN0PiB1c2VyRGF0YTsKLSAgICBXZWJDb250ZXh0VXNlck1lc3NhZ2VEZWNvZGVyIG1lc3Nh
Z2VEZWNvZGVyKHVzZXJEYXRhLCBtX3Byb2Nlc3MuZ2V0KCkpOworICAgIFdlYkNvbnRleHRVc2Vy
TWVzc2FnZURlY29kZXIgbWVzc2FnZURlY29kZXIodXNlckRhdGEsICZtX3Byb2Nlc3MuZ2V0KCkp
OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUobWVzc2FnZURlY29kZXIpKQogICAgICAgICByZXR1
cm47CiAKQEAgLTIxMDEsNyArMjA5NSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRTdGFydFBy
b3Zpc2lvbmFsTG8KIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RG
b3JQcm92aXNpb25hbExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcm
IHVybCwgQ29yZUlQQzo6TWVzc2FnZURlY29kZXImIGRlY29kZXIpCiB7CiAgICAgUmVmUHRyPEFQ
STo6T2JqZWN0PiB1c2VyRGF0YTsKLSAgICBXZWJDb250ZXh0VXNlck1lc3NhZ2VEZWNvZGVyIG1l
c3NhZ2VEZWNvZGVyKHVzZXJEYXRhLCBtX3Byb2Nlc3MuZ2V0KCkpOworICAgIFdlYkNvbnRleHRV
c2VyTWVzc2FnZURlY29kZXIgbWVzc2FnZURlY29kZXIodXNlckRhdGEsICZtX3Byb2Nlc3MuZ2V0
KCkpOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUobWVzc2FnZURlY29kZXIpKQogICAgICAgICBy
ZXR1cm47CiAKQEAgLTIxMjAsNyArMjExNCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRSZWNl
aXZlU2VydmVyUmVkaXIKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2Fk
Rm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IsIENv
cmVJUEM6Ok1lc3NhZ2VEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIFJlZlB0cjxBUEk6Ok9iamVj
dD4gdXNlckRhdGE7Ci0gICAgV2ViQ29udGV4dFVzZXJNZXNzYWdlRGVjb2RlciBtZXNzYWdlRGVj
b2Rlcih1c2VyRGF0YSwgbV9wcm9jZXNzLmdldCgpKTsKKyAgICBXZWJDb250ZXh0VXNlck1lc3Nh
Z2VEZWNvZGVyIG1lc3NhZ2VEZWNvZGVyKHVzZXJEYXRhLCAmbV9wcm9jZXNzLmdldCgpKTsKICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKG1lc3NhZ2VEZWNvZGVyKSkKICAgICAgICAgcmV0dXJuOwog
CkBAIC0yMTUxLDcgKzIxNDUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y2xlYXJMb2FkRGVwZW5k
ZW50Q2FsCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ29tbWl0TG9hZEZvckZyYW1lKHVpbnQ2NF90
IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIHVpbnQzMl90IG9wYXF1ZUZyYW1lTG9h
ZFR5cGUsIGNvbnN0IENlcnRpZmljYXRlSW5mbyYgY2VydGlmaWNhdGVJbmZvLCBDb3JlSVBDOjpN
ZXNzYWdlRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBSZWZQdHI8QVBJOjpPYmplY3Q+IHVzZXJE
YXRhOwotICAgIFdlYkNvbnRleHRVc2VyTWVzc2FnZURlY29kZXIgbWVzc2FnZURlY29kZXIodXNl
ckRhdGEsIG1fcHJvY2Vzcy5nZXQoKSk7CisgICAgV2ViQ29udGV4dFVzZXJNZXNzYWdlRGVjb2Rl
ciBtZXNzYWdlRGVjb2Rlcih1c2VyRGF0YSwgJm1fcHJvY2Vzcy5nZXQoKSk7CiAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShtZXNzYWdlRGVjb2RlcikpCiAgICAgICAgIHJldHVybjsKIApAQCAtMjE4
OCw3ICsyMTgyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZENvbW1pdExvYWRGb3JGcmFtZQog
dm9pZCBXZWJQYWdlUHJveHk6OmRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lKHVpbnQ2NF90
IGZyYW1lSUQsIENvcmVJUEM6Ok1lc3NhZ2VEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIFJlZlB0
cjxBUEk6Ok9iamVjdD4gdXNlckRhdGE7Ci0gICAgV2ViQ29udGV4dFVzZXJNZXNzYWdlRGVjb2Rl
ciBtZXNzYWdlRGVjb2Rlcih1c2VyRGF0YSwgbV9wcm9jZXNzLmdldCgpKTsKKyAgICBXZWJDb250
ZXh0VXNlck1lc3NhZ2VEZWNvZGVyIG1lc3NhZ2VEZWNvZGVyKHVzZXJEYXRhLCAmbV9wcm9jZXNz
LmdldCgpKTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG1lc3NhZ2VEZWNvZGVyKSkKICAgICAg
ICAgcmV0dXJuOwogCkBAIC0yMjAxLDcgKzIxOTUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlk
RmluaXNoRG9jdW1lbnRMb2FkCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmluaXNoTG9hZEZvckZy
YW1lKHVpbnQ2NF90IGZyYW1lSUQsIENvcmVJUEM6Ok1lc3NhZ2VEZWNvZGVyJiBkZWNvZGVyKQog
ewogICAgIFJlZlB0cjxBUEk6Ok9iamVjdD4gdXNlckRhdGE7Ci0gICAgV2ViQ29udGV4dFVzZXJN
ZXNzYWdlRGVjb2RlciBtZXNzYWdlRGVjb2Rlcih1c2VyRGF0YSwgbV9wcm9jZXNzLmdldCgpKTsK
KyAgICBXZWJDb250ZXh0VXNlck1lc3NhZ2VEZWNvZGVyIG1lc3NhZ2VEZWNvZGVyKHVzZXJEYXRh
LCAmbV9wcm9jZXNzLmdldCgpKTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG1lc3NhZ2VEZWNv
ZGVyKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0yMjE5LDcgKzIyMTMsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6ZGlkRmluaXNoTG9hZEZvckZyYW1lCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmFp
bExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJv
ciwgQ29yZUlQQzo6TWVzc2FnZURlY29kZXImIGRlY29kZXIpCiB7CiAgICAgUmVmUHRyPEFQSTo6
T2JqZWN0PiB1c2VyRGF0YTsKLSAgICBXZWJDb250ZXh0VXNlck1lc3NhZ2VEZWNvZGVyIG1lc3Nh
Z2VEZWNvZGVyKHVzZXJEYXRhLCBtX3Byb2Nlc3MuZ2V0KCkpOworICAgIFdlYkNvbnRleHRVc2Vy
TWVzc2FnZURlY29kZXIgbWVzc2FnZURlY29kZXIodXNlckRhdGEsICZtX3Byb2Nlc3MuZ2V0KCkp
OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUobWVzc2FnZURlY29kZXIpKQogICAgICAgICByZXR1
cm47CiAKQEAgLTIyMzksNyArMjIzMyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGYWlsTG9h
ZEZvckZyYW1lKHUKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9u
Rm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDMyX3Qgb3BhcXVlU2FtZURvY3VtZW50TmF2
aWdhdGlvblR5cGUsIGNvbnN0IFN0cmluZyYgdXJsLCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYg
ZGVjb2RlcikKIHsKICAgICBSZWZQdHI8QVBJOjpPYmplY3Q+IHVzZXJEYXRhOwotICAgIFdlYkNv
bnRleHRVc2VyTWVzc2FnZURlY29kZXIgbWVzc2FnZURlY29kZXIodXNlckRhdGEsIG1fcHJvY2Vz
cy5nZXQoKSk7CisgICAgV2ViQ29udGV4dFVzZXJNZXNzYWdlRGVjb2RlciBtZXNzYWdlRGVjb2Rl
cih1c2VyRGF0YSwgJm1fcHJvY2Vzcy5nZXQoKSk7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSht
ZXNzYWdlRGVjb2RlcikpCiAgICAgICAgIHJldHVybjsKIApAQCAtMjI1OSw3ICsyMjUzLDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmRpZFNhbWVEb2N1bWVudE5hdmlnYQogdm9pZCBXZWJQYWdlUHJv
eHk6OmRpZFJlY2VpdmVUaXRsZUZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmlu
ZyYgdGl0bGUsIENvcmVJUEM6Ok1lc3NhZ2VEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIFJlZlB0
cjxBUEk6Ok9iamVjdD4gdXNlckRhdGE7Ci0gICAgV2ViQ29udGV4dFVzZXJNZXNzYWdlRGVjb2Rl
ciBtZXNzYWdlRGVjb2Rlcih1c2VyRGF0YSwgbV9wcm9jZXNzLmdldCgpKTsKKyAgICBXZWJDb250
ZXh0VXNlck1lc3NhZ2VEZWNvZGVyIG1lc3NhZ2VEZWNvZGVyKHVzZXJEYXRhLCAmbV9wcm9jZXNz
LmdldCgpKTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG1lc3NhZ2VEZWNvZGVyKSkKICAgICAg
ICAgcmV0dXJuOwogCkBAIC0yMjc3LDcgKzIyNzEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlk
UmVjZWl2ZVRpdGxlRm9yRnJhCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmlyc3RMYXlvdXRGb3JG
cmFtZSh1aW50NjRfdCBmcmFtZUlELCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYgZGVjb2RlcikK
IHsKICAgICBSZWZQdHI8QVBJOjpPYmplY3Q+IHVzZXJEYXRhOwotICAgIFdlYkNvbnRleHRVc2Vy
TWVzc2FnZURlY29kZXIgbWVzc2FnZURlY29kZXIodXNlckRhdGEsIG1fcHJvY2Vzcy5nZXQoKSk7
CisgICAgV2ViQ29udGV4dFVzZXJNZXNzYWdlRGVjb2RlciBtZXNzYWdlRGVjb2Rlcih1c2VyRGF0
YSwgJm1fcHJvY2Vzcy5nZXQoKSk7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShtZXNzYWdlRGVj
b2RlcikpCiAgICAgICAgIHJldHVybjsKIApAQCAtMjI5MCw3ICsyMjg0LDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmRpZEZpcnN0TGF5b3V0Rm9yRnJhbQogdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZp
cnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIENvcmVJ
UEM6Ok1lc3NhZ2VEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIFJlZlB0cjxBUEk6Ok9iamVjdD4g
dXNlckRhdGE7Ci0gICAgV2ViQ29udGV4dFVzZXJNZXNzYWdlRGVjb2RlciBtZXNzYWdlRGVjb2Rl
cih1c2VyRGF0YSwgbV9wcm9jZXNzLmdldCgpKTsKKyAgICBXZWJDb250ZXh0VXNlck1lc3NhZ2VE
ZWNvZGVyIG1lc3NhZ2VEZWNvZGVyKHVzZXJEYXRhLCAmbV9wcm9jZXNzLmdldCgpKTsKICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKG1lc3NhZ2VEZWNvZGVyKSkKICAgICAgICAgcmV0dXJuOwogCkBA
IC0yMzAzLDcgKzIyOTcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmlyc3RWaXN1YWxseU5v
bkVtCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkTGF5b3V0KHVpbnQzMl90IGxheW91dE1pbGVzdG9u
ZXMsIENvcmVJUEM6Ok1lc3NhZ2VEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIFJlZlB0cjxBUEk6
Ok9iamVjdD4gdXNlckRhdGE7Ci0gICAgV2ViQ29udGV4dFVzZXJNZXNzYWdlRGVjb2RlciBtZXNz
YWdlRGVjb2Rlcih1c2VyRGF0YSwgbV9wcm9jZXNzLmdldCgpKTsKKyAgICBXZWJDb250ZXh0VXNl
ck1lc3NhZ2VEZWNvZGVyIG1lc3NhZ2VEZWNvZGVyKHVzZXJEYXRhLCAmbV9wcm9jZXNzLmdldCgp
KTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG1lc3NhZ2VEZWNvZGVyKSkKICAgICAgICAgcmV0
dXJuOwogCkBAIC0yMzEzLDcgKzIzMDcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkTGF5b3V0
KHVpbnQzMl90IGxhCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVtb3ZlRnJhbWVGcm9tSGllcmFy
Y2h5KHVpbnQ2NF90IGZyYW1lSUQsIENvcmVJUEM6Ok1lc3NhZ2VEZWNvZGVyJiBkZWNvZGVyKQog
ewogICAgIFJlZlB0cjxBUEk6Ok9iamVjdD4gdXNlckRhdGE7Ci0gICAgV2ViQ29udGV4dFVzZXJN
ZXNzYWdlRGVjb2RlciBtZXNzYWdlRGVjb2Rlcih1c2VyRGF0YSwgbV9wcm9jZXNzLmdldCgpKTsK
KyAgICBXZWJDb250ZXh0VXNlck1lc3NhZ2VEZWNvZGVyIG1lc3NhZ2VEZWNvZGVyKHVzZXJEYXRh
LCAmbV9wcm9jZXNzLmdldCgpKTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG1lc3NhZ2VEZWNv
ZGVyKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0yMzI2LDcgKzIzMjAsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6ZGlkUmVtb3ZlRnJhbWVGcm9tSGllCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRGlz
cGxheUluc2VjdXJlQ29udGVudEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIENvcmVJUEM6Ok1l
c3NhZ2VEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIFJlZlB0cjxBUEk6Ok9iamVjdD4gdXNlckRh
dGE7Ci0gICAgV2ViQ29udGV4dFVzZXJNZXNzYWdlRGVjb2RlciBtZXNzYWdlRGVjb2Rlcih1c2Vy
RGF0YSwgbV9wcm9jZXNzLmdldCgpKTsKKyAgICBXZWJDb250ZXh0VXNlck1lc3NhZ2VEZWNvZGVy
IG1lc3NhZ2VEZWNvZGVyKHVzZXJEYXRhLCAmbV9wcm9jZXNzLmdldCgpKTsKICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKG1lc3NhZ2VEZWNvZGVyKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0yMzM5
LDcgKzIzMzMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRGlzcGxheUluc2VjdXJlQ29uCiB2
b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUnVuSW5zZWN1cmVDb250ZW50Rm9yRnJhbWUodWludDY0X3Qg
ZnJhbWVJRCwgQ29yZUlQQzo6TWVzc2FnZURlY29kZXImIGRlY29kZXIpCiB7CiAgICAgUmVmUHRy
PEFQSTo6T2JqZWN0PiB1c2VyRGF0YTsKLSAgICBXZWJDb250ZXh0VXNlck1lc3NhZ2VEZWNvZGVy
IG1lc3NhZ2VEZWNvZGVyKHVzZXJEYXRhLCBtX3Byb2Nlc3MuZ2V0KCkpOworICAgIFdlYkNvbnRl
eHRVc2VyTWVzc2FnZURlY29kZXIgbWVzc2FnZURlY29kZXIodXNlckRhdGEsICZtX3Byb2Nlc3Mu
Z2V0KCkpOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUobWVzc2FnZURlY29kZXIpKQogICAgICAg
ICByZXR1cm47CiAKQEAgLTIzNTIsNyArMjM0Niw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRS
dW5JbnNlY3VyZUNvbnRlbnQKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWREZXRlY3RYU1NGb3JGcmFt
ZSh1aW50NjRfdCBmcmFtZUlELCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYgZGVjb2RlcikKIHsK
ICAgICBSZWZQdHI8QVBJOjpPYmplY3Q+IHVzZXJEYXRhOwotICAgIFdlYkNvbnRleHRVc2VyTWVz
c2FnZURlY29kZXIgbWVzc2FnZURlY29kZXIodXNlckRhdGEsIG1fcHJvY2Vzcy5nZXQoKSk7Cisg
ICAgV2ViQ29udGV4dFVzZXJNZXNzYWdlRGVjb2RlciBtZXNzYWdlRGVjb2Rlcih1c2VyRGF0YSwg
Jm1fcHJvY2Vzcy5nZXQoKSk7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShtZXNzYWdlRGVjb2Rl
cikpCiAgICAgICAgIHJldHVybjsKIApAQCAtMjM3Niw3ICsyMzcwLDcgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmZyYW1lRGlkQmVjb21lRnJhbWVTZQogdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBv
bGljeUZvck5hdmlnYXRpb25BY3Rpb24odWludDY0X3QgZnJhbWVJRCwgdWludDMyX3Qgb3BhcXVl
TmF2aWdhdGlvblR5cGUsIHVpbnQzMl90IG9wYXF1ZU1vZGlmaWVycywgaW50MzJfdCBvcGFxdWVN
b3VzZUJ1dHRvbiwgdWludDY0X3Qgb3JpZ2luYXRpbmdGcmFtZUlELCBjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QsIHVpbnQ2NF90IGxpc3RlbmVySUQsIENvcmVJUEM6Ok1lc3NhZ2VEZWNv
ZGVyJiBkZWNvZGVyLCBib29sJiByZWNlaXZlZFBvbGljeUFjdGlvbiwgdWludDY0X3QmIHBvbGlj
eUFjdGlvbiwgdWludDY0X3QmIGRvd25sb2FkSUQpCiB7CiAgICAgUmVmUHRyPEFQSTo6T2JqZWN0
PiB1c2VyRGF0YTsKLSAgICBXZWJDb250ZXh0VXNlck1lc3NhZ2VEZWNvZGVyIG1lc3NhZ2VEZWNv
ZGVyKHVzZXJEYXRhLCBtX3Byb2Nlc3MuZ2V0KCkpOworICAgIFdlYkNvbnRleHRVc2VyTWVzc2Fn
ZURlY29kZXIgbWVzc2FnZURlY29kZXIodXNlckRhdGEsICZtX3Byb2Nlc3MuZ2V0KCkpOwogICAg
IGlmICghZGVjb2Rlci5kZWNvZGUobWVzc2FnZURlY29kZXIpKQogICAgICAgICByZXR1cm47CiAK
QEAgLTI0MTUsNyArMjQwOSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JO
YXZpZ2EKIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24o
dWludDY0X3QgZnJhbWVJRCwgdWludDMyX3Qgb3BhcXVlTmF2aWdhdGlvblR5cGUsIHVpbnQzMl90
IG9wYXF1ZU1vZGlmaWVycywgaW50MzJfdCBvcGFxdWVNb3VzZUJ1dHRvbiwgY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgdWludDY0X3QgbGlz
dGVuZXJJRCwgQ29yZUlQQzo6TWVzc2FnZURlY29kZXImIGRlY29kZXIpCiB7CiAgICAgUmVmUHRy
PEFQSTo6T2JqZWN0PiB1c2VyRGF0YTsKLSAgICBXZWJDb250ZXh0VXNlck1lc3NhZ2VEZWNvZGVy
IG1lc3NhZ2VEZWNvZGVyKHVzZXJEYXRhLCBtX3Byb2Nlc3MuZ2V0KCkpOworICAgIFdlYkNvbnRl
eHRVc2VyTWVzc2FnZURlY29kZXIgbWVzc2FnZURlY29kZXIodXNlckRhdGEsICZtX3Byb2Nlc3Mu
Z2V0KCkpOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUobWVzc2FnZURlY29kZXIpKQogICAgICAg
ICByZXR1cm47CiAKQEAgLTI0MzUsNyArMjQyOSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNp
ZGVQb2xpY3lGb3JOZXdXaW4KIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JSZXNw
b25zZSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwg
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBib29sIGNhblNob3dNSU1FVHlwZSwgdWlu
dDY0X3QgbGlzdGVuZXJJRCwgQ29yZUlQQzo6TWVzc2FnZURlY29kZXImIGRlY29kZXIpCiB7CiAg
ICAgUmVmUHRyPEFQSTo6T2JqZWN0PiB1c2VyRGF0YTsKLSAgICBXZWJDb250ZXh0VXNlck1lc3Nh
Z2VEZWNvZGVyIG1lc3NhZ2VEZWNvZGVyKHVzZXJEYXRhLCBtX3Byb2Nlc3MuZ2V0KCkpOworICAg
IFdlYkNvbnRleHRVc2VyTWVzc2FnZURlY29kZXIgbWVzc2FnZURlY29kZXIodXNlckRhdGEsICZt
X3Byb2Nlc3MuZ2V0KCkpOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUobWVzc2FnZURlY29kZXIp
KQogICAgICAgICByZXR1cm47CiAKQEAgLTI0NzQsNyArMjQ2OCw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpkZWNpZGVQb2xpY3lGb3JSZXNwb24KIHZvaWQgV2ViUGFnZVByb3h5Ojp1bmFibGVUb0lt
cGxlbWVudFBvbGljeSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJv
ciwgQ29yZUlQQzo6TWVzc2FnZURlY29kZXImIGRlY29kZXIpCiB7CiAgICAgUmVmUHRyPEFQSTo6
T2JqZWN0PiB1c2VyRGF0YTsKLSAgICBXZWJDb250ZXh0VXNlck1lc3NhZ2VEZWNvZGVyIG1lc3Nh
Z2VEZWNvZGVyKHVzZXJEYXRhLCBtX3Byb2Nlc3MuZ2V0KCkpOworICAgIFdlYkNvbnRleHRVc2Vy
TWVzc2FnZURlY29kZXIgbWVzc2FnZURlY29kZXIodXNlckRhdGEsICZtX3Byb2Nlc3MuZ2V0KCkp
OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUobWVzc2FnZURlY29kZXIpKQogICAgICAgICByZXR1
cm47CiAgICAgCkBAIC0yNDg5LDcgKzI0ODMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dW5hYmxl
VG9JbXBsZW1lbnRQb2xpCiB2b2lkIFdlYlBhZ2VQcm94eTo6d2lsbFN1Ym1pdEZvcm0odWludDY0
X3QgZnJhbWVJRCwgdWludDY0X3Qgc291cmNlRnJhbWVJRCwgY29uc3QgVmVjdG9yPHN0ZDo6cGFp
cjxTdHJpbmcsIFN0cmluZz4+JiB0ZXh0RmllbGRWYWx1ZXMsIHVpbnQ2NF90IGxpc3RlbmVySUQs
IENvcmVJUEM6Ok1lc3NhZ2VEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIFJlZlB0cjxBUEk6Ok9i
amVjdD4gdXNlckRhdGE7Ci0gICAgV2ViQ29udGV4dFVzZXJNZXNzYWdlRGVjb2RlciBtZXNzYWdl
RGVjb2Rlcih1c2VyRGF0YSwgbV9wcm9jZXNzLmdldCgpKTsKKyAgICBXZWJDb250ZXh0VXNlck1l
c3NhZ2VEZWNvZGVyIG1lc3NhZ2VEZWNvZGVyKHVzZXJEYXRhLCAmbV9wcm9jZXNzLmdldCgpKTsK
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG1lc3NhZ2VEZWNvZGVyKSkKICAgICAgICAgcmV0dXJu
OwogCkBAIC0yNTE2LDcgKzI1MTAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y3JlYXRlTmV3UGFn
ZShjb25zdCBSCiAKICAgICBuZXdQYWdlSUQgPSBuZXdQYWdlLT5wYWdlSUQoKTsKICAgICBuZXdQ
YWdlUGFyYW1ldGVycyA9IG5ld1BhZ2UtPmNyZWF0aW9uUGFyYW1ldGVycygpOwotICAgIHByb2Nl
c3MoKS0+Y29udGV4dCgpLT5zdG9yYWdlTWFuYWdlcigpLmNsb25lU2Vzc2lvblN0b3JhZ2VOYW1l
c3BhY2UobV9wYWdlSUQsIG5ld1BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBwcm9jZXNzKCkuY29udGV4
dCgpLnN0b3JhZ2VNYW5hZ2VyKCkuY2xvbmVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShtX3BhZ2VJ
RCwgbmV3UGFnZS0+cGFnZUlEKCkpOwogfQogICAgIAogdm9pZCBXZWJQYWdlUHJveHk6OnNob3dQ
YWdlKCkKQEAgLTI1ODIsNyArMjU3Niw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRTdGF0dXNU
ZXh0KGNvbnN0IFMKIHZvaWQgV2ViUGFnZVByb3h5Ojptb3VzZURpZE1vdmVPdmVyRWxlbWVudChj
b25zdCBXZWJIaXRUZXN0UmVzdWx0OjpEYXRhJiBoaXRUZXN0UmVzdWx0RGF0YSwgdWludDMyX3Qg
b3BhcXVlTW9kaWZpZXJzLCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYgZGVjb2RlcikKIHsKICAg
ICBSZWZQdHI8QVBJOjpPYmplY3Q+IHVzZXJEYXRhOwotICAgIFdlYkNvbnRleHRVc2VyTWVzc2Fn
ZURlY29kZXIgbWVzc2FnZURlY29kZXIodXNlckRhdGEsIG1fcHJvY2Vzcy5nZXQoKSk7CisgICAg
V2ViQ29udGV4dFVzZXJNZXNzYWdlRGVjb2RlciBtZXNzYWdlRGVjb2Rlcih1c2VyRGF0YSwgJm1f
cHJvY2Vzcy5nZXQoKSk7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShtZXNzYWdlRGVjb2Rlcikp
CiAgICAgICAgIHJldHVybjsKIApAQCAtMjU5NSwxNCArMjU4OSwxNCBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6Y29ubmVjdGlvbldpbGxPcGVuKENvCiB7CiAgICAgQVNTRVJUKGNvbm5lY3Rpb24gPT0g
bV9wcm9jZXNzLT5jb25uZWN0aW9uKCkpOwogCi0gICAgbV9wcm9jZXNzLT5jb250ZXh0KCktPnN0
b3JhZ2VNYW5hZ2VyKCkuc2V0QWxsb3dlZFNlc3Npb25TdG9yYWdlTmFtZXNwYWNlQ29ubmVjdGlv
bihtX3BhZ2VJRCwgY29ubmVjdGlvbik7CisgICAgbV9wcm9jZXNzLT5jb250ZXh0KCkuc3RvcmFn
ZU1hbmFnZXIoKS5zZXRBbGxvd2VkU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VDb25uZWN0aW9uKG1f
cGFnZUlELCBjb25uZWN0aW9uKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmNvbm5lY3Rpb25X
aWxsQ2xvc2UoQ29yZUlQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbikKIHsKICAgICBBU1NFUlRf
VU5VU0VEKGNvbm5lY3Rpb24sIGNvbm5lY3Rpb24gPT0gbV9wcm9jZXNzLT5jb25uZWN0aW9uKCkp
OwogCi0gICAgbV9wcm9jZXNzLT5jb250ZXh0KCktPnN0b3JhZ2VNYW5hZ2VyKCkuc2V0QWxsb3dl
ZFNlc3Npb25TdG9yYWdlTmFtZXNwYWNlQ29ubmVjdGlvbihtX3BhZ2VJRCwgMCk7CisgICAgbV9w
cm9jZXNzLT5jb250ZXh0KCkuc3RvcmFnZU1hbmFnZXIoKS5zZXRBbGxvd2VkU2Vzc2lvblN0b3Jh
Z2VOYW1lc3BhY2VDb25uZWN0aW9uKG1fcGFnZUlELCAwKTsKIH0KIAogI2lmIEVOQUJMRShORVRT
Q0FQRV9QTFVHSU5fQVBJKQpAQCAtMjYxNSw3ICsyNjA5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OnVuYXZhaWxhYmxlUGx1Z2luQnV0dAogCiAgICAgUmVmUHRyPEltbXV0YWJsZURpY3Rpb25hcnk+
IHBsdWdpbkluZm9ybWF0aW9uOwogICAgIFN0cmluZyBuZXdNaW1lVHlwZSA9IG1pbWVUeXBlOwot
ICAgIFBsdWdpbk1vZHVsZUluZm8gcGx1Z2luID0gbV9wcm9jZXNzLT5jb250ZXh0KCktPnBsdWdp
bkluZm9TdG9yZSgpLmZpbmRQbHVnaW4obmV3TWltZVR5cGUsIFVSTChVUkwoKSwgcGx1Z2luVVJM
U3RyaW5nKSk7CisgICAgUGx1Z2luTW9kdWxlSW5mbyBwbHVnaW4gPSBtX3Byb2Nlc3MtPmNvbnRl
eHQoKS5wbHVnaW5JbmZvU3RvcmUoKS5maW5kUGx1Z2luKG5ld01pbWVUeXBlLCBVUkwoVVJMKCks
IHBsdWdpblVSTFN0cmluZykpOwogICAgIHBsdWdpbkluZm9ybWF0aW9uID0gY3JlYXRlUGx1Z2lu
SW5mb3JtYXRpb25EaWN0aW9uYXJ5KHBsdWdpbiwgZnJhbWVVUkxTdHJpbmcsIG1pbWVUeXBlLCBw
YWdlVVJMU3RyaW5nLCBwbHVnaW5zcGFnZUF0dHJpYnV0ZVVSTFN0cmluZywgcGx1Z2luVVJMU3Ry
aW5nKTsKIAogICAgIFdLUGx1Z2luVW5hdmFpbGFiaWxpdHlSZWFzb24gcGx1Z2luVW5hdmFpbGFi
aWxpdHlSZWFzb24gPSBrV0tQbHVnaW5VbmF2YWlsYWJpbGl0eVJlYXNvblBsdWdpbk1pc3Npbmc7
CkBAIC0yODAxLDcgKzI3OTUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0TWF5U3RhcnRNZWRp
YVdoZW5JCiAgICAgaWYgKCFpc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHByb2Nl
c3MoKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0TWF5U3RhcnRNZWRpYVdoZW5JbldpbmRv
dyhtYXlTdGFydE1lZGlhKSwgbV9wYWdlSUQpOworICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpTZXRNYXlTdGFydE1lZGlhV2hlbkluV2luZG93KG1heVN0YXJ0TWVkaWEpLCBt
X3BhZ2VJRCk7CiB9CiAKICNpZiBQTEFURk9STShFRkwpIHx8IFBMQVRGT1JNKEdUSykKQEAgLTMw
NTUsNyArMzA0OSw3IEBAIE5hdGl2ZVdlYk1vdXNlRXZlbnQqIFdlYlBhZ2VQcm94eTo6Y3VycmUK
IAogdm9pZCBXZWJQYWdlUHJveHk6OnBvc3RNZXNzYWdlVG9JbmplY3RlZEJ1bmRsZShjb25zdCBT
dHJpbmcmIG1lc3NhZ2VOYW1lLCBBUEk6Ok9iamVjdCogbWVzc2FnZUJvZHkpCiB7Ci0gICAgcHJv
Y2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpQb3N0SW5qZWN0ZWRCdW5kbGVNZXNzYWdl
KG1lc3NhZ2VOYW1lLCBXZWJDb250ZXh0VXNlck1lc3NhZ2VFbmNvZGVyKG1lc3NhZ2VCb2R5KSks
IG1fcGFnZUlEKTsKKyAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UG9zdElu
amVjdGVkQnVuZGxlTWVzc2FnZShtZXNzYWdlTmFtZSwgV2ViQ29udGV4dFVzZXJNZXNzYWdlRW5j
b2RlcihtZXNzYWdlQm9keSkpLCBtX3BhZ2VJRCk7CiB9CiAKICNpZiBQTEFURk9STShHVEspCkBA
IC0zMTI2LDcgKzMxMjAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2hvd0NvbnRleHRNZW51KGNv
bnN0CiB2b2lkIFdlYlBhZ2VQcm94eTo6aW50ZXJuYWxTaG93Q29udGV4dE1lbnUoY29uc3QgSW50
UG9pbnQmIG1lbnVMb2NhdGlvbiwgY29uc3QgV2ViSGl0VGVzdFJlc3VsdDo6RGF0YSYgaGl0VGVz
dFJlc3VsdERhdGEsIGNvbnN0IFZlY3RvcjxXZWJDb250ZXh0TWVudUl0ZW1EYXRhPiYgcHJvcG9z
ZWRJdGVtcywgQ29yZUlQQzo6TWVzc2FnZURlY29kZXImIGRlY29kZXIpCiB7CiAgICAgUmVmUHRy
PEFQSTo6T2JqZWN0PiB1c2VyRGF0YTsKLSAgICBXZWJDb250ZXh0VXNlck1lc3NhZ2VEZWNvZGVy
IG1lc3NhZ2VEZWNvZGVyKHVzZXJEYXRhLCBtX3Byb2Nlc3MuZ2V0KCkpOworICAgIFdlYkNvbnRl
eHRVc2VyTWVzc2FnZURlY29kZXIgbWVzc2FnZURlY29kZXIodXNlckRhdGEsICZtX3Byb2Nlc3Mu
Z2V0KCkpOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUobWVzc2FnZURlY29kZXIpKQogICAgICAg
ICByZXR1cm47CiAKQEAgLTMxOTksMTUgKzMxOTMsMTUgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNv
bnRleHRNZW51SXRlbVNlbGVjdAogICAgIH0KICNlbmRpZgogICAgIGlmIChpdGVtLmFjdGlvbigp
ID09IENvbnRleHRNZW51SXRlbVRhZ0Rvd25sb2FkSW1hZ2VUb0Rpc2spIHsKLSAgICAgICAgbV9w
cm9jZXNzLT5jb250ZXh0KCktPmRvd25sb2FkKHRoaXMsIFVSTChVUkwoKSwgbV9hY3RpdmVDb250
ZXh0TWVudUhpdFRlc3RSZXN1bHREYXRhLmFic29sdXRlSW1hZ2VVUkwpKTsKKyAgICAgICAgbV9w
cm9jZXNzLT5jb250ZXh0KCkuZG93bmxvYWQodGhpcywgVVJMKFVSTCgpLCBtX2FjdGl2ZUNvbnRl
eHRNZW51SGl0VGVzdFJlc3VsdERhdGEuYWJzb2x1dGVJbWFnZVVSTCkpOwogICAgICAgICByZXR1
cm47ICAgIAogICAgIH0KICAgICBpZiAoaXRlbS5hY3Rpb24oKSA9PSBDb250ZXh0TWVudUl0ZW1U
YWdEb3dubG9hZExpbmtUb0Rpc2spIHsKLSAgICAgICAgbV9wcm9jZXNzLT5jb250ZXh0KCktPmRv
d25sb2FkKHRoaXMsIFVSTChVUkwoKSwgbV9hY3RpdmVDb250ZXh0TWVudUhpdFRlc3RSZXN1bHRE
YXRhLmFic29sdXRlTGlua1VSTCkpOworICAgICAgICBtX3Byb2Nlc3MtPmNvbnRleHQoKS5kb3du
bG9hZCh0aGlzLCBVUkwoVVJMKCksIG1fYWN0aXZlQ29udGV4dE1lbnVIaXRUZXN0UmVzdWx0RGF0
YS5hYnNvbHV0ZUxpbmtVUkwpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAoaXRl
bS5hY3Rpb24oKSA9PSBDb250ZXh0TWVudUl0ZW1UYWdEb3dubG9hZE1lZGlhVG9EaXNrKSB7Ci0g
ICAgICAgIG1fcHJvY2Vzcy0+Y29udGV4dCgpLT5kb3dubG9hZCh0aGlzLCBVUkwoVVJMKCksIG1f
YWN0aXZlQ29udGV4dE1lbnVIaXRUZXN0UmVzdWx0RGF0YS5hYnNvbHV0ZU1lZGlhVVJMKSk7Cisg
ICAgICAgIG1fcHJvY2Vzcy0+Y29udGV4dCgpLmRvd25sb2FkKHRoaXMsIFVSTChVUkwoKSwgbV9h
Y3RpdmVDb250ZXh0TWVudUhpdFRlc3RSZXN1bHREYXRhLmFic29sdXRlTWVkaWFVUkwpKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAoaXRlbS5hY3Rpb24oKSA9PSBDb250ZXh0TWVu
dUl0ZW1UYWdDaGVja1NwZWxsaW5nV2hpbGVUeXBpbmcpIHsKQEAgLTMyNjUsMTIgKzMyNTksMTIg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZENhbmNlbEZvck9wZW5QYW5lbAogICAgIG1fb3BlblBh
bmVsUmVzdWx0TGlzdGVuZXIgPSAwOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6YWR2YW5jZVRv
TmV4dE1pc3NwZWxsaW5nKGJvb2wgc3RhcnRCZWZvcmVTZWxlY3Rpb24pIGNvbnN0Cit2b2lkIFdl
YlBhZ2VQcm94eTo6YWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5nKGJvb2wgc3RhcnRCZWZvcmVTZWxl
Y3Rpb24pCiB7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpBZHZhbmNl
VG9OZXh0TWlzc3BlbGxpbmcoc3RhcnRCZWZvcmVTZWxlY3Rpb24pLCBtX3BhZ2VJRCk7CiB9CiAK
LXZvaWQgV2ViUGFnZVByb3h5OjpjaGFuZ2VTcGVsbGluZ1RvV29yZChjb25zdCBTdHJpbmcmIHdv
cmQpIGNvbnN0Cit2b2lkIFdlYlBhZ2VQcm94eTo6Y2hhbmdlU3BlbGxpbmdUb1dvcmQoY29uc3Qg
U3RyaW5nJiB3b3JkKQogewogICAgIGlmICh3b3JkLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJu
OwpAQCAtMzM3MCwxMiArMzM2NCwxMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdENoZWNr
aW5nT2ZTdHJpCiAgICAgVGV4dENoZWNrZXI6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFRleHRD
aGVja2VyQ29tcGxldGlvbjo6Y3JlYXRlKHJlcXVlc3RJRCwgcmVxdWVzdCwgdGhpcykpOwogfQog
Ci12b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmluaXNoQ2hlY2tpbmdUZXh0KHVpbnQ2NF90IHJlcXVl
c3RJRCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlRleHRDaGVja2luZ1Jlc3VsdD4mIHJlc3VsdCkg
Y29uc3QKK3ZvaWQgV2ViUGFnZVByb3h5OjpkaWRGaW5pc2hDaGVja2luZ1RleHQodWludDY0X3Qg
cmVxdWVzdElELCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6VGV4dENoZWNraW5nUmVzdWx0PiYgcmVz
dWx0KQogewogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkRmluaXNo
Q2hlY2tpbmdUZXh0KHJlcXVlc3RJRCwgcmVzdWx0KSwgbV9wYWdlSUQpOwogfQogCi12b2lkIFdl
YlBhZ2VQcm94eTo6ZGlkQ2FuY2VsQ2hlY2tpbmdUZXh0KHVpbnQ2NF90IHJlcXVlc3RJRCkgY29u
c3QKK3ZvaWQgV2ViUGFnZVByb3h5OjpkaWRDYW5jZWxDaGVja2luZ1RleHQodWludDY0X3QgcmVx
dWVzdElEKQogewogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkQ2Fu
Y2VsQ2hlY2tpbmdUZXh0KHJlcXVlc3RJRCksIG1fcGFnZUlEKTsKIH0KQEAgLTM5NTUsMjIgKzM5
NDksMjIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3ROb3RpZmljYXRpb25QZQogCiB2b2lk
IFdlYlBhZ2VQcm94eTo6c2hvd05vdGlmaWNhdGlvbihjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25z
dCBTdHJpbmcmIGJvZHksIGNvbnN0IFN0cmluZyYgaWNvblVSTCwgY29uc3QgU3RyaW5nJiB0YWcs
IGNvbnN0IFN0cmluZyYgbGFuZywgY29uc3QgU3RyaW5nJiBkaXIsIGNvbnN0IFN0cmluZyYgb3Jp
Z2luU3RyaW5nLCB1aW50NjRfdCBub3RpZmljYXRpb25JRCkKIHsKLSAgICBtX3Byb2Nlc3MtPmNv
bnRleHQoKS0+c3VwcGxlbWVudDxXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk+KCktPnNob3co
dGhpcywgdGl0bGUsIGJvZHksIGljb25VUkwsIHRhZywgbGFuZywgZGlyLCBvcmlnaW5TdHJpbmcs
IG5vdGlmaWNhdGlvbklEKTsKKyAgICBtX3Byb2Nlc3MtPmNvbnRleHQoKS5zdXBwbGVtZW50PFdl
Yk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eT4oKS0+c2hvdyh0aGlzLCB0aXRsZSwgYm9keSwgaWNv
blVSTCwgdGFnLCBsYW5nLCBkaXIsIG9yaWdpblN0cmluZywgbm90aWZpY2F0aW9uSUQpOwogfQog
CiB2b2lkIFdlYlBhZ2VQcm94eTo6Y2FuY2VsTm90aWZpY2F0aW9uKHVpbnQ2NF90IG5vdGlmaWNh
dGlvbklEKQogewotICAgIG1fcHJvY2Vzcy0+Y29udGV4dCgpLT5zdXBwbGVtZW50PFdlYk5vdGlm
aWNhdGlvbk1hbmFnZXJQcm94eT4oKS0+Y2FuY2VsKHRoaXMsIG5vdGlmaWNhdGlvbklEKTsKKyAg
ICBtX3Byb2Nlc3MtPmNvbnRleHQoKS5zdXBwbGVtZW50PFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQ
cm94eT4oKS0+Y2FuY2VsKHRoaXMsIG5vdGlmaWNhdGlvbklEKTsKIH0KIAogdm9pZCBXZWJQYWdl
UHJveHk6OmNsZWFyTm90aWZpY2F0aW9ucyhjb25zdCBWZWN0b3I8dWludDY0X3Q+JiBub3RpZmlj
YXRpb25JRHMpCiB7Ci0gICAgbV9wcm9jZXNzLT5jb250ZXh0KCktPnN1cHBsZW1lbnQ8V2ViTm90
aWZpY2F0aW9uTWFuYWdlclByb3h5PigpLT5jbGVhck5vdGlmaWNhdGlvbnModGhpcywgbm90aWZp
Y2F0aW9uSURzKTsKKyAgICBtX3Byb2Nlc3MtPmNvbnRleHQoKS5zdXBwbGVtZW50PFdlYk5vdGlm
aWNhdGlvbk1hbmFnZXJQcm94eT4oKS0+Y2xlYXJOb3RpZmljYXRpb25zKHRoaXMsIG5vdGlmaWNh
dGlvbklEcyk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWREZXN0cm95Tm90aWZpY2F0aW9u
KHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEKQogewotICAgIG1fcHJvY2Vzcy0+Y29udGV4dCgpLT5z
dXBwbGVtZW50PFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eT4oKS0+ZGlkRGVzdHJveU5vdGlm
aWNhdGlvbih0aGlzLCBub3RpZmljYXRpb25JRCk7CisgICAgbV9wcm9jZXNzLT5jb250ZXh0KCku
c3VwcGxlbWVudDxXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk+KCktPmRpZERlc3Ryb3lOb3Rp
ZmljYXRpb24odGhpcywgbm90aWZpY2F0aW9uSUQpOwogfQogCiBmbG9hdCBXZWJQYWdlUHJveHk6
OmhlYWRlckhlaWdodChXZWJGcmFtZVByb3h5KiBmcmFtZSkKQEAgLTQwNjAsNyArNDA1NCw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpkaWRCbG9ja0luc2VjdXJlUGx1Z2kKIAogI2lmIFBMQVRGT1JN
KE1BQykgJiYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAgICAgU3RyaW5nIG5ld01pbWVU
eXBlID0gbWltZVR5cGU7Ci0gICAgUGx1Z2luTW9kdWxlSW5mbyBwbHVnaW4gPSBtX3Byb2Nlc3Mt
PmNvbnRleHQoKS0+cGx1Z2luSW5mb1N0b3JlKCkuZmluZFBsdWdpbihuZXdNaW1lVHlwZSwgVVJM
KFVSTCgpLCBwbHVnaW5VUkxTdHJpbmcpKTsKKyAgICBQbHVnaW5Nb2R1bGVJbmZvIHBsdWdpbiA9
IG1fcHJvY2Vzcy0+Y29udGV4dCgpLnBsdWdpbkluZm9TdG9yZSgpLmZpbmRQbHVnaW4obmV3TWlt
ZVR5cGUsIFVSTChVUkwoKSwgcGx1Z2luVVJMU3RyaW5nKSk7CiAgICAgcGx1Z2luSW5mb3JtYXRp
b24gPSBjcmVhdGVQbHVnaW5JbmZvcm1hdGlvbkRpY3Rpb25hcnkocGx1Z2luLCBmcmFtZVVSTFN0
cmluZywgbWltZVR5cGUsIHBhZ2VVUkxTdHJpbmcsIFN0cmluZygpLCBTdHJpbmcoKSwgcmVwbGFj
ZW1lbnRPYnNjdXJlZCk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShtaW1lVHlwZSk7CkBAIC00
Mjk2LDcgKzQyOTAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGljdGF0aW9uQWx0ZXJuYXRpdmVz
CiAjaWYgVVNFKFNPVVApCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZVVSSVJlcXVlc3Qo
U3RyaW5nIHVyaVN0cmluZywgdWludDY0X3QgcmVxdWVzdElEKQogewotICAgIG1fcHJvY2Vzcy0+
Y29udGV4dCgpLT5zdXBwbGVtZW50PFdlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5PigpLT5kaWRS
ZWNlaXZlVVJJUmVxdWVzdCh1cmlTdHJpbmcsIHRoaXMsIHJlcXVlc3RJRCk7CisgICAgbV9wcm9j
ZXNzLT5jb250ZXh0KCkuc3VwcGxlbWVudDxXZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eT4oKS0+
ZGlkUmVjZWl2ZVVSSVJlcXVlc3QodXJpU3RyaW5nLCB0aGlzLCByZXF1ZXN0SUQpOwogfQogI2Vu
ZGlmCiAKQEAgLTQzMDcsNyArNDMwMSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRDb21wb3Np
dGlvbihjb25zdCAKICAgICBpZiAoIWlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
cHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRDb21wb3NpdGlvbih0ZXh0LCB1
bmRlcmxpbmVzLCBzZWxlY3Rpb25TdGFydCwgc2VsZWN0aW9uRW5kLCByZXBsYWNlbWVudFJhbmdl
U3RhcnQsIHJlcGxhY2VtZW50UmFuZ2VFbmQpLCBtX3BhZ2VJRCk7CisgICAgcHJvY2VzcygpLnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldENvbXBvc2l0aW9uKHRleHQsIHVuZGVybGluZXMsIHNl
bGVjdGlvblN0YXJ0LCBzZWxlY3Rpb25FbmQsIHJlcGxhY2VtZW50UmFuZ2VTdGFydCwgcmVwbGFj
ZW1lbnRSYW5nZUVuZCksIG1fcGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmNvbmZp
cm1Db21wb3NpdGlvbihjb25zdCBTdHJpbmcmIGNvbXBvc2l0aW9uU3RyaW5nLCBpbnQ2NF90IHNl
bGVjdGlvblN0YXJ0LCBpbnQ2NF90IHNlbGVjdGlvbkxlbmd0aCkKQEAgLTQzMTUsNyArNDMwOSw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpjb25maXJtQ29tcG9zaXRpb24oY28KICAgICBpZiAoIWlz
VmFsaWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcHJvY2VzcygpLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpDb25maXJtQ29tcG9zaXRpb24oY29tcG9zaXRpb25TdHJpbmcsIHNlbGVjdGlv
blN0YXJ0LCBzZWxlY3Rpb25MZW5ndGgpLCBtX3BhZ2VJRCk7CisgICAgcHJvY2VzcygpLnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OkNvbmZpcm1Db21wb3NpdGlvbihjb21wb3NpdGlvblN0cmluZywg
c2VsZWN0aW9uU3RhcnQsIHNlbGVjdGlvbkxlbmd0aCksIG1fcGFnZUlEKTsKIH0KIAogdm9pZCBX
ZWJQYWdlUHJveHk6OmNhbmNlbENvbXBvc2l0aW9uKCkKQEAgLTQzMjMsNyArNDMxNyw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpjYW5jZWxDb21wb3NpdGlvbigpCiAgICAgaWYgKCFpc1ZhbGlkKCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIHByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6Q2FuY2VsQ29tcG9zaXRpb24oKSwgbV9wYWdlSUQpOworICAgIHByb2Nlc3MoKS5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpDYW5jZWxDb21wb3NpdGlvbigpLCBtX3BhZ2VJRCk7CiB9CiAjZW5k
aWYgLy8gUExBVEZPUk0oR1RLKQogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oCShyZXZpc2lvbiAxNTk5MDApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTMyMiw3ICszMjIsNyBAQCBjbGFzcyBX
ZWJQYWdlUHJveHkKICAgICAsIHB1YmxpYyBDb3JlSVBDOjpNZXNzYWdlUmVjZWl2ZXIgewogcHVi
bGljOgogCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViUGFnZVByb3h5PiBjcmVhdGUoUGFnZUNs
aWVudCYsIFBhc3NSZWZQdHI8V2ViUHJvY2Vzc1Byb3h5PiwgV2ViUGFnZUdyb3VwJiwgdWludDY0
X3QgcGFnZUlEKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJQYWdlUHJveHk+IGNyZWF0ZShQ
YWdlQ2xpZW50JiwgV2ViUHJvY2Vzc1Byb3h5JiwgV2ViUGFnZUdyb3VwJiwgdWludDY0X3QgcGFn
ZUlEKTsKICAgICB2aXJ0dWFsIH5XZWJQYWdlUHJveHkoKTsKIAogICAgIHVpbnQ2NF90IHBhZ2VJ
RCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUlEOyB9CkBAIC0zOTEsNyArMzkxLDcgQEAgcHVibGlj
OgogCiAgICAgYm9vbCB3aWxsSGFuZGxlSG9yaXpvbnRhbFNjcm9sbEV2ZW50cygpIGNvbnN0Owog
Ci0gICAgYm9vbCBjYW5TaG93TUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkgY29uc3Q7
CisgICAgYm9vbCBjYW5TaG93TUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CiAKICAg
ICBib29sIGRyYXdzQmFja2dyb3VuZCgpIGNvbnN0IHsgcmV0dXJuIG1fZHJhd3NCYWNrZ3JvdW5k
OyB9CiAgICAgdm9pZCBzZXREcmF3c0JhY2tncm91bmQoYm9vbCk7CkBAIC02OTcsNyArNjk3LDcg
QEAgcHVibGljOgogICAgIGJvb2wgaXNWYWxpZEtleXByZXNzQ29tbWFuZE5hbWUoY29uc3QgU3Ry
aW5nJiBuYW1lKSBjb25zdCB7IHJldHVybiBtX2tub3duS2V5cHJlc3NDb21tYW5kTmFtZXMuY29u
dGFpbnMobmFtZSk7IH0KICNlbmRpZgogCi0gICAgV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzKCkg
Y29uc3Q7CisgICAgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzKCkgeyByZXR1cm4gbV9wcm9jZXNz
LmdldCgpOyB9CiAgICAgUGxhdGZvcm1Qcm9jZXNzSWRlbnRpZmllciBwcm9jZXNzSWRlbnRpZmll
cigpIGNvbnN0OwogCiAgICAgV2ViUGFnZUdyb3VwJiBwYWdlR3JvdXAoKSB7IHJldHVybiBtX3Bh
Z2VHcm91cC5nZXQoKTsgfQpAQCAtNzM4LDggKzczOCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGhh
bmRsZURvd25sb2FkUmVxdWVzdChEb3dubG9hZFByb3h5Kik7CiAjZW5kaWYKIAotICAgIHZvaWQg
YWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5nKGJvb2wgc3RhcnRCZWZvcmVTZWxlY3Rpb24pIGNvbnN0
OwotICAgIHZvaWQgY2hhbmdlU3BlbGxpbmdUb1dvcmQoY29uc3QgU3RyaW5nJiB3b3JkKSBjb25z
dDsKKyAgICB2b2lkIGFkdmFuY2VUb05leHRNaXNzcGVsbGluZyhib29sIHN0YXJ0QmVmb3JlU2Vs
ZWN0aW9uKTsKKyAgICB2b2lkIGNoYW5nZVNwZWxsaW5nVG9Xb3JkKGNvbnN0IFN0cmluZyYgd29y
ZCk7CiAjaWYgVVNFKEFQUEtJVCkKICAgICB2b2lkIHVwcGVyY2FzZVdvcmQoKTsKICAgICB2b2lk
IGxvd2VyY2FzZVdvcmQoKTsKQEAgLTgzNSw4ICs4MzUsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBk
aWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSh1aW50NjRfdCBmcmFtZUlELCBQ
YXNzUmVmUHRyPEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk+KTsKIAogICAgIGludDY0X3Qg
c3BlbGxEb2N1bWVudFRhZygpOwotICAgIHZvaWQgZGlkRmluaXNoQ2hlY2tpbmdUZXh0KHVpbnQ2
NF90IHJlcXVlc3RJRCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlRleHRDaGVja2luZ1Jlc3VsdD4m
KSBjb25zdDsKLSAgICB2b2lkIGRpZENhbmNlbENoZWNraW5nVGV4dCh1aW50NjRfdCByZXF1ZXN0
SUQpIGNvbnN0OworICAgIHZvaWQgZGlkRmluaXNoQ2hlY2tpbmdUZXh0KHVpbnQ2NF90IHJlcXVl
c3RJRCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlRleHRDaGVja2luZ1Jlc3VsdD4mKTsKKyAgICB2
b2lkIGRpZENhbmNlbENoZWNraW5nVGV4dCh1aW50NjRfdCByZXF1ZXN0SUQpOwogCiAgICAgdm9p
ZCBjb25uZWN0aW9uV2lsbE9wZW4oQ29yZUlQQzo6Q29ubmVjdGlvbiopOwogICAgIHZvaWQgY29u
bmVjdGlvbldpbGxDbG9zZShDb3JlSVBDOjpDb25uZWN0aW9uKik7CkBAIC04NDcsNyArODQ3LDcg
QEAgcHVibGljOgogICAgIFdlYkNvcmU6OlNjcm9sbFBpbm5pbmdCZWhhdmlvciBzY3JvbGxQaW5u
aW5nQmVoYXZpb3IoKSB7IHJldHVybiBtX3Njcm9sbFBpbm5pbmdCZWhhdmlvcjsgfQogICAgICAg
ICAKIHByaXZhdGU6Ci0gICAgV2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmLCBQYXNzUmVmUHRyPFdl
YlByb2Nlc3NQcm94eT4sIFdlYlBhZ2VHcm91cCYsIHVpbnQ2NF90IHBhZ2VJRCk7CisgICAgV2Vi
UGFnZVByb3h5KFBhZ2VDbGllbnQmLCBXZWJQcm9jZXNzUHJveHkmLCBXZWJQYWdlR3JvdXAmLCB1
aW50NjRfdCBwYWdlSUQpOwogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplKCk7CiAgICAgdm9p
ZCBpbml0aWFsaXplQ3JlYXRpb25QYXJhbWV0ZXJzKCk7CiAKQEAgLTExNTMsNyArMTE1Myw3IEBA
IHByaXZhdGU6CiAjZW5kaWYKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxEcmF3aW5nQXJlYVByb3h5
PiBtX2RyYXdpbmdBcmVhOwotICAgIFJlZlB0cjxXZWJQcm9jZXNzUHJveHk+IG1fcHJvY2VzczsK
KyAgICBSZWY8V2ViUHJvY2Vzc1Byb3h5PiBtX3Byb2Nlc3M7CiAgICAgUmVmPFdlYlBhZ2VHcm91
cD4gbV9wYWdlR3JvdXA7CiAgICAgUmVmUHRyPFdlYkZyYW1lUHJveHk+IG1fbWFpbkZyYW1lOwog
ICAgIFJlZlB0cjxXZWJGcmFtZVByb3h5PiBtX2ZvY3VzZWRGcmFtZTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCShyZXZpc2lvbiAxNTk5MDAp
CisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNzYsMTIgKzc2LDEyIEBAIHN0YXRpYyBXZWJQcm9jZXNzUHJveHk6OldlYlBh
Z2VQcm94eU1hcCYKICAgICByZXR1cm4gcGFnZU1hcDsKIH0KIAotUGFzc1JlZlB0cjxXZWJQcm9j
ZXNzUHJveHk+IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlKFBhc3NSZWZQdHI8V2ViQ29udGV4dD4g
Y29udGV4dCkKK1Bhc3NSZWZQdHI8V2ViUHJvY2Vzc1Byb3h5PiBXZWJQcm9jZXNzUHJveHk6OmNy
ZWF0ZShXZWJDb250ZXh0JiBjb250ZXh0KQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2Vi
UHJvY2Vzc1Byb3h5KGNvbnRleHQpKTsKIH0KIAotV2ViUHJvY2Vzc1Byb3h5OjpXZWJQcm9jZXNz
UHJveHkoUGFzc1JlZlB0cjxXZWJDb250ZXh0PiBjb250ZXh0KQorV2ViUHJvY2Vzc1Byb3h5OjpX
ZWJQcm9jZXNzUHJveHkoV2ViQ29udGV4dCYgY29udGV4dCkKICAgICA6IG1fcmVzcG9uc2l2ZW5l
c3NUaW1lcih0aGlzKQogICAgICwgbV9jb250ZXh0KGNvbnRleHQpCiAgICAgLCBtX21heUhhdmVV
bml2ZXJzYWxGaWxlUmVhZFNhbmRib3hFeHRlbnNpb24oZmFsc2UpCkBAIC0xNjMsNyArMTYzLDcg
QEAgV2ViUGFnZVByb3h5KiBXZWJQcm9jZXNzUHJveHk6OndlYlBhZ2UodQogUGFzc1JlZlB0cjxX
ZWJQYWdlUHJveHk+IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlV2ViUGFnZShQYWdlQ2xpZW50JiBw
YWdlQ2xpZW50LCBXZWJQYWdlR3JvdXAmIHBhZ2VHcm91cCkKIHsKICAgICB1aW50NjRfdCBwYWdl
SUQgPSBnZW5lcmF0ZVBhZ2VJRCgpOwotICAgIFJlZlB0cjxXZWJQYWdlUHJveHk+IHdlYlBhZ2Ug
PSBXZWJQYWdlUHJveHk6OmNyZWF0ZShwYWdlQ2xpZW50LCB0aGlzLCBwYWdlR3JvdXAsIHBhZ2VJ
RCk7CisgICAgUmVmUHRyPFdlYlBhZ2VQcm94eT4gd2ViUGFnZSA9IFdlYlBhZ2VQcm94eTo6Y3Jl
YXRlKHBhZ2VDbGllbnQsICp0aGlzLCBwYWdlR3JvdXAsIHBhZ2VJRCk7CiAgICAgbV9wYWdlTWFw
LnNldChwYWdlSUQsIHdlYlBhZ2UuZ2V0KCkpOwogICAgIGdsb2JhbFBhZ2VNYXAoKS5zZXQocGFn
ZUlELCB3ZWJQYWdlLmdldCgpKTsKICNpZiBQTEFURk9STShNQUMpCkBAIC01NDUsNyArNTQ1LDcg
QEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZE5hdmlnYXRlV2l0aE5hdgogICAgIE1FU1NBR0Vf
Q0hFQ0soZnJhbWUpOwogICAgIE1FU1NBR0VfQ0hFQ0soZnJhbWUtPnBhZ2UoKSA9PSBwYWdlKTsK
ICAgICAKLSAgICBtX2NvbnRleHQtPmhpc3RvcnlDbGllbnQoKS5kaWROYXZpZ2F0ZVdpdGhOYXZp
Z2F0aW9uRGF0YShtX2NvbnRleHQuZ2V0KCksIHBhZ2UsIHN0b3JlLCBmcmFtZSk7CisgICAgbV9j
b250ZXh0LT5oaXN0b3J5Q2xpZW50KCkuZGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGEoJm1f
Y29udGV4dC5nZXQoKSwgcGFnZSwgc3RvcmUsIGZyYW1lKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNz
UHJveHk6OmRpZFBlcmZvcm1DbGllbnRSZWRpcmVjdCh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFN0
cmluZyYgc291cmNlVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uVVJMU3RyaW5n
LCB1aW50NjRfdCBmcmFtZUlEKQpAQCAtNTYzLDcgKzU2Myw3IEBAIHZvaWQgV2ViUHJvY2Vzc1By
b3h5OjpkaWRQZXJmb3JtQ2xpZW50UmUKICAgICBNRVNTQUdFX0NIRUNLX1VSTChzb3VyY2VVUkxT
dHJpbmcpOwogICAgIE1FU1NBR0VfQ0hFQ0tfVVJMKGRlc3RpbmF0aW9uVVJMU3RyaW5nKTsKIAot
ICAgIG1fY29udGV4dC0+aGlzdG9yeUNsaWVudCgpLmRpZFBlcmZvcm1DbGllbnRSZWRpcmVjdCht
X2NvbnRleHQuZ2V0KCksIHBhZ2UsIHNvdXJjZVVSTFN0cmluZywgZGVzdGluYXRpb25VUkxTdHJp
bmcsIGZyYW1lKTsKKyAgICBtX2NvbnRleHQtPmhpc3RvcnlDbGllbnQoKS5kaWRQZXJmb3JtQ2xp
ZW50UmVkaXJlY3QoJm1fY29udGV4dC5nZXQoKSwgcGFnZSwgc291cmNlVVJMU3RyaW5nLCBkZXN0
aW5hdGlvblVSTFN0cmluZywgZnJhbWUpOwogfQogCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlk
UGVyZm9ybVNlcnZlclJlZGlyZWN0KHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgU3RyaW5nJiBzb3Vy
Y2VVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25VUkxTdHJpbmcsIHVpbnQ2NF90
IGZyYW1lSUQpCkBAIC01ODEsNyArNTgxLDcgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZFBl
cmZvcm1TZXJ2ZXJSZQogICAgIE1FU1NBR0VfQ0hFQ0tfVVJMKHNvdXJjZVVSTFN0cmluZyk7CiAg
ICAgTUVTU0FHRV9DSEVDS19VUkwoZGVzdGluYXRpb25VUkxTdHJpbmcpOwogCi0gICAgbV9jb250
ZXh0LT5oaXN0b3J5Q2xpZW50KCkuZGlkUGVyZm9ybVNlcnZlclJlZGlyZWN0KG1fY29udGV4dC5n
ZXQoKSwgcGFnZSwgc291cmNlVVJMU3RyaW5nLCBkZXN0aW5hdGlvblVSTFN0cmluZywgZnJhbWUp
OworICAgIG1fY29udGV4dC0+aGlzdG9yeUNsaWVudCgpLmRpZFBlcmZvcm1TZXJ2ZXJSZWRpcmVj
dCgmbV9jb250ZXh0LmdldCgpLCBwYWdlLCBzb3VyY2VVUkxTdHJpbmcsIGRlc3RpbmF0aW9uVVJM
U3RyaW5nLCBmcmFtZSk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWRVcGRhdGVIaXN0
b3J5VGl0bGUodWludDY0X3QgcGFnZUlELCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJp
bmcmIHVybCwgdWludDY0X3QgZnJhbWVJRCkKQEAgLTU5NSw3ICs1OTUsNyBAQCB2b2lkIFdlYlBy
b2Nlc3NQcm94eTo6ZGlkVXBkYXRlSGlzdG9yeVRpCiAgICAgTUVTU0FHRV9DSEVDSyhmcmFtZS0+
cGFnZSgpID09IHBhZ2UpOwogICAgIE1FU1NBR0VfQ0hFQ0tfVVJMKHVybCk7CiAKLSAgICBtX2Nv
bnRleHQtPmhpc3RvcnlDbGllbnQoKS5kaWRVcGRhdGVIaXN0b3J5VGl0bGUobV9jb250ZXh0Lmdl
dCgpLCBwYWdlLCB0aXRsZSwgdXJsLCBmcmFtZSk7CisgICAgbV9jb250ZXh0LT5oaXN0b3J5Q2xp
ZW50KCkuZGlkVXBkYXRlSGlzdG9yeVRpdGxlKCZtX2NvbnRleHQuZ2V0KCksIHBhZ2UsIHRpdGxl
LCB1cmwsIGZyYW1lKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzUHJveHk6OnBhZ2VWaXNpYmlsaXR5
Q2hhbmdlZChXZWJLaXQ6OldlYlBhZ2VQcm94eSAqcGFnZSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgJKHJldmlzaW9uIDE1OTkwMCkKKysrIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAt
NjQsNyArNjQsNyBAQCBwdWJsaWM6CiAgICAgdHlwZWRlZiBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQ
dHI8V2ViRnJhbWVQcm94eT4+IFdlYkZyYW1lUHJveHlNYXA7CiAgICAgdHlwZWRlZiBIYXNoTWFw
PHVpbnQ2NF90LCBXZWJQYWdlUHJveHkqPiBXZWJQYWdlUHJveHlNYXA7CiAKLSAgICBzdGF0aWMg
UGFzc1JlZlB0cjxXZWJQcm9jZXNzUHJveHk+IGNyZWF0ZShQYXNzUmVmUHRyPFdlYkNvbnRleHQ+
KTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJQcm9jZXNzUHJveHk+IGNyZWF0ZShXZWJDb250
ZXh0Jik7CiAgICAgfldlYlByb2Nlc3NQcm94eSgpOwogCiAgICAgc3RhdGljIFdlYlByb2Nlc3NQ
cm94eSogZnJvbUNvbm5lY3Rpb24oQ29yZUlQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbikKQEAg
LTc0LDcgKzc0LDcgQEAgcHVibGljOgogCiAgICAgV2ViQ29ubmVjdGlvbiogd2ViQ29ubmVjdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1fd2ViQ29ubmVjdGlvbi5nZXQoKTsgfQogCi0gICAgV2ViQ29u
dGV4dCogY29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dC5nZXQoKTsgfQorICAgIFdl
YkNvbnRleHQmIGNvbnRleHQoKSB7IHJldHVybiBtX2NvbnRleHQuZ2V0KCk7IH0KIAogICAgIHN0
YXRpYyBXZWJQYWdlUHJveHkqIHdlYlBhZ2UodWludDY0X3QgcGFnZUlEKTsKICAgICBQYXNzUmVm
UHRyPFdlYlBhZ2VQcm94eT4gY3JlYXRlV2ViUGFnZShQYWdlQ2xpZW50JiwgV2ViUGFnZUdyb3Vw
Jik7CkBAIC0xMjQsNyArMTI0LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVxdWVzdFRlcm1pbmF0
aW9uKCk7CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgV2ViUHJvY2Vzc1Byb3h5KFBhc3NSZWZQ
dHI8V2ViQ29udGV4dD4pOworICAgIGV4cGxpY2l0IFdlYlByb2Nlc3NQcm94eShXZWJDb250ZXh0
Jik7CiAKICAgICAvLyBGcm9tIENoaWxkUHJvY2Vzc1Byb3h5CiAgICAgdmlydHVhbCB2b2lkIGdl
dExhdW5jaE9wdGlvbnMoUHJvY2Vzc0xhdW5jaGVyOjpMYXVuY2hPcHRpb25zJikgT1ZFUlJJREU7
CkBAIC0xODYsNyArMTg2LDcgQEAgcHJpdmF0ZToKICAgICBSZXNwb25zaXZlbmVzc1RpbWVyIG1f
cmVzcG9uc2l2ZW5lc3NUaW1lcjsKICAgICAKICAgICBSZWZQdHI8V2ViQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcz4gbV93ZWJDb25uZWN0aW9uOwotICAgIFJlZlB0cjxXZWJDb250ZXh0PiBtX2NvbnRl
eHQ7CisgICAgUmVmPFdlYkNvbnRleHQ+IG1fY29udGV4dDsKIAogICAgIGJvb2wgbV9tYXlIYXZl
VW5pdmVyc2FsRmlsZVJlYWRTYW5kYm94RXh0ZW5zaW9uOyAvLyBUcnVlIGlmIGEgcmVhZCBleHRl
bnNpb24gZm9yICIvIiB3YXMgZXZlciBncmFudGVkIC0gd2UgZG9uJ3QgdHJhY2sgd2hldGhlciBX
ZWJQcm9jZXNzIHN0aWxsIGhhcyBpdC4KICAgICBIYXNoU2V0PFN0cmluZz4gbV9sb2NhbFBhdGhz
V2l0aEFzc3VtZWRSZWFkQWNjZXNzOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9DL1dLUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9DL1dLUGFnZS5jcHAJKHJldmlzaW9uIDE1OTkwMCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSw3IEBAIFdL
VHlwZUlEIFdLUGFnZUdldFR5cGVJRCgpCiAKIFdLQ29udGV4dFJlZiBXS1BhZ2VHZXRDb250ZXh0
KFdLUGFnZVJlZiBwYWdlUmVmKQogewotICAgIHJldHVybiB0b0FQSSh0b0ltcGwocGFnZVJlZikt
PnByb2Nlc3MoKS0+Y29udGV4dCgpKTsKKyAgICByZXR1cm4gdG9BUEkoJnRvSW1wbChwYWdlUmVm
KS0+cHJvY2VzcygpLmNvbnRleHQoKSk7CiB9CiAKIFdLUGFnZUdyb3VwUmVmIFdLUGFnZUdldFBh
Z2VHcm91cChXS1BhZ2VSZWYgcGFnZVJlZikKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9tYWMvV0tQYWdlUHJpdmF0ZU1hYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL21hYy9XS1BhZ2VQcml2YXRlTWFjLmNwcAkocmV2aXNpb24g
MTU5OTAwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL21hYy9XS1BhZ2VQcml2
YXRlTWFjLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQsNSArNDQsNSBAQCBib29sIFdLUGFnZUlz
VVJMS25vd25IU1RTSG9zdChXS1BhZ2VSZWYgCiAgICAgV2ViUGFnZVByb3h5KiB3ZWJQYWdlUHJv
eHkgPSB0b0ltcGwocGFnZSk7CiAgICAgYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkID0gd2Vi
UGFnZVByb3h5LT5wYWdlR3JvdXAoKS5wcmVmZXJlbmNlcygpLT5wcml2YXRlQnJvd3NpbmdFbmFi
bGVkKCk7CiAKLSAgICByZXR1cm4gd2ViUGFnZVByb3h5LT5wcm9jZXNzKCktPmNvbnRleHQoKS0+
aXNVUkxLbm93bkhTVFNIb3N0KHRvSW1wbCh1cmwpLT5zdHJpbmcoKSwgcHJpdmF0ZUJyb3dzaW5n
RW5hYmxlZCk7CisgICAgcmV0dXJuIHdlYlBhZ2VQcm94eS0+cHJvY2VzcygpLmNvbnRleHQoKS5p
c1VSTEtub3duSFNUU0hvc3QodG9JbXBsKHVybCktPnN0cmluZygpLCBwcml2YXRlQnJvd3NpbmdF
bmFibGVkKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tC
cm93c2luZ0NvbnRleHRDb250cm9sbGVyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyLm1tCShyZXZp
c2lvbiAxNTk5MDApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQnJv
d3NpbmdDb250ZXh0Q29udHJvbGxlci5tbQkod29ya2luZyBjb3B5KQpAQCAtMTEzLDEwICsxMTMs
NyBAQCAtICh2b2lkKV9maW5pc2hJbml0aWFsaXphdGlvbgogCiAtIChXS1Byb2Nlc3NHcm91cCAq
KXByb2Nlc3NHcm91cAogewotICAgIFdlYkNvbnRleHQqIGNvbnRleHQgPSBfcGFnZS0+cHJvY2Vz
cygpLT5jb250ZXh0KCk7Ci0gICAgaWYgKCFjb250ZXh0KQotICAgICAgICByZXR1cm4gbmlsOwot
ICAgIHJldHVybiB3cmFwcGVyKCpjb250ZXh0KTsKKyAgICByZXR1cm4gd3JhcHBlcihfcGFnZS0+
cHJvY2VzcygpLmNvbnRleHQoKSk7CiB9CiAKIC0gKFdLQnJvd3NpbmdDb250ZXh0R3JvdXAgKili
cm93c2luZ0NvbnRleHRHcm91cApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9t
YWMvV0tWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
bWFjL1dLVmlldy5tbQkocmV2aXNpb24gMTU5OTAwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC05MTYsNyArOTE2LDcgQEAg
LSAoSUJBY3Rpb24pdG9nZ2xlQ29udGludW91c1NwZWxsQ2hlY2tpbgogICAgIGJvb2wgc3BlbGxD
aGVja2luZ0VuYWJsZWQgPSAhVGV4dENoZWNrZXI6OnN0YXRlKCkuaXNDb250aW51b3VzU3BlbGxD
aGVja2luZ0VuYWJsZWQ7CiAgICAgVGV4dENoZWNrZXI6OnNldENvbnRpbnVvdXNTcGVsbENoZWNr
aW5nRW5hYmxlZChzcGVsbENoZWNraW5nRW5hYmxlZCk7CiAKLSAgICBfZGF0YS0+X3BhZ2UtPnBy
b2Nlc3MoKS0+dXBkYXRlVGV4dENoZWNrZXJTdGF0ZSgpOworICAgIF9kYXRhLT5fcGFnZS0+cHJv
Y2VzcygpLnVwZGF0ZVRleHRDaGVja2VyU3RhdGUoKTsKIH0KIAogLSAoQk9PTClpc0dyYW1tYXJD
aGVja2luZ0VuYWJsZWQKQEAgLTkzMCw3ICs5MzAsNyBAQCAtICh2b2lkKXNldEdyYW1tYXJDaGVj
a2luZ0VuYWJsZWQ6KEJPT0wpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBUZXh0Q2hlY2tl
cjo6c2V0R3JhbW1hckNoZWNraW5nRW5hYmxlZChmbGFnKTsKLSAgICBfZGF0YS0+X3BhZ2UtPnBy
b2Nlc3MoKS0+dXBkYXRlVGV4dENoZWNrZXJTdGF0ZSgpOworICAgIF9kYXRhLT5fcGFnZS0+cHJv
Y2VzcygpLnVwZGF0ZVRleHRDaGVja2VyU3RhdGUoKTsKIH0KIAogLSAoSUJBY3Rpb24pdG9nZ2xl
R3JhbW1hckNoZWNraW5nOihpZClzZW5kZXIKQEAgLTkzOCwxNCArOTM4LDE0IEBAIC0gKElCQWN0
aW9uKXRvZ2dsZUdyYW1tYXJDaGVja2luZzooaWQpc2UKICAgICBib29sIGdyYW1tYXJDaGVja2lu
Z0VuYWJsZWQgPSAhVGV4dENoZWNrZXI6OnN0YXRlKCkuaXNHcmFtbWFyQ2hlY2tpbmdFbmFibGVk
OwogICAgIFRleHRDaGVja2VyOjpzZXRHcmFtbWFyQ2hlY2tpbmdFbmFibGVkKGdyYW1tYXJDaGVj
a2luZ0VuYWJsZWQpOwogCi0gICAgX2RhdGEtPl9wYWdlLT5wcm9jZXNzKCktPnVwZGF0ZVRleHRD
aGVja2VyU3RhdGUoKTsKKyAgICBfZGF0YS0+X3BhZ2UtPnByb2Nlc3MoKS51cGRhdGVUZXh0Q2hl
Y2tlclN0YXRlKCk7CiB9CiAKIC0gKElCQWN0aW9uKXRvZ2dsZUF1dG9tYXRpY1NwZWxsaW5nQ29y
cmVjdGlvbjooaWQpc2VuZGVyCiB7CiAgICAgVGV4dENoZWNrZXI6OnNldEF1dG9tYXRpY1NwZWxs
aW5nQ29ycmVjdGlvbkVuYWJsZWQoIVRleHRDaGVja2VyOjpzdGF0ZSgpLmlzQXV0b21hdGljU3Bl
bGxpbmdDb3JyZWN0aW9uRW5hYmxlZCk7CiAKLSAgICBfZGF0YS0+X3BhZ2UtPnByb2Nlc3MoKS0+
dXBkYXRlVGV4dENoZWNrZXJTdGF0ZSgpOworICAgIF9kYXRhLT5fcGFnZS0+cHJvY2VzcygpLnVw
ZGF0ZVRleHRDaGVja2VyU3RhdGUoKTsKIH0KIAogLSAodm9pZClvcmRlckZyb250U3Vic3RpdHV0
aW9uc1BhbmVsOihpZClzZW5kZXIKQEAgLTk4MCwxMyArOTgwLDEzIEBAIC0gKHZvaWQpc2V0QXV0
b21hdGljUXVvdGVTdWJzdGl0dXRpb25FbmEKICAgICAgICAgcmV0dXJuOwogCiAgICAgVGV4dENo
ZWNrZXI6OnNldEF1dG9tYXRpY1F1b3RlU3Vic3RpdHV0aW9uRW5hYmxlZChmbGFnKTsKLSAgICBf
ZGF0YS0+X3BhZ2UtPnByb2Nlc3MoKS0+dXBkYXRlVGV4dENoZWNrZXJTdGF0ZSgpOworICAgIF9k
YXRhLT5fcGFnZS0+cHJvY2VzcygpLnVwZGF0ZVRleHRDaGVja2VyU3RhdGUoKTsKIH0KIAogLSAo
dm9pZCl0b2dnbGVBdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbjooaWQpc2VuZGVyCiB7CiAgICAg
VGV4dENoZWNrZXI6OnNldEF1dG9tYXRpY1F1b3RlU3Vic3RpdHV0aW9uRW5hYmxlZCghVGV4dENo
ZWNrZXI6OnN0YXRlKCkuaXNBdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbkVuYWJsZWQpOwotICAg
IF9kYXRhLT5fcGFnZS0+cHJvY2VzcygpLT51cGRhdGVUZXh0Q2hlY2tlclN0YXRlKCk7CisgICAg
X2RhdGEtPl9wYWdlLT5wcm9jZXNzKCkudXBkYXRlVGV4dENoZWNrZXJTdGF0ZSgpOwogfQogCiAt
IChCT09MKWlzQXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbkVuYWJsZWQKQEAgLTEwMDAsMTMgKzEw
MDAsMTMgQEAgLSAodm9pZClzZXRBdXRvbWF0aWNEYXNoU3Vic3RpdHV0aW9uRW5hYgogICAgICAg
ICByZXR1cm47CiAKICAgICBUZXh0Q2hlY2tlcjo6c2V0QXV0b21hdGljRGFzaFN1YnN0aXR1dGlv
bkVuYWJsZWQoZmxhZyk7Ci0gICAgX2RhdGEtPl9wYWdlLT5wcm9jZXNzKCktPnVwZGF0ZVRleHRD
aGVja2VyU3RhdGUoKTsKKyAgICBfZGF0YS0+X3BhZ2UtPnByb2Nlc3MoKS51cGRhdGVUZXh0Q2hl
Y2tlclN0YXRlKCk7CiB9CiAKIC0gKHZvaWQpdG9nZ2xlQXV0b21hdGljRGFzaFN1YnN0aXR1dGlv
bjooaWQpc2VuZGVyCiB7CiAgICAgVGV4dENoZWNrZXI6OnNldEF1dG9tYXRpY0Rhc2hTdWJzdGl0
dXRpb25FbmFibGVkKCFUZXh0Q2hlY2tlcjo6c3RhdGUoKS5pc0F1dG9tYXRpY0Rhc2hTdWJzdGl0
dXRpb25FbmFibGVkKTsKLSAgICBfZGF0YS0+X3BhZ2UtPnByb2Nlc3MoKS0+dXBkYXRlVGV4dENo
ZWNrZXJTdGF0ZSgpOworICAgIF9kYXRhLT5fcGFnZS0+cHJvY2VzcygpLnVwZGF0ZVRleHRDaGVj
a2VyU3RhdGUoKTsKIH0KIAogLSAoQk9PTClpc0F1dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFibGVk
CkBAIC0xMDIwLDEzICsxMDIwLDEzIEBAIC0gKHZvaWQpc2V0QXV0b21hdGljTGlua0RldGVjdGlv
bkVuYWJsZWQKICAgICAgICAgcmV0dXJuOwogCiAgICAgVGV4dENoZWNrZXI6OnNldEF1dG9tYXRp
Y0xpbmtEZXRlY3Rpb25FbmFibGVkKGZsYWcpOwotICAgIF9kYXRhLT5fcGFnZS0+cHJvY2Vzcygp
LT51cGRhdGVUZXh0Q2hlY2tlclN0YXRlKCk7CisgICAgX2RhdGEtPl9wYWdlLT5wcm9jZXNzKCku
dXBkYXRlVGV4dENoZWNrZXJTdGF0ZSgpOwogfQogCiAtICh2b2lkKXRvZ2dsZUF1dG9tYXRpY0xp
bmtEZXRlY3Rpb246KGlkKXNlbmRlcgogewogICAgIFRleHRDaGVja2VyOjpzZXRBdXRvbWF0aWNM
aW5rRGV0ZWN0aW9uRW5hYmxlZCghVGV4dENoZWNrZXI6OnN0YXRlKCkuaXNBdXRvbWF0aWNMaW5r
RGV0ZWN0aW9uRW5hYmxlZCk7Ci0gICAgX2RhdGEtPl9wYWdlLT5wcm9jZXNzKCktPnVwZGF0ZVRl
eHRDaGVja2VyU3RhdGUoKTsKKyAgICBfZGF0YS0+X3BhZ2UtPnByb2Nlc3MoKS51cGRhdGVUZXh0
Q2hlY2tlclN0YXRlKCk7CiB9CiAKIC0gKEJPT0wpaXNBdXRvbWF0aWNUZXh0UmVwbGFjZW1lbnRF
bmFibGVkCkBAIC0xMDQwLDEzICsxMDQwLDEzIEBAIC0gKHZvaWQpc2V0QXV0b21hdGljVGV4dFJl
cGxhY2VtZW50RW5hYmwKICAgICAgICAgcmV0dXJuOwogCiAgICAgVGV4dENoZWNrZXI6OnNldEF1
dG9tYXRpY1RleHRSZXBsYWNlbWVudEVuYWJsZWQoZmxhZyk7Ci0gICAgX2RhdGEtPl9wYWdlLT5w
cm9jZXNzKCktPnVwZGF0ZVRleHRDaGVja2VyU3RhdGUoKTsKKyAgICBfZGF0YS0+X3BhZ2UtPnBy
b2Nlc3MoKS51cGRhdGVUZXh0Q2hlY2tlclN0YXRlKCk7CiB9CiAKIC0gKHZvaWQpdG9nZ2xlQXV0
b21hdGljVGV4dFJlcGxhY2VtZW50OihpZClzZW5kZXIKIHsKICAgICBUZXh0Q2hlY2tlcjo6c2V0
QXV0b21hdGljVGV4dFJlcGxhY2VtZW50RW5hYmxlZCghVGV4dENoZWNrZXI6OnN0YXRlKCkuaXNB
dXRvbWF0aWNUZXh0UmVwbGFjZW1lbnRFbmFibGVkKTsKLSAgICBfZGF0YS0+X3BhZ2UtPnByb2Nl
c3MoKS0+dXBkYXRlVGV4dENoZWNrZXJTdGF0ZSgpOworICAgIF9kYXRhLT5fcGFnZS0+cHJvY2Vz
cygpLnVwZGF0ZVRleHRDaGVja2VyU3RhdGUoKTsKIH0KIAogLSAodm9pZCl1cHBlcmNhc2VXb3Jk
OihpZClzZW5kZXIKQEAgLTE4MjAsNyArMTgyMCw3IEBAIC0gKEJPT0wpcGVyZm9ybURyYWdPcGVy
YXRpb246KGlkIDxOU0RyYWcKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgc2FuZGJveEV4
dGVuc2lvbkhhbmRsZTsKICAgICBib29sIGNyZWF0ZWRFeHRlbnNpb24gPSBtYXliZUNyZWF0ZVNh
bmRib3hFeHRlbnNpb25Gcm9tUGFzdGVib2FyZChbZHJhZ2dpbmdJbmZvIGRyYWdnaW5nUGFzdGVi
b2FyZF0sIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpOwogICAgIGlmIChjcmVhdGVkRXh0ZW5zaW9u
KQotICAgICAgICBfZGF0YS0+X3BhZ2UtPnByb2Nlc3MoKS0+d2lsbEFjcXVpcmVVbml2ZXJzYWxG
aWxlUmVhZFNhbmRib3hFeHRlbnNpb24oKTsKKyAgICAgICAgX2RhdGEtPl9wYWdlLT5wcm9jZXNz
KCkud2lsbEFjcXVpcmVVbml2ZXJzYWxGaWxlUmVhZFNhbmRib3hFeHRlbnNpb24oKTsKIAogICAg
IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5IHNhbmRib3hFeHRlbnNpb25Gb3JVcGxvYWQ7
CiAgICAgY3JlYXRlU2FuZGJveEV4dGVuc2lvbnNGb3JGaWxlVXBsb2FkKFtkcmFnZ2luZ0luZm8g
ZHJhZ2dpbmdQYXN0ZWJvYXJkXSwgc2FuZGJveEV4dGVuc2lvbkZvclVwbG9hZCk7CkBAIC0yMDk1
LDggKzIwOTUsOCBAQCAtICh2b2lkKV91cGRhdGVSZW1vdGVBY2Nlc3NpYmlsaXR5UmVnaXN0CiAg
ICAgLy8gbmVlZHMgdG8gYmUgdXBkYXRlZCB3aXRoIHRoZSBwaWQgb2YgdGhlIHJlbW90ZSBwcm9j
ZXNzLiBJZiB0aGUgcHJvY2VzcyBpcyBnb2luZwogICAgIC8vIGF3YXksIHRoYXQgaW5mb3JtYXRp
b24gaXMgbm90IHByZXNlbnQgaW4gV2ViUHJvY2VzcwogICAgIHBpZF90IHBpZCA9IDA7Ci0gICAg
aWYgKHJlZ2lzdGVyUHJvY2VzcyAmJiBfZGF0YS0+X3BhZ2UtPnByb2Nlc3MoKSkKLSAgICAgICAg
cGlkID0gX2RhdGEtPl9wYWdlLT5wcm9jZXNzKCktPnByb2Nlc3NJZGVudGlmaWVyKCk7CisgICAg
aWYgKHJlZ2lzdGVyUHJvY2VzcykKKyAgICAgICAgcGlkID0gX2RhdGEtPl9wYWdlLT5wcm9jZXNz
KCkucHJvY2Vzc0lkZW50aWZpZXIoKTsKICAgICBlbHNlIGlmICghcmVnaXN0ZXJQcm9jZXNzKSB7
CiAgICAgICAgIHBpZCA9IFdLQVhSZW1vdGVQcm9jZXNzSWRlbnRpZmllcihfZGF0YS0+X3JlbW90
ZUFjY2Vzc2liaWxpdHlDaGlsZC5nZXQoKSk7CiAgICAgICAgIF9kYXRhLT5fcmVtb3RlQWNjZXNz
aWJpbGl0eUNoaWxkID0gbmlsOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Rvd25s
b2Fkcy9Eb3dubG9hZFByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuY3BwCShyZXZpc2lvbiAxNTk5MDApCisrKyBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01MCwxNCArNTAsMTQgQEAgc3RhdGljIHVpbnQ2NF90IGdlbmVyYXRlRG93
bmxvYWRJRCgpCiAgICAgcmV0dXJuICsrdW5pcXVlRG93bmxvYWRJRDsKIH0KICAgICAKLVBhc3NS
ZWZQdHI8RG93bmxvYWRQcm94eT4gRG93bmxvYWRQcm94eTo6Y3JlYXRlKERvd25sb2FkUHJveHlN
YXAmIGRvd25sb2FkUHJveHlNYXAsIFdlYkNvbnRleHQqIHdlYkNvbnRleHQpCitQYXNzUmVmUHRy
PERvd25sb2FkUHJveHk+IERvd25sb2FkUHJveHk6OmNyZWF0ZShEb3dubG9hZFByb3h5TWFwJiBk
b3dubG9hZFByb3h5TWFwLCBXZWJDb250ZXh0JiB3ZWJDb250ZXh0KQogewogICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgRG93bmxvYWRQcm94eShkb3dubG9hZFByb3h5TWFwLCB3ZWJDb250ZXh0KSk7
CiB9CiAKLURvd25sb2FkUHJveHk6OkRvd25sb2FkUHJveHkoRG93bmxvYWRQcm94eU1hcCYgZG93
bmxvYWRQcm94eU1hcCwgV2ViQ29udGV4dCogd2ViQ29udGV4dCkKK0Rvd25sb2FkUHJveHk6OkRv
d25sb2FkUHJveHkoRG93bmxvYWRQcm94eU1hcCYgZG93bmxvYWRQcm94eU1hcCwgV2ViQ29udGV4
dCYgd2ViQ29udGV4dCkKICAgICA6IG1fZG93bmxvYWRQcm94eU1hcChkb3dubG9hZFByb3h5TWFw
KQotICAgICwgbV93ZWJDb250ZXh0KHdlYkNvbnRleHQpCisgICAgLCBtX3dlYkNvbnRleHQoJndl
YkNvbnRleHQpCiAgICAgLCBtX2Rvd25sb2FkSUQoZ2VuZXJhdGVEb3dubG9hZElEKCkpCiB7CiB9
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHku
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25s
b2FkUHJveHkuaAkocmV2aXNpb24gMTU5OTAwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDcg
QEAgY2xhc3MgV2ViUGFnZVByb3h5OwogCiBjbGFzcyBEb3dubG9hZFByb3h5IDogcHVibGljIEFQ
STo6VHlwZWRPYmplY3Q8QVBJOjpPYmplY3Q6OlR5cGU6OkRvd25sb2FkPiwgcHVibGljIENvcmVJ
UEM6Ok1lc3NhZ2VSZWNlaXZlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8RG93
bmxvYWRQcm94eT4gY3JlYXRlKERvd25sb2FkUHJveHlNYXAmLCBXZWJDb250ZXh0Kik7CisgICAg
c3RhdGljIFBhc3NSZWZQdHI8RG93bmxvYWRQcm94eT4gY3JlYXRlKERvd25sb2FkUHJveHlNYXAm
LCBXZWJDb250ZXh0Jik7CiAgICAgfkRvd25sb2FkUHJveHkoKTsKIAogICAgIHVpbnQ2NF90IGRv
d25sb2FkSUQoKSBjb25zdCB7IHJldHVybiBtX2Rvd25sb2FkSUQ7IH0KQEAgLTY0LDcgKzY0LDcg
QEAgcHVibGljOgogICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNEb3dubG9hZFByb3h5TWVzc2FnZShD
b3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZURlY29kZXImLCBzdGQ6OnVuaXF1
ZV9wdHI8Q29yZUlQQzo6TWVzc2FnZUVuY29kZXI+Jik7CiAKIHByaXZhdGU6Ci0gICAgZXhwbGlj
aXQgRG93bmxvYWRQcm94eShEb3dubG9hZFByb3h5TWFwJiwgV2ViQ29udGV4dCopOworICAgIGV4
cGxpY2l0IERvd25sb2FkUHJveHkoRG93bmxvYWRQcm94eU1hcCYsIFdlYkNvbnRleHQmKTsKIAog
ICAgIC8vIENvcmVJUEM6Ok1lc3NhZ2VSZWNlaXZlcgogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNl
aXZlTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZURlY29kZXIm
KSBPVkVSUklERTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93
bmxvYWRQcm94eU1hcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5TWFwLmNwcAkocmV2aXNpb24gMTU5OTAwKQorKysgU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5TWFwLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDQsNyArNDQsNyBAQCBEb3dubG9hZFByb3h5TWFwOjp+RG93bmxvYWRQ
cm94eU1hcCgpCiAgICAgQVNTRVJUKG1fZG93bmxvYWRzLmlzRW1wdHkoKSk7CiB9CiAKLURvd25s
b2FkUHJveHkqIERvd25sb2FkUHJveHlNYXA6OmNyZWF0ZURvd25sb2FkUHJveHkoV2ViQ29udGV4
dCogd2ViQ29udGV4dCkKK0Rvd25sb2FkUHJveHkqIERvd25sb2FkUHJveHlNYXA6OmNyZWF0ZURv
d25sb2FkUHJveHkoV2ViQ29udGV4dCYgd2ViQ29udGV4dCkKIHsKICAgICBSZWZQdHI8RG93bmxv
YWRQcm94eT4gZG93bmxvYWRQcm94eSA9IERvd25sb2FkUHJveHk6OmNyZWF0ZSgqdGhpcywgd2Vi
Q29udGV4dCk7CiAgICAgbV9kb3dubG9hZHMuc2V0KGRvd25sb2FkUHJveHktPmRvd25sb2FkSUQo
KSwgZG93bmxvYWRQcm94eSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRG93bmxv
YWRzL0Rvd25sb2FkUHJveHlNYXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHlNYXAuaAkocmV2aXNpb24gMTU5OTAwKQorKysg
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5TWFwLmgJKHdv
cmtpbmcgY29weSkKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IERvd25s
b2FkUHJveHlNYXAoQ2hpbGRQcm9jZXNzUHJveHkqKTsKICAgICB+RG93bmxvYWRQcm94eU1hcCgp
OwogCi0gICAgRG93bmxvYWRQcm94eSogY3JlYXRlRG93bmxvYWRQcm94eShXZWJDb250ZXh0Kik7
CisgICAgRG93bmxvYWRQcm94eSogY3JlYXRlRG93bmxvYWRQcm94eShXZWJDb250ZXh0Jik7CiAg
ICAgdm9pZCBkb3dubG9hZEZpbmlzaGVkKERvd25sb2FkUHJveHkqKTsKIAogICAgIGJvb2wgaXNF
bXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fZG93bmxvYWRzLmlzRW1wdHkoKTsgfQpJbmRleDogU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NQcm94eS5jcHAJKHJldmlzaW9uIDE1OTkwMCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Nywx
MiArNDcsMTIgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCi1QYXNzUmVmUHRyPE5ldHdvcmtQcm9jZXNzUHJveHk+IE5ldHdvcmtQcm9jZXNzUHJveHk6
OmNyZWF0ZShXZWJDb250ZXh0KiB3ZWJDb250ZXh0KQorUGFzc1JlZlB0cjxOZXR3b3JrUHJvY2Vz
c1Byb3h5PiBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpjcmVhdGUoV2ViQ29udGV4dCYgd2ViQ29udGV4
dCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IE5ldHdvcmtQcm9jZXNzUHJveHkod2ViQ29u
dGV4dCkpOwogfQogCi1OZXR3b3JrUHJvY2Vzc1Byb3h5OjpOZXR3b3JrUHJvY2Vzc1Byb3h5KFdl
YkNvbnRleHQqIHdlYkNvbnRleHQpCitOZXR3b3JrUHJvY2Vzc1Byb3h5OjpOZXR3b3JrUHJvY2Vz
c1Byb3h5KFdlYkNvbnRleHQmIHdlYkNvbnRleHQpCiAgICAgOiBtX3dlYkNvbnRleHQod2ViQ29u
dGV4dCkKICAgICAsIG1fbnVtUGVuZGluZ0Nvbm5lY3Rpb25SZXF1ZXN0cygwKQogI2lmIEVOQUJM
RShDVVNUT01fUFJPVE9DT0xTKQpAQCAtMTE3LDcgKzExNyw3IEBAIHZvaWQgTmV0d29ya1Byb2Nl
c3NQcm94eTo6bmV0d29ya1Byb2Nlc3MKICAgICB9CiAKICAgICAvLyBUZWxsIHRoZSBuZXR3b3Jr
IHByb2Nlc3MgbWFuYWdlciB0byBmb3JnZXQgYWJvdXQgdGhpcyBuZXR3b3JrIHByb2Nlc3MgcHJv
eHkuIFRoaXMgbWF5IGNhdXNlIHVzIHRvIGJlIGRlbGV0ZWQuCi0gICAgbV93ZWJDb250ZXh0LT5u
ZXR3b3JrUHJvY2Vzc0NyYXNoZWQodGhpcyk7CisgICAgbV93ZWJDb250ZXh0Lm5ldHdvcmtQcm9j
ZXNzQ3Jhc2hlZCh0aGlzKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRSZWNl
aXZlTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBDb3JlSVBDOjpNZXNz
YWdlRGVjb2RlciYgZGVjb2RlcikKQEAgLTEyNSw3ICsxMjUsNyBAQCB2b2lkIE5ldHdvcmtQcm9j
ZXNzUHJveHk6OmRpZFJlY2VpdmVNZXNzCiAgICAgaWYgKGRpc3BhdGNoTWVzc2FnZShjb25uZWN0
aW9uLCBkZWNvZGVyKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKG1fd2ViQ29udGV4dC0+
ZGlzcGF0Y2hNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpKQorICAgIGlmIChtX3dlYkNvbnRl
eHQuZGlzcGF0Y2hNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpKQogICAgICAgICByZXR1cm47
CiAKICAgICBkaWRSZWNlaXZlTmV0d29ya1Byb2Nlc3NQcm94eU1lc3NhZ2UoY29ubmVjdGlvbiwg
ZGVjb2Rlcik7CkBAIC0xOTAsNyArMTkwLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpk
aWRGaW5pc2hMYXVuYwogICAgIG1fbnVtUGVuZGluZ0Nvbm5lY3Rpb25SZXF1ZXN0cyA9IDA7CiAK
ICNpZiBQTEFURk9STShNQUMpCi0gICAgaWYgKG1fd2ViQ29udGV4dC0+Y2FuRW5hYmxlUHJvY2Vz
c1N1cHByZXNzaW9uRm9yTmV0d29ya1Byb2Nlc3MoKSkKKyAgICBpZiAobV93ZWJDb250ZXh0LmNh
bkVuYWJsZVByb2Nlc3NTdXBwcmVzc2lvbkZvck5ldHdvcmtQcm9jZXNzKCkpCiAgICAgICAgIHNl
dFByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQodHJ1ZSk7CiAjZW5kaWYKIH0KSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5LmgJKHJldmlzaW9uIDE1OTkwMCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsNyArNTAsNyBA
QCBzdHJ1Y3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM7CiAKIGNsYXNzIE5ldHdv
cmtQcm9jZXNzUHJveHkgOiBwdWJsaWMgQ2hpbGRQcm9jZXNzUHJveHkgewogcHVibGljOgotICAg
IHN0YXRpYyBQYXNzUmVmUHRyPE5ldHdvcmtQcm9jZXNzUHJveHk+IGNyZWF0ZShXZWJDb250ZXh0
Kik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TmV0d29ya1Byb2Nlc3NQcm94eT4gY3JlYXRlKFdl
YkNvbnRleHQmKTsKICAgICB+TmV0d29ya1Byb2Nlc3NQcm94eSgpOwogCiAgICAgdm9pZCBnZXRO
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oUGFzc1JlZlB0cjxNZXNzYWdlczo6V2ViUHJvY2Vzc1By
b3h5OjpHZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4pOwpAQCAtNjIs
NyArNjIsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogcHJpdmF0ZToKLSAgICBOZXR3b3JrUHJvY2Vz
c1Byb3h5KFdlYkNvbnRleHQqKTsKKyAgICBOZXR3b3JrUHJvY2Vzc1Byb3h5KFdlYkNvbnRleHQm
KTsKIAogICAgIC8vIENoaWxkUHJvY2Vzc1Byb3h5CiAgICAgdmlydHVhbCB2b2lkIGdldExhdW5j
aE9wdGlvbnMoUHJvY2Vzc0xhdW5jaGVyOjpMYXVuY2hPcHRpb25zJikgT1ZFUlJJREU7CkBAIC04
Niw3ICs4Niw3IEBAIHByaXZhdGU6CiAgICAgLy8gUHJvY2Vzc0xhdW5jaGVyOjpDbGllbnQKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTGF1bmNoaW5nKFByb2Nlc3NMYXVuY2hlciosIENvcmVJ
UEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIpOwogCi0gICAgV2ViQ29udGV4dCogbV93ZWJDb250
ZXh0OworICAgIFdlYkNvbnRleHQmIG1fd2ViQ29udGV4dDsKICAgICAKICAgICB1bnNpZ25lZCBt
X251bVBlbmRpbmdDb25uZWN0aW9uUmVxdWVzdHM7CiAgICAgRGVxdWU8UmVmUHRyPE1lc3NhZ2Vz
OjpXZWJQcm9jZXNzUHJveHk6OkdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJl
cGx5Pj4gbV9wZW5kaW5nQ29ubmVjdGlvblJlcGxpZXM7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvTm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXJQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05vdGlm
aWNhdGlvbnMvTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCShy
ZXZpc2lvbiAxNTk5MDApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTm90aWZpY2F0aW9u
cy9Ob3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTYyLDcgKzYyLDcgQEAgdm9pZCBOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVz
dE1hbmFnZQogICAgIGlmICghcmVxdWVzdCkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIG1f
cGFnZS5wcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFJlY2VpdmVOb3RpZmlj
YXRpb25QZXJtaXNzaW9uRGVjaXNpb24obm90aWZpY2F0aW9uSUQsIGFsbG93KSwgbV9wYWdlLnBh
Z2VJRCgpKTsKKyAgICBtX3BhZ2UucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRp
ZFJlY2VpdmVOb3RpZmljYXRpb25QZXJtaXNzaW9uRGVjaXNpb24obm90aWZpY2F0aW9uSUQsIGFs
bG93KSwgbV9wYWdlLnBhZ2VJRCgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25N
YW5hZ2VyUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9O
b3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5jcHAJKHJldmlzaW9uIDE1
OTkwMCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlm
aWNhdGlvbk1hbmFnZXJQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4Myw3ICsxODMsNyBA
QCB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkCiAgICAgICAgIHJldHVy
bjsKIAogICAgIHVpbnQ2NF90IHBhZ2VOb3RpZmljYXRpb25JRCA9IGl0LT52YWx1ZS5zZWNvbmQ7
Ci0gICAgd2ViUGFnZS0+cHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJOb3RpZmljYXRpb25N
YW5hZ2VyOjpEaWRTaG93Tm90aWZpY2F0aW9uKHBhZ2VOb3RpZmljYXRpb25JRCksIDApOworICAg
IHdlYlBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJOb3RpZmljYXRpb25NYW5hZ2Vy
OjpEaWRTaG93Tm90aWZpY2F0aW9uKHBhZ2VOb3RpZmljYXRpb25JRCksIDApOwogfQogCiB2b2lk
IFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJEaWRDbGlja05vdGlmaWNhdGlv
bih1aW50NjRfdCBnbG9iYWxOb3RpZmljYXRpb25JRCkKQEAgLTE5OCw3ICsxOTgsNyBAQCB2b2lk
IFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkCiAgICAgICAgIHJldHVybjsKIAog
ICAgIHVpbnQ2NF90IHBhZ2VOb3RpZmljYXRpb25JRCA9IGl0LT52YWx1ZS5zZWNvbmQ7Ci0gICAg
d2ViUGFnZS0+cHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJOb3RpZmljYXRpb25NYW5hZ2Vy
OjpEaWRDbGlja05vdGlmaWNhdGlvbihwYWdlTm90aWZpY2F0aW9uSUQpLCAwKTsKKyAgICB3ZWJQ
YWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6RGlk
Q2xpY2tOb3RpZmljYXRpb24ocGFnZU5vdGlmaWNhdGlvbklEKSwgMCk7CiB9CiAKIApAQCAtMjI5
LDcgKzIyOSw3IEBAIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5Ojpwcm92aWQKICAg
ICB9CiAKICAgICBmb3IgKGF1dG8gaXQgPSBwYWdlTm90aWZpY2F0aW9uSURzLmJlZ2luKCksIGVu
ZCA9IHBhZ2VOb3RpZmljYXRpb25JRHMuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAg
aXQtPmtleS0+cHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJOb3RpZmljYXRpb25NYW5hZ2Vy
OjpEaWRDbG9zZU5vdGlmaWNhdGlvbnMoaXQtPnZhbHVlKSwgMCk7CisgICAgICAgIGl0LT5rZXkt
PnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpEaWRDbG9z
ZU5vdGlmaWNhdGlvbnMoaXQtPnZhbHVlKSwgMCk7CiB9CiAKIHZvaWQgV2ViTm90aWZpY2F0aW9u
TWFuYWdlclByb3h5Ojpwcm92aWRlckRpZFVwZGF0ZU5vdGlmaWNhdGlvblBvbGljeShjb25zdCBX
ZWJTZWN1cml0eU9yaWdpbiogb3JpZ2luLCBib29sIGFsbG93ZWQpCkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvY2YvV2ViUGFnZVByb3h5Q0YuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9jZi9XZWJQYWdlUHJveHlDRi5jcHAJKHJldmlzaW9uIDE1OTkw
MCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9jZi9XZWJQYWdlUHJveHlDRi5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE1OCwxNiArMTU4LDE2IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXN0
b3JlRnJvbVNlc3Npb25TdGEKICAgICAgICAgICAgIGNvbnN0IEJhY2tGb3J3YXJkTGlzdEl0ZW1W
ZWN0b3ImIGVudHJpZXMgPSBtX2JhY2tGb3J3YXJkTGlzdC0+ZW50cmllcygpOwogICAgICAgICAg
ICAgaWYgKHNpemVfdCBzaXplID0gZW50cmllcy5zaXplKCkpIHsKICAgICAgICAgICAgICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgICAgICAgICAgICAgcHJv
Y2VzcygpLT5yZWdpc3Rlck5ld1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0oZW50cmllc1tpXS5nZXQo
KSk7CisgICAgICAgICAgICAgICAgICAgIHByb2Nlc3MoKS5yZWdpc3Rlck5ld1dlYkJhY2tGb3J3
YXJkTGlzdEl0ZW0oZW50cmllc1tpXS5nZXQoKSk7CiAKICAgICAgICAgICAgICAgICBTZXNzaW9u
U3RhdGUgc3RhdGUobV9iYWNrRm9yd2FyZExpc3QtPmVudHJpZXMoKSwgbV9iYWNrRm9yd2FyZExp
c3QtPmN1cnJlbnRJbmRleCgpKTsKICAgICAgICAgICAgICAgICBpZiAocHJvdmlzaW9uYWxVUkwp
Ci0gICAgICAgICAgICAgICAgICAgIHByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
UmVzdG9yZVNlc3Npb24oc3RhdGUpLCBtX3BhZ2VJRCk7CisgICAgICAgICAgICAgICAgICAgIHBy
b2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXN0b3JlU2Vzc2lvbihzdGF0ZSksIG1f
cGFnZUlEKTsKICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgaWYg
KFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIGl0ZW0gPSBtX2JhY2tGb3J3YXJkTGlzdC0+Y3VycmVu
dEl0ZW0oKSkKICAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFnZUxvYWRTdGF0ZS5zZXRQZW5k
aW5nQVBJUmVxdWVzdFVSTChpdGVtLT51cmwoKSk7CiAKLSAgICAgICAgICAgICAgICAgICAgcHJv
Y2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXN0b3JlU2Vzc2lvbkFuZE5hdmlnYXRl
VG9DdXJyZW50SXRlbShzdGF0ZSksIG1fcGFnZUlEKTsKKyAgICAgICAgICAgICAgICAgICAgcHJv
Y2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlc3RvcmVTZXNzaW9uQW5kTmF2aWdhdGVU
b0N1cnJlbnRJdGVtKHN0YXRlKSwgbV9wYWdlSUQpOwogICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIH0KICAgICAgICAgfQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9S
ZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5tbQko
cmV2aXNpb24gMTU5OTAwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9SZW1vdGVM
YXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC03NCw3ICs3NCw3
IEBAIHZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6c2UKIHsKICAgICBtX2xh
c3RTZW50U2l6ZSA9IG1fc2l6ZTsKICAgICBtX2xhc3RTZW50TGF5ZXJQb3NpdGlvbiA9IG1fbGF5
ZXJQb3NpdGlvbjsKLSAgICBtX3dlYlBhZ2VQcm94eS0+cHJvY2VzcygpLT5zZW5kKE1lc3NhZ2Vz
OjpEcmF3aW5nQXJlYTo6VXBkYXRlR2VvbWV0cnkobV9zaXplLCBtX2xheWVyUG9zaXRpb24pLCBt
X3dlYlBhZ2VQcm94eS0+cGFnZUlEKCkpOworICAgIG1fd2ViUGFnZVByb3h5LT5wcm9jZXNzKCku
c2VuZChNZXNzYWdlczo6RHJhd2luZ0FyZWE6OlVwZGF0ZUdlb21ldHJ5KG1fc2l6ZSwgbV9sYXll
clBvc2l0aW9uKSwgbV93ZWJQYWdlUHJveHktPnBhZ2VJRCgpKTsKICAgICBtX2lzV2FpdGluZ0Zv
ckRpZFVwZGF0ZUdlb21ldHJ5ID0gdHJ1ZTsKIH0KIApJbmRleDogU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL21hYy9SZW1vdGVMYXllclRyZWVIb3N0Lm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUmVtb3RlTGF5ZXJUcmVlSG9zdC5tbQkocmV2aXNpb24gMTU5
OTAwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9SZW1vdGVMYXllclRyZWVIb3N0
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC00NiwxMiArNDYsMTIgQEAgUmVtb3RlTGF5ZXJUcmVlSG9z
dDo6UmVtb3RlTGF5ZXJUcmVlSG9zdAogICAgIDogbV93ZWJQYWdlUHJveHkod2ViUGFnZVByb3h5
KQogICAgICwgbV9yb290TGF5ZXIobnVsbHB0cikKIHsKLSAgICBtX3dlYlBhZ2VQcm94eS0+cHJv
Y2VzcygpLT5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZUxheWVyVHJlZUhvc3Q6
Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV93ZWJQYWdlUHJveHktPnBhZ2VJRCgpLCB0aGlzKTsK
KyAgICBtX3dlYlBhZ2VQcm94eS0+cHJvY2VzcygpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdl
czo6UmVtb3RlTGF5ZXJUcmVlSG9zdDo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3dlYlBhZ2VQ
cm94eS0+cGFnZUlEKCksIHRoaXMpOwogfQogCiBSZW1vdGVMYXllclRyZWVIb3N0Ojp+UmVtb3Rl
TGF5ZXJUcmVlSG9zdCgpCiB7Ci0gICAgbV93ZWJQYWdlUHJveHktPnByb2Nlc3MoKS0+cmVtb3Zl
TWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVMYXllclRyZWVIb3N0OjptZXNzYWdlUmVj
ZWl2ZXJOYW1lKCksIG1fd2ViUGFnZVByb3h5LT5wYWdlSUQoKSk7CisgICAgbV93ZWJQYWdlUHJv
eHktPnByb2Nlc3MoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZUxheWVy
VHJlZUhvc3Q6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV93ZWJQYWdlUHJveHktPnBhZ2VJRCgp
KTsKIH0KIAogdm9pZCBSZW1vdGVMYXllclRyZWVIb3N0Ojpjb21taXQoY29uc3QgUmVtb3RlTGF5
ZXJUcmVlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uKQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5Lm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJh
d2luZ0FyZWFQcm94eS5tbQkocmV2aXNpb24gMTU5OTAwKQorKysgU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5Lm1tCSh3b3JraW5n
IGNvcHkpCkBAIC01MSwxMiArNTEsMTIgQEAgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQ
cm94eTo6flRpbAogCiB2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHk6OmRl
dmljZVNjYWxlRmFjdG9yRGlkQ2hhbmdlKCkKIHsKLSAgICBtX3dlYlBhZ2VQcm94eS0+cHJvY2Vz
cygpLT5zZW5kKE1lc3NhZ2VzOjpEcmF3aW5nQXJlYTo6U2V0RGV2aWNlU2NhbGVGYWN0b3IobV93
ZWJQYWdlUHJveHktPmRldmljZVNjYWxlRmFjdG9yKCkpLCBtX3dlYlBhZ2VQcm94eS0+cGFnZUlE
KCkpOworICAgIG1fd2ViUGFnZVByb3h5LT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6RHJhd2lu
Z0FyZWE6OlNldERldmljZVNjYWxlRmFjdG9yKG1fd2ViUGFnZVByb3h5LT5kZXZpY2VTY2FsZUZh
Y3RvcigpKSwgbV93ZWJQYWdlUHJveHktPnBhZ2VJRCgpKTsKIH0KIAogdm9pZCBUaWxlZENvcmVB
bmltYXRpb25EcmF3aW5nQXJlYVByb3h5OjpsYXllckhvc3RpbmdNb2RlRGlkQ2hhbmdlKCkKIHsK
LSAgICBtX3dlYlBhZ2VQcm94eS0+cHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpEcmF3aW5nQXJl
YTo6U2V0TGF5ZXJIb3N0aW5nTW9kZShtX3dlYlBhZ2VQcm94eS0+bGF5ZXJIb3N0aW5nTW9kZSgp
KSwgbV93ZWJQYWdlUHJveHktPnBhZ2VJRCgpKTsKKyAgICBtX3dlYlBhZ2VQcm94eS0+cHJvY2Vz
cygpLnNlbmQoTWVzc2FnZXM6OkRyYXdpbmdBcmVhOjpTZXRMYXllckhvc3RpbmdNb2RlKG1fd2Vi
UGFnZVByb3h5LT5sYXllckhvc3RpbmdNb2RlKCkpLCBtX3dlYlBhZ2VQcm94eS0+cGFnZUlEKCkp
OwogfQogCiB2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHk6OnNpemVEaWRD
aGFuZ2UoKQpAQCAtNzcsMTUgKzc3LDE1IEBAIHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2lu
Z0FyZWFQcm94eToKICAgICBpZiAoIW1faXNXYWl0aW5nRm9yRGlkVXBkYXRlR2VvbWV0cnkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIGlmIChtX3dlYlBhZ2VQcm94eS0+cHJvY2VzcygpLT5pc0xh
dW5jaGluZygpKQorICAgIGlmIChtX3dlYlBhZ2VQcm94eS0+cHJvY2VzcygpLmlzTGF1bmNoaW5n
KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fd2ViUGFnZVByb3h5LT5wcm9jZXNzKCktPmNv
bm5lY3Rpb24oKS0+d2FpdEZvckFuZERpc3BhdGNoSW1tZWRpYXRlbHk8TWVzc2FnZXM6OkRyYXdp
bmdBcmVhUHJveHk6OkRpZFVwZGF0ZUdlb21ldHJ5PihtX3dlYlBhZ2VQcm94eS0+cGFnZUlEKCks
IHRpbWVvdXQpOworICAgIG1fd2ViUGFnZVByb3h5LT5wcm9jZXNzKCkuY29ubmVjdGlvbigpLT53
YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseTxNZXNzYWdlczo6RHJhd2luZ0FyZWFQcm94eTo6
RGlkVXBkYXRlR2VvbWV0cnk+KG1fd2ViUGFnZVByb3h5LT5wYWdlSUQoKSwgdGltZW91dCk7CiB9
CiAKIHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eTo6Y29sb3JTcGFjZURp
ZENoYW5nZSgpCiB7Ci0gICAgbV93ZWJQYWdlUHJveHktPnByb2Nlc3MoKS0+c2VuZChNZXNzYWdl
czo6RHJhd2luZ0FyZWE6OlNldENvbG9yU3BhY2UobV93ZWJQYWdlUHJveHktPmNvbG9yU3BhY2Uo
KSksIG1fd2ViUGFnZVByb3h5LT5wYWdlSUQoKSk7CisgICAgbV93ZWJQYWdlUHJveHktPnByb2Nl
c3MoKS5zZW5kKE1lc3NhZ2VzOjpEcmF3aW5nQXJlYTo6U2V0Q29sb3JTcGFjZShtX3dlYlBhZ2VQ
cm94eS0+Y29sb3JTcGFjZSgpKSwgbV93ZWJQYWdlUHJveHktPnBhZ2VJRCgpKTsKIH0KIAogdm9p
ZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5OjptaW5pbXVtTGF5b3V0U2l6ZURp
ZENoYW5nZSgpCkBAIC0xNDQsNyArMTQ0LDcgQEAgdm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3
aW5nQXJlYVByb3h5OgogICAgIG1fbGFzdFNlbnRNaW5pbXVtTGF5b3V0U2l6ZSA9IG1fd2ViUGFn
ZVByb3h5LT5taW5pbXVtTGF5b3V0U2l6ZSgpOwogICAgIG1fbGFzdFNlbnRTaXplID0gbV9zaXpl
OwogICAgIG1fbGFzdFNlbnRMYXllclBvc2l0aW9uID0gbV9sYXllclBvc2l0aW9uOwotICAgIG1f
d2ViUGFnZVByb3h5LT5wcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6OkRyYXdpbmdBcmVhOjpVcGRh
dGVHZW9tZXRyeShtX3NpemUsIG1fbGF5ZXJQb3NpdGlvbiksIG1fd2ViUGFnZVByb3h5LT5wYWdl
SUQoKSk7CisgICAgbV93ZWJQYWdlUHJveHktPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpEcmF3
aW5nQXJlYTo6VXBkYXRlR2VvbWV0cnkobV9zaXplLCBtX2xheWVyUG9zaXRpb24pLCBtX3dlYlBh
Z2VQcm94eS0+cGFnZUlEKCkpOwogICAgIG1faXNXYWl0aW5nRm9yRGlkVXBkYXRlR2VvbWV0cnkg
PSB0cnVlOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkZ1bGxT
Y3JlZW5NYW5hZ2VyUHJveHlNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL21hYy9XZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5TWFjLm1tCShyZXZpc2lvbiAxNTk5
MDApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkZ1bGxTY3JlZW5NYW5hZ2Vy
UHJveHlNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDcgQEAgbmFtZXNwYWNlIFdl
YktpdCB7CiAKIHZvaWQgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6aW52YWxpZGF0ZSgpCiB7
Ci0gICAgbV9wYWdlLT5wcm9jZXNzKCktPnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6
V2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2Ut
PnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnByb2Nlc3MoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIo
TWVzc2FnZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUo
KSwgbV9wYWdlLT5wYWdlSUQoKSk7CiAKICAgICBpZiAoIW1fd2ViVmlldykKICAgICAgICAgcmV0
dXJuOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJJbnNwZWN0b3JQcm94
eU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYklu
c3BlY3RvclByb3h5TWFjLm1tCShyZXZpc2lvbiAxNTk5MDApCisrKyBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvbWFjL1dlYkluc3BlY3RvclByb3h5TWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0z
OTAsNyArMzkwLDcgQEAgV2ViUGFnZVByb3h5KiBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcgog
ICAgICAgICAgICAgaW5pdGlhbFJlY3QgPSBbTlNXaW5kb3cgY29udGVudFJlY3RGb3JGcmFtZVJl
Y3Q6d2luZG93RnJhbWUgc3R5bGVNYXNrOndpbmRvd1N0eWxlTWFza107CiAgICAgfQogCi0gICAg
bV9pbnNwZWN0b3JWaWV3ID0gYWRvcHROUyhbW1dLV2ViSW5zcGVjdG9yV0tWaWV3IGFsbG9jXSBp
bml0V2l0aEZyYW1lOmluaXRpYWxSZWN0IGNvbnRleHRSZWY6dG9BUEkocGFnZSgpLT5wcm9jZXNz
KCktPmNvbnRleHQoKSkgcGFnZUdyb3VwUmVmOnRvQVBJKGluc3BlY3RvclBhZ2VHcm91cCgpKSBy
ZWxhdGVkVG9QYWdlOnRvQVBJKG1fcGFnZSldKTsKKyAgICBtX2luc3BlY3RvclZpZXcgPSBhZG9w
dE5TKFtbV0tXZWJJbnNwZWN0b3JXS1ZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6aW5pdGlhbFJl
Y3QgY29udGV4dFJlZjp0b0FQSSgmcGFnZSgpLT5wcm9jZXNzKCkuY29udGV4dCgpKSBwYWdlR3Jv
dXBSZWY6dG9BUEkoaW5zcGVjdG9yUGFnZUdyb3VwKCkpIHJlbGF0ZWRUb1BhZ2U6dG9BUEkobV9w
YWdlKV0pOwogICAgIEFTU0VSVChtX2luc3BlY3RvclZpZXcpOwogCiAgICAgW21faW5zcGVjdG9y
Vmlldy5nZXQoKSBzZXREcmF3c0JhY2tncm91bmQ6Tk9dOwpAQCAtNTYwLDcgKzU2MCw3IEBAIHZv
aWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtU2F2ZShjb24KICAgICAgICAgfSBlbHNlCiAg
ICAgICAgICAgICBbY29udGVudENvcHkgd3JpdGVUb1VSTDphY3R1YWxVUkwgYXRvbWljYWxseTpZ
RVMgZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmcgZXJyb3I6TlVMTF07CiAKLSAgICAgICAg
bV9wYWdlLT5wcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6RGlkU2F2ZShb
YWN0dWFsVVJMIGFic29sdXRlU3RyaW5nXSksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgICAgICBt
X3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OkRpZFNhdmUoW2Fj
dHVhbFVSTCBhYnNvbHV0ZVN0cmluZ10pLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKICAgICB9OwogCiAg
ICAgaWYgKCFmb3JjZVNhdmVEaWFsb2cpIHsKQEAgLTU5NCw3ICs1OTQsNyBAQCB2b2lkIFdlYklu
c3BlY3RvclByb3h5OjpwbGF0Zm9ybUFwcGVuZChjCiAgICAgW2hhbmRsZSB3cml0ZURhdGE6W2Nv
bnRlbnQgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddXTsKICAgICBbaGFu
ZGxlIGNsb3NlRmlsZV07CiAKLSAgICBtX3BhZ2UtPnByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6
V2ViSW5zcGVjdG9yOjpEaWRBcHBlbmQoW2FjdHVhbFVSTCBhYnNvbHV0ZVN0cmluZ10pLCBtX3Bh
Z2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJ
bnNwZWN0b3I6OkRpZEFwcGVuZChbYWN0dWFsVVJMIGFic29sdXRlU3RyaW5nXSksIG1fcGFnZS0+
cGFnZUlEKCkpOwogfQogCiB2b2lkIFdlYkluc3BlY3RvclByb3h5Ojp3aW5kb3dGcmFtZURpZENo
YW5nZSgpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1h
Yy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQ
cm94eU1hYy5tbQkocmV2aXNpb24gMTU5OTAwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L21hYy9XZWJQYWdlUHJveHlNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDcgQEAg
QGludGVyZmFjZSBOU0FwcGxpY2F0aW9uIChEZXRhaWxzKQogLSAodm9pZClzcGVha1N0cmluZzoo
TlNTdHJpbmcgKilzdHJpbmc7CiBAZW5kCiAKLSNkZWZpbmUgTUVTU0FHRV9DSEVDSyhhc3NlcnRp
b24pIE1FU1NBR0VfQ0hFQ0tfQkFTRShhc3NlcnRpb24sIHByb2Nlc3MoKS0+Y29ubmVjdGlvbigp
KQorI2RlZmluZSBNRVNTQUdFX0NIRUNLKGFzc2VydGlvbikgTUVTU0FHRV9DSEVDS19CQVNFKGFz
c2VydGlvbiwgcHJvY2VzcygpLmNvbm5lY3Rpb24oKSkKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CiAKQEAgLTE1Miw3ICsxNTIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6d2luZG93QW5kVmll
d0ZyYW1lc0NoCiAgICAgRmxvYXRSZWN0IHdpbmRvd0ZyYW1lSW5TY3JlZW5Db29yZGluYXRlcyA9
IG1fdWlDbGllbnQud2luZG93RnJhbWUodGhpcyk7CiAgICAgRmxvYXRSZWN0IHdpbmRvd0ZyYW1l
SW5VbmZsaXBwZWRTY3JlZW5Db29yZGluYXRlcyA9IG1fcGFnZUNsaWVudC5jb252ZXJ0VG9Vc2Vy
U3BhY2Uod2luZG93RnJhbWVJblNjcmVlbkNvb3JkaW5hdGVzKTsKIAotICAgIHByb2Nlc3MoKS0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6V2luZG93QW5kVmlld0ZyYW1lc0NoYW5nZWQod2luZG93
RnJhbWVJblNjcmVlbkNvb3JkaW5hdGVzLCB3aW5kb3dGcmFtZUluVW5mbGlwcGVkU2NyZWVuQ29v
cmRpbmF0ZXMsIHZpZXdGcmFtZUluV2luZG93Q29vcmRpbmF0ZXMsIGFjY2Vzc2liaWxpdHlWaWV3
Q29vcmRpbmF0ZXMpLCBtX3BhZ2VJRCk7CisgICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OldpbmRvd0FuZFZpZXdGcmFtZXNDaGFuZ2VkKHdpbmRvd0ZyYW1lSW5TY3JlZW5Db29y
ZGluYXRlcywgd2luZG93RnJhbWVJblVuZmxpcHBlZFNjcmVlbkNvb3JkaW5hdGVzLCB2aWV3RnJh
bWVJbldpbmRvd0Nvb3JkaW5hdGVzLCBhY2Nlc3NpYmlsaXR5Vmlld0Nvb3JkaW5hdGVzKSwgbV9w
YWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6dmlld0V4cG9zZWRSZWN0Q2hhbmdlZChj
b25zdCBGbG9hdFJlY3QmIGV4cG9zZWRSZWN0LCBib29sIGNsaXBzVG9FeHBvc2VkUmVjdCkKQEAg
LTE3NSw3ICsxNzUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZXhwb3NlZFJlY3RDaGFuZ2VkVGlt
CiAgICAgaWYgKG1fZXhwb3NlZFJlY3QgPT0gbV9sYXN0U2VudEV4cG9zZWRSZWN0ICYmIG1fY2xp
cHNUb0V4cG9zZWRSZWN0ID09IG1fbGFzdFNlbnRDbGlwc1RvRXhwb3NlZFJlY3QpCiAgICAgICAg
IHJldHVybjsKIAotICAgIHByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Vmlld0V4
cG9zZWRSZWN0Q2hhbmdlZChtX2V4cG9zZWRSZWN0LCBtX2NsaXBzVG9FeHBvc2VkUmVjdCksIG1f
cGFnZUlEKTsKKyAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Vmlld0V4cG9z
ZWRSZWN0Q2hhbmdlZChtX2V4cG9zZWRSZWN0LCBtX2NsaXBzVG9FeHBvc2VkUmVjdCksIG1fcGFn
ZUlEKTsKICAgICBtX2xhc3RTZW50RXhwb3NlZFJlY3QgPSBtX2V4cG9zZWRSZWN0OwogICAgIG1f
bGFzdFNlbnRDbGlwc1RvRXhwb3NlZFJlY3QgPSBtX2NsaXBzVG9FeHBvc2VkUmVjdDsKIH0KQEAg
LTE4NSw3ICsxODUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0TWFpbkZyYW1lSXNTY3JvbGxh
CiAgICAgaWYgKCFpc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHByb2Nlc3MoKS0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0TWFpbkZyYW1lSXNTY3JvbGxhYmxlKGlzU2Nyb2xs
YWJsZSksIG1fcGFnZUlEKTsKKyAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
U2V0TWFpbkZyYW1lSXNTY3JvbGxhYmxlKGlzU2Nyb2xsYWJsZSksIG1fcGFnZUlEKTsKIH0KIAog
dm9pZCBXZWJQYWdlUHJveHk6OnNldENvbXBvc2l0aW9uKGNvbnN0IFN0cmluZyYgdGV4dCwgVmVj
dG9yPENvbXBvc2l0aW9uVW5kZXJsaW5lPiB1bmRlcmxpbmVzLCB1aW50NjRfdCBzZWxlY3Rpb25T
dGFydCwgdWludDY0X3Qgc2VsZWN0aW9uRW5kLCB1aW50NjRfdCByZXBsYWNlbWVudFJhbmdlU3Rh
cnQsIHVpbnQ2NF90IHJlcGxhY2VtZW50UmFuZ2VFbmQpCkBAIC0xOTYsNyArMTk2LDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OnNldENvbXBvc2l0aW9uKGNvbnN0IAogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgcHJvY2VzcygpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZTo6U2V0Q29t
cG9zaXRpb24odGV4dCwgdW5kZXJsaW5lcywgc2VsZWN0aW9uU3RhcnQsIHNlbGVjdGlvbkVuZCwg
cmVwbGFjZW1lbnRSYW5nZVN0YXJ0LCByZXBsYWNlbWVudFJhbmdlRW5kKSwgTWVzc2FnZXM6Oldl
YlBhZ2U6OlNldENvbXBvc2l0aW9uOjpSZXBseShtX2VkaXRvclN0YXRlKSwgbV9wYWdlSUQpOwor
ICAgIHByb2Nlc3MoKS5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZTo6U2V0Q29tcG9zaXRpb24o
dGV4dCwgdW5kZXJsaW5lcywgc2VsZWN0aW9uU3RhcnQsIHNlbGVjdGlvbkVuZCwgcmVwbGFjZW1l
bnRSYW5nZVN0YXJ0LCByZXBsYWNlbWVudFJhbmdlRW5kKSwgTWVzc2FnZXM6OldlYlBhZ2U6OlNl
dENvbXBvc2l0aW9uOjpSZXBseShtX2VkaXRvclN0YXRlKSwgbV9wYWdlSUQpOwogfQogCiB2b2lk
IFdlYlBhZ2VQcm94eTo6Y29uZmlybUNvbXBvc2l0aW9uKCkKQEAgLTIwNCw3ICsyMDQsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6Y29uZmlybUNvbXBvc2l0aW9uKCkKICAgICBpZiAoIWlzVmFsaWQo
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcHJvY2VzcygpLT5zZW5kU3luYyhNZXNzYWdlczo6
V2ViUGFnZTo6Q29uZmlybUNvbXBvc2l0aW9uKCksIE1lc3NhZ2VzOjpXZWJQYWdlOjpDb25maXJt
Q29tcG9zaXRpb246OlJlcGx5KG1fZWRpdG9yU3RhdGUpLCBtX3BhZ2VJRCk7CisgICAgcHJvY2Vz
cygpLnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlOjpDb25maXJtQ29tcG9zaXRpb24oKSwgTWVz
c2FnZXM6OldlYlBhZ2U6OkNvbmZpcm1Db21wb3NpdGlvbjo6UmVwbHkobV9lZGl0b3JTdGF0ZSks
IG1fcGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmNhbmNlbENvbXBvc2l0aW9uKCkK
QEAgLTIxMiw3ICsyMTIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y2FuY2VsQ29tcG9zaXRpb24o
KQogICAgIGlmICghaXNWYWxpZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBwcm9jZXNzKCkt
PnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlOjpDYW5jZWxDb21wb3NpdGlvbigpLCBNZXNzYWdl
czo6V2ViUGFnZTo6Q29uZmlybUNvbXBvc2l0aW9uOjpSZXBseShtX2VkaXRvclN0YXRlKSwgbV9w
YWdlSUQpOworICAgIHByb2Nlc3MoKS5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZTo6Q2FuY2Vs
Q29tcG9zaXRpb24oKSwgTWVzc2FnZXM6OldlYlBhZ2U6OkNvbmZpcm1Db21wb3NpdGlvbjo6UmVw
bHkobV9lZGl0b3JTdGF0ZSksIG1fcGFnZUlEKTsKIH0KIAogYm9vbCBXZWJQYWdlUHJveHk6Omlu
c2VydFRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCB1aW50NjRfdCByZXBsYWNlbWVudFJhbmdlU3Rh
cnQsIHVpbnQ2NF90IHJlcGxhY2VtZW50UmFuZ2VFbmQpCkBAIC0yMjEsNyArMjIxLDcgQEAgYm9v
bCBXZWJQYWdlUHJveHk6Omluc2VydFRleHQoY29uc3QgU3RyaQogICAgICAgICByZXR1cm4gdHJ1
ZTsKIAogICAgIGJvb2wgaGFuZGxlZCA9IHRydWU7Ci0gICAgcHJvY2VzcygpLT5zZW5kU3luYyhN
ZXNzYWdlczo6V2ViUGFnZTo6SW5zZXJ0VGV4dCh0ZXh0LCByZXBsYWNlbWVudFJhbmdlU3RhcnQs
IHJlcGxhY2VtZW50UmFuZ2VFbmQpLCBNZXNzYWdlczo6V2ViUGFnZTo6SW5zZXJ0VGV4dDo6UmVw
bHkoaGFuZGxlZCwgbV9lZGl0b3JTdGF0ZSksIG1fcGFnZUlEKTsKKyAgICBwcm9jZXNzKCkuc2Vu
ZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2U6Okluc2VydFRleHQodGV4dCwgcmVwbGFjZW1lbnRSYW5n
ZVN0YXJ0LCByZXBsYWNlbWVudFJhbmdlRW5kKSwgTWVzc2FnZXM6OldlYlBhZ2U6Okluc2VydFRl
eHQ6OlJlcGx5KGhhbmRsZWQsIG1fZWRpdG9yU3RhdGUpLCBtX3BhZ2VJRCk7CiAgICAgbV90ZW1w
b3JhcmlseUNsb3NlZENvbXBvc2l0aW9uID0gZmFsc2U7CiAKICAgICByZXR1cm4gaGFuZGxlZDsK
QEAgLTI0OSw3ICsyNDksNyBAQCBib29sIFdlYlBhZ2VQcm94eTo6aW5zZXJ0RGljdGF0ZWRUZXh0
KGNvCiAgICAgICAgIHJldHVybiBpbnNlcnRUZXh0KHRleHQsIHJlcGxhY2VtZW50UmFuZ2VTdGFy
dCwgcmVwbGFjZW1lbnRSYW5nZUVuZCk7CiAKICAgICBib29sIGhhbmRsZWQgPSB0cnVlOwotICAg
IHByb2Nlc3MoKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2U6Okluc2VydERpY3RhdGVkVGV4
dCh0ZXh0LCByZXBsYWNlbWVudFJhbmdlU3RhcnQsIHJlcGxhY2VtZW50UmFuZ2VFbmQsIGRpY3Rh
dGlvbkFsdGVybmF0aXZlcyksIE1lc3NhZ2VzOjpXZWJQYWdlOjpJbnNlcnREaWN0YXRlZFRleHQ6
OlJlcGx5KGhhbmRsZWQsIG1fZWRpdG9yU3RhdGUpLCBtX3BhZ2VJRCk7CisgICAgcHJvY2Vzcygp
LnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlOjpJbnNlcnREaWN0YXRlZFRleHQodGV4dCwgcmVw
bGFjZW1lbnRSYW5nZVN0YXJ0LCByZXBsYWNlbWVudFJhbmdlRW5kLCBkaWN0YXRpb25BbHRlcm5h
dGl2ZXMpLCBNZXNzYWdlczo6V2ViUGFnZTo6SW5zZXJ0RGljdGF0ZWRUZXh0OjpSZXBseShoYW5k
bGVkLCBtX2VkaXRvclN0YXRlKSwgbV9wYWdlSUQpOwogICAgIHJldHVybiBoYW5kbGVkOwogI2Vs
c2UKICAgICByZXR1cm4gaW5zZXJ0VGV4dCh0ZXh0LCByZXBsYWNlbWVudFJhbmdlU3RhcnQsIHJl
cGxhY2VtZW50UmFuZ2VFbmQpOwpAQCAtMjY0LDcgKzI2NCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpnZXRNYXJrZWRSYW5nZSh1aW50NjQKICAgICBpZiAoIWlzVmFsaWQoKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgcHJvY2VzcygpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZTo6R2V0TWFy
a2VkUmFuZ2UoKSwgTWVzc2FnZXM6OldlYlBhZ2U6OkdldE1hcmtlZFJhbmdlOjpSZXBseShsb2Nh
dGlvbiwgbGVuZ3RoKSwgbV9wYWdlSUQpOworICAgIHByb2Nlc3MoKS5zZW5kU3luYyhNZXNzYWdl
czo6V2ViUGFnZTo6R2V0TWFya2VkUmFuZ2UoKSwgTWVzc2FnZXM6OldlYlBhZ2U6OkdldE1hcmtl
ZFJhbmdlOjpSZXBseShsb2NhdGlvbiwgbGVuZ3RoKSwgbV9wYWdlSUQpOwogfQogCiB2b2lkIFdl
YlBhZ2VQcm94eTo6Z2V0U2VsZWN0ZWRSYW5nZSh1aW50NjRfdCYgbG9jYXRpb24sIHVpbnQ2NF90
JiBsZW5ndGgpCkBAIC0yNzUsMTQgKzI3NSwxNCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U2Vs
ZWN0ZWRSYW5nZSh1aW50CiAgICAgaWYgKCFpc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIHByb2Nlc3MoKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFNlbGVjdGVkUmFu
Z2UoKSwgTWVzc2FnZXM6OldlYlBhZ2U6OkdldFNlbGVjdGVkUmFuZ2U6OlJlcGx5KGxvY2F0aW9u
LCBsZW5ndGgpLCBtX3BhZ2VJRCk7CisgICAgcHJvY2VzcygpLnNlbmRTeW5jKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpHZXRTZWxlY3RlZFJhbmdlKCksIE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRTZWxlY3Rl
ZFJhbmdlOjpSZXBseShsb2NhdGlvbiwgbGVuZ3RoKSwgbV9wYWdlSUQpOwogfQogCiB2b2lkIFdl
YlBhZ2VQcm94eTo6Z2V0QXR0cmlidXRlZFN1YnN0cmluZ0Zyb21SYW5nZSh1aW50NjRfdCBsb2Nh
dGlvbiwgdWludDY0X3QgbGVuZ3RoLCBBdHRyaWJ1dGVkU3RyaW5nJiByZXN1bHQpCiB7CiAgICAg
aWYgKCFpc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBwcm9jZXNzKCktPnNlbmRTeW5j
KE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRBdHRyaWJ1dGVkU3Vic3RyaW5nRnJvbVJhbmdlKGxvY2F0
aW9uLCBsZW5ndGgpLCBNZXNzYWdlczo6V2ViUGFnZTo6R2V0QXR0cmlidXRlZFN1YnN0cmluZ0Zy
b21SYW5nZTo6UmVwbHkocmVzdWx0KSwgbV9wYWdlSUQpOworICAgIHByb2Nlc3MoKS5zZW5kU3lu
YyhNZXNzYWdlczo6V2ViUGFnZTo6R2V0QXR0cmlidXRlZFN1YnN0cmluZ0Zyb21SYW5nZShsb2Nh
dGlvbiwgbGVuZ3RoKSwgTWVzc2FnZXM6OldlYlBhZ2U6OkdldEF0dHJpYnV0ZWRTdWJzdHJpbmdG
cm9tUmFuZ2U6OlJlcGx5KHJlc3VsdCksIG1fcGFnZUlEKTsKIH0KIAogdWludDY0X3QgV2ViUGFn
ZVByb3h5OjpjaGFyYWN0ZXJJbmRleEZvclBvaW50KGNvbnN0IEludFBvaW50IHBvaW50KQpAQCAt
MjkxLDcgKzI5MSw3IEBAIHVpbnQ2NF90IFdlYlBhZ2VQcm94eTo6Y2hhcmFjdGVySW5kZXhGb3IK
ICAgICAgICAgcmV0dXJuIDA7CiAKICAgICB1aW50NjRfdCByZXN1bHQgPSAwOwotICAgIHByb2Nl
c3MoKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2U6OkNoYXJhY3RlckluZGV4Rm9yUG9pbnQo
cG9pbnQpLCBNZXNzYWdlczo6V2ViUGFnZTo6Q2hhcmFjdGVySW5kZXhGb3JQb2ludDo6UmVwbHko
cmVzdWx0KSwgbV9wYWdlSUQpOworICAgIHByb2Nlc3MoKS5zZW5kU3luYyhNZXNzYWdlczo6V2Vi
UGFnZTo6Q2hhcmFjdGVySW5kZXhGb3JQb2ludChwb2ludCksIE1lc3NhZ2VzOjpXZWJQYWdlOjpD
aGFyYWN0ZXJJbmRleEZvclBvaW50OjpSZXBseShyZXN1bHQpLCBtX3BhZ2VJRCk7CiAgICAgcmV0
dXJuIHJlc3VsdDsKIH0KIApAQCAtMzAxLDcgKzMwMSw3IEBAIEludFJlY3QgV2ViUGFnZVByb3h5
OjpmaXJzdFJlY3RGb3JDaGFyYWMKICAgICAgICAgcmV0dXJuIEludFJlY3QoKTsKIAogICAgIElu
dFJlY3QgcmVzdWx0UmVjdDsKLSAgICBwcm9jZXNzKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpGaXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZShsb2NhdGlvbiwgbGVuZ3RoKSwgTWVzc2Fn
ZXM6OldlYlBhZ2U6OkZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlOjpSZXBseShyZXN1bHRSZWN0
KSwgbV9wYWdlSUQpOworICAgIHByb2Nlc3MoKS5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZTo6
Rmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UobG9jYXRpb24sIGxlbmd0aCksIE1lc3NhZ2VzOjpX
ZWJQYWdlOjpGaXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZTo6UmVwbHkocmVzdWx0UmVjdCksIG1f
cGFnZUlEKTsKICAgICByZXR1cm4gcmVzdWx0UmVjdDsKIH0KIApAQCAtMzExLDcgKzMxMSw3IEBA
IGJvb2wgV2ViUGFnZVByb3h5OjpleGVjdXRlS2V5cHJlc3NDb21tYW4KICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCiAgICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKLSAgICBwcm9jZXNzKCktPnNlbmRT
eW5jKE1lc3NhZ2VzOjpXZWJQYWdlOjpFeGVjdXRlS2V5cHJlc3NDb21tYW5kcyhjb21tYW5kcyks
IE1lc3NhZ2VzOjpXZWJQYWdlOjpFeGVjdXRlS2V5cHJlc3NDb21tYW5kczo6UmVwbHkocmVzdWx0
LCBtX2VkaXRvclN0YXRlKSwgbV9wYWdlSUQpOworICAgIHByb2Nlc3MoKS5zZW5kU3luYyhNZXNz
YWdlczo6V2ViUGFnZTo6RXhlY3V0ZUtleXByZXNzQ29tbWFuZHMoY29tbWFuZHMpLCBNZXNzYWdl
czo6V2ViUGFnZTo6RXhlY3V0ZUtleXByZXNzQ29tbWFuZHM6OlJlcGx5KHJlc3VsdCwgbV9lZGl0
b3JTdGF0ZSksIG1fcGFnZUlEKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0zMjIsNyAr
MzIyLDcgQEAgU3RyaW5nIFdlYlBhZ2VQcm94eTo6c3RyaW5nU2VsZWN0aW9uRm9yUAogICAgICAg
ICByZXR1cm4gdmFsdWU7CiAgICAgCiAgICAgY29uc3QgZG91YmxlIG1lc3NhZ2VUaW1lb3V0ID0g
MjA7Ci0gICAgcHJvY2VzcygpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZTo6R2V0U3RyaW5n
U2VsZWN0aW9uRm9yUGFzdGVib2FyZCgpLCBNZXNzYWdlczo6V2ViUGFnZTo6R2V0U3RyaW5nU2Vs
ZWN0aW9uRm9yUGFzdGVib2FyZDo6UmVwbHkodmFsdWUpLCBtX3BhZ2VJRCwgbWVzc2FnZVRpbWVv
dXQpOworICAgIHByb2Nlc3MoKS5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZTo6R2V0U3RyaW5n
U2VsZWN0aW9uRm9yUGFzdGVib2FyZCgpLCBNZXNzYWdlczo6V2ViUGFnZTo6R2V0U3RyaW5nU2Vs
ZWN0aW9uRm9yUGFzdGVib2FyZDo6UmVwbHkodmFsdWUpLCBtX3BhZ2VJRCwgbWVzc2FnZVRpbWVv
dXQpOwogICAgIHJldHVybiB2YWx1ZTsKIH0KIApAQCAtMzMzLDcgKzMzMyw3IEBAIFBhc3NSZWZQ
dHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQYWcKICAgICBTaGFyZWRNZW1vcnk6OkhhbmRs
ZSBoYW5kbGU7CiAgICAgdWludDY0X3Qgc2l6ZSA9IDA7CiAgICAgY29uc3QgZG91YmxlIG1lc3Nh
Z2VUaW1lb3V0ID0gMjA7Ci0gICAgcHJvY2VzcygpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFn
ZTo6R2V0RGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQocGFzdGVib2FyZFR5cGUpLAorICAgIHBy
b2Nlc3MoKS5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZTo6R2V0RGF0YVNlbGVjdGlvbkZvclBh
c3RlYm9hcmQocGFzdGVib2FyZFR5cGUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgTWVzc2FnZXM6OldlYlBhZ2U6OkdldERhdGFTZWxlY3Rpb25Gb3JQ
YXN0ZWJvYXJkOjpSZXBseShoYW5kbGUsIHNpemUpLCBtX3BhZ2VJRCwgbWVzc2FnZVRpbWVvdXQp
OwogICAgIGlmIChoYW5kbGUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiAwOwpAQCAtMzQ4LDcg
KzM0OCw3IEBAIGJvb2wgV2ViUGFnZVByb3h5OjpyZWFkU2VsZWN0aW9uRnJvbVBhc3QKIAogICAg
IGJvb2wgcmVzdWx0ID0gZmFsc2U7CiAgICAgY29uc3QgZG91YmxlIG1lc3NhZ2VUaW1lb3V0ID0g
MjA7Ci0gICAgcHJvY2VzcygpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZTo6UmVhZFNlbGVj
dGlvbkZyb21QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKSwgTWVzc2FnZXM6OldlYlBhZ2U6OlJl
YWRTZWxlY3Rpb25Gcm9tUGFzdGVib2FyZDo6UmVwbHkocmVzdWx0KSwgbV9wYWdlSUQsIG1lc3Nh
Z2VUaW1lb3V0KTsKKyAgICBwcm9jZXNzKCkuc2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2U6OlJl
YWRTZWxlY3Rpb25Gcm9tUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSksIE1lc3NhZ2VzOjpXZWJQ
YWdlOjpSZWFkU2VsZWN0aW9uRnJvbVBhc3RlYm9hcmQ6OlJlcGx5KHJlc3VsdCksIG1fcGFnZUlE
LCBtZXNzYWdlVGltZW91dCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMzgyLDcgKzM4
Miw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpwZXJmb3JtRGljdGlvbmFyeUxvb2sKICAgICBpZiAo
IWlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcHJvY2VzcygpLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpQZXJmb3JtRGljdGlvbmFyeUxvb2t1cEF0TG9jYXRpb24ocG9pbnQpLCBt
X3BhZ2VJRCk7IAorICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpQZXJmb3Jt
RGljdGlvbmFyeUxvb2t1cEF0TG9jYXRpb24ocG9pbnQpLCBtX3BhZ2VJRCk7CiB9CiAKIHZvaWQg
V2ViUGFnZVByb3h5OjppbnRlcnByZXRRdWV1ZWRLZXlFdmVudChjb25zdCBFZGl0b3JTdGF0ZSYg
c3RhdGUsIGJvb2wmIGhhbmRsZWQsIFZlY3RvcjxXZWJDb3JlOjpLZXlwcmVzc0NvbW1hbmQ+JiBj
b21tYW5kcykKQEAgLTM5NywyMiArMzk3LDIyIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZW5kQ29t
cGxleFRleHRJbnB1dFQKICAgICBpZiAoIWlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuOwogICAg
IAotICAgIHByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2VuZENvbXBsZXhUZXh0
SW5wdXRUb1BsdWdpbihwbHVnaW5Db21wbGV4VGV4dElucHV0SWRlbnRpZmllciwgdGV4dElucHV0
KSwgbV9wYWdlSUQpOworICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZW5k
Q29tcGxleFRleHRJbnB1dFRvUGx1Z2luKHBsdWdpbkNvbXBsZXhUZXh0SW5wdXRJZGVudGlmaWVy
LCB0ZXh0SW5wdXQpLCBtX3BhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojp1cHBlcmNh
c2VXb3JkKCkKIHsKLSAgICBwcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVwcGVy
Y2FzZVdvcmQoKSwgbV9wYWdlSUQpOworICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpVcHBlcmNhc2VXb3JkKCksIG1fcGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6
Omxvd2VyY2FzZVdvcmQoKQogewotICAgIHByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6TG93ZXJjYXNlV29yZCgpLCBtX3BhZ2VJRCk7CisgICAgcHJvY2VzcygpLnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6Okxvd2VyY2FzZVdvcmQoKSwgbV9wYWdlSUQpOwogfQogCiB2b2lkIFdlYlBh
Z2VQcm94eTo6Y2FwaXRhbGl6ZVdvcmQoKQogewotICAgIHByb2Nlc3MoKS0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6Q2FwaXRhbGl6ZVdvcmQoKSwgbV9wYWdlSUQpOworICAgIHByb2Nlc3MoKS5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDYXBpdGFsaXplV29yZCgpLCBtX3BhZ2VJRCk7CiB9CiAK
IHZvaWQgV2ViUGFnZVByb3h5OjpzZXRTbWFydEluc2VydERlbGV0ZUVuYWJsZWQoYm9vbCBpc1Nt
YXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCkKQEAgLTQyMiw3ICs0MjIsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6c2V0U21hcnRJbnNlcnREZWxldGVFCiAKICAgICBUZXh0Q2hlY2tlcjo6c2V0U21hcnRJ
bnNlcnREZWxldGVFbmFibGVkKGlzU21hcnRJbnNlcnREZWxldGVFbmFibGVkKTsKICAgICBtX2lz
U21hcnRJbnNlcnREZWxldGVFbmFibGVkID0gaXNTbWFydEluc2VydERlbGV0ZUVuYWJsZWQ7Ci0g
ICAgcHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRTbWFydEluc2VydERlbGV0
ZUVuYWJsZWQoaXNTbWFydEluc2VydERlbGV0ZUVuYWJsZWQpLCBtX3BhZ2VJRCk7CisgICAgcHJv
Y2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxl
ZChpc1NtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCksIG1fcGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQ
YWdlUHJveHk6OmRpZFBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwKGNvbnN0IEF0dHJpYnV0ZWRTdHJp
bmcmIHRleHQsIGNvbnN0IERpY3Rpb25hcnlQb3B1cEluZm8mIGRpY3Rpb25hcnlQb3B1cEluZm8p
CkBAIC00NTAsNyArNDUwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlZ2lzdGVyVUlQcm9jZXNz
QWNjZQogICAgIGlmICghaXNWYWxpZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBwcm9jZXNz
KCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlZ2lzdGVyVUlQcm9jZXNzQWNjZXNzaWJpbGl0
eVRva2VucyhlbGVtZW50VG9rZW4sIHdpbmRvd1Rva2VuKSwgbV9wYWdlSUQpOworICAgIHByb2Nl
c3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZWdpc3RlclVJUHJvY2Vzc0FjY2Vzc2liaWxp
dHlUb2tlbnMoZWxlbWVudFRva2VuLCB3aW5kb3dUb2tlbiksIG1fcGFnZUlEKTsKIH0KIAogdm9p
ZCBXZWJQYWdlUHJveHk6OnBsdWdpbkZvY3VzT3JXaW5kb3dGb2N1c0NoYW5nZWQodWludDY0X3Qg
cGx1Z2luQ29tcGxleFRleHRJbnB1dElkZW50aWZpZXIsIGJvb2wgcGx1Z2luSGFzRm9jdXNBbmRX
aW5kb3dIYXNGb2N1cykKQEAgLTQ3NCwxMiArNDc0LDEyIEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpl
eGVjdXRlU2F2ZWRDb21tYW5kQnkKIAogYm9vbCBXZWJQYWdlUHJveHk6OnNob3VsZERlbGF5V2lu
ZG93T3JkZXJpbmdGb3JFdmVudChjb25zdCBXZWJLaXQ6OldlYk1vdXNlRXZlbnQmIGV2ZW50KQog
ewotICAgIGlmICghcHJvY2VzcygpLT5pc1ZhbGlkKCkpCisgICAgaWYgKCFwcm9jZXNzKCkuaXNW
YWxpZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBib29sIHJlc3VsdCA9IGZhbHNl
OwogICAgIGNvbnN0IGRvdWJsZSBtZXNzYWdlVGltZW91dCA9IDM7Ci0gICAgcHJvY2VzcygpLT5z
ZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZTo6U2hvdWxkRGVsYXlXaW5kb3dPcmRlcmluZ0V2ZW50
KGV2ZW50KSwgTWVzc2FnZXM6OldlYlBhZ2U6OlNob3VsZERlbGF5V2luZG93T3JkZXJpbmdFdmVu
dDo6UmVwbHkocmVzdWx0KSwgbV9wYWdlSUQsIG1lc3NhZ2VUaW1lb3V0KTsKKyAgICBwcm9jZXNz
KCkuc2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2U6OlNob3VsZERlbGF5V2luZG93T3JkZXJpbmdF
dmVudChldmVudCksIE1lc3NhZ2VzOjpXZWJQYWdlOjpTaG91bGREZWxheVdpbmRvd09yZGVyaW5n
RXZlbnQ6OlJlcGx5KHJlc3VsdCksIG1fcGFnZUlELCBtZXNzYWdlVGltZW91dCk7CiAgICAgcmV0
dXJuIHJlc3VsdDsKIH0KIApAQCAtNDkwLDcgKzQ5MCw3IEBAIGJvb2wgV2ViUGFnZVByb3h5Ojph
Y2NlcHRzRmlyc3RNb3VzZShpbnQKIAogICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7CiAgICAgY29u
c3QgZG91YmxlIG1lc3NhZ2VUaW1lb3V0ID0gMzsKLSAgICBwcm9jZXNzKCktPnNlbmRTeW5jKE1l
c3NhZ2VzOjpXZWJQYWdlOjpBY2NlcHRzRmlyc3RNb3VzZShldmVudE51bWJlciwgZXZlbnQpLCBN
ZXNzYWdlczo6V2ViUGFnZTo6QWNjZXB0c0ZpcnN0TW91c2U6OlJlcGx5KHJlc3VsdCksIG1fcGFn
ZUlELCBtZXNzYWdlVGltZW91dCk7CisgICAgcHJvY2VzcygpLnNlbmRTeW5jKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpBY2NlcHRzRmlyc3RNb3VzZShldmVudE51bWJlciwgZXZlbnQpLCBNZXNzYWdlczo6
V2ViUGFnZTo6QWNjZXB0c0ZpcnN0TW91c2U6OlJlcGx5KHJlc3VsdCksIG1fcGFnZUlELCBtZXNz
YWdlVGltZW91dCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAo=
</data>
<flag name="review"
          id="241448"
          type_id="1"
          status="+"
          setter="mitz"
    />
    <flag name="commit-queue"
          id="241449"
          type_id="3"
          status="-"
          setter="eflews.bot"
    />
          </attachment>
      

    </bug>

</bugzilla>