<?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>79598</bug_id>
          
          <creation_ts>2012-02-25 22:49:41 -0800</creation_ts>
          <short_desc>Move websockets to Modules/websockets</short_desc>
          <delta_ts>2012-02-25 23:28:45 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>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>79327</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Barth">abarth</reporter>
          <assigned_to name="Adam Barth">abarth</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>haraken</cc>
    
    <cc>ojan</cc>
    
    <cc>rakuco</cc>
    
    <cc>vestbo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>565112</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-02-25 22:49:41 -0800</bug_when>
    <thetext>Move websockets to Modules/websockets</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565113</commentid>
    <comment_count>1</comment_count>
      <attachid>128905</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-02-25 22:51:15 -0800</bug_when>
    <thetext>Created attachment 128905
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565117</commentid>
    <comment_count>2</comment_count>
      <attachid>128905</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-02-25 23:08:27 -0800</bug_when>
    <thetext>Comment on attachment 128905
Patch

Attachment 128905 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/11629603</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565119</commentid>
    <comment_count>3</comment_count>
      <attachid>128905</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-02-25 23:10:09 -0800</bug_when>
    <thetext>Comment on attachment 128905
Patch

Attachment 128905 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/11631534</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565120</commentid>
    <comment_count>4</comment_count>
      <attachid>128905</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-25 23:11:58 -0800</bug_when>
    <thetext>Comment on attachment 128905
Patch

Attachment 128905 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11630598</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565121</commentid>
    <comment_count>5</comment_count>
      <attachid>128905</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-02-25 23:14:26 -0800</bug_when>
    <thetext>Comment on attachment 128905
Patch

Fantastic.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565122</commentid>
    <comment_count>6</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-02-25 23:28:45 -0800</bug_when>
    <thetext>Committed r108930: &lt;http://trac.webkit.org/changeset/108930&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128905</attachid>
            <date>2012-02-25 22:51:15 -0800</date>
            <delta_ts>2012-02-25 23:14:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79598-20120225225113.patch</filename>
            <type>text/plain</type>
            <size>309420</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwODkyNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU3IEBACisyMDEyLTAyLTI1ICBBZGFtIEJh
cnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTW92ZSB3ZWJzb2NrZXRzIHRvIE1v
ZHVsZXMvd2Vic29ja2V0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9Nzk1OTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBOb3dhZGF5cywgdGhlIG9ubHkgRU5BQkxFKFdFQl9TT0NLRVRTKSBpZmRlZiBpbiBX
ZWJDb3JlIHByb3BlciBpcyBpbgorICAgICAgICBXZWJDb3JlOjpTZXR0aW5ncywgYW5kIHRoYXQg
d2lsbCBiZSByZW1vdmVkIChzb29uPykgb25jZSBBcHBsZSBkcm9wcworICAgICAgICBzdXBwb3J0
IGZvciB0aGUgb2xkIFdlYlNvY2tldHMgcHJvdG9jb2wuCisKKyAgICAgICAgKiBDTWFrZUxpc3Rz
LnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIERlcml2ZWRT
b3VyY2VzLnByaToKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBHTlVtYWtl
ZmlsZS5saXN0LmFtOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0czogQ29waWVkIGZyb20g
U291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy4KKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAg
ICAqIFdlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAg
ICAgICAgKiBXZWJDb3JlLnByaToKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZj
cHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlQ29tbW9uLnZzcHJvcHM6Cisg
ICAgICAgICogV2ViQ29yZS52Y3Byb2ovY29weUZvcndhcmRpbmdIZWFkZXJzLmNtZDoKKyAgICAg
ICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogd2Vic29j
a2V0czogUmVtb3ZlZC4KKyAgICAgICAgKiB3ZWJzb2NrZXRzL0Nsb3NlRXZlbnQuaDogUmVtb3Zl
ZC4KKyAgICAgICAgKiB3ZWJzb2NrZXRzL0Nsb3NlRXZlbnQuaWRsOiBSZW1vdmVkLgorICAgICAg
ICAqIHdlYnNvY2tldHMvRE9NV2luZG93V2ViU29ja2V0LmlkbDogUmVtb3ZlZC4KKyAgICAgICAg
KiB3ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcDogUmVtb3ZlZC4KKyAg
ICAgICAgKiB3ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmg6IFJlbW92ZWQu
CisgICAgICAgICogd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdy
YXBwZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHdlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWxDbGllbnRXcmFwcGVyLmg6IFJlbW92ZWQuCisgICAgICAgICogd2Vic29ja2V0
cy9XZWJTb2NrZXQuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0
Lmg6IFJlbW92ZWQuCisgICAgICAgICogd2Vic29ja2V0cy9XZWJTb2NrZXQuaWRsOiBSZW1vdmVk
LgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHA6IFJlbW92ZWQuCisg
ICAgICAgICogd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmg6IFJlbW92ZWQuCisgICAgICAg
ICogd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsQ2xpZW50Lmg6IFJlbW92ZWQuCisgICAgICAg
ICogd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlci5jcHA6IFJlbW92ZWQuCisgICAgICAgICog
d2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlci5oOiBSZW1vdmVkLgorICAgICAgICAqIHdlYnNv
Y2tldHMvV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlci5jcHA6IFJlbW92ZWQuCisgICAgICAg
ICogd2Vic29ja2V0cy9XZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyLmg6IFJlbW92ZWQuCisg
ICAgICAgICogd2Vic29ja2V0cy9XZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3IuaDogUmVtb3Zl
ZC4KKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldEZyYW1lLmg6IFJlbW92ZWQuCisgICAg
ICAgICogd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwOiBSZW1vdmVkLgorICAgICAg
ICAqIHdlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmg6IFJlbW92ZWQuCisgICAgICAgICog
d2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0LmNwcDogUmVtb3ZlZC4KKyAgICAg
ICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QuaDogUmVtb3ZlZC4KKyAg
ICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlLmNwcDogUmVtb3Zl
ZC4KKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlLmg6IFJl
bW92ZWQuCisgICAgICAgICogd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxl
V2ViU29ja2V0Q2hhbm5lbC5oOiBSZW1vdmVkLgorCiAyMDEyLTAyLTI1ICBTaGVyaWZmIEJvdCAg
PHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xs
aW5nIG91dCByMTA4OTI0LgpJbmRleDogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDEwODky
NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0x
LDYgKzEsNyBAQAogU0VUKFdlYkNvcmVfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dFQkNP
UkVfRElSfSIKICAgICAiJHtXRUJDT1JFX0RJUn0vTW9kdWxlcy9nZW9sb2NhdGlvbiIKKyAgICAi
JHtXRUJDT1JFX0RJUn0vTW9kdWxlcy93ZWJzb2NrZXRzIgogICAgICIke1dFQkNPUkVfRElSfS9h
Y2Nlc3NpYmlsaXR5IgogICAgICIke1dFQkNPUkVfRElSfS9iaW5kaW5ncyIKICAgICAiJHtXRUJD
T1JFX0RJUn0vYmluZGluZ3MvZ2VuZXJpYyIKQEAgLTkwLDYgKzkxLDcgQEAgU0VUKFdlYkNvcmVf
SU5DTFVERV9ESVJFQ1RPUklFUwogCiBTRVQoV2ViQ29yZV9JRExfSU5DTFVERVMKICAgICBNb2R1
bGVzL2dlb2xvY2F0aW9uCisgICAgTW9kdWxlcy93ZWJzb2NrZXRzCiAgICAgYmluZGluZ3MvZ2Vu
ZXJpYwogICAgIGNzcwogICAgIGRvbQpAQCAtMTE1LDYgKzExNyw5IEBAIFNFVChXZWJDb3JlX0lE
TF9GSUxFUwogICAgIE1vZHVsZXMvZ2VvbG9jYXRpb24vUG9zaXRpb25FcnJvci5pZGwKICAgICBN
b2R1bGVzL2dlb2xvY2F0aW9uL1Bvc2l0aW9uRXJyb3JDYWxsYmFjay5pZGwKIAorICAgIE1vZHVs
ZXMvd2Vic29ja2V0cy9DbG9zZUV2ZW50LmlkbAorICAgIE1vZHVsZXMvd2Vic29ja2V0cy9ET01X
aW5kb3dXZWJTb2NrZXQuaWRsCisKICAgICBjc3MvQ291bnRlci5pZGwKICAgICBjc3MvQ1NTQ2hh
cnNldFJ1bGUuaWRsCiAgICAgY3NzL0NTU0ZvbnRGYWNlUnVsZS5pZGwKQEAgLTM4OCw5ICszOTMs
NiBAQCBTRVQoV2ViQ29yZV9JRExfRklMRVMKICAgICB3ZWJhdWRpby9Mb3dQYXNzMkZpbHRlck5v
ZGUuaWRsCiAgICAgd2ViYXVkaW8vUmVhbHRpbWVBbmFseXNlck5vZGUuaWRsCiAKLSAgICB3ZWJz
b2NrZXRzL0Nsb3NlRXZlbnQuaWRsCi0gICAgd2Vic29ja2V0cy9ET01XaW5kb3dXZWJTb2NrZXQu
aWRsCi0KICAgICB4bWwvRE9NV2luZG93WE1MLmlkbAogICAgIHhtbC9ET01QYXJzZXIuaWRsCiAg
ICAgeG1sL1hNTEh0dHBSZXF1ZXN0LmlkbApAQCAtMjA1OSwyNCArMjA2MSwyNCBAQCBFTkRJRigp
CiAKIElGIChFTkFCTEVfV0VCX1NPQ0tFVFMpCiAgICAgTElTVChBUFBFTkQgV2ViQ29yZV9TT1VS
Q0VTCi0gICAgICAgIHdlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwCi0g
ICAgICAgIHdlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVy
LmNwcAotICAgICAgICB3ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKLSAgICAgICAgd2Vic29ja2V0
cy9XZWJTb2NrZXRDaGFubmVsLmNwcAotICAgICAgICB3ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVu
c2lvbkRpc3BhdGNoZXIuY3BwCi0gICAgICAgIHdlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtl
LmNwcAotICAgICAgICB3ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QuY3BwCi0g
ICAgICAgIHdlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuY3BwCisgICAgICAg
IE1vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAKKyAgICAg
ICAgTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3Jh
cHBlci5jcHAKKyAgICAgICAgTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKKyAgICAg
ICAgTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCisgICAgICAgIE1vZHVs
ZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyLmNwcAorICAgICAgICBN
b2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcAorICAgICAgICBNb2R1bGVz
L3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdC5jcHAKKyAgICAgICAgTW9kdWxl
cy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlLmNwcAogICAgICkKIAogICAg
IExJU1QoQVBQRU5EIFdlYkNvcmVfSURMX0ZJTEVTCi0gICAgICAgIHdlYnNvY2tldHMvV2ViU29j
a2V0LmlkbAorICAgICAgICBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmlkbAogICAgICkK
IEVORElGICgpCiAKIElGIChFTkFCTEVfV0VCX1NPQ0tFVFMgQU5EIEVOQUJMRV9XT1JLRVJTKQog
ICAgIExJU1QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwotICAgICAgICAgd2Vic29ja2V0cy9Xb3Jr
ZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAKKyAgICAgICAgTW9kdWxlcy93ZWJzb2Nr
ZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcAogICAgICkKIEVORElGICgp
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQkocmV2aXNpb24gMTA4OTI0KQor
KysgU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQkod29ya2luZyBjb3B5KQpAQCAt
MjksNiArMjksNyBAQAogVlBBVEggPSBcCiAgICAgJChXZWJDb3JlKSBcCiAgICAgJChXZWJDb3Jl
KS9Nb2R1bGVzL2dlb2xvY2F0aW9uIFwKKyAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2Vic29ja2V0
cyBcCiAgICAgJChXZWJDb3JlKS9iaW5kaW5ncy9nZW5lcmljIFwKICAgICAkKFdlYkNvcmUpL2Jp
bmRpbmdzL2pzIFwKICAgICAkKFdlYkNvcmUpL2JpbmRpbmdzL29iamMgXApAQCAtNjAsNiArNjEs
OSBAQCBCSU5ESU5HX0lETFMgPSBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL2dlb2xvY2F0aW9u
L1Bvc2l0aW9uQ2FsbGJhY2suaWRsIFwKICAgICAkKFdlYkNvcmUpL01vZHVsZXMvZ2VvbG9jYXRp
b24vUG9zaXRpb25FcnJvci5pZGwgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy9nZW9sb2NhdGlv
bi9Qb3NpdGlvbkVycm9yQ2FsbGJhY2suaWRsIFwKKyAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2Vi
c29ja2V0cy9DbG9zZUV2ZW50LmlkbCBcCisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYnNvY2tl
dHMvRE9NV2luZG93V2ViU29ja2V0LmlkbCBcCisgICAgJChXZWJDb3JlKS9Nb2R1bGVzL3dlYnNv
Y2tldHMvV2ViU29ja2V0LmlkbCBcCiAgICAgJChXZWJDb3JlKS9jc3MvQ1NTQ2hhcnNldFJ1bGUu
aWRsIFwKICAgICAkKFdlYkNvcmUpL2Nzcy9DU1NGb250RmFjZVJ1bGUuaWRsIFwKICAgICAkKFdl
YkNvcmUpL2Nzcy9DU1NJbXBvcnRSdWxlLmlkbCBcCkBAIC01NjEsOSArNTY1LDYgQEAgQklORElO
R19JRExTID0gXAogICAgICQoV2ViQ29yZSkvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29tcGxldGlv
bkV2ZW50LmlkbCBcCiAgICAgJChXZWJDb3JlKS93ZWJhdWRpby9SZWFsdGltZUFuYWx5c2VyTm9k
ZS5pZGwgXAogICAgICQoV2ViQ29yZSkvd2ViYXVkaW8vV2F2ZVNoYXBlck5vZGUuaWRsIFwKLSAg
ICAkKFdlYkNvcmUpL3dlYnNvY2tldHMvQ2xvc2VFdmVudC5pZGwgXAotICAgICQoV2ViQ29yZSkv
d2Vic29ja2V0cy9ET01XaW5kb3dXZWJTb2NrZXQuaWRsIFwKLSAgICAkKFdlYkNvcmUpL3dlYnNv
Y2tldHMvV2ViU29ja2V0LmlkbCBcCiAgICAgJChXZWJDb3JlKS93b3JrZXJzL0Fic3RyYWN0V29y
a2VyLmlkbCBcCiAgICAgJChXZWJDb3JlKS93b3JrZXJzL0RPTVdpbmRvd1dvcmtlci5pZGwgXAog
ICAgICQoV2ViQ29yZSkvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmlkbCBcCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5wcmkKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMucHJpCShyZXZpc2lvbiAxMDg5MjQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9EZXJpdmVkU291cmNlcy5wcmkJKHdvcmtpbmcgY29weSkKQEAgLTkyLDYgKzkyLDkg
QEAgSURMX0JJTkRJTkdTICs9IFwKICAgICAkJFBXRC9Nb2R1bGVzL2dlb2xvY2F0aW9uL1Bvc2l0
aW9uQ2FsbGJhY2suaWRsIFwKICAgICAkJFBXRC9Nb2R1bGVzL2dlb2xvY2F0aW9uL1Bvc2l0aW9u
RXJyb3IuaWRsIFwKICAgICAkJFBXRC9Nb2R1bGVzL2dlb2xvY2F0aW9uL1Bvc2l0aW9uRXJyb3JD
YWxsYmFjay5pZGwgXAorICAgICQkUFdEL01vZHVsZXMvd2Vic29ja2V0cy9DbG9zZUV2ZW50Lmlk
bCBcCisgICAgJCRQV0QvTW9kdWxlcy93ZWJzb2NrZXRzL0RPTVdpbmRvd1dlYlNvY2tldC5pZGwg
XAorICAgICQkUFdEL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuaWRsIFwKICAgICAkJFBX
RC9jc3MvQ291bnRlci5pZGwgXAogICAgICQkUFdEL2Nzcy9DU1NDaGFyc2V0UnVsZS5pZGwgXAog
ICAgICQkUFdEL2Nzcy9DU1NGb250RmFjZVJ1bGUuaWRsIFwKQEAgLTQyNiw5ICs0MjksNiBAQCBJ
RExfQklORElOR1MgKz0gXAogICAgICQkUFdEL3dlYmF1ZGlvL0phdmFTY3JpcHRBdWRpb05vZGUu
aWRsIFwKICAgICAkJFBXRC93ZWJhdWRpby9Mb3dQYXNzMkZpbHRlck5vZGUuaWRsIFwKICAgICAk
JFBXRC93ZWJhdWRpby9SZWFsdGltZUFuYWx5c2VyTm9kZS5pZGwgXAotICAgICQkUFdEL3dlYnNv
Y2tldHMvQ2xvc2VFdmVudC5pZGwgXAotICAgICQkUFdEL3dlYnNvY2tldHMvRE9NV2luZG93V2Vi
U29ja2V0LmlkbCBcCi0gICAgJCRQV0Qvd2Vic29ja2V0cy9XZWJTb2NrZXQuaWRsIFwKICAgICAk
JFBXRC93b3JrZXJzL0Fic3RyYWN0V29ya2VyLmlkbCBcCiAgICAgJCRQV0Qvd29ya2Vycy9ET01X
aW5kb3dXb3JrZXIuaWRsIFwKICAgICAkJFBXRC93b3JrZXJzL0RlZGljYXRlZFdvcmtlckNvbnRl
eHQuaWRsIFwKQEAgLTY5Miw2ICs2OTIsNyBAQCBnZW5lcmF0ZUJpbmRpbmdzLmNvbW1hbmRzID0g
cGVybCAtSSQkUFdECiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS1kZWZpbmVzIFwiJCR7
RkVBVFVSRV9ERUZJTkVTX0pBVkFTQ1JJUFR9XCIgXAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC0tZ2VuZXJhdG9yICQkZ2VuZXJhdG9yIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAtLWluY2x1ZGUgJCRQV0QvTW9kdWxlcy9nZW9sb2NhdGlvbiBcCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLS1pbmNsdWRlICQkUFdEL01vZHVsZXMvd2Vic29ja2V0cyBcCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLS1pbmNsdWRlICQkUFdEL2RvbSBcCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLS1pbmNsdWRlICQkUFdEL2ZpbGVhcGkgXAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC0taW5jbHVkZSAkJFBXRC9odG1sIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxl
LmFtCShyZXZpc2lvbiAxMDg5MjQpCisrKyBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQko
d29ya2luZyBjb3B5KQpAQCAtMTMsNiArMTMsNyBAQCB3ZWJjb3JlX2NwcGZsYWdzICs9IFwKIAkt
SSQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZSBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9nZW9sb2NhdGlvbiBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbSBcCisJLUkkKHNyY2RpcikvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJz
b2NrZXRzIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5IFwKIAkt
SSQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncyBcCiAJLUkkKHNyY2RpcikvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYyBcCkBAIC03NjEsNiArNzYyLDcgQEAgRGVyaXZlZFNv
dXJjZXMvQU5HTEUvZ2xzbGFuZ190YWIuaDogRGVyaQogSURMX1BBVEggOj0gXAogICAgICQoV2Vi
Q29yZSkvTW9kdWxlcy9nZW9sb2NhdGlvbiBcCiAgICAgJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlh
c3RyZWFtIFwKKyAgICAkKFdlYkNvcmUpL01vZHVsZXMvd2Vic29ja2V0cyBcCiAgICAgJChXZWJD
b3JlKS9iaW5kaW5ncy9qcyBcCiAgICAgJChXZWJDb3JlKS9jc3MgXAogICAgICQoV2ViQ29yZSkv
ZG9tIFwKQEAgLTkwMCw2ICs5MDIsNyBAQCBsaWJXZWJDb3JlR3RrX2xhX0NQUEZMQUdTID0gXAog
CiBFWFRSQV9ESVNUICs9IFwKIAkkKHNoZWxsIGxzICQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtLyouaWRsKSBcCisJJChzaGVsbCBscyAkKHNyY2RpcikvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzLyouaWRsKSBcCiAJJChzaGVsbCBscyAkKHNyY2Rp
cikvU291cmNlL1dlYkNvcmUvY3NzLyouaWRsKSBcCiAJJChzaGVsbCBscyAkKHNyY2RpcikvU291
cmNlL1dlYkNvcmUvZG9tLyouaWRsKSBcCiAJJChzaGVsbCBscyAkKHNyY2RpcikvU291cmNlL1dl
YkNvcmUvZmlsZWFwaS8qLmlkbCkgXApAQCAtOTE2LDcgKzkxOSw2IEBAIEVYVFJBX0RJU1QgKz0g
XAogCSQoc2hlbGwgbHMgJChzcmNkaXIpL1NvdXJjZS9XZWJDb3JlL3N2Zy8qLmlkbCkgXAogCSQo
c2hlbGwgbHMgJChzcmNkaXIpL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvKi5pZGwpIFwKIAkkKHNo
ZWxsIGxzICQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby8qLmlkbCkgXAotCSQoc2hl
bGwgbHMgJChzcmNkaXIpL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvKi5pZGwpIFwKIAkkKHNo
ZWxsIGxzICQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzLyouaWRsKSBcCiAJJChzaGVs
bCBscyAkKHNyY2RpcikvU291cmNlL1dlYkNvcmUveG1sLyouaWRsKSBcCiAJU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2dsc2xhbmcubCBcCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0dOVW1h
a2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDEwODkyNCkKKysrIFNvdXJjZS9XZWJDb3JlL0dOVW1h
a2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTk5Nyw2ICs5OTcsMzAgQEAgd2ViY29y
ZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJN
ZWRpYUNvbnRyb2xsZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1VzZXJNZWRpYVJlcXVlc3QuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1VzZXJNZWRpYVJlcXVlc3QuaCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2Nr
ZXRzL0Nsb3NlRXZlbnQuaCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1Ro
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlci5jcHAgXAorCVNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdy
YXBwZXIuaCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsLmNwcCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRz
L1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmggXAorCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsQ2xpZW50LmggXAorCVNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcCBcCisJU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaCBcCisJU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuaCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJz
b2NrZXRzL1dlYlNvY2tldERlZmxhdGVyLmNwcCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVyLmggXAorCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2Vic29ja2V0cy9XZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyLmNwcCBcCisJU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIuaCBc
CisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVuc2lvblBy
b2Nlc3Nvci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0
RnJhbWUuaCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEhh
bmRzaGFrZS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2Nr
ZXRIYW5kc2hha2UuaCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNv
Y2tldEhhbmRzaGFrZVJlcXVlc3QuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNv
Y2tldHMvV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuY3BwIFwKKwlTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuaCBc
CisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJT
b2NrZXRDaGFubmVsLmNwcCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dv
cmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmggXAogCVNvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5jcHAgXAogCVNvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5oIFwKIAlTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZC5jcHAgXApAQCAtNDM0MSwz
MCArNDM2NSw2IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1pvb21FdmVudC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdab29tRXZlbnQuaCBcCiAJ
U291cmNlL1dlYkNvcmUvV2ViQ29yZVByZWZpeC5oIFwKLQlTb3VyY2UvV2ViQ29yZS93ZWJzb2Nr
ZXRzL0Nsb3NlRXZlbnQuaCBcCi0JU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9UaHJlYWRhYmxl
V2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXIuY3BwIFwKLQlTb3VyY2UvV2ViQ29yZS93ZWJz
b2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlci5oIFwKLQlTb3Vy
Y2UvV2ViQ29yZS93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcCBcCi0J
U291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oIFwK
LQlTb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWxDbGllbnQuaCBcCi0J
U291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcCBcCi0JU291cmNl
L1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmggXAotCVNvdXJjZS9XZWJDb3Jl
L3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcCBcCi0JU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9X
ZWJTb2NrZXQuaCBcCi0JU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRl
ci5jcHAgXAotCVNvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZXIuaCBc
Ci0JU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVy
LmNwcCBcCi0JU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRFeHRlbnNpb25EaXNw
YXRjaGVyLmggXAotCVNvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0RXh0ZW5zaW9u
UHJvY2Vzc29yLmggXAotCVNvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0RnJhbWUu
aCBcCi0JU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwIFwK
LQlTb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5oIFwKLQlTb3Vy
Y2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QuY3BwIFwKLQlT
b3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QuaCBcCi0J
U291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZS5jcHAg
XAotCVNvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2Uu
aCBcCi0JU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbC5jcHAgXAotCVNvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWwuaCBcCiAJU291cmNlL1dlYkNvcmUvd29ya2Vycy9BYnN0cmFjdFdv
cmtlci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvQWJzdHJhY3RXb3JrZXIuaCBcCiAJ
U291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmNwcCBcCkBAIC01
NTY0LDkgKzU1NjQsOSBAQCB3ZWJjb3JlX2J1aWx0X3NvdXJjZXMgKz0gXAogCURlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvSlNXZWJTb2NrZXQuaAogCiBkb21fYmluZGluZ19pZGxzICs9IFwKLQkkKFdl
YkNvcmUpL3dlYnNvY2tldHMvQ2xvc2VFdmVudC5pZGwgXAotCSQoV2ViQ29yZSkvd2Vic29ja2V0
cy9ET01XaW5kb3dXZWJTb2NrZXQuaWRsIFwKLQkkKFdlYkNvcmUpL3dlYnNvY2tldHMvV2ViU29j
a2V0LmlkbAorCSQoV2ViQ29yZSkvTW9kdWxlcy93ZWJzb2NrZXRzL0Nsb3NlRXZlbnQuaWRsIFwK
KwkkKFdlYkNvcmUpL01vZHVsZXMvd2Vic29ja2V0cy9ET01XaW5kb3dXZWJTb2NrZXQuaWRsIFwK
KwkkKFdlYkNvcmUpL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuaWRsCiBlbmRpZiAgIyBF
TkQgRU5BQkxFX1dFQl9TT0NLRVRTCiAKICMgLS0tCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9UYXJn
ZXQucHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJKHJldmlzaW9u
IDEwODkyNCkKKysrIFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJKHdvcmtpbmcgY29weSkKQEAg
LTM2NzEsMjkgKzM2NzEsMjkgQEAgY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1ZJREVPX1RSQUNL
PTEpIAogCiBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfV0VCX1NPQ0tFVFM9MSkgewogICAgIEhF
QURFUlMgKz0gXAotICAgICAgICB3ZWJzb2NrZXRzL0Nsb3NlRXZlbnQuaCBcCi0gICAgICAgIHdl
YnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaCBcCi0gICAgICAgIHdlYnNvY2tl
dHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyLmggXAotICAgICAgICB3
ZWJzb2NrZXRzL1dlYlNvY2tldC5oIFwKLSAgICAgICAgd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFu
bmVsLmggXAotICAgICAgICB3ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWxDbGllbnQuaCBcCi0g
ICAgICAgIHdlYnNvY2tldHMvV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlci5oIFwKLSAgICAg
ICAgd2Vic29ja2V0cy9XZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3IuaCBcCi0gICAgICAgIHdl
YnNvY2tldHMvV2ViU29ja2V0RnJhbWUuaCBcCi0gICAgICAgIHdlYnNvY2tldHMvV2ViU29ja2V0
SGFuZHNoYWtlLmggXAotICAgICAgICB3ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZVJlcXVl
c3QuaCBcCi0gICAgICAgIHdlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuaCBc
CisgICAgICAgIE1vZHVsZXMvd2Vic29ja2V0cy9DbG9zZUV2ZW50LmggXAorICAgICAgICBNb2R1
bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaCBcCisgICAgICAgIE1v
ZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXIu
aCBcCisgICAgICAgIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuaCBcCisgICAgICAgIE1v
ZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmggXAorICAgICAgICBNb2R1bGVzL3dl
YnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbENsaWVudC5oIFwKKyAgICAgICAgTW9kdWxlcy93ZWJz
b2NrZXRzL1dlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIuaCBcCisgICAgICAgIE1vZHVsZXMv
d2Vic29ja2V0cy9XZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3IuaCBcCisgICAgICAgIE1vZHVs
ZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRGcmFtZS5oIFwKKyAgICAgICAgTW9kdWxlcy93ZWJzb2Nr
ZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5oIFwKKyAgICAgICAgTW9kdWxlcy93ZWJzb2NrZXRzL1dl
YlNvY2tldEhhbmRzaGFrZVJlcXVlc3QuaCBcCisgICAgICAgIE1vZHVsZXMvd2Vic29ja2V0cy9X
ZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZS5oIFwKICAgICAgICAgcGxhdGZvcm0vbmV0d29yay9x
dC9Tb2NrZXRTdHJlYW1IYW5kbGVQcml2YXRlLmgKIAogICAgIFNPVVJDRVMgKz0gXAotICAgICAg
ICB3ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAgXAotICAgICAgICB3ZWJzb2NrZXRzL1dlYlNvY2tl
dENoYW5uZWwuY3BwIFwKLSAgICAgICAgd2Vic29ja2V0cy9XZWJTb2NrZXRFeHRlbnNpb25EaXNw
YXRjaGVyLmNwcCBcCi0gICAgICAgIHdlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcCBc
Ci0gICAgICAgIHdlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdC5jcHAgXAotICAg
ICAgICB3ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlLmNwcCBcCi0gICAgICAg
IHdlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwIFwKLSAgICAgICAgd2Vi
c29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXIuY3BwIFwKKyAg
ICAgICAgTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAgXAorICAgICAgICBNb2R1bGVz
L3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAgXAorICAgICAgICBNb2R1bGVzL3dlYnNv
Y2tldHMvV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlci5jcHAgXAorICAgICAgICBNb2R1bGVz
L3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcCBcCisgICAgICAgIE1vZHVsZXMvd2Vi
c29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0LmNwcCBcCisgICAgICAgIE1vZHVsZXMv
d2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZS5jcHAgXAorICAgICAgICBNb2R1
bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwIFwKKyAgICAgICAg
TW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBl
ci5jcHAgXAogICAgICAgICBwbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUVycm9yQmFzZS5j
cHAgXAogICAgICAgICBwbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZUJhc2UuY3Bw
IFwKICAgICAgICAgcGxhdGZvcm0vbmV0d29yay9xdC9Tb2NrZXRTdHJlYW1IYW5kbGVRdC5jcHAK
QEAgLTM3MDUsMTAgKzM3MDUsMTAgQEAgY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1dFQl9TT0NL
RVRTPTEpIAogCiAgICAgY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1dPUktFUlM9MSkgewogICAg
ICAgICBIRUFERVJTICs9IFwKLSAgICAgICAgICAgIHdlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWwuaAorICAgICAgICAgICAgTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtl
clRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgKIAogICAgICAgICBTT1VSQ0VTICs9IFwKLSAg
ICAgICAgICAgIHdlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3Bw
CisgICAgICAgICAgICBNb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWwuY3BwCiAgICAgfQogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCShyZXZpc2lvbiAx
MDg5MjQpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAg
LTc0NSw2ICs3NDUsOSBAQAogICAgICAgICAgICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdh
dG9yVXNlck1lZGlhU3VjY2Vzc0NhbGxiYWNrLmlkbCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9t
ZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbi5pZGwnLAogICAgICAgICAgICAgJ01vZHVsZXMvbWVk
aWFzdHJlYW0vU2lnbmFsaW5nQ2FsbGJhY2suaWRsJywKKyAgICAgICAgICAgICdNb2R1bGVzL3dl
YnNvY2tldHMvQ2xvc2VFdmVudC5pZGwnLAorICAgICAgICAgICAgJ01vZHVsZXMvd2Vic29ja2V0
cy9ET01XaW5kb3dXZWJTb2NrZXQuaWRsJywKKyAgICAgICAgICAgICdNb2R1bGVzL3dlYnNvY2tl
dHMvV2ViU29ja2V0LmlkbCcsCiAgICAgICAgICAgICAnY3NzL0NTU0NoYXJzZXRSdWxlLmlkbCcs
CiAgICAgICAgICAgICAnY3NzL0NTU0ZvbnRGYWNlUnVsZS5pZGwnLAogICAgICAgICAgICAgJ2Nz
cy9DU1NJbXBvcnRSdWxlLmlkbCcsCkBAIC0xMTAwLDkgKzExMDMsNiBAQAogICAgICAgICAgICAg
J3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbXBsZXRpb25FdmVudC5pZGwnLAogICAgICAgICAgICAg
J3dlYmF1ZGlvL1JlYWx0aW1lQW5hbHlzZXJOb2RlLmlkbCcsCiAgICAgICAgICAgICAnd2ViYXVk
aW8vV2F2ZVNoYXBlck5vZGUuaWRsJywKLSAgICAgICAgICAgICd3ZWJzb2NrZXRzL0Nsb3NlRXZl
bnQuaWRsJywKLSAgICAgICAgICAgICd3ZWJzb2NrZXRzL0RPTVdpbmRvd1dlYlNvY2tldC5pZGwn
LAotICAgICAgICAgICAgJ3dlYnNvY2tldHMvV2ViU29ja2V0LmlkbCcsCiAgICAgICAgICAgICAn
d29ya2Vycy9BYnN0cmFjdFdvcmtlci5pZGwnLAogICAgICAgICAgICAgJ3dvcmtlcnMvRE9NV2lu
ZG93V29ya2VyLmlkbCcsCiAgICAgICAgICAgICAnd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJDb250
ZXh0LmlkbCcsCkBAIC0xMzI3LDYgKzEzMjcsMzAgQEAKICAgICAgICAgICAgICdNb2R1bGVzL21l
ZGlhc3RyZWFtL1VzZXJNZWRpYUNvbnRyb2xsZXIuY3BwJywKICAgICAgICAgICAgICdNb2R1bGVz
L21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwJywKICAgICAgICAgICAgICdNb2R1bGVz
L21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuaCcsCisgICAgICAgICAgICAnTW9kdWxlcy93
ZWJzb2NrZXRzL0Nsb3NlRXZlbnQuaCcsCisgICAgICAgICAgICAnTW9kdWxlcy93ZWJzb2NrZXRz
L1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcCcsCisgICAgICAgICAgICAnTW9kdWxlcy93
ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgnLAorICAgICAgICAgICAgJ01v
ZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXIu
Y3BwJywKKyAgICAgICAgICAgICdNb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWxDbGllbnRXcmFwcGVyLmgnLAorICAgICAgICAgICAgJ01vZHVsZXMvd2Vic29ja2V0
cy9XZWJTb2NrZXQuY3BwJywKKyAgICAgICAgICAgICdNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29j
a2V0LmgnLAorICAgICAgICAgICAgJ01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVs
LmNwcCcsCisgICAgICAgICAgICAnTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwu
aCcsCisgICAgICAgICAgICAnTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWxDbGll
bnQuaCcsCisgICAgICAgICAgICAnTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVy
LmNwcCcsCisgICAgICAgICAgICAnTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVy
LmgnLAorICAgICAgICAgICAgJ01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRFeHRlbnNpb25E
aXNwYXRjaGVyLmNwcCcsCisgICAgICAgICAgICAnTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tl
dEV4dGVuc2lvbkRpc3BhdGNoZXIuaCcsCisgICAgICAgICAgICAnTW9kdWxlcy93ZWJzb2NrZXRz
L1dlYlNvY2tldEV4dGVuc2lvblByb2Nlc3Nvci5oJywKKyAgICAgICAgICAgICdNb2R1bGVzL3dl
YnNvY2tldHMvV2ViU29ja2V0RnJhbWUuaCcsCisgICAgICAgICAgICAnTW9kdWxlcy93ZWJzb2Nr
ZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAnLAorICAgICAgICAgICAgJ01vZHVsZXMvd2Vic29j
a2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuaCcsCisgICAgICAgICAgICAnTW9kdWxlcy93ZWJzb2Nr
ZXRzL1dlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QuY3BwJywKKyAgICAgICAgICAgICdNb2R1bGVz
L3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdC5oJywKKyAgICAgICAgICAgICdN
b2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuY3BwJywKKyAgICAg
ICAgICAgICdNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuaCcs
CisgICAgICAgICAgICAnTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2Nr
ZXRDaGFubmVsLmNwcCcsCisgICAgICAgICAgICAnTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRo
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgnLAogICAgICAgICAgICAgJ2FjY2Vzc2liaWxpdHkv
QVhPYmplY3RDYWNoZS5jcHAnLAogICAgICAgICAgICAgJ2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eUFSSUFHcmlkLmNwcCcsCiAgICAgICAgICAgICAnYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5QVJJQUdyaWQuaCcsCkBAIC00ODMxLDMwICs0ODU1LDYgQEAKICAgICAgICAgICAgICd3ZWJh
dWRpby9XYXZlU2hhcGVyTm9kZS5oJywKICAgICAgICAgICAgICd3ZWJhdWRpby9XYXZlU2hhcGVy
UHJvY2Vzc29yLmNwcCcsCiAgICAgICAgICAgICAnd2ViYXVkaW8vV2F2ZVNoYXBlclByb2Nlc3Nv
ci5oJywKLSAgICAgICAgICAgICd3ZWJzb2NrZXRzL0Nsb3NlRXZlbnQuaCcsCi0gICAgICAgICAg
ICAnd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAnLAotICAgICAgICAg
ICAgJ3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaCcsCi0gICAgICAgICAg
ICAnd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXIuY3Bw
JywKLSAgICAgICAgICAgICd3ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xp
ZW50V3JhcHBlci5oJywKLSAgICAgICAgICAgICd3ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAnLAot
ICAgICAgICAgICAgJ3dlYnNvY2tldHMvV2ViU29ja2V0LmgnLAotICAgICAgICAgICAgJ3dlYnNv
Y2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAnLAotICAgICAgICAgICAgJ3dlYnNvY2tldHMvV2Vi
U29ja2V0Q2hhbm5lbC5oJywKLSAgICAgICAgICAgICd3ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5u
ZWxDbGllbnQuaCcsCi0gICAgICAgICAgICAnd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlci5j
cHAnLAotICAgICAgICAgICAgJ3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZXIuaCcsCi0gICAg
ICAgICAgICAnd2Vic29ja2V0cy9XZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyLmNwcCcsCi0g
ICAgICAgICAgICAnd2Vic29ja2V0cy9XZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyLmgnLAot
ICAgICAgICAgICAgJ3dlYnNvY2tldHMvV2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yLmgnLAot
ICAgICAgICAgICAgJ3dlYnNvY2tldHMvV2ViU29ja2V0RnJhbWUuaCcsCi0gICAgICAgICAgICAn
d2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwJywKLSAgICAgICAgICAgICd3ZWJzb2Nr
ZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5oJywKLSAgICAgICAgICAgICd3ZWJzb2NrZXRzL1dlYlNv
Y2tldEhhbmRzaGFrZVJlcXVlc3QuY3BwJywKLSAgICAgICAgICAgICd3ZWJzb2NrZXRzL1dlYlNv
Y2tldEhhbmRzaGFrZVJlcXVlc3QuaCcsCi0gICAgICAgICAgICAnd2Vic29ja2V0cy9XZWJTb2Nr
ZXRIYW5kc2hha2VSZXNwb25zZS5jcHAnLAotICAgICAgICAgICAgJ3dlYnNvY2tldHMvV2ViU29j
a2V0SGFuZHNoYWtlUmVzcG9uc2UuaCcsCi0gICAgICAgICAgICAnd2Vic29ja2V0cy9Xb3JrZXJU
aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAnLAotICAgICAgICAgICAgJ3dlYnNvY2tldHMv
V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaCcsCiAgICAgICAgICAgICAnd29ya2Vy
cy9BYnN0cmFjdFdvcmtlci5jcHAnLAogICAgICAgICAgICAgJ3dvcmtlcnMvQWJzdHJhY3RXb3Jr
ZXIuaCcsCiAgICAgICAgICAgICAnd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJDb250ZXh0LmNwcCcs
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnByaQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnByaQkocmV2aXNpb24gMTA4OTI0KQorKysgU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5wcmkJKHdvcmtpbmcgY29weSkKQEAgLTE5LDYgKzE5LDcgQEAgV0VCQ09SRV9HRU5F
UkFURURfU09VUkNFU19ESVIgPSAkJHtST09UXwogSU5DTFVERVBBVEggKz0gXAogICAgICQkU09V
UkNFX0RJUiBcCiAgICAgJCRTT1VSQ0VfRElSL01vZHVsZXMvZ2VvbG9jYXRpb24gXAorICAgICQk
U09VUkNFX0RJUi9Nb2R1bGVzL3dlYnNvY2tldHMgXAogICAgICQkU09VUkNFX0RJUi9hY2Nlc3Np
YmlsaXR5IFwKICAgICAkJFNPVVJDRV9ESVIvYmluZGluZ3MgXAogICAgICQkU09VUkNFX0RJUi9i
aW5kaW5ncy9nZW5lcmljIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNv
cmUuZ3lwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUu
Z3lwCShyZXZpc2lvbiAxMDg5MjQpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cC9XZWJD
b3JlLmd5cAkod29ya2luZyBjb3B5KQpAQCAtNTYsNiArNTYsNyBAQAogICAgICAgJy4uL01vZHVs
ZXMvaW50ZW50cycsCiAgICAgICAnLi4vTW9kdWxlcy9pbmRleGVkZGInLAogICAgICAgJy4uL01v
ZHVsZXMvbWVkaWFzdHJlYW0nLAorICAgICAgJy4uL01vZHVsZXMvd2Vic29ja2V0cycsCiAgICAg
ICAnLi4vYWNjZXNzaWJpbGl0eScsCiAgICAgICAnLi4vYWNjZXNzaWJpbGl0eS9jaHJvbWl1bScs
CiAgICAgICAnLi4vYmluZGluZ3MnLApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS52
Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHJldmlzaW9uIDEwODkyNCkKKysrIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yNDEwOSw2
ICsyNDEwOSwxMDYgQEAKIAkJCQkJPgogCQkJCTwvRmlsZT4KIAkJCTwvRmlsdGVyPgorCQkJPEZp
bHRlcgorCQkJCU5hbWU9IndlYnNvY2tldHMiCisJCQkJPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0
aXZlUGF0aD0iLi5cTW9kdWxlc1x3ZWJzb2NrZXRzXENsb3NlRXZlbnQuaCIKKwkJCQkJPgorCQkJ
CTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcd2Vic29j
a2V0c1xUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAiCisJCQkJCT4KKwkJCQk8L0ZpbGU+
CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXHdlYnNvY2tldHNcVGhy
ZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8Rmls
ZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcd2Vic29ja2V0c1xUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXIuY3BwIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJ
CTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1x3ZWJzb2NrZXRzXFRocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlci5oIgorCQkJCQk+CisJCQkJPC9GaWxlPgor
CQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1x3ZWJzb2NrZXRzXFdlYlNv
Y2tldC5jcHAiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQ
YXRoPSIuLlxNb2R1bGVzXHdlYnNvY2tldHNcV2ViU29ja2V0LmgiCisJCQkJCT4KKwkJCQk8L0Zp
bGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXHdlYnNvY2tldHNc
V2ViU29ja2V0Q2hhbm5lbC5jcHAiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXHdlYnNvY2tldHNcV2ViU29ja2V0Q2hhbm5lbC5o
IgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5c
TW9kdWxlc1x3ZWJzb2NrZXRzXFdlYlNvY2tldENoYW5uZWxDbGllbnQuaCIKKwkJCQkJPgorCQkJ
CTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcd2Vic29j
a2V0c1xXZWJTb2NrZXREZWZsYXRlci5jcHAiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZp
bGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXHdlYnNvY2tldHNcV2ViU29ja2V0RGVm
bGF0ZXIuaCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXE1vZHVsZXNcd2Vic29ja2V0c1xXZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyLmNw
cCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XE1vZHVsZXNcd2Vic29ja2V0c1xXZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyLmgiCisJCQkJ
CT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVz
XHdlYnNvY2tldHNcV2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yLmgiCisJCQkJCT4KKwkJCQk8
L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXHdlYnNvY2tl
dHNcV2ViU29ja2V0RnJhbWUuaCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcd2Vic29ja2V0c1xXZWJTb2NrZXRIYW5kc2hha2Uu
Y3BwIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0i
Li5cTW9kdWxlc1x3ZWJzb2NrZXRzXFdlYlNvY2tldEhhbmRzaGFrZS5oIgorCQkJCQk+CisJCQkJ
PC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1x3ZWJzb2Nr
ZXRzXFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QuY3BwIgorCQkJCQk+CisJCQkJPC9GaWxlPgor
CQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1x3ZWJzb2NrZXRzXFdlYlNv
Y2tldEhhbmRzaGFrZVJlcXVlc3QuaCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQor
CQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcd2Vic29ja2V0c1xXZWJTb2NrZXRIYW5kc2hh
a2VSZXNwb25zZS5jcHAiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVs
YXRpdmVQYXRoPSIuLlxNb2R1bGVzXHdlYnNvY2tldHNcV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9u
c2UuaCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXE1vZHVsZXNcd2Vic29ja2V0c1xXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5j
cHAiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIu
LlxNb2R1bGVzXHdlYnNvY2tldHNcV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaCIK
KwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCTwvRmlsdGVyPgogCQk8L0ZpbHRlcj4KIAkJPEZpbHRl
cgogCQkJTmFtZT0iYWNjZXNzaWJpbGl0eSIKQEAgLTczNDk1LDEwNiArNzM1OTUsNiBAQAogCQkJ
PC9GaWx0ZXI+CiAJCTwvRmlsdGVyPgogCQk8RmlsdGVyCi0JCQlOYW1lPSJ3ZWJzb2NrZXRzIgot
CQkJPgotCQkJPEZpbGUKLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHdlYnNvY2tldHNcQ2xvc2VFdmVu
dC5oIgotCQkJCT4KLQkJCTwvRmlsZT4KLQkJCTxGaWxlCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlx3
ZWJzb2NrZXRzXFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcCIKLQkJCQk+Ci0JCQk8L0Zp
bGU+Ci0JCQk8RmlsZQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cd2Vic29ja2V0c1xUaHJlYWRhYmxl
V2ViU29ja2V0Q2hhbm5lbC5oIgotCQkJCT4KLQkJCTwvRmlsZT4KLQkJCTxGaWxlCi0JCQkJUmVs
YXRpdmVQYXRoPSIuLlx3ZWJzb2NrZXRzXFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50
V3JhcHBlci5jcHAiCi0JCQkJPgotCQkJPC9GaWxlPgotCQkJPEZpbGUKLQkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXHdlYnNvY2tldHNcVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVy
LmgiCi0JCQkJPgotCQkJPC9GaWxlPgotCQkJPEZpbGUKLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHdl
YnNvY2tldHNcV2ViU29ja2V0LmNwcCIKLQkJCQk+Ci0JCQk8L0ZpbGU+Ci0JCQk8RmlsZQotCQkJ
CVJlbGF0aXZlUGF0aD0iLi5cd2Vic29ja2V0c1xXZWJTb2NrZXQuaCIKLQkJCQk+Ci0JCQk8L0Zp
bGU+Ci0JCQk8RmlsZQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cd2Vic29ja2V0c1xXZWJTb2NrZXRD
aGFubmVsLmNwcCIKLQkJCQk+Ci0JCQk8L0ZpbGU+Ci0JCQk8RmlsZQotCQkJCVJlbGF0aXZlUGF0
aD0iLi5cd2Vic29ja2V0c1xXZWJTb2NrZXRDaGFubmVsLmgiCi0JCQkJPgotCQkJPC9GaWxlPgot
CQkJPEZpbGUKLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHdlYnNvY2tldHNcV2ViU29ja2V0Q2hhbm5l
bENsaWVudC5oIgotCQkJCT4KLQkJCTwvRmlsZT4KLQkJCTxGaWxlCi0JCQkJUmVsYXRpdmVQYXRo
PSIuLlx3ZWJzb2NrZXRzXFdlYlNvY2tldERlZmxhdGVyLmNwcCIKLQkJCQk+Ci0JCQk8L0ZpbGU+
Ci0JCQk8RmlsZQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cd2Vic29ja2V0c1xXZWJTb2NrZXREZWZs
YXRlci5oIgotCQkJCT4KLQkJCTwvRmlsZT4KLQkJCTxGaWxlCi0JCQkJUmVsYXRpdmVQYXRoPSIu
Llx3ZWJzb2NrZXRzXFdlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIuY3BwIgotCQkJCT4KLQkJ
CTwvRmlsZT4KLQkJCTxGaWxlCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlx3ZWJzb2NrZXRzXFdlYlNv
Y2tldEV4dGVuc2lvbkRpc3BhdGNoZXIuaCIKLQkJCQk+Ci0JCQk8L0ZpbGU+Ci0JCQk8RmlsZQot
CQkJCVJlbGF0aXZlUGF0aD0iLi5cd2Vic29ja2V0c1xXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNz
b3IuaCIKLQkJCQk+Ci0JCQk8L0ZpbGU+Ci0JCQk8RmlsZQotCQkJCVJlbGF0aXZlUGF0aD0iLi5c
d2Vic29ja2V0c1xXZWJTb2NrZXRGcmFtZS5oIgotCQkJCT4KLQkJCTwvRmlsZT4KLQkJCTxGaWxl
Ci0JCQkJUmVsYXRpdmVQYXRoPSIuLlx3ZWJzb2NrZXRzXFdlYlNvY2tldEhhbmRzaGFrZS5jcHAi
Ci0JCQkJPgotCQkJPC9GaWxlPgotCQkJPEZpbGUKLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHdlYnNv
Y2tldHNcV2ViU29ja2V0SGFuZHNoYWtlLmgiCi0JCQkJPgotCQkJPC9GaWxlPgotCQkJPEZpbGUK
LQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHdlYnNvY2tldHNcV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVz
dC5jcHAiCi0JCQkJPgotCQkJPC9GaWxlPgotCQkJPEZpbGUKLQkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XHdlYnNvY2tldHNcV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdC5oIgotCQkJCT4KLQkJCTwvRmls
ZT4KLQkJCTxGaWxlCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlx3ZWJzb2NrZXRzXFdlYlNvY2tldEhh
bmRzaGFrZVJlc3BvbnNlLmNwcCIKLQkJCQk+Ci0JCQk8L0ZpbGU+Ci0JCQk8RmlsZQotCQkJCVJl
bGF0aXZlUGF0aD0iLi5cd2Vic29ja2V0c1xXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZS5oIgot
CQkJCT4KLQkJCTwvRmlsZT4KLQkJCTxGaWxlCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlx3ZWJzb2Nr
ZXRzXFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcCIKLQkJCQk+Ci0JCQk8L0Zp
bGU+Ci0JCQk8RmlsZQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cd2Vic29ja2V0c1xXb3JrZXJUaHJl
YWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oIgotCQkJCT4KLQkJCTwvRmlsZT4KLQkJPC9GaWx0ZXI+
Ci0JCTxGaWx0ZXIKIAkJCU5hbWU9Im1hdGhtbCIKIAkJCT4KIAkJCTxGaWxlCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlQ29tbW9uLnZzcHJvcHMKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZUNvbW1vbi52c3Byb3Bz
CShyZXZpc2lvbiAxMDg5MjQpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJD
b3JlQ29tbW9uLnZzcHJvcHMJKHdvcmtpbmcgY29weSkKQEAgLTcsNyArNyw3IEBACiAJPgogCTxU
b29sCiAJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCi0JCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0
b3JpZXM9IiZxdW90OyQoUHJvamVjdERpcikuLiZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5c
TW9kdWxlc1xnZW9sb2NhdGlvbiZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cYWNjZXNzaWJp
bGl0eSZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cYWNjZXNzaWJpbGl0eVx3aW4mcXVvdDs7
JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGJyaWRnZSZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5c
YnJpZGdlXGMmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGJyaWRnZVxqc2MmcXVvdDs7JnF1
b3Q7JChQcm9qZWN0RGlyKS4uXGNzcyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cZWRpdGlu
ZyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cZmlsZWFwaSZxdW90OzsmcXVvdDskKFByb2pl
Y3REaXIpLi5ccmVuZGVyaW5nJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxyZW5kZXJpbmdc
bWF0aG1sJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxyZW5kZXJpbmdcc3R5bGUmcXVvdDs7
JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHJlbmRlcmluZ1xzdmcmcXVvdDs7JnF1b3Q7JChQcm9qZWN0
RGlyKS4uXGJpbmRpbmdzJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxiaW5kaW5nc1xnZW5l
cmljJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxiaW5kaW5nc1xqcyZxdW90OzsmcXVvdDsk
KFByb2plY3REaXIpLi5cYmluZGluZ3NcanNcc3BlY2lhbGl6YXRpb24mcXVvdDs7JnF1b3Q7JChQ
cm9qZWN0RGlyKS4uXGRvbSZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cZG9tXGRlZmF1bHQm
cXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGhpc3RvcnkmcXVvdDs7JnF1b3Q7JChQcm9qZWN0
RGlyKS4uXGh0bWwmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGh0bWxcY2FudmFzJnF1b3Q7
OyZxdW90OyQoUHJvamVjdERpcikuLlxodG1sXHBhcnNlciZxdW90OzsmcXVvdDskKFByb2plY3RE
aXIpLi5caHRtbFxzaGFkb3cmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGluc3BlY3RvciZx
dW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cbG9hZGVyJnF1b3Q7OyZxdW90OyQoUHJvamVjdERp
cikuLlxsb2FkZXJcYXBwY2FjaGUmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGxvYWRlclxh
cmNoaXZlJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxsb2FkZXJcYXJjaGl2ZVxjZiZxdW90
OzsmcXVvdDskKFByb2plY3REaXIpLi5cbG9hZGVyXGNhY2hlJnF1b3Q7OyZxdW90OyQoUHJvamVj
dERpcikuLlxsb2FkZXJcaWNvbiZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cbWF0aG1sJnF1
b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxub3RpZmljYXRpb25zJnF1b3Q7OyZxdW90OyQoUHJv
amVjdERpcikuLlxwYWdlJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwYWdlXGFuaW1hdGlv
biZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGFnZVxzY3JvbGxpbmcmcXVvdDs7JnF1b3Q7
JChQcm9qZWN0RGlyKS4uXHBhZ2Vcd2luJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0
Zm9ybSZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cYW5pbWF0aW9uJnF1b3Q7
OyZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxtb2NrJnF1b3Q7OyZxdW90OyQoUHJvamVj
dERpcikuLlxwbGF0Zm9ybVxzcWwmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3Jt
XHdpbiZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cbmV0d29yayZxdW90Ozsm
cXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cbmV0d29ya1x3aW4mcXVvdDs7JnF1b3Q7JChQ
cm9qZWN0RGlyKS4uXHBsYXRmb3JtXGNmJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0
Zm9ybVxncmFwaGljcyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cZ3JhcGhp
Y3NcY2EmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGdyYXBoaWNzXGZpbHRl
cnMmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGdyYXBoaWNzXGZpbHRlcnNc
YXJtJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxncmFwaGljc1xvcGVudHlw
ZSZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cZ3JhcGhpY3NcdHJhbnNmb3Jt
cyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cdGV4dCZxdW90OzsmcXVvdDsk
KFByb2plY3REaXIpLi5ccGxhdGZvcm1cdGV4dFx0cmFuc2NvZGVyJnF1b3Q7OyZxdW90OyQoUHJv
amVjdERpcikuLlxwbGF0Zm9ybVxncmFwaGljc1x3aW4mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGly
KS4uXHhtbCZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ceG1sXHBhcnNlciZxdW90OzsmcXVv
dDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqXFdlYkNvcmVcRGVyaXZlZFNvdXJjZXMmcXVv
dDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsdWdpbnMmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGly
KS4uXHBsdWdpbnNcd2luJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxzdmdcYW5pbWF0aW9u
JnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxzdmdcZ3JhcGhpY3MmcXVvdDs7JnF1b3Q7JChQ
cm9qZWN0RGlyKS4uXHN2Z1xwcm9wZXJ0aWVzJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxz
dmdcZ3JhcGhpY3NcZmlsdGVycyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cc3ZnJnF1b3Q7
OyZxdW90OyQoUHJvamVjdERpcikuLlx0ZXN0aW5nJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpciku
Llx3bWwmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHN0b3JhZ2UmcXVvdDs7JnF1b3Q7JChQ
cm9qZWN0RGlyKS4uXHdlYnNvY2tldHMmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHdvcmtl
cnMmcXVvdDs7JnF1b3Q7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGUmcXVvdDs7JnF1
b3Q7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVccHJpdmF0ZSZxdW90OzsmcXVvdDsk
KENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxKYXZhU2NyaXB0Q29yZSZxdW90OzsmcXVv
dDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxwcml2YXRlXEphdmFTY3JpcHRDb3Jl
JnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxGb3J3YXJkaW5nSGVhZGVycyZxdW90OzsmcXVv
dDskKFdlYktpdExpYnJhcmllc0RpcilcaW5jbHVkZSZxdW90OzsmcXVvdDskKFdlYktpdExpYnJh
cmllc0RpcilcaW5jbHVkZVxwcml2YXRlJnF1b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGly
KVxpbmNsdWRlXHByaXZhdGVcSmF2YVNjcmlwdENvcmUmcXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJy
YXJpZXNEaXIpXGluY2x1ZGVccHRocmVhZHMmcXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNE
aXIpXGluY2x1ZGVcc3FsaXRlJnF1b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxpbmNs
dWRlXEphdmFTY3JpcHRDb3JlJnF1b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxpbmNs
dWRlXHpsaWImcXVvdDsiCisJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiZxdW90OyQo
UHJvamVjdERpcikuLiZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cTW9kdWxlc1xnZW9sb2Nh
dGlvbiZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cTW9kdWxlc1x3ZWJzb2NrZXRzJnF1b3Q7
OyZxdW90OyQoUHJvamVjdERpcikuLlxhY2Nlc3NpYmlsaXR5JnF1b3Q7OyZxdW90OyQoUHJvamVj
dERpcikuLlxhY2Nlc3NpYmlsaXR5XHdpbiZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cYnJp
ZGdlJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxicmlkZ2VcYyZxdW90OzsmcXVvdDskKFBy
b2plY3REaXIpLi5cYnJpZGdlXGpzYyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cY3NzJnF1
b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxlZGl0aW5nJnF1b3Q7OyZxdW90OyQoUHJvamVjdERp
cikuLlxmaWxlYXBpJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxyZW5kZXJpbmcmcXVvdDs7
JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHJlbmRlcmluZ1xtYXRobWwmcXVvdDs7JnF1b3Q7JChQcm9q
ZWN0RGlyKS4uXHJlbmRlcmluZ1xzdHlsZSZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccmVu
ZGVyaW5nXHN2ZyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cYmluZGluZ3MmcXVvdDs7JnF1
b3Q7JChQcm9qZWN0RGlyKS4uXGJpbmRpbmdzXGdlbmVyaWMmcXVvdDs7JnF1b3Q7JChQcm9qZWN0
RGlyKS4uXGJpbmRpbmdzXGpzJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxiaW5kaW5nc1xq
c1xzcGVjaWFsaXphdGlvbiZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cZG9tJnF1b3Q7OyZx
dW90OyQoUHJvamVjdERpcikuLlxkb21cZGVmYXVsdCZxdW90OzsmcXVvdDskKFByb2plY3REaXIp
Li5caGlzdG9yeSZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5caHRtbCZxdW90OzsmcXVvdDsk
KFByb2plY3REaXIpLi5caHRtbFxjYW52YXMmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGh0
bWxccGFyc2VyJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxodG1sXHNoYWRvdyZxdW90Ozsm
cXVvdDskKFByb2plY3REaXIpLi5caW5zcGVjdG9yJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpciku
Llxsb2FkZXImcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGxvYWRlclxhcHBjYWNoZSZxdW90
OzsmcXVvdDskKFByb2plY3REaXIpLi5cbG9hZGVyXGFyY2hpdmUmcXVvdDs7JnF1b3Q7JChQcm9q
ZWN0RGlyKS4uXGxvYWRlclxhcmNoaXZlXGNmJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxs
b2FkZXJcY2FjaGUmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGxvYWRlclxpY29uJnF1b3Q7
OyZxdW90OyQoUHJvamVjdERpcikuLlxtYXRobWwmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4u
XG5vdGlmaWNhdGlvbnMmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBhZ2UmcXVvdDs7JnF1
b3Q7JChQcm9qZWN0RGlyKS4uXHBhZ2VcYW5pbWF0aW9uJnF1b3Q7OyZxdW90OyQoUHJvamVjdERp
cikuLlxwYWdlXHNjcm9sbGluZyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGFnZVx3aW4m
cXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtJnF1b3Q7OyZxdW90OyQoUHJvamVj
dERpcikuLlxwbGF0Zm9ybVxhbmltYXRpb24mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBs
YXRmb3JtXG1vY2smcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXHNxbCZxdW90
OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cd2luJnF1b3Q7OyZxdW90OyQoUHJvamVj
dERpcikuLlxwbGF0Zm9ybVxuZXR3b3JrJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0
Zm9ybVxuZXR3b3JrXHdpbiZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cY2Ym
cXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGdyYXBoaWNzJnF1b3Q7OyZxdW90
OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxncmFwaGljc1xjYSZxdW90OzsmcXVvdDskKFByb2pl
Y3REaXIpLi5ccGxhdGZvcm1cZ3JhcGhpY3NcZmlsdGVycyZxdW90OzsmcXVvdDskKFByb2plY3RE
aXIpLi5ccGxhdGZvcm1cZ3JhcGhpY3NcZmlsdGVyc1xhcm0mcXVvdDs7JnF1b3Q7JChQcm9qZWN0
RGlyKS4uXHBsYXRmb3JtXGdyYXBoaWNzXG9wZW50eXBlJnF1b3Q7OyZxdW90OyQoUHJvamVjdERp
cikuLlxwbGF0Zm9ybVxncmFwaGljc1x0cmFuc2Zvcm1zJnF1b3Q7OyZxdW90OyQoUHJvamVjdERp
cikuLlxwbGF0Zm9ybVx0ZXh0JnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVx0
ZXh0XHRyYW5zY29kZXImcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGdyYXBo
aWNzXHdpbiZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ceG1sJnF1b3Q7OyZxdW90OyQoUHJv
amVjdERpcikuLlx4bWxccGFyc2VyJnF1b3Q7OyZxdW90OyQoQ29uZmlndXJhdGlvbkJ1aWxkRGly
KVxvYmpcV2ViQ29yZVxEZXJpdmVkU291cmNlcyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5c
cGx1Z2lucyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGx1Z2luc1x3aW4mcXVvdDs7JnF1
b3Q7JChQcm9qZWN0RGlyKS4uXHN2Z1xhbmltYXRpb24mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGly
KS4uXHN2Z1xncmFwaGljcyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cc3ZnXHByb3BlcnRp
ZXMmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHN2Z1xncmFwaGljc1xmaWx0ZXJzJnF1b3Q7
OyZxdW90OyQoUHJvamVjdERpcikuLlxzdmcmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHRl
c3RpbmcmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHdtbCZxdW90OzsmcXVvdDskKFByb2pl
Y3REaXIpLi5cc3RvcmFnZSZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cd2Vic29ja2V0cyZx
dW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cd29ya2VycyZxdW90OzsmcXVvdDskKENvbmZpZ3Vy
YXRpb25CdWlsZERpcilcaW5jbHVkZSZxdW90OzsmcXVvdDskKENvbmZpZ3VyYXRpb25CdWlsZERp
cilcaW5jbHVkZVxwcml2YXRlJnF1b3Q7OyZxdW90OyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxp
bmNsdWRlXEphdmFTY3JpcHRDb3JlJnF1b3Q7OyZxdW90OyQoQ29uZmlndXJhdGlvbkJ1aWxkRGly
KVxpbmNsdWRlXHByaXZhdGVcSmF2YVNjcmlwdENvcmUmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGly
KS4uXEZvcndhcmRpbmdIZWFkZXJzJnF1b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxp
bmNsdWRlJnF1b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxpbmNsdWRlXHByaXZhdGUm
cXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXGluY2x1ZGVccHJpdmF0ZVxKYXZhU2Ny
aXB0Q29yZSZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcaW5jbHVkZVxwdGhyZWFk
cyZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcaW5jbHVkZVxzcWxpdGUmcXVvdDs7
JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXGluY2x1ZGVcSmF2YVNjcmlwdENvcmUmcXVvdDs7
JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXGluY2x1ZGVcemxpYiZxdW90OyIKIAkJUHJlcHJv
Y2Vzc29yRGVmaW5pdGlvbnM9Il9fV0lOMzJfXztESVNBQkxFXzNEX1JFTkRFUklORztXRUJDT1JF
X0NPTlRFWFRfTUVOVVMiCiAJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIyIgogCQlQcmVjb21waWxl
ZEhlYWRlclRocm91Z2g9IldlYkNvcmVQcmVmaXguaCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUudmNwcm9qL2NvcHlGb3J3YXJkaW5nSGVhZGVycy5jbWQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovY29weUZvcndhcmRpbmdIZWFkZXJzLmNtZAkocmV2
aXNpb24gMTA4OTI0KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovY29weUZvcndh
cmRpbmdIZWFkZXJzLmNtZAkod29ya2luZyBjb3B5KQpAQCAtMjAsNiArMjAsNyBAQCBta2RpciAy
Pk5VTCAiJUNPTkZJR1VSQVRJT05CVUlMRERJUiVcaW5jCiB4Y29weSAveSAvZCAiJVByb2plY3RE
aXIlLi5cY29uZmlnLmgiICIlQ09ORklHVVJBVElPTkJVSUxERElSJVxpbmNsdWRlXFdlYkNvcmUi
CiB4Y29weSAveSAvZCAiJUNPTkZJR1VSQVRJT05CVUlMRERJUiVcb2JqXFdlYkNvcmVcRGVyaXZl
ZFNvdXJjZXNcKi5oIiAiJUNPTkZJR1VSQVRJT05CVUlMRERJUiVcaW5jbHVkZVxXZWJDb3JlIgog
eGNvcHkgL3kgL2QgIiVQcm9qZWN0RGlyJS4uXE1vZHVsZXNcZ2VvbG9jYXRpb25cKi5oIiAiJUNP
TkZJR1VSQVRJT05CVUlMRERJUiVcaW5jbHVkZVxXZWJDb3JlIgoreGNvcHkgL3kgL2QgIiVQcm9q
ZWN0RGlyJS4uXE1vZHVsZXNcd2Vic29ja2V0c1wqLmgiICIlQ09ORklHVVJBVElPTkJVSUxERElS
JVxpbmNsdWRlXFdlYkNvcmUiCiB4Y29weSAveSAvZCAiJVByb2plY3REaXIlLi5cYWNjZXNzaWJp
bGl0eVwqLmgiICIlQ09ORklHVVJBVElPTkJVSUxERElSJVxpbmNsdWRlXFdlYkNvcmUiCiB4Y29w
eSAveSAvZCAiJVByb2plY3REaXIlLi5cYWNjZXNzaWJpbGl0eVx3aW5cKi5oIiAiJUNPTkZJR1VS
QVRJT05CVUlMRERJUiVcaW5jbHVkZVxXZWJDb3JlIgogeGNvcHkgL3kgL2QgIiVQcm9qZWN0RGly
JS4uXGluc3BlY3RvclwqLmgiICIlQ09ORklHVVJBVElPTkJVSUxERElSJVxpbmNsdWRlXFdlYkNv
cmUiCkBAIC03Nyw3ICs3OCw2IEBAIHhjb3B5IC95IC9kICIlUHJvamVjdERpciUuLlxzdmdcZ3Jh
cGhpY3MKIHhjb3B5IC95IC9kICIlUHJvamVjdERpciUuLlxzdmdccHJvcGVydGllc1wqLmgiICIl
Q09ORklHVVJBVElPTkJVSUxERElSJVxpbmNsdWRlXFdlYkNvcmUiCiB4Y29weSAveSAvZCAiJVBy
b2plY3REaXIlLi5cc3ZnXCouaCIgIiVDT05GSUdVUkFUSU9OQlVJTERESVIlXGluY2x1ZGVcV2Vi
Q29yZSIKIHhjb3B5IC95IC9kICIlUHJvamVjdERpciUuLlxzdG9yYWdlXCouaCIgIiVDT05GSUdV
UkFUSU9OQlVJTERESVIlXGluY2x1ZGVcV2ViQ29yZSIKLXhjb3B5IC95IC9kICIlUHJvamVjdERp
ciUuLlx3ZWJzb2NrZXRzXCouaCIgIiVDT05GSUdVUkFUSU9OQlVJTERESVIlXGluY2x1ZGVcV2Vi
Q29yZSIKIHhjb3B5IC95IC9kICIlUHJvamVjdERpciUuLlx3b3JrZXJzXCouaCIgIiVDT05GSUdV
UkFUSU9OQlVJTERESVIlXGluY2x1ZGVcV2ViQ29yZSIKIHhjb3B5IC95IC9kICIlUHJvamVjdERp
ciUuLlxGb3J3YXJkaW5nSGVhZGVyc1xiaW5kaW5nc1wqLmgiICIlQ09ORklHVVJBVElPTkJVSUxE
RElSJVxpbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnNcYmluZGluZ3MiCiB4Y29weSAv
eSAvZCAiJVByb2plY3REaXIlLi5cRm9yd2FyZGluZ0hlYWRlcnNccGFyc2VyXCouaCIgIiVDT05G
SUdVUkFUSU9OQlVJTERESVIlXGluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVyc1xwYXJz
ZXIiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCShyZXZpc2lvbiAxMDg5MjQpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTEzNjksMTQgKzEzNjks
MTEgQEAKIAkJNEExRTcxOTYxNEUxMDFGOTAwNjI2RjlEIC8qIEpTSFRNTFNoYWRvd0VsZW1lbnQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBMUU3MTk0
MTRFMTAxRjkwMDYyNkY5RCAvKiBKU0hUTUxTaGFkb3dFbGVtZW50LmggKi87IH07CiAJCTRBMUU3
MUE1MTRFMTA2QUMwMDYyNkY5RCAvKiBKU1NoYWRvd1Jvb3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEExRTcxQTMxNEUxMDZBQzAwNjI2RjlEIC8q
IEpTU2hhZG93Um9vdC5jcHAgKi87IH07CiAJCTRBMUU3MUE2MTRFMTA2QUMwMDYyNkY5RCAvKiBK
U1NoYWRvd1Jvb3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDRBMUU3MUE0MTRFMTA2QUMwMDYyNkY5RCAvKiBKU1NoYWRvd1Jvb3QuaCAqLzsgfTsKLQkJ
NEE0QTIzNDYxNEYxRTE0NDAwNDZGQkYxIC8qIFdlYlNvY2tldEZyYW1lLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QTRBMjM0NTE0RjFFMTQ0MDA0NkZC
RjEgLyogV2ViU29ja2V0RnJhbWUuaCAqLzsgfTsKIAkJNEE2RTlGQzMxM0MxN0QxRDAwNDZBN0Y4
IC8qIEZvbnRGZWF0dXJlVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNEE2RTlGQzExM0MxN0QxRDAwNDZBN0Y4IC8qIEZvbnRGZWF0dXJlVmFs
dWUuY3BwICovOyB9OwogCQk0QTZFOUZDNDEzQzE3RDFEMDA0NkE3RjggLyogRm9udEZlYXR1cmVW
YWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEE2
RTlGQzIxM0MxN0QxRDAwNDZBN0Y4IC8qIEZvbnRGZWF0dXJlVmFsdWUuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0QTZFOUZDNzEzQzE3RDU3MDA0
NkE3RjggLyogRm9udEZlYXR1cmVTZXR0aW5ncy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QTZFOUZDNTEzQzE3RDU3MDA0NkE3RjggLyogRm9udEZl
YXR1cmVTZXR0aW5ncy5jcHAgKi87IH07CiAJCTRBNkU5RkM4MTNDMTdENTcwMDQ2QTdGOCAvKiBG
b250RmVhdHVyZVNldHRpbmdzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0QTZFOUZDNjEzQzE3RDU3MDA0NkE3RjggLyogRm9udEZlYXR1cmVTZXR0aW5n
cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTRB
OEM5NkVCMEJFNjkwMzIwMDRFRUZGMCAvKiBGcmFtZVNlbGVjdGlvbk1hYy5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBOEM5NkVBMEJFNjkwMzIwMDRF
RUZGMCAvKiBGcmFtZVNlbGVjdGlvbk1hYy5tbSAqLzsgfTsKLQkJNEE5NTdGMDYxNEUyNDEyQTAw
NDlEQkZCIC8qIFdlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEE5NTdGMDMxNEUyNDExMDAwNDlEQkZC
IC8qIFdlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIuY3BwICovOyB9OwotCQk0QTk1N0YwNzE0
RTI0MTMwMDA0OURCRkIgLyogV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEE5NTdGMDQxNEUyNDExMDAw
NDlEQkZCIC8qIFdlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIuaCAqLzsgfTsKIAkJNEFCREZG
MEIxNERCRTM4NTAwNEQxMTdEIC8qIEhUTUxTaGFkb3dFbGVtZW50LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBQkRGRjA3MTREQkUzMTIwMDREMTE3
RCAvKiBIVE1MU2hhZG93RWxlbWVudC5jcHAgKi87IH07CiAJCTRBQkRGRjBDMTREQkUzODUwMDRE
MTE3RCAvKiBIVE1MU2hhZG93RWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNEFCREZGMDgxNERCRTMxMjAwNEQxMTdEIC8qIEhUTUxTaGFkb3dF
bGVtZW50LmggKi87IH07CiAJCTRBQ0JDMEJFMTI3MTNDQkQwMDk0RjlCMiAvKiBDbGFzc0xpc3Qu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEFDQkMw
QkMxMjcxM0NCRDAwOTRGOUIyIC8qIENsYXNzTGlzdC5jcHAgKi87IH07CkBAIC0xMzkwLDkgKzEz
ODcsNiBAQAogCQk0QUQwMTAwOTEyN0U2NDJBMDAxNTAzNUYgLyogSFRNTE91dHB1dEVsZW1lbnQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBRDAxMDA2
MTI3RTY0MkEwMDE1MDM1RiAvKiBIVE1MT3V0cHV0RWxlbWVudC5oICovOyB9OwogCQk0QUQwMTcz
QzEyN0U4Mjg2MDAxNTAzNUYgLyogSlNIVE1MT3V0cHV0RWxlbWVudC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QUQwMTczQTEyN0U4Mjg2MDAxNTAz
NUYgLyogSlNIVE1MT3V0cHV0RWxlbWVudC5jcHAgKi87IH07CiAJCTRBRDAxNzNEMTI3RTgyODYw
MDE1MDM1RiAvKiBKU0hUTUxPdXRwdXRFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QUQwMTczQjEyN0U4Mjg2MDAxNTAzNUYgLyogSlNIVE1M
T3V0cHV0RWxlbWVudC5oICovOyB9OwotCQk0QURFMjVGQTE0RTNCQjRDMDA0QzIyMTMgLyogV2Vi
U29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0QURFMjVGOTE0RTNCQjRDMDA0QzIyMTMgLyogV2ViU29ja2V0RXh0
ZW5zaW9uUHJvY2Vzc29yLmggKi87IH07Ci0JCTRBRTAyQUJEMTRFOEE5RDIwMEJDM0JBNyAvKiBX
ZWJTb2NrZXREZWZsYXRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0QUUwMkFCQjE0RThBOUQyMDBCQzNCQTcgLyogV2ViU29ja2V0RGVmbGF0ZXIu
Y3BwICovOyB9OwotCQk0QUUwMkFCRTE0RThBOUQyMDBCQzNCQTcgLyogV2ViU29ja2V0RGVmbGF0
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBRTAy
QUJDMTRFOEE5RDIwMEJDM0JBNyAvKiBXZWJTb2NrZXREZWZsYXRlci5oICovOyB9OwogCQk0QUYx
QUQzRTEzRkQyM0E0MDBBQTk1OTAgLyogRXZlbnREaXNwYXRjaE1lZGlhdG9yLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBRjFBRDNDMTNGRDIzQTQw
MEFBOTU5MCAvKiBFdmVudERpc3BhdGNoTWVkaWF0b3IuY3BwICovOyB9OwogCQk0QUYxQUQzRjEz
RkQyM0E0MDBBQTk1OTAgLyogRXZlbnREaXNwYXRjaE1lZGlhdG9yLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QUYxQUQzRDEzRkQyM0E0MDBBQTk1OTAg
LyogRXZlbnREaXNwYXRjaE1lZGlhdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJNEIyNzA4QzcwQUYxOUVFNDAwNjUxMjdGIC8qIFBhc3RlYm9h
cmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRCMjcw
OEM1MEFGMTlFRTQwMDY1MTI3RiAvKiBQYXN0ZWJvYXJkLmggKi87IH07CkBAIC0xNDY1LDE1ICsx
NDU5LDYgQEAKIAkJNTEwRDRBMzYxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUhhbmRs
ZUJhc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTEwRDRBMzAxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUhhbmRsZUJhc2UuY3BwICov
OyB9OwogCQk1MTBENEEzNzEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtSGFuZGxlQmFz
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwRDRB
MzExMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUhhbmRsZUJhc2UuaCAqLzsgfTsKIAkJ
NTEwRDRBMzgxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwRDRBMzIxMDMx
NjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudC5oICovOyB9OwotCQk1MTBE
NEE0RTEwMzE3N0EyMDA0OUVBNTQgLyogV2ViU29ja2V0Q2hhbm5lbC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTBENEE0NzEwMzE3N0EyMDA0OUVB
NTQgLyogV2ViU29ja2V0Q2hhbm5lbC5jcHAgKi87IH07Ci0JCTUxMEQ0QTRGMTAzMTc3QTIwMDQ5
RUE1NCAvKiBXZWJTb2NrZXRDaGFubmVsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MTBENEE0ODEwMzE3N0EyMDA0OUVBNTQgLyogV2ViU29ja2V0Q2hh
bm5lbC5oICovOyB9OwotCQk1MTBENEE1MDEwMzE3N0EyMDA0OUVBNTQgLyogV2ViU29ja2V0Q2hh
bm5lbENsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTEwRDRBNDkxMDMxNzdBMjAwNDlFQTU0IC8qIFdlYlNvY2tldENoYW5uZWxDbGllbnQuaCAq
LzsgfTsKLQkJNTEwRjA3OUIxMUZFRTlDMDAwQjhFRTQ5IC8qIFRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsQ2xpZW50V3JhcHBlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MTBGMDc4MTExRkVCRTc1MDBCOEVFNDkgLyogVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWxDbGllbnRXcmFwcGVyLmNwcCAqLzsgfTsKLQkJNTExMjI0NzIxMENGQjhDNjAw
ODA5OUQ3IC8qIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMTIyNDcxMTBDRkI4QzYwMDgwOTlENyAv
KiBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAgKi87IH07Ci0JCTUxMTIyNDc0MTBDRkI4
RDgwMDgwOTlENyAvKiBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTExMjI0NzMxMENGQjhEODAwODA5OUQ3
IC8qIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmggKi87IH07Ci0JCTUxMTIyNDc2MTBDRkI4
RTgwMDgwOTlENyAvKiBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMTIyNDc1MTBD
RkI4RTgwMDgwOTlENyAvKiBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXIu
aCAqLzsgfTsKLQkJNTExMjI0NzgxMENGQjhGNDAwODA5OUQ3IC8qIFdvcmtlclRocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxMTIyNDc3MTBDRkI4RjQwMDgwOTlENyAvKiBXb3JrZXJUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbC5jcHAgKi87IH07Ci0JCTUxMTIyNDdBMTBDRkI4RkYwMDgwOTlENyAvKiBX
b3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTExMjI0NzkxMENGQjhGRjAwODA5OUQ3IC8qIFdvcmtl
clRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmggKi87IH07CiAJCTUxMTZEOTc3MENGMTc3QkQw
MEMyQjg0RCAvKiBEYXRhYmFzZURldGFpbHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxMTZEOTc1MENGMTc3QkQwMEMyQjg0RCAvKiBEYXRhYmFzZURl
dGFpbHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk1MTFGMjMxNzBEQzE2MERBMDA0RjAwMzIgLyogU3RvcmFnZVRhc2suY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTExRjIzMTMwREMxNjBEQTAwNEYw
MDMyIC8qIFN0b3JhZ2VUYXNrLmNwcCAqLzsgfTsKIAkJNTExRjIzMTgwREMxNjBEQTAwNEYwMDMy
IC8qIFN0b3JhZ2VUYXNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MTFGMjMxNDBEQzE2MERBMDA0RjAwMzIgLyogU3RvcmFnZVRhc2suaCAqLzsgfTsK
QEAgLTE1NDQsOCArMTUyOSw2IEBACiAJCTUxODlGMDFEMTBCMzdCRDkwMEYzQzczOSAvKiBKU1Bv
cFN0YXRlRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTE4OUYwMUIxMEIzN0JEOTAwRjNDNzM5IC8qIEpTUG9wU3RhdGVFdmVudC5jcHAgKi87
IH07CiAJCTUxODlGMDFFMTBCMzdCRDkwMEYzQzczOSAvKiBKU1BvcFN0YXRlRXZlbnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxODlGMDFDMTBCMzdC
RDkwMEYzQzczOSAvKiBKU1BvcFN0YXRlRXZlbnQuaCAqLzsgfTsKIAkJNTE4OUYwREUxMEI0NkIw
RTAwRjNDNzM5IC8qIFBvcFN0YXRlRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTE4OUYwREQxMEI0NkIwRTAwRjNDNzM5IC8qIFBvcFN0YXRl
RXZlbnQuY3BwICovOyB9OwotCQk1MThBMzRDMTEwMjZDODMxMDAxQjY4OTYgLyogV2ViU29ja2V0
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxOEEz
NEJFMTAyNkM4MzEwMDFCNjg5NiAvKiBXZWJTb2NrZXQuY3BwICovOyB9OwotCQk1MThBMzRDMjEw
MjZDODMxMDAxQjY4OTYgLyogV2ViU29ja2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MThBMzRCRjEwMjZDODMxMDAxQjY4OTYgLyogV2ViU29ja2V0
LmggKi87IH07CiAJCTUxOEEzNEM5MTAyNkM4QzkwMDFCNjg5NiAvKiBKU1dlYlNvY2tldEN1c3Rv
bS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MThB
MzRDNjEwMjZDOEM5MDAxQjY4OTYgLyogSlNXZWJTb2NrZXRDdXN0b20uY3BwICovOyB9OwogCQk1
MTk2MTE2QTBDQUM1NjU3MDAxMEE4MEMgLyogRGF0YWJhc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE5NjExNUUwQ0FDNTY1NzAwMTBBODBDIC8q
IERhdGFiYXNlLmNwcCAqLzsgfTsKIAkJNTE5NjExNkIwQ0FDNTY1NzAwMTBBODBDIC8qIERhdGFi
YXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTk2
MTE1RjBDQUM1NjU3MDAxMEE4MEMgLyogRGF0YWJhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTU2OCw4ICsxNTUxLDYgQEAKIAkJNTFBQkFF
MUIxMDNDMThGRjAwOEM1MjYwIC8qIFNvY2tldFN0cmVhbUVycm9yLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUFCQUUxQTEwM0MxOEZGMDA4QzUyNjAg
LyogU29ja2V0U3RyZWFtRXJyb3IuaCAqLzsgfTsKIAkJNTFBQkFFMUUxMDNDMTkxMzAwOEM1MjYw
IC8qIFNvY2tldFN0cmVhbUhhbmRsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTFBQkFFMUMxMDNDMTkxMzAwOEM1MjYwIC8qIFNvY2tldFN0cmVhbUhh
bmRsZS5oICovOyB9OwogCQk1MUFCQUUxRjEwM0MxOTEzMDA4QzUyNjAgLyogU29ja2V0U3RyZWFt
SGFuZGxlQ0ZOZXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTFBQkFFMUQxMDNDMTkxMzAwOEM1MjYwIC8qIFNvY2tldFN0cmVhbUhhbmRsZUNGTmV0
LmNwcCAqLzsgfTsKLQkJNTFBQkFFNDQxMDQzQUI0QTAwOEM1MjYwIC8qIFdlYlNvY2tldEhhbmRz
aGFrZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MUFCQUU0MjEwNDNBQjRBMDA4QzUyNjAgLyogV2ViU29ja2V0SGFuZHNoYWtlLmNwcCAqLzsgfTsK
LQkJNTFBQkFFNDUxMDQzQUI0QTAwOEM1MjYwIC8qIFdlYlNvY2tldEhhbmRzaGFrZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFBQkFFNDMxMDQzQUI0
QTAwOEM1MjYwIC8qIFdlYlNvY2tldEhhbmRzaGFrZS5oICovOyB9OwogCQk1MUIyNDE3QjBEOTMx
RjNGMDBFODNGNUMgLyogTGVnYWN5V2ViQXJjaGl2ZU1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQjI0MTdBMEQ5MzFGM0YwMEU4M0Y1QyAvKiBM
ZWdhY3lXZWJBcmNoaXZlTWFjLm1tICovOyB9OwogCQk1MUJFMzdFMDBEQUVFMDBFMDAxMDg1RkMg
LyogU3RvcmFnZUFyZWEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxQkUzN0RFMERBRUUwMEUwMDEwODVGQyAvKiBTdG9yYWdlQXJlYS5oICovOyB9Owog
CQk1MUMwQUEzOTBGMkFBMTBBMDAxNjQ4QzIgLyogQ2FjaGVkRnJhbWUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQzBBQTM4MEYyQUExMEEwMDE2NDhD
MiAvKiBDYWNoZWRGcmFtZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CkBAIC0xNTk5LDcgKzE1ODAsNiBAQAogCQk1MUVDOTI1OTBDRTkwREI0MDBGOTAz
MDggLyogU1FMRXJyb3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxRUM5MjU3MENFOTBEQjQwMEY5MDMwOCAvKiBTUUxFcnJvci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxRUM5MjY1MENFOTBERDQw
MEY5MDMwOCAvKiBKU0N1c3RvbVNRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2suY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFFQzkyNUQwQ0U5MERENDAw
RjkwMzA4IC8qIEpTQ3VzdG9tU1FMU3RhdGVtZW50RXJyb3JDYWxsYmFjay5jcHAgKi87IH07CiAJ
CTUxRkFGRTM0MENFQ0JGMkQwMEJCM0YyNCAvKiBEYXRhYmFzZVRyYWNrZXJDbGllbnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRkFGRTMzMENFQ0JG
MkQwMEJCM0YyNCAvKiBEYXRhYmFzZVRyYWNrZXJDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk1MUZCNTRGNTExM0UzNjQyMDA4MjExNzYg
LyogQ2xvc2VFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTFGQjU0RjQxMTNFMzY0MjAwODIxMTc2IC8qIENsb3NlRXZlbnQuaCAqLzsgfTsKIAkJ
NTFGQjU1MDQxMTNFM0U5MTAwODIxMTc2IC8qIEpTQ2xvc2VFdmVudC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFGQjU1MDIxMTNFM0U5MTAwODIxMTc2
IC8qIEpTQ2xvc2VFdmVudC5oICovOyB9OwogCQk1MUZCNTUwNTExM0UzRTkxMDA4MjExNzYgLyog
SlNDbG9zZUV2ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxRkI1NTAzMTEzRTNFOTEwMDgyMTE3NiAvKiBKU0Nsb3NlRXZlbnQuY3BwICovOyB9
OwogCQk1MjFENDZGNjExQUVDOTgxMDA1MTQ2MTMgLyogS2lsbFJpbmdNYWMubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MjFENDZGNTExQUVDOTgxMDA1
MTQ2MTMgLyogS2lsbFJpbmdNYWMubW0gKi87IH07CkBAIC0xODY0LDEwICsxODQ0LDYgQEAKIAkJ
NzU4OTc4RUMxMjcwOTBENjAwNzZENUE5IC8qIFNwZWVjaElucHV0UmVzdWx0LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc1ODk3OEVBMTI3MDkwRDYw
MDc2RDVBOSAvKiBTcGVlY2hJbnB1dFJlc3VsdC5jcHAgKi87IH07CiAJCTc2MzNBNzI2MTNEOEIz
M0EwMDg1MDFCNiAvKiBMb2NhbGVUb1NjcmlwdE1hcHBpbmcuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc2MzNBNzI0MTNEOEIzM0EwMDg1MDFCNiAvKiBM
b2NhbGVUb1NjcmlwdE1hcHBpbmcuaCAqLzsgfTsKIAkJNzYzM0E3MjcxM0Q4QjMzQTAwODUwMUI2
IC8qIExvY2FsZVRvU2NyaXB0TWFwcGluZ0RlZmF1bHQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzYzM0E3MjUxM0Q4QjMzQTAwODUwMUI2IC8qIExv
Y2FsZVRvU2NyaXB0TWFwcGluZ0RlZmF1bHQuY3BwICovOyB9OwotCQk3NjM3QzU0MTExMkU3Qjc0
MDAzRDZDREMgLyogV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NjM3QzU0MDExMkU3Qjc0MDAzRDZDREMg
LyogV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdC5jcHAgKi87IH07Ci0JCTc2MzdDNTQzMTEyRTdC
N0UwMDNENkNEQyAvKiBXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NjM3QzU0MjExMkU3QjdFMDAzRDZDREMg
LyogV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdC5oICovOyB9OwotCQk3NjdGOTlCRTExQTExOTRB
MDA4MEM1MUQgLyogV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzY3Rjk5QkQxMUExMTk0QTAwODBDNTFE
IC8qIFdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlLmNwcCAqLzsgfTsKLQkJNzY3Rjk5QzAxMUEx
MTk1NjAwODBDNTFEIC8qIFdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NjdGOTlCRjExQTExOTU2MDA4MEM1
MUQgLyogV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuaCAqLzsgfTsKIAkJNzY5NDU2M0MxMjE0
RDk3QzAwMDdDQkFFIC8qIEpTRE9NVG9rZW5MaXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc2OTQ1NjNBMTIxNEQ5N0MwMDA3Q0JBRSAvKiBKU0RP
TVRva2VuTGlzdC5jcHAgKi87IH07CiAJCTc2OTQ1NjNEMTIxNEQ5N0MwMDA3Q0JBRSAvKiBKU0RP
TVRva2VuTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNzY5NDU2M0IxMjE0RDk3QzAwMDdDQkFFIC8qIEpTRE9NVG9rZW5MaXN0LmggKi87IH07CiAJ
CTc2OTQ1NjVCMTIxNERCNjMwMDA3Q0JBRSAvKiBET01ET01Ub2tlbkxpc3QuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc2OTQ1NjU5MTIxNERCNjMwMDA3
Q0JBRSAvKiBET01ET01Ub2tlbkxpc3QuaCAqLzsgfTsKQEAgLTM0NTIsNiArMzQyOCwzMCBAQAog
CQk5NzlGNDNENDEwNzVFNDRBMDAwMEY4M0IgLyogTmF2aWdhdGlvblNjaGVkdWxlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTc5RjQzRDIxMDc1RTQ0
QTAwMDBGODNCIC8qIE5hdmlnYXRpb25TY2hlZHVsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5N0FBM0NBNTE0NTIzN0NDMDAzRTFEQTYgLyog
RXZlbnRUYXJnZXRIZWFkZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5N0FBM0NBMzE0NTIzN0NDMDAzRTFEQTYgLyogRXZlbnRUYXJnZXRIZWFkZXJz
LmggKi87IH07CiAJCTk3QUEzQ0E2MTQ1MjM3Q0MwMDNFMURBNiAvKiBFdmVudFRhcmdldEludGVy
ZmFjZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3
QUEzQ0E0MTQ1MjM3Q0MwMDNFMURBNiAvKiBFdmVudFRhcmdldEludGVyZmFjZXMuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5N0FBQkQxMzE0RkEw
OUQ1MDA3NDU3QUUgLyogQ2xvc2VFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOTdBQUJDRjgxNEZBMDlENTAwNzQ1N0FFIC8qIENsb3NlRXZlbnQu
aCAqLzsgfTsKKwkJOTdBQUJEMTYxNEZBMDlENTAwNzQ1N0FFIC8qIFRocmVhZGFibGVXZWJTb2Nr
ZXRDaGFubmVsLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDk3QUFCQ0ZCMTRGQTA5RDUwMDc0NTdBRSAvKiBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bC5jcHAgKi87IH07CisJCTk3QUFCRDE3MTRGQTA5RDUwMDc0NTdBRSAvKiBUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTdBQUJDRkMxNEZBMDlENTAwNzQ1N0FFIC8qIFRocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsLmggKi87IH07CisJCTk3QUFCRDE4MTRGQTA5RDUwMDc0NTdBRSAvKiBUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTdBQUJDRkQxNEZBMDlENTAwNzQ1N0FFIC8qIFRocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlci5jcHAgKi87IH07CisJCTk3QUFCRDE5MTRG
QTA5RDUwMDc0NTdBRSAvKiBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3QUFCQ0ZF
MTRGQTA5RDUwMDc0NTdBRSAvKiBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBw
ZXIuaCAqLzsgfTsKKwkJOTdBQUJEMUExNEZBMDlENTAwNzQ1N0FFIC8qIFdlYlNvY2tldC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5N0FBQkNGRjE0
RkEwOUQ1MDA3NDU3QUUgLyogV2ViU29ja2V0LmNwcCAqLzsgfTsKKwkJOTdBQUJEMUIxNEZBMDlE
NTAwNzQ1N0FFIC8qIFdlYlNvY2tldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTdBQUJEMDAxNEZBMDlENTAwNzQ1N0FFIC8qIFdlYlNvY2tldC5oICov
OyB9OworCQk5N0FBQkQxRDE0RkEwOUQ1MDA3NDU3QUUgLyogV2ViU29ja2V0Q2hhbm5lbC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5N0FBQkQwMjE0
RkEwOUQ1MDA3NDU3QUUgLyogV2ViU29ja2V0Q2hhbm5lbC5jcHAgKi87IH07CisJCTk3QUFCRDFF
MTRGQTA5RDUwMDc0NTdBRSAvKiBXZWJTb2NrZXRDaGFubmVsLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5N0FBQkQwMzE0RkEwOUQ1MDA3NDU3QUUgLyog
V2ViU29ja2V0Q2hhbm5lbC5oICovOyB9OworCQk5N0FBQkQxRjE0RkEwOUQ1MDA3NDU3QUUgLyog
V2ViU29ja2V0Q2hhbm5lbENsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTdBQUJEMDQxNEZBMDlENTAwNzQ1N0FFIC8qIFdlYlNvY2tldENoYW5u
ZWxDbGllbnQuaCAqLzsgfTsKKwkJOTdBQUJEMjAxNEZBMDlENTAwNzQ1N0FFIC8qIFdlYlNvY2tl
dERlZmxhdGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDk3QUFCRDA1MTRGQTA5RDUwMDc0NTdBRSAvKiBXZWJTb2NrZXREZWZsYXRlci5jcHAgKi87
IH07CisJCTk3QUFCRDIxMTRGQTA5RDUwMDc0NTdBRSAvKiBXZWJTb2NrZXREZWZsYXRlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTdBQUJEMDYxNEZB
MDlENTAwNzQ1N0FFIC8qIFdlYlNvY2tldERlZmxhdGVyLmggKi87IH07CisJCTk3QUFCRDIyMTRG
QTA5RDUwMDc0NTdBRSAvKiBXZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3QUFCRDA3MTRGQTA5RDUw
MDc0NTdBRSAvKiBXZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyLmNwcCAqLzsgfTsKKwkJOTdB
QUJEMjMxNEZBMDlENTAwNzQ1N0FFIC8qIFdlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3QUFCRDA4MTRG
QTA5RDUwMDc0NTdBRSAvKiBXZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyLmggKi87IH07CisJ
CTk3QUFCRDI0MTRGQTA5RDUwMDc0NTdBRSAvKiBXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3Iu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3QUFCRDA5
MTRGQTA5RDUwMDc0NTdBRSAvKiBXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3IuaCAqLzsgfTsK
KwkJOTdBQUJEMjUxNEZBMDlENTAwNzQ1N0FFIC8qIFdlYlNvY2tldEZyYW1lLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5N0FBQkQwQTE0RkEwOUQ1MDA3
NDU3QUUgLyogV2ViU29ja2V0RnJhbWUuaCAqLzsgfTsKKwkJOTdBQUJEMjYxNEZBMDlENTAwNzQ1
N0FFIC8qIFdlYlNvY2tldEhhbmRzaGFrZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5N0FBQkQwQjE0RkEwOUQ1MDA3NDU3QUUgLyogV2ViU29ja2V0
SGFuZHNoYWtlLmNwcCAqLzsgfTsKKwkJOTdBQUJEMjcxNEZBMDlENTAwNzQ1N0FFIC8qIFdlYlNv
Y2tldEhhbmRzaGFrZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTdBQUJEMEMxNEZBMDlENTAwNzQ1N0FFIC8qIFdlYlNvY2tldEhhbmRzaGFrZS5oICov
OyB9OworCQk5N0FBQkQyODE0RkEwOUQ1MDA3NDU3QUUgLyogV2ViU29ja2V0SGFuZHNoYWtlUmVx
dWVzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
N0FBQkQwRDE0RkEwOUQ1MDA3NDU3QUUgLyogV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdC5jcHAg
Ki87IH07CisJCTk3QUFCRDI5MTRGQTA5RDUwMDc0NTdBRSAvKiBXZWJTb2NrZXRIYW5kc2hha2VS
ZXF1ZXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
N0FBQkQwRTE0RkEwOUQ1MDA3NDU3QUUgLyogV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdC5oICov
OyB9OworCQk5N0FBQkQyQTE0RkEwOUQ1MDA3NDU3QUUgLyogV2ViU29ja2V0SGFuZHNoYWtlUmVz
cG9uc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTdBQUJEMEYxNEZBMDlENTAwNzQ1N0FFIC8qIFdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlLmNw
cCAqLzsgfTsKKwkJOTdBQUJEMkIxNEZBMDlENTAwNzQ1N0FFIC8qIFdlYlNvY2tldEhhbmRzaGFr
ZVJlc3BvbnNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5N0FBQkQxMDE0RkEwOUQ1MDA3NDU3QUUgLyogV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2Uu
aCAqLzsgfTsKKwkJOTdBQUJEMkMxNEZBMDlENTAwNzQ1N0FFIC8qIFdvcmtlclRocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDk3QUFCRDExMTRGQTA5RDUwMDc0NTdBRSAvKiBXb3JrZXJUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbC5jcHAgKi87IH07CisJCTk3QUFCRDJEMTRGQTA5RDUwMDc0NTdBRSAvKiBX
b3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTdBQUJEMTIxNEZBMDlENTAwNzQ1N0FFIC8qIFdvcmtl
clRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmggKi87IH07CiAJCTk3QjFGMDJFMTNCMDI1Q0Ew
MEY1MTAzRiAvKiBTaGFyZWRCdWZmZXJDaHVua1JlYWRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzU2OUUwMDEzQUYxNzJDMDBDREJBOEUgLyog
U2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuY3BwICovOyB9OwogCQk5N0IxRjAyRjEzQjAyNUQyMDBG
NTEwM0YgLyogU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3NTY5RTAyMTNBRjE3MkMwMENEQkE4RSAvKiBTaGFy
ZWRCdWZmZXJDaHVua1JlYWRlci5oICovOyB9OwogCQk5N0JDODQ4MzEyMzZGRDkzMDAwQzYxNjEg
LyogVGV4dERvY3VtZW50UGFyc2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDk3QkM4NDgxMTIzNkZEOTMwMDBDNjE2MSAvKiBUZXh0RG9jdW1lbnRQ
YXJzZXIuY3BwICovOyB9OwpAQCAtMzUyOSw4ICszNTI5LDggQEAKIAkJQTEwQkI1OEIxNDg0RTNC
MzAwQjJFODdBIC8qIFJlbmRlclNWR1NoYXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBMTBCQjU4OTE0ODRFM0IzMDBCMkU4N0EgLyogUmVuZGVyU1ZH
U2hhcGUuaCAqLzsgfTsKIAkJQTEwREM3NkExNDc0N0JBQjAwNUUyNDcxIC8qIFN0eWxlR3JpZERh
dGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTEw
REM3NjgxNDc0N0JBQjAwNUUyNDcxIC8qIFN0eWxlR3JpZERhdGEuY3BwICovOyB9OwogCQlBMTBE
Qzc2QjE0NzQ3QkFCMDA1RTI0NzEgLyogU3R5bGVHcmlkRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTEwREM3NjkxNDc0N0JBQjAwNUUyNDcxIC8q
IFN0eWxlR3JpZERhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwotCQlBMTEwREI5RDE0RjVERjg3MDBBMDNCOTMgLyogU3R5bGVHcmlkSXRlbURhdGEu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTExMERC
OUMxNEY1REY4NzAwQTAzQjkzIC8qIFN0eWxlR3JpZEl0ZW1EYXRhLmNwcCAqLzsgfTsKIAkJQTEx
MERCOUIxNEY1REY3NzAwQTAzQjkzIC8qIFN0eWxlR3JpZEl0ZW1EYXRhLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTEwREI5QTE0RjVERjc3MDBBMDNC
OTMgLyogU3R5bGVHcmlkSXRlbURhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQlBMTEwREI5RDE0RjVERjg3MDBBMDNCOTMgLyogU3R5bGVHcmlk
SXRlbURhdGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTExMERCOUMxNEY1REY4NzAwQTAzQjkzIC8qIFN0eWxlR3JpZEl0ZW1EYXRhLmNwcCAqLzsg
fTsKIAkJQTEyMEFDQTQxM0Y5OThDQTAwRkU0QUM3IC8qIExheW91dFJlcGFpbnRlci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTIwQUNBMTEzRjk5
ODQ2MDBGRTRBQzcgLyogTGF5b3V0UmVwYWludGVyLmNwcCAqLzsgfTsKIAkJQTEyNTM4RDQxM0Y5
QjYwQTAwMDI0NzU0IC8qIExheW91dFJlcGFpbnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTEyMEFDQTAxM0Y5OTgzNzAwRkU0QUM3IC8qIExheW91
dFJlcGFpbnRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUExMzZBMDBDMTEzNERCRDIwMENDOEQ1MCAvKiBYTUxIdHRwUmVxdWVzdFByb2dyZXNz
RXZlbnRUaHJvdHRsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBMTM2QTAwQTExMzREQkQyMDBDQzhENTAgLyogWE1MSHR0cFJlcXVlc3RQcm9ncmVz
c0V2ZW50VGhyb3R0bGUuY3BwICovOyB9OwpAQCAtODI0MCwxNCArODI0MCwxMSBAQAogCQk0QTFF
NzE5NDE0RTEwMUY5MDA2MjZGOUQgLyogSlNIVE1MU2hhZG93RWxlbWVudC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU0hUTUxTaGFkb3dFbGVtZW50Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTRBMUU3MUEzMTRFMTA2QUMwMDYyNkY5RCAvKiBKU1NoYWRvd1Jv
b3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTaGFkb3dSb290
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEExRTcxQTQxNEUxMDZBQzAwNjI2
RjlEIC8qIEpTU2hhZG93Um9vdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
U1NoYWRvd1Jvb3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNEE0QTIzNDUxNEYx
RTE0NDAwNDZGQkYxIC8qIFdlYlNvY2tldEZyYW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdlYlNvY2tldEZyYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTRBNkU5RkMxMTNDMTdEMUQwMDQ2QTdGOCAvKiBGb250RmVhdHVyZVZhbHVlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZvbnRGZWF0dXJlVmFsdWUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QTZFOUZDMjEzQzE3RDFEMDA0NkE3RjggLyogRm9u
dEZlYXR1cmVWYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGb250RmVh
dHVyZVZhbHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRBNkU5RkM1MTNDMTdE
NTcwMDQ2QTdGOCAvKiBGb250RmVhdHVyZVNldHRpbmdzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEZvbnRGZWF0dXJlU2V0dGluZ3MuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0QTZFOUZDNjEzQzE3RDU3MDA0NkE3RjggLyogRm9udEZlYXR1cmVT
ZXR0aW5ncy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgZmlsZUVuY29kaW5nID0gNDsgcGF0aCA9IEZvbnRGZWF0dXJlU2V0
dGluZ3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEE4Qzk2RUEwQkU2OTAzMjAw
NEVFRkYwIC8qIEZyYW1lU2VsZWN0aW9uTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgbmFtZSA9IEZyYW1lU2VsZWN0aW9uTWFjLm1tOyBwYXRoID0gbWFjL0ZyYW1lU2Vs
ZWN0aW9uTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0QTk1N0YwMzE0RTI0
MTEwMDA0OURCRkIgLyogV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNEE5NTdGMDQxNEUyNDExMDAwNDlE
QkZCIC8qIFdlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0QUJERkYwNzE0REJFMzEyMDA0RDExN0QgLyogSFRNTFNoYWRv
d0VsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSFRNTFNo
YWRvd0VsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QUJERkYwODE0
REJFMzEyMDA0RDExN0QgLyogSFRNTFNoYWRvd0VsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSFRNTFNoYWRvd0VsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNEFCREZGMDkxNERCRTMxMjAwNEQxMTdEIC8qIEhUTUxTaGFkb3dFbGVtZW50Lmlk
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBIVE1MU2hhZG93RWxlbWVudC5pZGw7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04MjY0LDkgKzgyNjEsNiBAQAogCQk0QUQwMTAwNzEyN0U2
NDJBMDAxNTAzNUYgLyogSFRNTE91dHB1dEVsZW1lbnQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IEhUTUxPdXRwdXRFbGVtZW50LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NEFEMDE3M0ExMjdFODI4NjAwMTUwMzVGIC8qIEpTSFRNTE91dHB1dEVsZW1lbnQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNIVE1MT3V0cHV0RWxlbWVudC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRBRDAxNzNCMTI3RTgyODYwMDE1MDM1RiAv
KiBKU0hUTUxPdXRwdXRFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEpTSFRNTE91dHB1dEVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNEFE
RTI1RjkxNEUzQkI0QzAwNEMyMjEzIC8qIFdlYlNvY2tldEV4dGVuc2lvblByb2Nlc3Nvci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNz
b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNEFFMDJBQkIxNEU4QTlEMjAwQkMz
QkE3IC8qIFdlYlNvY2tldERlZmxhdGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFdlYlNvY2tldERlZmxhdGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJNEFFMDJBQkMxNEU4QTlEMjAwQkMzQkE3IC8qIFdlYlNvY2tldERlZmxhdGVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNvY2tldERlZmxhdGVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRBRjFBRDNDMTNGRDIzQTQwMEFBOTU5MCAvKiBFdmVu
dERpc3BhdGNoTWVkaWF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gRXZlbnREaXNwYXRjaE1lZGlhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNEFGMUFEM0QxM0ZEMjNBNDAwQUE5NTkwIC8qIEV2ZW50RGlzcGF0Y2hNZWRpYXRvci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFdmVudERpc3BhdGNoTWVkaWF0b3IuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEIyNzA4QzUwQUYxOUVFNDAwNjUxMjdGIC8q
IFBhc3RlYm9hcmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGFzdGVib2Fy
ZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODM0MSwxNSArODMzNSw2IEBACiAJ
CTUxMEQ0QTMwMTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1IYW5kbGVCYXNlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNvY2tldFN0cmVhbUhhbmRsZUJh
c2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTBENEEzMTEwMzE2NUVFMDA0
OUVBNTQgLyogU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTb2NrZXRTdHJlYW1IYW5kbGVCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTUxMEQ0QTMyMTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1IYW5kbGVD
bGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU29ja2V0U3RyZWFtSGFu
ZGxlQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUxMEQ0QTQ3MTAzMTc3
QTIwMDQ5RUE1NCAvKiBXZWJTb2NrZXRDaGFubmVsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFdlYlNvY2tldENoYW5uZWwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQk1MTBENEE0ODEwMzE3N0EyMDA0OUVBNTQgLyogV2ViU29ja2V0Q2hhbm5lbC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTb2NrZXRDaGFubmVsLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUxMEQ0QTQ5MTAzMTc3QTIwMDQ5RUE1NCAvKiBX
ZWJTb2NrZXRDaGFubmVsQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlYlNvY2tldENoYW5uZWxDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
NTEwRjA3ODExMUZFQkU3NTAwQjhFRTQ5IC8qIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xp
ZW50V3JhcHBlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUaHJl
YWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQk1MTEyMjQ3MTEwQ0ZCOEM2MDA4MDk5RDcgLyogVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGhy
ZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQk1MTEyMjQ3MzEwQ0ZCOEQ4MDA4MDk5RDcgLyogVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTExMjI0NzUxMENGQjhFODAw
ODA5OUQ3IC8qIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENs
aWVudFdyYXBwZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTExMjI0NzcxMENG
QjhGNDAwODA5OUQ3IC8qIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdvcmtlclRocmVhZGFibGVXZWJTb2Nr
ZXRDaGFubmVsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTExMjI0NzkxMENG
QjhGRjAwODA5OUQ3IC8qIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMTZEOTc1MENGMTc3QkQwMEMy
Qjg0RCAvKiBEYXRhYmFzZURldGFpbHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gRGF0YWJhc2VEZXRhaWxzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMUYy
MzEzMERDMTYwREEwMDRGMDAzMiAvKiBTdG9yYWdlVGFzay5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBTdG9yYWdlVGFzay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTUxMUYyMzE0MERDMTYwREEwMDRGMDAzMiAvKiBTdG9yYWdlVGFzay5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdG9yYWdlVGFzay5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtODQyMSw5ICs4NDA2LDYgQEAKIAkJNTE4OUYwMUIxMEIzN0JEOTAw
RjNDNzM5IC8qIEpTUG9wU3RhdGVFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKU1BvcFN0YXRlRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1MTg5RjAxQzEwQjM3QkQ5MDBGM0M3MzkgLyogSlNQb3BTdGF0ZUV2ZW50LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUG9wU3RhdGVFdmVudC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1MTg5RjBERDEwQjQ2QjBFMDBGM0M3MzkgLyogUG9wU3RhdGVF
dmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQb3BTdGF0ZUV2
ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTE4QTM0QkUxMDI2QzgzMTAw
MUI2ODk2IC8qIFdlYlNvY2tldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBXZWJTb2NrZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MThBMzRC
RjEwMjZDODMxMDAxQjY4OTYgLyogV2ViU29ja2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdlYlNvY2tldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MThB
MzRDMDEwMjZDODMxMDAxQjY4OTYgLyogV2ViU29ja2V0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBXZWJTb2NrZXQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MThBMzRD
NjEwMjZDOEM5MDAxQjY4OTYgLyogSlNXZWJTb2NrZXRDdXN0b20uY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNXZWJTb2NrZXRDdXN0b20uY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1MTk2MTE1RTBDQUM1NjU3MDAxMEE4MEMgLyogRGF0YWJhc2Uu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGF0YWJhc2UuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTk2MTE1RjBDQUM1NjU3MDAxMEE4MEMgLyog
RGF0YWJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGF0YWJhc2UuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTg0NTAsOCArODQzMiw2IEBACiAJCTUxQUJB
RTFBMTAzQzE4RkYwMDhDNTI2MCAvKiBTb2NrZXRTdHJlYW1FcnJvci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTb2NrZXRTdHJlYW1FcnJvci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1MUFCQUUxQzEwM0MxOTEzMDA4QzUyNjAgLyogU29ja2V0U3RyZWFtSGFu
ZGxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNvY2tldFN0cmVhbUhhbmRs
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUFCQUUxRDEwM0MxOTEzMDA4QzUy
NjAgLyogU29ja2V0U3RyZWFtSGFuZGxlQ0ZOZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gU29ja2V0U3RyZWFtSGFuZGxlQ0ZOZXQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQk1MUFCQUU0MjEwNDNBQjRBMDA4QzUyNjAgLyogV2ViU29ja2V0SGFu
ZHNoYWtlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlNvY2tl
dEhhbmRzaGFrZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUxQUJBRTQzMTA0
M0FCNEEwMDhDNTI2MCAvKiBXZWJTb2NrZXRIYW5kc2hha2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV2ViU29ja2V0SGFuZHNoYWtlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTUxQjI0MTdBMEQ5MzFGM0YwMEU4M0Y1QyAvKiBMZWdhY3lXZWJBcmNoaXZlTWFj
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTGVnYWN5V2ViQXJj
aGl2ZU1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFCRTM3REUwREFFRTAw
RTAwMTA4NUZDIC8qIFN0b3JhZ2VBcmVhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFN0b3JhZ2VBcmVhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQzBBQTM4
MEYyQUExMEEwMDE2NDhDMiAvKiBDYWNoZWRGcmFtZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBDYWNoZWRGcmFtZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
ODQ4OCw4ICs4NDY4LDYgQEAKIAkJNTFGNkEzRDUwNjYzQkYwNDAwNEQyOTE5IC8qIEhUTUxDYW52
YXNFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEhUTUxDYW52YXNFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCTUxRjZBM0Q2MDY2M0JGMDQwMDRE
MjkxOSAvKiBIVE1MQ2FudmFzRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBIVE1MQ2FudmFzRWxlbWVudC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJNTFGQUZFMzMwQ0VD
QkYyRDAwQkIzRjI0IC8qIERhdGFiYXNlVHJhY2tlckNsaWVudC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBEYXRhYmFzZVRyYWNrZXJDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJNTFGQjU0RjQxMTNFMzY0MjAwODIxMTc2IC8qIENsb3NlRXZlbnQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2xvc2VFdmVudC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQk1MUZCNTRGNjExM0UzNjU5MDA4MjExNzYgLyogQ2xvc2VFdmVu
dC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQ2xvc2VFdmVudC5pZGw7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTUxRkI1NTAyMTEzRTNFOTEwMDgyMTE3NiAvKiBKU0Nsb3NlRXZl
bnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNDbG9zZUV2ZW50Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRkI1NTAzMTEzRTNFOTEwMDgyMTE3NiAvKiBK
U0Nsb3NlRXZlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlND
bG9zZUV2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTIxRDQ2RjUxMUFF
Qzk4MTAwNTE0NjEzIC8qIEtpbGxSaW5nTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gS2lsbFJpbmdNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC04Nzc0LDEwICs4NzUyLDYgQEAKIAkJNzU4OTc4RUIxMjcwOTBENjAwNzZENUE5IC8qIFNw
ZWVjaElucHV0UmVzdWx0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNwZWVj
aElucHV0UmVzdWx0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc2MzNBNzI0MTNE
OEIzM0EwMDg1MDFCNiAvKiBMb2NhbGVUb1NjcmlwdE1hcHBpbmcuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gTG9jYWxlVG9TY3JpcHRNYXBwaW5nLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTc2MzNBNzI1MTNEOEIzM0EwMDg1MDFCNiAvKiBMb2NhbGVUb1Njcmlw
dE1hcHBpbmdEZWZhdWx0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IExvY2FsZVRvU2NyaXB0TWFwcGluZ0RlZmF1bHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQk3NjM3QzU0MDExMkU3Qjc0MDAzRDZDREMgLyogV2ViU29ja2V0SGFuZHNoYWtlUmVx
dWVzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTb2NrZXRI
YW5kc2hha2VSZXF1ZXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNzYzN0M1
NDIxMTJFN0I3RTAwM0Q2Q0RDIC8qIFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3NjdGOTlCRDExQTExOTRBMDA4MEM1MUQgLyog
V2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQk3NjdGOTlCRjExQTExOTU2MDA4MEM1MUQgLyogV2ViU29ja2V0SGFu
ZHNoYWtlUmVzcG9uc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU29j
a2V0SGFuZHNoYWtlUmVzcG9uc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzY5
NDU2M0ExMjE0RDk3QzAwMDdDQkFFIC8qIEpTRE9NVG9rZW5MaXN0LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRE9NVG9rZW5MaXN0LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNzY5NDU2M0IxMjE0RDk3QzAwMDdDQkFFIC8qIEpTRE9NVG9rZW5M
aXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRE9NVG9rZW5MaXN0Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc2OTQ1NjU5MTIxNERCNjMwMDA3Q0JBRSAv
KiBET01ET01Ub2tlbkxpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9N
RE9NVG9rZW5MaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMDMzOSw2ICsx
MDMxMywzMyBAQAogCQk5NzlGNDNEMjEwNzVFNDRBMDAwMEY4M0IgLyogTmF2aWdhdGlvblNjaGVk
dWxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOYXZpZ2F0aW9uU2NoZWR1
bGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3QUEzQ0EzMTQ1MjM3Q0MwMDNF
MURBNiAvKiBFdmVudFRhcmdldEhlYWRlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRXZlbnRUYXJnZXRIZWFkZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTk3QUEzQ0E0MTQ1MjM3Q0MwMDNFMURBNiAvKiBFdmVudFRhcmdldEludGVyZmFjZXMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXZlbnRUYXJnZXRJbnRlcmZhY2VzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk3QUFCQ0Y4MTRGQTA5RDUwMDc0NTdBRSAvKiBD
bG9zZUV2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IENsb3NlRXZlbnQu
aDsgcGF0aCA9IE1vZHVsZXMvd2Vic29ja2V0cy9DbG9zZUV2ZW50Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTk3QUFCQ0Y5MTRGQTA5RDUwMDc0NTdBRSAvKiBDbG9zZUV2ZW50Lmlk
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBDbG9zZUV2ZW50LmlkbDsgcGF0aCA9IE1vZHVsZXMv
d2Vic29ja2V0cy9DbG9zZUV2ZW50LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
OTdBQUJDRkExNEZBMDlENTAwNzQ1N0FFIC8qIERPTVdpbmRvd1dlYlNvY2tldC5pZGwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBuYW1lID0gRE9NV2luZG93V2ViU29ja2V0LmlkbDsgcGF0aCA9IE1vZHVsZXMv
d2Vic29ja2V0cy9ET01XaW5kb3dXZWJTb2NrZXQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk5N0FBQkNGQjE0RkEwOUQ1MDA3NDU3QUUgLyogVGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gVGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWwuY3BwOyBwYXRoID0gTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTdB
QUJDRkMxNEZBMDlENTAwNzQ1N0FFIC8qIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
Lmg7IHBhdGggPSBNb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTdBQUJDRkQxNEZBMDlENTAwNzQ1N0FF
IC8qIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENs
aWVudFdyYXBwZXIuY3BwOyBwYXRoID0gTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJT
b2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTk3QUFCQ0ZFMTRGQTA5RDUwMDc0NTdBRSAvKiBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bENsaWVudFdyYXBwZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gVGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyLmg7IHBhdGggPSBNb2R1bGVzL3dlYnNv
Y2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTk3QUFCQ0ZGMTRGQTA5RDUwMDc0NTdBRSAvKiBXZWJTb2Nr
ZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViU29ja2V0LmNw
cDsgcGF0aCA9IE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk5N0FBQkQwMDE0RkEwOUQ1MDA3NDU3QUUgLyogV2ViU29ja2V0Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYlNvY2tldC5oOyBwYXRoID0gTW9k
dWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk5N0FBQkQwMTE0RkEwOUQ1MDA3NDU3QUUgLyogV2ViU29ja2V0LmlkbCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IG5hbWUgPSBXZWJTb2NrZXQuaWRsOyBwYXRoID0gTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNv
Y2tldC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk3QUFCRDAyMTRGQTA5RDUw
MDc0NTdBRSAvKiBXZWJTb2NrZXRDaGFubmVsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IFdlYlNvY2tldENoYW5uZWwuY3BwOyBwYXRoID0gTW9kdWxlcy93ZWJzb2Nr
ZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5
N0FBQkQwMzE0RkEwOUQ1MDA3NDU3QUUgLyogV2ViU29ja2V0Q2hhbm5lbC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJTb2NrZXRDaGFubmVsLmg7IHBhdGggPSBNb2R1bGVz
L3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk5N0FBQkQwNDE0RkEwOUQ1MDA3NDU3QUUgLyogV2ViU29ja2V0Q2hhbm5lbENsaWVudC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJTb2NrZXRDaGFubmVsQ2xpZW50
Lmg7IHBhdGggPSBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbENsaWVudC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5N0FBQkQwNTE0RkEwOUQ1MDA3NDU3QUUgLyog
V2ViU29ja2V0RGVmbGF0ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gV2ViU29ja2V0RGVmbGF0ZXIuY3BwOyBwYXRoID0gTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNv
Y2tldERlZmxhdGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTdBQUJEMDYx
NEZBMDlENTAwNzQ1N0FFIC8qIFdlYlNvY2tldERlZmxhdGVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IFdlYlNvY2tldERlZmxhdGVyLmg7IHBhdGggPSBNb2R1bGVzL3dlYnNv
Y2tldHMvV2ViU29ja2V0RGVmbGF0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
OTdBQUJEMDcxNEZBMDlENTAwNzQ1N0FFIC8qIFdlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViU29ja2V0RXh0ZW5z
aW9uRGlzcGF0Y2hlci5jcHA7IHBhdGggPSBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RXh0
ZW5zaW9uRGlzcGF0Y2hlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk3QUFC
RDA4MTRGQTA5RDUwMDc0NTdBRSAvKiBXZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNo
ZXIuaDsgcGF0aCA9IE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRj
aGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk3QUFCRDA5MTRGQTA5RDUwMDc0
NTdBRSAvKiBXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gV2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yLmg7IHBhdGggPSBNb2R1
bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTk3QUFCRDBBMTRGQTA5RDUwMDc0NTdBRSAvKiBXZWJTb2NrZXRG
cmFtZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJTb2NrZXRGcmFtZS5o
OyBwYXRoID0gTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEZyYW1lLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTk3QUFCRDBCMTRGQTA5RDUwMDc0NTdBRSAvKiBXZWJTb2NrZXRI
YW5kc2hha2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViU29j
a2V0SGFuZHNoYWtlLmNwcDsgcGF0aCA9IE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5k
c2hha2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5N0FBQkQwQzE0RkEwOUQ1
MDA3NDU3QUUgLyogV2ViU29ja2V0SGFuZHNoYWtlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IFdlYlNvY2tldEhhbmRzaGFrZS5oOyBwYXRoID0gTW9kdWxlcy93ZWJzb2NrZXRz
L1dlYlNvY2tldEhhbmRzaGFrZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5N0FB
QkQwRDE0RkEwOUQ1MDA3NDU3QUUgLyogV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBXZWJTb2NrZXRIYW5kc2hha2VSZXF1
ZXN0LmNwcDsgcGF0aCA9IE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2VSZXF1
ZXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTdBQUJEMEUxNEZBMDlENTAw
NzQ1N0FFIC8qIFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdC5oOyBwYXRoID0gTW9kdWxl
cy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJOTdBQUJEMEYxNEZBMDlENTAwNzQ1N0FFIC8qIFdlYlNvY2tldEhhbmRz
aGFrZVJlc3BvbnNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdl
YlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlLmNwcDsgcGF0aCA9IE1vZHVsZXMvd2Vic29ja2V0cy9X
ZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTk3QUFCRDEwMTRGQTA5RDUwMDc0NTdBRSAvKiBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25z
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJTb2NrZXRIYW5kc2hha2VS
ZXNwb25zZS5oOyBwYXRoID0gTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZVJl
c3BvbnNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk3QUFCRDExMTRGQTA5RDUw
MDc0NTdBRSAvKiBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbC5jcHA7IHBhdGggPSBNb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5N0FBQkQxMjE0
RkEwOUQ1MDA3NDU3QUUgLyogV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWwuaDsgcGF0aCA9IE1vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5N0JDODQ4MTEyMzZG
RDkzMDAwQzYxNjEgLyogVGV4dERvY3VtZW50UGFyc2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IFRleHREb2N1bWVudFBhcnNlci5jcHA7IHBhdGggPSBwYXJzZXIv
VGV4dERvY3VtZW50UGFyc2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTdC
Qzg0ODIxMjM2RkQ5MzAwMEM2MTYxIC8qIFRleHREb2N1bWVudFBhcnNlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBUZXh0RG9jdW1lbnRQYXJzZXIuaDsgcGF0aCA9IHBhcnNl
ci9UZXh0RG9jdW1lbnRQYXJzZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTdC
Qzg0OUExMjM3MEE0QjAwMEM2MTYxIC8qIEhUTUxJbnB1dFN0cmVhbS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBIVE1MSW5wdXRTdHJlYW0uaDsgcGF0aCA9IHBhcnNlci9IVE1M
SW5wdXRTdHJlYW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEzNTEzLDcgKzEz
NTE0LDYgQEAKIAkJCQlCMjIyNzdDQTBEMDBCRjFFMDA3MUI3ODIgLyogc3ZnICovLAogCQkJCTQx
N0RBNENEMTM3MzQyMDQwMDdDNTdGQiAvKiB0ZXN0aW5nICovLAogCQkJCUZEMzE1RkEyMTJCMDI1
QjEwMEMxQTM1OSAvKiB3ZWJhdWRpbyAqLywKLQkJCQk1MThBMzRCRDEwMjZDODMxMDAxQjY4OTYg
Lyogd2Vic29ja2V0cyAqLywKIAkJCQkyRTQzNDYzMTBGNTQ2QTY4MDBCMEYxQkEgLyogd29ya2Vy
cyAqLywKIAkJCQlFMUYwNDI0MzA5ODM5Mzg5MDA2Njk0RUEgLyogeG1sICovLAogCQkJCTY1NjU4
MEVDMDlEMTJCMjAwMDBFNjFENyAvKiBEZXJpdmVkIFNvdXJjZXMgKi8sCkBAIC0xNDg2MCwzOSAr
MTQ4NjAsNiBAQAogCQkJdGFiV2lkdGggPSA0OwogCQkJdXNlc1RhYnMgPSAwOwogCQl9OwotCQk1
MThBMzRCRDEwMjZDODMxMDAxQjY4OTYgLyogd2Vic29ja2V0cyAqLyA9IHsKLQkJCWlzYSA9IFBC
WEdyb3VwOwotCQkJY2hpbGRyZW4gPSAoCi0JCQkJNTFGQjU0RjQxMTNFMzY0MjAwODIxMTc2IC8q
IENsb3NlRXZlbnQuaCAqLywKLQkJCQk1MUZCNTRGNjExM0UzNjU5MDA4MjExNzYgLyogQ2xvc2VF
dmVudC5pZGwgKi8sCi0JCQkJNTExMjI0NzExMENGQjhDNjAwODA5OUQ3IC8qIFRocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsLmNwcCAqLywKLQkJCQk1MTEyMjQ3MzEwQ0ZCOEQ4MDA4MDk5RDcgLyog
VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaCAqLywKLQkJCQk1MTBGMDc4MTExRkVCRTc1MDBC
OEVFNDkgLyogVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyLmNwcCAqLywK
LQkJCQk1MTEyMjQ3NTEwQ0ZCOEU4MDA4MDk5RDcgLyogVGhyZWFkYWJsZVdlYlNvY2tldENoYW5u
ZWxDbGllbnRXcmFwcGVyLmggKi8sCi0JCQkJNTE4QTM0QkUxMDI2QzgzMTAwMUI2ODk2IC8qIFdl
YlNvY2tldC5jcHAgKi8sCi0JCQkJNTE4QTM0QkYxMDI2QzgzMTAwMUI2ODk2IC8qIFdlYlNvY2tl
dC5oICovLAotCQkJCTUxOEEzNEMwMTAyNkM4MzEwMDFCNjg5NiAvKiBXZWJTb2NrZXQuaWRsICov
LAotCQkJCTUxMEQ0QTQ3MTAzMTc3QTIwMDQ5RUE1NCAvKiBXZWJTb2NrZXRDaGFubmVsLmNwcCAq
LywKLQkJCQk1MTBENEE0ODEwMzE3N0EyMDA0OUVBNTQgLyogV2ViU29ja2V0Q2hhbm5lbC5oICov
LAotCQkJCTUxMEQ0QTQ5MTAzMTc3QTIwMDQ5RUE1NCAvKiBXZWJTb2NrZXRDaGFubmVsQ2xpZW50
LmggKi8sCi0JCQkJNEFFMDJBQkIxNEU4QTlEMjAwQkMzQkE3IC8qIFdlYlNvY2tldERlZmxhdGVy
LmNwcCAqLywKLQkJCQk0QUUwMkFCQzE0RThBOUQyMDBCQzNCQTcgLyogV2ViU29ja2V0RGVmbGF0
ZXIuaCAqLywKLQkJCQk0QTk1N0YwMzE0RTI0MTEwMDA0OURCRkIgLyogV2ViU29ja2V0RXh0ZW5z
aW9uRGlzcGF0Y2hlci5jcHAgKi8sCi0JCQkJNEE5NTdGMDQxNEUyNDExMDAwNDlEQkZCIC8qIFdl
YlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIuaCAqLywKLQkJCQk0QURFMjVGOTE0RTNCQjRDMDA0
QzIyMTMgLyogV2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yLmggKi8sCi0JCQkJNEE0QTIzNDUx
NEYxRTE0NDAwNDZGQkYxIC8qIFdlYlNvY2tldEZyYW1lLmggKi8sCi0JCQkJNTFBQkFFNDIxMDQz
QUI0QTAwOEM1MjYwIC8qIFdlYlNvY2tldEhhbmRzaGFrZS5jcHAgKi8sCi0JCQkJNTFBQkFFNDMx
MDQzQUI0QTAwOEM1MjYwIC8qIFdlYlNvY2tldEhhbmRzaGFrZS5oICovLAotCQkJCTc2MzdDNTQw
MTEyRTdCNzQwMDNENkNEQyAvKiBXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0LmNwcCAqLywKLQkJ
CQk3NjM3QzU0MjExMkU3QjdFMDAzRDZDREMgLyogV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdC5o
ICovLAotCQkJCTc2N0Y5OUJEMTFBMTE5NEEwMDgwQzUxRCAvKiBXZWJTb2NrZXRIYW5kc2hha2VS
ZXNwb25zZS5jcHAgKi8sCi0JCQkJNzY3Rjk5QkYxMUExMTk1NjAwODBDNTFEIC8qIFdlYlNvY2tl
dEhhbmRzaGFrZVJlc3BvbnNlLmggKi8sCi0JCQkJNTExMjI0NzcxMENGQjhGNDAwODA5OUQ3IC8q
IFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcCAqLywKLQkJCQk1MTEyMjQ3OTEw
Q0ZCOEZGMDA4MDk5RDcgLyogV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaCAqLywK
LQkJCSk7Ci0JCQlwYXRoID0gd2Vic29ja2V0czsKLQkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
Ci0JCX07CiAJCTU5OUQxRTJGMTBDOTdENEMwMEUwRUYxMiAvKiBqc2MgKi8gPSB7CiAJCQlpc2Eg
PSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMTcxMDMsNiArMTcwNzAsNyBAQAogCQk5
NzExNDVGRTE0RUYwMDZFMDA2NzRGRDkgLyogTW9kdWxlcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdy
b3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJOTdBQUJDRjcxNEZBMDlCNTAwNzQ1N0FFIC8qIHdl
YnNvY2tldHMgKi8sCiAJCQkJOTcxMTQ1RkYxNEVGMDA3OTAwNjc0RkQ5IC8qIGdlb2xvY2F0aW9u
ICovLAogCQkJKTsKIAkJCW5hbWUgPSBNb2R1bGVzOwpAQCAtMTcyNTUsNiArMTcyMjMsNDAgQEAK
IAkJCW5hbWUgPSBmaWxlYXBpOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJ
OTdBQUJDRjcxNEZBMDlCNTAwNzQ1N0FFIC8qIHdlYnNvY2tldHMgKi8gPSB7CisJCQlpc2EgPSBQ
QlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTk3QUFCQ0Y4MTRGQTA5RDUwMDc0NTdBRSAv
KiBDbG9zZUV2ZW50LmggKi8sCisJCQkJOTdBQUJDRjkxNEZBMDlENTAwNzQ1N0FFIC8qIENsb3Nl
RXZlbnQuaWRsICovLAorCQkJCTk3QUFCQ0ZBMTRGQTA5RDUwMDc0NTdBRSAvKiBET01XaW5kb3dX
ZWJTb2NrZXQuaWRsICovLAorCQkJCTk3QUFCQ0ZCMTRGQTA5RDUwMDc0NTdBRSAvKiBUaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAgKi8sCisJCQkJOTdBQUJDRkMxNEZBMDlENTAwNzQ1N0FF
IC8qIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmggKi8sCisJCQkJOTdBQUJDRkQxNEZBMDlE
NTAwNzQ1N0FFIC8qIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlci5jcHAg
Ki8sCisJCQkJOTdBQUJDRkUxNEZBMDlENTAwNzQ1N0FFIC8qIFRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsQ2xpZW50V3JhcHBlci5oICovLAorCQkJCTk3QUFCQ0ZGMTRGQTA5RDUwMDc0NTdBRSAv
KiBXZWJTb2NrZXQuY3BwICovLAorCQkJCTk3QUFCRDAwMTRGQTA5RDUwMDc0NTdBRSAvKiBXZWJT
b2NrZXQuaCAqLywKKwkJCQk5N0FBQkQwMTE0RkEwOUQ1MDA3NDU3QUUgLyogV2ViU29ja2V0Lmlk
bCAqLywKKwkJCQk5N0FBQkQwMjE0RkEwOUQ1MDA3NDU3QUUgLyogV2ViU29ja2V0Q2hhbm5lbC5j
cHAgKi8sCisJCQkJOTdBQUJEMDMxNEZBMDlENTAwNzQ1N0FFIC8qIFdlYlNvY2tldENoYW5uZWwu
aCAqLywKKwkJCQk5N0FBQkQwNDE0RkEwOUQ1MDA3NDU3QUUgLyogV2ViU29ja2V0Q2hhbm5lbENs
aWVudC5oICovLAorCQkJCTk3QUFCRDA1MTRGQTA5RDUwMDc0NTdBRSAvKiBXZWJTb2NrZXREZWZs
YXRlci5jcHAgKi8sCisJCQkJOTdBQUJEMDYxNEZBMDlENTAwNzQ1N0FFIC8qIFdlYlNvY2tldERl
ZmxhdGVyLmggKi8sCisJCQkJOTdBQUJEMDcxNEZBMDlENTAwNzQ1N0FFIC8qIFdlYlNvY2tldEV4
dGVuc2lvbkRpc3BhdGNoZXIuY3BwICovLAorCQkJCTk3QUFCRDA4MTRGQTA5RDUwMDc0NTdBRSAv
KiBXZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyLmggKi8sCisJCQkJOTdBQUJEMDkxNEZBMDlE
NTAwNzQ1N0FFIC8qIFdlYlNvY2tldEV4dGVuc2lvblByb2Nlc3Nvci5oICovLAorCQkJCTk3QUFC
RDBBMTRGQTA5RDUwMDc0NTdBRSAvKiBXZWJTb2NrZXRGcmFtZS5oICovLAorCQkJCTk3QUFCRDBC
MTRGQTA5RDUwMDc0NTdBRSAvKiBXZWJTb2NrZXRIYW5kc2hha2UuY3BwICovLAorCQkJCTk3QUFC
RDBDMTRGQTA5RDUwMDc0NTdBRSAvKiBXZWJTb2NrZXRIYW5kc2hha2UuaCAqLywKKwkJCQk5N0FB
QkQwRDE0RkEwOUQ1MDA3NDU3QUUgLyogV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdC5jcHAgKi8s
CisJCQkJOTdBQUJEMEUxNEZBMDlENTAwNzQ1N0FFIC8qIFdlYlNvY2tldEhhbmRzaGFrZVJlcXVl
c3QuaCAqLywKKwkJCQk5N0FBQkQwRjE0RkEwOUQ1MDA3NDU3QUUgLyogV2ViU29ja2V0SGFuZHNo
YWtlUmVzcG9uc2UuY3BwICovLAorCQkJCTk3QUFCRDEwMTRGQTA5RDUwMDc0NTdBRSAvKiBXZWJT
b2NrZXRIYW5kc2hha2VSZXNwb25zZS5oICovLAorCQkJCTk3QUFCRDExMTRGQTA5RDUwMDc0NTdB
RSAvKiBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAgKi8sCisJCQkJOTdBQUJE
MTIxNEZBMDlENTAwNzQ1N0FFIC8qIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgg
Ki8sCisJCQkpOworCQkJbmFtZSA9IHdlYnNvY2tldHM7CisJCQlzb3VyY2VUcmVlID0gIjxncm91
cD4iOworCQl9OwogCQk5N0MxRjU1MTEyMjg1NTg4MDBFREU2MTYgLyogcGFyc2VyICovID0gewog
CQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTIxNDI2LDcgKzIxNDI4LDYg
QEAKIAkJCQk0QjhBRjRBQTBCMUNFMDJCMDA2ODc2OTAgLyogQ2xpcGJvYXJkQWNjZXNzUG9saWN5
LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NTAzMUI0MDBBNDRFRkM3MDBGOTkyRTAgLyogQ2xpcGJv
YXJkRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRjE5OUU3MDgyNDVFNTkwMDFFOUFCQyAv
KiBDbGlwYm9hcmRNYWMuaCBpbiBIZWFkZXJzICovLAotCQkJCTUxRkI1NEY1MTEzRTM2NDIwMDgy
MTE3NiAvKiBDbG9zZUV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlDMEMwNTRDQjExMThDOEU0
MDBDRTI2MzYgLyogQ29kZUdlbmVyYXRvci5wbSBpbiBIZWFkZXJzICovLAogCQkJCUJDNUVCNURG
MEU4MUI5QUIwMEIyNTk2NSAvKiBDb2xsYXBzZWRCb3JkZXJWYWx1ZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJOTNDNDQyMDAwRjgxM0FFMTAwQzFBNjM0IC8qIENvbGxlY3Rpb25UeXBlLmggaW4gSGVh
ZGVycyAqLywKQEAgLTI0MTY0LDggKzI0MTY1LDYgQEAKIAkJCQk5NzZENkM5NTEyMkI4QTNEMDAx
RkQxRjcgLyogVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEI5
MDU2MUIwRjI1NzhCRjAwOTVGRjZBIC8qIFRocmVhZGFibGVMb2FkZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBCOTA1NjFDMEYyNTc4QkYwMDk1RkY2QSAvKiBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50
LmggaW4gSGVhZGVycyAqLywKLQkJCQk1MTEyMjQ3NDEwQ0ZCOEQ4MDA4MDk5RDcgLyogVGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWwuaCBpbiBIZWFkZXJzICovLAotCQkJCTUxMTIyNDc2MTBDRkI4
RTgwMDgwOTlENyAvKiBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCTUxREY2RDdFMEI5MkExNkQwMEMyREM4NSAvKiBUaHJlYWRDaGVj
ay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTFGRjU3QTMwRjAxMjU1QjAwODkxRUJCIC8qIFRocmVh
ZEdsb2JhbERhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTE4NUJDRjI5MEYzMjc5Q0UwMDBFQTI2
MiAvKiBUaHJlYWRUaW1lcnMuaCBpbiBIZWFkZXJzICovLApAQCAtMjQyNzYsMTYgKzI0Mjc1LDYg
QEAKIAkJCQkxQ0FGMzQ4MTBBNkM0MDUyMDBBQkUwNkUgLyogV2ViU2NyaXB0T2JqZWN0LmggaW4g
SGVhZGVycyAqLywKIAkJCQkxQTU2OUQxQjBEN0UyQjgyMDA3QzM5ODMgLyogV2ViU2NyaXB0T2Jq
ZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQ0FGMzQ4MzBBNkM0MDUyMDBBQkUwNkUgLyogV2Vi
U2NyaXB0T2JqZWN0UHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTE4QTM0QzIxMDI2Qzgz
MTAwMUI2ODk2IC8qIFdlYlNvY2tldC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTEwRDRBNEYxMDMx
NzdBMjAwNDlFQTU0IC8qIFdlYlNvY2tldENoYW5uZWwuaCBpbiBIZWFkZXJzICovLAotCQkJCTUx
MEQ0QTUwMTAzMTc3QTIwMDQ5RUE1NCAvKiBXZWJTb2NrZXRDaGFubmVsQ2xpZW50LmggaW4gSGVh
ZGVycyAqLywKLQkJCQk0QUUwMkFCRTE0RThBOUQyMDBCQzNCQTcgLyogV2ViU29ja2V0RGVmbGF0
ZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTRBOTU3RjA3MTRFMjQxMzAwMDQ5REJGQiAvKiBXZWJT
b2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyLmggaW4gSGVhZGVycyAqLywKLQkJCQk0QURFMjVGQTE0
RTNCQjRDMDA0QzIyMTMgLyogV2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yLmggaW4gSGVhZGVy
cyAqLywKLQkJCQk0QTRBMjM0NjE0RjFFMTQ0MDA0NkZCRjEgLyogV2ViU29ja2V0RnJhbWUuaCBp
biBIZWFkZXJzICovLAotCQkJCTUxQUJBRTQ1MTA0M0FCNEEwMDhDNTI2MCAvKiBXZWJTb2NrZXRI
YW5kc2hha2UuaCBpbiBIZWFkZXJzICovLAotCQkJCTc2MzdDNTQzMTEyRTdCN0UwMDNENkNEQyAv
KiBXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0LmggaW4gSGVhZGVycyAqLywKLQkJCQk3NjdGOTlD
MDExQTExOTU2MDA4MEM1MUQgLyogV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGNTgwRkEzMTQ5NjkzOTEwMEZCNUJEOCAvKiBXZWJUaWxlQ2FjaGVMYXll
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDRjMzMkQwRjJCOUEyNTAwNEI2Nzk1IC8qIFdlYlRp
bGVkTGF5ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEODIwMzBBMTM5NUFCNkEwMEY5NTZDNiAv
KiBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTI0MzI0
LDcgKzI0MzEzLDYgQEAKIAkJCQkyRUE3NjgwNDBGRTcxMjY0MDBBQjlDOEEgLyogV29ya2VyU2Ny
aXB0TG9hZGVyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkyRTQzNDY1NTBGNTQ2QTgyMDBC
MEYxQkEgLyogV29ya2VyVGhyZWFkLmggaW4gSGVhZGVycyAqLywKIAkJCQkwQjkwNTZGOTBGMjY4
NUYzMDA5NUZGNkEgLyogV29ya2VyVGhyZWFkYWJsZUxvYWRlci5oIGluIEhlYWRlcnMgKi8sCi0J
CQkJNTExMjI0N0ExMENGQjhGRjAwODA5OUQ3IC8qIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzMwOUUyNDA5OUU2NDkyMDA1NkU1ODEgLyog
V3JhcENvbnRlbnRzSW5EdW1teVNwYW5Db21tYW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQk5QkFG
M0IyNDEyQzFBMzk4MDAwMTRCRjEgLyogV3JpdGluZ0RpcmVjdGlvbi5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNjU2NTgyMDIwOUQxNTA4RDAwMEU2MUQ3IC8qIFhMaW5rTmFtZXMuaCBpbiBIZWFkZXJz
ICovLApAQCAtMjQzNjcsNiArMjQzNTUsMjAgQEAKIAkJCQlFMUJFNTEyRTBDRjZDNTEyMDAyRUE5
NTkgLyogWFNMVFVuaWNvZGVTb3J0LmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzdFMkUwRjEyRjBG
QzlDMDBDMTMzNzkgLyogWFNTQXVkaXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQ1MzczNTMx
MzdCNjUxODAwMDA4RENFIC8qIFplcm9Qb2xlLmggaW4gSGVhZGVycyAqLywKKwkJCQk5N0FBQkQx
MzE0RkEwOUQ1MDA3NDU3QUUgLyogQ2xvc2VFdmVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTdB
QUJEMTcxNEZBMDlENTAwNzQ1N0FFIC8qIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmggaW4g
SGVhZGVycyAqLywKKwkJCQk5N0FBQkQxOTE0RkEwOUQ1MDA3NDU3QUUgLyogVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk5N0FBQkQx
QjE0RkEwOUQ1MDA3NDU3QUUgLyogV2ViU29ja2V0LmggaW4gSGVhZGVycyAqLywKKwkJCQk5N0FB
QkQxRTE0RkEwOUQ1MDA3NDU3QUUgLyogV2ViU29ja2V0Q2hhbm5lbC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJOTdBQUJEMUYxNEZBMDlENTAwNzQ1N0FFIC8qIFdlYlNvY2tldENoYW5uZWxDbGllbnQu
aCBpbiBIZWFkZXJzICovLAorCQkJCTk3QUFCRDIxMTRGQTA5RDUwMDc0NTdBRSAvKiBXZWJTb2Nr
ZXREZWZsYXRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTdBQUJEMjMxNEZBMDlENTAwNzQ1N0FF
IC8qIFdlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTk3
QUFCRDI0MTRGQTA5RDUwMDc0NTdBRSAvKiBXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3IuaCBp
biBIZWFkZXJzICovLAorCQkJCTk3QUFCRDI1MTRGQTA5RDUwMDc0NTdBRSAvKiBXZWJTb2NrZXRG
cmFtZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTdBQUJEMjcxNEZBMDlENTAwNzQ1N0FFIC8qIFdl
YlNvY2tldEhhbmRzaGFrZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTdBQUJEMjkxNEZBMDlENTAw
NzQ1N0FFIC8qIFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTk3QUFCRDJCMTRGQTA5RDUwMDc0NTdBRSAvKiBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZS5o
IGluIEhlYWRlcnMgKi8sCisJCQkJOTdBQUJEMkQxNEZBMDlENTAwNzQ1N0FFIC8qIFdvcmtlclRo
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5P
bmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTI3MTQ3LDggKzI3
MTQ5LDYgQEAKIAkJCQlCQ0U2NTlFOTBFQTkyRkZBMDA3RTQ1MzMgLyogVGhlbWVNYWMubW0gaW4g
U291cmNlcyAqLywKIAkJCQk5NzZENkM5NDEyMkI4QTNEMDAxRkQxRjcgLyogVGhyZWFkYWJsZUJs
b2JSZWdpc3RyeS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwQjkwNTYxRTBGMjU3RTkzMDA5NUZG
NkEgLyogVGhyZWFkYWJsZUxvYWRlci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk1MTEyMjQ3MjEw
Q0ZCOEM2MDA4MDk5RDcgLyogVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwIGluIFNvdXJj
ZXMgKi8sCi0JCQkJNTEwRjA3OUIxMUZFRTlDMDAwQjhFRTQ5IC8qIFRocmVhZGFibGVXZWJTb2Nr
ZXRDaGFubmVsQ2xpZW50V3JhcHBlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MURGNkQ4MDBC
OTJBMThFMDBDMkRDODUgLyogVGhyZWFkQ2hlY2subW0gaW4gU291cmNlcyAqLywKIAkJCQlFMUZG
NTdBNjBGMDEyNTZCMDA4OTFFQkIgLyogVGhyZWFkR2xvYmFsRGF0YS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkxODVCQ0YyODBGMzI3OUNFMDAwRUEyNjIgLyogVGhyZWFkVGltZXJzLmNwcCBpbiBT
b3VyY2VzICovLApAQCAtMjcyMzksMTMgKzI3MjM5LDYgQEAKIAkJCQkwRkNGMzMyRTBGMkI5QTI1
MDA0QjY3OTUgLyogV2ViTGF5ZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQlFMUEzMTYyRTEzNEJD
MzJEMDA3QzlBNEYgLyogV2ViTlNBdHRyaWJ1dGVkU3RyaW5nRXh0cmFzLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMUNBRjM0ODIwQTZDNDA1MjAwQUJFMDZFIC8qIFdlYlNjcmlwdE9iamVjdC5tbSBp
biBTb3VyY2VzICovLAotCQkJCTUxOEEzNEMxMTAyNkM4MzEwMDFCNjg5NiAvKiBXZWJTb2NrZXQu
Y3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNTEwRDRBNEUxMDMxNzdBMjAwNDlFQTU0IC8qIFdlYlNv
Y2tldENoYW5uZWwuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNEFFMDJBQkQxNEU4QTlEMjAwQkMz
QkE3IC8qIFdlYlNvY2tldERlZmxhdGVyLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTRBOTU3RjA2
MTRFMjQxMkEwMDQ5REJGQiAvKiBXZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyLmNwcCBpbiBT
b3VyY2VzICovLAotCQkJCTUxQUJBRTQ0MTA0M0FCNEEwMDhDNTI2MCAvKiBXZWJTb2NrZXRIYW5k
c2hha2UuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNzYzN0M1NDExMTJFN0I3NDAwM0Q2Q0RDIC8q
IFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNzY3Rjk5
QkUxMUExMTk0QTAwODBDNTFEIC8qIFdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTBGNTgwRkE0MTQ5NjkzOTEwMEZCNUJEOCAvKiBXZWJUaWxlQ2FjaGVM
YXllci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTBGQ0YzMzJDMEYyQjlBMjUwMDRCNjc5NSAvKiBX
ZWJUaWxlZExheWVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFBNzE2MUUxNDlCRjJGQTAwMTZF
QzE5IC8qIFdlYlRpbGVMYXllci5tbSBpbiBTb3VyY2VzICovLApAQCAtMjcyNzgsNyArMjcyNzEs
NiBAQAogCQkJCUE3RDZCMzRBMEY2MTEwNDUwMEI3OUZEMSAvKiBXb3JrZXJTY3JpcHRMb2FkZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkU0MzQ2NTQwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtl
clRocmVhZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwQjkwNTZGODBGMjY4NUYzMDA5NUZGNkEg
LyogV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk1MTEyMjQ3
ODEwQ0ZCOEY0MDA4MDk5RDcgLyogV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJOTMzMDlFMjMwOTlFNjQ5MjAwNTZFNTgxIC8qIFdyYXBDb250
ZW50c0luRHVtbXlTcGFuQ29tbWFuZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBODMzQzdDQzBB
MkNGMDc0MDBENTc2NjQgLyogWExpbmtOYW1lcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwMEQw
NDY0QTEzQzREMTQ1MDAzMjZGQ0MgLyogWE1MQ2hhcmFjdGVyUmVmZXJlbmNlUGFyc2VyLmNwcCBp
biBTb3VyY2VzICovLApAQCAtMjczMjAsNiArMjczMTIsMTYgQEAKIAkJCQlFMUJFNTEyRDBDRjZD
NTEyMDAyRUE5NTkgLyogWFNMVFVuaWNvZGVTb3J0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3
N0UyRTBFMTJGMEZDOUMwMEMxMzM3OSAvKiBYU1NBdWRpdG9yLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUZENTM3MzUyMTM3QjY1MTgwMDAwOERDRSAvKiBaZXJvUG9sZS5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQk5N0FBQkQxNjE0RkEwOUQ1MDA3NDU3QUUgLyogVGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWwuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJOTdBQUJEMTgxNEZBMDlENTAwNzQ1N0FFIC8q
IFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlci5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQk5N0FBQkQxQTE0RkEwOUQ1MDA3NDU3QUUgLyogV2ViU29ja2V0LmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTk3QUFCRDFEMTRGQTA5RDUwMDc0NTdBRSAvKiBXZWJTb2NrZXRDaGFubmVs
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTk3QUFCRDIwMTRGQTA5RDUwMDc0NTdBRSAvKiBXZWJT
b2NrZXREZWZsYXRlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk5N0FBQkQyMjE0RkEwOUQ1MDA3
NDU3QUUgLyogV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlci5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQk5N0FBQkQyNjE0RkEwOUQ1MDA3NDU3QUUgLyogV2ViU29ja2V0SGFuZHNoYWtlLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCTk3QUFCRDI4MTRGQTA5RDUwMDc0NTdBRSAvKiBXZWJTb2NrZXRI
YW5kc2hha2VSZXF1ZXN0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTk3QUFCRDJBMTRGQTA5RDUw
MDc0NTdBRSAvKiBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZS5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQk5N0FBQkQyQzE0RkEwOUQ1MDA3NDU3QUUgLyogV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1l
bnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS93ZWJzb2Nr
ZXRzL0Nsb3NlRXZlbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRz
L0Nsb3NlRXZlbnQuaAkocmV2aXNpb24gMTA4OTI0KQorKysgU291cmNlL1dlYkNvcmUvd2Vic29j
a2V0cy9DbG9zZUV2ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsMTA2ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRp
c3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
LSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRl
ZiBDbG9zZUV2ZW50X2gKLSNkZWZpbmUgQ2xvc2VFdmVudF9oCi0KLSNpbmNsdWRlICJFdmVudC5o
IgotI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdHJ1
Y3QgQ2xvc2VFdmVudEluaXQgOiBwdWJsaWMgRXZlbnRJbml0IHsKLSAgICBDbG9zZUV2ZW50SW5p
dCgpCi0gICAgICAgIDogd2FzQ2xlYW4oZmFsc2UpCi0gICAgICAgICwgY29kZSgwKQotICAgIHsK
LSAgICB9OwotCi0gICAgYm9vbCB3YXNDbGVhbjsKLSAgICB1bnNpZ25lZCBzaG9ydCBjb2RlOwot
ICAgIFN0cmluZyByZWFzb247Ci19OwotCi1jbGFzcyBDbG9zZUV2ZW50IDogcHVibGljIEV2ZW50
IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxDbG9zZUV2ZW50PiBjcmVhdGUoKQot
ICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDbG9zZUV2ZW50KCkpOwotICAgIH0K
LQotICAgIHN0YXRpYyBQYXNzUmVmUHRyPENsb3NlRXZlbnQ+IGNyZWF0ZShib29sIHdhc0NsZWFu
LCB1bnNpZ25lZCBzaG9ydCBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbikKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ2xvc2VFdmVudCh3YXNDbGVhbiwgY29kZSwgcmVhc29u
KSk7Ci0gICAgfQotCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8Q2xvc2VFdmVudD4gY3JlYXRlKGNv
bnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgQ2xvc2VFdmVudEluaXQmIGluaXRpYWxpemVy
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDbG9zZUV2ZW50KHR5cGUsIGlu
aXRpYWxpemVyKSk7Ci0gICAgfQotCi0gICAgYm9vbCB3YXNDbGVhbigpIGNvbnN0IHsgcmV0dXJu
IG1fd2FzQ2xlYW47IH0KLSAgICB1bnNpZ25lZCBzaG9ydCBjb2RlKCkgY29uc3QgeyByZXR1cm4g
bV9jb2RlOyB9Ci0gICAgU3RyaW5nIHJlYXNvbigpIGNvbnN0IHsgcmV0dXJuIG1fcmVhc29uOyB9
Ci0KLSAgICAvLyBFdmVudCBmdW5jdGlvbi4KLSAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgaW50ZXJmYWNlTmFtZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIGV2ZW50TmFtZXMoKS5p
bnRlcmZhY2VGb3JDbG9zZUV2ZW50OyB9Ci0KLXByaXZhdGU6Ci0gICAgQ2xvc2VFdmVudCgpCi0g
ICAgICAgIDogRXZlbnQoZXZlbnROYW1lcygpLmNsb3NlRXZlbnQsIGZhbHNlLCBmYWxzZSkKLSAg
ICAgICAgLCBtX3dhc0NsZWFuKGZhbHNlKQotICAgICAgICAsIG1fY29kZSgwKQotICAgIHsKLSAg
ICB9Ci0KLSAgICBDbG9zZUV2ZW50KGJvb2wgd2FzQ2xlYW4sIGludCBjb2RlLCBjb25zdCBTdHJp
bmcmIHJlYXNvbikKLSAgICAgICAgOiBFdmVudChldmVudE5hbWVzKCkuY2xvc2VFdmVudCwgZmFs
c2UsIGZhbHNlKQotICAgICAgICAsIG1fd2FzQ2xlYW4od2FzQ2xlYW4pCi0gICAgICAgICwgbV9j
b2RlKGNvZGUpCi0gICAgICAgICwgbV9yZWFzb24ocmVhc29uKQotICAgIHsKLSAgICB9Ci0KLSAg
ICBDbG9zZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgQ2xvc2VFdmVudElu
aXQmIGluaXRpYWxpemVyKQotICAgICAgICA6IEV2ZW50KHR5cGUsIGluaXRpYWxpemVyKQotICAg
ICAgICAsIG1fd2FzQ2xlYW4oaW5pdGlhbGl6ZXIud2FzQ2xlYW4pCi0gICAgICAgICwgbV9jb2Rl
KGluaXRpYWxpemVyLmNvZGUpCi0gICAgICAgICwgbV9yZWFzb24oaW5pdGlhbGl6ZXIucmVhc29u
KQotICAgIHsKLSAgICB9Ci0KLSAgICBib29sIG1fd2FzQ2xlYW47Ci0gICAgdW5zaWduZWQgc2hv
cnQgbV9jb2RlOwotICAgIFN0cmluZyBtX3JlYXNvbjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKLQotI2VuZGlmIC8vIENsb3NlRXZlbnRfaApJbmRleDogU291cmNlL1dlYkNvcmUvd2Vi
c29ja2V0cy9DbG9zZUV2ZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93ZWJz
b2NrZXRzL0Nsb3NlRXZlbnQuaWRsCShyZXZpc2lvbiAxMDg5MjQpCisrKyBTb3VyY2UvV2ViQ29y
ZS93ZWJzb2NrZXRzL0Nsb3NlRXZlbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQyICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgot
ICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0g
KiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotbW9kdWxlIGV2ZW50cyB7Ci0KLSAgICBpbnRlcmZhY2UgWwotICAgICAgICBKU05vU3RhdGlj
VGFibGVzLAotICAgICAgICBDb25zdHJ1Y3RvclRlbXBsYXRlPUV2ZW50Ci0gICAgXSBDbG9zZUV2
ZW50IDogRXZlbnQgewotICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgW0luaXRpYWxpemVkQnlF
dmVudENvbnN0cnVjdG9yXSBib29sZWFuIHdhc0NsZWFuOwotICAgICAgICByZWFkb25seSBhdHRy
aWJ1dGUgW0luaXRpYWxpemVkQnlFdmVudENvbnN0cnVjdG9yXSB1bnNpZ25lZCBzaG9ydCBjb2Rl
OwotICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgW0luaXRpYWxpemVkQnlFdmVudENvbnN0cnVj
dG9yXSBET01TdHJpbmcgcmVhc29uOwotICAgIH07Ci0KLX0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3dlYnNvY2tldHMvRE9NV2luZG93V2ViU29ja2V0LmlkbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS93ZWJzb2NrZXRzL0RPTVdpbmRvd1dlYlNvY2tldC5pZGwJKHJldmlzaW9uIDEwODky
NCkKKysrIFNvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvRE9NV2luZG93V2ViU29ja2V0LmlkbAko
d29ya2luZyBjb3B5KQpAQCAtMSwzOSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA2
LCAyMDA3LCAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENv
cHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5D
LiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LW1vZHVsZSB3aW5kb3cgewotCi0gICAgaW50ZXJmYWNlIFsKLSAgICAgICAgQ29uZGl0aW9uYWw9
V0VCX1NPQ0tFVFMsCi0gICAgICAgIFN1cHBsZW1lbnRhbD1ET01XaW5kb3cKLSAgICBdIERPTVdp
bmRvd1dlYlNvY2tldCB7Ci0jaWYgIWRlZmluZWQoTEFOR1VBR0VfQ1BQKSB8fCAhTEFOR1VBR0Vf
Q1BQCi0gICAgICAgIGF0dHJpYnV0ZSBDbG9zZUV2ZW50Q29uc3RydWN0b3IgQ2xvc2VFdmVudDsK
LSAgICAgICAgYXR0cmlidXRlIFtKU0N1c3RvbUdldHRlciwgVjhFbmFibGVkQXRSdW50aW1lXSBX
ZWJTb2NrZXRDb25zdHJ1Y3RvciBXZWJTb2NrZXQ7IC8vIFVzYWJsZSB3aXRoIHRoZSBuZXcgb3Bl
cmF0b3IKLSNlbmRpZgotICAgIH07Ci0KLX0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dlYnNvY2tl
dHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwCShyZXZpc2lv
biAxMDg5MjQpCisrKyBTb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2Nr
ZXRDaGFubmVsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw3NSArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDA5LCAyMDEyIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBk
aXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
Ci0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNs
dWRlICJjb25maWcuaCIKLQotI2lmIEVOQUJMRShXRUJfU09DS0VUUykKLQotI2luY2x1ZGUgIlRo
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgiCi0KLSNpbmNsdWRlICJEb2N1bWVudC5oIgotI2lu
Y2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCi0jaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5oIgotI2luY2x1ZGUgIlRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlci5o
IgotI2luY2x1ZGUgIldlYlNvY2tldENoYW5uZWwuaCIKLSNpbmNsdWRlICJXZWJTb2NrZXRDaGFu
bmVsQ2xpZW50LmgiCi0jaW5jbHVkZSAiV29ya2VyQ29udGV4dC5oIgotI2luY2x1ZGUgIldvcmtl
clJ1bkxvb3AuaCIKLSNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIKLSNpbmNsdWRlICJXb3JrZXJU
aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oIgotCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIu
aD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdGF0aWMgY29uc3QgY2hhciB3ZWJTb2NrZXRD
aGFubmVsTW9kZVtdID0gIndlYlNvY2tldENoYW5uZWxNb2RlIjsKLQotUGFzc1JlZlB0cjxUaHJl
YWRhYmxlV2ViU29ja2V0Q2hhbm5lbD4gVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OmNyZWF0
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBXZWJTb2NrZXRDaGFubmVsQ2xpZW50
KiBjbGllbnQpCi17Ci0gICAgQVNTRVJUKGNvbnRleHQpOwotICAgIEFTU0VSVChjbGllbnQpOwot
Ci0jaWYgRU5BQkxFKFdPUktFUlMpCi0gICAgaWYgKGNvbnRleHQtPmlzV29ya2VyQ29udGV4dCgp
KSB7Ci0gICAgICAgIFdvcmtlckNvbnRleHQqIHdvcmtlckNvbnRleHQgPSBzdGF0aWNfY2FzdDxX
b3JrZXJDb250ZXh0Kj4oY29udGV4dCk7Ci0gICAgICAgIFdvcmtlclJ1bkxvb3AmIHJ1bkxvb3Ag
PSB3b3JrZXJDb250ZXh0LT50aHJlYWQoKS0+cnVuTG9vcCgpOwotICAgICAgICBTdHJpbmcgbW9k
ZSA9IHdlYlNvY2tldENoYW5uZWxNb2RlOwotICAgICAgICBtb2RlLmFwcGVuZChTdHJpbmc6Om51
bWJlcihydW5Mb29wLmNyZWF0ZVVuaXF1ZUlkKCkpKTsKLSAgICAgICAgcmV0dXJuIFdvcmtlclRo
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpjcmVhdGUod29ya2VyQ29udGV4dCwgY2xpZW50LCBt
b2RlKTsKLSAgICB9Ci0jZW5kaWYgLy8gRU5BQkxFKFdPUktFUlMpCi0KLSAgICBBU1NFUlQoY29u
dGV4dC0+aXNEb2N1bWVudCgpKTsKLSAgICByZXR1cm4gV2ViU29ja2V0Q2hhbm5lbDo6Y3JlYXRl
KHN0YXRpY19jYXN0PERvY3VtZW50Kj4oY29udGV4dCksIGNsaWVudCk7Ci19Ci0KLX0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJfU09DS0VUUykKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsLmgJKHJldmlzaW9uIDEwODkyNCkKKysrIFNvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMv
VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaAkod29ya2luZyBjb3B5KQpAQCAtMSw4MiArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoK
LSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAot
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNpZm5kZWYgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxfaAotI2RlZmluZSBUaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbF9oCi0KLSNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCi0KLSNpbmNs
dWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgotI2luY2x1
ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgQmxv
YjsKLWNsYXNzIEtVUkw7Ci1jbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwotY2xhc3MgV2Vi
U29ja2V0Q2hhbm5lbENsaWVudDsKLQotY2xhc3MgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwg
ewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsKTsK
LXB1YmxpYzoKLSAgICBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbCgpIHsgfQotICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsPiBjcmVhdGUoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIFdlYlNvY2tldENoYW5uZWxDbGllbnQqKTsKLQotICAgIHZpcnR1YWwg
Ym9vbCB1c2VIaXhpZTc2UHJvdG9jb2woKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGNvbm5lY3Qo
Y29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpID0gMDsKLSAgICB2aXJ0dWFsIFN0
cmluZyBzdWJwcm90b2NvbCgpID0gMDsgLy8gV2lsbCBiZSBhdmFpbGFibGUgYWZ0ZXIgZGlkQ29u
bmVjdCgpIGNhbGxiYWNrIGlzIGludm9rZWQuCi0gICAgdmlydHVhbCBTdHJpbmcgZXh0ZW5zaW9u
cygpID0gMDsgLy8gV2lsbCBiZSBhdmFpbGFibGUgYWZ0ZXIgZGlkQ29ubmVjdCgpIGNhbGxiYWNr
IGlzIGludm9rZWQuCi0gICAgdmlydHVhbCBib29sIHNlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdl
KSA9IDA7Ci0gICAgdmlydHVhbCBib29sIHNlbmQoY29uc3QgQXJyYXlCdWZmZXImKSA9IDA7Ci0g
ICAgdmlydHVhbCBib29sIHNlbmQoY29uc3QgQmxvYiYpID0gMDsKLSAgICB2aXJ0dWFsIHVuc2ln
bmVkIGxvbmcgYnVmZmVyZWRBbW91bnQoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGNs
b3NlKGludCBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbikgPSAwOwotICAgIC8vIExvZyB0aGUg
cmVhc29uIHRleHQgYW5kIGNsb3NlIHRoZSBjb25uZWN0aW9uLiBXaWxsIGNhbGwgZGlkQ2xvc2Uo
KS4KLSAgICB2aXJ0dWFsIHZvaWQgZmFpbChjb25zdCBTdHJpbmcmIHJlYXNvbikgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCBkaXNjb25uZWN0KCkgPSAwOyAvLyBXaWxsIHN1cHByZXNzIGRpZENsb3Nl
KCkuCi0KLSAgICB2aXJ0dWFsIHZvaWQgc3VzcGVuZCgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQg
cmVzdW1lKCkgPSAwOwotCi0gICAgdm9pZCByZWYoKSB7IHJlZlRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsKCk7IH0KLSAgICB2b2lkIGRlcmVmKCkgeyBkZXJlZlRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsKCk7IH0KLQotcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgflRocmVhZGFibGVXZWJTb2Nr
ZXRDaGFubmVsKCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHJlZlRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsKCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkZXJlZlRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsKCkgPSAwOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8g
RU5BQkxFKFdFQl9TT0NLRVRTKQotCi0jZW5kaWYgLy8gVGhyZWFkYWJsZVdlYlNvY2tldENoYW5u
ZWxfaApJbmRleDogU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbENsaWVudFdyYXBwZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dl
YnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyLmNwcAkocmV2
aXNpb24gMTA4OTI0KQorKysgU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDI2MSAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0Ogot
ICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0g
KiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpICYmIEVO
QUJMRShXT1JLRVJTKQotI2luY2x1ZGUgIlRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50
V3JhcHBlci5oIgotCi0jaW5jbHVkZSAiQ3Jvc3NUaHJlYWRDb3BpZXIuaCIKLSNpbmNsdWRlICJD
cm9zc1RocmVhZFRhc2suaCIKLSNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0j
aW5jbHVkZSAiV2ViU29ja2V0Q2hhbm5lbENsaWVudC5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVm
UHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LVRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6VGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWxDbGllbnRXcmFwcGVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQs
IFdlYlNvY2tldENoYW5uZWxDbGllbnQqIGNsaWVudCkKLSAgICA6IG1fY29udGV4dChjb250ZXh0
KQotICAgICwgbV9jbGllbnQoY2xpZW50KQotICAgICwgbV9zeW5jTWV0aG9kRG9uZSh0cnVlKQot
ICAgICwgbV91c2VIaXhpZTc2UHJvdG9jb2wodHJ1ZSkKLSAgICAsIG1fc2VuZFJlcXVlc3RSZXN1
bHQoZmFsc2UpCi0gICAgLCBtX2J1ZmZlcmVkQW1vdW50KDApCi0gICAgLCBtX3N1c3BlbmRlZChm
YWxzZSkKLXsKLX0KLQotUGFzc1JlZlB0cjxUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVu
dFdyYXBwZXI+IFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6Y3JlYXRl
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFdlYlNvY2tldENoYW5uZWxDbGllbnQq
IGNsaWVudCkKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsQ2xpZW50V3JhcHBlcihjb250ZXh0LCBjbGllbnQpKTsKLX0KLQotdm9pZCBUaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmNsZWFyU3luY01ldGhvZERvbmUoKQot
ewotICAgIG1fc3luY01ldGhvZERvbmUgPSBmYWxzZTsKLX0KLQotdm9pZCBUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OnNldFN5bmNNZXRob2REb25lKCkKLXsKLSAgICBt
X3N5bmNNZXRob2REb25lID0gdHJ1ZTsKLX0KLQotYm9vbCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbENsaWVudFdyYXBwZXI6OnN5bmNNZXRob2REb25lKCkgY29uc3QKLXsKLSAgICByZXR1cm4g
bV9zeW5jTWV0aG9kRG9uZTsKLX0KLQotYm9vbCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENs
aWVudFdyYXBwZXI6OnVzZUhpeGllNzZQcm90b2NvbCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1f
dXNlSGl4aWU3NlByb3RvY29sOwotfQotCi12b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
Q2xpZW50V3JhcHBlcjo6c2V0VXNlSGl4aWU3NlByb3RvY29sKGJvb2wgdXNlSGl4aWU3NlByb3Rv
Y29sKQotewotICAgIG1fdXNlSGl4aWU3NlByb3RvY29sID0gdXNlSGl4aWU3NlByb3RvY29sOwot
fQotCi1TdHJpbmcgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpzdWJw
cm90b2NvbCgpIGNvbnN0Ci17Ci0gICAgaWYgKG1fc3VicHJvdG9jb2wuaXNFbXB0eSgpKQotICAg
ICAgICByZXR1cm4gU3RyaW5nKCIiKTsKLSAgICByZXR1cm4gU3RyaW5nKG1fc3VicHJvdG9jb2wp
OwotfQotCi12b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6c2V0
U3VicHJvdG9jb2woY29uc3QgU3RyaW5nJiBzdWJwcm90b2NvbCkKLXsKLSAgICB1bnNpZ25lZCBs
ZW5ndGggPSBzdWJwcm90b2NvbC5sZW5ndGgoKTsKLSAgICBtX3N1YnByb3RvY29sLnJlc2l6ZShs
ZW5ndGgpOwotICAgIGlmIChsZW5ndGgpCi0gICAgICAgIG1lbWNweShtX3N1YnByb3RvY29sLmRh
dGEoKSwgc3VicHJvdG9jb2wuY2hhcmFjdGVycygpLCBzaXplb2YoVUNoYXIpICogbGVuZ3RoKTsK
LX0KLQotU3RyaW5nIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZXh0
ZW5zaW9ucygpIGNvbnN0Ci17Ci0gICAgaWYgKG1fZXh0ZW5zaW9ucy5pc0VtcHR5KCkpCi0gICAg
ICAgIHJldHVybiBTdHJpbmcoIiIpOwotICAgIHJldHVybiBTdHJpbmcobV9leHRlbnNpb25zKTsK
LX0KLQotdm9pZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OnNldEV4
dGVuc2lvbnMoY29uc3QgU3RyaW5nJiBleHRlbnNpb25zKQotewotICAgIHVuc2lnbmVkIGxlbmd0
aCA9IGV4dGVuc2lvbnMubGVuZ3RoKCk7Ci0gICAgbV9leHRlbnNpb25zLnJlc2l6ZShsZW5ndGgp
OwotICAgIGlmIChsZW5ndGgpCi0gICAgICAgIG1lbWNweShtX2V4dGVuc2lvbnMuZGF0YSgpLCBl
eHRlbnNpb25zLmNoYXJhY3RlcnMoKSwgc2l6ZW9mKFVDaGFyKSAqIGxlbmd0aCk7Ci19Ci0KLWJv
b2wgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpzZW5kUmVxdWVzdFJl
c3VsdCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fc2VuZFJlcXVlc3RSZXN1bHQ7Ci19Ci0KLXZv
aWQgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpzZXRTZW5kUmVxdWVz
dFJlc3VsdChib29sIHNlbmRSZXF1ZXN0UmVzdWx0KQotewotICAgIG1fc2VuZFJlcXVlc3RSZXN1
bHQgPSBzZW5kUmVxdWVzdFJlc3VsdDsKLSAgICBtX3N5bmNNZXRob2REb25lID0gdHJ1ZTsKLX0K
LQotdW5zaWduZWQgbG9uZyBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6
OmJ1ZmZlcmVkQW1vdW50KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9idWZmZXJlZEFtb3VudDsK
LX0KLQotdm9pZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OnNldEJ1
ZmZlcmVkQW1vdW50KHVuc2lnbmVkIGxvbmcgYnVmZmVyZWRBbW91bnQpCi17Ci0gICAgbV9idWZm
ZXJlZEFtb3VudCA9IGJ1ZmZlcmVkQW1vdW50OwotICAgIG1fc3luY01ldGhvZERvbmUgPSB0cnVl
OwotfQotCi12b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6Y2xl
YXJDbGllbnQoKQotewotICAgIG1fY2xpZW50ID0gMDsKLX0KLQotdm9pZCBUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZENvbm5lY3QoKQotewotICAgIG1fcGVuZGlu
Z1Rhc2tzLmFwcGVuZChjcmVhdGVDYWxsYmFja1Rhc2soJmRpZENvbm5lY3RDYWxsYmFjaywgdGhp
cykpOwotICAgIGlmICghbV9zdXNwZW5kZWQpCi0gICAgICAgIHByb2Nlc3NQZW5kaW5nVGFza3Mo
KTsKLX0KLQotdm9pZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRp
ZFJlY2VpdmVNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKLXsKLSAgICBtX3BlbmRpbmdU
YXNrcy5hcHBlbmQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZkaWRSZWNlaXZlTWVzc2FnZUNhbGxiYWNr
LCB0aGlzLCBtZXNzYWdlKSk7Ci0gICAgaWYgKCFtX3N1c3BlbmRlZCkKLSAgICAgICAgcHJvY2Vz
c1BlbmRpbmdUYXNrcygpOwotfQotCi12b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xp
ZW50V3JhcHBlcjo6ZGlkUmVjZWl2ZUJpbmFyeURhdGEoUGFzc093blB0cjxWZWN0b3I8Y2hhcj4g
PiBiaW5hcnlEYXRhKQotewotICAgIG1fcGVuZGluZ1Rhc2tzLmFwcGVuZChjcmVhdGVDYWxsYmFj
a1Rhc2soJmRpZFJlY2VpdmVCaW5hcnlEYXRhQ2FsbGJhY2ssIHRoaXMsIGJpbmFyeURhdGEpKTsK
LSAgICBpZiAoIW1fc3VzcGVuZGVkKQotICAgICAgICBwcm9jZXNzUGVuZGluZ1Rhc2tzKCk7Ci19
Ci0KLXZvaWQgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRVcGRh
dGVCdWZmZXJlZEFtb3VudCh1bnNpZ25lZCBsb25nIGJ1ZmZlcmVkQW1vdW50KQotewotICAgIG1f
cGVuZGluZ1Rhc2tzLmFwcGVuZChjcmVhdGVDYWxsYmFja1Rhc2soJmRpZFVwZGF0ZUJ1ZmZlcmVk
QW1vdW50Q2FsbGJhY2ssIHRoaXMsIGJ1ZmZlcmVkQW1vdW50KSk7Ci0gICAgaWYgKCFtX3N1c3Bl
bmRlZCkKLSAgICAgICAgcHJvY2Vzc1BlbmRpbmdUYXNrcygpOwotfQotCi12b2lkIFRocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkU3RhcnRDbG9zaW5nSGFuZHNoYWtl
KCkKLXsKLSAgICBtX3BlbmRpbmdUYXNrcy5hcHBlbmQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZkaWRT
dGFydENsb3NpbmdIYW5kc2hha2VDYWxsYmFjaywgdGhpcykpOwotICAgIGlmICghbV9zdXNwZW5k
ZWQpCi0gICAgICAgIHByb2Nlc3NQZW5kaW5nVGFza3MoKTsKLX0KLQotdm9pZCBUaHJlYWRhYmxl
V2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZENsb3NlKHVuc2lnbmVkIGxvbmcgdW5o
YW5kbGVkQnVmZmVyZWRBbW91bnQsIFdlYlNvY2tldENoYW5uZWxDbGllbnQ6OkNsb3NpbmdIYW5k
c2hha2VDb21wbGV0aW9uU3RhdHVzIGNsb3NpbmdIYW5kc2hha2VDb21wbGV0aW9uLCB1bnNpZ25l
ZCBzaG9ydCBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbikKLXsKLSAgICBtX3BlbmRpbmdUYXNr
cy5hcHBlbmQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZkaWRDbG9zZUNhbGxiYWNrLCB0aGlzLCB1bmhh
bmRsZWRCdWZmZXJlZEFtb3VudCwgY2xvc2luZ0hhbmRzaGFrZUNvbXBsZXRpb24sIGNvZGUsIHJl
YXNvbikpOwotICAgIGlmICghbV9zdXNwZW5kZWQpCi0gICAgICAgIHByb2Nlc3NQZW5kaW5nVGFz
a3MoKTsKLX0KLQotdm9pZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6
OnN1c3BlbmQoKQotewotICAgIG1fc3VzcGVuZGVkID0gdHJ1ZTsKLX0KLQotdm9pZCBUaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OnJlc3VtZSgpCi17Ci0gICAgbV9zdXNw
ZW5kZWQgPSBmYWxzZTsKLSAgICBwcm9jZXNzUGVuZGluZ1Rhc2tzKCk7Ci19Ci0KLXZvaWQgVGhy
ZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpwcm9jZXNzUGVuZGluZ1Rhc2tz
Q2FsbGJhY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxUaHJl
YWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+IHdyYXBwZXIpCi17Ci0gICAgQVNT
RVJUX1VOVVNFRChjb250ZXh0LCBjb250ZXh0LT5pc1dvcmtlckNvbnRleHQoKSk7Ci0gICAgd3Jh
cHBlci0+cHJvY2Vzc1BlbmRpbmdUYXNrcygpOwotfQotCi12b2lkIFRocmVhZGFibGVXZWJTb2Nr
ZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6cHJvY2Vzc1BlbmRpbmdUYXNrcygpCi17Ci0gICAgaWYg
KG1fc3VzcGVuZGVkKQotICAgICAgICByZXR1cm47Ci0gICAgaWYgKCFtX3N5bmNNZXRob2REb25l
KSB7Ci0gICAgICAgIC8vIFdoZW4gYSBzeW5jaHJvbm91cyBvcGVyYXRpb24gaXMgaW4gcHJvZ3Jl
c3MgKGkuZS4gdGhlIGV4ZWN1dGlvbiBzdGFjayBjb250YWlucwotICAgICAgICAvLyBXb3JrZXJU
aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6d2FpdEZvck1ldGhvZENvbXBsZXRpb24oKSksIHdl
IGNhbm5vdCBpbnZva2UgY2FsbGJhY2tzIGluIHRoaXMgcnVuIGxvb3AuCi0gICAgICAgIG1fY29u
dGV4dC0+cG9zdFRhc2soY3JlYXRlQ2FsbGJhY2tUYXNrKCZUaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbENsaWVudFdyYXBwZXI6OnByb2Nlc3NQZW5kaW5nVGFza3NDYWxsYmFjaywgdGhpcykpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIFZlY3RvcjxPd25QdHI8U2NyaXB0RXhlY3V0aW9u
Q29udGV4dDo6VGFzaz4gPiB0YXNrczsKLSAgICB0YXNrcy5zd2FwKG1fcGVuZGluZ1Rhc2tzKTsK
LSAgICBmb3IgKFZlY3RvcjxPd25QdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gPjo6
Y29uc3RfaXRlcmF0b3IgaXRlciA9IHRhc2tzLmJlZ2luKCk7IGl0ZXIgIT0gdGFza3MuZW5kKCk7
ICsraXRlcikKLSAgICAgICAgKCppdGVyKS0+cGVyZm9ybVRhc2soMCk7Ci19Ci0KLXZvaWQgVGhy
ZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRDb25uZWN0Q2FsbGJhY2so
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+IHdyYXBwZXIpCi17Ci0gICAgQVNTRVJUX1VOVVNF
RChjb250ZXh0LCAhY29udGV4dCk7Ci0gICAgaWYgKHdyYXBwZXItPm1fY2xpZW50KQotICAgICAg
ICB3cmFwcGVyLT5tX2NsaWVudC0+ZGlkQ29ubmVjdCgpOwotfQotCi12b2lkIFRocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6ZGlkUmVjZWl2ZU1lc3NhZ2VDYWxsYmFjayhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPFRocmVhZGFibGVXZWJT
b2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcj4gd3JhcHBlciwgY29uc3QgU3RyaW5nJiBtZXNzYWdl
KQotewotICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgIWNvbnRleHQpOwotICAgIGlmICh3cmFw
cGVyLT5tX2NsaWVudCkKLSAgICAgICAgd3JhcHBlci0+bV9jbGllbnQtPmRpZFJlY2VpdmVNZXNz
YWdlKG1lc3NhZ2UpOwotfQotCi12b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50
V3JhcHBlcjo6ZGlkUmVjZWl2ZUJpbmFyeURhdGFDYWxsYmFjayhTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50
V3JhcHBlcj4gd3JhcHBlciwgUGFzc093blB0cjxWZWN0b3I8Y2hhcj4gPiBiaW5hcnlEYXRhKQot
ewotICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgIWNvbnRleHQpOwotICAgIGlmICh3cmFwcGVy
LT5tX2NsaWVudCkKLSAgICAgICAgd3JhcHBlci0+bV9jbGllbnQtPmRpZFJlY2VpdmVCaW5hcnlE
YXRhKGJpbmFyeURhdGEpOwotfQotCi12b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xp
ZW50V3JhcHBlcjo6ZGlkVXBkYXRlQnVmZmVyZWRBbW91bnRDYWxsYmFjayhTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
Q2xpZW50V3JhcHBlcj4gd3JhcHBlciwgdW5zaWduZWQgbG9uZyBidWZmZXJlZEFtb3VudCkKLXsK
LSAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsICFjb250ZXh0KTsKLSAgICBpZiAod3JhcHBlci0+
bV9jbGllbnQpCi0gICAgICAgIHdyYXBwZXItPm1fY2xpZW50LT5kaWRVcGRhdGVCdWZmZXJlZEFt
b3VudChidWZmZXJlZEFtb3VudCk7Ci19Ci0KLXZvaWQgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5u
ZWxDbGllbnRXcmFwcGVyOjpkaWRTdGFydENsb3NpbmdIYW5kc2hha2VDYWxsYmFjayhTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPFRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsQ2xpZW50V3JhcHBlcj4gd3JhcHBlcikKLXsKLSAgICBBU1NFUlRfVU5VU0VEKGNvbnRl
eHQsICFjb250ZXh0KTsKLSAgICBpZiAod3JhcHBlci0+bV9jbGllbnQpCi0gICAgICAgIHdyYXBw
ZXItPm1fY2xpZW50LT5kaWRTdGFydENsb3NpbmdIYW5kc2hha2UoKTsKLX0KLQotdm9pZCBUaHJl
YWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZENsb3NlQ2FsbGJhY2soU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxUaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+IHdyYXBwZXIsIHVuc2lnbmVkIGxvbmcgdW5oYW5kbGVk
QnVmZmVyZWRBbW91bnQsIFdlYlNvY2tldENoYW5uZWxDbGllbnQ6OkNsb3NpbmdIYW5kc2hha2VD
b21wbGV0aW9uU3RhdHVzIGNsb3NpbmdIYW5kc2hha2VDb21wbGV0aW9uLCB1bnNpZ25lZCBzaG9y
dCBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbikKLXsKLSAgICBBU1NFUlRfVU5VU0VEKGNvbnRl
eHQsICFjb250ZXh0KTsKLSAgICBpZiAod3JhcHBlci0+bV9jbGllbnQpCi0gICAgICAgIHdyYXBw
ZXItPm1fY2xpZW50LT5kaWRDbG9zZSh1bmhhbmRsZWRCdWZmZXJlZEFtb3VudCwgY2xvc2luZ0hh
bmRzaGFrZUNvbXBsZXRpb24sIGNvZGUsIHJlYXNvbik7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKLQotI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1RocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVy
LmgJKHJldmlzaW9uIDEwODkyNCkKKysrIFNvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvVGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEs
MTE3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBt
ZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICog
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2lmbmRlZiBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBw
ZXJfaAotI2RlZmluZSBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXJfaAot
Ci0jaWYgRU5BQkxFKFdFQl9TT0NLRVRTKSAmJiBFTkFCTEUoV09SS0VSUykKLQotI2luY2x1ZGUg
IlBsYXRmb3JtU3RyaW5nLmgiCi0jaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgot
I2luY2x1ZGUgIldlYlNvY2tldENoYW5uZWxDbGllbnQuaCIKLSNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgotI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5o
PgotI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKLWNs
YXNzIFdlYlNvY2tldENoYW5uZWxDbGllbnQ7Ci0KLWNsYXNzIFRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsQ2xpZW50V3JhcHBlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxUaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMg
UGFzc1JlZlB0cjxUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+IGNyZWF0
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViU29ja2V0Q2hhbm5lbENsaWVudCopOwotCi0g
ICAgdm9pZCBjbGVhclN5bmNNZXRob2REb25lKCk7Ci0gICAgdm9pZCBzZXRTeW5jTWV0aG9kRG9u
ZSgpOwotICAgIGJvb2wgc3luY01ldGhvZERvbmUoKSBjb25zdDsKLQotICAgIC8vIFRoZSB2YWx1
ZSBvZiB1c2VIaXhpZTc2UHJvdG9jb2wgZmxhZyBpcyBjYWNoYWJsZTsgdGhpcyB2YWx1ZSBpcyBz
YXZlZCBhZnRlciBXZWJTb2NrZXRDaGFubmVsIChvbiB0aGUgbWFpbgotICAgIC8vIHRocmVhZCkg
aXMgY29uc3RydWN0ZWQuCi0gICAgYm9vbCB1c2VIaXhpZTc2UHJvdG9jb2woKSBjb25zdDsKLSAg
ICB2b2lkIHNldFVzZUhpeGllNzZQcm90b2NvbChib29sKTsKLQotICAgIC8vIFN1YnByb3RvY29s
IGFuZCBleHRlbnNpb25zIGFyZSBjYWNoZWQgdG9vLiBXaWxsIGJlIGF2YWlsYWJsZSB3aGVuIGRp
ZENvbm5lY3QoKSBjYWxsYmFjayBpcyBpbnZva2VkLgotICAgIFN0cmluZyBzdWJwcm90b2NvbCgp
IGNvbnN0OwotICAgIHZvaWQgc2V0U3VicHJvdG9jb2woY29uc3QgU3RyaW5nJik7Ci0gICAgU3Ry
aW5nIGV4dGVuc2lvbnMoKSBjb25zdDsKLSAgICB2b2lkIHNldEV4dGVuc2lvbnMoY29uc3QgU3Ry
aW5nJik7Ci0KLSAgICBib29sIHNlbmRSZXF1ZXN0UmVzdWx0KCkgY29uc3Q7Ci0gICAgdm9pZCBz
ZXRTZW5kUmVxdWVzdFJlc3VsdChib29sKTsKLQotICAgIHVuc2lnbmVkIGxvbmcgYnVmZmVyZWRB
bW91bnQoKSBjb25zdDsKLSAgICB2b2lkIHNldEJ1ZmZlcmVkQW1vdW50KHVuc2lnbmVkIGxvbmcp
OwotCi0gICAgdm9pZCBjbGVhckNsaWVudCgpOwotCi0gICAgdm9pZCBkaWRDb25uZWN0KCk7Ci0g
ICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwotICAgIHZv
aWQgZGlkUmVjZWl2ZUJpbmFyeURhdGEoUGFzc093blB0cjxWZWN0b3I8Y2hhcj4gPik7Ci0gICAg
dm9pZCBkaWRVcGRhdGVCdWZmZXJlZEFtb3VudCh1bnNpZ25lZCBsb25nIGJ1ZmZlcmVkQW1vdW50
KTsKLSAgICB2b2lkIGRpZFN0YXJ0Q2xvc2luZ0hhbmRzaGFrZSgpOwotICAgIHZvaWQgZGlkQ2xv
c2UodW5zaWduZWQgbG9uZyB1bmhhbmRsZWRCdWZmZXJlZEFtb3VudCwgV2ViU29ja2V0Q2hhbm5l
bENsaWVudDo6Q2xvc2luZ0hhbmRzaGFrZUNvbXBsZXRpb25TdGF0dXMsIHVuc2lnbmVkIHNob3J0
IGNvZGUsIGNvbnN0IFN0cmluZyYgcmVhc29uKTsKLQotICAgIHZvaWQgc3VzcGVuZCgpOwotICAg
IHZvaWQgcmVzdW1lKCk7Ci0KLXByaXZhdGU6Ci0gICAgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5u
ZWxDbGllbnRXcmFwcGVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJTb2NrZXRDaGFubmVs
Q2xpZW50Kik7Ci0KLSAgICB2b2lkIHByb2Nlc3NQZW5kaW5nVGFza3MoKTsKLQotICAgIHN0YXRp
YyB2b2lkIGRpZENvbm5lY3RDYWxsYmFjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1Jl
ZlB0cjxUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+KTsKLSAgICBzdGF0
aWMgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZUNhbGxiYWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBQYXNzUmVmUHRyPFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcj4sIGNv
bnN0IFN0cmluZyYgbWVzc2FnZSk7Ci0gICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZUJpbmFyeURh
dGFDYWxsYmFjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxUaHJlYWRhYmxl
V2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+LCBQYXNzT3duUHRyPFZlY3RvcjxjaGFyPiA+
KTsKLSAgICBzdGF0aWMgdm9pZCBkaWRVcGRhdGVCdWZmZXJlZEFtb3VudENhbGxiYWNrKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
Q2xpZW50V3JhcHBlcj4sIHVuc2lnbmVkIGxvbmcgYnVmZmVyZWRBbW91bnQpOwotICAgIHN0YXRp
YyB2b2lkIGRpZFN0YXJ0Q2xvc2luZ0hhbmRzaGFrZUNhbGxiYWNrKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBQYXNzUmVmUHRyPFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBl
cj4pOwotICAgIHN0YXRpYyB2b2lkIGRpZENsb3NlQ2FsbGJhY2soU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIFBhc3NSZWZQdHI8VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVy
PiwgdW5zaWduZWQgbG9uZyB1bmhhbmRsZWRCdWZmZXJlZEFtb3VudCwgV2ViU29ja2V0Q2hhbm5l
bENsaWVudDo6Q2xvc2luZ0hhbmRzaGFrZUNvbXBsZXRpb25TdGF0dXMsIHVuc2lnbmVkIHNob3J0
IGNvZGUsIGNvbnN0IFN0cmluZyYgcmVhc29uKTsKLSAgICBzdGF0aWMgdm9pZCBwcm9jZXNzUGVu
ZGluZ1Rhc2tzQ2FsbGJhY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8VGhy
ZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyPik7Ci0KLSAgICBTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBtX2NvbnRleHQ7Ci0gICAgV2ViU29ja2V0Q2hhbm5lbENsaWVudCogbV9j
bGllbnQ7Ci0gICAgYm9vbCBtX3N5bmNNZXRob2REb25lOwotICAgIGJvb2wgbV91c2VIaXhpZTc2
UHJvdG9jb2w7Ci0gICAgLy8gVGhyZWFkU2FmZVJlZkNvdW50ZWQgbXVzdCBub3QgaGF2ZSBTdHJp
bmcgbWVtYmVyIHZhcmlhYmxlcy4KLSAgICBWZWN0b3I8VUNoYXI+IG1fc3VicHJvdG9jb2w7Ci0g
ICAgVmVjdG9yPFVDaGFyPiBtX2V4dGVuc2lvbnM7Ci0gICAgYm9vbCBtX3NlbmRSZXF1ZXN0UmVz
dWx0OwotICAgIHVuc2lnbmVkIGxvbmcgbV9idWZmZXJlZEFtb3VudDsKLSAgICBib29sIG1fc3Vz
cGVuZGVkOwotICAgIFZlY3RvcjxPd25QdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4g
PiBtX3BlbmRpbmdUYXNrczsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlm
IC8vIEVOQUJMRShXRUJfU09DS0VUUykKLQotI2VuZGlmIC8vIFRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsQ2xpZW50V3JhcHBlcl9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dl
YlNvY2tldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJT
b2NrZXQuY3BwCShyZXZpc2lvbiAxMDg5MjQpCisrKyBTb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRz
L1dlYlNvY2tldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNTg1ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3Ry
aWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUg
ImNvbmZpZy5oIgotCi0jaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQotCi0jaW5jbHVkZSAiV2ViU29j
a2V0LmgiCi0KLSNpbmNsdWRlICJCbG9iLmgiCi0jaW5jbHVkZSAiQmxvYkRhdGEuaCIKLSNpbmNs
dWRlICJDbG9zZUV2ZW50LmgiCi0jaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5LmgiCi0j
aW5jbHVkZSAiRE9NV2luZG93LmgiCi0jaW5jbHVkZSAiRXZlbnQuaCIKLSNpbmNsdWRlICJFdmVu
dEV4Y2VwdGlvbi5oIgotI2luY2x1ZGUgIkV2ZW50TGlzdGVuZXIuaCIKLSNpbmNsdWRlICJFdmVu
dE5hbWVzLmgiCi0jaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgotI2luY2x1ZGUgIkxvZ2dpbmcu
aCIKLSNpbmNsdWRlICJNZXNzYWdlRXZlbnQuaCIKLSNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2su
aCIKLSNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiU2VjdXJp
dHlPcmlnaW4uaCIKLSNpbmNsdWRlICJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oIgotI2lu
Y2x1ZGUgIldlYlNvY2tldENoYW5uZWwuaCIKLSNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgotI2lu
Y2x1ZGUgPHd0Zi9Pd25QdHIuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgotI2luY2x1
ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0j
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgotCi11c2luZyBuYW1lc3BhY2Ugc3RkOwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLWNvbnN0IHNpemVfdCBtYXhSZWFzb25TaXplSW5CeXRlcyA9IDEyMzsKLQotc3RhdGljIGlu
bGluZSBib29sIGlzVmFsaWRQcm90b2NvbENoYXJhY3RlcihVQ2hhciBjaGFyYWN0ZXIpCi17Ci0g
ICAgLy8gSHliaS0xMCBzYXlzICIoU3VicHJvdG9jb2wgc3RyaW5nIG11c3QgY29uc2lzdCBvZikg
Y2hhcmFjdGVycyBpbiB0aGUgcmFuZ2UgVSswMDIxIHRvIFUrMDA3RSBub3QgaW5jbHVkaW5nCi0g
ICAgLy8gc2VwYXJhdG9yIGNoYXJhY3RlcnMgYXMgZGVmaW5lZCBpbiBbUkZDMjYxNl0uIgotICAg
IGNvbnN0IFVDaGFyIG1pbmltdW1Qcm90b2NvbENoYXJhY3RlciA9ICchJzsgLy8gVSswMDIxLgot
ICAgIGNvbnN0IFVDaGFyIG1heGltdW1Qcm90b2NvbENoYXJhY3RlciA9ICd+JzsgLy8gVSswMDdF
LgotICAgIHJldHVybiBjaGFyYWN0ZXIgPj0gbWluaW11bVByb3RvY29sQ2hhcmFjdGVyICYmIGNo
YXJhY3RlciA8PSBtYXhpbXVtUHJvdG9jb2xDaGFyYWN0ZXIKLSAgICAgICAgJiYgY2hhcmFjdGVy
ICE9ICciJyAmJiBjaGFyYWN0ZXIgIT0gJygnICYmIGNoYXJhY3RlciAhPSAnKScgJiYgY2hhcmFj
dGVyICE9ICcsJyAmJiBjaGFyYWN0ZXIgIT0gJy8nCi0gICAgICAgICYmICEoY2hhcmFjdGVyID49
ICc6JyAmJiBjaGFyYWN0ZXIgPD0gJ0AnKSAvLyBVKzAwM0EgLSBVKzAwNDAgKCc6JywgJzsnLCAn
PCcsICc9JywgJz4nLCAnPycsICdAJykuCi0gICAgICAgICYmICEoY2hhcmFjdGVyID49ICdbJyAm
JiBjaGFyYWN0ZXIgPD0gJ10nKSAvLyBVKzAwNUIgLSBVKzAwNUQgKCdbJywgJ1xcJywgJ10nKS4K
LSAgICAgICAgJiYgY2hhcmFjdGVyICE9ICd7JyAmJiBjaGFyYWN0ZXIgIT0gJ30nOwotfQotCi1z
dGF0aWMgYm9vbCBpc1ZhbGlkUHJvdG9jb2xTdHJpbmcoY29uc3QgU3RyaW5nJiBwcm90b2NvbCkK
LXsKLSAgICBpZiAocHJvdG9jb2wuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwcm90b2NvbC5sZW5ndGgoKTsgKytpKSB7Ci0gICAg
ICAgIGlmICghaXNWYWxpZFByb3RvY29sQ2hhcmFjdGVyKHByb3RvY29sW2ldKSkKLSAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXN0YXRpYyBi
b29sIGlzVmFsaWRQcm90b2NvbFN0cmluZ0hpeGllNzYoY29uc3QgU3RyaW5nJiBwcm90b2NvbCkK
LXsKLSAgICBpZiAocHJvdG9jb2wuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAg
IGlmIChwcm90b2NvbC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBjb25z
dCBVQ2hhciogY2hhcmFjdGVycyA9IHByb3RvY29sLmNoYXJhY3RlcnMoKTsKLSAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHByb3RvY29sLmxlbmd0aCgpOyBpKyspIHsKLSAgICAgICAgaWYgKGNo
YXJhY3RlcnNbaV0gPCAweDIwIHx8IGNoYXJhY3RlcnNbaV0gPiAweDdFKQotICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotc3RhdGljIFN0cmlu
ZyBlbmNvZGVQcm90b2NvbFN0cmluZyhjb25zdCBTdHJpbmcmIHByb3RvY29sKQotewotICAgIFN0
cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHByb3RvY29s
Lmxlbmd0aCgpOyBpKyspIHsKLSAgICAgICAgaWYgKHByb3RvY29sW2ldIDwgMHgyMCB8fCBwcm90
b2NvbFtpXSA+IDB4N0UpCi0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZChTdHJpbmc6OmZvcm1h
dCgiXFx1JTA0WCIsIHByb3RvY29sW2ldKSk7Ci0gICAgICAgIGVsc2UgaWYgKHByb3RvY29sW2ld
ID09IDB4NWMpCi0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiXFxcXCIpOwotICAgICAgICBl
bHNlCi0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZChwcm90b2NvbFtpXSk7Ci0gICAgfQotICAg
IHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7Ci19Ci0KLXN0YXRpYyBTdHJpbmcgam9pblN0cmlu
Z3MoY29uc3QgVmVjdG9yPFN0cmluZz4mIHN0cmluZ3MsIGNvbnN0IGNoYXIqIHNlcGFyYXRvcikK
LXsKLSAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBzdHJpbmdzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGlmIChpKQotICAgICAgICAgICAgYnVp
bGRlci5hcHBlbmQoc2VwYXJhdG9yKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoc3RyaW5nc1tp
XSk7Ci0gICAgfQotICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7Ci19Ci0KLXN0YXRpYyB1
bnNpZ25lZCBsb25nIHNhdHVyYXRlQWRkKHVuc2lnbmVkIGxvbmcgYSwgdW5zaWduZWQgbG9uZyBi
KQotewotICAgIGlmIChudW1lcmljX2xpbWl0czx1bnNpZ25lZCBsb25nPjo6bWF4KCkgLSBhIDwg
YikKLSAgICAgICAgcmV0dXJuIG51bWVyaWNfbGltaXRzPHVuc2lnbmVkIGxvbmc+OjptYXgoKTsK
LSAgICByZXR1cm4gYSArIGI7Ci19Ci0KLXN0YXRpYyBib29sIHdlYlNvY2tldHNBdmFpbGFibGUg
PSBmYWxzZTsKLQotdm9pZCBXZWJTb2NrZXQ6OnNldElzQXZhaWxhYmxlKGJvb2wgYXZhaWxhYmxl
KQotewotICAgIHdlYlNvY2tldHNBdmFpbGFibGUgPSBhdmFpbGFibGU7Ci19Ci0KLWJvb2wgV2Vi
U29ja2V0Ojppc0F2YWlsYWJsZSgpCi17Ci0gICAgcmV0dXJuIHdlYlNvY2tldHNBdmFpbGFibGU7
Ci19Ci0KLVdlYlNvY2tldDo6V2ViU29ja2V0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQpCi0gICAgOiBBY3RpdmVET01PYmplY3QoY29udGV4dCwgdGhpcykKLSAgICAsIG1fc3RhdGUo
Q09OTkVDVElORykKLSAgICAsIG1fYnVmZmVyZWRBbW91bnQoMCkKLSAgICAsIG1fYnVmZmVyZWRB
bW91bnRBZnRlckNsb3NlKDApCi0gICAgLCBtX2JpbmFyeVR5cGUoQmluYXJ5VHlwZUJsb2IpCi0g
ICAgLCBtX3VzZUhpeGllNzZQcm90b2NvbCh0cnVlKQotICAgICwgbV9zdWJwcm90b2NvbCgiIikK
LSAgICAsIG1fZXh0ZW5zaW9ucygiIikKLXsKLX0KLQotV2ViU29ja2V0Ojp+V2ViU29ja2V0KCkK
LXsKLSAgICBpZiAobV9jaGFubmVsKQotICAgICAgICBtX2NoYW5uZWwtPmRpc2Nvbm5lY3QoKTsK
LX0KLQotUGFzc1JlZlB0cjxXZWJTb2NrZXQ+IFdlYlNvY2tldDo6Y3JlYXRlKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQpCi17Ci0gICAgUmVmUHRyPFdlYlNvY2tldD4gd2ViU29ja2V0
KGFkb3B0UmVmKG5ldyBXZWJTb2NrZXQoY29udGV4dCkpKTsKLSAgICB3ZWJTb2NrZXQtPnN1c3Bl
bmRJZk5lZWRlZCgpOwotICAgIHJldHVybiB3ZWJTb2NrZXQucmVsZWFzZSgpOwotfQotCi12b2lk
IFdlYlNvY2tldDo6Y29ubmVjdChjb25zdCBTdHJpbmcmIHVybCwgRXhjZXB0aW9uQ29kZSYgZWMp
Ci17Ci0gICAgVmVjdG9yPFN0cmluZz4gcHJvdG9jb2xzOwotICAgIGNvbm5lY3QodXJsLCBwcm90
b2NvbHMsIGVjKTsKLX0KLQotdm9pZCBXZWJTb2NrZXQ6OmNvbm5lY3QoY29uc3QgU3RyaW5nJiB1
cmwsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wsIEV4Y2VwdGlvbkNvZGUmIGVjKQotewotICAgIFZl
Y3RvcjxTdHJpbmc+IHByb3RvY29sczsKLSAgICBwcm90b2NvbHMuYXBwZW5kKHByb3RvY29sKTsK
LSAgICBjb25uZWN0KHVybCwgcHJvdG9jb2xzLCBlYyk7Ci19Ci0KLXZvaWQgV2ViU29ja2V0Ojpj
b25uZWN0KGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcHJvdG9jb2xz
LCBFeGNlcHRpb25Db2RlJiBlYykKLXsKLSAgICBMT0coTmV0d29yaywgIldlYlNvY2tldCAlcCBj
b25uZWN0IHRvICVzIiwgdGhpcywgdXJsLnV0ZjgoKS5kYXRhKCkpOwotICAgIG1fdXJsID0gS1VS
TChLVVJMKCksIHVybCk7Ci0KLSAgICBpZiAoIW1fdXJsLmlzVmFsaWQoKSkgewotICAgICAgICBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmFkZENvbnNvbGVNZXNzYWdlKEpTTWVzc2FnZVNvdXJj
ZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCAiSW52YWxpZCB1cmwgZm9yIFdl
YlNvY2tldCAiICsgbV91cmwuc3RyaW5nKCksIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2Vj
dXJpdHlPcmlnaW4oKS0+dG9TdHJpbmcoKSk7Ci0gICAgICAgIG1fc3RhdGUgPSBDTE9TRUQ7Ci0g
ICAgICAgIGVjID0gU1lOVEFYX0VSUjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlm
ICghbV91cmwucHJvdG9jb2xJcygid3MiKSAmJiAhbV91cmwucHJvdG9jb2xJcygid3NzIikpIHsK
LSAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5hZGRDb25zb2xlTWVzc2FnZShKU01l
c3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgIldyb25nIHVy
bCBzY2hlbWUgZm9yIFdlYlNvY2tldCAiICsgbV91cmwuc3RyaW5nKCksIHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+dG9TdHJpbmcoKSk7Ci0gICAgICAgIG1fc3Rh
dGUgPSBDTE9TRUQ7Ci0gICAgICAgIGVjID0gU1lOVEFYX0VSUjsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLSAgICBpZiAobV91cmwuaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkpIHsKLSAgICAgICAg
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5hZGRDb25zb2xlTWVzc2FnZShKU01lc3NhZ2VTb3Vy
Y2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgIlVSTCBoYXMgZnJhZ21lbnQg
Y29tcG9uZW50ICIgKyBtX3VybC5zdHJpbmcoKSwgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5z
ZWN1cml0eU9yaWdpbigpLT50b1N0cmluZygpKTsKLSAgICAgICAgbV9zdGF0ZSA9IENMT1NFRDsK
LSAgICAgICAgZWMgPSBTWU5UQVhfRVJSOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlm
ICghcG9ydEFsbG93ZWQobV91cmwpKSB7Ci0gICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KS0+YWRkQ29uc29sZU1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJy
b3JNZXNzYWdlTGV2ZWwsICJXZWJTb2NrZXQgcG9ydCAiICsgU3RyaW5nOjpudW1iZXIobV91cmwu
cG9ydCgpKSArICIgYmxvY2tlZCIsIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2VjdXJpdHlP
cmlnaW4oKS0+dG9TdHJpbmcoKSk7Ci0gICAgICAgIG1fc3RhdGUgPSBDTE9TRUQ7Ci0gICAgICAg
IGVjID0gU0VDVVJJVFlfRVJSOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCFz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmNvbnRlbnRTZWN1cml0eVBvbGljeSgpLT5hbGxvd0Nv
bm5lY3RGcm9tU291cmNlKG1fdXJsKSkgewotICAgICAgICBtX3N0YXRlID0gQ0xPU0VEOwotCi0g
ICAgICAgIC8vIEZJWE1FOiBTaG91bGQgdGhpcyBiZSB0aHJvd2luZyBhbiBleGNlcHRpb24/Ci0g
ICAgICAgIGVjID0gU0VDVVJJVFlfRVJSOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
bV9jaGFubmVsID0gVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OmNyZWF0ZShzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCksIHRoaXMpOwotICAgIG1fdXNlSGl4aWU3NlByb3RvY29sID0gbV9jaGFu
bmVsLT51c2VIaXhpZTc2UHJvdG9jb2woKTsKLQotICAgIFN0cmluZyBwcm90b2NvbFN0cmluZzsK
LSAgICBpZiAobV91c2VIaXhpZTc2UHJvdG9jb2wpIHsKLSAgICAgICAgaWYgKCFwcm90b2NvbHMu
aXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAvLyBFbXVsYXRlIEphdmFTY3JpcHQncyBBcnJheS50
b1N0cmluZygpIGJlaGF2aW9yLgotICAgICAgICAgICAgcHJvdG9jb2xTdHJpbmcgPSBqb2luU3Ry
aW5ncyhwcm90b2NvbHMsICIsIik7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCFpc1ZhbGlkUHJv
dG9jb2xTdHJpbmdIaXhpZTc2KHByb3RvY29sU3RyaW5nKSkgewotICAgICAgICAgICAgc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpLT5hZGRDb25zb2xlTWVzc2FnZShKU01lc3NhZ2VTb3VyY2UsIExv
Z01lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgIldyb25nIHByb3RvY29sIGZvciBXZWJT
b2NrZXQgJyIgKyBlbmNvZGVQcm90b2NvbFN0cmluZyhwcm90b2NvbFN0cmluZykgKyAiJyIsIHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+dG9TdHJpbmcoKSk7Ci0g
ICAgICAgICAgICBtX3N0YXRlID0gQ0xPU0VEOwotICAgICAgICAgICAgZWMgPSBTWU5UQVhfRVJS
OwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgICAg
Ly8gRklYTUU6IFRoZXJlIGlzIGEgZGlzYWdyZWVtZW50IGFib3V0IHJlc3RyaWN0aW9uIG9mIHN1
YnByb3RvY29scyBiZXR3ZWVuIFdlYlNvY2tldCBBUEkgYW5kIGh5YmktMTAgcHJvdG9jb2wKLSAg
ICAgICAgLy8gZHJhZnQuIFRoZSBmb3JtZXIgc2ltcGx5IHNheXMgIm9ubHkgY2hhcmFjdGVycyBp
biB0aGUgcmFuZ2UgVSswMDIxIHRvIFUrMDA3RSBhcmUgYWxsb3dlZCwiIHdoaWxlIHRoZSBsYXR0
ZXIKLSAgICAgICAgLy8gaW1wb3NlcyBhIHN0cmljdGVyIHJ1bGU6ICJ0aGUgZWxlbWVudHMgTVVT
VCBiZSBub24tZW1wdHkgc3RyaW5ncyB3aXRoIGNoYXJhY3RlcnMgYXMgZGVmaW5lZCBpbiBbUkZD
MjYxNl0sCi0gICAgICAgIC8vIGFuZCBNVVNUIGFsbCBiZSB1bmlxdWUgc3RyaW5ncy4iCi0gICAg
ICAgIC8vCi0gICAgICAgIC8vIEhlcmUsIHdlIHRocm93IFNZTlRBWF9FUlIgaWYgdGhlIGdpdmVu
IHByb3RvY29scyBkbyBub3QgbWVldCB0aGUgbGF0dGVyIGNyaXRlcmlhLiBUaGlzIGJlaGF2aW9y
IGRvZXMgbm90Ci0gICAgICAgIC8vIGNvbXBseSB3aXRoIFdlYlNvY2tldCBBUEkgc3BlY2lmaWNh
dGlvbiwgYnV0IGl0IHNlZW1zIHRvIGJlIHRoZSBvbmx5IHJlYXNvbmFibGUgd2F5IHRvIGhhbmRs
ZSB0aGlzIGNvbmZsaWN0LgotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHByb3RvY29s
cy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgaWYgKCFpc1ZhbGlkUHJvdG9jb2xTdHJpbmco
cHJvdG9jb2xzW2ldKSkgewotICAgICAgICAgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KS0+YWRkQ29uc29sZU1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJy
b3JNZXNzYWdlTGV2ZWwsICJXcm9uZyBwcm90b2NvbCBmb3IgV2ViU29ja2V0ICciICsgZW5jb2Rl
UHJvdG9jb2xTdHJpbmcocHJvdG9jb2xzW2ldKSArICInIiwgc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpLT5zZWN1cml0eU9yaWdpbigpLT50b1N0cmluZygpKTsKLSAgICAgICAgICAgICAgICBtX3N0
YXRlID0gQ0xPU0VEOwotICAgICAgICAgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKLSAgICAgICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgSGFzaFNl
dDxTdHJpbmc+IHZpc2l0ZWQ7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJvdG9j
b2xzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICBpZiAodmlzaXRlZC5jb250YWlucyhwcm90
b2NvbHNbaV0pKSB7Ci0gICAgICAgICAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5h
ZGRDb25zb2xlTWVzc2FnZShKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJvck1l
c3NhZ2VMZXZlbCwgIldlYlNvY2tldCBwcm90b2NvbHMgY29udGFpbiBkdXBsaWNhdGVzOiAnIiAr
IGVuY29kZVByb3RvY29sU3RyaW5nKHByb3RvY29sc1tpXSkgKyAiJyIsIHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+dG9TdHJpbmcoKSk7Ci0gICAgICAgICAgICAg
ICAgbV9zdGF0ZSA9IENMT1NFRDsKLSAgICAgICAgICAgICAgICBlYyA9IFNZTlRBWF9FUlI7Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdmlzaXRl
ZC5hZGQocHJvdG9jb2xzW2ldKTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICghcHJvdG9jb2xz
LmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHByb3RvY29sU3RyaW5nID0gam9pblN0cmluZ3MocHJv
dG9jb2xzLCAiLCAiKTsKLSAgICB9Ci0KLSAgICBtX2NoYW5uZWwtPmNvbm5lY3QobV91cmwsIHBy
b3RvY29sU3RyaW5nKTsKLSAgICBBY3RpdmVET01PYmplY3Q6OnNldFBlbmRpbmdBY3Rpdml0eSh0
aGlzKTsKLX0KLQotYm9vbCBXZWJTb2NrZXQ6OnNlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBF
eGNlcHRpb25Db2RlJiBlYykKLXsKLSAgICBMT0coTmV0d29yaywgIldlYlNvY2tldCAlcCBzZW5k
ICVzIiwgdGhpcywgbWVzc2FnZS51dGY4KCkuZGF0YSgpKTsKLSAgICBpZiAobV9zdGF0ZSA9PSBD
T05ORUNUSU5HKSB7Ci0gICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7Ci0gICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICB9Ci0gICAgLy8gTm8gZXhjZXB0aW9uIGlzIHJhaXNlZCBpZiB0aGUg
Y29ubmVjdGlvbiB3YXMgb25jZSBlc3RhYmxpc2hlZCBidXQgaGFzIHN1YnNlcXVlbnRseSBiZWVu
IGNsb3NlZC4KLSAgICBpZiAobV9zdGF0ZSA9PSBDTE9TSU5HIHx8IG1fc3RhdGUgPT0gQ0xPU0VE
KSB7Ci0gICAgICAgIHNpemVfdCBwYXlsb2FkU2l6ZSA9IG1lc3NhZ2UudXRmOCgpLmxlbmd0aCgp
OwotICAgICAgICBtX2J1ZmZlcmVkQW1vdW50QWZ0ZXJDbG9zZSA9IHNhdHVyYXRlQWRkKG1fYnVm
ZmVyZWRBbW91bnRBZnRlckNsb3NlLCBwYXlsb2FkU2l6ZSk7Ci0gICAgICAgIG1fYnVmZmVyZWRB
bW91bnRBZnRlckNsb3NlID0gc2F0dXJhdGVBZGQobV9idWZmZXJlZEFtb3VudEFmdGVyQ2xvc2Us
IGdldEZyYW1pbmdPdmVyaGVhZChwYXlsb2FkU2l6ZSkpOwotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgfQotICAgIC8vIEZJWE1FOiBjaGVjayBtZXNzYWdlIGlzIHZhbGlkIHV0ZjguCi0gICAg
QVNTRVJUKG1fY2hhbm5lbCk7Ci0gICAgcmV0dXJuIG1fY2hhbm5lbC0+c2VuZChtZXNzYWdlKTsK
LX0KLQotYm9vbCBXZWJTb2NrZXQ6OnNlbmQoQXJyYXlCdWZmZXIqIGJpbmFyeURhdGEsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQotewotICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0ICVwIHNlbmQgYXJy
YXlidWZmZXIgJXAiLCB0aGlzLCBiaW5hcnlEYXRhKTsKLSAgICBBU1NFUlQoYmluYXJ5RGF0YSk7
Ci0gICAgaWYgKG1fdXNlSGl4aWU3NlByb3RvY29sKQotICAgICAgICByZXR1cm4gc2VuZCgiW29i
amVjdCBBcnJheUJ1ZmZlcl0iLCBlYyk7Ci0gICAgaWYgKG1fc3RhdGUgPT0gQ09OTkVDVElORykg
ewotICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOwotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgfQotICAgIGlmIChtX3N0YXRlID09IENMT1NJTkcgfHwgbV9zdGF0ZSA9PSBDTE9TRUQp
IHsKLSAgICAgICAgdW5zaWduZWQgcGF5bG9hZFNpemUgPSBiaW5hcnlEYXRhLT5ieXRlTGVuZ3Ro
KCk7Ci0gICAgICAgIG1fYnVmZmVyZWRBbW91bnRBZnRlckNsb3NlID0gc2F0dXJhdGVBZGQobV9i
dWZmZXJlZEFtb3VudEFmdGVyQ2xvc2UsIHBheWxvYWRTaXplKTsKLSAgICAgICAgbV9idWZmZXJl
ZEFtb3VudEFmdGVyQ2xvc2UgPSBzYXR1cmF0ZUFkZChtX2J1ZmZlcmVkQW1vdW50QWZ0ZXJDbG9z
ZSwgZ2V0RnJhbWluZ092ZXJoZWFkKHBheWxvYWRTaXplKSk7Ci0gICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICB9Ci0gICAgQVNTRVJUKG1fY2hhbm5lbCk7Ci0gICAgcmV0dXJuIG1fY2hhbm5lbC0+
c2VuZCgqYmluYXJ5RGF0YSk7Ci19Ci0KLWJvb2wgV2ViU29ja2V0OjpzZW5kKEJsb2IqIGJpbmFy
eURhdGEsIEV4Y2VwdGlvbkNvZGUmIGVjKQotewotICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0
ICVwIHNlbmQgYmxvYiAlcyIsIHRoaXMsIGJpbmFyeURhdGEtPnVybCgpLnN0cmluZygpLnV0Zjgo
KS5kYXRhKCkpOwotICAgIEFTU0VSVChiaW5hcnlEYXRhKTsKLSAgICBpZiAobV91c2VIaXhpZTc2
UHJvdG9jb2wpCi0gICAgICAgIHJldHVybiBzZW5kKCJbb2JqZWN0IEJsb2JdIiwgZWMpOwotICAg
IGlmIChtX3N0YXRlID09IENPTk5FQ1RJTkcpIHsKLSAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRF
X0VSUjsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICBpZiAobV9zdGF0ZSA9PSBD
TE9TSU5HIHx8IG1fc3RhdGUgPT0gQ0xPU0VEKSB7Ci0gICAgICAgIHVuc2lnbmVkIGxvbmcgcGF5
bG9hZFNpemUgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihiaW5hcnlEYXRhLT5zaXplKCkp
OwotICAgICAgICBtX2J1ZmZlcmVkQW1vdW50QWZ0ZXJDbG9zZSA9IHNhdHVyYXRlQWRkKG1fYnVm
ZmVyZWRBbW91bnRBZnRlckNsb3NlLCBwYXlsb2FkU2l6ZSk7Ci0gICAgICAgIG1fYnVmZmVyZWRB
bW91bnRBZnRlckNsb3NlID0gc2F0dXJhdGVBZGQobV9idWZmZXJlZEFtb3VudEFmdGVyQ2xvc2Us
IGdldEZyYW1pbmdPdmVyaGVhZChwYXlsb2FkU2l6ZSkpOwotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgfQotICAgIEFTU0VSVChtX2NoYW5uZWwpOwotICAgIHJldHVybiBtX2NoYW5uZWwtPnNl
bmQoKmJpbmFyeURhdGEpOwotfQotCi12b2lkIFdlYlNvY2tldDo6Y2xvc2UoaW50IGNvZGUsIGNv
bnN0IFN0cmluZyYgcmVhc29uLCBFeGNlcHRpb25Db2RlJiBlYykKLXsKLSAgICBpZiAoY29kZSA9
PSBXZWJTb2NrZXRDaGFubmVsOjpDbG9zZUV2ZW50Q29kZU5vdFNwZWNpZmllZCkKLSAgICAgICAg
TE9HKE5ldHdvcmssICJXZWJTb2NrZXQgJXAgY2xvc2Ugd2l0aG91dCBjb2RlIGFuZCByZWFzb24i
LCB0aGlzKTsKLSAgICBlbHNlIHsKLSAgICAgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXQgJXAg
Y2xvc2Ugd2l0aCBjb2RlID0gJWQsIHJlYXNvbiA9ICVzIiwgdGhpcywgY29kZSwgcmVhc29uLnV0
ZjgoKS5kYXRhKCkpOwotICAgICAgICBpZiAoIShjb2RlID09IFdlYlNvY2tldENoYW5uZWw6OkNs
b3NlRXZlbnRDb2RlTm9ybWFsQ2xvc3VyZSB8fCAoV2ViU29ja2V0Q2hhbm5lbDo6Q2xvc2VFdmVu
dENvZGVNaW5pbXVtVXNlckRlZmluZWQgPD0gY29kZSAmJiBjb2RlIDw9IFdlYlNvY2tldENoYW5u
ZWw6OkNsb3NlRXZlbnRDb2RlTWF4aW11bVVzZXJEZWZpbmVkKSkpIHsKLSAgICAgICAgICAgIGVj
ID0gSU5WQUxJRF9BQ0NFU1NfRVJSOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0g
ICAgICAgIC8vIEZJWE1FOiBpZiByZWFzb24gY29udGFpbnMgYW55IHVucGFpcmVkIHN1cnJvZ2F0
ZXMsIHJhaXNlIFNZTlRBWF9FUlIuCi0gICAgICAgIGlmIChyZWFzb24udXRmOCgpLmxlbmd0aCgp
ID4gbWF4UmVhc29uU2l6ZUluQnl0ZXMpIHsKLSAgICAgICAgICAgIGVjID0gU1lOVEFYX0VSUjsK
LSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmIChtX3N0YXRl
ID09IENMT1NJTkcgfHwgbV9zdGF0ZSA9PSBDTE9TRUQpCi0gICAgICAgIHJldHVybjsKLSAgICBp
ZiAobV9zdGF0ZSA9PSBDT05ORUNUSU5HKSB7Ci0gICAgICAgIG1fc3RhdGUgPSBDTE9TSU5HOwot
ICAgICAgICBtX2NoYW5uZWwtPmZhaWwoIldlYlNvY2tldCBpcyBjbG9zZWQgYmVmb3JlIHRoZSBj
b25uZWN0aW9uIGlzIGVzdGFibGlzaGVkLiIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAg
IG1fc3RhdGUgPSBDTE9TSU5HOwotICAgIGlmIChtX2NoYW5uZWwpCi0gICAgICAgIG1fY2hhbm5l
bC0+Y2xvc2UoY29kZSwgcmVhc29uKTsKLX0KLQotY29uc3QgS1VSTCYgV2ViU29ja2V0Ojp1cmwo
KSBjb25zdAotewotICAgIHJldHVybiBtX3VybDsKLX0KLQotV2ViU29ja2V0OjpTdGF0ZSBXZWJT
b2NrZXQ6OnJlYWR5U3RhdGUoKSBjb25zdAotewotICAgIHJldHVybiBtX3N0YXRlOwotfQotCi11
bnNpZ25lZCBsb25nIFdlYlNvY2tldDo6YnVmZmVyZWRBbW91bnQoKSBjb25zdAotewotICAgIHJl
dHVybiBzYXR1cmF0ZUFkZChtX2J1ZmZlcmVkQW1vdW50LCBtX2J1ZmZlcmVkQW1vdW50QWZ0ZXJD
bG9zZSk7Ci19Ci0KLVN0cmluZyBXZWJTb2NrZXQ6OnByb3RvY29sKCkgY29uc3QKLXsKLSAgICBp
ZiAobV91c2VIaXhpZTc2UHJvdG9jb2wpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICBy
ZXR1cm4gbV9zdWJwcm90b2NvbDsKLX0KLQotU3RyaW5nIFdlYlNvY2tldDo6ZXh0ZW5zaW9ucygp
IGNvbnN0Ci17Ci0gICAgaWYgKG1fdXNlSGl4aWU3NlByb3RvY29sKQotICAgICAgICByZXR1cm4g
U3RyaW5nKCk7Ci0gICAgcmV0dXJuIG1fZXh0ZW5zaW9uczsKLX0KLQotU3RyaW5nIFdlYlNvY2tl
dDo6YmluYXJ5VHlwZSgpIGNvbnN0Ci17Ci0gICAgaWYgKG1fdXNlSGl4aWU3NlByb3RvY29sKQot
ICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgc3dpdGNoIChtX2JpbmFyeVR5cGUpIHsKLSAg
ICBjYXNlIEJpbmFyeVR5cGVCbG9iOgotICAgICAgICByZXR1cm4gImJsb2IiOwotICAgIGNhc2Ug
QmluYXJ5VHlwZUFycmF5QnVmZmVyOgotICAgICAgICByZXR1cm4gImFycmF5YnVmZmVyIjsKLSAg
ICB9Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIFN0cmluZygpOwotfQot
Ci12b2lkIFdlYlNvY2tldDo6c2V0QmluYXJ5VHlwZShjb25zdCBTdHJpbmcmIGJpbmFyeVR5cGUs
IEV4Y2VwdGlvbkNvZGUmIGVjKQotewotICAgIGlmIChtX3VzZUhpeGllNzZQcm90b2NvbCkKLSAg
ICAgICAgcmV0dXJuOwotICAgIGlmIChiaW5hcnlUeXBlID09ICJibG9iIikgewotICAgICAgICBt
X2JpbmFyeVR5cGUgPSBCaW5hcnlUeXBlQmxvYjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAg
ICBpZiAoYmluYXJ5VHlwZSA9PSAiYXJyYXlidWZmZXIiKSB7Ci0gICAgICAgIG1fYmluYXJ5VHlw
ZSA9IEJpbmFyeVR5cGVBcnJheUJ1ZmZlcjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBl
YyA9IFNZTlRBWF9FUlI7Ci0gICAgcmV0dXJuOwotfQotCi1jb25zdCBBdG9taWNTdHJpbmcmIFdl
YlNvY2tldDo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGV2ZW50TmFtZXMo
KS5pbnRlcmZhY2VGb3JXZWJTb2NrZXQ7Ci19Ci0KLVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIFdl
YlNvY2tldDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIEFj
dGl2ZURPTU9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotfQotCi12b2lkIFdlYlNv
Y2tldDo6Y29udGV4dERlc3Ryb3llZCgpCi17Ci0gICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXQg
JXAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCBkZXN0cm95ZWQiLCB0aGlzKTsKLSAgICBBU1NFUlQo
IW1fY2hhbm5lbCk7Ci0gICAgQVNTRVJUKG1fc3RhdGUgPT0gQ0xPU0VEKTsKLSAgICBBY3RpdmVE
T01PYmplY3Q6OmNvbnRleHREZXN0cm95ZWQoKTsKLX0KLQotYm9vbCBXZWJTb2NrZXQ6OmNhblN1
c3BlbmQoKSBjb25zdAotewotICAgIHJldHVybiAhbV9jaGFubmVsOwotfQotCi12b2lkIFdlYlNv
Y2tldDo6c3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9uKQotewotICAgIGlmIChtX2NoYW5uZWwp
Ci0gICAgICAgIG1fY2hhbm5lbC0+c3VzcGVuZCgpOwotfQotCi12b2lkIFdlYlNvY2tldDo6cmVz
dW1lKCkKLXsKLSAgICBpZiAobV9jaGFubmVsKQotICAgICAgICBtX2NoYW5uZWwtPnJlc3VtZSgp
OwotfQotCi12b2lkIFdlYlNvY2tldDo6c3RvcCgpCi17Ci0gICAgYm9vbCBwZW5kaW5nID0gaGFz
UGVuZGluZ0FjdGl2aXR5KCk7Ci0gICAgaWYgKG1fY2hhbm5lbCkKLSAgICAgICAgbV9jaGFubmVs
LT5kaXNjb25uZWN0KCk7Ci0gICAgbV9jaGFubmVsID0gMDsKLSAgICBtX3N0YXRlID0gQ0xPU0VE
OwotICAgIEFjdGl2ZURPTU9iamVjdDo6c3RvcCgpOwotICAgIGlmIChwZW5kaW5nKQotICAgICAg
ICBBY3RpdmVET01PYmplY3Q6OnVuc2V0UGVuZGluZ0FjdGl2aXR5KHRoaXMpOwotfQotCi12b2lk
IFdlYlNvY2tldDo6ZGlkQ29ubmVjdCgpCi17Ci0gICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXQg
JXAgZGlkQ29ubmVjdCIsIHRoaXMpOwotICAgIGlmIChtX3N0YXRlICE9IENPTk5FQ1RJTkcpIHsK
LSAgICAgICAgZGlkQ2xvc2UoMCwgQ2xvc2luZ0hhbmRzaGFrZUluY29tcGxldGUsIFdlYlNvY2tl
dENoYW5uZWw6OkNsb3NlRXZlbnRDb2RlQWJub3JtYWxDbG9zdXJlLCAiIik7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0gICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7Ci0gICAg
bV9zdGF0ZSA9IE9QRU47Ci0gICAgbV9zdWJwcm90b2NvbCA9IG1fY2hhbm5lbC0+c3VicHJvdG9j
b2woKTsKLSAgICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLm9wZW5F
dmVudCwgZmFsc2UsIGZhbHNlKSk7Ci19Ci0KLXZvaWQgV2ViU29ja2V0OjpkaWRSZWNlaXZlTWVz
c2FnZShjb25zdCBTdHJpbmcmIG1zZykKLXsKLSAgICBMT0coTmV0d29yaywgIldlYlNvY2tldCAl
cCBkaWRSZWNlaXZlTWVzc2FnZSAlcyIsIHRoaXMsIG1zZy51dGY4KCkuZGF0YSgpKTsKLSAgICBp
ZiAobV9zdGF0ZSAhPSBPUEVOICYmIG1fc3RhdGUgIT0gQ0xPU0lORykKLSAgICAgICAgcmV0dXJu
OwotICAgIEFTU0VSVChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwotICAgIGRpc3BhdGNoRXZl
bnQoTWVzc2FnZUV2ZW50OjpjcmVhdGUobXNnKSk7Ci19Ci0KLXZvaWQgV2ViU29ja2V0OjpkaWRS
ZWNlaXZlQmluYXJ5RGF0YShQYXNzT3duUHRyPFZlY3RvcjxjaGFyPiA+IGJpbmFyeURhdGEpCi17
Ci0gICAgc3dpdGNoIChtX2JpbmFyeVR5cGUpIHsKLSAgICBjYXNlIEJpbmFyeVR5cGVCbG9iOiB7
Ci0gICAgICAgIHNpemVfdCBzaXplID0gYmluYXJ5RGF0YS0+c2l6ZSgpOwotICAgICAgICBSZWZQ
dHI8UmF3RGF0YT4gcmF3RGF0YSA9IFJhd0RhdGE6OmNyZWF0ZSgpOwotICAgICAgICBiaW5hcnlE
YXRhLT5zd2FwKCpyYXdEYXRhLT5tdXRhYmxlRGF0YSgpKTsKLSAgICAgICAgT3duUHRyPEJsb2JE
YXRhPiBibG9iRGF0YSA9IEJsb2JEYXRhOjpjcmVhdGUoKTsKLSAgICAgICAgYmxvYkRhdGEtPmFw
cGVuZERhdGEocmF3RGF0YS5yZWxlYXNlKCksIDAsIEJsb2JEYXRhSXRlbTo6dG9FbmRPZkZpbGUp
OwotICAgICAgICBSZWZQdHI8QmxvYj4gYmxvYiA9IEJsb2I6OmNyZWF0ZShibG9iRGF0YS5yZWxl
YXNlKCksIHNpemUpOwotICAgICAgICBkaXNwYXRjaEV2ZW50KE1lc3NhZ2VFdmVudDo6Y3JlYXRl
KGJsb2IucmVsZWFzZSgpKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLQotICAgIGNhc2UgQmlu
YXJ5VHlwZUFycmF5QnVmZmVyOgotICAgICAgICBkaXNwYXRjaEV2ZW50KE1lc3NhZ2VFdmVudDo6
Y3JlYXRlKEFycmF5QnVmZmVyOjpjcmVhdGUoYmluYXJ5RGF0YS0+ZGF0YSgpLCBiaW5hcnlEYXRh
LT5zaXplKCkpKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLX0KLQotdm9pZCBXZWJTb2NrZXQ6
OmRpZFJlY2VpdmVNZXNzYWdlRXJyb3IoKQotewotICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0
ICVwIGRpZFJlY2VpdmVFcnJvck1lc3NhZ2UiLCB0aGlzKTsKLSAgICBpZiAobV9zdGF0ZSAhPSBP
UEVOICYmIG1fc3RhdGUgIT0gQ0xPU0lORykKLSAgICAgICAgcmV0dXJuOwotICAgIEFTU0VSVChz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwotICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0
ZShldmVudE5hbWVzKCkuZXJyb3JFdmVudCwgZmFsc2UsIGZhbHNlKSk7Ci19Ci0KLXZvaWQgV2Vi
U29ja2V0OjpkaWRVcGRhdGVCdWZmZXJlZEFtb3VudCh1bnNpZ25lZCBsb25nIGJ1ZmZlcmVkQW1v
dW50KQotewotICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0ICVwIGRpZFVwZGF0ZUJ1ZmZlcmVk
QW1vdW50ICVsdSIsIHRoaXMsIGJ1ZmZlcmVkQW1vdW50KTsKLSAgICBpZiAobV9zdGF0ZSA9PSBD
TE9TRUQpCi0gICAgICAgIHJldHVybjsKLSAgICBtX2J1ZmZlcmVkQW1vdW50ID0gYnVmZmVyZWRB
bW91bnQ7Ci19Ci0KLXZvaWQgV2ViU29ja2V0OjpkaWRTdGFydENsb3NpbmdIYW5kc2hha2UoKQot
ewotICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0ICVwIGRpZFN0YXJ0Q2xvc2luZ0hhbmRzaGFr
ZSIsIHRoaXMpOwotICAgIG1fc3RhdGUgPSBDTE9TSU5HOwotfQotCi12b2lkIFdlYlNvY2tldDo6
ZGlkQ2xvc2UodW5zaWduZWQgbG9uZyB1bmhhbmRsZWRCdWZmZXJlZEFtb3VudCwgQ2xvc2luZ0hh
bmRzaGFrZUNvbXBsZXRpb25TdGF0dXMgY2xvc2luZ0hhbmRzaGFrZUNvbXBsZXRpb24sIHVuc2ln
bmVkIHNob3J0IGNvZGUsIGNvbnN0IFN0cmluZyYgcmVhc29uKQotewotICAgIExPRyhOZXR3b3Jr
LCAiV2ViU29ja2V0ICVwIGRpZENsb3NlIiwgdGhpcyk7Ci0gICAgaWYgKCFtX2NoYW5uZWwpCi0g
ICAgICAgIHJldHVybjsKLSAgICBib29sIHdhc0NsZWFuID0gbV9zdGF0ZSA9PSBDTE9TSU5HICYm
ICF1bmhhbmRsZWRCdWZmZXJlZEFtb3VudCAmJiBjbG9zaW5nSGFuZHNoYWtlQ29tcGxldGlvbiA9
PSBDbG9zaW5nSGFuZHNoYWtlQ29tcGxldGU7Ci0gICAgbV9zdGF0ZSA9IENMT1NFRDsKLSAgICBt
X2J1ZmZlcmVkQW1vdW50ID0gdW5oYW5kbGVkQnVmZmVyZWRBbW91bnQ7Ci0gICAgQVNTRVJUKHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7Ci0gICAgUmVmUHRyPENsb3NlRXZlbnQ+IGV2ZW50ID0g
Q2xvc2VFdmVudDo6Y3JlYXRlKHdhc0NsZWFuLCBjb2RlLCByZWFzb24pOwotICAgIGRpc3BhdGNo
RXZlbnQoZXZlbnQpOwotICAgIGlmIChtX2NoYW5uZWwpIHsKLSAgICAgICAgbV9jaGFubmVsLT5k
aXNjb25uZWN0KCk7Ci0gICAgICAgIG1fY2hhbm5lbCA9IDA7Ci0gICAgfQotICAgIGlmIChoYXNQ
ZW5kaW5nQWN0aXZpdHkoKSkKLSAgICAgICAgQWN0aXZlRE9NT2JqZWN0Ojp1bnNldFBlbmRpbmdB
Y3Rpdml0eSh0aGlzKTsKLX0KLQotRXZlbnRUYXJnZXREYXRhKiBXZWJTb2NrZXQ6OmV2ZW50VGFy
Z2V0RGF0YSgpCi17Ci0gICAgcmV0dXJuICZtX2V2ZW50VGFyZ2V0RGF0YTsKLX0KLQotRXZlbnRU
YXJnZXREYXRhKiBXZWJTb2NrZXQ6OmVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgpCi17Ci0gICAgcmV0
dXJuICZtX2V2ZW50VGFyZ2V0RGF0YTsKLX0KLQotc2l6ZV90IFdlYlNvY2tldDo6Z2V0RnJhbWlu
Z092ZXJoZWFkKHNpemVfdCBwYXlsb2FkU2l6ZSkKLXsKLSAgICBzdGF0aWMgY29uc3Qgc2l6ZV90
IGhpeGllNzZGcmFtaW5nT3ZlcmhlYWQgPSAyOyAvLyBQYXlsb2FkIGlzIHN1cnJvdW5kZWQgYnkg
MHgwMCBhbmQgMHhGRi4KLSAgICBpZiAobV91c2VIaXhpZTc2UHJvdG9jb2wpCi0gICAgICAgIHJl
dHVybiBoaXhpZTc2RnJhbWluZ092ZXJoZWFkOwotCi0gICAgc3RhdGljIGNvbnN0IHNpemVfdCBo
eWJpQmFzZUZyYW1pbmdPdmVyaGVhZCA9IDI7IC8vIEV2ZXJ5IGZyYW1lIGhhcyBhdCBsZWFzdCB0
d28tYnl0ZSBoZWFkZXIuCi0gICAgc3RhdGljIGNvbnN0IHNpemVfdCBoeWJpTWFza2luZ0tleUxl
bmd0aCA9IDQ7IC8vIEV2ZXJ5IGZyYW1lIGZyb20gY2xpZW50IG11c3QgaGF2ZSBtYXNraW5nIGtl
eS4KLSAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IG1pbmltdW1QYXlsb2FkU2l6ZVdpdGhUd29CeXRl
RXh0ZW5kZWRQYXlsb2FkTGVuZ3RoID0gMTI2OwotICAgIHN0YXRpYyBjb25zdCBzaXplX3QgbWlu
aW11bVBheWxvYWRTaXplV2l0aEVpZ2h0Qnl0ZUV4dGVuZGVkUGF5bG9hZExlbmd0aCA9IDB4MTAw
MDA7Ci0gICAgc2l6ZV90IG92ZXJoZWFkID0gaHliaUJhc2VGcmFtaW5nT3ZlcmhlYWQgKyBoeWJp
TWFza2luZ0tleUxlbmd0aDsKLSAgICBpZiAocGF5bG9hZFNpemUgPj0gbWluaW11bVBheWxvYWRT
aXplV2l0aEVpZ2h0Qnl0ZUV4dGVuZGVkUGF5bG9hZExlbmd0aCkKLSAgICAgICAgb3ZlcmhlYWQg
Kz0gODsKLSAgICBlbHNlIGlmIChwYXlsb2FkU2l6ZSA+PSBtaW5pbXVtUGF5bG9hZFNpemVXaXRo
VHdvQnl0ZUV4dGVuZGVkUGF5bG9hZExlbmd0aCkKLSAgICAgICAgb3ZlcmhlYWQgKz0gMjsKLSAg
ICByZXR1cm4gb3ZlcmhlYWQ7Ci19Ci0KLX0gIC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRp
ZgpJbmRleDogU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5oCShyZXZpc2lvbiAxMDg5
MjQpCisrKyBTb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDE0NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
Ci0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0g
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgV2ViU29ja2V0X2gKLSNkZWZpbmUgV2ViU29j
a2V0X2gKLQotI2lmIEVOQUJMRShXRUJfU09DS0VUUykKLQotI2luY2x1ZGUgIkFjdGl2ZURPTU9i
amVjdC5oIgotI2luY2x1ZGUgIkV2ZW50TGlzdGVuZXIuaCIKLSNpbmNsdWRlICJFdmVudE5hbWVz
LmgiCi0jaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKLSNpbmNsdWRlICJLVVJMLmgiCi0jaW5jbHVk
ZSAiV2ViU29ja2V0Q2hhbm5lbENsaWVudC5oIgotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0j
aW5jbHVkZSA8d3RmL093blB0ci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5j
bHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nSGFzaC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLWNsYXNzIEJsb2I7Ci1jbGFzcyBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDsKLQotY2xh
c3MgV2ViU29ja2V0IDogcHVibGljIFJlZkNvdW50ZWQ8V2ViU29ja2V0PiwgcHVibGljIEV2ZW50
VGFyZ2V0LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0LCBwdWJsaWMgV2ViU29ja2V0Q2hhbm5lbENs
aWVudCB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIHZvaWQgc2V0SXNBdmFpbGFibGUoYm9vbCk7Ci0g
ICAgc3RhdGljIGJvb2wgaXNBdmFpbGFibGUoKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJT
b2NrZXQ+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7Ci0gICAgdmlydHVhbCB+V2Vi
U29ja2V0KCk7Ci0KLSAgICBlbnVtIFN0YXRlIHsKLSAgICAgICAgQ09OTkVDVElORyA9IDAsCi0g
ICAgICAgIE9QRU4gPSAxLAotICAgICAgICBDTE9TSU5HID0gMiwKLSAgICAgICAgQ0xPU0VEID0g
MwotICAgIH07Ci0KLSAgICB2b2lkIGNvbm5lY3QoY29uc3QgU3RyaW5nJiB1cmwsIEV4Y2VwdGlv
bkNvZGUmKTsKLSAgICB2b2lkIGNvbm5lY3QoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmlu
ZyYgcHJvdG9jb2wsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lkIGNvbm5lY3QoY29uc3QgU3Ry
aW5nJiB1cmwsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwcm90b2NvbHMsIEV4Y2VwdGlvbkNvZGUm
KTsKLQotICAgIGJvb2wgc2VuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIEV4Y2VwdGlvbkNvZGUm
KTsKLSAgICBib29sIHNlbmQoQXJyYXlCdWZmZXIqLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgYm9v
bCBzZW5kKEJsb2IqLCBFeGNlcHRpb25Db2RlJik7Ci0KLSAgICB2b2lkIGNsb3NlKGludCBjb2Rl
LCBjb25zdCBTdHJpbmcmIHJlYXNvbiwgRXhjZXB0aW9uQ29kZSYpOwotCi0gICAgY29uc3QgS1VS
TCYgdXJsKCkgY29uc3Q7Ci0gICAgU3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0OwotICAgIHVuc2ln
bmVkIGxvbmcgYnVmZmVyZWRBbW91bnQoKSBjb25zdDsKLQotICAgIFN0cmluZyBwcm90b2NvbCgp
IGNvbnN0OwotICAgIFN0cmluZyBleHRlbnNpb25zKCkgY29uc3Q7Ci0KLSAgICBTdHJpbmcgYmlu
YXJ5VHlwZSgpIGNvbnN0OwotICAgIHZvaWQgc2V0QmluYXJ5VHlwZShjb25zdCBTdHJpbmcmIGJp
bmFyeVR5cGUsIEV4Y2VwdGlvbkNvZGUmKTsKLQotICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRf
TElTVEVORVIob3Blbik7Ci0gICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihtZXNz
YWdlKTsKLSAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGVycm9yKTsKLSAgICBE
RUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGNsb3NlKTsKLQotICAgIC8vIEV2ZW50VGFy
Z2V0IGZ1bmN0aW9ucy4KLSAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW50ZXJmYWNl
TmFtZSgpIGNvbnN0IE9WRVJSSURFOwotICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IE9WRVJSSURFOwotCi0gICAgLy8gQWN0
aXZlRE9NT2JqZWN0IGZ1bmN0aW9ucy4KLSAgICB2aXJ0dWFsIHZvaWQgY29udGV4dERlc3Ryb3ll
ZCgpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgYm9vbCBjYW5TdXNwZW5kKCkgY29uc3QgT1ZFUlJJ
REU7Ci0gICAgdmlydHVhbCB2b2lkIHN1c3BlbmQoUmVhc29uRm9yU3VzcGVuc2lvbikgT1ZFUlJJ
REU7Ci0gICAgdmlydHVhbCB2b2lkIHJlc3VtZSgpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9p
ZCBzdG9wKCkgT1ZFUlJJREU7Ci0KLSAgICB1c2luZyBSZWZDb3VudGVkPFdlYlNvY2tldD46OnJl
ZjsKLSAgICB1c2luZyBSZWZDb3VudGVkPFdlYlNvY2tldD46OmRlcmVmOwotCi0gICAgLy8gV2Vi
U29ja2V0Q2hhbm5lbENsaWVudCBmdW5jdGlvbnMuCi0gICAgdmlydHVhbCB2b2lkIGRpZENvbm5l
Y3QoKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoY29uc3Qg
U3RyaW5nJiBtZXNzYWdlKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUJp
bmFyeURhdGEoUGFzc093blB0cjxWZWN0b3I8Y2hhcj4gPikgT1ZFUlJJREU7Ci0gICAgdmlydHVh
bCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlRXJyb3IoKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZv
aWQgZGlkVXBkYXRlQnVmZmVyZWRBbW91bnQodW5zaWduZWQgbG9uZyBidWZmZXJlZEFtb3VudCkg
T1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFN0YXJ0Q2xvc2luZ0hhbmRzaGFrZSgpIE9W
RVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBkaWRDbG9zZSh1bnNpZ25lZCBsb25nIHVuaGFuZGxl
ZEJ1ZmZlcmVkQW1vdW50LCBDbG9zaW5nSGFuZHNoYWtlQ29tcGxldGlvblN0YXR1cywgdW5zaWdu
ZWQgc2hvcnQgY29kZSwgY29uc3QgU3RyaW5nJiByZWFzb24pIE9WRVJSSURFOwotCi1wcml2YXRl
OgotICAgIFdlYlNvY2tldChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7Ci0KLSAgICB2aXJ0dWFs
IHZvaWQgcmVmRXZlbnRUYXJnZXQoKSB7IHJlZigpOyB9Ci0gICAgdmlydHVhbCB2b2lkIGRlcmVm
RXZlbnRUYXJnZXQoKSB7IGRlcmVmKCk7IH0KLSAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSog
ZXZlbnRUYXJnZXREYXRhKCk7Ci0gICAgdmlydHVhbCBFdmVudFRhcmdldERhdGEqIGVuc3VyZUV2
ZW50VGFyZ2V0RGF0YSgpOwotCi0gICAgc2l6ZV90IGdldEZyYW1pbmdPdmVyaGVhZChzaXplX3Qg
cGF5bG9hZFNpemUpOwotCi0gICAgZW51bSBCaW5hcnlUeXBlIHsKLSAgICAgICAgQmluYXJ5VHlw
ZUJsb2IsCi0gICAgICAgIEJpbmFyeVR5cGVBcnJheUJ1ZmZlcgotICAgIH07Ci0KLSAgICBSZWZQ
dHI8VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw+IG1fY2hhbm5lbDsKLQotICAgIFN0YXRlIG1f
c3RhdGU7Ci0gICAgS1VSTCBtX3VybDsKLSAgICBFdmVudFRhcmdldERhdGEgbV9ldmVudFRhcmdl
dERhdGE7Ci0gICAgdW5zaWduZWQgbG9uZyBtX2J1ZmZlcmVkQW1vdW50OwotICAgIHVuc2lnbmVk
IGxvbmcgbV9idWZmZXJlZEFtb3VudEFmdGVyQ2xvc2U7Ci0gICAgQmluYXJ5VHlwZSBtX2JpbmFy
eVR5cGU7Ci0gICAgYm9vbCBtX3VzZUhpeGllNzZQcm90b2NvbDsKLSAgICBTdHJpbmcgbV9zdWJw
cm90b2NvbDsKLSAgICBTdHJpbmcgbV9leHRlbnNpb25zOwotfTsKLQotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQl9TT0NLRVRTKQotCi0jZW5kaWYgLy8gV2Vi
U29ja2V0X2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmlkbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5pZGwJKHJl
dmlzaW9uIDEwODkyNCkKKysrIFNvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Lmlk
bAkod29ya2luZyBjb3B5KQpAQCAtMSw4OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDA5IEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAy
MDEwLCAyMDExIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgot
ICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
LSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1tb2R1bGUgd2Vic29ja2V0cyB7
Ci0KLSAgICBpbnRlcmZhY2UgWwotICAgICAgICBDb25kaXRpb25hbD1XRUJfU09DS0VUUywKLSAg
ICAgICAgQWN0aXZlRE9NT2JqZWN0LAotICAgICAgICBDdXN0b21Db25zdHJ1Y3RvciwKLSAgICAg
ICAgQ29uc3RydWN0b3JQYXJhbWV0ZXJzPTEsCi0gICAgICAgIEV2ZW50VGFyZ2V0LAotICAgICAg
ICBKU05vU3RhdGljVGFibGVzCi0gICAgXSBXZWJTb2NrZXQgewotICAgICAgICByZWFkb25seSBh
dHRyaWJ1dGUgRE9NU3RyaW5nIFVSTDsgLy8gTG93ZXJjYXNlZCAudXJsIGlzIHRoZSBvbmUgaW4g
dGhlIHNwZWMsIGJ1dCBsZWF2aW5nIC5VUkwgZm9yIGNvbXBhdGliaWxpdHkgcmVhc29ucy4KLSAg
ICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyB1cmw7Ci0KLSAgICAgICAgLy8gcmVh
ZHkgc3RhdGUKLSAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgQ09OTkVDVElORyA9IDA7Ci0g
ICAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IE9QRU4gPSAxOwotICAgICAgICBjb25zdCB1bnNp
Z25lZCBzaG9ydCBDTE9TSU5HID0gMjsKLSAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgQ0xP
U0VEID0gMzsKLSAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIHNob3J0IHJlYWR5
U3RhdGU7Ci0KLSAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgYnVmZmVy
ZWRBbW91bnQ7Ci0KLSAgICAgICAgLy8gbmV0d29ya2luZwotICAgICAgICBhdHRyaWJ1dGUgRXZl
bnRMaXN0ZW5lciBvbm9wZW47Ci0gICAgICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9ubWVz
c2FnZTsKLSAgICAgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25lcnJvcjsKLSAgICAgICAg
YXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25jbG9zZTsKLQotICAgICAgICByZWFkb25seSBhdHRy
aWJ1dGUgW1RyZWF0UmV0dXJuZWROdWxsU3RyaW5nQXM9VW5kZWZpbmVkXSBET01TdHJpbmcgcHJv
dG9jb2w7Ci0gICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBbVHJlYXRSZXR1cm5lZE51bGxTdHJp
bmdBcz1VbmRlZmluZWRdIERPTVN0cmluZyBleHRlbnNpb25zOwotCi0gICAgICAgIGF0dHJpYnV0
ZSBbVHJlYXRSZXR1cm5lZE51bGxTdHJpbmdBcz1VbmRlZmluZWRdIERPTVN0cmluZyBiaW5hcnlU
eXBlCi0gICAgICAgICAgICBzZXR0ZXIgcmFpc2VzKERPTUV4Y2VwdGlvbik7Ci0KLSAgICAgICAg
Ly8gRklYTUU6IFVzZSBvdmVybG9hZGluZyBwcm92aWRlZCBieSBvdXIgSURMIGNvZGUgZ2VuZXJh
dG9yLgotICAgICAgICAvLyBBY2NvcmRpbmcgdG8gV2ViIElETCBzcGVjaWZpY2F0aW9uLCBvdmVy
bG9hZGVkIGZ1bmN0aW9uIHdpdGggRE9NU3RyaW5nIGFyZ3VtZW50Ci0gICAgICAgIC8vIHNob3Vs
ZCBhY2NlcHQgYW55dGhpbmcgdGhhdCBjYW4gYmUgY29udmVydGVkIHRvIGEgc3RyaW5nIChpbmNs
dWRpbmcgbnVtYmVycywKLSAgICAgICAgLy8gYm9vbGVhbnMsIG51bGwsIHVuZGVmaW5lZCBhbmQg
b2JqZWN0cyBleGNlcHQgQXJyYXlCdWZmZXIgYW5kIEJsb2IpLiBDdXJyZW50IGNvZGUKLSAgICAg
ICAgLy8gZ2VuZXJhdG9yIGRvZXMgbm90IGhhbmRsZSB0aGlzIHJ1bGUgY29ycmVjdGx5LgotICAg
ICAgICAvLyBib29sZWFuIHNlbmQoaW4gQXJyYXlCdWZmZXIgZGF0YSkgcmFpc2VzKERPTUV4Y2Vw
dGlvbik7Ci0gICAgICAgIC8vIGJvb2xlYW4gc2VuZChpbiBCbG9iIGRhdGEpIHJhaXNlcyhET01F
eGNlcHRpb24pOwotICAgICAgICAvLyBib29sZWFuIHNlbmQoaW4gRE9NU3RyaW5nIGRhdGEpIHJh
aXNlcyhET01FeGNlcHRpb24pOwotICAgICAgICBbQ3VzdG9tXSBib29sZWFuIHNlbmQoaW4gRE9N
U3RyaW5nIGRhdGEpIHJhaXNlcyhET01FeGNlcHRpb24pOwotCi0gICAgICAgIC8vIEZJWE1FOiBJ
bXBsZW1lbnQgYW5kIGFwcGx5IFtDbGFtcF0gYXR0cmlidXRlIGluc3RlYWQgb2YgW0N1c3RvbV0u
Ci0gICAgICAgIFtDdXN0b21dIHZvaWQgY2xvc2UoaW4gW09wdGlvbmFsXSB1bnNpZ25lZCBzaG9y
dCBjb2RlLCBpbiBbT3B0aW9uYWxdIERPTVN0cmluZyByZWFzb24pIHJhaXNlcyhET01FeGNlcHRp
b24pOwotCi0gICAgICAgIC8vIEV2ZW50VGFyZ2V0IGludGVyZmFjZQotICAgICAgICB2b2lkIGFk
ZEV2ZW50TGlzdGVuZXIoaW4gRE9NU3RyaW5nIHR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbiBFdmVudExpc3RlbmVyIGxpc3RlbmVyLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW4gW09wdGlvbmFsXSBib29sZWFuIHVzZUNhcHR1cmUpOwotICAgICAgICB2b2lk
IHJlbW92ZUV2ZW50TGlzdGVuZXIoaW4gRE9NU3RyaW5nIHR5cGUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbiBFdmVudExpc3RlbmVyIGxpc3RlbmVyLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW4gW09wdGlvbmFsXSBib29sZWFuIHVzZUNhcHR1cmUpOwot
ICAgICAgICBib29sZWFuIGRpc3BhdGNoRXZlbnQoaW4gRXZlbnQgZXZ0KQotICAgICAgICAgICAg
cmFpc2VzKEV2ZW50RXhjZXB0aW9uKTsKLSAgICB9OwotfQpJbmRleDogU291cmNlL1dlYkNvcmUv
d2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCShyZXZpc2lvbiAxMDg5MjQpCisr
KyBTb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDEwMzQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAx
MiBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwot
ICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAot
ICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNp
ZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCi0KLSNpbmNsdWRlICJXZWJTb2NrZXRDaGFubmVsLmgiCi0K
LSNpbmNsdWRlICJCbG9iLmgiCi0jaW5jbHVkZSAiQ29va2llSmFyLmgiCi0jaW5jbHVkZSAiRG9j
dW1lbnQuaCIKLSNpbmNsdWRlICJGaWxlRXJyb3IuaCIKLSNpbmNsdWRlICJGaWxlUmVhZGVyTG9h
ZGVyLmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCi0jaW5jbHVkZSAi
TG9nZ2luZy5oIgotI2luY2x1ZGUgIlBhZ2UuaCIKLSNpbmNsdWRlICJQcm9ncmVzc1RyYWNrZXIu
aCIKLSNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2suaCIKLSNpbmNsdWRlICJTY3JpcHRFeGVjdXRp
b25Db250ZXh0LmgiCi0jaW5jbHVkZSAiU2V0dGluZ3MuaCIKLSNpbmNsdWRlICJTb2NrZXRTdHJl
YW1FcnJvci5oIgotI2luY2x1ZGUgIlNvY2tldFN0cmVhbUhhbmRsZS5oIgotI2luY2x1ZGUgIldl
YlNvY2tldENoYW5uZWxDbGllbnQuaCIKLSNpbmNsdWRlICJXZWJTb2NrZXRIYW5kc2hha2UuaCIK
LQotI2luY2x1ZGUgPHd0Zi9BcnJheUJ1ZmZlci5oPgotI2luY2x1ZGUgPHd0Zi9DcnlwdG9ncmFw
aGljYWxseVJhbmRvbU51bWJlci5oPgotI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgotI2luY2x1ZGUg
PHd0Zi9GYXN0TWFsbG9jLmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3
dGYvT3duUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KLSNpbmNsdWRlIDx3dGYv
dGV4dC9DU3RyaW5nLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgotI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi11c2luZyBuYW1lc3BhY2Ugc3RkOwotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLWNvbnN0IGRvdWJsZSBUQ1BNYXhpbXVtU2VnbWVudExpZmV0aW1l
ID0gMiAqIDYwLjA7Ci0KLS8vIENvbnN0YW50cyBmb3IgaHliaS0xMCBmcmFtZSBmb3JtYXQuCi1j
b25zdCB1bnNpZ25lZCBjaGFyIGZpbmFsQml0ID0gMHg4MDsKLWNvbnN0IHVuc2lnbmVkIGNoYXIg
Y29tcHJlc3NCaXQgPSAweDQwOwotY29uc3QgdW5zaWduZWQgY2hhciByZXNlcnZlZDJCaXQgPSAw
eDIwOwotY29uc3QgdW5zaWduZWQgY2hhciByZXNlcnZlZDNCaXQgPSAweDEwOwotY29uc3QgdW5z
aWduZWQgY2hhciBvcENvZGVNYXNrID0gMHhGOwotY29uc3QgdW5zaWduZWQgY2hhciBtYXNrQml0
ID0gMHg4MDsKLWNvbnN0IHVuc2lnbmVkIGNoYXIgcGF5bG9hZExlbmd0aE1hc2sgPSAweDdGOwot
Y29uc3Qgc2l6ZV90IG1heFBheWxvYWRMZW5ndGhXaXRob3V0RXh0ZW5kZWRMZW5ndGhGaWVsZCA9
IDEyNTsKLWNvbnN0IHNpemVfdCBwYXlsb2FkTGVuZ3RoV2l0aFR3b0J5dGVFeHRlbmRlZExlbmd0
aEZpZWxkID0gMTI2OwotY29uc3Qgc2l6ZV90IHBheWxvYWRMZW5ndGhXaXRoRWlnaHRCeXRlRXh0
ZW5kZWRMZW5ndGhGaWVsZCA9IDEyNzsKLWNvbnN0IHNpemVfdCBtYXNraW5nS2V5V2lkdGhJbkJ5
dGVzID0gNDsKLQotV2ViU29ja2V0Q2hhbm5lbDo6V2ViU29ja2V0Q2hhbm5lbChEb2N1bWVudCog
ZG9jdW1lbnQsIFdlYlNvY2tldENoYW5uZWxDbGllbnQqIGNsaWVudCkKLSAgICA6IG1fZG9jdW1l
bnQoZG9jdW1lbnQpCi0gICAgLCBtX2NsaWVudChjbGllbnQpCi0gICAgLCBtX2J1ZmZlcigwKQot
ICAgICwgbV9idWZmZXJTaXplKDApCi0gICAgLCBtX3Jlc3VtZVRpbWVyKHRoaXMsICZXZWJTb2Nr
ZXRDaGFubmVsOjpyZXN1bWVUaW1lckZpcmVkKQotICAgICwgbV9zdXNwZW5kZWQoZmFsc2UpCi0g
ICAgLCBtX2Nsb3NpbmcoZmFsc2UpCi0gICAgLCBtX3JlY2VpdmVkQ2xvc2luZ0hhbmRzaGFrZShm
YWxzZSkKLSAgICAsIG1fY2xvc2luZ1RpbWVyKHRoaXMsICZXZWJTb2NrZXRDaGFubmVsOjpjbG9z
aW5nVGltZXJGaXJlZCkKLSAgICAsIG1fY2xvc2VkKGZhbHNlKQotICAgICwgbV9zaG91bGREaXNj
YXJkUmVjZWl2ZWREYXRhKGZhbHNlKQotICAgICwgbV91bmhhbmRsZWRCdWZmZXJlZEFtb3VudCgw
KQotICAgICwgbV9pZGVudGlmaWVyKDApCi0gICAgLCBtX3VzZUhpeGllNzZQcm90b2NvbCh0cnVl
KQotICAgICwgbV9oYXNDb250aW51b3VzRnJhbWUoZmFsc2UpCi0gICAgLCBtX2Nsb3NlRXZlbnRD
b2RlKENsb3NlRXZlbnRDb2RlQWJub3JtYWxDbG9zdXJlKQotICAgICwgbV9vdXRnb2luZ0ZyYW1l
UXVldWVTdGF0dXMoT3V0Z29pbmdGcmFtZVF1ZXVlT3BlbikKLSNpZiBFTkFCTEUoQkxPQikKLSAg
ICAsIG1fYmxvYkxvYWRlclN0YXR1cyhCbG9iTG9hZGVyTm90U3RhcnRlZCkKLSNlbmRpZgotewot
ICAgIGlmIChTZXR0aW5ncyogc2V0dGluZ3MgPSBtX2RvY3VtZW50LT5zZXR0aW5ncygpKQotICAg
ICAgICBtX3VzZUhpeGllNzZQcm90b2NvbCA9IHNldHRpbmdzLT51c2VIaXhpZTc2V2ViU29ja2V0
UHJvdG9jb2woKTsKLQotICAgIGlmIChQYWdlKiBwYWdlID0gbV9kb2N1bWVudC0+cGFnZSgpKQot
ICAgICAgICBtX2lkZW50aWZpZXIgPSBwYWdlLT5wcm9ncmVzcygpLT5jcmVhdGVVbmlxdWVJZGVu
dGlmaWVyKCk7Ci19Ci0KLVdlYlNvY2tldENoYW5uZWw6On5XZWJTb2NrZXRDaGFubmVsKCkKLXsK
LSAgICBmYXN0RnJlZShtX2J1ZmZlcik7Ci19Ci0KLWJvb2wgV2ViU29ja2V0Q2hhbm5lbDo6dXNl
SGl4aWU3NlByb3RvY29sKCkKLXsKLSAgICByZXR1cm4gbV91c2VIaXhpZTc2UHJvdG9jb2w7Ci19
Ci0KLXZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6Y29ubmVjdChjb25zdCBLVVJMJiB1cmwsIGNvbnN0
IFN0cmluZyYgcHJvdG9jb2wpCi17Ci0gICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVs
ICVwIGNvbm5lY3QiLCB0aGlzKTsKLSAgICBBU1NFUlQoIW1faGFuZGxlKTsKLSAgICBBU1NFUlQo
IW1fc3VzcGVuZGVkKTsKLSAgICBtX2hhbmRzaGFrZSA9IGFkb3B0UHRyKG5ldyBXZWJTb2NrZXRI
YW5kc2hha2UodXJsLCBwcm90b2NvbCwgbV9kb2N1bWVudCwgbV91c2VIaXhpZTc2UHJvdG9jb2wp
KTsKLSAgICBtX2hhbmRzaGFrZS0+cmVzZXQoKTsKLSAgICBpZiAobV9pZGVudGlmaWVyKQotICAg
ICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENyZWF0ZVdlYlNvY2tldChtX2RvY3Vt
ZW50LCBtX2lkZW50aWZpZXIsIHVybCwgbV9kb2N1bWVudC0+dXJsKCkpOwotICAgIHJlZigpOwot
ICAgIG1faGFuZGxlID0gU29ja2V0U3RyZWFtSGFuZGxlOjpjcmVhdGUobV9oYW5kc2hha2UtPnVy
bCgpLCB0aGlzKTsKLX0KLQotU3RyaW5nIFdlYlNvY2tldENoYW5uZWw6OnN1YnByb3RvY29sKCkK
LXsKLSAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgc3VicHJvdG9jb2wiLCB0
aGlzKTsKLSAgICBpZiAoIW1faGFuZHNoYWtlIHx8IG1faGFuZHNoYWtlLT5tb2RlKCkgIT0gV2Vi
U29ja2V0SGFuZHNoYWtlOjpDb25uZWN0ZWQpCi0gICAgICAgIHJldHVybiAiIjsKLSAgICBTdHJp
bmcgc2VydmVyUHJvdG9jb2wgPSBtX2hhbmRzaGFrZS0+c2VydmVyV2ViU29ja2V0UHJvdG9jb2wo
KTsKLSAgICBpZiAoc2VydmVyUHJvdG9jb2wuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiAiIjsK
LSAgICByZXR1cm4gc2VydmVyUHJvdG9jb2w7Ci19Ci0KLVN0cmluZyBXZWJTb2NrZXRDaGFubmVs
OjpleHRlbnNpb25zKCkKLXsKLSAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAg
ZXh0ZW5zaW9ucyIsIHRoaXMpOwotICAgIGlmICghbV9oYW5kc2hha2UgfHwgbV9oYW5kc2hha2Ut
Pm1vZGUoKSAhPSBXZWJTb2NrZXRIYW5kc2hha2U6OkNvbm5lY3RlZCkKLSAgICAgICAgcmV0dXJu
ICIiOwotICAgIFN0cmluZyBleHRlbnNpb25zID0gbV9oYW5kc2hha2UtPmFjY2VwdGVkRXh0ZW5z
aW9ucygpOwotICAgIGlmIChleHRlbnNpb25zLmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gIiI7
Ci0gICAgcmV0dXJuIGV4dGVuc2lvbnM7Ci19Ci0KLWJvb2wgV2ViU29ja2V0Q2hhbm5lbDo6c2Vu
ZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCi17Ci0gICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRD
aGFubmVsICVwIHNlbmQgJXMiLCB0aGlzLCBtZXNzYWdlLnV0ZjgoKS5kYXRhKCkpOwotICAgIGlm
IChtX3VzZUhpeGllNzZQcm90b2NvbCkgewotICAgICAgICBDU3RyaW5nIHV0ZjggPSBtZXNzYWdl
LnV0ZjgoKTsKLSAgICAgICAgcmV0dXJuIHNlbmRGcmFtZUhpeGllNzYodXRmOC5kYXRhKCksIHV0
ZjgubGVuZ3RoKCkpOwotICAgIH0KLSAgICBlbnF1ZXVlVGV4dEZyYW1lKG1lc3NhZ2UpOwotICAg
IC8vIEFjY29yZGluZyB0byBXZWJTb2NrZXQgQVBJIHNwZWNpZmljYXRpb24sIFdlYlNvY2tldC5z
ZW5kKCkgc2hvdWxkIHJldHVybiB2b2lkIGluc3RlYWQKLSAgICAvLyBvZiBib29sZWFuLiBIb3dl
dmVyLCBvdXIgaW1wbGVtZW50YXRpb24gc3RpbGwgcmV0dXJucyBib29sZWFuIGR1ZSB0byBjb21w
YXRpYmlsaXR5Ci0gICAgLy8gY29uY2VybiAoc2VlIGJ1ZyA2NTg1MCkuCi0gICAgLy8gbV9jaGFu
bmVsLT5zZW5kKCkgbWF5IGhhcHBlbiBsYXRlciwgdGh1cyBpdCdzIG5vdCBhbHdheXMgcG9zc2li
bGUgdG8ga25vdyB3aGV0aGVyCi0gICAgLy8gdGhlIG1lc3NhZ2UgaGFzIGJlZW4gc2VudCB0byB0
aGUgc29ja2V0IHN1Y2Nlc3NmdWxseS4gSW4gdGhpcyBjYXNlLCB3ZSBoYXZlIG5vIGNob2ljZQot
ICAgIC8vIGJ1dCB0byByZXR1cm4gdHJ1ZS4KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBX
ZWJTb2NrZXRDaGFubmVsOjpzZW5kKGNvbnN0IEFycmF5QnVmZmVyJiBiaW5hcnlEYXRhKQotewot
ICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBzZW5kIGFycmF5YnVmZmVyICVw
IiwgdGhpcywgJmJpbmFyeURhdGEpOwotICAgIEFTU0VSVCghbV91c2VIaXhpZTc2UHJvdG9jb2wp
OwotICAgIGVucXVldWVSYXdGcmFtZShXZWJTb2NrZXRGcmFtZTo6T3BDb2RlQmluYXJ5LCBzdGF0
aWNfY2FzdDxjb25zdCBjaGFyKj4oYmluYXJ5RGF0YS5kYXRhKCkpLCBiaW5hcnlEYXRhLmJ5dGVM
ZW5ndGgoKSk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgV2ViU29ja2V0Q2hhbm5lbDo6
c2VuZChjb25zdCBCbG9iJiBiaW5hcnlEYXRhKQotewotICAgIExPRyhOZXR3b3JrLCAiV2ViU29j
a2V0Q2hhbm5lbCAlcCBzZW5kIGJsb2IgJXMiLCB0aGlzLCBiaW5hcnlEYXRhLnVybCgpLnN0cmlu
ZygpLnV0ZjgoKS5kYXRhKCkpOwotICAgIEFTU0VSVCghbV91c2VIaXhpZTc2UHJvdG9jb2wpOwot
ICAgIGVucXVldWVCbG9iRnJhbWUoV2ViU29ja2V0RnJhbWU6Ok9wQ29kZUJpbmFyeSwgYmluYXJ5
RGF0YSk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgV2ViU29ja2V0Q2hhbm5lbDo6c2Vu
ZChjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQotewotICAgIExPRyhOZXR3b3JrLCAiV2Vi
U29ja2V0Q2hhbm5lbCAlcCBzZW5kIGJpbmFyeSAlcCAoJWRCKSIsIHRoaXMsIGRhdGEsIGxlbmd0
aCk7Ci0gICAgQVNTRVJUKCFtX3VzZUhpeGllNzZQcm90b2NvbCk7Ci0gICAgZW5xdWV1ZVJhd0Zy
YW1lKFdlYlNvY2tldEZyYW1lOjpPcENvZGVCaW5hcnksIGRhdGEsIGxlbmd0aCk7Ci0gICAgcmV0
dXJuIHRydWU7Ci19Ci0KLXVuc2lnbmVkIGxvbmcgV2ViU29ja2V0Q2hhbm5lbDo6YnVmZmVyZWRB
bW91bnQoKSBjb25zdAotewotICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBi
dWZmZXJlZEFtb3VudCIsIHRoaXMpOwotICAgIEFTU0VSVChtX2hhbmRsZSk7Ci0gICAgQVNTRVJU
KCFtX3N1c3BlbmRlZCk7Ci0gICAgcmV0dXJuIG1faGFuZGxlLT5idWZmZXJlZEFtb3VudCgpOwot
fQotCi12b2lkIFdlYlNvY2tldENoYW5uZWw6OmNsb3NlKGludCBjb2RlLCBjb25zdCBTdHJpbmcm
IHJlYXNvbikKLXsKLSAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgY2xvc2Ui
LCB0aGlzKTsKLSAgICBBU1NFUlQoIW1fc3VzcGVuZGVkKTsKLSAgICBpZiAoIW1faGFuZGxlKQot
ICAgICAgICByZXR1cm47Ci0gICAgc3RhcnRDbG9zaW5nSGFuZHNoYWtlKGNvZGUsIHJlYXNvbik7
Ci0gICAgaWYgKG1fY2xvc2luZyAmJiAhbV9jbG9zaW5nVGltZXIuaXNBY3RpdmUoKSkKLSAgICAg
ICAgbV9jbG9zaW5nVGltZXIuc3RhcnRPbmVTaG90KDIgKiBUQ1BNYXhpbXVtU2VnbWVudExpZmV0
aW1lKTsKLX0KLQotdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpmYWlsKGNvbnN0IFN0cmluZyYgcmVh
c29uKQotewotICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBmYWlsOiAlcyIs
IHRoaXMsIHJlYXNvbi51dGY4KCkuZGF0YSgpKTsKLSAgICBBU1NFUlQoIW1fc3VzcGVuZGVkKTsK
LSAgICBpZiAobV9kb2N1bWVudCkKLSAgICAgICAgbV9kb2N1bWVudC0+YWRkQ29uc29sZU1lc3Nh
Z2UoSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsIHJl
YXNvbiwgbV9oYW5kc2hha2UtPmNsaWVudE9yaWdpbigpKTsKLSAgICBpZiAoIW1fdXNlSGl4aWU3
NlByb3RvY29sKSB7Ci0gICAgICAgIC8vIEh5YmktMTAgc3BlY2lmaWNhdGlvbiBleHBsaWNpdGx5
IHN0YXRlcyB3ZSBtdXN0IG5vdCBjb250aW51ZSB0byBoYW5kbGUgaW5jb21pbmcgZGF0YQotICAg
ICAgICAvLyBvbmNlIHRoZSBXZWJTb2NrZXQgY29ubmVjdGlvbiBpcyBmYWlsZWQgKHNlY3Rpb24g
Ny4xLjcpLgotICAgICAgICAvLyBGSVhNRTogU2hvdWxkIHdlIGRvIHRoaXMgaW4gaGl4aWUtNzYg
dG9vPwotICAgICAgICBtX3Nob3VsZERpc2NhcmRSZWNlaXZlZERhdGEgPSB0cnVlOwotICAgICAg
ICBpZiAobV9idWZmZXIpCi0gICAgICAgICAgICBza2lwQnVmZmVyKG1fYnVmZmVyU2l6ZSk7IC8v
IFNhdmUgbWVtb3J5LgotICAgICAgICBtX2hhc0NvbnRpbnVvdXNGcmFtZSA9IGZhbHNlOwotICAg
ICAgICBtX2NvbnRpbnVvdXNGcmFtZURhdGEuY2xlYXIoKTsKLSAgICB9Ci0gICAgaWYgKG1faGFu
ZGxlICYmICFtX2Nsb3NlZCkKLSAgICAgICAgbV9oYW5kbGUtPmRpc2Nvbm5lY3QoKTsgLy8gV2ls
bCBjYWxsIGRpZENsb3NlKCkuCi19Ci0KLXZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6ZGlzY29ubmVj
dCgpCi17Ci0gICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVwIGRpc2Nvbm5lY3Qi
LCB0aGlzKTsKLSAgICBpZiAobV9pZGVudGlmaWVyICYmIG1fZG9jdW1lbnQpCi0gICAgICAgIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ2xvc2VXZWJTb2NrZXQobV9kb2N1bWVudCwgbV9p
ZGVudGlmaWVyKTsKLSAgICBpZiAobV9oYW5kc2hha2UpCi0gICAgICAgIG1faGFuZHNoYWtlLT5j
bGVhclNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICBtX2NsaWVudCA9IDA7Ci0gICAgbV9k
b2N1bWVudCA9IDA7Ci0gICAgaWYgKG1faGFuZGxlKQotICAgICAgICBtX2hhbmRsZS0+ZGlzY29u
bmVjdCgpOwotfQotCi12b2lkIFdlYlNvY2tldENoYW5uZWw6OnN1c3BlbmQoKQotewotICAgIG1f
c3VzcGVuZGVkID0gdHJ1ZTsKLX0KLQotdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpyZXN1bWUoKQot
ewotICAgIG1fc3VzcGVuZGVkID0gZmFsc2U7Ci0gICAgaWYgKChtX2J1ZmZlciB8fCBtX2Nsb3Nl
ZCkgJiYgbV9jbGllbnQgJiYgIW1fcmVzdW1lVGltZXIuaXNBY3RpdmUoKSkKLSAgICAgICAgbV9y
ZXN1bWVUaW1lci5zdGFydE9uZVNob3QoMCk7Ci19Ci0KLXZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6
ZGlkT3BlblNvY2tldFN0cmVhbShTb2NrZXRTdHJlYW1IYW5kbGUqIGhhbmRsZSkKLXsKLSAgICBM
T0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgZGlkT3BlblNvY2tldFN0cmVhbSIsIHRo
aXMpOwotICAgIEFTU0VSVChoYW5kbGUgPT0gbV9oYW5kbGUpOwotICAgIGlmICghbV9kb2N1bWVu
dCkKLSAgICAgICAgcmV0dXJuOwotICAgIGlmIChtX2lkZW50aWZpZXIpCi0gICAgICAgIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFNlbmRXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0KG1f
ZG9jdW1lbnQsIG1faWRlbnRpZmllciwgbV9oYW5kc2hha2UtPmNsaWVudEhhbmRzaGFrZVJlcXVl
c3QoKSk7Ci0gICAgQ1N0cmluZyBoYW5kc2hha2VNZXNzYWdlID0gbV9oYW5kc2hha2UtPmNsaWVu
dEhhbmRzaGFrZU1lc3NhZ2UoKTsKLSAgICBpZiAoIWhhbmRsZS0+c2VuZChoYW5kc2hha2VNZXNz
YWdlLmRhdGEoKSwgaGFuZHNoYWtlTWVzc2FnZS5sZW5ndGgoKSkpCi0gICAgICAgIGZhaWwoIkZh
aWxlZCB0byBzZW5kIFdlYlNvY2tldCBoYW5kc2hha2UuIik7Ci19Ci0KLXZvaWQgV2ViU29ja2V0
Q2hhbm5lbDo6ZGlkQ2xvc2VTb2NrZXRTdHJlYW0oU29ja2V0U3RyZWFtSGFuZGxlKiBoYW5kbGUp
Ci17Ci0gICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVwIGRpZENsb3NlU29ja2V0
U3RyZWFtIiwgdGhpcyk7Ci0gICAgaWYgKG1faWRlbnRpZmllciAmJiBtX2RvY3VtZW50KQotICAg
ICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENsb3NlV2ViU29ja2V0KG1fZG9jdW1l
bnQsIG1faWRlbnRpZmllcik7Ci0gICAgQVNTRVJUX1VOVVNFRChoYW5kbGUsIGhhbmRsZSA9PSBt
X2hhbmRsZSB8fCAhbV9oYW5kbGUpOwotICAgIG1fY2xvc2VkID0gdHJ1ZTsKLSAgICBpZiAobV9j
bG9zaW5nVGltZXIuaXNBY3RpdmUoKSkKLSAgICAgICAgbV9jbG9zaW5nVGltZXIuc3RvcCgpOwot
ICAgIGlmICghbV91c2VIaXhpZTc2UHJvdG9jb2wgJiYgbV9vdXRnb2luZ0ZyYW1lUXVldWVTdGF0
dXMgIT0gT3V0Z29pbmdGcmFtZVF1ZXVlQ2xvc2VkKQotICAgICAgICBhYm9ydE91dGdvaW5nRnJh
bWVRdWV1ZSgpOwotICAgIGlmIChtX2hhbmRsZSkgewotICAgICAgICBtX3VuaGFuZGxlZEJ1ZmZl
cmVkQW1vdW50ID0gbV9oYW5kbGUtPmJ1ZmZlcmVkQW1vdW50KCk7Ci0gICAgICAgIGlmIChtX3N1
c3BlbmRlZCkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgV2ViU29ja2V0Q2hhbm5lbENs
aWVudCogY2xpZW50ID0gbV9jbGllbnQ7Ci0gICAgICAgIG1fY2xpZW50ID0gMDsKLSAgICAgICAg
bV9kb2N1bWVudCA9IDA7Ci0gICAgICAgIG1faGFuZGxlID0gMDsKLSAgICAgICAgaWYgKGNsaWVu
dCkKLSAgICAgICAgICAgIGNsaWVudC0+ZGlkQ2xvc2UobV91bmhhbmRsZWRCdWZmZXJlZEFtb3Vu
dCwgbV9yZWNlaXZlZENsb3NpbmdIYW5kc2hha2UgPyBXZWJTb2NrZXRDaGFubmVsQ2xpZW50OjpD
bG9zaW5nSGFuZHNoYWtlQ29tcGxldGUgOiBXZWJTb2NrZXRDaGFubmVsQ2xpZW50OjpDbG9zaW5n
SGFuZHNoYWtlSW5jb21wbGV0ZSwgbV9jbG9zZUV2ZW50Q29kZSwgbV9jbG9zZUV2ZW50UmVhc29u
KTsKLSAgICB9Ci0gICAgZGVyZWYoKTsKLX0KLQotdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpkaWRS
ZWNlaXZlU29ja2V0U3RyZWFtRGF0YShTb2NrZXRTdHJlYW1IYW5kbGUqIGhhbmRsZSwgY29uc3Qg
Y2hhciogZGF0YSwgaW50IGxlbikKLXsKLSAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENoYW5u
ZWwgJXAgZGlkUmVjZWl2ZVNvY2tldFN0cmVhbURhdGEgJWQiLCB0aGlzLCBsZW4pOwotICAgIFJl
ZlB0cjxXZWJTb2NrZXRDaGFubmVsPiBwcm90ZWN0KHRoaXMpOyAvLyBUaGUgY2xpZW50IGNhbiBj
bG9zZSB0aGUgY2hhbm5lbCwgcG90ZW50aWFsbHkgcmVtb3ZpbmcgdGhlIGxhc3QgcmVmZXJlbmNl
LgotICAgIEFTU0VSVChoYW5kbGUgPT0gbV9oYW5kbGUpOwotICAgIGlmICghbV9kb2N1bWVudCkg
ewotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChsZW4gPD0gMCkgewotICAgICAgICBo
YW5kbGUtPmRpc2Nvbm5lY3QoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAoIW1f
Y2xpZW50KSB7Ci0gICAgICAgIG1fc2hvdWxkRGlzY2FyZFJlY2VpdmVkRGF0YSA9IHRydWU7Ci0g
ICAgICAgIGhhbmRsZS0+ZGlzY29ubmVjdCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAg
IGlmIChtX3Nob3VsZERpc2NhcmRSZWNlaXZlZERhdGEpCi0gICAgICAgIHJldHVybjsKLSAgICBp
ZiAoIWFwcGVuZFRvQnVmZmVyKGRhdGEsIGxlbikpIHsKLSAgICAgICAgbV9zaG91bGREaXNjYXJk
UmVjZWl2ZWREYXRhID0gdHJ1ZTsKLSAgICAgICAgZmFpbCgiUmFuIG91dCBvZiBtZW1vcnkgd2hp
bGUgcmVjZWl2aW5nIFdlYlNvY2tldCBkYXRhLiIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
ICAgIHdoaWxlICghbV9zdXNwZW5kZWQgJiYgbV9jbGllbnQgJiYgbV9idWZmZXIpCi0gICAgICAg
IGlmICghcHJvY2Vzc0J1ZmZlcigpKQotICAgICAgICAgICAgYnJlYWs7Ci19Ci0KLXZvaWQgV2Vi
U29ja2V0Q2hhbm5lbDo6ZGlkVXBkYXRlQnVmZmVyZWRBbW91bnQoU29ja2V0U3RyZWFtSGFuZGxl
Kiwgc2l6ZV90IGJ1ZmZlcmVkQW1vdW50KQotewotICAgIGlmIChtX2NsaWVudCkKLSAgICAgICAg
bV9jbGllbnQtPmRpZFVwZGF0ZUJ1ZmZlcmVkQW1vdW50KGJ1ZmZlcmVkQW1vdW50KTsKLX0KLQot
dm9pZCBXZWJTb2NrZXRDaGFubmVsOjpkaWRGYWlsU29ja2V0U3RyZWFtKFNvY2tldFN0cmVhbUhh
bmRsZSogaGFuZGxlLCBjb25zdCBTb2NrZXRTdHJlYW1FcnJvciYgZXJyb3IpCi17Ci0gICAgTE9H
KE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVwIGRpZEZhaWxTb2NrZXRTdHJlYW0iLCB0aGlz
KTsKLSAgICBBU1NFUlQoaGFuZGxlID09IG1faGFuZGxlIHx8ICFtX2hhbmRsZSk7Ci0gICAgaWYg
KG1fZG9jdW1lbnQpIHsKLSAgICAgICAgU3RyaW5nIG1lc3NhZ2U7Ci0gICAgICAgIGlmIChlcnJv
ci5pc051bGwoKSkKLSAgICAgICAgICAgIG1lc3NhZ2UgPSAiV2ViU29ja2V0IG5ldHdvcmsgZXJy
b3IiOwotICAgICAgICBlbHNlIGlmIChlcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpLmlzTnVs
bCgpKQotICAgICAgICAgICAgbWVzc2FnZSA9ICJXZWJTb2NrZXQgbmV0d29yayBlcnJvcjogZXJy
b3IgY29kZSAiICsgU3RyaW5nOjpudW1iZXIoZXJyb3IuZXJyb3JDb2RlKCkpOwotICAgICAgICBl
bHNlCi0gICAgICAgICAgICBtZXNzYWdlID0gIldlYlNvY2tldCBuZXR3b3JrIGVycm9yOiAiICsg
ZXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24oKTsKLSAgICAgICAgU3RyaW5nIGZhaWxpbmdVUkwg
PSBlcnJvci5mYWlsaW5nVVJMKCk7Ci0gICAgICAgIEFTU0VSVChmYWlsaW5nVVJMLmlzTnVsbCgp
IHx8IG1faGFuZHNoYWtlLT51cmwoKS5zdHJpbmcoKSA9PSBmYWlsaW5nVVJMKTsKLSAgICAgICAg
aWYgKGZhaWxpbmdVUkwuaXNOdWxsKCkpCi0gICAgICAgICAgICBmYWlsaW5nVVJMID0gbV9oYW5k
c2hha2UtPnVybCgpLnN0cmluZygpOwotICAgICAgICBtX2RvY3VtZW50LT5hZGRDb25zb2xlTWVz
c2FnZShOZXR3b3JrTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxl
dmVsLCBtZXNzYWdlLCBmYWlsaW5nVVJMKTsKLSAgICB9Ci0gICAgbV9zaG91bGREaXNjYXJkUmVj
ZWl2ZWREYXRhID0gdHJ1ZTsKLSAgICBoYW5kbGUtPmRpc2Nvbm5lY3QoKTsKLX0KLQotdm9pZCBX
ZWJTb2NrZXRDaGFubmVsOjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoU29ja2V0
U3RyZWFtSGFuZGxlKiwgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKQotewotfQotCi12
b2lkIFdlYlNvY2tldENoYW5uZWw6OmRpZENhbmNlbEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFNv
Y2tldFN0cmVhbUhhbmRsZSosIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikKLXsKLX0K
LQotI2lmIEVOQUJMRShCTE9CKQotdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpkaWRTdGFydExvYWRp
bmcoKQotewotICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBkaWRTdGFydExv
YWRpbmciLCB0aGlzKTsKLSAgICBBU1NFUlQobV9ibG9iTG9hZGVyKTsKLSAgICBBU1NFUlQobV9i
bG9iTG9hZGVyU3RhdHVzID09IEJsb2JMb2FkZXJTdGFydGVkKTsKLX0KLQotdm9pZCBXZWJTb2Nr
ZXRDaGFubmVsOjpkaWRSZWNlaXZlRGF0YSgpCi17Ci0gICAgTE9HKE5ldHdvcmssICJXZWJTb2Nr
ZXRDaGFubmVsICVwIGRpZFJlY2VpdmVEYXRhIiwgdGhpcyk7Ci0gICAgQVNTRVJUKG1fYmxvYkxv
YWRlcik7Ci0gICAgQVNTRVJUKG1fYmxvYkxvYWRlclN0YXR1cyA9PSBCbG9iTG9hZGVyU3RhcnRl
ZCk7Ci19Ci0KLXZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6ZGlkRmluaXNoTG9hZGluZygpCi17Ci0g
ICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVwIGRpZEZpbmlzaExvYWRpbmciLCB0
aGlzKTsKLSAgICBBU1NFUlQobV9ibG9iTG9hZGVyKTsKLSAgICBBU1NFUlQobV9ibG9iTG9hZGVy
U3RhdHVzID09IEJsb2JMb2FkZXJTdGFydGVkKTsKLSAgICBtX2Jsb2JMb2FkZXJTdGF0dXMgPSBC
bG9iTG9hZGVyRmluaXNoZWQ7Ci0gICAgcHJvY2Vzc091dGdvaW5nRnJhbWVRdWV1ZSgpOwotICAg
IGRlcmVmKCk7Ci19Ci0KLXZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6ZGlkRmFpbChpbnQgZXJyb3JD
b2RlKQotewotICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBkaWRGYWlsICVk
IiwgdGhpcywgZXJyb3JDb2RlKTsKLSAgICBBU1NFUlQobV9ibG9iTG9hZGVyKTsKLSAgICBBU1NF
UlQobV9ibG9iTG9hZGVyU3RhdHVzID09IEJsb2JMb2FkZXJTdGFydGVkKTsKLSAgICBtX2Jsb2JM
b2FkZXIuY2xlYXIoKTsKLSAgICBtX2Jsb2JMb2FkZXJTdGF0dXMgPSBCbG9iTG9hZGVyRmFpbGVk
OwotICAgIGZhaWwoIkZhaWxlZCB0byBsb2FkIEJsb2I6IGVycm9yIGNvZGUgPSAiICsgU3RyaW5n
OjpudW1iZXIoZXJyb3JDb2RlKSk7IC8vIEZJWE1FOiBHZW5lcmF0ZSBodW1hbi1mcmllbmRseSBy
ZWFzb24gbWVzc2FnZS4KLSAgICBkZXJlZigpOwotfQotI2VuZGlmCi0KLWJvb2wgV2ViU29ja2V0
Q2hhbm5lbDo6YXBwZW5kVG9CdWZmZXIoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbikKLXsK
LSAgICBzaXplX3QgbmV3QnVmZmVyU2l6ZSA9IG1fYnVmZmVyU2l6ZSArIGxlbjsKLSAgICBpZiAo
bmV3QnVmZmVyU2l6ZSA8IG1fYnVmZmVyU2l6ZSkgewotICAgICAgICBMT0coTmV0d29yaywgIldl
YlNvY2tldCBidWZmZXIgb3ZlcmZsb3cgKCVsdSslbHUpIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQg
bG9uZz4obV9idWZmZXJTaXplKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4obGVuKSk7Ci0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gICAgY2hhciogbmV3QnVmZmVyID0gMDsKLSAg
ICBpZiAoIXRyeUZhc3RNYWxsb2MobmV3QnVmZmVyU2l6ZSkuZ2V0VmFsdWUobmV3QnVmZmVyKSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKG1fYnVmZmVyKQotICAgICAgICBtZW1j
cHkobmV3QnVmZmVyLCBtX2J1ZmZlciwgbV9idWZmZXJTaXplKTsKLSAgICBtZW1jcHkobmV3QnVm
ZmVyICsgbV9idWZmZXJTaXplLCBkYXRhLCBsZW4pOwotICAgIGZhc3RGcmVlKG1fYnVmZmVyKTsK
LSAgICBtX2J1ZmZlciA9IG5ld0J1ZmZlcjsKLSAgICBtX2J1ZmZlclNpemUgPSBuZXdCdWZmZXJT
aXplOwotICAgIHJldHVybiB0cnVlOwotfQotCi12b2lkIFdlYlNvY2tldENoYW5uZWw6OnNraXBC
dWZmZXIoc2l6ZV90IGxlbikKLXsKLSAgICBBU1NFUlQobGVuIDw9IG1fYnVmZmVyU2l6ZSk7Ci0g
ICAgbV9idWZmZXJTaXplIC09IGxlbjsKLSAgICBpZiAoIW1fYnVmZmVyU2l6ZSkgewotICAgICAg
ICBmYXN0RnJlZShtX2J1ZmZlcik7Ci0gICAgICAgIG1fYnVmZmVyID0gMDsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLSAgICBtZW1tb3ZlKG1fYnVmZmVyLCBtX2J1ZmZlciArIGxlbiwgbV9idWZm
ZXJTaXplKTsKLX0KLQotYm9vbCBXZWJTb2NrZXRDaGFubmVsOjpwcm9jZXNzQnVmZmVyKCkKLXsK
LSAgICBBU1NFUlQoIW1fc3VzcGVuZGVkKTsKLSAgICBBU1NFUlQobV9jbGllbnQpOwotICAgIEFT
U0VSVChtX2J1ZmZlcik7Ci0gICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVwIHBy
b2Nlc3NCdWZmZXIgJWx1IiwgdGhpcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4obV9idWZm
ZXJTaXplKSk7Ci0KLSAgICBpZiAobV9zaG91bGREaXNjYXJkUmVjZWl2ZWREYXRhKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAobV9yZWNlaXZlZENsb3NpbmdIYW5kc2hha2UpIHsK
LSAgICAgICAgc2tpcEJ1ZmZlcihtX2J1ZmZlclNpemUpOwotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgfQotCi0gICAgUmVmUHRyPFdlYlNvY2tldENoYW5uZWw+IHByb3RlY3QodGhpcyk7IC8v
IFRoZSBjbGllbnQgY2FuIGNsb3NlIHRoZSBjaGFubmVsLCBwb3RlbnRpYWxseSByZW1vdmluZyB0
aGUgbGFzdCByZWZlcmVuY2UuCi0KLSAgICBpZiAobV9oYW5kc2hha2UtPm1vZGUoKSA9PSBXZWJT
b2NrZXRIYW5kc2hha2U6OkluY29tcGxldGUpIHsKLSAgICAgICAgaW50IGhlYWRlckxlbmd0aCA9
IG1faGFuZHNoYWtlLT5yZWFkU2VydmVySGFuZHNoYWtlKG1fYnVmZmVyLCBtX2J1ZmZlclNpemUp
OwotICAgICAgICBpZiAoaGVhZGVyTGVuZ3RoIDw9IDApCi0gICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgICAgIGlmIChtX2hhbmRzaGFrZS0+bW9kZSgpID09IFdlYlNvY2tldEhhbmRzaGFr
ZTo6Q29ubmVjdGVkKSB7Ci0gICAgICAgICAgICBpZiAobV9pZGVudGlmaWVyKQotICAgICAgICAg
ICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVdlYlNvY2tldEhhbmRz
aGFrZVJlc3BvbnNlKG1fZG9jdW1lbnQsIG1faWRlbnRpZmllciwgbV9oYW5kc2hha2UtPnNlcnZl
ckhhbmRzaGFrZVJlc3BvbnNlKCkpOwotICAgICAgICAgICAgaWYgKCFtX2hhbmRzaGFrZS0+c2Vy
dmVyU2V0Q29va2llKCkuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGNvb2tpZXNF
bmFibGVkKG1fZG9jdW1lbnQpKSB7Ci0gICAgICAgICAgICAgICAgICAgIEV4Y2VwdGlvbkNvZGUg
ZWM7IC8vIEV4Y2VwdGlvbiAoZm9yIHNhbmRib3hlZCBkb2N1bWVudHMpIGlnbm9yZWQuCi0gICAg
ICAgICAgICAgICAgICAgIG1fZG9jdW1lbnQtPnNldENvb2tpZShtX2hhbmRzaGFrZS0+c2VydmVy
U2V0Q29va2llKCksIGVjKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAvLyBGSVhNRTogaGFuZGxlIHNldC1jb29raWUyLgotICAgICAgICAgICAgTE9HKE5l
dHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVwIGNvbm5lY3RlZCIsIHRoaXMpOwotICAgICAgICAg
ICAgc2tpcEJ1ZmZlcihoZWFkZXJMZW5ndGgpOwotICAgICAgICAgICAgbV9jbGllbnQtPmRpZENv
bm5lY3QoKTsKLSAgICAgICAgICAgIExPRyhOZXR3b3JrLCAicmVtYWluaW5nIGluIHJlYWQgYnVm
ICVsdSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+KG1fYnVmZmVyU2l6ZSkpOwotICAgICAg
ICAgICAgcmV0dXJuIG1fYnVmZmVyOwotICAgICAgICB9Ci0gICAgICAgIEFTU0VSVChtX2hhbmRz
aGFrZS0+bW9kZSgpID09IFdlYlNvY2tldEhhbmRzaGFrZTo6RmFpbGVkKTsKLSAgICAgICAgTE9H
KE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVwIGNvbm5lY3Rpb24gZmFpbGVkIiwgdGhpcyk7
Ci0gICAgICAgIHNraXBCdWZmZXIoaGVhZGVyTGVuZ3RoKTsKLSAgICAgICAgbV9zaG91bGREaXNj
YXJkUmVjZWl2ZWREYXRhID0gdHJ1ZTsKLSAgICAgICAgZmFpbChtX2hhbmRzaGFrZS0+ZmFpbHVy
ZVJlYXNvbigpKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICBpZiAobV9oYW5k
c2hha2UtPm1vZGUoKSAhPSBXZWJTb2NrZXRIYW5kc2hha2U6OkNvbm5lY3RlZCkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKG1fdXNlSGl4aWU3NlByb3RvY29sKQotICAgICAgICBy
ZXR1cm4gcHJvY2Vzc0ZyYW1lSGl4aWU3NigpOwotCi0gICAgcmV0dXJuIHByb2Nlc3NGcmFtZSgp
OwotfQotCi12b2lkIFdlYlNvY2tldENoYW5uZWw6OnJlc3VtZVRpbWVyRmlyZWQoVGltZXI8V2Vi
U29ja2V0Q2hhbm5lbD4qIHRpbWVyKQotewotICAgIEFTU0VSVF9VTlVTRUQodGltZXIsIHRpbWVy
ID09ICZtX3Jlc3VtZVRpbWVyKTsKLQotICAgIFJlZlB0cjxXZWJTb2NrZXRDaGFubmVsPiBwcm90
ZWN0KHRoaXMpOyAvLyBUaGUgY2xpZW50IGNhbiBjbG9zZSB0aGUgY2hhbm5lbCwgcG90ZW50aWFs
bHkgcmVtb3ZpbmcgdGhlIGxhc3QgcmVmZXJlbmNlLgotICAgIHdoaWxlICghbV9zdXNwZW5kZWQg
JiYgbV9jbGllbnQgJiYgbV9idWZmZXIpCi0gICAgICAgIGlmICghcHJvY2Vzc0J1ZmZlcigpKQot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgaWYgKCFtX3N1c3BlbmRlZCAmJiBtX2NsaWVudCAmJiBt
X2Nsb3NlZCAmJiBtX2hhbmRsZSkKLSAgICAgICAgZGlkQ2xvc2VTb2NrZXRTdHJlYW0obV9oYW5k
bGUuZ2V0KCkpOwotfQotCi12b2lkIFdlYlNvY2tldENoYW5uZWw6OnN0YXJ0Q2xvc2luZ0hhbmRz
aGFrZShpbnQgY29kZSwgY29uc3QgU3RyaW5nJiByZWFzb24pCi17Ci0gICAgTE9HKE5ldHdvcmss
ICJXZWJTb2NrZXRDaGFubmVsICVwIGNsb3NpbmcgJWQgJWQiLCB0aGlzLCBtX2Nsb3NpbmcsIG1f
cmVjZWl2ZWRDbG9zaW5nSGFuZHNoYWtlKTsKLSAgICBpZiAobV9jbG9zaW5nKQotICAgICAgICBy
ZXR1cm47Ci0gICAgQVNTRVJUKG1faGFuZGxlKTsKLSAgICBpZiAobV91c2VIaXhpZTc2UHJvdG9j
b2wpIHsKLSAgICAgICAgVmVjdG9yPGNoYXI+IGJ1ZjsKLSAgICAgICAgYnVmLmFwcGVuZCgnXHhm
ZicpOwotICAgICAgICBidWYuYXBwZW5kKCdcMCcpOwotICAgICAgICBpZiAoIW1faGFuZGxlLT5z
ZW5kKGJ1Zi5kYXRhKCksIGJ1Zi5zaXplKCkpKSB7Ci0gICAgICAgICAgICBtX2hhbmRsZS0+ZGlz
Y29ubmVjdCgpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgfSBlbHNlIHsK
LSAgICAgICAgVmVjdG9yPGNoYXI+IGJ1ZjsKLSAgICAgICAgaWYgKCFtX3JlY2VpdmVkQ2xvc2lu
Z0hhbmRzaGFrZSAmJiBjb2RlICE9IENsb3NlRXZlbnRDb2RlTm90U3BlY2lmaWVkKSB7Ci0gICAg
ICAgICAgICB1bnNpZ25lZCBjaGFyIGhpZ2hCeXRlID0gY29kZSA+PiA4OwotICAgICAgICAgICAg
dW5zaWduZWQgY2hhciBsb3dCeXRlID0gY29kZTsKLSAgICAgICAgICAgIGJ1Zi5hcHBlbmQoc3Rh
dGljX2Nhc3Q8Y2hhcj4oaGlnaEJ5dGUpKTsKLSAgICAgICAgICAgIGJ1Zi5hcHBlbmQoc3RhdGlj
X2Nhc3Q8Y2hhcj4obG93Qnl0ZSkpOwotICAgICAgICAgICAgYnVmLmFwcGVuZChyZWFzb24udXRm
OCgpLmRhdGEoKSwgcmVhc29uLnV0ZjgoKS5sZW5ndGgoKSk7Ci0gICAgICAgIH0KLSAgICAgICAg
ZW5xdWV1ZVJhd0ZyYW1lKFdlYlNvY2tldEZyYW1lOjpPcENvZGVDbG9zZSwgYnVmLmRhdGEoKSwg
YnVmLnNpemUoKSk7Ci0gICAgfQotICAgIG1fY2xvc2luZyA9IHRydWU7Ci0gICAgaWYgKG1fY2xp
ZW50KQotICAgICAgICBtX2NsaWVudC0+ZGlkU3RhcnRDbG9zaW5nSGFuZHNoYWtlKCk7Ci19Ci0K
LXZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6Y2xvc2luZ1RpbWVyRmlyZWQoVGltZXI8V2ViU29ja2V0
Q2hhbm5lbD4qIHRpbWVyKQotewotICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAl
cCBjbG9zaW5nIHRpbWVyIiwgdGhpcyk7Ci0gICAgQVNTRVJUX1VOVVNFRCh0aW1lciwgJm1fY2xv
c2luZ1RpbWVyID09IHRpbWVyKTsKLSAgICBpZiAobV9oYW5kbGUpCi0gICAgICAgIG1faGFuZGxl
LT5kaXNjb25uZWN0KCk7Ci19Ci0KLVdlYlNvY2tldENoYW5uZWw6OlBhcnNlRnJhbWVSZXN1bHQg
V2ViU29ja2V0Q2hhbm5lbDo6cGFyc2VGcmFtZShXZWJTb2NrZXRGcmFtZSYgZnJhbWUsIGNvbnN0
IGNoYXIqJiBmcmFtZUVuZCkKLXsKLSAgICBjb25zdCBjaGFyKiBwID0gbV9idWZmZXI7Ci0gICAg
Y29uc3QgY2hhciogYnVmZmVyRW5kID0gbV9idWZmZXIgKyBtX2J1ZmZlclNpemU7Ci0KLSAgICBp
ZiAobV9idWZmZXJTaXplIDwgMikKLSAgICAgICAgcmV0dXJuIEZyYW1lSW5jb21wbGV0ZTsKLQot
ICAgIHVuc2lnbmVkIGNoYXIgZmlyc3RCeXRlID0gKnArKzsKLSAgICB1bnNpZ25lZCBjaGFyIHNl
Y29uZEJ5dGUgPSAqcCsrOwotCi0gICAgYm9vbCBmaW5hbCA9IGZpcnN0Qnl0ZSAmIGZpbmFsQml0
OwotICAgIGJvb2wgY29tcHJlc3MgPSBmaXJzdEJ5dGUgJiBjb21wcmVzc0JpdDsKLSAgICBib29s
IHJlc2VydmVkMiA9IGZpcnN0Qnl0ZSAmIHJlc2VydmVkMkJpdDsKLSAgICBib29sIHJlc2VydmVk
MyA9IGZpcnN0Qnl0ZSAmIHJlc2VydmVkM0JpdDsKLSAgICB1bnNpZ25lZCBjaGFyIG9wQ29kZSA9
IGZpcnN0Qnl0ZSAmIG9wQ29kZU1hc2s7Ci0KLSAgICBib29sIG1hc2tlZCA9IHNlY29uZEJ5dGUg
JiBtYXNrQml0OwotICAgIHVpbnQ2NF90IHBheWxvYWRMZW5ndGg2NCA9IHNlY29uZEJ5dGUgJiBw
YXlsb2FkTGVuZ3RoTWFzazsKLSAgICBpZiAocGF5bG9hZExlbmd0aDY0ID4gbWF4UGF5bG9hZExl
bmd0aFdpdGhvdXRFeHRlbmRlZExlbmd0aEZpZWxkKSB7Ci0gICAgICAgIGludCBleHRlbmRlZFBh
eWxvYWRMZW5ndGhTaXplOwotICAgICAgICBpZiAocGF5bG9hZExlbmd0aDY0ID09IHBheWxvYWRM
ZW5ndGhXaXRoVHdvQnl0ZUV4dGVuZGVkTGVuZ3RoRmllbGQpCi0gICAgICAgICAgICBleHRlbmRl
ZFBheWxvYWRMZW5ndGhTaXplID0gMjsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBBU1NF
UlQocGF5bG9hZExlbmd0aDY0ID09IHBheWxvYWRMZW5ndGhXaXRoRWlnaHRCeXRlRXh0ZW5kZWRM
ZW5ndGhGaWVsZCk7Ci0gICAgICAgICAgICBleHRlbmRlZFBheWxvYWRMZW5ndGhTaXplID0gODsK
LSAgICAgICAgfQotICAgICAgICBpZiAoYnVmZmVyRW5kIC0gcCA8IGV4dGVuZGVkUGF5bG9hZExl
bmd0aFNpemUpCi0gICAgICAgICAgICByZXR1cm4gRnJhbWVJbmNvbXBsZXRlOwotICAgICAgICBw
YXlsb2FkTGVuZ3RoNjQgPSAwOwotICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGV4dGVuZGVk
UGF5bG9hZExlbmd0aFNpemU7ICsraSkgewotICAgICAgICAgICAgcGF5bG9hZExlbmd0aDY0IDw8
PSA4OwotICAgICAgICAgICAgcGF5bG9hZExlbmd0aDY0IHw9IHN0YXRpY19jYXN0PHVuc2lnbmVk
IGNoYXI+KCpwKyspOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLy8gRklYTUU6IFVJTlQ2NF9D
KDB4N0ZGRkZGRkZGRkZGRkZGRikgc2hvdWxkIGJlIHVzZWQgYnV0IGl0IGRpZCBub3QgY29tcGls
ZSBvbiBRdCBib3RzLgotI2lmIENPTVBJTEVSKE1TVkMpCi0gICAgc3RhdGljIGNvbnN0IHVpbnQ2
NF90IG1heFBheWxvYWRMZW5ndGggPSAweDdGRkZGRkZGRkZGRkZGRkZ1aTY0OwotI2Vsc2UKLSAg
ICBzdGF0aWMgY29uc3QgdWludDY0X3QgbWF4UGF5bG9hZExlbmd0aCA9IDB4N0ZGRkZGRkZGRkZG
RkZGRnVsbDsKLSNlbmRpZgotICAgIHNpemVfdCBtYXNraW5nS2V5TGVuZ3RoID0gbWFza2VkID8g
bWFza2luZ0tleVdpZHRoSW5CeXRlcyA6IDA7Ci0gICAgaWYgKHBheWxvYWRMZW5ndGg2NCA+IG1h
eFBheWxvYWRMZW5ndGggfHwgcGF5bG9hZExlbmd0aDY0ICsgbWFza2luZ0tleUxlbmd0aCA+IG51
bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpKSB7Ci0gICAgICAgIGZhaWwoIldlYlNvY2tldCBm
cmFtZSBsZW5ndGggdG9vIGxhcmdlOiAiICsgU3RyaW5nOjpudW1iZXIocGF5bG9hZExlbmd0aDY0
KSArICIgYnl0ZXMiKTsKLSAgICAgICAgcmV0dXJuIEZyYW1lRXJyb3I7Ci0gICAgfQotICAgIHNp
emVfdCBwYXlsb2FkTGVuZ3RoID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihwYXlsb2FkTGVuZ3RoNjQp
OwotCi0gICAgaWYgKHN0YXRpY19jYXN0PHNpemVfdD4oYnVmZmVyRW5kIC0gcCkgPCBtYXNraW5n
S2V5TGVuZ3RoICsgcGF5bG9hZExlbmd0aCkKLSAgICAgICAgcmV0dXJuIEZyYW1lSW5jb21wbGV0
ZTsKLQotICAgIGlmIChtYXNrZWQpIHsKLSAgICAgICAgY29uc3QgY2hhciogbWFza2luZ0tleSA9
IHA7Ci0gICAgICAgIGNoYXIqIHBheWxvYWQgPSBjb25zdF9jYXN0PGNoYXIqPihwICsgbWFza2lu
Z0tleVdpZHRoSW5CeXRlcyk7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcGF5bG9h
ZExlbmd0aDsgKytpKQotICAgICAgICAgICAgcGF5bG9hZFtpXSBePSBtYXNraW5nS2V5W2kgJSBt
YXNraW5nS2V5V2lkdGhJbkJ5dGVzXTsgLy8gVW5tYXNrIHRoZSBwYXlsb2FkLgotICAgIH0KLQot
ICAgIGZyYW1lLm9wQ29kZSA9IHN0YXRpY19jYXN0PFdlYlNvY2tldEZyYW1lOjpPcENvZGU+KG9w
Q29kZSk7Ci0gICAgZnJhbWUuZmluYWwgPSBmaW5hbDsKLSAgICBmcmFtZS5jb21wcmVzcyA9IGNv
bXByZXNzOwotICAgIGZyYW1lLnJlc2VydmVkMiA9IHJlc2VydmVkMjsKLSAgICBmcmFtZS5yZXNl
cnZlZDMgPSByZXNlcnZlZDM7Ci0gICAgZnJhbWUubWFza2VkID0gbWFza2VkOwotICAgIGZyYW1l
LnBheWxvYWQgPSBwICsgbWFza2luZ0tleUxlbmd0aDsKLSAgICBmcmFtZS5wYXlsb2FkTGVuZ3Ro
ID0gcGF5bG9hZExlbmd0aDsKLSAgICBmcmFtZUVuZCA9IHAgKyBtYXNraW5nS2V5TGVuZ3RoICsg
cGF5bG9hZExlbmd0aDsKLSAgICByZXR1cm4gRnJhbWVPSzsKLX0KLQotYm9vbCBXZWJTb2NrZXRD
aGFubmVsOjpwcm9jZXNzRnJhbWUoKQotewotICAgIEFTU0VSVChtX2J1ZmZlcik7Ci0KLSAgICBX
ZWJTb2NrZXRGcmFtZSBmcmFtZTsKLSAgICBjb25zdCBjaGFyKiBmcmFtZUVuZDsKLSAgICBpZiAo
cGFyc2VGcmFtZShmcmFtZSwgZnJhbWVFbmQpICE9IEZyYW1lT0spCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLQotICAgIEFTU0VSVChtX2J1ZmZlciA8IGZyYW1lRW5kKTsKLSAgICBBU1NFUlQoZnJh
bWVFbmQgPD0gbV9idWZmZXIgKyBtX2J1ZmZlclNpemUpOwotCi0gICAgLy8gVmFsaWRhdGUgdGhl
IGZyYW1lIGRhdGEuCi0gICAgaWYgKFdlYlNvY2tldEZyYW1lOjppc1Jlc2VydmVkT3BDb2RlKGZy
YW1lLm9wQ29kZSkpIHsKLSAgICAgICAgZmFpbCgiVW5yZWNvZ25pemVkIGZyYW1lIG9wY29kZTog
IiArIFN0cmluZzo6bnVtYmVyKGZyYW1lLm9wQ29kZSkpOwotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgfQotCi0gICAgaWYgKGZyYW1lLnJlc2VydmVkMiB8fCBmcmFtZS5yZXNlcnZlZDMpIHsK
LSAgICAgICAgZmFpbCgiT25lIG9yIG1vcmUgcmVzZXJ2ZWQgYml0cyBhcmUgb246IHJlc2VydmVk
MiA9ICIgKyBTdHJpbmc6Om51bWJlcihmcmFtZS5yZXNlcnZlZDIpICsgIiwgcmVzZXJ2ZWQzID0g
IiArIFN0cmluZzo6bnVtYmVyKGZyYW1lLnJlc2VydmVkMykpOwotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgfQotCi0gICAgLy8gQWxsIGNvbnRyb2wgZnJhbWVzIG11c3Qgbm90IGJlIGZyYWdt
ZW50ZWQuCi0gICAgaWYgKFdlYlNvY2tldEZyYW1lOjppc0NvbnRyb2xPcENvZGUoZnJhbWUub3BD
b2RlKSAmJiAhZnJhbWUuZmluYWwpIHsKLSAgICAgICAgZmFpbCgiUmVjZWl2ZWQgZnJhZ21lbnRl
ZCBjb250cm9sIGZyYW1lOiBvcGNvZGUgPSAiICsgU3RyaW5nOjpudW1iZXIoZnJhbWUub3BDb2Rl
KSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICAvLyBBbGwgY29udHJvbCBm
cmFtZXMgbXVzdCBoYXZlIGEgcGF5bG9hZCBvZiAxMjUgYnl0ZXMgb3IgbGVzcywgd2hpY2ggbWVh
bnMgdGhlIGZyYW1lIG11c3Qgbm90IGNvbnRhaW4KLSAgICAvLyB0aGUgImV4dGVuZGVkIHBheWxv
YWQgbGVuZ3RoIiBmaWVsZC4KLSAgICBpZiAoV2ViU29ja2V0RnJhbWU6OmlzQ29udHJvbE9wQ29k
ZShmcmFtZS5vcENvZGUpICYmIGZyYW1lLnBheWxvYWRMZW5ndGggPiBtYXhQYXlsb2FkTGVuZ3Ro
V2l0aG91dEV4dGVuZGVkTGVuZ3RoRmllbGQpIHsKLSAgICAgICAgZmFpbCgiUmVjZWl2ZWQgY29u
dHJvbCBmcmFtZSBoYXZpbmcgdG9vIGxvbmcgcGF5bG9hZDogIiArIFN0cmluZzo6bnVtYmVyKGZy
YW1lLnBheWxvYWRMZW5ndGgpICsgIiBieXRlcyIpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgfQotCi0gICAgLy8gQSBuZXcgZGF0YSBmcmFtZSBpcyByZWNlaXZlZCBiZWZvcmUgdGhlIHBy
ZXZpb3VzIGNvbnRpbnVvdXMgZnJhbWUgZmluaXNoZXMuCi0gICAgLy8gTm90ZSB0aGF0IGNvbnRy
b2wgZnJhbWVzIGFyZSBhbGxvd2VkIHRvIGNvbWUgaW4gdGhlIG1pZGRsZSBvZiBjb250aW51b3Vz
IGZyYW1lcy4KLSAgICBpZiAobV9oYXNDb250aW51b3VzRnJhbWUgJiYgZnJhbWUub3BDb2RlICE9
IFdlYlNvY2tldEZyYW1lOjpPcENvZGVDb250aW51YXRpb24gJiYgIVdlYlNvY2tldEZyYW1lOjpp
c0NvbnRyb2xPcENvZGUoZnJhbWUub3BDb2RlKSkgewotICAgICAgICBmYWlsKCJSZWNlaXZlZCBu
ZXcgZGF0YSBmcmFtZSBidXQgcHJldmlvdXMgY29udGludW91cyBmcmFtZSBpcyB1bmZpbmlzaGVk
LiIpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgc3dpdGNoIChmcmFtZS5v
cENvZGUpIHsKLSAgICBjYXNlIFdlYlNvY2tldEZyYW1lOjpPcENvZGVDb250aW51YXRpb246Ci0g
ICAgICAgIC8vIEFuIHVuZXhwZWN0ZWQgY29udGludWF0aW9uIGZyYW1lIGlzIHJlY2VpdmVkIHdp
dGhvdXQgYW55IGxlYWRpbmcgZnJhbWUuCi0gICAgICAgIGlmICghbV9oYXNDb250aW51b3VzRnJh
bWUpIHsKLSAgICAgICAgICAgIGZhaWwoIlJlY2VpdmVkIHVuZXhwZWN0ZWQgY29udGludWF0aW9u
IGZyYW1lLiIpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgICAg
IG1fY29udGludW91c0ZyYW1lRGF0YS5hcHBlbmQoZnJhbWUucGF5bG9hZCwgZnJhbWUucGF5bG9h
ZExlbmd0aCk7Ci0gICAgICAgIHNraXBCdWZmZXIoZnJhbWVFbmQgLSBtX2J1ZmZlcik7Ci0gICAg
ICAgIGlmIChmcmFtZS5maW5hbCkgewotICAgICAgICAgICAgLy8gb25tZXNzYWdlIGhhbmRsZXIg
bWF5IGV2ZW50dWFsbHkgY2FsbCB0aGUgb3RoZXIgbWV0aG9kcyBvZiB0aGlzIGNoYW5uZWwsCi0g
ICAgICAgICAgICAvLyBzbyB3ZSBzaG91bGQgcHJldGVuZCB0aGF0IHdlIGhhdmUgZmluaXNoZWQg
dG8gcmVhZCB0aGlzIGZyYW1lIGFuZAotICAgICAgICAgICAgLy8gbWFrZSBzdXJlIHRoYXQgdGhl
IG1lbWJlciB2YXJpYWJsZXMgYXJlIGluIGEgY29uc2lzdGVudCBzdGF0ZSBiZWZvcmUKLSAgICAg
ICAgICAgIC8vIHRoZSBoYW5kbGVyIGlzIGludm9rZWQuCi0gICAgICAgICAgICAvLyBWZWN0b3I8
Y2hhcj46OnN3YXAoKSBpcyB1c2VkIGhlcmUgdG8gY2xlYXIgbV9jb250aW51b3VzRnJhbWVEYXRh
LgotICAgICAgICAgICAgT3duUHRyPFZlY3RvcjxjaGFyPiA+IGNvbnRpbnVvdXNGcmFtZURhdGEg
PSBhZG9wdFB0cihuZXcgVmVjdG9yPGNoYXI+KTsKLSAgICAgICAgICAgIG1fY29udGludW91c0Zy
YW1lRGF0YS5zd2FwKCpjb250aW51b3VzRnJhbWVEYXRhKTsKLSAgICAgICAgICAgIG1faGFzQ29u
dGludW91c0ZyYW1lID0gZmFsc2U7Ci0gICAgICAgICAgICBpZiAobV9jb250aW51b3VzRnJhbWVP
cENvZGUgPT0gV2ViU29ja2V0RnJhbWU6Ok9wQ29kZVRleHQpIHsKLSAgICAgICAgICAgICAgICBT
dHJpbmcgbWVzc2FnZTsKLSAgICAgICAgICAgICAgICBpZiAoY29udGludW91c0ZyYW1lRGF0YS0+
c2l6ZSgpKQotICAgICAgICAgICAgICAgICAgICBtZXNzYWdlID0gU3RyaW5nOjpmcm9tVVRGOChj
b250aW51b3VzRnJhbWVEYXRhLT5kYXRhKCksIGNvbnRpbnVvdXNGcmFtZURhdGEtPnNpemUoKSk7
Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBtZXNzYWdlID0gIiI7
Ci0gICAgICAgICAgICAgICAgaWYgKG1lc3NhZ2UuaXNOdWxsKCkpCi0gICAgICAgICAgICAgICAg
ICAgIGZhaWwoIkNvdWxkIG5vdCBkZWNvZGUgYSB0ZXh0IGZyYW1lIGFzIFVURi04LiIpOwotICAg
ICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2Vp
dmVNZXNzYWdlKG1lc3NhZ2UpOwotICAgICAgICAgICAgfSBlbHNlIGlmIChtX2NvbnRpbnVvdXNG
cmFtZU9wQ29kZSA9PSBXZWJTb2NrZXRGcmFtZTo6T3BDb2RlQmluYXJ5KQotICAgICAgICAgICAg
ICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlQmluYXJ5RGF0YShjb250aW51b3VzRnJhbWVEYXRhLnJl
bGVhc2UoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIFdlYlNvY2tl
dEZyYW1lOjpPcENvZGVUZXh0OgotICAgICAgICBpZiAoZnJhbWUuZmluYWwpIHsKLSAgICAgICAg
ICAgIFN0cmluZyBtZXNzYWdlOwotICAgICAgICAgICAgaWYgKGZyYW1lLnBheWxvYWRMZW5ndGgp
Ci0gICAgICAgICAgICAgICAgbWVzc2FnZSA9IFN0cmluZzo6ZnJvbVVURjgoZnJhbWUucGF5bG9h
ZCwgZnJhbWUucGF5bG9hZExlbmd0aCk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAg
ICAgbWVzc2FnZSA9ICIiOwotICAgICAgICAgICAgc2tpcEJ1ZmZlcihmcmFtZUVuZCAtIG1fYnVm
ZmVyKTsKLSAgICAgICAgICAgIGlmIChtZXNzYWdlLmlzTnVsbCgpKQotICAgICAgICAgICAgICAg
IGZhaWwoIkNvdWxkIG5vdCBkZWNvZGUgYSB0ZXh0IGZyYW1lIGFzIFVURi04LiIpOwotICAgICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlTWVzc2FnZSht
ZXNzYWdlKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIG1faGFzQ29udGludW91c0Zy
YW1lID0gdHJ1ZTsKLSAgICAgICAgICAgIG1fY29udGludW91c0ZyYW1lT3BDb2RlID0gV2ViU29j
a2V0RnJhbWU6Ok9wQ29kZVRleHQ7Ci0gICAgICAgICAgICBBU1NFUlQobV9jb250aW51b3VzRnJh
bWVEYXRhLmlzRW1wdHkoKSk7Ci0gICAgICAgICAgICBtX2NvbnRpbnVvdXNGcmFtZURhdGEuYXBw
ZW5kKGZyYW1lLnBheWxvYWQsIGZyYW1lLnBheWxvYWRMZW5ndGgpOwotICAgICAgICAgICAgc2tp
cEJ1ZmZlcihmcmFtZUVuZCAtIG1fYnVmZmVyKTsKLSAgICAgICAgfQotICAgICAgICBicmVhazsK
LQotICAgIGNhc2UgV2ViU29ja2V0RnJhbWU6Ok9wQ29kZUJpbmFyeToKLSAgICAgICAgaWYgKGZy
YW1lLmZpbmFsKSB7Ci0gICAgICAgICAgICBPd25QdHI8VmVjdG9yPGNoYXI+ID4gYmluYXJ5RGF0
YSA9IGFkb3B0UHRyKG5ldyBWZWN0b3I8Y2hhcj4oZnJhbWUucGF5bG9hZExlbmd0aCkpOwotICAg
ICAgICAgICAgbWVtY3B5KGJpbmFyeURhdGEtPmRhdGEoKSwgZnJhbWUucGF5bG9hZCwgZnJhbWUu
cGF5bG9hZExlbmd0aCk7Ci0gICAgICAgICAgICBza2lwQnVmZmVyKGZyYW1lRW5kIC0gbV9idWZm
ZXIpOwotICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVCaW5hcnlEYXRhKGJpbmFyeURh
dGEucmVsZWFzZSgpKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIG1faGFzQ29udGlu
dW91c0ZyYW1lID0gdHJ1ZTsKLSAgICAgICAgICAgIG1fY29udGludW91c0ZyYW1lT3BDb2RlID0g
V2ViU29ja2V0RnJhbWU6Ok9wQ29kZUJpbmFyeTsKLSAgICAgICAgICAgIEFTU0VSVChtX2NvbnRp
bnVvdXNGcmFtZURhdGEuaXNFbXB0eSgpKTsKLSAgICAgICAgICAgIG1fY29udGludW91c0ZyYW1l
RGF0YS5hcHBlbmQoZnJhbWUucGF5bG9hZCwgZnJhbWUucGF5bG9hZExlbmd0aCk7Ci0gICAgICAg
ICAgICBza2lwQnVmZmVyKGZyYW1lRW5kIC0gbV9idWZmZXIpOwotICAgICAgICB9Ci0gICAgICAg
IGJyZWFrOwotCi0gICAgY2FzZSBXZWJTb2NrZXRGcmFtZTo6T3BDb2RlQ2xvc2U6Ci0gICAgICAg
IGlmIChmcmFtZS5wYXlsb2FkTGVuZ3RoID49IDIpIHsKLSAgICAgICAgICAgIHVuc2lnbmVkIGNo
YXIgaGlnaEJ5dGUgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihmcmFtZS5wYXlsb2FkWzBd
KTsKLSAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgbG93Qnl0ZSA9IHN0YXRpY19jYXN0PHVuc2ln
bmVkIGNoYXI+KGZyYW1lLnBheWxvYWRbMV0pOwotICAgICAgICAgICAgbV9jbG9zZUV2ZW50Q29k
ZSA9IGhpZ2hCeXRlIDw8IDggfCBsb3dCeXRlOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAg
IG1fY2xvc2VFdmVudENvZGUgPSBDbG9zZUV2ZW50Q29kZU5vU3RhdHVzUmN2ZDsKLSAgICAgICAg
aWYgKGZyYW1lLnBheWxvYWRMZW5ndGggPj0gMykKLSAgICAgICAgICAgIG1fY2xvc2VFdmVudFJl
YXNvbiA9IFN0cmluZzo6ZnJvbVVURjgoJmZyYW1lLnBheWxvYWRbMl0sIGZyYW1lLnBheWxvYWRM
ZW5ndGggLSAyKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9jbG9zZUV2ZW50UmVhc29u
ID0gIiI7Ci0gICAgICAgIHNraXBCdWZmZXIoZnJhbWVFbmQgLSBtX2J1ZmZlcik7Ci0gICAgICAg
IG1fcmVjZWl2ZWRDbG9zaW5nSGFuZHNoYWtlID0gdHJ1ZTsKLSAgICAgICAgc3RhcnRDbG9zaW5n
SGFuZHNoYWtlKG1fY2xvc2VFdmVudENvZGUsIG1fY2xvc2VFdmVudFJlYXNvbik7Ci0gICAgICAg
IGlmIChtX2Nsb3NpbmcpIHsKLSAgICAgICAgICAgIG1fb3V0Z29pbmdGcmFtZVF1ZXVlU3RhdHVz
ID0gT3V0Z29pbmdGcmFtZVF1ZXVlQ2xvc2luZzsKLSAgICAgICAgICAgIHByb2Nlc3NPdXRnb2lu
Z0ZyYW1lUXVldWUoKTsKLSAgICAgICAgfQotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgV2Vi
U29ja2V0RnJhbWU6Ok9wQ29kZVBpbmc6Ci0gICAgICAgIGVucXVldWVSYXdGcmFtZShXZWJTb2Nr
ZXRGcmFtZTo6T3BDb2RlUG9uZywgZnJhbWUucGF5bG9hZCwgZnJhbWUucGF5bG9hZExlbmd0aCk7
Ci0gICAgICAgIHNraXBCdWZmZXIoZnJhbWVFbmQgLSBtX2J1ZmZlcik7Ci0gICAgICAgIGJyZWFr
OwotCi0gICAgY2FzZSBXZWJTb2NrZXRGcmFtZTo6T3BDb2RlUG9uZzoKLSAgICAgICAgLy8gQSBz
ZXJ2ZXIgbWF5IHNlbmQgYSBwb25nIGluIHJlc3BvbnNlIHRvIG91ciBwaW5nLCBvciBhbiB1bnNv
bGljaXRlZCBwb25nIHdoaWNoIGlzIG5vdCBhc3NvY2lhdGVkIHdpdGgKLSAgICAgICAgLy8gYW55
IHNwZWNpZmljIHBpbmcuIEVpdGhlciB3YXksIHRoZXJlJ3Mgbm90aGluZyB0byBkbyBvbiByZWNl
aXB0IG9mIHBvbmcuCi0gICAgICAgIHNraXBCdWZmZXIoZnJhbWVFbmQgLSBtX2J1ZmZlcik7Ci0g
ICAgICAgIGJyZWFrOwotCi0gICAgZGVmYXVsdDoKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci0gICAgICAgIHNraXBCdWZmZXIoZnJhbWVFbmQgLSBtX2J1ZmZlcik7Ci0gICAgICAgIGJy
ZWFrOwotICAgIH0KLQotICAgIHJldHVybiBtX2J1ZmZlcjsKLX0KLQotYm9vbCBXZWJTb2NrZXRD
aGFubmVsOjpwcm9jZXNzRnJhbWVIaXhpZTc2KCkKLXsKLSAgICBjb25zdCBjaGFyKiBuZXh0RnJh
bWUgPSBtX2J1ZmZlcjsKLSAgICBjb25zdCBjaGFyKiBwID0gbV9idWZmZXI7Ci0gICAgY29uc3Qg
Y2hhciogZW5kID0gcCArIG1fYnVmZmVyU2l6ZTsKLQotICAgIHVuc2lnbmVkIGNoYXIgZnJhbWVC
eXRlID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oKnArKyk7Ci0gICAgaWYgKChmcmFtZUJ5
dGUgJiAweDgwKSA9PSAweDgwKSB7Ci0gICAgICAgIHNpemVfdCBsZW5ndGggPSAwOwotICAgICAg
ICBib29sIGVycm9yRnJhbWUgPSBmYWxzZTsKLSAgICAgICAgYm9vbCBsZW5ndGhGaW5pc2hlZCA9
IGZhbHNlOwotICAgICAgICB3aGlsZSAocCA8IGVuZCkgewotICAgICAgICAgICAgaWYgKGxlbmd0
aCA+IG51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpIC8gMTI4KSB7Ci0gICAgICAgICAgICAg
ICAgTE9HKE5ldHdvcmssICJmcmFtZSBsZW5ndGggb3ZlcmZsb3cgJWx1Iiwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQgbG9uZz4obGVuZ3RoKSk7Ci0gICAgICAgICAgICAgICAgZXJyb3JGcmFtZSA9IHRy
dWU7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBz
aXplX3QgbmV3TGVuZ3RoID0gbGVuZ3RoICogMTI4OwotICAgICAgICAgICAgdW5zaWduZWQgY2hh
ciBtc2dCeXRlID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oKnApOwotICAgICAgICAgICAg
dW5zaWduZWQgaW50IGxlbmd0aE1zZ0J5dGUgPSBtc2dCeXRlICYgMHg3ZjsKLSAgICAgICAgICAg
IGlmIChuZXdMZW5ndGggPiBudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSAtIGxlbmd0aE1z
Z0J5dGUpIHsKLSAgICAgICAgICAgICAgICBMT0coTmV0d29yaywgImZyYW1lIGxlbmd0aCBvdmVy
ZmxvdyAlbHUrJXUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihuZXdMZW5ndGgpLCBsZW5n
dGhNc2dCeXRlKTsKLSAgICAgICAgICAgICAgICBlcnJvckZyYW1lID0gdHJ1ZTsKLSAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG5ld0xlbmd0aCArPSBs
ZW5ndGhNc2dCeXRlOwotICAgICAgICAgICAgaWYgKG5ld0xlbmd0aCA8IGxlbmd0aCkgeyAvLyBz
YW5pdHkgY2hlY2sKLSAgICAgICAgICAgICAgICBMT0coTmV0d29yaywgImZyYW1lIGxlbmd0aCBp
bnRlZ2VyIHdyYXAgJWx1LT4lbHUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihsZW5ndGgp
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihuZXdMZW5ndGgpKTsKLSAgICAgICAgICAgICAg
ICBlcnJvckZyYW1lID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIGxlbmd0aCA9IG5ld0xlbmd0aDsKLSAgICAgICAgICAgICsrcDsKLSAg
ICAgICAgICAgIGlmICghKG1zZ0J5dGUgJiAweDgwKSkgewotICAgICAgICAgICAgICAgIGxlbmd0
aEZpbmlzaGVkID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgfQotICAgICAgICBpZiAoIWVycm9yRnJhbWUgJiYgIWxlbmd0aEZpbmlzaGVkKQot
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBpZiAocCArIGxlbmd0aCA8IHApIHsK
LSAgICAgICAgICAgIExPRyhOZXR3b3JrLCAiZnJhbWUgYnVmZmVyIHBvaW50ZXIgd3JhcCAlcCsl
bHUtPiVwIiwgcCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4obGVuZ3RoKSwgcCArIGxlbmd0
aCk7Ci0gICAgICAgICAgICBlcnJvckZyYW1lID0gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgICBp
ZiAoZXJyb3JGcmFtZSkgewotICAgICAgICAgICAgc2tpcEJ1ZmZlcihtX2J1ZmZlclNpemUpOyAv
LyBTYXZlIG1lbW9yeS4KLSAgICAgICAgICAgIG1fc2hvdWxkRGlzY2FyZFJlY2VpdmVkRGF0YSA9
IHRydWU7Ci0gICAgICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZU1lc3NhZ2VFcnJvcigpOwot
ICAgICAgICAgICAgZmFpbCgiV2ViU29ja2V0IGZyYW1lIGxlbmd0aCB0b28gbGFyZ2UiKTsKLSAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgICAgICBBU1NFUlQocCArIGxl
bmd0aCA+PSBwKTsKLSAgICAgICAgaWYgKHAgKyBsZW5ndGggPD0gZW5kKSB7Ci0gICAgICAgICAg
ICBwICs9IGxlbmd0aDsKLSAgICAgICAgICAgIG5leHRGcmFtZSA9IHA7Ci0gICAgICAgICAgICBB
U1NFUlQobmV4dEZyYW1lID4gbV9idWZmZXIpOwotICAgICAgICAgICAgc2tpcEJ1ZmZlcihuZXh0
RnJhbWUgLSBtX2J1ZmZlcik7Ci0gICAgICAgICAgICBpZiAoZnJhbWVCeXRlID09IDB4ZmYgJiYg
IWxlbmd0aCkgewotICAgICAgICAgICAgICAgIG1fcmVjZWl2ZWRDbG9zaW5nSGFuZHNoYWtlID0g
dHJ1ZTsKLSAgICAgICAgICAgICAgICBzdGFydENsb3NpbmdIYW5kc2hha2UoQ2xvc2VFdmVudENv
ZGVOb3RTcGVjaWZpZWQsICIiKTsKLSAgICAgICAgICAgICAgICBpZiAobV9jbG9zaW5nKQotICAg
ICAgICAgICAgICAgICAgICBtX2hhbmRsZS0+Y2xvc2UoKTsgLy8gY2xvc2UgYWZ0ZXIgc2VuZGlu
ZyBGRiAwMC4KLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIG1fY2xpZW50LT5k
aWRSZWNlaXZlTWVzc2FnZUVycm9yKCk7Ci0gICAgICAgICAgICByZXR1cm4gbV9idWZmZXI7Ci0g
ICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGNvbnN0IGNoYXIq
IG1zZ1N0YXJ0ID0gcDsKLSAgICB3aGlsZSAocCA8IGVuZCAmJiAqcCAhPSAnXHhmZicpCi0gICAg
ICAgICsrcDsKLSAgICBpZiAocCA8IGVuZCAmJiAqcCA9PSAnXHhmZicpIHsKLSAgICAgICAgaW50
IG1zZ0xlbmd0aCA9IHAgLSBtc2dTdGFydDsKLSAgICAgICAgKytwOwotICAgICAgICBuZXh0RnJh
bWUgPSBwOwotICAgICAgICBpZiAoZnJhbWVCeXRlID09IDB4MDApIHsKLSAgICAgICAgICAgIFN0
cmluZyBtc2cgPSBTdHJpbmc6OmZyb21VVEY4KG1zZ1N0YXJ0LCBtc2dMZW5ndGgpOwotICAgICAg
ICAgICAgc2tpcEJ1ZmZlcihuZXh0RnJhbWUgLSBtX2J1ZmZlcik7Ci0gICAgICAgICAgICBtX2Ns
aWVudC0+ZGlkUmVjZWl2ZU1lc3NhZ2UobXNnKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgIHNraXBCdWZmZXIobmV4dEZyYW1lIC0gbV9idWZmZXIpOwotICAgICAgICAgICAgbV9jbGll
bnQtPmRpZFJlY2VpdmVNZXNzYWdlRXJyb3IoKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4g
bV9idWZmZXI7Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotdm9pZCBXZWJTb2NrZXRD
aGFubmVsOjplbnF1ZXVlVGV4dEZyYW1lKGNvbnN0IFN0cmluZyYgc3RyaW5nKQotewotICAgIEFT
U0VSVCghbV91c2VIaXhpZTc2UHJvdG9jb2wpOwotICAgIEFTU0VSVChtX291dGdvaW5nRnJhbWVR
dWV1ZVN0YXR1cyA9PSBPdXRnb2luZ0ZyYW1lUXVldWVPcGVuKTsKLSAgICBPd25QdHI8UXVldWVk
RnJhbWU+IGZyYW1lID0gYWRvcHRQdHIobmV3IFF1ZXVlZEZyYW1lKTsKLSAgICBmcmFtZS0+b3BD
b2RlID0gV2ViU29ja2V0RnJhbWU6Ok9wQ29kZVRleHQ7Ci0gICAgZnJhbWUtPmZyYW1lVHlwZSA9
IFF1ZXVlZEZyYW1lVHlwZVN0cmluZzsKLSAgICBmcmFtZS0+c3RyaW5nRGF0YSA9IHN0cmluZzsK
LSAgICBtX291dGdvaW5nRnJhbWVRdWV1ZS5hcHBlbmQoZnJhbWUucmVsZWFzZSgpKTsKLSAgICBw
cm9jZXNzT3V0Z29pbmdGcmFtZVF1ZXVlKCk7Ci19Ci0KLXZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6
ZW5xdWV1ZVJhd0ZyYW1lKFdlYlNvY2tldEZyYW1lOjpPcENvZGUgb3BDb2RlLCBjb25zdCBjaGFy
KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCkKLXsKLSAgICBBU1NFUlQoIW1fdXNlSGl4aWU3NlBy
b3RvY29sKTsKLSAgICBBU1NFUlQobV9vdXRnb2luZ0ZyYW1lUXVldWVTdGF0dXMgPT0gT3V0Z29p
bmdGcmFtZVF1ZXVlT3Blbik7Ci0gICAgT3duUHRyPFF1ZXVlZEZyYW1lPiBmcmFtZSA9IGFkb3B0
UHRyKG5ldyBRdWV1ZWRGcmFtZSk7Ci0gICAgZnJhbWUtPm9wQ29kZSA9IG9wQ29kZTsKLSAgICBm
cmFtZS0+ZnJhbWVUeXBlID0gUXVldWVkRnJhbWVUeXBlVmVjdG9yOwotICAgIGZyYW1lLT52ZWN0
b3JEYXRhLnJlc2l6ZShkYXRhTGVuZ3RoKTsKLSAgICBpZiAoZGF0YUxlbmd0aCkKLSAgICAgICAg
bWVtY3B5KGZyYW1lLT52ZWN0b3JEYXRhLmRhdGEoKSwgZGF0YSwgZGF0YUxlbmd0aCk7Ci0gICAg
bV9vdXRnb2luZ0ZyYW1lUXVldWUuYXBwZW5kKGZyYW1lLnJlbGVhc2UoKSk7Ci0gICAgcHJvY2Vz
c091dGdvaW5nRnJhbWVRdWV1ZSgpOwotfQotCi12b2lkIFdlYlNvY2tldENoYW5uZWw6OmVucXVl
dWVCbG9iRnJhbWUoV2ViU29ja2V0RnJhbWU6Ok9wQ29kZSBvcENvZGUsIGNvbnN0IEJsb2ImIGJs
b2IpCi17Ci0gICAgQVNTRVJUKCFtX3VzZUhpeGllNzZQcm90b2NvbCk7Ci0gICAgQVNTRVJUKG1f
b3V0Z29pbmdGcmFtZVF1ZXVlU3RhdHVzID09IE91dGdvaW5nRnJhbWVRdWV1ZU9wZW4pOwotICAg
IE93blB0cjxRdWV1ZWRGcmFtZT4gZnJhbWUgPSBhZG9wdFB0cihuZXcgUXVldWVkRnJhbWUpOwot
ICAgIGZyYW1lLT5vcENvZGUgPSBvcENvZGU7Ci0gICAgZnJhbWUtPmZyYW1lVHlwZSA9IFF1ZXVl
ZEZyYW1lVHlwZUJsb2I7Ci0gICAgZnJhbWUtPmJsb2JEYXRhID0gQmxvYjo6Y3JlYXRlKGJsb2Iu
dXJsKCksIGJsb2IudHlwZSgpLCBibG9iLnNpemUoKSk7Ci0gICAgbV9vdXRnb2luZ0ZyYW1lUXVl
dWUuYXBwZW5kKGZyYW1lLnJlbGVhc2UoKSk7Ci0gICAgcHJvY2Vzc091dGdvaW5nRnJhbWVRdWV1
ZSgpOwotfQotCi12b2lkIFdlYlNvY2tldENoYW5uZWw6OnByb2Nlc3NPdXRnb2luZ0ZyYW1lUXVl
dWUoKQotewotICAgIEFTU0VSVCghbV91c2VIaXhpZTc2UHJvdG9jb2wpOwotICAgIGlmIChtX291
dGdvaW5nRnJhbWVRdWV1ZVN0YXR1cyA9PSBPdXRnb2luZ0ZyYW1lUXVldWVDbG9zZWQpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIHdoaWxlICghbV9vdXRnb2luZ0ZyYW1lUXVldWUuaXNFbXB0eSgp
KSB7Ci0gICAgICAgIE93blB0cjxRdWV1ZWRGcmFtZT4gZnJhbWUgPSBtX291dGdvaW5nRnJhbWVR
dWV1ZS50YWtlRmlyc3QoKTsKLSAgICAgICAgc3dpdGNoIChmcmFtZS0+ZnJhbWVUeXBlKSB7Ci0g
ICAgICAgIGNhc2UgUXVldWVkRnJhbWVUeXBlU3RyaW5nOiB7Ci0gICAgICAgICAgICBDU3RyaW5n
IHV0ZjggPSBmcmFtZS0+c3RyaW5nRGF0YS51dGY4KCk7Ci0gICAgICAgICAgICBpZiAoIXNlbmRG
cmFtZShmcmFtZS0+b3BDb2RlLCB1dGY4LmRhdGEoKSwgdXRmOC5sZW5ndGgoKSkpCi0gICAgICAg
ICAgICAgICAgZmFpbCgiRmFpbGVkIHRvIHNlbmQgV2ViU29ja2V0IGZyYW1lLiIpOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLQotICAgICAgICBjYXNlIFF1ZXVlZEZyYW1lVHlwZVZl
Y3RvcjoKLSAgICAgICAgICAgIGlmICghc2VuZEZyYW1lKGZyYW1lLT5vcENvZGUsIGZyYW1lLT52
ZWN0b3JEYXRhLmRhdGEoKSwgZnJhbWUtPnZlY3RvckRhdGEuc2l6ZSgpKSkKLSAgICAgICAgICAg
ICAgICBmYWlsKCJGYWlsZWQgdG8gc2VuZCBXZWJTb2NrZXQgZnJhbWUuIik7Ci0gICAgICAgICAg
ICBicmVhazsKLQotICAgICAgICBjYXNlIFF1ZXVlZEZyYW1lVHlwZUJsb2I6IHsKLSNpZiBFTkFC
TEUoQkxPQikKLSAgICAgICAgICAgIHN3aXRjaCAobV9ibG9iTG9hZGVyU3RhdHVzKSB7Ci0gICAg
ICAgICAgICBjYXNlIEJsb2JMb2FkZXJOb3RTdGFydGVkOgotICAgICAgICAgICAgICAgIHJlZigp
OyAvLyBXaWxsIGJlIGRlcmVmZWQgYWZ0ZXIgZGlkRmluaXNoTG9hZGluZygpIG9yIGRpZEZhaWwo
KS4KLSAgICAgICAgICAgICAgICBBU1NFUlQoIW1fYmxvYkxvYWRlcik7Ci0gICAgICAgICAgICAg
ICAgbV9ibG9iTG9hZGVyID0gYWRvcHRQdHIobmV3IEZpbGVSZWFkZXJMb2FkZXIoRmlsZVJlYWRl
ckxvYWRlcjo6UmVhZEFzQXJyYXlCdWZmZXIsIHRoaXMpKTsKLSAgICAgICAgICAgICAgICBtX2Js
b2JMb2FkZXJTdGF0dXMgPSBCbG9iTG9hZGVyU3RhcnRlZDsKLSAgICAgICAgICAgICAgICBtX2Js
b2JMb2FkZXItPnN0YXJ0KG1fZG9jdW1lbnQsIGZyYW1lLT5ibG9iRGF0YS5nZXQoKSk7Ci0gICAg
ICAgICAgICAgICAgbV9vdXRnb2luZ0ZyYW1lUXVldWUucHJlcGVuZChmcmFtZS5yZWxlYXNlKCkp
OwotICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgY2FzZSBCbG9iTG9hZGVy
U3RhcnRlZDoKLSAgICAgICAgICAgIGNhc2UgQmxvYkxvYWRlckZhaWxlZDoKLSAgICAgICAgICAg
ICAgICBtX291dGdvaW5nRnJhbWVRdWV1ZS5wcmVwZW5kKGZyYW1lLnJlbGVhc2UoKSk7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgICAgICBjYXNlIEJsb2JMb2FkZXJGaW5pc2hl
ZDogewotICAgICAgICAgICAgICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gcmVzdWx0ID0gbV9ibG9i
TG9hZGVyLT5hcnJheUJ1ZmZlclJlc3VsdCgpOwotICAgICAgICAgICAgICAgIG1fYmxvYkxvYWRl
ci5jbGVhcigpOwotICAgICAgICAgICAgICAgIG1fYmxvYkxvYWRlclN0YXR1cyA9IEJsb2JMb2Fk
ZXJOb3RTdGFydGVkOwotICAgICAgICAgICAgICAgIGlmICghc2VuZEZyYW1lKGZyYW1lLT5vcENv
ZGUsIHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihyZXN1bHQtPmRhdGEoKSksIHJlc3VsdC0+Ynl0
ZUxlbmd0aCgpKSkKLSAgICAgICAgICAgICAgICAgICAgZmFpbCgiRmFpbGVkIHRvIHNlbmQgV2Vi
U29ja2V0IGZyYW1lLiIpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgfQotI2Vsc2UKLSAgICAgICAgICAgIGZhaWwoIkZpbGVSZWFkZXIgaXMgbm90
IGF2YWlsYWJsZS4gQ291bGQgbm90IHNlbmQgYSBCbG9iIGFzIFdlYlNvY2tldCBiaW5hcnkgbWVz
c2FnZS4iKTsKLSNlbmRpZgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLQotICAgICAg
ICBkZWZhdWx0OgotICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLQotICAgIEFTU0VSVChtX291dGdvaW5nRnJhbWVR
dWV1ZS5pc0VtcHR5KCkpOwotICAgIGlmIChtX291dGdvaW5nRnJhbWVRdWV1ZVN0YXR1cyA9PSBP
dXRnb2luZ0ZyYW1lUXVldWVDbG9zaW5nKSB7Ci0gICAgICAgIG1fb3V0Z29pbmdGcmFtZVF1ZXVl
U3RhdHVzID0gT3V0Z29pbmdGcmFtZVF1ZXVlQ2xvc2VkOwotICAgICAgICBtX2hhbmRsZS0+Y2xv
c2UoKTsKLSAgICB9Ci19Ci0KLXZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6YWJvcnRPdXRnb2luZ0Zy
YW1lUXVldWUoKQotewotICAgIEFTU0VSVCghbV91c2VIaXhpZTc2UHJvdG9jb2wpOwotICAgIG1f
b3V0Z29pbmdGcmFtZVF1ZXVlLmNsZWFyKCk7Ci0gICAgbV9vdXRnb2luZ0ZyYW1lUXVldWVTdGF0
dXMgPSBPdXRnb2luZ0ZyYW1lUXVldWVDbG9zZWQ7Ci0jaWYgRU5BQkxFKEJMT0IpCi0gICAgaWYg
KG1fYmxvYkxvYWRlclN0YXR1cyA9PSBCbG9iTG9hZGVyU3RhcnRlZCkgewotICAgICAgICBtX2Js
b2JMb2FkZXItPmNhbmNlbCgpOwotICAgICAgICBkaWRGYWlsKEZpbGVFcnJvcjo6QUJPUlRfRVJS
KTsKLSAgICB9Ci0jZW5kaWYKLX0KLQotc3RhdGljIHZvaWQgYXBwZW5kTWFza2VkRnJhbWVQYXls
b2FkKGNvbnN0IFdlYlNvY2tldEZyYW1lJiBmcmFtZSwgVmVjdG9yPGNoYXI+JiBmcmFtZURhdGEp
Ci17Ci0gICAgc2l6ZV90IG1hc2tpbmdLZXlTdGFydCA9IGZyYW1lRGF0YS5zaXplKCk7Ci0gICAg
ZnJhbWVEYXRhLmdyb3coZnJhbWVEYXRhLnNpemUoKSArIG1hc2tpbmdLZXlXaWR0aEluQnl0ZXMp
OyAvLyBBZGQgcGxhY2Vob2xkZXIgZm9yIG1hc2tpbmcga2V5LiBXaWxsIGJlIG92ZXJ3cml0dGVu
LgotICAgIHNpemVfdCBwYXlsb2FkU3RhcnQgPSBmcmFtZURhdGEuc2l6ZSgpOwotICAgIGZyYW1l
RGF0YS5hcHBlbmQoZnJhbWUucGF5bG9hZCwgZnJhbWUucGF5bG9hZExlbmd0aCk7Ci0KLSAgICBj
cnlwdG9ncmFwaGljYWxseVJhbmRvbVZhbHVlcyhmcmFtZURhdGEuZGF0YSgpICsgbWFza2luZ0tl
eVN0YXJ0LCBtYXNraW5nS2V5V2lkdGhJbkJ5dGVzKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGZyYW1lLnBheWxvYWRMZW5ndGg7ICsraSkKLSAgICAgICAgZnJhbWVEYXRhW3BheWxvYWRT
dGFydCArIGldIF49IGZyYW1lRGF0YVttYXNraW5nS2V5U3RhcnQgKyBpICUgbWFza2luZ0tleVdp
ZHRoSW5CeXRlc107Ci19Ci0KLXN0YXRpYyB2b2lkIG1ha2VGcmFtZURhdGEoY29uc3QgV2ViU29j
a2V0RnJhbWUmIGZyYW1lLCBWZWN0b3I8Y2hhcj4mIGZyYW1lRGF0YSkKLXsKLSAgICB1bnNpZ25l
ZCBjaGFyIGZpcnN0Qnl0ZSA9IChmcmFtZS5maW5hbCA/IGZpbmFsQml0IDogMCkgfCBmcmFtZS5v
cENvZGU7Ci0gICAgaWYgKGZyYW1lLmNvbXByZXNzKQotICAgICAgICBmaXJzdEJ5dGUgfD0gY29t
cHJlc3NCaXQ7Ci0gICAgZnJhbWVEYXRhLmFwcGVuZChmaXJzdEJ5dGUpOwotICAgIGlmIChmcmFt
ZS5wYXlsb2FkTGVuZ3RoIDw9IG1heFBheWxvYWRMZW5ndGhXaXRob3V0RXh0ZW5kZWRMZW5ndGhG
aWVsZCkKLSAgICAgICAgZnJhbWVEYXRhLmFwcGVuZChtYXNrQml0IHwgZnJhbWUucGF5bG9hZExl
bmd0aCk7Ci0gICAgZWxzZSBpZiAoZnJhbWUucGF5bG9hZExlbmd0aCA8PSAweEZGRkYpIHsKLSAg
ICAgICAgZnJhbWVEYXRhLmFwcGVuZChtYXNrQml0IHwgcGF5bG9hZExlbmd0aFdpdGhUd29CeXRl
RXh0ZW5kZWRMZW5ndGhGaWVsZCk7Ci0gICAgICAgIGZyYW1lRGF0YS5hcHBlbmQoKGZyYW1lLnBh
eWxvYWRMZW5ndGggJiAweEZGMDApID4+IDgpOwotICAgICAgICBmcmFtZURhdGEuYXBwZW5kKGZy
YW1lLnBheWxvYWRMZW5ndGggJiAweEZGKTsKLSAgICB9IGVsc2UgewotICAgICAgICBmcmFtZURh
dGEuYXBwZW5kKG1hc2tCaXQgfCBwYXlsb2FkTGVuZ3RoV2l0aEVpZ2h0Qnl0ZUV4dGVuZGVkTGVu
Z3RoRmllbGQpOwotICAgICAgICBjaGFyIGV4dGVuZGVkUGF5bG9hZExlbmd0aFs4XTsKLSAgICAg
ICAgc2l6ZV90IHJlbWFpbmluZyA9IGZyYW1lLnBheWxvYWRMZW5ndGg7Ci0gICAgICAgIC8vIEZp
bGwgdGhlIGxlbmd0aCBpbnRvIGV4dGVuZGVkUGF5bG9hZExlbmd0aCBpbiB0aGUgbmV0d29yayBi
eXRlIG9yZGVyLgotICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IDg7ICsraSkgewotICAgICAg
ICAgICAgZXh0ZW5kZWRQYXlsb2FkTGVuZ3RoWzcgLSBpXSA9IHJlbWFpbmluZyAmIDB4RkY7Ci0g
ICAgICAgICAgICByZW1haW5pbmcgPj49IDg7Ci0gICAgICAgIH0KLSAgICAgICAgQVNTRVJUKCFy
ZW1haW5pbmcpOwotICAgICAgICBmcmFtZURhdGEuYXBwZW5kKGV4dGVuZGVkUGF5bG9hZExlbmd0
aCwgOCk7Ci0gICAgfQotCi0gICAgYXBwZW5kTWFza2VkRnJhbWVQYXlsb2FkKGZyYW1lLCBmcmFt
ZURhdGEpOwotfQotCi1ib29sIFdlYlNvY2tldENoYW5uZWw6OnNlbmRGcmFtZShXZWJTb2NrZXRG
cmFtZTo6T3BDb2RlIG9wQ29kZSwgY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgp
Ci17Ci0gICAgQVNTRVJUKG1faGFuZGxlKTsKLSAgICBBU1NFUlQoIW1fc3VzcGVuZGVkKTsKLQot
ICAgIEFTU0VSVCghKG9wQ29kZSAmIH5vcENvZGVNYXNrKSk7IC8vIENoZWNrcyB3aGV0aGVyICJv
cENvZGUiIGZpdHMgaW4gdGhlIHJhbmdlIG9mIG9wQ29kZXMuCi0gICAgV2ViU29ja2V0RnJhbWUg
ZnJhbWUob3BDb2RlLCB0cnVlLCBmYWxzZSwgdHJ1ZSwgZGF0YSwgZGF0YUxlbmd0aCk7Ci0gICAg
VmVjdG9yPGNoYXI+IGZyYW1lRGF0YTsKLSAgICBtYWtlRnJhbWVEYXRhKGZyYW1lLCBmcmFtZURh
dGEpOwotCi0gICAgcmV0dXJuIG1faGFuZGxlLT5zZW5kKGZyYW1lRGF0YS5kYXRhKCksIGZyYW1l
RGF0YS5zaXplKCkpOwotfQotCi1ib29sIFdlYlNvY2tldENoYW5uZWw6OnNlbmRGcmFtZUhpeGll
NzYoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgpCi17Ci0gICAgQVNTRVJUKG1f
aGFuZGxlKTsKLSAgICBBU1NFUlQoIW1fc3VzcGVuZGVkKTsKLQotICAgIFZlY3RvcjxjaGFyPiBm
cmFtZTsKLSAgICBmcmFtZS5hcHBlbmQoJ1wwJyk7IC8vIEZyYW1lIHR5cGUuCi0gICAgZnJhbWUu
YXBwZW5kKGRhdGEsIGRhdGFMZW5ndGgpOwotICAgIGZyYW1lLmFwcGVuZCgnXHhmZicpOyAvLyBG
cmFtZSBlbmQuCi0gICAgcmV0dXJuIG1faGFuZGxlLT5zZW5kKGZyYW1lLmRhdGEoKSwgZnJhbWUu
c2l6ZSgpKTsKLX0KLQotfSAgLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmICAvLyBFTkFC
TEUoV0VCX1NPQ0tFVFMpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tl
dENoYW5uZWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNv
Y2tldENoYW5uZWwuaAkocmV2aXNpb24gMTA4OTI0KQorKysgU291cmNlL1dlYkNvcmUvd2Vic29j
a2V0cy9XZWJTb2NrZXRDaGFubmVsLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsMjQwICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgR29vZ2xlIEluYy4gIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0g
KgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAq
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
Ci0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2lmbmRlZiBXZWJTb2NrZXRDaGFubmVsX2gKLSNkZWZpbmUgV2ViU29ja2V0Q2hhbm5l
bF9oCi0KLSNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCi0KLSNpbmNsdWRlICJGaWxlUmVhZGVyTG9h
ZGVyQ2xpZW50LmgiCi0jaW5jbHVkZSAiU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50LmgiCi0jaW5j
bHVkZSAiVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaCIKLSNpbmNsdWRlICJUaW1lci5oIgot
I2luY2x1ZGUgIldlYlNvY2tldEZyYW1lLmgiCi0jaW5jbHVkZSAiV2ViU29ja2V0SGFuZHNoYWtl
LmgiCi0jaW5jbHVkZSA8d3RmL0RlcXVlLmg+Ci0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBCbG9iOwotY2xhc3MgRG9jdW1lbnQ7Ci1jbGFzcyBG
aWxlUmVhZGVyTG9hZGVyOwotY2xhc3MgU29ja2V0U3RyZWFtSGFuZGxlOwotY2xhc3MgU29ja2V0
U3RyZWFtRXJyb3I7Ci1jbGFzcyBXZWJTb2NrZXRDaGFubmVsQ2xpZW50OwotCi1jbGFzcyBXZWJT
b2NrZXRDaGFubmVsIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViU29ja2V0Q2hhbm5lbD4sIHB1Ymxp
YyBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQsIHB1YmxpYyBUaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbAotI2lmIEVOQUJMRShCTE9CKQotICAgICAgICAgICAgICAgICAgICAgICAsIHB1YmxpYyBG
aWxlUmVhZGVyTG9hZGVyQ2xpZW50Ci0jZW5kaWYKLXsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJTb2NrZXRDaGFubmVsPiBj
cmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50LCBXZWJTb2NrZXRDaGFubmVsQ2xpZW50KiBjbGllbnQp
IHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJTb2NrZXRDaGFubmVsKGRvY3VtZW50LCBjbGllbnQp
KTsgfQotICAgIHZpcnR1YWwgfldlYlNvY2tldENoYW5uZWwoKTsKLQotICAgIGJvb2wgc2VuZChj
b25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKTsKLQotICAgIC8vIFRocmVhZGFibGVXZWJTb2Nr
ZXRDaGFubmVsIGZ1bmN0aW9ucy4KLSAgICB2aXJ0dWFsIGJvb2wgdXNlSGl4aWU3NlByb3RvY29s
KCkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGNvbm5lY3QoY29uc3QgS1VSTCYsIGNvbnN0
IFN0cmluZyYgcHJvdG9jb2wpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgU3RyaW5nIHN1YnByb3Rv
Y29sKCkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBTdHJpbmcgZXh0ZW5zaW9ucygpIE9WRVJSSURF
OwotICAgIHZpcnR1YWwgYm9vbCBzZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgT1ZFUlJJREU7
Ci0gICAgdmlydHVhbCBib29sIHNlbmQoY29uc3QgQXJyYXlCdWZmZXImKSBPVkVSUklERTsKLSAg
ICB2aXJ0dWFsIGJvb2wgc2VuZChjb25zdCBCbG9iJikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB1
bnNpZ25lZCBsb25nIGJ1ZmZlcmVkQW1vdW50KCkgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVh
bCB2b2lkIGNsb3NlKGludCBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbikgT1ZFUlJJREU7IC8v
IFN0YXJ0IGNsb3NpbmcgaGFuZHNoYWtlLgotICAgIHZpcnR1YWwgdm9pZCBmYWlsKGNvbnN0IFN0
cmluZyYgcmVhc29uKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzY29ubmVjdCgpIE9W
RVJSSURFOwotCi0gICAgdmlydHVhbCB2b2lkIHN1c3BlbmQoKSBPVkVSUklERTsKLSAgICB2aXJ0
dWFsIHZvaWQgcmVzdW1lKCkgT1ZFUlJJREU7Ci0KLSAgICAvLyBTb2NrZXRTdHJlYW1IYW5kbGVD
bGllbnQgZnVuY3Rpb25zLgotICAgIHZpcnR1YWwgdm9pZCBkaWRPcGVuU29ja2V0U3RyZWFtKFNv
Y2tldFN0cmVhbUhhbmRsZSopIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBkaWRDbG9zZVNv
Y2tldFN0cmVhbShTb2NrZXRTdHJlYW1IYW5kbGUqKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZv
aWQgZGlkUmVjZWl2ZVNvY2tldFN0cmVhbURhdGEoU29ja2V0U3RyZWFtSGFuZGxlKiwgY29uc3Qg
Y2hhciosIGludCkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFVwZGF0ZUJ1ZmZlcmVk
QW1vdW50KFNvY2tldFN0cmVhbUhhbmRsZSosIHNpemVfdCBidWZmZXJlZEFtb3VudCkgT1ZFUlJJ
REU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZEZhaWxTb2NrZXRTdHJlYW0oU29ja2V0U3RyZWFtSGFu
ZGxlKiwgY29uc3QgU29ja2V0U3RyZWFtRXJyb3ImKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZv
aWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFNvY2tldFN0cmVhbUhhbmRsZSos
IGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2
b2lkIGRpZENhbmNlbEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFNvY2tldFN0cmVhbUhhbmRsZSos
IGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikgT1ZFUlJJREU7Ci0KLSAgICBlbnVtIENs
b3NlRXZlbnRDb2RlIHsKLSAgICAgICAgQ2xvc2VFdmVudENvZGVOb3RTcGVjaWZpZWQgPSAtMSwK
LSAgICAgICAgQ2xvc2VFdmVudENvZGVOb3JtYWxDbG9zdXJlID0gMTAwMCwKLSAgICAgICAgQ2xv
c2VFdmVudENvZGVHb2luZ0F3YXkgPSAxMDAxLAotICAgICAgICBDbG9zZUV2ZW50Q29kZVByb3Rv
Y29sRXJyb3IgPSAxMDAyLAotICAgICAgICBDbG9zZUV2ZW50Q29kZVVuc3VwcG9ydGVkRGF0YSA9
IDEwMDMsCi0gICAgICAgIENsb3NlRXZlbnRDb2RlRnJhbWVUb29MYXJnZSA9IDEwMDQsCi0gICAg
ICAgIENsb3NlRXZlbnRDb2RlTm9TdGF0dXNSY3ZkID0gMTAwNSwKLSAgICAgICAgQ2xvc2VFdmVu
dENvZGVBYm5vcm1hbENsb3N1cmUgPSAxMDA2LAotICAgICAgICBDbG9zZUV2ZW50Q29kZUludmFs
aWRVVEY4ID0gMTAwNywKLSAgICAgICAgQ2xvc2VFdmVudENvZGVNaW5pbXVtVXNlckRlZmluZWQg
PSAzMDAwLAotICAgICAgICBDbG9zZUV2ZW50Q29kZU1heGltdW1Vc2VyRGVmaW5lZCA9IDQ5OTkK
LSAgICB9OwotCi0jaWYgRU5BQkxFKEJMT0IpCi0gICAgLy8gRmlsZVJlYWRlckxvYWRlckNsaWVu
dCBmdW5jdGlvbnMuCi0gICAgdmlydHVhbCB2b2lkIGRpZFN0YXJ0TG9hZGluZygpOwotICAgIHZp
cnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YSgpOwotICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hM
b2FkaW5nKCk7Ci0gICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoaW50IGVycm9yQ29kZSk7Ci0jZW5k
aWYKLQotICAgIHVzaW5nIFJlZkNvdW50ZWQ8V2ViU29ja2V0Q2hhbm5lbD46OnJlZjsKLSAgICB1
c2luZyBSZWZDb3VudGVkPFdlYlNvY2tldENoYW5uZWw+OjpkZXJlZjsKLQotcHJvdGVjdGVkOgot
ICAgIHZpcnR1YWwgdm9pZCByZWZUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbCgpIHsgcmVmKCk7
IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGVyZWZUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbCgpIHsg
ZGVyZWYoKTsgfQotCi1wcml2YXRlOgotICAgIFdlYlNvY2tldENoYW5uZWwoRG9jdW1lbnQqLCBX
ZWJTb2NrZXRDaGFubmVsQ2xpZW50Kik7Ci0KLSAgICBib29sIGFwcGVuZFRvQnVmZmVyKGNvbnN0
IGNoYXIqIGRhdGEsIHNpemVfdCBsZW4pOwotICAgIHZvaWQgc2tpcEJ1ZmZlcihzaXplX3QgbGVu
KTsKLSAgICBib29sIHByb2Nlc3NCdWZmZXIoKTsKLSAgICB2b2lkIHJlc3VtZVRpbWVyRmlyZWQo
VGltZXI8V2ViU29ja2V0Q2hhbm5lbD4qKTsKLSAgICB2b2lkIHN0YXJ0Q2xvc2luZ0hhbmRzaGFr
ZShpbnQgY29kZSwgY29uc3QgU3RyaW5nJiByZWFzb24pOwotICAgIHZvaWQgY2xvc2luZ1RpbWVy
RmlyZWQoVGltZXI8V2ViU29ja2V0Q2hhbm5lbD4qKTsKLQotICAgIGVudW0gUGFyc2VGcmFtZVJl
c3VsdCB7Ci0gICAgICAgIEZyYW1lT0ssCi0gICAgICAgIEZyYW1lSW5jb21wbGV0ZSwKLSAgICAg
ICAgRnJhbWVFcnJvcgotICAgIH07Ci0KLSAgICBQYXJzZUZyYW1lUmVzdWx0IHBhcnNlRnJhbWUo
V2ViU29ja2V0RnJhbWUmLCBjb25zdCBjaGFyKiYgZnJhbWVFbmQpOyAvLyBNYXkgbW9kaWZ5IHBh
cnQgb2YgbV9idWZmZXIgdG8gdW5tYXNrIHRoZSBmcmFtZS4KLQotICAgIGJvb2wgcHJvY2Vzc0Zy
YW1lKCk7Ci0gICAgYm9vbCBwcm9jZXNzRnJhbWVIaXhpZTc2KCk7Ci0KLSAgICAvLyBJdCBpcyBh
bGxvd2VkIHRvIHNlbmQgYSBCbG9iIGFzIGEgYmluYXJ5IGZyYW1lIGlmIGh5YmktMTAgcHJvdG9j
b2wgaXMgaW4gdXNlLiBTZW5kaW5nIGEgQmxvYgotICAgIC8vIGNhbiBiZSBkZWxheWVkIGJlY2F1
c2UgaXQgbXVzdCBiZSByZWFkIGFzeW5jaHJvbm91c2x5LiBPdGhlciB0eXBlcyBvZiBkYXRhIChT
dHJpbmcgb3IKLSAgICAvLyBBcnJheUJ1ZmZlcikgbWF5IGFsc28gYmUgYmxvY2tlZCBieSBwcmVj
ZWRpbmcgc2VuZGluZyByZXF1ZXN0IG9mIGEgQmxvYi4KLSAgICAvLwotICAgIC8vIFRvIGFkZHJl
c3MgdGhpcyBzaXR1YXRpb24sIG1lc3NhZ2VzIHRvIGJlIHNlbnQgbmVlZCB0byBiZSBzdG9yZWQg
aW4gYSBxdWV1ZS4gV2hlbmV2ZXIgYSBuZXcKLSAgICAvLyBkYXRhIGZyYW1lIGlzIGdvaW5nIHRv
IGJlIHNlbnQsIGl0IGZpcnN0IG11c3QgZ28gdG8gdGhlIHF1ZXVlLiBJdGVtcyBpbiB0aGUgcXVl
dWUgYXJlIHByb2Nlc3NlZAotICAgIC8vIGluIHRoZSBvcmRlciB0aGV5IHdlcmUgcHV0IGludG8g
dGhlIHF1ZXVlLiBTZW5kaW5nIHJlcXVlc3Qgb2YgYSBCbG9iIGJsb2NrcyBmdXJ0aGVyIHByb2Nl
c3NpbmcKLSAgICAvLyB1bnRpbCB0aGUgQmxvYiBpcyBjb21wbGV0ZWx5IHJlYWQgYW5kIHNlbnQg
dG8gdGhlIHNvY2tldCBzdHJlYW0uCi0gICAgLy8KLSAgICAvLyBXaGVuIGhpeGllLTc2IHByb3Rv
Y29sIGlzIGNob3NlbiwgdGhlIHF1ZXVlIGlzIG5vdCB1c2VkIGFuZCBtZXNzYWdlcyBhcmUgc2Vu
dCBkaXJlY3RseS4KLSAgICBlbnVtIFF1ZXVlZEZyYW1lVHlwZSB7Ci0gICAgICAgIFF1ZXVlZEZy
YW1lVHlwZVN0cmluZywKLSAgICAgICAgUXVldWVkRnJhbWVUeXBlVmVjdG9yLAotICAgICAgICBR
dWV1ZWRGcmFtZVR5cGVCbG9iCi0gICAgfTsKLSAgICBzdHJ1Y3QgUXVldWVkRnJhbWUgewotICAg
ICAgICBXZWJTb2NrZXRGcmFtZTo6T3BDb2RlIG9wQ29kZTsKLSAgICAgICAgUXVldWVkRnJhbWVU
eXBlIGZyYW1lVHlwZTsKLSAgICAgICAgLy8gT25seSBvbmUgb2YgdGhlIGZvbGxvd2luZyBpdGVt
cyBpcyB1c2VkLCBhY2NvcmRpbmcgdG8gdGhlIHZhbHVlIG9mIGZyYW1lVHlwZS4KLSAgICAgICAg
U3RyaW5nIHN0cmluZ0RhdGE7Ci0gICAgICAgIFZlY3RvcjxjaGFyPiB2ZWN0b3JEYXRhOwotICAg
ICAgICBSZWZQdHI8QmxvYj4gYmxvYkRhdGE7Ci0gICAgfTsKLSAgICB2b2lkIGVucXVldWVUZXh0
RnJhbWUoY29uc3QgU3RyaW5nJik7Ci0gICAgdm9pZCBlbnF1ZXVlUmF3RnJhbWUoV2ViU29ja2V0
RnJhbWU6Ok9wQ29kZSwgY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgpOwotICAg
IHZvaWQgZW5xdWV1ZUJsb2JGcmFtZShXZWJTb2NrZXRGcmFtZTo6T3BDb2RlLCBjb25zdCBCbG9i
Jik7Ci0KLSAgICB2b2lkIHByb2Nlc3NPdXRnb2luZ0ZyYW1lUXVldWUoKTsKLSAgICB2b2lkIGFi
b3J0T3V0Z29pbmdGcmFtZVF1ZXVlKCk7Ci0KLSAgICBlbnVtIE91dGdvaW5nRnJhbWVRdWV1ZVN0
YXR1cyB7Ci0gICAgICAgIC8vIEl0IGlzIGFsbG93ZWQgdG8gcHV0IGEgbmV3IGl0ZW0gaW50byB0
aGUgcXVldWUuCi0gICAgICAgIE91dGdvaW5nRnJhbWVRdWV1ZU9wZW4sCi0gICAgICAgIC8vIENs
b3NlIGZyYW1lIGhhcyBhbHJlYWR5IGJlZW4gcHV0IGludG8gdGhlIHF1ZXVlIGJ1dCBtYXkgbm90
IGhhdmUgYmVlbiBzZW50IHlldDsKLSAgICAgICAgLy8gbV9oYW5kbGUtPmNsb3NlKCkgd2lsbCBi
ZSBjYWxsZWQgYXMgc29vbiBhcyB0aGUgcXVldWUgaXMgY2xlYXJlZC4gSXQgaXMgbm90Ci0gICAg
ICAgIC8vIGFsbG93ZWQgdG8gcHV0IGEgbmV3IGl0ZW0gaW50byB0aGUgcXVldWUuCi0gICAgICAg
IE91dGdvaW5nRnJhbWVRdWV1ZUNsb3NpbmcsCi0gICAgICAgIC8vIENsb3NlIGZyYW1lIGhhcyBi
ZWVuIHNlbnQgb3IgdGhlIHF1ZXVlIHdhcyBhYm9ydGVkLiBJdCBpcyBub3QgYWxsb3dlZCB0byBw
dXQKLSAgICAgICAgLy8gYSBuZXcgaXRlbSB0byB0aGUgcXVldWUuCi0gICAgICAgIE91dGdvaW5n
RnJhbWVRdWV1ZUNsb3NlZAotICAgIH07Ci0KLSAgICAvLyBJZiB5b3UgYXJlIGdvaW5nIHRvIHNl
bmQgYSBoeWJpLTEwIGZyYW1lLCB5b3UgbmVlZCB0byB1c2UgdGhlIG91dGdvaW5nIGZyYW1lIHF1
ZXVlCi0gICAgLy8gaW5zdGVhZCBvZiBjYWxsIHNlbmRGcmFtZSgpIGRpcmVjdGx5LgotICAgIGJv
b2wgc2VuZEZyYW1lKFdlYlNvY2tldEZyYW1lOjpPcENvZGUsIGNvbnN0IGNoYXIqIGRhdGEsIHNp
emVfdCBkYXRhTGVuZ3RoKTsKLSAgICBib29sIHNlbmRGcmFtZUhpeGllNzYoY29uc3QgY2hhciog
ZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgpOwotCi0jaWYgRU5BQkxFKEJMT0IpCi0gICAgZW51bSBC
bG9iTG9hZGVyU3RhdHVzIHsKLSAgICAgICAgQmxvYkxvYWRlck5vdFN0YXJ0ZWQsCi0gICAgICAg
IEJsb2JMb2FkZXJTdGFydGVkLAotICAgICAgICBCbG9iTG9hZGVyRmluaXNoZWQsCi0gICAgICAg
IEJsb2JMb2FkZXJGYWlsZWQKLSAgICB9OwotI2VuZGlmCi0KLSAgICBEb2N1bWVudCogbV9kb2N1
bWVudDsKLSAgICBXZWJTb2NrZXRDaGFubmVsQ2xpZW50KiBtX2NsaWVudDsKLSAgICBPd25QdHI8
V2ViU29ja2V0SGFuZHNoYWtlPiBtX2hhbmRzaGFrZTsKLSAgICBSZWZQdHI8U29ja2V0U3RyZWFt
SGFuZGxlPiBtX2hhbmRsZTsKLSAgICBjaGFyKiBtX2J1ZmZlcjsKLSAgICBzaXplX3QgbV9idWZm
ZXJTaXplOwotCi0gICAgVGltZXI8V2ViU29ja2V0Q2hhbm5lbD4gbV9yZXN1bWVUaW1lcjsKLSAg
ICBib29sIG1fc3VzcGVuZGVkOwotICAgIGJvb2wgbV9jbG9zaW5nOwotICAgIGJvb2wgbV9yZWNl
aXZlZENsb3NpbmdIYW5kc2hha2U7Ci0gICAgVGltZXI8V2ViU29ja2V0Q2hhbm5lbD4gbV9jbG9z
aW5nVGltZXI7Ci0gICAgYm9vbCBtX2Nsb3NlZDsKLSAgICBib29sIG1fc2hvdWxkRGlzY2FyZFJl
Y2VpdmVkRGF0YTsKLSAgICB1bnNpZ25lZCBsb25nIG1fdW5oYW5kbGVkQnVmZmVyZWRBbW91bnQ7
Ci0KLSAgICB1bnNpZ25lZCBsb25nIG1faWRlbnRpZmllcjsgLy8gbV9pZGVudGlmaWVyID09IDAg
bWVhbnMgdGhhdCB3ZSBjb3VsZCBub3Qgb2J0YWluIGEgdmFsaWQgaWRlbnRpZmllci4KLQotICAg
IGJvb2wgbV91c2VIaXhpZTc2UHJvdG9jb2w7Ci0KLSAgICAvLyBQcml2YXRlIG1lbWJlcnMgb25s
eSBmb3IgaHliaS0xMCBwcm90b2NvbC4KLSAgICBib29sIG1faGFzQ29udGludW91c0ZyYW1lOwot
ICAgIFdlYlNvY2tldEZyYW1lOjpPcENvZGUgbV9jb250aW51b3VzRnJhbWVPcENvZGU7Ci0gICAg
VmVjdG9yPGNoYXI+IG1fY29udGludW91c0ZyYW1lRGF0YTsKLSAgICB1bnNpZ25lZCBzaG9ydCBt
X2Nsb3NlRXZlbnRDb2RlOwotICAgIFN0cmluZyBtX2Nsb3NlRXZlbnRSZWFzb247Ci0KLSAgICBE
ZXF1ZTxPd25QdHI8UXVldWVkRnJhbWU+ID4gbV9vdXRnb2luZ0ZyYW1lUXVldWU7Ci0gICAgT3V0
Z29pbmdGcmFtZVF1ZXVlU3RhdHVzIG1fb3V0Z29pbmdGcmFtZVF1ZXVlU3RhdHVzOwotCi0jaWYg
RU5BQkxFKEJMT0IpCi0gICAgLy8gRklYTUU6IExvYWQgdHdvIG9yIG1vcmUgQmxvYnMgc2ltdWx0
YW5lb3VzbHkgZm9yIGJldHRlciBwZXJmb3JtYW5jZS4KLSAgICBPd25QdHI8RmlsZVJlYWRlckxv
YWRlcj4gbV9ibG9iTG9hZGVyOwotICAgIEJsb2JMb2FkZXJTdGF0dXMgbV9ibG9iTG9hZGVyU3Rh
dHVzOwotI2VuZGlmCi19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBF
TkFCTEUoV0VCX1NPQ0tFVFMpCi0KLSNlbmRpZiAvLyBXZWJTb2NrZXRDaGFubmVsX2gKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbENsaWVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbENsaWVu
dC5oCShyZXZpc2lvbiAxMDg5MjQpCisrKyBTb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNv
Y2tldENoYW5uZWxDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw2NSArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBk
aXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
Ci0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5k
ZWYgV2ViU29ja2V0Q2hhbm5lbENsaWVudF9oCi0jZGVmaW5lIFdlYlNvY2tldENoYW5uZWxDbGll
bnRfaAotCi0jaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQotCi0jaW5jbHVkZSA8d3RmL0ZvcndhcmQu
aD4KLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0gICAgY2xhc3MgV2ViU29ja2V0Q2hhbm5lbENsaWVu
dCB7Ci0gICAgcHVibGljOgotICAgICAgICB2aXJ0dWFsIH5XZWJTb2NrZXRDaGFubmVsQ2xpZW50
KCkgeyB9Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaWRDb25uZWN0KCkgeyB9Ci0gICAgICAgIHZp
cnR1YWwgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShjb25zdCBTdHJpbmcmKSB7IH0KLSAgICAgICAg
dmlydHVhbCB2b2lkIGRpZFJlY2VpdmVCaW5hcnlEYXRhKFBhc3NPd25QdHI8VmVjdG9yPGNoYXI+
ID4pIHsgfQotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2VFcnJvcigpIHsg
fQotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkVXBkYXRlQnVmZmVyZWRBbW91bnQodW5zaWduZWQg
bG9uZyAvKiBidWZmZXJlZEFtb3VudCAqLykgeyB9Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaWRT
dGFydENsb3NpbmdIYW5kc2hha2UoKSB7IH0KLSAgICAgICAgZW51bSBDbG9zaW5nSGFuZHNoYWtl
Q29tcGxldGlvblN0YXR1cyB7Ci0gICAgICAgICAgICBDbG9zaW5nSGFuZHNoYWtlSW5jb21wbGV0
ZSwKLSAgICAgICAgICAgIENsb3NpbmdIYW5kc2hha2VDb21wbGV0ZQotICAgICAgICB9OwotICAg
ICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2xvc2UodW5zaWduZWQgbG9uZyAvKiB1bmhhbmRsZWRCdWZm
ZXJlZEFtb3VudCAqLywgQ2xvc2luZ0hhbmRzaGFrZUNvbXBsZXRpb25TdGF0dXMsIHVuc2lnbmVk
IHNob3J0IC8qIGNvZGUgKi8sIGNvbnN0IFN0cmluZyYgLyogcmVhc29uICovKSB7IH0KLQotICAg
IHByb3RlY3RlZDoKLSAgICAgICAgV2ViU29ja2V0Q2hhbm5lbENsaWVudCgpIHsgfQotICAgIH07
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJfU09DS0VU
UykKLQotI2VuZGlmIC8vIFdlYlNvY2tldENoYW5uZWxDbGllbnRfaApJbmRleDogU291cmNlL1dl
YkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlci5jcHAJKHJldmlzaW9uIDEw
ODkyNCkKKysrIFNvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDIxMiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDEyIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
Ci0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICog
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
Ci0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQot
I2lmIEVOQUJMRShXRUJfU09DS0VUUykKLQotI2luY2x1ZGUgIldlYlNvY2tldERlZmxhdGVyLmgi
Ci0KLSNpbmNsdWRlICJMb2dnaW5nLmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNp
bmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KLSNp
bmNsdWRlIDx3dGYvU3RyaW5nRXh0cmFzLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFz
aC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotI2luY2x1ZGUgPHpsaWIuaD4K
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdGF0aWMgY29uc3QgaW50IGRlZmF1bHRNZW1MZXZl
bCA9IDE7Ci1zdGF0aWMgY29uc3Qgc2l6ZV90IGJ1ZmZlckluY3JlbWVudFVuaXQgPSA0MDk2Owot
Ci1QYXNzT3duUHRyPFdlYlNvY2tldERlZmxhdGVyPiBXZWJTb2NrZXREZWZsYXRlcjo6Y3JlYXRl
KGludCB3aW5kb3dCaXRzLCBDb250ZXh0VGFrZU92ZXJNb2RlIGNvbnRleHRUYWtlT3Zlck1vZGUp
Ci17Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBXZWJTb2NrZXREZWZsYXRlcih3aW5kb3dCaXRz
LCBjb250ZXh0VGFrZU92ZXJNb2RlKSk7Ci19Ci0KLVdlYlNvY2tldERlZmxhdGVyOjpXZWJTb2Nr
ZXREZWZsYXRlcihpbnQgd2luZG93Qml0cywgQ29udGV4dFRha2VPdmVyTW9kZSBjb250ZXh0VGFr
ZU92ZXJNb2RlKQotICAgIDogbV93aW5kb3dCaXRzKHdpbmRvd0JpdHMpCi0gICAgLCBtX2NvbnRl
eHRUYWtlT3Zlck1vZGUoY29udGV4dFRha2VPdmVyTW9kZSkKLXsKLSAgICBBU1NFUlQobV93aW5k
b3dCaXRzID49IDgpOwotICAgIEFTU0VSVChtX3dpbmRvd0JpdHMgPD0gMTUpOwotICAgIG1fc3Ry
ZWFtID0gYWRvcHRQdHIobmV3IHpfc3RyZWFtKTsKLSAgICBtZW1zZXQobV9zdHJlYW0uZ2V0KCks
IDAsIHNpemVvZih6X3N0cmVhbSkpOwotfQotCi1ib29sIFdlYlNvY2tldERlZmxhdGVyOjppbml0
aWFsaXplKCkKLXsKLSAgICByZXR1cm4gZGVmbGF0ZUluaXQyKG1fc3RyZWFtLmdldCgpLCBaX0RF
RkFVTFRfQ09NUFJFU1NJT04sIFpfREVGTEFURUQsIC1tX3dpbmRvd0JpdHMsIGRlZmF1bHRNZW1M
ZXZlbCwgWl9ERUZBVUxUX1NUUkFURUdZKSA9PSBaX09LOwotfQotCi1XZWJTb2NrZXREZWZsYXRl
cjo6fldlYlNvY2tldERlZmxhdGVyKCkKLXsKLSAgICBpbnQgcmVzdWx0ID0gZGVmbGF0ZUVuZCht
X3N0cmVhbS5nZXQoKSk7Ci0gICAgaWYgKHJlc3VsdCAhPSBaX09LKQotICAgICAgICBMT0coTmV0
d29yaywgImRlZmxhdGVFbmQoKSBmYWlsZWQ6ICVkIiwgcmVzdWx0KTsKLX0KLQotc3RhdGljIHZv
aWQgc2V0U3RyZWFtUGFyYW1ldGVyKHpfc3RyZWFtKiBzdHJlYW0sIGNvbnN0IGNoYXIqIGlucHV0
RGF0YSwgc2l6ZV90IGlucHV0TGVuZ3RoLCBjaGFyKiBvdXRwdXREYXRhLCBzaXplX3Qgb3V0cHV0
TGVuZ3RoKQotewotICAgIHN0cmVhbS0+bmV4dF9pbiA9IHJlaW50ZXJwcmV0X2Nhc3Q8Qnl0ZWYq
Pihjb25zdF9jYXN0PGNoYXIqPihpbnB1dERhdGEpKTsKLSAgICBzdHJlYW0tPmF2YWlsX2luID0g
aW5wdXRMZW5ndGg7Ci0gICAgc3RyZWFtLT5uZXh0X291dCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Qnl0
ZWYqPihvdXRwdXREYXRhKTsKLSAgICBzdHJlYW0tPmF2YWlsX291dCA9IG91dHB1dExlbmd0aDsK
LX0KLQotYm9vbCBXZWJTb2NrZXREZWZsYXRlcjo6YWRkQnl0ZXMoY29uc3QgY2hhciogZGF0YSwg
c2l6ZV90IGxlbmd0aCkKLXsKLSAgICBpZiAoIWxlbmd0aCkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotCi0gICAgc2l6ZV90IG1heExlbmd0aCA9IGRlZmxhdGVCb3VuZChtX3N0cmVhbS5nZXQoKSwg
bGVuZ3RoKTsKLSAgICBzaXplX3Qgd3JpdGVQb3NpdGlvbiA9IG1fYnVmZmVyLnNpemUoKTsKLSAg
ICBtX2J1ZmZlci5ncm93KHdyaXRlUG9zaXRpb24gKyBtYXhMZW5ndGgpOwotICAgIHNldFN0cmVh
bVBhcmFtZXRlcihtX3N0cmVhbS5nZXQoKSwgZGF0YSwgbGVuZ3RoLCBtX2J1ZmZlci5kYXRhKCkg
KyB3cml0ZVBvc2l0aW9uLCBtYXhMZW5ndGgpOwotICAgIGludCByZXN1bHQgPSBkZWZsYXRlKG1f
c3RyZWFtLmdldCgpLCBaX05PX0ZMVVNIKTsKLSAgICBpZiAocmVzdWx0ICE9IFpfT0sgfHwgbV9z
dHJlYW0tPmF2YWlsX2luID4gMCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgbV9idWZm
ZXIuc2hyaW5rKHdyaXRlUG9zaXRpb24gKyBtYXhMZW5ndGggLSBtX3N0cmVhbS0+YXZhaWxfb3V0
KTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBXZWJTb2NrZXREZWZsYXRlcjo6ZmluaXNo
KCkKLXsKLSAgICB3aGlsZSAodHJ1ZSkgewotICAgICAgICBzaXplX3Qgd3JpdGVQb3NpdGlvbiA9
IG1fYnVmZmVyLnNpemUoKTsKLSAgICAgICAgbV9idWZmZXIuZ3Jvdyh3cml0ZVBvc2l0aW9uICsg
YnVmZmVySW5jcmVtZW50VW5pdCk7Ci0gICAgICAgIHNpemVfdCBhdmFpbGFibGVDYXBhY2l0eSA9
IG1fYnVmZmVyLnNpemUoKSAtIHdyaXRlUG9zaXRpb247Ci0gICAgICAgIHNldFN0cmVhbVBhcmFt
ZXRlcihtX3N0cmVhbS5nZXQoKSwgMCwgMCwgbV9idWZmZXIuZGF0YSgpICsgd3JpdGVQb3NpdGlv
biwgYXZhaWxhYmxlQ2FwYWNpdHkpOwotICAgICAgICBpbnQgcmVzdWx0ID0gZGVmbGF0ZShtX3N0
cmVhbS5nZXQoKSwgWl9TWU5DX0ZMVVNIKTsKLSAgICAgICAgbV9idWZmZXIuc2hyaW5rKHdyaXRl
UG9zaXRpb24gKyBhdmFpbGFibGVDYXBhY2l0eSAtIG1fc3RyZWFtLT5hdmFpbF9vdXQpOwotICAg
ICAgICBpZiAocmVzdWx0ID09IFpfT0spCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgaWYg
KHJlc3VsdCAhPSBaX0JVRl9FUlJPUikKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9
Ci0gICAgLy8gUmVtb3ZlIDQgb2N0ZXRzIGZyb20gdGhlIHRhaWwgYXMgdGhlIHNwZWNpZmljYXRp
b24gcmVxdWlyZXMuCi0gICAgaWYgKG1fYnVmZmVyLnNpemUoKSA8PSA0KQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgbV9idWZmZXIucmVzaXplKG1fYnVmZmVyLnNpemUoKSAtIDQpOwotICAg
IHJldHVybiB0cnVlOwotfQotCi12b2lkIFdlYlNvY2tldERlZmxhdGVyOjpyZXNldCgpCi17Ci0g
ICAgbV9idWZmZXIuY2xlYXIoKTsKLSAgICBpZiAobV9jb250ZXh0VGFrZU92ZXJNb2RlID09IERv
Tm90VGFrZU92ZXJDb250ZXh0KQotICAgICAgICBkZWZsYXRlUmVzZXQobV9zdHJlYW0uZ2V0KCkp
OwotfQotCi1QYXNzT3duUHRyPFdlYlNvY2tldEluZmxhdGVyPiBXZWJTb2NrZXRJbmZsYXRlcjo6
Y3JlYXRlKGludCB3aW5kb3dCaXRzKQotewotICAgIHJldHVybiBhZG9wdFB0cihuZXcgV2ViU29j
a2V0SW5mbGF0ZXIod2luZG93Qml0cykpOwotfQotCi1XZWJTb2NrZXRJbmZsYXRlcjo6V2ViU29j
a2V0SW5mbGF0ZXIoaW50IHdpbmRvd0JpdHMpCi0gICAgOiBtX3dpbmRvd0JpdHMod2luZG93Qml0
cykKLXsKLSAgICBtX3N0cmVhbSA9IGFkb3B0UHRyKG5ldyB6X3N0cmVhbSk7Ci0gICAgbWVtc2V0
KG1fc3RyZWFtLmdldCgpLCAwLCBzaXplb2Yoel9zdHJlYW0pKTsKLX0KLQotYm9vbCBXZWJTb2Nr
ZXRJbmZsYXRlcjo6aW5pdGlhbGl6ZSgpCi17Ci0gICAgcmV0dXJuIGluZmxhdGVJbml0MihtX3N0
cmVhbS5nZXQoKSwgLW1fd2luZG93Qml0cykgPT0gWl9PSzsKLX0KLQotV2ViU29ja2V0SW5mbGF0
ZXI6On5XZWJTb2NrZXRJbmZsYXRlcigpCi17Ci0gICAgaW50IHJlc3VsdCA9IGluZmxhdGVFbmQo
bV9zdHJlYW0uZ2V0KCkpOwotICAgIGlmIChyZXN1bHQgIT0gWl9PSykKLSAgICAgICAgTE9HKE5l
dHdvcmssICJpbmZsYXRlRW5kKCkgZmFpbGVkOiAlZCIsIHJlc3VsdCk7Ci19Ci0KLWJvb2wgV2Vi
U29ja2V0SW5mbGF0ZXI6OmFkZEJ5dGVzKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgp
Ci17Ci0gICAgaWYgKCFsZW5ndGgpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHNpemVf
dCBjb25zdW1lZFNvRmFyID0gMDsKLSAgICB3aGlsZSAoY29uc3VtZWRTb0ZhciA8IGxlbmd0aCkg
ewotICAgICAgICBzaXplX3Qgd3JpdGVQb3NpdGlvbiA9IG1fYnVmZmVyLnNpemUoKTsKLSAgICAg
ICAgbV9idWZmZXIuZ3Jvdyh3cml0ZVBvc2l0aW9uICsgYnVmZmVySW5jcmVtZW50VW5pdCk7Ci0g
ICAgICAgIHNpemVfdCBhdmFpbGFibGVDYXBhY2l0eSA9IG1fYnVmZmVyLnNpemUoKSAtIHdyaXRl
UG9zaXRpb247Ci0gICAgICAgIHNpemVfdCByZW1haW5pbmdMZW5ndGggPSBsZW5ndGggLSBjb25z
dW1lZFNvRmFyOwotICAgICAgICBzZXRTdHJlYW1QYXJhbWV0ZXIobV9zdHJlYW0uZ2V0KCksIGRh
dGEgKyBjb25zdW1lZFNvRmFyLCByZW1haW5pbmdMZW5ndGgsIG1fYnVmZmVyLmRhdGEoKSArIHdy
aXRlUG9zaXRpb24sIGF2YWlsYWJsZUNhcGFjaXR5KTsKLSAgICAgICAgaW50IHJlc3VsdCA9IGlu
ZmxhdGUobV9zdHJlYW0uZ2V0KCksIFpfTk9fRkxVU0gpOwotICAgICAgICBjb25zdW1lZFNvRmFy
ICs9IHJlbWFpbmluZ0xlbmd0aCAtIG1fc3RyZWFtLT5hdmFpbF9pbjsKLSAgICAgICAgbV9idWZm
ZXIuc2hyaW5rKHdyaXRlUG9zaXRpb24gKyBhdmFpbGFibGVDYXBhY2l0eSAtIG1fc3RyZWFtLT5h
dmFpbF9vdXQpOwotICAgICAgICBpZiAocmVzdWx0ID09IFpfQlVGX0VSUk9SKQotICAgICAgICAg
ICAgY29udGludWU7Ci0gICAgICAgIGlmIChyZXN1bHQgIT0gWl9PSykKLSAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICB9Ci0gICAgQVNTRVJUKGNvbnN1bWVkU29GYXIgPT0gbGVuZ3RoKTsK
LSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBXZWJTb2NrZXRJbmZsYXRlcjo6ZmluaXNoKCkK
LXsKLSAgICBzdGF0aWMgY29uc3QgY2hhciogc3RyaXBwZWRGaWVsZHMgPSAiXDBcMFx4ZmZceGZm
IjsKLSAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IHN0cmlwcGVkTGVuZ3RoID0gNDsKLQotICAgIC8v
IEFwcGVuZHMgNCBvY3Rlc3RzIG9mIDB4MDAgMHgwMCAweGZmIDB4ZmYKLSAgICBzaXplX3QgY29u
c3VtZWRTb0ZhciA9IDA7Ci0gICAgd2hpbGUgKGNvbnN1bWVkU29GYXIgPCBzdHJpcHBlZExlbmd0
aCkgewotICAgICAgICBzaXplX3Qgd3JpdGVQb3NpdGlvbiA9IG1fYnVmZmVyLnNpemUoKTsKLSAg
ICAgICAgbV9idWZmZXIuZ3Jvdyh3cml0ZVBvc2l0aW9uICsgYnVmZmVySW5jcmVtZW50VW5pdCk7
Ci0gICAgICAgIHNpemVfdCBhdmFpbGFibGVDYXBhY2l0eSA9IG1fYnVmZmVyLnNpemUoKSAtIHdy
aXRlUG9zaXRpb247Ci0gICAgICAgIHNpemVfdCByZW1haW5pbmdMZW5ndGggPSBzdHJpcHBlZExl
bmd0aCAtIGNvbnN1bWVkU29GYXI7Ci0gICAgICAgIHNldFN0cmVhbVBhcmFtZXRlcihtX3N0cmVh
bS5nZXQoKSwgc3RyaXBwZWRGaWVsZHMgKyBjb25zdW1lZFNvRmFyLCByZW1haW5pbmdMZW5ndGgs
IG1fYnVmZmVyLmRhdGEoKSArIHdyaXRlUG9zaXRpb24sIGF2YWlsYWJsZUNhcGFjaXR5KTsKLSAg
ICAgICAgaW50IHJlc3VsdCA9IGluZmxhdGUobV9zdHJlYW0uZ2V0KCksIFpfRklOSVNIKTsKLSAg
ICAgICAgY29uc3VtZWRTb0ZhciArPSByZW1haW5pbmdMZW5ndGggLSBtX3N0cmVhbS0+YXZhaWxf
aW47Ci0gICAgICAgIG1fYnVmZmVyLnNocmluayh3cml0ZVBvc2l0aW9uICsgYXZhaWxhYmxlQ2Fw
YWNpdHkgLSBtX3N0cmVhbS0+YXZhaWxfb3V0KTsKLSAgICAgICAgaWYgKHJlc3VsdCA9PSBaX0JV
Rl9FUlJPUikKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBpZiAocmVzdWx0ICE9IFpf
T0sgJiYgcmVzdWx0ICE9IFpfU1RSRUFNX0VORCkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICB9Ci0gICAgQVNTRVJUKGNvbnN1bWVkU29GYXIgPT0gc3RyaXBwZWRMZW5ndGgpOwotCi0g
ICAgcmV0dXJuIHRydWU7Ci19Ci0KLXZvaWQgV2ViU29ja2V0SW5mbGF0ZXI6OnJlc2V0KCkKLXsK
LSAgICBtX2J1ZmZlci5jbGVhcigpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNl
bmRpZiAvLyBFTkFCTEUoV0VCX1NPQ0tFVFMpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS93ZWJzb2Nr
ZXRzL1dlYlNvY2tldERlZmxhdGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd2Vi
c29ja2V0cy9XZWJTb2NrZXREZWZsYXRlci5oCShyZXZpc2lvbiAxMDg5MjQpCisrKyBTb3VyY2Uv
V2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEsOTcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiAgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAq
IG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAq
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0g
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaWZuZGVmIFdlYlNvY2tldERlZmxhdGVyX2gKLSNkZWZpbmUgV2ViU29j
a2V0RGVmbGF0ZXJfaAotCi0jaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQotCi0jaW5jbHVkZSA8d3Rm
L05vbmNvcHlhYmxlLmg+Ci0jaW5jbHVkZSA8d3RmL093blB0ci5oPgotI2luY2x1ZGUgPHd0Zi9Q
YXNzT3duUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotCi1zdHJ1Y3Qgel9zdHJlYW1f
czsKLXR5cGVkZWYgel9zdHJlYW1fcyB6X3N0cmVhbTsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1jbGFzcyBXZWJTb2NrZXREZWZsYXRlciB7Ci1wdWJsaWM6Ci0gICAgZW51bSBDb250ZXh0VGFr
ZU92ZXJNb2RlIHsKLSAgICAgICAgRG9Ob3RUYWtlT3ZlckNvbnRleHQsCi0gICAgICAgIFRha2VP
dmVyQ29udGV4dAotICAgIH07Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8V2ViU29ja2V0RGVmbGF0
ZXI+IGNyZWF0ZShpbnQgd2luZG93Qml0cywgQ29udGV4dFRha2VPdmVyTW9kZSA9IFRha2VPdmVy
Q29udGV4dCk7Ci0KLSAgICB+V2ViU29ja2V0RGVmbGF0ZXIoKTsKLQotICAgIGJvb2wgaW5pdGlh
bGl6ZSgpOwotICAgIGJvb2wgYWRkQnl0ZXMoY29uc3QgY2hhciosIHNpemVfdCk7Ci0gICAgYm9v
bCBmaW5pc2goKTsKLSAgICBjb25zdCBjaGFyKiBkYXRhKCkgeyByZXR1cm4gbV9idWZmZXIuZGF0
YSgpOyB9Ci0gICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5zaXplKCk7
IH0KLSAgICB2b2lkIHJlc2V0KCk7Ci0KLXByaXZhdGU6Ci0gICAgV2ViU29ja2V0RGVmbGF0ZXIo
aW50IHdpbmRvd0JpdHMsIENvbnRleHRUYWtlT3Zlck1vZGUpOwotCi0gICAgaW50IG1fd2luZG93
Qml0czsKLSAgICBDb250ZXh0VGFrZU92ZXJNb2RlIG1fY29udGV4dFRha2VPdmVyTW9kZTsKLSAg
ICBWZWN0b3I8Y2hhcj4gbV9idWZmZXI7Ci0gICAgT3duUHRyPHpfc3RyZWFtPiBtX3N0cmVhbTsK
LX07Ci0KLWNsYXNzIFdlYlNvY2tldEluZmxhdGVyIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFz
c093blB0cjxXZWJTb2NrZXRJbmZsYXRlcj4gY3JlYXRlKGludCB3aW5kb3dCaXRzID0gMTUpOwot
Ci0gICAgfldlYlNvY2tldEluZmxhdGVyKCk7Ci0KLSAgICBib29sIGluaXRpYWxpemUoKTsKLSAg
ICBib29sIGFkZEJ5dGVzKGNvbnN0IGNoYXIqLCBzaXplX3QpOwotICAgIGJvb2wgZmluaXNoKCk7
Ci0gICAgY29uc3QgY2hhciogZGF0YSgpIHsgcmV0dXJuIG1fYnVmZmVyLmRhdGEoKTsgfQotICAg
IHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIuc2l6ZSgpOyB9Ci0gICAgdm9p
ZCByZXNldCgpOwotCi1wcml2YXRlOgotICAgIGV4cGxpY2l0IFdlYlNvY2tldEluZmxhdGVyKGlu
dCB3aW5kb3dCaXRzKTsKLQotICAgIGludCBtX3dpbmRvd0JpdHM7Ci0gICAgVmVjdG9yPGNoYXI+
IG1fYnVmZmVyOwotICAgIE93blB0cjx6X3N0cmVhbT4gbV9zdHJlYW07Ci19OwotCi19Ci0KLSNl
bmRpZiAvLyBFTkFCTEUoV0VCX1NPQ0tFVFMpCi0KLSNlbmRpZiAvLyBXZWJTb2NrZXREZWZsYXRl
cl9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVuc2lvbkRp
c3BhdGNoZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2Vi
U29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlci5jcHAJKHJldmlzaW9uIDEwODkyNCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEsMjc4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIg
R29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAq
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAq
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaWYg
RU5BQkxFKFdFQl9TT0NLRVRTKQotCi0jaW5jbHVkZSAiV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0
Y2hlci5oIgotCi0jaW5jbHVkZSA8d3RmL0FTQ0lJQ1R5cGUuaD4KLSNpbmNsdWRlIDx3dGYvSGFz
aE1hcC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KLSNpbmNsdWRlIDx3dGYvdGV4
dC9TdHJpbmdIYXNoLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgRXh0ZW5zaW9u
UGFyc2VyIHsKLXB1YmxpYzoKLSAgICBFeHRlbnNpb25QYXJzZXIoY29uc3QgY2hhciogc3RhcnQs
IGNvbnN0IGNoYXIqIGVuZCkKLSAgICAgICAgOiBtX2N1cnJlbnQoc3RhcnQpCi0gICAgICAgICwg
bV9lbmQoZW5kKQotICAgIHsKLSAgICB9Ci0gICAgYm9vbCBmaW5pc2hlZCgpOwotICAgIGJvb2wg
cGFyc2VkU3VjY2Vzc2Z1bGx5KCk7Ci0gICAgY29uc3QgU3RyaW5nJiBjdXJyZW50VG9rZW4oKSB7
IHJldHVybiBtX2N1cnJlbnRUb2tlbjsgfQotCi0gICAgLy8gVGhlIGZvbGxvd2luZyBtZW1iZXIg
ZnVuY3Rpb25zIGJhc2ljYWxseSBmb2xsb3cgdGhlIGdyYW1tZXIgZGVmaW5lZAotICAgIC8vIGlu
IFNlY3Rpb24gMi4yIG9mIFJGQyAyNjE2LgotICAgIGJvb2wgY29uc3VtZVRva2VuKCk7Ci0gICAg
Ym9vbCBjb25zdW1lUXVvdGVkU3RyaW5nKCk7Ci0gICAgYm9vbCBjb25zdW1lUXVvdGVkU3RyaW5n
T3JUb2tlbigpOwotICAgIGJvb2wgY29uc3VtZUNoYXJhY3RlcihjaGFyKTsKLQotcHJpdmF0ZToK
LSAgICB2b2lkIHNraXBTcGFjZXMoKTsKLQotICAgIGNvbnN0IGNoYXIqIG1fY3VycmVudDsKLSAg
ICBjb25zdCBjaGFyKiBtX2VuZDsKLSAgICBTdHJpbmcgbV9jdXJyZW50VG9rZW47Ci19OwotCi1i
b29sIEV4dGVuc2lvblBhcnNlcjo6ZmluaXNoZWQoKQotewotICAgIHJldHVybiBtX2N1cnJlbnQg
Pj0gbV9lbmQ7Ci19Ci0KLWJvb2wgRXh0ZW5zaW9uUGFyc2VyOjpwYXJzZWRTdWNjZXNzZnVsbHko
KQotewotICAgIHJldHVybiBtX2N1cnJlbnQgPT0gbV9lbmQ7Ci19Ci0KLXN0YXRpYyBib29sIGlz
U2VwYXJhdG9yKGNoYXIgY2hhcmFjdGVyKQotewotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzZXBh
cmF0b3JDaGFyYWN0ZXJzID0gIigpPD5ALDs6XFxcIi9bXT89e30gXHQiOwotICAgIGNvbnN0IGNo
YXIqIHAgPSBzdHJjaHIoc2VwYXJhdG9yQ2hhcmFjdGVycywgY2hhcmFjdGVyKTsKLSAgICByZXR1
cm4gcCAmJiAqcDsKLX0KLQotdm9pZCBFeHRlbnNpb25QYXJzZXI6OnNraXBTcGFjZXMoKQotewot
ICAgIHdoaWxlIChtX2N1cnJlbnQgPCBtX2VuZCAmJiAoKm1fY3VycmVudCA9PSAnICcgfHwgKm1f
Y3VycmVudCA9PSAnXHQnKSkKLSAgICAgICAgKyttX2N1cnJlbnQ7Ci19Ci0KLWJvb2wgRXh0ZW5z
aW9uUGFyc2VyOjpjb25zdW1lVG9rZW4oKQotewotICAgIHNraXBTcGFjZXMoKTsKLSAgICBjb25z
dCBjaGFyKiBzdGFydCA9IG1fY3VycmVudDsKLSAgICB3aGlsZSAobV9jdXJyZW50IDwgbV9lbmQg
JiYgaXNBU0NJSVByaW50YWJsZSgqbV9jdXJyZW50KSAmJiAhaXNTZXBhcmF0b3IoKm1fY3VycmVu
dCkpCi0gICAgICAgICsrbV9jdXJyZW50OwotICAgIGlmIChzdGFydCA8IG1fY3VycmVudCkgewot
ICAgICAgICBtX2N1cnJlbnRUb2tlbiA9IFN0cmluZyhzdGFydCwgbV9jdXJyZW50IC0gc3RhcnQp
OwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1i
b29sIEV4dGVuc2lvblBhcnNlcjo6Y29uc3VtZVF1b3RlZFN0cmluZygpCi17Ci0gICAgc2tpcFNw
YWNlcygpOwotICAgIGlmIChtX2N1cnJlbnQgPj0gbV9lbmQgfHwgKm1fY3VycmVudCAhPSAnIicp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIFZlY3RvcjxjaGFyPiBidWZmZXI7Ci0gICAg
KyttX2N1cnJlbnQ7Ci0gICAgd2hpbGUgKG1fY3VycmVudCA8IG1fZW5kICYmICptX2N1cnJlbnQg
IT0gJyInKSB7Ci0gICAgICAgIGlmICgqbV9jdXJyZW50ID09ICdcXCcgJiYgKyttX2N1cnJlbnQg
Pj0gbV9lbmQpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGJ1ZmZlci5hcHBl
bmQoKm1fY3VycmVudCk7Ci0gICAgICAgICsrbV9jdXJyZW50OwotICAgIH0KLSAgICBpZiAobV9j
dXJyZW50ID49IG1fZW5kIHx8ICptX2N1cnJlbnQgIT0gJyInKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgbV9jdXJyZW50VG9rZW4gPSBTdHJpbmc6OmZyb21VVEY4KGJ1ZmZlci5kYXRhKCks
IGJ1ZmZlci5zaXplKCkpOwotICAgICsrbV9jdXJyZW50OwotICAgIHJldHVybiB0cnVlOwotfQot
Ci1ib29sIEV4dGVuc2lvblBhcnNlcjo6Y29uc3VtZVF1b3RlZFN0cmluZ09yVG9rZW4oKQotewot
ICAgIC8vIFRoaXMgaXMgb2sgYmVjYXVzZSBjb25zdW1lUXVvdGVkU3RyaW5nKCkgZG9lc24ndCB1
cGRhdGUgbV9jdXJyZW50IG9yCi0gICAgLy8gbWFrZXMgaXQgc2FtZSBhcyBtX2VuZCBvbiBmYWls
dXJlLgotICAgIHJldHVybiBjb25zdW1lUXVvdGVkU3RyaW5nKCkgfHwgY29uc3VtZVRva2VuKCk7
Ci19Ci0KLWJvb2wgRXh0ZW5zaW9uUGFyc2VyOjpjb25zdW1lQ2hhcmFjdGVyKGNoYXIgY2hhcmFj
dGVyKQotewotICAgIHNraXBTcGFjZXMoKTsKLSAgICBpZiAobV9jdXJyZW50IDwgbV9lbmQgJiYg
Km1fY3VycmVudCA9PSBjaGFyYWN0ZXIpIHsKLSAgICAgICAgKyttX2N1cnJlbnQ7Ci0gICAgICAg
IHJldHVybiB0cnVlOwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLXZvaWQgV2ViU29j
a2V0RXh0ZW5zaW9uRGlzcGF0Y2hlcjo6cmVzZXQoKQotewotICAgIG1fcHJvY2Vzc29ycy5jbGVh
cigpOwotfQotCi12b2lkIFdlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXI6OmFkZFByb2Nlc3Nv
cihQYXNzT3duUHRyPFdlYlNvY2tldEV4dGVuc2lvblByb2Nlc3Nvcj4gcHJvY2Vzc29yKQotewot
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9wcm9jZXNzb3JzLnNpemUoKTsgKytpKSB7Ci0g
ICAgICAgIGlmIChtX3Byb2Nlc3NvcnNbaV0tPmV4dGVuc2lvblRva2VuKCkgPT0gcHJvY2Vzc29y
LT5leHRlbnNpb25Ub2tlbigpKQotICAgICAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBBU1NF
UlQocHJvY2Vzc29yLT5oYW5kc2hha2VTdHJpbmcoKS5sZW5ndGgoKSk7Ci0gICAgQVNTRVJUKCFw
cm9jZXNzb3ItPmhhbmRzaGFrZVN0cmluZygpLmNvbnRhaW5zKCdcbicpKTsKLSAgICBBU1NFUlQo
IXByb2Nlc3Nvci0+aGFuZHNoYWtlU3RyaW5nKCkuY29udGFpbnMoc3RhdGljX2Nhc3Q8VUNoYXI+
KCdcMCcpKSk7Ci0gICAgbV9wcm9jZXNzb3JzLmFwcGVuZChwcm9jZXNzb3IpOwotfQotCi1jb25z
dCBTdHJpbmcgV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlcjo6Y3JlYXRlSGVhZGVyVmFsdWUo
KSBjb25zdAotewotICAgIHNpemVfdCBudW1Qcm9jZXNzb3JzID0gbV9wcm9jZXNzb3JzLnNpemUo
KTsKLSAgICBpZiAoIW51bVByb2Nlc3NvcnMpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLQot
ICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAgICBidWlsZGVyLmFwcGVuZChtX3Byb2Nlc3Nv
cnNbMF0tPmhhbmRzaGFrZVN0cmluZygpKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMTsgaSA8IG51
bVByb2Nlc3NvcnM7ICsraSkgewotICAgICAgICBidWlsZGVyLmFwcGVuZCgiLCAiKTsKLSAgICAg
ICAgYnVpbGRlci5hcHBlbmQobV9wcm9jZXNzb3JzW2ldLT5oYW5kc2hha2VTdHJpbmcoKSk7Ci0g
ICAgfQotICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7Ci19Ci0KLXZvaWQgV2ViU29ja2V0
RXh0ZW5zaW9uRGlzcGF0Y2hlcjo6YXBwZW5kQWNjZXB0ZWRFeHRlbnNpb24oY29uc3QgU3RyaW5n
JiBleHRlbnNpb25Ub2tlbiwgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mIGV4dGVuc2lvblBhcmFt
ZXRlcnMpCi17Ci0gICAgaWYgKCFtX2FjY2VwdGVkRXh0ZW5zaW9uc0J1aWxkZXIuaXNFbXB0eSgp
KQotICAgICAgICBtX2FjY2VwdGVkRXh0ZW5zaW9uc0J1aWxkZXIuYXBwZW5kKCIsICIpOwotICAg
IG1fYWNjZXB0ZWRFeHRlbnNpb25zQnVpbGRlci5hcHBlbmQoZXh0ZW5zaW9uVG9rZW4pOwotICAg
IC8vIEZJWE1FOiBTaG91bGQgdXNlIExpc3RIYXNoU2V0IHRvIGtlZXAgdGhlIG9yZGVyIG9mIHRo
ZSBwYXJhbWV0ZXJzLgotICAgIGZvciAoSGFzaE1hcDxTdHJpbmcsIFN0cmluZz46OmNvbnN0X2l0
ZXJhdG9yIGl0ZXJhdG9yID0gZXh0ZW5zaW9uUGFyYW1ldGVycy5iZWdpbigpOyBpdGVyYXRvciAh
PSBleHRlbnNpb25QYXJhbWV0ZXJzLmVuZCgpOyArK2l0ZXJhdG9yKSB7Ci0gICAgICAgIG1fYWNj
ZXB0ZWRFeHRlbnNpb25zQnVpbGRlci5hcHBlbmQoIjsgIik7Ci0gICAgICAgIG1fYWNjZXB0ZWRF
eHRlbnNpb25zQnVpbGRlci5hcHBlbmQoaXRlcmF0b3ItPmZpcnN0KTsKLSAgICAgICAgaWYgKCFp
dGVyYXRvci0+c2Vjb25kLmlzTnVsbCgpKSB7Ci0gICAgICAgICAgICBtX2FjY2VwdGVkRXh0ZW5z
aW9uc0J1aWxkZXIuYXBwZW5kKCI9Iik7Ci0gICAgICAgICAgICBtX2FjY2VwdGVkRXh0ZW5zaW9u
c0J1aWxkZXIuYXBwZW5kKGl0ZXJhdG9yLT5zZWNvbmQpOwotICAgICAgICB9Ci0gICAgfQotfQot
Ci12b2lkIFdlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXI6OmZhaWwoY29uc3QgU3RyaW5nJiBy
ZWFzb24pCi17Ci0gICAgbV9mYWlsdXJlUmVhc29uID0gcmVhc29uOwotICAgIG1fYWNjZXB0ZWRF
eHRlbnNpb25zQnVpbGRlci5jbGVhcigpOwotfQotCi1ib29sIFdlYlNvY2tldEV4dGVuc2lvbkRp
c3BhdGNoZXI6OnByb2Nlc3NIZWFkZXJWYWx1ZShjb25zdCBTdHJpbmcmIGhlYWRlclZhbHVlKQot
ewotICAgIGlmICghaGVhZGVyVmFsdWUubGVuZ3RoKCkpCi0gICAgICAgIHJldHVybiB0cnVlOwot
Ci0gICAgLy8gSWYgd2UgZG9uJ3Qgc2VuZCBTZWMtV2ViU29ja2V0LUV4dGVuc2lvbnMgaGVhZGVy
LCB0aGUgc2VydmVyIHNob3VsZCBub3QgcmV0dXJuIHRoZSBoZWFkZXIuCi0gICAgaWYgKCFtX3By
b2Nlc3NvcnMuc2l6ZSgpKSB7Ci0gICAgICAgIGZhaWwoIlJlY2VpdmVkIHVuZXhwZWN0ZWQgU2Vj
LVdlYlNvY2tldC1FeHRlbnNpb25zIGhlYWRlciIpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgfQotCi0gICAgY29uc3QgQ1N0cmluZyBoZWFkZXJWYWx1ZURhdGEgPSBoZWFkZXJWYWx1ZS51
dGY4KCk7Ci0gICAgRXh0ZW5zaW9uUGFyc2VyIHBhcnNlcihoZWFkZXJWYWx1ZURhdGEuZGF0YSgp
LCBoZWFkZXJWYWx1ZURhdGEuZGF0YSgpICsgaGVhZGVyVmFsdWVEYXRhLmxlbmd0aCgpKTsKLSAg
ICB3aGlsZSAoIXBhcnNlci5maW5pc2hlZCgpKSB7Ci0gICAgICAgIC8vIFBhcnNlIGV4dGVuc2lv
bi10b2tlbi4KLSAgICAgICAgaWYgKCFwYXJzZXIuY29uc3VtZVRva2VuKCkpIHsKLSAgICAgICAg
ICAgIGZhaWwoIlNlYy1XZWJTb2NrZXQtRXh0ZW5zaW9ucyBoZWFkZXIgaXMgaW52YWxpZCIpOwot
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgICAgIFN0cmluZyBleHRl
bnNpb25Ub2tlbiA9IHBhcnNlci5jdXJyZW50VG9rZW4oKTsKLQotICAgICAgICAvLyBQYXJzZSBl
eHRlbnNpb24tcGFyYW1ldGVycyBpZiBleGlzdHMuCi0gICAgICAgIEhhc2hNYXA8U3RyaW5nLCBT
dHJpbmc+IGV4dGVuc2lvblBhcmFtZXRlcnM7Ci0gICAgICAgIHdoaWxlIChwYXJzZXIuY29uc3Vt
ZUNoYXJhY3RlcignOycpKSB7Ci0gICAgICAgICAgICBpZiAoIXBhcnNlci5jb25zdW1lVG9rZW4o
KSkgewotICAgICAgICAgICAgICAgIGZhaWwoIlNlYy1XZWJTb2NrZXQtRXh0ZW5zaW9ucyBoZWFk
ZXIgaXMgaW52YWxpZCIpOwotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAg
ICAgIH0KLQotICAgICAgICAgICAgU3RyaW5nIHBhcmFtZXRlclRva2VuID0gcGFyc2VyLmN1cnJl
bnRUb2tlbigpOwotICAgICAgICAgICAgaWYgKHBhcnNlci5jb25zdW1lQ2hhcmFjdGVyKCc9Jykp
IHsKLSAgICAgICAgICAgICAgICBpZiAocGFyc2VyLmNvbnN1bWVRdW90ZWRTdHJpbmdPclRva2Vu
KCkpCi0gICAgICAgICAgICAgICAgICAgIGV4dGVuc2lvblBhcmFtZXRlcnMuYWRkKHBhcmFtZXRl
clRva2VuLCBwYXJzZXIuY3VycmVudFRva2VuKCkpOwotICAgICAgICAgICAgICAgIGVsc2Ugewot
ICAgICAgICAgICAgICAgICAgICBmYWlsKCJTZWMtV2ViU29ja2V0LUV4dGVuc2lvbnMgaGVhZGVy
IGlzIGludmFsaWQiKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIGV4dGVuc2lv
blBhcmFtZXRlcnMuYWRkKHBhcmFtZXRlclRva2VuLCBTdHJpbmcoKSk7Ci0gICAgICAgIH0KLSAg
ICAgICAgaWYgKCFwYXJzZXIuZmluaXNoZWQoKSAmJiAhcGFyc2VyLmNvbnN1bWVDaGFyYWN0ZXIo
JywnKSkgewotICAgICAgICAgICAgZmFpbCgiU2VjLVdlYlNvY2tldC1FeHRlbnNpb25zIGhlYWRl
ciBpcyBpbnZhbGlkIik7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLQot
ICAgICAgICBzaXplX3QgaW5kZXg7Ci0gICAgICAgIGZvciAoaW5kZXggPSAwOyBpbmRleCA8IG1f
cHJvY2Vzc29ycy5zaXplKCk7ICsraW5kZXgpIHsKLSAgICAgICAgICAgIFdlYlNvY2tldEV4dGVu
c2lvblByb2Nlc3NvciogcHJvY2Vzc29yID0gbV9wcm9jZXNzb3JzW2luZGV4XS5nZXQoKTsKLSAg
ICAgICAgICAgIGlmIChleHRlbnNpb25Ub2tlbiA9PSBwcm9jZXNzb3ItPmV4dGVuc2lvblRva2Vu
KCkpIHsKLSAgICAgICAgICAgICAgICBpZiAocHJvY2Vzc29yLT5wcm9jZXNzUmVzcG9uc2UoZXh0
ZW5zaW9uUGFyYW1ldGVycykpIHsKLSAgICAgICAgICAgICAgICAgICAgYXBwZW5kQWNjZXB0ZWRF
eHRlbnNpb24oZXh0ZW5zaW9uVG9rZW4sIGV4dGVuc2lvblBhcmFtZXRlcnMpOwotICAgICAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZmFp
bChwcm9jZXNzb3ItPmZhaWx1cmVSZWFzb24oKSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIC8vIFRoZXJlIGlzIG5vIGV4
dGVuc2lvbiB3aGljaCBjYW4gcHJvY2VzcyB0aGUgcmVzcG9uc2UuCi0gICAgICAgIGlmIChpbmRl
eCA9PSBtX3Byb2Nlc3NvcnMuc2l6ZSgpKSB7Ci0gICAgICAgICAgICBmYWlsKCJSZWNlaXZlZCB1
bmV4cGVjdGVkIGV4dGVuc2lvbjogIiArIGV4dGVuc2lvblRva2VuKTsKLSAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gcGFyc2VyLnBhcnNlZFN1
Y2Nlc3NmdWxseSgpOwotfQotCi1TdHJpbmcgV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlcjo6
YWNjZXB0ZWRFeHRlbnNpb25zKCkgY29uc3QKLXsKLSAgICBpZiAobV9hY2NlcHRlZEV4dGVuc2lv
bnNCdWlsZGVyLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgIHJldHVy
biBtX2FjY2VwdGVkRXh0ZW5zaW9uc0J1aWxkZXIudG9TdHJpbmdQcmVzZXJ2ZUNhcGFjaXR5KCk7
Ci19Ci0KLVN0cmluZyBXZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyOjpmYWlsdXJlUmVhc29u
KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9mYWlsdXJlUmVhc29uOwotfQotCi19IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCX1NPQ0tFVFMpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVuc2lvbkRp
c3BhdGNoZXIuaAkocmV2aXNpb24gMTA4OTI0KQorKysgU291cmNlL1dlYkNvcmUvd2Vic29ja2V0
cy9XZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNzAg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoK
LSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgot
ICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jaWZuZGVmIFdlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXJfaAotI2RlZmluZSBX
ZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyX2gKLQotI2lmIEVOQUJMRShXRUJfU09DS0VUUykK
LQotI2luY2x1ZGUgIldlYlNvY2tldEV4dGVuc2lvblByb2Nlc3Nvci5oIgotI2luY2x1ZGUgPHd0
Zi9Pd25QdHIuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgotI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+Ci0jaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgV2Vi
U29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlciB7Ci1wdWJsaWM6Ci0gICAgV2ViU29ja2V0RXh0ZW5z
aW9uRGlzcGF0Y2hlcigpIHsgfQotCi0gICAgdm9pZCByZXNldCgpOwotICAgIHZvaWQgYWRkUHJv
Y2Vzc29yKFBhc3NPd25QdHI8V2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yPik7Ci0gICAgY29u
c3QgU3RyaW5nIGNyZWF0ZUhlYWRlclZhbHVlKCkgY29uc3Q7Ci0KLSAgICBib29sIHByb2Nlc3NI
ZWFkZXJWYWx1ZShjb25zdCBTdHJpbmcmKTsKLSAgICBTdHJpbmcgYWNjZXB0ZWRFeHRlbnNpb25z
KCkgY29uc3Q7Ci0gICAgU3RyaW5nIGZhaWx1cmVSZWFzb24oKSBjb25zdDsKLQotcHJpdmF0ZToK
LSAgICB2b2lkIGFwcGVuZEFjY2VwdGVkRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9u
VG9rZW4sIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JiBleHRlbnNpb25QYXJhbWV0ZXJzKTsKLSAg
ICB2b2lkIGZhaWwoY29uc3QgU3RyaW5nJiByZWFzb24pOwotCi0gICAgVmVjdG9yPE93blB0cjxX
ZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3I+ID4gbV9wcm9jZXNzb3JzOwotICAgIFN0cmluZ0J1
aWxkZXIgbV9hY2NlcHRlZEV4dGVuc2lvbnNCdWlsZGVyOwotICAgIFN0cmluZyBtX2ZhaWx1cmVS
ZWFzb247Ci19OwotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCX1NPQ0tFVFMpCi0KLSNlbmRp
ZiAvLyBXZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3dlYnNvY2tldHMvV2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3IuaAko
cmV2aXNpb24gMTA4OTI0KQorKysgU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRF
eHRlbnNpb25Qcm9jZXNzb3IuaAkod29ya2luZyBjb3B5KQpAQCAtMSw3NCArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBk
aXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
Ci0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5k
ZWYgV2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yX2gKLSNkZWZpbmUgV2ViU29ja2V0RXh0ZW5z
aW9uUHJvY2Vzc29yX2gKLQotI2lmIEVOQUJMRShXRUJfU09DS0VUUykKLQotI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotY2xhc3MgV2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yIHsKLXB1Ymxp
YzoKLSAgICB2aXJ0dWFsIH5XZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3IoKSB7IH0KLQotICAg
IFN0cmluZyBleHRlbnNpb25Ub2tlbigpIGNvbnN0IHsgcmV0dXJuIG1fZXh0ZW5zaW9uVG9rZW47
IH0KLQotICAgIC8vIFRoZSByZXR1cm4gdmFsdWUgb2YgdGhpcyBtZXRob2Qgd2lsbCBiZSBhIHBh
cnQgb2YgdGhlIHZhbHVlIG9mCi0gICAgLy8gU2VjLVdlYlNvY2tldC1FeHRlbnNpb25zLgotICAg
IHZpcnR1YWwgU3RyaW5nIGhhbmRzaGFrZVN0cmluZygpID0gMDsKLQotICAgIC8vIFRoaXMgc2hv
dWxkIHZhbGlkYXRlIHRoZSBzZXJ2ZXIncyByZXNwb25zZSBwYXJhbWV0ZXJzIHdoaWNoIGFyZSBw
YXNzZWQKLSAgICAvLyBhcyBIYXNoTWFwPGtleSwgdmFsdWU+LiBUaGlzIG1heSBhbHNvIGRvIHNv
bWV0aGluZyBmb3IgdGhlIGV4dGVuc2lvbi4KLSAgICAvLyBOb3RlIHRoYXQgdGhpcyBtZXRob2Qg
bWF5IGJlIGNhbGxlZCBtb3JlIHRoYW4gb25jZSB3aGVuIHRoZSBzZXJ2ZXIKLSAgICAvLyByZXNw
b25zZSBjb250YWlucyBkdXBsaWNhdGUgZXh0ZW5zaW9uIHRva2VuIHRoYXQgbWF0Y2hlcyBleHRl
bnNpb25Ub2tlbigpLgotICAgIHZpcnR1YWwgYm9vbCBwcm9jZXNzUmVzcG9uc2UoY29uc3QgSGFz
aE1hcDxTdHJpbmcsIFN0cmluZz4mKSA9IDA7Ci0KLSAgICAvLyBJZiBwcm9jZWNzc1Jlc3BvbnNl
KCkgcmV0dXJucyBmYWxzZSwgdGhpcyBzaG91bGQgcHJvdmlkZSB0aGUgcmVhc29uLgotICAgIHZp
cnR1YWwgU3RyaW5nIGZhaWx1cmVSZWFzb24oKSB7IHJldHVybiAiRXh0ZW5zaW9uICIgKyBtX2V4
dGVuc2lvblRva2VuICsgIiBmYWlsZWQiOyB9Ci0KLXByb3RlY3RlZDoKLSAgICBXZWJTb2NrZXRF
eHRlbnNpb25Qcm9jZXNzb3IoY29uc3QgU3RyaW5nJiBleHRlbnNpb25Ub2tlbikKLSAgICAgICAg
OiBtX2V4dGVuc2lvblRva2VuKGV4dGVuc2lvblRva2VuKQotICAgIHsKLSAgICB9Ci0KLXByaXZh
dGU6Ci0gICAgU3RyaW5nIG1fZXh0ZW5zaW9uVG9rZW47Ci19OwotCi19Ci0KLSNlbmRpZiAvLyBF
TkFCTEUoV0VCX1NPQ0tFVFMpCi0KLSNlbmRpZiAvLyBXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNz
b3JfaApJbmRleDogU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRGcmFtZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0RnJhbWUuaAko
cmV2aXNpb24gMTA4OTI0KQorKysgU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRG
cmFtZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDgwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTIgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4K
LSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
Ci0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0g
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBXZWJTb2NrZXRG
cmFtZV9oCi0jZGVmaW5lIFdlYlNvY2tldEZyYW1lX2gKLQotI2lmIEVOQUJMRShXRUJfU09DS0VU
UykKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdHJ1Y3QgV2ViU29ja2V0RnJhbWUgewotICAg
IC8vIFJGQzY0NTUgb3Bjb2Rlcy4KLSAgICBlbnVtIE9wQ29kZSB7Ci0gICAgICAgIE9wQ29kZUNv
bnRpbnVhdGlvbiA9IDB4MCwKLSAgICAgICAgT3BDb2RlVGV4dCA9IDB4MSwKLSAgICAgICAgT3BD
b2RlQmluYXJ5ID0gMHgyLAotICAgICAgICBPcENvZGVDbG9zZSA9IDB4OCwKLSAgICAgICAgT3BD
b2RlUGluZyA9IDB4OSwKLSAgICAgICAgT3BDb2RlUG9uZyA9IDB4QSwKLSAgICAgICAgT3BDb2Rl
SW52YWxpZCA9IDB4MTAKLSAgICB9OwotCi0gICAgc3RhdGljIGJvb2wgaXNOb25Db250cm9sT3BD
b2RlKE9wQ29kZSBvcENvZGUpIHsgcmV0dXJuIG9wQ29kZSA9PSBPcENvZGVDb250aW51YXRpb24g
fHwgb3BDb2RlID09IE9wQ29kZVRleHQgfHwgb3BDb2RlID09IE9wQ29kZUJpbmFyeTsgfQotICAg
IHN0YXRpYyBib29sIGlzQ29udHJvbE9wQ29kZShPcENvZGUgb3BDb2RlKSB7IHJldHVybiBvcENv
ZGUgPT0gT3BDb2RlQ2xvc2UgfHwgb3BDb2RlID09IE9wQ29kZVBpbmcgfHwgb3BDb2RlID09IE9w
Q29kZVBvbmc7IH0KLSAgICBzdGF0aWMgYm9vbCBpc1Jlc2VydmVkT3BDb2RlKE9wQ29kZSBvcENv
ZGUpIHsgcmV0dXJuICFpc05vbkNvbnRyb2xPcENvZGUob3BDb2RlKSAmJiAhaXNDb250cm9sT3BD
b2RlKG9wQ29kZSk7IH0KLQotICAgIFdlYlNvY2tldEZyYW1lKE9wQ29kZSBvcENvZGUgPSBPcENv
ZGVJbnZhbGlkLCBib29sIGZpbmFsID0gZmFsc2UsIGJvb2wgY29tcHJlc3MgPSBmYWxzZSwgYm9v
bCBtYXNrZWQgPSBmYWxzZSwgY29uc3QgY2hhciogcGF5bG9hZCA9IDAsIHNpemVfdCBwYXlsb2Fk
TGVuZ3RoID0gMCkKLSAgICAgICAgOiBvcENvZGUob3BDb2RlKQotICAgICAgICAsIGZpbmFsKGZp
bmFsKQotICAgICAgICAsIGNvbXByZXNzKGNvbXByZXNzKQotICAgICAgICAsIHJlc2VydmVkMihm
YWxzZSkKLSAgICAgICAgLCByZXNlcnZlZDMoZmFsc2UpCi0gICAgICAgICwgbWFza2VkKG1hc2tl
ZCkKLSAgICAgICAgLCBwYXlsb2FkKHBheWxvYWQpCi0gICAgICAgICwgcGF5bG9hZExlbmd0aChw
YXlsb2FkTGVuZ3RoKQotICAgIHsKLSAgICB9Ci0KLSAgICBPcENvZGUgb3BDb2RlOwotICAgIGJv
b2wgZmluYWw7Ci0gICAgYm9vbCBjb21wcmVzczsKLSAgICBib29sIHJlc2VydmVkMjsKLSAgICBi
b29sIHJlc2VydmVkMzsKLSAgICBib29sIG1hc2tlZDsKLSAgICBjb25zdCBjaGFyKiBwYXlsb2Fk
OwotICAgIHNpemVfdCBwYXlsb2FkTGVuZ3RoOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQl9TT0NLRVRTKQotCi0jZW5kaWYgLy8gV2ViU29ja2V0
RnJhbWVfaApJbmRleDogU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hh
a2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0
SGFuZHNoYWtlLmNwcAkocmV2aXNpb24gMTA4OTI0KQorKysgU291cmNlL1dlYkNvcmUvd2Vic29j
a2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDcyMCArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDEx
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0g
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2lmIEVOQUJMRShXRUJf
U09DS0VUUykKLQotI2luY2x1ZGUgIldlYlNvY2tldEhhbmRzaGFrZS5oIgotCi0jaW5jbHVkZSAi
QmFzZTY0LmgiCi0jaW5jbHVkZSAiQ29va2llLmgiCi0jaW5jbHVkZSAiQ29va2llSmFyLmgiCi0j
aW5jbHVkZSAiRG9jdW1lbnQuaCIKLSNpbmNsdWRlICJIVFRQSGVhZGVyTWFwLmgiCi0jaW5jbHVk
ZSAiS1VSTC5oIgotI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLSNpbmNsdWRlICJTY3JpcHRDYWxsU3Rh
Y2suaCIKLSNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiU2Vj
dXJpdHlPcmlnaW4uaCIKLSNpbmNsdWRlIDx3dGYvQ3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1i
ZXIuaD4KLSNpbmNsdWRlIDx3dGYvTUQ1Lmg+Ci0jaW5jbHVkZSA8d3RmL1NIQTEuaD4KLSNpbmNs
dWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+Ci0jaW5jbHVkZSA8d3RmL1N0cmluZ0V4dHJhcy5oPgot
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0j
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgotI2luY2x1ZGUgPHd0Zi91bmljb2RlL0NoYXJhY3Rlck5hbWVzLmg+Ci0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotc3RhdGljIGNvbnN0IGNoYXIgcmFuZG9tQ2hhcmFjdGVySW5T
ZWNXZWJTb2NrZXRLZXlbXSA9ICIhXCIjJCUmJygpKissLS4vOjs8PT4/QEFCQ0RFRkdISUpLTE1O
T1BRUlNUVVZXWFlaW1xcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9fiI7Ci0KLXN0
YXRpYyBTdHJpbmcgcmVzb3VyY2VOYW1lKGNvbnN0IEtVUkwmIHVybCkKLXsKLSAgICBTdHJpbmcg
bmFtZSA9IHVybC5wYXRoKCk7Ci0gICAgaWYgKG5hbWUuaXNFbXB0eSgpKQotICAgICAgICBuYW1l
ID0gIi8iOwotICAgIGlmICghdXJsLnF1ZXJ5KCkuaXNOdWxsKCkpCi0gICAgICAgIG5hbWUgKz0g
Ij8iICsgdXJsLnF1ZXJ5KCk7Ci0gICAgQVNTRVJUKCFuYW1lLmlzRW1wdHkoKSk7Ci0gICAgQVNT
RVJUKCFuYW1lLmNvbnRhaW5zKCcgJykpOwotICAgIHJldHVybiBuYW1lOwotfQotCi1zdGF0aWMg
U3RyaW5nIGhvc3ROYW1lKGNvbnN0IEtVUkwmIHVybCwgYm9vbCBzZWN1cmUpCi17Ci0gICAgQVNT
RVJUKHVybC5wcm90b2NvbElzKCJ3c3MiKSA9PSBzZWN1cmUpOwotICAgIFN0cmluZ0J1aWxkZXIg
YnVpbGRlcjsKLSAgICBidWlsZGVyLmFwcGVuZCh1cmwuaG9zdCgpLmxvd2VyKCkpOwotICAgIGlm
ICh1cmwucG9ydCgpICYmICgoIXNlY3VyZSAmJiB1cmwucG9ydCgpICE9IDgwKSB8fCAoc2VjdXJl
ICYmIHVybC5wb3J0KCkgIT0gNDQzKSkpIHsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoJzonKTsK
LSAgICAgICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nOjpudW1iZXIodXJsLnBvcnQoKSkpOwotICAg
IH0KLSAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwotfQotCi1zdGF0aWMgY29uc3Qgc2l6
ZV90IG1heENvbnNvbGVNZXNzYWdlU2l6ZSA9IDEyODsKLXN0YXRpYyBTdHJpbmcgdHJpbUNvbnNv
bGVNZXNzYWdlKGNvbnN0IGNoYXIqIHAsIHNpemVfdCBsZW4pCi17Ci0gICAgU3RyaW5nIHMgPSBT
dHJpbmcocCwgc3RkOjptaW48c2l6ZV90PihsZW4sIG1heENvbnNvbGVNZXNzYWdlU2l6ZSkpOwot
ICAgIGlmIChsZW4gPiBtYXhDb25zb2xlTWVzc2FnZVNpemUpCi0gICAgICAgIHMuYXBwZW5kKGhv
cml6b250YWxFbGxpcHNpcyk7Ci0gICAgcmV0dXJuIHM7Ci19Ci0KLXN0YXRpYyB1aW50MzJfdCBy
YW5kb21OdW1iZXJMZXNzVGhhbih1aW50MzJfdCBuKQotewotICAgIGlmICghbikKLSAgICAgICAg
cmV0dXJuIDA7Ci0gICAgaWYgKG4gPT0gc3RkOjpudW1lcmljX2xpbWl0czx1aW50MzJfdD46Om1h
eCgpKQotICAgICAgICByZXR1cm4gY3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIoKTsKLSAg
ICB1aW50MzJfdCBtYXggPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCkgLSAo
c3RkOjpudW1lcmljX2xpbWl0czx1aW50MzJfdD46Om1heCgpICUgbik7Ci0gICAgQVNTRVJUKCEo
bWF4ICUgbikpOwotICAgIHVpbnQzMl90IHY7Ci0gICAgZG8gewotICAgICAgICB2ID0gY3J5cHRv
Z3JhcGhpY2FsbHlSYW5kb21OdW1iZXIoKTsKLSAgICB9IHdoaWxlICh2ID49IG1heCk7Ci0gICAg
cmV0dXJuIHYgJSBuOwotfQotCi1zdGF0aWMgdm9pZCBnZW5lcmF0ZUhpeGllNzZTZWNXZWJTb2Nr
ZXRLZXkodWludDMyX3QmIG51bWJlciwgU3RyaW5nJiBrZXkpCi17Ci0gICAgdWludDMyX3Qgc3Bh
Y2UgPSByYW5kb21OdW1iZXJMZXNzVGhhbigxMikgKyAxOwotICAgIHVpbnQzMl90IG1heCA9IDQy
OTQ5NjcyOTVVIC8gc3BhY2U7Ci0gICAgbnVtYmVyID0gcmFuZG9tTnVtYmVyTGVzc1RoYW4obWF4
KTsKLSAgICB1aW50MzJfdCBwcm9kdWN0ID0gbnVtYmVyICogc3BhY2U7Ci0KLSAgICBTdHJpbmcg
cyA9IFN0cmluZzo6bnVtYmVyKHByb2R1Y3QpOwotICAgIGludCBuID0gcmFuZG9tTnVtYmVyTGVz
c1RoYW4oMTIpICsgMTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgcmFuZG9tQ2hh
cnMsIChyYW5kb21DaGFyYWN0ZXJJblNlY1dlYlNvY2tldEtleSkpOwotICAgIGZvciAoaW50IGkg
PSAwOyBpIDwgbjsgaSsrKSB7Ci0gICAgICAgIGludCBwb3MgPSByYW5kb21OdW1iZXJMZXNzVGhh
bihzLmxlbmd0aCgpICsgMSk7Ci0gICAgICAgIGludCBjaHBvcyA9IHJhbmRvbU51bWJlckxlc3NU
aGFuKHJhbmRvbUNoYXJzLmxlbmd0aCgpKTsKLSAgICAgICAgcy5pbnNlcnQocmFuZG9tQ2hhcnMu
c3Vic3RyaW5nKGNocG9zLCAxKSwgcG9zKTsKLSAgICB9Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NB
TChTdHJpbmcsIHNwYWNlQ2hhciwgKCIgIikpOwotICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkg
PCBzcGFjZTsgaSsrKSB7Ci0gICAgICAgIGludCBwb3MgPSByYW5kb21OdW1iZXJMZXNzVGhhbihz
Lmxlbmd0aCgpIC0gMSkgKyAxOwotICAgICAgICBzLmluc2VydChzcGFjZUNoYXIsIHBvcyk7Ci0g
ICAgfQotICAgIEFTU0VSVChzWzBdICE9ICcgJyk7Ci0gICAgQVNTRVJUKHNbcy5sZW5ndGgoKSAt
IDFdICE9ICcgJyk7Ci0gICAga2V5ID0gczsKLX0KLQotc3RhdGljIHZvaWQgZ2VuZXJhdGVIaXhp
ZTc2S2V5Myh1bnNpZ25lZCBjaGFyIGtleTNbOF0pCi17Ci0gICAgY3J5cHRvZ3JhcGhpY2FsbHlS
YW5kb21WYWx1ZXMoa2V5MywgOCk7Ci19Ci0KLXN0YXRpYyB2b2lkIHNldENoYWxsZW5nZU51bWJl
cih1bnNpZ25lZCBjaGFyKiBidWYsIHVpbnQzMl90IG51bWJlcikKLXsKLSAgICB1bnNpZ25lZCBj
aGFyKiBwID0gYnVmICsgMzsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IDQ7IGkrKykgewotICAg
ICAgICAqcCA9IG51bWJlciAmIDB4RkY7Ci0gICAgICAgIC0tcDsKLSAgICAgICAgbnVtYmVyID4+
PSA4OwotICAgIH0KLX0KLQotc3RhdGljIHZvaWQgZ2VuZXJhdGVIaXhpZTc2RXhwZWN0ZWRDaGFs
bGVuZ2VSZXNwb25zZSh1aW50MzJfdCBudW1iZXIxLCB1aW50MzJfdCBudW1iZXIyLCB1bnNpZ25l
ZCBjaGFyIGtleTNbOF0sIHVuc2lnbmVkIGNoYXIgZXhwZWN0ZWRDaGFsbGVuZ2VbMTZdKQotewot
ICAgIHVuc2lnbmVkIGNoYXIgY2hhbGxlbmdlWzE2XTsKLSAgICBzZXRDaGFsbGVuZ2VOdW1iZXIo
JmNoYWxsZW5nZVswXSwgbnVtYmVyMSk7Ci0gICAgc2V0Q2hhbGxlbmdlTnVtYmVyKCZjaGFsbGVu
Z2VbNF0sIG51bWJlcjIpOwotICAgIG1lbWNweSgmY2hhbGxlbmdlWzhdLCBrZXkzLCA4KTsKLSAg
ICBNRDUgbWQ1OwotICAgIG1kNS5hZGRCeXRlcyhjaGFsbGVuZ2UsIHNpemVvZihjaGFsbGVuZ2Up
KTsKLSAgICBWZWN0b3I8dWludDhfdCwgMTY+IGRpZ2VzdDsKLSAgICBtZDUuY2hlY2tzdW0oZGln
ZXN0KTsKLSAgICBtZW1jcHkoZXhwZWN0ZWRDaGFsbGVuZ2UsIGRpZ2VzdC5kYXRhKCksIDE2KTsK
LX0KLQotc3RhdGljIFN0cmluZyBnZW5lcmF0ZVNlY1dlYlNvY2tldEtleSgpCi17Ci0gICAgc3Rh
dGljIGNvbnN0IHNpemVfdCBub25jZVNpemUgPSAxNjsKLSAgICB1bnNpZ25lZCBjaGFyIGtleVtu
b25jZVNpemVdOwotICAgIGNyeXB0b2dyYXBoaWNhbGx5UmFuZG9tVmFsdWVzKGtleSwgbm9uY2VT
aXplKTsKLSAgICByZXR1cm4gYmFzZTY0RW5jb2RlKHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGtl
eSksIG5vbmNlU2l6ZSk7Ci19Ci0KLXN0YXRpYyBTdHJpbmcgZ2V0RXhwZWN0ZWRXZWJTb2NrZXRB
Y2NlcHQoY29uc3QgU3RyaW5nJiBzZWNXZWJTb2NrZXRLZXkpCi17Ci0gICAgc3RhdGljIGNvbnN0
IGNoYXIqIGNvbnN0IHdlYlNvY2tldEtleUdVSUQgPSAiMjU4RUFGQTUtRTkxNC00N0RBLTk1Q0Et
QzVBQjBEQzg1QjExIjsKLSAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IHNoYTFIYXNoU2l6ZSA9IDIw
OyAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgZGVmaW5lZCBpbiBTSEExLmguCi0gICAgU0hBMSBz
aGExOwotICAgIENTdHJpbmcga2V5RGF0YSA9IHNlY1dlYlNvY2tldEtleS5hc2NpaSgpOwotICAg
IHNoYTEuYWRkQnl0ZXMocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oa2V5RGF0YS5k
YXRhKCkpLCBrZXlEYXRhLmxlbmd0aCgpKTsKLSAgICBzaGExLmFkZEJ5dGVzKHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHdlYlNvY2tldEtleUdVSUQpLCBzdHJsZW4od2ViU29ja2V0
S2V5R1VJRCkpOwotICAgIFZlY3Rvcjx1aW50OF90LCBzaGExSGFzaFNpemU+IGhhc2g7Ci0gICAg
c2hhMS5jb21wdXRlSGFzaChoYXNoKTsKLSAgICByZXR1cm4gYmFzZTY0RW5jb2RlKHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGhhc2guZGF0YSgpKSwgc2hhMUhhc2hTaXplKTsKLX0KLQot
V2ViU29ja2V0SGFuZHNoYWtlOjpXZWJTb2NrZXRIYW5kc2hha2UoY29uc3QgS1VSTCYgdXJsLCBj
b25zdCBTdHJpbmcmIHByb3RvY29sLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBi
b29sIHVzZUhpeGllNzZQcm90b2NvbCkKLSAgICA6IG1fdXJsKHVybCkKLSAgICAsIG1fY2xpZW50
UHJvdG9jb2wocHJvdG9jb2wpCi0gICAgLCBtX3NlY3VyZShtX3VybC5wcm90b2NvbElzKCJ3c3Mi
KSkKLSAgICAsIG1fY29udGV4dChjb250ZXh0KQotICAgICwgbV91c2VIaXhpZTc2UHJvdG9jb2wo
dXNlSGl4aWU3NlByb3RvY29sKQotICAgICwgbV9tb2RlKEluY29tcGxldGUpCi17Ci0gICAgaWYg
KG1fdXNlSGl4aWU3NlByb3RvY29sKSB7Ci0gICAgICAgIHVpbnQzMl90IG51bWJlcjE7Ci0gICAg
ICAgIHVpbnQzMl90IG51bWJlcjI7Ci0gICAgICAgIGdlbmVyYXRlSGl4aWU3NlNlY1dlYlNvY2tl
dEtleShudW1iZXIxLCBtX2hpeGllNzZTZWNXZWJTb2NrZXRLZXkxKTsKLSAgICAgICAgZ2VuZXJh
dGVIaXhpZTc2U2VjV2ViU29ja2V0S2V5KG51bWJlcjIsIG1faGl4aWU3NlNlY1dlYlNvY2tldEtl
eTIpOwotICAgICAgICBnZW5lcmF0ZUhpeGllNzZLZXkzKG1faGl4aWU3NktleTMpOwotICAgICAg
ICBnZW5lcmF0ZUhpeGllNzZFeHBlY3RlZENoYWxsZW5nZVJlc3BvbnNlKG51bWJlcjEsIG51bWJl
cjIsIG1faGl4aWU3NktleTMsIG1faGl4aWU3NkV4cGVjdGVkQ2hhbGxlbmdlUmVzcG9uc2UpOwot
ICAgIH0gZWxzZSB7Ci0gICAgICAgIG1fc2VjV2ViU29ja2V0S2V5ID0gZ2VuZXJhdGVTZWNXZWJT
b2NrZXRLZXkoKTsKLSAgICAgICAgbV9leHBlY3RlZEFjY2VwdCA9IGdldEV4cGVjdGVkV2ViU29j
a2V0QWNjZXB0KG1fc2VjV2ViU29ja2V0S2V5KTsKLSAgICB9Ci19Ci0KLVdlYlNvY2tldEhhbmRz
aGFrZTo6fldlYlNvY2tldEhhbmRzaGFrZSgpCi17Ci19Ci0KLWNvbnN0IEtVUkwmIFdlYlNvY2tl
dEhhbmRzaGFrZTo6dXJsKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV91cmw7Ci19Ci0KLXZvaWQg
V2ViU29ja2V0SGFuZHNoYWtlOjpzZXRVUkwoY29uc3QgS1VSTCYgdXJsKQotewotICAgIG1fdXJs
ID0gdXJsLmNvcHkoKTsKLX0KLQotY29uc3QgU3RyaW5nIFdlYlNvY2tldEhhbmRzaGFrZTo6aG9z
dCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fdXJsLmhvc3QoKS5sb3dlcigpOwotfQotCi1jb25z
dCBTdHJpbmcmIFdlYlNvY2tldEhhbmRzaGFrZTo6Y2xpZW50UHJvdG9jb2woKSBjb25zdAotewot
ICAgIHJldHVybiBtX2NsaWVudFByb3RvY29sOwotfQotCi12b2lkIFdlYlNvY2tldEhhbmRzaGFr
ZTo6c2V0Q2xpZW50UHJvdG9jb2woY29uc3QgU3RyaW5nJiBwcm90b2NvbCkKLXsKLSAgICBtX2Ns
aWVudFByb3RvY29sID0gcHJvdG9jb2w7Ci19Ci0KLWJvb2wgV2ViU29ja2V0SGFuZHNoYWtlOjpz
ZWN1cmUoKSBjb25zdAotewotICAgIHJldHVybiBtX3NlY3VyZTsKLX0KLQotU3RyaW5nIFdlYlNv
Y2tldEhhbmRzaGFrZTo6Y2xpZW50T3JpZ2luKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9jb250
ZXh0LT5zZWN1cml0eU9yaWdpbigpLT50b1N0cmluZygpOwotfQotCi1TdHJpbmcgV2ViU29ja2V0
SGFuZHNoYWtlOjpjbGllbnRMb2NhdGlvbigpIGNvbnN0Ci17Ci0gICAgU3RyaW5nQnVpbGRlciBi
dWlsZGVyOwotICAgIGJ1aWxkZXIuYXBwZW5kKG1fc2VjdXJlID8gIndzcyIgOiAid3MiKTsKLSAg
ICBidWlsZGVyLmFwcGVuZCgiOi8vIik7Ci0gICAgYnVpbGRlci5hcHBlbmQoaG9zdE5hbWUobV91
cmwsIG1fc2VjdXJlKSk7Ci0gICAgYnVpbGRlci5hcHBlbmQocmVzb3VyY2VOYW1lKG1fdXJsKSk7
Ci0gICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKLX0KLQotQ1N0cmluZyBXZWJTb2NrZXRI
YW5kc2hha2U6OmNsaWVudEhhbmRzaGFrZU1lc3NhZ2UoKSBjb25zdAotewotICAgIC8vIEtlZXAg
dGhlIGZvbGxvd2luZyBjb25zaXN0ZW50IHdpdGggY2xpZW50SGFuZHNoYWtlUmVxdWVzdCgpLgot
ICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKLQotICAgIGJ1aWxkZXIuYXBwZW5kKCJHRVQgIik7
Ci0gICAgYnVpbGRlci5hcHBlbmQocmVzb3VyY2VOYW1lKG1fdXJsKSk7Ci0gICAgYnVpbGRlci5h
cHBlbmQoIiBIVFRQLzEuMVxyXG4iKTsKLQotICAgIFZlY3RvcjxTdHJpbmc+IGZpZWxkczsKLSAg
ICBpZiAobV91c2VIaXhpZTc2UHJvdG9jb2wpCi0gICAgICAgIGZpZWxkcy5hcHBlbmQoIlVwZ3Jh
ZGU6IFdlYlNvY2tldCIpOwotICAgIGVsc2UKLSAgICAgICAgZmllbGRzLmFwcGVuZCgiVXBncmFk
ZTogd2Vic29ja2V0Iik7Ci0gICAgZmllbGRzLmFwcGVuZCgiQ29ubmVjdGlvbjogVXBncmFkZSIp
OwotICAgIGZpZWxkcy5hcHBlbmQoIkhvc3Q6ICIgKyBob3N0TmFtZShtX3VybCwgbV9zZWN1cmUp
KTsKLSAgICBmaWVsZHMuYXBwZW5kKCJPcmlnaW46ICIgKyBjbGllbnRPcmlnaW4oKSk7Ci0gICAg
aWYgKCFtX2NsaWVudFByb3RvY29sLmlzRW1wdHkoKSkKLSAgICAgICAgZmllbGRzLmFwcGVuZCgi
U2VjLVdlYlNvY2tldC1Qcm90b2NvbDogIiArIG1fY2xpZW50UHJvdG9jb2wpOwotCi0gICAgS1VS
TCB1cmwgPSBodHRwVVJMRm9yQXV0aGVudGljYXRpb25BbmRDb29raWVzKCk7Ci0gICAgaWYgKG1f
Y29udGV4dC0+aXNEb2N1bWVudCgpKSB7Ci0gICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHN0
YXRpY19jYXN0PERvY3VtZW50Kj4obV9jb250ZXh0KTsKLSAgICAgICAgU3RyaW5nIGNvb2tpZSA9
IGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGRvY3VtZW50LCB1cmwpOwotICAgICAgICBp
ZiAoIWNvb2tpZS5pc0VtcHR5KCkpCi0gICAgICAgICAgICBmaWVsZHMuYXBwZW5kKCJDb29raWU6
ICIgKyBjb29raWUpOwotICAgICAgICAvLyBTZXQgIkNvb2tpZTI6IDxjb29raWU+IiBpZiBjb29r
aWVzIDIgZXhpc3RzIGZvciB1cmw/Ci0gICAgfQotCi0gICAgaWYgKG1fdXNlSGl4aWU3NlByb3Rv
Y29sKSB7Ci0gICAgICAgIGZpZWxkcy5hcHBlbmQoIlNlYy1XZWJTb2NrZXQtS2V5MTogIiArIG1f
aGl4aWU3NlNlY1dlYlNvY2tldEtleTEpOwotICAgICAgICBmaWVsZHMuYXBwZW5kKCJTZWMtV2Vi
U29ja2V0LUtleTI6ICIgKyBtX2hpeGllNzZTZWNXZWJTb2NrZXRLZXkyKTsKLSAgICB9IGVsc2Ug
ewotICAgICAgICBmaWVsZHMuYXBwZW5kKCJTZWMtV2ViU29ja2V0LUtleTogIiArIG1fc2VjV2Vi
U29ja2V0S2V5KTsKLSAgICAgICAgZmllbGRzLmFwcGVuZCgiU2VjLVdlYlNvY2tldC1WZXJzaW9u
OiAxMyIpOwotICAgICAgICBjb25zdCBTdHJpbmcgZXh0ZW5zaW9uVmFsdWUgPSBtX2V4dGVuc2lv
bkRpc3BhdGNoZXIuY3JlYXRlSGVhZGVyVmFsdWUoKTsKLSAgICAgICAgaWYgKGV4dGVuc2lvblZh
bHVlLmxlbmd0aCgpKQotICAgICAgICAgICAgZmllbGRzLmFwcGVuZCgiU2VjLVdlYlNvY2tldC1F
eHRlbnNpb25zOiAiICsgZXh0ZW5zaW9uVmFsdWUpOwotICAgIH0KLQotICAgIC8vIEZpZWxkcyBp
biB0aGUgaGFuZHNoYWtlIGFyZSBzZW50IGJ5IHRoZSBjbGllbnQgaW4gYSByYW5kb20gb3JkZXI7
IHRoZQotICAgIC8vIG9yZGVyIGlzIG5vdCBtZWFuaW5nZnVsLiAgVGh1cywgaXQncyBvayB0byBz
ZW5kIHRoZSBvcmRlciB3ZSBjb25zdHJ1Y3RlZAotICAgIC8vIHRoZSBmaWVsZHMuCi0KLSAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IGZpZWxkcy5zaXplKCk7IGkrKykgewotICAgICAgICBidWls
ZGVyLmFwcGVuZChmaWVsZHNbaV0pOwotICAgICAgICBidWlsZGVyLmFwcGVuZCgiXHJcbiIpOwot
ICAgIH0KLQotICAgIGJ1aWxkZXIuYXBwZW5kKCJcclxuIik7Ci0KLSAgICBDU3RyaW5nIGhhbmRz
aGFrZUhlYWRlciA9IGJ1aWxkZXIudG9TdHJpbmcoKS51dGY4KCk7Ci0gICAgLy8gSHliaS0xMCBo
YW5kc2hha2UgaXMgY29tcGxldGUgYXQgdGhpcyBwb2ludC4KLSAgICBpZiAoIW1fdXNlSGl4aWU3
NlByb3RvY29sKQotICAgICAgICByZXR1cm4gaGFuZHNoYWtlSGVhZGVyOwotICAgIC8vIEhpeGll
LTc2IHByb3RvY29sIHJlcXVpcmVzIHNlbmRpbmcgZWlnaHQtYnl0ZSBkYXRhIChzby1jYWxsZWQg
ImtleTMiKSBhZnRlciB0aGUgcmVxdWVzdCBoZWFkZXIgZmllbGRzLgotICAgIGNoYXIqIGNoYXJh
Y3RlckJ1ZmZlciA9IDA7Ci0gICAgQ1N0cmluZyBtc2cgPSBDU3RyaW5nOjpuZXdVbmluaXRpYWxp
emVkKGhhbmRzaGFrZUhlYWRlci5sZW5ndGgoKSArIHNpemVvZihtX2hpeGllNzZLZXkzKSwgY2hh
cmFjdGVyQnVmZmVyKTsKLSAgICBtZW1jcHkoY2hhcmFjdGVyQnVmZmVyLCBoYW5kc2hha2VIZWFk
ZXIuZGF0YSgpLCBoYW5kc2hha2VIZWFkZXIubGVuZ3RoKCkpOwotICAgIG1lbWNweShjaGFyYWN0
ZXJCdWZmZXIgKyBoYW5kc2hha2VIZWFkZXIubGVuZ3RoKCksIG1faGl4aWU3NktleTMsIHNpemVv
ZihtX2hpeGllNzZLZXkzKSk7Ci0gICAgcmV0dXJuIG1zZzsKLX0KLQotV2ViU29ja2V0SGFuZHNo
YWtlUmVxdWVzdCBXZWJTb2NrZXRIYW5kc2hha2U6OmNsaWVudEhhbmRzaGFrZVJlcXVlc3QoKSBj
b25zdAotewotICAgIC8vIEtlZXAgdGhlIGZvbGxvd2luZyBjb25zaXN0ZW50IHdpdGggY2xpZW50
SGFuZHNoYWtlTWVzc2FnZSgpLgotICAgIC8vIEZJWE1FOiBkbyB3ZSBuZWVkIHRvIHN0b3JlIG1f
c2VjV2ViU29ja2V0S2V5MSwgbV9zZWNXZWJTb2NrZXRLZXkyIGFuZAotICAgIC8vIG1fa2V5MyBp
biBXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0PwotICAgIFdlYlNvY2tldEhhbmRzaGFrZVJlcXVl
c3QgcmVxdWVzdCgiR0VUIiwgbV91cmwpOwotICAgIGlmIChtX3VzZUhpeGllNzZQcm90b2NvbCkK
LSAgICAgICAgcmVxdWVzdC5hZGRIZWFkZXJGaWVsZCgiVXBncmFkZSIsICJXZWJTb2NrZXQiKTsK
LSAgICBlbHNlCi0gICAgICAgIHJlcXVlc3QuYWRkSGVhZGVyRmllbGQoIlVwZ3JhZGUiLCAid2Vi
c29ja2V0Iik7Ci0gICAgcmVxdWVzdC5hZGRIZWFkZXJGaWVsZCgiQ29ubmVjdGlvbiIsICJVcGdy
YWRlIik7Ci0gICAgcmVxdWVzdC5hZGRIZWFkZXJGaWVsZCgiSG9zdCIsIGhvc3ROYW1lKG1fdXJs
LCBtX3NlY3VyZSkpOwotICAgIHJlcXVlc3QuYWRkSGVhZGVyRmllbGQoIk9yaWdpbiIsIGNsaWVu
dE9yaWdpbigpKTsKLSAgICBpZiAoIW1fY2xpZW50UHJvdG9jb2wuaXNFbXB0eSgpKQotICAgICAg
ICByZXF1ZXN0LmFkZEhlYWRlckZpZWxkKCJTZWMtV2ViU29ja2V0LVByb3RvY29sOiIsIG1fY2xp
ZW50UHJvdG9jb2wpOwotCi0gICAgS1VSTCB1cmwgPSBodHRwVVJMRm9yQXV0aGVudGljYXRpb25B
bmRDb29raWVzKCk7Ci0gICAgaWYgKG1fY29udGV4dC0+aXNEb2N1bWVudCgpKSB7Ci0gICAgICAg
IERvY3VtZW50KiBkb2N1bWVudCA9IHN0YXRpY19jYXN0PERvY3VtZW50Kj4obV9jb250ZXh0KTsK
LSAgICAgICAgU3RyaW5nIGNvb2tpZSA9IGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGRv
Y3VtZW50LCB1cmwpOwotICAgICAgICBpZiAoIWNvb2tpZS5pc0VtcHR5KCkpCi0gICAgICAgICAg
ICByZXF1ZXN0LmFkZEhlYWRlckZpZWxkKCJDb29raWUiLCBjb29raWUpOwotICAgICAgICAvLyBT
ZXQgIkNvb2tpZTI6IDxjb29raWU+IiBpZiBjb29raWVzIDIgZXhpc3RzIGZvciB1cmw/Ci0gICAg
fQotCi0gICAgaWYgKG1fdXNlSGl4aWU3NlByb3RvY29sKSB7Ci0gICAgICAgIHJlcXVlc3QuYWRk
SGVhZGVyRmllbGQoIlNlYy1XZWJTb2NrZXQtS2V5MSIsIG1faGl4aWU3NlNlY1dlYlNvY2tldEtl
eTEpOwotICAgICAgICByZXF1ZXN0LmFkZEhlYWRlckZpZWxkKCJTZWMtV2ViU29ja2V0LUtleTIi
LCBtX2hpeGllNzZTZWNXZWJTb2NrZXRLZXkyKTsKLSAgICAgICAgcmVxdWVzdC5zZXRLZXkzKG1f
aGl4aWU3NktleTMpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIHJlcXVlc3QuYWRkSGVhZGVyRmll
bGQoIlNlYy1XZWJTb2NrZXQtS2V5IiwgbV9zZWNXZWJTb2NrZXRLZXkpOwotICAgICAgICByZXF1
ZXN0LmFkZEhlYWRlckZpZWxkKCJTZWMtV2ViU29ja2V0LVZlcnNpb24iLCAiMTMiKTsKLSAgICAg
ICAgY29uc3QgU3RyaW5nIGV4dGVuc2lvblZhbHVlID0gbV9leHRlbnNpb25EaXNwYXRjaGVyLmNy
ZWF0ZUhlYWRlclZhbHVlKCk7Ci0gICAgICAgIGlmIChleHRlbnNpb25WYWx1ZS5sZW5ndGgoKSkK
LSAgICAgICAgICAgIHJlcXVlc3QuYWRkSGVhZGVyRmllbGQoIlNlYy1XZWJTb2NrZXQtRXh0ZW5z
aW9ucyIsIGV4dGVuc2lvblZhbHVlKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gcmVxdWVzdDsKLX0K
LQotdm9pZCBXZWJTb2NrZXRIYW5kc2hha2U6OnJlc2V0KCkKLXsKLSAgICBtX21vZGUgPSBJbmNv
bXBsZXRlOwotICAgIG1fZXh0ZW5zaW9uRGlzcGF0Y2hlci5yZXNldCgpOwotfQotCi12b2lkIFdl
YlNvY2tldEhhbmRzaGFrZTo6Y2xlYXJTY3JpcHRFeGVjdXRpb25Db250ZXh0KCkKLXsKLSAgICBt
X2NvbnRleHQgPSAwOwotfQotCi1pbnQgV2ViU29ja2V0SGFuZHNoYWtlOjpyZWFkU2VydmVySGFu
ZHNoYWtlKGNvbnN0IGNoYXIqIGhlYWRlciwgc2l6ZV90IGxlbikKLXsKLSAgICBtX21vZGUgPSBJ
bmNvbXBsZXRlOwotICAgIGludCBzdGF0dXNDb2RlOwotICAgIFN0cmluZyBzdGF0dXNUZXh0Owot
ICAgIGludCBsaW5lTGVuZ3RoID0gcmVhZFN0YXR1c0xpbmUoaGVhZGVyLCBsZW4sIHN0YXR1c0Nv
ZGUsIHN0YXR1c1RleHQpOwotICAgIGlmIChsaW5lTGVuZ3RoID09IC0xKQotICAgICAgICByZXR1
cm4gLTE7Ci0gICAgaWYgKHN0YXR1c0NvZGUgPT0gLTEpIHsKLSAgICAgICAgbV9tb2RlID0gRmFp
bGVkOyAvLyBtX2ZhaWx1cmVSZWFzb24gaXMgc2V0IGluc2lkZSByZWFkU3RhdHVzTGluZSgpLgot
ICAgICAgICByZXR1cm4gbGVuOwotICAgIH0KLSAgICBMT0coTmV0d29yaywgInJlc3BvbnNlIGNv
ZGU6ICVkIiwgc3RhdHVzQ29kZSk7Ci0gICAgbV9yZXNwb25zZS5zZXRTdGF0dXNDb2RlKHN0YXR1
c0NvZGUpOwotICAgIG1fcmVzcG9uc2Uuc2V0U3RhdHVzVGV4dChzdGF0dXNUZXh0KTsKLSAgICBp
ZiAoc3RhdHVzQ29kZSAhPSAxMDEpIHsKLSAgICAgICAgbV9tb2RlID0gRmFpbGVkOwotICAgICAg
ICBtX2ZhaWx1cmVSZWFzb24gPSAiVW5leHBlY3RlZCByZXNwb25zZSBjb2RlOiAiICsgU3RyaW5n
OjpudW1iZXIoc3RhdHVzQ29kZSk7Ci0gICAgICAgIHJldHVybiBsZW47Ci0gICAgfQotICAgIG1f
bW9kZSA9IE5vcm1hbDsKLSAgICBpZiAoIXN0cm5zdHIoaGVhZGVyLCAiXHJcblxyXG4iLCBsZW4p
KSB7Ci0gICAgICAgIC8vIEp1c3QgaGFzbid0IGJlZW4gcmVjZWl2ZWQgZnVsbHkgeWV0LgotICAg
ICAgICBtX21vZGUgPSBJbmNvbXBsZXRlOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotICAg
IGNvbnN0IGNoYXIqIHAgPSByZWFkSFRUUEhlYWRlcnMoaGVhZGVyICsgbGluZUxlbmd0aCwgaGVh
ZGVyICsgbGVuKTsKLSAgICBpZiAoIXApIHsKLSAgICAgICAgTE9HKE5ldHdvcmssICJyZWFkSFRU
UEhlYWRlcnMgZmFpbGVkIik7Ci0gICAgICAgIG1fbW9kZSA9IEZhaWxlZDsgLy8gbV9mYWlsdXJl
UmVhc29uIGlzIHNldCBpbnNpZGUgcmVhZEhUVFBIZWFkZXJzKCkuCi0gICAgICAgIHJldHVybiBs
ZW47Ci0gICAgfQotICAgIGlmICghY2hlY2tSZXNwb25zZUhlYWRlcnMoKSkgewotICAgICAgICBM
T0coTmV0d29yaywgImhlYWRlciBwcm9jZXNzIGZhaWxlZCIpOwotICAgICAgICBtX21vZGUgPSBG
YWlsZWQ7Ci0gICAgICAgIHJldHVybiBwIC0gaGVhZGVyOwotICAgIH0KLQotICAgIGlmICghbV91
c2VIaXhpZTc2UHJvdG9jb2wpIHsgLy8gSHliaS0xMCBoYW5kc2hha2UgaXMgY29tcGxldGUgYXQg
dGhpcyBwb2ludC4KLSAgICAgICAgbV9tb2RlID0gQ29ubmVjdGVkOwotICAgICAgICByZXR1cm4g
cCAtIGhlYWRlcjsKLSAgICB9Ci0KLSAgICAvLyBJbiBoaXhpZS03NiBwcm90b2NvbCwgc2VydmVy
J3MgaGFuZHNoYWtlIGNvbnRhaW5zIHNpeHRlZW4tYnl0ZSBkYXRhIChjYWxsZWQgImNoYWxsZW5n
ZSByZXNwb25zZSIpCi0gICAgLy8gYWZ0ZXIgdGhlIGhlYWRlciBmaWVsZHMuCi0gICAgaWYgKGxl
biA8IHN0YXRpY19jYXN0PHNpemVfdD4ocCAtIGhlYWRlciArIHNpemVvZihtX2hpeGllNzZFeHBl
Y3RlZENoYWxsZW5nZVJlc3BvbnNlKSkpIHsKLSAgICAgICAgLy8gSnVzdCBoYXNuJ3QgYmVlbiBy
ZWNlaXZlZCAvZXhwZWN0ZWQvIHlldC4KLSAgICAgICAgbV9tb2RlID0gSW5jb21wbGV0ZTsKLSAg
ICAgICAgcmV0dXJuIC0xOwotICAgIH0KLQotICAgIG1fcmVzcG9uc2Uuc2V0Q2hhbGxlbmdlUmVz
cG9uc2Uoc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KHN0YXRpY19jYXN0PGNvbnN0
IHZvaWQqPihwKSkpOwotICAgIGlmIChtZW1jbXAocCwgbV9oaXhpZTc2RXhwZWN0ZWRDaGFsbGVu
Z2VSZXNwb25zZSwgc2l6ZW9mKG1faGl4aWU3NkV4cGVjdGVkQ2hhbGxlbmdlUmVzcG9uc2UpKSkg
ewotICAgICAgICBtX21vZGUgPSBGYWlsZWQ7Ci0gICAgICAgIHJldHVybiAocCAtIGhlYWRlcikg
KyBzaXplb2YobV9oaXhpZTc2RXhwZWN0ZWRDaGFsbGVuZ2VSZXNwb25zZSk7Ci0gICAgfQotICAg
IG1fbW9kZSA9IENvbm5lY3RlZDsKLSAgICByZXR1cm4gKHAgLSBoZWFkZXIpICsgc2l6ZW9mKG1f
aGl4aWU3NkV4cGVjdGVkQ2hhbGxlbmdlUmVzcG9uc2UpOwotfQotCi1XZWJTb2NrZXRIYW5kc2hh
a2U6Ok1vZGUgV2ViU29ja2V0SGFuZHNoYWtlOjptb2RlKCkgY29uc3QKLXsKLSAgICByZXR1cm4g
bV9tb2RlOwotfQotCi1TdHJpbmcgV2ViU29ja2V0SGFuZHNoYWtlOjpmYWlsdXJlUmVhc29uKCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gbV9mYWlsdXJlUmVhc29uOwotfQotCi1TdHJpbmcgV2ViU29j
a2V0SGFuZHNoYWtlOjpzZXJ2ZXJXZWJTb2NrZXRPcmlnaW4oKSBjb25zdAotewotICAgIHJldHVy
biBtX3Jlc3BvbnNlLmhlYWRlckZpZWxkcygpLmdldCgic2VjLXdlYnNvY2tldC1vcmlnaW4iKTsK
LX0KLQotU3RyaW5nIFdlYlNvY2tldEhhbmRzaGFrZTo6c2VydmVyV2ViU29ja2V0TG9jYXRpb24o
KSBjb25zdAotewotICAgIHJldHVybiBtX3Jlc3BvbnNlLmhlYWRlckZpZWxkcygpLmdldCgic2Vj
LXdlYnNvY2tldC1sb2NhdGlvbiIpOwotfQotCi1TdHJpbmcgV2ViU29ja2V0SGFuZHNoYWtlOjpz
ZXJ2ZXJXZWJTb2NrZXRQcm90b2NvbCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fcmVzcG9uc2Uu
aGVhZGVyRmllbGRzKCkuZ2V0KCJzZWMtd2Vic29ja2V0LXByb3RvY29sIik7Ci19Ci0KLVN0cmlu
ZyBXZWJTb2NrZXRIYW5kc2hha2U6OnNlcnZlclNldENvb2tpZSgpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIG1fcmVzcG9uc2UuaGVhZGVyRmllbGRzKCkuZ2V0KCJzZXQtY29va2llIik7Ci19Ci0KLVN0
cmluZyBXZWJTb2NrZXRIYW5kc2hha2U6OnNlcnZlclNldENvb2tpZTIoKSBjb25zdAotewotICAg
IHJldHVybiBtX3Jlc3BvbnNlLmhlYWRlckZpZWxkcygpLmdldCgic2V0LWNvb2tpZTIiKTsKLX0K
LQotU3RyaW5nIFdlYlNvY2tldEhhbmRzaGFrZTo6c2VydmVyVXBncmFkZSgpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuIG1fcmVzcG9uc2UuaGVhZGVyRmllbGRzKCkuZ2V0KCJ1cGdyYWRlIik7Ci19Ci0K
LVN0cmluZyBXZWJTb2NrZXRIYW5kc2hha2U6OnNlcnZlckNvbm5lY3Rpb24oKSBjb25zdAotewot
ICAgIHJldHVybiBtX3Jlc3BvbnNlLmhlYWRlckZpZWxkcygpLmdldCgiY29ubmVjdGlvbiIpOwot
fQotCi1TdHJpbmcgV2ViU29ja2V0SGFuZHNoYWtlOjpzZXJ2ZXJXZWJTb2NrZXRBY2NlcHQoKSBj
b25zdAotewotICAgIHJldHVybiBtX3Jlc3BvbnNlLmhlYWRlckZpZWxkcygpLmdldCgic2VjLXdl
YnNvY2tldC1hY2NlcHQiKTsKLX0KLQotU3RyaW5nIFdlYlNvY2tldEhhbmRzaGFrZTo6YWNjZXB0
ZWRFeHRlbnNpb25zKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9leHRlbnNpb25EaXNwYXRjaGVy
LmFjY2VwdGVkRXh0ZW5zaW9ucygpOwotfQotCi1jb25zdCBXZWJTb2NrZXRIYW5kc2hha2VSZXNw
b25zZSYgV2ViU29ja2V0SGFuZHNoYWtlOjpzZXJ2ZXJIYW5kc2hha2VSZXNwb25zZSgpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIG1fcmVzcG9uc2U7Ci19Ci0KLXZvaWQgV2ViU29ja2V0SGFuZHNoYWtl
OjphZGRFeHRlbnNpb25Qcm9jZXNzb3IoUGFzc093blB0cjxXZWJTb2NrZXRFeHRlbnNpb25Qcm9j
ZXNzb3I+IHByb2Nlc3NvcikKLXsKLSAgICBtX2V4dGVuc2lvbkRpc3BhdGNoZXIuYWRkUHJvY2Vz
c29yKHByb2Nlc3Nvcik7Ci19Ci0KLUtVUkwgV2ViU29ja2V0SGFuZHNoYWtlOjpodHRwVVJMRm9y
QXV0aGVudGljYXRpb25BbmRDb29raWVzKCkgY29uc3QKLXsKLSAgICBLVVJMIHVybCA9IG1fdXJs
LmNvcHkoKTsKLSAgICBib29sIGNvdWxkU2V0UHJvdG9jb2wgPSB1cmwuc2V0UHJvdG9jb2wobV9z
ZWN1cmUgPyAiaHR0cHMiIDogImh0dHAiKTsKLSAgICBBU1NFUlRfVU5VU0VEKGNvdWxkU2V0UHJv
dG9jb2wsIGNvdWxkU2V0UHJvdG9jb2wpOwotICAgIHJldHVybiB1cmw7Ci19Ci0KLS8vIFJldHVy
bnMgdGhlIGhlYWRlciBsZW5ndGggKGluY2x1ZGluZyAiXHJcbiIpLCBvciAtMSBpZiB3ZSBoYXZl
IG5vdCByZWNlaXZlZCBlbm91Z2ggZGF0YSB5ZXQuCi0vLyBJZiB0aGUgbGluZSBpcyBtYWxmb3Jt
ZWQgb3IgdGhlIHN0YXR1cyBjb2RlIGlzIG5vdCBhIDMtZGlnaXQgbnVtYmVyLAotLy8gc3RhdHVz
Q29kZSBhbmQgc3RhdHVzVGV4dCB3aWxsIGJlIHNldCB0byAtMSBhbmQgYSBudWxsIHN0cmluZywg
cmVzcGVjdGl2ZWx5LgotaW50IFdlYlNvY2tldEhhbmRzaGFrZTo6cmVhZFN0YXR1c0xpbmUoY29u
c3QgY2hhciogaGVhZGVyLCBzaXplX3QgaGVhZGVyTGVuZ3RoLCBpbnQmIHN0YXR1c0NvZGUsIFN0
cmluZyYgc3RhdHVzVGV4dCkKLXsKLSAgICAvLyBBcmJpdHJhcnkgc2l6ZSBsaW1pdCB0byBwcmV2
ZW50IHRoZSBzZXJ2ZXIgZnJvbSBzZW5kaW5nIGFuIHVuYm91bmRlZAotICAgIC8vIGFtb3VudCBv
ZiBkYXRhIHdpdGggbm8gbmV3bGluZXMgYW5kIGZvcmNpbmcgdXMgdG8gYnVmZmVyIGl0IGFsbC4K
LSAgICBzdGF0aWMgY29uc3QgaW50IG1heGltdW1MZW5ndGggPSAxMDI0OwotCi0gICAgc3RhdHVz
Q29kZSA9IC0xOwotICAgIHN0YXR1c1RleHQgPSBTdHJpbmcoKTsKLQotICAgIGNvbnN0IGNoYXIq
IHNwYWNlMSA9IDA7Ci0gICAgY29uc3QgY2hhciogc3BhY2UyID0gMDsKLSAgICBjb25zdCBjaGFy
KiBwOwotICAgIHNpemVfdCBjb25zdW1lZExlbmd0aDsKLQotICAgIGZvciAocCA9IGhlYWRlciwg
Y29uc3VtZWRMZW5ndGggPSAwOyBjb25zdW1lZExlbmd0aCA8IGhlYWRlckxlbmd0aDsgcCsrLCBj
b25zdW1lZExlbmd0aCsrKSB7Ci0gICAgICAgIGlmICgqcCA9PSAnICcpIHsKLSAgICAgICAgICAg
IGlmICghc3BhY2UxKQotICAgICAgICAgICAgICAgIHNwYWNlMSA9IHA7Ci0gICAgICAgICAgICBl
bHNlIGlmICghc3BhY2UyKQotICAgICAgICAgICAgICAgIHNwYWNlMiA9IHA7Ci0gICAgICAgIH0g
ZWxzZSBpZiAoKnAgPT0gJ1wwJykgewotICAgICAgICAgICAgLy8gVGhlIGNhbGxlciBpc24ndCBw
cmVwYXJlZCB0byBkZWFsIHdpdGggbnVsbCBieXRlcyBpbiBzdGF0dXMKLSAgICAgICAgICAgIC8v
IGxpbmUuIFdlYlNvY2tldHMgc3BlY2lmaWNhdGlvbiBkb2Vzbid0IHByb2hpYml0IHRoaXMsIGJ1
dCBIVFRQCi0gICAgICAgICAgICAvLyBkb2VzLCBzbyB3ZSdsbCBqdXN0IHRyZWF0IHRoaXMgYXMg
YW4gZXJyb3IuCi0gICAgICAgICAgICBtX2ZhaWx1cmVSZWFzb24gPSAiU3RhdHVzIGxpbmUgY29u
dGFpbnMgZW1iZWRkZWQgbnVsbCI7Ci0gICAgICAgICAgICByZXR1cm4gcCArIDEgLSBoZWFkZXI7
Ci0gICAgICAgIH0gZWxzZSBpZiAoKnAgPT0gJ1xuJykKLSAgICAgICAgICAgIGJyZWFrOwotICAg
IH0KLSAgICBpZiAoY29uc3VtZWRMZW5ndGggPT0gaGVhZGVyTGVuZ3RoKQotICAgICAgICByZXR1
cm4gLTE7IC8vIFdlIGhhdmUgbm90IHJlY2VpdmVkICdcbicgeWV0LgotCi0gICAgY29uc3QgY2hh
ciogZW5kID0gcCArIDE7Ci0gICAgaW50IGxpbmVMZW5ndGggPSBlbmQgLSBoZWFkZXI7Ci0gICAg
aWYgKGxpbmVMZW5ndGggPiBtYXhpbXVtTGVuZ3RoKSB7Ci0gICAgICAgIG1fZmFpbHVyZVJlYXNv
biA9ICJTdGF0dXMgbGluZSBpcyB0b28gbG9uZyI7Ci0gICAgICAgIHJldHVybiBtYXhpbXVtTGVu
Z3RoOwotICAgIH0KLQotICAgIC8vIFRoZSBsaW5lIG11c3QgZW5kIHdpdGggIlxyXG4iLgotICAg
IGlmIChsaW5lTGVuZ3RoIDwgMiB8fCAqKGVuZCAtIDIpICE9ICdccicpIHsKLSAgICAgICAgbV9m
YWlsdXJlUmVhc29uID0gIlN0YXR1cyBsaW5lIGRvZXMgbm90IGVuZCB3aXRoIENSTEYiOwotICAg
ICAgICByZXR1cm4gbGluZUxlbmd0aDsKLSAgICB9Ci0KLSAgICBpZiAoIXNwYWNlMSB8fCAhc3Bh
Y2UyKSB7Ci0gICAgICAgIG1fZmFpbHVyZVJlYXNvbiA9ICJObyByZXNwb25zZSBjb2RlIGZvdW5k
OiAiICsgdHJpbUNvbnNvbGVNZXNzYWdlKGhlYWRlciwgbGluZUxlbmd0aCAtIDIpOwotICAgICAg
ICByZXR1cm4gbGluZUxlbmd0aDsKLSAgICB9Ci0KLSAgICBTdHJpbmcgc3RhdHVzQ29kZVN0cmlu
ZyhzcGFjZTEgKyAxLCBzcGFjZTIgLSBzcGFjZTEgLSAxKTsKLSAgICBpZiAoc3RhdHVzQ29kZVN0
cmluZy5sZW5ndGgoKSAhPSAzKSAvLyBTdGF0dXMgY29kZSBtdXN0IGNvbnNpc3Qgb2YgdGhyZWUg
ZGlnaXRzLgotICAgICAgICByZXR1cm4gbGluZUxlbmd0aDsKLSAgICBmb3IgKGludCBpID0gMDsg
aSA8IDM7ICsraSkKLSAgICAgICAgaWYgKHN0YXR1c0NvZGVTdHJpbmdbaV0gPCAnMCcgfHwgc3Rh
dHVzQ29kZVN0cmluZ1tpXSA+ICc5JykgewotICAgICAgICAgICAgbV9mYWlsdXJlUmVhc29uID0g
IkludmFsaWQgc3RhdHVzIGNvZGU6ICIgKyBzdGF0dXNDb2RlU3RyaW5nOwotICAgICAgICAgICAg
cmV0dXJuIGxpbmVMZW5ndGg7Ci0gICAgICAgIH0KLQotICAgIGJvb2wgb2sgPSBmYWxzZTsKLSAg
ICBzdGF0dXNDb2RlID0gc3RhdHVzQ29kZVN0cmluZy50b0ludCgmb2spOwotICAgIEFTU0VSVChv
ayk7Ci0KLSAgICBzdGF0dXNUZXh0ID0gU3RyaW5nKHNwYWNlMiArIDEsIGVuZCAtIHNwYWNlMiAt
IDMpOyAvLyBFeGNsdWRlICJcclxuIi4KLSAgICByZXR1cm4gbGluZUxlbmd0aDsKLX0KLQotY29u
c3QgY2hhciogV2ViU29ja2V0SGFuZHNoYWtlOjpyZWFkSFRUUEhlYWRlcnMoY29uc3QgY2hhciog
c3RhcnQsIGNvbnN0IGNoYXIqIGVuZCkKLXsKLSAgICBtX3Jlc3BvbnNlLmNsZWFySGVhZGVyRmll
bGRzKCk7Ci0KLSAgICBWZWN0b3I8Y2hhcj4gbmFtZTsKLSAgICBWZWN0b3I8Y2hhcj4gdmFsdWU7
Ci0gICAgZm9yIChjb25zdCBjaGFyKiBwID0gc3RhcnQ7IHAgPCBlbmQ7IHArKykgewotICAgICAg
ICBuYW1lLmNsZWFyKCk7Ci0gICAgICAgIHZhbHVlLmNsZWFyKCk7Ci0KLSAgICAgICAgZm9yICg7
IHAgPCBlbmQ7IHArKykgewotICAgICAgICAgICAgc3dpdGNoICgqcCkgewotICAgICAgICAgICAg
Y2FzZSAnXHInOgotICAgICAgICAgICAgICAgIGlmIChuYW1lLmlzRW1wdHkoKSkgewotICAgICAg
ICAgICAgICAgICAgICBpZiAocCArIDEgPCBlbmQgJiYgKihwICsgMSkgPT0gJ1xuJykKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBwICsgMjsKLSAgICAgICAgICAgICAgICAgICAgbV9m
YWlsdXJlUmVhc29uID0gIkNSIGRvZXNuJ3QgZm9sbG93IExGIGF0ICIgKyB0cmltQ29uc29sZU1l
c3NhZ2UocCwgZW5kIC0gcCk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBtX2ZhaWx1cmVSZWFzb24gPSAiVW5leHBlY3Rl
ZCBDUiBpbiBuYW1lIGF0ICIgKyB0cmltQ29uc29sZU1lc3NhZ2UobmFtZS5kYXRhKCksIG5hbWUu
c2l6ZSgpKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgICAgIGNhc2UgJ1xu
JzoKLSAgICAgICAgICAgICAgICBtX2ZhaWx1cmVSZWFzb24gPSAiVW5leHBlY3RlZCBMRiBpbiBu
YW1lIGF0ICIgKyB0cmltQ29uc29sZU1lc3NhZ2UobmFtZS5kYXRhKCksIG5hbWUuc2l6ZSgpKTsK
LSAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgICAgIGNhc2UgJzonOgotICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBu
YW1lLmFwcGVuZCgqcCk7Ci0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICBpZiAoKnAgPT0gJzonKSB7Ci0gICAgICAgICAgICAgICAgKytwOwotICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAg
Zm9yICg7IHAgPCBlbmQgJiYgKnAgPT0gMHgyMDsgcCsrKSB7IH0KLQotICAgICAgICBmb3IgKDsg
cCA8IGVuZDsgcCsrKSB7Ci0gICAgICAgICAgICBzd2l0Y2ggKCpwKSB7Ci0gICAgICAgICAgICBj
YXNlICdccic6Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlICdcbic6
Ci0gICAgICAgICAgICAgICAgbV9mYWlsdXJlUmVhc29uID0gIlVuZXhwZWN0ZWQgTEYgaW4gdmFs
dWUgYXQgIiArIHRyaW1Db25zb2xlTWVzc2FnZSh2YWx1ZS5kYXRhKCksIHZhbHVlLnNpemUoKSk7
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAg
ICAgICAgICAgIHZhbHVlLmFwcGVuZCgqcCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBp
ZiAoKnAgPT0gJ1xyJykgewotICAgICAgICAgICAgICAgICsrcDsKLSAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBpZiAocCA+PSBlbmQgfHwg
KnAgIT0gJ1xuJykgewotICAgICAgICAgICAgbV9mYWlsdXJlUmVhc29uID0gIkNSIGRvZXNuJ3Qg
Zm9sbG93IExGIGFmdGVyIHZhbHVlIGF0ICIgKyB0cmltQ29uc29sZU1lc3NhZ2UocCwgZW5kIC0g
cCk7Ci0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgfQotICAgICAgICBBdG9taWNTdHJp
bmcgbmFtZVN0ciA9IEF0b21pY1N0cmluZzo6ZnJvbVVURjgobmFtZS5kYXRhKCksIG5hbWUuc2l6
ZSgpKTsKLSAgICAgICAgU3RyaW5nIHZhbHVlU3RyID0gU3RyaW5nOjpmcm9tVVRGOCh2YWx1ZS5k
YXRhKCksIHZhbHVlLnNpemUoKSk7Ci0gICAgICAgIGlmIChuYW1lU3RyLmlzTnVsbCgpKSB7Ci0g
ICAgICAgICAgICBtX2ZhaWx1cmVSZWFzb24gPSAiSW52YWxpZCBVVEYtOCBzZXF1ZW5jZSBpbiBo
ZWFkZXIgbmFtZSI7Ci0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgfQotICAgICAgICBp
ZiAodmFsdWVTdHIuaXNOdWxsKCkpIHsKLSAgICAgICAgICAgIG1fZmFpbHVyZVJlYXNvbiA9ICJJ
bnZhbGlkIFVURi04IHNlcXVlbmNlIGluIGhlYWRlciB2YWx1ZSI7Ci0gICAgICAgICAgICByZXR1
cm4gMDsKLSAgICAgICAgfQotICAgICAgICBMT0coTmV0d29yaywgIm5hbWU9JXMgdmFsdWU9JXMi
LCBuYW1lU3RyLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIHZhbHVlU3RyLnV0ZjgoKS5kYXRhKCkp
OwotICAgICAgICAvLyBTZWMtV2ViU29ja2V0LUV4dGVuc2lvbnMgbWF5IGJlIHNwbGl0LiBXZSBw
YXJzZSBhbmQgY2hlY2sgdGhlCi0gICAgICAgIC8vIGhlYWRlciB2YWx1ZSBldmVyeSB0aW1lIHRo
ZSBoZWFkZXIgYXBwZWFycy4KLSAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKCJzZWMtd2Vi
c29ja2V0LWV4dGVuc2lvbnMiLCBuYW1lU3RyKSkgewotICAgICAgICAgICAgaWYgKCFtX2V4dGVu
c2lvbkRpc3BhdGNoZXIucHJvY2Vzc0hlYWRlclZhbHVlKHZhbHVlU3RyKSkgewotICAgICAgICAg
ICAgICAgIG1fZmFpbHVyZVJlYXNvbiA9IG1fZXh0ZW5zaW9uRGlzcGF0Y2hlci5mYWlsdXJlUmVh
c29uKCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IH0gZWxzZQotICAgICAgICAgICAgbV9yZXNwb25zZS5hZGRIZWFkZXJGaWVsZChuYW1lU3RyLCB2
YWx1ZVN0cik7Ci0gICAgfQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiAw
OwotfQotCi1ib29sIFdlYlNvY2tldEhhbmRzaGFrZTo6Y2hlY2tSZXNwb25zZUhlYWRlcnMoKQot
ewotICAgIGNvbnN0IFN0cmluZyYgc2VydmVyV2ViU29ja2V0TG9jYXRpb24gPSB0aGlzLT5zZXJ2
ZXJXZWJTb2NrZXRMb2NhdGlvbigpOwotICAgIGNvbnN0IFN0cmluZyYgc2VydmVyV2ViU29ja2V0
T3JpZ2luID0gdGhpcy0+c2VydmVyV2ViU29ja2V0T3JpZ2luKCk7Ci0gICAgY29uc3QgU3RyaW5n
JiBzZXJ2ZXJXZWJTb2NrZXRQcm90b2NvbCA9IHRoaXMtPnNlcnZlcldlYlNvY2tldFByb3RvY29s
KCk7Ci0gICAgY29uc3QgU3RyaW5nJiBzZXJ2ZXJVcGdyYWRlID0gdGhpcy0+c2VydmVyVXBncmFk
ZSgpOwotICAgIGNvbnN0IFN0cmluZyYgc2VydmVyQ29ubmVjdGlvbiA9IHRoaXMtPnNlcnZlckNv
bm5lY3Rpb24oKTsKLSAgICBjb25zdCBTdHJpbmcmIHNlcnZlcldlYlNvY2tldEFjY2VwdCA9IHRo
aXMtPnNlcnZlcldlYlNvY2tldEFjY2VwdCgpOwotCi0gICAgaWYgKHNlcnZlclVwZ3JhZGUuaXNO
dWxsKCkpIHsKLSAgICAgICAgbV9mYWlsdXJlUmVhc29uID0gIkVycm9yIGR1cmluZyBXZWJTb2Nr
ZXQgaGFuZHNoYWtlOiAnVXBncmFkZScgaGVhZGVyIGlzIG1pc3NpbmciOwotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgfQotICAgIGlmIChzZXJ2ZXJDb25uZWN0aW9uLmlzTnVsbCgpKSB7Ci0g
ICAgICAgIG1fZmFpbHVyZVJlYXNvbiA9ICJFcnJvciBkdXJpbmcgV2ViU29ja2V0IGhhbmRzaGFr
ZTogJ0Nvbm5lY3Rpb24nIGhlYWRlciBpcyBtaXNzaW5nIjsKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIH0KLSAgICBpZiAobV91c2VIaXhpZTc2UHJvdG9jb2wpIHsKLSAgICAgICAgaWYgKHNl
cnZlcldlYlNvY2tldE9yaWdpbi5pc051bGwoKSkgewotICAgICAgICAgICAgbV9mYWlsdXJlUmVh
c29uID0gIkVycm9yIGR1cmluZyBXZWJTb2NrZXQgaGFuZHNoYWtlOiAnU2VjLVdlYlNvY2tldC1P
cmlnaW4nIGhlYWRlciBpcyBtaXNzaW5nIjsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAgICAgfQotICAgICAgICBpZiAoc2VydmVyV2ViU29ja2V0TG9jYXRpb24uaXNOdWxsKCkpIHsK
LSAgICAgICAgICAgIG1fZmFpbHVyZVJlYXNvbiA9ICJFcnJvciBkdXJpbmcgV2ViU29ja2V0IGhh
bmRzaGFrZTogJ1NlYy1XZWJTb2NrZXQtTG9jYXRpb24nIGhlYWRlciBpcyBtaXNzaW5nIjsKLSAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAg
IGlmIChzZXJ2ZXJXZWJTb2NrZXRBY2NlcHQuaXNOdWxsKCkpIHsKLSAgICAgICAgICAgIG1fZmFp
bHVyZVJlYXNvbiA9ICJFcnJvciBkdXJpbmcgV2ViU29ja2V0IGhhbmRzaGFrZTogJ1NlYy1XZWJT
b2NrZXQtQWNjZXB0JyBoZWFkZXIgaXMgbWlzc2luZyI7Ci0gICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAoIWVxdWFsSWdub3JpbmdDYXNlKHNlcnZl
clVwZ3JhZGUsICJ3ZWJzb2NrZXQiKSkgewotICAgICAgICBtX2ZhaWx1cmVSZWFzb24gPSAiRXJy
b3IgZHVyaW5nIFdlYlNvY2tldCBoYW5kc2hha2U6ICdVcGdyYWRlJyBoZWFkZXIgdmFsdWUgaXMg
bm90ICdXZWJTb2NrZXQnIjsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICBpZiAo
IWVxdWFsSWdub3JpbmdDYXNlKHNlcnZlckNvbm5lY3Rpb24sICJ1cGdyYWRlIikpIHsKLSAgICAg
ICAgbV9mYWlsdXJlUmVhc29uID0gIkVycm9yIGR1cmluZyBXZWJTb2NrZXQgaGFuZHNoYWtlOiAn
Q29ubmVjdGlvbicgaGVhZGVyIHZhbHVlIGlzIG5vdCAnVXBncmFkZSciOwotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgaWYgKG1fdXNlSGl4aWU3NlByb3RvY29sKSB7Ci0gICAg
ICAgIGlmIChjbGllbnRPcmlnaW4oKSAhPSBzZXJ2ZXJXZWJTb2NrZXRPcmlnaW4pIHsKLSAgICAg
ICAgICAgIG1fZmFpbHVyZVJlYXNvbiA9ICJFcnJvciBkdXJpbmcgV2ViU29ja2V0IGhhbmRzaGFr
ZTogb3JpZ2luIG1pc21hdGNoOiAiICsgY2xpZW50T3JpZ2luKCkgKyAiICE9ICIgKyBzZXJ2ZXJX
ZWJTb2NrZXRPcmlnaW47Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAg
ICAgICAgaWYgKGNsaWVudExvY2F0aW9uKCkgIT0gc2VydmVyV2ViU29ja2V0TG9jYXRpb24pIHsK
LSAgICAgICAgICAgIG1fZmFpbHVyZVJlYXNvbiA9ICJFcnJvciBkdXJpbmcgV2ViU29ja2V0IGhh
bmRzaGFrZTogbG9jYXRpb24gbWlzbWF0Y2g6ICIgKyBjbGllbnRMb2NhdGlvbigpICsgIiAhPSAi
ICsgc2VydmVyV2ViU29ja2V0TG9jYXRpb247Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgICAgIH0KLSAgICAgICAgaWYgKCFtX2NsaWVudFByb3RvY29sLmlzRW1wdHkoKSAmJiBtX2Ns
aWVudFByb3RvY29sICE9IHNlcnZlcldlYlNvY2tldFByb3RvY29sKSB7Ci0gICAgICAgICAgICBt
X2ZhaWx1cmVSZWFzb24gPSAiRXJyb3IgZHVyaW5nIFdlYlNvY2tldCBoYW5kc2hha2U6IHByb3Rv
Y29sIG1pc21hdGNoOiAiICsgbV9jbGllbnRQcm90b2NvbCArICIgIT0gIiArIHNlcnZlcldlYlNv
Y2tldFByb3RvY29sOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAg
fSBlbHNlIHsKLSAgICAgICAgaWYgKHNlcnZlcldlYlNvY2tldEFjY2VwdCAhPSBtX2V4cGVjdGVk
QWNjZXB0KSB7Ci0gICAgICAgICAgICBtX2ZhaWx1cmVSZWFzb24gPSAiRXJyb3IgZHVyaW5nIFdl
YlNvY2tldCBoYW5kc2hha2U6IFNlYy1XZWJTb2NrZXQtQWNjZXB0IG1pc21hdGNoIjsKLSAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsK
LX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQl9TT0NL
RVRTKQpJbmRleDogU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2Uu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRz
aGFrZS5oCShyZXZpc2lvbiAxMDg5MjQpCisrKyBTb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dl
YlNvY2tldEhhbmRzaGFrZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDEzMiArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBk
aXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
Ci0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5k
ZWYgV2ViU29ja2V0SGFuZHNoYWtlX2gKLSNkZWZpbmUgV2ViU29ja2V0SGFuZHNoYWtlX2gKLQot
I2lmIEVOQUJMRShXRUJfU09DS0VUUykKLQotI2luY2x1ZGUgIktVUkwuaCIKLSNpbmNsdWRlICJQ
bGF0Zm9ybVN0cmluZy5oIgotI2luY2x1ZGUgIldlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIu
aCIKLSNpbmNsdWRlICJXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNzb3IuaCIKLSNpbmNsdWRlICJX
ZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0LmgiCi0jaW5jbHVkZSAiV2ViU29ja2V0SGFuZHNoYWtl
UmVzcG9uc2UuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLWNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7Ci0KLWNsYXNzIFdlYlNvY2tl
dEhhbmRzaGFrZSB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV2ViU29ja2V0SGFuZHNoYWtl
KTsKLXB1YmxpYzoKLSAgICBlbnVtIE1vZGUgewotICAgICAgICBJbmNvbXBsZXRlLCBOb3JtYWws
IEZhaWxlZCwgQ29ubmVjdGVkCi0gICAgfTsKLSAgICBXZWJTb2NrZXRIYW5kc2hha2UoY29uc3Qg
S1VSTCYsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBi
b29sIHVzZUhpeGllNzZQcm90b2NvbCk7Ci0gICAgfldlYlNvY2tldEhhbmRzaGFrZSgpOwotCi0g
ICAgY29uc3QgS1VSTCYgdXJsKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRVUkwoY29uc3QgS1VSTCYp
OwotICAgIGNvbnN0IFN0cmluZyBob3N0KCkgY29uc3Q7Ci0KLSAgICBjb25zdCBTdHJpbmcmIGNs
aWVudFByb3RvY29sKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRDbGllbnRQcm90b2NvbChjb25zdCBT
dHJpbmcmKTsKLQotICAgIGJvb2wgc2VjdXJlKCkgY29uc3Q7Ci0KLSAgICBTdHJpbmcgY2xpZW50
T3JpZ2luKCkgY29uc3Q7Ci0gICAgU3RyaW5nIGNsaWVudExvY2F0aW9uKCkgY29uc3Q7Ci0KLSAg
ICBDU3RyaW5nIGNsaWVudEhhbmRzaGFrZU1lc3NhZ2UoKSBjb25zdDsKLSAgICBXZWJTb2NrZXRI
YW5kc2hha2VSZXF1ZXN0IGNsaWVudEhhbmRzaGFrZVJlcXVlc3QoKSBjb25zdDsKLQotICAgIHZv
aWQgcmVzZXQoKTsKLSAgICB2b2lkIGNsZWFyU2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotCi0g
ICAgaW50IHJlYWRTZXJ2ZXJIYW5kc2hha2UoY29uc3QgY2hhciogaGVhZGVyLCBzaXplX3QgbGVu
KTsKLSAgICBNb2RlIG1vZGUoKSBjb25zdDsKLSAgICBTdHJpbmcgZmFpbHVyZVJlYXNvbigpIGNv
bnN0OyAvLyBSZXR1cm5zIGEgc3RyaW5nIGluZGljYXRpbmcgdGhlIHJlYXNvbiBvZiBmYWlsdXJl
IGlmIG1vZGUoKSA9PSBGYWlsZWQuCi0KLSAgICBTdHJpbmcgc2VydmVyV2ViU29ja2V0T3JpZ2lu
KCkgY29uc3Q7IC8vIE9ubHkgZm9yIGhpeGllLTc2IGhhbmRzaGFrZS4KLSAgICBTdHJpbmcgc2Vy
dmVyV2ViU29ja2V0TG9jYXRpb24oKSBjb25zdDsgLy8gT25seSBmb3IgaGl4aWUtNzYgaGFuZHNo
YWtlLgotICAgIFN0cmluZyBzZXJ2ZXJXZWJTb2NrZXRQcm90b2NvbCgpIGNvbnN0OwotICAgIFN0
cmluZyBzZXJ2ZXJTZXRDb29raWUoKSBjb25zdDsKLSAgICBTdHJpbmcgc2VydmVyU2V0Q29va2ll
MigpIGNvbnN0OwotICAgIFN0cmluZyBzZXJ2ZXJVcGdyYWRlKCkgY29uc3Q7Ci0gICAgU3RyaW5n
IHNlcnZlckNvbm5lY3Rpb24oKSBjb25zdDsKLSAgICBTdHJpbmcgc2VydmVyV2ViU29ja2V0QWNj
ZXB0KCkgY29uc3Q7IC8vIE9ubHkgZm9yIGh5YmktMTAgaGFuZHNoYWtlLgotICAgIFN0cmluZyBh
Y2NlcHRlZEV4dGVuc2lvbnMoKSBjb25zdDsKLQotICAgIGNvbnN0IFdlYlNvY2tldEhhbmRzaGFr
ZVJlc3BvbnNlJiBzZXJ2ZXJIYW5kc2hha2VSZXNwb25zZSgpIGNvbnN0OwotCi0gICAgdm9pZCBh
ZGRFeHRlbnNpb25Qcm9jZXNzb3IoUGFzc093blB0cjxXZWJTb2NrZXRFeHRlbnNpb25Qcm9jZXNz
b3I+KTsKLQotcHJpdmF0ZToKLSAgICBLVVJMIGh0dHBVUkxGb3JBdXRoZW50aWNhdGlvbkFuZENv
b2tpZXMoKSBjb25zdDsKLQotICAgIGludCByZWFkU3RhdHVzTGluZShjb25zdCBjaGFyKiBoZWFk
ZXIsIHNpemVfdCBoZWFkZXJMZW5ndGgsIGludCYgc3RhdHVzQ29kZSwgU3RyaW5nJiBzdGF0dXNU
ZXh0KTsKLQotICAgIC8vIFJlYWRzIGFsbCBoZWFkZXJzIGV4Y2VwdCBmb3IgdGhlIHR3byBwcmVk
ZWZpbmVkIG9uZXMuCi0gICAgY29uc3QgY2hhciogcmVhZEhUVFBIZWFkZXJzKGNvbnN0IGNoYXIq
IHN0YXJ0LCBjb25zdCBjaGFyKiBlbmQpOwotICAgIHZvaWQgcHJvY2Vzc0hlYWRlcnMoKTsKLSAg
ICBib29sIGNoZWNrUmVzcG9uc2VIZWFkZXJzKCk7Ci0KLSAgICBLVVJMIG1fdXJsOwotICAgIFN0
cmluZyBtX2NsaWVudFByb3RvY29sOwotICAgIGJvb2wgbV9zZWN1cmU7Ci0gICAgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogbV9jb250ZXh0OwotICAgIGJvb2wgbV91c2VIaXhpZTc2UHJvdG9jb2w7
Ci0KLSAgICBNb2RlIG1fbW9kZTsKLQotICAgIFdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlIG1f
cmVzcG9uc2U7Ci0KLSAgICBTdHJpbmcgbV9mYWlsdXJlUmVhc29uOwotCi0gICAgLy8gRm9yIGhp
eGllLTc2IGhhbmRzaGFrZS4KLSAgICBTdHJpbmcgbV9oaXhpZTc2U2VjV2ViU29ja2V0S2V5MTsK
LSAgICBTdHJpbmcgbV9oaXhpZTc2U2VjV2ViU29ja2V0S2V5MjsKLSAgICB1bnNpZ25lZCBjaGFy
IG1faGl4aWU3NktleTNbOF07Ci0gICAgdW5zaWduZWQgY2hhciBtX2hpeGllNzZFeHBlY3RlZENo
YWxsZW5nZVJlc3BvbnNlWzE2XTsKLQotICAgIC8vIEZvciBoeWJpLTEwIGhhbmRzaGFrZS4KLSAg
ICBTdHJpbmcgbV9zZWNXZWJTb2NrZXRLZXk7Ci0gICAgU3RyaW5nIG1fZXhwZWN0ZWRBY2NlcHQ7
Ci0KLSAgICBXZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyIG1fZXh0ZW5zaW9uRGlzcGF0Y2hl
cjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJf
U09DS0VUUykKLQotI2VuZGlmIC8vIFdlYlNvY2tldEhhbmRzaGFrZV9oCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVz
dC5jcHAJKHJldmlzaW9uIDEwODkyNCkKKysrIFNvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2Vi
U29ja2V0SGFuZHNoYWtlUmVxdWVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsOTUgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0g
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAq
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCi0KLSNpbmNs
dWRlICJXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0LmgiCi0KLSNpbmNsdWRlIDxjc3RyaW5nPgot
Ci11c2luZyBuYW1lc3BhY2Ugc3RkOwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVdlYlNvY2tl
dEhhbmRzaGFrZVJlcXVlc3Q6OktleTM6OktleTMoKQotewotICAgIG1lbXNldCh2YWx1ZSwgMCwg
c2l6ZW9mKHZhbHVlKSk7Ci19Ci0KLXZvaWQgV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdDo6S2V5
Mzo6c2V0KGNvbnN0IHVuc2lnbmVkIGNoYXIga2V5M1s4XSkKLXsKLSAgICBtZW1jcHkodmFsdWUs
IGtleTMsIHNpemVvZih2YWx1ZSkpOwotfQotCi1XZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0OjpX
ZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0KGNvbnN0IFN0cmluZyYgcmVxdWVzdE1ldGhvZCwgY29u
c3QgS1VSTCYgdXJsKQotICAgIDogbV91cmwodXJsKQotICAgICwgbV9yZXF1ZXN0TWV0aG9kKHJl
cXVlc3RNZXRob2QpCi17Ci19Ci0KLVdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3Q6On5XZWJTb2Nr
ZXRIYW5kc2hha2VSZXF1ZXN0KCkKLXsKLX0KLQotU3RyaW5nIFdlYlNvY2tldEhhbmRzaGFrZVJl
cXVlc3Q6OnJlcXVlc3RNZXRob2QoKSBjb25zdAotewotICAgIHJldHVybiBtX3JlcXVlc3RNZXRo
b2Q7Ci19Ci0KLUtVUkwgV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdDo6dXJsKCkgY29uc3QKLXsK
LSAgICByZXR1cm4gbV91cmw7Ci19Ci0KLXZvaWQgV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdDo6
YWRkSGVhZGVyRmllbGQoY29uc3QgY2hhciogbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKLXsK
LSAgICBtX2hlYWRlckZpZWxkcy5hZGQobmFtZSwgdmFsdWUpOwotfQotCi1jb25zdCBIVFRQSGVh
ZGVyTWFwJiBXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0OjpoZWFkZXJGaWVsZHMoKSBjb25zdAot
ewotICAgIHJldHVybiBtX2hlYWRlckZpZWxkczsKLX0KLQotV2ViU29ja2V0SGFuZHNoYWtlUmVx
dWVzdDo6S2V5MyBXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0OjprZXkzKCkgY29uc3QKLXsKLSAg
ICByZXR1cm4gbV9rZXkzOwotfQotCi12b2lkIFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3Q6OnNl
dEtleTMoY29uc3QgdW5zaWduZWQgY2hhciBrZXkzWzhdKQotewotICAgIG1fa2V5My5zZXQoa2V5
Myk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJf
U09DS0VUUykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNo
YWtlUmVxdWVzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2Vi
U29ja2V0SGFuZHNoYWtlUmVxdWVzdC5oCShyZXZpc2lvbiAxMDg5MjQpCisrKyBTb3VyY2UvV2Vi
Q29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QuaAkod29ya2luZyBjb3B5
KQpAQCAtMSw3MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0g
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdF9oCi0j
ZGVmaW5lIFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3RfaAotCi0jaWYgRU5BQkxFKFdFQl9TT0NL
RVRTKQotCi0jaW5jbHVkZSAiSFRUUEhlYWRlck1hcC5oIgotI2luY2x1ZGUgIktVUkwuaCIKLSNp
bmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNz
IFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QgewotcHVibGljOgotICAgIFdlYlNvY2tldEhhbmRz
aGFrZVJlcXVlc3QoY29uc3QgU3RyaW5nJiByZXF1ZXN0TWV0aG9kLCBjb25zdCBLVVJMJik7Ci0g
ICAgfldlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QoKTsKLQotICAgIFN0cmluZyByZXF1ZXN0TWV0
aG9kKCkgY29uc3Q7Ci0gICAgS1VSTCB1cmwoKSBjb25zdDsKLQotICAgIGNvbnN0IEhUVFBIZWFk
ZXJNYXAmIGhlYWRlckZpZWxkcygpIGNvbnN0OwotICAgIHZvaWQgYWRkSGVhZGVyRmllbGQoY29u
c3QgY2hhciogbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7Ci0KLSAgICBzdHJ1Y3QgS2V5MyB7
Ci0gICAgICAgIHVuc2lnbmVkIGNoYXIgdmFsdWVbOF07Ci0KLSAgICAgICAgS2V5MygpOwotICAg
ICAgICB2b2lkIHNldChjb25zdCB1bnNpZ25lZCBjaGFyIGtleTNbOF0pOwotICAgIH07Ci0gICAg
S2V5MyBrZXkzKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRLZXkzKGNvbnN0IHVuc2lnbmVkIGNoYXIg
a2V5M1s4XSk7Ci0KLXByaXZhdGU6Ci0gICAgS1VSTCBtX3VybDsKLSAgICBTdHJpbmcgbV9yZXF1
ZXN0TWV0aG9kOwotICAgIEhUVFBIZWFkZXJNYXAgbV9oZWFkZXJGaWVsZHM7Ci0gICAgS2V5MyBt
X2tleTM7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUo
V0VCX1NPQ0tFVFMpCi0KLSNlbmRpZiAvLyBXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0X2gKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0SGFu
ZHNoYWtlUmVzcG9uc2UuY3BwCShyZXZpc2lvbiAxMDg5MjQpCisrKyBTb3VyY2UvV2ViQ29yZS93
ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMSwxMTAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiAg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
LSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
LSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
Ci0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpZiBFTkFCTEUoV0VCX1NP
Q0tFVFMpCi0KLSNpbmNsdWRlICJXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZS5oIgotCi0jaW5j
bHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcu
aD4KLQotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1XZWJT
b2NrZXRIYW5kc2hha2VSZXNwb25zZTo6Q2hhbGxlbmdlUmVzcG9uc2U6OkNoYWxsZW5nZVJlc3Bv
bnNlKCkKLXsKLSAgICBtZW1zZXQodmFsdWUsIDAsIHNpemVvZih2YWx1ZSkpOwotfQotCi12b2lk
IFdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlOjpDaGFsbGVuZ2VSZXNwb25zZTo6c2V0KGNvbnN0
IHVuc2lnbmVkIGNoYXIgY2hhbGxlbmdlUmVzcG9uc2VbMTZdKQotewotICAgIG1lbWNweSh2YWx1
ZSwgY2hhbGxlbmdlUmVzcG9uc2UsIHNpemVvZih2YWx1ZSkpOwotfQotCi1XZWJTb2NrZXRIYW5k
c2hha2VSZXNwb25zZTo6V2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UoKQotewotfQotCi1XZWJT
b2NrZXRIYW5kc2hha2VSZXNwb25zZTo6fldlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlKCkKLXsK
LX0KLQotaW50IFdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlOjpzdGF0dXNDb2RlKCkgY29uc3QK
LXsKLSAgICByZXR1cm4gbV9zdGF0dXNDb2RlOwotfQotCi12b2lkIFdlYlNvY2tldEhhbmRzaGFr
ZVJlc3BvbnNlOjpzZXRTdGF0dXNDb2RlKGludCBzdGF0dXNDb2RlKQotewotICAgIEFTU0VSVChz
dGF0dXNDb2RlID49IDEwMCAmJiBzdGF0dXNDb2RlIDwgNjAwKTsKLSAgICBtX3N0YXR1c0NvZGUg
PSBzdGF0dXNDb2RlOwotfQotCi1jb25zdCBTdHJpbmcmIFdlYlNvY2tldEhhbmRzaGFrZVJlc3Bv
bnNlOjpzdGF0dXNUZXh0KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zdGF0dXNUZXh0OwotfQot
Ci12b2lkIFdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlOjpzZXRTdGF0dXNUZXh0KGNvbnN0IFN0
cmluZyYgc3RhdHVzVGV4dCkKLXsKLSAgICBtX3N0YXR1c1RleHQgPSBzdGF0dXNUZXh0OwotfQot
Ci1jb25zdCBIVFRQSGVhZGVyTWFwJiBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZTo6aGVhZGVy
RmllbGRzKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9oZWFkZXJGaWVsZHM7Ci19Ci0KLXZvaWQg
V2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2U6OmFkZEhlYWRlckZpZWxkKGNvbnN0IEF0b21pY1N0
cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKLXsKLSAgICBtX2hlYWRlckZpZWxkcy5h
ZGQobmFtZSwgdmFsdWUpOwotfQotCi12b2lkIFdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlOjpj
bGVhckhlYWRlckZpZWxkcygpCi17Ci0gICAgbV9oZWFkZXJGaWVsZHMuY2xlYXIoKTsKLX0KLQot
Y29uc3QgV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2U6OkNoYWxsZW5nZVJlc3BvbnNlJiBXZWJT
b2NrZXRIYW5kc2hha2VSZXNwb25zZTo6Y2hhbGxlbmdlUmVzcG9uc2UoKSBjb25zdAotewotICAg
IHJldHVybiBtX2NoYWxsZW5nZVJlc3BvbnNlOwotfQotCi12b2lkIFdlYlNvY2tldEhhbmRzaGFr
ZVJlc3BvbnNlOjpzZXRDaGFsbGVuZ2VSZXNwb25zZShjb25zdCB1bnNpZ25lZCBjaGFyIGNoYWxs
ZW5nZVJlc3BvbnNlWzE2XSkKLXsKLSAgICBtX2NoYWxsZW5nZVJlc3BvbnNlLnNldChjaGFsbGVu
Z2VSZXNwb25zZSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVO
QUJMRShXRUJfU09DS0VUUykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29j
a2V0SGFuZHNoYWtlUmVzcG9uc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93ZWJz
b2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlLmgJKHJldmlzaW9uIDEwODkyNCkKKysr
IFNvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuaAko
d29ya2luZyBjb3B5KQpAQCAtMSw3NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEw
IEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0g
KiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0g
KiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgV2ViU29ja2V0SGFuZHNoYWtl
UmVzcG9uc2VfaAotI2RlZmluZSBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZV9oCi0KLSNpZiBF
TkFCTEUoV0VCX1NPQ0tFVFMpCi0KLSNpbmNsdWRlICJIVFRQSGVhZGVyTWFwLmgiCi0jaW5jbHVk
ZSAiUGxhdGZvcm1TdHJpbmcuaCIKLSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlIHsKLXB1Ymxp
YzoKLSAgICBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZSgpOwotICAgIH5XZWJTb2NrZXRIYW5k
c2hha2VSZXNwb25zZSgpOwotCi0gICAgaW50IHN0YXR1c0NvZGUoKSBjb25zdDsKLSAgICB2b2lk
IHNldFN0YXR1c0NvZGUoaW50IHN0YXR1c0NvZGUpOwotICAgIGNvbnN0IFN0cmluZyYgc3RhdHVz
VGV4dCgpIGNvbnN0OwotICAgIHZvaWQgc2V0U3RhdHVzVGV4dChjb25zdCBTdHJpbmcmIHN0YXR1
c1RleHQpOwotICAgIGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhlYWRlckZpZWxkcygpIGNvbnN0Owot
ICAgIHZvaWQgYWRkSGVhZGVyRmllbGQoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBT
dHJpbmcmIHZhbHVlKTsKLSAgICB2b2lkIGNsZWFySGVhZGVyRmllbGRzKCk7Ci0KLSAgICBzdHJ1
Y3QgQ2hhbGxlbmdlUmVzcG9uc2UgewotICAgICAgICB1bnNpZ25lZCBjaGFyIHZhbHVlWzE2XTsK
LQotICAgICAgICBDaGFsbGVuZ2VSZXNwb25zZSgpOwotICAgICAgICB2b2lkIHNldChjb25zdCB1
bnNpZ25lZCBjaGFyIGNoYWxsZW5nZVJlc3BvbnNlWzE2XSk7Ci0gICAgfTsKLSAgICBjb25zdCBD
aGFsbGVuZ2VSZXNwb25zZSYgY2hhbGxlbmdlUmVzcG9uc2UoKSBjb25zdDsKLSAgICB2b2lkIHNl
dENoYWxsZW5nZVJlc3BvbnNlKGNvbnN0IHVuc2lnbmVkIGNoYXIgY2hhbGxlbmdlUmVzcG9uc2Vb
MTZdKTsKLQotcHJpdmF0ZToKLSAgICBpbnQgbV9zdGF0dXNDb2RlOwotICAgIFN0cmluZyBtX3N0
YXR1c1RleHQ7Ci0gICAgSFRUUEhlYWRlck1hcCBtX2hlYWRlckZpZWxkczsKLSAgICBDaGFsbGVu
Z2VSZXNwb25zZSBtX2NoYWxsZW5nZVJlc3BvbnNlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQl9TT0NLRVRTKQotCi0jZW5kaWYgLy8gV2ViU29j
a2V0SGFuZHNoYWtlUmVzcG9uc2VfaApJbmRleDogU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9X
b3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAJ
KHJldmlzaW9uIDEwODkyNCkKKysrIFNvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV29ya2VyVGhy
ZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYxMCArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyIEdvb2dsZSBJbmMuICBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0
OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
Ci0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2lmIEVOQUJMRShXRUJfU09DS0VUUykg
JiYgRU5BQkxFKFdPUktFUlMpCi0KLSNpbmNsdWRlICJXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbC5oIgotCi0jaW5jbHVkZSAiQmxvYi5oIgotI2luY2x1ZGUgIkNyb3NzVGhyZWFkVGFz
ay5oIgotI2luY2x1ZGUgIkRvY3VtZW50LmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIK
LSNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiVGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyLmgiCi0jaW5jbHVkZSAiV2ViU29ja2V0Q2hh
bm5lbC5oIgotI2luY2x1ZGUgIldlYlNvY2tldENoYW5uZWxDbGllbnQuaCIKLSNpbmNsdWRlICJX
b3JrZXJDb250ZXh0LmgiCi0jaW5jbHVkZSAiV29ya2VyTG9hZGVyUHJveHkuaCIKLSNpbmNsdWRl
ICJXb3JrZXJSdW5Mb29wLmgiCi0jaW5jbHVkZSAiV29ya2VyVGhyZWFkLmgiCi0jaW5jbHVkZSA8
d3RmL0FycmF5QnVmZmVyLmg+Ci0jaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KLSNpbmNsdWRl
IDx3dGYvUGFzc1JlZlB0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVdvcmtlclRocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsOjpXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbChX
b3JrZXJDb250ZXh0KiBjb250ZXh0LCBXZWJTb2NrZXRDaGFubmVsQ2xpZW50KiBjbGllbnQsIGNv
bnN0IFN0cmluZyYgdGFza01vZGUpCi0gICAgOiBtX3dvcmtlckNvbnRleHQoY29udGV4dCkKLSAg
ICAsIG1fd29ya2VyQ2xpZW50V3JhcHBlcihUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVu
dFdyYXBwZXI6OmNyZWF0ZShjb250ZXh0LCBjbGllbnQpKQotICAgICwgbV9icmlkZ2UoQnJpZGdl
OjpjcmVhdGUobV93b3JrZXJDbGllbnRXcmFwcGVyLCBtX3dvcmtlckNvbnRleHQsIHRhc2tNb2Rl
KSkKLXsKLX0KLQotV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6On5Xb3JrZXJUaHJl
YWRhYmxlV2ViU29ja2V0Q2hhbm5lbCgpCi17Ci0gICAgaWYgKG1fYnJpZGdlKQotICAgICAgICBt
X2JyaWRnZS0+ZGlzY29ubmVjdCgpOwotfQotCi1ib29sIFdvcmtlclRocmVhZGFibGVXZWJTb2Nr
ZXRDaGFubmVsOjp1c2VIaXhpZTc2UHJvdG9jb2woKQotewotICAgIEFTU0VSVChtX3dvcmtlckNs
aWVudFdyYXBwZXIpOwotICAgIHJldHVybiBtX3dvcmtlckNsaWVudFdyYXBwZXItPnVzZUhpeGll
NzZQcm90b2NvbCgpOwotfQotCi12b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
Ojpjb25uZWN0KGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCkKLXsKLSAg
ICBpZiAobV9icmlkZ2UpCi0gICAgICAgIG1fYnJpZGdlLT5jb25uZWN0KHVybCwgcHJvdG9jb2wp
OwotfQotCi1TdHJpbmcgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OnN1YnByb3Rv
Y29sKCkKLXsKLSAgICBBU1NFUlQobV93b3JrZXJDbGllbnRXcmFwcGVyKTsKLSAgICByZXR1cm4g
bV93b3JrZXJDbGllbnRXcmFwcGVyLT5zdWJwcm90b2NvbCgpOwotfQotCi1TdHJpbmcgV29ya2Vy
VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OmV4dGVuc2lvbnMoKQotewotICAgIEFTU0VSVCht
X3dvcmtlckNsaWVudFdyYXBwZXIpOwotICAgIHJldHVybiBtX3dvcmtlckNsaWVudFdyYXBwZXIt
PmV4dGVuc2lvbnMoKTsKLX0KLQotYm9vbCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bDo6c2VuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCi17Ci0gICAgaWYgKCFtX2JyaWRnZSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBtX2JyaWRnZS0+c2VuZChtZXNzYWdlKTsK
LX0KLQotYm9vbCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6c2VuZChjb25zdCBB
cnJheUJ1ZmZlciYgYmluYXJ5RGF0YSkKLXsKLSAgICBpZiAoIW1fYnJpZGdlKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIG1fYnJpZGdlLT5zZW5kKGJpbmFyeURhdGEpOwotfQot
Ci1ib29sIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpzZW5kKGNvbnN0IEJsb2Im
IGJpbmFyeURhdGEpCi17Ci0gICAgaWYgKCFtX2JyaWRnZSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIHJldHVybiBtX2JyaWRnZS0+c2VuZChiaW5hcnlEYXRhKTsKLX0KLQotdW5zaWduZWQg
bG9uZyBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6YnVmZmVyZWRBbW91bnQoKSBj
b25zdAotewotICAgIGlmICghbV9icmlkZ2UpCi0gICAgICAgIHJldHVybiAwOwotICAgIHJldHVy
biBtX2JyaWRnZS0+YnVmZmVyZWRBbW91bnQoKTsKLX0KLQotdm9pZCBXb3JrZXJUaHJlYWRhYmxl
V2ViU29ja2V0Q2hhbm5lbDo6Y2xvc2UoaW50IGNvZGUsIGNvbnN0IFN0cmluZyYgcmVhc29uKQot
ewotICAgIGlmIChtX2JyaWRnZSkKLSAgICAgICAgbV9icmlkZ2UtPmNsb3NlKGNvZGUsIHJlYXNv
bik7Ci19Ci0KLXZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OmZhaWwoY29u
c3QgU3RyaW5nJiByZWFzb24pCi17Ci0gICAgaWYgKG1fYnJpZGdlKQotICAgICAgICBtX2JyaWRn
ZS0+ZmFpbChyZWFzb24pOwotfQotCi12b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsOjpkaXNjb25uZWN0KCkKLXsKLSAgICBtX2JyaWRnZS0+ZGlzY29ubmVjdCgpOwotICAgIG1f
YnJpZGdlLmNsZWFyKCk7Ci19Ci0KLXZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5u
ZWw6OnN1c3BlbmQoKQotewotICAgIG1fd29ya2VyQ2xpZW50V3JhcHBlci0+c3VzcGVuZCgpOwot
ICAgIGlmIChtX2JyaWRnZSkKLSAgICAgICAgbV9icmlkZ2UtPnN1c3BlbmQoKTsKLX0KLQotdm9p
ZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6cmVzdW1lKCkKLXsKLSAgICBtX3dv
cmtlckNsaWVudFdyYXBwZXItPnJlc3VtZSgpOwotICAgIGlmIChtX2JyaWRnZSkKLSAgICAgICAg
bV9icmlkZ2UtPnJlc3VtZSgpOwotfQotCi1Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bDo6UGVlcjo6UGVlcihQYXNzUmVmUHRyPFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50
V3JhcHBlcj4gY2xpZW50V3JhcHBlciwgV29ya2VyTG9hZGVyUHJveHkmIGxvYWRlclByb3h5LCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHRhc2tNb2RlKQot
ICAgIDogbV93b3JrZXJDbGllbnRXcmFwcGVyKGNsaWVudFdyYXBwZXIpCi0gICAgLCBtX2xvYWRl
clByb3h5KGxvYWRlclByb3h5KQotICAgICwgbV9tYWluV2ViU29ja2V0Q2hhbm5lbChXZWJTb2Nr
ZXRDaGFubmVsOjpjcmVhdGUoc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihjb250ZXh0KSwgdGhpcykp
Ci0gICAgLCBtX3Rhc2tNb2RlKHRhc2tNb2RlKQotewotICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7Ci19Ci0KLVdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVyOjp+UGVlcigp
Ci17Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBpZiAobV9tYWluV2ViU29ja2V0
Q2hhbm5lbCkKLSAgICAgICAgbV9tYWluV2ViU29ja2V0Q2hhbm5lbC0+ZGlzY29ubmVjdCgpOwot
fQotCi1ib29sIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVyOjp1c2VIaXhp
ZTc2UHJvdG9jb2woKQotewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgQVNTRVJU
KG1fbWFpbldlYlNvY2tldENoYW5uZWwpOwotICAgIHJldHVybiBtX21haW5XZWJTb2NrZXRDaGFu
bmVsLT51c2VIaXhpZTc2UHJvdG9jb2woKTsKLX0KLQotdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbDo6UGVlcjo6Y29ubmVjdChjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmlu
ZyYgcHJvdG9jb2wpCi17Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBpZiAoIW1f
bWFpbldlYlNvY2tldENoYW5uZWwpCi0gICAgICAgIHJldHVybjsKLSAgICBtX21haW5XZWJTb2Nr
ZXRDaGFubmVsLT5jb25uZWN0KHVybCwgcHJvdG9jb2wpOwotfQotCi1zdGF0aWMgdm9pZCB3b3Jr
ZXJDb250ZXh0RGlkU2VuZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVm
UHRyPFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcj4gd29ya2VyQ2xpZW50
V3JhcHBlciwgYm9vbCBzZW5kUmVxdWVzdFJlc3VsdCkKLXsKLSAgICBBU1NFUlRfVU5VU0VEKGNv
bnRleHQsIGNvbnRleHQtPmlzV29ya2VyQ29udGV4dCgpKTsKLSAgICB3b3JrZXJDbGllbnRXcmFw
cGVyLT5zZXRTZW5kUmVxdWVzdFJlc3VsdChzZW5kUmVxdWVzdFJlc3VsdCk7Ci19Ci0KLXZvaWQg
V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlBlZXI6OnNlbmQoY29uc3QgU3RyaW5n
JiBtZXNzYWdlKQotewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgaWYgKCFtX21h
aW5XZWJTb2NrZXRDaGFubmVsIHx8ICFtX3dvcmtlckNsaWVudFdyYXBwZXIpCi0gICAgICAgIHJl
dHVybjsKLSAgICBib29sIHNlbmRSZXF1ZXN0UmVzdWx0ID0gbV9tYWluV2ViU29ja2V0Q2hhbm5l
bC0+c2VuZChtZXNzYWdlKTsKLSAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29y
a2VyQ29udGV4dChjcmVhdGVDYWxsYmFja1Rhc2soJndvcmtlckNvbnRleHREaWRTZW5kLCBtX3dv
cmtlckNsaWVudFdyYXBwZXIsIHNlbmRSZXF1ZXN0UmVzdWx0KSwgbV90YXNrTW9kZSk7Ci19Ci0K
LXZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlBlZXI6OnNlbmQoY29uc3Qg
QXJyYXlCdWZmZXImIGJpbmFyeURhdGEpCi17Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
LSAgICBpZiAoIW1fbWFpbldlYlNvY2tldENoYW5uZWwgfHwgIW1fd29ya2VyQ2xpZW50V3JhcHBl
cikKLSAgICAgICAgcmV0dXJuOwotICAgIGJvb2wgc2VuZFJlcXVlc3RSZXN1bHQgPSBtX21haW5X
ZWJTb2NrZXRDaGFubmVsLT5zZW5kKGJpbmFyeURhdGEpOwotICAgIG1fbG9hZGVyUHJveHkucG9z
dFRhc2tGb3JNb2RlVG9Xb3JrZXJDb250ZXh0KGNyZWF0ZUNhbGxiYWNrVGFzaygmd29ya2VyQ29u
dGV4dERpZFNlbmQsIG1fd29ya2VyQ2xpZW50V3JhcHBlciwgc2VuZFJlcXVlc3RSZXN1bHQpLCBt
X3Rhc2tNb2RlKTsKLX0KLQotdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6
UGVlcjo6c2VuZChjb25zdCBCbG9iJiBiaW5hcnlEYXRhKQotewotICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7Ci0gICAgaWYgKCFtX21haW5XZWJTb2NrZXRDaGFubmVsIHx8ICFtX3dvcmtlckNs
aWVudFdyYXBwZXIpCi0gICAgICAgIHJldHVybjsKLSAgICBib29sIHNlbmRSZXF1ZXN0UmVzdWx0
ID0gbV9tYWluV2ViU29ja2V0Q2hhbm5lbC0+c2VuZChiaW5hcnlEYXRhKTsKLSAgICBtX2xvYWRl
clByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyQ29udGV4dChjcmVhdGVDYWxsYmFja1Rhc2so
JndvcmtlckNvbnRleHREaWRTZW5kLCBtX3dvcmtlckNsaWVudFdyYXBwZXIsIHNlbmRSZXF1ZXN0
UmVzdWx0KSwgbV90YXNrTW9kZSk7Ci19Ci0KLXN0YXRpYyB2b2lkIHdvcmtlckNvbnRleHREaWRH
ZXRCdWZmZXJlZEFtb3VudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVm
UHRyPFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcj4gd29ya2VyQ2xpZW50
V3JhcHBlciwgdW5zaWduZWQgbG9uZyBidWZmZXJlZEFtb3VudCkKLXsKLSAgICBBU1NFUlRfVU5V
U0VEKGNvbnRleHQsIGNvbnRleHQtPmlzV29ya2VyQ29udGV4dCgpKTsKLSAgICB3b3JrZXJDbGll
bnRXcmFwcGVyLT5zZXRCdWZmZXJlZEFtb3VudChidWZmZXJlZEFtb3VudCk7Ci19Ci0KLXZvaWQg
V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlBlZXI6OmJ1ZmZlcmVkQW1vdW50KCkK
LXsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIGlmICghbV9tYWluV2ViU29ja2V0
Q2hhbm5lbCB8fCAhbV93b3JrZXJDbGllbnRXcmFwcGVyKQotICAgICAgICByZXR1cm47Ci0gICAg
dW5zaWduZWQgbG9uZyBidWZmZXJlZEFtb3VudCA9IG1fbWFpbldlYlNvY2tldENoYW5uZWwtPmJ1
ZmZlcmVkQW1vdW50KCk7Ci0gICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtl
ckNvbnRleHQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZ3b3JrZXJDb250ZXh0RGlkR2V0QnVmZmVyZWRB
bW91bnQsIG1fd29ya2VyQ2xpZW50V3JhcHBlciwgYnVmZmVyZWRBbW91bnQpLCBtX3Rhc2tNb2Rl
KTsKLX0KLQotdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVlcjo6Y2xv
c2UoaW50IGNvZGUsIGNvbnN0IFN0cmluZyYgcmVhc29uKQotewotICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7Ci0gICAgaWYgKCFtX21haW5XZWJTb2NrZXRDaGFubmVsKQotICAgICAgICByZXR1
cm47Ci0gICAgbV9tYWluV2ViU29ja2V0Q2hhbm5lbC0+Y2xvc2UoY29kZSwgcmVhc29uKTsKLX0K
LQotdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVlcjo6ZmFpbChjb25z
dCBTdHJpbmcmIHJlYXNvbikKLXsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIGlm
ICghbV9tYWluV2ViU29ja2V0Q2hhbm5lbCkKLSAgICAgICAgcmV0dXJuOwotICAgIG1fbWFpbldl
YlNvY2tldENoYW5uZWwtPmZhaWwocmVhc29uKTsKLX0KLQotdm9pZCBXb3JrZXJUaHJlYWRhYmxl
V2ViU29ja2V0Q2hhbm5lbDo6UGVlcjo6ZGlzY29ubmVjdCgpCi17Ci0gICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKLSAgICBpZiAoIW1fbWFpbldlYlNvY2tldENoYW5uZWwpCi0gICAgICAgIHJl
dHVybjsKLSAgICBtX21haW5XZWJTb2NrZXRDaGFubmVsLT5kaXNjb25uZWN0KCk7Ci0gICAgbV9t
YWluV2ViU29ja2V0Q2hhbm5lbCA9IDA7Ci19Ci0KLXZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWw6OlBlZXI6OnN1c3BlbmQoKQotewotICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7Ci0gICAgaWYgKCFtX21haW5XZWJTb2NrZXRDaGFubmVsKQotICAgICAgICByZXR1cm47Ci0g
ICAgbV9tYWluV2ViU29ja2V0Q2hhbm5lbC0+c3VzcGVuZCgpOwotfQotCi12b2lkIFdvcmtlclRo
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVyOjpyZXN1bWUoKQotewotICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7Ci0gICAgaWYgKCFtX21haW5XZWJTb2NrZXRDaGFubmVsKQotICAgICAg
ICByZXR1cm47Ci0gICAgbV9tYWluV2ViU29ja2V0Q2hhbm5lbC0+cmVzdW1lKCk7Ci19Ci0KLXN0
YXRpYyB2b2lkIHdvcmtlckNvbnRleHREaWRDb25uZWN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQsIFBhc3NSZWZQdHI8VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFw
cGVyPiB3b3JrZXJDbGllbnRXcmFwcGVyLCBjb25zdCBTdHJpbmcmIHN1YnByb3RvY29sLCBjb25z
dCBTdHJpbmcmIGV4dGVuc2lvbnMpCi17Ci0gICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250
ZXh0LT5pc1dvcmtlckNvbnRleHQoKSk7Ci0gICAgd29ya2VyQ2xpZW50V3JhcHBlci0+c2V0U3Vi
cHJvdG9jb2woc3VicHJvdG9jb2wpOwotICAgIHdvcmtlckNsaWVudFdyYXBwZXItPnNldEV4dGVu
c2lvbnMoZXh0ZW5zaW9ucyk7Ci0gICAgd29ya2VyQ2xpZW50V3JhcHBlci0+ZGlkQ29ubmVjdCgp
OwotfQotCi12b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVyOjpkaWRD
b25uZWN0KCkKLXsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIG1fbG9hZGVyUHJv
eHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJDb250ZXh0KGNyZWF0ZUNhbGxiYWNrVGFzaygmd29y
a2VyQ29udGV4dERpZENvbm5lY3QsIG1fd29ya2VyQ2xpZW50V3JhcHBlciwgbV9tYWluV2ViU29j
a2V0Q2hhbm5lbC0+c3VicHJvdG9jb2woKSwgbV9tYWluV2ViU29ja2V0Q2hhbm5lbC0+ZXh0ZW5z
aW9ucygpKSwgbV90YXNrTW9kZSk7Ci19Ci0KLXN0YXRpYyB2b2lkIHdvcmtlckNvbnRleHREaWRS
ZWNlaXZlTWVzc2FnZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRy
PFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcj4gd29ya2VyQ2xpZW50V3Jh
cHBlciwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQotewotICAgIEFTU0VSVF9VTlVTRUQoY29udGV4
dCwgY29udGV4dC0+aXNXb3JrZXJDb250ZXh0KCkpOwotICAgIHdvcmtlckNsaWVudFdyYXBwZXIt
PmRpZFJlY2VpdmVNZXNzYWdlKG1lc3NhZ2UpOwotfQotCi12b2lkIFdvcmtlclRocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsOjpQZWVyOjpkaWRSZWNlaXZlTWVzc2FnZShjb25zdCBTdHJpbmcmIG1l
c3NhZ2UpCi17Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBtX2xvYWRlclByb3h5
LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyQ29udGV4dChjcmVhdGVDYWxsYmFja1Rhc2soJndvcmtl
ckNvbnRleHREaWRSZWNlaXZlTWVzc2FnZSwgbV93b3JrZXJDbGllbnRXcmFwcGVyLCBtZXNzYWdl
KSwgbV90YXNrTW9kZSk7Ci19Ci0KLXN0YXRpYyB2b2lkIHdvcmtlckNvbnRleHREaWRSZWNlaXZl
QmluYXJ5RGF0YShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPFRo
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcj4gd29ya2VyQ2xpZW50V3JhcHBl
ciwgUGFzc093blB0cjxWZWN0b3I8Y2hhcj4gPiBiaW5hcnlEYXRhKQotewotICAgIEFTU0VSVF9V
TlVTRUQoY29udGV4dCwgY29udGV4dC0+aXNXb3JrZXJDb250ZXh0KCkpOwotICAgIHdvcmtlckNs
aWVudFdyYXBwZXItPmRpZFJlY2VpdmVCaW5hcnlEYXRhKGJpbmFyeURhdGEpOwotfQotCi12b2lk
IFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVyOjpkaWRSZWNlaXZlQmluYXJ5
RGF0YShQYXNzT3duUHRyPFZlY3RvcjxjaGFyPiA+IGJpbmFyeURhdGEpCi17Ci0gICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKLSAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29y
a2VyQ29udGV4dChjcmVhdGVDYWxsYmFja1Rhc2soJndvcmtlckNvbnRleHREaWRSZWNlaXZlQmlu
YXJ5RGF0YSwgbV93b3JrZXJDbGllbnRXcmFwcGVyLCBiaW5hcnlEYXRhKSwgbV90YXNrTW9kZSk7
Ci19Ci0KLXN0YXRpYyB2b2lkIHdvcmtlckNvbnRleHREaWRVcGRhdGVCdWZmZXJlZEFtb3VudChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPFRocmVhZGFibGVXZWJT
b2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcj4gd29ya2VyQ2xpZW50V3JhcHBlciwgdW5zaWduZWQg
bG9uZyBidWZmZXJlZEFtb3VudCkKLXsKLSAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRl
eHQtPmlzV29ya2VyQ29udGV4dCgpKTsKLSAgICB3b3JrZXJDbGllbnRXcmFwcGVyLT5kaWRVcGRh
dGVCdWZmZXJlZEFtb3VudChidWZmZXJlZEFtb3VudCk7Ci19Ci0KLXZvaWQgV29ya2VyVGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWw6OlBlZXI6OmRpZFVwZGF0ZUJ1ZmZlcmVkQW1vdW50KHVuc2ln
bmVkIGxvbmcgYnVmZmVyZWRBbW91bnQpCi17Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
LSAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyQ29udGV4dChjcmVhdGVD
YWxsYmFja1Rhc2soJndvcmtlckNvbnRleHREaWRVcGRhdGVCdWZmZXJlZEFtb3VudCwgbV93b3Jr
ZXJDbGllbnRXcmFwcGVyLCBidWZmZXJlZEFtb3VudCksIG1fdGFza01vZGUpOwotfQotCi1zdGF0
aWMgdm9pZCB3b3JrZXJDb250ZXh0RGlkU3RhcnRDbG9zaW5nSGFuZHNoYWtlKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8VGhyZWFkYWJsZVdlYlNvY2tldENoYW5u
ZWxDbGllbnRXcmFwcGVyPiB3b3JrZXJDbGllbnRXcmFwcGVyKQotewotICAgIEFTU0VSVF9VTlVT
RUQoY29udGV4dCwgY29udGV4dC0+aXNXb3JrZXJDb250ZXh0KCkpOwotICAgIHdvcmtlckNsaWVu
dFdyYXBwZXItPmRpZFN0YXJ0Q2xvc2luZ0hhbmRzaGFrZSgpOwotfQotCi12b2lkIFdvcmtlclRo
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVyOjpkaWRTdGFydENsb3NpbmdIYW5kc2hha2Uo
KQotewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgbV9sb2FkZXJQcm94eS5wb3N0
VGFza0Zvck1vZGVUb1dvcmtlckNvbnRleHQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZ3b3JrZXJDb250
ZXh0RGlkU3RhcnRDbG9zaW5nSGFuZHNoYWtlLCBtX3dvcmtlckNsaWVudFdyYXBwZXIpLCBtX3Rh
c2tNb2RlKTsKLX0KLQotc3RhdGljIHZvaWQgd29ya2VyQ29udGV4dERpZENsb3NlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8VGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWxDbGllbnRXcmFwcGVyPiB3b3JrZXJDbGllbnRXcmFwcGVyLCB1bnNpZ25lZCBsb25nIHVu
aGFuZGxlZEJ1ZmZlcmVkQW1vdW50LCBXZWJTb2NrZXRDaGFubmVsQ2xpZW50OjpDbG9zaW5nSGFu
ZHNoYWtlQ29tcGxldGlvblN0YXR1cyBjbG9zaW5nSGFuZHNoYWtlQ29tcGxldGlvbiwgdW5zaWdu
ZWQgc2hvcnQgY29kZSwgY29uc3QgU3RyaW5nJiByZWFzb24pCi17Ci0gICAgQVNTRVJUX1VOVVNF
RChjb250ZXh0LCBjb250ZXh0LT5pc1dvcmtlckNvbnRleHQoKSk7Ci0gICAgd29ya2VyQ2xpZW50
V3JhcHBlci0+ZGlkQ2xvc2UodW5oYW5kbGVkQnVmZmVyZWRBbW91bnQsIGNsb3NpbmdIYW5kc2hh
a2VDb21wbGV0aW9uLCBjb2RlLCByZWFzb24pOwotfQotCi12b2lkIFdvcmtlclRocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsOjpQZWVyOjpkaWRDbG9zZSh1bnNpZ25lZCBsb25nIHVuaGFuZGxlZEJ1
ZmZlcmVkQW1vdW50LCBDbG9zaW5nSGFuZHNoYWtlQ29tcGxldGlvblN0YXR1cyBjbG9zaW5nSGFu
ZHNoYWtlQ29tcGxldGlvbiwgdW5zaWduZWQgc2hvcnQgY29kZSwgY29uc3QgU3RyaW5nJiByZWFz
b24pCi17Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBtX21haW5XZWJTb2NrZXRD
aGFubmVsID0gMDsKLSAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyQ29u
dGV4dChjcmVhdGVDYWxsYmFja1Rhc2soJndvcmtlckNvbnRleHREaWRDbG9zZSwgbV93b3JrZXJD
bGllbnRXcmFwcGVyLCB1bmhhbmRsZWRCdWZmZXJlZEFtb3VudCwgY2xvc2luZ0hhbmRzaGFrZUNv
bXBsZXRpb24sIGNvZGUsIHJlYXNvbiksIG1fdGFza01vZGUpOwotfQotCi12b2lkIFdvcmtlclRo
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6OnNldFdlYlNvY2tldENoYW5uZWwoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgQnJpZGdlKiB0aGlzUHRyLCBQZWVyKiBwZWVy
LCBQYXNzUmVmUHRyPFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcj4gd29y
a2VyQ2xpZW50V3JhcHBlciwgYm9vbCB1c2VIaXhpZTc2UHJvdG9jb2wpCi17Ci0gICAgQVNTRVJU
X1VOVVNFRChjb250ZXh0LCBjb250ZXh0LT5pc1dvcmtlckNvbnRleHQoKSk7Ci0gICAgdGhpc1B0
ci0+bV9wZWVyID0gcGVlcjsKLSAgICB3b3JrZXJDbGllbnRXcmFwcGVyLT5zZXRVc2VIaXhpZTc2
UHJvdG9jb2wodXNlSGl4aWU3NlByb3RvY29sKTsKLSAgICB3b3JrZXJDbGllbnRXcmFwcGVyLT5z
ZXRTeW5jTWV0aG9kRG9uZSgpOwotfQotCi12b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsOjpCcmlkZ2U6Om1haW5UaHJlYWRDcmVhdGVXZWJTb2NrZXRDaGFubmVsKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEJyaWRnZSogdGhpc1B0ciwgUGFzc1JlZlB0cjxUaHJl
YWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+IHBycENsaWVudFdyYXBwZXIsIGNv
bnN0IFN0cmluZyYgdGFza01vZGUpCi17Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAg
ICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQtPmlzRG9jdW1lbnQoKSk7Ci0KLSAgICBS
ZWZQdHI8VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyPiBjbGllbnRXcmFw
cGVyID0gcHJwQ2xpZW50V3JhcHBlcjsKLQotICAgIFBlZXIqIHBlZXIgPSBQZWVyOjpjcmVhdGUo
Y2xpZW50V3JhcHBlciwgdGhpc1B0ci0+bV9sb2FkZXJQcm94eSwgY29udGV4dCwgdGFza01vZGUp
OwotICAgIHRoaXNQdHItPm1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJDb250
ZXh0KAotICAgICAgICBjcmVhdGVDYWxsYmFja1Rhc2soJkJyaWRnZTo6c2V0V2ViU29ja2V0Q2hh
bm5lbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3Mo
dGhpc1B0ciksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNj
ZXNzKHBlZXIpLCBjbGllbnRXcmFwcGVyLCBwZWVyLT51c2VIaXhpZTc2UHJvdG9jb2woKSksIHRh
c2tNb2RlKTsKLX0KLQotV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OkJyaWRnZTo6
QnJpZGdlKFBhc3NSZWZQdHI8VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVy
PiB3b3JrZXJDbGllbnRXcmFwcGVyLCBQYXNzUmVmUHRyPFdvcmtlckNvbnRleHQ+IHdvcmtlckNv
bnRleHQsIGNvbnN0IFN0cmluZyYgdGFza01vZGUpCi0gICAgOiBtX3dvcmtlckNsaWVudFdyYXBw
ZXIod29ya2VyQ2xpZW50V3JhcHBlcikKLSAgICAsIG1fd29ya2VyQ29udGV4dCh3b3JrZXJDb250
ZXh0KQotICAgICwgbV9sb2FkZXJQcm94eShtX3dvcmtlckNvbnRleHQtPnRocmVhZCgpLT53b3Jr
ZXJMb2FkZXJQcm94eSgpKQotICAgICwgbV90YXNrTW9kZSh0YXNrTW9kZSkKLSAgICAsIG1fcGVl
cigwKQotewotICAgIEFTU0VSVChtX3dvcmtlckNsaWVudFdyYXBwZXIuZ2V0KCkpOwotICAgIHNl
dE1ldGhvZE5vdENvbXBsZXRlZCgpOwotICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tUb0xvYWRl
cigKLSAgICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZCcmlkZ2U6Om1haW5UaHJlYWRDcmVhdGVX
ZWJTb2NrZXRDaGFubmVsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dDcm9zc1Ro
cmVhZEFjY2Vzcyh0aGlzKSwgbV93b3JrZXJDbGllbnRXcmFwcGVyLCBtX3Rhc2tNb2RlKSk7Ci0g
ICAgd2FpdEZvck1ldGhvZENvbXBsZXRpb24oKTsKLSAgICBBU1NFUlQobV9wZWVyKTsKLX0KLQot
V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OkJyaWRnZTo6fkJyaWRnZSgpCi17Ci0g
ICAgZGlzY29ubmVjdCgpOwotfQotCi12b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsOjptYWluVGhyZWFkQ29ubmVjdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQ
ZWVyKiBwZWVyLCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpCi17Ci0g
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNv
bnRleHQtPmlzRG9jdW1lbnQoKSk7Ci0gICAgQVNTRVJUKHBlZXIpOwotCi0gICAgcGVlci0+Y29u
bmVjdCh1cmwsIHByb3RvY29sKTsKLX0KLQotdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbDo6QnJpZGdlOjpjb25uZWN0KGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBw
cm90b2NvbCkKLXsKLSAgICBBU1NFUlQobV93b3JrZXJDbGllbnRXcmFwcGVyKTsKLSAgICBBU1NF
UlQobV9wZWVyKTsKLSAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrVG9Mb2FkZXIoY3JlYXRlQ2Fs
bGJhY2tUYXNrKCZXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6bWFpblRocmVhZENv
bm5lY3QsIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3MobV9wZWVyKSwgdXJsLCBwcm90b2NvbCkpOwot
fQotCi12b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjptYWluVGhyZWFkU2Vu
ZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQZWVyKiBwZWVyLCBjb25zdCBTdHJp
bmcmIG1lc3NhZ2UpCi17Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBBU1NFUlRf
VU5VU0VEKGNvbnRleHQsIGNvbnRleHQtPmlzRG9jdW1lbnQoKSk7Ci0gICAgQVNTRVJUKHBlZXIp
OwotCi0gICAgcGVlci0+c2VuZChtZXNzYWdlKTsKLX0KLQotdm9pZCBXb3JrZXJUaHJlYWRhYmxl
V2ViU29ja2V0Q2hhbm5lbDo6bWFpblRocmVhZFNlbmRBcnJheUJ1ZmZlcihTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0LCBQZWVyKiBwZWVyLCBQYXNzT3duUHRyPFZlY3RvcjxjaGFyPiA+
IGRhdGEpCi17Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBBU1NFUlRfVU5VU0VE
KGNvbnRleHQsIGNvbnRleHQtPmlzRG9jdW1lbnQoKSk7Ci0gICAgQVNTRVJUKHBlZXIpOwotCi0g
ICAgUmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUo
ZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOwotICAgIHBlZXItPnNlbmQoKmFycmF5QnVmZmVy
KTsKLX0KLQotdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6bWFpblRocmVh
ZFNlbmRCbG9iKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBlZXIqIHBlZXIsIGNv
bnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0eXBlLCBsb25nIGxvbmcgc2l6ZSkKLXsKLSAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29u
dGV4dC0+aXNEb2N1bWVudCgpKTsKLSAgICBBU1NFUlQocGVlcik7Ci0KLSAgICBSZWZQdHI8Qmxv
Yj4gYmxvYiA9IEJsb2I6OmNyZWF0ZSh1cmwsIHR5cGUsIHNpemUpOwotICAgIHBlZXItPnNlbmQo
KmJsb2IpOwotfQotCi1ib29sIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlk
Z2U6OnNlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQotewotICAgIGlmICghbV93b3JrZXJDbGll
bnRXcmFwcGVyKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgQVNTRVJUKG1fcGVlcik7Ci0g
ICAgc2V0TWV0aG9kTm90Q29tcGxldGVkKCk7Ci0gICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza1Rv
TG9hZGVyKGNyZWF0ZUNhbGxiYWNrVGFzaygmV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5u
ZWw6Om1haW5UaHJlYWRTZW5kLCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKG1fcGVlciksIG1lc3Nh
Z2UpKTsKLSAgICBSZWZQdHI8QnJpZGdlPiBwcm90ZWN0KHRoaXMpOwotICAgIHdhaXRGb3JNZXRo
b2RDb21wbGV0aW9uKCk7Ci0gICAgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFw
cGVyKiBjbGllbnRXcmFwcGVyID0gbV93b3JrZXJDbGllbnRXcmFwcGVyLmdldCgpOwotICAgIHJl
dHVybiBjbGllbnRXcmFwcGVyICYmIGNsaWVudFdyYXBwZXItPnNlbmRSZXF1ZXN0UmVzdWx0KCk7
Ci19Ci0KLWJvb2wgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OkJyaWRnZTo6c2Vu
ZChjb25zdCBBcnJheUJ1ZmZlciYgYmluYXJ5RGF0YSkKLXsKLSAgICBpZiAoIW1fd29ya2VyQ2xp
ZW50V3JhcHBlcikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIEFTU0VSVChtX3BlZXIpOwot
ICAgIC8vIEFycmF5QnVmZmVyIGlzbid0IHRocmVhZC1zYWZlLCBoZW5jZSB0aGUgY29udGVudCBv
ZiBBcnJheUJ1ZmZlciBpcyBjb3BpZWQgaW50byBWZWN0b3I8Y2hhcj4uCi0gICAgT3duUHRyPFZl
Y3RvcjxjaGFyPiA+IGRhdGEgPSBhZG9wdFB0cihuZXcgVmVjdG9yPGNoYXI+KGJpbmFyeURhdGEu
Ynl0ZUxlbmd0aCgpKSk7Ci0gICAgaWYgKGJpbmFyeURhdGEuYnl0ZUxlbmd0aCgpKQotICAgICAg
ICBtZW1jcHkoZGF0YS0+ZGF0YSgpLCBiaW5hcnlEYXRhLmRhdGEoKSwgYmluYXJ5RGF0YS5ieXRl
TGVuZ3RoKCkpOwotICAgIHNldE1ldGhvZE5vdENvbXBsZXRlZCgpOwotICAgIG1fbG9hZGVyUHJv
eHkucG9zdFRhc2tUb0xvYWRlcihjcmVhdGVDYWxsYmFja1Rhc2soJldvcmtlclRocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsOjptYWluVGhyZWFkU2VuZEFycmF5QnVmZmVyLCBBbGxvd0Nyb3NzVGhy
ZWFkQWNjZXNzKG1fcGVlciksIGRhdGEucmVsZWFzZSgpKSk7Ci0gICAgUmVmUHRyPEJyaWRnZT4g
cHJvdGVjdCh0aGlzKTsKLSAgICB3YWl0Rm9yTWV0aG9kQ29tcGxldGlvbigpOwotICAgIFRocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlciogY2xpZW50V3JhcHBlciA9IG1fd29y
a2VyQ2xpZW50V3JhcHBlci5nZXQoKTsKLSAgICByZXR1cm4gY2xpZW50V3JhcHBlciAmJiBjbGll
bnRXcmFwcGVyLT5zZW5kUmVxdWVzdFJlc3VsdCgpOwotfQotCi1ib29sIFdvcmtlclRocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6OnNlbmQoY29uc3QgQmxvYiYgYmluYXJ5RGF0YSkK
LXsKLSAgICBpZiAoIW1fd29ya2VyQ2xpZW50V3JhcHBlcikKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIEFTU0VSVChtX3BlZXIpOwotICAgIHNldE1ldGhvZE5vdENvbXBsZXRlZCgpOwotICAg
IG1fbG9hZGVyUHJveHkucG9zdFRhc2tUb0xvYWRlcihjcmVhdGVDYWxsYmFja1Rhc2soJldvcmtl
clRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjptYWluVGhyZWFkU2VuZEJsb2IsIEFsbG93Q3Jv
c3NUaHJlYWRBY2Nlc3MobV9wZWVyKSwgYmluYXJ5RGF0YS51cmwoKSwgYmluYXJ5RGF0YS50eXBl
KCksIGJpbmFyeURhdGEuc2l6ZSgpKSk7Ci0gICAgUmVmUHRyPEJyaWRnZT4gcHJvdGVjdCh0aGlz
KTsKLSAgICB3YWl0Rm9yTWV0aG9kQ29tcGxldGlvbigpOwotICAgIFRocmVhZGFibGVXZWJTb2Nr
ZXRDaGFubmVsQ2xpZW50V3JhcHBlciogY2xpZW50V3JhcHBlciA9IG1fd29ya2VyQ2xpZW50V3Jh
cHBlci5nZXQoKTsKLSAgICByZXR1cm4gY2xpZW50V3JhcHBlciAmJiBjbGllbnRXcmFwcGVyLT5z
ZW5kUmVxdWVzdFJlc3VsdCgpOwotfQotCi12b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsOjptYWluVGhyZWFkQnVmZmVyZWRBbW91bnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwgUGVlciogcGVlcikKLXsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAg
IEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4dC0+aXNEb2N1bWVudCgpKTsKLSAgICBBU1NF
UlQocGVlcik7Ci0KLSAgICBwZWVyLT5idWZmZXJlZEFtb3VudCgpOwotfQotCi11bnNpZ25lZCBs
b25nIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6OmJ1ZmZlcmVkQW1v
dW50KCkKLXsKLSAgICBpZiAoIW1fd29ya2VyQ2xpZW50V3JhcHBlcikKLSAgICAgICAgcmV0dXJu
IDA7Ci0gICAgQVNTRVJUKG1fcGVlcik7Ci0gICAgc2V0TWV0aG9kTm90Q29tcGxldGVkKCk7Ci0g
ICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza1RvTG9hZGVyKGNyZWF0ZUNhbGxiYWNrVGFzaygmV29y
a2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6Om1haW5UaHJlYWRCdWZmZXJlZEFtb3VudCwg
QWxsb3dDcm9zc1RocmVhZEFjY2VzcyhtX3BlZXIpKSk7Ci0gICAgUmVmUHRyPEJyaWRnZT4gcHJv
dGVjdCh0aGlzKTsKLSAgICB3YWl0Rm9yTWV0aG9kQ29tcGxldGlvbigpOwotICAgIFRocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlciogY2xpZW50V3JhcHBlciA9IG1fd29ya2Vy
Q2xpZW50V3JhcHBlci5nZXQoKTsKLSAgICBpZiAoY2xpZW50V3JhcHBlcikKLSAgICAgICAgcmV0
dXJuIGNsaWVudFdyYXBwZXItPmJ1ZmZlcmVkQW1vdW50KCk7Ci0gICAgcmV0dXJuIDA7Ci19Ci0K
LXZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6Om1haW5UaHJlYWRDbG9zZShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQZWVyKiBwZWVyLCBpbnQgY29kZSwgY29u
c3QgU3RyaW5nJnJlYXNvbikKLXsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIEFT
U0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4dC0+aXNEb2N1bWVudCgpKTsKLSAgICBBU1NFUlQo
cGVlcik7Ci0KLSAgICBwZWVyLT5jbG9zZShjb2RlLCByZWFzb24pOwotfQotCi12b2lkIFdvcmtl
clRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6OmNsb3NlKGludCBjb2RlLCBjb25z
dCBTdHJpbmcmIHJlYXNvbikKLXsKLSAgICBBU1NFUlQobV9wZWVyKTsKLSAgICBtX2xvYWRlclBy
b3h5LnBvc3RUYXNrVG9Mb2FkZXIoY3JlYXRlQ2FsbGJhY2tUYXNrKCZXb3JrZXJUaHJlYWRhYmxl
V2ViU29ja2V0Q2hhbm5lbDo6bWFpblRocmVhZENsb3NlLCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNz
KG1fcGVlciksIGNvZGUsIHJlYXNvbikpOwotfQotCi12b2lkIFdvcmtlclRocmVhZGFibGVXZWJT
b2NrZXRDaGFubmVsOjptYWluVGhyZWFkRmFpbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0LCBQZWVyKiBwZWVyLCBjb25zdCBTdHJpbmcmIHJlYXNvbikKLXsKLSAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOwotICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4dC0+aXNEb2N1
bWVudCgpKTsKLSAgICBBU1NFUlQocGVlcik7Ci0KLSAgICBwZWVyLT5mYWlsKHJlYXNvbik7Ci19
Ci0KLXZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OkJyaWRnZTo6ZmFpbChj
b25zdCBTdHJpbmcmIHJlYXNvbikKLXsKLSAgICBBU1NFUlQobV9wZWVyKTsKLSAgICBtX2xvYWRl
clByb3h5LnBvc3RUYXNrVG9Mb2FkZXIoY3JlYXRlQ2FsbGJhY2tUYXNrKCZXb3JrZXJUaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbDo6bWFpblRocmVhZEZhaWwsIEFsbG93Q3Jvc3NUaHJlYWRBY2Nl
c3MobV9wZWVyKSwgcmVhc29uKSk7Ci19Ci0KLXZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWw6Om1haW5UaHJlYWREZXN0cm95KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQsIFBlZXIqIHBlZXIpCi17Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBBU1NF
UlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQtPmlzRG9jdW1lbnQoKSk7Ci0gICAgQVNTRVJUKHBl
ZXIpOwotCi0gICAgZGVsZXRlIHBlZXI7Ci19Ci0KLXZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWw6OkJyaWRnZTo6ZGlzY29ubmVjdCgpCi17Ci0gICAgY2xlYXJDbGllbnRXcmFw
cGVyKCk7Ci0gICAgaWYgKG1fcGVlcikgewotICAgICAgICBQZWVyKiBwZWVyID0gbV9wZWVyOwot
ICAgICAgICBtX3BlZXIgPSAwOwotICAgICAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrVG9Mb2Fk
ZXIoY3JlYXRlQ2FsbGJhY2tUYXNrKCZtYWluVGhyZWFkRGVzdHJveSwgQWxsb3dDcm9zc1RocmVh
ZEFjY2VzcyhwZWVyKSkpOwotICAgIH0KLSAgICBtX3dvcmtlckNvbnRleHQgPSAwOwotfQotCi12
b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjptYWluVGhyZWFkU3VzcGVuZChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQZWVyKiBwZWVyKQotewotICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7Ci0gICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250ZXh0LT5p
c0RvY3VtZW50KCkpOwotICAgIEFTU0VSVChwZWVyKTsKLQotICAgIHBlZXItPnN1c3BlbmQoKTsK
LX0KLQotdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6QnJpZGdlOjpzdXNw
ZW5kKCkKLXsKLSAgICBBU1NFUlQobV9wZWVyKTsKLSAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNr
VG9Mb2FkZXIoY3JlYXRlQ2FsbGJhY2tUYXNrKCZXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbDo6bWFpblRocmVhZFN1c3BlbmQsIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3MobV9wZWVyKSkp
OwotfQotCi12b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjptYWluVGhyZWFk
UmVzdW1lKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBlZXIqIHBlZXIpCi17Ci0g
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNv
bnRleHQtPmlzRG9jdW1lbnQoKSk7Ci0gICAgQVNTRVJUKHBlZXIpOwotCi0gICAgcGVlci0+cmVz
dW1lKCk7Ci19Ci0KLXZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OkJyaWRn
ZTo6cmVzdW1lKCkKLXsKLSAgICBBU1NFUlQobV9wZWVyKTsKLSAgICBtX2xvYWRlclByb3h5LnBv
c3RUYXNrVG9Mb2FkZXIoY3JlYXRlQ2FsbGJhY2tUYXNrKCZXb3JrZXJUaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbDo6bWFpblRocmVhZFJlc3VtZSwgQWxsb3dDcm9zc1RocmVhZEFjY2VzcyhtX3Bl
ZXIpKSk7Ci19Ci0KLXZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OkJyaWRn
ZTo6Y2xlYXJDbGllbnRXcmFwcGVyKCkKLXsKLSAgICBtX3dvcmtlckNsaWVudFdyYXBwZXItPmNs
ZWFyQ2xpZW50KCk7Ci19Ci0KLXZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6
OkJyaWRnZTo6c2V0TWV0aG9kTm90Q29tcGxldGVkKCkKLXsKLSAgICBBU1NFUlQobV93b3JrZXJD
bGllbnRXcmFwcGVyKTsKLSAgICBtX3dvcmtlckNsaWVudFdyYXBwZXItPmNsZWFyU3luY01ldGhv
ZERvbmUoKTsKLX0KLQotLy8gQ2FsbGVyIG9mIHRoaXMgZnVuY3Rpb24gc2hvdWxkIGhvbGQgYSBy
ZWZlcmVuY2UgdG8gdGhlIGJyaWRnZSwgYmVjYXVzZSB0aGlzIGZ1bmN0aW9uIG1heSBjYWxsIFdl
YlNvY2tldDo6ZGlkQ2xvc2UoKSBpbiB0aGUgZW5kLAotLy8gd2hpY2ggY2F1c2VzIHRoZSBicmlk
Z2UgdG8gZ2V0IGRpc2Nvbm5lY3RlZCBmcm9tIHRoZSBXZWJTb2NrZXQgYW5kIGRlbGV0ZWQgaWYg
dGhlcmUgaXMgbm8gb3RoZXIgcmVmZXJlbmNlLgotdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbDo6QnJpZGdlOjp3YWl0Rm9yTWV0aG9kQ29tcGxldGlvbigpCi17Ci0gICAgaWYg
KCFtX3dvcmtlckNvbnRleHQpCi0gICAgICAgIHJldHVybjsKLSAgICBXb3JrZXJSdW5Mb29wJiBy
dW5Mb29wID0gbV93b3JrZXJDb250ZXh0LT50aHJlYWQoKS0+cnVuTG9vcCgpOwotICAgIE1lc3Nh
Z2VRdWV1ZVdhaXRSZXN1bHQgcmVzdWx0ID0gTWVzc2FnZVF1ZXVlTWVzc2FnZVJlY2VpdmVkOwot
ICAgIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlciogY2xpZW50V3JhcHBl
ciA9IG1fd29ya2VyQ2xpZW50V3JhcHBlci5nZXQoKTsKLSAgICB3aGlsZSAobV93b3JrZXJDb250
ZXh0ICYmIGNsaWVudFdyYXBwZXIgJiYgIWNsaWVudFdyYXBwZXItPnN5bmNNZXRob2REb25lKCkg
JiYgcmVzdWx0ICE9IE1lc3NhZ2VRdWV1ZVRlcm1pbmF0ZWQpIHsKLSAgICAgICAgcmVzdWx0ID0g
cnVuTG9vcC5ydW5Jbk1vZGUobV93b3JrZXJDb250ZXh0LmdldCgpLCBtX3Rhc2tNb2RlKTsgLy8g
TWF5IGNhdXNlIHRoaXMgYnJpZGdlIHRvIGdldCBkaXNjb25uZWN0ZWQsIHdoaWNoIG1ha2VzIG1f
d29ya2VyQ29udGV4dCBiZWNvbWUgbnVsbC4KLSAgICAgICAgY2xpZW50V3JhcHBlciA9IG1fd29y
a2VyQ2xpZW50V3JhcHBlci5nZXQoKTsKLSAgICB9Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJfU09DS0VUUykKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsLmgJKHJldmlzaW9uIDEwODkyNCkKKysrIFNvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMv
V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaAkod29ya2luZyBjb3B5KQpAQCAtMSwx
OTEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1l
dDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaWZuZGVmIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsX2gKLSNk
ZWZpbmUgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxfaAotCi0jaWYgRU5BQkxFKFdF
Ql9TT0NLRVRTKSAmJiBFTkFCTEUoV09SS0VSUykKLQotI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5n
LmgiCi0jaW5jbHVkZSAiVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaCIKLSNpbmNsdWRlICJX
ZWJTb2NrZXRDaGFubmVsQ2xpZW50LmgiCi0KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgot
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotI2lu
Y2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBL
VVJMOwotY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKLWNsYXNzIFRocmVhZGFibGVXZWJT
b2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjsKLWNsYXNzIFdvcmtlckNvbnRleHQ7Ci1jbGFzcyBX
b3JrZXJMb2FkZXJQcm94eTsKLWNsYXNzIFdvcmtlclJ1bkxvb3A7Ci0KLWNsYXNzIFdvcmtlclRo
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsIDogcHVibGljIFJlZkNvdW50ZWQ8V29ya2VyVGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWw+LCBwdWJsaWMgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwg
ewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsPiBjcmVhdGUoV29ya2VyQ29udGV4dCog
d29ya2VyQ29udGV4dCwgV2ViU29ja2V0Q2hhbm5lbENsaWVudCogY2xpZW50LCBjb25zdCBTdHJp
bmcmIHRhc2tNb2RlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXb3JrZXJU
aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbCh3b3JrZXJDb250ZXh0LCBjbGllbnQsIHRhc2tNb2Rl
KSk7Ci0gICAgfQotICAgIHZpcnR1YWwgfldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
KCk7Ci0KLSAgICAvLyBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbCBmdW5jdGlvbnMuCi0gICAg
dmlydHVhbCBib29sIHVzZUhpeGllNzZQcm90b2NvbCgpIE9WRVJSSURFOwotICAgIHZpcnR1YWwg
dm9pZCBjb25uZWN0KGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHByb3RvY29sKSBPVkVSUklE
RTsKLSAgICB2aXJ0dWFsIFN0cmluZyBzdWJwcm90b2NvbCgpIE9WRVJSSURFOwotICAgIHZpcnR1
YWwgU3RyaW5nIGV4dGVuc2lvbnMoKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGJvb2wgc2VuZChj
b25zdCBTdHJpbmcmIG1lc3NhZ2UpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgYm9vbCBzZW5kKGNv
bnN0IEFycmF5QnVmZmVyJikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBib29sIHNlbmQoY29uc3Qg
QmxvYiYpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdW5zaWduZWQgbG9uZyBidWZmZXJlZEFtb3Vu
dCgpIGNvbnN0IE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBjbG9zZShpbnQgY29kZSwgY29u
c3QgU3RyaW5nJiByZWFzb24pIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBmYWlsKGNvbnN0
IFN0cmluZyYgcmVhc29uKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzY29ubmVjdCgp
IE9WRVJSSURFOyAvLyBXaWxsIHN1cHByZXNzIGRpZENsb3NlKCkuCi0gICAgdmlydHVhbCB2b2lk
IHN1c3BlbmQoKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVzdW1lKCkgT1ZFUlJJREU7
Ci0KLSAgICB1c2luZyBSZWZDb3VudGVkPFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
Pjo6cmVmOwotICAgIHVzaW5nIFJlZkNvdW50ZWQ8V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWw+OjpkZXJlZjsKLQotcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgdm9pZCByZWZUaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbCgpIHsgcmVmKCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGVyZWZU
aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbCgpIHsgZGVyZWYoKTsgfQotCi1wcml2YXRlOgotICAg
IC8vIEdlbmVyYXRlZCBieSB0aGUgYnJpZGdlLiAgVGhlIFBlZXIgYW5kIGl0cyBicmlkZ2Ugc2hv
dWxkIGhhdmUgaWRlbnRpY2FsCi0gICAgLy8gbGlmZXRpbWVzLgotICAgIGNsYXNzIFBlZXIgOiBw
dWJsaWMgV2ViU29ja2V0Q2hhbm5lbENsaWVudCB7Ci0gICAgICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKFBlZXIpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLSAgICBwdWJsaWM6Ci0gICAgICAg
IHN0YXRpYyBQZWVyKiBjcmVhdGUoUGFzc1JlZlB0cjxUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bENsaWVudFdyYXBwZXI+IGNsaWVudFdyYXBwZXIsIFdvcmtlckxvYWRlclByb3h5JiBsb2FkZXJQ
cm94eSwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiB0YXNr
TW9kZSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG5ldyBQZWVyKGNsaWVudFdyYXBw
ZXIsIGxvYWRlclByb3h5LCBjb250ZXh0LCB0YXNrTW9kZSk7Ci0gICAgICAgIH0KLSAgICAgICAg
flBlZXIoKTsKLQotICAgICAgICBib29sIHVzZUhpeGllNzZQcm90b2NvbCgpOwotICAgICAgICB2
b2lkIGNvbm5lY3QoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpOwotICAgICAg
ICB2b2lkIHNlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKLSAgICAgICAgdm9pZCBzZW5kKGNv
bnN0IEFycmF5QnVmZmVyJik7Ci0gICAgICAgIHZvaWQgc2VuZChjb25zdCBCbG9iJik7Ci0gICAg
ICAgIHZvaWQgYnVmZmVyZWRBbW91bnQoKTsKLSAgICAgICAgdm9pZCBjbG9zZShpbnQgY29kZSwg
Y29uc3QgU3RyaW5nJiByZWFzb24pOwotICAgICAgICB2b2lkIGZhaWwoY29uc3QgU3RyaW5nJiBy
ZWFzb24pOwotICAgICAgICB2b2lkIGRpc2Nvbm5lY3QoKTsKLSAgICAgICAgdm9pZCBzdXNwZW5k
KCk7Ci0gICAgICAgIHZvaWQgcmVzdW1lKCk7Ci0KLSAgICAgICAgLy8gV2ViU29ja2V0Q2hhbm5l
bENsaWVudCBmdW5jdGlvbnMuCi0gICAgICAgIHZpcnR1YWwgdm9pZCBkaWRDb25uZWN0KCkgT1ZF
UlJJREU7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShjb25zdCBTdHJp
bmcmIG1lc3NhZ2UpIE9WRVJSSURFOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUJp
bmFyeURhdGEoUGFzc093blB0cjxWZWN0b3I8Y2hhcj4gPikgT1ZFUlJJREU7Ci0gICAgICAgIHZp
cnR1YWwgdm9pZCBkaWRVcGRhdGVCdWZmZXJlZEFtb3VudCh1bnNpZ25lZCBsb25nIGJ1ZmZlcmVk
QW1vdW50KSBPVkVSUklERTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpZFN0YXJ0Q2xvc2luZ0hh
bmRzaGFrZSgpIE9WRVJSSURFOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2xvc2UodW5zaWdu
ZWQgbG9uZyB1bmhhbmRsZWRCdWZmZXJlZEFtb3VudCwgQ2xvc2luZ0hhbmRzaGFrZUNvbXBsZXRp
b25TdGF0dXMsIHVuc2lnbmVkIHNob3J0IGNvZGUsIGNvbnN0IFN0cmluZyYgcmVhc29uKSBPVkVS
UklERTsKLQotICAgIHByaXZhdGU6Ci0gICAgICAgIFBlZXIoUGFzc1JlZlB0cjxUaHJlYWRhYmxl
V2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+LCBXb3JrZXJMb2FkZXJQcm94eSYsIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIHRhc2tNb2RlKTsKLQotICAgICAgICBS
ZWZQdHI8VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyPiBtX3dvcmtlckNs
aWVudFdyYXBwZXI7Ci0gICAgICAgIFdvcmtlckxvYWRlclByb3h5JiBtX2xvYWRlclByb3h5Owot
ICAgICAgICBSZWZQdHI8VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw+IG1fbWFpbldlYlNvY2tl
dENoYW5uZWw7Ci0gICAgICAgIFN0cmluZyBtX3Rhc2tNb2RlOwotICAgIH07Ci0KLSAgICAvLyBC
cmlkZ2UgZm9yIFBlZXIuICBSdW5uaW5nIG9uIHRoZSB3b3JrZXIgdGhyZWFkLgotICAgIGNsYXNz
IEJyaWRnZSA6IHB1YmxpYyBSZWZDb3VudGVkPEJyaWRnZT4gewotICAgIHB1YmxpYzoKLSAgICAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8QnJpZGdlPiBjcmVhdGUoUGFzc1JlZlB0cjxUaHJlYWRhYmxl
V2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+IHdvcmtlckNsaWVudFdyYXBwZXIsIFBhc3NS
ZWZQdHI8V29ya2VyQ29udGV4dD4gd29ya2VyQ29udGV4dCwgY29uc3QgU3RyaW5nJiB0YXNrTW9k
ZSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBCcmlkZ2Uod29y
a2VyQ2xpZW50V3JhcHBlciwgd29ya2VyQ29udGV4dCwgdGFza01vZGUpKTsKLSAgICAgICAgfQot
ICAgICAgICB+QnJpZGdlKCk7Ci0gICAgICAgIHZvaWQgY29ubmVjdChjb25zdCBLVVJMJiwgY29u
c3QgU3RyaW5nJiBwcm90b2NvbCk7Ci0gICAgICAgIGJvb2wgc2VuZChjb25zdCBTdHJpbmcmIG1l
c3NhZ2UpOwotICAgICAgICBib29sIHNlbmQoY29uc3QgQXJyYXlCdWZmZXImKTsKLSAgICAgICAg
Ym9vbCBzZW5kKGNvbnN0IEJsb2ImKTsKLSAgICAgICAgdW5zaWduZWQgbG9uZyBidWZmZXJlZEFt
b3VudCgpOwotICAgICAgICB2b2lkIGNsb3NlKGludCBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNv
bik7Ci0gICAgICAgIHZvaWQgZmFpbChjb25zdCBTdHJpbmcmIHJlYXNvbik7Ci0gICAgICAgIHZv
aWQgZGlzY29ubmVjdCgpOwotICAgICAgICB2b2lkIHN1c3BlbmQoKTsKLSAgICAgICAgdm9pZCBy
ZXN1bWUoKTsKLQotICAgICAgICB1c2luZyBSZWZDb3VudGVkPEJyaWRnZT46OnJlZjsKLSAgICAg
ICAgdXNpbmcgUmVmQ291bnRlZDxCcmlkZ2U+OjpkZXJlZjsKLQotICAgIHByaXZhdGU6Ci0gICAg
ICAgIEJyaWRnZShQYXNzUmVmUHRyPFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3Jh
cHBlcj4sIFBhc3NSZWZQdHI8V29ya2VyQ29udGV4dD4sIGNvbnN0IFN0cmluZyYgdGFza01vZGUp
OwotCi0gICAgICAgIHN0YXRpYyB2b2lkIHNldFdlYlNvY2tldENoYW5uZWwoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIEJyaWRnZSogdGhpc1B0ciwgUGVlciosIFBhc3NSZWZQdHI8VGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyPiwgYm9vbCB1c2VIaXhpZTc2UHJvdG9jb2wp
OwotCi0gICAgICAgIC8vIEV4ZWN1dGVkIG9uIHRoZSBtYWluIHRocmVhZCB0byBjcmVhdGUgYSBQ
ZWVyIGZvciB0aGlzIGJyaWRnZS4KLSAgICAgICAgc3RhdGljIHZvaWQgbWFpblRocmVhZENyZWF0
ZVdlYlNvY2tldENoYW5uZWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEJyaWRnZSogdGhpc1B0
ciwgUGFzc1JlZlB0cjxUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+LCBj
b25zdCBTdHJpbmcmIHRhc2tNb2RlKTsKLQotICAgICAgICAvLyBFeGVjdXRlZCBvbiB0aGUgd29y
a2VyIGNvbnRleHQncyB0aHJlYWQuCi0gICAgICAgIHZvaWQgY2xlYXJDbGllbnRXcmFwcGVyKCk7
Ci0KLSAgICAgICAgdm9pZCBzZXRNZXRob2ROb3RDb21wbGV0ZWQoKTsKLSAgICAgICAgdm9pZCB3
YWl0Rm9yTWV0aG9kQ29tcGxldGlvbigpOwotCi0gICAgICAgIFJlZlB0cjxUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+IG1fd29ya2VyQ2xpZW50V3JhcHBlcjsKLSAgICAg
ICAgUmVmUHRyPFdvcmtlckNvbnRleHQ+IG1fd29ya2VyQ29udGV4dDsKLSAgICAgICAgV29ya2Vy
TG9hZGVyUHJveHkmIG1fbG9hZGVyUHJveHk7Ci0gICAgICAgIFN0cmluZyBtX3Rhc2tNb2RlOwot
ICAgICAgICBQZWVyKiBtX3BlZXI7Ci0gICAgfTsKLQotICAgIFdvcmtlclRocmVhZGFibGVXZWJT
b2NrZXRDaGFubmVsKFdvcmtlckNvbnRleHQqLCBXZWJTb2NrZXRDaGFubmVsQ2xpZW50KiwgY29u
c3QgU3RyaW5nJiB0YXNrTW9kZSk7Ci0KLSAgICBzdGF0aWMgdm9pZCBtYWluVGhyZWFkQ29ubmVj
dChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGVlciosIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJp
bmcmIHByb3RvY29sKTsKLSAgICBzdGF0aWMgdm9pZCBtYWluVGhyZWFkU2VuZChTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgUGVlciosIGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7Ci0gICAgc3RhdGlj
IHZvaWQgbWFpblRocmVhZFNlbmRBcnJheUJ1ZmZlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
UGVlciosIFBhc3NPd25QdHI8VmVjdG9yPGNoYXI+ID4pOwotICAgIHN0YXRpYyB2b2lkIG1haW5U
aHJlYWRTZW5kQmxvYihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGVlciosIGNvbnN0IEtVUkwm
LCBjb25zdCBTdHJpbmcmIHR5cGUsIGxvbmcgbG9uZyBzaXplKTsKLSAgICBzdGF0aWMgdm9pZCBt
YWluVGhyZWFkQnVmZmVyZWRBbW91bnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBlZXIqKTsK
LSAgICBzdGF0aWMgdm9pZCBtYWluVGhyZWFkQ2xvc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IFBlZXIqLCBpbnQgY29kZSwgY29uc3QgU3RyaW5nJiByZWFzb24pOwotICAgIHN0YXRpYyB2b2lk
IG1haW5UaHJlYWRGYWlsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQZWVyKiwgY29uc3QgU3Ry
aW5nJiByZWFzb24pOwotICAgIHN0YXRpYyB2b2lkIG1haW5UaHJlYWREZXN0cm95KFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBQZWVyKik7Ci0gICAgc3RhdGljIHZvaWQgbWFpblRocmVhZFN1c3Bl
bmQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBlZXIqKTsKLSAgICBzdGF0aWMgdm9pZCBtYWlu
VGhyZWFkUmVzdW1lKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQZWVyKik7Ci0KLSAgICBSZWZQ
dHI8V29ya2VyQ29udGV4dD4gbV93b3JrZXJDb250ZXh0OwotICAgIFJlZlB0cjxUaHJlYWRhYmxl
V2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+IG1fd29ya2VyQ2xpZW50V3JhcHBlcjsKLSAg
ICBSZWZQdHI8QnJpZGdlPiBtX2JyaWRnZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
LQotI2VuZGlmIC8vIEVOQUJMRShXRUJfU09DS0VUUykKLQotI2VuZGlmIC8vIFdvcmtlclRocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsX2gK
</data>
<flag name="review"
          id="131415"
          type_id="1"
          status="+"
          setter="eric"
    />
    <flag name="commit-queue"
          id="131416"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
      

    </bug>

</bugzilla>