<?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>94363</bug_id>
          
          <creation_ts>2012-08-17 10:55:22 -0700</creation_ts>
          <short_desc>Access m_process directly in WebPageProxy.cpp</short_desc>
          <delta_ts>2012-08-17 12:02:06 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>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>Trivial</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexey Proskuryakov">ap</reporter>
          <assigned_to name="Alexey Proskuryakov">ap</assigned_to>
          <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>698490</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-08-17 10:55:22 -0700</bug_when>
    <thetext>Consistency fix - we don&apos;t use accessors when we don&apos;t have to, and there is a mix in this file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>698491</commentid>
    <comment_count>1</comment_count>
      <attachid>159162</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-08-17 10:56:45 -0700</bug_when>
    <thetext>Created attachment 159162
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>698546</commentid>
    <comment_count>2</comment_count>
      <attachid>159162</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-17 12:02:03 -0700</bug_when>
    <thetext>Comment on attachment 159162
proposed patch

Clearing flags on attachment: 159162

Committed r125923: &lt;http://trac.webkit.org/changeset/125923&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>698547</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-17 12:02:06 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>159162</attachid>
            <date>2012-08-17 10:56:45 -0700</date>
            <delta_ts>2012-08-17 12:01:54 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>m_process.txt</filename>
            <type>text/plain</type>
            <size>74422</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyNTkxMikKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDEyLTA4LTE3ICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIEFjY2VzcyBtX3Byb2Nlc3Mg
ZGlyZWN0bHkgaW4gV2ViUGFnZVByb3h5LmNwcAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTQzNjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBDb25zaXN0ZW5jeSBmaXggLSB3ZSBkb24ndCB1c2UgYWNjZXNz
b3JzIHdoZW4gd2UgZG9uJ3QgaGF2ZSB0bywgYW5kIHRoZXJlIGlzIGEgbWl4IGluIHRoaXMgZmls
ZS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorCiAyMDEyLTA4LTE3
ICBDbGF1ZGlvIFNhYXZlZHJhICA8Y3NhYXZlZHJhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dU
S10gQWRkIFdLMiBBUEkgdG8gZ2V0IHN1Z2dlc3RlZCBmaWxlbmFtZSBmb3IgVVJJIHJlc3BvbnNl
cwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlz
aW9uIDEyNTc5NikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yODEsNyArMjgxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6Omlu
aXRpYWxpemVMb2FkZXJDbGllbgogICAgIGlmICghbG9hZENsaWVudCkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgcHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRXaWxsR29Ub0Jh
Y2tGb3J3YXJkSXRlbUNhbGxiYWNrRW5hYmxlZChsb2FkQ2xpZW50LT52ZXJzaW9uID4gMCksIG1f
cGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFdpbGxH
b1RvQmFja0ZvcndhcmRJdGVtQ2FsbGJhY2tFbmFibGVkKGxvYWRDbGllbnQtPnZlcnNpb24gPiAw
KSwgbV9wYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6aW5pdGlhbGl6ZVBvbGljeUNs
aWVudChjb25zdCBXS1BhZ2VQb2xpY3lDbGllbnQqIHBvbGljeUNsaWVudCkKQEAgLTMwNiw3ICsz
MDYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aW5pdGlhbGl6ZVVJQ2xpZW50KGNvCiAKICAgICBt
X3VpQ2xpZW50LmluaXRpYWxpemUoY2xpZW50KTsKIAotICAgIHByb2Nlc3MoKS0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6U2V0Q2FuUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKG1fdWlDbGll
bnQuY2FuUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKCkpLCBtX3BhZ2VJRCk7CisgICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRDYW5SdW5CZWZvcmVVbmxvYWRDb25m
aXJtUGFuZWwobV91aUNsaWVudC5jYW5SdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoKSksIG1f
cGFnZUlEKTsKICAgICBzZXRDYW5SdW5Nb2RhbChtX3VpQ2xpZW50LmNhblJ1bk1vZGFsKCkpOwog
fQogCkBAIC0zMjksNyArMzI5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlYXR0YWNoVG9XZWJQ
cm9jZXNzKAogICAgIG1faXNWYWxpZCA9IHRydWU7CiAKICAgICBtX3Byb2Nlc3MgPSBtX3Byb2Nl
c3MtPmNvbnRleHQoKS0+cmVsYXVuY2hQcm9jZXNzSWZOZWNlc3NhcnkoKTsKLSAgICBwcm9jZXNz
KCktPmFkZEV4aXN0aW5nV2ViUGFnZSh0aGlzLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5h
ZGRFeGlzdGluZ1dlYlBhZ2UodGhpcywgbV9wYWdlSUQpOwogCiAgICAgaW5pdGlhbGl6ZVdlYlBh
Z2UoKTsKIApAQCAtMzQ3LDggKzM0Nyw4IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZWF0dGFjaFRv
V2ViUHJvY2Vzc1cKICAgICBpZiAoIWl0ZW0pCiAgICAgICAgIHJldHVybjsKIAotICAgIHByb2Nl
c3MoKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R29Ub0JhY2tGb3J3YXJkSXRlbShpdGVtLT5p
dGVtSUQoKSksIG1fcGFnZUlEKTsKLSAgICBwcm9jZXNzKCktPnJlc3BvbnNpdmVuZXNzVGltZXIo
KS0+c3RhcnQoKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdvVG9C
YWNrRm9yd2FyZEl0ZW0oaXRlbS0+aXRlbUlEKCkpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNz
LT5yZXNwb25zaXZlbmVzc1RpbWVyKCktPnN0YXJ0KCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5
Ojppbml0aWFsaXplV2ViUGFnZSgpCkBAIC0zNTcsNyArMzU3LDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OmluaXRpYWxpemVXZWJQYWdlKCkKIAogICAgIEJhY2tGb3J3YXJkTGlzdEl0ZW1WZWN0b3Ig
aXRlbXMgPSBtX2JhY2tGb3J3YXJkTGlzdC0+ZW50cmllcygpOwogICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgaXRlbXMuc2l6ZSgpOyArK2kpCi0gICAgICAgIHByb2Nlc3MoKS0+cmVnaXN0ZXJO
ZXdXZWJCYWNrRm9yd2FyZExpc3RJdGVtKGl0ZW1zW2ldLmdldCgpKTsKKyAgICAgICAgbV9wcm9j
ZXNzLT5yZWdpc3Rlck5ld1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0oaXRlbXNbaV0uZ2V0KCkpOwog
CiAgICAgbV9kcmF3aW5nQXJlYSA9IG1fcGFnZUNsaWVudC0+Y3JlYXRlRHJhd2luZ0FyZWFQcm94
eSgpOwogICAgIEFTU0VSVChtX2RyYXdpbmdBcmVhKTsKQEAgLTM2NywxMCArMzY3LDEwIEBAIHZv
aWQgV2ViUGFnZVByb3h5Ojppbml0aWFsaXplV2ViUGFnZSgpCiAgICAgICAgIGluc3BlY3Rvcigp
LT5lbmFibGVSZW1vdGVJbnNwZWN0aW9uKCk7CiAjZW5kaWYKIAotICAgIHByb2Nlc3MoKS0+c2Vu
ZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6Q3JlYXRlV2ViUGFnZShtX3BhZ2VJRCwgY3JlYXRpb25Q
YXJhbWV0ZXJzKCkpLCAwKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nl
c3M6OkNyZWF0ZVdlYlBhZ2UobV9wYWdlSUQsIGNyZWF0aW9uUGFyYW1ldGVycygpKSwgMCk7CiAK
ICNpZiBFTkFCTEUoUEFHRV9WSVNJQklMSVRZX0FQSSkKLSAgICBwcm9jZXNzKCktPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OlNldFZpc2liaWxpdHlTdGF0ZShtX3Zpc2liaWxpdHlTdGF0ZSwgLyog
aXNJbml0aWFsU3RhdGUgKi8gdHJ1ZSksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OlNldFZpc2liaWxpdHlTdGF0ZShtX3Zpc2liaWxpdHlTdGF0ZSwg
LyogaXNJbml0aWFsU3RhdGUgKi8gdHJ1ZSksIG1fcGFnZUlEKTsKICNlbmRpZgogfQogCkBAIC0z
ODQsNyArMzg0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNsb3NlKCkKICAgICBtX2JhY2tGb3J3
YXJkTGlzdC0+cGFnZUNsb3NlZCgpOwogICAgIG1fcGFnZUNsaWVudC0+cGFnZUNsb3NlZCgpOwog
Ci0gICAgcHJvY2VzcygpLT5kaXNjb25uZWN0RnJhbWVzRnJvbVBhZ2UodGhpcyk7CisgICAgbV9w
cm9jZXNzLT5kaXNjb25uZWN0RnJhbWVzRnJvbVBhZ2UodGhpcyk7CiAgICAgbV9tYWluRnJhbWUg
PSAwOwogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKQEAgLTQ1NSw4ICs0NTUsOCBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6Y2xvc2UoKQogCiAgICAgbV9kcmF3aW5nQXJlYSA9IG51bGxwdHI7CiAKLSAg
ICBwcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNsb3NlKCksIG1fcGFnZUlEKTsK
LSAgICBwcm9jZXNzKCktPnJlbW92ZVdlYlBhZ2UobV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2xvc2UoKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vz
cy0+cmVtb3ZlV2ViUGFnZShtX3BhZ2VJRCk7CiB9CiAKIGJvb2wgV2ViUGFnZVByb3h5Ojp0cnlD
bG9zZSgpCkBAIC00NjQsOCArNDY0LDggQEAgYm9vbCBXZWJQYWdlUHJveHk6OnRyeUNsb3NlKCkK
ICAgICBpZiAoIWlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBwcm9jZXNz
KCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlRyeUNsb3NlKCksIG1fcGFnZUlEKTsKLSAgICBw
cm9jZXNzKCktPnJlc3BvbnNpdmVuZXNzVGltZXIoKS0+c3RhcnQoKTsKKyAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlRyeUNsb3NlKCksIG1fcGFnZUlEKTsKKyAgICBtX3By
b2Nlc3MtPnJlc3BvbnNpdmVuZXNzVGltZXIoKS0+c3RhcnQoKTsKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKQEAgLTQ5NCw5ICs0OTQsOSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZFVSTChjb25z
dCBTdHJpbmcmCiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRib3hFeHRlbnNpb25I
YW5kbGU7CiAgICAgYm9vbCBjcmVhdGVkRXh0ZW5zaW9uID0gbWF5YmVJbml0aWFsaXplU2FuZGJv
eEV4dGVuc2lvbkhhbmRsZShLVVJMKEtVUkwoKSwgdXJsKSwgc2FuZGJveEV4dGVuc2lvbkhhbmRs
ZSk7CiAgICAgaWYgKGNyZWF0ZWRFeHRlbnNpb24pCi0gICAgICAgIHByb2Nlc3MoKS0+d2lsbEFj
cXVpcmVVbml2ZXJzYWxGaWxlUmVhZFNhbmRib3hFeHRlbnNpb24oKTsKLSAgICBwcm9jZXNzKCkt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRVUkwodXJsLCBzYW5kYm94RXh0ZW5zaW9uSGFu
ZGxlKSwgbV9wYWdlSUQpOwotICAgIHByb2Nlc3MoKS0+cmVzcG9uc2l2ZW5lc3NUaW1lcigpLT5z
dGFydCgpOworICAgICAgICBtX3Byb2Nlc3MtPndpbGxBY3F1aXJlVW5pdmVyc2FsRmlsZVJlYWRT
YW5kYm94RXh0ZW5zaW9uKCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpMb2FkVVJMKHVybCwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSksIG1fcGFnZUlEKTsKKyAgICBt
X3Byb2Nlc3MtPnJlc3BvbnNpdmVuZXNzVGltZXIoKS0+c3RhcnQoKTsKIH0KIAogdm9pZCBXZWJQ
YWdlUHJveHk6OmxvYWRVUkxSZXF1ZXN0KFdlYlVSTFJlcXVlc3QqIHVybFJlcXVlc3QpCkBAIC01
MDksOSArNTA5LDkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmxvYWRVUkxSZXF1ZXN0KFdlYlVSTAog
ICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlOwogICAg
IGJvb2wgY3JlYXRlZEV4dGVuc2lvbiA9IG1heWJlSW5pdGlhbGl6ZVNhbmRib3hFeHRlbnNpb25I
YW5kbGUodXJsUmVxdWVzdC0+cmVzb3VyY2VSZXF1ZXN0KCkudXJsKCksIHNhbmRib3hFeHRlbnNp
b25IYW5kbGUpOwogICAgIGlmIChjcmVhdGVkRXh0ZW5zaW9uKQotICAgICAgICBwcm9jZXNzKCkt
PndpbGxBY3F1aXJlVW5pdmVyc2FsRmlsZVJlYWRTYW5kYm94RXh0ZW5zaW9uKCk7Ci0gICAgcHJv
Y2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkVVJMUmVxdWVzdCh1cmxSZXF1ZXN0
LT5yZXNvdXJjZVJlcXVlc3QoKSwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSksIG1fcGFnZUlEKTsK
LSAgICBwcm9jZXNzKCktPnJlc3BvbnNpdmVuZXNzVGltZXIoKS0+c3RhcnQoKTsKKyAgICAgICAg
bV9wcm9jZXNzLT53aWxsQWNxdWlyZVVuaXZlcnNhbEZpbGVSZWFkU2FuZGJveEV4dGVuc2lvbigp
OworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TG9hZFVSTFJlcXVlc3Qo
dXJsUmVxdWVzdC0+cmVzb3VyY2VSZXF1ZXN0KCksIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpLCBt
X3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5yZXNwb25zaXZlbmVzc1RpbWVyKCktPnN0YXJ0KCk7
CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkSFRNTFN0cmluZyhjb25zdCBTdHJpbmcmIGh0
bWxTdHJpbmcsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCkKQEAgLTUxOSw5ICs1MTksOSBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6bG9hZEhUTUxTdHJpbmcoY29uc3QgCiAgICAgaWYgKCFpc1ZhbGlkKCkp
CiAgICAgICAgIHJlYXR0YWNoVG9XZWJQcm9jZXNzKCk7CiAKLSAgICBwcm9jZXNzKCktPmFzc3Vt
ZVJlYWRBY2Nlc3NUb0Jhc2VVUkwoYmFzZVVSTCk7Ci0gICAgcHJvY2VzcygpLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpMb2FkSFRNTFN0cmluZyhodG1sU3RyaW5nLCBiYXNlVVJMKSwgbV9wYWdl
SUQpOwotICAgIHByb2Nlc3MoKS0+cmVzcG9uc2l2ZW5lc3NUaW1lcigpLT5zdGFydCgpOworICAg
IG1fcHJvY2Vzcy0+YXNzdW1lUmVhZEFjY2Vzc1RvQmFzZVVSTChiYXNlVVJMKTsKKyAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRIVE1MU3RyaW5nKGh0bWxTdHJpbmcs
IGJhc2VVUkwpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5yZXNwb25zaXZlbmVzc1RpbWVy
KCktPnN0YXJ0KCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkQWx0ZXJuYXRlSFRNTFN0
cmluZyhjb25zdCBTdHJpbmcmIGh0bWxTdHJpbmcsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCwgY29u
c3QgU3RyaW5nJiB1bnJlYWNoYWJsZVVSTCkKQEAgLTUzMiw5ICs1MzIsOSBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6bG9hZEFsdGVybmF0ZUhUTUxTdHJpCiAgICAgaWYgKG1fbWFpbkZyYW1lKQogICAg
ICAgICBtX21haW5GcmFtZS0+c2V0VW5yZWFjaGFibGVVUkwodW5yZWFjaGFibGVVUkwpOwogCi0g
ICAgcHJvY2VzcygpLT5hc3N1bWVSZWFkQWNjZXNzVG9CYXNlVVJMKGJhc2VVUkwpOwotICAgIHBy
b2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TG9hZEFsdGVybmF0ZUhUTUxTdHJpbmco
aHRtbFN0cmluZywgYmFzZVVSTCwgdW5yZWFjaGFibGVVUkwpLCBtX3BhZ2VJRCk7Ci0gICAgcHJv
Y2VzcygpLT5yZXNwb25zaXZlbmVzc1RpbWVyKCktPnN0YXJ0KCk7CisgICAgbV9wcm9jZXNzLT5h
c3N1bWVSZWFkQWNjZXNzVG9CYXNlVVJMKGJhc2VVUkwpOworICAgIG1fcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6TG9hZEFsdGVybmF0ZUhUTUxTdHJpbmcoaHRtbFN0cmluZywgYmFz
ZVVSTCwgdW5yZWFjaGFibGVVUkwpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5yZXNwb25z
aXZlbmVzc1RpbWVyKCktPnN0YXJ0KCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkUGxh
aW5UZXh0U3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nKQpAQCAtNTQyLDggKzU0Miw4IEBAIHZv
aWQgV2ViUGFnZVByb3h5Ojpsb2FkUGxhaW5UZXh0U3RyaW5nKGMKICAgICBpZiAoIWlzVmFsaWQo
KSkKICAgICAgICAgcmVhdHRhY2hUb1dlYlByb2Nlc3MoKTsKIAotICAgIHByb2Nlc3MoKS0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6TG9hZFBsYWluVGV4dFN0cmluZyhzdHJpbmcpLCBtX3BhZ2VJ
RCk7Ci0gICAgcHJvY2VzcygpLT5yZXNwb25zaXZlbmVzc1RpbWVyKCktPnN0YXJ0KCk7CisgICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkUGxhaW5UZXh0U3RyaW5nKHN0
cmluZyksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnJlc3BvbnNpdmVuZXNzVGltZXIoKS0+
c3RhcnQoKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmxvYWRXZWJBcmNoaXZlRGF0YShjb25z
dCBXZWJEYXRhKiB3ZWJBcmNoaXZlRGF0YSkKQEAgLTU1MSw4ICs1NTEsOCBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6bG9hZFdlYkFyY2hpdmVEYXRhKGNvCiAgICAgaWYgKCFpc1ZhbGlkKCkpCiAgICAg
ICAgIHJlYXR0YWNoVG9XZWJQcm9jZXNzKCk7CiAKLSAgICBwcm9jZXNzKCktPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkxvYWRXZWJBcmNoaXZlRGF0YSh3ZWJBcmNoaXZlRGF0YS0+ZGF0YVJlZmVy
ZW5jZSgpKSwgbV9wYWdlSUQpOwotICAgIHByb2Nlc3MoKS0+cmVzcG9uc2l2ZW5lc3NUaW1lcigp
LT5zdGFydCgpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TG9hZFdl
YkFyY2hpdmVEYXRhKHdlYkFyY2hpdmVEYXRhLT5kYXRhUmVmZXJlbmNlKCkpLCBtX3BhZ2VJRCk7
CisgICAgbV9wcm9jZXNzLT5yZXNwb25zaXZlbmVzc1RpbWVyKCktPnN0YXJ0KCk7CiB9CiAKIHZv
aWQgV2ViUGFnZVByb3h5OjpzdG9wTG9hZGluZygpCkBAIC01NjAsOCArNTYwLDggQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OnN0b3BMb2FkaW5nKCkKICAgICBpZiAoIWlzVmFsaWQoKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgcHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTdG9wTG9h
ZGluZygpLCBtX3BhZ2VJRCk7Ci0gICAgcHJvY2VzcygpLT5yZXNwb25zaXZlbmVzc1RpbWVyKCkt
PnN0YXJ0KCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTdG9wTG9h
ZGluZygpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5yZXNwb25zaXZlbmVzc1RpbWVyKCkt
PnN0YXJ0KCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpyZWxvYWQoYm9vbCByZWxvYWRGcm9t
T3JpZ2luKQpAQCAtNTc1LDcgKzU3NSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZWxvYWQoYm9v
bCByZWxvYWRGcm8KICAgICAgICAgLy8gV2UgbWF5IG5vdCBoYXZlIGFuIGV4dGVuc2lvbiB5ZXQg
aWYgYmFjay9mb3J3YXJkIGxpc3Qgd2FzIHJlaW5zdGF0ZWQgYWZ0ZXIgYSBXZWJQcm9jZXNzIGNy
YXNoIG9yIGEgYnJvd3NlciByZWxhdW5jaAogICAgICAgICBib29sIGNyZWF0ZWRFeHRlbnNpb24g
PSBtYXliZUluaXRpYWxpemVTYW5kYm94RXh0ZW5zaW9uSGFuZGxlKEtVUkwoS1VSTCgpLCB1cmwp
LCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKTsKICAgICAgICAgaWYgKGNyZWF0ZWRFeHRlbnNpb24p
Ci0gICAgICAgICAgICBwcm9jZXNzKCktPndpbGxBY3F1aXJlVW5pdmVyc2FsRmlsZVJlYWRTYW5k
Ym94RXh0ZW5zaW9uKCk7CisgICAgICAgICAgICBtX3Byb2Nlc3MtPndpbGxBY3F1aXJlVW5pdmVy
c2FsRmlsZVJlYWRTYW5kYm94RXh0ZW5zaW9uKCk7CiAgICAgfQogCiAgICAgaWYgKCFpc1ZhbGlk
KCkpIHsKQEAgLTU4Myw4ICs1ODMsOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVsb2FkKGJvb2wg
cmVsb2FkRnJvCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBwcm9jZXNzKCktPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OlJlbG9hZChyZWxvYWRGcm9tT3JpZ2luLCBzYW5kYm94RXh0ZW5z
aW9uSGFuZGxlKSwgbV9wYWdlSUQpOwotICAgIHByb2Nlc3MoKS0+cmVzcG9uc2l2ZW5lc3NUaW1l
cigpLT5zdGFydCgpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVs
b2FkKHJlbG9hZEZyb21PcmlnaW4sIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpLCBtX3BhZ2VJRCk7
CisgICAgbV9wcm9jZXNzLT5yZXNwb25zaXZlbmVzc1RpbWVyKCktPnN0YXJ0KCk7CiB9CiAKIHZv
aWQgV2ViUGFnZVByb3h5Ojpnb0ZvcndhcmQoKQpAQCAtNjAzLDggKzYwMyw4IEBAIHZvaWQgV2Vi
UGFnZVByb3h5Ojpnb0ZvcndhcmQoKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgcHJv
Y2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHb0ZvcndhcmQoZm9yd2FyZEl0ZW0tPml0
ZW1JRCgpKSwgbV9wYWdlSUQpOwotICAgIHByb2Nlc3MoKS0+cmVzcG9uc2l2ZW5lc3NUaW1lcigp
LT5zdGFydCgpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R29Gb3J3
YXJkKGZvcndhcmRJdGVtLT5pdGVtSUQoKSksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnJl
c3BvbnNpdmVuZXNzVGltZXIoKS0+c3RhcnQoKTsKIH0KIAogYm9vbCBXZWJQYWdlUHJveHk6OmNh
bkdvRm9yd2FyZCgpIGNvbnN0CkBAIC02MjgsOCArNjI4LDggQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmdvQmFjaygpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBwcm9jZXNzKCktPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OkdvQmFjayhiYWNrSXRlbS0+aXRlbUlEKCkpLCBtX3BhZ2VJRCk7
Ci0gICAgcHJvY2VzcygpLT5yZXNwb25zaXZlbmVzc1RpbWVyKCktPnN0YXJ0KCk7CisgICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHb0JhY2soYmFja0l0ZW0tPml0ZW1JRCgp
KSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+cmVzcG9uc2l2ZW5lc3NUaW1lcigpLT5zdGFy
dCgpOwogfQogCiBib29sIFdlYlBhZ2VQcm94eTo6Y2FuR29CYWNrKCkgY29uc3QKQEAgLTY0Niw4
ICs2NDYsOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z29Ub0JhY2tGb3J3YXJkSXRlbShXCiAgICAg
CiAgICAgc2V0UGVuZGluZ0FQSVJlcXVlc3RVUkwoaXRlbS0+dXJsKCkpOwogCi0gICAgcHJvY2Vz
cygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHb1RvQmFja0ZvcndhcmRJdGVtKGl0ZW0tPml0
ZW1JRCgpKSwgbV9wYWdlSUQpOwotICAgIHByb2Nlc3MoKS0+cmVzcG9uc2l2ZW5lc3NUaW1lcigp
LT5zdGFydCgpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R29Ub0Jh
Y2tGb3J3YXJkSXRlbShpdGVtLT5pdGVtSUQoKSksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3Mt
PnJlc3BvbnNpdmVuZXNzVGltZXIoKS0+c3RhcnQoKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6
OnRyeVJlc3RvcmVTY3JvbGxQb3NpdGlvbigpCkBAIC02NTUsNyArNjU1LDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OnRyeVJlc3RvcmVTY3JvbGxQb3NpdAogICAgIGlmICghaXNWYWxpZCgpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBwcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlRy
eVJlc3RvcmVTY3JvbGxQb3NpdGlvbigpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpUcnlSZXN0b3JlU2Nyb2xsUG9zaXRpb24oKSwgbV9wYWdlSUQp
OwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0KFdlYkJh
Y2tGb3J3YXJkTGlzdEl0ZW0qIGFkZGVkLCBWZWN0b3I8UmVmUHRyPEFQSU9iamVjdD4gPiogcmVt
b3ZlZCkKQEAgLTY2NSw3ICs2NjUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ2hhbmdlQmFj
a0ZvcndhcmRMCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzaG91bGRHb1RvQmFja0ZvcndhcmRMaXN0
SXRlbSh1aW50NjRfdCBpdGVtSUQsIGJvb2wmIHNob3VsZEdvVG9CYWNrRm9yd2FyZEl0ZW0pCiB7
Ci0gICAgV2ViQmFja0ZvcndhcmRMaXN0SXRlbSogaXRlbSA9IHByb2Nlc3MoKS0+d2ViQmFja0Zv
cndhcmRJdGVtKGl0ZW1JRCk7CisgICAgV2ViQmFja0ZvcndhcmRMaXN0SXRlbSogaXRlbSA9IG1f
cHJvY2Vzcy0+d2ViQmFja0ZvcndhcmRJdGVtKGl0ZW1JRCk7CiAgICAgc2hvdWxkR29Ub0JhY2tG
b3J3YXJkSXRlbSA9IGl0ZW0gJiYgbV9sb2FkZXJDbGllbnQuc2hvdWxkR29Ub0JhY2tGb3J3YXJk
TGlzdEl0ZW0odGhpcywgaXRlbSk7CiB9CiAKQEAgLTY3Niw3ICs2NzYsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6d2lsbEdvVG9CYWNrRm9yd2FyZExpCiAgICAgaWYgKCFhcmd1bWVudHMtPmRlY29k
ZShtZXNzYWdlRGVjb2RlcikpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChXZWJCYWNrRm9y
d2FyZExpc3RJdGVtKiBpdGVtID0gcHJvY2VzcygpLT53ZWJCYWNrRm9yd2FyZEl0ZW0oaXRlbUlE
KSkKKyAgICBpZiAoV2ViQmFja0ZvcndhcmRMaXN0SXRlbSogaXRlbSA9IG1fcHJvY2Vzcy0+d2Vi
QmFja0ZvcndhcmRJdGVtKGl0ZW1JRCkpCiAgICAgICAgIG1fbG9hZGVyQ2xpZW50LndpbGxHb1Rv
QmFja0ZvcndhcmRMaXN0SXRlbSh0aGlzLCBpdGVtLCB1c2VyRGF0YS5nZXQoKSk7CiB9CiAKQEAg
LTc0OCw3ICs3NDgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0RHJhd3NCYWNrZ3JvdW5kKGJv
CiAgICAgbV9kcmF3c0JhY2tncm91bmQgPSBkcmF3c0JhY2tncm91bmQ7CiAKICAgICBpZiAoaXNW
YWxpZCgpKQotICAgICAgICBwcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldERy
YXdzQmFja2dyb3VuZChkcmF3c0JhY2tncm91bmQpLCBtX3BhZ2VJRCk7CisgICAgICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0RHJhd3NCYWNrZ3JvdW5kKGRyYXdzQmFj
a2dyb3VuZCksIG1fcGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldERyYXdzVHJh
bnNwYXJlbnRCYWNrZ3JvdW5kKGJvb2wgZHJhd3NUcmFuc3BhcmVudEJhY2tncm91bmQpCkBAIC03
NTksMjEgKzc1OSwyMSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0RHJhd3NUcmFuc3BhcmVudEJh
CiAgICAgbV9kcmF3c1RyYW5zcGFyZW50QmFja2dyb3VuZCA9IGRyYXdzVHJhbnNwYXJlbnRCYWNr
Z3JvdW5kOwogCiAgICAgaWYgKGlzVmFsaWQoKSkKLSAgICAgICAgcHJvY2VzcygpLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpTZXREcmF3c1RyYW5zcGFyZW50QmFja2dyb3VuZChkcmF3c1RyYW5z
cGFyZW50QmFja2dyb3VuZCksIG1fcGFnZUlEKTsKKyAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpTZXREcmF3c1RyYW5zcGFyZW50QmFja2dyb3VuZChkcmF3c1RyYW5z
cGFyZW50QmFja2dyb3VuZCksIG1fcGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnZp
ZXdXaWxsU3RhcnRMaXZlUmVzaXplKCkKIHsKICAgICBpZiAoIWlzVmFsaWQoKSkKICAgICAgICAg
cmV0dXJuOwotICAgIHByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Vmlld1dpbGxT
dGFydExpdmVSZXNpemUoKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6Vmlld1dpbGxTdGFydExpdmVSZXNpemUoKSwgbV9wYWdlSUQpOwogfQogCiB2
b2lkIFdlYlBhZ2VQcm94eTo6dmlld1dpbGxFbmRMaXZlUmVzaXplKCkKIHsKICAgICBpZiAoIWlz
VmFsaWQoKSkKICAgICAgICAgcmV0dXJuOwotICAgIHByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6Vmlld1dpbGxFbmRMaXZlUmVzaXplKCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlZpZXdXaWxsRW5kTGl2ZVJlc2l6ZSgpLCBtX3Bh
Z2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRWaWV3TmVlZHNEaXNwbGF5KGNvbnN0
IEludFJlY3QmIHJlY3QpCkBAIC03OTcsMTAgKzc5NywxMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
dmlld1N0YXRlRGlkQ2hhbmdlKFZpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChmbGFncyAm
IFZpZXdJc0ZvY3VzZWQpCi0gICAgICAgIHByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6U2V0Rm9jdXNlZChtX3BhZ2VDbGllbnQtPmlzVmlld0ZvY3VzZWQoKSksIG1fcGFnZUlEKTsK
KyAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRGb2N1c2VkKG1f
cGFnZUNsaWVudC0+aXNWaWV3Rm9jdXNlZCgpKSwgbV9wYWdlSUQpOwogCiAgICAgaWYgKGZsYWdz
ICYgVmlld1dpbmRvd0lzQWN0aXZlKQotICAgICAgICBwcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OlNldEFjdGl2ZShtX3BhZ2VDbGllbnQtPmlzVmlld1dpbmRvd0FjdGl2ZSgpKSwg
bV9wYWdlSUQpOworICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNl
dEFjdGl2ZShtX3BhZ2VDbGllbnQtPmlzVmlld1dpbmRvd0FjdGl2ZSgpKSwgbV9wYWdlSUQpOwog
CiAgICAgaWYgKGZsYWdzICYgVmlld0lzVmlzaWJsZSkgewogICAgICAgICBib29sIGlzVmlzaWJs
ZSA9IG1fcGFnZUNsaWVudC0+aXNWaWV3VmlzaWJsZSgpOwpAQCAtODEyLDcgKzgxMiw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5Ojp2aWV3U3RhdGVEaWRDaGFuZ2UoVmkKICAgICAgICAgICAgICAgICAv
LyBJZiB3ZSd2ZSBzdGFydGVkIHRoZSByZXNwb25zaXZlbmVzcyB0aW1lciBhcyBwYXJ0IG9mIHRl
bGxpbmcgdGhlIHdlYiBwcm9jZXNzIHRvIHVwZGF0ZSB0aGUgYmFja2luZyBzdG9yZQogICAgICAg
ICAgICAgICAgIC8vIHN0YXRlLCBpdCBtaWdodCBub3Qgc2VuZCBiYWNrIGEgcmVwbHkgKHNpbmNl
IGl0IHdvbid0IHBhaW50IGFueXRoaW5nIGlmIHRoZSB3ZWIgcGFnZSBpcyBoaWRkZW4pIHNvIHdl
CiAgICAgICAgICAgICAgICAgLy8gc3RvcCB0aGUgdW5yZXNwb25zaXZlbmVzcyB0aW1lciBoZXJl
LgotICAgICAgICAgICAgICAgIHByb2Nlc3MoKS0+cmVzcG9uc2l2ZW5lc3NUaW1lcigpLT5zdG9w
KCk7CisgICAgICAgICAgICAgICAgbV9wcm9jZXNzLT5yZXNwb25zaXZlbmVzc1RpbWVyKCktPnN0
b3AoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KQEAgLTgyMSw3ICs4MjEsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6dmlld1N0YXRlRGlkQ2hhbmdlKFZpCiAgICAgICAgIGJvb2wg
aXNJbldpbmRvdyA9IG1fcGFnZUNsaWVudC0+aXNWaWV3SW5XaW5kb3coKTsKICAgICAgICAgaWYg
KG1faXNJbldpbmRvdyAhPSBpc0luV2luZG93KSB7CiAgICAgICAgICAgICBtX2lzSW5XaW5kb3cg
PSBpc0luV2luZG93OwotICAgICAgICAgICAgcHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpTZXRJc0luV2luZG93KGlzSW5XaW5kb3cpLCBtX3BhZ2VJRCk7CisgICAgICAgICAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldElzSW5XaW5kb3coaXNJbldpbmRv
dyksIG1fcGFnZUlEKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChpc0luV2luZG93KSB7CkBA
IC04NDEsNyArODQxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnZpZXdTdGF0ZURpZENoYW5nZShW
aQogCiAgICAgaWYgKHZpc2liaWxpdHlTdGF0ZSAhPSBtX3Zpc2liaWxpdHlTdGF0ZSkgewogICAg
ICAgICBtX3Zpc2liaWxpdHlTdGF0ZSA9IHZpc2liaWxpdHlTdGF0ZTsKLSAgICAgICAgcHJvY2Vz
cygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRWaXNpYmlsaXR5U3RhdGUodmlzaWJpbGl0
eVN0YXRlLCBmYWxzZSksIG1fcGFnZUlEKTsKKyAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpTZXRWaXNpYmlsaXR5U3RhdGUodmlzaWJpbGl0eVN0YXRlLCBmYWxzZSks
IG1fcGFnZUlEKTsKICAgICB9CiAjZW5kaWYKIApAQCAtODU3LDIxICs4NTcsMjEgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OnNldEluaXRpYWxGb2N1cyhib29sIAogewogICAgIGlmICghaXNWYWxpZCgp
KQogICAgICAgICByZXR1cm47Ci0gICAgcHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpTZXRJbml0aWFsRm9jdXMoZm9yd2FyZCwgaXNLZXlib2FyZEV2ZW50VmFsaWQsIGtleWJvYXJk
RXZlbnQpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpTZXRJbml0aWFsRm9jdXMoZm9yd2FyZCwgaXNLZXlib2FyZEV2ZW50VmFsaWQsIGtleWJvYXJk
RXZlbnQpLCBtX3BhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRXaW5kb3dSZXNp
emVyU2l6ZShjb25zdCBJbnRTaXplJiB3aW5kb3dSZXNpemVyU2l6ZSkKIHsKICAgICBpZiAoIWlz
VmFsaWQoKSkKICAgICAgICAgcmV0dXJuOwotICAgIHByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6U2V0V2luZG93UmVzaXplclNpemUod2luZG93UmVzaXplclNpemUpLCBtX3BhZ2VJ
RCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRXaW5kb3dSZXNp
emVyU2l6ZSh3aW5kb3dSZXNpemVyU2l6ZSksIG1fcGFnZUlEKTsKIH0KICAgICAKIHZvaWQgV2Vi
UGFnZVByb3h5OjpjbGVhclNlbGVjdGlvbigpCiB7CiAgICAgaWYgKCFpc1ZhbGlkKCkpCiAgICAg
ICAgIHJldHVybjsKLSAgICBwcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNsZWFy
U2VsZWN0aW9uKCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OkNsZWFyU2VsZWN0aW9uKCksIG1fcGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJv
eHk6OnZhbGlkYXRlQ29tbWFuZChjb25zdCBTdHJpbmcmIGNvbW1hbmROYW1lLCBQYXNzUmVmUHRy
PFZhbGlkYXRlQ29tbWFuZENhbGxiYWNrPiBjYWxsYmFjaykKQEAgLTg4Myw3ICs4ODMsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6dmFsaWRhdGVDb21tYW5kKGNvbnN0CiAKICAgICB1aW50NjRfdCBj
YWxsYmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKTsKICAgICBtX3ZhbGlkYXRlQ29tbWFu
ZENhbGxiYWNrcy5zZXQoY2FsbGJhY2tJRCwgY2FsbGJhY2suZ2V0KCkpOwotICAgIHByb2Nlc3Mo
KS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VmFsaWRhdGVDb21tYW5kKGNvbW1hbmROYW1lLCBj
YWxsYmFja0lEKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6VmFsaWRhdGVDb21tYW5kKGNvbW1hbmROYW1lLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQp
OwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0TWFpbnRhaW5zSW5hY3RpdmVTZWxlY3Rpb24o
Ym9vbCBuZXdWYWx1ZSkKQEAgLTkwMCw3ICs5MDAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZXhl
Y3V0ZUVkaXRDb21tYW5kKGNvCiAgICAgaWYgKGNvbW1hbmROYW1lID09IGlnbm9yZVNwZWxsaW5n
Q29tbWFuZE5hbWUpCiAgICAgICAgICsrbV9wZW5kaW5nTGVhcm5Pcklnbm9yZVdvcmRNZXNzYWdl
Q291bnQ7CiAKLSAgICBwcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkV4ZWN1dGVF
ZGl0Q29tbWFuZChjb21tYW5kTmFtZSksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OkV4ZWN1dGVFZGl0Q29tbWFuZChjb21tYW5kTmFtZSksIG1fcGFn
ZUlEKTsKIH0KICAgICAKICNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKQEAgLTkwOSw3ICs5
MDksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Vmlld3BvcnRTaXplKGNvbnN0CiAgICAgaWYg
KCFpc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHByb2Nlc3MoKS0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6U2V0Vmlld3BvcnRTaXplKHNpemUpLCBtX3BhZ2VJRCk7CisgICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRWaWV3cG9ydFNpemUoc2l6ZSksIG1f
cGFnZUlEKTsKIH0KICNlbmRpZgogCkBAIC05NDYsMTIgKzk0NiwxMiBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6cGVyZm9ybURyYWdDb250cm9sbGVyCiAgICAgICAgIHJldHVybjsKICNpZiBQTEFURk9S
TShXSU4pCiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBwYXNzIHRoZSBkcmFnIGRhdGEgbWFwIG9u
bHkgb24gRHJhZ0VudGVyLgotICAgIHByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
UGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKGFjdGlvbiwgZHJhZ0RhdGEtPmNsaWVudFBvc2l0
aW9uKCksIGRyYWdEYXRhLT5nbG9iYWxQb3NpdGlvbigpLAorICAgIG1fcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6UGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKGFjdGlvbiwgZHJh
Z0RhdGEtPmNsaWVudFBvc2l0aW9uKCksIGRyYWdEYXRhLT5nbG9iYWxQb3NpdGlvbigpLAogICAg
ICAgICBkcmFnRGF0YS0+ZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrKCksIGRyYWdEYXRhLT5k
cmFnRGF0YU1hcCgpLCBkcmFnRGF0YS0+ZmxhZ3MoKSksIG1fcGFnZUlEKTsKICNlbGlmIFBMQVRG
T1JNKFFUKSB8fCBQTEFURk9STShHVEspCi0gICAgcHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpQZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oYWN0aW9uLCAqZHJhZ0RhdGEpLCBt
X3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpQZXJmb3Jt
RHJhZ0NvbnRyb2xsZXJBY3Rpb24oYWN0aW9uLCAqZHJhZ0RhdGEpLCBtX3BhZ2VJRCk7CiAjZWxz
ZQotICAgIHByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UGVyZm9ybURyYWdDb250
cm9sbGVyQWN0aW9uKGFjdGlvbiwgZHJhZ0RhdGEtPmNsaWVudFBvc2l0aW9uKCksIGRyYWdEYXRh
LT5nbG9iYWxQb3NpdGlvbigpLCBkcmFnRGF0YS0+ZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNr
KCksIGRyYWdTdG9yYWdlTmFtZSwgZHJhZ0RhdGEtPmZsYWdzKCksIHNhbmRib3hFeHRlbnNpb25I
YW5kbGUsIHNhbmRib3hFeHRlbnNpb25zRm9yVXBsb2FkKSwgbV9wYWdlSUQpOworICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9u
KGFjdGlvbiwgZHJhZ0RhdGEtPmNsaWVudFBvc2l0aW9uKCksIGRyYWdEYXRhLT5nbG9iYWxQb3Np
dGlvbigpLCBkcmFnRGF0YS0+ZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrKCksIGRyYWdTdG9y
YWdlTmFtZSwgZHJhZ0RhdGEtPmZsYWdzKCksIHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIHNhbmRi
b3hFeHRlbnNpb25zRm9yVXBsb2FkKSwgbV9wYWdlSUQpOwogI2VuZGlmCiB9CiAKQEAgLTk3OCw3
ICs5NzgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZHJhZ0VuZGVkKGNvbnN0IEludFBvCiB7CiAg
ICAgaWYgKCFpc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBwcm9jZXNzKCktPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OkRyYWdFbmRlZChjbGllbnRQb3NpdGlvbiwgZ2xvYmFsUG9zaXRp
b24sIG9wZXJhdGlvbiksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OkRyYWdFbmRlZChjbGllbnRQb3NpdGlvbiwgZ2xvYmFsUG9zaXRpb24sIG9wZXJh
dGlvbiksIG1fcGFnZUlEKTsKIH0KICNlbmRpZiAvLyBFTkFCTEUoRFJBR19TVVBQT1JUKQogCkBA
IC05ODksNyArOTg5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmhhbmRsZU1vdXNlRXZlbnQoY29u
cwogCiAgICAgLy8gTk9URTogVGhpcyBkb2VzIG5vdCBzdGFydCB0aGUgcmVzcG9uc2l2ZW5lc3Mg
dGltZXIgYmVjYXVzZSBtb3VzZSBtb3ZlIHNob3VsZCBub3QgaW5kaWNhdGUgaW50ZXJhY3Rpb24u
CiAgICAgaWYgKGV2ZW50LnR5cGUoKSAhPSBXZWJFdmVudDo6TW91c2VNb3ZlKQotICAgICAgICBw
cm9jZXNzKCktPnJlc3BvbnNpdmVuZXNzVGltZXIoKS0+c3RhcnQoKTsKKyAgICAgICAgbV9wcm9j
ZXNzLT5yZXNwb25zaXZlbmVzc1RpbWVyKCktPnN0YXJ0KCk7CiAgICAgZWxzZSB7CiAgICAgICAg
IGlmIChtX3Byb2Nlc3NpbmdNb3VzZU1vdmVFdmVudCkgewogICAgICAgICAgICAgbV9uZXh0TW91
c2VNb3ZlRXZlbnQgPSBhZG9wdFB0cihuZXcgTmF0aXZlV2ViTW91c2VFdmVudChldmVudCkpOwpA
QCAtMTAwOCwxMCArMTAwOCwxMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxlTW91c2VFdmVu
dChjb25zCiAKICAgICBpZiAobV9zaG91bGRTZW5kRXZlbnRzU3luY2hyb25vdXNseSkgewogICAg
ICAgICBib29sIGhhbmRsZWQgPSBmYWxzZTsKLSAgICAgICAgcHJvY2VzcygpLT5zZW5kU3luYyhN
ZXNzYWdlczo6V2ViUGFnZTo6TW91c2VFdmVudFN5bmNGb3JUZXN0aW5nKGV2ZW50KSwgTWVzc2Fn
ZXM6OldlYlBhZ2U6Ok1vdXNlRXZlbnRTeW5jRm9yVGVzdGluZzo6UmVwbHkoaGFuZGxlZCksIG1f
cGFnZUlEKTsKKyAgICAgICAgbV9wcm9jZXNzLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZTo6
TW91c2VFdmVudFN5bmNGb3JUZXN0aW5nKGV2ZW50KSwgTWVzc2FnZXM6OldlYlBhZ2U6Ok1vdXNl
RXZlbnRTeW5jRm9yVGVzdGluZzo6UmVwbHkoaGFuZGxlZCksIG1fcGFnZUlEKTsKICAgICAgICAg
ZGlkUmVjZWl2ZUV2ZW50KGV2ZW50LnR5cGUoKSwgaGFuZGxlZCk7CiAgICAgfSBlbHNlCi0gICAg
ICAgIHByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TW91c2VFdmVudChldmVudCks
IG1fcGFnZUlEKTsKKyAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpN
b3VzZUV2ZW50KGV2ZW50KSwgbV9wYWdlSUQpOwogfQogCiAjaWYgTUVSR0VfV0hFRUxfRVZFTlRT
CkBAIC0xMTExLDE2ICsxMTExLDE2IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpwcm9jZXNzTmV4dFF1
ZXVlZFdoZWUKIAogdm9pZCBXZWJQYWdlUHJveHk6OnNlbmRXaGVlbEV2ZW50KGNvbnN0IFdlYldo
ZWVsRXZlbnQmIGV2ZW50KQogewotICAgIHByb2Nlc3MoKS0+cmVzcG9uc2l2ZW5lc3NUaW1lcigp
LT5zdGFydCgpOworICAgIG1fcHJvY2Vzcy0+cmVzcG9uc2l2ZW5lc3NUaW1lcigpLT5zdGFydCgp
OwogCiAgICAgaWYgKG1fc2hvdWxkU2VuZEV2ZW50c1N5bmNocm9ub3VzbHkpIHsKICAgICAgICAg
Ym9vbCBoYW5kbGVkID0gZmFsc2U7Ci0gICAgICAgIHByb2Nlc3MoKS0+c2VuZFN5bmMoTWVzc2Fn
ZXM6OldlYlBhZ2U6OldoZWVsRXZlbnRTeW5jRm9yVGVzdGluZyhldmVudCksIE1lc3NhZ2VzOjpX
ZWJQYWdlOjpXaGVlbEV2ZW50U3luY0ZvclRlc3Rpbmc6OlJlcGx5KGhhbmRsZWQpLCBtX3BhZ2VJ
RCk7CisgICAgICAgIG1fcHJvY2Vzcy0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2U6OldoZWVs
RXZlbnRTeW5jRm9yVGVzdGluZyhldmVudCksIE1lc3NhZ2VzOjpXZWJQYWdlOjpXaGVlbEV2ZW50
U3luY0ZvclRlc3Rpbmc6OlJlcGx5KGhhbmRsZWQpLCBtX3BhZ2VJRCk7CiAgICAgICAgIGRpZFJl
Y2VpdmVFdmVudChldmVudC50eXBlKCksIGhhbmRsZWQpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgcHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpFdmVudERpc3BhdGNoZXI6OldoZWVs
RXZlbnQobV9wYWdlSUQsIGV2ZW50LCBjYW5Hb0JhY2soKSwgY2FuR29Gb3J3YXJkKCkpLCAwKTsK
KyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OkV2ZW50RGlzcGF0Y2hlcjo6V2hlZWxFdmVu
dChtX3BhZ2VJRCwgZXZlbnQsIGNhbkdvQmFjaygpLCBjYW5Hb0ZvcndhcmQoKSksIDApOwogfQog
CiB2b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxlS2V5Ym9hcmRFdmVudChjb25zdCBOYXRpdmVXZWJL
ZXlib2FyZEV2ZW50JiBldmVudCkKQEAgLTExMzIsMTMgKzExMzIsMTMgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmhhbmRsZUtleWJvYXJkRXZlbnQoYwogCiAgICAgbV9rZXlFdmVudFF1ZXVlLmFwcGVu
ZChldmVudCk7CiAKLSAgICBwcm9jZXNzKCktPnJlc3BvbnNpdmVuZXNzVGltZXIoKS0+c3RhcnQo
KTsKKyAgICBtX3Byb2Nlc3MtPnJlc3BvbnNpdmVuZXNzVGltZXIoKS0+c3RhcnQoKTsKICAgICBp
ZiAobV9zaG91bGRTZW5kRXZlbnRzU3luY2hyb25vdXNseSkgewogICAgICAgICBib29sIGhhbmRs
ZWQgPSBmYWxzZTsKLSAgICAgICAgcHJvY2VzcygpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFn
ZTo6S2V5RXZlbnRTeW5jRm9yVGVzdGluZyhldmVudCksIE1lc3NhZ2VzOjpXZWJQYWdlOjpLZXlF
dmVudFN5bmNGb3JUZXN0aW5nOjpSZXBseShoYW5kbGVkKSwgbV9wYWdlSUQpOworICAgICAgICBt
X3Byb2Nlc3MtPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlOjpLZXlFdmVudFN5bmNGb3JUZXN0
aW5nKGV2ZW50KSwgTWVzc2FnZXM6OldlYlBhZ2U6OktleUV2ZW50U3luY0ZvclRlc3Rpbmc6OlJl
cGx5KGhhbmRsZWQpLCBtX3BhZ2VJRCk7CiAgICAgICAgIGRpZFJlY2VpdmVFdmVudChldmVudC50
eXBlKCksIGhhbmRsZWQpOwogICAgIH0gZWxzZSBpZiAobV9rZXlFdmVudFF1ZXVlLnNpemUoKSA9
PSAxKSAvLyBPdGhlcndpc2UsIHNlbnQgZnJvbSBEaWRSZWNlaXZlRXZlbnQgbWVzc2FnZSBoYW5k
bGVyLgotICAgICAgICBwcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OktleUV2ZW50
KGV2ZW50KSwgbV9wYWdlSUQpOworICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OktleUV2ZW50KGV2ZW50KSwgbV9wYWdlSUQpOwogfQogCiAjaWYgRU5BQkxFKEdFU1RV
UkVfRVZFTlRTKQpAQCAtMTE0OSw4ICsxMTQ5LDggQEAgdm9pZCBXZWJQYWdlUHJveHk6OmhhbmRs
ZUdlc3R1cmVFdmVudChjbwogCiAgICAgbV9nZXN0dXJlRXZlbnRRdWV1ZS5hcHBlbmQoZXZlbnQp
OwogCi0gICAgcHJvY2VzcygpLT5yZXNwb25zaXZlbmVzc1RpbWVyKCktPnN0YXJ0KCk7Ci0gICAg
cHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpFdmVudERpc3BhdGNoZXI6Okdlc3R1cmVFdmVudCht
X3BhZ2VJRCwgZXZlbnQpLCAwKTsKKyAgICBtX3Byb2Nlc3MtPnJlc3BvbnNpdmVuZXNzVGltZXIo
KS0+c3RhcnQoKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OkV2ZW50RGlzcGF0Y2hl
cjo6R2VzdHVyZUV2ZW50KG1fcGFnZUlELCBldmVudCksIDApOwogfQogI2VuZGlmCiAKQEAgLTEx
NTgsNyArMTE1OCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpoYW5kbGVHZXN0dXJlRXZlbnQoY28K
ICNpZiBQTEFURk9STShRVCkKIHZvaWQgV2ViUGFnZVByb3h5OjpoYW5kbGVQb3RlbnRpYWxBY3Rp
dmF0aW9uKGNvbnN0IEludFBvaW50JiB0b3VjaFBvaW50LCBjb25zdCBJbnRTaXplJiB0b3VjaEFy
ZWEpCiB7Ci0gICAgcHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpIaWdobGlnaHRQ
b3RlbnRpYWxBY3RpdmF0aW9uKHRvdWNoUG9pbnQsIHRvdWNoQXJlYSksIG1fcGFnZUlEKTsKKyAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkhpZ2hsaWdodFBvdGVudGlhbEFj
dGl2YXRpb24odG91Y2hQb2ludCwgdG91Y2hBcmVhKSwgbV9wYWdlSUQpOwogfQogI2VuZGlmCiAK
QEAgLTExNzIsMTMgKzExNzIsMTMgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmhhbmRsZVRvdWNoRXZl
bnQoY29ucwogICAgIC8vIHdlIGRvIG5vdCBzZW5kIGFueSBvZiB0aGUgZXZlbnRzIHRvIHRoZSBw
YWdlIGV2ZW4gaWYgaXMgaGFzIGxpc3RlbmVycy4KICAgICBpZiAobV9uZWVkVG91Y2hFdmVudHMg
JiYgIW1faXNQYWdlU3VzcGVuZGVkKSB7CiAgICAgICAgIG1fdG91Y2hFdmVudFF1ZXVlLmFwcGVu
ZChldmVudCk7Ci0gICAgICAgIHByb2Nlc3MoKS0+cmVzcG9uc2l2ZW5lc3NUaW1lcigpLT5zdGFy
dCgpOworICAgICAgICBtX3Byb2Nlc3MtPnJlc3BvbnNpdmVuZXNzVGltZXIoKS0+c3RhcnQoKTsK
ICAgICAgICAgaWYgKG1fc2hvdWxkU2VuZEV2ZW50c1N5bmNocm9ub3VzbHkpIHsKICAgICAgICAg
ICAgIGJvb2wgaGFuZGxlZCA9IGZhbHNlOwotICAgICAgICAgICAgcHJvY2VzcygpLT5zZW5kU3lu
YyhNZXNzYWdlczo6V2ViUGFnZTo6VG91Y2hFdmVudFN5bmNGb3JUZXN0aW5nKGV2ZW50KSwgTWVz
c2FnZXM6OldlYlBhZ2U6OlRvdWNoRXZlbnRTeW5jRm9yVGVzdGluZzo6UmVwbHkoaGFuZGxlZCks
IG1fcGFnZUlEKTsKKyAgICAgICAgICAgIG1fcHJvY2Vzcy0+c2VuZFN5bmMoTWVzc2FnZXM6Oldl
YlBhZ2U6OlRvdWNoRXZlbnRTeW5jRm9yVGVzdGluZyhldmVudCksIE1lc3NhZ2VzOjpXZWJQYWdl
OjpUb3VjaEV2ZW50U3luY0ZvclRlc3Rpbmc6OlJlcGx5KGhhbmRsZWQpLCBtX3BhZ2VJRCk7CiAg
ICAgICAgICAgICBkaWRSZWNlaXZlRXZlbnQoZXZlbnQudHlwZSgpLCBoYW5kbGVkKTsKICAgICAg
ICAgfSBlbHNlCi0gICAgICAgICAgICBwcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OlRvdWNoRXZlbnQoZXZlbnQpLCBtX3BhZ2VJRCk7CisgICAgICAgICAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlRvdWNoRXZlbnQoZXZlbnQpLCBtX3BhZ2VJRCk7CiAgICAg
fSBlbHNlIHsKICAgICAgICAgaWYgKG1fdG91Y2hFdmVudFF1ZXVlLmlzRW1wdHkoKSkgewogICAg
ICAgICAgICAgYm9vbCBpc0V2ZW50SGFuZGxlZCA9IGZhbHNlOwpAQCAtMTE5OCw3ICsxMTk4LDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OnNjcm9sbEJ5KFNjcm9sbERpcmVjdAogICAgIGlmICghaXNW
YWxpZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBwcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OlNjcm9sbEJ5KGRpcmVjdGlvbiwgZ3JhbnVsYXJpdHkpLCBtX3BhZ2VJRCk7Cisg
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTY3JvbGxCeShkaXJlY3Rpb24s
IGdyYW51bGFyaXR5KSwgbV9wYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y2VudGVy
U2VsZWN0aW9uSW5WaXNpYmxlQXJlYSgpCkBAIC0xMjA2LDcgKzEyMDYsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6Y2VudGVyU2VsZWN0aW9uSW5WaXNpCiAgICAgaWYgKCFpc1ZhbGlkKCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIHByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2Vu
dGVyU2VsZWN0aW9uSW5WaXNpYmxlQXJlYSgpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDZW50ZXJTZWxlY3Rpb25JblZpc2libGVBcmVhKCksIG1f
cGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnJlY2VpdmVkUG9saWN5RGVjaXNpb24o
UG9saWN5QWN0aW9uIGFjdGlvbiwgV2ViRnJhbWVQcm94eSogZnJhbWUsIHVpbnQ2NF90IGxpc3Rl
bmVySUQpCkBAIC0xMjQ2LDcgKzEyNDYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVjZWl2ZWRQ
b2xpY3lEZWNpc2lvCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgcHJvY2Vzcygp
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRSZWNlaXZlUG9saWN5RGVjaXNpb24oZnJhbWUt
PmZyYW1lSUQoKSwgbGlzdGVuZXJJRCwgYWN0aW9uLCBkb3dubG9hZElEKSwgbV9wYWdlSUQpOwor
ICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkUmVjZWl2ZVBvbGljeURl
Y2lzaW9uKGZyYW1lLT5mcmFtZUlEKCksIGxpc3RlbmVySUQsIGFjdGlvbiwgZG93bmxvYWRJRCks
IG1fcGFnZUlEKTsKIH0KIAogU3RyaW5nIFdlYlBhZ2VQcm94eTo6cGFnZVRpdGxlKCkgY29uc3QK
QEAgLTEyNjcsNyArMTI2Nyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRVc2VyQWdlbnQoY29u
c3QgU3QKIAogICAgIGlmICghaXNWYWxpZCgpKQogICAgICAgICByZXR1cm47Ci0gICAgcHJvY2Vz
cygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRVc2VyQWdlbnQobV91c2VyQWdlbnQpLCBt
X3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRVc2Vy
QWdlbnQobV91c2VyQWdlbnQpLCBtX3BhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpz
ZXRBcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQoY29uc3QgU3RyaW5nJiBhcHBsaWNhdGlvbk5h
bWUpCkBAIC0xMzA0LDcgKzEzMDQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVzdW1lQWN0aXZl
RE9NT2JqZWN0CiAKICAgICBtX2lzUGFnZVN1c3BlbmRlZCA9IGZhbHNlOwogCi0gICAgcHJvY2Vz
cygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXN1bWVBY3RpdmVET01PYmplY3RzQW5kQW5p
bWF0aW9ucygpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpSZXN1bWVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygpLCBtX3BhZ2VJRCk7CiB9
CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzdXNwZW5kQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlv
bnMoKQpAQCAtMTMxNCw3ICsxMzE0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnN1c3BlbmRBY3Rp
dmVET01PYmplYwogCiAgICAgbV9pc1BhZ2VTdXNwZW5kZWQgPSB0cnVlOwogCi0gICAgcHJvY2Vz
cygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTdXNwZW5kQWN0aXZlRE9NT2JqZWN0c0FuZEFu
aW1hdGlvbnMoKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6U3VzcGVuZEFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKCksIG1fcGFnZUlEKTsK
IH0KIAogYm9vbCBXZWJQYWdlUHJveHk6OnN1cHBvcnRzVGV4dEVuY29kaW5nKCkgY29uc3QKQEAg
LTEzMzAsNyArMTMzMCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRDdXN0b21UZXh0RW5jb2Rp
bmcKIAogICAgIGlmICghaXNWYWxpZCgpKQogICAgICAgICByZXR1cm47Ci0gICAgcHJvY2Vzcygp
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRDdXN0b21UZXh0RW5jb2RpbmdOYW1lKGVuY29k
aW5nTmFtZSksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OlNldEN1c3RvbVRleHRFbmNvZGluZ05hbWUoZW5jb2RpbmdOYW1lKSwgbV9wYWdlSUQpOwog
fQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6dGVybWluYXRlUHJvY2VzcygpCkBAIC0xMzQwLDcgKzEz
NDAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dGVybWluYXRlUHJvY2VzcygpCiAgICAgaWYgKCFt
X2lzVmFsaWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIHByb2Nlc3MoKS0+dGVybWluYXRlKCk7
CisgICAgbV9wcm9jZXNzLT50ZXJtaW5hdGUoKTsKIH0KIAogI2lmICFVU0UoQ0YpIHx8IGRlZmlu
ZWQoQlVJTERJTkdfUVRfXykKQEAgLTEzODAsNyArMTM4MCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpzZXRUZXh0Wm9vbUZhY3Rvcihkb3UKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV90ZXh0Wm9v
bUZhY3RvciA9IHpvb21GYWN0b3I7Ci0gICAgcHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpTZXRUZXh0Wm9vbUZhY3RvcihtX3RleHRab29tRmFjdG9yKSwgbV9wYWdlSUQpOyAKKyAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFRleHRab29tRmFjdG9yKG1f
dGV4dFpvb21GYWN0b3IpLCBtX3BhZ2VJRCk7IAogfQogCiBkb3VibGUgV2ViUGFnZVByb3h5Ojpw
YWdlWm9vbUZhY3RvcigpIGNvbnN0CkBAIC0xNDAyLDcgKzE0MDIsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6c2V0UGFnZVpvb21GYWN0b3IoZG91CiAgICAgICAgIHJldHVybjsKIAogICAgIG1fcGFn
ZVpvb21GYWN0b3IgPSB6b29tRmFjdG9yOwotICAgIHByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6U2V0UGFnZVpvb21GYWN0b3IobV9wYWdlWm9vbUZhY3RvciksIG1fcGFnZUlEKTsg
CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRQYWdlWm9vbUZhY3Rv
cihtX3BhZ2Vab29tRmFjdG9yKSwgbV9wYWdlSUQpOyAKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6
OnNldFBhZ2VBbmRUZXh0Wm9vbUZhY3RvcnMoZG91YmxlIHBhZ2Vab29tRmFjdG9yLCBkb3VibGUg
dGV4dFpvb21GYWN0b3IpCkBAIC0xNDIwLDcgKzE0MjAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
c2V0UGFnZUFuZFRleHRab29tRmFjCiAKICAgICBtX3BhZ2Vab29tRmFjdG9yID0gcGFnZVpvb21G
YWN0b3I7CiAgICAgbV90ZXh0Wm9vbUZhY3RvciA9IHRleHRab29tRmFjdG9yOwotICAgIHByb2Nl
c3MoKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0UGFnZUFuZFRleHRab29tRmFjdG9ycyht
X3BhZ2Vab29tRmFjdG9yLCBtX3RleHRab29tRmFjdG9yKSwgbV9wYWdlSUQpOyAKKyAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFBhZ2VBbmRUZXh0Wm9vbUZhY3RvcnMo
bV9wYWdlWm9vbUZhY3RvciwgbV90ZXh0Wm9vbUZhY3RvciksIG1fcGFnZUlEKTsgCiB9CiAKIHZv
aWQgV2ViUGFnZVByb3h5OjpzY2FsZVBhZ2UoZG91YmxlIHNjYWxlLCBjb25zdCBJbnRQb2ludCYg
b3JpZ2luKQpAQCAtMTQyOCw3ICsxNDI4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNjYWxlUGFn
ZShkb3VibGUgc2NhbAogICAgIGlmICghaXNWYWxpZCgpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBwcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNjYWxlUGFnZShzY2FsZSwgb3Jp
Z2luKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
U2NhbGVQYWdlKHNjYWxlLCBvcmlnaW4pLCBtX3BhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVBy
b3h5OjpzZXRJbnRyaW5zaWNEZXZpY2VTY2FsZUZhY3RvcihmbG9hdCBzY2FsZUZhY3RvcikKQEAg
LTE0NDcsNyArMTQ0Nyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp3aW5kb3dTY3JlZW5EaWRDaGFu
Z2UKICAgICBpZiAoIWlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcHJvY2Vzcygp
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpXaW5kb3dTY3JlZW5EaWRDaGFuZ2UoZGlzcGxheUlE
KSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6V2lu
ZG93U2NyZWVuRGlkQ2hhbmdlKGRpc3BsYXlJRCksIG1fcGFnZUlEKTsKIH0KIAogZmxvYXQgV2Vi
UGFnZVByb3h5OjpkZXZpY2VTY2FsZUZhY3RvcigpIGNvbnN0CkBAIC0xNDg2LDcgKzE0ODYsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0VXNlRml4ZWRMYXlvdXQoYm9vCiAgICAgbV91c2VGaXhl
ZExheW91dCA9IGZpeGVkOwogICAgIGlmICghZml4ZWQpCiAgICAgICAgIG1fZml4ZWRMYXlvdXRT
aXplID0gSW50U2l6ZSgpOwotICAgIHByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
U2V0VXNlRml4ZWRMYXlvdXQoZml4ZWQpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRVc2VGaXhlZExheW91dChmaXhlZCksIG1fcGFnZUlEKTsK
IH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldEZpeGVkTGF5b3V0U2l6ZShjb25zdCBJbnRTaXpl
JiBzaXplKQpAQCAtMTQ5OCw3ICsxNDk4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldEZpeGVk
TGF5b3V0U2l6ZShjbwogICAgICAgICByZXR1cm47CiAKICAgICBtX2ZpeGVkTGF5b3V0U2l6ZSA9
IHNpemU7Ci0gICAgcHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRGaXhlZExh
eW91dFNpemUoc2l6ZSksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OlNldEZpeGVkTGF5b3V0U2l6ZShzaXplKSwgbV9wYWdlSUQpOwogfQogCiB2b2lk
IFdlYlBhZ2VQcm94eTo6c2V0UGFnaW5hdGlvbk1vZGUoV2ViQ29yZTo6UGFnZTo6UGFnaW5hdGlv
bjo6TW9kZSBtb2RlKQpAQCAtMTUxMCw3ICsxNTEwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNl
dFBhZ2luYXRpb25Nb2RlKFdlYgogCiAgICAgaWYgKCFpc1ZhbGlkKCkpCiAgICAgICAgIHJldHVy
bjsKLSAgICBwcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFBhZ2luYXRpb25N
b2RlKG1vZGUpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpTZXRQYWdpbmF0aW9uTW9kZShtb2RlKSwgbV9wYWdlSUQpOwogfQogCiB2b2lkIFdlYlBh
Z2VQcm94eTo6c2V0UGFnaW5hdGlvbkJlaGF2ZXNMaWtlQ29sdW1ucyhib29sIGJlaGF2ZXNMaWtl
Q29sdW1ucykKQEAgLTE1MjIsNyArMTUyMiw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRQYWdp
bmF0aW9uQmVoYXZlc0wKIAogICAgIGlmICghaXNWYWxpZCgpKQogICAgICAgICByZXR1cm47Ci0g
ICAgcHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRQYWdpbmF0aW9uQmVoYXZl
c0xpa2VDb2x1bW5zKGJlaGF2ZXNMaWtlQ29sdW1ucyksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFBhZ2luYXRpb25CZWhhdmVzTGlrZUNvbHVt
bnMoYmVoYXZlc0xpa2VDb2x1bW5zKSwgbV9wYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94
eTo6c2V0UGFnZUxlbmd0aChkb3VibGUgcGFnZUxlbmd0aCkKQEAgLTE1MzQsNyArMTUzNCw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpzZXRQYWdlTGVuZ3RoKGRvdWJsZSAKIAogICAgIGlmICghaXNW
YWxpZCgpKQogICAgICAgICByZXR1cm47Ci0gICAgcHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpTZXRQYWdlTGVuZ3RoKHBhZ2VMZW5ndGgpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRQYWdlTGVuZ3RoKHBhZ2VMZW5ndGgpLCBt
X3BhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRHYXBCZXR3ZWVuUGFnZXMoZG91
YmxlIGdhcCkKQEAgLTE1NDYsNyArMTU0Niw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRHYXBC
ZXR3ZWVuUGFnZXMoZG8KIAogICAgIGlmICghaXNWYWxpZCgpKQogICAgICAgICByZXR1cm47Ci0g
ICAgcHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRHYXBCZXR3ZWVuUGFnZXMo
Z2FwKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
U2V0R2FwQmV0d2VlblBhZ2VzKGdhcCksIG1fcGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJv
eHk6OnBhZ2VTY2FsZUZhY3RvckRpZENoYW5nZShkb3VibGUgc2NhbGVGYWN0b3IpCkBAIC0xNTYz
LDcgKzE1NjMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0TWVtb3J5Q2FjaGVDbGllbnRDCiAg
ICAgICAgIHJldHVybjsKIAogICAgIG1fYXJlTWVtb3J5Q2FjaGVDbGllbnRDYWxsc0VuYWJsZWQg
PSBtZW1vcnlDYWNoZUNsaWVudENhbGxzRW5hYmxlZDsKLSAgICBwcm9jZXNzKCktPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OlNldE1lbW9yeUNhY2hlTWVzc2FnZXNFbmFibGVkKG1lbW9yeUNhY2hl
Q2xpZW50Q2FsbHNFbmFibGVkKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6U2V0TWVtb3J5Q2FjaGVNZXNzYWdlc0VuYWJsZWQobWVtb3J5Q2FjaGVD
bGllbnRDYWxsc0VuYWJsZWQpLCBtX3BhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpm
aW5kU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBGaW5kT3B0aW9ucyBvcHRpb25zLCB1bnNp
Z25lZCBtYXhNYXRjaENvdW50KQpAQCAtMTU3MSwxMiArMTU3MSwxMiBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6ZmluZFN0cmluZyhjb25zdCBTdHJpCiAgICAgaWYgKG1fbWFpbkZyYW1lSGFzQ3VzdG9t
UmVwcmVzZW50YXRpb24pCiAgICAgICAgIG1fcGFnZUNsaWVudC0+ZmluZFN0cmluZ0luQ3VzdG9t
UmVwcmVzZW50YXRpb24oc3RyaW5nLCBvcHRpb25zLCBtYXhNYXRjaENvdW50KTsKICAgICBlbHNl
Ci0gICAgICAgIHByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RmluZFN0cmluZyhz
dHJpbmcsIG9wdGlvbnMsIG1heE1hdGNoQ291bnQpLCBtX3BhZ2VJRCk7CisgICAgICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RmluZFN0cmluZyhzdHJpbmcsIG9wdGlvbnMs
IG1heE1hdGNoQ291bnQpLCBtX3BhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpoaWRl
RmluZFVJKCkKIHsKLSAgICBwcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkhpZGVG
aW5kVUkoKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6SGlkZUZpbmRVSSgpLCBtX3BhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpjb3Vu
dFN0cmluZ01hdGNoZXMoY29uc3QgU3RyaW5nJiBzdHJpbmcsIEZpbmRPcHRpb25zIG9wdGlvbnMs
IHVuc2lnbmVkIG1heE1hdGNoQ291bnQpCkBAIC0xNTg5LDcgKzE1ODksNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6Y291bnRTdHJpbmdNYXRjaGVzKGNvCiAgICAgaWYgKCFpc1ZhbGlkKCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIHByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q291
bnRTdHJpbmdNYXRjaGVzKHN0cmluZywgb3B0aW9ucywgbWF4TWF0Y2hDb3VudCksIG1fcGFnZUlE
KTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNvdW50U3RyaW5nTWF0
Y2hlcyhzdHJpbmcsIG9wdGlvbnMsIG1heE1hdGNoQ291bnQpLCBtX3BhZ2VJRCk7CiB9CiAKIHZv
aWQgV2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoY29uc3QgU3RyaW5nJiBz
Y3JpcHQsIFBhc3NSZWZQdHI8U2NyaXB0VmFsdWVDYWxsYmFjaz4gcHJwQ2FsbGJhY2spCkBAIC0x
NjAyLDcgKzE2MDIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEluTWFpbkZy
CiAKICAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKTsKICAg
ICBtX3NjcmlwdFZhbHVlQ2FsbGJhY2tzLnNldChjYWxsYmFja0lELCBjYWxsYmFjay5nZXQoKSk7
Ci0gICAgcHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSdW5KYXZhU2NyaXB0SW5N
YWluRnJhbWUoc2NyaXB0LCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKHNjcmlwdCwg
Y2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmdldFJlbmRl
clRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uKFBhc3NSZWZQdHI8U3RyaW5nQ2FsbGJhY2s+IHBy
cENhbGxiYWNrKQpAQCAtMTYxNSw3ICsxNjE1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldFJl
bmRlclRyZWVFeHRlcm5hbAogICAgIAogICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBjYWxsYmFj
ay0+Y2FsbGJhY2tJRCgpOwogICAgIG1fc3RyaW5nQ2FsbGJhY2tzLnNldChjYWxsYmFja0lELCBj
YWxsYmFjay5nZXQoKSk7Ci0gICAgcHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpH
ZXRSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbihjYWxsYmFja0lEKSwgbV9wYWdlSUQp
OworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0UmVuZGVyVHJlZUV4
dGVybmFsUmVwcmVzZW50YXRpb24oY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKIH0KIAogdm9pZCBX
ZWJQYWdlUHJveHk6OmdldFNvdXJjZUZvckZyYW1lKFdlYkZyYW1lUHJveHkqIGZyYW1lLCBQYXNz
UmVmUHRyPFN0cmluZ0NhbGxiYWNrPiBwcnBDYWxsYmFjaykKQEAgLTE2MjksNyArMTYyOSw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpnZXRTb3VyY2VGb3JGcmFtZShXZWIKICAgICB1aW50NjRfdCBj
YWxsYmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKTsKICAgICBtX2xvYWREZXBlbmRlbnRT
dHJpbmdDYWxsYmFja0lEcy5hZGQoY2FsbGJhY2tJRCk7CiAgICAgbV9zdHJpbmdDYWxsYmFja3Mu
c2V0KGNhbGxiYWNrSUQsIGNhbGxiYWNrLmdldCgpKTsKLSAgICBwcm9jZXNzKCktPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OkdldFNvdXJjZUZvckZyYW1lKGZyYW1lLT5mcmFtZUlEKCksIGNhbGxi
YWNrSUQpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpHZXRTb3VyY2VGb3JGcmFtZShmcmFtZS0+ZnJhbWVJRCgpLCBjYWxsYmFja0lEKSwgbV9wYWdl
SUQpOwogfQogCiAjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQpAQCAtMTYzOCw3ICsxNjM4LDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmRlbGl2ZXJJbnRlbnRUb0ZyYW1lKAogICAgIGlmICghaXNWYWxp
ZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBwcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OkRlbGl2ZXJJbnRlbnRUb0ZyYW1lKGZyYW1lLT5mcmFtZUlEKCksIHdlYkludGVudERh
dGEtPnN0b3JlKCkpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpEZWxpdmVySW50ZW50VG9GcmFtZShmcmFtZS0+ZnJhbWVJRCgpLCB3ZWJJbnRlbnRE
YXRhLT5zdG9yZSgpKSwgbV9wYWdlSUQpOwogfQogI2VuZGlmCiAKQEAgLTE2NTMsNyArMTY1Myw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRDb250ZW50c0FzU3RyaW5nKFAKICAgICB1aW50NjRf
dCBjYWxsYmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKTsKICAgICBtX2xvYWREZXBlbmRl
bnRTdHJpbmdDYWxsYmFja0lEcy5hZGQoY2FsbGJhY2tJRCk7CiAgICAgbV9zdHJpbmdDYWxsYmFj
a3Muc2V0KGNhbGxiYWNrSUQsIGNhbGxiYWNrLmdldCgpKTsKLSAgICBwcm9jZXNzKCktPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OkdldENvbnRlbnRzQXNTdHJpbmcoY2FsbGJhY2tJRCksIG1fcGFn
ZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldENvbnRlbnRz
QXNTdHJpbmcoY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKIH0KIAogI2lmIEVOQUJMRShNSFRNTCkK
QEAgLTE2NjcsNyArMTY2Nyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRDb250ZW50c0FzTUhU
TUxEYXQKIAogICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgp
OwogICAgIG1fZGF0YUNhbGxiYWNrcy5zZXQoY2FsbGJhY2tJRCwgY2FsbGJhY2suZ2V0KCkpOwot
ICAgIHByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0Q29udGVudHNBc01IVE1M
RGF0YShjYWxsYmFja0lELCB1c2VCaW5hcnlFbmNvZGluZyksIG1fcGFnZUlEKTsKKyAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldENvbnRlbnRzQXNNSFRNTERhdGEoY2Fs
bGJhY2tJRCwgdXNlQmluYXJ5RW5jb2RpbmcpLCBtX3BhZ2VJRCk7CiB9CiAjZW5kaWYKIApAQCAt
MTY4MSw3ICsxNjgxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldFNlbGVjdGlvbk9yQ29udGVu
dAogICAgIAogICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgp
OwogICAgIG1fc3RyaW5nQ2FsbGJhY2tzLnNldChjYWxsYmFja0lELCBjYWxsYmFjay5nZXQoKSk7
Ci0gICAgcHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRTZWxlY3Rpb25PckNv
bnRlbnRzQXNTdHJpbmcoY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFNlbGVjdGlvbk9yQ29udGVudHNBc1N0cmluZyhjYWxs
YmFja0lEKSwgbV9wYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0TWFpblJlc291
cmNlRGF0YU9mRnJhbWUoV2ViRnJhbWVQcm94eSogZnJhbWUsIFBhc3NSZWZQdHI8RGF0YUNhbGxi
YWNrPiBwcnBDYWxsYmFjaykKQEAgLTE2OTQsNyArMTY5NCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpnZXRNYWluUmVzb3VyY2VEYXRhT2YKICAgICAKICAgICB1aW50NjRfdCBjYWxsYmFja0lEID0g
Y2FsbGJhY2stPmNhbGxiYWNrSUQoKTsKICAgICBtX2RhdGFDYWxsYmFja3Muc2V0KGNhbGxiYWNr
SUQsIGNhbGxiYWNrLmdldCgpKTsKLSAgICBwcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OkdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1lKGZyYW1lLT5mcmFtZUlEKCksIGNhbGxiYWNr
SUQpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpH
ZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFtZShmcmFtZS0+ZnJhbWVJRCgpLCBjYWxsYmFja0lEKSwg
bV9wYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0UmVzb3VyY2VEYXRhRnJvbUZy
YW1lKFdlYkZyYW1lUHJveHkqIGZyYW1lLCBXZWJVUkwqIHJlc291cmNlVVJMLCBQYXNzUmVmUHRy
PERhdGFDYWxsYmFjaz4gcHJwQ2FsbGJhY2spCkBAIC0xNzA3LDcgKzE3MDcsNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6Z2V0UmVzb3VyY2VEYXRhRnJvbUZyCiAgICAgCiAgICAgdWludDY0X3QgY2Fs
bGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7CiAgICAgbV9kYXRhQ2FsbGJhY2tzLnNl
dChjYWxsYmFja0lELCBjYWxsYmFjay5nZXQoKSk7Ci0gICAgcHJvY2VzcygpLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpHZXRSZXNvdXJjZURhdGFGcm9tRnJhbWUoZnJhbWUtPmZyYW1lSUQoKSwg
cmVzb3VyY2VVUkwtPnN0cmluZygpLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOworICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0UmVzb3VyY2VEYXRhRnJvbUZyYW1lKGZy
YW1lLT5mcmFtZUlEKCksIHJlc291cmNlVVJMLT5zdHJpbmcoKSwgY2FsbGJhY2tJRCksIG1fcGFn
ZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmdldFdlYkFyY2hpdmVPZkZyYW1lKFdlYkZy
YW1lUHJveHkqIGZyYW1lLCBQYXNzUmVmUHRyPERhdGFDYWxsYmFjaz4gcHJwQ2FsbGJhY2spCkBA
IC0xNzIwLDcgKzE3MjAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0V2ViQXJjaGl2ZU9mRnJh
bWUoCiAgICAgCiAgICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lE
KCk7CiAgICAgbV9kYXRhQ2FsbGJhY2tzLnNldChjYWxsYmFja0lELCBjYWxsYmFjay5nZXQoKSk7
Ci0gICAgcHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRXZWJBcmNoaXZlT2ZG
cmFtZShmcmFtZS0+ZnJhbWVJRCgpLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOworICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0V2ViQXJjaGl2ZU9mRnJhbWUoZnJhbWUt
PmZyYW1lSUQoKSwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJv
eHk6OmZvcmNlUmVwYWludChQYXNzUmVmUHRyPFZvaWRDYWxsYmFjaz4gcHJwQ2FsbGJhY2spCkBA
IC0xNzM0LDcgKzE3MzQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Zm9yY2VSZXBhaW50KFBhc3NS
ZWZQCiAgICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7CiAg
ICAgbV92b2lkQ2FsbGJhY2tzLnNldChjYWxsYmFja0lELCBjYWxsYmFjay5nZXQoKSk7CiAgICAg
bV9kcmF3aW5nQXJlYS0+d2FpdEZvckJhY2tpbmdTdG9yZVVwZGF0ZU9uTmV4dFBhaW50KCk7Ci0g
ICAgcHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpGb3JjZVJlcGFpbnQoY2FsbGJh
Y2tJRCksIG1fcGFnZUlEKTsgCisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpGb3JjZVJlcGFpbnQoY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsgCiB9CiAKIHZvaWQgV2ViUGFn
ZVByb3h5OjpwcmVmZXJlbmNlc0RpZENoYW5nZSgpCkBAIC0xNzUyLDcgKzE3NTIsNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6cHJlZmVyZW5jZXNEaWRDaGFuZ2UoCiAgICAgLy8gZXZlbiBpZiBub3Ro
aW5nIGNoYW5nZWQgaW4gVUkgcHJvY2Vzcywgc28gdGhhdCBvdmVycmlkZXMgZ2V0IHJlbW92ZWQu
CiAKICAgICAvLyBQcmVmZXJlbmNlcyBuZWVkIHRvIGJlIHVwZGF0ZWQgZHVyaW5nIHN5bmNocm9u
b3VzIHByaW50aW5nIHRvIG1ha2UgInByaW50IGJhY2tncm91bmRzIiBwcmVmZXJlbmNlIHdvcmsg
d2hlbiB0b2dnbGVkIGZyb20gYSBwcmludCBkaWFsb2cgY2hlY2tib3guCi0gICAgcHJvY2Vzcygp
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpQcmVmZXJlbmNlc0RpZENoYW5nZShwYWdlR3JvdXAo
KS0+cHJlZmVyZW5jZXMoKS0+c3RvcmUoKSksIG1fcGFnZUlELCBtX2lzUGVyZm9ybWluZ0RPTVBy
aW50T3BlcmF0aW9uID8gQ29yZUlQQzo6RGlzcGF0Y2hNZXNzYWdlRXZlbldoZW5XYWl0aW5nRm9y
U3luY1JlcGx5IDogMCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpQ
cmVmZXJlbmNlc0RpZENoYW5nZShwYWdlR3JvdXAoKS0+cHJlZmVyZW5jZXMoKS0+c3RvcmUoKSks
IG1fcGFnZUlELCBtX2lzUGVyZm9ybWluZ0RPTVByaW50T3BlcmF0aW9uID8gQ29yZUlQQzo6RGlz
cGF0Y2hNZXNzYWdlRXZlbldoZW5XYWl0aW5nRm9yU3luY1JlcGx5IDogMCk7CiB9CiAKIHZvaWQg
V2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiBjb25u
ZWN0aW9uLCBDb3JlSVBDOjpNZXNzYWdlSUQgbWVzc2FnZUlELCBDb3JlSVBDOjpBcmd1bWVudERl
Y29kZXIqIGFyZ3VtZW50cykKQEAgLTE4MTEsMjggKzE4MTEsMjggQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OmRpZFJlY2VpdmVTeW5jTWVzc2FnZQogdm9pZCBXZWJQYWdlUHJveHk6OmRpZENyZWF0ZU1h
aW5GcmFtZSh1aW50NjRfdCBmcmFtZUlEKQogewogICAgIE1FU1NBR0VfQ0hFQ0soIW1fbWFpbkZy
YW1lKTsKLSAgICBNRVNTQUdFX0NIRUNLKHByb2Nlc3MoKS0+Y2FuQ3JlYXRlRnJhbWUoZnJhbWVJ
RCkpOworICAgIE1FU1NBR0VfQ0hFQ0sobV9wcm9jZXNzLT5jYW5DcmVhdGVGcmFtZShmcmFtZUlE
KSk7CiAKICAgICBtX21haW5GcmFtZSA9IFdlYkZyYW1lUHJveHk6OmNyZWF0ZSh0aGlzLCBmcmFt
ZUlEKTsKIAogICAgIC8vIEFkZCB0aGUgZnJhbWUgdG8gdGhlIHByb2Nlc3Mgd2lkZSBtYXAuCi0g
ICAgcHJvY2VzcygpLT5mcmFtZUNyZWF0ZWQoZnJhbWVJRCwgbV9tYWluRnJhbWUuZ2V0KCkpOwor
ICAgIG1fcHJvY2Vzcy0+ZnJhbWVDcmVhdGVkKGZyYW1lSUQsIG1fbWFpbkZyYW1lLmdldCgpKTsK
IH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZENyZWF0ZVN1YmZyYW1lKHVpbnQ2NF90IGZyYW1l
SUQsIHVpbnQ2NF90IHBhcmVudEZyYW1lSUQpCiB7CiAgICAgTUVTU0FHRV9DSEVDSyhtX21haW5G
cmFtZSk7CiAKLSAgICBXZWJGcmFtZVByb3h5KiBwYXJlbnRGcmFtZSA9IHByb2Nlc3MoKS0+d2Vi
RnJhbWUocGFyZW50RnJhbWVJRCk7CisgICAgV2ViRnJhbWVQcm94eSogcGFyZW50RnJhbWUgPSBt
X3Byb2Nlc3MtPndlYkZyYW1lKHBhcmVudEZyYW1lSUQpOwogICAgIE1FU1NBR0VfQ0hFQ0socGFy
ZW50RnJhbWUpOwogICAgIE1FU1NBR0VfQ0hFQ0socGFyZW50RnJhbWUtPmlzRGVzY2VuZGFudE9m
KG1fbWFpbkZyYW1lLmdldCgpKSk7CiAKLSAgICBNRVNTQUdFX0NIRUNLKHByb2Nlc3MoKS0+Y2Fu
Q3JlYXRlRnJhbWUoZnJhbWVJRCkpOworICAgIE1FU1NBR0VfQ0hFQ0sobV9wcm9jZXNzLT5jYW5D
cmVhdGVGcmFtZShmcmFtZUlEKSk7CiAgICAgCiAgICAgUmVmUHRyPFdlYkZyYW1lUHJveHk+IHN1
YkZyYW1lID0gV2ViRnJhbWVQcm94eTo6Y3JlYXRlKHRoaXMsIGZyYW1lSUQpOwogCiAgICAgLy8g
QWRkIHRoZSBmcmFtZSB0byB0aGUgcHJvY2VzcyB3aWRlIG1hcC4KLSAgICBwcm9jZXNzKCktPmZy
YW1lQ3JlYXRlZChmcmFtZUlELCBzdWJGcmFtZS5nZXQoKSk7CisgICAgbV9wcm9jZXNzLT5mcmFt
ZUNyZWF0ZWQoZnJhbWVJRCwgc3ViRnJhbWUuZ2V0KCkpOwogCiAgICAgLy8gSW5zZXJ0IHRoZSBm
cmFtZSBpbnRvIHRoZSBmcmFtZSBoaWVyYXJjaHkuCiAgICAgcGFyZW50RnJhbWUtPmFwcGVuZENo
aWxkKHN1YkZyYW1lLmdldCgpKTsKQEAgLTE4NDcsNyArMTg0Nyw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpkaWRTYXZlRnJhbWVUb1BhZ2VDYWMKIHsKICAgICBNRVNTQUdFX0NIRUNLKG1fbWFpbkZy
YW1lKTsKIAotICAgIFdlYkZyYW1lUHJveHkqIHN1YmZyYW1lID0gcHJvY2VzcygpLT53ZWJGcmFt
ZShmcmFtZUlEKTsKKyAgICBXZWJGcmFtZVByb3h5KiBzdWJmcmFtZSA9IG1fcHJvY2Vzcy0+d2Vi
RnJhbWUoZnJhbWVJRCk7CiAgICAgTUVTU0FHRV9DSEVDSyhzdWJmcmFtZSk7CiAKICAgICBpZiAo
aXNEaXNjb25uZWN0ZWRGcmFtZShzdWJmcmFtZSkpCkBAIC0xODYyLDEyICsxODYyLDEyIEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpkaWRSZXN0b3JlRnJhbWVGcm9tUGEKIHsKICAgICBNRVNTQUdFX0NI
RUNLKG1fbWFpbkZyYW1lKTsKIAotICAgIFdlYkZyYW1lUHJveHkqIHN1YmZyYW1lID0gcHJvY2Vz
cygpLT53ZWJGcmFtZShmcmFtZUlEKTsKKyAgICBXZWJGcmFtZVByb3h5KiBzdWJmcmFtZSA9IG1f
cHJvY2Vzcy0+d2ViRnJhbWUoZnJhbWVJRCk7CiAgICAgTUVTU0FHRV9DSEVDSyhzdWJmcmFtZSk7
CiAgICAgTUVTU0FHRV9DSEVDSyghc3ViZnJhbWUtPnBhcmVudEZyYW1lKCkpOwogICAgIE1FU1NB
R0VfQ0hFQ0soc3ViZnJhbWUtPnBhZ2UoKSA9PSBtX21haW5GcmFtZS0+cGFnZSgpKTsKIAotICAg
IFdlYkZyYW1lUHJveHkqIHBhcmVudEZyYW1lID0gcHJvY2VzcygpLT53ZWJGcmFtZShwYXJlbnRG
cmFtZUlEKTsKKyAgICBXZWJGcmFtZVByb3h5KiBwYXJlbnRGcmFtZSA9IG1fcHJvY2Vzcy0+d2Vi
RnJhbWUocGFyZW50RnJhbWVJRCk7CiAgICAgTUVTU0FHRV9DSEVDSyhwYXJlbnRGcmFtZSk7CiAg
ICAgTUVTU0FHRV9DSEVDSyhwYXJlbnRGcmFtZS0+aXNEZXNjZW5kYW50T2YobV9tYWluRnJhbWUu
Z2V0KCkpKTsKIApAQCAtMTkxNyw3ICsxOTE3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlZ2lz
dGVySW50ZW50U2VydmljZQogICAgIGlmICghYXJndW1lbnRzLT5kZWNvZGUobWVzc2FnZURlY29k
ZXIpKQogICAgICAgICByZXR1cm47CiAKLSAgICBXZWJGcmFtZVByb3h5KiBmcmFtZSA9IHByb2Nl
c3MoKS0+d2ViRnJhbWUoZnJhbWVJRCk7CisgICAgV2ViRnJhbWVQcm94eSogZnJhbWUgPSBtX3By
b2Nlc3MtPndlYkZyYW1lKGZyYW1lSUQpOwogICAgIE1FU1NBR0VfQ0hFQ0soZnJhbWUpOwogCiAg
ICAgUmVmUHRyPFdlYkludGVudFNlcnZpY2VJbmZvPiB3ZWJJbnRlbnRTZXJ2aWNlSW5mbyA9IFdl
YkludGVudFNlcnZpY2VJbmZvOjpjcmVhdGUoc2VydmljZUluZm8pOwpAQCAtMTkzNCw3ICsxOTM0
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMbwogICAgIGlmICgh
YXJndW1lbnRzLT5kZWNvZGUobWVzc2FnZURlY29kZXIpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBXZWJGcmFtZVByb3h5KiBmcmFtZSA9IHByb2Nlc3MoKS0+d2ViRnJhbWUoZnJhbWVJRCk7Cisg
ICAgV2ViRnJhbWVQcm94eSogZnJhbWUgPSBtX3Byb2Nlc3MtPndlYkZyYW1lKGZyYW1lSUQpOwog
ICAgIE1FU1NBR0VfQ0hFQ0soZnJhbWUpOwogICAgIE1FU1NBR0VfQ0hFQ0tfVVJMKHVybCk7CiAK
QEAgLTE5NTEsNyArMTk1MSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlU2VydmVy
UmVkaXIKICAgICBpZiAoIWFyZ3VtZW50cy0+ZGVjb2RlKG1lc3NhZ2VEZWNvZGVyKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgV2ViRnJhbWVQcm94eSogZnJhbWUgPSBwcm9jZXNzKCktPndlYkZy
YW1lKGZyYW1lSUQpOworICAgIFdlYkZyYW1lUHJveHkqIGZyYW1lID0gbV9wcm9jZXNzLT53ZWJG
cmFtZShmcmFtZUlEKTsKICAgICBNRVNTQUdFX0NIRUNLKGZyYW1lKTsKICAgICBNRVNTQUdFX0NI
RUNLX1VSTCh1cmwpOwogCkBAIC0xOTY3LDcgKzE5NjcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
ZGlkRmFpbFByb3Zpc2lvbmFsTG9hCiAgICAgaWYgKCFhcmd1bWVudHMtPmRlY29kZShtZXNzYWdl
RGVjb2RlcikpCiAgICAgICAgIHJldHVybjsKIAotICAgIFdlYkZyYW1lUHJveHkqIGZyYW1lID0g
cHJvY2VzcygpLT53ZWJGcmFtZShmcmFtZUlEKTsKKyAgICBXZWJGcmFtZVByb3h5KiBmcmFtZSA9
IG1fcHJvY2Vzcy0+d2ViRnJhbWUoZnJhbWVJRCk7CiAgICAgTUVTU0FHRV9DSEVDSyhmcmFtZSk7
CiAKICAgICBmcmFtZS0+ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZCgpOwpAQCAtMTk5NSw3ICsxOTk1
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZENvbW1pdExvYWRGb3JGcmFtZQogICAgIGlmICgh
YXJndW1lbnRzLT5kZWNvZGUobWVzc2FnZURlY29kZXIpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBXZWJGcmFtZVByb3h5KiBmcmFtZSA9IHByb2Nlc3MoKS0+d2ViRnJhbWUoZnJhbWVJRCk7Cisg
ICAgV2ViRnJhbWVQcm94eSogZnJhbWUgPSBtX3Byb2Nlc3MtPndlYkZyYW1lKGZyYW1lSUQpOwog
ICAgIE1FU1NBR0VfQ0hFQ0soZnJhbWUpOwogCiAjaWYgUExBVEZPUk0oTUFDKQpAQCAtMjAzNSw3
ICsyMDM1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZpbmlzaERvY3VtZW50TG9hZAogICAg
IGlmICghYXJndW1lbnRzLT5kZWNvZGUobWVzc2FnZURlY29kZXIpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBXZWJGcmFtZVByb3h5KiBmcmFtZSA9IHByb2Nlc3MoKS0+d2ViRnJhbWUoZnJhbWVJ
RCk7CisgICAgV2ViRnJhbWVQcm94eSogZnJhbWUgPSBtX3Byb2Nlc3MtPndlYkZyYW1lKGZyYW1l
SUQpOwogICAgIE1FU1NBR0VfQ0hFQ0soZnJhbWUpOwogCiAgICAgbV9sb2FkZXJDbGllbnQuZGlk
RmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUodGhpcywgZnJhbWUsIHVzZXJEYXRhLmdldCgpKTsK
QEAgLTIwNDgsNyArMjA0OCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGaW5pc2hMb2FkRm9y
RnJhbWUKICAgICBpZiAoIWFyZ3VtZW50cy0+ZGVjb2RlKG1lc3NhZ2VEZWNvZGVyKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgV2ViRnJhbWVQcm94eSogZnJhbWUgPSBwcm9jZXNzKCktPndlYkZy
YW1lKGZyYW1lSUQpOworICAgIFdlYkZyYW1lUHJveHkqIGZyYW1lID0gbV9wcm9jZXNzLT53ZWJG
cmFtZShmcmFtZUlEKTsKICAgICBNRVNTQUdFX0NIRUNLKGZyYW1lKTsKIAogICAgIGZyYW1lLT5k
aWRGaW5pc2hMb2FkKCk7CkBAIC0yMDYzLDcgKzIwNjMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
ZGlkRmFpbExvYWRGb3JGcmFtZSh1CiAgICAgaWYgKCFhcmd1bWVudHMtPmRlY29kZShtZXNzYWdl
RGVjb2RlcikpCiAgICAgICAgIHJldHVybjsKIAotICAgIFdlYkZyYW1lUHJveHkqIGZyYW1lID0g
cHJvY2VzcygpLT53ZWJGcmFtZShmcmFtZUlEKTsKKyAgICBXZWJGcmFtZVByb3h5KiBmcmFtZSA9
IG1fcHJvY2Vzcy0+d2ViRnJhbWUoZnJhbWVJRCk7CiAgICAgTUVTU0FHRV9DSEVDSyhmcmFtZSk7
CiAKICAgICBjbGVhckxvYWREZXBlbmRlbnRDYWxsYmFja3MoKTsKQEAgLTIwODAsNyArMjA4MCw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRTYW1lRG9jdW1lbnROYXZpZ2EKICAgICBpZiAoIWFy
Z3VtZW50cy0+ZGVjb2RlKG1lc3NhZ2VEZWNvZGVyKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
V2ViRnJhbWVQcm94eSogZnJhbWUgPSBwcm9jZXNzKCktPndlYkZyYW1lKGZyYW1lSUQpOworICAg
IFdlYkZyYW1lUHJveHkqIGZyYW1lID0gbV9wcm9jZXNzLT53ZWJGcmFtZShmcmFtZUlEKTsKICAg
ICBNRVNTQUdFX0NIRUNLKGZyYW1lKTsKICAgICBNRVNTQUdFX0NIRUNLX1VSTCh1cmwpOwogCkBA
IC0yMDk3LDcgKzIwOTcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZVRpdGxlRm9y
RnJhCiAgICAgaWYgKCFhcmd1bWVudHMtPmRlY29kZShtZXNzYWdlRGVjb2RlcikpCiAgICAgICAg
IHJldHVybjsKIAotICAgIFdlYkZyYW1lUHJveHkqIGZyYW1lID0gcHJvY2VzcygpLT53ZWJGcmFt
ZShmcmFtZUlEKTsKKyAgICBXZWJGcmFtZVByb3h5KiBmcmFtZSA9IG1fcHJvY2Vzcy0+d2ViRnJh
bWUoZnJhbWVJRCk7CiAgICAgTUVTU0FHRV9DSEVDSyhmcmFtZSk7CiAKICAgICBmcmFtZS0+ZGlk
Q2hhbmdlVGl0bGUodGl0bGUpOwpAQCAtMjExMiw3ICsyMTEyLDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OmRpZEZpcnN0TGF5b3V0Rm9yRnJhbQogICAgIGlmICghYXJndW1lbnRzLT5kZWNvZGUobWVz
c2FnZURlY29kZXIpKQogICAgICAgICByZXR1cm47CiAKLSAgICBXZWJGcmFtZVByb3h5KiBmcmFt
ZSA9IHByb2Nlc3MoKS0+d2ViRnJhbWUoZnJhbWVJRCk7CisgICAgV2ViRnJhbWVQcm94eSogZnJh
bWUgPSBtX3Byb2Nlc3MtPndlYkZyYW1lKGZyYW1lSUQpOwogICAgIE1FU1NBR0VfQ0hFQ0soZnJh
bWUpOwogCiAgICAgbV9sb2FkZXJDbGllbnQuZGlkRmlyc3RMYXlvdXRGb3JGcmFtZSh0aGlzLCBm
cmFtZSwgdXNlckRhdGEuZ2V0KCkpOwpAQCAtMjEyNSw3ICsyMTI1LDcgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmRpZEZpcnN0VmlzdWFsbHlOb25FbQogICAgIGlmICghYXJndW1lbnRzLT5kZWNvZGUo
bWVzc2FnZURlY29kZXIpKQogICAgICAgICByZXR1cm47CiAKLSAgICBXZWJGcmFtZVByb3h5KiBm
cmFtZSA9IHByb2Nlc3MoKS0+d2ViRnJhbWUoZnJhbWVJRCk7CisgICAgV2ViRnJhbWVQcm94eSog
ZnJhbWUgPSBtX3Byb2Nlc3MtPndlYkZyYW1lKGZyYW1lSUQpOwogICAgIE1FU1NBR0VfQ0hFQ0so
ZnJhbWUpOwogCiAgICAgbV9sb2FkZXJDbGllbnQuZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5
b3V0Rm9yRnJhbWUodGhpcywgZnJhbWUsIHVzZXJEYXRhLmdldCgpKTsKQEAgLTIxNDgsNyArMjE0
OCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRSZW1vdmVGcmFtZUZyb21IaWUKICAgICBpZiAo
IWFyZ3VtZW50cy0+ZGVjb2RlKG1lc3NhZ2VEZWNvZGVyKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgV2ViRnJhbWVQcm94eSogZnJhbWUgPSBwcm9jZXNzKCktPndlYkZyYW1lKGZyYW1lSUQpOwor
ICAgIFdlYkZyYW1lUHJveHkqIGZyYW1lID0gbV9wcm9jZXNzLT53ZWJGcmFtZShmcmFtZUlEKTsK
ICAgICBNRVNTQUdFX0NIRUNLKGZyYW1lKTsKIAogICAgIGZyYW1lLT5kaWRSZW1vdmVGcm9tSGll
cmFyY2h5KCk7CkBAIC0yMTYzLDcgKzIxNjMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRGlz
cGxheUluc2VjdXJlQ29uCiAgICAgaWYgKCFhcmd1bWVudHMtPmRlY29kZShtZXNzYWdlRGVjb2Rl
cikpCiAgICAgICAgIHJldHVybjsKIAotICAgIFdlYkZyYW1lUHJveHkqIGZyYW1lID0gcHJvY2Vz
cygpLT53ZWJGcmFtZShmcmFtZUlEKTsKKyAgICBXZWJGcmFtZVByb3h5KiBmcmFtZSA9IG1fcHJv
Y2Vzcy0+d2ViRnJhbWUoZnJhbWVJRCk7CiAgICAgTUVTU0FHRV9DSEVDSyhmcmFtZSk7CiAKICAg
ICBtX2xvYWRlckNsaWVudC5kaWREaXNwbGF5SW5zZWN1cmVDb250ZW50Rm9yRnJhbWUodGhpcywg
ZnJhbWUsIHVzZXJEYXRhLmdldCgpKTsKQEAgLTIxNzYsNyArMjE3Niw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpkaWRSdW5JbnNlY3VyZUNvbnRlbnQKICAgICBpZiAoIWFyZ3VtZW50cy0+ZGVjb2Rl
KG1lc3NhZ2VEZWNvZGVyKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgV2ViRnJhbWVQcm94eSog
ZnJhbWUgPSBwcm9jZXNzKCktPndlYkZyYW1lKGZyYW1lSUQpOworICAgIFdlYkZyYW1lUHJveHkq
IGZyYW1lID0gbV9wcm9jZXNzLT53ZWJGcmFtZShmcmFtZUlEKTsKICAgICBNRVNTQUdFX0NIRUNL
KGZyYW1lKTsKIAogICAgIG1fbG9hZGVyQ2xpZW50LmRpZFJ1bkluc2VjdXJlQ29udGVudEZvckZy
YW1lKHRoaXMsIGZyYW1lLCB1c2VyRGF0YS5nZXQoKSk7CkBAIC0yMTg5LDcgKzIxODksNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRGV0ZWN0WFNTRm9yRnJhbWUoCiAgICAgaWYgKCFhcmd1bWVu
dHMtPmRlY29kZShtZXNzYWdlRGVjb2RlcikpCiAgICAgICAgIHJldHVybjsKIAotICAgIFdlYkZy
YW1lUHJveHkqIGZyYW1lID0gcHJvY2VzcygpLT53ZWJGcmFtZShmcmFtZUlEKTsKKyAgICBXZWJG
cmFtZVByb3h5KiBmcmFtZSA9IG1fcHJvY2Vzcy0+d2ViRnJhbWUoZnJhbWVJRCk7CiAgICAgTUVT
U0FHRV9DSEVDSyhmcmFtZSk7CiAKICAgICBtX2xvYWRlckNsaWVudC5kaWREZXRlY3RYU1NGb3JG
cmFtZSh0aGlzLCBmcmFtZSwgdXNlckRhdGEuZ2V0KCkpOwpAQCAtMjIwMywxNyArMjIwMywxNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZUludGVudEZvckZyCiAgICAgaWYgKCFhcmd1
bWVudHMtPmRlY29kZShtZXNzYWdlRGVjb2RlcikpCiAgICAgICAgIHJldHVybjsKIAotICAgIFdl
YkZyYW1lUHJveHkqIGZyYW1lID0gcHJvY2VzcygpLT53ZWJGcmFtZShmcmFtZUlEKTsKKyAgICBX
ZWJGcmFtZVByb3h5KiBmcmFtZSA9IG1fcHJvY2Vzcy0+d2ViRnJhbWUoZnJhbWVJRCk7CiAgICAg
TUVTU0FHRV9DSEVDSyhmcmFtZSk7CiAKLSAgICBSZWZQdHI8V2ViSW50ZW50RGF0YT4gd2ViSW50
ZW50RGF0YSA9IFdlYkludGVudERhdGE6OmNyZWF0ZShpbnRlbnREYXRhLCBwcm9jZXNzKCkpOwor
ICAgIFJlZlB0cjxXZWJJbnRlbnREYXRhPiB3ZWJJbnRlbnREYXRhID0gV2ViSW50ZW50RGF0YTo6
Y3JlYXRlKGludGVudERhdGEsIG1fcHJvY2Vzcyk7CiAgICAgbV9sb2FkZXJDbGllbnQuZGlkUmVj
ZWl2ZUludGVudEZvckZyYW1lKHRoaXMsIGZyYW1lLCB3ZWJJbnRlbnREYXRhLmdldCgpLCB1c2Vy
RGF0YS5nZXQoKSk7CiB9CiAjZW5kaWYKIAogdm9pZCBXZWJQYWdlUHJveHk6OmZyYW1lRGlkQmVj
b21lRnJhbWVTZXQodWludDY0X3QgZnJhbWVJRCwgYm9vbCB2YWx1ZSkKIHsKLSAgICBXZWJGcmFt
ZVByb3h5KiBmcmFtZSA9IHByb2Nlc3MoKS0+d2ViRnJhbWUoZnJhbWVJRCk7CisgICAgV2ViRnJh
bWVQcm94eSogZnJhbWUgPSBtX3Byb2Nlc3MtPndlYkZyYW1lKGZyYW1lSUQpOwogICAgIE1FU1NB
R0VfQ0hFQ0soZnJhbWUpOwogCiAgICAgZnJhbWUtPnNldElzRnJhbWVTZXQodmFsdWUpOwpAQCAt
MjIzMiw3ICsyMjMyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmln
YQogICAgIGlmIChyZXF1ZXN0LnVybCgpICE9IHBlbmRpbmdBUElSZXF1ZXN0VVJMKCkpCiAgICAg
ICAgIGNsZWFyUGVuZGluZ0FQSVJlcXVlc3RVUkwoKTsKIAotICAgIFdlYkZyYW1lUHJveHkqIGZy
YW1lID0gcHJvY2VzcygpLT53ZWJGcmFtZShmcmFtZUlEKTsKKyAgICBXZWJGcmFtZVByb3h5KiBm
cmFtZSA9IG1fcHJvY2Vzcy0+d2ViRnJhbWUoZnJhbWVJRCk7CiAgICAgTUVTU0FHRV9DSEVDSyhm
cmFtZSk7CiAgICAgTUVTU0FHRV9DSEVDS19VUkwocmVxdWVzdC51cmwoKSk7CiAKQEAgLTIyNjcs
NyArMjI2Nyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOZXdXaW4KICAg
ICBpZiAoIWFyZ3VtZW50cy0+ZGVjb2RlKG1lc3NhZ2VEZWNvZGVyKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgV2ViRnJhbWVQcm94eSogZnJhbWUgPSBwcm9jZXNzKCktPndlYkZyYW1lKGZyYW1l
SUQpOworICAgIFdlYkZyYW1lUHJveHkqIGZyYW1lID0gbV9wcm9jZXNzLT53ZWJGcmFtZShmcmFt
ZUlEKTsKICAgICBNRVNTQUdFX0NIRUNLKGZyYW1lKTsKICAgICBNRVNTQUdFX0NIRUNLX1VSTChy
ZXF1ZXN0LnVybCgpKTsKIApAQCAtMjI4Nyw3ICsyMjg3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmRlY2lkZVBvbGljeUZvclJlc3BvbgogICAgIGlmICghYXJndW1lbnRzLT5kZWNvZGUobWVzc2Fn
ZURlY29kZXIpKQogICAgICAgICByZXR1cm47CiAKLSAgICBXZWJGcmFtZVByb3h5KiBmcmFtZSA9
IHByb2Nlc3MoKS0+d2ViRnJhbWUoZnJhbWVJRCk7CisgICAgV2ViRnJhbWVQcm94eSogZnJhbWUg
PSBtX3Byb2Nlc3MtPndlYkZyYW1lKGZyYW1lSUQpOwogICAgIE1FU1NBR0VfQ0hFQ0soZnJhbWUp
OwogICAgIE1FU1NBR0VfQ0hFQ0tfVVJMKHJlcXVlc3QudXJsKCkpOwogICAgIE1FU1NBR0VfQ0hF
Q0tfVVJMKHJlc3BvbnNlLnVybCgpKTsKQEAgLTIzMTksNyArMjMxOSw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5Ojp1bmFibGVUb0ltcGxlbWVudFBvbGkKICAgICBpZiAoIWFyZ3VtZW50cy0+ZGVjb2Rl
KG1lc3NhZ2VEZWNvZGVyKSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIFdlYkZyYW1lUHJv
eHkqIGZyYW1lID0gcHJvY2VzcygpLT53ZWJGcmFtZShmcmFtZUlEKTsKKyAgICBXZWJGcmFtZVBy
b3h5KiBmcmFtZSA9IG1fcHJvY2Vzcy0+d2ViRnJhbWUoZnJhbWVJRCk7CiAgICAgTUVTU0FHRV9D
SEVDSyhmcmFtZSk7CiAKICAgICBtX3BvbGljeUNsaWVudC51bmFibGVUb0ltcGxlbWVudFBvbGlj
eSh0aGlzLCBmcmFtZSwgZXJyb3IsIHVzZXJEYXRhLmdldCgpKTsKQEAgLTIzMzQsMTAgKzIzMzQs
MTAgQEAgdm9pZCBXZWJQYWdlUHJveHk6OndpbGxTdWJtaXRGb3JtKHVpbnQ2NAogICAgIGlmICgh
YXJndW1lbnRzLT5kZWNvZGUobWVzc2FnZURlY29kZXIpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBXZWJGcmFtZVByb3h5KiBmcmFtZSA9IHByb2Nlc3MoKS0+d2ViRnJhbWUoZnJhbWVJRCk7Cisg
ICAgV2ViRnJhbWVQcm94eSogZnJhbWUgPSBtX3Byb2Nlc3MtPndlYkZyYW1lKGZyYW1lSUQpOwog
ICAgIE1FU1NBR0VfQ0hFQ0soZnJhbWUpOwogCi0gICAgV2ViRnJhbWVQcm94eSogc291cmNlRnJh
bWUgPSBwcm9jZXNzKCktPndlYkZyYW1lKHNvdXJjZUZyYW1lSUQpOworICAgIFdlYkZyYW1lUHJv
eHkqIHNvdXJjZUZyYW1lID0gbV9wcm9jZXNzLT53ZWJGcmFtZShzb3VyY2VGcmFtZUlEKTsKICAg
ICBNRVNTQUdFX0NIRUNLKHNvdXJjZUZyYW1lKTsKIAogICAgIFJlZlB0cjxXZWJGb3JtU3VibWlz
c2lvbkxpc3RlbmVyUHJveHk+IGxpc3RlbmVyID0gZnJhbWUtPnNldFVwRm9ybVN1Ym1pc3Npb25M
aXN0ZW5lclByb3h5KGxpc3RlbmVySUQpOwpAQCAtMjM0OSw3ICsyMzQ5LDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OndpbGxTdWJtaXRGb3JtKHVpbnQ2NAogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlk
SW5pdGlhdGVMb2FkRm9yUmVzb3VyY2UodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcmVzb3Vy
Y2VJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGJvb2wgcGFnZUlz
UHJvdmlzaW9uYWxseUxvYWRpbmcpCiB7Ci0gICAgV2ViRnJhbWVQcm94eSogZnJhbWUgPSBwcm9j
ZXNzKCktPndlYkZyYW1lKGZyYW1lSUQpOworICAgIFdlYkZyYW1lUHJveHkqIGZyYW1lID0gbV9w
cm9jZXNzLT53ZWJGcmFtZShmcmFtZUlEKTsKICAgICBNRVNTQUdFX0NIRUNLKGZyYW1lKTsKICAg
ICBNRVNTQUdFX0NIRUNLX1VSTChyZXF1ZXN0LnVybCgpKTsKIApAQCAtMjM1OCw3ICsyMzU4LDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEluaXRpYXRlTG9hZEZvclJlcwogCiB2b2lkIFdlYlBh
Z2VQcm94eTo6ZGlkU2VuZFJlcXVlc3RGb3JSZXNvdXJjZSh1aW50NjRfdCBmcmFtZUlELCB1aW50
NjRfdCByZXNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSkKIHsKLSAgICBXZWJGcmFt
ZVByb3h5KiBmcmFtZSA9IHByb2Nlc3MoKS0+d2ViRnJhbWUoZnJhbWVJRCk7CisgICAgV2ViRnJh
bWVQcm94eSogZnJhbWUgPSBtX3Byb2Nlc3MtPndlYkZyYW1lKGZyYW1lSUQpOwogICAgIE1FU1NB
R0VfQ0hFQ0soZnJhbWUpOwogICAgIE1FU1NBR0VfQ0hFQ0tfVVJMKHJlcXVlc3QudXJsKCkpOwog
CkBAIC0yMzY3LDcgKzIzNjcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkU2VuZFJlcXVlc3RG
b3JSZXNvCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlUmVzcG9uc2VGb3JSZXNvdXJj
ZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCByZXNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewotICAgIFdlYkZyYW1lUHJveHkqIGZyYW1lID0g
cHJvY2VzcygpLT53ZWJGcmFtZShmcmFtZUlEKTsKKyAgICBXZWJGcmFtZVByb3h5KiBmcmFtZSA9
IG1fcHJvY2Vzcy0+d2ViRnJhbWUoZnJhbWVJRCk7CiAgICAgTUVTU0FHRV9DSEVDSyhmcmFtZSk7
CiAgICAgTUVTU0FHRV9DSEVDS19VUkwocmVzcG9uc2UudXJsKCkpOwogCkBAIC0yMzc2LDcgKzIz
NzYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZVJlc3BvbnNlRm9yCiAKIHZvaWQg
V2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlQ29udGVudExlbmd0aEZvclJlc291cmNlKHVpbnQ2NF90
IGZyYW1lSUQsIHVpbnQ2NF90IHJlc291cmNlSWRlbnRpZmllciwgdWludDY0X3QgY29udGVudExl
bmd0aCkKIHsKLSAgICBXZWJGcmFtZVByb3h5KiBmcmFtZSA9IHByb2Nlc3MoKS0+d2ViRnJhbWUo
ZnJhbWVJRCk7CisgICAgV2ViRnJhbWVQcm94eSogZnJhbWUgPSBtX3Byb2Nlc3MtPndlYkZyYW1l
KGZyYW1lSUQpOwogICAgIE1FU1NBR0VfQ0hFQ0soZnJhbWUpOwogCiAgICAgbV9yZXNvdXJjZUxv
YWRDbGllbnQuZGlkUmVjZWl2ZUNvbnRlbnRMZW5ndGhGb3JSZXNvdXJjZSh0aGlzLCBmcmFtZSwg
cmVzb3VyY2VJZGVudGlmaWVyLCBjb250ZW50TGVuZ3RoKTsKQEAgLTIzODQsNyArMjM4NCw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlQ29udGVudExlbmcKIAogdm9pZCBXZWJQYWdl
UHJveHk6OmRpZEZpbmlzaExvYWRGb3JSZXNvdXJjZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRf
dCByZXNvdXJjZUlkZW50aWZpZXIpCiB7Ci0gICAgV2ViRnJhbWVQcm94eSogZnJhbWUgPSBwcm9j
ZXNzKCktPndlYkZyYW1lKGZyYW1lSUQpOworICAgIFdlYkZyYW1lUHJveHkqIGZyYW1lID0gbV9w
cm9jZXNzLT53ZWJGcmFtZShmcmFtZUlEKTsKICAgICBNRVNTQUdFX0NIRUNLKGZyYW1lKTsKIAog
ICAgIG1fcmVzb3VyY2VMb2FkQ2xpZW50LmRpZEZpbmlzaExvYWRGb3JSZXNvdXJjZSh0aGlzLCBm
cmFtZSwgcmVzb3VyY2VJZGVudGlmaWVyKTsKQEAgLTIzOTIsNyArMjM5Miw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpkaWRGaW5pc2hMb2FkRm9yUmVzb3UKIAogdm9pZCBXZWJQYWdlUHJveHk6OmRp
ZEZhaWxMb2FkRm9yUmVzb3VyY2UodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcmVzb3VyY2VJ
ZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIHsKLSAgICBXZWJGcmFtZVBy
b3h5KiBmcmFtZSA9IHByb2Nlc3MoKS0+d2ViRnJhbWUoZnJhbWVJRCk7CisgICAgV2ViRnJhbWVQ
cm94eSogZnJhbWUgPSBtX3Byb2Nlc3MtPndlYkZyYW1lKGZyYW1lSUQpOwogICAgIE1FU1NBR0Vf
Q0hFQ0soZnJhbWUpOwogCiAgICAgbV9yZXNvdXJjZUxvYWRDbGllbnQuZGlkRmFpbExvYWRGb3JS
ZXNvdXJjZSh0aGlzLCBmcmFtZSwgcmVzb3VyY2VJZGVudGlmaWVyLCBlcnJvcik7CkBAIC0yNDE4
LDcgKzI0MTgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2hvd1BhZ2UoKQogdm9pZCBXZWJQYWdl
UHJveHk6OmNsb3NlUGFnZShib29sIHN0b3BSZXNwb25zaXZlbmVzc1RpbWVyKQogewogICAgIGlm
IChzdG9wUmVzcG9uc2l2ZW5lc3NUaW1lcikKLSAgICAgICAgcHJvY2VzcygpLT5yZXNwb25zaXZl
bmVzc1RpbWVyKCktPnN0b3AoKTsKKyAgICAgICAgbV9wcm9jZXNzLT5yZXNwb25zaXZlbmVzc1Rp
bWVyKCktPnN0b3AoKTsKIAogICAgIG1fcGFnZUNsaWVudC0+Y2xlYXJBbGxFZGl0Q29tbWFuZHMo
KTsKICAgICBtX3VpQ2xpZW50LmNsb3NlKHRoaXMpOwpAQCAtMjQyNiwzMyArMjQyNiwzMyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6Y2xvc2VQYWdlKGJvb2wgc3RvcFJlCiAKIHZvaWQgV2ViUGFnZVBy
b3h5OjpydW5KYXZhU2NyaXB0QWxlcnQodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBt
ZXNzYWdlKQogewotICAgIFdlYkZyYW1lUHJveHkqIGZyYW1lID0gcHJvY2VzcygpLT53ZWJGcmFt
ZShmcmFtZUlEKTsKKyAgICBXZWJGcmFtZVByb3h5KiBmcmFtZSA9IG1fcHJvY2Vzcy0+d2ViRnJh
bWUoZnJhbWVJRCk7CiAgICAgTUVTU0FHRV9DSEVDSyhmcmFtZSk7CiAKICAgICAvLyBTaW5jZSBy
dW5KYXZhU2NyaXB0QWxlcnQoKSBjYW4gc3BpbiBhIG5lc3RlZCBydW4gbG9vcCB3ZSBuZWVkIHRv
IHR1cm4gb2ZmIHRoZSByZXNwb25zaXZlbmVzcyB0aW1lci4KLSAgICBwcm9jZXNzKCktPnJlc3Bv
bnNpdmVuZXNzVGltZXIoKS0+c3RvcCgpOworICAgIG1fcHJvY2Vzcy0+cmVzcG9uc2l2ZW5lc3NU
aW1lcigpLT5zdG9wKCk7CiAKICAgICBtX3VpQ2xpZW50LnJ1bkphdmFTY3JpcHRBbGVydCh0aGlz
LCBtZXNzYWdlLCBmcmFtZSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0
Q29uZmlybSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGJvb2wmIHJl
c3VsdCkKIHsKLSAgICBXZWJGcmFtZVByb3h5KiBmcmFtZSA9IHByb2Nlc3MoKS0+d2ViRnJhbWUo
ZnJhbWVJRCk7CisgICAgV2ViRnJhbWVQcm94eSogZnJhbWUgPSBtX3Byb2Nlc3MtPndlYkZyYW1l
KGZyYW1lSUQpOwogICAgIE1FU1NBR0VfQ0hFQ0soZnJhbWUpOwogCiAgICAgLy8gU2luY2UgcnVu
SmF2YVNjcmlwdENvbmZpcm0oKSBjYW4gc3BpbiBhIG5lc3RlZCBydW4gbG9vcCB3ZSBuZWVkIHRv
IHR1cm4gb2ZmIHRoZSByZXNwb25zaXZlbmVzcyB0aW1lci4KLSAgICBwcm9jZXNzKCktPnJlc3Bv
bnNpdmVuZXNzVGltZXIoKS0+c3RvcCgpOworICAgIG1fcHJvY2Vzcy0+cmVzcG9uc2l2ZW5lc3NU
aW1lcigpLT5zdG9wKCk7CiAKICAgICByZXN1bHQgPSBtX3VpQ2xpZW50LnJ1bkphdmFTY3JpcHRD
b25maXJtKHRoaXMsIG1lc3NhZ2UsIGZyYW1lKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnJ1
bkphdmFTY3JpcHRQcm9tcHQodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBtZXNzYWdl
LCBjb25zdCBTdHJpbmcmIGRlZmF1bHRWYWx1ZSwgU3RyaW5nJiByZXN1bHQpCiB7Ci0gICAgV2Vi
RnJhbWVQcm94eSogZnJhbWUgPSBwcm9jZXNzKCktPndlYkZyYW1lKGZyYW1lSUQpOworICAgIFdl
YkZyYW1lUHJveHkqIGZyYW1lID0gbV9wcm9jZXNzLT53ZWJGcmFtZShmcmFtZUlEKTsKICAgICBN
RVNTQUdFX0NIRUNLKGZyYW1lKTsKIAogICAgIC8vIFNpbmNlIHJ1bkphdmFTY3JpcHRQcm9tcHQo
KSBjYW4gc3BpbiBhIG5lc3RlZCBydW4gbG9vcCB3ZSBuZWVkIHRvIHR1cm4gb2ZmIHRoZSByZXNw
b25zaXZlbmVzcyB0aW1lci4KLSAgICBwcm9jZXNzKCktPnJlc3BvbnNpdmVuZXNzVGltZXIoKS0+
c3RvcCgpOworICAgIG1fcHJvY2Vzcy0+cmVzcG9uc2l2ZW5lc3NUaW1lcigpLT5zdG9wKCk7CiAK
ICAgICByZXN1bHQgPSBtX3VpQ2xpZW50LnJ1bkphdmFTY3JpcHRQcm9tcHQodGhpcywgbWVzc2Fn
ZSwgZGVmYXVsdFZhbHVlLCBmcmFtZSk7CiB9CkBAIC0yNDYwLDcgKzI0NjAsNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdFByb21wdCh1CiB2b2lkIFdlYlBhZ2VQcm94eTo6c2hv
dWxkSW50ZXJydXB0SmF2YVNjcmlwdChib29sJiByZXN1bHQpCiB7CiAgICAgLy8gU2luY2Ugc2hv
dWxkSW50ZXJydXB0SmF2YVNjcmlwdCgpIGNhbiBzcGluIGEgbmVzdGVkIHJ1biBsb29wIHdlIG5l
ZWQgdG8gdHVybiBvZmYgdGhlIHJlc3BvbnNpdmVuZXNzIHRpbWVyLgotICAgIHByb2Nlc3MoKS0+
cmVzcG9uc2l2ZW5lc3NUaW1lcigpLT5zdG9wKCk7CisgICAgbV9wcm9jZXNzLT5yZXNwb25zaXZl
bmVzc1RpbWVyKCktPnN0b3AoKTsKIAogICAgIHJlc3VsdCA9IG1fdWlDbGllbnQuc2hvdWxkSW50
ZXJydXB0SmF2YVNjcmlwdCh0aGlzKTsKIH0KQEAgLTI1NjgsMTEgKzI1NjgsMTEgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OndpbmRvd1RvU2NyZWVuKGNvbnN0IAogICAgIAogdm9pZCBXZWJQYWdlUHJv
eHk6OnJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbChjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVp
bnQ2NF90IGZyYW1lSUQsIGJvb2wmIHNob3VsZENsb3NlKQogewotICAgIFdlYkZyYW1lUHJveHkq
IGZyYW1lID0gcHJvY2VzcygpLT53ZWJGcmFtZShmcmFtZUlEKTsKKyAgICBXZWJGcmFtZVByb3h5
KiBmcmFtZSA9IG1fcHJvY2Vzcy0+d2ViRnJhbWUoZnJhbWVJRCk7CiAgICAgTUVTU0FHRV9DSEVD
SyhmcmFtZSk7CiAKICAgICAvLyBTaW5jZSBydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoKSBj
YW4gc3BpbiBhIG5lc3RlZCBydW4gbG9vcCB3ZSBuZWVkIHRvIHR1cm4gb2ZmIHRoZSByZXNwb25z
aXZlbmVzcyB0aW1lci4KLSAgICBwcm9jZXNzKCktPnJlc3BvbnNpdmVuZXNzVGltZXIoKS0+c3Rv
cCgpOworICAgIG1fcHJvY2Vzcy0+cmVzcG9uc2l2ZW5lc3NUaW1lcigpLT5zdG9wKCk7CiAKICAg
ICBzaG91bGRDbG9zZSA9IG1fdWlDbGllbnQucnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKHRo
aXMsIG1lc3NhZ2UsIGZyYW1lKTsKIH0KQEAgLTI2MDQsMTQgKzI2MDQsMTQgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OnJ1bk9wZW5QYW5lbCh1aW50NjRfdAogICAgICAgICBtX29wZW5QYW5lbFJlc3Vs
dExpc3RlbmVyID0gMDsKICAgICB9CiAKLSAgICBXZWJGcmFtZVByb3h5KiBmcmFtZSA9IHByb2Nl
c3MoKS0+d2ViRnJhbWUoZnJhbWVJRCk7CisgICAgV2ViRnJhbWVQcm94eSogZnJhbWUgPSBtX3By
b2Nlc3MtPndlYkZyYW1lKGZyYW1lSUQpOwogICAgIE1FU1NBR0VfQ0hFQ0soZnJhbWUpOwogCiAg
ICAgUmVmUHRyPFdlYk9wZW5QYW5lbFBhcmFtZXRlcnM+IHBhcmFtZXRlcnMgPSBXZWJPcGVuUGFu
ZWxQYXJhbWV0ZXJzOjpjcmVhdGUoc2V0dGluZ3MpOwogICAgIG1fb3BlblBhbmVsUmVzdWx0TGlz
dGVuZXIgPSBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5OjpjcmVhdGUodGhpcyk7CiAK
ICAgICAvLyBTaW5jZSBydW5PcGVuUGFuZWwoKSBjYW4gc3BpbiBhIG5lc3RlZCBydW4gbG9vcCB3
ZSBuZWVkIHRvIHR1cm4gb2ZmIHRoZSByZXNwb25zaXZlbmVzcyB0aW1lci4KLSAgICBwcm9jZXNz
KCktPnJlc3BvbnNpdmVuZXNzVGltZXIoKS0+c3RvcCgpOworICAgIG1fcHJvY2Vzcy0+cmVzcG9u
c2l2ZW5lc3NUaW1lcigpLT5zdG9wKCk7CiAKICAgICBpZiAoIW1fdWlDbGllbnQucnVuT3BlblBh
bmVsKHRoaXMsIGZyYW1lLCBwYXJhbWV0ZXJzLmdldCgpLCBtX29wZW5QYW5lbFJlc3VsdExpc3Rl
bmVyLmdldCgpKSkKICAgICAgICAgZGlkQ2FuY2VsRm9yT3BlblBhbmVsKCk7CkBAIC0yNjIyLDcg
KzI2MjIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cHJpbnRGcmFtZSh1aW50NjRfdCBmCiAgICAg
QVNTRVJUKCFtX2lzUGVyZm9ybWluZ0RPTVByaW50T3BlcmF0aW9uKTsKICAgICBtX2lzUGVyZm9y
bWluZ0RPTVByaW50T3BlcmF0aW9uID0gdHJ1ZTsKIAotICAgIFdlYkZyYW1lUHJveHkqIGZyYW1l
ID0gcHJvY2VzcygpLT53ZWJGcmFtZShmcmFtZUlEKTsKKyAgICBXZWJGcmFtZVByb3h5KiBmcmFt
ZSA9IG1fcHJvY2Vzcy0+d2ViRnJhbWUoZnJhbWVJRCk7CiAgICAgTUVTU0FHRV9DSEVDSyhmcmFt
ZSk7CiAKICAgICBtX3VpQ2xpZW50LnByaW50RnJhbWUodGhpcywgZnJhbWUpOwpAQCAtMjY0Niw3
ICsyNjQ2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldE1lZGlhVm9sdW1lKGZsb2F0IAogICAg
IGlmICghaXNWYWxpZCgpKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgcHJvY2VzcygpLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRNZWRpYVZvbHVtZSh2b2x1bWUpLCBtX3BhZ2VJRCk7
ICAgIAorICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0TWVkaWFWb2x1
bWUodm9sdW1lKSwgbV9wYWdlSUQpOyAgICAKIH0KIAogI2lmIFBMQVRGT1JNKFFUKQpAQCAtMjY2
MCw3ICsyNjYwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmZpbmRab29tYWJsZUFyZWFGb3JQbwog
ICAgIGlmICghaXNWYWxpZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBwcm9jZXNzKCktPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OkZpbmRab29tYWJsZUFyZWFGb3JQb2ludChwb2ludCwgYXJl
YSksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkZp
bmRab29tYWJsZUFyZWFGb3JQb2ludChwb2ludCwgYXJlYSksIG1fcGFnZUlEKTsKIH0KIAogdm9p
ZCBXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVNZXNzYWdlRnJvbU5hdmlnYXRvclF0T2JqZWN0KGNv
bnN0IFN0cmluZyYgY29udGVudHMpCkBAIC0yNzMyLDcgKzI3MzIsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6ZGlkQ2hvb3NlQ29sb3IoY29uc3QgCiAgICAgaWYgKCFpc1ZhbGlkKCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIHByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkQ2hv
b3NlQ29sb3IoY29sb3IpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpEaWRDaG9vc2VDb2xvcihjb2xvciksIG1fcGFnZUlEKTsKIH0KIAogdm9pZCBX
ZWJQYWdlUHJveHk6OmRpZEVuZENvbG9yQ2hvb3NlcigpCkBAIC0yNzQ1LDcgKzI3NDUsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRW5kQ29sb3JDaG9vc2VyKCkKICAgICBtX2NvbG9yQ2hvb3Nl
ci0+aW52YWxpZGF0ZSgpOwogICAgIG1fY29sb3JDaG9vc2VyID0gbnVsbHB0cjsKIAotICAgIHBy
b2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkRW5kQ29sb3JDaG9vc2VyKCksIG1f
cGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZEVuZENv
bG9yQ2hvb3NlcigpLCBtX3BhZ2VJRCk7CiB9CiAjZW5kaWYKIApAQCAtMjc4MiwxOCArMjc4Miwx
OCBAQCBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5KiBXZWJQYWdlUHJveHk6CiAKIHZvaWQgV2Vi
UGFnZVByb3h5OjpiYWNrRm9yd2FyZEFkZEl0ZW0odWludDY0X3QgaXRlbUlEKQogewotICAgIG1f
YmFja0ZvcndhcmRMaXN0LT5hZGRJdGVtKHByb2Nlc3MoKS0+d2ViQmFja0ZvcndhcmRJdGVtKGl0
ZW1JRCkpOworICAgIG1fYmFja0ZvcndhcmRMaXN0LT5hZGRJdGVtKG1fcHJvY2Vzcy0+d2ViQmFj
a0ZvcndhcmRJdGVtKGl0ZW1JRCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6YmFja0Zvcndh
cmRHb1RvSXRlbSh1aW50NjRfdCBpdGVtSUQsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgc2Fu
ZGJveEV4dGVuc2lvbkhhbmRsZSkKIHsKLSAgICBXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiBpdGVt
ID0gcHJvY2VzcygpLT53ZWJCYWNrRm9yd2FyZEl0ZW0oaXRlbUlEKTsKKyAgICBXZWJCYWNrRm9y
d2FyZExpc3RJdGVtKiBpdGVtID0gbV9wcm9jZXNzLT53ZWJCYWNrRm9yd2FyZEl0ZW0oaXRlbUlE
KTsKICAgICBpZiAoIWl0ZW0pCiAgICAgICAgIHJldHVybjsKIAogICAgIGJvb2wgY3JlYXRlZEV4
dGVuc2lvbiA9IG1heWJlSW5pdGlhbGl6ZVNhbmRib3hFeHRlbnNpb25IYW5kbGUoS1VSTChLVVJM
KCksIGl0ZW0tPnVybCgpKSwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSk7CiAgICAgaWYgKGNyZWF0
ZWRFeHRlbnNpb24pCi0gICAgICAgIHByb2Nlc3MoKS0+d2lsbEFjcXVpcmVVbml2ZXJzYWxGaWxl
UmVhZFNhbmRib3hFeHRlbnNpb24oKTsKKyAgICAgICAgbV9wcm9jZXNzLT53aWxsQWNxdWlyZVVu
aXZlcnNhbEZpbGVSZWFkU2FuZGJveEV4dGVuc2lvbigpOwogICAgIG1fYmFja0ZvcndhcmRMaXN0
LT5nb1RvSXRlbShpdGVtKTsKIH0KIApAQCAtMjg3NCwxMiArMjg3NCwxMiBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6ZGlkRmFpbFRvRmluZFN0cmluZyhjCiAKIHZvaWQgV2ViUGFnZVByb3h5Ojp2YWx1
ZUNoYW5nZWRGb3JQb3B1cE1lbnUoV2ViUG9wdXBNZW51UHJveHkqLCBpbnQzMl90IG5ld1NlbGVj
dGVkSW5kZXgpCiB7Ci0gICAgcHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRD
aGFuZ2VTZWxlY3RlZEluZGV4Rm9yQWN0aXZlUG9wdXBNZW51KG5ld1NlbGVjdGVkSW5kZXgpLCBt
X3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRDaGFu
Z2VTZWxlY3RlZEluZGV4Rm9yQWN0aXZlUG9wdXBNZW51KG5ld1NlbGVjdGVkSW5kZXgpLCBtX3Bh
Z2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRUZXh0RnJvbUl0ZW1Gb3JQb3B1cE1l
bnUoV2ViUG9wdXBNZW51UHJveHkqLCBpbnQzMl90IGluZGV4KQogewotICAgIHByb2Nlc3MoKS0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0VGV4dEZvckFjdGl2ZVBvcHVwTWVudShpbmRleCks
IG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFRl
eHRGb3JBY3RpdmVQb3B1cE1lbnUoaW5kZXgpLCBtX3BhZ2VJRCk7CiB9CiAKIE5hdGl2ZVdlYk1v
dXNlRXZlbnQqIFdlYlBhZ2VQcm94eTo6Y3VycmVudGx5UHJvY2Vzc2VkTW91c2VEb3duRXZlbnQo
KQpAQCAtMjg5MCw3ICsyODkwLDcgQEAgTmF0aXZlV2ViTW91c2VFdmVudCogV2ViUGFnZVByb3h5
OjpjdXJyZQogI2lmIFBMQVRGT1JNKEdUSykKIHZvaWQgV2ViUGFnZVByb3h5OjpmYWlsZWRUb1No
b3dQb3B1cE1lbnUoKQogewotICAgIHByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
RmFpbGVkVG9TaG93UG9wdXBNZW51KCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OkZhaWxlZFRvU2hvd1BvcHVwTWVudSgpLCBtX3BhZ2VJRCk7CiB9
CiAjZW5kaWYKIApAQCAtMjkwNSw3ICsyOTA1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNob3dQ
b3B1cE1lbnUoY29uc3QgSQogICAgIG1fYWN0aXZlUG9wdXBNZW51ID0gbV9wYWdlQ2xpZW50LT5j
cmVhdGVQb3B1cE1lbnVQcm94eSh0aGlzKTsKIAogICAgIC8vIFNpbmNlIHNob3dQb3B1cE1lbnUo
KSBjYW4gc3BpbiBhIG5lc3RlZCBydW4gbG9vcCB3ZSBuZWVkIHRvIHR1cm4gb2ZmIHRoZSByZXNw
b25zaXZlbmVzcyB0aW1lci4KLSAgICBwcm9jZXNzKCktPnJlc3BvbnNpdmVuZXNzVGltZXIoKS0+
c3RvcCgpOworICAgIG1fcHJvY2Vzcy0+cmVzcG9uc2l2ZW5lc3NUaW1lcigpLT5zdG9wKCk7CiAK
ICAgICBSZWZQdHI8V2ViUG9wdXBNZW51UHJveHk+IHByb3RlY3RlZEFjdGl2ZVBvcHVwTWVudSA9
IG1fYWN0aXZlUG9wdXBNZW51OwogCkBAIC0yOTM0LDcgKzI5MzQsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6c2hvd0NvbnRleHRNZW51KGNvbnN0CiAgICAgaW50ZXJuYWxTaG93Q29udGV4dE1lbnUo
bWVudUxvY2F0aW9uLCBoaXRUZXN0UmVzdWx0RGF0YSwgcHJvcG9zZWRJdGVtcywgYXJndW1lbnRz
KTsKICAgICAKICAgICAvLyBObyBtYXR0ZXIgdGhlIHJlc3VsdCBvZiBpbnRlcm5hbFNob3dDb250
ZXh0TWVudSwgYWx3YXlzIG5vdGlmeSB0aGUgV2ViUHJvY2VzcyB0aGF0IHRoZSBtZW51IGlzIGhp
ZGRlbiBzbyBpdCBzdGFydHMgaGFuZGxpbmcgbW91c2UgZXZlbnRzIGFnYWluLgotICAgIHByb2Nl
c3MoKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q29udGV4dE1lbnVIaWRkZW4oKSwgbV9wYWdl
SUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q29udGV4dE1lbnVI
aWRkZW4oKSwgbV9wYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6aW50ZXJuYWxTaG93
Q29udGV4dE1lbnUoY29uc3QgSW50UG9pbnQmIG1lbnVMb2NhdGlvbiwgY29uc3QgV2ViSGl0VGVz
dFJlc3VsdDo6RGF0YSYgaGl0VGVzdFJlc3VsdERhdGEsIGNvbnN0IFZlY3RvcjxXZWJDb250ZXh0
TWVudUl0ZW1EYXRhPiYgcHJvcG9zZWRJdGVtcywgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiBh
cmd1bWVudHMpCkBAIC0yOTU0LDcgKzI5NTQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aW50ZXJu
YWxTaG93Q29udGV4dE1lCiAgICAgbV9hY3RpdmVDb250ZXh0TWVudSA9IG1fcGFnZUNsaWVudC0+
Y3JlYXRlQ29udGV4dE1lbnVQcm94eSh0aGlzKTsKIAogICAgIC8vIFNpbmNlIHNob3dDb250ZXh0
TWVudSgpIGNhbiBzcGluIGEgbmVzdGVkIHJ1biBsb29wIHdlIG5lZWQgdG8gdHVybiBvZmYgdGhl
IHJlc3BvbnNpdmVuZXNzIHRpbWVyLgotICAgIHByb2Nlc3MoKS0+cmVzcG9uc2l2ZW5lc3NUaW1l
cigpLT5zdG9wKCk7CisgICAgbV9wcm9jZXNzLT5yZXNwb25zaXZlbmVzc1RpbWVyKCktPnN0b3Ao
KTsKIAogICAgIC8vIEdpdmUgdGhlIFBhZ2VDb250ZXh0TWVudUNsaWVudCBvbmUgbGFzdCBzd2lw
ZSBhdCBjaGFuZ2luZyB0aGUgbWVudS4KICAgICBWZWN0b3I8V2ViQ29udGV4dE1lbnVJdGVtRGF0
YT4gaXRlbXM7CkBAIC0yOTgxLDI3ICsyOTgxLDI3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpjb250
ZXh0TWVudUl0ZW1TZWxlY3QKICAgICB9CiAgICAgaWYgKGl0ZW0uYWN0aW9uKCkgPT0gQ29udGV4
dE1lbnVJdGVtVGFnU21hcnRRdW90ZXMpIHsKICAgICAgICAgVGV4dENoZWNrZXI6OnNldEF1dG9t
YXRpY1F1b3RlU3Vic3RpdHV0aW9uRW5hYmxlZCghVGV4dENoZWNrZXI6OnN0YXRlKCkuaXNBdXRv
bWF0aWNRdW90ZVN1YnN0aXR1dGlvbkVuYWJsZWQpOwotICAgICAgICBwcm9jZXNzKCktPnVwZGF0
ZVRleHRDaGVja2VyU3RhdGUoKTsKKyAgICAgICAgbV9wcm9jZXNzLT51cGRhdGVUZXh0Q2hlY2tl
clN0YXRlKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKGl0ZW0uYWN0aW9uKCkg
PT0gQ29udGV4dE1lbnVJdGVtVGFnU21hcnREYXNoZXMpIHsKICAgICAgICAgVGV4dENoZWNrZXI6
OnNldEF1dG9tYXRpY0Rhc2hTdWJzdGl0dXRpb25FbmFibGVkKCFUZXh0Q2hlY2tlcjo6c3RhdGUo
KS5pc0F1dG9tYXRpY0Rhc2hTdWJzdGl0dXRpb25FbmFibGVkKTsKLSAgICAgICAgcHJvY2Vzcygp
LT51cGRhdGVUZXh0Q2hlY2tlclN0YXRlKCk7CisgICAgICAgIG1fcHJvY2Vzcy0+dXBkYXRlVGV4
dENoZWNrZXJTdGF0ZSgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmIChpdGVtLmFj
dGlvbigpID09IENvbnRleHRNZW51SXRlbVRhZ1NtYXJ0TGlua3MpIHsKICAgICAgICAgVGV4dENo
ZWNrZXI6OnNldEF1dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFibGVkKCFUZXh0Q2hlY2tlcjo6c3Rh
dGUoKS5pc0F1dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFibGVkKTsKLSAgICAgICAgcHJvY2Vzcygp
LT51cGRhdGVUZXh0Q2hlY2tlclN0YXRlKCk7CisgICAgICAgIG1fcHJvY2Vzcy0+dXBkYXRlVGV4
dENoZWNrZXJTdGF0ZSgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmIChpdGVtLmFj
dGlvbigpID09IENvbnRleHRNZW51SXRlbVRhZ1RleHRSZXBsYWNlbWVudCkgewogICAgICAgICBU
ZXh0Q2hlY2tlcjo6c2V0QXV0b21hdGljVGV4dFJlcGxhY2VtZW50RW5hYmxlZCghVGV4dENoZWNr
ZXI6OnN0YXRlKCkuaXNBdXRvbWF0aWNUZXh0UmVwbGFjZW1lbnRFbmFibGVkKTsKLSAgICAgICAg
cHJvY2VzcygpLT51cGRhdGVUZXh0Q2hlY2tlclN0YXRlKCk7CisgICAgICAgIG1fcHJvY2Vzcy0+
dXBkYXRlVGV4dENoZWNrZXJTdGF0ZSgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlm
IChpdGVtLmFjdGlvbigpID09IENvbnRleHRNZW51SXRlbVRhZ0NvcnJlY3RTcGVsbGluZ0F1dG9t
YXRpY2FsbHkpIHsKICAgICAgICAgVGV4dENoZWNrZXI6OnNldEF1dG9tYXRpY1NwZWxsaW5nQ29y
cmVjdGlvbkVuYWJsZWQoIVRleHRDaGVja2VyOjpzdGF0ZSgpLmlzQXV0b21hdGljU3BlbGxpbmdD
b3JyZWN0aW9uRW5hYmxlZCk7Ci0gICAgICAgIHByb2Nlc3MoKS0+dXBkYXRlVGV4dENoZWNrZXJT
dGF0ZSgpOworICAgICAgICBtX3Byb2Nlc3MtPnVwZGF0ZVRleHRDaGVja2VyU3RhdGUoKTsKICAg
ICAgICAgcmV0dXJuOyAgICAgICAgCiAgICAgfQogICAgIGlmIChpdGVtLmFjdGlvbigpID09IENv
bnRleHRNZW51SXRlbVRhZ1Nob3dTdWJzdGl0dXRpb25zKSB7CkBAIC0zMDE5LDEyICszMDE5LDEy
IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpjb250ZXh0TWVudUl0ZW1TZWxlY3QKICAgICB9CiAgICAg
aWYgKGl0ZW0uYWN0aW9uKCkgPT0gQ29udGV4dE1lbnVJdGVtVGFnQ2hlY2tTcGVsbGluZ1doaWxl
VHlwaW5nKSB7CiAgICAgICAgIFRleHRDaGVja2VyOjpzZXRDb250aW51b3VzU3BlbGxDaGVja2lu
Z0VuYWJsZWQoIVRleHRDaGVja2VyOjpzdGF0ZSgpLmlzQ29udGludW91c1NwZWxsQ2hlY2tpbmdF
bmFibGVkKTsKLSAgICAgICAgcHJvY2VzcygpLT51cGRhdGVUZXh0Q2hlY2tlclN0YXRlKCk7Cisg
ICAgICAgIG1fcHJvY2Vzcy0+dXBkYXRlVGV4dENoZWNrZXJTdGF0ZSgpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogICAgIGlmIChpdGVtLmFjdGlvbigpID09IENvbnRleHRNZW51SXRlbVRhZ0No
ZWNrR3JhbW1hcldpdGhTcGVsbGluZykgewogICAgICAgICBUZXh0Q2hlY2tlcjo6c2V0R3JhbW1h
ckNoZWNraW5nRW5hYmxlZCghVGV4dENoZWNrZXI6OnN0YXRlKCkuaXNHcmFtbWFyQ2hlY2tpbmdF
bmFibGVkKTsKLSAgICAgICAgcHJvY2VzcygpLT51cGRhdGVUZXh0Q2hlY2tlclN0YXRlKCk7Cisg
ICAgICAgIG1fcHJvY2Vzcy0+dXBkYXRlVGV4dENoZWNrZXJTdGF0ZSgpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogICAgIGlmIChpdGVtLmFjdGlvbigpID09IENvbnRleHRNZW51SXRlbVRhZ1No
b3dTcGVsbGluZ1BhbmVsKSB7CkBAIC0zMDM2LDcgKzMwMzYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6Y29udGV4dE1lbnVJdGVtU2VsZWN0CiAgICAgaWYgKGl0ZW0uYWN0aW9uKCkgPT0gQ29udGV4
dE1lbnVJdGVtVGFnTGVhcm5TcGVsbGluZyB8fCBpdGVtLmFjdGlvbigpID09IENvbnRleHRNZW51
SXRlbVRhZ0lnbm9yZVNwZWxsaW5nKQogICAgICAgICArK21fcGVuZGluZ0xlYXJuT3JJZ25vcmVX
b3JkTWVzc2FnZUNvdW50OwogCi0gICAgcHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpEaWRTZWxlY3RJdGVtRnJvbUFjdGl2ZUNvbnRleHRNZW51KGl0ZW0pLCBtX3BhZ2VJRCk7Cisg
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRTZWxlY3RJdGVtRnJvbUFj
dGl2ZUNvbnRleHRNZW51KGl0ZW0pLCBtX3BhZ2VJRCk7CiB9CiAjZW5kaWYgLy8gRU5BQkxFKENP
TlRFWFRfTUVOVVMpCiAKQEAgLTMwNTEsMTEgKzMwNTEsMTEgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmRpZENob29zZUZpbGVzRm9yT3BlbgogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZmlsZVVS
THMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRi
b3hFeHRlbnNpb25IYW5kbGU7CiAgICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRs
ZShmaWxlVVJMc1tpXSwgU2FuZGJveEV4dGVuc2lvbjo6UmVhZE9ubHksIHNhbmRib3hFeHRlbnNp
b25IYW5kbGUpOwotICAgICAgICBwcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkV4
dGVuZFNhbmRib3hGb3JGaWxlRnJvbU9wZW5QYW5lbChzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSwg
bV9wYWdlSUQpOworICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkV4
dGVuZFNhbmRib3hGb3JGaWxlRnJvbU9wZW5QYW5lbChzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSwg
bV9wYWdlSUQpOwogICAgIH0KICNlbmRpZgogCi0gICAgcHJvY2VzcygpLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpEaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbChmaWxlVVJMcyksIG1fcGFnZUlE
KTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZENob29zZUZpbGVz
Rm9yT3BlblBhbmVsKGZpbGVVUkxzKSwgbV9wYWdlSUQpOwogCiAgICAgbV9vcGVuUGFuZWxSZXN1
bHRMaXN0ZW5lci0+aW52YWxpZGF0ZSgpOwogICAgIG1fb3BlblBhbmVsUmVzdWx0TGlzdGVuZXIg
PSAwOwpAQCAtMzA2Niw3ICszMDY2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZENhbmNlbEZv
ck9wZW5QYW5lbAogICAgIGlmICghaXNWYWxpZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBw
cm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZENhbmNlbEZvck9wZW5QYW5lbCgp
LCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRD
YW5jZWxGb3JPcGVuUGFuZWwoKSwgbV9wYWdlSUQpOwogICAgIAogICAgIG1fb3BlblBhbmVsUmVz
dWx0TGlzdGVuZXItPmludmFsaWRhdGUoKTsKICAgICBtX29wZW5QYW5lbFJlc3VsdExpc3RlbmVy
ID0gMDsKQEAgLTMwNzQsNyArMzA3NCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRDYW5jZWxG
b3JPcGVuUGFuZWwKIAogdm9pZCBXZWJQYWdlUHJveHk6OmFkdmFuY2VUb05leHRNaXNzcGVsbGlu
Zyhib29sIHN0YXJ0QmVmb3JlU2VsZWN0aW9uKSBjb25zdAogewotICAgIHByb2Nlc3MoKS0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6QWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5nKHN0YXJ0QmVmb3Jl
U2VsZWN0aW9uKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6QWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5nKHN0YXJ0QmVmb3JlU2VsZWN0aW9uKSwgbV9w
YWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y2hhbmdlU3BlbGxpbmdUb1dvcmQoY29u
c3QgU3RyaW5nJiB3b3JkKSBjb25zdApAQCAtMzA4Miw3ICszMDgyLDcgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmNoYW5nZVNwZWxsaW5nVG9Xb3JkKAogICAgIGlmICh3b3JkLmlzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgcHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpD
aGFuZ2VTcGVsbGluZ1RvV29yZCh3b3JkKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6Q2hhbmdlU3BlbGxpbmdUb1dvcmQod29yZCksIG1fcGFnZUlE
KTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnJlZ2lzdGVyRWRpdENvbW1hbmQoUGFzc1JlZlB0
cjxXZWJFZGl0Q29tbWFuZFByb3h5PiBjb21tYW5kUHJveHksIFVuZG9PclJlZG8gdW5kb09yUmVk
bykKQEAgLTMxMDEsNyArMzEwMSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZW1vdmVFZGl0Q29t
bWFuZChXZWIKIAogICAgIGlmICghaXNWYWxpZCgpKQogICAgICAgICByZXR1cm47Ci0gICAgcHJv
Y2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRSZW1vdmVFZGl0Q29tbWFuZChjb21t
YW5kLT5jb21tYW5kSUQoKSksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkRpZFJlbW92ZUVkaXRDb21tYW5kKGNvbW1hbmQtPmNvbW1hbmRJRCgpKSwg
bV9wYWdlSUQpOwogfQogCiBib29sIFdlYlBhZ2VQcm94eTo6aXNWYWxpZEVkaXRDb21tYW5kKFdl
YkVkaXRDb21tYW5kUHJveHkqIGNvbW1hbmQpCkBAIC0zMjMxLDcgKzMyMzEsNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZUV2ZW50KHVpbnQzCiAgICAgY2FzZSBXZWJFdmVudDo6VG91
Y2hFbmQ6CiAgICAgY2FzZSBXZWJFdmVudDo6VG91Y2hDYW5jZWw6CiAjZW5kaWYKLSAgICAgICAg
cHJvY2VzcygpLT5yZXNwb25zaXZlbmVzc1RpbWVyKCktPnN0b3AoKTsKKyAgICAgICAgbV9wcm9j
ZXNzLT5yZXNwb25zaXZlbmVzc1RpbWVyKCktPnN0b3AoKTsKICAgICAgICAgYnJlYWs7CiAgICAg
fQogCkBAIC0zMjg5LDcgKzMyODksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZUV2
ZW50KHVpbnQzCiAgICAgICAgIG1fa2V5RXZlbnRRdWV1ZS5yZW1vdmVGaXJzdCgpOwogCiAgICAg
ICAgIGlmICghbV9rZXlFdmVudFF1ZXVlLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHByb2Nlc3Mo
KS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6S2V5RXZlbnQobV9rZXlFdmVudFF1ZXVlLmZpcnN0
KCkpLCBtX3BhZ2VJRCk7CisgICAgICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OktleUV2ZW50KG1fa2V5RXZlbnRRdWV1ZS5maXJzdCgpKSwgbV9wYWdlSUQpOwogCiAg
ICAgICAgIG1fcGFnZUNsaWVudC0+ZG9uZVdpdGhLZXlFdmVudChldmVudCwgaGFuZGxlZCk7CiAg
ICAgICAgIGlmIChoYW5kbGVkKQpAQCAtMzMyNSw3ICszMzI1LDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OmRpZFJlY2VpdmVFdmVudCh1aW50MwogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c3RvcFJlc3Bv
bnNpdmVuZXNzVGltZXIoKQogewotICAgIHByb2Nlc3MoKS0+cmVzcG9uc2l2ZW5lc3NUaW1lcigp
LT5zdG9wKCk7CisgICAgbV9wcm9jZXNzLT5yZXNwb25zaXZlbmVzc1RpbWVyKCktPnN0b3AoKTsK
IH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnZvaWRDYWxsYmFjayh1aW50NjRfdCBjYWxsYmFja0lE
KQpAQCAtMzQyMiw3ICszNDIyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmZvY3VzZWRGcmFtZUNo
YW5nZWQodQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgV2ViRnJhbWVQcm94eSogZnJh
bWUgPSBwcm9jZXNzKCktPndlYkZyYW1lKGZyYW1lSUQpOworICAgIFdlYkZyYW1lUHJveHkqIGZy
YW1lID0gbV9wcm9jZXNzLT53ZWJGcmFtZShmcmFtZUlEKTsKICAgICBNRVNTQUdFX0NIRUNLKGZy
YW1lKTsKIAogICAgIG1fZm9jdXNlZEZyYW1lID0gZnJhbWU7CkBAIC0zNDM1LDcgKzM0MzUsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6ZnJhbWVTZXRMYXJnZXN0RnJhbWVDCiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBXZWJGcmFtZVByb3h5KiBmcmFtZSA9IHByb2Nlc3MoKS0+d2ViRnJh
bWUoZnJhbWVJRCk7CisgICAgV2ViRnJhbWVQcm94eSogZnJhbWUgPSBtX3Byb2Nlc3MtPndlYkZy
YW1lKGZyYW1lSUQpOwogICAgIE1FU1NBR0VfQ0hFQ0soZnJhbWUpOwogCiAgICAgbV9mcmFtZVNl
dExhcmdlc3RGcmFtZSA9IGZyYW1lOwpAQCAtMzY0OCw3ICszNjQ4LDcgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmJhY2tGb3J3YXJkQ2xlYXIoKQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y2FuQXV0aGVu
dGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZUluRnJhbWUodWludDY0X3QgZnJhbWVJRCwgY29u
c3QgUHJvdGVjdGlvblNwYWNlJiBjb3JlUHJvdGVjdGlvblNwYWNlLCBib29sJiBjYW5BdXRoZW50
aWNhdGUpCiB7Ci0gICAgV2ViRnJhbWVQcm94eSogZnJhbWUgPSBwcm9jZXNzKCktPndlYkZyYW1l
KGZyYW1lSUQpOworICAgIFdlYkZyYW1lUHJveHkqIGZyYW1lID0gbV9wcm9jZXNzLT53ZWJGcmFt
ZShmcmFtZUlEKTsKICAgICBNRVNTQUdFX0NIRUNLKGZyYW1lKTsKIAogICAgIFJlZlB0cjxXZWJQ
cm90ZWN0aW9uU3BhY2U+IHByb3RlY3Rpb25TcGFjZSA9IFdlYlByb3RlY3Rpb25TcGFjZTo6Y3Jl
YXRlKGNvcmVQcm90ZWN0aW9uU3BhY2UpOwpAQCAtMzY1OCwxNyArMzY1OCwxNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6Y2FuQXV0aGVudGljYXRlQWdhaW5zCiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpk
aWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UodWludDY0X3QgZnJhbWVJRCwgY29uc3Qg
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNvcmVDaGFsbGVuZ2UsIHVpbnQ2NF90IGNoYWxsZW5n
ZUlEKQogewotICAgIFdlYkZyYW1lUHJveHkqIGZyYW1lID0gcHJvY2VzcygpLT53ZWJGcmFtZShm
cmFtZUlEKTsKKyAgICBXZWJGcmFtZVByb3h5KiBmcmFtZSA9IG1fcHJvY2Vzcy0+d2ViRnJhbWUo
ZnJhbWVJRCk7CiAgICAgTUVTU0FHRV9DSEVDSyhmcmFtZSk7CiAKLSAgICBSZWZQdHI8QXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VQcm94eT4gYXV0aGVudGljYXRpb25DaGFsbGVuZ2UgPSBBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZVByb3h5OjpjcmVhdGUoY29yZUNoYWxsZW5nZSwgY2hhbGxlbmdlSUQs
IHByb2Nlc3MoKSk7CisgICAgUmVmUHRyPEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk+IGF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlID0gQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eTo6Y3Jl
YXRlKGNvcmVDaGFsbGVuZ2UsIGNoYWxsZW5nZUlELCBtX3Byb2Nlc3MuZ2V0KCkpOwogICAgIAog
ICAgIG1fbG9hZGVyQ2xpZW50LmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUluRnJh
bWUodGhpcywgZnJhbWUsIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmdldCgpKTsKIH0KIAogdm9p
ZCBXZWJQYWdlUHJveHk6OmV4Y2VlZGVkRGF0YWJhc2VRdW90YSh1aW50NjRfdCBmcmFtZUlELCBj
b25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1l
LCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1aW50NjRfdCBjdXJyZW50UXVvdGEsIHVpbnQ2
NF90IGN1cnJlbnRPcmlnaW5Vc2FnZSwgdWludDY0X3QgY3VycmVudERhdGFiYXNlVXNhZ2UsIHVp
bnQ2NF90IGV4cGVjdGVkVXNhZ2UsIHVpbnQ2NF90JiBuZXdRdW90YSkKIHsKLSAgICBXZWJGcmFt
ZVByb3h5KiBmcmFtZSA9IHByb2Nlc3MoKS0+d2ViRnJhbWUoZnJhbWVJRCk7CisgICAgV2ViRnJh
bWVQcm94eSogZnJhbWUgPSBtX3Byb2Nlc3MtPndlYkZyYW1lKGZyYW1lSUQpOwogICAgIE1FU1NB
R0VfQ0hFQ0soZnJhbWUpOwogCiAgICAgUmVmUHRyPFdlYlNlY3VyaXR5T3JpZ2luPiBvcmlnaW4g
PSBXZWJTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbURhdGFiYXNlSWRlbnRpZmllcihvcmlnaW5J
ZGVudGlmaWVyKTsKQEAgLTM2NzgsNyArMzY3OCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpleGNl
ZWRlZERhdGFiYXNlUXVvdGEKIAogdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RHZW9sb2NhdGlv
blBlcm1pc3Npb25Gb3JGcmFtZSh1aW50NjRfdCBnZW9sb2NhdGlvbklELCB1aW50NjRfdCBmcmFt
ZUlELCBTdHJpbmcgb3JpZ2luSWRlbnRpZmllcikKIHsKLSAgICBXZWJGcmFtZVByb3h5KiBmcmFt
ZSA9IHByb2Nlc3MoKS0+d2ViRnJhbWUoZnJhbWVJRCk7CisgICAgV2ViRnJhbWVQcm94eSogZnJh
bWUgPSBtX3Byb2Nlc3MtPndlYkZyYW1lKGZyYW1lSUQpOwogICAgIE1FU1NBR0VfQ0hFQ0soZnJh
bWUpOwogCiAgICAgLy8gRklYTUU6IEdlb2xvY2F0aW9uIHNob3VsZCBwcm9iYWJseSBiZSB1c2lu
ZyB0b1N0cmluZygpIGFzIGl0cyBzdHJpbmcgcmVwcmVzZW50YXRpb24gaW5zdGVhZCBvZiBkYXRh
YmFzZUlkZW50aWZpZXIoKS4KQEAgLTM3MzcsMTMgKzM3MzcsMTMgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OmRyYXdGb290ZXIoV2ViRnJhbWVQcgogdm9pZCBXZWJQYWdlUHJveHk6OnJ1bk1vZGFsKCkK
IHsKICAgICAvLyBTaW5jZSBydW5Nb2RhbCgpIGNhbiAoYW5kIHByb2JhYmx5IHdpbGwpIHNwaW4g
YSBuZXN0ZWQgcnVuIGxvb3Agd2UgbmVlZCB0byB0dXJuIG9mZiB0aGUgcmVzcG9uc2l2ZW5lc3Mg
dGltZXIuCi0gICAgcHJvY2VzcygpLT5yZXNwb25zaXZlbmVzc1RpbWVyKCktPnN0b3AoKTsKKyAg
ICBtX3Byb2Nlc3MtPnJlc3BvbnNpdmVuZXNzVGltZXIoKS0+c3RvcCgpOwogCiAgICAgLy8gT3Vy
IENvbm5lY3Rpb24ncyBydW4gbG9vcCBtaWdodCBoYXZlIG1vcmUgbWVzc2FnZXMgd2FpdGluZyB0
byBiZSBoYW5kbGVkIGFmdGVyIHRoaXMgUnVuTW9kYWwgbWVzc2FnZS4KICAgICAvLyBUbyBtYWtl
IHN1cmUgdGhleSBhcmUgaGFuZGxlZCBpbnNpZGUgb2YgdGhlIHRoZSBuZXN0ZWQgbW9kYWwgcnVu
IGxvb3Agd2UgbXVzdCBmaXJzdCBzaWduYWwgdGhlIENvbm5lY3Rpb24ncwogICAgIC8vIHJ1biBs
b29wIHNvIHdlJ3JlIGd1YXJhbnRlZWQgdGhhdCBpdCBoYXMgYSBjaGFuY2UgdG8gd2FrZSB1cC4K
ICAgICAvLyBTZWUgaHR0cDovL3dlYmtpdC5vcmcvYi84OTU5MCBmb3IgbW9yZSBkaXNjdXNzaW9u
LgotICAgIHByb2Nlc3MoKS0+Y29ubmVjdGlvbigpLT53YWtlVXBSdW5Mb29wKCk7CisgICAgbV9w
cm9jZXNzLT5jb25uZWN0aW9uKCktPndha2VVcFJ1bkxvb3AoKTsKIAogICAgIG1fdWlDbGllbnQu
cnVuTW9kYWwodGhpcyk7CiB9CkBAIC0zODEyLDcgKzM4MTIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6ZGlkRmluaXNoTG9hZGluZ0RhdGFGCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpiYWNrRm9yd2Fy
ZFJlbW92ZWRJdGVtKHVpbnQ2NF90IGl0ZW1JRCkKIHsKLSAgICBwcm9jZXNzKCktPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OkRpZFJlbW92ZUJhY2tGb3J3YXJkSXRlbShpdGVtSUQpLCBtX3BhZ2VJ
RCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRSZW1vdmVCYWNr
Rm9yd2FyZEl0ZW0oaXRlbUlEKSwgbV9wYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6
c2V0Q2FuUnVuTW9kYWwoYm9vbCBjYW5SdW5Nb2RhbCkKQEAgLTM4MjQsNyArMzgyNCw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpzZXRDYW5SdW5Nb2RhbChib29sIGMKICAgICAvLyBhbHJlYWR5IHF1
YWxpZmllcyBmb3IgcnVubmluZyBtb2RhbCBjaGlsZCB3ZWIgcGFnZXMsIG90aGVyd2lzZQogICAg
IC8vIHRoZXJlJ3Mgbm8gb3RoZXIgcG9zc2liaWxpdHkgdGhhbiBub3QgYWxsb3dpbmcgaXQuCiAg
ICAgbV9jYW5SdW5Nb2RhbCA9IG1fdWlDbGllbnQuY2FuUnVuTW9kYWwoKSAmJiBjYW5SdW5Nb2Rh
bDsKLSAgICBwcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldENhblJ1bk1vZGFs
KG1fY2FuUnVuTW9kYWwpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpTZXRDYW5SdW5Nb2RhbChtX2NhblJ1bk1vZGFsKSwgbV9wYWdlSUQpOwogfQog
CiBib29sIFdlYlBhZ2VQcm94eTo6Y2FuUnVuTW9kYWwoKQpAQCAtMzgzOCw3ICszODM4LDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmJlZ2luUHJpbnRpbmcoV2ViRnJhbQogICAgICAgICByZXR1cm47
CiAKICAgICBtX2lzSW5QcmludGluZ01vZGUgPSB0cnVlOwotICAgIHByb2Nlc3MoKS0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6QmVnaW5QcmludGluZyhmcmFtZS0+ZnJhbWVJRCgpLCBwcmludElu
Zm8pLCBtX3BhZ2VJRCwgbV9pc1BlcmZvcm1pbmdET01QcmludE9wZXJhdGlvbiA/IENvcmVJUEM6
OkRpc3BhdGNoTWVzc2FnZUV2ZW5XaGVuV2FpdGluZ0ZvclN5bmNSZXBseSA6IDApOworICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6QmVnaW5QcmludGluZyhmcmFtZS0+ZnJh
bWVJRCgpLCBwcmludEluZm8pLCBtX3BhZ2VJRCwgbV9pc1BlcmZvcm1pbmdET01QcmludE9wZXJh
dGlvbiA/IENvcmVJUEM6OkRpc3BhdGNoTWVzc2FnZUV2ZW5XaGVuV2FpdGluZ0ZvclN5bmNSZXBs
eSA6IDApOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZW5kUHJpbnRpbmcoKQpAQCAtMzg0Nyw3
ICszODQ3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmVuZFByaW50aW5nKCkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgbV9pc0luUHJpbnRpbmdNb2RlID0gZmFsc2U7Ci0gICAgcHJvY2VzcygpLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpFbmRQcmludGluZygpLCBtX3BhZ2VJRCwgbV9pc1BlcmZv
cm1pbmdET01QcmludE9wZXJhdGlvbiA/IENvcmVJUEM6OkRpc3BhdGNoTWVzc2FnZUV2ZW5XaGVu
V2FpdGluZ0ZvclN5bmNSZXBseSA6IDApOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6RW5kUHJpbnRpbmcoKSwgbV9wYWdlSUQsIG1faXNQZXJmb3JtaW5nRE9NUHJpbnRP
cGVyYXRpb24gPyBDb3JlSVBDOjpEaXNwYXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JTeW5j
UmVwbHkgOiAwKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmNvbXB1dGVQYWdlc0ZvclByaW50
aW5nKFdlYkZyYW1lUHJveHkqIGZyYW1lLCBjb25zdCBQcmludEluZm8mIHByaW50SW5mbywgUGFz
c1JlZlB0cjxDb21wdXRlZFBhZ2VzQ2FsbGJhY2s+IHBycENhbGxiYWNrKQpAQCAtMzg2MSw3ICsz
ODYxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNvbXB1dGVQYWdlc0ZvclByaW50aQogICAgIHVp
bnQ2NF90IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgpOwogICAgIG1fY29tcHV0
ZWRQYWdlc0NhbGxiYWNrcy5zZXQoY2FsbGJhY2tJRCwgY2FsbGJhY2suZ2V0KCkpOwogICAgIG1f
aXNJblByaW50aW5nTW9kZSA9IHRydWU7Ci0gICAgcHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpDb21wdXRlUGFnZXNGb3JQcmludGluZyhmcmFtZS0+ZnJhbWVJRCgpLCBwcmludElu
Zm8sIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCwgbV9pc1BlcmZvcm1pbmdET01QcmludE9wZXJhdGlv
biA/IENvcmVJUEM6OkRpc3BhdGNoTWVzc2FnZUV2ZW5XaGVuV2FpdGluZ0ZvclN5bmNSZXBseSA6
IDApOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q29tcHV0ZVBhZ2Vz
Rm9yUHJpbnRpbmcoZnJhbWUtPmZyYW1lSUQoKSwgcHJpbnRJbmZvLCBjYWxsYmFja0lEKSwgbV9w
YWdlSUQsIG1faXNQZXJmb3JtaW5nRE9NUHJpbnRPcGVyYXRpb24gPyBDb3JlSVBDOjpEaXNwYXRj
aE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkgOiAwKTsKIH0KIAogI2lmIFBMQVRG
T1JNKE1BQykgfHwgUExBVEZPUk0oV0lOKQpAQCAtMzg3NSw3ICszODc1LDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmRyYXdSZWN0VG9QREYoV2ViRnJhbQogICAgIAogICAgIHVpbnQ2NF90IGNhbGxi
YWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgpOwogICAgIG1fZGF0YUNhbGxiYWNrcy5zZXQo
Y2FsbGJhY2tJRCwgY2FsbGJhY2suZ2V0KCkpOwotICAgIHByb2Nlc3MoKS0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6RHJhd1JlY3RUb1BERihmcmFtZS0+ZnJhbWVJRCgpLCBwcmludEluZm8sIHJl
Y3QsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCwgbV9pc1BlcmZvcm1pbmdET01QcmludE9wZXJhdGlv
biA/IENvcmVJUEM6OkRpc3BhdGNoTWVzc2FnZUV2ZW5XaGVuV2FpdGluZ0ZvclN5bmNSZXBseSA6
IDApOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RHJhd1JlY3RUb1BE
RihmcmFtZS0+ZnJhbWVJRCgpLCBwcmludEluZm8sIHJlY3QsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJ
RCwgbV9pc1BlcmZvcm1pbmdET01QcmludE9wZXJhdGlvbiA/IENvcmVJUEM6OkRpc3BhdGNoTWVz
c2FnZUV2ZW5XaGVuV2FpdGluZ0ZvclN5bmNSZXBseSA6IDApOwogfQogCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6ZHJhd1BhZ2VzVG9QREYoV2ViRnJhbWVQcm94eSogZnJhbWUsIGNvbnN0IFByaW50SW5m
byYgcHJpbnRJbmZvLCB1aW50MzJfdCBmaXJzdCwgdWludDMyX3QgY291bnQsIFBhc3NSZWZQdHI8
RGF0YUNhbGxiYWNrPiBwcnBDYWxsYmFjaykKQEAgLTM4ODgsNyArMzg4OCw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpkcmF3UGFnZXNUb1BERihXZWJGcmEKICAgICAKICAgICB1aW50NjRfdCBjYWxs
YmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKTsKICAgICBtX2RhdGFDYWxsYmFja3Muc2V0
KGNhbGxiYWNrSUQsIGNhbGxiYWNrLmdldCgpKTsKLSAgICBwcm9jZXNzKCktPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkRyYXdQYWdlc1RvUERGKGZyYW1lLT5mcmFtZUlEKCksIHByaW50SW5mbywg
Zmlyc3QsIGNvdW50LCBjYWxsYmFja0lEKSwgbV9wYWdlSUQsIG1faXNQZXJmb3JtaW5nRE9NUHJp
bnRPcGVyYXRpb24gPyBDb3JlSVBDOjpEaXNwYXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JT
eW5jUmVwbHkgOiAwKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRy
YXdQYWdlc1RvUERGKGZyYW1lLT5mcmFtZUlEKCksIHByaW50SW5mbywgZmlyc3QsIGNvdW50LCBj
YWxsYmFja0lEKSwgbV9wYWdlSUQsIG1faXNQZXJmb3JtaW5nRE9NUHJpbnRPcGVyYXRpb24gPyBD
b3JlSVBDOjpEaXNwYXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkgOiAwKTsK
IH0KICNlbGlmIFBMQVRGT1JNKEdUSykKIHZvaWQgV2ViUGFnZVByb3h5OjpkcmF3UGFnZXNGb3JQ
cmludGluZyhXZWJGcmFtZVByb3h5KiBmcmFtZSwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZm8s
IFBhc3NSZWZQdHI8UHJpbnRGaW5pc2hlZENhbGxiYWNrPiBkaWRQcmludENhbGxiYWNrKQpAQCAt
MzkwMiw3ICszOTAyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRyYXdQYWdlc0ZvclByaW50aW5n
KAogICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgpOwogICAg
IG1fcHJpbnRGaW5pc2hlZENhbGxiYWNrcy5zZXQoY2FsbGJhY2tJRCwgY2FsbGJhY2suZ2V0KCkp
OwogICAgIG1faXNJblByaW50aW5nTW9kZSA9IHRydWU7Ci0gICAgcHJvY2VzcygpLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpEcmF3UGFnZXNGb3JQcmludGluZyhmcmFtZS0+ZnJhbWVJRCgpLCBw
cmludEluZm8sIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCwgbV9pc1BlcmZvcm1pbmdET01QcmludE9w
ZXJhdGlvbiA/IENvcmVJUEM6OkRpc3BhdGNoTWVzc2FnZUV2ZW5XaGVuV2FpdGluZ0ZvclN5bmNS
ZXBseSA6IDApOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RHJhd1Bh
Z2VzRm9yUHJpbnRpbmcoZnJhbWUtPmZyYW1lSUQoKSwgcHJpbnRJbmZvLCBjYWxsYmFja0lEKSwg
bV9wYWdlSUQsIG1faXNQZXJmb3JtaW5nRE9NUHJpbnRPcGVyYXRpb24gPyBDb3JlSVBDOjpEaXNw
YXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkgOiAwKTsKIH0KICNlbmRpZgog
CkBAIC0zOTE3LDcgKzM5MTcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlQmFja2luZ1N0
b3JlRGlzCiAKICAgICBib29sIGlzRGlzY2FyZGFibGU7CiAKLSAgICBpZiAoIXByb2Nlc3MoKS0+
cmVzcG9uc2l2ZW5lc3NUaW1lcigpLT5pc1Jlc3BvbnNpdmUoKSkKKyAgICBpZiAoIW1fcHJvY2Vz
cy0+cmVzcG9uc2l2ZW5lc3NUaW1lcigpLT5pc1Jlc3BvbnNpdmUoKSkKICAgICAgICAgaXNEaXNj
YXJkYWJsZSA9IGZhbHNlOwogICAgIGVsc2UKICAgICAgICAgaXNEaXNjYXJkYWJsZSA9ICFtX3Bh
Z2VDbGllbnQtPmlzVmlld1dpbmRvd0FjdGl2ZSgpIHx8ICFpc1ZpZXdWaXNpYmxlKCk7CkBAIC0z
OTQyLDcgKzM5NDIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2F2ZURhdGFUb0ZpbGVJbkRvd25s
CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpsaW5rQ2xpY2tlZChjb25zdCBTdHJpbmcmIHVybCwgY29u
c3QgV2ViTW91c2VFdmVudCYgZXZlbnQpCiB7Ci0gICAgcHJvY2VzcygpLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpMaW5rQ2xpY2tlZCh1cmwsIGV2ZW50KSwgbV9wYWdlSUQsIDApOworICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TGlua0NsaWNrZWQodXJsLCBldmVudCks
IG1fcGFnZUlELCAwKTsKIH0KIAogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTM5NzgsNyArMzk3OCw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpoYW5kbGVBbHRlcm5hdGl2ZVRleHQKIHsKICNpZiBfX01B
Q19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNzAKICAgICBpZiAoIWlzQ2xvc2VkKCkp
Ci0gICAgICAgIHByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6SGFuZGxlQWx0ZXJu
YXRpdmVUZXh0VUlSZXN1bHQocmVzdWx0KSwgbV9wYWdlSUQsIDApOworICAgICAgICBtX3Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkhhbmRsZUFsdGVybmF0aXZlVGV4dFVJUmVzdWx0
KHJlc3VsdCksIG1fcGFnZUlELCAwKTsKICNlbmRpZgogfQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>