<?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>96547</bug_id>
          
          <creation_ts>2012-09-12 13:09:01 -0700</creation_ts>
          <short_desc>REGRESSION(r128318): Caused accessibility test failures on snow leopard (Requested by jamesr_ on #webkit).</short_desc>
          <delta_ts>2012-09-12 15:21:47 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>96565</dependson>
          <blocked>96323</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Review Bot">webkit.review.bot</reporter>
          <assigned_to name="WebKit Review Bot">webkit.review.bot</assigned_to>
          <cc>cfleizach</cc>
    
    <cc>dmazzoni</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>718643</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-12 13:09:01 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/128318 broke the build:
Caused accessibility test failures on snow leopard (Requested by jamesr_ on #webkit).

This is an automatic bug report generated by the sheriff-bot. If this bug
report was created because of a flaky test, please file a bug for the flaky
test (if we don&apos;t already have one on file) and dup this bug against that bug
so that we can track how often these flaky tests case pain.

&quot;Only you can prevent forest fires.&quot; -- Smokey the Bear</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718646</commentid>
    <comment_count>1</comment_count>
      <attachid>163677</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-12 13:09:34 -0700</bug_when>
    <thetext>Created attachment 163677
ROLLOUT of r128318

Any committer can land this patch automatically by marking it commit-queue+.  The commit-queue will build and test the patch before landing to ensure that the rollout will be successful.  This process takes approximately 15 minutes.

If you would like to land the rollout faster, you can use the following command:

  webkit-patch land-attachment ATTACHMENT_ID

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718653</commentid>
    <comment_count>2</comment_count>
      <attachid>163677</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-12 13:13:27 -0700</bug_when>
    <thetext>Comment on attachment 163677
ROLLOUT of r128318

Clearing flags on attachment: 163677

Committed r128353: &lt;http://trac.webkit.org/changeset/128353&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718654</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-12 13:13:29 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718773</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-12 15:03:09 -0700</bug_when>
    <thetext>Re-opened since this is blocked by 96565</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163677</attachid>
            <date>2012-09-12 13:09:34 -0700</date>
            <delta_ts>2012-09-12 13:13:27 -0700</delta_ts>
            <desc>ROLLOUT of r128318</desc>
            <filename>bug-96547-20120912201557.patch</filename>
            <type>text/plain</type>
            <size>103063</size>
            <attacher name="WebKit Review Bot">webkit.review.bot</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI4MzUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTJjZWJjMzEzMDczMDVi
ZTkzOGIxNDMwYmMwNjI2OThlZDA4NmU0Ni4uMTdiOWI5YmU4ZWU4NzRhMTQ4ZWIzMzJmZDkyNzAy
MDJmZjYxOTkzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkxIEBACisyMDEyLTA5LTEyICBTaGVy
aWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KKworICAgICAgICBVbnJldmll
d2VkLCByb2xsaW5nIG91dCByMTI4MzE4IGFuZCByMTI4MzMyLgorICAgICAgICBodHRwOi8vdHJh
Yy53ZWJraXQub3JnL2NoYW5nZXNldC8xMjgzMTgKKyAgICAgICAgaHR0cDovL3RyYWMud2Via2l0
Lm9yZy9jaGFuZ2VzZXQvMTI4MzMyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD05NjU0NworCisgICAgICAgIENhdXNlZCBhY2Nlc3NpYmlsaXR5IHRlc3Qg
ZmFpbHVyZXMgb24gc25vdyBsZW9wYXJkIChSZXF1ZXN0ZWQKKyAgICAgICAgYnkgamFtZXNyXyBv
biAjd2Via2l0KS4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVP
YmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmRl
dGVybWluZUFjY2Vzc2liaWxpdHlSb2xlKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlOb2RlT2JqZWN0OjphY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKToKKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjpjYW5TZXRGb2N1c0F0dHJpYnV0ZSk6CisgICAgICAg
ICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5oOgorICAgICAgICAoQWNj
ZXNzaWJpbGl0eU5vZGVPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU5v
ZGVPYmplY3Q6Om5vZGUpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmlzV2ViQXJlYSk6CisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc0ltYWdlQnV0dG9uKToKKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmlzQW5jaG9yKToKKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmlzTmF0aXZlVGV4dENvbnRyb2wpOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aXNTZWFyY2hGaWVsZCk6
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc05hdGl2ZUlt
YWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmlzSW1h
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aXNQYXNz
d29yZEZpZWxkKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6
OmlzSW5wdXRJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0Ojppc1Byb2dyZXNzSW5kaWNhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3Q6OmlzU2xpZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3Q6OmlzTWVudVJlbGF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdDo6aXNNZW51KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3Q6OmlzTWVudUJhcik6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0Ojppc01lbnVCdXR0b24pOgorICAgICAgICAoV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aXNNZW51SXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc1ByZXNzZWQpOgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aXNJbmRldGVybWluYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmlzTmF0aXZlQ2hlY2tib3hPclJhZGlv
KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmlzQ2hlY2tl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc0hvdmVy
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aXNNdWx0
aVNlbGVjdGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dDo6aXNSZWFkT25seSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0OjpoZWFkaW5nTGV2ZWwpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdDo6aXNIZWFkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3Q6OmlzTGluayk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0Ojppc0NvbnRyb2wpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdDo6aXNGaWVsZHNldCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0Ojppc0dyb3VwKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3Q6OnNlbGVjdGVkUmFkaW9CdXR0b24pOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdDo6c2VsZWN0ZWRUYWJJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFjdGlvbkVsZW1lbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6bW91c2VCdXR0b25MaXN0ZW5lcik6Cisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphbHRlclNsaWRlclZh
bHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmluY3Jl
bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpkZWNy
ZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6c2libGluZ1dpdGhBcmlhUm9sZSk6CisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjptZW51RWxlbWVudEZvck1lbnVC
dXR0b24pOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6bWVu
dUZvck1lbnVCdXR0b24pOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdDo6bWVudUl0ZW1FbGVtZW50Rm9yTWVudSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0OjptZW51QnV0dG9uRm9yTWVudSk6CisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpoaWVyYXJjaGljYWxMZXZlbCk6CisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpjaGVja2JveE9yUmFkaW9WYWx1
ZSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojp2YWx1ZURl
c2NyaXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6
OnN0ZXBWYWx1ZUZvclJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3Q6OmlzQVJJQVJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3Q6OnZhbHVlRm9yUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdDo6bWF4VmFsdWVGb3JSYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjptaW5WYWx1ZUZvclJhbmdlKToKKyAgICAgICAgKFdl
YkNvcmU6OmFjY2Vzc2libGVOYW1lRm9yTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0OjphY2Nlc3NpYmlsaXR5RGVzY3JpcHRpb25Gb3JFbGVtZW50cyk6
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjplbGVtZW50c0Zy
b21BdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dDo6YXJpYUxhYmVsZWRCeUVsZW1lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3Q6OmFyaWFMYWJlbGVkQnlBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29y
ZTo6bGFiZWxGb3JFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3Q6OnRpdGxlKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3Q6OmFyaWFBY2Nlc3NpYmlsaXR5RGVzY3JpcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWNjZXNzaWJpbGl0eURlc2NyaXB0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmlzRGVzY2VuZGFudE9m
QmFycmVuUGFyZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3Q6OnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6
aXNSZXF1aXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
OjpjaGFuZ2VWYWx1ZUJ5U3RlcCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0OjpjaGFuZ2VWYWx1ZUJ5UGVyY2VudCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc0VuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aXNHZW5lcmljRm9jdXNhYmxlRWxlbWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpjYW5IYXZlQ2hpbGRyZW4p
OgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oOgor
ICAgICAgICAoQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdCk6CisKIDIwMTItMDktMTIgIENocmlz
dG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KIAogICAgICAgICBbRUZM
XSBDb21waWxhdGlvbiBlcnJvciBpbiBSZW5kZXJUaGVtZUVmbC5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAK
aW5kZXggNWJhNjRjMGI2MjRhYWE4NGYxYjBlZTA5MjdkZTQ3OGQ0YWVjMzdmNi4uZTU4NDU2YzE0
OGYwNTEwZDFkNTkwOTU0Y2RmNDgzMWI1ODE5ZTljMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAKQEAgLTI1
OSwyNCArMjU5LDEyIEBAIEFjY2Vzc2liaWxpdHlSb2xlIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0
OjpkZXRlcm1pbmVBY2Nlc3NpYmlsaXR5Um9sZSgpCiAgICAgICAgICAgICByZXR1cm4gUmFkaW9C
dXR0b25Sb2xlOwogICAgICAgICBpZiAoaW5wdXQtPmlzVGV4dEJ1dHRvbigpKQogICAgICAgICAg
ICAgcmV0dXJuIGJ1dHRvblJvbGVUeXBlKCk7Ci0gICAgICAgIGlmIChpbnB1dC0+aXNSYW5nZUNv
bnRyb2woKSkKLSAgICAgICAgICAgIHJldHVybiBTbGlkZXJSb2xlOwogICAgICAgICByZXR1cm4g
VGV4dEZpZWxkUm9sZTsKICAgICB9CiAgICAgaWYgKG5vZGUoKS0+aGFzVGFnTmFtZShzZWxlY3RU
YWcpKSB7CiAgICAgICAgIEhUTUxTZWxlY3RFbGVtZW50KiBzZWxlY3RFbGVtZW50ID0gdG9IVE1M
U2VsZWN0RWxlbWVudChub2RlKCkpOwotICAgICAgICByZXR1cm4gc2VsZWN0RWxlbWVudC0+bXVs
dGlwbGUoKSA/IExpc3RCb3hSb2xlIDogUG9wVXBCdXR0b25Sb2xlOworICAgICAgICByZXR1cm4g
c2VsZWN0RWxlbWVudC0+bXVsdGlwbGUoKSA/IExpc3RSb2xlIDogUG9wVXBCdXR0b25Sb2xlOwog
ICAgIH0KLSAgICBpZiAobm9kZSgpLT5oYXNUYWdOYW1lKHRleHRhcmVhVGFnKSkKLSAgICAgICAg
cmV0dXJuIFRleHRBcmVhUm9sZTsKLSAgICBpZiAoaGVhZGluZ0xldmVsKCkpCi0gICAgICAgIHJl
dHVybiBIZWFkaW5nUm9sZTsKLSAgICBpZiAobm9kZSgpLT5oYXNUYWdOYW1lKGRpdlRhZykpCi0g
ICAgICAgIHJldHVybiBEaXZSb2xlOwotICAgIGlmIChub2RlKCktPmhhc1RhZ05hbWUocFRhZykp
Ci0gICAgICAgIHJldHVybiBQYXJhZ3JhcGhSb2xlOwotICAgIGlmIChub2RlKCktPmhhc1RhZ05h
bWUobGFiZWxUYWcpKQotICAgICAgICByZXR1cm4gTGFiZWxSb2xlOwogICAgIGlmIChub2RlKCkt
PmlzRm9jdXNhYmxlKCkpCiAgICAgICAgIHJldHVybiBHcm91cFJvbGU7CiAgICAgCkBAIC0zMTMs
MzggKzMwMSw4IEBAIHZvaWQgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmFkZENoaWxkcmVuKCkK
ICAgICB9CiB9CiAKLWJvb2wgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmNhbkhhdmVDaGlsZHJl
bigpIGNvbnN0Ci17Ci0gICAgLy8gSWYgdGhpcyBpcyBhbiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0LCB0aGVuIGl0J3Mgb2theSBpZiB0aGlzIG9iamVjdAotICAgIC8vIGRvZXNuJ3QgaGF2ZSBh
IG5vZGUgLSB0aGVyZSBhcmUgc29tZSByZW5kZXJlcnMgdGhhdCBkb24ndCBoYXZlIGFzc29jaWF0
ZWQKLSAgICAvLyBub2RlcywgbGlrZSBzY3JvbGwgYXJlYXMgYW5kIGNzcy1nZW5lcmF0ZWQgdGV4
dC4KLSAgICBpZiAoIW5vZGUoKSAmJiAhaXNBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0KCkpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIC8vIEVsZW1lbnRzIHRoYXQgc2hvdWxkIG5vdCBo
YXZlIGNoaWxkcmVuCi0gICAgc3dpdGNoIChyb2xlVmFsdWUoKSkgewotICAgIGNhc2UgSW1hZ2VS
b2xlOgotICAgIGNhc2UgQnV0dG9uUm9sZToKLSAgICBjYXNlIFBvcFVwQnV0dG9uUm9sZToKLSAg
ICBjYXNlIENoZWNrQm94Um9sZToKLSAgICBjYXNlIFJhZGlvQnV0dG9uUm9sZToKLSAgICBjYXNl
IFRhYlJvbGU6Ci0gICAgY2FzZSBUb2dnbGVCdXR0b25Sb2xlOgotICAgIGNhc2UgU3RhdGljVGV4
dFJvbGU6Ci0gICAgY2FzZSBMaXN0Qm94T3B0aW9uUm9sZToKLSAgICBjYXNlIFNjcm9sbEJhclJv
bGU6Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICB9Ci19Ci0KIGJvb2wgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmFjY2Vzc2li
aWxpdHlJc0lnbm9yZWQoKSBjb25zdAogewotICAgIC8vIElmIHRoaXMgZWxlbWVudCBpcyB3aXRo
aW4gYSBwYXJlbnQgdGhhdCBjYW5ub3QgaGF2ZSBjaGlsZHJlbiwgaXQgc2hvdWxkIG5vdCBiZSBl
eHBvc2VkLgotICAgIGlmIChpc0Rlc2NlbmRhbnRPZkJhcnJlblBhcmVudCgpKQotICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLQogICAgIHJldHVybiBtX3JvbGUgPT0gVW5rbm93blJvbGU7CiB9CiAKQEAg
LTM2NSwxMDI2ICszMjMsOSBAQCBib29sIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjpjYW52YXNI
YXNGYWxsYmFja0NvbnRlbnQoKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBB
Y2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6aXNXZWJBcmVhKCkgY29uc3QKLXsKLSAgICByZXR1cm4g
cm9sZVZhbHVlKCkgPT0gV2ViQXJlYVJvbGU7Ci19Ci0KLWJvb2wgQWNjZXNzaWJpbGl0eU5vZGVP
YmplY3Q6OmlzSW1hZ2VCdXR0b24oKSBjb25zdAotewotICAgIHJldHVybiBpc05hdGl2ZUltYWdl
KCkgJiYgcm9sZVZhbHVlKCkgPT0gQnV0dG9uUm9sZTsKLX0KLQotYm9vbCBBY2Nlc3NpYmlsaXR5
Tm9kZU9iamVjdDo6aXNBbmNob3IoKSBjb25zdAotewotICAgIHJldHVybiAhaXNOYXRpdmVJbWFn
ZSgpICYmIGlzTGluaygpOwotfQotCi1ib29sIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojppc05h
dGl2ZVRleHRDb250cm9sKCkgY29uc3QKLXsKLSAgICBOb2RlKiBub2RlID0gdGhpcy0+bm9kZSgp
OwotICAgIGlmICghbm9kZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKG5vZGUt
Pmhhc1RhZ05hbWUodGV4dGFyZWFUYWcpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIGlm
IChub2RlLT5oYXNUYWdOYW1lKGlucHV0VGFnKSkgewotICAgICAgICBIVE1MSW5wdXRFbGVtZW50
KiBpbnB1dCA9IHN0YXRpY19jYXN0PEhUTUxJbnB1dEVsZW1lbnQqPihub2RlKTsKLSAgICAgICAg
cmV0dXJuIGlucHV0LT5pc1RleHQoKSB8fCBpbnB1dC0+aXNOdW1iZXJGaWVsZCgpOwotICAgIH0K
LQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotYm9vbCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6
aXNTZWFyY2hGaWVsZCgpIGNvbnN0Ci17Ci0gICAgTm9kZSogbm9kZSA9IHRoaXMtPm5vZGUoKTsK
LSAgICBpZiAoIW5vZGUpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIEhUTUxJbnB1dEVs
ZW1lbnQqIGlucHV0RWxlbWVudCA9IG5vZGUtPnRvSW5wdXRFbGVtZW50KCk7Ci0gICAgaWYgKCFp
bnB1dEVsZW1lbnQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmIChpbnB1dEVsZW1l
bnQtPmlzU2VhcmNoRmllbGQoKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAvLyBTb21l
IHdlYnNpdGVzIGRvbid0IGxhYmVsIHRoZWlyIHNlYXJjaCBmaWVsZHMgYXMgc3VjaC4gSG93ZXZl
ciwgdGhleSB3aWxsCi0gICAgLy8gdXNlIHRoZSB3b3JkICJzZWFyY2giIGluIGVpdGhlciB0aGUg
Zm9ybSBvciBpbnB1dCB0eXBlLiBUaGlzIHdvbid0IGNhdGNoIGV2ZXJ5IGNhc2UsCi0gICAgLy8g
YnV0IGl0IHdpbGwgY2F0Y2ggZ29vZ2xlLmNvbSBmb3IgZXhhbXBsZS4KLQotICAgIC8vIENoZWNr
IHRoZSBub2RlIG5hbWUgb2YgdGhlIGlucHV0IHR5cGUsIHNvbWV0aW1lcyBpdCdzICJzZWFyY2gi
LgotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZUF0dHJpYnV0ZSA9IGdldEF0dHJpYnV0ZShu
YW1lQXR0cik7Ci0gICAgaWYgKG5hbWVBdHRyaWJ1dGUuY29udGFpbnMoInNlYXJjaCIsIGZhbHNl
KSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAvLyBDaGVjayB0aGUgZm9ybSBhY3Rpb24g
YW5kIHRoZSBuYW1lLCB3aGljaCB3aWxsIHNvbWV0aW1lcyBiZSAic2VhcmNoIi4KLSAgICBIVE1M
Rm9ybUVsZW1lbnQqIGZvcm0gPSBpbnB1dEVsZW1lbnQtPmZvcm0oKTsKLSAgICBpZiAoZm9ybSAm
JiAoZm9ybS0+bmFtZSgpLmNvbnRhaW5zKCJzZWFyY2giLCBmYWxzZSkgfHwgZm9ybS0+YWN0aW9u
KCkuY29udGFpbnMoInNlYXJjaCIsIGZhbHNlKSkpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0g
ICAgcmV0dXJuIGZhbHNlOwotfQotCi1ib29sIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojppc05h
dGl2ZUltYWdlKCkgY29uc3QKLXsKLSAgICBOb2RlKiBub2RlID0gdGhpcy0+bm9kZSgpOwotICAg
IGlmICghbm9kZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKG5vZGUtPmhhc1Rh
Z05hbWUoaW1nVGFnKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBpZiAobm9kZS0+aGFz
VGFnTmFtZShhcHBsZXRUYWcpIHx8IG5vZGUtPmhhc1RhZ05hbWUoZW1iZWRUYWcpIHx8IG5vZGUt
Pmhhc1RhZ05hbWUob2JqZWN0VGFnKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBpZiAo
bm9kZS0+aGFzVGFnTmFtZShpbnB1dFRhZykpIHsKLSAgICAgICAgSFRNTElucHV0RWxlbWVudCog
aW5wdXQgPSBzdGF0aWNfY2FzdDxIVE1MSW5wdXRFbGVtZW50Kj4obm9kZSk7Ci0gICAgICAgIHJl
dHVybiBpbnB1dC0+aXNJbWFnZUJ1dHRvbigpOwotICAgIH0KLQotICAgIHJldHVybiBmYWxzZTsK
LX0KLQotYm9vbCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6aXNJbWFnZSgpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEltYWdlUm9sZTsKLX0KLQotYm9vbCBBY2Nlc3NpYmls
aXR5Tm9kZU9iamVjdDo6aXNQYXNzd29yZEZpZWxkKCkgY29uc3QKLXsKLSAgICBOb2RlKiBub2Rl
ID0gdGhpcy0+bm9kZSgpOwotICAgIGlmICghbm9kZSB8fCAhbm9kZS0+aXNIVE1MRWxlbWVudCgp
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoYXJpYVJvbGVBdHRyaWJ1dGUoKSAh
PSBVbmtub3duUm9sZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgSFRNTElucHV0RWxl
bWVudCogaW5wdXRFbGVtZW50ID0gbm9kZS0+dG9JbnB1dEVsZW1lbnQoKTsKLSAgICBpZiAoIWlu
cHV0RWxlbWVudCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIGlucHV0RWxl
bWVudC0+aXNQYXNzd29yZEZpZWxkKCk7Ci19Ci0KLWJvb2wgQWNjZXNzaWJpbGl0eU5vZGVPYmpl
Y3Q6OmlzSW5wdXRJbWFnZSgpIGNvbnN0Ci17Ci0gICAgTm9kZSogbm9kZSA9IHRoaXMtPm5vZGUo
KTsKLSAgICBpZiAoIW5vZGUpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAKLSAgICBpZiAocm9s
ZVZhbHVlKCkgPT0gQnV0dG9uUm9sZSAmJiBub2RlLT5oYXNUYWdOYW1lKGlucHV0VGFnKSkgewot
ICAgICAgICBIVE1MSW5wdXRFbGVtZW50KiBpbnB1dCA9IHN0YXRpY19jYXN0PEhUTUxJbnB1dEVs
ZW1lbnQqPihub2RlKTsKLSAgICAgICAgcmV0dXJuIGlucHV0LT5pc0ltYWdlQnV0dG9uKCk7Ci0g
ICAgfQotCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1ib29sIEFjY2Vzc2liaWxpdHlOb2RlT2Jq
ZWN0Ojppc1Byb2dyZXNzSW5kaWNhdG9yKCkgY29uc3QKLXsKLSAgICByZXR1cm4gcm9sZVZhbHVl
KCkgPT0gUHJvZ3Jlc3NJbmRpY2F0b3JSb2xlOwotfQotCi1ib29sIEFjY2Vzc2liaWxpdHlOb2Rl
T2JqZWN0Ojppc1NsaWRlcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHJvbGVWYWx1ZSgpID09IFNs
aWRlclJvbGU7Ci19Ci0KLWJvb2wgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmlzTWVudVJlbGF0
ZWQoKSBjb25zdAotewotICAgIHN3aXRjaCAocm9sZVZhbHVlKCkpIHsKLSAgICBjYXNlIE1lbnVS
b2xlOgotICAgIGNhc2UgTWVudUJhclJvbGU6Ci0gICAgY2FzZSBNZW51QnV0dG9uUm9sZToKLSAg
ICBjYXNlIE1lbnVJdGVtUm9sZToKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgZGVmYXVsdDoK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLX0KLQotYm9vbCBBY2Nlc3NpYmlsaXR5Tm9k
ZU9iamVjdDo6aXNNZW51KCkgY29uc3QKLXsKLSAgICByZXR1cm4gcm9sZVZhbHVlKCkgPT0gTWVu
dVJvbGU7Ci19Ci0KLWJvb2wgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmlzTWVudUJhcigpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIHJvbGVWYWx1ZSgpID09IE1lbnVCYXJSb2xlOwotfQotCi1ib29s
IEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojppc01lbnVCdXR0b24oKSBjb25zdAotewotICAgIHJl
dHVybiByb2xlVmFsdWUoKSA9PSBNZW51QnV0dG9uUm9sZTsKLX0KLQotYm9vbCBBY2Nlc3NpYmls
aXR5Tm9kZU9iamVjdDo6aXNNZW51SXRlbSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHJvbGVWYWx1
ZSgpID09IE1lbnVJdGVtUm9sZTsKLX0KLQotYm9vbCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6
aXNOYXRpdmVDaGVja2JveE9yUmFkaW8oKSBjb25zdAotewotICAgIE5vZGUqIG5vZGUgPSB0aGlz
LT5ub2RlKCk7Ci0gICAgaWYgKCFub2RlKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBI
VE1MSW5wdXRFbGVtZW50KiBpbnB1dCA9IG5vZGUtPnRvSW5wdXRFbGVtZW50KCk7Ci0gICAgaWYg
KGlucHV0KQotICAgICAgICByZXR1cm4gaW5wdXQtPmlzQ2hlY2tib3goKSB8fCBpbnB1dC0+aXNS
YWRpb0J1dHRvbigpOwotCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1ib29sIEFjY2Vzc2liaWxp
dHlOb2RlT2JqZWN0Ojppc0VuYWJsZWQoKSBjb25zdAotewotICAgIGlmIChlcXVhbElnbm9yaW5n
Q2FzZShnZXRBdHRyaWJ1dGUoYXJpYV9kaXNhYmxlZEF0dHIpLCAidHJ1ZSIpKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0KLSAgICBOb2RlKiBub2RlID0gdGhpcy0+bm9kZSgpOwotICAgIGlmICgh
bm9kZSB8fCAhbm9kZS0+aXNFbGVtZW50Tm9kZSgpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQot
ICAgIHJldHVybiB0b0VsZW1lbnQobm9kZSktPmlzRW5hYmxlZEZvcm1Db250cm9sKCk7Ci19Ci0K
LWJvb2wgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmlzSW5kZXRlcm1pbmF0ZSgpIGNvbnN0Ci17
Ci0gICAgTm9kZSogbm9kZSA9IHRoaXMtPm5vZGUoKTsKLSAgICBpZiAoIW5vZGUpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLQotICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCA9IG5v
ZGUtPnRvSW5wdXRFbGVtZW50KCk7Ci0gICAgaWYgKCFpbnB1dEVsZW1lbnQpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLQotICAgIHJldHVybiBpbnB1dEVsZW1lbnQtPmlzSW5kZXRlcm1pbmF0ZSgp
OwotfQotCi1ib29sIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojppc1ByZXNzZWQoKSBjb25zdAot
ewotICAgIGlmIChyb2xlVmFsdWUoKSAhPSBCdXR0b25Sb2xlKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0KLSAgICBOb2RlKiBub2RlID0gdGhpcy0+bm9kZSgpOwotICAgIGlmICghbm9kZSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgLy8gSWYgdGhpcyBpcyBhbiBBUklBIGJ1dHRvbiwg
Y2hlY2sgdGhlIGFyaWEtcHJlc3NlZCBhdHRyaWJ1dGUgcmF0aGVyIHRoYW4gbm9kZSgpLT5hY3Rp
dmUoKQotICAgIGlmIChhcmlhUm9sZUF0dHJpYnV0ZSgpID09IEJ1dHRvblJvbGUpIHsKLSAgICAg
ICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGdldEF0dHJpYnV0ZShhcmlhX3ByZXNzZWRBdHRyKSwg
InRydWUiKSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgfQotCi0gICAgcmV0dXJuIG5vZGUtPmFjdGl2ZSgpOwotfQotCi1ib29sIEFjY2Vzc2li
aWxpdHlOb2RlT2JqZWN0Ojppc0NoZWNrZWQoKSBjb25zdAotewotICAgIE5vZGUqIG5vZGUgPSB0
aGlzLT5ub2RlKCk7Ci0gICAgaWYgKCFub2RlKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAg
ICAvLyBGaXJzdCB0ZXN0IGZvciBuYXRpdmUgY2hlY2tlZG5lc3Mgc2VtYW50aWNzCi0gICAgSFRN
TElucHV0RWxlbWVudCogaW5wdXRFbGVtZW50ID0gbm9kZS0+dG9JbnB1dEVsZW1lbnQoKTsKLSAg
ICBpZiAoaW5wdXRFbGVtZW50KQotICAgICAgICByZXR1cm4gaW5wdXRFbGVtZW50LT5zaG91bGRB
cHBlYXJDaGVja2VkKCk7Ci0KLSAgICAvLyBFbHNlLCBpZiB0aGlzIGlzIGFuIEFSSUEgY2hlY2ti
b3ggb3IgcmFkaW8sIHJlc3BlY3QgdGhlIGFyaWEtY2hlY2tlZCBhdHRyaWJ1dGUKLSAgICBBY2Nl
c3NpYmlsaXR5Um9sZSBhcmlhUm9sZSA9IGFyaWFSb2xlQXR0cmlidXRlKCk7Ci0gICAgaWYgKGFy
aWFSb2xlID09IFJhZGlvQnV0dG9uUm9sZSB8fCBhcmlhUm9sZSA9PSBDaGVja0JveFJvbGUpIHsK
LSAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGdldEF0dHJpYnV0ZShhcmlhX2NoZWNrZWRB
dHRyKSwgInRydWUiKSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgfQotCi0gICAgLy8gT3RoZXJ3aXNlIGl0J3Mgbm90IGNoZWNrZWQKLSAgICBy
ZXR1cm4gZmFsc2U7Ci19Ci0KLWJvb2wgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmlzSG92ZXJl
ZCgpIGNvbnN0Ci17Ci0gICAgTm9kZSogbm9kZSA9IHRoaXMtPm5vZGUoKTsKLSAgICBpZiAoIW5v
ZGUpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiBub2RlLT5ob3ZlcmVkKCk7
Ci19Ci0KLWJvb2wgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmlzTXVsdGlTZWxlY3RhYmxlKCkg
Y29uc3QKLXsKLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIGFyaWFNdWx0aVNlbGVjdGFibGUgPSBn
ZXRBdHRyaWJ1dGUoYXJpYV9tdWx0aXNlbGVjdGFibGVBdHRyKTsKLSAgICBpZiAoZXF1YWxJZ25v
cmluZ0Nhc2UoYXJpYU11bHRpU2VsZWN0YWJsZSwgInRydWUiKSkKLSAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGFyaWFNdWx0aVNlbGVjdGFibGUsICJmYWxz
ZSIpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCi0gICAgcmV0dXJuIG5vZGUoKSAmJiBu
b2RlKCktPmhhc1RhZ05hbWUoc2VsZWN0VGFnKSAmJiB0b0hUTUxTZWxlY3RFbGVtZW50KG5vZGUo
KSktPm11bHRpcGxlKCk7Ci19Ci0KLWJvb2wgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmlzUmVh
ZE9ubHkoKSBjb25zdAotewotICAgIE5vZGUqIG5vZGUgPSB0aGlzLT5ub2RlKCk7Ci0gICAgaWYg
KCFub2RlKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIGlmIChub2RlLT5oYXNUYWdOYW1l
KHRleHRhcmVhVGFnKSkKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEhUTUxUZXh0QXJlYUVs
ZW1lbnQqPihub2RlKS0+cmVhZE9ubHkoKTsKLQotICAgIGlmIChub2RlLT5oYXNUYWdOYW1lKGlu
cHV0VGFnKSkKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEhUTUxJbnB1dEVsZW1lbnQqPihu
b2RlKS0+cmVhZE9ubHkoKTsKLQotICAgIHJldHVybiAhbm9kZS0+cmVuZGVyZXJJc0VkaXRhYmxl
KCk7Ci19Ci0KLWJvb2wgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmlzUmVxdWlyZWQoKSBjb25z
dAotewotICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShnZXRBdHRyaWJ1dGUoYXJpYV9yZXF1aXJl
ZEF0dHIpLCAidHJ1ZSIpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIE5vZGUqIG4gPSB0
aGlzLT5ub2RlKCk7Ci0gICAgaWYgKG4gJiYgKG4tPmlzRWxlbWVudE5vZGUoKSAmJiB0b0VsZW1l
bnQobiktPmlzRm9ybUNvbnRyb2xFbGVtZW50KCkpKQotICAgICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8SFRNTEZvcm1Db250cm9sRWxlbWVudCo+KG4pLT5yZXF1aXJlZCgpOwotCi0gICAgcmV0dXJu
IGZhbHNlOwotfQotCi1pbnQgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmhlYWRpbmdMZXZlbCgp
IGNvbnN0Ci17Ci0gICAgLy8gaGVhZGluZ3MgY2FuIGJlIGluIGJsb2NrIGZsb3cgYW5kIG5vbi1i
bG9jayBmbG93Ci0gICAgTm9kZSogbm9kZSA9IHRoaXMtPm5vZGUoKTsKLSAgICBpZiAoIW5vZGUp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmIChhcmlhUm9sZUF0dHJpYnV0ZSgpID09
IEhlYWRpbmdSb2xlKQotICAgICAgICByZXR1cm4gZ2V0QXR0cmlidXRlKGFyaWFfbGV2ZWxBdHRy
KS50b0ludCgpOwotCi0gICAgaWYgKG5vZGUtPmhhc1RhZ05hbWUoaDFUYWcpKQotICAgICAgICBy
ZXR1cm4gMTsKLQotICAgIGlmIChub2RlLT5oYXNUYWdOYW1lKGgyVGFnKSkKLSAgICAgICAgcmV0
dXJuIDI7Ci0KLSAgICBpZiAobm9kZS0+aGFzVGFnTmFtZShoM1RhZykpCi0gICAgICAgIHJldHVy
biAzOwotCi0gICAgaWYgKG5vZGUtPmhhc1RhZ05hbWUoaDRUYWcpKQotICAgICAgICByZXR1cm4g
NDsKLQotICAgIGlmIChub2RlLT5oYXNUYWdOYW1lKGg1VGFnKSkKLSAgICAgICAgcmV0dXJuIDU7
Ci0KLSAgICBpZiAobm9kZS0+aGFzVGFnTmFtZShoNlRhZykpCi0gICAgICAgIHJldHVybiA2Owot
Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLVN0cmluZyBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6dmFs
dWVEZXNjcmlwdGlvbigpIGNvbnN0Ci17Ci0gICAgaWYgKCFpc0FSSUFSYW5nZSgpKQotICAgICAg
ICByZXR1cm4gU3RyaW5nKCk7Ci0KLSAgICByZXR1cm4gZ2V0QXR0cmlidXRlKGFyaWFfdmFsdWV0
ZXh0QXR0cikuc3RyaW5nKCk7Ci19Ci0KLWJvb2wgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6Omlz
QVJJQVJhbmdlKCkgY29uc3QKLXsKLSAgICBzd2l0Y2ggKG1fYXJpYVJvbGUpIHsKLSAgICBjYXNl
IFByb2dyZXNzSW5kaWNhdG9yUm9sZToKLSAgICBjYXNlIFNsaWRlclJvbGU6Ci0gICAgY2FzZSBT
Y3JvbGxCYXJSb2xlOgotICAgIGNhc2UgU3BpbkJ1dHRvblJvbGU6Ci0gICAgICAgIHJldHVybiB0
cnVlOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci19Ci0KLWZs
b2F0IEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojp2YWx1ZUZvclJhbmdlKCkgY29uc3QKLXsKLSAg
ICBpZiAobm9kZSgpICYmIG5vZGUoKS0+aGFzVGFnTmFtZShpbnB1dFRhZykpIHsKLSAgICAgICAg
SFRNTElucHV0RWxlbWVudCogaW5wdXQgPSBzdGF0aWNfY2FzdDxIVE1MSW5wdXRFbGVtZW50Kj4o
bm9kZSgpKTsKLSAgICAgICAgaWYgKGlucHV0LT5pc1JhbmdlQ29udHJvbCgpKQotICAgICAgICAg
ICAgcmV0dXJuIGlucHV0LT52YWx1ZUFzTnVtYmVyKCk7Ci0gICAgfQotCi0gICAgaWYgKCFpc0FS
SUFSYW5nZSgpKQotICAgICAgICByZXR1cm4gMC4wZjsKLQotICAgIHJldHVybiBnZXRBdHRyaWJ1
dGUoYXJpYV92YWx1ZW5vd0F0dHIpLnRvRmxvYXQoKTsKLX0KLQotZmxvYXQgQWNjZXNzaWJpbGl0
eU5vZGVPYmplY3Q6Om1heFZhbHVlRm9yUmFuZ2UoKSBjb25zdAotewotICAgIGlmIChub2RlKCkg
JiYgbm9kZSgpLT5oYXNUYWdOYW1lKGlucHV0VGFnKSkgewotICAgICAgICBIVE1MSW5wdXRFbGVt
ZW50KiBpbnB1dCA9IHN0YXRpY19jYXN0PEhUTUxJbnB1dEVsZW1lbnQqPihub2RlKCkpOwotICAg
ICAgICBpZiAoaW5wdXQtPmlzUmFuZ2VDb250cm9sKCkpCi0gICAgICAgICAgICByZXR1cm4gaW5w
dXQtPm1heGltdW0oKTsKLSAgICB9Ci0KLSAgICBpZiAoIWlzQVJJQVJhbmdlKCkpCi0gICAgICAg
IHJldHVybiAwLjBmOwotCi0gICAgcmV0dXJuIGdldEF0dHJpYnV0ZShhcmlhX3ZhbHVlbWF4QXR0
cikudG9GbG9hdCgpOwotfQotCi1mbG9hdCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6bWluVmFs
dWVGb3JSYW5nZSgpIGNvbnN0Ci17Ci0gICAgaWYgKG5vZGUoKSAmJiBub2RlKCktPmhhc1RhZ05h
bWUoaW5wdXRUYWcpKSB7Ci0gICAgICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0ID0gc3RhdGlj
X2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KG5vZGUoKSk7Ci0gICAgICAgIGlmIChpbnB1dC0+aXNS
YW5nZUNvbnRyb2woKSkKLSAgICAgICAgICAgIHJldHVybiBpbnB1dC0+bWluaW11bSgpOwotICAg
IH0KLQotICAgIGlmICghaXNBUklBUmFuZ2UoKSkKLSAgICAgICAgcmV0dXJuIDAuMGY7Ci0KLSAg
ICByZXR1cm4gZ2V0QXR0cmlidXRlKGFyaWFfdmFsdWVtaW5BdHRyKS50b0Zsb2F0KCk7Ci19Ci0K
LWZsb2F0IEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjpzdGVwVmFsdWVGb3JSYW5nZSgpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIGdldEF0dHJpYnV0ZShzdGVwQXR0cikudG9GbG9hdCgpOwotfQotCi1i
b29sIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojppc0hlYWRpbmcoKSBjb25zdAotewotICAgIHJl
dHVybiByb2xlVmFsdWUoKSA9PSBIZWFkaW5nUm9sZTsKLX0KLQotYm9vbCBBY2Nlc3NpYmlsaXR5
Tm9kZU9iamVjdDo6aXNMaW5rKCkgY29uc3QKLXsKLSAgICByZXR1cm4gcm9sZVZhbHVlKCkgPT0g
V2ViQ29yZUxpbmtSb2xlOwotfQotCi1ib29sIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojppc0Nv
bnRyb2woKSBjb25zdAotewotICAgIE5vZGUqIG5vZGUgPSB0aGlzLT5ub2RlKCk7Ci0gICAgaWYg
KCFub2RlKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gKChub2RlLT5pc0Vs
ZW1lbnROb2RlKCkgJiYgdG9FbGVtZW50KG5vZGUpLT5pc0Zvcm1Db250cm9sRWxlbWVudCgpKQot
ICAgICAgICB8fCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0FSSUFDb250cm9sKGFyaWFSb2xlQXR0
cmlidXRlKCkpKTsKLX0KLQotYm9vbCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6aXNGaWVsZHNl
dCgpIGNvbnN0Ci17Ci0gICAgTm9kZSogbm9kZSA9IHRoaXMtPm5vZGUoKTsKLSAgICBpZiAoIW5v
ZGUpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiBub2RlLT5oYXNUYWdOYW1l
KGZpZWxkc2V0VGFnKTsKLX0KLQotYm9vbCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6aXNHcm91
cCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEdyb3VwUm9sZTsKLX0KLQot
QWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OnNlbGVjdGVkUmFk
aW9CdXR0b24oKQotewotICAgIGlmICghaXNSYWRpb0dyb3VwKCkpCi0gICAgICAgIHJldHVybiAw
OwotCi0gICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9y
IGNoaWxkcmVuID0gdGhpcy0+Y2hpbGRyZW4oKTsKLQotICAgIC8vIEZpbmQgdGhlIGNoaWxkIHJh
ZGlvIGJ1dHRvbiB0aGF0IGlzIHNlbGVjdGVkIChpZS4gdGhlIGludFZhbHVlID09IDEpLgotICAg
IHNpemVfdCBzaXplID0gY2hpbGRyZW4uc2l6ZSgpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgc2l6ZTsgKytpKSB7Ci0gICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iamVjdCA9IGNo
aWxkcmVuW2ldLmdldCgpOwotICAgICAgICBpZiAob2JqZWN0LT5yb2xlVmFsdWUoKSA9PSBSYWRp
b0J1dHRvblJvbGUgJiYgb2JqZWN0LT5jaGVja2JveE9yUmFkaW9WYWx1ZSgpID09IEJ1dHRvblN0
YXRlT24pCi0gICAgICAgICAgICByZXR1cm4gb2JqZWN0OwotICAgIH0KLSAgICByZXR1cm4gMDsK
LX0KLQotQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OnNlbGVj
dGVkVGFiSXRlbSgpCi17Ci0gICAgaWYgKCFpc1RhYkxpc3QoKSkKLSAgICAgICAgcmV0dXJuIDA7
Ci0KLSAgICAvLyBGaW5kIHRoZSBjaGlsZCB0YWIgaXRlbSB0aGF0IGlzIHNlbGVjdGVkIChpZS4g
dGhlIGludFZhbHVlID09IDEpLgotICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxp
dHlDaGlsZHJlblZlY3RvciB0YWJzOwotICAgIHRhYkNoaWxkcmVuKHRhYnMpOwotCi0gICAgQWNj
ZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGNoaWxkcmVuID0g
dGhpcy0+Y2hpbGRyZW4oKTsKLSAgICBzaXplX3Qgc2l6ZSA9IHRhYnMuc2l6ZSgpOwotICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7Ci0gICAgICAgIEFjY2Vzc2liaWxpdHlP
YmplY3QqIG9iamVjdCA9IGNoaWxkcmVuW2ldLmdldCgpOwotICAgICAgICBpZiAob2JqZWN0LT5p
c1RhYkl0ZW0oKSAmJiBvYmplY3QtPmlzQ2hlY2tlZCgpKQotICAgICAgICAgICAgcmV0dXJuIG9i
amVjdDsKLSAgICB9Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLUFjY2Vzc2liaWxpdHlCdXR0b25TdGF0
ZSBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6Y2hlY2tib3hPclJhZGlvVmFsdWUoKSBjb25zdAot
ewotICAgIGlmIChpc05hdGl2ZUNoZWNrYm94T3JSYWRpbygpKQotICAgICAgICByZXR1cm4gaXND
aGVja2VkKCkgPyBCdXR0b25TdGF0ZU9uIDogQnV0dG9uU3RhdGVPZmY7Ci0KLSAgICByZXR1cm4g
QWNjZXNzaWJpbGl0eU9iamVjdDo6Y2hlY2tib3hPclJhZGlvVmFsdWUoKTsKLX0KLQotRWxlbWVu
dCogQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmFuY2hvckVsZW1lbnQoKSBjb25zdAotewotICAg
IE5vZGUqIG5vZGUgPSB0aGlzLT5ub2RlKCk7Ci0gICAgaWYgKCFub2RlKQotICAgICAgICByZXR1
cm4gMDsKLQotICAgIEFYT2JqZWN0Q2FjaGUqIGNhY2hlID0gYXhPYmplY3RDYWNoZSgpOwotCi0g
ICAgLy8gc2VhcmNoIHVwIHRoZSBET00gdHJlZSBmb3IgYW4gYW5jaG9yIGVsZW1lbnQKLSAgICAv
LyBOT1RFOiB0aGlzIGFzc3VtZXMgdGhhdCBhbnkgbm9uLWltYWdlIHdpdGggYW4gYW5jaG9yIGlz
IGFuIEhUTUxBbmNob3JFbGVtZW50Ci0gICAgZm9yICggOyBub2RlOyBub2RlID0gbm9kZS0+cGFy
ZW50Tm9kZSgpKSB7Ci0gICAgICAgIGlmIChub2RlLT5oYXNUYWdOYW1lKGFUYWcpIHx8IChub2Rl
LT5yZW5kZXJlcigpICYmIGNhY2hlLT5nZXRPckNyZWF0ZShub2RlLT5yZW5kZXJlcigpKS0+aXNB
bmNob3IoKSkpCi0gICAgICAgICAgICByZXR1cm4gdG9FbGVtZW50KG5vZGUpOwotICAgIH0KLQot
ICAgIHJldHVybiAwOwotfQotCi1FbGVtZW50KiBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6YWN0
aW9uRWxlbWVudCgpIGNvbnN0Ci17Ci0gICAgTm9kZSogbm9kZSA9IHRoaXMtPm5vZGUoKTsKLSAg
ICBpZiAoIW5vZGUpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgaWYgKG5vZGUtPmhhc1RhZ05h
bWUoaW5wdXRUYWcpKSB7Ci0gICAgICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0ID0gc3RhdGlj
X2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KG5vZGUpOwotICAgICAgICBpZiAoIWlucHV0LT5kaXNh
YmxlZCgpICYmIChpc0NoZWNrYm94T3JSYWRpbygpIHx8IGlucHV0LT5pc1RleHRCdXR0b24oKSkp
Ci0gICAgICAgICAgICByZXR1cm4gaW5wdXQ7Ci0gICAgfSBlbHNlIGlmIChub2RlLT5oYXNUYWdO
YW1lKGJ1dHRvblRhZykpCi0gICAgICAgIHJldHVybiB0b0VsZW1lbnQobm9kZSk7Ci0KLSAgICBp
ZiAoaXNGaWxlVXBsb2FkQnV0dG9uKCkpCi0gICAgICAgIHJldHVybiB0b0VsZW1lbnQobm9kZSk7
Ci0gICAgICAgICAgICAKLSAgICBpZiAoQWNjZXNzaWJpbGl0eU9iamVjdDo6aXNBUklBSW5wdXQo
YXJpYVJvbGVBdHRyaWJ1dGUoKSkpCi0gICAgICAgIHJldHVybiB0b0VsZW1lbnQobm9kZSk7Ci0K
LSAgICBpZiAoaXNJbWFnZUJ1dHRvbigpKQotICAgICAgICByZXR1cm4gdG9FbGVtZW50KG5vZGUp
OwotICAgIAotICAgIGlmIChub2RlLT5oYXNUYWdOYW1lKHNlbGVjdFRhZykpCi0gICAgICAgIHJl
dHVybiB0b0VsZW1lbnQobm9kZSk7Ci0KLSAgICBzd2l0Y2ggKHJvbGVWYWx1ZSgpKSB7Ci0gICAg
Y2FzZSBCdXR0b25Sb2xlOgotICAgIGNhc2UgUG9wVXBCdXR0b25Sb2xlOgotICAgIGNhc2UgVGFi
Um9sZToKLSAgICBjYXNlIE1lbnVJdGVtUm9sZToKLSAgICBjYXNlIExpc3RJdGVtUm9sZToKLSAg
ICAgICAgcmV0dXJuIHRvRWxlbWVudChub2RlKTsKLSAgICBkZWZhdWx0OgotICAgICAgICBicmVh
azsKLSAgICB9Ci0gICAgCi0gICAgRWxlbWVudCogZWx0ID0gYW5jaG9yRWxlbWVudCgpOwotICAg
IGlmICghZWx0KQotICAgICAgICBlbHQgPSBtb3VzZUJ1dHRvbkxpc3RlbmVyKCk7Ci0gICAgcmV0
dXJuIGVsdDsKLX0KLQotRWxlbWVudCogQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6Om1vdXNlQnV0
dG9uTGlzdGVuZXIoKSBjb25zdAotewotICAgIE5vZGUqIG5vZGUgPSB0aGlzLT5ub2RlKCk7Ci0g
ICAgaWYgKCFub2RlKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIC8vIGNoZWNrIGlmIG91ciBw
YXJlbnQgaXMgYSBtb3VzZSBidXR0b24gbGlzdGVuZXIKLSAgICB3aGlsZSAobm9kZSAmJiAhbm9k
ZS0+aXNFbGVtZW50Tm9kZSgpKQotICAgICAgICBub2RlID0gbm9kZS0+cGFyZW50Tm9kZSgpOwot
Ci0gICAgaWYgKCFub2RlKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIC8vIEZJWE1FOiBEbyB0
aGUgY29udGludWF0aW9uIHNlYXJjaCBsaWtlIGFuY2hvckVsZW1lbnQgZG9lcwotICAgIGZvciAo
RWxlbWVudCogZWxlbWVudCA9IHRvRWxlbWVudChub2RlKTsgZWxlbWVudDsgZWxlbWVudCA9IGVs
ZW1lbnQtPnBhcmVudEVsZW1lbnQoKSkgewotICAgICAgICBpZiAoZWxlbWVudC0+Z2V0QXR0cmli
dXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuY2xpY2tFdmVudCkgfHwgZWxlbWVudC0+Z2V0
QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkubW91c2Vkb3duRXZlbnQpIHx8IGVs
ZW1lbnQtPmdldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLm1vdXNldXBFdmVu
dCkpCi0gICAgICAgICAgICByZXR1cm4gZWxlbWVudDsKLSAgICB9Ci0KLSAgICByZXR1cm4gMDsK
LX0KLQotYm9vbCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6aXNEZXNjZW5kYW50T2ZCYXJyZW5Q
YXJlbnQoKSBjb25zdAotewotICAgIGZvciAoQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqZWN0ID0g
cGFyZW50T2JqZWN0KCk7IG9iamVjdDsgb2JqZWN0ID0gb2JqZWN0LT5wYXJlbnRPYmplY3QoKSkg
ewotICAgICAgICBpZiAoIW9iamVjdC0+Y2FuSGF2ZUNoaWxkcmVuKCkpCi0gICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLXZvaWQgQWNjZXNz
aWJpbGl0eU5vZGVPYmplY3Q6OmFsdGVyU2xpZGVyVmFsdWUoYm9vbCBpbmNyZWFzZSkKLXsKLSAg
ICBpZiAocm9sZVZhbHVlKCkgIT0gU2xpZGVyUm9sZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
aWYgKCFnZXRBdHRyaWJ1dGUoc3RlcEF0dHIpLmlzRW1wdHkoKSkKLSAgICAgICAgY2hhbmdlVmFs
dWVCeVN0ZXAoaW5jcmVhc2UpOwotICAgIGVsc2UKLSAgICAgICAgY2hhbmdlVmFsdWVCeVBlcmNl
bnQoaW5jcmVhc2UgPyA1IDogLTUpOwotfQotICAgIAotdm9pZCBBY2Nlc3NpYmlsaXR5Tm9kZU9i
amVjdDo6aW5jcmVtZW50KCkKLXsKLSAgICBhbHRlclNsaWRlclZhbHVlKHRydWUpOwotfQotCi12
b2lkIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjpkZWNyZW1lbnQoKQotewotICAgIGFsdGVyU2xp
ZGVyVmFsdWUoZmFsc2UpOwotfQotCi12b2lkIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjpjaGFu
Z2VWYWx1ZUJ5U3RlcChib29sIGluY3JlYXNlKQotewotICAgIGZsb2F0IHN0ZXAgPSBzdGVwVmFs
dWVGb3JSYW5nZSgpOwotICAgIGZsb2F0IHZhbHVlID0gdmFsdWVGb3JSYW5nZSgpOwotCi0gICAg
dmFsdWUgKz0gaW5jcmVhc2UgPyBzdGVwIDogLXN0ZXA7Ci0KLSAgICBzZXRWYWx1ZShTdHJpbmc6
Om51bWJlcih2YWx1ZSkpOwotCi0gICAgYXhPYmplY3RDYWNoZSgpLT5wb3N0Tm90aWZpY2F0aW9u
KG5vZGUoKSwgQVhPYmplY3RDYWNoZTo6QVhWYWx1ZUNoYW5nZWQsIHRydWUpOwotfQotCi12b2lk
IEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjpjaGFuZ2VWYWx1ZUJ5UGVyY2VudChmbG9hdCBwZXJj
ZW50Q2hhbmdlKQotewotICAgIGZsb2F0IHJhbmdlID0gbWF4VmFsdWVGb3JSYW5nZSgpIC0gbWlu
VmFsdWVGb3JSYW5nZSgpOwotICAgIGZsb2F0IHZhbHVlID0gdmFsdWVGb3JSYW5nZSgpOwotCi0g
ICAgdmFsdWUgKz0gcmFuZ2UgKiAocGVyY2VudENoYW5nZSAvIDEwMCk7Ci0gICAgc2V0VmFsdWUo
U3RyaW5nOjpudW1iZXIodmFsdWUpKTsKLQotICAgIGF4T2JqZWN0Q2FjaGUoKS0+cG9zdE5vdGlm
aWNhdGlvbihub2RlKCksIEFYT2JqZWN0Q2FjaGU6OkFYVmFsdWVDaGFuZ2VkLCB0cnVlKTsKLX0K
LQotYm9vbCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6aXNHZW5lcmljRm9jdXNhYmxlRWxlbWVu
dCgpIGNvbnN0Ci17Ci0gICAgaWYgKCFjYW5TZXRGb2N1c0F0dHJpYnV0ZSgpKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0KLSAgICAgLy8gSWYgaXQncyBhIGNvbnRyb2wsIGl0J3Mgbm90IGdlbmVy
aWMuCi0gICAgIGlmIChpc0NvbnRyb2woKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAg
Ly8gSWYgaXQgaGFzIGFuIGFyaWEgcm9sZSwgaXQncyBub3QgZ2VuZXJpYy4KLSAgICBpZiAobV9h
cmlhUm9sZSAhPSBVbmtub3duUm9sZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgLy8g
SWYgdGhlIGNvbnRlbnQgZWRpdGFibGUgYXR0cmlidXRlIGlzIHNldCBvbiB0aGlzIGVsZW1lbnQs
IHRoYXQncyB0aGUgcmVhc29uCi0gICAgLy8gaXQncyBmb2N1c2FibGUsIGFuZCBleGlzdGluZyBs
b2dpYyBzaG91bGQgaGFuZGxlIHRoaXMgY2FzZSBhbHJlYWR5IC0gc28gaXQncyBub3QgYQotICAg
IC8vIGdlbmVyaWMgZm9jdXNhYmxlIGVsZW1lbnQuCi0KLSAgICBpZiAoaGFzQ29udGVudEVkaXRh
YmxlQXR0cmlidXRlU2V0KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIC8vIFRoZSB3
ZWIgYXJlYSBhbmQgYm9keSBlbGVtZW50IGFyZSBib3RoIGZvY3VzYWJsZSwgYnV0IGV4aXN0aW5n
IGxvZ2ljIGhhbmRsZXMgdGhlc2UKLSAgICAvLyBjYXNlcyBhbHJlYWR5LCBzbyB3ZSBkb24ndCBu
ZWVkIHRvIGluY2x1ZGUgdGhlbSBoZXJlLgotICAgIGlmIChyb2xlVmFsdWUoKSA9PSBXZWJBcmVh
Um9sZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChub2RlKCkgJiYgbm9kZSgpLT5o
YXNUYWdOYW1lKGJvZHlUYWcpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4g
dHJ1ZTsKLX0KLQotSFRNTExhYmVsRWxlbWVudCogQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6Omxh
YmVsRm9yRWxlbWVudChFbGVtZW50KiBlbGVtZW50KSBjb25zdAotewotICAgIFJlZlB0cjxOb2Rl
TGlzdD4gbGlzdCA9IGVsZW1lbnQtPmRvY3VtZW50KCktPmdldEVsZW1lbnRzQnlUYWdOYW1lKCJs
YWJlbCIpOwotICAgIHVuc2lnbmVkIGxlbiA9IGxpc3QtPmxlbmd0aCgpOwotICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBsZW47IGkrKykgewotICAgICAgICBpZiAobGlzdC0+aXRlbShpKS0+
aGFzVGFnTmFtZShsYWJlbFRhZykpIHsKLSAgICAgICAgICAgIEhUTUxMYWJlbEVsZW1lbnQqIGxh
YmVsID0gc3RhdGljX2Nhc3Q8SFRNTExhYmVsRWxlbWVudCo+KGxpc3QtPml0ZW0oaSkpOwotICAg
ICAgICAgICAgaWYgKGxhYmVsLT5jb250cm9sKCkgPT0gZWxlbWVudCkKLSAgICAgICAgICAgICAg
ICByZXR1cm4gbGFiZWw7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gMDsKLX0KLQot
U3RyaW5nIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjphcmlhQWNjZXNzaWJpbGl0eURlc2NyaXB0
aW9uKCkgY29uc3QKLXsKLSAgICBTdHJpbmcgYXJpYUxhYmVsZWRCeSA9IGFyaWFMYWJlbGVkQnlB
dHRyaWJ1dGUoKTsKLSAgICBpZiAoIWFyaWFMYWJlbGVkQnkuaXNFbXB0eSgpKQotICAgICAgICBy
ZXR1cm4gYXJpYUxhYmVsZWRCeTsKLQotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgYXJpYUxhYmVs
ID0gZ2V0QXR0cmlidXRlKGFyaWFfbGFiZWxBdHRyKTsKLSAgICBpZiAoIWFyaWFMYWJlbC5pc0Vt
cHR5KCkpCi0gICAgICAgIHJldHVybiBhcmlhTGFiZWw7Ci0KLSAgICByZXR1cm4gU3RyaW5nKCk7
Ci19Ci0KLXN0YXRpYyBFbGVtZW50KiBzaWJsaW5nV2l0aEFyaWFSb2xlKFN0cmluZyByb2xlLCBO
b2RlKiBub2RlKQotewotICAgIGZvciAoTm9kZSogc2libGluZyA9IG5vZGUtPnBhcmVudE5vZGUo
KS0+Zmlyc3RDaGlsZCgpOyBzaWJsaW5nOyBzaWJsaW5nID0gc2libGluZy0+bmV4dFNpYmxpbmco
KSkgewotICAgICAgICBpZiAoc2libGluZy0+aXNFbGVtZW50Tm9kZSgpKSB7Ci0gICAgICAgICAg
ICBjb25zdCBBdG9taWNTdHJpbmcmIHNpYmxpbmdBcmlhUm9sZSA9IHRvRWxlbWVudChzaWJsaW5n
KS0+Z2V0QXR0cmlidXRlKHJvbGVBdHRyKTsKLSAgICAgICAgICAgIGlmIChlcXVhbElnbm9yaW5n
Q2FzZShzaWJsaW5nQXJpYVJvbGUsIHJvbGUpKQotICAgICAgICAgICAgICAgIHJldHVybiB0b0Vs
ZW1lbnQoc2libGluZyk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIDA7Ci19
Ci0KLUVsZW1lbnQqIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjptZW51RWxlbWVudEZvck1lbnVC
dXR0b24oKSBjb25zdAotewotICAgIGlmIChhcmlhUm9sZUF0dHJpYnV0ZSgpICE9IE1lbnVCdXR0
b25Sb2xlKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIHJldHVybiBzaWJsaW5nV2l0aEFyaWFS
b2xlKCJtZW51Iiwgbm9kZSgpKTsKLX0KLQotQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJp
bGl0eU5vZGVPYmplY3Q6Om1lbnVGb3JNZW51QnV0dG9uKCkgY29uc3QKLXsKLSAgICByZXR1cm4g
YXhPYmplY3RDYWNoZSgpLT5nZXRPckNyZWF0ZShtZW51RWxlbWVudEZvck1lbnVCdXR0b24oKSk7
Ci19Ci0KLUVsZW1lbnQqIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjptZW51SXRlbUVsZW1lbnRG
b3JNZW51KCkgY29uc3QKLXsKLSAgICBpZiAoYXJpYVJvbGVBdHRyaWJ1dGUoKSAhPSBNZW51Um9s
ZSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgCi0gICAgcmV0dXJuIHNpYmxpbmdXaXRoQXJpYVJv
bGUoIm1lbnVpdGVtIiwgbm9kZSgpKTsgICAgCi19Ci0KLUFjY2Vzc2liaWxpdHlPYmplY3QqIEFj
Y2Vzc2liaWxpdHlOb2RlT2JqZWN0OjptZW51QnV0dG9uRm9yTWVudSgpIGNvbnN0Ci17Ci0gICAg
RWxlbWVudCogbWVudUl0ZW0gPSBtZW51SXRlbUVsZW1lbnRGb3JNZW51KCk7Ci0KLSAgICBpZiAo
bWVudUl0ZW0pIHsKLSAgICAgICAgLy8gQVJJQSBqdXN0IGhhcyBnZW5lcmljIG1lbnUgaXRlbXMu
IEFwcEtpdCBuZWVkcyB0byBrbm93IGlmIHRoaXMgaXMgYSB0b3AgbGV2ZWwgaXRlbXMgbGlrZSBN
ZW51QmFyQnV0dG9uIG9yIE1lbnVCYXJJdGVtCi0gICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3Qq
IG1lbnVJdGVtQVggPSBheE9iamVjdENhY2hlKCktPmdldE9yQ3JlYXRlKG1lbnVJdGVtKTsKLSAg
ICAgICAgaWYgKG1lbnVJdGVtQVgtPmlzTWVudUJ1dHRvbigpKQotICAgICAgICAgICAgcmV0dXJu
IG1lbnVJdGVtQVg7Ci0gICAgfQotICAgIHJldHVybiAwOwotfQotCi1TdHJpbmcgQWNjZXNzaWJp
bGl0eU5vZGVPYmplY3Q6OmFjY2Vzc2liaWxpdHlEZXNjcmlwdGlvbigpIGNvbnN0Ci17Ci0gICAg
Ly8gU3RhdGljIHRleHQgc2hvdWxkIG5vdCBoYXZlIGEgZGVzY3JpcHRpb24sIGl0IHNob3VsZCBv
bmx5IGhhdmUgYSBzdHJpbmdWYWx1ZS4KLSAgICBpZiAocm9sZVZhbHVlKCkgPT0gU3RhdGljVGV4
dFJvbGUpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLQotICAgIFN0cmluZyBhcmlhRGVzY3Jp
cHRpb24gPSBhcmlhQWNjZXNzaWJpbGl0eURlc2NyaXB0aW9uKCk7Ci0gICAgaWYgKCFhcmlhRGVz
Y3JpcHRpb24uaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gYXJpYURlc2NyaXB0aW9uOwotCi0g
ICAgaWYgKGlzSW1hZ2UoKSB8fCBpc0lucHV0SW1hZ2UoKSB8fCBpc05hdGl2ZUltYWdlKCkgfHwg
aXNDYW52YXMoKSkgewotICAgICAgICAvLyBJbWFnZXMgc2hvdWxkIHVzZSBhbHQgYXMgbG9uZyBh
cyB0aGUgYXR0cmlidXRlIGlzIHByZXNlbnQsIGV2ZW4gaWYgZW1wdHkuICAgICAgICAgICAgICAg
ICAgICAKLSAgICAgICAgLy8gT3RoZXJ3aXNlLCBpdCBzaG91bGQgZmFsbGJhY2sgdG8gb3RoZXIg
bWV0aG9kcywgbGlrZSB0aGUgdGl0bGUgYXR0cmlidXRlLiAgICAgICAgICAgICAgICAgICAgCi0g
ICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgYWx0ID0gZ2V0QXR0cmlidXRlKGFsdEF0dHIpOwot
ICAgICAgICBpZiAoIWFsdC5pc051bGwoKSkKLSAgICAgICAgICAgIHJldHVybiBhbHQ7Ci0gICAg
fQotCi0jaWYgRU5BQkxFKE1BVEhNTCkKLSAgICBOb2RlKiBub2RlID0gdGhpcy0+bm9kZSgpOwot
ICAgIGlmIChub2RlICYmIG5vZGUtPmlzRWxlbWVudE5vZGUoKSAmJiB0b0VsZW1lbnQobm9kZSkt
PmlzTWF0aE1MRWxlbWVudCgpKQotICAgICAgICByZXR1cm4gZ2V0QXR0cmlidXRlKE1hdGhNTE5h
bWVzOjphbHR0ZXh0QXR0cik7Ci0jZW5kaWYKLQotICAgIC8vIEFuIGVsZW1lbnQncyBkZXNjcmlw
dGl2ZSB0ZXh0IGlzIGNvbXByaXNlZCBvZiB0aXRsZSgpICh3aGF0J3MgdmlzaWJsZSBvbiB0aGUg
c2NyZWVuKSBhbmQgYWNjZXNzaWJpbGl0eURlc2NyaXB0aW9uKCkgKG90aGVyIGRlc2NyaXB0aXZl
IHRleHQpLgotICAgIC8vIEJvdGggYXJlIHVzZWQgdG8gZ2VuZXJhdGUgd2hhdCBhIHNjcmVlbiBy
ZWFkZXIgc3BlYWtzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgCi0gICAgLy8gSWYgdGhpcyBwb2ludCBpcyByZWFjaGVkIChpLmUuIHRo
ZXJlJ3Mgbm8gYWNjZXNzaWJpbGl0eURlc2NyaXB0aW9uKSBhbmQgdGhlcmUncyBubyB0aXRsZSgp
LCB3ZSBzaG91bGQgZmFsbGJhY2sgdG8gdXNpbmcgdGhlIHRpdGxlIGF0dHJpYnV0ZS4KLSAgICAv
LyBUaGUgdGl0bGUgYXR0cmlidXRlIGlzIG5vcm1hbGx5IHVzZWQgYXMgaGVscCB0ZXh0IChiZWNh
dXNlIGl0IGlzIGEgdG9vbHRpcCksIGJ1dCBpZiB0aGVyZSBpcyBub3RoaW5nIGVsc2UgYXZhaWxh
YmxlLCB0aGlzIHNob3VsZCBiZSB1c2VkIChhY2NvcmRpbmcgdG8gQVJJQSkuCi0gICAgaWYgKHRp
dGxlKCkuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gZ2V0QXR0cmlidXRlKHRpdGxlQXR0cik7
Ci0KLSAgICByZXR1cm4gU3RyaW5nKCk7Ci19Ci0KLVN0cmluZyBBY2Nlc3NpYmlsaXR5Tm9kZU9i
amVjdDo6aGVscFRleHQoKSBjb25zdAotewotICAgIE5vZGUqIG5vZGUgPSB0aGlzLT5ub2RlKCk7
Ci0gICAgaWYgKCFub2RlKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgCi0gICAgY29u
c3QgQXRvbWljU3RyaW5nJiBhcmlhSGVscCA9IGdldEF0dHJpYnV0ZShhcmlhX2hlbHBBdHRyKTsK
LSAgICBpZiAoIWFyaWFIZWxwLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIGFyaWFIZWxwOwot
ICAgIAotICAgIFN0cmluZyBkZXNjcmliZWRCeSA9IGFyaWFEZXNjcmliZWRCeUF0dHJpYnV0ZSgp
OwotICAgIGlmICghZGVzY3JpYmVkQnkuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gZGVzY3Jp
YmVkQnk7Ci0gICAgCi0gICAgU3RyaW5nIGRlc2NyaXB0aW9uID0gYWNjZXNzaWJpbGl0eURlc2Ny
aXB0aW9uKCk7Ci0gICAgZm9yIChOb2RlKiBjdXJyID0gbm9kZTsgY3VycjsgY3VyciA9IGN1cnIt
PnBhcmVudE5vZGUoKSkgewotICAgICAgICBpZiAoY3Vyci0+aXNIVE1MRWxlbWVudCgpKSB7Ci0g
ICAgICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHN1bW1hcnkgPSB0b0VsZW1lbnQoY3Vycikt
PmdldEF0dHJpYnV0ZShzdW1tYXJ5QXR0cik7Ci0gICAgICAgICAgICBpZiAoIXN1bW1hcnkuaXNF
bXB0eSgpKQotICAgICAgICAgICAgICAgIHJldHVybiBzdW1tYXJ5OwotICAgICAgICAgICAgCi0g
ICAgICAgICAgICAvLyBUaGUgdGl0bGUgYXR0cmlidXRlIHNob3VsZCBiZSB1c2VkIGFzIGhlbHAg
dGV4dCB1bmxlc3MgaXQgaXMgYWxyZWFkeSBiZWluZyB1c2VkIGFzIGRlc2NyaXB0aXZlIHRleHQu
Ci0gICAgICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHRpdGxlID0gdG9FbGVtZW50KGN1cnIp
LT5nZXRBdHRyaWJ1dGUodGl0bGVBdHRyKTsKLSAgICAgICAgICAgIGlmICghdGl0bGUuaXNFbXB0
eSgpICYmIGRlc2NyaXB0aW9uICE9IHRpdGxlKQotICAgICAgICAgICAgICAgIHJldHVybiB0aXRs
ZTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgLy8gT25seSB0YWtlIGhlbHAgdGV4dCBm
cm9tIGFuIGFuY2VzdG9yIGVsZW1lbnQgaWYgaXRzIGEgZ3JvdXAgb3IgYW4gdW5rbm93biByb2xl
LiBJZiBoZWxwIHdhcyAKLSAgICAgICAgLy8gYWRkZWQgdG8gdGhvc2Uga2luZHMgb2YgZWxlbWVu
dHMsIGl0IGlzIGxpa2VseSBpdCB3YXMgbWVhbnQgZm9yIGEgY2hpbGQgZWxlbWVudC4KLSAgICAg
ICAgQWNjZXNzaWJpbGl0eU9iamVjdCogYXhPYmogPSBheE9iamVjdENhY2hlKCktPmdldE9yQ3Jl
YXRlKGN1cnIpOwotICAgICAgICBpZiAoYXhPYmopIHsKLSAgICAgICAgICAgIEFjY2Vzc2liaWxp
dHlSb2xlIHJvbGUgPSBheE9iai0+cm9sZVZhbHVlKCk7Ci0gICAgICAgICAgICBpZiAocm9sZSAh
PSBHcm91cFJvbGUgJiYgcm9sZSAhPSBVbmtub3duUm9sZSkKLSAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgfQotICAgIH0KLSAgICAKLSAgICByZXR1cm4gU3RyaW5nKCk7Ci19Ci0gICAg
Ci11bnNpZ25lZCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6aGllcmFyY2hpY2FsTGV2ZWwoKSBj
b25zdAotewotICAgIE5vZGUqIG5vZGUgPSB0aGlzLT5ub2RlKCk7Ci0gICAgaWYgKCFub2RlIHx8
ICFub2RlLT5pc0VsZW1lbnROb2RlKCkpCi0gICAgICAgIHJldHVybiAwOwotICAgIEVsZW1lbnQq
IGVsZW1lbnQgPSB0b0VsZW1lbnQobm9kZSk7Ci0gICAgU3RyaW5nIGFyaWFMZXZlbCA9IGVsZW1l
bnQtPmdldEF0dHJpYnV0ZShhcmlhX2xldmVsQXR0cik7Ci0gICAgaWYgKCFhcmlhTGV2ZWwuaXNF
bXB0eSgpKQotICAgICAgICByZXR1cm4gYXJpYUxldmVsLnRvSW50KCk7Ci0gICAgCi0gICAgLy8g
T25seSB0cmVlIGl0ZW0gd2lsbCBjYWxjdWxhdGUgaXRzIGxldmVsIHRocm91Z2ggdGhlIERPTSBj
dXJyZW50bHkuCi0gICAgaWYgKHJvbGVWYWx1ZSgpICE9IFRyZWVJdGVtUm9sZSkKLSAgICAgICAg
cmV0dXJuIDA7Ci0gICAgCi0gICAgLy8gSGllcmFyY2h5IGxldmVsaW5nIHN0YXJ0cyBhdCAwLgot
ICAgIC8vIFdlIG1lYXN1cmUgdHJlZSBoaWVyYXJjaHkgYnkgdGhlIG51bWJlciBvZiBncm91cHMg
dGhhdCB0aGUgaXRlbSBpcyB3aXRoaW4uCi0gICAgdW5zaWduZWQgbGV2ZWwgPSAwOwotICAgIGZv
ciAoQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gcGFyZW50T2JqZWN0KCk7IHBhcmVudDsg
cGFyZW50ID0gcGFyZW50LT5wYXJlbnRPYmplY3QoKSkgewotICAgICAgICBBY2Nlc3NpYmlsaXR5
Um9sZSBwYXJlbnRSb2xlID0gcGFyZW50LT5yb2xlVmFsdWUoKTsKLSAgICAgICAgaWYgKHBhcmVu
dFJvbGUgPT0gR3JvdXBSb2xlKQotICAgICAgICAgICAgbGV2ZWwrKzsKLSAgICAgICAgZWxzZSBp
ZiAocGFyZW50Um9sZSA9PSBUcmVlUm9sZSkKLSAgICAgICAgICAgIGJyZWFrOwotICAgIH0KLSAg
ICAKLSAgICByZXR1cm4gbGV2ZWw7Ci19Ci0KLVN0cmluZyBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVj
dDo6dGV4dFVuZGVyRWxlbWVudCgpIGNvbnN0Ci17Ci0gICAgTm9kZSogbm9kZSA9IHRoaXMtPm5v
ZGUoKTsKLSAgICBpZiAoIW5vZGUpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLQotICAgIC8v
IE5vdGU6IFRleHRJdGVyYXRvciBkb2Vzbid0IHJldHVybiBhbnkgdGV4dCBmb3Igbm9kZXMgdGhh
dCBkb24ndCBoYXZlIHJlbmRlcmVycy4KLSAgICAvLyBJZiB0aGlzIGNvdWxkIGJlIGZpeGVkLCBp
dCdkIGJlIG1vcmUgYWNjdXJhdGUgdXNlIFRleHRJdGVyYXRvciBoZXJlLgotICAgIGlmIChub2Rl
LT5pc0VsZW1lbnROb2RlKCkpCi0gICAgICAgIHJldHVybiB0b0VsZW1lbnQobm9kZSktPmlubmVy
VGV4dCgpOwotCi0gICAgcmV0dXJuIFN0cmluZygpOwotfQotCi1TdHJpbmcgQWNjZXNzaWJpbGl0
eU5vZGVPYmplY3Q6OnRpdGxlKCkgY29uc3QKLXsKLSAgICBOb2RlKiBub2RlID0gdGhpcy0+bm9k
ZSgpOwotICAgIGlmICghbm9kZSkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotCi0gICAgYm9v
bCBpc0lucHV0VGFnID0gbm9kZS0+aGFzVGFnTmFtZShpbnB1dFRhZyk7Ci0gICAgaWYgKGlzSW5w
dXRUYWcpIHsKLSAgICAgICAgSFRNTElucHV0RWxlbWVudCogaW5wdXQgPSBzdGF0aWNfY2FzdDxI
VE1MSW5wdXRFbGVtZW50Kj4obm9kZSk7Ci0gICAgICAgIGlmIChpbnB1dC0+aXNUZXh0QnV0dG9u
KCkpCi0gICAgICAgICAgICByZXR1cm4gaW5wdXQtPnZhbHVlV2l0aERlZmF1bHQoKTsKLSAgICB9
Ci0KLSAgICBpZiAoaXNJbnB1dFRhZyB8fCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0FSSUFJbnB1
dChhcmlhUm9sZUF0dHJpYnV0ZSgpKSB8fCBpc0NvbnRyb2woKSkgewotICAgICAgICBIVE1MTGFi
ZWxFbGVtZW50KiBsYWJlbCA9IGxhYmVsRm9yRWxlbWVudCh0b0VsZW1lbnQobm9kZSkpOwotICAg
ICAgICBpZiAobGFiZWwgJiYgIWV4cG9zZXNUaXRsZVVJRWxlbWVudCgpKQotICAgICAgICAgICAg
cmV0dXJuIGxhYmVsLT5pbm5lclRleHQoKTsKLSAgICB9Ci0KLSAgICAvLyBJZiB0aGlzIG5vZGUg
aXNuJ3QgcmVuZGVyZWQsIHRoZXJlJ3Mgbm8gaW5uZXIgdGV4dCB3ZSBjYW4gZXh0cmFjdCBmcm9t
IGEgc2VsZWN0IGVsZW1lbnQuCi0gICAgaWYgKCFpc0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Qo
KSAmJiBub2RlLT5oYXNUYWdOYW1lKHNlbGVjdFRhZykpCi0gICAgICAgIHJldHVybiBTdHJpbmco
KTsKLQotICAgIHN3aXRjaCAocm9sZVZhbHVlKCkpIHsKLSAgICBjYXNlIFBvcFVwQnV0dG9uUm9s
ZToKLSAgICBjYXNlIEJ1dHRvblJvbGU6Ci0gICAgY2FzZSBDaGVja0JveFJvbGU6Ci0gICAgY2Fz
ZSBMaXN0Qm94T3B0aW9uUm9sZToKLSAgICBjYXNlIE1lbnVCdXR0b25Sb2xlOgotICAgIGNhc2Ug
TWVudUl0ZW1Sb2xlOgotICAgIGNhc2UgUmFkaW9CdXR0b25Sb2xlOgotICAgIGNhc2UgVGFiUm9s
ZToKLSAgICAgICAgcmV0dXJuIHRleHRVbmRlckVsZW1lbnQoKTsKLSAgICBkZWZhdWx0OgotICAg
ICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBpZiAoaXNIZWFkaW5nKCkgfHwgaXNMaW5rKCkpCi0g
ICAgICAgIHJldHVybiB0ZXh0VW5kZXJFbGVtZW50KCk7Ci0KLSAgICAvLyBJZiBpdCdzIGZvY3Vz
YWJsZSBidXQgaXQncyBub3QgY29udGVudCBlZGl0YWJsZSBvciBhIGtub3duIGNvbnRyb2wgdHlw
ZSwgdGhlbiBpdCB3aWxsIGFwcGVhciB0byAgICAgICAgICAgICAgICAgIAotICAgIC8vIHRoZSB1
c2VyIGFzIGEgc2luZ2xlIGF0b21pYyBvYmplY3QsIHNvIHdlIHNob3VsZCB1c2UgaXRzIHRleHQg
YXMgdGhlIGRlZmF1bHQgdGl0bGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAg
aWYgKGlzR2VuZXJpY0ZvY3VzYWJsZUVsZW1lbnQoKSkKLSAgICAgICAgcmV0dXJuIHRleHRVbmRl
ckVsZW1lbnQoKTsKLQotICAgIHJldHVybiBTdHJpbmcoKTsKLX0KLQotU3RyaW5nIEFjY2Vzc2li
aWxpdHlOb2RlT2JqZWN0Ojp0ZXh0KCkgY29uc3QKLXsKLSAgICAvLyBJZiB0aGlzIGlzIGEgdXNl
ciBkZWZpbmVkIHN0YXRpYyB0ZXh0LCB1c2UgdGhlIGFjY2Vzc2libGUgbmFtZSBjb21wdXRhdGlv
bi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotICAgIGlmIChhcmlhUm9s
ZUF0dHJpYnV0ZSgpID09IFN0YXRpY1RleHRSb2xlKQotICAgICAgICByZXR1cm4gYXJpYUFjY2Vz
c2liaWxpdHlEZXNjcmlwdGlvbigpOwotCi0gICAgaWYgKCFpc1RleHRDb250cm9sKCkpCi0gICAg
ICAgIHJldHVybiBTdHJpbmcoKTsKLQotICAgIE5vZGUqIG5vZGUgPSB0aGlzLT5ub2RlKCk7Ci0g
ICAgaWYgKCFub2RlKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0KLSAgICBpZiAoaXNOYXRp
dmVUZXh0Q29udHJvbCgpKSB7Ci0gICAgICAgIGlmIChub2RlLT5oYXNUYWdOYW1lKHRleHRhcmVh
VGFnKSkKLSAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxIVE1MVGV4dEFyZWFFbGVtZW50
Kj4obm9kZSktPnZhbHVlKCk7Ci0gICAgICAgIGlmIChub2RlLT5oYXNUYWdOYW1lKGlucHV0VGFn
KSkKLSAgICAgICAgICAgIHJldHVybiBub2RlLT50b0lucHV0RWxlbWVudCgpLT52YWx1ZSgpOwot
ICAgIH0KLQotICAgIGlmICghbm9kZS0+aXNFbGVtZW50Tm9kZSgpKQotICAgICAgICByZXR1cm4g
U3RyaW5nKCk7Ci0KLSAgICByZXR1cm4gdG9FbGVtZW50KG5vZGUpLT5pbm5lclRleHQoKTsKLX0K
LQotU3RyaW5nIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjpzdHJpbmdWYWx1ZSgpIGNvbnN0Ci17
Ci0gICAgTm9kZSogbm9kZSA9IHRoaXMtPm5vZGUoKTsKLSAgICBpZiAoIW5vZGUpCi0gICAgICAg
IHJldHVybiBTdHJpbmcoKTsKLQotICAgIGlmIChhcmlhUm9sZUF0dHJpYnV0ZSgpID09IFN0YXRp
Y1RleHRSb2xlKSB7Ci0gICAgICAgIFN0cmluZyBzdGF0aWNUZXh0ID0gdGV4dCgpOwotICAgICAg
ICBpZiAoIXN0YXRpY1RleHQubGVuZ3RoKCkpCi0gICAgICAgICAgICBzdGF0aWNUZXh0ID0gdGV4
dFVuZGVyRWxlbWVudCgpOwotICAgICAgICByZXR1cm4gc3RhdGljVGV4dDsKLSAgICB9Ci0KLSAg
ICBpZiAobm9kZS0+aXNUZXh0Tm9kZSgpKQotICAgICAgICByZXR1cm4gdGV4dFVuZGVyRWxlbWVu
dCgpOwotCi0gICAgaWYgKG5vZGUtPmhhc1RhZ05hbWUoc2VsZWN0VGFnKSkgewotICAgICAgICBI
VE1MU2VsZWN0RWxlbWVudCogc2VsZWN0RWxlbWVudCA9IHRvSFRNTFNlbGVjdEVsZW1lbnQobm9k
ZSk7Ci0gICAgICAgIGludCBzZWxlY3RlZEluZGV4ID0gc2VsZWN0RWxlbWVudC0+c2VsZWN0ZWRJ
bmRleCgpOwotICAgICAgICBjb25zdCBWZWN0b3I8SFRNTEVsZW1lbnQqPiBsaXN0SXRlbXMgPSBz
ZWxlY3RFbGVtZW50LT5saXN0SXRlbXMoKTsKLSAgICAgICAgaWYgKHNlbGVjdGVkSW5kZXggPj0g
MCAmJiBzdGF0aWNfY2FzdDxzaXplX3Q+KHNlbGVjdGVkSW5kZXgpIDwgbGlzdEl0ZW1zLnNpemUo
KSkgewotICAgICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBvdmVycmlkZGVuRGVzY3JpcHRp
b24gPSBsaXN0SXRlbXNbc2VsZWN0ZWRJbmRleF0tPmZhc3RHZXRBdHRyaWJ1dGUoYXJpYV9sYWJl
bEF0dHIpOwotICAgICAgICAgICAgaWYgKCFvdmVycmlkZGVuRGVzY3JpcHRpb24uaXNOdWxsKCkp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG92ZXJyaWRkZW5EZXNjcmlwdGlvbjsKLSAgICAgICAg
fQotICAgICAgICBpZiAoIXNlbGVjdEVsZW1lbnQtPm11bHRpcGxlKCkpCi0gICAgICAgICAgICBy
ZXR1cm4gc2VsZWN0RWxlbWVudC0+dmFsdWUoKTsKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwot
ICAgIH0KLQotICAgIGlmIChpc1RleHRDb250cm9sKCkpCi0gICAgICAgIHJldHVybiB0ZXh0KCk7
Ci0KLSAgICAvLyBGSVhNRTogV2UgbWlnaHQgbmVlZCB0byBpbXBsZW1lbnQgYSB2YWx1ZSBoZXJl
IGZvciBtb3JlIHR5cGVzCi0gICAgLy8gRklYTUU6IEl0IHdvdWxkIGJlIGJldHRlciBub3QgdG8g
YWR2ZXJ0aXNlIGEgdmFsdWUgYXQgYWxsIGZvciB0aGUgdHlwZXMgZm9yIHdoaWNoIHdlIGRvbid0
IGltcGxlbWVudCBvbmU7Ci0gICAgLy8gdGhpcyB3b3VsZCByZXF1aXJlIHN1YmNsYXNzaW5nIG9y
IG1ha2luZyBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlTmFtZXMgZG8gc29tZXRoaW5nIG90aGVyIHRo
YW4gcmV0dXJuIGEKLSAgICAvLyBzaW5nbGUgc3RhdGljIGFycmF5LgotICAgIHJldHVybiBTdHJp
bmcoKTsKLX0KLQotLy8gVGhpcyBmdW5jdGlvbiBpbXBsZW1lbnRzIHRoZSBBUklBIGFjY2Vzc2li
bGUgbmFtZSBhcyBkZXNjcmliZWQgYnkgdGhlIE1vemlsbGEgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgCi0vLyBBUklBIEltcGxlbWVudGVyJ3MgR3VpZGUuICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAKLXN0YXRpYyBTdHJpbmcgYWNjZXNzaWJsZU5hbWVG
b3JOb2RlKE5vZGUqIG5vZGUpCi17Ci0gICAgaWYgKG5vZGUtPmlzVGV4dE5vZGUoKSkKLSAgICAg
ICAgcmV0dXJuIHRvVGV4dChub2RlKS0+ZGF0YSgpOwotCi0gICAgaWYgKG5vZGUtPmhhc1RhZ05h
bWUoaW5wdXRUYWcpKQotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SFRNTElucHV0RWxlbWVu
dCo+KG5vZGUpLT52YWx1ZSgpOwotCi0gICAgaWYgKG5vZGUtPmlzSFRNTEVsZW1lbnQoKSkgewot
ICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGFsdCA9IHRvSFRNTEVsZW1lbnQobm9kZSktPmdl
dEF0dHJpYnV0ZShhbHRBdHRyKTsKLSAgICAgICAgaWYgKCFhbHQuaXNFbXB0eSgpKQotICAgICAg
ICAgICAgcmV0dXJuIGFsdDsKLSAgICB9Ci0KLSAgICByZXR1cm4gU3RyaW5nKCk7Ci19Ci0KLVN0
cmluZyBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6YWNjZXNzaWJpbGl0eURlc2NyaXB0aW9uRm9y
RWxlbWVudHMoVmVjdG9yPEVsZW1lbnQqPiAmZWxlbWVudHMpIGNvbnN0Ci17Ci0gICAgU3RyaW5n
QnVpbGRlciBidWlsZGVyOwotICAgIHVuc2lnbmVkIHNpemUgPSBlbGVtZW50cy5zaXplKCk7Ci0g
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7ICsraSkgewotICAgICAgICBFbGVtZW50
KiBpZEVsZW1lbnQgPSBlbGVtZW50c1tpXTsKLQotICAgICAgICBidWlsZGVyLmFwcGVuZChhY2Nl
c3NpYmxlTmFtZUZvck5vZGUoaWRFbGVtZW50KSk7Ci0gICAgICAgIGZvciAoTm9kZSogbiA9IGlk
RWxlbWVudC0+Zmlyc3RDaGlsZCgpOyBuOyBuID0gbi0+dHJhdmVyc2VOZXh0Tm9kZShpZEVsZW1l
bnQpKQotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoYWNjZXNzaWJsZU5hbWVGb3JOb2RlKG4p
KTsKLQotICAgICAgICBpZiAoaSAhPSBzaXplIC0gMSkKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKCcgJyk7Ci0gICAgfQotICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7Ci19Ci0KLXZv
aWQgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmVsZW1lbnRzRnJvbUF0dHJpYnV0ZShWZWN0b3I8
RWxlbWVudCo+JiBlbGVtZW50cywgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlKSBjb25z
dAotewotICAgIE5vZGUqIG5vZGUgPSB0aGlzLT5ub2RlKCk7Ci0gICAgaWYgKCFub2RlIHx8ICFu
b2RlLT5pc0VsZW1lbnROb2RlKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIFRyZWVTY29wZSog
c2NvcGUgPSBub2RlLT50cmVlU2NvcGUoKTsKLSAgICBpZiAoIXNjb3BlKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBTdHJpbmcgaWRMaXN0ID0gZ2V0QXR0cmlidXRlKGF0dHJpYnV0ZSkuc3RyaW5n
KCk7Ci0gICAgaWYgKGlkTGlzdC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlk
TGlzdC5yZXBsYWNlKCdcbicsICcgJyk7Ci0gICAgVmVjdG9yPFN0cmluZz4gaWRWZWN0b3I7Ci0g
ICAgaWRMaXN0LnNwbGl0KCcgJywgaWRWZWN0b3IpOwotCi0gICAgdW5zaWduZWQgc2l6ZSA9IGlk
VmVjdG9yLnNpemUoKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7
Ci0gICAgICAgIEF0b21pY1N0cmluZyBpZE5hbWUoaWRWZWN0b3JbaV0pOwotICAgICAgICBFbGVt
ZW50KiBpZEVsZW1lbnQgPSBzY29wZS0+Z2V0RWxlbWVudEJ5SWQoaWROYW1lKTsKLSAgICAgICAg
aWYgKGlkRWxlbWVudCkKLSAgICAgICAgICAgIGVsZW1lbnRzLmFwcGVuZChpZEVsZW1lbnQpOwot
ICAgIH0KLX0KLQotCi12b2lkIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjphcmlhTGFiZWxlZEJ5
RWxlbWVudHMoVmVjdG9yPEVsZW1lbnQqPiYgZWxlbWVudHMpIGNvbnN0Ci17Ci0gICAgZWxlbWVu
dHNGcm9tQXR0cmlidXRlKGVsZW1lbnRzLCBhcmlhX2xhYmVsZWRieUF0dHIpOwotICAgIGlmICgh
ZWxlbWVudHMuc2l6ZSgpKQotICAgICAgICBlbGVtZW50c0Zyb21BdHRyaWJ1dGUoZWxlbWVudHMs
IGFyaWFfbGFiZWxsZWRieUF0dHIpOwotfQotCi0KLVN0cmluZyBBY2Nlc3NpYmlsaXR5Tm9kZU9i
amVjdDo6YXJpYUxhYmVsZWRCeUF0dHJpYnV0ZSgpIGNvbnN0Ci17Ci0gICAgVmVjdG9yPEVsZW1l
bnQqPiBlbGVtZW50czsKLSAgICBhcmlhTGFiZWxlZEJ5RWxlbWVudHMoZWxlbWVudHMpOwotCi0g
ICAgcmV0dXJuIGFjY2Vzc2liaWxpdHlEZXNjcmlwdGlvbkZvckVsZW1lbnRzKGVsZW1lbnRzKTsK
LX0KLQogYm9vbCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6Y2FuU2V0Rm9jdXNBdHRyaWJ1dGUo
KSBjb25zdAogewogICAgIE5vZGUqIG5vZGUgPSB0aGlzLT5ub2RlKCk7Ci0gICAgaWYgKCFub2Rl
KQotICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoaXNXZWJBcmVhKCkpCiAgICAgICAg
IHJldHVybiB0cnVlOwpAQCAtMTM5NSw3ICszMzYsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlOb2Rl
T2JqZWN0OjpjYW5TZXRGb2N1c0F0dHJpYnV0ZSgpIGNvbnN0CiAgICAgaWYgKCFub2RlKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAobm9kZS0+aXNFbGVtZW50Tm9kZSgpICYmICF0
b0VsZW1lbnQobm9kZSktPmlzRW5hYmxlZEZvcm1Db250cm9sKCkpCisgICAgaWYgKG5vZGUtPmlz
RWxlbWVudE5vZGUoKSAmJiAhc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG5vZGUpLT5pc0VuYWJsZWRG
b3JtQ29udHJvbCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICByZXR1cm4gbm9kZS0+
c3VwcG9ydHNGb2N1cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5oCmluZGV4IGQ2NWIxZTBiYWQ1MzUzMDE2MWNiZGVi
MmNmMWVmN2M5NTRkYWY0NDMuLmUxM2FlZDY0NTQ4M2M3NzNkYmFjNzViZjExZDVkMWU0NTMzM2Rm
YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eU5vZGVPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlOb2RlT2JqZWN0LmgKQEAgLTY4LDcxICs2OCw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1
YWwgYm9vbCBjYW52YXNIYXNGYWxsYmFja0NvbnRlbnQoKSBjb25zdDsKIAotICAgIHZpcnR1YWwg
Ym9vbCBpc0FuY2hvcigpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBpc0NvbnRyb2woKSBjb25z
dDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNGaWVsZHNldCgpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9v
bCBpc0dyb3VwKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIGlzSGVhZGluZygpIGNvbnN0Owot
ICAgIHZpcnR1YWwgYm9vbCBpc0hvdmVyZWQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNJ
bWFnZSgpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBpc0ltYWdlQnV0dG9uKCkgY29uc3Q7Ci0g
ICAgdmlydHVhbCBib29sIGlzSW5wdXRJbWFnZSgpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBp
c0xpbmsoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNNZW51KCkgY29uc3Q7Ci0gICAgdmly
dHVhbCBib29sIGlzTWVudUJhcigpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBpc01lbnVCdXR0
b24oKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNNZW51SXRlbSgpIGNvbnN0OwotICAgIHZp
cnR1YWwgYm9vbCBpc01lbnVSZWxhdGVkKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIGlzTXVs
dGlTZWxlY3RhYmxlKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIGlzTmF0aXZlQ2hlY2tib3hP
clJhZGlvKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIGlzTmF0aXZlSW1hZ2UoKSBjb25zdDsK
LSAgICB2aXJ0dWFsIGJvb2wgaXNOYXRpdmVUZXh0Q29udHJvbCgpIGNvbnN0OwotICAgIHZpcnR1
YWwgYm9vbCBpc1Bhc3N3b3JkRmllbGQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNQcm9n
cmVzc0luZGljYXRvcigpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBpc1NlYXJjaEZpZWxkKCkg
Y29uc3Q7Ci0gICAgdmlydHVhbCBib29sIGlzU2xpZGVyKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBi
b29sIGlzV2ViQXJlYSgpIGNvbnN0OwotCi0gICAgdmlydHVhbCBib29sIGlzQ2hlY2tlZCgpIGNv
bnN0OwotICAgIHZpcnR1YWwgYm9vbCBpc0VuYWJsZWQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJv
b2wgaXNJbmRldGVybWluYXRlKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIGlzUHJlc3NlZCgp
IGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBpc1JlYWRPbmx5KCkgY29uc3Q7Ci0gICAgdmlydHVh
bCBib29sIGlzUmVxdWlyZWQoKSBjb25zdDsKLQotICAgIHZvaWQgc2V0Tm9kZShOb2RlKik7Ci0g
ICAgdmlydHVhbCBOb2RlKiBub2RlKCkgY29uc3QgeyByZXR1cm4gbV9ub2RlOyB9Ci0gICAgdmly
dHVhbCBEb2N1bWVudCogZG9jdW1lbnQoKSBjb25zdDsKLQogICAgIHZpcnR1YWwgYm9vbCBjYW5T
ZXRGb2N1c0F0dHJpYnV0ZSgpIGNvbnN0OwotICAgIHZpcnR1YWwgaW50IGhlYWRpbmdMZXZlbCgp
IGNvbnN0OwotCi0gICAgdmlydHVhbCBTdHJpbmcgdmFsdWVEZXNjcmlwdGlvbigpIGNvbnN0Owot
ICAgIHZpcnR1YWwgZmxvYXQgdmFsdWVGb3JSYW5nZSgpIGNvbnN0OwotICAgIHZpcnR1YWwgZmxv
YXQgbWF4VmFsdWVGb3JSYW5nZSgpIGNvbnN0OwotICAgIHZpcnR1YWwgZmxvYXQgbWluVmFsdWVG
b3JSYW5nZSgpIGNvbnN0OwotICAgIHZpcnR1YWwgZmxvYXQgc3RlcFZhbHVlRm9yUmFuZ2UoKSBj
b25zdDsKLQotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogc2VsZWN0ZWRSYWRpb0J1
dHRvbigpOwotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogc2VsZWN0ZWRUYWJJdGVt
KCk7Ci0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5QnV0dG9uU3RhdGUgY2hlY2tib3hPclJhZGlv
VmFsdWUoKSBjb25zdDsKLQotICAgIHZpcnR1YWwgdW5zaWduZWQgaGllcmFyY2hpY2FsTGV2ZWwo
KSBjb25zdDsKLSAgICB2aXJ0dWFsIFN0cmluZyB0ZXh0VW5kZXJFbGVtZW50KCkgY29uc3Q7Ci0g
ICAgdmlydHVhbCBTdHJpbmcgYWNjZXNzaWJpbGl0eURlc2NyaXB0aW9uKCkgY29uc3Q7Ci0gICAg
dmlydHVhbCBTdHJpbmcgaGVscFRleHQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIFN0cmluZyB0aXRs
ZSgpIGNvbnN0OwotICAgIHZpcnR1YWwgU3RyaW5nIHRleHQoKSBjb25zdDsKLSAgICB2aXJ0dWFs
IFN0cmluZyBzdHJpbmdWYWx1ZSgpIGNvbnN0OwotICAgIHZpcnR1YWwgU3RyaW5nIGFyaWFMYWJl
bGVkQnlBdHRyaWJ1dGUoKSBjb25zdDsKLQotICAgIHZpcnR1YWwgRWxlbWVudCogYWN0aW9uRWxl
bWVudCgpIGNvbnN0OwotICAgIEVsZW1lbnQqIG1vdXNlQnV0dG9uTGlzdGVuZXIoKSBjb25zdDsK
LSAgICB2aXJ0dWFsIEVsZW1lbnQqIGFuY2hvckVsZW1lbnQoKSBjb25zdDsKLSAgICBBY2Nlc3Np
YmlsaXR5T2JqZWN0KiBtZW51Rm9yTWVudUJ1dHRvbigpIGNvbnN0OwotICAgCi0gICAgdmlydHVh
bCB2b2lkIGNoYW5nZVZhbHVlQnlQZXJjZW50KGZsb2F0IHBlcmNlbnRDaGFuZ2UpOwotIAorICAg
IAogICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogZmlyc3RDaGlsZCgpIGNvbnN0Owog
ICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogbGFzdENoaWxkKCkgY29uc3Q7CiAgICAg
dmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwcmV2aW91c1NpYmxpbmcoKSBjb25zdDsKQEAg
LTE0MCwxMyArNzcsMTQgQEAgcHVibGljOgogICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVj
dCogcGFyZW50T2JqZWN0KCkgY29uc3Q7CiAgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0
KiBwYXJlbnRPYmplY3RJZkV4aXN0cygpIGNvbnN0OwogCisgICAgdm9pZCBzZXROb2RlKE5vZGUq
KTsKKyAgICB2aXJ0dWFsIE5vZGUqIG5vZGUoKSBjb25zdCB7IHJldHVybiBtX25vZGU7IH0KKyAg
ICB2aXJ0dWFsIERvY3VtZW50KiBkb2N1bWVudCgpIGNvbnN0OworCiAgICAgdmlydHVhbCB2b2lk
IGRldGFjaCgpOwogICAgIHZpcnR1YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQoKTsKICAgICB2aXJ0
dWFsIHZvaWQgdXBkYXRlQWNjZXNzaWJpbGl0eVJvbGUoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBp
bmNyZW1lbnQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGVjcmVtZW50KCk7Ci0KICAgICB2aXJ0dWFs
IExheW91dFJlY3QgZWxlbWVudFJlY3QoKSBjb25zdDsKIAogcHJvdGVjdGVkOgpAQCAtMTU4LDI2
ICs5NiwxMSBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlSb2xlIGRl
dGVybWluZUFjY2Vzc2liaWxpdHlSb2xlKCk7CiAgICAgdmlydHVhbCB2b2lkIGFkZENoaWxkcmVu
KCk7Ci0gICAgdmlydHVhbCBib29sIGNhbkhhdmVDaGlsZHJlbigpIGNvbnN0OwogICAgIHZpcnR1
YWwgYm9vbCBhY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3Q7CiAgICAgQWNjZXNzaWJpbGl0
eVJvbGUgYXJpYVJvbGVBdHRyaWJ1dGUoKSBjb25zdDsKICAgICBBY2Nlc3NpYmlsaXR5Um9sZSBk
ZXRlcm1pbmVBcmlhUm9sZUF0dHJpYnV0ZSgpIGNvbnN0OwogICAgIEFjY2Vzc2liaWxpdHlSb2xl
IHJlbWFwQXJpYVJvbGVEdWVUb1BhcmVudChBY2Nlc3NpYmlsaXR5Um9sZSkgY29uc3Q7CiAgICAg
Ym9vbCBoYXNDb250ZW50RWRpdGFibGVBdHRyaWJ1dGVTZXQoKSBjb25zdDsKLSAgICBib29sIGlz
RGVzY2VuZGFudE9mQmFycmVuUGFyZW50KCkgY29uc3Q7Ci0gICAgdm9pZCBhbHRlclNsaWRlclZh
bHVlKGJvb2wgaW5jcmVhc2UpOwotICAgIHZvaWQgY2hhbmdlVmFsdWVCeVN0ZXAoYm9vbCBpbmNy
ZWFzZSk7Ci0gICAgYm9vbCBpc0FSSUFSYW5nZSgpIGNvbnN0OwotICAgIGJvb2wgaXNHZW5lcmlj
Rm9jdXNhYmxlRWxlbWVudCgpIGNvbnN0OwotICAgIEhUTUxMYWJlbEVsZW1lbnQqIGxhYmVsRm9y
RWxlbWVudChFbGVtZW50KikgY29uc3Q7Ci0gICAgU3RyaW5nIGFyaWFBY2Nlc3NpYmlsaXR5RGVz
Y3JpcHRpb24oKSBjb25zdDsKLSAgICB2b2lkIGFyaWFMYWJlbGVkQnlFbGVtZW50cyhWZWN0b3I8
RWxlbWVudCo+JiBlbGVtZW50cykgY29uc3Q7Ci0gICAgU3RyaW5nIGFjY2Vzc2liaWxpdHlEZXNj
cmlwdGlvbkZvckVsZW1lbnRzKFZlY3RvcjxFbGVtZW50Kj4gJmVsZW1lbnRzKSBjb25zdDsKLSAg
ICB2b2lkIGVsZW1lbnRzRnJvbUF0dHJpYnV0ZShWZWN0b3I8RWxlbWVudCo+JiBlbGVtZW50cywg
Y29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0OwotCi0gICAgRWxlbWVudCogbWVudUVsZW1lbnRG
b3JNZW51QnV0dG9uKCkgY29uc3Q7Ci0gICAgRWxlbWVudCogbWVudUl0ZW1FbGVtZW50Rm9yTWVu
dSgpIGNvbnN0OwotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIG1lbnVCdXR0b25Gb3JNZW51KCkg
Y29uc3Q7CiAKIHByaXZhdGU6CiAgICAgTm9kZSogbV9ub2RlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAK
aW5kZXggZjBmYjVlYTQyZWJjMmI2MjM2MzczNjVkNWUyMGE1YmFkZDNmZDMxZC4uM2NjYThlMzBj
YWJkOWE3ZGQyM2E1M2VmMWUzNDBhMjA1YWZlYzNiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCkBA
IC00NzcsNyArNDc3LDY2IEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3Q6OnBhcmVudE9iamVjdCgpIGNvbnN0CiAgICAgCiAgICAgcmV0dXJuIDA7CiB9CisK
K2Jvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aXNXZWJBcmVhKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gcm9sZVZhbHVlKCkgPT0gV2ViQXJlYVJvbGU7Cit9CisKK2Jvb2wgQWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdDo6aXNJbWFnZUJ1dHRvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIGlz
TmF0aXZlSW1hZ2UoKSAmJiByb2xlVmFsdWUoKSA9PSBCdXR0b25Sb2xlOworfQorCitib29sIEFj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmlzQW5jaG9yKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
IWlzTmF0aXZlSW1hZ2UoKSAmJiBpc0xpbmsoKTsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0Ojppc05hdGl2ZVRleHRDb250cm9sKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9y
ZW5kZXJlci0+aXNUZXh0Q29udHJvbCgpOworfQogICAgIAorYm9vbCBBY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0Ojppc1NlYXJjaEZpZWxkKCkgY29uc3QKK3sKKyAgICBpZiAoIW5vZGUoKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0RWxl
bWVudCA9IG5vZGUoKS0+dG9JbnB1dEVsZW1lbnQoKTsKKyAgICBpZiAoIWlucHV0RWxlbWVudCkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKGlucHV0RWxlbWVudC0+aXNTZWFyY2hG
aWVsZCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIC8vIFNvbWUgd2Vic2l0ZXMgZG9u
J3QgbGFiZWwgdGhlaXIgc2VhcmNoIGZpZWxkcyBhcyBzdWNoLiBIb3dldmVyLCB0aGV5IHdpbGwK
KyAgICAvLyB1c2UgdGhlIHdvcmQgInNlYXJjaCIgaW4gZWl0aGVyIHRoZSBmb3JtIG9yIGlucHV0
IHR5cGUuIFRoaXMgd29uJ3QgY2F0Y2ggZXZlcnkgY2FzZSwKKyAgICAvLyBidXQgaXQgd2lsbCBj
YXRjaCBnb29nbGUuY29tIGZvciBleGFtcGxlLgorICAgIAorICAgIC8vIENoZWNrIHRoZSBub2Rl
IG5hbWUgb2YgdGhlIGlucHV0IHR5cGUsIHNvbWV0aW1lcyBpdCdzICJzZWFyY2giLgorICAgIGNv
bnN0IEF0b21pY1N0cmluZyYgbmFtZUF0dHJpYnV0ZSA9IGdldEF0dHJpYnV0ZShuYW1lQXR0cik7
CisgICAgaWYgKG5hbWVBdHRyaWJ1dGUuY29udGFpbnMoInNlYXJjaCIsIGZhbHNlKSkKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgCisgICAgLy8gQ2hlY2sgdGhlIGZvcm0gYWN0aW9uIGFuZCB0
aGUgbmFtZSwgd2hpY2ggd2lsbCBzb21ldGltZXMgYmUgInNlYXJjaCIuCisgICAgSFRNTEZvcm1F
bGVtZW50KiBmb3JtID0gaW5wdXRFbGVtZW50LT5mb3JtKCk7CisgICAgaWYgKGZvcm0gJiYgKGZv
cm0tPm5hbWUoKS5jb250YWlucygic2VhcmNoIiwgZmFsc2UpIHx8IGZvcm0tPmFjdGlvbigpLmNv
bnRhaW5zKCJzZWFyY2giLCBmYWxzZSkpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAKKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisgICAgCitib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6
OmlzTmF0aXZlSW1hZ2UoKSBjb25zdAoreworICAgIHJldHVybiBtX3JlbmRlcmVyLT5pc0JveE1v
ZGVsT2JqZWN0KCkgJiYgdG9SZW5kZXJCb3hNb2RlbE9iamVjdChtX3JlbmRlcmVyKS0+aXNJbWFn
ZSgpOworfSAgICAKKyAgICAKK2Jvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aXNJbWFn
ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHJvbGVWYWx1ZSgpID09IEltYWdlUm9sZTsKK30KKwog
Ym9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc0F0dGFjaG1lbnQoKSBjb25zdAogewog
ICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KiByZW5kZXJlciA9IHJlbmRlckJveE1vZGVsT2JqZWN0
KCk7CkBAIC00ODksNiArNTQ4LDIxIEBAIGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6
aXNBdHRhY2htZW50KCkgY29uc3QKICAgICByZXR1cm4gaXNXaWRnZXQgJiYgYXJpYVJvbGVBdHRy
aWJ1dGUoKSA9PSBVbmtub3duUm9sZTsKIH0KIAorYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0Ojppc1Bhc3N3b3JkRmllbGQoKSBjb25zdAoreworICAgIEFTU0VSVChtX3JlbmRlcmVyKTsK
KyAgICBpZiAoIW1fcmVuZGVyZXItPm5vZGUoKSB8fCAhbV9yZW5kZXJlci0+bm9kZSgpLT5pc0hU
TUxFbGVtZW50KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoYXJpYVJvbGVBdHRy
aWJ1dGUoKSAhPSBVbmtub3duUm9sZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgSFRN
TElucHV0RWxlbWVudCogaW5wdXRFbGVtZW50ID0gbV9yZW5kZXJlci0+bm9kZSgpLT50b0lucHV0
RWxlbWVudCgpOworICAgIGlmICghaW5wdXRFbGVtZW50KQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICByZXR1cm4gaW5wdXRFbGVtZW50LT5pc1Bhc3N3b3JkRmllbGQoKTsKK30KKyAgICAK
IGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aXNGaWxlVXBsb2FkQnV0dG9uKCkgY29u
c3QKIHsKICAgICBpZiAobV9yZW5kZXJlciAmJiBtX3JlbmRlcmVyLT5ub2RlKCkgJiYgbV9yZW5k
ZXJlci0+bm9kZSgpLT5oYXNUYWdOYW1lKGlucHV0VGFnKSkgewpAQCAtNDk5LDYgKzU3MywxNDcg
QEAgYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc0ZpbGVVcGxvYWRCdXR0b24oKSBj
b25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KICAgICAKK2Jvb2wgQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdDo6aXNJbnB1dEltYWdlKCkgY29uc3QKK3sKKyAgICBOb2RlKiBlbGVtZW50Tm9kZSA9
IG5vZGUoKTsKKyAgICBpZiAocm9sZVZhbHVlKCkgPT0gQnV0dG9uUm9sZSAmJiBlbGVtZW50Tm9k
ZSAmJiBlbGVtZW50Tm9kZS0+aGFzVGFnTmFtZShpbnB1dFRhZykpIHsKKyAgICAgICAgSFRNTElu
cHV0RWxlbWVudCogaW5wdXQgPSBzdGF0aWNfY2FzdDxIVE1MSW5wdXRFbGVtZW50Kj4oZWxlbWVu
dE5vZGUpOworICAgICAgICByZXR1cm4gaW5wdXQtPmlzSW1hZ2VCdXR0b24oKTsKKyAgICB9Cisg
ICAgCisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3Q6OmlzUHJvZ3Jlc3NJbmRpY2F0b3IoKSBjb25zdAoreworICAgIHJldHVybiByb2xlVmFsdWUo
KSA9PSBQcm9ncmVzc0luZGljYXRvclJvbGU7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdDo6aXNTbGlkZXIoKSBjb25zdAoreworICAgIHJldHVybiByb2xlVmFsdWUoKSA9PSBT
bGlkZXJSb2xlOworfQorCitib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmlzTWVudVJl
bGF0ZWQoKSBjb25zdAoreworICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGUgPSByb2xlVmFsdWUo
KTsKKyAgICByZXR1cm4gcm9sZSA9PSBNZW51Um9sZSAKKyAgICAgICAgfHwgcm9sZSA9PSBNZW51
QmFyUm9sZQorICAgICAgICB8fCByb2xlID09IE1lbnVCdXR0b25Sb2xlCisgICAgICAgIHx8IHJv
bGUgPT0gTWVudUl0ZW1Sb2xlOworfSAgICAKKworYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0Ojppc01lbnUoKSBjb25zdAoreworICAgIHJldHVybiByb2xlVmFsdWUoKSA9PSBNZW51Um9s
ZTsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc01lbnVCYXIoKSBjb25z
dAoreworICAgIHJldHVybiByb2xlVmFsdWUoKSA9PSBNZW51QmFyUm9sZTsKK30KKworYm9vbCBB
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc01lbnVCdXR0b24oKSBjb25zdAoreworICAgIHJl
dHVybiByb2xlVmFsdWUoKSA9PSBNZW51QnV0dG9uUm9sZTsKK30KKworYm9vbCBBY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0Ojppc01lbnVJdGVtKCkgY29uc3QKK3sKKyAgICByZXR1cm4gcm9sZVZh
bHVlKCkgPT0gTWVudUl0ZW1Sb2xlOworfQorICAgICAKK2Jvb2wgQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdDo6aXNQcmVzc2VkKCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV9yZW5kZXJlcik7Cisg
ICAgaWYgKHJvbGVWYWx1ZSgpICE9IEJ1dHRvblJvbGUpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIE5vZGUqIG5vZGUgPSBtX3JlbmRlcmVyLT5ub2RlKCk7CisgICAgaWYgKCFub2RlKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBJZiB0aGlzIGlzIGFuIEFSSUEgYnV0dG9u
LCBjaGVjayB0aGUgYXJpYS1wcmVzc2VkIGF0dHJpYnV0ZSByYXRoZXIgdGhhbiBub2RlKCktPmFj
dGl2ZSgpCisgICAgaWYgKGFyaWFSb2xlQXR0cmlidXRlKCkgPT0gQnV0dG9uUm9sZSkgeworICAg
ICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoZ2V0QXR0cmlidXRlKGFyaWFfcHJlc3NlZEF0dHIp
LCAidHJ1ZSIpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisKKyAgICByZXR1cm4gbm9kZS0+YWN0aXZlKCk7Cit9CisKK2Jvb2wgQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdDo6aXNJbmRldGVybWluYXRlKCkgY29uc3QKK3sKKyAgICBBU1NF
UlQobV9yZW5kZXJlcik7CisgICAgaWYgKCFtX3JlbmRlcmVyLT5ub2RlKCkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCA9IG1fcmVu
ZGVyZXItPm5vZGUoKS0+dG9JbnB1dEVsZW1lbnQoKTsKKyAgICBpZiAoIWlucHV0RWxlbWVudCkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIGlucHV0RWxlbWVudC0+aXNJbmRl
dGVybWluYXRlKCk7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aXNOYXRp
dmVDaGVja2JveE9yUmFkaW8oKSBjb25zdAoreworICAgIE5vZGUqIGVsZW1lbnROb2RlID0gbm9k
ZSgpOworICAgIGlmIChlbGVtZW50Tm9kZSkgeworICAgICAgICBIVE1MSW5wdXRFbGVtZW50KiBp
bnB1dCA9IGVsZW1lbnROb2RlLT50b0lucHV0RWxlbWVudCgpOworICAgICAgICBpZiAoaW5wdXQp
CisgICAgICAgICAgICByZXR1cm4gaW5wdXQtPmlzQ2hlY2tib3goKSB8fCBpbnB1dC0+aXNSYWRp
b0J1dHRvbigpOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gZmFsc2U7Cit9CisgICAgCitib29s
IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmlzQ2hlY2tlZCgpIGNvbnN0Cit7CisgICAgQVNT
RVJUKG1fcmVuZGVyZXIpOworICAgIAorICAgIE5vZGUqIG5vZGUgPSB0aGlzLT5ub2RlKCk7Cisg
ICAgaWYgKCFub2RlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBGaXJzdCB0ZXN0
IGZvciBuYXRpdmUgY2hlY2tlZG5lc3Mgc2VtYW50aWNzCisgICAgSFRNTElucHV0RWxlbWVudCog
aW5wdXRFbGVtZW50ID0gbm9kZS0+dG9JbnB1dEVsZW1lbnQoKTsKKyAgICBpZiAoaW5wdXRFbGVt
ZW50KQorICAgICAgICByZXR1cm4gaW5wdXRFbGVtZW50LT5zaG91bGRBcHBlYXJDaGVja2VkKCk7
CisKKyAgICAvLyBFbHNlLCBpZiB0aGlzIGlzIGFuIEFSSUEgY2hlY2tib3ggb3IgcmFkaW8sIHJl
c3BlY3QgdGhlIGFyaWEtY2hlY2tlZCBhdHRyaWJ1dGUKKyAgICBBY2Nlc3NpYmlsaXR5Um9sZSBh
cmlhUm9sZSA9IGFyaWFSb2xlQXR0cmlidXRlKCk7CisgICAgaWYgKGFyaWFSb2xlID09IFJhZGlv
QnV0dG9uUm9sZSB8fCBhcmlhUm9sZSA9PSBDaGVja0JveFJvbGUpIHsKKyAgICAgICAgaWYgKGVx
dWFsSWdub3JpbmdDYXNlKGdldEF0dHJpYnV0ZShhcmlhX2NoZWNrZWRBdHRyKSwgInRydWUiKSkK
KyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
CisgICAgLy8gT3RoZXJ3aXNlIGl0J3Mgbm90IGNoZWNrZWQKKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aXNIb3ZlcmVkKCkgY29uc3QKK3sK
KyAgICBBU1NFUlQobV9yZW5kZXJlcik7CisgICAgcmV0dXJuIG1fcmVuZGVyZXItPm5vZGUoKSAm
JiBtX3JlbmRlcmVyLT5ub2RlKCktPmhvdmVyZWQoKTsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0Ojppc011bHRpU2VsZWN0YWJsZSgpIGNvbnN0Cit7CisgICAgQVNTRVJUKG1f
cmVuZGVyZXIpOworICAgIAorICAgIGNvbnN0IEF0b21pY1N0cmluZyYgYXJpYU11bHRpU2VsZWN0
YWJsZSA9IGdldEF0dHJpYnV0ZShhcmlhX211bHRpc2VsZWN0YWJsZUF0dHIpOworICAgIGlmIChl
cXVhbElnbm9yaW5nQ2FzZShhcmlhTXVsdGlTZWxlY3RhYmxlLCAidHJ1ZSIpKQorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoYXJpYU11bHRpU2VsZWN0YWJs
ZSwgImZhbHNlIikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBpZiAoIW1fcmVu
ZGVyZXItPmlzQm94TW9kZWxPYmplY3QoKSB8fCAhdG9SZW5kZXJCb3hNb2RlbE9iamVjdChtX3Jl
bmRlcmVyKS0+aXNMaXN0Qm94KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4g
bV9yZW5kZXJlci0+bm9kZSgpICYmIHRvSFRNTFNlbGVjdEVsZW1lbnQobV9yZW5kZXJlci0+bm9k
ZSgpKS0+bXVsdGlwbGUoKTsKK30KKwogYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojpp
c1JlYWRPbmx5KCkgY29uc3QKIHsKICAgICBBU1NFUlQobV9yZW5kZXJlcik7CkBAIC01MTUsNyAr
NzMwLDE1IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aXNSZWFkT25seSgpIGNv
bnN0CiAgICAgICAgIHJldHVybiAhZG9jdW1lbnQtPnJlbmRlcmVySXNFZGl0YWJsZSgpOwogICAg
IH0KIAotICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6aXNSZWFkT25seSgpOwor
ICAgIGlmIChtX3JlbmRlcmVyLT5pc0JveE1vZGVsT2JqZWN0KCkpIHsKKyAgICAgICAgUmVuZGVy
Qm94TW9kZWxPYmplY3QqIGJveCA9IHRvUmVuZGVyQm94TW9kZWxPYmplY3QobV9yZW5kZXJlcik7
CisgICAgICAgIGlmIChib3gtPmlzVGV4dEZpZWxkKCkpCisgICAgICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KGJveC0+bm9kZSgpKS0+cmVhZE9ubHkoKTsKKyAg
ICAgICAgaWYgKGJveC0+aXNUZXh0QXJlYSgpKQorICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PEhUTUxUZXh0QXJlYUVsZW1lbnQqPihib3gtPm5vZGUoKSktPnJlYWRPbmx5KCk7CisgICAg
fQorCisgICAgcmV0dXJuICFtX3JlbmRlcmVyLT5ub2RlKCkgfHwgIW1fcmVuZGVyZXItPm5vZGUo
KS0+cmVuZGVyZXJJc0VkaXRhYmxlKCk7CiB9CiAKIGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdDo6aXNPZmZTY3JlZW4oKSBjb25zdApAQCAtNTI4LDYgKzc1MSwxMDcgQEAgYm9vbCBBY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc09mZlNjcmVlbigpIGNvbnN0CiAgICAgcmV0dXJuIHZp
ZXdSZWN0LmlzRW1wdHkoKTsKIH0KIAoraW50IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6Omhl
YWRpbmdMZXZlbCgpIGNvbnN0Cit7CisgICAgLy8gaGVhZGluZ3MgY2FuIGJlIGluIGJsb2NrIGZs
b3cgYW5kIG5vbi1ibG9jayBmbG93CisgICAgTm9kZSogZWxlbWVudCA9IG5vZGUoKTsKKyAgICBp
ZiAoIWVsZW1lbnQpCisgICAgICAgIHJldHVybiAwOworCisgICAgaWYgKGFyaWFSb2xlQXR0cmli
dXRlKCkgPT0gSGVhZGluZ1JvbGUpCisgICAgICAgIHJldHVybiBnZXRBdHRyaWJ1dGUoYXJpYV9s
ZXZlbEF0dHIpLnRvSW50KCk7CisKKyAgICBpZiAoZWxlbWVudC0+aGFzVGFnTmFtZShoMVRhZykp
CisgICAgICAgIHJldHVybiAxOworICAgIAorICAgIGlmIChlbGVtZW50LT5oYXNUYWdOYW1lKGgy
VGFnKSkKKyAgICAgICAgcmV0dXJuIDI7CisgICAgCisgICAgaWYgKGVsZW1lbnQtPmhhc1RhZ05h
bWUoaDNUYWcpKQorICAgICAgICByZXR1cm4gMzsKKyAgICAKKyAgICBpZiAoZWxlbWVudC0+aGFz
VGFnTmFtZShoNFRhZykpCisgICAgICAgIHJldHVybiA0OworICAgIAorICAgIGlmIChlbGVtZW50
LT5oYXNUYWdOYW1lKGg1VGFnKSkKKyAgICAgICAgcmV0dXJuIDU7CisgICAgCisgICAgaWYgKGVs
ZW1lbnQtPmhhc1RhZ05hbWUoaDZUYWcpKQorICAgICAgICByZXR1cm4gNjsKKyAgICAKKyAgICBy
ZXR1cm4gMDsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc0hlYWRpbmco
KSBjb25zdAoreworICAgIHJldHVybiByb2xlVmFsdWUoKSA9PSBIZWFkaW5nUm9sZTsKK30KKyAg
ICAKK2Jvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aXNMaW5rKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gcm9sZVZhbHVlKCkgPT0gV2ViQ29yZUxpbmtSb2xlOworfSAgICAKKyAgICAKK2Jv
b2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aXNDb250cm9sKCkgY29uc3QKK3sKKyAgICBp
ZiAoIW1fcmVuZGVyZXIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBOb2RlKiBu
b2RlID0gbV9yZW5kZXJlci0+bm9kZSgpOworICAgIHJldHVybiBub2RlICYmICgobm9kZS0+aXNF
bGVtZW50Tm9kZSgpICYmIHN0YXRpY19jYXN0PEVsZW1lbnQqPihub2RlKS0+aXNGb3JtQ29udHJv
bEVsZW1lbnQoKSkKKyAgICAgICAgICAgICAgICAgICAgfHwgQWNjZXNzaWJpbGl0eU9iamVjdDo6
aXNBUklBQ29udHJvbChhcmlhUm9sZUF0dHJpYnV0ZSgpKSk7Cit9CisKK2Jvb2wgQWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdDo6aXNGaWVsZHNldCgpIGNvbnN0Cit7CisgICAgUmVuZGVyQm94TW9k
ZWxPYmplY3QqIHJlbmRlcmVyID0gcmVuZGVyQm94TW9kZWxPYmplY3QoKTsKKyAgICBpZiAoIXJl
bmRlcmVyKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHJlbmRlcmVyLT5pc0Zp
ZWxkc2V0KCk7Cit9CisgIAorYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc0dyb3Vw
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gcm9sZVZhbHVlKCkgPT0gR3JvdXBSb2xlOworfQorCitB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpzZWxlY3RlZFJh
ZGlvQnV0dG9uKCkKK3sKKyAgICBpZiAoIWlzUmFkaW9Hcm91cCgpKQorICAgICAgICByZXR1cm4g
MDsKKyAgICAKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5W
ZWN0b3IgY2hpbGRyZW4gPSB0aGlzLT5jaGlsZHJlbigpOworCisgICAgLy8gRmluZCB0aGUgY2hp
bGQgcmFkaW8gYnV0dG9uIHRoYXQgaXMgc2VsZWN0ZWQgKGllLiB0aGUgaW50VmFsdWUgPT0gMSku
CisgICAgc2l6ZV90IHNpemUgPSBjaGlsZHJlbi5zaXplKCk7CisgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBzaXplOyArK2kpIHsKKyAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqZWN0
ID0gY2hpbGRyZW5baV0uZ2V0KCk7CisgICAgICAgIGlmIChvYmplY3QtPnJvbGVWYWx1ZSgpID09
IFJhZGlvQnV0dG9uUm9sZSAmJiBvYmplY3QtPmNoZWNrYm94T3JSYWRpb1ZhbHVlKCkgPT0gQnV0
dG9uU3RhdGVPbikKKyAgICAgICAgICAgIHJldHVybiBvYmplY3Q7CisgICAgfQorICAgIHJldHVy
biAwOworfQorCitBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
OjpzZWxlY3RlZFRhYkl0ZW0oKQoreworICAgIGlmICghaXNUYWJMaXN0KCkpCisgICAgICAgIHJl
dHVybiAwOworICAgIAorICAgIC8vIEZpbmQgdGhlIGNoaWxkIHRhYiBpdGVtIHRoYXQgaXMgc2Vs
ZWN0ZWQgKGllLiB0aGUgaW50VmFsdWUgPT0gMSkuCisgICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6
QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIHRhYnM7CisgICAgdGFiQ2hpbGRyZW4odGFicyk7
CisgICAgCisgICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVj
dG9yIGNoaWxkcmVuID0gdGhpcy0+Y2hpbGRyZW4oKTsKKyAgICAKKyAgICBzaXplX3Qgc2l6ZSA9
IHRhYnMuc2l6ZSgpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7Cisg
ICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iamVjdCA9IGNoaWxkcmVuW2ldLmdldCgpOwor
ICAgICAgICBpZiAob2JqZWN0LT5pc1RhYkl0ZW0oKSAmJiBvYmplY3QtPmlzQ2hlY2tlZCgpKQor
ICAgICAgICAgICAgcmV0dXJuIG9iamVjdDsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKIEVs
ZW1lbnQqIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFuY2hvckVsZW1lbnQoKSBjb25zdAog
ewogICAgIGlmICghbV9yZW5kZXJlcikKQEAgLTU2MCw2ICs4ODQsMTQ1IEBAIEVsZW1lbnQqIEFj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFuY2hvckVsZW1lbnQoKSBjb25zdAogICAgIHJldHVy
biAwOwogfQogCitFbGVtZW50KiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphY3Rpb25FbGVt
ZW50KCkgY29uc3QKK3sKKyAgICBpZiAoIW1fcmVuZGVyZXIpCisgICAgICAgIHJldHVybiAwOwor
ICAgIAorICAgIE5vZGUqIG5vZGUgPSBtX3JlbmRlcmVyLT5ub2RlKCk7CisgICAgaWYgKG5vZGUp
IHsKKyAgICAgICAgaWYgKG5vZGUtPmhhc1RhZ05hbWUoaW5wdXRUYWcpKSB7CisgICAgICAgICAg
ICBIVE1MSW5wdXRFbGVtZW50KiBpbnB1dCA9IHN0YXRpY19jYXN0PEhUTUxJbnB1dEVsZW1lbnQq
Pihub2RlKTsKKyAgICAgICAgICAgIGlmICghaW5wdXQtPmRpc2FibGVkKCkgJiYgKGlzQ2hlY2ti
b3hPclJhZGlvKCkgfHwgaW5wdXQtPmlzVGV4dEJ1dHRvbigpKSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gaW5wdXQ7CisgICAgICAgIH0gZWxzZSBpZiAobm9kZS0+aGFzVGFnTmFtZShidXR0b25U
YWcpKQorICAgICAgICAgICAgcmV0dXJuIHRvRWxlbWVudChub2RlKTsKKyAgICB9CisKKyAgICBp
ZiAoaXNGaWxlVXBsb2FkQnV0dG9uKCkpCisgICAgICAgIHJldHVybiB0b0VsZW1lbnQobV9yZW5k
ZXJlci0+bm9kZSgpKTsKKyAgICAgICAgICAgIAorICAgIGlmIChBY2Nlc3NpYmlsaXR5T2JqZWN0
Ojppc0FSSUFJbnB1dChhcmlhUm9sZUF0dHJpYnV0ZSgpKSkKKyAgICAgICAgcmV0dXJuIHRvRWxl
bWVudChtX3JlbmRlcmVyLT5ub2RlKCkpOworCisgICAgaWYgKGlzSW1hZ2VCdXR0b24oKSkKKyAg
ICAgICAgcmV0dXJuIHRvRWxlbWVudChtX3JlbmRlcmVyLT5ub2RlKCkpOworICAgIAorICAgIGlm
IChtX3JlbmRlcmVyLT5pc0JveE1vZGVsT2JqZWN0KCkgJiYgdG9SZW5kZXJCb3hNb2RlbE9iamVj
dChtX3JlbmRlcmVyKS0+aXNNZW51TGlzdCgpKQorICAgICAgICByZXR1cm4gdG9FbGVtZW50KG1f
cmVuZGVyZXItPm5vZGUoKSk7CisKKyAgICBzd2l0Y2ggKHJvbGVWYWx1ZSgpKSB7CisgICAgY2Fz
ZSBCdXR0b25Sb2xlOgorICAgIGNhc2UgUG9wVXBCdXR0b25Sb2xlOgorICAgIGNhc2UgVGFiUm9s
ZToKKyAgICBjYXNlIE1lbnVJdGVtUm9sZToKKyAgICBjYXNlIExpc3RJdGVtUm9sZToKKyAgICAg
ICAgcmV0dXJuIHRvRWxlbWVudChtX3JlbmRlcmVyLT5ub2RlKCkpOyAKKyAgICBkZWZhdWx0Ogor
ICAgICAgICBicmVhazsKKyAgICB9CisgICAgCisgICAgRWxlbWVudCogZWx0ID0gYW5jaG9yRWxl
bWVudCgpOworICAgIGlmICghZWx0KQorICAgICAgICBlbHQgPSBtb3VzZUJ1dHRvbkxpc3RlbmVy
KCk7CisgICAgcmV0dXJuIGVsdDsKK30KKworRWxlbWVudCogQWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdDo6bW91c2VCdXR0b25MaXN0ZW5lcigpIGNvbnN0Cit7CisgICAgTm9kZSogbm9kZSA9IG1f
cmVuZGVyZXItPm5vZGUoKTsKKyAgICBpZiAoIW5vZGUpCisgICAgICAgIHJldHVybiAwOworICAg
IAorICAgIC8vIGNoZWNrIGlmIG91ciBwYXJlbnQgaXMgYSBtb3VzZSBidXR0b24gbGlzdGVuZXIK
KyAgICB3aGlsZSAobm9kZSAmJiAhbm9kZS0+aXNFbGVtZW50Tm9kZSgpKQorICAgICAgICBub2Rl
ID0gbm9kZS0+cGFyZW50Tm9kZSgpOworCisgICAgaWYgKCFub2RlKQorICAgICAgICByZXR1cm4g
MDsKKworICAgIC8vIEZJWE1FOiBEbyB0aGUgY29udGludWF0aW9uIHNlYXJjaCBsaWtlIGFuY2hv
ckVsZW1lbnQgZG9lcworICAgIGZvciAoRWxlbWVudCogZWxlbWVudCA9IHN0YXRpY19jYXN0PEVs
ZW1lbnQqPihub2RlKTsgZWxlbWVudDsgZWxlbWVudCA9IGVsZW1lbnQtPnBhcmVudEVsZW1lbnQo
KSkgeworICAgICAgICBpZiAoZWxlbWVudC0+Z2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVu
dE5hbWVzKCkuY2xpY2tFdmVudCkgfHwgZWxlbWVudC0+Z2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5l
cihldmVudE5hbWVzKCkubW91c2Vkb3duRXZlbnQpIHx8IGVsZW1lbnQtPmdldEF0dHJpYnV0ZUV2
ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLm1vdXNldXBFdmVudCkpCisgICAgICAgICAgICByZXR1
cm4gZWxlbWVudDsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKwordm9pZCBBY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0OjphbHRlclNsaWRlclZhbHVlKGJvb2wgaW5jcmVhc2UpCit7CisgICAg
aWYgKHJvbGVWYWx1ZSgpICE9IFNsaWRlclJvbGUpCisgICAgICAgIHJldHVybjsKKworICAgIGlm
ICghZ2V0QXR0cmlidXRlKHN0ZXBBdHRyKS5pc0VtcHR5KCkpCisgICAgICAgIGNoYW5nZVZhbHVl
QnlTdGVwKGluY3JlYXNlKTsKKyAgICBlbHNlCisgICAgICAgIGNoYW5nZVZhbHVlQnlQZXJjZW50
KGluY3JlYXNlID8gNSA6IC01KTsKK30KKyAgICAKK3ZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdDo6aW5jcmVtZW50KCkKK3sKKyAgICBhbHRlclNsaWRlclZhbHVlKHRydWUpOworfQorCit2
b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmRlY3JlbWVudCgpCit7CisgICAgYWx0ZXJT
bGlkZXJWYWx1ZShmYWxzZSk7Cit9CisKK3N0YXRpYyBFbGVtZW50KiBzaWJsaW5nV2l0aEFyaWFS
b2xlKFN0cmluZyByb2xlLCBOb2RlKiBub2RlKQoreworICAgIE5vZGUqIHNpYmxpbmcgPSBub2Rl
LT5wYXJlbnROb2RlKCktPmZpcnN0Q2hpbGQoKTsKKyAgICB3aGlsZSAoc2libGluZykgeworICAg
ICAgICBpZiAoc2libGluZy0+aXNFbGVtZW50Tm9kZSgpKSB7CisgICAgICAgICAgICBjb25zdCBB
dG9taWNTdHJpbmcmIHNpYmxpbmdBcmlhUm9sZSA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPihzaWJs
aW5nKS0+Z2V0QXR0cmlidXRlKHJvbGVBdHRyKTsKKyAgICAgICAgICAgIGlmIChlcXVhbElnbm9y
aW5nQ2FzZShzaWJsaW5nQXJpYVJvbGUsIHJvbGUpKQorICAgICAgICAgICAgICAgIHJldHVybiBz
dGF0aWNfY2FzdDxFbGVtZW50Kj4oc2libGluZyk7CisgICAgICAgIH0KKyAgICAgICAgc2libGlu
ZyA9IHNpYmxpbmctPm5leHRTaWJsaW5nKCk7CisgICAgfQorICAgIAorICAgIHJldHVybiAwOwor
fQorCitFbGVtZW50KiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjptZW51RWxlbWVudEZvck1l
bnVCdXR0b24oKSBjb25zdAoreworICAgIGlmIChhcmlhUm9sZUF0dHJpYnV0ZSgpICE9IE1lbnVC
dXR0b25Sb2xlKQorICAgICAgICByZXR1cm4gMDsKKworICAgIHJldHVybiBzaWJsaW5nV2l0aEFy
aWFSb2xlKCJtZW51IiwgcmVuZGVyZXIoKS0+bm9kZSgpKTsKK30KKworQWNjZXNzaWJpbGl0eU9i
amVjdCogQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6bWVudUZvck1lbnVCdXR0b24oKSBjb25z
dAoreworICAgIEVsZW1lbnQqIG1lbnUgPSBtZW51RWxlbWVudEZvck1lbnVCdXR0b24oKTsKKyAg
ICBpZiAobWVudSAmJiBtZW51LT5yZW5kZXJlcigpKQorICAgICAgICByZXR1cm4gYXhPYmplY3RD
YWNoZSgpLT5nZXRPckNyZWF0ZShtZW51KTsKKyAgICByZXR1cm4gMDsKK30KKworRWxlbWVudCog
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6bWVudUl0ZW1FbGVtZW50Rm9yTWVudSgpIGNvbnN0
Cit7CisgICAgaWYgKGFyaWFSb2xlQXR0cmlidXRlKCkgIT0gTWVudVJvbGUpCisgICAgICAgIHJl
dHVybiAwOworICAgIAorICAgIHJldHVybiBzaWJsaW5nV2l0aEFyaWFSb2xlKCJtZW51aXRlbSIs
IHJlbmRlcmVyKCktPm5vZGUoKSk7ICAgIAorfQorCitBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0OjptZW51QnV0dG9uRm9yTWVudSgpIGNvbnN0Cit7CisgICAg
RWxlbWVudCogbWVudUl0ZW0gPSBtZW51SXRlbUVsZW1lbnRGb3JNZW51KCk7CisKKyAgICBpZiAo
bWVudUl0ZW0gJiYgbWVudUl0ZW0tPnJlbmRlcmVyKCkpIHsKKyAgICAgICAgLy8gQVJJQSBqdXN0
IGhhcyBnZW5lcmljIG1lbnUgaXRlbXMuICBBcHBLaXQgbmVlZHMgdG8ga25vdyBpZiB0aGlzIGlz
IGEgdG9wIGxldmVsIGl0ZW1zIGxpa2UgTWVudUJhckJ1dHRvbiBvciBNZW51QmFySXRlbQorICAg
ICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBtZW51SXRlbUFYID0gYXhPYmplY3RDYWNoZSgpLT5n
ZXRPckNyZWF0ZShtZW51SXRlbSk7CisgICAgICAgIGlmIChtZW51SXRlbUFYLT5pc01lbnVCdXR0
b24oKSkKKyAgICAgICAgICAgIHJldHVybiBtZW51SXRlbUFYOworICAgIH0KKyAgICByZXR1cm4g
MDsKK30KKwogU3RyaW5nIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmhlbHBUZXh0KCkgY29u
c3QKIHsKICAgICBpZiAoIW1fcmVuZGVyZXIpCkBAIC01OTgsNiArMTA2MSw0MCBAQCBTdHJpbmcg
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aGVscFRleHQoKSBjb25zdAogICAgIAogICAgIHJl
dHVybiBTdHJpbmcoKTsKIH0KKyAgICAKK3Vuc2lnbmVkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3Q6OmhpZXJhcmNoaWNhbExldmVsKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fcmVuZGVyZXIpCisg
ICAgICAgIHJldHVybiAwOworCisgICAgTm9kZSogbm9kZSA9IG1fcmVuZGVyZXItPm5vZGUoKTsK
KyAgICBpZiAoIW5vZGUgfHwgIW5vZGUtPmlzRWxlbWVudE5vZGUoKSkKKyAgICAgICAgcmV0dXJu
IDA7CisgICAgRWxlbWVudCogZWxlbWVudCA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPihub2RlKTsK
KyAgICBTdHJpbmcgYXJpYUxldmVsID0gZWxlbWVudC0+Z2V0QXR0cmlidXRlKGFyaWFfbGV2ZWxB
dHRyKTsKKyAgICBpZiAoIWFyaWFMZXZlbC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBhcmlh
TGV2ZWwudG9JbnQoKTsKKyAgICAKKyAgICAvLyBPbmx5IHRyZWUgaXRlbSB3aWxsIGNhbGN1bGF0
ZSBpdHMgbGV2ZWwgdGhyb3VnaCB0aGUgRE9NIGN1cnJlbnRseS4KKyAgICBpZiAocm9sZVZhbHVl
KCkgIT0gVHJlZUl0ZW1Sb2xlKQorICAgICAgICByZXR1cm4gMDsKKyAgICAKKyAgICAvLyBIaWVy
YXJjaHkgbGV2ZWxpbmcgc3RhcnRzIGF0IDAuCisgICAgLy8gV2UgbWVhc3VyZSB0cmVlIGhpZXJh
cmNoeSBieSB0aGUgbnVtYmVyIG9mIGdyb3VwcyB0aGF0IHRoZSBpdGVtIGlzIHdpdGhpbi4KKyAg
ICB1bnNpZ25lZCBsZXZlbCA9IDA7CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0g
cGFyZW50T2JqZWN0KCk7CisgICAgd2hpbGUgKHBhcmVudCkgeworICAgICAgICBBY2Nlc3NpYmls
aXR5Um9sZSBwYXJlbnRSb2xlID0gcGFyZW50LT5yb2xlVmFsdWUoKTsKKyAgICAgICAgaWYgKHBh
cmVudFJvbGUgPT0gR3JvdXBSb2xlKQorICAgICAgICAgICAgbGV2ZWwrKzsKKyAgICAgICAgZWxz
ZSBpZiAocGFyZW50Um9sZSA9PSBUcmVlUm9sZSkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAKKyAgICAgICAgcGFyZW50ID0gcGFyZW50LT5wYXJlbnRPYmplY3QoKTsKKyAgICB9CisgICAg
CisgICAgcmV0dXJuIGxldmVsOworfQogCiBzdGF0aWMgVGV4dEl0ZXJhdG9yQmVoYXZpb3IgdGV4
dEl0ZXJhdG9yQmVoYXZpb3JGb3JUZXh0UmFuZ2UoKQogewpAQCAtNjQ5LDYgKzExNDYsNTkgQEAg
Tm9kZSogQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6bm9kZSgpIGNvbnN0CiAgICAgcmV0dXJu
IG1fcmVuZGVyZXIgPyBtX3JlbmRlcmVyLT5ub2RlKCkgOiAwOyAKIH0gICAgCiAgICAgCitBY2Nl
c3NpYmlsaXR5QnV0dG9uU3RhdGUgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6Y2hlY2tib3hP
clJhZGlvVmFsdWUoKSBjb25zdAoreworICAgIGlmIChpc05hdGl2ZUNoZWNrYm94T3JSYWRpbygp
KQorICAgICAgICByZXR1cm4gaXNDaGVja2VkKCkgPyBCdXR0b25TdGF0ZU9uIDogQnV0dG9uU3Rh
dGVPZmY7CisgICAgCisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmNoZWNrYm94T3JS
YWRpb1ZhbHVlKCk7Cit9CisKK1N0cmluZyBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojp2YWx1
ZURlc2NyaXB0aW9uKCkgY29uc3QKK3sKKyAgICBpZiAoIWlzQVJJQVJhbmdlKCkpCisgICAgICAg
IHJldHVybiBTdHJpbmcoKTsKKyAgICAKKyAgICByZXR1cm4gZ2V0QXR0cmlidXRlKGFyaWFfdmFs
dWV0ZXh0QXR0cikuc3RyaW5nKCk7Cit9CisgICAgCitmbG9hdCBBY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0OjpzdGVwVmFsdWVGb3JSYW5nZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGdldEF0dHJp
YnV0ZShzdGVwQXR0cikudG9GbG9hdCgpOworfQorCitib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3Q6OmlzQVJJQVJhbmdlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9hcmlhUm9sZSA9PSBQ
cm9ncmVzc0luZGljYXRvclJvbGUKKyAgICAgICAgfHwgbV9hcmlhUm9sZSA9PSBTbGlkZXJSb2xl
CisgICAgICAgIHx8IG1fYXJpYVJvbGUgPT0gU2Nyb2xsQmFyUm9sZQorICAgICAgICB8fCBtX2Fy
aWFSb2xlID09IFNwaW5CdXR0b25Sb2xlOworfQorICAgIAorZmxvYXQgQWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdDo6dmFsdWVGb3JSYW5nZSgpIGNvbnN0Cit7CisgICAgaWYgKCFpc0FSSUFSYW5n
ZSgpKQorICAgICAgICByZXR1cm4gMC4wZjsKKworICAgIHJldHVybiBnZXRBdHRyaWJ1dGUoYXJp
YV92YWx1ZW5vd0F0dHIpLnRvRmxvYXQoKTsKK30KKworZmxvYXQgQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdDo6bWF4VmFsdWVGb3JSYW5nZSgpIGNvbnN0Cit7CisgICAgaWYgKCFpc0FSSUFSYW5n
ZSgpKQorICAgICAgICByZXR1cm4gMC4wZjsKKworICAgIHJldHVybiBnZXRBdHRyaWJ1dGUoYXJp
YV92YWx1ZW1heEF0dHIpLnRvRmxvYXQoKTsKK30KKworZmxvYXQgQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdDo6bWluVmFsdWVGb3JSYW5nZSgpIGNvbnN0Cit7CisgICAgaWYgKCFpc0FSSUFSYW5n
ZSgpKQorICAgICAgICByZXR1cm4gMC4wZjsKKworICAgIHJldHVybiBnZXRBdHRyaWJ1dGUoYXJp
YV92YWx1ZW1pbkF0dHIpLnRvRmxvYXQoKTsKK30KKwogU3RyaW5nIEFjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3Q6OnN0cmluZ1ZhbHVlKCkgY29uc3QKIHsKICAgICBpZiAoIW1fcmVuZGVyZXIpCkBA
IC03MDcsNiArMTI1Nyw5OSBAQCBTdHJpbmcgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6c3Ry
aW5nVmFsdWUoKSBjb25zdAogICAgIHJldHVybiBTdHJpbmcoKTsKIH0KIAorLy8gVGhpcyBmdW5j
dGlvbiBpbXBsZW1lbnRzIHRoZSBBUklBIGFjY2Vzc2libGUgbmFtZSBhcyBkZXNjcmliZWQgYnkg
dGhlIE1vemlsbGEKKy8vIEFSSUEgSW1wbGVtZW50ZXIncyBHdWlkZS4KK3N0YXRpYyBTdHJpbmcg
YWNjZXNzaWJsZU5hbWVGb3JOb2RlKE5vZGUqIG5vZGUpCit7CisgICAgaWYgKG5vZGUtPmlzVGV4
dE5vZGUoKSkKKyAgICAgICAgcmV0dXJuIHRvVGV4dChub2RlKS0+ZGF0YSgpOworCisgICAgaWYg
KG5vZGUtPmhhc1RhZ05hbWUoaW5wdXRUYWcpKQorICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
SFRNTElucHV0RWxlbWVudCo+KG5vZGUpLT52YWx1ZSgpOworCisgICAgaWYgKG5vZGUtPmlzSFRN
TEVsZW1lbnQoKSkgeworICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGFsdCA9IHRvSFRNTEVs
ZW1lbnQobm9kZSktPmdldEF0dHJpYnV0ZShhbHRBdHRyKTsKKyAgICAgICAgaWYgKCFhbHQuaXNF
bXB0eSgpKQorICAgICAgICAgICAgcmV0dXJuIGFsdDsKKyAgICB9CisKKyAgICByZXR1cm4gU3Ry
aW5nKCk7Cit9CisKK1N0cmluZyBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphY2Nlc3NpYmls
aXR5RGVzY3JpcHRpb25Gb3JFbGVtZW50cyhWZWN0b3I8RWxlbWVudCo+ICZlbGVtZW50cykgY29u
c3QKK3sKKyAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisgICAgdW5zaWduZWQgc2l6ZSA9IGVs
ZW1lbnRzLnNpemUoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7
CisgICAgICAgIEVsZW1lbnQqIGlkRWxlbWVudCA9IGVsZW1lbnRzW2ldOworCisgICAgICAgIGJ1
aWxkZXIuYXBwZW5kKGFjY2Vzc2libGVOYW1lRm9yTm9kZShpZEVsZW1lbnQpKTsKKyAgICAgICAg
Zm9yIChOb2RlKiBuID0gaWRFbGVtZW50LT5maXJzdENoaWxkKCk7IG47IG4gPSBuLT50cmF2ZXJz
ZU5leHROb2RlKGlkRWxlbWVudCkpCisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChhY2Nlc3Np
YmxlTmFtZUZvck5vZGUobikpOworCisgICAgICAgIGlmIChpICE9IHNpemUgLSAxKQorICAgICAg
ICAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKKyAgICB9CisgICAgcmV0dXJuIGJ1aWxkZXIudG9T
dHJpbmcoKTsKK30KKwordm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjplbGVtZW50c0Zy
b21BdHRyaWJ1dGUoVmVjdG9yPEVsZW1lbnQqPiYgZWxlbWVudHMsIGNvbnN0IFF1YWxpZmllZE5h
bWUmIGF0dHJpYnV0ZSkgY29uc3QKK3sKKyAgICBOb2RlKiBub2RlID0gbV9yZW5kZXJlci0+bm9k
ZSgpOworICAgIGlmICghbm9kZSB8fCAhbm9kZS0+aXNFbGVtZW50Tm9kZSgpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBUcmVlU2NvcGUqIHNjb3BlID0gbm9kZS0+dHJlZVNjb3BlKCk7CisgICAg
aWYgKCFzY29wZSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIFN0cmluZyBpZExpc3QgPSBn
ZXRBdHRyaWJ1dGUoYXR0cmlidXRlKS5zdHJpbmcoKTsKKyAgICBpZiAoaWRMaXN0LmlzRW1wdHko
KSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIGlkTGlzdC5yZXBsYWNlKCdcbicsICcgJyk7
CisgICAgVmVjdG9yPFN0cmluZz4gaWRWZWN0b3I7CisgICAgaWRMaXN0LnNwbGl0KCcgJywgaWRW
ZWN0b3IpOworICAgIAorICAgIHVuc2lnbmVkIHNpemUgPSBpZFZlY3Rvci5zaXplKCk7CisgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7ICsraSkgeworICAgICAgICBBdG9taWNTdHJp
bmcgaWROYW1lKGlkVmVjdG9yW2ldKTsKKyAgICAgICAgRWxlbWVudCogaWRFbGVtZW50ID0gc2Nv
cGUtPmdldEVsZW1lbnRCeUlkKGlkTmFtZSk7CisgICAgICAgIGlmIChpZEVsZW1lbnQpCisgICAg
ICAgICAgICBlbGVtZW50cy5hcHBlbmQoaWRFbGVtZW50KTsKKyAgICB9Cit9CisgICAgCit2b2lk
IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFyaWFMYWJlbGVkQnlFbGVtZW50cyhWZWN0b3I8
RWxlbWVudCo+JiBlbGVtZW50cykgY29uc3QKK3sKKyAgICBlbGVtZW50c0Zyb21BdHRyaWJ1dGUo
ZWxlbWVudHMsIGFyaWFfbGFiZWxlZGJ5QXR0cik7CisgICAgaWYgKCFlbGVtZW50cy5zaXplKCkp
CisgICAgICAgIGVsZW1lbnRzRnJvbUF0dHJpYnV0ZShlbGVtZW50cywgYXJpYV9sYWJlbGxlZGJ5
QXR0cik7Cit9CisgICAKK1N0cmluZyBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphcmlhTGFi
ZWxlZEJ5QXR0cmlidXRlKCkgY29uc3QKK3sKKyAgICBWZWN0b3I8RWxlbWVudCo+IGVsZW1lbnRz
OworICAgIGFyaWFMYWJlbGVkQnlFbGVtZW50cyhlbGVtZW50cyk7CisgICAgCisgICAgcmV0dXJu
IGFjY2Vzc2liaWxpdHlEZXNjcmlwdGlvbkZvckVsZW1lbnRzKGVsZW1lbnRzKTsKK30KKworc3Rh
dGljIEhUTUxMYWJlbEVsZW1lbnQqIGxhYmVsRm9yRWxlbWVudChFbGVtZW50KiBlbGVtZW50KQor
eworICAgIFJlZlB0cjxOb2RlTGlzdD4gbGlzdCA9IGVsZW1lbnQtPmRvY3VtZW50KCktPmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJsYWJlbCIpOworICAgIHVuc2lnbmVkIGxlbiA9IGxpc3QtPmxlbmd0
aCgpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW47IGkrKykgeworICAgICAgICBp
ZiAobGlzdC0+aXRlbShpKS0+aGFzVGFnTmFtZShsYWJlbFRhZykpIHsKKyAgICAgICAgICAgIEhU
TUxMYWJlbEVsZW1lbnQqIGxhYmVsID0gc3RhdGljX2Nhc3Q8SFRNTExhYmVsRWxlbWVudCo+KGxp
c3QtPml0ZW0oaSkpOworICAgICAgICAgICAgaWYgKGxhYmVsLT5jb250cm9sKCkgPT0gZWxlbWVu
dCkKKyAgICAgICAgICAgICAgICByZXR1cm4gbGFiZWw7CisgICAgICAgIH0KKyAgICB9CisgICAg
CisgICAgcmV0dXJuIDA7Cit9CisgICAgCiBIVE1MTGFiZWxFbGVtZW50KiBBY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0OjpsYWJlbEVsZW1lbnRDb250YWluZXIoKSBjb25zdAogewogICAgIGlmICgh
bV9yZW5kZXJlcikKQEAgLTcyNSw2ICsxMzY4LDU1IEBAIEhUTUxMYWJlbEVsZW1lbnQqIEFjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3Q6OmxhYmVsRWxlbWVudENvbnRhaW5lcigpIGNvbnN0CiAgICAg
cmV0dXJuIDA7CiB9CiAKK1N0cmluZyBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojp0aXRsZSgp
IGNvbnN0Cit7CisgICAgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZSA9IHJvbGVWYWx1ZSgpOworICAg
IAorICAgIGlmICghbV9yZW5kZXJlcikKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworCisgICAg
Tm9kZSogbm9kZSA9IG1fcmVuZGVyZXItPm5vZGUoKTsKKyAgICBpZiAoIW5vZGUpCisgICAgICAg
IHJldHVybiBTdHJpbmcoKTsKKyAgICAKKyAgICBib29sIGlzSW5wdXRUYWcgPSBub2RlLT5oYXNU
YWdOYW1lKGlucHV0VGFnKTsKKyAgICBpZiAoaXNJbnB1dFRhZykgeworICAgICAgICBIVE1MSW5w
dXRFbGVtZW50KiBpbnB1dCA9IHN0YXRpY19jYXN0PEhUTUxJbnB1dEVsZW1lbnQqPihub2RlKTsK
KyAgICAgICAgaWYgKGlucHV0LT5pc1RleHRCdXR0b24oKSkKKyAgICAgICAgICAgIHJldHVybiBp
bnB1dC0+dmFsdWVXaXRoRGVmYXVsdCgpOworICAgIH0KKyAgICAKKyAgICBpZiAoaXNJbnB1dFRh
ZyB8fCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0FSSUFJbnB1dChhcmlhUm9sZUF0dHJpYnV0ZSgp
KSB8fCBpc0NvbnRyb2woKSkgeworICAgICAgICBIVE1MTGFiZWxFbGVtZW50KiBsYWJlbCA9IGxh
YmVsRm9yRWxlbWVudChzdGF0aWNfY2FzdDxFbGVtZW50Kj4obm9kZSkpOworICAgICAgICBpZiAo
bGFiZWwgJiYgIWV4cG9zZXNUaXRsZVVJRWxlbWVudCgpKQorICAgICAgICAgICAgcmV0dXJuIGxh
YmVsLT5pbm5lclRleHQoKTsKKyAgICB9CisgICAgCisgICAgc3dpdGNoIChyb2xlKSB7CisgICAg
Y2FzZSBCdXR0b25Sb2xlOgorICAgIGNhc2UgTGlzdEJveE9wdGlvblJvbGU6CisgICAgY2FzZSBN
ZW51SXRlbVJvbGU6CisgICAgY2FzZSBNZW51QnV0dG9uUm9sZToKKyAgICBjYXNlIFJhZGlvQnV0
dG9uUm9sZToKKyAgICBjYXNlIENoZWNrQm94Um9sZToKKyAgICBjYXNlIFRhYlJvbGU6CisgICAg
Y2FzZSBQb3BVcEJ1dHRvblJvbGU6CisgICAgICAgIHJldHVybiB0ZXh0VW5kZXJFbGVtZW50KCk7
CisgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgCisgICAgaWYgKGlzSGVh
ZGluZygpIHx8IGlzTGluaygpKQorICAgICAgICByZXR1cm4gdGV4dFVuZGVyRWxlbWVudCgpOwor
CisgICAgLy8gSWYgaXQncyBmb2N1c2FibGUgYnV0IGl0J3Mgbm90IGNvbnRlbnQgZWRpdGFibGUg
b3IgYSBrbm93biBjb250cm9sIHR5cGUsIHRoZW4gaXQgd2lsbCBhcHBlYXIgdG8KKyAgICAvLyB0
aGUgdXNlciBhcyBhIHNpbmdsZSBhdG9taWMgb2JqZWN0LCBzbyB3ZSBzaG91bGQgdXNlIGl0cyB0
ZXh0IGFzIHRoZSBkZWZhdWx0IHRpdGxlLgorICAgIGlmIChpc0dlbmVyaWNGb2N1c2FibGVFbGVt
ZW50KCkpCisgICAgICAgIHJldHVybiB0ZXh0VW5kZXJFbGVtZW50KCk7CisKKyAgICByZXR1cm4g
U3RyaW5nKCk7Cit9CisKIFN0cmluZyBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphcmlhRGVz
Y3JpYmVkQnlBdHRyaWJ1dGUoKSBjb25zdAogewogICAgIFZlY3RvcjxFbGVtZW50Kj4gZWxlbWVu
dHM7CkBAIC03MzMsNiArMTQyNSwxOSBAQCBTdHJpbmcgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dDo6YXJpYURlc2NyaWJlZEJ5QXR0cmlidXRlKCkgY29uc3QKICAgICByZXR1cm4gYWNjZXNzaWJp
bGl0eURlc2NyaXB0aW9uRm9yRWxlbWVudHMoZWxlbWVudHMpOwogfQogICAgIAorU3RyaW5nIEFj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFyaWFBY2Nlc3NpYmlsaXR5RGVzY3JpcHRpb24oKSBj
b25zdAoreworICAgIFN0cmluZyBhcmlhTGFiZWxlZEJ5ID0gYXJpYUxhYmVsZWRCeUF0dHJpYnV0
ZSgpOworICAgIGlmICghYXJpYUxhYmVsZWRCeS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBh
cmlhTGFiZWxlZEJ5OworCisgICAgY29uc3QgQXRvbWljU3RyaW5nJiBhcmlhTGFiZWwgPSBnZXRB
dHRyaWJ1dGUoYXJpYV9sYWJlbEF0dHIpOworICAgIGlmICghYXJpYUxhYmVsLmlzRW1wdHkoKSkK
KyAgICAgICAgcmV0dXJuIGFyaWFMYWJlbDsKKyAgICAKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9
CisKIFN0cmluZyBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojp3ZWJBcmVhQWNjZXNzaWJpbGl0
eURlc2NyaXB0aW9uKCkgY29uc3QKIHsKICAgICAvLyBUaGUgV2ViQXJlYSBkZXNjcmlwdGlvbiBz
aG91bGQgZm9sbG93IHRoaXMgb3JkZXI6CkBAIC03ODUsMTAgKzE0OTAsNDAgQEAgU3RyaW5nIEFj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFjY2Vzc2liaWxpdHlEZXNjcmlwdGlvbigpIGNvbnN0
CiAgICAgaWYgKCFtX3JlbmRlcmVyKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKKyAgICAv
LyBTdGF0aWMgdGV4dCBzaG91bGQgbm90IGhhdmUgYSBkZXNjcmlwdGlvbiwgaXQgc2hvdWxkIG9u
bHkgaGF2ZSBhIHN0cmluZ1ZhbHVlLgorICAgIGlmIChyb2xlVmFsdWUoKSA9PSBTdGF0aWNUZXh0
Um9sZSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworICAgIAorICAgIFN0cmluZyBhcmlhRGVz
Y3JpcHRpb24gPSBhcmlhQWNjZXNzaWJpbGl0eURlc2NyaXB0aW9uKCk7CisgICAgaWYgKCFhcmlh
RGVzY3JpcHRpb24uaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gYXJpYURlc2NyaXB0aW9uOwor
ICAgIAorICAgIGlmIChpc0ltYWdlKCkgfHwgaXNJbnB1dEltYWdlKCkgfHwgaXNOYXRpdmVJbWFn
ZSgpIHx8IGlzQ2FudmFzKCkpIHsKKworICAgICAgICAvLyBJbWFnZXMgc2hvdWxkIHVzZSBhbHQg
YXMgbG9uZyBhcyB0aGUgYXR0cmlidXRlIGlzIHByZXNlbnQsIGV2ZW4gaWYgZW1wdHkuCisgICAg
ICAgIC8vIE90aGVyd2lzZSwgaXQgc2hvdWxkIGZhbGxiYWNrIHRvIG90aGVyIG1ldGhvZHMsIGxp
a2UgdGhlIHRpdGxlIGF0dHJpYnV0ZS4KKyAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBhbHQg
PSBnZXRBdHRyaWJ1dGUoYWx0QXR0cik7CisgICAgICAgIGlmICghYWx0LmlzTnVsbCgpKQorICAg
ICAgICAgICAgcmV0dXJuIGFsdDsKKyAgICB9CisgICAgCisjaWYgRU5BQkxFKE1BVEhNTCkKKyAg
ICBOb2RlKiBub2RlID0gbV9yZW5kZXJlci0+bm9kZSgpOworICAgIGlmIChub2RlICYmIG5vZGUt
PmlzRWxlbWVudE5vZGUoKSAmJiBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obm9kZSktPmlzTWF0aE1M
RWxlbWVudCgpKQorICAgICAgICByZXR1cm4gZ2V0QXR0cmlidXRlKE1hdGhNTE5hbWVzOjphbHR0
ZXh0QXR0cik7CisjZW5kaWYKKyAgICAKICAgICBpZiAoaXNXZWJBcmVhKCkpCiAgICAgICAgIHJl
dHVybiB3ZWJBcmVhQWNjZXNzaWJpbGl0eURlc2NyaXB0aW9uKCk7Ci0KLSAgICByZXR1cm4gQWNj
ZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmFjY2Vzc2liaWxpdHlEZXNjcmlwdGlvbigpOworICAgIAor
ICAgIC8vIEFuIGVsZW1lbnQncyBkZXNjcmlwdGl2ZSB0ZXh0IGlzIGNvbXByaXNlZCBvZiB0aXRs
ZSgpICh3aGF0J3MgdmlzaWJsZSBvbiB0aGUgc2NyZWVuKSBhbmQgYWNjZXNzaWJpbGl0eURlc2Ny
aXB0aW9uKCkgKG90aGVyIGRlc2NyaXB0aXZlIHRleHQpLgorICAgIC8vIEJvdGggYXJlIHVzZWQg
dG8gZ2VuZXJhdGUgd2hhdCBhIHNjcmVlbiByZWFkZXIgc3BlYWtzLgorICAgIC8vIElmIHRoaXMg
cG9pbnQgaXMgcmVhY2hlZCAoaS5lLiB0aGVyZSdzIG5vIGFjY2Vzc2liaWxpdHlEZXNjcmlwdGlv
bikgYW5kIHRoZXJlJ3Mgbm8gdGl0bGUoKSwgd2Ugc2hvdWxkIGZhbGxiYWNrIHRvIHVzaW5nIHRo
ZSB0aXRsZSBhdHRyaWJ1dGUuCisgICAgLy8gVGhlIHRpdGxlIGF0dHJpYnV0ZSBpcyBub3JtYWxs
eSB1c2VkIGFzIGhlbHAgdGV4dCAoYmVjYXVzZSBpdCBpcyBhIHRvb2x0aXApLCBidXQgaWYgdGhl
cmUgaXMgbm90aGluZyBlbHNlIGF2YWlsYWJsZSwgdGhpcyBzaG91bGQgYmUgdXNlZCAoYWNjb3Jk
aW5nIHRvIEFSSUEpLgorICAgIGlmICh0aXRsZSgpLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJu
IGdldEF0dHJpYnV0ZSh0aXRsZUF0dHIpOworICAgIAorICAgIHJldHVybiBTdHJpbmcoKTsKIH0K
IAogTGF5b3V0UmVjdCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojpib3VuZGluZ0JveFJlY3Qo
KSBjb25zdApAQCAtMTA3NSw2ICsxODEwLDE2IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdDo6YXJpYUlzSGlkZGVuKCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK2Jvb2wg
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aXNEZXNjZW5kYW50T2ZCYXJyZW5QYXJlbnQoKSBj
b25zdAoreworICAgIGZvciAoQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqZWN0ID0gcGFyZW50T2Jq
ZWN0KCk7IG9iamVjdDsgb2JqZWN0ID0gb2JqZWN0LT5wYXJlbnRPYmplY3QoKSkgeworICAgICAg
ICBpZiAoIW9iamVjdC0+Y2FuSGF2ZUNoaWxkcmVuKCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIGZhbHNlOworfQorICAgIAogYm9vbCBBY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0Ojppc0FsbG93ZWRDaGlsZE9mVHJlZSgpIGNvbnN0CiB7CiAgICAg
Ly8gRGV0ZXJtaW5lIGlmIHRoaXMgaXMgaW4gYSB0cmVlLiBJZiBzbywgd2UgYXBwbHkgc3BlY2lh
bCBiZWhhdmlvciB0byBtYWtlIGl0IHdvcmsgbGlrZSBhbiBBWE91dGxpbmUuCkBAIC0xMzE0LDEw
ICsyMDU5LDI3IEBAIGludCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpsYXlvdXRDb3VudCgp
IGNvbnN0CiAKIFN0cmluZyBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojp0ZXh0KCkgY29uc3QK
IHsKKyAgICAvLyBJZiB0aGlzIGlzIGEgdXNlciBkZWZpbmVkIHN0YXRpYyB0ZXh0LCB1c2UgdGhl
IGFjY2Vzc2libGUgbmFtZSBjb21wdXRhdGlvbi4KKyAgICBpZiAoYXJpYVJvbGVBdHRyaWJ1dGUo
KSA9PSBTdGF0aWNUZXh0Um9sZSkKKyAgICAgICAgcmV0dXJuIGFyaWFBY2Nlc3NpYmlsaXR5RGVz
Y3JpcHRpb24oKTsKKyAgICAKKyAgICBpZiAoIWlzVGV4dENvbnRyb2woKSkKKyAgICAgICAgcmV0
dXJuIFN0cmluZygpOworCiAgICAgaWYgKGlzUGFzc3dvcmRGaWVsZCgpKQogICAgICAgICByZXR1
cm4gcGFzc3dvcmRGaWVsZFZhbHVlKCk7CiAKLSAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU5vZGVP
YmplY3Q6OnRleHQoKTsKKyAgICBOb2RlKiBub2RlID0gbV9yZW5kZXJlci0+bm9kZSgpOworICAg
IGlmICghbm9kZSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworCisgICAgaWYgKGlzTmF0aXZl
VGV4dENvbnRyb2woKSkKKyAgICAgICAgcmV0dXJuIHRvUmVuZGVyVGV4dENvbnRyb2wobV9yZW5k
ZXJlciktPnRleHRGb3JtQ29udHJvbEVsZW1lbnQoKS0+dmFsdWUoKTsKKworICAgIGlmICghbm9k
ZS0+aXNFbGVtZW50Tm9kZSgpKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgCisgICAg
cmV0dXJuIHN0YXRpY19jYXN0PEVsZW1lbnQqPihub2RlKS0+aW5uZXJUZXh0KCk7CiB9CiAgICAg
CiBpbnQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6dGV4dExlbmd0aCgpIGNvbnN0CkBAIC0x
NDc1LDYgKzIyMzcsMTggQEAgYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjplbGVtZW50
QXR0cmlidXRlVmFsdWUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmkKICAgICByZXR1cm4gZXF1
YWxJZ25vcmluZ0Nhc2UoZ2V0QXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpLCAidHJ1ZSIpOwogfQog
ICAgIAorYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc1JlcXVpcmVkKCkgY29uc3QK
K3sKKyAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoZ2V0QXR0cmlidXRlKGFyaWFfcmVxdWlyZWRB
dHRyKSwgInRydWUiKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgCisgICAgTm9kZSogbiA9
IG5vZGUoKTsKKyAgICBpZiAobiAmJiAobi0+aXNFbGVtZW50Tm9kZSgpICYmIHN0YXRpY19jYXN0
PEVsZW1lbnQqPihuKS0+aXNGb3JtQ29udHJvbEVsZW1lbnQoKSkpCisgICAgICAgIHJldHVybiBz
dGF0aWNfY2FzdDxIVE1MRm9ybUNvbnRyb2xFbGVtZW50Kj4obiktPnJlcXVpcmVkKCk7CisgICAg
CisgICAgcmV0dXJuIGZhbHNlOworfQorCiBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6
OmlzU2VsZWN0ZWQoKSBjb25zdAogewogICAgIGlmICghbV9yZW5kZXJlcikKQEAgLTE1NzEsNiAr
MjM0NSwyOSBAQCB2b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnNldEZvY3VzZWQoYm9v
bCBvbikKICAgICB9CiB9CiAKK3ZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6Y2hhbmdl
VmFsdWVCeVN0ZXAoYm9vbCBpbmNyZWFzZSkKK3sKKyAgICBmbG9hdCBzdGVwID0gc3RlcFZhbHVl
Rm9yUmFuZ2UoKTsKKyAgICBmbG9hdCB2YWx1ZSA9IHZhbHVlRm9yUmFuZ2UoKTsKKyAgICAKKyAg
ICB2YWx1ZSArPSBpbmNyZWFzZSA/IHN0ZXAgOiAtc3RlcDsKKworICAgIHNldFZhbHVlKFN0cmlu
Zzo6bnVtYmVyKHZhbHVlKSk7CisgICAgCisgICAgYXhPYmplY3RDYWNoZSgpLT5wb3N0Tm90aWZp
Y2F0aW9uKG1fcmVuZGVyZXIsIEFYT2JqZWN0Q2FjaGU6OkFYVmFsdWVDaGFuZ2VkLCB0cnVlKTsK
K30KKyAgICAKK3ZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6Y2hhbmdlVmFsdWVCeVBl
cmNlbnQoZmxvYXQgcGVyY2VudENoYW5nZSkKK3sKKyAgICBmbG9hdCByYW5nZSA9IG1heFZhbHVl
Rm9yUmFuZ2UoKSAtIG1pblZhbHVlRm9yUmFuZ2UoKTsKKyAgICBmbG9hdCB2YWx1ZSA9IHZhbHVl
Rm9yUmFuZ2UoKTsKKyAgICAKKyAgICB2YWx1ZSArPSByYW5nZSAqIChwZXJjZW50Q2hhbmdlIC8g
MTAwKTsKKyAgICBzZXRWYWx1ZShTdHJpbmc6Om51bWJlcih2YWx1ZSkpOworICAgIAorICAgIGF4
T2JqZWN0Q2FjaGUoKS0+cG9zdE5vdGlmaWNhdGlvbihtX3JlbmRlcmVyLCBBWE9iamVjdENhY2hl
OjpBWFZhbHVlQ2hhbmdlZCwgdHJ1ZSk7Cit9CisKIHZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdDo6c2V0U2VsZWN0ZWRSb3dzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgc2VsZWN0
ZWRSb3dzKQogewogICAgIC8vIFNldHRpbmcgc2VsZWN0ZWQgb25seSBtYWtlcyBzZW5zZSBpbiB0
cmVlcyBhbmQgdGFibGVzIChhbmQgdHJlZS10YWJsZXMpLgpAQCAtMTYzMCw2ICsyNDI3LDIwIEBA
IGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6c3VwcG9ydHNBUklBT3ducygpIGNvbnN0
CiAgICAgcmV0dXJuICFhcmlhT3ducy5pc0VtcHR5KCk7CiB9CiAgICAgCitib29sIEFjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3Q6OmlzRW5hYmxlZCgpIGNvbnN0Cit7CisgICAgQVNTRVJUKG1fcmVu
ZGVyZXIpOworICAgIAorICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShnZXRBdHRyaWJ1dGUoYXJp
YV9kaXNhYmxlZEF0dHIpLCAidHJ1ZSIpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisg
ICAgTm9kZSogbm9kZSA9IG1fcmVuZGVyZXItPm5vZGUoKTsKKyAgICBpZiAoIW5vZGUgfHwgIW5v
ZGUtPmlzRWxlbWVudE5vZGUoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8RWxlbWVudCo+KG5vZGUpLT5pc0VuYWJsZWRGb3JtQ29udHJvbCgpOworfQor
CiBSZW5kZXJWaWV3KiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojp0b3BSZW5kZXJlcigpIGNv
bnN0CiB7CiAgICAgRG9jdW1lbnQqIHRvcERvYyA9IHRvcERvY3VtZW50KCk7CkBAIC0yMzI3LDYg
KzMxMzgsMzUgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc0Rlc2NlbmRhbnRP
ZkVsZW1lbnRUeXBlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHQKICAgICByZXR1cm4gZmFsc2U7CiB9
CiAKK2Jvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aXNHZW5lcmljRm9jdXNhYmxlRWxl
bWVudCgpIGNvbnN0Cit7CisgICAgaWYgKCFjYW5TZXRGb2N1c0F0dHJpYnV0ZSgpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBJZiBpdCdzIGEgY29udHJvbCwgaXQncyBub3QgZ2Vu
ZXJpYy4KKyAgICBpZiAoaXNDb250cm9sKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IC8vIElmIGl0IGhhcyBhbiBhcmlhIHJvbGUsIGl0J3Mgbm90IGdlbmVyaWMuCisgICAgaWYgKG1f
YXJpYVJvbGUgIT0gVW5rbm93blJvbGUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8v
IElmIHRoZSBjb250ZW50IGVkaXRhYmxlIGF0dHJpYnV0ZSBpcyBzZXQgb24gdGhpcyBlbGVtZW50
LCB0aGF0J3MgdGhlIHJlYXNvbgorICAgIC8vIGl0J3MgZm9jdXNhYmxlLCBhbmQgZXhpc3Rpbmcg
bG9naWMgc2hvdWxkIGhhbmRsZSB0aGlzIGNhc2UgYWxyZWFkeSAtIHNvIGl0J3Mgbm90IGEKKyAg
ICAvLyBnZW5lcmljIGZvY3VzYWJsZSBlbGVtZW50LgorICAgIGlmIChoYXNDb250ZW50RWRpdGFi
bGVBdHRyaWJ1dGVTZXQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gVGhlIHdl
YiBhcmVhIGFuZCBib2R5IGVsZW1lbnQgYXJlIGJvdGggZm9jdXNhYmxlLCBidXQgZXhpc3Rpbmcg
bG9naWMgaGFuZGxlcyB0aGVzZQorICAgIC8vIGNhc2VzIGFscmVhZHksIHNvIHdlIGRvbid0IG5l
ZWQgdG8gaW5jbHVkZSB0aGVtIGhlcmUuCisgICAgaWYgKHJvbGVWYWx1ZSgpID09IFdlYkFyZWFS
b2xlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKG5vZGUoKSAmJiBub2RlKCktPmhh
c1RhZ05hbWUoYm9keVRhZykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiB0
cnVlOworfQorICAgIAogQWNjZXNzaWJpbGl0eVJvbGUgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dDo6ZGV0ZXJtaW5lQWNjZXNzaWJpbGl0eVJvbGUoKQogewogICAgIGlmICghbV9yZW5kZXJlcikK
QEAgLTI1OTcsNiArMzQzNywyOCBAQCB2b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmNv
bnRlbnRDaGFuZ2VkKCkKICAgICAgICAgICAgIGNhY2hlLT5wb3N0Tm90aWZpY2F0aW9uKHJlbmRl
clBhcmVudCwgQVhPYmplY3RDYWNoZTo6QVhWYWx1ZUNoYW5nZWQsIHRydWUpOwogICAgIH0KIH0K
KyAgICAKK2Jvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6Y2FuSGF2ZUNoaWxkcmVuKCkg
Y29uc3QKK3sKKyAgICBpZiAoIW1fcmVuZGVyZXIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAKKyAgICAvLyBFbGVtZW50cyB0aGF0IHNob3VsZCBub3QgaGF2ZSBjaGlsZHJlbgorICAgIHN3
aXRjaCAocm9sZVZhbHVlKCkpIHsKKyAgICBjYXNlIEltYWdlUm9sZToKKyAgICBjYXNlIEJ1dHRv
blJvbGU6CisgICAgY2FzZSBQb3BVcEJ1dHRvblJvbGU6CisgICAgY2FzZSBDaGVja0JveFJvbGU6
CisgICAgY2FzZSBSYWRpb0J1dHRvblJvbGU6CisgICAgY2FzZSBUYWJSb2xlOgorICAgIGNhc2Ug
U3RhdGljVGV4dFJvbGU6CisgICAgY2FzZSBMaXN0Qm94T3B0aW9uUm9sZToKKyAgICBjYXNlIFNj
cm9sbEJhclJvbGU6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBkZWZhdWx0OgorICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICB9Cit9CiAKIHZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dDo6Y2xlYXJDaGlsZHJlbigpCiB7CkBAIC0yNzM0LDE1ICszNTk2LDcgQEAgdm9pZCBBY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0OjphZGRDaGlsZHJlbigpCiAgICAgdXBkYXRlQXR0YWNobWVudFZp
ZXdQYXJlbnRzKCk7CiAjZW5kaWYKIH0KLQotYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
OjpjYW5IYXZlQ2hpbGRyZW4oKSBjb25zdAotewotICAgIGlmICghbV9yZW5kZXJlcikKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojpj
YW5IYXZlQ2hpbGRyZW4oKTsKLX0KLQorICAgICAgICAKIGNvbnN0IEF0b21pY1N0cmluZyYgQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YXJpYUxpdmVSZWdpb25TdGF0dXMoKSBjb25zdAogewog
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBsaXZlUmVnaW9uU3Rh
dHVzQXNzZXJ0aXZlLCAoImFzc2VydGl2ZSIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgKaW5kZXggMDIyZDYw
YjQ1ZWFkYWEyNzNlY2Q1NTczY2IyMmVjNWZjMWU5NGZkMS4uMDc0YzYxN2FkNjgzY2U3YzAwY2Iz
NTIwMDM0NzNmMzNlMTk1OGYxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgKQEAgLTY2LDE2ICs2Niw0NCBA
QCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgaW5pdCgpOwogICAgIAorICAgIHZpcnR1YWwg
Ym9vbCBpc0FuY2hvcigpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBpc0F0dGFjaG1lbnQoKSBj
b25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNIZWFkaW5nKCkgY29uc3Q7CisgICAgdmlydHVhbCBi
b29sIGlzTGluaygpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBpc0ltYWdlQnV0dG9uKCkgY29u
c3Q7CisgICAgdmlydHVhbCBib29sIGlzSW1hZ2UoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wg
aXNOYXRpdmVJbWFnZSgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBpc1Bhc3N3b3JkRmllbGQo
KSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNOYXRpdmVUZXh0Q29udHJvbCgpIGNvbnN0Owor
ICAgIHZpcnR1YWwgYm9vbCBpc1NlYXJjaEZpZWxkKCkgY29uc3Q7CisgICAgdmlydHVhbCBib29s
IGlzV2ViQXJlYSgpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBpc0ZpbGVVcGxvYWRCdXR0b24o
KSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNJbnB1dEltYWdlKCkgY29uc3Q7CisgICAgdmly
dHVhbCBib29sIGlzUHJvZ3Jlc3NJbmRpY2F0b3IoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wg
aXNTbGlkZXIoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNZW51UmVsYXRlZCgpIGNvbnN0
OworICAgIHZpcnR1YWwgYm9vbCBpc01lbnUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNN
ZW51QmFyKCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGlzTWVudUJ1dHRvbigpIGNvbnN0Owor
ICAgIHZpcnR1YWwgYm9vbCBpc01lbnVJdGVtKCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGlz
Q29udHJvbCgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBpc0ZpZWxkc2V0KCkgY29uc3Q7Cisg
ICAgdmlydHVhbCBib29sIGlzR3JvdXAoKSBjb25zdDsKIAorICAgIHZpcnR1YWwgYm9vbCBpc0Vu
YWJsZWQoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgaXNTZWxlY3RlZCgpIGNvbnN0OwogICAg
IHZpcnR1YWwgYm9vbCBpc0ZvY3VzZWQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNDaGVj
a2VkKCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGlzSG92ZXJlZCgpIGNvbnN0OworICAgIHZp
cnR1YWwgYm9vbCBpc0luZGV0ZXJtaW5hdGUoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgaXNM
b2FkZWQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNdWx0aVNlbGVjdGFibGUoKSBjb25z
dDsKICAgICB2aXJ0dWFsIGJvb2wgaXNPZmZTY3JlZW4oKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJv
b2wgaXNQcmVzc2VkKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIGlzUmVhZE9ubHkoKSBjb25z
dDsKICAgICB2aXJ0dWFsIGJvb2wgaXNVbnZpc2l0ZWQoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJv
b2wgaXNWaXNpdGVkKCkgY29uc3Q7ICAgICAgICAKKyAgICB2aXJ0dWFsIGJvb2wgaXNSZXF1aXJl
ZCgpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBpc0xpbmtlZCgpIGNvbnN0OwogICAgIHZpcnR1
YWwgYm9vbCBoYXNCb2xkRm9udCgpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBoYXNJdGFsaWNG
b250KCkgY29uc3Q7CkBAIC05NSw2ICsxMjMsMTUgQEAgcHVibGljOgogICAgIEFjY2Vzc2liaWxp
dHlPYmplY3RJbmNsdXNpb24gYWNjZXNzaWJpbGl0eUlzSWdub3JlZEJhc2UoKSBjb25zdDsKICAg
ICB2aXJ0dWFsIGJvb2wgYWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0OwogICAgIAorICAg
IHZpcnR1YWwgaW50IGhlYWRpbmdMZXZlbCgpIGNvbnN0OworICAgIHZpcnR1YWwgQWNjZXNzaWJp
bGl0eUJ1dHRvblN0YXRlIGNoZWNrYm94T3JSYWRpb1ZhbHVlKCkgY29uc3Q7CisgICAgdmlydHVh
bCBTdHJpbmcgdmFsdWVEZXNjcmlwdGlvbigpIGNvbnN0OworICAgIHZpcnR1YWwgZmxvYXQgdmFs
dWVGb3JSYW5nZSgpIGNvbnN0OworICAgIHZpcnR1YWwgZmxvYXQgbWF4VmFsdWVGb3JSYW5nZSgp
IGNvbnN0OworICAgIHZpcnR1YWwgZmxvYXQgbWluVmFsdWVGb3JSYW5nZSgpIGNvbnN0OworICAg
IHZpcnR1YWwgZmxvYXQgc3RlcFZhbHVlRm9yUmFuZ2UoKSBjb25zdDsKKyAgICB2aXJ0dWFsIEFj
Y2Vzc2liaWxpdHlPYmplY3QqIHNlbGVjdGVkUmFkaW9CdXR0b24oKTsKKyAgICB2aXJ0dWFsIEFj
Y2Vzc2liaWxpdHlPYmplY3QqIHNlbGVjdGVkVGFiSXRlbSgpOwogICAgIHZpcnR1YWwgaW50IGxh
eW91dENvdW50KCkgY29uc3Q7CiAgICAgdmlydHVhbCBkb3VibGUgZXN0aW1hdGVkTG9hZGluZ1By
b2dyZXNzKCkgY29uc3Q7CiAgICAgCkBAIC0xMTksOCArMTU2LDEyIEBAIHB1YmxpYzoKICAgICAv
LyBTaG91bGQgYmUgY2FsbGVkIG9uIHRoZSByb290IGFjY2Vzc2liaWxpdHkgb2JqZWN0IHRvIGtp
Y2sgb2ZmIGEgaGl0IHRlc3QuCiAgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBhY2Nl
c3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYpIGNvbnN0OwogCisgICAgdmlydHVhbCBF
bGVtZW50KiBhY3Rpb25FbGVtZW50KCkgY29uc3Q7CisgICAgRWxlbWVudCogbW91c2VCdXR0b25M
aXN0ZW5lcigpIGNvbnN0OwogICAgIEZyYW1lVmlldyogZnJhbWVWaWV3SWZSZW5kZXJWaWV3KCkg
Y29uc3Q7CiAgICAgdmlydHVhbCBFbGVtZW50KiBhbmNob3JFbGVtZW50KCkgY29uc3Q7CisgICAg
QWNjZXNzaWJpbGl0eU9iamVjdCogbWVudUZvck1lbnVCdXR0b24oKSBjb25zdDsKKyAgICBBY2Nl
c3NpYmlsaXR5T2JqZWN0KiBtZW51QnV0dG9uRm9yTWVudSgpIGNvbnN0OwogICAgIAogICAgIHZp
cnR1YWwgTGF5b3V0UmVjdCBib3VuZGluZ0JveFJlY3QoKSBjb25zdDsKICAgICB2aXJ0dWFsIExh
eW91dFJlY3QgZWxlbWVudFJlY3QoKSBjb25zdDsKQEAgLTE0Myw2ICsxODQsOCBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCBQbGFpblRleHRSYW5nZSBzZWxlY3RlZFRleHRSYW5nZSgpIGNvbnN0Owog
ICAgIHZpcnR1YWwgVmlzaWJsZVNlbGVjdGlvbiBzZWxlY3Rpb24oKSBjb25zdDsKICAgICB2aXJ0
dWFsIFN0cmluZyBzdHJpbmdWYWx1ZSgpIGNvbnN0OworICAgIHZpcnR1YWwgU3RyaW5nIGFyaWFM
YWJlbGVkQnlBdHRyaWJ1dGUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIFN0cmluZyB0aXRsZSgpIGNv
bnN0OwogICAgIHZpcnR1YWwgU3RyaW5nIGFyaWFEZXNjcmliZWRCeUF0dHJpYnV0ZSgpIGNvbnN0
OwogICAgIHZpcnR1YWwgU3RyaW5nIGFjY2Vzc2liaWxpdHlEZXNjcmlwdGlvbigpIGNvbnN0Owog
ICAgIHZpcnR1YWwgU3RyaW5nIGhlbHBUZXh0KCkgY29uc3Q7CkBAIC0xNTYsNiArMTk5LDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgV2lkZ2V0KiB3aWRnZXRGb3JBdHRhY2htZW50VmlldygpIGNv
bnN0OwogICAgIHZpcnR1YWwgdm9pZCBnZXREb2N1bWVudExpbmtzKEFjY2Vzc2liaWxpdHlDaGls
ZHJlblZlY3RvciYpOwogICAgIHZpcnR1YWwgRnJhbWVWaWV3KiBkb2N1bWVudEZyYW1lVmlldygp
IGNvbnN0OworICAgIHZpcnR1YWwgdW5zaWduZWQgaGllcmFyY2hpY2FsTGV2ZWwoKSBjb25zdDsK
IAogICAgIHZpcnR1YWwgdm9pZCBjbGVhckNoaWxkcmVuKCk7CiAgICAgdmlydHVhbCB2b2lkIHVw
ZGF0ZUNoaWxkcmVuSWZOZWNlc3NhcnkoKTsKQEAgLTE2NCw3ICsyMDgsMTAgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBzZXRTZWxlY3RlZFRleHRSYW5nZShjb25zdCBQbGFpblRleHRSYW5n
ZSYpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRWYWx1ZShjb25zdCBTdHJpbmcmKTsKICAgICB2aXJ0
dWFsIHZvaWQgc2V0U2VsZWN0ZWRSb3dzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpOwor
ICAgIHZpcnR1YWwgdm9pZCBjaGFuZ2VWYWx1ZUJ5UGVyY2VudChmbG9hdCBwZXJjZW50Q2hhbmdl
KTsKICAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPcmllbnRhdGlvbiBvcmllbnRhdGlvbigpIGNv
bnN0OworICAgIHZpcnR1YWwgdm9pZCBpbmNyZW1lbnQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVj
cmVtZW50KCk7CiAgICAgCiAgICAgdmlydHVhbCB2b2lkIGRldGFjaCgpOwogICAgIHZpcnR1YWwg
dm9pZCBjb250ZW50Q2hhbmdlZCgpOwpAQCAtMjE2LDYgKzI2Myw3IEBAIHByb3RlY3RlZDoKICAg
ICBSZW5kZXJPYmplY3QqIG1fcmVuZGVyZXI7CiAgICAgCiAgICAgdm9pZCBzZXRSZW5kZXJPYmpl
Y3QoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikgeyBtX3JlbmRlcmVyID0gcmVuZGVyZXI7IH0KKyAg
ICB2b2lkIGFyaWFMYWJlbGVkQnlFbGVtZW50cyhWZWN0b3I8RWxlbWVudCo+JiBlbGVtZW50cykg
Y29uc3Q7CiAgICAgYm9vbCBuZWVkc1RvVXBkYXRlQ2hpbGRyZW4oKSBjb25zdCB7IHJldHVybiBt
X2NoaWxkcmVuRGlydHk7IH0KICAgICBTY3JvbGxhYmxlQXJlYSogZ2V0U2Nyb2xsYWJsZUFyZWFJ
ZlNjcm9sbGFibGUoKSBjb25zdDsKICAgICB2b2lkIHNjcm9sbFRvKGNvbnN0IEludFBvaW50Jikg
Y29uc3Q7CkBAIC0yMjgsNiArMjc2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGFyaWFMaXN0Ym94
U2VsZWN0ZWRDaGlsZHJlbihBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKTsKICAgICB2b2lk
IGFyaWFMaXN0Ym94VmlzaWJsZUNoaWxkcmVuKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYp
OwogICAgIGJvb2wgYXJpYUlzSGlkZGVuKCkgY29uc3Q7CisgICAgYm9vbCBpc0Rlc2NlbmRhbnRP
ZkJhcnJlblBhcmVudCgpIGNvbnN0OwogICAgIGJvb2wgaXNBbGxvd2VkQ2hpbGRPZlRyZWUoKSBj
b25zdDsKICAgICBib29sIGhhc1RleHRBbHRlcm5hdGl2ZSgpIGNvbnN0OwogICAgIFN0cmluZyBw
b3NpdGlvbmFsRGVzY3JpcHRpb25Gb3JNU0FBKCkgY29uc3Q7CkBAIC0yMzYsNyArMjg1LDEzIEBA
IHByaXZhdGU6CiAgICAgYm9vbCBub2RlSXNUZXh0Q29udHJvbChjb25zdCBOb2RlKikgY29uc3Q7
CiAgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzVG9VcGRhdGVDaGlsZHJlbigpIHsgbV9jaGlsZHJl
bkRpcnR5ID0gdHJ1ZTsgfQogCisgICAgRWxlbWVudCogbWVudUVsZW1lbnRGb3JNZW51QnV0dG9u
KCkgY29uc3Q7CisgICAgRWxlbWVudCogbWVudUl0ZW1FbGVtZW50Rm9yTWVudSgpIGNvbnN0Owor
CiAgICAgYm9vbCBpc1RhYkl0ZW1TZWxlY3RlZCgpIGNvbnN0OworICAgIHZvaWQgYWx0ZXJTbGlk
ZXJWYWx1ZShib29sIGluY3JlYXNlKTsKKyAgICB2b2lkIGNoYW5nZVZhbHVlQnlTdGVwKGJvb2wg
aW5jcmVhc2UpOworICAgIGJvb2wgaXNOYXRpdmVDaGVja2JveE9yUmFkaW8oKSBjb25zdDsKICAg
ICBMYXlvdXRSZWN0IGNoZWNrYm94T3JSYWRpb1JlY3QoKSBjb25zdDsKICAgICB2b2lkIGFkZFJh
ZGlvQnV0dG9uR3JvdXBNZW1iZXJzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgbGlua2Vk
VUlFbGVtZW50cykgY29uc3Q7CiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogaW50ZXJuYWxMaW5r
RWxlbWVudCgpIGNvbnN0OwpAQCAtMjQ2LDYgKzMwMSw4IEBAIHByaXZhdGU6CiAgICAgUmVuZGVy
T2JqZWN0KiByZW5kZXJQYXJlbnRPYmplY3QoKSBjb25zdDsKICAgICBib29sIGlzRGVzY2VuZGFu
dE9mRWxlbWVudFR5cGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSkgY29uc3Q7CiAgICAg
Ly8gVGhpcyByZXR1cm5zIHRydWUgaWYgaXQncyBmb2N1c2FibGUgYnV0IGl0J3Mgbm90IGNvbnRl
bnQgZWRpdGFibGUgYW5kIGl0J3Mgbm90IGEgY29udHJvbCBvciBBUklBIGNvbnRyb2wuCisgICAg
Ym9vbCBpc0dlbmVyaWNGb2N1c2FibGVFbGVtZW50KCkgY29uc3Q7CisgICAgYm9vbCBpc0FSSUFS
YW5nZSgpIGNvbnN0OwogCiAgICAgdm9pZCBhZGRUZXh0RmllbGRDaGlsZHJlbigpOwogICAgIHZv
aWQgYWRkSW1hZ2VNYXBDaGlsZHJlbigpOwpAQCAtMjYwLDYgKzMxNyw5IEBAIHByaXZhdGU6CiAg
ICAgYm9vbCBlbGVtZW50QXR0cmlidXRlVmFsdWUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0
OwogICAgIHZvaWQgc2V0RWxlbWVudEF0dHJpYnV0ZVZhbHVlKGNvbnN0IFF1YWxpZmllZE5hbWUm
LCBib29sKTsKICAgICAKKyAgICBTdHJpbmcgYWNjZXNzaWJpbGl0eURlc2NyaXB0aW9uRm9yRWxl
bWVudHMoVmVjdG9yPEVsZW1lbnQqPiAmZWxlbWVudHMpIGNvbnN0OworICAgIHZvaWQgZWxlbWVu
dHNGcm9tQXR0cmlidXRlKFZlY3RvcjxFbGVtZW50Kj4mIGVsZW1lbnRzLCBjb25zdCBRdWFsaWZp
ZWROYW1lJikgY29uc3Q7CisgICAgU3RyaW5nIGFyaWFBY2Nlc3NpYmlsaXR5RGVzY3JpcHRpb24o
KSBjb25zdDsKICAgICBTdHJpbmcgd2ViQXJlYUFjY2Vzc2liaWxpdHlEZXNjcmlwdGlvbigpIGNv
bnN0OwogCiAgICAgdmlydHVhbCBFU3BlYWsgc3BlYWtQcm9wZXJ0eSgpIGNvbnN0OwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4
IGUyYWZhNzU2ZmU4MTQyOGNjMDMxN2Q5OTM0YmFhMDBjY2ZlZDg5M2UuLmMxY2FiODczNGIzMGYx
NzFmMzY1YjlmYTRmMmYxMGQ0MjFmMjEzYTUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMi0w
OS0xMiAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CisKKyAgICAg
ICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEyODMxOCBhbmQgcjEyODMzMi4KKyAgICAgICAg
aHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTI4MzE4CisgICAgICAgIGh0dHA6Ly90
cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzEyODMzMgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTY1NDcKKworICAgICAgICBDYXVzZWQgYWNjZXNzaWJp
bGl0eSB0ZXN0IGZhaWx1cmVzIG9uIHNub3cgbGVvcGFyZCAoUmVxdWVzdGVkCisgICAgICAgIGJ5
IGphbWVzcl8gb24gI3dlYmtpdCkuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2NhbnZhcy1m
YWxsYmFjay1jb250ZW50LTItZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIGFjY2Vz
c2liaWxpdHkvY2FudmFzLWZhbGxiYWNrLWNvbnRlbnQtMi5odG1sOiBSZW1vdmVkLgorCiAyMDEy
LTA5LTEyICBBbGV4IFNha2hhcnRjaG91ayAgPGFsZXhzdEBjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgW2Nocm9taXVtXSBBZGQgYSB2aXJ0dWFsIHRlc3Qgc3VpdGUgZm9yIGZhc3QvaGlkcGkKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvY2FudmFzLWZhbGxiYWNrLWNvbnRl
bnQtMi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2NhbnZhcy1mYWxs
YmFjay1jb250ZW50LTItZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA0YjI4NDZjMmQ2ZGFhZWFiMTFiY2M3NjgxZDQ5OTlhZTgxNWQyODBhLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxp
dHkvY2FudmFzLWZhbGxiYWNrLWNvbnRlbnQtMi1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApA
QCAtMSwzNzYgKzAsMCBAQAotTGluayAgQnV0dG9uICBCdXR0b24gIEJ1dHRvbiAgICAgICAgICAg
ICAgICAgCi1Gb2N1c2FibGUKLUhlYWRpbmcKLQotQVJJQSBidXR0b24KLUFSSUEgZGlzYWJsZWQg
YnV0dG9uCi1BUklBIGVuYWJsZWQgYnV0dG9uCi1BUklBIHJlcXVpcmVkIGJ1dHRvbgotQVJJQSB0
b2dnbGUgYnV0dG9uCi1BUklBIGxpbmsKLVRoaXMgdGVzdHMgYSBudW1iZXIgb2YgZGlmZmVyZW50
IGVsZW1lbnRzIGluIGNhbnZhcyBmYWxsYmFjayBjb250ZW50IHRvIG1ha2Ugc3VyZSB0aGVpciBh
Y2Nlc3NpYmxlIGF0dHJpYnV0ZXMgYXJlIGVzc2VudGlhbGx5IGlkZW50aWNhbCB0byB0aGUgY29y
cmVzcG9uZGluZyBlbGVtZW50cyBvdXRzaWRlIG9mIGNhbnZhcyBmYWxsYmFjayBjb250ZW50Lgot
Ci1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBm
b2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCi0KLQotbGluazEKLVBBU1MgZG9jdW1lbnQuYWN0
aXZlRWxlbWVudCA9PSBlbGVtZW50MSBpcyB0cnVlCi1saW5rMgotUEFTUyBkb2N1bWVudC5hY3Rp
dmVFbGVtZW50ID09IGVsZW1lbnQyIGlzIHRydWUKLVBBU1MgYXhFbGVtZW50Mi5yb2xlIGlzIGF4
RWxlbWVudDEucm9sZQotUEFTUyBheEVsZW1lbnQyLnJvbGVEZXNjcmlwdGlvbiBpcyBheEVsZW1l
bnQxLnJvbGVEZXNjcmlwdGlvbgotUEFTUyBheEVsZW1lbnQyLnRpdGxlIGlzIGF4RWxlbWVudDEu
dGl0bGUKLVBBU1MgYXhFbGVtZW50Mi5kZXNjcmlwdGlvbiBpcyBheEVsZW1lbnQxLmRlc2NyaXB0
aW9uCi1QQVNTIGF4RWxlbWVudDIuaGVscFRleHQgaXMgYXhFbGVtZW50MS5oZWxwVGV4dAotUEFT
UyBheEVsZW1lbnQyLnN0cmluZ1ZhbHVlIGlzIGF4RWxlbWVudDEuc3RyaW5nVmFsdWUKLVBBU1Mg
YXhFbGVtZW50Mi5pc0VuYWJsZWQgaXMgYXhFbGVtZW50MS5pc0VuYWJsZWQKLVBBU1MgYXhFbGVt
ZW50Mi5pc1JlcXVpcmVkIGlzIGF4RWxlbWVudDEuaXNSZXF1aXJlZAotUEFTUyBheEVsZW1lbnQy
LmlzQ2hlY2tlZCBpcyBheEVsZW1lbnQxLmlzQ2hlY2tlZAotUEFTUyBheEVsZW1lbnQyLmludFZh
bHVlIGlzIGF4RWxlbWVudDEuaW50VmFsdWUKLVBBU1MgYXhFbGVtZW50Mi5taW5WYWx1ZSBpcyBh
eEVsZW1lbnQxLm1pblZhbHVlCi1QQVNTIGF4RWxlbWVudDIubWF4VmFsdWUgaXMgYXhFbGVtZW50
MS5tYXhWYWx1ZQotCi1idXR0b24xCi1QQVNTIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT0gZWxl
bWVudDEgaXMgdHJ1ZQotYnV0dG9uMgotUEFTUyBkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09IGVs
ZW1lbnQyIGlzIHRydWUKLVBBU1MgYXhFbGVtZW50Mi5yb2xlIGlzIGF4RWxlbWVudDEucm9sZQot
UEFTUyBheEVsZW1lbnQyLnJvbGVEZXNjcmlwdGlvbiBpcyBheEVsZW1lbnQxLnJvbGVEZXNjcmlw
dGlvbgotUEFTUyBheEVsZW1lbnQyLnRpdGxlIGlzIGF4RWxlbWVudDEudGl0bGUKLVBBU1MgYXhF
bGVtZW50Mi5kZXNjcmlwdGlvbiBpcyBheEVsZW1lbnQxLmRlc2NyaXB0aW9uCi1QQVNTIGF4RWxl
bWVudDIuaGVscFRleHQgaXMgYXhFbGVtZW50MS5oZWxwVGV4dAotUEFTUyBheEVsZW1lbnQyLnN0
cmluZ1ZhbHVlIGlzIGF4RWxlbWVudDEuc3RyaW5nVmFsdWUKLVBBU1MgYXhFbGVtZW50Mi5pc0Vu
YWJsZWQgaXMgYXhFbGVtZW50MS5pc0VuYWJsZWQKLVBBU1MgYXhFbGVtZW50Mi5pc1JlcXVpcmVk
IGlzIGF4RWxlbWVudDEuaXNSZXF1aXJlZAotUEFTUyBheEVsZW1lbnQyLmlzQ2hlY2tlZCBpcyBh
eEVsZW1lbnQxLmlzQ2hlY2tlZAotUEFTUyBheEVsZW1lbnQyLmludFZhbHVlIGlzIGF4RWxlbWVu
dDEuaW50VmFsdWUKLVBBU1MgYXhFbGVtZW50Mi5taW5WYWx1ZSBpcyBheEVsZW1lbnQxLm1pblZh
bHVlCi1QQVNTIGF4RWxlbWVudDIubWF4VmFsdWUgaXMgYXhFbGVtZW50MS5tYXhWYWx1ZQotCi1s
YWJlbGVkLWJ1dHRvbjEKLVBBU1MgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PSBlbGVtZW50MSBp
cyB0cnVlCi1sYWJlbGVkLWJ1dHRvbjIKLVBBU1MgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PSBl
bGVtZW50MiBpcyB0cnVlCi1QQVNTIGF4RWxlbWVudDIucm9sZSBpcyBheEVsZW1lbnQxLnJvbGUK
LVBBU1MgYXhFbGVtZW50Mi5yb2xlRGVzY3JpcHRpb24gaXMgYXhFbGVtZW50MS5yb2xlRGVzY3Jp
cHRpb24KLVBBU1MgYXhFbGVtZW50Mi50aXRsZSBpcyBheEVsZW1lbnQxLnRpdGxlCi1QQVNTIGF4
RWxlbWVudDIuZGVzY3JpcHRpb24gaXMgYXhFbGVtZW50MS5kZXNjcmlwdGlvbgotUEFTUyBheEVs
ZW1lbnQyLmhlbHBUZXh0IGlzIGF4RWxlbWVudDEuaGVscFRleHQKLVBBU1MgYXhFbGVtZW50Mi5z
dHJpbmdWYWx1ZSBpcyBheEVsZW1lbnQxLnN0cmluZ1ZhbHVlCi1QQVNTIGF4RWxlbWVudDIuaXNF
bmFibGVkIGlzIGF4RWxlbWVudDEuaXNFbmFibGVkCi1QQVNTIGF4RWxlbWVudDIuaXNSZXF1aXJl
ZCBpcyBheEVsZW1lbnQxLmlzUmVxdWlyZWQKLVBBU1MgYXhFbGVtZW50Mi5pc0NoZWNrZWQgaXMg
YXhFbGVtZW50MS5pc0NoZWNrZWQKLVBBU1MgYXhFbGVtZW50Mi5pbnRWYWx1ZSBpcyBheEVsZW1l
bnQxLmludFZhbHVlCi1QQVNTIGF4RWxlbWVudDIubWluVmFsdWUgaXMgYXhFbGVtZW50MS5taW5W
YWx1ZQotUEFTUyBheEVsZW1lbnQyLm1heFZhbHVlIGlzIGF4RWxlbWVudDEubWF4VmFsdWUKLQot
YnV0dG9uLXdpdGgtdGl0bGUxCi1QQVNTIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT0gZWxlbWVu
dDEgaXMgdHJ1ZQotYnV0dG9uLXdpdGgtdGl0bGUyCi1QQVNTIGRvY3VtZW50LmFjdGl2ZUVsZW1l
bnQgPT0gZWxlbWVudDIgaXMgdHJ1ZQotUEFTUyBheEVsZW1lbnQyLnJvbGUgaXMgYXhFbGVtZW50
MS5yb2xlCi1QQVNTIGF4RWxlbWVudDIucm9sZURlc2NyaXB0aW9uIGlzIGF4RWxlbWVudDEucm9s
ZURlc2NyaXB0aW9uCi1QQVNTIGF4RWxlbWVudDIudGl0bGUgaXMgYXhFbGVtZW50MS50aXRsZQot
UEFTUyBheEVsZW1lbnQyLmRlc2NyaXB0aW9uIGlzIGF4RWxlbWVudDEuZGVzY3JpcHRpb24KLVBB
U1MgYXhFbGVtZW50Mi5oZWxwVGV4dCBpcyBheEVsZW1lbnQxLmhlbHBUZXh0Ci1QQVNTIGF4RWxl
bWVudDIuc3RyaW5nVmFsdWUgaXMgYXhFbGVtZW50MS5zdHJpbmdWYWx1ZQotUEFTUyBheEVsZW1l
bnQyLmlzRW5hYmxlZCBpcyBheEVsZW1lbnQxLmlzRW5hYmxlZAotUEFTUyBheEVsZW1lbnQyLmlz
UmVxdWlyZWQgaXMgYXhFbGVtZW50MS5pc1JlcXVpcmVkCi1QQVNTIGF4RWxlbWVudDIuaXNDaGVj
a2VkIGlzIGF4RWxlbWVudDEuaXNDaGVja2VkCi1QQVNTIGF4RWxlbWVudDIuaW50VmFsdWUgaXMg
YXhFbGVtZW50MS5pbnRWYWx1ZQotUEFTUyBheEVsZW1lbnQyLm1pblZhbHVlIGlzIGF4RWxlbWVu
dDEubWluVmFsdWUKLVBBU1MgYXhFbGVtZW50Mi5tYXhWYWx1ZSBpcyBheEVsZW1lbnQxLm1heFZh
bHVlCi0KLXRleHQxCi1QQVNTIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT0gZWxlbWVudDEgaXMg
dHJ1ZQotdGV4dDIKLVBBU1MgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PSBlbGVtZW50MiBpcyB0
cnVlCi1QQVNTIGF4RWxlbWVudDIucm9sZSBpcyBheEVsZW1lbnQxLnJvbGUKLVBBU1MgYXhFbGVt
ZW50Mi5yb2xlRGVzY3JpcHRpb24gaXMgYXhFbGVtZW50MS5yb2xlRGVzY3JpcHRpb24KLVBBU1Mg
YXhFbGVtZW50Mi50aXRsZSBpcyBheEVsZW1lbnQxLnRpdGxlCi1QQVNTIGF4RWxlbWVudDIuZGVz
Y3JpcHRpb24gaXMgYXhFbGVtZW50MS5kZXNjcmlwdGlvbgotUEFTUyBheEVsZW1lbnQyLmhlbHBU
ZXh0IGlzIGF4RWxlbWVudDEuaGVscFRleHQKLVBBU1MgYXhFbGVtZW50Mi5zdHJpbmdWYWx1ZSBp
cyBheEVsZW1lbnQxLnN0cmluZ1ZhbHVlCi1QQVNTIGF4RWxlbWVudDIuaXNFbmFibGVkIGlzIGF4
RWxlbWVudDEuaXNFbmFibGVkCi1QQVNTIGF4RWxlbWVudDIuaXNSZXF1aXJlZCBpcyBheEVsZW1l
bnQxLmlzUmVxdWlyZWQKLVBBU1MgYXhFbGVtZW50Mi5pc0NoZWNrZWQgaXMgYXhFbGVtZW50MS5p
c0NoZWNrZWQKLVBBU1MgYXhFbGVtZW50Mi5pbnRWYWx1ZSBpcyBheEVsZW1lbnQxLmludFZhbHVl
Ci1QQVNTIGF4RWxlbWVudDIubWluVmFsdWUgaXMgYXhFbGVtZW50MS5taW5WYWx1ZQotUEFTUyBh
eEVsZW1lbnQyLm1heFZhbHVlIGlzIGF4RWxlbWVudDEubWF4VmFsdWUKLQotY2hlY2tib3gxCi1Q
QVNTIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT0gZWxlbWVudDEgaXMgdHJ1ZQotY2hlY2tib3gy
Ci1QQVNTIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT0gZWxlbWVudDIgaXMgdHJ1ZQotUEFTUyBh
eEVsZW1lbnQyLnJvbGUgaXMgYXhFbGVtZW50MS5yb2xlCi1QQVNTIGF4RWxlbWVudDIucm9sZURl
c2NyaXB0aW9uIGlzIGF4RWxlbWVudDEucm9sZURlc2NyaXB0aW9uCi1QQVNTIGF4RWxlbWVudDIu
dGl0bGUgaXMgYXhFbGVtZW50MS50aXRsZQotUEFTUyBheEVsZW1lbnQyLmRlc2NyaXB0aW9uIGlz
IGF4RWxlbWVudDEuZGVzY3JpcHRpb24KLVBBU1MgYXhFbGVtZW50Mi5oZWxwVGV4dCBpcyBheEVs
ZW1lbnQxLmhlbHBUZXh0Ci1QQVNTIGF4RWxlbWVudDIuc3RyaW5nVmFsdWUgaXMgYXhFbGVtZW50
MS5zdHJpbmdWYWx1ZQotUEFTUyBheEVsZW1lbnQyLmlzRW5hYmxlZCBpcyBheEVsZW1lbnQxLmlz
RW5hYmxlZAotUEFTUyBheEVsZW1lbnQyLmlzUmVxdWlyZWQgaXMgYXhFbGVtZW50MS5pc1JlcXVp
cmVkCi1QQVNTIGF4RWxlbWVudDIuaXNDaGVja2VkIGlzIGF4RWxlbWVudDEuaXNDaGVja2VkCi1Q
QVNTIGF4RWxlbWVudDIuaW50VmFsdWUgaXMgYXhFbGVtZW50MS5pbnRWYWx1ZQotUEFTUyBheEVs
ZW1lbnQyLm1pblZhbHVlIGlzIGF4RWxlbWVudDEubWluVmFsdWUKLVBBU1MgYXhFbGVtZW50Mi5t
YXhWYWx1ZSBpcyBheEVsZW1lbnQxLm1heFZhbHVlCi0KLW51bWJlcjEKLVBBU1MgZG9jdW1lbnQu
YWN0aXZlRWxlbWVudCA9PSBlbGVtZW50MSBpcyB0cnVlCi1udW1iZXIyCi1QQVNTIGRvY3VtZW50
LmFjdGl2ZUVsZW1lbnQgPT0gZWxlbWVudDIgaXMgdHJ1ZQotUEFTUyBheEVsZW1lbnQyLnJvbGUg
aXMgYXhFbGVtZW50MS5yb2xlCi1QQVNTIGF4RWxlbWVudDIucm9sZURlc2NyaXB0aW9uIGlzIGF4
RWxlbWVudDEucm9sZURlc2NyaXB0aW9uCi1QQVNTIGF4RWxlbWVudDIudGl0bGUgaXMgYXhFbGVt
ZW50MS50aXRsZQotUEFTUyBheEVsZW1lbnQyLmRlc2NyaXB0aW9uIGlzIGF4RWxlbWVudDEuZGVz
Y3JpcHRpb24KLVBBU1MgYXhFbGVtZW50Mi5oZWxwVGV4dCBpcyBheEVsZW1lbnQxLmhlbHBUZXh0
Ci1QQVNTIGF4RWxlbWVudDIuc3RyaW5nVmFsdWUgaXMgYXhFbGVtZW50MS5zdHJpbmdWYWx1ZQot
UEFTUyBheEVsZW1lbnQyLmlzRW5hYmxlZCBpcyBheEVsZW1lbnQxLmlzRW5hYmxlZAotUEFTUyBh
eEVsZW1lbnQyLmlzUmVxdWlyZWQgaXMgYXhFbGVtZW50MS5pc1JlcXVpcmVkCi1QQVNTIGF4RWxl
bWVudDIuaXNDaGVja2VkIGlzIGF4RWxlbWVudDEuaXNDaGVja2VkCi1QQVNTIGF4RWxlbWVudDIu
aW50VmFsdWUgaXMgYXhFbGVtZW50MS5pbnRWYWx1ZQotUEFTUyBheEVsZW1lbnQyLm1pblZhbHVl
IGlzIGF4RWxlbWVudDEubWluVmFsdWUKLVBBU1MgYXhFbGVtZW50Mi5tYXhWYWx1ZSBpcyBheEVs
ZW1lbnQxLm1heFZhbHVlCi0KLXJhZGlvMQotUEFTUyBkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09
IGVsZW1lbnQxIGlzIHRydWUKLXJhZGlvMgotUEFTUyBkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09
IGVsZW1lbnQyIGlzIHRydWUKLVBBU1MgYXhFbGVtZW50Mi5yb2xlIGlzIGF4RWxlbWVudDEucm9s
ZQotUEFTUyBheEVsZW1lbnQyLnJvbGVEZXNjcmlwdGlvbiBpcyBheEVsZW1lbnQxLnJvbGVEZXNj
cmlwdGlvbgotUEFTUyBheEVsZW1lbnQyLnRpdGxlIGlzIGF4RWxlbWVudDEudGl0bGUKLVBBU1Mg
YXhFbGVtZW50Mi5kZXNjcmlwdGlvbiBpcyBheEVsZW1lbnQxLmRlc2NyaXB0aW9uCi1QQVNTIGF4
RWxlbWVudDIuaGVscFRleHQgaXMgYXhFbGVtZW50MS5oZWxwVGV4dAotUEFTUyBheEVsZW1lbnQy
LnN0cmluZ1ZhbHVlIGlzIGF4RWxlbWVudDEuc3RyaW5nVmFsdWUKLVBBU1MgYXhFbGVtZW50Mi5p
c0VuYWJsZWQgaXMgYXhFbGVtZW50MS5pc0VuYWJsZWQKLVBBU1MgYXhFbGVtZW50Mi5pc1JlcXVp
cmVkIGlzIGF4RWxlbWVudDEuaXNSZXF1aXJlZAotUEFTUyBheEVsZW1lbnQyLmlzQ2hlY2tlZCBp
cyBheEVsZW1lbnQxLmlzQ2hlY2tlZAotUEFTUyBheEVsZW1lbnQyLmludFZhbHVlIGlzIGF4RWxl
bWVudDEuaW50VmFsdWUKLVBBU1MgYXhFbGVtZW50Mi5taW5WYWx1ZSBpcyBheEVsZW1lbnQxLm1p
blZhbHVlCi1QQVNTIGF4RWxlbWVudDIubWF4VmFsdWUgaXMgYXhFbGVtZW50MS5tYXhWYWx1ZQot
Ci1zbGlkZXIxCi1QQVNTIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT0gZWxlbWVudDEgaXMgdHJ1
ZQotc2xpZGVyMgotUEFTUyBkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09IGVsZW1lbnQyIGlzIHRy
dWUKLVBBU1MgYXhFbGVtZW50Mi5yb2xlIGlzIGF4RWxlbWVudDEucm9sZQotUEFTUyBheEVsZW1l
bnQyLnJvbGVEZXNjcmlwdGlvbiBpcyBheEVsZW1lbnQxLnJvbGVEZXNjcmlwdGlvbgotUEFTUyBh
eEVsZW1lbnQyLnRpdGxlIGlzIGF4RWxlbWVudDEudGl0bGUKLVBBU1MgYXhFbGVtZW50Mi5kZXNj
cmlwdGlvbiBpcyBheEVsZW1lbnQxLmRlc2NyaXB0aW9uCi1QQVNTIGF4RWxlbWVudDIuaGVscFRl
eHQgaXMgYXhFbGVtZW50MS5oZWxwVGV4dAotUEFTUyBheEVsZW1lbnQyLnN0cmluZ1ZhbHVlIGlz
IGF4RWxlbWVudDEuc3RyaW5nVmFsdWUKLVBBU1MgYXhFbGVtZW50Mi5pc0VuYWJsZWQgaXMgYXhF
bGVtZW50MS5pc0VuYWJsZWQKLVBBU1MgYXhFbGVtZW50Mi5pc1JlcXVpcmVkIGlzIGF4RWxlbWVu
dDEuaXNSZXF1aXJlZAotUEFTUyBheEVsZW1lbnQyLmlzQ2hlY2tlZCBpcyBheEVsZW1lbnQxLmlz
Q2hlY2tlZAotUEFTUyBheEVsZW1lbnQyLmludFZhbHVlIGlzIGF4RWxlbWVudDEuaW50VmFsdWUK
LVBBU1MgYXhFbGVtZW50Mi5taW5WYWx1ZSBpcyBheEVsZW1lbnQxLm1pblZhbHVlCi1QQVNTIGF4
RWxlbWVudDIubWF4VmFsdWUgaXMgYXhFbGVtZW50MS5tYXhWYWx1ZQotCi1zdWJtaXQxCi1QQVNT
IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT0gZWxlbWVudDEgaXMgdHJ1ZQotc3VibWl0MgotUEFT
UyBkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09IGVsZW1lbnQyIGlzIHRydWUKLVBBU1MgYXhFbGVt
ZW50Mi5yb2xlIGlzIGF4RWxlbWVudDEucm9sZQotUEFTUyBheEVsZW1lbnQyLnJvbGVEZXNjcmlw
dGlvbiBpcyBheEVsZW1lbnQxLnJvbGVEZXNjcmlwdGlvbgotUEFTUyBheEVsZW1lbnQyLnRpdGxl
IGlzIGF4RWxlbWVudDEudGl0bGUKLVBBU1MgYXhFbGVtZW50Mi5kZXNjcmlwdGlvbiBpcyBheEVs
ZW1lbnQxLmRlc2NyaXB0aW9uCi1QQVNTIGF4RWxlbWVudDIuaGVscFRleHQgaXMgYXhFbGVtZW50
MS5oZWxwVGV4dAotUEFTUyBheEVsZW1lbnQyLnN0cmluZ1ZhbHVlIGlzIGF4RWxlbWVudDEuc3Ry
aW5nVmFsdWUKLVBBU1MgYXhFbGVtZW50Mi5pc0VuYWJsZWQgaXMgYXhFbGVtZW50MS5pc0VuYWJs
ZWQKLVBBU1MgYXhFbGVtZW50Mi5pc1JlcXVpcmVkIGlzIGF4RWxlbWVudDEuaXNSZXF1aXJlZAot
UEFTUyBheEVsZW1lbnQyLmlzQ2hlY2tlZCBpcyBheEVsZW1lbnQxLmlzQ2hlY2tlZAotUEFTUyBh
eEVsZW1lbnQyLmludFZhbHVlIGlzIGF4RWxlbWVudDEuaW50VmFsdWUKLVBBU1MgYXhFbGVtZW50
Mi5taW5WYWx1ZSBpcyBheEVsZW1lbnQxLm1pblZhbHVlCi1QQVNTIGF4RWxlbWVudDIubWF4VmFs
dWUgaXMgYXhFbGVtZW50MS5tYXhWYWx1ZQotCi1jb21ib2JveDEKLVBBU1MgZG9jdW1lbnQuYWN0
aXZlRWxlbWVudCA9PSBlbGVtZW50MSBpcyB0cnVlCi1jb21ib2JveDIKLVBBU1MgZG9jdW1lbnQu
YWN0aXZlRWxlbWVudCA9PSBlbGVtZW50MiBpcyB0cnVlCi1QQVNTIGF4RWxlbWVudDIucm9sZSBp
cyBheEVsZW1lbnQxLnJvbGUKLVBBU1MgYXhFbGVtZW50Mi5yb2xlRGVzY3JpcHRpb24gaXMgYXhF
bGVtZW50MS5yb2xlRGVzY3JpcHRpb24KLVBBU1MgYXhFbGVtZW50Mi50aXRsZSBpcyBheEVsZW1l
bnQxLnRpdGxlCi1QQVNTIGF4RWxlbWVudDIuZGVzY3JpcHRpb24gaXMgYXhFbGVtZW50MS5kZXNj
cmlwdGlvbgotUEFTUyBheEVsZW1lbnQyLmhlbHBUZXh0IGlzIGF4RWxlbWVudDEuaGVscFRleHQK
LVBBU1MgYXhFbGVtZW50Mi5zdHJpbmdWYWx1ZSBpcyBheEVsZW1lbnQxLnN0cmluZ1ZhbHVlCi1Q
QVNTIGF4RWxlbWVudDIuaXNFbmFibGVkIGlzIGF4RWxlbWVudDEuaXNFbmFibGVkCi1QQVNTIGF4
RWxlbWVudDIuaXNSZXF1aXJlZCBpcyBheEVsZW1lbnQxLmlzUmVxdWlyZWQKLVBBU1MgYXhFbGVt
ZW50Mi5pc0NoZWNrZWQgaXMgYXhFbGVtZW50MS5pc0NoZWNrZWQKLVBBU1MgYXhFbGVtZW50Mi5p
bnRWYWx1ZSBpcyBheEVsZW1lbnQxLmludFZhbHVlCi1QQVNTIGF4RWxlbWVudDIubWluVmFsdWUg
aXMgYXhFbGVtZW50MS5taW5WYWx1ZQotUEFTUyBheEVsZW1lbnQyLm1heFZhbHVlIGlzIGF4RWxl
bWVudDEubWF4VmFsdWUKLQotbGlzdGJveDEKLVBBU1MgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9
PSBlbGVtZW50MSBpcyB0cnVlCi1saXN0Ym94MgotUEFTUyBkb2N1bWVudC5hY3RpdmVFbGVtZW50
ID09IGVsZW1lbnQyIGlzIHRydWUKLVBBU1MgYXhFbGVtZW50Mi5yb2xlIGlzIGF4RWxlbWVudDEu
cm9sZQotUEFTUyBheEVsZW1lbnQyLnJvbGVEZXNjcmlwdGlvbiBpcyBheEVsZW1lbnQxLnJvbGVE
ZXNjcmlwdGlvbgotUEFTUyBheEVsZW1lbnQyLnRpdGxlIGlzIGF4RWxlbWVudDEudGl0bGUKLVBB
U1MgYXhFbGVtZW50Mi5kZXNjcmlwdGlvbiBpcyBheEVsZW1lbnQxLmRlc2NyaXB0aW9uCi1QQVNT
IGF4RWxlbWVudDIuaGVscFRleHQgaXMgYXhFbGVtZW50MS5oZWxwVGV4dAotUEFTUyBheEVsZW1l
bnQyLnN0cmluZ1ZhbHVlIGlzIGF4RWxlbWVudDEuc3RyaW5nVmFsdWUKLVBBU1MgYXhFbGVtZW50
Mi5pc0VuYWJsZWQgaXMgYXhFbGVtZW50MS5pc0VuYWJsZWQKLVBBU1MgYXhFbGVtZW50Mi5pc1Jl
cXVpcmVkIGlzIGF4RWxlbWVudDEuaXNSZXF1aXJlZAotUEFTUyBheEVsZW1lbnQyLmlzQ2hlY2tl
ZCBpcyBheEVsZW1lbnQxLmlzQ2hlY2tlZAotUEFTUyBheEVsZW1lbnQyLmludFZhbHVlIGlzIGF4
RWxlbWVudDEuaW50VmFsdWUKLVBBU1MgYXhFbGVtZW50Mi5taW5WYWx1ZSBpcyBheEVsZW1lbnQx
Lm1pblZhbHVlCi1QQVNTIGF4RWxlbWVudDIubWF4VmFsdWUgaXMgYXhFbGVtZW50MS5tYXhWYWx1
ZQotCi10ZXh0YXJlYTEKLVBBU1MgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PSBlbGVtZW50MSBp
cyB0cnVlCi10ZXh0YXJlYTIKLVBBU1MgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PSBlbGVtZW50
MiBpcyB0cnVlCi1QQVNTIGF4RWxlbWVudDIucm9sZSBpcyBheEVsZW1lbnQxLnJvbGUKLVBBU1Mg
YXhFbGVtZW50Mi5yb2xlRGVzY3JpcHRpb24gaXMgYXhFbGVtZW50MS5yb2xlRGVzY3JpcHRpb24K
LVBBU1MgYXhFbGVtZW50Mi50aXRsZSBpcyBheEVsZW1lbnQxLnRpdGxlCi1QQVNTIGF4RWxlbWVu
dDIuZGVzY3JpcHRpb24gaXMgYXhFbGVtZW50MS5kZXNjcmlwdGlvbgotUEFTUyBheEVsZW1lbnQy
LmhlbHBUZXh0IGlzIGF4RWxlbWVudDEuaGVscFRleHQKLVBBU1MgYXhFbGVtZW50Mi5zdHJpbmdW
YWx1ZSBpcyBheEVsZW1lbnQxLnN0cmluZ1ZhbHVlCi1QQVNTIGF4RWxlbWVudDIuaXNFbmFibGVk
IGlzIGF4RWxlbWVudDEuaXNFbmFibGVkCi1QQVNTIGF4RWxlbWVudDIuaXNSZXF1aXJlZCBpcyBh
eEVsZW1lbnQxLmlzUmVxdWlyZWQKLVBBU1MgYXhFbGVtZW50Mi5pc0NoZWNrZWQgaXMgYXhFbGVt
ZW50MS5pc0NoZWNrZWQKLVBBU1MgYXhFbGVtZW50Mi5pbnRWYWx1ZSBpcyBheEVsZW1lbnQxLmlu
dFZhbHVlCi1QQVNTIGF4RWxlbWVudDIubWluVmFsdWUgaXMgYXhFbGVtZW50MS5taW5WYWx1ZQot
UEFTUyBheEVsZW1lbnQyLm1heFZhbHVlIGlzIGF4RWxlbWVudDEubWF4VmFsdWUKLQotZm9jdXNh
YmxlMQotUEFTUyBkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09IGVsZW1lbnQxIGlzIHRydWUKLWZv
Y3VzYWJsZTIKLVBBU1MgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PSBlbGVtZW50MiBpcyB0cnVl
Ci1QQVNTIGF4RWxlbWVudDIucm9sZSBpcyBheEVsZW1lbnQxLnJvbGUKLVBBU1MgYXhFbGVtZW50
Mi5yb2xlRGVzY3JpcHRpb24gaXMgYXhFbGVtZW50MS5yb2xlRGVzY3JpcHRpb24KLVBBU1MgYXhF
bGVtZW50Mi50aXRsZSBpcyBheEVsZW1lbnQxLnRpdGxlCi1QQVNTIGF4RWxlbWVudDIuZGVzY3Jp
cHRpb24gaXMgYXhFbGVtZW50MS5kZXNjcmlwdGlvbgotUEFTUyBheEVsZW1lbnQyLmhlbHBUZXh0
IGlzIGF4RWxlbWVudDEuaGVscFRleHQKLVBBU1MgYXhFbGVtZW50Mi5zdHJpbmdWYWx1ZSBpcyBh
eEVsZW1lbnQxLnN0cmluZ1ZhbHVlCi1QQVNTIGF4RWxlbWVudDIuaXNFbmFibGVkIGlzIGF4RWxl
bWVudDEuaXNFbmFibGVkCi1QQVNTIGF4RWxlbWVudDIuaXNSZXF1aXJlZCBpcyBheEVsZW1lbnQx
LmlzUmVxdWlyZWQKLVBBU1MgYXhFbGVtZW50Mi5pc0NoZWNrZWQgaXMgYXhFbGVtZW50MS5pc0No
ZWNrZWQKLVBBU1MgYXhFbGVtZW50Mi5pbnRWYWx1ZSBpcyBheEVsZW1lbnQxLmludFZhbHVlCi1Q
QVNTIGF4RWxlbWVudDIubWluVmFsdWUgaXMgYXhFbGVtZW50MS5taW5WYWx1ZQotUEFTUyBheEVs
ZW1lbnQyLm1heFZhbHVlIGlzIGF4RWxlbWVudDEubWF4VmFsdWUKLQotaGVhZGluZzEKLVBBU1Mg
ZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PSBlbGVtZW50MSBpcyB0cnVlCi1oZWFkaW5nMgotUEFT
UyBkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09IGVsZW1lbnQyIGlzIHRydWUKLVBBU1MgYXhFbGVt
ZW50Mi5yb2xlIGlzIGF4RWxlbWVudDEucm9sZQotUEFTUyBheEVsZW1lbnQyLnJvbGVEZXNjcmlw
dGlvbiBpcyBheEVsZW1lbnQxLnJvbGVEZXNjcmlwdGlvbgotUEFTUyBheEVsZW1lbnQyLnRpdGxl
IGlzIGF4RWxlbWVudDEudGl0bGUKLVBBU1MgYXhFbGVtZW50Mi5kZXNjcmlwdGlvbiBpcyBheEVs
ZW1lbnQxLmRlc2NyaXB0aW9uCi1QQVNTIGF4RWxlbWVudDIuaGVscFRleHQgaXMgYXhFbGVtZW50
MS5oZWxwVGV4dAotUEFTUyBheEVsZW1lbnQyLnN0cmluZ1ZhbHVlIGlzIGF4RWxlbWVudDEuc3Ry
aW5nVmFsdWUKLVBBU1MgYXhFbGVtZW50Mi5pc0VuYWJsZWQgaXMgYXhFbGVtZW50MS5pc0VuYWJs
ZWQKLVBBU1MgYXhFbGVtZW50Mi5pc1JlcXVpcmVkIGlzIGF4RWxlbWVudDEuaXNSZXF1aXJlZAot
UEFTUyBheEVsZW1lbnQyLmlzQ2hlY2tlZCBpcyBheEVsZW1lbnQxLmlzQ2hlY2tlZAotUEFTUyBh
eEVsZW1lbnQyLmludFZhbHVlIGlzIGF4RWxlbWVudDEuaW50VmFsdWUKLVBBU1MgYXhFbGVtZW50
Mi5taW5WYWx1ZSBpcyBheEVsZW1lbnQxLm1pblZhbHVlCi1QQVNTIGF4RWxlbWVudDIubWF4VmFs
dWUgaXMgYXhFbGVtZW50MS5tYXhWYWx1ZQotCi1hcmlhLWJ1dHRvbjEKLVBBU1MgZG9jdW1lbnQu
YWN0aXZlRWxlbWVudCA9PSBlbGVtZW50MSBpcyB0cnVlCi1hcmlhLWJ1dHRvbjIKLVBBU1MgZG9j
dW1lbnQuYWN0aXZlRWxlbWVudCA9PSBlbGVtZW50MiBpcyB0cnVlCi1QQVNTIGF4RWxlbWVudDIu
cm9sZSBpcyBheEVsZW1lbnQxLnJvbGUKLVBBU1MgYXhFbGVtZW50Mi5yb2xlRGVzY3JpcHRpb24g
aXMgYXhFbGVtZW50MS5yb2xlRGVzY3JpcHRpb24KLVBBU1MgYXhFbGVtZW50Mi50aXRsZSBpcyBh
eEVsZW1lbnQxLnRpdGxlCi1QQVNTIGF4RWxlbWVudDIuZGVzY3JpcHRpb24gaXMgYXhFbGVtZW50
MS5kZXNjcmlwdGlvbgotUEFTUyBheEVsZW1lbnQyLmhlbHBUZXh0IGlzIGF4RWxlbWVudDEuaGVs
cFRleHQKLVBBU1MgYXhFbGVtZW50Mi5zdHJpbmdWYWx1ZSBpcyBheEVsZW1lbnQxLnN0cmluZ1Zh
bHVlCi1QQVNTIGF4RWxlbWVudDIuaXNFbmFibGVkIGlzIGF4RWxlbWVudDEuaXNFbmFibGVkCi1Q
QVNTIGF4RWxlbWVudDIuaXNSZXF1aXJlZCBpcyBheEVsZW1lbnQxLmlzUmVxdWlyZWQKLVBBU1Mg
YXhFbGVtZW50Mi5pc0NoZWNrZWQgaXMgYXhFbGVtZW50MS5pc0NoZWNrZWQKLVBBU1MgYXhFbGVt
ZW50Mi5pbnRWYWx1ZSBpcyBheEVsZW1lbnQxLmludFZhbHVlCi1QQVNTIGF4RWxlbWVudDIubWlu
VmFsdWUgaXMgYXhFbGVtZW50MS5taW5WYWx1ZQotUEFTUyBheEVsZW1lbnQyLm1heFZhbHVlIGlz
IGF4RWxlbWVudDEubWF4VmFsdWUKLQotYXJpYS1kaXNhYmxlZGJ1dHRvbjEKLVBBU1MgZG9jdW1l
bnQuYWN0aXZlRWxlbWVudCA9PSBlbGVtZW50MSBpcyB0cnVlCi1hcmlhLWRpc2FibGVkYnV0dG9u
MgotUEFTUyBkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09IGVsZW1lbnQyIGlzIHRydWUKLVBBU1Mg
YXhFbGVtZW50Mi5yb2xlIGlzIGF4RWxlbWVudDEucm9sZQotUEFTUyBheEVsZW1lbnQyLnJvbGVE
ZXNjcmlwdGlvbiBpcyBheEVsZW1lbnQxLnJvbGVEZXNjcmlwdGlvbgotUEFTUyBheEVsZW1lbnQy
LnRpdGxlIGlzIGF4RWxlbWVudDEudGl0bGUKLVBBU1MgYXhFbGVtZW50Mi5kZXNjcmlwdGlvbiBp
cyBheEVsZW1lbnQxLmRlc2NyaXB0aW9uCi1QQVNTIGF4RWxlbWVudDIuaGVscFRleHQgaXMgYXhF
bGVtZW50MS5oZWxwVGV4dAotUEFTUyBheEVsZW1lbnQyLnN0cmluZ1ZhbHVlIGlzIGF4RWxlbWVu
dDEuc3RyaW5nVmFsdWUKLVBBU1MgYXhFbGVtZW50Mi5pc0VuYWJsZWQgaXMgYXhFbGVtZW50MS5p
c0VuYWJsZWQKLVBBU1MgYXhFbGVtZW50Mi5pc1JlcXVpcmVkIGlzIGF4RWxlbWVudDEuaXNSZXF1
aXJlZAotUEFTUyBheEVsZW1lbnQyLmlzQ2hlY2tlZCBpcyBheEVsZW1lbnQxLmlzQ2hlY2tlZAot
UEFTUyBheEVsZW1lbnQyLmludFZhbHVlIGlzIGF4RWxlbWVudDEuaW50VmFsdWUKLVBBU1MgYXhF
bGVtZW50Mi5taW5WYWx1ZSBpcyBheEVsZW1lbnQxLm1pblZhbHVlCi1QQVNTIGF4RWxlbWVudDIu
bWF4VmFsdWUgaXMgYXhFbGVtZW50MS5tYXhWYWx1ZQotCi1hcmlhLWVuYWJsZWRidXR0b24xCi1Q
QVNTIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT0gZWxlbWVudDEgaXMgdHJ1ZQotYXJpYS1lbmFi
bGVkYnV0dG9uMgotUEFTUyBkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09IGVsZW1lbnQyIGlzIHRy
dWUKLVBBU1MgYXhFbGVtZW50Mi5yb2xlIGlzIGF4RWxlbWVudDEucm9sZQotUEFTUyBheEVsZW1l
bnQyLnJvbGVEZXNjcmlwdGlvbiBpcyBheEVsZW1lbnQxLnJvbGVEZXNjcmlwdGlvbgotUEFTUyBh
eEVsZW1lbnQyLnRpdGxlIGlzIGF4RWxlbWVudDEudGl0bGUKLVBBU1MgYXhFbGVtZW50Mi5kZXNj
cmlwdGlvbiBpcyBheEVsZW1lbnQxLmRlc2NyaXB0aW9uCi1QQVNTIGF4RWxlbWVudDIuaGVscFRl
eHQgaXMgYXhFbGVtZW50MS5oZWxwVGV4dAotUEFTUyBheEVsZW1lbnQyLnN0cmluZ1ZhbHVlIGlz
IGF4RWxlbWVudDEuc3RyaW5nVmFsdWUKLVBBU1MgYXhFbGVtZW50Mi5pc0VuYWJsZWQgaXMgYXhF
bGVtZW50MS5pc0VuYWJsZWQKLVBBU1MgYXhFbGVtZW50Mi5pc1JlcXVpcmVkIGlzIGF4RWxlbWVu
dDEuaXNSZXF1aXJlZAotUEFTUyBheEVsZW1lbnQyLmlzQ2hlY2tlZCBpcyBheEVsZW1lbnQxLmlz
Q2hlY2tlZAotUEFTUyBheEVsZW1lbnQyLmludFZhbHVlIGlzIGF4RWxlbWVudDEuaW50VmFsdWUK
LVBBU1MgYXhFbGVtZW50Mi5taW5WYWx1ZSBpcyBheEVsZW1lbnQxLm1pblZhbHVlCi1QQVNTIGF4
RWxlbWVudDIubWF4VmFsdWUgaXMgYXhFbGVtZW50MS5tYXhWYWx1ZQotCi1hcmlhLXJlcXVpcmVk
YnV0dG9uMQotUEFTUyBkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09IGVsZW1lbnQxIGlzIHRydWUK
LWFyaWEtcmVxdWlyZWRidXR0b24yCi1QQVNTIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT0gZWxl
bWVudDIgaXMgdHJ1ZQotUEFTUyBheEVsZW1lbnQyLnJvbGUgaXMgYXhFbGVtZW50MS5yb2xlCi1Q
QVNTIGF4RWxlbWVudDIucm9sZURlc2NyaXB0aW9uIGlzIGF4RWxlbWVudDEucm9sZURlc2NyaXB0
aW9uCi1QQVNTIGF4RWxlbWVudDIudGl0bGUgaXMgYXhFbGVtZW50MS50aXRsZQotUEFTUyBheEVs
ZW1lbnQyLmRlc2NyaXB0aW9uIGlzIGF4RWxlbWVudDEuZGVzY3JpcHRpb24KLVBBU1MgYXhFbGVt
ZW50Mi5oZWxwVGV4dCBpcyBheEVsZW1lbnQxLmhlbHBUZXh0Ci1QQVNTIGF4RWxlbWVudDIuc3Ry
aW5nVmFsdWUgaXMgYXhFbGVtZW50MS5zdHJpbmdWYWx1ZQotUEFTUyBheEVsZW1lbnQyLmlzRW5h
YmxlZCBpcyBheEVsZW1lbnQxLmlzRW5hYmxlZAotUEFTUyBheEVsZW1lbnQyLmlzUmVxdWlyZWQg
aXMgYXhFbGVtZW50MS5pc1JlcXVpcmVkCi1QQVNTIGF4RWxlbWVudDIuaXNDaGVja2VkIGlzIGF4
RWxlbWVudDEuaXNDaGVja2VkCi1QQVNTIGF4RWxlbWVudDIuaW50VmFsdWUgaXMgYXhFbGVtZW50
MS5pbnRWYWx1ZQotUEFTUyBheEVsZW1lbnQyLm1pblZhbHVlIGlzIGF4RWxlbWVudDEubWluVmFs
dWUKLVBBU1MgYXhFbGVtZW50Mi5tYXhWYWx1ZSBpcyBheEVsZW1lbnQxLm1heFZhbHVlCi0KLWFy
aWEtdG9nZ2xlYnV0dG9uMQotUEFTUyBkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09IGVsZW1lbnQx
IGlzIHRydWUKLWFyaWEtdG9nZ2xlYnV0dG9uMgotUEFTUyBkb2N1bWVudC5hY3RpdmVFbGVtZW50
ID09IGVsZW1lbnQyIGlzIHRydWUKLVBBU1MgYXhFbGVtZW50Mi5yb2xlIGlzIGF4RWxlbWVudDEu
cm9sZQotUEFTUyBheEVsZW1lbnQyLnJvbGVEZXNjcmlwdGlvbiBpcyBheEVsZW1lbnQxLnJvbGVE
ZXNjcmlwdGlvbgotUEFTUyBheEVsZW1lbnQyLnRpdGxlIGlzIGF4RWxlbWVudDEudGl0bGUKLVBB
U1MgYXhFbGVtZW50Mi5kZXNjcmlwdGlvbiBpcyBheEVsZW1lbnQxLmRlc2NyaXB0aW9uCi1QQVNT
IGF4RWxlbWVudDIuaGVscFRleHQgaXMgYXhFbGVtZW50MS5oZWxwVGV4dAotUEFTUyBheEVsZW1l
bnQyLnN0cmluZ1ZhbHVlIGlzIGF4RWxlbWVudDEuc3RyaW5nVmFsdWUKLVBBU1MgYXhFbGVtZW50
Mi5pc0VuYWJsZWQgaXMgYXhFbGVtZW50MS5pc0VuYWJsZWQKLVBBU1MgYXhFbGVtZW50Mi5pc1Jl
cXVpcmVkIGlzIGF4RWxlbWVudDEuaXNSZXF1aXJlZAotUEFTUyBheEVsZW1lbnQyLmlzQ2hlY2tl
ZCBpcyBheEVsZW1lbnQxLmlzQ2hlY2tlZAotUEFTUyBheEVsZW1lbnQyLmludFZhbHVlIGlzIGF4
RWxlbWVudDEuaW50VmFsdWUKLVBBU1MgYXhFbGVtZW50Mi5taW5WYWx1ZSBpcyBheEVsZW1lbnQx
Lm1pblZhbHVlCi1QQVNTIGF4RWxlbWVudDIubWF4VmFsdWUgaXMgYXhFbGVtZW50MS5tYXhWYWx1
ZQotCi1hcmlhLWxpbmsxCi1QQVNTIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT0gZWxlbWVudDEg
aXMgdHJ1ZQotYXJpYS1saW5rMgotUEFTUyBkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09IGVsZW1l
bnQyIGlzIHRydWUKLVBBU1MgYXhFbGVtZW50Mi5yb2xlIGlzIGF4RWxlbWVudDEucm9sZQotUEFT
UyBheEVsZW1lbnQyLnJvbGVEZXNjcmlwdGlvbiBpcyBheEVsZW1lbnQxLnJvbGVEZXNjcmlwdGlv
bgotUEFTUyBheEVsZW1lbnQyLnRpdGxlIGlzIGF4RWxlbWVudDEudGl0bGUKLVBBU1MgYXhFbGVt
ZW50Mi5kZXNjcmlwdGlvbiBpcyBheEVsZW1lbnQxLmRlc2NyaXB0aW9uCi1QQVNTIGF4RWxlbWVu
dDIuaGVscFRleHQgaXMgYXhFbGVtZW50MS5oZWxwVGV4dAotUEFTUyBheEVsZW1lbnQyLnN0cmlu
Z1ZhbHVlIGlzIGF4RWxlbWVudDEuc3RyaW5nVmFsdWUKLVBBU1MgYXhFbGVtZW50Mi5pc0VuYWJs
ZWQgaXMgYXhFbGVtZW50MS5pc0VuYWJsZWQKLVBBU1MgYXhFbGVtZW50Mi5pc1JlcXVpcmVkIGlz
IGF4RWxlbWVudDEuaXNSZXF1aXJlZAotUEFTUyBheEVsZW1lbnQyLmlzQ2hlY2tlZCBpcyBheEVs
ZW1lbnQxLmlzQ2hlY2tlZAotUEFTUyBheEVsZW1lbnQyLmludFZhbHVlIGlzIGF4RWxlbWVudDEu
aW50VmFsdWUKLVBBU1MgYXhFbGVtZW50Mi5taW5WYWx1ZSBpcyBheEVsZW1lbnQxLm1pblZhbHVl
Ci1QQVNTIGF4RWxlbWVudDIubWF4VmFsdWUgaXMgYXhFbGVtZW50MS5tYXhWYWx1ZQotCi1QQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9jYW52YXMtZmFsbGJhY2stY29udGVudC0yLmh0
bWwgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2NhbnZhcy1mYWxsYmFjay1jb250ZW50LTIu
aHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDljMTExOTMxYjAzMDkzMGE5ODU4
M2VkZDI5OGUzNzNlMjNkNTc1MS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2NhbnZhcy1mYWxsYmFjay1jb250
ZW50LTIuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDExNiArMCwwIEBACi08IURPQ1RZUEUgSFRN
TD4KLTxodG1sPgotPGJvZHk+Ci08c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgotCi08ZGl2PgotICA8YSBpZD0ibGluazEiIGhyZWY9IiMi
Pkxpbms8L2E+Ci0gIDxidXR0b24gaWQ9ImJ1dHRvbjEiPkJ1dHRvbjwvYnV0dG9uPgotICA8YnV0
dG9uIGlkPSJsYWJlbGVkLWJ1dHRvbjEiIGFyaWEtbGFiZWw9IkxhYmVsIj5CdXR0b248L2J1dHRv
bj4KLSAgPGJ1dHRvbiBpZD0iYnV0dG9uLXdpdGgtdGl0bGUxIiB0aXRsZT0iVGl0bGUiPkJ1dHRv
bjwvYnV0dG9uPgotICA8aW5wdXQgaWQ9InRleHQxIiB0eXBlPSJ0ZXh0IiB2YWx1ZT0iVmFsdWUi
PgotICA8aW5wdXQgaWQ9ImNoZWNrYm94MSIgdHlwZT0iY2hlY2tib3giIGNoZWNrZWQ+Ci0gIDxp
bnB1dCBpZD0ibnVtYmVyMSIgdHlwZT0ibnVtYmVyIiB2YWx1ZT0iMTIzIj4KLSAgPGlucHV0IGlk
PSJyYWRpbzEiIHR5cGU9InJhZGlvIiBjaGVja2VkPgotICA8aW5wdXQgaWQ9InNsaWRlcjEiIHR5
cGU9InJhbmdlIiBtaW49IjEiIG1heD0iMTAiIHZhbHVlPSI1Ij4KLSAgPGlucHV0IGlkPSJzdWJt
aXQxIiB0eXBlPSJzdWJtaXQiPgotICA8c2VsZWN0IGlkPSJjb21ib2JveDEiPjxvcHRpb24+MTxv
cHRpb24gc2VsZWN0ZWQ+Mjwvc2VsZWN0PgotICA8c2VsZWN0IG11bHRpcGxlIGlkPSJsaXN0Ym94
MSI+PG9wdGlvbj4xPG9wdGlvbiBzZWxlY3RlZD4yPC9zZWxlY3Q+Ci0gIDx0ZXh0YXJlYSBpZD0i
dGV4dGFyZWExIj5UZXh0YXJlYTwvdGV4dGFyZWE+Ci0gIDxkaXYgaWQ9ImZvY3VzYWJsZTEiIHRh
YmluZGV4PSIwIj5Gb2N1c2FibGU8L2Rpdj4KLSAgPGg1IGlkPSJoZWFkaW5nMSIgdGFiaW5kZXg9
IjAiPkhlYWRpbmc8L2g1PgotICA8ZGl2IGlkPSJhcmlhLWJ1dHRvbjEiIHRhYmluZGV4PSIwIiBy
b2xlPSJidXR0b24iPkFSSUEgYnV0dG9uPC9kaXY+Ci0gIDxkaXYgaWQ9ImFyaWEtZGlzYWJsZWRi
dXR0b24xIiB0YWJpbmRleD0iMCIgcm9sZT0iYnV0dG9uIiBhcmlhLWRpc2FibGVkPSJ0cnVlIj5B
UklBIGRpc2FibGVkIGJ1dHRvbjwvZGl2PgotICA8ZGl2IGlkPSJhcmlhLWVuYWJsZWRidXR0b24x
IiB0YWJpbmRleD0iMCIgcm9sZT0iYnV0dG9uIiBhcmlhLWRpc2FibGVkPSJmYWxzZSI+QVJJQSBl
bmFibGVkIGJ1dHRvbjwvZGl2PgotICA8ZGl2IGlkPSJhcmlhLXJlcXVpcmVkYnV0dG9uMSIgdGFi
aW5kZXg9IjAiIHJvbGU9ImJ1dHRvbiIgYXJpYS1yZXF1aXJlZD0idHJ1ZSI+QVJJQSByZXF1aXJl
ZCBidXR0b248L2Rpdj4KLSAgPGRpdiBpZD0iYXJpYS10b2dnbGVidXR0b24xIiB0YWJpbmRleD0i
MCIgcm9sZT0iYnV0dG9uIiBhcmlhLXByZXNzZWQ9ImZhbHNlIj5BUklBIHRvZ2dsZSBidXR0b248
L2Rpdj4KLSAgPGRpdiBpZD0iYXJpYS1saW5rMSIgdGFiaW5kZXg9IjAiIHJvbGU9ImxpbmsiPkFS
SUEgbGluazwvZGl2PgotPC9kaXY+Ci0KLTxjYW52YXMgaWQ9Im15Q2FudmFzIiB3aWR0aD0iMzAw
IiBoZWlnaHQ9IjMwMCI+Ci0gIDxhIGlkPSJsaW5rMiIgaHJlZj0iIyI+TGluazwvYT4KLSAgPGJ1
dHRvbiBpZD0iYnV0dG9uMiI+QnV0dG9uPC9idXR0b24+Ci0gIDxidXR0b24gaWQ9ImxhYmVsZWQt
YnV0dG9uMiIgYXJpYS1sYWJlbD0iTGFiZWwiPkJ1dHRvbjwvYnV0dG9uPgotICA8YnV0dG9uIGlk
PSJidXR0b24td2l0aC10aXRsZTIiIHRpdGxlPSJUaXRsZSI+QnV0dG9uPC9idXR0b24+Ci0gIDxp
bnB1dCBpZD0idGV4dDIiIHR5cGU9InRleHQiIHZhbHVlPSJWYWx1ZSI+Ci0gIDxpbnB1dCBpZD0i
Y2hlY2tib3gyIiB0eXBlPSJjaGVja2JveCIgY2hlY2tlZD4KLSAgPGlucHV0IGlkPSJudW1iZXIy
IiB0eXBlPSJudW1iZXIiIHZhbHVlPSIxMjMiPgotICA8aW5wdXQgaWQ9InJhZGlvMiIgdHlwZT0i
cmFkaW8iIGNoZWNrZWQ+Ci0gIDxpbnB1dCBpZD0ic2xpZGVyMiIgdHlwZT0icmFuZ2UiIG1pbj0i
MSIgbWF4PSIxMCIgdmFsdWU9IjUiPgotICA8aW5wdXQgaWQ9InN1Ym1pdDIiIHR5cGU9InN1Ym1p
dCI+Ci0gIDxzZWxlY3QgaWQ9ImNvbWJvYm94MiI+PG9wdGlvbj4xPG9wdGlvbiBzZWxlY3RlZD4y
PC9zZWxlY3Q+Ci0gIDxzZWxlY3QgbXVsdGlwbGUgaWQ9Imxpc3Rib3gyIj48b3B0aW9uPjE8b3B0
aW9uIHNlbGVjdGVkPjI8L3NlbGVjdD4KLSAgPHRleHRhcmVhIGlkPSJ0ZXh0YXJlYTIiPlRleHRh
cmVhPC90ZXh0YXJlYT4KLSAgPGRpdiBpZD0iZm9jdXNhYmxlMiIgdGFiaW5kZXg9IjAiPkZvY3Vz
YWJsZTwvZGl2PgotICA8aDUgaWQ9ImhlYWRpbmcyIiB0YWJpbmRleD0iMCI+SGVhZGluZzwvaDU+
Ci0gIDxkaXYgaWQ9ImFyaWEtYnV0dG9uMiIgdGFiaW5kZXg9IjAiIHJvbGU9ImJ1dHRvbiI+QVJJ
QSBidXR0b248L2Rpdj4KLSAgPGRpdiBpZD0iYXJpYS1kaXNhYmxlZGJ1dHRvbjIiIHRhYmluZGV4
PSIwIiByb2xlPSJidXR0b24iIGFyaWEtZGlzYWJsZWQ9InRydWUiPkFSSUEgZGlzYWJsZWQgYnV0
dG9uPC9kaXY+Ci0gIDxkaXYgaWQ9ImFyaWEtZW5hYmxlZGJ1dHRvbjIiIHRhYmluZGV4PSIwIiBy
b2xlPSJidXR0b24iIGFyaWEtZGlzYWJsZWQ9ImZhbHNlIj5BUklBIGVuYWJsZWQgYnV0dG9uPC9k
aXY+Ci0gIDxkaXYgaWQ9ImFyaWEtcmVxdWlyZWRidXR0b24yIiB0YWJpbmRleD0iMCIgcm9sZT0i
YnV0dG9uIiBhcmlhLXJlcXVpcmVkPSJ0cnVlIj5BUklBIHJlcXVpcmVkIGJ1dHRvbjwvZGl2Pgot
ICA8ZGl2IGlkPSJhcmlhLXRvZ2dsZWJ1dHRvbjIiIHRhYmluZGV4PSIwIiByb2xlPSJidXR0b24i
IGFyaWEtcHJlc3NlZD0iZmFsc2UiPkFSSUEgdG9nZ2xlIGJ1dHRvbjwvZGl2PgotICA8ZGl2IGlk
PSJhcmlhLWxpbmsyIiB0YWJpbmRleD0iMCIgcm9sZT0ibGluayI+QVJJQSBsaW5rPC9kaXY+Ci08
L2NhbnZhcz4KLQotPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Ci08c2NyaXB0PgotZGVzY3JpcHRp
b24oIlRoaXMgdGVzdHMgYSBudW1iZXIgb2YgZGlmZmVyZW50IGVsZW1lbnRzIGluIGNhbnZhcyBm
YWxsYmFjayBjb250ZW50IHRvIG1ha2Ugc3VyZSB0aGVpciBhY2Nlc3NpYmxlIGF0dHJpYnV0ZXMg
YXJlIGVzc2VudGlhbGx5IGlkZW50aWNhbCB0byB0aGUgY29ycmVzcG9uZGluZyBlbGVtZW50cyBv
dXRzaWRlIG9mIGNhbnZhcyBmYWxsYmFjayBjb250ZW50LiIpOwotCi1pZiAod2luZG93LnRlc3RS
dW5uZXIgJiYgd2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7Ci0gICAgd2luZG93LnRl
c3RSdW5uZXIuZHVtcEFzVGV4dCgpOwotCi0gICAgZnVuY3Rpb24gY2hlY2soaWQxLCBpZDIpIHsK
LSAgICAgICAgZGVidWcoaWQxKTsKLSAgICAgICAgd2luZG93LmVsZW1lbnQxID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoaWQxKTsKLSAgICAgICAgZWxlbWVudDEuZm9jdXMoKTsKLSAgICAgICAg
c2hvdWxkQmUoImRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT0gZWxlbWVudDEiLCAidHJ1ZSIpOwot
ICAgICAgICB3aW5kb3cuYXhFbGVtZW50MSA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3Vz
ZWRFbGVtZW50OwotCi0gICAgICAgIGRlYnVnKGlkMik7Ci0gICAgICAgIHdpbmRvdy5lbGVtZW50
MiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkMik7Ci0gICAgICAgIGVsZW1lbnQyLmZvY3Vz
KCk7Ci0gICAgICAgIHNob3VsZEJlKCJkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09IGVsZW1lbnQy
IiwgInRydWUiKTsKLSAgICAgICAgd2luZG93LmF4RWxlbWVudDIgPSBhY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlci5mb2N1c2VkRWxlbWVudDsKLQotICAgICAgICBzaG91bGRCZSgiYXhFbGVtZW50Mi5y
b2xlIiwgImF4RWxlbWVudDEucm9sZSIpOwotICAgICAgICBzaG91bGRCZSgiYXhFbGVtZW50Mi5y
b2xlRGVzY3JpcHRpb24iLCAiYXhFbGVtZW50MS5yb2xlRGVzY3JpcHRpb24iKTsKLSAgICAgICAg
c2hvdWxkQmUoImF4RWxlbWVudDIudGl0bGUiLCAiYXhFbGVtZW50MS50aXRsZSIpOwotICAgICAg
ICBzaG91bGRCZSgiYXhFbGVtZW50Mi5kZXNjcmlwdGlvbiIsICJheEVsZW1lbnQxLmRlc2NyaXB0
aW9uIik7Ci0gICAgICAgIHNob3VsZEJlKCJheEVsZW1lbnQyLmhlbHBUZXh0IiwgImF4RWxlbWVu
dDEuaGVscFRleHQiKTsKLSAgICAgICAgc2hvdWxkQmUoImF4RWxlbWVudDIuc3RyaW5nVmFsdWUi
LCAiYXhFbGVtZW50MS5zdHJpbmdWYWx1ZSIpOwotICAgICAgICBzaG91bGRCZSgiYXhFbGVtZW50
Mi5pc0VuYWJsZWQiLCAiYXhFbGVtZW50MS5pc0VuYWJsZWQiKTsKLSAgICAgICAgc2hvdWxkQmUo
ImF4RWxlbWVudDIuaXNSZXF1aXJlZCIsICJheEVsZW1lbnQxLmlzUmVxdWlyZWQiKTsKLSAgICAg
ICAgc2hvdWxkQmUoImF4RWxlbWVudDIuaXNDaGVja2VkIiwgImF4RWxlbWVudDEuaXNDaGVja2Vk
Iik7Ci0gICAgICAgIHNob3VsZEJlKCJheEVsZW1lbnQyLmludFZhbHVlIiwgImF4RWxlbWVudDEu
aW50VmFsdWUiKTsKLSAgICAgICAgc2hvdWxkQmUoImF4RWxlbWVudDIubWluVmFsdWUiLCAiYXhF
bGVtZW50MS5taW5WYWx1ZSIpOwotICAgICAgICBzaG91bGRCZSgiYXhFbGVtZW50Mi5tYXhWYWx1
ZSIsICJheEVsZW1lbnQxLm1heFZhbHVlIik7Ci0gICAgICAgIGRlYnVnKCIiKTsKLSAgICB9Ci0K
LSAgICBjaGVjaygibGluazEiLCAibGluazIiKTsKLSAgICBjaGVjaygiYnV0dG9uMSIsICJidXR0
b24yIik7Ci0gICAgY2hlY2soImxhYmVsZWQtYnV0dG9uMSIsICJsYWJlbGVkLWJ1dHRvbjIiKTsK
LSAgICBjaGVjaygiYnV0dG9uLXdpdGgtdGl0bGUxIiwgImJ1dHRvbi13aXRoLXRpdGxlMiIpOwot
ICAgIGNoZWNrKCJ0ZXh0MSIsICJ0ZXh0MiIpOwotICAgIGNoZWNrKCJjaGVja2JveDEiLCAiY2hl
Y2tib3gyIik7Ci0gICAgY2hlY2soIm51bWJlcjEiLCAibnVtYmVyMiIpOwotICAgIGNoZWNrKCJy
YWRpbzEiLCAicmFkaW8yIik7Ci0gICAgY2hlY2soInNsaWRlcjEiLCAic2xpZGVyMiIpOwotICAg
IGNoZWNrKCJzdWJtaXQxIiwgInN1Ym1pdDIiKTsKLSAgICBjaGVjaygiY29tYm9ib3gxIiwgImNv
bWJvYm94MiIpOwotICAgIGNoZWNrKCJsaXN0Ym94MSIsICJsaXN0Ym94MiIpOwotICAgIGNoZWNr
KCJ0ZXh0YXJlYTEiLCAidGV4dGFyZWEyIik7Ci0gICAgY2hlY2soImZvY3VzYWJsZTEiLCAiZm9j
dXNhYmxlMiIpOwotICAgIGNoZWNrKCJoZWFkaW5nMSIsICJoZWFkaW5nMiIpOwotICAgIGNoZWNr
KCJhcmlhLWJ1dHRvbjEiLCAiYXJpYS1idXR0b24yIik7Ci0gICAgY2hlY2soImFyaWEtZGlzYWJs
ZWRidXR0b24xIiwgImFyaWEtZGlzYWJsZWRidXR0b24yIik7Ci0gICAgY2hlY2soImFyaWEtZW5h
YmxlZGJ1dHRvbjEiLCAiYXJpYS1lbmFibGVkYnV0dG9uMiIpOwotICAgIGNoZWNrKCJhcmlhLXJl
cXVpcmVkYnV0dG9uMSIsICJhcmlhLXJlcXVpcmVkYnV0dG9uMiIpOwotICAgIGNoZWNrKCJhcmlh
LXRvZ2dsZWJ1dHRvbjEiLCAiYXJpYS10b2dnbGVidXR0b24yIik7Ci0gICAgY2hlY2soImFyaWEt
bGluazEiLCAiYXJpYS1saW5rMiIpOwotfQotCi08L3NjcmlwdD4KLQotPHNjcmlwdCBzcmM9Ii4u
L2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08
L2h0bWw+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>