<?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>221631</bug_id>
          
          <creation_ts>2021-02-09 14:26:01 -0800</creation_ts>
          <short_desc>Use CompletionHandler instead of UnsignedCallback</short_desc>
          <delta_ts>2021-02-09 17:29:14 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>cdumez</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1727258</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-02-09 14:26:01 -0800</bug_when>
    <thetext>Use CompletionHandler instead of UnsignedCallback</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1727259</commentid>
    <comment_count>1</comment_count>
      <attachid>419765</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-02-09 14:26:22 -0800</bug_when>
    <thetext>Created attachment 419765
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1727363</commentid>
    <comment_count>2</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-02-09 17:28:19 -0800</bug_when>
    <thetext>http://trac.webkit.org/r272627</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1727364</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-02-09 17:29:14 -0800</bug_when>
    <thetext>&lt;rdar://problem/74167815&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>419765</attachid>
            <date>2021-02-09 14:26:22 -0800</date>
            <delta_ts>2021-02-09 14:32:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221631-20210209142622.patch</filename>
            <type>text/plain</type>
            <size>33638</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyNjA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDcyYmIxZTE1ZmZlMzkzNmMw
MjAxNTJmMjIyZDAxMDQzYzVlYzNiMWUuLjFjNzMzZjZjOTQ4OWIwNTYwOTEzNGJmNGNlOGE4MmZl
OTY3NzcxZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMjEtMDItMDkgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBVc2UgQ29tcGxl
dGlvbkhhbmRsZXIgaW5zdGVhZCBvZiBVbnNpZ25lZENhbGxiYWNrCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjE2MzEKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3
SW1wbC5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmNoYXJhY3RlckluZGV4Rm9y
UG9pbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlcGxhY2VNYXRjaGVzKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpjaGFyYWN0ZXJJbmRleEZvclBvaW50QXN5bmMpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OnVuc2lnbmVkQ2FsbGJhY2spOiBEZWxldGVkLgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVBy
b3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0lu
dGVyYWN0aW9uLm1tOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IHNlbGVjdFRleHRXaXRoR3Jh
bnVsYXJpdHk6YXRQb2ludDpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tDb250
ZW50VmlldyBiZWdpblNlbGVjdGlvbkluRGlyZWN0aW9uOmNvbXBsZXRpb25IYW5kbGVyOl0pOgor
ICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IHVwZGF0ZVNlbGVjdGlvbldpdGhFeHRlbnRQb2ludDpj
b21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyB1cGRhdGVTZWxl
Y3Rpb25XaXRoRXh0ZW50UG9pbnQ6d2l0aEJvdW5kYXJ5OmNvbXBsZXRpb25IYW5kbGVyOl0pOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OmJlZ2luU2VsZWN0aW9uSW5EaXJlY3Rpb24pOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OnVwZGF0ZVNlbGVjdGlvbldpdGhFeHRlbnRQb2ludCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6dXBkYXRlU2VsZWN0aW9uV2l0aEV4dGVudFBv
aW50QW5kQm91bmRhcnkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV0tUZXh0RmluZGVyQ2xp
ZW50Lm1tOgorICAgICAgICAoLVtXS1RleHRGaW5kZXJDbGllbnQgcmVwbGFjZU1hdGNoZXM6d2l0
aFN0cmluZzppblNlbGVjdGlvbk9ubHk6cmVzdWx0Q29sbGVjdG9yOl0pOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
cmVwbGFjZU1hdGNoZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpjaGFyYWN0ZXJJbmRl
eEZvclBvaW50QXN5bmMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlOjpiZWdpblNlbGVjdGlvbkluRGlyZWN0aW9uKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZTo6dXBkYXRlU2VsZWN0aW9uV2l0aEV4dGVudFBvaW50QW5kQm91bmRhcnkpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1cGRhdGVTZWxlY3Rpb25XaXRoRXh0ZW50UG9pbnQp
OgorCiAyMDIxLTAyLTA5ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgVXNlIENvbXBsZXRpb25IYW5kbGVyIGluc3RlYWQgb2YgQ29tcHV0ZWRQ
YWdlc0NhbGxiYWNrCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9X
ZWJWaWV3SW1wbC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBs
Lm1tCmluZGV4IDY2MjYyZDc0YjUxNTQxZjBhMjQ1OTY3YmFiYzhlYTc4MzAxNDlkYWYuLjUwZTIy
NTUxODViMTQxNTE0ODRlNWQwMjdhZWM0MmI4ZWNiMzQ4ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCkBAIC01MDgxLDEwICs1MDgxLDggQEAgdm9p
ZCBXZWJWaWV3SW1wbDo6Zmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2UoTlNSYW5nZSByYW5nZSwg
dm9pZCheY29tcGxldGlvbkhhbmQKICAgICB9KTsKIH0KIAotdm9pZCBXZWJWaWV3SW1wbDo6Y2hh
cmFjdGVySW5kZXhGb3JQb2ludChOU1BvaW50IHBvaW50LCB2b2lkKF5jb21wbGV0aW9uSGFuZGxl
clB0cikoTlNVSW50ZWdlcikpCit2b2lkIFdlYlZpZXdJbXBsOjpjaGFyYWN0ZXJJbmRleEZvclBv
aW50KE5TUG9pbnQgcG9pbnQsIHZvaWQoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VJbnRlZ2VyKSkK
IHsKLSAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gYWRvcHROUyhbY29tcGxldGlvbkhhbmRs
ZXJQdHIgY29weV0pOwotCiAgICAgTE9HKFRleHRJbnB1dCwgImNoYXJhY3RlckluZGV4Rm9yUG9p
bnQ6KCVmLCAlZikiLCBwb2ludC54LCBwb2ludC55KTsKIAogICAgIE5TV2luZG93ICp3aW5kb3cg
PSBbbV92aWV3IHdpbmRvd107CkBAIC01MDk1LDE3ICs1MDkzLDExIEBAIHZvaWQgV2ViVmlld0lt
cGw6OmNoYXJhY3RlckluZGV4Rm9yUG9pbnQoTlNQb2ludCBwb2ludCwgdm9pZCheY29tcGxldGlv
bkhhbmRsZXJQCiAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgcG9p
bnQgPSBbbV92aWV3IGNvbnZlcnRQb2ludDpwb2ludCBmcm9tVmlldzpuaWxdOyAgLy8gdGhlIHBv
aW50IGlzIHJlbGF0aXZlIHRvIHRoZSBtYWluIGZyYW1lCiAKLSAgICBtX3BhZ2UtPmNoYXJhY3Rl
ckluZGV4Rm9yUG9pbnRBc3luYyhXZWJDb3JlOjpJbnRQb2ludChwb2ludCksIFtjb21wbGV0aW9u
SGFuZGxlcl0odWludDY0X3QgcmVzdWx0LCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IgZXJy
b3IpIHsKLSAgICAgICAgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyQmxvY2spKE5TVUludGVnZXIp
ID0gKHZvaWQgKF4pKE5TVUludGVnZXIpKWNvbXBsZXRpb25IYW5kbGVyLmdldCgpOwotICAgICAg
ICBpZiAoZXJyb3IgIT0gV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yOjpOb25lKSB7Ci0gICAg
ICAgICAgICBMT0coVGV4dElucHV0LCAiICAgIC4uLmNoYXJhY3RlckluZGV4Rm9yUG9pbnQgZmFp
bGVkLiIpOwotICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXJCbG9jaygwKTsKLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgfQorICAgIG1fcGFnZS0+Y2hhcmFjdGVySW5kZXhGb3JQb2lu
dEFzeW5jKFdlYkNvcmU6OkludFBvaW50KHBvaW50KSwgW2NvbXBsZXRpb25IYW5kbGVyID0gbWFr
ZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0odWludDY0X3QgcmVzdWx0KSB7CiAgICAgICAg
IGlmIChyZXN1bHQgPT0gbm90Rm91bmQpCiAgICAgICAgICAgICByZXN1bHQgPSBOU05vdEZvdW5k
OwogICAgICAgICBMT0coVGV4dElucHV0LCAiICAgIC0+IGNoYXJhY3RlckluZGV4Rm9yUG9pbnQg
cmV0dXJuZWQgJWx1IiwgcmVzdWx0KTsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXJCbG9jayhy
ZXN1bHQpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXN1bHQpOwogICAgIH0pOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA4Y2I1ZDIzYmU4
Y2Q0ZTIwNTlkZTQ1Y2ViNWJjNDhiZTAxNzgwN2Y1Li44NDVlOWFiZjU3ZGM3OTU4YjJiOWJmZjli
NjYyNzkyM2ZhNDIxNGY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAKQEAgLTQwMTYsMTUgKzQwMTYsOSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y291bnRTdHJpbmdN
YXRjaGVzKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBPcHRpb25TZXQ8RmluZE9wdGlvbgogICAgIHNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNvdW50U3RyaW5nTWF0Y2hlcyhzdHJpbmcsIG9wdGlvbnMs
IG1heE1hdGNoQ291bnQpKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnJlcGxhY2VNYXRjaGVz
KFZlY3Rvcjx1aW50MzJfdD4mJiBtYXRjaEluZGljZXMsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1l
bnRUZXh0LCBib29sIHNlbGVjdGlvbk9ubHksIEZ1bmN0aW9uPHZvaWQodWludDY0X3QsIENhbGxi
YWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrKQordm9pZCBXZWJQYWdlUHJveHk6OnJlcGxhY2VN
YXRjaGVzKFZlY3Rvcjx1aW50MzJfdD4mJiBtYXRjaEluZGljZXMsIGNvbnN0IFN0cmluZyYgcmVw
bGFjZW1lbnRUZXh0LCBib29sIHNlbGVjdGlvbk9ubHksIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
dWludDY0X3QpPiYmIGNhbGxiYWNrKQogewotICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkg
ewotICAgICAgICBjYWxsYmFjaygwLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpVbmtub3duKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tz
LnB1dChXVEZNb3ZlKGNhbGxiYWNrKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5k
QWN0aXZpdHkoIldlYlBhZ2VQcm94eTo6cmVwbGFjZU1hdGNoZXMiX3MpKTsKLSAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpSZXBsYWNlTWF0Y2hlcyhXVEZNb3ZlKG1hdGNoSW5kaWNlcyksIHJl
cGxhY2VtZW50VGV4dCwgc2VsZWN0aW9uT25seSwgY2FsbGJhY2tJRCkpOworICAgIHNlbmRXaXRo
QXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6UmVwbGFjZU1hdGNoZXMoV1RGTW92ZShtYXRj
aEluZGljZXMpLCByZXBsYWNlbWVudFRleHQsIHNlbGVjdGlvbk9ubHkpLCBXVEZNb3ZlKGNhbGxi
YWNrKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpsYXVuY2hJbml0aWFsUHJvY2Vzc0lmTmVj
ZXNzYXJ5KCkKQEAgLTcxNjEsMTggKzcxNTUsNiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aW52YWxp
ZGF0ZVN0cmluZ0NhbGxiYWNrKENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBjYWxsYmFjay0+
aW52YWxpZGF0ZSgpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6dW5zaWduZWRDYWxsYmFjayh1
aW50NjRfdCByZXN1bHQsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKLXsKLSAgICBhdXRvIGNhbGxi
YWNrID0gbV9jYWxsYmFja3MudGFrZTxVbnNpZ25lZENhbGxiYWNrPihjYWxsYmFja0lEKTsKLSAg
ICBpZiAoIWNhbGxiYWNrKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBMb2cgZXJyb3Igb3IgYXNzZXJ0
LgotICAgICAgICAvLyB0aGlzIGNhbiB2YWxpZGx5IGhhcHBlbiBpZiBhIGxvYWQgaW52YWxpZGF0
ZWQgdGhlIGNhbGxiYWNrLCB0aG91Z2gKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGNh
bGxiYWNrLT5wZXJmb3JtQ2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUocmVzdWx0KTsKLX0KLQogdm9p
ZCBXZWJQYWdlUHJveHk6OmVkaXRvclN0YXRlQ2hhbmdlZChjb25zdCBFZGl0b3JTdGF0ZSYgZWRp
dG9yU3RhdGUpCiB7CiAgICAgdXBkYXRlRWRpdG9yU3RhdGUoZWRpdG9yU3RhdGUpOwpAQCAtODk1
MiwxNSArODkzNCw5IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRTZWxlY3RlZFJhbmdlQXN5bmMo
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBFZGl0aW5nUmFuCiAgICAgc2VuZFdpdGhBc3lu
Y1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRTZWxlY3RlZFJhbmdlQXN5bmMoKSwgV1RGTW92
ZShjYWxsYmFja0Z1bmN0aW9uKSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpjaGFyYWN0ZXJJ
bmRleEZvclBvaW50QXN5bmMoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50LCBXVEY6OkZ1
bmN0aW9uPHZvaWQgKHVpbnQ2NF90LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1
bmN0aW9uKQordm9pZCBXZWJQYWdlUHJveHk6OmNoYXJhY3RlckluZGV4Rm9yUG9pbnRBc3luYyhj
b25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWlu
dDY0X3QpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7Ci0gICAgaWYgKCFoYXNSdW5uaW5nUHJvY2Vz
cygpKSB7Ci0gICAgICAgIGNhbGxiYWNrRnVuY3Rpb24oMCwgQ2FsbGJhY2tCYXNlOjpFcnJvcjo6
VW5rbm93bik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBhdXRvIGNhbGxiYWNrSUQg
PSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50
aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYlBhZ2VQcm94eTo6Y2hhcmFjdGVySW5k
ZXhGb3JQb2ludEFzeW5jIl9zKSk7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2hhcmFj
dGVySW5kZXhGb3JQb2ludEFzeW5jKHBvaW50LCBjYWxsYmFja0lEKSk7CisgICAgc2VuZFdpdGhB
c3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpDaGFyYWN0ZXJJbmRleEZvclBvaW50QXN5bmMo
cG9pbnQpLCBXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJv
eHk6OmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlQXN5bmMoY29uc3QgRWRpdGluZ1JhbmdlJiBy
YW5nZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgY29u
c3QgRWRpdGluZ1JhbmdlJik+JiYgY2FsbGJhY2tGdW5jdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmgKaW5kZXggNmNlODMzYjFiNmZmYjNkN2EyMDFlMzljNTJkN2FhZDk2
MGJlNTNlNy4uM2I0NzgyYTdmNjg2NzU0OGI3YWJhNzcwZjcwMzNkYmQ0OWU2ODRhOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTM3OSw3ICszNzksNiBAQCBlbnVt
IGNsYXNzIFVuZG9PclJlZG8gOiBib29sOwogZW51bSBjbGFzcyBXZWJDb250ZW50TW9kZSA6IHVp
bnQ4X3Q7CiAKIHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPEFQSTo6RGF0YSo+IERhdGFDYWxsYmFj
azsKLXR5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPHVpbnQ2NF90PiBVbnNpZ25lZENhbGxiYWNrOwog
dHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8Y29uc3QgU3RyaW5nJj4gU3RyaW5nQ2FsbGJhY2s7CiAK
ICNpZiBIQVZFKFZJU0lCSUxJVFlfUFJPUEFHQVRJT05fVklFVykKQEAgLTc2OCw5ICs3NjcsOSBA
QCBwdWJsaWM6CiAgICAgdm9pZCBzZWxlY3RQb3NpdGlvbkF0UG9pbnQoY29uc3QgV2ViQ29yZTo6
SW50UG9pbnQsIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhGb2N1c2VkRWxlbWVudCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNlbGVjdFBvc2l0aW9uQXRCb3VuZGFyeVdp
dGhEaXJlY3Rpb24oY29uc3QgV2ViQ29yZTo6SW50UG9pbnQsIFdlYkNvcmU6OlRleHRHcmFudWxh
cml0eSwgV2ViQ29yZTo6U2VsZWN0aW9uRGlyZWN0aW9uLCBib29sIGlzSW50ZXJhY3RpbmdXaXRo
Rm9jdXNlZEVsZW1lbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBt
b3ZlU2VsZWN0aW9uQXRCb3VuZGFyeVdpdGhEaXJlY3Rpb24oV2ViQ29yZTo6VGV4dEdyYW51bGFy
aXR5LCBXZWJDb3JlOjpTZWxlY3Rpb25EaXJlY3Rpb24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7Ci0gICAgdm9pZCBiZWdpblNlbGVjdGlvbkluRGlyZWN0aW9uKFdlYkNvcmU6OlNlbGVj
dGlvbkRpcmVjdGlvbiwgV1RGOjpGdW5jdGlvbjx2b2lkICh1aW50NjRfdCwgQ2FsbGJhY2tCYXNl
OjpFcnJvcik+JiYpOwotICAgIHZvaWQgdXBkYXRlU2VsZWN0aW9uV2l0aEV4dGVudFBvaW50KGNv
bnN0IFdlYkNvcmU6OkludFBvaW50LCBib29sIGlzSW50ZXJhY3RpbmdXaXRoRm9jdXNlZEVsZW1l
bnQsIFJlc3BlY3RTZWxlY3Rpb25BbmNob3IsIFdURjo6RnVuY3Rpb248dm9pZCh1aW50NjRfdCwg
Q2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwotICAgIHZvaWQgdXBkYXRlU2VsZWN0aW9uV2l0aEV4
dGVudFBvaW50QW5kQm91bmRhcnkoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQsIFdlYkNvcmU6OlRl
eHRHcmFudWxhcml0eSwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEZvY3VzZWRFbGVtZW50LCBXVEY6
OkZ1bmN0aW9uPHZvaWQodWludDY0X3QsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKKyAgICB2
b2lkIGJlZ2luU2VsZWN0aW9uSW5EaXJlY3Rpb24oV2ViQ29yZTo6U2VsZWN0aW9uRGlyZWN0aW9u
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lkIHVwZGF0ZVNlbGVj
dGlvbldpdGhFeHRlbnRQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCwgYm9vbCBpc0ludGVy
YWN0aW5nV2l0aEZvY3VzZWRFbGVtZW50LCBSZXNwZWN0U2VsZWN0aW9uQW5jaG9yLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lkIHVwZGF0ZVNlbGVjdGlvbldpdGhF
eHRlbnRQb2ludEFuZEJvdW5kYXJ5KGNvbnN0IFdlYkNvcmU6OkludFBvaW50LCBXZWJDb3JlOjpU
ZXh0R3JhbnVsYXJpdHksIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhGb2N1c2VkRWxlbWVudCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9pZCByZXF1ZXN0QXV0b2NvcnJl
Y3Rpb25EYXRhKGNvbnN0IFN0cmluZyYgdGV4dEZvckF1dG9jb3JyZWN0aW9uLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFdlYkF1dG9jb3JyZWN0aW9uRGF0YSk+JiYpOwogICAgIHZvaWQgYXBwbHlB
dXRvY29ycmVjdGlvbihjb25zdCBTdHJpbmcmIGNvcnJlY3Rpb24sIGNvbnN0IFN0cmluZyYgb3Jp
Z2luYWxUZXh0LCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIENhbGxiYWNrQmFz
ZTo6RXJyb3IpPiYmKTsKICAgICBib29sIGFwcGx5QXV0b2NvcnJlY3Rpb24oY29uc3QgU3RyaW5n
JiBjb3JyZWN0aW9uLCBjb25zdCBTdHJpbmcmIG9yaWdpbmFsVGV4dCk7CkBAIC04NzksNyArODc4
LDcgQEAgcHVibGljOgogICAgIHZvaWQgaGFzTWFya2VkVGV4dChDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wpPiYmKTsKICAgICB2b2lkIGdldE1hcmtlZFJhbmdlQXN5bmMoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChjb25zdCBFZGl0aW5nUmFuZ2UmKT4mJik7CiAgICAgdm9pZCBnZXRTZWxlY3Rl
ZFJhbmdlQXN5bmMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBFZGl0aW5nUmFuZ2UmKT4m
Jik7Ci0gICAgdm9pZCBjaGFyYWN0ZXJJbmRleEZvclBvaW50QXN5bmMoY29uc3QgV2ViQ29yZTo6
SW50UG9pbnQmLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKHVpbnQ2NF90LCBDYWxsYmFja0Jhc2U6OkVy
cm9yKT4mJik7CisgICAgdm9pZCBjaGFyYWN0ZXJJbmRleEZvclBvaW50QXN5bmMoY29uc3QgV2Vi
Q29yZTo6SW50UG9pbnQmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90KT4mJik7CiAg
ICAgdm9pZCBmaXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZUFzeW5jKGNvbnN0IEVkaXRpbmdSYW5n
ZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0
IEVkaXRpbmdSYW5nZSYpPiYmKTsKICAgICB2b2lkIHNldENvbXBvc2l0aW9uQXN5bmMoY29uc3Qg
U3RyaW5nJiB0ZXh0LCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29tcG9zaXRpb25VbmRlcmxpbmU+
JiwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvbXBvc2l0aW9uSGlnaGxpZ2h0PiYsIGNvbnN0IEVk
aXRpbmdSYW5nZSYgc2VsZWN0aW9uUmFuZ2UsIGNvbnN0IEVkaXRpbmdSYW5nZSYgcmVwbGFjZW1l
bnRSYW5nZSk7CiAgICAgdm9pZCBjb25maXJtQ29tcG9zaXRpb25Bc3luYygpOwpAQCAtMTExMiw3
ICsxMTExLDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkR2V0SW1hZ2VGb3JGaW5kTWF0Y2goY29u
c3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGNvbnRlbnRJbWFnZUhhbmRsZSwgdWludDMyX3Qg
bWF0Y2hJbmRleCk7CiAgICAgdm9pZCBoaWRlRmluZFVJKCk7CiAgICAgdm9pZCBjb3VudFN0cmlu
Z01hdGNoZXMoY29uc3QgU3RyaW5nJiwgT3B0aW9uU2V0PEZpbmRPcHRpb25zPiwgdW5zaWduZWQg
bWF4TWF0Y2hDb3VudCk7Ci0gICAgdm9pZCByZXBsYWNlTWF0Y2hlcyhWZWN0b3I8dWludDMyX3Q+
JiYgbWF0Y2hJbmRpY2VzLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50VGV4dCwgYm9vbCBzZWxl
Y3Rpb25Pbmx5LCBGdW5jdGlvbjx2b2lkKHVpbnQ2NF90LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4m
Jik7CisgICAgdm9pZCByZXBsYWNlTWF0Y2hlcyhWZWN0b3I8dWludDMyX3Q+JiYgbWF0Y2hJbmRp
Y2VzLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50VGV4dCwgYm9vbCBzZWxlY3Rpb25Pbmx5LCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90KT4mJik7CiAgICAgdm9pZCBkaWRDb3VudFN0
cmluZ01hdGNoZXMoY29uc3QgU3RyaW5nJiwgdWludDMyX3QgbWF0Y2hDb3VudCk7CiAgICAgdm9p
ZCBzZXRUZXh0SW5kaWNhdG9yKGNvbnN0IFdlYkNvcmU6OlRleHRJbmRpY2F0b3JEYXRhJiwgdWlu
dDY0X3QgLyogV2ViQ29yZTo6VGV4dEluZGljYXRvcldpbmRvd0xpZmV0aW1lICovIGxpZmV0aW1l
ID0gMCAvKiBQZXJtYW5lbnQgKi8pOwogICAgIHZvaWQgc2V0VGV4dEluZGljYXRvckFuaW1hdGlv
blByb2dyZXNzKGZsb2F0KTsKQEAgLTIxNTgsNyArMjE1Nyw2IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBpbWFnZUNhbGxiYWNrKGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiwgQ2FsbGJhY2tJ
RCk7CiAgICAgdm9pZCBzdHJpbmdDYWxsYmFjayhjb25zdCBTdHJpbmcmLCBDYWxsYmFja0lEKTsK
ICAgICB2b2lkIGludmFsaWRhdGVTdHJpbmdDYWxsYmFjayhDYWxsYmFja0lEKTsKLSAgICB2b2lk
IHVuc2lnbmVkQ2FsbGJhY2sodWludDY0X3QsIENhbGxiYWNrSUQpOwogI2lmIEVOQUJMRShBUFBM
SUNBVElPTl9NQU5JRkVTVCkKICAgICB2b2lkIGFwcGxpY2F0aW9uTWFuaWZlc3RDYWxsYmFjayhj
b25zdCBPcHRpb25hbDxXZWJDb3JlOjpBcHBsaWNhdGlvbk1hbmlmZXN0PiYsIENhbGxiYWNrSUQp
OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVz
c2FnZXMuaW4KaW5kZXggYjQ5Yzc5NWNmODQ4ZWM2M2JlM2RiYjhmNDRmNzVjOGFmM2JjZGZmYS4u
ZDQ2NTA1Y2U3NDRlNzczOGViODEzYTRkNmVmNDM5YmJlMjJlZTBhOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgpAQCAtMTY4LDcgKzE2
OCw2IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgSW1hZ2VDYWxsYmFjayhXZWJL
aXQ6OlNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGJpdG1hcEhhbmRsZSwgV2ViS2l0OjpDYWxsYmFj
a0lEIGNhbGxiYWNrSUQpCiAgICAgU3RyaW5nQ2FsbGJhY2soU3RyaW5nIHJlc3VsdFN0cmluZywg
V2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgSW52YWxpZGF0ZVN0cmluZ0NhbGxi
YWNrKFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQotICAgIFVuc2lnbmVkQ2FsbGJhY2so
dWludDY0X3QgcmVzdWx0LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICNpZiBFTkFC
TEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCiAgICAgQXBwbGljYXRpb25NYW5pZmVzdENhbGxiYWNr
KE9wdGlvbmFsPFdlYkNvcmU6OkFwcGxpY2F0aW9uTWFuaWZlc3Q+IG1hbmlmZXN0LCBXZWJLaXQ6
OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KaW5kZXggZjM1NGQ1
NTk4OTczNzBkOTBjMmYwOGUwY2JlOTU5ZGQ1ODk5ZDQzZi4uMmUwYzczNDlkYTkxYzg5NmRiYTA3
YWVjNjhmMWY2NzU1OTI2NmY0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBAIC00MjY3LDM1ICs0MjY3LDI1
IEBAIHN0YXRpYyB2b2lkIHNlbGVjdGlvbkNoYW5nZWRXaXRoVG91Y2goV0tDb250ZW50VmlldyAq
dmlldywgY29uc3QgV2ViQ29yZTo6SW50UG9pCiB7CiAgICAgX3VzaW5nR2VzdHVyZUZvclNlbGVj
dGlvbiA9IFlFUzsKICAgICArK19zdXBwcmVzc05vbkVkaXRhYmxlU2luZ2xlVGFwVGV4dEludGVy
YWN0aW9uQ291bnQ7Ci0gICAgVUlXS1NlbGVjdGlvbkNvbXBsZXRpb25IYW5kbGVyIHNlbGVjdGlv
bkhhbmRsZXIgPSBbY29tcGxldGlvbkhhbmRsZXIgY29weV07Ci0gICAgUmV0YWluUHRyPFdLQ29u
dGVudFZpZXc+IHZpZXcgPSBzZWxmOwotCi0gICAgX3BhZ2UtPnNlbGVjdFRleHRXaXRoR3JhbnVs
YXJpdHlBdFBvaW50KFdlYkNvcmU6OkludFBvaW50KHBvaW50KSwgdG9XS1RleHRHcmFudWxhcml0
eShncmFudWxhcml0eSksIHNlbGYuX2hhc0ZvY3VzZWRFbGVtZW50LCBbdmlldywgc2VsZWN0aW9u
SGFuZGxlcl0geworICAgIF9wYWdlLT5zZWxlY3RUZXh0V2l0aEdyYW51bGFyaXR5QXRQb2ludChX
ZWJDb3JlOjpJbnRQb2ludChwb2ludCksIHRvV0tUZXh0R3JhbnVsYXJpdHkoZ3JhbnVsYXJpdHkp
LCBzZWxmLl9oYXNGb2N1c2VkRWxlbWVudCwgW3ZpZXcgPSByZXRhaW5QdHIoc2VsZiksIHNlbGVj
dGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSB7CiAgICAgICAg
IHNlbGVjdGlvbkhhbmRsZXIoKTsKICAgICAgICAgdmlldy0+X3VzaW5nR2VzdHVyZUZvclNlbGVj
dGlvbiA9IE5POwogICAgICAgICAtLXZpZXctPl9zdXBwcmVzc05vbkVkaXRhYmxlU2luZ2xlVGFw
VGV4dEludGVyYWN0aW9uQ291bnQ7Ci0gICAgICAgIFtzZWxlY3Rpb25IYW5kbGVyIHJlbGVhc2Vd
OwogICAgIH0pOwogfQogCiAtICh2b2lkKWJlZ2luU2VsZWN0aW9uSW5EaXJlY3Rpb246KFVJVGV4
dERpcmVjdGlvbilkaXJlY3Rpb24gY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKEJPT0wgZW5k
SXNNb3ZpbmcpKWNvbXBsZXRpb25IYW5kbGVyCiB7Ci0gICAgVUlXS1NlbGVjdGlvbldpdGhEaXJl
Y3Rpb25Db21wbGV0aW9uSGFuZGxlciBzZWxlY3Rpb25IYW5kbGVyID0gW2NvbXBsZXRpb25IYW5k
bGVyIGNvcHldOwotCi0gICAgX3BhZ2UtPmJlZ2luU2VsZWN0aW9uSW5EaXJlY3Rpb24odG9XS1Nl
bGVjdGlvbkRpcmVjdGlvbihkaXJlY3Rpb24pLCBbc2VsZWN0aW9uSGFuZGxlcl0oYm9vbCBlbmRJ
c01vdmluZywgV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7CisgICAgX3BhZ2Ut
PmJlZ2luU2VsZWN0aW9uSW5EaXJlY3Rpb24odG9XS1NlbGVjdGlvbkRpcmVjdGlvbihkaXJlY3Rp
b24pLCBbc2VsZWN0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcild
IChib29sIGVuZElzTW92aW5nKSB7CiAgICAgICAgIHNlbGVjdGlvbkhhbmRsZXIoZW5kSXNNb3Zp
bmcpOwotICAgICAgICBbc2VsZWN0aW9uSGFuZGxlciByZWxlYXNlXTsKICAgICB9KTsKIH0KIAog
LSAodm9pZCl1cGRhdGVTZWxlY3Rpb25XaXRoRXh0ZW50UG9pbnQ6KENHUG9pbnQpcG9pbnQgY29t
cGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKEJPT0wgZW5kSXNNb3ZpbmcpKWNvbXBsZXRpb25IYW5k
bGVyCiB7Ci0gICAgVUlXS1NlbGVjdGlvbldpdGhEaXJlY3Rpb25Db21wbGV0aW9uSGFuZGxlciBz
ZWxlY3Rpb25IYW5kbGVyID0gW2NvbXBsZXRpb25IYW5kbGVyIGNvcHldOwotICAgIAogICAgIGF1
dG8gcmVzcGVjdFNlbGVjdGlvbkFuY2hvciA9IHNlbGYuaW50ZXJhY3Rpb25Bc3Npc3RhbnQuX3dr
X2hhc0Zsb2F0aW5nQ3Vyc29yID8gV2ViS2l0OjpSZXNwZWN0U2VsZWN0aW9uQW5jaG9yOjpZZXMg
OiBXZWJLaXQ6OlJlc3BlY3RTZWxlY3Rpb25BbmNob3I6Ok5vOwotICAgIF9wYWdlLT51cGRhdGVT
ZWxlY3Rpb25XaXRoRXh0ZW50UG9pbnQoV2ViQ29yZTo6SW50UG9pbnQocG9pbnQpLCBzZWxmLl9o
YXNGb2N1c2VkRWxlbWVudCwgcmVzcGVjdFNlbGVjdGlvbkFuY2hvciwgW3NlbGVjdGlvbkhhbmRs
ZXJdKGJvb2wgZW5kSXNNb3ZpbmcsIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikg
eworICAgIF9wYWdlLT51cGRhdGVTZWxlY3Rpb25XaXRoRXh0ZW50UG9pbnQoV2ViQ29yZTo6SW50
UG9pbnQocG9pbnQpLCBzZWxmLl9oYXNGb2N1c2VkRWxlbWVudCwgcmVzcGVjdFNlbGVjdGlvbkFu
Y2hvciwgW3NlbGVjdGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIp
XShib29sIGVuZElzTW92aW5nKSB7CiAgICAgICAgIHNlbGVjdGlvbkhhbmRsZXIoZW5kSXNNb3Zp
bmcpOwotICAgICAgICBbc2VsZWN0aW9uSGFuZGxlciByZWxlYXNlXTsKICAgICB9KTsKIH0KIApA
QCAtNDMwNCw3ICs0Mjk0LDcgQEAgc3RhdGljIHZvaWQgc2VsZWN0aW9uQ2hhbmdlZFdpdGhUb3Vj
aChXS0NvbnRlbnRWaWV3ICp2aWV3LCBjb25zdCBXZWJDb3JlOjpJbnRQb2kKICAgICBVSVdLU2Vs
ZWN0aW9uV2l0aERpcmVjdGlvbkNvbXBsZXRpb25IYW5kbGVyIHNlbGVjdGlvbkhhbmRsZXIgPSBb
Y29tcGxldGlvbkhhbmRsZXIgY29weV07CiAgICAgCiAgICAgKytfc3VwcHJlc3NOb25FZGl0YWJs
ZVNpbmdsZVRhcFRleHRJbnRlcmFjdGlvbkNvdW50OwotICAgIF9wYWdlLT51cGRhdGVTZWxlY3Rp
b25XaXRoRXh0ZW50UG9pbnRBbmRCb3VuZGFyeShXZWJDb3JlOjpJbnRQb2ludChwb2ludCksIHRv
V0tUZXh0R3JhbnVsYXJpdHkoZ3JhbnVsYXJpdHkpLCBzZWxmLl9oYXNGb2N1c2VkRWxlbWVudCwg
W3NlbGVjdGlvbkhhbmRsZXIsIHByb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIoc2VsZildIChib29s
IGVuZElzTW92aW5nLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKKyAgICBf
cGFnZS0+dXBkYXRlU2VsZWN0aW9uV2l0aEV4dGVudFBvaW50QW5kQm91bmRhcnkoV2ViQ29yZTo6
SW50UG9pbnQocG9pbnQpLCB0b1dLVGV4dEdyYW51bGFyaXR5KGdyYW51bGFyaXR5KSwgc2VsZi5f
aGFzRm9jdXNlZEVsZW1lbnQsIFtzZWxlY3Rpb25IYW5kbGVyLCBwcm90ZWN0ZWRTZWxmID0gcmV0
YWluUHRyKHNlbGYpXSAoYm9vbCBlbmRJc01vdmluZykgewogICAgICAgICBzZWxlY3Rpb25IYW5k
bGVyKGVuZElzTW92aW5nKTsKICAgICAgICAgW3NlbGVjdGlvbkhhbmRsZXIgcmVsZWFzZV07CiAg
ICAgICAgIC0tcHJvdGVjdGVkU2VsZi0+X3N1cHByZXNzTm9uRWRpdGFibGVTaW5nbGVUYXBUZXh0
SW50ZXJhY3Rpb25Db3VudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9XZWJQYWdlUHJveHlJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFn
ZVByb3h5SU9TLm1tCmluZGV4IGU2MjhjNDg4NDVlOTcyMWQxNjliNDcwOWJjOWIzM2NiNzNmY2I2
YmMuLmRiOTcxYTIzODIzOWQyNzllNzczMmUwZjA1ZTk3ZDdjY2RiOTJmYTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQpAQCAtNDk1LDM5ICs0
OTUsMTkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNlbGVjdFBvc2l0aW9uQXRQb2ludChjb25zdCBX
ZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgYm9vbCBpc0kKICAgICB9KTsKIH0KIAotdm9pZCBXZWJQ
YWdlUHJveHk6OmJlZ2luU2VsZWN0aW9uSW5EaXJlY3Rpb24oV2ViQ29yZTo6U2VsZWN0aW9uRGly
ZWN0aW9uIGRpcmVjdGlvbiwgV1RGOjpGdW5jdGlvbjx2b2lkICh1aW50NjRfdCwgQ2FsbGJhY2tC
YXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKK3ZvaWQgV2ViUGFnZVByb3h5OjpiZWdp
blNlbGVjdGlvbkluRGlyZWN0aW9uKFdlYkNvcmU6OlNlbGVjdGlvbkRpcmVjdGlvbiBkaXJlY3Rp
b24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY2FsbGJhY2spCiB7Ci0gICAgaWYg
KCFoYXNSdW5uaW5nUHJvY2VzcygpKSB7Ci0gICAgICAgIGNhbGxiYWNrRnVuY3Rpb24oMCwgQ2Fs
bGJhY2tCYXNlOjpFcnJvcjo6VW5rbm93bik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAg
Ci0gICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tG
dW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQ
YWdlUHJveHk6OmJlZ2luU2VsZWN0aW9uSW5EaXJlY3Rpb24iX3MpKTsKLSAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkJlZ2luU2VsZWN0aW9uSW5EaXJlY3Rpb24oZGlyZWN0
aW9uLCBjYWxsYmFja0lEKSwgbV93ZWJQYWdlSUQpOworICAgIHNlbmRXaXRoQXN5bmNSZXBseShN
ZXNzYWdlczo6V2ViUGFnZTo6QmVnaW5TZWxlY3Rpb25JbkRpcmVjdGlvbihkaXJlY3Rpb24pLCBX
VEZNb3ZlKGNhbGxiYWNrKSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVTZWxlY3Rp
b25XaXRoRXh0ZW50UG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIGJvb2wgaXNJ
bnRlcmFjdGluZ1dpdGhGb2N1c2VkRWxlbWVudCwgUmVzcGVjdFNlbGVjdGlvbkFuY2hvciByZXNw
ZWN0U2VsZWN0aW9uQW5jaG9yLCBXVEY6OkZ1bmN0aW9uPHZvaWQodWludDY0X3QsIENhbGxiYWNr
QmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCit2b2lkIFdlYlBhZ2VQcm94eTo6dXBk
YXRlU2VsZWN0aW9uV2l0aEV4dGVudFBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50IHBvaW50
LCBib29sIGlzSW50ZXJhY3RpbmdXaXRoRm9jdXNlZEVsZW1lbnQsIFJlc3BlY3RTZWxlY3Rpb25B
bmNob3IgcmVzcGVjdFNlbGVjdGlvbkFuY2hvciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
KT4mJiBjYWxsYmFjaykKIHsKLSAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpIHsKLSAgICAg
ICAgY2FsbGJhY2tGdW5jdGlvbigwLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpVbmtub3duKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAKLSAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxi
YWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIo
KS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYlBhZ2VQcm94eTo6dXBkYXRlU2VsZWN0aW9uV2l0aEV4
dGVudFBvaW50Il9zKSk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpV
cGRhdGVTZWxlY3Rpb25XaXRoRXh0ZW50UG9pbnQocG9pbnQsIGlzSW50ZXJhY3RpbmdXaXRoRm9j
dXNlZEVsZW1lbnQsIHJlc3BlY3RTZWxlY3Rpb25BbmNob3IsIGNhbGxiYWNrSUQpLCBtX3dlYlBh
Z2VJRCk7Ci0gICAgCisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpV
cGRhdGVTZWxlY3Rpb25XaXRoRXh0ZW50UG9pbnQocG9pbnQsIGlzSW50ZXJhY3RpbmdXaXRoRm9j
dXNlZEVsZW1lbnQsIHJlc3BlY3RTZWxlY3Rpb25BbmNob3IpLCBXVEZNb3ZlKGNhbGxiYWNrKSk7
CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVTZWxlY3Rpb25XaXRoRXh0ZW50UG9pbnRB
bmRCb3VuZGFyeShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgV2ViQ29yZTo6VGV4dEdy
YW51bGFyaXR5IGdyYW51bGFyaXR5LCBib29sIGlzSW50ZXJhY3RpbmdXaXRoRm9jdXNlZEVsZW1l
bnQsIFdURjo6RnVuY3Rpb248dm9pZCh1aW50NjRfdCwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYg
Y2FsbGJhY2tGdW5jdGlvbikKK3ZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVTZWxlY3Rpb25XaXRo
RXh0ZW50UG9pbnRBbmRCb3VuZGFyeShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgV2Vi
Q29yZTo6VGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCBib29sIGlzSW50ZXJhY3RpbmdXaXRo
Rm9jdXNlZEVsZW1lbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY2FsbGJhY2sp
CiB7Ci0gICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKSB7Ci0gICAgICAgIGNhbGxiYWNrRnVu
Y3Rpb24oMCwgQ2FsbGJhY2tCYXNlOjpFcnJvcjo6VW5rbm93bik7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0gICAgCi0gICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1v
dmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFj
dGl2aXR5KCJXZWJQYWdlUHJveHk6OnVwZGF0ZVNlbGVjdGlvbldpdGhFeHRlbnRQb2ludEFuZEJv
dW5kYXJ5Il9zKSk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVcGRh
dGVTZWxlY3Rpb25XaXRoRXh0ZW50UG9pbnRBbmRCb3VuZGFyeShwb2ludCwgZ3JhbnVsYXJpdHks
IGlzSW50ZXJhY3RpbmdXaXRoRm9jdXNlZEVsZW1lbnQsIGNhbGxiYWNrSUQpLCBtX3dlYlBhZ2VJ
RCk7Ci0gICAgCisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpVcGRh
dGVTZWxlY3Rpb25XaXRoRXh0ZW50UG9pbnRBbmRCb3VuZGFyeShwb2ludCwgZ3JhbnVsYXJpdHks
IGlzSW50ZXJhY3RpbmdXaXRoRm9jdXNlZEVsZW1lbnQpLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiB9
CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0RGljdGF0aW9uQ29udGV4dChDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYp
PiYmIGNhbGxiYWNrRnVuY3Rpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9tYWMvV0tUZXh0RmluZGVyQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFj
L1dLVGV4dEZpbmRlckNsaWVudC5tbQppbmRleCAyMmIzZTlmMDIxZGFkYzU5NmQ1ODk2ZDM2NmRl
YmE1MjAwODkxNWRhLi42YTdlNjIwN2VkNThjYjgzZTg2Y2NiMzMzYjE4NmM4ZjgxM2E0YWMzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tUZXh0RmluZGVyQ2xpZW50
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS1RleHRGaW5kZXJDbGllbnQu
bW0KQEAgLTE5Niw4ICsxOTYsOCBAQCBwcml2YXRlOgogICAgICAgICBpZiAoW21hdGNoIGlzS2lu
ZE9mQ2xhc3M6V0tUZXh0RmluZGVyTWF0Y2guY2xhc3NdKQogICAgICAgICAgICAgbWF0Y2hJbmRp
Y2VzLnVuY2hlY2tlZEFwcGVuZChbKFdLVGV4dEZpbmRlck1hdGNoICopbWF0Y2ggaW5kZXhdKTsK
ICAgICB9Ci0gICAgX3BhZ2UtPnJlcGxhY2VNYXRjaGVzKFdURk1vdmUobWF0Y2hJbmRpY2VzKSwg
cmVwbGFjZW1lbnRUZXh0LCBzZWxlY3Rpb25Pbmx5LCBbY29sbGVjdG9yID0gbWFrZUJsb2NrUHRy
KHJlc3VsdENvbGxlY3RvcildICh1aW50NjRfdCBudW1iZXJPZlJlcGxhY2VtZW50cywgYXV0byBl
cnJvcikgewotICAgICAgICBjb2xsZWN0b3IoZXJyb3IgPT0gV2ViS2l0OjpDYWxsYmFja0Jhc2U6
OkVycm9yOjpOb25lID8gbnVtYmVyT2ZSZXBsYWNlbWVudHMgOiAwKTsKKyAgICBfcGFnZS0+cmVw
bGFjZU1hdGNoZXMoV1RGTW92ZShtYXRjaEluZGljZXMpLCByZXBsYWNlbWVudFRleHQsIHNlbGVj
dGlvbk9ubHksIFtjb2xsZWN0b3IgPSBtYWtlQmxvY2tQdHIocmVzdWx0Q29sbGVjdG9yKV0gKHVp
bnQ2NF90IG51bWJlck9mUmVwbGFjZW1lbnRzKSB7CisgICAgICAgIGNvbGxlY3RvcihudW1iZXJP
ZlJlcGxhY2VtZW50cyk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggMjczNTBhYWJjOTlmNjdjYmUzODUzNDg4OTE3ZTgy
NzY0ZGViZGZlNC4uNmZmMDY5MDk0OWEyMDRhNjBlMTAzNDEwMTZlNDg5MzcxNjI0YmVjMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTQ0MTEs
MTAgKzQ0MTEsMTAgQEAgdm9pZCBXZWJQYWdlOjpjb3VudFN0cmluZ01hdGNoZXMoY29uc3QgU3Ry
aW5nJiBzdHJpbmcsIE9wdGlvblNldDxGaW5kT3B0aW9ucz4gb3AKICAgICBmaW5kQ29udHJvbGxl
cigpLmNvdW50U3RyaW5nTWF0Y2hlcyhzdHJpbmcsIG9wdGlvbnMsIG1heE1hdGNoQ291bnQpOwog
fQogCi12b2lkIFdlYlBhZ2U6OnJlcGxhY2VNYXRjaGVzKGNvbnN0IFZlY3Rvcjx1aW50MzJfdD4m
IG1hdGNoSW5kaWNlcywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFRleHQsIGJvb2wgc2VsZWN0
aW9uT25seSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjpyZXBsYWNlTWF0
Y2hlcyhjb25zdCBWZWN0b3I8dWludDMyX3Q+JiBtYXRjaEluZGljZXMsIGNvbnN0IFN0cmluZyYg
cmVwbGFjZW1lbnRUZXh0LCBib29sIHNlbGVjdGlvbk9ubHksIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQodWludDY0X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGF1dG8gbnVtYmVyT2ZS
ZXBsYWNlbWVudHMgPSBmaW5kQ29udHJvbGxlcigpLnJlcGxhY2VNYXRjaGVzKG1hdGNoSW5kaWNl
cywgcmVwbGFjZW1lbnRUZXh0LCBzZWxlY3Rpb25Pbmx5KTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OlVuc2lnbmVkQ2FsbGJhY2sobnVtYmVyT2ZSZXBsYWNlbWVudHMsIGNhbGxi
YWNrSUQpKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihudW1iZXJPZlJlcGxhY2VtZW50cyk7CiB9
CiAKIHZvaWQgV2ViUGFnZTo6ZGlkQ2hhbmdlU2VsZWN0ZWRJbmRleEZvckFjdGl2ZVBvcHVwTWVu
dShpbnQzMl90IG5ld0luZGV4KQpAQCAtNTU4NywxNCArNTU4NywxNCBAQCB2b2lkIFdlYlBhZ2U6
OmdldFNlbGVjdGVkUmFuZ2VBc3luYyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEVkaXRp
bmdSYW5nZSYpPgogICAgIGNvbXBsZXRpb25IYW5kbGVyKEVkaXRpbmdSYW5nZTo6ZnJvbVJhbmdl
KGZyYW1lLCBmcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS50b05vcm1hbGl6ZWRSYW5nZSgp
KSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6Y2hhcmFjdGVySW5kZXhGb3JQb2ludEFzeW5jKGNvbnN0
IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQordm9pZCBX
ZWJQYWdlOjpjaGFyYWN0ZXJJbmRleEZvclBvaW50QXN5bmMoY29uc3QgV2ViQ29yZTo6SW50UG9p
bnQmIHBvaW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90KT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKICAgICBjb25zdGV4cHIgT3B0aW9uU2V0PEhpdFRlc3RSZXF1ZXN0OjpSZXF1
ZXN0VHlwZT4gaGl0VHlwZSB7IEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSwgSGl0VGVzdFJlcXVl
c3Q6OkFjdGl2ZSwgSGl0VGVzdFJlcXVlc3Q6OkRpc2FsbG93VXNlckFnZW50U2hhZG93Q29udGVu
dCwgIEhpdFRlc3RSZXF1ZXN0OjpBbGxvd0NoaWxkRnJhbWVDb250ZW50IH07CiAgICAgYXV0byBy
ZXN1bHQgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLmV2ZW50SGFuZGxlcigpLmhpdFRlc3RSZXN1bHRB
dFBvaW50KHBvaW50LCBoaXRUeXBlKTsKICAgICBhdXRvJiBmcmFtZSA9IHJlc3VsdC5pbm5lck5v
blNoYXJlZE5vZGUoKSA/ICpyZXN1bHQuaW5uZXJOb2RlRnJhbWUoKSA6IG1fcGFnZS0+Zm9jdXND
b250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAgICAgYXV0byByYW5nZSA9IGZyYW1l
LnJhbmdlRm9yUG9pbnQocmVzdWx0LnJvdW5kZWRQb2ludEluSW5uZXJOb2RlRnJhbWUoKSk7CiAg
ICAgYXV0byBlZGl0aW5nUmFuZ2UgPSBFZGl0aW5nUmFuZ2U6OmZyb21SYW5nZShmcmFtZSwgcmFu
Z2UpOwotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6VW5zaWduZWRDYWxsYmFjayhl
ZGl0aW5nUmFuZ2UubG9jYXRpb24sIGNhbGxiYWNrSUQpKTsKKyAgICBjb21wbGV0aW9uSGFuZGxl
cihlZGl0aW5nUmFuZ2UubG9jYXRpb24pOwogfQogCiB2b2lkIFdlYlBhZ2U6OmZpcnN0UmVjdEZv
ckNoYXJhY3RlclJhbmdlQXN5bmMoY29uc3QgRWRpdGluZ1JhbmdlJiBlZGl0aW5nUmFuZ2UsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IEVkaXRp
bmdSYW5nZSYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDZjYWYxZDU0ZTc3YWMxZjI2NzNhMWE5YzdiYmM3MzRk
YWQ0ZGNjMzIuLmNhM2YzYzA1NzU4NGJiMjQyY2YyMmNiN2RlYzUwYjEwNzU0NmY2ZGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTc0Miw5ICs3NDIs
OSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZWxlY3RQb3NpdGlvbkF0Qm91bmRhcnlXaXRoRGlyZWN0
aW9uKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgV2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5LCBX
ZWJDb3JlOjpTZWxlY3Rpb25EaXJlY3Rpb24sIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhGb2N1c2Vk
RWxlbWVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIG1vdmVTZWxl
Y3Rpb25BdEJvdW5kYXJ5V2l0aERpcmVjdGlvbihXZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHksIFdl
YkNvcmU6OlNlbGVjdGlvbkRpcmVjdGlvbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
ICAgICB2b2lkIHNlbGVjdFBvc2l0aW9uQXRQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYs
IGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhGb2N1c2VkRWxlbWVudCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmKTsKLSAgICB2b2lkIGJlZ2luU2VsZWN0aW9uSW5EaXJlY3Rpb24oV2ViQ29yZTo6
U2VsZWN0aW9uRGlyZWN0aW9uLCBDYWxsYmFja0lEKTsKLSAgICB2b2lkIHVwZGF0ZVNlbGVjdGlv
bldpdGhFeHRlbnRQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIGJvb2wgaXNJbnRlcmFj
dGluZ1dpdGhGb2N1c2VkRWxlbWVudCwgUmVzcGVjdFNlbGVjdGlvbkFuY2hvciwgQ2FsbGJhY2tJ
RCk7Ci0gICAgdm9pZCB1cGRhdGVTZWxlY3Rpb25XaXRoRXh0ZW50UG9pbnRBbmRCb3VuZGFyeShj
b25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIFdlYkNvcmU6OlRleHRHcmFudWxhcml0eSwgYm9vbCBp
c0ludGVyYWN0aW5nV2l0aEZvY3VzZWRFbGVtZW50LCBDYWxsYmFja0lEKTsKKyAgICB2b2lkIGJl
Z2luU2VsZWN0aW9uSW5EaXJlY3Rpb24oV2ViQ29yZTo6U2VsZWN0aW9uRGlyZWN0aW9uLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lkIHVwZGF0ZVNlbGVjdGlvbldp
dGhFeHRlbnRQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIGJvb2wgaXNJbnRlcmFjdGlu
Z1dpdGhGb2N1c2VkRWxlbWVudCwgUmVzcGVjdFNlbGVjdGlvbkFuY2hvciwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCB1cGRhdGVTZWxlY3Rpb25XaXRoRXh0ZW50
UG9pbnRBbmRCb3VuZGFyeShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIFdlYkNvcmU6OlRleHRH
cmFudWxhcml0eSwgYm9vbCBpc0ludGVyYWN0aW5nV2l0aEZvY3VzZWRFbGVtZW50LCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKIAogICAgIHZvaWQgcmVxdWVzdERpY3RhdGlvbkNv
bnRleHQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcm
LCBjb25zdCBTdHJpbmcmKT4mJik7CiAgICAgdm9pZCByZXBsYWNlRGljdGF0ZWRUZXh0KGNvbnN0
IFN0cmluZyYgb2xkVGV4dCwgY29uc3QgU3RyaW5nJiBuZXdUZXh0KTsKQEAgLTg5Myw3ICs4OTMs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBoYXNNYXJrZWRUZXh0KENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCk+JiYpOwogICAgIHZvaWQgZ2V0TWFya2VkUmFuZ2VBc3luYyhDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGNvbnN0IEVkaXRpbmdSYW5nZSYpPiYmKTsKICAgICB2b2lkIGdldFNlbGVjdGVk
UmFuZ2VBc3luYyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEVkaXRpbmdSYW5nZSYpPiYm
KTsKLSAgICB2b2lkIGNoYXJhY3RlckluZGV4Rm9yUG9pbnRBc3luYyhjb25zdCBXZWJDb3JlOjpJ
bnRQb2ludCYsIENhbGxiYWNrSUQpOworICAgIHZvaWQgY2hhcmFjdGVySW5kZXhGb3JQb2ludEFz
eW5jKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50
NjRfdCk+JiYpOwogICAgIHZvaWQgZmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhjb25z
dCBFZGl0aW5nUmFuZ2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdlYkNvcmU6Oklu
dFJlY3QmLCBjb25zdCBFZGl0aW5nUmFuZ2UmKT4mJik7CiAgICAgdm9pZCBzZXRDb21wb3NpdGlv
bkFzeW5jKGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvbXBvc2l0
aW9uVW5kZXJsaW5lPiYsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb21wb3NpdGlvbkhpZ2hsaWdo
dD4mLCBjb25zdCBFZGl0aW5nUmFuZ2UmIHNlbGVjdGlvblJhbmdlLCBjb25zdCBFZGl0aW5nUmFu
Z2UmIHJlcGxhY2VtZW50UmFuZ2UpOwogICAgIHZvaWQgY29uZmlybUNvbXBvc2l0aW9uQXN5bmMo
KTsKQEAgLTE2NDgsNyArMTY0OCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBpbmRpY2F0ZUZpbmRN
YXRjaCh1aW50MzJfdCBtYXRjaEluZGV4KTsKICAgICB2b2lkIGhpZGVGaW5kVUkoKTsKICAgICB2
b2lkIGNvdW50U3RyaW5nTWF0Y2hlcyhjb25zdCBTdHJpbmcmLCBPcHRpb25TZXQ8RmluZE9wdGlv
bnM+LCB1aW50MzJfdCBtYXhNYXRjaENvdW50KTsKLSAgICB2b2lkIHJlcGxhY2VNYXRjaGVzKGNv
bnN0IFZlY3Rvcjx1aW50MzJfdD4mIG1hdGNoSW5kaWNlcywgY29uc3QgU3RyaW5nJiByZXBsYWNl
bWVudFRleHQsIGJvb2wgc2VsZWN0aW9uT25seSwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCByZXBs
YWNlTWF0Y2hlcyhjb25zdCBWZWN0b3I8dWludDMyX3Q+JiBtYXRjaEluZGljZXMsIGNvbnN0IFN0
cmluZyYgcmVwbGFjZW1lbnRUZXh0LCBib29sIHNlbGVjdGlvbk9ubHksIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQodWludDY0X3QpPiYmKTsKIAogI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykK
ICAgICB2b2lkIHNlbmRWaWV3cG9ydEF0dHJpYnV0ZXNDaGFuZ2VkKGNvbnN0IFdlYkNvcmU6OlZp
ZXdwb3J0QXJndW1lbnRzJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCA4NWEzZGFkOTc1ZTlhMGYyMzdjZjE4NzRh
OWQ2ZDFkODRlYWI5ZDRkLi41ZTFhMTVmNDMyNmQ2Mjc0Y2MyODJlOTA4NTRkZDQyYjM0NmMwOWU4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1l
c3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
bWVzc2FnZXMuaW4KQEAgLTc1LDkgKzc1LDkgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lS
ZWNlaXZlciB7CiAgICAgU2VsZWN0UG9zaXRpb25BdEJvdW5kYXJ5V2l0aERpcmVjdGlvbihXZWJD
b3JlOjpJbnRQb2ludCBwb2ludCwgZW51bTp1aW50OF90IFdlYkNvcmU6OlRleHRHcmFudWxhcml0
eSBncmFudWxhcml0eSwgZW51bTp1aW50OF90IFdlYkNvcmU6OlNlbGVjdGlvbkRpcmVjdGlvbiBk
aXJlY3Rpb24sIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhGb2N1c2VkRWxlbWVudCkgLT4gKCkgQXN5
bmMKICAgICBNb3ZlU2VsZWN0aW9uQXRCb3VuZGFyeVdpdGhEaXJlY3Rpb24oZW51bTp1aW50OF90
IFdlYkNvcmU6OlRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSwgZW51bTp1aW50OF90IFdlYkNv
cmU6OlNlbGVjdGlvbkRpcmVjdGlvbiBkaXJlY3Rpb24pIC0+ICgpIEFzeW5jCiAgICAgU2VsZWN0
UG9zaXRpb25BdFBvaW50KFdlYkNvcmU6OkludFBvaW50IHBvaW50LCBib29sIGlzSW50ZXJhY3Rp
bmdXaXRoRm9jdXNlZEVsZW1lbnQpIC0+ICgpIEFzeW5jCi0gICAgQmVnaW5TZWxlY3Rpb25JbkRp
cmVjdGlvbihlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6U2VsZWN0aW9uRGlyZWN0aW9uIGRpcmVjdGlv
biwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCi0gICAgVXBkYXRlU2VsZWN0aW9uV2l0
aEV4dGVudFBvaW50KFdlYkNvcmU6OkludFBvaW50IHBvaW50LCBib29sIGlzSW50ZXJhY3RpbmdX
aXRoRm9jdXNlZEVsZW1lbnQsIGVudW06Ym9vbCBXZWJLaXQ6OlJlc3BlY3RTZWxlY3Rpb25BbmNo
b3IgcmVzcGVjdFNlbGVjdGlvbkFuY2hvciwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQp
Ci0gICAgVXBkYXRlU2VsZWN0aW9uV2l0aEV4dGVudFBvaW50QW5kQm91bmRhcnkoV2ViQ29yZTo6
SW50UG9pbnQgcG9pbnQsIGVudW06dWludDhfdCBXZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHkgZ3Jh
bnVsYXJpdHksIGJvb2wgaXNJbnRlcmFjdGluZ1dpdGhGb2N1c2VkRWxlbWVudCwgV2ViS2l0OjpD
YWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgQmVnaW5TZWxlY3Rpb25JbkRpcmVjdGlvbihlbnVt
OnVpbnQ4X3QgV2ViQ29yZTo6U2VsZWN0aW9uRGlyZWN0aW9uIGRpcmVjdGlvbikgLT4gKGJvb2wg
ZW5kSXNNb3ZpbmcpIEFzeW5jCisgICAgVXBkYXRlU2VsZWN0aW9uV2l0aEV4dGVudFBvaW50KFdl
YkNvcmU6OkludFBvaW50IHBvaW50LCBib29sIGlzSW50ZXJhY3RpbmdXaXRoRm9jdXNlZEVsZW1l
bnQsIGVudW06Ym9vbCBXZWJLaXQ6OlJlc3BlY3RTZWxlY3Rpb25BbmNob3IgcmVzcGVjdFNlbGVj
dGlvbkFuY2hvcikgLT4gKGJvb2wgZW5kSXNNb3ZpbmcpIEFzeW5jCisgICAgVXBkYXRlU2VsZWN0
aW9uV2l0aEV4dGVudFBvaW50QW5kQm91bmRhcnkoV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIGVu
dW06dWludDhfdCBXZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIGJvb2wgaXNJ
bnRlcmFjdGluZ1dpdGhGb2N1c2VkRWxlbWVudCkgLT4gKGJvb2wgZW5kSXNNb3ZpbmcpIEFzeW5j
CiAgICAgUmVxdWVzdERpY3RhdGlvbkNvbnRleHQoKSAtPiAoU3RyaW5nIHNlbGVjdGVkVGV4dCwg
U3RyaW5nIHRleHRCZWZvcmUsIFN0cmluZyB0ZXh0QWZ0ZXIpIEFzeW5jCiAgICAgUmVwbGFjZURp
Y3RhdGVkVGV4dChTdHJpbmcgb2xkVGV4dCwgU3RyaW5nIG5ld1RleHQpCiAgICAgUmVwbGFjZVNl
bGVjdGVkVGV4dChTdHJpbmcgb2xkVGV4dCwgU3RyaW5nIG5ld1RleHQpCkBAIC0zMDYsNyArMzA2
LDcgQEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFuZChlbnVtOnVpbnQ4X3QgV2ViS2l0
OjpTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUKICAgICBJbmRpY2F0ZUZpbmRNYXRjaCh1aW50
MzJfdCBtYXRjaEluZGV4KQogICAgIEhpZGVGaW5kVUkoKQogICAgIENvdW50U3RyaW5nTWF0Y2hl
cyhTdHJpbmcgc3RyaW5nLCBPcHRpb25TZXQ8V2ViS2l0OjpGaW5kT3B0aW9ucz4gZmluZE9wdGlv
bnMsIHVuc2lnbmVkIG1heE1hdGNoQ291bnQpCi0gICAgUmVwbGFjZU1hdGNoZXMoVmVjdG9yPHVp
bnQzMl90PiBtYXRjaEluZGljZXMsIFN0cmluZyByZXBsYWNlbWVudFRleHQsIGJvb2wgc2VsZWN0
aW9uT25seSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisgICAgUmVwbGFjZU1hdGNo
ZXMoVmVjdG9yPHVpbnQzMl90PiBtYXRjaEluZGljZXMsIFN0cmluZyByZXBsYWNlbWVudFRleHQs
IGJvb2wgc2VsZWN0aW9uT25seSkgLT4gKHVpbnQ2NF90IG51bWJlck9mUmVwbGFjZW1lbnRzKSBB
c3luYwogICAgIAogICAgIEFkZE1JTUVUeXBlV2l0aEN1c3RvbUNvbnRlbnRQcm92aWRlcihTdHJp
bmcgbWltZVR5cGUpCiAKQEAgLTQ1Nyw3ICs0NTcsNyBAQCBHZW5lcmF0ZVN5bnRoZXRpY0VkaXRp
bmdDb21tYW5kKGVudW06dWludDhfdCBXZWJLaXQ6OlN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlw
ZQogICAgIEhhc01hcmtlZFRleHQoKSAtPiAoYm9vbCBoYXNNYXJrZWRUZXh0KSBBc3luYwogICAg
IEdldE1hcmtlZFJhbmdlQXN5bmMoKSAtPiAoc3RydWN0IFdlYktpdDo6RWRpdGluZ1JhbmdlIHJh
bmdlKSBBc3luYwogICAgIEdldFNlbGVjdGVkUmFuZ2VBc3luYygpIC0+IChzdHJ1Y3QgV2ViS2l0
OjpFZGl0aW5nUmFuZ2UgcmFuZ2UpIEFzeW5jCi0gICAgQ2hhcmFjdGVySW5kZXhGb3JQb2ludEFz
eW5jKFdlYkNvcmU6OkludFBvaW50IHBvaW50LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJ
RCk7CisgICAgQ2hhcmFjdGVySW5kZXhGb3JQb2ludEFzeW5jKFdlYkNvcmU6OkludFBvaW50IHBv
aW50KSAtPiAodWludDY0X3QgbG9jYXRpb24pIEFzeW5jCiAgICAgRmlyc3RSZWN0Rm9yQ2hhcmFj
dGVyUmFuZ2VBc3luYyhzdHJ1Y3QgV2ViS2l0OjpFZGl0aW5nUmFuZ2UgcmFuZ2UpIC0+IChXZWJD
b3JlOjpJbnRSZWN0IHJlY3QsIHN0cnVjdCBXZWJLaXQ6OkVkaXRpbmdSYW5nZSBhY3R1YWxSYW5n
ZSkgQXN5bmMKICAgICBTZXRDb21wb3NpdGlvbkFzeW5jKFN0cmluZyB0ZXh0LCBWZWN0b3I8V2Vi
Q29yZTo6Q29tcG9zaXRpb25VbmRlcmxpbmU+IHVuZGVybGluZXMsIFZlY3RvcjxXZWJDb3JlOjpD
b21wb3NpdGlvbkhpZ2hsaWdodD4gaGlnaGxpZ2h0cywgc3RydWN0IFdlYktpdDo6RWRpdGluZ1Jh
bmdlIHNlbGVjdGlvblJhbmdlLCBzdHJ1Y3QgV2ViS2l0OjpFZGl0aW5nUmFuZ2UgcmVwbGFjZW1l
bnRSYW5nZSkKICAgICBDb25maXJtQ29tcG9zaXRpb25Bc3luYygpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4IGVlMzc3NTAw
ODY3M2EyZjgyNGZkNjAyZmVkYmQxM2Q1NTMzOTNhZGUuLjI0NWU0OTkzZGRlNjE0YWUwZjIxZmY3
ZTQ5ZmNmYjg4MWU3MjRiZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC0yMTU2LDIyICsyMTU2LDIwIEBAIHZvaWQgV2Vi
UGFnZTo6c2VsZWN0VGV4dFdpdGhHcmFudWxhcml0eUF0UG9pbnQoY29uc3QgV2ViQ29yZTo6SW50
UG9pbnQmIHBvaW50LCBXCiAKIH0KIAotdm9pZCBXZWJQYWdlOjpiZWdpblNlbGVjdGlvbkluRGly
ZWN0aW9uKFdlYkNvcmU6OlNlbGVjdGlvbkRpcmVjdGlvbiBkaXJlY3Rpb24sIENhbGxiYWNrSUQg
Y2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6YmVnaW5TZWxlY3Rpb25JbkRpcmVjdGlvbihXZWJD
b3JlOjpTZWxlY3Rpb25EaXJlY3Rpb24gZGlyZWN0aW9uLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIG1fc2VsZWN0aW9uQW5jaG9yID0g
ZGlyZWN0aW9uID09IFNlbGVjdGlvbkRpcmVjdGlvbjo6TGVmdCA/IFN0YXJ0IDogRW5kOwotICAg
IHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6VW5zaWduZWRDYWxsYmFjayhtX3NlbGVjdGlv
bkFuY2hvciA9PSBTdGFydCwgY2FsbGJhY2tJRCkpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKG1f
c2VsZWN0aW9uQW5jaG9yID09IFN0YXJ0KTsKIH0KIAotdm9pZCBXZWJQYWdlOjp1cGRhdGVTZWxl
Y3Rpb25XaXRoRXh0ZW50UG9pbnRBbmRCb3VuZGFyeShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYg
cG9pbnQsIFdlYkNvcmU6OlRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSwgYm9vbCBpc0ludGVy
YWN0aW5nV2l0aEZvY3VzZWRFbGVtZW50LCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCit2b2lkIFdl
YlBhZ2U6OnVwZGF0ZVNlbGVjdGlvbldpdGhFeHRlbnRQb2ludEFuZEJvdW5kYXJ5KGNvbnN0IFdl
YkNvcmU6OkludFBvaW50JiBwb2ludCwgV2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5IGdyYW51bGFy
aXR5LCBib29sIGlzSW50ZXJhY3RpbmdXaXRoRm9jdXNlZEVsZW1lbnQsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCk+JiYgY2FsbGJhY2spCiB7CiAgICAgYXV0byYgZnJhbWUgPSBtX3BhZ2Ut
PmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOwogICAgIGF1dG8gcG9zaXRp
b24gPSB2aXNpYmxlUG9zaXRpb25JbkZvY3VzZWROb2RlRm9yUG9pbnQoZnJhbWUsIHBvaW50LCBp
c0ludGVyYWN0aW5nV2l0aEZvY3VzZWRFbGVtZW50KTsKICAgICBhdXRvIG5ld1JhbmdlID0gcmFu
Z2VGb3JHcmFudWxhcml0eUF0UG9pbnQoZnJhbWUsIHBvaW50LCBncmFudWxhcml0eSwgaXNJbnRl
cmFjdGluZ1dpdGhGb2N1c2VkRWxlbWVudCk7CiAgICAgCi0gICAgaWYgKHBvc2l0aW9uLmlzTnVs
bCgpIHx8ICFtX2luaXRpYWxTZWxlY3Rpb24gfHwgIW5ld1JhbmdlKSB7Ci0gICAgICAgIHNlbmQo
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6VW5zaWduZWRDYWxsYmFjayhmYWxzZSwgY2FsbGJhY2tJ
RCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIGlmIChwb3NpdGlvbi5pc051bGwoKSB8
fCAhbV9pbml0aWFsU2VsZWN0aW9uIHx8ICFuZXdSYW5nZSkKKyAgICAgICAgcmV0dXJuIGNhbGxi
YWNrKGZhbHNlKTsKIAogICAgIGF1dG8gaW5pdGlhbFNlbGVjdGlvblN0YXJ0UG9zaXRpb24gPSBt
YWtlRGVwcmVjYXRlZExlZ2FjeVBvc2l0aW9uKG1faW5pdGlhbFNlbGVjdGlvbi0+c3RhcnQpOwog
ICAgIGF1dG8gaW5pdGlhbFNlbGVjdGlvbkVuZFBvc2l0aW9uID0gbWFrZURlcHJlY2F0ZWRMZWdh
Y3lQb3NpdGlvbihtX2luaXRpYWxTZWxlY3Rpb24tPmVuZCk7CkBAIC0yMTg2LDE4ICsyMTg0LDE2
IEBAIHZvaWQgV2ViUGFnZTo6dXBkYXRlU2VsZWN0aW9uV2l0aEV4dGVudFBvaW50QW5kQm91bmRh
cnkoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmCiAgICAgaWYgKGF1dG8gcmFuZ2UgPSBtYWtlU2lt
cGxlUmFuZ2Uoc2VsZWN0aW9uU3RhcnQsIHNlbGVjdGlvbkVuZCkpCiAgICAgICAgIGZyYW1lLnNl
bGVjdGlvbigpLnNldFNlbGVjdGVkUmFuZ2UocmFuZ2UsIEFmZmluaXR5OjpVcHN0cmVhbSwgV2Vi
Q29yZTo6RnJhbWVTZWxlY3Rpb246OlNob3VsZENsb3NlVHlwaW5nOjpZZXMsIFVzZXJUcmlnZ2Vy
ZWQpOwogCi0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpVbnNpZ25lZENhbGxiYWNr
KHNlbGVjdGlvblN0YXJ0ID09IGluaXRpYWxTZWxlY3Rpb25TdGFydFBvc2l0aW9uLCBjYWxsYmFj
a0lEKSk7CisgICAgY2FsbGJhY2soc2VsZWN0aW9uU3RhcnQgPT0gaW5pdGlhbFNlbGVjdGlvblN0
YXJ0UG9zaXRpb24pOwogfQogCi12b2lkIFdlYlBhZ2U6OnVwZGF0ZVNlbGVjdGlvbldpdGhFeHRl
bnRQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIGJvb2wgaXNJbnRlcmFjdGlu
Z1dpdGhGb2N1c2VkRWxlbWVudCwgUmVzcGVjdFNlbGVjdGlvbkFuY2hvciByZXNwZWN0U2VsZWN0
aW9uQW5jaG9yLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OnVwZGF0ZVNl
bGVjdGlvbldpdGhFeHRlbnRQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIGJv
b2wgaXNJbnRlcmFjdGluZ1dpdGhGb2N1c2VkRWxlbWVudCwgUmVzcGVjdFNlbGVjdGlvbkFuY2hv
ciByZXNwZWN0U2VsZWN0aW9uQW5jaG9yLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYm
IGNhbGxiYWNrKQogewogICAgIGF1dG8mIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIo
KS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKICAgICBhdXRvIHBvc2l0aW9uID0gdmlzaWJsZVBvc2l0
aW9uSW5Gb2N1c2VkTm9kZUZvclBvaW50KGZyYW1lLCBwb2ludCwgaXNJbnRlcmFjdGluZ1dpdGhG
b2N1c2VkRWxlbWVudCk7CiAKLSAgICBpZiAocG9zaXRpb24uaXNOdWxsKCkpIHsKLSAgICAgICAg
c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpVbnNpZ25lZENhbGxiYWNrKGZhbHNlLCBjYWxs
YmFja0lEKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKHBvc2l0aW9uLmlzTnVs
bCgpKQorICAgICAgICByZXR1cm4gY2FsbGJhY2soZmFsc2UpOwogCiAgICAgVmlzaWJsZVBvc2l0
aW9uIHNlbGVjdGlvblN0YXJ0OwogICAgIFZpc2libGVQb3NpdGlvbiBzZWxlY3Rpb25FbmQ7CkBA
IC0yMjM1LDcgKzIyMzEsNyBAQCB2b2lkIFdlYlBhZ2U6OnVwZGF0ZVNlbGVjdGlvbldpdGhFeHRl
bnRQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIGJvbwogICAgIGlmIChhdXRv
IHJhbmdlID0gbWFrZVNpbXBsZVJhbmdlKHNlbGVjdGlvblN0YXJ0LCBzZWxlY3Rpb25FbmQpKQog
ICAgICAgICBmcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3RlZFJhbmdlKHJhbmdlLCBBZmZpbml0
eTo6VXBzdHJlYW0sIFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpTaG91bGRDbG9zZVR5cGluZzo6
WWVzLCBVc2VyVHJpZ2dlcmVkKTsKIAotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
VW5zaWduZWRDYWxsYmFjayhtX3NlbGVjdGlvbkFuY2hvciA9PSBTdGFydCwgY2FsbGJhY2tJRCkp
OworICAgIGNhbGxiYWNrKG1fc2VsZWN0aW9uQW5jaG9yID09IFN0YXJ0KTsKIH0KIAogdm9pZCBX
ZWJQYWdlOjpyZXF1ZXN0RGljdGF0aW9uQ29udGV4dChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQo=
</data>
<flag name="review"
          id="438093"
          type_id="1"
          status="+"
          setter="cdumez"
    />
          </attachment>
      

    </bug>

</bugzilla>