<?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>92951</bug_id>
          
          <creation_ts>2012-08-01 23:39:45 -0700</creation_ts>
          <short_desc>REGRESSION(r124406): it set the Mac bots on fire (Requested by pizlo on #webkit).</short_desc>
          <delta_ts>2012-08-01 23:45:07 -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>
          
          <blocked>53003</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>ggaren</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>685019</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-01 23:39:45 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/124406 broke the build:
it set the Mac bots on fire (Requested by pizlo 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>685022</commentid>
    <comment_count>1</comment_count>
      <attachid>155984</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-01 23:40:33 -0700</bug_when>
    <thetext>Created attachment 155984
ROLLOUT of r124406

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>685025</commentid>
    <comment_count>2</comment_count>
      <attachid>155984</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-01 23:45:04 -0700</bug_when>
    <thetext>Comment on attachment 155984
ROLLOUT of r124406

Clearing flags on attachment: 155984

Committed r124413: &lt;http://trac.webkit.org/changeset/124413&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>685026</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-01 23:45:07 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>155984</attachid>
            <date>2012-08-01 23:40:33 -0700</date>
            <delta_ts>2012-08-01 23:45:04 -0700</delta_ts>
            <desc>ROLLOUT of r124406</desc>
            <filename>bug-92951-20120802064607.patch</filename>
            <type>text/plain</type>
            <size>314307</size>
            <attacher name="WebKit Review Bot">webkit.review.bot</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0NDEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
ZTQ2ODAyMGU0MjVkZTgyM2E0OWE1MWY4OTlkOTI2ZmMzYmNjMmEzLi43Nzc5OGM0MmIzMjllZTQ2
YThhOWE2MDY5YmNiOGRhNmQ0Y2Y5MDQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NjIgQEAKKzIwMTItMDgtMDEgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RA
Z21haWwuY29tPgorCisgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMjQ0MDYuCisg
ICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzEyNDQwNgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTI5NTEKKworICAgICAgICBp
dCBzZXQgdGhlIE1hYyBib3RzIG9uIGZpcmUgKFJlcXVlc3RlZCBieSBwaXpsbyBvbiAjd2Via2l0
KS4KKworICAgICAgICAqIGJ5dGVjb2RlL09wY29kZS5oOgorICAgICAgICAoSlNDKToKKyAgICAg
ICAgKEpTQzo6cGFkT3Bjb2RlTmFtZSk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWJ1
Z0hvb2spOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAg
ICAgICAoQnl0ZWNvZGVHZW5lcmF0b3IpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0Nv
ZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpBcnJheU5vZGU6OnRvQXJndW1lbnRMaXN0KToKKyAg
ICAgICAgKEpTQzo6QXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAg
ICAgICAoSlNDOjpDb25kaXRpb25hbE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6
OkNvbnN0U3RhdGVtZW50Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6RW1wdHlT
dGF0ZW1lbnROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlclN0YXRl
bWVudE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkV4cHJTdGF0ZW1lbnROb2Rl
OjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpWYXJTdGF0ZW1lbnROb2RlOjplbWl0Qnl0
ZWNvZGUpOgorICAgICAgICAoSlNDOjpJZk5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChK
U0M6OklmRWxzZU5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkRvV2hpbGVOb2Rl
OjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpXaGlsZU5vZGU6OmVtaXRCeXRlY29kZSk6
CisgICAgICAgIChKU0M6OkZvck5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkZv
ckluTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6Q29udGludWVOb2RlOjplbWl0
Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpCcmVha05vZGU6OmVtaXRCeXRlY29kZSk6CisgICAg
ICAgIChKU0M6OlJldHVybk5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OldpdGhO
b2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpTd2l0Y2hOb2RlOjplbWl0Qnl0ZWNv
ZGUpOgorICAgICAgICAoSlNDOjpMYWJlbE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChK
U0M6OlRocm93Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6VHJ5Tm9kZTo6ZW1p
dEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6UHJvZ3JhbU5vZGU6OmVtaXRCeXRlY29kZSk6Cisg
ICAgICAgIChKU0M6OkV2YWxOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpGdW5j
dGlvbkJvZHlOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2Vy
Lmg6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlND
OjpJbnRlcnByZXRlcjo6dW53aW5kQ2FsbEZyYW1lKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0
ZXI6OnRocm93RXhjZXB0aW9uKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmRlYnVnKToK
KyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5oOgorICAgICAgICAoSW50ZXJwcmV0
ZXIpOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0X29wX2RlYnVnKToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2RlczMyXzY0LmNwcDoKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX2RlYnVnKToKKyAgICAgICAgKiBqaXQvSklUU3R1YnMuY3Bw
OgorICAgICAgICAoSlNDOjpERUZJTkVfU1RVQl9GVU5DVElPTik6CisgICAgICAgICogbGxpbnQv
TExJbnRTbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6TExJTlRfU0xPV19QQVRI
X0RFQ0wpOgorICAgICAgICAqIHBhcnNlci9BU1RCdWlsZGVyLmg6CisgICAgICAgIChBU1RCdWls
ZGVyKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlQ29tbWFFeHByKToKKyAgICAg
ICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlTG9naWNhbE5vdCk6CisgICAgICAgIChKU0M6OkFT
VEJ1aWxkZXI6OmNyZWF0ZVVuYXJ5UGx1cyk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNy
ZWF0ZVZvaWQpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjp0aGlzRXhwcik6CisgICAgICAg
IChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZVJlc29sdmUpOgorICAgICAgICAoSlNDOjpBU1RCdWls
ZGVyOjpjcmVhdGVPYmplY3RMaXRlcmFsKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3Jl
YXRlQXJyYXkpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVOdW1iZXJFeHByKToK
KyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlU3RyaW5nKToKKyAgICAgICAgKEpTQzo6
QVNUQnVpbGRlcjo6Y3JlYXRlQm9vbGVhbik6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNy
ZWF0ZU51bGwpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVCcmFja2V0QWNjZXNz
KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlRG90QWNjZXNzKToKKyAgICAgICAg
KEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlUmVnRXhwKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRl
cjo6Y3JlYXRlTmV3RXhwcik6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUNvbmRp
dGlvbmFsRXhwcik6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUFzc2lnblJlc29s
dmUpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVGdW5jdGlvbkV4cHIpOgorICAg
ICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVGdW5jdGlvbkJvZHkpOgorICAgICAgICAoSlND
OjpBU1RCdWlsZGVyOjpjcmVhdGVHZXR0ZXJPclNldHRlclByb3BlcnR5KToKKyAgICAgICAgKEpT
Qzo6QVNUQnVpbGRlcjo6Y3JlYXRlQXJndW1lbnRzTGlzdCk6CisgICAgICAgIChKU0M6OkFTVEJ1
aWxkZXI6OmNyZWF0ZVByb3BlcnR5TGlzdCk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNy
ZWF0ZUZ1bmNEZWNsU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRl
QmxvY2tTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVFeHByU3Rh
dGVtZW50KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlSWZTdGF0ZW1lbnQpOgor
ICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVGb3JMb29wKToKKyAgICAgICAgKEpTQzo6
QVNUQnVpbGRlcjo6Y3JlYXRlRm9ySW5Mb29wKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6
Y3JlYXRlRW1wdHlTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVW
YXJTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVSZXR1cm5TdGF0
ZW1lbnQpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVCcmVha1N0YXRlbWVudCk6
CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUNvbnRpbnVlU3RhdGVtZW50KToKKyAg
ICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlVHJ5U3RhdGVtZW50KToKKyAgICAgICAgKEpT
Qzo6QVNUQnVpbGRlcjo6Y3JlYXRlU3dpdGNoU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6QVNU
QnVpbGRlcjo6Y3JlYXRlV2hpbGVTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVy
OjpjcmVhdGVEb1doaWxlU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3Jl
YXRlTGFiZWxTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVXaXRo
U3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlVGhyb3dTdGF0ZW1l
bnQpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVEZWJ1Z2dlcik6CisgICAgICAg
IChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUNvbnN0U3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6
QVNUQnVpbGRlcjo6YXBwZW5kQ29uc3REZWNsKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6
Y29tYmluZUNvbW1hTm9kZXMpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjphcHBlbmRCaW5h
cnlPcGVyYXRpb24pOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVBc3NpZ25tZW50
KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlTnVtYmVyKToKKyAgICAgICAgKEpT
Qzo6QVNUQnVpbGRlcjo6bWFrZVR5cGVPZk5vZGUpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVy
OjptYWtlRGVsZXRlTm9kZSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6Om1ha2VOZWdhdGVO
b2RlKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6bWFrZUJpdHdpc2VOb3ROb2RlKToKKyAg
ICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6bWFrZU11bHROb2RlKToKKyAgICAgICAgKEpTQzo6QVNU
QnVpbGRlcjo6bWFrZURpdk5vZGUpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjptYWtlTW9k
Tm9kZSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6Om1ha2VBZGROb2RlKToKKyAgICAgICAg
KEpTQzo6QVNUQnVpbGRlcjo6bWFrZVN1Yk5vZGUpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVy
OjptYWtlTGVmdFNoaWZ0Tm9kZSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6Om1ha2VSaWdo
dFNoaWZ0Tm9kZSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6Om1ha2VVUmlnaHRTaGlmdE5v
ZGUpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjptYWtlQml0T3JOb2RlKToKKyAgICAgICAg
KEpTQzo6QVNUQnVpbGRlcjo6bWFrZUJpdEFuZE5vZGUpOgorICAgICAgICAoSlNDOjpBU1RCdWls
ZGVyOjptYWtlQml0WE9yTm9kZSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6Om1ha2VGdW5j
dGlvbkNhbGxOb2RlKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6bWFrZUJpbmFyeU5vZGUp
OgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjptYWtlQXNzaWduTm9kZSk6CisgICAgICAgIChK
U0M6OkFTVEJ1aWxkZXI6Om1ha2VQcmVmaXhOb2RlKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRl
cjo6bWFrZVBvc3RmaXhOb2RlKToKKyAgICAgICAgKiBwYXJzZXIvTGV4ZXIuY3BwOgorICAgICAg
ICAoSlNDOjo6OnNldENvZGUpOgorICAgICAgICAoSlNDOjo6OmludGVybmFsU2hpZnQpOgorICAg
ICAgICAoSlNDOjo6OnNoaWZ0KToKKyAgICAgICAgKEpTQzo6OjpsZXgpOgorICAgICAgICAqIHBh
cnNlci9MZXhlci5oOgorICAgICAgICAoTGV4ZXIpOgorICAgICAgICAoSlNDOjo6OmxleEV4cGVj
dElkZW50aWZpZXIpOgorICAgICAgICAqIHBhcnNlci9Ob2RlQ29uc3RydWN0b3JzLmg6CisgICAg
ICAgIChKU0M6Ok5vZGU6Ok5vZGUpOgorICAgICAgICAoSlNDOjpFeHByZXNzaW9uTm9kZTo6RXhw
cmVzc2lvbk5vZGUpOgorICAgICAgICAoSlNDOjpTdGF0ZW1lbnROb2RlOjpTdGF0ZW1lbnROb2Rl
KToKKyAgICAgICAgKEpTQzo6TnVsbE5vZGU6Ok51bGxOb2RlKToKKyAgICAgICAgKEpTQzo6Qm9v
bGVhbk5vZGU6OkJvb2xlYW5Ob2RlKToKKyAgICAgICAgKEpTQzo6TnVtYmVyTm9kZTo6TnVtYmVy
Tm9kZSk6CisgICAgICAgIChKU0M6OlN0cmluZ05vZGU6OlN0cmluZ05vZGUpOgorICAgICAgICAo
SlNDOjpSZWdFeHBOb2RlOjpSZWdFeHBOb2RlKToKKyAgICAgICAgKEpTQzo6VGhpc05vZGU6OlRo
aXNOb2RlKToKKyAgICAgICAgKEpTQzo6UmVzb2x2ZU5vZGU6OlJlc29sdmVOb2RlKToKKyAgICAg
ICAgKEpTQzo6QXJyYXlOb2RlOjpBcnJheU5vZGUpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eUxp
c3ROb2RlOjpQcm9wZXJ0eUxpc3ROb2RlKToKKyAgICAgICAgKEpTQzo6T2JqZWN0TGl0ZXJhbE5v
ZGU6Ok9iamVjdExpdGVyYWxOb2RlKToKKyAgICAgICAgKEpTQzo6QnJhY2tldEFjY2Vzc29yTm9k
ZTo6QnJhY2tldEFjY2Vzc29yTm9kZSk6CisgICAgICAgIChKU0M6OkRvdEFjY2Vzc29yTm9kZTo6
RG90QWNjZXNzb3JOb2RlKToKKyAgICAgICAgKEpTQzo6QXJndW1lbnRMaXN0Tm9kZTo6QXJndW1l
bnRMaXN0Tm9kZSk6CisgICAgICAgIChKU0M6Ok5ld0V4cHJOb2RlOjpOZXdFeHByTm9kZSk6Cisg
ICAgICAgIChKU0M6OkV2YWxGdW5jdGlvbkNhbGxOb2RlOjpFdmFsRnVuY3Rpb25DYWxsTm9kZSk6
CisgICAgICAgIChKU0M6OkZ1bmN0aW9uQ2FsbFZhbHVlTm9kZTo6RnVuY3Rpb25DYWxsVmFsdWVO
b2RlKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25DYWxsUmVzb2x2ZU5vZGU6OkZ1bmN0aW9uQ2Fs
bFJlc29sdmVOb2RlKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25DYWxsQnJhY2tldE5vZGU6OkZ1
bmN0aW9uQ2FsbEJyYWNrZXROb2RlKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25DYWxsRG90Tm9k
ZTo6RnVuY3Rpb25DYWxsRG90Tm9kZSk6CisgICAgICAgIChKU0M6OkNhbGxGdW5jdGlvbkNhbGxE
b3ROb2RlOjpDYWxsRnVuY3Rpb25DYWxsRG90Tm9kZSk6CisgICAgICAgIChKU0M6OkFwcGx5RnVu
Y3Rpb25DYWxsRG90Tm9kZTo6QXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlKToKKyAgICAgICAgKEpT
Qzo6UHJlUG9zdFJlc29sdmVOb2RlOjpQcmVQb3N0UmVzb2x2ZU5vZGUpOgorICAgICAgICAoSlND
OjpQb3N0Zml4UmVzb2x2ZU5vZGU6OlBvc3RmaXhSZXNvbHZlTm9kZSk6CisgICAgICAgIChKU0M6
OlBvc3RmaXhCcmFja2V0Tm9kZTo6UG9zdGZpeEJyYWNrZXROb2RlKToKKyAgICAgICAgKEpTQzo6
UG9zdGZpeERvdE5vZGU6OlBvc3RmaXhEb3ROb2RlKToKKyAgICAgICAgKEpTQzo6UG9zdGZpeEVy
cm9yTm9kZTo6UG9zdGZpeEVycm9yTm9kZSk6CisgICAgICAgIChKU0M6OkRlbGV0ZVJlc29sdmVO
b2RlOjpEZWxldGVSZXNvbHZlTm9kZSk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJyYWNrZXROb2Rl
OjpEZWxldGVCcmFja2V0Tm9kZSk6CisgICAgICAgIChKU0M6OkRlbGV0ZURvdE5vZGU6OkRlbGV0
ZURvdE5vZGUpOgorICAgICAgICAoSlNDOjpEZWxldGVWYWx1ZU5vZGU6OkRlbGV0ZVZhbHVlTm9k
ZSk6CisgICAgICAgIChKU0M6OlZvaWROb2RlOjpWb2lkTm9kZSk6CisgICAgICAgIChKU0M6OlR5
cGVPZlJlc29sdmVOb2RlOjpUeXBlT2ZSZXNvbHZlTm9kZSk6CisgICAgICAgIChKU0M6OlR5cGVP
ZlZhbHVlTm9kZTo6VHlwZU9mVmFsdWVOb2RlKToKKyAgICAgICAgKEpTQzo6UHJlZml4UmVzb2x2
ZU5vZGU6OlByZWZpeFJlc29sdmVOb2RlKToKKyAgICAgICAgKEpTQzo6UHJlZml4QnJhY2tldE5v
ZGU6OlByZWZpeEJyYWNrZXROb2RlKToKKyAgICAgICAgKEpTQzo6UHJlZml4RG90Tm9kZTo6UHJl
Zml4RG90Tm9kZSk6CisgICAgICAgIChKU0M6OlByZWZpeEVycm9yTm9kZTo6UHJlZml4RXJyb3JO
b2RlKToKKyAgICAgICAgKEpTQzo6VW5hcnlPcE5vZGU6OlVuYXJ5T3BOb2RlKToKKyAgICAgICAg
KEpTQzo6VW5hcnlQbHVzTm9kZTo6VW5hcnlQbHVzTm9kZSk6CisgICAgICAgIChKU0M6Ok5lZ2F0
ZU5vZGU6Ok5lZ2F0ZU5vZGUpOgorICAgICAgICAoSlNDOjpCaXR3aXNlTm90Tm9kZTo6Qml0d2lz
ZU5vdE5vZGUpOgorICAgICAgICAoSlNDOjpMb2dpY2FsTm90Tm9kZTo6TG9naWNhbE5vdE5vZGUp
OgorICAgICAgICAoSlNDOjpCaW5hcnlPcE5vZGU6OkJpbmFyeU9wTm9kZSk6CisgICAgICAgIChK
U0M6Ok11bHROb2RlOjpNdWx0Tm9kZSk6CisgICAgICAgIChKU0M6OkRpdk5vZGU6OkRpdk5vZGUp
OgorICAgICAgICAoSlNDOjpNb2ROb2RlOjpNb2ROb2RlKToKKyAgICAgICAgKEpTQzo6QWRkTm9k
ZTo6QWRkTm9kZSk6CisgICAgICAgIChKU0M6OlN1Yk5vZGU6OlN1Yk5vZGUpOgorICAgICAgICAo
SlNDOjpMZWZ0U2hpZnROb2RlOjpMZWZ0U2hpZnROb2RlKToKKyAgICAgICAgKEpTQzo6UmlnaHRT
aGlmdE5vZGU6OlJpZ2h0U2hpZnROb2RlKToKKyAgICAgICAgKEpTQzo6VW5zaWduZWRSaWdodFNo
aWZ0Tm9kZTo6VW5zaWduZWRSaWdodFNoaWZ0Tm9kZSk6CisgICAgICAgIChKU0M6Okxlc3NOb2Rl
OjpMZXNzTm9kZSk6CisgICAgICAgIChKU0M6OkdyZWF0ZXJOb2RlOjpHcmVhdGVyTm9kZSk6Cisg
ICAgICAgIChKU0M6Okxlc3NFcU5vZGU6Okxlc3NFcU5vZGUpOgorICAgICAgICAoSlNDOjpHcmVh
dGVyRXFOb2RlOjpHcmVhdGVyRXFOb2RlKToKKyAgICAgICAgKEpTQzo6VGhyb3dhYmxlQmluYXJ5
T3BOb2RlOjpUaHJvd2FibGVCaW5hcnlPcE5vZGUpOgorICAgICAgICAoSlNDOjpJbnN0YW5jZU9m
Tm9kZTo6SW5zdGFuY2VPZk5vZGUpOgorICAgICAgICAoSlNDOjpJbk5vZGU6OkluTm9kZSk6Cisg
ICAgICAgIChKU0M6OkVxdWFsTm9kZTo6RXF1YWxOb2RlKToKKyAgICAgICAgKEpTQzo6Tm90RXF1
YWxOb2RlOjpOb3RFcXVhbE5vZGUpOgorICAgICAgICAoSlNDOjpTdHJpY3RFcXVhbE5vZGU6OlN0
cmljdEVxdWFsTm9kZSk6CisgICAgICAgIChKU0M6Ok5vdFN0cmljdEVxdWFsTm9kZTo6Tm90U3Ry
aWN0RXF1YWxOb2RlKToKKyAgICAgICAgKEpTQzo6Qml0QW5kTm9kZTo6Qml0QW5kTm9kZSk6Cisg
ICAgICAgIChKU0M6OkJpdE9yTm9kZTo6Qml0T3JOb2RlKToKKyAgICAgICAgKEpTQzo6Qml0WE9y
Tm9kZTo6Qml0WE9yTm9kZSk6CisgICAgICAgIChKU0M6OkxvZ2ljYWxPcE5vZGU6OkxvZ2ljYWxP
cE5vZGUpOgorICAgICAgICAoSlNDOjpDb25kaXRpb25hbE5vZGU6OkNvbmRpdGlvbmFsTm9kZSk6
CisgICAgICAgIChKU0M6OlJlYWRNb2RpZnlSZXNvbHZlTm9kZTo6UmVhZE1vZGlmeVJlc29sdmVO
b2RlKToKKyAgICAgICAgKEpTQzo6QXNzaWduUmVzb2x2ZU5vZGU6OkFzc2lnblJlc29sdmVOb2Rl
KToKKyAgICAgICAgKEpTQzo6UmVhZE1vZGlmeUJyYWNrZXROb2RlOjpSZWFkTW9kaWZ5QnJhY2tl
dE5vZGUpOgorICAgICAgICAoSlNDOjpBc3NpZ25CcmFja2V0Tm9kZTo6QXNzaWduQnJhY2tldE5v
ZGUpOgorICAgICAgICAoSlNDOjpBc3NpZ25Eb3ROb2RlOjpBc3NpZ25Eb3ROb2RlKToKKyAgICAg
ICAgKEpTQzo6UmVhZE1vZGlmeURvdE5vZGU6OlJlYWRNb2RpZnlEb3ROb2RlKToKKyAgICAgICAg
KEpTQzo6QXNzaWduRXJyb3JOb2RlOjpBc3NpZ25FcnJvck5vZGUpOgorICAgICAgICAoSlNDOjpD
b21tYU5vZGU6OkNvbW1hTm9kZSk6CisgICAgICAgIChKU0M6OkNvbnN0U3RhdGVtZW50Tm9kZTo6
Q29uc3RTdGF0ZW1lbnROb2RlKToKKyAgICAgICAgKEpTQzo6RW1wdHlTdGF0ZW1lbnROb2RlOjpF
bXB0eVN0YXRlbWVudE5vZGUpOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlclN0YXRlbWVudE5vZGU6
OkRlYnVnZ2VyU3RhdGVtZW50Tm9kZSk6CisgICAgICAgIChKU0M6OkV4cHJTdGF0ZW1lbnROb2Rl
OjpFeHByU3RhdGVtZW50Tm9kZSk6CisgICAgICAgIChKU0M6OlZhclN0YXRlbWVudE5vZGU6OlZh
clN0YXRlbWVudE5vZGUpOgorICAgICAgICAoSlNDOjpJZk5vZGU6OklmTm9kZSk6CisgICAgICAg
IChKU0M6OklmRWxzZU5vZGU6OklmRWxzZU5vZGUpOgorICAgICAgICAoSlNDOjpEb1doaWxlTm9k
ZTo6RG9XaGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpXaGlsZU5vZGU6OldoaWxlTm9kZSk6Cisg
ICAgICAgIChKU0M6OkZvck5vZGU6OkZvck5vZGUpOgorICAgICAgICAoSlNDOjpDb250aW51ZU5v
ZGU6OkNvbnRpbnVlTm9kZSk6CisgICAgICAgIChKU0M6OkJyZWFrTm9kZTo6QnJlYWtOb2RlKToK
KyAgICAgICAgKEpTQzo6UmV0dXJuTm9kZTo6UmV0dXJuTm9kZSk6CisgICAgICAgIChKU0M6Oldp
dGhOb2RlOjpXaXRoTm9kZSk6CisgICAgICAgIChKU0M6OkxhYmVsTm9kZTo6TGFiZWxOb2RlKToK
KyAgICAgICAgKEpTQzo6VGhyb3dOb2RlOjpUaHJvd05vZGUpOgorICAgICAgICAoSlNDOjpUcnlO
b2RlOjpUcnlOb2RlKToKKyAgICAgICAgKEpTQzo6RnVuY0V4cHJOb2RlOjpGdW5jRXhwck5vZGUp
OgorICAgICAgICAoSlNDOjpGdW5jRGVjbE5vZGU6OkZ1bmNEZWNsTm9kZSk6CisgICAgICAgIChK
U0M6OlN3aXRjaE5vZGU6OlN3aXRjaE5vZGUpOgorICAgICAgICAoSlNDOjpDb25zdERlY2xOb2Rl
OjpDb25zdERlY2xOb2RlKToKKyAgICAgICAgKEpTQzo6QmxvY2tOb2RlOjpCbG9ja05vZGUpOgor
ICAgICAgICAoSlNDOjpGb3JJbk5vZGU6OkZvckluTm9kZSk6CisgICAgICAgICogcGFyc2VyL05v
ZGVzLmNwcDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OlN0YXRlbWVudE5vZGU6OnNl
dExvYyk6CisgICAgICAgIChKU0M6OlNjb3BlTm9kZTo6U2NvcGVOb2RlKToKKyAgICAgICAgKEpT
Qzo6UHJvZ3JhbU5vZGU6OlByb2dyYW1Ob2RlKToKKyAgICAgICAgKEpTQzo6UHJvZ3JhbU5vZGU6
OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkV2YWxOb2RlOjpFdmFsTm9kZSk6CisgICAgICAgIChK
U0M6OkV2YWxOb2RlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkJvZHlOb2RlOjpG
dW5jdGlvbkJvZHlOb2RlKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25Cb2R5Tm9kZTo6Y3JlYXRl
KToKKyAgICAgICAgKiBwYXJzZXIvTm9kZXMuaDoKKyAgICAgICAgKE5vZGUpOgorICAgICAgICAo
RXhwcmVzc2lvbk5vZGUpOgorICAgICAgICAoU3RhdGVtZW50Tm9kZSk6CisgICAgICAgIChOdWxs
Tm9kZSk6CisgICAgICAgIChCb29sZWFuTm9kZSk6CisgICAgICAgIChOdW1iZXJOb2RlKToKKyAg
ICAgICAgKFN0cmluZ05vZGUpOgorICAgICAgICAoUmVnRXhwTm9kZSk6CisgICAgICAgIChUaGlz
Tm9kZSk6CisgICAgICAgIChSZXNvbHZlTm9kZSk6CisgICAgICAgIChBcnJheU5vZGUpOgorICAg
ICAgICAoUHJvcGVydHlMaXN0Tm9kZSk6CisgICAgICAgIChPYmplY3RMaXRlcmFsTm9kZSk6Cisg
ICAgICAgIChCcmFja2V0QWNjZXNzb3JOb2RlKToKKyAgICAgICAgKERvdEFjY2Vzc29yTm9kZSk6
CisgICAgICAgIChBcmd1bWVudExpc3ROb2RlKToKKyAgICAgICAgKE5ld0V4cHJOb2RlKToKKyAg
ICAgICAgKEV2YWxGdW5jdGlvbkNhbGxOb2RlKToKKyAgICAgICAgKEZ1bmN0aW9uQ2FsbFZhbHVl
Tm9kZSk6CisgICAgICAgIChGdW5jdGlvbkNhbGxSZXNvbHZlTm9kZSk6CisgICAgICAgIChGdW5j
dGlvbkNhbGxCcmFja2V0Tm9kZSk6CisgICAgICAgIChGdW5jdGlvbkNhbGxEb3ROb2RlKToKKyAg
ICAgICAgKENhbGxGdW5jdGlvbkNhbGxEb3ROb2RlKToKKyAgICAgICAgKEFwcGx5RnVuY3Rpb25D
YWxsRG90Tm9kZSk6CisgICAgICAgIChQcmVQb3N0UmVzb2x2ZU5vZGUpOgorICAgICAgICAoUG9z
dGZpeFJlc29sdmVOb2RlKToKKyAgICAgICAgKFBvc3RmaXhCcmFja2V0Tm9kZSk6CisgICAgICAg
IChQb3N0Zml4RG90Tm9kZSk6CisgICAgICAgIChQb3N0Zml4RXJyb3JOb2RlKToKKyAgICAgICAg
KERlbGV0ZVJlc29sdmVOb2RlKToKKyAgICAgICAgKERlbGV0ZUJyYWNrZXROb2RlKToKKyAgICAg
ICAgKERlbGV0ZURvdE5vZGUpOgorICAgICAgICAoRGVsZXRlVmFsdWVOb2RlKToKKyAgICAgICAg
KFZvaWROb2RlKToKKyAgICAgICAgKFR5cGVPZlJlc29sdmVOb2RlKToKKyAgICAgICAgKFR5cGVP
ZlZhbHVlTm9kZSk6CisgICAgICAgIChQcmVmaXhSZXNvbHZlTm9kZSk6CisgICAgICAgIChQcmVm
aXhCcmFja2V0Tm9kZSk6CisgICAgICAgIChQcmVmaXhEb3ROb2RlKToKKyAgICAgICAgKFByZWZp
eEVycm9yTm9kZSk6CisgICAgICAgIChVbmFyeU9wTm9kZSk6CisgICAgICAgIChVbmFyeVBsdXNO
b2RlKToKKyAgICAgICAgKE5lZ2F0ZU5vZGUpOgorICAgICAgICAoQml0d2lzZU5vdE5vZGUpOgor
ICAgICAgICAoTG9naWNhbE5vdE5vZGUpOgorICAgICAgICAoQmluYXJ5T3BOb2RlKToKKyAgICAg
ICAgKE11bHROb2RlKToKKyAgICAgICAgKERpdk5vZGUpOgorICAgICAgICAoTW9kTm9kZSk6Cisg
ICAgICAgIChBZGROb2RlKToKKyAgICAgICAgKFN1Yk5vZGUpOgorICAgICAgICAoTGVmdFNoaWZ0
Tm9kZSk6CisgICAgICAgIChSaWdodFNoaWZ0Tm9kZSk6CisgICAgICAgIChVbnNpZ25lZFJpZ2h0
U2hpZnROb2RlKToKKyAgICAgICAgKExlc3NOb2RlKToKKyAgICAgICAgKEdyZWF0ZXJOb2RlKToK
KyAgICAgICAgKExlc3NFcU5vZGUpOgorICAgICAgICAoR3JlYXRlckVxTm9kZSk6CisgICAgICAg
IChUaHJvd2FibGVCaW5hcnlPcE5vZGUpOgorICAgICAgICAoSW5zdGFuY2VPZk5vZGUpOgorICAg
ICAgICAoSW5Ob2RlKToKKyAgICAgICAgKEVxdWFsTm9kZSk6CisgICAgICAgIChOb3RFcXVhbE5v
ZGUpOgorICAgICAgICAoU3RyaWN0RXF1YWxOb2RlKToKKyAgICAgICAgKE5vdFN0cmljdEVxdWFs
Tm9kZSk6CisgICAgICAgIChCaXRBbmROb2RlKToKKyAgICAgICAgKEJpdE9yTm9kZSk6CisgICAg
ICAgIChCaXRYT3JOb2RlKToKKyAgICAgICAgKExvZ2ljYWxPcE5vZGUpOgorICAgICAgICAoQ29u
ZGl0aW9uYWxOb2RlKToKKyAgICAgICAgKFJlYWRNb2RpZnlSZXNvbHZlTm9kZSk6CisgICAgICAg
IChBc3NpZ25SZXNvbHZlTm9kZSk6CisgICAgICAgIChSZWFkTW9kaWZ5QnJhY2tldE5vZGUpOgor
ICAgICAgICAoQXNzaWduQnJhY2tldE5vZGUpOgorICAgICAgICAoQXNzaWduRG90Tm9kZSk6Cisg
ICAgICAgIChSZWFkTW9kaWZ5RG90Tm9kZSk6CisgICAgICAgIChBc3NpZ25FcnJvck5vZGUpOgor
ICAgICAgICAoQ29tbWFOb2RlKToKKyAgICAgICAgKENvbnN0RGVjbE5vZGUpOgorICAgICAgICAo
Q29uc3RTdGF0ZW1lbnROb2RlKToKKyAgICAgICAgKEJsb2NrTm9kZSk6CisgICAgICAgIChFbXB0
eVN0YXRlbWVudE5vZGUpOgorICAgICAgICAoRGVidWdnZXJTdGF0ZW1lbnROb2RlKToKKyAgICAg
ICAgKEV4cHJTdGF0ZW1lbnROb2RlKToKKyAgICAgICAgKFZhclN0YXRlbWVudE5vZGUpOgorICAg
ICAgICAoSWZOb2RlKToKKyAgICAgICAgKElmRWxzZU5vZGUpOgorICAgICAgICAoRG9XaGlsZU5v
ZGUpOgorICAgICAgICAoV2hpbGVOb2RlKToKKyAgICAgICAgKEZvck5vZGUpOgorICAgICAgICAo
Rm9ySW5Ob2RlKToKKyAgICAgICAgKENvbnRpbnVlTm9kZSk6CisgICAgICAgIChCcmVha05vZGUp
OgorICAgICAgICAoUmV0dXJuTm9kZSk6CisgICAgICAgIChXaXRoTm9kZSk6CisgICAgICAgIChM
YWJlbE5vZGUpOgorICAgICAgICAoVGhyb3dOb2RlKToKKyAgICAgICAgKFRyeU5vZGUpOgorICAg
ICAgICAoU2NvcGVOb2RlKToKKyAgICAgICAgKFByb2dyYW1Ob2RlKToKKyAgICAgICAgKEV2YWxO
b2RlKToKKyAgICAgICAgKEZ1bmN0aW9uQm9keU5vZGUpOgorICAgICAgICAoRnVuY0V4cHJOb2Rl
KToKKyAgICAgICAgKEZ1bmNEZWNsTm9kZSk6CisgICAgICAgIChTd2l0Y2hOb2RlKToKKyAgICAg
ICAgKiBwYXJzZXIvUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6OjpwYXJzZVNvdXJjZUVsZW1l
bnRzKToKKyAgICAgICAgKEpTQzo6OjpwYXJzZVZhckRlY2xhcmF0aW9uKToKKyAgICAgICAgKEpT
Qzo6OjpwYXJzZUNvbnN0RGVjbGFyYXRpb24pOgorICAgICAgICAoSlNDOjo6OnBhcnNlRG9XaGls
ZVN0YXRlbWVudCk6CisgICAgICAgIChKU0M6Ojo6cGFyc2VXaGlsZVN0YXRlbWVudCk6CisgICAg
ICAgIChKU0M6Ojo6cGFyc2VWYXJEZWNsYXJhdGlvbkxpc3QpOgorICAgICAgICAoSlNDOjo6OnBh
cnNlQ29uc3REZWNsYXJhdGlvbkxpc3QpOgorICAgICAgICAoSlNDOjo6OnBhcnNlRm9yU3RhdGVt
ZW50KToKKyAgICAgICAgKEpTQzo6OjpwYXJzZUJyZWFrU3RhdGVtZW50KToKKyAgICAgICAgKEpT
Qzo6OjpwYXJzZUNvbnRpbnVlU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6OjpwYXJzZVJldHVy
blN0YXRlbWVudCk6CisgICAgICAgIChKU0M6Ojo6cGFyc2VUaHJvd1N0YXRlbWVudCk6CisgICAg
ICAgIChKU0M6Ojo6cGFyc2VXaXRoU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6OjpwYXJzZVN3
aXRjaFN0YXRlbWVudCk6CisgICAgICAgIChKU0M6Ojo6cGFyc2VUcnlTdGF0ZW1lbnQpOgorICAg
ICAgICAoSlNDOjo6OnBhcnNlRGVidWdnZXJTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjo6OnBh
cnNlQmxvY2tTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjo6OnBhcnNlU3RhdGVtZW50KToKKyAg
ICAgICAgKEpTQzo6OjpwYXJzZUZ1bmN0aW9uQm9keSk6CisgICAgICAgIChKU0M6Ojo6cGFyc2VG
dW5jdGlvbkluZm8pOgorICAgICAgICAoSlNDOjo6OnBhcnNlRnVuY3Rpb25EZWNsYXJhdGlvbik6
CisgICAgICAgIChKU0M6Ojo6cGFyc2VFeHByZXNzaW9uT3JMYWJlbFN0YXRlbWVudCk6CisgICAg
ICAgIChKU0M6Ojo6cGFyc2VFeHByZXNzaW9uU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6Ojpw
YXJzZUlmU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6OjpwYXJzZUV4cHJlc3Npb24pOgorICAg
ICAgICAoSlNDOjo6OnBhcnNlQXNzaWdubWVudEV4cHJlc3Npb24pOgorICAgICAgICAoSlNDOjo6
OnBhcnNlQ29uZGl0aW9uYWxFeHByZXNzaW9uKToKKyAgICAgICAgKEpTQzo6OjpwYXJzZUJpbmFy
eUV4cHJlc3Npb24pOgorICAgICAgICAoSlNDOjo6OnBhcnNlUHJvcGVydHkpOgorICAgICAgICAo
SlNDOjo6OnBhcnNlT2JqZWN0TGl0ZXJhbCk6CisgICAgICAgIChKU0M6Ojo6cGFyc2VTdHJpY3RP
YmplY3RMaXRlcmFsKToKKyAgICAgICAgKEpTQzo6OjpwYXJzZUFycmF5TGl0ZXJhbCk6CisgICAg
ICAgIChKU0M6Ojo6cGFyc2VQcmltYXJ5RXhwcmVzc2lvbik6CisgICAgICAgIChKU0M6Ojo6cGFy
c2VBcmd1bWVudHMpOgorICAgICAgICAoSlNDOjo6OnBhcnNlTWVtYmVyRXhwcmVzc2lvbik6Cisg
ICAgICAgIChKU0M6Ojo6cGFyc2VVbmFyeUV4cHJlc3Npb24pOgorICAgICAgICAqIHBhcnNlci9Q
YXJzZXIuaDoKKyAgICAgICAgKEpTQzo6UGFyc2VyOjpuZXh0KToKKyAgICAgICAgKEpTQzo6UGFy
c2VyOjpuZXh0RXhwZWN0SWRlbnRpZmllcik6CisgICAgICAgIChKU0M6OlBhcnNlcjo6dG9rZW5T
dGFydCk6CisgICAgICAgIChKU0M6OlBhcnNlcjo6dG9rZW5MaW5lKToKKyAgICAgICAgKEpTQzo6
UGFyc2VyOjp0b2tlbkVuZCk6CisgICAgICAgIChKU0M6OlBhcnNlcjo6Z2V0VG9rZW5OYW1lKToK
KyAgICAgICAgKEpTQzo6OjpwYXJzZSk6CisgICAgICAgICogcGFyc2VyL1BhcnNlclRva2Vucy5o
OgorICAgICAgICAoSlNDOjpKU1Rva2VuSW5mbzo6SlNUb2tlbkluZm8pOgorICAgICAgICAoSlNU
b2tlbkluZm8pOgorICAgICAgICAoSlNUb2tlbik6CisgICAgICAgICogcGFyc2VyL1NvdXJjZVBy
b3ZpZGVyQ2FjaGVJdGVtLmg6CisgICAgICAgIChKU0M6OlNvdXJjZVByb3ZpZGVyQ2FjaGVJdGVt
OjpjbG9zZUJyYWNlVG9rZW4pOgorICAgICAgICAqIHBhcnNlci9TeW50YXhDaGVja2VyLmg6Cisg
ICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6Om1ha2VGdW5jdGlvbkNhbGxOb2RlKToKKyAgICAg
ICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlQ29tbWFFeHByKToKKyAgICAgICAgKEpTQzo6
U3ludGF4Q2hlY2tlcjo6bWFrZUFzc2lnbk5vZGUpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVj
a2VyOjptYWtlUHJlZml4Tm9kZSk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6Om1ha2VQ
b3N0Zml4Tm9kZSk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6Om1ha2VUeXBlT2ZOb2Rl
KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6bWFrZURlbGV0ZU5vZGUpOgorICAgICAg
ICAoSlNDOjpTeW50YXhDaGVja2VyOjptYWtlTmVnYXRlTm9kZSk6CisgICAgICAgIChKU0M6OlN5
bnRheENoZWNrZXI6Om1ha2VCaXR3aXNlTm90Tm9kZSk6CisgICAgICAgIChKU0M6OlN5bnRheENo
ZWNrZXI6OmNyZWF0ZUxvZ2ljYWxOb3QpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpj
cmVhdGVVbmFyeVBsdXMpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVWb2lk
KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6dGhpc0V4cHIpOgorICAgICAgICAoSlND
OjpTeW50YXhDaGVja2VyOjpjcmVhdGVSZXNvbHZlKToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hl
Y2tlcjo6Y3JlYXRlT2JqZWN0TGl0ZXJhbCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6
OmNyZWF0ZUFycmF5KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlTnVtYmVy
RXhwcik6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZVN0cmluZyk6CisgICAg
ICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZUJvb2xlYW4pOgorICAgICAgICAoSlNDOjpT
eW50YXhDaGVja2VyOjpjcmVhdGVOdWxsKToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6
Y3JlYXRlQnJhY2tldEFjY2Vzcyk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0
ZURvdEFjY2Vzcyk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZVJlZ0V4cCk6
CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZU5ld0V4cHIpOgorICAgICAgICAo
SlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVDb25kaXRpb25hbEV4cHIpOgorICAgICAgICAoSlND
OjpTeW50YXhDaGVja2VyOjpjcmVhdGVBc3NpZ25SZXNvbHZlKToKKyAgICAgICAgKEpTQzo6U3lu
dGF4Q2hlY2tlcjo6Y3JlYXRlRnVuY3Rpb25FeHByKToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hl
Y2tlcjo6Y3JlYXRlRnVuY3Rpb25Cb2R5KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6
Y3JlYXRlQXJndW1lbnRzTGlzdCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0
ZVByb3BlcnR5TGlzdCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZUZ1bmNE
ZWNsU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlQmxvY2tT
dGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVFeHByU3RhdGVt
ZW50KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlSWZTdGF0ZW1lbnQpOgor
ICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVGb3JMb29wKToKKyAgICAgICAgKEpT
Qzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlRm9ySW5Mb29wKToKKyAgICAgICAgKEpTQzo6U3ludGF4
Q2hlY2tlcjo6Y3JlYXRlRW1wdHlTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVj
a2VyOjpjcmVhdGVWYXJTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpj
cmVhdGVSZXR1cm5TdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVh
dGVCcmVha1N0YXRlbWVudCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZUNv
bnRpbnVlU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlVHJ5
U3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlU3dpdGNoU3Rh
dGVtZW50KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlV2hpbGVTdGF0ZW1l
bnQpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVXaXRoU3RhdGVtZW50KToK
KyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlRG9XaGlsZVN0YXRlbWVudCk6Cisg
ICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZUxhYmVsU3RhdGVtZW50KToKKyAgICAg
ICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlVGhyb3dTdGF0ZW1lbnQpOgorICAgICAgICAo
SlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVEZWJ1Z2dlcik6CisgICAgICAgIChKU0M6OlN5bnRh
eENoZWNrZXI6OmNyZWF0ZUNvbnN0U3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hl
Y2tlcjo6YXBwZW5kQ29uc3REZWNsKToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3Jl
YXRlR2V0dGVyT3JTZXR0ZXJQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6
OmNvbWJpbmVDb21tYU5vZGVzKToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6b3BlcmF0
b3JTdGFja1BvcCk6CisKIDIwMTItMDgtMDEgIFBldGVyIFdhbmcgIDxwZXRlci53YW5nQHRvcmNo
bW9iaWxlLmNvbS5jbj4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBbSlNDXSBpbXBsZW1lbnQg
c2V0dGluZyBicmVha3BvaW50cyBieSBsaW5lOmNvbHVtbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGQ1NzcyMjQx
OWY1ZmU5YzljZTlmNDI2YzUzMzIzYmQyMDVmMGNiNmMuLmQ4ODZjM2E1YjUwOTQxNTA3ZmFkYjM3
Y2FkOTZlZmNiZmQ5NGQ0OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAxMi0wOC0w
MSAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CisKKyAgICAgICAg
VW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEyNDQwNi4KKyAgICAgICAgaHR0cDovL3RyYWMud2Vi
a2l0Lm9yZy9jaGFuZ2VzZXQvMTI0NDA2CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD05Mjk1MQorCisgICAgICAgIGl0IHNldCB0aGUgTWFjIGJvdHMgb24g
ZmlyZSAoUmVxdWVzdGVkIGJ5IHBpemxvIG9uICN3ZWJraXQpLgorCisgICAgICAgICogYmluZGlu
Z3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVi
dWdTZXJ2ZXI6OnNldEJyZWFrcG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdT
ZXJ2ZXI6OnJlbW92ZUJyZWFrcG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdT
ZXJ2ZXI6Omhhc0JyZWFrcG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2
ZXI6OmNyZWF0ZUNhbGxGcmFtZUFuZFBhdXNlSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0RGVidWdTZXJ2ZXI6OnVwZGF0ZUNhbGxGcmFtZUFuZFBhdXNlSWZOZWVkZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OmNhbGxFdmVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JpcHREZWJ1Z1NlcnZlcjo6YXRTdGF0ZW1lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OnJldHVybkV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cmlwdERlYnVnU2VydmVyOjpleGNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVi
dWdTZXJ2ZXI6OndpbGxFeGVjdXRlUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRE
ZWJ1Z1NlcnZlcjo6ZGlkRXhlY3V0ZVByb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0
RGVidWdTZXJ2ZXI6OmRpZFJlYWNoQnJlYWtwb2ludCk6CisgICAgICAgICogYmluZGluZ3MvanMv
U2NyaXB0RGVidWdTZXJ2ZXIuaDoKKyAgICAgICAgKFNjcmlwdERlYnVnU2VydmVyKToKKwogMjAx
Mi0wOC0wMSAgSWx5YSBUaWtob25vdnNreSAgPGxvaXNsb0BjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgV2ViIEluc3BlY3RvcjogdGVzdCBuYXRpdmUgbWVtb3J5IGluc3RydW1lbnRhdGlvbiBjb2Rl
IHdpdGggaGVscCBvZiB1bml0dGVzdHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9PcGNvZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNv
ZGUuaAppbmRleCA0MzA4ZTc5ZGY2YWEyM2Y1Y2Y1ZjI0NjI1Mzg4NDNiMjc0NGM5YTc4Li4xNGNl
ZmI5ZDkwNWQ1ZDkxMjBkMGE1MTdmMDc4ZmZkNTA1MTQ2NmExIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL09wY29kZS5oCkBAIC0xOTQsNyArMTk0LDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIG1hY3JvKG9wX3Rocm93LCAyKSBcCiAgICAgICAgIG1hY3JvKG9wX3Rocm93X3Jl
ZmVyZW5jZV9lcnJvciwgMikgXAogICAgICAgICBcCi0gICAgICAgIG1hY3JvKG9wX2RlYnVnLCA1
KSBcCisgICAgICAgIG1hY3JvKG9wX2RlYnVnLCA0KSBcCiAgICAgICAgIG1hY3JvKG9wX3Byb2Zp
bGVfd2lsbF9jYWxsLCAyKSBcCiAgICAgICAgIG1hY3JvKG9wX3Byb2ZpbGVfZGlkX2NhbGwsIDIp
IFwKICAgICAgICAgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCBhYzIzNGI3Zjg4YmFjMzVmMjIzNjQ3
NzQ0NmI0Mjc5OWNmOWZjYTEzLi4zM2YyODJjNjY0NjU2MDk0MzM5YTRmNjY2MzU0YTExZDhiNjIy
Nzc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtMjA4Myw3ICsyMDgzLDcgQEAgdm9pZCBCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdFBvcFNjb3BlKCkKICAgICBtX2R5bmFtaWNTY29wZURlcHRoLS07CiB9
CiAKLXZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWJ1Z0hvb2soRGVidWdIb29rSUQgZGVi
dWdIb29rSUQsIGludCBmaXJzdExpbmUsIGludCBsYXN0TGluZSwgaW50IGNvbHVtbikKK3ZvaWQg
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWJ1Z0hvb2soRGVidWdIb29rSUQgZGVidWdIb29rSUQs
IGludCBmaXJzdExpbmUsIGludCBsYXN0TGluZSkKIHsKICNpZiBFTkFCTEUoREVCVUdfV0lUSF9C
UkVBS1BPSU5UKQogICAgIGlmIChkZWJ1Z0hvb2tJRCAhPSBEaWRSZWFjaEJyZWFrcG9pbnQpCkBA
IC0yMDk2LDcgKzIwOTYsNiBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGVidWdIb29r
KERlYnVnSG9va0lEIGRlYnVnSG9va0lELCBpbnQgZmlyc3RMaW5lLCBpbgogICAgIGluc3RydWN0
aW9ucygpLmFwcGVuZChkZWJ1Z0hvb2tJRCk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGZp
cnN0TGluZSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGxhc3RMaW5lKTsKLSAgICBpbnN0
cnVjdGlvbnMoKS5hcHBlbmQoY29sdW1uKTsKIH0KIAogdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6
cHVzaEZpbmFsbHlDb250ZXh0KFN0YXRlbWVudE5vZGUqIGZpbmFsbHlCbG9jaykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3Iu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3Iu
aAppbmRleCA0OTA5OTFmYTdmNzEyOTZhMmY5NTRkY2U0NDFhMDZhMmI4N2Y5YTgxLi41MmZkN2U4
M2M2YzM1MDMzNTk5MTM2YzJlYjZkMDhmMmQxNjJiNDk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCkBAIC01MDYs
NyArNTA2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRQdXNo
U2NvcGUoUmVnaXN0ZXJJRCogc2NvcGUpOwogICAgICAgICB2b2lkIGVtaXRQb3BTY29wZSgpOwog
Ci0gICAgICAgIHZvaWQgZW1pdERlYnVnSG9vayhEZWJ1Z0hvb2tJRCwgaW50IGZpcnN0TGluZSwg
aW50IGxhc3RMaW5lLCBpbnQgY29sdW1uKTsKKyAgICAgICAgdm9pZCBlbWl0RGVidWdIb29rKERl
YnVnSG9va0lELCBpbnQgZmlyc3RMaW5lLCBpbnQgbGFzdExpbmUpOwogCiAgICAgICAgIGludCBz
Y29wZURlcHRoKCkgeyByZXR1cm4gbV9keW5hbWljU2NvcGVEZXB0aCArIG1fZmluYWxseURlcHRo
OyB9CiAgICAgICAgIGJvb2wgaGFzRmluYWxpc2VyKCkgeyByZXR1cm4gbV9maW5hbGx5RGVwdGgg
IT0gMDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9O
b2Rlc0NvZGVnZW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rl
c0NvZGVnZW4uY3BwCmluZGV4IDRhY2M1NzNlZDA5MzgxMzAyNThhNDM3NTUzOGVhZWM4MjE3NDkz
NGIuLmQyNDNlOGNlMDA4NDliNTUyZDk4ZGIwNTAxYzM2OWE0MTVkMmVkMGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKQEAg
LTIwMiwyMSArMjAyLDE4IEBAIGJvb2wgQXJyYXlOb2RlOjppc1NpbXBsZUFycmF5KCkgY29uc3QK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotQXJndW1lbnRMaXN0Tm9kZSogQXJyYXlOb2RlOjp0b0Fy
Z3VtZW50TGlzdChKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGludCBsaW5lTnVtYmVyLCBpbnQg
Y29sdW1uTnVtYmVyKSBjb25zdAorQXJndW1lbnRMaXN0Tm9kZSogQXJyYXlOb2RlOjp0b0FyZ3Vt
ZW50TGlzdChKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGludCBsaW5lTnVtYmVyKSBjb25zdAog
ewogICAgIEFTU0VSVCghbV9lbGlzaW9uICYmICFtX29wdGlvbmFsKTsKICAgICBFbGVtZW50Tm9k
ZSogcHRyID0gbV9lbGVtZW50OwogICAgIGlmICghcHRyKQogICAgICAgICByZXR1cm4gMDsKLSAg
ICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb247Ci0gICAgbG9jYXRpb24ubGluZSA9IGxpbmVOdW1i
ZXI7Ci0gICAgbG9jYXRpb24uY29sdW1uID0gY29sdW1uTnVtYmVyOwotICAgIEFyZ3VtZW50TGlz
dE5vZGUqIGhlYWQgPSBuZXcgKGdsb2JhbERhdGEpIEFyZ3VtZW50TGlzdE5vZGUobG9jYXRpb24s
IHB0ci0+dmFsdWUoKSk7CisgICAgQXJndW1lbnRMaXN0Tm9kZSogaGVhZCA9IG5ldyAoZ2xvYmFs
RGF0YSkgQXJndW1lbnRMaXN0Tm9kZShsaW5lTnVtYmVyLCBwdHItPnZhbHVlKCkpOwogICAgIEFy
Z3VtZW50TGlzdE5vZGUqIHRhaWwgPSBoZWFkOwogICAgIHB0ciA9IHB0ci0+bmV4dCgpOwogICAg
IGZvciAoOyBwdHI7IHB0ciA9IHB0ci0+bmV4dCgpKSB7CiAgICAgICAgIEFTU0VSVCghcHRyLT5l
bGlzaW9uKCkpOwotICAgICAgICB0YWlsID0gbmV3IChnbG9iYWxEYXRhKSBBcmd1bWVudExpc3RO
b2RlKGxvY2F0aW9uLCB0YWlsLCBwdHItPnZhbHVlKCkpOworICAgICAgICB0YWlsID0gbmV3IChn
bG9iYWxEYXRhKSBBcmd1bWVudExpc3ROb2RlKGxpbmVOdW1iZXIsIHRhaWwsIHB0ci0+dmFsdWUo
KSk7CiAgICAgfQogICAgIHJldHVybiBoZWFkOwogfQpAQCAtNTM5LDcgKzUzNiw3IEBAIFJlZ2lz
dGVySUQqIEFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiBnZW5lcmF0b3IsCiAgICAgICAgICAgICAgICAgaWYgKG1fYXJncy0+bV9saXN0Tm9k
ZS0+bV9uZXh0KSB7CiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChtX2FyZ3MtPm1fbGlzdE5v
ZGUtPm1fbmV4dC0+bV9leHByLT5pc1NpbXBsZUFycmF5KCkpOwogICAgICAgICAgICAgICAgICAg
ICBBU1NFUlQoIW1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0LT5tX25leHQpOwotICAgICAgICAg
ICAgICAgICAgICBtX2FyZ3MtPm1fbGlzdE5vZGUgPSBzdGF0aWNfY2FzdDxBcnJheU5vZGUqPiht
X2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dC0+bV9leHByKS0+dG9Bcmd1bWVudExpc3QoZ2VuZXJh
dG9yLmdsb2JhbERhdGEoKSwgMCwgMCk7CisgICAgICAgICAgICAgICAgICAgIG1fYXJncy0+bV9s
aXN0Tm9kZSA9IHN0YXRpY19jYXN0PEFycmF5Tm9kZSo+KG1fYXJncy0+bV9saXN0Tm9kZS0+bV9u
ZXh0LT5tX2V4cHIpLT50b0FyZ3VtZW50TGlzdChnZW5lcmF0b3IuZ2xvYmFsRGF0YSgpLCAwKTsK
ICAgICAgICAgICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJlYWxGdW5jdGlvbiA9IGdl
bmVyYXRvci5lbWl0TW92ZShnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0
KCkpOwogICAgICAgICAgICAgICAgICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVudHMoZ2Vu
ZXJhdG9yLCBtX2FyZ3MpOwogICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUo
Y2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgb2xkTGlzdC0+bV9leHByKTsKQEAgLTExMzEs
OCArMTEyOCw2IEBAIFJlZ2lzdGVySUQqIENvbmRpdGlvbmFsTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVyCiAgICAgUmVmUHRyPExhYmVsPiBi
ZWZvcmVFbHNlID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7CiAgICAgUmVmUHRyPExhYmVsPiBhZnRl
ckVsc2UgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKIAotICAgIGdlbmVyYXRvci5lbWl0RGVidWdI
b29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBsaW5lTm8oKSwgbGluZU5vKCksIGNvbHVtbk5vKCkp
OwotCiAgICAgaWYgKG1fbG9naWNhbC0+aGFzQ29uZGl0aW9uQ29udGV4dENvZGVnZW4oKSkgewog
ICAgICAgICBSZWZQdHI8TGFiZWw+IGJlZm9yZVRoZW4gPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsK
ICAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlSW5Db25kaXRpb25Db250ZXh0KG1fbG9naWNhbCwg
YmVmb3JlVGhlbi5nZXQoKSwgYmVmb3JlRWxzZS5nZXQoKSwgdHJ1ZSk7CkBAIC0xMzkwLDcgKzEz
ODUsNyBAQCBSZWdpc3RlcklEKiBDb25zdERlY2xOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRAogCiBSZWdpc3RlcklEKiBDb25zdFN0YXRl
bWVudE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdp
c3RlcklEKikKIHsKLSAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRl
bWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCksIGNvbHVtbigpKTsKKyAgICBnZW5lcmF0b3Iu
ZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5l
KCkpOwogICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdE5vZGUobV9uZXh0KTsKIH0KIApAQCAtMTQz
Myw3ICsxNDI4LDcgQEAgUmVnaXN0ZXJJRCogQmxvY2tOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNv
ZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHMKIAogUmVnaXN0ZXJJRCogRW1w
dHlTdGF0ZW1lbnROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRv
ciwgUmVnaXN0ZXJJRCogZHN0KQogewotICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxF
eGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSwgY29sdW1uKCkpOworICAg
IGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUo
KSwgbGFzdExpbmUoKSk7CiAgICAgcmV0dXJuIGRzdDsKIH0KIApAQCAtMTQ0MSw3ICsxNDM2LDcg
QEAgUmVnaXN0ZXJJRCogRW1wdHlTdGF0ZW1lbnROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXMKIAogUmVnaXN0ZXJJRCogRGVidWdnZXJTdGF0ZW1l
bnROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0
ZXJJRCogZHN0KQogewotICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKERpZFJlYWNoQnJlYWtw
b2ludCwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCksIGNvbHVtbigpKTsKKyAgICBnZW5lcmF0b3Iu
ZW1pdERlYnVnSG9vayhEaWRSZWFjaEJyZWFrcG9pbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgp
KTsKICAgICByZXR1cm4gZHN0OwogfQogCkBAIC0xNDUwLDcgKzE0NDUsNyBAQCBSZWdpc3RlcklE
KiBEZWJ1Z2dlclN0YXRlbWVudE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYg
Z2VuZXJhdG9yLCBSZQogUmVnaXN0ZXJJRCogRXhwclN0YXRlbWVudE5vZGU6OmVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7CiAgICAg
QVNTRVJUKG1fZXhwcik7Ci0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVT
dGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBjb2x1bW4oKSk7CisgICAgZ2VuZXJh
dG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0
TGluZSgpKTsgCiAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0Tm9kZShkc3QsIG1fZXhwcik7CiB9
CiAKQEAgLTE0NTksNyArMTQ1NCw3IEBAIFJlZ2lzdGVySUQqIEV4cHJTdGF0ZW1lbnROb2RlOjpl
bWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0CiBSZWdpc3Rl
cklEKiBWYXJTdGF0ZW1lbnROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdl
bmVyYXRvciwgUmVnaXN0ZXJJRCopCiB7CiAgICAgQVNTRVJUKG1fZXhwcik7Ci0gICAgZ2VuZXJh
dG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0
TGluZSgpLCBjb2x1bW4oKSk7CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1
dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpKTsKICAgICByZXR1cm4gZ2VuZXJh
dG9yLmVtaXROb2RlKG1fZXhwcik7CiB9CiAKQEAgLTE0NjcsNyArMTQ2Miw3IEBAIFJlZ2lzdGVy
SUQqIFZhclN0YXRlbWVudE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2Vu
ZXJhdG9yLCBSZWdpc3RlCiAKIFJlZ2lzdGVySUQqIElmTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKLSAgICBnZW5lcmF0
b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RM
aW5lKCksIGNvbHVtbigpKTsKKyAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0
ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCkpOwogICAgIAogICAgIFJlZlB0cjxM
YWJlbD4gYWZ0ZXJUaGVuID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7CiAKQEAgLTE0OTEsNyArMTQ4
Niw3IEBAIFJlZ2lzdGVySUQqIElmTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIAogUmVnaXN0ZXJJRCogSWZFbHNlTm9kZTo6
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRz
dCkKIHsKLSAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwg
Zmlyc3RMaW5lKCksIGxhc3RMaW5lKCksIGNvbHVtbigpKTsKKyAgICBnZW5lcmF0b3IuZW1pdERl
YnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCkpOwog
ICAgIAogICAgIFJlZlB0cjxMYWJlbD4gYmVmb3JlRWxzZSA9IGdlbmVyYXRvci5uZXdMYWJlbCgp
OwogICAgIFJlZlB0cjxMYWJlbD4gYWZ0ZXJFbHNlID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7CkBA
IC0xNTI3LDExICsxNTIyLDEyIEBAIFJlZ2lzdGVySUQqIERvV2hpbGVOb2RlOjplbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCoKICAgICBSZWZQdHI8
TGFiZWw+IHRvcE9mTG9vcCA9IGdlbmVyYXRvci5uZXdMYWJlbCgpOwogICAgIGdlbmVyYXRvci5l
bWl0TGFiZWwodG9wT2ZMb29wLmdldCgpKTsKICAgICBnZW5lcmF0b3IuZW1pdExvb3BIaW50KCk7
CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0
TGluZSgpLCBsYXN0TGluZSgpKTsKICAgIAogICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZXN1bHQg
PSBnZW5lcmF0b3IuZW1pdE5vZGUoZHN0LCBtX3N0YXRlbWVudCk7CiAKICAgICBnZW5lcmF0b3Iu
ZW1pdExhYmVsKHNjb3BlLT5jb250aW51ZVRhcmdldCgpKTsKLSAgICBnZW5lcmF0b3IuZW1pdERl
YnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgbGFzdExpbmUoKSwgbGFzdExpbmUoKSwgY29s
dW1uKCkpOworICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50
LCBtX2V4cHItPmxpbmVObygpLCBtX2V4cHItPmxpbmVObygpKTsKICAgICBpZiAobV9leHByLT5o
YXNDb25kaXRpb25Db250ZXh0Q29kZWdlbigpKQogICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGVJ
bkNvbmRpdGlvbkNvbnRleHQobV9leHByLCB0b3BPZkxvb3AuZ2V0KCksIHNjb3BlLT5icmVha1Rh
cmdldCgpLCBmYWxzZSk7CiAgICAgZWxzZSB7CkBAIC0xNTUwLDcgKzE1NDYsNyBAQCBSZWdpc3Rl
cklEKiBXaGlsZU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9y
LCBSZWdpc3RlcklEKiBkcwogICAgIFJlZlB0cjxMYWJlbFNjb3BlPiBzY29wZSA9IGdlbmVyYXRv
ci5uZXdMYWJlbFNjb3BlKExhYmVsU2NvcGU6Okxvb3ApOwogICAgIFJlZlB0cjxMYWJlbD4gdG9w
T2ZMb29wID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7CiAKLSAgICBnZW5lcmF0b3IuZW1pdERlYnVn
SG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgbV9leHByLT5saW5lTm8oKSwgbV9leHByLT5saW5l
Tm8oKSwgbV9leHByLT5jb2x1bW5ObygpKTsKKyAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhX
aWxsRXhlY3V0ZVN0YXRlbWVudCwgbV9leHByLT5saW5lTm8oKSwgbV9leHByLT5saW5lTm8oKSk7
CiAgICAgaWYgKG1fZXhwci0+aGFzQ29uZGl0aW9uQ29udGV4dENvZGVnZW4oKSkKICAgICAgICAg
Z2VuZXJhdG9yLmVtaXROb2RlSW5Db25kaXRpb25Db250ZXh0KG1fZXhwciwgdG9wT2ZMb29wLmdl
dCgpLCBzY29wZS0+YnJlYWtUYXJnZXQoKSwgdHJ1ZSk7CiAgICAgZWxzZSB7CkBAIC0xNTY0LDcg
KzE1NjAsNyBAQCBSZWdpc3RlcklEKiBXaGlsZU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkcwogICAgIGdlbmVyYXRvci5lbWl0Tm9k
ZShkc3QsIG1fc3RhdGVtZW50KTsKIAogICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoc2NvcGUtPmNv
bnRpbnVlVGFyZ2V0KCkpOwotICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRl
U3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSwgY29sdW1uKCkpOworICAgIGdlbmVy
YXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBtX2V4cHItPmxpbmVObygp
LCBtX2V4cHItPmxpbmVObygpKTsKIAogICAgIGlmIChtX2V4cHItPmhhc0NvbmRpdGlvbkNvbnRl
eHRDb2RlZ2VuKCkpCiAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZUluQ29uZGl0aW9uQ29udGV4
dChtX2V4cHIsIHRvcE9mTG9vcC5nZXQoKSwgc2NvcGUtPmJyZWFrVGFyZ2V0KCksIGZhbHNlKTsK
QEAgLTE1ODUsNyArMTU4MSw3IEBAIFJlZ2lzdGVySUQqIEZvck5vZGU6OmVtaXRCeXRlY29kZShC
eXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7CiAgICAgUmVm
UHRyPExhYmVsU2NvcGU+IHNjb3BlID0gZ2VuZXJhdG9yLm5ld0xhYmVsU2NvcGUoTGFiZWxTY29w
ZTo6TG9vcCk7CiAKLSAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRl
bWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCksIGNvbHVtbigpKTsKKyAgICBnZW5lcmF0b3Iu
ZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5l
KCkpOwogCiAgICAgaWYgKG1fZXhwcjEpCiAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShnZW5l
cmF0b3IuaWdub3JlZFJlc3VsdCgpLCBtX2V4cHIxKTsKQEAgLTE2MDYsNyArMTYwMiw3IEBAIFJl
Z2lzdGVySUQqIEZvck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJh
dG9yLCBSZWdpc3RlcklEKiBkc3QpCiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJlc3VsdCA9IGdl
bmVyYXRvci5lbWl0Tm9kZShkc3QsIG1fc3RhdGVtZW50KTsKIAogICAgIGdlbmVyYXRvci5lbWl0
TGFiZWwoc2NvcGUtPmNvbnRpbnVlVGFyZ2V0KCkpOwotICAgIGdlbmVyYXRvci5lbWl0RGVidWdI
b29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSwgY29sdW1u
KCkpOworICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBm
aXJzdExpbmUoKSwgbGFzdExpbmUoKSk7CiAgICAgaWYgKG1fZXhwcjMpCiAgICAgICAgIGdlbmVy
YXRvci5lbWl0Tm9kZShnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpLCBtX2V4cHIzKTsKIApAQCAt
MTYzMyw3ICsxNjI5LDcgQEAgUmVnaXN0ZXJJRCogRm9ySW5Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHMKICAgICBpZiAoIW1fbGV4
cHItPmlzTG9jYXRpb24oKSkKICAgICAgICAgcmV0dXJuIGVtaXRUaHJvd1JlZmVyZW5jZUVycm9y
KGdlbmVyYXRvciwgIkxlZnQgc2lkZSBvZiBmb3ItaW4gc3RhdGVtZW50IGlzIG5vdCBhIHJlZmVy
ZW5jZS4iKTsKIAotICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVt
ZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSwgY29sdW1uKCkpOworICAgIGdlbmVyYXRvci5l
bWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUo
KSk7CiAKICAgICBpZiAobV9pbml0KQogICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoZ2VuZXJh
dG9yLmlnbm9yZWRSZXN1bHQoKSwgbV9pbml0KTsKQEAgLTE2OTYsNyArMTY5Miw3IEBAIFJlZ2lz
dGVySUQqIEZvckluTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0
b3IsIFJlZ2lzdGVySUQqIGRzCiAKICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKHNjb3BlLT5jb250
aW51ZVRhcmdldCgpKTsKICAgICBnZW5lcmF0b3IuZW1pdE5leHRQcm9wZXJ0eU5hbWUocHJvcGVy
dHlOYW1lLCBiYXNlLmdldCgpLCBpLmdldCgpLCBzaXplLmdldCgpLCBpdGVyLmdldCgpLCBsb29w
U3RhcnQuZ2V0KCkpOwotICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3Rh
dGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSwgY29sdW1uKCkpOworICAgIGdlbmVyYXRv
ci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExp
bmUoKSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChzY29wZS0+YnJlYWtUYXJnZXQoKSk7CiAg
ICAgcmV0dXJuIGRzdDsKIH0KQEAgLTE3MDYsNyArMTcwMiw3IEBAIFJlZ2lzdGVySUQqIEZvcklu
Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVy
SUQqIGRzCiAvLyBFQ01BIDEyLjcKIFJlZ2lzdGVySUQqIENvbnRpbnVlTm9kZTo6ZW1pdEJ5dGVj
b2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKLSAg
ICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5l
KCksIGxhc3RMaW5lKCksIGNvbHVtbigpKTsKKyAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhX
aWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCkpOwogICAgIAogICAg
IExhYmVsU2NvcGUqIHNjb3BlID0gZ2VuZXJhdG9yLmNvbnRpbnVlVGFyZ2V0KG1faWRlbnQpOwog
ICAgIEFTU0VSVChzY29wZSk7CkBAIC0xNzIwLDcgKzE3MTYsNyBAQCBSZWdpc3RlcklEKiBDb250
aW51ZU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdp
c3RlcklEKgogLy8gRUNNQSAxMi44CiBSZWdpc3RlcklEKiBCcmVha05vZGU6OmVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7Ci0gICAg
Z2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgp
LCBsYXN0TGluZSgpLCBjb2x1bW4oKSk7CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2ls
bEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpKTsKICAgICAKICAgICBM
YWJlbFNjb3BlKiBzY29wZSA9IGdlbmVyYXRvci5icmVha1RhcmdldChtX2lkZW50KTsKICAgICBB
U1NFUlQoc2NvcGUpOwpAQCAtMTczMyw3ICsxNzI5LDcgQEAgUmVnaXN0ZXJJRCogQnJlYWtOb2Rl
OjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCog
ZHMKIAogUmVnaXN0ZXJJRCogUmV0dXJuTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJh
dG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKLSAgICBnZW5lcmF0b3IuZW1pdERl
YnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCksIGNv
bHVtbigpKTsKKyAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVu
dCwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCkpOwogICAgIEFTU0VSVChnZW5lcmF0b3IuY29kZVR5
cGUoKSA9PSBGdW5jdGlvbkNvZGUpOwogCiAgICAgaWYgKGRzdCA9PSBnZW5lcmF0b3IuaWdub3Jl
ZFJlc3VsdCgpKQpAQCAtMTc0OSw3ICsxNzQ1LDcgQEAgUmVnaXN0ZXJJRCogUmV0dXJuTm9kZTo6
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGQK
ICAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wU2NvcGVzKGwwLmdldCgpLCAwKTsKICAgICAgICAg
Z2VuZXJhdG9yLmVtaXRMYWJlbChsMC5nZXQoKSk7CiAgICAgfQotICAgIGdlbmVyYXRvci5lbWl0
RGVidWdIb29rKFdpbGxMZWF2ZUNhbGxGcmFtZSwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCksIGNv
bHVtbigpKTsKKyAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsTGVhdmVDYWxsRnJhbWUs
IGZpcnN0TGluZSgpLCBsYXN0TGluZSgpKTsKICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRSZXR1
cm4ocjApOwogfQogCkBAIC0xNzU3LDcgKzE3NTMsNyBAQCBSZWdpc3RlcklEKiBSZXR1cm5Ob2Rl
OjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCog
ZAogCiBSZWdpc3RlcklEKiBXaXRoTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKLSAgICBnZW5lcmF0b3IuZW1pdERlYnVn
SG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCksIGNvbHVt
bigpKTsKKyAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwg
Zmlyc3RMaW5lKCksIGxhc3RMaW5lKCkpOwogICAgIAogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBz
Y29wZSA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKICAgICBnZW5lcmF0b3IuZW1pdE5vZGUo
c2NvcGUuZ2V0KCksIG1fZXhwcik7IC8vIHNjb3BlIG11c3QgYmUgcHJvdGVjdGVkIHVudGlsIHBv
cHBlZApAQCAtMTkyMiw3ICsxOTE4LDcgQEAgUmVnaXN0ZXJJRCogQ2FzZUJsb2NrTm9kZTo6ZW1p
dEJ5dGVjb2RlRm9yQmxvY2soQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmUKIAogUmVn
aXN0ZXJJRCogU3dpdGNoTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5l
cmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKLSAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhX
aWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCksIGNvbHVtbigpKTsK
KyAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RM
aW5lKCksIGxhc3RMaW5lKCkpOwogICAgIAogICAgIFJlZlB0cjxMYWJlbFNjb3BlPiBzY29wZSA9
IGdlbmVyYXRvci5uZXdMYWJlbFNjb3BlKExhYmVsU2NvcGU6OlN3aXRjaCk7CiAKQEAgLTE5Mzcs
NyArMTkzMyw3IEBAIFJlZ2lzdGVySUQqIFN3aXRjaE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkCiAKIFJlZ2lzdGVySUQqIExhYmVs
Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVy
SUQqIGRzdCkKIHsKLSAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRl
bWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCksIGNvbHVtbigpKTsKKyAgICBnZW5lcmF0b3Iu
ZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5l
KCkpOwogCiAgICAgQVNTRVJUKCFnZW5lcmF0b3IuYnJlYWtUYXJnZXQobV9uYW1lKSk7CiAKQEAg
LTE5NTIsNyArMTk0OCw3IEBAIFJlZ2lzdGVySUQqIExhYmVsTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzCiAKIFJlZ2lzdGVySUQq
IFRocm93Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJl
Z2lzdGVySUQqIGRzdCkKIHsKLSAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0
ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCksIGNvbHVtbigpKTsKKyAgICBnZW5l
cmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxh
c3RMaW5lKCkpOwogCiAgICAgaWYgKGRzdCA9PSBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKQog
ICAgICAgICBkc3QgPSAwOwpAQCAtMTk2OSw3ICsxOTY1LDcgQEAgUmVnaXN0ZXJJRCogVHJ5Tm9k
ZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQq
IGRzdCkKICAgICAvLyBOT1RFOiBUaGUgY2F0Y2ggYW5kIGZpbmFsbHkgYmxvY2tzIG11c3QgYmUg
bGFiZWxlZCBleHBsaWNpdGx5LCBzbyB0aGUKICAgICAvLyBvcHRpbWl6ZXIga25vd3MgdGhleSBt
YXkgYmUganVtcGVkIHRvIGZyb20gYW55d2hlcmUuCiAKLSAgICBnZW5lcmF0b3IuZW1pdERlYnVn
SG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCksIGNvbHVt
bigpKTsKKyAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwg
Zmlyc3RMaW5lKCksIGxhc3RMaW5lKCkpOwogCiAgICAgUmVmUHRyPExhYmVsPiB0cnlTdGFydExh
YmVsID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7CiAgICAgaWYgKG1fZmluYWxseUJsb2NrKQpAQCAt
MjAyNiwxMyArMjAyMiwxMyBAQCBpbmxpbmUgdm9pZCBTY29wZU5vZGU6OmVtaXRTdGF0ZW1lbnRz
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaQogCiBSZWdpc3RlcklE
KiBQcm9ncmFtTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3Is
IFJlZ2lzdGVySUQqKQogewotICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRl
UHJvZ3JhbSwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCksIGNvbHVtbigpKTsKKyAgICBnZW5lcmF0
b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVByb2dyYW0sIGZpcnN0TGluZSgpLCBsYXN0TGlu
ZSgpKTsKIAogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBkc3RSZWdpc3RlciA9IGdlbmVyYXRvci5u
ZXdUZW1wb3JhcnkoKTsKICAgICBnZW5lcmF0b3IuZW1pdExvYWQoZHN0UmVnaXN0ZXIuZ2V0KCks
IGpzVW5kZWZpbmVkKCkpOwogICAgIGVtaXRTdGF0ZW1lbnRzQnl0ZWNvZGUoZ2VuZXJhdG9yLCBk
c3RSZWdpc3Rlci5nZXQoKSk7CiAKLSAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhEaWRFeGVj
dXRlUHJvZ3JhbSwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCksIGNvbHVtbigpKTsKKyAgICBnZW5l
cmF0b3IuZW1pdERlYnVnSG9vayhEaWRFeGVjdXRlUHJvZ3JhbSwgZmlyc3RMaW5lKCksIGxhc3RM
aW5lKCkpOwogICAgIGdlbmVyYXRvci5lbWl0RW5kKGRzdFJlZ2lzdGVyLmdldCgpKTsKICAgICBy
ZXR1cm4gMDsKIH0KQEAgLTIwNDEsMTMgKzIwMzcsMTMgQEAgUmVnaXN0ZXJJRCogUHJvZ3JhbU5v
ZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklE
KikKIAogUmVnaXN0ZXJJRCogRXZhbE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRv
ciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKikKIHsKLSAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9v
ayhXaWxsRXhlY3V0ZVByb2dyYW0sIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBjb2x1bW4oKSk7
CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVQcm9ncmFtLCBmaXJzdExp
bmUoKSwgbGFzdExpbmUoKSk7CiAKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gZHN0UmVnaXN0ZXIg
PSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CiAgICAgZ2VuZXJhdG9yLmVtaXRMb2FkKGRzdFJl
Z2lzdGVyLmdldCgpLCBqc1VuZGVmaW5lZCgpKTsKICAgICBlbWl0U3RhdGVtZW50c0J5dGVjb2Rl
KGdlbmVyYXRvciwgZHN0UmVnaXN0ZXIuZ2V0KCkpOwogCi0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1
Z0hvb2soRGlkRXhlY3V0ZVByb2dyYW0sIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBjb2x1bW4o
KSk7CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soRGlkRXhlY3V0ZVByb2dyYW0sIGZpcnN0
TGluZSgpLCBsYXN0TGluZSgpKTsKICAgICBnZW5lcmF0b3IuZW1pdEVuZChkc3RSZWdpc3Rlci5n
ZXQoKSk7CiAgICAgcmV0dXJuIDA7CiB9CkBAIC0yMDU2LDcgKzIwNTIsNyBAQCBSZWdpc3RlcklE
KiBFdmFsTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJl
Z2lzdGVySUQqKQogCiBSZWdpc3RlcklEKiBGdW5jdGlvbkJvZHlOb2RlOjplbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCopCiB7Ci0gICAgZ2VuZXJh
dG9yLmVtaXREZWJ1Z0hvb2soRGlkRW50ZXJDYWxsRnJhbWUsIGZpcnN0TGluZSgpLCBsYXN0TGlu
ZSgpLCBjb2x1bW4oKSk7CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soRGlkRW50ZXJDYWxs
RnJhbWUsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpKTsKICAgICBlbWl0U3RhdGVtZW50c0J5dGVj
b2RlKGdlbmVyYXRvciwgZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSk7CiAKICAgICBTdGF0ZW1l
bnROb2RlKiBzaW5nbGVTdGF0ZW1lbnQgPSB0aGlzLT5zaW5nbGVTdGF0ZW1lbnQoKTsKQEAgLTIw
NzIsNyArMjA2OCw3IEBAIFJlZ2lzdGVySUQqIEZ1bmN0aW9uQm9keU5vZGU6OmVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlCiAgICAgLy8gSWYgdGhlcmUg
aXMgbm8gcmV0dXJuIHdlIG11c3QgYXV0b21hdGljYWxseSBpbnNlcnQgb25lLgogICAgIGlmICgh
cmV0dXJuTm9kZSkgewogICAgICAgICBSZWdpc3RlcklEKiByMCA9IGdlbmVyYXRvci5pc0NvbnN0
cnVjdG9yKCkgPyBnZW5lcmF0b3IudGhpc1JlZ2lzdGVyKCkgOiBnZW5lcmF0b3IuZW1pdExvYWQo
MCwganNVbmRlZmluZWQoKSk7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxM
ZWF2ZUNhbGxGcmFtZSwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCksIGNvbHVtbigpKTsKKyAgICAg
ICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbExlYXZlQ2FsbEZyYW1lLCBmaXJzdExpbmUo
KSwgbGFzdExpbmUoKSk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0UmV0dXJuKHIwKTsKICAgICAg
ICAgcmV0dXJuIDA7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rl
YnVnZ2VyL0RlYnVnZ2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdn
ZXIuaAppbmRleCBhNmE0MzNhZGY1MjcwOGYxZTg5OGY1ZGUyMjdjM2UxN2Y1Yjg5MmJjLi5hMjM3
MzI5MTg3ODAzZWRhOTU3YTM3ZDNhMGE5MDdhZmYwYjg5MjMyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGVidWdnZXIvRGVidWdnZXIuaApAQCAtNDIsMjUgKzQyLDE0IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoKEpTR2xvYmFsT2JqZWN0Kik7CiAKICAg
ICAgICAgdmlydHVhbCB2b2lkIHNvdXJjZVBhcnNlZChFeGVjU3RhdGUqLCBTb3VyY2VQcm92aWRl
ciosIGludCBlcnJvckxpbmVOdW1iZXIsIGNvbnN0IFVTdHJpbmcmIGVycm9yTWVzc2FnZSkgPSAw
OwotICAgICAgICB2aXJ0dWFsIHZvaWQgZXhjZXB0aW9uKGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1l
JiwgaW50cHRyX3QsIGludCwgYm9vbCkgPSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQgYXRTdGF0
ZW1lbnQoY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCwgaW50KSA9IDA7Ci0gICAg
ICAgIHZpcnR1YWwgdm9pZCBjYWxsRXZlbnQoY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmLCBpbnRw
dHJfdCwgaW50KSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCByZXR1cm5FdmVudChjb25zdCBE
ZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90LCBpbnQpID0gMDsKLQotICAgICAgICB2aXJ0dWFs
IHZvaWQgZXhjZXB0aW9uKGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRyX3QsIGludCwg
aW50LCBib29sKSB7IH07Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBhdFN0YXRlbWVudChjb25zdCBE
ZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90LCBpbnQsIGludCkgeyB9OwotICAgICAgICB2aXJ0
dWFsIHZvaWQgY2FsbEV2ZW50KGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRyX3QsIGlu
dCwgaW50KSB7IH07Ci0gICAgICAgIHZpcnR1YWwgdm9pZCByZXR1cm5FdmVudChjb25zdCBEZWJ1
Z2dlckNhbGxGcmFtZSYsIGludHB0cl90LCBpbnQsIGludCkgeyB9OwotCi0KLSAgICAgICAgdmly
dHVhbCB2b2lkIHdpbGxFeGVjdXRlUHJvZ3JhbShjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYsIGlu
dHB0cl90LCBpbnQpID0gMDsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpZEV4ZWN1dGVQcm9ncmFt
KGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRyX3QsIGludCkgPSAwOwotICAgICAgICB2
aXJ0dWFsIHZvaWQgZGlkUmVhY2hCcmVha3BvaW50KGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiwg
aW50cHRyX3QsIGludCkgPSAwOwotCi0gICAgICAgIHZpcnR1YWwgdm9pZCB3aWxsRXhlY3V0ZVBy
b2dyYW0oY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCwgaW50LCBpbnQpIHsgfTsK
LSAgICAgICAgdmlydHVhbCB2b2lkIGRpZEV4ZWN1dGVQcm9ncmFtKGNvbnN0IERlYnVnZ2VyQ2Fs
bEZyYW1lJiwgaW50cHRyX3QsIGludCwgaW50KSB7IH07Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBk
aWRSZWFjaEJyZWFrcG9pbnQoY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCwgaW50
LCBpbnQpIHsgfTsKLQorICAgICAgICB2aXJ0dWFsIHZvaWQgZXhjZXB0aW9uKGNvbnN0IERlYnVn
Z2VyQ2FsbEZyYW1lJiwgaW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5lTnVtYmVyLCBib29sIGhh
c0hhbmRsZXIpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIGF0U3RhdGVtZW50KGNvbnN0IERl
YnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5lTnVtYmVyKSA9IDA7
CisgICAgICAgIHZpcnR1YWwgdm9pZCBjYWxsRXZlbnQoY29uc3QgRGVidWdnZXJDYWxsRnJhbWUm
LCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIpID0gMDsKKyAgICAgICAgdmlydHVh
bCB2b2lkIHJldHVybkV2ZW50KGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRyX3Qgc291
cmNlSUQsIGludCBsaW5lTnVtYmVyKSA9IDA7CisKKyAgICAgICAgdmlydHVhbCB2b2lkIHdpbGxF
eGVjdXRlUHJvZ3JhbShjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90IHNvdXJjZUlE
LCBpbnQgbGluZU51bWJlcikgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRXhlY3V0ZVBy
b2dyYW0oY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxp
bmVOdW1iZXIpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlYWNoQnJlYWtwb2ludChj
b25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZU51bWJl
cikgPSAwOwogCiAgICAgICAgIHZvaWQgcmVjb21waWxlQWxsSlNGdW5jdGlvbnMoSlNHbG9iYWxE
YXRhKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9J
bnRlcnByZXRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJw
cmV0ZXIuY3BwCmluZGV4IGMyN2E3ZTc1NWRlNWM0ZGY2Y2M4YTgyZGFiM2IxNTMzMDI0Yzk2MTQu
LjNlZGI4NTg5ZTNhMWUzYzlhNjlkYTdlY2VmYzM5NDA5ZWFiYjQxMjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcApAQCAtNzMwLDkg
KzczMCw5IEBAIE5FVkVSX0lOTElORSBib29sIEludGVycHJldGVyOjp1bndpbmRDYWxsRnJhbWUo
Q2FsbEZyYW1lKiYgY2FsbEZyYW1lLCBKU1ZhbHVlIGV4CiAgICAgaWYgKERlYnVnZ2VyKiBkZWJ1
Z2dlciA9IGNhbGxGcmFtZS0+ZHluYW1pY0dsb2JhbE9iamVjdCgpLT5kZWJ1Z2dlcigpKSB7CiAg
ICAgICAgIERlYnVnZ2VyQ2FsbEZyYW1lIGRlYnVnZ2VyQ2FsbEZyYW1lKGNhbGxGcmFtZSwgZXhj
ZXB0aW9uVmFsdWUpOwogICAgICAgICBpZiAoY2FsbEZyYW1lLT5jYWxsZWUoKSkKLSAgICAgICAg
ICAgIGRlYnVnZ2VyLT5yZXR1cm5FdmVudChkZWJ1Z2dlckNhbGxGcmFtZSwgY29kZUJsb2NrLT5v
d25lckV4ZWN1dGFibGUoKS0+c291cmNlSUQoKSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUo
KS0+bGFzdExpbmUoKSwgMCk7CisgICAgICAgICAgICBkZWJ1Z2dlci0+cmV0dXJuRXZlbnQoZGVi
dWdnZXJDYWxsRnJhbWUsIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPnNvdXJjZUlEKCks
IGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPmxhc3RMaW5lKCkpOwogICAgICAgICBlbHNl
Ci0gICAgICAgICAgICBkZWJ1Z2dlci0+ZGlkRXhlY3V0ZVByb2dyYW0oZGVidWdnZXJDYWxsRnJh
bWUsIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPnNvdXJjZUlEKCksIGNvZGVCbG9jay0+
b3duZXJFeGVjdXRhYmxlKCktPmxhc3RMaW5lKCksIDApOworICAgICAgICAgICAgZGVidWdnZXIt
PmRpZEV4ZWN1dGVQcm9ncmFtKGRlYnVnZ2VyQ2FsbEZyYW1lLCBjb2RlQmxvY2stPm93bmVyRXhl
Y3V0YWJsZSgpLT5zb3VyY2VJRCgpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5sYXN0
TGluZSgpKTsKICAgICB9CiAKICAgICAvLyBJZiB0aGlzIGNhbGwgZnJhbWUgY3JlYXRlZCBhbiBh
Y3RpdmF0aW9uIG9yIGFuICdhcmd1bWVudHMnIG9iamVjdCwgdGVhciBpdCBvZmYuCkBAIC0xMDU1
LDcgKzEwNTUsNyBAQCBORVZFUl9JTkxJTkUgSGFuZGxlckluZm8qIEludGVycHJldGVyOjp0aHJv
d0V4Y2VwdGlvbihDYWxsRnJhbWUqJiBjYWxsRnJhbWUsIEpTVgogICAgIGlmIChEZWJ1Z2dlciog
ZGVidWdnZXIgPSBjYWxsRnJhbWUtPmR5bmFtaWNHbG9iYWxPYmplY3QoKS0+ZGVidWdnZXIoKSkg
ewogICAgICAgICBEZWJ1Z2dlckNhbGxGcmFtZSBkZWJ1Z2dlckNhbGxGcmFtZShjYWxsRnJhbWUs
IGV4Y2VwdGlvblZhbHVlKTsKICAgICAgICAgYm9vbCBoYXNIYW5kbGVyID0gY29kZUJsb2NrLT5o
YW5kbGVyRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpOwotICAgICAgICBkZWJ1Z2dl
ci0+ZXhjZXB0aW9uKGRlYnVnZ2VyQ2FsbEZyYW1lLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJs
ZSgpLT5zb3VyY2VJRCgpLCBjb2RlQmxvY2stPmxpbmVOdW1iZXJGb3JCeXRlY29kZU9mZnNldChi
eXRlY29kZU9mZnNldCksIDAsIGhhc0hhbmRsZXIpOworICAgICAgICBkZWJ1Z2dlci0+ZXhjZXB0
aW9uKGRlYnVnZ2VyQ2FsbEZyYW1lLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5zb3Vy
Y2VJRCgpLCBjb2RlQmxvY2stPmxpbmVOdW1iZXJGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9m
ZnNldCksIGhhc0hhbmRsZXIpOwogICAgIH0KIAogICAgIC8vIENhbGN1bGF0ZSBhbiBleGNlcHRp
b24gaGFuZGxlciB2UEMsIHVud2luZGluZyBjYWxsIGZyYW1lcyBhcyBuZWNlc3NhcnkuCkBAIC0x
NjQzLDcgKzE2NDMsNyBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlKEV2YWxFeGVjdXRh
YmxlKiBldmFsLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNWYWx1ZQogICAgIHJldHVybiBjaGVj
a2VkUmV0dXJuKHJlc3VsdCk7CiB9CiAKLU5FVkVSX0lOTElORSB2b2lkIEludGVycHJldGVyOjpk
ZWJ1ZyhDYWxsRnJhbWUqIGNhbGxGcmFtZSwgRGVidWdIb29rSUQgZGVidWdIb29rSUQsIGludCBm
aXJzdExpbmUsIGludCBsYXN0TGluZSwgaW50IGNvbHVtbikKK05FVkVSX0lOTElORSB2b2lkIElu
dGVycHJldGVyOjpkZWJ1ZyhDYWxsRnJhbWUqIGNhbGxGcmFtZSwgRGVidWdIb29rSUQgZGVidWdI
b29rSUQsIGludCBmaXJzdExpbmUsIGludCBsYXN0TGluZSkKIHsKICAgICBEZWJ1Z2dlciogZGVi
dWdnZXIgPSBjYWxsRnJhbWUtPmR5bmFtaWNHbG9iYWxPYmplY3QoKS0+ZGVidWdnZXIoKTsKICAg
ICBpZiAoIWRlYnVnZ2VyKQpAQCAtMTY1MSwyMiArMTY1MSwyMiBAQCBORVZFUl9JTkxJTkUgdm9p
ZCBJbnRlcnByZXRlcjo6ZGVidWcoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIERlYnVnSG9va0lEIGRl
YnVnSG9vawogCiAgICAgc3dpdGNoIChkZWJ1Z0hvb2tJRCkgewogICAgICAgICBjYXNlIERpZEVu
dGVyQ2FsbEZyYW1lOgotICAgICAgICAgICAgZGVidWdnZXItPmNhbGxFdmVudChjYWxsRnJhbWUs
IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCktPm93bmVyRXhlY3V0YWJsZSgpLT5zb3VyY2VJRCgpLCBm
aXJzdExpbmUsIGNvbHVtbik7CisgICAgICAgICAgICBkZWJ1Z2dlci0+Y2FsbEV2ZW50KGNhbGxG
cmFtZSwgY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+b3duZXJFeGVjdXRhYmxlKCktPnNvdXJjZUlE
KCksIGZpcnN0TGluZSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGNhc2UgV2lsbExl
YXZlQ2FsbEZyYW1lOgotICAgICAgICAgICAgZGVidWdnZXItPnJldHVybkV2ZW50KGNhbGxGcmFt
ZSwgY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+b3duZXJFeGVjdXRhYmxlKCktPnNvdXJjZUlEKCks
IGxhc3RMaW5lLCBjb2x1bW4pOworICAgICAgICAgICAgZGVidWdnZXItPnJldHVybkV2ZW50KGNh
bGxGcmFtZSwgY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+b3duZXJFeGVjdXRhYmxlKCktPnNvdXJj
ZUlEKCksIGxhc3RMaW5lKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgY2FzZSBXaWxs
RXhlY3V0ZVN0YXRlbWVudDoKLSAgICAgICAgICAgIGRlYnVnZ2VyLT5hdFN0YXRlbWVudChjYWxs
RnJhbWUsIGNhbGxGcmFtZS0+Y29kZUJsb2NrKCktPm93bmVyRXhlY3V0YWJsZSgpLT5zb3VyY2VJ
RCgpLCBmaXJzdExpbmUsIGNvbHVtbik7CisgICAgICAgICAgICBkZWJ1Z2dlci0+YXRTdGF0ZW1l
bnQoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5vd25lckV4ZWN1dGFibGUoKS0+
c291cmNlSUQoKSwgZmlyc3RMaW5lKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgY2Fz
ZSBXaWxsRXhlY3V0ZVByb2dyYW06Ci0gICAgICAgICAgICBkZWJ1Z2dlci0+d2lsbEV4ZWN1dGVQ
cm9ncmFtKGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+b3duZXJFeGVjdXRhYmxl
KCktPnNvdXJjZUlEKCksIGZpcnN0TGluZSwgY29sdW1uKTsKKyAgICAgICAgICAgIGRlYnVnZ2Vy
LT53aWxsRXhlY3V0ZVByb2dyYW0oY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5v
d25lckV4ZWN1dGFibGUoKS0+c291cmNlSUQoKSwgZmlyc3RMaW5lKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgY2FzZSBEaWRFeGVjdXRlUHJvZ3JhbToKLSAgICAgICAgICAgIGRlYnVn
Z2VyLT5kaWRFeGVjdXRlUHJvZ3JhbShjYWxsRnJhbWUsIGNhbGxGcmFtZS0+Y29kZUJsb2NrKCkt
Pm93bmVyRXhlY3V0YWJsZSgpLT5zb3VyY2VJRCgpLCBsYXN0TGluZSwgY29sdW1uKTsKKyAgICAg
ICAgICAgIGRlYnVnZ2VyLT5kaWRFeGVjdXRlUHJvZ3JhbShjYWxsRnJhbWUsIGNhbGxGcmFtZS0+
Y29kZUJsb2NrKCktPm93bmVyRXhlY3V0YWJsZSgpLT5zb3VyY2VJRCgpLCBsYXN0TGluZSk7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGNhc2UgRGlkUmVhY2hCcmVha3BvaW50OgotICAg
ICAgICAgICAgZGVidWdnZXItPmRpZFJlYWNoQnJlYWtwb2ludChjYWxsRnJhbWUsIGNhbGxGcmFt
ZS0+Y29kZUJsb2NrKCktPm93bmVyRXhlY3V0YWJsZSgpLT5zb3VyY2VJRCgpLCBsYXN0TGluZSwg
Y29sdW1uKTsKKyAgICAgICAgICAgIGRlYnVnZ2VyLT5kaWRSZWFjaEJyZWFrcG9pbnQoY2FsbEZy
YW1lLCBjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5vd25lckV4ZWN1dGFibGUoKS0+c291cmNlSUQo
KSwgbGFzdExpbmUpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgKaW5kZXggZjRjY2Q5OTVj
OTZiZjBjOWQ2ZDZiMzBkMjUwNmRmN2MwYmNjZDEzNy4uODY2M2JmOGVjMzgzZmM5NjA5Y2U0YTYw
NTVkOTc1M2ZmZDA2Y2JiYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL0ludGVycHJldGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL0ludGVycHJldGVyLmgKQEAgLTI0MCw3ICsyNDAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgU2FtcGxpbmdUb29sKiBzYW1wbGVyKCkgeyByZXR1cm4gbV9zYW1wbGVyLmdldCgpOyB9
CiAKICAgICAgICAgTkVWRVJfSU5MSU5FIEhhbmRsZXJJbmZvKiB0aHJvd0V4Y2VwdGlvbihDYWxs
RnJhbWUqJiwgSlNWYWx1ZSYsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KTsKLSAgICAgICAgTkVW
RVJfSU5MSU5FIHZvaWQgZGVidWcoQ2FsbEZyYW1lKiwgRGVidWdIb29rSUQsIGludCBmaXJzdExp
bmUsIGludCBsYXN0TGluZSwgaW50IGNvbHVtbik7CisgICAgICAgIE5FVkVSX0lOTElORSB2b2lk
IGRlYnVnKENhbGxGcmFtZSosIERlYnVnSG9va0lELCBpbnQgZmlyc3RMaW5lLCBpbnQgbGFzdExp
bmUpOwogICAgICAgICBzdGF0aWMgY29uc3QgVVN0cmluZyBnZXRUcmFjZUxpbmUoQ2FsbEZyYW1l
KiwgU3RhY2tGcmFtZUNvZGVUeXBlLCBjb25zdCBVU3RyaW5nJiwgaW50KTsKICAgICAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZ2V0U3RhY2tUcmFjZShKU0dsb2JhbERhdGEqLCBW
ZWN0b3I8U3RhY2tGcmFtZT4mIHJlc3VsdHMpOwogICAgICAgICBzdGF0aWMgdm9pZCBhZGRTdGFj
a1RyYWNlSWZOZWNlc3NhcnkoQ2FsbEZyYW1lKiwgSlNPYmplY3QqIGVycm9yKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCmluZGV4IDQyMWNmNWJjNjFkYzA1NzFhOWQ0
Y2Y3NzI2ODRlYTA1Nzc4NDFlNGMuLmMwYWY2ZjllOWJiYjU5MGEzNjUyMTYwN2Y3NzIxOTU2ZTdl
ZDY5NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcApAQCAtMTE1
OCw3ICsxMTU4LDYgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGVidWcoSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKICAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChUcnVzdGVkSW1tMzIoY3Vy
cmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCkpOwogICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50
KFRydXN0ZWRJbW0zMihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSk7CiAgICAgc3R1
YkNhbGwuYWRkQXJndW1lbnQoVHJ1c3RlZEltbTMyKGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9w
ZXJhbmQpKTsKLSAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChUcnVzdGVkSW1tMzIoY3VycmVudElu
c3RydWN0aW9uWzRdLnUub3BlcmFuZCkpOwogICAgIHN0dWJDYWxsLmNhbGwoKTsKICNlbmRpZgog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCmluZGV4
IDcwYTYwOGUzYWZkMDUwMmFmZGY3ZWQ3MDc3NmU5N2U2MTI3Y2RlZTYuLjA5NWVhNTdkMzQ5ZmMy
NjU3NGEzMjc4ZWMwMGMxMjBiMGRkYjczNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wY29kZXMzMl82NC5jcHAKQEAgLTE0NzgsNyArMTQ3OCw2IEBAIHZvaWQgSklUOjpl
bWl0X29wX2RlYnVnKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgc3R1YkNh
bGwuYWRkQXJndW1lbnQoSW1tMzIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCkpOwog
ICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KEltbTMyKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9w
ZXJhbmQpKTsKICAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChJbW0zMihjdXJyZW50SW5zdHJ1Y3Rp
b25bM10udS5vcGVyYW5kKSk7Ci0gICAgc3R1YkNhbGwuYWRkQXJndW1lbnQoSW1tMzIoY3VycmVu
dEluc3RydWN0aW9uWzRdLnUub3BlcmFuZCkpOwogICAgIHN0dWJDYWxsLmNhbGwoKTsKICNlbmRp
ZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAppbmRleCA3MTAwYTBjMTk0
Y2Q0MGY0ZjZkOWU5MzgxZjczMmVkYzE1YjQ2OGNhLi4wZjAzYTBhNGE5NDZjYzgwYzQxNDNjNGZi
MjlhNDYyMGFlMWE3MTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VFN0dWJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcApA
QCAtMzQwMyw5ICszNDAzLDggQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCwgb3BfZGVidWcp
CiAgICAgaW50IGRlYnVnSG9va0lEID0gc3RhY2tGcmFtZS5hcmdzWzBdLmludDMyKCk7CiAgICAg
aW50IGZpcnN0TGluZSA9IHN0YWNrRnJhbWUuYXJnc1sxXS5pbnQzMigpOwogICAgIGludCBsYXN0
TGluZSA9IHN0YWNrRnJhbWUuYXJnc1syXS5pbnQzMigpOwotICAgIGludCBjb2x1bW4gPSBzdGFj
a0ZyYW1lLmFyZ3NbM10uaW50MzIoKTsKIAotICAgIHN0YWNrRnJhbWUuZ2xvYmFsRGF0YS0+aW50
ZXJwcmV0ZXItPmRlYnVnKGNhbGxGcmFtZSwgc3RhdGljX2Nhc3Q8RGVidWdIb29rSUQ+KGRlYnVn
SG9va0lEKSwgZmlyc3RMaW5lLCBsYXN0TGluZSwgY29sdW1uKTsKKyAgICBzdGFja0ZyYW1lLmds
b2JhbERhdGEtPmludGVycHJldGVyLT5kZWJ1ZyhjYWxsRnJhbWUsIHN0YXRpY19jYXN0PERlYnVn
SG9va0lEPihkZWJ1Z0hvb2tJRCksIGZpcnN0TGluZSwgbGFzdExpbmUpOwogfQogCiBERUZJTkVf
U1RVQl9GVU5DVElPTih2b2lkKiwgdm1fdGhyb3cpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAppbmRleCA1OGJmMWJkZWI0N2NlM2FlZTZjY2NhYTg2
YWE1MWE1ZDQzZGFlYTUxLi5kMmQ3NDNlMGFjNjJmYTA2ZDNhMDM3OTNjZmQyZWE5N2NiNDNjZGQy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAK
QEAgLTE2MDEsOSArMTYwMSw4IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9kZWJ1
ZykKICAgICBpbnQgZGVidWdIb29rSUQgPSBwY1sxXS51Lm9wZXJhbmQ7CiAgICAgaW50IGZpcnN0
TGluZSA9IHBjWzJdLnUub3BlcmFuZDsKICAgICBpbnQgbGFzdExpbmUgPSBwY1szXS51Lm9wZXJh
bmQ7Ci0gICAgaW50IGNvbHVtbiA9IHBjWzRdLnUub3BlcmFuZDsKLQotICAgIGdsb2JhbERhdGEu
aW50ZXJwcmV0ZXItPmRlYnVnKGV4ZWMsIHN0YXRpY19jYXN0PERlYnVnSG9va0lEPihkZWJ1Z0hv
b2tJRCksIGZpcnN0TGluZSwgbGFzdExpbmUsIGNvbHVtbik7CisgICAgCisgICAgZ2xvYmFsRGF0
YS5pbnRlcnByZXRlci0+ZGVidWcoZXhlYywgc3RhdGljX2Nhc3Q8RGVidWdIb29rSUQ+KGRlYnVn
SG9va0lEKSwgZmlyc3RMaW5lLCBsYXN0TGluZSk7CiAgICAgCiAgICAgTExJTlRfRU5EKCk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCmluZGV4IDBhNzFmMTI5
NGFhYWM0ZTdhNjFlYjMxMDg3NDlkOGIwMDY5MWM3OGUuLmQ0YzE3MDYxNzM5YjkzZmMwMWZlNDI2
NTMzYTFiMzYxZjdjM2RmZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvQVNUQnVpbGRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVp
bGRlci5oCkBAIC0xMTIsOCArMTEyLDggQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBpbnQg
IERvbnRCdWlsZEtleXdvcmRzID0gMDsKICAgICBzdGF0aWMgY29uc3QgaW50ICBEb250QnVpbGRT
dHJpbmdzID0gMDsKIAotICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlQmluYXJ5Tm9kZShjb25zdCBK
U1Rva2VuTG9jYXRpb24mLCBpbnQgdG9rZW4sIHN0ZDo6cGFpcjxFeHByZXNzaW9uTm9kZSosIEJp
bmFyeU9wSW5mbz4sIHN0ZDo6cGFpcjxFeHByZXNzaW9uTm9kZSosIEJpbmFyeU9wSW5mbz4pOwot
ICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlRnVuY3Rpb25DYWxsTm9kZShjb25zdCBKU1Rva2VuTG9j
YXRpb24mLCBFeHByZXNzaW9uTm9kZSogZnVuYywgQXJndW1lbnRzTm9kZSogYXJncywgaW50IHN0
YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQpOworICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlQmluYXJ5
Tm9kZShpbnQgbGluZU51bWJlciwgaW50IHRva2VuLCBzdGQ6OnBhaXI8RXhwcmVzc2lvbk5vZGUq
LCBCaW5hcnlPcEluZm8+LCBzdGQ6OnBhaXI8RXhwcmVzc2lvbk5vZGUqLCBCaW5hcnlPcEluZm8+
KTsKKyAgICBFeHByZXNzaW9uTm9kZSogbWFrZUZ1bmN0aW9uQ2FsbE5vZGUoaW50IGxpbmVOdW1i
ZXIsIEV4cHJlc3Npb25Ob2RlKiBmdW5jLCBBcmd1bWVudHNOb2RlKiBhcmdzLCBpbnQgc3RhcnQs
IGludCBkaXZvdCwgaW50IGVuZCk7CiAKICAgICBKU0M6OlNvdXJjZUVsZW1lbnRzKiBjcmVhdGVT
b3VyY2VFbGVtZW50cygpIHsgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBKU0M6OlNvdXJjZUVs
ZW1lbnRzKCk7IH0KIApAQCAtMTI0LDE2OCArMTI0LDE2OCBAQCBwdWJsaWM6CiAKICAgICB2b2lk
IGFwcGVuZFRvQ29tbWEoQ29tbWFOb2RlKiBjb21tYU5vZGUsIEV4cHJlc3Npb25Ob2RlKiBleHBy
KSB7IGNvbW1hTm9kZS0+YXBwZW5kKGV4cHIpOyB9CiAKLSAgICBDb21tYU5vZGUqIGNyZWF0ZUNv
bW1hRXhwcihjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSog
bGhzLCBFeHByZXNzaW9uTm9kZSogcmhzKSB7IHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgQ29t
bWFOb2RlKGxvY2F0aW9uLCBsaHMsIHJocyk7IH0KLQotICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtl
QXNzaWduTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogbGVmdCwg
T3BlcmF0b3IsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCBsZWZ0SGFzQXNzaWdubWVudHMs
IGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQp
OwotICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlUHJlZml4Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRp
b24mLCBFeHByZXNzaW9uTm9kZSosIE9wZXJhdG9yLCBpbnQgc3RhcnQsIGludCBkaXZvdCwgaW50
IGVuZCk7Ci0gICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VQb3N0Zml4Tm9kZShjb25zdCBKU1Rva2Vu
TG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSosIE9wZXJhdG9yLCBpbnQgc3RhcnQsIGludCBkaXZv
dCwgaW50IGVuZCk7Ci0gICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VUeXBlT2ZOb2RlKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKik7Ci0gICAgRXhwcmVzc2lvbk5vZGUqIG1h
a2VEZWxldGVOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiwgaW50
IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQpOwotICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlTmVn
YXRlTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSopOwotICAgIEV4
cHJlc3Npb25Ob2RlKiBtYWtlQml0d2lzZU5vdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwg
RXhwcmVzc2lvbk5vZGUqKTsKLSAgICBFeHByZXNzaW9uTm9kZSogbWFrZU11bHROb2RlKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBsZWZ0LCBFeHByZXNzaW9uTm9kZSog
cmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7Ci0gICAgRXhwcmVzc2lvbk5vZGUqIG1h
a2VEaXZOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBsZWZ0LCBF
eHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7Ci0gICAgRXhw
cmVzc2lvbk5vZGUqIG1ha2VNb2ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Np
b25Ob2RlKiBsZWZ0LCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25t
ZW50cyk7Ci0gICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VBZGROb2RlKGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBsZWZ0LCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wg
cmlnaHRIYXNBc3NpZ25tZW50cyk7Ci0gICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VTdWJOb2RlKGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBsZWZ0LCBFeHByZXNzaW9uTm9k
ZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7Ci0gICAgRXhwcmVzc2lvbk5vZGUq
IG1ha2VCaXRYT3JOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBs
ZWZ0LCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7Ci0g
ICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VCaXRBbmROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYs
IEV4cHJlc3Npb25Ob2RlKiBsZWZ0LCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRI
YXNBc3NpZ25tZW50cyk7Ci0gICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VCaXRPck5vZGUoY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGxlZnQsIEV4cHJlc3Npb25Ob2RlKiBy
aWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKLSAgICBFeHByZXNzaW9uTm9kZSogbWFr
ZUxlZnRTaGlmdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGxl
ZnQsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKLSAg
ICBFeHByZXNzaW9uTm9kZSogbWFrZVJpZ2h0U2hpZnROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYsIEV4cHJlc3Npb25Ob2RlKiBsZWZ0LCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmln
aHRIYXNBc3NpZ25tZW50cyk7Ci0gICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VVUmlnaHRTaGlmdE5v
ZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGxlZnQsIEV4cHJlc3Np
b25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKLQotICAgIEV4cHJlc3Np
b25Ob2RlKiBjcmVhdGVMb2dpY2FsTm90KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24s
IEV4cHJlc3Npb25Ob2RlKiBleHByKSB7IHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgTG9naWNh
bE5vdE5vZGUobG9jYXRpb24sIGV4cHIpOyB9Ci0gICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZVVu
YXJ5UGx1cyhjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSog
ZXhwcikgeyByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIFVuYXJ5UGx1c05vZGUobG9jYXRpb24s
IGV4cHIpOyB9Ci0gICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZVZvaWQoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpCisgICAgQ29tbWFOb2RlKiBj
cmVhdGVDb21tYUV4cHIoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBsaHMsIEV4cHJl
c3Npb25Ob2RlKiByaHMpIHsgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBDb21tYU5vZGUobGlu
ZU51bWJlciwgbGhzLCByaHMpOyB9CisKKyAgICBFeHByZXNzaW9uTm9kZSogbWFrZUFzc2lnbk5v
ZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBsZWZ0LCBPcGVyYXRvciwgRXhwcmVz
c2lvbk5vZGUqIHJpZ2h0LCBib29sIGxlZnRIYXNBc3NpZ25tZW50cywgYm9vbCByaWdodEhhc0Fz
c2lnbm1lbnRzLCBpbnQgc3RhcnQsIGludCBkaXZvdCwgaW50IGVuZCk7CisgICAgRXhwcmVzc2lv
bk5vZGUqIG1ha2VQcmVmaXhOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSosIE9w
ZXJhdG9yLCBpbnQgc3RhcnQsIGludCBkaXZvdCwgaW50IGVuZCk7CisgICAgRXhwcmVzc2lvbk5v
ZGUqIG1ha2VQb3N0Zml4Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqLCBPcGVy
YXRvciwgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQpOworICAgIEV4cHJlc3Npb25Ob2Rl
KiBtYWtlVHlwZU9mTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqKTsKKyAgICBF
eHByZXNzaW9uTm9kZSogbWFrZURlbGV0ZU5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25O
b2RlKiwgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQpOworICAgIEV4cHJlc3Npb25Ob2Rl
KiBtYWtlTmVnYXRlTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqKTsKKyAgICBF
eHByZXNzaW9uTm9kZSogbWFrZUJpdHdpc2VOb3ROb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNz
aW9uTm9kZSopOworICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlTXVsdE5vZGUoaW50IGxpbmVOdW1i
ZXIsIEV4cHJlc3Npb25Ob2RlKiBsZWZ0LCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmln
aHRIYXNBc3NpZ25tZW50cyk7CisgICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VEaXZOb2RlKGludCBs
aW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogbGVmdCwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBi
b29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlTW9kTm9k
ZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGxlZnQsIEV4cHJlc3Npb25Ob2RlKiBy
aWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICBFeHByZXNzaW9uTm9kZSogbWFr
ZUFkZE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBsZWZ0LCBFeHByZXNzaW9u
Tm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgRXhwcmVzc2lvbk5v
ZGUqIG1ha2VTdWJOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogbGVmdCwgRXhw
cmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAgIEV4cHJl
c3Npb25Ob2RlKiBtYWtlQml0WE9yTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUq
IGxlZnQsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsK
KyAgICBFeHByZXNzaW9uTm9kZSogbWFrZUJpdEFuZE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJl
c3Npb25Ob2RlKiBsZWZ0LCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3Np
Z25tZW50cyk7CisgICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VCaXRPck5vZGUoaW50IGxpbmVOdW1i
ZXIsIEV4cHJlc3Npb25Ob2RlKiBsZWZ0LCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmln
aHRIYXNBc3NpZ25tZW50cyk7CisgICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VMZWZ0U2hpZnROb2Rl
KGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogbGVmdCwgRXhwcmVzc2lvbk5vZGUqIHJp
Z2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtl
UmlnaHRTaGlmdE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBsZWZ0LCBFeHBy
ZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgRXhwcmVz
c2lvbk5vZGUqIG1ha2VVUmlnaHRTaGlmdE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25O
b2RlKiBsZWZ0LCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50
cyk7CisKKyAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlTG9naWNhbE5vdChpbnQgbGluZU51bWJl
ciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpIHsgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBMb2dp
Y2FsTm90Tm9kZShsaW5lTnVtYmVyLCBleHByKTsgfQorICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVh
dGVVbmFyeVBsdXMoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByKSB7IHJldHVy
biBuZXcgKG1fZ2xvYmFsRGF0YSkgVW5hcnlQbHVzTm9kZShsaW5lTnVtYmVyLCBleHByKTsgfQor
ICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVWb2lkKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9u
Tm9kZSogZXhwcikKICAgICB7CiAgICAgICAgIGluY0NvbnN0YW50cygpOwotICAgICAgICByZXR1
cm4gbmV3IChtX2dsb2JhbERhdGEpIFZvaWROb2RlKGxvY2F0aW9uLCBleHByKTsKKyAgICAgICAg
cmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBWb2lkTm9kZShsaW5lTnVtYmVyLCBleHByKTsKICAg
ICB9Ci0gICAgRXhwcmVzc2lvbk5vZGUqIHRoaXNFeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYg
bG9jYXRpb24pCisgICAgRXhwcmVzc2lvbk5vZGUqIHRoaXNFeHByKGludCBsaW5lTnVtYmVyKQog
ICAgIHsKICAgICAgICAgdXNlc1RoaXMoKTsKLSAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxE
YXRhKSBUaGlzTm9kZShsb2NhdGlvbik7CisgICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0
YSkgVGhpc05vZGUobGluZU51bWJlcik7CiAgICAgfQotICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVh
dGVSZXNvbHZlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZp
ZXIqIGlkZW50LCBpbnQgc3RhcnQpCisgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZVJlc29sdmUo
aW50IGxpbmVOdW1iZXIsIGNvbnN0IElkZW50aWZpZXIqIGlkZW50LCBpbnQgc3RhcnQpCiAgICAg
ewogICAgICAgICBpZiAobV9nbG9iYWxEYXRhLT5wcm9wZXJ0eU5hbWVzLT5hcmd1bWVudHMgPT0g
KmlkZW50KQogICAgICAgICAgICAgdXNlc0FyZ3VtZW50cygpOwotICAgICAgICByZXR1cm4gbmV3
IChtX2dsb2JhbERhdGEpIFJlc29sdmVOb2RlKGxvY2F0aW9uLCAqaWRlbnQsIHN0YXJ0KTsKKyAg
ICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBSZXNvbHZlTm9kZShsaW5lTnVtYmVyLCAq
aWRlbnQsIHN0YXJ0KTsKICAgICB9Ci0gICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZU9iamVjdExp
dGVyYWwoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbikgeyByZXR1cm4gbmV3IChtX2ds
b2JhbERhdGEpIE9iamVjdExpdGVyYWxOb2RlKGxvY2F0aW9uKTsgfQotICAgIEV4cHJlc3Npb25O
b2RlKiBjcmVhdGVPYmplY3RMaXRlcmFsKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24s
IFByb3BlcnR5TGlzdE5vZGUqIHByb3BlcnRpZXMpIHsgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRh
KSBPYmplY3RMaXRlcmFsTm9kZShsb2NhdGlvbiwgcHJvcGVydGllcyk7IH0KKyAgICBFeHByZXNz
aW9uTm9kZSogY3JlYXRlT2JqZWN0TGl0ZXJhbChpbnQgbGluZU51bWJlcikgeyByZXR1cm4gbmV3
IChtX2dsb2JhbERhdGEpIE9iamVjdExpdGVyYWxOb2RlKGxpbmVOdW1iZXIpOyB9CisgICAgRXhw
cmVzc2lvbk5vZGUqIGNyZWF0ZU9iamVjdExpdGVyYWwoaW50IGxpbmVOdW1iZXIsIFByb3BlcnR5
TGlzdE5vZGUqIHByb3BlcnRpZXMpIHsgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBPYmplY3RM
aXRlcmFsTm9kZShsaW5lTnVtYmVyLCBwcm9wZXJ0aWVzKTsgfQogCi0gICAgRXhwcmVzc2lvbk5v
ZGUqIGNyZWF0ZUFycmF5KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGludCBlbGlz
aW9ucykKKyAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlQXJyYXkoaW50IGxpbmVOdW1iZXIsIGlu
dCBlbGlzaW9ucykKICAgICB7CiAgICAgICAgIGlmIChlbGlzaW9ucykKICAgICAgICAgICAgIGlu
Y0NvbnN0YW50cygpOwotICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEFycmF5Tm9k
ZShsb2NhdGlvbiwgZWxpc2lvbnMpOworICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEp
IEFycmF5Tm9kZShsaW5lTnVtYmVyLCBlbGlzaW9ucyk7CiAgICAgfQogCi0gICAgRXhwcmVzc2lv
bk5vZGUqIGNyZWF0ZUFycmF5KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEVsZW1l
bnROb2RlKiBlbGVtcykgeyByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEFycmF5Tm9kZShsb2Nh
dGlvbiwgZWxlbXMpOyB9Ci0gICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZUFycmF5KGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGludCBlbGlzaW9ucywgRWxlbWVudE5vZGUqIGVsZW1z
KQorICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVBcnJheShpbnQgbGluZU51bWJlciwgRWxlbWVu
dE5vZGUqIGVsZW1zKSB7IHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgQXJyYXlOb2RlKGxpbmVO
dW1iZXIsIGVsZW1zKTsgfQorICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVBcnJheShpbnQgbGlu
ZU51bWJlciwgaW50IGVsaXNpb25zLCBFbGVtZW50Tm9kZSogZWxlbXMpCiAgICAgewogICAgICAg
ICBpZiAoZWxpc2lvbnMpCiAgICAgICAgICAgICBpbmNDb25zdGFudHMoKTsKLSAgICAgICAgcmV0
dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBBcnJheU5vZGUobG9jYXRpb24sIGVsaXNpb25zLCBlbGVt
cyk7CisgICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgQXJyYXlOb2RlKGxpbmVOdW1i
ZXIsIGVsaXNpb25zLCBlbGVtcyk7CiAgICAgfQotICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVO
dW1iZXJFeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGRvdWJsZSBkKQorICAg
IEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVOdW1iZXJFeHByKGludCBsaW5lTnVtYmVyLCBkb3VibGUg
ZCkKICAgICB7CiAgICAgICAgIGluY0NvbnN0YW50cygpOwotICAgICAgICByZXR1cm4gbmV3ICht
X2dsb2JhbERhdGEpIE51bWJlck5vZGUobG9jYXRpb24sIGQpOworICAgICAgICByZXR1cm4gbmV3
IChtX2dsb2JhbERhdGEpIE51bWJlck5vZGUobGluZU51bWJlciwgZCk7CiAgICAgfQogCi0gICAg
RXhwcmVzc2lvbk5vZGUqIGNyZWF0ZVN0cmluZyhjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0
aW9uLCBjb25zdCBJZGVudGlmaWVyKiBzdHJpbmcpCisgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0
ZVN0cmluZyhpbnQgbGluZU51bWJlciwgY29uc3QgSWRlbnRpZmllciogc3RyaW5nKQogICAgIHsK
ICAgICAgICAgaW5jQ29uc3RhbnRzKCk7Ci0gICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0
YSkgU3RyaW5nTm9kZShsb2NhdGlvbiwgKnN0cmluZyk7CisgICAgICAgIHJldHVybiBuZXcgKG1f
Z2xvYmFsRGF0YSkgU3RyaW5nTm9kZShsaW5lTnVtYmVyLCAqc3RyaW5nKTsKICAgICB9CiAKLSAg
ICBFeHByZXNzaW9uTm9kZSogY3JlYXRlQm9vbGVhbihjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxv
Y2F0aW9uLCBib29sIGIpCisgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZUJvb2xlYW4oaW50IGxp
bmVOdW1iZXIsIGJvb2wgYikKICAgICB7CiAgICAgICAgIGluY0NvbnN0YW50cygpOwotICAgICAg
ICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEJvb2xlYW5Ob2RlKGxvY2F0aW9uLCBiKTsKKyAg
ICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBCb29sZWFuTm9kZShsaW5lTnVtYmVyLCBi
KTsKICAgICB9CiAKLSAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlTnVsbChjb25zdCBKU1Rva2Vu
TG9jYXRpb24mIGxvY2F0aW9uKQorICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVOdWxsKGludCBs
aW5lTnVtYmVyKQogICAgIHsKICAgICAgICAgaW5jQ29uc3RhbnRzKCk7Ci0gICAgICAgIHJldHVy
biBuZXcgKG1fZ2xvYmFsRGF0YSkgTnVsbE5vZGUobG9jYXRpb24pOworICAgICAgICByZXR1cm4g
bmV3IChtX2dsb2JhbERhdGEpIE51bGxOb2RlKGxpbmVOdW1iZXIpOwogICAgIH0KIAotICAgIEV4
cHJlc3Npb25Ob2RlKiBjcmVhdGVCcmFja2V0QWNjZXNzKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYg
bG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogcHJvcGVydHks
IGJvb2wgcHJvcGVydHlIYXNBc3NpZ25tZW50cywgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBl
bmQpCisgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZUJyYWNrZXRBY2Nlc3MoaW50IGxpbmVOdW1i
ZXIsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogcHJvcGVydHksIGJvb2wg
cHJvcGVydHlIYXNBc3NpZ25tZW50cywgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQpCiAg
ICAgewotICAgICAgICBCcmFja2V0QWNjZXNzb3JOb2RlKiBub2RlID0gbmV3IChtX2dsb2JhbERh
dGEpIEJyYWNrZXRBY2Nlc3Nvck5vZGUobG9jYXRpb24sIGJhc2UsIHByb3BlcnR5LCBwcm9wZXJ0
eUhhc0Fzc2lnbm1lbnRzKTsKKyAgICAgICAgQnJhY2tldEFjY2Vzc29yTm9kZSogbm9kZSA9IG5l
dyAobV9nbG9iYWxEYXRhKSBCcmFja2V0QWNjZXNzb3JOb2RlKGxpbmVOdW1iZXIsIGJhc2UsIHBy
b3BlcnR5LCBwcm9wZXJ0eUhhc0Fzc2lnbm1lbnRzKTsKICAgICAgICAgc2V0RXhjZXB0aW9uTG9j
YXRpb24obm9kZSwgc3RhcnQsIGRpdm90LCBlbmQpOwogICAgICAgICByZXR1cm4gbm9kZTsKICAg
ICB9CiAKLSAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlRG90QWNjZXNzKGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVy
KiBwcm9wZXJ0eSwgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQpCisgICAgRXhwcmVzc2lv
bk5vZGUqIGNyZWF0ZURvdEFjY2VzcyhpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGJh
c2UsIGNvbnN0IElkZW50aWZpZXIqIHByb3BlcnR5LCBpbnQgc3RhcnQsIGludCBkaXZvdCwgaW50
IGVuZCkKICAgICB7Ci0gICAgICAgIERvdEFjY2Vzc29yTm9kZSogbm9kZSA9IG5ldyAobV9nbG9i
YWxEYXRhKSBEb3RBY2Nlc3Nvck5vZGUobG9jYXRpb24sIGJhc2UsICpwcm9wZXJ0eSk7CisgICAg
ICAgIERvdEFjY2Vzc29yTm9kZSogbm9kZSA9IG5ldyAobV9nbG9iYWxEYXRhKSBEb3RBY2Nlc3Nv
ck5vZGUobGluZU51bWJlciwgYmFzZSwgKnByb3BlcnR5KTsKICAgICAgICAgc2V0RXhjZXB0aW9u
TG9jYXRpb24obm9kZSwgc3RhcnQsIGRpdm90LCBlbmQpOwogICAgICAgICByZXR1cm4gbm9kZTsK
ICAgICB9CiAKLSAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlUmVnRXhwKGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXImIHBhdHRlcm4sIGNvbnN0IElkZW50
aWZpZXImIGZsYWdzLCBpbnQgc3RhcnQpCisgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZVJlZ0V4
cChpbnQgbGluZU51bWJlciwgY29uc3QgSWRlbnRpZmllciYgcGF0dGVybiwgY29uc3QgSWRlbnRp
ZmllciYgZmxhZ3MsIGludCBzdGFydCkKICAgICB7CiAgICAgICAgIGlmIChZYXJyOjpjaGVja1N5
bnRheChwYXR0ZXJuLnVzdHJpbmcoKSkpCiAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAg
UmVnRXhwTm9kZSogbm9kZSA9IG5ldyAobV9nbG9iYWxEYXRhKSBSZWdFeHBOb2RlKGxvY2F0aW9u
LCBwYXR0ZXJuLCBmbGFncyk7CisgICAgICAgIFJlZ0V4cE5vZGUqIG5vZGUgPSBuZXcgKG1fZ2xv
YmFsRGF0YSkgUmVnRXhwTm9kZShsaW5lTnVtYmVyLCBwYXR0ZXJuLCBmbGFncyk7CiAgICAgICAg
IGludCBzaXplID0gcGF0dGVybi5sZW5ndGgoKSArIDI7IC8vICsgMiBmb3IgdGhlIHR3byAvJ3MK
ICAgICAgICAgc2V0RXhjZXB0aW9uTG9jYXRpb24obm9kZSwgc3RhcnQsIHN0YXJ0ICsgc2l6ZSwg
c3RhcnQgKyBzaXplKTsKICAgICAgICAgcmV0dXJuIG5vZGU7CiAgICAgfQogCi0gICAgRXhwcmVz
c2lvbk5vZGUqIGNyZWF0ZU5ld0V4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwg
RXhwcmVzc2lvbk5vZGUqIGV4cHIsIEFyZ3VtZW50c05vZGUqIGFyZ3VtZW50cywgaW50IHN0YXJ0
LCBpbnQgZGl2b3QsIGludCBlbmQpCisgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZU5ld0V4cHIo
aW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByLCBBcmd1bWVudHNOb2RlKiBhcmd1
bWVudHMsIGludCBzdGFydCwgaW50IGRpdm90LCBpbnQgZW5kKQogICAgIHsKLSAgICAgICAgTmV3
RXhwck5vZGUqIG5vZGUgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgTmV3RXhwck5vZGUobG9jYXRpb24s
IGV4cHIsIGFyZ3VtZW50cyk7CisgICAgICAgIE5ld0V4cHJOb2RlKiBub2RlID0gbmV3IChtX2ds
b2JhbERhdGEpIE5ld0V4cHJOb2RlKGxpbmVOdW1iZXIsIGV4cHIsIGFyZ3VtZW50cyk7CiAgICAg
ICAgIHNldEV4Y2VwdGlvbkxvY2F0aW9uKG5vZGUsIHN0YXJ0LCBkaXZvdCwgZW5kKTsKICAgICAg
ICAgcmV0dXJuIG5vZGU7CiAgICAgfQogCi0gICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZU5ld0V4
cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIs
IGludCBzdGFydCwgaW50IGVuZCkKKyAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlTmV3RXhwcihp
bnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIGludCBzdGFydCwgaW50IGVuZCkK
ICAgICB7Ci0gICAgICAgIE5ld0V4cHJOb2RlKiBub2RlID0gbmV3IChtX2dsb2JhbERhdGEpIE5l
d0V4cHJOb2RlKGxvY2F0aW9uLCBleHByKTsKKyAgICAgICAgTmV3RXhwck5vZGUqIG5vZGUgPSBu
ZXcgKG1fZ2xvYmFsRGF0YSkgTmV3RXhwck5vZGUobGluZU51bWJlciwgZXhwcik7CiAgICAgICAg
IHNldEV4Y2VwdGlvbkxvY2F0aW9uKG5vZGUsIHN0YXJ0LCBlbmQsIGVuZCk7CiAgICAgICAgIHJl
dHVybiBub2RlOwogICAgIH0KIAotICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVDb25kaXRpb25h
bEV4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGNv
bmRpdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGxocywgRXhwcmVzc2lvbk5vZGUqIHJocykKKyAgICBF
eHByZXNzaW9uTm9kZSogY3JlYXRlQ29uZGl0aW9uYWxFeHByKGludCBsaW5lTnVtYmVyLCBFeHBy
ZXNzaW9uTm9kZSogY29uZGl0aW9uLCBFeHByZXNzaW9uTm9kZSogbGhzLCBFeHByZXNzaW9uTm9k
ZSogcmhzKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBDb25kaXRp
b25hbE5vZGUobG9jYXRpb24sIGNvbmRpdGlvbiwgbGhzLCByaHMpOworICAgICAgICByZXR1cm4g
bmV3IChtX2dsb2JhbERhdGEpIENvbmRpdGlvbmFsTm9kZShsaW5lTnVtYmVyLCBjb25kaXRpb24s
IGxocywgcmhzKTsKICAgICB9CiAKLSAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlQXNzaWduUmVz
b2x2ZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVudGlmaWVyJiBp
ZGVudCwgRXhwcmVzc2lvbk5vZGUqIHJocywgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQp
CisgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZUFzc2lnblJlc29sdmUoaW50IGxpbmVOdW1iZXIs
IGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBFeHByZXNzaW9uTm9kZSogcmhzLCBpbnQgc3RhcnQs
IGludCBkaXZvdCwgaW50IGVuZCkKICAgICB7CiAgICAgICAgIGlmIChyaHMtPmlzRnVuY0V4cHJO
b2RlKCkpCiAgICAgICAgICAgICBzdGF0aWNfY2FzdDxGdW5jRXhwck5vZGUqPihyaHMpLT5ib2R5
KCktPnNldEluZmVycmVkTmFtZShpZGVudCk7Ci0gICAgICAgIEFzc2lnblJlc29sdmVOb2RlKiBu
b2RlID0gbmV3IChtX2dsb2JhbERhdGEpIEFzc2lnblJlc29sdmVOb2RlKGxvY2F0aW9uLCBpZGVu
dCwgcmhzKTsKKyAgICAgICAgQXNzaWduUmVzb2x2ZU5vZGUqIG5vZGUgPSBuZXcgKG1fZ2xvYmFs
RGF0YSkgQXNzaWduUmVzb2x2ZU5vZGUobGluZU51bWJlciwgaWRlbnQsIHJocyk7CiAgICAgICAg
IHNldEV4Y2VwdGlvbkxvY2F0aW9uKG5vZGUsIHN0YXJ0LCBkaXZvdCwgZW5kKTsKICAgICAgICAg
cmV0dXJuIG5vZGU7CiAgICAgfQogCi0gICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZUZ1bmN0aW9u
RXhwcihjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVudGlmaWVyKiBu
YW1lLCBGdW5jdGlvbkJvZHlOb2RlKiBib2R5LCBQYXJhbWV0ZXJOb2RlKiBwYXJhbWV0ZXJzLCBp
bnQgb3BlbkJyYWNlUG9zLCBpbnQgY2xvc2VCcmFjZVBvcywgaW50IGJvZHlTdGFydExpbmUsIGlu
dCBib2R5RW5kTGluZSkKKyAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlRnVuY3Rpb25FeHByKGlu
dCBsaW5lTnVtYmVyLCBjb25zdCBJZGVudGlmaWVyKiBuYW1lLCBGdW5jdGlvbkJvZHlOb2RlKiBi
b2R5LCBQYXJhbWV0ZXJOb2RlKiBwYXJhbWV0ZXJzLCBpbnQgb3BlbkJyYWNlUG9zLCBpbnQgY2xv
c2VCcmFjZVBvcywgaW50IGJvZHlTdGFydExpbmUsIGludCBib2R5RW5kTGluZSkKICAgICB7Ci0g
ICAgICAgIEZ1bmNFeHByTm9kZSogcmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIEZ1bmNFeHBy
Tm9kZShsb2NhdGlvbiwgKm5hbWUsIGJvZHksIG1fc291cmNlQ29kZS0+c3ViRXhwcmVzc2lvbihv
cGVuQnJhY2VQb3MsIGNsb3NlQnJhY2VQb3MsIGJvZHlTdGFydExpbmUpLCBwYXJhbWV0ZXJzKTsK
LSAgICAgICAgYm9keS0+c2V0TG9jKGJvZHlTdGFydExpbmUsIGJvZHlFbmRMaW5lLCBsb2NhdGlv
bi5jb2x1bW4pOworICAgICAgICBGdW5jRXhwck5vZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9iYWxE
YXRhKSBGdW5jRXhwck5vZGUobGluZU51bWJlciwgKm5hbWUsIGJvZHksIG1fc291cmNlQ29kZS0+
c3ViRXhwcmVzc2lvbihvcGVuQnJhY2VQb3MsIGNsb3NlQnJhY2VQb3MsIGJvZHlTdGFydExpbmUp
LCBwYXJhbWV0ZXJzKTsKKyAgICAgICAgYm9keS0+c2V0TG9jKGJvZHlTdGFydExpbmUsIGJvZHlF
bmRMaW5lKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBGdW5jdGlvbkJv
ZHlOb2RlKiBjcmVhdGVGdW5jdGlvbkJvZHkoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlv
biwgYm9vbCBpblN0cmljdENvbnRleHQpCisgICAgRnVuY3Rpb25Cb2R5Tm9kZSogY3JlYXRlRnVu
Y3Rpb25Cb2R5KGludCBsaW5lTnVtYmVyLCBib29sIGluU3RyaWN0Q29udGV4dCkKICAgICB7Ci0g
ICAgICAgIHJldHVybiBGdW5jdGlvbkJvZHlOb2RlOjpjcmVhdGUobV9nbG9iYWxEYXRhLCBsb2Nh
dGlvbiwgaW5TdHJpY3RDb250ZXh0KTsKKyAgICAgICAgcmV0dXJuIEZ1bmN0aW9uQm9keU5vZGU6
OmNyZWF0ZShtX2dsb2JhbERhdGEsIGxpbmVOdW1iZXIsIGluU3RyaWN0Q29udGV4dCk7CiAgICAg
fQogICAgIAotICAgIHRlbXBsYXRlIDxib29sPiBQcm9wZXJ0eU5vZGUqIGNyZWF0ZUdldHRlck9y
U2V0dGVyUHJvcGVydHkoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgUHJvcGVydHlO
b2RlOjpUeXBlIHR5cGUsIGNvbnN0IElkZW50aWZpZXIqIG5hbWUsIFBhcmFtZXRlck5vZGUqIHBh
cmFtcywgRnVuY3Rpb25Cb2R5Tm9kZSogYm9keSwgaW50IG9wZW5CcmFjZVBvcywgaW50IGNsb3Nl
QnJhY2VQb3MsIGludCBib2R5U3RhcnRMaW5lLCBpbnQgYm9keUVuZExpbmUpCisgICAgdGVtcGxh
dGUgPGJvb2w+IFByb3BlcnR5Tm9kZSogY3JlYXRlR2V0dGVyT3JTZXR0ZXJQcm9wZXJ0eShpbnQg
bGluZU51bWJlciwgUHJvcGVydHlOb2RlOjpUeXBlIHR5cGUsIGNvbnN0IElkZW50aWZpZXIqIG5h
bWUsIFBhcmFtZXRlck5vZGUqIHBhcmFtcywgRnVuY3Rpb25Cb2R5Tm9kZSogYm9keSwgaW50IG9w
ZW5CcmFjZVBvcywgaW50IGNsb3NlQnJhY2VQb3MsIGludCBib2R5U3RhcnRMaW5lLCBpbnQgYm9k
eUVuZExpbmUpCiAgICAgewogICAgICAgICBBU1NFUlQobmFtZSk7Ci0gICAgICAgIGJvZHktPnNl
dExvYyhib2R5U3RhcnRMaW5lLCBib2R5RW5kTGluZSwgbG9jYXRpb24uY29sdW1uKTsKKyAgICAg
ICAgYm9keS0+c2V0TG9jKGJvZHlTdGFydExpbmUsIGJvZHlFbmRMaW5lKTsKICAgICAgICAgYm9k
eS0+c2V0SW5mZXJyZWROYW1lKCpuYW1lKTsKLSAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxE
YXRhKSBQcm9wZXJ0eU5vZGUobV9nbG9iYWxEYXRhLCAqbmFtZSwgbmV3IChtX2dsb2JhbERhdGEp
IEZ1bmNFeHByTm9kZShsb2NhdGlvbiwgbV9nbG9iYWxEYXRhLT5wcm9wZXJ0eU5hbWVzLT5udWxs
SWRlbnRpZmllciwgYm9keSwgbV9zb3VyY2VDb2RlLT5zdWJFeHByZXNzaW9uKG9wZW5CcmFjZVBv
cywgY2xvc2VCcmFjZVBvcywgYm9keVN0YXJ0TGluZSksIHBhcmFtcyksIHR5cGUpOworICAgICAg
ICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIFByb3BlcnR5Tm9kZShtX2dsb2JhbERhdGEsICpu
YW1lLCBuZXcgKG1fZ2xvYmFsRGF0YSkgRnVuY0V4cHJOb2RlKGxpbmVOdW1iZXIsIG1fZ2xvYmFs
RGF0YS0+cHJvcGVydHlOYW1lcy0+bnVsbElkZW50aWZpZXIsIGJvZHksIG1fc291cmNlQ29kZS0+
c3ViRXhwcmVzc2lvbihvcGVuQnJhY2VQb3MsIGNsb3NlQnJhY2VQb3MsIGJvZHlTdGFydExpbmUp
LCBwYXJhbXMpLCB0eXBlKTsKICAgICB9CiAgICAgCi0gICAgdGVtcGxhdGUgPGJvb2w+IFByb3Bl
cnR5Tm9kZSogY3JlYXRlR2V0dGVyT3JTZXR0ZXJQcm9wZXJ0eShKU0dsb2JhbERhdGEqLCBjb25z
dCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlwZSwgZG91
YmxlIG5hbWUsIFBhcmFtZXRlck5vZGUqIHBhcmFtcywgRnVuY3Rpb25Cb2R5Tm9kZSogYm9keSwg
aW50IG9wZW5CcmFjZVBvcywgaW50IGNsb3NlQnJhY2VQb3MsIGludCBib2R5U3RhcnRMaW5lLCBp
bnQgYm9keUVuZExpbmUpCisgICAgdGVtcGxhdGUgPGJvb2w+IFByb3BlcnR5Tm9kZSogY3JlYXRl
R2V0dGVyT3JTZXR0ZXJQcm9wZXJ0eShKU0dsb2JhbERhdGEqLCBpbnQgbGluZU51bWJlciwgUHJv
cGVydHlOb2RlOjpUeXBlIHR5cGUsIGRvdWJsZSBuYW1lLCBQYXJhbWV0ZXJOb2RlKiBwYXJhbXMs
IEZ1bmN0aW9uQm9keU5vZGUqIGJvZHksIGludCBvcGVuQnJhY2VQb3MsIGludCBjbG9zZUJyYWNl
UG9zLCBpbnQgYm9keVN0YXJ0TGluZSwgaW50IGJvZHlFbmRMaW5lKQogICAgIHsKLSAgICAgICAg
Ym9keS0+c2V0TG9jKGJvZHlTdGFydExpbmUsIGJvZHlFbmRMaW5lLCBsb2NhdGlvbi5jb2x1bW4p
OwotICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIFByb3BlcnR5Tm9kZShtX2dsb2Jh
bERhdGEsIG5hbWUsIG5ldyAobV9nbG9iYWxEYXRhKSBGdW5jRXhwck5vZGUobG9jYXRpb24sIG1f
Z2xvYmFsRGF0YS0+cHJvcGVydHlOYW1lcy0+bnVsbElkZW50aWZpZXIsIGJvZHksIG1fc291cmNl
Q29kZS0+c3ViRXhwcmVzc2lvbihvcGVuQnJhY2VQb3MsIGNsb3NlQnJhY2VQb3MsIGJvZHlTdGFy
dExpbmUpLCBwYXJhbXMpLCB0eXBlKTsKKyAgICAgICAgYm9keS0+c2V0TG9jKGJvZHlTdGFydExp
bmUsIGJvZHlFbmRMaW5lKTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBQcm9w
ZXJ0eU5vZGUobV9nbG9iYWxEYXRhLCBuYW1lLCBuZXcgKG1fZ2xvYmFsRGF0YSkgRnVuY0V4cHJO
b2RlKGxpbmVOdW1iZXIsIG1fZ2xvYmFsRGF0YS0+cHJvcGVydHlOYW1lcy0+bnVsbElkZW50aWZp
ZXIsIGJvZHksIG1fc291cmNlQ29kZS0+c3ViRXhwcmVzc2lvbihvcGVuQnJhY2VQb3MsIGNsb3Nl
QnJhY2VQb3MsIGJvZHlTdGFydExpbmUpLCBwYXJhbXMpLCB0eXBlKTsKICAgICB9CiAKICAgICBB
cmd1bWVudHNOb2RlKiBjcmVhdGVBcmd1bWVudHMoKSB7IHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0
YSkgQXJndW1lbnRzTm9kZSgpOyB9CiAgICAgQXJndW1lbnRzTm9kZSogY3JlYXRlQXJndW1lbnRz
KEFyZ3VtZW50TGlzdE5vZGUqIGFyZ3MpIHsgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBBcmd1
bWVudHNOb2RlKGFyZ3MpOyB9Ci0gICAgQXJndW1lbnRMaXN0Tm9kZSogY3JlYXRlQXJndW1lbnRz
TGlzdChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYXJn
KSB7IHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgQXJndW1lbnRMaXN0Tm9kZShsb2NhdGlvbiwg
YXJnKTsgfQotICAgIEFyZ3VtZW50TGlzdE5vZGUqIGNyZWF0ZUFyZ3VtZW50c0xpc3QoY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgQXJndW1lbnRMaXN0Tm9kZSogYXJncywgRXhwcmVz
c2lvbk5vZGUqIGFyZykgeyByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEFyZ3VtZW50TGlzdE5v
ZGUobG9jYXRpb24sIGFyZ3MsIGFyZyk7IH0KKyAgICBBcmd1bWVudExpc3ROb2RlKiBjcmVhdGVB
cmd1bWVudHNMaXN0KGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogYXJnKSB7IHJldHVy
biBuZXcgKG1fZ2xvYmFsRGF0YSkgQXJndW1lbnRMaXN0Tm9kZShsaW5lTnVtYmVyLCBhcmcpOyB9
CisgICAgQXJndW1lbnRMaXN0Tm9kZSogY3JlYXRlQXJndW1lbnRzTGlzdChpbnQgbGluZU51bWJl
ciwgQXJndW1lbnRMaXN0Tm9kZSogYXJncywgRXhwcmVzc2lvbk5vZGUqIGFyZykgeyByZXR1cm4g
bmV3IChtX2dsb2JhbERhdGEpIEFyZ3VtZW50TGlzdE5vZGUobGluZU51bWJlciwgYXJncywgYXJn
KTsgfQogCiAgICAgdGVtcGxhdGUgPGJvb2w+IFByb3BlcnR5Tm9kZSogY3JlYXRlUHJvcGVydHko
Y29uc3QgSWRlbnRpZmllciogcHJvcGVydHlOYW1lLCBFeHByZXNzaW9uTm9kZSogbm9kZSwgUHJv
cGVydHlOb2RlOjpUeXBlIHR5cGUpCiAgICAgewpAQCAtMjk0LDggKzI5NCw4IEBAIHB1YmxpYzoK
ICAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBQcm9wZXJ0eU5vZGUobV9nbG9iYWxE
YXRhLCAqcHJvcGVydHlOYW1lLCBub2RlLCB0eXBlKTsKICAgICB9CiAgICAgdGVtcGxhdGUgPGJv
b2w+IFByb3BlcnR5Tm9kZSogY3JlYXRlUHJvcGVydHkoSlNHbG9iYWxEYXRhKiwgZG91YmxlIHBy
b3BlcnR5TmFtZSwgRXhwcmVzc2lvbk5vZGUqIG5vZGUsIFByb3BlcnR5Tm9kZTo6VHlwZSB0eXBl
KSB7IHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgUHJvcGVydHlOb2RlKG1fZ2xvYmFsRGF0YSwg
cHJvcGVydHlOYW1lLCBub2RlLCB0eXBlKTsgfQotICAgIFByb3BlcnR5TGlzdE5vZGUqIGNyZWF0
ZVByb3BlcnR5TGlzdChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBQcm9wZXJ0eU5v
ZGUqIHByb3BlcnR5KSB7IHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgUHJvcGVydHlMaXN0Tm9k
ZShsb2NhdGlvbiwgcHJvcGVydHkpOyB9Ci0gICAgUHJvcGVydHlMaXN0Tm9kZSogY3JlYXRlUHJv
cGVydHlMaXN0KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIFByb3BlcnR5Tm9kZSog
cHJvcGVydHksIFByb3BlcnR5TGlzdE5vZGUqIHRhaWwpIHsgcmV0dXJuIG5ldyAobV9nbG9iYWxE
YXRhKSBQcm9wZXJ0eUxpc3ROb2RlKGxvY2F0aW9uLCBwcm9wZXJ0eSwgdGFpbCk7IH0KKyAgICBQ
cm9wZXJ0eUxpc3ROb2RlKiBjcmVhdGVQcm9wZXJ0eUxpc3QoaW50IGxpbmVOdW1iZXIsIFByb3Bl
cnR5Tm9kZSogcHJvcGVydHkpIHsgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBQcm9wZXJ0eUxp
c3ROb2RlKGxpbmVOdW1iZXIsIHByb3BlcnR5KTsgfQorICAgIFByb3BlcnR5TGlzdE5vZGUqIGNy
ZWF0ZVByb3BlcnR5TGlzdChpbnQgbGluZU51bWJlciwgUHJvcGVydHlOb2RlKiBwcm9wZXJ0eSwg
UHJvcGVydHlMaXN0Tm9kZSogdGFpbCkgeyByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIFByb3Bl
cnR5TGlzdE5vZGUobGluZU51bWJlciwgcHJvcGVydHksIHRhaWwpOyB9CiAKICAgICBFbGVtZW50
Tm9kZSogY3JlYXRlRWxlbWVudExpc3QoaW50IGVsaXNpb25zLCBFeHByZXNzaW9uTm9kZSogZXhw
cikgeyByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEVsZW1lbnROb2RlKGVsaXNpb25zLCBleHBy
KTsgfQogICAgIEVsZW1lbnROb2RlKiBjcmVhdGVFbGVtZW50TGlzdChFbGVtZW50Tm9kZSogZWxl
bXMsIGludCBlbGlzaW9ucywgRXhwcmVzc2lvbk5vZGUqIGV4cHIpIHsgcmV0dXJuIG5ldyAobV9n
bG9iYWxEYXRhKSBFbGVtZW50Tm9kZShlbGVtcywgZWxpc2lvbnMsIGV4cHIpOyB9CkBAIC0zMDks
MTkxICszMDksMTkxIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0VXNlc0FyZ3VtZW50cyhGdW5j
dGlvbkJvZHlOb2RlKiBub2RlKSB7IG5vZGUtPnNldFVzZXNBcmd1bWVudHMoKTsgfQogCi0gICAg
U3RhdGVtZW50Tm9kZSogY3JlYXRlRnVuY0RlY2xTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiBsb2NhdGlvbiwgY29uc3QgSWRlbnRpZmllciogbmFtZSwgRnVuY3Rpb25Cb2R5Tm9kZSog
Ym9keSwgUGFyYW1ldGVyTm9kZSogcGFyYW1ldGVycywgaW50IG9wZW5CcmFjZVBvcywgaW50IGNs
b3NlQnJhY2VQb3MsIGludCBib2R5U3RhcnRMaW5lLCBpbnQgYm9keUVuZExpbmUpCisgICAgU3Rh
dGVtZW50Tm9kZSogY3JlYXRlRnVuY0RlY2xTdGF0ZW1lbnQoaW50IGxpbmVOdW1iZXIsIGNvbnN0
IElkZW50aWZpZXIqIG5hbWUsIEZ1bmN0aW9uQm9keU5vZGUqIGJvZHksIFBhcmFtZXRlck5vZGUq
IHBhcmFtZXRlcnMsIGludCBvcGVuQnJhY2VQb3MsIGludCBjbG9zZUJyYWNlUG9zLCBpbnQgYm9k
eVN0YXJ0TGluZSwgaW50IGJvZHlFbmRMaW5lKQogICAgIHsKLSAgICAgICAgRnVuY0RlY2xOb2Rl
KiBkZWNsID0gbmV3IChtX2dsb2JhbERhdGEpIEZ1bmNEZWNsTm9kZShsb2NhdGlvbiwgKm5hbWUs
IGJvZHksIG1fc291cmNlQ29kZS0+c3ViRXhwcmVzc2lvbihvcGVuQnJhY2VQb3MsIGNsb3NlQnJh
Y2VQb3MsIGJvZHlTdGFydExpbmUpLCBwYXJhbWV0ZXJzKTsKKyAgICAgICAgRnVuY0RlY2xOb2Rl
KiBkZWNsID0gbmV3IChtX2dsb2JhbERhdGEpIEZ1bmNEZWNsTm9kZShsaW5lTnVtYmVyLCAqbmFt
ZSwgYm9keSwgbV9zb3VyY2VDb2RlLT5zdWJFeHByZXNzaW9uKG9wZW5CcmFjZVBvcywgY2xvc2VC
cmFjZVBvcywgYm9keVN0YXJ0TGluZSksIHBhcmFtZXRlcnMpOwogICAgICAgICBpZiAoKm5hbWUg
PT0gbV9nbG9iYWxEYXRhLT5wcm9wZXJ0eU5hbWVzLT5hcmd1bWVudHMpCiAgICAgICAgICAgICB1
c2VzQXJndW1lbnRzKCk7CiAgICAgICAgIG1fc2NvcGUubV9mdW5jRGVjbGFyYXRpb25zLT5kYXRh
LmFwcGVuZChkZWNsLT5ib2R5KCkpOwotICAgICAgICBib2R5LT5zZXRMb2MoYm9keVN0YXJ0TGlu
ZSwgYm9keUVuZExpbmUsIGxvY2F0aW9uLmNvbHVtbik7CisgICAgICAgIGJvZHktPnNldExvYyhi
b2R5U3RhcnRMaW5lLCBib2R5RW5kTGluZSk7CiAgICAgICAgIHJldHVybiBkZWNsOwogICAgIH0K
IAotICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUJsb2NrU3RhdGVtZW50KGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYgbG9jYXRpb24sIEpTQzo6U291cmNlRWxlbWVudHMqIGVsZW1lbnRzLCBpbnQgc3Rh
cnRMaW5lLCBpbnQgZW5kTGluZSkKKyAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVCbG9ja1N0YXRl
bWVudChpbnQgbGluZU51bWJlciwgSlNDOjpTb3VyY2VFbGVtZW50cyogZWxlbWVudHMsIGludCBz
dGFydExpbmUsIGludCBlbmRMaW5lKQogICAgIHsKLSAgICAgICAgQmxvY2tOb2RlKiBibG9jayA9
IG5ldyAobV9nbG9iYWxEYXRhKSBCbG9ja05vZGUobG9jYXRpb24sIGVsZW1lbnRzKTsKLSAgICAg
ICAgYmxvY2stPnNldExvYyhzdGFydExpbmUsIGVuZExpbmUsIGxvY2F0aW9uLmNvbHVtbik7Cisg
ICAgICAgIEJsb2NrTm9kZSogYmxvY2sgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgQmxvY2tOb2RlKGxp
bmVOdW1iZXIsIGVsZW1lbnRzKTsKKyAgICAgICAgYmxvY2stPnNldExvYyhzdGFydExpbmUsIGVu
ZExpbmUpOwogICAgICAgICByZXR1cm4gYmxvY2s7CiAgICAgfQogCi0gICAgU3RhdGVtZW50Tm9k
ZSogY3JlYXRlRXhwclN0YXRlbWVudChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBF
eHByZXNzaW9uTm9kZSogZXhwciwgaW50IHN0YXJ0LCBpbnQgZW5kKQorICAgIFN0YXRlbWVudE5v
ZGUqIGNyZWF0ZUV4cHJTdGF0ZW1lbnQoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBl
eHByLCBpbnQgc3RhcnQsIGludCBlbmQpCiAgICAgewotICAgICAgICBFeHByU3RhdGVtZW50Tm9k
ZSogcmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIEV4cHJTdGF0ZW1lbnROb2RlKGxvY2F0aW9u
LCBleHByKTsKLSAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnQsIGVuZCwgbG9jYXRpb24uY29s
dW1uKTsKKyAgICAgICAgRXhwclN0YXRlbWVudE5vZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9iYWxE
YXRhKSBFeHByU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyLCBleHByKTsKKyAgICAgICAgcmVzdWx0
LT5zZXRMb2Moc3RhcnQsIGVuZCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0g
ICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlSWZTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGNvbmRpdGlvbiwgU3RhdGVtZW50Tm9kZSogdHJ1
ZUJsb2NrLCBpbnQgc3RhcnQsIGludCBlbmQpCisgICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlSWZT
dGF0ZW1lbnQoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBjb25kaXRpb24sIFN0YXRl
bWVudE5vZGUqIHRydWVCbG9jaywgaW50IHN0YXJ0LCBpbnQgZW5kKQogICAgIHsKLSAgICAgICAg
SWZOb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgSWZOb2RlKGxvY2F0aW9uLCBjb25k
aXRpb24sIHRydWVCbG9jayk7Ci0gICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0LCBlbmQsIGxv
Y2F0aW9uLmNvbHVtbik7CisgICAgICAgIElmTm9kZSogcmVzdWx0ID0gbmV3IChtX2dsb2JhbERh
dGEpIElmTm9kZShsaW5lTnVtYmVyLCBjb25kaXRpb24sIHRydWVCbG9jayk7CisgICAgICAgIHJl
c3VsdC0+c2V0TG9jKHN0YXJ0LCBlbmQpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0K
IAotICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUlmU3RhdGVtZW50KGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBjb25kaXRpb24sIFN0YXRlbWVudE5vZGUq
IHRydWVCbG9jaywgU3RhdGVtZW50Tm9kZSogZmFsc2VCbG9jaywgaW50IHN0YXJ0LCBpbnQgZW5k
KQorICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUlmU3RhdGVtZW50KGludCBsaW5lTnVtYmVyLCBF
eHByZXNzaW9uTm9kZSogY29uZGl0aW9uLCBTdGF0ZW1lbnROb2RlKiB0cnVlQmxvY2ssIFN0YXRl
bWVudE5vZGUqIGZhbHNlQmxvY2ssIGludCBzdGFydCwgaW50IGVuZCkKICAgICB7Ci0gICAgICAg
IElmTm9kZSogcmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIElmRWxzZU5vZGUobG9jYXRpb24s
IGNvbmRpdGlvbiwgdHJ1ZUJsb2NrLCBmYWxzZUJsb2NrKTsKLSAgICAgICAgcmVzdWx0LT5zZXRM
b2Moc3RhcnQsIGVuZCwgbG9jYXRpb24uY29sdW1uKTsKKyAgICAgICAgSWZOb2RlKiByZXN1bHQg
PSBuZXcgKG1fZ2xvYmFsRGF0YSkgSWZFbHNlTm9kZShsaW5lTnVtYmVyLCBjb25kaXRpb24sIHRy
dWVCbG9jaywgZmFsc2VCbG9jayk7CisgICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0LCBlbmQp
OwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIFN0YXRlbWVudE5vZGUqIGNy
ZWF0ZUZvckxvb3AoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5v
ZGUqIGluaXRpYWxpemVyLCBFeHByZXNzaW9uTm9kZSogY29uZGl0aW9uLCBFeHByZXNzaW9uTm9k
ZSogaXRlciwgU3RhdGVtZW50Tm9kZSogc3RhdGVtZW50cywgaW50IHN0YXJ0LCBpbnQgZW5kKQor
ICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUZvckxvb3AoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Np
b25Ob2RlKiBpbml0aWFsaXplciwgRXhwcmVzc2lvbk5vZGUqIGNvbmRpdGlvbiwgRXhwcmVzc2lv
bk5vZGUqIGl0ZXIsIFN0YXRlbWVudE5vZGUqIHN0YXRlbWVudHMsIGludCBzdGFydCwgaW50IGVu
ZCkKICAgICB7Ci0gICAgICAgIEZvck5vZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBG
b3JOb2RlKGxvY2F0aW9uLCBpbml0aWFsaXplciwgY29uZGl0aW9uLCBpdGVyLCBzdGF0ZW1lbnRz
KTsKKyAgICAgICAgRm9yTm9kZSogcmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIEZvck5vZGUo
bGluZU51bWJlciwgaW5pdGlhbGl6ZXIsIGNvbmRpdGlvbiwgaXRlciwgc3RhdGVtZW50cyk7CiAg
ICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0LCBlbmQpOwogICAgICAgICByZXR1cm4gcmVzdWx0
OwogICAgIH0KIAotICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUZvckluTG9vcChjb25zdCBKU1Rv
a2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVudGlmaWVyKiBpZGVudCwgRXhwcmVzc2lv
bk5vZGUqIGluaXRpYWxpemVyLCBFeHByZXNzaW9uTm9kZSogaXRlciwgU3RhdGVtZW50Tm9kZSog
c3RhdGVtZW50cywgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQsIGludCBpbml0U3RhcnQs
IGludCBpbml0RW5kLCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSkKKyAgICBTdGF0ZW1lbnRO
b2RlKiBjcmVhdGVGb3JJbkxvb3AoaW50IGxpbmVOdW1iZXIsIGNvbnN0IElkZW50aWZpZXIqIGlk
ZW50LCBFeHByZXNzaW9uTm9kZSogaW5pdGlhbGl6ZXIsIEV4cHJlc3Npb25Ob2RlKiBpdGVyLCBT
dGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnRzLCBpbnQgc3RhcnQsIGludCBkaXZvdCwgaW50IGVuZCwg
aW50IGluaXRTdGFydCwgaW50IGluaXRFbmQsIGludCBzdGFydExpbmUsIGludCBlbmRMaW5lKQog
ICAgIHsKLSAgICAgICAgRm9ySW5Ob2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgRm9y
SW5Ob2RlKG1fZ2xvYmFsRGF0YSwgbG9jYXRpb24sICppZGVudCwgaW5pdGlhbGl6ZXIsIGl0ZXIs
IHN0YXRlbWVudHMsIGluaXRTdGFydCwgaW5pdFN0YXJ0IC0gc3RhcnQsIGluaXRFbmQgLSBpbml0
U3RhcnQpOwotICAgICAgICByZXN1bHQtPnNldExvYyhzdGFydExpbmUsIGVuZExpbmUsIGxvY2F0
aW9uLmNvbHVtbik7CisgICAgICAgIEZvckluTm9kZSogcmVzdWx0ID0gbmV3IChtX2dsb2JhbERh
dGEpIEZvckluTm9kZShtX2dsb2JhbERhdGEsIGxpbmVOdW1iZXIsICppZGVudCwgaW5pdGlhbGl6
ZXIsIGl0ZXIsIHN0YXRlbWVudHMsIGluaXRTdGFydCwgaW5pdFN0YXJ0IC0gc3RhcnQsIGluaXRF
bmQgLSBpbml0U3RhcnQpOworICAgICAgICByZXN1bHQtPnNldExvYyhzdGFydExpbmUsIGVuZExp
bmUpOwogICAgICAgICBzZXRFeGNlcHRpb25Mb2NhdGlvbihyZXN1bHQsIHN0YXJ0LCBkaXZvdCAr
IDEsIGVuZCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgU3RhdGVtZW50
Tm9kZSogY3JlYXRlRm9ySW5Mb29wKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4
cHJlc3Npb25Ob2RlKiBsaHMsIEV4cHJlc3Npb25Ob2RlKiBpdGVyLCBTdGF0ZW1lbnROb2RlKiBz
dGF0ZW1lbnRzLCBpbnQgZVN0YXJ0LCBpbnQgZURpdm90LCBpbnQgZUVuZCwgaW50IHN0YXJ0LCBp
bnQgZW5kKQorICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUZvckluTG9vcChpbnQgbGluZU51bWJl
ciwgRXhwcmVzc2lvbk5vZGUqIGxocywgRXhwcmVzc2lvbk5vZGUqIGl0ZXIsIFN0YXRlbWVudE5v
ZGUqIHN0YXRlbWVudHMsIGludCBlU3RhcnQsIGludCBlRGl2b3QsIGludCBlRW5kLCBpbnQgc3Rh
cnQsIGludCBlbmQpCiAgICAgewotICAgICAgICBGb3JJbk5vZGUqIHJlc3VsdCA9IG5ldyAobV9n
bG9iYWxEYXRhKSBGb3JJbk5vZGUobG9jYXRpb24sIGxocywgaXRlciwgc3RhdGVtZW50cyk7Ci0g
ICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0LCBlbmQsIGxvY2F0aW9uLmNvbHVtbik7CisgICAg
ICAgIEZvckluTm9kZSogcmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIEZvckluTm9kZShsaW5l
TnVtYmVyLCBsaHMsIGl0ZXIsIHN0YXRlbWVudHMpOworICAgICAgICByZXN1bHQtPnNldExvYyhz
dGFydCwgZW5kKTsKICAgICAgICAgc2V0RXhjZXB0aW9uTG9jYXRpb24ocmVzdWx0LCBlU3RhcnQs
IGVEaXZvdCwgZUVuZCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgU3Rh
dGVtZW50Tm9kZSogY3JlYXRlRW1wdHlTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBs
b2NhdGlvbikgeyByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEVtcHR5U3RhdGVtZW50Tm9kZShs
b2NhdGlvbik7IH0KKyAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVFbXB0eVN0YXRlbWVudChpbnQg
bGluZU51bWJlcikgeyByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEVtcHR5U3RhdGVtZW50Tm9k
ZShsaW5lTnVtYmVyKTsgfQogCi0gICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlVmFyU3RhdGVtZW50
KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHByLCBp
bnQgc3RhcnQsIGludCBlbmQpCisgICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlVmFyU3RhdGVtZW50
KGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwciwgaW50IHN0YXJ0LCBpbnQgZW5k
KQogICAgIHsKICAgICAgICAgU3RhdGVtZW50Tm9kZSogcmVzdWx0OwogICAgICAgICBpZiAoIWV4
cHIpCi0gICAgICAgICAgICByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgRW1wdHlTdGF0ZW1l
bnROb2RlKGxvY2F0aW9uKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRh
KSBFbXB0eVN0YXRlbWVudE5vZGUobGluZU51bWJlcik7CiAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBWYXJTdGF0ZW1lbnROb2RlKGxvY2F0aW9u
LCBleHByKTsKLSAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnQsIGVuZCwgbG9jYXRpb24uY29s
dW1uKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBWYXJTdGF0ZW1l
bnROb2RlKGxpbmVOdW1iZXIsIGV4cHIpOworICAgICAgICByZXN1bHQtPnNldExvYyhzdGFydCwg
ZW5kKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBTdGF0ZW1lbnROb2Rl
KiBjcmVhdGVSZXR1cm5TdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwg
RXhwcmVzc2lvbk5vZGUqIGV4cHJlc3Npb24sIGludCBlU3RhcnQsIGludCBlRW5kLCBpbnQgc3Rh
cnRMaW5lLCBpbnQgZW5kTGluZSkKKyAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVSZXR1cm5TdGF0
ZW1lbnQoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByZXNzaW9uLCBpbnQgZVN0
YXJ0LCBpbnQgZUVuZCwgaW50IHN0YXJ0TGluZSwgaW50IGVuZExpbmUpCiAgICAgewotICAgICAg
ICBSZXR1cm5Ob2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgUmV0dXJuTm9kZShsb2Nh
dGlvbiwgZXhwcmVzc2lvbik7CisgICAgICAgIFJldHVybk5vZGUqIHJlc3VsdCA9IG5ldyAobV9n
bG9iYWxEYXRhKSBSZXR1cm5Ob2RlKGxpbmVOdW1iZXIsIGV4cHJlc3Npb24pOwogICAgICAgICBz
ZXRFeGNlcHRpb25Mb2NhdGlvbihyZXN1bHQsIGVTdGFydCwgZUVuZCwgZUVuZCk7Ci0gICAgICAg
IHJlc3VsdC0+c2V0TG9jKHN0YXJ0TGluZSwgZW5kTGluZSwgbG9jYXRpb24uY29sdW1uKTsKKyAg
ICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5lKTsKICAgICAgICAgcmV0dXJu
IHJlc3VsdDsKICAgICB9CiAKLSAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVCcmVha1N0YXRlbWVu
dChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBpbnQgZVN0YXJ0LCBpbnQgZUVuZCwg
aW50IHN0YXJ0TGluZSwgaW50IGVuZExpbmUpCisgICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlQnJl
YWtTdGF0ZW1lbnQoaW50IGxpbmVOdW1iZXIsIGludCBlU3RhcnQsIGludCBlRW5kLCBpbnQgc3Rh
cnRMaW5lLCBpbnQgZW5kTGluZSkKICAgICB7Ci0gICAgICAgIEJyZWFrTm9kZSogcmVzdWx0ID0g
bmV3IChtX2dsb2JhbERhdGEpIEJyZWFrTm9kZShtX2dsb2JhbERhdGEsIGxvY2F0aW9uKTsKKyAg
ICAgICAgQnJlYWtOb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgQnJlYWtOb2RlKG1f
Z2xvYmFsRGF0YSwgbGluZU51bWJlcik7CiAgICAgICAgIHNldEV4Y2VwdGlvbkxvY2F0aW9uKHJl
c3VsdCwgZVN0YXJ0LCBlRW5kLCBlRW5kKTsKLSAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRM
aW5lLCBlbmRMaW5lLCBsb2NhdGlvbi5jb2x1bW4pOworICAgICAgICByZXN1bHQtPnNldExvYyhz
dGFydExpbmUsIGVuZExpbmUpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAg
IFN0YXRlbWVudE5vZGUqIGNyZWF0ZUJyZWFrU3RhdGVtZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXIqIGlkZW50LCBpbnQgZVN0YXJ0LCBpbnQgZUVu
ZCwgaW50IHN0YXJ0TGluZSwgaW50IGVuZExpbmUpCisgICAgU3RhdGVtZW50Tm9kZSogY3JlYXRl
QnJlYWtTdGF0ZW1lbnQoaW50IGxpbmVOdW1iZXIsIGNvbnN0IElkZW50aWZpZXIqIGlkZW50LCBp
bnQgZVN0YXJ0LCBpbnQgZUVuZCwgaW50IHN0YXJ0TGluZSwgaW50IGVuZExpbmUpCiAgICAgewot
ICAgICAgICBCcmVha05vZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBCcmVha05vZGUo
bG9jYXRpb24sICppZGVudCk7CisgICAgICAgIEJyZWFrTm9kZSogcmVzdWx0ID0gbmV3IChtX2ds
b2JhbERhdGEpIEJyZWFrTm9kZShsaW5lTnVtYmVyLCAqaWRlbnQpOwogICAgICAgICBzZXRFeGNl
cHRpb25Mb2NhdGlvbihyZXN1bHQsIGVTdGFydCwgZUVuZCwgZUVuZCk7Ci0gICAgICAgIHJlc3Vs
dC0+c2V0TG9jKHN0YXJ0TGluZSwgZW5kTGluZSwgbG9jYXRpb24uY29sdW1uKTsKKyAgICAgICAg
cmVzdWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5lKTsKICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKICAgICB9CiAKLSAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVDb250aW51ZVN0YXRlbWVudChj
b25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBpbnQgZVN0YXJ0LCBpbnQgZUVuZCwgaW50
IHN0YXJ0TGluZSwgaW50IGVuZExpbmUpCisgICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlQ29udGlu
dWVTdGF0ZW1lbnQoaW50IGxpbmVOdW1iZXIsIGludCBlU3RhcnQsIGludCBlRW5kLCBpbnQgc3Rh
cnRMaW5lLCBpbnQgZW5kTGluZSkKICAgICB7Ci0gICAgICAgIENvbnRpbnVlTm9kZSogcmVzdWx0
ID0gbmV3IChtX2dsb2JhbERhdGEpIENvbnRpbnVlTm9kZShtX2dsb2JhbERhdGEsIGxvY2F0aW9u
KTsKKyAgICAgICAgQ29udGludWVOb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgQ29u
dGludWVOb2RlKG1fZ2xvYmFsRGF0YSwgbGluZU51bWJlcik7CiAgICAgICAgIHNldEV4Y2VwdGlv
bkxvY2F0aW9uKHJlc3VsdCwgZVN0YXJ0LCBlRW5kLCBlRW5kKTsKLSAgICAgICAgcmVzdWx0LT5z
ZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5lLCBsb2NhdGlvbi5jb2x1bW4pOworICAgICAgICByZXN1
bHQtPnNldExvYyhzdGFydExpbmUsIGVuZExpbmUpOwogICAgICAgICByZXR1cm4gcmVzdWx0Owog
ICAgIH0KIAotICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUNvbnRpbnVlU3RhdGVtZW50KGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXIqIGlkZW50LCBpbnQg
ZVN0YXJ0LCBpbnQgZUVuZCwgaW50IHN0YXJ0TGluZSwgaW50IGVuZExpbmUpCisgICAgU3RhdGVt
ZW50Tm9kZSogY3JlYXRlQ29udGludWVTdGF0ZW1lbnQoaW50IGxpbmVOdW1iZXIsIGNvbnN0IElk
ZW50aWZpZXIqIGlkZW50LCBpbnQgZVN0YXJ0LCBpbnQgZUVuZCwgaW50IHN0YXJ0TGluZSwgaW50
IGVuZExpbmUpCiAgICAgewotICAgICAgICBDb250aW51ZU5vZGUqIHJlc3VsdCA9IG5ldyAobV9n
bG9iYWxEYXRhKSBDb250aW51ZU5vZGUobG9jYXRpb24sICppZGVudCk7CisgICAgICAgIENvbnRp
bnVlTm9kZSogcmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIENvbnRpbnVlTm9kZShsaW5lTnVt
YmVyLCAqaWRlbnQpOwogICAgICAgICBzZXRFeGNlcHRpb25Mb2NhdGlvbihyZXN1bHQsIGVTdGFy
dCwgZUVuZCwgZUVuZCk7Ci0gICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0TGluZSwgZW5kTGlu
ZSwgbG9jYXRpb24uY29sdW1uKTsKKyAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBl
bmRMaW5lKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBTdGF0ZW1lbnRO
b2RlKiBjcmVhdGVUcnlTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwg
U3RhdGVtZW50Tm9kZSogdHJ5QmxvY2ssIGNvbnN0IElkZW50aWZpZXIqIGlkZW50LCBTdGF0ZW1l
bnROb2RlKiBjYXRjaEJsb2NrLCBTdGF0ZW1lbnROb2RlKiBmaW5hbGx5QmxvY2ssIGludCBzdGFy
dExpbmUsIGludCBlbmRMaW5lKQorICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZVRyeVN0YXRlbWVu
dChpbnQgbGluZU51bWJlciwgU3RhdGVtZW50Tm9kZSogdHJ5QmxvY2ssIGNvbnN0IElkZW50aWZp
ZXIqIGlkZW50LCBTdGF0ZW1lbnROb2RlKiBjYXRjaEJsb2NrLCBTdGF0ZW1lbnROb2RlKiBmaW5h
bGx5QmxvY2ssIGludCBzdGFydExpbmUsIGludCBlbmRMaW5lKQogICAgIHsKLSAgICAgICAgVHJ5
Tm9kZSogcmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIFRyeU5vZGUobG9jYXRpb24sIHRyeUJs
b2NrLCAqaWRlbnQsIGNhdGNoQmxvY2ssIGZpbmFsbHlCbG9jayk7CisgICAgICAgIFRyeU5vZGUq
IHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBUcnlOb2RlKGxpbmVOdW1iZXIsIHRyeUJsb2Nr
LCAqaWRlbnQsIGNhdGNoQmxvY2ssIGZpbmFsbHlCbG9jayk7CiAgICAgICAgIGlmIChjYXRjaEJs
b2NrKQogICAgICAgICAgICAgdXNlc0NhdGNoKCk7Ci0gICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0
YXJ0TGluZSwgZW5kTGluZSwgbG9jYXRpb24uY29sdW1uKTsKKyAgICAgICAgcmVzdWx0LT5zZXRM
b2Moc3RhcnRMaW5lLCBlbmRMaW5lKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAK
LSAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVTd2l0Y2hTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIENsYXVzZUxpc3ROb2RlKiBm
aXJzdENsYXVzZXMsIENhc2VDbGF1c2VOb2RlKiBkZWZhdWx0Q2xhdXNlLCBDbGF1c2VMaXN0Tm9k
ZSogc2Vjb25kQ2xhdXNlcywgaW50IHN0YXJ0TGluZSwgaW50IGVuZExpbmUpCisgICAgU3RhdGVt
ZW50Tm9kZSogY3JlYXRlU3dpdGNoU3RhdGVtZW50KGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9u
Tm9kZSogZXhwciwgQ2xhdXNlTGlzdE5vZGUqIGZpcnN0Q2xhdXNlcywgQ2FzZUNsYXVzZU5vZGUq
IGRlZmF1bHRDbGF1c2UsIENsYXVzZUxpc3ROb2RlKiBzZWNvbmRDbGF1c2VzLCBpbnQgc3RhcnRM
aW5lLCBpbnQgZW5kTGluZSkKICAgICB7CiAgICAgICAgIENhc2VCbG9ja05vZGUqIGNhc2VzID0g
bmV3IChtX2dsb2JhbERhdGEpIENhc2VCbG9ja05vZGUoZmlyc3RDbGF1c2VzLCBkZWZhdWx0Q2xh
dXNlLCBzZWNvbmRDbGF1c2VzKTsKLSAgICAgICAgU3dpdGNoTm9kZSogcmVzdWx0ID0gbmV3ICht
X2dsb2JhbERhdGEpIFN3aXRjaE5vZGUobG9jYXRpb24sIGV4cHIsIGNhc2VzKTsKLSAgICAgICAg
cmVzdWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5lLCBsb2NhdGlvbi5jb2x1bW4pOworICAg
ICAgICBTd2l0Y2hOb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgU3dpdGNoTm9kZShs
aW5lTnVtYmVyLCBleHByLCBjYXNlcyk7CisgICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0TGlu
ZSwgZW5kTGluZSk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgU3RhdGVt
ZW50Tm9kZSogY3JlYXRlV2hpbGVTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2Nh
dGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIFN0YXRlbWVudE5vZGUqIHN0YXRlbWVudCwgaW50
IHN0YXJ0TGluZSwgaW50IGVuZExpbmUpCisgICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlV2hpbGVT
dGF0ZW1lbnQoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByLCBTdGF0ZW1lbnRO
b2RlKiBzdGF0ZW1lbnQsIGludCBzdGFydExpbmUsIGludCBlbmRMaW5lKQogICAgIHsKLSAgICAg
ICAgV2hpbGVOb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgV2hpbGVOb2RlKGxvY2F0
aW9uLCBleHByLCBzdGF0ZW1lbnQpOwotICAgICAgICByZXN1bHQtPnNldExvYyhzdGFydExpbmUs
IGVuZExpbmUsIGxvY2F0aW9uLmNvbHVtbik7CisgICAgICAgIFdoaWxlTm9kZSogcmVzdWx0ID0g
bmV3IChtX2dsb2JhbERhdGEpIFdoaWxlTm9kZShsaW5lTnVtYmVyLCBleHByLCBzdGF0ZW1lbnQp
OworICAgICAgICByZXN1bHQtPnNldExvYyhzdGFydExpbmUsIGVuZExpbmUpOwogICAgICAgICBy
ZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZURvV2hpbGVT
dGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgU3RhdGVtZW50Tm9kZSog
c3RhdGVtZW50LCBFeHByZXNzaW9uTm9kZSogZXhwciwgaW50IHN0YXJ0TGluZSwgaW50IGVuZExp
bmUpCisgICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlRG9XaGlsZVN0YXRlbWVudChpbnQgbGluZU51
bWJlciwgU3RhdGVtZW50Tm9kZSogc3RhdGVtZW50LCBFeHByZXNzaW9uTm9kZSogZXhwciwgaW50
IHN0YXJ0TGluZSwgaW50IGVuZExpbmUpCiAgICAgewotICAgICAgICBEb1doaWxlTm9kZSogcmVz
dWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIERvV2hpbGVOb2RlKGxvY2F0aW9uLCBzdGF0ZW1lbnQs
IGV4cHIpOwotICAgICAgICByZXN1bHQtPnNldExvYyhzdGFydExpbmUsIGVuZExpbmUsIGxvY2F0
aW9uLmNvbHVtbik7CisgICAgICAgIERvV2hpbGVOb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFs
RGF0YSkgRG9XaGlsZU5vZGUobGluZU51bWJlciwgc3RhdGVtZW50LCBleHByKTsKKyAgICAgICAg
cmVzdWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5lKTsKICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKICAgICB9CiAKLSAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVMYWJlbFN0YXRlbWVudChjb25z
dCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVudGlmaWVyKiBpZGVudCwgU3Rh
dGVtZW50Tm9kZSogc3RhdGVtZW50LCBpbnQgc3RhcnQsIGludCBlbmQpCisgICAgU3RhdGVtZW50
Tm9kZSogY3JlYXRlTGFiZWxTdGF0ZW1lbnQoaW50IGxpbmVOdW1iZXIsIGNvbnN0IElkZW50aWZp
ZXIqIGlkZW50LCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnQsIGludCBzdGFydCwgaW50IGVuZCkK
ICAgICB7Ci0gICAgICAgIExhYmVsTm9kZSogcmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIExh
YmVsTm9kZShsb2NhdGlvbiwgKmlkZW50LCBzdGF0ZW1lbnQpOworICAgICAgICBMYWJlbE5vZGUq
IHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBMYWJlbE5vZGUobGluZU51bWJlciwgKmlkZW50
LCBzdGF0ZW1lbnQpOwogICAgICAgICBzZXRFeGNlcHRpb25Mb2NhdGlvbihyZXN1bHQsIHN0YXJ0
LCBlbmQsIGVuZCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgU3RhdGVt
ZW50Tm9kZSogY3JlYXRlV2l0aFN0YXRlbWVudChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0
aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwciwgU3RhdGVtZW50Tm9kZSogc3RhdGVtZW50LCBpbnQg
c3RhcnQsIGludCBlbmQsIGludCBzdGFydExpbmUsIGludCBlbmRMaW5lKQorICAgIFN0YXRlbWVu
dE5vZGUqIGNyZWF0ZVdpdGhTdGF0ZW1lbnQoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2Rl
KiBleHByLCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnQsIGludCBzdGFydCwgaW50IGVuZCwgaW50
IHN0YXJ0TGluZSwgaW50IGVuZExpbmUpCiAgICAgewogICAgICAgICB1c2VzV2l0aCgpOwotICAg
ICAgICBXaXRoTm9kZSogcmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIFdpdGhOb2RlKGxvY2F0
aW9uLCBleHByLCBzdGF0ZW1lbnQsIGVuZCwgZW5kIC0gc3RhcnQpOwotICAgICAgICByZXN1bHQt
PnNldExvYyhzdGFydExpbmUsIGVuZExpbmUsIGxvY2F0aW9uLmNvbHVtbik7CisgICAgICAgIFdp
dGhOb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgV2l0aE5vZGUobGluZU51bWJlciwg
ZXhwciwgc3RhdGVtZW50LCBlbmQsIGVuZCAtIHN0YXJ0KTsKKyAgICAgICAgcmVzdWx0LT5zZXRM
b2Moc3RhcnRMaW5lLCBlbmRMaW5lKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9ICAg
IAogICAgIAotICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZVRocm93U3RhdGVtZW50KGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHByLCBpbnQgc3RhcnQs
IGludCBlbmQsIGludCBzdGFydExpbmUsIGludCBlbmRMaW5lKQorICAgIFN0YXRlbWVudE5vZGUq
IGNyZWF0ZVRocm93U3RhdGVtZW50KGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhw
ciwgaW50IHN0YXJ0LCBpbnQgZW5kLCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSkKICAgICB7
Ci0gICAgICAgIFRocm93Tm9kZSogcmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIFRocm93Tm9k
ZShsb2NhdGlvbiwgZXhwcik7Ci0gICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0TGluZSwgZW5k
TGluZSwgbG9jYXRpb24uY29sdW1uKTsKKyAgICAgICAgVGhyb3dOb2RlKiByZXN1bHQgPSBuZXcg
KG1fZ2xvYmFsRGF0YSkgVGhyb3dOb2RlKGxpbmVOdW1iZXIsIGV4cHIpOworICAgICAgICByZXN1
bHQtPnNldExvYyhzdGFydExpbmUsIGVuZExpbmUpOwogICAgICAgICBzZXRFeGNlcHRpb25Mb2Nh
dGlvbihyZXN1bHQsIHN0YXJ0LCBlbmQsIGVuZCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAg
ICAgfQogICAgIAotICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZURlYnVnZ2VyKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGludCBzdGFydExpbmUsIGludCBlbmRMaW5lKQorICAgIFN0
YXRlbWVudE5vZGUqIGNyZWF0ZURlYnVnZ2VyKGludCBsaW5lTnVtYmVyLCBpbnQgc3RhcnRMaW5l
LCBpbnQgZW5kTGluZSkKICAgICB7Ci0gICAgICAgIERlYnVnZ2VyU3RhdGVtZW50Tm9kZSogcmVz
dWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIERlYnVnZ2VyU3RhdGVtZW50Tm9kZShsb2NhdGlvbik7
Ci0gICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0TGluZSwgZW5kTGluZSwgbG9jYXRpb24uY29s
dW1uKTsKKyAgICAgICAgRGVidWdnZXJTdGF0ZW1lbnROb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xv
YmFsRGF0YSkgRGVidWdnZXJTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIpOworICAgICAgICByZXN1
bHQtPnNldExvYyhzdGFydExpbmUsIGVuZExpbmUpOwogICAgICAgICByZXR1cm4gcmVzdWx0Owog
ICAgIH0KICAgICAKLSAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVDb25zdFN0YXRlbWVudChjb25z
dCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBDb25zdERlY2xOb2RlKiBkZWNscywgaW50IHN0
YXJ0TGluZSwgaW50IGVuZExpbmUpCisgICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlQ29uc3RTdGF0
ZW1lbnQoaW50IGxpbmVOdW1iZXIsIENvbnN0RGVjbE5vZGUqIGRlY2xzLCBpbnQgc3RhcnRMaW5l
LCBpbnQgZW5kTGluZSkKICAgICB7Ci0gICAgICAgIENvbnN0U3RhdGVtZW50Tm9kZSogcmVzdWx0
ID0gbmV3IChtX2dsb2JhbERhdGEpIENvbnN0U3RhdGVtZW50Tm9kZShsb2NhdGlvbiwgZGVjbHMp
OwotICAgICAgICByZXN1bHQtPnNldExvYyhzdGFydExpbmUsIGVuZExpbmUsIGxvY2F0aW9uLmNv
bHVtbik7CisgICAgICAgIENvbnN0U3RhdGVtZW50Tm9kZSogcmVzdWx0ID0gbmV3IChtX2dsb2Jh
bERhdGEpIENvbnN0U3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyLCBkZWNscyk7CisgICAgICAgIHJl
c3VsdC0+c2V0TG9jKHN0YXJ0TGluZSwgZW5kTGluZSk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7
CiAgICAgfQogCi0gICAgQ29uc3REZWNsTm9kZSogYXBwZW5kQ29uc3REZWNsKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYgbG9jYXRpb24sIENvbnN0RGVjbE5vZGUqIHRhaWwsIGNvbnN0IElkZW50aWZp
ZXIqIG5hbWUsIEV4cHJlc3Npb25Ob2RlKiBpbml0aWFsaXplcikKKyAgICBDb25zdERlY2xOb2Rl
KiBhcHBlbmRDb25zdERlY2woaW50IGxpbmVOdW1iZXIsIENvbnN0RGVjbE5vZGUqIHRhaWwsIGNv
bnN0IElkZW50aWZpZXIqIG5hbWUsIEV4cHJlc3Npb25Ob2RlKiBpbml0aWFsaXplcikKICAgICB7
Ci0gICAgICAgIENvbnN0RGVjbE5vZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBDb25z
dERlY2xOb2RlKGxvY2F0aW9uLCAqbmFtZSwgaW5pdGlhbGl6ZXIpOworICAgICAgICBDb25zdERl
Y2xOb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgQ29uc3REZWNsTm9kZShsaW5lTnVt
YmVyLCAqbmFtZSwgaW5pdGlhbGl6ZXIpOwogICAgICAgICBpZiAodGFpbCkKICAgICAgICAgICAg
IHRhaWwtPm1fbmV4dCA9IHJlc3VsdDsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTUxMSw3
ICs1MTEsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fc2NvcGUubV92YXJEZWNsYXJhdGlvbnMtPmRh
dGEuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKGlkZW50LCBhdHRycykpOwogICAgIH0KIAotICAgIEV4
cHJlc3Npb25Ob2RlKiBjb21iaW5lQ29tbWFOb2Rlcyhjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxv
Y2F0aW9uLCBFeHByZXNzaW9uTm9kZSogbGlzdCwgRXhwcmVzc2lvbk5vZGUqIGluaXQpCisgICAg
RXhwcmVzc2lvbk5vZGUqIGNvbWJpbmVDb21tYU5vZGVzKGludCBsaW5lTnVtYmVyLCBFeHByZXNz
aW9uTm9kZSogbGlzdCwgRXhwcmVzc2lvbk5vZGUqIGluaXQpCiAgICAgewogICAgICAgICBpZiAo
IWxpc3QpCiAgICAgICAgICAgICByZXR1cm4gaW5pdDsKQEAgLTUxOSw3ICs1MTksNyBAQCBwdWJs
aWM6CiAgICAgICAgICAgICBzdGF0aWNfY2FzdDxDb21tYU5vZGUqPihsaXN0KS0+YXBwZW5kKGlu
aXQpOwogICAgICAgICAgICAgcmV0dXJuIGxpc3Q7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJu
IG5ldyAobV9nbG9iYWxEYXRhKSBDb21tYU5vZGUobG9jYXRpb24sIGxpc3QsIGluaXQpOworICAg
ICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIENvbW1hTm9kZShsaW5lTnVtYmVyLCBsaXN0
LCBpbml0KTsKICAgICB9CiAKICAgICBpbnQgZXZhbENvdW50KCkgY29uc3QgeyByZXR1cm4gbV9l
dmFsQ291bnQ7IH0KQEAgLTU0NywxMCArNTQ3LDEwIEBAIHB1YmxpYzoKICAgICAgICAgQVNTRVJU
KG9wZXJhbmRTdGFja0RlcHRoID49IDApOwogICAgICAgICBtX2JpbmFyeU9wZXJhbmRTdGFjay5y
ZXNpemUobV9iaW5hcnlPcGVyYW5kU3RhY2suc2l6ZSgpIC0gYW1vdW50KTsKICAgICB9Ci0gICAg
dm9pZCBhcHBlbmRCaW5hcnlPcGVyYXRpb24oY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlv
biwgaW50JiBvcGVyYW5kU3RhY2tEZXB0aCwgaW50JiwgY29uc3QgQmluYXJ5T3BlcmFuZCYgbGhz
LCBjb25zdCBCaW5hcnlPcGVyYW5kJiByaHMpCisgICAgdm9pZCBhcHBlbmRCaW5hcnlPcGVyYXRp
b24oaW50IGxpbmVOdW1iZXIsIGludCYgb3BlcmFuZFN0YWNrRGVwdGgsIGludCYsIGNvbnN0IEJp
bmFyeU9wZXJhbmQmIGxocywgY29uc3QgQmluYXJ5T3BlcmFuZCYgcmhzKQogICAgIHsKICAgICAg
ICAgb3BlcmFuZFN0YWNrRGVwdGgrKzsKLSAgICAgICAgbV9iaW5hcnlPcGVyYW5kU3RhY2suYXBw
ZW5kKHN0ZDo6bWFrZV9wYWlyKG1ha2VCaW5hcnlOb2RlKGxvY2F0aW9uLCBtX2JpbmFyeU9wZXJh
dG9yU3RhY2subGFzdCgpLmZpcnN0LCBsaHMsIHJocyksIEJpbmFyeU9wSW5mbyhsaHMuc2Vjb25k
LCByaHMuc2Vjb25kKSkpOworICAgICAgICBtX2JpbmFyeU9wZXJhbmRTdGFjay5hcHBlbmQoc3Rk
OjptYWtlX3BhaXIobWFrZUJpbmFyeU5vZGUobGluZU51bWJlciwgbV9iaW5hcnlPcGVyYXRvclN0
YWNrLmxhc3QoKS5maXJzdCwgbGhzLCByaHMpLCBCaW5hcnlPcEluZm8obGhzLnNlY29uZCwgcmhz
LnNlY29uZCkpKTsKICAgICB9CiAgICAgdm9pZCBvcGVyYXRvclN0YWNrQXBwZW5kKGludCYgb3Bl
cmF0b3JTdGFja0RlcHRoLCBpbnQgb3AsIGludCBwcmVjZWRlbmNlKQogICAgIHsKQEAgLTU5Miw5
ICs1OTIsOSBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzaWdubWVudEluZm9TdGFjay5hcHBlbmQo
QXNzaWdubWVudEluZm8obm9kZSwgc3RhcnQsIGRpdm90LCBhc3NpZ25tZW50Q291bnQsIG9wKSk7
CiAgICAgfQogCi0gICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZUFzc2lnbm1lbnQoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgaW50JiBhc3NpZ25tZW50U3RhY2tEZXB0aCwgRXhwcmVz
c2lvbk5vZGUqIHJocywgaW50IGluaXRpYWxBc3NpZ25tZW50Q291bnQsIGludCBjdXJyZW50QXNz
aWdubWVudENvdW50LCBpbnQgbGFzdFRva2VuRW5kKQorICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVh
dGVBc3NpZ25tZW50KGludCBsaW5lTnVtYmVyLCBpbnQmIGFzc2lnbm1lbnRTdGFja0RlcHRoLCBF
eHByZXNzaW9uTm9kZSogcmhzLCBpbnQgaW5pdGlhbEFzc2lnbm1lbnRDb3VudCwgaW50IGN1cnJl
bnRBc3NpZ25tZW50Q291bnQsIGludCBsYXN0VG9rZW5FbmQpCiAgICAgewotICAgICAgICBFeHBy
ZXNzaW9uTm9kZSogcmVzdWx0ID0gbWFrZUFzc2lnbk5vZGUobG9jYXRpb24sIG1fYXNzaWdubWVu
dEluZm9TdGFjay5sYXN0KCkubV9ub2RlLCBtX2Fzc2lnbm1lbnRJbmZvU3RhY2subGFzdCgpLm1f
b3AsIHJocywgbV9hc3NpZ25tZW50SW5mb1N0YWNrLmxhc3QoKS5tX2luaXRBc3NpZ25tZW50cyAh
PSBpbml0aWFsQXNzaWdubWVudENvdW50LCBtX2Fzc2lnbm1lbnRJbmZvU3RhY2subGFzdCgpLm1f
aW5pdEFzc2lnbm1lbnRzICE9IGN1cnJlbnRBc3NpZ25tZW50Q291bnQsIG1fYXNzaWdubWVudElu
Zm9TdGFjay5sYXN0KCkubV9zdGFydCwgbV9hc3NpZ25tZW50SW5mb1N0YWNrLmxhc3QoKS5tX2Rp
dm90ICsgMSwgbGFzdFRva2VuRW5kKTsKKyAgICAgICAgRXhwcmVzc2lvbk5vZGUqIHJlc3VsdCA9
IG1ha2VBc3NpZ25Ob2RlKGxpbmVOdW1iZXIsIG1fYXNzaWdubWVudEluZm9TdGFjay5sYXN0KCku
bV9ub2RlLCBtX2Fzc2lnbm1lbnRJbmZvU3RhY2subGFzdCgpLm1fb3AsIHJocywgbV9hc3NpZ25t
ZW50SW5mb1N0YWNrLmxhc3QoKS5tX2luaXRBc3NpZ25tZW50cyAhPSBpbml0aWFsQXNzaWdubWVu
dENvdW50LCBtX2Fzc2lnbm1lbnRJbmZvU3RhY2subGFzdCgpLm1faW5pdEFzc2lnbm1lbnRzICE9
IGN1cnJlbnRBc3NpZ25tZW50Q291bnQsIG1fYXNzaWdubWVudEluZm9TdGFjay5sYXN0KCkubV9z
dGFydCwgbV9hc3NpZ25tZW50SW5mb1N0YWNrLmxhc3QoKS5tX2Rpdm90ICsgMSwgbGFzdFRva2Vu
RW5kKTsKICAgICAgICAgbV9hc3NpZ25tZW50SW5mb1N0YWNrLnJlbW92ZUxhc3QoKTsKICAgICAg
ICAgYXNzaWdubWVudFN0YWNrRGVwdGgtLTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTYz
NSw5ICs2MzUsOSBAQCBwcml2YXRlOgogICAgICAgICBtX2V2YWxDb3VudCsrOwogICAgICAgICBt
X3Njb3BlLm1fZmVhdHVyZXMgfD0gRXZhbEZlYXR1cmU7CiAgICAgfQotICAgIEV4cHJlc3Npb25O
b2RlKiBjcmVhdGVOdW1iZXIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgZG91Ymxl
IGQpCisgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZU51bWJlcihpbnQgbGluZU51bWJlciwgZG91
YmxlIGQpCiAgICAgewotICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIE51bWJlck5v
ZGUobG9jYXRpb24sIGQpOworICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIE51bWJl
ck5vZGUobGluZU51bWJlciwgZCk7CiAgICAgfQogICAgIAogICAgIEpTR2xvYmFsRGF0YSogbV9n
bG9iYWxEYXRhOwpAQCAtNjUwLDMzICs2NTAsMzMgQEAgcHJpdmF0ZToKICAgICBpbnQgbV9ldmFs
Q291bnQ7CiB9OwogCi1FeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZVR5cGVPZk5vZGUo
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpCitF
eHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZVR5cGVPZk5vZGUoaW50IGxpbmVOdW1iZXIs
IEV4cHJlc3Npb25Ob2RlKiBleHByKQogewogICAgIGlmIChleHByLT5pc1Jlc29sdmVOb2RlKCkp
IHsKICAgICAgICAgUmVzb2x2ZU5vZGUqIHJlc29sdmUgPSBzdGF0aWNfY2FzdDxSZXNvbHZlTm9k
ZSo+KGV4cHIpOwotICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIFR5cGVPZlJlc29s
dmVOb2RlKGxvY2F0aW9uLCByZXNvbHZlLT5pZGVudGlmaWVyKCkpOworICAgICAgICByZXR1cm4g
bmV3IChtX2dsb2JhbERhdGEpIFR5cGVPZlJlc29sdmVOb2RlKGxpbmVOdW1iZXIsIHJlc29sdmUt
PmlkZW50aWZpZXIoKSk7CiAgICAgfQotICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgVHlw
ZU9mVmFsdWVOb2RlKGxvY2F0aW9uLCBleHByKTsKKyAgICByZXR1cm4gbmV3IChtX2dsb2JhbERh
dGEpIFR5cGVPZlZhbHVlTm9kZShsaW5lTnVtYmVyLCBleHByKTsKIH0KIAotRXhwcmVzc2lvbk5v
ZGUqIEFTVEJ1aWxkZXI6Om1ha2VEZWxldGVOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9j
YXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHByLCBpbnQgc3RhcnQsIGludCBkaXZvdCwgaW50IGVu
ZCkKK0V4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlRGVsZXRlTm9kZShpbnQgbGluZU51
bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIGludCBzdGFydCwgaW50IGRpdm90LCBpbnQgZW5k
KQogewogICAgIGlmICghZXhwci0+aXNMb2NhdGlvbigpKQotICAgICAgICByZXR1cm4gbmV3ICht
X2dsb2JhbERhdGEpIERlbGV0ZVZhbHVlTm9kZShsb2NhdGlvbiwgZXhwcik7CisgICAgICAgIHJl
dHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgRGVsZXRlVmFsdWVOb2RlKGxpbmVOdW1iZXIsIGV4cHIp
OwogICAgIGlmIChleHByLT5pc1Jlc29sdmVOb2RlKCkpIHsKICAgICAgICAgUmVzb2x2ZU5vZGUq
IHJlc29sdmUgPSBzdGF0aWNfY2FzdDxSZXNvbHZlTm9kZSo+KGV4cHIpOwotICAgICAgICByZXR1
cm4gbmV3IChtX2dsb2JhbERhdGEpIERlbGV0ZVJlc29sdmVOb2RlKGxvY2F0aW9uLCByZXNvbHZl
LT5pZGVudGlmaWVyKCksIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CisgICAg
ICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgRGVsZXRlUmVzb2x2ZU5vZGUobGluZU51bWJl
ciwgcmVzb2x2ZS0+aWRlbnRpZmllcigpLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2
b3QpOwogICAgIH0KICAgICBpZiAoZXhwci0+aXNCcmFja2V0QWNjZXNzb3JOb2RlKCkpIHsKICAg
ICAgICAgQnJhY2tldEFjY2Vzc29yTm9kZSogYnJhY2tldCA9IHN0YXRpY19jYXN0PEJyYWNrZXRB
Y2Nlc3Nvck5vZGUqPihleHByKTsKLSAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBE
ZWxldGVCcmFja2V0Tm9kZShsb2NhdGlvbiwgYnJhY2tldC0+YmFzZSgpLCBicmFja2V0LT5zdWJz
Y3JpcHQoKSwgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKKyAgICAgICAgcmV0
dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBEZWxldGVCcmFja2V0Tm9kZShsaW5lTnVtYmVyLCBicmFj
a2V0LT5iYXNlKCksIGJyYWNrZXQtPnN1YnNjcmlwdCgpLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwg
ZW5kIC0gZGl2b3QpOwogICAgIH0KICAgICBBU1NFUlQoZXhwci0+aXNEb3RBY2Nlc3Nvck5vZGUo
KSk7CiAgICAgRG90QWNjZXNzb3JOb2RlKiBkb3QgPSBzdGF0aWNfY2FzdDxEb3RBY2Nlc3Nvck5v
ZGUqPihleHByKTsKLSAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIERlbGV0ZURvdE5vZGUo
bG9jYXRpb24sIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgZGl2b3QsIGRpdm90IC0g
c3RhcnQsIGVuZCAtIGRpdm90KTsKKyAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIERlbGV0
ZURvdE5vZGUobGluZU51bWJlciwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBkaXZv
dCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOwogfQogCi1FeHByZXNzaW9uTm9kZSogQVNU
QnVpbGRlcjo6bWFrZU5lZ2F0ZU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwg
RXhwcmVzc2lvbk5vZGUqIG4pCitFeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZU5lZ2F0
ZU5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBuKQogewogICAgIGlmIChuLT5p
c051bWJlcigpKSB7CiAgICAgICAgIE51bWJlck5vZGUqIG51bWJlck5vZGUgPSBzdGF0aWNfY2Fz
dDxOdW1iZXJOb2RlKj4obik7CkBAIC02ODQsMTI4ICs2ODQsMTI4IEBAIEV4cHJlc3Npb25Ob2Rl
KiBBU1RCdWlsZGVyOjptYWtlTmVnYXRlTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0
aW9uLCBFeHByCiAgICAgICAgIHJldHVybiBudW1iZXJOb2RlOwogICAgIH0KIAotICAgIHJldHVy
biBuZXcgKG1fZ2xvYmFsRGF0YSkgTmVnYXRlTm9kZShsb2NhdGlvbiwgbik7CisgICAgcmV0dXJu
IG5ldyAobV9nbG9iYWxEYXRhKSBOZWdhdGVOb2RlKGxpbmVOdW1iZXIsIG4pOwogfQogCi1FeHBy
ZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZUJpdHdpc2VOb3ROb2RlKGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHByKQorRXhwcmVzc2lvbk5vZGUq
IEFTVEJ1aWxkZXI6Om1ha2VCaXR3aXNlTm90Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lv
bk5vZGUqIGV4cHIpCiB7CiAgICAgaWYgKGV4cHItPmlzTnVtYmVyKCkpCi0gICAgICAgIHJldHVy
biBjcmVhdGVOdW1iZXIobG9jYXRpb24sIH50b0ludDMyKHN0YXRpY19jYXN0PE51bWJlck5vZGUq
PihleHByKS0+dmFsdWUoKSkpOwotICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgQml0d2lz
ZU5vdE5vZGUobG9jYXRpb24sIGV4cHIpOworICAgICAgICByZXR1cm4gY3JlYXRlTnVtYmVyKGxp
bmVOdW1iZXIsIH50b0ludDMyKHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByKS0+dmFsdWUo
KSkpOworICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgQml0d2lzZU5vdE5vZGUobGluZU51
bWJlciwgZXhwcik7CiB9CiAKLUV4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlTXVsdE5v
ZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIx
LCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKK0V4cHJl
c3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlTXVsdE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJl
c3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNz
aWdubWVudHMpCiB7CiAgICAgZXhwcjEgPSBleHByMS0+c3RyaXBVbmFyeVBsdXMoKTsKICAgICBl
eHByMiA9IGV4cHIyLT5zdHJpcFVuYXJ5UGx1cygpOwogCiAgICAgaWYgKGV4cHIxLT5pc051bWJl
cigpICYmIGV4cHIyLT5pc051bWJlcigpKQotICAgICAgICByZXR1cm4gY3JlYXRlTnVtYmVyKGxv
Y2F0aW9uLCBzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjEpLT52YWx1ZSgpICogc3RhdGlj
X2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIyKS0+dmFsdWUoKSk7CisgICAgICAgIHJldHVybiBjcmVh
dGVOdW1iZXIobGluZU51bWJlciwgc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIxKS0+dmFs
dWUoKSAqIHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByMiktPnZhbHVlKCkpOwogCiAgICAg
aWYgKGV4cHIxLT5pc051bWJlcigpICYmIHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByMSkt
PnZhbHVlKCkgPT0gMSkKLSAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBVbmFyeVBs
dXNOb2RlKGxvY2F0aW9uLCBleHByMik7CisgICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0
YSkgVW5hcnlQbHVzTm9kZShsaW5lTnVtYmVyLCBleHByMik7CiAKICAgICBpZiAoZXhwcjItPmlz
TnVtYmVyKCkgJiYgc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIyKS0+dmFsdWUoKSA9PSAx
KQotICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIFVuYXJ5UGx1c05vZGUobG9jYXRp
b24sIGV4cHIxKTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBVbmFyeVBsdXNO
b2RlKGxpbmVOdW1iZXIsIGV4cHIxKTsKIAotICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkg
TXVsdE5vZGUobG9jYXRpb24sIGV4cHIxLCBleHByMiwgcmlnaHRIYXNBc3NpZ25tZW50cyk7Cisg
ICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBNdWx0Tm9kZShsaW5lTnVtYmVyLCBleHByMSwg
ZXhwcjIsIHJpZ2h0SGFzQXNzaWdubWVudHMpOwogfQogCi1FeHByZXNzaW9uTm9kZSogQVNUQnVp
bGRlcjo6bWFrZURpdk5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVz
c2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3Np
Z25tZW50cykKK0V4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlRGl2Tm9kZShpbnQgbGlu
ZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJv
b2wgcmlnaHRIYXNBc3NpZ25tZW50cykKIHsKICAgICBleHByMSA9IGV4cHIxLT5zdHJpcFVuYXJ5
UGx1cygpOwogICAgIGV4cHIyID0gZXhwcjItPnN0cmlwVW5hcnlQbHVzKCk7CiAKICAgICBpZiAo
ZXhwcjEtPmlzTnVtYmVyKCkgJiYgZXhwcjItPmlzTnVtYmVyKCkpCi0gICAgICAgIHJldHVybiBj
cmVhdGVOdW1iZXIobG9jYXRpb24sIHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByMSktPnZh
bHVlKCkgLyBzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjIpLT52YWx1ZSgpKTsKLSAgICBy
ZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIERpdk5vZGUobG9jYXRpb24sIGV4cHIxLCBleHByMiwg
cmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgICAgIHJldHVybiBjcmVhdGVOdW1iZXIobGluZU51
bWJlciwgc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIxKS0+dmFsdWUoKSAvIHN0YXRpY19j
YXN0PE51bWJlck5vZGUqPihleHByMiktPnZhbHVlKCkpOworICAgIHJldHVybiBuZXcgKG1fZ2xv
YmFsRGF0YSkgRGl2Tm9kZShsaW5lTnVtYmVyLCBleHByMSwgZXhwcjIsIHJpZ2h0SGFzQXNzaWdu
bWVudHMpOwogfQogCi1FeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZU1vZE5vZGUoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHBy
ZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKK0V4cHJlc3Npb25O
b2RlKiBBU1RCdWlsZGVyOjptYWtlTW9kTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5v
ZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50
cykKIHsKICAgICBleHByMSA9IGV4cHIxLT5zdHJpcFVuYXJ5UGx1cygpOwogICAgIGV4cHIyID0g
ZXhwcjItPnN0cmlwVW5hcnlQbHVzKCk7CiAgICAgCiAgICAgaWYgKGV4cHIxLT5pc051bWJlcigp
ICYmIGV4cHIyLT5pc051bWJlcigpKQotICAgICAgICByZXR1cm4gY3JlYXRlTnVtYmVyKGxvY2F0
aW9uLCBmbW9kKHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByMSktPnZhbHVlKCksIHN0YXRp
Y19jYXN0PE51bWJlck5vZGUqPihleHByMiktPnZhbHVlKCkpKTsKLSAgICByZXR1cm4gbmV3ICht
X2dsb2JhbERhdGEpIE1vZE5vZGUobG9jYXRpb24sIGV4cHIxLCBleHByMiwgcmlnaHRIYXNBc3Np
Z25tZW50cyk7CisgICAgICAgIHJldHVybiBjcmVhdGVOdW1iZXIobGluZU51bWJlciwgZm1vZChz
dGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjEpLT52YWx1ZSgpLCBzdGF0aWNfY2FzdDxOdW1i
ZXJOb2RlKj4oZXhwcjIpLT52YWx1ZSgpKSk7CisgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRh
KSBNb2ROb2RlKGxpbmVOdW1iZXIsIGV4cHIxLCBleHByMiwgcmlnaHRIYXNBc3NpZ25tZW50cyk7
CiB9CiAKLUV4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlQWRkTm9kZShjb25zdCBKU1Rv
a2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25O
b2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQorRXhwcmVzc2lvbk5vZGUqIEFT
VEJ1aWxkZXI6Om1ha2VBZGROb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhw
cjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQogewog
ICAgIGlmIChleHByMS0+aXNOdW1iZXIoKSAmJiBleHByMi0+aXNOdW1iZXIoKSkKLSAgICAgICAg
cmV0dXJuIGNyZWF0ZU51bWJlcihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4
cHIxKS0+dmFsdWUoKSArIHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByMiktPnZhbHVlKCkp
OwotICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgQWRkTm9kZShsb2NhdGlvbiwgZXhwcjEs
IGV4cHIyLCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZU51bWJl
cihsaW5lTnVtYmVyLCBzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjEpLT52YWx1ZSgpICsg
c3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIyKS0+dmFsdWUoKSk7CisgICAgcmV0dXJuIG5l
dyAobV9nbG9iYWxEYXRhKSBBZGROb2RlKGxpbmVOdW1iZXIsIGV4cHIxLCBleHByMiwgcmlnaHRI
YXNBc3NpZ25tZW50cyk7CiB9CiAKLUV4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlU3Vi
Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhw
cjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQorRXhw
cmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VTdWJOb2RlKGludCBsaW5lTnVtYmVyLCBFeHBy
ZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fz
c2lnbm1lbnRzKQogewogICAgIGV4cHIxID0gZXhwcjEtPnN0cmlwVW5hcnlQbHVzKCk7CiAgICAg
ZXhwcjIgPSBleHByMi0+c3RyaXBVbmFyeVBsdXMoKTsKIAogICAgIGlmIChleHByMS0+aXNOdW1i
ZXIoKSAmJiBleHByMi0+aXNOdW1iZXIoKSkKLSAgICAgICAgcmV0dXJuIGNyZWF0ZU51bWJlcihs
b2NhdGlvbiwgc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIxKS0+dmFsdWUoKSAtIHN0YXRp
Y19jYXN0PE51bWJlck5vZGUqPihleHByMiktPnZhbHVlKCkpOwotICAgIHJldHVybiBuZXcgKG1f
Z2xvYmFsRGF0YSkgU3ViTm9kZShsb2NhdGlvbiwgZXhwcjEsIGV4cHIyLCByaWdodEhhc0Fzc2ln
bm1lbnRzKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZU51bWJlcihsaW5lTnVtYmVyLCBzdGF0aWNf
Y2FzdDxOdW1iZXJOb2RlKj4oZXhwcjEpLT52YWx1ZSgpIC0gc3RhdGljX2Nhc3Q8TnVtYmVyTm9k
ZSo+KGV4cHIyKS0+dmFsdWUoKSk7CisgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBTdWJO
b2RlKGxpbmVOdW1iZXIsIGV4cHIxLCBleHByMiwgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiB9CiAK
LUV4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlTGVmdFNoaWZ0Tm9kZShjb25zdCBKU1Rv
a2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25O
b2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQorRXhwcmVzc2lvbk5vZGUqIEFT
VEJ1aWxkZXI6Om1ha2VMZWZ0U2hpZnROb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9k
ZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRz
KQogewogICAgIGlmIChleHByMS0+aXNOdW1iZXIoKSAmJiBleHByMi0+aXNOdW1iZXIoKSkKLSAg
ICAgICAgcmV0dXJuIGNyZWF0ZU51bWJlcihsb2NhdGlvbiwgdG9JbnQzMihzdGF0aWNfY2FzdDxO
dW1iZXJOb2RlKj4oZXhwcjEpLT52YWx1ZSgpKSA8PCAodG9VSW50MzIoc3RhdGljX2Nhc3Q8TnVt
YmVyTm9kZSo+KGV4cHIyKS0+dmFsdWUoKSkgJiAweDFmKSk7Ci0gICAgcmV0dXJuIG5ldyAobV9n
bG9iYWxEYXRhKSBMZWZ0U2hpZnROb2RlKGxvY2F0aW9uLCBleHByMSwgZXhwcjIsIHJpZ2h0SGFz
QXNzaWdubWVudHMpOworICAgICAgICByZXR1cm4gY3JlYXRlTnVtYmVyKGxpbmVOdW1iZXIsIHRv
SW50MzIoc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIxKS0+dmFsdWUoKSkgPDwgKHRvVUlu
dDMyKHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByMiktPnZhbHVlKCkpICYgMHgxZikpOwor
ICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgTGVmdFNoaWZ0Tm9kZShsaW5lTnVtYmVyLCBl
eHByMSwgZXhwcjIsIHJpZ2h0SGFzQXNzaWdubWVudHMpOwogfQogCi1FeHByZXNzaW9uTm9kZSog
QVNUQnVpbGRlcjo6bWFrZVJpZ2h0U2hpZnROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9j
YXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29s
IHJpZ2h0SGFzQXNzaWdubWVudHMpCitFeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZVJp
Z2h0U2hpZnROb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJl
c3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQogewogICAgIGlmIChl
eHByMS0+aXNOdW1iZXIoKSAmJiBleHByMi0+aXNOdW1iZXIoKSkKLSAgICAgICAgcmV0dXJuIGNy
ZWF0ZU51bWJlcihsb2NhdGlvbiwgdG9JbnQzMihzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhw
cjEpLT52YWx1ZSgpKSA+PiAodG9VSW50MzIoc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIy
KS0+dmFsdWUoKSkgJiAweDFmKSk7Ci0gICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBSaWdo
dFNoaWZ0Tm9kZShsb2NhdGlvbiwgZXhwcjEsIGV4cHIyLCByaWdodEhhc0Fzc2lnbm1lbnRzKTsK
KyAgICAgICAgcmV0dXJuIGNyZWF0ZU51bWJlcihsaW5lTnVtYmVyLCB0b0ludDMyKHN0YXRpY19j
YXN0PE51bWJlck5vZGUqPihleHByMSktPnZhbHVlKCkpID4+ICh0b1VJbnQzMihzdGF0aWNfY2Fz
dDxOdW1iZXJOb2RlKj4oZXhwcjIpLT52YWx1ZSgpKSAmIDB4MWYpKTsKKyAgICByZXR1cm4gbmV3
IChtX2dsb2JhbERhdGEpIFJpZ2h0U2hpZnROb2RlKGxpbmVOdW1iZXIsIGV4cHIxLCBleHByMiwg
cmlnaHRIYXNBc3NpZ25tZW50cyk7CiB9CiAKLUV4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjpt
YWtlVVJpZ2h0U2hpZnROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJl
c3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNz
aWdubWVudHMpCitFeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZVVSaWdodFNoaWZ0Tm9k
ZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSog
ZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKIHsKICAgICBpZiAoZXhwcjEtPmlzTnVt
YmVyKCkgJiYgZXhwcjItPmlzTnVtYmVyKCkpCi0gICAgICAgIHJldHVybiBjcmVhdGVOdW1iZXIo
bG9jYXRpb24sIHRvVUludDMyKHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByMSktPnZhbHVl
KCkpID4+ICh0b1VJbnQzMihzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjIpLT52YWx1ZSgp
KSAmIDB4MWYpKTsKLSAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIFVuc2lnbmVkUmlnaHRT
aGlmdE5vZGUobG9jYXRpb24sIGV4cHIxLCBleHByMiwgcmlnaHRIYXNBc3NpZ25tZW50cyk7Cisg
ICAgICAgIHJldHVybiBjcmVhdGVOdW1iZXIobGluZU51bWJlciwgdG9VSW50MzIoc3RhdGljX2Nh
c3Q8TnVtYmVyTm9kZSo+KGV4cHIxKS0+dmFsdWUoKSkgPj4gKHRvVUludDMyKHN0YXRpY19jYXN0
PE51bWJlck5vZGUqPihleHByMiktPnZhbHVlKCkpICYgMHgxZikpOworICAgIHJldHVybiBuZXcg
KG1fZ2xvYmFsRGF0YSkgVW5zaWduZWRSaWdodFNoaWZ0Tm9kZShsaW5lTnVtYmVyLCBleHByMSwg
ZXhwcjIsIHJpZ2h0SGFzQXNzaWdubWVudHMpOwogfQogCi1FeHByZXNzaW9uTm9kZSogQVNUQnVp
bGRlcjo6bWFrZUJpdE9yTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHBy
ZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fz
c2lnbm1lbnRzKQorRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VCaXRPck5vZGUoaW50
IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIy
LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCiB7CiAgICAgaWYgKGV4cHIxLT5pc051bWJlcigp
ICYmIGV4cHIyLT5pc051bWJlcigpKQotICAgICAgICByZXR1cm4gY3JlYXRlTnVtYmVyKGxvY2F0
aW9uLCB0b0ludDMyKHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByMSktPnZhbHVlKCkpIHwg
dG9JbnQzMihzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjIpLT52YWx1ZSgpKSk7Ci0gICAg
cmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBCaXRPck5vZGUobG9jYXRpb24sIGV4cHIxLCBleHBy
MiwgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgICAgIHJldHVybiBjcmVhdGVOdW1iZXIobGlu
ZU51bWJlciwgdG9JbnQzMihzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjEpLT52YWx1ZSgp
KSB8IHRvSW50MzIoc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIyKS0+dmFsdWUoKSkpOwor
ICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgQml0T3JOb2RlKGxpbmVOdW1iZXIsIGV4cHIx
LCBleHByMiwgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiB9CiAKLUV4cHJlc3Npb25Ob2RlKiBBU1RC
dWlsZGVyOjptYWtlQml0QW5kTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBF
eHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhh
c0Fzc2lnbm1lbnRzKQorRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VCaXRBbmROb2Rl
KGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBl
eHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQogewogICAgIGlmIChleHByMS0+aXNOdW1i
ZXIoKSAmJiBleHByMi0+aXNOdW1iZXIoKSkKLSAgICAgICAgcmV0dXJuIGNyZWF0ZU51bWJlcihs
b2NhdGlvbiwgdG9JbnQzMihzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjEpLT52YWx1ZSgp
KSAmIHRvSW50MzIoc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIyKS0+dmFsdWUoKSkpOwot
ICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgQml0QW5kTm9kZShsb2NhdGlvbiwgZXhwcjEs
IGV4cHIyLCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZU51bWJl
cihsaW5lTnVtYmVyLCB0b0ludDMyKHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByMSktPnZh
bHVlKCkpICYgdG9JbnQzMihzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjIpLT52YWx1ZSgp
KSk7CisgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBCaXRBbmROb2RlKGxpbmVOdW1iZXIs
IGV4cHIxLCBleHByMiwgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiB9CiAKLUV4cHJlc3Npb25Ob2Rl
KiBBU1RCdWlsZGVyOjptYWtlQml0WE9yTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0
aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCBy
aWdodEhhc0Fzc2lnbm1lbnRzKQorRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VCaXRY
T3JOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25O
b2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQogewogICAgIGlmIChleHByMS0+
aXNOdW1iZXIoKSAmJiBleHByMi0+aXNOdW1iZXIoKSkKLSAgICAgICAgcmV0dXJuIGNyZWF0ZU51
bWJlcihsb2NhdGlvbiwgdG9JbnQzMihzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjEpLT52
YWx1ZSgpKSBeIHRvSW50MzIoc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIyKS0+dmFsdWUo
KSkpOwotICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgQml0WE9yTm9kZShsb2NhdGlvbiwg
ZXhwcjEsIGV4cHIyLCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0
ZU51bWJlcihsaW5lTnVtYmVyLCB0b0ludDMyKHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHBy
MSktPnZhbHVlKCkpIF4gdG9JbnQzMihzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjIpLT52
YWx1ZSgpKSk7CisgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBCaXRYT3JOb2RlKGxpbmVO
dW1iZXIsIGV4cHIxLCBleHByMiwgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiB9CiAKLUV4cHJlc3Np
b25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlRnVuY3Rpb25DYWxsTm9kZShjb25zdCBKU1Rva2VuTG9j
YXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZnVuYywgQXJndW1lbnRzTm9kZSogYXJn
cywgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQpCitFeHByZXNzaW9uTm9kZSogQVNUQnVp
bGRlcjo6bWFrZUZ1bmN0aW9uQ2FsbE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2Rl
KiBmdW5jLCBBcmd1bWVudHNOb2RlKiBhcmdzLCBpbnQgc3RhcnQsIGludCBkaXZvdCwgaW50IGVu
ZCkKIHsKICAgICBpZiAoIWZ1bmMtPmlzTG9jYXRpb24oKSkKLSAgICAgICAgcmV0dXJuIG5ldyAo
bV9nbG9iYWxEYXRhKSBGdW5jdGlvbkNhbGxWYWx1ZU5vZGUobG9jYXRpb24sIGZ1bmMsIGFyZ3Ms
IGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CisgICAgICAgIHJldHVybiBuZXcg
KG1fZ2xvYmFsRGF0YSkgRnVuY3Rpb25DYWxsVmFsdWVOb2RlKGxpbmVOdW1iZXIsIGZ1bmMsIGFy
Z3MsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CiAgICAgaWYgKGZ1bmMtPmlz
UmVzb2x2ZU5vZGUoKSkgewogICAgICAgICBSZXNvbHZlTm9kZSogcmVzb2x2ZSA9IHN0YXRpY19j
YXN0PFJlc29sdmVOb2RlKj4oZnVuYyk7CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50
aWZpZXIgPSByZXNvbHZlLT5pZGVudGlmaWVyKCk7CiAgICAgICAgIGlmIChpZGVudGlmaWVyID09
IG1fZ2xvYmFsRGF0YS0+cHJvcGVydHlOYW1lcy0+ZXZhbCkgewogICAgICAgICAgICAgdXNlc0V2
YWwoKTsKLSAgICAgICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgRXZhbEZ1bmN0aW9u
Q2FsbE5vZGUobG9jYXRpb24sIGFyZ3MsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZv
dCk7CisgICAgICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEV2YWxGdW5jdGlvbkNh
bGxOb2RlKGxpbmVOdW1iZXIsIGFyZ3MsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZv
dCk7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBGdW5jdGlv
bkNhbGxSZXNvbHZlTm9kZShsb2NhdGlvbiwgaWRlbnRpZmllciwgYXJncywgZGl2b3QsIGRpdm90
IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRh
KSBGdW5jdGlvbkNhbGxSZXNvbHZlTm9kZShsaW5lTnVtYmVyLCBpZGVudGlmaWVyLCBhcmdzLCBk
aXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOwogICAgIH0KICAgICBpZiAoZnVuYy0+
aXNCcmFja2V0QWNjZXNzb3JOb2RlKCkpIHsKICAgICAgICAgQnJhY2tldEFjY2Vzc29yTm9kZSog
YnJhY2tldCA9IHN0YXRpY19jYXN0PEJyYWNrZXRBY2Nlc3Nvck5vZGUqPihmdW5jKTsKLSAgICAg
ICAgRnVuY3Rpb25DYWxsQnJhY2tldE5vZGUqIG5vZGUgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgRnVu
Y3Rpb25DYWxsQnJhY2tldE5vZGUobG9jYXRpb24sIGJyYWNrZXQtPmJhc2UoKSwgYnJhY2tldC0+
c3Vic2NyaXB0KCksIGFyZ3MsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7Cisg
ICAgICAgIEZ1bmN0aW9uQ2FsbEJyYWNrZXROb2RlKiBub2RlID0gbmV3IChtX2dsb2JhbERhdGEp
IEZ1bmN0aW9uQ2FsbEJyYWNrZXROb2RlKGxpbmVOdW1iZXIsIGJyYWNrZXQtPmJhc2UoKSwgYnJh
Y2tldC0+c3Vic2NyaXB0KCksIGFyZ3MsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZv
dCk7CiAgICAgICAgIG5vZGUtPnNldFN1YmV4cHJlc3Npb25JbmZvKGJyYWNrZXQtPmRpdm90KCks
IGJyYWNrZXQtPmVuZE9mZnNldCgpKTsKICAgICAgICAgcmV0dXJuIG5vZGU7CiAgICAgfQpAQCAt
ODEzLDExOCArODEzLDExOCBAQCBFeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZUZ1bmN0
aW9uQ2FsbE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbgogICAgIERvdEFjY2Vz
c29yTm9kZSogZG90ID0gc3RhdGljX2Nhc3Q8RG90QWNjZXNzb3JOb2RlKj4oZnVuYyk7CiAgICAg
RnVuY3Rpb25DYWxsRG90Tm9kZSogbm9kZTsKICAgICBpZiAoZG90LT5pZGVudGlmaWVyKCkgPT0g
bV9nbG9iYWxEYXRhLT5wcm9wZXJ0eU5hbWVzLT5jYWxsKQotICAgICAgICBub2RlID0gbmV3ICht
X2dsb2JhbERhdGEpIENhbGxGdW5jdGlvbkNhbGxEb3ROb2RlKGxvY2F0aW9uLCBkb3QtPmJhc2Uo
KSwgZG90LT5pZGVudGlmaWVyKCksIGFyZ3MsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBk
aXZvdCk7CisgICAgICAgIG5vZGUgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgQ2FsbEZ1bmN0aW9uQ2Fs
bERvdE5vZGUobGluZU51bWJlciwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBhcmdz
LCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOwogICAgIGVsc2UgaWYgKGRvdC0+
aWRlbnRpZmllcigpID09IG1fZ2xvYmFsRGF0YS0+cHJvcGVydHlOYW1lcy0+YXBwbHkpCi0gICAg
ICAgIG5vZGUgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgQXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlKGxv
Y2F0aW9uLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIGFyZ3MsIGRpdm90LCBkaXZv
dCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CisgICAgICAgIG5vZGUgPSBuZXcgKG1fZ2xvYmFsRGF0
YSkgQXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlKGxpbmVOdW1iZXIsIGRvdC0+YmFzZSgpLCBkb3Qt
PmlkZW50aWZpZXIoKSwgYXJncywgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsK
ICAgICBlbHNlCi0gICAgICAgIG5vZGUgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgRnVuY3Rpb25DYWxs
RG90Tm9kZShsb2NhdGlvbiwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBhcmdzLCBk
aXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOworICAgICAgICBub2RlID0gbmV3ICht
X2dsb2JhbERhdGEpIEZ1bmN0aW9uQ2FsbERvdE5vZGUobGluZU51bWJlciwgZG90LT5iYXNlKCks
IGRvdC0+aWRlbnRpZmllcigpLCBhcmdzLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2
b3QpOwogICAgIG5vZGUtPnNldFN1YmV4cHJlc3Npb25JbmZvKGRvdC0+ZGl2b3QoKSwgZG90LT5l
bmRPZmZzZXQoKSk7CiAgICAgcmV0dXJuIG5vZGU7CiB9CiAKLUV4cHJlc3Npb25Ob2RlKiBBU1RC
dWlsZGVyOjptYWtlQmluYXJ5Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBp
bnQgdG9rZW4sIHBhaXI8RXhwcmVzc2lvbk5vZGUqLCBCaW5hcnlPcEluZm8+IGxocywgcGFpcjxF
eHByZXNzaW9uTm9kZSosIEJpbmFyeU9wSW5mbz4gcmhzKQorRXhwcmVzc2lvbk5vZGUqIEFTVEJ1
aWxkZXI6Om1ha2VCaW5hcnlOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgdG9rZW4sIHBhaXI8RXhw
cmVzc2lvbk5vZGUqLCBCaW5hcnlPcEluZm8+IGxocywgcGFpcjxFeHByZXNzaW9uTm9kZSosIEJp
bmFyeU9wSW5mbz4gcmhzKQogewogICAgIHN3aXRjaCAodG9rZW4pIHsKICAgICBjYXNlIE9SOgot
ICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIExvZ2ljYWxPcE5vZGUobG9jYXRpb24s
IGxocy5maXJzdCwgcmhzLmZpcnN0LCBPcExvZ2ljYWxPcik7CisgICAgICAgIHJldHVybiBuZXcg
KG1fZ2xvYmFsRGF0YSkgTG9naWNhbE9wTm9kZShsaW5lTnVtYmVyLCBsaHMuZmlyc3QsIHJocy5m
aXJzdCwgT3BMb2dpY2FsT3IpOwogCiAgICAgY2FzZSBBTkQ6Ci0gICAgICAgIHJldHVybiBuZXcg
KG1fZ2xvYmFsRGF0YSkgTG9naWNhbE9wTm9kZShsb2NhdGlvbiwgbGhzLmZpcnN0LCByaHMuZmly
c3QsIE9wTG9naWNhbEFuZCk7CisgICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgTG9n
aWNhbE9wTm9kZShsaW5lTnVtYmVyLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgT3BMb2dpY2FsQW5k
KTsKIAogICAgIGNhc2UgQklUT1I6Ci0gICAgICAgIHJldHVybiBtYWtlQml0T3JOb2RlKGxvY2F0
aW9uLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsKKyAg
ICAgICAgcmV0dXJuIG1ha2VCaXRPck5vZGUobGluZU51bWJlciwgbGhzLmZpcnN0LCByaHMuZmly
c3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7CiAKICAgICBjYXNlIEJJVFhPUjoKLSAgICAg
ICAgcmV0dXJuIG1ha2VCaXRYT3JOb2RlKGxvY2F0aW9uLCBsaHMuZmlyc3QsIHJocy5maXJzdCwg
cmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsKKyAgICAgICAgcmV0dXJuIG1ha2VCaXRYT3JOb2Rl
KGxpbmVOdW1iZXIsIGxocy5maXJzdCwgcmhzLmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1l
bnQpOwogCiAgICAgY2FzZSBCSVRBTkQ6Ci0gICAgICAgIHJldHVybiBtYWtlQml0QW5kTm9kZShs
b2NhdGlvbiwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7
CisgICAgICAgIHJldHVybiBtYWtlQml0QW5kTm9kZShsaW5lTnVtYmVyLCBsaHMuZmlyc3QsIHJo
cy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsKIAogICAgIGNhc2UgRVFFUToKLSAg
ICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBFcXVhbE5vZGUobG9jYXRpb24sIGxocy5m
aXJzdCwgcmhzLmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOworICAgICAgICByZXR1
cm4gbmV3IChtX2dsb2JhbERhdGEpIEVxdWFsTm9kZShsaW5lTnVtYmVyLCBsaHMuZmlyc3QsIHJo
cy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsKIAogICAgIGNhc2UgTkU6Ci0gICAg
ICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgTm90RXF1YWxOb2RlKGxvY2F0aW9uLCBsaHMu
Zmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsKKyAgICAgICAgcmV0
dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBOb3RFcXVhbE5vZGUobGluZU51bWJlciwgbGhzLmZpcnN0
LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7CiAKICAgICBjYXNlIFNUUkVR
OgotICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIFN0cmljdEVxdWFsTm9kZShsb2Nh
dGlvbiwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7Cisg
ICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgU3RyaWN0RXF1YWxOb2RlKGxpbmVOdW1i
ZXIsIGxocy5maXJzdCwgcmhzLmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOwogCiAg
ICAgY2FzZSBTVFJORVE6Ci0gICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgTm90U3Ry
aWN0RXF1YWxOb2RlKGxvY2F0aW9uLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5o
YXNBc3NpZ25tZW50KTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBOb3RTdHJp
Y3RFcXVhbE5vZGUobGluZU51bWJlciwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQu
aGFzQXNzaWdubWVudCk7CiAKICAgICBjYXNlIExUOgotICAgICAgICByZXR1cm4gbmV3IChtX2ds
b2JhbERhdGEpIExlc3NOb2RlKGxvY2F0aW9uLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNl
Y29uZC5oYXNBc3NpZ25tZW50KTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBM
ZXNzTm9kZShsaW5lTnVtYmVyLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNB
c3NpZ25tZW50KTsKIAogICAgIGNhc2UgR1Q6Ci0gICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFs
RGF0YSkgR3JlYXRlck5vZGUobG9jYXRpb24sIGxocy5maXJzdCwgcmhzLmZpcnN0LCByaHMuc2Vj
b25kLmhhc0Fzc2lnbm1lbnQpOworICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEdy
ZWF0ZXJOb2RlKGxpbmVOdW1iZXIsIGxocy5maXJzdCwgcmhzLmZpcnN0LCByaHMuc2Vjb25kLmhh
c0Fzc2lnbm1lbnQpOwogCiAgICAgY2FzZSBMRToKLSAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9i
YWxEYXRhKSBMZXNzRXFOb2RlKGxvY2F0aW9uLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNl
Y29uZC5oYXNBc3NpZ25tZW50KTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBM
ZXNzRXFOb2RlKGxpbmVOdW1iZXIsIGxocy5maXJzdCwgcmhzLmZpcnN0LCByaHMuc2Vjb25kLmhh
c0Fzc2lnbm1lbnQpOwogCiAgICAgY2FzZSBHRToKLSAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9i
YWxEYXRhKSBHcmVhdGVyRXFOb2RlKGxvY2F0aW9uLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhz
LnNlY29uZC5oYXNBc3NpZ25tZW50KTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRh
KSBHcmVhdGVyRXFOb2RlKGxpbmVOdW1iZXIsIGxocy5maXJzdCwgcmhzLmZpcnN0LCByaHMuc2Vj
b25kLmhhc0Fzc2lnbm1lbnQpOwogCiAgICAgY2FzZSBJTlNUQU5DRU9GOiB7Ci0gICAgICAgIElu
c3RhbmNlT2ZOb2RlKiBub2RlID0gbmV3IChtX2dsb2JhbERhdGEpIEluc3RhbmNlT2ZOb2RlKGxv
Y2F0aW9uLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsK
KyAgICAgICAgSW5zdGFuY2VPZk5vZGUqIG5vZGUgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgSW5zdGFu
Y2VPZk5vZGUobGluZU51bWJlciwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFz
QXNzaWdubWVudCk7CiAgICAgICAgIHNldEV4Y2VwdGlvbkxvY2F0aW9uKG5vZGUsIGxocy5zZWNv
bmQuc3RhcnQsIHJocy5zZWNvbmQuc3RhcnQsIHJocy5zZWNvbmQuZW5kKTsKICAgICAgICAgcmV0
dXJuIG5vZGU7CiAgICAgfQogCiAgICAgY2FzZSBJTlRPS0VOOiB7Ci0gICAgICAgIEluTm9kZSog
bm9kZSA9IG5ldyAobV9nbG9iYWxEYXRhKSBJbk5vZGUobG9jYXRpb24sIGxocy5maXJzdCwgcmhz
LmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOworICAgICAgICBJbk5vZGUqIG5vZGUg
PSBuZXcgKG1fZ2xvYmFsRGF0YSkgSW5Ob2RlKGxpbmVOdW1iZXIsIGxocy5maXJzdCwgcmhzLmZp
cnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOwogICAgICAgICBzZXRFeGNlcHRpb25Mb2Nh
dGlvbihub2RlLCBsaHMuc2Vjb25kLnN0YXJ0LCByaHMuc2Vjb25kLnN0YXJ0LCByaHMuc2Vjb25k
LmVuZCk7CiAgICAgICAgIHJldHVybiBub2RlOwogICAgIH0KIAogICAgIGNhc2UgTFNISUZUOgot
ICAgICAgICByZXR1cm4gbWFrZUxlZnRTaGlmdE5vZGUobG9jYXRpb24sIGxocy5maXJzdCwgcmhz
LmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOworICAgICAgICByZXR1cm4gbWFrZUxl
ZnRTaGlmdE5vZGUobGluZU51bWJlciwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQu
aGFzQXNzaWdubWVudCk7CiAKICAgICBjYXNlIFJTSElGVDoKLSAgICAgICAgcmV0dXJuIG1ha2VS
aWdodFNoaWZ0Tm9kZShsb2NhdGlvbiwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQu
aGFzQXNzaWdubWVudCk7CisgICAgICAgIHJldHVybiBtYWtlUmlnaHRTaGlmdE5vZGUobGluZU51
bWJlciwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7CiAK
ICAgICBjYXNlIFVSU0hJRlQ6Ci0gICAgICAgIHJldHVybiBtYWtlVVJpZ2h0U2hpZnROb2RlKGxv
Y2F0aW9uLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsK
KyAgICAgICAgcmV0dXJuIG1ha2VVUmlnaHRTaGlmdE5vZGUobGluZU51bWJlciwgbGhzLmZpcnN0
LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7CiAKICAgICBjYXNlIFBMVVM6
Ci0gICAgICAgIHJldHVybiBtYWtlQWRkTm9kZShsb2NhdGlvbiwgbGhzLmZpcnN0LCByaHMuZmly
c3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7CisgICAgICAgIHJldHVybiBtYWtlQWRkTm9k
ZShsaW5lTnVtYmVyLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25t
ZW50KTsKIAogICAgIGNhc2UgTUlOVVM6Ci0gICAgICAgIHJldHVybiBtYWtlU3ViTm9kZShsb2Nh
dGlvbiwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7Cisg
ICAgICAgIHJldHVybiBtYWtlU3ViTm9kZShsaW5lTnVtYmVyLCBsaHMuZmlyc3QsIHJocy5maXJz
dCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsKIAogICAgIGNhc2UgVElNRVM6Ci0gICAgICAg
IHJldHVybiBtYWtlTXVsdE5vZGUobG9jYXRpb24sIGxocy5maXJzdCwgcmhzLmZpcnN0LCByaHMu
c2Vjb25kLmhhc0Fzc2lnbm1lbnQpOworICAgICAgICByZXR1cm4gbWFrZU11bHROb2RlKGxpbmVO
dW1iZXIsIGxocy5maXJzdCwgcmhzLmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOwog
CiAgICAgY2FzZSBESVZJREU6Ci0gICAgICAgIHJldHVybiBtYWtlRGl2Tm9kZShsb2NhdGlvbiwg
bGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7CisgICAgICAg
IHJldHVybiBtYWtlRGl2Tm9kZShsaW5lTnVtYmVyLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhz
LnNlY29uZC5oYXNBc3NpZ25tZW50KTsKIAogICAgIGNhc2UgTU9EOgotICAgICAgICByZXR1cm4g
bWFrZU1vZE5vZGUobG9jYXRpb24sIGxocy5maXJzdCwgcmhzLmZpcnN0LCByaHMuc2Vjb25kLmhh
c0Fzc2lnbm1lbnQpOworICAgICAgICByZXR1cm4gbWFrZU1vZE5vZGUobGluZU51bWJlciwgbGhz
LmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7CiAgICAgfQogICAg
IENSQVNIKCk7CiAgICAgcmV0dXJuIDA7CiB9CiAKLUV4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVy
OjptYWtlQXNzaWduTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNz
aW9uTm9kZSogbG9jLCBPcGVyYXRvciBvcCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIGJvb2wgbG9j
SGFzQXNzaWdubWVudHMsIGJvb2wgZXhwckhhc0Fzc2lnbm1lbnRzLCBpbnQgc3RhcnQsIGludCBk
aXZvdCwgaW50IGVuZCkKK0V4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlQXNzaWduTm9k
ZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGxvYywgT3BlcmF0b3Igb3AsIEV4cHJl
c3Npb25Ob2RlKiBleHByLCBib29sIGxvY0hhc0Fzc2lnbm1lbnRzLCBib29sIGV4cHJIYXNBc3Np
Z25tZW50cywgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQpCiB7CiAgICAgaWYgKCFsb2Mt
PmlzTG9jYXRpb24oKSkKLSAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBBc3NpZ25F
cnJvck5vZGUobG9jYXRpb24sIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7Cisg
ICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgQXNzaWduRXJyb3JOb2RlKGxpbmVOdW1i
ZXIsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CiAKICAgICBpZiAobG9jLT5p
c1Jlc29sdmVOb2RlKCkpIHsKICAgICAgICAgUmVzb2x2ZU5vZGUqIHJlc29sdmUgPSBzdGF0aWNf
Y2FzdDxSZXNvbHZlTm9kZSo+KGxvYyk7CiAgICAgICAgIGlmIChvcCA9PSBPcEVxdWFsKSB7CiAg
ICAgICAgICAgICBpZiAoZXhwci0+aXNGdW5jRXhwck5vZGUoKSkKICAgICAgICAgICAgICAgICBz
dGF0aWNfY2FzdDxGdW5jRXhwck5vZGUqPihleHByKS0+Ym9keSgpLT5zZXRJbmZlcnJlZE5hbWUo
cmVzb2x2ZS0+aWRlbnRpZmllcigpKTsKLSAgICAgICAgICAgIEFzc2lnblJlc29sdmVOb2RlKiBu
b2RlID0gbmV3IChtX2dsb2JhbERhdGEpIEFzc2lnblJlc29sdmVOb2RlKGxvY2F0aW9uLCByZXNv
bHZlLT5pZGVudGlmaWVyKCksIGV4cHIpOworICAgICAgICAgICAgQXNzaWduUmVzb2x2ZU5vZGUq
IG5vZGUgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgQXNzaWduUmVzb2x2ZU5vZGUobGluZU51bWJlciwg
cmVzb2x2ZS0+aWRlbnRpZmllcigpLCBleHByKTsKICAgICAgICAgICAgIHNldEV4Y2VwdGlvbkxv
Y2F0aW9uKG5vZGUsIHN0YXJ0LCBkaXZvdCwgZW5kKTsKICAgICAgICAgICAgIHJldHVybiBub2Rl
OwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgUmVhZE1vZGlm
eVJlc29sdmVOb2RlKGxvY2F0aW9uLCByZXNvbHZlLT5pZGVudGlmaWVyKCksIG9wLCBleHByLCBl
eHBySGFzQXNzaWdubWVudHMsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7Cisg
ICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgUmVhZE1vZGlmeVJlc29sdmVOb2RlKGxp
bmVOdW1iZXIsIHJlc29sdmUtPmlkZW50aWZpZXIoKSwgb3AsIGV4cHIsIGV4cHJIYXNBc3NpZ25t
ZW50cywgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKICAgICB9CiAgICAgaWYg
KGxvYy0+aXNCcmFja2V0QWNjZXNzb3JOb2RlKCkpIHsKICAgICAgICAgQnJhY2tldEFjY2Vzc29y
Tm9kZSogYnJhY2tldCA9IHN0YXRpY19jYXN0PEJyYWNrZXRBY2Nlc3Nvck5vZGUqPihsb2MpOwog
ICAgICAgICBpZiAob3AgPT0gT3BFcXVhbCkKLSAgICAgICAgICAgIHJldHVybiBuZXcgKG1fZ2xv
YmFsRGF0YSkgQXNzaWduQnJhY2tldE5vZGUobG9jYXRpb24sIGJyYWNrZXQtPmJhc2UoKSwgYnJh
Y2tldC0+c3Vic2NyaXB0KCksIGV4cHIsIGxvY0hhc0Fzc2lnbm1lbnRzLCBleHBySGFzQXNzaWdu
bWVudHMsIGJyYWNrZXQtPmRpdm90KCksIGJyYWNrZXQtPmRpdm90KCkgLSBzdGFydCwgZW5kIC0g
YnJhY2tldC0+ZGl2b3QoKSk7Ci0gICAgICAgIFJlYWRNb2RpZnlCcmFja2V0Tm9kZSogbm9kZSA9
IG5ldyAobV9nbG9iYWxEYXRhKSBSZWFkTW9kaWZ5QnJhY2tldE5vZGUobG9jYXRpb24sIGJyYWNr
ZXQtPmJhc2UoKSwgYnJhY2tldC0+c3Vic2NyaXB0KCksIG9wLCBleHByLCBsb2NIYXNBc3NpZ25t
ZW50cywgZXhwckhhc0Fzc2lnbm1lbnRzLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2
b3QpOworICAgICAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBBc3NpZ25CcmFja2V0
Tm9kZShsaW5lTnVtYmVyLCBicmFja2V0LT5iYXNlKCksIGJyYWNrZXQtPnN1YnNjcmlwdCgpLCBl
eHByLCBsb2NIYXNBc3NpZ25tZW50cywgZXhwckhhc0Fzc2lnbm1lbnRzLCBicmFja2V0LT5kaXZv
dCgpLCBicmFja2V0LT5kaXZvdCgpIC0gc3RhcnQsIGVuZCAtIGJyYWNrZXQtPmRpdm90KCkpOwor
ICAgICAgICBSZWFkTW9kaWZ5QnJhY2tldE5vZGUqIG5vZGUgPSBuZXcgKG1fZ2xvYmFsRGF0YSkg
UmVhZE1vZGlmeUJyYWNrZXROb2RlKGxpbmVOdW1iZXIsIGJyYWNrZXQtPmJhc2UoKSwgYnJhY2tl
dC0+c3Vic2NyaXB0KCksIG9wLCBleHByLCBsb2NIYXNBc3NpZ25tZW50cywgZXhwckhhc0Fzc2ln
bm1lbnRzLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOwogICAgICAgICBub2Rl
LT5zZXRTdWJleHByZXNzaW9uSW5mbyhicmFja2V0LT5kaXZvdCgpLCBicmFja2V0LT5lbmRPZmZz
ZXQoKSk7CiAgICAgICAgIHJldHVybiBub2RlOwogICAgIH0KQEAgLTkzMyw1NSArOTMzLDU1IEBA
IEV4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlQXNzaWduTm9kZShjb25zdCBKU1Rva2Vu
TG9jYXRpb24mIGxvY2F0aW9uLCBFeHByCiAgICAgaWYgKG9wID09IE9wRXF1YWwpIHsKICAgICAg
ICAgaWYgKGV4cHItPmlzRnVuY0V4cHJOb2RlKCkpCiAgICAgICAgICAgICBzdGF0aWNfY2FzdDxG
dW5jRXhwck5vZGUqPihleHByKS0+Ym9keSgpLT5zZXRJbmZlcnJlZE5hbWUoZG90LT5pZGVudGlm
aWVyKCkpOwotICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEFzc2lnbkRvdE5vZGUo
bG9jYXRpb24sIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgZXhwciwgZXhwckhhc0Fz
c2lnbm1lbnRzLCBkb3QtPmRpdm90KCksIGRvdC0+ZGl2b3QoKSAtIHN0YXJ0LCBlbmQgLSBkb3Qt
PmRpdm90KCkpOworICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEFzc2lnbkRvdE5v
ZGUobGluZU51bWJlciwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBleHByLCBleHBy
SGFzQXNzaWdubWVudHMsIGRvdC0+ZGl2b3QoKSwgZG90LT5kaXZvdCgpIC0gc3RhcnQsIGVuZCAt
IGRvdC0+ZGl2b3QoKSk7CiAgICAgfQogCi0gICAgUmVhZE1vZGlmeURvdE5vZGUqIG5vZGUgPSBu
ZXcgKG1fZ2xvYmFsRGF0YSkgUmVhZE1vZGlmeURvdE5vZGUobG9jYXRpb24sIGRvdC0+YmFzZSgp
LCBkb3QtPmlkZW50aWZpZXIoKSwgb3AsIGV4cHIsIGV4cHJIYXNBc3NpZ25tZW50cywgZGl2b3Qs
IGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKKyAgICBSZWFkTW9kaWZ5RG90Tm9kZSogbm9k
ZSA9IG5ldyAobV9nbG9iYWxEYXRhKSBSZWFkTW9kaWZ5RG90Tm9kZShsaW5lTnVtYmVyLCBkb3Qt
PmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIG9wLCBleHByLCBleHBySGFzQXNzaWdubWVudHMs
IGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CiAgICAgbm9kZS0+c2V0U3ViZXhw
cmVzc2lvbkluZm8oZG90LT5kaXZvdCgpLCBkb3QtPmVuZE9mZnNldCgpKTsKICAgICByZXR1cm4g
bm9kZTsKIH0KIAotRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VQcmVmaXhOb2RlKGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHByLCBPcGVy
YXRvciBvcCwgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQpCitFeHByZXNzaW9uTm9kZSog
QVNUQnVpbGRlcjo6bWFrZVByZWZpeE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2Rl
KiBleHByLCBPcGVyYXRvciBvcCwgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQpCiB7CiAg
ICAgaWYgKCFleHByLT5pc0xvY2F0aW9uKCkpCi0gICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFs
RGF0YSkgUHJlZml4RXJyb3JOb2RlKGxvY2F0aW9uLCBvcCwgZGl2b3QsIGRpdm90IC0gc3RhcnQs
IGVuZCAtIGRpdm90KTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBQcmVmaXhF
cnJvck5vZGUobGluZU51bWJlciwgb3AsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZv
dCk7CiAKICAgICBpZiAoZXhwci0+aXNSZXNvbHZlTm9kZSgpKSB7CiAgICAgICAgIFJlc29sdmVO
b2RlKiByZXNvbHZlID0gc3RhdGljX2Nhc3Q8UmVzb2x2ZU5vZGUqPihleHByKTsKLSAgICAgICAg
cmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBQcmVmaXhSZXNvbHZlTm9kZShsb2NhdGlvbiwgcmVz
b2x2ZS0+aWRlbnRpZmllcigpLCBvcCwgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90
KTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBQcmVmaXhSZXNvbHZlTm9kZShs
aW5lTnVtYmVyLCByZXNvbHZlLT5pZGVudGlmaWVyKCksIG9wLCBkaXZvdCwgZGl2b3QgLSBzdGFy
dCwgZW5kIC0gZGl2b3QpOwogICAgIH0KICAgICBpZiAoZXhwci0+aXNCcmFja2V0QWNjZXNzb3JO
b2RlKCkpIHsKICAgICAgICAgQnJhY2tldEFjY2Vzc29yTm9kZSogYnJhY2tldCA9IHN0YXRpY19j
YXN0PEJyYWNrZXRBY2Nlc3Nvck5vZGUqPihleHByKTsKLSAgICAgICAgUHJlZml4QnJhY2tldE5v
ZGUqIG5vZGUgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgUHJlZml4QnJhY2tldE5vZGUobG9jYXRpb24s
IGJyYWNrZXQtPmJhc2UoKSwgYnJhY2tldC0+c3Vic2NyaXB0KCksIG9wLCBkaXZvdCwgZGl2b3Qg
LSBzdGFydCwgZW5kIC0gZGl2b3QpOworICAgICAgICBQcmVmaXhCcmFja2V0Tm9kZSogbm9kZSA9
IG5ldyAobV9nbG9iYWxEYXRhKSBQcmVmaXhCcmFja2V0Tm9kZShsaW5lTnVtYmVyLCBicmFja2V0
LT5iYXNlKCksIGJyYWNrZXQtPnN1YnNjcmlwdCgpLCBvcCwgZGl2b3QsIGRpdm90IC0gc3RhcnQs
IGVuZCAtIGRpdm90KTsKICAgICAgICAgbm9kZS0+c2V0U3ViZXhwcmVzc2lvbkluZm8oYnJhY2tl
dC0+ZGl2b3QoKSwgYnJhY2tldC0+c3RhcnRPZmZzZXQoKSk7CiAgICAgICAgIHJldHVybiBub2Rl
OwogICAgIH0KICAgICBBU1NFUlQoZXhwci0+aXNEb3RBY2Nlc3Nvck5vZGUoKSk7CiAgICAgRG90
QWNjZXNzb3JOb2RlKiBkb3QgPSBzdGF0aWNfY2FzdDxEb3RBY2Nlc3Nvck5vZGUqPihleHByKTsK
LSAgICBQcmVmaXhEb3ROb2RlKiBub2RlID0gbmV3IChtX2dsb2JhbERhdGEpIFByZWZpeERvdE5v
ZGUobG9jYXRpb24sIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgb3AsIGRpdm90LCBk
aXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CisgICAgUHJlZml4RG90Tm9kZSogbm9kZSA9IG5l
dyAobV9nbG9iYWxEYXRhKSBQcmVmaXhEb3ROb2RlKGxpbmVOdW1iZXIsIGRvdC0+YmFzZSgpLCBk
b3QtPmlkZW50aWZpZXIoKSwgb3AsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7
CiAgICAgbm9kZS0+c2V0U3ViZXhwcmVzc2lvbkluZm8oZG90LT5kaXZvdCgpLCBkb3QtPnN0YXJ0
T2Zmc2V0KCkpOwogICAgIHJldHVybiBub2RlOwogfQogCi1FeHByZXNzaW9uTm9kZSogQVNUQnVp
bGRlcjo6bWFrZVBvc3RmaXhOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4
cHJlc3Npb25Ob2RlKiBleHByLCBPcGVyYXRvciBvcCwgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGlu
dCBlbmQpCitFeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZVBvc3RmaXhOb2RlKGludCBs
aW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwciwgT3BlcmF0b3Igb3AsIGludCBzdGFydCwg
aW50IGRpdm90LCBpbnQgZW5kKQogewogICAgIGlmICghZXhwci0+aXNMb2NhdGlvbigpKQotICAg
ICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIFBvc3RmaXhFcnJvck5vZGUobG9jYXRpb24s
IG9wLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOworICAgICAgICByZXR1cm4g
bmV3IChtX2dsb2JhbERhdGEpIFBvc3RmaXhFcnJvck5vZGUobGluZU51bWJlciwgb3AsIGRpdm90
LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CiAKICAgICBpZiAoZXhwci0+aXNSZXNvbHZl
Tm9kZSgpKSB7CiAgICAgICAgIFJlc29sdmVOb2RlKiByZXNvbHZlID0gc3RhdGljX2Nhc3Q8UmVz
b2x2ZU5vZGUqPihleHByKTsKLSAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBQb3N0
Zml4UmVzb2x2ZU5vZGUobG9jYXRpb24sIHJlc29sdmUtPmlkZW50aWZpZXIoKSwgb3AsIGRpdm90
LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CisgICAgICAgIHJldHVybiBuZXcgKG1fZ2xv
YmFsRGF0YSkgUG9zdGZpeFJlc29sdmVOb2RlKGxpbmVOdW1iZXIsIHJlc29sdmUtPmlkZW50aWZp
ZXIoKSwgb3AsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CiAgICAgfQogICAg
IGlmIChleHByLT5pc0JyYWNrZXRBY2Nlc3Nvck5vZGUoKSkgewogICAgICAgICBCcmFja2V0QWNj
ZXNzb3JOb2RlKiBicmFja2V0ID0gc3RhdGljX2Nhc3Q8QnJhY2tldEFjY2Vzc29yTm9kZSo+KGV4
cHIpOwotICAgICAgICBQb3N0Zml4QnJhY2tldE5vZGUqIG5vZGUgPSBuZXcgKG1fZ2xvYmFsRGF0
YSkgUG9zdGZpeEJyYWNrZXROb2RlKGxvY2F0aW9uLCBicmFja2V0LT5iYXNlKCksIGJyYWNrZXQt
PnN1YnNjcmlwdCgpLCBvcCwgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKKyAg
ICAgICAgUG9zdGZpeEJyYWNrZXROb2RlKiBub2RlID0gbmV3IChtX2dsb2JhbERhdGEpIFBvc3Rm
aXhCcmFja2V0Tm9kZShsaW5lTnVtYmVyLCBicmFja2V0LT5iYXNlKCksIGJyYWNrZXQtPnN1YnNj
cmlwdCgpLCBvcCwgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKICAgICAgICAg
bm9kZS0+c2V0U3ViZXhwcmVzc2lvbkluZm8oYnJhY2tldC0+ZGl2b3QoKSwgYnJhY2tldC0+ZW5k
T2Zmc2V0KCkpOwogICAgICAgICByZXR1cm4gbm9kZTsKIAogICAgIH0KICAgICBBU1NFUlQoZXhw
ci0+aXNEb3RBY2Nlc3Nvck5vZGUoKSk7CiAgICAgRG90QWNjZXNzb3JOb2RlKiBkb3QgPSBzdGF0
aWNfY2FzdDxEb3RBY2Nlc3Nvck5vZGUqPihleHByKTsKLSAgICBQb3N0Zml4RG90Tm9kZSogbm9k
ZSA9IG5ldyAobV9nbG9iYWxEYXRhKSBQb3N0Zml4RG90Tm9kZShsb2NhdGlvbiwgZG90LT5iYXNl
KCksIGRvdC0+aWRlbnRpZmllcigpLCBvcCwgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRp
dm90KTsKKyAgICBQb3N0Zml4RG90Tm9kZSogbm9kZSA9IG5ldyAobV9nbG9iYWxEYXRhKSBQb3N0
Zml4RG90Tm9kZShsaW5lTnVtYmVyLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIG9w
LCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOwogICAgIG5vZGUtPnNldFN1YmV4
cHJlc3Npb25JbmZvKGRvdC0+ZGl2b3QoKSwgZG90LT5lbmRPZmZzZXQoKSk7CiAgICAgcmV0dXJu
IG5vZGU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVy
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCmluZGV4IDJhOGE4
ZGM5ZTM2M2FkM2EyMjcxNTk2ZTc1ZTE5ZjVkY2MyYjMxMzEuLjNiMDIwZjRmMmIxYjA5NmE3MGE5
NWE5YjU4ODgyN2JkOTBiOTg1OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvTGV4ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIu
Y3BwCkBAIC00MTcsNyArNDE3LDYgQEAgdm9pZCBMZXhlcjxUPjo6c2V0Q29kZShjb25zdCBTb3Vy
Y2VDb2RlJiBzb3VyY2UsIFBhcnNlckFyZW5hKiBhcmVuYSkKICAgICBtX2NvZGVFbmQgPSBtX2Nv
ZGVTdGFydCArIHNvdXJjZS5lbmRPZmZzZXQoKTsKICAgICBtX2Vycm9yID0gZmFsc2U7CiAgICAg
bV9hdExpbmVTdGFydCA9IHRydWU7Ci0gICAgbV9jb2x1bW5OdW1iZXIgPSAwOwogICAgIG1fbGV4
RXJyb3JNZXNzYWdlID0gVVN0cmluZygpOwogICAgIAogICAgIG1fYnVmZmVyOC5yZXNlcnZlSW5p
dGlhbENhcGFjaXR5KGluaXRpYWxSZWFkQnVmZmVyQ2FwYWNpdHkpOwpAQCAtNDM0LDcgKzQzMyw2
IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogdGVtcGxhdGUgPGludCBzaGlmdEFtb3VudD4gQUxX
QVlTX0lOTElORSB2b2lkIExleGVyPFQ+OjppbnRlcm5hbFNoaWZ0KCkKIHsKICAgICBtX2NvZGUg
Kz0gc2hpZnRBbW91bnQ7Ci0gICAgbV9jb2x1bW5OdW1iZXIgKz0gc2hpZnRBbW91bnQ7CiAgICAg
bV9jdXJyZW50ID0gKm1fY29kZTsKIH0KIApAQCAtNDQ2LDcgKzQ0NCw2IEBAIEFMV0FZU19JTkxJ
TkUgdm9pZCBMZXhlcjxUPjo6c2hpZnQoKQogICAgICsrbV9jb2RlOwogICAgIGlmIChMSUtFTFko
bV9jb2RlIDwgbV9jb2RlRW5kKSkKICAgICAgICAgbV9jdXJyZW50ID0gKm1fY29kZTsKLSAgICAr
K21fY29sdW1uTnVtYmVyOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KQEAgLTExODYsNyAr
MTE4Myw3IEBAIGJvb2wgTGV4ZXI8VD46Om5leHRUb2tlbklzQ29sb24oKQogfQogCiB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4KLUpTVG9rZW5UeXBlIExleGVyPFQ+OjpsZXgoSlNUb2tlbkRhdGEqIHRv
a2VuRGF0YSwgSlNUb2tlbkxvY2F0aW9uKiB0b2tlbkxvY2F0aW9uLCB1bnNpZ25lZCBsZXhlckZs
YWdzLCBib29sIHN0cmljdE1vZGUpCitKU1Rva2VuVHlwZSBMZXhlcjxUPjo6bGV4KEpTVG9rZW5E
YXRhKiB0b2tlbkRhdGEsIEpTVG9rZW5JbmZvKiB0b2tlbkluZm8sIHVuc2lnbmVkIGxleGVyRmxh
Z3MsIGJvb2wgc3RyaWN0TW9kZSkKIHsKICAgICBBU1NFUlQoIW1fZXJyb3IpOwogICAgIEFTU0VS
VChtX2J1ZmZlcjguaXNFbXB0eSgpKTsKQEAgLTEyMDIsOCArMTE5OSw3IEBAIHN0YXJ0OgogICAg
IGlmIChhdEVuZCgpKQogICAgICAgICByZXR1cm4gRU9GVE9LOwogICAgIAotICAgIHRva2VuTG9j
YXRpb24tPnN0YXJ0T2Zmc2V0ID0gY3VycmVudE9mZnNldCgpOwotICAgIHRva2VuTG9jYXRpb24t
PmNvbHVtbiA9IG1fY29sdW1uTnVtYmVyOworICAgIHRva2VuSW5mby0+c3RhcnRPZmZzZXQgPSBj
dXJyZW50T2Zmc2V0KCk7CiAKICAgICBDaGFyYWN0ZXJUeXBlIHR5cGU7CiAgICAgaWYgKExJS0VM
WShpc0xhdGluMShtX2N1cnJlbnQpKSkKQEAgLTE1MjYsNyArMTUyMiw2IEBAIGluTnVtYmVyQWZ0
ZXJEZWNpbWFsUG9pbnQ6CiAgICAgICAgIHNoaWZ0TGluZVRlcm1pbmF0b3IoKTsKICAgICAgICAg
bV9hdExpbmVTdGFydCA9IHRydWU7CiAgICAgICAgIG1fdGVybWluYXRvciA9IHRydWU7Ci0gICAg
ICAgIG1fY29sdW1uTnVtYmVyID0gMDsKICAgICAgICAgZ290byBzdGFydDsKICAgICBjYXNlIENo
YXJhY3RlckludmFsaWQ6CiAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gaW52YWxpZENoYXJh
Y3Rlck1lc3NhZ2UoKTsKQEAgLTE1NDksNyArMTU0NCw2IEBAIGluU2luZ2xlTGluZUNvbW1lbnQ6
CiAgICAgc2hpZnRMaW5lVGVybWluYXRvcigpOwogICAgIG1fYXRMaW5lU3RhcnQgPSB0cnVlOwog
ICAgIG1fdGVybWluYXRvciA9IHRydWU7Ci0gICAgbV9jb2x1bW5OdW1iZXIgPSAwOwogICAgIGlm
ICghbGFzdFRva2VuV2FzUmVzdHJLZXl3b3JkKCkpCiAgICAgICAgIGdvdG8gc3RhcnQ7CiAKQEAg
LTE1NTcsMTUgKzE1NTEsMTUgQEAgaW5TaW5nbGVMaW5lQ29tbWVudDoKICAgICAvLyBGYWxsIHRo
cm91Z2ggaW50byByZXR1cm5Ub2tlbi4KIAogcmV0dXJuVG9rZW46Ci0gICAgdG9rZW5Mb2NhdGlv
bi0+bGluZSA9IG1fbGluZU51bWJlcjsKLSAgICB0b2tlbkxvY2F0aW9uLT5lbmRPZmZzZXQgPSBj
dXJyZW50T2Zmc2V0KCk7CisgICAgdG9rZW5JbmZvLT5saW5lID0gbV9saW5lTnVtYmVyOworICAg
IHRva2VuSW5mby0+ZW5kT2Zmc2V0ID0gY3VycmVudE9mZnNldCgpOwogICAgIG1fbGFzdFRva2Vu
ID0gdG9rZW47CiAgICAgcmV0dXJuIHRva2VuOwogCiByZXR1cm5FcnJvcjoKICAgICBtX2Vycm9y
ID0gdHJ1ZTsKLSAgICB0b2tlbkxvY2F0aW9uLT5saW5lID0gbV9saW5lTnVtYmVyOwotICAgIHRv
a2VuTG9jYXRpb24tPmVuZE9mZnNldCA9IGN1cnJlbnRPZmZzZXQoKTsKKyAgICB0b2tlbkluZm8t
PmxpbmUgPSBtX2xpbmVOdW1iZXI7CisgICAgdG9rZW5JbmZvLT5lbmRPZmZzZXQgPSBjdXJyZW50
T2Zmc2V0KCk7CiAgICAgcmV0dXJuIEVSUk9SVE9LOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL0xleGVyLmgKaW5kZXggMWFjODMyYTJjN2I1ZjM4MmIzM2I3OGE1YzgzMDRiMTc1NTQwZjQ3
Mi4uNDFmMWY4NTUzZTFlYjI1ZjU0NGJlZTE5MzVhMmFmNGJiZDA2OWU2NCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvTGV4ZXIuaApAQCAtODcsMTAgKzg3LDkgQEAgcHVibGljOgogICAgIHZv
aWQgc2V0SXNSZXBhcnNpbmcoKSB7IG1faXNSZXBhcnNpbmcgPSB0cnVlOyB9CiAgICAgYm9vbCBp
c1JlcGFyc2luZygpIGNvbnN0IHsgcmV0dXJuIG1faXNSZXBhcnNpbmc7IH0KIAotICAgIEpTVG9r
ZW5UeXBlIGxleChKU1Rva2VuRGF0YSosIEpTVG9rZW5Mb2NhdGlvbiosIHVuc2lnbmVkLCBib29s
IHN0cmljdE1vZGUpOworICAgIEpTVG9rZW5UeXBlIGxleChKU1Rva2VuRGF0YSosIEpTVG9rZW5J
bmZvKiwgdW5zaWduZWQsIGJvb2wgc3RyaWN0TW9kZSk7CiAgICAgYm9vbCBuZXh0VG9rZW5Jc0Nv
bG9uKCk7CiAgICAgaW50IGxpbmVOdW1iZXIoKSBjb25zdCB7IHJldHVybiBtX2xpbmVOdW1iZXI7
IH0KLSAgICBpbnQgY3VycmVudENvbHVtbk51bWJlcigpIGNvbnN0IHsgcmV0dXJuIG1fY29sdW1u
TnVtYmVyOyB9CiAgICAgdm9pZCBzZXRMYXN0TGluZU51bWJlcihpbnQgbGFzdExpbmVOdW1iZXIp
IHsgbV9sYXN0TGluZU51bWJlciA9IGxhc3RMaW5lTnVtYmVyOyB9CiAgICAgaW50IGxhc3RMaW5l
TnVtYmVyKCkgY29uc3QgeyByZXR1cm4gbV9sYXN0TGluZU51bWJlcjsgfQogICAgIGJvb2wgcHJl
dlRlcm1pbmF0b3IoKSBjb25zdCB7IHJldHVybiBtX3Rlcm1pbmF0b3I7IH0KQEAgLTEyMSw3ICsx
MjAsNyBAQCBwdWJsaWM6CiAKICAgICBTb3VyY2VQcm92aWRlciogc291cmNlUHJvdmlkZXIoKSBj
b25zdCB7IHJldHVybiBtX3NvdXJjZS0+cHJvdmlkZXIoKTsgfQogCi0gICAgSlNUb2tlblR5cGUg
bGV4RXhwZWN0SWRlbnRpZmllcihKU1Rva2VuRGF0YSosIEpTVG9rZW5Mb2NhdGlvbiosIHVuc2ln
bmVkLCBib29sIHN0cmljdE1vZGUpOworICAgIEpTVG9rZW5UeXBlIGxleEV4cGVjdElkZW50aWZp
ZXIoSlNUb2tlbkRhdGEqLCBKU1Rva2VuSW5mbyosIHVuc2lnbmVkLCBib29sIHN0cmljdE1vZGUp
OwogCiBwcml2YXRlOgogICAgIHZvaWQgcmVjb3JkOChpbnQpOwpAQCAtMTY3LDcgKzE2Niw2IEBA
IHByaXZhdGU6CiAKICAgICBpbnQgbV9saW5lTnVtYmVyOwogICAgIGludCBtX2xhc3RMaW5lTnVt
YmVyOwotICAgIGludCBtX2NvbHVtbk51bWJlcjsKIAogICAgIFZlY3RvcjxMQ2hhcj4gbV9idWZm
ZXI4OwogICAgIFZlY3RvcjxVQ2hhcj4gbV9idWZmZXIxNjsKQEAgLTI1OSw3ICsyNTcsNyBAQCBB
TFdBWVNfSU5MSU5FIGNvbnN0IElkZW50aWZpZXIqIExleGVyPFQ+OjptYWtlSWRlbnRpZmllckxD
aGFyRnJvbVVDaGFyKGNvbnN0IFVDaAogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLUFMV0FZ
U19JTkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI8VD46OmxleEV4cGVjdElkZW50aWZpZXIoSlNUb2tl
bkRhdGEqIHRva2VuRGF0YSwgSlNUb2tlbkxvY2F0aW9uKiB0b2tlbkxvY2F0aW9uLCB1bnNpZ25l
ZCBsZXhlckZsYWdzLCBib29sIHN0cmljdE1vZGUpCitBTFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBl
IExleGVyPFQ+OjpsZXhFeHBlY3RJZGVudGlmaWVyKEpTVG9rZW5EYXRhKiB0b2tlbkRhdGEsIEpT
VG9rZW5JbmZvKiB0b2tlbkluZm8sIHVuc2lnbmVkIGxleGVyRmxhZ3MsIGJvb2wgc3RyaWN0TW9k
ZSkKIHsKICAgICBBU1NFUlQoKGxleGVyRmxhZ3MgJiBMZXhlckZsYWdzSWdub3JlUmVzZXJ2ZWRX
b3JkcykpOwogICAgIGNvbnN0IFQqIHN0YXJ0ID0gbV9jb2RlOwpAQCAtMjg3LDIyICsyODUsMjAg
QEAgQUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBMZXhlcjxUPjo6bGV4RXhwZWN0SWRlbnRpZmll
cihKU1Rva2VuRGF0YSogdG9rZW5EYXRhLAogICAgICAgICBtX2N1cnJlbnQgPSAwOwogCiAgICAg
bV9jb2RlID0gcHRyOwotICAgIG1fY29sdW1uTnVtYmVyID0gbV9jb2x1bW5OdW1iZXIgKyAobV9j
b2RlIC0gc3RhcnQpOwogCiAgICAgLy8gQ3JlYXRlIHRoZSBpZGVudGlmaWVyIGlmIG5lZWRlZAog
ICAgIGlmIChsZXhlckZsYWdzICYgTGV4ZXhGbGFnc0RvbnRCdWlsZEtleXdvcmRzKQogICAgICAg
ICB0b2tlbkRhdGEtPmlkZW50ID0gMDsKICAgICBlbHNlCiAgICAgICAgIHRva2VuRGF0YS0+aWRl
bnQgPSBtYWtlSWRlbnRpZmllcihzdGFydCwgcHRyIC0gc3RhcnQpOwotICAgIHRva2VuTG9jYXRp
b24tPmxpbmUgPSBtX2xpbmVOdW1iZXI7Ci0gICAgdG9rZW5Mb2NhdGlvbi0+c3RhcnRPZmZzZXQg
PSBzdGFydCAtIG1fY29kZVN0YXJ0OwotICAgIHRva2VuTG9jYXRpb24tPmVuZE9mZnNldCA9IGN1
cnJlbnRPZmZzZXQoKTsKLSAgICB0b2tlbkxvY2F0aW9uLT5jb2x1bW4gPSBtX2NvbHVtbk51bWJl
cjsKKyAgICB0b2tlbkluZm8tPmxpbmUgPSBtX2xpbmVOdW1iZXI7CisgICAgdG9rZW5JbmZvLT5z
dGFydE9mZnNldCA9IHN0YXJ0IC0gbV9jb2RlU3RhcnQ7CisgICAgdG9rZW5JbmZvLT5lbmRPZmZz
ZXQgPSBjdXJyZW50T2Zmc2V0KCk7CiAgICAgbV9sYXN0VG9rZW4gPSBJREVOVDsKICAgICByZXR1
cm4gSURFTlQ7CiAgICAgCiBzbG93Q2FzZToKLSAgICByZXR1cm4gbGV4KHRva2VuRGF0YSwgdG9r
ZW5Mb2NhdGlvbiwgbGV4ZXJGbGFncywgc3RyaWN0TW9kZSk7CisgICAgcmV0dXJuIGxleCh0b2tl
bkRhdGEsIHRva2VuSW5mbywgbGV4ZXJGbGFncywgc3RyaWN0TW9kZSk7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rl
Q29uc3RydWN0b3JzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1
Y3RvcnMuaAppbmRleCA0M2QxZTE3YzZhNGNjMDc1YzY2NGU2M2VkOTRiZjFkMGU2ZjFmMjgwLi5i
ZTUwZWVhZmUzZTQwZWFjMWQ5N2I3ZDRkMDJiNWE0YzY5ODI5Njg2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaApAQCAtNDIsNjEgKzQyLDYw
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBnbG9iYWxEYXRhLT5wYXJzZXJBcmVuYS0+ZGVy
ZWZXaXRoQXJlbmEoYWRvcHRSZWYodGhpcykpOwogICAgIH0KIAotICAgIGlubGluZSBOb2RlOjpO
b2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24pCi0gICAgICAgIDogbV9saW5lTnVt
YmVyKGxvY2F0aW9uLmxpbmUpCi0gICAgICAgICwgbV9jb2x1bW5OdW1iZXIobG9jYXRpb24uY29s
dW1uKQorICAgIGlubGluZSBOb2RlOjpOb2RlKGludCBsaW5lTnVtYmVyKQorICAgICAgICA6IG1f
bGluZU51bWJlcihsaW5lTnVtYmVyKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgRXhwcmVz
c2lvbk5vZGU6OkV4cHJlc3Npb25Ob2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24s
IFJlc3VsdFR5cGUgcmVzdWx0VHlwZSkKLSAgICAgICAgOiBOb2RlKGxvY2F0aW9uKQorICAgIGlu
bGluZSBFeHByZXNzaW9uTm9kZTo6RXhwcmVzc2lvbk5vZGUoaW50IGxpbmVOdW1iZXIsIFJlc3Vs
dFR5cGUgcmVzdWx0VHlwZSkKKyAgICAgICAgOiBOb2RlKGxpbmVOdW1iZXIpCiAgICAgICAgICwg
bV9yZXN1bHRUeXBlKHJlc3VsdFR5cGUpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBTdGF0
ZW1lbnROb2RlOjpTdGF0ZW1lbnROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24p
Ci0gICAgICAgIDogTm9kZShsb2NhdGlvbikKKyAgICBpbmxpbmUgU3RhdGVtZW50Tm9kZTo6U3Rh
dGVtZW50Tm9kZShpbnQgbGluZU51bWJlcikKKyAgICAgICAgOiBOb2RlKGxpbmVOdW1iZXIpCiAg
ICAgICAgICwgbV9sYXN0TGluZSgtMSkKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIE51bGxO
b2RlOjpOdWxsTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uKQotICAgICAgICA6
IEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9uLCBSZXN1bHRUeXBlOjpudWxsVHlwZSgpKQorICAgIGlu
bGluZSBOdWxsTm9kZTo6TnVsbE5vZGUoaW50IGxpbmVOdW1iZXIpCisgICAgICAgIDogRXhwcmVz
c2lvbk5vZGUobGluZU51bWJlciwgUmVzdWx0VHlwZTo6bnVsbFR5cGUoKSkKICAgICB7CiAgICAg
fQogCi0gICAgaW5saW5lIEJvb2xlYW5Ob2RlOjpCb29sZWFuTm9kZShjb25zdCBKU1Rva2VuTG9j
YXRpb24mIGxvY2F0aW9uLCBib29sIHZhbHVlKQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxv
Y2F0aW9uLCBSZXN1bHRUeXBlOjpib29sZWFuVHlwZSgpKQorICAgIGlubGluZSBCb29sZWFuTm9k
ZTo6Qm9vbGVhbk5vZGUoaW50IGxpbmVOdW1iZXIsIGJvb2wgdmFsdWUpCisgICAgICAgIDogRXhw
cmVzc2lvbk5vZGUobGluZU51bWJlciwgUmVzdWx0VHlwZTo6Ym9vbGVhblR5cGUoKSkKICAgICAg
ICAgLCBtX3ZhbHVlKHZhbHVlKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgTnVtYmVyTm9k
ZTo6TnVtYmVyTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBkb3VibGUgdmFs
dWUpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobG9jYXRpb24sIFJlc3VsdFR5cGU6Om51bWJl
clR5cGUoKSkKKyAgICBpbmxpbmUgTnVtYmVyTm9kZTo6TnVtYmVyTm9kZShpbnQgbGluZU51bWJl
ciwgZG91YmxlIHZhbHVlKQorICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIsIFJl
c3VsdFR5cGU6Om51bWJlclR5cGUoKSkKICAgICAgICAgLCBtX3ZhbHVlKHZhbHVlKQogICAgIHsK
ICAgICB9CiAKLSAgICBpbmxpbmUgU3RyaW5nTm9kZTo6U3RyaW5nTm9kZShjb25zdCBKU1Rva2Vu
TG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVudGlmaWVyJiB2YWx1ZSkKLSAgICAgICAgOiBF
eHByZXNzaW9uTm9kZShsb2NhdGlvbiwgUmVzdWx0VHlwZTo6c3RyaW5nVHlwZSgpKQorICAgIGlu
bGluZSBTdHJpbmdOb2RlOjpTdHJpbmdOb2RlKGludCBsaW5lTnVtYmVyLCBjb25zdCBJZGVudGlm
aWVyJiB2YWx1ZSkKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyLCBSZXN1bHRU
eXBlOjpzdHJpbmdUeXBlKCkpCiAgICAgICAgICwgbV92YWx1ZSh2YWx1ZSkKICAgICB7CiAgICAg
fQogCi0gICAgaW5saW5lIFJlZ0V4cE5vZGU6OlJlZ0V4cE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiBsb2NhdGlvbiwgY29uc3QgSWRlbnRpZmllciYgcGF0dGVybiwgY29uc3QgSWRlbnRpZmll
ciYgZmxhZ3MpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobG9jYXRpb24pCisgICAgaW5saW5l
IFJlZ0V4cE5vZGU6OlJlZ0V4cE5vZGUoaW50IGxpbmVOdW1iZXIsIGNvbnN0IElkZW50aWZpZXIm
IHBhdHRlcm4sIGNvbnN0IElkZW50aWZpZXImIGZsYWdzKQorICAgICAgICA6IEV4cHJlc3Npb25O
b2RlKGxpbmVOdW1iZXIpCiAgICAgICAgICwgbV9wYXR0ZXJuKHBhdHRlcm4pCiAgICAgICAgICwg
bV9mbGFncyhmbGFncykKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIFRoaXNOb2RlOjpUaGlz
Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uKQotICAgICAgICA6IEV4cHJlc3Np
b25Ob2RlKGxvY2F0aW9uKQorICAgIGlubGluZSBUaGlzTm9kZTo6VGhpc05vZGUoaW50IGxpbmVO
dW1iZXIpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlcikKICAgICB7CiAgICAg
fQogCi0gICAgaW5saW5lIFJlc29sdmVOb2RlOjpSZXNvbHZlTm9kZShjb25zdCBKU1Rva2VuTG9j
YXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgaW50IHN0YXJ0T2Zmc2V0
KQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9uKQorICAgIGlubGluZSBSZXNvbHZl
Tm9kZTo6UmVzb2x2ZU5vZGUoaW50IGxpbmVOdW1iZXIsIGNvbnN0IElkZW50aWZpZXImIGlkZW50
LCBpbnQgc3RhcnRPZmZzZXQpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlcikK
ICAgICAgICAgLCBtX2lkZW50KGlkZW50KQogICAgICAgICAsIG1fc3RhcnRPZmZzZXQoc3RhcnRP
ZmZzZXQpCiAgICAgewpAQCAtMTE3LDI0ICsxMTYsMjQgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIGwtPm1fbmV4dCA9IHRoaXM7CiAgICAgfQogCi0gICAgaW5saW5lIEFycmF5Tm9kZTo6QXJy
YXlOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGludCBlbGlzaW9uKQotICAg
ICAgICA6IEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9uKQorICAgIGlubGluZSBBcnJheU5vZGU6OkFy
cmF5Tm9kZShpbnQgbGluZU51bWJlciwgaW50IGVsaXNpb24pCisgICAgICAgIDogRXhwcmVzc2lv
bk5vZGUobGluZU51bWJlcikKICAgICAgICAgLCBtX2VsZW1lbnQoMCkKICAgICAgICAgLCBtX2Vs
aXNpb24oZWxpc2lvbikKICAgICAgICAgLCBtX29wdGlvbmFsKHRydWUpCiAgICAgewogICAgIH0K
IAotICAgIGlubGluZSBBcnJheU5vZGU6OkFycmF5Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24m
IGxvY2F0aW9uLCBFbGVtZW50Tm9kZSogZWxlbWVudCkKLSAgICAgICAgOiBFeHByZXNzaW9uTm9k
ZShsb2NhdGlvbikKKyAgICBpbmxpbmUgQXJyYXlOb2RlOjpBcnJheU5vZGUoaW50IGxpbmVOdW1i
ZXIsIEVsZW1lbnROb2RlKiBlbGVtZW50KQorICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVO
dW1iZXIpCiAgICAgICAgICwgbV9lbGVtZW50KGVsZW1lbnQpCiAgICAgICAgICwgbV9lbGlzaW9u
KDApCiAgICAgICAgICwgbV9vcHRpb25hbChmYWxzZSkKICAgICB7CiAgICAgfQogCi0gICAgaW5s
aW5lIEFycmF5Tm9kZTo6QXJyYXlOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24s
IGludCBlbGlzaW9uLCBFbGVtZW50Tm9kZSogZWxlbWVudCkKLSAgICAgICAgOiBFeHByZXNzaW9u
Tm9kZShsb2NhdGlvbikKKyAgICBpbmxpbmUgQXJyYXlOb2RlOjpBcnJheU5vZGUoaW50IGxpbmVO
dW1iZXIsIGludCBlbGlzaW9uLCBFbGVtZW50Tm9kZSogZWxlbWVudCkKKyAgICAgICAgOiBFeHBy
ZXNzaW9uTm9kZShsaW5lTnVtYmVyKQogICAgICAgICAsIG1fZWxlbWVudChlbGVtZW50KQogICAg
ICAgICAsIG1fZWxpc2lvbihlbGlzaW9uKQogICAgICAgICAsIG1fb3B0aW9uYWwodHJ1ZSkKQEAg
LTE1NSw1NyArMTU0LDU3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHsKICAgICB9CiAKLSAgICBp
bmxpbmUgUHJvcGVydHlMaXN0Tm9kZTo6UHJvcGVydHlMaXN0Tm9kZShjb25zdCBKU1Rva2VuTG9j
YXRpb24mIGxvY2F0aW9uLCBQcm9wZXJ0eU5vZGUqIG5vZGUpCi0gICAgICAgIDogTm9kZShsb2Nh
dGlvbikKKyAgICBpbmxpbmUgUHJvcGVydHlMaXN0Tm9kZTo6UHJvcGVydHlMaXN0Tm9kZShpbnQg
bGluZU51bWJlciwgUHJvcGVydHlOb2RlKiBub2RlKQorICAgICAgICA6IE5vZGUobGluZU51bWJl
cikKICAgICAgICAgLCBtX25vZGUobm9kZSkKICAgICAgICAgLCBtX25leHQoMCkKICAgICB7CiAg
ICAgfQogCi0gICAgaW5saW5lIFByb3BlcnR5TGlzdE5vZGU6OlByb3BlcnR5TGlzdE5vZGUoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgUHJvcGVydHlOb2RlKiBub2RlLCBQcm9wZXJ0
eUxpc3ROb2RlKiBsaXN0KQotICAgICAgICA6IE5vZGUobG9jYXRpb24pCisgICAgaW5saW5lIFBy
b3BlcnR5TGlzdE5vZGU6OlByb3BlcnR5TGlzdE5vZGUoaW50IGxpbmVOdW1iZXIsIFByb3BlcnR5
Tm9kZSogbm9kZSwgUHJvcGVydHlMaXN0Tm9kZSogbGlzdCkKKyAgICAgICAgOiBOb2RlKGxpbmVO
dW1iZXIpCiAgICAgICAgICwgbV9ub2RlKG5vZGUpCiAgICAgICAgICwgbV9uZXh0KDApCiAgICAg
ewogICAgICAgICBsaXN0LT5tX25leHQgPSB0aGlzOwogICAgIH0KIAotICAgIGlubGluZSBPYmpl
Y3RMaXRlcmFsTm9kZTo6T2JqZWN0TGl0ZXJhbE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBs
b2NhdGlvbikKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbikKKyAgICBpbmxpbmUg
T2JqZWN0TGl0ZXJhbE5vZGU6Ok9iamVjdExpdGVyYWxOb2RlKGludCBsaW5lTnVtYmVyKQorICAg
ICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIpCiAgICAgICAgICwgbV9saXN0KDApCiAg
ICAgewogICAgIH0KIAotICAgIGlubGluZSBPYmplY3RMaXRlcmFsTm9kZTo6T2JqZWN0TGl0ZXJh
bE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgUHJvcGVydHlMaXN0Tm9kZSog
bGlzdCkKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbikKKyAgICBpbmxpbmUgT2Jq
ZWN0TGl0ZXJhbE5vZGU6Ok9iamVjdExpdGVyYWxOb2RlKGludCBsaW5lTnVtYmVyLCBQcm9wZXJ0
eUxpc3ROb2RlKiBsaXN0KQorICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIpCiAg
ICAgICAgICwgbV9saXN0KGxpc3QpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBCcmFja2V0
QWNjZXNzb3JOb2RlOjpCcmFja2V0QWNjZXNzb3JOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYg
bG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0
LCBib29sIHN1YnNjcmlwdEhhc0Fzc2lnbm1lbnRzKQotICAgICAgICA6IEV4cHJlc3Npb25Ob2Rl
KGxvY2F0aW9uKQorICAgIGlubGluZSBCcmFja2V0QWNjZXNzb3JOb2RlOjpCcmFja2V0QWNjZXNz
b3JOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgRXhwcmVzc2lvbk5v
ZGUqIHN1YnNjcmlwdCwgYm9vbCBzdWJzY3JpcHRIYXNBc3NpZ25tZW50cykKKyAgICAgICAgOiBF
eHByZXNzaW9uTm9kZShsaW5lTnVtYmVyKQogICAgICAgICAsIG1fYmFzZShiYXNlKQogICAgICAg
ICAsIG1fc3Vic2NyaXB0KHN1YnNjcmlwdCkKICAgICAgICAgLCBtX3N1YnNjcmlwdEhhc0Fzc2ln
bm1lbnRzKHN1YnNjcmlwdEhhc0Fzc2lnbm1lbnRzKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxp
bmUgRG90QWNjZXNzb3JOb2RlOjpEb3RBY2Nlc3Nvck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50
KQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9uKQorICAgIGlubGluZSBEb3RBY2Nl
c3Nvck5vZGU6OkRvdEFjY2Vzc29yTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUq
IGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50KQorICAgICAgICA6IEV4cHJlc3Npb25Ob2Rl
KGxpbmVOdW1iZXIpCiAgICAgICAgICwgbV9iYXNlKGJhc2UpCiAgICAgICAgICwgbV9pZGVudChp
ZGVudCkKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIEFyZ3VtZW50TGlzdE5vZGU6OkFyZ3Vt
ZW50TGlzdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5v
ZGUqIGV4cHIpCi0gICAgICAgIDogTm9kZShsb2NhdGlvbikKKyAgICBpbmxpbmUgQXJndW1lbnRM
aXN0Tm9kZTo6QXJndW1lbnRMaXN0Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIpCisgICAgICAgIDogTm9kZShsaW5lTnVtYmVyKQogICAgICAgICAsIG1fbmV4dCgwKQog
ICAgICAgICAsIG1fZXhwcihleHByKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgQXJndW1l
bnRMaXN0Tm9kZTo6QXJndW1lbnRMaXN0Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0
aW9uLCBBcmd1bWVudExpc3ROb2RlKiBsaXN0Tm9kZSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpCi0g
ICAgICAgIDogTm9kZShsb2NhdGlvbikKKyAgICBpbmxpbmUgQXJndW1lbnRMaXN0Tm9kZTo6QXJn
dW1lbnRMaXN0Tm9kZShpbnQgbGluZU51bWJlciwgQXJndW1lbnRMaXN0Tm9kZSogbGlzdE5vZGUs
IEV4cHJlc3Npb25Ob2RlKiBleHByKQorICAgICAgICA6IE5vZGUobGluZU51bWJlcikKICAgICAg
ICAgLCBtX25leHQoMCkKICAgICAgICAgLCBtX2V4cHIoZXhwcikKICAgICB7CkBAIC0yMjIsNDUg
KzIyMSw0NSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIE5l
d0V4cHJOb2RlOjpOZXdFeHByTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBF
eHByZXNzaW9uTm9kZSogZXhwcikKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbikK
KyAgICBpbmxpbmUgTmV3RXhwck5vZGU6Ok5ld0V4cHJOb2RlKGludCBsaW5lTnVtYmVyLCBFeHBy
ZXNzaW9uTm9kZSogZXhwcikKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyKQog
ICAgICAgICAsIG1fZXhwcihleHByKQogICAgICAgICAsIG1fYXJncygwKQogICAgIHsKICAgICB9
CiAKLSAgICBpbmxpbmUgTmV3RXhwck5vZGU6Ok5ld0V4cHJOb2RlKGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHByLCBBcmd1bWVudHNOb2RlKiBhcmdz
KQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9uKQorICAgIGlubGluZSBOZXdFeHBy
Tm9kZTo6TmV3RXhwck5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByLCBB
cmd1bWVudHNOb2RlKiBhcmdzKQorICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIp
CiAgICAgICAgICwgbV9leHByKGV4cHIpCiAgICAgICAgICwgbV9hcmdzKGFyZ3MpCiAgICAgewog
ICAgIH0KIAotICAgIGlubGluZSBFdmFsRnVuY3Rpb25DYWxsTm9kZTo6RXZhbEZ1bmN0aW9uQ2Fs
bE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgQXJndW1lbnRzTm9kZSogYXJn
cywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZz
ZXQpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobG9jYXRpb24pCisgICAgaW5saW5lIEV2YWxG
dW5jdGlvbkNhbGxOb2RlOjpFdmFsRnVuY3Rpb25DYWxsTm9kZShpbnQgbGluZU51bWJlciwgQXJn
dW1lbnRzTm9kZSogYXJncywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1
bnNpZ25lZCBlbmRPZmZzZXQpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlcikK
ICAgICAgICAgLCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVu
ZE9mZnNldCkKICAgICAgICAgLCBtX2FyZ3MoYXJncykKICAgICB7CiAgICAgfQogCi0gICAgaW5s
aW5lIEZ1bmN0aW9uQ2FsbFZhbHVlTm9kZTo6RnVuY3Rpb25DYWxsVmFsdWVOb2RlKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHByLCBBcmd1bWVudHNO
b2RlKiBhcmdzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVk
IGVuZE9mZnNldCkKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbikKKyAgICBpbmxp
bmUgRnVuY3Rpb25DYWxsVmFsdWVOb2RlOjpGdW5jdGlvbkNhbGxWYWx1ZU5vZGUoaW50IGxpbmVO
dW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByLCBBcmd1bWVudHNOb2RlKiBhcmdzLCB1bnNpZ25l
ZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKKyAgICAg
ICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyKQogICAgICAgICAsIFRocm93YWJsZUV4cHJl
c3Npb25EYXRhKGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KQogICAgICAgICAsIG1fZXhw
cihleHByKQogICAgICAgICAsIG1fYXJncyhhcmdzKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxp
bmUgRnVuY3Rpb25DYWxsUmVzb2x2ZU5vZGU6OkZ1bmN0aW9uQ2FsbFJlc29sdmVOb2RlKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBBcmd1
bWVudHNOb2RlKiBhcmdzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVu
c2lnbmVkIGVuZE9mZnNldCkKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbikKKyAg
ICBpbmxpbmUgRnVuY3Rpb25DYWxsUmVzb2x2ZU5vZGU6OkZ1bmN0aW9uQ2FsbFJlc29sdmVOb2Rl
KGludCBsaW5lTnVtYmVyLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgQXJndW1lbnRzTm9kZSog
YXJncywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRP
ZmZzZXQpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlcikKICAgICAgICAgLCBU
aHJvd2FibGVFeHByZXNzaW9uRGF0YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKICAg
ICAgICAgLCBtX2lkZW50KGlkZW50KQogICAgICAgICAsIG1fYXJncyhhcmdzKQogICAgIHsKICAg
ICB9CiAKLSAgICBpbmxpbmUgRnVuY3Rpb25DYWxsQnJhY2tldE5vZGU6OkZ1bmN0aW9uQ2FsbEJy
YWNrZXROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2Rl
KiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCBBcmd1bWVudHNOb2RlKiBhcmdzLCB1
bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkK
LSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbikKKyAgICBpbmxpbmUgRnVuY3Rpb25D
YWxsQnJhY2tldE5vZGU6OkZ1bmN0aW9uQ2FsbEJyYWNrZXROb2RlKGludCBsaW5lTnVtYmVyLCBF
eHByZXNzaW9uTm9kZSogYmFzZSwgRXhwcmVzc2lvbk5vZGUqIHN1YnNjcmlwdCwgQXJndW1lbnRz
Tm9kZSogYXJncywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25l
ZCBlbmRPZmZzZXQpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlcikKICAgICAg
ICAgLCBUaHJvd2FibGVTdWJFeHByZXNzaW9uRGF0YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9m
ZnNldCkKICAgICAgICAgLCBtX2Jhc2UoYmFzZSkKICAgICAgICAgLCBtX3N1YnNjcmlwdChzdWJz
Y3JpcHQpCkBAIC0yNjgsOCArMjY3LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewogICAgIH0K
IAotICAgIGlubGluZSBGdW5jdGlvbkNhbGxEb3ROb2RlOjpGdW5jdGlvbkNhbGxEb3ROb2RlKGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25z
dCBJZGVudGlmaWVyJiBpZGVudCwgQXJndW1lbnRzTm9kZSogYXJncywgdW5zaWduZWQgZGl2b3Qs
IHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCi0gICAgICAgIDogRXhw
cmVzc2lvbk5vZGUobG9jYXRpb24pCisgICAgaW5saW5lIEZ1bmN0aW9uQ2FsbERvdE5vZGU6OkZ1
bmN0aW9uQ2FsbERvdE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBj
b25zdCBJZGVudGlmaWVyJiBpZGVudCwgQXJndW1lbnRzTm9kZSogYXJncywgdW5zaWduZWQgZGl2
b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCisgICAgICAgIDog
RXhwcmVzc2lvbk5vZGUobGluZU51bWJlcikKICAgICAgICAgLCBUaHJvd2FibGVTdWJFeHByZXNz
aW9uRGF0YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKICAgICAgICAgLCBtX2Jhc2Uo
YmFzZSkKICAgICAgICAgLCBtX2lkZW50KGlkZW50KQpAQCAtMjc3LDMxICsyNzYsMzEgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBDYWxsRnVuY3Rpb25DYWxs
RG90Tm9kZTo6Q2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBs
b2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBB
cmd1bWVudHNOb2RlKiBhcmdzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQs
IHVuc2lnbmVkIGVuZE9mZnNldCkKLSAgICAgICAgOiBGdW5jdGlvbkNhbGxEb3ROb2RlKGxvY2F0
aW9uLCBiYXNlLCBpZGVudCwgYXJncywgZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpCisg
ICAgaW5saW5lIENhbGxGdW5jdGlvbkNhbGxEb3ROb2RlOjpDYWxsRnVuY3Rpb25DYWxsRG90Tm9k
ZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXIm
IGlkZW50LCBBcmd1bWVudHNOb2RlKiBhcmdzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3Rh
cnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKKyAgICAgICAgOiBGdW5jdGlvbkNhbGxEb3RO
b2RlKGxpbmVOdW1iZXIsIGJhc2UsIGlkZW50LCBhcmdzLCBkaXZvdCwgc3RhcnRPZmZzZXQsIGVu
ZE9mZnNldCkKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIEFwcGx5RnVuY3Rpb25DYWxsRG90
Tm9kZTo6QXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9j
YXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgQXJn
dW1lbnRzTm9kZSogYXJncywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1
bnNpZ25lZCBlbmRPZmZzZXQpCi0gICAgICAgIDogRnVuY3Rpb25DYWxsRG90Tm9kZShsb2NhdGlv
biwgYmFzZSwgaWRlbnQsIGFyZ3MsIGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KQorICAg
IGlubGluZSBBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGU6OkFwcGx5RnVuY3Rpb25DYWxsRG90Tm9k
ZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXIm
IGlkZW50LCBBcmd1bWVudHNOb2RlKiBhcmdzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3Rh
cnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKKyAgICAgICAgOiBGdW5jdGlvbkNhbGxEb3RO
b2RlKGxpbmVOdW1iZXIsIGJhc2UsIGlkZW50LCBhcmdzLCBkaXZvdCwgc3RhcnRPZmZzZXQsIGVu
ZE9mZnNldCkKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIFByZVBvc3RSZXNvbHZlTm9kZTo6
UHJlUG9zdFJlc29sdmVOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0
IElkZW50aWZpZXImIGlkZW50LCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQs
IHVuc2lnbmVkIGVuZE9mZnNldCkKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbiwg
UmVzdWx0VHlwZTo6bnVtYmVyVHlwZSgpKSAvLyBjb3VsZCBiZSByZXVzYWJsZSBmb3IgcHJlPwor
ICAgIGlubGluZSBQcmVQb3N0UmVzb2x2ZU5vZGU6OlByZVBvc3RSZXNvbHZlTm9kZShpbnQgbGlu
ZU51bWJlciwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25l
ZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQorICAgICAgICA6IEV4cHJlc3Npb25O
b2RlKGxpbmVOdW1iZXIsIFJlc3VsdFR5cGU6Om51bWJlclR5cGUoKSkgLy8gY291bGQgYmUgcmV1
c2FibGUgZm9yIHByZT8KICAgICAgICAgLCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YShkaXZvdCwg
c3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKICAgICAgICAgLCBtX2lkZW50KGlkZW50KQogICAgIHsK
ICAgICB9CiAKLSAgICBpbmxpbmUgUG9zdGZpeFJlc29sdmVOb2RlOjpQb3N0Zml4UmVzb2x2ZU5v
ZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgSWRlbnRpZmllciYgaWRl
bnQsIE9wZXJhdG9yIG9wZXIsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwg
dW5zaWduZWQgZW5kT2Zmc2V0KQotICAgICAgICA6IFByZVBvc3RSZXNvbHZlTm9kZShsb2NhdGlv
biwgaWRlbnQsIGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KQorICAgIGlubGluZSBQb3N0
Zml4UmVzb2x2ZU5vZGU6OlBvc3RmaXhSZXNvbHZlTm9kZShpbnQgbGluZU51bWJlciwgY29uc3Qg
SWRlbnRpZmllciYgaWRlbnQsIE9wZXJhdG9yIG9wZXIsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25l
ZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQorICAgICAgICA6IFByZVBvc3RSZXNv
bHZlTm9kZShsaW5lTnVtYmVyLCBpZGVudCwgZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQp
CiAgICAgICAgICwgbV9vcGVyYXRvcihvcGVyKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUg
UG9zdGZpeEJyYWNrZXROb2RlOjpQb3N0Zml4QnJhY2tldE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBzdWJz
Y3JpcHQsIE9wZXJhdG9yIG9wZXIsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNl
dCwgdW5zaWduZWQgZW5kT2Zmc2V0KQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9u
KQorICAgIGlubGluZSBQb3N0Zml4QnJhY2tldE5vZGU6OlBvc3RmaXhCcmFja2V0Tm9kZShpbnQg
bGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBzdWJzY3Jp
cHQsIE9wZXJhdG9yIG9wZXIsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwg
dW5zaWduZWQgZW5kT2Zmc2V0KQorICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIp
CiAgICAgICAgICwgVGhyb3dhYmxlU3ViRXhwcmVzc2lvbkRhdGEoZGl2b3QsIHN0YXJ0T2Zmc2V0
LCBlbmRPZmZzZXQpCiAgICAgICAgICwgbV9iYXNlKGJhc2UpCiAgICAgICAgICwgbV9zdWJzY3Jp
cHQoc3Vic2NyaXB0KQpAQCAtMzA5LDggKzMwOCw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHsK
ICAgICB9CiAKLSAgICBpbmxpbmUgUG9zdGZpeERvdE5vZGU6OlBvc3RmaXhEb3ROb2RlKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJ
ZGVudGlmaWVyJiBpZGVudCwgT3BlcmF0b3Igb3BlciwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVk
IHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCi0gICAgICAgIDogRXhwcmVzc2lvbk5v
ZGUobG9jYXRpb24pCisgICAgaW5saW5lIFBvc3RmaXhEb3ROb2RlOjpQb3N0Zml4RG90Tm9kZShp
bnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlk
ZW50LCBPcGVyYXRvciBvcGVyLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQs
IHVuc2lnbmVkIGVuZE9mZnNldCkKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVy
KQogICAgICAgICAsIFRocm93YWJsZVN1YkV4cHJlc3Npb25EYXRhKGRpdm90LCBzdGFydE9mZnNl
dCwgZW5kT2Zmc2V0KQogICAgICAgICAsIG1fYmFzZShiYXNlKQogICAgICAgICAsIG1faWRlbnQo
aWRlbnQpCkBAIC0zMTgsNjggKzMxNyw2OCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB7CiAgICAg
fQogCi0gICAgaW5saW5lIFBvc3RmaXhFcnJvck5vZGU6OlBvc3RmaXhFcnJvck5vZGUoY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgT3BlcmF0b3Igb3BlciwgdW5zaWduZWQgZGl2b3Qs
IHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCi0gICAgICAgIDogRXhw
cmVzc2lvbk5vZGUobG9jYXRpb24pCisgICAgaW5saW5lIFBvc3RmaXhFcnJvck5vZGU6OlBvc3Rm
aXhFcnJvck5vZGUoaW50IGxpbmVOdW1iZXIsIE9wZXJhdG9yIG9wZXIsIHVuc2lnbmVkIGRpdm90
LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQorICAgICAgICA6IEV4
cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIpCiAgICAgICAgICwgVGhyb3dhYmxlU3ViRXhwcmVzc2lv
bkRhdGEoZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpCiAgICAgICAgICwgbV9vcGVyYXRv
cihvcGVyKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgRGVsZXRlUmVzb2x2ZU5vZGU6OkRl
bGV0ZVJlc29sdmVOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElk
ZW50aWZpZXImIGlkZW50LCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVu
c2lnbmVkIGVuZE9mZnNldCkKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbikKKyAg
ICBpbmxpbmUgRGVsZXRlUmVzb2x2ZU5vZGU6OkRlbGV0ZVJlc29sdmVOb2RlKGludCBsaW5lTnVt
YmVyLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0
YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUo
bGluZU51bWJlcikKICAgICAgICAgLCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YShkaXZvdCwgc3Rh
cnRPZmZzZXQsIGVuZE9mZnNldCkKICAgICAgICAgLCBtX2lkZW50KGlkZW50KQogICAgIHsKICAg
ICB9CiAKLSAgICBpbmxpbmUgRGVsZXRlQnJhY2tldE5vZGU6OkRlbGV0ZUJyYWNrZXROb2RlKGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHBy
ZXNzaW9uTm9kZSogc3Vic2NyaXB0LCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZz
ZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlv
bikKKyAgICBpbmxpbmUgRGVsZXRlQnJhY2tldE5vZGU6OkRlbGV0ZUJyYWNrZXROb2RlKGludCBs
aW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgRXhwcmVzc2lvbk5vZGUqIHN1YnNjcmlw
dCwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZz
ZXQpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlcikKICAgICAgICAgLCBUaHJv
d2FibGVFeHByZXNzaW9uRGF0YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKICAgICAg
ICAgLCBtX2Jhc2UoYmFzZSkKICAgICAgICAgLCBtX3N1YnNjcmlwdChzdWJzY3JpcHQpCiAgICAg
ewogICAgIH0KIAotICAgIGlubGluZSBEZWxldGVEb3ROb2RlOjpEZWxldGVEb3ROb2RlKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJ
ZGVudGlmaWVyJiBpZGVudCwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1
bnNpZ25lZCBlbmRPZmZzZXQpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobG9jYXRpb24pCisg
ICAgaW5saW5lIERlbGV0ZURvdE5vZGU6OkRlbGV0ZURvdE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4
cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgdW5zaWduZWQgZGl2
b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCisgICAgICAgIDog
RXhwcmVzc2lvbk5vZGUobGluZU51bWJlcikKICAgICAgICAgLCBUaHJvd2FibGVFeHByZXNzaW9u
RGF0YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKICAgICAgICAgLCBtX2Jhc2UoYmFz
ZSkKICAgICAgICAgLCBtX2lkZW50KGlkZW50KQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUg
RGVsZXRlVmFsdWVOb2RlOjpEZWxldGVWYWx1ZU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBs
b2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUo
bG9jYXRpb24pCisgICAgaW5saW5lIERlbGV0ZVZhbHVlTm9kZTo6RGVsZXRlVmFsdWVOb2RlKGlu
dCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcikKKyAgICAgICAgOiBFeHByZXNzaW9u
Tm9kZShsaW5lTnVtYmVyKQogICAgICAgICAsIG1fZXhwcihleHByKQogICAgIHsKICAgICB9CiAK
LSAgICBpbmxpbmUgVm9pZE5vZGU6OlZvaWROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9j
YXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHByKQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxv
Y2F0aW9uKQorICAgIGlubGluZSBWb2lkTm9kZTo6Vm9pZE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4
cHJlc3Npb25Ob2RlKiBleHByKQorICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIp
CiAgICAgICAgICwgbV9leHByKGV4cHIpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBUeXBl
T2ZSZXNvbHZlTm9kZTo6VHlwZU9mUmVzb2x2ZU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBs
b2NhdGlvbiwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCi0gICAgICAgIDogRXhwcmVzc2lvbk5v
ZGUobG9jYXRpb24sIFJlc3VsdFR5cGU6OnN0cmluZ1R5cGUoKSkKKyAgICBpbmxpbmUgVHlwZU9m
UmVzb2x2ZU5vZGU6OlR5cGVPZlJlc29sdmVOb2RlKGludCBsaW5lTnVtYmVyLCBjb25zdCBJZGVu
dGlmaWVyJiBpZGVudCkKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyLCBSZXN1
bHRUeXBlOjpzdHJpbmdUeXBlKCkpCiAgICAgICAgICwgbV9pZGVudChpZGVudCkKICAgICB7CiAg
ICAgfQogCi0gICAgaW5saW5lIFR5cGVPZlZhbHVlTm9kZTo6VHlwZU9mVmFsdWVOb2RlKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHByKQotICAgICAg
ICA6IEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9uLCBSZXN1bHRUeXBlOjpzdHJpbmdUeXBlKCkpCisg
ICAgaW5saW5lIFR5cGVPZlZhbHVlTm9kZTo6VHlwZU9mVmFsdWVOb2RlKGludCBsaW5lTnVtYmVy
LCBFeHByZXNzaW9uTm9kZSogZXhwcikKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVt
YmVyLCBSZXN1bHRUeXBlOjpzdHJpbmdUeXBlKCkpCiAgICAgICAgICwgbV9leHByKGV4cHIpCiAg
ICAgewogICAgIH0KIAotICAgIGlubGluZSBQcmVmaXhSZXNvbHZlTm9kZTo6UHJlZml4UmVzb2x2
ZU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgSWRlbnRpZmllciYg
aWRlbnQsIE9wZXJhdG9yIG9wZXIsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNl
dCwgdW5zaWduZWQgZW5kT2Zmc2V0KQotICAgICAgICA6IFByZVBvc3RSZXNvbHZlTm9kZShsb2Nh
dGlvbiwgaWRlbnQsIGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KQorICAgIGlubGluZSBQ
cmVmaXhSZXNvbHZlTm9kZTo6UHJlZml4UmVzb2x2ZU5vZGUoaW50IGxpbmVOdW1iZXIsIGNvbnN0
IElkZW50aWZpZXImIGlkZW50LCBPcGVyYXRvciBvcGVyLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWdu
ZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKKyAgICAgICAgOiBQcmVQb3N0UmVz
b2x2ZU5vZGUobGluZU51bWJlciwgaWRlbnQsIGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0
KQogICAgICAgICAsIG1fb3BlcmF0b3Iob3BlcikKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5l
IFByZWZpeEJyYWNrZXROb2RlOjpQcmVmaXhCcmFja2V0Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRp
b24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgRXhwcmVzc2lvbk5vZGUqIHN1YnNj
cmlwdCwgT3BlcmF0b3Igb3BlciwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0
LCB1bnNpZ25lZCBlbmRPZmZzZXQpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobG9jYXRpb24p
CisgICAgaW5saW5lIFByZWZpeEJyYWNrZXROb2RlOjpQcmVmaXhCcmFja2V0Tm9kZShpbnQgbGlu
ZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBzdWJzY3JpcHQs
IE9wZXJhdG9yIG9wZXIsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5z
aWduZWQgZW5kT2Zmc2V0KQorICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIpCiAg
ICAgICAgICwgVGhyb3dhYmxlUHJlZml4ZWRTdWJFeHByZXNzaW9uRGF0YShkaXZvdCwgc3RhcnRP
ZmZzZXQsIGVuZE9mZnNldCkKICAgICAgICAgLCBtX2Jhc2UoYmFzZSkKICAgICAgICAgLCBtX3N1
YnNjcmlwdChzdWJzY3JpcHQpCkBAIC0zODcsOCArMzg2LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgewogICAgIH0KIAotICAgIGlubGluZSBQcmVmaXhEb3ROb2RlOjpQcmVmaXhEb3ROb2RlKGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25z
dCBJZGVudGlmaWVyJiBpZGVudCwgT3BlcmF0b3Igb3BlciwgdW5zaWduZWQgZGl2b3QsIHVuc2ln
bmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCi0gICAgICAgIDogRXhwcmVzc2lv
bk5vZGUobG9jYXRpb24pCisgICAgaW5saW5lIFByZWZpeERvdE5vZGU6OlByZWZpeERvdE5vZGUo
aW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBp
ZGVudCwgT3BlcmF0b3Igb3BlciwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0
LCB1bnNpZ25lZCBlbmRPZmZzZXQpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJl
cikKICAgICAgICAgLCBUaHJvd2FibGVQcmVmaXhlZFN1YkV4cHJlc3Npb25EYXRhKGRpdm90LCBz
dGFydE9mZnNldCwgZW5kT2Zmc2V0KQogICAgICAgICAsIG1fYmFzZShiYXNlKQogICAgICAgICAs
IG1faWRlbnQoaWRlbnQpCkBAIC0zOTYsNDMgKzM5NSw0MyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICB7CiAgICAgfQogCi0gICAgaW5saW5lIFByZWZpeEVycm9yTm9kZTo6UHJlZml4RXJyb3JOb2Rl
KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIE9wZXJhdG9yIG9wZXIsIHVuc2lnbmVk
IGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQotICAgICAg
ICA6IEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9uKQorICAgIGlubGluZSBQcmVmaXhFcnJvck5vZGU6
OlByZWZpeEVycm9yTm9kZShpbnQgbGluZU51bWJlciwgT3BlcmF0b3Igb3BlciwgdW5zaWduZWQg
ZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCisgICAgICAg
IDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlcikKICAgICAgICAgLCBUaHJvd2FibGVFeHByZXNz
aW9uRGF0YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKICAgICAgICAgLCBtX29wZXJh
dG9yKG9wZXIpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBVbmFyeU9wTm9kZTo6VW5hcnlP
cE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgUmVzdWx0VHlwZSB0eXBlLCBF
eHByZXNzaW9uTm9kZSogZXhwciwgT3Bjb2RlSUQgb3Bjb2RlSUQpCi0gICAgICAgIDogRXhwcmVz
c2lvbk5vZGUobG9jYXRpb24sIHR5cGUpCisgICAgaW5saW5lIFVuYXJ5T3BOb2RlOjpVbmFyeU9w
Tm9kZShpbnQgbGluZU51bWJlciwgUmVzdWx0VHlwZSB0eXBlLCBFeHByZXNzaW9uTm9kZSogZXhw
ciwgT3Bjb2RlSUQgb3Bjb2RlSUQpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJl
ciwgdHlwZSkKICAgICAgICAgLCBtX2V4cHIoZXhwcikKICAgICAgICAgLCBtX29wY29kZUlEKG9w
Y29kZUlEKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgVW5hcnlQbHVzTm9kZTo6VW5hcnlQ
bHVzTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSog
ZXhwcikKLSAgICAgICAgOiBVbmFyeU9wTm9kZShsb2NhdGlvbiwgUmVzdWx0VHlwZTo6bnVtYmVy
VHlwZSgpLCBleHByLCBvcF90b19qc251bWJlcikKKyAgICBpbmxpbmUgVW5hcnlQbHVzTm9kZTo6
VW5hcnlQbHVzTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpCisgICAg
ICAgIDogVW5hcnlPcE5vZGUobGluZU51bWJlciwgUmVzdWx0VHlwZTo6bnVtYmVyVHlwZSgpLCBl
eHByLCBvcF90b19qc251bWJlcikKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIE5lZ2F0ZU5v
ZGU6Ok5lZ2F0ZU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lv
bk5vZGUqIGV4cHIpCi0gICAgICAgIDogVW5hcnlPcE5vZGUobG9jYXRpb24sIFJlc3VsdFR5cGU6
Om51bWJlclR5cGUoKSwgZXhwciwgb3BfbmVnYXRlKQorICAgIGlubGluZSBOZWdhdGVOb2RlOjpO
ZWdhdGVOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcikKKyAgICAgICAg
OiBVbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBSZXN1bHRUeXBlOjpudW1iZXJUeXBlKCksIGV4cHIs
IG9wX25lZ2F0ZSkKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIEJpdHdpc2VOb3ROb2RlOjpC
aXR3aXNlTm90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9u
Tm9kZSogZXhwcikKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbiwgUmVzdWx0VHlw
ZTo6Zm9yQml0T3AoKSkKKyAgICBpbmxpbmUgQml0d2lzZU5vdE5vZGU6OkJpdHdpc2VOb3ROb2Rl
KGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcikKKyAgICAgICAgOiBFeHByZXNz
aW9uTm9kZShsaW5lTnVtYmVyLCBSZXN1bHRUeXBlOjpmb3JCaXRPcCgpKQogICAgICAgICAsIG1f
ZXhwcihleHByKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgTG9naWNhbE5vdE5vZGU6Okxv
Z2ljYWxOb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25O
b2RlKiBleHByKQotICAgICAgICA6IFVuYXJ5T3BOb2RlKGxvY2F0aW9uLCBSZXN1bHRUeXBlOjpi
b29sZWFuVHlwZSgpLCBleHByLCBvcF9ub3QpCisgICAgaW5saW5lIExvZ2ljYWxOb3ROb2RlOjpM
b2dpY2FsTm90Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpCisgICAg
ICAgIDogVW5hcnlPcE5vZGUobGluZU51bWJlciwgUmVzdWx0VHlwZTo6Ym9vbGVhblR5cGUoKSwg
ZXhwciwgb3Bfbm90KQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgQmluYXJ5T3BOb2RlOjpC
aW5hcnlPcE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5v
ZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIE9wY29kZUlEIG9wY29kZUlELCBib29s
IHJpZ2h0SGFzQXNzaWdubWVudHMpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobG9jYXRpb24p
CisgICAgaW5saW5lIEJpbmFyeU9wTm9kZTo6QmluYXJ5T3BOb2RlKGludCBsaW5lTnVtYmVyLCBF
eHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgT3Bjb2RlSUQgb3Bj
b2RlSUQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICAgICAgOiBFeHByZXNzaW9uTm9k
ZShsaW5lTnVtYmVyKQogICAgICAgICAsIG1fZXhwcjEoZXhwcjEpCiAgICAgICAgICwgbV9leHBy
MihleHByMikKICAgICAgICAgLCBtX29wY29kZUlEKG9wY29kZUlEKQpAQCAtNDQwLDggKzQzOSw4
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgQmluYXJ5T3BO
b2RlOjpCaW5hcnlPcE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgUmVzdWx0
VHlwZSB0eXBlLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwg
T3Bjb2RlSUQgb3Bjb2RlSUQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKLSAgICAgICAgOiBF
eHByZXNzaW9uTm9kZShsb2NhdGlvbiwgdHlwZSkKKyAgICBpbmxpbmUgQmluYXJ5T3BOb2RlOjpC
aW5hcnlPcE5vZGUoaW50IGxpbmVOdW1iZXIsIFJlc3VsdFR5cGUgdHlwZSwgRXhwcmVzc2lvbk5v
ZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIE9wY29kZUlEIG9wY29kZUlELCBib29s
IHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJl
ciwgdHlwZSkKICAgICAgICAgLCBtX2V4cHIxKGV4cHIxKQogICAgICAgICAsIG1fZXhwcjIoZXhw
cjIpCiAgICAgICAgICwgbV9vcGNvZGVJRChvcGNvZGVJRCkKQEAgLTQ0OSwxNDAgKzQ0OCwxNDAg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBNdWx0Tm9kZTo6
TXVsdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykK
LSAgICAgICAgOiBCaW5hcnlPcE5vZGUobG9jYXRpb24sIFJlc3VsdFR5cGU6Om51bWJlclR5cGUo
KSwgZXhwcjEsIGV4cHIyLCBvcF9tdWwsIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgaW5saW5l
IE11bHROb2RlOjpNdWx0Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIx
LCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICAg
ICAgOiBCaW5hcnlPcE5vZGUobGluZU51bWJlciwgUmVzdWx0VHlwZTo6bnVtYmVyVHlwZSgpLCBl
eHByMSwgZXhwcjIsIG9wX211bCwgcmlnaHRIYXNBc3NpZ25tZW50cykKICAgICB7CiAgICAgfQog
Ci0gICAgaW5saW5lIERpdk5vZGU6OkRpdk5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2Nh
dGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wg
cmlnaHRIYXNBc3NpZ25tZW50cykKLSAgICAgICAgOiBCaW5hcnlPcE5vZGUobG9jYXRpb24sIFJl
c3VsdFR5cGU6Om51bWJlclR5cGUoKSwgZXhwcjEsIGV4cHIyLCBvcF9kaXYsIHJpZ2h0SGFzQXNz
aWdubWVudHMpCisgICAgaW5saW5lIERpdk5vZGU6OkRpdk5vZGUoaW50IGxpbmVOdW1iZXIsIEV4
cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFz
QXNzaWdubWVudHMpCisgICAgICAgIDogQmluYXJ5T3BOb2RlKGxpbmVOdW1iZXIsIFJlc3VsdFR5
cGU6Om51bWJlclR5cGUoKSwgZXhwcjEsIGV4cHIyLCBvcF9kaXYsIHJpZ2h0SGFzQXNzaWdubWVu
dHMpCiAgICAgewogICAgIH0KIAogCi0gICAgaW5saW5lIE1vZE5vZGU6Ok1vZE5vZGUoY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNz
aW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKLSAgICAgICAgOiBCaW5h
cnlPcE5vZGUobG9jYXRpb24sIFJlc3VsdFR5cGU6Om51bWJlclR5cGUoKSwgZXhwcjEsIGV4cHIy
LCBvcF9tb2QsIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgaW5saW5lIE1vZE5vZGU6Ok1vZE5v
ZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgICAgIDogQmluYXJ5T3BOb2Rl
KGxpbmVOdW1iZXIsIFJlc3VsdFR5cGU6Om51bWJlclR5cGUoKSwgZXhwcjEsIGV4cHIyLCBvcF9t
b2QsIHJpZ2h0SGFzQXNzaWdubWVudHMpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBBZGRO
b2RlOjpBZGROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25O
b2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVu
dHMpCi0gICAgICAgIDogQmluYXJ5T3BOb2RlKGxvY2F0aW9uLCBSZXN1bHRUeXBlOjpmb3JBZGQo
ZXhwcjEtPnJlc3VsdERlc2NyaXB0b3IoKSwgZXhwcjItPnJlc3VsdERlc2NyaXB0b3IoKSksIGV4
cHIxLCBleHByMiwgb3BfYWRkLCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgIGlubGluZSBBZGRO
b2RlOjpBZGROb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJl
c3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgICAgICA6IEJp
bmFyeU9wTm9kZShsaW5lTnVtYmVyLCBSZXN1bHRUeXBlOjpmb3JBZGQoZXhwcjEtPnJlc3VsdERl
c2NyaXB0b3IoKSwgZXhwcjItPnJlc3VsdERlc2NyaXB0b3IoKSksIGV4cHIxLCBleHByMiwgb3Bf
YWRkLCByaWdodEhhc0Fzc2lnbm1lbnRzKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgU3Vi
Tm9kZTo6U3ViTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9u
Tm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1l
bnRzKQotICAgICAgICA6IEJpbmFyeU9wTm9kZShsb2NhdGlvbiwgUmVzdWx0VHlwZTo6bnVtYmVy
VHlwZSgpLCBleHByMSwgZXhwcjIsIG9wX3N1YiwgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICBp
bmxpbmUgU3ViTm9kZTo6U3ViTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4
cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAg
ICAgICAgOiBCaW5hcnlPcE5vZGUobGluZU51bWJlciwgUmVzdWx0VHlwZTo6bnVtYmVyVHlwZSgp
LCBleHByMSwgZXhwcjIsIG9wX3N1YiwgcmlnaHRIYXNBc3NpZ25tZW50cykKICAgICB7CiAgICAg
fQogCi0gICAgaW5saW5lIExlZnRTaGlmdE5vZGU6OkxlZnRTaGlmdE5vZGUoY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9k
ZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKLSAgICAgICAgOiBCaW5hcnlPcE5v
ZGUobG9jYXRpb24sIFJlc3VsdFR5cGU6OmZvckJpdE9wKCksIGV4cHIxLCBleHByMiwgb3BfbHNo
aWZ0LCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgIGlubGluZSBMZWZ0U2hpZnROb2RlOjpMZWZ0
U2hpZnROb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Np
b25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgICAgICA6IEJpbmFy
eU9wTm9kZShsaW5lTnVtYmVyLCBSZXN1bHRUeXBlOjpmb3JCaXRPcCgpLCBleHByMSwgZXhwcjIs
IG9wX2xzaGlmdCwgcmlnaHRIYXNBc3NpZ25tZW50cykKICAgICB7CiAgICAgfQogCi0gICAgaW5s
aW5lIFJpZ2h0U2hpZnROb2RlOjpSaWdodFNoaWZ0Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24m
IGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwg
Ym9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQotICAgICAgICA6IEJpbmFyeU9wTm9kZShsb2NhdGlv
biwgUmVzdWx0VHlwZTo6Zm9yQml0T3AoKSwgZXhwcjEsIGV4cHIyLCBvcF9yc2hpZnQsIHJpZ2h0
SGFzQXNzaWdubWVudHMpCisgICAgaW5saW5lIFJpZ2h0U2hpZnROb2RlOjpSaWdodFNoaWZ0Tm9k
ZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSog
ZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICAgICAgOiBCaW5hcnlPcE5vZGUo
bGluZU51bWJlciwgUmVzdWx0VHlwZTo6Zm9yQml0T3AoKSwgZXhwcjEsIGV4cHIyLCBvcF9yc2hp
ZnQsIHJpZ2h0SGFzQXNzaWdubWVudHMpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBVbnNp
Z25lZFJpZ2h0U2hpZnROb2RlOjpVbnNpZ25lZFJpZ2h0U2hpZnROb2RlKGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCi0gICAgICAgIDogQmluYXJ5T3BOb2Rl
KGxvY2F0aW9uLCBSZXN1bHRUeXBlOjpudW1iZXJUeXBlKCksIGV4cHIxLCBleHByMiwgb3BfdXJz
aGlmdCwgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICBpbmxpbmUgVW5zaWduZWRSaWdodFNoaWZ0
Tm9kZTo6VW5zaWduZWRSaWdodFNoaWZ0Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5v
ZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50
cykKKyAgICAgICAgOiBCaW5hcnlPcE5vZGUobGluZU51bWJlciwgUmVzdWx0VHlwZTo6bnVtYmVy
VHlwZSgpLCBleHByMSwgZXhwcjIsIG9wX3Vyc2hpZnQsIHJpZ2h0SGFzQXNzaWdubWVudHMpCiAg
ICAgewogICAgIH0KIAotICAgIGlubGluZSBMZXNzTm9kZTo6TGVzc05vZGUoY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9k
ZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKLSAgICAgICAgOiBCaW5hcnlPcE5v
ZGUobG9jYXRpb24sIFJlc3VsdFR5cGU6OmJvb2xlYW5UeXBlKCksIGV4cHIxLCBleHByMiwgb3Bf
bGVzcywgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICBpbmxpbmUgTGVzc05vZGU6Okxlc3NOb2Rl
KGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBl
eHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgICAgICA6IEJpbmFyeU9wTm9kZShs
aW5lTnVtYmVyLCBSZXN1bHRUeXBlOjpib29sZWFuVHlwZSgpLCBleHByMSwgZXhwcjIsIG9wX2xl
c3MsIHJpZ2h0SGFzQXNzaWdubWVudHMpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBHcmVh
dGVyTm9kZTo6R3JlYXRlck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhw
cmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNB
c3NpZ25tZW50cykKLSAgICAgICAgOiBCaW5hcnlPcE5vZGUobG9jYXRpb24sIFJlc3VsdFR5cGU6
OmJvb2xlYW5UeXBlKCksIGV4cHIxLCBleHByMiwgb3BfZ3JlYXRlciwgcmlnaHRIYXNBc3NpZ25t
ZW50cykKKyAgICBpbmxpbmUgR3JlYXRlck5vZGU6OkdyZWF0ZXJOb2RlKGludCBsaW5lTnVtYmVy
LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdo
dEhhc0Fzc2lnbm1lbnRzKQorICAgICAgICA6IEJpbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBSZXN1
bHRUeXBlOjpib29sZWFuVHlwZSgpLCBleHByMSwgZXhwcjIsIG9wX2dyZWF0ZXIsIHJpZ2h0SGFz
QXNzaWdubWVudHMpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBMZXNzRXFOb2RlOjpMZXNz
RXFOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBl
eHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCi0g
ICAgICAgIDogQmluYXJ5T3BOb2RlKGxvY2F0aW9uLCBSZXN1bHRUeXBlOjpib29sZWFuVHlwZSgp
LCBleHByMSwgZXhwcjIsIG9wX2xlc3NlcSwgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICBpbmxp
bmUgTGVzc0VxTm9kZTo6TGVzc0VxTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykK
KyAgICAgICAgOiBCaW5hcnlPcE5vZGUobGluZU51bWJlciwgUmVzdWx0VHlwZTo6Ym9vbGVhblR5
cGUoKSwgZXhwcjEsIGV4cHIyLCBvcF9sZXNzZXEsIHJpZ2h0SGFzQXNzaWdubWVudHMpCiAgICAg
ewogICAgIH0KIAotICAgIGlubGluZSBHcmVhdGVyRXFOb2RlOjpHcmVhdGVyRXFOb2RlKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVz
c2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCi0gICAgICAgIDogQmlu
YXJ5T3BOb2RlKGxvY2F0aW9uLCBSZXN1bHRUeXBlOjpib29sZWFuVHlwZSgpLCBleHByMSwgZXhw
cjIsIG9wX2dyZWF0ZXJlcSwgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICBpbmxpbmUgR3JlYXRl
ckVxTm9kZTo6R3JlYXRlckVxTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4
cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAg
ICAgICAgOiBCaW5hcnlPcE5vZGUobGluZU51bWJlciwgUmVzdWx0VHlwZTo6Ym9vbGVhblR5cGUo
KSwgZXhwcjEsIGV4cHIyLCBvcF9ncmVhdGVyZXEsIHJpZ2h0SGFzQXNzaWdubWVudHMpCiAgICAg
ewogICAgIH0KIAotICAgIGlubGluZSBUaHJvd2FibGVCaW5hcnlPcE5vZGU6OlRocm93YWJsZUJp
bmFyeU9wTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBSZXN1bHRUeXBlIHR5
cGUsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBPcGNvZGVJ
RCBvcGNvZGVJRCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQotICAgICAgICA6IEJpbmFyeU9w
Tm9kZShsb2NhdGlvbiwgdHlwZSwgZXhwcjEsIGV4cHIyLCBvcGNvZGVJRCwgcmlnaHRIYXNBc3Np
Z25tZW50cykKKyAgICBpbmxpbmUgVGhyb3dhYmxlQmluYXJ5T3BOb2RlOjpUaHJvd2FibGVCaW5h
cnlPcE5vZGUoaW50IGxpbmVOdW1iZXIsIFJlc3VsdFR5cGUgdHlwZSwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIE9wY29kZUlEIG9wY29kZUlELCBib29sIHJp
Z2h0SGFzQXNzaWdubWVudHMpCisgICAgICAgIDogQmluYXJ5T3BOb2RlKGxpbmVOdW1iZXIsIHR5
cGUsIGV4cHIxLCBleHByMiwgb3Bjb2RlSUQsIHJpZ2h0SGFzQXNzaWdubWVudHMpCiAgICAgewog
ICAgIH0KIAotICAgIGlubGluZSBUaHJvd2FibGVCaW5hcnlPcE5vZGU6OlRocm93YWJsZUJpbmFy
eU9wTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSog
ZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgT3Bjb2RlSUQgb3Bjb2RlSUQsIGJvb2wgcmln
aHRIYXNBc3NpZ25tZW50cykKLSAgICAgICAgOiBCaW5hcnlPcE5vZGUobG9jYXRpb24sIGV4cHIx
LCBleHByMiwgb3Bjb2RlSUQsIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgaW5saW5lIFRocm93
YWJsZUJpbmFyeU9wTm9kZTo6VGhyb3dhYmxlQmluYXJ5T3BOb2RlKGludCBsaW5lTnVtYmVyLCBF
eHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgT3Bjb2RlSUQgb3Bj
b2RlSUQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICAgICAgOiBCaW5hcnlPcE5vZGUo
bGluZU51bWJlciwgZXhwcjEsIGV4cHIyLCBvcGNvZGVJRCwgcmlnaHRIYXNBc3NpZ25tZW50cykK
ICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIEluc3RhbmNlT2ZOb2RlOjpJbnN0YW5jZU9mTm9k
ZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwcjEs
IEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQotICAgICAg
ICA6IFRocm93YWJsZUJpbmFyeU9wTm9kZShsb2NhdGlvbiwgUmVzdWx0VHlwZTo6Ym9vbGVhblR5
cGUoKSwgZXhwcjEsIGV4cHIyLCBvcF9pbnN0YW5jZW9mLCByaWdodEhhc0Fzc2lnbm1lbnRzKQor
ICAgIGlubGluZSBJbnN0YW5jZU9mTm9kZTo6SW5zdGFuY2VPZk5vZGUoaW50IGxpbmVOdW1iZXIs
IEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0
SGFzQXNzaWdubWVudHMpCisgICAgICAgIDogVGhyb3dhYmxlQmluYXJ5T3BOb2RlKGxpbmVOdW1i
ZXIsIFJlc3VsdFR5cGU6OmJvb2xlYW5UeXBlKCksIGV4cHIxLCBleHByMiwgb3BfaW5zdGFuY2Vv
ZiwgcmlnaHRIYXNBc3NpZ25tZW50cykKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIEluTm9k
ZTo6SW5Ob2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2Rl
KiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMp
Ci0gICAgICAgIDogVGhyb3dhYmxlQmluYXJ5T3BOb2RlKGxvY2F0aW9uLCBleHByMSwgZXhwcjIs
IG9wX2luLCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgIGlubGluZSBJbk5vZGU6OkluTm9kZShp
bnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhw
cjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICAgICAgOiBUaHJvd2FibGVCaW5hcnlP
cE5vZGUobGluZU51bWJlciwgZXhwcjEsIGV4cHIyLCBvcF9pbiwgcmlnaHRIYXNBc3NpZ25tZW50
cykKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIEVxdWFsTm9kZTo6RXF1YWxOb2RlKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVz
c2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCi0gICAgICAgIDogQmlu
YXJ5T3BOb2RlKGxvY2F0aW9uLCBSZXN1bHRUeXBlOjpib29sZWFuVHlwZSgpLCBleHByMSwgZXhw
cjIsIG9wX2VxLCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgIGlubGluZSBFcXVhbE5vZGU6OkVx
dWFsTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9u
Tm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICAgICAgOiBCaW5hcnlP
cE5vZGUobGluZU51bWJlciwgUmVzdWx0VHlwZTo6Ym9vbGVhblR5cGUoKSwgZXhwcjEsIGV4cHIy
LCBvcF9lcSwgcmlnaHRIYXNBc3NpZ25tZW50cykKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5l
IE5vdEVxdWFsTm9kZTo6Tm90RXF1YWxOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRp
b24sIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJp
Z2h0SGFzQXNzaWdubWVudHMpCi0gICAgICAgIDogQmluYXJ5T3BOb2RlKGxvY2F0aW9uLCBSZXN1
bHRUeXBlOjpib29sZWFuVHlwZSgpLCBleHByMSwgZXhwcjIsIG9wX25lcSwgcmlnaHRIYXNBc3Np
Z25tZW50cykKKyAgICBpbmxpbmUgTm90RXF1YWxOb2RlOjpOb3RFcXVhbE5vZGUoaW50IGxpbmVO
dW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29s
IHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgICAgIDogQmluYXJ5T3BOb2RlKGxpbmVOdW1iZXIs
IFJlc3VsdFR5cGU6OmJvb2xlYW5UeXBlKCksIGV4cHIxLCBleHByMiwgb3BfbmVxLCByaWdodEhh
c0Fzc2lnbm1lbnRzKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgU3RyaWN0RXF1YWxOb2Rl
OjpTdHJpY3RFcXVhbE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVz
c2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3Np
Z25tZW50cykKLSAgICAgICAgOiBCaW5hcnlPcE5vZGUobG9jYXRpb24sIFJlc3VsdFR5cGU6OmJv
b2xlYW5UeXBlKCksIGV4cHIxLCBleHByMiwgb3Bfc3RyaWN0ZXEsIHJpZ2h0SGFzQXNzaWdubWVu
dHMpCisgICAgaW5saW5lIFN0cmljdEVxdWFsTm9kZTo6U3RyaWN0RXF1YWxOb2RlKGludCBsaW5l
TnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9v
bCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgICAgICA6IEJpbmFyeU9wTm9kZShsaW5lTnVtYmVy
LCBSZXN1bHRUeXBlOjpib29sZWFuVHlwZSgpLCBleHByMSwgZXhwcjIsIG9wX3N0cmljdGVxLCBy
aWdodEhhc0Fzc2lnbm1lbnRzKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgTm90U3RyaWN0
RXF1YWxOb2RlOjpOb3RTdHJpY3RFcXVhbE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2Nh
dGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wg
cmlnaHRIYXNBc3NpZ25tZW50cykKLSAgICAgICAgOiBCaW5hcnlPcE5vZGUobG9jYXRpb24sIFJl
c3VsdFR5cGU6OmJvb2xlYW5UeXBlKCksIGV4cHIxLCBleHByMiwgb3BfbnN0cmljdGVxLCByaWdo
dEhhc0Fzc2lnbm1lbnRzKQorICAgIGlubGluZSBOb3RTdHJpY3RFcXVhbE5vZGU6Ok5vdFN0cmlj
dEVxdWFsTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNz
aW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICAgICAgOiBCaW5h
cnlPcE5vZGUobGluZU51bWJlciwgUmVzdWx0VHlwZTo6Ym9vbGVhblR5cGUoKSwgZXhwcjEsIGV4
cHIyLCBvcF9uc3RyaWN0ZXEsIHJpZ2h0SGFzQXNzaWdubWVudHMpCiAgICAgewogICAgIH0KIAot
ICAgIGlubGluZSBCaXRBbmROb2RlOjpCaXRBbmROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYg
bG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBi
b29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCi0gICAgICAgIDogQmluYXJ5T3BOb2RlKGxvY2F0aW9u
LCBSZXN1bHRUeXBlOjpmb3JCaXRPcCgpLCBleHByMSwgZXhwcjIsIG9wX2JpdGFuZCwgcmlnaHRI
YXNBc3NpZ25tZW50cykKKyAgICBpbmxpbmUgQml0QW5kTm9kZTo6Qml0QW5kTm9kZShpbnQgbGlu
ZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJv
b2wgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICAgICAgOiBCaW5hcnlPcE5vZGUobGluZU51bWJl
ciwgUmVzdWx0VHlwZTo6Zm9yQml0T3AoKSwgZXhwcjEsIGV4cHIyLCBvcF9iaXRhbmQsIHJpZ2h0
SGFzQXNzaWdubWVudHMpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBCaXRPck5vZGU6OkJp
dE9yTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSog
ZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQot
ICAgICAgICA6IEJpbmFyeU9wTm9kZShsb2NhdGlvbiwgUmVzdWx0VHlwZTo6Zm9yQml0T3AoKSwg
ZXhwcjEsIGV4cHIyLCBvcF9iaXRvciwgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICBpbmxpbmUg
Qml0T3JOb2RlOjpCaXRPck5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHBy
MSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAg
ICAgIDogQmluYXJ5T3BOb2RlKGxpbmVOdW1iZXIsIFJlc3VsdFR5cGU6OmZvckJpdE9wKCksIGV4
cHIxLCBleHByMiwgb3BfYml0b3IsIHJpZ2h0SGFzQXNzaWdubWVudHMpCiAgICAgewogICAgIH0K
IAotICAgIGlubGluZSBCaXRYT3JOb2RlOjpCaXRYT3JOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIy
LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCi0gICAgICAgIDogQmluYXJ5T3BOb2RlKGxvY2F0
aW9uLCBSZXN1bHRUeXBlOjpmb3JCaXRPcCgpLCBleHByMSwgZXhwcjIsIG9wX2JpdHhvciwgcmln
aHRIYXNBc3NpZ25tZW50cykKKyAgICBpbmxpbmUgQml0WE9yTm9kZTo6Qml0WE9yTm9kZShpbnQg
bGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIs
IGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICAgICAgOiBCaW5hcnlPcE5vZGUobGluZU51
bWJlciwgUmVzdWx0VHlwZTo6Zm9yQml0T3AoKSwgZXhwcjEsIGV4cHIyLCBvcF9iaXR4b3IsIHJp
Z2h0SGFzQXNzaWdubWVudHMpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBMb2dpY2FsT3BO
b2RlOjpMb2dpY2FsT3BOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJl
c3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBMb2dpY2FsT3BlcmF0b3Ig
b3BlcikKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbiwgUmVzdWx0VHlwZTo6Ym9v
bGVhblR5cGUoKSkKKyAgICBpbmxpbmUgTG9naWNhbE9wTm9kZTo6TG9naWNhbE9wTm9kZShpbnQg
bGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIs
IExvZ2ljYWxPcGVyYXRvciBvcGVyKQorICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1i
ZXIsIFJlc3VsdFR5cGU6OmJvb2xlYW5UeXBlKCkpCiAgICAgICAgICwgbV9leHByMShleHByMSkK
ICAgICAgICAgLCBtX2V4cHIyKGV4cHIyKQogICAgICAgICAsIG1fb3BlcmF0b3Iob3BlcikKICAg
ICB7CiAgICAgfQogCi0gICAgaW5saW5lIENvbmRpdGlvbmFsTm9kZTo6Q29uZGl0aW9uYWxOb2Rl
KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBsb2dpY2Fs
LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMikKLSAgICAgICAg
OiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbikKKyAgICBpbmxpbmUgQ29uZGl0aW9uYWxOb2RlOjpD
b25kaXRpb25hbE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBsb2dpY2FsLCBF
eHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMikKKyAgICAgICAgOiBF
eHByZXNzaW9uTm9kZShsaW5lTnVtYmVyKQogICAgICAgICAsIG1fbG9naWNhbChsb2dpY2FsKQog
ICAgICAgICAsIG1fZXhwcjEoZXhwcjEpCiAgICAgICAgICwgbV9leHByMihleHByMikKICAgICB7
CiAgICAgfQogCi0gICAgaW5saW5lIFJlYWRNb2RpZnlSZXNvbHZlTm9kZTo6UmVhZE1vZGlmeVJl
c29sdmVOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZp
ZXImIGlkZW50LCBPcGVyYXRvciBvcGVyLCBFeHByZXNzaW9uTm9kZSogIHJpZ2h0LCBib29sIHJp
Z2h0SGFzQXNzaWdubWVudHMsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwg
dW5zaWduZWQgZW5kT2Zmc2V0KQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9uKQor
ICAgIGlubGluZSBSZWFkTW9kaWZ5UmVzb2x2ZU5vZGU6OlJlYWRNb2RpZnlSZXNvbHZlTm9kZShp
bnQgbGluZU51bWJlciwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIE9wZXJhdG9yIG9wZXIsIEV4
cHJlc3Npb25Ob2RlKiAgcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywgdW5zaWduZWQg
ZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCisgICAgICAg
IDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlcikKICAgICAgICAgLCBUaHJvd2FibGVFeHByZXNz
aW9uRGF0YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKICAgICAgICAgLCBtX2lkZW50
KGlkZW50KQogICAgICAgICAsIG1fcmlnaHQocmlnaHQpCkBAIC01OTEsMTUgKzU5MCwxNSBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIEFzc2lnblJlc29sdmVO
b2RlOjpBc3NpZ25SZXNvbHZlTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBj
b25zdCBJZGVudGlmaWVyJiBpZGVudCwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0KQotICAgICAgICA6
IEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9uKQorICAgIGlubGluZSBBc3NpZ25SZXNvbHZlTm9kZTo6
QXNzaWduUmVzb2x2ZU5vZGUoaW50IGxpbmVOdW1iZXIsIGNvbnN0IElkZW50aWZpZXImIGlkZW50
LCBFeHByZXNzaW9uTm9kZSogcmlnaHQpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51
bWJlcikKICAgICAgICAgLCBtX2lkZW50KGlkZW50KQogICAgICAgICAsIG1fcmlnaHQocmlnaHQp
CiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBSZWFkTW9kaWZ5QnJhY2tldE5vZGU6OlJlYWRN
b2RpZnlCcmFja2V0Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNz
aW9uTm9kZSogYmFzZSwgRXhwcmVzc2lvbk5vZGUqIHN1YnNjcmlwdCwgT3BlcmF0b3Igb3Blciwg
RXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHN1YnNjcmlwdEhhc0Fzc2lnbm1lbnRzLCBib29s
IHJpZ2h0SGFzQXNzaWdubWVudHMsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNl
dCwgdW5zaWduZWQgZW5kT2Zmc2V0KQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9u
KQorICAgIGlubGluZSBSZWFkTW9kaWZ5QnJhY2tldE5vZGU6OlJlYWRNb2RpZnlCcmFja2V0Tm9k
ZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBz
dWJzY3JpcHQsIE9wZXJhdG9yIG9wZXIsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCBzdWJz
Y3JpcHRIYXNBc3NpZ25tZW50cywgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzLCB1bnNpZ25lZCBk
aXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKKyAgICAgICAg
OiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyKQogICAgICAgICAsIFRocm93YWJsZVN1YkV4cHJl
c3Npb25EYXRhKGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KQogICAgICAgICAsIG1fYmFz
ZShiYXNlKQogICAgICAgICAsIG1fc3Vic2NyaXB0KHN1YnNjcmlwdCkKQEAgLTYxMCw4ICs2MDks
OCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIEFzc2lnbkJy
YWNrZXROb2RlOjpBc3NpZ25CcmFja2V0Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0
aW9uLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgRXhwcmVzc2lvbk5vZGUqIHN1YnNjcmlwdCwgRXhw
cmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHN1YnNjcmlwdEhhc0Fzc2lnbm1lbnRzLCBib29sIHJp
Z2h0SGFzQXNzaWdubWVudHMsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwg
dW5zaWduZWQgZW5kT2Zmc2V0KQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9uKQor
ICAgIGlubGluZSBBc3NpZ25CcmFja2V0Tm9kZTo6QXNzaWduQnJhY2tldE5vZGUoaW50IGxpbmVO
dW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCBF
eHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgc3Vic2NyaXB0SGFzQXNzaWdubWVudHMsIGJvb2wg
cmlnaHRIYXNBc3NpZ25tZW50cywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0
LCB1bnNpZ25lZCBlbmRPZmZzZXQpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJl
cikKICAgICAgICAgLCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YShkaXZvdCwgc3RhcnRPZmZzZXQs
IGVuZE9mZnNldCkKICAgICAgICAgLCBtX2Jhc2UoYmFzZSkKICAgICAgICAgLCBtX3N1YnNjcmlw
dChzdWJzY3JpcHQpCkBAIC02MjEsOCArNjIwLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewog
ICAgIH0KIAotICAgIGlubGluZSBBc3NpZ25Eb3ROb2RlOjpBc3NpZ25Eb3ROb2RlKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVu
dGlmaWVyJiBpZGVudCwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdu
bWVudHMsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5k
T2Zmc2V0KQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9uKQorICAgIGlubGluZSBB
c3NpZ25Eb3ROb2RlOjpBc3NpZ25Eb3ROb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9k
ZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwg
Ym9vbCByaWdodEhhc0Fzc2lnbm1lbnRzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRP
ZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5l
TnVtYmVyKQogICAgICAgICAsIFRocm93YWJsZUV4cHJlc3Npb25EYXRhKGRpdm90LCBzdGFydE9m
ZnNldCwgZW5kT2Zmc2V0KQogICAgICAgICAsIG1fYmFzZShiYXNlKQogICAgICAgICAsIG1faWRl
bnQoaWRlbnQpCkBAIC02MzEsOCArNjMwLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewogICAg
IH0KIAotICAgIGlubGluZSBSZWFkTW9kaWZ5RG90Tm9kZTo6UmVhZE1vZGlmeURvdE5vZGUoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0
IElkZW50aWZpZXImIGlkZW50LCBPcGVyYXRvciBvcGVyLCBFeHByZXNzaW9uTm9kZSogcmlnaHQs
IGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0
T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobG9j
YXRpb24pCisgICAgaW5saW5lIFJlYWRNb2RpZnlEb3ROb2RlOjpSZWFkTW9kaWZ5RG90Tm9kZShp
bnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlk
ZW50LCBPcGVyYXRvciBvcGVyLCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNB
c3NpZ25tZW50cywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25l
ZCBlbmRPZmZzZXQpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlcikKICAgICAg
ICAgLCBUaHJvd2FibGVTdWJFeHByZXNzaW9uRGF0YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9m
ZnNldCkKICAgICAgICAgLCBtX2Jhc2UoYmFzZSkKICAgICAgICAgLCBtX2lkZW50KGlkZW50KQpA
QCAtNjQyLDIxICs2NDEsMjEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewogICAgIH0KIAotICAg
IGlubGluZSBBc3NpZ25FcnJvck5vZGU6OkFzc2lnbkVycm9yTm9kZShjb25zdCBKU1Rva2VuTG9j
YXRpb24mIGxvY2F0aW9uLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVu
c2lnbmVkIGVuZE9mZnNldCkKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbikKKyAg
ICBpbmxpbmUgQXNzaWduRXJyb3JOb2RlOjpBc3NpZ25FcnJvck5vZGUoaW50IGxpbmVOdW1iZXIs
IHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0
KQorICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIpCiAgICAgICAgICwgVGhyb3dh
YmxlRXhwcmVzc2lvbkRhdGEoZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpCiAgICAgewog
ICAgIH0KIAotICAgIGlubGluZSBDb21tYU5vZGU6OkNvbW1hTm9kZShjb25zdCBKU1Rva2VuTG9j
YXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBl
eHByMikKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbikKKyAgICBpbmxpbmUgQ29t
bWFOb2RlOjpDb21tYU5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwg
RXhwcmVzc2lvbk5vZGUqIGV4cHIyKQorICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1i
ZXIpCiAgICAgewogICAgICAgICBtX2V4cHJlc3Npb25zLmFwcGVuZChleHByMSk7CiAgICAgICAg
IG1fZXhwcmVzc2lvbnMuYXBwZW5kKGV4cHIyKTsKICAgICB9CiAKLSAgICBpbmxpbmUgQ29uc3RT
dGF0ZW1lbnROb2RlOjpDb25zdFN0YXRlbWVudE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBs
b2NhdGlvbiwgQ29uc3REZWNsTm9kZSogbmV4dCkKLSAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxv
Y2F0aW9uKQorICAgIGlubGluZSBDb25zdFN0YXRlbWVudE5vZGU6OkNvbnN0U3RhdGVtZW50Tm9k
ZShpbnQgbGluZU51bWJlciwgQ29uc3REZWNsTm9kZSogbmV4dCkKKyAgICAgICAgOiBTdGF0ZW1l
bnROb2RlKGxpbmVOdW1iZXIpCiAgICAgICAgICwgbV9uZXh0KG5leHQpCiAgICAgewogICAgIH0K
QEAgLTY2NSw1NyArNjY0LDU3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHsKICAgICB9CiAKLSAg
ICBpbmxpbmUgRW1wdHlTdGF0ZW1lbnROb2RlOjpFbXB0eVN0YXRlbWVudE5vZGUoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiBsb2NhdGlvbikKLSAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxvY2F0aW9u
KQorICAgIGlubGluZSBFbXB0eVN0YXRlbWVudE5vZGU6OkVtcHR5U3RhdGVtZW50Tm9kZShpbnQg
bGluZU51bWJlcikKKyAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIpCiAgICAgewog
ICAgIH0KIAotICAgIGlubGluZSBEZWJ1Z2dlclN0YXRlbWVudE5vZGU6OkRlYnVnZ2VyU3RhdGVt
ZW50Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uKQotICAgICAgICA6IFN0YXRl
bWVudE5vZGUobG9jYXRpb24pCisgICAgaW5saW5lIERlYnVnZ2VyU3RhdGVtZW50Tm9kZTo6RGVi
dWdnZXJTdGF0ZW1lbnROb2RlKGludCBsaW5lTnVtYmVyKQorICAgICAgICA6IFN0YXRlbWVudE5v
ZGUobGluZU51bWJlcikKICAgICB7CiAgICAgfQogICAgIAotICAgIGlubGluZSBFeHByU3RhdGVt
ZW50Tm9kZTo6RXhwclN0YXRlbWVudE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlv
biwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpCi0gICAgICAgIDogU3RhdGVtZW50Tm9kZShsb2NhdGlv
bikKKyAgICBpbmxpbmUgRXhwclN0YXRlbWVudE5vZGU6OkV4cHJTdGF0ZW1lbnROb2RlKGludCBs
aW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcikKKyAgICAgICAgOiBTdGF0ZW1lbnROb2Rl
KGxpbmVOdW1iZXIpCiAgICAgICAgICwgbV9leHByKGV4cHIpCiAgICAgewogICAgIH0KIAotICAg
IGlubGluZSBWYXJTdGF0ZW1lbnROb2RlOjpWYXJTdGF0ZW1lbnROb2RlKGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHByKQotICAgICAgICA6IFN0YXRl
bWVudE5vZGUobG9jYXRpb24pCisgICAgaW5saW5lIFZhclN0YXRlbWVudE5vZGU6OlZhclN0YXRl
bWVudE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByKQorICAgICAgICA6
IFN0YXRlbWVudE5vZGUobGluZU51bWJlcikKICAgICAgICAgLCBtX2V4cHIoZXhwcikKICAgICB7
CiAgICAgfQogICAgIAotICAgIGlubGluZSBJZk5vZGU6OklmTm9kZShjb25zdCBKU1Rva2VuTG9j
YXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogY29uZGl0aW9uLCBTdGF0ZW1lbnROb2Rl
KiBpZkJsb2NrKQotICAgICAgICA6IFN0YXRlbWVudE5vZGUobG9jYXRpb24pCisgICAgaW5saW5l
IElmTm9kZTo6SWZOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogY29uZGl0aW9u
LCBTdGF0ZW1lbnROb2RlKiBpZkJsb2NrKQorICAgICAgICA6IFN0YXRlbWVudE5vZGUobGluZU51
bWJlcikKICAgICAgICAgLCBtX2NvbmRpdGlvbihjb25kaXRpb24pCiAgICAgICAgICwgbV9pZkJs
b2NrKGlmQmxvY2spCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBJZkVsc2VOb2RlOjpJZkVs
c2VOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBj
b25kaXRpb24sIFN0YXRlbWVudE5vZGUqIGlmQmxvY2ssIFN0YXRlbWVudE5vZGUqIGVsc2VCbG9j
aykKLSAgICAgICAgOiBJZk5vZGUobG9jYXRpb24sIGNvbmRpdGlvbiwgaWZCbG9jaykKKyAgICBp
bmxpbmUgSWZFbHNlTm9kZTo6SWZFbHNlTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5v
ZGUqIGNvbmRpdGlvbiwgU3RhdGVtZW50Tm9kZSogaWZCbG9jaywgU3RhdGVtZW50Tm9kZSogZWxz
ZUJsb2NrKQorICAgICAgICA6IElmTm9kZShsaW5lTnVtYmVyLCBjb25kaXRpb24sIGlmQmxvY2sp
CiAgICAgICAgICwgbV9lbHNlQmxvY2soZWxzZUJsb2NrKQogICAgIHsKICAgICB9CiAKLSAgICBp
bmxpbmUgRG9XaGlsZU5vZGU6OkRvV2hpbGVOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9j
YXRpb24sIFN0YXRlbWVudE5vZGUqIHN0YXRlbWVudCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpCi0g
ICAgICAgIDogU3RhdGVtZW50Tm9kZShsb2NhdGlvbikKKyAgICBpbmxpbmUgRG9XaGlsZU5vZGU6
OkRvV2hpbGVOb2RlKGludCBsaW5lTnVtYmVyLCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnQsIEV4
cHJlc3Npb25Ob2RlKiBleHByKQorICAgICAgICA6IFN0YXRlbWVudE5vZGUobGluZU51bWJlcikK
ICAgICAgICAgLCBtX3N0YXRlbWVudChzdGF0ZW1lbnQpCiAgICAgICAgICwgbV9leHByKGV4cHIp
CiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBXaGlsZU5vZGU6OldoaWxlTm9kZShjb25zdCBK
U1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwciwgU3RhdGVtZW50
Tm9kZSogc3RhdGVtZW50KQotICAgICAgICA6IFN0YXRlbWVudE5vZGUobG9jYXRpb24pCisgICAg
aW5saW5lIFdoaWxlTm9kZTo6V2hpbGVOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9k
ZSogZXhwciwgU3RhdGVtZW50Tm9kZSogc3RhdGVtZW50KQorICAgICAgICA6IFN0YXRlbWVudE5v
ZGUobGluZU51bWJlcikKICAgICAgICAgLCBtX2V4cHIoZXhwcikKICAgICAgICAgLCBtX3N0YXRl
bWVudChzdGF0ZW1lbnQpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBGb3JOb2RlOjpGb3JO
b2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHBy
MSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBFeHByZXNzaW9uTm9kZSogZXhwcjMsIFN0YXRlbWVu
dE5vZGUqIHN0YXRlbWVudCkKLSAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxvY2F0aW9uKQorICAg
IGlubGluZSBGb3JOb2RlOjpGb3JOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSog
ZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIzLCBTdGF0
ZW1lbnROb2RlKiBzdGF0ZW1lbnQpCisgICAgICAgIDogU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVy
KQogICAgICAgICAsIG1fZXhwcjEoZXhwcjEpCiAgICAgICAgICwgbV9leHByMihleHByMikKICAg
ICAgICAgLCBtX2V4cHIzKGV4cHIzKQpAQCAtNzI0LDM4ICs3MjMsMzggQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIEFTU0VSVChzdGF0ZW1lbnQpOwogICAgIH0KIAotICAgIGlubGluZSBDb250
aW51ZU5vZGU6OkNvbnRpbnVlTm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24pCi0gICAgICAgIDogU3RhdGVtZW50Tm9kZShsb2NhdGlv
bikKKyAgICBpbmxpbmUgQ29udGludWVOb2RlOjpDb250aW51ZU5vZGUoSlNHbG9iYWxEYXRhKiBn
bG9iYWxEYXRhLCBpbnQgbGluZU51bWJlcikKKyAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxpbmVO
dW1iZXIpCiAgICAgICAgICwgbV9pZGVudChnbG9iYWxEYXRhLT5wcm9wZXJ0eU5hbWVzLT5udWxs
SWRlbnRpZmllcikKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIENvbnRpbnVlTm9kZTo6Q29u
dGludWVOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZp
ZXImIGlkZW50KQotICAgICAgICA6IFN0YXRlbWVudE5vZGUobG9jYXRpb24pCisgICAgaW5saW5l
IENvbnRpbnVlTm9kZTo6Q29udGludWVOb2RlKGludCBsaW5lTnVtYmVyLCBjb25zdCBJZGVudGlm
aWVyJiBpZGVudCkKKyAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIpCiAgICAgICAg
ICwgbV9pZGVudChpZGVudCkKICAgICB7CiAgICAgfQogICAgIAotICAgIGlubGluZSBCcmVha05v
ZGU6OkJyZWFrTm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYgbG9jYXRpb24pCi0gICAgICAgIDogU3RhdGVtZW50Tm9kZShsb2NhdGlvbikKKyAgICBp
bmxpbmUgQnJlYWtOb2RlOjpCcmVha05vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBpbnQg
bGluZU51bWJlcikKKyAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIpCiAgICAgICAg
ICwgbV9pZGVudChnbG9iYWxEYXRhLT5wcm9wZXJ0eU5hbWVzLT5udWxsSWRlbnRpZmllcikKICAg
ICB7CiAgICAgfQogCi0gICAgaW5saW5lIEJyZWFrTm9kZTo6QnJlYWtOb2RlKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXImIGlkZW50KQotICAgICAgICA6
IFN0YXRlbWVudE5vZGUobG9jYXRpb24pCisgICAgaW5saW5lIEJyZWFrTm9kZTo6QnJlYWtOb2Rl
KGludCBsaW5lTnVtYmVyLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKKyAgICAgICAgOiBTdGF0
ZW1lbnROb2RlKGxpbmVOdW1iZXIpCiAgICAgICAgICwgbV9pZGVudChpZGVudCkKICAgICB7CiAg
ICAgfQogICAgIAotICAgIGlubGluZSBSZXR1cm5Ob2RlOjpSZXR1cm5Ob2RlKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiB2YWx1ZSkKLSAgICAgICAgOiBT
dGF0ZW1lbnROb2RlKGxvY2F0aW9uKQorICAgIGlubGluZSBSZXR1cm5Ob2RlOjpSZXR1cm5Ob2Rl
KGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogdmFsdWUpCisgICAgICAgIDogU3RhdGVt
ZW50Tm9kZShsaW5lTnVtYmVyKQogICAgICAgICAsIG1fdmFsdWUodmFsdWUpCiAgICAgewogICAg
IH0KIAotICAgIGlubGluZSBXaXRoTm9kZTo6V2l0aE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIFN0YXRlbWVudE5vZGUqIHN0YXRlbWVu
dCwgdWludDMyX3QgZGl2b3QsIHVpbnQzMl90IGV4cHJlc3Npb25MZW5ndGgpCi0gICAgICAgIDog
U3RhdGVtZW50Tm9kZShsb2NhdGlvbikKKyAgICBpbmxpbmUgV2l0aE5vZGU6OldpdGhOb2RlKGlu
dCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwciwgU3RhdGVtZW50Tm9kZSogc3RhdGVt
ZW50LCB1aW50MzJfdCBkaXZvdCwgdWludDMyX3QgZXhwcmVzc2lvbkxlbmd0aCkKKyAgICAgICAg
OiBTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIpCiAgICAgICAgICwgbV9leHByKGV4cHIpCiAgICAg
ICAgICwgbV9zdGF0ZW1lbnQoc3RhdGVtZW50KQogICAgICAgICAsIG1fZGl2b3QoZGl2b3QpCkBA
IC03NjMsMjEgKzc2MiwyMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB7CiAgICAgfQogCi0gICAg
aW5saW5lIExhYmVsTm9kZTo6TGFiZWxOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRp
b24sIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIFN0YXRlbWVudE5vZGUqIHN0YXRlbWVudCkKLSAg
ICAgICAgOiBTdGF0ZW1lbnROb2RlKGxvY2F0aW9uKQorICAgIGlubGluZSBMYWJlbE5vZGU6Okxh
YmVsTm9kZShpbnQgbGluZU51bWJlciwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgU3RhdGVtZW50
Tm9kZSogc3RhdGVtZW50KQorICAgICAgICA6IFN0YXRlbWVudE5vZGUobGluZU51bWJlcikKICAg
ICAgICAgLCBtX25hbWUobmFtZSkKICAgICAgICAgLCBtX3N0YXRlbWVudChzdGF0ZW1lbnQpCiAg
ICAgewogICAgIH0KIAotICAgIGlubGluZSBUaHJvd05vZGU6OlRocm93Tm9kZShjb25zdCBKU1Rv
a2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwcikKLSAgICAgICAgOiBT
dGF0ZW1lbnROb2RlKGxvY2F0aW9uKQorICAgIGlubGluZSBUaHJvd05vZGU6OlRocm93Tm9kZShp
bnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpCisgICAgICAgIDogU3RhdGVtZW50
Tm9kZShsaW5lTnVtYmVyKQogICAgICAgICAsIG1fZXhwcihleHByKQogICAgIHsKICAgICB9CiAK
LSAgICBpbmxpbmUgVHJ5Tm9kZTo6VHJ5Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0
aW9uLCBTdGF0ZW1lbnROb2RlKiB0cnlCbG9jaywgY29uc3QgSWRlbnRpZmllciYgZXhjZXB0aW9u
SWRlbnQsIFN0YXRlbWVudE5vZGUqIGNhdGNoQmxvY2ssIFN0YXRlbWVudE5vZGUqIGZpbmFsbHlC
bG9jaykKLSAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxvY2F0aW9uKQorICAgIGlubGluZSBUcnlO
b2RlOjpUcnlOb2RlKGludCBsaW5lTnVtYmVyLCBTdGF0ZW1lbnROb2RlKiB0cnlCbG9jaywgY29u
c3QgSWRlbnRpZmllciYgZXhjZXB0aW9uSWRlbnQsIFN0YXRlbWVudE5vZGUqIGNhdGNoQmxvY2ss
IFN0YXRlbWVudE5vZGUqIGZpbmFsbHlCbG9jaykKKyAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxp
bmVOdW1iZXIpCiAgICAgICAgICwgbV90cnlCbG9jayh0cnlCbG9jaykKICAgICAgICAgLCBtX2V4
Y2VwdGlvbklkZW50KGV4Y2VwdGlvbklkZW50KQogICAgICAgICAsIG1fY2F0Y2hCbG9jayhjYXRj
aEJsb2NrKQpAQCAtNzk4LDE1ICs3OTcsMTUgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGwt
Pm1fbmV4dCA9IHRoaXM7CiAgICAgfQogCi0gICAgaW5saW5lIEZ1bmNFeHByTm9kZTo6RnVuY0V4
cHJOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXIm
IGlkZW50LCBGdW5jdGlvbkJvZHlOb2RlKiBib2R5LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2Us
IFBhcmFtZXRlck5vZGUqIHBhcmFtZXRlcikKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2Nh
dGlvbikKKyAgICBpbmxpbmUgRnVuY0V4cHJOb2RlOjpGdW5jRXhwck5vZGUoaW50IGxpbmVOdW1i
ZXIsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBGdW5jdGlvbkJvZHlOb2RlKiBib2R5LCBjb25z
dCBTb3VyY2VDb2RlJiBzb3VyY2UsIFBhcmFtZXRlck5vZGUqIHBhcmFtZXRlcikKKyAgICAgICAg
OiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyKQogICAgICAgICAsIG1fYm9keShib2R5KQogICAg
IHsKICAgICAgICAgbV9ib2R5LT5maW5pc2hQYXJzaW5nKHNvdXJjZSwgcGFyYW1ldGVyLCBpZGVu
dCk7CiAgICAgfQogCi0gICAgaW5saW5lIEZ1bmNEZWNsTm9kZTo6RnVuY0RlY2xOb2RlKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBGdW5j
dGlvbkJvZHlOb2RlKiBib2R5LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIFBhcmFtZXRlck5v
ZGUqIHBhcmFtZXRlcikKLSAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxvY2F0aW9uKQorICAgIGlu
bGluZSBGdW5jRGVjbE5vZGU6OkZ1bmNEZWNsTm9kZShpbnQgbGluZU51bWJlciwgY29uc3QgSWRl
bnRpZmllciYgaWRlbnQsIEZ1bmN0aW9uQm9keU5vZGUqIGJvZHksIGNvbnN0IFNvdXJjZUNvZGUm
IHNvdXJjZSwgUGFyYW1ldGVyTm9kZSogcGFyYW1ldGVyKQorICAgICAgICA6IFN0YXRlbWVudE5v
ZGUobGluZU51bWJlcikKICAgICAgICAgLCBtX2JvZHkoYm9keSkKICAgICB7CiAgICAgICAgIG1f
Ym9keS0+ZmluaXNoUGFyc2luZyhzb3VyY2UsIHBhcmFtZXRlciwgaWRlbnQpOwpAQCAtODM4LDI5
ICs4MzcsMjkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBT
d2l0Y2hOb2RlOjpTd2l0Y2hOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4
cHJlc3Npb25Ob2RlKiBleHByLCBDYXNlQmxvY2tOb2RlKiBibG9jaykKLSAgICAgICAgOiBTdGF0
ZW1lbnROb2RlKGxvY2F0aW9uKQorICAgIGlubGluZSBTd2l0Y2hOb2RlOjpTd2l0Y2hOb2RlKGlu
dCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwciwgQ2FzZUJsb2NrTm9kZSogYmxvY2sp
CisgICAgICAgIDogU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyKQogICAgICAgICAsIG1fZXhwcihl
eHByKQogICAgICAgICAsIG1fYmxvY2soYmxvY2spCiAgICAgewogICAgIH0KIAotICAgIGlubGlu
ZSBDb25zdERlY2xOb2RlOjpDb25zdERlY2xOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9j
YXRpb24sIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBFeHByZXNzaW9uTm9kZSogaW5pdCkKLSAg
ICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbikKKyAgICBpbmxpbmUgQ29uc3REZWNsTm9k
ZTo6Q29uc3REZWNsTm9kZShpbnQgbGluZU51bWJlciwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQs
IEV4cHJlc3Npb25Ob2RlKiBpbml0KQorICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1i
ZXIpCiAgICAgICAgICwgbV9pZGVudChpZGVudCkKICAgICAgICAgLCBtX25leHQoMCkKICAgICAg
ICAgLCBtX2luaXQoaW5pdCkKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIEJsb2NrTm9kZTo6
QmxvY2tOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIFNvdXJjZUVsZW1lbnRz
KiBzdGF0ZW1lbnRzKQotICAgICAgICA6IFN0YXRlbWVudE5vZGUobG9jYXRpb24pCisgICAgaW5s
aW5lIEJsb2NrTm9kZTo6QmxvY2tOb2RlKGludCBsaW5lTnVtYmVyLCBTb3VyY2VFbGVtZW50cyog
c3RhdGVtZW50cykKKyAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIpCiAgICAgICAg
ICwgbV9zdGF0ZW1lbnRzKHN0YXRlbWVudHMpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBG
b3JJbk5vZGU6OkZvckluTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHBy
ZXNzaW9uTm9kZSogbCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIFN0YXRlbWVudE5vZGUqIHN0YXRl
bWVudCkKLSAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxvY2F0aW9uKQorICAgIGlubGluZSBGb3JJ
bk5vZGU6OkZvckluTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGwsIEV4cHJl
c3Npb25Ob2RlKiBleHByLCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnQpCisgICAgICAgIDogU3Rh
dGVtZW50Tm9kZShsaW5lTnVtYmVyKQogICAgICAgICAsIG1faW5pdCgwKQogICAgICAgICAsIG1f
bGV4cHIobCkKICAgICAgICAgLCBtX2V4cHIoZXhwcikKQEAgLTg2OSwxNiArODY4LDE2IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgRm9ySW5Ob2RlOjpGb3JJ
bk5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxv
Y2F0aW9uLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgRXhwcmVzc2lvbk5vZGUqIGluLCBFeHBy
ZXNzaW9uTm9kZSogZXhwciwgU3RhdGVtZW50Tm9kZSogc3RhdGVtZW50LCBpbnQgZGl2b3QsIGlu
dCBzdGFydE9mZnNldCwgaW50IGVuZE9mZnNldCkKLSAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxv
Y2F0aW9uKQorICAgIGlubGluZSBGb3JJbk5vZGU6OkZvckluTm9kZShKU0dsb2JhbERhdGEqIGds
b2JhbERhdGEsIGludCBsaW5lTnVtYmVyLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgRXhwcmVz
c2lvbk5vZGUqIGluLCBFeHByZXNzaW9uTm9kZSogZXhwciwgU3RhdGVtZW50Tm9kZSogc3RhdGVt
ZW50LCBpbnQgZGl2b3QsIGludCBzdGFydE9mZnNldCwgaW50IGVuZE9mZnNldCkKKyAgICAgICAg
OiBTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIpCiAgICAgICAgICwgbV9pbml0KDApCi0gICAgICAg
ICwgbV9sZXhwcihuZXcgKGdsb2JhbERhdGEpIFJlc29sdmVOb2RlKGxvY2F0aW9uLCBpZGVudCwg
ZGl2b3QgLSBzdGFydE9mZnNldCkpCisgICAgICAgICwgbV9sZXhwcihuZXcgKGdsb2JhbERhdGEp
IFJlc29sdmVOb2RlKGxpbmVOdW1iZXIsIGlkZW50LCBkaXZvdCAtIHN0YXJ0T2Zmc2V0KSkKICAg
ICAgICAgLCBtX2V4cHIoZXhwcikKICAgICAgICAgLCBtX3N0YXRlbWVudChzdGF0ZW1lbnQpCiAg
ICAgICAgICwgbV9pZGVudElzVmFyRGVjbCh0cnVlKQogICAgIHsKICAgICAgICAgaWYgKGluKSB7
Ci0gICAgICAgICAgICBBc3NpZ25SZXNvbHZlTm9kZSogbm9kZSA9IG5ldyAoZ2xvYmFsRGF0YSkg
QXNzaWduUmVzb2x2ZU5vZGUobG9jYXRpb24sIGlkZW50LCBpbik7CisgICAgICAgICAgICBBc3Np
Z25SZXNvbHZlTm9kZSogbm9kZSA9IG5ldyAoZ2xvYmFsRGF0YSkgQXNzaWduUmVzb2x2ZU5vZGUo
bGluZU51bWJlciwgaWRlbnQsIGluKTsKICAgICAgICAgICAgIG5vZGUtPnNldEV4Y2VwdGlvblNv
dXJjZUNvZGUoZGl2b3QsIGRpdm90IC0gc3RhcnRPZmZzZXQsIGVuZE9mZnNldCAtIGRpdm90KTsK
ICAgICAgICAgICAgIG1faW5pdCA9IG5vZGU7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9Ob2Rlcy5jcHAKaW5kZXggMDE3MjM1OWM3MDNmMmI5ZmUxMmJhNWIwOGYyNWRmYTQz
YjQ5NjdiNS4uYzMyZTRjNzNhMjRlYmViMjMzY2Q1ZTAxZmZmZDYzYTQ4Njg1Yzg4NiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAKQEAgLTUyLDE4ICs1MiwxMCBAQCBuYW1l
c3BhY2UgSlNDIHsKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFN0YXRlbWVu
dE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotdm9pZCBTdGF0ZW1lbnRO
b2RlOjpzZXRMb2MoaW50IGZpcnN0TGluZSwgaW50IGxhc3RMaW5lLCBpbnQgY29sdW1uKQotewot
ICAgIG1fbGluZU51bWJlciA9IGZpcnN0TGluZTsKLSAgICBtX2xhc3RMaW5lID0gbGFzdExpbmU7
Ci0gICAgbV9jb2x1bW5OdW1iZXIgPSBjb2x1bW47Ci19Ci0KIHZvaWQgU3RhdGVtZW50Tm9kZTo6
c2V0TG9jKGludCBmaXJzdExpbmUsIGludCBsYXN0TGluZSkKIHsKICAgICBtX2xpbmVOdW1iZXIg
PSBmaXJzdExpbmU7CiAgICAgbV9sYXN0TGluZSA9IGxhc3RMaW5lOwotICAgIG1fY29sdW1uTnVt
YmVyID0gMDsKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFNvdXJjZUVs
ZW1lbnRzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC04Myw4ICs3NSw4IEBA
IFN0YXRlbWVudE5vZGUqIFNvdXJjZUVsZW1lbnRzOjpzaW5nbGVTdGF0ZW1lbnQoKSBjb25zdAog
CiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gU2NvcGVOb2RlIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCiAKLVNjb3BlTm9kZTo6U2NvcGVOb2RlKEpTR2xvYmFsRGF0YSog
Z2xvYmFsRGF0YSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgYm9vbCBpblN0cmlj
dENvbnRleHQpCi0gICAgOiBTdGF0ZW1lbnROb2RlKGxvY2F0aW9uKQorU2NvcGVOb2RlOjpTY29w
ZU5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBpbnQgbGluZU51bWJlciwgYm9vbCBpblN0
cmljdENvbnRleHQpCisgICAgOiBTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIpCiAgICAgLCBQYXJz
ZXJBcmVuYVJlZkNvdW50ZWQoZ2xvYmFsRGF0YSkKICAgICAsIG1fZmVhdHVyZXMoaW5TdHJpY3RD
b250ZXh0ID8gU3RyaWN0TW9kZUZlYXR1cmUgOiBOb0ZlYXR1cmVzKQogICAgICwgbV9udW1Db25z
dGFudHMoMCkKQEAgLTkyLDggKzg0LDggQEAgU2NvcGVOb2RlOjpTY29wZU5vZGUoSlNHbG9iYWxE
YXRhKiBnbG9iYWxEYXRhLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLAogewogfQog
Ci1TY29wZU5vZGU6OlNjb3BlTm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgU291cmNl
RWxlbWVudHMqIGNoaWxkcmVuLCBWYXJTdGFjayogdmFyU3RhY2ssIEZ1bmN0aW9uU3RhY2sqIGZ1
bmNTdGFjaywgSWRlbnRpZmllclNldCYgY2FwdHVyZWRWYXJpYWJsZXMsIENvZGVGZWF0dXJlcyBm
ZWF0dXJlcywgaW50IG51bUNvbnN0YW50cykKLSAgICA6IFN0YXRlbWVudE5vZGUobG9jYXRpb24p
CitTY29wZU5vZGU6OlNjb3BlTm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGludCBsaW5l
TnVtYmVyLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIFNvdXJjZUVsZW1lbnRzKiBjaGlsZHJl
biwgVmFyU3RhY2sqIHZhclN0YWNrLCBGdW5jdGlvblN0YWNrKiBmdW5jU3RhY2ssIElkZW50aWZp
ZXJTZXQmIGNhcHR1cmVkVmFyaWFibGVzLCBDb2RlRmVhdHVyZXMgZmVhdHVyZXMsIGludCBudW1D
b25zdGFudHMpCisgICAgOiBTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIpCiAgICAgLCBQYXJzZXJB
cmVuYVJlZkNvdW50ZWQoZ2xvYmFsRGF0YSkKICAgICAsIG1fZmVhdHVyZXMoZmVhdHVyZXMpCiAg
ICAgLCBtX3NvdXJjZShzb3VyY2UpCkBAIC0xMTUsMTQgKzEwNywxNCBAQCBTdGF0ZW1lbnROb2Rl
KiBTY29wZU5vZGU6OnNpbmdsZVN0YXRlbWVudCgpIGNvbnN0CiAKIC8vIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLSBQcm9ncmFtTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQogCi1pbmxpbmUgUHJvZ3JhbU5vZGU6OlByb2dyYW1Ob2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFs
RGF0YSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgU291cmNlRWxlbWVudHMqIGNo
aWxkcmVuLCBWYXJTdGFjayogdmFyU3RhY2ssIEZ1bmN0aW9uU3RhY2sqIGZ1bmNTdGFjaywgSWRl
bnRpZmllclNldCYgY2FwdHVyZWRWYXJpYWJsZXMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwg
Q29kZUZlYXR1cmVzIGZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKQotICAgIDogU2NvcGVOb2Rl
KGdsb2JhbERhdGEsIGxvY2F0aW9uLCBzb3VyY2UsIGNoaWxkcmVuLCB2YXJTdGFjaywgZnVuY1N0
YWNrLCBjYXB0dXJlZFZhcmlhYmxlcywgZmVhdHVyZXMsIG51bUNvbnN0YW50cykKK2lubGluZSBQ
cm9ncmFtTm9kZTo6UHJvZ3JhbU5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBpbnQgbGlu
ZU51bWJlciwgU291cmNlRWxlbWVudHMqIGNoaWxkcmVuLCBWYXJTdGFjayogdmFyU3RhY2ssIEZ1
bmN0aW9uU3RhY2sqIGZ1bmNTdGFjaywgSWRlbnRpZmllclNldCYgY2FwdHVyZWRWYXJpYWJsZXMs
IGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBpbnQgbnVt
Q29uc3RhbnRzKQorICAgIDogU2NvcGVOb2RlKGdsb2JhbERhdGEsIGxpbmVOdW1iZXIsIHNvdXJj
ZSwgY2hpbGRyZW4sIHZhclN0YWNrLCBmdW5jU3RhY2ssIGNhcHR1cmVkVmFyaWFibGVzLCBmZWF0
dXJlcywgbnVtQ29uc3RhbnRzKQogewogfQogCi1QYXNzUmVmUHRyPFByb2dyYW1Ob2RlPiBQcm9n
cmFtTm9kZTo6Y3JlYXRlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiBsb2NhdGlvbiwgU291cmNlRWxlbWVudHMqIGNoaWxkcmVuLCBWYXJTdGFjayogdmFy
U3RhY2ssIEZ1bmN0aW9uU3RhY2sqIGZ1bmNTdGFjaywgSWRlbnRpZmllclNldCYgY2FwdHVyZWRW
YXJpYWJsZXMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgQ29kZUZlYXR1cmVzIGZlYXR1cmVz
LCBpbnQgbnVtQ29uc3RhbnRzKQorUGFzc1JlZlB0cjxQcm9ncmFtTm9kZT4gUHJvZ3JhbU5vZGU6
OmNyZWF0ZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGludCBsaW5lTnVtYmVyLCBTb3VyY2VF
bGVtZW50cyogY2hpbGRyZW4sIFZhclN0YWNrKiB2YXJTdGFjaywgRnVuY3Rpb25TdGFjayogZnVu
Y1N0YWNrLCBJZGVudGlmaWVyU2V0JiBjYXB0dXJlZFZhcmlhYmxlcywgY29uc3QgU291cmNlQ29k
ZSYgc291cmNlLCBDb2RlRmVhdHVyZXMgZmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpCiB7Ci0g
ICAgUmVmUHRyPFByb2dyYW1Ob2RlPiBub2RlID0gbmV3IFByb2dyYW1Ob2RlKGdsb2JhbERhdGEs
IGxvY2F0aW9uLCBjaGlsZHJlbiwgdmFyU3RhY2ssIGZ1bmNTdGFjaywgIGNhcHR1cmVkVmFyaWFi
bGVzLCBzb3VyY2UsIGZlYXR1cmVzLCBudW1Db25zdGFudHMpOworICAgIFJlZlB0cjxQcm9ncmFt
Tm9kZT4gbm9kZSA9IG5ldyBQcm9ncmFtTm9kZShnbG9iYWxEYXRhLCBsaW5lTnVtYmVyLCBjaGls
ZHJlbiwgdmFyU3RhY2ssIGZ1bmNTdGFjaywgIGNhcHR1cmVkVmFyaWFibGVzLCBzb3VyY2UsIGZl
YXR1cmVzLCBudW1Db25zdGFudHMpOwogCiAgICAgQVNTRVJUKG5vZGUtPm1fYXJlbmEubGFzdCgp
ID09IG5vZGUpOwogICAgIG5vZGUtPm1fYXJlbmEucmVtb3ZlTGFzdCgpOwpAQCAtMTMzLDE0ICsx
MjUsMTQgQEAgUGFzc1JlZlB0cjxQcm9ncmFtTm9kZT4gUHJvZ3JhbU5vZGU6OmNyZWF0ZShKU0ds
b2JhbERhdGEqIGdsb2JhbERhdGEsIGNvbnN0IEpTVG8KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tIEV2YWxOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLWlu
bGluZSBFdmFsTm9kZTo6RXZhbE5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBjb25zdCBK
U1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBTb3VyY2VFbGVtZW50cyogY2hpbGRyZW4sIFZhclN0
YWNrKiB2YXJTdGFjaywgRnVuY3Rpb25TdGFjayogZnVuY1N0YWNrLCBJZGVudGlmaWVyU2V0JiBj
YXB0dXJlZFZhcmlhYmxlcywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBDb2RlRmVhdHVyZXMg
ZmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpCi0gICAgOiBTY29wZU5vZGUoZ2xvYmFsRGF0YSwg
bG9jYXRpb24sIHNvdXJjZSwgY2hpbGRyZW4sIHZhclN0YWNrLCBmdW5jU3RhY2ssIGNhcHR1cmVk
VmFyaWFibGVzLCBmZWF0dXJlcywgbnVtQ29uc3RhbnRzKQoraW5saW5lIEV2YWxOb2RlOjpFdmFs
Tm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGludCBsaW5lTnVtYmVyLCBTb3VyY2VFbGVt
ZW50cyogY2hpbGRyZW4sIFZhclN0YWNrKiB2YXJTdGFjaywgRnVuY3Rpb25TdGFjayogZnVuY1N0
YWNrLCBJZGVudGlmaWVyU2V0JiBjYXB0dXJlZFZhcmlhYmxlcywgY29uc3QgU291cmNlQ29kZSYg
c291cmNlLCBDb2RlRmVhdHVyZXMgZmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpCisgICAgOiBT
Y29wZU5vZGUoZ2xvYmFsRGF0YSwgbGluZU51bWJlciwgc291cmNlLCBjaGlsZHJlbiwgdmFyU3Rh
Y2ssIGZ1bmNTdGFjaywgY2FwdHVyZWRWYXJpYWJsZXMsIGZlYXR1cmVzLCBudW1Db25zdGFudHMp
CiB7CiB9CiAKLVBhc3NSZWZQdHI8RXZhbE5vZGU+IEV2YWxOb2RlOjpjcmVhdGUoSlNHbG9iYWxE
YXRhKiBnbG9iYWxEYXRhLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBTb3VyY2VF
bGVtZW50cyogY2hpbGRyZW4sIFZhclN0YWNrKiB2YXJTdGFjaywgRnVuY3Rpb25TdGFjayogZnVu
Y1N0YWNrLCBJZGVudGlmaWVyU2V0JiBjYXB0dXJlZFZhcmlhYmxlcywgY29uc3QgU291cmNlQ29k
ZSYgc291cmNlLCBDb2RlRmVhdHVyZXMgZmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpCitQYXNz
UmVmUHRyPEV2YWxOb2RlPiBFdmFsTm9kZTo6Y3JlYXRlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0
YSwgaW50IGxpbmVOdW1iZXIsIFNvdXJjZUVsZW1lbnRzKiBjaGlsZHJlbiwgVmFyU3RhY2sqIHZh
clN0YWNrLCBGdW5jdGlvblN0YWNrKiBmdW5jU3RhY2ssIElkZW50aWZpZXJTZXQmIGNhcHR1cmVk
VmFyaWFibGVzLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIENvZGVGZWF0dXJlcyBmZWF0dXJl
cywgaW50IG51bUNvbnN0YW50cykKIHsKLSAgICBSZWZQdHI8RXZhbE5vZGU+IG5vZGUgPSBuZXcg
RXZhbE5vZGUoZ2xvYmFsRGF0YSwgbG9jYXRpb24sIGNoaWxkcmVuLCB2YXJTdGFjaywgZnVuY1N0
YWNrLCBjYXB0dXJlZFZhcmlhYmxlcywgc291cmNlLCBmZWF0dXJlcywgbnVtQ29uc3RhbnRzKTsK
KyAgICBSZWZQdHI8RXZhbE5vZGU+IG5vZGUgPSBuZXcgRXZhbE5vZGUoZ2xvYmFsRGF0YSwgbGlu
ZU51bWJlciwgY2hpbGRyZW4sIHZhclN0YWNrLCBmdW5jU3RhY2ssIGNhcHR1cmVkVmFyaWFibGVz
LCBzb3VyY2UsIGZlYXR1cmVzLCBudW1Db25zdGFudHMpOwogCiAgICAgQVNTRVJUKG5vZGUtPm1f
YXJlbmEubGFzdCgpID09IG5vZGUpOwogICAgIG5vZGUtPm1fYXJlbmEucmVtb3ZlTGFzdCgpOwpA
QCAtMTU3LDEzICsxNDksMTMgQEAgRnVuY3Rpb25QYXJhbWV0ZXJzOjpGdW5jdGlvblBhcmFtZXRl
cnMoUGFyYW1ldGVyTm9kZSogZmlyc3RQYXJhbWV0ZXIpCiAgICAgICAgIGFwcGVuZChwYXJhbWV0
ZXItPmlkZW50KCkpOwogfQogCi1pbmxpbmUgRnVuY3Rpb25Cb2R5Tm9kZTo6RnVuY3Rpb25Cb2R5
Tm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9j
YXRpb24sIGJvb2wgaW5TdHJpY3RDb250ZXh0KQotICAgIDogU2NvcGVOb2RlKGdsb2JhbERhdGEs
IGxvY2F0aW9uLCBpblN0cmljdENvbnRleHQpCitpbmxpbmUgRnVuY3Rpb25Cb2R5Tm9kZTo6RnVu
Y3Rpb25Cb2R5Tm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGludCBsaW5lTnVtYmVyLCBi
b29sIGluU3RyaWN0Q29udGV4dCkKKyAgICA6IFNjb3BlTm9kZShnbG9iYWxEYXRhLCBsaW5lTnVt
YmVyLCBpblN0cmljdENvbnRleHQpCiB7CiB9CiAKLWlubGluZSBGdW5jdGlvbkJvZHlOb2RlOjpG
dW5jdGlvbkJvZHlOb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiBsb2NhdGlvbiwgU291cmNlRWxlbWVudHMqIGNoaWxkcmVuLCBWYXJTdGFjayogdmFy
U3RhY2ssIEZ1bmN0aW9uU3RhY2sqIGZ1bmNTdGFjaywgSWRlbnRpZmllclNldCYgY2FwdHVyZWRW
YXJpYWJsZXMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIENvZGVGZWF0dXJlcyBmZWF0
dXJlcywgaW50IG51bUNvbnN0YW50cykKLSAgICA6IFNjb3BlTm9kZShnbG9iYWxEYXRhLCBsb2Nh
dGlvbiwgc291cmNlQ29kZSwgY2hpbGRyZW4sIHZhclN0YWNrLCBmdW5jU3RhY2ssIGNhcHR1cmVk
VmFyaWFibGVzLCBmZWF0dXJlcywgbnVtQ29uc3RhbnRzKQoraW5saW5lIEZ1bmN0aW9uQm9keU5v
ZGU6OkZ1bmN0aW9uQm9keU5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBpbnQgbGluZU51
bWJlciwgU291cmNlRWxlbWVudHMqIGNoaWxkcmVuLCBWYXJTdGFjayogdmFyU3RhY2ssIEZ1bmN0
aW9uU3RhY2sqIGZ1bmNTdGFjaywgSWRlbnRpZmllclNldCYgY2FwdHVyZWRWYXJpYWJsZXMsIGNv
bnN0IFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIENvZGVGZWF0dXJlcyBmZWF0dXJlcywgaW50IG51
bUNvbnN0YW50cykKKyAgICA6IFNjb3BlTm9kZShnbG9iYWxEYXRhLCBsaW5lTnVtYmVyLCBzb3Vy
Y2VDb2RlLCBjaGlsZHJlbiwgdmFyU3RhY2ssIGZ1bmNTdGFjaywgY2FwdHVyZWRWYXJpYWJsZXMs
IGZlYXR1cmVzLCBudW1Db25zdGFudHMpCiB7CiB9CiAKQEAgLTE4MCwxNCArMTcyLDE0IEBAIHZv
aWQgRnVuY3Rpb25Cb2R5Tm9kZTo6ZmluaXNoUGFyc2luZyhQYXNzUmVmUHRyPEZ1bmN0aW9uUGFy
YW1ldGVycz4gcGFyYW1ldGVycywKICAgICBtX2lkZW50ID0gaWRlbnQ7CiB9CiAKLUZ1bmN0aW9u
Qm9keU5vZGUqIEZ1bmN0aW9uQm9keU5vZGU6OmNyZWF0ZShKU0dsb2JhbERhdGEqIGdsb2JhbERh
dGEsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGJvb2wgaW5TdHJpY3RDb250ZXh0
KQorRnVuY3Rpb25Cb2R5Tm9kZSogRnVuY3Rpb25Cb2R5Tm9kZTo6Y3JlYXRlKEpTR2xvYmFsRGF0
YSogZ2xvYmFsRGF0YSwgaW50IGxpbmVOdW1iZXIsIGJvb2wgaW5TdHJpY3RDb250ZXh0KQogewot
ICAgIHJldHVybiBuZXcgRnVuY3Rpb25Cb2R5Tm9kZShnbG9iYWxEYXRhLCBsb2NhdGlvbiwgaW5T
dHJpY3RDb250ZXh0KTsKKyAgICByZXR1cm4gbmV3IEZ1bmN0aW9uQm9keU5vZGUoZ2xvYmFsRGF0
YSwgbGluZU51bWJlciwgaW5TdHJpY3RDb250ZXh0KTsKIH0KIAotUGFzc1JlZlB0cjxGdW5jdGlv
bkJvZHlOb2RlPiBGdW5jdGlvbkJvZHlOb2RlOjpjcmVhdGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxE
YXRhLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBTb3VyY2VFbGVtZW50cyogY2hp
bGRyZW4sIFZhclN0YWNrKiB2YXJTdGFjaywgRnVuY3Rpb25TdGFjayogZnVuY1N0YWNrLCBJZGVu
dGlmaWVyU2V0JiBjYXB0dXJlZFZhcmlhYmxlcywgY29uc3QgU291cmNlQ29kZSYgc291cmNlQ29k
ZSwgQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKQorUGFzc1JlZlB0cjxG
dW5jdGlvbkJvZHlOb2RlPiBGdW5jdGlvbkJvZHlOb2RlOjpjcmVhdGUoSlNHbG9iYWxEYXRhKiBn
bG9iYWxEYXRhLCBpbnQgbGluZU51bWJlciwgU291cmNlRWxlbWVudHMqIGNoaWxkcmVuLCBWYXJT
dGFjayogdmFyU3RhY2ssIEZ1bmN0aW9uU3RhY2sqIGZ1bmNTdGFjaywgSWRlbnRpZmllclNldCYg
Y2FwdHVyZWRWYXJpYWJsZXMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIENvZGVGZWF0
dXJlcyBmZWF0dXJlcywgaW50IG51bUNvbnN0YW50cykKIHsKLSAgICBSZWZQdHI8RnVuY3Rpb25C
b2R5Tm9kZT4gbm9kZSA9IG5ldyBGdW5jdGlvbkJvZHlOb2RlKGdsb2JhbERhdGEsIGxvY2F0aW9u
LCBjaGlsZHJlbiwgdmFyU3RhY2ssIGZ1bmNTdGFjaywgY2FwdHVyZWRWYXJpYWJsZXMsIHNvdXJj
ZUNvZGUsIGZlYXR1cmVzLCBudW1Db25zdGFudHMpOworICAgIFJlZlB0cjxGdW5jdGlvbkJvZHlO
b2RlPiBub2RlID0gbmV3IEZ1bmN0aW9uQm9keU5vZGUoZ2xvYmFsRGF0YSwgbGluZU51bWJlciwg
Y2hpbGRyZW4sIHZhclN0YWNrLCBmdW5jU3RhY2ssIGNhcHR1cmVkVmFyaWFibGVzLCBzb3VyY2VD
b2RlLCBmZWF0dXJlcywgbnVtQ29uc3RhbnRzKTsKIAogICAgIEFTU0VSVChub2RlLT5tX2FyZW5h
Lmxhc3QoKSA9PSBub2RlKTsKICAgICBub2RlLT5tX2FyZW5hLnJlbW92ZUxhc3QoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAppbmRleCBlZDFhODVhYWZiYzg5Y2UxOGY0NTEyMDA5
ODRkY2JhMTJlZDc5YWY5Li41YjE1YmU0NGNjZWU2ODAwMDYxMjFkNmViZGZiNTZmMGI5ZTZkNGUw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCkBAIC0xMzAsNyArMTMwLDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBOb2RlIDogcHVibGljIFBhcnNlckFyZW5hRnJl
ZWFibGUgewogICAgIHByb3RlY3RlZDoKLSAgICAgICAgTm9kZShjb25zdCBKU1Rva2VuTG9jYXRp
b24mKTsKKyAgICAgICAgTm9kZShpbnQpOwogCiAgICAgcHVibGljOgogICAgICAgICB2aXJ0dWFs
IH5Ob2RlKCkgeyB9CkBAIC0xMzksMTYgKzEzOSwxMyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAg
ICAgICBpbnQgbGluZU5vKCkgY29uc3QgeyByZXR1cm4gbV9saW5lTnVtYmVyOyB9CiAKLSAgICAg
ICAgaW50IGNvbHVtbk5vKCkgY29uc3QgeyByZXR1cm4gbV9jb2x1bW5OdW1iZXI7IH0KLQogICAg
IHByb3RlY3RlZDoKICAgICAgICAgaW50IG1fbGluZU51bWJlcjsKLSAgICAgICAgaW50IG1fY29s
dW1uTnVtYmVyOwogICAgIH07CiAKICAgICBjbGFzcyBFeHByZXNzaW9uTm9kZSA6IHB1YmxpYyBO
b2RlIHsKICAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIEV4cHJlc3Npb25Ob2RlKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYsIFJlc3VsdFR5cGUgPSBSZXN1bHRUeXBlOjp1bmtub3duVHlwZSgpKTsKKyAg
ICAgICAgRXhwcmVzc2lvbk5vZGUoaW50LCBSZXN1bHRUeXBlID0gUmVzdWx0VHlwZTo6dW5rbm93
blR5cGUoKSk7CiAKICAgICBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc051bWJlcigp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CkBAIC0xNzgsMTQgKzE3NSwxMiBAQCBuYW1lc3BhY2Ug
SlNDIHsKIAogICAgIGNsYXNzIFN0YXRlbWVudE5vZGUgOiBwdWJsaWMgTm9kZSB7CiAgICAgcHJv
dGVjdGVkOgotICAgICAgICBTdGF0ZW1lbnROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYpOwor
ICAgICAgICBTdGF0ZW1lbnROb2RlKGludCk7CiAKICAgICBwdWJsaWM6CiAgICAgICAgIEpTX0VY
UE9SVF9QUklWQVRFIHZvaWQgc2V0TG9jKGludCBmaXJzdExpbmUsIGludCBsYXN0TGluZSk7Ci0g
ICAgICAgIHZvaWQgc2V0TG9jKGludCBmaXJzdExpbmUsIGludCBsYXN0TGluZSwgaW50IGNvbHVt
bik7CiAgICAgICAgIGludCBmaXJzdExpbmUoKSBjb25zdCB7IHJldHVybiBsaW5lTm8oKTsgfQog
ICAgICAgICBpbnQgbGFzdExpbmUoKSBjb25zdCB7IHJldHVybiBtX2xhc3RMaW5lOyB9Ci0gICAg
ICAgIGludCBjb2x1bW4oKSBjb25zdCB7IHJldHVybiBjb2x1bW5ObygpO30KIAogICAgICAgICB2
aXJ0dWFsIGJvb2wgaXNFbXB0eVN0YXRlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAg
ICAgICAgIHZpcnR1YWwgYm9vbCBpc1JldHVybk5vZGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQpAQCAtMTk5LDcgKzE5NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgTnVsbE5v
ZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgTnVsbE5v
ZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJik7CisgICAgICAgIE51bGxOb2RlKGludCk7CiAKICAg
ICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC0yMDksNyArMjA0LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBCb29sZWFuTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9u
Tm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBCb29sZWFuTm9kZShjb25zdCBKU1Rva2VuTG9j
YXRpb24mLCBib29sIHZhbHVlKTsKKyAgICAgICAgQm9vbGVhbk5vZGUoaW50LCBib29sIHZhbHVl
KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVj
b2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTIyMSw3ICsyMTYs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIE51bWJlck5vZGUgOiBwdWJsaWMgRXhw
cmVzc2lvbk5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgTnVtYmVyTm9kZShjb25zdCBKU1Rv
a2VuTG9jYXRpb24mLCBkb3VibGUgdmFsdWUpOworICAgICAgICBOdW1iZXJOb2RlKGludCwgZG91
YmxlIHZhbHVlKTsKIAogICAgICAgICBkb3VibGUgdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3Zh
bHVlOyB9CiAgICAgICAgIHZvaWQgc2V0VmFsdWUoZG91YmxlIHZhbHVlKSB7IG1fdmFsdWUgPSB2
YWx1ZTsgfQpAQCAtMjM3LDcgKzIzMiw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3Mg
U3RyaW5nTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSB7CiAgICAgcHVibGljOgotICAgICAg
ICBTdHJpbmdOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXImKTsK
KyAgICAgICAgU3RyaW5nTm9kZShpbnQsIGNvbnN0IElkZW50aWZpZXImKTsKIAogICAgICAgICBj
b25zdCBJZGVudGlmaWVyJiB2YWx1ZSgpIHsgcmV0dXJuIG1fdmFsdWU7IH0KIApAQCAtMzQ3LDcg
KzM0Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgUmVnRXhwTm9kZSA6IHB1Ymxp
YyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRhIHsKICAgICBw
dWJsaWM6Ci0gICAgICAgIFJlZ0V4cE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3Qg
SWRlbnRpZmllciYgcGF0dGVybiwgY29uc3QgSWRlbnRpZmllciYgZmxhZ3MpOworICAgICAgICBS
ZWdFeHBOb2RlKGludCwgY29uc3QgSWRlbnRpZmllciYgcGF0dGVybiwgY29uc3QgSWRlbnRpZmll
ciYgZmxhZ3MpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBl
bWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtMzU4
LDcgKzM1Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgVGhpc05vZGUgOiBwdWJs
aWMgRXhwcmVzc2lvbk5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgVGhpc05vZGUoY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJik7CisgICAgICAgIFRoaXNOb2RlKGludCk7CiAKICAgICBwcml2YXRl
OgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVy
YXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC0zNjYsNyArMzYxLDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAKICAgICBjbGFzcyBSZXNvbHZlTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSB7CiAg
ICAgcHVibGljOgotICAgICAgICBSZXNvbHZlTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBj
b25zdCBJZGVudGlmaWVyJiwgaW50IHN0YXJ0T2Zmc2V0KTsKKyAgICAgICAgUmVzb2x2ZU5vZGUo
aW50LCBjb25zdCBJZGVudGlmaWVyJiwgaW50IHN0YXJ0T2Zmc2V0KTsKIAogICAgICAgICBjb25z
dCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudDsgfQogCkBA
IC0zOTgsMTEgKzM5MywxMSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEFycmF5Tm9k
ZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBBcnJheU5v
ZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50IGVsaXNpb24pOwotICAgICAgICBBcnJheU5v
ZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRWxlbWVudE5vZGUqKTsKLSAgICAgICAgQXJyYXlO
b2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCBlbGlzaW9uLCBFbGVtZW50Tm9kZSopOwor
ICAgICAgICBBcnJheU5vZGUoaW50LCBpbnQgZWxpc2lvbik7CisgICAgICAgIEFycmF5Tm9kZShp
bnQsIEVsZW1lbnROb2RlKik7CisgICAgICAgIEFycmF5Tm9kZShpbnQsIGludCBlbGlzaW9uLCBF
bGVtZW50Tm9kZSopOwogCi0gICAgICAgIEFyZ3VtZW50TGlzdE5vZGUqIHRvQXJndW1lbnRMaXN0
KEpTR2xvYmFsRGF0YSosIGludCwgaW50KSBjb25zdDsKKyAgICAgICAgQXJndW1lbnRMaXN0Tm9k
ZSogdG9Bcmd1bWVudExpc3QoSlNHbG9iYWxEYXRhKiwgaW50KSBjb25zdDsKIAogICAgIHByaXZh
dGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTQzMyw4ICs0MjgsOCBAQCBuYW1lc3BhY2Ug
SlNDIHsKIAogICAgIGNsYXNzIFByb3BlcnR5TGlzdE5vZGUgOiBwdWJsaWMgTm9kZSB7CiAgICAg
cHVibGljOgotICAgICAgICBQcm9wZXJ0eUxpc3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYs
IFByb3BlcnR5Tm9kZSopOwotICAgICAgICBQcm9wZXJ0eUxpc3ROb2RlKGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYsIFByb3BlcnR5Tm9kZSosIFByb3BlcnR5TGlzdE5vZGUqKTsKKyAgICAgICAgUHJv
cGVydHlMaXN0Tm9kZShpbnQsIFByb3BlcnR5Tm9kZSopOworICAgICAgICBQcm9wZXJ0eUxpc3RO
b2RlKGludCwgUHJvcGVydHlOb2RlKiwgUHJvcGVydHlMaXN0Tm9kZSopOwogCiAgICAgICAgIHZp
cnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0
ZXJJRCogPSAwKTsKIApAQCAtNDQ1LDggKzQ0MCw4IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAg
Y2xhc3MgT2JqZWN0TGl0ZXJhbE5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUgewogICAgIHB1
YmxpYzoKLSAgICAgICAgT2JqZWN0TGl0ZXJhbE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJik7
Ci0gICAgICAgIE9iamVjdExpdGVyYWxOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIFByb3Bl
cnR5TGlzdE5vZGUqKTsKKyAgICAgICAgT2JqZWN0TGl0ZXJhbE5vZGUoaW50KTsKKyAgICAgICAg
T2JqZWN0TGl0ZXJhbE5vZGUoaW50LCBQcm9wZXJ0eUxpc3ROb2RlKik7CiAKICAgICBwcml2YXRl
OgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVy
YXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC00NTYsNyArNDUxLDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgCiAgICAgY2xhc3MgQnJhY2tldEFjY2Vzc29yTm9kZSA6IHB1YmxpYyBFeHByZXNz
aW9uTm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJsaWM6Ci0g
ICAgICAgIEJyYWNrZXRBY2Nlc3Nvck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVz
c2lvbk5vZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBzdWJzY3JpcHQsIGJvb2wgc3Vic2NyaXB0
SGFzQXNzaWdubWVudHMpOworICAgICAgICBCcmFja2V0QWNjZXNzb3JOb2RlKGludCwgRXhwcmVz
c2lvbk5vZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBzdWJzY3JpcHQsIGJvb2wgc3Vic2NyaXB0
SGFzQXNzaWdubWVudHMpOwogCiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBiYXNlKCkgY29uc3Qg
eyByZXR1cm4gbV9iYXNlOyB9CiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBzdWJzY3JpcHQoKSBj
b25zdCB7IHJldHVybiBtX3N1YnNjcmlwdDsgfQpAQCAtNDc0LDcgKzQ2OSw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogCiAgICAgY2xhc3MgRG90QWNjZXNzb3JOb2RlIDogcHVibGljIEV4cHJlc3Npb25O
b2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAg
ICAgRG90QWNjZXNzb3JOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2Rl
KiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJik7CisgICAgICAgIERvdEFjY2Vzc29yTm9kZShpbnQs
IEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJik7CiAKICAgICAgICAgRXhw
cmVzc2lvbk5vZGUqIGJhc2UoKSBjb25zdCB7IHJldHVybiBtX2Jhc2U7IH0KICAgICAgICAgY29u
c3QgSWRlbnRpZmllciYgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnQ7IH0KQEAg
LTQ5MSw4ICs0ODYsOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEFyZ3VtZW50TGlz
dE5vZGUgOiBwdWJsaWMgTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBBcmd1bWVudExpc3RO
b2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKik7Ci0gICAgICAgIEFy
Z3VtZW50TGlzdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgQXJndW1lbnRMaXN0Tm9kZSos
IEV4cHJlc3Npb25Ob2RlKik7CisgICAgICAgIEFyZ3VtZW50TGlzdE5vZGUoaW50LCBFeHByZXNz
aW9uTm9kZSopOworICAgICAgICBBcmd1bWVudExpc3ROb2RlKGludCwgQXJndW1lbnRMaXN0Tm9k
ZSosIEV4cHJlc3Npb25Ob2RlKik7CiAKICAgICAgICAgQXJndW1lbnRMaXN0Tm9kZSogbV9uZXh0
OwogICAgICAgICBFeHByZXNzaW9uTm9kZSogbV9leHByOwpAQCAtNTExLDggKzUwNiw4IEBAIG5h
bWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgTmV3RXhwck5vZGUgOiBwdWJsaWMgRXhwcmVzc2lv
bk5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgotICAg
ICAgICBOZXdFeHByTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSop
OwotICAgICAgICBOZXdFeHByTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9u
Tm9kZSosIEFyZ3VtZW50c05vZGUqKTsKKyAgICAgICAgTmV3RXhwck5vZGUoaW50LCBFeHByZXNz
aW9uTm9kZSopOworICAgICAgICBOZXdFeHByTm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiwgQXJn
dW1lbnRzTm9kZSopOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklE
KiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAt
NTIzLDcgKzUxOCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgRXZhbEZ1bmN0aW9u
Q2FsbE5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNz
aW9uRGF0YSB7CiAgICAgcHVibGljOgotICAgICAgICBFdmFsRnVuY3Rpb25DYWxsTm9kZShjb25z
dCBKU1Rva2VuTG9jYXRpb24mLCBBcmd1bWVudHNOb2RlKiwgdW5zaWduZWQgZGl2b3QsIHVuc2ln
bmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOworICAgICAgICBFdmFsRnVuY3Rp
b25DYWxsTm9kZShpbnQsIEFyZ3VtZW50c05vZGUqLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQg
c3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CiAKICAgICBwcml2YXRlOgogICAgICAg
ICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJl
Z2lzdGVySUQqID0gMCk7CkBAIC01MzMsNyArNTI4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAg
ICBjbGFzcyBGdW5jdGlvbkNhbGxWYWx1ZU5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1
YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgotICAgICAgICBGdW5j
dGlvbkNhbGxWYWx1ZU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUq
LCBBcmd1bWVudHNOb2RlKiwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1
bnNpZ25lZCBlbmRPZmZzZXQpOworICAgICAgICBGdW5jdGlvbkNhbGxWYWx1ZU5vZGUoaW50LCBF
eHByZXNzaW9uTm9kZSosIEFyZ3VtZW50c05vZGUqLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQg
c3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CiAKICAgICBwcml2YXRlOgogICAgICAg
ICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJl
Z2lzdGVySUQqID0gMCk7CkBAIC01NDQsNyArNTM5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAg
ICBjbGFzcyBGdW5jdGlvbkNhbGxSZXNvbHZlTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwg
cHVibGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEZ1
bmN0aW9uQ2FsbFJlc29sdmVOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50
aWZpZXImLCBBcmd1bWVudHNOb2RlKiwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zm
c2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOworICAgICAgICBGdW5jdGlvbkNhbGxSZXNvbHZlTm9k
ZShpbnQsIGNvbnN0IElkZW50aWZpZXImLCBBcmd1bWVudHNOb2RlKiwgdW5zaWduZWQgZGl2b3Qs
IHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOwogCiAgICAgcHJpdmF0
ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtNTU1LDcgKzU1MCw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgIAogICAgIGNsYXNzIEZ1bmN0aW9uQ2FsbEJyYWNrZXROb2RlIDogcHVibGljIEV4
cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlU3ViRXhwcmVzc2lvbkRhdGEgewogICAgIHB1
YmxpYzoKLSAgICAgICAgRnVuY3Rpb25DYWxsQnJhY2tldE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBzdWJzY3JpcHQsIEFy
Z3VtZW50c05vZGUqLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2ln
bmVkIGVuZE9mZnNldCk7CisgICAgICAgIEZ1bmN0aW9uQ2FsbEJyYWNrZXROb2RlKGludCwgRXhw
cmVzc2lvbk5vZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBzdWJzY3JpcHQsIEFyZ3VtZW50c05v
ZGUqLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9m
ZnNldCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC01NjcsNyAr
NTYyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBGdW5jdGlvbkNhbGxEb3ROb2Rl
IDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlU3ViRXhwcmVzc2lvbkRh
dGEgewogICAgIHB1YmxpYzoKLSAgICAgICAgRnVuY3Rpb25DYWxsRG90Tm9kZShjb25zdCBKU1Rv
a2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYsIEFy
Z3VtZW50c05vZGUqLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2ln
bmVkIGVuZE9mZnNldCk7CisgICAgICAgIEZ1bmN0aW9uQ2FsbERvdE5vZGUoaW50LCBFeHByZXNz
aW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYsIEFyZ3VtZW50c05vZGUqLCB1bnNpZ25l
ZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CiAKICAg
ICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC01ODAsNyArNTc1LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBDYWxsRnVuY3Rpb25DYWxsRG90Tm9kZSA6IHB1Ymxp
YyBGdW5jdGlvbkNhbGxEb3ROb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIENhbGxGdW5jdGlv
bkNhbGxEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBiYXNl
LCBjb25zdCBJZGVudGlmaWVyJiwgQXJndW1lbnRzTm9kZSosIHVuc2lnbmVkIGRpdm90LCB1bnNp
Z25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKKyAgICAgICAgQ2FsbEZ1bmN0
aW9uQ2FsbERvdE5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmll
ciYsIEFyZ3VtZW50c05vZGUqLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQs
IHVuc2lnbmVkIGVuZE9mZnNldCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJl
Z2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0g
MCk7CkBAIC01ODgsNyArNTgzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgCiAgICAgY2xhc3Mg
QXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlIDogcHVibGljIEZ1bmN0aW9uQ2FsbERvdE5vZGUgewog
ICAgIHB1YmxpYzoKLSAgICAgICAgQXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgQXJn
dW1lbnRzTm9kZSosIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWdu
ZWQgZW5kT2Zmc2V0KTsKKyAgICAgICAgQXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlKGludCwgRXhw
cmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBBcmd1bWVudHNOb2RlKiwgdW5z
aWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOwog
CiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtNTk2LDcgKzU5MSw3IEBA
IG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgUHJlUG9zdFJlc29sdmVOb2RlIDogcHVibGlj
IEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgewogICAgIHB1
YmxpYzoKLSAgICAgICAgUHJlUG9zdFJlc29sdmVOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYs
IGNvbnN0IElkZW50aWZpZXImLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQs
IHVuc2lnbmVkIGVuZE9mZnNldCk7CisgICAgICAgIFByZVBvc3RSZXNvbHZlTm9kZShpbnQsIGNv
bnN0IElkZW50aWZpZXImLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVu
c2lnbmVkIGVuZE9mZnNldCk7CiAKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIGNvbnN0IElkZW50
aWZpZXImIG1faWRlbnQ7CkBAIC02MDQsNyArNTk5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAg
ICBjbGFzcyBQb3N0Zml4UmVzb2x2ZU5vZGUgOiBwdWJsaWMgUHJlUG9zdFJlc29sdmVOb2RlIHsK
ICAgICBwdWJsaWM6Ci0gICAgICAgIFBvc3RmaXhSZXNvbHZlTm9kZShjb25zdCBKU1Rva2VuTG9j
YXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiwgT3BlcmF0b3IsIHVuc2lnbmVkIGRpdm90LCB1bnNp
Z25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKKyAgICAgICAgUG9zdGZpeFJl
c29sdmVOb2RlKGludCwgY29uc3QgSWRlbnRpZmllciYsIE9wZXJhdG9yLCB1bnNpZ25lZCBkaXZv
dCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CiAKICAgICBwcml2
YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC02MTQsNyArNjA5LDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAKICAgICBjbGFzcyBQb3N0Zml4QnJhY2tldE5vZGUgOiBwdWJsaWMgRXhwcmVzc2lv
bk5vZGUsIHB1YmxpYyBUaHJvd2FibGVTdWJFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgot
ICAgICAgICBQb3N0Zml4QnJhY2tldE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVz
c2lvbk5vZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBzdWJzY3JpcHQsIE9wZXJhdG9yLCB1bnNp
Z25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7Cisg
ICAgICAgIFBvc3RmaXhCcmFja2V0Tm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHBy
ZXNzaW9uTm9kZSogc3Vic2NyaXB0LCBPcGVyYXRvciwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVk
IHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOwogCiAgICAgcHJpdmF0ZToKICAgICAg
ICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBS
ZWdpc3RlcklEKiA9IDApOwpAQCAtNjI2LDcgKzYyMSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAg
ICAgY2xhc3MgUG9zdGZpeERvdE5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBU
aHJvd2FibGVTdWJFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgotICAgICAgICBQb3N0Zml4
RG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29u
c3QgSWRlbnRpZmllciYsIE9wZXJhdG9yLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRP
ZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CisgICAgICAgIFBvc3RmaXhEb3ROb2RlKGludCwg
RXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBPcGVyYXRvciwgdW5zaWdu
ZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOwogCiAg
ICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtNjM4LDcgKzYzMyw3IEBAIG5h
bWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgUG9zdGZpeEVycm9yTm9kZSA6IHB1YmxpYyBFeHBy
ZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJsZVN1YkV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJs
aWM6Ci0gICAgICAgIFBvc3RmaXhFcnJvck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgT3Bl
cmF0b3IsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5k
T2Zmc2V0KTsKKyAgICAgICAgUG9zdGZpeEVycm9yTm9kZShpbnQsIE9wZXJhdG9yLCB1bnNpZ25l
ZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CiAKICAg
ICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC02NDgsNyArNjQzLDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBEZWxldGVSZXNvbHZlTm9kZSA6IHB1YmxpYyBFeHBy
ZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJsaWM6
Ci0gICAgICAgIERlbGV0ZVJlc29sdmVOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0
IElkZW50aWZpZXImLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2ln
bmVkIGVuZE9mZnNldCk7CisgICAgICAgIERlbGV0ZVJlc29sdmVOb2RlKGludCwgY29uc3QgSWRl
bnRpZmllciYsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQg
ZW5kT2Zmc2V0KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCog
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTY1
OCw3ICs2NTMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIERlbGV0ZUJyYWNrZXRO
b2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRh
dGEgewogICAgIHB1YmxpYzoKLSAgICAgICAgRGVsZXRlQnJhY2tldE5vZGUoY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBzdWJzY3Jp
cHQsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zm
c2V0KTsKKyAgICAgICAgRGVsZXRlQnJhY2tldE5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSogYmFz
ZSwgRXhwcmVzc2lvbk5vZGUqIHN1YnNjcmlwdCwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0
YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAg
dmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdp
c3RlcklEKiA9IDApOwpAQCAtNjY5LDcgKzY2NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAg
Y2xhc3MgRGVsZXRlRG90Tm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93
YWJsZUV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIERlbGV0ZURvdE5vZGUo
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50
aWZpZXImLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVu
ZE9mZnNldCk7CisgICAgICAgIERlbGV0ZURvdE5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSogYmFz
ZSwgY29uc3QgSWRlbnRpZmllciYsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNl
dCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwg
UmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCog
PSAwKTsKQEAgLTY4MCw3ICs2NzUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIERl
bGV0ZVZhbHVlTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSB7CiAgICAgcHVibGljOgotICAg
ICAgICBEZWxldGVWYWx1ZU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5v
ZGUqKTsKKyAgICAgICAgRGVsZXRlVmFsdWVOb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqKTsKIAog
ICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTY5MCw3ICs2ODUsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFZvaWROb2RlIDogcHVibGljIEV4cHJlc3Npb25O
b2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFZvaWROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYsIEV4cHJlc3Npb25Ob2RlKik7CisgICAgICAgIFZvaWROb2RlKGludCwgRXhwcmVzc2lvbk5v
ZGUqKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTcwMCw3ICs2
OTUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFR5cGVPZlJlc29sdmVOb2RlIDog
cHVibGljIEV4cHJlc3Npb25Ob2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFR5cGVPZlJlc29s
dmVOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXImKTsKKyAgICAg
ICAgVHlwZU9mUmVzb2x2ZU5vZGUoaW50LCBjb25zdCBJZGVudGlmaWVyJik7CiAKICAgICAgICAg
Y29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnQ7IH0K
IApAQCAtNzEyLDcgKzcwNyw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgVHlwZU9m
VmFsdWVOb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAg
IFR5cGVPZlZhbHVlTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSop
OworICAgICAgICBUeXBlT2ZWYWx1ZU5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSopOwogCiAgICAg
cHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNv
ZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtNzIyLDcgKzcxNyw3IEBAIG5hbWVz
cGFjZSBKU0MgewogCiAgICAgY2xhc3MgUHJlZml4UmVzb2x2ZU5vZGUgOiBwdWJsaWMgUHJlUG9z
dFJlc29sdmVOb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFByZWZpeFJlc29sdmVOb2RlKGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXImLCBPcGVyYXRvciwgdW5zaWdu
ZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOworICAg
ICAgICBQcmVmaXhSZXNvbHZlTm9kZShpbnQsIGNvbnN0IElkZW50aWZpZXImLCBPcGVyYXRvciwg
dW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQp
OwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtNzMyLDcgKzcyNyw3
IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgUHJlZml4QnJhY2tldE5vZGUgOiBwdWJs
aWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVQcmVmaXhlZFN1YkV4cHJlc3Npb25E
YXRhIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFByZWZpeEJyYWNrZXROb2RlKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2Ny
aXB0LCBPcGVyYXRvciwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNp
Z25lZCBlbmRPZmZzZXQpOworICAgICAgICBQcmVmaXhCcmFja2V0Tm9kZShpbnQsIEV4cHJlc3Np
b25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCBPcGVyYXRvciwgdW5zaWdu
ZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOwogCiAg
ICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtNzQ0LDcgKzczOSw3IEBAIG5h
bWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgUHJlZml4RG90Tm9kZSA6IHB1YmxpYyBFeHByZXNz
aW9uTm9kZSwgcHVibGljIFRocm93YWJsZVByZWZpeGVkU3ViRXhwcmVzc2lvbkRhdGEgewogICAg
IHB1YmxpYzoKLSAgICAgICAgUHJlZml4RG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBF
eHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYsIE9wZXJhdG9yLCB1bnNpZ25l
ZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CisgICAg
ICAgIFByZWZpeERvdE5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRp
ZmllciYsIE9wZXJhdG9yLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVu
c2lnbmVkIGVuZE9mZnNldCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lz
dGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7
CkBAIC03NTYsNyArNzUxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBQcmVmaXhF
cnJvck5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNz
aW9uRGF0YSB7CiAgICAgcHVibGljOgotICAgICAgICBQcmVmaXhFcnJvck5vZGUoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiwgT3BlcmF0b3IsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9m
ZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKKyAgICAgICAgUHJlZml4RXJyb3JOb2RlKGludCwg
T3BlcmF0b3IsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQg
ZW5kT2Zmc2V0KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCog
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTc2
Niw3ICs3NjEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFVuYXJ5T3BOb2RlIDog
cHVibGljIEV4cHJlc3Npb25Ob2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFVuYXJ5T3BOb2Rl
KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIFJlc3VsdFR5cGUsIEV4cHJlc3Npb25Ob2RlKiwgT3Bj
b2RlSUQpOworICAgICAgICBVbmFyeU9wTm9kZShpbnQsIFJlc3VsdFR5cGUsIEV4cHJlc3Npb25O
b2RlKiwgT3Bjb2RlSUQpOwogCiAgICAgcHJvdGVjdGVkOgogICAgICAgICBFeHByZXNzaW9uTm9k
ZSogZXhwcigpIHsgcmV0dXJuIG1fZXhwcjsgfQpAQCAtNzgzLDcgKzc3OCw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogCiAgICAgY2xhc3MgVW5hcnlQbHVzTm9kZSA6IHB1YmxpYyBVbmFyeU9wTm9kZSB7
CiAgICAgcHVibGljOgotICAgICAgICBVbmFyeVBsdXNOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYsIEV4cHJlc3Npb25Ob2RlKik7CisgICAgICAgIFVuYXJ5UGx1c05vZGUoaW50LCBFeHByZXNz
aW9uTm9kZSopOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBFeHByZXNzaW9uTm9k
ZSogc3RyaXBVbmFyeVBsdXMoKSB7IHJldHVybiBleHByKCk7IH0KQEAgLTc5MSwxMiArNzg2LDEy
IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgTmVnYXRlTm9kZSA6IHB1YmxpYyBVbmFy
eU9wTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBOZWdhdGVOb2RlKGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKik7CisgICAgICAgIE5lZ2F0ZU5vZGUoaW50LCBFeHBy
ZXNzaW9uTm9kZSopOwogICAgIH07CiAKICAgICBjbGFzcyBCaXR3aXNlTm90Tm9kZSA6IHB1Ymxp
YyBFeHByZXNzaW9uTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBCaXR3aXNlTm90Tm9kZShj
b25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSopOworICAgICAgICBCaXR3aXNl
Tm90Tm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKik7CiAKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAg
IEV4cHJlc3Npb25Ob2RlKiBleHByKCkgeyByZXR1cm4gbV9leHByOyB9CkBAIC04MTAsNyArODA1
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgCiAgICAgY2xhc3MgTG9naWNhbE5vdE5vZGUgOiBwdWJs
aWMgVW5hcnlPcE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgTG9naWNhbE5vdE5vZGUoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqKTsKKyAgICAgICAgTG9naWNhbE5v
dE5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSopOwogICAgIHByaXZhdGU6CiAgICAgICAgIHZvaWQg
ZW1pdEJ5dGVjb2RlSW5Db25kaXRpb25Db250ZXh0KEJ5dGVjb2RlR2VuZXJhdG9yJiwgTGFiZWwq
IHRydWVUYXJnZXQsIExhYmVsKiBmYWxzZVRhcmdldCwgYm9vbCBmYWxsVGhyb3VnaE1lYW5zVHJ1
ZSk7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBoYXNDb25kaXRpb25Db250ZXh0Q29kZWdlbigpIGNv
bnN0IHsgcmV0dXJuIGV4cHIoKS0+aGFzQ29uZGl0aW9uQ29udGV4dENvZGVnZW4oKTsgfQpAQCAt
ODE4LDggKzgxMyw4IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgQmluYXJ5T3BOb2Rl
IDogcHVibGljIEV4cHJlc3Npb25Ob2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEJpbmFyeU9w
Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJl
c3Npb25Ob2RlKiBleHByMiwgT3Bjb2RlSUQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7Ci0g
ICAgICAgIEJpbmFyeU9wTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBSZXN1bHRUeXBlLCBF
eHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgT3Bjb2RlSUQsIGJv
b2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgICAgIEJpbmFyeU9wTm9kZShpbnQsIEV4cHJl
c3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBPcGNvZGVJRCwgYm9vbCBy
aWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICAgICAgQmluYXJ5T3BOb2RlKGludCwgUmVzdWx0VHlw
ZSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIE9wY29kZUlE
LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwogCiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRT
dHJjYXQoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZGVzdGluYXRp
b24sIFJlZ2lzdGVySUQqIGxocyA9IDAsIFJlYWRNb2RpZnlSZXNvbHZlTm9kZSogZW1pdEV4cHJl
c3Npb25JbmZvRm9yTWUgPSAwKTsKIApAQCAtODQzLDcyICs4MzgsNzIgQEAgbmFtZXNwYWNlIEpT
QyB7CiAKICAgICBjbGFzcyBNdWx0Tm9kZSA6IHB1YmxpYyBCaW5hcnlPcE5vZGUgewogICAgIHB1
YmxpYzoKLSAgICAgICAgTXVsdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lv
bk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25t
ZW50cyk7CisgICAgICAgIE11bHROb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHBy
ZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiAgICAgfTsKIAog
ICAgIGNsYXNzIERpdk5vZGUgOiBwdWJsaWMgQmluYXJ5T3BOb2RlIHsKICAgICBwdWJsaWM6Ci0g
ICAgICAgIERpdk5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGV4
cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7Cisg
ICAgICAgIERpdk5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2Rl
KiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKICAgICB9OwogCiAgICAgY2xhc3Mg
TW9kTm9kZSA6IHB1YmxpYyBCaW5hcnlPcE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgTW9k
Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJl
c3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICAgICAgTW9k
Tm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBi
b29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwogICAgIH07CiAKICAgICBjbGFzcyBBZGROb2RlIDog
cHVibGljIEJpbmFyeU9wTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBBZGROb2RlKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAgICAgICBBZGROb2RlKGludCwg
RXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRI
YXNBc3NpZ25tZW50cyk7CiAKICAgICAgICAgdmlydHVhbCBib29sIGlzQWRkKCkgY29uc3QgeyBy
ZXR1cm4gdHJ1ZTsgfQogICAgIH07CiAKICAgICBjbGFzcyBTdWJOb2RlIDogcHVibGljIEJpbmFy
eU9wTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBTdWJOb2RlKGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29s
IHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAgICAgICBTdWJOb2RlKGludCwgRXhwcmVzc2lvbk5v
ZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50
cyk7CiAKICAgICAgICAgdmlydHVhbCBib29sIGlzU3VidHJhY3QoKSBjb25zdCB7IHJldHVybiB0
cnVlOyB9CiAgICAgfTsKIAogICAgIGNsYXNzIExlZnRTaGlmdE5vZGUgOiBwdWJsaWMgQmluYXJ5
T3BOb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIExlZnRTaGlmdE5vZGUoY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIs
IGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgICAgIExlZnRTaGlmdE5vZGUoaW50LCBF
eHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhh
c0Fzc2lnbm1lbnRzKTsKICAgICB9OwogCiAgICAgY2xhc3MgUmlnaHRTaGlmdE5vZGUgOiBwdWJs
aWMgQmluYXJ5T3BOb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFJpZ2h0U2hpZnROb2RlKGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5v
ZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAgICAgICBSaWdodFNoaWZ0
Tm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBi
b29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwogICAgIH07CiAKICAgICBjbGFzcyBVbnNpZ25lZFJp
Z2h0U2hpZnROb2RlIDogcHVibGljIEJpbmFyeU9wTm9kZSB7CiAgICAgcHVibGljOgotICAgICAg
ICBVbnNpZ25lZFJpZ2h0U2hpZnROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Np
b25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdu
bWVudHMpOworICAgICAgICBVbnNpZ25lZFJpZ2h0U2hpZnROb2RlKGludCwgRXhwcmVzc2lvbk5v
ZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50
cyk7CiAgICAgfTsKIAogICAgIGNsYXNzIExlc3NOb2RlIDogcHVibGljIEJpbmFyeU9wTm9kZSB7
CiAgICAgcHVibGljOgotICAgICAgICBMZXNzTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBF
eHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhh
c0Fzc2lnbm1lbnRzKTsKKyAgICAgICAgTGVzc05vZGUoaW50LCBFeHByZXNzaW9uTm9kZSogZXhw
cjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKICAg
ICB9OwogCiAgICAgY2xhc3MgR3JlYXRlck5vZGUgOiBwdWJsaWMgQmluYXJ5T3BOb2RlIHsKICAg
ICBwdWJsaWM6Ci0gICAgICAgIEdyZWF0ZXJOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4
cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFz
QXNzaWdubWVudHMpOworICAgICAgICBHcmVhdGVyTm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBl
eHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwog
ICAgIH07CiAKICAgICBjbGFzcyBMZXNzRXFOb2RlIDogcHVibGljIEJpbmFyeU9wTm9kZSB7CiAg
ICAgcHVibGljOgotICAgICAgICBMZXNzRXFOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4
cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFz
QXNzaWdubWVudHMpOworICAgICAgICBMZXNzRXFOb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqIGV4
cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiAg
ICAgfTsKIAogICAgIGNsYXNzIEdyZWF0ZXJFcU5vZGUgOiBwdWJsaWMgQmluYXJ5T3BOb2RlIHsK
ICAgICBwdWJsaWM6Ci0gICAgICAgIEdyZWF0ZXJFcU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmln
aHRIYXNBc3NpZ25tZW50cyk7CisgICAgICAgIEdyZWF0ZXJFcU5vZGUoaW50LCBFeHByZXNzaW9u
Tm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1l
bnRzKTsKICAgICB9OwogCiAgICAgY2xhc3MgVGhyb3dhYmxlQmluYXJ5T3BOb2RlIDogcHVibGlj
IEJpbmFyeU9wTm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJs
aWM6Ci0gICAgICAgIFRocm93YWJsZUJpbmFyeU9wTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24m
LCBSZXN1bHRUeXBlLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHBy
MiwgT3Bjb2RlSUQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7Ci0gICAgICAgIFRocm93YWJs
ZUJpbmFyeU9wTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogZXhw
cjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgT3Bjb2RlSUQsIGJvb2wgcmlnaHRIYXNBc3NpZ25t
ZW50cyk7CisgICAgICAgIFRocm93YWJsZUJpbmFyeU9wTm9kZShpbnQsIFJlc3VsdFR5cGUsIEV4
cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBPcGNvZGVJRCwgYm9v
bCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICAgICAgVGhyb3dhYmxlQmluYXJ5T3BOb2RlKGlu
dCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIE9wY29kZUlE
LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmly
dHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3Rl
cklEKiA9IDApOwpAQCAtOTE2LDcgKzkxMSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIAogICAg
IGNsYXNzIEluc3RhbmNlT2ZOb2RlIDogcHVibGljIFRocm93YWJsZUJpbmFyeU9wTm9kZSB7CiAg
ICAgcHVibGljOgotICAgICAgICBJbnN0YW5jZU9mTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24m
LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdo
dEhhc0Fzc2lnbm1lbnRzKTsKKyAgICAgICAgSW5zdGFuY2VPZk5vZGUoaW50LCBFeHByZXNzaW9u
Tm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1l
bnRzKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTkyNCwxMiAr
OTE5LDEyIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgSW5Ob2RlIDogcHVibGljIFRo
cm93YWJsZUJpbmFyeU9wTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBJbk5vZGUoY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSog
ZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgICAgIEluTm9kZShpbnQsIEV4
cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFz
QXNzaWdubWVudHMpOwogICAgIH07CiAKICAgICBjbGFzcyBFcXVhbE5vZGUgOiBwdWJsaWMgQmlu
YXJ5T3BOb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEVxdWFsTm9kZShjb25zdCBKU1Rva2Vu
TG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwg
Ym9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICAgICAgRXF1YWxOb2RlKGludCwgRXhwcmVz
c2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3Np
Z25tZW50cyk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC05Mzcs
MTIgKzkzMiwxMiBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIE5vdEVxdWFsTm9kZSA6
IHB1YmxpYyBCaW5hcnlPcE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgTm90RXF1YWxOb2Rl
KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lv
bk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAgICAgICBOb3RFcXVh
bE5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwg
Ym9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKICAgICB9OwogCiAgICAgY2xhc3MgU3RyaWN0RXF1
YWxOb2RlIDogcHVibGljIEJpbmFyeU9wTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBTdHJp
Y3RFcXVhbE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIx
LCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAg
ICAgIFN0cmljdEVxdWFsTm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lv
bk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwogCiAgICAgcHJpdmF0ZToK
ICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0
b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtOTUwLDI4ICs5NDUsMjggQEAgbmFtZXNwYWNlIEpT
QyB7CiAKICAgICBjbGFzcyBOb3RTdHJpY3RFcXVhbE5vZGUgOiBwdWJsaWMgQmluYXJ5T3BOb2Rl
IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIE5vdFN0cmljdEVxdWFsTm9kZShjb25zdCBKU1Rva2Vu
TG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwg
Ym9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICAgICAgTm90U3RyaWN0RXF1YWxOb2RlKGlu
dCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmln
aHRIYXNBc3NpZ25tZW50cyk7CiAgICAgfTsKIAogICAgIGNsYXNzIEJpdEFuZE5vZGUgOiBwdWJs
aWMgQmluYXJ5T3BOb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEJpdEFuZE5vZGUoY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSog
ZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgICAgIEJpdEFuZE5vZGUoaW50
LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdo
dEhhc0Fzc2lnbm1lbnRzKTsKICAgICB9OwogCiAgICAgY2xhc3MgQml0T3JOb2RlIDogcHVibGlj
IEJpbmFyeU9wTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBCaXRPck5vZGUoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhw
cjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgICAgIEJpdE9yTm9kZShpbnQsIEV4
cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFz
QXNzaWdubWVudHMpOwogICAgIH07CiAKICAgICBjbGFzcyBCaXRYT3JOb2RlIDogcHVibGljIEJp
bmFyeU9wTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBCaXRYT3JOb2RlKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIy
LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAgICAgICBCaXRYT3JOb2RlKGludCwgRXhw
cmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNB
c3NpZ25tZW50cyk7CiAgICAgfTsKIAogICAgIC8vIG1fZXhwcjEgJiYgbV9leHByMiwgbV9leHBy
MSB8fCBtX2V4cHIyCiAgICAgY2xhc3MgTG9naWNhbE9wTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9u
Tm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBMb2dpY2FsT3BOb2RlKGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBM
b2dpY2FsT3BlcmF0b3IpOworICAgICAgICBMb2dpY2FsT3BOb2RlKGludCwgRXhwcmVzc2lvbk5v
ZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIExvZ2ljYWxPcGVyYXRvcik7CiAKICAg
ICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC05ODYsNyArOTgxLDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgLy8gVGhlIHRlcm5hcnkgb3BlcmF0b3IsICJtX2xvZ2ljYWwgPyBt
X2V4cHIxIDogbV9leHByMiIKICAgICBjbGFzcyBDb25kaXRpb25hbE5vZGUgOiBwdWJsaWMgRXhw
cmVzc2lvbk5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgQ29uZGl0aW9uYWxOb2RlKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBsb2dpY2FsLCBFeHByZXNzaW9uTm9k
ZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMik7CisgICAgICAgIENvbmRpdGlvbmFsTm9k
ZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBsb2dpY2FsLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4
cHJlc3Npb25Ob2RlKiBleHByMik7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJl
Z2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0g
MCk7CkBAIC05OTgsNyArOTkzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBSZWFk
TW9kaWZ5UmVzb2x2ZU5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2Fi
bGVFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgotICAgICAgICBSZWFkTW9kaWZ5UmVzb2x2
ZU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYsIE9wZXJhdG9y
LCBFeHByZXNzaW9uTm9kZSogIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIHVuc2ln
bmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKKyAg
ICAgICAgUmVhZE1vZGlmeVJlc29sdmVOb2RlKGludCwgY29uc3QgSWRlbnRpZmllciYsIE9wZXJh
dG9yLCBFeHByZXNzaW9uTm9kZSogIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIHVu
c2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsK
IAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTEwMTEsNyArMTAwNiw3
IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgQXNzaWduUmVzb2x2ZU5vZGUgOiBwdWJs
aWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CiAgICAg
cHVibGljOgotICAgICAgICBBc3NpZ25SZXNvbHZlTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24m
LCBjb25zdCBJZGVudGlmaWVyJiwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0KTsKKyAgICAgICAgQXNz
aWduUmVzb2x2ZU5vZGUoaW50LCBjb25zdCBJZGVudGlmaWVyJiwgRXhwcmVzc2lvbk5vZGUqIHJp
Z2h0KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTEwMjIsNyAr
MTAxNyw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgUmVhZE1vZGlmeUJyYWNrZXRO
b2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlU3ViRXhwcmVzc2lv
bkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAgICAgUmVhZE1vZGlmeUJyYWNrZXROb2RlKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSog
c3Vic2NyaXB0LCBPcGVyYXRvciwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHN1YnNjcmlw
dEhhc0Fzc2lnbm1lbnRzLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIHVuc2lnbmVkIGRpdm90
LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKKyAgICAgICAgUmVh
ZE1vZGlmeUJyYWNrZXROb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIEV4cHJlc3Npb25O
b2RlKiBzdWJzY3JpcHQsIE9wZXJhdG9yLCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgc3Vi
c2NyaXB0SGFzQXNzaWdubWVudHMsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywgdW5zaWduZWQg
ZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOwogCiAgICAg
cHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNv
ZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtMTAzNyw3ICsxMDMyLDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBBc3NpZ25CcmFja2V0Tm9kZSA6IHB1YmxpYyBFeHBy
ZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJsaWM6
Ci0gICAgICAgIEFzc2lnbkJyYWNrZXROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJl
c3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCBFeHByZXNzaW9uTm9k
ZSogcmlnaHQsIGJvb2wgc3Vic2NyaXB0SGFzQXNzaWdubWVudHMsIGJvb2wgcmlnaHRIYXNBc3Np
Z25tZW50cywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBl
bmRPZmZzZXQpOworICAgICAgICBBc3NpZ25CcmFja2V0Tm9kZShpbnQsIEV4cHJlc3Npb25Ob2Rl
KiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCBFeHByZXNzaW9uTm9kZSogcmlnaHQs
IGJvb2wgc3Vic2NyaXB0SGFzQXNzaWdubWVudHMsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywg
dW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQp
OwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtMTA1MSw3ICsxMDQ2
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBBc3NpZ25Eb3ROb2RlIDogcHVibGlj
IEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgewogICAgIHB1
YmxpYzoKLSAgICAgICAgQXNzaWduRG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHBy
ZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYsIEV4cHJlc3Npb25Ob2RlKiByaWdo
dCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3Rh
cnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CisgICAgICAgIEFzc2lnbkRvdE5vZGUoaW50
LCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYsIEV4cHJlc3Npb25Ob2Rl
KiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWdu
ZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CiAKICAgICBwcml2YXRlOgogICAg
ICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYs
IFJlZ2lzdGVySUQqID0gMCk7CkBAIC0xMDY0LDcgKzEwNTksNyBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogICAgIGNsYXNzIFJlYWRNb2RpZnlEb3ROb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBw
dWJsaWMgVGhyb3dhYmxlU3ViRXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAgICAg
UmVhZE1vZGlmeURvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUq
IGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBPcGVyYXRvciwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0
LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFy
dE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKKyAgICAgICAgUmVhZE1vZGlmeURvdE5vZGUo
aW50LCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYsIE9wZXJhdG9yLCBF
eHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywgdW5zaWduZWQg
ZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOwogCiAgICAg
cHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNv
ZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtMTA3OCw3ICsxMDczLDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBBc3NpZ25FcnJvck5vZGUgOiBwdWJsaWMgRXhwcmVz
c2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgot
ICAgICAgICBBc3NpZ25FcnJvck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgdW5zaWduZWQg
ZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOworICAgICAg
ICBBc3NpZ25FcnJvck5vZGUoaW50LCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZz
ZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFs
IFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQq
ID0gMCk7CkBAIC0xMDg4LDcgKzEwODMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNz
IENvbW1hTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFBhcnNlckFyZW5hRGVs
ZXRhYmxlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIENvbW1hTm9kZShjb25zdCBKU1Rva2VuTG9j
YXRpb24mLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMik7Cisg
ICAgICAgIENvbW1hTm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5v
ZGUqIGV4cHIyKTsKIAogICAgICAgICB1c2luZyBQYXJzZXJBcmVuYURlbGV0YWJsZTo6b3BlcmF0
b3IgbmV3OwogCkBAIC0xMTAzLDcgKzEwOTgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAKICAg
ICBjbGFzcyBDb25zdERlY2xOb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlIHsKICAgICBwdWJs
aWM6Ci0gICAgICAgIENvbnN0RGVjbE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3Qg
SWRlbnRpZmllciYsIEV4cHJlc3Npb25Ob2RlKik7CisgICAgICAgIENvbnN0RGVjbE5vZGUoaW50
LCBjb25zdCBJZGVudGlmaWVyJiwgRXhwcmVzc2lvbk5vZGUqKTsKIAogICAgICAgICBib29sIGhh
c0luaXRpYWxpemVyKCkgY29uc3QgeyByZXR1cm4gbV9pbml0OyB9CiAgICAgICAgIGNvbnN0IElk
ZW50aWZpZXImIGlkZW50KCkgeyByZXR1cm4gbV9pZGVudDsgfQpAQCAtMTEyMyw3ICsxMTE4LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBDb25zdFN0YXRlbWVudE5vZGUgOiBwdWJs
aWMgU3RhdGVtZW50Tm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBDb25zdFN0YXRlbWVudE5v
ZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgQ29uc3REZWNsTm9kZSogbmV4dCk7CisgICAgICAg
IENvbnN0U3RhdGVtZW50Tm9kZShpbnQsIENvbnN0RGVjbE5vZGUqIG5leHQpOwogCiAgICAgcHJp
dmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtMTE0OCw3ICsxMTQzLDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAKICAgICBjbGFzcyBCbG9ja05vZGUgOiBwdWJsaWMgU3RhdGVtZW50Tm9kZSB7
CiAgICAgcHVibGljOgotICAgICAgICBCbG9ja05vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwg
U291cmNlRWxlbWVudHMqID0gMCk7CisgICAgICAgIEJsb2NrTm9kZShpbnQsIFNvdXJjZUVsZW1l
bnRzKiA9IDApOwogCiAgICAgICAgIFN0YXRlbWVudE5vZGUqIHNpbmdsZVN0YXRlbWVudCgpIGNv
bnN0OwogICAgICAgICBTdGF0ZW1lbnROb2RlKiBsYXN0U3RhdGVtZW50KCkgY29uc3Q7CkBAIC0x
MTYzLDcgKzExNTgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEVtcHR5U3RhdGVt
ZW50Tm9kZSA6IHB1YmxpYyBTdGF0ZW1lbnROb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEVt
cHR5U3RhdGVtZW50Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mKTsKKyAgICAgICAgRW1wdHlT
dGF0ZW1lbnROb2RlKGludCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lz
dGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7
CkBAIC0xMTczLDcgKzExNjgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAKICAgICBjbGFzcyBE
ZWJ1Z2dlclN0YXRlbWVudE5vZGUgOiBwdWJsaWMgU3RhdGVtZW50Tm9kZSB7CiAgICAgcHVibGlj
OgotICAgICAgICBEZWJ1Z2dlclN0YXRlbWVudE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJik7
CisgICAgICAgIERlYnVnZ2VyU3RhdGVtZW50Tm9kZShpbnQpOwogICAgICAgICAKICAgICBwcml2
YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC0xMTgxLDcgKzExNzYsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKIAogICAgIGNsYXNzIEV4cHJTdGF0ZW1lbnROb2RlIDogcHVibGljIFN0YXRlbWVu
dE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgRXhwclN0YXRlbWVudE5vZGUoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqKTsKKyAgICAgICAgRXhwclN0YXRlbWVudE5v
ZGUoaW50LCBFeHByZXNzaW9uTm9kZSopOwogCiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBleHBy
KCkgY29uc3QgeyByZXR1cm4gbV9leHByOyB9CiAKQEAgLTExOTUsNyArMTE5MCw4IEBAIG5hbWVz
cGFjZSBKU0MgewogCiAgICAgY2xhc3MgVmFyU3RhdGVtZW50Tm9kZSA6IHB1YmxpYyBTdGF0ZW1l
bnROb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFZhclN0YXRlbWVudE5vZGUoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqKTsKKyAgICAgICAgVmFyU3RhdGVtZW50Tm9k
ZShpbnQsIEV4cHJlc3Npb25Ob2RlKik7ICAgICAgICAKKwogICAgIHByaXZhdGU6CiAgICAgICAg
IHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVn
aXN0ZXJJRCogPSAwKTsKIApAQCAtMTIwNCw3ICsxMjAwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAK
ICAgICBjbGFzcyBJZk5vZGUgOiBwdWJsaWMgU3RhdGVtZW50Tm9kZSB7CiAgICAgcHVibGljOgot
ICAgICAgICBJZk5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGNv
bmRpdGlvbiwgU3RhdGVtZW50Tm9kZSogaWZCbG9jayk7CisgICAgICAgIElmTm9kZShpbnQsIEV4
cHJlc3Npb25Ob2RlKiBjb25kaXRpb24sIFN0YXRlbWVudE5vZGUqIGlmQmxvY2spOwogCiAgICAg
cHJvdGVjdGVkOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC0xMjE1LDcgKzEyMTEsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIElmRWxzZU5vZGUgOiBwdWJsaWMgSWZOb2RlIHsK
ICAgICBwdWJsaWM6Ci0gICAgICAgIElmRWxzZU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwg
RXhwcmVzc2lvbk5vZGUqIGNvbmRpdGlvbiwgU3RhdGVtZW50Tm9kZSogaWZCbG9jaywgU3RhdGVt
ZW50Tm9kZSogZWxzZUJsb2NrKTsKKyAgICAgICAgSWZFbHNlTm9kZShpbnQsIEV4cHJlc3Npb25O
b2RlKiBjb25kaXRpb24sIFN0YXRlbWVudE5vZGUqIGlmQmxvY2ssIFN0YXRlbWVudE5vZGUqIGVs
c2VCbG9jayk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC0xMjI1
LDcgKzEyMjEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIERvV2hpbGVOb2RlIDog
cHVibGljIFN0YXRlbWVudE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgRG9XaGlsZU5vZGUo
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgU3RhdGVtZW50Tm9kZSosIEV4cHJlc3Npb25Ob2RlKik7
CisgICAgICAgIERvV2hpbGVOb2RlKGludCwgU3RhdGVtZW50Tm9kZSosIEV4cHJlc3Npb25Ob2Rl
Kik7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRl
Y29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC0xMjM2LDcgKzEy
MzIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFdoaWxlTm9kZSA6IHB1YmxpYyBT
dGF0ZW1lbnROb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFdoaWxlTm9kZShjb25zdCBKU1Rv
a2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSosIFN0YXRlbWVudE5vZGUqKTsKKyAgICAgICAg
V2hpbGVOb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqLCBTdGF0ZW1lbnROb2RlKik7CiAKICAgICBw
cml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC0xMjQ3LDcgKzEyNDMsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEZvck5vZGUgOiBwdWJsaWMgU3RhdGVtZW50Tm9kZSB7
CiAgICAgcHVibGljOgotICAgICAgICBGb3JOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4
cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBFeHByZXNzaW9uTm9k
ZSogZXhwcjMsIFN0YXRlbWVudE5vZGUqKTsKKyAgICAgICAgRm9yTm9kZShpbnQsIEV4cHJlc3Np
b25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBFeHByZXNzaW9uTm9kZSogZXhw
cjMsIFN0YXRlbWVudE5vZGUqKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVn
aXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAw
KTsKQEAgLTEyNjAsOCArMTI1Niw4IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgRm9y
SW5Ob2RlIDogcHVibGljIFN0YXRlbWVudE5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9u
RGF0YSB7CiAgICAgcHVibGljOgotICAgICAgICBGb3JJbk5vZGUoY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiwgRXhwcmVzc2lvbk5vZGUqLCBFeHByZXNzaW9uTm9kZSosIFN0YXRlbWVudE5vZGUqKTsK
LSAgICAgICAgRm9ySW5Ob2RlKEpTR2xvYmFsRGF0YSosIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYs
IGNvbnN0IElkZW50aWZpZXImLCBFeHByZXNzaW9uTm9kZSosIEV4cHJlc3Npb25Ob2RlKiwgU3Rh
dGVtZW50Tm9kZSosIGludCBkaXZvdCwgaW50IHN0YXJ0T2Zmc2V0LCBpbnQgZW5kT2Zmc2V0KTsK
KyAgICAgICAgRm9ySW5Ob2RlKGludCwgRXhwcmVzc2lvbk5vZGUqLCBFeHByZXNzaW9uTm9kZSos
IFN0YXRlbWVudE5vZGUqKTsKKyAgICAgICAgRm9ySW5Ob2RlKEpTR2xvYmFsRGF0YSosIGludCwg
Y29uc3QgSWRlbnRpZmllciYsIEV4cHJlc3Npb25Ob2RlKiwgRXhwcmVzc2lvbk5vZGUqLCBTdGF0
ZW1lbnROb2RlKiwgaW50IGRpdm90LCBpbnQgc3RhcnRPZmZzZXQsIGludCBlbmRPZmZzZXQpOwog
CiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtMTI3NSw4ICsxMjcxLDgg
QEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBDb250aW51ZU5vZGUgOiBwdWJsaWMgU3Rh
dGVtZW50Tm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJsaWM6
Ci0gICAgICAgIENvbnRpbnVlTm9kZShKU0dsb2JhbERhdGEqLCBjb25zdCBKU1Rva2VuTG9jYXRp
b24mKTsKLSAgICAgICAgQ29udGludWVOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0
IElkZW50aWZpZXImKTsKKyAgICAgICAgQ29udGludWVOb2RlKEpTR2xvYmFsRGF0YSosIGludCk7
CisgICAgICAgIENvbnRpbnVlTm9kZShpbnQsIGNvbnN0IElkZW50aWZpZXImKTsKICAgICAgICAg
CiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtMTI4Niw4ICsxMjgyLDgg
QEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBCcmVha05vZGUgOiBwdWJsaWMgU3RhdGVt
ZW50Tm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJsaWM6Ci0g
ICAgICAgIEJyZWFrTm9kZShKU0dsb2JhbERhdGEqLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mKTsK
LSAgICAgICAgQnJlYWtOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZp
ZXImKTsKKyAgICAgICAgQnJlYWtOb2RlKEpTR2xvYmFsRGF0YSosIGludCk7CisgICAgICAgIEJy
ZWFrTm9kZShpbnQsIGNvbnN0IElkZW50aWZpZXImKTsKICAgICAgICAgCiAgICAgcHJpdmF0ZToK
ICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0
b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtMTI5Nyw3ICsxMjkzLDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAKICAgICBjbGFzcyBSZXR1cm5Ob2RlIDogcHVibGljIFN0YXRlbWVudE5vZGUsIHB1Ymxp
YyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgotICAgICAgICBSZXR1cm5O
b2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiB2YWx1ZSk7CisgICAg
ICAgIFJldHVybk5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSogdmFsdWUpOwogCiAgICAgICAgIEV4
cHJlc3Npb25Ob2RlKiB2YWx1ZSgpIHsgcmV0dXJuIG1fdmFsdWU7IH0KIApAQCAtMTMxMSw3ICsx
MzA3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBXaXRoTm9kZSA6IHB1YmxpYyBT
dGF0ZW1lbnROb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFdpdGhOb2RlKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiwgU3RhdGVtZW50Tm9kZSosIHVpbnQzMl90IGRp
dm90LCB1aW50MzJfdCBleHByZXNzaW9uTGVuZ3RoKTsKKyAgICAgICAgV2l0aE5vZGUoaW50LCBF
eHByZXNzaW9uTm9kZSosIFN0YXRlbWVudE5vZGUqLCB1aW50MzJfdCBkaXZvdCwgdWludDMyX3Qg
ZXhwcmVzc2lvbkxlbmd0aCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lz
dGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7
CkBAIC0xMzI0LDcgKzEzMjAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIExhYmVs
Tm9kZSA6IHB1YmxpYyBTdGF0ZW1lbnROb2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRh
dGEgewogICAgIHB1YmxpYzoKLSAgICAgICAgTGFiZWxOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIFN0YXRlbWVudE5vZGUqKTsKKyAgICAgICAgTGFi
ZWxOb2RlKGludCwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgU3RhdGVtZW50Tm9kZSopOwogCiAg
ICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtMTMzNSw3ICsxMzMxLDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBUaHJvd05vZGUgOiBwdWJsaWMgU3RhdGVtZW50
Tm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJsaWM6Ci0gICAg
ICAgIFRocm93Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSopOwor
ICAgICAgICBUaHJvd05vZGUoaW50LCBFeHByZXNzaW9uTm9kZSopOwogCiAgICAgcHJpdmF0ZToK
ICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0
b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtMTM0NSw3ICsxMzQxLDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAKICAgICBjbGFzcyBUcnlOb2RlIDogcHVibGljIFN0YXRlbWVudE5vZGUgewogICAgIHB1
YmxpYzoKLSAgICAgICAgVHJ5Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBTdGF0ZW1lbnRO
b2RlKiB0cnlCbG9jaywgY29uc3QgSWRlbnRpZmllciYgZXhjZXB0aW9uSWRlbnQsIFN0YXRlbWVu
dE5vZGUqIGNhdGNoQmxvY2ssIFN0YXRlbWVudE5vZGUqIGZpbmFsbHlCbG9jayk7CisgICAgICAg
IFRyeU5vZGUoaW50LCBTdGF0ZW1lbnROb2RlKiB0cnlCbG9jaywgY29uc3QgSWRlbnRpZmllciYg
ZXhjZXB0aW9uSWRlbnQsIFN0YXRlbWVudE5vZGUqIGNhdGNoQmxvY2ssIFN0YXRlbWVudE5vZGUq
IGZpbmFsbHlCbG9jayk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVy
SUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBA
IC0xMzc0LDggKzEzNzAsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdHlwZWRlZiBEZWNs
YXJhdGlvblN0YWNrczo6VmFyU3RhY2sgVmFyU3RhY2s7CiAgICAgICAgIHR5cGVkZWYgRGVjbGFy
YXRpb25TdGFja3M6OkZ1bmN0aW9uU3RhY2sgRnVuY3Rpb25TdGFjazsKIAotICAgICAgICBTY29w
ZU5vZGUoSlNHbG9iYWxEYXRhKiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgYm9vbCBpblN0cmlj
dENvbnRleHQpOwotICAgICAgICBTY29wZU5vZGUoSlNHbG9iYWxEYXRhKiwgY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiwgY29uc3QgU291cmNlQ29kZSYsIFNvdXJjZUVsZW1lbnRzKiwgVmFyU3RhY2sq
LCBGdW5jdGlvblN0YWNrKiwgSWRlbnRpZmllclNldCYsIENvZGVGZWF0dXJlcywgaW50IG51bUNv
bnN0YW50cyk7CisgICAgICAgIFNjb3BlTm9kZShKU0dsb2JhbERhdGEqLCBpbnQsIGJvb2wgaW5T
dHJpY3RDb250ZXh0KTsKKyAgICAgICAgU2NvcGVOb2RlKEpTR2xvYmFsRGF0YSosIGludCwgY29u
c3QgU291cmNlQ29kZSYsIFNvdXJjZUVsZW1lbnRzKiwgVmFyU3RhY2sqLCBGdW5jdGlvblN0YWNr
KiwgSWRlbnRpZmllclNldCYsIENvZGVGZWF0dXJlcywgaW50IG51bUNvbnN0YW50cyk7CiAKICAg
ICAgICAgdXNpbmcgUGFyc2VyQXJlbmFSZWZDb3VudGVkOjpvcGVyYXRvciBuZXc7CiAKQEAgLTE0
MzcsMTIgKzE0MzMsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgUHJvZ3JhbU5vZGUg
OiBwdWJsaWMgU2NvcGVOb2RlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBjb25zdCBi
b29sIGlzRnVuY3Rpb25Ob2RlID0gZmFsc2U7Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBy
b2dyYW1Ob2RlPiBjcmVhdGUoSlNHbG9iYWxEYXRhKiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwg
U291cmNlRWxlbWVudHMqLCBWYXJTdGFjayosIEZ1bmN0aW9uU3RhY2sqLCBJZGVudGlmaWVyU2V0
JiwgY29uc3QgU291cmNlQ29kZSYsIENvZGVGZWF0dXJlcywgaW50IG51bUNvbnN0YW50cyk7Cisg
ICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFByb2dyYW1Ob2RlPiBjcmVhdGUoSlNHbG9iYWxEYXRh
KiwgaW50LCBTb3VyY2VFbGVtZW50cyosIFZhclN0YWNrKiwgRnVuY3Rpb25TdGFjayosIElkZW50
aWZpZXJTZXQmLCBjb25zdCBTb3VyY2VDb2RlJiwgQ29kZUZlYXR1cmVzLCBpbnQgbnVtQ29uc3Rh
bnRzKTsKIAogICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBzY29wZUlzRnVuY3Rpb24gPSBmYWxz
ZTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIFByb2dyYW1Ob2RlKEpTR2xvYmFsRGF0YSosIGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYsIFNvdXJjZUVsZW1lbnRzKiwgVmFyU3RhY2sqLCBGdW5jdGlv
blN0YWNrKiwgSWRlbnRpZmllclNldCYsIGNvbnN0IFNvdXJjZUNvZGUmLCBDb2RlRmVhdHVyZXMs
IGludCBudW1Db25zdGFudHMpOworICAgICAgICBQcm9ncmFtTm9kZShKU0dsb2JhbERhdGEqLCBp
bnQsIFNvdXJjZUVsZW1lbnRzKiwgVmFyU3RhY2sqLCBGdW5jdGlvblN0YWNrKiwgSWRlbnRpZmll
clNldCYsIGNvbnN0IFNvdXJjZUNvZGUmLCBDb2RlRmVhdHVyZXMsIGludCBudW1Db25zdGFudHMp
OwogCiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKICAgICB9OwpAQCAtMTQ1MCwxMiArMTQ0NiwxMiBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBFdmFsTm9kZSA6IHB1YmxpYyBTY29wZU5vZGUg
ewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNGdW5jdGlvbk5vZGUg
PSBmYWxzZTsKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8RXZhbE5vZGU+IGNyZWF0ZShKU0ds
b2JhbERhdGEqLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBTb3VyY2VFbGVtZW50cyosIFZhclN0
YWNrKiwgRnVuY3Rpb25TdGFjayosIElkZW50aWZpZXJTZXQmLCBjb25zdCBTb3VyY2VDb2RlJiwg
Q29kZUZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKTsKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQ
dHI8RXZhbE5vZGU+IGNyZWF0ZShKU0dsb2JhbERhdGEqLCBpbnQsIFNvdXJjZUVsZW1lbnRzKiwg
VmFyU3RhY2sqLCBGdW5jdGlvblN0YWNrKiwgSWRlbnRpZmllclNldCYsIGNvbnN0IFNvdXJjZUNv
ZGUmLCBDb2RlRmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpOwogCiAgICAgICAgIHN0YXRpYyBj
b25zdCBib29sIHNjb3BlSXNGdW5jdGlvbiA9IGZhbHNlOwogCiAgICAgcHJpdmF0ZToKLSAgICAg
ICAgRXZhbE5vZGUoSlNHbG9iYWxEYXRhKiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgU291cmNl
RWxlbWVudHMqLCBWYXJTdGFjayosIEZ1bmN0aW9uU3RhY2sqLCBJZGVudGlmaWVyU2V0JiwgY29u
c3QgU291cmNlQ29kZSYsIENvZGVGZWF0dXJlcywgaW50IG51bUNvbnN0YW50cyk7CisgICAgICAg
IEV2YWxOb2RlKEpTR2xvYmFsRGF0YSosIGludCwgU291cmNlRWxlbWVudHMqLCBWYXJTdGFjayos
IEZ1bmN0aW9uU3RhY2sqLCBJZGVudGlmaWVyU2V0JiwgY29uc3QgU291cmNlQ29kZSYsIENvZGVG
ZWF0dXJlcywgaW50IG51bUNvbnN0YW50cyk7CiAKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklE
KiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwogICAg
IH07CkBAIC0xNDcyLDggKzE0NjgsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBGdW5j
dGlvbkJvZHlOb2RlIDogcHVibGljIFNjb3BlTm9kZSB7CiAgICAgcHVibGljOgogICAgICAgICBz
dGF0aWMgY29uc3QgYm9vbCBpc0Z1bmN0aW9uTm9kZSA9IHRydWU7Ci0gICAgICAgIHN0YXRpYyBG
dW5jdGlvbkJvZHlOb2RlKiBjcmVhdGUoSlNHbG9iYWxEYXRhKiwgY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiwgYm9vbCBpc1N0cmljdE1vZGUpOwotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxGdW5j
dGlvbkJvZHlOb2RlPiBjcmVhdGUoSlNHbG9iYWxEYXRhKiwgY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiwgU291cmNlRWxlbWVudHMqLCBWYXJTdGFjayosIEZ1bmN0aW9uU3RhY2sqLCBJZGVudGlmaWVy
U2V0JiwgY29uc3QgU291cmNlQ29kZSYsIENvZGVGZWF0dXJlcywgaW50IG51bUNvbnN0YW50cyk7
CisgICAgICAgIHN0YXRpYyBGdW5jdGlvbkJvZHlOb2RlKiBjcmVhdGUoSlNHbG9iYWxEYXRhKiwg
aW50LCBib29sIGlzU3RyaWN0TW9kZSk7CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZ1bmN0
aW9uQm9keU5vZGU+IGNyZWF0ZShKU0dsb2JhbERhdGEqLCBpbnQsIFNvdXJjZUVsZW1lbnRzKiwg
VmFyU3RhY2sqLCBGdW5jdGlvblN0YWNrKiwgSWRlbnRpZmllclNldCYsIGNvbnN0IFNvdXJjZUNv
ZGUmLCBDb2RlRmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpOwogCiAgICAgICAgIEZ1bmN0aW9u
UGFyYW1ldGVycyogcGFyYW1ldGVycygpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVycy5nZXQo
KTsgfQogICAgICAgICBzaXplX3QgcGFyYW1ldGVyQ291bnQoKSBjb25zdCB7IHJldHVybiBtX3Bh
cmFtZXRlcnMtPnNpemUoKTsgfQpAQCAtMTQ5MCw4ICsxNDg2LDggQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIHN0YXRpYyBjb25zdCBib29sIHNjb3BlSXNGdW5jdGlvbiA9IHRydWU7CiAKICAg
ICBwcml2YXRlOgotICAgICAgICBGdW5jdGlvbkJvZHlOb2RlKEpTR2xvYmFsRGF0YSosIGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYsIGJvb2wgaW5TdHJpY3RDb250ZXh0KTsKLSAgICAgICAgRnVuY3Rp
b25Cb2R5Tm9kZShKU0dsb2JhbERhdGEqLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBTb3VyY2VF
bGVtZW50cyosIFZhclN0YWNrKiwgRnVuY3Rpb25TdGFjayosIElkZW50aWZpZXJTZXQmLCBjb25z
dCBTb3VyY2VDb2RlJiwgQ29kZUZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKTsKKyAgICAgICAg
RnVuY3Rpb25Cb2R5Tm9kZShKU0dsb2JhbERhdGEqLCBpbnQsIGJvb2wgaW5TdHJpY3RDb250ZXh0
KTsKKyAgICAgICAgRnVuY3Rpb25Cb2R5Tm9kZShKU0dsb2JhbERhdGEqLCBpbnQsIFNvdXJjZUVs
ZW1lbnRzKiwgVmFyU3RhY2sqLCBGdW5jdGlvblN0YWNrKiwgSWRlbnRpZmllclNldCYsIGNvbnN0
IFNvdXJjZUNvZGUmLCBDb2RlRmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpOwogCiAgICAgICAg
IElkZW50aWZpZXIgbV9pZGVudDsKICAgICAgICAgSWRlbnRpZmllciBtX2luZmVycmVkTmFtZTsK
QEAgLTE1MDAsNyArMTQ5Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgRnVuY0V4
cHJOb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEZ1
bmNFeHByTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiwgRnVu
Y3Rpb25Cb2R5Tm9kZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBQYXJhbWV0ZXJOb2RlKiA9IDApOwor
ICAgICAgICBGdW5jRXhwck5vZGUoaW50LCBjb25zdCBJZGVudGlmaWVyJiwgRnVuY3Rpb25Cb2R5
Tm9kZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBQYXJhbWV0ZXJOb2RlKiA9IDApOwogCiAgICAgICAg
IEZ1bmN0aW9uQm9keU5vZGUqIGJvZHkoKSB7IHJldHVybiBtX2JvZHk7IH0KIApAQCAtMTUxNCw3
ICsxNTEwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBGdW5jRGVjbE5vZGUgOiBw
dWJsaWMgU3RhdGVtZW50Tm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBGdW5jRGVjbE5vZGUo
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYsIEZ1bmN0aW9uQm9keU5v
ZGUqLCBjb25zdCBTb3VyY2VDb2RlJiwgUGFyYW1ldGVyTm9kZSogPSAwKTsKKyAgICAgICAgRnVu
Y0RlY2xOb2RlKGludCwgY29uc3QgSWRlbnRpZmllciYsIEZ1bmN0aW9uQm9keU5vZGUqLCBjb25z
dCBTb3VyY2VDb2RlJiwgUGFyYW1ldGVyTm9kZSogPSAwKTsKIAogICAgICAgICBGdW5jdGlvbkJv
ZHlOb2RlKiBib2R5KCkgeyByZXR1cm4gbV9ib2R5OyB9CiAKQEAgLTE1NjUsNyArMTU2MSw3IEBA
IG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgU3dpdGNoTm9kZSA6IHB1YmxpYyBTdGF0ZW1l
bnROb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFN3aXRjaE5vZGUoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqLCBDYXNlQmxvY2tOb2RlKik7CisgICAgICAgIFN3aXRj
aE5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSosIENhc2VCbG9ja05vZGUqKTsKIAogICAgIHByaXZh
dGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFy
c2VyLmNwcAppbmRleCAzZTI0M2I0MDc5MDJhYTBiYTkzMTMzMzM3NDM5ZTk3MmU1OGFlNjJhLi41
NThmNTBlNWZiMzA1MzRjNjYyNGU3NzQ5Y2IwNGU2OTUyYmM5MjYzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCkBAIC0xMzgsNyArMTM4LDcgQEAgdGVtcGxhdGUgPFNv
dXJjZUVsZW1lbnRzTW9kZSBtb2RlLCBjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVNvdXJjZUVsZW1l
bnRzIFBhcnNlcjwKICAgICBib29sIHNlZW5Ob25EaXJlY3RpdmUgPSBmYWxzZTsKICAgICBjb25z
dCBJZGVudGlmaWVyKiBkaXJlY3RpdmUgPSAwOwogICAgIHVuc2lnbmVkIGRpcmVjdGl2ZUxpdGVy
YWxMZW5ndGggPSAwOwotICAgIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0ID0gbV90b2tlbi5tX2xvY2F0
aW9uLnN0YXJ0T2Zmc2V0OworICAgIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0ID0gbV90b2tlbi5tX2lu
Zm8uc3RhcnRPZmZzZXQ7CiAgICAgdW5zaWduZWQgb2xkTGFzdExpbmVOdW1iZXIgPSBtX2xleGVy
LT5sYXN0TGluZU51bWJlcigpOwogICAgIHVuc2lnbmVkIG9sZExpbmVOdW1iZXIgPSBtX2xleGVy
LT5saW5lTnVtYmVyKCk7CiAgICAgYm9vbCBoYXNTZXRTdHJpY3QgPSBmYWxzZTsKQEAgLTE3Miw3
ICsxNzIsNiBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgogdGVtcGxhdGUgPGNsYXNz
IFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVZhckRl
Y2xhcmF0aW9uKFRyZWVCdWlsZGVyJiBjb250ZXh0KQogewogICAgIEFTU0VSVChtYXRjaChWQVIp
KTsKLSAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKICAgICBp
bnQgc3RhcnQgPSB0b2tlbkxpbmUoKTsKICAgICBpbnQgZW5kID0gMDsKICAgICBpbnQgc2NyYXRj
aDsKQEAgLTE4MywyMSArMTgyLDIwIEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJl
ZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VWYXJEZWNsYXJhdGlvCiAgICAgZmFp
bElmVHJ1ZShtX2Vycm9yKTsKICAgICBmYWlsSWZGYWxzZShhdXRvU2VtaUNvbG9uKCkpOwogICAg
IAotICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVZhclN0YXRlbWVudChsb2NhdGlvbiwgdmFyRGVj
bHMsIHN0YXJ0LCBlbmQpOworICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVZhclN0YXRlbWVudCht
X2xleGVyLT5sYXN0TGluZU51bWJlcigpLCB2YXJEZWNscywgc3RhcnQsIGVuZCk7CiB9CiAKIHRl
bXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+
IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlQ29uc3REZWNsYXJhdGlvbihU
cmVlQnVpbGRlciYgY29udGV4dCkKIHsKICAgICBBU1NFUlQobWF0Y2goQ09OU1RUT0tFTikpOwot
ICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOwogICAgIGludCBz
dGFydCA9IHRva2VuTGluZSgpOwogICAgIGludCBlbmQgPSAwOwogICAgIFRyZWVDb25zdERlY2xM
aXN0IGNvbnN0RGVjbHMgPSBwYXJzZUNvbnN0RGVjbGFyYXRpb25MaXN0KGNvbnRleHQpOwogICAg
IGZhaWxJZlRydWUobV9lcnJvcik7CiAgICAgZmFpbElmRmFsc2UoYXV0b1NlbWlDb2xvbigpKTsK
ICAgICAKLSAgICByZXR1cm4gY29udGV4dC5jcmVhdGVDb25zdFN0YXRlbWVudChsb2NhdGlvbiwg
Y29uc3REZWNscywgc3RhcnQsIGVuZCk7CisgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlQ29uc3RT
dGF0ZW1lbnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgY29uc3REZWNscywgc3RhcnQsIGVu
ZCk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CkBAIC0yMTIsNyArMjEwLDYg
QEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhl
clR5cGU+OjpwYXJzZURvV2hpbGVTdGF0ZW0KICAgICBlbmRMb29wKCk7CiAgICAgZmFpbElmRmFs
c2Uoc3RhdGVtZW50KTsKICAgICBpbnQgZW5kTGluZSA9IHRva2VuTGluZSgpOwotICAgIEpTVG9r
ZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOwogICAgIGNvbnN1bWVPckZhaWwo
V0hJTEUpOwogICAgIGNvbnN1bWVPckZhaWwoT1BFTlBBUkVOKTsKICAgICBUcmVlRXhwcmVzc2lv
biBleHByID0gcGFyc2VFeHByZXNzaW9uKGNvbnRleHQpOwpAQCAtMjIwLDE0ICsyMTcsMTMgQEAg
dGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5
cGU+OjpwYXJzZURvV2hpbGVTdGF0ZW0KICAgICBjb25zdW1lT3JGYWlsKENMT1NFUEFSRU4pOwog
ICAgIGlmIChtYXRjaChTRU1JQ09MT04pKQogICAgICAgICBuZXh0KCk7IC8vIEFsd2F5cyBwZXJm
b3JtcyBhdXRvbWF0aWMgc2VtaWNvbG9uIGluc2VydGlvbi4KLSAgICByZXR1cm4gY29udGV4dC5j
cmVhdGVEb1doaWxlU3RhdGVtZW50KGxvY2F0aW9uLCBzdGF0ZW1lbnQsIGV4cHIsIHN0YXJ0TGlu
ZSwgZW5kTGluZSk7CisgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRG9XaGlsZVN0YXRlbWVudCht
X2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBzdGF0ZW1lbnQsIGV4cHIsIHN0YXJ0TGluZSwgZW5k
TGluZSk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xh
c3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlV2hp
bGVTdGF0ZW1lbnQoVHJlZUJ1aWxkZXImIGNvbnRleHQpCiB7CiAgICAgQVNTRVJUKG1hdGNoKFdI
SUxFKSk7Ci0gICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CiAg
ICAgaW50IHN0YXJ0TGluZSA9IHRva2VuTGluZSgpOwogICAgIG5leHQoKTsKICAgICBjb25zdW1l
T3JGYWlsKE9QRU5QQVJFTik7CkBAIC0yNDAsNyArMjM2LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRy
ZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVdoaWxlU3Rh
dGVtZW4KICAgICBUcmVlU3RhdGVtZW50IHN0YXRlbWVudCA9IHBhcnNlU3RhdGVtZW50KGNvbnRl
eHQsIHVudXNlZCk7CiAgICAgZW5kTG9vcCgpOwogICAgIGZhaWxJZkZhbHNlKHN0YXRlbWVudCk7
Ci0gICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlV2hpbGVTdGF0ZW1lbnQobG9jYXRpb24sIGV4cHIs
IHN0YXRlbWVudCwgc3RhcnRMaW5lLCBlbmRMaW5lKTsKKyAgICByZXR1cm4gY29udGV4dC5jcmVh
dGVXaGlsZVN0YXRlbWVudChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBleHByLCBzdGF0ZW1l
bnQsIHN0YXJ0TGluZSwgZW5kTGluZSk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5
cGU+CkBAIC0yNDksNyArMjQ1LDYgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVl
RXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VWYXJEZWNsYXJhdGkKICAgICBUcmVl
RXhwcmVzc2lvbiB2YXJEZWNscyA9IDA7CiAgICAgZG8gewogICAgICAgICBkZWNsYXJhdGlvbnMr
KzsKLSAgICAgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CiAg
ICAgICAgIG5leHQoKTsKICAgICAgICAgbWF0Y2hPckZhaWwoSURFTlQpOwogICAgICAgICAKQEAg
LTI3MCwxMSArMjY1LDExIEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJl
c3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlVmFyRGVjbGFyYXRpCiAgICAgICAgICAgICBs
YXN0SW5pdGlhbGl6ZXIgPSBpbml0aWFsaXplcjsKICAgICAgICAgICAgIGZhaWxJZkZhbHNlKGlu
aXRpYWxpemVyKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgVHJlZUV4cHJlc3Npb24gbm9k
ZSA9IGNvbnRleHQuY3JlYXRlQXNzaWduUmVzb2x2ZShsb2NhdGlvbiwgKm5hbWUsIGluaXRpYWxp
emVyLCB2YXJTdGFydCwgdmFyRGl2b3QsIGxhc3RUb2tlbkVuZCgpKTsKKyAgICAgICAgICAgIFRy
ZWVFeHByZXNzaW9uIG5vZGUgPSBjb250ZXh0LmNyZWF0ZUFzc2lnblJlc29sdmUobV9sZXhlci0+
bGFzdExpbmVOdW1iZXIoKSwgKm5hbWUsIGluaXRpYWxpemVyLCB2YXJTdGFydCwgdmFyRGl2b3Qs
IGxhc3RUb2tlbkVuZCgpKTsKICAgICAgICAgICAgIGlmICghdmFyRGVjbHMpCiAgICAgICAgICAg
ICAgICAgdmFyRGVjbHMgPSBub2RlOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAg
IHZhckRlY2xzID0gY29udGV4dC5jb21iaW5lQ29tbWFOb2Rlcyhsb2NhdGlvbiwgdmFyRGVjbHMs
IG5vZGUpOworICAgICAgICAgICAgICAgIHZhckRlY2xzID0gY29udGV4dC5jb21iaW5lQ29tbWFO
b2RlcyhtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCB2YXJEZWNscywgbm9kZSk7CiAgICAgICAg
IH0KICAgICB9IHdoaWxlIChtYXRjaChDT01NQSkpOwogICAgIHJldHVybiB2YXJEZWNsczsKQEAg
LTI4Nyw3ICsyODIsNiBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVDb25zdERl
Y2xMaXN0IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUNvbnN0RGVjbAogICAgIFRyZWVDb25zdERl
Y2xMaXN0IGNvbnN0RGVjbHMgPSAwOwogICAgIFRyZWVDb25zdERlY2xMaXN0IHRhaWwgPSAwOwog
ICAgIGRvIHsKLSAgICAgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uKHRva2VuTG9jYXRpb24o
KSk7CiAgICAgICAgIG5leHQoKTsKICAgICAgICAgbWF0Y2hPckZhaWwoSURFTlQpOwogICAgICAg
ICBjb25zdCBJZGVudGlmaWVyKiBuYW1lID0gbV90b2tlbi5tX2RhdGEuaWRlbnQ7CkBAIC0zMDAs
NyArMjk0LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlQ29uc3REZWNsTGlz
dCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VDb25zdERlY2wKICAgICAgICAgICAgIG5leHQoVHJl
ZUJ1aWxkZXI6OkRvbnRCdWlsZFN0cmluZ3MpOyAvLyBjb25zdW1lICc9JwogICAgICAgICAgICAg
aW5pdGlhbGl6ZXIgPSBwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKGNvbnRleHQpOwogICAgICAg
ICB9Ci0gICAgICAgIHRhaWwgPSBjb250ZXh0LmFwcGVuZENvbnN0RGVjbChsb2NhdGlvbiwgdGFp
bCwgbmFtZSwgaW5pdGlhbGl6ZXIpOworICAgICAgICB0YWlsID0gY29udGV4dC5hcHBlbmRDb25z
dERlY2wobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgdGFpbCwgbmFtZSwgaW5pdGlhbGl6ZXIp
OwogICAgICAgICBpZiAoIWNvbnN0RGVjbHMpCiAgICAgICAgICAgICBjb25zdERlY2xzID0gdGFp
bDsKICAgICB9IHdoaWxlIChtYXRjaChDT01NQSkpOwpAQCAtMzExLDcgKzMwNSw2IEBAIHRlbXBs
YXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRy
ZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRm9yU3RhdGVtZW50KFRyZWVCdWls
ZGVyJiBjb250ZXh0KQogewogICAgIEFTU0VSVChtYXRjaChGT1IpKTsKLSAgICBKU1Rva2VuTG9j
YXRpb24gbG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKICAgICBpbnQgc3RhcnRMaW5lID0gdG9r
ZW5MaW5lKCk7CiAgICAgbmV4dCgpOwogICAgIGNvbnN1bWVPckZhaWwoT1BFTlBBUkVOKTsKQEAg
LTM1OSw3ICszNTIsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1l
bnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRm9yU3RhdGVtZW50KAogICAgICAgICBlbmRMb29w
KCk7CiAgICAgICAgIGZhaWxJZkZhbHNlKHN0YXRlbWVudCk7CiAgICAgICAgIAotICAgICAgICBy
ZXR1cm4gY29udGV4dC5jcmVhdGVGb3JJbkxvb3AobG9jYXRpb24sIGZvckluVGFyZ2V0LCBmb3JJ
bkluaXRpYWxpemVyLCBleHByLCBzdGF0ZW1lbnQsIGRlY2xzU3RhcnQsIGluTG9jYXRpb24sIGV4
cHJFbmQsIGluaXRTdGFydCwgaW5pdEVuZCwgc3RhcnRMaW5lLCBlbmRMaW5lKTsKKyAgICAgICAg
cmV0dXJuIGNvbnRleHQuY3JlYXRlRm9ySW5Mb29wKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCks
IGZvckluVGFyZ2V0LCBmb3JJbkluaXRpYWxpemVyLCBleHByLCBzdGF0ZW1lbnQsIGRlY2xzU3Rh
cnQsIGluTG9jYXRpb24sIGV4cHJFbmQsIGluaXRTdGFydCwgaW5pdEVuZCwgc3RhcnRMaW5lLCBl
bmRMaW5lKTsKICAgICB9CiAgICAgCiAgICAgaWYgKCFtYXRjaChTRU1JQ09MT04pKSB7CkBAIC0z
OTUsNyArMzg4LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50
IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZvclN0YXRlbWVudCgKICAgICAgICAgVHJlZVN0YXRl
bWVudCBzdGF0ZW1lbnQgPSBwYXJzZVN0YXRlbWVudChjb250ZXh0LCB1bnVzZWQpOwogICAgICAg
ICBlbmRMb29wKCk7CiAgICAgICAgIGZhaWxJZkZhbHNlKHN0YXRlbWVudCk7Ci0gICAgICAgIHJl
dHVybiBjb250ZXh0LmNyZWF0ZUZvckxvb3AobG9jYXRpb24sIGRlY2xzLCBjb25kaXRpb24sIGlu
Y3JlbWVudCwgc3RhdGVtZW50LCBzdGFydExpbmUsIGVuZExpbmUpOworICAgICAgICByZXR1cm4g
Y29udGV4dC5jcmVhdGVGb3JMb29wKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGRlY2xzLCBj
b25kaXRpb24sIGluY3JlbWVudCwgc3RhdGVtZW50LCBzdGFydExpbmUsIGVuZExpbmUpOwogICAg
IH0KICAgICAKICAgICAvLyBGb3ItaW4gbG9vcApAQCAtNDEyLDE0ICs0MDUsMTMgQEAgdGVtcGxh
dGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+Ojpw
YXJzZUZvclN0YXRlbWVudCgKICAgICBlbmRMb29wKCk7CiAgICAgZmFpbElmRmFsc2Uoc3RhdGVt
ZW50KTsKICAgICAKLSAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGb3JJbkxvb3AobG9jYXRpb24s
IGRlY2xzLCBleHByLCBzdGF0ZW1lbnQsIGRlY2xzU3RhcnQsIGRlY2xzRW5kLCBleHByRW5kLCBz
dGFydExpbmUsIGVuZExpbmUpOworICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZvckluTG9vcCht
X2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBkZWNscywgZXhwciwgc3RhdGVtZW50LCBkZWNsc1N0
YXJ0LCBkZWNsc0VuZCwgZXhwckVuZCwgc3RhcnRMaW5lLCBlbmRMaW5lKTsKIH0KIAogdGVtcGxh
dGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJl
ZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VCcmVha1N0YXRlbWVudChUcmVlQnVp
bGRlciYgY29udGV4dCkKIHsKICAgICBBU1NFUlQobWF0Y2goQlJFQUspKTsKLSAgICBKU1Rva2Vu
TG9jYXRpb24gbG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKICAgICBpbnQgc3RhcnRDb2wgPSB0
b2tlblN0YXJ0KCk7CiAgICAgaW50IGVuZENvbCA9IHRva2VuRW5kKCk7CiAgICAgaW50IHN0YXJ0
TGluZSA9IHRva2VuTGluZSgpOwpAQCAtNDI4LDcgKzQyMCw3IEBAIHRlbXBsYXRlIDxjbGFzcyBU
cmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VCcmVha1N0
YXRlbWVuCiAgICAgCiAgICAgaWYgKGF1dG9TZW1pQ29sb24oKSkgewogICAgICAgICBmYWlsSWZG
YWxzZVdpdGhNZXNzYWdlKGJyZWFrSXNWYWxpZCgpLCAiJ2JyZWFrJyBpcyBvbmx5IHZhbGlkIGlu
c2lkZSBhIHN3aXRjaCBvciBsb29wIHN0YXRlbWVudCIpOwotICAgICAgICByZXR1cm4gY29udGV4
dC5jcmVhdGVCcmVha1N0YXRlbWVudChsb2NhdGlvbiwgc3RhcnRDb2wsIGVuZENvbCwgc3RhcnRM
aW5lLCBlbmRMaW5lKTsKKyAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlQnJlYWtTdGF0ZW1l
bnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgc3RhcnRDb2wsIGVuZENvbCwgc3RhcnRMaW5l
LCBlbmRMaW5lKTsKICAgICB9CiAgICAgbWF0Y2hPckZhaWwoSURFTlQpOwogICAgIGNvbnN0IElk
ZW50aWZpZXIqIGlkZW50ID0gbV90b2tlbi5tX2RhdGEuaWRlbnQ7CkBAIC00MzcsMTQgKzQyOSwx
MyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExl
eGVyVHlwZT46OnBhcnNlQnJlYWtTdGF0ZW1lbgogICAgIGVuZExpbmUgPSB0b2tlbkxpbmUoKTsK
ICAgICBuZXh0KCk7CiAgICAgZmFpbElmRmFsc2UoYXV0b1NlbWlDb2xvbigpKTsKLSAgICByZXR1
cm4gY29udGV4dC5jcmVhdGVCcmVha1N0YXRlbWVudChsb2NhdGlvbiwgaWRlbnQsIHN0YXJ0Q29s
LCBlbmRDb2wsIHN0YXJ0TGluZSwgZW5kTGluZSk7CisgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRl
QnJlYWtTdGF0ZW1lbnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgaWRlbnQsIHN0YXJ0Q29s
LCBlbmRDb2wsIHN0YXJ0TGluZSwgZW5kTGluZSk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBM
ZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFy
c2VyPExleGVyVHlwZT46OnBhcnNlQ29udGludWVTdGF0ZW1lbnQoVHJlZUJ1aWxkZXImIGNvbnRl
eHQpCiB7CiAgICAgQVNTRVJUKG1hdGNoKENPTlRJTlVFKSk7Ci0gICAgSlNUb2tlbkxvY2F0aW9u
IGxvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CiAgICAgaW50IHN0YXJ0Q29sID0gdG9rZW5TdGFy
dCgpOwogICAgIGludCBlbmRDb2wgPSB0b2tlbkVuZCgpOwogICAgIGludCBzdGFydExpbmUgPSB0
b2tlbkxpbmUoKTsKQEAgLTQ1Myw3ICs0NDQsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxk
ZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlQ29udGludWVTdGF0ZQog
ICAgIAogICAgIGlmIChhdXRvU2VtaUNvbG9uKCkpIHsKICAgICAgICAgZmFpbElmRmFsc2VXaXRo
TWVzc2FnZShjb250aW51ZUlzVmFsaWQoKSwgIidjb250aW51ZScgaXMgb25seSB2YWxpZCBpbnNp
ZGUgYSBsb29wIHN0YXRlbWVudCIpOwotICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVDb250
aW51ZVN0YXRlbWVudChsb2NhdGlvbiwgc3RhcnRDb2wsIGVuZENvbCwgc3RhcnRMaW5lLCBlbmRM
aW5lKTsKKyAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlQ29udGludWVTdGF0ZW1lbnQobV9s
ZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgc3RhcnRDb2wsIGVuZENvbCwgc3RhcnRMaW5lLCBlbmRM
aW5lKTsKICAgICB9CiAgICAgbWF0Y2hPckZhaWwoSURFTlQpOwogICAgIGNvbnN0IElkZW50aWZp
ZXIqIGlkZW50ID0gbV90b2tlbi5tX2RhdGEuaWRlbnQ7CkBAIC00NjQsMTQgKzQ1NSwxMyBAQCB0
ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlw
ZT46OnBhcnNlQ29udGludWVTdGF0ZQogICAgIGVuZExpbmUgPSB0b2tlbkxpbmUoKTsKICAgICBu
ZXh0KCk7CiAgICAgZmFpbElmRmFsc2UoYXV0b1NlbWlDb2xvbigpKTsKLSAgICByZXR1cm4gY29u
dGV4dC5jcmVhdGVDb250aW51ZVN0YXRlbWVudChsb2NhdGlvbiwgaWRlbnQsIHN0YXJ0Q29sLCBl
bmRDb2wsIHN0YXJ0TGluZSwgZW5kTGluZSk7CisgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlQ29u
dGludWVTdGF0ZW1lbnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgaWRlbnQsIHN0YXJ0Q29s
LCBlbmRDb2wsIHN0YXJ0TGluZSwgZW5kTGluZSk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBM
ZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFy
c2VyPExleGVyVHlwZT46OnBhcnNlUmV0dXJuU3RhdGVtZW50KFRyZWVCdWlsZGVyJiBjb250ZXh0
KQogewogICAgIEFTU0VSVChtYXRjaChSRVRVUk4pKTsKLSAgICBKU1Rva2VuTG9jYXRpb24gbG9j
YXRpb24odG9rZW5Mb2NhdGlvbigpKTsKICAgICBmYWlsSWZGYWxzZShjdXJyZW50U2NvcGUoKS0+
aXNGdW5jdGlvbigpKTsKICAgICBpbnQgc3RhcnRMaW5lID0gdG9rZW5MaW5lKCk7CiAgICAgaW50
IGVuZExpbmUgPSBzdGFydExpbmU7CkBAIC00ODQsMjEgKzQ3NCwyMCBAQCB0ZW1wbGF0ZSA8Y2xh
c3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlUmV0
dXJuU3RhdGVtZQogICAgIGlmIChtYXRjaChTRU1JQ09MT04pKQogICAgICAgICBlbmRMaW5lICA9
IHRva2VuTGluZSgpOwogICAgIGlmIChhdXRvU2VtaUNvbG9uKCkpCi0gICAgICAgIHJldHVybiBj
b250ZXh0LmNyZWF0ZVJldHVyblN0YXRlbWVudChsb2NhdGlvbiwgMCwgc3RhcnQsIGVuZCwgc3Rh
cnRMaW5lLCBlbmRMaW5lKTsKKyAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlUmV0dXJuU3Rh
dGVtZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIDAsIHN0YXJ0LCBlbmQsIHN0YXJ0TGlu
ZSwgZW5kTGluZSk7CiAgICAgVHJlZUV4cHJlc3Npb24gZXhwciA9IHBhcnNlRXhwcmVzc2lvbihj
b250ZXh0KTsKICAgICBmYWlsSWZGYWxzZShleHByKTsKICAgICBlbmQgPSBsYXN0VG9rZW5FbmQo
KTsKICAgICBpZiAobWF0Y2goU0VNSUNPTE9OKSkKICAgICAgICAgZW5kTGluZSAgPSB0b2tlbkxp
bmUoKTsKICAgICBmYWlsSWZGYWxzZShhdXRvU2VtaUNvbG9uKCkpOwotICAgIHJldHVybiBjb250
ZXh0LmNyZWF0ZVJldHVyblN0YXRlbWVudChsb2NhdGlvbiwgZXhwciwgc3RhcnQsIGVuZCwgc3Rh
cnRMaW5lLCBlbmRMaW5lKTsKKyAgICByZXR1cm4gY29udGV4dC5jcmVhdGVSZXR1cm5TdGF0ZW1l
bnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgZXhwciwgc3RhcnQsIGVuZCwgc3RhcnRMaW5l
LCBlbmRMaW5lKTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHRlbXBsYXRl
IDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFy
c2VUaHJvd1N0YXRlbWVudChUcmVlQnVpbGRlciYgY29udGV4dCkKIHsKICAgICBBU1NFUlQobWF0
Y2goVEhST1cpKTsKLSAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24odG9rZW5Mb2NhdGlvbigp
KTsKICAgICBpbnQgZVN0YXJ0ID0gdG9rZW5TdGFydCgpOwogICAgIGludCBzdGFydExpbmUgPSB0
b2tlbkxpbmUoKTsKICAgICBuZXh0KCk7CkBAIC01MTEsMTQgKzUwMCwxMyBAQCB0ZW1wbGF0ZSA8
Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNl
VGhyb3dTdGF0ZW1lbgogICAgIGludCBlbmRMaW5lID0gdG9rZW5MaW5lKCk7CiAgICAgZmFpbElm
RmFsc2UoYXV0b1NlbWlDb2xvbigpKTsKICAgICAKLSAgICByZXR1cm4gY29udGV4dC5jcmVhdGVU
aHJvd1N0YXRlbWVudChsb2NhdGlvbiwgZXhwciwgZVN0YXJ0LCBlRW5kLCBzdGFydExpbmUsIGVu
ZExpbmUpOworICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVRocm93U3RhdGVtZW50KG1fbGV4ZXIt
Pmxhc3RMaW5lTnVtYmVyKCksIGV4cHIsIGVTdGFydCwgZUVuZCwgc3RhcnRMaW5lLCBlbmRMaW5l
KTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHRlbXBsYXRlIDxjbGFzcyBU
cmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VXaXRoU3Rh
dGVtZW50KFRyZWVCdWlsZGVyJiBjb250ZXh0KQogewogICAgIEFTU0VSVChtYXRjaChXSVRIKSk7
Ci0gICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CiAgICAgZmFp
bElmVHJ1ZVdpdGhNZXNzYWdlKHN0cmljdE1vZGUoKSwgIid3aXRoJyBzdGF0ZW1lbnRzIGFyZSBu
b3QgdmFsaWQgaW4gc3RyaWN0IG1vZGUiKTsKICAgICBjdXJyZW50U2NvcGUoKS0+c2V0TmVlZHNG
dWxsQWN0aXZhdGlvbigpOwogICAgIGludCBzdGFydExpbmUgPSB0b2tlbkxpbmUoKTsKQEAgLTUz
NSwxNCArNTIzLDEzIEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVu
dCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VXaXRoU3RhdGVtZW50CiAgICAgVHJlZVN0YXRlbWVu
dCBzdGF0ZW1lbnQgPSBwYXJzZVN0YXRlbWVudChjb250ZXh0LCB1bnVzZWQpOwogICAgIGZhaWxJ
ZkZhbHNlKHN0YXRlbWVudCk7CiAgICAgCi0gICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlV2l0aFN0
YXRlbWVudChsb2NhdGlvbiwgZXhwciwgc3RhdGVtZW50LCBzdGFydCwgZW5kLCBzdGFydExpbmUs
IGVuZExpbmUpOworICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVdpdGhTdGF0ZW1lbnQobV9sZXhl
ci0+bGFzdExpbmVOdW1iZXIoKSwgZXhwciwgc3RhdGVtZW50LCBzdGFydCwgZW5kLCBzdGFydExp
bmUsIGVuZExpbmUpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgogdGVtcGxh
dGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+Ojpw
YXJzZVN3aXRjaFN0YXRlbWVudChUcmVlQnVpbGRlciYgY29udGV4dCkKIHsKICAgICBBU1NFUlQo
bWF0Y2goU1dJVENIKSk7Ci0gICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uKHRva2VuTG9jYXRp
b24oKSk7CiAgICAgaW50IHN0YXJ0TGluZSA9IHRva2VuTGluZSgpOwogICAgIG5leHQoKTsKICAg
ICBjb25zdW1lT3JGYWlsKE9QRU5QQVJFTik7CkBAIC01NjMsNyArNTUwLDcgQEAgdGVtcGxhdGUg
PGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJz
ZVN3aXRjaFN0YXRlbWUKICAgICBlbmRTd2l0Y2goKTsKICAgICBjb25zdW1lT3JGYWlsKENMT1NF
QlJBQ0UpOwogICAgIAotICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVN3aXRjaFN0YXRlbWVudChs
b2NhdGlvbiwgZXhwciwgZmlyc3RDbGF1c2VzLCBkZWZhdWx0Q2xhdXNlLCBzZWNvbmRDbGF1c2Vz
LCBzdGFydExpbmUsIGVuZExpbmUpOworICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVN3aXRjaFN0
YXRlbWVudChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBleHByLCBmaXJzdENsYXVzZXMsIGRl
ZmF1bHRDbGF1c2UsIHNlY29uZENsYXVzZXMsIHN0YXJ0TGluZSwgZW5kTGluZSk7CiAgICAgCiB9
CiAKQEAgLTYxMSw3ICs1OTgsNiBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgogdGVt
cGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+
OjpwYXJzZVRyeVN0YXRlbWVudChUcmVlQnVpbGRlciYgY29udGV4dCkKIHsKICAgICBBU1NFUlQo
bWF0Y2goVFJZKSk7Ci0gICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uKHRva2VuTG9jYXRpb24o
KSk7CiAgICAgVHJlZVN0YXRlbWVudCB0cnlCbG9jayA9IDA7CiAgICAgY29uc3QgSWRlbnRpZmll
ciogaWRlbnQgPSAmbV9nbG9iYWxEYXRhLT5wcm9wZXJ0eU5hbWVzLT5udWxsSWRlbnRpZmllcjsK
ICAgICBUcmVlU3RhdGVtZW50IGNhdGNoQmxvY2sgPSAwOwpAQCAtNjQ4LDM5ICs2MzQsMzcgQEAg
dGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5
cGU+OjpwYXJzZVRyeVN0YXRlbWVudCgKICAgICAgICAgZmFpbElmRmFsc2UoZmluYWxseUJsb2Nr
KTsKICAgICB9CiAgICAgZmFpbElmRmFsc2UoY2F0Y2hCbG9jayB8fCBmaW5hbGx5QmxvY2spOwot
ICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVRyeVN0YXRlbWVudChsb2NhdGlvbiwgdHJ5QmxvY2ss
IGlkZW50LCBjYXRjaEJsb2NrLCBmaW5hbGx5QmxvY2ssIGZpcnN0TGluZSwgbGFzdExpbmUpOwor
ICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVRyeVN0YXRlbWVudChtX2xleGVyLT5sYXN0TGluZU51
bWJlcigpLCB0cnlCbG9jaywgaWRlbnQsIGNhdGNoQmxvY2ssIGZpbmFsbHlCbG9jaywgZmlyc3RM
aW5lLCBsYXN0TGluZSk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CiB0ZW1w
bGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46
OnBhcnNlRGVidWdnZXJTdGF0ZW1lbnQoVHJlZUJ1aWxkZXImIGNvbnRleHQpCiB7CiAgICAgQVNT
RVJUKG1hdGNoKERFQlVHR0VSKSk7Ci0gICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uKHRva2Vu
TG9jYXRpb24oKSk7CiAgICAgaW50IHN0YXJ0TGluZSA9IHRva2VuTGluZSgpOwogICAgIGludCBl
bmRMaW5lID0gc3RhcnRMaW5lOwogICAgIG5leHQoKTsKICAgICBpZiAobWF0Y2goU0VNSUNPTE9O
KSkKICAgICAgICAgc3RhcnRMaW5lID0gdG9rZW5MaW5lKCk7CiAgICAgZmFpbElmRmFsc2UoYXV0
b1NlbWlDb2xvbigpKTsKLSAgICByZXR1cm4gY29udGV4dC5jcmVhdGVEZWJ1Z2dlcihsb2NhdGlv
biwgc3RhcnRMaW5lLCBlbmRMaW5lKTsKKyAgICByZXR1cm4gY29udGV4dC5jcmVhdGVEZWJ1Z2dl
cihtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBzdGFydExpbmUsIGVuZExpbmUpOwogfQogCiB0
ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgogdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVy
PiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUJsb2NrU3RhdGVtZW50KFRy
ZWVCdWlsZGVyJiBjb250ZXh0KQogewogICAgIEFTU0VSVChtYXRjaChPUEVOQlJBQ0UpKTsKLSAg
ICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKICAgICBpbnQgc3Rh
cnQgPSB0b2tlbkxpbmUoKTsKICAgICBuZXh0KCk7CiAgICAgaWYgKG1hdGNoKENMT1NFQlJBQ0Up
KSB7CiAgICAgICAgIG5leHQoKTsKLSAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlQmxvY2tT
dGF0ZW1lbnQobG9jYXRpb24sIDAsIHN0YXJ0LCBtX2xhc3RMaW5lKTsKKyAgICAgICAgcmV0dXJu
IGNvbnRleHQuY3JlYXRlQmxvY2tTdGF0ZW1lbnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwg
MCwgc3RhcnQsIG1fbGFzdExpbmUpOwogICAgIH0KICAgICBUcmVlU291cmNlRWxlbWVudHMgc3Vi
dHJlZSA9IHBhcnNlU291cmNlRWxlbWVudHM8RG9udENoZWNrRm9yU3RyaWN0TW9kZT4oY29udGV4
dCk7CiAgICAgZmFpbElmRmFsc2Uoc3VidHJlZSk7CiAgICAgbWF0Y2hPckZhaWwoQ0xPU0VCUkFD
RSk7CiAgICAgbmV4dCgpOwotICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUJsb2NrU3RhdGVtZW50
KGxvY2F0aW9uLCBzdWJ0cmVlLCBzdGFydCwgbV9sYXN0TGluZSk7CisgICAgcmV0dXJuIGNvbnRl
eHQuY3JlYXRlQmxvY2tTdGF0ZW1lbnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgc3VidHJl
ZSwgc3RhcnQsIG1fbGFzdExpbmUpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBl
PgpAQCAtNzAxLDExICs2ODUsOSBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVT
dGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlU3RhdGVtZW50KFRyZQogICAgIGNhc2Ug
RlVOQ1RJT046CiAgICAgICAgIGZhaWxJZkZhbHNlSWZTdHJpY3RXaXRoTWVzc2FnZShtX3N0YXRl
bWVudERlcHRoID09IDEsICJGdW5jdGlvbnMgY2Fubm90IGJlIGRlY2xhcmVkIGluIGEgbmVzdGVk
IGJsb2NrIGluIHN0cmljdCBtb2RlIik7CiAgICAgICAgIHJldHVybiBwYXJzZUZ1bmN0aW9uRGVj
bGFyYXRpb24oY29udGV4dCk7Ci0gICAgY2FzZSBTRU1JQ09MT046IHsKLSAgICAgICAgSlNUb2tl
bkxvY2F0aW9uIGxvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CisgICAgY2FzZSBTRU1JQ09MT046
CiAgICAgICAgIG5leHQoKTsKLSAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRW1wdHlTdGF0
ZW1lbnQobG9jYXRpb24pOwotICAgIH0KKyAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRW1w
dHlTdGF0ZW1lbnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSk7CiAgICAgY2FzZSBJRjoKICAg
ICAgICAgcmV0dXJuIHBhcnNlSWZTdGF0ZW1lbnQoY29udGV4dCk7CiAgICAgY2FzZSBETzoKQEAg
LTc0MSw3ICs3MjMsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1l
bnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlU3RhdGVtZW50KFRyZQogICAgIGNhc2UgU1RSSU5H
OgogICAgICAgICBkaXJlY3RpdmUgPSBtX3Rva2VuLm1fZGF0YS5pZGVudDsKICAgICAgICAgaWYg
KGRpcmVjdGl2ZUxpdGVyYWxMZW5ndGgpCi0gICAgICAgICAgICAqZGlyZWN0aXZlTGl0ZXJhbExl
bmd0aCA9IG1fdG9rZW4ubV9sb2NhdGlvbi5lbmRPZmZzZXQgLSBtX3Rva2VuLm1fbG9jYXRpb24u
c3RhcnRPZmZzZXQ7CisgICAgICAgICAgICAqZGlyZWN0aXZlTGl0ZXJhbExlbmd0aCA9IG1fdG9r
ZW4ubV9pbmZvLmVuZE9mZnNldCAtIG1fdG9rZW4ubV9pbmZvLnN0YXJ0T2Zmc2V0OwogICAgICAg
ICBub25Ucml2aWFsRXhwcmVzc2lvbkNvdW50ID0gbV9ub25Ucml2aWFsRXhwcmVzc2lvbkNvdW50
OwogICAgIGRlZmF1bHQ6CiAgICAgICAgIFRyZWVTdGF0ZW1lbnQgZXhwclN0YXRlbWVudCA9IHBh
cnNlRXhwcmVzc2lvblN0YXRlbWVudChjb250ZXh0KTsKQEAgLTc3NCwxMiArNzU2LDEyIEBAIHRl
bXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+
IFRyZWVGdW5jdGlvbkJvZHkgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRnVuY3Rpb25Cb2R5KFRy
ZWVCdWlsZGVyJiBjb250ZXh0KQogewogICAgIGlmIChtYXRjaChDTE9TRUJSQUNFKSkKLSAgICAg
ICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRnVuY3Rpb25Cb2R5KHRva2VuTG9jYXRpb24oKSwgc3Ry
aWN0TW9kZSgpKTsKKyAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRnVuY3Rpb25Cb2R5KG1f
bGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHN0cmljdE1vZGUoKSk7CiAgICAgRGVwdGhNYW5hZ2Vy
IHN0YXRlbWVudERlcHRoKCZtX3N0YXRlbWVudERlcHRoKTsKICAgICBtX3N0YXRlbWVudERlcHRo
ID0gMDsKICAgICB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6RnVuY3Rpb25Cb2R5QnVpbGRlciBib2R5
QnVpbGRlcihjb25zdF9jYXN0PEpTR2xvYmFsRGF0YSo+KG1fZ2xvYmFsRGF0YSksIG1fbGV4ZXIu
Z2V0KCkpOwogICAgIGZhaWxJZkZhbHNlKHBhcnNlU291cmNlRWxlbWVudHM8Q2hlY2tGb3JTdHJp
Y3RNb2RlPihib2R5QnVpbGRlcikpOwotICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9u
Qm9keSh0b2tlbkxvY2F0aW9uKCksIHN0cmljdE1vZGUoKSk7CisgICAgcmV0dXJuIGNvbnRleHQu
Y3JlYXRlRnVuY3Rpb25Cb2R5KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHN0cmljdE1vZGUo
KSk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CkBAIC04MDQsMjEgKzc4Niwy
MCBAQCB0ZW1wbGF0ZSA8RnVuY3Rpb25SZXF1aXJlbWVudHMgcmVxdWlyZW1lbnRzLCBib29sIG5h
bWVJc0luQ29udGFpbmluZ1Njb3BlLCBjbGFzcwogICAgIAogICAgIG9wZW5CcmFjZVBvcyA9IG1f
dG9rZW4ubV9kYXRhLmludFZhbHVlOwogICAgIGJvZHlTdGFydExpbmUgPSB0b2tlbkxpbmUoKTsK
LSAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKICAgICAKICAg
ICAvLyBJZiB3ZSBrbm93IGFib3V0IHRoaXMgZnVuY3Rpb24gYWxyZWFkeSwgd2UgY2FuIHVzZSB0
aGUgY2FjaGVkIGluZm8gYW5kIHNraXAgdGhlIHBhcnNlciB0byB0aGUgZW5kIG9mIHRoZSBmdW5j
dGlvbi4KICAgICBpZiAoY29uc3QgU291cmNlUHJvdmlkZXJDYWNoZUl0ZW0qIGNhY2hlZEluZm8g
PSBUcmVlQnVpbGRlcjo6Q2FuVXNlRnVuY3Rpb25DYWNoZSA/IGZpbmRDYWNoZWRGdW5jdGlvbklu
Zm8ob3BlbkJyYWNlUG9zKSA6IDApIHsKICAgICAgICAgLy8gSWYgd2UncmUgaW4gYSBzdHJpY3Qg
Y29udGV4dCwgdGhlIGNhY2hlZCBmdW5jdGlvbiBpbmZvIG11c3Qgc2F5IGl0IHdhcyBzdHJpY3Qg
dG9vLgogICAgICAgICBBU1NFUlQoIXN0cmljdE1vZGUoKSB8fCBjYWNoZWRJbmZvLT5zdHJpY3RN
b2RlKTsKLSAgICAgICAgYm9keSA9IGNvbnRleHQuY3JlYXRlRnVuY3Rpb25Cb2R5KGxvY2F0aW9u
LCBjYWNoZWRJbmZvLT5zdHJpY3RNb2RlKTsKKyAgICAgICAgYm9keSA9IGNvbnRleHQuY3JlYXRl
RnVuY3Rpb25Cb2R5KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGNhY2hlZEluZm8tPnN0cmlj
dE1vZGUpOwogICAgICAgICAKICAgICAgICAgZnVuY3Rpb25TY29wZS0+cmVzdG9yZUZ1bmN0aW9u
SW5mbyhjYWNoZWRJbmZvKTsKICAgICAgICAgZmFpbElmRmFsc2UocG9wU2NvcGUoZnVuY3Rpb25T
Y29wZSwgVHJlZUJ1aWxkZXI6Ok5lZWRzRnJlZVZhcmlhYmxlSW5mbykpOwogICAgICAgICAKICAg
ICAgICAgY2xvc2VCcmFjZVBvcyA9IGNhY2hlZEluZm8tPmNsb3NlQnJhY2VQb3M7CiAgICAgICAg
IG1fdG9rZW4gPSBjYWNoZWRJbmZvLT5jbG9zZUJyYWNlVG9rZW4oKTsKLSAgICAgICAgbV9sZXhl
ci0+c2V0T2Zmc2V0KG1fdG9rZW4ubV9sb2NhdGlvbi5lbmRPZmZzZXQpOwotICAgICAgICBtX2xl
eGVyLT5zZXRMaW5lTnVtYmVyKG1fdG9rZW4ubV9sb2NhdGlvbi5saW5lKTsKKyAgICAgICAgbV9s
ZXhlci0+c2V0T2Zmc2V0KG1fdG9rZW4ubV9pbmZvLmVuZE9mZnNldCk7CisgICAgICAgIG1fbGV4
ZXItPnNldExpbmVOdW1iZXIobV90b2tlbi5tX2luZm8ubGluZSk7CiAgICAgICAgIAogICAgICAg
ICBuZXh0KCk7CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtODQwLDcgKzgyMSw3IEBAIHRlbXBs
YXRlIDxGdW5jdGlvblJlcXVpcmVtZW50cyByZXF1aXJlbWVudHMsIGJvb2wgbmFtZUlzSW5Db250
YWluaW5nU2NvcGUsIGNsYXNzCiAgICAgT3duUHRyPFNvdXJjZVByb3ZpZGVyQ2FjaGVJdGVtPiBu
ZXdJbmZvOwogICAgIGludCBmdW5jdGlvbkxlbmd0aCA9IGNsb3NlQnJhY2VQb3MgLSBvcGVuQnJh
Y2VQb3M7CiAgICAgaWYgKFRyZWVCdWlsZGVyOjpDYW5Vc2VGdW5jdGlvbkNhY2hlICYmIG1fZnVu
Y3Rpb25DYWNoZSAmJiBmdW5jdGlvbkxlbmd0aCA+IG1pbmltdW1GdW5jdGlvbkxlbmd0aFRvQ2Fj
aGUpIHsKLSAgICAgICAgbmV3SW5mbyA9IGFkb3B0UHRyKG5ldyBTb3VyY2VQcm92aWRlckNhY2hl
SXRlbShtX3Rva2VuLm1fbG9jYXRpb24ubGluZSwgY2xvc2VCcmFjZVBvcykpOworICAgICAgICBu
ZXdJbmZvID0gYWRvcHRQdHIobmV3IFNvdXJjZVByb3ZpZGVyQ2FjaGVJdGVtKG1fdG9rZW4ubV9p
bmZvLmxpbmUsIGNsb3NlQnJhY2VQb3MpKTsKICAgICAgICAgZnVuY3Rpb25TY29wZS0+c2F2ZUZ1
bmN0aW9uSW5mbyhuZXdJbmZvLmdldCgpKTsKICAgICB9CiAgICAgCkBAIC04NjAsNyArODQxLDYg
QEAgdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVp
bGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkRlY2xh
cmF0aW9uKFRyZWVCdWlsZGVyJiBjb250ZXh0KQogewogICAgIEFTU0VSVChtYXRjaChGVU5DVElP
TikpOwotICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOwogICAg
IG5leHQoKTsKICAgICBjb25zdCBJZGVudGlmaWVyKiBuYW1lID0gMDsKICAgICBUcmVlRm9ybWFs
UGFyYW1ldGVyTGlzdCBwYXJhbWV0ZXJzID0gMDsKQEAgLTg3MSw3ICs4NTEsNyBAQCB0ZW1wbGF0
ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBh
cnNlRnVuY3Rpb25EZWNsYQogICAgIGZhaWxJZkZhbHNlKChwYXJzZUZ1bmN0aW9uSW5mbzxGdW5j
dGlvbk5lZWRzTmFtZSwgdHJ1ZT4oY29udGV4dCwgbmFtZSwgcGFyYW1ldGVycywgYm9keSwgb3Bl
bkJyYWNlUG9zLCBjbG9zZUJyYWNlUG9zLCBib2R5U3RhcnRMaW5lKSkpOwogICAgIGZhaWxJZkZh
bHNlKG5hbWUpOwogICAgIGZhaWxJZkZhbHNlSWZTdHJpY3QoZGVjbGFyZVZhcmlhYmxlKG5hbWUp
KTsKLSAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jRGVjbFN0YXRlbWVudChsb2NhdGlvbiwg
bmFtZSwgYm9keSwgcGFyYW1ldGVycywgb3BlbkJyYWNlUG9zLCBjbG9zZUJyYWNlUG9zLCBib2R5
U3RhcnRMaW5lLCBtX2xhc3RMaW5lKTsKKyAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jRGVj
bFN0YXRlbWVudChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBuYW1lLCBib2R5LCBwYXJhbWV0
ZXJzLCBvcGVuQnJhY2VQb3MsIGNsb3NlQnJhY2VQb3MsIGJvZHlTdGFydExpbmUsIG1fbGFzdExp
bmUpOwogfQogCiBzdHJ1Y3QgTGFiZWxJbmZvIHsKQEAgLTg5NSwxMSArODc1LDEwIEBAIHRlbXBs
YXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6
cGFyc2VFeHByZXNzaW9uT3JMCiAgICAgICogc3BlY2lhbCBjYXNlIHRoYXQgbG9va3MgZm9yIGEg
Y29sb24gYXMgdGhlIG5leHQgY2hhcmFjdGVyIGluIHRoZSBpbnB1dC4KICAgICAgKi8KICAgICBW
ZWN0b3I8TGFiZWxJbmZvPiBsYWJlbHM7Ci0gICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uOwor
ICAgIAogICAgIGRvIHsKICAgICAgICAgaW50IHN0YXJ0ID0gdG9rZW5TdGFydCgpOwogICAgICAg
ICBpbnQgc3RhcnRMaW5lID0gdG9rZW5MaW5lKCk7Ci0gICAgICAgIGxvY2F0aW9uID0gdG9rZW5M
b2NhdGlvbigpOwogICAgICAgICBpZiAoIW5leHRUb2tlbklzQ29sb24oKSkgewogICAgICAgICAg
ICAgLy8gSWYgd2UgaGl0IHRoaXMgcGF0aCB3ZSdyZSBtYWtpbmcgYSBleHByZXNzaW9uIHN0YXRl
bWVudCwgd2hpY2gKICAgICAgICAgICAgIC8vIGJ5IGRlZmluaXRpb24gY2FuJ3QgbWFrZSB1c2Ug
b2YgY29udGludWUvYnJlYWsgc28gd2UgY2FuIGp1c3QKQEAgLTkwNyw3ICs4ODYsNyBAQCB0ZW1w
bGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46
OnBhcnNlRXhwcmVzc2lvbk9yTAogICAgICAgICAgICAgVHJlZUV4cHJlc3Npb24gZXhwcmVzc2lv
biA9IHBhcnNlRXhwcmVzc2lvbihjb250ZXh0KTsKICAgICAgICAgICAgIGZhaWxJZkZhbHNlKGV4
cHJlc3Npb24pOwogICAgICAgICAgICAgZmFpbElmRmFsc2UoYXV0b1NlbWlDb2xvbigpKTsKLSAg
ICAgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUV4cHJTdGF0ZW1lbnQobG9jYXRpb24sIGV4
cHJlc3Npb24sIHN0YXJ0TGluZSwgbV9sYXN0TGluZSk7CisgICAgICAgICAgICByZXR1cm4gY29u
dGV4dC5jcmVhdGVFeHByU3RhdGVtZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGV4cHJl
c3Npb24sIHN0YXJ0TGluZSwgbV9sYXN0TGluZSk7CiAgICAgICAgIH0KICAgICAgICAgY29uc3Qg
SWRlbnRpZmllciogaWRlbnQgPSBtX3Rva2VuLm1fZGF0YS5pZGVudDsKICAgICAgICAgaW50IGVu
ZCA9IHRva2VuRW5kKCk7CkBAIC05NDYsNyArOTI1LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVC
dWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUV4cHJlc3Npb25P
ckwKICAgICBmYWlsSWZGYWxzZShzdGF0ZW1lbnQpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbGFiZWxzLnNpemUoKTsgaSsrKSB7CiAgICAgICAgIGNvbnN0IExhYmVsSW5mbyYgaW5mbyA9
IGxhYmVsc1tsYWJlbHMuc2l6ZSgpIC0gaSAtIDFdOwotICAgICAgICBzdGF0ZW1lbnQgPSBjb250
ZXh0LmNyZWF0ZUxhYmVsU3RhdGVtZW50KGxvY2F0aW9uLCBpbmZvLm1faWRlbnQsIHN0YXRlbWVu
dCwgaW5mby5tX3N0YXJ0LCBpbmZvLm1fZW5kKTsKKyAgICAgICAgc3RhdGVtZW50ID0gY29udGV4
dC5jcmVhdGVMYWJlbFN0YXRlbWVudChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBpbmZvLm1f
aWRlbnQsIHN0YXRlbWVudCwgaW5mby5tX3N0YXJ0LCBpbmZvLm1fZW5kKTsKICAgICB9CiAgICAg
cmV0dXJuIHN0YXRlbWVudDsKIH0KQEAgLTk1NSwxOCArOTM0LDE3IEBAIHRlbXBsYXRlIDx0eXBl
bmFtZSBMZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1l
bnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRXhwcmVzc2lvblN0YXRlbWVudChUcmVlQnVpbGRl
ciYgY29udGV4dCkKIHsKICAgICBpbnQgc3RhcnRMaW5lID0gdG9rZW5MaW5lKCk7Ci0gICAgSlNU
b2tlbkxvY2F0aW9uIGxvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CiAgICAgVHJlZUV4cHJlc3Np
b24gZXhwcmVzc2lvbiA9IHBhcnNlRXhwcmVzc2lvbihjb250ZXh0KTsKICAgICBmYWlsSWZGYWxz
ZShleHByZXNzaW9uKTsKICAgICBmYWlsSWZGYWxzZShhdXRvU2VtaUNvbG9uKCkpOwotICAgIHJl
dHVybiBjb250ZXh0LmNyZWF0ZUV4cHJTdGF0ZW1lbnQobG9jYXRpb24sIGV4cHJlc3Npb24sIHN0
YXJ0TGluZSwgbV9sYXN0TGluZSk7CisgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRXhwclN0YXRl
bWVudChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBleHByZXNzaW9uLCBzdGFydExpbmUsIG1f
bGFzdExpbmUpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgogdGVtcGxhdGUg
PGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJz
ZUlmU3RhdGVtZW50KFRyZWVCdWlsZGVyJiBjb250ZXh0KQogewogICAgIEFTU0VSVChtYXRjaChJ
RikpOwotICAgIEpTVG9rZW5Mb2NhdGlvbiBpZkxvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7Cisg
ICAgCiAgICAgaW50IHN0YXJ0ID0gdG9rZW5MaW5lKCk7CiAgICAgbmV4dCgpOwogICAgIApAQCAt
OTgyLDE1ICs5NjAsMTMgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVt
ZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUlmU3RhdGVtZW50KFQKICAgICBmYWlsSWZGYWxz
ZSh0cnVlQmxvY2spOwogICAgIAogICAgIGlmICghbWF0Y2goRUxTRSkpCi0gICAgICAgIHJldHVy
biBjb250ZXh0LmNyZWF0ZUlmU3RhdGVtZW50KGlmTG9jYXRpb24sIGNvbmRpdGlvbiwgdHJ1ZUJs
b2NrLCBzdGFydCwgZW5kKTsKKyAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlSWZTdGF0ZW1l
bnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgY29uZGl0aW9uLCB0cnVlQmxvY2ssIHN0YXJ0
LCBlbmQpOwogICAgIAogICAgIFZlY3RvcjxUcmVlRXhwcmVzc2lvbj4gZXhwclN0YWNrOwogICAg
IFZlY3RvcjxwYWlyPGludCwgaW50PiA+IHBvc1N0YWNrOwotICAgIFZlY3RvcjxKU1Rva2VuTG9j
YXRpb24+IHRva2VuTG9jYXRpb25TdGFjazsKICAgICBWZWN0b3I8VHJlZVN0YXRlbWVudD4gc3Rh
dGVtZW50U3RhY2s7CiAgICAgYm9vbCB0cmFpbGluZ0Vsc2UgPSBmYWxzZTsKICAgICBkbyB7Ci0g
ICAgICAgIHRva2VuTG9jYXRpb25TdGFjay5hcHBlbmQodG9rZW5Mb2NhdGlvbigpKTsKICAgICAg
ICAgbmV4dCgpOwogICAgICAgICBpZiAoIW1hdGNoKElGKSkgewogICAgICAgICAgICAgY29uc3Qg
SWRlbnRpZmllciogdW51c2VkID0gMDsKQEAgLTEwMTYsNyArOTkyLDcgQEAgdGVtcGxhdGUgPGNs
YXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUlm
U3RhdGVtZW50KFQKICAgICAgICAgcG9zU3RhY2suYXBwZW5kKG1ha2VfcGFpcihpbm5lclN0YXJ0
LCBpbm5lckVuZCkpOwogICAgICAgICBzdGF0ZW1lbnRTdGFjay5hcHBlbmQoaW5uZXJUcnVlQmxv
Y2spOwogICAgIH0gd2hpbGUgKG1hdGNoKEVMU0UpKTsKLQorICAgIAogICAgIGlmICghdHJhaWxp
bmdFbHNlKSB7CiAgICAgICAgIFRyZWVFeHByZXNzaW9uIGNvbmRpdGlvbiA9IGV4cHJTdGFjay5s
YXN0KCk7CiAgICAgICAgIGV4cHJTdGFjay5yZW1vdmVMYXN0KCk7CkBAIC0xMDI0LDkgKzEwMDAs
NyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExl
eGVyVHlwZT46OnBhcnNlSWZTdGF0ZW1lbnQoVAogICAgICAgICBzdGF0ZW1lbnRTdGFjay5yZW1v
dmVMYXN0KCk7CiAgICAgICAgIHBhaXI8aW50LCBpbnQ+IHBvcyA9IHBvc1N0YWNrLmxhc3QoKTsK
ICAgICAgICAgcG9zU3RhY2sucmVtb3ZlTGFzdCgpOwotICAgICAgICBKU1Rva2VuTG9jYXRpb24g
ZWxzZUxvY2F0aW9uID0gdG9rZW5Mb2NhdGlvblN0YWNrLmxhc3QoKTsKLSAgICAgICAgdG9rZW5M
b2NhdGlvblN0YWNrLnJlbW92ZUxhc3QoKTsKLSAgICAgICAgc3RhdGVtZW50U3RhY2suYXBwZW5k
KGNvbnRleHQuY3JlYXRlSWZTdGF0ZW1lbnQoZWxzZUxvY2F0aW9uLCBjb25kaXRpb24sIHRydWVC
bG9jaywgcG9zLmZpcnN0LCBwb3Muc2Vjb25kKSk7CisgICAgICAgIHN0YXRlbWVudFN0YWNrLmFw
cGVuZChjb250ZXh0LmNyZWF0ZUlmU3RhdGVtZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCks
IGNvbmRpdGlvbiwgdHJ1ZUJsb2NrLCBwb3MuZmlyc3QsIHBvcy5zZWNvbmQpKTsKICAgICB9CiAg
ICAgCiAgICAgd2hpbGUgKCFleHByU3RhY2suaXNFbXB0eSgpKSB7CkBAIC0xMDM4LDE5ICsxMDEy
LDE2IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8
TGV4ZXJUeXBlPjo6cGFyc2VJZlN0YXRlbWVudChUCiAgICAgICAgIHN0YXRlbWVudFN0YWNrLnJl
bW92ZUxhc3QoKTsKICAgICAgICAgcGFpcjxpbnQsIGludD4gcG9zID0gcG9zU3RhY2subGFzdCgp
OwogICAgICAgICBwb3NTdGFjay5yZW1vdmVMYXN0KCk7Ci0gICAgICAgIEpTVG9rZW5Mb2NhdGlv
biBlbHNlTG9jYXRpb24gPSB0b2tlbkxvY2F0aW9uU3RhY2subGFzdCgpOwotICAgICAgICB0b2tl
bkxvY2F0aW9uU3RhY2sucmVtb3ZlTGFzdCgpOwotICAgICAgICBzdGF0ZW1lbnRTdGFjay5hcHBl
bmQoY29udGV4dC5jcmVhdGVJZlN0YXRlbWVudChlbHNlTG9jYXRpb24sIGNvbmRpdGlvbiwgdHJ1
ZUJsb2NrLCBmYWxzZUJsb2NrLCBwb3MuZmlyc3QsIHBvcy5zZWNvbmQpKTsKKyAgICAgICAgc3Rh
dGVtZW50U3RhY2suYXBwZW5kKGNvbnRleHQuY3JlYXRlSWZTdGF0ZW1lbnQobV9sZXhlci0+bGFz
dExpbmVOdW1iZXIoKSwgY29uZGl0aW9uLCB0cnVlQmxvY2ssIGZhbHNlQmxvY2ssIHBvcy5maXJz
dCwgcG9zLnNlY29uZCkpOwogICAgIH0KICAgICAKLSAgICByZXR1cm4gY29udGV4dC5jcmVhdGVJ
ZlN0YXRlbWVudChpZkxvY2F0aW9uLCBjb25kaXRpb24sIHRydWVCbG9jaywgc3RhdGVtZW50U3Rh
Y2subGFzdCgpLCBzdGFydCwgZW5kKTsKKyAgICByZXR1cm4gY29udGV4dC5jcmVhdGVJZlN0YXRl
bWVudChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBjb25kaXRpb24sIHRydWVCbG9jaywgc3Rh
dGVtZW50U3RhY2subGFzdCgpLCBzdGFydCwgZW5kKTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1l
IExleGVyVHlwZT4KIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24g
UGFyc2VyPExleGVyVHlwZT46OnBhcnNlRXhwcmVzc2lvbihUcmVlQnVpbGRlciYgY29udGV4dCkK
IHsKICAgICBmYWlsSWZTdGFja092ZXJmbG93KCk7Ci0gICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0
aW9uKHRva2VuTG9jYXRpb24oKSk7CiAgICAgVHJlZUV4cHJlc3Npb24gbm9kZSA9IHBhcnNlQXNz
aWdubWVudEV4cHJlc3Npb24oY29udGV4dCk7CiAgICAgZmFpbElmRmFsc2Uobm9kZSk7CiAgICAg
aWYgKCFtYXRjaChDT01NQSkpCkBAIC0xMDYwLDcgKzEwMzEsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3Mg
VHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUV4cHJl
c3Npb24oVAogICAgIG1fbm9uTEhTQ291bnQrKzsKICAgICBUcmVlRXhwcmVzc2lvbiByaWdodCA9
IHBhcnNlQXNzaWdubWVudEV4cHJlc3Npb24oY29udGV4dCk7CiAgICAgZmFpbElmRmFsc2Uocmln
aHQpOwotICAgIHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpDb21tYSBjb21tYU5vZGUgPSBjb250ZXh0
LmNyZWF0ZUNvbW1hRXhwcihsb2NhdGlvbiwgbm9kZSwgcmlnaHQpOworICAgIHR5cGVuYW1lIFRy
ZWVCdWlsZGVyOjpDb21tYSBjb21tYU5vZGUgPSBjb250ZXh0LmNyZWF0ZUNvbW1hRXhwcihtX2xl
eGVyLT5sYXN0TGluZU51bWJlcigpLCBub2RlLCByaWdodCk7CiAgICAgd2hpbGUgKG1hdGNoKENP
TU1BKSkgewogICAgICAgICBuZXh0KFRyZWVCdWlsZGVyOjpEb250QnVpbGRTdHJpbmdzKTsKICAg
ICAgICAgcmlnaHQgPSBwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKGNvbnRleHQpOwpAQCAtMTA3
NSw3ICsxMDQ2LDYgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVz
c2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VBc3NpZ25tZW4KIHsKICAgICBmYWlsSWZTdGFj
a092ZXJmbG93KCk7CiAgICAgaW50IHN0YXJ0ID0gdG9rZW5TdGFydCgpOwotICAgIEpTVG9rZW5M
b2NhdGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOwogICAgIGludCBpbml0aWFsQXNzaWdu
bWVudENvdW50ID0gbV9hc3NpZ25tZW50Q291bnQ7CiAgICAgaW50IGluaXRpYWxOb25MSFNDb3Vu
dCA9IG1fbm9uTEhTQ291bnQ7CiAgICAgVHJlZUV4cHJlc3Npb24gbGhzID0gcGFyc2VDb25kaXRp
b25hbEV4cHJlc3Npb24oY29udGV4dCk7CkBAIC0xMTI4LDcgKzEwOTgsNyBAQCBlbmQ6CiAgICAg
ICAgIHJldHVybiBsaHM7CiAgICAgCiAgICAgd2hpbGUgKGFzc2lnbm1lbnRTdGFjaykKLSAgICAg
ICAgbGhzID0gY29udGV4dC5jcmVhdGVBc3NpZ25tZW50KGxvY2F0aW9uLCBhc3NpZ25tZW50U3Rh
Y2ssIGxocywgaW5pdGlhbEFzc2lnbm1lbnRDb3VudCwgbV9hc3NpZ25tZW50Q291bnQsIGxhc3RU
b2tlbkVuZCgpKTsKKyAgICAgICAgbGhzID0gY29udGV4dC5jcmVhdGVBc3NpZ25tZW50KG1fbGV4
ZXItPmxhc3RMaW5lTnVtYmVyKCksIGFzc2lnbm1lbnRTdGFjaywgbGhzLCBpbml0aWFsQXNzaWdu
bWVudENvdW50LCBtX2Fzc2lnbm1lbnRDb3VudCwgbGFzdFRva2VuRW5kKCkpOwogICAgIAogICAg
IHJldHVybiBsaHM7CiB9CkBAIC0xMTM2LDcgKzExMDYsNiBAQCBlbmQ6CiB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgTGV4ZXJUeXBlPgogdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVz
c2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VDb25kaXRpb25hbEV4cHJlc3Npb24oVHJlZUJ1
aWxkZXImIGNvbnRleHQpCiB7Ci0gICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uKHRva2VuTG9j
YXRpb24oKSk7CiAgICAgVHJlZUV4cHJlc3Npb24gY29uZCA9IHBhcnNlQmluYXJ5RXhwcmVzc2lv
bihjb250ZXh0KTsKICAgICBmYWlsSWZGYWxzZShjb25kKTsKICAgICBpZiAoIW1hdGNoKFFVRVNU
SU9OKSkKQEAgLTExNDksNyArMTExOCw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4g
VHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlQ29uZGl0aW9uYWxFCiAgICAg
CiAgICAgVHJlZUV4cHJlc3Npb24gcmhzID0gcGFyc2VBc3NpZ25tZW50RXhwcmVzc2lvbihjb250
ZXh0KTsKICAgICBmYWlsSWZGYWxzZShyaHMpOwotICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUNv
bmRpdGlvbmFsRXhwcihsb2NhdGlvbiwgY29uZCwgbGhzLCByaHMpOworICAgIHJldHVybiBjb250
ZXh0LmNyZWF0ZUNvbmRpdGlvbmFsRXhwcihtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBjb25k
LCBsaHMsIHJocyk7CiB9CiAKIEFMV0FZU19JTkxJTkUgc3RhdGljIGJvb2wgaXNVbmFyeU9wKEpT
VG9rZW5UeXBlIHRva2VuKQpAQCAtMTE3Miw3ICsxMTQxLDYgQEAgdGVtcGxhdGUgPGNsYXNzIFRy
ZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VCaW5hcnlF
eHByZXMKICAgICBpbnQgb3BlcmFuZFN0YWNrRGVwdGggPSAwOwogICAgIGludCBvcGVyYXRvclN0
YWNrRGVwdGggPSAwOwogICAgIHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpCaW5hcnlFeHByQ29udGV4
dCBiaW5hcnlFeHByQ29udGV4dChjb250ZXh0KTsKLSAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRp
b24odG9rZW5Mb2NhdGlvbigpKTsKICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgICBpbnQgZXhw
clN0YXJ0ID0gdG9rZW5TdGFydCgpOwogICAgICAgICBpbnQgaW5pdGlhbEFzc2lnbm1lbnRzID0g
bV9hc3NpZ25tZW50Q291bnQ7CkBAIC0xMTk0LDcgKzExNjIsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3Mg
VHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUJpbmFy
eUV4cHJlcwogICAgICAgICAgICAgdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkJpbmFyeU9wZXJhbmQg
cmhzID0gY29udGV4dC5nZXRGcm9tT3BlcmFuZFN0YWNrKC0xKTsKICAgICAgICAgICAgIHR5cGVu
YW1lIFRyZWVCdWlsZGVyOjpCaW5hcnlPcGVyYW5kIGxocyA9IGNvbnRleHQuZ2V0RnJvbU9wZXJh
bmRTdGFjaygtMik7CiAgICAgICAgICAgICBjb250ZXh0LnNocmlua09wZXJhbmRTdGFja0J5KG9w
ZXJhbmRTdGFja0RlcHRoLCAyKTsKLSAgICAgICAgICAgIGNvbnRleHQuYXBwZW5kQmluYXJ5T3Bl
cmF0aW9uKGxvY2F0aW9uLCBvcGVyYW5kU3RhY2tEZXB0aCwgb3BlcmF0b3JTdGFja0RlcHRoLCBs
aHMsIHJocyk7CisgICAgICAgICAgICBjb250ZXh0LmFwcGVuZEJpbmFyeU9wZXJhdGlvbihtX2xl
eGVyLT5sYXN0TGluZU51bWJlcigpLCBvcGVyYW5kU3RhY2tEZXB0aCwgb3BlcmF0b3JTdGFja0Rl
cHRoLCBsaHMsIHJocyk7CiAgICAgICAgICAgICBjb250ZXh0Lm9wZXJhdG9yU3RhY2tQb3Aob3Bl
cmF0b3JTdGFja0RlcHRoKTsKICAgICAgICAgfQogICAgICAgICBjb250ZXh0Lm9wZXJhdG9yU3Rh
Y2tBcHBlbmQob3BlcmF0b3JTdGFja0RlcHRoLCBvcGVyYXRvclRva2VuLCBwcmVjZWRlbmNlKTsK
QEAgLTEyMDUsNyArMTE3Myw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4
cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlQmluYXJ5RXhwcmVzCiAgICAgICAgIHR5
cGVuYW1lIFRyZWVCdWlsZGVyOjpCaW5hcnlPcGVyYW5kIHJocyA9IGNvbnRleHQuZ2V0RnJvbU9w
ZXJhbmRTdGFjaygtMSk7CiAgICAgICAgIHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpCaW5hcnlPcGVy
YW5kIGxocyA9IGNvbnRleHQuZ2V0RnJvbU9wZXJhbmRTdGFjaygtMik7CiAgICAgICAgIGNvbnRl
eHQuc2hyaW5rT3BlcmFuZFN0YWNrQnkob3BlcmFuZFN0YWNrRGVwdGgsIDIpOwotICAgICAgICBj
b250ZXh0LmFwcGVuZEJpbmFyeU9wZXJhdGlvbihsb2NhdGlvbiwgb3BlcmFuZFN0YWNrRGVwdGgs
IG9wZXJhdG9yU3RhY2tEZXB0aCwgbGhzLCByaHMpOworICAgICAgICBjb250ZXh0LmFwcGVuZEJp
bmFyeU9wZXJhdGlvbihtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBvcGVyYW5kU3RhY2tEZXB0
aCwgb3BlcmF0b3JTdGFja0RlcHRoLCBsaHMsIHJocyk7CiAgICAgICAgIGNvbnRleHQub3BlcmF0
b3JTdGFja1BvcChvcGVyYXRvclN0YWNrRGVwdGgpOwogICAgIH0KICAgICByZXR1cm4gY29udGV4
dC5wb3BPcGVyYW5kU3RhY2sob3BlcmFuZFN0YWNrRGVwdGgpOwpAQCAtMTI1NCwxMiArMTIyMiwx
MSBAQCB0ZW1wbGF0ZSA8Ym9vbCBjb21wbGV0ZSwgY2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVQcm9w
ZXJ0eSBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFycwogICAgICAgICAgICAgbnVtZXJpY1Byb3BlcnR5
TmFtZSA9IG1fdG9rZW4ubV9kYXRhLmRvdWJsZVZhbHVlOwogICAgICAgICBlbHNlCiAgICAgICAg
ICAgICBmYWlsKCk7Ci0gICAgICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0
aW9uKCkpOwogICAgICAgICBuZXh0KCk7CiAgICAgICAgIGZhaWxJZkZhbHNlKChwYXJzZUZ1bmN0
aW9uSW5mbzxGdW5jdGlvbk5vUmVxdWlyZW1lbnRzLCBmYWxzZT4oY29udGV4dCwgYWNjZXNzb3JO
YW1lLCBwYXJhbWV0ZXJzLCBib2R5LCBvcGVuQnJhY2VQb3MsIGNsb3NlQnJhY2VQb3MsIGJvZHlT
dGFydExpbmUpKSk7CiAgICAgICAgIGlmIChzdHJpbmdQcm9wZXJ0eU5hbWUpCi0gICAgICAgICAg
ICByZXR1cm4gY29udGV4dC50ZW1wbGF0ZSBjcmVhdGVHZXR0ZXJPclNldHRlclByb3BlcnR5PGNv
bXBsZXRlPihsb2NhdGlvbiwgdHlwZSwgc3RyaW5nUHJvcGVydHlOYW1lLCBwYXJhbWV0ZXJzLCBi
b2R5LCBvcGVuQnJhY2VQb3MsIGNsb3NlQnJhY2VQb3MsIGJvZHlTdGFydExpbmUsIG1fbGFzdExp
bmUpOwotICAgICAgICByZXR1cm4gY29udGV4dC50ZW1wbGF0ZSBjcmVhdGVHZXR0ZXJPclNldHRl
clByb3BlcnR5PGNvbXBsZXRlPihjb25zdF9jYXN0PEpTR2xvYmFsRGF0YSo+KG1fZ2xvYmFsRGF0
YSksIGxvY2F0aW9uLCB0eXBlLCBudW1lcmljUHJvcGVydHlOYW1lLCBwYXJhbWV0ZXJzLCBib2R5
LCBvcGVuQnJhY2VQb3MsIGNsb3NlQnJhY2VQb3MsIGJvZHlTdGFydExpbmUsIG1fbGFzdExpbmUp
OworICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQudGVtcGxhdGUgY3JlYXRlR2V0dGVyT3JTZXR0
ZXJQcm9wZXJ0eTxjb21wbGV0ZT4obV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgdHlwZSwgc3Ry
aW5nUHJvcGVydHlOYW1lLCBwYXJhbWV0ZXJzLCBib2R5LCBvcGVuQnJhY2VQb3MsIGNsb3NlQnJh
Y2VQb3MsIGJvZHlTdGFydExpbmUsIG1fbGFzdExpbmUpOworICAgICAgICByZXR1cm4gY29udGV4
dC50ZW1wbGF0ZSBjcmVhdGVHZXR0ZXJPclNldHRlclByb3BlcnR5PGNvbXBsZXRlPihjb25zdF9j
YXN0PEpTR2xvYmFsRGF0YSo+KG1fZ2xvYmFsRGF0YSksIG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVy
KCksIHR5cGUsIG51bWVyaWNQcm9wZXJ0eU5hbWUsIHBhcmFtZXRlcnMsIGJvZHksIG9wZW5CcmFj
ZVBvcywgY2xvc2VCcmFjZVBvcywgYm9keVN0YXJ0TGluZSwgbV9sYXN0TGluZSk7CiAgICAgfQog
ICAgIGNhc2UgTlVNQkVSOiB7CiAgICAgICAgIGRvdWJsZSBwcm9wZXJ0eU5hbWUgPSBtX3Rva2Vu
Lm1fZGF0YS5kb3VibGVWYWx1ZTsKQEAgLTEyODIsMTMgKzEyNDksMTIgQEAgdGVtcGxhdGUgPGNs
YXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VP
YmplY3RMaXRlcmEKICAgICB1bnNpZ25lZCBvbGRMYXN0TGluZU51bWJlciA9IG1fbGV4ZXItPmxh
c3RMaW5lTnVtYmVyKCk7CiAgICAgdW5zaWduZWQgb2xkTGluZU51bWJlciA9IG1fbGV4ZXItPmxp
bmVOdW1iZXIoKTsKICAgICBjb25zdW1lT3JGYWlsV2l0aEZsYWdzKE9QRU5CUkFDRSwgVHJlZUJ1
aWxkZXI6OkRvbnRCdWlsZFN0cmluZ3MpOwotICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbih0
b2tlbkxvY2F0aW9uKCkpOwotCisgICAgCiAgICAgaW50IG9sZE5vbkxIU0NvdW50ID0gbV9ub25M
SFNDb3VudDsKICAgICAKICAgICBpZiAobWF0Y2goQ0xPU0VCUkFDRSkpIHsKICAgICAgICAgbmV4
dCgpOwotICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVPYmplY3RMaXRlcmFsKGxvY2F0aW9u
KTsKKyAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlT2JqZWN0TGl0ZXJhbChtX2xleGVyLT5s
YXN0TGluZU51bWJlcigpKTsKICAgICB9CiAgICAgCiAgICAgVHJlZVByb3BlcnR5IHByb3BlcnR5
ID0gcGFyc2VQcm9wZXJ0eTxmYWxzZT4oY29udGV4dCk7CkBAIC0xMzAwLDE0ICsxMjY2LDEzIEBA
IHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVy
VHlwZT46OnBhcnNlT2JqZWN0TGl0ZXJhCiAgICAgICAgIG1fbGV4ZXItPnNldExpbmVOdW1iZXIo
b2xkTGluZU51bWJlcik7CiAgICAgICAgIHJldHVybiBwYXJzZVN0cmljdE9iamVjdExpdGVyYWwo
Y29udGV4dCk7CiAgICAgfQotICAgIFRyZWVQcm9wZXJ0eUxpc3QgcHJvcGVydHlMaXN0ID0gY29u
dGV4dC5jcmVhdGVQcm9wZXJ0eUxpc3QobG9jYXRpb24sIHByb3BlcnR5KTsKKyAgICBUcmVlUHJv
cGVydHlMaXN0IHByb3BlcnR5TGlzdCA9IGNvbnRleHQuY3JlYXRlUHJvcGVydHlMaXN0KG1fbGV4
ZXItPmxhc3RMaW5lTnVtYmVyKCksIHByb3BlcnR5KTsKICAgICBUcmVlUHJvcGVydHlMaXN0IHRh
aWwgPSBwcm9wZXJ0eUxpc3Q7CiAgICAgd2hpbGUgKG1hdGNoKENPTU1BKSkgewogICAgICAgICBu
ZXh0KFRyZWVCdWlsZGVyOjpEb250QnVpbGRTdHJpbmdzKTsKICAgICAgICAgLy8gYWxsb3cgZXh0
cmEgY29tbWEsIHNlZSBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01OTM5
CiAgICAgICAgIGlmIChtYXRjaChDTE9TRUJSQUNFKSkKICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICBKU1Rva2VuTG9jYXRpb24gcHJvcGVydHlMb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOwog
ICAgICAgICBwcm9wZXJ0eSA9IHBhcnNlUHJvcGVydHk8ZmFsc2U+KGNvbnRleHQpOwogICAgICAg
ICBmYWlsSWZGYWxzZShwcm9wZXJ0eSk7CiAgICAgICAgIGlmICghbV9zeW50YXhBbHJlYWR5VmFs
aWRhdGVkICYmIGNvbnRleHQuZ2V0VHlwZShwcm9wZXJ0eSkgIT0gUHJvcGVydHlOb2RlOjpDb25z
dGFudCkgewpAQCAtMTMxNywxNSArMTI4MiwxNCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxk
ZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZU9iamVjdExpdGVyYQog
ICAgICAgICAgICAgbV9sZXhlci0+c2V0TGluZU51bWJlcihvbGRMaW5lTnVtYmVyKTsKICAgICAg
ICAgICAgIHJldHVybiBwYXJzZVN0cmljdE9iamVjdExpdGVyYWwoY29udGV4dCk7CiAgICAgICAg
IH0KLSAgICAgICAgdGFpbCA9IGNvbnRleHQuY3JlYXRlUHJvcGVydHlMaXN0KHByb3BlcnR5TG9j
YXRpb24sIHByb3BlcnR5LCB0YWlsKTsKKyAgICAgICAgdGFpbCA9IGNvbnRleHQuY3JlYXRlUHJv
cGVydHlMaXN0KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHByb3BlcnR5LCB0YWlsKTsKICAg
ICB9Ci0KLSAgICBsb2NhdGlvbiA9IHRva2VuTG9jYXRpb24oKTsKKyAgICAKICAgICBjb25zdW1l
T3JGYWlsKENMT1NFQlJBQ0UpOwogICAgIAogICAgIG1fbm9uTEhTQ291bnQgPSBvbGROb25MSFND
b3VudDsKICAgICAKLSAgICByZXR1cm4gY29udGV4dC5jcmVhdGVPYmplY3RMaXRlcmFsKGxvY2F0
aW9uLCBwcm9wZXJ0eUxpc3QpOworICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZU9iamVjdExpdGVy
YWwobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgcHJvcGVydHlMaXN0KTsKIH0KIAogdGVtcGxh
dGUgPHR5cGVuYW1lIExleGVyVHlwZT4KQEAgLTEzMzUsMTAgKzEyOTksOSBAQCB0ZW1wbGF0ZSA8
Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJz
ZVN0cmljdE9iamVjdAogICAgIAogICAgIGludCBvbGROb25MSFNDb3VudCA9IG1fbm9uTEhTQ291
bnQ7CiAKLSAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsgICAg
CiAgICAgaWYgKG1hdGNoKENMT1NFQlJBQ0UpKSB7CiAgICAgICAgIG5leHQoKTsKLSAgICAgICAg
cmV0dXJuIGNvbnRleHQuY3JlYXRlT2JqZWN0TGl0ZXJhbChsb2NhdGlvbik7CisgICAgICAgIHJl
dHVybiBjb250ZXh0LmNyZWF0ZU9iamVjdExpdGVyYWwobV9sZXhlci0+bGFzdExpbmVOdW1iZXIo
KSk7CiAgICAgfQogICAgIAogICAgIFRyZWVQcm9wZXJ0eSBwcm9wZXJ0eSA9IHBhcnNlUHJvcGVy
dHk8dHJ1ZT4oY29udGV4dCk7CkBAIC0xMzUwLDE0ICsxMzEzLDEzIEBAIHRlbXBsYXRlIDxjbGFz
cyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlU3Ry
aWN0T2JqZWN0CiAgICAgaWYgKCFtX3N5bnRheEFscmVhZHlWYWxpZGF0ZWQpCiAgICAgICAgIG9i
amVjdFZhbGlkYXRvci5hZGQoY29udGV4dC5nZXROYW1lKHByb3BlcnR5KS5pbXBsKCksIGNvbnRl
eHQuZ2V0VHlwZShwcm9wZXJ0eSkpOwogICAgIAotICAgIFRyZWVQcm9wZXJ0eUxpc3QgcHJvcGVy
dHlMaXN0ID0gY29udGV4dC5jcmVhdGVQcm9wZXJ0eUxpc3QobG9jYXRpb24sIHByb3BlcnR5KTsK
KyAgICBUcmVlUHJvcGVydHlMaXN0IHByb3BlcnR5TGlzdCA9IGNvbnRleHQuY3JlYXRlUHJvcGVy
dHlMaXN0KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHByb3BlcnR5KTsKICAgICBUcmVlUHJv
cGVydHlMaXN0IHRhaWwgPSBwcm9wZXJ0eUxpc3Q7CiAgICAgd2hpbGUgKG1hdGNoKENPTU1BKSkg
ewogICAgICAgICBuZXh0KCk7CiAgICAgICAgIC8vIGFsbG93IGV4dHJhIGNvbW1hLCBzZWUgaHR0
cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTkzOQogICAgICAgICBpZiAobWF0
Y2goQ0xPU0VCUkFDRSkpCiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgSlNUb2tlbkxvY2F0
aW9uIHByb3BlcnR5TG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKICAgICAgICAgcHJvcGVydHkg
PSBwYXJzZVByb3BlcnR5PHRydWU+KGNvbnRleHQpOwogICAgICAgICBmYWlsSWZGYWxzZShwcm9w
ZXJ0eSk7CiAgICAgICAgIGlmICghbV9zeW50YXhBbHJlYWR5VmFsaWRhdGVkKSB7CkBAIC0xMzY5
LDE1ICsxMzMxLDE0IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Np
b24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlU3RyaWN0T2JqZWN0CiAgICAgICAgICAgICAgICAg
cHJvcGVydHlFbnRyeS5pdGVyYXRvci0+c2Vjb25kIHw9IGNvbnRleHQuZ2V0VHlwZShwcm9wZXJ0
eSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgdGFpbCA9IGNvbnRleHQuY3Jl
YXRlUHJvcGVydHlMaXN0KHByb3BlcnR5TG9jYXRpb24sIHByb3BlcnR5LCB0YWlsKTsKKyAgICAg
ICAgdGFpbCA9IGNvbnRleHQuY3JlYXRlUHJvcGVydHlMaXN0KG1fbGV4ZXItPmxhc3RMaW5lTnVt
YmVyKCksIHByb3BlcnR5LCB0YWlsKTsKICAgICB9Ci0KLSAgICBsb2NhdGlvbiA9IHRva2VuTG9j
YXRpb24oKTsKKyAgICAKICAgICBjb25zdW1lT3JGYWlsKENMT1NFQlJBQ0UpOwogCiAgICAgbV9u
b25MSFNDb3VudCA9IG9sZE5vbkxIU0NvdW50OwogCi0gICAgcmV0dXJuIGNvbnRleHQuY3JlYXRl
T2JqZWN0TGl0ZXJhbChsb2NhdGlvbiwgcHJvcGVydHlMaXN0KTsKKyAgICByZXR1cm4gY29udGV4
dC5jcmVhdGVPYmplY3RMaXRlcmFsKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHByb3BlcnR5
TGlzdCk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CkBAIC0xMzkzLDkgKzEz
NTQsOCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNl
cjxMZXhlclR5cGU+OjpwYXJzZUFycmF5TGl0ZXJhbAogICAgICAgICBlbGlzaW9ucysrOwogICAg
IH0KICAgICBpZiAobWF0Y2goQ0xPU0VCUkFDS0VUKSkgewotICAgICAgICBKU1Rva2VuTG9jYXRp
b24gbG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKICAgICAgICAgbmV4dChUcmVlQnVpbGRlcjo6
RG9udEJ1aWxkU3RyaW5ncyk7Ci0gICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUFycmF5KGxv
Y2F0aW9uLCBlbGlzaW9ucyk7CisgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUFycmF5KG1f
bGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGVsaXNpb25zKTsKICAgICB9CiAgICAgCiAgICAgVHJl
ZUV4cHJlc3Npb24gZWxlbSA9IHBhcnNlQXNzaWdubWVudEV4cHJlc3Npb24oY29udGV4dCk7CkBA
IC0xNDEzLDIxICsxMzczLDE5IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4
cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlQXJyYXlMaXRlcmFsCiAgICAgICAgIH0K
ICAgICAgICAgCiAgICAgICAgIGlmIChtYXRjaChDTE9TRUJSQUNLRVQpKSB7Ci0gICAgICAgICAg
ICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKICAgICAgICAgICAg
IG5leHQoVHJlZUJ1aWxkZXI6OkRvbnRCdWlsZFN0cmluZ3MpOwotICAgICAgICAgICAgcmV0dXJu
IGNvbnRleHQuY3JlYXRlQXJyYXkobG9jYXRpb24sIGVsaXNpb25zLCBlbGVtZW50TGlzdCk7Cisg
ICAgICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVBcnJheShtX2xleGVyLT5sYXN0TGluZU51
bWJlcigpLCBlbGlzaW9ucywgZWxlbWVudExpc3QpOwogICAgICAgICB9CiAgICAgICAgIFRyZWVF
eHByZXNzaW9uIGVsZW0gPSBwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKGNvbnRleHQpOwogICAg
ICAgICBmYWlsSWZGYWxzZShlbGVtKTsKICAgICAgICAgdGFpbCA9IGNvbnRleHQuY3JlYXRlRWxl
bWVudExpc3QodGFpbCwgZWxpc2lvbnMsIGVsZW0pOwogICAgIH0KLQotICAgIEpTVG9rZW5Mb2Nh
dGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOworICAgIAogICAgIGNvbnN1bWVPckZhaWwo
Q0xPU0VCUkFDS0VUKTsKICAgICAKICAgICBtX25vbkxIU0NvdW50ID0gb2xkTm9uTEhTQ291bnQ7
CiAgICAgCi0gICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlQXJyYXkobG9jYXRpb24sIGVsZW1lbnRM
aXN0KTsKKyAgICByZXR1cm4gY29udGV4dC5jcmVhdGVBcnJheShtX2xleGVyLT5sYXN0TGluZU51
bWJlcigpLCBlbGVtZW50TGlzdCk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+
CkBAIC0xNDUxLDQ1ICsxNDA5LDM4IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJl
ZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlUHJpbWFyeUV4cHJlCiAgICAgICAg
IHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIGNhc2UgVEhJU1RPS0VOOiB7Ci0gICAgICAgIEpT
VG9rZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOwogICAgICAgICBuZXh0KCk7
Ci0gICAgICAgIHJldHVybiBjb250ZXh0LnRoaXNFeHByKGxvY2F0aW9uKTsKKyAgICAgICAgcmV0
dXJuIGNvbnRleHQudGhpc0V4cHIobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSk7CiAgICAgfQog
ICAgIGNhc2UgSURFTlQ6IHsKICAgICAgICAgaW50IHN0YXJ0ID0gdG9rZW5TdGFydCgpOwogICAg
ICAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9IG1fdG9rZW4ubV9kYXRhLmlkZW50OwotICAg
ICAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKICAgICAgICAg
bmV4dCgpOwogICAgICAgICBjdXJyZW50U2NvcGUoKS0+dXNlVmFyaWFibGUoaWRlbnQsIG1fZ2xv
YmFsRGF0YS0+cHJvcGVydHlOYW1lcy0+ZXZhbCA9PSAqaWRlbnQpOwogICAgICAgICBtX2xhc3RJ
ZGVudGlmaWVyID0gaWRlbnQ7Ci0gICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVJlc29sdmUo
bG9jYXRpb24sIGlkZW50LCBzdGFydCk7CisgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVJl
c29sdmUobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgaWRlbnQsIHN0YXJ0KTsKICAgICB9CiAg
ICAgY2FzZSBTVFJJTkc6IHsKICAgICAgICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSBtX3Rv
a2VuLm1fZGF0YS5pZGVudDsKLSAgICAgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uKHRva2Vu
TG9jYXRpb24oKSk7CiAgICAgICAgIG5leHQoKTsKLSAgICAgICAgcmV0dXJuIGNvbnRleHQuY3Jl
YXRlU3RyaW5nKGxvY2F0aW9uLCBpZGVudCk7CisgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0
ZVN0cmluZyhtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBpZGVudCk7CiAgICAgfQogICAgIGNh
c2UgTlVNQkVSOiB7CiAgICAgICAgIGRvdWJsZSBkID0gbV90b2tlbi5tX2RhdGEuZG91YmxlVmFs
dWU7Ci0gICAgICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOwog
ICAgICAgICBuZXh0KCk7Ci0gICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZU51bWJlckV4cHIo
bG9jYXRpb24sIGQpOworICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVOdW1iZXJFeHByKG1f
bGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGQpOwogICAgIH0KICAgICBjYXNlIE5VTExUT0tFTjog
ewotICAgICAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKICAg
ICAgICAgbmV4dCgpOwotICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVOdWxsKGxvY2F0aW9u
KTsKKyAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlTnVsbChtX2xleGVyLT5sYXN0TGluZU51
bWJlcigpKTsKICAgICB9CiAgICAgY2FzZSBUUlVFVE9LRU46IHsKLSAgICAgICAgSlNUb2tlbkxv
Y2F0aW9uIGxvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CiAgICAgICAgIG5leHQoKTsKLSAgICAg
ICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlQm9vbGVhbihsb2NhdGlvbiwgdHJ1ZSk7CisgICAgICAg
IHJldHVybiBjb250ZXh0LmNyZWF0ZUJvb2xlYW4obV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwg
dHJ1ZSk7CiAgICAgfQogICAgIGNhc2UgRkFMU0VUT0tFTjogewotICAgICAgICBKU1Rva2VuTG9j
YXRpb24gbG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKICAgICAgICAgbmV4dCgpOwotICAgICAg
ICByZXR1cm4gY29udGV4dC5jcmVhdGVCb29sZWFuKGxvY2F0aW9uLCBmYWxzZSk7CisgICAgICAg
IHJldHVybiBjb250ZXh0LmNyZWF0ZUJvb2xlYW4obV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwg
ZmFsc2UpOwogICAgIH0KICAgICBjYXNlIERJVkVRVUFMOgogICAgIGNhc2UgRElWSURFOiB7CkBA
IC0xNTAyLDkgKzE0NTMsOCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHBy
ZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVByaW1hcnlFeHByZQogICAgICAgICAgICAg
ZmFpbElmRmFsc2UobV9sZXhlci0+c2NhblJlZ0V4cChwYXR0ZXJuLCBmbGFncykpOwogICAgICAg
ICAKICAgICAgICAgaW50IHN0YXJ0ID0gdG9rZW5TdGFydCgpOwotICAgICAgICBKU1Rva2VuTG9j
YXRpb24gbG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKICAgICAgICAgbmV4dCgpOwotICAgICAg
ICBUcmVlRXhwcmVzc2lvbiByZSA9IGNvbnRleHQuY3JlYXRlUmVnRXhwKGxvY2F0aW9uLCAqcGF0
dGVybiwgKmZsYWdzLCBzdGFydCk7CisgICAgICAgIFRyZWVFeHByZXNzaW9uIHJlID0gY29udGV4
dC5jcmVhdGVSZWdFeHAobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgKnBhdHRlcm4sICpmbGFn
cywgc3RhcnQpOwogICAgICAgICBpZiAoIXJlKSB7CiAgICAgICAgICAgICBjb25zdCBjaGFyKiB5
YXJyRXJyb3JNc2cgPSBZYXJyOjpjaGVja1N5bnRheChwYXR0ZXJuLT51c3RyaW5nKCkpOwogICAg
ICAgICAgICAgQVNTRVJUKCFtX2Vycm9yTWVzc2FnZS5pc051bGwoKSk7CkBAIC0xNTIxLDcgKzE0
NzEsNiBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgogdGVtcGxhdGUgPGNsYXNzIFRy
ZWVCdWlsZGVyPiBUcmVlQXJndW1lbnRzIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUFyZ3VtZW50
cyhUcmVlQnVpbGRlciYgY29udGV4dCkKIHsKICAgICBjb25zdW1lT3JGYWlsV2l0aEZsYWdzKE9Q
RU5QQVJFTiwgVHJlZUJ1aWxkZXI6OkRvbnRCdWlsZFN0cmluZ3MpOwotICAgIEpTVG9rZW5Mb2Nh
dGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOwogICAgIGlmIChtYXRjaChDTE9TRVBBUkVO
KSkgewogICAgICAgICBuZXh0KFRyZWVCdWlsZGVyOjpEb250QnVpbGRTdHJpbmdzKTsKICAgICAg
ICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlQXJndW1lbnRzKCk7CkBAIC0xNTI5LDE0ICsxNDc4LDEz
IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUFyZ3VtZW50cyBQYXJzZXI8TGV4
ZXJUeXBlPjo6cGFyc2VBcmd1bWVudHMoVHJlCiAgICAgVHJlZUV4cHJlc3Npb24gZmlyc3RBcmcg
PSBwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKGNvbnRleHQpOwogICAgIGZhaWxJZkZhbHNlKGZp
cnN0QXJnKTsKICAgICAKLSAgICBUcmVlQXJndW1lbnRzTGlzdCBhcmdMaXN0ID0gY29udGV4dC5j
cmVhdGVBcmd1bWVudHNMaXN0KGxvY2F0aW9uLCBmaXJzdEFyZyk7CisgICAgVHJlZUFyZ3VtZW50
c0xpc3QgYXJnTGlzdCA9IGNvbnRleHQuY3JlYXRlQXJndW1lbnRzTGlzdChtX2xleGVyLT5sYXN0
TGluZU51bWJlcigpLCBmaXJzdEFyZyk7CiAgICAgVHJlZUFyZ3VtZW50c0xpc3QgdGFpbCA9IGFy
Z0xpc3Q7CiAgICAgd2hpbGUgKG1hdGNoKENPTU1BKSkgewotICAgICAgICBKU1Rva2VuTG9jYXRp
b24gYXJndW1lbnRMb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOwogICAgICAgICBuZXh0KFRyZWVC
dWlsZGVyOjpEb250QnVpbGRTdHJpbmdzKTsKICAgICAgICAgVHJlZUV4cHJlc3Npb24gYXJnID0g
cGFyc2VBc3NpZ25tZW50RXhwcmVzc2lvbihjb250ZXh0KTsKICAgICAgICAgZmFpbElmRmFsc2Uo
YXJnKTsKLSAgICAgICAgdGFpbCA9IGNvbnRleHQuY3JlYXRlQXJndW1lbnRzTGlzdChhcmd1bWVu
dExvY2F0aW9uLCB0YWlsLCBhcmcpOworICAgICAgICB0YWlsID0gY29udGV4dC5jcmVhdGVBcmd1
bWVudHNMaXN0KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHRhaWwsIGFyZyk7CiAgICAgfQog
ICAgIGNvbnN1bWVPckZhaWwoQ0xPU0VQQVJFTik7CiAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRl
QXJndW1lbnRzKGFyZ0xpc3QpOwpAQCAtMTU0OSw3ICsxNDk3LDYgQEAgdGVtcGxhdGUgPGNsYXNz
IFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VNZW1i
ZXJFeHByZXMKICAgICBpbnQgc3RhcnQgPSB0b2tlblN0YXJ0KCk7CiAgICAgaW50IGV4cHJlc3Np
b25TdGFydCA9IHN0YXJ0OwogICAgIGludCBuZXdDb3VudCA9IDA7Ci0gICAgSlNUb2tlbkxvY2F0
aW9uIGxvY2F0aW9uOwogICAgIHdoaWxlIChtYXRjaChORVcpKSB7CiAgICAgICAgIG5leHQoKTsK
ICAgICAgICAgbmV3Q291bnQrKzsKQEAgLTE1NjIsMTYgKzE1MDksMTQgQEAgdGVtcGxhdGUgPGNs
YXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VN
ZW1iZXJFeHByZXMKICAgICAgICAgaW50IG9wZW5CcmFjZVBvcyA9IDA7CiAgICAgICAgIGludCBj
bG9zZUJyYWNlUG9zID0gMDsKICAgICAgICAgaW50IGJvZHlTdGFydExpbmUgPSAwOwotICAgICAg
ICBsb2NhdGlvbiA9IHRva2VuTG9jYXRpb24oKTsKICAgICAgICAgbmV4dCgpOwogICAgICAgICBm
YWlsSWZGYWxzZSgocGFyc2VGdW5jdGlvbkluZm88RnVuY3Rpb25Ob1JlcXVpcmVtZW50cywgZmFs
c2U+KGNvbnRleHQsIG5hbWUsIHBhcmFtZXRlcnMsIGJvZHksIG9wZW5CcmFjZVBvcywgY2xvc2VC
cmFjZVBvcywgYm9keVN0YXJ0TGluZSkpKTsKLSAgICAgICAgYmFzZSA9IGNvbnRleHQuY3JlYXRl
RnVuY3Rpb25FeHByKGxvY2F0aW9uLCBuYW1lLCBib2R5LCBwYXJhbWV0ZXJzLCBvcGVuQnJhY2VQ
b3MsIGNsb3NlQnJhY2VQb3MsIGJvZHlTdGFydExpbmUsIG1fbGFzdExpbmUpOworICAgICAgICBi
YXNlID0gY29udGV4dC5jcmVhdGVGdW5jdGlvbkV4cHIobV9sZXhlci0+bGFzdExpbmVOdW1iZXIo
KSwgbmFtZSwgYm9keSwgcGFyYW1ldGVycywgb3BlbkJyYWNlUG9zLCBjbG9zZUJyYWNlUG9zLCBi
b2R5U3RhcnRMaW5lLCBtX2xhc3RMaW5lKTsKICAgICB9IGVsc2UKICAgICAgICAgYmFzZSA9IHBh
cnNlUHJpbWFyeUV4cHJlc3Npb24oY29udGV4dCk7CiAgICAgCiAgICAgZmFpbElmRmFsc2UoYmFz
ZSk7CiAgICAgd2hpbGUgKHRydWUpIHsKLSAgICAgICAgbG9jYXRpb24gPSB0b2tlbkxvY2F0aW9u
KCk7CiAgICAgICAgIHN3aXRjaCAobV90b2tlbi5tX3R5cGUpIHsKICAgICAgICAgY2FzZSBPUEVO
QlJBQ0tFVDogewogICAgICAgICAgICAgbV9ub25Ucml2aWFsRXhwcmVzc2lvbkNvdW50Kys7CkBA
IC0xNTgxLDcgKzE1MjYsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHBy
ZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZU1lbWJlckV4cHJlcwogICAgICAgICAgICAg
aW50IGluaXRpYWxBc3NpZ25tZW50cyA9IG1fYXNzaWdubWVudENvdW50OwogICAgICAgICAgICAg
VHJlZUV4cHJlc3Npb24gcHJvcGVydHkgPSBwYXJzZUV4cHJlc3Npb24oY29udGV4dCk7CiAgICAg
ICAgICAgICBmYWlsSWZGYWxzZShwcm9wZXJ0eSk7Ci0gICAgICAgICAgICBiYXNlID0gY29udGV4
dC5jcmVhdGVCcmFja2V0QWNjZXNzKGxvY2F0aW9uLCBiYXNlLCBwcm9wZXJ0eSwgaW5pdGlhbEFz
c2lnbm1lbnRzICE9IG1fYXNzaWdubWVudENvdW50LCBleHByZXNzaW9uU3RhcnQsIGV4cHJlc3Np
b25FbmQsIHRva2VuRW5kKCkpOworICAgICAgICAgICAgYmFzZSA9IGNvbnRleHQuY3JlYXRlQnJh
Y2tldEFjY2VzcyhtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBiYXNlLCBwcm9wZXJ0eSwgaW5p
dGlhbEFzc2lnbm1lbnRzICE9IG1fYXNzaWdubWVudENvdW50LCBleHByZXNzaW9uU3RhcnQsIGV4
cHJlc3Npb25FbmQsIHRva2VuRW5kKCkpOwogICAgICAgICAgICAgY29uc3VtZU9yRmFpbChDTE9T
RUJSQUNLRVQpOwogICAgICAgICAgICAgbV9ub25MSFNDb3VudCA9IG5vbkxIU0NvdW50OwogICAg
ICAgICAgICAgYnJlYWs7CkBAIC0xNTk0LDEyICsxNTM5LDEyIEBAIHRlbXBsYXRlIDxjbGFzcyBU
cmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlTWVtYmVy
RXhwcmVzCiAgICAgICAgICAgICAgICAgaW50IGV4cHJFbmQgPSBsYXN0VG9rZW5FbmQoKTsKICAg
ICAgICAgICAgICAgICBUcmVlQXJndW1lbnRzIGFyZ3VtZW50cyA9IHBhcnNlQXJndW1lbnRzKGNv
bnRleHQpOwogICAgICAgICAgICAgICAgIGZhaWxJZkZhbHNlKGFyZ3VtZW50cyk7Ci0gICAgICAg
ICAgICAgICAgYmFzZSA9IGNvbnRleHQuY3JlYXRlTmV3RXhwcihsb2NhdGlvbiwgYmFzZSwgYXJn
dW1lbnRzLCBzdGFydCwgZXhwckVuZCwgbGFzdFRva2VuRW5kKCkpOworICAgICAgICAgICAgICAg
IGJhc2UgPSBjb250ZXh0LmNyZWF0ZU5ld0V4cHIobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwg
YmFzZSwgYXJndW1lbnRzLCBzdGFydCwgZXhwckVuZCwgbGFzdFRva2VuRW5kKCkpOyAgICAgICAg
ICAgCiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIGludCBleHByZXNzaW9u
RW5kID0gbGFzdFRva2VuRW5kKCk7CiAgICAgICAgICAgICAgICAgVHJlZUFyZ3VtZW50cyBhcmd1
bWVudHMgPSBwYXJzZUFyZ3VtZW50cyhjb250ZXh0KTsKICAgICAgICAgICAgICAgICBmYWlsSWZG
YWxzZShhcmd1bWVudHMpOwotICAgICAgICAgICAgICAgIGJhc2UgPSBjb250ZXh0Lm1ha2VGdW5j
dGlvbkNhbGxOb2RlKGxvY2F0aW9uLCBiYXNlLCBhcmd1bWVudHMsIGV4cHJlc3Npb25TdGFydCwg
ZXhwcmVzc2lvbkVuZCwgbGFzdFRva2VuRW5kKCkpOworICAgICAgICAgICAgICAgIGJhc2UgPSBj
b250ZXh0Lm1ha2VGdW5jdGlvbkNhbGxOb2RlKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGJh
c2UsIGFyZ3VtZW50cywgZXhwcmVzc2lvblN0YXJ0LCBleHByZXNzaW9uRW5kLCBsYXN0VG9rZW5F
bmQoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBtX25vbkxIU0NvdW50ID0gbm9uTEhT
Q291bnQ7CiAgICAgICAgICAgICBicmVhazsKQEAgLTE2MDksNyArMTU1NCw3IEBAIHRlbXBsYXRl
IDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBh
cnNlTWVtYmVyRXhwcmVzCiAgICAgICAgICAgICBpbnQgZXhwcmVzc2lvbkVuZCA9IGxhc3RUb2tl
bkVuZCgpOwogICAgICAgICAgICAgbmV4dEV4cGVjdElkZW50aWZpZXIoTGV4ZXJGbGFnc0lnbm9y
ZVJlc2VydmVkV29yZHMgfCBUcmVlQnVpbGRlcjo6RG9udEJ1aWxkS2V5d29yZHMpOwogICAgICAg
ICAgICAgbWF0Y2hPckZhaWwoSURFTlQpOwotICAgICAgICAgICAgYmFzZSA9IGNvbnRleHQuY3Jl
YXRlRG90QWNjZXNzKGxvY2F0aW9uLCBiYXNlLCBtX3Rva2VuLm1fZGF0YS5pZGVudCwgZXhwcmVz
c2lvblN0YXJ0LCBleHByZXNzaW9uRW5kLCB0b2tlbkVuZCgpKTsKKyAgICAgICAgICAgIGJhc2Ug
PSBjb250ZXh0LmNyZWF0ZURvdEFjY2VzcyhtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBiYXNl
LCBtX3Rva2VuLm1fZGF0YS5pZGVudCwgZXhwcmVzc2lvblN0YXJ0LCBleHByZXNzaW9uRW5kLCB0
b2tlbkVuZCgpKTsKICAgICAgICAgICAgIG5leHQoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CkBAIC0xNjE5LDcgKzE1NjQsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+
IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZU1lbWJlckV4cHJlcwogICAg
IH0KIGVuZE1lbWJlckV4cHJlc3Npb246CiAgICAgd2hpbGUgKG5ld0NvdW50LS0pCi0gICAgICAg
IGJhc2UgPSBjb250ZXh0LmNyZWF0ZU5ld0V4cHIobG9jYXRpb24sIGJhc2UsIHN0YXJ0LCBsYXN0
VG9rZW5FbmQoKSk7CisgICAgICAgIGJhc2UgPSBjb250ZXh0LmNyZWF0ZU5ld0V4cHIobV9sZXhl
ci0+bGFzdExpbmVOdW1iZXIoKSwgYmFzZSwgc3RhcnQsIGxhc3RUb2tlbkVuZCgpKTsKICAgICBy
ZXR1cm4gYmFzZTsKIH0KIApAQCAtMTY1Nyw3ICsxNjAyLDYgQEAgdGVtcGxhdGUgPGNsYXNzIFRy
ZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VVbmFyeUV4
cHJlc3MKICAgICAgICAgbV9ub25Ucml2aWFsRXhwcmVzc2lvbkNvdW50Kys7CiAgICAgfQogICAg
IGludCBzdWJFeHByU3RhcnQgPSB0b2tlblN0YXJ0KCk7Ci0gICAgSlNUb2tlbkxvY2F0aW9uIGxv
Y2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CiAgICAgVHJlZUV4cHJlc3Npb24gZXhwciA9IHBhcnNl
TWVtYmVyRXhwcmVzc2lvbihjb250ZXh0KTsKICAgICBmYWlsSWZGYWxzZShleHByKTsKICAgICBi
b29sIGlzRXZhbE9yQXJndW1lbnRzID0gZmFsc2U7CkBAIC0xNjcwLDcgKzE2MTQsNyBAQCB0ZW1w
bGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+
OjpwYXJzZVVuYXJ5RXhwcmVzcwogICAgIGNhc2UgUExVU1BMVVM6CiAgICAgICAgIG1fbm9uVHJp
dmlhbEV4cHJlc3Npb25Db3VudCsrOwogICAgICAgICBtX25vbkxIU0NvdW50Kys7Ci0gICAgICAg
IGV4cHIgPSBjb250ZXh0Lm1ha2VQb3N0Zml4Tm9kZShsb2NhdGlvbiwgZXhwciwgT3BQbHVzUGx1
cywgc3ViRXhwclN0YXJ0LCBsYXN0VG9rZW5FbmQoKSwgdG9rZW5FbmQoKSk7CisgICAgICAgIGV4
cHIgPSBjb250ZXh0Lm1ha2VQb3N0Zml4Tm9kZShtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBl
eHByLCBPcFBsdXNQbHVzLCBzdWJFeHByU3RhcnQsIGxhc3RUb2tlbkVuZCgpLCB0b2tlbkVuZCgp
KTsKICAgICAgICAgbV9hc3NpZ25tZW50Q291bnQrKzsKICAgICAgICAgZmFpbElmVHJ1ZUlmU3Ry
aWN0V2l0aE5hbWVBbmRNZXNzYWdlKGlzRXZhbE9yQXJndW1lbnRzLCAiJyIsIG1fbGFzdElkZW50
aWZpZXItPmltcGwoKSwgIicgY2Fubm90IGJlIG1vZGlmaWVkIGluIHN0cmljdCBtb2RlIik7CiAg
ICAgICAgIGZhaWxJZlRydWVJZlN0cmljdChyZXF1aXJlc0xFeHByKTsKQEAgLTE2NzksNyArMTYy
Myw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2Vy
PExleGVyVHlwZT46OnBhcnNlVW5hcnlFeHByZXNzCiAgICAgY2FzZSBNSU5VU01JTlVTOgogICAg
ICAgICBtX25vblRyaXZpYWxFeHByZXNzaW9uQ291bnQrKzsKICAgICAgICAgbV9ub25MSFNDb3Vu
dCsrOwotICAgICAgICBleHByID0gY29udGV4dC5tYWtlUG9zdGZpeE5vZGUobG9jYXRpb24sIGV4
cHIsIE9wTWludXNNaW51cywgc3ViRXhwclN0YXJ0LCBsYXN0VG9rZW5FbmQoKSwgdG9rZW5FbmQo
KSk7CisgICAgICAgIGV4cHIgPSBjb250ZXh0Lm1ha2VQb3N0Zml4Tm9kZShtX2xleGVyLT5sYXN0
TGluZU51bWJlcigpLCBleHByLCBPcE1pbnVzTWludXMsIHN1YkV4cHJTdGFydCwgbGFzdFRva2Vu
RW5kKCksIHRva2VuRW5kKCkpOwogICAgICAgICBtX2Fzc2lnbm1lbnRDb3VudCsrOwogICAgICAg
ICBmYWlsSWZUcnVlSWZTdHJpY3RXaXRoTmFtZUFuZE1lc3NhZ2UoaXNFdmFsT3JBcmd1bWVudHMs
ICInIiwgbV9sYXN0SWRlbnRpZmllci0+aW1wbCgpLCAiJyBjYW5ub3QgYmUgbW9kaWZpZWQgaW4g
c3RyaWN0IG1vZGUiKTsKICAgICAgICAgZmFpbElmVHJ1ZUlmU3RyaWN0KHJlcXVpcmVzTEV4cHIp
OwpAQCAtMTY5Myw0MiArMTYzNyw0MCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRy
ZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVVuYXJ5RXhwcmVzcwogICAgIAog
ICAgIGlmICghVHJlZUJ1aWxkZXI6OkNyZWF0ZXNBU1QgJiYgKG1fc3ludGF4QWxyZWFkeVZhbGlk
YXRlZCB8fCAhc3RyaWN0TW9kZSgpKSkKICAgICAgICAgcmV0dXJuIGV4cHI7Ci0KLSAgICBsb2Nh
dGlvbiA9IHRva2VuTG9jYXRpb24oKTsKLSAgICBsb2NhdGlvbi5saW5lID0gbV9sZXhlci0+bGFz
dExpbmVOdW1iZXIoKTsKKyAgICAKICAgICB3aGlsZSAodG9rZW5TdGFja0RlcHRoKSB7CiAgICAg
ICAgIHN3aXRjaCAoY29udGV4dC51bmFyeVRva2VuU3RhY2tMYXN0VHlwZSh0b2tlblN0YWNrRGVw
dGgpKSB7CiAgICAgICAgIGNhc2UgRVhDTEFNQVRJT046Ci0gICAgICAgICAgICBleHByID0gY29u
dGV4dC5jcmVhdGVMb2dpY2FsTm90KGxvY2F0aW9uLCBleHByKTsKKyAgICAgICAgICAgIGV4cHIg
PSBjb250ZXh0LmNyZWF0ZUxvZ2ljYWxOb3QobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgZXhw
cik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBUSUxERToKLSAgICAgICAgICAg
IGV4cHIgPSBjb250ZXh0Lm1ha2VCaXR3aXNlTm90Tm9kZShsb2NhdGlvbiwgZXhwcik7CisgICAg
ICAgICAgICBleHByID0gY29udGV4dC5tYWtlQml0d2lzZU5vdE5vZGUobV9sZXhlci0+bGFzdExp
bmVOdW1iZXIoKSwgZXhwcik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBNSU5V
UzoKLSAgICAgICAgICAgIGV4cHIgPSBjb250ZXh0Lm1ha2VOZWdhdGVOb2RlKGxvY2F0aW9uLCBl
eHByKTsKKyAgICAgICAgICAgIGV4cHIgPSBjb250ZXh0Lm1ha2VOZWdhdGVOb2RlKG1fbGV4ZXIt
Pmxhc3RMaW5lTnVtYmVyKCksIGV4cHIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh
c2UgUExVUzoKLSAgICAgICAgICAgIGV4cHIgPSBjb250ZXh0LmNyZWF0ZVVuYXJ5UGx1cyhsb2Nh
dGlvbiwgZXhwcik7CisgICAgICAgICAgICBleHByID0gY29udGV4dC5jcmVhdGVVbmFyeVBsdXMo
bV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgZXhwcik7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSBQTFVTUExVUzoKICAgICAgICAgY2FzZSBBVVRPUExVU1BMVVM6Ci0gICAgICAg
ICAgICBleHByID0gY29udGV4dC5tYWtlUHJlZml4Tm9kZShsb2NhdGlvbiwgZXhwciwgT3BQbHVz
UGx1cywgY29udGV4dC51bmFyeVRva2VuU3RhY2tMYXN0U3RhcnQodG9rZW5TdGFja0RlcHRoKSwg
c3ViRXhwclN0YXJ0ICsgMSwgZW5kKTsKKyAgICAgICAgICAgIGV4cHIgPSBjb250ZXh0Lm1ha2VQ
cmVmaXhOb2RlKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGV4cHIsIE9wUGx1c1BsdXMsIGNv
bnRleHQudW5hcnlUb2tlblN0YWNrTGFzdFN0YXJ0KHRva2VuU3RhY2tEZXB0aCksIHN1YkV4cHJT
dGFydCArIDEsIGVuZCk7CiAgICAgICAgICAgICBtX2Fzc2lnbm1lbnRDb3VudCsrOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgTUlOVVNNSU5VUzoKICAgICAgICAgY2FzZSBBVVRP
TUlOVVNNSU5VUzoKLSAgICAgICAgICAgIGV4cHIgPSBjb250ZXh0Lm1ha2VQcmVmaXhOb2RlKGxv
Y2F0aW9uLCBleHByLCBPcE1pbnVzTWludXMsIGNvbnRleHQudW5hcnlUb2tlblN0YWNrTGFzdFN0
YXJ0KHRva2VuU3RhY2tEZXB0aCksIHN1YkV4cHJTdGFydCArIDEsIGVuZCk7CisgICAgICAgICAg
ICBleHByID0gY29udGV4dC5tYWtlUHJlZml4Tm9kZShtX2xleGVyLT5sYXN0TGluZU51bWJlcigp
LCBleHByLCBPcE1pbnVzTWludXMsIGNvbnRleHQudW5hcnlUb2tlblN0YWNrTGFzdFN0YXJ0KHRv
a2VuU3RhY2tEZXB0aCksIHN1YkV4cHJTdGFydCArIDEsIGVuZCk7CiAgICAgICAgICAgICBtX2Fz
c2lnbm1lbnRDb3VudCsrOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVFlQRU9G
OgotICAgICAgICAgICAgZXhwciA9IGNvbnRleHQubWFrZVR5cGVPZk5vZGUobG9jYXRpb24sIGV4
cHIpOworICAgICAgICAgICAgZXhwciA9IGNvbnRleHQubWFrZVR5cGVPZk5vZGUobV9sZXhlci0+
bGFzdExpbmVOdW1iZXIoKSwgZXhwcik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBWT0lEVE9LRU46Ci0gICAgICAgICAgICBleHByID0gY29udGV4dC5jcmVhdGVWb2lkKGxvY2F0
aW9uLCBleHByKTsKKyAgICAgICAgICAgIGV4cHIgPSBjb250ZXh0LmNyZWF0ZVZvaWQobV9sZXhl
ci0+bGFzdExpbmVOdW1iZXIoKSwgZXhwcik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBERUxFVEVUT0tFTjoKICAgICAgICAgICAgIGZhaWxJZlRydWVJZlN0cmljdFdpdGhOYW1l
QW5kTWVzc2FnZShjb250ZXh0LmlzUmVzb2x2ZShleHByKSwgIkNhbm5vdCBkZWxldGUgdW5xdWFs
aWZpZWQgcHJvcGVydHkiLCBtX2xhc3RJZGVudGlmaWVyLT5pbXBsKCksICJpbiBzdHJpY3QgbW9k
ZSIpOwotICAgICAgICAgICAgZXhwciA9IGNvbnRleHQubWFrZURlbGV0ZU5vZGUobG9jYXRpb24s
IGV4cHIsIGNvbnRleHQudW5hcnlUb2tlblN0YWNrTGFzdFN0YXJ0KHRva2VuU3RhY2tEZXB0aCks
IGVuZCwgZW5kKTsKKyAgICAgICAgICAgIGV4cHIgPSBjb250ZXh0Lm1ha2VEZWxldGVOb2RlKG1f
bGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGV4cHIsIGNvbnRleHQudW5hcnlUb2tlblN0YWNrTGFz
dFN0YXJ0KHRva2VuU3RhY2tEZXB0aCksIGVuZCwgZW5kKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgLy8gSWYgd2UgZ2V0IGhlcmUgc29tZXRoaW5n
IGhhcyBnb25lIGhvcnJpYmx5IGhvcnJpYmx5IHdyb25nCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9QYXJzZXIuaAppbmRleCA3OWE5NWI2OTYzYjQxMjkwYmNhM2I0ZmE5Yzg1ODBmY2I2MjM1NTc2
Li5jMmExMWQ2NjViNzkxM2VjNWY2NDMxYzA2MzZjMWE4YTZkZDZhMDE2IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKQEAgLTUwMiwxOCArNTAyLDE4IEBAIHByaXZhdGU6CiAK
ICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgbmV4dCh1bnNpZ25lZCBsZXhlckZsYWdzID0gMCkKICAg
ICB7Ci0gICAgICAgIG1fbGFzdExpbmUgPSBtX3Rva2VuLm1fbG9jYXRpb24ubGluZTsKLSAgICAg
ICAgbV9sYXN0VG9rZW5FbmQgPSBtX3Rva2VuLm1fbG9jYXRpb24uZW5kT2Zmc2V0OworICAgICAg
ICBtX2xhc3RMaW5lID0gbV90b2tlbi5tX2luZm8ubGluZTsKKyAgICAgICAgbV9sYXN0VG9rZW5F
bmQgPSBtX3Rva2VuLm1faW5mby5lbmRPZmZzZXQ7CiAgICAgICAgIG1fbGV4ZXItPnNldExhc3RM
aW5lTnVtYmVyKG1fbGFzdExpbmUpOwotICAgICAgICBtX3Rva2VuLm1fdHlwZSA9IG1fbGV4ZXIt
PmxleCgmbV90b2tlbi5tX2RhdGEsICZtX3Rva2VuLm1fbG9jYXRpb24sIGxleGVyRmxhZ3MsIHN0
cmljdE1vZGUoKSk7CisgICAgICAgIG1fdG9rZW4ubV90eXBlID0gbV9sZXhlci0+bGV4KCZtX3Rv
a2VuLm1fZGF0YSwgJm1fdG9rZW4ubV9pbmZvLCBsZXhlckZsYWdzLCBzdHJpY3RNb2RlKCkpOwog
ICAgIH0KIAogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBuZXh0RXhwZWN0SWRlbnRpZmllcih1bnNp
Z25lZCBsZXhlckZsYWdzID0gMCkKICAgICB7Ci0gICAgICAgIG1fbGFzdExpbmUgPSBtX3Rva2Vu
Lm1fbG9jYXRpb24ubGluZTsKLSAgICAgICAgbV9sYXN0VG9rZW5FbmQgPSBtX3Rva2VuLm1fbG9j
YXRpb24uZW5kT2Zmc2V0OworICAgICAgICBtX2xhc3RMaW5lID0gbV90b2tlbi5tX2luZm8ubGlu
ZTsKKyAgICAgICAgbV9sYXN0VG9rZW5FbmQgPSBtX3Rva2VuLm1faW5mby5lbmRPZmZzZXQ7CiAg
ICAgICAgIG1fbGV4ZXItPnNldExhc3RMaW5lTnVtYmVyKG1fbGFzdExpbmUpOwotICAgICAgICBt
X3Rva2VuLm1fdHlwZSA9IG1fbGV4ZXItPmxleEV4cGVjdElkZW50aWZpZXIoJm1fdG9rZW4ubV9k
YXRhLCAmbV90b2tlbi5tX2xvY2F0aW9uLCBsZXhlckZsYWdzLCBzdHJpY3RNb2RlKCkpOworICAg
ICAgICBtX3Rva2VuLm1fdHlwZSA9IG1fbGV4ZXItPmxleEV4cGVjdElkZW50aWZpZXIoJm1fdG9r
ZW4ubV9kYXRhLCAmbV90b2tlbi5tX2luZm8sIGxleGVyRmxhZ3MsIHN0cmljdE1vZGUoKSk7CiAg
ICAgfQogCiAgICAgQUxXQVlTX0lOTElORSBib29sIG5leHRUb2tlbklzQ29sb24oKQpAQCAtNTQx
LDI1ICs1NDEsMjAgQEAgcHJpdmF0ZToKICAgICAKICAgICBBTFdBWVNfSU5MSU5FIGludCB0b2tl
blN0YXJ0KCkKICAgICB7Ci0gICAgICAgIHJldHVybiBtX3Rva2VuLm1fbG9jYXRpb24uc3RhcnRP
ZmZzZXQ7CisgICAgICAgIHJldHVybiBtX3Rva2VuLm1faW5mby5zdGFydE9mZnNldDsKICAgICB9
CiAgICAgCiAgICAgQUxXQVlTX0lOTElORSBpbnQgdG9rZW5MaW5lKCkKICAgICB7Ci0gICAgICAg
IHJldHVybiBtX3Rva2VuLm1fbG9jYXRpb24ubGluZTsKKyAgICAgICAgcmV0dXJuIG1fdG9rZW4u
bV9pbmZvLmxpbmU7CiAgICAgfQogICAgIAogICAgIEFMV0FZU19JTkxJTkUgaW50IHRva2VuRW5k
KCkKICAgICB7Ci0gICAgICAgIHJldHVybiBtX3Rva2VuLm1fbG9jYXRpb24uZW5kT2Zmc2V0Owor
ICAgICAgICByZXR1cm4gbV90b2tlbi5tX2luZm8uZW5kT2Zmc2V0OwogICAgIH0KICAgICAKLSAg
ICBBTFdBWVNfSU5MSU5FIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgdG9rZW5Mb2NhdGlvbigpCi0g
ICAgewotICAgICAgICByZXR1cm4gbV90b2tlbi5tX2xvY2F0aW9uOwotICAgIH0KLQotICAgIGNv
bnN0IGNoYXIqIGdldFRva2VuTmFtZShKU1Rva2VuVHlwZSB0b2spCisgICAgY29uc3QgY2hhciog
Z2V0VG9rZW5OYW1lKEpTVG9rZW5UeXBlIHRvaykgCiAgICAgewogICAgICAgICBzd2l0Y2ggKHRv
aykgewogICAgICAgICBjYXNlIE5VTExUT0tFTjogCkBAIC0xMDA4LDExICsxMDAzLDggQEAgUGFz
c1JlZlB0cjxQYXJzZWROb2RlPiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2UoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmoKIAogICAgIFJlZlB0cjxQYXJzZWROb2RlPiByZXN1bHQ7CiAg
ICAgaWYgKG1fc291cmNlRWxlbWVudHMpIHsKLSAgICAgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0
aW9uOwotICAgICAgICBsb2NhdGlvbi5saW5lID0gbV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKTsK
LSAgICAgICAgbG9jYXRpb24uY29sdW1uID0gbV9sZXhlci0+Y3VycmVudENvbHVtbk51bWJlcigp
OwogICAgICAgICByZXN1bHQgPSBQYXJzZWROb2RlOjpjcmVhdGUoJmxleGljYWxHbG9iYWxPYmpl
Y3QtPmdsb2JhbERhdGEoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxv
Y2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9sZXhlci0+bGFz
dExpbmVOdW1iZXIoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fc291
cmNlRWxlbWVudHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3ZhckRl
Y2xhcmF0aW9ucyA/ICZtX3ZhckRlY2xhcmF0aW9ucy0+ZGF0YSA6IDAsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtX2Z1bmNEZWNsYXJhdGlvbnMgPyAmbV9mdW5jRGVjbGFy
YXRpb25zLT5kYXRhIDogMCwKQEAgLTEwMjAsNyArMTAxMiw3IEBAIFBhc3NSZWZQdHI8UGFyc2Vk
Tm9kZT4gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xv
YmFsT2JqCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbV9zb3VyY2UsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2ZlYXR1cmVzLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9udW1Db25zdGFudHMpOwotICAgICAgICByZXN1
bHQtPnNldExvYyhtX3NvdXJjZS0+Zmlyc3RMaW5lKCksIG1fbGFzdExpbmUsIG1fbGV4ZXItPmN1
cnJlbnRDb2x1bW5OdW1iZXIoKSk7CisgICAgICAgIHJlc3VsdC0+c2V0TG9jKG1fc291cmNlLT5m
aXJzdExpbmUoKSwgbV9sYXN0TGluZSk7CiAgICAgfSBlbHNlIGlmIChsZXhpY2FsR2xvYmFsT2Jq
ZWN0KSB7CiAgICAgICAgIC8vIFdlIGNhbiBuZXZlciBzZWUgYSBzeW50YXggZXJyb3Igd2hlbiBy
ZXBhcnNpbmcgYSBmdW5jdGlvbiwgc2luY2Ugd2Ugc2hvdWxkIGhhdmUKICAgICAgICAgLy8gcmVw
b3J0ZWQgdGhlIGVycm9yIHdoZW4gcGFyc2luZyB0aGUgY29udGFpbmluZyBwcm9ncmFtIG9yIGV2
YWwgY29kZS4gU28gaWYgd2UncmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvUGFyc2VyVG9rZW5zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNl
clRva2Vucy5oCmluZGV4IDZlNmNlYzExNGQ0NDVlMzc4NjVmZWM4YzM5MWRmNWI1MWRlYzUxN2Eu
LmExZWE3NTFhYzIwYTc5MmZmNGM1ZTYyMWEwMWJjNzc0OWVhM2E5YmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyVG9rZW5zLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJUb2tlbnMuaApAQCAtMTQwLDI1ICsxNDAsMTcgQEAg
dW5pb24gSlNUb2tlbkRhdGEgewogICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50OwogfTsKIAot
c3RydWN0IEpTVG9rZW5Mb2NhdGlvbiB7Ci0gICAgSlNUb2tlbkxvY2F0aW9uKCkgOiBsaW5lKDAp
LCBjb2x1bW4oMCkgeyB9Ci0gICAgSlNUb2tlbkxvY2F0aW9uKGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYgbG9jYXRpb24pCi0gICAgewotICAgICAgICBsaW5lID0gbG9jYXRpb24ubGluZTsKLSAgICAg
ICAgc3RhcnRPZmZzZXQgPSBsb2NhdGlvbi5zdGFydE9mZnNldDsKLSAgICAgICAgZW5kT2Zmc2V0
ID0gbG9jYXRpb24uZW5kT2Zmc2V0OwotICAgICAgICBjb2x1bW4gPSBsb2NhdGlvbi5jb2x1bW47
Ci0gICAgfQorc3RydWN0IEpTVG9rZW5JbmZvIHsKKyAgICBKU1Rva2VuSW5mbygpIDogbGluZSgw
KSB7IH0KICAgICBpbnQgbGluZTsKICAgICBpbnQgc3RhcnRPZmZzZXQ7CiAgICAgaW50IGVuZE9m
ZnNldDsKLSAgICBpbnQgY29sdW1uOwogfTsKIAogc3RydWN0IEpTVG9rZW4gewogICAgIEpTVG9r
ZW5UeXBlIG1fdHlwZTsKICAgICBKU1Rva2VuRGF0YSBtX2RhdGE7Ci0gICAgSlNUb2tlbkxvY2F0
aW9uIG1fbG9jYXRpb247CisgICAgSlNUb2tlbkluZm8gbV9pbmZvOwogfTsKIAogZW51bSBKU1Bh
cnNlclN0cmljdG5lc3MgeyBKU1BhcnNlTm9ybWFsLCBKU1BhcnNlU3RyaWN0IH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZVByb3ZpZGVyQ2FjaGVJdGVt
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZVByb3ZpZGVyQ2FjaGVJdGVt
LmgKaW5kZXggOGIzNjIwNWRkMzViN2JhYTdkODc4NDE1NmQ3NDRiNmQ3ZGJlYTJlMy4uMzY2MjM2
N2EwMWI3MDlkOWNkNGVjM2Q0N2QyZjNkYjkzZTVlMjRhNyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VQcm92aWRlckNhY2hlSXRlbS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNlUHJvdmlkZXJDYWNoZUl0ZW0uaApAQCAtNTMs
OSArNTMsOSBAQCBwdWJsaWM6CiAgICAgICAgIEpTVG9rZW4gdG9rZW47CiAgICAgICAgIHRva2Vu
Lm1fdHlwZSA9IENMT1NFQlJBQ0U7CiAgICAgICAgIHRva2VuLm1fZGF0YS5pbnRWYWx1ZSA9IGNs
b3NlQnJhY2VQb3M7Ci0gICAgICAgIHRva2VuLm1fbG9jYXRpb24uc3RhcnRPZmZzZXQgPSBjbG9z
ZUJyYWNlUG9zOwotICAgICAgICB0b2tlbi5tX2xvY2F0aW9uLmVuZE9mZnNldCA9IGNsb3NlQnJh
Y2VQb3MgKyAxOwotICAgICAgICB0b2tlbi5tX2xvY2F0aW9uLmxpbmUgPSBjbG9zZUJyYWNlTGlu
ZTsgCisgICAgICAgIHRva2VuLm1faW5mby5zdGFydE9mZnNldCA9IGNsb3NlQnJhY2VQb3M7Cisg
ICAgICAgIHRva2VuLm1faW5mby5lbmRPZmZzZXQgPSBjbG9zZUJyYWNlUG9zICsgMTsKKyAgICAg
ICAgdG9rZW4ubV9pbmZvLmxpbmUgPSBjbG9zZUJyYWNlTGluZTsgCiAgICAgICAgIHJldHVybiB0
b2tlbjsKICAgICB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1N5bnRheENoZWNrZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4
Q2hlY2tlci5oCmluZGV4IDdkNDRlZjNjNjZlY2NlOGVjNjhiYWZlYTkzZGJjOWFhYzQwYjk0MTMu
LmZlM2NlNzE0ZjMwZTQ5MDBjYTU0YjU2NTVmZDhhMTE5MDZjN2ZkZGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCkBAIC0xMTksNDIgKzExOSw0MiBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIERvbnRCdWlsZFN0cmluZ3MgPSBM
ZXhlckZsYWdzRG9udEJ1aWxkU3RyaW5nczsKIAogICAgIGludCBjcmVhdGVTb3VyY2VFbGVtZW50
cygpIHsgcmV0dXJuIDE7IH0KLSAgICBFeHByZXNzaW9uVHlwZSBtYWtlRnVuY3Rpb25DYWxsTm9k
ZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1
cm4gQ2FsbEV4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBtYWtlRnVuY3Rpb25DYWxsTm9kZShp
bnQsIGludCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiBDYWxsRXhwcjsgfQogICAgIHZv
aWQgYXBwZW5kVG9Db21tYShFeHByZXNzaW9uVHlwZSYgYmFzZSwgRXhwcmVzc2lvblR5cGUgcmln
aHQpIHsgYmFzZSA9IHJpZ2h0OyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlQ29tbWFFeHBy
KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlLCBFeHByZXNzaW9uVHlwZSBy
aWdodCkgeyByZXR1cm4gcmlnaHQ7IH0KLSAgICBFeHByZXNzaW9uVHlwZSBtYWtlQXNzaWduTm9k
ZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uVHlwZSwgT3BlcmF0b3IsIEV4cHJl
c3Npb25UeXBlLCBib29sLCBib29sLCBpbnQsIGludCwgaW50KSB7IHJldHVybiBBc3NpZ25tZW50
RXhwcjsgfQotICAgIEV4cHJlc3Npb25UeXBlIG1ha2VQcmVmaXhOb2RlKGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlLCBPcGVyYXRvciwgaW50LCBpbnQsIGludCkgeyByZXR1
cm4gUHJlRXhwcjsgfQotICAgIEV4cHJlc3Npb25UeXBlIG1ha2VQb3N0Zml4Tm9kZShjb25zdCBK
U1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uVHlwZSwgT3BlcmF0b3IsIGludCwgaW50LCBpbnQp
IHsgcmV0dXJuIFBvc3RFeHByOyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgbWFrZVR5cGVPZk5vZGUo
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvblR5cGUpIHsgcmV0dXJuIFR5cGVvZkV4
cHI7IH0KLSAgICBFeHByZXNzaW9uVHlwZSBtYWtlRGVsZXRlTm9kZShjb25zdCBKU1Rva2VuTG9j
YXRpb24mLCBFeHByZXNzaW9uVHlwZSwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gRGVsZXRlRXhw
cjsgfQotICAgIEV4cHJlc3Npb25UeXBlIG1ha2VOZWdhdGVOb2RlKGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYsIEV4cHJlc3Npb25UeXBlKSB7IHJldHVybiBVbmFyeUV4cHI7IH0KLSAgICBFeHByZXNz
aW9uVHlwZSBtYWtlQml0d2lzZU5vdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVz
c2lvblR5cGUpIHsgcmV0dXJuIFVuYXJ5RXhwcjsgfQotICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0
ZUxvZ2ljYWxOb3QoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvblR5cGUpIHsgcmV0
dXJuIFVuYXJ5RXhwcjsgfQotICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZVVuYXJ5UGx1cyhjb25z
dCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uVHlwZSkgeyByZXR1cm4gVW5hcnlFeHByOyB9
Ci0gICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlVm9pZChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBF
eHByZXNzaW9uVHlwZSkgeyByZXR1cm4gVW5hcnlFeHByOyB9Ci0gICAgRXhwcmVzc2lvblR5cGUg
dGhpc0V4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJikgeyByZXR1cm4gVGhpc0V4cHI7IH0KLSAg
ICBFeHByZXNzaW9uVHlwZSBjcmVhdGVSZXNvbHZlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNv
bnN0IElkZW50aWZpZXIqLCBpbnQpIHsgcmV0dXJuIFJlc29sdmVFeHByOyB9Ci0gICAgRXhwcmVz
c2lvblR5cGUgY3JlYXRlT2JqZWN0TGl0ZXJhbChjb25zdCBKU1Rva2VuTG9jYXRpb24mKSB7IHJl
dHVybiBPYmplY3RMaXRlcmFsRXhwcjsgfQotICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZU9iamVj
dExpdGVyYWwoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50KSB7IHJldHVybiBPYmplY3RMaXRl
cmFsRXhwcjsgfQotICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUFycmF5KGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYsIGludCkgeyByZXR1cm4gQXJyYXlMaXRlcmFsRXhwcjsgfQotICAgIEV4cHJlc3Np
b25UeXBlIGNyZWF0ZUFycmF5KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwgaW50KSB7IHJl
dHVybiBBcnJheUxpdGVyYWxFeHByOyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlTnVtYmVy
RXhwcihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBkb3VibGUpIHsgcmV0dXJuIE51bWJlckV4cHI7
IH0KLSAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVTdHJpbmcoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiwgY29uc3QgSWRlbnRpZmllciopIHsgcmV0dXJuIFN0cmluZ0V4cHI7IH0KLSAgICBFeHByZXNz
aW9uVHlwZSBjcmVhdGVCb29sZWFuKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGJvb2wpIHsgcmV0
dXJuIEJvb2xFeHByOyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlTnVsbChjb25zdCBKU1Rv
a2VuTG9jYXRpb24mKSB7IHJldHVybiBOdWxsRXhwcjsgfQotICAgIEV4cHJlc3Npb25UeXBlIGNy
ZWF0ZUJyYWNrZXRBY2Nlc3MoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvblR5cGUs
IEV4cHJlc3Npb25UeXBlLCBib29sLCBpbnQsIGludCwgaW50KSB7IHJldHVybiBCcmFja2V0RXhw
cjsgfQotICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZURvdEFjY2Vzcyhjb25zdCBKU1Rva2VuTG9j
YXRpb24mLCBFeHByZXNzaW9uVHlwZSwgY29uc3QgSWRlbnRpZmllciosIGludCwgaW50LCBpbnQp
IHsgcmV0dXJuIERvdEV4cHI7IH0KLSAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVSZWdFeHAoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYgcGF0dGVybiwgY29uc3QgSWRl
bnRpZmllciYsIGludCkgeyByZXR1cm4gWWFycjo6Y2hlY2tTeW50YXgocGF0dGVybi51c3RyaW5n
KCkpID8gMCA6IFJlZ0V4cEV4cHI7IH0KLSAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVOZXdFeHBy
KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlLCBpbnQsIGludCwgaW50LCBp
bnQpIHsgcmV0dXJuIE5ld0V4cHI7IH0KLSAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVOZXdFeHBy
KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlLCBpbnQsIGludCkgeyByZXR1
cm4gTmV3RXhwcjsgfQotICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUNvbmRpdGlvbmFsRXhwcihj
b25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uVHlwZSwgRXhwcmVzc2lvblR5cGUsIEV4
cHJlc3Npb25UeXBlKSB7IHJldHVybiBDb25kaXRpb25hbEV4cHI7IH0KLSAgICBFeHByZXNzaW9u
VHlwZSBjcmVhdGVBc3NpZ25SZXNvbHZlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElk
ZW50aWZpZXImLCBFeHByZXNzaW9uVHlwZSwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gQXNzaWdu
bWVudEV4cHI7IH0KLSAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVGdW5jdGlvbkV4cHIoY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciosIGludCwgaW50LCBpbnQsIGludCwg
aW50LCBpbnQpIHsgcmV0dXJuIEZ1bmN0aW9uRXhwcjsgfQotICAgIGludCBjcmVhdGVGdW5jdGlv
bkJvZHkoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgYm9vbCkgeyByZXR1cm4gMTsgfQorICAgIEV4
cHJlc3Npb25UeXBlIGNyZWF0ZUNvbW1hRXhwcihpbnQsIEV4cHJlc3Npb25UeXBlLCBFeHByZXNz
aW9uVHlwZSByaWdodCkgeyByZXR1cm4gcmlnaHQ7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBtYWtl
QXNzaWduTm9kZShpbnQsIEV4cHJlc3Npb25UeXBlLCBPcGVyYXRvciwgRXhwcmVzc2lvblR5cGUs
IGJvb2wsIGJvb2wsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIEFzc2lnbm1lbnRFeHByOyB9Cisg
ICAgRXhwcmVzc2lvblR5cGUgbWFrZVByZWZpeE5vZGUoaW50LCBFeHByZXNzaW9uVHlwZSwgT3Bl
cmF0b3IsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIFByZUV4cHI7IH0KKyAgICBFeHByZXNzaW9u
VHlwZSBtYWtlUG9zdGZpeE5vZGUoaW50LCBFeHByZXNzaW9uVHlwZSwgT3BlcmF0b3IsIGludCwg
aW50LCBpbnQpIHsgcmV0dXJuIFBvc3RFeHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgbWFrZVR5
cGVPZk5vZGUoaW50LCBFeHByZXNzaW9uVHlwZSkgeyByZXR1cm4gVHlwZW9mRXhwcjsgfQorICAg
IEV4cHJlc3Npb25UeXBlIG1ha2VEZWxldGVOb2RlKGludCwgRXhwcmVzc2lvblR5cGUsIGludCwg
aW50LCBpbnQpIHsgcmV0dXJuIERlbGV0ZUV4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBtYWtl
TmVnYXRlTm9kZShpbnQsIEV4cHJlc3Npb25UeXBlKSB7IHJldHVybiBVbmFyeUV4cHI7IH0KKyAg
ICBFeHByZXNzaW9uVHlwZSBtYWtlQml0d2lzZU5vdE5vZGUoaW50LCBFeHByZXNzaW9uVHlwZSkg
eyByZXR1cm4gVW5hcnlFeHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlTG9naWNhbE5v
dChpbnQsIEV4cHJlc3Npb25UeXBlKSB7IHJldHVybiBVbmFyeUV4cHI7IH0KKyAgICBFeHByZXNz
aW9uVHlwZSBjcmVhdGVVbmFyeVBsdXMoaW50LCBFeHByZXNzaW9uVHlwZSkgeyByZXR1cm4gVW5h
cnlFeHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlVm9pZChpbnQsIEV4cHJlc3Npb25U
eXBlKSB7IHJldHVybiBVbmFyeUV4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSB0aGlzRXhwcihp
bnQpIHsgcmV0dXJuIFRoaXNFeHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlUmVzb2x2
ZShpbnQsIGNvbnN0IElkZW50aWZpZXIqLCBpbnQpIHsgcmV0dXJuIFJlc29sdmVFeHByOyB9Cisg
ICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlT2JqZWN0TGl0ZXJhbChpbnQpIHsgcmV0dXJuIE9iamVj
dExpdGVyYWxFeHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlT2JqZWN0TGl0ZXJhbChp
bnQsIGludCkgeyByZXR1cm4gT2JqZWN0TGl0ZXJhbEV4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlw
ZSBjcmVhdGVBcnJheShpbnQsIGludCkgeyByZXR1cm4gQXJyYXlMaXRlcmFsRXhwcjsgfQorICAg
IEV4cHJlc3Npb25UeXBlIGNyZWF0ZUFycmF5KGludCwgaW50LCBpbnQpIHsgcmV0dXJuIEFycmF5
TGl0ZXJhbEV4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVOdW1iZXJFeHByKGludCwg
ZG91YmxlKSB7IHJldHVybiBOdW1iZXJFeHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRl
U3RyaW5nKGludCwgY29uc3QgSWRlbnRpZmllciopIHsgcmV0dXJuIFN0cmluZ0V4cHI7IH0KKyAg
ICBFeHByZXNzaW9uVHlwZSBjcmVhdGVCb29sZWFuKGludCwgYm9vbCkgeyByZXR1cm4gQm9vbEV4
cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVOdWxsKGludCkgeyByZXR1cm4gTnVsbEV4
cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVCcmFja2V0QWNjZXNzKGludCwgRXhwcmVz
c2lvblR5cGUsIEV4cHJlc3Npb25UeXBlLCBib29sLCBpbnQsIGludCwgaW50KSB7IHJldHVybiBC
cmFja2V0RXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZURvdEFjY2VzcyhpbnQsIEV4
cHJlc3Npb25UeXBlLCBjb25zdCBJZGVudGlmaWVyKiwgaW50LCBpbnQsIGludCkgeyByZXR1cm4g
RG90RXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZVJlZ0V4cChpbnQsIGNvbnN0IElk
ZW50aWZpZXImIHBhdHRlcm4sIGNvbnN0IElkZW50aWZpZXImLCBpbnQpIHsgcmV0dXJuIFlhcnI6
OmNoZWNrU3ludGF4KHBhdHRlcm4udXN0cmluZygpKSA/IDAgOiBSZWdFeHBFeHByOyB9CisgICAg
RXhwcmVzc2lvblR5cGUgY3JlYXRlTmV3RXhwcihpbnQsIEV4cHJlc3Npb25UeXBlLCBpbnQsIGlu
dCwgaW50LCBpbnQpIHsgcmV0dXJuIE5ld0V4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBjcmVh
dGVOZXdFeHByKGludCwgRXhwcmVzc2lvblR5cGUsIGludCwgaW50KSB7IHJldHVybiBOZXdFeHBy
OyB9CisgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlQ29uZGl0aW9uYWxFeHByKGludCwgRXhwcmVz
c2lvblR5cGUsIEV4cHJlc3Npb25UeXBlLCBFeHByZXNzaW9uVHlwZSkgeyByZXR1cm4gQ29uZGl0
aW9uYWxFeHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlQXNzaWduUmVzb2x2ZShpbnQs
IGNvbnN0IElkZW50aWZpZXImLCBFeHByZXNzaW9uVHlwZSwgaW50LCBpbnQsIGludCkgeyByZXR1
cm4gQXNzaWdubWVudEV4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVGdW5jdGlvbkV4
cHIoaW50LCBjb25zdCBJZGVudGlmaWVyKiwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCkg
eyByZXR1cm4gRnVuY3Rpb25FeHByOyB9CisgICAgaW50IGNyZWF0ZUZ1bmN0aW9uQm9keShpbnQs
IGJvb2wpIHsgcmV0dXJuIDE7IH0KICAgICBpbnQgY3JlYXRlQXJndW1lbnRzKCkgeyByZXR1cm4g
MTsgfQogICAgIGludCBjcmVhdGVBcmd1bWVudHMoaW50KSB7IHJldHVybiAxOyB9Ci0gICAgaW50
IGNyZWF0ZUFyZ3VtZW50c0xpc3QoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50KSB7IHJldHVy
biAxOyB9Ci0gICAgaW50IGNyZWF0ZUFyZ3VtZW50c0xpc3QoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KKyAgICBpbnQgY3JlYXRlQXJndW1lbnRzTGlzdChp
bnQsIGludCkgeyByZXR1cm4gMTsgfQorICAgIGludCBjcmVhdGVBcmd1bWVudHNMaXN0KGludCwg
aW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KICAgICB0ZW1wbGF0ZSA8Ym9vbCBjb21wbGV0ZT4gUHJv
cGVydHkgY3JlYXRlUHJvcGVydHkoY29uc3QgSWRlbnRpZmllciogbmFtZSwgaW50LCBQcm9wZXJ0
eU5vZGU6OlR5cGUgdHlwZSkKICAgICB7CiAgICAgICAgIGlmICghY29tcGxldGUpCkBAIC0xNjgs
OCArMTY4LDggQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuIFByb3BlcnR5KHR5cGUpOwog
ICAgICAgICByZXR1cm4gUHJvcGVydHkoJmdsb2JhbERhdGEtPnBhcnNlckFyZW5hLT5pZGVudGlm
aWVyQXJlbmEoKS5tYWtlTnVtZXJpY0lkZW50aWZpZXIoZ2xvYmFsRGF0YSwgbmFtZSksIHR5cGUp
OwogICAgIH0KLSAgICBpbnQgY3JlYXRlUHJvcGVydHlMaXN0KGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYsIFByb3BlcnR5KSB7IHJldHVybiAxOyB9Ci0gICAgaW50IGNyZWF0ZVByb3BlcnR5TGlzdChj
b25zdCBKU1Rva2VuTG9jYXRpb24mLCBQcm9wZXJ0eSwgaW50KSB7IHJldHVybiAxOyB9CisgICAg
aW50IGNyZWF0ZVByb3BlcnR5TGlzdChpbnQsIFByb3BlcnR5KSB7IHJldHVybiAxOyB9CisgICAg
aW50IGNyZWF0ZVByb3BlcnR5TGlzdChpbnQsIFByb3BlcnR5LCBpbnQpIHsgcmV0dXJuIDE7IH0K
ICAgICBpbnQgY3JlYXRlRWxlbWVudExpc3QoaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KICAgICBp
bnQgY3JlYXRlRWxlbWVudExpc3QoaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQogICAgIGlu
dCBjcmVhdGVGb3JtYWxQYXJhbWV0ZXJMaXN0KGNvbnN0IElkZW50aWZpZXImKSB7IHJldHVybiAx
OyB9CkBAIC0xNzgsMzkgKzE3OCwzOSBAQCBwdWJsaWM6CiAgICAgaW50IGNyZWF0ZUNsYXVzZUxp
c3QoaW50KSB7IHJldHVybiAxOyB9CiAgICAgaW50IGNyZWF0ZUNsYXVzZUxpc3QoaW50LCBpbnQp
IHsgcmV0dXJuIDE7IH0KICAgICB2b2lkIHNldFVzZXNBcmd1bWVudHMoaW50KSB7IH0KLSAgICBp
bnQgY3JlYXRlRnVuY0RlY2xTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3Qg
SWRlbnRpZmllciosIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0K
LSAgICBpbnQgY3JlYXRlQmxvY2tTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50
LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVFeHByU3RhdGVtZW50KGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KLSAgICBp
bnQgY3JlYXRlSWZTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQsIGlu
dCwgaW50KSB7IHJldHVybiAxOyB9Ci0gICAgaW50IGNyZWF0ZUlmU3RhdGVtZW50KGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYsIGludCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9Ci0g
ICAgaW50IGNyZWF0ZUZvckxvb3AoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQsIGlu
dCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVGb3JJbkxvb3Ao
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciosIGludCwgaW50LCBpbnQs
IGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQotICAgIGlu
dCBjcmVhdGVGb3JJbkxvb3AoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQsIGludCwg
aW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KLSAgICBpbnQgY3JlYXRlRW1w
dHlTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJikgeyByZXR1cm4gMTsgfQotICAgIGlu
dCBjcmVhdGVWYXJTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQsIGlu
dCkgeyByZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVSZXR1cm5TdGF0ZW1lbnQoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiwgaW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KLSAg
ICBpbnQgY3JlYXRlQnJlYWtTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBp
bnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9Ci0gICAgaW50IGNyZWF0ZUJyZWFrU3RhdGVtZW50
KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXIqLCBpbnQsIGludCwgaW50
LCBpbnQpIHsgcmV0dXJuIDE7IH0KLSAgICBpbnQgY3JlYXRlQ29udGludWVTdGF0ZW1lbnQoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9Ci0g
ICAgaW50IGNyZWF0ZUNvbnRpbnVlU3RhdGVtZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNv
bnN0IElkZW50aWZpZXIqLCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KLSAgICBp
bnQgY3JlYXRlVHJ5U3RhdGVtZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwgY29uc3Qg
SWRlbnRpZmllciosIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQotICAgIGludCBj
cmVhdGVTd2l0Y2hTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQsIGlu
dCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVXaGlsZVN0YXRl
bWVudChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJu
IDE7IH0KLSAgICBpbnQgY3JlYXRlV2l0aFN0YXRlbWVudChjb25zdCBKU1Rva2VuTG9jYXRpb24m
LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9Ci0gICAgaW50IGNy
ZWF0ZURvV2hpbGVTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQsIGlu
dCwgaW50KSB7IHJldHVybiAxOyB9Ci0gICAgaW50IGNyZWF0ZUxhYmVsU3RhdGVtZW50KGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXIqLCBpbnQsIGludCwgaW50KSB7IHJl
dHVybiAxOyB9Ci0gICAgaW50IGNyZWF0ZVRocm93U3RhdGVtZW50KGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYsIGludCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9Ci0gICAgaW50IGNy
ZWF0ZURlYnVnZ2VyKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwgaW50KSB7IHJldHVybiAx
OyB9Ci0gICAgaW50IGNyZWF0ZUNvbnN0U3RhdGVtZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYs
IGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KLSAgICBpbnQgYXBwZW5kQ29uc3REZWNsKGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwgY29uc3QgSWRlbnRpZmllciosIGludCkgeyByZXR1
cm4gMTsgfQotICAgIHRlbXBsYXRlIDxib29sIHN0cmljdD4gUHJvcGVydHkgY3JlYXRlR2V0dGVy
T3JTZXR0ZXJQcm9wZXJ0eShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBQcm9wZXJ0eU5vZGU6OlR5
cGUgdHlwZSwgY29uc3QgSWRlbnRpZmllciogbmFtZSwgaW50LCBpbnQsIGludCwgaW50LCBpbnQs
IGludCkKKyAgICBpbnQgY3JlYXRlRnVuY0RlY2xTdGF0ZW1lbnQoaW50LCBjb25zdCBJZGVudGlm
aWVyKiwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQorICAgIGlu
dCBjcmVhdGVCbG9ja1N0YXRlbWVudChpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0K
KyAgICBpbnQgY3JlYXRlRXhwclN0YXRlbWVudChpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJu
IDE7IH0KKyAgICBpbnQgY3JlYXRlSWZTdGF0ZW1lbnQoaW50LCBpbnQsIGludCwgaW50LCBpbnQp
IHsgcmV0dXJuIDE7IH0KKyAgICBpbnQgY3JlYXRlSWZTdGF0ZW1lbnQoaW50LCBpbnQsIGludCwg
aW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQorICAgIGludCBjcmVhdGVGb3JMb29wKGludCwg
aW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQorICAgIGludCBjcmVh
dGVGb3JJbkxvb3AoaW50LCBjb25zdCBJZGVudGlmaWVyKiwgaW50LCBpbnQsIGludCwgaW50LCBp
bnQsIGludCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9CisgICAgaW50IGNyZWF0
ZUZvckluTG9vcChpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50KSB7
IHJldHVybiAxOyB9CisgICAgaW50IGNyZWF0ZUVtcHR5U3RhdGVtZW50KGludCkgeyByZXR1cm4g
MTsgfQorICAgIGludCBjcmVhdGVWYXJTdGF0ZW1lbnQoaW50LCBpbnQsIGludCwgaW50KSB7IHJl
dHVybiAxOyB9CisgICAgaW50IGNyZWF0ZVJldHVyblN0YXRlbWVudChpbnQsIGludCwgaW50LCBp
bnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9CisgICAgaW50IGNyZWF0ZUJyZWFrU3RhdGVtZW50
KGludCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9CisgICAgaW50IGNyZWF0ZUJy
ZWFrU3RhdGVtZW50KGludCwgY29uc3QgSWRlbnRpZmllciosIGludCwgaW50LCBpbnQsIGludCkg
eyByZXR1cm4gMTsgfQorICAgIGludCBjcmVhdGVDb250aW51ZVN0YXRlbWVudChpbnQsIGludCwg
aW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQorICAgIGludCBjcmVhdGVDb250aW51ZVN0YXRl
bWVudChpbnQsIGNvbnN0IElkZW50aWZpZXIqLCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJu
IDE7IH0KKyAgICBpbnQgY3JlYXRlVHJ5U3RhdGVtZW50KGludCwgaW50LCBjb25zdCBJZGVudGlm
aWVyKiwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9CisgICAgaW50IGNyZWF0ZVN3
aXRjaFN0YXRlbWVudChpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJu
IDE7IH0KKyAgICBpbnQgY3JlYXRlV2hpbGVTdGF0ZW1lbnQoaW50LCBpbnQsIGludCwgaW50LCBp
bnQpIHsgcmV0dXJuIDE7IH0KKyAgICBpbnQgY3JlYXRlV2l0aFN0YXRlbWVudChpbnQsIGludCwg
aW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KKyAgICBpbnQgY3JlYXRlRG9X
aGlsZVN0YXRlbWVudChpbnQsIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQorICAg
IGludCBjcmVhdGVMYWJlbFN0YXRlbWVudChpbnQsIGNvbnN0IElkZW50aWZpZXIqLCBpbnQsIGlu
dCwgaW50KSB7IHJldHVybiAxOyB9CisgICAgaW50IGNyZWF0ZVRocm93U3RhdGVtZW50KGludCwg
aW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KKyAgICBpbnQgY3JlYXRlRGVi
dWdnZXIoaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQorICAgIGludCBjcmVhdGVDb25zdFN0
YXRlbWVudChpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KKyAgICBpbnQgYXBwZW5k
Q29uc3REZWNsKGludCwgaW50LCBjb25zdCBJZGVudGlmaWVyKiwgaW50KSB7IHJldHVybiAxOyB9
CisgICAgdGVtcGxhdGUgPGJvb2wgc3RyaWN0PiBQcm9wZXJ0eSBjcmVhdGVHZXR0ZXJPclNldHRl
clByb3BlcnR5KGludCwgUHJvcGVydHlOb2RlOjpUeXBlIHR5cGUsIGNvbnN0IElkZW50aWZpZXIq
IG5hbWUsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQpCiAgICAgewogICAgICAgICBBU1NF
UlQobmFtZSk7CiAgICAgICAgIGlmICghc3RyaWN0KQogICAgICAgICAgICAgcmV0dXJuIFByb3Bl
cnR5KHR5cGUpOwogICAgICAgICByZXR1cm4gUHJvcGVydHkobmFtZSwgdHlwZSk7CiAgICAgfQot
ICAgIHRlbXBsYXRlIDxib29sIHN0cmljdD4gUHJvcGVydHkgY3JlYXRlR2V0dGVyT3JTZXR0ZXJQ
cm9wZXJ0eShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYs
IFByb3BlcnR5Tm9kZTo6VHlwZSB0eXBlLCBkb3VibGUgbmFtZSwgaW50LCBpbnQsIGludCwgaW50
LCBpbnQsIGludCkKKyAgICB0ZW1wbGF0ZSA8Ym9vbCBzdHJpY3Q+IFByb3BlcnR5IGNyZWF0ZUdl
dHRlck9yU2V0dGVyUHJvcGVydHkoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBpbnQsIFByb3Bl
cnR5Tm9kZTo6VHlwZSB0eXBlLCBkb3VibGUgbmFtZSwgaW50LCBpbnQsIGludCwgaW50LCBpbnQs
IGludCkKICAgICB7CiAgICAgICAgIGlmICghc3RyaWN0KQogICAgICAgICAgICAgcmV0dXJuIFBy
b3BlcnR5KHR5cGUpOwpAQCAtMjE5LDcgKzIxOSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYXBw
ZW5kU3RhdGVtZW50KGludCwgaW50KSB7IH0KICAgICB2b2lkIGFkZFZhcihjb25zdCBJZGVudGlm
aWVyKiwgYm9vbCkgeyB9Ci0gICAgaW50IGNvbWJpbmVDb21tYU5vZGVzKGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYsIGludCwgaW50KSB7IHJldHVybiAxOyB9CisgICAgaW50IGNvbWJpbmVDb21tYU5v
ZGVzKGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KICAgICBpbnQgZXZhbENvdW50KCkgY29u
c3QgeyByZXR1cm4gMDsgfQogICAgIHZvaWQgYXBwZW5kQmluYXJ5RXhwcmVzc2lvbkluZm8oaW50
JiBvcGVyYW5kU3RhY2tEZXB0aCwgaW50IGV4cHIsIGludCwgaW50LCBpbnQsIGJvb2wpCiAgICAg
ewpAQCAtMjM1LDcgKzIzNSw3IEBAIHB1YmxpYzoKICAgICBib29sIG9wZXJhdG9yU3RhY2tIYXNI
aWdoZXJQcmVjZWRlbmNlKGludCYsIGludCkgeyByZXR1cm4gdHJ1ZTsgfQogICAgIEJpbmFyeU9w
ZXJhbmQgZ2V0RnJvbU9wZXJhbmRTdGFjayhpbnQpIHsgcmV0dXJuIG1fdG9wQmluYXJ5RXhwcjsg
fQogICAgIHZvaWQgc2hyaW5rT3BlcmFuZFN0YWNrQnkoaW50JiBvcGVyYW5kU3RhY2tEZXB0aCwg
aW50IGFtb3VudCkgeyBvcGVyYW5kU3RhY2tEZXB0aCAtPSBhbW91bnQ7IH0KLSAgICB2b2lkIGFw
cGVuZEJpbmFyeU9wZXJhdGlvbihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQmIG9wZXJhbmRT
dGFja0RlcHRoLCBpbnQmLCBCaW5hcnlPcGVyYW5kLCBCaW5hcnlPcGVyYW5kKSB7IG9wZXJhbmRT
dGFja0RlcHRoKys7IH0KKyAgICB2b2lkIGFwcGVuZEJpbmFyeU9wZXJhdGlvbihpbnQsIGludCYg
b3BlcmFuZFN0YWNrRGVwdGgsIGludCYsIEJpbmFyeU9wZXJhbmQsIEJpbmFyeU9wZXJhbmQpIHsg
b3BlcmFuZFN0YWNrRGVwdGgrKzsgfQogICAgIHZvaWQgb3BlcmF0b3JTdGFja0FwcGVuZChpbnQm
IG9wZXJhdG9yU3RhY2tEZXB0aCwgaW50LCBpbnQpIHsgb3BlcmF0b3JTdGFja0RlcHRoKys7IH0K
ICAgICBpbnQgcG9wT3BlcmFuZFN0YWNrKGludCYpIHsgaW50IHJlcyA9IG1fdG9wQmluYXJ5RXhw
cjsgbV90b3BCaW5hcnlFeHByID0gMDsgcmV0dXJuIHJlczsgfQogICAgIApAQCAtMjQ1LDcgKzI0
NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHVuYXJ5VG9rZW5TdGFja1JlbW92ZUxhc3QoaW50JiBz
dGFja0RlcHRoKSB7IHN0YWNrRGVwdGggPSAwOyB9CiAgICAgCiAgICAgdm9pZCBhc3NpZ25tZW50
U3RhY2tBcHBlbmQoaW50LCBpbnQsIGludCwgaW50LCBpbnQsIE9wZXJhdG9yKSB7IH0KLSAgICBp
bnQgY3JlYXRlQXNzaWdubWVudChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGludCwgaW50
LCBpbnQsIGludCkgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIDE7IH0KKyAgICBpbnQg
Y3JlYXRlQXNzaWdubWVudChpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50KSB7IEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOyByZXR1cm4gMTsgfQogICAgIGNvbnN0IElkZW50aWZpZXImIGdldE5hbWUo
Y29uc3QgUHJvcGVydHkmIHByb3BlcnR5KSBjb25zdCB7IEFTU0VSVChwcm9wZXJ0eS5uYW1lKTsg
cmV0dXJuICpwcm9wZXJ0eS5uYW1lOyB9CiAgICAgUHJvcGVydHlOb2RlOjpUeXBlIGdldFR5cGUo
Y29uc3QgUHJvcGVydHkmIHByb3BlcnR5KSBjb25zdCB7IHJldHVybiBwcm9wZXJ0eS50eXBlOyB9
CiAgICAgYm9vbCBpc1Jlc29sdmUoRXhwcmVzc2lvblR5cGUgZXhwcikgY29uc3QgeyByZXR1cm4g
ZXhwciA9PSBSZXNvbHZlRXhwciB8fCBleHByID09IFJlc29sdmVFdmFsRXhwcjsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCmluZGV4IDAw
YjY4YTU5NDJiMmQ0ZWIwZjlkN2JiZTU1YzI5NTM1NWRkOTg1NjEuLjlhY2U4MmQ5MzdhOTE3Mzk5
MzRiYTczYzM3ZWRjZDkwNGNiM2Y3ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5jcHAKQEAgLTc1LDI4ICs3NSwyMCBAQCBTdHJpbmcgU2Ny
aXB0RGVidWdTZXJ2ZXI6OnNldEJyZWFrcG9pbnQoY29uc3QgU3RyaW5nJiBzb3VyY2VJRCwgY29u
c3QgU2NyaXB0QnJlYQogICAgIFNvdXJjZUlkVG9CcmVha3BvaW50c01hcDo6aXRlcmF0b3IgaXQg
PSBtX3NvdXJjZUlkVG9CcmVha3BvaW50cy5maW5kKHNvdXJjZUlEVmFsdWUpOwogICAgIGlmIChp
dCA9PSBtX3NvdXJjZUlkVG9CcmVha3BvaW50cy5lbmQoKSkKICAgICAgICAgaXQgPSBtX3NvdXJj
ZUlkVG9CcmVha3BvaW50cy5zZXQoc291cmNlSURWYWx1ZSwgTGluZVRvQnJlYWtwb2ludE1hcCgp
KS5pdGVyYXRvcjsKLSAgICBMaW5lVG9CcmVha3BvaW50TWFwOjppdGVyYXRvciBicmVha3NJdCA9
IGl0LT5zZWNvbmQuZmluZChzY3JpcHRCcmVha3BvaW50LmxpbmVOdW1iZXIgKyAxKTsKLSAgICBp
ZiAoYnJlYWtzSXQgPT0gaXQtPnNlY29uZC5lbmQoKSkKLSAgICAgICAgYnJlYWtzSXQgPSBpdC0+
c2Vjb25kLnNldChzY3JpcHRCcmVha3BvaW50LmxpbmVOdW1iZXIgKyAxLCBCcmVha3BvaW50c0lu
TGluZSgpKS5pdGVyYXRvcjsKLQotICAgIEJyZWFrcG9pbnRzSW5MaW5lJiBicmVha3NWZWN0b3Ig
PSBicmVha3NJdC0+c2Vjb25kOwotICAgIHVuc2lnbmVkIGJyZWFrc0NvdW50ID0gYnJlYWtzVmVj
dG9yLnNpemUoKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYnJlYWtzQ291bnQ7IGkr
KykgewotICAgICAgICBpZiAoYnJlYWtzVmVjdG9yLmF0KGkpLmNvbHVtbk51bWJlciA9PSBzY3Jp
cHRCcmVha3BvaW50LmNvbHVtbk51bWJlcikKLSAgICAgICAgICAgIHJldHVybiAiIjsKLSAgICB9
Ci0gICAgYnJlYWtzVmVjdG9yLmFwcGVuZChzY3JpcHRCcmVha3BvaW50KTsKLQorICAgIGlmIChp
dC0+c2Vjb25kLmNvbnRhaW5zKHNjcmlwdEJyZWFrcG9pbnQubGluZU51bWJlciArIDEpKQorICAg
ICAgICByZXR1cm4gIiI7CisgICAgaXQtPnNlY29uZC5zZXQoc2NyaXB0QnJlYWtwb2ludC5saW5l
TnVtYmVyICsgMSwgc2NyaXB0QnJlYWtwb2ludCk7CiAgICAgKmFjdHVhbExpbmVOdW1iZXIgPSBz
Y3JpcHRCcmVha3BvaW50LmxpbmVOdW1iZXI7Ci0gICAgKmFjdHVhbENvbHVtbk51bWJlciA9IHNj
cmlwdEJyZWFrcG9pbnQuY29sdW1uTnVtYmVyOwotICAgIHJldHVybiBzb3VyY2VJRCArICI6IiAr
IFN0cmluZzo6bnVtYmVyKHNjcmlwdEJyZWFrcG9pbnQubGluZU51bWJlcikgKyAiOiIgKyBTdHJp
bmc6Om51bWJlcihzY3JpcHRCcmVha3BvaW50LmNvbHVtbk51bWJlcik7CisgICAgLy8gRklYTUUo
V0s1MzAwMyk6IGltcGxlbWVudCBzZXR0aW5nIGJyZWFrcG9pbnRzIGJ5IGxpbmU6Y29sdW1uLgor
ICAgICphY3R1YWxDb2x1bW5OdW1iZXIgPSAwOworICAgIHJldHVybiBzb3VyY2VJRCArICI6IiAr
IFN0cmluZzo6bnVtYmVyKHNjcmlwdEJyZWFrcG9pbnQubGluZU51bWJlcik7CiB9CiAKIHZvaWQg
U2NyaXB0RGVidWdTZXJ2ZXI6OnJlbW92ZUJyZWFrcG9pbnQoY29uc3QgU3RyaW5nJiBicmVha3Bv
aW50SWQpCiB7CiAgICAgVmVjdG9yPFN0cmluZz4gdG9rZW5zOwogICAgIGJyZWFrcG9pbnRJZC5z
cGxpdCgiOiIsIHRva2Vucyk7Ci0gICAgaWYgKHRva2Vucy5zaXplKCkgIT0gMykKKyAgICBpZiAo
dG9rZW5zLnNpemUoKSAhPSAyKQogICAgICAgICByZXR1cm47CiAgICAgYm9vbCBzdWNjZXNzOwog
ICAgIGludHB0cl90IHNvdXJjZUlEVmFsdWUgPSB0b2tlbnNbMF0udG9JbnRQdHIoJnN1Y2Nlc3Mp
OwpAQCAtMTA1LDYzICs5Nyw5IEBAIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OnJlbW92ZUJyZWFr
cG9pbnQoY29uc3QgU3RyaW5nJiBicmVha3BvaW50SWQpCiAgICAgdW5zaWduZWQgbGluZU51bWJl
ciA9IHRva2Vuc1sxXS50b1VJbnQoJnN1Y2Nlc3MpOwogICAgIGlmICghc3VjY2VzcykKICAgICAg
ICAgcmV0dXJuOwotICAgIHVuc2lnbmVkIGNvbHVtbk51bWJlciA9IHRva2Vuc1syXS50b1VJbnQo
JnN1Y2Nlc3MpOwotICAgIGlmICghc3VjY2VzcykKLSAgICAgICAgcmV0dXJuOwotCiAgICAgU291
cmNlSWRUb0JyZWFrcG9pbnRzTWFwOjppdGVyYXRvciBpdCA9IG1fc291cmNlSWRUb0JyZWFrcG9p
bnRzLmZpbmQoc291cmNlSURWYWx1ZSk7Ci0gICAgaWYgKGl0ID09IG1fc291cmNlSWRUb0JyZWFr
cG9pbnRzLmVuZCgpKQotICAgICAgICByZXR1cm47Ci0gICAgTGluZVRvQnJlYWtwb2ludE1hcDo6
aXRlcmF0b3IgYnJlYWtzSXQgPSBpdC0+c2Vjb25kLmZpbmQobGluZU51bWJlciArIDEpOwotICAg
IGlmIChicmVha3NJdCA9PSBpdC0+c2Vjb25kLmVuZCgpKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBCcmVha3BvaW50c0luTGluZSYgYnJlYWtzVmVjdG9yID0gYnJlYWtzSXQtPnNlY29uZDsKLSAg
ICB1bnNpZ25lZCBicmVha3NDb3VudCA9IGJyZWFrc1ZlY3Rvci5zaXplKCk7Ci0gICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IGJyZWFrc0NvdW50OyBpKyspIHsKLSAgICAgICAgaWYgKGJyZWFr
c1ZlY3Rvci5hdChpKS5jb2x1bW5OdW1iZXIgPT0gc3RhdGljX2Nhc3Q8aW50Pihjb2x1bW5OdW1i
ZXIpKSB7Ci0gICAgICAgICAgICBicmVha3NWZWN0b3IucmVtb3ZlKGkpOwotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLXZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OnVw
ZGF0ZUN1cnJlbnRTdGF0ZW1lbnRQb3NpdGlvbihpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmUp
Ci17Ci0gICAgaWYgKGxpbmUgPCAwKQotICAgICAgICByZXR1cm47Ci0KLSAgICBTb3VyY2VQcm92
aWRlciogc291cmNlID0gcmVpbnRlcnByZXRfY2FzdDxTb3VyY2VQcm92aWRlcio+KHNvdXJjZUlE
KTsKLQotICAgIGlmIChtX2N1cnJlbnRTb3VyY2VJRCAhPSBzb3VyY2VJRCkgewotICAgICAgICBT
dHJpbmcgc291cmNlQ29kZSA9IHVzdHJpbmdUb1N0cmluZyhKU0M6OlVTdHJpbmcoY29uc3RfY2Fz
dDxTdHJpbmdJbXBsKj4oc291cmNlLT5kYXRhKCkpKSk7Ci0gICAgICAgIG1fY3VycmVudFNvdXJj
ZUNvZGUuY2xlYXIoKTsKLSAgICAgICAgc291cmNlQ29kZS5zcGxpdCgiXG4iLCB0cnVlLCBtX2N1
cnJlbnRTb3VyY2VDb2RlKTsKLSAgICAgICAgbV9jdXJyZW50U291cmNlSUQgPSBzb3VyY2VJRDsK
LSAgICAgICAgbV9jdXJyZW50U3RhdGVtZW50UG9zaXRpb24ubGluZU51bWJlciA9IDA7Ci0gICAg
ICAgIG1fY3VycmVudFN0YXRlbWVudFBvc2l0aW9uLmNvbHVtbk51bWJlciA9IDA7Ci0gICAgfQot
Ci0gICAgaWYgKGxpbmUgIT0gbV9jdXJyZW50U3RhdGVtZW50UG9zaXRpb24ubGluZU51bWJlcikg
ewotICAgICAgICBtX2N1cnJlbnRTdGF0ZW1lbnRQb3NpdGlvbi5saW5lTnVtYmVyID0gbGluZTsK
LSAgICAgICAgbV9jdXJyZW50U3RhdGVtZW50UG9zaXRpb24uY29sdW1uTnVtYmVyID0gMDsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGludCBzdGFydExpbmUgPSBzb3VyY2UtPnN0YXJ0
UG9zaXRpb24oKS5tX2xpbmUuemVyb0Jhc2VkSW50KCk7Ci0gICAgaWYgKChtX2N1cnJlbnRTdGF0
ZW1lbnRQb3NpdGlvbi5saW5lTnVtYmVyIC0gc3RhcnRMaW5lIC0gMSkgPj0gc3RhdGljX2Nhc3Q8
aW50PihtX2N1cnJlbnRTb3VyY2VDb2RlLnNpemUoKSkpCi0gICAgICAgIHJldHVybjsKLSAgICBj
b25zdCBTdHJpbmcmIGNvZGVJbkxpbmUgPSBtX2N1cnJlbnRTb3VyY2VDb2RlW21fY3VycmVudFN0
YXRlbWVudFBvc2l0aW9uLmxpbmVOdW1iZXIgLSBzdGFydExpbmUgLSAxXTsKLSAgICBpZiAoY29k
ZUluTGluZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLSAgICBpbnQgbmV4dENvbHVtbiA9
IGNvZGVJbkxpbmUuZmluZCgiOyIsIG1fY3VycmVudFN0YXRlbWVudFBvc2l0aW9uLmNvbHVtbk51
bWJlcik7Ci0gICAgaWYgKG5leHRDb2x1bW4gIT0gLTEpIHsKLSAgICAgICAgVUNoYXIgYyA9IGNv
ZGVJbkxpbmVbbmV4dENvbHVtbiArIDFdOwotICAgICAgICBpZiAoYyA9PSAnICcgfHwgYyA9PSAn
XHQnKQotICAgICAgICAgICAgbmV4dENvbHVtbiArPSAxOwotICAgICAgICBtX2N1cnJlbnRTdGF0
ZW1lbnRQb3NpdGlvbi5jb2x1bW5OdW1iZXIgPSBuZXh0Q29sdW1uICsgMTsKLSAgICB9IGVsc2UK
LSAgICAgICAgbV9jdXJyZW50U3RhdGVtZW50UG9zaXRpb24uY29sdW1uTnVtYmVyID0gMDsKKyAg
ICBpZiAoaXQgIT0gbV9zb3VyY2VJZFRvQnJlYWtwb2ludHMuZW5kKCkpCisgICAgICAgIGl0LT5z
ZWNvbmQucmVtb3ZlKGxpbmVOdW1iZXIgKyAxKTsKIH0KIAogYm9vbCBTY3JpcHREZWJ1Z1NlcnZl
cjo6aGFzQnJlYWtwb2ludChpbnRwdHJfdCBzb3VyY2VJRCwgY29uc3QgVGV4dFBvc2l0aW9uJiBw
b3NpdGlvbikgY29uc3QKQEAgLTE3MiwzNyArMTEwLDE5IEBAIGJvb2wgU2NyaXB0RGVidWdTZXJ2
ZXI6Omhhc0JyZWFrcG9pbnQoaW50cHRyX3Qgc291cmNlSUQsIGNvbnN0IFRleHRQb3NpdGlvbiYg
cG9zCiAgICAgU291cmNlSWRUb0JyZWFrcG9pbnRzTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1f
c291cmNlSWRUb0JyZWFrcG9pbnRzLmZpbmQoc291cmNlSUQpOwogICAgIGlmIChpdCA9PSBtX3Nv
dXJjZUlkVG9CcmVha3BvaW50cy5lbmQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAg
aW50IGxpbmVOdW1iZXIgPSBwb3NpdGlvbi5tX2xpbmUuemVyb0Jhc2VkSW50KCk7Ci0gICAgaW50
IGNvbHVtbk51bWJlciA9IHBvc2l0aW9uLm1fY29sdW1uLnplcm9CYXNlZEludCgpOwotICAgIGlm
IChsaW5lTnVtYmVyIDwgMCB8fCBjb2x1bW5OdW1iZXIgPCAwKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0KLSAgICBMaW5lVG9CcmVha3BvaW50TWFwOjpjb25zdF9pdGVyYXRvciBicmVha3NJdCA9
IGl0LT5zZWNvbmQuZmluZChsaW5lTnVtYmVyICsgMSk7Ci0gICAgaWYgKGJyZWFrc0l0ID09IGl0
LT5zZWNvbmQuZW5kKCkpCisgICAgaW50IGxpbmVOdW1iZXIgPSBwb3NpdGlvbi5tX2xpbmUub25l
QmFzZWRJbnQoKTsKKyAgICBpZiAobGluZU51bWJlciA8PSAwKQogICAgICAgICByZXR1cm4gZmFs
c2U7Ci0KLSAgICBib29sIGhpdCA9IGZhbHNlOwotICAgIGNvbnN0IEJyZWFrcG9pbnRzSW5MaW5l
JiBicmVha3NWZWN0b3IgPSBicmVha3NJdC0+c2Vjb25kOwotICAgIHVuc2lnbmVkIGJyZWFrc0Nv
dW50ID0gYnJlYWtzVmVjdG9yLnNpemUoKTsKLSAgICB1bnNpZ25lZCBpOwotICAgIGZvciAoaSA9
IDA7IGkgPCBicmVha3NDb3VudDsgaSsrKSB7Ci0gICAgICAgIGludCBicmVha0NvbHVtbiA9IGJy
ZWFrc1ZlY3Rvci5hdChpKS5jb2x1bW5OdW1iZXI7Ci0gICAgICAgIGludCBicmVha0xpbmUgPSBi
cmVha3NWZWN0b3IuYXQoaSkubGluZU51bWJlcjsKLSAgICAgICAgaWYgKGxpbmVOdW1iZXIgPT0g
YnJlYWtMaW5lICYmIGNvbHVtbk51bWJlciA9PSBicmVha0NvbHVtbikgewotICAgICAgICAgICAg
aGl0ID0gdHJ1ZTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotICAgIGlm
ICghaGl0KQorICAgIExpbmVUb0JyZWFrcG9pbnRNYXA6OmNvbnN0X2l0ZXJhdG9yIGJyZWFrSXQg
PSBpdC0+c2Vjb25kLmZpbmQobGluZU51bWJlcik7CisgICAgaWYgKGJyZWFrSXQgPT0gaXQtPnNl
Y29uZC5lbmQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8gQW4gZW1wdHkgY29u
ZGl0aW9uIGNvdW50cyBhcyBubyBjb25kaXRpb24gd2hpY2ggaXMgZXF1aXZhbGVudCB0byAidHJ1
ZSIuCi0gICAgaWYgKGJyZWFrc1ZlY3Rvci5hdChpKS5jb25kaXRpb24uaXNFbXB0eSgpKQorICAg
IGlmIChicmVha0l0LT5zZWNvbmQuY29uZGl0aW9uLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJu
IHRydWU7CiAKICAgICBKU1ZhbHVlIGV4Y2VwdGlvbjsKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IG1f
Y3VycmVudENhbGxGcmFtZS0+ZXZhbHVhdGUoc3RyaW5nVG9VU3RyaW5nKGJyZWFrc1ZlY3Rvci5h
dChpKS5jb25kaXRpb24pLCBleGNlcHRpb24pOworICAgIEpTVmFsdWUgcmVzdWx0ID0gbV9jdXJy
ZW50Q2FsbEZyYW1lLT5ldmFsdWF0ZShzdHJpbmdUb1VTdHJpbmcoYnJlYWtJdC0+c2Vjb25kLmNv
bmRpdGlvbiksIGV4Y2VwdGlvbik7CiAgICAgaWYgKGV4Y2VwdGlvbikgewogICAgICAgICAvLyBB
biBlcnJvbmVvdXMgY29uZGl0aW9uIGNvdW50cyBhcyAiZmFsc2UiLgogICAgICAgICByZXR1cm4g
ZmFsc2U7CkBAIC00MjcsMjAgKzM0NywyMCBAQCB2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpkaXNw
YXRjaEZ1bmN0aW9uVG9MaXN0ZW5lcnMoSmF2YVNjcmlwdEV4ZWN1dGlvbkNhbGxiYWNrCiAgICAg
bV9jYWxsaW5nTGlzdGVuZXJzID0gZmFsc2U7CiB9CiAKLXZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6
OmNyZWF0ZUNhbGxGcmFtZUFuZFBhdXNlSWZOZWVkZWQoY29uc3QgRGVidWdnZXJDYWxsRnJhbWUm
IGRlYnVnZ2VyQ2FsbEZyYW1lLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIsIGlu
dCBjb2x1bW5OdW1iZXIpCit2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpjcmVhdGVDYWxsRnJhbWVB
bmRQYXVzZUlmTmVlZGVkKGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiBkZWJ1Z2dlckNhbGxGcmFt
ZSwgaW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5lTnVtYmVyKQogewotICAgIFRleHRQb3NpdGlv
biB0ZXh0UG9zaXRpb24oT3JkaW5hbE51bWJlcjo6ZnJvbU9uZUJhc2VkSW50KGxpbmVOdW1iZXIp
LCBPcmRpbmFsTnVtYmVyOjpmcm9tWmVyb0Jhc2VkSW50KGNvbHVtbk51bWJlcikpOworICAgIFRl
eHRQb3NpdGlvbiB0ZXh0UG9zaXRpb24oT3JkaW5hbE51bWJlcjo6ZnJvbU9uZUJhc2VkSW50KGxp
bmVOdW1iZXIpLCBPcmRpbmFsTnVtYmVyOjpmaXJzdCgpKTsKICAgICBtX2N1cnJlbnRDYWxsRnJh
bWUgPSBKYXZhU2NyaXB0Q2FsbEZyYW1lOjpjcmVhdGUoZGVidWdnZXJDYWxsRnJhbWUsIG1fY3Vy
cmVudENhbGxGcmFtZSwgc291cmNlSUQsIHRleHRQb3NpdGlvbik7CiAgICAgcGF1c2VJZk5lZWRl
ZChkZWJ1Z2dlckNhbGxGcmFtZS5keW5hbWljR2xvYmFsT2JqZWN0KCkpOwogfQogCi12b2lkIFNj
cmlwdERlYnVnU2VydmVyOjp1cGRhdGVDYWxsRnJhbWVBbmRQYXVzZUlmTmVlZGVkKGNvbnN0IERl
YnVnZ2VyQ2FsbEZyYW1lJiBkZWJ1Z2dlckNhbGxGcmFtZSwgaW50cHRyX3Qgc291cmNlSUQsIGlu
dCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyKQordm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6
dXBkYXRlQ2FsbEZyYW1lQW5kUGF1c2VJZk5lZWRlZChjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYg
ZGVidWdnZXJDYWxsRnJhbWUsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZU51bWJlcikKIHsK
ICAgICBBU1NFUlQobV9jdXJyZW50Q2FsbEZyYW1lKTsKICAgICBpZiAoIW1fY3VycmVudENhbGxG
cmFtZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgVGV4dFBvc2l0aW9uIHRleHRQb3NpdGlvbihP
cmRpbmFsTnVtYmVyOjpmcm9tT25lQmFzZWRJbnQobGluZU51bWJlciksIE9yZGluYWxOdW1iZXI6
OmZyb21aZXJvQmFzZWRJbnQoY29sdW1uTnVtYmVyKSk7CisgICAgVGV4dFBvc2l0aW9uIHRleHRQ
b3NpdGlvbihPcmRpbmFsTnVtYmVyOjpmcm9tT25lQmFzZWRJbnQobGluZU51bWJlciksIE9yZGlu
YWxOdW1iZXI6OmZpcnN0KCkpOwogICAgIG1fY3VycmVudENhbGxGcmFtZS0+dXBkYXRlKGRlYnVn
Z2VyQ2FsbEZyYW1lLCBzb3VyY2VJRCwgdGV4dFBvc2l0aW9uKTsKICAgICBwYXVzZUlmTmVlZGVk
KGRlYnVnZ2VyQ2FsbEZyYW1lLmR5bmFtaWNHbG9iYWxPYmplY3QoKSk7CiB9CkBAIC00ODEsMzcg
KzQwMSwyMiBAQCB2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpwYXVzZUlmTmVlZGVkKEpTR2xvYmFs
T2JqZWN0KiBkeW5hbWljR2xvYmFsT2JqZWN0KQogCiB2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpj
YWxsRXZlbnQoY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmIGRlYnVnZ2VyQ2FsbEZyYW1lLCBpbnRw
dHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIpCiB7Ci0gICAgY2FsbEV2ZW50KGRlYnVnZ2Vy
Q2FsbEZyYW1lLCBzb3VyY2VJRCwgbGluZU51bWJlciwgMCk7Ci19Ci0KLXZvaWQgU2NyaXB0RGVi
dWdTZXJ2ZXI6OmNhbGxFdmVudChjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYgZGVidWdnZXJDYWxs
RnJhbWUsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJl
cikKLXsKICAgICBpZiAoIW1fcGF1c2VkKQotICAgICAgICBjcmVhdGVDYWxsRnJhbWVBbmRQYXVz
ZUlmTmVlZGVkKGRlYnVnZ2VyQ2FsbEZyYW1lLCBzb3VyY2VJRCwgbGluZU51bWJlciwgY29sdW1u
TnVtYmVyKTsKKyAgICAgICAgY3JlYXRlQ2FsbEZyYW1lQW5kUGF1c2VJZk5lZWRlZChkZWJ1Z2dl
ckNhbGxGcmFtZSwgc291cmNlSUQsIGxpbmVOdW1iZXIpOwogfQogCiB2b2lkIFNjcmlwdERlYnVn
U2VydmVyOjphdFN0YXRlbWVudChjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYgZGVidWdnZXJDYWxs
RnJhbWUsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZU51bWJlcikKIHsKLSAgICBhdFN0YXRl
bWVudChkZWJ1Z2dlckNhbGxGcmFtZSwgc291cmNlSUQsIGxpbmVOdW1iZXIsIDApOwotfQotCi12
b2lkIFNjcmlwdERlYnVnU2VydmVyOjphdFN0YXRlbWVudChjb25zdCBEZWJ1Z2dlckNhbGxGcmFt
ZSYgZGVidWdnZXJDYWxsRnJhbWUsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZU51bWJlciwg
aW50IGNvbHVtbk51bWJlcikKLXsKICAgICBpZiAoIW1fcGF1c2VkKQotICAgICAgICB1cGRhdGVD
YWxsRnJhbWVBbmRQYXVzZUlmTmVlZGVkKGRlYnVnZ2VyQ2FsbEZyYW1lLCBzb3VyY2VJRCwgbGlu
ZU51bWJlciwgY29sdW1uTnVtYmVyKTsKKyAgICAgICAgdXBkYXRlQ2FsbEZyYW1lQW5kUGF1c2VJ
Zk5lZWRlZChkZWJ1Z2dlckNhbGxGcmFtZSwgc291cmNlSUQsIGxpbmVOdW1iZXIpOwogfQogCiB2
b2lkIFNjcmlwdERlYnVnU2VydmVyOjpyZXR1cm5FdmVudChjb25zdCBEZWJ1Z2dlckNhbGxGcmFt
ZSYgZGVidWdnZXJDYWxsRnJhbWUsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZU51bWJlcikK
IHsKLSAgICByZXR1cm5FdmVudChkZWJ1Z2dlckNhbGxGcmFtZSwgc291cmNlSUQsIGxpbmVOdW1i
ZXIsIDApOwotfQotCi12b2lkIFNjcmlwdERlYnVnU2VydmVyOjpyZXR1cm5FdmVudChjb25zdCBE
ZWJ1Z2dlckNhbGxGcmFtZSYgZGVidWdnZXJDYWxsRnJhbWUsIGludHB0cl90IHNvdXJjZUlELCBp
bnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlcikKLXsKICAgICBpZiAobV9wYXVzZWQpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIHVwZGF0ZUNhbGxGcmFtZUFuZFBhdXNlSWZOZWVkZWQoZGVi
dWdnZXJDYWxsRnJhbWUsIHNvdXJjZUlELCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpOworICAg
IHVwZGF0ZUNhbGxGcmFtZUFuZFBhdXNlSWZOZWVkZWQoZGVidWdnZXJDYWxsRnJhbWUsIHNvdXJj
ZUlELCBsaW5lTnVtYmVyKTsKIAogICAgIC8vIGRldGFjaCBtYXkgaGF2ZSBiZWVuIGNhbGxlZCBk
dXJpbmcgcGF1c2VJZk5lZWRlZAogICAgIGlmICghbV9jdXJyZW50Q2FsbEZyYW1lKQpAQCAtNTI1
LDQyICs0MzAsMjcgQEAgdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6cmV0dXJuRXZlbnQoY29uc3Qg
RGVidWdnZXJDYWxsRnJhbWUmIGRlYnVnZ2VyQ2FsbEZyYW1lLAogCiB2b2lkIFNjcmlwdERlYnVn
U2VydmVyOjpleGNlcHRpb24oY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmIGRlYnVnZ2VyQ2FsbEZy
YW1lLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIsIGJvb2wgaGFzSGFuZGxlcikK
IHsKLSAgICBleGNlcHRpb24oZGVidWdnZXJDYWxsRnJhbWUsIHNvdXJjZUlELCBsaW5lTnVtYmVy
LCAwLCBoYXNIYW5kbGVyKTsKLX0KLQotdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6ZXhjZXB0aW9u
KGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiBkZWJ1Z2dlckNhbGxGcmFtZSwgaW50cHRyX3Qgc291
cmNlSUQsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBib29sIGhhc0hhbmRsZXIp
Ci17CiAgICAgaWYgKG1fcGF1c2VkKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV9wYXVz
ZU9uRXhjZXB0aW9uc1N0YXRlID09IFBhdXNlT25BbGxFeGNlcHRpb25zIHx8IChtX3BhdXNlT25F
eGNlcHRpb25zU3RhdGUgPT0gUGF1c2VPblVuY2F1Z2h0RXhjZXB0aW9ucyAmJiAhaGFzSGFuZGxl
cikpCiAgICAgICAgIG1fcGF1c2VPbk5leHRTdGF0ZW1lbnQgPSB0cnVlOwogCi0gICAgdXBkYXRl
Q2FsbEZyYW1lQW5kUGF1c2VJZk5lZWRlZChkZWJ1Z2dlckNhbGxGcmFtZSwgc291cmNlSUQsIGxp
bmVOdW1iZXIsIGNvbHVtbk51bWJlcik7CisgICAgdXBkYXRlQ2FsbEZyYW1lQW5kUGF1c2VJZk5l
ZWRlZChkZWJ1Z2dlckNhbGxGcmFtZSwgc291cmNlSUQsIGxpbmVOdW1iZXIpOwogfQogCiB2b2lk
IFNjcmlwdERlYnVnU2VydmVyOjp3aWxsRXhlY3V0ZVByb2dyYW0oY29uc3QgRGVidWdnZXJDYWxs
RnJhbWUmIGRlYnVnZ2VyQ2FsbEZyYW1lLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1i
ZXIpCiB7Ci0gICAgd2lsbEV4ZWN1dGVQcm9ncmFtKGRlYnVnZ2VyQ2FsbEZyYW1lLCBzb3VyY2VJ
RCwgbGluZU51bWJlciwgMCk7Ci19Ci0KLXZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OndpbGxFeGVj
dXRlUHJvZ3JhbShjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYgZGVidWdnZXJDYWxsRnJhbWUsIGlu
dHB0cl90IHNvdXJjZUlELCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlcikKLXsKICAg
ICBpZiAoIW1fcGF1c2VkKQotICAgICAgICBjcmVhdGVDYWxsRnJhbWVBbmRQYXVzZUlmTmVlZGVk
KGRlYnVnZ2VyQ2FsbEZyYW1lLCBzb3VyY2VJRCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyKTsK
KyAgICAgICAgY3JlYXRlQ2FsbEZyYW1lQW5kUGF1c2VJZk5lZWRlZChkZWJ1Z2dlckNhbGxGcmFt
ZSwgc291cmNlSUQsIGxpbmVOdW1iZXIpOwogfQogCiB2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpk
aWRFeGVjdXRlUHJvZ3JhbShjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYgZGVidWdnZXJDYWxsRnJh
bWUsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZU51bWJlcikKIHsKLSAgICBkaWRFeGVjdXRl
UHJvZ3JhbShkZWJ1Z2dlckNhbGxGcmFtZSwgc291cmNlSUQsIGxpbmVOdW1iZXIsIDApOwotfQot
Ci12b2lkIFNjcmlwdERlYnVnU2VydmVyOjpkaWRFeGVjdXRlUHJvZ3JhbShjb25zdCBEZWJ1Z2dl
ckNhbGxGcmFtZSYgZGVidWdnZXJDYWxsRnJhbWUsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGlu
ZU51bWJlciwgaW50IGNvbHVtbk51bWJlcikKLXsKICAgICBpZiAobV9wYXVzZWQpCiAgICAgICAg
IHJldHVybjsKIAotICAgIHVwZGF0ZUNhbGxGcmFtZUFuZFBhdXNlSWZOZWVkZWQoZGVidWdnZXJD
YWxsRnJhbWUsIHNvdXJjZUlELCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpOworICAgIHVwZGF0
ZUNhbGxGcmFtZUFuZFBhdXNlSWZOZWVkZWQoZGVidWdnZXJDYWxsRnJhbWUsIHNvdXJjZUlELCBs
aW5lTnVtYmVyKTsKIAogICAgIC8vIFRyZWF0IHN0ZXBwaW5nIG92ZXIgdGhlIGVuZCBvZiBhIHBy
b2dyYW0gbGlrZSBzdGVwcGluZyBvdXQuCiAgICAgaWYgKG1fY3VycmVudENhbGxGcmFtZSA9PSBt
X3BhdXNlT25DYWxsRnJhbWUpCkBAIC01NzAsMTYgKzQ2MCwxMSBAQCB2b2lkIFNjcmlwdERlYnVn
U2VydmVyOjpkaWRFeGVjdXRlUHJvZ3JhbShjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYgZGVidWdn
ZXJDYWxsRgogCiB2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpkaWRSZWFjaEJyZWFrcG9pbnQoY29u
c3QgRGVidWdnZXJDYWxsRnJhbWUmIGRlYnVnZ2VyQ2FsbEZyYW1lLCBpbnRwdHJfdCBzb3VyY2VJ
RCwgaW50IGxpbmVOdW1iZXIpCiB7Ci0gICAgZGlkUmVhY2hCcmVha3BvaW50KGRlYnVnZ2VyQ2Fs
bEZyYW1lLCBzb3VyY2VJRCwgbGluZU51bWJlciwgMCk7Ci19Ci0KLXZvaWQgU2NyaXB0RGVidWdT
ZXJ2ZXI6OmRpZFJlYWNoQnJlYWtwb2ludChjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYgZGVidWdn
ZXJDYWxsRnJhbWUsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVt
bk51bWJlcikKLXsKICAgICBpZiAobV9wYXVzZWQpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1f
cGF1c2VPbk5leHRTdGF0ZW1lbnQgPSB0cnVlOwotICAgIHVwZGF0ZUNhbGxGcmFtZUFuZFBhdXNl
SWZOZWVkZWQoZGVidWdnZXJDYWxsRnJhbWUsIHNvdXJjZUlELCBsaW5lTnVtYmVyLCBjb2x1bW5O
dW1iZXIpOworICAgIHVwZGF0ZUNhbGxGcmFtZUFuZFBhdXNlSWZOZWVkZWQoZGVidWdnZXJDYWxs
RnJhbWUsIHNvdXJjZUlELCBsaW5lTnVtYmVyKTsKIH0KIAogdm9pZCBTY3JpcHREZWJ1Z1NlcnZl
cjo6cmVjb21waWxlQWxsSlNGdW5jdGlvbnNTb29uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5oCmluZGV4IDlkOTdjMTY3ZTVjN2Q0OWJkNmU0ZWRh
MWQ2YmFiNDEzZjNjOGZmMzcuLjg0ZmJhNWM2NzhmYzcyNWRmMjg2MmVlOWZmM2JlNjUxODQxMjFh
YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2Vy
dmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIu
aApAQCAtMTIzLDggKzEyMyw4IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGRpc3BhdGNoRGlkUGFy
c2VTb3VyY2UoY29uc3QgTGlzdGVuZXJTZXQmIGxpc3RlbmVycywgSlNDOjpTb3VyY2VQcm92aWRl
ciosIGJvb2wgaXNDb250ZW50U2NyaXB0KTsKICAgICB2b2lkIGRpc3BhdGNoRmFpbGVkVG9QYXJz
ZVNvdXJjZShjb25zdCBMaXN0ZW5lclNldCYgbGlzdGVuZXJzLCBKU0M6OlNvdXJjZVByb3ZpZGVy
KiwgaW50IGVycm9yTGluZSwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpOwogCi0gICAgdm9p
ZCBjcmVhdGVDYWxsRnJhbWVBbmRQYXVzZUlmTmVlZGVkKGNvbnN0IEpTQzo6RGVidWdnZXJDYWxs
RnJhbWUmLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1i
ZXIpOwotICAgIHZvaWQgdXBkYXRlQ2FsbEZyYW1lQW5kUGF1c2VJZk5lZWRlZChjb25zdCBKU0M6
OkRlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5lTnVtYmVyLCBp
bnQgY29sdW1uTnVtYmVyKTsKKyAgICB2b2lkIGNyZWF0ZUNhbGxGcmFtZUFuZFBhdXNlSWZOZWVk
ZWQoY29uc3QgSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90IHNvdXJjZUlELCBpbnQg
bGluZU51bWJlcik7CisgICAgdm9pZCB1cGRhdGVDYWxsRnJhbWVBbmRQYXVzZUlmTmVlZGVkKGNv
bnN0IEpTQzo6RGVidWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVO
dW1iZXIpOwogICAgIHZvaWQgcGF1c2VJZk5lZWRlZChKU0M6OkpTR2xvYmFsT2JqZWN0KiBkeW5h
bWljR2xvYmFsT2JqZWN0KTsKIAogICAgIHZpcnR1YWwgdm9pZCBkZXRhY2goSlNDOjpKU0dsb2Jh
bE9iamVjdCopOwpAQCAtMTM4LDE5ICsxMzgsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2
b2lkIGRpZEV4ZWN1dGVQcm9ncmFtKGNvbnN0IEpTQzo6RGVidWdnZXJDYWxsRnJhbWUmLCBpbnRw
dHJfdCBzb3VyY2VJRCwgaW50IGxpbmVubyk7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlYWNoQnJl
YWtwb2ludChjb25zdCBKU0M6OkRlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRyX3Qgc291cmNlSUQs
IGludCBsaW5lbm8pOwogCi0gICAgdmlydHVhbCB2b2lkIGNhbGxFdmVudChjb25zdCBKU0M6OkRl
YnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5lTnVtYmVyLCBpbnQg
Y29sdW1uTnVtYmVyKTsKLSAgICB2aXJ0dWFsIHZvaWQgYXRTdGF0ZW1lbnQoY29uc3QgSlNDOjpE
ZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90IHNvdXJjZUlELCBpbnQgZmlyc3RMaW5lLCBpbnQg
Y29sdW1uTnVtYmVyKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmV0dXJuRXZlbnQoY29uc3QgSlNDOjpE
ZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZU51bWJlciwgaW50
IGNvbHVtbk51bWJlcik7Ci0gICAgdmlydHVhbCB2b2lkIGV4Y2VwdGlvbihjb25zdCBKU0M6OkRl
YnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5lTnVtYmVyLCBpbnQg
Y29sdW1uTnVtYmVyLCBib29sIGhhc0hhbmRsZXIpOwotICAgIHZpcnR1YWwgdm9pZCB3aWxsRXhl
Y3V0ZVByb2dyYW0oY29uc3QgSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90IHNvdXJj
ZUlELCBpbnQgbGluZW5vLCBpbnQgY29sdW1uTnVtYmVyKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlk
RXhlY3V0ZVByb2dyYW0oY29uc3QgSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90IHNv
dXJjZUlELCBpbnQgbGluZW5vLCBpbnQgY29sdW1uTnVtYmVyKTsKLSAgICB2aXJ0dWFsIHZvaWQg
ZGlkUmVhY2hCcmVha3BvaW50KGNvbnN0IEpTQzo6RGVidWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJf
dCBzb3VyY2VJRCwgaW50IGxpbmVubywgaW50IGNvbHVtbk51bWJlcik7Ci0KLQotICAgIHZvaWQg
dXBkYXRlQ3VycmVudFN0YXRlbWVudFBvc2l0aW9uKGludHB0cl90LCBpbnQpOwotCi0gICAgdHlw
ZWRlZiBWZWN0b3I8U2NyaXB0QnJlYWtwb2ludD4gQnJlYWtwb2ludHNJbkxpbmU7Ci0gICAgdHlw
ZWRlZiBIYXNoTWFwPGxvbmcsIEJyZWFrcG9pbnRzSW5MaW5lPiBMaW5lVG9CcmVha3BvaW50TWFw
OworICAgIHR5cGVkZWYgSGFzaE1hcDxsb25nLCBTY3JpcHRCcmVha3BvaW50PiBMaW5lVG9CcmVh
a3BvaW50TWFwOwogICAgIHR5cGVkZWYgSGFzaE1hcDxpbnRwdHJfdCwgTGluZVRvQnJlYWtwb2lu
dE1hcD4gU291cmNlSWRUb0JyZWFrcG9pbnRzTWFwOwogCiAgICAgYm9vbCBtX2NhbGxpbmdMaXN0
ZW5lcnM7CkBAIC0xNjMsMTAgKzE1MSw2IEBAIHByb3RlY3RlZDoKICAgICBSZWZQdHI8SmF2YVNj
cmlwdENhbGxGcmFtZT4gbV9jdXJyZW50Q2FsbEZyYW1lOwogICAgIFNvdXJjZUlkVG9CcmVha3Bv
aW50c01hcCBtX3NvdXJjZUlkVG9CcmVha3BvaW50czsKICAgICBUaW1lcjxTY3JpcHREZWJ1Z1Nl
cnZlcj4gbV9yZWNvbXBpbGVUaW1lcjsKLQotICAgIFZlY3RvcjxTdHJpbmc+IG1fY3VycmVudFNv
dXJjZUNvZGU7Ci0gICAgaW50cHRyX3QgbV9jdXJyZW50U291cmNlSUQ7Ci0gICAgU2NyaXB0QnJl
YWtwb2ludCBtX2N1cnJlbnRTdGF0ZW1lbnRQb3NpdGlvbjsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUK
</data>

          </attachment>
      

    </bug>

</bugzilla>