<?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>185376</bug_id>
          
          <creation_ts>2018-05-07 07:02:31 -0700</creation_ts>
          <short_desc>Update MediaSession to use release logging</short_desc>
          <delta_ts>2023-09-20 08:49:27 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Media</component>
          <version>Other</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="Eric Carlson">eric.carlson</reporter>
          <assigned_to name="Eric Carlson">eric.carlson</assigned_to>
          <cc>ahmad.saleem792</cc>
    
    <cc>commit-queue</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1421267</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2018-05-07 07:02:31 -0700</bug_when>
    <thetext>Update MediaSession to use runtime logging</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1421268</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-05-07 07:03:27 -0700</bug_when>
    <thetext>&lt;rdar://problem/40022203&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1421269</commentid>
    <comment_count>2</comment_count>
      <attachid>339716</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2018-05-07 07:10:00 -0700</bug_when>
    <thetext>Created attachment 339716
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1421286</commentid>
    <comment_count>3</comment_count>
      <attachid>339723</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2018-05-07 08:24:59 -0700</bug_when>
    <thetext>Created attachment 339723
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1421294</commentid>
    <comment_count>4</comment_count>
      <attachid>339723</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-05-07 09:19:50 -0700</bug_when>
    <thetext>Comment on attachment 339723
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=339723&amp;action=review

&gt; Source/WebCore/html/MediaElementSession.cpp:135
&gt; +        INFO_LOG(LOGIDENTIFIER, &quot;adding &quot;, restrictionName(restriction));

There might be cases where would want to log even if m_restrictions &amp; restriction is true.
Shouldn&apos;t we inverse m_restrictions before doing the &amp;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1422535</commentid>
    <comment_count>5</comment_count>
      <attachid>340044</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2018-05-09 15:36:11 -0700</bug_when>
    <thetext>Created attachment 340044
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1422544</commentid>
    <comment_count>6</comment_count>
      <attachid>340044</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-05-09 16:02:34 -0700</bug_when>
    <thetext>Comment on attachment 340044
Patch for landing

Clearing flags on attachment: 340044

Committed r231604: &lt;https://trac.webkit.org/changeset/231604&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1978666</commentid>
    <comment_count>7</comment_count>
    <who name="Ahmad Saleem">ahmad.saleem792</who>
    <bug_when>2023-09-20 08:49:27 -0700</bug_when>
    <thetext>Landed: https://github.com/WebKit/WebKit/commit/b45a0ac6145896cdaf5c4af2e942f1cc42d76847</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>339716</attachid>
            <date>2018-05-07 07:10:00 -0700</date>
            <delta_ts>2018-05-07 08:24:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-185376-20180507070959.patch</filename>
            <type>text/plain</type>
            <size>34846</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMxNDM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjIwZDUyYjRkMDJhMmJi
YzEyNmQ4NWViNGNiNmI1M2RmMjNhNjBmMC4uYTMxNTliMWE1MjcxOWEyYmRkMjBjNmFjNWE2MGQ5
OGU0YWYxNWYyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDE4LTA1LTA3ICBFcmlj
IENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFVwZGF0ZSBNZWRp
YVNlc3Npb24gdG8gdXNlIHJlbGVhc2UgbG9nZ2luZworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg1Mzc2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80
MDAyMjIwMz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBObyBuZXcgdGVzdHMsIHRlc3RlZCBtYW51YWxseS4KKworICAgICAgICAqIE1vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFTdHJlYW0uaDogaG9zdGluZ0RvY3VtZW50KCkgZG9lc24ndCBuZWVkIHRv
IHJldHVybiBhIGNvbnN0IERvY3VtZW50LgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVk
aW9Db250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dDo6aG9zdGluZ0Rv
Y3VtZW50IGNvbnN0KTogRGl0dG8uCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Nv
bnRleHQuaDoKKworICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOiBEaXR0by4KKwor
ICAgICAgICAqIGh0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYUVsZW1lbnRTZXNzaW9uOjpNZWRpYUVsZW1lbnRTZXNzaW9uKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhRWxlbWVudFNlc3Npb246OmFkZEJlaGF2aW9yUmVzdHJpY3Rpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFFbGVtZW50U2Vzc2lvbjo6cmVtb3ZlQmVoYXZpb3JSZXN0cmlj
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVsZW1lbnRTZXNzaW9uOjpkYXRhTG9hZGlu
Z1Blcm1pdHRlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVsZW1lbnRTZXNzaW9u
OjpmdWxsc2NyZWVuUGVybWl0dGVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRWxl
bWVudFNlc3Npb246OnBhZ2VBbGxvd3NEYXRhTG9hZGluZyBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYUVsZW1lbnRTZXNzaW9uOjpwYWdlQWxsb3dzUGxheWJhY2tBZnRlclJlc3VtaW5n
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRWxlbWVudFNlc3Npb246OmNhblNob3dD
b250cm9sc01hbmFnZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbGVtZW50U2Vz
c2lvbjo6c2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
RWxlbWVudFNlc3Npb246Omhhc1dpcmVsZXNzUGxheWJhY2tUYXJnZXRzIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhRWxlbWVudFNlc3Npb246OndpcmVsZXNzVmlkZW9QbGF5YmFja0Rp
c2FibGVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRWxlbWVudFNlc3Npb246OnNl
dFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
RWxlbWVudFNlc3Npb246OnNldEhhc1BsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5TGlzdGVuZXJz
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRWxlbWVudFNlc3Npb246OmV4dGVybmFsT3V0cHV0
RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRWxlbWVu
dFNlc3Npb246OnNldFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhRWxlbWVudFNlc3Npb246Om1lZGlhRW5naW5lVXBkYXRlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYUVsZW1lbnRTZXNzaW9uOjp3aWxsTG9nIGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhRWxlbWVudFNlc3Npb246OmxvZ2dlciBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVsZW1lbnRTZXNzaW9uOjpsb2dJZGVudGlmaWVy
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRWxlbWVudFNlc3Npb246
OmxvZ0NoYW5uZWwgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwvTWVkaWFFbGVtZW50
U2Vzc2lvbi5oOgorCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Np
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6bmV4dExvZ0lkZW50aWZpZXIpOgorICAgICAgICAo
V2ViQ29yZTo6Y29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6
UGxhdGZvcm1NZWRpYVNlc3Npb246OlBsYXRmb3JtTWVkaWFTZXNzaW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uOjpzZXRTdGF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6YmVnaW5JbnRlcnJ1cHRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb246OmVuZEludGVycnVwdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Y2xpZW50V2lsbEJlZ2luQXV0b3BsYXlpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb246OmNsaWVudFdpbGxQYXVz
ZVBsYXliYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uOjpwYXVz
ZVNlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb246OnN0b3BT
ZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uOjpjbGllbnRE
YXRhQnVmZmVyaW5nVGltZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlh
U2Vzc2lvbjo6bG9nQ2hhbm5lbCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpzdGF0ZU5hbWUp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6aW50ZXJydXB0aW9uTmFtZSk6IERlbGV0ZWQu
CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb24uaDoKKyAgICAg
ICAgKFdURjo6TG9nQXJndW1lbnQ8V2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb246OlN0YXRl
Pjo6dG9TdHJpbmcpOgorICAgICAgICAoV1RGOjpMb2dBcmd1bWVudDxXZWJDb3JlOjpQbGF0Zm9y
bU1lZGlhU2Vzc2lvbjo6SW50ZXJydXB0aW9uVHlwZT46OnRvU3RyaW5nKToKKwogMjAxOC0wNS0w
NiAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdIEFkZCBh
c3NlcnRpb25zIGZvciBzdGFsZSBEaXNwbGF5OjpCb3ggZ2VvbWV0cnkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uaAppbmRleCBmNjVkMDZkNjkw
MDczNzAxODZkNzQ5NjRmZWVlYWFjMTI5ZTM4YjRhLi4xYzFhZTExYjgwZTAwYjU3M2MzM2VjMjRj
Mzk0NTExNTg2NmVhNDU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL01lZGlhU3RyZWFtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9NZWRpYVN0cmVhbS5oCkBAIC0xNTEsNyArMTUxLDcgQEAgcHJpdmF0ZToKICAgICBib29s
IHNob3VsZE92ZXJyaWRlQmFja2dyb3VuZFBsYXliYWNrUmVzdHJpY3Rpb24oUGxhdGZvcm1NZWRp
YVNlc3Npb246OkludGVycnVwdGlvblR5cGUpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9
CiAgICAgU3RyaW5nIHNvdXJjZUFwcGxpY2F0aW9uSWRlbnRpZmllcigpIGNvbnN0IGZpbmFsOwog
ICAgIGJvb2wgY2FuUHJvZHVjZUF1ZGlvKCkgY29uc3QgZmluYWw7Ci0gICAgY29uc3QgRG9jdW1l
bnQqIGhvc3RpbmdEb2N1bWVudCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGRvY3VtZW50KCk7IH0K
KyAgICBEb2N1bWVudCogaG9zdGluZ0RvY3VtZW50KCkgY29uc3QgZmluYWwgeyByZXR1cm4gZG9j
dW1lbnQoKTsgfQogICAgIGJvb2wgcHJvY2Vzc2luZ1VzZXJHZXN0dXJlRm9yTWVkaWEoKSBjb25z
dCBmaW5hbDsKIAogICAgIC8vIEFjdGl2ZURPTU9iamVjdCBBUEkuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKaW5kZXggMmM3NDEwZGZkNzQ3
YjA2NDgzYjUzYmIxMWNhNzFjYWY4NGZiZDUzNC4uMWMwZDQ4Zjc2MTE3NjA0YmRmNzI3OTBiNTUy
NzQ0ZWMzZDIyZDY4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9Db250ZXh0LmNwcApAQCAtMzQzLDcgKzM0Myw3IEBAIERvY3VtZW50KiBBdWRpb0NvbnRl
eHQ6OmRvY3VtZW50KCkgY29uc3QKICAgICByZXR1cm4gZG93bmNhc3Q8RG9jdW1lbnQ+KG1fc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCk7CiB9CiAKLWNvbnN0IERvY3VtZW50KiBBdWRpb0NvbnRleHQ6
Omhvc3RpbmdEb2N1bWVudCgpIGNvbnN0CitEb2N1bWVudCogQXVkaW9Db250ZXh0Ojpob3N0aW5n
RG9jdW1lbnQoKSBjb25zdAogewogICAgIHJldHVybiBkb3duY2FzdDxEb2N1bWVudD4obV9zY3Jp
cHRFeGVjdXRpb25Db250ZXh0KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvQ29udGV4dC5oCmluZGV4IDJiOGEyYjEwOGNkMGQxYWRmZThmYjkxMmJmZWQyZDNm
OWExYzgzM2YuLmU1ZTY1YzA3OGU4MGViYmZkMTJmOWE3M2E1Zjc3ZjdkNmI0ZTNhNDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaApAQCAtODks
NyArODksNyBAQCBwdWJsaWM6CiAKICAgICBEb2N1bWVudCogZG9jdW1lbnQoKSBjb25zdDsgLy8g
QVNTRVJUcyBpZiBkb2N1bWVudCBubyBsb25nZXIgZXhpc3RzLgogCi0gICAgY29uc3QgRG9jdW1l
bnQqIGhvc3RpbmdEb2N1bWVudCgpIGNvbnN0IG92ZXJyaWRlOworICAgIERvY3VtZW50KiBob3N0
aW5nRG9jdW1lbnQoKSBjb25zdCBmaW5hbDsKIAogICAgIEF1ZGlvRGVzdGluYXRpb25Ob2RlKiBk
ZXN0aW5hdGlvbigpIHsgcmV0dXJuIG1fZGVzdGluYXRpb25Ob2RlLmdldCgpOyB9CiAgICAgc2l6
ZV90IGN1cnJlbnRTYW1wbGVGcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVzdGluYXRpb25Ob2Rl
LT5jdXJyZW50U2FtcGxlRnJhbWUoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuaAppbmRleCBiYTlmNTlhNzdjMjdiYjllNzM4Mzk3ZTNiYWY1YWUwNjQ4YjAwNTAzLi40ZDE0
NjhkYzc1N2JjZmU4ZmEyMDdmMGZjYjhiMDJiNjA5N2UzOTA0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuaApAQCAtMTk4LDcgKzE5OCw3IEBAIHB1YmxpYzoKICAgICAKICAg
ICBib29sIGluQWN0aXZlRG9jdW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2luQWN0aXZlRG9jdW1l
bnQ7IH0KIAotICAgIGNvbnN0IERvY3VtZW50KiBob3N0aW5nRG9jdW1lbnQoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiAmZG9jdW1lbnQoKTsgfQorICAgIERvY3VtZW50KiBob3N0aW5nRG9jdW1l
bnQoKSBjb25zdCBmaW5hbCB7IHJldHVybiAmZG9jdW1lbnQoKTsgfQogCiAvLyBET00gQVBJCiAv
LyBlcnJvciBzdGF0ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1l
bnRTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5j
cHAKaW5kZXggNjcyOGFmNWJjNDJkZDVmMjIyODI0Njg2MjA4MjgzN2RkYTJjYWRlNy4uOTJkZmRi
NjgwZDg2ODVkMTc1NDZiMGY0NjlmMjExZmEyY2E5OGEwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL01lZGlhRWxlbWVudFNlc3Npb24uY3BwCkBAIC0xMDUsNiArMTA1LDkgQEAgTWVkaWFFbGVt
ZW50U2Vzc2lvbjo6TWVkaWFFbGVtZW50U2Vzc2lvbihIVE1MTWVkaWFFbGVtZW50JiBlbGVtZW50
KQogICAgICwgbV90YXJnZXRBdmFpbGFiaWxpdHlDaGFuZ2VkVGltZXIoKnRoaXMsICZNZWRpYUVs
ZW1lbnRTZXNzaW9uOjp0YXJnZXRBdmFpbGFiaWxpdHlDaGFuZ2VkVGltZXJGaXJlZCkKICNlbmRp
ZgogICAgICwgbV9tYWluQ29udGVudENoZWNrVGltZXIoKnRoaXMsICZNZWRpYUVsZW1lbnRTZXNz
aW9uOjptYWluQ29udGVudENoZWNrVGltZXJGaXJlZCkKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJM
RUQKKyAgICAsIG1fbG9nSWRlbnRpZmllcihlbGVtZW50LmxvZ0lkZW50aWZpZXIoKSkKKyNlbmRp
ZgogewogfQogCkBAIC0xMjgsNyArMTMxLDkgQEAgdm9pZCBNZWRpYUVsZW1lbnRTZXNzaW9uOjp1
bnJlZ2lzdGVyV2l0aERvY3VtZW50KERvY3VtZW50JiBkb2N1bWVudCkKIAogdm9pZCBNZWRpYUVs
ZW1lbnRTZXNzaW9uOjphZGRCZWhhdmlvclJlc3RyaWN0aW9uKEJlaGF2aW9yUmVzdHJpY3Rpb25z
IHJlc3RyaWN0aW9uKQogewotICAgIExPRyhNZWRpYSwgIk1lZGlhRWxlbWVudFNlc3Npb246OmFk
ZEJlaGF2aW9yUmVzdHJpY3Rpb24gLSBhZGRpbmcgJXMiLCByZXN0cmljdGlvbk5hbWUocmVzdHJp
Y3Rpb24pLnV0ZjgoKS5kYXRhKCkpOworICAgIGlmICghKG1fcmVzdHJpY3Rpb25zICYgcmVzdHJp
Y3Rpb24pKQorICAgICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCAiYWRkaW5nICIsIHJlc3Ry
aWN0aW9uTmFtZShyZXN0cmljdGlvbikpOworCiAgICAgbV9yZXN0cmljdGlvbnMgfD0gcmVzdHJp
Y3Rpb247CiAKICAgICBpZiAocmVzdHJpY3Rpb24gJiBPdmVycmlkZVVzZXJHZXN0dXJlUmVxdWly
ZW1lbnRGb3JNYWluQ29udGVudCkKQEAgLTE0Myw3ICsxNDgsMTAgQEAgdm9pZCBNZWRpYUVsZW1l
bnRTZXNzaW9uOjpyZW1vdmVCZWhhdmlvclJlc3RyaWN0aW9uKEJlaGF2aW9yUmVzdHJpY3Rpb25z
IHJlc3RyaWMKICAgICAgICAgICAgIHBhZ2UtPnNldEFsbG93c1BsYXliYWNrQ29udHJvbHNGb3JB
dXRvcGxheWluZ0F1ZGlvKHRydWUpOwogICAgIH0KIAotICAgIExPRyhNZWRpYSwgIk1lZGlhRWxl
bWVudFNlc3Npb246OnJlbW92ZUJlaGF2aW9yUmVzdHJpY3Rpb24gLSByZW1vdmluZyAlcyIsIHJl
c3RyaWN0aW9uTmFtZShyZXN0cmljdGlvbikudXRmOCgpLmRhdGEoKSk7CisgICAgaWYgKCEobV9y
ZXN0cmljdGlvbnMgJiByZXN0cmljdGlvbikpCisgICAgICAgIHJldHVybjsKKworICAgIElORk9f
TE9HKExPR0lERU5USUZJRVIsICJyZW1vdmluZyAiLCByZXN0cmljdGlvbk5hbWUobV9yZXN0cmlj
dGlvbnMgJiByZXN0cmljdGlvbikpOwogICAgIG1fcmVzdHJpY3Rpb25zICY9IH5yZXN0cmljdGlv
bjsKIH0KIApAQCAtMjU2LDcgKzI2NCw3IEBAIGJvb2wgTWVkaWFFbGVtZW50U2Vzc2lvbjo6ZGF0
YUxvYWRpbmdQZXJtaXR0ZWQoKSBjb25zdAogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIGlm
IChtX3Jlc3RyaWN0aW9ucyAmIFJlcXVpcmVVc2VyR2VzdHVyZUZvckxvYWQgJiYgIW1fZWxlbWVu
dC5kb2N1bWVudCgpLnByb2Nlc3NpbmdVc2VyR2VzdHVyZUZvck1lZGlhKCkpIHsKLSAgICAgICAg
TE9HKE1lZGlhLCAiTWVkaWFFbGVtZW50U2Vzc2lvbjo6ZGF0YUxvYWRpbmdQZXJtaXR0ZWQgLSBy
ZXR1cm5pbmcgRkFMU0UiKTsKKyAgICAgICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwgInJldHVy
bmluZyBGQUxTRSIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC0yNjYsNyAr
Mjc0LDcgQEAgYm9vbCBNZWRpYUVsZW1lbnRTZXNzaW9uOjpkYXRhTG9hZGluZ1Blcm1pdHRlZCgp
IGNvbnN0CiBib29sIE1lZGlhRWxlbWVudFNlc3Npb246OmZ1bGxzY3JlZW5QZXJtaXR0ZWQoKSBj
b25zdAogewogICAgIGlmIChtX3Jlc3RyaWN0aW9ucyAmIFJlcXVpcmVVc2VyR2VzdHVyZUZvckZ1
bGxzY3JlZW4gJiYgIW1fZWxlbWVudC5kb2N1bWVudCgpLnByb2Nlc3NpbmdVc2VyR2VzdHVyZUZv
ck1lZGlhKCkpIHsKLSAgICAgICAgTE9HKE1lZGlhLCAiTWVkaWFFbGVtZW50U2Vzc2lvbjo6ZnVs
bHNjcmVlblBlcm1pdHRlZCAtIHJldHVybmluZyBGQUxTRSIpOworICAgICAgICBJTkZPX0xPRyhM
T0dJREVOVElGSUVSLCAicmV0dXJuaW5nIEZBTFNFIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiAKQEAgLTI3Nyw3ICsyODUsNyBAQCBib29sIE1lZGlhRWxlbWVudFNlc3Npb246OnBh
Z2VBbGxvd3NEYXRhTG9hZGluZygpIGNvbnN0CiB7CiAgICAgUGFnZSogcGFnZSA9IG1fZWxlbWVu
dC5kb2N1bWVudCgpLnBhZ2UoKTsKICAgICBpZiAobV9yZXN0cmljdGlvbnMgJiBSZXF1aXJlUGFn
ZUNvbnNlbnRUb0xvYWRNZWRpYSAmJiBwYWdlICYmICFwYWdlLT5jYW5TdGFydE1lZGlhKCkpIHsK
LSAgICAgICAgTE9HKE1lZGlhLCAiTWVkaWFFbGVtZW50U2Vzc2lvbjo6cGFnZUFsbG93c0RhdGFM
b2FkaW5nIC0gcmV0dXJuaW5nIEZBTFNFIik7CisgICAgICAgIElORk9fTE9HKExPR0lERU5USUZJ
RVIsICJyZXR1cm5pbmcgRkFMU0UiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApA
QCAtMjg4LDcgKzI5Niw3IEBAIGJvb2wgTWVkaWFFbGVtZW50U2Vzc2lvbjo6cGFnZUFsbG93c1Bs
YXliYWNrQWZ0ZXJSZXN1bWluZygpIGNvbnN0CiB7CiAgICAgUGFnZSogcGFnZSA9IG1fZWxlbWVu
dC5kb2N1bWVudCgpLnBhZ2UoKTsKICAgICBpZiAobV9yZXN0cmljdGlvbnMgJiBSZXF1aXJlUGFn
ZUNvbnNlbnRUb1Jlc3VtZU1lZGlhICYmIHBhZ2UgJiYgIXBhZ2UtPmNhblN0YXJ0TWVkaWEoKSkg
ewotICAgICAgICBMT0coTWVkaWEsICJNZWRpYUVsZW1lbnRTZXNzaW9uOjpwYWdlQWxsb3dzUGxh
eWJhY2tBZnRlclJlc3VtaW5nIC0gcmV0dXJuaW5nIEZBTFNFIik7CisgICAgICAgIElORk9fTE9H
KExPR0lERU5USUZJRVIsICJyZXR1cm5pbmcgRkFMU0UiKTsKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KIApAQCAtMjk4LDk0ICszMDYsOTQgQEAgYm9vbCBNZWRpYUVsZW1lbnRTZXNzaW9u
OjpwYWdlQWxsb3dzUGxheWJhY2tBZnRlclJlc3VtaW5nKCkgY29uc3QKIGJvb2wgTWVkaWFFbGVt
ZW50U2Vzc2lvbjo6Y2FuU2hvd0NvbnRyb2xzTWFuYWdlcihQbGF5YmFja0NvbnRyb2xzUHVycG9z
ZSBwdXJwb3NlKSBjb25zdAogewogICAgIGlmIChtX2VsZW1lbnQuaXNTdXNwZW5kZWQoKSB8fCAh
bV9lbGVtZW50LmluQWN0aXZlRG9jdW1lbnQoKSkgewotICAgICAgICBMT0coTWVkaWEsICJNZWRp
YUVsZW1lbnRTZXNzaW9uOjpjYW5TaG93Q29udHJvbHNNYW5hZ2VyIC0gcmV0dXJuaW5nIEZBTFNF
OiBpc1N1c3BlbmRlZCgpIik7CisgICAgICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsICJyZXR1
cm5pbmcgRkFMU0U6IGlzU3VzcGVuZGVkKCkiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KIAogICAgIGlmIChtX2VsZW1lbnQuaXNGdWxsc2NyZWVuKCkpIHsKLSAgICAgICAgTE9HKE1l
ZGlhLCAiTWVkaWFFbGVtZW50U2Vzc2lvbjo6Y2FuU2hvd0NvbnRyb2xzTWFuYWdlciAtIHJldHVy
bmluZyBUUlVFOiBJcyBmdWxsc2NyZWVuIik7CisgICAgICAgIElORk9fTE9HKExPR0lERU5USUZJ
RVIsICJyZXR1cm5pbmcgVFJVRTogaXMgZnVsbHNjcmVlbiIpOwogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9CiAKICAgICBpZiAobV9lbGVtZW50Lm11dGVkKCkpIHsKLSAgICAgICAgTE9HKE1l
ZGlhLCAiTWVkaWFFbGVtZW50U2Vzc2lvbjo6Y2FuU2hvd0NvbnRyb2xzTWFuYWdlciAtIHJldHVy
bmluZyBGQUxTRTogTXV0ZWQiKTsKKyAgICAgICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwgInJl
dHVybmluZyBGQUxTRTogbXV0ZWQiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAog
ICAgIGlmIChtX2VsZW1lbnQuZG9jdW1lbnQoKS5pc01lZGlhRG9jdW1lbnQoKSAmJiAobV9lbGVt
ZW50LmRvY3VtZW50KCkuZnJhbWUoKSAmJiBtX2VsZW1lbnQuZG9jdW1lbnQoKS5mcmFtZSgpLT5p
c01haW5GcmFtZSgpKSkgewotICAgICAgICBMT0coTWVkaWEsICJNZWRpYUVsZW1lbnRTZXNzaW9u
OjpjYW5TaG93Q29udHJvbHNNYW5hZ2VyIC0gcmV0dXJuaW5nIFRSVUU6IElzIG1lZGlhIGRvY3Vt
ZW50Iik7CisgICAgICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsICJyZXR1cm5pbmcgVFJVRTog
aXMgbWVkaWEgZG9jdW1lbnQiKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCiAgICAg
aWYgKGNsaWVudCgpLnByZXNlbnRhdGlvblR5cGUoKSA9PSBBdWRpbykgewogICAgICAgICBpZiAo
IWhhc0JlaGF2aW9yUmVzdHJpY3Rpb24oUmVxdWlyZVVzZXJHZXN0dXJlVG9Db250cm9sQ29udHJv
bHNNYW5hZ2VyKSB8fCBtX2VsZW1lbnQuZG9jdW1lbnQoKS5wcm9jZXNzaW5nVXNlckdlc3R1cmVG
b3JNZWRpYSgpKSB7Ci0gICAgICAgICAgICBMT0coTWVkaWEsICJNZWRpYUVsZW1lbnRTZXNzaW9u
OjpjYW5TaG93Q29udHJvbHNNYW5hZ2VyIC0gcmV0dXJuaW5nIFRSVUU6IEF1ZGlvIGVsZW1lbnQg
d2l0aCB1c2VyIGdlc3R1cmUiKTsKKyAgICAgICAgICAgIElORk9fTE9HKExPR0lERU5USUZJRVIs
ICJyZXR1cm5pbmcgVFJVRTogYXVkaW8gZWxlbWVudCB3aXRoIHVzZXIgZ2VzdHVyZSIpOwogICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAobV9lbGVtZW50
LmlzUGxheWluZygpICYmIGFsbG93c1BsYXliYWNrQ29udHJvbHNGb3JBdXRvcGxheWluZ0F1ZGlv
KCkpIHsKLSAgICAgICAgICAgIExPRyhNZWRpYSwgIk1lZGlhRWxlbWVudFNlc3Npb246OmNhblNo
b3dDb250cm9sc01hbmFnZXIgLSByZXR1cm5pbmcgVFJVRTogVXNlciBoYXMgcGxheWVkIG1lZGlh
IGJlZm9yZSIpOworICAgICAgICAgICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwgInJldHVybmlu
ZyBUUlVFOiB1c2VyIGhhcyBwbGF5ZWQgbWVkaWEgYmVmb3JlIik7CiAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICAgICAgfQogCi0gICAgICAgIExPRyhNZWRpYSwgIk1lZGlhRWxlbWVudFNl
c3Npb246OmNhblNob3dDb250cm9sc01hbmFnZXIgLSByZXR1cm5pbmcgRkFMU0U6IEF1ZGlvIGVs
ZW1lbnQgaXMgbm90IHN1aXRhYmxlIik7CisgICAgICAgIElORk9fTE9HKExPR0lERU5USUZJRVIs
ICJyZXR1cm5pbmcgRkFMU0U6IGF1ZGlvIGVsZW1lbnQgaXMgbm90IHN1aXRhYmxlIik7CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBpZiAocHVycG9zZSA9PSBQbGF5YmFja0Nv
bnRyb2xzUHVycG9zZTo6Q29udHJvbHNNYW5hZ2VyICYmICFpc0VsZW1lbnRSZWN0TW9zdGx5SW5N
YWluRnJhbWUobV9lbGVtZW50KSkgewotICAgICAgICBMT0coTWVkaWEsICJNZWRpYUVsZW1lbnRT
ZXNzaW9uOjpjYW5TaG93Q29udHJvbHNNYW5hZ2VyIC0gcmV0dXJuaW5nIEZBTFNFOiBOb3QgaW4g
bWFpbiBmcmFtZSIpOworICAgICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCAicmV0dXJuaW5n
IEZBTFNFOiBub3QgaW4gbWFpbiBmcmFtZSIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQogCiAgICAgaWYgKCFtX2VsZW1lbnQuaGFzQXVkaW8oKSAmJiAhbV9lbGVtZW50Lmhhc0V2ZXJI
YWRBdWRpbygpKSB7Ci0gICAgICAgIExPRyhNZWRpYSwgIk1lZGlhRWxlbWVudFNlc3Npb246OmNh
blNob3dDb250cm9sc01hbmFnZXIgLSByZXR1cm5pbmcgRkFMU0U6IE5vIGF1ZGlvIik7CisgICAg
ICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsICJyZXR1cm5pbmcgRkFMU0U6IG5vIGF1ZGlvIik7
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBpZiAoIXBsYXliYWNrUGVybWl0
dGVkKCkpIHsKLSAgICAgICAgTE9HKE1lZGlhLCAiTWVkaWFFbGVtZW50U2Vzc2lvbjo6Y2FuU2hv
d0NvbnRyb2xzTWFuYWdlciAtIHJldHVybmluZyBGQUxTRTogUGxheWJhY2sgbm90IHBlcm1pdHRl
ZCIpOworICAgICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCAicmV0dXJuaW5nIEZBTFNFOiBw
bGF5YmFjayBub3QgcGVybWl0dGVkIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAK
ICAgICBpZiAoIWhhc0JlaGF2aW9yUmVzdHJpY3Rpb24oUmVxdWlyZVVzZXJHZXN0dXJlVG9Db250
cm9sQ29udHJvbHNNYW5hZ2VyKSB8fCBtX2VsZW1lbnQuZG9jdW1lbnQoKS5wcm9jZXNzaW5nVXNl
ckdlc3R1cmVGb3JNZWRpYSgpKSB7Ci0gICAgICAgIExPRyhNZWRpYSwgIk1lZGlhRWxlbWVudFNl
c3Npb246OmNhblNob3dDb250cm9sc01hbmFnZXIgLSByZXR1cm5pbmcgVFJVRTogTm8gdXNlciBn
ZXN0dXJlIHJlcXVpcmVkIik7CisgICAgICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsICJyZXR1
cm5pbmcgVFJVRTogbm8gdXNlciBnZXN0dXJlIHJlcXVpcmVkIik7CiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0KIAogICAgIGlmIChwdXJwb3NlID09IFBsYXliYWNrQ29udHJvbHNQdXJwb3Nl
OjpDb250cm9sc01hbmFnZXIgJiYgaGFzQmVoYXZpb3JSZXN0cmljdGlvbihSZXF1aXJlUGxheWJh
Y2tUb0NvbnRyb2xDb250cm9sc01hbmFnZXIpICYmICFtX2VsZW1lbnQuaXNQbGF5aW5nKCkpIHsK
LSAgICAgICAgTE9HKE1lZGlhLCAiTWVkaWFFbGVtZW50U2Vzc2lvbjo6Y2FuU2hvd0NvbnRyb2xz
TWFuYWdlciAtIHJldHVybmluZyBGQUxTRTogTmVlZHMgdG8gYmUgcGxheWluZyIpOworICAgICAg
ICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCAicmV0dXJuaW5nIEZBTFNFOiBuZWVkcyB0byBiZSBw
bGF5aW5nIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBpZiAoIW1fZWxl
bWVudC5oYXNFdmVyTm90aWZpZWRBYm91dFBsYXlpbmcoKSkgewotICAgICAgICBMT0coTWVkaWEs
ICJNZWRpYUVsZW1lbnRTZXNzaW9uOjpjYW5TaG93Q29udHJvbHNNYW5hZ2VyIC0gcmV0dXJuaW5n
IEZBTFNFOiBIYXNuJ3QgZmlyZWQgcGxheWluZyBub3RpZmljYXRpb24iKTsKKyAgICAgICAgSU5G
T19MT0coTE9HSURFTlRJRklFUiwgInJldHVybmluZyBGQUxTRTogaGFzbid0IGZpcmVkIHBsYXlp
bmcgbm90aWZpY2F0aW9uIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICAv
LyBPbmx5IGFsbG93IHRoZSBtYWluIGNvbnRlbnQgaGV1cmlzdGljIHRvIGZvcmJpZCB2aWRlb3Mg
ZnJvbSBzaG93aW5nIHVwIGlmIG91ciBwdXJwb3NlIGlzIHRoZSBjb250cm9scyBtYW5hZ2VyLgog
ICAgIGlmIChwdXJwb3NlID09IFBsYXliYWNrQ29udHJvbHNQdXJwb3NlOjpDb250cm9sc01hbmFn
ZXIgJiYgbV9lbGVtZW50LmlzVmlkZW8oKSkgewogICAgICAgICBpZiAoIW1fZWxlbWVudC5yZW5k
ZXJlcigpKSB7Ci0gICAgICAgICAgICBMT0coTWVkaWEsICJNZWRpYUVsZW1lbnRTZXNzaW9uOjpj
YW5TaG93Q29udHJvbHNNYW5hZ2VyIC0gcmV0dXJuaW5nIEZBTFNFOiBObyByZW5kZXJlciIpOwor
ICAgICAgICAgICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwgInJldHVybmluZyBGQUxTRTogbm8g
cmVuZGVyZXIiKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogCiAgICAg
ICAgIGlmICghbV9lbGVtZW50Lmhhc1ZpZGVvKCkgJiYgIW1fZWxlbWVudC5oYXNFdmVySGFkVmlk
ZW8oKSkgewotICAgICAgICAgICAgTE9HKE1lZGlhLCAiTWVkaWFFbGVtZW50U2Vzc2lvbjo6Y2Fu
U2hvd0NvbnRyb2xzTWFuYWdlciAtIHJldHVybmluZyBGQUxTRTogTm8gdmlkZW8iKTsKKyAgICAg
ICAgICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsICJyZXR1cm5pbmcgRkFMU0U6IG5vIHZpZGVv
Iik7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAo
aXNMYXJnZUVub3VnaEZvck1haW5Db250ZW50KE1lZGlhU2Vzc2lvbk1haW5Db250ZW50UHVycG9z
ZTo6TWVkaWFDb250cm9scykpIHsKLSAgICAgICAgICAgIExPRyhNZWRpYSwgIk1lZGlhRWxlbWVu
dFNlc3Npb246OmNhblNob3dDb250cm9sc01hbmFnZXIgLSByZXR1cm5pbmcgVFJVRTogSXMgbWFp
biBjb250ZW50Iik7CisgICAgICAgICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCAicmV0dXJu
aW5nIFRSVUU6IGlzIG1haW4gY29udGVudCIpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgICAgIH0KICAgICB9CiAKICAgICBpZiAocHVycG9zZSA9PSBQbGF5YmFja0NvbnRyb2xzUHVy
cG9zZTo6Tm93UGxheWluZykgewotICAgICAgICBMT0coTWVkaWEsICJNZWRpYUVsZW1lbnRTZXNz
aW9uOjpjYW5TaG93Q29udHJvbHNNYW5hZ2VyIC0gcmV0dXJuaW5nIFRSVUU6IFBvdGVudGlhbGx5
IHBsYXlzIGF1ZGlvIik7CisgICAgICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsICJyZXR1cm5p
bmcgVFJVRTogcG90ZW50aWFsbHkgcGxheXMgYXVkaW8iKTsKICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgfQogCi0gICAgTE9HKE1lZGlhLCAiTWVkaWFFbGVtZW50U2Vzc2lvbjo6Y2FuU2hvd0Nv
bnRyb2xzTWFuYWdlciAtIHJldHVybmluZyBGQUxTRTogTm8gdXNlciBnZXN0dXJlIik7CisgICAg
SU5GT19MT0coTE9HSURFTlRJRklFUiwgInJldHVybmluZyBGQUxTRTogbm8gdXNlciBnZXN0dXJl
Iik7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC00MTQsMjIgKzQyMiwyMiBAQCBib29sIE1l
ZGlhRWxlbWVudFNlc3Npb246OndhbnRzVG9PYnNlcnZlVmlld3BvcnRWaXNpYmlsaXR5Rm9yQXV0
b3BsYXkoKSBjb25zdAogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCiB2b2lk
IE1lZGlhRWxlbWVudFNlc3Npb246OnNob3dQbGF5YmFja1RhcmdldFBpY2tlcigpCiB7Ci0gICAg
TE9HKE1lZGlhLCAiTWVkaWFFbGVtZW50U2Vzc2lvbjo6c2hvd1BsYXliYWNrVGFyZ2V0UGlja2Vy
Iik7CisgICAgSU5GT19MT0coTE9HSURFTlRJRklFUik7CiAKICAgICBhdXRvJiBkb2N1bWVudCA9
IG1fZWxlbWVudC5kb2N1bWVudCgpOwogICAgIGlmIChtX3Jlc3RyaWN0aW9ucyAmIFJlcXVpcmVV
c2VyR2VzdHVyZVRvU2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyICYmICFkb2N1bWVudC5wcm9jZXNz
aW5nVXNlckdlc3R1cmVGb3JNZWRpYSgpKSB7Ci0gICAgICAgIExPRyhNZWRpYSwgIk1lZGlhRWxl
bWVudFNlc3Npb246OnNob3dQbGF5YmFja1RhcmdldFBpY2tlciAtIHJldHVybmluZyBlYXJseSBi
ZWNhdXNlIG9mIHBlcm1pc3Npb25zIik7CisgICAgICAgIElORk9fTE9HKExPR0lERU5USUZJRVIs
ICJyZXR1cm5pbmcgZWFybHkgYmVjYXVzZSBvZiBwZXJtaXNzaW9ucyIpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCiAgICAgaWYgKCFkb2N1bWVudC5wYWdlKCkpIHsKLSAgICAgICAgTE9HKE1l
ZGlhLCAiTWVkaWFFbGVtZW50U2Vzc2lvbjo6c2hvd2luZ1BsYXliYWNrVGFyZ2V0UGlja2VyUGVy
bWl0dGVkIC0gcmV0dXJuaW5nIGVhcmx5IGJlY2F1c2UgcGFnZSBpcyBOVUxMIik7CisgICAgICAg
IElORk9fTE9HKExPR0lERU5USUZJRVIsICJyZXR1cm5pbmcgZWFybHkgYmVjYXVzZSBwYWdlIGlz
IE5VTEwiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogI2lmICFQTEFURk9STShJT1MpCiAg
ICAgaWYgKG1fZWxlbWVudC5yZWFkeVN0YXRlKCkgPCBIVE1MTWVkaWFFbGVtZW50RW51bXM6OkhB
VkVfTUVUQURBVEEpIHsKLSAgICAgICAgTE9HKE1lZGlhLCAiTWVkaWFFbGVtZW50U2Vzc2lvbjo6
c2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyIC0gcmV0dXJuaW5nIGVhcmx5IGJlY2F1c2UgZWxlbWVu
dCBpcyBub3QgcGxheWFibGUiKTsKKyAgICAgICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwgInJl
dHVybmluZyBlYXJseSBiZWNhdXNlIGVsZW1lbnQgaXMgbm90IHBsYXlhYmxlIik7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAjZW5kaWYKQEAgLTQ0NSw3ICs0NTMsNyBAQCBib29sIE1lZGlhRWxl
bWVudFNlc3Npb246Omhhc1dpcmVsZXNzUGxheWJhY2tUYXJnZXRzKCkgY29uc3QKICAgICBtX2hh
c1BsYXliYWNrVGFyZ2V0cyA9IFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFu
YWdlcigpLmhhc1dpcmVsZXNzVGFyZ2V0c0F2YWlsYWJsZSgpOwogI2VuZGlmCiAKLSAgICBMT0co
TWVkaWEsICJNZWRpYUVsZW1lbnRTZXNzaW9uOjpoYXNXaXJlbGVzc1BsYXliYWNrVGFyZ2V0cyAt
IHJldHVybmluZyAlcyIsIG1faGFzUGxheWJhY2tUYXJnZXRzID8gIlRSVUUiIDogIkZBTFNFIik7
CisgICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwgInJldHVybmluZyAiLCBtX2hhc1BsYXliYWNr
VGFyZ2V0cyk7CiAKICAgICByZXR1cm4gbV9oYXNQbGF5YmFja1RhcmdldHM7CiB9CkBAIC00NTMs
MjMgKzQ2MSwyMyBAQCBib29sIE1lZGlhRWxlbWVudFNlc3Npb246Omhhc1dpcmVsZXNzUGxheWJh
Y2tUYXJnZXRzKCkgY29uc3QKIGJvb2wgTWVkaWFFbGVtZW50U2Vzc2lvbjo6d2lyZWxlc3NWaWRl
b1BsYXliYWNrRGlzYWJsZWQoKSBjb25zdAogewogICAgIGlmICghbV9lbGVtZW50LmRvY3VtZW50
KCkuc2V0dGluZ3MoKS5hbGxvd3NBaXJQbGF5Rm9yTWVkaWFQbGF5YmFjaygpKSB7Ci0gICAgICAg
IExPRyhNZWRpYSwgIk1lZGlhRWxlbWVudFNlc3Npb246OndpcmVsZXNzVmlkZW9QbGF5YmFja0Rp
c2FibGVkIC0gcmV0dXJuaW5nIFRSVUUgYmVjYXVzZSBvZiBzZXR0aW5ncyIpOworICAgICAgICBJ
TkZPX0xPRyhMT0dJREVOVElGSUVSLCAicmV0dXJuaW5nIFRSVUUgYmVjYXVzZSBvZiBzZXR0aW5n
cyIpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKICAgICBpZiAobV9lbGVtZW50Lmhh
c0F0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjp3ZWJraXR3aXJlbGVz
c3ZpZGVvcGxheWJhY2tkaXNhYmxlZEF0dHIpKSB7Ci0gICAgICAgIExPRyhNZWRpYSwgIk1lZGlh
RWxlbWVudFNlc3Npb246OndpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkIC0gcmV0dXJuaW5n
IFRSVUUgYmVjYXVzZSBvZiBhdHRyaWJ1dGUiKTsKKyAgICAgICAgSU5GT19MT0coTE9HSURFTlRJ
RklFUiwgInJldHVybmluZyBUUlVFIGJlY2F1c2Ugb2YgYXR0cmlidXRlIik7CiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KIAogI2lmIFBMQVRGT1JNKElPUykKICAgICBhdXRvJiBsZWdhY3lB
aXJwbGF5QXR0cmlidXRlVmFsdWUgPSBtX2VsZW1lbnQuYXR0cmlidXRlV2l0aG91dFN5bmNocm9u
aXphdGlvbihIVE1MTmFtZXM6OndlYmtpdGFpcnBsYXlBdHRyKTsKICAgICBpZiAoZXF1YWxMZXR0
ZXJzSWdub3JpbmdBU0NJSUNhc2UobGVnYWN5QWlycGxheUF0dHJpYnV0ZVZhbHVlLCAiZGVueSIp
KSB7Ci0gICAgICAgIExPRyhNZWRpYSwgIk1lZGlhRWxlbWVudFNlc3Npb246OndpcmVsZXNzVmlk
ZW9QbGF5YmFja0Rpc2FibGVkIC0gcmV0dXJuaW5nIFRSVUUgYmVjYXVzZSBvZiBsZWdhY3kgYXR0
cmlidXRlIik7CisgICAgICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsICJyZXR1cm5pbmcgVFJV
RSBiZWNhdXNlIG9mIGxlZ2FjeSBhdHRyaWJ1dGUiKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgfQogICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShsZWdhY3lBaXJwbGF5
QXR0cmlidXRlVmFsdWUsICJhbGxvdyIpKSB7Ci0gICAgICAgIExPRyhNZWRpYSwgIk1lZGlhRWxl
bWVudFNlc3Npb246OndpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkIC0gcmV0dXJuaW5nIEZB
TFNFIGJlY2F1c2Ugb2YgbGVnYWN5IGF0dHJpYnV0ZSIpOworICAgICAgICBJTkZPX0xPRyhMT0dJ
REVOVElGSUVSLCAicmV0dXJuaW5nIEZBTFNFIGJlY2F1c2Ugb2YgbGVnYWN5IGF0dHJpYnV0ZSIp
OwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogI2VuZGlmCkBAIC00NzksNyArNDg3LDcg
QEAgYm9vbCBNZWRpYUVsZW1lbnRTZXNzaW9uOjp3aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxl
ZCgpIGNvbnN0CiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgYm9vbCBkaXNhYmxlZCA9IHBs
YXllci0+d2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoKTsKLSAgICBMT0coTWVkaWEsICJN
ZWRpYUVsZW1lbnRTZXNzaW9uOjp3aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCAtIHJldHVy
bmluZyAlcyBiZWNhdXNlIG1lZGlhIGVuZ2luZSBzYXlzIHNvIiwgZGlzYWJsZWQgPyAiVFJVRSIg
OiAiRkFMU0UiKTsKKyAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCAicmV0dXJuaW5nICIsIGRp
c2FibGVkLCAiIGJlY2F1c2UgbWVkaWEgZW5naW5lIHNheXMgc28iKTsKICAgICAKICAgICByZXR1
cm4gZGlzYWJsZWQ7CiB9CkBAIC00OTUsMTMgKzUwMywxMyBAQCB2b2lkIE1lZGlhRWxlbWVudFNl
c3Npb246OnNldFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKGJvb2wgZGlzYWJsZWQpCiAg
ICAgaWYgKCFwbGF5ZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIExPRyhNZWRpYSwgIk1lZGlh
RWxlbWVudFNlc3Npb246OnNldFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkIC0gZGlzYWJs
ZWQgJXMiLCBkaXNhYmxlZCA/ICJUUlVFIiA6ICJGQUxTRSIpOworICAgIElORk9fTE9HKExPR0lE
RU5USUZJRVIsIGRpc2FibGVkKTsKICAgICBwbGF5ZXItPnNldFdpcmVsZXNzVmlkZW9QbGF5YmFj
a0Rpc2FibGVkKGRpc2FibGVkKTsKIH0KIAogdm9pZCBNZWRpYUVsZW1lbnRTZXNzaW9uOjpzZXRI
YXNQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUxpc3RlbmVycyhib29sIGhhc0xpc3RlbmVycykK
IHsKLSAgICBMT0coTWVkaWEsICJNZWRpYUVsZW1lbnRTZXNzaW9uOjpzZXRIYXNQbGF5YmFja1Rh
cmdldEF2YWlsYWJpbGl0eUxpc3RlbmVycyAtIGhhc0xpc3RlbmVycyAlcyIsIGhhc0xpc3RlbmVy
cyA/ICJUUlVFIiA6ICJGQUxTRSIpOworICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsIGhhc0xp
c3RlbmVycyk7CiAKICNpZiBQTEFURk9STShJT1MpCiAgICAgbV9oYXNQbGF5YmFja1RhcmdldEF2
YWlsYWJpbGl0eUxpc3RlbmVycyA9IGhhc0xpc3RlbmVyczsKQEAgLTUyOCw3ICs1MzYsNyBAQCB2
b2lkIE1lZGlhRWxlbWVudFNlc3Npb246OmV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlk
Q2hhbmdlKGJvb2wgaGFzVGFyZ2V0cwogICAgIGlmIChtX2hhc1BsYXliYWNrVGFyZ2V0cyA9PSBo
YXNUYXJnZXRzKQogICAgICAgICByZXR1cm47CiAKLSAgICBMT0coTWVkaWEsICJNZWRpYUVsZW1l
bnRTZXNzaW9uOjpleHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5nZSglcCkgLSBo
YXNUYXJnZXRzICVzIiwgdGhpcywgaGFzVGFyZ2V0cyA/ICJUUlVFIiA6ICJGQUxTRSIpOworICAg
IElORk9fTE9HKExPR0lERU5USUZJRVIsIGhhc1RhcmdldHMpOwogCiAgICAgbV9oYXNQbGF5YmFj
a1RhcmdldHMgPSBoYXNUYXJnZXRzOwogICAgIG1fdGFyZ2V0QXZhaWxhYmlsaXR5Q2hhbmdlZFRp
bWVyLnN0YXJ0T25lU2hvdCgwX3MpOwpAQCAtNTU2LDcgKzU2NCw3IEBAIGJvb2wgTWVkaWFFbGVt
ZW50U2Vzc2lvbjo6aXNQbGF5aW5nVG9XaXJlbGVzc1BsYXliYWNrVGFyZ2V0KCkgY29uc3QKIAog
dm9pZCBNZWRpYUVsZW1lbnRTZXNzaW9uOjpzZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldChi
b29sIHNob3VsZFBsYXkpCiB7Ci0gICAgTE9HKE1lZGlhLCAiTWVkaWFFbGVtZW50U2Vzc2lvbjo6
c2V0U2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQgLSBzaG91bGRQbGF5ICVzIiwgc2hvdWxkUGxh
eSA/ICJUUlVFIiA6ICJGQUxTRSIpOworICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsIHNob3Vs
ZFBsYXkpOwogICAgIG1fc2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQgPSBzaG91bGRQbGF5Owog
ICAgIGNsaWVudCgpLnNldFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KHNob3VsZFBsYXkpOwog
fQpAQCAtNjM1LDcgKzY0Myw3IEBAIGJvb2wgTWVkaWFFbGVtZW50U2Vzc2lvbjo6YWxsb3dzQXV0
b21hdGljTWVkaWFEYXRhTG9hZGluZygpIGNvbnN0CiAKIHZvaWQgTWVkaWFFbGVtZW50U2Vzc2lv
bjo6bWVkaWFFbmdpbmVVcGRhdGVkKCkKIHsKLSAgICBMT0coTWVkaWEsICJNZWRpYUVsZW1lbnRT
ZXNzaW9uOjptZWRpYUVuZ2luZVVwZGF0ZWQiKTsKKyAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVS
KTsKIAogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCiAgICAgaWYgKG1fcmVz
dHJpY3Rpb25zICYgV2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQpCkBAIC04NDMsMjggKzg1
MSw2IEBAIGJvb2wgTWVkaWFFbGVtZW50U2Vzc2lvbjo6YWxsb3dzUGxheWJhY2tDb250cm9sc0Zv
ckF1dG9wbGF5aW5nQXVkaW8oKSBjb25zdAogICAgIHJldHVybiBwYWdlICYmIHBhZ2UtPmFsbG93
c1BsYXliYWNrQ29udHJvbHNGb3JBdXRvcGxheWluZ0F1ZGlvKCk7CiB9CiAKLWJvb2wgTWVkaWFF
bGVtZW50U2Vzc2lvbjo6d2lsbExvZyhXVEZMb2dMZXZlbCBsZXZlbCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gbV9lbGVtZW50LndpbGxMb2cobGV2ZWwpOwotfQotCi0jaWYgIVJFTEVBU0VfTE9HX0RJ
U0FCTEVECi1jb25zdCBMb2dnZXImIE1lZGlhRWxlbWVudFNlc3Npb246OmxvZ2dlcigpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIG1fZWxlbWVudC5sb2dnZXIoKTsKLX0KLQotY29uc3Qgdm9pZCogTWVk
aWFFbGVtZW50U2Vzc2lvbjo6bG9nSWRlbnRpZmllcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1f
ZWxlbWVudC5sb2dJZGVudGlmaWVyKCk7Ci19Ci0KLVdURkxvZ0NoYW5uZWwmIE1lZGlhRWxlbWVu
dFNlc3Npb246OmxvZ0NoYW5uZWwoKSBjb25zdAotewotICAgIHJldHVybiBtX2VsZW1lbnQubG9n
Q2hhbm5lbCgpOwotfQotI2VuZGlmCi0KIH0KIAogI2VuZGlmIC8vIEVOQUJMRShWSURFTykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmgKaW5kZXggMzFhZjc2MDRiOTY0
YWM5YjM5N2ExZDdmZDU5ZGU0ODU3MjJiNzk4Zi4uODI4OWZmYTNmYjUyZjU3Mjg4MWQxYTg0NmQy
ZjVhNjA3MDg5ODc3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1l
bnRTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9u
LmgKQEAgLTMyLDcgKzMyLDYgQEAKICNpbmNsdWRlICJQbGF0Zm9ybU1lZGlhU2Vzc2lvbi5oIgog
I2luY2x1ZGUgIlN1Y2Nlc3NPci5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCi0jaW5jbHVkZSA8d3Rm
L0xvZ2dlckhlbHBlci5oPgogI2luY2x1ZGUgPHd0Zi9UeXBlQ2FzdHMuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpAQCAtNTMsOSArNTIsNiBAQCBjbGFzcyBIVE1MTWVkaWFFbGVtZW50OwogY2xh
c3MgU291cmNlQnVmZmVyOwogCiBjbGFzcyBNZWRpYUVsZW1lbnRTZXNzaW9uIGZpbmFsIDogcHVi
bGljIFBsYXRmb3JtTWVkaWFTZXNzaW9uCi0jaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECi0gICAg
LCBwcml2YXRlIExvZ2dlckhlbHBlcgotI2VuZGlmCiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CkBAIC0xNDksMTIgKzE0NSw5IEBAIHB1YmxpYzoKICAgICB9CiAKICNp
ZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKLSAgICBjb25zdCBMb2dnZXImIGxvZ2dlcigpIGNvbnN0
IGZpbmFsOwotICAgIGNvbnN0IHZvaWQqIGxvZ0lkZW50aWZpZXIoKSBjb25zdCBmaW5hbDsKKyAg
ICBjb25zdCB2b2lkKiBsb2dJZGVudGlmaWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9sb2dJ
ZGVudGlmaWVyOyB9CiAgICAgY29uc3QgY2hhciogbG9nQ2xhc3NOYW1lKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gIk1lZGlhRWxlbWVudFNlc3Npb24iOyB9Ci0gICAgV1RGTG9nQ2hhbm5lbCYgbG9n
Q2hhbm5lbCgpIGNvbnN0IGZpbmFsOwogI2VuZGlmCi0gICAgYm9vbCB3aWxsTG9nKFdURkxvZ0xl
dmVsKSBjb25zdDsKIAogcHJpdmF0ZToKIApAQCAtMTg5LDYgKzE4MiwxMCBAQCBwcml2YXRlOgog
CiAgICAgbXV0YWJsZSBib29sIG1faXNNYWluQ29udGVudCB7IGZhbHNlIH07CiAgICAgVGltZXIg
bV9tYWluQ29udGVudENoZWNrVGltZXI7CisKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAg
ICBjb25zdCB2b2lkKiBtX2xvZ0lkZW50aWZpZXI7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1Bs
YXRmb3JtTWVkaWFTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1Bs
YXRmb3JtTWVkaWFTZXNzaW9uLmNwcAppbmRleCAyN2FiMjI1ZjM4ZGE0NTBmYzg4ODRlNGM5M2M3
Yzg1MTg3MDNhZTRkLi5mMmUxOTgyN2I0NjU1YTkyMTdmNjI5ZTEzMTk4MTUyNzQ2Nzk4N2Q0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vz
c2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRp
YVNlc3Npb24uY3BwCkBAIC0zMSw0MyArMzEsNTkgQEAKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAj
aW5jbHVkZSAiTWVkaWFQbGF5ZXIuaCIKICNpbmNsdWRlICJQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1h
bmFnZXIuaCIKKyNpbmNsdWRlIDx3dGYvQ3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgY29uc3QgU2Vjb25kcyBjbGllbnREYXRh
QnVmZmVyaW5nVGltZXJUaHJvdHRsZURlbGF5IHsgMTAwX21zIH07CiAKLSNpZiAhTE9HX0RJU0FC
TEVECi1zdGF0aWMgY29uc3QgY2hhciogc3RhdGVOYW1lKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpT
dGF0ZSBzdGF0ZSkKLXsKLSNkZWZpbmUgU1RBVEVfQ0FTRShzdGF0ZSkgY2FzZSBQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbjo6c3RhdGU6IHJldHVybiAjc3RhdGUKLSAgICBzd2l0Y2ggKHN0YXRlKSB7Ci0g
ICAgU1RBVEVfQ0FTRShJZGxlKTsKLSAgICBTVEFURV9DQVNFKEF1dG9wbGF5aW5nKTsKLSAgICBT
VEFURV9DQVNFKFBsYXlpbmcpOwotICAgIFNUQVRFX0NBU0UoUGF1c2VkKTsKLSAgICBTVEFURV9D
QVNFKEludGVycnVwdGVkKTsKLSAgICB9Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAg
ICByZXR1cm4gIiI7CisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECitzdGF0aWMgdWludDY0X3Qg
bmV4dExvZ0lkZW50aWZpZXIoKQoreworICAgIHN0YXRpYyB1aW50NjRfdCBsb2dJZGVudGlmaWVy
ID0gY3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIoKTsKKyAgICByZXR1cm4gKytsb2dJZGVu
dGlmaWVyOworfQorCitTdHJpbmcgY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcoUGxhdGZvcm1N
ZWRpYVNlc3Npb246OlN0YXRlIHN0YXRlKQoreworICAgIHN0YXRpYyBjb25zdCBOZXZlckRlc3Ry
b3llZDxTdHJpbmc+IHZhbHVlc1tdID0geworICAgICAgICBNQUtFX1NUQVRJQ19TVFJJTkdfSU1Q
TCgiSWRsZSIpLAorICAgICAgICBNQUtFX1NUQVRJQ19TVFJJTkdfSU1QTCgiQXV0b3BsYXlpbmci
KSwKKyAgICAgICAgTUFLRV9TVEFUSUNfU1RSSU5HX0lNUEwoIlBsYXlpbmciKSwKKyAgICAgICAg
TUFLRV9TVEFUSUNfU1RSSU5HX0lNUEwoIlBhdXNlZCIpLAorICAgICAgICBNQUtFX1NUQVRJQ19T
VFJJTkdfSU1QTCgiSW50ZXJydXB0ZWQiKSwKKyAgICB9OworICAgIHN0YXRpY19hc3NlcnQoIXN0
YXRpY19jYXN0PHNpemVfdD4oUGxhdGZvcm1NZWRpYVNlc3Npb246OklkbGUpLCAiUGxhdGZvcm1N
ZWRpYVNlc3Npb246OklkbGUgaXMgbm90IDAgYXMgZXhwZWN0ZWQiKTsKKyAgICBzdGF0aWNfYXNz
ZXJ0KHN0YXRpY19jYXN0PHNpemVfdD4oUGxhdGZvcm1NZWRpYVNlc3Npb246OkF1dG9wbGF5aW5n
ID09IDEpLCAiUGxhdGZvcm1NZWRpYVNlc3Npb246OkF1dG9wbGF5aW5nIGlzIG5vdCAxIGFzIGV4
cGVjdGVkIik7CisgICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KFBsYXRmb3Jt
TWVkaWFTZXNzaW9uOjpQbGF5aW5nID09IDIpLCAiUGxhdGZvcm1NZWRpYVNlc3Npb246OlBsYXlp
bmcgaXMgbm90IDIgYXMgZXhwZWN0ZWQiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0
PHNpemVfdD4oUGxhdGZvcm1NZWRpYVNlc3Npb246OlBhdXNlZCA9PSAzKSwgIlBsYXRmb3JtTWVk
aWFTZXNzaW9uOjpQYXVzZWQgaXMgbm90IDMgYXMgZXhwZWN0ZWQiKTsKKyAgICBzdGF0aWNfYXNz
ZXJ0KHN0YXRpY19jYXN0PHNpemVfdD4oUGxhdGZvcm1NZWRpYVNlc3Npb246OkludGVycnVwdGVk
ID09IDQpLCAiUGxhdGZvcm1NZWRpYVNlc3Npb246OkludGVycnVwdGVkIGlzIG5vdCA0IGFzIGV4
cGVjdGVkIik7CisgICAgQVNTRVJUKHN0YXRpY19jYXN0PHNpemVfdD4oc3RhdGUpIDwgV1RGX0FS
UkFZX0xFTkdUSCh2YWx1ZXMpKTsKKyAgICByZXR1cm4gdmFsdWVzW3N0YXRpY19jYXN0PHNpemVf
dD4oc3RhdGUpXTsKK30KKworU3RyaW5nIGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKFBsYXRm
b3JtTWVkaWFTZXNzaW9uOjpJbnRlcnJ1cHRpb25UeXBlIHR5cGUpCit7CisgICAgc3RhdGljIGNv
bnN0IE5ldmVyRGVzdHJveWVkPFN0cmluZz4gdmFsdWVzW10gPSB7CisgICAgICAgIE1BS0VfU1RB
VElDX1NUUklOR19JTVBMKCJOb0ludGVycnVwdGlvbiIpLAorICAgICAgICBNQUtFX1NUQVRJQ19T
VFJJTkdfSU1QTCgiU3lzdGVtU2xlZXAiKSwKKyAgICAgICAgTUFLRV9TVEFUSUNfU1RSSU5HX0lN
UEwoIkVudGVyaW5nQmFja2dyb3VuZCIpLAorICAgICAgICBNQUtFX1NUQVRJQ19TVFJJTkdfSU1Q
TCgiU3lzdGVtSW50ZXJydXB0aW9uIiksCisgICAgICAgIE1BS0VfU1RBVElDX1NUUklOR19JTVBM
KCJTdXNwZW5kZWRVbmRlckxvY2siKSwKKyAgICAgICAgTUFLRV9TVEFUSUNfU1RSSU5HX0lNUEwo
IkludmlzaWJsZUF1dG9wbGF5IiksCisgICAgICAgIE1BS0VfU1RBVElDX1NUUklOR19JTVBMKCJQ
cm9jZXNzSW5hY3RpdmUiKSwKKyAgICB9OworICAgIHN0YXRpY19hc3NlcnQoIXN0YXRpY19jYXN0
PHNpemVfdD4oUGxhdGZvcm1NZWRpYVNlc3Npb246Ok5vSW50ZXJydXB0aW9uKSwgIlBsYXRmb3Jt
TWVkaWFTZXNzaW9uOjpOb0ludGVycnVwdGlvbiBpcyBub3QgMCBhcyBleHBlY3RlZCIpOworICAg
IHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6
U3lzdGVtU2xlZXAgPT0gMSksICJQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6U3lzdGVtU2xlZXAgaXMg
bm90IDEgYXMgZXhwZWN0ZWQiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHNpemVf
dD4oUGxhdGZvcm1NZWRpYVNlc3Npb246OkVudGVyaW5nQmFja2dyb3VuZCA9PSAyKSwgIlBsYXRm
b3JtTWVkaWFTZXNzaW9uOjpFbnRlcmluZ0JhY2tncm91bmQgaXMgbm90IDIgYXMgZXhwZWN0ZWQi
KTsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHNpemVfdD4oUGxhdGZvcm1NZWRpYVNl
c3Npb246OlN5c3RlbUludGVycnVwdGlvbiA9PSAzKSwgIlBsYXRmb3JtTWVkaWFTZXNzaW9uOjpT
eXN0ZW1JbnRlcnJ1cHRpb24gaXMgbm90IDMgYXMgZXhwZWN0ZWQiKTsKKyAgICBzdGF0aWNfYXNz
ZXJ0KHN0YXRpY19jYXN0PHNpemVfdD4oUGxhdGZvcm1NZWRpYVNlc3Npb246OlN1c3BlbmRlZFVu
ZGVyTG9jayA9PSA0KSwgIlBsYXRmb3JtTWVkaWFTZXNzaW9uOjpTdXNwZW5kZWRVbmRlckxvY2sg
aXMgbm90IDQgYXMgZXhwZWN0ZWQiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHNp
emVfdD4oUGxhdGZvcm1NZWRpYVNlc3Npb246OkludmlzaWJsZUF1dG9wbGF5ID09IDUpLCAiUGxh
dGZvcm1NZWRpYVNlc3Npb246OkludmlzaWJsZUF1dG9wbGF5IGlzIG5vdCA1IGFzIGV4cGVjdGVk
Iik7CisgICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KFBsYXRmb3JtTWVkaWFT
ZXNzaW9uOjpQcm9jZXNzSW5hY3RpdmUgPT0gNiksICJQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UHJv
Y2Vzc0luYWN0aXZlIGlzIG5vdCA2IGFzIGV4cGVjdGVkIik7CisgICAgQVNTRVJUKHN0YXRpY19j
YXN0PHNpemVfdD4odHlwZSkgPCBXVEZfQVJSQVlfTEVOR1RIKHZhbHVlcykpOworICAgIHJldHVy
biB2YWx1ZXNbc3RhdGljX2Nhc3Q8c2l6ZV90Pih0eXBlKV07CiB9CiAKLXN0YXRpYyBjb25zdCBj
aGFyKiBpbnRlcnJ1cHRpb25OYW1lKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpJbnRlcnJ1cHRpb25U
eXBlIHR5cGUpCi17Ci0jZGVmaW5lIElOVEVSUlVQVElPTl9DQVNFKHR5cGUpIGNhc2UgUGxhdGZv
cm1NZWRpYVNlc3Npb246OnR5cGU6IHJldHVybiAjdHlwZQotICAgIHN3aXRjaCAodHlwZSkgewot
ICAgIElOVEVSUlVQVElPTl9DQVNFKE5vSW50ZXJydXB0aW9uKTsKLSAgICBJTlRFUlJVUFRJT05f
Q0FTRShTeXN0ZW1TbGVlcCk7Ci0gICAgSU5URVJSVVBUSU9OX0NBU0UoRW50ZXJpbmdCYWNrZ3Jv
dW5kKTsKLSAgICBJTlRFUlJVUFRJT05fQ0FTRShTeXN0ZW1JbnRlcnJ1cHRpb24pOwotICAgIElO
VEVSUlVQVElPTl9DQVNFKFN1c3BlbmRlZFVuZGVyTG9jayk7Ci0gICAgSU5URVJSVVBUSU9OX0NB
U0UoSW52aXNpYmxlQXV0b3BsYXkpOwotICAgIElOVEVSUlVQVElPTl9DQVNFKFByb2Nlc3NJbmFj
dGl2ZSk7Ci0gICAgfQotICAgIAotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVy
biAiIjsKLX0KICNlbmRpZgogCiBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1NZWRpYVNlc3Npb24+
IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpjcmVhdGUoUGxhdGZvcm1NZWRpYVNlc3Npb25DbGllbnQm
IGNsaWVudCkKQEAgLTgxLDYgKzk3LDEwIEBAIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpQbGF0Zm9y
bU1lZGlhU2Vzc2lvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbkNsaWVudCYgY2xpZW50KQogICAgICwg
bV9zdGF0ZShJZGxlKQogICAgICwgbV9zdGF0ZVRvUmVzdG9yZShJZGxlKQogICAgICwgbV9ub3Rp
ZnlpbmdDbGllbnQoZmFsc2UpCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgLCBtX2xv
Z2dlcihjbGllbnQuaG9zdGluZ0RvY3VtZW50KCktPmxvZ2dlcigpKQorICAgICwgbV9sb2dJZGVu
dGlmaWVyKG5leHRMb2dJZGVudGlmaWVyKCkpCisjZW5kaWYKIHsKICAgICBBU1NFUlQobV9jbGll
bnQubWVkaWFUeXBlKCkgPj0gTm9uZSAmJiBtX2NsaWVudC5tZWRpYVR5cGUoKSA8PSBNZWRpYVN0
cmVhbUNhcHR1cmluZ0F1ZGlvKTsKICAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNo
YXJlZE1hbmFnZXIoKS5hZGRTZXNzaW9uKCp0aGlzKTsKQEAgLTkzLDEzICsxMTMsMTMgQEAgUGxh
dGZvcm1NZWRpYVNlc3Npb246On5QbGF0Zm9ybU1lZGlhU2Vzc2lvbigpCiAKIHZvaWQgUGxhdGZv
cm1NZWRpYVNlc3Npb246OnNldFN0YXRlKFN0YXRlIHN0YXRlKQogewotICAgIExPRyhNZWRpYSwg
IlBsYXRmb3JtTWVkaWFTZXNzaW9uOjpzZXRTdGF0ZSglcCkgLSAlcyIsIHRoaXMsIHN0YXRlTmFt
ZShzdGF0ZSkpOworICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsIHN0YXRlKTsKICAgICBtX3N0
YXRlID0gc3RhdGU7CiB9CiAKIHZvaWQgUGxhdGZvcm1NZWRpYVNlc3Npb246OmJlZ2luSW50ZXJy
dXB0aW9uKEludGVycnVwdGlvblR5cGUgdHlwZSkKIHsKLSAgICBMT0coTWVkaWEsICJQbGF0Zm9y
bU1lZGlhU2Vzc2lvbjo6YmVnaW5JbnRlcnJ1cHRpb24oJXApLCBzdGF0ZSA9ICVzLCBpbnRlcnJ1
cHRpb24gdHlwZSA9ICVzLCBpbnRlcnJ1cHRpb24gY291bnQgPSAlaSIsIHRoaXMsIHN0YXRlTmFt
ZShtX3N0YXRlKSwgaW50ZXJydXB0aW9uTmFtZSh0eXBlKSwgbV9pbnRlcnJ1cHRpb25Db3VudCk7
CisgICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwgInN0YXRlID0gIiwgbV9zdGF0ZSwgIiwgaW50
ZXJydXB0aW9uIHR5cGUgPSAiLCB0eXBlLCAiLCBpbnRlcnJ1cHRpb24gY291bnQgPSAiLCBtX2lu
dGVycnVwdGlvbkNvdW50KTsKIAogICAgIC8vIFdoZW4gaW50ZXJydXB0aW9ucyBhcmUgb3ZlcnJp
ZGRlbiwgbV9pbnRlcnJ1cHRpb25UeXBlIGRvZXNuJ3QgZ2V0IHNldC4KICAgICAvLyBHaXZlIG5l
c3RlZCBpbnRlcnJ1cHRpb25zIGEgY2hhbmNlIHdoZW4gdGhlIHByZXZpb3VzIGludGVycnVwdGlv
bnMgd2VyZSBvdmVycmlkZGVuLgpAQCAtMTA3LDcgKzEyNyw3IEBAIHZvaWQgUGxhdGZvcm1NZWRp
YVNlc3Npb246OmJlZ2luSW50ZXJydXB0aW9uKEludGVycnVwdGlvblR5cGUgdHlwZSkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgaWYgKGNsaWVudCgpLnNob3VsZE92ZXJyaWRlQmFja2dyb3VuZFBs
YXliYWNrUmVzdHJpY3Rpb24odHlwZSkpIHsKLSAgICAgICAgTE9HKE1lZGlhLCAiUGxhdGZvcm1N
ZWRpYVNlc3Npb246OmJlZ2luSW50ZXJydXB0aW9uKCVwKSwgcmV0dXJuaW5nIGVhcmx5IGJlY2F1
c2UgY2xpZW50IHNheXMgdG8gb3ZlcnJpZGUgaW50ZXJydXB0aW9uIiwgdGhpcyk7CisgICAgICAg
IElORk9fTE9HKExPR0lERU5USUZJRVIsICJyZXR1cm5pbmcgZWFybHkgYmVjYXVzZSBjbGllbnQg
c2F5cyB0byBvdmVycmlkZSBpbnRlcnJ1cHRpb24iKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IApAQCAtMTIxLDEwICsxNDEsMTAgQEAgdm9pZCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6YmVnaW5J
bnRlcnJ1cHRpb24oSW50ZXJydXB0aW9uVHlwZSB0eXBlKQogCiB2b2lkIFBsYXRmb3JtTWVkaWFT
ZXNzaW9uOjplbmRJbnRlcnJ1cHRpb24oRW5kSW50ZXJydXB0aW9uRmxhZ3MgZmxhZ3MpCiB7Ci0g
ICAgTE9HKE1lZGlhLCAiUGxhdGZvcm1NZWRpYVNlc3Npb246OmVuZEludGVycnVwdGlvbiglcCkg
LSBmbGFncyA9ICVpLCBzdGF0ZVRvUmVzdG9yZSA9ICVzLCBpbnRlcnJ1cHRpb24gY291bnQgPSAl
aSIsIHRoaXMsIChpbnQpZmxhZ3MsIHN0YXRlTmFtZShtX3N0YXRlVG9SZXN0b3JlKSwgbV9pbnRl
cnJ1cHRpb25Db3VudCk7CisgICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwgImZsYWdzID0gIiwg
KGludClmbGFncywgIiwgc3RhdGVUb1Jlc3RvcmUgPSAiLCBtX3N0YXRlVG9SZXN0b3JlLCAiLCBp
bnRlcnJ1cHRpb24gY291bnQgPSAiLCBtX2ludGVycnVwdGlvbkNvdW50KTsKIAogICAgIGlmICgh
bV9pbnRlcnJ1cHRpb25Db3VudCkgewotICAgICAgICBMT0coTWVkaWEsICJQbGF0Zm9ybU1lZGlh
U2Vzc2lvbjo6ZW5kSW50ZXJydXB0aW9uKCVwKSAtICEhIGlnbm9yaW5nIHNwdXJpb3VzIGludGVy
cnVwdGlvbiBlbmQgISEiLCB0aGlzKTsKKyAgICAgICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwg
IiEhIGlnbm9yaW5nIHNwdXJpb3VzIGludGVycnVwdGlvbiBlbmQgISEiKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIApAQCAtMTQ4LDEwICsxNjgsMTAgQEAgdm9pZCBQbGF0Zm9ybU1lZGlhU2Vz
c2lvbjo6Y2xpZW50V2lsbEJlZ2luQXV0b3BsYXlpbmcoKQogICAgIGlmIChtX25vdGlmeWluZ0Ns
aWVudCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgTE9HKE1lZGlhLCAiUGxhdGZvcm1NZWRpYVNl
c3Npb246OmNsaWVudFdpbGxCZWdpbkF1dG9wbGF5aW5nKCVwKS0gc3RhdGUgPSAlcyIsIHRoaXMs
IHN0YXRlTmFtZShtX3N0YXRlKSk7CisgICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwgInN0YXRl
ID0gIiwgbV9zdGF0ZSk7CiAgICAgaWYgKHN0YXRlKCkgPT0gSW50ZXJydXB0ZWQpIHsKICAgICAg
ICAgbV9zdGF0ZVRvUmVzdG9yZSA9IEF1dG9wbGF5aW5nOwotICAgICAgICBMT0coTWVkaWEsICIg
ICAgICBzZXR0aW5nIHN0YXRlVG9SZXN0b3JlIHRvIFwiQXV0b3BsYXlpbmdcIiIpOworICAgICAg
ICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCAiICAgICAgc2V0dGluZyBzdGF0ZVRvUmVzdG9yZSB0
byBcIkF1dG9wbGF5aW5nXCIiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTgwLDEw
ICsyMDAsMTAgQEAgYm9vbCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Y2xpZW50V2lsbFBhdXNlUGxh
eWJhY2soKQogICAgIGlmIChtX25vdGlmeWluZ0NsaWVudCkKICAgICAgICAgcmV0dXJuIHRydWU7
CiAKLSAgICBMT0coTWVkaWEsICJQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Y2xpZW50V2lsbFBhdXNl
UGxheWJhY2soJXApLSBzdGF0ZSA9ICVzIiwgdGhpcywgc3RhdGVOYW1lKG1fc3RhdGUpKTsKKyAg
ICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCAic3RhdGUgPSAiLCBtX3N0YXRlKTsKICAgICBpZiAo
c3RhdGUoKSA9PSBJbnRlcnJ1cHRlZCkgewogICAgICAgICBtX3N0YXRlVG9SZXN0b3JlID0gUGF1
c2VkOwotICAgICAgICBMT0coTWVkaWEsICIgICAgICBzZXR0aW5nIHN0YXRlVG9SZXN0b3JlIHRv
IFwiUGF1c2VkXCIiKTsKKyAgICAgICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwgIiAgICAgIHNl
dHRpbmcgc3RhdGVUb1Jlc3RvcmUgdG8gXCJQYXVzZWRcIiIpOwogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogICAgIApAQCAtMTk1LDEzICsyMTUsMTMgQEAgYm9vbCBQbGF0Zm9ybU1lZGlh
U2Vzc2lvbjo6Y2xpZW50V2lsbFBhdXNlUGxheWJhY2soKQogCiB2b2lkIFBsYXRmb3JtTWVkaWFT
ZXNzaW9uOjpwYXVzZVNlc3Npb24oKQogewotICAgIExPRyhNZWRpYSwgIlBsYXRmb3JtTWVkaWFT
ZXNzaW9uOjpwYXVzZVNlc3Npb24oJXApIiwgdGhpcyk7CisgICAgSU5GT19MT0coTE9HSURFTlRJ
RklFUik7CiAgICAgbV9jbGllbnQuc3VzcGVuZFBsYXliYWNrKCk7CiB9CiAKIHZvaWQgUGxhdGZv
cm1NZWRpYVNlc3Npb246OnN0b3BTZXNzaW9uKCkKIHsKLSAgICBMT0coTWVkaWEsICJQbGF0Zm9y
bU1lZGlhU2Vzc2lvbjo6c3RvcFNlc3Npb24oJXApIiwgdGhpcyk7CisgICAgSU5GT19MT0coTE9H
SURFTlRJRklFUik7CiAgICAgbV9jbGllbnQuc3VzcGVuZFBsYXliYWNrKCk7CiAgICAgUGxhdGZv
cm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkucmVtb3ZlU2Vzc2lvbigqdGhp
cyk7CiB9CkBAIC0yNjYsNyArMjg2LDcgQEAgdm9pZCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6c2No
ZWR1bGVDbGllbnREYXRhQnVmZmVyaW5nQ2hlY2soKQogCiB2b2lkIFBsYXRmb3JtTWVkaWFTZXNz
aW9uOjpjbGllbnREYXRhQnVmZmVyaW5nVGltZXJGaXJlZCgpCiB7Ci0gICAgTE9HKE1lZGlhLCAi
UGxhdGZvcm1NZWRpYVNlc3Npb246OmNsaWVudERhdGFCdWZmZXJpbmdUaW1lckZpcmVkKCVwKS0g
dmlzaWJsZSA9ICVzIiwgdGhpcywgbV9jbGllbnQuZWxlbWVudElzSGlkZGVuKCkgPyAiZmFsc2Ui
IDogInRydWUiKTsKKyAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCAidmlzaWJsZSA9ICIsIG1f
Y2xpZW50LmVsZW1lbnRJc0hpZGRlbigpKTsKIAogICAgIHVwZGF0ZUNsaWVudERhdGFCdWZmZXJp
bmcoKTsKIApAQCAtMzcwLDUgKzM5MCwxMyBAQCB2b2lkIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpj
bGllbnRDaGFyYWN0ZXJpc3RpY3NDaGFuZ2VkKCkKICAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1h
bmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5jbGllbnRDaGFyYWN0ZXJpc3RpY3NDaGFuZ2VkKCp0aGlz
KTsKIH0KIAorI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorV1RGTG9nQ2hhbm5lbCYgUGxhdGZv
cm1NZWRpYVNlc3Npb246OmxvZ0NoYW5uZWwoKSBjb25zdAoreworICAgIHJldHVybiBMb2dNZWRp
YTsKK30KKyNlbmRpZgorCiB9CisKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uLmgKaW5kZXggZWM1OGFiNjBiNDBhZmNi
YTI2YmE5YTViNmM3ODcwMzE0OTFlMmFkNy4uODM4ZTM0NzM3YmRjZTdkNGUzODliODIwOTI1MzFi
Yzg0NjA0ZWIwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxh
dGZvcm1NZWRpYVNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Q
bGF0Zm9ybU1lZGlhU2Vzc2lvbi5oCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIFBsYXRmb3Jt
TWVkaWFTZXNzaW9uX2gKIAogI2luY2x1ZGUgIlRpbWVyLmgiCisjaW5jbHVkZSA8d3RmL0xvZ2dl
ckhlbHBlci5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgogCkBAIC00NCw2ICs0NSw5IEBAIGNsYXNzIFBsYXRmb3JtTWVkaWFT
ZXNzaW9uCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKICAgICA6IHB1Ymxp
YyBNZWRpYVBsYXliYWNrVGFyZ2V0Q2xpZW50CiAjZW5kaWYKKyNpZiAhUkVMRUFTRV9MT0dfRElT
QUJMRUQKKyAgICAsIHByaXZhdGUgTG9nZ2VySGVscGVyCisjZW5kaWYKIHsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtTWVkaWFTZXNzaW9uPiBjcmVhdGUoUGxh
dGZvcm1NZWRpYVNlc3Npb25DbGllbnQmKTsKQEAgLTE3Niw2ICsxODAsMTMgQEAgcHVibGljOgog
cHJvdGVjdGVkOgogICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uQ2xpZW50JiBjbGllbnQoKSBjb25z
dCB7IHJldHVybiBtX2NsaWVudDsgfQogCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAg
Y29uc3QgTG9nZ2VyJiBsb2dnZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2xvZ2dlci5nZXQo
KTsgfQorICAgIGNvbnN0IHZvaWQqIGxvZ0lkZW50aWZpZXIoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IHZvaWQqPihtX2xvZ0lkZW50aWZpZXIpOyB9Cisg
ICAgY29uc3QgY2hhciogbG9nQ2xhc3NOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlBs
YXRmb3JtTWVkaWFTZXNzaW9uIjsgfQorICAgIFdURkxvZ0NoYW5uZWwmIGxvZ0NoYW5uZWwoKSBj
b25zdCBmaW5hbDsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIHZvaWQgY2xpZW50RGF0YUJ1ZmZl
cmluZ1RpbWVyRmlyZWQoKTsKICAgICB2b2lkIHVwZGF0ZUNsaWVudERhdGFCdWZmZXJpbmcoKTsK
QEAgLTE4OSw2ICsyMDAsMTEgQEAgcHJpdmF0ZToKICAgICBib29sIG1fbm90aWZ5aW5nQ2xpZW50
OwogICAgIGJvb2wgbV9pc1BsYXlpbmdUb1dpcmVsZXNzUGxheWJhY2tUYXJnZXQgeyBmYWxzZSB9
OwogCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgUmVmPGNvbnN0IExvZ2dlcj4gbV9s
b2dnZXI7CisgICAgdWludDY0X3QgbV9sb2dJZGVudGlmaWVyOworI2VuZGlmCisKICAgICBmcmll
bmQgY2xhc3MgUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOwogfTsKIApAQCAtMjMwLDcgKzI0
Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNQbGF5aW5nVG9XaXJlbGVzc1BsYXli
YWNrVGFyZ2V0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0
U2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQoYm9vbCkgeyB9CiAKLSAgICB2aXJ0dWFsIGNvbnN0
IERvY3VtZW50KiBob3N0aW5nRG9jdW1lbnQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBEb2N1
bWVudCogaG9zdGluZ0RvY3VtZW50KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgU3RyaW5nIHNv
dXJjZUFwcGxpY2F0aW9uSWRlbnRpZmllcigpIGNvbnN0ID0gMDsKIAogICAgIHZpcnR1YWwgYm9v
bCBwcm9jZXNzaW5nVXNlckdlc3R1cmVGb3JNZWRpYSgpIGNvbnN0ID0gMDsKQEAgLTIzOSw2ICsy
NTUsMzIgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgflBsYXRmb3JtTWVkaWFTZXNzaW9uQ2xp
ZW50KCkgPSBkZWZhdWx0OwogfTsKIAorU3RyaW5nIGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5n
KFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpTdGF0ZSk7CitTdHJpbmcgY29udmVydEVudW1lcmF0aW9u
VG9TdHJpbmcoUGxhdGZvcm1NZWRpYVNlc3Npb246OkludGVycnVwdGlvblR5cGUpOworCiB9CiAK
K25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlPgorc3RydWN0IExvZ0Fy
Z3VtZW50OworCit0ZW1wbGF0ZSA8Pgorc3RydWN0IExvZ0FyZ3VtZW50PFdlYkNvcmU6OlBsYXRm
b3JtTWVkaWFTZXNzaW9uOjpTdGF0ZT4geworICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoY29u
c3QgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb246OlN0YXRlIHN0YXRlKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKHN0YXRlKTsKKyAgICB9Cit9
OworCit0ZW1wbGF0ZSA8Pgorc3RydWN0IExvZ0FyZ3VtZW50PFdlYkNvcmU6OlBsYXRmb3JtTWVk
aWFTZXNzaW9uOjpJbnRlcnJ1cHRpb25UeXBlPiB7CisgICAgc3RhdGljIFN0cmluZyB0b1N0cmlu
Zyhjb25zdCBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6SW50ZXJydXB0aW9uVHlwZSBz
dGF0ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhz
dGF0ZSk7CisgICAgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKICNlbmRpZiAvLyBQbGF0
Zm9ybU1lZGlhU2Vzc2lvbl9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>339723</attachid>
            <date>2018-05-07 08:24:59 -0700</date>
            <delta_ts>2018-05-09 16:32:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-185376-20180507082459.patch</filename>
            <type>text/plain</type>
            <size>35281</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMxNDM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjIwZDUyYjRkMDJhMmJi
YzEyNmQ4NWViNGNiNmI1M2RmMjNhNjBmMC4uYTMxNTliMWE1MjcxOWEyYmRkMjBjNmFjNWE2MGQ5
OGU0YWYxNWYyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDE4LTA1LTA3ICBFcmlj
IENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFVwZGF0ZSBNZWRp
YVNlc3Npb24gdG8gdXNlIHJlbGVhc2UgbG9nZ2luZworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg1Mzc2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80
MDAyMjIwMz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBObyBuZXcgdGVzdHMsIHRlc3RlZCBtYW51YWxseS4KKworICAgICAgICAqIE1vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFTdHJlYW0uaDogaG9zdGluZ0RvY3VtZW50KCkgZG9lc24ndCBuZWVkIHRv
IHJldHVybiBhIGNvbnN0IERvY3VtZW50LgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVk
aW9Db250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dDo6aG9zdGluZ0Rv
Y3VtZW50IGNvbnN0KTogRGl0dG8uCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Nv
bnRleHQuaDoKKworICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOiBEaXR0by4KKwor
ICAgICAgICAqIGh0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYUVsZW1lbnRTZXNzaW9uOjpNZWRpYUVsZW1lbnRTZXNzaW9uKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhRWxlbWVudFNlc3Npb246OmFkZEJlaGF2aW9yUmVzdHJpY3Rpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFFbGVtZW50U2Vzc2lvbjo6cmVtb3ZlQmVoYXZpb3JSZXN0cmlj
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVsZW1lbnRTZXNzaW9uOjpkYXRhTG9hZGlu
Z1Blcm1pdHRlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVsZW1lbnRTZXNzaW9u
OjpmdWxsc2NyZWVuUGVybWl0dGVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRWxl
bWVudFNlc3Npb246OnBhZ2VBbGxvd3NEYXRhTG9hZGluZyBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYUVsZW1lbnRTZXNzaW9uOjpwYWdlQWxsb3dzUGxheWJhY2tBZnRlclJlc3VtaW5n
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRWxlbWVudFNlc3Npb246OmNhblNob3dD
b250cm9sc01hbmFnZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbGVtZW50U2Vz
c2lvbjo6c2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
RWxlbWVudFNlc3Npb246Omhhc1dpcmVsZXNzUGxheWJhY2tUYXJnZXRzIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhRWxlbWVudFNlc3Npb246OndpcmVsZXNzVmlkZW9QbGF5YmFja0Rp
c2FibGVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRWxlbWVudFNlc3Npb246OnNl
dFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
RWxlbWVudFNlc3Npb246OnNldEhhc1BsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5TGlzdGVuZXJz
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRWxlbWVudFNlc3Npb246OmV4dGVybmFsT3V0cHV0
RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRWxlbWVu
dFNlc3Npb246OnNldFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhRWxlbWVudFNlc3Npb246Om1lZGlhRW5naW5lVXBkYXRlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYUVsZW1lbnRTZXNzaW9uOjp3aWxsTG9nIGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhRWxlbWVudFNlc3Npb246OmxvZ2dlciBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVsZW1lbnRTZXNzaW9uOjpsb2dJZGVudGlmaWVy
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRWxlbWVudFNlc3Npb246
OmxvZ0NoYW5uZWwgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwvTWVkaWFFbGVtZW50
U2Vzc2lvbi5oOgorCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Np
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6bmV4dExvZ0lkZW50aWZpZXIpOgorICAgICAgICAo
V2ViQ29yZTo6Y29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6
UGxhdGZvcm1NZWRpYVNlc3Npb246OlBsYXRmb3JtTWVkaWFTZXNzaW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uOjpzZXRTdGF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6YmVnaW5JbnRlcnJ1cHRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb246OmVuZEludGVycnVwdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Y2xpZW50V2lsbEJlZ2luQXV0b3BsYXlpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb246OmNsaWVudFdpbGxQYXVz
ZVBsYXliYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uOjpwYXVz
ZVNlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb246OnN0b3BT
ZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uOjpjbGllbnRE
YXRhQnVmZmVyaW5nVGltZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlh
U2Vzc2lvbjo6bG9nQ2hhbm5lbCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpzdGF0ZU5hbWUp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6aW50ZXJydXB0aW9uTmFtZSk6IERlbGV0ZWQu
CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb24uaDoKKyAgICAg
ICAgKFdURjo6TG9nQXJndW1lbnQ8V2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb246OlN0YXRl
Pjo6dG9TdHJpbmcpOgorICAgICAgICAoV1RGOjpMb2dBcmd1bWVudDxXZWJDb3JlOjpQbGF0Zm9y
bU1lZGlhU2Vzc2lvbjo6SW50ZXJydXB0aW9uVHlwZT46OnRvU3RyaW5nKToKKwogMjAxOC0wNS0w
NiAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdIEFkZCBh
c3NlcnRpb25zIGZvciBzdGFsZSBEaXNwbGF5OjpCb3ggZ2VvbWV0cnkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uaAppbmRleCBmNjVkMDZkNjkw
MDczNzAxODZkNzQ5NjRmZWVlYWFjMTI5ZTM4YjRhLi4xYzFhZTExYjgwZTAwYjU3M2MzM2VjMjRj
Mzk0NTExNTg2NmVhNDU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL01lZGlhU3RyZWFtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9NZWRpYVN0cmVhbS5oCkBAIC0xNTEsNyArMTUxLDcgQEAgcHJpdmF0ZToKICAgICBib29s
IHNob3VsZE92ZXJyaWRlQmFja2dyb3VuZFBsYXliYWNrUmVzdHJpY3Rpb24oUGxhdGZvcm1NZWRp
YVNlc3Npb246OkludGVycnVwdGlvblR5cGUpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9
CiAgICAgU3RyaW5nIHNvdXJjZUFwcGxpY2F0aW9uSWRlbnRpZmllcigpIGNvbnN0IGZpbmFsOwog
ICAgIGJvb2wgY2FuUHJvZHVjZUF1ZGlvKCkgY29uc3QgZmluYWw7Ci0gICAgY29uc3QgRG9jdW1l
bnQqIGhvc3RpbmdEb2N1bWVudCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGRvY3VtZW50KCk7IH0K
KyAgICBEb2N1bWVudCogaG9zdGluZ0RvY3VtZW50KCkgY29uc3QgZmluYWwgeyByZXR1cm4gZG9j
dW1lbnQoKTsgfQogICAgIGJvb2wgcHJvY2Vzc2luZ1VzZXJHZXN0dXJlRm9yTWVkaWEoKSBjb25z
dCBmaW5hbDsKIAogICAgIC8vIEFjdGl2ZURPTU9iamVjdCBBUEkuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKaW5kZXggMmM3NDEwZGZkNzQ3
YjA2NDgzYjUzYmIxMWNhNzFjYWY4NGZiZDUzNC4uMWMwZDQ4Zjc2MTE3NjA0YmRmNzI3OTBiNTUy
NzQ0ZWMzZDIyZDY4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9Db250ZXh0LmNwcApAQCAtMzQzLDcgKzM0Myw3IEBAIERvY3VtZW50KiBBdWRpb0NvbnRl
eHQ6OmRvY3VtZW50KCkgY29uc3QKICAgICByZXR1cm4gZG93bmNhc3Q8RG9jdW1lbnQ+KG1fc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCk7CiB9CiAKLWNvbnN0IERvY3VtZW50KiBBdWRpb0NvbnRleHQ6
Omhvc3RpbmdEb2N1bWVudCgpIGNvbnN0CitEb2N1bWVudCogQXVkaW9Db250ZXh0Ojpob3N0aW5n
RG9jdW1lbnQoKSBjb25zdAogewogICAgIHJldHVybiBkb3duY2FzdDxEb2N1bWVudD4obV9zY3Jp
cHRFeGVjdXRpb25Db250ZXh0KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvQ29udGV4dC5oCmluZGV4IDJiOGEyYjEwOGNkMGQxYWRmZThmYjkxMmJmZWQyZDNm
OWExYzgzM2YuLmU1ZTY1YzA3OGU4MGViYmZkMTJmOWE3M2E1Zjc3ZjdkNmI0ZTNhNDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaApAQCAtODks
NyArODksNyBAQCBwdWJsaWM6CiAKICAgICBEb2N1bWVudCogZG9jdW1lbnQoKSBjb25zdDsgLy8g
QVNTRVJUcyBpZiBkb2N1bWVudCBubyBsb25nZXIgZXhpc3RzLgogCi0gICAgY29uc3QgRG9jdW1l
bnQqIGhvc3RpbmdEb2N1bWVudCgpIGNvbnN0IG92ZXJyaWRlOworICAgIERvY3VtZW50KiBob3N0
aW5nRG9jdW1lbnQoKSBjb25zdCBmaW5hbDsKIAogICAgIEF1ZGlvRGVzdGluYXRpb25Ob2RlKiBk
ZXN0aW5hdGlvbigpIHsgcmV0dXJuIG1fZGVzdGluYXRpb25Ob2RlLmdldCgpOyB9CiAgICAgc2l6
ZV90IGN1cnJlbnRTYW1wbGVGcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVzdGluYXRpb25Ob2Rl
LT5jdXJyZW50U2FtcGxlRnJhbWUoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuaAppbmRleCBiYTlmNTlhNzdjMjdiYjllNzM4Mzk3ZTNiYWY1YWUwNjQ4YjAwNTAzLi40ZDE0
NjhkYzc1N2JjZmU4ZmEyMDdmMGZjYjhiMDJiNjA5N2UzOTA0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuaApAQCAtMTk4LDcgKzE5OCw3IEBAIHB1YmxpYzoKICAgICAKICAg
ICBib29sIGluQWN0aXZlRG9jdW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2luQWN0aXZlRG9jdW1l
bnQ7IH0KIAotICAgIGNvbnN0IERvY3VtZW50KiBob3N0aW5nRG9jdW1lbnQoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiAmZG9jdW1lbnQoKTsgfQorICAgIERvY3VtZW50KiBob3N0aW5nRG9jdW1l
bnQoKSBjb25zdCBmaW5hbCB7IHJldHVybiAmZG9jdW1lbnQoKTsgfQogCiAvLyBET00gQVBJCiAv
LyBlcnJvciBzdGF0ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1l
bnRTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5j
cHAKaW5kZXggNjcyOGFmNWJjNDJkZDVmMjIyODI0Njg2MjA4MjgzN2RkYTJjYWRlNy4uN2JmM2Zj
NWQ1OWQ5OTQ3MWVlYjhhY2NjYWI0ODZiOGY5ZjkyMTI4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL01lZGlhRWxlbWVudFNlc3Npb24uY3BwCkBAIC02MSw3ICs2MSw3IEBAIHN0YXRpYyBjb25z
dCBTZWNvbmRzIGVsZW1lbnRNYWluQ29udGVudENoZWNrSW50ZXJ2YWwgeyAyNTBfbXMgfTsKIHN0
YXRpYyBib29sIGlzRWxlbWVudFJlY3RNb3N0bHlJbk1haW5GcmFtZShjb25zdCBIVE1MTWVkaWFF
bGVtZW50Jik7CiBzdGF0aWMgYm9vbCBpc0VsZW1lbnRMYXJnZUVub3VnaEZvck1haW5Db250ZW50
KGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQmLCBNZWRpYVNlc3Npb25NYWluQ29udGVudFB1cnBvc2Up
OwogCi0jaWYgIUxPR19ESVNBQkxFRAorI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogc3RhdGlj
IFN0cmluZyByZXN0cmljdGlvbk5hbWUoTWVkaWFFbGVtZW50U2Vzc2lvbjo6QmVoYXZpb3JSZXN0
cmljdGlvbnMgcmVzdHJpY3Rpb24pCiB7CiAgICAgU3RyaW5nQnVpbGRlciByZXN0cmljdGlvbkJ1
aWxkZXI7CkBAIC0xMDUsNiArMTA1LDkgQEAgTWVkaWFFbGVtZW50U2Vzc2lvbjo6TWVkaWFFbGVt
ZW50U2Vzc2lvbihIVE1MTWVkaWFFbGVtZW50JiBlbGVtZW50KQogICAgICwgbV90YXJnZXRBdmFp
bGFiaWxpdHlDaGFuZ2VkVGltZXIoKnRoaXMsICZNZWRpYUVsZW1lbnRTZXNzaW9uOjp0YXJnZXRB
dmFpbGFiaWxpdHlDaGFuZ2VkVGltZXJGaXJlZCkKICNlbmRpZgogICAgICwgbV9tYWluQ29udGVu
dENoZWNrVGltZXIoKnRoaXMsICZNZWRpYUVsZW1lbnRTZXNzaW9uOjptYWluQ29udGVudENoZWNr
VGltZXJGaXJlZCkKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICAsIG1fbG9nSWRlbnRp
ZmllcihlbGVtZW50LmxvZ0lkZW50aWZpZXIoKSkKKyNlbmRpZgogewogfQogCkBAIC0xMjgsNyAr
MTMxLDkgQEAgdm9pZCBNZWRpYUVsZW1lbnRTZXNzaW9uOjp1bnJlZ2lzdGVyV2l0aERvY3VtZW50
KERvY3VtZW50JiBkb2N1bWVudCkKIAogdm9pZCBNZWRpYUVsZW1lbnRTZXNzaW9uOjphZGRCZWhh
dmlvclJlc3RyaWN0aW9uKEJlaGF2aW9yUmVzdHJpY3Rpb25zIHJlc3RyaWN0aW9uKQogewotICAg
IExPRyhNZWRpYSwgIk1lZGlhRWxlbWVudFNlc3Npb246OmFkZEJlaGF2aW9yUmVzdHJpY3Rpb24g
LSBhZGRpbmcgJXMiLCByZXN0cmljdGlvbk5hbWUocmVzdHJpY3Rpb24pLnV0ZjgoKS5kYXRhKCkp
OworICAgIGlmICghKG1fcmVzdHJpY3Rpb25zICYgcmVzdHJpY3Rpb24pKQorICAgICAgICBJTkZP
X0xPRyhMT0dJREVOVElGSUVSLCAiYWRkaW5nICIsIHJlc3RyaWN0aW9uTmFtZShyZXN0cmljdGlv
bikpOworCiAgICAgbV9yZXN0cmljdGlvbnMgfD0gcmVzdHJpY3Rpb247CiAKICAgICBpZiAocmVz
dHJpY3Rpb24gJiBPdmVycmlkZVVzZXJHZXN0dXJlUmVxdWlyZW1lbnRGb3JNYWluQ29udGVudCkK
QEAgLTE0Myw3ICsxNDgsMTAgQEAgdm9pZCBNZWRpYUVsZW1lbnRTZXNzaW9uOjpyZW1vdmVCZWhh
dmlvclJlc3RyaWN0aW9uKEJlaGF2aW9yUmVzdHJpY3Rpb25zIHJlc3RyaWMKICAgICAgICAgICAg
IHBhZ2UtPnNldEFsbG93c1BsYXliYWNrQ29udHJvbHNGb3JBdXRvcGxheWluZ0F1ZGlvKHRydWUp
OwogICAgIH0KIAotICAgIExPRyhNZWRpYSwgIk1lZGlhRWxlbWVudFNlc3Npb246OnJlbW92ZUJl
aGF2aW9yUmVzdHJpY3Rpb24gLSByZW1vdmluZyAlcyIsIHJlc3RyaWN0aW9uTmFtZShyZXN0cmlj
dGlvbikudXRmOCgpLmRhdGEoKSk7CisgICAgaWYgKCEobV9yZXN0cmljdGlvbnMgJiByZXN0cmlj
dGlvbikpCisgICAgICAgIHJldHVybjsKKworICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsICJy
ZW1vdmluZyAiLCByZXN0cmljdGlvbk5hbWUobV9yZXN0cmljdGlvbnMgJiByZXN0cmljdGlvbikp
OwogICAgIG1fcmVzdHJpY3Rpb25zICY9IH5yZXN0cmljdGlvbjsKIH0KIApAQCAtMjU2LDcgKzI2
NCw3IEBAIGJvb2wgTWVkaWFFbGVtZW50U2Vzc2lvbjo6ZGF0YUxvYWRpbmdQZXJtaXR0ZWQoKSBj
b25zdAogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIGlmIChtX3Jlc3RyaWN0aW9ucyAmIFJl
cXVpcmVVc2VyR2VzdHVyZUZvckxvYWQgJiYgIW1fZWxlbWVudC5kb2N1bWVudCgpLnByb2Nlc3Np
bmdVc2VyR2VzdHVyZUZvck1lZGlhKCkpIHsKLSAgICAgICAgTE9HKE1lZGlhLCAiTWVkaWFFbGVt
ZW50U2Vzc2lvbjo6ZGF0YUxvYWRpbmdQZXJtaXR0ZWQgLSByZXR1cm5pbmcgRkFMU0UiKTsKKyAg
ICAgICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwgInJldHVybmluZyBGQUxTRSIpOwogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC0yNjYsNyArMjc0LDcgQEAgYm9vbCBNZWRpYUVs
ZW1lbnRTZXNzaW9uOjpkYXRhTG9hZGluZ1Blcm1pdHRlZCgpIGNvbnN0CiBib29sIE1lZGlhRWxl
bWVudFNlc3Npb246OmZ1bGxzY3JlZW5QZXJtaXR0ZWQoKSBjb25zdAogewogICAgIGlmIChtX3Jl
c3RyaWN0aW9ucyAmIFJlcXVpcmVVc2VyR2VzdHVyZUZvckZ1bGxzY3JlZW4gJiYgIW1fZWxlbWVu
dC5kb2N1bWVudCgpLnByb2Nlc3NpbmdVc2VyR2VzdHVyZUZvck1lZGlhKCkpIHsKLSAgICAgICAg
TE9HKE1lZGlhLCAiTWVkaWFFbGVtZW50U2Vzc2lvbjo6ZnVsbHNjcmVlblBlcm1pdHRlZCAtIHJl
dHVybmluZyBGQUxTRSIpOworICAgICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCAicmV0dXJu
aW5nIEZBTFNFIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTI3Nyw3ICsy
ODUsNyBAQCBib29sIE1lZGlhRWxlbWVudFNlc3Npb246OnBhZ2VBbGxvd3NEYXRhTG9hZGluZygp
IGNvbnN0CiB7CiAgICAgUGFnZSogcGFnZSA9IG1fZWxlbWVudC5kb2N1bWVudCgpLnBhZ2UoKTsK
ICAgICBpZiAobV9yZXN0cmljdGlvbnMgJiBSZXF1aXJlUGFnZUNvbnNlbnRUb0xvYWRNZWRpYSAm
JiBwYWdlICYmICFwYWdlLT5jYW5TdGFydE1lZGlhKCkpIHsKLSAgICAgICAgTE9HKE1lZGlhLCAi
TWVkaWFFbGVtZW50U2Vzc2lvbjo6cGFnZUFsbG93c0RhdGFMb2FkaW5nIC0gcmV0dXJuaW5nIEZB
TFNFIik7CisgICAgICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsICJyZXR1cm5pbmcgRkFMU0Ui
KTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMjg4LDcgKzI5Niw3IEBAIGJv
b2wgTWVkaWFFbGVtZW50U2Vzc2lvbjo6cGFnZUFsbG93c1BsYXliYWNrQWZ0ZXJSZXN1bWluZygp
IGNvbnN0CiB7CiAgICAgUGFnZSogcGFnZSA9IG1fZWxlbWVudC5kb2N1bWVudCgpLnBhZ2UoKTsK
ICAgICBpZiAobV9yZXN0cmljdGlvbnMgJiBSZXF1aXJlUGFnZUNvbnNlbnRUb1Jlc3VtZU1lZGlh
ICYmIHBhZ2UgJiYgIXBhZ2UtPmNhblN0YXJ0TWVkaWEoKSkgewotICAgICAgICBMT0coTWVkaWEs
ICJNZWRpYUVsZW1lbnRTZXNzaW9uOjpwYWdlQWxsb3dzUGxheWJhY2tBZnRlclJlc3VtaW5nIC0g
cmV0dXJuaW5nIEZBTFNFIik7CisgICAgICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsICJyZXR1
cm5pbmcgRkFMU0UiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMjk4LDk0
ICszMDYsOTQgQEAgYm9vbCBNZWRpYUVsZW1lbnRTZXNzaW9uOjpwYWdlQWxsb3dzUGxheWJhY2tB
ZnRlclJlc3VtaW5nKCkgY29uc3QKIGJvb2wgTWVkaWFFbGVtZW50U2Vzc2lvbjo6Y2FuU2hvd0Nv
bnRyb2xzTWFuYWdlcihQbGF5YmFja0NvbnRyb2xzUHVycG9zZSBwdXJwb3NlKSBjb25zdAogewog
ICAgIGlmIChtX2VsZW1lbnQuaXNTdXNwZW5kZWQoKSB8fCAhbV9lbGVtZW50LmluQWN0aXZlRG9j
dW1lbnQoKSkgewotICAgICAgICBMT0coTWVkaWEsICJNZWRpYUVsZW1lbnRTZXNzaW9uOjpjYW5T
aG93Q29udHJvbHNNYW5hZ2VyIC0gcmV0dXJuaW5nIEZBTFNFOiBpc1N1c3BlbmRlZCgpIik7Cisg
ICAgICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsICJyZXR1cm5pbmcgRkFMU0U6IGlzU3VzcGVu
ZGVkKCkiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIGlmIChtX2VsZW1l
bnQuaXNGdWxsc2NyZWVuKCkpIHsKLSAgICAgICAgTE9HKE1lZGlhLCAiTWVkaWFFbGVtZW50U2Vz
c2lvbjo6Y2FuU2hvd0NvbnRyb2xzTWFuYWdlciAtIHJldHVybmluZyBUUlVFOiBJcyBmdWxsc2Ny
ZWVuIik7CisgICAgICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsICJyZXR1cm5pbmcgVFJVRTog
aXMgZnVsbHNjcmVlbiIpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKICAgICBpZiAo
bV9lbGVtZW50Lm11dGVkKCkpIHsKLSAgICAgICAgTE9HKE1lZGlhLCAiTWVkaWFFbGVtZW50U2Vz
c2lvbjo6Y2FuU2hvd0NvbnRyb2xzTWFuYWdlciAtIHJldHVybmluZyBGQUxTRTogTXV0ZWQiKTsK
KyAgICAgICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwgInJldHVybmluZyBGQUxTRTogbXV0ZWQi
KTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIGlmIChtX2VsZW1lbnQuZG9j
dW1lbnQoKS5pc01lZGlhRG9jdW1lbnQoKSAmJiAobV9lbGVtZW50LmRvY3VtZW50KCkuZnJhbWUo
KSAmJiBtX2VsZW1lbnQuZG9jdW1lbnQoKS5mcmFtZSgpLT5pc01haW5GcmFtZSgpKSkgewotICAg
ICAgICBMT0coTWVkaWEsICJNZWRpYUVsZW1lbnRTZXNzaW9uOjpjYW5TaG93Q29udHJvbHNNYW5h
Z2VyIC0gcmV0dXJuaW5nIFRSVUU6IElzIG1lZGlhIGRvY3VtZW50Iik7CisgICAgICAgIElORk9f
TE9HKExPR0lERU5USUZJRVIsICJyZXR1cm5pbmcgVFJVRTogaXMgbWVkaWEgZG9jdW1lbnQiKTsK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCiAgICAgaWYgKGNsaWVudCgpLnByZXNlbnRh
dGlvblR5cGUoKSA9PSBBdWRpbykgewogICAgICAgICBpZiAoIWhhc0JlaGF2aW9yUmVzdHJpY3Rp
b24oUmVxdWlyZVVzZXJHZXN0dXJlVG9Db250cm9sQ29udHJvbHNNYW5hZ2VyKSB8fCBtX2VsZW1l
bnQuZG9jdW1lbnQoKS5wcm9jZXNzaW5nVXNlckdlc3R1cmVGb3JNZWRpYSgpKSB7Ci0gICAgICAg
ICAgICBMT0coTWVkaWEsICJNZWRpYUVsZW1lbnRTZXNzaW9uOjpjYW5TaG93Q29udHJvbHNNYW5h
Z2VyIC0gcmV0dXJuaW5nIFRSVUU6IEF1ZGlvIGVsZW1lbnQgd2l0aCB1c2VyIGdlc3R1cmUiKTsK
KyAgICAgICAgICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsICJyZXR1cm5pbmcgVFJVRTogYXVk
aW8gZWxlbWVudCB3aXRoIHVzZXIgZ2VzdHVyZSIpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgICAgIH0KIAogICAgICAgICBpZiAobV9lbGVtZW50LmlzUGxheWluZygpICYmIGFsbG93
c1BsYXliYWNrQ29udHJvbHNGb3JBdXRvcGxheWluZ0F1ZGlvKCkpIHsKLSAgICAgICAgICAgIExP
RyhNZWRpYSwgIk1lZGlhRWxlbWVudFNlc3Npb246OmNhblNob3dDb250cm9sc01hbmFnZXIgLSBy
ZXR1cm5pbmcgVFJVRTogVXNlciBoYXMgcGxheWVkIG1lZGlhIGJlZm9yZSIpOworICAgICAgICAg
ICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwgInJldHVybmluZyBUUlVFOiB1c2VyIGhhcyBwbGF5
ZWQgbWVkaWEgYmVmb3JlIik7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQog
Ci0gICAgICAgIExPRyhNZWRpYSwgIk1lZGlhRWxlbWVudFNlc3Npb246OmNhblNob3dDb250cm9s
c01hbmFnZXIgLSByZXR1cm5pbmcgRkFMU0U6IEF1ZGlvIGVsZW1lbnQgaXMgbm90IHN1aXRhYmxl
Iik7CisgICAgICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsICJyZXR1cm5pbmcgRkFMU0U6IGF1
ZGlvIGVsZW1lbnQgaXMgbm90IHN1aXRhYmxlIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CiAKICAgICBpZiAocHVycG9zZSA9PSBQbGF5YmFja0NvbnRyb2xzUHVycG9zZTo6Q29udHJv
bHNNYW5hZ2VyICYmICFpc0VsZW1lbnRSZWN0TW9zdGx5SW5NYWluRnJhbWUobV9lbGVtZW50KSkg
ewotICAgICAgICBMT0coTWVkaWEsICJNZWRpYUVsZW1lbnRTZXNzaW9uOjpjYW5TaG93Q29udHJv
bHNNYW5hZ2VyIC0gcmV0dXJuaW5nIEZBTFNFOiBOb3QgaW4gbWFpbiBmcmFtZSIpOworICAgICAg
ICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCAicmV0dXJuaW5nIEZBTFNFOiBub3QgaW4gbWFpbiBm
cmFtZSIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgaWYgKCFtX2VsZW1l
bnQuaGFzQXVkaW8oKSAmJiAhbV9lbGVtZW50Lmhhc0V2ZXJIYWRBdWRpbygpKSB7Ci0gICAgICAg
IExPRyhNZWRpYSwgIk1lZGlhRWxlbWVudFNlc3Npb246OmNhblNob3dDb250cm9sc01hbmFnZXIg
LSByZXR1cm5pbmcgRkFMU0U6IE5vIGF1ZGlvIik7CisgICAgICAgIElORk9fTE9HKExPR0lERU5U
SUZJRVIsICJyZXR1cm5pbmcgRkFMU0U6IG5vIGF1ZGlvIik7CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CiAKICAgICBpZiAoIXBsYXliYWNrUGVybWl0dGVkKCkpIHsKLSAgICAgICAgTE9H
KE1lZGlhLCAiTWVkaWFFbGVtZW50U2Vzc2lvbjo6Y2FuU2hvd0NvbnRyb2xzTWFuYWdlciAtIHJl
dHVybmluZyBGQUxTRTogUGxheWJhY2sgbm90IHBlcm1pdHRlZCIpOworICAgICAgICBJTkZPX0xP
RyhMT0dJREVOVElGSUVSLCAicmV0dXJuaW5nIEZBTFNFOiBwbGF5YmFjayBub3QgcGVybWl0dGVk
Iik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBpZiAoIWhhc0JlaGF2aW9y
UmVzdHJpY3Rpb24oUmVxdWlyZVVzZXJHZXN0dXJlVG9Db250cm9sQ29udHJvbHNNYW5hZ2VyKSB8
fCBtX2VsZW1lbnQuZG9jdW1lbnQoKS5wcm9jZXNzaW5nVXNlckdlc3R1cmVGb3JNZWRpYSgpKSB7
Ci0gICAgICAgIExPRyhNZWRpYSwgIk1lZGlhRWxlbWVudFNlc3Npb246OmNhblNob3dDb250cm9s
c01hbmFnZXIgLSByZXR1cm5pbmcgVFJVRTogTm8gdXNlciBnZXN0dXJlIHJlcXVpcmVkIik7Cisg
ICAgICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsICJyZXR1cm5pbmcgVFJVRTogbm8gdXNlciBn
ZXN0dXJlIHJlcXVpcmVkIik7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAogICAgIGlm
IChwdXJwb3NlID09IFBsYXliYWNrQ29udHJvbHNQdXJwb3NlOjpDb250cm9sc01hbmFnZXIgJiYg
aGFzQmVoYXZpb3JSZXN0cmljdGlvbihSZXF1aXJlUGxheWJhY2tUb0NvbnRyb2xDb250cm9sc01h
bmFnZXIpICYmICFtX2VsZW1lbnQuaXNQbGF5aW5nKCkpIHsKLSAgICAgICAgTE9HKE1lZGlhLCAi
TWVkaWFFbGVtZW50U2Vzc2lvbjo6Y2FuU2hvd0NvbnRyb2xzTWFuYWdlciAtIHJldHVybmluZyBG
QUxTRTogTmVlZHMgdG8gYmUgcGxheWluZyIpOworICAgICAgICBJTkZPX0xPRyhMT0dJREVOVElG
SUVSLCAicmV0dXJuaW5nIEZBTFNFOiBuZWVkcyB0byBiZSBwbGF5aW5nIik7CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CiAKICAgICBpZiAoIW1fZWxlbWVudC5oYXNFdmVyTm90aWZpZWRB
Ym91dFBsYXlpbmcoKSkgewotICAgICAgICBMT0coTWVkaWEsICJNZWRpYUVsZW1lbnRTZXNzaW9u
OjpjYW5TaG93Q29udHJvbHNNYW5hZ2VyIC0gcmV0dXJuaW5nIEZBTFNFOiBIYXNuJ3QgZmlyZWQg
cGxheWluZyBub3RpZmljYXRpb24iKTsKKyAgICAgICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwg
InJldHVybmluZyBGQUxTRTogaGFzbid0IGZpcmVkIHBsYXlpbmcgbm90aWZpY2F0aW9uIik7CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICAvLyBPbmx5IGFsbG93IHRoZSBtYWlu
IGNvbnRlbnQgaGV1cmlzdGljIHRvIGZvcmJpZCB2aWRlb3MgZnJvbSBzaG93aW5nIHVwIGlmIG91
ciBwdXJwb3NlIGlzIHRoZSBjb250cm9scyBtYW5hZ2VyLgogICAgIGlmIChwdXJwb3NlID09IFBs
YXliYWNrQ29udHJvbHNQdXJwb3NlOjpDb250cm9sc01hbmFnZXIgJiYgbV9lbGVtZW50LmlzVmlk
ZW8oKSkgewogICAgICAgICBpZiAoIW1fZWxlbWVudC5yZW5kZXJlcigpKSB7Ci0gICAgICAgICAg
ICBMT0coTWVkaWEsICJNZWRpYUVsZW1lbnRTZXNzaW9uOjpjYW5TaG93Q29udHJvbHNNYW5hZ2Vy
IC0gcmV0dXJuaW5nIEZBTFNFOiBObyByZW5kZXJlciIpOworICAgICAgICAgICAgSU5GT19MT0co
TE9HSURFTlRJRklFUiwgInJldHVybmluZyBGQUxTRTogbm8gcmVuZGVyZXIiKTsKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogCiAgICAgICAgIGlmICghbV9lbGVtZW50Lmhh
c1ZpZGVvKCkgJiYgIW1fZWxlbWVudC5oYXNFdmVySGFkVmlkZW8oKSkgewotICAgICAgICAgICAg
TE9HKE1lZGlhLCAiTWVkaWFFbGVtZW50U2Vzc2lvbjo6Y2FuU2hvd0NvbnRyb2xzTWFuYWdlciAt
IHJldHVybmluZyBGQUxTRTogTm8gdmlkZW8iKTsKKyAgICAgICAgICAgIElORk9fTE9HKExPR0lE
RU5USUZJRVIsICJyZXR1cm5pbmcgRkFMU0U6IG5vIHZpZGVvIik7CiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoaXNMYXJnZUVub3VnaEZvck1haW5D
b250ZW50KE1lZGlhU2Vzc2lvbk1haW5Db250ZW50UHVycG9zZTo6TWVkaWFDb250cm9scykpIHsK
LSAgICAgICAgICAgIExPRyhNZWRpYSwgIk1lZGlhRWxlbWVudFNlc3Npb246OmNhblNob3dDb250
cm9sc01hbmFnZXIgLSByZXR1cm5pbmcgVFJVRTogSXMgbWFpbiBjb250ZW50Iik7CisgICAgICAg
ICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCAicmV0dXJuaW5nIFRSVUU6IGlzIG1haW4gY29u
dGVudCIpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICB9CiAKICAg
ICBpZiAocHVycG9zZSA9PSBQbGF5YmFja0NvbnRyb2xzUHVycG9zZTo6Tm93UGxheWluZykgewot
ICAgICAgICBMT0coTWVkaWEsICJNZWRpYUVsZW1lbnRTZXNzaW9uOjpjYW5TaG93Q29udHJvbHNN
YW5hZ2VyIC0gcmV0dXJuaW5nIFRSVUU6IFBvdGVudGlhbGx5IHBsYXlzIGF1ZGlvIik7CisgICAg
ICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsICJyZXR1cm5pbmcgVFJVRTogcG90ZW50aWFsbHkg
cGxheXMgYXVkaW8iKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgTE9HKE1l
ZGlhLCAiTWVkaWFFbGVtZW50U2Vzc2lvbjo6Y2FuU2hvd0NvbnRyb2xzTWFuYWdlciAtIHJldHVy
bmluZyBGQUxTRTogTm8gdXNlciBnZXN0dXJlIik7CisgICAgSU5GT19MT0coTE9HSURFTlRJRklF
UiwgInJldHVybmluZyBGQUxTRTogbm8gdXNlciBnZXN0dXJlIik7CiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCkBAIC00MTQsMjIgKzQyMiwyMiBAQCBib29sIE1lZGlhRWxlbWVudFNlc3Npb246Ondh
bnRzVG9PYnNlcnZlVmlld3BvcnRWaXNpYmlsaXR5Rm9yQXV0b3BsYXkoKSBjb25zdAogI2lmIEVO
QUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCiB2b2lkIE1lZGlhRWxlbWVudFNlc3Npb246
OnNob3dQbGF5YmFja1RhcmdldFBpY2tlcigpCiB7Ci0gICAgTE9HKE1lZGlhLCAiTWVkaWFFbGVt
ZW50U2Vzc2lvbjo6c2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyIik7CisgICAgSU5GT19MT0coTE9H
SURFTlRJRklFUik7CiAKICAgICBhdXRvJiBkb2N1bWVudCA9IG1fZWxlbWVudC5kb2N1bWVudCgp
OwogICAgIGlmIChtX3Jlc3RyaWN0aW9ucyAmIFJlcXVpcmVVc2VyR2VzdHVyZVRvU2hvd1BsYXli
YWNrVGFyZ2V0UGlja2VyICYmICFkb2N1bWVudC5wcm9jZXNzaW5nVXNlckdlc3R1cmVGb3JNZWRp
YSgpKSB7Ci0gICAgICAgIExPRyhNZWRpYSwgIk1lZGlhRWxlbWVudFNlc3Npb246OnNob3dQbGF5
YmFja1RhcmdldFBpY2tlciAtIHJldHVybmluZyBlYXJseSBiZWNhdXNlIG9mIHBlcm1pc3Npb25z
Iik7CisgICAgICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsICJyZXR1cm5pbmcgZWFybHkgYmVj
YXVzZSBvZiBwZXJtaXNzaW9ucyIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYg
KCFkb2N1bWVudC5wYWdlKCkpIHsKLSAgICAgICAgTE9HKE1lZGlhLCAiTWVkaWFFbGVtZW50U2Vz
c2lvbjo6c2hvd2luZ1BsYXliYWNrVGFyZ2V0UGlja2VyUGVybWl0dGVkIC0gcmV0dXJuaW5nIGVh
cmx5IGJlY2F1c2UgcGFnZSBpcyBOVUxMIik7CisgICAgICAgIElORk9fTE9HKExPR0lERU5USUZJ
RVIsICJyZXR1cm5pbmcgZWFybHkgYmVjYXVzZSBwYWdlIGlzIE5VTEwiKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAogI2lmICFQTEFURk9STShJT1MpCiAgICAgaWYgKG1fZWxlbWVudC5yZWFk
eVN0YXRlKCkgPCBIVE1MTWVkaWFFbGVtZW50RW51bXM6OkhBVkVfTUVUQURBVEEpIHsKLSAgICAg
ICAgTE9HKE1lZGlhLCAiTWVkaWFFbGVtZW50U2Vzc2lvbjo6c2hvd1BsYXliYWNrVGFyZ2V0UGlj
a2VyIC0gcmV0dXJuaW5nIGVhcmx5IGJlY2F1c2UgZWxlbWVudCBpcyBub3QgcGxheWFibGUiKTsK
KyAgICAgICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwgInJldHVybmluZyBlYXJseSBiZWNhdXNl
IGVsZW1lbnQgaXMgbm90IHBsYXlhYmxlIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAjZW5k
aWYKQEAgLTQ0NSw3ICs0NTMsNyBAQCBib29sIE1lZGlhRWxlbWVudFNlc3Npb246Omhhc1dpcmVs
ZXNzUGxheWJhY2tUYXJnZXRzKCkgY29uc3QKICAgICBtX2hhc1BsYXliYWNrVGFyZ2V0cyA9IFBs
YXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLmhhc1dpcmVsZXNzVGFy
Z2V0c0F2YWlsYWJsZSgpOwogI2VuZGlmCiAKLSAgICBMT0coTWVkaWEsICJNZWRpYUVsZW1lbnRT
ZXNzaW9uOjpoYXNXaXJlbGVzc1BsYXliYWNrVGFyZ2V0cyAtIHJldHVybmluZyAlcyIsIG1faGFz
UGxheWJhY2tUYXJnZXRzID8gIlRSVUUiIDogIkZBTFNFIik7CisgICAgSU5GT19MT0coTE9HSURF
TlRJRklFUiwgInJldHVybmluZyAiLCBtX2hhc1BsYXliYWNrVGFyZ2V0cyk7CiAKICAgICByZXR1
cm4gbV9oYXNQbGF5YmFja1RhcmdldHM7CiB9CkBAIC00NTMsMjMgKzQ2MSwyMyBAQCBib29sIE1l
ZGlhRWxlbWVudFNlc3Npb246Omhhc1dpcmVsZXNzUGxheWJhY2tUYXJnZXRzKCkgY29uc3QKIGJv
b2wgTWVkaWFFbGVtZW50U2Vzc2lvbjo6d2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoKSBj
b25zdAogewogICAgIGlmICghbV9lbGVtZW50LmRvY3VtZW50KCkuc2V0dGluZ3MoKS5hbGxvd3NB
aXJQbGF5Rm9yTWVkaWFQbGF5YmFjaygpKSB7Ci0gICAgICAgIExPRyhNZWRpYSwgIk1lZGlhRWxl
bWVudFNlc3Npb246OndpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkIC0gcmV0dXJuaW5nIFRS
VUUgYmVjYXVzZSBvZiBzZXR0aW5ncyIpOworICAgICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVS
LCAicmV0dXJuaW5nIFRSVUUgYmVjYXVzZSBvZiBzZXR0aW5ncyIpOwogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICB9CiAKICAgICBpZiAobV9lbGVtZW50Lmhhc0F0dHJpYnV0ZVdpdGhvdXRTeW5j
aHJvbml6YXRpb24oSFRNTE5hbWVzOjp3ZWJraXR3aXJlbGVzc3ZpZGVvcGxheWJhY2tkaXNhYmxl
ZEF0dHIpKSB7Ci0gICAgICAgIExPRyhNZWRpYSwgIk1lZGlhRWxlbWVudFNlc3Npb246OndpcmVs
ZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkIC0gcmV0dXJuaW5nIFRSVUUgYmVjYXVzZSBvZiBhdHRy
aWJ1dGUiKTsKKyAgICAgICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwgInJldHVybmluZyBUUlVF
IGJlY2F1c2Ugb2YgYXR0cmlidXRlIik7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAog
I2lmIFBMQVRGT1JNKElPUykKICAgICBhdXRvJiBsZWdhY3lBaXJwbGF5QXR0cmlidXRlVmFsdWUg
PSBtX2VsZW1lbnQuYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6Ondl
YmtpdGFpcnBsYXlBdHRyKTsKICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uo
bGVnYWN5QWlycGxheUF0dHJpYnV0ZVZhbHVlLCAiZGVueSIpKSB7Ci0gICAgICAgIExPRyhNZWRp
YSwgIk1lZGlhRWxlbWVudFNlc3Npb246OndpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkIC0g
cmV0dXJuaW5nIFRSVUUgYmVjYXVzZSBvZiBsZWdhY3kgYXR0cmlidXRlIik7CisgICAgICAgIElO
Rk9fTE9HKExPR0lERU5USUZJRVIsICJyZXR1cm5pbmcgVFJVRSBiZWNhdXNlIG9mIGxlZ2FjeSBh
dHRyaWJ1dGUiKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIGlmIChlcXVhbExl
dHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShsZWdhY3lBaXJwbGF5QXR0cmlidXRlVmFsdWUsICJhbGxv
dyIpKSB7Ci0gICAgICAgIExPRyhNZWRpYSwgIk1lZGlhRWxlbWVudFNlc3Npb246OndpcmVsZXNz
VmlkZW9QbGF5YmFja0Rpc2FibGVkIC0gcmV0dXJuaW5nIEZBTFNFIGJlY2F1c2Ugb2YgbGVnYWN5
IGF0dHJpYnV0ZSIpOworICAgICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCAicmV0dXJuaW5n
IEZBTFNFIGJlY2F1c2Ugb2YgbGVnYWN5IGF0dHJpYnV0ZSIpOwogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogI2VuZGlmCkBAIC00NzksNyArNDg3LDcgQEAgYm9vbCBNZWRpYUVsZW1lbnRT
ZXNzaW9uOjp3aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCgpIGNvbnN0CiAgICAgICAgIHJl
dHVybiB0cnVlOwogCiAgICAgYm9vbCBkaXNhYmxlZCA9IHBsYXllci0+d2lyZWxlc3NWaWRlb1Bs
YXliYWNrRGlzYWJsZWQoKTsKLSAgICBMT0coTWVkaWEsICJNZWRpYUVsZW1lbnRTZXNzaW9uOjp3
aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCAtIHJldHVybmluZyAlcyBiZWNhdXNlIG1lZGlh
IGVuZ2luZSBzYXlzIHNvIiwgZGlzYWJsZWQgPyAiVFJVRSIgOiAiRkFMU0UiKTsKKyAgICBJTkZP
X0xPRyhMT0dJREVOVElGSUVSLCAicmV0dXJuaW5nICIsIGRpc2FibGVkLCAiIGJlY2F1c2UgbWVk
aWEgZW5naW5lIHNheXMgc28iKTsKICAgICAKICAgICByZXR1cm4gZGlzYWJsZWQ7CiB9CkBAIC00
OTUsMTMgKzUwMywxMyBAQCB2b2lkIE1lZGlhRWxlbWVudFNlc3Npb246OnNldFdpcmVsZXNzVmlk
ZW9QbGF5YmFja0Rpc2FibGVkKGJvb2wgZGlzYWJsZWQpCiAgICAgaWYgKCFwbGF5ZXIpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIExPRyhNZWRpYSwgIk1lZGlhRWxlbWVudFNlc3Npb246OnNldFdp
cmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkIC0gZGlzYWJsZWQgJXMiLCBkaXNhYmxlZCA/ICJU
UlVFIiA6ICJGQUxTRSIpOworICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsIGRpc2FibGVkKTsK
ICAgICBwbGF5ZXItPnNldFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKGRpc2FibGVkKTsK
IH0KIAogdm9pZCBNZWRpYUVsZW1lbnRTZXNzaW9uOjpzZXRIYXNQbGF5YmFja1RhcmdldEF2YWls
YWJpbGl0eUxpc3RlbmVycyhib29sIGhhc0xpc3RlbmVycykKIHsKLSAgICBMT0coTWVkaWEsICJN
ZWRpYUVsZW1lbnRTZXNzaW9uOjpzZXRIYXNQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUxpc3Rl
bmVycyAtIGhhc0xpc3RlbmVycyAlcyIsIGhhc0xpc3RlbmVycyA/ICJUUlVFIiA6ICJGQUxTRSIp
OworICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsIGhhc0xpc3RlbmVycyk7CiAKICNpZiBQTEFU
Rk9STShJT1MpCiAgICAgbV9oYXNQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUxpc3RlbmVycyA9
IGhhc0xpc3RlbmVyczsKQEAgLTUyOCw3ICs1MzYsNyBAQCB2b2lkIE1lZGlhRWxlbWVudFNlc3Np
b246OmV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKGJvb2wgaGFzVGFyZ2V0
cwogICAgIGlmIChtX2hhc1BsYXliYWNrVGFyZ2V0cyA9PSBoYXNUYXJnZXRzKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBMT0coTWVkaWEsICJNZWRpYUVsZW1lbnRTZXNzaW9uOjpleHRlcm5hbE91
dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5nZSglcCkgLSBoYXNUYXJnZXRzICVzIiwgdGhpcywg
aGFzVGFyZ2V0cyA/ICJUUlVFIiA6ICJGQUxTRSIpOworICAgIElORk9fTE9HKExPR0lERU5USUZJ
RVIsIGhhc1RhcmdldHMpOwogCiAgICAgbV9oYXNQbGF5YmFja1RhcmdldHMgPSBoYXNUYXJnZXRz
OwogICAgIG1fdGFyZ2V0QXZhaWxhYmlsaXR5Q2hhbmdlZFRpbWVyLnN0YXJ0T25lU2hvdCgwX3Mp
OwpAQCAtNTU2LDcgKzU2NCw3IEBAIGJvb2wgTWVkaWFFbGVtZW50U2Vzc2lvbjo6aXNQbGF5aW5n
VG9XaXJlbGVzc1BsYXliYWNrVGFyZ2V0KCkgY29uc3QKIAogdm9pZCBNZWRpYUVsZW1lbnRTZXNz
aW9uOjpzZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldChib29sIHNob3VsZFBsYXkpCiB7Ci0g
ICAgTE9HKE1lZGlhLCAiTWVkaWFFbGVtZW50U2Vzc2lvbjo6c2V0U2hvdWxkUGxheVRvUGxheWJh
Y2tUYXJnZXQgLSBzaG91bGRQbGF5ICVzIiwgc2hvdWxkUGxheSA/ICJUUlVFIiA6ICJGQUxTRSIp
OworICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsIHNob3VsZFBsYXkpOwogICAgIG1fc2hvdWxk
UGxheVRvUGxheWJhY2tUYXJnZXQgPSBzaG91bGRQbGF5OwogICAgIGNsaWVudCgpLnNldFNob3Vs
ZFBsYXlUb1BsYXliYWNrVGFyZ2V0KHNob3VsZFBsYXkpOwogfQpAQCAtNjM1LDcgKzY0Myw3IEBA
IGJvb2wgTWVkaWFFbGVtZW50U2Vzc2lvbjo6YWxsb3dzQXV0b21hdGljTWVkaWFEYXRhTG9hZGlu
ZygpIGNvbnN0CiAKIHZvaWQgTWVkaWFFbGVtZW50U2Vzc2lvbjo6bWVkaWFFbmdpbmVVcGRhdGVk
KCkKIHsKLSAgICBMT0coTWVkaWEsICJNZWRpYUVsZW1lbnRTZXNzaW9uOjptZWRpYUVuZ2luZVVw
ZGF0ZWQiKTsKKyAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSKTsKIAogI2lmIEVOQUJMRShXSVJF
TEVTU19QTEFZQkFDS19UQVJHRVQpCiAgICAgaWYgKG1fcmVzdHJpY3Rpb25zICYgV2lyZWxlc3NW
aWRlb1BsYXliYWNrRGlzYWJsZWQpCkBAIC04NDMsMjggKzg1MSw2IEBAIGJvb2wgTWVkaWFFbGVt
ZW50U2Vzc2lvbjo6YWxsb3dzUGxheWJhY2tDb250cm9sc0ZvckF1dG9wbGF5aW5nQXVkaW8oKSBj
b25zdAogICAgIHJldHVybiBwYWdlICYmIHBhZ2UtPmFsbG93c1BsYXliYWNrQ29udHJvbHNGb3JB
dXRvcGxheWluZ0F1ZGlvKCk7CiB9CiAKLWJvb2wgTWVkaWFFbGVtZW50U2Vzc2lvbjo6d2lsbExv
ZyhXVEZMb2dMZXZlbCBsZXZlbCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9lbGVtZW50LndpbGxM
b2cobGV2ZWwpOwotfQotCi0jaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECi1jb25zdCBMb2dnZXIm
IE1lZGlhRWxlbWVudFNlc3Npb246OmxvZ2dlcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fZWxl
bWVudC5sb2dnZXIoKTsKLX0KLQotY29uc3Qgdm9pZCogTWVkaWFFbGVtZW50U2Vzc2lvbjo6bG9n
SWRlbnRpZmllcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fZWxlbWVudC5sb2dJZGVudGlmaWVy
KCk7Ci19Ci0KLVdURkxvZ0NoYW5uZWwmIE1lZGlhRWxlbWVudFNlc3Npb246OmxvZ0NoYW5uZWwo
KSBjb25zdAotewotICAgIHJldHVybiBtX2VsZW1lbnQubG9nQ2hhbm5lbCgpOwotfQotI2VuZGlm
Ci0KIH0KIAogI2VuZGlmIC8vIEVOQUJMRShWSURFTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRp
YUVsZW1lbnRTZXNzaW9uLmgKaW5kZXggMzFhZjc2MDRiOTY0YWM5YjM5N2ExZDdmZDU5ZGU0ODU3
MjJiNzk4Zi4uODI4OWZmYTNmYjUyZjU3Mjg4MWQxYTg0NmQyZjVhNjA3MDg5ODc3NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmgKQEAgLTMyLDcgKzMyLDYgQEAK
ICNpbmNsdWRlICJQbGF0Zm9ybU1lZGlhU2Vzc2lvbi5oIgogI2luY2x1ZGUgIlN1Y2Nlc3NPci5o
IgogI2luY2x1ZGUgIlRpbWVyLmgiCi0jaW5jbHVkZSA8d3RmL0xvZ2dlckhlbHBlci5oPgogI2lu
Y2x1ZGUgPHd0Zi9UeXBlQ2FzdHMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTMsOSAr
NTIsNiBAQCBjbGFzcyBIVE1MTWVkaWFFbGVtZW50OwogY2xhc3MgU291cmNlQnVmZmVyOwogCiBj
bGFzcyBNZWRpYUVsZW1lbnRTZXNzaW9uIGZpbmFsIDogcHVibGljIFBsYXRmb3JtTWVkaWFTZXNz
aW9uCi0jaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECi0gICAgLCBwcml2YXRlIExvZ2dlckhlbHBl
cgotI2VuZGlmCiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CkBAIC0x
NDksMTIgKzE0NSw5IEBAIHB1YmxpYzoKICAgICB9CiAKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJM
RUQKLSAgICBjb25zdCBMb2dnZXImIGxvZ2dlcigpIGNvbnN0IGZpbmFsOwotICAgIGNvbnN0IHZv
aWQqIGxvZ0lkZW50aWZpZXIoKSBjb25zdCBmaW5hbDsKKyAgICBjb25zdCB2b2lkKiBsb2dJZGVu
dGlmaWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9sb2dJZGVudGlmaWVyOyB9CiAgICAgY29u
c3QgY2hhciogbG9nQ2xhc3NOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIk1lZGlhRWxlbWVu
dFNlc3Npb24iOyB9Ci0gICAgV1RGTG9nQ2hhbm5lbCYgbG9nQ2hhbm5lbCgpIGNvbnN0IGZpbmFs
OwogI2VuZGlmCi0gICAgYm9vbCB3aWxsTG9nKFdURkxvZ0xldmVsKSBjb25zdDsKIAogcHJpdmF0
ZToKIApAQCAtMTg5LDYgKzE4MiwxMCBAQCBwcml2YXRlOgogCiAgICAgbXV0YWJsZSBib29sIG1f
aXNNYWluQ29udGVudCB7IGZhbHNlIH07CiAgICAgVGltZXIgbV9tYWluQ29udGVudENoZWNrVGlt
ZXI7CisKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICBjb25zdCB2b2lkKiBtX2xvZ0lk
ZW50aWZpZXI7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uLmNw
cAppbmRleCAyN2FiMjI1ZjM4ZGE0NTBmYzg4ODRlNGM5M2M3Yzg1MTg3MDNhZTRkLi5mMmUxOTgy
N2I0NjU1YTkyMTdmNjI5ZTEzMTk4MTUyNzQ2Nzk4N2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb24uY3BwCkBAIC0zMSw0
MyArMzEsNTkgQEAKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXIu
aCIKICNpbmNsdWRlICJQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuaCIKKyNpbmNsdWRlIDx3
dGYvQ3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBzdGF0aWMgY29uc3QgU2Vjb25kcyBjbGllbnREYXRhQnVmZmVyaW5nVGltZXJUaHJvdHRs
ZURlbGF5IHsgMTAwX21zIH07CiAKLSNpZiAhTE9HX0RJU0FCTEVECi1zdGF0aWMgY29uc3QgY2hh
ciogc3RhdGVOYW1lKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpTdGF0ZSBzdGF0ZSkKLXsKLSNkZWZp
bmUgU1RBVEVfQ0FTRShzdGF0ZSkgY2FzZSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6c3RhdGU6IHJl
dHVybiAjc3RhdGUKLSAgICBzd2l0Y2ggKHN0YXRlKSB7Ci0gICAgU1RBVEVfQ0FTRShJZGxlKTsK
LSAgICBTVEFURV9DQVNFKEF1dG9wbGF5aW5nKTsKLSAgICBTVEFURV9DQVNFKFBsYXlpbmcpOwot
ICAgIFNUQVRFX0NBU0UoUGF1c2VkKTsKLSAgICBTVEFURV9DQVNFKEludGVycnVwdGVkKTsKLSAg
ICB9Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gIiI7CisjaWYgIVJF
TEVBU0VfTE9HX0RJU0FCTEVECitzdGF0aWMgdWludDY0X3QgbmV4dExvZ0lkZW50aWZpZXIoKQor
eworICAgIHN0YXRpYyB1aW50NjRfdCBsb2dJZGVudGlmaWVyID0gY3J5cHRvZ3JhcGhpY2FsbHlS
YW5kb21OdW1iZXIoKTsKKyAgICByZXR1cm4gKytsb2dJZGVudGlmaWVyOworfQorCitTdHJpbmcg
Y29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcoUGxhdGZvcm1NZWRpYVNlc3Npb246OlN0YXRlIHN0
YXRlKQoreworICAgIHN0YXRpYyBjb25zdCBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IHZhbHVlc1td
ID0geworICAgICAgICBNQUtFX1NUQVRJQ19TVFJJTkdfSU1QTCgiSWRsZSIpLAorICAgICAgICBN
QUtFX1NUQVRJQ19TVFJJTkdfSU1QTCgiQXV0b3BsYXlpbmciKSwKKyAgICAgICAgTUFLRV9TVEFU
SUNfU1RSSU5HX0lNUEwoIlBsYXlpbmciKSwKKyAgICAgICAgTUFLRV9TVEFUSUNfU1RSSU5HX0lN
UEwoIlBhdXNlZCIpLAorICAgICAgICBNQUtFX1NUQVRJQ19TVFJJTkdfSU1QTCgiSW50ZXJydXB0
ZWQiKSwKKyAgICB9OworICAgIHN0YXRpY19hc3NlcnQoIXN0YXRpY19jYXN0PHNpemVfdD4oUGxh
dGZvcm1NZWRpYVNlc3Npb246OklkbGUpLCAiUGxhdGZvcm1NZWRpYVNlc3Npb246OklkbGUgaXMg
bm90IDAgYXMgZXhwZWN0ZWQiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHNpemVf
dD4oUGxhdGZvcm1NZWRpYVNlc3Npb246OkF1dG9wbGF5aW5nID09IDEpLCAiUGxhdGZvcm1NZWRp
YVNlc3Npb246OkF1dG9wbGF5aW5nIGlzIG5vdCAxIGFzIGV4cGVjdGVkIik7CisgICAgc3RhdGlj
X2Fzc2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpQbGF5aW5n
ID09IDIpLCAiUGxhdGZvcm1NZWRpYVNlc3Npb246OlBsYXlpbmcgaXMgbm90IDIgYXMgZXhwZWN0
ZWQiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHNpemVfdD4oUGxhdGZvcm1NZWRp
YVNlc3Npb246OlBhdXNlZCA9PSAzKSwgIlBsYXRmb3JtTWVkaWFTZXNzaW9uOjpQYXVzZWQgaXMg
bm90IDMgYXMgZXhwZWN0ZWQiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHNpemVf
dD4oUGxhdGZvcm1NZWRpYVNlc3Npb246OkludGVycnVwdGVkID09IDQpLCAiUGxhdGZvcm1NZWRp
YVNlc3Npb246OkludGVycnVwdGVkIGlzIG5vdCA0IGFzIGV4cGVjdGVkIik7CisgICAgQVNTRVJU
KHN0YXRpY19jYXN0PHNpemVfdD4oc3RhdGUpIDwgV1RGX0FSUkFZX0xFTkdUSCh2YWx1ZXMpKTsK
KyAgICByZXR1cm4gdmFsdWVzW3N0YXRpY19jYXN0PHNpemVfdD4oc3RhdGUpXTsKK30KKworU3Ry
aW5nIGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpJbnRl
cnJ1cHRpb25UeXBlIHR5cGUpCit7CisgICAgc3RhdGljIGNvbnN0IE5ldmVyRGVzdHJveWVkPFN0
cmluZz4gdmFsdWVzW10gPSB7CisgICAgICAgIE1BS0VfU1RBVElDX1NUUklOR19JTVBMKCJOb0lu
dGVycnVwdGlvbiIpLAorICAgICAgICBNQUtFX1NUQVRJQ19TVFJJTkdfSU1QTCgiU3lzdGVtU2xl
ZXAiKSwKKyAgICAgICAgTUFLRV9TVEFUSUNfU1RSSU5HX0lNUEwoIkVudGVyaW5nQmFja2dyb3Vu
ZCIpLAorICAgICAgICBNQUtFX1NUQVRJQ19TVFJJTkdfSU1QTCgiU3lzdGVtSW50ZXJydXB0aW9u
IiksCisgICAgICAgIE1BS0VfU1RBVElDX1NUUklOR19JTVBMKCJTdXNwZW5kZWRVbmRlckxvY2si
KSwKKyAgICAgICAgTUFLRV9TVEFUSUNfU1RSSU5HX0lNUEwoIkludmlzaWJsZUF1dG9wbGF5Iiks
CisgICAgICAgIE1BS0VfU1RBVElDX1NUUklOR19JTVBMKCJQcm9jZXNzSW5hY3RpdmUiKSwKKyAg
ICB9OworICAgIHN0YXRpY19hc3NlcnQoIXN0YXRpY19jYXN0PHNpemVfdD4oUGxhdGZvcm1NZWRp
YVNlc3Npb246Ok5vSW50ZXJydXB0aW9uKSwgIlBsYXRmb3JtTWVkaWFTZXNzaW9uOjpOb0ludGVy
cnVwdGlvbiBpcyBub3QgMCBhcyBleHBlY3RlZCIpOworICAgIHN0YXRpY19hc3NlcnQoc3RhdGlj
X2Nhc3Q8c2l6ZV90PihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6U3lzdGVtU2xlZXAgPT0gMSksICJQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbjo6U3lzdGVtU2xlZXAgaXMgbm90IDEgYXMgZXhwZWN0ZWQiKTsK
KyAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHNpemVfdD4oUGxhdGZvcm1NZWRpYVNlc3Np
b246OkVudGVyaW5nQmFja2dyb3VuZCA9PSAyKSwgIlBsYXRmb3JtTWVkaWFTZXNzaW9uOjpFbnRl
cmluZ0JhY2tncm91bmQgaXMgbm90IDIgYXMgZXhwZWN0ZWQiKTsKKyAgICBzdGF0aWNfYXNzZXJ0
KHN0YXRpY19jYXN0PHNpemVfdD4oUGxhdGZvcm1NZWRpYVNlc3Npb246OlN5c3RlbUludGVycnVw
dGlvbiA9PSAzKSwgIlBsYXRmb3JtTWVkaWFTZXNzaW9uOjpTeXN0ZW1JbnRlcnJ1cHRpb24gaXMg
bm90IDMgYXMgZXhwZWN0ZWQiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHNpemVf
dD4oUGxhdGZvcm1NZWRpYVNlc3Npb246OlN1c3BlbmRlZFVuZGVyTG9jayA9PSA0KSwgIlBsYXRm
b3JtTWVkaWFTZXNzaW9uOjpTdXNwZW5kZWRVbmRlckxvY2sgaXMgbm90IDQgYXMgZXhwZWN0ZWQi
KTsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHNpemVfdD4oUGxhdGZvcm1NZWRpYVNl
c3Npb246OkludmlzaWJsZUF1dG9wbGF5ID09IDUpLCAiUGxhdGZvcm1NZWRpYVNlc3Npb246Oklu
dmlzaWJsZUF1dG9wbGF5IGlzIG5vdCA1IGFzIGV4cGVjdGVkIik7CisgICAgc3RhdGljX2Fzc2Vy
dChzdGF0aWNfY2FzdDxzaXplX3Q+KFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpQcm9jZXNzSW5hY3Rp
dmUgPT0gNiksICJQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UHJvY2Vzc0luYWN0aXZlIGlzIG5vdCA2
IGFzIGV4cGVjdGVkIik7CisgICAgQVNTRVJUKHN0YXRpY19jYXN0PHNpemVfdD4odHlwZSkgPCBX
VEZfQVJSQVlfTEVOR1RIKHZhbHVlcykpOworICAgIHJldHVybiB2YWx1ZXNbc3RhdGljX2Nhc3Q8
c2l6ZV90Pih0eXBlKV07CiB9CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBpbnRlcnJ1cHRpb25OYW1l
KFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpJbnRlcnJ1cHRpb25UeXBlIHR5cGUpCi17Ci0jZGVmaW5l
IElOVEVSUlVQVElPTl9DQVNFKHR5cGUpIGNhc2UgUGxhdGZvcm1NZWRpYVNlc3Npb246OnR5cGU6
IHJldHVybiAjdHlwZQotICAgIHN3aXRjaCAodHlwZSkgewotICAgIElOVEVSUlVQVElPTl9DQVNF
KE5vSW50ZXJydXB0aW9uKTsKLSAgICBJTlRFUlJVUFRJT05fQ0FTRShTeXN0ZW1TbGVlcCk7Ci0g
ICAgSU5URVJSVVBUSU9OX0NBU0UoRW50ZXJpbmdCYWNrZ3JvdW5kKTsKLSAgICBJTlRFUlJVUFRJ
T05fQ0FTRShTeXN0ZW1JbnRlcnJ1cHRpb24pOwotICAgIElOVEVSUlVQVElPTl9DQVNFKFN1c3Bl
bmRlZFVuZGVyTG9jayk7Ci0gICAgSU5URVJSVVBUSU9OX0NBU0UoSW52aXNpYmxlQXV0b3BsYXkp
OwotICAgIElOVEVSUlVQVElPTl9DQVNFKFByb2Nlc3NJbmFjdGl2ZSk7Ci0gICAgfQotICAgIAot
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiAiIjsKLX0KICNlbmRpZgogCiBz
dGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1NZWRpYVNlc3Npb24+IFBsYXRmb3JtTWVkaWFTZXNzaW9u
OjpjcmVhdGUoUGxhdGZvcm1NZWRpYVNlc3Npb25DbGllbnQmIGNsaWVudCkKQEAgLTgxLDYgKzk3
LDEwIEBAIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbihQbGF0Zm9y
bU1lZGlhU2Vzc2lvbkNsaWVudCYgY2xpZW50KQogICAgICwgbV9zdGF0ZShJZGxlKQogICAgICwg
bV9zdGF0ZVRvUmVzdG9yZShJZGxlKQogICAgICwgbV9ub3RpZnlpbmdDbGllbnQoZmFsc2UpCisj
aWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgLCBtX2xvZ2dlcihjbGllbnQuaG9zdGluZ0Rv
Y3VtZW50KCktPmxvZ2dlcigpKQorICAgICwgbV9sb2dJZGVudGlmaWVyKG5leHRMb2dJZGVudGlm
aWVyKCkpCisjZW5kaWYKIHsKICAgICBBU1NFUlQobV9jbGllbnQubWVkaWFUeXBlKCkgPj0gTm9u
ZSAmJiBtX2NsaWVudC5tZWRpYVR5cGUoKSA8PSBNZWRpYVN0cmVhbUNhcHR1cmluZ0F1ZGlvKTsK
ICAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5hZGRTZXNz
aW9uKCp0aGlzKTsKQEAgLTkzLDEzICsxMTMsMTMgQEAgUGxhdGZvcm1NZWRpYVNlc3Npb246On5Q
bGF0Zm9ybU1lZGlhU2Vzc2lvbigpCiAKIHZvaWQgUGxhdGZvcm1NZWRpYVNlc3Npb246OnNldFN0
YXRlKFN0YXRlIHN0YXRlKQogewotICAgIExPRyhNZWRpYSwgIlBsYXRmb3JtTWVkaWFTZXNzaW9u
OjpzZXRTdGF0ZSglcCkgLSAlcyIsIHRoaXMsIHN0YXRlTmFtZShzdGF0ZSkpOworICAgIElORk9f
TE9HKExPR0lERU5USUZJRVIsIHN0YXRlKTsKICAgICBtX3N0YXRlID0gc3RhdGU7CiB9CiAKIHZv
aWQgUGxhdGZvcm1NZWRpYVNlc3Npb246OmJlZ2luSW50ZXJydXB0aW9uKEludGVycnVwdGlvblR5
cGUgdHlwZSkKIHsKLSAgICBMT0coTWVkaWEsICJQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6YmVnaW5J
bnRlcnJ1cHRpb24oJXApLCBzdGF0ZSA9ICVzLCBpbnRlcnJ1cHRpb24gdHlwZSA9ICVzLCBpbnRl
cnJ1cHRpb24gY291bnQgPSAlaSIsIHRoaXMsIHN0YXRlTmFtZShtX3N0YXRlKSwgaW50ZXJydXB0
aW9uTmFtZSh0eXBlKSwgbV9pbnRlcnJ1cHRpb25Db3VudCk7CisgICAgSU5GT19MT0coTE9HSURF
TlRJRklFUiwgInN0YXRlID0gIiwgbV9zdGF0ZSwgIiwgaW50ZXJydXB0aW9uIHR5cGUgPSAiLCB0
eXBlLCAiLCBpbnRlcnJ1cHRpb24gY291bnQgPSAiLCBtX2ludGVycnVwdGlvbkNvdW50KTsKIAog
ICAgIC8vIFdoZW4gaW50ZXJydXB0aW9ucyBhcmUgb3ZlcnJpZGRlbiwgbV9pbnRlcnJ1cHRpb25U
eXBlIGRvZXNuJ3QgZ2V0IHNldC4KICAgICAvLyBHaXZlIG5lc3RlZCBpbnRlcnJ1cHRpb25zIGEg
Y2hhbmNlIHdoZW4gdGhlIHByZXZpb3VzIGludGVycnVwdGlvbnMgd2VyZSBvdmVycmlkZGVuLgpA
QCAtMTA3LDcgKzEyNyw3IEBAIHZvaWQgUGxhdGZvcm1NZWRpYVNlc3Npb246OmJlZ2luSW50ZXJy
dXB0aW9uKEludGVycnVwdGlvblR5cGUgdHlwZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYg
KGNsaWVudCgpLnNob3VsZE92ZXJyaWRlQmFja2dyb3VuZFBsYXliYWNrUmVzdHJpY3Rpb24odHlw
ZSkpIHsKLSAgICAgICAgTE9HKE1lZGlhLCAiUGxhdGZvcm1NZWRpYVNlc3Npb246OmJlZ2luSW50
ZXJydXB0aW9uKCVwKSwgcmV0dXJuaW5nIGVhcmx5IGJlY2F1c2UgY2xpZW50IHNheXMgdG8gb3Zl
cnJpZGUgaW50ZXJydXB0aW9uIiwgdGhpcyk7CisgICAgICAgIElORk9fTE9HKExPR0lERU5USUZJ
RVIsICJyZXR1cm5pbmcgZWFybHkgYmVjYXVzZSBjbGllbnQgc2F5cyB0byBvdmVycmlkZSBpbnRl
cnJ1cHRpb24iKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTIxLDEwICsxNDEsMTAg
QEAgdm9pZCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6YmVnaW5JbnRlcnJ1cHRpb24oSW50ZXJydXB0
aW9uVHlwZSB0eXBlKQogCiB2b2lkIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjplbmRJbnRlcnJ1cHRp
b24oRW5kSW50ZXJydXB0aW9uRmxhZ3MgZmxhZ3MpCiB7Ci0gICAgTE9HKE1lZGlhLCAiUGxhdGZv
cm1NZWRpYVNlc3Npb246OmVuZEludGVycnVwdGlvbiglcCkgLSBmbGFncyA9ICVpLCBzdGF0ZVRv
UmVzdG9yZSA9ICVzLCBpbnRlcnJ1cHRpb24gY291bnQgPSAlaSIsIHRoaXMsIChpbnQpZmxhZ3Ms
IHN0YXRlTmFtZShtX3N0YXRlVG9SZXN0b3JlKSwgbV9pbnRlcnJ1cHRpb25Db3VudCk7CisgICAg
SU5GT19MT0coTE9HSURFTlRJRklFUiwgImZsYWdzID0gIiwgKGludClmbGFncywgIiwgc3RhdGVU
b1Jlc3RvcmUgPSAiLCBtX3N0YXRlVG9SZXN0b3JlLCAiLCBpbnRlcnJ1cHRpb24gY291bnQgPSAi
LCBtX2ludGVycnVwdGlvbkNvdW50KTsKIAogICAgIGlmICghbV9pbnRlcnJ1cHRpb25Db3VudCkg
ewotICAgICAgICBMT0coTWVkaWEsICJQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6ZW5kSW50ZXJydXB0
aW9uKCVwKSAtICEhIGlnbm9yaW5nIHNwdXJpb3VzIGludGVycnVwdGlvbiBlbmQgISEiLCB0aGlz
KTsKKyAgICAgICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwgIiEhIGlnbm9yaW5nIHNwdXJpb3Vz
IGludGVycnVwdGlvbiBlbmQgISEiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTQ4
LDEwICsxNjgsMTAgQEAgdm9pZCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Y2xpZW50V2lsbEJlZ2lu
QXV0b3BsYXlpbmcoKQogICAgIGlmIChtX25vdGlmeWluZ0NsaWVudCkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgTE9HKE1lZGlhLCAiUGxhdGZvcm1NZWRpYVNlc3Npb246OmNsaWVudFdpbGxCZWdp
bkF1dG9wbGF5aW5nKCVwKS0gc3RhdGUgPSAlcyIsIHRoaXMsIHN0YXRlTmFtZShtX3N0YXRlKSk7
CisgICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwgInN0YXRlID0gIiwgbV9zdGF0ZSk7CiAgICAg
aWYgKHN0YXRlKCkgPT0gSW50ZXJydXB0ZWQpIHsKICAgICAgICAgbV9zdGF0ZVRvUmVzdG9yZSA9
IEF1dG9wbGF5aW5nOwotICAgICAgICBMT0coTWVkaWEsICIgICAgICBzZXR0aW5nIHN0YXRlVG9S
ZXN0b3JlIHRvIFwiQXV0b3BsYXlpbmdcIiIpOworICAgICAgICBJTkZPX0xPRyhMT0dJREVOVElG
SUVSLCAiICAgICAgc2V0dGluZyBzdGF0ZVRvUmVzdG9yZSB0byBcIkF1dG9wbGF5aW5nXCIiKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTgwLDEwICsyMDAsMTAgQEAgYm9vbCBQbGF0
Zm9ybU1lZGlhU2Vzc2lvbjo6Y2xpZW50V2lsbFBhdXNlUGxheWJhY2soKQogICAgIGlmIChtX25v
dGlmeWluZ0NsaWVudCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBMT0coTWVkaWEsICJQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Y2xpZW50V2lsbFBhdXNlUGxheWJhY2soJXApLSBzdGF0ZSA9
ICVzIiwgdGhpcywgc3RhdGVOYW1lKG1fc3RhdGUpKTsKKyAgICBJTkZPX0xPRyhMT0dJREVOVElG
SUVSLCAic3RhdGUgPSAiLCBtX3N0YXRlKTsKICAgICBpZiAoc3RhdGUoKSA9PSBJbnRlcnJ1cHRl
ZCkgewogICAgICAgICBtX3N0YXRlVG9SZXN0b3JlID0gUGF1c2VkOwotICAgICAgICBMT0coTWVk
aWEsICIgICAgICBzZXR0aW5nIHN0YXRlVG9SZXN0b3JlIHRvIFwiUGF1c2VkXCIiKTsKKyAgICAg
ICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwgIiAgICAgIHNldHRpbmcgc3RhdGVUb1Jlc3RvcmUg
dG8gXCJQYXVzZWRcIiIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIApAQCAt
MTk1LDEzICsyMTUsMTMgQEAgYm9vbCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Y2xpZW50V2lsbFBh
dXNlUGxheWJhY2soKQogCiB2b2lkIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpwYXVzZVNlc3Npb24o
KQogewotICAgIExPRyhNZWRpYSwgIlBsYXRmb3JtTWVkaWFTZXNzaW9uOjpwYXVzZVNlc3Npb24o
JXApIiwgdGhpcyk7CisgICAgSU5GT19MT0coTE9HSURFTlRJRklFUik7CiAgICAgbV9jbGllbnQu
c3VzcGVuZFBsYXliYWNrKCk7CiB9CiAKIHZvaWQgUGxhdGZvcm1NZWRpYVNlc3Npb246OnN0b3BT
ZXNzaW9uKCkKIHsKLSAgICBMT0coTWVkaWEsICJQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6c3RvcFNl
c3Npb24oJXApIiwgdGhpcyk7CisgICAgSU5GT19MT0coTE9HSURFTlRJRklFUik7CiAgICAgbV9j
bGllbnQuc3VzcGVuZFBsYXliYWNrKCk7CiAgICAgUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2Vy
OjpzaGFyZWRNYW5hZ2VyKCkucmVtb3ZlU2Vzc2lvbigqdGhpcyk7CiB9CkBAIC0yNjYsNyArMjg2
LDcgQEAgdm9pZCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6c2NoZWR1bGVDbGllbnREYXRhQnVmZmVy
aW5nQ2hlY2soKQogCiB2b2lkIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpjbGllbnREYXRhQnVmZmVy
aW5nVGltZXJGaXJlZCgpCiB7Ci0gICAgTE9HKE1lZGlhLCAiUGxhdGZvcm1NZWRpYVNlc3Npb246
OmNsaWVudERhdGFCdWZmZXJpbmdUaW1lckZpcmVkKCVwKS0gdmlzaWJsZSA9ICVzIiwgdGhpcywg
bV9jbGllbnQuZWxlbWVudElzSGlkZGVuKCkgPyAiZmFsc2UiIDogInRydWUiKTsKKyAgICBJTkZP
X0xPRyhMT0dJREVOVElGSUVSLCAidmlzaWJsZSA9ICIsIG1fY2xpZW50LmVsZW1lbnRJc0hpZGRl
bigpKTsKIAogICAgIHVwZGF0ZUNsaWVudERhdGFCdWZmZXJpbmcoKTsKIApAQCAtMzcwLDUgKzM5
MCwxMyBAQCB2b2lkIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpjbGllbnRDaGFyYWN0ZXJpc3RpY3ND
aGFuZ2VkKCkKICAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIo
KS5jbGllbnRDaGFyYWN0ZXJpc3RpY3NDaGFuZ2VkKCp0aGlzKTsKIH0KIAorI2lmICFSRUxFQVNF
X0xPR19ESVNBQkxFRAorV1RGTG9nQ2hhbm5lbCYgUGxhdGZvcm1NZWRpYVNlc3Npb246OmxvZ0No
YW5uZWwoKSBjb25zdAoreworICAgIHJldHVybiBMb2dNZWRpYTsKK30KKyNlbmRpZgorCiB9CisK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZv
cm1NZWRpYVNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3Jt
TWVkaWFTZXNzaW9uLmgKaW5kZXggZWM1OGFiNjBiNDBhZmNiYTI2YmE5YTViNmM3ODcwMzE0OTFl
MmFkNy4uODM4ZTM0NzM3YmRjZTdkNGUzODliODIwOTI1MzFiYzg0NjA0ZWIwZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb24uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5o
CkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIFBsYXRmb3JtTWVkaWFTZXNzaW9uX2gKIAogI2lu
Y2x1ZGUgIlRpbWVyLmgiCisjaW5jbHVkZSA8d3RmL0xvZ2dlckhlbHBlci5oPgogI2luY2x1ZGUg
PHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBA
IC00NCw2ICs0NSw5IEBAIGNsYXNzIFBsYXRmb3JtTWVkaWFTZXNzaW9uCiAjaWYgRU5BQkxFKFdJ
UkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKICAgICA6IHB1YmxpYyBNZWRpYVBsYXliYWNrVGFyZ2V0
Q2xpZW50CiAjZW5kaWYKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICAsIHByaXZhdGUg
TG9nZ2VySGVscGVyCisjZW5kaWYKIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVf
cHRyPFBsYXRmb3JtTWVkaWFTZXNzaW9uPiBjcmVhdGUoUGxhdGZvcm1NZWRpYVNlc3Npb25DbGll
bnQmKTsKQEAgLTE3Niw2ICsxODAsMTMgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIFBsYXRm
b3JtTWVkaWFTZXNzaW9uQ2xpZW50JiBjbGllbnQoKSBjb25zdCB7IHJldHVybiBtX2NsaWVudDsg
fQogCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgY29uc3QgTG9nZ2VyJiBsb2dnZXIo
KSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2xvZ2dlci5nZXQoKTsgfQorICAgIGNvbnN0IHZvaWQq
IGxvZ0lkZW50aWZpZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiByZWludGVycHJldF9jYXN0
PGNvbnN0IHZvaWQqPihtX2xvZ0lkZW50aWZpZXIpOyB9CisgICAgY29uc3QgY2hhciogbG9nQ2xh
c3NOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlBsYXRmb3JtTWVkaWFTZXNzaW9uIjsg
fQorICAgIFdURkxvZ0NoYW5uZWwmIGxvZ0NoYW5uZWwoKSBjb25zdCBmaW5hbDsKKyNlbmRpZgor
CiBwcml2YXRlOgogICAgIHZvaWQgY2xpZW50RGF0YUJ1ZmZlcmluZ1RpbWVyRmlyZWQoKTsKICAg
ICB2b2lkIHVwZGF0ZUNsaWVudERhdGFCdWZmZXJpbmcoKTsKQEAgLTE4OSw2ICsyMDAsMTEgQEAg
cHJpdmF0ZToKICAgICBib29sIG1fbm90aWZ5aW5nQ2xpZW50OwogICAgIGJvb2wgbV9pc1BsYXlp
bmdUb1dpcmVsZXNzUGxheWJhY2tUYXJnZXQgeyBmYWxzZSB9OwogCisjaWYgIVJFTEVBU0VfTE9H
X0RJU0FCTEVECisgICAgUmVmPGNvbnN0IExvZ2dlcj4gbV9sb2dnZXI7CisgICAgdWludDY0X3Qg
bV9sb2dJZGVudGlmaWVyOworI2VuZGlmCisKICAgICBmcmllbmQgY2xhc3MgUGxhdGZvcm1NZWRp
YVNlc3Npb25NYW5hZ2VyOwogfTsKIApAQCAtMjMwLDcgKzI0Niw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIGJvb2wgaXNQbGF5aW5nVG9XaXJlbGVzc1BsYXliYWNrVGFyZ2V0KCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0U2hvdWxkUGxheVRvUGxheWJhY2tU
YXJnZXQoYm9vbCkgeyB9CiAKLSAgICB2aXJ0dWFsIGNvbnN0IERvY3VtZW50KiBob3N0aW5nRG9j
dW1lbnQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBEb2N1bWVudCogaG9zdGluZ0RvY3VtZW50
KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgU3RyaW5nIHNvdXJjZUFwcGxpY2F0aW9uSWRlbnRp
ZmllcigpIGNvbnN0ID0gMDsKIAogICAgIHZpcnR1YWwgYm9vbCBwcm9jZXNzaW5nVXNlckdlc3R1
cmVGb3JNZWRpYSgpIGNvbnN0ID0gMDsKQEAgLTIzOSw2ICsyNTUsMzIgQEAgcHJvdGVjdGVkOgog
ICAgIHZpcnR1YWwgflBsYXRmb3JtTWVkaWFTZXNzaW9uQ2xpZW50KCkgPSBkZWZhdWx0OwogfTsK
IAorU3RyaW5nIGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKFBsYXRmb3JtTWVkaWFTZXNzaW9u
OjpTdGF0ZSk7CitTdHJpbmcgY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcoUGxhdGZvcm1NZWRp
YVNlc3Npb246OkludGVycnVwdGlvblR5cGUpOworCiB9CiAKK25hbWVzcGFjZSBXVEYgeworCit0
ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlPgorc3RydWN0IExvZ0FyZ3VtZW50OworCit0ZW1wbGF0ZSA8
Pgorc3RydWN0IExvZ0FyZ3VtZW50PFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uOjpTdGF0
ZT4geworICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoY29uc3QgV2ViQ29yZTo6UGxhdGZvcm1N
ZWRpYVNlc3Npb246OlN0YXRlIHN0YXRlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGNvbnZlcnRF
bnVtZXJhdGlvblRvU3RyaW5nKHN0YXRlKTsKKyAgICB9Cit9OworCit0ZW1wbGF0ZSA8Pgorc3Ry
dWN0IExvZ0FyZ3VtZW50PFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uOjpJbnRlcnJ1cHRp
b25UeXBlPiB7CisgICAgc3RhdGljIFN0cmluZyB0b1N0cmluZyhjb25zdCBXZWJDb3JlOjpQbGF0
Zm9ybU1lZGlhU2Vzc2lvbjo6SW50ZXJydXB0aW9uVHlwZSBzdGF0ZSkKKyAgICB7CisgICAgICAg
IHJldHVybiBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhzdGF0ZSk7CisgICAgfQorfTsKKwor
fSAvLyBuYW1lc3BhY2UgV1RGCisKICNlbmRpZiAvLyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbl9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>340044</attachid>
            <date>2018-05-09 15:36:11 -0700</date>
            <delta_ts>2018-05-09 16:02:34 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-185376-20180509153610.patch</filename>
            <type>text/plain</type>
            <size>37241</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMxNDM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjIwZDUyYjRkMDJhMmJi
YzEyNmQ4NWViNGNiNmI1M2RmMjNhNjBmMC4uMGNjYjQ2YzU5ZWQ2MDY4ZGRkOTExOWMxNzQzOTNi
OTllMTRmNzkyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDE4LTA1LTA3ICBFcmlj
IENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFVwZGF0ZSBNZWRp
YVNlc3Npb24gdG8gdXNlIHJlbGVhc2UgbG9nZ2luZworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg1Mzc2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80
MDAyMjIwMz4KKworICAgICAgICBSZXZpZXdlZCBieSBZb3Vlbm4gRmFibGV0LgorCisgICAgICAg
IE5vIG5ldyB0ZXN0cywgdGVzdGVkIG1hbnVhbGx5LgorCisgICAgICAgICogTW9kdWxlcy9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbS5oOiBob3N0aW5nRG9jdW1lbnQoKSBkb2Vzbid0IG5lZWQgdG8g
cmV0dXJuIGEgY29uc3QgRG9jdW1lbnQuCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRp
b0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0Ojpob3N0aW5nRG9j
dW1lbnQgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29u
dGV4dC5oOgorCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6IERpdHRvLgorCisg
ICAgICAgICogaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhRWxlbWVudFNlc3Npb246Ok1lZGlhRWxlbWVudFNlc3Npb24pOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFFbGVtZW50U2Vzc2lvbjo6YWRkQmVoYXZpb3JSZXN0cmljdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYUVsZW1lbnRTZXNzaW9uOjpyZW1vdmVCZWhhdmlvclJlc3RyaWN0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRWxlbWVudFNlc3Npb246OmRhdGFMb2FkaW5n
UGVybWl0dGVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRWxlbWVudFNlc3Npb246
OmZ1bGxzY3JlZW5QZXJtaXR0ZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbGVt
ZW50U2Vzc2lvbjo6cGFnZUFsbG93c0RhdGFMb2FkaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhRWxlbWVudFNlc3Npb246OnBhZ2VBbGxvd3NQbGF5YmFja0FmdGVyUmVzdW1pbmcg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbGVtZW50U2Vzc2lvbjo6Y2FuU2hvd0Nv
bnRyb2xzTWFuYWdlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVsZW1lbnRTZXNz
aW9uOjpzaG93UGxheWJhY2tUYXJnZXRQaWNrZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFF
bGVtZW50U2Vzc2lvbjo6aGFzV2lyZWxlc3NQbGF5YmFja1RhcmdldHMgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFFbGVtZW50U2Vzc2lvbjo6d2lyZWxlc3NWaWRlb1BsYXliYWNrRGlz
YWJsZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbGVtZW50U2Vzc2lvbjo6c2V0
V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFF
bGVtZW50U2Vzc2lvbjo6c2V0SGFzUGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlMaXN0ZW5lcnMp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbGVtZW50U2Vzc2lvbjo6ZXh0ZXJuYWxPdXRwdXRE
ZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbGVtZW50
U2Vzc2lvbjo6c2V0U2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFFbGVtZW50U2Vzc2lvbjo6bWVkaWFFbmdpbmVVcGRhdGVkKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhRWxlbWVudFNlc3Npb246OndpbGxMb2cgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFFbGVtZW50U2Vzc2lvbjo6bG9nZ2VyIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRWxlbWVudFNlc3Npb246OmxvZ0lkZW50aWZpZXIg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbGVtZW50U2Vzc2lvbjo6
bG9nQ2hhbm5lbCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogaHRtbC9NZWRpYUVsZW1lbnRT
ZXNzaW9uLmg6CisKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpuZXh0TG9nSWRlbnRpZmllcik6CisgICAgICAgIChX
ZWJDb3JlOjpjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UGxhdGZvcm1NZWRpYVNlc3Npb24pOgorICAgICAgICAoV2Vi
Q29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb246OnNldFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtTWVkaWFTZXNzaW9uOjpiZWdpbkludGVycnVwdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6ZW5kSW50ZXJydXB0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uOjpjbGllbnRXaWxsQmVnaW5BdXRvcGxheWluZyk6
CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Y2xpZW50V2lsbFBhdXNl
UGxheWJhY2spOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb246OnBhdXNl
U2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6c3RvcFNl
c3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb246OmNsaWVudERh
dGFCdWZmZXJpbmdUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFT
ZXNzaW9uOjpsb2dDaGFubmVsIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OnN0YXRlTmFtZSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjppbnRlcnJ1cHRpb25OYW1lKTogRGVsZXRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5oOgorICAgICAg
ICAoV1RGOjpMb2dBcmd1bWVudDxXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6U3RhdGU+
Ojp0b1N0cmluZyk6CisgICAgICAgIChXVEY6OkxvZ0FyZ3VtZW50PFdlYkNvcmU6OlBsYXRmb3Jt
TWVkaWFTZXNzaW9uOjpJbnRlcnJ1cHRpb25UeXBlPjo6dG9TdHJpbmcpOgorCiAyMDE4LTA1LTA2
ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQ10gQWRkIGFz
c2VydGlvbnMgZm9yIHN0YWxlIERpc3BsYXk6OkJveCBnZW9tZXRyeQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5oCmluZGV4IGY2NWQwNmQ2OTAw
NzM3MDE4NmQ3NDk2NGZlZWVhYWMxMjllMzhiNGEuLjFjMWFlMTFiODBlMDBiNTczYzMzZWMyNGMz
OTQ1MTE1ODY2ZWE0NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vTWVkaWFTdHJlYW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtLmgKQEAgLTE1MSw3ICsxNTEsNyBAQCBwcml2YXRlOgogICAgIGJvb2wg
c2hvdWxkT3ZlcnJpZGVCYWNrZ3JvdW5kUGxheWJhY2tSZXN0cmljdGlvbihQbGF0Zm9ybU1lZGlh
U2Vzc2lvbjo6SW50ZXJydXB0aW9uVHlwZSkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0K
ICAgICBTdHJpbmcgc291cmNlQXBwbGljYXRpb25JZGVudGlmaWVyKCkgY29uc3QgZmluYWw7CiAg
ICAgYm9vbCBjYW5Qcm9kdWNlQXVkaW8oKSBjb25zdCBmaW5hbDsKLSAgICBjb25zdCBEb2N1bWVu
dCogaG9zdGluZ0RvY3VtZW50KCkgY29uc3QgZmluYWwgeyByZXR1cm4gZG9jdW1lbnQoKTsgfQor
ICAgIERvY3VtZW50KiBob3N0aW5nRG9jdW1lbnQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBkb2N1
bWVudCgpOyB9CiAgICAgYm9vbCBwcm9jZXNzaW5nVXNlckdlc3R1cmVGb3JNZWRpYSgpIGNvbnN0
IGZpbmFsOwogCiAgICAgLy8gQWN0aXZlRE9NT2JqZWN0IEFQSS4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcAppbmRleCAyYzc0MTBkZmQ3NDdi
MDY0ODNiNTNiYjExY2E3MWNhZjg0ZmJkNTM0Li4xYzBkNDhmNzYxMTc2MDRiZGY3Mjc5MGI1NTI3
NDRlYzNkMjJkNjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb0NvbnRleHQuY3BwCkBAIC0zNDMsNyArMzQzLDcgQEAgRG9jdW1lbnQqIEF1ZGlvQ29udGV4
dDo6ZG9jdW1lbnQoKSBjb25zdAogICAgIHJldHVybiBkb3duY2FzdDxEb2N1bWVudD4obV9zY3Jp
cHRFeGVjdXRpb25Db250ZXh0KTsKIH0KIAotY29uc3QgRG9jdW1lbnQqIEF1ZGlvQ29udGV4dDo6
aG9zdGluZ0RvY3VtZW50KCkgY29uc3QKK0RvY3VtZW50KiBBdWRpb0NvbnRleHQ6Omhvc3RpbmdE
b2N1bWVudCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGRvd25jYXN0PERvY3VtZW50PihtX3Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9Db250ZXh0LmgKaW5kZXggMmI4YTJiMTA4Y2QwZDFhZGZlOGZiOTEyYmZlZDJkM2Y5
YTFjODMzZi4uZTVlNjVjMDc4ZTgwZWJiZmQxMmY5YTczYTVmNzdmN2Q2YjRlM2E0NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oCkBAIC04OSw3
ICs4OSw3IEBAIHB1YmxpYzoKIAogICAgIERvY3VtZW50KiBkb2N1bWVudCgpIGNvbnN0OyAvLyBB
U1NFUlRzIGlmIGRvY3VtZW50IG5vIGxvbmdlciBleGlzdHMuCiAKLSAgICBjb25zdCBEb2N1bWVu
dCogaG9zdGluZ0RvY3VtZW50KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgRG9jdW1lbnQqIGhvc3Rp
bmdEb2N1bWVudCgpIGNvbnN0IGZpbmFsOwogCiAgICAgQXVkaW9EZXN0aW5hdGlvbk5vZGUqIGRl
c3RpbmF0aW9uKCkgeyByZXR1cm4gbV9kZXN0aW5hdGlvbk5vZGUuZ2V0KCk7IH0KICAgICBzaXpl
X3QgY3VycmVudFNhbXBsZUZyYW1lKCkgY29uc3QgeyByZXR1cm4gbV9kZXN0aW5hdGlvbk5vZGUt
PmN1cnJlbnRTYW1wbGVGcmFtZSgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5oCmluZGV4IGJhOWY1OWE3N2MyN2JiOWU3MzgzOTdlM2JhZjVhZTA2NDhiMDA1MDMuLjRkMTQ2
OGRjNzU3YmNmZThmYTIwN2YwZmNiOGIwMmI2MDk3ZTM5MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5oCkBAIC0xOTgsNyArMTk4LDcgQEAgcHVibGljOgogICAgIAogICAg
IGJvb2wgaW5BY3RpdmVEb2N1bWVudCgpIGNvbnN0IHsgcmV0dXJuIG1faW5BY3RpdmVEb2N1bWVu
dDsgfQogCi0gICAgY29uc3QgRG9jdW1lbnQqIGhvc3RpbmdEb2N1bWVudCgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuICZkb2N1bWVudCgpOyB9CisgICAgRG9jdW1lbnQqIGhvc3RpbmdEb2N1bWVu
dCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICZkb2N1bWVudCgpOyB9CiAKIC8vIERPTSBBUEkKIC8v
IGVycm9yIHN0YXRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRWxlbWVu
dFNlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmNw
cAppbmRleCA2NzI4YWY1YmM0MmRkNWYyMjI4MjQ2ODYyMDgyODM3ZGRhMmNhZGU3Li4zNGIzZTg2
YzJmYzIzMjdhNzMwZTU0MWExMjQ3YmI0YjUzMTBjODM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL01lZGlhRWxlbWVudFNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5jcHAKQEAgLTYxLDggKzYxLDggQEAgc3RhdGljIGNvbnN0
IFNlY29uZHMgZWxlbWVudE1haW5Db250ZW50Q2hlY2tJbnRlcnZhbCB7IDI1MF9tcyB9Owogc3Rh
dGljIGJvb2wgaXNFbGVtZW50UmVjdE1vc3RseUluTWFpbkZyYW1lKGNvbnN0IEhUTUxNZWRpYUVs
ZW1lbnQmKTsKIHN0YXRpYyBib29sIGlzRWxlbWVudExhcmdlRW5vdWdoRm9yTWFpbkNvbnRlbnQo
Y29uc3QgSFRNTE1lZGlhRWxlbWVudCYsIE1lZGlhU2Vzc2lvbk1haW5Db250ZW50UHVycG9zZSk7
CiAKLSNpZiAhTE9HX0RJU0FCTEVECi1zdGF0aWMgU3RyaW5nIHJlc3RyaWN0aW9uTmFtZShNZWRp
YUVsZW1lbnRTZXNzaW9uOjpCZWhhdmlvclJlc3RyaWN0aW9ucyByZXN0cmljdGlvbikKKyNpZiAh
UkVMRUFTRV9MT0dfRElTQUJMRUQKK3N0YXRpYyBTdHJpbmcgcmVzdHJpY3Rpb25OYW1lcyhNZWRp
YUVsZW1lbnRTZXNzaW9uOjpCZWhhdmlvclJlc3RyaWN0aW9ucyByZXN0cmljdGlvbikKIHsKICAg
ICBTdHJpbmdCdWlsZGVyIHJlc3RyaWN0aW9uQnVpbGRlcjsKICNkZWZpbmUgQ0FTRShyZXN0cmlj
dGlvblR5cGUpIFwKQEAgLTcyLDE5ICs3MiwyMyBAQCBzdGF0aWMgU3RyaW5nIHJlc3RyaWN0aW9u
TmFtZShNZWRpYUVsZW1lbnRTZXNzaW9uOjpCZWhhdmlvclJlc3RyaWN0aW9ucyByZXN0cmljdAog
ICAgICAgICByZXN0cmljdGlvbkJ1aWxkZXIuYXBwZW5kKCNyZXN0cmljdGlvblR5cGUpOyBcCiAg
ICAgfSBcCiAKLSAgICBDQVNFKE5vUmVzdHJpY3Rpb25zKTsKLSAgICBDQVNFKFJlcXVpcmVVc2Vy
R2VzdHVyZUZvckxvYWQpOwotICAgIENBU0UoUmVxdWlyZVVzZXJHZXN0dXJlRm9yVmlkZW9SYXRl
Q2hhbmdlKTsKLSAgICBDQVNFKFJlcXVpcmVVc2VyR2VzdHVyZUZvckF1ZGlvUmF0ZUNoYW5nZSk7
Ci0gICAgQ0FTRShSZXF1aXJlVXNlckdlc3R1cmVGb3JGdWxsc2NyZWVuKTsKLSAgICBDQVNFKFJl
cXVpcmVQYWdlQ29uc2VudFRvTG9hZE1lZGlhKTsKLSAgICBDQVNFKFJlcXVpcmVQYWdlQ29uc2Vu
dFRvUmVzdW1lTWVkaWEpOwotI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCi0g
ICAgQ0FTRShSZXF1aXJlVXNlckdlc3R1cmVUb1Nob3dQbGF5YmFja1RhcmdldFBpY2tlcik7Ci0g
ICAgQ0FTRShXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCk7Ci0jZW5kaWYKLSAgICBDQVNF
KEludmlzaWJsZUF1dG9wbGF5Tm90UGVybWl0dGVkKTsKLSAgICBDQVNFKE92ZXJyaWRlVXNlckdl
c3R1cmVSZXF1aXJlbWVudEZvck1haW5Db250ZW50KTsKKyAgICBDQVNFKE5vUmVzdHJpY3Rpb25z
KQorICAgIENBU0UoUmVxdWlyZVVzZXJHZXN0dXJlRm9yTG9hZCkKKyAgICBDQVNFKFJlcXVpcmVV
c2VyR2VzdHVyZUZvclZpZGVvUmF0ZUNoYW5nZSkKKyAgICBDQVNFKFJlcXVpcmVVc2VyR2VzdHVy
ZUZvckF1ZGlvUmF0ZUNoYW5nZSkKKyAgICBDQVNFKFJlcXVpcmVVc2VyR2VzdHVyZUZvckZ1bGxz
Y3JlZW4pCisgICAgQ0FTRShSZXF1aXJlUGFnZUNvbnNlbnRUb0xvYWRNZWRpYSkKKyAgICBDQVNF
KFJlcXVpcmVQYWdlQ29uc2VudFRvUmVzdW1lTWVkaWEpCisgICAgQ0FTRShSZXF1aXJlVXNlckdl
c3R1cmVUb1Nob3dQbGF5YmFja1RhcmdldFBpY2tlcikKKyAgICBDQVNFKFdpcmVsZXNzVmlkZW9Q
bGF5YmFja0Rpc2FibGVkKQorICAgIENBU0UoUmVxdWlyZVVzZXJHZXN0dXJlVG9BdXRvcGxheVRv
RXh0ZXJuYWxEZXZpY2UpCisgICAgQ0FTRShNZXRhZGF0YVByZWxvYWRpbmdOb3RQZXJtaXR0ZWQp
CisgICAgQ0FTRShBdXRvUHJlbG9hZGluZ05vdFBlcm1pdHRlZCkKKyAgICBDQVNFKEludmlzaWJs
ZUF1dG9wbGF5Tm90UGVybWl0dGVkKQorICAgIENBU0UoT3ZlcnJpZGVVc2VyR2VzdHVyZVJlcXVp
cmVtZW50Rm9yTWFpbkNvbnRlbnQpCisgICAgQ0FTRShSZXF1aXJlVXNlckdlc3R1cmVUb0NvbnRy
b2xDb250cm9sc01hbmFnZXIpCisgICAgQ0FTRShSZXF1aXJlUGxheWJhY2tUb0NvbnRyb2xDb250
cm9sc01hbmFnZXIpCisgICAgQ0FTRShSZXF1aXJlVXNlckdlc3R1cmVGb3JWaWRlb0R1ZVRvTG93
UG93ZXJNb2RlKQogCiAgICAgcmV0dXJuIHJlc3RyaWN0aW9uQnVpbGRlci50b1N0cmluZygpOwog
fQpAQCAtMTA1LDYgKzEwOSw5IEBAIE1lZGlhRWxlbWVudFNlc3Npb246Ok1lZGlhRWxlbWVudFNl
c3Npb24oSFRNTE1lZGlhRWxlbWVudCYgZWxlbWVudCkKICAgICAsIG1fdGFyZ2V0QXZhaWxhYmls
aXR5Q2hhbmdlZFRpbWVyKCp0aGlzLCAmTWVkaWFFbGVtZW50U2Vzc2lvbjo6dGFyZ2V0QXZhaWxh
YmlsaXR5Q2hhbmdlZFRpbWVyRmlyZWQpCiAjZW5kaWYKICAgICAsIG1fbWFpbkNvbnRlbnRDaGVj
a1RpbWVyKCp0aGlzLCAmTWVkaWFFbGVtZW50U2Vzc2lvbjo6bWFpbkNvbnRlbnRDaGVja1RpbWVy
RmlyZWQpCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgLCBtX2xvZ0lkZW50aWZpZXIo
ZWxlbWVudC5sb2dJZGVudGlmaWVyKCkpCisjZW5kaWYKIHsKIH0KIApAQCAtMTI2LDEyICsxMzMs
MTQgQEAgdm9pZCBNZWRpYUVsZW1lbnRTZXNzaW9uOjp1bnJlZ2lzdGVyV2l0aERvY3VtZW50KERv
Y3VtZW50JiBkb2N1bWVudCkKICNlbmRpZgogfQogCi12b2lkIE1lZGlhRWxlbWVudFNlc3Npb246
OmFkZEJlaGF2aW9yUmVzdHJpY3Rpb24oQmVoYXZpb3JSZXN0cmljdGlvbnMgcmVzdHJpY3Rpb24p
Cit2b2lkIE1lZGlhRWxlbWVudFNlc3Npb246OmFkZEJlaGF2aW9yUmVzdHJpY3Rpb24oQmVoYXZp
b3JSZXN0cmljdGlvbnMgcmVzdHJpY3Rpb25zKQogewotICAgIExPRyhNZWRpYSwgIk1lZGlhRWxl
bWVudFNlc3Npb246OmFkZEJlaGF2aW9yUmVzdHJpY3Rpb24gLSBhZGRpbmcgJXMiLCByZXN0cmlj
dGlvbk5hbWUocmVzdHJpY3Rpb24pLnV0ZjgoKS5kYXRhKCkpOwotICAgIG1fcmVzdHJpY3Rpb25z
IHw9IHJlc3RyaWN0aW9uOworICAgIGlmIChyZXN0cmljdGlvbnMgJiB+bV9yZXN0cmljdGlvbnMp
CisgICAgICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsICJhZGRpbmcgIiwgcmVzdHJpY3Rpb25O
YW1lcyhyZXN0cmljdGlvbnMgJiB+bV9yZXN0cmljdGlvbnMpKTsKKworICAgIG1fcmVzdHJpY3Rp
b25zIHw9IHJlc3RyaWN0aW9uczsKIAotICAgIGlmIChyZXN0cmljdGlvbiAmIE92ZXJyaWRlVXNl
ckdlc3R1cmVSZXF1aXJlbWVudEZvck1haW5Db250ZW50KQorICAgIGlmIChyZXN0cmljdGlvbnMg
JiBPdmVycmlkZVVzZXJHZXN0dXJlUmVxdWlyZW1lbnRGb3JNYWluQ29udGVudCkKICAgICAgICAg
bV9tYWluQ29udGVudENoZWNrVGltZXIuc3RhcnRSZXBlYXRpbmcoZWxlbWVudE1haW5Db250ZW50
Q2hlY2tJbnRlcnZhbCk7CiB9CiAKQEAgLTE0Myw3ICsxNTIsMTAgQEAgdm9pZCBNZWRpYUVsZW1l
bnRTZXNzaW9uOjpyZW1vdmVCZWhhdmlvclJlc3RyaWN0aW9uKEJlaGF2aW9yUmVzdHJpY3Rpb25z
IHJlc3RyaWMKICAgICAgICAgICAgIHBhZ2UtPnNldEFsbG93c1BsYXliYWNrQ29udHJvbHNGb3JB
dXRvcGxheWluZ0F1ZGlvKHRydWUpOwogICAgIH0KIAotICAgIExPRyhNZWRpYSwgIk1lZGlhRWxl
bWVudFNlc3Npb246OnJlbW92ZUJlaGF2aW9yUmVzdHJpY3Rpb24gLSByZW1vdmluZyAlcyIsIHJl
c3RyaWN0aW9uTmFtZShyZXN0cmljdGlvbikudXRmOCgpLmRhdGEoKSk7CisgICAgaWYgKCEobV9y
ZXN0cmljdGlvbnMgJiByZXN0cmljdGlvbikpCisgICAgICAgIHJldHVybjsKKworICAgIElORk9f
TE9HKExPR0lERU5USUZJRVIsICJyZW1vdmluZyAiLCByZXN0cmljdGlvbk5hbWVzKG1fcmVzdHJp
Y3Rpb25zICYgcmVzdHJpY3Rpb24pKTsKICAgICBtX3Jlc3RyaWN0aW9ucyAmPSB+cmVzdHJpY3Rp
b247CiB9CiAKQEAgLTI1Niw3ICsyNjgsNyBAQCBib29sIE1lZGlhRWxlbWVudFNlc3Npb246OmRh
dGFMb2FkaW5nUGVybWl0dGVkKCkgY29uc3QKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBp
ZiAobV9yZXN0cmljdGlvbnMgJiBSZXF1aXJlVXNlckdlc3R1cmVGb3JMb2FkICYmICFtX2VsZW1l
bnQuZG9jdW1lbnQoKS5wcm9jZXNzaW5nVXNlckdlc3R1cmVGb3JNZWRpYSgpKSB7Ci0gICAgICAg
IExPRyhNZWRpYSwgIk1lZGlhRWxlbWVudFNlc3Npb246OmRhdGFMb2FkaW5nUGVybWl0dGVkIC0g
cmV0dXJuaW5nIEZBTFNFIik7CisgICAgICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsICJyZXR1
cm5pbmcgRkFMU0UiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMjY2LDcg
KzI3OCw3IEBAIGJvb2wgTWVkaWFFbGVtZW50U2Vzc2lvbjo6ZGF0YUxvYWRpbmdQZXJtaXR0ZWQo
KSBjb25zdAogYm9vbCBNZWRpYUVsZW1lbnRTZXNzaW9uOjpmdWxsc2NyZWVuUGVybWl0dGVkKCkg
Y29uc3QKIHsKICAgICBpZiAobV9yZXN0cmljdGlvbnMgJiBSZXF1aXJlVXNlckdlc3R1cmVGb3JG
dWxsc2NyZWVuICYmICFtX2VsZW1lbnQuZG9jdW1lbnQoKS5wcm9jZXNzaW5nVXNlckdlc3R1cmVG
b3JNZWRpYSgpKSB7Ci0gICAgICAgIExPRyhNZWRpYSwgIk1lZGlhRWxlbWVudFNlc3Npb246OmZ1
bGxzY3JlZW5QZXJtaXR0ZWQgLSByZXR1cm5pbmcgRkFMU0UiKTsKKyAgICAgICAgSU5GT19MT0co
TE9HSURFTlRJRklFUiwgInJldHVybmluZyBGQUxTRSIpOwogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQogCkBAIC0yNzcsNyArMjg5LDcgQEAgYm9vbCBNZWRpYUVsZW1lbnRTZXNzaW9uOjpw
YWdlQWxsb3dzRGF0YUxvYWRpbmcoKSBjb25zdAogewogICAgIFBhZ2UqIHBhZ2UgPSBtX2VsZW1l
bnQuZG9jdW1lbnQoKS5wYWdlKCk7CiAgICAgaWYgKG1fcmVzdHJpY3Rpb25zICYgUmVxdWlyZVBh
Z2VDb25zZW50VG9Mb2FkTWVkaWEgJiYgcGFnZSAmJiAhcGFnZS0+Y2FuU3RhcnRNZWRpYSgpKSB7
Ci0gICAgICAgIExPRyhNZWRpYSwgIk1lZGlhRWxlbWVudFNlc3Npb246OnBhZ2VBbGxvd3NEYXRh
TG9hZGluZyAtIHJldHVybmluZyBGQUxTRSIpOworICAgICAgICBJTkZPX0xPRyhMT0dJREVOVElG
SUVSLCAicmV0dXJuaW5nIEZBTFNFIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAK
QEAgLTI4OCw3ICszMDAsNyBAQCBib29sIE1lZGlhRWxlbWVudFNlc3Npb246OnBhZ2VBbGxvd3NQ
bGF5YmFja0FmdGVyUmVzdW1pbmcoKSBjb25zdAogewogICAgIFBhZ2UqIHBhZ2UgPSBtX2VsZW1l
bnQuZG9jdW1lbnQoKS5wYWdlKCk7CiAgICAgaWYgKG1fcmVzdHJpY3Rpb25zICYgUmVxdWlyZVBh
Z2VDb25zZW50VG9SZXN1bWVNZWRpYSAmJiBwYWdlICYmICFwYWdlLT5jYW5TdGFydE1lZGlhKCkp
IHsKLSAgICAgICAgTE9HKE1lZGlhLCAiTWVkaWFFbGVtZW50U2Vzc2lvbjo6cGFnZUFsbG93c1Bs
YXliYWNrQWZ0ZXJSZXN1bWluZyAtIHJldHVybmluZyBGQUxTRSIpOworICAgICAgICBJTkZPX0xP
RyhMT0dJREVOVElGSUVSLCAicmV0dXJuaW5nIEZBTFNFIik7CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CiAKQEAgLTI5OCw5NCArMzEwLDk0IEBAIGJvb2wgTWVkaWFFbGVtZW50U2Vzc2lv
bjo6cGFnZUFsbG93c1BsYXliYWNrQWZ0ZXJSZXN1bWluZygpIGNvbnN0CiBib29sIE1lZGlhRWxl
bWVudFNlc3Npb246OmNhblNob3dDb250cm9sc01hbmFnZXIoUGxheWJhY2tDb250cm9sc1B1cnBv
c2UgcHVycG9zZSkgY29uc3QKIHsKICAgICBpZiAobV9lbGVtZW50LmlzU3VzcGVuZGVkKCkgfHwg
IW1fZWxlbWVudC5pbkFjdGl2ZURvY3VtZW50KCkpIHsKLSAgICAgICAgTE9HKE1lZGlhLCAiTWVk
aWFFbGVtZW50U2Vzc2lvbjo6Y2FuU2hvd0NvbnRyb2xzTWFuYWdlciAtIHJldHVybmluZyBGQUxT
RTogaXNTdXNwZW5kZWQoKSIpOworICAgICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCAicmV0
dXJuaW5nIEZBTFNFOiBpc1N1c3BlbmRlZCgpIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CiAKICAgICBpZiAobV9lbGVtZW50LmlzRnVsbHNjcmVlbigpKSB7Ci0gICAgICAgIExPRyhN
ZWRpYSwgIk1lZGlhRWxlbWVudFNlc3Npb246OmNhblNob3dDb250cm9sc01hbmFnZXIgLSByZXR1
cm5pbmcgVFJVRTogSXMgZnVsbHNjcmVlbiIpOworICAgICAgICBJTkZPX0xPRyhMT0dJREVOVElG
SUVSLCAicmV0dXJuaW5nIFRSVUU6IGlzIGZ1bGxzY3JlZW4iKTsKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQogCiAgICAgaWYgKG1fZWxlbWVudC5tdXRlZCgpKSB7Ci0gICAgICAgIExPRyhN
ZWRpYSwgIk1lZGlhRWxlbWVudFNlc3Npb246OmNhblNob3dDb250cm9sc01hbmFnZXIgLSByZXR1
cm5pbmcgRkFMU0U6IE11dGVkIik7CisgICAgICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsICJy
ZXR1cm5pbmcgRkFMU0U6IG11dGVkIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAK
ICAgICBpZiAobV9lbGVtZW50LmRvY3VtZW50KCkuaXNNZWRpYURvY3VtZW50KCkgJiYgKG1fZWxl
bWVudC5kb2N1bWVudCgpLmZyYW1lKCkgJiYgbV9lbGVtZW50LmRvY3VtZW50KCkuZnJhbWUoKS0+
aXNNYWluRnJhbWUoKSkpIHsKLSAgICAgICAgTE9HKE1lZGlhLCAiTWVkaWFFbGVtZW50U2Vzc2lv
bjo6Y2FuU2hvd0NvbnRyb2xzTWFuYWdlciAtIHJldHVybmluZyBUUlVFOiBJcyBtZWRpYSBkb2N1
bWVudCIpOworICAgICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCAicmV0dXJuaW5nIFRSVUU6
IGlzIG1lZGlhIGRvY3VtZW50Iik7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAogICAg
IGlmIChjbGllbnQoKS5wcmVzZW50YXRpb25UeXBlKCkgPT0gQXVkaW8pIHsKICAgICAgICAgaWYg
KCFoYXNCZWhhdmlvclJlc3RyaWN0aW9uKFJlcXVpcmVVc2VyR2VzdHVyZVRvQ29udHJvbENvbnRy
b2xzTWFuYWdlcikgfHwgbV9lbGVtZW50LmRvY3VtZW50KCkucHJvY2Vzc2luZ1VzZXJHZXN0dXJl
Rm9yTWVkaWEoKSkgewotICAgICAgICAgICAgTE9HKE1lZGlhLCAiTWVkaWFFbGVtZW50U2Vzc2lv
bjo6Y2FuU2hvd0NvbnRyb2xzTWFuYWdlciAtIHJldHVybmluZyBUUlVFOiBBdWRpbyBlbGVtZW50
IHdpdGggdXNlciBnZXN0dXJlIik7CisgICAgICAgICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVS
LCAicmV0dXJuaW5nIFRSVUU6IGF1ZGlvIGVsZW1lbnQgd2l0aCB1c2VyIGdlc3R1cmUiKTsKICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKG1fZWxlbWVu
dC5pc1BsYXlpbmcoKSAmJiBhbGxvd3NQbGF5YmFja0NvbnRyb2xzRm9yQXV0b3BsYXlpbmdBdWRp
bygpKSB7Ci0gICAgICAgICAgICBMT0coTWVkaWEsICJNZWRpYUVsZW1lbnRTZXNzaW9uOjpjYW5T
aG93Q29udHJvbHNNYW5hZ2VyIC0gcmV0dXJuaW5nIFRSVUU6IFVzZXIgaGFzIHBsYXllZCBtZWRp
YSBiZWZvcmUiKTsKKyAgICAgICAgICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsICJyZXR1cm5p
bmcgVFJVRTogdXNlciBoYXMgcGxheWVkIG1lZGlhIGJlZm9yZSIpOwogICAgICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgICAgIH0KIAotICAgICAgICBMT0coTWVkaWEsICJNZWRpYUVsZW1lbnRT
ZXNzaW9uOjpjYW5TaG93Q29udHJvbHNNYW5hZ2VyIC0gcmV0dXJuaW5nIEZBTFNFOiBBdWRpbyBl
bGVtZW50IGlzIG5vdCBzdWl0YWJsZSIpOworICAgICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVS
LCAicmV0dXJuaW5nIEZBTFNFOiBhdWRpbyBlbGVtZW50IGlzIG5vdCBzdWl0YWJsZSIpOwogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgaWYgKHB1cnBvc2UgPT0gUGxheWJhY2tD
b250cm9sc1B1cnBvc2U6OkNvbnRyb2xzTWFuYWdlciAmJiAhaXNFbGVtZW50UmVjdE1vc3RseUlu
TWFpbkZyYW1lKG1fZWxlbWVudCkpIHsKLSAgICAgICAgTE9HKE1lZGlhLCAiTWVkaWFFbGVtZW50
U2Vzc2lvbjo6Y2FuU2hvd0NvbnRyb2xzTWFuYWdlciAtIHJldHVybmluZyBGQUxTRTogTm90IGlu
IG1haW4gZnJhbWUiKTsKKyAgICAgICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwgInJldHVybmlu
ZyBGQUxTRTogbm90IGluIG1haW4gZnJhbWUiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KIAogICAgIGlmICghbV9lbGVtZW50Lmhhc0F1ZGlvKCkgJiYgIW1fZWxlbWVudC5oYXNFdmVy
SGFkQXVkaW8oKSkgewotICAgICAgICBMT0coTWVkaWEsICJNZWRpYUVsZW1lbnRTZXNzaW9uOjpj
YW5TaG93Q29udHJvbHNNYW5hZ2VyIC0gcmV0dXJuaW5nIEZBTFNFOiBObyBhdWRpbyIpOworICAg
ICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCAicmV0dXJuaW5nIEZBTFNFOiBubyBhdWRpbyIp
OwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgaWYgKCFwbGF5YmFja1Blcm1p
dHRlZCgpKSB7Ci0gICAgICAgIExPRyhNZWRpYSwgIk1lZGlhRWxlbWVudFNlc3Npb246OmNhblNo
b3dDb250cm9sc01hbmFnZXIgLSByZXR1cm5pbmcgRkFMU0U6IFBsYXliYWNrIG5vdCBwZXJtaXR0
ZWQiKTsKKyAgICAgICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwgInJldHVybmluZyBGQUxTRTog
cGxheWJhY2sgbm90IHBlcm1pdHRlZCIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQog
CiAgICAgaWYgKCFoYXNCZWhhdmlvclJlc3RyaWN0aW9uKFJlcXVpcmVVc2VyR2VzdHVyZVRvQ29u
dHJvbENvbnRyb2xzTWFuYWdlcikgfHwgbV9lbGVtZW50LmRvY3VtZW50KCkucHJvY2Vzc2luZ1Vz
ZXJHZXN0dXJlRm9yTWVkaWEoKSkgewotICAgICAgICBMT0coTWVkaWEsICJNZWRpYUVsZW1lbnRT
ZXNzaW9uOjpjYW5TaG93Q29udHJvbHNNYW5hZ2VyIC0gcmV0dXJuaW5nIFRSVUU6IE5vIHVzZXIg
Z2VzdHVyZSByZXF1aXJlZCIpOworICAgICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCAicmV0
dXJuaW5nIFRSVUU6IG5vIHVzZXIgZ2VzdHVyZSByZXF1aXJlZCIpOwogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICB9CiAKICAgICBpZiAocHVycG9zZSA9PSBQbGF5YmFja0NvbnRyb2xzUHVycG9z
ZTo6Q29udHJvbHNNYW5hZ2VyICYmIGhhc0JlaGF2aW9yUmVzdHJpY3Rpb24oUmVxdWlyZVBsYXli
YWNrVG9Db250cm9sQ29udHJvbHNNYW5hZ2VyKSAmJiAhbV9lbGVtZW50LmlzUGxheWluZygpKSB7
Ci0gICAgICAgIExPRyhNZWRpYSwgIk1lZGlhRWxlbWVudFNlc3Npb246OmNhblNob3dDb250cm9s
c01hbmFnZXIgLSByZXR1cm5pbmcgRkFMU0U6IE5lZWRzIHRvIGJlIHBsYXlpbmciKTsKKyAgICAg
ICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwgInJldHVybmluZyBGQUxTRTogbmVlZHMgdG8gYmUg
cGxheWluZyIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgaWYgKCFtX2Vs
ZW1lbnQuaGFzRXZlck5vdGlmaWVkQWJvdXRQbGF5aW5nKCkpIHsKLSAgICAgICAgTE9HKE1lZGlh
LCAiTWVkaWFFbGVtZW50U2Vzc2lvbjo6Y2FuU2hvd0NvbnRyb2xzTWFuYWdlciAtIHJldHVybmlu
ZyBGQUxTRTogSGFzbid0IGZpcmVkIHBsYXlpbmcgbm90aWZpY2F0aW9uIik7CisgICAgICAgIElO
Rk9fTE9HKExPR0lERU5USUZJRVIsICJyZXR1cm5pbmcgRkFMU0U6IGhhc24ndCBmaXJlZCBwbGF5
aW5nIG5vdGlmaWNhdGlvbiIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAg
Ly8gT25seSBhbGxvdyB0aGUgbWFpbiBjb250ZW50IGhldXJpc3RpYyB0byBmb3JiaWQgdmlkZW9z
IGZyb20gc2hvd2luZyB1cCBpZiBvdXIgcHVycG9zZSBpcyB0aGUgY29udHJvbHMgbWFuYWdlci4K
ICAgICBpZiAocHVycG9zZSA9PSBQbGF5YmFja0NvbnRyb2xzUHVycG9zZTo6Q29udHJvbHNNYW5h
Z2VyICYmIG1fZWxlbWVudC5pc1ZpZGVvKCkpIHsKICAgICAgICAgaWYgKCFtX2VsZW1lbnQucmVu
ZGVyZXIoKSkgewotICAgICAgICAgICAgTE9HKE1lZGlhLCAiTWVkaWFFbGVtZW50U2Vzc2lvbjo6
Y2FuU2hvd0NvbnRyb2xzTWFuYWdlciAtIHJldHVybmluZyBGQUxTRTogTm8gcmVuZGVyZXIiKTsK
KyAgICAgICAgICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsICJyZXR1cm5pbmcgRkFMU0U6IG5v
IHJlbmRlcmVyIik7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIAogICAg
ICAgICBpZiAoIW1fZWxlbWVudC5oYXNWaWRlbygpICYmICFtX2VsZW1lbnQuaGFzRXZlckhhZFZp
ZGVvKCkpIHsKLSAgICAgICAgICAgIExPRyhNZWRpYSwgIk1lZGlhRWxlbWVudFNlc3Npb246OmNh
blNob3dDb250cm9sc01hbmFnZXIgLSByZXR1cm5pbmcgRkFMU0U6IE5vIHZpZGVvIik7CisgICAg
ICAgICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCAicmV0dXJuaW5nIEZBTFNFOiBubyB2aWRl
byIpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAKICAgICAgICAgaWYg
KGlzTGFyZ2VFbm91Z2hGb3JNYWluQ29udGVudChNZWRpYVNlc3Npb25NYWluQ29udGVudFB1cnBv
c2U6Ok1lZGlhQ29udHJvbHMpKSB7Ci0gICAgICAgICAgICBMT0coTWVkaWEsICJNZWRpYUVsZW1l
bnRTZXNzaW9uOjpjYW5TaG93Q29udHJvbHNNYW5hZ2VyIC0gcmV0dXJuaW5nIFRSVUU6IElzIG1h
aW4gY29udGVudCIpOworICAgICAgICAgICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwgInJldHVy
bmluZyBUUlVFOiBpcyBtYWluIGNvbnRlbnQiKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgICAgICB9CiAgICAgfQogCiAgICAgaWYgKHB1cnBvc2UgPT0gUGxheWJhY2tDb250cm9sc1B1
cnBvc2U6Ok5vd1BsYXlpbmcpIHsKLSAgICAgICAgTE9HKE1lZGlhLCAiTWVkaWFFbGVtZW50U2Vz
c2lvbjo6Y2FuU2hvd0NvbnRyb2xzTWFuYWdlciAtIHJldHVybmluZyBUUlVFOiBQb3RlbnRpYWxs
eSBwbGF5cyBhdWRpbyIpOworICAgICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCAicmV0dXJu
aW5nIFRSVUU6IHBvdGVudGlhbGx5IHBsYXlzIGF1ZGlvIik7CiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIH0KIAotICAgIExPRyhNZWRpYSwgIk1lZGlhRWxlbWVudFNlc3Npb246OmNhblNob3dD
b250cm9sc01hbmFnZXIgLSByZXR1cm5pbmcgRkFMU0U6IE5vIHVzZXIgZ2VzdHVyZSIpOworICAg
IElORk9fTE9HKExPR0lERU5USUZJRVIsICJyZXR1cm5pbmcgRkFMU0U6IG5vIHVzZXIgZ2VzdHVy
ZSIpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIApAQCAtNDE0LDIyICs0MjYsMjIgQEAgYm9vbCBN
ZWRpYUVsZW1lbnRTZXNzaW9uOjp3YW50c1RvT2JzZXJ2ZVZpZXdwb3J0VmlzaWJpbGl0eUZvckF1
dG9wbGF5KCkgY29uc3QKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQogdm9p
ZCBNZWRpYUVsZW1lbnRTZXNzaW9uOjpzaG93UGxheWJhY2tUYXJnZXRQaWNrZXIoKQogewotICAg
IExPRyhNZWRpYSwgIk1lZGlhRWxlbWVudFNlc3Npb246OnNob3dQbGF5YmFja1RhcmdldFBpY2tl
ciIpOworICAgIElORk9fTE9HKExPR0lERU5USUZJRVIpOwogCiAgICAgYXV0byYgZG9jdW1lbnQg
PSBtX2VsZW1lbnQuZG9jdW1lbnQoKTsKICAgICBpZiAobV9yZXN0cmljdGlvbnMgJiBSZXF1aXJl
VXNlckdlc3R1cmVUb1Nob3dQbGF5YmFja1RhcmdldFBpY2tlciAmJiAhZG9jdW1lbnQucHJvY2Vz
c2luZ1VzZXJHZXN0dXJlRm9yTWVkaWEoKSkgewotICAgICAgICBMT0coTWVkaWEsICJNZWRpYUVs
ZW1lbnRTZXNzaW9uOjpzaG93UGxheWJhY2tUYXJnZXRQaWNrZXIgLSByZXR1cm5pbmcgZWFybHkg
YmVjYXVzZSBvZiBwZXJtaXNzaW9ucyIpOworICAgICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVS
LCAicmV0dXJuaW5nIGVhcmx5IGJlY2F1c2Ugb2YgcGVybWlzc2lvbnMiKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAogICAgIGlmICghZG9jdW1lbnQucGFnZSgpKSB7Ci0gICAgICAgIExPRyhN
ZWRpYSwgIk1lZGlhRWxlbWVudFNlc3Npb246OnNob3dpbmdQbGF5YmFja1RhcmdldFBpY2tlclBl
cm1pdHRlZCAtIHJldHVybmluZyBlYXJseSBiZWNhdXNlIHBhZ2UgaXMgTlVMTCIpOworICAgICAg
ICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCAicmV0dXJuaW5nIGVhcmx5IGJlY2F1c2UgcGFnZSBp
cyBOVUxMIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICNpZiAhUExBVEZPUk0oSU9TKQog
ICAgIGlmIChtX2VsZW1lbnQucmVhZHlTdGF0ZSgpIDwgSFRNTE1lZGlhRWxlbWVudEVudW1zOjpI
QVZFX01FVEFEQVRBKSB7Ci0gICAgICAgIExPRyhNZWRpYSwgIk1lZGlhRWxlbWVudFNlc3Npb246
OnNob3dQbGF5YmFja1RhcmdldFBpY2tlciAtIHJldHVybmluZyBlYXJseSBiZWNhdXNlIGVsZW1l
bnQgaXMgbm90IHBsYXlhYmxlIik7CisgICAgICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsICJy
ZXR1cm5pbmcgZWFybHkgYmVjYXVzZSBlbGVtZW50IGlzIG5vdCBwbGF5YWJsZSIpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogI2VuZGlmCkBAIC00NDUsNyArNDU3LDcgQEAgYm9vbCBNZWRpYUVs
ZW1lbnRTZXNzaW9uOjpoYXNXaXJlbGVzc1BsYXliYWNrVGFyZ2V0cygpIGNvbnN0CiAgICAgbV9o
YXNQbGF5YmFja1RhcmdldHMgPSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1h
bmFnZXIoKS5oYXNXaXJlbGVzc1RhcmdldHNBdmFpbGFibGUoKTsKICNlbmRpZgogCi0gICAgTE9H
KE1lZGlhLCAiTWVkaWFFbGVtZW50U2Vzc2lvbjo6aGFzV2lyZWxlc3NQbGF5YmFja1RhcmdldHMg
LSByZXR1cm5pbmcgJXMiLCBtX2hhc1BsYXliYWNrVGFyZ2V0cyA/ICJUUlVFIiA6ICJGQUxTRSIp
OworICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsICJyZXR1cm5pbmcgIiwgbV9oYXNQbGF5YmFj
a1RhcmdldHMpOwogCiAgICAgcmV0dXJuIG1faGFzUGxheWJhY2tUYXJnZXRzOwogfQpAQCAtNDUz
LDIzICs0NjUsMjMgQEAgYm9vbCBNZWRpYUVsZW1lbnRTZXNzaW9uOjpoYXNXaXJlbGVzc1BsYXli
YWNrVGFyZ2V0cygpIGNvbnN0CiBib29sIE1lZGlhRWxlbWVudFNlc3Npb246OndpcmVsZXNzVmlk
ZW9QbGF5YmFja0Rpc2FibGVkKCkgY29uc3QKIHsKICAgICBpZiAoIW1fZWxlbWVudC5kb2N1bWVu
dCgpLnNldHRpbmdzKCkuYWxsb3dzQWlyUGxheUZvck1lZGlhUGxheWJhY2soKSkgewotICAgICAg
ICBMT0coTWVkaWEsICJNZWRpYUVsZW1lbnRTZXNzaW9uOjp3aXJlbGVzc1ZpZGVvUGxheWJhY2tE
aXNhYmxlZCAtIHJldHVybmluZyBUUlVFIGJlY2F1c2Ugb2Ygc2V0dGluZ3MiKTsKKyAgICAgICAg
SU5GT19MT0coTE9HSURFTlRJRklFUiwgInJldHVybmluZyBUUlVFIGJlY2F1c2Ugb2Ygc2V0dGlu
Z3MiKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCiAgICAgaWYgKG1fZWxlbWVudC5o
YXNBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6d2Via2l0d2lyZWxl
c3N2aWRlb3BsYXliYWNrZGlzYWJsZWRBdHRyKSkgewotICAgICAgICBMT0coTWVkaWEsICJNZWRp
YUVsZW1lbnRTZXNzaW9uOjp3aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCAtIHJldHVybmlu
ZyBUUlVFIGJlY2F1c2Ugb2YgYXR0cmlidXRlIik7CisgICAgICAgIElORk9fTE9HKExPR0lERU5U
SUZJRVIsICJyZXR1cm5pbmcgVFJVRSBiZWNhdXNlIG9mIGF0dHJpYnV0ZSIpOwogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICB9CiAKICNpZiBQTEFURk9STShJT1MpCiAgICAgYXV0byYgbGVnYWN5
QWlycGxheUF0dHJpYnV0ZVZhbHVlID0gbV9lbGVtZW50LmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJv
bml6YXRpb24oSFRNTE5hbWVzOjp3ZWJraXRhaXJwbGF5QXR0cik7CiAgICAgaWYgKGVxdWFsTGV0
dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGxlZ2FjeUFpcnBsYXlBdHRyaWJ1dGVWYWx1ZSwgImRlbnki
KSkgewotICAgICAgICBMT0coTWVkaWEsICJNZWRpYUVsZW1lbnRTZXNzaW9uOjp3aXJlbGVzc1Zp
ZGVvUGxheWJhY2tEaXNhYmxlZCAtIHJldHVybmluZyBUUlVFIGJlY2F1c2Ugb2YgbGVnYWN5IGF0
dHJpYnV0ZSIpOworICAgICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCAicmV0dXJuaW5nIFRS
VUUgYmVjYXVzZSBvZiBsZWdhY3kgYXR0cmlidXRlIik7CiAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIH0KICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobGVnYWN5QWlycGxh
eUF0dHJpYnV0ZVZhbHVlLCAiYWxsb3ciKSkgewotICAgICAgICBMT0coTWVkaWEsICJNZWRpYUVs
ZW1lbnRTZXNzaW9uOjp3aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCAtIHJldHVybmluZyBG
QUxTRSBiZWNhdXNlIG9mIGxlZ2FjeSBhdHRyaWJ1dGUiKTsKKyAgICAgICAgSU5GT19MT0coTE9H
SURFTlRJRklFUiwgInJldHVybmluZyBGQUxTRSBiZWNhdXNlIG9mIGxlZ2FjeSBhdHRyaWJ1dGUi
KTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICNlbmRpZgpAQCAtNDc5LDcgKzQ5MSw3
IEBAIGJvb2wgTWVkaWFFbGVtZW50U2Vzc2lvbjo6d2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJs
ZWQoKSBjb25zdAogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIGJvb2wgZGlzYWJsZWQgPSBw
bGF5ZXItPndpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKCk7Ci0gICAgTE9HKE1lZGlhLCAi
TWVkaWFFbGVtZW50U2Vzc2lvbjo6d2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQgLSByZXR1
cm5pbmcgJXMgYmVjYXVzZSBtZWRpYSBlbmdpbmUgc2F5cyBzbyIsIGRpc2FibGVkID8gIlRSVUUi
IDogIkZBTFNFIik7CisgICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwgInJldHVybmluZyAiLCBk
aXNhYmxlZCwgIiBiZWNhdXNlIG1lZGlhIGVuZ2luZSBzYXlzIHNvIik7CiAgICAgCiAgICAgcmV0
dXJuIGRpc2FibGVkOwogfQpAQCAtNDk1LDEzICs1MDcsMTMgQEAgdm9pZCBNZWRpYUVsZW1lbnRT
ZXNzaW9uOjpzZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZChib29sIGRpc2FibGVkKQog
ICAgIGlmICghcGxheWVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBMT0coTWVkaWEsICJNZWRp
YUVsZW1lbnRTZXNzaW9uOjpzZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCAtIGRpc2Fi
bGVkICVzIiwgZGlzYWJsZWQgPyAiVFJVRSIgOiAiRkFMU0UiKTsKKyAgICBJTkZPX0xPRyhMT0dJ
REVOVElGSUVSLCBkaXNhYmxlZCk7CiAgICAgcGxheWVyLT5zZXRXaXJlbGVzc1ZpZGVvUGxheWJh
Y2tEaXNhYmxlZChkaXNhYmxlZCk7CiB9CiAKIHZvaWQgTWVkaWFFbGVtZW50U2Vzc2lvbjo6c2V0
SGFzUGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlMaXN0ZW5lcnMoYm9vbCBoYXNMaXN0ZW5lcnMp
CiB7Ci0gICAgTE9HKE1lZGlhLCAiTWVkaWFFbGVtZW50U2Vzc2lvbjo6c2V0SGFzUGxheWJhY2tU
YXJnZXRBdmFpbGFiaWxpdHlMaXN0ZW5lcnMgLSBoYXNMaXN0ZW5lcnMgJXMiLCBoYXNMaXN0ZW5l
cnMgPyAiVFJVRSIgOiAiRkFMU0UiKTsKKyAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCBoYXNM
aXN0ZW5lcnMpOwogCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIG1faGFzUGxheWJhY2tUYXJnZXRB
dmFpbGFiaWxpdHlMaXN0ZW5lcnMgPSBoYXNMaXN0ZW5lcnM7CkBAIC01MjgsNyArNTQwLDcgQEAg
dm9pZCBNZWRpYUVsZW1lbnRTZXNzaW9uOjpleHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURp
ZENoYW5nZShib29sIGhhc1RhcmdldHMKICAgICBpZiAobV9oYXNQbGF5YmFja1RhcmdldHMgPT0g
aGFzVGFyZ2V0cykKICAgICAgICAgcmV0dXJuOwogCi0gICAgTE9HKE1lZGlhLCAiTWVkaWFFbGVt
ZW50U2Vzc2lvbjo6ZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2UoJXApIC0g
aGFzVGFyZ2V0cyAlcyIsIHRoaXMsIGhhc1RhcmdldHMgPyAiVFJVRSIgOiAiRkFMU0UiKTsKKyAg
ICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCBoYXNUYXJnZXRzKTsKIAogICAgIG1faGFzUGxheWJh
Y2tUYXJnZXRzID0gaGFzVGFyZ2V0czsKICAgICBtX3RhcmdldEF2YWlsYWJpbGl0eUNoYW5nZWRU
aW1lci5zdGFydE9uZVNob3QoMF9zKTsKQEAgLTU1Niw3ICs1NjgsNyBAQCBib29sIE1lZGlhRWxl
bWVudFNlc3Npb246OmlzUGxheWluZ1RvV2lyZWxlc3NQbGF5YmFja1RhcmdldCgpIGNvbnN0CiAK
IHZvaWQgTWVkaWFFbGVtZW50U2Vzc2lvbjo6c2V0U2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQo
Ym9vbCBzaG91bGRQbGF5KQogewotICAgIExPRyhNZWRpYSwgIk1lZGlhRWxlbWVudFNlc3Npb246
OnNldFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0IC0gc2hvdWxkUGxheSAlcyIsIHNob3VsZFBs
YXkgPyAiVFJVRSIgOiAiRkFMU0UiKTsKKyAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCBzaG91
bGRQbGF5KTsKICAgICBtX3Nob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0ID0gc2hvdWxkUGxheTsK
ICAgICBjbGllbnQoKS5zZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldChzaG91bGRQbGF5KTsK
IH0KQEAgLTYzNSw3ICs2NDcsNyBAQCBib29sIE1lZGlhRWxlbWVudFNlc3Npb246OmFsbG93c0F1
dG9tYXRpY01lZGlhRGF0YUxvYWRpbmcoKSBjb25zdAogCiB2b2lkIE1lZGlhRWxlbWVudFNlc3Np
b246Om1lZGlhRW5naW5lVXBkYXRlZCgpCiB7Ci0gICAgTE9HKE1lZGlhLCAiTWVkaWFFbGVtZW50
U2Vzc2lvbjo6bWVkaWFFbmdpbmVVcGRhdGVkIik7CisgICAgSU5GT19MT0coTE9HSURFTlRJRklF
Uik7CiAKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQogICAgIGlmIChtX3Jl
c3RyaWN0aW9ucyAmIFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKQpAQCAtODQzLDI4ICs4
NTUsNiBAQCBib29sIE1lZGlhRWxlbWVudFNlc3Npb246OmFsbG93c1BsYXliYWNrQ29udHJvbHNG
b3JBdXRvcGxheWluZ0F1ZGlvKCkgY29uc3QKICAgICByZXR1cm4gcGFnZSAmJiBwYWdlLT5hbGxv
d3NQbGF5YmFja0NvbnRyb2xzRm9yQXV0b3BsYXlpbmdBdWRpbygpOwogfQogCi1ib29sIE1lZGlh
RWxlbWVudFNlc3Npb246OndpbGxMb2coV1RGTG9nTGV2ZWwgbGV2ZWwpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIG1fZWxlbWVudC53aWxsTG9nKGxldmVsKTsKLX0KLQotI2lmICFSRUxFQVNFX0xPR19E
SVNBQkxFRAotY29uc3QgTG9nZ2VyJiBNZWRpYUVsZW1lbnRTZXNzaW9uOjpsb2dnZXIoKSBjb25z
dAotewotICAgIHJldHVybiBtX2VsZW1lbnQubG9nZ2VyKCk7Ci19Ci0KLWNvbnN0IHZvaWQqIE1l
ZGlhRWxlbWVudFNlc3Npb246OmxvZ0lkZW50aWZpZXIoKSBjb25zdAotewotICAgIHJldHVybiBt
X2VsZW1lbnQubG9nSWRlbnRpZmllcigpOwotfQotCi1XVEZMb2dDaGFubmVsJiBNZWRpYUVsZW1l
bnRTZXNzaW9uOjpsb2dDaGFubmVsKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9lbGVtZW50Lmxv
Z0NoYW5uZWwoKTsKLX0KLSNlbmRpZgotCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoVklERU8pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRWxlbWVudFNlc3Npb24uaCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5oCmluZGV4IDMxYWY3NjA0Yjk2
NGFjOWIzOTdhMWQ3ZmQ1OWRlNDg1NzIyYjc5OGYuLjgyODlmZmEzZmI1MmY1NzI4ODFkMWE4NDZk
MmY1YTYwNzA4OTg3NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVt
ZW50U2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lv
bi5oCkBAIC0zMiw3ICszMiw2IEBACiAjaW5jbHVkZSAiUGxhdGZvcm1NZWRpYVNlc3Npb24uaCIK
ICNpbmNsdWRlICJTdWNjZXNzT3IuaCIKICNpbmNsdWRlICJUaW1lci5oIgotI2luY2x1ZGUgPHd0
Zi9Mb2dnZXJIZWxwZXIuaD4KICNpbmNsdWRlIDx3dGYvVHlwZUNhc3RzLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKQEAgLTUzLDkgKzUyLDYgQEAgY2xhc3MgSFRNTE1lZGlhRWxlbWVudDsKIGNs
YXNzIFNvdXJjZUJ1ZmZlcjsKIAogY2xhc3MgTWVkaWFFbGVtZW50U2Vzc2lvbiBmaW5hbCA6IHB1
YmxpYyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbgotI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAotICAg
ICwgcHJpdmF0ZSBMb2dnZXJIZWxwZXIKLSNlbmRpZgogewogICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgpAQCAtMTQ5LDEyICsxNDUsOSBAQCBwdWJsaWM6CiAgICAgfQogCiAj
aWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECi0gICAgY29uc3QgTG9nZ2VyJiBsb2dnZXIoKSBjb25z
dCBmaW5hbDsKLSAgICBjb25zdCB2b2lkKiBsb2dJZGVudGlmaWVyKCkgY29uc3QgZmluYWw7Cisg
ICAgY29uc3Qgdm9pZCogbG9nSWRlbnRpZmllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fbG9n
SWRlbnRpZmllcjsgfQogICAgIGNvbnN0IGNoYXIqIGxvZ0NsYXNzTmFtZSgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuICJNZWRpYUVsZW1lbnRTZXNzaW9uIjsgfQotICAgIFdURkxvZ0NoYW5uZWwmIGxv
Z0NoYW5uZWwoKSBjb25zdCBmaW5hbDsKICNlbmRpZgotICAgIGJvb2wgd2lsbExvZyhXVEZMb2dM
ZXZlbCkgY29uc3Q7CiAKIHByaXZhdGU6CiAKQEAgLTE4OSw2ICsxODIsMTAgQEAgcHJpdmF0ZToK
IAogICAgIG11dGFibGUgYm9vbCBtX2lzTWFpbkNvbnRlbnQgeyBmYWxzZSB9OwogICAgIFRpbWVy
IG1fbWFpbkNvbnRlbnRDaGVja1RpbWVyOworCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisg
ICAgY29uc3Qgdm9pZCogbV9sb2dJZGVudGlmaWVyOworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Q
bGF0Zm9ybU1lZGlhU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Q
bGF0Zm9ybU1lZGlhU2Vzc2lvbi5jcHAKaW5kZXggMjdhYjIyNWYzOGRhNDUwZmM4ODg0ZTRjOTNj
N2M4NTE4NzAzYWU0ZC4uZjJlMTk4MjdiNDY1NWE5MjE3ZjYyOWUxMzE5ODE1Mjc0Njc5ODdkNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNl
c3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVk
aWFTZXNzaW9uLmNwcApAQCAtMzEsNDMgKzMxLDU5IEBACiAjaW5jbHVkZSAiTG9nZ2luZy5oIgog
I2luY2x1ZGUgIk1lZGlhUGxheWVyLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1NZWRpYVNlc3Npb25N
YW5hZ2VyLmgiCisjaW5jbHVkZSA8d3RmL0NyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIGNvbnN0IFNlY29uZHMgY2xpZW50RGF0
YUJ1ZmZlcmluZ1RpbWVyVGhyb3R0bGVEZWxheSB7IDEwMF9tcyB9OwogCi0jaWYgIUxPR19ESVNB
QkxFRAotc3RhdGljIGNvbnN0IGNoYXIqIHN0YXRlTmFtZShQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6
U3RhdGUgc3RhdGUpCi17Ci0jZGVmaW5lIFNUQVRFX0NBU0Uoc3RhdGUpIGNhc2UgUGxhdGZvcm1N
ZWRpYVNlc3Npb246OnN0YXRlOiByZXR1cm4gI3N0YXRlCi0gICAgc3dpdGNoIChzdGF0ZSkgewot
ICAgIFNUQVRFX0NBU0UoSWRsZSk7Ci0gICAgU1RBVEVfQ0FTRShBdXRvcGxheWluZyk7Ci0gICAg
U1RBVEVfQ0FTRShQbGF5aW5nKTsKLSAgICBTVEFURV9DQVNFKFBhdXNlZCk7Ci0gICAgU1RBVEVf
Q0FTRShJbnRlcnJ1cHRlZCk7Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0g
ICAgcmV0dXJuICIiOworI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorc3RhdGljIHVpbnQ2NF90
IG5leHRMb2dJZGVudGlmaWVyKCkKK3sKKyAgICBzdGF0aWMgdWludDY0X3QgbG9nSWRlbnRpZmll
ciA9IGNyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyKCk7CisgICAgcmV0dXJuICsrbG9nSWRl
bnRpZmllcjsKK30KKworU3RyaW5nIGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKFBsYXRmb3Jt
TWVkaWFTZXNzaW9uOjpTdGF0ZSBzdGF0ZSkKK3sKKyAgICBzdGF0aWMgY29uc3QgTmV2ZXJEZXN0
cm95ZWQ8U3RyaW5nPiB2YWx1ZXNbXSA9IHsKKyAgICAgICAgTUFLRV9TVEFUSUNfU1RSSU5HX0lN
UEwoIklkbGUiKSwKKyAgICAgICAgTUFLRV9TVEFUSUNfU1RSSU5HX0lNUEwoIkF1dG9wbGF5aW5n
IiksCisgICAgICAgIE1BS0VfU1RBVElDX1NUUklOR19JTVBMKCJQbGF5aW5nIiksCisgICAgICAg
IE1BS0VfU1RBVElDX1NUUklOR19JTVBMKCJQYXVzZWQiKSwKKyAgICAgICAgTUFLRV9TVEFUSUNf
U1RSSU5HX0lNUEwoIkludGVycnVwdGVkIiksCisgICAgfTsKKyAgICBzdGF0aWNfYXNzZXJ0KCFz
dGF0aWNfY2FzdDxzaXplX3Q+KFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpJZGxlKSwgIlBsYXRmb3Jt
TWVkaWFTZXNzaW9uOjpJZGxlIGlzIG5vdCAwIGFzIGV4cGVjdGVkIik7CisgICAgc3RhdGljX2Fz
c2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpBdXRvcGxheWlu
ZyA9PSAxKSwgIlBsYXRmb3JtTWVkaWFTZXNzaW9uOjpBdXRvcGxheWluZyBpcyBub3QgMSBhcyBl
eHBlY3RlZCIpOworICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihQbGF0Zm9y
bU1lZGlhU2Vzc2lvbjo6UGxheWluZyA9PSAyKSwgIlBsYXRmb3JtTWVkaWFTZXNzaW9uOjpQbGF5
aW5nIGlzIG5vdCAyIGFzIGV4cGVjdGVkIik7CisgICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2Fz
dDxzaXplX3Q+KFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpQYXVzZWQgPT0gMyksICJQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbjo6UGF1c2VkIGlzIG5vdCAzIGFzIGV4cGVjdGVkIik7CisgICAgc3RhdGljX2Fz
c2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpJbnRlcnJ1cHRl
ZCA9PSA0KSwgIlBsYXRmb3JtTWVkaWFTZXNzaW9uOjpJbnRlcnJ1cHRlZCBpcyBub3QgNCBhcyBl
eHBlY3RlZCIpOworICAgIEFTU0VSVChzdGF0aWNfY2FzdDxzaXplX3Q+KHN0YXRlKSA8IFdURl9B
UlJBWV9MRU5HVEgodmFsdWVzKSk7CisgICAgcmV0dXJuIHZhbHVlc1tzdGF0aWNfY2FzdDxzaXpl
X3Q+KHN0YXRlKV07Cit9CisKK1N0cmluZyBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhQbGF0
Zm9ybU1lZGlhU2Vzc2lvbjo6SW50ZXJydXB0aW9uVHlwZSB0eXBlKQoreworICAgIHN0YXRpYyBj
b25zdCBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IHZhbHVlc1tdID0geworICAgICAgICBNQUtFX1NU
QVRJQ19TVFJJTkdfSU1QTCgiTm9JbnRlcnJ1cHRpb24iKSwKKyAgICAgICAgTUFLRV9TVEFUSUNf
U1RSSU5HX0lNUEwoIlN5c3RlbVNsZWVwIiksCisgICAgICAgIE1BS0VfU1RBVElDX1NUUklOR19J
TVBMKCJFbnRlcmluZ0JhY2tncm91bmQiKSwKKyAgICAgICAgTUFLRV9TVEFUSUNfU1RSSU5HX0lN
UEwoIlN5c3RlbUludGVycnVwdGlvbiIpLAorICAgICAgICBNQUtFX1NUQVRJQ19TVFJJTkdfSU1Q
TCgiU3VzcGVuZGVkVW5kZXJMb2NrIiksCisgICAgICAgIE1BS0VfU1RBVElDX1NUUklOR19JTVBM
KCJJbnZpc2libGVBdXRvcGxheSIpLAorICAgICAgICBNQUtFX1NUQVRJQ19TVFJJTkdfSU1QTCgi
UHJvY2Vzc0luYWN0aXZlIiksCisgICAgfTsKKyAgICBzdGF0aWNfYXNzZXJ0KCFzdGF0aWNfY2Fz
dDxzaXplX3Q+KFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpOb0ludGVycnVwdGlvbiksICJQbGF0Zm9y
bU1lZGlhU2Vzc2lvbjo6Tm9JbnRlcnJ1cHRpb24gaXMgbm90IDAgYXMgZXhwZWN0ZWQiKTsKKyAg
ICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHNpemVfdD4oUGxhdGZvcm1NZWRpYVNlc3Npb246
OlN5c3RlbVNsZWVwID09IDEpLCAiUGxhdGZvcm1NZWRpYVNlc3Npb246OlN5c3RlbVNsZWVwIGlz
IG5vdCAxIGFzIGV4cGVjdGVkIik7CisgICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxzaXpl
X3Q+KFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpFbnRlcmluZ0JhY2tncm91bmQgPT0gMiksICJQbGF0
Zm9ybU1lZGlhU2Vzc2lvbjo6RW50ZXJpbmdCYWNrZ3JvdW5kIGlzIG5vdCAyIGFzIGV4cGVjdGVk
Iik7CisgICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KFBsYXRmb3JtTWVkaWFT
ZXNzaW9uOjpTeXN0ZW1JbnRlcnJ1cHRpb24gPT0gMyksICJQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6
U3lzdGVtSW50ZXJydXB0aW9uIGlzIG5vdCAzIGFzIGV4cGVjdGVkIik7CisgICAgc3RhdGljX2Fz
c2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpTdXNwZW5kZWRV
bmRlckxvY2sgPT0gNCksICJQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6U3VzcGVuZGVkVW5kZXJMb2Nr
IGlzIG5vdCA0IGFzIGV4cGVjdGVkIik7CisgICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxz
aXplX3Q+KFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpJbnZpc2libGVBdXRvcGxheSA9PSA1KSwgIlBs
YXRmb3JtTWVkaWFTZXNzaW9uOjpJbnZpc2libGVBdXRvcGxheSBpcyBub3QgNSBhcyBleHBlY3Rl
ZCIpOworICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihQbGF0Zm9ybU1lZGlh
U2Vzc2lvbjo6UHJvY2Vzc0luYWN0aXZlID09IDYpLCAiUGxhdGZvcm1NZWRpYVNlc3Npb246OlBy
b2Nlc3NJbmFjdGl2ZSBpcyBub3QgNiBhcyBleHBlY3RlZCIpOworICAgIEFTU0VSVChzdGF0aWNf
Y2FzdDxzaXplX3Q+KHR5cGUpIDwgV1RGX0FSUkFZX0xFTkdUSCh2YWx1ZXMpKTsKKyAgICByZXR1
cm4gdmFsdWVzW3N0YXRpY19jYXN0PHNpemVfdD4odHlwZSldOwogfQogCi1zdGF0aWMgY29uc3Qg
Y2hhciogaW50ZXJydXB0aW9uTmFtZShQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6SW50ZXJydXB0aW9u
VHlwZSB0eXBlKQotewotI2RlZmluZSBJTlRFUlJVUFRJT05fQ0FTRSh0eXBlKSBjYXNlIFBsYXRm
b3JtTWVkaWFTZXNzaW9uOjp0eXBlOiByZXR1cm4gI3R5cGUKLSAgICBzd2l0Y2ggKHR5cGUpIHsK
LSAgICBJTlRFUlJVUFRJT05fQ0FTRShOb0ludGVycnVwdGlvbik7Ci0gICAgSU5URVJSVVBUSU9O
X0NBU0UoU3lzdGVtU2xlZXApOwotICAgIElOVEVSUlVQVElPTl9DQVNFKEVudGVyaW5nQmFja2dy
b3VuZCk7Ci0gICAgSU5URVJSVVBUSU9OX0NBU0UoU3lzdGVtSW50ZXJydXB0aW9uKTsKLSAgICBJ
TlRFUlJVUFRJT05fQ0FTRShTdXNwZW5kZWRVbmRlckxvY2spOwotICAgIElOVEVSUlVQVElPTl9D
QVNFKEludmlzaWJsZUF1dG9wbGF5KTsKLSAgICBJTlRFUlJVUFRJT05fQ0FTRShQcm9jZXNzSW5h
Y3RpdmUpOwotICAgIH0KLSAgICAKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1
cm4gIiI7Ci19CiAjZW5kaWYKIAogc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtTWVkaWFTZXNzaW9u
PiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6Y3JlYXRlKFBsYXRmb3JtTWVkaWFTZXNzaW9uQ2xpZW50
JiBjbGllbnQpCkBAIC04MSw2ICs5NywxMCBAQCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UGxhdGZv
cm1NZWRpYVNlc3Npb24oUGxhdGZvcm1NZWRpYVNlc3Npb25DbGllbnQmIGNsaWVudCkKICAgICAs
IG1fc3RhdGUoSWRsZSkKICAgICAsIG1fc3RhdGVUb1Jlc3RvcmUoSWRsZSkKICAgICAsIG1fbm90
aWZ5aW5nQ2xpZW50KGZhbHNlKQorI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgICwgbV9s
b2dnZXIoY2xpZW50Lmhvc3RpbmdEb2N1bWVudCgpLT5sb2dnZXIoKSkKKyAgICAsIG1fbG9nSWRl
bnRpZmllcihuZXh0TG9nSWRlbnRpZmllcigpKQorI2VuZGlmCiB7CiAgICAgQVNTRVJUKG1fY2xp
ZW50Lm1lZGlhVHlwZSgpID49IE5vbmUgJiYgbV9jbGllbnQubWVkaWFUeXBlKCkgPD0gTWVkaWFT
dHJlYW1DYXB0dXJpbmdBdWRpbyk7CiAgICAgUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpz
aGFyZWRNYW5hZ2VyKCkuYWRkU2Vzc2lvbigqdGhpcyk7CkBAIC05MywxMyArMTEzLDEzIEBAIFBs
YXRmb3JtTWVkaWFTZXNzaW9uOjp+UGxhdGZvcm1NZWRpYVNlc3Npb24oKQogCiB2b2lkIFBsYXRm
b3JtTWVkaWFTZXNzaW9uOjpzZXRTdGF0ZShTdGF0ZSBzdGF0ZSkKIHsKLSAgICBMT0coTWVkaWEs
ICJQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6c2V0U3RhdGUoJXApIC0gJXMiLCB0aGlzLCBzdGF0ZU5h
bWUoc3RhdGUpKTsKKyAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCBzdGF0ZSk7CiAgICAgbV9z
dGF0ZSA9IHN0YXRlOwogfQogCiB2b2lkIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpiZWdpbkludGVy
cnVwdGlvbihJbnRlcnJ1cHRpb25UeXBlIHR5cGUpCiB7Ci0gICAgTE9HKE1lZGlhLCAiUGxhdGZv
cm1NZWRpYVNlc3Npb246OmJlZ2luSW50ZXJydXB0aW9uKCVwKSwgc3RhdGUgPSAlcywgaW50ZXJy
dXB0aW9uIHR5cGUgPSAlcywgaW50ZXJydXB0aW9uIGNvdW50ID0gJWkiLCB0aGlzLCBzdGF0ZU5h
bWUobV9zdGF0ZSksIGludGVycnVwdGlvbk5hbWUodHlwZSksIG1faW50ZXJydXB0aW9uQ291bnQp
OworICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsICJzdGF0ZSA9ICIsIG1fc3RhdGUsICIsIGlu
dGVycnVwdGlvbiB0eXBlID0gIiwgdHlwZSwgIiwgaW50ZXJydXB0aW9uIGNvdW50ID0gIiwgbV9p
bnRlcnJ1cHRpb25Db3VudCk7CiAKICAgICAvLyBXaGVuIGludGVycnVwdGlvbnMgYXJlIG92ZXJy
aWRkZW4sIG1faW50ZXJydXB0aW9uVHlwZSBkb2Vzbid0IGdldCBzZXQuCiAgICAgLy8gR2l2ZSBu
ZXN0ZWQgaW50ZXJydXB0aW9ucyBhIGNoYW5jZSB3aGVuIHRoZSBwcmV2aW91cyBpbnRlcnJ1cHRp
b25zIHdlcmUgb3ZlcnJpZGRlbi4KQEAgLTEwNyw3ICsxMjcsNyBAQCB2b2lkIFBsYXRmb3JtTWVk
aWFTZXNzaW9uOjpiZWdpbkludGVycnVwdGlvbihJbnRlcnJ1cHRpb25UeXBlIHR5cGUpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIGlmIChjbGllbnQoKS5zaG91bGRPdmVycmlkZUJhY2tncm91bmRQ
bGF5YmFja1Jlc3RyaWN0aW9uKHR5cGUpKSB7Ci0gICAgICAgIExPRyhNZWRpYSwgIlBsYXRmb3Jt
TWVkaWFTZXNzaW9uOjpiZWdpbkludGVycnVwdGlvbiglcCksIHJldHVybmluZyBlYXJseSBiZWNh
dXNlIGNsaWVudCBzYXlzIHRvIG92ZXJyaWRlIGludGVycnVwdGlvbiIsIHRoaXMpOworICAgICAg
ICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCAicmV0dXJuaW5nIGVhcmx5IGJlY2F1c2UgY2xpZW50
IHNheXMgdG8gb3ZlcnJpZGUgaW50ZXJydXB0aW9uIik7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKQEAgLTEyMSwxMCArMTQxLDEwIEBAIHZvaWQgUGxhdGZvcm1NZWRpYVNlc3Npb246OmJlZ2lu
SW50ZXJydXB0aW9uKEludGVycnVwdGlvblR5cGUgdHlwZSkKIAogdm9pZCBQbGF0Zm9ybU1lZGlh
U2Vzc2lvbjo6ZW5kSW50ZXJydXB0aW9uKEVuZEludGVycnVwdGlvbkZsYWdzIGZsYWdzKQogewot
ICAgIExPRyhNZWRpYSwgIlBsYXRmb3JtTWVkaWFTZXNzaW9uOjplbmRJbnRlcnJ1cHRpb24oJXAp
IC0gZmxhZ3MgPSAlaSwgc3RhdGVUb1Jlc3RvcmUgPSAlcywgaW50ZXJydXB0aW9uIGNvdW50ID0g
JWkiLCB0aGlzLCAoaW50KWZsYWdzLCBzdGF0ZU5hbWUobV9zdGF0ZVRvUmVzdG9yZSksIG1faW50
ZXJydXB0aW9uQ291bnQpOworICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsICJmbGFncyA9ICIs
IChpbnQpZmxhZ3MsICIsIHN0YXRlVG9SZXN0b3JlID0gIiwgbV9zdGF0ZVRvUmVzdG9yZSwgIiwg
aW50ZXJydXB0aW9uIGNvdW50ID0gIiwgbV9pbnRlcnJ1cHRpb25Db3VudCk7CiAKICAgICBpZiAo
IW1faW50ZXJydXB0aW9uQ291bnQpIHsKLSAgICAgICAgTE9HKE1lZGlhLCAiUGxhdGZvcm1NZWRp
YVNlc3Npb246OmVuZEludGVycnVwdGlvbiglcCkgLSAhISBpZ25vcmluZyBzcHVyaW91cyBpbnRl
cnJ1cHRpb24gZW5kICEhIiwgdGhpcyk7CisgICAgICAgIElORk9fTE9HKExPR0lERU5USUZJRVIs
ICIhISBpZ25vcmluZyBzcHVyaW91cyBpbnRlcnJ1cHRpb24gZW5kICEhIik7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKQEAgLTE0OCwxMCArMTY4LDEwIEBAIHZvaWQgUGxhdGZvcm1NZWRpYVNl
c3Npb246OmNsaWVudFdpbGxCZWdpbkF1dG9wbGF5aW5nKCkKICAgICBpZiAobV9ub3RpZnlpbmdD
bGllbnQpCiAgICAgICAgIHJldHVybjsKIAotICAgIExPRyhNZWRpYSwgIlBsYXRmb3JtTWVkaWFT
ZXNzaW9uOjpjbGllbnRXaWxsQmVnaW5BdXRvcGxheWluZyglcCktIHN0YXRlID0gJXMiLCB0aGlz
LCBzdGF0ZU5hbWUobV9zdGF0ZSkpOworICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsICJzdGF0
ZSA9ICIsIG1fc3RhdGUpOwogICAgIGlmIChzdGF0ZSgpID09IEludGVycnVwdGVkKSB7CiAgICAg
ICAgIG1fc3RhdGVUb1Jlc3RvcmUgPSBBdXRvcGxheWluZzsKLSAgICAgICAgTE9HKE1lZGlhLCAi
ICAgICAgc2V0dGluZyBzdGF0ZVRvUmVzdG9yZSB0byBcIkF1dG9wbGF5aW5nXCIiKTsKKyAgICAg
ICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwgIiAgICAgIHNldHRpbmcgc3RhdGVUb1Jlc3RvcmUg
dG8gXCJBdXRvcGxheWluZ1wiIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTE4MCwx
MCArMjAwLDEwIEBAIGJvb2wgUGxhdGZvcm1NZWRpYVNlc3Npb246OmNsaWVudFdpbGxQYXVzZVBs
YXliYWNrKCkKICAgICBpZiAobV9ub3RpZnlpbmdDbGllbnQpCiAgICAgICAgIHJldHVybiB0cnVl
OwogCi0gICAgTE9HKE1lZGlhLCAiUGxhdGZvcm1NZWRpYVNlc3Npb246OmNsaWVudFdpbGxQYXVz
ZVBsYXliYWNrKCVwKS0gc3RhdGUgPSAlcyIsIHRoaXMsIHN0YXRlTmFtZShtX3N0YXRlKSk7Cisg
ICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwgInN0YXRlID0gIiwgbV9zdGF0ZSk7CiAgICAgaWYg
KHN0YXRlKCkgPT0gSW50ZXJydXB0ZWQpIHsKICAgICAgICAgbV9zdGF0ZVRvUmVzdG9yZSA9IFBh
dXNlZDsKLSAgICAgICAgTE9HKE1lZGlhLCAiICAgICAgc2V0dGluZyBzdGF0ZVRvUmVzdG9yZSB0
byBcIlBhdXNlZFwiIik7CisgICAgICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsICIgICAgICBz
ZXR0aW5nIHN0YXRlVG9SZXN0b3JlIHRvIFwiUGF1c2VkXCIiKTsKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KICAgICAKQEAgLTE5NSwxMyArMjE1LDEzIEBAIGJvb2wgUGxhdGZvcm1NZWRp
YVNlc3Npb246OmNsaWVudFdpbGxQYXVzZVBsYXliYWNrKCkKIAogdm9pZCBQbGF0Zm9ybU1lZGlh
U2Vzc2lvbjo6cGF1c2VTZXNzaW9uKCkKIHsKLSAgICBMT0coTWVkaWEsICJQbGF0Zm9ybU1lZGlh
U2Vzc2lvbjo6cGF1c2VTZXNzaW9uKCVwKSIsIHRoaXMpOworICAgIElORk9fTE9HKExPR0lERU5U
SUZJRVIpOwogICAgIG1fY2xpZW50LnN1c3BlbmRQbGF5YmFjaygpOwogfQogCiB2b2lkIFBsYXRm
b3JtTWVkaWFTZXNzaW9uOjpzdG9wU2Vzc2lvbigpCiB7Ci0gICAgTE9HKE1lZGlhLCAiUGxhdGZv
cm1NZWRpYVNlc3Npb246OnN0b3BTZXNzaW9uKCVwKSIsIHRoaXMpOworICAgIElORk9fTE9HKExP
R0lERU5USUZJRVIpOwogICAgIG1fY2xpZW50LnN1c3BlbmRQbGF5YmFjaygpOwogICAgIFBsYXRm
b3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLnJlbW92ZVNlc3Npb24oKnRo
aXMpOwogfQpAQCAtMjY2LDcgKzI4Niw3IEBAIHZvaWQgUGxhdGZvcm1NZWRpYVNlc3Npb246OnNj
aGVkdWxlQ2xpZW50RGF0YUJ1ZmZlcmluZ0NoZWNrKCkKIAogdm9pZCBQbGF0Zm9ybU1lZGlhU2Vz
c2lvbjo6Y2xpZW50RGF0YUJ1ZmZlcmluZ1RpbWVyRmlyZWQoKQogewotICAgIExPRyhNZWRpYSwg
IlBsYXRmb3JtTWVkaWFTZXNzaW9uOjpjbGllbnREYXRhQnVmZmVyaW5nVGltZXJGaXJlZCglcCkt
IHZpc2libGUgPSAlcyIsIHRoaXMsIG1fY2xpZW50LmVsZW1lbnRJc0hpZGRlbigpID8gImZhbHNl
IiA6ICJ0cnVlIik7CisgICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwgInZpc2libGUgPSAiLCBt
X2NsaWVudC5lbGVtZW50SXNIaWRkZW4oKSk7CiAKICAgICB1cGRhdGVDbGllbnREYXRhQnVmZmVy
aW5nKCk7CiAKQEAgLTM3MCw1ICszOTAsMTMgQEAgdm9pZCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6
Y2xpZW50Q2hhcmFjdGVyaXN0aWNzQ2hhbmdlZCgpCiAgICAgUGxhdGZvcm1NZWRpYVNlc3Npb25N
YW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkuY2xpZW50Q2hhcmFjdGVyaXN0aWNzQ2hhbmdlZCgqdGhp
cyk7CiB9CiAKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKK1dURkxvZ0NoYW5uZWwmIFBsYXRm
b3JtTWVkaWFTZXNzaW9uOjpsb2dDaGFubmVsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gTG9nTWVk
aWE7Cit9CisjZW5kaWYKKwogfQorCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5oCmluZGV4IGVjNThhYjYwYjQwYWZj
YmEyNmJhOWE1YjZjNzg3MDMxNDkxZTJhZDcuLjgzOGUzNDczN2JkY2U3ZDRlMzg5YjgyMDkyNTMx
YmM4NDYwNGViMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1Bs
YXRmb3JtTWVkaWFTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
UGxhdGZvcm1NZWRpYVNlc3Npb24uaApAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBQbGF0Zm9y
bU1lZGlhU2Vzc2lvbl9oCiAKICNpbmNsdWRlICJUaW1lci5oIgorI2luY2x1ZGUgPHd0Zi9Mb2dn
ZXJIZWxwZXIuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtNDQsNiArNDUsOSBAQCBjbGFzcyBQbGF0Zm9ybU1lZGlh
U2Vzc2lvbgogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCiAgICAgOiBwdWJs
aWMgTWVkaWFQbGF5YmFja1RhcmdldENsaWVudAogI2VuZGlmCisjaWYgIVJFTEVBU0VfTE9HX0RJ
U0FCTEVECisgICAgLCBwcml2YXRlIExvZ2dlckhlbHBlcgorI2VuZGlmCiB7CiBwdWJsaWM6CiAg
ICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybU1lZGlhU2Vzc2lvbj4gY3JlYXRlKFBs
YXRmb3JtTWVkaWFTZXNzaW9uQ2xpZW50Jik7CkBAIC0xNzYsNiArMTgwLDEzIEBAIHB1YmxpYzoK
IHByb3RlY3RlZDoKICAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbkNsaWVudCYgY2xpZW50KCkgY29u
c3QgeyByZXR1cm4gbV9jbGllbnQ7IH0KIAorI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAg
IGNvbnN0IExvZ2dlciYgbG9nZ2VyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9sb2dnZXIuZ2V0
KCk7IH0KKyAgICBjb25zdCB2b2lkKiBsb2dJZGVudGlmaWVyKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB2b2lkKj4obV9sb2dJZGVudGlmaWVyKTsgfQor
ICAgIGNvbnN0IGNoYXIqIGxvZ0NsYXNzTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbiI7IH0KKyAgICBXVEZMb2dDaGFubmVsJiBsb2dDaGFubmVsKCkg
Y29uc3QgZmluYWw7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICB2b2lkIGNsaWVudERhdGFCdWZm
ZXJpbmdUaW1lckZpcmVkKCk7CiAgICAgdm9pZCB1cGRhdGVDbGllbnREYXRhQnVmZmVyaW5nKCk7
CkBAIC0xODksNiArMjAwLDExIEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX25vdGlmeWluZ0NsaWVu
dDsKICAgICBib29sIG1faXNQbGF5aW5nVG9XaXJlbGVzc1BsYXliYWNrVGFyZ2V0IHsgZmFsc2Ug
fTsKIAorI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgIFJlZjxjb25zdCBMb2dnZXI+IG1f
bG9nZ2VyOworICAgIHVpbnQ2NF90IG1fbG9nSWRlbnRpZmllcjsKKyNlbmRpZgorCiAgICAgZnJp
ZW5kIGNsYXNzIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjsKIH07CiAKQEAgLTIzMCw3ICsy
NDYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzUGxheWluZ1RvV2lyZWxlc3NQbGF5
YmFja1RhcmdldCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCB2b2lkIHNl
dFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KGJvb2wpIHsgfQogCi0gICAgdmlydHVhbCBjb25z
dCBEb2N1bWVudCogaG9zdGluZ0RvY3VtZW50KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgRG9j
dW1lbnQqIGhvc3RpbmdEb2N1bWVudCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFN0cmluZyBz
b3VyY2VBcHBsaWNhdGlvbklkZW50aWZpZXIoKSBjb25zdCA9IDA7CiAKICAgICB2aXJ0dWFsIGJv
b2wgcHJvY2Vzc2luZ1VzZXJHZXN0dXJlRm9yTWVkaWEoKSBjb25zdCA9IDA7CkBAIC0yMzksNiAr
MjU1LDMyIEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIH5QbGF0Zm9ybU1lZGlhU2Vzc2lvbkNs
aWVudCgpID0gZGVmYXVsdDsKIH07CiAKK1N0cmluZyBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmlu
ZyhQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6U3RhdGUpOworU3RyaW5nIGNvbnZlcnRFbnVtZXJhdGlv
blRvU3RyaW5nKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpJbnRlcnJ1cHRpb25UeXBlKTsKKwogfQog
CituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgVHlwZT4KK3N0cnVjdCBMb2dB
cmd1bWVudDsKKwordGVtcGxhdGUgPD4KK3N0cnVjdCBMb2dBcmd1bWVudDxXZWJDb3JlOjpQbGF0
Zm9ybU1lZGlhU2Vzc2lvbjo6U3RhdGU+IHsKKyAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKGNv
bnN0IFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uOjpTdGF0ZSBzdGF0ZSkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhzdGF0ZSk7CisgICAgfQor
fTsKKwordGVtcGxhdGUgPD4KK3N0cnVjdCBMb2dBcmd1bWVudDxXZWJDb3JlOjpQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbjo6SW50ZXJydXB0aW9uVHlwZT4geworICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJp
bmcoY29uc3QgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb246OkludGVycnVwdGlvblR5cGUg
c3RhdGUpCisgICAgeworICAgICAgICByZXR1cm4gY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmco
c3RhdGUpOworICAgIH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdURgorCiAjZW5kaWYgLy8gUGxh
dGZvcm1NZWRpYVNlc3Npb25faAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>