<?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>184992</bug_id>
          
          <creation_ts>2018-04-25 13:06:41 -0700</creation_ts>
          <short_desc>[iOS] remove media element parameter from MediaElementSession methods</short_desc>
          <delta_ts>2018-04-25 15:25:20 -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>commit-queue</cc>
    
    <cc>jonlee</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1417707</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2018-04-25 13:06:41 -0700</bug_when>
    <thetext>MediaElementSession as a reference to the owning HTMLMediaElement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1417708</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-04-25 13:08:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/39731624&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1417716</commentid>
    <comment_count>2</comment_count>
      <attachid>338776</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2018-04-25 13:15:49 -0700</bug_when>
    <thetext>Created attachment 338776
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1417774</commentid>
    <comment_count>3</comment_count>
      <attachid>338793</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2018-04-25 14:25:56 -0700</bug_when>
    <thetext>Created attachment 338793
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1417811</commentid>
    <comment_count>4</comment_count>
      <attachid>338793</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-04-25 15:25:18 -0700</bug_when>
    <thetext>Comment on attachment 338793
Patch

Clearing flags on attachment: 338793

Committed r231025: &lt;https://trac.webkit.org/changeset/231025&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1417812</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-04-25 15:25:20 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>338776</attachid>
            <date>2018-04-25 13:15:49 -0700</date>
            <delta_ts>2018-04-25 14:25:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-184992-20180425131548.patch</filename>
            <type>text/plain</type>
            <size>44609</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMwOTYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWE4M2VmNWMzM2FlODc1
MWE5NTgxMmZjOGE3YTU4MjkyNDRhMThhOS4uOWExMmU3OTY3NDVkMmEzZDUwZTlmM2NmMTMwY2Ez
YmE4ZWMzZmUzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc4IEBACisyMDE4LTA0LTI1ICBFcmlj
IENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIHJlbW92
ZSBtZWRpYSBlbGVtZW50IHBhcmFtZXRlciBmcm9tIE1lZGlhRWxlbWVudFNlc3Npb24gbWV0aG9k
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg0OTky
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zOTczMTYyND4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIG5vIGJlaGF2aW9yIGNo
YW5nZS4KKworICAgICAgICAqIE1vZHVsZXMvbWVkaWFjb250cm9scy9NZWRpYUNvbnRyb2xzSG9z
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xzSG9zdDo6YWxsb3dzSW5saW5l
TWVkaWFQbGF5YmFjayBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xzSG9z
dDo6dXNlckdlc3R1cmVSZXF1aXJlZCBjb25zdCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5TWVkaWFPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eU1lZGlhT2JqZWN0Ojppc1BsYXlpbmdJbmxpbmUgY29uc3QpOgorICAgICAgICAqIGh0bWwv
SFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50
Ojp+SFRNTE1lZGlhRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50
OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpw
cmVwYXJlRm9yTG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzZWxl
Y3RNZWRpYVJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Omxv
YWRSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpjYW5UcmFu
c2l0aW9uRnJvbUF1dG9wbGF5VG9QbGF5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
ZWRpYUVsZW1lbnQ6OnNldFJlYWR5U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudDo6cGxheSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpwYXVz
ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpwYXVzZUludGVybmFsKToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNldFZvbHVtZSk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckRpZEFkZEF1ZGlvVHJhY2sp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c291cmNlV2FzQWRkZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFFbmdpbmVXYXNVcGRhdGVk
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyQ2hhcmFj
dGVyaXN0aWNDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnVw
ZGF0ZVBsYXlTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpjbGVh
ck1lZGlhUGxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnJlc3Vt
ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp3ZWJraXRTaG93UGxheWJh
Y2tUYXJnZXRQaWNrZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6YWRk
RXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpyZW1v
dmVFdmVudExpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmVu
cXVldWVQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUNoYW5nZWRFdmVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpleGl0RnVsbHNjcmVlbik6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpjb25maWd1cmVNZWRpYUNvbnRyb2xzKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmNyZWF0ZU1lZGlhUGxheWVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVySXNGdWxsc2NyZWVuUGVybWl0
dGVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZU1l
ZGlhU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFTdGF0
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjphbGxvd3NNZWRp
YURvY3VtZW50SW5saW5lUGxheWJhY2tDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
ZWRpYUVsZW1lbnQ6OnVwZGF0ZVNob3VsZFBsYXkpOgorICAgICAgICAqIGh0bWwvSFRNTFZpZGVv
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50OjpwYXJzZUF0
dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50OjpzdXBwb3J0c0Z1
bGxzY3JlZW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6d2Vi
a2l0RW50ZXJGdWxsc2NyZWVuKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQ6
OndlYmtpdFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQ6OndlYmtpdFN1cHBvcnRzUHJlc2VudGF0aW9uTW9kZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50OjpzZXRGdWxsc2NyZWVu
TW9kZSk6CisgICAgICAgICogaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhRWxlbWVudFNlc3Npb246OnBsYXliYWNrUGVybWl0dGVkIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRWxlbWVudFNlc3Npb246OmRhdGFMb2FkaW5nUGVybWl0
dGVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRWxlbWVudFNlc3Npb246OmZ1bGxz
Y3JlZW5QZXJtaXR0ZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbGVtZW50U2Vz
c2lvbjo6cGFnZUFsbG93c0RhdGFMb2FkaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhRWxlbWVudFNlc3Npb246OnBhZ2VBbGxvd3NQbGF5YmFja0FmdGVyUmVzdW1pbmcgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbGVtZW50U2Vzc2lvbjo6Y2FuU2hvd0NvbnRyb2xz
TWFuYWdlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVsZW1lbnRTZXNzaW9uOjpz
aG93UGxheWJhY2tUYXJnZXRQaWNrZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbGVtZW50
U2Vzc2lvbjo6aGFzV2lyZWxlc3NQbGF5YmFja1RhcmdldHMgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFFbGVtZW50U2Vzc2lvbjo6d2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbGVtZW50U2Vzc2lvbjo6c2V0V2lyZWxl
c3NWaWRlb1BsYXliYWNrRGlzYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbGVtZW50
U2Vzc2lvbjo6c2V0SGFzUGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlMaXN0ZW5lcnMpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFFbGVtZW50U2Vzc2lvbjo6bWVkaWFTdGF0ZURpZENoYW5nZSk6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVsZW1lbnRTZXNzaW9uOjplZmZlY3RpdmVQcmVsb2Fk
Rm9yRWxlbWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVsZW1lbnRTZXNzaW9u
OjpyZXF1aXJlc0Z1bGxzY3JlZW5Gb3JWaWRlb1BsYXliYWNrIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhRWxlbWVudFNlc3Npb246OmFsbG93c0F1dG9tYXRpY01lZGlhRGF0YUxvYWRp
bmcgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbGVtZW50U2Vzc2lvbjo6bWVkaWFF
bmdpbmVVcGRhdGVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRWxlbWVudFNlc3Npb246OmFs
bG93c1BpY3R1cmVJblBpY3R1cmUgY29uc3QpOgorICAgICAgICAqIGh0bWwvTWVkaWFFbGVtZW50
U2Vzc2lvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1BsYXliYWNrU2Vzc2lvbk1vZGVs
TWVkaWFFbGVtZW50Lm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxheWJhY2tTZXNzaW9uTW9kZWxN
ZWRpYUVsZW1lbnQ6OndpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkIGNvbnN0KToKKwogMjAx
OC0wNC0yNCAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBEb24n
dCBhZGQgc3lzdGVtIGZyYW1ld29yayBwYXRocyB0byBGUkFNRVdPUktfU0VBUkNIX1BBVEhTCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY29udHJvbHMvTWVkaWFDb250
cm9sc0hvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL01lZGlh
Q29udHJvbHNIb3N0LmNwcAppbmRleCBmZGE4NjEzMzgxZjk5YzIzZDBmN2Y2MDYzNWU3ZjI0NTJm
MWRkOTA1Li4yNmZlMTg3NTJmYjcxMjMzNzYzMTM2NWU2MjA4MzY2MDI2ZjViOTZjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY29udHJvbHMvTWVkaWFDb250cm9sc0hv
c3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjb250cm9scy9NZWRpYUNv
bnRyb2xzSG9zdC5jcHAKQEAgLTE4NSw3ICsxODUsNyBAQCB2b2lkIE1lZGlhQ29udHJvbHNIb3N0
Ojp1cGRhdGVDYXB0aW9uRGlzcGxheVNpemVzKCkKICAgICAKIGJvb2wgTWVkaWFDb250cm9sc0hv
c3Q6OmFsbG93c0lubGluZU1lZGlhUGxheWJhY2soKSBjb25zdAogewotICAgIHJldHVybiAhbV9t
ZWRpYUVsZW1lbnQtPm1lZGlhU2Vzc2lvbigpLnJlcXVpcmVzRnVsbHNjcmVlbkZvclZpZGVvUGxh
eWJhY2soKm1fbWVkaWFFbGVtZW50KTsKKyAgICByZXR1cm4gIW1fbWVkaWFFbGVtZW50LT5tZWRp
YVNlc3Npb24oKS5yZXF1aXJlc0Z1bGxzY3JlZW5Gb3JWaWRlb1BsYXliYWNrKCk7CiB9CiAKIGJv
b2wgTWVkaWFDb250cm9sc0hvc3Q6OnN1cHBvcnRzRnVsbHNjcmVlbigpIGNvbnN0CkBAIC0yMTAs
NyArMjEwLDcgQEAgdm9pZCBNZWRpYUNvbnRyb2xzSG9zdDo6c2V0UHJlcGFyZWRUb1JldHVyblZp
ZGVvTGF5ZXJUb0lubGluZShib29sIHZhbHVlKQogCiBib29sIE1lZGlhQ29udHJvbHNIb3N0Ojp1
c2VyR2VzdHVyZVJlcXVpcmVkKCkgY29uc3QKIHsKLSAgICByZXR1cm4gIW1fbWVkaWFFbGVtZW50
LT5tZWRpYVNlc3Npb24oKS5wbGF5YmFja1Blcm1pdHRlZCgqbV9tZWRpYUVsZW1lbnQpOworICAg
IHJldHVybiAhbV9tZWRpYUVsZW1lbnQtPm1lZGlhU2Vzc2lvbigpLnBsYXliYWNrUGVybWl0dGVk
KCk7CiB9CiAKIGJvb2wgTWVkaWFDb250cm9sc0hvc3Q6OnNob3VsZEZvcmNlQ29udHJvbHNEaXNw
bGF5KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU1lZGlhT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eU1lZGlhT2JqZWN0LmNwcAppbmRleCBiMzc3Y2U5NjhlYWViYWEwMjEzMTE0
OTE4NjJkODllYTBmYmYxODQ3Li5lYWExODc0MmZkMDYyZTg5NGQ0MDI0OTc5ZDY3MWI0NzdmYWY1
NWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlNZWRpYU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5TWVkaWFPYmplY3QuY3BwCkBAIC0xNzMsNyArMTczLDcgQEAgYm9vbCBBY2Nlc3Np
YmlsaXR5TWVkaWFPYmplY3Q6OmlzUGxheWluZ0lubGluZSgpIGNvbnN0CiAgICAgaWYgKCFlbGVt
ZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgcmV0dXJuICFlbGVtZW50LT5t
ZWRpYVNlc3Npb24oKS5yZXF1aXJlc0Z1bGxzY3JlZW5Gb3JWaWRlb1BsYXliYWNrKCplbGVtZW50
KTsKKyAgICByZXR1cm4gIWVsZW1lbnQtPm1lZGlhU2Vzc2lvbigpLnJlcXVpcmVzRnVsbHNjcmVl
bkZvclZpZGVvUGxheWJhY2soKTsKIH0KIAogdm9pZCBBY2Nlc3NpYmlsaXR5TWVkaWFPYmplY3Q6
OmVudGVyRnVsbHNjcmVlbigpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmNwcAppbmRleCA4ZTJkNTU0ZTFjN2UwMGYwOGQ4NDY2ODUyMTZiMDhkNWUyMWJhMTRlLi5k
ZTFjMmU4NjZkZDVkNGFjMmY4NGNlNTZhZmZjMzJmNzkzOTEwMjk5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTYwOSw3ICs2MDksNyBAQCBIVE1MTWVkaWFF
bGVtZW50Ojp+SFRNTE1lZGlhRWxlbWVudCgpCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNL
X1RBUkdFVCkKICAgICBpZiAoaGFzRXZlbnRMaXN0ZW5lcnMoZXZlbnROYW1lcygpLndlYmtpdHBs
YXliYWNrdGFyZ2V0YXZhaWxhYmlsaXR5Y2hhbmdlZEV2ZW50KSkgewogICAgICAgICBtX2hhc1Bs
YXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5TGlzdGVuZXJzID0gZmFsc2U7Ci0gICAgICAgIG1fbWVk
aWFTZXNzaW9uLT5zZXRIYXNQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUxpc3RlbmVycygqdGhp
cywgZmFsc2UpOworICAgICAgICBtX21lZGlhU2Vzc2lvbi0+c2V0SGFzUGxheWJhY2tUYXJnZXRB
dmFpbGFiaWxpdHlMaXN0ZW5lcnMoZmFsc2UpOwogICAgICAgICB1cGRhdGVNZWRpYVN0YXRlKCk7
CiAgICAgfQogI2VuZGlmCkBAIC04NjAsNyArODYwLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50
OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNT
dHIKIAogICAgICAgICAvLyBUaGUgYXR0cmlidXRlIG11c3QgYmUgaWdub3JlZCBpZiB0aGUgYXV0
b3BsYXkgYXR0cmlidXRlIGlzIHByZXNlbnQKICAgICAgICAgaWYgKCFhdXRvcGxheSgpICYmICFt
X2hhdmVQcmVwYXJlZFRvUGxheSAmJiBtX3BsYXllcikKLSAgICAgICAgICAgIG1fcGxheWVyLT5z
ZXRQcmVsb2FkKG1fbWVkaWFTZXNzaW9uLT5lZmZlY3RpdmVQcmVsb2FkRm9yRWxlbWVudCgqdGhp
cykpOworICAgICAgICAgICAgbV9wbGF5ZXItPnNldFByZWxvYWQobV9tZWRpYVNlc3Npb24tPmVm
ZmVjdGl2ZVByZWxvYWRGb3JFbGVtZW50KCkpOwogCiAgICAgfSBlbHNlIGlmIChuYW1lID09IG1l
ZGlhZ3JvdXBBdHRyKQogICAgICAgICBzZXRNZWRpYUdyb3VwKHZhbHVlKTsKQEAgLTEzNDMsNyAr
MTM0Myw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cHJlcGFyZUZvckxvYWQoKQogICAgICAg
ICAvLyA5IC0gSW52b2tlIHRoZSBtZWRpYSBlbGVtZW50J3MgcmVzb3VyY2Ugc2VsZWN0aW9uIGFs
Z29yaXRobS4KICAgICAgICAgLy8gTm90ZSwgdW5sZXNzIHRoZSByZXN0cmljdGlvbiBvbiByZXF1
aXJpbmcgdXNlciBhY3Rpb24gaGFzIGJlZW4gcmVtb3ZlZCwKICAgICAgICAgLy8gZG8gbm90IGJl
Z2luIGRvd25sb2FkaW5nIGRhdGEuCi0gICAgICAgIGlmIChtX21lZGlhU2Vzc2lvbi0+ZGF0YUxv
YWRpbmdQZXJtaXR0ZWQoKnRoaXMpKQorICAgICAgICBpZiAobV9tZWRpYVNlc3Npb24tPmRhdGFM
b2FkaW5nUGVybWl0dGVkKCkpCiAgICAgICAgICAgICBzZWxlY3RNZWRpYVJlc291cmNlKCk7CiAg
ICAgfQogCkBAIC0xMzcwLDcgKzEzNzAsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNlbGVj
dE1lZGlhUmVzb3VyY2UoKQogICAgIGlmIChtX3Jlc291cmNlU2VsZWN0aW9uVGFza1F1ZXVlLmhh
c1BlbmRpbmdUYXNrcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIW1fbWVkaWFTZXNz
aW9uLT5wYWdlQWxsb3dzRGF0YUxvYWRpbmcoKnRoaXMpKSB7CisgICAgaWYgKCFtX21lZGlhU2Vz
c2lvbi0+cGFnZUFsbG93c0RhdGFMb2FkaW5nKCkpIHsKICAgICAgICAgQUxXQVlTX0xPRyhMT0dJ
REVOVElGSUVSLCAibm90IGFsbG93ZWQgdG8gbG9hZCBpbiBiYWNrZ3JvdW5kLCB3YWl0aW5nIik7
CiAgICAgICAgIHNldFNob3VsZERlbGF5TG9hZEV2ZW50KGZhbHNlKTsKICAgICAgICAgaWYgKG1f
aXNXYWl0aW5nVW50aWxNZWRpYUNhblN0YXJ0KQpAQCAtMTYxMSw3ICsxNjExLDcgQEAgdm9pZCBI
VE1MTWVkaWFFbGVtZW50Ojpsb2FkUmVzb3VyY2UoY29uc3QgVVJMJiBpbml0aWFsVVJMLCBDb250
ZW50VHlwZSYgY29udGVudFQKICAgICBzZXREaXNwbGF5TW9kZShVbmtub3duKTsKIAogICAgIGlm
ICghYXV0b3BsYXkoKSAmJiAhbV9oYXZlUHJlcGFyZWRUb1BsYXkpCi0gICAgICAgIG1fcGxheWVy
LT5zZXRQcmVsb2FkKG1fbWVkaWFTZXNzaW9uLT5lZmZlY3RpdmVQcmVsb2FkRm9yRWxlbWVudCgq
dGhpcykpOworICAgICAgICBtX3BsYXllci0+c2V0UHJlbG9hZChtX21lZGlhU2Vzc2lvbi0+ZWZm
ZWN0aXZlUHJlbG9hZEZvckVsZW1lbnQoKSk7CiAgICAgbV9wbGF5ZXItPnNldFByZXNlcnZlc1Bp
dGNoKG1fd2Via2l0UHJlc2VydmVzUGl0Y2gpOwogCiAgICAgaWYgKCFtX2V4cGxpY2l0bHlNdXRl
ZCkgewpAQCAtMjQxMSw3ICsyNDExLDcgQEAgU3VjY2Vzc09yPE1lZGlhUGxheWJhY2tEZW5pYWxS
ZWFzb24+IEhUTUxNZWRpYUVsZW1lbnQ6OmNhblRyYW5zaXRpb25Gcm9tQXV0b3BsYXkKICAgICAg
ICAgJiYgIXBhdXNlZEZvclVzZXJJbnRlcmFjdGlvbigpCiAgICAgICAgICYmICFkb2N1bWVudCgp
LmlzU2FuZGJveGVkKFNhbmRib3hBdXRvbWF0aWNGZWF0dXJlcykKICAgICAgICAgJiYgbV9yZWFk
eVN0YXRlID09IEhBVkVfRU5PVUdIX0RBVEEpCi0gICAgICAgIHJldHVybiBtZWRpYVNlc3Npb24o
KS5wbGF5YmFja1Blcm1pdHRlZCgqdGhpcyk7CisgICAgICAgIHJldHVybiBtZWRpYVNlc3Npb24o
KS5wbGF5YmFja1Blcm1pdHRlZCgpOwogCiAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAi
cGFnZSBjb25zZW50IHJlcXVpcmVkIik7CiAgICAgcmV0dXJuIE1lZGlhUGxheWJhY2tEZW5pYWxS
ZWFzb246OlBhZ2VDb25zZW50UmVxdWlyZWQ7CkBAIC0yNTU0LDcgKzI1NTQsNyBAQCB2b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6OnNldFJlYWR5U3RhdGUoTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUgc3Rh
dGUpCiAKICAgICAvLyBJZiB3ZSB0cmFuc2l0aW9uIHRvIHRoZSBGdXR1cmUgRGF0YSBzdGF0ZSBh
bmQgd2UncmUgYWJvdXQgdG8gYmVnaW4gcGxheWluZywgZW5zdXJlIHBsYXliYWNrIGlzIGFjdHVh
bGx5IHBlcm1pdHRlZCBmaXJzdCwKICAgICAvLyBob25vcmluZyBhbnkgcGxheWJhY2sgZGVuaWFs
IHJlYXNvbnMgc3VjaCBhcyB0aGUgcmVxdWlyZW1lbnQgb2YgYSB1c2VyIGdlc3R1cmUuCi0gICAg
aWYgKG1fcmVhZHlTdGF0ZSA9PSBIQVZFX0ZVVFVSRV9EQVRBICYmIG9sZFN0YXRlIDwgSEFWRV9G
VVRVUkVfREFUQSAmJiBwb3RlbnRpYWxseVBsYXlpbmcoKSAmJiAhbV9tZWRpYVNlc3Npb24tPnBs
YXliYWNrUGVybWl0dGVkKCp0aGlzKSkgeworICAgIGlmIChtX3JlYWR5U3RhdGUgPT0gSEFWRV9G
VVRVUkVfREFUQSAmJiBvbGRTdGF0ZSA8IEhBVkVfRlVUVVJFX0RBVEEgJiYgcG90ZW50aWFsbHlQ
bGF5aW5nKCkgJiYgIW1fbWVkaWFTZXNzaW9uLT5wbGF5YmFja1Blcm1pdHRlZCgpKSB7CiAgICAg
ICAgIGF1dG8gY2FuVHJhbnNpdGlvbiA9IGNhblRyYW5zaXRpb25Gcm9tQXV0b3BsYXlUb1BsYXko
KTsKICAgICAgICAgaWYgKGNhblRyYW5zaXRpb24gJiYgY2FuVHJhbnNpdGlvbi52YWx1ZSgpID09
IE1lZGlhUGxheWJhY2tEZW5pYWxSZWFzb246OlVzZXJHZXN0dXJlUmVxdWlyZWQpCiAgICAgICAg
ICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJBdXRvcGxheSBibG9ja2VkLCB1c2VyIGdl
c3R1cmUgcmVxdWlyZWQiKTsKQEAgLTM0MDgsNyArMzQwOCw3IEBAIHZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6cGxheShET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlKQogewogICAgIEFM
V0FZU19MT0coTE9HSURFTlRJRklFUik7CiAKLSAgICBhdXRvIHN1Y2Nlc3MgPSBtX21lZGlhU2Vz
c2lvbi0+cGxheWJhY2tQZXJtaXR0ZWQoKnRoaXMpOworICAgIGF1dG8gc3VjY2VzcyA9IG1fbWVk
aWFTZXNzaW9uLT5wbGF5YmFja1Blcm1pdHRlZCgpOwogICAgIGlmICghc3VjY2VzcykgewogICAg
ICAgICBpZiAoc3VjY2Vzcy52YWx1ZSgpID09IE1lZGlhUGxheWJhY2tEZW5pYWxSZWFzb246OlVz
ZXJHZXN0dXJlUmVxdWlyZWQpCiAgICAgICAgICAgICBzZXRQbGF5YmFja1dpdGhvdXRVc2VyR2Vz
dHVyZShQbGF5YmFja1dpdGhvdXRVc2VyR2VzdHVyZTo6UHJldmVudGVkKTsKQEAgLTM0MzIsNyAr
MzQzMiw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cGxheSgpCiB7CiAgICAgQUxXQVlTX0xP
RyhMT0dJREVOVElGSUVSKTsKIAotICAgIGF1dG8gc3VjY2VzcyA9IG1fbWVkaWFTZXNzaW9uLT5w
bGF5YmFja1Blcm1pdHRlZCgqdGhpcyk7CisgICAgYXV0byBzdWNjZXNzID0gbV9tZWRpYVNlc3Np
b24tPnBsYXliYWNrUGVybWl0dGVkKCk7CiAgICAgaWYgKCFzdWNjZXNzKSB7CiAgICAgICAgIGlm
IChzdWNjZXNzLnZhbHVlKCkgPT0gTWVkaWFQbGF5YmFja0RlbmlhbFJlYXNvbjo6VXNlckdlc3R1
cmVSZXF1aXJlZCkKICAgICAgICAgICAgIHNldFBsYXliYWNrV2l0aG91dFVzZXJHZXN0dXJlKFBs
YXliYWNrV2l0aG91dFVzZXJHZXN0dXJlOjpQcmV2ZW50ZWQpOwpAQCAtMzUyNSw3ICszNTI1LDcg
QEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpwYXVzZSgpCiAgICAgaWYgKG1fd2FpdGluZ1RvRW50
ZXJGdWxsc2NyZWVuKQogICAgICAgICBtX3dhaXRpbmdUb0VudGVyRnVsbHNjcmVlbiA9IGZhbHNl
OwogCi0gICAgaWYgKCFtX21lZGlhU2Vzc2lvbi0+cGxheWJhY2tQZXJtaXR0ZWQoKnRoaXMpKQor
ICAgIGlmICghbV9tZWRpYVNlc3Npb24tPnBsYXliYWNrUGVybWl0dGVkKCkpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIGlmIChwcm9jZXNzaW5nVXNlckdlc3R1cmVGb3JNZWRpYSgpKQpAQCAtMzU1
Myw3ICszNTUzLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpwYXVzZUludGVybmFsKCkKICAg
ICBpZiAoIW1fcGxheWVyIHx8IG1fbmV0d29ya1N0YXRlID09IE5FVFdPUktfRU1QVFkpIHsKICAg
ICAgICAgLy8gVW5sZXNzIHRoZSByZXN0cmljdGlvbiBvbiBtZWRpYSByZXF1aXJpbmcgdXNlciBh
Y3Rpb24gaGFzIGJlZW4gbGlmdGVkCiAgICAgICAgIC8vIGRvbid0IHRyaWdnZXIgbG9hZGluZyBp
ZiBhIHNjcmlwdCBjYWxscyBwYXVzZSgpLgotICAgICAgICBpZiAoIW1fbWVkaWFTZXNzaW9uLT5w
bGF5YmFja1Blcm1pdHRlZCgqdGhpcykpCisgICAgICAgIGlmICghbV9tZWRpYVNlc3Npb24tPnBs
YXliYWNrUGVybWl0dGVkKCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIHNlbGVjdE1l
ZGlhUmVzb3VyY2UoKTsKICAgICB9CkBAIC0zNjQyLDcgKzM2NDIsNyBAQCBFeGNlcHRpb25Pcjx2
b2lkPiBIVE1MTWVkaWFFbGVtZW50OjpzZXRWb2x1bWUoZG91YmxlIHZvbHVtZSkKICAgICB1cGRh
dGVWb2x1bWUoKTsKICAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS52b2x1bWVjaGFuZ2VF
dmVudCk7CiAKLSAgICBpZiAoaXNQbGF5aW5nKCkgJiYgIW1fbWVkaWFTZXNzaW9uLT5wbGF5YmFj
a1Blcm1pdHRlZCgqdGhpcykpIHsKKyAgICBpZiAoaXNQbGF5aW5nKCkgJiYgIW1fbWVkaWFTZXNz
aW9uLT5wbGF5YmFja1Blcm1pdHRlZCgpKSB7CiAgICAgICAgIHBhdXNlSW50ZXJuYWwoKTsKICAg
ICAgICAgc2V0UGxheWJhY2tXaXRob3V0VXNlckdlc3R1cmUoUGxheWJhY2tXaXRob3V0VXNlckdl
c3R1cmU6OlByZXZlbnRlZCk7CiAgICAgfQpAQCAtMzkwNyw3ICszOTA3LDcgQEAgZG91YmxlIEhU
TUxNZWRpYUVsZW1lbnQ6OnBlcmNlbnRMb2FkZWQoKSBjb25zdAogCiB2b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6Om1lZGlhUGxheWVyRGlkQWRkQXVkaW9UcmFjayhBdWRpb1RyYWNrUHJpdmF0ZSYgdHJh
Y2spCiB7Ci0gICAgaWYgKGlzUGxheWluZygpICYmICFtX21lZGlhU2Vzc2lvbi0+cGxheWJhY2tQ
ZXJtaXR0ZWQoKnRoaXMpKSB7CisgICAgaWYgKGlzUGxheWluZygpICYmICFtX21lZGlhU2Vzc2lv
bi0+cGxheWJhY2tQZXJtaXR0ZWQoKSkgewogICAgICAgICBwYXVzZUludGVybmFsKCk7CiAgICAg
ICAgIHNldFBsYXliYWNrV2l0aG91dFVzZXJHZXN0dXJlKFBsYXliYWNrV2l0aG91dFVzZXJHZXN0
dXJlOjpQcmV2ZW50ZWQpOwogICAgIH0KQEAgLTQ2MTUsNyArNDYxNSw3IEBAIHZvaWQgSFRNTE1l
ZGlhRWxlbWVudDo6c291cmNlV2FzQWRkZWQoSFRNTFNvdXJjZUVsZW1lbnQmIHNvdXJjZSkKICAg
ICBpZiAobV9uZXR3b3JrU3RhdGUgPT0gTkVUV09SS19FTVBUWSkgewogICAgICAgICBtX25leHRD
aGlsZE5vZGVUb0NvbnNpZGVyID0gJnNvdXJjZTsKICNpZiBQTEFURk9STShJT1MpCi0gICAgICAg
IGlmIChtX21lZGlhU2Vzc2lvbi0+ZGF0YUxvYWRpbmdQZXJtaXR0ZWQoKnRoaXMpKQorICAgICAg
ICBpZiAobV9tZWRpYVNlc3Npb24tPmRhdGFMb2FkaW5nUGVybWl0dGVkKCkpCiAjZW5kaWYKICAg
ICAgICAgICAgIHNlbGVjdE1lZGlhUmVzb3VyY2UoKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNDk1
Niw3ICs0OTU2LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYUVuZ2luZVdhc1VwZGF0
ZWQoKQogICAgIHVwZGF0ZVJlbmRlcmVyKCk7CiAgICAgZW5kUHJvY2Vzc2luZ01lZGlhUGxheWVy
Q2FsbGJhY2soKTsKIAotICAgIG1fbWVkaWFTZXNzaW9uLT5tZWRpYUVuZ2luZVVwZGF0ZWQoKnRo
aXMpOworICAgIG1fbWVkaWFTZXNzaW9uLT5tZWRpYUVuZ2luZVVwZGF0ZWQoKTsKIAogI2lmIEVO
QUJMRShXRUJfQVVESU8pCiAgICAgaWYgKG1fYXVkaW9Tb3VyY2VOb2RlICYmIGF1ZGlvU291cmNl
UHJvdmlkZXIoKSkgewpAQCAtNTAyOSw3ICs1MDI5LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50
OjptZWRpYVBsYXllckNoYXJhY3RlcmlzdGljQ2hhbmdlZChNZWRpYVBsYXllciopCiAgICAgICAg
IG1lZGlhQ29udHJvbHMoKS0+cmVzZXQoKTsKICAgICB1cGRhdGVSZW5kZXJlcigpOwogCi0gICAg
aWYgKCFwYXVzZWQoKSAmJiAhbV9tZWRpYVNlc3Npb24tPnBsYXliYWNrUGVybWl0dGVkKCp0aGlz
KSkgeworICAgIGlmICghcGF1c2VkKCkgJiYgIW1fbWVkaWFTZXNzaW9uLT5wbGF5YmFja1Blcm1p
dHRlZCgpKSB7CiAgICAgICAgIHBhdXNlSW50ZXJuYWwoKTsKICAgICAgICAgc2V0UGxheWJhY2tX
aXRob3V0VXNlckdlc3R1cmUoUGxheWJhY2tXaXRob3V0VXNlckdlc3R1cmU6OlByZXZlbnRlZCk7
CiAgICAgfQpAQCAtNTI2NSw3ICs1MjY1LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1cGRh
dGVQbGF5U3RhdGUoVXBkYXRlU3RhdGUgdXBkYXRlU3RhdGUpCiAKICAgICBJTkZPX0xPRyhMT0dJ
REVOVElGSUVSLCAic2hvdWxkQmVQbGF5aW5nID0gIiwgc2hvdWxkQmVQbGF5aW5nLCAiLCBwbGF5
ZXJQYXVzZWQgPSAiLCBwbGF5ZXJQYXVzZWQpOwogCi0gICAgaWYgKHNob3VsZEJlUGxheWluZyAm
JiBwbGF5ZXJQYXVzZWQgJiYgbV9tZWRpYVNlc3Npb24tPnJlcXVpcmVzRnVsbHNjcmVlbkZvclZp
ZGVvUGxheWJhY2soKnRoaXMpICYmIChtX3dhaXRpbmdUb0VudGVyRnVsbHNjcmVlbiB8fCAhaXNG
dWxsc2NyZWVuKCkpKSB7CisgICAgaWYgKHNob3VsZEJlUGxheWluZyAmJiBwbGF5ZXJQYXVzZWQg
JiYgbV9tZWRpYVNlc3Npb24tPnJlcXVpcmVzRnVsbHNjcmVlbkZvclZpZGVvUGxheWJhY2soKSAm
JiAobV93YWl0aW5nVG9FbnRlckZ1bGxzY3JlZW4gfHwgIWlzRnVsbHNjcmVlbigpKSkgewogICAg
ICAgICBpZiAoIW1fd2FpdGluZ1RvRW50ZXJGdWxsc2NyZWVuKQogICAgICAgICAgICAgZW50ZXJG
dWxsc2NyZWVuKCk7CiAKQEAgLTU0NDcsNyArNTQ0Nyw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6Y2xlYXJNZWRpYVBsYXllcihEZWxheWVkQWN0aW9uVHlwZSBmbGFncykKICNpZiBFTkFCTEUo
V0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQogICAgIGlmIChoYXNFdmVudExpc3RlbmVycyhldmVu
dE5hbWVzKCkud2Via2l0cGxheWJhY2t0YXJnZXRhdmFpbGFiaWxpdHljaGFuZ2VkRXZlbnQpKSB7
CiAgICAgICAgIG1faGFzUGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlMaXN0ZW5lcnMgPSBmYWxz
ZTsKLSAgICAgICAgbV9tZWRpYVNlc3Npb24tPnNldEhhc1BsYXliYWNrVGFyZ2V0QXZhaWxhYmls
aXR5TGlzdGVuZXJzKCp0aGlzLCBmYWxzZSk7CisgICAgICAgIG1fbWVkaWFTZXNzaW9uLT5zZXRI
YXNQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUxpc3RlbmVycyhmYWxzZSk7CiAKICAgICAgICAg
Ly8gU2VuZCBhbiBhdmFpbGFiaWxpdHkgZXZlbnQgaW4gY2FzZSBzY3JpcHRzIHdhbnQgdG8gaGlk
ZSB0aGUgcGlja2VyIHdoZW4gdGhlIGVsZW1lbnQKICAgICAgICAgLy8gZG9lc24ndCBzdXBwb3J0
IHBsYXliYWNrIHRvIGEgdGFyZ2V0LgpAQCAtNTU5Niw3ICs1NTk2LDcgQEAgdm9pZCBIVE1MTWVk
aWFFbGVtZW50OjpyZXN1bWUoKQogCiAgICAgc2V0U2hvdWxkQnVmZmVyRGF0YSh0cnVlKTsKIAot
ICAgIGlmICghbV9tZWRpYVNlc3Npb24tPnBhZ2VBbGxvd3NQbGF5YmFja0FmdGVyUmVzdW1pbmco
KnRoaXMpKQorICAgIGlmICghbV9tZWRpYVNlc3Npb24tPnBhZ2VBbGxvd3NQbGF5YmFja0FmdGVy
UmVzdW1pbmcoKSkKICAgICAgICAgZG9jdW1lbnQoKS5hZGRNZWRpYUNhblN0YXJ0TGlzdGVuZXIo
dGhpcyk7CiAgICAgZWxzZQogICAgICAgICBzZXRQYXVzZWRJbnRlcm5hbChmYWxzZSk7CkBAIC01
NjcyLDcgKzU2NzIsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OndlYmtpdFNob3dQbGF5YmFj
a1RhcmdldFBpY2tlcigpCiAgICAgSU5GT19MT0coTE9HSURFTlRJRklFUik7CiAgICAgaWYgKHBy
b2Nlc3NpbmdVc2VyR2VzdHVyZUZvck1lZGlhKCkpCiAgICAgICAgIHJlbW92ZUJlaGF2aW9yc1Jl
c3RyaWN0aW9uc0FmdGVyRmlyc3RVc2VyR2VzdHVyZSgpOwotICAgIG1fbWVkaWFTZXNzaW9uLT5z
aG93UGxheWJhY2tUYXJnZXRQaWNrZXIoKnRoaXMpOworICAgIG1fbWVkaWFTZXNzaW9uLT5zaG93
UGxheWJhY2tUYXJnZXRQaWNrZXIoKTsKIH0KIAogYm9vbCBIVE1MTWVkaWFFbGVtZW50Ojp3ZWJr
aXRDdXJyZW50UGxheWJhY2tUYXJnZXRJc1dpcmVsZXNzKCkgY29uc3QKQEAgLTU3MjIsNyArNTcy
Miw3IEBAIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9t
aWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmPEV2ZW50CiAKICAgICBpZiAoaXNGaXJzdEF2YWlsYWJp
bGl0eUNoYW5nZWRMaXN0ZW5lcikgewogICAgICAgICBtX2hhc1BsYXliYWNrVGFyZ2V0QXZhaWxh
YmlsaXR5TGlzdGVuZXJzID0gdHJ1ZTsKLSAgICAgICAgbV9tZWRpYVNlc3Npb24tPnNldEhhc1Bs
YXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5TGlzdGVuZXJzKCp0aGlzLCB0cnVlKTsKKyAgICAgICAg
bV9tZWRpYVNlc3Npb24tPnNldEhhc1BsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5TGlzdGVuZXJz
KHRydWUpOwogICAgIH0KIAogICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsICInd2Via2l0cGxh
eWJhY2t0YXJnZXRhdmFpbGFiaWxpdHljaGFuZ2VkJyIpOwpAQCAtNTc0Myw3ICs1NzQzLDcgQEAg
Ym9vbCBIVE1MTWVkaWFFbGVtZW50OjpyZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0
cmluZyYgZXZlbnRUeXBlLCBFdmVudEwKICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCAicmVt
b3ZlZCBsYXN0IGxpc3RlbmVyID0gIiwgZGlkUmVtb3ZlTGFzdEF2YWlsYWJpbGl0eUNoYW5nZWRM
aXN0ZW5lcik7CiAgICAgaWYgKGRpZFJlbW92ZUxhc3RBdmFpbGFiaWxpdHlDaGFuZ2VkTGlzdGVu
ZXIpIHsKICAgICAgICAgbV9oYXNQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUxpc3RlbmVycyA9
IGZhbHNlOwotICAgICAgICBtX21lZGlhU2Vzc2lvbi0+c2V0SGFzUGxheWJhY2tUYXJnZXRBdmFp
bGFiaWxpdHlMaXN0ZW5lcnMoKnRoaXMsIGZhbHNlKTsKKyAgICAgICAgbV9tZWRpYVNlc3Npb24t
PnNldEhhc1BsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5TGlzdGVuZXJzKGZhbHNlKTsKICAgICAg
ICAgdXBkYXRlTWVkaWFTdGF0ZShVcGRhdGVTdGF0ZTo6QXN5bmNocm9ub3VzbHkpOwogICAgIH0K
IApAQCAtNTc1Miw3ICs1NzUyLDcgQEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50OjpyZW1vdmVFdmVu
dExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudEwKIAogdm9pZCBI
VE1MTWVkaWFFbGVtZW50OjplbnF1ZXVlUGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlDaGFuZ2Vk
RXZlbnQoKQogewotICAgIGJvb2wgaGFzVGFyZ2V0cyA9IG1fbWVkaWFTZXNzaW9uLT5oYXNXaXJl
bGVzc1BsYXliYWNrVGFyZ2V0cygqdGhpcyk7CisgICAgYm9vbCBoYXNUYXJnZXRzID0gbV9tZWRp
YVNlc3Npb24tPmhhc1dpcmVsZXNzUGxheWJhY2tUYXJnZXRzKCk7CiAgICAgSU5GT19MT0coTE9H
SURFTlRJRklFUiwgImhhc1RhcmdldHMgPSAiLCBoYXNUYXJnZXRzKTsKICAgICBhdXRvIGV2ZW50
ID0gV2ViS2l0UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlFdmVudDo6Y3JlYXRlKGV2ZW50TmFt
ZXMoKS53ZWJraXRwbGF5YmFja3RhcmdldGF2YWlsYWJpbGl0eWNoYW5nZWRFdmVudCwgaGFzVGFy
Z2V0cyk7CiAgICAgZXZlbnQtPnNldFRhcmdldCh0aGlzKTsKQEAgLTU5MTIsNyArNTkxMiw3IEBA
IHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZXhpdEZ1bGxzY3JlZW4oKQogICAgIGlmICghZG9jdW1l
bnQoKS5wYWdlKCkgfHwgIWlzPEhUTUxWaWRlb0VsZW1lbnQ+KCp0aGlzKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgaWYgKCFwYXVzZWQoKSAmJiBtX21lZGlhU2Vzc2lvbi0+cmVxdWlyZXNGdWxs
c2NyZWVuRm9yVmlkZW9QbGF5YmFjaygqdGhpcykpIHsKKyAgICBpZiAoIXBhdXNlZCgpICYmIG1f
bWVkaWFTZXNzaW9uLT5yZXF1aXJlc0Z1bGxzY3JlZW5Gb3JWaWRlb1BsYXliYWNrKCkpIHsKICAg
ICAgICAgaWYgKCFkb2N1bWVudCgpLnNldHRpbmdzKCkuYWxsb3dzSW5saW5lTWVkaWFQbGF5YmFj
a0FmdGVyRnVsbHNjcmVlbigpIHx8IGlzVmlkZW9Ub29TbWFsbEZvcklubGluZVBsYXliYWNrKCkp
CiAgICAgICAgICAgICBwYXVzZUludGVybmFsKCk7CiAgICAgICAgIGVsc2UgewpAQCAtNjMyNSw3
ICs2MzI1LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpjb25maWd1cmVNZWRpYUNvbnRyb2xz
KCkKICAgICBib29sIHJlcXVpcmVDb250cm9scyA9IGNvbnRyb2xzKCk7CiAKICAgICAvLyBBbHdh
eXMgY3JlYXRlIGNvbnRyb2xzIGZvciB2aWRlbyB3aGVuIGZ1bGxzY3JlZW4gcGxheWJhY2sgaXMg
cmVxdWlyZWQuCi0gICAgaWYgKGlzVmlkZW8oKSAmJiBtX21lZGlhU2Vzc2lvbi0+cmVxdWlyZXNG
dWxsc2NyZWVuRm9yVmlkZW9QbGF5YmFjaygqdGhpcykpCisgICAgaWYgKGlzVmlkZW8oKSAmJiBt
X21lZGlhU2Vzc2lvbi0+cmVxdWlyZXNGdWxsc2NyZWVuRm9yVmlkZW9QbGF5YmFjaygpKQogICAg
ICAgICByZXF1aXJlQ29udHJvbHMgPSB0cnVlOwogCiAgICAgaWYgKHNob3VsZEZvcmNlQ29udHJv
bHNEaXNwbGF5KCkpCkBAIC02NDkyLDcgKzY0OTIsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6
OmNyZWF0ZU1lZGlhUGxheWVyKCkKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VU
KQogICAgIGlmIChoYXNFdmVudExpc3RlbmVycyhldmVudE5hbWVzKCkud2Via2l0cGxheWJhY2t0
YXJnZXRhdmFpbGFiaWxpdHljaGFuZ2VkRXZlbnQpKSB7CiAgICAgICAgIG1faGFzUGxheWJhY2tU
YXJnZXRBdmFpbGFiaWxpdHlMaXN0ZW5lcnMgPSB0cnVlOwotICAgICAgICBtX21lZGlhU2Vzc2lv
bi0+c2V0SGFzUGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlMaXN0ZW5lcnMoKnRoaXMsIHRydWUp
OworICAgICAgICBtX21lZGlhU2Vzc2lvbi0+c2V0SGFzUGxheWJhY2tUYXJnZXRBdmFpbGFiaWxp
dHlMaXN0ZW5lcnModHJ1ZSk7CiAgICAgICAgIGVucXVldWVQbGF5YmFja1RhcmdldEF2YWlsYWJp
bGl0eUNoYW5nZWRFdmVudCgpOyAvLyBFbnN1cmUgdGhlIGV2ZW50IGxpc3RlbmVyIGdldHMgYXQg
bGVhc3Qgb25lIGV2ZW50LgogICAgIH0KICNlbmRpZgpAQCAtNjgxNiw3ICs2ODE2LDcgQEAgYm9v
bCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllcklzRnVsbHNjcmVlbigpIGNvbnN0CiAKIGJv
b2wgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJJc0Z1bGxzY3JlZW5QZXJtaXR0ZWQoKSBj
b25zdAogewotICAgIHJldHVybiBtX21lZGlhU2Vzc2lvbi0+ZnVsbHNjcmVlblBlcm1pdHRlZCgq
dGhpcyk7CisgICAgcmV0dXJuIG1fbWVkaWFTZXNzaW9uLT5mdWxsc2NyZWVuUGVybWl0dGVkKCk7
CiB9CiAKIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJJc1ZpZGVvKCkgY29uc3QK
QEAgLTc1MTQsNyArNzUxNCw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dXBkYXRlTWVkaWFT
dGF0ZShVcGRhdGVTdGF0ZSB1cGRhdGVTdGF0ZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9t
ZWRpYVN0YXRlID0gc3RhdGU7Ci0gICAgbV9tZWRpYVNlc3Npb24tPm1lZGlhU3RhdGVEaWRDaGFu
Z2UoKnRoaXMsIG1fbWVkaWFTdGF0ZSk7CisgICAgbV9tZWRpYVNlc3Npb24tPm1lZGlhU3RhdGVE
aWRDaGFuZ2UobV9tZWRpYVN0YXRlKTsKICNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKICAgICBk
b2N1bWVudCgpLnVwZGF0ZUlzUGxheWluZ01lZGlhKG1fZWxlbWVudElEKTsKICNlbHNlCkBAIC03
NTM1LDcgKzc1MzUsNyBAQCBNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlRmxhZ3MgSFRNTE1lZGlh
RWxlbWVudDo6bWVkaWFTdGF0ZSgpIGNvbnN0CiAKICAgICBpZiAobV9oYXNQbGF5YmFja1Rhcmdl
dEF2YWlsYWJpbGl0eUxpc3RlbmVycykgewogICAgICAgICBzdGF0ZSB8PSBIYXNQbGF5YmFja1Rh
cmdldEF2YWlsYWJpbGl0eUxpc3RlbmVyOwotICAgICAgICBpZiAoIW1fbWVkaWFTZXNzaW9uLT53
aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCgqdGhpcykpCisgICAgICAgIGlmICghbV9tZWRp
YVNlc3Npb24tPndpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKCkpCiAgICAgICAgICAgICBz
dGF0ZSB8PSBSZXF1aXJlc1BsYXliYWNrVGFyZ2V0TW9uaXRvcmluZzsKICAgICB9CiAKQEAgLTc3
MzUsNyArNzczNSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0U2hvdWxkRHVjayhib29s
IGR1Y2spCiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6YWxsb3dzTWVkaWFEb2N1bWVudElubGlu
ZVBsYXliYWNrQ2hhbmdlZCgpCiB7Ci0gICAgaWYgKHBvdGVudGlhbGx5UGxheWluZygpICYmIG1f
bWVkaWFTZXNzaW9uLT5yZXF1aXJlc0Z1bGxzY3JlZW5Gb3JWaWRlb1BsYXliYWNrKCp0aGlzKSAm
JiAhaXNGdWxsc2NyZWVuKCkpCisgICAgaWYgKHBvdGVudGlhbGx5UGxheWluZygpICYmIG1fbWVk
aWFTZXNzaW9uLT5yZXF1aXJlc0Z1bGxzY3JlZW5Gb3JWaWRlb1BsYXliYWNrKCkgJiYgIWlzRnVs
bHNjcmVlbigpKQogICAgICAgICBlbnRlckZ1bGxzY3JlZW4oKTsKIH0KIApAQCAtNzc3OCw3ICs3
Nzc4LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVTaG91bGRBdXRvcGxheSgpCiAK
IHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dXBkYXRlU2hvdWxkUGxheSgpCiB7Ci0gICAgaWYgKCFw
YXVzZWQoKSAmJiAhbV9tZWRpYVNlc3Npb24tPnBsYXliYWNrUGVybWl0dGVkKCp0aGlzKSkgewor
ICAgIGlmICghcGF1c2VkKCkgJiYgIW1fbWVkaWFTZXNzaW9uLT5wbGF5YmFja1Blcm1pdHRlZCgp
KSB7CiAgICAgICAgIHBhdXNlSW50ZXJuYWwoKTsKICAgICAgICAgc2V0UGxheWJhY2tXaXRob3V0
VXNlckdlc3R1cmUoUGxheWJhY2tXaXRob3V0VXNlckdlc3R1cmU6OlByZXZlbnRlZCk7CiAgICAg
fSBlbHNlIGlmIChjYW5UcmFuc2l0aW9uRnJvbUF1dG9wbGF5VG9QbGF5KCkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAppbmRleCAzZmMwZTk5NDIwYjIxNGZhMWFkMmJl
YjA1YzBhYWMxMjhkNDA0MDFmLi45MDhlZDRjYTY4MzZjZTMyMGMxYzNmOTA4M2VjZWM5YjMyMTBj
OGM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKQEAgLTEzNiw3
ICsxMzYsNyBAQCB2b2lkIEhUTUxWaWRlb0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cgogICAgIH0KICNpZiBFTkFCTEUoV0lS
RUxFU1NfUExBWUJBQ0tfVEFSR0VUKQogICAgIGVsc2UgaWYgKG5hbWUgPT0gd2Via2l0d2lyZWxl
c3N2aWRlb3BsYXliYWNrZGlzYWJsZWRBdHRyKQotICAgICAgICBtZWRpYVNlc3Npb24oKS5zZXRX
aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCgqdGhpcywgdHJ1ZSk7CisgICAgICAgIG1lZGlh
U2Vzc2lvbigpLnNldFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKHRydWUpOwogI2VuZGlm
CiAgICAgZWxzZSB7CiAgICAgICAgIEhUTUxNZWRpYUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKG5h
bWUsIHZhbHVlKTsgICAgCkBAIC0xNDYsNyArMTQ2LDcgQEAgdm9pZCBIVE1MVmlkZW9FbGVtZW50
OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNT
dHIKICAgICAgICAgICAgIGJvb2wgZGlzYWJsZWQgPSBmYWxzZTsKICAgICAgICAgICAgIGlmIChl
cXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0
aW9uKEhUTUxOYW1lczo6d2Via2l0YWlycGxheUF0dHIpLCAiZGVueSIpKQogICAgICAgICAgICAg
ICAgIGRpc2FibGVkID0gdHJ1ZTsKLSAgICAgICAgICAgIG1lZGlhU2Vzc2lvbigpLnNldFdpcmVs
ZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKCp0aGlzLCBkaXNhYmxlZCk7CisgICAgICAgICAgICBt
ZWRpYVNlc3Npb24oKS5zZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZChkaXNhYmxlZCk7
CiAgICAgICAgIH0KICNlbmRpZgogICAgIH0KQEAgLTE1OSw3ICsxNTksNyBAQCBib29sIEhUTUxW
aWRlb0VsZW1lbnQ6OnN1cHBvcnRzRnVsbHNjcmVlbihIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZp
ZGVvRnVsbHNjcmVlbgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCiAgICAgaWYgKHZpZGVv
RnVsbHNjcmVlbk1vZGUgPT0gSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5N
b2RlUGljdHVyZUluUGljdHVyZSkgewotICAgICAgICBpZiAoIW1lZGlhU2Vzc2lvbigpLmFsbG93
c1BpY3R1cmVJblBpY3R1cmUoKnRoaXMpKQorICAgICAgICBpZiAoIW1lZGlhU2Vzc2lvbigpLmFs
bG93c1BpY3R1cmVJblBpY3R1cmUoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAg
ICAgaWYgKCFwbGF5ZXIoKS0+c3VwcG9ydHNQaWN0dXJlSW5QaWN0dXJlKCkpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CkBAIC0zMTYsNyArMzE2LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gSFRN
TFZpZGVvRWxlbWVudDo6d2Via2l0RW50ZXJGdWxsc2NyZWVuKCkKIAogICAgIC8vIEdlbmVyYXRl
IGFuIGV4Y2VwdGlvbiBpZiB0aGlzIGlzbid0IGNhbGxlZCBpbiByZXNwb25zZSB0byBhIHVzZXIg
Z2VzdHVyZSwgb3IgaWYgdGhlIAogICAgIC8vIGVsZW1lbnQgZG9lcyBub3Qgc3VwcG9ydCBmdWxs
c2NyZWVuLgotICAgIGlmICghbWVkaWFTZXNzaW9uKCkuZnVsbHNjcmVlblBlcm1pdHRlZCgqdGhp
cykgfHwgIXN1cHBvcnRzRnVsbHNjcmVlbihIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVs
bHNjcmVlbk1vZGVTdGFuZGFyZCkpCisgICAgaWYgKCFtZWRpYVNlc3Npb24oKS5mdWxsc2NyZWVu
UGVybWl0dGVkKCkgfHwgIXN1cHBvcnRzRnVsbHNjcmVlbihIVE1MTWVkaWFFbGVtZW50RW51bXM6
OlZpZGVvRnVsbHNjcmVlbk1vZGVTdGFuZGFyZCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24g
eyBJbnZhbGlkU3RhdGVFcnJvciB9OwogCiAgICAgZW50ZXJGdWxsc2NyZWVuKCk7CkBAIC0zNTUs
NyArMzU1LDcgQEAgdm9pZCBIVE1MVmlkZW9FbGVtZW50OjphbmNlc3RvcldpbGxFbnRlckZ1bGxz
Y3JlZW4oKQogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCiBib29sIEhUTUxW
aWRlb0VsZW1lbnQ6OndlYmtpdFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKCkgY29uc3QK
IHsKLSAgICByZXR1cm4gbWVkaWFTZXNzaW9uKCkud2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJs
ZWQoKnRoaXMpOworICAgIHJldHVybiBtZWRpYVNlc3Npb24oKS53aXJlbGVzc1ZpZGVvUGxheWJh
Y2tEaXNhYmxlZCgpOwogfQogCiB2b2lkIEhUTUxWaWRlb0VsZW1lbnQ6OnNldFdlYmtpdFdpcmVs
ZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKGJvb2wgZGlzYWJsZWQpCkBAIC00MTQsNyArNDE0LDcg
QEAgYm9vbCBIVE1MVmlkZW9FbGVtZW50Ojp3ZWJraXRTdXBwb3J0c1ByZXNlbnRhdGlvbk1vZGUo
VmlkZW9QcmVzZW50YXRpb25Nb2RlIG1vZGUKICAgICB9CiAKICAgICBpZiAobW9kZSA9PSBWaWRl
b1ByZXNlbnRhdGlvbk1vZGU6OklubGluZSkKLSAgICAgICAgcmV0dXJuICFtZWRpYVNlc3Npb24o
KS5yZXF1aXJlc0Z1bGxzY3JlZW5Gb3JWaWRlb1BsYXliYWNrKCp0aGlzKTsKKyAgICAgICAgcmV0
dXJuICFtZWRpYVNlc3Npb24oKS5yZXF1aXJlc0Z1bGxzY3JlZW5Gb3JWaWRlb1BsYXliYWNrKCk7
CiAKICAgICByZXR1cm4gZmFsc2U7CiB9CkBAIC00NDYsNyArNDQ2LDcgQEAgdm9pZCBIVE1MVmlk
ZW9FbGVtZW50OjpzZXRGdWxsc2NyZWVuTW9kZShIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVv
RnVsbHNjcmVlbk0KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmICghbWVkaWFTZXNz
aW9uKCkuZnVsbHNjcmVlblBlcm1pdHRlZCgqdGhpcykgfHwgIXN1cHBvcnRzRnVsbHNjcmVlbiht
b2RlKSkKKyAgICBpZiAoIW1lZGlhU2Vzc2lvbigpLmZ1bGxzY3JlZW5QZXJtaXR0ZWQoKSB8fCAh
c3VwcG9ydHNGdWxsc2NyZWVuKG1vZGUpKQogICAgICAgICByZXR1cm47CiAKICAgICBlbnRlckZ1
bGxzY3JlZW4obW9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRWxl
bWVudFNlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9u
LmNwcAppbmRleCBlNGE1ZmU2ZDEyMTc3MzE1NDYzNzAxNTA0MzhhNDY5YmIwODJkMTI2Li5hNDk1
OWUxNTVmYTQyMWQ5NTA5YTg2ZWQwZWEzYzQ0N2I1MTViN2EyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL01lZGlhRWxlbWVudFNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5jcHAKQEAgLTE1OCwxOCArMTU4LDE5IEBAIHN0YXRp
YyBib29sIG5lZWRzQXJiaXRyYXJ5VXNlckdlc3R1cmVBdXRvcGxheVF1aXJrKGNvbnN0IERvY3Vt
ZW50JiBkb2N1bWVudCkKIH0KICNlbmRpZiAvLyBQTEFURk9STShNQUMpCiAKLVN1Y2Nlc3NPcjxN
ZWRpYVBsYXliYWNrRGVuaWFsUmVhc29uPiBNZWRpYUVsZW1lbnRTZXNzaW9uOjpwbGF5YmFja1Bl
cm1pdHRlZChjb25zdCBIVE1MTWVkaWFFbGVtZW50JiBlbGVtZW50KSBjb25zdAorU3VjY2Vzc09y
PE1lZGlhUGxheWJhY2tEZW5pYWxSZWFzb24+IE1lZGlhRWxlbWVudFNlc3Npb246OnBsYXliYWNr
UGVybWl0dGVkKCkgY29uc3QKIHsKICAgICBpZiAobV9lbGVtZW50LmlzU3VzcGVuZGVkKCkpCiAg
ICAgICAgIHJldHVybiB7IH07CiAKLSAgICBpZiAoZWxlbWVudC5kb2N1bWVudCgpLmlzTWVkaWFE
b2N1bWVudCgpICYmICFlbGVtZW50LmRvY3VtZW50KCkub3duZXJFbGVtZW50KCkpCisgICAgYXV0
byYgZG9jdW1lbnQgPSBtX2VsZW1lbnQuZG9jdW1lbnQoKTsKKyAgICBpZiAoZG9jdW1lbnQuaXNN
ZWRpYURvY3VtZW50KCkgJiYgIWRvY3VtZW50Lm93bmVyRWxlbWVudCgpKQogICAgICAgICByZXR1
cm4geyB9OwogCi0gICAgaWYgKHBhZ2VFeHBsaWNpdGx5QWxsb3dzRWxlbWVudFRvQXV0b3BsYXlJ
bmxpbmUoZWxlbWVudCkpCisgICAgaWYgKHBhZ2VFeHBsaWNpdGx5QWxsb3dzRWxlbWVudFRvQXV0
b3BsYXlJbmxpbmUobV9lbGVtZW50KSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIGlmIChy
ZXF1aXJlc0Z1bGxzY3JlZW5Gb3JWaWRlb1BsYXliYWNrKGVsZW1lbnQpICYmICFmdWxsc2NyZWVu
UGVybWl0dGVkKGVsZW1lbnQpKSB7CisgICAgaWYgKHJlcXVpcmVzRnVsbHNjcmVlbkZvclZpZGVv
UGxheWJhY2soKSAmJiAhZnVsbHNjcmVlblBlcm1pdHRlZCgpKSB7CiAgICAgICAgIEFMV0FZU19M
T0coTE9HSURFTlRJRklFUiwgIlJldHVybmluZyBGQUxTRSBiZWNhdXNlIG9mIGZ1bGxzY3JlZW4g
cmVzdHJpY3Rpb24iKTsKICAgICAgICAgcmV0dXJuIE1lZGlhUGxheWJhY2tEZW5pYWxSZWFzb246
OkZ1bGxzY3JlZW5SZXF1aXJlZDsKICAgICB9CkBAIC0xNzgsMzUgKzE3OSwzNSBAQCBTdWNjZXNz
T3I8TWVkaWFQbGF5YmFja0RlbmlhbFJlYXNvbj4gTWVkaWFFbGVtZW50U2Vzc2lvbjo6cGxheWJh
Y2tQZXJtaXR0ZWQoY29ucwogICAgICAgICByZXR1cm4geyB9OwogCiAjaWYgRU5BQkxFKE1FRElB
X1NUUkVBTSkKLSAgICBpZiAoZWxlbWVudC5oYXNNZWRpYVN0cmVhbVNyY09iamVjdCgpKSB7Ci0g
ICAgICAgIGlmIChlbGVtZW50LmRvY3VtZW50KCkuaXNDYXB0dXJpbmcoKSkKKyAgICBpZiAobV9l
bGVtZW50Lmhhc01lZGlhU3RyZWFtU3JjT2JqZWN0KCkpIHsKKyAgICAgICAgaWYgKGRvY3VtZW50
LmlzQ2FwdHVyaW5nKCkpCiAgICAgICAgICAgICByZXR1cm4geyB9OwotICAgICAgICBpZiAoZWxl
bWVudC5kb2N1bWVudCgpLm1lZGlhU3RhdGUoKSAmIE1lZGlhUHJvZHVjZXI6OklzUGxheWluZ0F1
ZGlvKQorICAgICAgICBpZiAoZG9jdW1lbnQubWVkaWFTdGF0ZSgpICYgTWVkaWFQcm9kdWNlcjo6
SXNQbGF5aW5nQXVkaW8pCiAgICAgICAgICAgICByZXR1cm4geyB9OwogICAgIH0KICNlbmRpZgog
CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIC8vIEZJWE1FIDxodHRwczovL3dlYmtpdC5vcmcvYi8x
NzU4NTY+OiBNYWtlIHRoaXMgZGVwZW5kZW50IG9uIGEgcnVudGltZSBmbGFnIGZvciBkZXNrdG9w
IGF1dG9wbGF5IHJlc3RyaWN0aW9ucy4KLSAgICBjb25zdCBhdXRvJiB0b3BEb2N1bWVudCA9IGVs
ZW1lbnQuZG9jdW1lbnQoKS50b3BEb2N1bWVudCgpOworICAgIGNvbnN0IGF1dG8mIHRvcERvY3Vt
ZW50ID0gZG9jdW1lbnQudG9wRG9jdW1lbnQoKTsKICAgICBpZiAodG9wRG9jdW1lbnQubWVkaWFT
dGF0ZSgpICYgTWVkaWFQcm9kdWNlcjo6SGFzVXNlckludGVyYWN0ZWRXaXRoTWVkaWFFbGVtZW50
ICYmIHRvcERvY3VtZW50LnNldHRpbmdzKCkubmVlZHNTaXRlU3BlY2lmaWNRdWlya3MoKSkKICAg
ICAgICAgcmV0dXJuIHsgfTsKIAotICAgIGlmIChlbGVtZW50LmRvY3VtZW50KCkuaGFzSGFkVXNl
ckludGVyYWN0aW9uKCkgJiYgbmVlZHNBcmJpdHJhcnlVc2VyR2VzdHVyZUF1dG9wbGF5UXVpcmso
ZWxlbWVudC5kb2N1bWVudCgpKSkKKyAgICBpZiAoZG9jdW1lbnQuaGFzSGFkVXNlckludGVyYWN0
aW9uKCkgJiYgbmVlZHNBcmJpdHJhcnlVc2VyR2VzdHVyZUF1dG9wbGF5UXVpcmsoZG9jdW1lbnQp
KQogICAgICAgICByZXR1cm4geyB9OwogI2VuZGlmCiAKLSAgICBpZiAobV9yZXN0cmljdGlvbnMg
JiBSZXF1aXJlVXNlckdlc3R1cmVGb3JWaWRlb1JhdGVDaGFuZ2UgJiYgZWxlbWVudC5pc1ZpZGVv
KCkgJiYgIWVsZW1lbnQuZG9jdW1lbnQoKS5wcm9jZXNzaW5nVXNlckdlc3R1cmVGb3JNZWRpYSgp
KSB7CisgICAgaWYgKG1fcmVzdHJpY3Rpb25zICYgUmVxdWlyZVVzZXJHZXN0dXJlRm9yVmlkZW9S
YXRlQ2hhbmdlICYmIG1fZWxlbWVudC5pc1ZpZGVvKCkgJiYgIWRvY3VtZW50LnByb2Nlc3NpbmdV
c2VyR2VzdHVyZUZvck1lZGlhKCkpIHsKICAgICAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVS
LCAiUmV0dXJuaW5nIEZBTFNFIGJlY2F1c2UgYSB1c2VyIGdlc3R1cmUgaXMgcmVxdWlyZWQgZm9y
IHZpZGVvIHJhdGUgY2hhbmdlIHJlc3RyaWN0aW9uIik7CiAgICAgICAgIHJldHVybiBNZWRpYVBs
YXliYWNrRGVuaWFsUmVhc29uOjpVc2VyR2VzdHVyZVJlcXVpcmVkOwogICAgIH0KIAotICAgIGlm
IChtX3Jlc3RyaWN0aW9ucyAmIFJlcXVpcmVVc2VyR2VzdHVyZUZvckF1ZGlvUmF0ZUNoYW5nZSAm
JiAoIWVsZW1lbnQuaXNWaWRlbygpIHx8IGVsZW1lbnQuaGFzQXVkaW8oKSkgJiYgIWVsZW1lbnQu
bXV0ZWQoKSAmJiBlbGVtZW50LnZvbHVtZSgpICYmICFlbGVtZW50LmRvY3VtZW50KCkucHJvY2Vz
c2luZ1VzZXJHZXN0dXJlRm9yTWVkaWEoKSkgeworICAgIGlmIChtX3Jlc3RyaWN0aW9ucyAmIFJl
cXVpcmVVc2VyR2VzdHVyZUZvckF1ZGlvUmF0ZUNoYW5nZSAmJiAoIW1fZWxlbWVudC5pc1ZpZGVv
KCkgfHwgbV9lbGVtZW50Lmhhc0F1ZGlvKCkpICYmICFtX2VsZW1lbnQubXV0ZWQoKSAmJiBtX2Vs
ZW1lbnQudm9sdW1lKCkgJiYgIWRvY3VtZW50LnByb2Nlc3NpbmdVc2VyR2VzdHVyZUZvck1lZGlh
KCkpIHsKICAgICAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAiUmV0dXJuaW5nIEZBTFNF
IGJlY2F1c2UgYSB1c2VyIGdlc3R1cmUgaXMgcmVxdWlyZWQgZm9yIGF1ZGlvIHJhdGUgY2hhbmdl
IHJlc3RyaWN0aW9uIik7CiAgICAgICAgIHJldHVybiBNZWRpYVBsYXliYWNrRGVuaWFsUmVhc29u
OjpVc2VyR2VzdHVyZVJlcXVpcmVkOwogICAgIH0KIAotICAgIGlmIChtX3Jlc3RyaWN0aW9ucyAm
IFJlcXVpcmVVc2VyR2VzdHVyZUZvclZpZGVvRHVlVG9Mb3dQb3dlck1vZGUgJiYgZWxlbWVudC5p
c1ZpZGVvKCkgJiYgIWVsZW1lbnQuZG9jdW1lbnQoKS5wcm9jZXNzaW5nVXNlckdlc3R1cmVGb3JN
ZWRpYSgpKSB7CisgICAgaWYgKG1fcmVzdHJpY3Rpb25zICYgUmVxdWlyZVVzZXJHZXN0dXJlRm9y
VmlkZW9EdWVUb0xvd1Bvd2VyTW9kZSAmJiBtX2VsZW1lbnQuaXNWaWRlbygpICYmICFkb2N1bWVu
dC5wcm9jZXNzaW5nVXNlckdlc3R1cmVGb3JNZWRpYSgpKSB7CiAgICAgICAgIEFMV0FZU19MT0co
TE9HSURFTlRJRklFUiwgIlJldHVybmluZyBGQUxTRSBiZWNhdXNlIG9mIHZpZGVvIGxvdyBwb3dl
ciBtb2RlIHJlc3RyaWN0aW9uIik7CiAgICAgICAgIHJldHVybiBNZWRpYVBsYXliYWNrRGVuaWFs
UmVhc29uOjpVc2VyR2VzdHVyZVJlcXVpcmVkOwogICAgIH0KQEAgLTI0OSwxMiArMjUwLDEyIEBA
IGJvb2wgTWVkaWFFbGVtZW50U2Vzc2lvbjo6YXV0b3BsYXlQZXJtaXR0ZWQoKSBjb25zdAogICAg
IHJldHVybiB0cnVlOwogfQogCi1ib29sIE1lZGlhRWxlbWVudFNlc3Npb246OmRhdGFMb2FkaW5n
UGVybWl0dGVkKGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQmIGVsZW1lbnQpIGNvbnN0Citib29sIE1l
ZGlhRWxlbWVudFNlc3Npb246OmRhdGFMb2FkaW5nUGVybWl0dGVkKCkgY29uc3QKIHsKICAgICBp
ZiAobV9yZXN0cmljdGlvbnMgJiBPdmVycmlkZVVzZXJHZXN0dXJlUmVxdWlyZW1lbnRGb3JNYWlu
Q29udGVudCAmJiB1cGRhdGVJc01haW5Db250ZW50KCkpCiAgICAgICAgIHJldHVybiB0cnVlOwog
Ci0gICAgaWYgKG1fcmVzdHJpY3Rpb25zICYgUmVxdWlyZVVzZXJHZXN0dXJlRm9yTG9hZCAmJiAh
ZWxlbWVudC5kb2N1bWVudCgpLnByb2Nlc3NpbmdVc2VyR2VzdHVyZUZvck1lZGlhKCkpIHsKKyAg
ICBpZiAobV9yZXN0cmljdGlvbnMgJiBSZXF1aXJlVXNlckdlc3R1cmVGb3JMb2FkICYmICFtX2Vs
ZW1lbnQuZG9jdW1lbnQoKS5wcm9jZXNzaW5nVXNlckdlc3R1cmVGb3JNZWRpYSgpKSB7CiAgICAg
ICAgIExPRyhNZWRpYSwgIk1lZGlhRWxlbWVudFNlc3Npb246OmRhdGFMb2FkaW5nUGVybWl0dGVk
IC0gcmV0dXJuaW5nIEZBTFNFIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBAIC0y
NjIsOSArMjYzLDkgQEAgYm9vbCBNZWRpYUVsZW1lbnRTZXNzaW9uOjpkYXRhTG9hZGluZ1Blcm1p
dHRlZChjb25zdCBIVE1MTWVkaWFFbGVtZW50JiBlbGVtZW50KQogICAgIHJldHVybiB0cnVlOwog
fQogCi1ib29sIE1lZGlhRWxlbWVudFNlc3Npb246OmZ1bGxzY3JlZW5QZXJtaXR0ZWQoY29uc3Qg
SFRNTE1lZGlhRWxlbWVudCYgZWxlbWVudCkgY29uc3QKK2Jvb2wgTWVkaWFFbGVtZW50U2Vzc2lv
bjo6ZnVsbHNjcmVlblBlcm1pdHRlZCgpIGNvbnN0CiB7Ci0gICAgaWYgKG1fcmVzdHJpY3Rpb25z
ICYgUmVxdWlyZVVzZXJHZXN0dXJlRm9yRnVsbHNjcmVlbiAmJiAhZWxlbWVudC5kb2N1bWVudCgp
LnByb2Nlc3NpbmdVc2VyR2VzdHVyZUZvck1lZGlhKCkpIHsKKyAgICBpZiAobV9yZXN0cmljdGlv
bnMgJiBSZXF1aXJlVXNlckdlc3R1cmVGb3JGdWxsc2NyZWVuICYmICFtX2VsZW1lbnQuZG9jdW1l
bnQoKS5wcm9jZXNzaW5nVXNlckdlc3R1cmVGb3JNZWRpYSgpKSB7CiAgICAgICAgIExPRyhNZWRp
YSwgIk1lZGlhRWxlbWVudFNlc3Npb246OmZ1bGxzY3JlZW5QZXJtaXR0ZWQgLSByZXR1cm5pbmcg
RkFMU0UiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KQEAgLTI3Miw5ICsyNzMsOSBA
QCBib29sIE1lZGlhRWxlbWVudFNlc3Npb246OmZ1bGxzY3JlZW5QZXJtaXR0ZWQoY29uc3QgSFRN
TE1lZGlhRWxlbWVudCYgZWxlbWVudCkgYwogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIE1l
ZGlhRWxlbWVudFNlc3Npb246OnBhZ2VBbGxvd3NEYXRhTG9hZGluZyhjb25zdCBIVE1MTWVkaWFF
bGVtZW50JiBlbGVtZW50KSBjb25zdAorYm9vbCBNZWRpYUVsZW1lbnRTZXNzaW9uOjpwYWdlQWxs
b3dzRGF0YUxvYWRpbmcoKSBjb25zdAogewotICAgIFBhZ2UqIHBhZ2UgPSBlbGVtZW50LmRvY3Vt
ZW50KCkucGFnZSgpOworICAgIFBhZ2UqIHBhZ2UgPSBtX2VsZW1lbnQuZG9jdW1lbnQoKS5wYWdl
KCk7CiAgICAgaWYgKG1fcmVzdHJpY3Rpb25zICYgUmVxdWlyZVBhZ2VDb25zZW50VG9Mb2FkTWVk
aWEgJiYgcGFnZSAmJiAhcGFnZS0+Y2FuU3RhcnRNZWRpYSgpKSB7CiAgICAgICAgIExPRyhNZWRp
YSwgIk1lZGlhRWxlbWVudFNlc3Npb246OnBhZ2VBbGxvd3NEYXRhTG9hZGluZyAtIHJldHVybmlu
ZyBGQUxTRSIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yODMsOSArMjg0LDkgQEAgYm9v
bCBNZWRpYUVsZW1lbnRTZXNzaW9uOjpwYWdlQWxsb3dzRGF0YUxvYWRpbmcoY29uc3QgSFRNTE1l
ZGlhRWxlbWVudCYgZWxlbWVudCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBNZWRpYUVs
ZW1lbnRTZXNzaW9uOjpwYWdlQWxsb3dzUGxheWJhY2tBZnRlclJlc3VtaW5nKGNvbnN0IEhUTUxN
ZWRpYUVsZW1lbnQmIGVsZW1lbnQpIGNvbnN0Citib29sIE1lZGlhRWxlbWVudFNlc3Npb246OnBh
Z2VBbGxvd3NQbGF5YmFja0FmdGVyUmVzdW1pbmcoKSBjb25zdAogewotICAgIFBhZ2UqIHBhZ2Ug
PSBlbGVtZW50LmRvY3VtZW50KCkucGFnZSgpOworICAgIFBhZ2UqIHBhZ2UgPSBtX2VsZW1lbnQu
ZG9jdW1lbnQoKS5wYWdlKCk7CiAgICAgaWYgKG1fcmVzdHJpY3Rpb25zICYgUmVxdWlyZVBhZ2VD
b25zZW50VG9SZXN1bWVNZWRpYSAmJiBwYWdlICYmICFwYWdlLT5jYW5TdGFydE1lZGlhKCkpIHsK
ICAgICAgICAgTE9HKE1lZGlhLCAiTWVkaWFFbGVtZW50U2Vzc2lvbjo6cGFnZUFsbG93c1BsYXli
YWNrQWZ0ZXJSZXN1bWluZyAtIHJldHVybmluZyBGQUxTRSIpOwogICAgICAgICByZXR1cm4gZmFs
c2U7CkBAIC0zNDEsNyArMzQyLDcgQEAgYm9vbCBNZWRpYUVsZW1lbnRTZXNzaW9uOjpjYW5TaG93
Q29udHJvbHNNYW5hZ2VyKFBsYXliYWNrQ29udHJvbHNQdXJwb3NlIHB1cnBvc2UKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGlmICghcGxheWJhY2tQZXJtaXR0ZWQobV9lbGVt
ZW50KSkgeworICAgIGlmICghcGxheWJhY2tQZXJtaXR0ZWQoKSkgewogICAgICAgICBMT0coTWVk
aWEsICJNZWRpYUVsZW1lbnRTZXNzaW9uOjpjYW5TaG93Q29udHJvbHNNYW5hZ2VyIC0gcmV0dXJu
aW5nIEZBTFNFOiBQbGF5YmFjayBub3QgcGVybWl0dGVkIik7CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CkBAIC00MTEsMzEgKzQxMiwzMiBAQCBib29sIE1lZGlhRWxlbWVudFNlc3Npb246
OndhbnRzVG9PYnNlcnZlVmlld3BvcnRWaXNpYmlsaXR5Rm9yQXV0b3BsYXkoKSBjb25zdAogfQog
CiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKLXZvaWQgTWVkaWFFbGVtZW50
U2Vzc2lvbjo6c2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQm
IGVsZW1lbnQpCit2b2lkIE1lZGlhRWxlbWVudFNlc3Npb246OnNob3dQbGF5YmFja1RhcmdldFBp
Y2tlcigpCiB7CiAgICAgTE9HKE1lZGlhLCAiTWVkaWFFbGVtZW50U2Vzc2lvbjo6c2hvd1BsYXli
YWNrVGFyZ2V0UGlja2VyIik7CiAKLSAgICBpZiAobV9yZXN0cmljdGlvbnMgJiBSZXF1aXJlVXNl
ckdlc3R1cmVUb1Nob3dQbGF5YmFja1RhcmdldFBpY2tlciAmJiAhZWxlbWVudC5kb2N1bWVudCgp
LnByb2Nlc3NpbmdVc2VyR2VzdHVyZUZvck1lZGlhKCkpIHsKKyAgICBhdXRvJiBkb2N1bWVudCA9
IG1fZWxlbWVudC5kb2N1bWVudCgpOworICAgIGlmIChtX3Jlc3RyaWN0aW9ucyAmIFJlcXVpcmVV
c2VyR2VzdHVyZVRvU2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyICYmICFkb2N1bWVudC5wcm9jZXNz
aW5nVXNlckdlc3R1cmVGb3JNZWRpYSgpKSB7CiAgICAgICAgIExPRyhNZWRpYSwgIk1lZGlhRWxl
bWVudFNlc3Npb246OnNob3dQbGF5YmFja1RhcmdldFBpY2tlciAtIHJldHVybmluZyBlYXJseSBi
ZWNhdXNlIG9mIHBlcm1pc3Npb25zIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBp
ZiAoIWVsZW1lbnQuZG9jdW1lbnQoKS5wYWdlKCkpIHsKKyAgICBpZiAoIWRvY3VtZW50LnBhZ2Uo
KSkgewogICAgICAgICBMT0coTWVkaWEsICJNZWRpYUVsZW1lbnRTZXNzaW9uOjpzaG93aW5nUGxh
eWJhY2tUYXJnZXRQaWNrZXJQZXJtaXR0ZWQgLSByZXR1cm5pbmcgZWFybHkgYmVjYXVzZSBwYWdl
IGlzIE5VTEwiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogI2lmICFQTEFURk9STShJT1Mp
Ci0gICAgaWYgKGVsZW1lbnQucmVhZHlTdGF0ZSgpIDwgSFRNTE1lZGlhRWxlbWVudEVudW1zOjpI
QVZFX01FVEFEQVRBKSB7CisgICAgaWYgKG1fZWxlbWVudC5yZWFkeVN0YXRlKCkgPCBIVE1MTWVk
aWFFbGVtZW50RW51bXM6OkhBVkVfTUVUQURBVEEpIHsKICAgICAgICAgTE9HKE1lZGlhLCAiTWVk
aWFFbGVtZW50U2Vzc2lvbjo6c2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyIC0gcmV0dXJuaW5nIGVh
cmx5IGJlY2F1c2UgZWxlbWVudCBpcyBub3QgcGxheWFibGUiKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KICNlbmRpZgogCi0gICAgZWxlbWVudC5kb2N1bWVudCgpLnNob3dQbGF5YmFja1Rhcmdl
dFBpY2tlcigqdGhpcywgaXM8SFRNTFZpZGVvRWxlbWVudD4oZWxlbWVudCkpOworICAgIGRvY3Vt
ZW50LnNob3dQbGF5YmFja1RhcmdldFBpY2tlcigqdGhpcywgaXM8SFRNTFZpZGVvRWxlbWVudD4o
bV9lbGVtZW50KSk7CiB9CiAKLWJvb2wgTWVkaWFFbGVtZW50U2Vzc2lvbjo6aGFzV2lyZWxlc3NQ
bGF5YmFja1RhcmdldHMoY29uc3QgSFRNTE1lZGlhRWxlbWVudCYpIGNvbnN0Citib29sIE1lZGlh
RWxlbWVudFNlc3Npb246Omhhc1dpcmVsZXNzUGxheWJhY2tUYXJnZXRzKCkgY29uc3QKIHsKICNp
ZiBQTEFURk9STShJT1MpCiAgICAgLy8gRklYTUU6IGNvbnNvbGlkYXRlIE1hYyBhbmQgaU9TIGlt
cGxlbWVudGF0aW9ucwpAQCAtNDQ3LDIwICs0NDksMjAgQEAgYm9vbCBNZWRpYUVsZW1lbnRTZXNz
aW9uOjpoYXNXaXJlbGVzc1BsYXliYWNrVGFyZ2V0cyhjb25zdCBIVE1MTWVkaWFFbGVtZW50Jikg
Y28KICAgICByZXR1cm4gbV9oYXNQbGF5YmFja1RhcmdldHM7CiB9CiAKLWJvb2wgTWVkaWFFbGVt
ZW50U2Vzc2lvbjo6d2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoY29uc3QgSFRNTE1lZGlh
RWxlbWVudCYgZWxlbWVudCkgY29uc3QKK2Jvb2wgTWVkaWFFbGVtZW50U2Vzc2lvbjo6d2lyZWxl
c3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoKSBjb25zdAogewotICAgIGlmICghZWxlbWVudC5kb2N1
bWVudCgpLnNldHRpbmdzKCkuYWxsb3dzQWlyUGxheUZvck1lZGlhUGxheWJhY2soKSkgeworICAg
IGlmICghbV9lbGVtZW50LmRvY3VtZW50KCkuc2V0dGluZ3MoKS5hbGxvd3NBaXJQbGF5Rm9yTWVk
aWFQbGF5YmFjaygpKSB7CiAgICAgICAgIExPRyhNZWRpYSwgIk1lZGlhRWxlbWVudFNlc3Npb246
OndpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkIC0gcmV0dXJuaW5nIFRSVUUgYmVjYXVzZSBv
ZiBzZXR0aW5ncyIpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBpZiAoZWxl
bWVudC5oYXNBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6d2Via2l0
d2lyZWxlc3N2aWRlb3BsYXliYWNrZGlzYWJsZWRBdHRyKSkgeworICAgIGlmIChtX2VsZW1lbnQu
aGFzQXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OndlYmtpdHdpcmVs
ZXNzdmlkZW9wbGF5YmFja2Rpc2FibGVkQXR0cikpIHsKICAgICAgICAgTE9HKE1lZGlhLCAiTWVk
aWFFbGVtZW50U2Vzc2lvbjo6d2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQgLSByZXR1cm5p
bmcgVFJVRSBiZWNhdXNlIG9mIGF0dHJpYnV0ZSIpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICB9CiAKICNpZiBQTEFURk9STShJT1MpCi0gICAgYXV0byYgbGVnYWN5QWlycGxheUF0dHJpYnV0
ZVZhbHVlID0gZWxlbWVudC5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1l
czo6d2Via2l0YWlycGxheUF0dHIpOworICAgIGF1dG8mIGxlZ2FjeUFpcnBsYXlBdHRyaWJ1dGVW
YWx1ZSA9IG1fZWxlbWVudC5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1l
czo6d2Via2l0YWlycGxheUF0dHIpOwogICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJ
Q2FzZShsZWdhY3lBaXJwbGF5QXR0cmlidXRlVmFsdWUsICJkZW55IikpIHsKICAgICAgICAgTE9H
KE1lZGlhLCAiTWVkaWFFbGVtZW50U2Vzc2lvbjo6d2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJs
ZWQgLSByZXR1cm5pbmcgVFJVRSBiZWNhdXNlIG9mIGxlZ2FjeSBhdHRyaWJ1dGUiKTsKICAgICAg
ICAgcmV0dXJuIHRydWU7CkBAIC00NzEsNyArNDczLDcgQEAgYm9vbCBNZWRpYUVsZW1lbnRTZXNz
aW9uOjp3aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZChjb25zdCBIVE1MTWVkaWFFbGVtZW50
JgogICAgIH0KICNlbmRpZgogCi0gICAgYXV0byBwbGF5ZXIgPSBlbGVtZW50LnBsYXllcigpOwor
ICAgIGF1dG8gcGxheWVyID0gbV9lbGVtZW50LnBsYXllcigpOwogICAgIGlmICghcGxheWVyKQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKIApAQCAtNDgxLDE0ICs0ODMsMTQgQEAgYm9vbCBNZWRpYUVs
ZW1lbnRTZXNzaW9uOjp3aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZChjb25zdCBIVE1MTWVk
aWFFbGVtZW50JgogICAgIHJldHVybiBkaXNhYmxlZDsKIH0KIAotdm9pZCBNZWRpYUVsZW1lbnRT
ZXNzaW9uOjpzZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZChjb25zdCBIVE1MTWVkaWFF
bGVtZW50JiBlbGVtZW50LCBib29sIGRpc2FibGVkKQordm9pZCBNZWRpYUVsZW1lbnRTZXNzaW9u
OjpzZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZChib29sIGRpc2FibGVkKQogewogICAg
IGlmIChkaXNhYmxlZCkKICAgICAgICAgYWRkQmVoYXZpb3JSZXN0cmljdGlvbihXaXJlbGVzc1Zp
ZGVvUGxheWJhY2tEaXNhYmxlZCk7CiAgICAgZWxzZQogICAgICAgICByZW1vdmVCZWhhdmlvclJl
c3RyaWN0aW9uKFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKTsKIAotICAgIGF1dG8gcGxh
eWVyID0gZWxlbWVudC5wbGF5ZXIoKTsKKyAgICBhdXRvIHBsYXllciA9IG1fZWxlbWVudC5wbGF5
ZXIoKTsKICAgICBpZiAoIXBsYXllcikKICAgICAgICAgcmV0dXJuOwogCkBAIC00OTYsMTcgKzQ5
OCwxNiBAQCB2b2lkIE1lZGlhRWxlbWVudFNlc3Npb246OnNldFdpcmVsZXNzVmlkZW9QbGF5YmFj
a0Rpc2FibGVkKGNvbnN0IEhUTUxNZWRpYUVsZW1lbgogICAgIHBsYXllci0+c2V0V2lyZWxlc3NW
aWRlb1BsYXliYWNrRGlzYWJsZWQoZGlzYWJsZWQpOwogfQogCi12b2lkIE1lZGlhRWxlbWVudFNl
c3Npb246OnNldEhhc1BsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5TGlzdGVuZXJzKGNvbnN0IEhU
TUxNZWRpYUVsZW1lbnQmIGVsZW1lbnQsIGJvb2wgaGFzTGlzdGVuZXJzKQordm9pZCBNZWRpYUVs
ZW1lbnRTZXNzaW9uOjpzZXRIYXNQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUxpc3RlbmVycyhi
b29sIGhhc0xpc3RlbmVycykKIHsKICAgICBMT0coTWVkaWEsICJNZWRpYUVsZW1lbnRTZXNzaW9u
OjpzZXRIYXNQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUxpc3RlbmVycyAtIGhhc0xpc3RlbmVy
cyAlcyIsIGhhc0xpc3RlbmVycyA/ICJUUlVFIiA6ICJGQUxTRSIpOwogCiAjaWYgUExBVEZPUk0o
SU9TKQotICAgIFVOVVNFRF9QQVJBTShlbGVtZW50KTsKICAgICBtX2hhc1BsYXliYWNrVGFyZ2V0
QXZhaWxhYmlsaXR5TGlzdGVuZXJzID0gaGFzTGlzdGVuZXJzOwogICAgIFBsYXRmb3JtTWVkaWFT
ZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLmNvbmZpZ3VyZVdpcmVMZXNzVGFyZ2V0TW9u
aXRvcmluZygpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oaGFzTGlzdGVuZXJzKTsKLSAgICBl
bGVtZW50LmRvY3VtZW50KCkucGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnRTdGF0ZURpZENoYW5n
ZSgqdGhpcywgZWxlbWVudC5tZWRpYVN0YXRlKCkpOworICAgIG1fZWxlbWVudC5kb2N1bWVudCgp
LnBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50U3RhdGVEaWRDaGFuZ2UoKnRoaXMsIGVsZW1lbnQu
bWVkaWFTdGF0ZSgpKTsKICNlbmRpZgogfQogCkBAIC01NTksMTcgKzU2MCwxNyBAQCB2b2lkIE1l
ZGlhRWxlbWVudFNlc3Npb246OnNldFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KGJvb2wgc2hv
dWxkUGxheSkKICAgICBjbGllbnQoKS5zZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldChzaG91
bGRQbGF5KTsKIH0KIAotdm9pZCBNZWRpYUVsZW1lbnRTZXNzaW9uOjptZWRpYVN0YXRlRGlkQ2hh
bmdlKGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQmIGVsZW1lbnQsIE1lZGlhUHJvZHVjZXI6Ok1lZGlh
U3RhdGVGbGFncyBzdGF0ZSkKK3ZvaWQgTWVkaWFFbGVtZW50U2Vzc2lvbjo6bWVkaWFTdGF0ZURp
ZENoYW5nZShNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlRmxhZ3Mgc3RhdGUpCiB7Ci0gICAgZWxl
bWVudC5kb2N1bWVudCgpLnBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50U3RhdGVEaWRDaGFuZ2Uo
KnRoaXMsIHN0YXRlKTsKKyAgICBtX2VsZW1lbnQuZG9jdW1lbnQoKS5wbGF5YmFja1RhcmdldFBp
Y2tlckNsaWVudFN0YXRlRGlkQ2hhbmdlKCp0aGlzLCBzdGF0ZSk7CiB9CiAjZW5kaWYKIAotTWVk
aWFQbGF5ZXI6OlByZWxvYWQgTWVkaWFFbGVtZW50U2Vzc2lvbjo6ZWZmZWN0aXZlUHJlbG9hZEZv
ckVsZW1lbnQoY29uc3QgSFRNTE1lZGlhRWxlbWVudCYgZWxlbWVudCkgY29uc3QKK01lZGlhUGxh
eWVyOjpQcmVsb2FkIE1lZGlhRWxlbWVudFNlc3Npb246OmVmZmVjdGl2ZVByZWxvYWRGb3JFbGVt
ZW50KCkgY29uc3QKIHsKLSAgICBNZWRpYVBsYXllcjo6UHJlbG9hZCBwcmVsb2FkID0gZWxlbWVu
dC5wcmVsb2FkVmFsdWUoKTsKKyAgICBNZWRpYVBsYXllcjo6UHJlbG9hZCBwcmVsb2FkID0gbV9l
bGVtZW50LnByZWxvYWRWYWx1ZSgpOwogCi0gICAgaWYgKHBhZ2VFeHBsaWNpdGx5QWxsb3dzRWxl
bWVudFRvQXV0b3BsYXlJbmxpbmUoZWxlbWVudCkpCisgICAgaWYgKHBhZ2VFeHBsaWNpdGx5QWxs
b3dzRWxlbWVudFRvQXV0b3BsYXlJbmxpbmUobV9lbGVtZW50KSkKICAgICAgICAgcmV0dXJuIHBy
ZWxvYWQ7CiAKICAgICBpZiAobV9yZXN0cmljdGlvbnMgJiBNZXRhZGF0YVByZWxvYWRpbmdOb3RQ
ZXJtaXR0ZWQpCkBAIC01ODMsNjcgKzU4NCw2NSBAQCBNZWRpYVBsYXllcjo6UHJlbG9hZCBNZWRp
YUVsZW1lbnRTZXNzaW9uOjplZmZlY3RpdmVQcmVsb2FkRm9yRWxlbWVudChjb25zdCBIVE1MTQog
ICAgIHJldHVybiBwcmVsb2FkOwogfQogCi1ib29sIE1lZGlhRWxlbWVudFNlc3Npb246OnJlcXVp
cmVzRnVsbHNjcmVlbkZvclZpZGVvUGxheWJhY2soY29uc3QgSFRNTE1lZGlhRWxlbWVudCYgZWxl
bWVudCkgY29uc3QKK2Jvb2wgTWVkaWFFbGVtZW50U2Vzc2lvbjo6cmVxdWlyZXNGdWxsc2NyZWVu
Rm9yVmlkZW9QbGF5YmFjaygpIGNvbnN0CiB7Ci0gICAgaWYgKHBhZ2VFeHBsaWNpdGx5QWxsb3dz
RWxlbWVudFRvQXV0b3BsYXlJbmxpbmUoZWxlbWVudCkpCisgICAgaWYgKHBhZ2VFeHBsaWNpdGx5
QWxsb3dzRWxlbWVudFRvQXV0b3BsYXlJbmxpbmUobV9lbGVtZW50KSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCi0gICAgaWYgKGlzPEhUTUxBdWRpb0VsZW1lbnQ+KGVsZW1lbnQpKQorICAgIGlm
IChpczxIVE1MQXVkaW9FbGVtZW50PihtX2VsZW1lbnQpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICBpZiAoZWxlbWVudC5kb2N1bWVudCgpLmlzTWVkaWFEb2N1bWVudCgpKSB7Ci0gICAg
ICAgIEFTU0VSVChpczxIVE1MVmlkZW9FbGVtZW50PihlbGVtZW50KSk7Ci0gICAgICAgIGNvbnN0
IEhUTUxWaWRlb0VsZW1lbnQmIHZpZGVvRWxlbWVudCA9ICpkb3duY2FzdDxjb25zdCBIVE1MVmlk
ZW9FbGVtZW50PigmZWxlbWVudCk7Ci0gICAgICAgIGlmIChlbGVtZW50LnJlYWR5U3RhdGUoKSA8
IEhUTUxWaWRlb0VsZW1lbnQ6OkhBVkVfTUVUQURBVEEgfHwgIXZpZGVvRWxlbWVudC5oYXNFdmVy
SGFkVmlkZW8oKSkKKyAgICBpZiAobV9lbGVtZW50LmRvY3VtZW50KCkuaXNNZWRpYURvY3VtZW50
KCkpIHsKKyAgICAgICAgQVNTRVJUKGlzPEhUTUxWaWRlb0VsZW1lbnQ+KG1fZWxlbWVudCkpOwor
ICAgICAgICBjb25zdCBIVE1MVmlkZW9FbGVtZW50JiB2aWRlb0VsZW1lbnQgPSAqZG93bmNhc3Q8
Y29uc3QgSFRNTFZpZGVvRWxlbWVudD4oJm1fZWxlbWVudCk7CisgICAgICAgIGlmIChtX2VsZW1l
bnQucmVhZHlTdGF0ZSgpIDwgSFRNTFZpZGVvRWxlbWVudDo6SEFWRV9NRVRBREFUQSB8fCAhdmlk
ZW9FbGVtZW50Lmhhc0V2ZXJIYWRWaWRlbygpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KIAotICAgIGlmIChlbGVtZW50LmlzVGVtcG9yYXJpbHlBbGxvd2luZ0lubGluZVBsYXli
YWNrQWZ0ZXJGdWxsc2NyZWVuKCkpCisgICAgaWYgKG1fZWxlbWVudC5pc1RlbXBvcmFyaWx5QWxs
b3dpbmdJbmxpbmVQbGF5YmFja0FmdGVyRnVsbHNjcmVlbigpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICBpZiAoIWVsZW1lbnQuZG9jdW1lbnQoKS5zZXR0aW5ncygpLmFsbG93c0lubGlu
ZU1lZGlhUGxheWJhY2soKSkKKyAgICBpZiAoIW1fZWxlbWVudC5kb2N1bWVudCgpLnNldHRpbmdz
KCkuYWxsb3dzSW5saW5lTWVkaWFQbGF5YmFjaygpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAot
ICAgIGlmICghZWxlbWVudC5kb2N1bWVudCgpLnNldHRpbmdzKCkuaW5saW5lTWVkaWFQbGF5YmFj
a1JlcXVpcmVzUGxheXNJbmxpbmVBdHRyaWJ1dGUoKSkKKyAgICBpZiAoIW1fZWxlbWVudC5kb2N1
bWVudCgpLnNldHRpbmdzKCkuaW5saW5lTWVkaWFQbGF5YmFja1JlcXVpcmVzUGxheXNJbmxpbmVB
dHRyaWJ1dGUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAjaWYgUExBVEZPUk0oSU9TKQog
ICAgIGlmIChJT1NBcHBsaWNhdGlvbjo6aXNJQm9va3MoKSkKLSAgICAgICAgcmV0dXJuICFlbGVt
ZW50Lmhhc0F0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjp3ZWJraXRf
cGxheXNpbmxpbmVBdHRyKSAmJiAhZWxlbWVudC5oYXNBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25p
emF0aW9uKEhUTUxOYW1lczo6cGxheXNpbmxpbmVBdHRyKTsKKyAgICAgICAgcmV0dXJuICFtX2Vs
ZW1lbnQuaGFzQXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OndlYmtp
dF9wbGF5c2lubGluZUF0dHIpICYmICFtX2VsZW1lbnQuaGFzQXR0cmlidXRlV2l0aG91dFN5bmNo
cm9uaXphdGlvbihIVE1MTmFtZXM6OnBsYXlzaW5saW5lQXR0cik7CiAgICAgaWYgKGR5bGRfZ2V0
X3Byb2dyYW1fc2RrX3ZlcnNpb24oKSA8IERZTERfSU9TX1ZFUlNJT05fMTBfMCkKLSAgICAgICAg
cmV0dXJuICFlbGVtZW50Lmhhc0F0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5h
bWVzOjp3ZWJraXRfcGxheXNpbmxpbmVBdHRyKTsKKyAgICAgICAgcmV0dXJuICFtX2VsZW1lbnQu
aGFzQXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OndlYmtpdF9wbGF5
c2lubGluZUF0dHIpOwogI2VuZGlmCiAKLSAgICBpZiAoZWxlbWVudC5kb2N1bWVudCgpLmlzTWVk
aWFEb2N1bWVudCgpICYmIGVsZW1lbnQuZG9jdW1lbnQoKS5vd25lckVsZW1lbnQoKSkKKyAgICBp
ZiAobV9lbGVtZW50LmRvY3VtZW50KCkuaXNNZWRpYURvY3VtZW50KCkgJiYgbV9lbGVtZW50LmRv
Y3VtZW50KCkub3duZXJFbGVtZW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJl
dHVybiAhZWxlbWVudC5oYXNBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1l
czo6cGxheXNpbmxpbmVBdHRyKTsKKyAgICByZXR1cm4gIW1fZWxlbWVudC5oYXNBdHRyaWJ1dGVX
aXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6cGxheXNpbmxpbmVBdHRyKTsKIH0KIAot
Ym9vbCBNZWRpYUVsZW1lbnRTZXNzaW9uOjphbGxvd3NBdXRvbWF0aWNNZWRpYURhdGFMb2FkaW5n
KGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQmIGVsZW1lbnQpIGNvbnN0Citib29sIE1lZGlhRWxlbWVu
dFNlc3Npb246OmFsbG93c0F1dG9tYXRpY01lZGlhRGF0YUxvYWRpbmcoKSBjb25zdAogewotICAg
IGlmIChwYWdlRXhwbGljaXRseUFsbG93c0VsZW1lbnRUb0F1dG9wbGF5SW5saW5lKGVsZW1lbnQp
KQorICAgIGlmIChwYWdlRXhwbGljaXRseUFsbG93c0VsZW1lbnRUb0F1dG9wbGF5SW5saW5lKG1f
ZWxlbWVudCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgaWYgKGVsZW1lbnQuZG9jdW1l
bnQoKS5zZXR0aW5ncygpLm1lZGlhRGF0YUxvYWRzQXV0b21hdGljYWxseSgpKQorICAgIGlmICht
X2VsZW1lbnQuZG9jdW1lbnQoKS5zZXR0aW5ncygpLm1lZGlhRGF0YUxvYWRzQXV0b21hdGljYWxs
eSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9p
ZCBNZWRpYUVsZW1lbnRTZXNzaW9uOjptZWRpYUVuZ2luZVVwZGF0ZWQoY29uc3QgSFRNTE1lZGlh
RWxlbWVudCYgZWxlbWVudCkKK3ZvaWQgTWVkaWFFbGVtZW50U2Vzc2lvbjo6bWVkaWFFbmdpbmVV
cGRhdGVkKCkKIHsKICAgICBMT0coTWVkaWEsICJNZWRpYUVsZW1lbnRTZXNzaW9uOjptZWRpYUVu
Z2luZVVwZGF0ZWQiKTsKIAogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCiAg
ICAgaWYgKG1fcmVzdHJpY3Rpb25zICYgV2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQpCi0g
ICAgICAgIHNldFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKGVsZW1lbnQsIHRydWUpOwor
ICAgICAgICBzZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCh0cnVlKTsKICAgICBpZiAo
bV9wbGF5YmFja1RhcmdldCkKICAgICAgICAgY2xpZW50KCkuc2V0V2lyZWxlc3NQbGF5YmFja1Rh
cmdldCgqbV9wbGF5YmFja1RhcmdldC5jb3B5UmVmKCkpOwogICAgIGlmIChtX3Nob3VsZFBsYXlU
b1BsYXliYWNrVGFyZ2V0KQogICAgICAgICBjbGllbnQoKS5zZXRTaG91bGRQbGF5VG9QbGF5YmFj
a1RhcmdldCh0cnVlKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGVsZW1lbnQpOwogI2VuZGlm
CiAgICAgCiB9CkBAIC02NTQsOSArNjUzLDkgQEAgdm9pZCBNZWRpYUVsZW1lbnRTZXNzaW9uOjpy
ZXNldFBsYXliYWNrU2Vzc2lvblN0YXRlKCkKICAgICBhZGRCZWhhdmlvclJlc3RyaWN0aW9uKFJl
cXVpcmVVc2VyR2VzdHVyZVRvQ29udHJvbENvbnRyb2xzTWFuYWdlciB8IFJlcXVpcmVQbGF5YmFj
a1RvQ29udHJvbENvbnRyb2xzTWFuYWdlcik7CiB9CiAKLWJvb2wgTWVkaWFFbGVtZW50U2Vzc2lv
bjo6YWxsb3dzUGljdHVyZUluUGljdHVyZShjb25zdCBIVE1MTWVkaWFFbGVtZW50JiBlbGVtZW50
KSBjb25zdAorYm9vbCBNZWRpYUVsZW1lbnRTZXNzaW9uOjphbGxvd3NQaWN0dXJlSW5QaWN0dXJl
KCkgY29uc3QKIHsKLSAgICByZXR1cm4gZWxlbWVudC5kb2N1bWVudCgpLnNldHRpbmdzKCkuYWxs
b3dzUGljdHVyZUluUGljdHVyZU1lZGlhUGxheWJhY2soKSAmJiAhZWxlbWVudC53ZWJraXRDdXJy
ZW50UGxheWJhY2tUYXJnZXRJc1dpcmVsZXNzKCk7CisgICAgcmV0dXJuIG1fZWxlbWVudC5kb2N1
bWVudCgpLnNldHRpbmdzKCkuYWxsb3dzUGljdHVyZUluUGljdHVyZU1lZGlhUGxheWJhY2soKSAm
JiAhbV9lbGVtZW50LndlYmtpdEN1cnJlbnRQbGF5YmFja1RhcmdldElzV2lyZWxlc3MoKTsKIH0K
IAogI2lmIFBMQVRGT1JNKElPUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVk
aWFFbGVtZW50U2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNz
aW9uLmgKaW5kZXggN2FkZDViZTc2YjEzYjEzNzE3ODQzNzhhMWNmMTc2MjIxYzYwYzE3Ny4uMzFh
Zjc2MDRiOTY0YWM5YjM5N2ExZDdmZDU5ZGU0ODU3MjJiNzk4ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmgKQEAgLTY1LDM0ICs2NSwzNCBAQCBwdWJsaWM6CiAg
ICAgdm9pZCByZWdpc3RlcldpdGhEb2N1bWVudChEb2N1bWVudCYpOwogICAgIHZvaWQgdW5yZWdp
c3RlcldpdGhEb2N1bWVudChEb2N1bWVudCYpOwogCi0gICAgU3VjY2Vzc09yPE1lZGlhUGxheWJh
Y2tEZW5pYWxSZWFzb24+IHBsYXliYWNrUGVybWl0dGVkKGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQm
KSBjb25zdDsKKyAgICBTdWNjZXNzT3I8TWVkaWFQbGF5YmFja0RlbmlhbFJlYXNvbj4gcGxheWJh
Y2tQZXJtaXR0ZWQoKSBjb25zdDsKICAgICBib29sIGF1dG9wbGF5UGVybWl0dGVkKCkgY29uc3Q7
Ci0gICAgYm9vbCBkYXRhTG9hZGluZ1Blcm1pdHRlZChjb25zdCBIVE1MTWVkaWFFbGVtZW50Jikg
Y29uc3Q7Ci0gICAgYm9vbCBmdWxsc2NyZWVuUGVybWl0dGVkKGNvbnN0IEhUTUxNZWRpYUVsZW1l
bnQmKSBjb25zdDsKLSAgICBib29sIHBhZ2VBbGxvd3NEYXRhTG9hZGluZyhjb25zdCBIVE1MTWVk
aWFFbGVtZW50JikgY29uc3Q7Ci0gICAgYm9vbCBwYWdlQWxsb3dzUGxheWJhY2tBZnRlclJlc3Vt
aW5nKGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQmKSBjb25zdDsKKyAgICBib29sIGRhdGFMb2FkaW5n
UGVybWl0dGVkKCkgY29uc3Q7CisgICAgYm9vbCBmdWxsc2NyZWVuUGVybWl0dGVkKCkgY29uc3Q7
CisgICAgYm9vbCBwYWdlQWxsb3dzRGF0YUxvYWRpbmcoKSBjb25zdDsKKyAgICBib29sIHBhZ2VB
bGxvd3NQbGF5YmFja0FmdGVyUmVzdW1pbmcoKSBjb25zdDsKIAogI2lmIEVOQUJMRShXSVJFTEVT
U19QTEFZQkFDS19UQVJHRVQpCi0gICAgdm9pZCBzaG93UGxheWJhY2tUYXJnZXRQaWNrZXIoY29u
c3QgSFRNTE1lZGlhRWxlbWVudCYpOwotICAgIGJvb2wgaGFzV2lyZWxlc3NQbGF5YmFja1Rhcmdl
dHMoY29uc3QgSFRNTE1lZGlhRWxlbWVudCYpIGNvbnN0OworICAgIHZvaWQgc2hvd1BsYXliYWNr
VGFyZ2V0UGlja2VyKCk7CisgICAgYm9vbCBoYXNXaXJlbGVzc1BsYXliYWNrVGFyZ2V0cygpIGNv
bnN0OwogCi0gICAgYm9vbCB3aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZChjb25zdCBIVE1M
TWVkaWFFbGVtZW50JikgY29uc3Q7Ci0gICAgdm9pZCBzZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tE
aXNhYmxlZChjb25zdCBIVE1MTWVkaWFFbGVtZW50JiwgYm9vbCk7CisgICAgYm9vbCB3aXJlbGVz
c1ZpZGVvUGxheWJhY2tEaXNhYmxlZCgpIGNvbnN0OworICAgIHZvaWQgc2V0V2lyZWxlc3NWaWRl
b1BsYXliYWNrRGlzYWJsZWQoYm9vbCk7CiAKLSAgICB2b2lkIHNldEhhc1BsYXliYWNrVGFyZ2V0
QXZhaWxhYmlsaXR5TGlzdGVuZXJzKGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQmLCBib29sKTsKKyAg
ICB2b2lkIHNldEhhc1BsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5TGlzdGVuZXJzKGJvb2wpOwog
CiAgICAgYm9vbCBjYW5QbGF5VG9XaXJlbGVzc1BsYXliYWNrVGFyZ2V0KCkgY29uc3Qgb3ZlcnJp
ZGU7CiAgICAgYm9vbCBpc1BsYXlpbmdUb1dpcmVsZXNzUGxheWJhY2tUYXJnZXQoKSBjb25zdCBv
dmVycmlkZTsKIAotICAgIHZvaWQgbWVkaWFTdGF0ZURpZENoYW5nZShjb25zdCBIVE1MTWVkaWFF
bGVtZW50JiwgTWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzKTsKKyAgICB2b2lkIG1lZGlh
U3RhdGVEaWRDaGFuZ2UoTWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzKTsKICNlbmRpZgog
Ci0gICAgYm9vbCByZXF1aXJlc0Z1bGxzY3JlZW5Gb3JWaWRlb1BsYXliYWNrKGNvbnN0IEhUTUxN
ZWRpYUVsZW1lbnQmKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBib29sIGFsbG93c1BpY3R1
cmVJblBpY3R1cmUoY29uc3QgSFRNTE1lZGlhRWxlbWVudCYpIGNvbnN0OwotICAgIE1lZGlhUGxh
eWVyOjpQcmVsb2FkIGVmZmVjdGl2ZVByZWxvYWRGb3JFbGVtZW50KGNvbnN0IEhUTUxNZWRpYUVs
ZW1lbnQmKSBjb25zdDsKLSAgICBib29sIGFsbG93c0F1dG9tYXRpY01lZGlhRGF0YUxvYWRpbmco
Y29uc3QgSFRNTE1lZGlhRWxlbWVudCYpIGNvbnN0OworICAgIGJvb2wgcmVxdWlyZXNGdWxsc2Ny
ZWVuRm9yVmlkZW9QbGF5YmFjaygpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgYWxs
b3dzUGljdHVyZUluUGljdHVyZSgpIGNvbnN0OworICAgIE1lZGlhUGxheWVyOjpQcmVsb2FkIGVm
ZmVjdGl2ZVByZWxvYWRGb3JFbGVtZW50KCkgY29uc3Q7CisgICAgYm9vbCBhbGxvd3NBdXRvbWF0
aWNNZWRpYURhdGFMb2FkaW5nKCkgY29uc3Q7CiAKLSAgICB2b2lkIG1lZGlhRW5naW5lVXBkYXRl
ZChjb25zdCBIVE1MTWVkaWFFbGVtZW50Jik7CisgICAgdm9pZCBtZWRpYUVuZ2luZVVwZGF0ZWQo
KTsKIAogICAgIHZvaWQgcmVzZXRQbGF5YmFja1Nlc3Npb25TdGF0ZSgpIG92ZXJyaWRlOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QbGF5YmFja1Nlc3Npb25N
b2RlbE1lZGlhRWxlbWVudC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BsYXli
YWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50Lm1tCmluZGV4IDQ5ZWRkZDg2MTZkYWM1OWFkMjI0
OGMxYzZjNzFmZjkwMjhiN2VlMWUuLmI4NjEwZWZhMWU1OWZjM2ZlYmRkMjcxOGExNjYzOWJjMzgx
MjRiMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BsYXliYWNr
U2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NvY29hL1BsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50Lm1tCkBAIC01MzAsNyArNTMw
LDcgQEAgU3RyaW5nIFBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50OjpleHRlcm5hbFBs
YXliYWNrTG9jYWxpemVkRGV2aWNlTmFtZSgpIGMKIAogYm9vbCBQbGF5YmFja1Nlc3Npb25Nb2Rl
bE1lZGlhRWxlbWVudDo6d2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoKSBjb25zdAogewot
ICAgIHJldHVybiBtX21lZGlhRWxlbWVudCAmJiBtX21lZGlhRWxlbWVudC0+bWVkaWFTZXNzaW9u
KCkud2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoKm1fbWVkaWFFbGVtZW50KTsKKyAgICBy
ZXR1cm4gbV9tZWRpYUVsZW1lbnQgJiYgbV9tZWRpYUVsZW1lbnQtPm1lZGlhU2Vzc2lvbigpLndp
cmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKCk7CiB9CiAKIGJvb2wgUGxheWJhY2tTZXNzaW9u
TW9kZWxNZWRpYUVsZW1lbnQ6OmlzTXV0ZWQoKSBjb25zdAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>338793</attachid>
            <date>2018-04-25 14:25:56 -0700</date>
            <delta_ts>2018-04-25 15:25:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-184992-20180425142555.patch</filename>
            <type>text/plain</type>
            <size>44611</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMwOTYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWE4M2VmNWMzM2FlODc1
MWE5NTgxMmZjOGE3YTU4MjkyNDRhMThhOS4uOWExMmU3OTY3NDVkMmEzZDUwZTlmM2NmMTMwY2Ez
YmE4ZWMzZmUzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc4IEBACisyMDE4LTA0LTI1ICBFcmlj
IENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIHJlbW92
ZSBtZWRpYSBlbGVtZW50IHBhcmFtZXRlciBmcm9tIE1lZGlhRWxlbWVudFNlc3Npb24gbWV0aG9k
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg0OTky
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zOTczMTYyND4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIG5vIGJlaGF2aW9yIGNo
YW5nZS4KKworICAgICAgICAqIE1vZHVsZXMvbWVkaWFjb250cm9scy9NZWRpYUNvbnRyb2xzSG9z
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xzSG9zdDo6YWxsb3dzSW5saW5l
TWVkaWFQbGF5YmFjayBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xzSG9z
dDo6dXNlckdlc3R1cmVSZXF1aXJlZCBjb25zdCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5TWVkaWFPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eU1lZGlhT2JqZWN0Ojppc1BsYXlpbmdJbmxpbmUgY29uc3QpOgorICAgICAgICAqIGh0bWwv
SFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50
Ojp+SFRNTE1lZGlhRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50
OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpw
cmVwYXJlRm9yTG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzZWxl
Y3RNZWRpYVJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Omxv
YWRSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpjYW5UcmFu
c2l0aW9uRnJvbUF1dG9wbGF5VG9QbGF5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
ZWRpYUVsZW1lbnQ6OnNldFJlYWR5U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudDo6cGxheSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpwYXVz
ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpwYXVzZUludGVybmFsKToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNldFZvbHVtZSk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckRpZEFkZEF1ZGlvVHJhY2sp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c291cmNlV2FzQWRkZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFFbmdpbmVXYXNVcGRhdGVk
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyQ2hhcmFj
dGVyaXN0aWNDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnVw
ZGF0ZVBsYXlTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpjbGVh
ck1lZGlhUGxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnJlc3Vt
ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp3ZWJraXRTaG93UGxheWJh
Y2tUYXJnZXRQaWNrZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6YWRk
RXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpyZW1v
dmVFdmVudExpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmVu
cXVldWVQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUNoYW5nZWRFdmVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpleGl0RnVsbHNjcmVlbik6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpjb25maWd1cmVNZWRpYUNvbnRyb2xzKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmNyZWF0ZU1lZGlhUGxheWVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVySXNGdWxsc2NyZWVuUGVybWl0
dGVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZU1l
ZGlhU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFTdGF0
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjphbGxvd3NNZWRp
YURvY3VtZW50SW5saW5lUGxheWJhY2tDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
ZWRpYUVsZW1lbnQ6OnVwZGF0ZVNob3VsZFBsYXkpOgorICAgICAgICAqIGh0bWwvSFRNTFZpZGVv
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50OjpwYXJzZUF0
dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50OjpzdXBwb3J0c0Z1
bGxzY3JlZW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6d2Vi
a2l0RW50ZXJGdWxsc2NyZWVuKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQ6
OndlYmtpdFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQ6OndlYmtpdFN1cHBvcnRzUHJlc2VudGF0aW9uTW9kZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50OjpzZXRGdWxsc2NyZWVu
TW9kZSk6CisgICAgICAgICogaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhRWxlbWVudFNlc3Npb246OnBsYXliYWNrUGVybWl0dGVkIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRWxlbWVudFNlc3Npb246OmRhdGFMb2FkaW5nUGVybWl0
dGVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRWxlbWVudFNlc3Npb246OmZ1bGxz
Y3JlZW5QZXJtaXR0ZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbGVtZW50U2Vz
c2lvbjo6cGFnZUFsbG93c0RhdGFMb2FkaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhRWxlbWVudFNlc3Npb246OnBhZ2VBbGxvd3NQbGF5YmFja0FmdGVyUmVzdW1pbmcgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbGVtZW50U2Vzc2lvbjo6Y2FuU2hvd0NvbnRyb2xz
TWFuYWdlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVsZW1lbnRTZXNzaW9uOjpz
aG93UGxheWJhY2tUYXJnZXRQaWNrZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbGVtZW50
U2Vzc2lvbjo6aGFzV2lyZWxlc3NQbGF5YmFja1RhcmdldHMgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFFbGVtZW50U2Vzc2lvbjo6d2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbGVtZW50U2Vzc2lvbjo6c2V0V2lyZWxl
c3NWaWRlb1BsYXliYWNrRGlzYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbGVtZW50
U2Vzc2lvbjo6c2V0SGFzUGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlMaXN0ZW5lcnMpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFFbGVtZW50U2Vzc2lvbjo6bWVkaWFTdGF0ZURpZENoYW5nZSk6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVsZW1lbnRTZXNzaW9uOjplZmZlY3RpdmVQcmVsb2Fk
Rm9yRWxlbWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVsZW1lbnRTZXNzaW9u
OjpyZXF1aXJlc0Z1bGxzY3JlZW5Gb3JWaWRlb1BsYXliYWNrIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhRWxlbWVudFNlc3Npb246OmFsbG93c0F1dG9tYXRpY01lZGlhRGF0YUxvYWRp
bmcgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbGVtZW50U2Vzc2lvbjo6bWVkaWFF
bmdpbmVVcGRhdGVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRWxlbWVudFNlc3Npb246OmFs
bG93c1BpY3R1cmVJblBpY3R1cmUgY29uc3QpOgorICAgICAgICAqIGh0bWwvTWVkaWFFbGVtZW50
U2Vzc2lvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1BsYXliYWNrU2Vzc2lvbk1vZGVs
TWVkaWFFbGVtZW50Lm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxheWJhY2tTZXNzaW9uTW9kZWxN
ZWRpYUVsZW1lbnQ6OndpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkIGNvbnN0KToKKwogMjAx
OC0wNC0yNCAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBEb24n
dCBhZGQgc3lzdGVtIGZyYW1ld29yayBwYXRocyB0byBGUkFNRVdPUktfU0VBUkNIX1BBVEhTCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY29udHJvbHMvTWVkaWFDb250
cm9sc0hvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL01lZGlh
Q29udHJvbHNIb3N0LmNwcAppbmRleCBmZGE4NjEzMzgxZjk5YzIzZDBmN2Y2MDYzNWU3ZjI0NTJm
MWRkOTA1Li4yNmZlMTg3NTJmYjcxMjMzNzYzMTM2NWU2MjA4MzY2MDI2ZjViOTZjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY29udHJvbHMvTWVkaWFDb250cm9sc0hv
c3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjb250cm9scy9NZWRpYUNv
bnRyb2xzSG9zdC5jcHAKQEAgLTE4NSw3ICsxODUsNyBAQCB2b2lkIE1lZGlhQ29udHJvbHNIb3N0
Ojp1cGRhdGVDYXB0aW9uRGlzcGxheVNpemVzKCkKICAgICAKIGJvb2wgTWVkaWFDb250cm9sc0hv
c3Q6OmFsbG93c0lubGluZU1lZGlhUGxheWJhY2soKSBjb25zdAogewotICAgIHJldHVybiAhbV9t
ZWRpYUVsZW1lbnQtPm1lZGlhU2Vzc2lvbigpLnJlcXVpcmVzRnVsbHNjcmVlbkZvclZpZGVvUGxh
eWJhY2soKm1fbWVkaWFFbGVtZW50KTsKKyAgICByZXR1cm4gIW1fbWVkaWFFbGVtZW50LT5tZWRp
YVNlc3Npb24oKS5yZXF1aXJlc0Z1bGxzY3JlZW5Gb3JWaWRlb1BsYXliYWNrKCk7CiB9CiAKIGJv
b2wgTWVkaWFDb250cm9sc0hvc3Q6OnN1cHBvcnRzRnVsbHNjcmVlbigpIGNvbnN0CkBAIC0yMTAs
NyArMjEwLDcgQEAgdm9pZCBNZWRpYUNvbnRyb2xzSG9zdDo6c2V0UHJlcGFyZWRUb1JldHVyblZp
ZGVvTGF5ZXJUb0lubGluZShib29sIHZhbHVlKQogCiBib29sIE1lZGlhQ29udHJvbHNIb3N0Ojp1
c2VyR2VzdHVyZVJlcXVpcmVkKCkgY29uc3QKIHsKLSAgICByZXR1cm4gIW1fbWVkaWFFbGVtZW50
LT5tZWRpYVNlc3Npb24oKS5wbGF5YmFja1Blcm1pdHRlZCgqbV9tZWRpYUVsZW1lbnQpOworICAg
IHJldHVybiAhbV9tZWRpYUVsZW1lbnQtPm1lZGlhU2Vzc2lvbigpLnBsYXliYWNrUGVybWl0dGVk
KCk7CiB9CiAKIGJvb2wgTWVkaWFDb250cm9sc0hvc3Q6OnNob3VsZEZvcmNlQ29udHJvbHNEaXNw
bGF5KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU1lZGlhT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eU1lZGlhT2JqZWN0LmNwcAppbmRleCBiMzc3Y2U5NjhlYWViYWEwMjEzMTE0
OTE4NjJkODllYTBmYmYxODQ3Li5lYWExODc0MmZkMDYyZTg5NGQ0MDI0OTc5ZDY3MWI0NzdmYWY1
NWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlNZWRpYU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5TWVkaWFPYmplY3QuY3BwCkBAIC0xNzMsNyArMTczLDcgQEAgYm9vbCBBY2Nlc3Np
YmlsaXR5TWVkaWFPYmplY3Q6OmlzUGxheWluZ0lubGluZSgpIGNvbnN0CiAgICAgaWYgKCFlbGVt
ZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgcmV0dXJuICFlbGVtZW50LT5t
ZWRpYVNlc3Npb24oKS5yZXF1aXJlc0Z1bGxzY3JlZW5Gb3JWaWRlb1BsYXliYWNrKCplbGVtZW50
KTsKKyAgICByZXR1cm4gIWVsZW1lbnQtPm1lZGlhU2Vzc2lvbigpLnJlcXVpcmVzRnVsbHNjcmVl
bkZvclZpZGVvUGxheWJhY2soKTsKIH0KIAogdm9pZCBBY2Nlc3NpYmlsaXR5TWVkaWFPYmplY3Q6
OmVudGVyRnVsbHNjcmVlbigpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmNwcAppbmRleCA4ZTJkNTU0ZTFjN2UwMGYwOGQ4NDY2ODUyMTZiMDhkNWUyMWJhMTRlLi5k
ZTFjMmU4NjZkZDVkNGFjMmY4NGNlNTZhZmZjMzJmNzkzOTEwMjk5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTYwOSw3ICs2MDksNyBAQCBIVE1MTWVkaWFF
bGVtZW50Ojp+SFRNTE1lZGlhRWxlbWVudCgpCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNL
X1RBUkdFVCkKICAgICBpZiAoaGFzRXZlbnRMaXN0ZW5lcnMoZXZlbnROYW1lcygpLndlYmtpdHBs
YXliYWNrdGFyZ2V0YXZhaWxhYmlsaXR5Y2hhbmdlZEV2ZW50KSkgewogICAgICAgICBtX2hhc1Bs
YXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5TGlzdGVuZXJzID0gZmFsc2U7Ci0gICAgICAgIG1fbWVk
aWFTZXNzaW9uLT5zZXRIYXNQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUxpc3RlbmVycygqdGhp
cywgZmFsc2UpOworICAgICAgICBtX21lZGlhU2Vzc2lvbi0+c2V0SGFzUGxheWJhY2tUYXJnZXRB
dmFpbGFiaWxpdHlMaXN0ZW5lcnMoZmFsc2UpOwogICAgICAgICB1cGRhdGVNZWRpYVN0YXRlKCk7
CiAgICAgfQogI2VuZGlmCkBAIC04NjAsNyArODYwLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50
OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNT
dHIKIAogICAgICAgICAvLyBUaGUgYXR0cmlidXRlIG11c3QgYmUgaWdub3JlZCBpZiB0aGUgYXV0
b3BsYXkgYXR0cmlidXRlIGlzIHByZXNlbnQKICAgICAgICAgaWYgKCFhdXRvcGxheSgpICYmICFt
X2hhdmVQcmVwYXJlZFRvUGxheSAmJiBtX3BsYXllcikKLSAgICAgICAgICAgIG1fcGxheWVyLT5z
ZXRQcmVsb2FkKG1fbWVkaWFTZXNzaW9uLT5lZmZlY3RpdmVQcmVsb2FkRm9yRWxlbWVudCgqdGhp
cykpOworICAgICAgICAgICAgbV9wbGF5ZXItPnNldFByZWxvYWQobV9tZWRpYVNlc3Npb24tPmVm
ZmVjdGl2ZVByZWxvYWRGb3JFbGVtZW50KCkpOwogCiAgICAgfSBlbHNlIGlmIChuYW1lID09IG1l
ZGlhZ3JvdXBBdHRyKQogICAgICAgICBzZXRNZWRpYUdyb3VwKHZhbHVlKTsKQEAgLTEzNDMsNyAr
MTM0Myw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cHJlcGFyZUZvckxvYWQoKQogICAgICAg
ICAvLyA5IC0gSW52b2tlIHRoZSBtZWRpYSBlbGVtZW50J3MgcmVzb3VyY2Ugc2VsZWN0aW9uIGFs
Z29yaXRobS4KICAgICAgICAgLy8gTm90ZSwgdW5sZXNzIHRoZSByZXN0cmljdGlvbiBvbiByZXF1
aXJpbmcgdXNlciBhY3Rpb24gaGFzIGJlZW4gcmVtb3ZlZCwKICAgICAgICAgLy8gZG8gbm90IGJl
Z2luIGRvd25sb2FkaW5nIGRhdGEuCi0gICAgICAgIGlmIChtX21lZGlhU2Vzc2lvbi0+ZGF0YUxv
YWRpbmdQZXJtaXR0ZWQoKnRoaXMpKQorICAgICAgICBpZiAobV9tZWRpYVNlc3Npb24tPmRhdGFM
b2FkaW5nUGVybWl0dGVkKCkpCiAgICAgICAgICAgICBzZWxlY3RNZWRpYVJlc291cmNlKCk7CiAg
ICAgfQogCkBAIC0xMzcwLDcgKzEzNzAsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNlbGVj
dE1lZGlhUmVzb3VyY2UoKQogICAgIGlmIChtX3Jlc291cmNlU2VsZWN0aW9uVGFza1F1ZXVlLmhh
c1BlbmRpbmdUYXNrcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIW1fbWVkaWFTZXNz
aW9uLT5wYWdlQWxsb3dzRGF0YUxvYWRpbmcoKnRoaXMpKSB7CisgICAgaWYgKCFtX21lZGlhU2Vz
c2lvbi0+cGFnZUFsbG93c0RhdGFMb2FkaW5nKCkpIHsKICAgICAgICAgQUxXQVlTX0xPRyhMT0dJ
REVOVElGSUVSLCAibm90IGFsbG93ZWQgdG8gbG9hZCBpbiBiYWNrZ3JvdW5kLCB3YWl0aW5nIik7
CiAgICAgICAgIHNldFNob3VsZERlbGF5TG9hZEV2ZW50KGZhbHNlKTsKICAgICAgICAgaWYgKG1f
aXNXYWl0aW5nVW50aWxNZWRpYUNhblN0YXJ0KQpAQCAtMTYxMSw3ICsxNjExLDcgQEAgdm9pZCBI
VE1MTWVkaWFFbGVtZW50Ojpsb2FkUmVzb3VyY2UoY29uc3QgVVJMJiBpbml0aWFsVVJMLCBDb250
ZW50VHlwZSYgY29udGVudFQKICAgICBzZXREaXNwbGF5TW9kZShVbmtub3duKTsKIAogICAgIGlm
ICghYXV0b3BsYXkoKSAmJiAhbV9oYXZlUHJlcGFyZWRUb1BsYXkpCi0gICAgICAgIG1fcGxheWVy
LT5zZXRQcmVsb2FkKG1fbWVkaWFTZXNzaW9uLT5lZmZlY3RpdmVQcmVsb2FkRm9yRWxlbWVudCgq
dGhpcykpOworICAgICAgICBtX3BsYXllci0+c2V0UHJlbG9hZChtX21lZGlhU2Vzc2lvbi0+ZWZm
ZWN0aXZlUHJlbG9hZEZvckVsZW1lbnQoKSk7CiAgICAgbV9wbGF5ZXItPnNldFByZXNlcnZlc1Bp
dGNoKG1fd2Via2l0UHJlc2VydmVzUGl0Y2gpOwogCiAgICAgaWYgKCFtX2V4cGxpY2l0bHlNdXRl
ZCkgewpAQCAtMjQxMSw3ICsyNDExLDcgQEAgU3VjY2Vzc09yPE1lZGlhUGxheWJhY2tEZW5pYWxS
ZWFzb24+IEhUTUxNZWRpYUVsZW1lbnQ6OmNhblRyYW5zaXRpb25Gcm9tQXV0b3BsYXkKICAgICAg
ICAgJiYgIXBhdXNlZEZvclVzZXJJbnRlcmFjdGlvbigpCiAgICAgICAgICYmICFkb2N1bWVudCgp
LmlzU2FuZGJveGVkKFNhbmRib3hBdXRvbWF0aWNGZWF0dXJlcykKICAgICAgICAgJiYgbV9yZWFk
eVN0YXRlID09IEhBVkVfRU5PVUdIX0RBVEEpCi0gICAgICAgIHJldHVybiBtZWRpYVNlc3Npb24o
KS5wbGF5YmFja1Blcm1pdHRlZCgqdGhpcyk7CisgICAgICAgIHJldHVybiBtZWRpYVNlc3Npb24o
KS5wbGF5YmFja1Blcm1pdHRlZCgpOwogCiAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAi
cGFnZSBjb25zZW50IHJlcXVpcmVkIik7CiAgICAgcmV0dXJuIE1lZGlhUGxheWJhY2tEZW5pYWxS
ZWFzb246OlBhZ2VDb25zZW50UmVxdWlyZWQ7CkBAIC0yNTU0LDcgKzI1NTQsNyBAQCB2b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6OnNldFJlYWR5U3RhdGUoTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUgc3Rh
dGUpCiAKICAgICAvLyBJZiB3ZSB0cmFuc2l0aW9uIHRvIHRoZSBGdXR1cmUgRGF0YSBzdGF0ZSBh
bmQgd2UncmUgYWJvdXQgdG8gYmVnaW4gcGxheWluZywgZW5zdXJlIHBsYXliYWNrIGlzIGFjdHVh
bGx5IHBlcm1pdHRlZCBmaXJzdCwKICAgICAvLyBob25vcmluZyBhbnkgcGxheWJhY2sgZGVuaWFs
IHJlYXNvbnMgc3VjaCBhcyB0aGUgcmVxdWlyZW1lbnQgb2YgYSB1c2VyIGdlc3R1cmUuCi0gICAg
aWYgKG1fcmVhZHlTdGF0ZSA9PSBIQVZFX0ZVVFVSRV9EQVRBICYmIG9sZFN0YXRlIDwgSEFWRV9G
VVRVUkVfREFUQSAmJiBwb3RlbnRpYWxseVBsYXlpbmcoKSAmJiAhbV9tZWRpYVNlc3Npb24tPnBs
YXliYWNrUGVybWl0dGVkKCp0aGlzKSkgeworICAgIGlmIChtX3JlYWR5U3RhdGUgPT0gSEFWRV9G
VVRVUkVfREFUQSAmJiBvbGRTdGF0ZSA8IEhBVkVfRlVUVVJFX0RBVEEgJiYgcG90ZW50aWFsbHlQ
bGF5aW5nKCkgJiYgIW1fbWVkaWFTZXNzaW9uLT5wbGF5YmFja1Blcm1pdHRlZCgpKSB7CiAgICAg
ICAgIGF1dG8gY2FuVHJhbnNpdGlvbiA9IGNhblRyYW5zaXRpb25Gcm9tQXV0b3BsYXlUb1BsYXko
KTsKICAgICAgICAgaWYgKGNhblRyYW5zaXRpb24gJiYgY2FuVHJhbnNpdGlvbi52YWx1ZSgpID09
IE1lZGlhUGxheWJhY2tEZW5pYWxSZWFzb246OlVzZXJHZXN0dXJlUmVxdWlyZWQpCiAgICAgICAg
ICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJBdXRvcGxheSBibG9ja2VkLCB1c2VyIGdl
c3R1cmUgcmVxdWlyZWQiKTsKQEAgLTM0MDgsNyArMzQwOCw3IEBAIHZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6cGxheShET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJiBwcm9taXNlKQogewogICAgIEFM
V0FZU19MT0coTE9HSURFTlRJRklFUik7CiAKLSAgICBhdXRvIHN1Y2Nlc3MgPSBtX21lZGlhU2Vz
c2lvbi0+cGxheWJhY2tQZXJtaXR0ZWQoKnRoaXMpOworICAgIGF1dG8gc3VjY2VzcyA9IG1fbWVk
aWFTZXNzaW9uLT5wbGF5YmFja1Blcm1pdHRlZCgpOwogICAgIGlmICghc3VjY2VzcykgewogICAg
ICAgICBpZiAoc3VjY2Vzcy52YWx1ZSgpID09IE1lZGlhUGxheWJhY2tEZW5pYWxSZWFzb246OlVz
ZXJHZXN0dXJlUmVxdWlyZWQpCiAgICAgICAgICAgICBzZXRQbGF5YmFja1dpdGhvdXRVc2VyR2Vz
dHVyZShQbGF5YmFja1dpdGhvdXRVc2VyR2VzdHVyZTo6UHJldmVudGVkKTsKQEAgLTM0MzIsNyAr
MzQzMiw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cGxheSgpCiB7CiAgICAgQUxXQVlTX0xP
RyhMT0dJREVOVElGSUVSKTsKIAotICAgIGF1dG8gc3VjY2VzcyA9IG1fbWVkaWFTZXNzaW9uLT5w
bGF5YmFja1Blcm1pdHRlZCgqdGhpcyk7CisgICAgYXV0byBzdWNjZXNzID0gbV9tZWRpYVNlc3Np
b24tPnBsYXliYWNrUGVybWl0dGVkKCk7CiAgICAgaWYgKCFzdWNjZXNzKSB7CiAgICAgICAgIGlm
IChzdWNjZXNzLnZhbHVlKCkgPT0gTWVkaWFQbGF5YmFja0RlbmlhbFJlYXNvbjo6VXNlckdlc3R1
cmVSZXF1aXJlZCkKICAgICAgICAgICAgIHNldFBsYXliYWNrV2l0aG91dFVzZXJHZXN0dXJlKFBs
YXliYWNrV2l0aG91dFVzZXJHZXN0dXJlOjpQcmV2ZW50ZWQpOwpAQCAtMzUyNSw3ICszNTI1LDcg
QEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpwYXVzZSgpCiAgICAgaWYgKG1fd2FpdGluZ1RvRW50
ZXJGdWxsc2NyZWVuKQogICAgICAgICBtX3dhaXRpbmdUb0VudGVyRnVsbHNjcmVlbiA9IGZhbHNl
OwogCi0gICAgaWYgKCFtX21lZGlhU2Vzc2lvbi0+cGxheWJhY2tQZXJtaXR0ZWQoKnRoaXMpKQor
ICAgIGlmICghbV9tZWRpYVNlc3Npb24tPnBsYXliYWNrUGVybWl0dGVkKCkpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIGlmIChwcm9jZXNzaW5nVXNlckdlc3R1cmVGb3JNZWRpYSgpKQpAQCAtMzU1
Myw3ICszNTUzLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpwYXVzZUludGVybmFsKCkKICAg
ICBpZiAoIW1fcGxheWVyIHx8IG1fbmV0d29ya1N0YXRlID09IE5FVFdPUktfRU1QVFkpIHsKICAg
ICAgICAgLy8gVW5sZXNzIHRoZSByZXN0cmljdGlvbiBvbiBtZWRpYSByZXF1aXJpbmcgdXNlciBh
Y3Rpb24gaGFzIGJlZW4gbGlmdGVkCiAgICAgICAgIC8vIGRvbid0IHRyaWdnZXIgbG9hZGluZyBp
ZiBhIHNjcmlwdCBjYWxscyBwYXVzZSgpLgotICAgICAgICBpZiAoIW1fbWVkaWFTZXNzaW9uLT5w
bGF5YmFja1Blcm1pdHRlZCgqdGhpcykpCisgICAgICAgIGlmICghbV9tZWRpYVNlc3Npb24tPnBs
YXliYWNrUGVybWl0dGVkKCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIHNlbGVjdE1l
ZGlhUmVzb3VyY2UoKTsKICAgICB9CkBAIC0zNjQyLDcgKzM2NDIsNyBAQCBFeGNlcHRpb25Pcjx2
b2lkPiBIVE1MTWVkaWFFbGVtZW50OjpzZXRWb2x1bWUoZG91YmxlIHZvbHVtZSkKICAgICB1cGRh
dGVWb2x1bWUoKTsKICAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS52b2x1bWVjaGFuZ2VF
dmVudCk7CiAKLSAgICBpZiAoaXNQbGF5aW5nKCkgJiYgIW1fbWVkaWFTZXNzaW9uLT5wbGF5YmFj
a1Blcm1pdHRlZCgqdGhpcykpIHsKKyAgICBpZiAoaXNQbGF5aW5nKCkgJiYgIW1fbWVkaWFTZXNz
aW9uLT5wbGF5YmFja1Blcm1pdHRlZCgpKSB7CiAgICAgICAgIHBhdXNlSW50ZXJuYWwoKTsKICAg
ICAgICAgc2V0UGxheWJhY2tXaXRob3V0VXNlckdlc3R1cmUoUGxheWJhY2tXaXRob3V0VXNlckdl
c3R1cmU6OlByZXZlbnRlZCk7CiAgICAgfQpAQCAtMzkwNyw3ICszOTA3LDcgQEAgZG91YmxlIEhU
TUxNZWRpYUVsZW1lbnQ6OnBlcmNlbnRMb2FkZWQoKSBjb25zdAogCiB2b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6Om1lZGlhUGxheWVyRGlkQWRkQXVkaW9UcmFjayhBdWRpb1RyYWNrUHJpdmF0ZSYgdHJh
Y2spCiB7Ci0gICAgaWYgKGlzUGxheWluZygpICYmICFtX21lZGlhU2Vzc2lvbi0+cGxheWJhY2tQ
ZXJtaXR0ZWQoKnRoaXMpKSB7CisgICAgaWYgKGlzUGxheWluZygpICYmICFtX21lZGlhU2Vzc2lv
bi0+cGxheWJhY2tQZXJtaXR0ZWQoKSkgewogICAgICAgICBwYXVzZUludGVybmFsKCk7CiAgICAg
ICAgIHNldFBsYXliYWNrV2l0aG91dFVzZXJHZXN0dXJlKFBsYXliYWNrV2l0aG91dFVzZXJHZXN0
dXJlOjpQcmV2ZW50ZWQpOwogICAgIH0KQEAgLTQ2MTUsNyArNDYxNSw3IEBAIHZvaWQgSFRNTE1l
ZGlhRWxlbWVudDo6c291cmNlV2FzQWRkZWQoSFRNTFNvdXJjZUVsZW1lbnQmIHNvdXJjZSkKICAg
ICBpZiAobV9uZXR3b3JrU3RhdGUgPT0gTkVUV09SS19FTVBUWSkgewogICAgICAgICBtX25leHRD
aGlsZE5vZGVUb0NvbnNpZGVyID0gJnNvdXJjZTsKICNpZiBQTEFURk9STShJT1MpCi0gICAgICAg
IGlmIChtX21lZGlhU2Vzc2lvbi0+ZGF0YUxvYWRpbmdQZXJtaXR0ZWQoKnRoaXMpKQorICAgICAg
ICBpZiAobV9tZWRpYVNlc3Npb24tPmRhdGFMb2FkaW5nUGVybWl0dGVkKCkpCiAjZW5kaWYKICAg
ICAgICAgICAgIHNlbGVjdE1lZGlhUmVzb3VyY2UoKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNDk1
Niw3ICs0OTU2LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYUVuZ2luZVdhc1VwZGF0
ZWQoKQogICAgIHVwZGF0ZVJlbmRlcmVyKCk7CiAgICAgZW5kUHJvY2Vzc2luZ01lZGlhUGxheWVy
Q2FsbGJhY2soKTsKIAotICAgIG1fbWVkaWFTZXNzaW9uLT5tZWRpYUVuZ2luZVVwZGF0ZWQoKnRo
aXMpOworICAgIG1fbWVkaWFTZXNzaW9uLT5tZWRpYUVuZ2luZVVwZGF0ZWQoKTsKIAogI2lmIEVO
QUJMRShXRUJfQVVESU8pCiAgICAgaWYgKG1fYXVkaW9Tb3VyY2VOb2RlICYmIGF1ZGlvU291cmNl
UHJvdmlkZXIoKSkgewpAQCAtNTAyOSw3ICs1MDI5LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50
OjptZWRpYVBsYXllckNoYXJhY3RlcmlzdGljQ2hhbmdlZChNZWRpYVBsYXllciopCiAgICAgICAg
IG1lZGlhQ29udHJvbHMoKS0+cmVzZXQoKTsKICAgICB1cGRhdGVSZW5kZXJlcigpOwogCi0gICAg
aWYgKCFwYXVzZWQoKSAmJiAhbV9tZWRpYVNlc3Npb24tPnBsYXliYWNrUGVybWl0dGVkKCp0aGlz
KSkgeworICAgIGlmICghcGF1c2VkKCkgJiYgIW1fbWVkaWFTZXNzaW9uLT5wbGF5YmFja1Blcm1p
dHRlZCgpKSB7CiAgICAgICAgIHBhdXNlSW50ZXJuYWwoKTsKICAgICAgICAgc2V0UGxheWJhY2tX
aXRob3V0VXNlckdlc3R1cmUoUGxheWJhY2tXaXRob3V0VXNlckdlc3R1cmU6OlByZXZlbnRlZCk7
CiAgICAgfQpAQCAtNTI2NSw3ICs1MjY1LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1cGRh
dGVQbGF5U3RhdGUoVXBkYXRlU3RhdGUgdXBkYXRlU3RhdGUpCiAKICAgICBJTkZPX0xPRyhMT0dJ
REVOVElGSUVSLCAic2hvdWxkQmVQbGF5aW5nID0gIiwgc2hvdWxkQmVQbGF5aW5nLCAiLCBwbGF5
ZXJQYXVzZWQgPSAiLCBwbGF5ZXJQYXVzZWQpOwogCi0gICAgaWYgKHNob3VsZEJlUGxheWluZyAm
JiBwbGF5ZXJQYXVzZWQgJiYgbV9tZWRpYVNlc3Npb24tPnJlcXVpcmVzRnVsbHNjcmVlbkZvclZp
ZGVvUGxheWJhY2soKnRoaXMpICYmIChtX3dhaXRpbmdUb0VudGVyRnVsbHNjcmVlbiB8fCAhaXNG
dWxsc2NyZWVuKCkpKSB7CisgICAgaWYgKHNob3VsZEJlUGxheWluZyAmJiBwbGF5ZXJQYXVzZWQg
JiYgbV9tZWRpYVNlc3Npb24tPnJlcXVpcmVzRnVsbHNjcmVlbkZvclZpZGVvUGxheWJhY2soKSAm
JiAobV93YWl0aW5nVG9FbnRlckZ1bGxzY3JlZW4gfHwgIWlzRnVsbHNjcmVlbigpKSkgewogICAg
ICAgICBpZiAoIW1fd2FpdGluZ1RvRW50ZXJGdWxsc2NyZWVuKQogICAgICAgICAgICAgZW50ZXJG
dWxsc2NyZWVuKCk7CiAKQEAgLTU0NDcsNyArNTQ0Nyw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6Y2xlYXJNZWRpYVBsYXllcihEZWxheWVkQWN0aW9uVHlwZSBmbGFncykKICNpZiBFTkFCTEUo
V0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQogICAgIGlmIChoYXNFdmVudExpc3RlbmVycyhldmVu
dE5hbWVzKCkud2Via2l0cGxheWJhY2t0YXJnZXRhdmFpbGFiaWxpdHljaGFuZ2VkRXZlbnQpKSB7
CiAgICAgICAgIG1faGFzUGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlMaXN0ZW5lcnMgPSBmYWxz
ZTsKLSAgICAgICAgbV9tZWRpYVNlc3Npb24tPnNldEhhc1BsYXliYWNrVGFyZ2V0QXZhaWxhYmls
aXR5TGlzdGVuZXJzKCp0aGlzLCBmYWxzZSk7CisgICAgICAgIG1fbWVkaWFTZXNzaW9uLT5zZXRI
YXNQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUxpc3RlbmVycyhmYWxzZSk7CiAKICAgICAgICAg
Ly8gU2VuZCBhbiBhdmFpbGFiaWxpdHkgZXZlbnQgaW4gY2FzZSBzY3JpcHRzIHdhbnQgdG8gaGlk
ZSB0aGUgcGlja2VyIHdoZW4gdGhlIGVsZW1lbnQKICAgICAgICAgLy8gZG9lc24ndCBzdXBwb3J0
IHBsYXliYWNrIHRvIGEgdGFyZ2V0LgpAQCAtNTU5Niw3ICs1NTk2LDcgQEAgdm9pZCBIVE1MTWVk
aWFFbGVtZW50OjpyZXN1bWUoKQogCiAgICAgc2V0U2hvdWxkQnVmZmVyRGF0YSh0cnVlKTsKIAot
ICAgIGlmICghbV9tZWRpYVNlc3Npb24tPnBhZ2VBbGxvd3NQbGF5YmFja0FmdGVyUmVzdW1pbmco
KnRoaXMpKQorICAgIGlmICghbV9tZWRpYVNlc3Npb24tPnBhZ2VBbGxvd3NQbGF5YmFja0FmdGVy
UmVzdW1pbmcoKSkKICAgICAgICAgZG9jdW1lbnQoKS5hZGRNZWRpYUNhblN0YXJ0TGlzdGVuZXIo
dGhpcyk7CiAgICAgZWxzZQogICAgICAgICBzZXRQYXVzZWRJbnRlcm5hbChmYWxzZSk7CkBAIC01
NjcyLDcgKzU2NzIsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OndlYmtpdFNob3dQbGF5YmFj
a1RhcmdldFBpY2tlcigpCiAgICAgSU5GT19MT0coTE9HSURFTlRJRklFUik7CiAgICAgaWYgKHBy
b2Nlc3NpbmdVc2VyR2VzdHVyZUZvck1lZGlhKCkpCiAgICAgICAgIHJlbW92ZUJlaGF2aW9yc1Jl
c3RyaWN0aW9uc0FmdGVyRmlyc3RVc2VyR2VzdHVyZSgpOwotICAgIG1fbWVkaWFTZXNzaW9uLT5z
aG93UGxheWJhY2tUYXJnZXRQaWNrZXIoKnRoaXMpOworICAgIG1fbWVkaWFTZXNzaW9uLT5zaG93
UGxheWJhY2tUYXJnZXRQaWNrZXIoKTsKIH0KIAogYm9vbCBIVE1MTWVkaWFFbGVtZW50Ojp3ZWJr
aXRDdXJyZW50UGxheWJhY2tUYXJnZXRJc1dpcmVsZXNzKCkgY29uc3QKQEAgLTU3MjIsNyArNTcy
Miw3IEBAIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9t
aWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmPEV2ZW50CiAKICAgICBpZiAoaXNGaXJzdEF2YWlsYWJp
bGl0eUNoYW5nZWRMaXN0ZW5lcikgewogICAgICAgICBtX2hhc1BsYXliYWNrVGFyZ2V0QXZhaWxh
YmlsaXR5TGlzdGVuZXJzID0gdHJ1ZTsKLSAgICAgICAgbV9tZWRpYVNlc3Npb24tPnNldEhhc1Bs
YXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5TGlzdGVuZXJzKCp0aGlzLCB0cnVlKTsKKyAgICAgICAg
bV9tZWRpYVNlc3Npb24tPnNldEhhc1BsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5TGlzdGVuZXJz
KHRydWUpOwogICAgIH0KIAogICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsICInd2Via2l0cGxh
eWJhY2t0YXJnZXRhdmFpbGFiaWxpdHljaGFuZ2VkJyIpOwpAQCAtNTc0Myw3ICs1NzQzLDcgQEAg
Ym9vbCBIVE1MTWVkaWFFbGVtZW50OjpyZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0
cmluZyYgZXZlbnRUeXBlLCBFdmVudEwKICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCAicmVt
b3ZlZCBsYXN0IGxpc3RlbmVyID0gIiwgZGlkUmVtb3ZlTGFzdEF2YWlsYWJpbGl0eUNoYW5nZWRM
aXN0ZW5lcik7CiAgICAgaWYgKGRpZFJlbW92ZUxhc3RBdmFpbGFiaWxpdHlDaGFuZ2VkTGlzdGVu
ZXIpIHsKICAgICAgICAgbV9oYXNQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUxpc3RlbmVycyA9
IGZhbHNlOwotICAgICAgICBtX21lZGlhU2Vzc2lvbi0+c2V0SGFzUGxheWJhY2tUYXJnZXRBdmFp
bGFiaWxpdHlMaXN0ZW5lcnMoKnRoaXMsIGZhbHNlKTsKKyAgICAgICAgbV9tZWRpYVNlc3Npb24t
PnNldEhhc1BsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5TGlzdGVuZXJzKGZhbHNlKTsKICAgICAg
ICAgdXBkYXRlTWVkaWFTdGF0ZShVcGRhdGVTdGF0ZTo6QXN5bmNocm9ub3VzbHkpOwogICAgIH0K
IApAQCAtNTc1Miw3ICs1NzUyLDcgQEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50OjpyZW1vdmVFdmVu
dExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudEwKIAogdm9pZCBI
VE1MTWVkaWFFbGVtZW50OjplbnF1ZXVlUGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlDaGFuZ2Vk
RXZlbnQoKQogewotICAgIGJvb2wgaGFzVGFyZ2V0cyA9IG1fbWVkaWFTZXNzaW9uLT5oYXNXaXJl
bGVzc1BsYXliYWNrVGFyZ2V0cygqdGhpcyk7CisgICAgYm9vbCBoYXNUYXJnZXRzID0gbV9tZWRp
YVNlc3Npb24tPmhhc1dpcmVsZXNzUGxheWJhY2tUYXJnZXRzKCk7CiAgICAgSU5GT19MT0coTE9H
SURFTlRJRklFUiwgImhhc1RhcmdldHMgPSAiLCBoYXNUYXJnZXRzKTsKICAgICBhdXRvIGV2ZW50
ID0gV2ViS2l0UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlFdmVudDo6Y3JlYXRlKGV2ZW50TmFt
ZXMoKS53ZWJraXRwbGF5YmFja3RhcmdldGF2YWlsYWJpbGl0eWNoYW5nZWRFdmVudCwgaGFzVGFy
Z2V0cyk7CiAgICAgZXZlbnQtPnNldFRhcmdldCh0aGlzKTsKQEAgLTU5MTIsNyArNTkxMiw3IEBA
IHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZXhpdEZ1bGxzY3JlZW4oKQogICAgIGlmICghZG9jdW1l
bnQoKS5wYWdlKCkgfHwgIWlzPEhUTUxWaWRlb0VsZW1lbnQ+KCp0aGlzKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgaWYgKCFwYXVzZWQoKSAmJiBtX21lZGlhU2Vzc2lvbi0+cmVxdWlyZXNGdWxs
c2NyZWVuRm9yVmlkZW9QbGF5YmFjaygqdGhpcykpIHsKKyAgICBpZiAoIXBhdXNlZCgpICYmIG1f
bWVkaWFTZXNzaW9uLT5yZXF1aXJlc0Z1bGxzY3JlZW5Gb3JWaWRlb1BsYXliYWNrKCkpIHsKICAg
ICAgICAgaWYgKCFkb2N1bWVudCgpLnNldHRpbmdzKCkuYWxsb3dzSW5saW5lTWVkaWFQbGF5YmFj
a0FmdGVyRnVsbHNjcmVlbigpIHx8IGlzVmlkZW9Ub29TbWFsbEZvcklubGluZVBsYXliYWNrKCkp
CiAgICAgICAgICAgICBwYXVzZUludGVybmFsKCk7CiAgICAgICAgIGVsc2UgewpAQCAtNjMyNSw3
ICs2MzI1LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpjb25maWd1cmVNZWRpYUNvbnRyb2xz
KCkKICAgICBib29sIHJlcXVpcmVDb250cm9scyA9IGNvbnRyb2xzKCk7CiAKICAgICAvLyBBbHdh
eXMgY3JlYXRlIGNvbnRyb2xzIGZvciB2aWRlbyB3aGVuIGZ1bGxzY3JlZW4gcGxheWJhY2sgaXMg
cmVxdWlyZWQuCi0gICAgaWYgKGlzVmlkZW8oKSAmJiBtX21lZGlhU2Vzc2lvbi0+cmVxdWlyZXNG
dWxsc2NyZWVuRm9yVmlkZW9QbGF5YmFjaygqdGhpcykpCisgICAgaWYgKGlzVmlkZW8oKSAmJiBt
X21lZGlhU2Vzc2lvbi0+cmVxdWlyZXNGdWxsc2NyZWVuRm9yVmlkZW9QbGF5YmFjaygpKQogICAg
ICAgICByZXF1aXJlQ29udHJvbHMgPSB0cnVlOwogCiAgICAgaWYgKHNob3VsZEZvcmNlQ29udHJv
bHNEaXNwbGF5KCkpCkBAIC02NDkyLDcgKzY0OTIsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6
OmNyZWF0ZU1lZGlhUGxheWVyKCkKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VU
KQogICAgIGlmIChoYXNFdmVudExpc3RlbmVycyhldmVudE5hbWVzKCkud2Via2l0cGxheWJhY2t0
YXJnZXRhdmFpbGFiaWxpdHljaGFuZ2VkRXZlbnQpKSB7CiAgICAgICAgIG1faGFzUGxheWJhY2tU
YXJnZXRBdmFpbGFiaWxpdHlMaXN0ZW5lcnMgPSB0cnVlOwotICAgICAgICBtX21lZGlhU2Vzc2lv
bi0+c2V0SGFzUGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlMaXN0ZW5lcnMoKnRoaXMsIHRydWUp
OworICAgICAgICBtX21lZGlhU2Vzc2lvbi0+c2V0SGFzUGxheWJhY2tUYXJnZXRBdmFpbGFiaWxp
dHlMaXN0ZW5lcnModHJ1ZSk7CiAgICAgICAgIGVucXVldWVQbGF5YmFja1RhcmdldEF2YWlsYWJp
bGl0eUNoYW5nZWRFdmVudCgpOyAvLyBFbnN1cmUgdGhlIGV2ZW50IGxpc3RlbmVyIGdldHMgYXQg
bGVhc3Qgb25lIGV2ZW50LgogICAgIH0KICNlbmRpZgpAQCAtNjgxNiw3ICs2ODE2LDcgQEAgYm9v
bCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllcklzRnVsbHNjcmVlbigpIGNvbnN0CiAKIGJv
b2wgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJJc0Z1bGxzY3JlZW5QZXJtaXR0ZWQoKSBj
b25zdAogewotICAgIHJldHVybiBtX21lZGlhU2Vzc2lvbi0+ZnVsbHNjcmVlblBlcm1pdHRlZCgq
dGhpcyk7CisgICAgcmV0dXJuIG1fbWVkaWFTZXNzaW9uLT5mdWxsc2NyZWVuUGVybWl0dGVkKCk7
CiB9CiAKIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJJc1ZpZGVvKCkgY29uc3QK
QEAgLTc1MTQsNyArNzUxNCw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dXBkYXRlTWVkaWFT
dGF0ZShVcGRhdGVTdGF0ZSB1cGRhdGVTdGF0ZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9t
ZWRpYVN0YXRlID0gc3RhdGU7Ci0gICAgbV9tZWRpYVNlc3Npb24tPm1lZGlhU3RhdGVEaWRDaGFu
Z2UoKnRoaXMsIG1fbWVkaWFTdGF0ZSk7CisgICAgbV9tZWRpYVNlc3Npb24tPm1lZGlhU3RhdGVE
aWRDaGFuZ2UobV9tZWRpYVN0YXRlKTsKICNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKICAgICBk
b2N1bWVudCgpLnVwZGF0ZUlzUGxheWluZ01lZGlhKG1fZWxlbWVudElEKTsKICNlbHNlCkBAIC03
NTM1LDcgKzc1MzUsNyBAQCBNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlRmxhZ3MgSFRNTE1lZGlh
RWxlbWVudDo6bWVkaWFTdGF0ZSgpIGNvbnN0CiAKICAgICBpZiAobV9oYXNQbGF5YmFja1Rhcmdl
dEF2YWlsYWJpbGl0eUxpc3RlbmVycykgewogICAgICAgICBzdGF0ZSB8PSBIYXNQbGF5YmFja1Rh
cmdldEF2YWlsYWJpbGl0eUxpc3RlbmVyOwotICAgICAgICBpZiAoIW1fbWVkaWFTZXNzaW9uLT53
aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCgqdGhpcykpCisgICAgICAgIGlmICghbV9tZWRp
YVNlc3Npb24tPndpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKCkpCiAgICAgICAgICAgICBz
dGF0ZSB8PSBSZXF1aXJlc1BsYXliYWNrVGFyZ2V0TW9uaXRvcmluZzsKICAgICB9CiAKQEAgLTc3
MzUsNyArNzczNSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0U2hvdWxkRHVjayhib29s
IGR1Y2spCiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6YWxsb3dzTWVkaWFEb2N1bWVudElubGlu
ZVBsYXliYWNrQ2hhbmdlZCgpCiB7Ci0gICAgaWYgKHBvdGVudGlhbGx5UGxheWluZygpICYmIG1f
bWVkaWFTZXNzaW9uLT5yZXF1aXJlc0Z1bGxzY3JlZW5Gb3JWaWRlb1BsYXliYWNrKCp0aGlzKSAm
JiAhaXNGdWxsc2NyZWVuKCkpCisgICAgaWYgKHBvdGVudGlhbGx5UGxheWluZygpICYmIG1fbWVk
aWFTZXNzaW9uLT5yZXF1aXJlc0Z1bGxzY3JlZW5Gb3JWaWRlb1BsYXliYWNrKCkgJiYgIWlzRnVs
bHNjcmVlbigpKQogICAgICAgICBlbnRlckZ1bGxzY3JlZW4oKTsKIH0KIApAQCAtNzc3OCw3ICs3
Nzc4LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVTaG91bGRBdXRvcGxheSgpCiAK
IHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dXBkYXRlU2hvdWxkUGxheSgpCiB7Ci0gICAgaWYgKCFw
YXVzZWQoKSAmJiAhbV9tZWRpYVNlc3Npb24tPnBsYXliYWNrUGVybWl0dGVkKCp0aGlzKSkgewor
ICAgIGlmICghcGF1c2VkKCkgJiYgIW1fbWVkaWFTZXNzaW9uLT5wbGF5YmFja1Blcm1pdHRlZCgp
KSB7CiAgICAgICAgIHBhdXNlSW50ZXJuYWwoKTsKICAgICAgICAgc2V0UGxheWJhY2tXaXRob3V0
VXNlckdlc3R1cmUoUGxheWJhY2tXaXRob3V0VXNlckdlc3R1cmU6OlByZXZlbnRlZCk7CiAgICAg
fSBlbHNlIGlmIChjYW5UcmFuc2l0aW9uRnJvbUF1dG9wbGF5VG9QbGF5KCkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAppbmRleCAzZmMwZTk5NDIwYjIxNGZhMWFkMmJl
YjA1YzBhYWMxMjhkNDA0MDFmLi45MDhlZDRjYTY4MzZjZTMyMGMxYzNmOTA4M2VjZWM5YjMyMTBj
OGM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKQEAgLTEzNiw3
ICsxMzYsNyBAQCB2b2lkIEhUTUxWaWRlb0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cgogICAgIH0KICNpZiBFTkFCTEUoV0lS
RUxFU1NfUExBWUJBQ0tfVEFSR0VUKQogICAgIGVsc2UgaWYgKG5hbWUgPT0gd2Via2l0d2lyZWxl
c3N2aWRlb3BsYXliYWNrZGlzYWJsZWRBdHRyKQotICAgICAgICBtZWRpYVNlc3Npb24oKS5zZXRX
aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCgqdGhpcywgdHJ1ZSk7CisgICAgICAgIG1lZGlh
U2Vzc2lvbigpLnNldFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKHRydWUpOwogI2VuZGlm
CiAgICAgZWxzZSB7CiAgICAgICAgIEhUTUxNZWRpYUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKG5h
bWUsIHZhbHVlKTsgICAgCkBAIC0xNDYsNyArMTQ2LDcgQEAgdm9pZCBIVE1MVmlkZW9FbGVtZW50
OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNT
dHIKICAgICAgICAgICAgIGJvb2wgZGlzYWJsZWQgPSBmYWxzZTsKICAgICAgICAgICAgIGlmIChl
cXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0
aW9uKEhUTUxOYW1lczo6d2Via2l0YWlycGxheUF0dHIpLCAiZGVueSIpKQogICAgICAgICAgICAg
ICAgIGRpc2FibGVkID0gdHJ1ZTsKLSAgICAgICAgICAgIG1lZGlhU2Vzc2lvbigpLnNldFdpcmVs
ZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKCp0aGlzLCBkaXNhYmxlZCk7CisgICAgICAgICAgICBt
ZWRpYVNlc3Npb24oKS5zZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZChkaXNhYmxlZCk7
CiAgICAgICAgIH0KICNlbmRpZgogICAgIH0KQEAgLTE1OSw3ICsxNTksNyBAQCBib29sIEhUTUxW
aWRlb0VsZW1lbnQ6OnN1cHBvcnRzRnVsbHNjcmVlbihIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZp
ZGVvRnVsbHNjcmVlbgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCiAgICAgaWYgKHZpZGVv
RnVsbHNjcmVlbk1vZGUgPT0gSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5N
b2RlUGljdHVyZUluUGljdHVyZSkgewotICAgICAgICBpZiAoIW1lZGlhU2Vzc2lvbigpLmFsbG93
c1BpY3R1cmVJblBpY3R1cmUoKnRoaXMpKQorICAgICAgICBpZiAoIW1lZGlhU2Vzc2lvbigpLmFs
bG93c1BpY3R1cmVJblBpY3R1cmUoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAg
ICAgaWYgKCFwbGF5ZXIoKS0+c3VwcG9ydHNQaWN0dXJlSW5QaWN0dXJlKCkpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CkBAIC0zMTYsNyArMzE2LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gSFRN
TFZpZGVvRWxlbWVudDo6d2Via2l0RW50ZXJGdWxsc2NyZWVuKCkKIAogICAgIC8vIEdlbmVyYXRl
IGFuIGV4Y2VwdGlvbiBpZiB0aGlzIGlzbid0IGNhbGxlZCBpbiByZXNwb25zZSB0byBhIHVzZXIg
Z2VzdHVyZSwgb3IgaWYgdGhlIAogICAgIC8vIGVsZW1lbnQgZG9lcyBub3Qgc3VwcG9ydCBmdWxs
c2NyZWVuLgotICAgIGlmICghbWVkaWFTZXNzaW9uKCkuZnVsbHNjcmVlblBlcm1pdHRlZCgqdGhp
cykgfHwgIXN1cHBvcnRzRnVsbHNjcmVlbihIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVs
bHNjcmVlbk1vZGVTdGFuZGFyZCkpCisgICAgaWYgKCFtZWRpYVNlc3Npb24oKS5mdWxsc2NyZWVu
UGVybWl0dGVkKCkgfHwgIXN1cHBvcnRzRnVsbHNjcmVlbihIVE1MTWVkaWFFbGVtZW50RW51bXM6
OlZpZGVvRnVsbHNjcmVlbk1vZGVTdGFuZGFyZCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24g
eyBJbnZhbGlkU3RhdGVFcnJvciB9OwogCiAgICAgZW50ZXJGdWxsc2NyZWVuKCk7CkBAIC0zNTUs
NyArMzU1LDcgQEAgdm9pZCBIVE1MVmlkZW9FbGVtZW50OjphbmNlc3RvcldpbGxFbnRlckZ1bGxz
Y3JlZW4oKQogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCiBib29sIEhUTUxW
aWRlb0VsZW1lbnQ6OndlYmtpdFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKCkgY29uc3QK
IHsKLSAgICByZXR1cm4gbWVkaWFTZXNzaW9uKCkud2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJs
ZWQoKnRoaXMpOworICAgIHJldHVybiBtZWRpYVNlc3Npb24oKS53aXJlbGVzc1ZpZGVvUGxheWJh
Y2tEaXNhYmxlZCgpOwogfQogCiB2b2lkIEhUTUxWaWRlb0VsZW1lbnQ6OnNldFdlYmtpdFdpcmVs
ZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKGJvb2wgZGlzYWJsZWQpCkBAIC00MTQsNyArNDE0LDcg
QEAgYm9vbCBIVE1MVmlkZW9FbGVtZW50Ojp3ZWJraXRTdXBwb3J0c1ByZXNlbnRhdGlvbk1vZGUo
VmlkZW9QcmVzZW50YXRpb25Nb2RlIG1vZGUKICAgICB9CiAKICAgICBpZiAobW9kZSA9PSBWaWRl
b1ByZXNlbnRhdGlvbk1vZGU6OklubGluZSkKLSAgICAgICAgcmV0dXJuICFtZWRpYVNlc3Npb24o
KS5yZXF1aXJlc0Z1bGxzY3JlZW5Gb3JWaWRlb1BsYXliYWNrKCp0aGlzKTsKKyAgICAgICAgcmV0
dXJuICFtZWRpYVNlc3Npb24oKS5yZXF1aXJlc0Z1bGxzY3JlZW5Gb3JWaWRlb1BsYXliYWNrKCk7
CiAKICAgICByZXR1cm4gZmFsc2U7CiB9CkBAIC00NDYsNyArNDQ2LDcgQEAgdm9pZCBIVE1MVmlk
ZW9FbGVtZW50OjpzZXRGdWxsc2NyZWVuTW9kZShIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVv
RnVsbHNjcmVlbk0KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmICghbWVkaWFTZXNz
aW9uKCkuZnVsbHNjcmVlblBlcm1pdHRlZCgqdGhpcykgfHwgIXN1cHBvcnRzRnVsbHNjcmVlbiht
b2RlKSkKKyAgICBpZiAoIW1lZGlhU2Vzc2lvbigpLmZ1bGxzY3JlZW5QZXJtaXR0ZWQoKSB8fCAh
c3VwcG9ydHNGdWxsc2NyZWVuKG1vZGUpKQogICAgICAgICByZXR1cm47CiAKICAgICBlbnRlckZ1
bGxzY3JlZW4obW9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRWxl
bWVudFNlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9u
LmNwcAppbmRleCBlNGE1ZmU2ZDEyMTc3MzE1NDYzNzAxNTA0MzhhNDY5YmIwODJkMTI2Li41Y2Q3
OTA1NTY4OWQ1ZGU0ODRjMTBjY2FmMTg2ZDIwYTc0NjU3ZWExIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL01lZGlhRWxlbWVudFNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5jcHAKQEAgLTE1OCwxOCArMTU4LDE5IEBAIHN0YXRp
YyBib29sIG5lZWRzQXJiaXRyYXJ5VXNlckdlc3R1cmVBdXRvcGxheVF1aXJrKGNvbnN0IERvY3Vt
ZW50JiBkb2N1bWVudCkKIH0KICNlbmRpZiAvLyBQTEFURk9STShNQUMpCiAKLVN1Y2Nlc3NPcjxN
ZWRpYVBsYXliYWNrRGVuaWFsUmVhc29uPiBNZWRpYUVsZW1lbnRTZXNzaW9uOjpwbGF5YmFja1Bl
cm1pdHRlZChjb25zdCBIVE1MTWVkaWFFbGVtZW50JiBlbGVtZW50KSBjb25zdAorU3VjY2Vzc09y
PE1lZGlhUGxheWJhY2tEZW5pYWxSZWFzb24+IE1lZGlhRWxlbWVudFNlc3Npb246OnBsYXliYWNr
UGVybWl0dGVkKCkgY29uc3QKIHsKICAgICBpZiAobV9lbGVtZW50LmlzU3VzcGVuZGVkKCkpCiAg
ICAgICAgIHJldHVybiB7IH07CiAKLSAgICBpZiAoZWxlbWVudC5kb2N1bWVudCgpLmlzTWVkaWFE
b2N1bWVudCgpICYmICFlbGVtZW50LmRvY3VtZW50KCkub3duZXJFbGVtZW50KCkpCisgICAgYXV0
byYgZG9jdW1lbnQgPSBtX2VsZW1lbnQuZG9jdW1lbnQoKTsKKyAgICBpZiAoZG9jdW1lbnQuaXNN
ZWRpYURvY3VtZW50KCkgJiYgIWRvY3VtZW50Lm93bmVyRWxlbWVudCgpKQogICAgICAgICByZXR1
cm4geyB9OwogCi0gICAgaWYgKHBhZ2VFeHBsaWNpdGx5QWxsb3dzRWxlbWVudFRvQXV0b3BsYXlJ
bmxpbmUoZWxlbWVudCkpCisgICAgaWYgKHBhZ2VFeHBsaWNpdGx5QWxsb3dzRWxlbWVudFRvQXV0
b3BsYXlJbmxpbmUobV9lbGVtZW50KSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIGlmIChy
ZXF1aXJlc0Z1bGxzY3JlZW5Gb3JWaWRlb1BsYXliYWNrKGVsZW1lbnQpICYmICFmdWxsc2NyZWVu
UGVybWl0dGVkKGVsZW1lbnQpKSB7CisgICAgaWYgKHJlcXVpcmVzRnVsbHNjcmVlbkZvclZpZGVv
UGxheWJhY2soKSAmJiAhZnVsbHNjcmVlblBlcm1pdHRlZCgpKSB7CiAgICAgICAgIEFMV0FZU19M
T0coTE9HSURFTlRJRklFUiwgIlJldHVybmluZyBGQUxTRSBiZWNhdXNlIG9mIGZ1bGxzY3JlZW4g
cmVzdHJpY3Rpb24iKTsKICAgICAgICAgcmV0dXJuIE1lZGlhUGxheWJhY2tEZW5pYWxSZWFzb246
OkZ1bGxzY3JlZW5SZXF1aXJlZDsKICAgICB9CkBAIC0xNzgsMzUgKzE3OSwzNSBAQCBTdWNjZXNz
T3I8TWVkaWFQbGF5YmFja0RlbmlhbFJlYXNvbj4gTWVkaWFFbGVtZW50U2Vzc2lvbjo6cGxheWJh
Y2tQZXJtaXR0ZWQoY29ucwogICAgICAgICByZXR1cm4geyB9OwogCiAjaWYgRU5BQkxFKE1FRElB
X1NUUkVBTSkKLSAgICBpZiAoZWxlbWVudC5oYXNNZWRpYVN0cmVhbVNyY09iamVjdCgpKSB7Ci0g
ICAgICAgIGlmIChlbGVtZW50LmRvY3VtZW50KCkuaXNDYXB0dXJpbmcoKSkKKyAgICBpZiAobV9l
bGVtZW50Lmhhc01lZGlhU3RyZWFtU3JjT2JqZWN0KCkpIHsKKyAgICAgICAgaWYgKGRvY3VtZW50
LmlzQ2FwdHVyaW5nKCkpCiAgICAgICAgICAgICByZXR1cm4geyB9OwotICAgICAgICBpZiAoZWxl
bWVudC5kb2N1bWVudCgpLm1lZGlhU3RhdGUoKSAmIE1lZGlhUHJvZHVjZXI6OklzUGxheWluZ0F1
ZGlvKQorICAgICAgICBpZiAoZG9jdW1lbnQubWVkaWFTdGF0ZSgpICYgTWVkaWFQcm9kdWNlcjo6
SXNQbGF5aW5nQXVkaW8pCiAgICAgICAgICAgICByZXR1cm4geyB9OwogICAgIH0KICNlbmRpZgog
CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIC8vIEZJWE1FIDxodHRwczovL3dlYmtpdC5vcmcvYi8x
NzU4NTY+OiBNYWtlIHRoaXMgZGVwZW5kZW50IG9uIGEgcnVudGltZSBmbGFnIGZvciBkZXNrdG9w
IGF1dG9wbGF5IHJlc3RyaWN0aW9ucy4KLSAgICBjb25zdCBhdXRvJiB0b3BEb2N1bWVudCA9IGVs
ZW1lbnQuZG9jdW1lbnQoKS50b3BEb2N1bWVudCgpOworICAgIGNvbnN0IGF1dG8mIHRvcERvY3Vt
ZW50ID0gZG9jdW1lbnQudG9wRG9jdW1lbnQoKTsKICAgICBpZiAodG9wRG9jdW1lbnQubWVkaWFT
dGF0ZSgpICYgTWVkaWFQcm9kdWNlcjo6SGFzVXNlckludGVyYWN0ZWRXaXRoTWVkaWFFbGVtZW50
ICYmIHRvcERvY3VtZW50LnNldHRpbmdzKCkubmVlZHNTaXRlU3BlY2lmaWNRdWlya3MoKSkKICAg
ICAgICAgcmV0dXJuIHsgfTsKIAotICAgIGlmIChlbGVtZW50LmRvY3VtZW50KCkuaGFzSGFkVXNl
ckludGVyYWN0aW9uKCkgJiYgbmVlZHNBcmJpdHJhcnlVc2VyR2VzdHVyZUF1dG9wbGF5UXVpcmso
ZWxlbWVudC5kb2N1bWVudCgpKSkKKyAgICBpZiAoZG9jdW1lbnQuaGFzSGFkVXNlckludGVyYWN0
aW9uKCkgJiYgbmVlZHNBcmJpdHJhcnlVc2VyR2VzdHVyZUF1dG9wbGF5UXVpcmsoZG9jdW1lbnQp
KQogICAgICAgICByZXR1cm4geyB9OwogI2VuZGlmCiAKLSAgICBpZiAobV9yZXN0cmljdGlvbnMg
JiBSZXF1aXJlVXNlckdlc3R1cmVGb3JWaWRlb1JhdGVDaGFuZ2UgJiYgZWxlbWVudC5pc1ZpZGVv
KCkgJiYgIWVsZW1lbnQuZG9jdW1lbnQoKS5wcm9jZXNzaW5nVXNlckdlc3R1cmVGb3JNZWRpYSgp
KSB7CisgICAgaWYgKG1fcmVzdHJpY3Rpb25zICYgUmVxdWlyZVVzZXJHZXN0dXJlRm9yVmlkZW9S
YXRlQ2hhbmdlICYmIG1fZWxlbWVudC5pc1ZpZGVvKCkgJiYgIWRvY3VtZW50LnByb2Nlc3NpbmdV
c2VyR2VzdHVyZUZvck1lZGlhKCkpIHsKICAgICAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVS
LCAiUmV0dXJuaW5nIEZBTFNFIGJlY2F1c2UgYSB1c2VyIGdlc3R1cmUgaXMgcmVxdWlyZWQgZm9y
IHZpZGVvIHJhdGUgY2hhbmdlIHJlc3RyaWN0aW9uIik7CiAgICAgICAgIHJldHVybiBNZWRpYVBs
YXliYWNrRGVuaWFsUmVhc29uOjpVc2VyR2VzdHVyZVJlcXVpcmVkOwogICAgIH0KIAotICAgIGlm
IChtX3Jlc3RyaWN0aW9ucyAmIFJlcXVpcmVVc2VyR2VzdHVyZUZvckF1ZGlvUmF0ZUNoYW5nZSAm
JiAoIWVsZW1lbnQuaXNWaWRlbygpIHx8IGVsZW1lbnQuaGFzQXVkaW8oKSkgJiYgIWVsZW1lbnQu
bXV0ZWQoKSAmJiBlbGVtZW50LnZvbHVtZSgpICYmICFlbGVtZW50LmRvY3VtZW50KCkucHJvY2Vz
c2luZ1VzZXJHZXN0dXJlRm9yTWVkaWEoKSkgeworICAgIGlmIChtX3Jlc3RyaWN0aW9ucyAmIFJl
cXVpcmVVc2VyR2VzdHVyZUZvckF1ZGlvUmF0ZUNoYW5nZSAmJiAoIW1fZWxlbWVudC5pc1ZpZGVv
KCkgfHwgbV9lbGVtZW50Lmhhc0F1ZGlvKCkpICYmICFtX2VsZW1lbnQubXV0ZWQoKSAmJiBtX2Vs
ZW1lbnQudm9sdW1lKCkgJiYgIWRvY3VtZW50LnByb2Nlc3NpbmdVc2VyR2VzdHVyZUZvck1lZGlh
KCkpIHsKICAgICAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAiUmV0dXJuaW5nIEZBTFNF
IGJlY2F1c2UgYSB1c2VyIGdlc3R1cmUgaXMgcmVxdWlyZWQgZm9yIGF1ZGlvIHJhdGUgY2hhbmdl
IHJlc3RyaWN0aW9uIik7CiAgICAgICAgIHJldHVybiBNZWRpYVBsYXliYWNrRGVuaWFsUmVhc29u
OjpVc2VyR2VzdHVyZVJlcXVpcmVkOwogICAgIH0KIAotICAgIGlmIChtX3Jlc3RyaWN0aW9ucyAm
IFJlcXVpcmVVc2VyR2VzdHVyZUZvclZpZGVvRHVlVG9Mb3dQb3dlck1vZGUgJiYgZWxlbWVudC5p
c1ZpZGVvKCkgJiYgIWVsZW1lbnQuZG9jdW1lbnQoKS5wcm9jZXNzaW5nVXNlckdlc3R1cmVGb3JN
ZWRpYSgpKSB7CisgICAgaWYgKG1fcmVzdHJpY3Rpb25zICYgUmVxdWlyZVVzZXJHZXN0dXJlRm9y
VmlkZW9EdWVUb0xvd1Bvd2VyTW9kZSAmJiBtX2VsZW1lbnQuaXNWaWRlbygpICYmICFkb2N1bWVu
dC5wcm9jZXNzaW5nVXNlckdlc3R1cmVGb3JNZWRpYSgpKSB7CiAgICAgICAgIEFMV0FZU19MT0co
TE9HSURFTlRJRklFUiwgIlJldHVybmluZyBGQUxTRSBiZWNhdXNlIG9mIHZpZGVvIGxvdyBwb3dl
ciBtb2RlIHJlc3RyaWN0aW9uIik7CiAgICAgICAgIHJldHVybiBNZWRpYVBsYXliYWNrRGVuaWFs
UmVhc29uOjpVc2VyR2VzdHVyZVJlcXVpcmVkOwogICAgIH0KQEAgLTI0OSwxMiArMjUwLDEyIEBA
IGJvb2wgTWVkaWFFbGVtZW50U2Vzc2lvbjo6YXV0b3BsYXlQZXJtaXR0ZWQoKSBjb25zdAogICAg
IHJldHVybiB0cnVlOwogfQogCi1ib29sIE1lZGlhRWxlbWVudFNlc3Npb246OmRhdGFMb2FkaW5n
UGVybWl0dGVkKGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQmIGVsZW1lbnQpIGNvbnN0Citib29sIE1l
ZGlhRWxlbWVudFNlc3Npb246OmRhdGFMb2FkaW5nUGVybWl0dGVkKCkgY29uc3QKIHsKICAgICBp
ZiAobV9yZXN0cmljdGlvbnMgJiBPdmVycmlkZVVzZXJHZXN0dXJlUmVxdWlyZW1lbnRGb3JNYWlu
Q29udGVudCAmJiB1cGRhdGVJc01haW5Db250ZW50KCkpCiAgICAgICAgIHJldHVybiB0cnVlOwog
Ci0gICAgaWYgKG1fcmVzdHJpY3Rpb25zICYgUmVxdWlyZVVzZXJHZXN0dXJlRm9yTG9hZCAmJiAh
ZWxlbWVudC5kb2N1bWVudCgpLnByb2Nlc3NpbmdVc2VyR2VzdHVyZUZvck1lZGlhKCkpIHsKKyAg
ICBpZiAobV9yZXN0cmljdGlvbnMgJiBSZXF1aXJlVXNlckdlc3R1cmVGb3JMb2FkICYmICFtX2Vs
ZW1lbnQuZG9jdW1lbnQoKS5wcm9jZXNzaW5nVXNlckdlc3R1cmVGb3JNZWRpYSgpKSB7CiAgICAg
ICAgIExPRyhNZWRpYSwgIk1lZGlhRWxlbWVudFNlc3Npb246OmRhdGFMb2FkaW5nUGVybWl0dGVk
IC0gcmV0dXJuaW5nIEZBTFNFIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBAIC0y
NjIsOSArMjYzLDkgQEAgYm9vbCBNZWRpYUVsZW1lbnRTZXNzaW9uOjpkYXRhTG9hZGluZ1Blcm1p
dHRlZChjb25zdCBIVE1MTWVkaWFFbGVtZW50JiBlbGVtZW50KQogICAgIHJldHVybiB0cnVlOwog
fQogCi1ib29sIE1lZGlhRWxlbWVudFNlc3Npb246OmZ1bGxzY3JlZW5QZXJtaXR0ZWQoY29uc3Qg
SFRNTE1lZGlhRWxlbWVudCYgZWxlbWVudCkgY29uc3QKK2Jvb2wgTWVkaWFFbGVtZW50U2Vzc2lv
bjo6ZnVsbHNjcmVlblBlcm1pdHRlZCgpIGNvbnN0CiB7Ci0gICAgaWYgKG1fcmVzdHJpY3Rpb25z
ICYgUmVxdWlyZVVzZXJHZXN0dXJlRm9yRnVsbHNjcmVlbiAmJiAhZWxlbWVudC5kb2N1bWVudCgp
LnByb2Nlc3NpbmdVc2VyR2VzdHVyZUZvck1lZGlhKCkpIHsKKyAgICBpZiAobV9yZXN0cmljdGlv
bnMgJiBSZXF1aXJlVXNlckdlc3R1cmVGb3JGdWxsc2NyZWVuICYmICFtX2VsZW1lbnQuZG9jdW1l
bnQoKS5wcm9jZXNzaW5nVXNlckdlc3R1cmVGb3JNZWRpYSgpKSB7CiAgICAgICAgIExPRyhNZWRp
YSwgIk1lZGlhRWxlbWVudFNlc3Npb246OmZ1bGxzY3JlZW5QZXJtaXR0ZWQgLSByZXR1cm5pbmcg
RkFMU0UiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KQEAgLTI3Miw5ICsyNzMsOSBA
QCBib29sIE1lZGlhRWxlbWVudFNlc3Npb246OmZ1bGxzY3JlZW5QZXJtaXR0ZWQoY29uc3QgSFRN
TE1lZGlhRWxlbWVudCYgZWxlbWVudCkgYwogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIE1l
ZGlhRWxlbWVudFNlc3Npb246OnBhZ2VBbGxvd3NEYXRhTG9hZGluZyhjb25zdCBIVE1MTWVkaWFF
bGVtZW50JiBlbGVtZW50KSBjb25zdAorYm9vbCBNZWRpYUVsZW1lbnRTZXNzaW9uOjpwYWdlQWxs
b3dzRGF0YUxvYWRpbmcoKSBjb25zdAogewotICAgIFBhZ2UqIHBhZ2UgPSBlbGVtZW50LmRvY3Vt
ZW50KCkucGFnZSgpOworICAgIFBhZ2UqIHBhZ2UgPSBtX2VsZW1lbnQuZG9jdW1lbnQoKS5wYWdl
KCk7CiAgICAgaWYgKG1fcmVzdHJpY3Rpb25zICYgUmVxdWlyZVBhZ2VDb25zZW50VG9Mb2FkTWVk
aWEgJiYgcGFnZSAmJiAhcGFnZS0+Y2FuU3RhcnRNZWRpYSgpKSB7CiAgICAgICAgIExPRyhNZWRp
YSwgIk1lZGlhRWxlbWVudFNlc3Npb246OnBhZ2VBbGxvd3NEYXRhTG9hZGluZyAtIHJldHVybmlu
ZyBGQUxTRSIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yODMsOSArMjg0LDkgQEAgYm9v
bCBNZWRpYUVsZW1lbnRTZXNzaW9uOjpwYWdlQWxsb3dzRGF0YUxvYWRpbmcoY29uc3QgSFRNTE1l
ZGlhRWxlbWVudCYgZWxlbWVudCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBNZWRpYUVs
ZW1lbnRTZXNzaW9uOjpwYWdlQWxsb3dzUGxheWJhY2tBZnRlclJlc3VtaW5nKGNvbnN0IEhUTUxN
ZWRpYUVsZW1lbnQmIGVsZW1lbnQpIGNvbnN0Citib29sIE1lZGlhRWxlbWVudFNlc3Npb246OnBh
Z2VBbGxvd3NQbGF5YmFja0FmdGVyUmVzdW1pbmcoKSBjb25zdAogewotICAgIFBhZ2UqIHBhZ2Ug
PSBlbGVtZW50LmRvY3VtZW50KCkucGFnZSgpOworICAgIFBhZ2UqIHBhZ2UgPSBtX2VsZW1lbnQu
ZG9jdW1lbnQoKS5wYWdlKCk7CiAgICAgaWYgKG1fcmVzdHJpY3Rpb25zICYgUmVxdWlyZVBhZ2VD
b25zZW50VG9SZXN1bWVNZWRpYSAmJiBwYWdlICYmICFwYWdlLT5jYW5TdGFydE1lZGlhKCkpIHsK
ICAgICAgICAgTE9HKE1lZGlhLCAiTWVkaWFFbGVtZW50U2Vzc2lvbjo6cGFnZUFsbG93c1BsYXli
YWNrQWZ0ZXJSZXN1bWluZyAtIHJldHVybmluZyBGQUxTRSIpOwogICAgICAgICByZXR1cm4gZmFs
c2U7CkBAIC0zNDEsNyArMzQyLDcgQEAgYm9vbCBNZWRpYUVsZW1lbnRTZXNzaW9uOjpjYW5TaG93
Q29udHJvbHNNYW5hZ2VyKFBsYXliYWNrQ29udHJvbHNQdXJwb3NlIHB1cnBvc2UKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGlmICghcGxheWJhY2tQZXJtaXR0ZWQobV9lbGVt
ZW50KSkgeworICAgIGlmICghcGxheWJhY2tQZXJtaXR0ZWQoKSkgewogICAgICAgICBMT0coTWVk
aWEsICJNZWRpYUVsZW1lbnRTZXNzaW9uOjpjYW5TaG93Q29udHJvbHNNYW5hZ2VyIC0gcmV0dXJu
aW5nIEZBTFNFOiBQbGF5YmFjayBub3QgcGVybWl0dGVkIik7CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CkBAIC00MTEsMzEgKzQxMiwzMiBAQCBib29sIE1lZGlhRWxlbWVudFNlc3Npb246
OndhbnRzVG9PYnNlcnZlVmlld3BvcnRWaXNpYmlsaXR5Rm9yQXV0b3BsYXkoKSBjb25zdAogfQog
CiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKLXZvaWQgTWVkaWFFbGVtZW50
U2Vzc2lvbjo6c2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQm
IGVsZW1lbnQpCit2b2lkIE1lZGlhRWxlbWVudFNlc3Npb246OnNob3dQbGF5YmFja1RhcmdldFBp
Y2tlcigpCiB7CiAgICAgTE9HKE1lZGlhLCAiTWVkaWFFbGVtZW50U2Vzc2lvbjo6c2hvd1BsYXli
YWNrVGFyZ2V0UGlja2VyIik7CiAKLSAgICBpZiAobV9yZXN0cmljdGlvbnMgJiBSZXF1aXJlVXNl
ckdlc3R1cmVUb1Nob3dQbGF5YmFja1RhcmdldFBpY2tlciAmJiAhZWxlbWVudC5kb2N1bWVudCgp
LnByb2Nlc3NpbmdVc2VyR2VzdHVyZUZvck1lZGlhKCkpIHsKKyAgICBhdXRvJiBkb2N1bWVudCA9
IG1fZWxlbWVudC5kb2N1bWVudCgpOworICAgIGlmIChtX3Jlc3RyaWN0aW9ucyAmIFJlcXVpcmVV
c2VyR2VzdHVyZVRvU2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyICYmICFkb2N1bWVudC5wcm9jZXNz
aW5nVXNlckdlc3R1cmVGb3JNZWRpYSgpKSB7CiAgICAgICAgIExPRyhNZWRpYSwgIk1lZGlhRWxl
bWVudFNlc3Npb246OnNob3dQbGF5YmFja1RhcmdldFBpY2tlciAtIHJldHVybmluZyBlYXJseSBi
ZWNhdXNlIG9mIHBlcm1pc3Npb25zIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBp
ZiAoIWVsZW1lbnQuZG9jdW1lbnQoKS5wYWdlKCkpIHsKKyAgICBpZiAoIWRvY3VtZW50LnBhZ2Uo
KSkgewogICAgICAgICBMT0coTWVkaWEsICJNZWRpYUVsZW1lbnRTZXNzaW9uOjpzaG93aW5nUGxh
eWJhY2tUYXJnZXRQaWNrZXJQZXJtaXR0ZWQgLSByZXR1cm5pbmcgZWFybHkgYmVjYXVzZSBwYWdl
IGlzIE5VTEwiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogI2lmICFQTEFURk9STShJT1Mp
Ci0gICAgaWYgKGVsZW1lbnQucmVhZHlTdGF0ZSgpIDwgSFRNTE1lZGlhRWxlbWVudEVudW1zOjpI
QVZFX01FVEFEQVRBKSB7CisgICAgaWYgKG1fZWxlbWVudC5yZWFkeVN0YXRlKCkgPCBIVE1MTWVk
aWFFbGVtZW50RW51bXM6OkhBVkVfTUVUQURBVEEpIHsKICAgICAgICAgTE9HKE1lZGlhLCAiTWVk
aWFFbGVtZW50U2Vzc2lvbjo6c2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyIC0gcmV0dXJuaW5nIGVh
cmx5IGJlY2F1c2UgZWxlbWVudCBpcyBub3QgcGxheWFibGUiKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KICNlbmRpZgogCi0gICAgZWxlbWVudC5kb2N1bWVudCgpLnNob3dQbGF5YmFja1Rhcmdl
dFBpY2tlcigqdGhpcywgaXM8SFRNTFZpZGVvRWxlbWVudD4oZWxlbWVudCkpOworICAgIGRvY3Vt
ZW50LnNob3dQbGF5YmFja1RhcmdldFBpY2tlcigqdGhpcywgaXM8SFRNTFZpZGVvRWxlbWVudD4o
bV9lbGVtZW50KSk7CiB9CiAKLWJvb2wgTWVkaWFFbGVtZW50U2Vzc2lvbjo6aGFzV2lyZWxlc3NQ
bGF5YmFja1RhcmdldHMoY29uc3QgSFRNTE1lZGlhRWxlbWVudCYpIGNvbnN0Citib29sIE1lZGlh
RWxlbWVudFNlc3Npb246Omhhc1dpcmVsZXNzUGxheWJhY2tUYXJnZXRzKCkgY29uc3QKIHsKICNp
ZiBQTEFURk9STShJT1MpCiAgICAgLy8gRklYTUU6IGNvbnNvbGlkYXRlIE1hYyBhbmQgaU9TIGlt
cGxlbWVudGF0aW9ucwpAQCAtNDQ3LDIwICs0NDksMjAgQEAgYm9vbCBNZWRpYUVsZW1lbnRTZXNz
aW9uOjpoYXNXaXJlbGVzc1BsYXliYWNrVGFyZ2V0cyhjb25zdCBIVE1MTWVkaWFFbGVtZW50Jikg
Y28KICAgICByZXR1cm4gbV9oYXNQbGF5YmFja1RhcmdldHM7CiB9CiAKLWJvb2wgTWVkaWFFbGVt
ZW50U2Vzc2lvbjo6d2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoY29uc3QgSFRNTE1lZGlh
RWxlbWVudCYgZWxlbWVudCkgY29uc3QKK2Jvb2wgTWVkaWFFbGVtZW50U2Vzc2lvbjo6d2lyZWxl
c3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoKSBjb25zdAogewotICAgIGlmICghZWxlbWVudC5kb2N1
bWVudCgpLnNldHRpbmdzKCkuYWxsb3dzQWlyUGxheUZvck1lZGlhUGxheWJhY2soKSkgeworICAg
IGlmICghbV9lbGVtZW50LmRvY3VtZW50KCkuc2V0dGluZ3MoKS5hbGxvd3NBaXJQbGF5Rm9yTWVk
aWFQbGF5YmFjaygpKSB7CiAgICAgICAgIExPRyhNZWRpYSwgIk1lZGlhRWxlbWVudFNlc3Npb246
OndpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkIC0gcmV0dXJuaW5nIFRSVUUgYmVjYXVzZSBv
ZiBzZXR0aW5ncyIpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBpZiAoZWxl
bWVudC5oYXNBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6d2Via2l0
d2lyZWxlc3N2aWRlb3BsYXliYWNrZGlzYWJsZWRBdHRyKSkgeworICAgIGlmIChtX2VsZW1lbnQu
aGFzQXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OndlYmtpdHdpcmVs
ZXNzdmlkZW9wbGF5YmFja2Rpc2FibGVkQXR0cikpIHsKICAgICAgICAgTE9HKE1lZGlhLCAiTWVk
aWFFbGVtZW50U2Vzc2lvbjo6d2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQgLSByZXR1cm5p
bmcgVFJVRSBiZWNhdXNlIG9mIGF0dHJpYnV0ZSIpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICB9CiAKICNpZiBQTEFURk9STShJT1MpCi0gICAgYXV0byYgbGVnYWN5QWlycGxheUF0dHJpYnV0
ZVZhbHVlID0gZWxlbWVudC5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1l
czo6d2Via2l0YWlycGxheUF0dHIpOworICAgIGF1dG8mIGxlZ2FjeUFpcnBsYXlBdHRyaWJ1dGVW
YWx1ZSA9IG1fZWxlbWVudC5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1l
czo6d2Via2l0YWlycGxheUF0dHIpOwogICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJ
Q2FzZShsZWdhY3lBaXJwbGF5QXR0cmlidXRlVmFsdWUsICJkZW55IikpIHsKICAgICAgICAgTE9H
KE1lZGlhLCAiTWVkaWFFbGVtZW50U2Vzc2lvbjo6d2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJs
ZWQgLSByZXR1cm5pbmcgVFJVRSBiZWNhdXNlIG9mIGxlZ2FjeSBhdHRyaWJ1dGUiKTsKICAgICAg
ICAgcmV0dXJuIHRydWU7CkBAIC00NzEsNyArNDczLDcgQEAgYm9vbCBNZWRpYUVsZW1lbnRTZXNz
aW9uOjp3aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZChjb25zdCBIVE1MTWVkaWFFbGVtZW50
JgogICAgIH0KICNlbmRpZgogCi0gICAgYXV0byBwbGF5ZXIgPSBlbGVtZW50LnBsYXllcigpOwor
ICAgIGF1dG8gcGxheWVyID0gbV9lbGVtZW50LnBsYXllcigpOwogICAgIGlmICghcGxheWVyKQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKIApAQCAtNDgxLDE0ICs0ODMsMTQgQEAgYm9vbCBNZWRpYUVs
ZW1lbnRTZXNzaW9uOjp3aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZChjb25zdCBIVE1MTWVk
aWFFbGVtZW50JgogICAgIHJldHVybiBkaXNhYmxlZDsKIH0KIAotdm9pZCBNZWRpYUVsZW1lbnRT
ZXNzaW9uOjpzZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZChjb25zdCBIVE1MTWVkaWFF
bGVtZW50JiBlbGVtZW50LCBib29sIGRpc2FibGVkKQordm9pZCBNZWRpYUVsZW1lbnRTZXNzaW9u
OjpzZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZChib29sIGRpc2FibGVkKQogewogICAg
IGlmIChkaXNhYmxlZCkKICAgICAgICAgYWRkQmVoYXZpb3JSZXN0cmljdGlvbihXaXJlbGVzc1Zp
ZGVvUGxheWJhY2tEaXNhYmxlZCk7CiAgICAgZWxzZQogICAgICAgICByZW1vdmVCZWhhdmlvclJl
c3RyaWN0aW9uKFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKTsKIAotICAgIGF1dG8gcGxh
eWVyID0gZWxlbWVudC5wbGF5ZXIoKTsKKyAgICBhdXRvIHBsYXllciA9IG1fZWxlbWVudC5wbGF5
ZXIoKTsKICAgICBpZiAoIXBsYXllcikKICAgICAgICAgcmV0dXJuOwogCkBAIC00OTYsMTcgKzQ5
OCwxNiBAQCB2b2lkIE1lZGlhRWxlbWVudFNlc3Npb246OnNldFdpcmVsZXNzVmlkZW9QbGF5YmFj
a0Rpc2FibGVkKGNvbnN0IEhUTUxNZWRpYUVsZW1lbgogICAgIHBsYXllci0+c2V0V2lyZWxlc3NW
aWRlb1BsYXliYWNrRGlzYWJsZWQoZGlzYWJsZWQpOwogfQogCi12b2lkIE1lZGlhRWxlbWVudFNl
c3Npb246OnNldEhhc1BsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5TGlzdGVuZXJzKGNvbnN0IEhU
TUxNZWRpYUVsZW1lbnQmIGVsZW1lbnQsIGJvb2wgaGFzTGlzdGVuZXJzKQordm9pZCBNZWRpYUVs
ZW1lbnRTZXNzaW9uOjpzZXRIYXNQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUxpc3RlbmVycyhi
b29sIGhhc0xpc3RlbmVycykKIHsKICAgICBMT0coTWVkaWEsICJNZWRpYUVsZW1lbnRTZXNzaW9u
OjpzZXRIYXNQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUxpc3RlbmVycyAtIGhhc0xpc3RlbmVy
cyAlcyIsIGhhc0xpc3RlbmVycyA/ICJUUlVFIiA6ICJGQUxTRSIpOwogCiAjaWYgUExBVEZPUk0o
SU9TKQotICAgIFVOVVNFRF9QQVJBTShlbGVtZW50KTsKICAgICBtX2hhc1BsYXliYWNrVGFyZ2V0
QXZhaWxhYmlsaXR5TGlzdGVuZXJzID0gaGFzTGlzdGVuZXJzOwogICAgIFBsYXRmb3JtTWVkaWFT
ZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLmNvbmZpZ3VyZVdpcmVMZXNzVGFyZ2V0TW9u
aXRvcmluZygpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oaGFzTGlzdGVuZXJzKTsKLSAgICBl
bGVtZW50LmRvY3VtZW50KCkucGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnRTdGF0ZURpZENoYW5n
ZSgqdGhpcywgZWxlbWVudC5tZWRpYVN0YXRlKCkpOworICAgIG1fZWxlbWVudC5kb2N1bWVudCgp
LnBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50U3RhdGVEaWRDaGFuZ2UoKnRoaXMsIG1fZWxlbWVu
dC5tZWRpYVN0YXRlKCkpOwogI2VuZGlmCiB9CiAKQEAgLTU1OSwxNyArNTYwLDE3IEBAIHZvaWQg
TWVkaWFFbGVtZW50U2Vzc2lvbjo6c2V0U2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQoYm9vbCBz
aG91bGRQbGF5KQogICAgIGNsaWVudCgpLnNldFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KHNo
b3VsZFBsYXkpOwogfQogCi12b2lkIE1lZGlhRWxlbWVudFNlc3Npb246Om1lZGlhU3RhdGVEaWRD
aGFuZ2UoY29uc3QgSFRNTE1lZGlhRWxlbWVudCYgZWxlbWVudCwgTWVkaWFQcm9kdWNlcjo6TWVk
aWFTdGF0ZUZsYWdzIHN0YXRlKQordm9pZCBNZWRpYUVsZW1lbnRTZXNzaW9uOjptZWRpYVN0YXRl
RGlkQ2hhbmdlKE1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGVGbGFncyBzdGF0ZSkKIHsKLSAgICBl
bGVtZW50LmRvY3VtZW50KCkucGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnRTdGF0ZURpZENoYW5n
ZSgqdGhpcywgc3RhdGUpOworICAgIG1fZWxlbWVudC5kb2N1bWVudCgpLnBsYXliYWNrVGFyZ2V0
UGlja2VyQ2xpZW50U3RhdGVEaWRDaGFuZ2UoKnRoaXMsIHN0YXRlKTsKIH0KICNlbmRpZgogCi1N
ZWRpYVBsYXllcjo6UHJlbG9hZCBNZWRpYUVsZW1lbnRTZXNzaW9uOjplZmZlY3RpdmVQcmVsb2Fk
Rm9yRWxlbWVudChjb25zdCBIVE1MTWVkaWFFbGVtZW50JiBlbGVtZW50KSBjb25zdAorTWVkaWFQ
bGF5ZXI6OlByZWxvYWQgTWVkaWFFbGVtZW50U2Vzc2lvbjo6ZWZmZWN0aXZlUHJlbG9hZEZvckVs
ZW1lbnQoKSBjb25zdAogewotICAgIE1lZGlhUGxheWVyOjpQcmVsb2FkIHByZWxvYWQgPSBlbGVt
ZW50LnByZWxvYWRWYWx1ZSgpOworICAgIE1lZGlhUGxheWVyOjpQcmVsb2FkIHByZWxvYWQgPSBt
X2VsZW1lbnQucHJlbG9hZFZhbHVlKCk7CiAKLSAgICBpZiAocGFnZUV4cGxpY2l0bHlBbGxvd3NF
bGVtZW50VG9BdXRvcGxheUlubGluZShlbGVtZW50KSkKKyAgICBpZiAocGFnZUV4cGxpY2l0bHlB
bGxvd3NFbGVtZW50VG9BdXRvcGxheUlubGluZShtX2VsZW1lbnQpKQogICAgICAgICByZXR1cm4g
cHJlbG9hZDsKIAogICAgIGlmIChtX3Jlc3RyaWN0aW9ucyAmIE1ldGFkYXRhUHJlbG9hZGluZ05v
dFBlcm1pdHRlZCkKQEAgLTU4Myw2NyArNTg0LDY1IEBAIE1lZGlhUGxheWVyOjpQcmVsb2FkIE1l
ZGlhRWxlbWVudFNlc3Npb246OmVmZmVjdGl2ZVByZWxvYWRGb3JFbGVtZW50KGNvbnN0IEhUTUxN
CiAgICAgcmV0dXJuIHByZWxvYWQ7CiB9CiAKLWJvb2wgTWVkaWFFbGVtZW50U2Vzc2lvbjo6cmVx
dWlyZXNGdWxsc2NyZWVuRm9yVmlkZW9QbGF5YmFjayhjb25zdCBIVE1MTWVkaWFFbGVtZW50JiBl
bGVtZW50KSBjb25zdAorYm9vbCBNZWRpYUVsZW1lbnRTZXNzaW9uOjpyZXF1aXJlc0Z1bGxzY3Jl
ZW5Gb3JWaWRlb1BsYXliYWNrKCkgY29uc3QKIHsKLSAgICBpZiAocGFnZUV4cGxpY2l0bHlBbGxv
d3NFbGVtZW50VG9BdXRvcGxheUlubGluZShlbGVtZW50KSkKKyAgICBpZiAocGFnZUV4cGxpY2l0
bHlBbGxvd3NFbGVtZW50VG9BdXRvcGxheUlubGluZShtX2VsZW1lbnQpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICBpZiAoaXM8SFRNTEF1ZGlvRWxlbWVudD4oZWxlbWVudCkpCisgICAg
aWYgKGlzPEhUTUxBdWRpb0VsZW1lbnQ+KG1fZWxlbWVudCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotICAgIGlmIChlbGVtZW50LmRvY3VtZW50KCkuaXNNZWRpYURvY3VtZW50KCkpIHsKLSAg
ICAgICAgQVNTRVJUKGlzPEhUTUxWaWRlb0VsZW1lbnQ+KGVsZW1lbnQpKTsKLSAgICAgICAgY29u
c3QgSFRNTFZpZGVvRWxlbWVudCYgdmlkZW9FbGVtZW50ID0gKmRvd25jYXN0PGNvbnN0IEhUTUxW
aWRlb0VsZW1lbnQ+KCZlbGVtZW50KTsKLSAgICAgICAgaWYgKGVsZW1lbnQucmVhZHlTdGF0ZSgp
IDwgSFRNTFZpZGVvRWxlbWVudDo6SEFWRV9NRVRBREFUQSB8fCAhdmlkZW9FbGVtZW50Lmhhc0V2
ZXJIYWRWaWRlbygpKQorICAgIGlmIChtX2VsZW1lbnQuZG9jdW1lbnQoKS5pc01lZGlhRG9jdW1l
bnQoKSkgeworICAgICAgICBBU1NFUlQoaXM8SFRNTFZpZGVvRWxlbWVudD4obV9lbGVtZW50KSk7
CisgICAgICAgIGNvbnN0IEhUTUxWaWRlb0VsZW1lbnQmIHZpZGVvRWxlbWVudCA9ICpkb3duY2Fz
dDxjb25zdCBIVE1MVmlkZW9FbGVtZW50PigmbV9lbGVtZW50KTsKKyAgICAgICAgaWYgKG1fZWxl
bWVudC5yZWFkeVN0YXRlKCkgPCBIVE1MVmlkZW9FbGVtZW50OjpIQVZFX01FVEFEQVRBIHx8ICF2
aWRlb0VsZW1lbnQuaGFzRXZlckhhZFZpZGVvKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQogCi0gICAgaWYgKGVsZW1lbnQuaXNUZW1wb3JhcmlseUFsbG93aW5nSW5saW5lUGxh
eWJhY2tBZnRlckZ1bGxzY3JlZW4oKSkKKyAgICBpZiAobV9lbGVtZW50LmlzVGVtcG9yYXJpbHlB
bGxvd2luZ0lubGluZVBsYXliYWNrQWZ0ZXJGdWxsc2NyZWVuKCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAotICAgIGlmICghZWxlbWVudC5kb2N1bWVudCgpLnNldHRpbmdzKCkuYWxsb3dzSW5s
aW5lTWVkaWFQbGF5YmFjaygpKQorICAgIGlmICghbV9lbGVtZW50LmRvY3VtZW50KCkuc2V0dGlu
Z3MoKS5hbGxvd3NJbmxpbmVNZWRpYVBsYXliYWNrKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwog
Ci0gICAgaWYgKCFlbGVtZW50LmRvY3VtZW50KCkuc2V0dGluZ3MoKS5pbmxpbmVNZWRpYVBsYXli
YWNrUmVxdWlyZXNQbGF5c0lubGluZUF0dHJpYnV0ZSgpKQorICAgIGlmICghbV9lbGVtZW50LmRv
Y3VtZW50KCkuc2V0dGluZ3MoKS5pbmxpbmVNZWRpYVBsYXliYWNrUmVxdWlyZXNQbGF5c0lubGlu
ZUF0dHJpYnV0ZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICNpZiBQTEFURk9STShJT1Mp
CiAgICAgaWYgKElPU0FwcGxpY2F0aW9uOjppc0lCb29rcygpKQotICAgICAgICByZXR1cm4gIWVs
ZW1lbnQuaGFzQXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OndlYmtp
dF9wbGF5c2lubGluZUF0dHIpICYmICFlbGVtZW50Lmhhc0F0dHJpYnV0ZVdpdGhvdXRTeW5jaHJv
bml6YXRpb24oSFRNTE5hbWVzOjpwbGF5c2lubGluZUF0dHIpOworICAgICAgICByZXR1cm4gIW1f
ZWxlbWVudC5oYXNBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6d2Vi
a2l0X3BsYXlzaW5saW5lQXR0cikgJiYgIW1fZWxlbWVudC5oYXNBdHRyaWJ1dGVXaXRob3V0U3lu
Y2hyb25pemF0aW9uKEhUTUxOYW1lczo6cGxheXNpbmxpbmVBdHRyKTsKICAgICBpZiAoZHlsZF9n
ZXRfcHJvZ3JhbV9zZGtfdmVyc2lvbigpIDwgRFlMRF9JT1NfVkVSU0lPTl8xMF8wKQotICAgICAg
ICByZXR1cm4gIWVsZW1lbnQuaGFzQXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1M
TmFtZXM6OndlYmtpdF9wbGF5c2lubGluZUF0dHIpOworICAgICAgICByZXR1cm4gIW1fZWxlbWVu
dC5oYXNBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6d2Via2l0X3Bs
YXlzaW5saW5lQXR0cik7CiAjZW5kaWYKIAotICAgIGlmIChlbGVtZW50LmRvY3VtZW50KCkuaXNN
ZWRpYURvY3VtZW50KCkgJiYgZWxlbWVudC5kb2N1bWVudCgpLm93bmVyRWxlbWVudCgpKQorICAg
IGlmIChtX2VsZW1lbnQuZG9jdW1lbnQoKS5pc01lZGlhRG9jdW1lbnQoKSAmJiBtX2VsZW1lbnQu
ZG9jdW1lbnQoKS5vd25lckVsZW1lbnQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
cmV0dXJuICFlbGVtZW50Lmhhc0F0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5h
bWVzOjpwbGF5c2lubGluZUF0dHIpOworICAgIHJldHVybiAhbV9lbGVtZW50Lmhhc0F0dHJpYnV0
ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpwbGF5c2lubGluZUF0dHIpOwogfQog
Ci1ib29sIE1lZGlhRWxlbWVudFNlc3Npb246OmFsbG93c0F1dG9tYXRpY01lZGlhRGF0YUxvYWRp
bmcoY29uc3QgSFRNTE1lZGlhRWxlbWVudCYgZWxlbWVudCkgY29uc3QKK2Jvb2wgTWVkaWFFbGVt
ZW50U2Vzc2lvbjo6YWxsb3dzQXV0b21hdGljTWVkaWFEYXRhTG9hZGluZygpIGNvbnN0CiB7Ci0g
ICAgaWYgKHBhZ2VFeHBsaWNpdGx5QWxsb3dzRWxlbWVudFRvQXV0b3BsYXlJbmxpbmUoZWxlbWVu
dCkpCisgICAgaWYgKHBhZ2VFeHBsaWNpdGx5QWxsb3dzRWxlbWVudFRvQXV0b3BsYXlJbmxpbmUo
bV9lbGVtZW50KSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBpZiAoZWxlbWVudC5kb2N1
bWVudCgpLnNldHRpbmdzKCkubWVkaWFEYXRhTG9hZHNBdXRvbWF0aWNhbGx5KCkpCisgICAgaWYg
KG1fZWxlbWVudC5kb2N1bWVudCgpLnNldHRpbmdzKCkubWVkaWFEYXRhTG9hZHNBdXRvbWF0aWNh
bGx5KCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12
b2lkIE1lZGlhRWxlbWVudFNlc3Npb246Om1lZGlhRW5naW5lVXBkYXRlZChjb25zdCBIVE1MTWVk
aWFFbGVtZW50JiBlbGVtZW50KQordm9pZCBNZWRpYUVsZW1lbnRTZXNzaW9uOjptZWRpYUVuZ2lu
ZVVwZGF0ZWQoKQogewogICAgIExPRyhNZWRpYSwgIk1lZGlhRWxlbWVudFNlc3Npb246Om1lZGlh
RW5naW5lVXBkYXRlZCIpOwogCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkK
ICAgICBpZiAobV9yZXN0cmljdGlvbnMgJiBXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCkK
LSAgICAgICAgc2V0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoZWxlbWVudCwgdHJ1ZSk7
CisgICAgICAgIHNldFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKHRydWUpOwogICAgIGlm
IChtX3BsYXliYWNrVGFyZ2V0KQogICAgICAgICBjbGllbnQoKS5zZXRXaXJlbGVzc1BsYXliYWNr
VGFyZ2V0KCptX3BsYXliYWNrVGFyZ2V0LmNvcHlSZWYoKSk7CiAgICAgaWYgKG1fc2hvdWxkUGxh
eVRvUGxheWJhY2tUYXJnZXQpCiAgICAgICAgIGNsaWVudCgpLnNldFNob3VsZFBsYXlUb1BsYXli
YWNrVGFyZ2V0KHRydWUpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oZWxlbWVudCk7CiAjZW5k
aWYKICAgICAKIH0KQEAgLTY1NCw5ICs2NTMsOSBAQCB2b2lkIE1lZGlhRWxlbWVudFNlc3Npb246
OnJlc2V0UGxheWJhY2tTZXNzaW9uU3RhdGUoKQogICAgIGFkZEJlaGF2aW9yUmVzdHJpY3Rpb24o
UmVxdWlyZVVzZXJHZXN0dXJlVG9Db250cm9sQ29udHJvbHNNYW5hZ2VyIHwgUmVxdWlyZVBsYXli
YWNrVG9Db250cm9sQ29udHJvbHNNYW5hZ2VyKTsKIH0KIAotYm9vbCBNZWRpYUVsZW1lbnRTZXNz
aW9uOjphbGxvd3NQaWN0dXJlSW5QaWN0dXJlKGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQmIGVsZW1l
bnQpIGNvbnN0Citib29sIE1lZGlhRWxlbWVudFNlc3Npb246OmFsbG93c1BpY3R1cmVJblBpY3R1
cmUoKSBjb25zdAogewotICAgIHJldHVybiBlbGVtZW50LmRvY3VtZW50KCkuc2V0dGluZ3MoKS5h
bGxvd3NQaWN0dXJlSW5QaWN0dXJlTWVkaWFQbGF5YmFjaygpICYmICFlbGVtZW50LndlYmtpdEN1
cnJlbnRQbGF5YmFja1RhcmdldElzV2lyZWxlc3MoKTsKKyAgICByZXR1cm4gbV9lbGVtZW50LmRv
Y3VtZW50KCkuc2V0dGluZ3MoKS5hbGxvd3NQaWN0dXJlSW5QaWN0dXJlTWVkaWFQbGF5YmFjaygp
ICYmICFtX2VsZW1lbnQud2Via2l0Q3VycmVudFBsYXliYWNrVGFyZ2V0SXNXaXJlbGVzcygpOwog
fQogCiAjaWYgUExBVEZPUk0oSU9TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9N
ZWRpYUVsZW1lbnRTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRWxlbWVudFNl
c3Npb24uaAppbmRleCA3YWRkNWJlNzZiMTNiMTM3MTc4NDM3OGExY2YxNzYyMjFjNjBjMTc3Li4z
MWFmNzYwNGI5NjRhYzliMzk3YTFkN2ZkNTlkZTQ4NTcyMmI3OThmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL01lZGlhRWxlbWVudFNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL01lZGlhRWxlbWVudFNlc3Npb24uaApAQCAtNjUsMzQgKzY1LDM0IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHJlZ2lzdGVyV2l0aERvY3VtZW50KERvY3VtZW50Jik7CiAgICAgdm9pZCB1bnJl
Z2lzdGVyV2l0aERvY3VtZW50KERvY3VtZW50Jik7CiAKLSAgICBTdWNjZXNzT3I8TWVkaWFQbGF5
YmFja0RlbmlhbFJlYXNvbj4gcGxheWJhY2tQZXJtaXR0ZWQoY29uc3QgSFRNTE1lZGlhRWxlbWVu
dCYpIGNvbnN0OworICAgIFN1Y2Nlc3NPcjxNZWRpYVBsYXliYWNrRGVuaWFsUmVhc29uPiBwbGF5
YmFja1Blcm1pdHRlZCgpIGNvbnN0OwogICAgIGJvb2wgYXV0b3BsYXlQZXJtaXR0ZWQoKSBjb25z
dDsKLSAgICBib29sIGRhdGFMb2FkaW5nUGVybWl0dGVkKGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQm
KSBjb25zdDsKLSAgICBib29sIGZ1bGxzY3JlZW5QZXJtaXR0ZWQoY29uc3QgSFRNTE1lZGlhRWxl
bWVudCYpIGNvbnN0OwotICAgIGJvb2wgcGFnZUFsbG93c0RhdGFMb2FkaW5nKGNvbnN0IEhUTUxN
ZWRpYUVsZW1lbnQmKSBjb25zdDsKLSAgICBib29sIHBhZ2VBbGxvd3NQbGF5YmFja0FmdGVyUmVz
dW1pbmcoY29uc3QgSFRNTE1lZGlhRWxlbWVudCYpIGNvbnN0OworICAgIGJvb2wgZGF0YUxvYWRp
bmdQZXJtaXR0ZWQoKSBjb25zdDsKKyAgICBib29sIGZ1bGxzY3JlZW5QZXJtaXR0ZWQoKSBjb25z
dDsKKyAgICBib29sIHBhZ2VBbGxvd3NEYXRhTG9hZGluZygpIGNvbnN0OworICAgIGJvb2wgcGFn
ZUFsbG93c1BsYXliYWNrQWZ0ZXJSZXN1bWluZygpIGNvbnN0OwogCiAjaWYgRU5BQkxFKFdJUkVM
RVNTX1BMQVlCQUNLX1RBUkdFVCkKLSAgICB2b2lkIHNob3dQbGF5YmFja1RhcmdldFBpY2tlcihj
b25zdCBIVE1MTWVkaWFFbGVtZW50Jik7Ci0gICAgYm9vbCBoYXNXaXJlbGVzc1BsYXliYWNrVGFy
Z2V0cyhjb25zdCBIVE1MTWVkaWFFbGVtZW50JikgY29uc3Q7CisgICAgdm9pZCBzaG93UGxheWJh
Y2tUYXJnZXRQaWNrZXIoKTsKKyAgICBib29sIGhhc1dpcmVsZXNzUGxheWJhY2tUYXJnZXRzKCkg
Y29uc3Q7CiAKLSAgICBib29sIHdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKGNvbnN0IEhU
TUxNZWRpYUVsZW1lbnQmKSBjb25zdDsKLSAgICB2b2lkIHNldFdpcmVsZXNzVmlkZW9QbGF5YmFj
a0Rpc2FibGVkKGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQmLCBib29sKTsKKyAgICBib29sIHdpcmVs
ZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKCkgY29uc3Q7CisgICAgdm9pZCBzZXRXaXJlbGVzc1Zp
ZGVvUGxheWJhY2tEaXNhYmxlZChib29sKTsKIAotICAgIHZvaWQgc2V0SGFzUGxheWJhY2tUYXJn
ZXRBdmFpbGFiaWxpdHlMaXN0ZW5lcnMoY29uc3QgSFRNTE1lZGlhRWxlbWVudCYsIGJvb2wpOwor
ICAgIHZvaWQgc2V0SGFzUGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlMaXN0ZW5lcnMoYm9vbCk7
CiAKICAgICBib29sIGNhblBsYXlUb1dpcmVsZXNzUGxheWJhY2tUYXJnZXQoKSBjb25zdCBvdmVy
cmlkZTsKICAgICBib29sIGlzUGxheWluZ1RvV2lyZWxlc3NQbGF5YmFja1RhcmdldCgpIGNvbnN0
IG92ZXJyaWRlOwogCi0gICAgdm9pZCBtZWRpYVN0YXRlRGlkQ2hhbmdlKGNvbnN0IEhUTUxNZWRp
YUVsZW1lbnQmLCBNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlRmxhZ3MpOworICAgIHZvaWQgbWVk
aWFTdGF0ZURpZENoYW5nZShNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRlRmxhZ3MpOwogI2VuZGlm
CiAKLSAgICBib29sIHJlcXVpcmVzRnVsbHNjcmVlbkZvclZpZGVvUGxheWJhY2soY29uc3QgSFRN
TE1lZGlhRWxlbWVudCYpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgYWxsb3dzUGlj
dHVyZUluUGljdHVyZShjb25zdCBIVE1MTWVkaWFFbGVtZW50JikgY29uc3Q7Ci0gICAgTWVkaWFQ
bGF5ZXI6OlByZWxvYWQgZWZmZWN0aXZlUHJlbG9hZEZvckVsZW1lbnQoY29uc3QgSFRNTE1lZGlh
RWxlbWVudCYpIGNvbnN0OwotICAgIGJvb2wgYWxsb3dzQXV0b21hdGljTWVkaWFEYXRhTG9hZGlu
Zyhjb25zdCBIVE1MTWVkaWFFbGVtZW50JikgY29uc3Q7CisgICAgYm9vbCByZXF1aXJlc0Z1bGxz
Y3JlZW5Gb3JWaWRlb1BsYXliYWNrKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBh
bGxvd3NQaWN0dXJlSW5QaWN0dXJlKCkgY29uc3Q7CisgICAgTWVkaWFQbGF5ZXI6OlByZWxvYWQg
ZWZmZWN0aXZlUHJlbG9hZEZvckVsZW1lbnQoKSBjb25zdDsKKyAgICBib29sIGFsbG93c0F1dG9t
YXRpY01lZGlhRGF0YUxvYWRpbmcoKSBjb25zdDsKIAotICAgIHZvaWQgbWVkaWFFbmdpbmVVcGRh
dGVkKGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQmKTsKKyAgICB2b2lkIG1lZGlhRW5naW5lVXBkYXRl
ZCgpOwogCiAgICAgdm9pZCByZXNldFBsYXliYWNrU2Vzc2lvblN0YXRlKCkgb3ZlcnJpZGU7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BsYXliYWNrU2Vzc2lv
bk1vZGVsTWVkaWFFbGVtZW50Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGxh
eWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQubW0KaW5kZXggNDllZGRkODYxNmRhYzU5YWQy
MjQ4YzFjNmM3MWZmOTAyOGI3ZWUxZS4uYjg2MTBlZmExZTU5ZmMzZmViZGQyNzE4YTE2NjM5YmMz
ODEyNGIxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGxheWJh
Y2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY29jb2EvUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQubW0KQEAgLTUzMCw3ICs1
MzAsNyBAQCBTdHJpbmcgUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6OmV4dGVybmFs
UGxheWJhY2tMb2NhbGl6ZWREZXZpY2VOYW1lKCkgYwogCiBib29sIFBsYXliYWNrU2Vzc2lvbk1v
ZGVsTWVkaWFFbGVtZW50Ojp3aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCgpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIG1fbWVkaWFFbGVtZW50ICYmIG1fbWVkaWFFbGVtZW50LT5tZWRpYVNlc3Np
b24oKS53aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCgqbV9tZWRpYUVsZW1lbnQpOworICAg
IHJldHVybiBtX21lZGlhRWxlbWVudCAmJiBtX21lZGlhRWxlbWVudC0+bWVkaWFTZXNzaW9uKCku
d2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoKTsKIH0KIAogYm9vbCBQbGF5YmFja1Nlc3Np
b25Nb2RlbE1lZGlhRWxlbWVudDo6aXNNdXRlZCgpIGNvbnN0Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>