<?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>204265</bug_id>
          
          <creation_ts>2019-11-15 17:01:42 -0800</creation_ts>
          <short_desc>Add SPI on WKURLSchemeTask to access WKFrameInfo of originating frame</short_desc>
          <delta_ts>2020-01-21 13:26:16 -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>beidson</cc>
    
    <cc>commit-queue</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1590758</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-11-15 17:01:42 -0800</bug_when>
    <thetext>Add SPI on WKURLSchemeTask to access WKFrameInfo of originating frame</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1590761</commentid>
    <comment_count>1</comment_count>
      <attachid>383669</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-11-15 17:06:30 -0800</bug_when>
    <thetext>Created attachment 383669
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1590767</commentid>
    <comment_count>2</comment_count>
      <attachid>383672</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-11-15 17:18:24 -0800</bug_when>
    <thetext>Created attachment 383672
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1591096</commentid>
    <comment_count>3</comment_count>
      <attachid>383755</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-11-18 09:52:47 -0800</bug_when>
    <thetext>Created attachment 383755
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1609212</commentid>
    <comment_count>4</comment_count>
      <attachid>388336</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-01-21 12:40:11 -0800</bug_when>
    <thetext>Created attachment 388336
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1609238</commentid>
    <comment_count>5</comment_count>
      <attachid>388336</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-21 13:25:38 -0800</bug_when>
    <thetext>Comment on attachment 388336
Patch

Clearing flags on attachment: 388336

Committed r254877: &lt;https://trac.webkit.org/changeset/254877&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1609239</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-21 13:25:40 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1609240</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-01-21 13:26:16 -0800</bug_when>
    <thetext>&lt;rdar://problem/58771304&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>383669</attachid>
            <date>2019-11-15 17:06:30 -0800</date>
            <delta_ts>2019-11-15 17:18:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-204265-20191115170630.patch</filename>
            <type>text/plain</type>
            <size>25841</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTI0OTgpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ1IEBACisyMDE5LTExLTE1ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFNQSSBvbiBX
S1VSTFNjaGVtZVRhc2sgdG8gYWNjZXNzIFdLRnJhbWVJbmZvIG9mIG9yaWdpbmF0aW5nIGZyYW1l
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDQyNjUK
KyAgICAgICAgPHJkYXI6Ly81NzE5Mzg4Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBDb3ZlcmVkIGJ5IEFQSSB0ZXN0cy4KKworICAgICAgICAqIFNo
YXJlZC9VUkxTY2hlbWVUYXNrUGFyYW1ldGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlVSTFNj
aGVtZVRhc2tQYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpVUkxT
Y2hlbWVUYXNrUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvVVJMU2NoZW1l
VGFza1BhcmFtZXRlcnMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLVVJMU2No
ZW1lVGFzay5tbToKKyAgICAgICAgKC1bV0tVUkxTY2hlbWVUYXNrSW1wbCBfZnJhbWVdKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLVVJMU2NoZW1lVGFza1ByaXZhdGUuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpzdGFydFVSTFNjaGVtZVRhc2tTaGFyZWQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmxvYWRTeW5jaHJvbm91c1VSTFNjaGVtZVRhc2spOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVVJM
U2NoZW1lSGFuZGxlcjo6c3RhcnRUYXNrKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2No
ZW1lSGFuZGxlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lVGFzazo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YktpdDo6V2ViVVJMU2NoZW1lVGFzazo6V2ViVVJMU2NoZW1lVGFzayk6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaDoKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1l
VGFzazo6ZnJhbWVJbmZvIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2Vi
TG9hZGVyU3RyYXRlZ3kuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJMb2FkZXJTdHJhdGVneTo6
dHJ5TG9hZGluZ1VzaW5nVVJMU2NoZW1lSGFuZGxlcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlVSTFNjaGVtZUhhbmRsZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlVSTFNjaGVtZUhhbmRsZXJQcm94eTo6c3RhcnROZXdUYXNrKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5Lmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZVRhc2tQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlVSTFNjaGVtZVRhc2tQcm94eTo6V2ViVVJMU2NoZW1lVGFza1Byb3h5KToKKyAgICAgICAg
KFdlYktpdDo6V2ViVVJMU2NoZW1lVGFza1Byb3h5OjpzdGFydExvYWRpbmcpOgorICAgICAgICAo
V2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrUHJveHk6OnN0b3BMb2FkaW5nKToKKyAgICAgICAgKFdl
YktpdDo6V2ViVVJMU2NoZW1lVGFza1Byb3h5OjpkaWRDb21wbGV0ZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlVSTFNjaGVtZVRhc2tQcm94eTo6aGFzTG9hZGVyKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lVGFza1Byb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6Oldl
YlVSTFNjaGVtZVRhc2tQcm94eTo6Y3JlYXRlKToKKwogMjAxOS0xMS0xNSAgQWxleCBDaHJpc3Rl
bnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlZHVjZSBzdHJ1Y3R1
cmUgY29waWVzIHdoZW4gY3JlYXRpbmcgYW4gQVBJOjpGcmFtZUluZm8KSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvU2hhcmVkL1VSTFNjaGVtZVRhc2tQYXJhbWV0ZXJzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1NoYXJlZC9VUkxTY2hlbWVUYXNrUGFyYW1ldGVycy5jcHAJKHJldmlzaW9u
IDI1MjQ5NykKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1VSTFNjaGVtZVRhc2tQYXJhbWV0ZXJz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsNyBAQCB2b2lkIFVSTFNjaGVtZVRhc2tQ
YXJhbWV0ZXJzOjplbmNvZGUoSVBDCiAgICAgICAgIHJlcXVlc3QuaHR0cEJvZHkoKS0+ZW5jb2Rl
KGVuY29kZXIpOwogICAgIH0gZWxzZQogICAgICAgICBlbmNvZGVyIDw8IGZhbHNlOworICAgIGVu
Y29kZXIgPDwgZnJhbWVJbmZvOwogfQogCiBPcHRpb25hbDxVUkxTY2hlbWVUYXNrUGFyYW1ldGVy
cz4gVVJMU2NoZW1lVGFza1BhcmFtZXRlcnM6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIp
CkBAIC03MCw4ICs3MSwxOCBAQCBPcHRpb25hbDxVUkxTY2hlbWVUYXNrUGFyYW1ldGVycz4gVVJM
U2NoCiAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgICAgICByZXF1ZXN0LnNl
dEhUVFBCb2R5KFdURk1vdmUoZm9ybURhdGEpKTsKICAgICB9CisgICAgCisgICAgT3B0aW9uYWw8
RnJhbWVJbmZvRGF0YT4gZnJhbWVJbmZvOworICAgIGRlY29kZXIgPj4gZnJhbWVJbmZvOworICAg
IGlmICghZnJhbWVJbmZvKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCi0gICAgcmV0
dXJuIHt7IFdURk1vdmUoKmhhbmRsZXJJZGVudGlmaWVyKSwgV1RGTW92ZSgqdGFza0lkZW50aWZp
ZXIpLCBXVEZNb3ZlKHJlcXVlc3QpIH19OworICAgIHJldHVybiB7eworICAgICAgICBXVEZNb3Zl
KCpoYW5kbGVySWRlbnRpZmllciksCisgICAgICAgIFdURk1vdmUoKnRhc2tJZGVudGlmaWVyKSwK
KyAgICAgICAgV1RGTW92ZShyZXF1ZXN0KSwKKyAgICAgICAgV1RGTW92ZSgqZnJhbWVJbmZvKSwK
KyAgICB9fTsKIH0KICAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dl
YktpdC9TaGFyZWQvVVJMU2NoZW1lVGFza1BhcmFtZXRlcnMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9VUkxTY2hlbWVUYXNrUGFyYW1ldGVycy5oCShyZXZpc2lvbiAyNTI0
OTcpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9VUkxTY2hlbWVUYXNrUGFyYW1ldGVycy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVk
ZSAiRnJhbWVJbmZvRGF0YS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+
CiAKIG5hbWVzcGFjZSBJUEMgewpAQCAtMzgsNiArMzksNyBAQCBzdHJ1Y3QgVVJMU2NoZW1lVGFz
a1BhcmFtZXRlcnMgewogICAgIHVpbnQ2NF90IGhhbmRsZXJJZGVudGlmaWVyIHsgMCB9OwogICAg
IHVpbnQ2NF90IHRhc2tJZGVudGlmaWVyIHsgMCB9OwogICAgIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCByZXF1ZXN0OworICAgIEZyYW1lSW5mb0RhdGEgZnJhbWVJbmZvOwogICAgIAogICAgIHZv
aWQgZW5jb2RlKElQQzo6RW5jb2RlciYpIGNvbnN0OwogICAgIHN0YXRpYyBPcHRpb25hbDxVUkxT
Y2hlbWVUYXNrUGFyYW1ldGVycz4gZGVjb2RlKElQQzo6RGVjb2RlciYpOwpJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCShyZXZpc2lvbiAyNTI0OTcpCisrKyBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC04ODU0LDcgKzg4NTQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c3RhcnRVUkxTY2hlbWVUYXNr
U2hhCiAgICAgYXV0byBpdGVyYXRvciA9IG1fdXJsU2NoZW1lSGFuZGxlcnNCeUlkZW50aWZpZXIu
ZmluZChwYXJhbWV0ZXJzLmhhbmRsZXJJZGVudGlmaWVyKTsKICAgICBNRVNTQUdFX0NIRUNLKHBy
b2Nlc3MsIGl0ZXJhdG9yICE9IG1fdXJsU2NoZW1lSGFuZGxlcnNCeUlkZW50aWZpZXIuZW5kKCkp
OwogCi0gICAgaXRlcmF0b3ItPnZhbHVlLT5zdGFydFRhc2soKnRoaXMsIHByb2Nlc3MsIHdlYlBh
Z2VJRCwgcGFyYW1ldGVycy50YXNrSWRlbnRpZmllciwgV1RGTW92ZShwYXJhbWV0ZXJzLnJlcXVl
c3QpLCBudWxscHRyKTsKKyAgICBpdGVyYXRvci0+dmFsdWUtPnN0YXJ0VGFzaygqdGhpcywgcHJv
Y2Vzcywgd2ViUGFnZUlELCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBudWxscHRyKTsKIH0KIAogdm9p
ZCBXZWJQYWdlUHJveHk6OnN0b3BVUkxTY2hlbWVUYXNrKHVpbnQ2NF90IGhhbmRsZXJJZGVudGlm
aWVyLCB1aW50NjRfdCB0YXNrSWRlbnRpZmllcikKQEAgLTg4NzAsNyArODg3MCw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5Ojpsb2FkU3luY2hyb25vdXNVUkxTY2gKICAgICBhdXRvIGl0ZXJhdG9yID0g
bV91cmxTY2hlbWVIYW5kbGVyc0J5SWRlbnRpZmllci5maW5kKHBhcmFtZXRlcnMuaGFuZGxlcklk
ZW50aWZpZXIpOwogICAgIE1FU1NBR0VfQ0hFQ0sobV9wcm9jZXNzLCBpdGVyYXRvciAhPSBtX3Vy
bFNjaGVtZUhhbmRsZXJzQnlJZGVudGlmaWVyLmVuZCgpKTsKIAotICAgIGl0ZXJhdG9yLT52YWx1
ZS0+c3RhcnRUYXNrKCp0aGlzLCBtX3Byb2Nlc3MsIG1fd2ViUGFnZUlELCBwYXJhbWV0ZXJzLnRh
c2tJZGVudGlmaWVyLCBXVEZNb3ZlKHBhcmFtZXRlcnMucmVxdWVzdCksIFdURk1vdmUocmVwbHkp
KTsKKyAgICBpdGVyYXRvci0+dmFsdWUtPnN0YXJ0VGFzaygqdGhpcywgbV9wcm9jZXNzLCBtX3dl
YlBhZ2VJRCwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgV1RGTW92ZShyZXBseSkpOwogfQogCiAjaWYg
RU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXIuY3BwCShyZXZpc2lvbiAyNTI0OTcpCisr
KyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IldlYlVSTFNjaGVtZUhhbmRsZXIuaCIKIAorI2luY2x1ZGUgIlVSTFNjaGVtZVRhc2tQYXJhbWV0
ZXJzLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViVVJMU2NoZW1l
VGFzay5oIgogCkBAIC00OCw5ICs0OSwxMCBAQCBXZWJVUkxTY2hlbWVIYW5kbGVyOjp+V2ViVVJM
U2NoZW1lSGFuZGxlCiAgICAgQVNTRVJUKG1fdGFza3MuaXNFbXB0eSgpKTsKIH0KIAotdm9pZCBX
ZWJVUkxTY2hlbWVIYW5kbGVyOjpzdGFydFRhc2soV2ViUGFnZVByb3h5JiBwYWdlLCBXZWJQcm9j
ZXNzUHJveHkmIHByb2Nlc3MsIFBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCwgdWludDY0X3QgdGFz
a0lkZW50aWZpZXIsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFN5bmNMb2FkQ29tcGxldGlv
bkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViVVJMU2NoZW1lSGFuZGxlcjo6
c3RhcnRUYXNrKFdlYlBhZ2VQcm94eSYgcGFnZSwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCBQ
YWdlSWRlbnRpZmllciB3ZWJQYWdlSUQsIFVSTFNjaGVtZVRhc2tQYXJhbWV0ZXJzJiYgcGFyYW1l
dGVycywgU3luY0xvYWRDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQogewot
ICAgIGF1dG8gcmVzdWx0ID0gbV90YXNrcy5hZGQodGFza0lkZW50aWZpZXIsIFdlYlVSTFNjaGVt
ZVRhc2s6OmNyZWF0ZSgqdGhpcywgcGFnZSwgcHJvY2Vzcywgd2ViUGFnZUlELCB0YXNrSWRlbnRp
ZmllciwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpKTsKKyAg
ICBhdXRvIHRhc2tJZGVudGlmaWVyID0gcGFyYW1ldGVycy50YXNrSWRlbnRpZmllcjsKKyAgICBh
dXRvIHJlc3VsdCA9IG1fdGFza3MuYWRkKHRhc2tJZGVudGlmaWVyLCBXZWJVUkxTY2hlbWVUYXNr
OjpjcmVhdGUoKnRoaXMsIHBhZ2UsIHByb2Nlc3MsIHdlYlBhZ2VJRCwgV1RGTW92ZShwYXJhbWV0
ZXJzKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpKTsKICAgICBBU1NFUlQocmVzdWx0Lmlz
TmV3RW50cnkpOwogCiAgICAgYXV0byBwYWdlRW50cnkgPSBtX3Rhc2tzQnlQYWdlSWRlbnRpZmll
ci5hZGQocGFnZS5pZGVudGlmaWVyKCksIEhhc2hTZXQ8dWludDY0X3Q+KCkpOwpJbmRleDogU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lSGFuZGxlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXIuaAkocmV2aXNpb24g
MjUyNDk3KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lSGFuZGxlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0MSw3IEBAIGNsYXNzIFJlc291cmNlUmVxdWVzdDsK
IAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK3N0cnVjdCBVUkxTY2hlbWVUYXNrUGFyYW1ldGVyczsK
IGNsYXNzIFdlYlBhZ2VQcm94eTsKIGNsYXNzIFdlYlByb2Nlc3NQcm94eTsKIApAQCAtNTMsNyAr
NTQsNyBAQCBwdWJsaWM6CiAKICAgICB1aW50NjRfdCBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1
cm4gbV9pZGVudGlmaWVyOyB9CiAKLSAgICB2b2lkIHN0YXJ0VGFzayhXZWJQYWdlUHJveHkmLCBX
ZWJQcm9jZXNzUHJveHkmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgdWludDY0X3QgdGFza0lk
ZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBTeW5jTG9hZENvbXBsZXRpb25I
YW5kbGVyJiYpOworICAgIHZvaWQgc3RhcnRUYXNrKFdlYlBhZ2VQcm94eSYsIFdlYlByb2Nlc3NQ
cm94eSYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBVUkxTY2hlbWVUYXNrUGFyYW1ldGVycyYm
LCBTeW5jTG9hZENvbXBsZXRpb25IYW5kbGVyJiYpOwogICAgIHZvaWQgc3RvcFRhc2soV2ViUGFn
ZVByb3h5JiwgdWludDY0X3QgdGFza0lkZW50aWZpZXIpOwogICAgIHZvaWQgc3RvcEFsbFRhc2tz
Rm9yUGFnZShXZWJQYWdlUHJveHkmLCBXZWJQcm9jZXNzUHJveHkqKTsKICAgICB2b2lkIHRhc2tD
b21wbGV0ZWQoV2ViVVJMU2NoZW1lVGFzayYpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAJKHJldmlzaW9uIDI1MjQ5NykKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
Niw4ICsyNiwxMCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYlVSTFNjaGVt
ZVRhc2suaCIKIAorI2luY2x1ZGUgIkFQSUZyYW1lSW5mby5oIgogI2luY2x1ZGUgIkRhdGFSZWZl
cmVuY2UuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgiCisjaW5jbHVk
ZSAiVVJMU2NoZW1lVGFza1BhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJXZWJFcnJvcnMuaCIKICNp
bmNsdWRlICJXZWJQYWdlTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKQEAg
LTM2LDE4ICszOCwxOSBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIAotUmVmPFdlYlVSTFNjaGVtZVRhc2s+IFdlYlVSTFNjaGVtZVRhc2s6OmNyZWF0ZShX
ZWJVUkxTY2hlbWVIYW5kbGVyJiBoYW5kbGVyLCBXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYlByb2Nl
c3NQcm94eSYgcHJvY2VzcywgUGFnZUlkZW50aWZpZXIgd2ViUGFnZUlELCB1aW50NjRfdCByZXNv
dXJjZUlkZW50aWZpZXIsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFN5bmNMb2FkQ29tcGxl
dGlvbkhhbmRsZXImJiBzeW5jQ29tcGxldGlvbkhhbmRsZXIpCitSZWY8V2ViVVJMU2NoZW1lVGFz
az4gV2ViVVJMU2NoZW1lVGFzazo6Y3JlYXRlKFdlYlVSTFNjaGVtZUhhbmRsZXImIGhhbmRsZXIs
IFdlYlBhZ2VQcm94eSYgcGFnZSwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCBQYWdlSWRlbnRp
ZmllciB3ZWJQYWdlSUQsIFVSTFNjaGVtZVRhc2tQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycywgU3lu
Y0xvYWRDb21wbGV0aW9uSGFuZGxlciYmIHN5bmNDb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJVUkxTY2hlbWVUYXNrKGhhbmRsZXIsIHBhZ2UsIHByb2Nl
c3MsIHdlYlBhZ2VJRCwgcmVzb3VyY2VJZGVudGlmaWVyLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZN
b3ZlKHN5bmNDb21wbGV0aW9uSGFuZGxlcikpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBX
ZWJVUkxTY2hlbWVUYXNrKGhhbmRsZXIsIHBhZ2UsIHByb2Nlc3MsIHdlYlBhZ2VJRCwgV1RGTW92
ZShwYXJhbWV0ZXJzKSwgV1RGTW92ZShzeW5jQ29tcGxldGlvbkhhbmRsZXIpKSk7CiB9CiAKLVdl
YlVSTFNjaGVtZVRhc2s6OldlYlVSTFNjaGVtZVRhc2soV2ViVVJMU2NoZW1lSGFuZGxlciYgaGFu
ZGxlciwgV2ViUGFnZVByb3h5JiBwYWdlLCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIFBhZ2VJ
ZGVudGlmaWVyIHdlYlBhZ2VJRCwgdWludDY0X3QgcmVzb3VyY2VJZGVudGlmaWVyLCBSZXNvdXJj
ZVJlcXVlc3QmJiByZXF1ZXN0LCBTeW5jTG9hZENvbXBsZXRpb25IYW5kbGVyJiYgc3luY0NvbXBs
ZXRpb25IYW5kbGVyKQorV2ViVVJMU2NoZW1lVGFzazo6V2ViVVJMU2NoZW1lVGFzayhXZWJVUkxT
Y2hlbWVIYW5kbGVyJiBoYW5kbGVyLCBXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYlByb2Nlc3NQcm94
eSYgcHJvY2VzcywgUGFnZUlkZW50aWZpZXIgd2ViUGFnZUlELCBVUkxTY2hlbWVUYXNrUGFyYW1l
dGVycyYmIHBhcmFtZXRlcnMsIFN5bmNMb2FkQ29tcGxldGlvbkhhbmRsZXImJiBzeW5jQ29tcGxl
dGlvbkhhbmRsZXIpCiAgICAgOiBtX3VybFNjaGVtZUhhbmRsZXIoaGFuZGxlcikKICAgICAsIG1f
cHJvY2VzcyhtYWtlUmVmKHByb2Nlc3MpKQotICAgICwgbV9pZGVudGlmaWVyKHJlc291cmNlSWRl
bnRpZmllcikKKyAgICAsIG1faWRlbnRpZmllcihwYXJhbWV0ZXJzLnRhc2tJZGVudGlmaWVyKQog
ICAgICwgbV9wYWdlUHJveHlJRChwYWdlLmlkZW50aWZpZXIoKSkKICAgICAsIG1fd2ViUGFnZUlE
KHdlYlBhZ2VJRCkKLSAgICAsIG1fcmVxdWVzdChXVEZNb3ZlKHJlcXVlc3QpKQorICAgICwgbV9y
ZXF1ZXN0KFdURk1vdmUocGFyYW1ldGVycy5yZXF1ZXN0KSkKKyAgICAsIG1fZnJhbWVJbmZvKEFQ
STo6RnJhbWVJbmZvOjpjcmVhdGUoV1RGTW92ZShwYXJhbWV0ZXJzLmZyYW1lSW5mbyksICZwYWdl
KSkKICAgICAsIG1fc3luY0NvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoc3luY0NvbXBsZXRpb25I
YW5kbGVyKSkKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwpJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaAkocmV2aXNpb24gMjUyNDk3KQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zNCw2ICszNCwxMCBAQAogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5j
bHVkZSA8d3RmL1JlZlB0ci5oPgogCituYW1lc3BhY2UgQVBJIHsKK2NsYXNzIEZyYW1lSW5mbzsK
K30KKwogbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBEYXRhUmVmZXJlbmNlOwogfQpAQCAtNDYsNiAr
NTAsNyBAQCBjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitzdHJ1
Y3QgVVJMU2NoZW1lVGFza1BhcmFtZXRlcnM7CiBjbGFzcyBXZWJVUkxTY2hlbWVIYW5kbGVyOwog
Y2xhc3MgV2ViUGFnZVByb3h5OwogCkBAIC01NCw3ICs1OSw3IEBAIHVzaW5nIFN5bmNMb2FkQ29t
cGxldGlvbkhhbmRsZXIgPSBDb21wbGUKIGNsYXNzIFdlYlVSTFNjaGVtZVRhc2sgOiBwdWJsaWMg
VGhyZWFkU2FmZVJlZkNvdW50ZWQ8V2ViVVJMU2NoZW1lVGFzaz4sIHB1YmxpYyBJbnN0YW5jZUNv
dW50ZWQ8V2ViVVJMU2NoZW1lVGFzaz4gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdlYlVS
TFNjaGVtZVRhc2spOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8V2ViVVJMU2NoZW1lVGFzaz4g
Y3JlYXRlKFdlYlVSTFNjaGVtZUhhbmRsZXImLCBXZWJQYWdlUHJveHkmLCBXZWJQcm9jZXNzUHJv
eHkmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgdWludDY0X3QgaWRlbnRpZmllciwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFN5bmNMb2FkQ29tcGxldGlvbkhhbmRsZXImJik7CisgICAg
c3RhdGljIFJlZjxXZWJVUkxTY2hlbWVUYXNrPiBjcmVhdGUoV2ViVVJMU2NoZW1lSGFuZGxlciYs
IFdlYlBhZ2VQcm94eSYsIFdlYlByb2Nlc3NQcm94eSYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
LCBVUkxTY2hlbWVUYXNrUGFyYW1ldGVycyYmLCBTeW5jTG9hZENvbXBsZXRpb25IYW5kbGVyJiYp
OwogCiAgICAgfldlYlVSTFNjaGVtZVRhc2soKTsKIApAQCAtNjMsNiArNjgsNyBAQCBwdWJsaWM6
CiAgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgd2ViUGFnZUlEKCkgY29uc3QgeyBBU1NFUlQo
UnVuTG9vcDo6aXNNYWluKCkpOyByZXR1cm4gbV93ZWJQYWdlSUQ7IH0KICAgICBXZWJQcm9jZXNz
UHJveHkqIHByb2Nlc3MoKSB7IEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7IHJldHVybiBtX3By
b2Nlc3MuZ2V0KCk7IH0KICAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QoKSBjb25zdCB7IEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7IHJldHVybiBtX3JlcXVlc3Q7
IH0KKyAgICBBUEk6OkZyYW1lSW5mbyYgZnJhbWVJbmZvKCkgY29uc3QgeyByZXR1cm4gbV9mcmFt
ZUluZm8uZ2V0KCk7IH0KIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIE5TVVJMUmVxdWVzdCAq
bnNSZXF1ZXN0KCkgY29uc3Q7CkBAIC04NSw3ICs5MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHBh
Z2VEZXN0cm95ZWQoKTsKIAogcHJpdmF0ZToKLSAgICBXZWJVUkxTY2hlbWVUYXNrKFdlYlVSTFNj
aGVtZUhhbmRsZXImLCBXZWJQYWdlUHJveHkmLCBXZWJQcm9jZXNzUHJveHkmLCBXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllciwgdWludDY0X3QgaWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYsIFN5bmNMb2FkQ29tcGxldGlvbkhhbmRsZXImJik7CisgICAgV2ViVVJMU2NoZW1lVGFz
ayhXZWJVUkxTY2hlbWVIYW5kbGVyJiwgV2ViUGFnZVByb3h5JiwgV2ViUHJvY2Vzc1Byb3h5Jiwg
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFVSTFNjaGVtZVRhc2tQYXJhbWV0ZXJzJiYsIFN5bmNM
b2FkQ29tcGxldGlvbkhhbmRsZXImJik7CiAKICAgICBib29sIGlzU3luYygpIGNvbnN0IHsgcmV0
dXJuICEhbV9zeW5jQ29tcGxldGlvbkhhbmRsZXI7IH0KIApAQCAtOTUsNiArMTAxLDcgQEAgcHJp
dmF0ZToKICAgICBXZWJQYWdlUHJveHlJZGVudGlmaWVyIG1fcGFnZVByb3h5SUQ7CiAgICAgV2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXIgbV93ZWJQYWdlSUQ7CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0IG1fcmVxdWVzdDsKKyAgICBSZWY8QVBJOjpGcmFtZUluZm8+IG1fZnJhbWVJbmZvOwog
ICAgIG11dGFibGUgTG9jayBtX3JlcXVlc3RMb2NrOwogICAgIGJvb2wgbV9zdG9wcGVkIHsgZmFs
c2UgfTsKICAgICBib29sIG1fcmVzcG9uc2VTZW50IHsgZmFsc2UgfTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VSTFNjaGVtZVRhc2subW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVVJMU2NoZW1lVGFzay5tbQko
cmV2aXNpb24gMjUyNDk3KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
VVJMU2NoZW1lVGFzay5tbQkod29ya2luZyBjb3B5KQpAQCAtMjQsOCArMjQsMTAgQEAKICAqLwog
CiAjaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIldLVVJMU2NoZW1lVGFza0ludGVybmFsLmgi
CisjaW1wb3J0ICJXS1VSTFNjaGVtZVRhc2suaCIKIAorI2ltcG9ydCAiV0tGcmFtZUluZm9JbnRl
cm5hbC5oIgorI2ltcG9ydCAiV0tVUkxTY2hlbWVUYXNrSW50ZXJuYWwuaCIKICNpbXBvcnQgIldl
YlVSTFNjaGVtZUhhbmRsZXIuaCIKICNpbXBvcnQgIldlYlVSTFNjaGVtZVRhc2suaCIKICNpbXBv
cnQgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgpAQCAtMTQ2LDYgKzE0OCwxMSBAQCAtICh2b2lk
KV9kaWRQZXJmb3JtUmVkaXJlY3Rpb246KE5TVVJMUmVzCiAgICAgcmFpc2VFeGNlcHRpb25JZk5l
Y2Vzc2FyeShyZXN1bHQpOwogfQogCistIChXS0ZyYW1lSW5mbyAqKV9mcmFtZQoreworICAgIHJl
dHVybiB3cmFwcGVyKF91cmxTY2hlbWVUYXNrLT50YXNrKCkuZnJhbWVJbmZvKCkpOworfQorCiAj
cHJhZ21hIG1hcmsgV0tPYmplY3QgcHJvdG9jb2wgaW1wbGVtZW50YXRpb24KIAogLSAoQVBJOjpP
YmplY3QmKV9hcGlPYmplY3QKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1VSTFNjaGVtZVRhc2tQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLVVJMU2NoZW1lVGFza1ByaXZhdGUuaAkocmV2aXNpb24gMjUy
NDk3KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVVJMU2NoZW1lVGFz
a1ByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsMTEgKzI1LDE0IEBACiAKICNpbXBvcnQg
PFdlYktpdC9XS1VSTFNjaGVtZVRhc2suaD4KIAorQGNsYXNzIFdLRnJhbWVJbmZvOworCiBXS19B
UElfQVZBSUxBQkxFKG1hY29zKDEwLjEzKSwgaW9zKDExLjApKQogQHByb3RvY29sIFdLVVJMU2No
ZW1lVGFza1ByaXZhdGUgPFdLVVJMU2NoZW1lVGFzaz4KIAogLSAodm9pZClfZGlkUGVyZm9ybVJl
ZGlyZWN0aW9uOihOU1VSTFJlc3BvbnNlICopcmVzcG9uc2UgbmV3UmVxdWVzdDooTlNVUkxSZXF1
ZXN0ICopcmVxdWVzdDsKIAogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBCT09MIF9y
ZXF1ZXN0T25seUlmQ2FjaGVkIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTUpLCBpb3MoMTMu
MCkpOworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBXS0ZyYW1lSW5mbyAqX2ZyYW1l
IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAK
IEBlbmQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0
cmF0ZWd5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay9XZWJMb2FkZXJTdHJhdGVneS5jcHAJKHJldmlzaW9uIDI1MjQ5NykKKysrIFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjI3LDE2ICsyMjcsMTggQEAgYm9vbCBXZWJMb2FkZXJTdHJhdGVneTo6dHJ5TG9hZGlu
Z1VzaW5nVQogICAgIGF1dG8qIHdlYkZyYW1lTG9hZGVyQ2xpZW50ID0gdG9XZWJGcmFtZUxvYWRl
ckNsaWVudChyZXNvdXJjZUxvYWRlci5mcmFtZUxvYWRlcigpLT5jbGllbnQoKSk7CiAgICAgYXV0
byogd2ViRnJhbWUgPSB3ZWJGcmFtZUxvYWRlckNsaWVudCA/IHdlYkZyYW1lTG9hZGVyQ2xpZW50
LT53ZWJGcmFtZSgpIDogbnVsbHB0cjsKICAgICBhdXRvKiB3ZWJQYWdlID0gd2ViRnJhbWUgPyB3
ZWJGcmFtZS0+cGFnZSgpIDogbnVsbHB0cjsKLSAgICBpZiAod2ViUGFnZSkgewotICAgICAgICBp
ZiAoYXV0byogaGFuZGxlciA9IHdlYlBhZ2UtPnVybFNjaGVtZUhhbmRsZXJGb3JTY2hlbWUocmVz
b3VyY2VMb2FkZXIucmVxdWVzdCgpLnVybCgpLnByb3RvY29sKCkudG9TdHJpbmdXaXRob3V0Q29w
eWluZygpKSkgewotICAgICAgICAgICAgTE9HKE5ldHdvcmtTY2hlZHVsaW5nLCAiKFdlYlByb2Nl
c3MpIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQsIFVSTCAnJXMnIHdpbGwgYmUgaGFu
ZGxlZCBieSBhIFVJUHJvY2VzcyBVUkwgc2NoZW1lIGhhbmRsZXIuIiwgcmVzb3VyY2VMb2FkZXIu
dXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKCJzY2hlZHVsZUxvYWQ6IFVSTCB3aWxsIGJlIGhhbmRsZWQgYnkgYSBVSVByb2Nl
c3MgVVJMIHNjaGVtZSBoYW5kbGVyIChmcmFtZT0lcCwgcmVzb3VyY2VJRD0lbHUpIiwgcmVzb3Vy
Y2VMb2FkZXIuZnJhbWUoKSwgcmVzb3VyY2VMb2FkZXIuaWRlbnRpZmllcigpKTsKKyAgICBpZiAo
IXdlYlBhZ2UpCisgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICAgICAgaGFuZGxlci0+
c3RhcnROZXdUYXNrKHJlc291cmNlTG9hZGVyKTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwot
ICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKKyAgICBhdXRvKiBoYW5kbGVyID0g
d2ViUGFnZS0+dXJsU2NoZW1lSGFuZGxlckZvclNjaGVtZShyZXNvdXJjZUxvYWRlci5yZXF1ZXN0
KCkudXJsKCkucHJvdG9jb2woKS50b1N0cmluZ1dpdGhvdXRDb3B5aW5nKCkpOworICAgIGlmICgh
aGFuZGxlcikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgTE9HKE5ldHdvcmtTY2hlZHVs
aW5nLCAiKFdlYlByb2Nlc3MpIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQsIFVSTCAn
JXMnIHdpbGwgYmUgaGFuZGxlZCBieSBhIFVJUHJvY2VzcyBVUkwgc2NoZW1lIGhhbmRsZXIuIiwg
cmVzb3VyY2VMb2FkZXIudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRCgic2NoZWR1bGVMb2FkOiBVUkwgd2lsbCBiZSBoYW5kbGVkIGJ5IGEg
VUlQcm9jZXNzIFVSTCBzY2hlbWUgaGFuZGxlciAoZnJhbWU9JXAsIHJlc291cmNlSUQ9JWx1KSIs
IHJlc291cmNlTG9hZGVyLmZyYW1lKCksIHJlc291cmNlTG9hZGVyLmlkZW50aWZpZXIoKSk7CisK
KyAgICBoYW5kbGVyLT5zdGFydE5ld1Rhc2socmVzb3VyY2VMb2FkZXIsICp3ZWJGcmFtZSk7Cisg
ICAgcmV0dXJuIHRydWU7CiB9CiAKIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9h
ZEZyb21OZXR3b3JrUHJvY2VzcyhSZXNvdXJjZUxvYWRlciYgcmVzb3VyY2VMb2FkZXIsIGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgV2ViUmVzb3VyY2VMb2FkZXI6OlRyYWNr
aW5nUGFyYW1ldGVycyYgdHJhY2tpbmdQYXJhbWV0ZXJzLCBib29sIHNob3VsZENsZWFyUmVmZXJy
ZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIFNlY29uZHMgbWF4aW11bUJ1ZmZlcmluZ1RpbWUpCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVIYW5kbGVy
UHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlVSTFNjaGVtZUhhbmRsZXJQcm94eS5jcHAJKHJldmlzaW9uIDI1MjQ5NykKKysrIFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZUhhbmRsZXJQcm94eS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTUzLDkgKzUzLDkgQEAgV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5
Ojp+V2ViVVJMU2NoZW1lSAogICAgIEFTU0VSVChtX3Rhc2tzLmlzRW1wdHkoKSk7CiB9CiAKLXZv
aWQgV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5OjpzdGFydE5ld1Rhc2soUmVzb3VyY2VMb2FkZXIm
IGxvYWRlcikKK3ZvaWQgV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5OjpzdGFydE5ld1Rhc2soUmVz
b3VyY2VMb2FkZXImIGxvYWRlciwgV2ViRnJhbWUmIHdlYkZyYW1lKQogewotICAgIGF1dG8gcmVz
dWx0ID0gbV90YXNrcy5hZGQobG9hZGVyLmlkZW50aWZpZXIoKSwgV2ViVVJMU2NoZW1lVGFza1By
b3h5OjpjcmVhdGUoKnRoaXMsIGxvYWRlcikpOworICAgIGF1dG8gcmVzdWx0ID0gbV90YXNrcy5h
ZGQobG9hZGVyLmlkZW50aWZpZXIoKSwgV2ViVVJMU2NoZW1lVGFza1Byb3h5OjpjcmVhdGUoKnRo
aXMsIGxvYWRlciwgd2ViRnJhbWUpKTsKICAgICBBU1NFUlQocmVzdWx0LmlzTmV3RW50cnkpOwog
CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViTG9hZGVyU3RyYXRlZ3koKS5hZGRVUkxT
Y2hlbWVUYXNrUHJveHkoKnJlc3VsdC5pdGVyYXRvci0+dmFsdWUpOwpJbmRleDogU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lSGFu
ZGxlclByb3h5LmgJKHJldmlzaW9uIDI1MjQ5NykKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlVSTFNjaGVtZUhhbmRsZXJQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC00
OSw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAgfldlYlVSTFNjaGVtZUhhbmRsZXJQcm94
eSgpOwogCi0gICAgdm9pZCBzdGFydE5ld1Rhc2soV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXImKTsK
KyAgICB2b2lkIHN0YXJ0TmV3VGFzayhXZWJDb3JlOjpSZXNvdXJjZUxvYWRlciYsIFdlYkZyYW1l
Jik7CiAgICAgdm9pZCBzdG9wQWxsVGFza3MoKTsKIAogICAgIHZvaWQgbG9hZFN5bmNocm9ub3Vz
bHkoUmVzb3VyY2VMb2FkSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBW
ZWN0b3I8Y2hhcj4mKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlVSTFNjaGVtZVRhc2tQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lVGFza1Byb3h5LmNwcAkocmV2aXNpb24gMjUyNDk3
KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lVGFza1By
b3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsOSArNDAsMTAgQEAKIG5hbWVzcGFjZSBXZWJL
aXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLVdlYlVSTFNjaGVtZVRhc2tQcm94eTo6
V2ViVVJMU2NoZW1lVGFza1Byb3h5KFdlYlVSTFNjaGVtZUhhbmRsZXJQcm94eSYgaGFuZGxlciwg
UmVzb3VyY2VMb2FkZXImIGxvYWRlcikKK1dlYlVSTFNjaGVtZVRhc2tQcm94eTo6V2ViVVJMU2No
ZW1lVGFza1Byb3h5KFdlYlVSTFNjaGVtZUhhbmRsZXJQcm94eSYgaGFuZGxlciwgUmVzb3VyY2VM
b2FkZXImIGxvYWRlciwgV2ViRnJhbWUmIGZyYW1lKQogICAgIDogbV91cmxTY2hlbWVIYW5kbGVy
KGhhbmRsZXIpCiAgICAgLCBtX2NvcmVMb2FkZXIoJmxvYWRlcikKKyAgICAsIG1fZnJhbWUoJmZy
YW1lKQogICAgICwgbV9yZXF1ZXN0KGxvYWRlci5yZXF1ZXN0KCkpCiAgICAgLCBtX2lkZW50aWZp
ZXIobG9hZGVyLmlkZW50aWZpZXIoKSkKIHsKQEAgLTUxLDcgKzUyLDggQEAgV2ViVVJMU2NoZW1l
VGFza1Byb3h5OjpXZWJVUkxTY2hlbWVUYXNrUAogdm9pZCBXZWJVUkxTY2hlbWVUYXNrUHJveHk6
OnN0YXJ0TG9hZGluZygpCiB7CiAgICAgQVNTRVJUKG1fY29yZUxvYWRlcik7Ci0gICAgbV91cmxT
Y2hlbWVIYW5kbGVyLnBhZ2UoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlN0YXJ0VVJM
U2NoZW1lVGFzayh7bV91cmxTY2hlbWVIYW5kbGVyLmlkZW50aWZpZXIoKSwgbV9jb3JlTG9hZGVy
LT5pZGVudGlmaWVyKCksIG1fcmVxdWVzdH0pKTsKKyAgICBBU1NFUlQobV9mcmFtZSk7CisgICAg
bV91cmxTY2hlbWVIYW5kbGVyLnBhZ2UoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlN0
YXJ0VVJMU2NoZW1lVGFzayhVUkxTY2hlbWVUYXNrUGFyYW1ldGVycyB7IG1fdXJsU2NoZW1lSGFu
ZGxlci5pZGVudGlmaWVyKCksIG1fY29yZUxvYWRlci0+aWRlbnRpZmllcigpLCBtX3JlcXVlc3Qs
IG1fZnJhbWUtPmluZm8oKSB9KSk7CiB9CiAKIHZvaWQgV2ViVVJMU2NoZW1lVGFza1Byb3h5Ojpz
dG9wTG9hZGluZygpCkBAIC01OSw2ICs2MSw3IEBAIHZvaWQgV2ViVVJMU2NoZW1lVGFza1Byb3h5
OjpzdG9wTG9hZGluZygKICAgICBBU1NFUlQobV9jb3JlTG9hZGVyKTsKICAgICBtX3VybFNjaGVt
ZUhhbmRsZXIucGFnZSgpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U3RvcFVSTFNjaGVt
ZVRhc2sobV91cmxTY2hlbWVIYW5kbGVyLmlkZW50aWZpZXIoKSwgbV9jb3JlTG9hZGVyLT5pZGVu
dGlmaWVyKCkpKTsKICAgICBtX2NvcmVMb2FkZXIgPSBudWxscHRyOworICAgIG1fZnJhbWUgPSBu
dWxscHRyOwogCiAgICAgLy8gVGhpcyBsaW5lIHdpbGwgcmVzdWx0IGluIHRoaXMgYmVpbmcgZGVs
ZXRlZC4KICAgICBtX3VybFNjaGVtZUhhbmRsZXIudGFza0RpZFN0b3BMb2FkaW5nKCp0aGlzKTsK
QEAgLTE0OSwxMiArMTUyLDE1IEBAIHZvaWQgV2ViVVJMU2NoZW1lVGFza1Byb3h5OjpkaWRDb21w
bGV0ZSgKICAgICAgICAgbV9jb3JlTG9hZGVyLT5kaWRGYWlsKGVycm9yKTsKIAogICAgIG1fY29y
ZUxvYWRlciA9IG51bGxwdHI7CisgICAgbV9mcmFtZSA9IG51bGxwdHI7CiB9CiAKIGJvb2wgV2Vi
VVJMU2NoZW1lVGFza1Byb3h5OjpoYXNMb2FkZXIoKQogewotICAgIGlmIChtX2NvcmVMb2FkZXIg
JiYgbV9jb3JlTG9hZGVyLT5yZWFjaGVkVGVybWluYWxTdGF0ZSgpKQorICAgIGlmIChtX2NvcmVM
b2FkZXIgJiYgbV9jb3JlTG9hZGVyLT5yZWFjaGVkVGVybWluYWxTdGF0ZSgpKSB7CiAgICAgICAg
IG1fY29yZUxvYWRlciA9IG51bGxwdHI7CisgICAgICAgIG1fZnJhbWUgPSBudWxscHRyOworICAg
IH0KIAogICAgIHJldHVybiBtX2NvcmVMb2FkZXI7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVUYXNrUHJveHkuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVUYXNrUHJveHkuaAko
cmV2aXNpb24gMjUyNDk3KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
VVJMU2NoZW1lVGFza1Byb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDEzICszNywxNCBAQCBj
bGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorY2xhc3MgV2Vi
RnJhbWU7CiBjbGFzcyBXZWJVUkxTY2hlbWVIYW5kbGVyUHJveHk7CiAKIGNsYXNzIFdlYlVSTFNj
aGVtZVRhc2tQcm94eSA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYlVSTFNjaGVtZVRhc2tQcm94eT4g
ewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8V2ViVVJMU2NoZW1lVGFza1Byb3h5PiBjcmVhdGUo
V2ViVVJMU2NoZW1lSGFuZGxlclByb3h5JiBoYW5kbGVyLCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRl
ciYgbG9hZGVyKQorICAgIHN0YXRpYyBSZWY8V2ViVVJMU2NoZW1lVGFza1Byb3h5PiBjcmVhdGUo
V2ViVVJMU2NoZW1lSGFuZGxlclByb3h5JiBoYW5kbGVyLCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRl
ciYgbG9hZGVyLCBXZWJGcmFtZSYgd2ViRnJhbWUpCiAgICAgewotICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBXZWJVUkxTY2hlbWVUYXNrUHJveHkoaGFuZGxlciwgbG9hZGVyKSk7CisgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlVSTFNjaGVtZVRhc2tQcm94eShoYW5kbGVyLCBs
b2FkZXIsIHdlYkZyYW1lKSk7CiAgICAgfQogICAgIAogICAgIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVxdWVzdDsgfQpAQCAtNTks
NyArNjAsNyBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKCkgY29uc3Qg
eyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CiAKIHByaXZhdGU6Ci0gICAgV2ViVVJMU2NoZW1lVGFz
a1Byb3h5KFdlYlVSTFNjaGVtZUhhbmRsZXJQcm94eSYsIFdlYkNvcmU6OlJlc291cmNlTG9hZGVy
Jik7CisgICAgV2ViVVJMU2NoZW1lVGFza1Byb3h5KFdlYlVSTFNjaGVtZUhhbmRsZXJQcm94eSYs
IFdlYkNvcmU6OlJlc291cmNlTG9hZGVyJiwgV2ViRnJhbWUmKTsKICAgICBib29sIGhhc0xvYWRl
cigpOwogCiAgICAgdm9pZCBxdWV1ZVRhc2soRnVuY3Rpb248dm9pZCgpPiYmIHRhc2spIHsgbV9x
dWV1ZWRUYXNrcy5hcHBlbmQoV1RGTW92ZSh0YXNrKSk7IH0KQEAgLTY3LDYgKzY4LDcgQEAgcHJp
dmF0ZToKIAogICAgIFdlYlVSTFNjaGVtZUhhbmRsZXJQcm94eSYgbV91cmxTY2hlbWVIYW5kbGVy
OwogICAgIFJlZlB0cjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcj4gbV9jb3JlTG9hZGVyOworICAg
IFJlZlB0cjxXZWJGcmFtZT4gbV9mcmFtZTsKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qg
bV9yZXF1ZXN0OwogICAgIHVuc2lnbmVkIGxvbmcgbV9pZGVudGlmaWVyOwogICAgIGJvb2wgbV93
YWl0aW5nRm9yQ29tcGxldGlvbkhhbmRsZXIgeyBmYWxzZSB9OwpJbmRleDogVG9vbHMvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjUyNTEzKQorKysg
VG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTktMTEt
MTUgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAg
ICBBZGQgU1BJIG9uIFdLVVJMU2NoZW1lVGFzayB0byBhY2Nlc3MgV0tGcmFtZUluZm8gb2Ygb3Jp
Z2luYXRpbmcgZnJhbWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIwNDI2NQorICAgICAgICA8cmRhcjovLzU3MTkzODgzPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9XS1VSTFNjaGVtZUhhbmRsZXItMS5tbToKKyAgICAgICAgKC1bRnJhbWVTY2hl
bWVIYW5kbGVyIHdhaXRGb3JBbGxSZXF1ZXN0c10pOgorICAgICAgICAoLVtGcmFtZVNjaGVtZUhh
bmRsZXIgc2V0RXhwZWN0ZWRXZWJWaWV3Ol0pOgorICAgICAgICAoLVtGcmFtZVNjaGVtZUhhbmRs
ZXIgd2ViVmlldzpzdGFydFVSTFNjaGVtZVRhc2s6XSk6CisgICAgICAgICgtW0ZyYW1lU2NoZW1l
SGFuZGxlciB3ZWJWaWV3OnN0b3BVUkxTY2hlbWVUYXNrOl0pOgorCiAyMDE5LTExLTE1ICBBYWth
c2ggSmFpbiAgPGFha2FzaF9qYWluQGFwcGxlLmNvbT4KIAogICAgICAgICBbRVdTXSBVcGRhdGUg
d2luZG93cyBib3RzIGluIGNvbmZpZy5qc29uCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1dLVVJMU2NoZW1lSGFuZGxlci0xLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tVUkxTY2hlbWVIYW5kbGVyLTEu
bW0JKHJldmlzaW9uIDI1MjQ5NykKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvV0tVUkxTY2hlbWVIYW5kbGVyLTEubW0JKHdvcmtpbmcgY29weSkKQEAgLTQwLDYgKzQw
LDcgQEAKICNpbXBvcnQgPHd0Zi9SdW5Mb29wLmg+CiAjaW1wb3J0IDx3dGYvVGhyZWFkaW5nLmg+
CiAjaW1wb3J0IDx3dGYvVmVjdG9yLmg+CisjaW1wb3J0IDx3dGYvV2Vha09iakNQdHIuaD4KICNp
bXBvcnQgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgogCkBAIC03NDgsMyArNzQ5LDc3IEBAIFRFU1QoVVJMU2NoZW1lSGFuZGxlciwgVGhyZWFk
cykKICAgICAgICAgdGhlVGFzayA9IG5pbDsKICAgICB9KS0+d2FpdEZvckNvbXBsZXRpb24oKTsK
IH0KKworQGludGVyZmFjZSBGcmFtZVNjaGVtZUhhbmRsZXIgOiBOU09iamVjdCA8V0tVUkxTY2hl
bWVIYW5kbGVyPgorLSAodm9pZCl3YWl0Rm9yQWxsUmVxdWVzdHM7CistICh2b2lkKXNldEV4cGVj
dGVkV2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldzsKK0BlbmQKKworQGltcGxlbWVudGF0aW9u
IEZyYW1lU2NoZW1lSGFuZGxlciB7CisgICAgc2l6ZV90IF9yZXF1ZXN0Q291bnQ7CisgICAgV2Vh
a09iakNQdHI8V0tXZWJWaWV3PiBfd2ViVmlldzsKK30KKworLSAodm9pZCl3YWl0Rm9yQWxsUmVx
dWVzdHMKK3sKKyAgICB3aGlsZSAoX3JlcXVlc3RDb3VudCA8IDMpCisgICAgICAgIFRlc3RXZWJL
aXRBUEk6OlV0aWw6OnNwaW5SdW5Mb29wKCk7Cit9CisKKy0gKHZvaWQpc2V0RXhwZWN0ZWRXZWJW
aWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3Cit7CisgICAgX3dlYlZpZXcgPSB3ZWJWaWV3OworfQor
CistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgc3RhcnRVUkxTY2hlbWVUYXNr
OihpZCA8V0tVUkxTY2hlbWVUYXNrPil0YXNrCit7CisgICAgYXV0byBjaGVjayA9IFsmXSAoaWQ8
V0tVUkxTY2hlbWVUYXNrPiB0YXNrLCBjb25zdCBjaGFyKiB1cmwsIGJvb2wgbWFpbkZyYW1lLCBj
b25zdCBjaGFyKiByZXF1ZXN0LCBjb25zdCBjaGFyKiBvcmlnaW5Qcm90b2NvbCwgY29uc3QgY2hh
ciogb3JpZ2luSG9zdCwgTlNJbnRlZ2VyIG9yaWdpblBvcnQpIHsKKyAgICAgICAgRVhQRUNUX1dL
X1NUUkVRKHRhc2sucmVxdWVzdC5VUkwuYWJzb2x1dGVTdHJpbmcsIHVybCk7CisgICAgICAgIFdL
RnJhbWVJbmZvICppbmZvID0gKChpZDxXS1VSTFNjaGVtZVRhc2tQcml2YXRlPil0YXNrKS5fZnJh
bWU7CisgICAgICAgIEFTU0VSVF9FUShpbmZvLmlzTWFpbkZyYW1lLCBtYWluRnJhbWUpOworICAg
ICAgICBFWFBFQ1RfV0tfU1RSRVEoaW5mby5yZXF1ZXN0LlVSTC5hYnNvbHV0ZVN0cmluZywgcmVx
dWVzdCk7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShpbmZvLnNlY3VyaXR5T3JpZ2luLnByb3Rv
Y29sLCBvcmlnaW5Qcm90b2NvbCk7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShpbmZvLnNlY3Vy
aXR5T3JpZ2luLmhvc3QsIG9yaWdpbkhvc3QpOworICAgICAgICBBU1NFUlRfRVEoaW5mby5zZWN1
cml0eU9yaWdpbi5wb3J0LCBvcmlnaW5Qb3J0KTsKKyAgICB9OworCisgICAgYXV0byByZXNwb25k
ID0gW10gKGlkPFdLVVJMU2NoZW1lVGFzaz4gdGFzaywgY29uc3QgY2hhciogYnl0ZXMpIHsKKyAg
ICAgICAgW3Rhc2sgZGlkUmVjZWl2ZVJlc3BvbnNlOltbW05TVVJMUmVzcG9uc2UgYWxsb2NdIGlu
aXRXaXRoVVJMOnRhc2sucmVxdWVzdC5VUkwgTUlNRVR5cGU6QCJ0ZXh0L2h0bWwiIGV4cGVjdGVk
Q29udGVudExlbmd0aDpzdHJsZW4oYnl0ZXMpIHRleHRFbmNvZGluZ05hbWU6bmlsXSBhdXRvcmVs
ZWFzZV1dOworICAgICAgICBbdGFzayBkaWRSZWNlaXZlRGF0YTpbTlNEYXRhIGRhdGFXaXRoQnl0
ZXM6Ynl0ZXMgbGVuZ3RoOnN0cmxlbihieXRlcyldXTsKKyAgICAgICAgW3Rhc2sgZGlkRmluaXNo
XTsKKyAgICB9OworCisgICAgc3dpdGNoICgrK19yZXF1ZXN0Q291bnQpIHsKKyAgICBjYXNlIDE6
CisgICAgICAgIGNoZWNrKHRhc2ssICJmcmFtZTovL2hvc3QxL21haW4iLCB0cnVlLCAiIiwgIiIs
ICIiLCAwKTsKKyAgICAgICAgcmVzcG9uZCh0YXNrLCAiPGlmcmFtZSBzcmM9Jy8vaG9zdDI6MTIz
L2lmcmFtZSc+PC9pZnJhbWU+Iik7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIDI6CisgICAg
ICAgIGNoZWNrKHRhc2ssICJmcmFtZTovL2hvc3QyOjEyMy9pZnJhbWUiLCBmYWxzZSwgIiIsICJm
cmFtZSIsICJob3N0MSIsIDApOworICAgICAgICByZXNwb25kKHRhc2ssICI8c2NyaXB0PmZldGNo
KCdzdWJyZXNvdXJjZScpPC9zY3JpcHQ+Iik7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIDM6
CisgICAgICAgIGNoZWNrKHRhc2ssICJmcmFtZTovL2hvc3QyOjEyMy9zdWJyZXNvdXJjZSIsIGZh
bHNlLCAiZnJhbWU6Ly9ob3N0MjoxMjMvaWZyYW1lIiwgImZyYW1lIiwgImhvc3QyIiwgMTIzKTsK
KyAgICAgICAgcmVzcG9uZCh0YXNrLCAiZG9uZSEiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKworLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZp
ZXcgKil3ZWJWaWV3IHN0b3BVUkxTY2hlbWVUYXNrOihpZCA8V0tVUkxTY2hlbWVUYXNrPil0YXNr
Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK0BlbmQKKworVEVTVChVUkxTY2hl
bWVIYW5kbGVyLCBGcmFtZSkKK3sKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtX
S1dlYlZpZXdDb25maWd1cmF0aW9uIG5ld10pOworICAgIGF1dG8gaGFuZGxlciA9IGFkb3B0TlMo
W0ZyYW1lU2NoZW1lSGFuZGxlciBuZXddKTsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRVUkxTY2hl
bWVIYW5kbGVyOmhhbmRsZXIuZ2V0KCkgZm9yVVJMU2NoZW1lOkAiZnJhbWUiXTsKKyAgICBhdXRv
IHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFr
ZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0p
OworICAgIFtoYW5kbGVyIHNldEV4cGVjdGVkV2ViVmlldzp3ZWJWaWV3LmdldCgpXTsKKyAgICBb
d2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBV
UkxXaXRoU3RyaW5nOkAiZnJhbWU6Ly9ob3N0MS9tYWluIl1dXTsKKyAgICBbaGFuZGxlciB3YWl0
Rm9yQWxsUmVxdWVzdHNdOworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>383672</attachid>
            <date>2019-11-15 17:18:24 -0800</date>
            <delta_ts>2019-11-18 09:52:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-204265-20191115171824.patch</filename>
            <type>text/plain</type>
            <size>27728</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTI0OTgpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ1IEBACisyMDE5LTExLTE1ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFNQSSBvbiBX
S1VSTFNjaGVtZVRhc2sgdG8gYWNjZXNzIFdLRnJhbWVJbmZvIG9mIG9yaWdpbmF0aW5nIGZyYW1l
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDQyNjUK
KyAgICAgICAgPHJkYXI6Ly81NzE5Mzg4Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBDb3ZlcmVkIGJ5IEFQSSB0ZXN0cy4KKworICAgICAgICAqIFNo
YXJlZC9VUkxTY2hlbWVUYXNrUGFyYW1ldGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlVSTFNj
aGVtZVRhc2tQYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpVUkxT
Y2hlbWVUYXNrUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvVVJMU2NoZW1l
VGFza1BhcmFtZXRlcnMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLVVJMU2No
ZW1lVGFzay5tbToKKyAgICAgICAgKC1bV0tVUkxTY2hlbWVUYXNrSW1wbCBfZnJhbWVdKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLVVJMU2NoZW1lVGFza1ByaXZhdGUuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpzdGFydFVSTFNjaGVtZVRhc2tTaGFyZWQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmxvYWRTeW5jaHJvbm91c1VSTFNjaGVtZVRhc2spOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVVJM
U2NoZW1lSGFuZGxlcjo6c3RhcnRUYXNrKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2No
ZW1lSGFuZGxlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lVGFzazo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YktpdDo6V2ViVVJMU2NoZW1lVGFzazo6V2ViVVJMU2NoZW1lVGFzayk6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaDoKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1l
VGFzazo6ZnJhbWVJbmZvIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2Vi
TG9hZGVyU3RyYXRlZ3kuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJMb2FkZXJTdHJhdGVneTo6
dHJ5TG9hZGluZ1VzaW5nVVJMU2NoZW1lSGFuZGxlcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlVSTFNjaGVtZUhhbmRsZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlVSTFNjaGVtZUhhbmRsZXJQcm94eTo6c3RhcnROZXdUYXNrKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5Lmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZVRhc2tQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlVSTFNjaGVtZVRhc2tQcm94eTo6V2ViVVJMU2NoZW1lVGFza1Byb3h5KToKKyAgICAgICAg
KFdlYktpdDo6V2ViVVJMU2NoZW1lVGFza1Byb3h5OjpzdGFydExvYWRpbmcpOgorICAgICAgICAo
V2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrUHJveHk6OnN0b3BMb2FkaW5nKToKKyAgICAgICAgKFdl
YktpdDo6V2ViVVJMU2NoZW1lVGFza1Byb3h5OjpkaWRDb21wbGV0ZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlVSTFNjaGVtZVRhc2tQcm94eTo6aGFzTG9hZGVyKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lVGFza1Byb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6Oldl
YlVSTFNjaGVtZVRhc2tQcm94eTo6Y3JlYXRlKToKKwogMjAxOS0xMS0xNSAgQWxleCBDaHJpc3Rl
bnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlZHVjZSBzdHJ1Y3R1
cmUgY29waWVzIHdoZW4gY3JlYXRpbmcgYW4gQVBJOjpGcmFtZUluZm8KSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvU2hhcmVkL1VSTFNjaGVtZVRhc2tQYXJhbWV0ZXJzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1NoYXJlZC9VUkxTY2hlbWVUYXNrUGFyYW1ldGVycy5jcHAJKHJldmlzaW9u
IDI1MjQ5NykKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1VSTFNjaGVtZVRhc2tQYXJhbWV0ZXJz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsNyBAQCB2b2lkIFVSTFNjaGVtZVRhc2tQ
YXJhbWV0ZXJzOjplbmNvZGUoSVBDCiAgICAgICAgIHJlcXVlc3QuaHR0cEJvZHkoKS0+ZW5jb2Rl
KGVuY29kZXIpOwogICAgIH0gZWxzZQogICAgICAgICBlbmNvZGVyIDw8IGZhbHNlOworICAgIGVu
Y29kZXIgPDwgZnJhbWVJbmZvOwogfQogCiBPcHRpb25hbDxVUkxTY2hlbWVUYXNrUGFyYW1ldGVy
cz4gVVJMU2NoZW1lVGFza1BhcmFtZXRlcnM6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIp
CkBAIC03MCw4ICs3MSwxOCBAQCBPcHRpb25hbDxVUkxTY2hlbWVUYXNrUGFyYW1ldGVycz4gVVJM
U2NoCiAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgICAgICByZXF1ZXN0LnNl
dEhUVFBCb2R5KFdURk1vdmUoZm9ybURhdGEpKTsKICAgICB9CisgICAgCisgICAgT3B0aW9uYWw8
RnJhbWVJbmZvRGF0YT4gZnJhbWVJbmZvOworICAgIGRlY29kZXIgPj4gZnJhbWVJbmZvOworICAg
IGlmICghZnJhbWVJbmZvKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCi0gICAgcmV0
dXJuIHt7IFdURk1vdmUoKmhhbmRsZXJJZGVudGlmaWVyKSwgV1RGTW92ZSgqdGFza0lkZW50aWZp
ZXIpLCBXVEZNb3ZlKHJlcXVlc3QpIH19OworICAgIHJldHVybiB7eworICAgICAgICBXVEZNb3Zl
KCpoYW5kbGVySWRlbnRpZmllciksCisgICAgICAgIFdURk1vdmUoKnRhc2tJZGVudGlmaWVyKSwK
KyAgICAgICAgV1RGTW92ZShyZXF1ZXN0KSwKKyAgICAgICAgV1RGTW92ZSgqZnJhbWVJbmZvKSwK
KyAgICB9fTsKIH0KICAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dl
YktpdC9TaGFyZWQvVVJMU2NoZW1lVGFza1BhcmFtZXRlcnMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9VUkxTY2hlbWVUYXNrUGFyYW1ldGVycy5oCShyZXZpc2lvbiAyNTI0
OTcpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9VUkxTY2hlbWVUYXNrUGFyYW1ldGVycy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVk
ZSAiRnJhbWVJbmZvRGF0YS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+
CiAKIG5hbWVzcGFjZSBJUEMgewpAQCAtMzgsNiArMzksNyBAQCBzdHJ1Y3QgVVJMU2NoZW1lVGFz
a1BhcmFtZXRlcnMgewogICAgIHVpbnQ2NF90IGhhbmRsZXJJZGVudGlmaWVyIHsgMCB9OwogICAg
IHVpbnQ2NF90IHRhc2tJZGVudGlmaWVyIHsgMCB9OwogICAgIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCByZXF1ZXN0OworICAgIEZyYW1lSW5mb0RhdGEgZnJhbWVJbmZvOwogICAgIAogICAgIHZv
aWQgZW5jb2RlKElQQzo6RW5jb2RlciYpIGNvbnN0OwogICAgIHN0YXRpYyBPcHRpb25hbDxVUkxT
Y2hlbWVUYXNrUGFyYW1ldGVycz4gZGVjb2RlKElQQzo6RGVjb2RlciYpOwpJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCShyZXZpc2lvbiAyNTI0OTcpCisrKyBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC04ODU0LDcgKzg4NTQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c3RhcnRVUkxTY2hlbWVUYXNr
U2hhCiAgICAgYXV0byBpdGVyYXRvciA9IG1fdXJsU2NoZW1lSGFuZGxlcnNCeUlkZW50aWZpZXIu
ZmluZChwYXJhbWV0ZXJzLmhhbmRsZXJJZGVudGlmaWVyKTsKICAgICBNRVNTQUdFX0NIRUNLKHBy
b2Nlc3MsIGl0ZXJhdG9yICE9IG1fdXJsU2NoZW1lSGFuZGxlcnNCeUlkZW50aWZpZXIuZW5kKCkp
OwogCi0gICAgaXRlcmF0b3ItPnZhbHVlLT5zdGFydFRhc2soKnRoaXMsIHByb2Nlc3MsIHdlYlBh
Z2VJRCwgcGFyYW1ldGVycy50YXNrSWRlbnRpZmllciwgV1RGTW92ZShwYXJhbWV0ZXJzLnJlcXVl
c3QpLCBudWxscHRyKTsKKyAgICBpdGVyYXRvci0+dmFsdWUtPnN0YXJ0VGFzaygqdGhpcywgcHJv
Y2Vzcywgd2ViUGFnZUlELCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBudWxscHRyKTsKIH0KIAogdm9p
ZCBXZWJQYWdlUHJveHk6OnN0b3BVUkxTY2hlbWVUYXNrKHVpbnQ2NF90IGhhbmRsZXJJZGVudGlm
aWVyLCB1aW50NjRfdCB0YXNrSWRlbnRpZmllcikKQEAgLTg4NzAsNyArODg3MCw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5Ojpsb2FkU3luY2hyb25vdXNVUkxTY2gKICAgICBhdXRvIGl0ZXJhdG9yID0g
bV91cmxTY2hlbWVIYW5kbGVyc0J5SWRlbnRpZmllci5maW5kKHBhcmFtZXRlcnMuaGFuZGxlcklk
ZW50aWZpZXIpOwogICAgIE1FU1NBR0VfQ0hFQ0sobV9wcm9jZXNzLCBpdGVyYXRvciAhPSBtX3Vy
bFNjaGVtZUhhbmRsZXJzQnlJZGVudGlmaWVyLmVuZCgpKTsKIAotICAgIGl0ZXJhdG9yLT52YWx1
ZS0+c3RhcnRUYXNrKCp0aGlzLCBtX3Byb2Nlc3MsIG1fd2ViUGFnZUlELCBwYXJhbWV0ZXJzLnRh
c2tJZGVudGlmaWVyLCBXVEZNb3ZlKHBhcmFtZXRlcnMucmVxdWVzdCksIFdURk1vdmUocmVwbHkp
KTsKKyAgICBpdGVyYXRvci0+dmFsdWUtPnN0YXJ0VGFzaygqdGhpcywgbV9wcm9jZXNzLCBtX3dl
YlBhZ2VJRCwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgV1RGTW92ZShyZXBseSkpOwogfQogCiAjaWYg
RU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXIuY3BwCShyZXZpc2lvbiAyNTI0OTcpCisr
KyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IldlYlVSTFNjaGVtZUhhbmRsZXIuaCIKIAorI2luY2x1ZGUgIlVSTFNjaGVtZVRhc2tQYXJhbWV0
ZXJzLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViVVJMU2NoZW1l
VGFzay5oIgogCkBAIC00OCw5ICs0OSwxMCBAQCBXZWJVUkxTY2hlbWVIYW5kbGVyOjp+V2ViVVJM
U2NoZW1lSGFuZGxlCiAgICAgQVNTRVJUKG1fdGFza3MuaXNFbXB0eSgpKTsKIH0KIAotdm9pZCBX
ZWJVUkxTY2hlbWVIYW5kbGVyOjpzdGFydFRhc2soV2ViUGFnZVByb3h5JiBwYWdlLCBXZWJQcm9j
ZXNzUHJveHkmIHByb2Nlc3MsIFBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCwgdWludDY0X3QgdGFz
a0lkZW50aWZpZXIsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFN5bmNMb2FkQ29tcGxldGlv
bkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViVVJMU2NoZW1lSGFuZGxlcjo6
c3RhcnRUYXNrKFdlYlBhZ2VQcm94eSYgcGFnZSwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCBQ
YWdlSWRlbnRpZmllciB3ZWJQYWdlSUQsIFVSTFNjaGVtZVRhc2tQYXJhbWV0ZXJzJiYgcGFyYW1l
dGVycywgU3luY0xvYWRDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQogewot
ICAgIGF1dG8gcmVzdWx0ID0gbV90YXNrcy5hZGQodGFza0lkZW50aWZpZXIsIFdlYlVSTFNjaGVt
ZVRhc2s6OmNyZWF0ZSgqdGhpcywgcGFnZSwgcHJvY2Vzcywgd2ViUGFnZUlELCB0YXNrSWRlbnRp
ZmllciwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpKTsKKyAg
ICBhdXRvIHRhc2tJZGVudGlmaWVyID0gcGFyYW1ldGVycy50YXNrSWRlbnRpZmllcjsKKyAgICBh
dXRvIHJlc3VsdCA9IG1fdGFza3MuYWRkKHRhc2tJZGVudGlmaWVyLCBXZWJVUkxTY2hlbWVUYXNr
OjpjcmVhdGUoKnRoaXMsIHBhZ2UsIHByb2Nlc3MsIHdlYlBhZ2VJRCwgV1RGTW92ZShwYXJhbWV0
ZXJzKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpKTsKICAgICBBU1NFUlQocmVzdWx0Lmlz
TmV3RW50cnkpOwogCiAgICAgYXV0byBwYWdlRW50cnkgPSBtX3Rhc2tzQnlQYWdlSWRlbnRpZmll
ci5hZGQocGFnZS5pZGVudGlmaWVyKCksIEhhc2hTZXQ8dWludDY0X3Q+KCkpOwpJbmRleDogU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lSGFuZGxlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXIuaAkocmV2aXNpb24g
MjUyNDk3KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lSGFuZGxlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0MSw3IEBAIGNsYXNzIFJlc291cmNlUmVxdWVzdDsK
IAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK3N0cnVjdCBVUkxTY2hlbWVUYXNrUGFyYW1ldGVyczsK
IGNsYXNzIFdlYlBhZ2VQcm94eTsKIGNsYXNzIFdlYlByb2Nlc3NQcm94eTsKIApAQCAtNTMsNyAr
NTQsNyBAQCBwdWJsaWM6CiAKICAgICB1aW50NjRfdCBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1
cm4gbV9pZGVudGlmaWVyOyB9CiAKLSAgICB2b2lkIHN0YXJ0VGFzayhXZWJQYWdlUHJveHkmLCBX
ZWJQcm9jZXNzUHJveHkmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgdWludDY0X3QgdGFza0lk
ZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBTeW5jTG9hZENvbXBsZXRpb25I
YW5kbGVyJiYpOworICAgIHZvaWQgc3RhcnRUYXNrKFdlYlBhZ2VQcm94eSYsIFdlYlByb2Nlc3NQ
cm94eSYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBVUkxTY2hlbWVUYXNrUGFyYW1ldGVycyYm
LCBTeW5jTG9hZENvbXBsZXRpb25IYW5kbGVyJiYpOwogICAgIHZvaWQgc3RvcFRhc2soV2ViUGFn
ZVByb3h5JiwgdWludDY0X3QgdGFza0lkZW50aWZpZXIpOwogICAgIHZvaWQgc3RvcEFsbFRhc2tz
Rm9yUGFnZShXZWJQYWdlUHJveHkmLCBXZWJQcm9jZXNzUHJveHkqKTsKICAgICB2b2lkIHRhc2tD
b21wbGV0ZWQoV2ViVVJMU2NoZW1lVGFzayYpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAJKHJldmlzaW9uIDI1MjQ5NykKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
Niw4ICsyNiwxMCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYlVSTFNjaGVt
ZVRhc2suaCIKIAorI2luY2x1ZGUgIkFQSUZyYW1lSW5mby5oIgogI2luY2x1ZGUgIkRhdGFSZWZl
cmVuY2UuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgiCisjaW5jbHVk
ZSAiVVJMU2NoZW1lVGFza1BhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJXZWJFcnJvcnMuaCIKICNp
bmNsdWRlICJXZWJQYWdlTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKQEAg
LTM2LDE4ICszOCwxOSBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIAotUmVmPFdlYlVSTFNjaGVtZVRhc2s+IFdlYlVSTFNjaGVtZVRhc2s6OmNyZWF0ZShX
ZWJVUkxTY2hlbWVIYW5kbGVyJiBoYW5kbGVyLCBXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYlByb2Nl
c3NQcm94eSYgcHJvY2VzcywgUGFnZUlkZW50aWZpZXIgd2ViUGFnZUlELCB1aW50NjRfdCByZXNv
dXJjZUlkZW50aWZpZXIsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFN5bmNMb2FkQ29tcGxl
dGlvbkhhbmRsZXImJiBzeW5jQ29tcGxldGlvbkhhbmRsZXIpCitSZWY8V2ViVVJMU2NoZW1lVGFz
az4gV2ViVVJMU2NoZW1lVGFzazo6Y3JlYXRlKFdlYlVSTFNjaGVtZUhhbmRsZXImIGhhbmRsZXIs
IFdlYlBhZ2VQcm94eSYgcGFnZSwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCBQYWdlSWRlbnRp
ZmllciB3ZWJQYWdlSUQsIFVSTFNjaGVtZVRhc2tQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycywgU3lu
Y0xvYWRDb21wbGV0aW9uSGFuZGxlciYmIHN5bmNDb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJVUkxTY2hlbWVUYXNrKGhhbmRsZXIsIHBhZ2UsIHByb2Nl
c3MsIHdlYlBhZ2VJRCwgcmVzb3VyY2VJZGVudGlmaWVyLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZN
b3ZlKHN5bmNDb21wbGV0aW9uSGFuZGxlcikpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBX
ZWJVUkxTY2hlbWVUYXNrKGhhbmRsZXIsIHBhZ2UsIHByb2Nlc3MsIHdlYlBhZ2VJRCwgV1RGTW92
ZShwYXJhbWV0ZXJzKSwgV1RGTW92ZShzeW5jQ29tcGxldGlvbkhhbmRsZXIpKSk7CiB9CiAKLVdl
YlVSTFNjaGVtZVRhc2s6OldlYlVSTFNjaGVtZVRhc2soV2ViVVJMU2NoZW1lSGFuZGxlciYgaGFu
ZGxlciwgV2ViUGFnZVByb3h5JiBwYWdlLCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIFBhZ2VJ
ZGVudGlmaWVyIHdlYlBhZ2VJRCwgdWludDY0X3QgcmVzb3VyY2VJZGVudGlmaWVyLCBSZXNvdXJj
ZVJlcXVlc3QmJiByZXF1ZXN0LCBTeW5jTG9hZENvbXBsZXRpb25IYW5kbGVyJiYgc3luY0NvbXBs
ZXRpb25IYW5kbGVyKQorV2ViVVJMU2NoZW1lVGFzazo6V2ViVVJMU2NoZW1lVGFzayhXZWJVUkxT
Y2hlbWVIYW5kbGVyJiBoYW5kbGVyLCBXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYlByb2Nlc3NQcm94
eSYgcHJvY2VzcywgUGFnZUlkZW50aWZpZXIgd2ViUGFnZUlELCBVUkxTY2hlbWVUYXNrUGFyYW1l
dGVycyYmIHBhcmFtZXRlcnMsIFN5bmNMb2FkQ29tcGxldGlvbkhhbmRsZXImJiBzeW5jQ29tcGxl
dGlvbkhhbmRsZXIpCiAgICAgOiBtX3VybFNjaGVtZUhhbmRsZXIoaGFuZGxlcikKICAgICAsIG1f
cHJvY2VzcyhtYWtlUmVmKHByb2Nlc3MpKQotICAgICwgbV9pZGVudGlmaWVyKHJlc291cmNlSWRl
bnRpZmllcikKKyAgICAsIG1faWRlbnRpZmllcihwYXJhbWV0ZXJzLnRhc2tJZGVudGlmaWVyKQog
ICAgICwgbV9wYWdlUHJveHlJRChwYWdlLmlkZW50aWZpZXIoKSkKICAgICAsIG1fd2ViUGFnZUlE
KHdlYlBhZ2VJRCkKLSAgICAsIG1fcmVxdWVzdChXVEZNb3ZlKHJlcXVlc3QpKQorICAgICwgbV9y
ZXF1ZXN0KFdURk1vdmUocGFyYW1ldGVycy5yZXF1ZXN0KSkKKyAgICAsIG1fZnJhbWVJbmZvKEFQ
STo6RnJhbWVJbmZvOjpjcmVhdGUoV1RGTW92ZShwYXJhbWV0ZXJzLmZyYW1lSW5mbyksICZwYWdl
KSkKICAgICAsIG1fc3luY0NvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoc3luY0NvbXBsZXRpb25I
YW5kbGVyKSkKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwpJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaAkocmV2aXNpb24gMjUyNDk3KQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zNCw2ICszNCwxMCBAQAogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5j
bHVkZSA8d3RmL1JlZlB0ci5oPgogCituYW1lc3BhY2UgQVBJIHsKK2NsYXNzIEZyYW1lSW5mbzsK
K30KKwogbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBEYXRhUmVmZXJlbmNlOwogfQpAQCAtNDYsNiAr
NTAsNyBAQCBjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitzdHJ1
Y3QgVVJMU2NoZW1lVGFza1BhcmFtZXRlcnM7CiBjbGFzcyBXZWJVUkxTY2hlbWVIYW5kbGVyOwog
Y2xhc3MgV2ViUGFnZVByb3h5OwogCkBAIC01NCw3ICs1OSw3IEBAIHVzaW5nIFN5bmNMb2FkQ29t
cGxldGlvbkhhbmRsZXIgPSBDb21wbGUKIGNsYXNzIFdlYlVSTFNjaGVtZVRhc2sgOiBwdWJsaWMg
VGhyZWFkU2FmZVJlZkNvdW50ZWQ8V2ViVVJMU2NoZW1lVGFzaz4sIHB1YmxpYyBJbnN0YW5jZUNv
dW50ZWQ8V2ViVVJMU2NoZW1lVGFzaz4gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdlYlVS
TFNjaGVtZVRhc2spOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8V2ViVVJMU2NoZW1lVGFzaz4g
Y3JlYXRlKFdlYlVSTFNjaGVtZUhhbmRsZXImLCBXZWJQYWdlUHJveHkmLCBXZWJQcm9jZXNzUHJv
eHkmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgdWludDY0X3QgaWRlbnRpZmllciwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFN5bmNMb2FkQ29tcGxldGlvbkhhbmRsZXImJik7CisgICAg
c3RhdGljIFJlZjxXZWJVUkxTY2hlbWVUYXNrPiBjcmVhdGUoV2ViVVJMU2NoZW1lSGFuZGxlciYs
IFdlYlBhZ2VQcm94eSYsIFdlYlByb2Nlc3NQcm94eSYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
LCBVUkxTY2hlbWVUYXNrUGFyYW1ldGVycyYmLCBTeW5jTG9hZENvbXBsZXRpb25IYW5kbGVyJiYp
OwogCiAgICAgfldlYlVSTFNjaGVtZVRhc2soKTsKIApAQCAtNjMsNiArNjgsNyBAQCBwdWJsaWM6
CiAgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgd2ViUGFnZUlEKCkgY29uc3QgeyBBU1NFUlQo
UnVuTG9vcDo6aXNNYWluKCkpOyByZXR1cm4gbV93ZWJQYWdlSUQ7IH0KICAgICBXZWJQcm9jZXNz
UHJveHkqIHByb2Nlc3MoKSB7IEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7IHJldHVybiBtX3By
b2Nlc3MuZ2V0KCk7IH0KICAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QoKSBjb25zdCB7IEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7IHJldHVybiBtX3JlcXVlc3Q7
IH0KKyAgICBBUEk6OkZyYW1lSW5mbyYgZnJhbWVJbmZvKCkgY29uc3QgeyByZXR1cm4gbV9mcmFt
ZUluZm8uZ2V0KCk7IH0KIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIE5TVVJMUmVxdWVzdCAq
bnNSZXF1ZXN0KCkgY29uc3Q7CkBAIC04NSw3ICs5MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHBh
Z2VEZXN0cm95ZWQoKTsKIAogcHJpdmF0ZToKLSAgICBXZWJVUkxTY2hlbWVUYXNrKFdlYlVSTFNj
aGVtZUhhbmRsZXImLCBXZWJQYWdlUHJveHkmLCBXZWJQcm9jZXNzUHJveHkmLCBXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllciwgdWludDY0X3QgaWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYsIFN5bmNMb2FkQ29tcGxldGlvbkhhbmRsZXImJik7CisgICAgV2ViVVJMU2NoZW1lVGFz
ayhXZWJVUkxTY2hlbWVIYW5kbGVyJiwgV2ViUGFnZVByb3h5JiwgV2ViUHJvY2Vzc1Byb3h5Jiwg
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFVSTFNjaGVtZVRhc2tQYXJhbWV0ZXJzJiYsIFN5bmNM
b2FkQ29tcGxldGlvbkhhbmRsZXImJik7CiAKICAgICBib29sIGlzU3luYygpIGNvbnN0IHsgcmV0
dXJuICEhbV9zeW5jQ29tcGxldGlvbkhhbmRsZXI7IH0KIApAQCAtOTUsNiArMTAxLDcgQEAgcHJp
dmF0ZToKICAgICBXZWJQYWdlUHJveHlJZGVudGlmaWVyIG1fcGFnZVByb3h5SUQ7CiAgICAgV2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXIgbV93ZWJQYWdlSUQ7CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0IG1fcmVxdWVzdDsKKyAgICBSZWY8QVBJOjpGcmFtZUluZm8+IG1fZnJhbWVJbmZvOwog
ICAgIG11dGFibGUgTG9jayBtX3JlcXVlc3RMb2NrOwogICAgIGJvb2wgbV9zdG9wcGVkIHsgZmFs
c2UgfTsKICAgICBib29sIG1fcmVzcG9uc2VTZW50IHsgZmFsc2UgfTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VSTFNjaGVtZVRhc2subW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVVJMU2NoZW1lVGFzay5tbQko
cmV2aXNpb24gMjUyNDk3KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
VVJMU2NoZW1lVGFzay5tbQkod29ya2luZyBjb3B5KQpAQCAtMjQsOCArMjQsMTAgQEAKICAqLwog
CiAjaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIldLVVJMU2NoZW1lVGFza0ludGVybmFsLmgi
CisjaW1wb3J0ICJXS1VSTFNjaGVtZVRhc2suaCIKIAorI2ltcG9ydCAiV0tGcmFtZUluZm9JbnRl
cm5hbC5oIgorI2ltcG9ydCAiV0tVUkxTY2hlbWVUYXNrSW50ZXJuYWwuaCIKICNpbXBvcnQgIldl
YlVSTFNjaGVtZUhhbmRsZXIuaCIKICNpbXBvcnQgIldlYlVSTFNjaGVtZVRhc2suaCIKICNpbXBv
cnQgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgpAQCAtMTQ2LDYgKzE0OCwxMSBAQCAtICh2b2lk
KV9kaWRQZXJmb3JtUmVkaXJlY3Rpb246KE5TVVJMUmVzCiAgICAgcmFpc2VFeGNlcHRpb25JZk5l
Y2Vzc2FyeShyZXN1bHQpOwogfQogCistIChXS0ZyYW1lSW5mbyAqKV9mcmFtZQoreworICAgIHJl
dHVybiB3cmFwcGVyKF91cmxTY2hlbWVUYXNrLT50YXNrKCkuZnJhbWVJbmZvKCkpOworfQorCiAj
cHJhZ21hIG1hcmsgV0tPYmplY3QgcHJvdG9jb2wgaW1wbGVtZW50YXRpb24KIAogLSAoQVBJOjpP
YmplY3QmKV9hcGlPYmplY3QKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1VSTFNjaGVtZVRhc2tQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLVVJMU2NoZW1lVGFza1ByaXZhdGUuaAkocmV2aXNpb24gMjUy
NDk3KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVVJMU2NoZW1lVGFz
a1ByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsMTEgKzI1LDE0IEBACiAKICNpbXBvcnQg
PFdlYktpdC9XS1VSTFNjaGVtZVRhc2suaD4KIAorQGNsYXNzIFdLRnJhbWVJbmZvOworCiBXS19B
UElfQVZBSUxBQkxFKG1hY29zKDEwLjEzKSwgaW9zKDExLjApKQogQHByb3RvY29sIFdLVVJMU2No
ZW1lVGFza1ByaXZhdGUgPFdLVVJMU2NoZW1lVGFzaz4KIAogLSAodm9pZClfZGlkUGVyZm9ybVJl
ZGlyZWN0aW9uOihOU1VSTFJlc3BvbnNlICopcmVzcG9uc2UgbmV3UmVxdWVzdDooTlNVUkxSZXF1
ZXN0ICopcmVxdWVzdDsKIAogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBCT09MIF9y
ZXF1ZXN0T25seUlmQ2FjaGVkIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTUpLCBpb3MoMTMu
MCkpOworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBXS0ZyYW1lSW5mbyAqX2ZyYW1l
IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAK
IEBlbmQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0
cmF0ZWd5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay9XZWJMb2FkZXJTdHJhdGVneS5jcHAJKHJldmlzaW9uIDI1MjQ5NykKKysrIFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjI3LDE2ICsyMjcsMTggQEAgYm9vbCBXZWJMb2FkZXJTdHJhdGVneTo6dHJ5TG9hZGlu
Z1VzaW5nVQogICAgIGF1dG8qIHdlYkZyYW1lTG9hZGVyQ2xpZW50ID0gdG9XZWJGcmFtZUxvYWRl
ckNsaWVudChyZXNvdXJjZUxvYWRlci5mcmFtZUxvYWRlcigpLT5jbGllbnQoKSk7CiAgICAgYXV0
byogd2ViRnJhbWUgPSB3ZWJGcmFtZUxvYWRlckNsaWVudCA/IHdlYkZyYW1lTG9hZGVyQ2xpZW50
LT53ZWJGcmFtZSgpIDogbnVsbHB0cjsKICAgICBhdXRvKiB3ZWJQYWdlID0gd2ViRnJhbWUgPyB3
ZWJGcmFtZS0+cGFnZSgpIDogbnVsbHB0cjsKLSAgICBpZiAod2ViUGFnZSkgewotICAgICAgICBp
ZiAoYXV0byogaGFuZGxlciA9IHdlYlBhZ2UtPnVybFNjaGVtZUhhbmRsZXJGb3JTY2hlbWUocmVz
b3VyY2VMb2FkZXIucmVxdWVzdCgpLnVybCgpLnByb3RvY29sKCkudG9TdHJpbmdXaXRob3V0Q29w
eWluZygpKSkgewotICAgICAgICAgICAgTE9HKE5ldHdvcmtTY2hlZHVsaW5nLCAiKFdlYlByb2Nl
c3MpIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQsIFVSTCAnJXMnIHdpbGwgYmUgaGFu
ZGxlZCBieSBhIFVJUHJvY2VzcyBVUkwgc2NoZW1lIGhhbmRsZXIuIiwgcmVzb3VyY2VMb2FkZXIu
dXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKCJzY2hlZHVsZUxvYWQ6IFVSTCB3aWxsIGJlIGhhbmRsZWQgYnkgYSBVSVByb2Nl
c3MgVVJMIHNjaGVtZSBoYW5kbGVyIChmcmFtZT0lcCwgcmVzb3VyY2VJRD0lbHUpIiwgcmVzb3Vy
Y2VMb2FkZXIuZnJhbWUoKSwgcmVzb3VyY2VMb2FkZXIuaWRlbnRpZmllcigpKTsKKyAgICBpZiAo
IXdlYlBhZ2UpCisgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICAgICAgaGFuZGxlci0+
c3RhcnROZXdUYXNrKHJlc291cmNlTG9hZGVyKTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwot
ICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKKyAgICBhdXRvKiBoYW5kbGVyID0g
d2ViUGFnZS0+dXJsU2NoZW1lSGFuZGxlckZvclNjaGVtZShyZXNvdXJjZUxvYWRlci5yZXF1ZXN0
KCkudXJsKCkucHJvdG9jb2woKS50b1N0cmluZ1dpdGhvdXRDb3B5aW5nKCkpOworICAgIGlmICgh
aGFuZGxlcikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgTE9HKE5ldHdvcmtTY2hlZHVs
aW5nLCAiKFdlYlByb2Nlc3MpIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQsIFVSTCAn
JXMnIHdpbGwgYmUgaGFuZGxlZCBieSBhIFVJUHJvY2VzcyBVUkwgc2NoZW1lIGhhbmRsZXIuIiwg
cmVzb3VyY2VMb2FkZXIudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRCgic2NoZWR1bGVMb2FkOiBVUkwgd2lsbCBiZSBoYW5kbGVkIGJ5IGEg
VUlQcm9jZXNzIFVSTCBzY2hlbWUgaGFuZGxlciAoZnJhbWU9JXAsIHJlc291cmNlSUQ9JWx1KSIs
IHJlc291cmNlTG9hZGVyLmZyYW1lKCksIHJlc291cmNlTG9hZGVyLmlkZW50aWZpZXIoKSk7CisK
KyAgICBoYW5kbGVyLT5zdGFydE5ld1Rhc2socmVzb3VyY2VMb2FkZXIsICp3ZWJGcmFtZSk7Cisg
ICAgcmV0dXJuIHRydWU7CiB9CiAKIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9h
ZEZyb21OZXR3b3JrUHJvY2VzcyhSZXNvdXJjZUxvYWRlciYgcmVzb3VyY2VMb2FkZXIsIGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgV2ViUmVzb3VyY2VMb2FkZXI6OlRyYWNr
aW5nUGFyYW1ldGVycyYgdHJhY2tpbmdQYXJhbWV0ZXJzLCBib29sIHNob3VsZENsZWFyUmVmZXJy
ZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIFNlY29uZHMgbWF4aW11bUJ1ZmZlcmluZ1RpbWUpCkBA
IC00OTksNyArNTAxLDcgQEAgT3B0aW9uYWw8V2ViTG9hZGVyU3RyYXRlZ3k6OlN5bmNMb2FkUmVz
dQogICAgIExPRyhOZXR3b3JrU2NoZWR1bGluZywgIihXZWJQcm9jZXNzKSBXZWJMb2FkZXJTdHJh
dGVneTo6c2NoZWR1bGVMb2FkLCBzeW5jIGxvYWQgdG8gVVJMICclcycgd2lsbCBiZSBoYW5kbGVk
IGJ5IGEgVUlQcm9jZXNzIFVSTCBzY2hlbWUgaGFuZGxlci4iLCByZXF1ZXN0LnVybCgpLnN0cmlu
ZygpLnV0ZjgoKS5kYXRhKCkpOwogCiAgICAgU3luY0xvYWRSZXN1bHQgcmVzdWx0OwotICAgIGhh
bmRsZXItPmxvYWRTeW5jaHJvbm91c2x5KGlkZW50aWZpZXIsIHJlcXVlc3QsIHJlc3VsdC5yZXNw
b25zZSwgcmVzdWx0LmVycm9yLCByZXN1bHQuZGF0YSk7CisgICAgaGFuZGxlci0+bG9hZFN5bmNo
cm9ub3VzbHkoaWRlbnRpZmllciwgKndlYkZyYW1lLCByZXF1ZXN0LCByZXN1bHQucmVzcG9uc2Us
IHJlc3VsdC5lcnJvciwgcmVzdWx0LmRhdGEpOwogCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZUhhbmRsZXJQ
cm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViVVJMU2NoZW1lSGFuZGxlclByb3h5LmNwcAkocmV2aXNpb24gMjUyNDk3KQorKysgU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNTMsMTkgKzUzLDE5IEBAIFdlYlVSTFNjaGVtZUhhbmRsZXJQcm94
eTo6fldlYlVSTFNjaGVtZUgKICAgICBBU1NFUlQobV90YXNrcy5pc0VtcHR5KCkpOwogfQogCi12
b2lkIFdlYlVSTFNjaGVtZUhhbmRsZXJQcm94eTo6c3RhcnROZXdUYXNrKFJlc291cmNlTG9hZGVy
JiBsb2FkZXIpCit2b2lkIFdlYlVSTFNjaGVtZUhhbmRsZXJQcm94eTo6c3RhcnROZXdUYXNrKFJl
c291cmNlTG9hZGVyJiBsb2FkZXIsIFdlYkZyYW1lJiB3ZWJGcmFtZSkKIHsKLSAgICBhdXRvIHJl
c3VsdCA9IG1fdGFza3MuYWRkKGxvYWRlci5pZGVudGlmaWVyKCksIFdlYlVSTFNjaGVtZVRhc2tQ
cm94eTo6Y3JlYXRlKCp0aGlzLCBsb2FkZXIpKTsKKyAgICBhdXRvIHJlc3VsdCA9IG1fdGFza3Mu
YWRkKGxvYWRlci5pZGVudGlmaWVyKCksIFdlYlVSTFNjaGVtZVRhc2tQcm94eTo6Y3JlYXRlKCp0
aGlzLCBsb2FkZXIsIHdlYkZyYW1lKSk7CiAgICAgQVNTRVJUKHJlc3VsdC5pc05ld0VudHJ5KTsK
IAogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYkxvYWRlclN0cmF0ZWd5KCkuYWRkVVJM
U2NoZW1lVGFza1Byb3h5KCpyZXN1bHQuaXRlcmF0b3ItPnZhbHVlKTsKICAgICByZXN1bHQuaXRl
cmF0b3ItPnZhbHVlLT5zdGFydExvYWRpbmcoKTsKIH0KIAotdm9pZCBXZWJVUkxTY2hlbWVIYW5k
bGVyUHJveHk6OmxvYWRTeW5jaHJvbm91c2x5KFJlc291cmNlTG9hZElkZW50aWZpZXIgbG9hZElk
ZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzb3VyY2VSZXNwb25z
ZSYgcmVzcG9uc2UsIFJlc291cmNlRXJyb3ImIGVycm9yLCBWZWN0b3I8Y2hhcj4mIGRhdGEpCit2
b2lkIFdlYlVSTFNjaGVtZUhhbmRsZXJQcm94eTo6bG9hZFN5bmNocm9ub3VzbHkoUmVzb3VyY2VM
b2FkSWRlbnRpZmllciBsb2FkSWRlbnRpZmllciwgV2ViRnJhbWUmIHdlYkZyYW1lLCBjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZXNv
dXJjZUVycm9yJiBlcnJvciwgVmVjdG9yPGNoYXI+JiBkYXRhKQogewogICAgIGRhdGEuc2hyaW5r
KDApOwotICAgIGlmICghbV93ZWJQYWdlLnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OkxvYWRTeW5jaHJvbm91c1VSTFNjaGVtZVRhc2soVVJMU2NoZW1lVGFza1BhcmFtZXRlcnMgeyBt
X2lkZW50aWZpZXIsIGxvYWRJZGVudGlmaWVyLCByZXF1ZXN0IH0pLCBNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpMb2FkU3luY2hyb25vdXNVUkxTY2hlbWVUYXNrOjpSZXBseShyZXNwb25zZSwgZXJy
b3IsIGRhdGEpKSkgeworICAgIGlmICghbV93ZWJQYWdlLnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkxvYWRTeW5jaHJvbm91c1VSTFNjaGVtZVRhc2soVVJMU2NoZW1lVGFza1BhcmFt
ZXRlcnMgeyBtX2lkZW50aWZpZXIsIGxvYWRJZGVudGlmaWVyLCByZXF1ZXN0LCB3ZWJGcmFtZS5p
bmZvKCkgfSksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkxvYWRTeW5jaHJvbm91c1VSTFNjaGVt
ZVRhc2s6OlJlcGx5KHJlc3BvbnNlLCBlcnJvciwgZGF0YSkpKSB7CiAgICAgICAgIGVycm9yID0g
ZmFpbGVkQ3VzdG9tUHJvdG9jb2xTeW5jTG9hZChyZXF1ZXN0KTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVt
ZUhhbmRsZXJQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlVSTFNjaGVtZUhhbmRsZXJQcm94eS5oCShyZXZpc2lvbiAyNTI0OTcpCisrKyBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVIYW5kbGVyUHJveHku
aAkod29ya2luZyBjb3B5KQpAQCAtNDksMTAgKzQ5LDEwIEBAIHB1YmxpYzoKICAgICB9CiAgICAg
fldlYlVSTFNjaGVtZUhhbmRsZXJQcm94eSgpOwogCi0gICAgdm9pZCBzdGFydE5ld1Rhc2soV2Vi
Q29yZTo6UmVzb3VyY2VMb2FkZXImKTsKKyAgICB2b2lkIHN0YXJ0TmV3VGFzayhXZWJDb3JlOjpS
ZXNvdXJjZUxvYWRlciYsIFdlYkZyYW1lJik7CiAgICAgdm9pZCBzdG9wQWxsVGFza3MoKTsKIAot
ICAgIHZvaWQgbG9hZFN5bmNocm9ub3VzbHkoUmVzb3VyY2VMb2FkSWRlbnRpZmllciwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIFdl
YkNvcmU6OlJlc291cmNlRXJyb3ImLCBWZWN0b3I8Y2hhcj4mKTsKKyAgICB2b2lkIGxvYWRTeW5j
aHJvbm91c2x5KFJlc291cmNlTG9hZElkZW50aWZpZXIsIFdlYkZyYW1lJiwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIFdlYkNvcmU6
OlJlc291cmNlRXJyb3ImLCBWZWN0b3I8Y2hhcj4mKTsKIAogICAgIHVpbnQ2NF90IGlkZW50aWZp
ZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KICAgICBXZWJQYWdlJiBwYWdlKCkg
eyByZXR1cm4gbV93ZWJQYWdlOyB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJVUkxTY2hlbWVUYXNrUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZVRhc2tQcm94eS5jcHAJKHJldmlzaW9u
IDI1MjQ5NykKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVt
ZVRhc2tQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDkgKzQwLDEwIEBACiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1XZWJVUkxTY2hlbWVUYXNr
UHJveHk6OldlYlVSTFNjaGVtZVRhc2tQcm94eShXZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkmIGhh
bmRsZXIsIFJlc291cmNlTG9hZGVyJiBsb2FkZXIpCitXZWJVUkxTY2hlbWVUYXNrUHJveHk6Oldl
YlVSTFNjaGVtZVRhc2tQcm94eShXZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkmIGhhbmRsZXIsIFJl
c291cmNlTG9hZGVyJiBsb2FkZXIsIFdlYkZyYW1lJiBmcmFtZSkKICAgICA6IG1fdXJsU2NoZW1l
SGFuZGxlcihoYW5kbGVyKQogICAgICwgbV9jb3JlTG9hZGVyKCZsb2FkZXIpCisgICAgLCBtX2Zy
YW1lKCZmcmFtZSkKICAgICAsIG1fcmVxdWVzdChsb2FkZXIucmVxdWVzdCgpKQogICAgICwgbV9p
ZGVudGlmaWVyKGxvYWRlci5pZGVudGlmaWVyKCkpCiB7CkBAIC01MSw3ICs1Miw4IEBAIFdlYlVS
TFNjaGVtZVRhc2tQcm94eTo6V2ViVVJMU2NoZW1lVGFza1AKIHZvaWQgV2ViVVJMU2NoZW1lVGFz
a1Byb3h5OjpzdGFydExvYWRpbmcoKQogewogICAgIEFTU0VSVChtX2NvcmVMb2FkZXIpOwotICAg
IG1fdXJsU2NoZW1lSGFuZGxlci5wYWdlKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpT
dGFydFVSTFNjaGVtZVRhc2soe21fdXJsU2NoZW1lSGFuZGxlci5pZGVudGlmaWVyKCksIG1fY29y
ZUxvYWRlci0+aWRlbnRpZmllcigpLCBtX3JlcXVlc3R9KSk7CisgICAgQVNTRVJUKG1fZnJhbWUp
OworICAgIG1fdXJsU2NoZW1lSGFuZGxlci5wYWdlKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpTdGFydFVSTFNjaGVtZVRhc2soVVJMU2NoZW1lVGFza1BhcmFtZXRlcnMgeyBtX3VybFNj
aGVtZUhhbmRsZXIuaWRlbnRpZmllcigpLCBtX2NvcmVMb2FkZXItPmlkZW50aWZpZXIoKSwgbV9y
ZXF1ZXN0LCBtX2ZyYW1lLT5pbmZvKCkgfSkpOwogfQogCiB2b2lkIFdlYlVSTFNjaGVtZVRhc2tQ
cm94eTo6c3RvcExvYWRpbmcoKQpAQCAtNTksNiArNjEsNyBAQCB2b2lkIFdlYlVSTFNjaGVtZVRh
c2tQcm94eTo6c3RvcExvYWRpbmcoCiAgICAgQVNTRVJUKG1fY29yZUxvYWRlcik7CiAgICAgbV91
cmxTY2hlbWVIYW5kbGVyLnBhZ2UoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlN0b3BV
UkxTY2hlbWVUYXNrKG1fdXJsU2NoZW1lSGFuZGxlci5pZGVudGlmaWVyKCksIG1fY29yZUxvYWRl
ci0+aWRlbnRpZmllcigpKSk7CiAgICAgbV9jb3JlTG9hZGVyID0gbnVsbHB0cjsKKyAgICBtX2Zy
YW1lID0gbnVsbHB0cjsKIAogICAgIC8vIFRoaXMgbGluZSB3aWxsIHJlc3VsdCBpbiB0aGlzIGJl
aW5nIGRlbGV0ZWQuCiAgICAgbV91cmxTY2hlbWVIYW5kbGVyLnRhc2tEaWRTdG9wTG9hZGluZygq
dGhpcyk7CkBAIC0xNDksMTIgKzE1MiwxNSBAQCB2b2lkIFdlYlVSTFNjaGVtZVRhc2tQcm94eTo6
ZGlkQ29tcGxldGUoCiAgICAgICAgIG1fY29yZUxvYWRlci0+ZGlkRmFpbChlcnJvcik7CiAKICAg
ICBtX2NvcmVMb2FkZXIgPSBudWxscHRyOworICAgIG1fZnJhbWUgPSBudWxscHRyOwogfQogCiBi
b29sIFdlYlVSTFNjaGVtZVRhc2tQcm94eTo6aGFzTG9hZGVyKCkKIHsKLSAgICBpZiAobV9jb3Jl
TG9hZGVyICYmIG1fY29yZUxvYWRlci0+cmVhY2hlZFRlcm1pbmFsU3RhdGUoKSkKKyAgICBpZiAo
bV9jb3JlTG9hZGVyICYmIG1fY29yZUxvYWRlci0+cmVhY2hlZFRlcm1pbmFsU3RhdGUoKSkgewog
ICAgICAgICBtX2NvcmVMb2FkZXIgPSBudWxscHRyOworICAgICAgICBtX2ZyYW1lID0gbnVsbHB0
cjsKKyAgICB9CiAKICAgICByZXR1cm4gbV9jb3JlTG9hZGVyOwogfQpJbmRleDogU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lVGFza1Byb3h5LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lVGFza1By
b3h5LmgJKHJldmlzaW9uIDI1MjQ5NykKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlVSTFNjaGVtZVRhc2tQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNywxMyArMzcs
MTQgQEAgY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK2Ns
YXNzIFdlYkZyYW1lOwogY2xhc3MgV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5OwogCiBjbGFzcyBX
ZWJVUkxTY2hlbWVUYXNrUHJveHkgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJVUkxTY2hlbWVUYXNr
UHJveHk+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdlYlVSTFNjaGVtZVRhc2tQcm94eT4g
Y3JlYXRlKFdlYlVSTFNjaGVtZUhhbmRsZXJQcm94eSYgaGFuZGxlciwgV2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkZXImIGxvYWRlcikKKyAgICBzdGF0aWMgUmVmPFdlYlVSTFNjaGVtZVRhc2tQcm94eT4g
Y3JlYXRlKFdlYlVSTFNjaGVtZUhhbmRsZXJQcm94eSYgaGFuZGxlciwgV2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkZXImIGxvYWRlciwgV2ViRnJhbWUmIHdlYkZyYW1lKQogICAgIHsKLSAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgV2ViVVJMU2NoZW1lVGFza1Byb3h5KGhhbmRsZXIsIGxvYWRlcikp
OworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJVUkxTY2hlbWVUYXNrUHJveHkoaGFu
ZGxlciwgbG9hZGVyLCB3ZWJGcmFtZSkpOwogICAgIH0KICAgICAKICAgICBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QoKSBjb25zdCB7IHJldHVybiBtX3JlcXVlc3Q7IH0K
QEAgLTU5LDcgKzYwLDcgQEAgcHVibGljOgogICAgIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcigp
IGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQogCiBwcml2YXRlOgotICAgIFdlYlVSTFNj
aGVtZVRhc2tQcm94eShXZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkmLCBXZWJDb3JlOjpSZXNvdXJj
ZUxvYWRlciYpOworICAgIFdlYlVSTFNjaGVtZVRhc2tQcm94eShXZWJVUkxTY2hlbWVIYW5kbGVy
UHJveHkmLCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRlciYsIFdlYkZyYW1lJik7CiAgICAgYm9vbCBo
YXNMb2FkZXIoKTsKIAogICAgIHZvaWQgcXVldWVUYXNrKEZ1bmN0aW9uPHZvaWQoKT4mJiB0YXNr
KSB7IG1fcXVldWVkVGFza3MuYXBwZW5kKFdURk1vdmUodGFzaykpOyB9CkBAIC02Nyw2ICs2OCw3
IEBAIHByaXZhdGU6CiAKICAgICBXZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkmIG1fdXJsU2NoZW1l
SGFuZGxlcjsKICAgICBSZWZQdHI8V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI+IG1fY29yZUxvYWRl
cjsKKyAgICBSZWZQdHI8V2ViRnJhbWU+IG1fZnJhbWU7CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0IG1fcmVxdWVzdDsKICAgICB1bnNpZ25lZCBsb25nIG1faWRlbnRpZmllcjsKICAgICBi
b29sIG1fd2FpdGluZ0ZvckNvbXBsZXRpb25IYW5kbGVyIHsgZmFsc2UgfTsKSW5kZXg6IFRvb2xz
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1MjUx
MykKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisy
MDE5LTExLTE1ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisK
KyAgICAgICAgQWRkIFNQSSBvbiBXS1VSTFNjaGVtZVRhc2sgdG8gYWNjZXNzIFdLRnJhbWVJbmZv
IG9mIG9yaWdpbmF0aW5nIGZyYW1lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMDQyNjUKKyAgICAgICAgPHJkYXI6Ly81NzE5Mzg4Mz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvV0tVUkxTY2hlbWVIYW5kbGVyLTEubW06CisgICAgICAgICgtW0Zy
YW1lU2NoZW1lSGFuZGxlciB3YWl0Rm9yQWxsUmVxdWVzdHNdKToKKyAgICAgICAgKC1bRnJhbWVT
Y2hlbWVIYW5kbGVyIHNldEV4cGVjdGVkV2ViVmlldzpdKToKKyAgICAgICAgKC1bRnJhbWVTY2hl
bWVIYW5kbGVyIHdlYlZpZXc6c3RhcnRVUkxTY2hlbWVUYXNrOl0pOgorICAgICAgICAoLVtGcmFt
ZVNjaGVtZUhhbmRsZXIgd2ViVmlldzpzdG9wVVJMU2NoZW1lVGFzazpdKToKKwogMjAxOS0xMS0x
NSAgQWFrYXNoIEphaW4gIDxhYWthc2hfamFpbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0VXU10g
VXBkYXRlIHdpbmRvd3MgYm90cyBpbiBjb25maWcuanNvbgpJbmRleDogVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1VSTFNjaGVtZUhhbmRsZXItMS5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLVVJMU2NoZW1lSGFu
ZGxlci0xLm1tCShyZXZpc2lvbiAyNTI0OTcpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1dLVVJMU2NoZW1lSGFuZGxlci0xLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00
MCw2ICs0MCw3IEBACiAjaW1wb3J0IDx3dGYvUnVuTG9vcC5oPgogI2ltcG9ydCA8d3RmL1RocmVh
ZGluZy5oPgogI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgorI2ltcG9ydCA8d3RmL1dlYWtPYmpDUHRy
Lmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KIApAQCAtNzQ4LDMgKzc0OSw3OCBAQCBURVNUKFVSTFNjaGVtZUhhbmRsZXIs
IFRocmVhZHMpCiAgICAgICAgIHRoZVRhc2sgPSBuaWw7CiAgICAgfSktPndhaXRGb3JDb21wbGV0
aW9uKCk7CiB9CisKK0BpbnRlcmZhY2UgRnJhbWVTY2hlbWVIYW5kbGVyIDogTlNPYmplY3QgPFdL
VVJMU2NoZW1lSGFuZGxlcj4KKy0gKHZvaWQpd2FpdEZvckFsbFJlcXVlc3RzOworLSAodm9pZClz
ZXRFeHBlY3RlZFdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXc7CitAZW5kCisKK0BpbXBsZW1l
bnRhdGlvbiBGcmFtZVNjaGVtZUhhbmRsZXIgeworICAgIHNpemVfdCBfcmVxdWVzdENvdW50Owor
ICAgIFdlYWtPYmpDUHRyPFdLV2ViVmlldz4gX3dlYlZpZXc7Cit9CisKKy0gKHZvaWQpd2FpdEZv
ckFsbFJlcXVlc3RzCit7CisgICAgd2hpbGUgKF9yZXF1ZXN0Q291bnQgPCAzKQorICAgICAgICBU
ZXN0V2ViS2l0QVBJOjpVdGlsOjpzcGluUnVuTG9vcCgpOworfQorCistICh2b2lkKXNldEV4cGVj
dGVkV2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldworeworICAgIF93ZWJWaWV3ID0gd2ViVmll
dzsKK30KKworLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHN0YXJ0VVJMU2No
ZW1lVGFzazooaWQgPFdLVVJMU2NoZW1lVGFzaz4pdGFzaworeworICAgIGF1dG8gY2hlY2sgPSBb
Jl0gKGlkPFdLVVJMU2NoZW1lVGFzaz4gdGFzaywgY29uc3QgY2hhciogdXJsLCBib29sIG1haW5G
cmFtZSwgY29uc3QgY2hhciogcmVxdWVzdCwgY29uc3QgY2hhciogb3JpZ2luUHJvdG9jb2wsIGNv
bnN0IGNoYXIqIG9yaWdpbkhvc3QsIE5TSW50ZWdlciBvcmlnaW5Qb3J0KSB7CisgICAgICAgIEVY
UEVDVF9XS19TVFJFUSh0YXNrLnJlcXVlc3QuVVJMLmFic29sdXRlU3RyaW5nLCB1cmwpOworICAg
ICAgICBXS0ZyYW1lSW5mbyAqaW5mbyA9ICgoaWQ8V0tVUkxTY2hlbWVUYXNrUHJpdmF0ZT4pdGFz
aykuX2ZyYW1lOworICAgICAgICBFWFBFQ1RfRVEoaW5mby5pc01haW5GcmFtZSwgbWFpbkZyYW1l
KTsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGluZm8ucmVxdWVzdC5VUkwuYWJzb2x1dGVTdHJp
bmcsIHJlcXVlc3QpOworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoaW5mby5zZWN1cml0eU9yaWdp
bi5wcm90b2NvbCwgb3JpZ2luUHJvdG9jb2wpOworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoaW5m
by5zZWN1cml0eU9yaWdpbi5ob3N0LCBvcmlnaW5Ib3N0KTsKKyAgICAgICAgRVhQRUNUX0VRKGlu
Zm8uc2VjdXJpdHlPcmlnaW4ucG9ydCwgb3JpZ2luUG9ydCk7CisgICAgICAgIEVYUEVDVF9FUShp
bmZvLndlYlZpZXcsIF93ZWJWaWV3LmdldCgpLmdldCgpKTsKKyAgICB9OworCisgICAgYXV0byBy
ZXNwb25kID0gW10gKGlkPFdLVVJMU2NoZW1lVGFzaz4gdGFzaywgY29uc3QgY2hhciogYnl0ZXMp
IHsKKyAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZVJlc3BvbnNlOltbW05TVVJMUmVzcG9uc2UgYWxs
b2NdIGluaXRXaXRoVVJMOnRhc2sucmVxdWVzdC5VUkwgTUlNRVR5cGU6QCJ0ZXh0L2h0bWwiIGV4
cGVjdGVkQ29udGVudExlbmd0aDpzdHJsZW4oYnl0ZXMpIHRleHRFbmNvZGluZ05hbWU6bmlsXSBh
dXRvcmVsZWFzZV1dOworICAgICAgICBbdGFzayBkaWRSZWNlaXZlRGF0YTpbTlNEYXRhIGRhdGFX
aXRoQnl0ZXM6Ynl0ZXMgbGVuZ3RoOnN0cmxlbihieXRlcyldXTsKKyAgICAgICAgW3Rhc2sgZGlk
RmluaXNoXTsKKyAgICB9OworCisgICAgc3dpdGNoICgrK19yZXF1ZXN0Q291bnQpIHsKKyAgICBj
YXNlIDE6CisgICAgICAgIGNoZWNrKHRhc2ssICJmcmFtZTovL2hvc3QxL21haW4iLCB0cnVlLCAi
IiwgIiIsICIiLCAwKTsKKyAgICAgICAgcmVzcG9uZCh0YXNrLCAiPGlmcmFtZSBzcmM9Jy8vaG9z
dDI6MTIzL2lmcmFtZSc+PC9pZnJhbWU+Iik7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIDI6
CisgICAgICAgIGNoZWNrKHRhc2ssICJmcmFtZTovL2hvc3QyOjEyMy9pZnJhbWUiLCBmYWxzZSwg
IiIsICJmcmFtZSIsICJob3N0MSIsIDApOworICAgICAgICByZXNwb25kKHRhc2ssICI8c2NyaXB0
PmZldGNoKCdzdWJyZXNvdXJjZScpPC9zY3JpcHQ+Iik7CisgICAgICAgIHJldHVybjsKKyAgICBj
YXNlIDM6CisgICAgICAgIGNoZWNrKHRhc2ssICJmcmFtZTovL2hvc3QyOjEyMy9zdWJyZXNvdXJj
ZSIsIGZhbHNlLCAiZnJhbWU6Ly9ob3N0MjoxMjMvaWZyYW1lIiwgImZyYW1lIiwgImhvc3QyIiwg
MTIzKTsKKyAgICAgICAgcmVzcG9uZCh0YXNrLCAiZG9uZSEiKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKworLSAodm9pZCl3ZWJWaWV3OihX
S1dlYlZpZXcgKil3ZWJWaWV3IHN0b3BVUkxTY2hlbWVUYXNrOihpZCA8V0tVUkxTY2hlbWVUYXNr
Pil0YXNrCit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK0BlbmQKKworVEVTVChV
UkxTY2hlbWVIYW5kbGVyLCBGcmFtZSkKK3sKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9w
dE5TKFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIG5ld10pOworICAgIGF1dG8gaGFuZGxlciA9IGFk
b3B0TlMoW0ZyYW1lU2NoZW1lSGFuZGxlciBuZXddKTsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRV
UkxTY2hlbWVIYW5kbGVyOmhhbmRsZXIuZ2V0KCkgZm9yVVJMU2NoZW1lOkAiZnJhbWUiXTsKKyAg
ICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1l
Ok5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5n
ZXQoKV0pOworICAgIFtoYW5kbGVyIHNldEV4cGVjdGVkV2ViVmlldzp3ZWJWaWV3LmdldCgpXTsK
KyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltO
U1VSTCBVUkxXaXRoU3RyaW5nOkAiZnJhbWU6Ly9ob3N0MS9tYWluIl1dXTsKKyAgICBbaGFuZGxl
ciB3YWl0Rm9yQWxsUmVxdWVzdHNdOworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>383755</attachid>
            <date>2019-11-18 09:52:47 -0800</date>
            <delta_ts>2020-01-21 12:40:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-204265-20191118095246.patch</filename>
            <type>text/plain</type>
            <size>27919</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTI0NzIpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ1IEBACisyMDE5LTExLTE4ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFNQSSBvbiBX
S1VSTFNjaGVtZVRhc2sgdG8gYWNjZXNzIFdLRnJhbWVJbmZvIG9mIG9yaWdpbmF0aW5nIGZyYW1l
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDQyNjUK
KyAgICAgICAgPHJkYXI6Ly81NzE5Mzg4Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBDb3ZlcmVkIGJ5IEFQSSB0ZXN0cy4KKworICAgICAgICAqIFNo
YXJlZC9VUkxTY2hlbWVUYXNrUGFyYW1ldGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlVSTFNj
aGVtZVRhc2tQYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpVUkxT
Y2hlbWVUYXNrUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvVVJMU2NoZW1l
VGFza1BhcmFtZXRlcnMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLVVJMU2No
ZW1lVGFzay5tbToKKyAgICAgICAgKC1bV0tVUkxTY2hlbWVUYXNrSW1wbCBfZnJhbWVdKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLVVJMU2NoZW1lVGFza1ByaXZhdGUuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpzdGFydFVSTFNjaGVtZVRhc2tTaGFyZWQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmxvYWRTeW5jaHJvbm91c1VSTFNjaGVtZVRhc2spOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVVJM
U2NoZW1lSGFuZGxlcjo6c3RhcnRUYXNrKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2No
ZW1lSGFuZGxlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lVGFzazo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YktpdDo6V2ViVVJMU2NoZW1lVGFzazo6V2ViVVJMU2NoZW1lVGFzayk6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaDoKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1l
VGFzazo6ZnJhbWVJbmZvIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2Vi
TG9hZGVyU3RyYXRlZ3kuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJMb2FkZXJTdHJhdGVneTo6
dHJ5TG9hZGluZ1VzaW5nVVJMU2NoZW1lSGFuZGxlcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlVSTFNjaGVtZUhhbmRsZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlVSTFNjaGVtZUhhbmRsZXJQcm94eTo6c3RhcnROZXdUYXNrKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5Lmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZVRhc2tQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlVSTFNjaGVtZVRhc2tQcm94eTo6V2ViVVJMU2NoZW1lVGFza1Byb3h5KToKKyAgICAgICAg
KFdlYktpdDo6V2ViVVJMU2NoZW1lVGFza1Byb3h5OjpzdGFydExvYWRpbmcpOgorICAgICAgICAo
V2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrUHJveHk6OnN0b3BMb2FkaW5nKToKKyAgICAgICAgKFdl
YktpdDo6V2ViVVJMU2NoZW1lVGFza1Byb3h5OjpkaWRDb21wbGV0ZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlVSTFNjaGVtZVRhc2tQcm94eTo6aGFzTG9hZGVyKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lVGFza1Byb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6Oldl
YlVSTFNjaGVtZVRhc2tQcm94eTo6Y3JlYXRlKToKKwogMjAxOS0xMS0xMiAgWW91ZW5uIEZhYmxl
dCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgVXBkYXRlIGxpYndlYnJ0YyB0byBNNzgK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1VSTFNjaGVtZVRhc2tQYXJhbWV0ZXJzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9VUkxTY2hlbWVUYXNrUGFyYW1ldGVy
cy5jcHAJKHJldmlzaW9uIDI1MjQ3MikKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1VSTFNjaGVt
ZVRhc2tQYXJhbWV0ZXJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsNyBAQCB2b2lk
IFVSTFNjaGVtZVRhc2tQYXJhbWV0ZXJzOjplbmNvZGUoSVBDCiAgICAgICAgIHJlcXVlc3QuaHR0
cEJvZHkoKS0+ZW5jb2RlKGVuY29kZXIpOwogICAgIH0gZWxzZQogICAgICAgICBlbmNvZGVyIDw8
IGZhbHNlOworICAgIGVuY29kZXIgPDwgZnJhbWVJbmZvOwogfQogCiBPcHRpb25hbDxVUkxTY2hl
bWVUYXNrUGFyYW1ldGVycz4gVVJMU2NoZW1lVGFza1BhcmFtZXRlcnM6OmRlY29kZShJUEM6OkRl
Y29kZXImIGRlY29kZXIpCkBAIC03MCw4ICs3MSwxOCBAQCBPcHRpb25hbDxVUkxTY2hlbWVUYXNr
UGFyYW1ldGVycz4gVVJMU2NoCiAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAg
ICAgICByZXF1ZXN0LnNldEhUVFBCb2R5KFdURk1vdmUoZm9ybURhdGEpKTsKICAgICB9CisgICAg
CisgICAgT3B0aW9uYWw8RnJhbWVJbmZvRGF0YT4gZnJhbWVJbmZvOworICAgIGRlY29kZXIgPj4g
ZnJhbWVJbmZvOworICAgIGlmICghZnJhbWVJbmZvKQorICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OwogCi0gICAgcmV0dXJuIHt7IFdURk1vdmUoKmhhbmRsZXJJZGVudGlmaWVyKSwgV1RGTW92
ZSgqdGFza0lkZW50aWZpZXIpLCBXVEZNb3ZlKHJlcXVlc3QpIH19OworICAgIHJldHVybiB7ewor
ICAgICAgICBXVEZNb3ZlKCpoYW5kbGVySWRlbnRpZmllciksCisgICAgICAgIFdURk1vdmUoKnRh
c2tJZGVudGlmaWVyKSwKKyAgICAgICAgV1RGTW92ZShyZXF1ZXN0KSwKKyAgICAgICAgV1RGTW92
ZSgqZnJhbWVJbmZvKSwKKyAgICB9fTsKIH0KICAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJ
bmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvVVJMU2NoZW1lVGFza1BhcmFtZXRlcnMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9VUkxTY2hlbWVUYXNrUGFyYW1ldGVycy5o
CShyZXZpc2lvbiAyNTI0NzIpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9VUkxTY2hlbWVUYXNr
UGFyYW1ldGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEg
b25jZQogCisjaW5jbHVkZSAiRnJhbWVJbmZvRGF0YS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvUmVz
b3VyY2VSZXF1ZXN0Lmg+CiAKIG5hbWVzcGFjZSBJUEMgewpAQCAtMzgsNiArMzksNyBAQCBzdHJ1
Y3QgVVJMU2NoZW1lVGFza1BhcmFtZXRlcnMgewogICAgIHVpbnQ2NF90IGhhbmRsZXJJZGVudGlm
aWVyIHsgMCB9OwogICAgIHVpbnQ2NF90IHRhc2tJZGVudGlmaWVyIHsgMCB9OwogICAgIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0OworICAgIEZyYW1lSW5mb0RhdGEgZnJhbWVJbmZv
OwogICAgIAogICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYpIGNvbnN0OwogICAgIHN0YXRp
YyBPcHRpb25hbDxVUkxTY2hlbWVUYXNrUGFyYW1ldGVycz4gZGVjb2RlKElQQzo6RGVjb2RlciYp
OwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCShyZXZpc2lv
biAyNTI0NzIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC04ODQ3LDcgKzg4NDcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c3Rh
cnRVUkxTY2hlbWVUYXNrU2hhCiAgICAgYXV0byBpdGVyYXRvciA9IG1fdXJsU2NoZW1lSGFuZGxl
cnNCeUlkZW50aWZpZXIuZmluZChwYXJhbWV0ZXJzLmhhbmRsZXJJZGVudGlmaWVyKTsKICAgICBN
RVNTQUdFX0NIRUNLKHByb2Nlc3MsIGl0ZXJhdG9yICE9IG1fdXJsU2NoZW1lSGFuZGxlcnNCeUlk
ZW50aWZpZXIuZW5kKCkpOwogCi0gICAgaXRlcmF0b3ItPnZhbHVlLT5zdGFydFRhc2soKnRoaXMs
IHByb2Nlc3MsIHdlYlBhZ2VJRCwgcGFyYW1ldGVycy50YXNrSWRlbnRpZmllciwgV1RGTW92ZShw
YXJhbWV0ZXJzLnJlcXVlc3QpLCBudWxscHRyKTsKKyAgICBpdGVyYXRvci0+dmFsdWUtPnN0YXJ0
VGFzaygqdGhpcywgcHJvY2Vzcywgd2ViUGFnZUlELCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBudWxs
cHRyKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnN0b3BVUkxTY2hlbWVUYXNrKHVpbnQ2NF90
IGhhbmRsZXJJZGVudGlmaWVyLCB1aW50NjRfdCB0YXNrSWRlbnRpZmllcikKQEAgLTg4NjMsNyAr
ODg2Myw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkU3luY2hyb25vdXNVUkxTY2gKICAgICBh
dXRvIGl0ZXJhdG9yID0gbV91cmxTY2hlbWVIYW5kbGVyc0J5SWRlbnRpZmllci5maW5kKHBhcmFt
ZXRlcnMuaGFuZGxlcklkZW50aWZpZXIpOwogICAgIE1FU1NBR0VfQ0hFQ0sobV9wcm9jZXNzLCBp
dGVyYXRvciAhPSBtX3VybFNjaGVtZUhhbmRsZXJzQnlJZGVudGlmaWVyLmVuZCgpKTsKIAotICAg
IGl0ZXJhdG9yLT52YWx1ZS0+c3RhcnRUYXNrKCp0aGlzLCBtX3Byb2Nlc3MsIG1fd2ViUGFnZUlE
LCBwYXJhbWV0ZXJzLnRhc2tJZGVudGlmaWVyLCBXVEZNb3ZlKHBhcmFtZXRlcnMucmVxdWVzdCks
IFdURk1vdmUocmVwbHkpKTsKKyAgICBpdGVyYXRvci0+dmFsdWUtPnN0YXJ0VGFzaygqdGhpcywg
bV9wcm9jZXNzLCBtX3dlYlBhZ2VJRCwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgV1RGTW92ZShyZXBs
eSkpOwogfQogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXIuY3BwCShyZXZp
c2lvbiAyNTI0NzIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5k
bGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIldlYlVSTFNjaGVtZUhhbmRsZXIuaCIKIAorI2luY2x1ZGUgIlVSTFNj
aGVtZVRhc2tQYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCiAjaW5jbHVk
ZSAiV2ViVVJMU2NoZW1lVGFzay5oIgogCkBAIC00OCw5ICs0OSwxMCBAQCBXZWJVUkxTY2hlbWVI
YW5kbGVyOjp+V2ViVVJMU2NoZW1lSGFuZGxlCiAgICAgQVNTRVJUKG1fdGFza3MuaXNFbXB0eSgp
KTsKIH0KIAotdm9pZCBXZWJVUkxTY2hlbWVIYW5kbGVyOjpzdGFydFRhc2soV2ViUGFnZVByb3h5
JiBwYWdlLCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIFBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJ
RCwgdWludDY0X3QgdGFza0lkZW50aWZpZXIsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFN5
bmNMb2FkQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViVVJM
U2NoZW1lSGFuZGxlcjo6c3RhcnRUYXNrKFdlYlBhZ2VQcm94eSYgcGFnZSwgV2ViUHJvY2Vzc1By
b3h5JiBwcm9jZXNzLCBQYWdlSWRlbnRpZmllciB3ZWJQYWdlSUQsIFVSTFNjaGVtZVRhc2tQYXJh
bWV0ZXJzJiYgcGFyYW1ldGVycywgU3luY0xvYWRDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRp
b25IYW5kbGVyKQogewotICAgIGF1dG8gcmVzdWx0ID0gbV90YXNrcy5hZGQodGFza0lkZW50aWZp
ZXIsIFdlYlVSTFNjaGVtZVRhc2s6OmNyZWF0ZSgqdGhpcywgcGFnZSwgcHJvY2Vzcywgd2ViUGFn
ZUlELCB0YXNrSWRlbnRpZmllciwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpKTsKKyAgICBhdXRvIHRhc2tJZGVudGlmaWVyID0gcGFyYW1ldGVycy50YXNrSWRl
bnRpZmllcjsKKyAgICBhdXRvIHJlc3VsdCA9IG1fdGFza3MuYWRkKHRhc2tJZGVudGlmaWVyLCBX
ZWJVUkxTY2hlbWVUYXNrOjpjcmVhdGUoKnRoaXMsIHBhZ2UsIHByb2Nlc3MsIHdlYlBhZ2VJRCwg
V1RGTW92ZShwYXJhbWV0ZXJzKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpKTsKICAgICBB
U1NFUlQocmVzdWx0LmlzTmV3RW50cnkpOwogCiAgICAgYXV0byBwYWdlRW50cnkgPSBtX3Rhc2tz
QnlQYWdlSWRlbnRpZmllci5hZGQocGFnZS5pZGVudGlmaWVyKCksIEhhc2hTZXQ8dWludDY0X3Q+
KCkpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lSGFuZGxlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRs
ZXIuaAkocmV2aXNpb24gMjUyNDcyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJM
U2NoZW1lSGFuZGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0MSw3IEBAIGNsYXNzIFJl
c291cmNlUmVxdWVzdDsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK3N0cnVjdCBVUkxTY2hlbWVU
YXNrUGFyYW1ldGVyczsKIGNsYXNzIFdlYlBhZ2VQcm94eTsKIGNsYXNzIFdlYlByb2Nlc3NQcm94
eTsKIApAQCAtNTMsNyArNTQsNyBAQCBwdWJsaWM6CiAKICAgICB1aW50NjRfdCBpZGVudGlmaWVy
KCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CiAKLSAgICB2b2lkIHN0YXJ0VGFzayhX
ZWJQYWdlUHJveHkmLCBXZWJQcm9jZXNzUHJveHkmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwg
dWludDY0X3QgdGFza0lkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBTeW5j
TG9hZENvbXBsZXRpb25IYW5kbGVyJiYpOworICAgIHZvaWQgc3RhcnRUYXNrKFdlYlBhZ2VQcm94
eSYsIFdlYlByb2Nlc3NQcm94eSYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBVUkxTY2hlbWVU
YXNrUGFyYW1ldGVycyYmLCBTeW5jTG9hZENvbXBsZXRpb25IYW5kbGVyJiYpOwogICAgIHZvaWQg
c3RvcFRhc2soV2ViUGFnZVByb3h5JiwgdWludDY0X3QgdGFza0lkZW50aWZpZXIpOwogICAgIHZv
aWQgc3RvcEFsbFRhc2tzRm9yUGFnZShXZWJQYWdlUHJveHkmLCBXZWJQcm9jZXNzUHJveHkqKTsK
ICAgICB2b2lkIHRhc2tDb21wbGV0ZWQoV2ViVVJMU2NoZW1lVGFzayYpOwpJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAJKHJldmlzaW9uIDI1MjQ3
MikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNiw4ICsyNiwxMCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIldlYlVSTFNjaGVtZVRhc2suaCIKIAorI2luY2x1ZGUgIkFQSUZyYW1lSW5mby5oIgogI2lu
Y2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXJEYXRhUmVmZXJl
bmNlLmgiCisjaW5jbHVkZSAiVVJMU2NoZW1lVGFza1BhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJX
ZWJFcnJvcnMuaCIKICNpbmNsdWRlICJXZWJQYWdlTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQ
YWdlUHJveHkuaCIKQEAgLTM2LDE4ICszOCwxOSBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotUmVmPFdlYlVSTFNjaGVtZVRhc2s+IFdlYlVSTFNjaGVt
ZVRhc2s6OmNyZWF0ZShXZWJVUkxTY2hlbWVIYW5kbGVyJiBoYW5kbGVyLCBXZWJQYWdlUHJveHkm
IHBhZ2UsIFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcywgUGFnZUlkZW50aWZpZXIgd2ViUGFnZUlE
LCB1aW50NjRfdCByZXNvdXJjZUlkZW50aWZpZXIsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3Qs
IFN5bmNMb2FkQ29tcGxldGlvbkhhbmRsZXImJiBzeW5jQ29tcGxldGlvbkhhbmRsZXIpCitSZWY8
V2ViVVJMU2NoZW1lVGFzaz4gV2ViVVJMU2NoZW1lVGFzazo6Y3JlYXRlKFdlYlVSTFNjaGVtZUhh
bmRsZXImIGhhbmRsZXIsIFdlYlBhZ2VQcm94eSYgcGFnZSwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9j
ZXNzLCBQYWdlSWRlbnRpZmllciB3ZWJQYWdlSUQsIFVSTFNjaGVtZVRhc2tQYXJhbWV0ZXJzJiYg
cGFyYW1ldGVycywgU3luY0xvYWRDb21wbGV0aW9uSGFuZGxlciYmIHN5bmNDb21wbGV0aW9uSGFu
ZGxlcikKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJVUkxTY2hlbWVUYXNrKGhhbmRs
ZXIsIHBhZ2UsIHByb2Nlc3MsIHdlYlBhZ2VJRCwgcmVzb3VyY2VJZGVudGlmaWVyLCBXVEZNb3Zl
KHJlcXVlc3QpLCBXVEZNb3ZlKHN5bmNDb21wbGV0aW9uSGFuZGxlcikpKTsKKyAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBXZWJVUkxTY2hlbWVUYXNrKGhhbmRsZXIsIHBhZ2UsIHByb2Nlc3MsIHdl
YlBhZ2VJRCwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgV1RGTW92ZShzeW5jQ29tcGxldGlvbkhhbmRs
ZXIpKSk7CiB9CiAKLVdlYlVSTFNjaGVtZVRhc2s6OldlYlVSTFNjaGVtZVRhc2soV2ViVVJMU2No
ZW1lSGFuZGxlciYgaGFuZGxlciwgV2ViUGFnZVByb3h5JiBwYWdlLCBXZWJQcm9jZXNzUHJveHkm
IHByb2Nlc3MsIFBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCwgdWludDY0X3QgcmVzb3VyY2VJZGVu
dGlmaWVyLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBTeW5jTG9hZENvbXBsZXRpb25IYW5k
bGVyJiYgc3luY0NvbXBsZXRpb25IYW5kbGVyKQorV2ViVVJMU2NoZW1lVGFzazo6V2ViVVJMU2No
ZW1lVGFzayhXZWJVUkxTY2hlbWVIYW5kbGVyJiBoYW5kbGVyLCBXZWJQYWdlUHJveHkmIHBhZ2Us
IFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcywgUGFnZUlkZW50aWZpZXIgd2ViUGFnZUlELCBVUkxT
Y2hlbWVUYXNrUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMsIFN5bmNMb2FkQ29tcGxldGlvbkhhbmRs
ZXImJiBzeW5jQ29tcGxldGlvbkhhbmRsZXIpCiAgICAgOiBtX3VybFNjaGVtZUhhbmRsZXIoaGFu
ZGxlcikKICAgICAsIG1fcHJvY2VzcyhtYWtlUmVmKHByb2Nlc3MpKQotICAgICwgbV9pZGVudGlm
aWVyKHJlc291cmNlSWRlbnRpZmllcikKKyAgICAsIG1faWRlbnRpZmllcihwYXJhbWV0ZXJzLnRh
c2tJZGVudGlmaWVyKQogICAgICwgbV9wYWdlUHJveHlJRChwYWdlLmlkZW50aWZpZXIoKSkKICAg
ICAsIG1fd2ViUGFnZUlEKHdlYlBhZ2VJRCkKLSAgICAsIG1fcmVxdWVzdChXVEZNb3ZlKHJlcXVl
c3QpKQorICAgICwgbV9yZXF1ZXN0KFdURk1vdmUocGFyYW1ldGVycy5yZXF1ZXN0KSkKKyAgICAs
IG1fZnJhbWVJbmZvKEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoV1RGTW92ZShwYXJhbWV0ZXJzLmZy
YW1lSW5mbyksICZwYWdlKSkKICAgICAsIG1fc3luY0NvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUo
c3luY0NvbXBsZXRpb25IYW5kbGVyKSkKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkp
OwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaAkocmV2
aXNpb24gMjUyNDcyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFz
ay5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCwxMCBAQAogI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCituYW1lc3BhY2UgQVBJIHsKK2Ns
YXNzIEZyYW1lSW5mbzsKK30KKwogbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBEYXRhUmVmZXJlbmNl
OwogfQpAQCAtNDYsNiArNTAsNyBAQCBjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCitzdHJ1Y3QgVVJMU2NoZW1lVGFza1BhcmFtZXRlcnM7CiBjbGFzcyBXZWJVUkxT
Y2hlbWVIYW5kbGVyOwogY2xhc3MgV2ViUGFnZVByb3h5OwogCkBAIC01NCw3ICs1OSw3IEBAIHVz
aW5nIFN5bmNMb2FkQ29tcGxldGlvbkhhbmRsZXIgPSBDb21wbGUKIGNsYXNzIFdlYlVSTFNjaGVt
ZVRhc2sgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8V2ViVVJMU2NoZW1lVGFzaz4sIHB1
YmxpYyBJbnN0YW5jZUNvdW50ZWQ8V2ViVVJMU2NoZW1lVGFzaz4gewogICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKFdlYlVSTFNjaGVtZVRhc2spOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8V2Vi
VVJMU2NoZW1lVGFzaz4gY3JlYXRlKFdlYlVSTFNjaGVtZUhhbmRsZXImLCBXZWJQYWdlUHJveHkm
LCBXZWJQcm9jZXNzUHJveHkmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgdWludDY0X3QgaWRl
bnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFN5bmNMb2FkQ29tcGxldGlvbkhh
bmRsZXImJik7CisgICAgc3RhdGljIFJlZjxXZWJVUkxTY2hlbWVUYXNrPiBjcmVhdGUoV2ViVVJM
U2NoZW1lSGFuZGxlciYsIFdlYlBhZ2VQcm94eSYsIFdlYlByb2Nlc3NQcm94eSYsIFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyLCBVUkxTY2hlbWVUYXNrUGFyYW1ldGVycyYmLCBTeW5jTG9hZENvbXBs
ZXRpb25IYW5kbGVyJiYpOwogCiAgICAgfldlYlVSTFNjaGVtZVRhc2soKTsKIApAQCAtNjMsNiAr
NjgsNyBAQCBwdWJsaWM6CiAgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgd2ViUGFnZUlEKCkg
Y29uc3QgeyBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOyByZXR1cm4gbV93ZWJQYWdlSUQ7IH0K
ICAgICBXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MoKSB7IEFTU0VSVChSdW5Mb29wOjppc01haW4o
KSk7IHJldHVybiBtX3Byb2Nlc3MuZ2V0KCk7IH0KICAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QoKSBjb25zdCB7IEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7IHJl
dHVybiBtX3JlcXVlc3Q7IH0KKyAgICBBUEk6OkZyYW1lSW5mbyYgZnJhbWVJbmZvKCkgY29uc3Qg
eyByZXR1cm4gbV9mcmFtZUluZm8uZ2V0KCk7IH0KIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAg
IE5TVVJMUmVxdWVzdCAqbnNSZXF1ZXN0KCkgY29uc3Q7CkBAIC04NSw3ICs5MSw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHBhZ2VEZXN0cm95ZWQoKTsKIAogcHJpdmF0ZToKLSAgICBXZWJVUkxTY2hl
bWVUYXNrKFdlYlVSTFNjaGVtZUhhbmRsZXImLCBXZWJQYWdlUHJveHkmLCBXZWJQcm9jZXNzUHJv
eHkmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgdWludDY0X3QgaWRlbnRpZmllciwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFN5bmNMb2FkQ29tcGxldGlvbkhhbmRsZXImJik7CisgICAg
V2ViVVJMU2NoZW1lVGFzayhXZWJVUkxTY2hlbWVIYW5kbGVyJiwgV2ViUGFnZVByb3h5JiwgV2Vi
UHJvY2Vzc1Byb3h5JiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFVSTFNjaGVtZVRhc2tQYXJh
bWV0ZXJzJiYsIFN5bmNMb2FkQ29tcGxldGlvbkhhbmRsZXImJik7CiAKICAgICBib29sIGlzU3lu
YygpIGNvbnN0IHsgcmV0dXJuICEhbV9zeW5jQ29tcGxldGlvbkhhbmRsZXI7IH0KIApAQCAtOTUs
NiArMTAxLDcgQEAgcHJpdmF0ZToKICAgICBXZWJQYWdlUHJveHlJZGVudGlmaWVyIG1fcGFnZVBy
b3h5SUQ7CiAgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgbV93ZWJQYWdlSUQ7CiAgICAgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0IG1fcmVxdWVzdDsKKyAgICBSZWY8QVBJOjpGcmFtZUluZm8+
IG1fZnJhbWVJbmZvOwogICAgIG11dGFibGUgTG9jayBtX3JlcXVlc3RMb2NrOwogICAgIGJvb2wg
bV9zdG9wcGVkIHsgZmFsc2UgfTsKICAgICBib29sIG1fcmVzcG9uc2VTZW50IHsgZmFsc2UgfTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VSTFNjaGVtZVRhc2su
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVVJM
U2NoZW1lVGFzay5tbQkocmV2aXNpb24gMjUyNDcyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLVVJMU2NoZW1lVGFzay5tbQkod29ya2luZyBjb3B5KQpAQCAtMjQsOCAr
MjQsMTAgQEAKICAqLwogCiAjaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIldLVVJMU2NoZW1l
VGFza0ludGVybmFsLmgiCisjaW1wb3J0ICJXS1VSTFNjaGVtZVRhc2suaCIKIAorI2ltcG9ydCAi
V0tGcmFtZUluZm9JbnRlcm5hbC5oIgorI2ltcG9ydCAiV0tVUkxTY2hlbWVUYXNrSW50ZXJuYWwu
aCIKICNpbXBvcnQgIldlYlVSTFNjaGVtZUhhbmRsZXIuaCIKICNpbXBvcnQgIldlYlVSTFNjaGVt
ZVRhc2suaCIKICNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgpAQCAtMTQ2LDYgKzE0
OCwxMSBAQCAtICh2b2lkKV9kaWRQZXJmb3JtUmVkaXJlY3Rpb246KE5TVVJMUmVzCiAgICAgcmFp
c2VFeGNlcHRpb25JZk5lY2Vzc2FyeShyZXN1bHQpOwogfQogCistIChXS0ZyYW1lSW5mbyAqKV9m
cmFtZQoreworICAgIHJldHVybiB3cmFwcGVyKF91cmxTY2hlbWVUYXNrLT50YXNrKCkuZnJhbWVJ
bmZvKCkpOworfQorCiAjcHJhZ21hIG1hcmsgV0tPYmplY3QgcHJvdG9jb2wgaW1wbGVtZW50YXRp
b24KIAogLSAoQVBJOjpPYmplY3QmKV9hcGlPYmplY3QKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1VSTFNjaGVtZVRhc2tQcml2YXRlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVVJMU2NoZW1lVGFza1ByaXZhdGUu
aAkocmV2aXNpb24gMjUyNDcyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLVVJMU2NoZW1lVGFza1ByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsMTEgKzI1LDE0
IEBACiAKICNpbXBvcnQgPFdlYktpdC9XS1VSTFNjaGVtZVRhc2suaD4KIAorQGNsYXNzIFdLRnJh
bWVJbmZvOworCiBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzKSwgaW9zKDExLjApKQogQHBy
b3RvY29sIFdLVVJMU2NoZW1lVGFza1ByaXZhdGUgPFdLVVJMU2NoZW1lVGFzaz4KIAogLSAodm9p
ZClfZGlkUGVyZm9ybVJlZGlyZWN0aW9uOihOU1VSTFJlc3BvbnNlICopcmVzcG9uc2UgbmV3UmVx
dWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdDsKIAogQHByb3BlcnR5IChub25hdG9taWMsIHJl
YWRvbmx5KSBCT09MIF9yZXF1ZXN0T25seUlmQ2FjaGVkIFdLX0FQSV9BVkFJTEFCTEUobWFjb3Mo
MTAuMTUpLCBpb3MoMTMuMCkpOworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBXS0Zy
YW1lSW5mbyAqX2ZyYW1lIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhX
S19JT1NfVEJBKSk7CiAKIEBlbmQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAJKHJldmlzaW9uIDI1MjQ3MikK
KysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjI3LDE2ICsyMjcsMTggQEAgYm9vbCBXZWJMb2FkZXJTdHJh
dGVneTo6dHJ5TG9hZGluZ1VzaW5nVQogICAgIGF1dG8qIHdlYkZyYW1lTG9hZGVyQ2xpZW50ID0g
dG9XZWJGcmFtZUxvYWRlckNsaWVudChyZXNvdXJjZUxvYWRlci5mcmFtZUxvYWRlcigpLT5jbGll
bnQoKSk7CiAgICAgYXV0byogd2ViRnJhbWUgPSB3ZWJGcmFtZUxvYWRlckNsaWVudCA/IHdlYkZy
YW1lTG9hZGVyQ2xpZW50LT53ZWJGcmFtZSgpIDogbnVsbHB0cjsKICAgICBhdXRvKiB3ZWJQYWdl
ID0gd2ViRnJhbWUgPyB3ZWJGcmFtZS0+cGFnZSgpIDogbnVsbHB0cjsKLSAgICBpZiAod2ViUGFn
ZSkgewotICAgICAgICBpZiAoYXV0byogaGFuZGxlciA9IHdlYlBhZ2UtPnVybFNjaGVtZUhhbmRs
ZXJGb3JTY2hlbWUocmVzb3VyY2VMb2FkZXIucmVxdWVzdCgpLnVybCgpLnByb3RvY29sKCkudG9T
dHJpbmdXaXRob3V0Q29weWluZygpKSkgewotICAgICAgICAgICAgTE9HKE5ldHdvcmtTY2hlZHVs
aW5nLCAiKFdlYlByb2Nlc3MpIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQsIFVSTCAn
JXMnIHdpbGwgYmUgaGFuZGxlZCBieSBhIFVJUHJvY2VzcyBVUkwgc2NoZW1lIGhhbmRsZXIuIiwg
cmVzb3VyY2VMb2FkZXIudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgICAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJzY2hlZHVsZUxvYWQ6IFVSTCB3aWxsIGJlIGhhbmRs
ZWQgYnkgYSBVSVByb2Nlc3MgVVJMIHNjaGVtZSBoYW5kbGVyIChmcmFtZT0lcCwgcmVzb3VyY2VJ
RD0lbHUpIiwgcmVzb3VyY2VMb2FkZXIuZnJhbWUoKSwgcmVzb3VyY2VMb2FkZXIuaWRlbnRpZmll
cigpKTsKKyAgICBpZiAoIXdlYlBhZ2UpCisgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAg
ICAgICAgaGFuZGxlci0+c3RhcnROZXdUYXNrKHJlc291cmNlTG9hZGVyKTsKLSAgICAgICAgICAg
IHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKKyAgICBh
dXRvKiBoYW5kbGVyID0gd2ViUGFnZS0+dXJsU2NoZW1lSGFuZGxlckZvclNjaGVtZShyZXNvdXJj
ZUxvYWRlci5yZXF1ZXN0KCkudXJsKCkucHJvdG9jb2woKS50b1N0cmluZ1dpdGhvdXRDb3B5aW5n
KCkpOworICAgIGlmICghaGFuZGxlcikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgTE9H
KE5ldHdvcmtTY2hlZHVsaW5nLCAiKFdlYlByb2Nlc3MpIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hl
ZHVsZUxvYWQsIFVSTCAnJXMnIHdpbGwgYmUgaGFuZGxlZCBieSBhIFVJUHJvY2VzcyBVUkwgc2No
ZW1lIGhhbmRsZXIuIiwgcmVzb3VyY2VMb2FkZXIudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEo
KSk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic2NoZWR1bGVMb2FkOiBVUkwgd2lsbCBi
ZSBoYW5kbGVkIGJ5IGEgVUlQcm9jZXNzIFVSTCBzY2hlbWUgaGFuZGxlciAoZnJhbWU9JXAsIHJl
c291cmNlSUQ9JWx1KSIsIHJlc291cmNlTG9hZGVyLmZyYW1lKCksIHJlc291cmNlTG9hZGVyLmlk
ZW50aWZpZXIoKSk7CisKKyAgICBoYW5kbGVyLT5zdGFydE5ld1Rhc2socmVzb3VyY2VMb2FkZXIs
ICp3ZWJGcmFtZSk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIHZvaWQgV2ViTG9hZGVyU3RyYXRl
Z3k6OnNjaGVkdWxlTG9hZEZyb21OZXR3b3JrUHJvY2VzcyhSZXNvdXJjZUxvYWRlciYgcmVzb3Vy
Y2VMb2FkZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgV2ViUmVzb3Vy
Y2VMb2FkZXI6OlRyYWNraW5nUGFyYW1ldGVycyYgdHJhY2tpbmdQYXJhbWV0ZXJzLCBib29sIHNo
b3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIFNlY29uZHMgbWF4aW11bUJ1
ZmZlcmluZ1RpbWUpCkBAIC00OTksNyArNTAxLDcgQEAgT3B0aW9uYWw8V2ViTG9hZGVyU3RyYXRl
Z3k6OlN5bmNMb2FkUmVzdQogICAgIExPRyhOZXR3b3JrU2NoZWR1bGluZywgIihXZWJQcm9jZXNz
KSBXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkLCBzeW5jIGxvYWQgdG8gVVJMICclcycg
d2lsbCBiZSBoYW5kbGVkIGJ5IGEgVUlQcm9jZXNzIFVSTCBzY2hlbWUgaGFuZGxlci4iLCByZXF1
ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCiAgICAgU3luY0xvYWRSZXN1bHQg
cmVzdWx0OwotICAgIGhhbmRsZXItPmxvYWRTeW5jaHJvbm91c2x5KGlkZW50aWZpZXIsIHJlcXVl
c3QsIHJlc3VsdC5yZXNwb25zZSwgcmVzdWx0LmVycm9yLCByZXN1bHQuZGF0YSk7CisgICAgaGFu
ZGxlci0+bG9hZFN5bmNocm9ub3VzbHkoaWRlbnRpZmllciwgKndlYkZyYW1lLCByZXF1ZXN0LCBy
ZXN1bHQucmVzcG9uc2UsIHJlc3VsdC5lcnJvciwgcmVzdWx0LmRhdGEpOwogCiAgICAgcmV0dXJu
IHJlc3VsdDsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVS
TFNjaGVtZUhhbmRsZXJQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5LmNwcAkocmV2aXNpb24gMjUy
NDcyKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lSGFu
ZGxlclByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTMsMTkgKzUzLDE5IEBAIFdlYlVSTFNj
aGVtZUhhbmRsZXJQcm94eTo6fldlYlVSTFNjaGVtZUgKICAgICBBU1NFUlQobV90YXNrcy5pc0Vt
cHR5KCkpOwogfQogCi12b2lkIFdlYlVSTFNjaGVtZUhhbmRsZXJQcm94eTo6c3RhcnROZXdUYXNr
KFJlc291cmNlTG9hZGVyJiBsb2FkZXIpCit2b2lkIFdlYlVSTFNjaGVtZUhhbmRsZXJQcm94eTo6
c3RhcnROZXdUYXNrKFJlc291cmNlTG9hZGVyJiBsb2FkZXIsIFdlYkZyYW1lJiB3ZWJGcmFtZSkK
IHsKLSAgICBhdXRvIHJlc3VsdCA9IG1fdGFza3MuYWRkKGxvYWRlci5pZGVudGlmaWVyKCksIFdl
YlVSTFNjaGVtZVRhc2tQcm94eTo6Y3JlYXRlKCp0aGlzLCBsb2FkZXIpKTsKKyAgICBhdXRvIHJl
c3VsdCA9IG1fdGFza3MuYWRkKGxvYWRlci5pZGVudGlmaWVyKCksIFdlYlVSTFNjaGVtZVRhc2tQ
cm94eTo6Y3JlYXRlKCp0aGlzLCBsb2FkZXIsIHdlYkZyYW1lKSk7CiAgICAgQVNTRVJUKHJlc3Vs
dC5pc05ld0VudHJ5KTsKIAogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYkxvYWRlclN0
cmF0ZWd5KCkuYWRkVVJMU2NoZW1lVGFza1Byb3h5KCpyZXN1bHQuaXRlcmF0b3ItPnZhbHVlKTsK
ICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlLT5zdGFydExvYWRpbmcoKTsKIH0KIAotdm9pZCBX
ZWJVUkxTY2hlbWVIYW5kbGVyUHJveHk6OmxvYWRTeW5jaHJvbm91c2x5KFJlc291cmNlTG9hZElk
ZW50aWZpZXIgbG9hZElkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlc291cmNlRXJyb3ImIGVycm9yLCBWZWN0b3I8
Y2hhcj4mIGRhdGEpCit2b2lkIFdlYlVSTFNjaGVtZUhhbmRsZXJQcm94eTo6bG9hZFN5bmNocm9u
b3VzbHkoUmVzb3VyY2VMb2FkSWRlbnRpZmllciBsb2FkSWRlbnRpZmllciwgV2ViRnJhbWUmIHdl
YkZyYW1lLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlLCBSZXNvdXJjZUVycm9yJiBlcnJvciwgVmVjdG9yPGNoYXI+JiBkYXRhKQogewog
ICAgIGRhdGEuc2hyaW5rKDApOwotICAgIGlmICghbV93ZWJQYWdlLnNlbmRTeW5jKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkxvYWRTeW5jaHJvbm91c1VSTFNjaGVtZVRhc2soVVJMU2NoZW1lVGFz
a1BhcmFtZXRlcnMgeyBtX2lkZW50aWZpZXIsIGxvYWRJZGVudGlmaWVyLCByZXF1ZXN0IH0pLCBN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpMb2FkU3luY2hyb25vdXNVUkxTY2hlbWVUYXNrOjpSZXBs
eShyZXNwb25zZSwgZXJyb3IsIGRhdGEpKSkgeworICAgIGlmICghbV93ZWJQYWdlLnNlbmRTeW5j
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkxvYWRTeW5jaHJvbm91c1VSTFNjaGVtZVRhc2soVVJM
U2NoZW1lVGFza1BhcmFtZXRlcnMgeyBtX2lkZW50aWZpZXIsIGxvYWRJZGVudGlmaWVyLCByZXF1
ZXN0LCB3ZWJGcmFtZS5pbmZvKCkgfSksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkxvYWRTeW5j
aHJvbm91c1VSTFNjaGVtZVRhc2s6OlJlcGx5KHJlc3BvbnNlLCBlcnJvciwgZGF0YSkpKSB7CiAg
ICAgICAgIGVycm9yID0gZmFpbGVkQ3VzdG9tUHJvdG9jb2xTeW5jTG9hZChyZXF1ZXN0KTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlVSTFNjaGVtZUhhbmRsZXJQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZUhhbmRsZXJQcm94eS5oCShyZXZpc2lv
biAyNTI0NzIpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hl
bWVIYW5kbGVyUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtNDksMTAgKzQ5LDEwIEBAIHB1Ymxp
YzoKICAgICB9CiAgICAgfldlYlVSTFNjaGVtZUhhbmRsZXJQcm94eSgpOwogCi0gICAgdm9pZCBz
dGFydE5ld1Rhc2soV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXImKTsKKyAgICB2b2lkIHN0YXJ0TmV3
VGFzayhXZWJDb3JlOjpSZXNvdXJjZUxvYWRlciYsIFdlYkZyYW1lJik7CiAgICAgdm9pZCBzdG9w
QWxsVGFza3MoKTsKIAotICAgIHZvaWQgbG9hZFN5bmNocm9ub3VzbHkoUmVzb3VyY2VMb2FkSWRl
bnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYsIFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBWZWN0b3I8Y2hhcj4mKTsKKyAg
ICB2b2lkIGxvYWRTeW5jaHJvbm91c2x5KFJlc291cmNlTG9hZElkZW50aWZpZXIsIFdlYkZyYW1l
JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYsIFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBWZWN0b3I8Y2hhcj4mKTsKIAogICAgIHVp
bnQ2NF90IGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KICAgICBX
ZWJQYWdlJiBwYWdlKCkgeyByZXR1cm4gbV93ZWJQYWdlOyB9CkluZGV4OiBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVUYXNrUHJveHkuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZVRhc2tQcm94
eS5jcHAJKHJldmlzaW9uIDI1MjQ3MikKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlVSTFNjaGVtZVRhc2tQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5
LDcgQEAKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiVVJMU2NoZW1lVGFza1BhcmFt
ZXRlcnMuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlICJX
ZWJGcmFtZS5oIgogI2luY2x1ZGUgIldlYlBhZ2UuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHlN
ZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlVSTFNjaGVtZUhhbmRsZXJQcm94eS5oIgpAQCAtNDAs
OSArNDEsMTAgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiAKLVdlYlVSTFNjaGVtZVRhc2tQcm94eTo6V2ViVVJMU2NoZW1lVGFza1Byb3h5KFdlYlVSTFNj
aGVtZUhhbmRsZXJQcm94eSYgaGFuZGxlciwgUmVzb3VyY2VMb2FkZXImIGxvYWRlcikKK1dlYlVS
TFNjaGVtZVRhc2tQcm94eTo6V2ViVVJMU2NoZW1lVGFza1Byb3h5KFdlYlVSTFNjaGVtZUhhbmRs
ZXJQcm94eSYgaGFuZGxlciwgUmVzb3VyY2VMb2FkZXImIGxvYWRlciwgV2ViRnJhbWUmIGZyYW1l
KQogICAgIDogbV91cmxTY2hlbWVIYW5kbGVyKGhhbmRsZXIpCiAgICAgLCBtX2NvcmVMb2FkZXIo
JmxvYWRlcikKKyAgICAsIG1fZnJhbWUoJmZyYW1lKQogICAgICwgbV9yZXF1ZXN0KGxvYWRlci5y
ZXF1ZXN0KCkpCiAgICAgLCBtX2lkZW50aWZpZXIobG9hZGVyLmlkZW50aWZpZXIoKSkKIHsKQEAg
LTUxLDcgKzUzLDggQEAgV2ViVVJMU2NoZW1lVGFza1Byb3h5OjpXZWJVUkxTY2hlbWVUYXNrUAog
dm9pZCBXZWJVUkxTY2hlbWVUYXNrUHJveHk6OnN0YXJ0TG9hZGluZygpCiB7CiAgICAgQVNTRVJU
KG1fY29yZUxvYWRlcik7Ci0gICAgbV91cmxTY2hlbWVIYW5kbGVyLnBhZ2UoKS5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OlN0YXJ0VVJMU2NoZW1lVGFzayh7bV91cmxTY2hlbWVIYW5kbGVy
LmlkZW50aWZpZXIoKSwgbV9jb3JlTG9hZGVyLT5pZGVudGlmaWVyKCksIG1fcmVxdWVzdH0pKTsK
KyAgICBBU1NFUlQobV9mcmFtZSk7CisgICAgbV91cmxTY2hlbWVIYW5kbGVyLnBhZ2UoKS5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlN0YXJ0VVJMU2NoZW1lVGFzayhVUkxTY2hlbWVUYXNr
UGFyYW1ldGVycyB7IG1fdXJsU2NoZW1lSGFuZGxlci5pZGVudGlmaWVyKCksIG1fY29yZUxvYWRl
ci0+aWRlbnRpZmllcigpLCBtX3JlcXVlc3QsIG1fZnJhbWUtPmluZm8oKSB9KSk7CiB9CiAKIHZv
aWQgV2ViVVJMU2NoZW1lVGFza1Byb3h5OjpzdG9wTG9hZGluZygpCkBAIC01OSw2ICs2Miw3IEBA
IHZvaWQgV2ViVVJMU2NoZW1lVGFza1Byb3h5OjpzdG9wTG9hZGluZygKICAgICBBU1NFUlQobV9j
b3JlTG9hZGVyKTsKICAgICBtX3VybFNjaGVtZUhhbmRsZXIucGFnZSgpLnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6U3RvcFVSTFNjaGVtZVRhc2sobV91cmxTY2hlbWVIYW5kbGVyLmlkZW50
aWZpZXIoKSwgbV9jb3JlTG9hZGVyLT5pZGVudGlmaWVyKCkpKTsKICAgICBtX2NvcmVMb2FkZXIg
PSBudWxscHRyOworICAgIG1fZnJhbWUgPSBudWxscHRyOwogCiAgICAgLy8gVGhpcyBsaW5lIHdp
bGwgcmVzdWx0IGluIHRoaXMgYmVpbmcgZGVsZXRlZC4KICAgICBtX3VybFNjaGVtZUhhbmRsZXIu
dGFza0RpZFN0b3BMb2FkaW5nKCp0aGlzKTsKQEAgLTE0OSwxMiArMTUzLDE1IEBAIHZvaWQgV2Vi
VVJMU2NoZW1lVGFza1Byb3h5OjpkaWRDb21wbGV0ZSgKICAgICAgICAgbV9jb3JlTG9hZGVyLT5k
aWRGYWlsKGVycm9yKTsKIAogICAgIG1fY29yZUxvYWRlciA9IG51bGxwdHI7CisgICAgbV9mcmFt
ZSA9IG51bGxwdHI7CiB9CiAKIGJvb2wgV2ViVVJMU2NoZW1lVGFza1Byb3h5OjpoYXNMb2FkZXIo
KQogewotICAgIGlmIChtX2NvcmVMb2FkZXIgJiYgbV9jb3JlTG9hZGVyLT5yZWFjaGVkVGVybWlu
YWxTdGF0ZSgpKQorICAgIGlmIChtX2NvcmVMb2FkZXIgJiYgbV9jb3JlTG9hZGVyLT5yZWFjaGVk
VGVybWluYWxTdGF0ZSgpKSB7CiAgICAgICAgIG1fY29yZUxvYWRlciA9IG51bGxwdHI7CisgICAg
ICAgIG1fZnJhbWUgPSBudWxscHRyOworICAgIH0KIAogICAgIHJldHVybiBtX2NvcmVMb2FkZXI7
CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVU
YXNrUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJVUkxTY2hlbWVUYXNrUHJveHkuaAkocmV2aXNpb24gMjUyNDcyKQorKysgU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lVGFza1Byb3h5LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM3LDEzICszNywxNCBAQCBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAorY2xhc3MgV2ViRnJhbWU7CiBjbGFzcyBXZWJVUkxTY2hlbWVIYW5k
bGVyUHJveHk7CiAKIGNsYXNzIFdlYlVSTFNjaGVtZVRhc2tQcm94eSA6IHB1YmxpYyBSZWZDb3Vu
dGVkPFdlYlVSTFNjaGVtZVRhc2tQcm94eT4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8V2Vi
VVJMU2NoZW1lVGFza1Byb3h5PiBjcmVhdGUoV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5JiBoYW5k
bGVyLCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRlciYgbG9hZGVyKQorICAgIHN0YXRpYyBSZWY8V2Vi
VVJMU2NoZW1lVGFza1Byb3h5PiBjcmVhdGUoV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5JiBoYW5k
bGVyLCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRlciYgbG9hZGVyLCBXZWJGcmFtZSYgd2ViRnJhbWUp
CiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJVUkxTY2hlbWVUYXNrUHJv
eHkoaGFuZGxlciwgbG9hZGVyKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlVS
TFNjaGVtZVRhc2tQcm94eShoYW5kbGVyLCBsb2FkZXIsIHdlYkZyYW1lKSk7CiAgICAgfQogICAg
IAogICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCgpIGNvbnN0IHsg
cmV0dXJuIG1fcmVxdWVzdDsgfQpAQCAtNTksNyArNjAsNyBAQCBwdWJsaWM6CiAgICAgdW5zaWdu
ZWQgbG9uZyBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CiAKIHBy
aXZhdGU6Ci0gICAgV2ViVVJMU2NoZW1lVGFza1Byb3h5KFdlYlVSTFNjaGVtZUhhbmRsZXJQcm94
eSYsIFdlYkNvcmU6OlJlc291cmNlTG9hZGVyJik7CisgICAgV2ViVVJMU2NoZW1lVGFza1Byb3h5
KFdlYlVSTFNjaGVtZUhhbmRsZXJQcm94eSYsIFdlYkNvcmU6OlJlc291cmNlTG9hZGVyJiwgV2Vi
RnJhbWUmKTsKICAgICBib29sIGhhc0xvYWRlcigpOwogCiAgICAgdm9pZCBxdWV1ZVRhc2soRnVu
Y3Rpb248dm9pZCgpPiYmIHRhc2spIHsgbV9xdWV1ZWRUYXNrcy5hcHBlbmQoV1RGTW92ZSh0YXNr
KSk7IH0KQEAgLTY3LDYgKzY4LDcgQEAgcHJpdmF0ZToKIAogICAgIFdlYlVSTFNjaGVtZUhhbmRs
ZXJQcm94eSYgbV91cmxTY2hlbWVIYW5kbGVyOwogICAgIFJlZlB0cjxXZWJDb3JlOjpSZXNvdXJj
ZUxvYWRlcj4gbV9jb3JlTG9hZGVyOworICAgIFJlZlB0cjxXZWJGcmFtZT4gbV9mcmFtZTsKICAg
ICBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgbV9yZXF1ZXN0OwogICAgIHVuc2lnbmVkIGxvbmcg
bV9pZGVudGlmaWVyOwogICAgIGJvb2wgbV93YWl0aW5nRm9yQ29tcGxldGlvbkhhbmRsZXIgeyBm
YWxzZSB9OwpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5n
ZUxvZwkocmV2aXNpb24gMjUyNDcyKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMTcgQEAKKzIwMTktMTEtMTggIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0
ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBBZGQgU1BJIG9uIFdLVVJMU2NoZW1lVGFzayB0
byBhY2Nlc3MgV0tGcmFtZUluZm8gb2Ygb3JpZ2luYXRpbmcgZnJhbWUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNDI2NQorICAgICAgICA8cmRhcjov
LzU3MTkzODgzPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1VSTFNjaGVtZUhhbmRsZXIt
MS5tbToKKyAgICAgICAgKC1bRnJhbWVTY2hlbWVIYW5kbGVyIHdhaXRGb3JBbGxSZXF1ZXN0c10p
OgorICAgICAgICAoLVtGcmFtZVNjaGVtZUhhbmRsZXIgc2V0RXhwZWN0ZWRXZWJWaWV3Ol0pOgor
ICAgICAgICAoLVtGcmFtZVNjaGVtZUhhbmRsZXIgd2ViVmlldzpzdGFydFVSTFNjaGVtZVRhc2s6
XSk6CisgICAgICAgICgtW0ZyYW1lU2NoZW1lSGFuZGxlciB3ZWJWaWV3OnN0b3BVUkxTY2hlbWVU
YXNrOl0pOgorCiAyMDE5LTExLTE0ICBNZWdhbiBHYXJkbmVyICA8bWVnYW5fZ2FyZG5lckBhcHBs
ZS5jb20+CiAKICAgICAgICAgRml4IGFub3RoZXIgYnVpbGQgZXJyb3IgZnJvbSByMjUyNDQ5Cklu
ZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLVVJMU2NoZW1lSGFu
ZGxlci0xLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvV0tVUkxTY2hlbWVIYW5kbGVyLTEubW0JKHJldmlzaW9uIDI1MjQ3MikKKysrIFRvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tVUkxTY2hlbWVIYW5kbGVyLTEubW0J
KHdvcmtpbmcgY29weSkKQEAgLTQwLDYgKzQwLDcgQEAKICNpbXBvcnQgPHd0Zi9SdW5Mb29wLmg+
CiAjaW1wb3J0IDx3dGYvVGhyZWFkaW5nLmg+CiAjaW1wb3J0IDx3dGYvVmVjdG9yLmg+CisjaW1w
b3J0IDx3dGYvV2Vha09iakNQdHIuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4K
ICNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC03NDgsMyArNzQ5LDc4IEBAIFRF
U1QoVVJMU2NoZW1lSGFuZGxlciwgVGhyZWFkcykKICAgICAgICAgdGhlVGFzayA9IG5pbDsKICAg
ICB9KS0+d2FpdEZvckNvbXBsZXRpb24oKTsKIH0KKworQGludGVyZmFjZSBGcmFtZVNjaGVtZUhh
bmRsZXIgOiBOU09iamVjdCA8V0tVUkxTY2hlbWVIYW5kbGVyPgorLSAodm9pZCl3YWl0Rm9yQWxs
UmVxdWVzdHM7CistICh2b2lkKXNldEV4cGVjdGVkV2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmll
dzsKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIEZyYW1lU2NoZW1lSGFuZGxlciB7CisgICAgc2l6
ZV90IF9yZXF1ZXN0Q291bnQ7CisgICAgV2Vha09iakNQdHI8V0tXZWJWaWV3PiBfd2ViVmlldzsK
K30KKworLSAodm9pZCl3YWl0Rm9yQWxsUmVxdWVzdHMKK3sKKyAgICB3aGlsZSAoX3JlcXVlc3RD
b3VudCA8IDMpCisgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnNwaW5SdW5Mb29wKCk7Cit9
CisKKy0gKHZvaWQpc2V0RXhwZWN0ZWRXZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3Cit7Cisg
ICAgX3dlYlZpZXcgPSB3ZWJWaWV3OworfQorCistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAq
KXdlYlZpZXcgc3RhcnRVUkxTY2hlbWVUYXNrOihpZCA8V0tVUkxTY2hlbWVUYXNrPil0YXNrCit7
CisgICAgYXV0byBjaGVjayA9IFsmXSAoaWQ8V0tVUkxTY2hlbWVUYXNrPiB0YXNrLCBjb25zdCBj
aGFyKiB1cmwsIGJvb2wgbWFpbkZyYW1lLCBjb25zdCBjaGFyKiByZXF1ZXN0LCBjb25zdCBjaGFy
KiBvcmlnaW5Qcm90b2NvbCwgY29uc3QgY2hhciogb3JpZ2luSG9zdCwgTlNJbnRlZ2VyIG9yaWdp
blBvcnQpIHsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKHRhc2sucmVxdWVzdC5VUkwuYWJzb2x1
dGVTdHJpbmcsIHVybCk7CisgICAgICAgIFdLRnJhbWVJbmZvICppbmZvID0gKChpZDxXS1VSTFNj
aGVtZVRhc2tQcml2YXRlPil0YXNrKS5fZnJhbWU7CisgICAgICAgIEVYUEVDVF9FUShpbmZvLmlz
TWFpbkZyYW1lLCBtYWluRnJhbWUpOworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoaW5mby5yZXF1
ZXN0LlVSTC5hYnNvbHV0ZVN0cmluZywgcmVxdWVzdCk7CisgICAgICAgIEVYUEVDVF9XS19TVFJF
UShpbmZvLnNlY3VyaXR5T3JpZ2luLnByb3RvY29sLCBvcmlnaW5Qcm90b2NvbCk7CisgICAgICAg
IEVYUEVDVF9XS19TVFJFUShpbmZvLnNlY3VyaXR5T3JpZ2luLmhvc3QsIG9yaWdpbkhvc3QpOwor
ICAgICAgICBFWFBFQ1RfRVEoaW5mby5zZWN1cml0eU9yaWdpbi5wb3J0LCBvcmlnaW5Qb3J0KTsK
KyAgICAgICAgRVhQRUNUX0VRKGluZm8ud2ViVmlldywgX3dlYlZpZXcuZ2V0KCkuZ2V0KCkpOwor
ICAgIH07CisKKyAgICBhdXRvIHJlc3BvbmQgPSBbXSAoaWQ8V0tVUkxTY2hlbWVUYXNrPiB0YXNr
LCBjb25zdCBjaGFyKiBieXRlcykgeworICAgICAgICBbdGFzayBkaWRSZWNlaXZlUmVzcG9uc2U6
W1tbTlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6dGFzay5yZXF1ZXN0LlVSTCBNSU1F
VHlwZTpAInRleHQvaHRtbCIgZXhwZWN0ZWRDb250ZW50TGVuZ3RoOnN0cmxlbihieXRlcykgdGV4
dEVuY29kaW5nTmFtZTpuaWxdIGF1dG9yZWxlYXNlXV07CisgICAgICAgIFt0YXNrIGRpZFJlY2Vp
dmVEYXRhOltOU0RhdGEgZGF0YVdpdGhCeXRlczpieXRlcyBsZW5ndGg6c3RybGVuKGJ5dGVzKV1d
OworICAgICAgICBbdGFzayBkaWRGaW5pc2hdOworICAgIH07CisKKyAgICBzd2l0Y2ggKCsrX3Jl
cXVlc3RDb3VudCkgeworICAgIGNhc2UgMToKKyAgICAgICAgY2hlY2sodGFzaywgImZyYW1lOi8v
aG9zdDEvbWFpbiIsIHRydWUsICIiLCAiIiwgIiIsIDApOworICAgICAgICByZXNwb25kKHRhc2ss
ICI8aWZyYW1lIHNyYz0nLy9ob3N0MjoxMjMvaWZyYW1lJz48L2lmcmFtZT4iKTsKKyAgICAgICAg
cmV0dXJuOworICAgIGNhc2UgMjoKKyAgICAgICAgY2hlY2sodGFzaywgImZyYW1lOi8vaG9zdDI6
MTIzL2lmcmFtZSIsIGZhbHNlLCAiIiwgImZyYW1lIiwgImhvc3QxIiwgMCk7CisgICAgICAgIHJl
c3BvbmQodGFzaywgIjxzY3JpcHQ+ZmV0Y2goJ3N1YnJlc291cmNlJyk8L3NjcmlwdD4iKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIGNhc2UgMzoKKyAgICAgICAgY2hlY2sodGFzaywgImZyYW1lOi8v
aG9zdDI6MTIzL3N1YnJlc291cmNlIiwgZmFsc2UsICJmcmFtZTovL2hvc3QyOjEyMy9pZnJhbWUi
LCAiZnJhbWUiLCAiaG9zdDIiLCAxMjMpOworICAgICAgICByZXNwb25kKHRhc2ssICJkb25lISIp
OworICAgICAgICByZXR1cm47CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQor
CistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgc3RvcFVSTFNjaGVtZVRhc2s6
KGlkIDxXS1VSTFNjaGVtZVRhc2s+KXRhc2sKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
K30KKworQGVuZAorCitURVNUKFVSTFNjaGVtZUhhbmRsZXIsIEZyYW1lKQoreworICAgIGF1dG8g
Y29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gbmV3XSk7Cisg
ICAgYXV0byBoYW5kbGVyID0gYWRvcHROUyhbRnJhbWVTY2hlbWVIYW5kbGVyIG5ld10pOworICAg
IFtjb25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6aGFuZGxlci5nZXQoKSBmb3JVUkxT
Y2hlbWU6QCJmcmFtZSJdOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcg
YWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJh
dGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CisgICAgW2hhbmRsZXIgc2V0RXhwZWN0ZWRXZWJW
aWV3OndlYlZpZXcuZ2V0KCldOworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVl
c3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJmcmFtZTovL2hvc3QxL21h
aW4iXV1dOworICAgIFtoYW5kbGVyIHdhaXRGb3JBbGxSZXF1ZXN0c107Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>388336</attachid>
            <date>2020-01-21 12:40:11 -0800</date>
            <delta_ts>2020-01-21 13:25:38 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-204265-20200121124011.patch</filename>
            <type>text/plain</type>
            <size>28042</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTQ4NzApCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ1IEBACisyMDIwLTAxLTIxICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFNQSSBvbiBX
S1VSTFNjaGVtZVRhc2sgdG8gYWNjZXNzIFdLRnJhbWVJbmZvIG9mIG9yaWdpbmF0aW5nIGZyYW1l
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDQyNjUK
KyAgICAgICAgPHJkYXI6Ly81NzE5Mzg4Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBCcmFkeSBF
aWRzb24uCisKKyAgICAgICAgQ292ZXJlZCBieSBBUEkgdGVzdHMuCisKKyAgICAgICAgKiBTaGFy
ZWQvVVJMU2NoZW1lVGFza1BhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpVUkxTY2hl
bWVUYXNrUGFyYW1ldGVyczo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6VVJMU2No
ZW1lVGFza1BhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1VSTFNjaGVtZVRh
c2tQYXJhbWV0ZXJzLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VSTFNjaGVt
ZVRhc2subW06CisgICAgICAgICgtW1dLVVJMU2NoZW1lVGFza0ltcGwgX2ZyYW1lXSk6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VSTFNjaGVtZVRhc2tQcml2YXRlLmg6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6c3RhcnRVUkxTY2hlbWVUYXNrU2hhcmVkKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5Ojpsb2FkU3luY2hyb25vdXNVUkxTY2hlbWVUYXNrKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViVVJMU2NoZW1lSGFuZGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNj
aGVtZUhhbmRsZXI6OnN0YXJ0VGFzayk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlVSTFNjaGVt
ZUhhbmRsZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OmNyZWF0ZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlVSTFNjaGVtZVRhc2s6OldlYlVSTFNjaGVtZVRhc2spOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmg6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRh
c2s6OmZyYW1lSW5mbyBjb25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxv
YWRlclN0cmF0ZWd5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTG9hZGVyU3RyYXRlZ3k6OnRy
eUxvYWRpbmdVc2luZ1VSTFNjaGVtZUhhbmRsZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJV
UkxTY2hlbWVIYW5kbGVyUHJveHk6OnN0YXJ0TmV3VGFzayk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlVSTFNjaGVtZUhhbmRsZXJQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVUYXNrUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJVUkxTY2hlbWVUYXNrUHJveHk6OldlYlVSTFNjaGVtZVRhc2tQcm94eSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2tQcm94eTo6c3RhcnRMb2FkaW5nKToKKyAgICAgICAgKFdl
YktpdDo6V2ViVVJMU2NoZW1lVGFza1Byb3h5OjpzdG9wTG9hZGluZyk6CisgICAgICAgIChXZWJL
aXQ6OldlYlVSTFNjaGVtZVRhc2tQcm94eTo6ZGlkQ29tcGxldGUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJVUkxTY2hlbWVUYXNrUHJveHk6Omhhc0xvYWRlcik6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlVSTFNjaGVtZVRhc2tQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJV
UkxTY2hlbWVUYXNrUHJveHk6OmNyZWF0ZSk6CisKIDIwMjAtMDEtMjEgIHlvdWVubiBmYWJsZXQg
IDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIFByb3ZpZGUgY2FtZXJhL21pY3JvcGhvbmUg
c2FuZGJveCBleHRlbnNpb25zIHRvIEdQVVByb2Nlc3MKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hh
cmVkL1VSTFNjaGVtZVRhc2tQYXJhbWV0ZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1NoYXJlZC9VUkxTY2hlbWVUYXNrUGFyYW1ldGVycy5jcHAJKHJldmlzaW9uIDI1NDg3MCkK
KysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1VSTFNjaGVtZVRhc2tQYXJhbWV0ZXJzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDIsNiArNDIsNyBAQCB2b2lkIFVSTFNjaGVtZVRhc2tQYXJhbWV0ZXJz
OjplbmNvZGUoSVBDCiAgICAgICAgIHJlcXVlc3QuaHR0cEJvZHkoKS0+ZW5jb2RlKGVuY29kZXIp
OwogICAgIH0gZWxzZQogICAgICAgICBlbmNvZGVyIDw8IGZhbHNlOworICAgIGVuY29kZXIgPDwg
ZnJhbWVJbmZvOwogfQogCiBPcHRpb25hbDxVUkxTY2hlbWVUYXNrUGFyYW1ldGVycz4gVVJMU2No
ZW1lVGFza1BhcmFtZXRlcnM6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCkBAIC03MCw4
ICs3MSwxOCBAQCBPcHRpb25hbDxVUkxTY2hlbWVUYXNrUGFyYW1ldGVycz4gVVJMU2NoCiAgICAg
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgICAgICByZXF1ZXN0LnNldEhUVFBCb2R5
KFdURk1vdmUoZm9ybURhdGEpKTsKICAgICB9CisgICAgCisgICAgT3B0aW9uYWw8RnJhbWVJbmZv
RGF0YT4gZnJhbWVJbmZvOworICAgIGRlY29kZXIgPj4gZnJhbWVJbmZvOworICAgIGlmICghZnJh
bWVJbmZvKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCi0gICAgcmV0dXJuIHt7IFdU
Rk1vdmUoKmhhbmRsZXJJZGVudGlmaWVyKSwgV1RGTW92ZSgqdGFza0lkZW50aWZpZXIpLCBXVEZN
b3ZlKHJlcXVlc3QpIH19OworICAgIHJldHVybiB7eworICAgICAgICBXVEZNb3ZlKCpoYW5kbGVy
SWRlbnRpZmllciksCisgICAgICAgIFdURk1vdmUoKnRhc2tJZGVudGlmaWVyKSwKKyAgICAgICAg
V1RGTW92ZShyZXF1ZXN0KSwKKyAgICAgICAgV1RGTW92ZSgqZnJhbWVJbmZvKSwKKyAgICB9fTsK
IH0KICAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdC9TaGFy
ZWQvVVJMU2NoZW1lVGFza1BhcmFtZXRlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1NoYXJlZC9VUkxTY2hlbWVUYXNrUGFyYW1ldGVycy5oCShyZXZpc2lvbiAyNTQ4NzApCisrKyBT
b3VyY2UvV2ViS2l0L1NoYXJlZC9VUkxTY2hlbWVUYXNrUGFyYW1ldGVycy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiRnJhbWVJ
bmZvRGF0YS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAKIG5hbWVz
cGFjZSBJUEMgewpAQCAtMzgsNiArMzksNyBAQCBzdHJ1Y3QgVVJMU2NoZW1lVGFza1BhcmFtZXRl
cnMgewogICAgIHVpbnQ2NF90IGhhbmRsZXJJZGVudGlmaWVyIHsgMCB9OwogICAgIHVpbnQ2NF90
IHRhc2tJZGVudGlmaWVyIHsgMCB9OwogICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1
ZXN0OworICAgIEZyYW1lSW5mb0RhdGEgZnJhbWVJbmZvOwogICAgIAogICAgIHZvaWQgZW5jb2Rl
KElQQzo6RW5jb2RlciYpIGNvbnN0OwogICAgIHN0YXRpYyBPcHRpb25hbDxVUkxTY2hlbWVUYXNr
UGFyYW1ldGVycz4gZGVjb2RlKElQQzo6RGVjb2RlciYpOwpJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCShyZXZpc2lvbiAyNTQ4NzApCisrKyBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MDYzLDcg
KzkwNjMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c3RhcnRVUkxTY2hlbWVUYXNrU2hhCiAgICAg
YXV0byBpdGVyYXRvciA9IG1fdXJsU2NoZW1lSGFuZGxlcnNCeUlkZW50aWZpZXIuZmluZChwYXJh
bWV0ZXJzLmhhbmRsZXJJZGVudGlmaWVyKTsKICAgICBNRVNTQUdFX0NIRUNLKHByb2Nlc3MsIGl0
ZXJhdG9yICE9IG1fdXJsU2NoZW1lSGFuZGxlcnNCeUlkZW50aWZpZXIuZW5kKCkpOwogCi0gICAg
aXRlcmF0b3ItPnZhbHVlLT5zdGFydFRhc2soKnRoaXMsIHByb2Nlc3MsIHdlYlBhZ2VJRCwgcGFy
YW1ldGVycy50YXNrSWRlbnRpZmllciwgV1RGTW92ZShwYXJhbWV0ZXJzLnJlcXVlc3QpLCBudWxs
cHRyKTsKKyAgICBpdGVyYXRvci0+dmFsdWUtPnN0YXJ0VGFzaygqdGhpcywgcHJvY2Vzcywgd2Vi
UGFnZUlELCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBudWxscHRyKTsKIH0KIAogdm9pZCBXZWJQYWdl
UHJveHk6OnN0b3BVUkxTY2hlbWVUYXNrKHVpbnQ2NF90IGhhbmRsZXJJZGVudGlmaWVyLCB1aW50
NjRfdCB0YXNrSWRlbnRpZmllcikKQEAgLTkwNzksNyArOTA3OSw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5Ojpsb2FkU3luY2hyb25vdXNVUkxTY2gKICAgICBhdXRvIGl0ZXJhdG9yID0gbV91cmxTY2hl
bWVIYW5kbGVyc0J5SWRlbnRpZmllci5maW5kKHBhcmFtZXRlcnMuaGFuZGxlcklkZW50aWZpZXIp
OwogICAgIE1FU1NBR0VfQ0hFQ0sobV9wcm9jZXNzLCBpdGVyYXRvciAhPSBtX3VybFNjaGVtZUhh
bmRsZXJzQnlJZGVudGlmaWVyLmVuZCgpKTsKIAotICAgIGl0ZXJhdG9yLT52YWx1ZS0+c3RhcnRU
YXNrKCp0aGlzLCBtX3Byb2Nlc3MsIG1fd2ViUGFnZUlELCBwYXJhbWV0ZXJzLnRhc2tJZGVudGlm
aWVyLCBXVEZNb3ZlKHBhcmFtZXRlcnMucmVxdWVzdCksIFdURk1vdmUocmVwbHkpKTsKKyAgICBp
dGVyYXRvci0+dmFsdWUtPnN0YXJ0VGFzaygqdGhpcywgbV9wcm9jZXNzLCBtX3dlYlBhZ2VJRCwg
V1RGTW92ZShwYXJhbWV0ZXJzKSwgV1RGTW92ZShyZXBseSkpOwogfQogCiAjaWYgRU5BQkxFKFJF
U09VUkNFX0xPQURfU1RBVElTVElDUykKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlVSTFNjaGVtZUhhbmRsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXIuY3BwCShyZXZpc2lvbiAyNTQ4NzApCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYlVSTFNj
aGVtZUhhbmRsZXIuaCIKIAorI2luY2x1ZGUgIlVSTFNjaGVtZVRhc2tQYXJhbWV0ZXJzLmgiCiAj
aW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViVVJMU2NoZW1lVGFzay5oIgog
CkBAIC00OCw5ICs0OSwxMCBAQCBXZWJVUkxTY2hlbWVIYW5kbGVyOjp+V2ViVVJMU2NoZW1lSGFu
ZGxlCiAgICAgQVNTRVJUKG1fdGFza3MuaXNFbXB0eSgpKTsKIH0KIAotdm9pZCBXZWJVUkxTY2hl
bWVIYW5kbGVyOjpzdGFydFRhc2soV2ViUGFnZVByb3h5JiBwYWdlLCBXZWJQcm9jZXNzUHJveHkm
IHByb2Nlc3MsIFBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCwgdWludDY0X3QgdGFza0lkZW50aWZp
ZXIsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFN5bmNMb2FkQ29tcGxldGlvbkhhbmRsZXIm
JiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViVVJMU2NoZW1lSGFuZGxlcjo6c3RhcnRUYXNr
KFdlYlBhZ2VQcm94eSYgcGFnZSwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCBQYWdlSWRlbnRp
ZmllciB3ZWJQYWdlSUQsIFVSTFNjaGVtZVRhc2tQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycywgU3lu
Y0xvYWRDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGF1dG8g
cmVzdWx0ID0gbV90YXNrcy5hZGQodGFza0lkZW50aWZpZXIsIFdlYlVSTFNjaGVtZVRhc2s6OmNy
ZWF0ZSgqdGhpcywgcGFnZSwgcHJvY2Vzcywgd2ViUGFnZUlELCB0YXNrSWRlbnRpZmllciwgV1RG
TW92ZShyZXF1ZXN0KSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpKTsKKyAgICBhdXRvIHRh
c2tJZGVudGlmaWVyID0gcGFyYW1ldGVycy50YXNrSWRlbnRpZmllcjsKKyAgICBhdXRvIHJlc3Vs
dCA9IG1fdGFza3MuYWRkKHRhc2tJZGVudGlmaWVyLCBXZWJVUkxTY2hlbWVUYXNrOjpjcmVhdGUo
KnRoaXMsIHBhZ2UsIHByb2Nlc3MsIHdlYlBhZ2VJRCwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpKTsKICAgICBBU1NFUlQocmVzdWx0LmlzTmV3RW50cnkp
OwogCiAgICAgYXV0byBwYWdlRW50cnkgPSBtX3Rhc2tzQnlQYWdlSWRlbnRpZmllci5hZGQocGFn
ZS5pZGVudGlmaWVyKCksIEhhc2hTZXQ8dWludDY0X3Q+KCkpOwpJbmRleDogU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lSGFuZGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXIuaAkocmV2aXNpb24gMjU0ODcwKQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lSGFuZGxlci5oCSh3b3JraW5n
IGNvcHkpCkBAIC00MSw2ICs0MSw3IEBAIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIAogbmFtZXNw
YWNlIFdlYktpdCB7CiAKK3N0cnVjdCBVUkxTY2hlbWVUYXNrUGFyYW1ldGVyczsKIGNsYXNzIFdl
YlBhZ2VQcm94eTsKIGNsYXNzIFdlYlByb2Nlc3NQcm94eTsKIApAQCAtNTMsNyArNTQsNyBAQCBw
dWJsaWM6CiAKICAgICB1aW50NjRfdCBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVu
dGlmaWVyOyB9CiAKLSAgICB2b2lkIHN0YXJ0VGFzayhXZWJQYWdlUHJveHkmLCBXZWJQcm9jZXNz
UHJveHkmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgdWludDY0X3QgdGFza0lkZW50aWZpZXIs
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBTeW5jTG9hZENvbXBsZXRpb25IYW5kbGVyJiYp
OworICAgIHZvaWQgc3RhcnRUYXNrKFdlYlBhZ2VQcm94eSYsIFdlYlByb2Nlc3NQcm94eSYsIFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBVUkxTY2hlbWVUYXNrUGFyYW1ldGVycyYmLCBTeW5jTG9h
ZENvbXBsZXRpb25IYW5kbGVyJiYpOwogICAgIHZvaWQgc3RvcFRhc2soV2ViUGFnZVByb3h5Jiwg
dWludDY0X3QgdGFza0lkZW50aWZpZXIpOwogICAgIHZvaWQgc3RvcEFsbFRhc2tzRm9yUGFnZShX
ZWJQYWdlUHJveHkmLCBXZWJQcm9jZXNzUHJveHkqKTsKICAgICB2b2lkIHRhc2tDb21wbGV0ZWQo
V2ViVVJMU2NoZW1lVGFzayYpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJM
U2NoZW1lVGFzay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
VVJMU2NoZW1lVGFzay5jcHAJKHJldmlzaW9uIDI1NDg3MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw4ICsyNiwx
MCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYlVSTFNjaGVtZVRhc2suaCIK
IAorI2luY2x1ZGUgIkFQSUZyYW1lSW5mby5oIgogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIK
ICNpbmNsdWRlICJTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgiCisjaW5jbHVkZSAiVVJMU2No
ZW1lVGFza1BhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJXZWJFcnJvcnMuaCIKICNpbmNsdWRlICJX
ZWJQYWdlTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKQEAgLTM2LDE4ICsz
OCwxOSBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAot
UmVmPFdlYlVSTFNjaGVtZVRhc2s+IFdlYlVSTFNjaGVtZVRhc2s6OmNyZWF0ZShXZWJVUkxTY2hl
bWVIYW5kbGVyJiBoYW5kbGVyLCBXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYlByb2Nlc3NQcm94eSYg
cHJvY2VzcywgUGFnZUlkZW50aWZpZXIgd2ViUGFnZUlELCB1aW50NjRfdCByZXNvdXJjZUlkZW50
aWZpZXIsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFN5bmNMb2FkQ29tcGxldGlvbkhhbmRs
ZXImJiBzeW5jQ29tcGxldGlvbkhhbmRsZXIpCitSZWY8V2ViVVJMU2NoZW1lVGFzaz4gV2ViVVJM
U2NoZW1lVGFzazo6Y3JlYXRlKFdlYlVSTFNjaGVtZUhhbmRsZXImIGhhbmRsZXIsIFdlYlBhZ2VQ
cm94eSYgcGFnZSwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCBQYWdlSWRlbnRpZmllciB3ZWJQ
YWdlSUQsIFVSTFNjaGVtZVRhc2tQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycywgU3luY0xvYWRDb21w
bGV0aW9uSGFuZGxlciYmIHN5bmNDb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBXZWJVUkxTY2hlbWVUYXNrKGhhbmRsZXIsIHBhZ2UsIHByb2Nlc3MsIHdlYlBh
Z2VJRCwgcmVzb3VyY2VJZGVudGlmaWVyLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHN5bmND
b21wbGV0aW9uSGFuZGxlcikpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJVUkxTY2hl
bWVUYXNrKGhhbmRsZXIsIHBhZ2UsIHByb2Nlc3MsIHdlYlBhZ2VJRCwgV1RGTW92ZShwYXJhbWV0
ZXJzKSwgV1RGTW92ZShzeW5jQ29tcGxldGlvbkhhbmRsZXIpKSk7CiB9CiAKLVdlYlVSTFNjaGVt
ZVRhc2s6OldlYlVSTFNjaGVtZVRhc2soV2ViVVJMU2NoZW1lSGFuZGxlciYgaGFuZGxlciwgV2Vi
UGFnZVByb3h5JiBwYWdlLCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIFBhZ2VJZGVudGlmaWVy
IHdlYlBhZ2VJRCwgdWludDY0X3QgcmVzb3VyY2VJZGVudGlmaWVyLCBSZXNvdXJjZVJlcXVlc3Qm
JiByZXF1ZXN0LCBTeW5jTG9hZENvbXBsZXRpb25IYW5kbGVyJiYgc3luY0NvbXBsZXRpb25IYW5k
bGVyKQorV2ViVVJMU2NoZW1lVGFzazo6V2ViVVJMU2NoZW1lVGFzayhXZWJVUkxTY2hlbWVIYW5k
bGVyJiBoYW5kbGVyLCBXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYlByb2Nlc3NQcm94eSYgcHJvY2Vz
cywgUGFnZUlkZW50aWZpZXIgd2ViUGFnZUlELCBVUkxTY2hlbWVUYXNrUGFyYW1ldGVycyYmIHBh
cmFtZXRlcnMsIFN5bmNMb2FkQ29tcGxldGlvbkhhbmRsZXImJiBzeW5jQ29tcGxldGlvbkhhbmRs
ZXIpCiAgICAgOiBtX3VybFNjaGVtZUhhbmRsZXIoaGFuZGxlcikKICAgICAsIG1fcHJvY2Vzcyht
YWtlUmVmKHByb2Nlc3MpKQotICAgICwgbV9pZGVudGlmaWVyKHJlc291cmNlSWRlbnRpZmllcikK
KyAgICAsIG1faWRlbnRpZmllcihwYXJhbWV0ZXJzLnRhc2tJZGVudGlmaWVyKQogICAgICwgbV9w
YWdlUHJveHlJRChwYWdlLmlkZW50aWZpZXIoKSkKICAgICAsIG1fd2ViUGFnZUlEKHdlYlBhZ2VJ
RCkKLSAgICAsIG1fcmVxdWVzdChXVEZNb3ZlKHJlcXVlc3QpKQorICAgICwgbV9yZXF1ZXN0KFdU
Rk1vdmUocGFyYW1ldGVycy5yZXF1ZXN0KSkKKyAgICAsIG1fZnJhbWVJbmZvKEFQSTo6RnJhbWVJ
bmZvOjpjcmVhdGUoV1RGTW92ZShwYXJhbWV0ZXJzLmZyYW1lSW5mbyksICZwYWdlKSkKICAgICAs
IG1fc3luY0NvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoc3luY0NvbXBsZXRpb25IYW5kbGVyKSkK
IHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwpJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaAkocmV2aXNpb24gMjU0ODcwKQorKysgU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
NCw2ICszNCwxMCBAQAogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgogCituYW1lc3BhY2UgQVBJIHsKK2NsYXNzIEZyYW1lSW5mbzsKK30KKwogbmFt
ZXNwYWNlIElQQyB7CiBjbGFzcyBEYXRhUmVmZXJlbmNlOwogfQpAQCAtNDYsNiArNTAsNyBAQCBj
bGFzcyBTaGFyZWRCdWZmZXI7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitzdHJ1Y3QgVVJMU2No
ZW1lVGFza1BhcmFtZXRlcnM7CiBjbGFzcyBXZWJVUkxTY2hlbWVIYW5kbGVyOwogY2xhc3MgV2Vi
UGFnZVByb3h5OwogCkBAIC01NCw3ICs1OSw3IEBAIHVzaW5nIFN5bmNMb2FkQ29tcGxldGlvbkhh
bmRsZXIgPSBDb21wbGUKIGNsYXNzIFdlYlVSTFNjaGVtZVRhc2sgOiBwdWJsaWMgVGhyZWFkU2Fm
ZVJlZkNvdW50ZWQ8V2ViVVJMU2NoZW1lVGFzaz4sIHB1YmxpYyBJbnN0YW5jZUNvdW50ZWQ8V2Vi
VVJMU2NoZW1lVGFzaz4gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdlYlVSTFNjaGVtZVRh
c2spOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8V2ViVVJMU2NoZW1lVGFzaz4gY3JlYXRlKFdl
YlVSTFNjaGVtZUhhbmRsZXImLCBXZWJQYWdlUHJveHkmLCBXZWJQcm9jZXNzUHJveHkmLCBXZWJD
b3JlOjpQYWdlSWRlbnRpZmllciwgdWludDY0X3QgaWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiYsIFN5bmNMb2FkQ29tcGxldGlvbkhhbmRsZXImJik7CisgICAgc3RhdGljIFJl
ZjxXZWJVUkxTY2hlbWVUYXNrPiBjcmVhdGUoV2ViVVJMU2NoZW1lSGFuZGxlciYsIFdlYlBhZ2VQ
cm94eSYsIFdlYlByb2Nlc3NQcm94eSYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBVUkxTY2hl
bWVUYXNrUGFyYW1ldGVycyYmLCBTeW5jTG9hZENvbXBsZXRpb25IYW5kbGVyJiYpOwogCiAgICAg
fldlYlVSTFNjaGVtZVRhc2soKTsKIApAQCAtNjMsNiArNjgsNyBAQCBwdWJsaWM6CiAgICAgV2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXIgd2ViUGFnZUlEKCkgY29uc3QgeyBBU1NFUlQoUnVuTG9vcDo6
aXNNYWluKCkpOyByZXR1cm4gbV93ZWJQYWdlSUQ7IH0KICAgICBXZWJQcm9jZXNzUHJveHkqIHBy
b2Nlc3MoKSB7IEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7IHJldHVybiBtX3Byb2Nlc3MuZ2V0
KCk7IH0KICAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QoKSBjb25z
dCB7IEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7IHJldHVybiBtX3JlcXVlc3Q7IH0KKyAgICBB
UEk6OkZyYW1lSW5mbyYgZnJhbWVJbmZvKCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZUluZm8uZ2V0
KCk7IH0KIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIE5TVVJMUmVxdWVzdCAqbnNSZXF1ZXN0
KCkgY29uc3Q7CkBAIC04NSw3ICs5MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHBhZ2VEZXN0cm95
ZWQoKTsKIAogcHJpdmF0ZToKLSAgICBXZWJVUkxTY2hlbWVUYXNrKFdlYlVSTFNjaGVtZUhhbmRs
ZXImLCBXZWJQYWdlUHJveHkmLCBXZWJQcm9jZXNzUHJveHkmLCBXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllciwgdWludDY0X3QgaWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFN5
bmNMb2FkQ29tcGxldGlvbkhhbmRsZXImJik7CisgICAgV2ViVVJMU2NoZW1lVGFzayhXZWJVUkxT
Y2hlbWVIYW5kbGVyJiwgV2ViUGFnZVByb3h5JiwgV2ViUHJvY2Vzc1Byb3h5JiwgV2ViQ29yZTo6
UGFnZUlkZW50aWZpZXIsIFVSTFNjaGVtZVRhc2tQYXJhbWV0ZXJzJiYsIFN5bmNMb2FkQ29tcGxl
dGlvbkhhbmRsZXImJik7CiAKICAgICBib29sIGlzU3luYygpIGNvbnN0IHsgcmV0dXJuICEhbV9z
eW5jQ29tcGxldGlvbkhhbmRsZXI7IH0KIApAQCAtOTUsNiArMTAxLDcgQEAgcHJpdmF0ZToKICAg
ICBXZWJQYWdlUHJveHlJZGVudGlmaWVyIG1fcGFnZVByb3h5SUQ7CiAgICAgV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIgbV93ZWJQYWdlSUQ7CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IG1f
cmVxdWVzdDsKKyAgICBSZWY8QVBJOjpGcmFtZUluZm8+IG1fZnJhbWVJbmZvOwogICAgIG11dGFi
bGUgTG9jayBtX3JlcXVlc3RMb2NrOwogICAgIGJvb2wgbV9zdG9wcGVkIHsgZmFsc2UgfTsKICAg
ICBib29sIG1fcmVzcG9uc2VTZW50IHsgZmFsc2UgfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1VSTFNjaGVtZVRhc2subW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVVJMU2NoZW1lVGFzay5tbQkocmV2aXNpb24g
MjU0ODcwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVVJMU2NoZW1l
VGFzay5tbQkod29ya2luZyBjb3B5KQpAQCAtMjQsOCArMjQsMTAgQEAKICAqLwogCiAjaW1wb3J0
ICJjb25maWcuaCIKLSNpbXBvcnQgIldLVVJMU2NoZW1lVGFza0ludGVybmFsLmgiCisjaW1wb3J0
ICJXS1VSTFNjaGVtZVRhc2suaCIKIAorI2ltcG9ydCAiV0tGcmFtZUluZm9JbnRlcm5hbC5oIgor
I2ltcG9ydCAiV0tVUkxTY2hlbWVUYXNrSW50ZXJuYWwuaCIKICNpbXBvcnQgIldlYlVSTFNjaGVt
ZUhhbmRsZXIuaCIKICNpbXBvcnQgIldlYlVSTFNjaGVtZVRhc2suaCIKICNpbXBvcnQgPFdlYkNv
cmUvUmVzb3VyY2VFcnJvci5oPgpAQCAtMTQ2LDYgKzE0OCwxMSBAQCAtICh2b2lkKV9kaWRQZXJm
b3JtUmVkaXJlY3Rpb246KE5TVVJMUmVzCiAgICAgcmFpc2VFeGNlcHRpb25JZk5lY2Vzc2FyeShy
ZXN1bHQpOwogfQogCistIChXS0ZyYW1lSW5mbyAqKV9mcmFtZQoreworICAgIHJldHVybiB3cmFw
cGVyKF91cmxTY2hlbWVUYXNrLT50YXNrKCkuZnJhbWVJbmZvKCkpOworfQorCiAjcHJhZ21hIG1h
cmsgV0tPYmplY3QgcHJvdG9jb2wgaW1wbGVtZW50YXRpb24KIAogLSAoQVBJOjpPYmplY3QmKV9h
cGlPYmplY3QKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VSTFNj
aGVtZVRhc2tQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLVVJMU2NoZW1lVGFza1ByaXZhdGUuaAkocmV2aXNpb24gMjU0ODcwKQorKysg
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVVJMU2NoZW1lVGFza1ByaXZhdGUu
aAkod29ya2luZyBjb3B5KQpAQCAtMjUsMTEgKzI1LDE0IEBACiAKICNpbXBvcnQgPFdlYktpdC9X
S1VSTFNjaGVtZVRhc2suaD4KIAorQGNsYXNzIFdLRnJhbWVJbmZvOworCiBXS19BUElfQVZBSUxB
QkxFKG1hY29zKDEwLjEzKSwgaW9zKDExLjApKQogQHByb3RvY29sIFdLVVJMU2NoZW1lVGFza1By
aXZhdGUgPFdLVVJMU2NoZW1lVGFzaz4KIAogLSAodm9pZClfZGlkUGVyZm9ybVJlZGlyZWN0aW9u
OihOU1VSTFJlc3BvbnNlICopcmVzcG9uc2UgbmV3UmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVx
dWVzdDsKIAogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBCT09MIF9yZXF1ZXN0T25s
eUlmQ2FjaGVkIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTUpLCBpb3MoMTMuMCkpOworQHBy
b3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBXS0ZyYW1lSW5mbyAqX2ZyYW1lIFdLX0FQSV9B
VkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAKIEBlbmQKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2Fk
ZXJTdHJhdGVneS5jcHAJKHJldmlzaW9uIDI1NDg3MCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQw
LDE4ICsyNDAsMjYgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkKFJlcwog
Ym9vbCBXZWJMb2FkZXJTdHJhdGVneTo6dHJ5TG9hZGluZ1VzaW5nVVJMU2NoZW1lSGFuZGxlcihS
ZXNvdXJjZUxvYWRlciYgcmVzb3VyY2VMb2FkZXIsIGNvbnN0IFdlYlJlc291cmNlTG9hZGVyOjpU
cmFja2luZ1BhcmFtZXRlcnMmIHRyYWNraW5nUGFyYW1ldGVycykKIHsKICAgICBhdXRvKiB3ZWJG
cmFtZUxvYWRlckNsaWVudCA9IHRvV2ViRnJhbWVMb2FkZXJDbGllbnQocmVzb3VyY2VMb2FkZXIu
ZnJhbWVMb2FkZXIoKS0+Y2xpZW50KCkpOwotICAgIGF1dG8qIHdlYkZyYW1lID0gd2ViRnJhbWVM
b2FkZXJDbGllbnQgPyB3ZWJGcmFtZUxvYWRlckNsaWVudC0+d2ViRnJhbWUoKSA6IG51bGxwdHI7
Ci0gICAgYXV0byogd2ViUGFnZSA9IHdlYkZyYW1lID8gd2ViRnJhbWUtPnBhZ2UoKSA6IG51bGxw
dHI7Ci0gICAgaWYgKHdlYlBhZ2UpIHsKLSAgICAgICAgaWYgKGF1dG8qIGhhbmRsZXIgPSB3ZWJQ
YWdlLT51cmxTY2hlbWVIYW5kbGVyRm9yU2NoZW1lKHJlc291cmNlTG9hZGVyLnJlcXVlc3QoKS51
cmwoKS5wcm90b2NvbCgpLnRvU3RyaW5nV2l0aG91dENvcHlpbmcoKSkpIHsKLSAgICAgICAgICAg
IExPRyhOZXR3b3JrU2NoZWR1bGluZywgIihXZWJQcm9jZXNzKSBXZWJMb2FkZXJTdHJhdGVneTo6
c2NoZWR1bGVMb2FkLCBVUkwgJyVzJyB3aWxsIGJlIGhhbmRsZWQgYnkgYSBVSVByb2Nlc3MgVVJM
IHNjaGVtZSBoYW5kbGVyLiIsIHJlc291cmNlTG9hZGVyLnVybCgpLnN0cmluZygpLnV0ZjgoKS5k
YXRhKCkpOwotICAgICAgICAgICAgV0VCTE9BREVSU1RSQVRFR1lfUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRCgidHJ5TG9hZGluZ1VzaW5nVVJMU2NoZW1lSGFuZGxlcjogVVJMIHdpbGwgYmUgaGFuZGxl
ZCBieSBhIFVJUHJvY2VzcyBVUkwgc2NoZW1lIGhhbmRsZXIiKTsKKyAgICBpZiAoIXdlYkZyYW1l
TG9hZGVyQ2xpZW50KQorICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgICAgIGhhbmRs
ZXItPnN0YXJ0TmV3VGFzayhyZXNvdXJjZUxvYWRlcik7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7CisgICAgYXV0byogd2ViRnJh
bWUgPSB3ZWJGcmFtZUxvYWRlckNsaWVudC0+d2ViRnJhbWUoKTsKKyAgICBpZiAoIXdlYkZyYW1l
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvKiB3ZWJQYWdlID0gd2ViRnJhbWUt
PnBhZ2UoKTsKKyAgICBpZiAoIXdlYlBhZ2UpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IGF1dG8qIGhhbmRsZXIgPSB3ZWJQYWdlLT51cmxTY2hlbWVIYW5kbGVyRm9yU2NoZW1lKHJlc291
cmNlTG9hZGVyLnJlcXVlc3QoKS51cmwoKS5wcm90b2NvbCgpLnRvU3RyaW5nV2l0aG91dENvcHlp
bmcoKSk7CisgICAgaWYgKCFoYW5kbGVyKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBM
T0coTmV0d29ya1NjaGVkdWxpbmcsICIoV2ViUHJvY2VzcykgV2ViTG9hZGVyU3RyYXRlZ3k6OnNj
aGVkdWxlTG9hZCwgVVJMICclcycgd2lsbCBiZSBoYW5kbGVkIGJ5IGEgVUlQcm9jZXNzIFVSTCBz
Y2hlbWUgaGFuZGxlci4iLCByZXNvdXJjZUxvYWRlci51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0
YSgpKTsKKyAgICBXRUJMT0FERVJTVFJBVEVHWV9SRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ0cnlM
b2FkaW5nVXNpbmdVUkxTY2hlbWVIYW5kbGVyOiBVUkwgd2lsbCBiZSBoYW5kbGVkIGJ5IGEgVUlQ
cm9jZXNzIFVSTCBzY2hlbWUgaGFuZGxlciIpOworCisgICAgaGFuZGxlci0+c3RhcnROZXdUYXNr
KHJlc291cmNlTG9hZGVyLCAqd2ViRnJhbWUpOworICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0
aWMgdm9pZCBhZGRQYXJhbWV0ZXJzRnJvbUZyYW1lKGNvbnN0IEZyYW1lKiBmcmFtZSwgTmV0d29y
a1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCkBAIC01MzIsNyArNTQwLDcgQEAg
T3B0aW9uYWw8V2ViTG9hZGVyU3RyYXRlZ3k6OlN5bmNMb2FkUmVzdQogICAgIExPRyhOZXR3b3Jr
U2NoZWR1bGluZywgIihXZWJQcm9jZXNzKSBXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2Fk
LCBzeW5jIGxvYWQgdG8gVVJMICclcycgd2lsbCBiZSBoYW5kbGVkIGJ5IGEgVUlQcm9jZXNzIFVS
TCBzY2hlbWUgaGFuZGxlci4iLCByZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkp
OwogCiAgICAgU3luY0xvYWRSZXN1bHQgcmVzdWx0OwotICAgIGhhbmRsZXItPmxvYWRTeW5jaHJv
bm91c2x5KGlkZW50aWZpZXIsIHJlcXVlc3QsIHJlc3VsdC5yZXNwb25zZSwgcmVzdWx0LmVycm9y
LCByZXN1bHQuZGF0YSk7CisgICAgaGFuZGxlci0+bG9hZFN5bmNocm9ub3VzbHkoaWRlbnRpZmll
ciwgKndlYkZyYW1lLCByZXF1ZXN0LCByZXN1bHQucmVzcG9uc2UsIHJlc3VsdC5lcnJvciwgcmVz
dWx0LmRhdGEpOwogCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZUhhbmRsZXJQcm94eS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lSGFuZGxl
clByb3h5LmNwcAkocmV2aXNpb24gMjU0ODcwKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NTMsMTkgKzUzLDE5IEBAIFdlYlVSTFNjaGVtZUhhbmRsZXJQcm94eTo6fldlYlVSTFNjaGVtZUgK
ICAgICBBU1NFUlQobV90YXNrcy5pc0VtcHR5KCkpOwogfQogCi12b2lkIFdlYlVSTFNjaGVtZUhh
bmRsZXJQcm94eTo6c3RhcnROZXdUYXNrKFJlc291cmNlTG9hZGVyJiBsb2FkZXIpCit2b2lkIFdl
YlVSTFNjaGVtZUhhbmRsZXJQcm94eTo6c3RhcnROZXdUYXNrKFJlc291cmNlTG9hZGVyJiBsb2Fk
ZXIsIFdlYkZyYW1lJiB3ZWJGcmFtZSkKIHsKLSAgICBhdXRvIHJlc3VsdCA9IG1fdGFza3MuYWRk
KGxvYWRlci5pZGVudGlmaWVyKCksIFdlYlVSTFNjaGVtZVRhc2tQcm94eTo6Y3JlYXRlKCp0aGlz
LCBsb2FkZXIpKTsKKyAgICBhdXRvIHJlc3VsdCA9IG1fdGFza3MuYWRkKGxvYWRlci5pZGVudGlm
aWVyKCksIFdlYlVSTFNjaGVtZVRhc2tQcm94eTo6Y3JlYXRlKCp0aGlzLCBsb2FkZXIsIHdlYkZy
YW1lKSk7CiAgICAgQVNTRVJUKHJlc3VsdC5pc05ld0VudHJ5KTsKIAogICAgIFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLndlYkxvYWRlclN0cmF0ZWd5KCkuYWRkVVJMU2NoZW1lVGFza1Byb3h5KCpy
ZXN1bHQuaXRlcmF0b3ItPnZhbHVlKTsKICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlLT5zdGFy
dExvYWRpbmcoKTsKIH0KIAotdm9pZCBXZWJVUkxTY2hlbWVIYW5kbGVyUHJveHk6OmxvYWRTeW5j
aHJvbm91c2x5KFJlc291cmNlTG9hZElkZW50aWZpZXIgbG9hZElkZW50aWZpZXIsIGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlc291
cmNlRXJyb3ImIGVycm9yLCBWZWN0b3I8Y2hhcj4mIGRhdGEpCit2b2lkIFdlYlVSTFNjaGVtZUhh
bmRsZXJQcm94eTo6bG9hZFN5bmNocm9ub3VzbHkoUmVzb3VyY2VMb2FkSWRlbnRpZmllciBsb2Fk
SWRlbnRpZmllciwgV2ViRnJhbWUmIHdlYkZyYW1lLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZXNvdXJjZUVycm9yJiBlcnJvciwg
VmVjdG9yPGNoYXI+JiBkYXRhKQogewogICAgIGRhdGEuc2hyaW5rKDApOwotICAgIGlmICghbV93
ZWJQYWdlLnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkxvYWRTeW5jaHJvbm91c1VS
TFNjaGVtZVRhc2soVVJMU2NoZW1lVGFza1BhcmFtZXRlcnMgeyBtX2lkZW50aWZpZXIsIGxvYWRJ
ZGVudGlmaWVyLCByZXF1ZXN0IH0pLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpMb2FkU3luY2hy
b25vdXNVUkxTY2hlbWVUYXNrOjpSZXBseShyZXNwb25zZSwgZXJyb3IsIGRhdGEpKSkgeworICAg
IGlmICghbV93ZWJQYWdlLnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkxvYWRTeW5j
aHJvbm91c1VSTFNjaGVtZVRhc2soVVJMU2NoZW1lVGFza1BhcmFtZXRlcnMgeyBtX2lkZW50aWZp
ZXIsIGxvYWRJZGVudGlmaWVyLCByZXF1ZXN0LCB3ZWJGcmFtZS5pbmZvKCkgfSksIE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkxvYWRTeW5jaHJvbm91c1VSTFNjaGVtZVRhc2s6OlJlcGx5KHJlc3Bv
bnNlLCBlcnJvciwgZGF0YSkpKSB7CiAgICAgICAgIGVycm9yID0gZmFpbGVkQ3VzdG9tUHJvdG9j
b2xTeW5jTG9hZChyZXF1ZXN0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZUhhbmRsZXJQcm94eS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVt
ZUhhbmRsZXJQcm94eS5oCShyZXZpc2lvbiAyNTQ4NzApCisrKyBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkuaAkod29ya2luZyBjb3B5KQpA
QCAtNDksMTAgKzQ5LDEwIEBAIHB1YmxpYzoKICAgICB9CiAgICAgfldlYlVSTFNjaGVtZUhhbmRs
ZXJQcm94eSgpOwogCi0gICAgdm9pZCBzdGFydE5ld1Rhc2soV2ViQ29yZTo6UmVzb3VyY2VMb2Fk
ZXImKTsKKyAgICB2b2lkIHN0YXJ0TmV3VGFzayhXZWJDb3JlOjpSZXNvdXJjZUxvYWRlciYsIFdl
YkZyYW1lJik7CiAgICAgdm9pZCBzdG9wQWxsVGFza3MoKTsKIAotICAgIHZvaWQgbG9hZFN5bmNo
cm9ub3VzbHkoUmVzb3VyY2VMb2FkSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIFdlYkNvcmU6OlJlc291cmNlRXJy
b3ImLCBWZWN0b3I8Y2hhcj4mKTsKKyAgICB2b2lkIGxvYWRTeW5jaHJvbm91c2x5KFJlc291cmNl
TG9hZElkZW50aWZpZXIsIFdlYkZyYW1lJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBW
ZWN0b3I8Y2hhcj4mKTsKIAogICAgIHVpbnQ2NF90IGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVy
biBtX2lkZW50aWZpZXI7IH0KICAgICBXZWJQYWdlJiBwYWdlKCkgeyByZXR1cm4gbV93ZWJQYWdl
OyB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVU
YXNrUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlVSTFNjaGVtZVRhc2tQcm94eS5jcHAJKHJldmlzaW9uIDI1NDg3MCkKKysrIFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZVRhc2tQcm94eS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5j
bHVkZSAiVVJMU2NoZW1lVGFza1BhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1l
bnRDb2RlcnMuaCIKKyNpbmNsdWRlICJXZWJGcmFtZS5oIgogI2luY2x1ZGUgIldlYlBhZ2UuaCIK
ICNpbmNsdWRlICJXZWJQYWdlUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlVSTFNjaGVt
ZUhhbmRsZXJQcm94eS5oIgpAQCAtNDAsOSArNDEsMTAgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewog
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLVdlYlVSTFNjaGVtZVRhc2tQcm94eTo6V2ViVVJM
U2NoZW1lVGFza1Byb3h5KFdlYlVSTFNjaGVtZUhhbmRsZXJQcm94eSYgaGFuZGxlciwgUmVzb3Vy
Y2VMb2FkZXImIGxvYWRlcikKK1dlYlVSTFNjaGVtZVRhc2tQcm94eTo6V2ViVVJMU2NoZW1lVGFz
a1Byb3h5KFdlYlVSTFNjaGVtZUhhbmRsZXJQcm94eSYgaGFuZGxlciwgUmVzb3VyY2VMb2FkZXIm
IGxvYWRlciwgV2ViRnJhbWUmIGZyYW1lKQogICAgIDogbV91cmxTY2hlbWVIYW5kbGVyKGhhbmRs
ZXIpCiAgICAgLCBtX2NvcmVMb2FkZXIoJmxvYWRlcikKKyAgICAsIG1fZnJhbWUoJmZyYW1lKQog
ICAgICwgbV9yZXF1ZXN0KGxvYWRlci5yZXF1ZXN0KCkpCiAgICAgLCBtX2lkZW50aWZpZXIobG9h
ZGVyLmlkZW50aWZpZXIoKSkKIHsKQEAgLTUxLDcgKzUzLDggQEAgV2ViVVJMU2NoZW1lVGFza1By
b3h5OjpXZWJVUkxTY2hlbWVUYXNrUAogdm9pZCBXZWJVUkxTY2hlbWVUYXNrUHJveHk6OnN0YXJ0
TG9hZGluZygpCiB7CiAgICAgQVNTRVJUKG1fY29yZUxvYWRlcik7Ci0gICAgbV91cmxTY2hlbWVI
YW5kbGVyLnBhZ2UoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlN0YXJ0VVJMU2NoZW1l
VGFzayh7bV91cmxTY2hlbWVIYW5kbGVyLmlkZW50aWZpZXIoKSwgbV9jb3JlTG9hZGVyLT5pZGVu
dGlmaWVyKCksIG1fcmVxdWVzdH0pKTsKKyAgICBBU1NFUlQobV9mcmFtZSk7CisgICAgbV91cmxT
Y2hlbWVIYW5kbGVyLnBhZ2UoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlN0YXJ0VVJM
U2NoZW1lVGFzayhVUkxTY2hlbWVUYXNrUGFyYW1ldGVycyB7IG1fdXJsU2NoZW1lSGFuZGxlci5p
ZGVudGlmaWVyKCksIG1fY29yZUxvYWRlci0+aWRlbnRpZmllcigpLCBtX3JlcXVlc3QsIG1fZnJh
bWUtPmluZm8oKSB9KSk7CiB9CiAKIHZvaWQgV2ViVVJMU2NoZW1lVGFza1Byb3h5OjpzdG9wTG9h
ZGluZygpCkBAIC01OSw2ICs2Miw3IEBAIHZvaWQgV2ViVVJMU2NoZW1lVGFza1Byb3h5OjpzdG9w
TG9hZGluZygKICAgICBBU1NFUlQobV9jb3JlTG9hZGVyKTsKICAgICBtX3VybFNjaGVtZUhhbmRs
ZXIucGFnZSgpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U3RvcFVSTFNjaGVtZVRhc2so
bV91cmxTY2hlbWVIYW5kbGVyLmlkZW50aWZpZXIoKSwgbV9jb3JlTG9hZGVyLT5pZGVudGlmaWVy
KCkpKTsKICAgICBtX2NvcmVMb2FkZXIgPSBudWxscHRyOworICAgIG1fZnJhbWUgPSBudWxscHRy
OwogCiAgICAgLy8gVGhpcyBsaW5lIHdpbGwgcmVzdWx0IGluIHRoaXMgYmVpbmcgZGVsZXRlZC4K
ICAgICBtX3VybFNjaGVtZUhhbmRsZXIudGFza0RpZFN0b3BMb2FkaW5nKCp0aGlzKTsKQEAgLTE0
OSwxMiArMTUzLDE1IEBAIHZvaWQgV2ViVVJMU2NoZW1lVGFza1Byb3h5OjpkaWRDb21wbGV0ZSgK
ICAgICAgICAgbV9jb3JlTG9hZGVyLT5kaWRGYWlsKGVycm9yKTsKIAogICAgIG1fY29yZUxvYWRl
ciA9IG51bGxwdHI7CisgICAgbV9mcmFtZSA9IG51bGxwdHI7CiB9CiAKIGJvb2wgV2ViVVJMU2No
ZW1lVGFza1Byb3h5OjpoYXNMb2FkZXIoKQogewotICAgIGlmIChtX2NvcmVMb2FkZXIgJiYgbV9j
b3JlTG9hZGVyLT5yZWFjaGVkVGVybWluYWxTdGF0ZSgpKQorICAgIGlmIChtX2NvcmVMb2FkZXIg
JiYgbV9jb3JlTG9hZGVyLT5yZWFjaGVkVGVybWluYWxTdGF0ZSgpKSB7CiAgICAgICAgIG1fY29y
ZUxvYWRlciA9IG51bGxwdHI7CisgICAgICAgIG1fZnJhbWUgPSBudWxscHRyOworICAgIH0KIAog
ICAgIHJldHVybiBtX2NvcmVMb2FkZXI7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVUYXNrUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVUYXNrUHJveHkuaAkocmV2aXNp
b24gMjU0ODcwKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2No
ZW1lVGFza1Byb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDEzICszNywxNCBAQCBjbGFzcyBS
ZXNvdXJjZVJlc3BvbnNlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorY2xhc3MgV2ViRnJhbWU7
CiBjbGFzcyBXZWJVUkxTY2hlbWVIYW5kbGVyUHJveHk7CiAKIGNsYXNzIFdlYlVSTFNjaGVtZVRh
c2tQcm94eSA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYlVSTFNjaGVtZVRhc2tQcm94eT4gewogcHVi
bGljOgotICAgIHN0YXRpYyBSZWY8V2ViVVJMU2NoZW1lVGFza1Byb3h5PiBjcmVhdGUoV2ViVVJM
U2NoZW1lSGFuZGxlclByb3h5JiBoYW5kbGVyLCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRlciYgbG9h
ZGVyKQorICAgIHN0YXRpYyBSZWY8V2ViVVJMU2NoZW1lVGFza1Byb3h5PiBjcmVhdGUoV2ViVVJM
U2NoZW1lSGFuZGxlclByb3h5JiBoYW5kbGVyLCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRlciYgbG9h
ZGVyLCBXZWJGcmFtZSYgd2ViRnJhbWUpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBXZWJVUkxTY2hlbWVUYXNrUHJveHkoaGFuZGxlciwgbG9hZGVyKSk7CisgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFdlYlVSTFNjaGVtZVRhc2tQcm94eShoYW5kbGVyLCBsb2FkZXIs
IHdlYkZyYW1lKSk7CiAgICAgfQogICAgIAogICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVxdWVzdDsgfQpAQCAtNTksNyArNjAs
NyBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1
cm4gbV9pZGVudGlmaWVyOyB9CiAKIHByaXZhdGU6Ci0gICAgV2ViVVJMU2NoZW1lVGFza1Byb3h5
KFdlYlVSTFNjaGVtZUhhbmRsZXJQcm94eSYsIFdlYkNvcmU6OlJlc291cmNlTG9hZGVyJik7Cisg
ICAgV2ViVVJMU2NoZW1lVGFza1Byb3h5KFdlYlVSTFNjaGVtZUhhbmRsZXJQcm94eSYsIFdlYkNv
cmU6OlJlc291cmNlTG9hZGVyJiwgV2ViRnJhbWUmKTsKICAgICBib29sIGhhc0xvYWRlcigpOwog
CiAgICAgdm9pZCBxdWV1ZVRhc2soRnVuY3Rpb248dm9pZCgpPiYmIHRhc2spIHsgbV9xdWV1ZWRU
YXNrcy5hcHBlbmQoV1RGTW92ZSh0YXNrKSk7IH0KQEAgLTY3LDYgKzY4LDcgQEAgcHJpdmF0ZToK
IAogICAgIFdlYlVSTFNjaGVtZUhhbmRsZXJQcm94eSYgbV91cmxTY2hlbWVIYW5kbGVyOwogICAg
IFJlZlB0cjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcj4gbV9jb3JlTG9hZGVyOworICAgIFJlZlB0
cjxXZWJGcmFtZT4gbV9mcmFtZTsKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgbV9yZXF1
ZXN0OwogICAgIHVuc2lnbmVkIGxvbmcgbV9pZGVudGlmaWVyOwogICAgIGJvb2wgbV93YWl0aW5n
Rm9yQ29tcGxldGlvbkhhbmRsZXIgeyBmYWxzZSB9OwpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjU0ODcwKQorKysgVG9vbHMv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjAtMDEtMjEgIEFs
ZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBBZGQg
U1BJIG9uIFdLVVJMU2NoZW1lVGFzayB0byBhY2Nlc3MgV0tGcmFtZUluZm8gb2Ygb3JpZ2luYXRp
bmcgZnJhbWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIwNDI2NQorICAgICAgICA8cmRhcjovLzU3MTkzODgzPgorCisgICAgICAgIFJldmlld2VkIGJ5
IEJyYWR5IEVpZHNvbi4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvV0tVUkxTY2hlbWVIYW5kbGVyLTEubW06CisgICAgICAgICgtW0ZyYW1lU2NoZW1lSGFuZGxl
ciB3YWl0Rm9yQWxsUmVxdWVzdHNdKToKKyAgICAgICAgKC1bRnJhbWVTY2hlbWVIYW5kbGVyIHNl
dEV4cGVjdGVkV2ViVmlldzpdKToKKyAgICAgICAgKC1bRnJhbWVTY2hlbWVIYW5kbGVyIHdlYlZp
ZXc6c3RhcnRVUkxTY2hlbWVUYXNrOl0pOgorICAgICAgICAoLVtGcmFtZVNjaGVtZUhhbmRsZXIg
d2ViVmlldzpzdG9wVVJMU2NoZW1lVGFzazpdKToKKwogMjAyMC0wMS0yMSAgQWFrYXNoIEphaW4g
IDxhYWthc2hfamFpbkBhcHBsZS5jb20+CiAKICAgICAgICAgW2V3c10gY29tbWl0LXF1ZXVlIHNo
b3VsZCBjaGVjayBjcSsgZmxhZwpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9XS1VSTFNjaGVtZUhhbmRsZXItMS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLVVJMU2NoZW1lSGFuZGxlci0xLm1tCShyZXZp
c2lvbiAyNTQ4NzApCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dL
VVJMU2NoZW1lSGFuZGxlci0xLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw3IEBACiAj
aW1wb3J0IDx3dGYvUnVuTG9vcC5oPgogI2ltcG9ydCA8d3RmL1RocmVhZGluZy5oPgogI2ltcG9y
dCA8d3RmL1ZlY3Rvci5oPgorI2ltcG9ydCA8d3RmL1dlYWtPYmpDUHRyLmg+CiAjaW1wb3J0IDx3
dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApA
QCAtODgyLDMgKzg4Myw3OCBAQCBURVNUKFVSTFNjaGVtZUhhbmRsZXIsIERpc2FibGVDT1JTKQog
fQogCiAjZW5kaWYgLy8gSEFWRShORVRXT1JLX0ZSQU1FV09SSykKKworQGludGVyZmFjZSBGcmFt
ZVNjaGVtZUhhbmRsZXIgOiBOU09iamVjdCA8V0tVUkxTY2hlbWVIYW5kbGVyPgorLSAodm9pZCl3
YWl0Rm9yQWxsUmVxdWVzdHM7CistICh2b2lkKXNldEV4cGVjdGVkV2ViVmlldzooV0tXZWJWaWV3
ICopd2ViVmlldzsKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIEZyYW1lU2NoZW1lSGFuZGxlciB7
CisgICAgc2l6ZV90IF9yZXF1ZXN0Q291bnQ7CisgICAgV2Vha09iakNQdHI8V0tXZWJWaWV3PiBf
d2ViVmlldzsKK30KKworLSAodm9pZCl3YWl0Rm9yQWxsUmVxdWVzdHMKK3sKKyAgICB3aGlsZSAo
X3JlcXVlc3RDb3VudCA8IDMpCisgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnNwaW5SdW5M
b29wKCk7Cit9CisKKy0gKHZvaWQpc2V0RXhwZWN0ZWRXZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJW
aWV3Cit7CisgICAgX3dlYlZpZXcgPSB3ZWJWaWV3OworfQorCistICh2b2lkKXdlYlZpZXc6KFdL
V2ViVmlldyAqKXdlYlZpZXcgc3RhcnRVUkxTY2hlbWVUYXNrOihpZCA8V0tVUkxTY2hlbWVUYXNr
Pil0YXNrCit7CisgICAgYXV0byBjaGVjayA9IFsmXSAoaWQ8V0tVUkxTY2hlbWVUYXNrPiB0YXNr
LCBjb25zdCBjaGFyKiB1cmwsIGJvb2wgbWFpbkZyYW1lLCBjb25zdCBjaGFyKiByZXF1ZXN0LCBj
b25zdCBjaGFyKiBvcmlnaW5Qcm90b2NvbCwgY29uc3QgY2hhciogb3JpZ2luSG9zdCwgTlNJbnRl
Z2VyIG9yaWdpblBvcnQpIHsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKHRhc2sucmVxdWVzdC5V
UkwuYWJzb2x1dGVTdHJpbmcsIHVybCk7CisgICAgICAgIFdLRnJhbWVJbmZvICppbmZvID0gKChp
ZDxXS1VSTFNjaGVtZVRhc2tQcml2YXRlPil0YXNrKS5fZnJhbWU7CisgICAgICAgIEVYUEVDVF9F
UShpbmZvLmlzTWFpbkZyYW1lLCBtYWluRnJhbWUpOworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEo
aW5mby5yZXF1ZXN0LlVSTC5hYnNvbHV0ZVN0cmluZywgcmVxdWVzdCk7CisgICAgICAgIEVYUEVD
VF9XS19TVFJFUShpbmZvLnNlY3VyaXR5T3JpZ2luLnByb3RvY29sLCBvcmlnaW5Qcm90b2NvbCk7
CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShpbmZvLnNlY3VyaXR5T3JpZ2luLmhvc3QsIG9yaWdp
bkhvc3QpOworICAgICAgICBFWFBFQ1RfRVEoaW5mby5zZWN1cml0eU9yaWdpbi5wb3J0LCBvcmln
aW5Qb3J0KTsKKyAgICAgICAgRVhQRUNUX0VRKGluZm8ud2ViVmlldywgX3dlYlZpZXcuZ2V0KCku
Z2V0KCkpOworICAgIH07CisKKyAgICBhdXRvIHJlc3BvbmQgPSBbXSAoaWQ8V0tVUkxTY2hlbWVU
YXNrPiB0YXNrLCBjb25zdCBjaGFyKiBieXRlcykgeworICAgICAgICBbdGFzayBkaWRSZWNlaXZl
UmVzcG9uc2U6W1tbTlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6dGFzay5yZXF1ZXN0
LlVSTCBNSU1FVHlwZTpAInRleHQvaHRtbCIgZXhwZWN0ZWRDb250ZW50TGVuZ3RoOnN0cmxlbihi
eXRlcykgdGV4dEVuY29kaW5nTmFtZTpuaWxdIGF1dG9yZWxlYXNlXV07CisgICAgICAgIFt0YXNr
IGRpZFJlY2VpdmVEYXRhOltOU0RhdGEgZGF0YVdpdGhCeXRlczpieXRlcyBsZW5ndGg6c3RybGVu
KGJ5dGVzKV1dOworICAgICAgICBbdGFzayBkaWRGaW5pc2hdOworICAgIH07CisKKyAgICBzd2l0
Y2ggKCsrX3JlcXVlc3RDb3VudCkgeworICAgIGNhc2UgMToKKyAgICAgICAgY2hlY2sodGFzaywg
ImZyYW1lOi8vaG9zdDEvbWFpbiIsIHRydWUsICIiLCAiIiwgIiIsIDApOworICAgICAgICByZXNw
b25kKHRhc2ssICI8aWZyYW1lIHNyYz0nLy9ob3N0MjoxMjMvaWZyYW1lJz48L2lmcmFtZT4iKTsK
KyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgMjoKKyAgICAgICAgY2hlY2sodGFzaywgImZyYW1l
Oi8vaG9zdDI6MTIzL2lmcmFtZSIsIGZhbHNlLCAiIiwgImZyYW1lIiwgImhvc3QxIiwgMCk7Cisg
ICAgICAgIHJlc3BvbmQodGFzaywgIjxzY3JpcHQ+ZmV0Y2goJ3N1YnJlc291cmNlJyk8L3Njcmlw
dD4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgMzoKKyAgICAgICAgY2hlY2sodGFzaywg
ImZyYW1lOi8vaG9zdDI6MTIzL3N1YnJlc291cmNlIiwgZmFsc2UsICJmcmFtZTovL2hvc3QyOjEy
My9pZnJhbWUiLCAiZnJhbWUiLCAiaG9zdDIiLCAxMjMpOworICAgICAgICByZXNwb25kKHRhc2ss
ICJkb25lISIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworfQorCistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgc3RvcFVSTFNj
aGVtZVRhc2s6KGlkIDxXS1VSTFNjaGVtZVRhc2s+KXRhc2sKK3sKKyAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKK30KKworQGVuZAorCitURVNUKFVSTFNjaGVtZUhhbmRsZXIsIEZyYW1lKQorewor
ICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24g
bmV3XSk7CisgICAgYXV0byBoYW5kbGVyID0gYWRvcHROUyhbRnJhbWVTY2hlbWVIYW5kbGVyIG5l
d10pOworICAgIFtjb25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6aGFuZGxlci5nZXQo
KSBmb3JVUkxTY2hlbWU6QCJmcmFtZSJdOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tX
S1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkg
Y29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CisgICAgW2hhbmRsZXIgc2V0RXhw
ZWN0ZWRXZWJWaWV3OndlYlZpZXcuZ2V0KCldOworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltO
U1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJmcmFtZTov
L2hvc3QxL21haW4iXV1dOworICAgIFtoYW5kbGVyIHdhaXRGb3JBbGxSZXF1ZXN0c107Cit9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>